Obsah
1. Od digitálních signálových procesorů C5000 k čipům OMAP
5. Digitální signálové procesory TMS320C54×
7. Aritmeticko-logická jednotka
10. Kombinace DSP TMS320C54× s jádry ARM
11. Digitální signálové procesory TMS320C55×
12. Nejdůležitější vylepšení oproti řadě TMS320C54×
1. Od digitálních signálových procesorů C5000 k čipům OMAP
V předchozích třech částech [1] [2] [3] seriálu o architekturách počítačů jsme se zaměřili na popis digitálních signálových procesorů založených na architektuře VLIW (Very Long Instruction Word). Připomeňme si, že se jedná o DSP rozdělené zhruba do dvou skupin. V první skupině nalezneme čipy orientované na zpracování celočíselných hodnot popř. numerických hodnot s pevnou řádovou čárkou (fixed point). Ve skupině druhé pak nalezneme čipy, které dokážou zpracovat hodnoty s plovoucí řádovou čárkou (floating point). Díky použité architektuře VLIW a taktéž díky tomu, že mnoho výkonných jednotek je v čipu vytvořeno ve větším množství kopií (několik sčítaček, minimálně dvě násobičky atd.) je výpočetní výkon těchto DSP působivý (řádově GFLOPS) a umožňuje jejich nasazení i v náročných aplikacích.
Vysoký výpočetní výkon ale i samotná architektura VLIW má však negativní dopad jak na komplexnost čipů (a tím pádem i na jejich cenu či možnosti integrace), tak i na jejich spotřebu, což je parametr, který je v mnoha oblastech klíčový. I z tohoto důvodu společnost Texas Instruments navrhla a stále nabízí digitální signálové procesory se sice nižším výpočetním výkonem, ovšem taktéž s mnohem menšími energetickými nároky, menší plochou čipu a nižší cenou (u některých čipů začíná na dvou dolarech). Tyto typy DSP, které dnes tvoří řadu C5000, jsou buď dodávány samostatně, nebo jsou na jediném čipu kromě samotného DSP umístěny i další obvody. Velmi úspěšná byla kombinace DSP řady C5000 s procesorovým jádrem ARM, která později vedla ke vzniku technologie OMAP, s níž se mnozí čtenáři pravděpodobně setkali, protože čipy OMAP byly použity v mnoha mobilních telefonech (později TI tento segment trhu pravděpodobně ne příliš dobrovolně opustila, k čemuž se ještě dostaneme).
2. C5000 versus C6000
V předchozím textu byla zmíněna „řada C5000“, ovšem nebylo vysvětleno, co toto označení znamená. Všechny až doposud popisované digitální signálové procesory jsou odvozeny od základního čipu TMS32010. Z tohoto DSP nejdříve vznikl odvozený čip TMS320C10 optimalizovaný pro celočíselné operace, dále pak čip TMS320C30 pro FP operace (o tomto čipu jsme se dozvěděli základní informace v předchozím článku), čipy TMS320C6… s architekturou VLIW a taktéž čipy TMS320C54× a TMS320C55× patřící do kategorie obvodů s relativně malým výpočetním výkonem, ovšem současně s nízkou spotřebou. A právě z toho důvodu, že označení všech těchto DSP vždy začíná písmeny TMS320 a konkrétní rozlišení je uvedeno až za znakem „C“, začalo se toto označení zkracovat do takové míry, že všechny čipy TMS320C6… jsou pojmenovány „řada C6000“ a čipy TMS320C54× a TMS320C55× jsou pojmenovány „řada C5000“.
3. Čipy patřící do řady C5000
Řada C5000 se skládá z čipů:
Označení | Fixed point | Floating point | Poznámka |
---|---|---|---|
TMS320C54× | ✓ | × | částečně superskalární čip s šestiřezovou pipeline |
TMS320C55× | ✓ | × | více paralelně běžících jednotek (další ALU+násobička+sčítačka) |
OMAP1 | ✓ | × | kombinace TMS320C55× a jádra ARM9 |
OMAP2420 | ✓ | × | kombinace TMS320C55× a jádra ARM11 |
První čipy TMS320C54× byly velmi často používány ve druhé generaci mobilních telefonů (G2) s GSM; nalezneme je například v mobilech společností Nokia či Ericsson (pamatujete ještě doby, kdy čtyři textové řádky na displeji byly považovány za luxus? :-). Později, společně se zlepšováním uživatelského rozhraní mobilních telefonů, docházelo ke kombinaci těchto DSP a některých procesorů z rodiny ARM. Právě zde se začala rodit platforma OMAP. Čipy TMS320C55× jsou již výkonnější, protože při stejné hodinové frekvenci teoreticky dosáhnou dvojnásobného výpočetního výkonu díky tomu, že základní jednotky (ALU, násobička, …) jsou zdvojeny. Tyto čipy se vyrábí dodnes, ať již samostatně, či v kombinaci s ARMovským jádrem (spíše je to z pohledu programátorů naopak: jde o ARMovské jádro podpořené v případě potřeby výkonným DSP).
4. Čipy patřící do řady C6000
Řada C6000 se skládá z těchto čipů (následující tabulku již důvěrně známe z předchozích částí tohoto seriálu):
Označení | Fixed point | Floating point | Poznámka |
---|---|---|---|
TMS320C62× | ✓ | × | základní model digitálního signálového procesoru s VLIW |
TMS320C67× | × | ✓ | na úrovni zdrojového kódu kompatibilní s prvním čipem |
TMS320C64× | ✓ | × | na úrovni zdrojového kódu kompatibilní s prvním čipem |
TMS320C67×+ | × | ✓ | vylepšení čipu TMS320C67× |
TMS320C64×+ | ✓ | × | vylepšení čipu TMS320C64× |
TMS320C674× | ✓ | ✓ | vznikl sloučením vlastností TMS320C64×+ a TMS320C67×+ |
TMS320C66× | ✓ | ✓ | nová řada založená na TMS320C674× |
Kromě toho do řady C6000 řadíme i kombinace DSP a procesorů (či spíše jen procesorových jader) ARM:
Označení | DSP | Jádro ARM |
---|---|---|
DaVinci | TMS320C64×+ či TMS320C674× | ARM9 |
OMAP-L13× | TMS320C674× | ARM9 |
OMAP243× | TMS320C64× | ARM11 |
OMAP3 | TMS320C64×+ | Cortex-A8 |
OMAP4 | TMS320C64×+ | Cortex-A9 popř. ARMv7 |
Poznámka: v řade C6000 je sice mnohem větší množství různých typů DSP, ve skutečnosti je však C5000, minimálně co do počtu prodaných kusů, velmi úspěšná série.
5. Digitální signálové procesory TMS320C54×
Dostáváme se k prvním čipům patřícím do řady C5000. Jedná se o čipy TMS320C54× (za „x“ se doplňuje konkrétní varianta čipu). U TMS320C54× můžeme vidět (na rozdíl od poměrně odlišné řady C6000) velkou inspiraci v původním digitálním signálovém procesoru TMS32010, ovšem interní struktura byla samozřejmě modifikována a v některých ohledech rozšířena, což se týká jak bitové šířky zpracovávaných operandů u aritmeticko-logické jednotky i násobičky, tak i například počtu registrů používaných pro adresování operandů (auxiliary registers), protože se původní dva adresní registry rozšířily na osm registrů. Navíc se o adresování operandů stará dvojice adresovacích jednotek (ARAU0 a ARAU1), protože tyto DSP jsou do jisté míry superskalární a dovolují tak načítat dva operandy současně. I možnosti ALU se rozšířily, protože ji lze nakonfigurovat takovým způsobem, že jedna 40bitová ALU může pracovat v režimu, kdy se chová jako dvě 16bitové aritmeticko-logické jednotky, což má samozřejmě velký vliv na výpočetní výkon (a zpracování 16bitových signálů je stále velmi časté).

