Obsah
1. Digitální signálové procesory TMS320C66×: výpočetní výkon na prvním místě
2. Základní parametry čipů řady TMS320C66×
3. Interní architektura čipů C6678
5. Paměťový subsystém řady TMS320C66×
7. Jádra C66× a jejich podpůrné moduly
9. Pracovní registry, řídicí registry a akumulátory
10. Kooperace mezi jednotkami (datapath) A a B
12. Násobičky v jednotkách .M1 a .M2
13. Výkonové rozdíly mezi jádry TMS320C674× a TMS320C66×
14. Operace s hodnotami s plovoucí řádovou čárkou
15. Instrukční sada jader TMS320C66×
1. Digitální signálové procesory TMS320C66×: výpočetní výkon na prvním místě
S dnes již velmi rozsáhlou rodinou digitálních signálových procesorů TI TMS320C6× jsme se již v tomto seriálu setkali, a to dokonce několikrát. Připomeňme si, že v této rodině nalezneme čipy určené pro různé aplikační oblasti. Základní rozdělení můžeme provést na čipy, které dokážou primárně zpracovávat celočíselná data popř. data s pevnou řádovou čárkou (FX – fixed point), a na čipy, které naopak zpracovávají hodnoty s plovoucí řádovou čárkou (FP – floating point); samozřejmě existují i kombinace, tj. čipy určené pro FX i FP operace. O jaké typy DSP se jedná, se dá poměrně jednoduše zjistit pohledem na číslo, které se nachází na devátém místě označení čipu. V následující tabulce jsou vypsáni hlavní zástupci celé rodiny TMS320C6×:
Označení | Zkráceno | Fixed point | Floating point | Poznámka |
---|---|---|---|---|
TMS320C62× | C62 | ✓ | × | základní model, z něhož se postupně vyvinuly další řady |
TMS320C67× | C67 | × | ✓ | na úrovni zdrojového kódu kompatibilní s prvním čipem |
TMS320C64× | C64 | ✓ | × | na úrovni zdrojového kódu kompatibilní s prvním čipem |
TMS320C67×+ | C67+ | × | ✓ | vylepšení čipu TMS320C67× |
TMS320C64×+ | C64×+ | ✓ | × | vylepšení čipu TMS320C64× |
TMS320C674× | C674 | ✓ | ✓ | vznikl sloučením vlastností TMS320C64×+ a TMS320C67×+ |
TMS320C66× | C66 | ✓ | ✓ | nová řada založená na TMS320C674× |

Obrázek 1: Dispatcher použitý v klasických skalárních i superskalárních procesorech.
Už v základním modelu TMS320C62× se objevilo použití architektury VLIW s instrukčními slovy širokými 256 bitů, přičemž každé instrukční slovo bylo rozděleno do bitových polí představujících konkrétní instrukce určené pro vybraný funkční blok procesorového jádra. Kvůli paralelnímu běhu výpočtů bylo jádro rozděleno na dvě části nazvaná datapath A a datapath B; každá z těchto částí měla vlastní sadu registrů a vlastní čtveřici výkonných jednotek. Teoreticky tak bylo možné v jednom instrukčním slovu řídit všech osm jednotek současně.

