Újrakonfigurálható számítás

A Wikipédiából, a szabad enciklopédiából

Az újrakonfigurálható számítás olyan számítási elv, amelyik a szoftverek flexibilitását nagy teljesítményű hardverrel úgy kombinálja, hogy a végrehajtáshoz olyan nagymértékben flexibilis, nagy sebességű számítástechnikai eszközt használ, mint az FPGA-k. A közönséges mikroprocesszorokkal összehasonlítva a fő különbség, hogy a vezérlésen kívül az adatutat is lényegesen megváltoztathatjuk. Másrészt a felhasználói hardverekkel (ASIC) összehasonlítva a fő különbség annak lehetősége, hogy az újrakonfigurálható eszköz egy új áramköri elrendezés "betöltésével" alkalmazkodhat a feladathoz.

Története és tulajdonságai[szerkesztés]

Az újrakonfigurálható számítás elve már az 1960-as évektől létezik, amikor is Gerald Estrin mérföldkőként számon tartott közleményében[1][2] javasolta egy standard processzorból és egy "újrakonfigurálható" hardvertömbből álló számítógép használatát. A főprocesszor vezérelte volna az újrakonfigurálható hardver viselkedését. Az utóbbit így testre szabhatnánk olyan speciális feladatok végzéséhez, mint képfeldolgozás vagy mintakeresés, amely így egy dedikált hardver sebességével működne. Miután végeztünk a munkával, a hardvert átállíthatjuk valami másik feladathoz. Az eredményül kapott hibrid számítógép szerkezet a szoftver flexibilitását a hardver sebességével kombinálja; sajnos azonban az ötlet jóval megelőzte korát a szükséges elektronikai technológia tekintetében.

A nyolcvanas és kilencvenes években az ötlet újjászületett az ipari és az akadémiai szférában kifejlesztett számos újrakonfigurálható architektúrában, mint például Matrix, Garp,[3] Elixent, XPP, Silicon Hive, Montium, Pleiades, Morphosys, PiCoGA. Az ilyen fejlesztéseket az elektronikai gyártástechnológia folyamatos fejlődése tette lehetővé, amivel komplex terveket lehetett implementálni egyetlen chipben. A világ első, kereskedelemben kapható újrakonfigurálható számítógépe, az Algotronix CHS2X4, 1991-ben készült el. Nem volt éppen egy kereskedelmi siker, de elég ígéretes volt ahhoz, hogy a Xilinx Inc (a Field-programmable gate array feltalálója) megvásárolja a technológiát és vele együtt alkalmazza az Algotronix stábját is [1].

A jelenlegi rendszerek[szerkesztés]

Jelenleg számos gyártó kínál kereskedelmileg elérhető újrakonfigurálható számítógépeket, amelyek a nagy teljesítményű számítások szegmensét célozzák meg; ilyenek a Cray, SGI and SRC Computers, Inc. Az újrakonfigurálható számítógépek olyan "Estrin"-féle mikroprocesszoros hibrid számítógépek, amelyeket vagy hagyományos CPU fürtökből álló számítógépekben vagy pedig felhasználó által programozott FPGAkkal használnak. A Cray szuperszámítógép cég megvásárolta az OctigaBay céget és annak újrakonfigurálható számítási platformját, amit a Cray egészen mostanáig Cray XD1 néven forgalmazott. A SGI a RASC platformját saját Altix sorozatú szuperszámítógépével árusítja [2]. Az SRC Computers, Inc. saját IMPLICIT+EXPLICIT architektúrájára és MAP processzorára alapozva fejlesztett ki egy újrakonfigurálható számítógép családot.

Az XD1 és az SGI FPGA újrakonfigurálása vagy a hagyományos Hardver leíró nyelv (HDL)ek használatával valósítható meg, amit vagy közvetlenül vagy elektronikus tervezőautomaták (electronic design automation “EDA”) használatával állíthatunk elő, vagy pedig elektronikus rendszer szintű (electronic system level, “ESL”) eszközökkel készíthetünk el, olyan magas szintű nyelveket használva, mint a Starbridge cég Viva grafikus segédeszköze, vagy a C-alapú nyelvek, mint például Handel-C a Celoxica-tól, a DIME-C a Nallatech-től, az Impulse-C az Impulse Accelerated Technologies-tól vagy a Mitrion-C a Mitrionics-től.

