Den fristående FPGA:n började användas 1984. På den tiden introducerade Xilinx och Actel produkter som i första hand var avsedda för industriella tillämpningar med låg volym och prototyper som praktiska ”plåster” för att täppa till hål i systemlogik. Altera, Lucent och Agere utvecklade FPGA:er i nätverks- och telekomtillämpningar. Efterföljande processkrympning, lägre maskkostnader och integrering av SRAM-block, stora MAC:ar, konnnetktivitet i form av konfigurerbara in- och utgångar liksom snabba Serdesblock innebar att användningen av FPGA:er började växa på allvar från 1995. Under de senaste tio åren har FPGA:er fortsatt att sprida sig, och priserna har fallit så lågt att FPGA:er är mycket lönsamma också vid tillämpningar med hög volym till funktioner som tidigare endast har associerats till DSP:er, GPU:er och MCU:er.
På senare tid har billiga FPGA:e med låg effektförbrukning inneburit ett nytt uppsving inom FPGA-utveckling. Nu används FPGA:er i datacenter som maskinvaruacceleratorer för paketinspektion, databasacceleration och säkerhet, maskininlärning och programvarudefinierad nätverkshantering.
FPGA-block i CPU:er
Den här idén har tidigare mött mycket motstånd. Utvecklare av systemkretsar var tveksamma till att släppa sina farhågor om storlek, hastighet och kostnad, men så är inte längre fallet. FPGA:er har gjort exponentiella framsteg på samtliga områden. Det är heller inte så att CPU:er har utvecklats så att de rimligtvis kan ta på sig den bearbetningsbelastning som krävs. CPU:er ger allmän beräkningsflexibilitet, men de har helt enkelt för hög overhead för många högrepetitiva uppgifter.
Uppskatta det grundläggande
Alla moderna CPU:er använder i princip en modifierad Harvardarkitektur för lagring och hämtning, där instruktioner och data lagras separat och skickas längs skilda vägar. Instruktionsuppsättningar kommuniceras på kontrollnivå. De beskriver hur data ska behandlas, liksom hur hela systemet ska administreras.
Det konstanta behovet av att kontinuerligt läsa in (ofta mycket komplexa) instruktioner och lagra bearbetat data, behovet av att ha ett antal olika fasta maskinvarustrukturer på ”stand by” för databehandling i samma chip, samt behovet av att kontinuerligt växla kontext (efter ca 100 cykler) för att utföra olika uppgifter, gör CPU:n relativt ineffektiv för att hantera komplicerade men repetitiva uppgifter.
En FPGA är en matris av logiska block som är sammanlänkade via omkonfigurerbara signalvägar som kopplas om för att utföra mycket specifika uppgifter. Både FPGA:er och CPU:er bearbetar förstås instruktioner och data separat med hjälp av minne och logik. FPGA:er använder minnet för att konfigurera uppslagstabeller, multiplexers, delvis fyllda kopplingsmatriser och ett antal andra element. Det finns dock en avgörande skillnad. En CPU är optimerad för snabb växla uppgift. Den läser in instruktioner och data från register och minnen och läser sedan, inom några cykler, in en helt ny uppsättning instruktioner och data.
Att konfigurera om en FPGA är en relativt resurskrävande process som kräver att nya konfigurationer flyttas till konfigurations-RAM, så det är opraktiskt att göra för ofta. När den har konfigurerats kan dock en FPGA emulera digital logik i hastigheter som är likvärdiga med dedicerade kretsar. På samma sätt som en CPU är överlägsen för varierade uppgifter är därför en FPGA överlägsen för repetitiva (och särskilt parallella) uppgifter som upprepas tusentals gånger och endast ändras ibland.
FPGA-strukturer kommer att integreras i CPU:er
Branschen har visat stor övertygelse om att dessa två typer av enheter kan skapa värde genom att integreras närmare varandra. Intels uppköp av Altera för 16,7 miljarder dollar är ett tydligt tecken på det. Intel hoppas kunna utveckla moduler som utnyttjar både Alteras FPGA:er och de egna CPU:erna för att accelerera datacenter. Med tanke på utvecklingen mot högre prestanda, lägre kostnader och effektivare energianvändning är det ofrånkomligt att dessa två strukturer kommer att förenas i samma enhet, där FPGA-strukturer integreras i CPU:er som IP-block.
Achronix hoppas bli framstående i denna utveckling med sitt IP-block kallat Speedcore som bygger på de fristående FPGA:erna i Speedster-familjen. Speedsterfamiljen är redan känd i branschen för sina höga prestanda och sofistikerade routingsarkitektur. Nu kan företag använda Speedcore eFPGA för att utnyttja fördelarna med integrerad FPGA-struktur i CPU/SoC-enheter.
De resulterande SoC-enheterna med eFPGA-struktur klarar högre prestanda än vad som är möjligt med ett separat FPGA-chip. Det beror delvis på grund av den högre tillgängliga bandbredden. Eftersom inga signaler behöver passera via bussarna och därmed Serdesblocken, och protokollkodning som PCIe, kan dessutom fördröjningarna minskas med en faktor 10. eFPGA-element kan struktureras så att de blir cachekoherenta, för snabbare systemprestanda. Förutom dessa funktionsfördelar minskar integrationen av en FPGA-struktur strömförbrukningen betydligt. Kostnadsbesparingar kan också uppnås på bredare systemnivå tack vare att stödkomponenter som kylning, passiva kretsar, klockgeneratorer, nivåskiftare och effektregulatorer kan elimineras.
Nu närmar vi oss en punkt där FPGA-strukturer kan integreras i vardagliga CPU/SoC-konstruktioner på ett användbart, överkomligt och praktiskt sätt, utan att opraktiska mängder tid eller komplexitet läggs till i designprocessen. Som jag ser det är det oundvikligt att branschen rör sig i den här riktningen. Den riktigt spännande frågan är: vilka oväntade tillämpningar kommer att dyka upp för den här allmänna arkitekturmetoden, och hur kommer eFPGA-branschen att svara på detta behov.
Alok Sanghavi
Produktmarknadsförare, Achronix