Obrázek 2: VLIW s instrukcemi rozdělenými do bitových polí. Právě takto jsou instrukce skládány i v čipech TMS320C6×xx.
2. Základní parametry čipů řady TMS320C66×
V současnosti patří čipy řady TMS320C66× (dále budeme používat pouze zkrácené označení C66) mezi jedny z nejvýkonnějších DSP vůbec, což je také patrné při pohledu na „portfolio“ společnosti Texas Instruments, které je dnes nabízeno:
http://www.ti.com/lsds/media/images/processors/22801-dsp-scalability.pngObrázek 3: Nabídka DSP společnosti Texas Instruments.
Nejvýkonnější jsou DSP TMS320C6678 neboli jen C6678, u nichž je špičkového výpočetního výkonu dosaženo jak relativně vysokou taktovací frekvencí dosahující až 1,4 GHz, tak i použitím rychlých násobiček a především díky tomu, že se na čipu nachází celkem osm samostatně pracujících jader nazývaných C66 Core Pac. Na výběr jsou však i méně výkonné čipy C66 s jedním, dvěma či čtyřmi jádry.
Každé z až osmi jader má samo o sobě úctyhodný výpočetní výkon. Dále uvedené hodnoty platí pro hodinovou frekvenci 1,4 GHz:
Operace typu | Maximální výkon | Poznámka |
---|---|---|
Fixed point | 44,8 GMAC | Giga Multiply-ACcumulate operations per second |
Floating point | 22,4 GFLOPS | Giga Floating Point Operations Per Second |
Teoretický maximální výkon celého čipu s osmi jádry C66 Core Pac s hodinovou frekvencí 1,4 GHz:
Operace typu | Maximální výkon | Poznámka |
---|---|---|
Fixed point | 358 GMAC | Giga Multiply-ACcumulate operations per second |
Floating point | 179 GFLOPS | Giga Floating Point Operations Per Second |
Poznámka: tohoto výkonu lze skutečně dosáhnout, protože VLIW architektura i dále popsaný TeraNet umožňuje jádra „zásobovat“ daty dostatečně rychle.
3. Interní architektura čipů C6678
Interní architektura čipů C6678, tedy prozatím nejvýkonnějších DSP této řady s osmi jádry, je naznačena na čtvrtém obrázku. Povšimněte si, že každý Core Pac je založen na DSP jádru C66, které je vybaveno vlastní cache první i druhé úrovně, přičemž cache druhé úrovně (větší kapacita, nižší rychlost) je společná pro instrukce i pro data zatímco cache první úrovně (menší kapacita, vyšší rychlost) je rozdělena na datovou cache (D-cache) a instrukční/programovou cache (I-cache). Jednotlivá jádra mohou přes přepínač nazvaný TeraNet komunikovat jak s hlavní pamětí, tak i s dalšími moduly, mezi něž patří mj. i přepínač pro Ethernet (samozřejmě gigabitový) a sběrnice PCI Express, kterou jsme si již v tomto seriálu stručně popsali. Ani na dalších I/O modulech se nešetřilo, protože kromě GPIO zde nalezneme i sériové sběrnice I2C, SPI, sériový port UART, TSIP (Telecom Serial Interface Port) atd. Nesmíme zapomenout na HyperLink, který je určen mj. i pro rychlou komunikaci s FPGA

Obrázek 4: Interní architektura čipů C6678 s osmi jádry C66 Core Pac.
4. Přepínač TeraNet
Přepínač TeraNet umožňuje nakonfigurovat propojení typu „každý s každým“ a je ve skutečnosti rozdělen na dvě části. První z nich slouží pro přenos dat, druhá pro konfiguraci jednotlivých zařízení (modulů). Při přenosech dat jsou uzly rozděleny podle své role na uzly typu master a uzly typu slave. Rozdíl mezi typy uzlů je jednoduchý – uzly typu master dokážou celou komunikaci iniciovat, umí určit, zda se má provádět čtení či zápis dat atd. zatímco uzly slave vystupují pasivně a pouze přijímají či posílají požadovaná data. Prakticky všechny výše zmíněné uzly připojené na TeraNet (CorePac, gigabitový Ethernet, PCI Express) mohou vystupovat v roli mastera, výjimku tvoří uzly se sériovými sběrnicemi I2C, SPI, sériovým portem UART apod.
5. Paměťový subsystém řady TMS320C66×
Paměťový subsystém digitálních signálových procesorů C66 je poměrně komplikovaný, což vyplývá z nutnosti zajistit všem osmi jádrům instrukce i data v požadované rychlosti a s malou latencí. Jak již víme z předchozí kapitoly, jsou ke každému jádru přidány paměti cache, přičemž L2 cache má kapacitu 512 kB a L1 cache kapacitu 64 kB rozdělenou na 32 kB pro data a 32 kB pro instrukce (program). Navíc je na čipu umístěna i paměť nazvaná Multicore Shared Memory (MSM), která je, jak ostatně přímo plyne z jejího názvu, sdílená mezi všemi jádry. Tato paměť má kapacitu 4 MB (4096 kB) a pro její realizaci je použita SRAM (stejně jako pro L1 a L2 cache), která je sice dražší než DRAM, ovšem umožňuje rychlejší přístup k uloženým datům. MSM je možné nakonfigurovat tak, aby pracovala jako sdílená cache třetí úrovně. K čipu je samozřejmě možné připojit i klasickou SDRAM (resp. přesněji řečeno DDR3 SDRAM). O řízení přístupu všech jader k MSM i SDRAM se stará řadič Multicore Shared Memory Controller (MSMC). Adresovatelná kapacita paměti je 8GB.
6. Multicore Navigator
Součástí čipů C6678 je i takzvaný Multicore Navigator, který dokáže zařídit komunikaci mezi jednotlivými moduly přes fronty (queue), kterých může existovat až 8192. Pokud je fronta nakonfigurována, je tok dat řízen i prováděn (na HW úrovni) Multicore Navigatorem a není tedy zapotřebí neustále programově měnit konfiguraci propojení přes TeraNet.
7. Jádra C66× a jejich podpůrné moduly
Každý Core Pac se skládá z několika modulů:
- Vlastního jádra C66
- Řadičem přístupu do paměti programu (Program Memory Controller, PMC)
- Řadičem přístupu do paměti dat (Data Memory Controller, DMC)
- Řadičem přístupu do L2 cache (Unified Memory Controller, UMC)
- Řadičem přístupu do obecné paměti a do MSM
- Rozhraním pro „boot“ jádra
Jádro C66 je rozděleno na:
- Část pro načtení instrukce, její dekódování, dispatch atd.
- Sadu pracovních registrů datapathu A (viz devátou kapitolu)
- Sadu pracovních registrů datapathu B (viz devátou kapitolu)
- Čtyři výkonné jednotky datapathu A (viz osmou kapitolu)
- Čtyři výkonné jednotky datapathu B (viz osmou kapitolu)
- Řídicí registry
- Řadič přerušení
- Řadič výjimek