Ezen felül, a Mitrionics kifejlesztett egy olyan Szoftvergyorsító Platformot (Software Acceleration Platform), amelyik egy értékadó nyelv használatával készült szoftver fordítását és futtatását teszi lehetővé például Cray és SGI cégektől származó FPGA-alapú számítógépeken. A Mitrion-C programnyelv és a Mitrion Virtual Processor lehetővé teszik, hogy a programfejlesztők az FPGA-alapú processzorokon ugyanolyan módon írják és futtassák programjaikat, mint más számítási technológiák esetén, mint például grafikus számítógépek (GPUk), sejt-alapú processzorok, párhuzamos végrehajtók, többmagú CPUk valamint a hagyományos egymagú CPU fürtök.

Az SRC kifejlesztett egy olyan "Carte" fordítóprogramot, amelyik magas szintű, C- vagy Fortran-szerű programnyelven írott programokat, néhány módosítással, lefordít FPGAn vagy mikroprocesszoron való futtatásra is. Az SRC dokumentációja szerint "…a használt algoritmusok olyan magas szintű nyelven íródnak, mint a C vagy Fortran. A Carte kihozza belőle a legmagasabb szintű párhuzamosíthatóságot és olyan csővezetékelt hardver logikát állít elő, amelyet a MAP valósít meg. Előállítja az adatok MAP-ba és MAP-ból mozgatására szolgáló interfész kódot és összehangolja a MAP-on futó logikát a mikroprocesszorral." (megjegyezzük, hogy az SRC lehetővé teszi hagyományos HDL kód használatát). Az SRC rendszerek a SNAP memória interfészen át kommunikálnak, vagy pedig az (opcionális) Hi-Bar switch-en keresztül.

A rendszerek összehasonlítása[szerkesztés]

Mint a fejlődő területek esetén szokásos, az újrakonfigurálható architektúrák osztályozása is fejlődik és finomodik, amint új architektúrák jelennek meg; jelenleg még nem javasoltak egységes osztályozási szempontokat. Van azonban számos olyan fontos paraméter, amelyet használhatunk ezen rendszerek osztályozására.

Granularitás (szemcsézettség)[szerkesztés]

Az újrakonfigurálható logika szemcsézettségét annak a legkisebb funkcionális egységnek (CLB) a méretével határozzák meg, amelyek a leképező eszközök meg tudnak címezni. Az alacsony (vagy más néven finom) szemcsézettség gyakran nagyobb flexibilitást is jelent, amikor algoritmust valósítunk meg a hardverben. A nagyobb teljesítménynek azonban ára van: a számításokhoz nagyobb mennyiségű routing szükséges, ami nagyobb területet és nagyobb késleltetést is jelent. A finom szemcsézettségű architektúrák bit-szintű manipulációs szinten dolgoznak; a durva szemcsézetű feldolgozó elemek (rDPU) pedig standard adatszélességet igénylő alkalmazásokra optimalizáltak. A durva szemcsézetű architektúrák egyik hátránya, hogy használhatóságuk és teljesítményük csökken, ha a szemcsézettségüknél kisebb méretű számításokat kell végeznünk, például egy négybites funkcionális egységen végzett egybites összeadás három bitet elveszteget. Ez a probléma úgy oldható meg, hogy ugyanazon a chipen egy durva szemcsézetű tömböt (rDPA) és egy FPGAt is elhelyeznek.

