´ Ustav radioelektroniky Vysok´ e uˇ cen´ı technick´ e v Brnˇ e
´ Uvod do sign´ alov´ ych procesor˚ u Mikroprocesorov´ a technika a embedded syst´ emy Pˇredn´ aˇska 11
doc. Ing. Tom´ aˇs Fr´ yza, Ph.D. listopad 2012
Obsah pˇredn´ aˇsky
´ Uvod do sign´ alov´ ych procesor˚ u
Paraleln´ı zpracov´ an´ı instrukc´ı a dat
Architektura sign´ alov´ ych procesor˚ u typu VLIW
Zp˚ usoby adresov´ an´ı operand˚ u u sign´ alov´ ych procesor˚ u
Programov´ an´ı sign´ alov´ ych procesor˚ u
Obsah pˇredn´ aˇsky
´ Uvod do sign´ alov´ ych procesor˚ u
Paraleln´ı zpracov´ an´ı instrukc´ı a dat
Architektura sign´ alov´ ych procesor˚ u typu VLIW
Zp˚ usoby adresov´ an´ı operand˚ u u sign´ alov´ ych procesor˚ u
Programov´ an´ı sign´ alov´ ych procesor˚ u
Realizace algoritm˚ u zpracov´ an´ı dat
Libovolnou realizaci algoritm˚ uˇ c´ıslicov´ eho zpracov´ an´ı dat lze prov´ est nˇ ekolika zp˚ usoby s odliˇsnou efektivitou a n´ aklady. I Mikroprocesory pro vˇ seobecn´ e pouˇzit´ı: I
CPU vyˇzaduj´ı extern´ı pamˇ eti a podp˚ urn´ e obvody (napˇr. v PC).
I
Mikrokontrol´ ery. Pomoc´ı mikroprocesor˚ u s redukovanou instrukˇ cn´ı sadou (RISC):
I
Z´ akaznick´ e obvody typu ASIC:
I
Sign´ alov´ e procesory (DSP – Digital Signal Processor):
I
I
I
I I
Mikroprocesory vyuˇz´ıvaj´ı zˇretˇ ezen´ e zpracov´ an´ı (pipelining) s jednoduch´ ymi instrukcemi. Hardware jednotliv´ y obvod˚ u je uzp˚ usoben jedin´ e konkr´ etn´ı funkci. Nejvˇ etˇs´ı v´ yrobci: Texas Instruments, Analog Devices, Freescale, AT&T, . . .
Paraleln´ı syst´ emy: I
Syst´ emy typu MI/MD (Multiple Instruction Stream/Multiple Data Stream, viz n´ıˇze), kter´ e umoˇzn ˇuj´ı paraleln´ı zpracov´ an´ı jak instrukc´ı, tak i dat.
Realizace algoritm˚ u zpracov´ an´ı dat I
Sign´ alov´ e procesory a procesory pro vˇseobecn´ e pouˇzit´ı (GPP – General Purpose Processor) maj´ı odliˇsn´ e pouˇzit´ı: I I I
DSP maj´ı v´ yraznˇ e niˇzˇs´ı spotˇrebu, proto odpad´ a nutnost chlazen´ı j´ adra procesoru. GPP jsou urˇ ceny pro aplikace vyˇzaduj´ıc´ı velkou datovou pamˇ et’, pˇr´ıp. operaˇ cn´ı syst´ em, bˇ eˇz´ıc´ı v re´ aln´ em ˇ case (RTOS – Real Time Operation System). DSP jsou optimalizov´ any pro efektivn´ı v´ ypoˇ cet matematick´ ych operac´ı souˇ ctu a souˇ cinu (viz tabulka).
Tabulka: Vybran´ e algoritmy ˇ c´ıslicov´ eho zpracov´ an´ı sign´ al˚ u.
Typ algoritmu
Zp˚ usob v´ ypoˇ ctu
Konvoluce sign´ al˚ u.
y (l) =
ˇ ıslicov´ C´ a filtrace (FIR). Diskr´ etn´ı Fourierova transformace.
y (l) = X (l) =
Diskr´ etn´ı kosinov´ a transformace.
X (l) =
...
...
N X i=0 M X
x(i) · h(l − i) a(i) · x(l − i)
i=0 N−1 X i=0 N−1 X i=0
x(i) · WNli x(i) · CNli
Definice sign´ alov´ eho procesoru Definice Sign´ alov´ y procesor (DSP – Digital Signal Processor) je mikroprocesor, pˇr´ıp. mikroprocesorov´ y syst´ em uzp˚ usoben´ y pro efektivn´ı realizaci algoritm˚ uˇ c´ıslicov´ eho zpracov´ an´ı sign´ al˚ u v re´ aln´ em ˇ case. To vˇse s nejmenˇs´ımi vynaloˇzen´ ymi n´ aklady.
ˇ ezec zpracov´ Obr´ azek: Retˇ an´ı dat pomoc´ı DSP. I
V´ yvoj DSP od konce 70. let rozdˇ elit podle vyuˇz´ıvan´ e architektury: I
von Neumannova, Harvardsk´ a, architektura typu VLIW (Very Long Instruction Word), umoˇzn ˇuj´ıc´ı vykon´ avat nˇ ekolik instrukc´ı souˇ casnˇ e, Fis83 FISHER, J.A. (Yale University, CO). Very Long Instruction Word Architectures and ELI-512. In Proceedings of the 10th Annual International Symposium on Computer Architecture ISCA’83. ISBN:0-89791-101-6. I ... I superskal´ arn´ı. I I
V´ yvoj DSP spˇ eje k paraleln´ım syst´ em˚ um, kdy je vykon´ avan´ au ´loha rozdˇ elena do d´ılˇ c´ıch celk˚ u a ty jsou zpracov´ any souˇ casnˇ e nˇ ekolika funkˇ cn´ımi jednotkami, nebo cel´ ymi procesorov´ ymi j´ adry. Fly66 FLYNN, M. J. Very High-Speed Computing Systems. Proceedings of the IEEE. 1966, vol. 54, no. 12, p. 1901–1909. I
Obsah pˇredn´ aˇsky
´ Uvod do sign´ alov´ ych procesor˚ u
Paraleln´ı zpracov´ an´ı instrukc´ı a dat
Architektura sign´ alov´ ych procesor˚ u typu VLIW
Zp˚ usoby adresov´ an´ı operand˚ u u sign´ alov´ ych procesor˚ u
Programov´ an´ı sign´ alov´ ych procesor˚ u
Dˇ elen´ı paraleln´ıch syst´ em˚ u Paraleln´ı syst´ emy lze dˇ elit (viz Flynn) podle mnoˇzstv´ı paralelnˇ e zpracovan´ ych instrukc´ı a dat. I Dˇ elen´ı podle poˇ ctu proces˚ u (instrukc´ı), kter´ e jsou ˇreˇseny souˇ casnˇ e: SI Single Instruction Stream – vykon´ av´ a jen jeden proces, ˇ ci instrukci. MI Multiple Instruction Stream – vnitˇrn´ı struktura umoˇzn ˇuje v´ ykon nˇ ekolika odliˇsn´ ych instrukc´ı. I
Dˇ elen´ı podle poˇ ctu datov´ ych tok˚ u, kter´ e jsou zpracov´ any souˇ casnˇ e: SD Single Data Stream – vˇsechna data, se kter´ ymi procesor v dan´ em okamˇziku pracuje pˇredstavuj´ı pr´ avˇ e jeden zpracov´ avan´ y datov´ y tok. MD Multiple Data Stream – data, kter´ a jsou aktu´ alnˇ e zpracov´ av´ ana pˇredstavuj´ı nˇ ekolik nez´ avisl´ ych datov´ ych tok˚ u.
I
Paraleln´ı zpracov´ an´ı instrukc´ı: I
I I
I
paraleln´ı zpracov´ an´ı instrukc´ı je umoˇznˇ eno vnitˇrn´ı strukturou procesoru, kter´ y obsahuje nˇ ekolik nez´ avisl´ ych funkˇ cn´ıch jednotek, pˇr´ıp. cel´ ych jader. Kaˇzd´ a jednotka m´ a obvykle odliˇsnou funkci, pak je instrukce pro cel´ y procesor tvoˇrena z nˇ ekolika ˇ c´ ast´ı, a ty jsou vykon´ av´ any souˇ casnˇ e v tˇ echto jednotk´ ach, d´ılˇ c´ı ˇ c´ asti instrukce mohou b´ yt jednoduch´ e a proto i kompilaˇ cn´ı programy (nejˇ castˇ eji z jazyka C) mohou b´ yt jednoduˇsˇs´ı a efektivnˇ e rozdˇ elit k´ od do co moˇzn´ a nejv´ıce jednotek.
Paraleln´ı zpracov´ an´ı dat: I I I
tat´ aˇz instrukce (operace) se prov´ ad´ı se souborem nez´ avisl´ ych dat. Ta mohou b´ yt tvoˇrena napˇr. ˇsirok´ ymi registry (32 bit˚ u), pˇriˇ cemˇz datov´ a slova jsou pouze 8bitov´ a, jednou operac´ı (napˇr. souˇ cet dvou 32bitov´ ych registr˚ u) je tak ale realizov´ an souˇ cet hned 4 dvojic odliˇsn´ ych operand˚ u, tento zp˚ usob zpracov´ an´ı v´ yrazn´ ym zp˚ usobem zvyˇsuje poˇ cetn´ı v´ ykon procesor˚ u, pˇredevˇs´ım pˇri pr´ aci s vektory.
Paraleln´ı zpracov´ an´ı instrukc´ı a dat I
I
I
I
I I
Paraleln´ı zprac. instrukc´ı – nutnost v´ıce jednotek (napˇr.: arit., log., n´ asobiˇ cka, FPU, transfer, . . .). Vyuˇzit´ı paraleln´ıho zpracov´ an´ı instrukc´ı i dat je pˇrirozenˇ e v´ yhodn´ y pouze v situaci, kdy je v dan´ em okamˇziku k dispozici v´ıce operand˚ u pro zpracov´ an´ı. V pˇr´ıpadˇ e, ˇze v´ ysledek jedn´ e operace je vstupem operace n´ asleduj´ıc´ı (s´ eriov´ a podstata zpracov´ an´ı), tento postup efektivn´ı b´ yt nem˚ uˇze. ´ Ukolem program´ atora je tedy uspoˇr´ adat data tak, aby vyhovovala paraleln´ı struktuˇre MI/SI. To m˚ uˇze tak´ e znamenat pˇreprogramov´ an´ı cel´ eho algoritmu, a pˇr´ıpadnou nutnost vloˇzen´ı dodateˇ cn´ ych instrukc´ı. V´ yhody dosahovan´ e metodou SI/MD jsou tak sniˇzov´ any. Snaho o maxim´ aln´ı vyt´ıˇzen´ı jader procesoru, resp. funkˇ cn´ıch jednotek. Rychlost zpracov´ an´ı algoritm˚ u je moˇzn´ e ovlivnit zaˇrazen´ım rychl´ e pamˇ eti (nebo skupiny pamˇ et´ı) typu cache jak pro instrukce, tak i pro data. (Zaveden´ım cache pro instrukce vytvoˇrila firma Texas Instruments nejv´ ykonnˇ ejˇs´ı DSP – rodina TMS320C64xx.) 31
0
31
16 15
0
31
24 23
16 15
×
×
×
=
=
=
(b)
(c)
(a)
Obr´ azek: S´ eriov´ e (a) a paraleln´ı zpracov´ an´ı dat (b, c).
8 7
0
Obsah pˇredn´ aˇsky
´ Uvod do sign´ alov´ ych procesor˚ u
Paraleln´ı zpracov´ an´ı instrukc´ı a dat
Architektura sign´ alov´ ych procesor˚ u typu VLIW
Zp˚ usoby adresov´ an´ı operand˚ u u sign´ alov´ ych procesor˚ u
Programov´ an´ı sign´ alov´ ych procesor˚ u
Sign´ alov´ e procesory firmy Texas Instruments I
TI uvedl prvn´ı generaci DSP s oznaˇ cen´ım TMS32010 v roce 1982, dalˇs´ı (TMS320C25) v roce 1986, a TMS320C50 v 1991.
I
Tyto 16bitov´ e procesory pracuj´ı s pevnou ˇr´ adovou ˇ c´ arkou (Fixed-point) a jsou k´ odovˇ e kompatibiln´ı.
1x,C2x,C5x Procesory C1x, C2x a C5x jsou zaloˇzeny na modifikovan´ e Harvard architektuˇre s oddˇ elen´ ym pamˇ et’ov´ ym prostorem pro data a instrukce. C30 Prvn´ı DSP s plovouc´ı ˇr´ adovou ˇ c´ arkou (Floating-point) TMS320C30 byl pˇredstaven na konci 80t´ ych let. C6x Prvn´ı z´ astupce rodiny C6x s pevnou ˇr´ adovou ˇ c´ arkou, tj. DSP TMS320C6201 byl zaveden v roce 1997. Na rozd´ıl od pˇredeˇsl´ ych fixed-point procesor˚ u (tj. C1x, C2x a C5x) byl C62x zaloˇzen na tzv. VLIW architektuˇre (st´ ale pouˇz´ıvan´ y oddˇ elen´ y prostor pro data a instrukce, jako u Harvard architektury). I Sign´ alov´ e procesory firmy Texas Instruments patˇr´ı do architektury VLIW (Very Long Instruction Word), tj. s velmi dlouh´ ym instrukˇ cn´ım slovem. Posledn´ı ˇrada DSP m´ a oznaˇ cen´ı TMS320C6000 (32bitov´ e DSP) a obsahuje 3 rodiny procesor˚ u: I I
plovouc´ı ˇr´ adov´ aˇ c´ arka (Floating-point) – obsahuje FPU (Floating-point Unit): C67xx, pevn´ a ˇr´ adov´ aˇ c´ arka (Fixed-point): C62xx a C64xx.
I
Prvn´ı procesor z t´ eto ˇrady byl TMS320C6202, vyuˇz´ıvaj´ıc´ı pouze paraleln´ıho zpracov´ an´ı instrukc´ı.
I
C64xx je doplnˇ en paraleln´ım zpracov´ an´ım dat.
I
C62xx je kompatibiln´ı s C64xx i C67xx (program urˇ cen´ y pro C62xx na nich funguje; opaˇ cnˇ e to neplat´ı).
Pozn.: Od ˇr´ıjna 2009 k dispozici tak´ e v´ıce-j´ adrov´ e DSP.
Rodina DSP TMS320C6000 firmy TI
I
Z´ astupci rodiny DSP TMS320C6000 maj´ı v podstatˇ e stejnou CPU, tak´ e naz´ yvanou j´ adro DSP.
I
CPU obsahuje architekturu velmi dlouh´ eho instrukˇ cn´ıho slova (VLIW – Very Long Instruction Word), kterou TI naz´ yvaj´ı VelociTI.
I
CPU vˇzdy naˇ c´ıt´ a aˇz osm 32bitov´ ych instrukc´ı najednou – CPU obsahuje 256bitovou sbˇ ernici pro intern´ı programovou pamˇ et’. Kaˇzd´ a skupina takov´ ych instrukc´ı se naz´ yv´ a instrukˇ cn´ı paket.
I
CPU obsahuje osm funkˇ cn´ıch jednotek (oznaˇ cen´ı L,S,D,M), 2 registrov´ e soubory (A0–Ax, B0–Bx), a dvˇ e datov´ e cesty (oznaˇ cen´ı A a B).
Pozn.: Vˇsechny jednotky nemus´ı b´ yt vyt´ıˇzeny; promˇ enn´ y poˇ cet 32bitov´ ych instrukc´ı – odliˇsnost od jin´ ych VLIW architektur.
Struktura sign´ alov´ eho procesoru (TI)
Obr´ azek: J´ adro procesoru s plovouc´ı ˇr´ adovou ˇ c´ arkou TMS320C6713.
Struktura sign´ alov´ eho procesoru C67xx Pozn.: N´ asleduj´ıc´ı plat´ı pro C6713 (m´ ame v laboratoˇri). I J´ adro DSP je rozdˇ eleno do 2 identick´ ych datov´ ych cest A, B. I Kaˇ zd´ a cesta obsahuje 16 registr˚ u pro obecn´ e pouˇzit´ı (32bitov´ e) a 4 funkˇ cn´ı jednotky: .L .S .D .M
aritmetick´ e operace, bitov´ e operace, ˇr´ızen´ı pˇr´ıstupu do pamˇ eti, hardwarov´ a n´ asobiˇ cka.
Kromˇ e sv´ e prim´ arn´ı funkce, jsou nˇ ekter´ e funkˇ cn´ı jednotky schopny prov´ adˇ et tak´ e aritmeticko-logick´ e operace (viz tabulka). Pozn.: Sign´ alov´ e procesory rodiny C64xx obsahuj´ı 32 registr˚ u pro obecn´ e pouˇzit´ı v kaˇzd´ e datov´ e cestˇ e. I
Tabulka: Vyuˇzit´ı funkˇ cn´ıch jednotek podle typu operace pro sign´ alov´ y procesor s pevnou ˇr´ adovou ˇ c´ arkou C64xx.
Typ operace
.L
.S
.D
32bitov´ e aritmetick´ e operace. Dvˇ e 16bitov´ e nebo ˇ ctyˇri 8bitov´ e aritmetick´ e operace. 40bitov´ e aritmetick´ e operace. 32bitov´ e logick´ e operace. 32 nebo 40bitov´ e posuny. 32bitov´ e operace s jednotliv´ ymi bity. N´ asoben´ı dvou 16bitov´ ych operand˚ u. Dvˇ e 16bitov´ e nebo ˇ ctyˇri 8bitov´ e n´ asoben´ı. Pˇr´ıstup do pamˇ eti – ˇ cten´ı/z´ apis. Vˇ etven´ı programu.
• • • • •
• •
•
• • •
•
.M
• • • •
J´ adro sign´ alov´ eho procesoru
I
I
Jednotky ze sousedn´ı datov´ e cesty mohou vyuˇz´ıvat i registrov´ y soubor jin´ e datov´ e cesty. Oznaˇ cen´ı sbˇ ernice: 1X a 2X (file cross). Vyˇsˇs´ı poˇ cet datov´ ych sbˇ ernic (32bitov´ e): I I
I
k uloˇzen´ı obsahu datov´ ych registr˚ u do pamˇ eti slouˇz´ı datov´ e sbˇ ernice ST1 a ST2 (store-to-memory), v opaˇ cn´ em smˇ eru pak sbˇ ernice LD1 a LD2 (load-from-memory).
Adresn´ı sbˇ ernice (32bitov´ e): I
Adresa poˇzadovan´ ych dat je generov´ ana jednou z jednotek .D na sbˇ ernici DA1 a DA2 (data address).
Pozn.: Sch´ ema sbˇ ernic a kˇr´ıˇzov´ ych cest na dalˇs´ı str´ ance. I On-chip pamˇ et’ pro program i data lze v nˇ ekter´ ych procesorech konfigurovat jako cache. I
Typick´ e perifern´ı obvody kaˇzd´ eho DSP jsou: ˇradiˇ c pˇr´ım´ eho pˇr´ıstupu do pamˇ eti DMA, ˇradiˇ c extern´ı pamˇ eti EMIF, s´ eriov´ e porty, ˇ casovaˇ ce/ˇ c´ıtaˇ ce, . . .
General-Purpose Register Files
Pozn.: Sbˇ ernice a kˇr´ıˇ zov´ e cesty mezi A a B [Tex07]
ÁÁÁÁ ÁÁÁÁÁÁ ÁÁÁÁÁÁ ÁÁÁÁÁ ÁÁÁÁ ÁÁÁÁÁ Á ÁÁÁÁÁ ÁÁÁÁÁ ÁÁÁÁÁ ÁÁÁÁÁÁ ÁÁÁÁÁÁ ÁÁÁÁÁ ÁÁÁÁÁÁ Á ÁÁÁÁÁ ÁÁÁÁÁ Á ÁÁÁÁÁ ÁÁÁÁÁ Á ÁÁÁÁ ÁÁÁÁÁ ÁÁÁÁÁÁ ÁÁÁÁÁÁ ÁÁÁÁÁ ÁÁÁÁÁÁ ÁÁÁÁÁ ÁÁÁÁ
Figure 2−1. TMS320C67x CPU Data Paths
src1
.L1
src2
dst long dst long src
LD1 32 MSB ST1
Data path A
long src long dst dst .S1 src1
8
8
8
8
src2
.M1
dst src1
src2
LD1 32 LSB DA1
DA2
.D1
.D2
dst src1 src2
src2 src1 dst
LD2 32 LSB
src2
.M2
src1 dst
src2
Data path B
src1 dst long dst
.S2
8
32 32
ÁÁÁÁ ÁÁÁÁ ÁÁÁÁ ÁÁÁÁ Á ÁÁÁÁ ÁÁÁÁ Á ÁÁÁÁ ÁÁÁÁ ÁÁÁÁ Á ÁÁÁÁ ÁÁÁÁ Á ÁÁÁÁ Á ÁÁÁÁ ÁÁÁÁ Á ÁÁÁÁ Á ÁÁÁÁ ÁÁÁÁ ÁÁÁÁ ÁÁÁÁ ÁÁÁÁ Á ÁÁÁÁ ÁÁÁÁ ÁÁÁÁ Á ÁÁÁÁ ÁÁÁÁ Á ÁÁÁÁ Á Register file A (A0−A15)
2X 1X
Register file B (B0−B15)
Pracovn´ı registry pro vˇseobecn´ e pouˇ zit´ı
I
Hodnoty, uloˇzen´ e v pracovn´ıch registrech obou sad (A i B) mohou pˇredstavovat: I I I
32bitov´ a data, 40bitov´ a data, ukazatele na operandy.
I
Nˇ ekter´ e registry jsou nav´ıc urˇ ceny pro podm´ınˇ en´ e vˇ etven´ı programu (viz uk´ azka programu) – testuje se, zda hodnota v registru je/nen´ı nulov´ a:
I
Nˇ ekter´ e registry mohou b´ yt nav´ıc pouˇzity pro kruhov´ e adresov´ an´ı (viz adresov´ an´ı):
I
I
A1, A2, B0, B1, B2.
A4 aˇz A7 a B4 aˇz B7.
Pozn.: 40bitov´ a data jsou vˇzdy uloˇzena v registrov´ em p´ aru (64 bit˚ u). 32 LSB jsou uloˇzeny v sud´ em registru, zb´ yvaj´ıc´ıch 8 bit˚ u je pak uloˇzeno ve vyˇsˇs´ım (lich´ em) registru. Tyto registrov´ e p´ ary jsou tak´ e vyuˇzity pro uloˇzen´ı hodnot floating-point Double Precision.
ˇ Casov´ an´ı funkce sign´ alov´ ych procesor˚ u
I
Funkce sign´ alov´ ych procesor˚ u je charakterizov´ ana trojic´ı ˇ casov´ ych interval˚ u:
Hodinov´ y cyklus (takt) je doba periody hodinov´ eho sign´ alu pro synchronizaci v´ ykonu j´ adra DSP. Strojov´ y cyklus odpov´ıd´ a dobˇ e proveden´ı jedn´ e f´ aze zˇretˇ ezen´ eho zpracov´ an´ı instrukc´ı (pipelining): I
urˇ cit´ y poˇ cet hodinov´ ych takt˚ u napˇr. pro dek´ odov´ an´ı operand˚ u, jejich seˇ cten´ı, generace adresy pro pˇr´ıstup do pamˇ eti, . . . I u DSP s architekturou VLIW trv´ a jeden strojov´ y cyklus pr´ avˇ e jeden hodinov´ y cyklus.
Instrukˇ cn´ı cyklus je doba proveden´ı jedn´ e instrukce nebo instrukˇ cn´ıho paketu. Instrukˇ cn´ı cyklus je z´ avisl´ y na typu instrukce. U VLIW (TI) jsou: I I I I I
jednoduch´ e aritmetick´ e operace sloˇzeny pouze z jednoho strojov´ eho cyklu, n´ asoben´ı (fixed-point): 2 cykly, n´ asoben´ı (single precision): 4 cykly, n´ asoben´ı (double precision): 9 cykl˚ u, pˇr´ıstup do pamˇ eti: 5 cykl˚ u.
Instrukˇ cn´ı paket architektury VLIW
I
Tvorbˇ e instrukˇ cn´ıch paket˚ u je podˇr´ızeno programov´ an´ı v jazyce symbolick´ ych adres DSP: I I
I
1 2 3 4 5 6
na jednotliv´ e pakety se lze odkazovat pomoc´ı n´ avˇ eˇst´ı (napˇr. u podm´ınˇ en´ ych ˇ ci nepodm´ınˇ en´ ych skok˚ u), u d´ılˇ c´ıch instrukc´ı v paketu to nelze. Cel´ y paket se ch´ ape jako celek a stejnˇ e tak se naˇ c´ıt´ a do ˇr´ıdic´ı jednotky pˇri v´ ykonu programu.
Z´ apis instrukˇ cn´ıho paketu v jazyce symbolick´ ych adres: loop : || || || ||
LDDW LDDW MPYSP MPYSP [ A1 ] B
. D1 . D2 . M1X . M2X . S2
A4++, A7 : A6 B4++, B7 : B6 A6 , B6 , A5 A7 , B7 , B5 loop
; ; ; ; ; ;
n´ a vˇ eˇ s t´ ı naplnˇ e n´ ı registr˚ u A7 : A6 naplnˇ e n´ ı registr˚ u B7 : B6 A5 = A6 x B6 B5 = A7 x B7 pokud A1 !=0 skoˇ c na loop
Obsah pˇredn´ aˇsky
´ Uvod do sign´ alov´ ych procesor˚ u
Paraleln´ı zpracov´ an´ı instrukc´ı a dat
Architektura sign´ alov´ ych procesor˚ u typu VLIW
Zp˚ usoby adresov´ an´ı operand˚ u u sign´ alov´ ych procesor˚ u
Programov´ an´ı sign´ alov´ ych procesor˚ u
Zp˚ usoby adresov´ an´ı operand˚ u
I
V´ ypoˇ cet adres pro ˇ cten´ı/z´ apis operand˚ u v registrech nebo v pamˇ eti prov´ ad´ı jednotka generov´ an´ı adres AGU (Address Generation Unit): I I I
I
ˇ ıseln´ vyuˇz´ıv´ a se celoˇ c´ıseln´ a aritmetika (tedy ne zlomkov´ y tvar – viz pˇredn´ aˇska C´ e soustavy v mikroprocesorov´ e technice), obsahuje vlastn´ı ALU jednotku(y) a datov´ e/ˇr´ıdic´ı registr(y) pro nastaven´ı zp˚ usobu adresov´ an´ı, obecnˇ e nejˇ castˇ ejˇs´ı zp˚ usoby u DSP jsou: line´ arn´ı adresov´ an´ı (pˇr´ım´ e/nepˇr´ım´ e), adresov´ an´ı modulo, adresov´ an´ı v bitovˇ e reverzn´ım poˇrad´ı.
Pˇr´ım´ e adresov´ an´ı operand˚ u: I
operand instrukce obsahuje pˇr´ımo zadanou adresu, kde v pamˇ eti se nach´ az´ı hodnota pro v´ ykon instrukce. Pozn.: U TMS320C6000 nen´ı tento zp˚ usob vyuˇzit. I
Nepˇr´ım´ e adresov´ an´ı hodnot operand˚ u: I I
operand instrukce obsahuje adresu, kde je v pamˇ eti uloˇzena hodnota pro v´ ykon instrukce. Je to tedy ukazatel na hodnotu, oznaˇ cen´ı: *nazev registru
Nepˇr´ım´ e adresov´ an´ı operand˚ u
I I
Jako ukazatel m˚ uˇze b´ yt pouˇzit libovoln´ y registr. Pˇri pouˇzit´ı instrukc´ı pro pˇr´ıstup do pamˇ eti je moˇzn´ e mˇ enit hodnotu ukazatele: I I I
inkrementace/dekrementace pˇred/po vykon´ an´ı adresace. relativn´ı zmˇ ena o vˇ etˇs´ı poˇ cet pozic, adresace bez zmˇ eny ukazatele.
Tabulka: Zmˇ ena hodnot ukazatel˚ u pˇri nepˇr´ım´ em adresov´ an´ı.
Zmˇ ena hodnoty
Pˇred adresac´ı
Po adresaci
Inkrementace Dekrementace Vˇ etˇs´ı zv´ yˇsen´ı Vˇ etˇs´ı zmenˇsen´ı Beze zmˇ eny
*++rx *--rx *+rx[konst] *-rx[konst] *rx
*rx++ *rx-*rx+[konst] *rx-[konst] *rx
Pˇr´ıklad nepˇr´ım´ eho adresov´ an´ı operand˚ u
Tabulka: Naˇ cten´ı dat z pamˇ eti do registru: LDW *A10, B1 (Load from memory), doba v´ ykonu 5 cykl˚ u.
N´ azev registru/pozice
Pˇred v´ ykonem
Po v´ ykonu instrukce
B1 A10 Pamˇ et’ov´ a pozice 0x100
0x0000 0000 0x0000 0100 0x0000 1234
0x0000 1234 0x0000 0100 0x0000 1234
Tabulka: Uloˇzen´ı hodnoty do pamˇ eti: STB A1, *--A10 (Store to memory), 3 cykly.
N´ azev registru/pozice A1 A10 Pamˇ et’ov´ a pozice 0x100 Pamˇ et’ov´ a pozice 0x101
Pˇred v´ ykonem 0x0012 0x0000 0x0000 0x1111
3456 0101 1111 1111
Po v´ ykonu instrukce 0x0012 0x0000 0x0012 0x1111
3456 0100 3456 1111
Adresov´ an´ı operand˚ u modulo
I
Kromˇ e line´ arn´ıho zp˚ usobu adresov´ an´ı (hodnota ukazatele se konstantnˇ e zvyˇsuje/sniˇzuje) je u DSP ˇ cast´ ym zp˚ usobem adresov´ an´ı tzv. adresov´ an´ı modulo (kruhov´ a pamˇ et’): I I I
I
v datov´ e pamˇ eti se vyhrad´ı blok urˇ cit´ e d´ elky a pouze v nˇ em se ”pohybuje” ukazatel operandu, aˇz ukazatel obsahuje nejvyˇsˇs´ı moˇznou adresu a instrukc´ı se provede dalˇs´ı zv´ yˇsen´ı, je do ukazuj´ıc´ıho registru automaticky nahr´ ana nejniˇzˇs´ı adresa ve vyˇ clenˇ en´ em bloku, velikost bloku je moˇzn´ e vybrat jen z pevnˇ e dan´ ych moˇznost´ı (viz registr AMR – Addressing Mode Register).
Pˇr´ıklad pouˇzit´ı kruhov´ e pamˇ eti: I I
periodick´ eˇ cten´ı koeficient˚ u filtru, dvojice ukazatel˚ u pro ukl´ ad´ an´ı pˇrijat´ ych/vyslan´ ych dat do pamˇ eti.
Adresov´ an´ı operand˚ u v bitovˇ e reverzn´ım poˇrad´ı
I
I
Generov´ an´ı adresy v bitovˇ e reverzn´ım poˇrad´ı je nejm´ enˇ e bˇ eˇzn´ y zp˚ usob adresov´ an´ı. Vyuˇz´ıv´ a se pouze u speci´ aln´ıch algoritm˚ u, kter´ e vstupn´ı/v´ ystupn´ı data pˇrerovn´ avaj´ı z bˇ eˇzn´ eho poˇrad´ı do jin´ eho. Pˇr´ıkladem je algoritmus rychl´ e Fourierovy transformace FFT (Fast Fourier Transform), kter´ a je ˇ casto realizov´ ana pomoc´ı DSP: I
jsou-li vstupn´ı vzorky pro v´ ypoˇ cet FFT v pˇrirozen´ em poˇrad´ı, tj. 0, 1, 2, . . ., je poˇrad´ı bit˚ u u indexu v´ ystupn´ıch vzork˚ u v obr´ acen´ em poˇrad´ı (LSB na prvn´ım m´ıstˇ e, MSB posledn´ı): 0002 =0 0012 =1 0102 =2 0112 =3 . . . 1112 =7. 0002 =0 1002 =4 0102 =2 1102 =6 . . . 1112 =7.
I
Z d˚ uvodu usnadnˇ en´ı v´ ypoˇ ctu FFT, obsahuj´ı DSP hardwarovou ˇ c´ ast, kter´ a realizuje toto ”pˇrehozen´ı” bez z´ asahu program´ atora – tj. prov´ ad´ı adresov´ an´ı v bitovˇ e reverzn´ım poˇrad´ı.
Princip algoritmu FFT x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(8) x(9) x(10) x(11) x(12) x(13) x(14) x(15)
W 0·0 16
× 1·0 W 16 × 2·0 W 16 × 3·0 W 16 × 4·0 W 16 × 5·0 W 16 × 6·0 W 16 × 7·0 W 16 × 0·1 W 16 × 1·1 W 16 × 2·1 W 16 × 3·1 W 16 × 4·1 W 16 × 5·1 W 16 × 6·1 W 16 × 7·1 W 16 ×
W 0·0 8
× 1·0 W 8 × 2·0 W 8 × 3·0 W 8 × 0·1 W 8 × 1·1 W 8 × 2·1 W 8 × 3·1 W 8 × 0·0 W 8 × 1·0 W 8 × 2·0 W 8 × 3·0 W 8 × 0·1 W 8 × 1·1 W 8 × 2·1 W 8 × 3·1 W 8 ×
W 0·0 4
× 1·0 W 4 × 0·1 W 4 × 1·1 W 4 × 0·0 W 4 × 1·0 W 4 × 0·1 W 4 × 1·1 W 4 × 0·0 W 4 × 1·0 W 4 × 0·1 W 4 × 1·1 W 4 × 0·0 W 4 × 1·0 W 4 × 0·1 W 4 × 1·1 W 4 ×
Obr´ azek: Struktura algoritmu pro v´ ypoˇ cet FFT (N = 16).
X(0) X(8) X(4) X(12) X(2) X(10) X(6) X(14) X(1) X(9) X(5) X(13) X(3) X(11) X(7) X(15)
Sign´ alov´ e procesory firmy Texas Instruments I
Dosaˇziteln´ y poˇ cetn´ı v´ ykon procesor˚ u se ud´ av´ a v jednotk´ ach:
MIPS MFLOPS MMACS BDTI
Milion Instructions Per Second pro fixed-point procesory. Million Floating point Operations Per Second pro floating-point procesory. Million Multiply-Accumulate Cycles per Second. Benchmarky od Berkeley Design Technology, Inc.
Tabulka: Poˇ cetn´ı v´ ykon vybran´ ych sign´ alov´ ych procesor˚ u.
Procesor
fCPU [MHz]
MIPS/MFLOPS
MMACS
C6203B C6455 C6713B (float.) C6727B (float.)
300 1 200 300 350 1 200 (1 j´ adro) 1 000/1 250 (1 j´ adro)
2 400 9 600 2 400 MIPS/1 800 MFLOPS 2 800 MIPS/2 100 MFLOPS 28 800 (3 j´ adra) 160 GFLOP1 (8 jader)
600 9 600 600 700 28 800 (3 j´ adra) 320 GMAC1 (8 jader)
C6474 C6678
C672x od roku 2005 3 j´ adra ˇr´ıjnu 2009 (TMS320CC6474) 8 jader listopad 2010 (TMS320C6678) 1
Patrnˇ e vztaˇzeno na instrukˇ cn´ı cyklus a nikoliv na sekundu?!
Benchmarky od Berkeley Design Technology, Inc. I
http://www.bdti.com/
I
BDTI DSP Kernel BenchmarksTM – nejrozˇs´ıˇrenˇ ejˇs´ı test algoritm˚ u sign´ alov´ eho zpracov´ an´ı dat: I I I I I I
I
speed: BDTImark2000, memory use: BDTImemMark2000, cost efficiency: BDTImark2000/$, area efficiency: BDTImark2000/mm2, energy efficiency: BDTImark2000/Watt. Obsahuje 12 nejpouˇz´ıvanˇ ejˇs´ıch algoritm˚ u DSP (viz tabulka). Ud´ av´ a ”sk´ ore” procesoru.
BDTI Video Kernel BenchmarksTM – soubor 6 algoritm˚ u pouˇz´ıvan´ ych pˇri zpracov´ an´ı video sign´ al˚ u; (uplatnˇ en´ı napˇr. set-top boxy, multimedi´ aln´ı mobiln´ı tel., dohledov´ e syst´ emy, video konference, . . .); BDTI poskytuje referenˇ cn´ı zdrojov´ e k´ ody i testovac´ı data: I I I I I I
Deblocking filter, 8x8 inverse discrete cosine transform, 4x4 inverse integer transform, Motion compensation, Motion estimation, Image resize.
I
BDTI Video Encoder/Decoder Benchmark – video.
I
BDTI H.264 Decoder Benchmark – video.
I
BDTI OFDM Receiver Benchmark – komunikace.
I
BDTI DQPSK Receiver Benchmark – komunikace.
Algoritmy pro BDTI DSP Kernel Benchmarks
Obr´ azek: Algoritmy pouˇz´ıvan´ e v testu BDTI DSP Kernel BenchmarksTM .
V´ ysledky BDTI DSP Kernel Benchmarks (floating-point, Nov-2012)
V´ ysledky BDTI DSP Kernel Benchmarks (floating-point, Nov-2012)
V´ ysledky BDTI DSP Kernel Benchmarks (fixed-point, Nov-2012)
V´ ysledky BDTI DSP Kernel Benchmarks (fixed-point, Nov-2012)
Obsah pˇredn´ aˇsky
´ Uvod do sign´ alov´ ych procesor˚ u
Paraleln´ı zpracov´ an´ı instrukc´ı a dat
Architektura sign´ alov´ ych procesor˚ u typu VLIW
Zp˚ usoby adresov´ an´ı operand˚ u u sign´ alov´ ych procesor˚ u
Programov´ an´ı sign´ alov´ ych procesor˚ u
Programov´ an´ı sign´ alov´ ych procesor˚ u I
I
Na rozd´ıl od programov´ an´ı 8bitov´ ych mikrokontrol´ er˚ u je v´ yvoj aplikac´ı pro sign´ alov´ e procesory zahajov´ an vˇzdy ve vyˇsˇs´ım jazyce. Postup pˇri v´ yvoji nov´ e aplikace: (1) Naprogramovat celou aplikaci v jazyce C. 1 2 3 4 5 6 7 8 9 10
i n t main ( short short int y
void ){ a = 0 x40 ; b = 0 x20 ; ;
// d e k l a r a c e l o k ´ a l n´ı c h promˇ e nn´ y ch
y = ( a + b ) << 1 ;
// y = 2 x ( a+b )
while ( 1 ) ; return ( 1 ) ;
// n e k o n eˇ cn´ a smyˇ c ka // v ´ y s t u p n´ı h o d n o t a f u n k c e = 1
}
(2) Prov´ est anal´ yzu real-time zpracov´ an´ı: ANO Konec v´ yvoje aplikace. NE Vyuˇz´ıt optimalizaˇ cn´ı n´ astroje v´ yvojov´ eho prostˇred´ı, pˇr´ıp. → bod (3).
(3) Pˇreprogramov´ an´ı ˇ casovˇ e n´ aroˇ cn´ eˇ c´ asti pomoc´ı speci´ aln´ıch funkc´ı pro pˇrekladaˇ c, pˇr´ıp. pomoc´ı tzv. line´ arn´ıho jazyka symbolick´ ych adres. (4) Prov´ est anal´ yzu real-time zpracov´ an´ı: ANO Konec v´ yvoje aplikace. NE Bod (5).
(5) Pˇreprogramovat kritickou pas´ aˇz v jazyce symbolick´ ych adres.
Programov´ an´ı v jazyce C
I
Pˇri programov´ an´ı v jazyce C lze kombinovat nˇ ekolik moˇznost´ı: I I I I
I
1 2 3
cel´ y k´ od v jazyce C, pouˇzit´ı speci´ aln´ıch funkc´ı pˇrekladaˇ ce tzv. intrinsic, kritick´ e pas´ aˇze pˇrepsat pomoc´ı line´ arn´ıho JSA (soubory *.sa) a ty volat z jazyka C, kritick´ e pas´ aˇze pˇrepsat pomoc´ı funkc´ı v JSA (*.asm) a ty volat z jazyka C.
Speci´ aln´ı funkce pˇrekladaˇ ce intrinsic – funkce pˇrekladaˇ c zamˇ en´ı jednou, pˇr´ıp. nˇ ekolika instrukcemi:
i n t abs ( i n t src ) ; i n t add2 ( i n t src1 , i n t src2 ) ; i n t mpy ( i n t src1 , i n t src2 ) ;
// a b s o l u t n´ı h o d n o t a // s o u ˇ cet // n ´ a s o b e n´ı
Kombinace zdrojov´ eho k´ odu v JSA a v jazyce C
I
I
Obecnˇ e plat´ı z´ asada, ˇze vyˇsˇs´ı programovac´ı jazyk C se pˇri programov´ an´ı DSP pouˇz´ıv´ a pro inicializaci aplikace a pro ”nekritick´ e” pas´ aˇze k´ odu (z pohledu velikosti nebo rychlosti). Kritick´ eˇ c´ asti je vhodn´ e z hlediska absolutn´ı kontroly rychlosti a velikosti pˇreloˇzen´ eho k´ odu programovat v jazyce symbolick´ ych adres, pˇr´ıp. v tzv. line´ arn´ım JSA: I
funkce v JSA i v C pouˇz´ıvaj´ı stejn´ e registry. Mohou si tak´ e vymˇ en ˇovat parametry/v´ ysledn´ e hodnoty, I n´ azvy veˇsker´ ych promˇ enn´ ych ˇ ci funkc´ı definovan´ ych v C mus´ı b´ yt v JSA uvozeny ” ”, Pozor registr B3 vˇzdy obsahuje n´ avratovou adresu z funkce v JSA. 1 2 3 4 5
i n t main ( v o i d ) { ... y = asmFunction ( a , b ) ; ... }
1 2 3
_asmFunction : ... B B3
// f u n k c e u l o ˇz e n ´ a v souboru . c // v o l ´ a n´ı f u n k c e v JSA
; funkce uloˇ z en´ a v souboru . asm ; tˇ e lo funkce ; skok na n´ a vratovou adresu
Vstupn´ı parametry/v´ ystupn´ı hodnota funkce v JSA
I
Funkce v JSA m˚ uˇze obsahovat aˇz 10 vstupn´ıch parametr˚ u. Ty jsou vˇzdy postupnˇ e uloˇzeny v registrech A4, B4, A6, B6, A8, B8, A10, B10, A12 a B12.
I
Pokud funkce vrac´ı hodnotu, je nutn´ e ji pˇred n´ avratem z funkce uloˇzit do registru A4.
I
Funkce se ukonˇ c´ı skokem na n´ avratovou adresu, tj. B B3.
Pˇr´ıklad Jak´ e hodnoty obsahuj´ı registry A4 a B4 pˇred a po vykon´ an´ı funkce y = asmFunction( a, b ), kter´ a realizuje operaci y = 2 · (a + b)? Necht’ hodnoty a = 64 a b = 32.
Vol´ an´ı funkce v JSA z jazyka C
1 2 3 4 5 6 7 8 9 10 11 12 13
1 2 3 4 5 6 7 8
e x t e r n i n t asmFunction ( s h o r t , s h o r t ) ; i n t main ( short short int y
void ){ a = 0 x40 ; b = 0 x20 ; ;
// SOUBOR : f 1 . c // p r o t o t y p f u n k c e // k´ od f u n k c e v j i n´ em souboru
// d e k l a r a c e l o k ´ a l n´ı c h promˇ e nn´ y ch ; 8 b i t o v ´ e // 32 b i t o v ´ a promˇ e nn´ a
y = asmFunction ( a , b ) ;
// v o l ´ a n´ı f u n k c e v JSA
while ( 1 ) ; return ( 1 ) ;
// n e k o n eˇ cn´ a smyˇ c ka // v ´ y s t u p n´ı h o d n o t a f u n k c e = 1
}
. global _asmFunction _asmFunction : ADD . D1x SHL . S1 || B . S2 NOP 4
A4 , B4 , A4 A4 , 1 , A4 B3
; SOUBOR : f2 . asm ; definice glob´ a ln´ ı ho parametru − NUTN ´ E ; ; ; ; ;
volan´ a funkce A4 + B4 = A4 A4 << 1 = A4 skok na n´ a vratovou adresu , tj . ” na ” registr B3 ˇ c asov´ a n´ ı instrukce B , kter´ a trv´ a 5 cykl˚ u
Line´ arn´ı jazyk symbolick´ ych adres TMS320C6000
I
Pˇri programov´ an´ı v JSA sign´ alov´ eho procesoru TMS320C6000 je potˇreba specifikovat n´ azvy registr˚ u a pˇredevˇs´ım respektovat ˇ casov´ an´ı jednotliv´ ych instrukc´ı: I I
I
napˇr. instrukci pro pˇr´ıstup do pamˇ eti je nutn´ e doplnit 4 instrukce NOP, pˇr´ıstup do pamˇ eti trv´ a 5 strojov´ ych cykl˚ u; 1. cyklus @ spuˇstˇ en´ı instrukce; naˇ cten´ a/uloˇzen´ a hodnota je k dispozici za dalˇs´ı 4 cykly.
Line´ arn´ı JSA je jak´ ymsi mezikrokem mezi JSA a jazykem C. Umoˇzn ˇuje snadnˇ ejˇs´ı pr´ aci pro program´ atora, ale ponech´ av´ a mu znaˇ cnou kontrolu nad v´ ysledn´ ym k´ odem: I I I
je moˇzn´ e pouˇz´ıvat symbolick´ e n´ azvy registr˚ u, vˇ cetnˇ e pˇred´ avan´ ych parametr˚ u (podobnˇ e jako promˇ enn´ e v jazyce C), spr´ avn´ eˇ casov´ an´ı v´ ykonu instrukc´ı prov´ ad´ı pˇrekladaˇ c automaticky, programuje se pˇr´ımo pomoc´ı instrukc´ı bez nutnosti specifikovat funkˇ cn´ı jednotku. K´ od je pˇrekladaˇ cem optimalizov´ an mezi voln´ e jednotky.
Uk´ azka aplikace v line´ arn´ım jazyce symbolick´ ych adres
I
Zdrojov´ y k´ od uloˇzen´ y v souboru s koncovkou *.sa mus´ı obsahovat nˇ ekolik ˇ c´ ast´ı: I I I I I I
1 2 3 4 5 6 7 8 9 10 11
identifikace symbolu/funkce definovan´ eho v jin´ em zdrojov´ em souboru pomoc´ı direktivy .global, specifikace zaˇ c´ atku funkce prostˇrednictv´ım direktivy .cproc, konec funkce: .endproc, pˇriˇrazen´ı vstupn´ıch hodnot promˇ enn´ ym za .cproc, deklarace promˇ enn´ ych (symbolick´ e oznaˇ cen´ı registr˚ u): .reg, n´ avratov´ a hodnota funkce + ukonˇ cen´ı funkce: .return.
. global _asmFunction _asmFunction : . reg y ADD SHL
. cproc a , b
a, b, y y, 1, y
. return y . endproc
; SOUBOR : f2 . sa ; definice glob´ a ln´ ı ho parametru − NUTN ´ E ; pˇ r iˇ r azen´ ı hodnot od vstupn´ ı ch operand˚ u ; ekvivalent lok´ a ln´ ı promˇ e nn´ e ; a + b = y ; y << 1 = y ; funkce vrac´ ı hodnotu y ; konec funkce v LJSA
Kombinace programovac´ıch jazyk˚ u Tabulka: Srovn´ an´ı poˇ cetn´ı n´ aroˇ cnosti 8bodov´ eho souˇ ctu souˇ cin˚ u (SoP).
Program. jazyk
ˇ ıseln´ C´ a reprezentace
Poˇ cty cykl˚ u
Jazyk C Jazyk C LJSA LJSA JSA
Floating-point Fixed-point Floating-point Fixed-point Floating-point, VLIW
404 352 203 166 50
Tabulka: Optimalizaˇ cn´ı n´ astroje v prostˇred´ı Code Composer Studio (1-D FFT, 1-D DCT).
Algoritmus
M´ıra optimalizace
Poˇ cty cykl˚ u
FFT, N = 8 FFT, N = 8 FFT, N = 8
– -o0 -o1
855 642 288
DCT, C, N = 8 DCT, C, N = 8 DCT, C, N = 8
– -o0 -o1
651 591 214
DCT, LJSA, N = 8 DCT, LJSA, N = 8 DCT, LJSA, N = 8
– -o0 -o1
267 263 90
Implementace MAC – Multiply-Accumulate (pˇrevzato: BROOKERS, M., WARD, W.)
Fast MAC using Natural C
? J @5G(H7DFG(.(n ? J @\G(H O DF]M? J @5G(H O =5]M- =7H5.(@7o5=7H p qd- =7H5- ]M? J @5G(H7r(o5Dtsvu N
Memory A0
..
A15
B0 .D1
.D2
.M1
.M2
.L1
.L2
.S1
.S2
Controller/Decoder
..
B15
? @7Adn - s\u N -Mwv.(@5o7=7H N - [\[7pCq r(o5Dt[\sCD j - k O = j - k N7xzy NOO >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>O 4769698#L N 8#P 8#Q#)R456;698 Q#S+T!Q#4 47)+)!UWV )+X Y!Z([\[\] Y!^(L Y+_ `` 47)+)!UWV )+a b!Z([\[\] b!^(L b+_ `` 038#c#:d8eV 03X(fgY!_(] b+_(] Y+h `` 038#c#:d8eV 03a(fgY!^(] b+^(] b+h `` Y+)+)!:#8eV 47X Y!h(] Y+i(] Y+i `` Y+)+)!:#8eV 47a b!h(] b+i(] b+i ` `Mj Y+X(klb V :#a 456;698 ` `Mj Y+X(kl:#m+b V :#X Y!X(] X(] Y!X NOO >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>O
Implementace MAC
The Core of DSP : Sum of Products 40
Mult .M
The ’C6000 Designed to handle DSP’s math-intensive calculations
ALU .L
y = ∑
an * xn
n = 1
MPY ADD
.M .L
Note: You don’t have to specify functional units (.M or .L)
Where are the variables?
a, x, prod y, prod, y
Implementace MAC
Working Variables : The Register File
16 registers
Register File A
40
a x
.M
prod y
.L
y = ∑
an * xn
n = 1
MPY ADD
.M .L
.. . 32-bits How are the number of iterations specified?
a, x, prod y, prod, y
Implementace MAC
Loops: Coding on a RISC Processor 1. Program flow: the branch instruction B
loop
2. Initialization: setting the loop count MVK
40, cnt
3. Decrement: subtract 1 from the loop counter SUB
cnt, 1, cnt
Implementace MAC
The “S” Unit : For Standard Operations
16 registers
Register File A a x cnt prod y
.. .
40
y = ∑
.S .M .L
an * xn
n = 1
MVK
.S
40, cnt
MPY
.M
a, x, prod
loop: ADD
.L
y, prod, y
SUB
.L
cnt, 1, cnt
B
.S
loop
32-bits How is the loop terminated?
Implementace MAC
Conditional Instruction Execution To minimize branching, all instructions are conditional
[condition]
B
loop
Execution based on [zero/non-zero] value of specified variable Code Syntax
Execute if:
[ cnt ] [ !cnt ]
cnt ≠ 0 cnt = 0
Implementace MAC
Loop Control via Conditional Branch Register File A a x cnt prod y
.. .
40
y = ∑
.S .M
an * xn
n = 1
MVK
.S
40, cnt
MPY
.M
a, x, prod
loop:
.L [cnt]
ADD
.L
y, prod, y
SUB
.L
cnt, 1, cnt
B
.S
loop
32-bits How are the a and x array values brought in from memory?
Implementace MAC
Memory Access via “.D” Unit
16 registers
Register File A a x cnt prod y *ap *xp *yp
40
y = ∑ .S .M
Data Memory: x(40), a(40), y
MVK
.S
40, cnt
LDH
.D
*ap
,a
LDH
.D
*xp
,x
MPY
.M
a, x, prod
ADD
.L
y, prod, y
SUB
.L
cnt, 1, cnt
B
.S
loop
loop:
.L .D
an * xn
n = 1
[cnt]
How do we increment through the arrays?
Implementace MAC
Auto-Increment of Pointers
16 registers
Register File A a x cnt prod y *ap *xp *yp
40
y = ∑ .S .M
Data Memory: x(40), a(40), y
MVK
.S
40, cnt
LDH
.D
*ap++, a *xp++, x
loop:
.L .D
an * xn
n = 1
[cnt]
LDH
.D
MPY
.M
a, x, prod
ADD
.L
y, prod, y
SUB
.L
cnt, 1, cnt
B
.S
loop
How do we store results back to memory?
Implementace MAC
Storing Results Back to Memory Register File A a x cnt prod y *ap *xp *yp
40
y = ∑ .S .M
Data Memory: x(40), a(40), y
MVK
.S
40, cnt
LDH
.D
*ap++, a
LDH
.D
*xp++, x
MPY
.M
a, x, prod
ADD
.L
y, prod, y
SUB
.L
cnt, 1, cnt
B
.S
loop
STW
.D
y, *yp
loop:
.L .D
an * xn
n = 1
[cnt]