Obrázek 1: Pro porovnání interní struktura nejdůležitější části DSP TMS32010 (prvního DSP od TI), v níž se provádí všechny výpočty.
6. Interní struktura čipu
Interní struktura čipů TMS320C54× je relativně složitá, zejména v porovnání s původním digitálním signálovým procesorem TMS32010. Řada C5000 je založena na Harvardské architektuře, která je ovšem modifikována. Zatímco v klasické Harvardské architektuře mají čipy dvě samostatné sběrnice, jednu pro data a druhou pro instrukce, je u TMS320C54× sběrnic mnohem více: tři sběrnice pro data (CB, DB, EB) a jedna sběrnice pro instrukce. Díky tomu, že existují tři samostatně pracující datové sběrnice, bylo možné dosáhnout poměrně vysokého stupně instrukčního paralelismu, protože v jednom cyklu je možné provést až tři čtení či zápisy (musíme si uvědomit, že DSP, na rozdíl od procesorů RISC, většinou minimálně jeden operand načítají z datové paměti a výsledek opět ukládají do datové paměti). Pro výběr zdrojových dat slouží obvody označené Sign Ctr, které můžeme vidět i na schématu (kromě multiplexingu dat tyto obvody mohou provádět i znaménkové rozšíření):

Obrázek 1: Zjednodušené schéma interní struktury čipu TMS320C54×. V horní části se nachází systém interních datových a adresových sběrnic, který byl pro zjednodušení vynechán; zobrazeny jsou jen výkonné jednotky a způsob jejich propojení.
Zdroj: TMS320C54×, TMS320LC54×, TMS320VC54× FIXED-POINT DIGITAL SIGNAL PROCESSORS, Texas Instrumens.
7. Aritmeticko-logická jednotka
Aritmeticko-logická jednotka dokáže zpracovávat zdrojové operandy o šířce až čtyřiceti bitů, výsledkem je v takovém případě opět 40bitové slovo. ALU je přes přepínače Sign Ctr propojena s dvojicí akumulátorů nazvaných A a B, s registrem T využívaným především násobičkou, s datovými sběrnicemi a taktéž s barrel shifterem. Povšimněte si, že druhý vstupní operand vstupuje do ALU vždy buď přes barrel shifter nebo přímo z paměti. Výsledek ALU operace je ukládán do vybraného akumulátoru A nebo B (výběr provádí multiplexor, který na schématu nalezneme pod těmito akumulátory). Jak jsme si již naznačili výše, dokáže ALU pracovat v režimu, kdy je její funkce rozdělena na dvě paralelně pracující šestnáctibitové ALU; v tomto případě jsou vstupní operandy i výstup rozděleny na osm horních bitů (guard bits) a dvojici 16bitových hodnot. Tím, že je šířka ALU i akumulátorů zvětšena o osm bitů, je zaručeno, že u operací typu MAC apod. nedojde k předčasnému přetečení výsledků.

