Hlavní navigace

Digitální signálové procesory TMS320C66×: maximální výpočetní výkon na prvním místě

30. 5. 2017
Doba čtení: 20 minut

Sdílet

Mezi nejvýkonnější DSP patří čipy řady TMS320C66× (zkráceně C66×), konkrétně pak obvody C6678 vybavené osmi jádry, které společně dosahují výkonu až 358 GMAC nebo 179 GFLOPS. Dnes se seznámíme se základními vlastnostmi těchto procesorů.

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

4. Přepínač TeraNet

5. Paměťový subsystém řady TMS320C66×

6. Multicore Navigator

7. Jádra C66× a jejich podpůrné moduly

8. Funkční jednotky

9. Pracovní registry, řídicí registry a akumulátory

10. Kooperace mezi jednotkami (datapath) A a B

11. Vektorové (SIMD) operace

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×

16. Odkazy na Internetu

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/me­dia/images/processors/22801-dsp-scalability.png

Obrá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ů:

  1. Vlastního jádra C66
  2. Řadičem přístupu do paměti programu (Program Memory Controller, PMC)
  3. Řadičem přístupu do paměti dat (Data Memory Controller, DMC)
  4. Řadičem přístupu do L2 cache (Unified Memory Controller, UMC)
  5. Řadičem přístupu do obecné paměti a do MSM
  6. Rozhraním pro „boot“ jádra

Jádro C66 je rozděleno na:

  1. Část pro načtení instrukce, její dekódování, dispatch atd.
  2. Sadu pracovních registrů datapathu A (viz devátou kapitolu)
  3. Sadu pracovních registrů datapathu B (viz devátou kapitolu)
  4. Čtyři výkonné jednotky datapathu A (viz osmou kapitolu)
  5. Čtyři výkonné jednotky datapathu B (viz osmou kapitolu)
  6. Řídicí registry
  7. Řadič přerušení
  8. Ř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 32×
MAC 32×32 bitů, FX
MAC FP, float/single
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:

