Algoritmická syntéza Rychlý návrh DSP systémů Ing. Jakub Št astný, Ph.D.
http://amber.feld.cvut.cz/fpga/prednasky/hll_synteza/hlls.html
Osnova přednášky 1 Motivace Vývoj polovodičů Konverze DSP algoritmu na křemík 2 Syntéza Typy syntézy Syntéza na vyšší úrovni Příklad
Osnova přednášky 1 Motivace Vývoj polovodičů Konverze DSP algoritmu na křemík 2 Syntéza Typy syntézy Syntéza na vyšší úrovni Příklad
Motivace
1970 prudký nárůst výroby polovodičů, začátek digitální generace". Katalyzátor: příchod prvních CAD nástrojů pro návrh IC. 1980 dekáda dynamických pamětí. Vyladění technologie prudký vzrůst kapacit a pokles cen. Katalyzátor: nástroje na simulace na tranzistorové úrovni umožnily konečně přesně modelovat základní pamět ovou buňku. 1990 éra složitých mikroprocesorů. Katalyzátor: návrháři zahodili nástroje pro kreslení schématu a začali používat logickou syntézu a VHDL či Verilog. 2000 úsvit složitých DSP systémů. Konvenční techniky návrhu začínají ztrácet dech co pomůže dnes?
Proč DSP... řečové technologie (VoIP,...) multimediální a herní systémy bezdrátové sítě naváděcí a navigační systémy biometrie, autentizace další aplikace
Ještě včera nám stačily DSP procesory... Obrázek převzat z literatury citované na WWW stránce.
Alternativy dříve DSP procesory dnes FPGA a ASIC obvody použití procesoru přizpůsobím algoritmus CPU, jeho architektuře návrh zákaznického obvodu přizpůsobím architekturu algoritmu, jeho potřebám ALE: návrh hardware je pomalejší, než návrh software...
Důvody pro specifické řešení Mám DSP algoritmus zpracování jednoho vzorku = N operací dosažitelná f s? velice zjednodušený model DSP procesor f clk dané výrobcem M hypotet. univerz. výpočetních jednotek odhad f smax = f clk M N ALE: M a f clk nejsou nezávislé ALE: vytížení jednotek plánování instrukcí ALE: spotřeba i to co nepoužívám žere"
Důvody pro specifické řešení Mám DSP algoritmus zpracování jednoho vzorku = N operací dosažitelná f s? velice zjednodušený model DSP procesor f clk dané výrobcem M hypotet. univerz. výpočetních jednotek odhad f smax = f clk M N ALE: M a f clk nejsou nezávislé ALE: vytížení jednotek plánování instrukcí ALE: spotřeba i to co nepoužívám žere"
Důvody pro specifické řešení 2 Mám ten samý DSP algoritmus zpracování jednoho vzorku = N operací dosažitelná f s? Zákaznická implementace f clk je omezené mojí implementací moje implementace je omezená pouze vlastní paralelizovatelností problému více volných parametrů návrhu volím nezávislé f clk a počet funkčních jednotek optimalizuji architekturu na míru algoritmu menší spotřeba/velikost/cena/vyšší výkon/vyšší spolehlivost/další specielní vlastnost (DPA/SPA), atd. ALE: extrémní cena zákaznického návrhu
Důvody pro specifické řešení 3 příklad: filtrace ve spektru. Požadovaná šířka slova DSP systému minimálně 17 bitů, další bity se utopí v šumu v analogové části systému. out = IFFT(filtrace(FFT(in))) DSP CPU 16b CPU dvojnásobná přesnost, 32b skutečná šířka slova 32b CPU jednoduchá přesnost, 32b skutečná šířka realizace třemi funkcemi, sekvenční provádění FFT, filtrace, IFFT aplikačně-specifické řešení 17b široké sběrnice (17b + je rychlejší, než 32b), možno dosáhnout menší spotřeby, plochy čipu, výrobní ceny
Návrh SW vs. návrh HW
Pořadí kroků Standardní proces návrhu křemíku implementace modelu v Matlabu, ověření funkce modelu HW-SW partitioning konverze modelu na RTL úroveň RTL = Register Transfer Level logická syntéza do technologie Obrázek převzat z literatury citované na WWW stránce
Standardní proces návrhu křemíku 2 Pořadí kroků ruční náročná konverze Matlabového modelu DSP systému do RTL kódu velká koncepční mezera mezi Matlabem a VHDL kódem zanesení změny specifikace do projektu je časově náročné návrhář volí architekturu a implementuje detaily problém alternativní implementace
Pořadí kroků Standardní proces návrhu křemíku 3 RTL kód je platformově závislý FPGA vs. ASIC implementace změna v architektuře všechno předělat!! dlouhý a náročný proces riziko chyb ale proč? nejde to jednodušeji?
Vývoj HW vs. vývoj SW Návrh software výstupem spustitelný soubor jedno prostředí pro všechny kroky, pushbutton flow" optimalizujeme na rychlost běhu programu (někdy velikost) velké pomocné paměti nejsou problém Návrh hardware výstupem kus křemíku hromada software (design capture, syntéza, place&route, extrakce parametrů, a+d simulace, atd.). dlouhý postup. optimalizujeme na propustnost, latenci, velikost, rychlost, spotřebu, routovatelnost velké pomocné paměti? Jen to ne!
Vývoj HW vs. vývoj SW Návrh software výstupem spustitelný soubor jedno prostředí pro všechny kroky, pushbutton flow" optimalizujeme na rychlost běhu programu (někdy velikost) velké pomocné paměti nejsou problém Návrh hardware výstupem kus křemíku hromada software (design capture, syntéza, place&route, extrakce parametrů, a+d simulace, atd.). dlouhý postup. optimalizujeme na propustnost, latenci, velikost, rychlost, spotřebu, routovatelnost velké pomocné paměti? Jen to ne!
Vývoj HW vs. vývoj SW Návrh software výstupem spustitelný soubor jedno prostředí pro všechny kroky, pushbutton flow" optimalizujeme na rychlost běhu programu (někdy velikost) velké pomocné paměti nejsou problém Návrh hardware výstupem kus křemíku hromada software (design capture, syntéza, place&route, extrakce parametrů, a+d simulace, atd.). dlouhý postup. optimalizujeme na propustnost, latenci, velikost, rychlost, spotřebu, routovatelnost velké pomocné paměti? Jen to ne!
Vývoj HW vs. vývoj SW Návrh software výstupem spustitelný soubor jedno prostředí pro všechny kroky, pushbutton flow" optimalizujeme na rychlost běhu programu (někdy velikost) velké pomocné paměti nejsou problém Návrh hardware výstupem kus křemíku hromada software (design capture, syntéza, place&route, extrakce parametrů, a+d simulace, atd.). dlouhý postup. optimalizujeme na propustnost, latenci, velikost, rychlost, spotřebu, routovatelnost velké pomocné paměti? Jen to ne!
Vývoj HW vs. vývoj SW 2 Návrh hardware Návrh software bezčasový návrh, implicitní FSM, možnost rozvinutí smyček, není problém, behaviorální úroveň explicitní hodiny i automaty, clock skew, resynchronizace mezi doménami, vyvážení hodinového stromu, parazitní kapacity..., EMI, setup + hold violations, technologické záležitosti, RTL úroveň
Proč je ten návrh hardware tak složitý? Nedá se to alespoň někdy zjednodušit?
Syntéza
Osnova přednášky 1 Motivace Vývoj polovodičů Konverze DSP algoritmu na křemík 2 Syntéza Typy syntézy Syntéza na vyšší úrovni Příklad
Definice problému úzké hrdlo konverze algoritmu do RTL co to zautomatizovat? už něco takového máme... syntéza z RTL hradla syntéza = přechod na nižší úroveň abstrakce
Logická syntéza konverze RTL do hradel pro digitální obvody celkem dobře zvládnutá široce přijatá nejjednodušší, ale už NP-těžká!
Algoritmická syntéza tzv. syntéza na vyšší úrovni, High Level Synthesis, HL Synth. to je to ono! algoritmický popis naprogramovaný v Matlabu (i Simulink i obyčejný m-file), v derivátu C (ANSI C, Handel C, System C) či v System Verilogu je zkompilován do RTL popisu existuje mnoho softwarových nástrojů
Systémová syntéza generování celého systému se všemi algoritmy obtížná úloha mizivá SW podpora součástí je HW-SW partitioning komerčně není široce využívaná
Kdy je to výhodné? Kdy si to zjednodušíme 1 mlátička" na data 2 synchronní výpočet 3 dobře paralelizovatelný algoritmus 4 nestandardní šířky dat 5 zpracování dat trvá déle než jejich přenos Př: DSP výpočty, kryptografie, poč. grafika, sít ové protokoly IP6; VoIP, obecně numericky náročné úkoly Nové pořadí kroků High Level Synthesis
Syntéza na vyšší úrovni Výhody odladěný model abstraktní algoritmus zůstává zdrojovým kódem pro celý návrh. Změny v algoritmu se mohou rychle šířit do křemíku není třeba ručně přepisovat RTL. rychlost vlastního procesu vyšší produktivita (složitější obvod za kratší dobu) spolehlivý a definovaný proces konverze bez náhodných 1 chyb omezí vliv lidského faktoru, možnost průzkumu architektonických variant (trade-off analýza, limitace na zdroje), lepší přehled o HW zdrojích použitých algoritmem, automatická dokumentace celého procesu návrhu, dostupnost IC technologie většímu okruhu lidí. 1 Už jste někdy viděli software úplně bez chyb? :-)
Syntéza na vyšší úrovni Nevýhody pečlivá analýza a kvalitní ruční práce je lepší, na rozdíl od software zde neexistuje řešení na stisk jednoho tlačítka, použitelné pouze pro omezenou třídu problémů (velké DSP systémy apod.), spíše na návrh akcelerátorů pro pomalé operace nelze vysyntetizovat cokoliv (je třeba se naučit nový jazyk) návrháři stále musí rozumět hardware můj osobní názor: tak jako chytré SW kompilátory 100% neodstranily nutnost psát kritické věci v asembleru, ani syntéza na vyšší úrovni nikdy 100% neodstraní ruční práci Všechny nevýhody dnes může rychle přebít magická zkratka TTM" Time To Market...
Výstup syntézního algoritmu obvykle to bývá RTL kód, ne netlist následuje normální syntéza z RTL kódu generování RTL je výhodné, protože možnost ručního zásahu do výsledku návrháři jsou konzervativní znovupoužití existujících maker znovupoužití existujícího flow" existující nástroje na DFT a příkonovou analýzu
Jak to funguje?
Zadání, kompilace do vnitřní formy Popis FIR filtru y[n] = 0; for (i=0; i<5; i++) y[n] += x[n i]*b[i];
Zadání, kompilace do vnitřní formy Popis FIR filtru y[n] = 0; for (i=0; i<5; i++) y[n] += x[n i]*b[i]; Graf řízení Start = Graf toku dat y b x 5 I 1 > control I y f > t Konec
Optimalizace eliminace mrtvého kódu propagace konstant eliminace společných podvýrazů rozbalení procedur rozbalení smyček HW specifické optimalizace ( /+ konst., / 2 n ) Původní DFG 5 I 1 > control I y y b x
Optimalizace 2 eliminace mrtvého kódu propagace konstant eliminace společných podvýrazů rozbalení procedur rozbalení smyček HW specifické optimalizace Optimalizovaný DFG b0 x0b1 x1b2 x2b3 x3b4 x4 y
Plánování operací Plánování = přiřazení operací ke skutečným časovým okamžikům (hodinovým cyklům) běhu algoritmu za podmínek daných omezeními dostupných zdrojů. Máme k dispozici 2 násobičky 1 sčítačku Plánování FIRu b0 x0b1 x1b2 x2b3 x3b4 x4 y
Plánování operací 2 Plánování = přiřazení operací ke skutečným časovým okamžikům (hodinovým cyklům) běhu algoritmu za podmínek daných omezeními dostupných zdrojů. Máme k dispozici Plánování FIRu ck1 ck2 ck3 ck4 b0 x0b1 x1b2 x2b3 x3b4 x4 2 násobičky 1 sčítačku ck5 y
Alokace zdrojů Alokace = přiřazení operací ke skutečným hardwarovým prostředkům v už daných časových okamžicích; současně se snažíme o minimalizaci množství zdrojů. Nealokujeme jenom funkční jednotky, ale i registry (pro mezivýsledky) a sběrnice (přenos dat). Alokace jednotek FIRu b0 x0b1 x1b2 x2b3 x3b4 x4 ck1 ck2 ck3 ck4 ck5 y
Alokace zdrojů 2 Alokace = přiřazení operací ke skutečným hardwarovým prostředkům v už daných časových okamžicích; současně se snažíme o minimalizaci množství zdrojů. Nealokujeme jenom funkční jednotky, ale i registry (pro mezivýsledky) a sběrnice (přenos dat). Alokace jednotek FIRu b0 x0b1 x1b2 x2b3 x3b4 x4 M1 M2 ck1 x y x y z z y M1 M2 ck2 x x y x y A z z z y ck3 x A z y M1 ck4 x x y A z z y ck5 x A z y
Vygenerovaná datová cesta vsechny vstupni signaly maji sirku N bitu b0 b2 b4 x0 x2 x4 b1 b3 x1 x3 selbm2 x y x y z M1 M2 z 0 1 0 1 00 01 11 00 01 11 0 1 0 1 selbm1 a_r po nasobeni sirka 2N bitu selax selay x wrena reseta A z y sirka 2N+1 bitu z
Syntéza řadiče Syntéza řadiče = na základě vygenerované datové cesty je vytvořen řadič, který bude spouštět odpovídající sekvenci operací. Fáze řízení FIRu b0 x0b1 x1b2 x2b3 x3b4 x4 M1 M2 ck1 x y x y z z y M1 M2 ck2 x x y x y A z z z y ck3 x A z y M1 ck4 x x y A z z y ck5 x A z y
Syntéza řadiče 2 Syntéza řadiče = na základě vygenerované datové cesty je vytvořen řadič, který bude spouštět odpovídající sekvenci operací. Fáze řízení FIRu reset b0 x0b1 x1b2 x2b3 x3b4 x4 M1 M2 ck1 x y x y z z y M1 x y ck2 x A z z y ck3 x A z ck4 ck5 done M2 x y x A z y M1 x y z z y x A z y FSM reset_a=1 selbm1=00 selbm2=0 selbm1=01 selbm2=1 wrena=1 selax=0 selay=0 selbm2=11 wrena=1 selax=1 selay=0 wrena=1 selax=0 selay=1 wrena=1 selax=0 selay=0 donef=1
Stavový diagram řadiče
Statistika celého procesu Srovnejte Popis FIR filtru y[n] = 0; for (i=0; i<5; i++) y[n] += x[n i]*b[i]; Generované VHDL FIRu datapath.vhd 92 řádek kódu fsm.vhd 100 řádek kódu dig_top_fir.vhd 125 řádek kódu Technologické schema nepromítám, nevešlo se mi na slajd (vysoká složitost!).
Schema celého systému
Výsledné HW parametry Lepší číslo je červeně. Parametr Já SPARK fclk 51MHz 66MHz (ALE!) clk/vzorek 7 56 fsmax 7.3MHz 1.2MHz DFFs 33 193 LUTs 250 328 eq. gates 2686 4742 čas návrhu 2 hod. 5 min. Ale pozor: SPARK je akademický nástroj a není dokončen.