Obrázek 2: Červeně je zvýrazněna aritmeticko-logická jednotka, modře dvojice akumulátorů A a B.
8. Násobička a sčítačka
Dalšími dvěma důležitými moduly jsou násobička a sčítačka určené pro operace typu MAC (Multiply Accumulate). Násobička, která pracuje nezávisle (tudíž paralelně) s ALU, dokáže v jednom cyklu vynásobit dva 17bitové operandy a poslat výsledek násobení do sčítačky (je to skutečně pouze sčítačka, nikoli plnohodnotná ALU). Jeden ze vstupních operandů násobičky bývá umístěn v registru T, s nímž jsme se již setkali u původního čipu TMS32010, lze ovšem použít i konstantu načtenou z paměti. Kromě registru T může být vstupní operand načten z vybraného akumulátoru. Do sčítačky vstupuje vypočtený součin a jeden z akumulátorů či nula (tím se vlastně sčítačka přeskočí). Výsledek vypočtený sčítačkou může být zaokrouhlen (spodní bity), lze aplikovat logiku pro saturaci výsledku (namísto pouhého přetečení) a blok ZERO testuje, zda není výsledek operace MAC nulový. Posléze je vypočtený výsledek uložen zpět do vybraného akumulátoru.

Obrázek 3: Červeně je zvýrazněna násobička, modře sčítačka a zeleně registr T umístěný na jeden ze vstupů násobičky.
9. Barrel shifter
Důležitou součástí digitálního signálového procesoru s celočíselnou ALU a násobičkou je barrel shifter, protože ten mj. umožňuje, aby se s využitím celočíselných instrukcí mohly provádět operace s numerickými hodnotami uloženými ve formátu s pevnou řádovou čárkou (FX). Ze schématu zapojení je patrné, že jeden z operandů vstupujících do aritmeticko-logické jednotky je zpracován v barrel shifteru. Mezi podporované operace patří především bitový posun doleva o 0 až 31 bitů a bitový posun doprava o 0 až šestnáct bitů. Počet posunovaných bitů je buď přímo součástí instrukce, nebo lze použít registr T popř. stavový registr ST1.