Obrázek 5: Načtení, dekódování a dispatch instrukce v jednom jádru C66×.
8. Funkční jednotky
Každé jádro C66 tvořící ústřední část modulu Core Pac je rozděleno, jak je to ostatně u všech digitálních signálových procesorů C6000 obvyklé, na dvě části pojmenované datapath A a datapath B. Každá z těchto částí obsahuje sadu pracovních registrů (konkrétně je v každé sadě umístěno třicet dva 32bitových registrů, celkem tedy 64 32bitových registrů) a čtyři výkonné jednotky pojmenované (.L1, .S1, .M1, .D1 pro část A a .L2, .S2, .M2, .D2 pro část B):
+-----------------+-----------------+ | Registry Ax | Registry Bx | +-----------------+-----------------+ ⇅ ⇅ ⇅ ⇅ ⇅ ⇅ ⇅ ⇅ +---+---+---+---+ +---+---+---+---+ |.L1|.S1|.M1|.D1| |.D2|.M2|.S2|.L2| +---+---+---+---+ +---+---+---+---+
Základní funkci různých typů jednotek shrnuje následující tabulka:
Jednotka | Funkce |
---|---|
.Lx | ALU pro operandy šířky 32 bitů, 40 bitů či 64 bitů |
.Sx | 32bitová ALU + shiftery pro operandy šířky 32 bitů či 40 bitů, skoky |
.Mx | násobička popsaná níže, která též provádí MAC operace atd. |
.Dx | jednodušší ALU (součet, rozdíl), datové přenosy, výpočty adres (offsety) apod. |
Poznámka: oproti původním jádrům TMS320C674× jsou jádra TMS320C66× vylepšena o přímou podporu pro 64bitové operandy, což se dotknulo především jednotek .Lx a .Sx. (zkráceně je možné říci, že se všechny interní cesty a sběrnice rozšířily na dvojnásobnou šířku). Rozšířeny byly i možnosti násobiček, jimž je kvůli jejich stěžejnímu významu věnována samostatná kapitola.
9. Pracovní registry, řídicí registry a akumulátory
Jak jsme si již ve stručnosti řekli v předchozí kapitole, najdeme v každém jádru C66 celkem 64 pracovních registrů, z nichž každý má šířku 32 bitů. Tyto registry jsou rozděleny na dvě poloviny podle toho, ke které datapath patří:
Datapath | Registry |
---|---|
A | A0 .. A31 |
B | B0 .. B31 |
Pokud se používají operandy o šířce 40 bitů či 64 bitů, je nutné použít registrový pár (dvojici sousedních pracovních registrů), přičemž v případě operandů s šířkou 40 bitů má u druhého registru význam jen spodních osm bitů. Některé operace podporují i operandy o šířce 128 bitů, v tomto případě se používají čtyři sousední registry.
10. Kooperace mezi jednotkami (datapath) A a B
Každá z jednotek v části A může pro svůj vstupní operand (či operandy) použít libovolný registr A0 až A31; to samé samozřejmě platí pro část B a registry B0 až B31. Mohlo by se tedy zdát, že každá část je zcela samostatná a oddělená od části druhé; ve skutečnosti je však v reálných aplikacích nutné, aby bylo možné data mezi oběma částmi přenášet. To pro adresy zabezpečují jednotky .D1 a .D2, které pomocí volitelného přepínače dokážou uložit výsledná data do vybraného registru z druhé jednotky (za to ovšem zaplatíme pozdržením přenosu o jeden hodinový cyklus). Navíc je možné vždy u vybrané jednotky .Lx, .Sx či .Mx zvolit, že druhý operand bude vybrán z opačné části. To zajišťují dva jednosměrné komunikační kanály nazvané crosspath(s) a označované 1X a 2X (ovšem je nutné si uvědomit, že takto lze zvolit „cizí“ operand jen u jediné jednotky, navíc se vždy může přenést obsah jednoho registru, nikoli registrového páru). Zjednodušeně lze tok dat od vstupních operandů k operandům výstupním naznačit takto (už je asi zřejmé, proč mám u části B jednotky uvedeny v opačném pořadí):
+------------------+------------------+ | Registry Ax | Registry Bx | | 2x|1x | +------------------+------------------+ (1x)(1x)(1x) (2x)(2x)(2x) ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ +---+---+---+---+ +---+---+---+---+ |.L1|.S1|.M1|.D1| |.D2|.M2|.S2|.L2| +---+---+---+---+ +---+---+---+---+ ↓ ↓ ↓ ↓ ↘ ↙ ↓ ↓ ↓ ↓ +------------------+------------------+ | Registry Ax | Registry Bx | +------------------+------------------+
11. Vektorové (SIMD) operace
I když registry mají šířku „pouze“ 32 bitů, je ve skutečnosti možné na jádrech C66× provádět některé operce i s delšími operandy. Maximální délku mají 128bitové vektory, které jsou rozděleny na 32bitové, 16bitové či osmibitové části. Příkladem může být instrukce QMPY32 určená pro vynásobení čtyř dvojic operandů, přičemž každý operand má šířku 32 bitů. Naproti tomu méně výkonná ale stále používaná jádra C64×+ a C674 sice taktéž podporují SIMD operace, ale pouze s maximálně 32bitovými vektory, přičemž každý vektor může obsahovat jediný 32bitový prvek, dva 16bitové prvky nebo čtyři prvky osmibitové.
Operace | TMS320C674× | TMS320C66× |
---|---|---|
SIMD | 32 bitů (2×16, 4×8) | 128 bitů (4×32, 4×16, 4×8) |