root_podpora

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

  1. DSP for Cortex-M
    https://developer.arm.com/techno­logies/dsp/dsp-for-cortex-m
  2. Cortex-M processors in DSP applications? Why not?!
    https://community.arm.com/pro­cessors/b/blog/posts/cortex-m-processors-in-dsp-applications-why-not
  3. White Paper – DSP capabilities of Cortex-M4 and Cortex-M7
    https://community.arm.com/pro­cessors/b/blog/posts/white-paper-dsp-capabilities-of-cortex-m4-and-cortex-m7
  4. Q (number format)
    https://en.wikipedia.org/wi­ki/Q_%28number_format%29
  5. TriCore Architecture & Core
    http://www.infineon.com/cms/en/pro­duct/microcontroller/32-bit-tricore-tm-microcontroller/tricore-tm-architecture-and-core/channel.html?channel=ff80808112ab681d0112­ab6b73d40837
  6. TriCoreTM V1.6 Instruction Set: 32-bit Unified Processor Core
    http://www.infineon.com/dgdl/tc_v131_in­structionset_v138.pdf?file­Id=db3a304412b407950112b409b6dd0352
  7. TriCore v2.2 C Compiler, Assembler, Linker Reference Manual
    http://tasking.com/suppor­t/tricore/tc_reference_gu­ide_v2.2.pdf
  8. Infineon TriCore (Wikipedia)
    https://en.wikipedia.org/wi­ki/Infineon_TriCore
  9. C166®S V2 Architecture & Core
    http://www.infineon.com/cms/en/pro­duct/microcontroller/16-bit-c166-microcontroller/c166-s-v2-architecture-and-core/channel.html?channel=db3a304312bef5660112­c3011c7d01ae
  10. Memory segmentation
    https://en.wikipedia.org/wi­ki/Memory_segmentation
  11. Bus mastering
    https://en.wikipedia.org/wi­ki/Bus_mastering
  12. ST10 16-bit MCUs
    http://www.st.com/en/micro­controllers/st10–16-bit-mcus.html?querycriteria=pro­ductId=LN1111
  13. XC800 family
    https://en.wikipedia.org/wi­ki/XC800_family
  14. C166 (stránky společnosti Infineon)
    https://www.infineon.com/cms/en/pro­duct/microcontroller/16-bit-c166-microcontroller/channel.html?chan­nel=ff80808112ab681d0112ab6b2e­af0759#ispnTab3
  15. C166 Family
    https://en.wikipedia.org/wi­ki/C166_family
  16. Permanent Magnet Synchronous Motor
    https://en.wikipedia.org/wi­ki/Synchronous_motor#Perma­nent_magnet_motors
  17. Implementing field oriented control of a brushless DC motor
    http://www.eetimes.com/do­cument.asp?doc_id=1279321
  18. Vector control (motor)
    https://en.wikipedia.org/wi­ki/Vector_control_(motor)
  19. Motorola DSP56k
    https://www.rockbox.org/wi­ki/MotorolaDSP56k
  20. Motorola 56000 (Wikipedia)
    http://en.wikipedia.org/wi­ki/Motorola_56000
  21. Using the Motorola DSP56002EVM for Amateur Radio DSP Projects
    http://www.johanforrer.net/EV­M/article.html
  22. The Atari Falcon030 „Personal Integrated Media System“
    http://www.atarimuseum.com/com­puters/16bits/falcon030.html
  23. Turtle Beach Corporation (stránky společnosti)
    http://www.turtlebeach.com/
  24. Turtle Beach Corporation (Wikipedia)
    https://en.wikipedia.org/wi­ki/Turtle_Beach_Corporati­on
  25. Atari Falcon 030 DSP 3D engine test
    http://www.digiti.info/vi­deo/WHQwMjNRaExfLWs=/atari_fal­con030_dsp_3d_engine_test
  26. Atari Falcon030 (německy)
    http://www.maedicke.de/ata­ri/hardware/falcon.htm
  27. Old-computers.com: Atari Falcon030
    http://www.old-computers.com/museum/compu­ter.asp?c=125&st=1
  28. Atari Falcon030 (Wikipedia)
    http://en.wikipedia.org/wi­ki/Atari_Falcon
  29. Past and current projects (including Falcon stuff)
    http://os.inf.tu-dresden.de/~nf2/projects/projects.html
  30. Atari Falcon 030: The Case For The Defence
    http://www.soundonsound.com/sos/1994_ar­ticles/sep94/atarifalcon.html
  31. DaVinci processor family
    http://www.ti.com/general/doc­s/datasheetdiagram.tsp?ge­nericPartNumber=TMS320DM365&di­agramId=64193
  32. Texas Instruments DaVinci
    https://en.wikipedia.org/wi­ki/Texas_Instruments_DaVin­ci
  33. TMS320DM6446 (DaVinci)
    http://www.ti.com/product/tms320dm6446
  34. Digital Media Video Processors (TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/media_processor­s/davinci/products.page#
  35. TI Wiki
    http://processors.wiki.ti­.com/index.php/Main_Page
  36. C5000 ultra-low-power DSP
    http://www.ti.com/lsds/ti/pro­cessors/dsp/c5000_dsp/over­view.page
  37. OMAP (Wikipedia)
    https://en.wikipedia.org/wiki/OMAP
  38. OMAP – TI Wiki
    http://processors.wiki.ti­.com/index.php/OMAP
  39. Why OMAP can't compete in smartphones
    http://www.eetimes.com/au­thor.asp?section_id=40&doc_id=1286602
  40. Applications Processors – The Heart of the Smartphone
    http://www.engineering.com/E­lectronicsDesign/Electronic­sDesignArticles/ArticleID/5791/Ap­plications-Processors-The-Heart-of-the-Smartphone.aspx
  41. TI cuts 1,700 jobs in OMAP shift
    http://www.eetimes.com/do­cument.asp?doc_id=1262782
  42. VLIW: Very Long Instruction Word: Texas Instruments TMS320C6×
    http://www.ecs.umass.edu/e­ce/koren/architecture/VLIW/2/ti1­.html
  43. An Introduction To Very-Long Instruction Word (VLIW) Computer Architecture
    Philips Semiconductors
  44. VLIW Architectures for DSP: A Two-Part Lecture (PDF, slajdy)
    http://www.bdti.com/MyBDTI/pub­s/vliw_icspat99.pdf
  45. Very long instruction word (Wikipedia)
    https://en.wikipedia.org/wi­ki/Very_long_instruction_word
  46. A VLIW Approach to Architecture, Compilers and Tools
    http://www.vliw.org/book/
  47. VEX Toolchain (VEX = VLIW Example)
    http://www.hpl.hp.com/downloads/vex/
  48. Elbrus (computer)
    https://en.wikipedia.org/wi­ki/Elbrus_%28computer%29
  49. Super Harvard Architecture Single-Chip Computer
    https://en.wikipedia.org/wi­ki/Super_Harvard_Architec­ture_Single-Chip_Computer
  50. Digital Signal Processors (stránky TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/overview.page
  51. C674× Low Power DSP (stránky TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/c6000_dsp/c674×/o­verview.page
  52. TMS320C30 (stránky TI)
    http://www.ti.com/product/tms320c30
  53. TMS320C6722B
    http://www.ti.com/product/tms320c6722b/des­cription
  54. Introduction to DSP
    http://www.ti.com/lit/wp/spry281/spry­281.pdf
  55. The Evolution of TMS (Family of DSPs)
    http://www.slideshare.net/mo­to_modx/theevo1
  56. Datasheet k TMS32010
    http://www.datasheetarchi­ve.com/dlmain/49326c32a52050140ab­ffe6f0ac4894aa09889/M/TMS32010
  57. 1979: Single Chip Digital Signal Processor Introduced
    http://www.computerhistory­.org/siliconengine/single-chip-digital-signal-processor-introduced/
  58. The TMS32010. The DSP chip that changed the destiny of a semiconductor giant
    http://www.tihaa.org/histo­rian/TMS32010–12.pdf
  59. Texas Instruments TMS320 (Wikipedia)
    https://en.wikipedia.org/wi­ki/Texas_Instruments_TMS320
  60. 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
  61. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko.sasktelwebsi­te.net/cpu.html
  62. Introduction to DSP – DSP processors:
    http://www.bores.com/courses/in­tro/chips/index.htm
  63. The Scientist and Engineer's Guide to Digital Signal Processing:
    http://www.dspguide.com/
  64. Digital signal processor (Wikipedia EN)
    http://en.wikipedia.org/wi­ki/Digital_signal_processor
  65. Digitální signálový procesor (Wikipedia CZ)
    http://cs.wikipedia.org/wi­ki/Digitální_signálový_pro­cesor
  66. Digital Signal Processing FAQs
    http://dspguru.com/dsp/faqs
  67. Reprezentace numerických hodnot ve formátech FX a FP
    http://www.root.cz/clanky/fixed-point-arithmetic/
  68. IEEE 754 a její příbuzenstvo: FP formáty
    http://www.root.cz/clanky/norma-ieee-754-a-pribuzni-formaty-plovouci-radove-tecky/
  69. Č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/
  70. Základní aritmetické operace prováděné v FX formátu
    http://www.root.cz/clanky/zakladni-aritmeticke-operace-provadene-ve-formatu-fx/
  71. 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/
  72. FIR Filter FAQ
    http://dspguru.com/dsp/faqs/fir
  73. Finite impulse response (Wikipedia)
    http://en.wikipedia.org/wi­ki/Finite_impulse_response
  74. DSPRelated
    http://www.dsprelated.com/
  75. Addressing mode (Wikipedia)
    https://en.wikipedia.org/wi­ki/Addressing_mode
  76. Orthogonal instruction set
    https://en.wikipedia.org/wi­ki/Orthogonal_instruction_set
  77. TI 16-bit and 32-bit microcontrollers
    http://www.ti.com/lsds/ti/mi­crocontrollers16-bit32-bit/overview.page
  78. TMS 32010 Assembly Language Programmer's Guide (kniha na Amazonu)
    https://www.amazon.com/32010-Assembly-Language-Programmers-Guide/dp/0904047423
  79. COSC2425: PC Architecture and Machine Language, PC Assembly Language
    http://www.austincc.edu/rblac­k/courses/COSC2425/index.html

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.