Obrázek 4: Červeně je zvýrazněn barrel shifter pracující samostatně, tj. nezávisle na ostatních jednotkách.
10. Kombinace DSP TMS320C54× s jádry ARM
Digitální signálové procesory TMS320C54× byly s úspěchem používány v mnoha mobilních telefonech druhé generace (G2). V roce 1997 došlo k velmi důležité události, která pravděpodobně změnila celý další vývoj mobilních telefonů. Firma Texas Instruments si totiž zakoupila licenci na použití jader ARMovských procesorů ARM7 (konkrétně velmi populárních ARM7TDMI s instrukční sadou Thumb a rychlou násobičkou) a použila kombinaci DSP+tohoto jádra pro čip použitý v mobilním telefonu Nokia 6110. Právě tehdy se začala psát úspěšná historie použití ARMovských procesorů v mobilních telefonech a později také na tabletech (mezitím však společnost TI tento trh opustila, což nijak negativně neovlivnilo další firmy s licencí na jádra ARM). Současně se zrodila kombinace ARM+DSP, která se později představila pod samostatným názvem OMAP (Open Multimedia Applications Platform).
11. Digitální signálové procesory TMS320C55×
Po dnes již přece jen poněkud zastaralých procesorech TMS320C54× firma Texas Instruments navrhla digitální signálový procesor TMS320C55× (za „x“ se opět doplňuje číslo konkrétního modelu), který se v několika modifikacích vyrábí dodnes. Opět se jedná o DSP určený do těch aplikací, v nichž se požadují nízké energetické nároky a přitom relativně dobrý výpočetní výkon. Podle použité technologie a konkrétního modulu dosahuje spotřeba od 0,15 mW/MHz do 0,54 mW/MHz, v pohotovostním režimu režimu pak cca 0,15 mW. Jádra TMS320C55× se prodávají buď v samostatném čipu, nebo mohou být součástí tandemu ARM+DSP popř. nějaké jiné vhodné kombinace (včetně celých SoC). Zajímavé je, že mnohé DSP z této řady jsou vybaveny koprocesorem pro výpočet FFT, což lze využít v mnoha oblastech, pro nichž jsou tyto čipy určeny (SDR, zpracování audia, rozpoznávání řeči, rozpoznávání otisků prstů, řídicí aplikace…).
12. Nejdůležitější vylepšení oproti řadě TMS320C54×
Digitální signálové procesory TMS320C55× mají mnoho vlastností společných s původní řadou TMS320C54×, ovšem samozřejmě došlo k několika úpravám, aby se zvýšila rychlost provádění DSP operací. Pravděpodobně nejviditelnější změnou je zdvojnásobení počtu aritmeticko-logických jednotek (jedna ALU je stále 40bitová, druhá však jen šestnáctibitová) a zdvojnásobení počtu násobiček, přičemž obě násobičky provádí násobení 17×17 bitových operandů a jsou napojeny na sčítačku (každá násobička má sčítačku svoji). Vylepšení se dotkla i sběrnic, protože u TMS320C55× lze v jednom taktu přečíst tři šestnáctibitové hodnoty z paměti a zapsat dvě (taktéž šestnáctibitové hodnoty) zpět do paměti, pokaždé s využitím jiné sběrnice:
Modul | C54× | C55× |
---|---|---|
ALU | 1× | 2× |
Násobička | 1× | 2× |
Sběrnice | 3×Read+Write | 3×Read, 2×Write (16bit) |
13. Série OMAP
Digitální signálové procesory řady TMS320C55× se staly prvními DSP použitými v sérii OMAP neboli Open Multimedia Applications Platform. V rámci této série jsou vyráběny čipy určené především pro mobilní aplikace: od sluchátek s Bluetooth přes Google Glass k tabletům. Většina čipů OMAP obsahuje kombinaci digitálního signálového procesoru s jádrem ARM, ovšem od OMAP 3 jsou k této dvojici modulů přidány i GPU (buď jeden či více). Nejvýkonnější jsou čipy ze série OMAP 5 představené v roce 2013, které kromě výkonného DSP TMS320C64×+ (Tesla) obsahují i dvoujádrový Cortex-A15, další ARM jádro Cortex-M, grafický akcelerátor a navíc ještě další specializovaný modul určený pro operace typu BitBlt:
Série OMAP | Označení | DSP | Jádro ARM |
---|---|---|---|
OMAP 1 | OMAP171× | TMS320C55× | ARM926EJ-S |
OMAP 1 | OMAP162× | TMS320C55× | ARM926EJ-S |
OMAP 1 | OMAP5912 | TMS320C55× | ARM926EJ-S |
OMAP 1 | OMAP161× | TMS320C55× | ARM926EJ-S |
OMAP 1 | OMAP1510 | TMS320C55× | ARM925T |
OMAP 1 | OMAP5910 | TMS320C55× | ARM925T |
OMAP 2 | OMAP2431 | TMS320C64× | ARM1136 |
OMAP 2 | OMAP2430 | TMS320C64× | ARM1136 |
OMAP 2 | OMAP2420 | TMS320C55× | ARM1136 |
OMAP 3 | OMAP3430 | TMS320C64×+ | Cortex-A8 + GPU |
OMAP 3 | OMAP3530 | TMS320C64×+ | Cortex-A8 + GPU |
OMAP 3 | OMAP3611 | TMS320C64×+ | Cortex-A8 + GPU |
OMAP 3 | OMAP3621 | TMS320C64×+ | Cortex-A8 + GPU |
OMAP 3 | OMAP3622 | TMS320C64×+ | Cortex-A8 + GPU |
OMAP 4 | OMAP4430 | TMS320C64×+ (Tesla) | Cortex-A9 popř. ARMv7 + GPU |
OMAP 4 | OMAP4460 | TMS320C64×+ (Tesla) | Cortex-A9 popř. ARMv7 + GPU |
OMAP 4 | OMAP4470 | TMS320C64×+ (Tesla) | Cortex-A9 popř. ARMv7 + GPU |
OMAP 5 | OMAP5430 | TMS320C64×+ (Tesla) | Cortex-A15 (dual core) + Cortex-M4 + GPU |
OMAP 5 | OMAP5432 | TMS320C64×+ (Tesla) | Cortex-A15 (dual core) + Cortex-M4 + GPU |
OMAP L-1× | OMAP-L137 | TMS320C674× | ARM926EJ-S |
OMAP L-1× | OMAP-L138 | TMS320C674× | ARM926EJ-S |
K některým významným čipům OMAP se ještě v tomto seriálu vrátíme.
14. Odkazy na Internetu
- Texas Instruments DaVinci
https://en.wikipedia.org/wiki/Texas_Instruments_DaVinci - 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