Obrázek 7: Schéma systému patřícího do kategorie SIMD.
12. Násobičky v jednotkách .M1 a .M2
Násobičky tvoří ústřední část prakticky každého digitálního signálového procesoru, takže se jim věnujme podrobněji. U jader C66× jsou rychlé násobičky součásí jednotek/bloků .Mx. Označení „rychlé“ je zde skutečně na místě, protože v jednom hodinovém cyklu dokáže každá násobička provést jeden z následujících kroků:
- Čtyři násobení (nebo MAC) 32×32 bitů
- Šestnáct násobení (nebo MAC) 16×16 bitů
- Čtyři násobení 16×32 bitů
- Čtyři operace MAC na operandy 8×8 bitů
- Čtyři operace MAC na operandy 16×16 bitů
To však není zdaleka vše, protože v některých aplikacích (FFT, modemy) se provádí násobení komplexních čísel. Proto každá jednotka .Mx dokáže v každém hodinovém cyklu provést vynásobení komplexních čísel 16×16 bitů nebo 32×32 bitů se zaokrouhlením výsledků. Další podporovanou operací jednotek .Mx je násobení vektorů (se dvěma prvky) či matic (o rozměrech 2×2 prvky).
Poznámka: nezapomeňme, že výše provedené operace se danou rychlostí provádí v jediné jednotce .Mx, přičemž v každém jádru jsou dvě tyto jednotky a celkem je k dispozici osm paralelně pracujících jader.
13. Výkonové rozdíly mezi jádry TMS320C674× a TMS320C66×
Pokud jste se podívali na obrázek odkazovaný ve třetí kapitole, pravděpodobně jste si všimli, že TI v současnosti kromě výkonných jader TMS320C66×/C66× nabízí i DSP postavené na TMS320C674×/C674× (z označení plyne, že se jedná o kombinaci TMS320C64×+ a TMS320C67×+). Vzhledem k tomu, že C66× je představováno jako „high performance DSP“ zatímco C674× jako „low-power“, nabízí se otázka, zda jsou čipy C66× skutečně tak výkonné nebo zda se jedná o kosmetické rozdíly. Pro porovnání se tedy podívejme na následující tabulku, v níž jsou porovnány typické DSP operace, tj. násobení následované součtem (akumulací) a základní operací s FP operandy. Hodnoty v tabulce ukazují, kolik těchto operací může proběhnou současně na jediném jádru:
Operace | TMS320C674× | TMS320C66× |
---|---|---|
MAC 16×16 bitů, FX | 8× | 32× |
MAC 32×32 bitů, FX | 2× | 8× |
MAC FP, float/single | 2× | 8× |
SIMD | 32 bitů (2×16, 4×8) | 128 bitů (4×32, 4×16, 4×8) |
14. Operace s hodnotami s plovoucí řádovou čárkou
Kromě celočíselných operací a operací nad hodnotami reprezentovanými ve Q-formátu podporují jádra C66× i výpočty nad hodnotami s plovoucí řádovou čárkou (floating point, FP). Zajímavé je, že sada pracovních registrů zůstává zachována, nenajdeme zde tedy striktní rozdělení na registry celočíselné a registry určené pro FP operace. Pokud se používá formát single/float (podle normy IEEE 754), je pro uložení operandu použit jeden registr, zatímco v případě formátu double je nutné použít dva sousední registry. I FP operace jsou rozděleny do jednotek; takže například instrukci FADDDP/FADDSP (součet pro typ double/single) je možné provést v jednotkách .Lx či .Sx zatímco instrukce FMPYDP (rychlé násobení dvou hodnot typu double) je určena pro jednotku .M1 či pro jednotku .M2.
15. Instrukční sada jader TMS320C66×
V instrukčním souboru nalezneme dva typy instrukcí: běžné instrukce o šířce 32 bitů a vybrané instrukce o šířce pouhých šestnácti bitů. Do druhé skupiny samozřejmě mohla být vybrána jen omezená sada instrukcí; konkrétně se jedná o instrukce typu Load & Store a dále základní instrukce pro aritmeticko-logické jednotky (ADD, SUB, ADDAW, SUBAW. Dále jsou instrukce rozděleny podle toho, pro kterou výkonnou (funkční) jednotku jsou určeny: .Lx, .Sx, .Dx či .Mx.
Instrukce pro jednotky .D:
Instrukce | Instrukce |
---|---|
ADD | OR |
ADDAB | STB |
ADDAD | STB |
ADDAH | STDW |
ADDAW | STH |
ADD2 | STH |
AND | STNDW |
ANDN | STNW |
LDB | STW |
LDDW | SUB |
LDH | SUBAB |
LDH | SUBAH |
LDNDW | SUBAW |
LDNW | SUB2 |
LDW | XOR |
LDW | ZERO |
MV | MVK |
Instrukce pro jednotky .L:
Instrukce | Instrukce | Instrukce | Instrukce |
---|---|---|---|
ABS | DPACK2 | NORM | SPTRUNC |
ABS2 | DPACKX2 | NOT | SSUB |
ADD | DPINT | OR | SSUB2 |
ADDDP | DPSP | PACK2 | SUB |
ADDSP | DPTRUNC | PACKH2 | SUBABS4 |
ADDSUB | INTDP | PACKH4 | SUBC |
ADDSUB2 | INTDPU | PACKHL2 | SUBDP |
ADDU | INTSP | PACKLH2 | SUBSP |
ADD2 | INTSPU | PACKL4 | SUBU |
ADD4 | LMBD | SADD | SUB2 |
AND | MAX2 | SADDSUB | SUB4 |
ANDN | MAXU4 | SADDSUB2 | SWAP2 |
CMPEQ | MIN2 | SAT | SWAP4 |
CMPGT | MINU4 | SHFL3 | UNPKHU4 |
CMPGTU | MV | SHLMB | UNPKLU4 |
CMPLT | MVK | SHRMB | XOR |
CMPLTU | NEG | SPINT | ZERO |
Instrukce pro jednotky .S:
Instrukce | Instrukce | Instrukce | Instrukce |
---|---|---|---|
ABSDP | CMPEQ2 | MVKH | MVKLH SET |
ABSSP | CMPEQ4 | MVKL | SHL |
ADD | CMPEQDP | MVKH | MVKLH |
ADDDP | CMPEQSP | NEG | SHR |
ADDK | CMPGT2 | NOT | SHR2 |
ADDKPC | CMPGTDP | OR | SHRMB |
ADDSP | CMPGTSP | PACK2 | SHRU |
ADD2 | CMPGTU4 | PACKH2 | SHRU2 |
AND | CMPLT2 | PACKHL2 | SPACK2 |
ANDN | CMPLTDP | PACKLH2 | SPACKU4 |
B | CMPLTSP | RCPDP | SPDP |
CMPLTU4 | RCPSP | SSHL | SUBDP |
DMPYU4 | RPACK2 | SUB | RSQRDP |
B | IRP | NRP | SHLMB |
BDEC | EXTU | RSQRSP | SUBSP |
BNOP | MAX2 | SADD | SUB2 |
MIN2 | SADD2 | SWAP2 | ZERO |
BPOS | MV | SADDSU2 | UNPKHU4 |
CALLP | MVC | SADDUS2 | UNPKLU4 |
CLR | MVK | SADDU4 | XOR |
Instrukce pro jednotky .M:
Instrukce | Instrukce | Instrukce | Instrukce |
---|---|---|---|
AVG2 | DOTPUS4 | MPYIL | MPY32 |
AVGU4 | DOTPU4 | MPYILR | MPY32 |
BITC4 | GMPY | MPYLH | MPY32SU |
BITR | GMPY4 | MPYLHU | MPY32U |
CMPY | MPY | MPYLI | MPY32US |
CMPYR | MPYDP | MPYLIR | MVD |
CMPYR1 | MPYH | MPYLSHU | ROTL |
DDOTP4 | MPYHI | MPYLUHS | SHFL |
DDOTPH2 | MPYHIR | MPYSP | SMPY |
DDOTPH2R | MPYHL | MPYSPDP | SMPYH |
DDOTPL2 | MPYHLU | MPYSP2DP | SMPYHL |
DDOTPL2R | MPYHSLU | MPYSU | SMPYLH |
DEAL | MPYHSU | MPYSU4 | |
DOTP2 | MPYHU | MPYU | SMPY32 |
DOTPN2 | MPYHULS | MPYU4 | SSHVL |
DOTPNRSU2 | MPYHUS | MPYUS | SSHVR |
DOTPNRUS2 | MPYI | MPYUS4 | XORMPY |
DOTPRSU2 | MPYID | MPY2 | XPND2 |
DOTPRUS2 | MPYIH | MPY2IR | XPND4 |
DOTPSU4 | MPYIHR |
16. Odkazy na Internetu
- DSP for Cortex-M
https://developer.arm.com/technologies/dsp/dsp-for-cortex-m - Cortex-M processors in DSP applications? Why not?!
https://community.arm.com/processors/b/blog/posts/cortex-m-processors-in-dsp-applications-why-not - White Paper – DSP capabilities of Cortex-M4 and Cortex-M7
https://community.arm.com/processors/b/blog/posts/white-paper-dsp-capabilities-of-cortex-m4-and-cortex-m7 - Q (number format)
https://en.wikipedia.org/wiki/Q_%28number_format%29 - TriCore Architecture & Core
http://www.infineon.com/cms/en/product/microcontroller/32-bit-tricore-tm-microcontroller/tricore-tm-architecture-and-core/channel.html?channel=ff80808112ab681d0112ab6b73d40837 - TriCoreTM V1.6 Instruction Set: 32-bit Unified Processor Core
http://www.infineon.com/dgdl/tc_v131_instructionset_v138.pdf?fileId=db3a304412b407950112b409b6dd0352 - TriCore v2.2 C Compiler, Assembler, Linker Reference Manual
http://tasking.com/support/tricore/tc_reference_guide_v2.2.pdf - Infineon TriCore (Wikipedia)
https://en.wikipedia.org/wiki/Infineon_TriCore - C166®S V2 Architecture & Core
http://www.infineon.com/cms/en/product/microcontroller/16-bit-c166-microcontroller/c166-s-v2-architecture-and-core/channel.html?channel=db3a304312bef5660112c3011c7d01ae - Memory segmentation
https://en.wikipedia.org/wiki/Memory_segmentation - Bus mastering
https://en.wikipedia.org/wiki/Bus_mastering - ST10 16-bit MCUs
http://www.st.com/en/microcontrollers/st10–16-bit-mcus.html?querycriteria=productId=LN1111 - XC800 family
https://en.wikipedia.org/wiki/XC800_family - C166 (stránky společnosti Infineon)
https://www.infineon.com/cms/en/product/microcontroller/16-bit-c166-microcontroller/channel.html?channel=ff80808112ab681d0112ab6b2eaf0759#ispnTab3 - C166 Family
https://en.wikipedia.org/wiki/C166_family - Permanent Magnet Synchronous Motor
https://en.wikipedia.org/wiki/Synchronous_motor#Permanent_magnet_motors - Implementing field oriented control of a brushless DC motor
http://www.eetimes.com/document.asp?doc_id=1279321 - Vector control (motor)
https://en.wikipedia.org/wiki/Vector_control_(motor) - Motorola DSP56k
https://www.rockbox.org/wiki/MotorolaDSP56k - Motorola 56000 (Wikipedia)
http://en.wikipedia.org/wiki/Motorola_56000 - Using the Motorola DSP56002EVM for Amateur Radio DSP Projects
http://www.johanforrer.net/EVM/article.html - The Atari Falcon030 „Personal Integrated Media System“
http://www.atarimuseum.com/computers/16bits/falcon030.html - Turtle Beach Corporation (stránky společnosti)
http://www.turtlebeach.com/ - Turtle Beach Corporation (Wikipedia)
https://en.wikipedia.org/wiki/Turtle_Beach_Corporation - Atari Falcon 030 DSP 3D engine test
http://www.digiti.info/video/WHQwMjNRaExfLWs=/atari_falcon030_dsp_3d_engine_test - Atari Falcon030 (německy)
http://www.maedicke.de/atari/hardware/falcon.htm - Old-computers.com: Atari Falcon030
http://www.old-computers.com/museum/computer.asp?c=125&st=1 - Atari Falcon030 (Wikipedia)
http://en.wikipedia.org/wiki/Atari_Falcon - Past and current projects (including Falcon stuff)
http://os.inf.tu-dresden.de/~nf2/projects/projects.html - Atari Falcon 030: The Case For The Defence
http://www.soundonsound.com/sos/1994_articles/sep94/atarifalcon.html - DaVinci processor family
http://www.ti.com/general/docs/datasheetdiagram.tsp?genericPartNumber=TMS320DM365&diagramId=64193 - Texas Instruments DaVinci
https://en.wikipedia.org/wiki/Texas_Instruments_DaVinci - TMS320DM6446 (DaVinci)
http://www.ti.com/product/tms320dm6446 - Digital Media Video Processors (TI)
http://www.ti.com/lsds/ti/processors/dsp/media_processors/davinci/products.page# - TI Wiki
http://processors.wiki.ti.com/index.php/Main_Page - C5000 ultra-low-power DSP
http://www.ti.com/lsds/ti/processors/dsp/c5000_dsp/overview.page - OMAP (Wikipedia)
https://en.wikipedia.org/wiki/OMAP - OMAP – TI Wiki
http://processors.wiki.ti.com/index.php/OMAP - Why OMAP can't compete in smartphones
http://www.eetimes.com/author.asp?section_id=40&doc_id=1286602 - Applications Processors – The Heart of the Smartphone
http://www.engineering.com/ElectronicsDesign/ElectronicsDesignArticles/ArticleID/5791/Applications-Processors-The-Heart-of-the-Smartphone.aspx - TI cuts 1,700 jobs in OMAP shift
http://www.eetimes.com/document.asp?doc_id=1262782 - VLIW: Very Long Instruction Word: Texas Instruments TMS320C6×
http://www.ecs.umass.edu/ece/koren/architecture/VLIW/2/ti1.html - An Introduction To Very-Long Instruction Word (VLIW) Computer Architecture
Philips Semiconductors - VLIW Architectures for DSP: A Two-Part Lecture (PDF, slajdy)
http://www.bdti.com/MyBDTI/pubs/vliw_icspat99.pdf - Very long instruction word (Wikipedia)
https://en.wikipedia.org/wiki/Very_long_instruction_word - A VLIW Approach to Architecture, Compilers and Tools
http://www.vliw.org/book/ - VEX Toolchain (VEX = VLIW Example)
http://www.hpl.hp.com/downloads/vex/ - Elbrus (computer)
https://en.wikipedia.org/wiki/Elbrus_%28computer%29 - Super Harvard Architecture Single-Chip Computer
https://en.wikipedia.org/wiki/Super_Harvard_Architecture_Single-Chip_Computer - Digital Signal Processors (stránky TI)
http://www.ti.com/lsds/ti/processors/dsp/overview.page - C674× Low Power DSP (stránky TI)
http://www.ti.com/lsds/ti/processors/dsp/c6000_dsp/c674×/overview.page - TMS320C30 (stránky TI)
http://www.ti.com/product/tms320c30 - TMS320C6722B
http://www.ti.com/product/tms320c6722b/description - Introduction to DSP
http://www.ti.com/lit/wp/spry281/spry281.pdf - The Evolution of TMS (Family of DSPs)
http://www.slideshare.net/moto_modx/theevo1 - Datasheet k TMS32010
http://www.datasheetarchive.com/dlmain/49326c32a52050140abffe6f0ac4894aa09889/M/TMS32010 - 1979: Single Chip Digital Signal Processor Introduced
http://www.computerhistory.org/siliconengine/single-chip-digital-signal-processor-introduced/ - The TMS32010. The DSP chip that changed the destiny of a semiconductor giant
http://www.tihaa.org/historian/TMS32010–12.pdf - Texas Instruments TMS320 (Wikipedia)
https://en.wikipedia.org/wiki/Texas_Instruments_TMS320 - Great Microprocessors of the Past and Present: Part IX: Signetics 8×300, Early cambrian DSP ancestor (1978):
http://www.cpushack.com/CPU/cpu2.html#Sec2Part9 - Great Microprocessors of the Past and Present (V 13.4.0)
http://jbayko.sasktelwebsite.net/cpu.html - Introduction to DSP – DSP processors:
http://www.bores.com/courses/intro/chips/index.htm - The Scientist and Engineer's Guide to Digital Signal Processing:
http://www.dspguide.com/ - Digital signal processor (Wikipedia EN)
http://en.wikipedia.org/wiki/Digital_signal_processor - Digitální signálový procesor (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Digitální_signálový_procesor - Digital Signal Processing FAQs
http://dspguru.com/dsp/faqs - Reprezentace numerických hodnot ve formátech FX a FP
http://www.root.cz/clanky/fixed-point-arithmetic/ - IEEE 754 a její příbuzenstvo: FP formáty
http://www.root.cz/clanky/norma-ieee-754-a-pribuzni-formaty-plovouci-radove-tecky/ - Čtyři základní způsoby uložení čísel pomocí FX formátů
http://www.root.cz/clanky/binarni-reprezentace-numerickych-hodnot-v-fx-formatu/ - Základní aritmetické operace prováděné v FX formátu
http://www.root.cz/clanky/zakladni-aritmeticke-operace-provadene-ve-formatu-fx/ - Aritmetické operace s hodnotami uloženými ve formátu FP
http://www.root.cz/clanky/aritmeticke-operace-s-hodnotami-ve-formatu-plovouci-radove-carky/ - FIR Filter FAQ
http://dspguru.com/dsp/faqs/fir - Finite impulse response (Wikipedia)
http://en.wikipedia.org/wiki/Finite_impulse_response - DSPRelated
http://www.dsprelated.com/ - Addressing mode (Wikipedia)
https://en.wikipedia.org/wiki/Addressing_mode - Orthogonal instruction set
https://en.wikipedia.org/wiki/Orthogonal_instruction_set - TI 16-bit and 32-bit microcontrollers
http://www.ti.com/lsds/ti/microcontrollers16-bit32-bit/overview.page - TMS 32010 Assembly Language Programmer's Guide (kniha na Amazonu)
https://www.amazon.com/32010-Assembly-Language-Programmers-Guide/dp/0904047423 - COSC2425: PC Architecture and Machine Language, PC Assembly Language
http://www.austincc.edu/rblack/courses/COSC2425/index.html