A durva szemcsézettségű architektúrákat (rDPA) szó-szélességű adatelérést (rDPU) igénylő algoritmusok megvalósítására szánják. Mivel ezek funkcionális blokkjai nagy számításokra optimalizáltak, ezeket a számításokat gyorsabban és hatékonyabban végzik el, mint egy néhány kisebb összekapcsolt funkcionális egységből álló blokk, mivel az összekötő vezetékek rövidebbek, ami kisebb vezeték kapacitást és ezért gyorsabb és kisebb teljesítményű megvalósítást tesz lehetővé. A nagyobb számítási blokkok egy lehetséges nemkívánatos következménye, hogy amikor az operandusok mérete nem felel meg az algoritmusnak, az erőforrásokat csak kevéssé hatékonyan tudjuk használni. Gyakran a futtatandó alkalmazás típusa előre ismert, ami így lehetővé teszi, hogy a logikát, a memóriát és az összekötéseket méretre szabjuk (lásd például KressArray Xplorer), ezáltal úgy javítva az eszköz teljesítményét, hogy közben továbbra is lehetőséget biztosítunk a jövőbeli alakíthatóságra. Ezek a terület-specifikus tömbök a flexibilitásuk csökkentése árán teljesítmény, terület és átbocsátóképesség szempontjából jobbak, mint az eredendően finomabb szemcsézettségű FPGA rokonaik.

Az újrakonfigurálás gyakorisága[szerkesztés]

Az újrakonfigurálható rendszerek konfigurálása a használat során is történhet, a végrehajtási fázisok között vagy akár a végrehajtás során. Egy tipikus újrakonfigurálható rendszerben egy bit-streamet használunk arra, hogy a használat során az eszközt programozzuk. A finomabb szemcsézetű rendszerek természetükből következően nagyobb konfigurációs időt követelnek, mint a durva szemcsézetű architektúrák, mivel nagyobb számú elemet kell megcímezni és programozni. Emiatt az alacsony energiafelhasználás elősegítésére előnyösebb durva szemcsézetű architektúrákat használni, mivel kevesebb információt kell átvinni és felhasználni. Nyilvánvaló, hogy minél kisebb az újrakonfigurálás gyakorisága, annál kisebb az energiafogyasztása is, mivel az újrakonfigurálás energiaköltsége megtérül hosszabb idő alatt. A részleges újrakonfigurálás azt a lehetőséget célozza meg, hogy az eszköz egy részét újraprogramozzuk, miközben a másik része még aktívan számol. A részleges újrakonfigurálás kisebb újrakonfiguráló bit-streamet tesz lehetővé, így nem kell energiát vesztegetnünk arra, hogy a bit-streamben felesleges információt vigyünk át. A bit-streamet lehet ugyan tömöríteni, de nagyon gondosan meg kell fontolni, hogy a kisebb bit-stream használatával megtakarított energiát nem ellensúlyozza-e az adatok kitömörítéséhez szükséges számítás energiaszükséglete.

Csatolás a gazda-processzorhoz[szerkesztés]

Az újrakonfigurálható tömböt gyakran úgy használják, hogy egy gazda-processzorhoz kapcsolják annak végrehajtási sebességének növelésére. A csatolás szintje határozza meg az adatátvitel típusát, a látenciát, a teljesítményt, az átvihető adatmennyiséget és az átvitelhez szükséges számítási munkát, amikor az újrakonfigurálható logikát használjuk. A megvalósítások egy részében magától értetődően egy perifériás buszt használnak arra, hogy az újrakonfigurálható tömb számára egy társprocesszor-szerű elrendezést biztosítsanak. Vannak azonban olyan megvalósítások is, amelyekben az újrakonfigurálható elem sokkal közelebb van a processzorhoz, néhány egyenesen az adatútra van implementálva, így használhatja a processzor regisztereit. A gazda-processzor feladata a funkciók vezérlése, a logika konfigurálása, az adatok időzítése és csatlakozás a külső interfészekhez.

Routing/összeköttetések[szerkesztés]

Az újrakonfigurálható eszközök flexibilitása elsősorban a belső összeköttetések következménye. Az FPGAk gyártói, a Xilinx és az Altera által népszerűvé tett egyik összeköttetési stílus a sziget-szerű elrendezés, ahol a blokkok tömbszerűen vannak elrendezve, függőleges és vízszintes összeköttetésekkel. A nem megfelelő összeköttetésekkel rendelkező elrendezés hátránya a kisebb flexibilitás és erőforrás kihasználás, és az ebből következő korlátozott teljesítőképesség. Ha viszont túl sok az összeköttetés, az a szükségesnél sokkal több tranzisztort (és ezért nagyobb szilícium területet) valamint hosszabb vezetékeket követel, és nagyobb a teljesítményfelvétele is.

Segédprogram lánc[szerkesztés]

Az újrakonfigurálható számítórendszerekhez használatos segédeszközök általában két részre oszthatók: CAD segédprogramok az újrakonfigurálható tömb és fordítási segédprogramok a CPU számára. A front-end fordítóprogram egy integrált eszköz, ami egy strukturált hardver ábrázolást hoz létre, ami a hardver tervezési lánc bemenete. Újrakonfigurálható architektúrák esetén a hardver tervezési lánc a tervezési folyamat három fő fázisához használt megközelítési mód szerint osztályozható: technológiai leképezés, elhelyezési algoritmus és összekötési algoritmus. A szoftver-keretek a programnyelv szintjében térnek el.

Az újrakonfigurálható számítógépek olyan mikrokódú processzorok, ahol a mikrokódot (microcode) tetszőleges hozzáférésű memória (RAM) vagy EEPROM tárolja, és az újrabetöltéssel (reboot) vagy "röptében / menet közben" változtatható. Ez technikailag az AMD 2900-as bitszelet-processzoraival (bit slice processor) (újratöltés esetén) vagy később FPGA-val (röptében) tehető meg.

Bizonyos adatfolyam (dataflow) processzorokat már az újrakonfigurálható számítás elve alapján valósítanak meg.

Hogy össze lehessen hasonlítani az algoritmusok különféle megvalósítási módjának hatását a futási időre és a felhasznált energiára, egyes segédprogramok lehetővé teszik, hogy ugyanazt a C kódot egy fix CPU-ra, egy szoftver processzorra (soft processor), vagy közvetlenül FPGA-ra is le lehessen fordítani [3].

Az újrakonfigurálható számítás mint paradigma váltás: Hartenstein anti-számítógépe[szerkesztés]

1. táblázat: A számítási elvek osztályozási rendszere
Történeti számítógépek:
  Programozható forrás
Erőforrás rögzített nincs
Algoritmus rögzített nincs
Neumann-elvű számítógép:
  Programozható forrás
Erőforrás rögzített nincs
Algoritmus változó Szoftver (utasítássorozat)
Reconfigurable Computing Systems:
  Programozható forrás
Erőforrás változó Configware (konfiguráció)
Algoritmus változó Flowware (adatfolyam)

Reiner Hartenstein számítógéptudós az újrakonfigurálható számítást egy anti-számítógép (anti machine) fogalomkörében írja le, ami szerinte alapvető paradigmaváltást képvisel a hagyományos, Neumann-elveken alapuló számítógéphez képest[4] Hartenstein írta le az újrakonfigurálható számítás paradoxonát:[5] A szoftverről a configware-re (szoftverről FPGA-ra) áttérve, csaknem négy nagyságrenddel nagyobb sebességet érnek el, emellett több mint egy nagyságrenddel csökkentik az elektromos fogyasztást - bár az FPGA technológiai paraméterei négy nagyságrenddel vannak a Moore görbe alatt, és az órajelfrekvenciája is lényegesen alacsonyabb, mint a mikroprocesszoroké. Ez a paradoxon egy paradigmaváltás következménye, amit a Neumann-szindróma (Von Neumann syndrome) részben megmagyaráz.

Az újrakonfigurálható számítógép alapelvét, az adatfolyam-elvű anti-számítógépet (anti machine) jól mutatják az eddig használt számítógépekhez képesti eltérések. A táblázatban (lásd "1. táblázat: A számítási elvek osztályozási rendszere")[6] bemutatott osztályozást Nick Tredennick állította össze.

Az újrakonfigurálható számítógép (Reconfigurable Computing Machine, más néven Xputer) alapmodellje, az adatfolyam-alapú anti-számítógép az ellentéte az utasításfolyam alapú, Neumann-elveken alapuló modellnek. Ezt jól illusztrálja egy egyszerű újrakonfigurálható (tehát nem dinamikusan újrakonfigurálható, dynamically reconfigurable) rendszer, amelyiknek futási időben nincs utasítás elővételi (fetch) ciklusa. Helyette, a (futási időt megelőző) újrakonfigurálás tekinthető egyfajta szuper utasítás elővétel ciklusnak. Az anti-számítógépben nincs programszámláló. Vannak viszont helyette adatszámlálók, mivel ez adatáram-vezérelt. Az adatáram definícióját itt a systolic array szcenárióból adaptáltuk, ami azt mondja meg, mikor, melyik adatnak, melyik porton kell megérkezni az újrakonfigurálható rendszerbe vagy elhagyni azt. Ez az újrakonfigurálható rendszer lehet finom szemcsézettségű (azaz FPGA alapú), vagy durva szemcsézettségű, vagy a kettő keveréke.

A systolic array szcenárió, amit főleg matematikusok fejlesztettek a 80-as évek elején, csak az anti-számítógép felét definiálta: az adatutat (Systolic array, lásd még Super Systolic Array). Nem definiálták és nem modellezték azonban az adatok soronkövetkezésének metodológiáját, úgy gondolván, hogy nem az ő feladatuk azzal foglalkozni, hogy honnét jön vagy hová megy az adat. Az anti-számítógépben az adatok soronkövetkezését egy elosztott memóriával modellezzük (lehetőleg egyetlen chip-en), ami auto-sequencing memory blokkokból (ASM blokkok) áll. Mindegyik ASM blokknak van egy adatszámlálót tartalmazó sorozatkezelője. Ennek jó példája a GAG, ami a DMA (DMA) egyfajta általánosítása.

Hivatkozások[szerkesztés]

  1. Estrin, G. 2002. Reconfigurable computer origins: the UCLA fixed-plus-variable (F+V) structure computer. IEEE Ann. Hist. Comput. 24, 4 (Oct. 2002), 3-9. DOI=http://dx.doi.org/10.1109/MAHC.2002.1114865
  2. Estrin, G., "Organization of Computer Systems—The Fixed Plus Variable Structure Computer," Proc. Western Joint Computer Conf., Western Joint Computer Conference, New York, 1960, pp. 33-40.
  3. Hauser, John R. and Wawrzynek, John, "Garp: A MIPS Processor with a Reconfigurable Coprocessor," Proceedings of the IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM '97, April 16-18, 1997), pp. 24-33.
  4. Hartenstein, R. 2001. A decade of reconfigurable computing: a visionary retrospective. In Proceedings of the Conference on Design, Automation and Test in Europe (DATE 2001) (Munich, Germany). W. Nebel and A. Jerraya, Eds. Design, Automation, and Test in Europe. IEEE Press, Piscataway, NJ, 642-649.
  5. Hartenstein, Reiner, "RAW keynote 2: new horizons of very high performance computing (VHPC): hurdles and chances." Parallel and Distributed Processing Symposium, 2006. IPDPS 2006. 20th International Publication Date: 25-29 April 2006, p. 1. ISBN 1-4244-0054-6
  6. N. Tredennick: The Case for Reconfigurable Computing; Microprocessor Report, Vol. 10 No. 10, 5 August 1996, pp 25-27.

Hivatkozások (még nem kapcsolódnak a szöveghez)[szerkesztés]

  • S. Hauck and A. DeHon, Reconfigurable Computing: The Theory and Practice of FPGA-Based Computing, Morgan Kaufman, 2008.
  • J. Henkel, S. Parameswaran (editors): Designing Embedded Processors. A Low Power Perspective; Springer Verlag, March 2007
  • J. Teich (editor) et al.: Reconfigurable Computing Systems. Special Topic Issue of Journal it - Information Technology, Oldenbourg Verlag, Munich. Vol. 49(2007) Issue 3
  • T.J. Todman, G.A. Constantinides, S.J.E. Wilton, O. Mencer, W. Luk and P.Y.K. Cheung, "Reconfigurable Computing: Architectures and Design Methods", IEE Proceedings: Computer & Digital Techniques, Vol. 152, No. 2, March 2005, pp. 193–208.
  • A. Zomaya (editor): Handbook of Nature-Inspired and Innovative Computing: Integrating Classical Models with Emerging Technologies; Springer Verlag, 2006

Külső hivatkozások[szerkesztés]