Prelucrare paralela cu FPGA-uri

FPGA-urile sunt atât de flexibile și de reconfigurabile încât sunt capabile sa efectueze operații paralele masive, operații specifice aplicației proiectate. Exista multe paradigme care folosesc FPGA-urile în mediile în care sunt necesare performanțe de prelucrare mari. Exista însa și un număr de limitări care împiedica FPGA-urile sa ajungă la performanta ASIC-urilor (Application Specific Integrated Circuits), dar pentru FPGA-uri, schimbarea designului hardware se face foarte ușor, utilizarea lor fiind chiar mai ușoară decât dacă s-ar implementa software pe procesoare de uz general. FPGA-urile (Field programmable gate arrays) sunt folosite în prelucrări de performanta:

  • Procesare de semnal
  • Implementare de algoritmi integrați
  • Vectori sistolici
  • Accelerator software
  • Arhitectura specifica pentru o aplicație

Introducere modificare

FPGA modificare

FPGA-ul a fost inventat la mijlocul anilor 1980 de care unul dintre fondatorii Xilinx, Ross Freeman. Este un dispozitiv construit cu semiconductoare format din elemente logice, interconectări și blocuri de I/O (Input/Output). Toate aceste componente sunt configurabile de către utilizator. Poate fi folosit în implementarea unor circuite digitale complexe. Blocurile de I/O formează un inel pe marginile exterioare ale chipului în timp ce blocuri dreptunghiulare de vectori de blocuri logice sunt așezate în mijlocul acestui inel. Fiecare bloc de I/O se poate lega la unul dintre pinii aflați la exteriorul FPGA-ului. Un bloc de logica tipic unui FPGA este format dintr-o tabela de căutare cu patru intrări (LUT) și un flip-flop. La momentul actual,[când?] FPGA-urile au și blocuri de DSP, care furnizează funcționalitate la nivel înalt, blocuri de I/O rapide, memorii integrate și procesoare. FPGA-urile mai au și blocuri de logica configurabile (CLB-uri), care sunt formate din mai multe felii, fiecare felie reprezentând un set mic de blocuri configurabile. FPGA-urile moderne sunt formate din zeci de mii de astfel de CLB-uri și dintr-o rețea interconectata programabila dispusa într-o matrice dreptunghiulara.

ASIC modificare

ASIC-ul (Application specific integrated circuits) execută o singură funcție pe parcursul vieții lui într-un FPGA, și poate fi programat să o execute într-un timp de ordinul microsecundelor. Codul sursă, scris într-un limbaj HDL precum Verilog sau VHDL, furnizează funcționalitatea pentru a rula taskuri la run-time. Procesul de sinteză generează liste de fire (netlists) mapate pe tehnologia ce se dorește a fi folosită. Procesele de mapare, localizare și rutare fixează aceste liste de fire pe arhitectura reală a FPGA-ului. Procesul furnizează un sir de biți care este folosit pentru a reconfigura FPGA-ul. Pentru a valida aceste rezultate se folosesc procese de management al timpului, post-sinteză, simulări pentru validarea funcționalității și metodologii de verificare. FPGA-ul suporta noțiunea de calcul reconfigurabil și este capabil de paralelism care poate fi mapat direct din algoritmul paralel al unei aplicații, având în vedere caracteristicile flow-ului de date al ei. In domeniul de calcul performant a apărut recent o abordare hibrida pentru a face un sistem complex pe un chip programabil. Exemple sunt: Virtex II Pro, Virtex-4 și device-urile Xilinx. Cel mai recent succes al FPGA-urilor în acest domeniu a venit odată cu descoperirea cluster-ului Tsubame în Tokio, cu care FPGA-urile și-au crescut performanta cu încă 25%.

Calcul reconfigurabil modificare

Calculul reconfigurabil de înaltă performanță (HPRC = High performance reconfigurable computing) se face pe sisteme de calcul paralel care permit integrarea de microprocesoare și FPGA-uri multiple. FPGA-urile sunt co-procesoare ce au sarcina de a executa mici părți din aplicații care iau cel mai mult timp, după regula 10-90, de exemplu 10% din cod care ia 90% din timpul de execuție. Calculul reconfigurabil mai este cunoscut și sub numele de calcul configurabil sau calcul personalizat. Are de cele mai multe ori performante impresionante, după cum se poate vedea în exemplul următor. Pentru o cheie de dimensiune de 270 de biți, o înmulțire cu punct poate fi calculata în 0.36 ms cu un design de calcul reconfigurabil implementat într-un FPGA XC2V6000 la frecvența de 66 MHz, pe când o implementare software optimizată a luat 196,71 ms pe un calculator dual-Xeon la frecvența de 2.6 GHz. Deci designul de calcul reconfigurabil este de 540 de ori mai rapid, deși are perioada ceasului de 40 de ori mai înceată decât procesorul Xeon.

