Matrice de poartă programabilă de utilizator ( FPGA , în engleză field-programmable gate array, FPGA ) este un dispozitiv semiconductor care poate fi configurat de producător sau dezvoltator după fabricație; cel mai complex tip de circuite integrate logice programabile din organizație .
Ele sunt programate prin modificarea logicii schemei de circuit , de exemplu, folosind codul sursă în limbajul de descriere hardware (de exemplu , Verilog ). Ele pot fi modificate aproape în orice moment în timpul utilizării lor. Constă din blocuri logice configurabile, cum ar fi comutatoare cu intrări multiple și o ieșire ( porți logice , porți ). În circuitele digitale, astfel de comutatoare implementează operațiile binare de bază AND , NAND , OR , NOR și XOR . Diferența fundamentală dintre FPGA este că atât funcțiile blocurilor, cât și configurația conexiunilor dintre ele pot fi modificate cu ajutorul unor semnale speciale trimise circuitului. Unele circuite integrate specifice aplicației ( ASIC ) utilizează rețele logice similare ca design cu FPGA-urile, totuși sunt configurate o dată în timpul producției, în timp ce FPGA-urile pot fi reprogramate constant și pot schimba topologia conexiunilor în timpul utilizării. Cu toate acestea, o astfel de flexibilitate necesită o creștere semnificativă a numărului de tranzistori din microcircuit.
În FPGA -urile timpurii , numai conexiunile dintre porți puteau fi modificate prin programare [1] ; în 1985, co-fondatorii Xilinx Ross Freeman și Bernard V. Vonderschmitt au dezvoltat primul FPGA de succes comercial , XC2064, care are porți programabile și conexiuni programabile între ele (în 2005, Freeman a fost listat pentru această invenție la US National Inventors Hall of Faima ). Însuși conceptul de matrice de porți programabile în câmp, porți logice și blocuri logice a fost brevetat de David Page și Louwern Peterson în 1985 [2] [3] . În anii 1990 s-a înregistrat o creștere bruscă a interesului pentru FPGA, complexitatea și volumele de producție ale acestora au crescut: dacă în primii ani au fost utilizate în principal în domeniul telecomunicațiilor și rețelelor de comunicații, atunci până la sfârșitul deceniului și-au găsit aplicație în bunuri de larg consum, în industria auto și în alte industrii.
În 1997, Adrian Thompson a combinat algoritmii genetici și tehnologia FPGA pentru a crea un dispozitiv capabil să facă distincția între tonurile audio de 1 kHz și 10 kHz . Algoritmii genetici au făcut posibilă, folosind o matrice de poartă 64 × 64 pe un cip Xilinx, crearea configurației necesare pentru a rezolva problema [4] . În aceiași ani, au început să fie utilizate pe scară largă pentru prototiparea circuitelor integrate specializate și a procesoarelor de uz general . La începutul anilor 2000, FPGA-urile au început să fie utilizate pentru a accelera operațiuni specifice în nodurile de server atât în industria HPC , cât și în motoarele de baze de date ( Netezza ). În a doua jumătate a anilor 2010, a existat o creștere a interesului față de tehnologie datorită eficacității aplicației sale pentru învățarea profundă (în primul rând datorită posibilității de implementare a aritmeticii cu precizie redusă și calcule fără registre - un analog al procesorului tensor Google ), iar furnizorii de infrastructură cloud au avut ocazia să achiziționeze FPGA prin abonament din cloudul public ( Amazon F1, Baidu , Tencent , Huawei ).
Până în 2018, volumul pieței globale de FPGA se ridica la aproximativ 5,7 miliarde de dolari, cei mai mari producători fiind Xilinx (51% din piață), Intel (36%, datorită activelor Altera ), Microcip (17%), Lattice Semiconductor (9%) [5] .
FPGA are trei tipuri de elemente programabile:
PLB-urile sunt elemente funcționale pentru construirea logicii utilizatorului. BVV asigură comunicarea între contactele carcasei și liniile interne de semnal. Resursele de comunicații interne programabile asigură controlul căilor de conectare pentru intrările și ieșirile PLB și unitățile de intrare-ieșire (I/O) la rețelele corespunzătoare [6] . Toate canalele de rutare au aceeași lățime (același număr de fire). Cele mai multe blocuri I/O (I/O) se potrivesc fie într-un rând (înălțime) fie într-o coloană (lățime) a matricei porții.
Blocul logic (LB) al FPGA clasic constă dintr-un tabel de adevăr ( English Lookup Table, LUT ) pentru mai multe intrări și un flip- flop (4 intrări au fost utilizate în implementările timpurii, ulterior - un număr mai mare de intrări, ceea ce a făcut-o posibil să se utilizeze un număr mai mic de blocuri logice pentru aplicații tipice [ 7] ).
Blocul logic (PLB) are un tabel de adevăr pentru patru intrări și o intrare de ceas. Există o singură ieșire bloc - un tabel de adevăr al ieșirii registrului sau fără registru. Deoarece semnalele de ceas din FPGA-urile comerciale (și adesea alte semnale care sunt paralelizate la un număr mare de intrări - semnale cu fanout mare) sunt direcționate într -un mod special prin circuite speciale de rutare, aceste semnale sunt gestionate separat.
Pentru exemplul de arhitectură dat, pinout-ul blocului logic este prezentat mai jos.
Intrările sunt situate pe părți separate ale blocului logic; pinul de ieșire poate fi direcționat în două canale: fie în dreapta blocului, fie în jos. Pinii de ieșire ai fiecărui bloc logic pot fi conectați la segmentele de rutare din canalele adiacente. În mod similar, un bloc de bloc I/O poate fi conectat la un element de rutare în orice canal adiacent. De exemplu, placa de sus a cipului poate fi conectată la oricare dintre conductorii W (unde W este lățimea canalului) în canalul orizontal direct sub acesta.
De obicei, rutarea FPGA este nesegmentată, adică fiecare segment de fir conectează doar un bloc logic la blocul de comutare. Datorită învelișului întrerupătoarelor programabile din blocul de comutatoare, urma este mai lungă. Pentru a crește viteza conexiunilor intrasistem, unele arhitecturi FPGA folosesc conexiuni de urmărire mai lungi între blocurile logice.
Blocurile de comutare sunt create la intersecția canalelor verticale și orizontale. Cu această arhitectură, fiecare conductor dintr-un bloc de comutatoare are trei comutatoare programabile care îi permit să se conecteze la alți trei conductori din segmentele de canal adiacente. Modelul sau topologia comutatoarelor utilizate în această arhitectură este topologia plană sau de domeniu a unităților de comutare. În această topologie, numărul de urmărire 1 se conectează doar la numărul de urmărire 1 în canalele adiacente, numărul de urmărire 2 se conectează doar la numărul de urmărire 2 și așa mai departe.
Familiile moderne de FPGA extind capacitățile enumerate mai sus și au încorporate funcții de nivel înalt, datorită cărora este posibilă reducerea suprafeței cipului și accelerarea execuției subsarcinilor tipice în comparație cu implementarea bazată pe primitive. Exemple de astfel de caracteristici sunt multiplexoarele, unitățile de procesare a semnalului digital , procesoarele încorporate, logica I/O rapidă și memoria încorporată.
FPGA-urile sunt, de asemenea, utilizate pe scară largă pentru sisteme de validare, inclusiv validarea pre-siliciu și post-siliciu, precum și în dezvoltarea de programe pentru sisteme încorporate . Acest lucru permite companiilor cu circuite integrate să testeze performanța dispozitivelor lor înainte de a le fabrica în fabrică, reducând timpul de lansare pe piață.
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |