Käyttäjän ohjelmoitava gate array ( FPGA , englanniksi Field- Programmable Gate array, FPGA ) on puolijohdelaite , jonka valmistaja tai kehittäjä voi konfiguroida valmistuksen jälkeen; monimutkaisin ohjelmoitavien logiikkapiirien tyyppi organisaatiossa .
Ne ohjelmoidaan muuttamalla piirikaavion logiikkaa , esimerkiksi käyttämällä lähdekoodia laitteiston kuvauskielellä (esim . Verilog ). Niitä voidaan muokata lähes milloin tahansa käytön aikana. Koostuvat konfiguroitavista logiikkalohkoista, kuten kytkimistä, joissa on useita tuloja ja yksi lähtö ( logiikkaportit , portit ). Digitaalisissa piireissä tällaiset kytkimet toteuttavat binääriperusoperaatioita AND , NAND , OR , NOR ja XOR . Olennainen ero FPGA:iden välillä on se, että sekä lohkojen toimintoja että niiden välisten yhteyksien konfiguraatiota voidaan muuttaa piiriin lähetettävien erityisten signaalien avulla. Jotkut sovelluskohtaiset integroidut piirit ( ASIC ) käyttävät rakenteeltaan samanlaisia logiikkaryhmiä kuin FPGA:t, mutta ne konfiguroidaan kerran tuotannon aikana, kun taas FPGA:t voidaan ohjelmoida jatkuvasti uudelleen ja muuttaa yhteyksien topologiaa käytön aikana. Tällainen joustavuus vaatii kuitenkin mikropiirin transistorien lukumäärän merkittävää lisäystä.
Varhaisissa FPGA :issa vain porttien välisiä yhteyksiä voitiin muuttaa ohjelmoimalla [1] ; Vuonna 1985 Xilinxin perustajat Ross Freeman ja Bernard V. Vonderschmitt kehittivät ensimmäisen kaupallisesti menestyneen FPGA: n , XC2064:n, jossa on ohjelmoitavat portit ja ohjelmoitavat yhteydet niiden välillä (vuonna 2005 Freeman listattiin tästä keksinnöstä US National Inventors Hall of -järjestöön ) . Maine ). David Page ja Louwern Peterson patentoivat vuonna 1985 [2] [3] kenttäohjelmoitavien porttitaulukoiden, logiikkaporttien ja logiikkalohkojen konseptin . 1990-luvulla kiinnostus FPGA:ta kohtaan nousi jyrkästi, niiden monimutkaisuus ja tuotantomäärät kasvoivat: jos alkuvuosina niitä käytettiin pääasiassa tietoliikenne- ja viestintäverkkojen alalla, niin vuosikymmenen lopussa niille löytyi käyttöä mm. kulutustavaroita, autoteollisuudessa ja muilla aloilla.
Vuonna 1997 Adrian Thompson yhdisti geneettiset algoritmit ja FPGA-tekniikan luodakseen laitteen, joka pystyy erottamaan 1 kHz :n ja 10 kHz :n ääniäänet . Geneettiset algoritmit mahdollistivat Xilinx-sirun 64 × 64 porttiryhmän avulla ongelman ratkaisemiseksi tarvittavan konfiguraation luomisen [4] . Samana vuosina niitä alettiin käyttää laajalti erikoistuneiden integroitujen piirien ja yleiskäyttöisten prosessorien prototyyppien tekemiseen. 2000-luvun alussa FPGA:ita alettiin käyttää nopeuttamaan tiettyjä toimintoja palvelinsolmuissa sekä HPC -teollisuudessa että tietokantakoneissa ( Netezza ). 2010-luvun toisella puoliskolla kiinnostus tekniikkaa kohtaan lisääntyi, mikä johtui sen sovelluksen tehokkuudesta syväoppimiseen (ensisijaisesti mahdollisuudesta toteuttaa aritmetiikkaa pienemmällä tarkkuudella ja rekisterittömillä laskelmilla - Googlen tensoriprosessorin analogia ). ), ja infrastruktuurin pilvipalveluntarjoajilla oli mahdollisuus ostaa FPGA tilauksella julkisesta pilvestä ( Amazon F1 , Baidu , Tencent , Huawei ).
Vuoteen 2018 mennessä globaalien FPGA-markkinoiden volyymi oli noin 5,7 miljardia dollaria, suurimmat valmistajat ovat Xilinx (51 % markkinoista), Intel (36 % Alteran omaisuuden vuoksi ), Microchip (17 %), Lattice Semiconductor (9 %) [5] .
FPGA:ssa on kolmenlaisia ohjelmoitavia elementtejä:
PLB:t ovat toiminnallisia elementtejä käyttäjälogiikan rakentamiseen. BVV tarjoaa yhteyden kotelon koskettimien ja sisäisten signaalilinjojen välillä. Ohjelmoitavat sisäiset tietoliikenneresurssit ohjaavat PLB:n ja input-output-yksiköiden (I/O) tulojen ja lähtöjen yhteyspolkuja vastaaviin verkkoihin [6] . Kaikilla reitityskanavilla on sama leveys (sama määrä johtoja). Useimmat I/O-lohkot (I/O:t) mahtuvat joko yhdelle riville (korkeus) tai yhteen sarakkeeseen (leveys) porttitaulukossa.
Klassisen FPGA:n looginen lohko (LB) koostuu useille tuloille tarkoitetusta totuustaulukosta ( englanniksi lookup table, LUT ) ja yhdestä flip- flopista (alkuisissa toteutuksissa käytettiin neljä tuloa, myöhemmin - suurempi määrä tuloja, mikä teki siitä mahdollista käyttää pienempää määrää loogisia lohkoja tyypillisissä sovelluksissa [7] ).
Logiikkalohkossa (PLB) on totuustaulukko neljälle tulolle ja kellotulolle. On vain yksi lohkolähtö - rekisteri tai ei-rekisteritulosteen totuustaulukko. Koska kaupallisten FPGA:iden kellosignaalit (ja usein muutkin signaalit, jotka on rinnakkaistettu suureen määrään tuloja - high-fanout-signaaleja) reititetään erityisellä tavalla erityisillä reitityspiireillä, näitä signaaleja hallitaan erikseen.
Annetussa esimerkkiarkkitehtuurissa logiikkalohkon pinout on esitetty alla.
Tulot sijaitsevat logiikkalohkon eri puolilla; lähtönasta voidaan reitittää kahdessa kanavassa: joko lohkon oikealle puolelle tai alaosaan. Kunkin logiikkalohkon lähtönastat voidaan kytkeä vierekkäisten kanavien reitityssegmentteihin. Vastaavasti I/O-lohko voidaan liittää minkä tahansa viereisen kanavan reitityselementtiin. Esimerkiksi sirun ylätyyny voidaan liittää mihin tahansa W-johtimeen (jossa W on kanavan leveys) vaakasuuntaisessa kanavassa suoraan sen alapuolella.
Tyypillisesti FPGA-reititys on segmentoimaton, eli kukin lankasegmentti yhdistää vain yhden loogisen lohkon kytkinlohkoon. Kytkinlohkossa olevien ohjelmoitavien kytkimien ympärillä on jälki pidempi. Järjestelmän sisäisten yhteyksien nopeuden lisäämiseksi jotkin FPGA-arkkitehtuurit käyttävät pidempiä jäljitysyhteyksiä loogisten yksiköiden välillä.
Kytkinlohkot luodaan pysty- ja vaakasuuntaisten kanavien leikkauskohdassa. Tällä arkkitehtuurilla jokaisessa kytkinlohkon johtimessa on kolme ohjelmoitavaa kytkintä, joiden avulla se voidaan yhdistää kolmeen muuhun vierekkäisten kanavasegmenttien johtimeen. Tässä arkkitehtuurissa käytettyjen kytkimien malli tai topologia on kytkentäyksiköiden taso- tai aluetopologia. Tässä topologiassa jäljitys numero 1 muodostaa yhteyden vain jäljitykseen numero 1 viereisissä kanavissa, jäljitys numero 2 vain jäljitykseen numero 2 ja niin edelleen.
Nykyaikaiset FPGA-perheet laajentavat yllä lueteltuja ominaisuuksia ja niissä on sisäänrakennetut korkean tason toiminnot, joiden ansiosta on mahdollista pienentää sirualuetta ja nopeuttaa tyypillisten alitehtävien suorittamista primitiiviin perustuvaan toteutukseen verrattuna. Esimerkkejä tällaisista ominaisuuksista ovat multiplekserit, digitaaliset signaalinkäsittely-yksiköt , sulautetut prosessorit, nopea I/O-logiikka ja sulautettu muisti.
FPGA:ita käytetään myös laajalti validointijärjestelmissä, mukaan lukien piitä edeltävä ja piin jälkeinen validointi, sekä sulautettujen järjestelmien ohjelmien kehittämisessä . Tämän ansiosta integroitujen piirien yritykset voivat testata laitteidensa suorituskykyä ennen niiden valmistamista tehtaalla, mikä lyhentää markkinoilletuloaikaa.
prosessoritekniikat | Digitaaliset|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkkitehtuuri | |||||||||
Ohjesarjan arkkitehtuuri | |||||||||
koneen sana |
| ||||||||
Rinnakkaisuus |
| ||||||||
Toteutukset | |||||||||
Komponentit | |||||||||
Virranhallinta |