Progres în sistemele hardware și programarea software modificare

Cu apariția tehnologiilor, multe sisteme hardware au început sa se asemene cu calculatoarele paralele. Aceste sisteme nu sunt proiectate pentru scalabilitate deoarece sunt formate dintr-o singura placa cu unul sau mai multe microprocesoare conectate la unul sau mai multe dispozitive FPGA. In mod tradițional, vânzătorii de dispozitive de performanta înaltă, în special Silicon Graphics Inc. (SGI), Cray și Linux Networx au incorporate FPGA-uri în arhitecturile lor paralele. Din perspectiva software, dezvoltatorii pot crea kerneluri hardware folosind limbaje de descriere hardware precum VHDL sau Verilog. Calculatoarele SRC permit și alte limbaje de descriere hardware, printre care Carte C, Carte Fortran, Mitrion C, Celoxica – Handel C etc.

Logica reconfigurabila și procesare tradițională modificare

Logica reconfigurabila consta într-o matrice de calcul programabila cu o rețea interconectata programabila care este folosita în cadrul acelei matrici. Diferențele principale intre logica reconfigurabila si procesarea tradițională sunt:

  • Data este procesata de calcule distribuite spațial în loc de secvențe temporale.
  • Calea de date este configurabila: funcționalitatea unităților de calcul și interconexiunile rețelei pot fi adaptate la momentul rulării.
  • Controlul distribuit: unitățile de calcul procesează datele bazându-se pe configurații locale în loc sa se bazeze pe o distribuire a instrucțiunilor la toate unitățile funcționale.
  • Resursele sunt distribuite: resursele necesare pentru calcul precum unități de calcul și memorie.


Prelucrare paralela cu FPGA-uri modificare

[1]

Avantajele FPGA-urilor modificare

Sunt mai multe avantaje în folosirea FPGA-urilor, inclusiv viteza, energia redusa și consumul de putere. Ca în calculele reconfigurabile, circuitul hardware este optimizat pentru aplicație și din acest motiv consumul de putere va tinde sa fie mult mai redus decât pentru procesoarele de uz general. FPGA-urile au și alte avantaje: mărime redusa, mai puține componente (cost redus), timp de dezvoltare redus și flexibilitate. Avantajele sunt cu atât mai mari pentru aplicații integrate. [2]

Limitările FPGA-urilor modificare

Când se implementează un mediu de calcul reconfigurabil apar mai multe probleme:

  • Structura de circuit reconfigurabila
  • Interfețele intre aceste structuri procesor/procesoare
  • Memoria trebuie sa fie eficienta

Exista și o altfel de provocare ce privește dezvoltarea ajutata de calculator și unelte de compilare care pun aplicația pe structura reconfigurabila. Problema este data de faptul ca e greu de aflat ce parte din aplicație trebuie pus pe circuit și ce parte pe procesor. Câteva limitări ale FPGA-urilor în calculul de inalta performanta trebuie explicate. Aceste probleme includ nevoia de a avea unelte de programare care se referă la întreaga structura, unelte de analiza și de debugging pentru mediu paralel. Cu atât mai mult, problemele de portabilitate ale aplicațiilor fac necesara o explorare mai în detaliu.

Consumul de putere al aplicațiilor FPGA modificare

FPGA-urile tind sa ofere o performanta incredibila. Acestea pot suporta un număr mare de aplicații paralele diferite și implementate în timpul unui singur ceas de execuție. Daca FPGA-urile sunt programabile atunci ele pot oferi funcționalitate într-un singur chip pentru un număr mare de aplicații. Datorita prezentei memoriei de pe cip se facilitează accesul co procesorului și nu este restrâns la numărul de pini de intrare/ieșire prezenți pe dispozitiv. Mai mult, memoria este într-o relație de cuplare puternica cu logica algoritmului și din acest motiv nu trebuie memorie de viteza mare de tip cache. Astfel evitam rezolvarea coerentei cache-ului care era consumatoare de putere. Folosirea memoriei interne înseamna de asemenea ca nu exista pini în plus necesari pentru mărirea cantității accesibile de memorie, simplificând scalarea designului. Cu folosirea unei structuri definite și disponibilitatea resurselor din FPGA-urile performante din ziua de azi, acestea pot servi ca hardware pentru o gama mare de aplicații. Dupa cum se poate vedea în tabel, niște exemple practice ale aplicațiilor arata ca se obțin performante de cel putin 10 ori mai bune în timpul de execuție comparând cu structurile cu un singur processor.


Tehnici de design pentru aplicațiile pe FPGA modificare

