Beágyazott elektronikus rendszerek (P-ITEEA_0033)
Jelfeldolgozó processzorok (DSP) Rekonfigurálható eszközök (FPGA) 5. előadás 2015. március 11.
Analóg jelfeldolgozás Analóg bejövő jelek (egy folyamat mért értékei)
Analóg jelfeldolgozó egység
Analóg kimenő jelek beavatkozók felé
• Folyamatirányítás • Tipikus feladatok – – – – –
Szűrők Szorzók Integrátor Diferenciáló PID szabályzó
• Diszkret analóg komonensek (csavarhúzóval hangolható)
• One instruction per tap in the TMS320C25
• Image processing
• Video and audio I/O (analog and/or digital) • Watchdog
DSP gyártók • Texas Instruments – TMS320 DSP család
• Analog Devices – SHARC
• Freescale (Motorola) – Freescale
Texas C6000 sorozat
Texas TMS320C DSP család Típus
fix-lebegő
jellemzők
státusz
TMS320C1x Fix pontos
Első DSP
Csak military
TMS320C2x Fix pontos
Első nagy szériás DSP
élő
TMS320C3x Lebegő pontos
Első lebegőpontos DSP, DMA
élő
TMS320C4x Lebegő pontos
4 db kommunikációs port, másik DSP felé. DSP tömb építése. , DMA
kifutó
TMS320C5x Fix pontos
Első statikus CMOS design: low power
élő
TMS320C6x Fix-lebegő
Mai legmodernebb DSP-k. Nagyon széles utasítás szó (256 bit).
élő
TMS320C8x Lebegő pontos
Első multimédiás 4 db TMS320C4x + egy RISC processzor (nem jött be, túl drága volt)
Csak military
Texas C6000 DSP család
A TMS320C6415-ös gyártási paraméterei • 600MHz – 1.2 GHz Clock Rate • Power consumption @1GHz ~1.5W • 532-Pin Ball Grid Array
A C6415 architektúrája memória buszok
soros portok
A C64x processzor magja I: Regiszter bankok • Két regiszter bank (A,B) • 32db 32bites regiszter mindkét bankban • Három regiszter típus – Feltétel regiszter (3 db/regiszterbank) – Körkörös címregiszter (4 db/regiszterbank) – Adatregiszter
A C64x processzor magja II: Processzáló egységek L1, L2 egységek
M1, M2 egységek
Logikai és aritmetikai egység
Szorzó összeadó (MAC) egység
32/40–bit arithmetic and compare ops 32–bit logical operations Byte shifts Dual /quad arithmetic operations Dual /quad min/max operations Quad 8–bit subtract with absolute value
16 x 32 multiply operations Dual and quad multiply operations Dual and quad multiply with add/subtract operations (MAC) Rotation Variable shift operations
S1, S2 egységek
D1, D2 egységek
Aritmetika, komaprálások, elágazások
Címaritmetikai egység
32–bit arithmetic and logical operations 32/40–bit shifts Branches Dual and quad compare operations Dual and quad saturated arithmetic operations
32–bit add, subtract, linear and circular address calculation Loads and stores single and double words with constant offset 32–bit logical operations Dual 16-bit arithmetic operation
Utasításbusz • Mind a 8 processzornak 32 bites az utasításkód szélessége →256 bit széles utasításbusz • Ez egyetlen busz, azaz a különböző processzorok nem ágazhatnak el önállóan! • Tipikus C kódnál 2-3 processzor megy egyszerre. • Kézzel optimalizált matematikai blokkokban 6-8 processzor is egyszerre használt – Konvolució, FFT, stb. – Optimalizált függvény könyvtárak
Cache memóriák
Külön adat és program útvonalak L2 cache konfigurálható
Cache gyorsító szerepe A gyors processzor gyorsan szeretne adatot elérni. Gyors memóriák nagy helyet foglalnak a szilíciumon, csak kicsi építhető belőlük. ~150
Átviteli sávszélességek viszonyai Program Input data
Output data
Porceszszorok max. adatigénye (600MHz)
256 544 bit/ciklus bit/ciklus
288 bit/ciklus
L1 cache biztosít (600MHz)
256 128 bit/ciklus bit/ciklus
-
L2 cache biztosít (300MHz)
128 128 bit/ciklus bit/ciklus
128 bit/ciklus
Külső memória biztosít (150MHz)
16 bit/ciklus összesen
Mi történik, ha nincs az adat a cache-ben? • Ha bent van az L1-ben, akkor abban a ciklusban beviszi a regiszterbe. • Ha nincs az L1-ben, de az L2-ben bent van, akkor 6-8 ciklust áll a processzor, ezalatt automatikusan átkerül az L1-be, és utána megy tovább. • Ha egymás után több adat hiányzik ugyanarról a területről, az csak egyszer 6-8 ciklus várakozást jelent, mert a 6-8 ciklus alatt egész blokkot másol.
• Ha az L2-ben sincs, akkor DMA ciklus inicializálódik, és a külső memória típustól függően akár több száz ciklust is áll a processzor.
A C6000 DSP család tagjai • DSP & DSP+ARM – Single DSP – DaVinci video processor
• Multi-core DSP – Keystone
• ARM MPU • Ultra-low power – C5000 integer processor (16 bit)
DaVinci Média processzor (Texas) • DSP + RISC + célprocesszorok – Ti 6415 DSP (számítás) – ARM processzor (kommunikáció) – Front-end videó feldolgozó egység • Analog Videó signal interface (CCD) • Digitalis (HD) videó interface • Histogram, resize, preview
– Back-end videó feldolgozó egység • Digitális videó feldolgozó célprocesszorok • Analóg/digitális videó output, overlay (OSD)
– Videó tömörítő egység • MPEG, H.264
TMS320DM6446 (Da Vinci)
Keystone: TMS320C6678 Multicore DSP • • • • •
8 processor core 1.25GHz 65nm technology 512kb L2/cores 4Mbyte shared cache • 841 pin BGA
Rekonfigurálható architektúrák
FPGA
FPGA • Nem befejezett logikai áramkör • Az elemek funkcionalitása és azok összeköttetés rendszere átkonfigurálható, akár működés közben is • Az adott feladatra optimalizált célprocesszorok építhetők • Mennyire optimális? – Megvalósított áramköri szinten: • Maximálisan (amennyire optimalizálni akarjuk)
– Teljes áramkör szintjén: • Komoly redundanciák illetve ki nem használt overhead-ek maradnak a teljes áramkörben
Modern FPGA-k elemkészlete • • • • • •
IO blokk CLB Összeköttetések Memória DSP Slice Processzorok – Soft – Hard
• Nagysebességű soros perifériák – Transceivers – Ethernet, PCI express, SATA, USB
• Mixed signal module – AD converter
• IP blokkok
FPGA-k felépítése (alap eszközök) • Három alapelem: – Széleken található I/O cella (50-1200) – Belső összekötő hálózat – Konfigurálható logikai blokk (CLB) vagy Slice-ok
Konfigurálható logikai blokk
(Ma az eszközök többségében már 6 bites Func. Gen. Block (LUT) van, de azoknak az architektúrája rendszerint nem publikus.)
Programozható huzalozás típusok
IO Blokkok, CLB-k • IO lábak – – – –
Single ended Differential 1,866 Mb/s (DDR3 memóriát kiszolgál) max 1200 láb
• CLB (6 bemenetű LUT + FF) – max 2 millió
Memória • 36 kbit-es memóriablokkok • 20-2360 db – max: 9,44 Mbyte
• FIFO-nak is konfigurálhatók • 638MHz • gyakorlatilag minden FPGA-ban megtalálható
DSP slice • Multiple-add unit • 638 MHz • Xilinx-ban: – 25x18 bit
Multiplier Adder Accumulator
A[n:0]
• Pár tucattól több ezer B[n:0] darabig
x +
MAC
Y[(2n - 1):0]
Chip with Columns of Embedded Multipliers and RAM Blocks RAM blocks Multipliers Logic blocks
Embedded mikroprocesszorok • Hard – Ténylegesen benne van egy vagy több processzor – Dual ARM (925MHz) • Zinq (Xilinx) • Cyclon V SOC (Altera)
• Soft – Belefordít egy vagy több processzort • Xilinx: MicroBlaze, PikoBlaze • Altera: Nios
– Konfigurálható felépítés – max: 210MHz A soft processzorok lényegesen gyengébbek egy DSP-nél. A dual ARM már erős, de nem összemérhető egy komoly DSP-vel. Az egész rendszer attól lehet erősebb, hogy az FPGAban cél processzorkat implementálunk, amelyek teljesítméne meghaladja a normál DSP teljesítményét.
Mixed signal modul • 2 db AD converter – 17 differeciális bemenet – 1 Msps
Soros interface-ek • Transceivers – Max 28Gbit/sec soros vonal – Max 96 db
• Ethernet interface – 10/100/1000 Mbit/sec
• PCI Express – 4 db
FPGA-k programozása • Program nyelvek – HDL (Verilog, VHDL) (elterjedt) – C (Vivado, Xilinx)
• Fordító eszköz • Particionáló eszköz • Huzalozó eszköz
FPGA tervezés lépései • HDL kód vagy C kód írás • Szintézis – A kóddal egyenértékű CLB-kből álló logikai kapcsolás keletkezik (Netlista)
• Mapping – A CLB-k elhelyezése a tömbben
• Packing – LUT-ok feltöltése
• Routing – A CLB-k behuzalozása
Simple HDL-based FPGA Flow
JTAG lánc JTAG data out
JTAG data in From previous JTAG filp-flop To internal logic
Input pad Input pin from outside world JTAG flip-flops
From internal logic To next JTAG filp-flop
• A chip ki/bemeneteit ki lehet olvasni
Output pin to outside world Output pad
Chip scope
• Virtuális logikai analizátor • Fordítási időben belefordít kb 10% extra logikát
Technology – Hierarchic Packaging
FPGA családok (Xilinx) • 6-os család – Spartan 6 család (Kis teljesítményű, olcsó) • Memória és DSP slice, soros transceivers
– Virtex 5-6 családok (csúcsmodellek) • LX (sok logika) • SX (sok DSP slice és memória) • FX (embedded Power PC és Rocket IO)
• 7-es család – ARITIX-7 (kis fogyasztású, olcsó) – KINTEX-7 (legjobb ár/érték arány) – VIRTEX-7 (csúcs modellek)
• Zinq – Dual ARM
IP* blockok • Különböző funkcionalítású blokkokat árulnak – – – – – –
DRAM interface SATA interface Processzorok (MPEG, JPEG, stb) Konverterek Kommunikációs blokkok Stb
• Soft vagy Hard macro – Soft: nincs meg a placing és a routing – Hard: fix az elhelyezése és a routing *Intellectual Property
Speed grade • Minden FPGA gyártó árul különböző sebességű eszközöket • Speed grade-ek nehezen defniálható, inkább marketing mint mérnöki egységek
Rekonfigurálhatóság futási időben • Egy komoly FPGA felprogramozása akár több tíz másodperc is lehet • Hagyományosan az FPGA LUT-jai, multiplexerei, illetve routolása nem változik futási időben • Az újabb típusok megengednek futás közbeni részleges rekonfigurálhatóságot
Trend: teljes embedded rendszerek egy FPGA-ban
FPGA roadmap • Hasonlóan a mikroprocesszorokhoz, nem elsősorban a sebesség nő, hanem a komplexitás, a szilícium technológia fejlődésével (scaling-down) azaz: – elemszám nő (CLB, memóriablokk, soros csatornák, szorzók, stb.), – új funkcionális elemek jelennek meg (AD, ARM, stb) – jelentősen csökken a fogyasztás.
Optimális? • Felkínált erőforrás szinten – A chip összes erőforrása (CLB/Slice) soha nincs kihasználva – A kihasznált Slice-ok sincsenek teljesen feltöltve – A huzalozásból is mindig megmarad a nagy része
• Teljes áramkör szinten – Egy logikai kapu 4-6 tranzisztor egy normál áramkörön – Ugyanez 15-20 az FPGA-n, mivel rekonfigurálhatóan kellett megépteni – Ez jelentős overhead, többlet szilícium felület, többlet fogyasztás – Olyan, mintha 2-3 generációval korábbi technológiával terveznénk chipet
Miért érdemes használni? • Sokkal olcsóbb, mint chipet tervezni – Időben is és költségben is
• Még így is sokkal hatékonyabb az ismétlődő nagy számítási igényű feladatokra mint egy DSP • Alacsony fogyasztás nagy számítási feladatok mellett is • Teljes beágyazott rendszer építhető belőle
FPGA-DSP együttműködés • Mikor kell DSP az FPGA mellé? – Nagy számítási igény jelentkezik nem reguláris processzálásban.
• Példa: Smart kamera – A reguláris processzálási lépéseket átveszi a DSP-től az FPGA
Mikor melyiket használjuk? FPGA • • • •
•
Meglevő cellákat töltünk fel programmal, és kötünk össze Hatalmas overhead a progamozhatóság miatt Lényegesen rövidebb tervezési idő Lényegesen kisebb prototípus költség Nagyon hasonló tervezési folyamat
Sturctured ASIC • •
• • •
Köztes technológia az FPGA és az ASIC között Az FPGA-ból származtatják a rajozlatát a chipnek (működő FPGA-ból gyorsan megvan) Az ASIC-ekkel együtt gyártják Az FPGA építő köveket tartalmazza, de nem programozható módon Lényegesen olcsóbb tervezési költség, mint az ASIC, de magasabb darabár
ASIC • • •
•
Általunk tervezett chip Szabadon rajzoljuk, helyezzük el és kötjük össze a cellákat (CAD) Nem konfigurálható át, nincs overhead, de ha nem jó, akkor újragyártás (negyed év, $5-$50k) Magas prototípus költség (tervezés + maszk költségek)
FPGA-k pozícionálása • Adott nagy számítási feladatra a DSP-nél olcsóbb, de az ASIC-nél drágább (eladott darabszám függő) • DSP-hez képest nagy fejlesztési idő/költség, de az ASIC-nál sokkal gyorsabb és olcsóbb kifejleszteni egy alkalmazást
Ár probléma • Mobiltelefon, GPS, ADSL vagy kábel modem, digitális fényképezőgép, MP3 lejátszó, DVD lejátszó olyan számítási kapacitást igényel, amit egy 30 dolláros FPGA tud lefedni. • Ezek az eszközök a teljes elektronikájukra $5-$30 költhetnek. • Mi a megoldás?
• FPGA Structured ASIC ASIC migráció $30/db
$5/db >10,000db/év
$0.50/db >300,000db/év
Ár és fogyasztás csökkenés az ASIC migráció eredményeként
Cost of Timing Analysis and Debug Relative cost of timing analysis and debug
~100x
~10x
1x RTL (Pre-synthesis)
Gate (Post-IPO)
Gate (Post-layout)
Level of Design Abstraction
Példa: Adott egy komplex számítási feladat • 1. megoldás: – 3 db DSP-vel megoldjuk
$1M
[USD] $2M
ASIC
• 1 db gyártási költsége: $150 • Kifejlesztési költség: $ 30,000
• 2. megoldás:
FPGA
$1M
– 1 db FPGA-val megoldjuk
DSP
• 1 db gyártási költsége: $30 $500k • Kifejlesztési költség: $ 150,000
• 3. megoldás:
$150k $30k
– Saját chipet (ASIC) tervezünk a feladathoz • 1 db gyártási költsége: $2 (évi 50,000 db esetén) • Kifejlesztési költség: $ 2,000,000
120
66k [db]
Döntési szempontok: • Mennyi idő múlva kell működnie? • Hány darabot tudunk értékesíteni? • Milyen körülmények között kell működnie (energia, méret)?