Herbordt descria tehnici de dezvoltare ale aplicațiilor care permit o accelerare substanțiala:

  1. Folosirea algoritmului optim pentru FPGA
  2. Folosirea unui mod de calcul bun pentru FPGA
  3. Folosirea structurilor FPGA într-un mod deștept
  4. Folosirea regulii lui Amdahl
  5. Ascunderea latentei funcțiilor independente
  6. Folosirea tehnicilor de rata pentru a scoate bottleneckurile
  7. Folosirea hardware-ului specific de FPGA
  8. Folosirea preciziei aritmeticii de pe FPGA
  9. Folosirea modului aritmetic corect
  10. Minimizarea folosirii calculelor cu costuri mari de viteza
  11. Folosirea familiilor de aplicații, nu soluții punctuale
  12. Scalarea aplicațiilor pentru utilizarea maxima pe hardware FPGA


Nevoia FPGA-urilor paralele modificare

O tehnica cunoscuta în îmbunătățirea performantei unei singure unități este sa se construiască un grup care sa lucreze în paralel format din unități ieftine. Dar sunt câteva dezavantaje cum ar fi lățimea benzii de comunicație redusa și scumpa. In plus nu pot rezolva anumite probleme în paralel. O alta abordare este legata de utilizarea calculatoarelor paralele și utilizarea resurselor acestora într-un mod partajat, ceea ce va permite un transfer al datelor foarte mare. COPACOBANA (Cost-Optimized Parallel Code Breaker, spărgătorul de coduri optimizat din punct de vedere al costurilor) folosește pana la 120 de FPGA-uri Xilinx Spartan-3 conectate printr-o interfața paralela care interfațează lumea exterioara printr-un controller FPGA dedicat cu o interfață Ethernet și un procesor Micro Blaze care folosește uClinux. Se folosește pentru criptanaliza și rezolvarea problemelor științifice.


Arhitectura COPACOBANA modificare

Consta în 3 blocuri de baza care includ un modul de control, pana la 20 de module de FPGA și o coloana vertebrala utilizata pentru interconexiuni intre controller si module FPGA. FPGA-urile sunt conectate direct pe o magistrala comuna de 64 de biți pe o placa a modulului FPGA care este interfatata cu datele din exterior prin transceiver-e cu 3-stări de ieșiri. Cat timp sunt deconectate de la magistrala, FPGA-urile pot comunica local prin magistrala interna de 64 de biți pe un modul DIMM. Formatul DIMM permite o arhitectura foarte compacta, ceea ce este important pentru conectarea modulelor într-un mod optim pe magistrala. Fiecare modul FPGA are o adresa unica hardware, care este generate prin GAL(Generic Array Logic, logica vectoriala generic) fiecărui socket DIMM. Astfel toate corurile FPGA-urilor pot avea aceeași configurație și toate modulele FPGA pot avea același layout. Pot fi ușor înlocuite dacă se strica ceva.

[3]

Notite modificare

  1. ^ FPGA Documentation Index, Intel 
  2. ^ „copie arhivă”. Arhivat din original la . Accesat în . 
  3. ^ COPACOBANA - Special-Purpose Hardware for Code-Breaking, www.copacobana.org 


Bibliografie modificare

  1. Altera Cooperation White Paper (2007). Accerating high performance computing with FPGAs. October 2007
  2. Bondalapti,K., & Prasanna,V. (2002). Reconfigurable computing systems. Proceedings of the IEEE, Vol. 90, No. 7, July, 2002.
  3. Buell, D., El-Ghazawi, T., Gaj,K.,& Kindratenko,V. (2007). High-Performance reconfigurable computing. IEEE Computer Society, March, 2007.
  4. El-Ghazawi, T., El-Araby,E., Miaoqing Huang, Gaj,K., Kindratenko, V.,& Buell, D.(2008).The promise of high-performance reconfigurable computing. IEEE computer society, February, 2008 pp. 69 -76.
  5. Guneysu,T., Paar,C., Pelzl,J., Pfieffer,G.,Schimmler,M., & Schlieffer,C. (2007. Parallel computing with low cost FPGAs A framework for COPACOBANA.
  6. Herbordt, M.C., VanCourt, T., Yongfeng, G., Shukhwani, B., Conti,A., Model,J. & Disabello,D. (2007). Achieving high performance with FPGA-Based computing
  7. Smith, M.C., Vetter,J.S., & Alam,S.R. (2005).Scientific computing beyond CPUs: FPGA implementations of common scientific kernels. MAPLD/187.
  8. Todman,T.J., Constantinides, G.A., Wilton,S.J.E, Luk,W. & Cheung, P.Y.K. (2005. Reconfigurable computing: architectures and design methods. IEEE Proceedings of Computer Digital Technologies, Vol. 152, No. 2, March, 2005.
  9. Wu-Feng, Manocha,D. (2007). High performance computing using accelerators,Parallel Computing, 33 (2007) pp. 645-647.