eFPGA: Hur de kommer att förändra maskinvarans framtid

eFPGA

Tanken att få en FPGA integrerad i en processor som om det bara var en annan enhet är inte en nyhet, eFPGA har funnits i flera år, men köpet av Xilinx av AMD för några veckor sedan tillsammans med Altera för ett par år sedan år av Intel öppna möjligheten för en eller flera FPGA inom SoC, CPU och GPU.

FPGA är en typ av enhet som inte är så vanligt i processorer och GPU: er, men dessa börjar redan integreras i SoC, CPU och GPU. Anledningen? Chipområdet blir allt dyrare och utrymmet måste optimeras. Det är därför arkitekter måste tänka på hur varje transistor räknas och att det inte finns några oanvända döda utrymmen, speciellt när det gäller I / O-gränssnitt.

Det är här eFPGA: er kommer in, en lösning som består av att integrera programlogik i form av en FPGA i en SoC, en CPU eller ett GPU, med idén att maximera chipets yta hela tiden och kunna anpassa det till varje specifik konfigurations behov.

Vad är en FPGA?

FPGA arquitectura

En FPGA är en matris av programmerbara logiska grindar, som kan konfigureras på något sätt så att matrisen fungerar som ett specifikt chip. De används i miljöer där dedikerad hårdvara är nödvändig men är så specialiserad att masstillverkning inte är lönsam, liksom för prototypning av nya funktioner för framtida processorer.

FPGA: er består av flera block med konfigurerbar logik som är sammankopplade. Dessa skiljer sig från andra processorer genom att logiken i deras kretsar inte kan ändras i resten. Du kan inte omvandla en CPU till en GPU efter tillverkningen, men det kan göras med en FPGA genom att ladda en konfigurationsfil som omprogrammerar dess logiska grindar.

Uppenbarligen har denna programmeringskapacitet flera motsvarigheter, den första är att den inte kan nå klockhastigheterna för chipsen som är FPGA, den andra är att överskottet av kretsar på grund av konfigurationsnivån för dessa ger ett större behov av antal transistorer och därmed område.

Hur implementeras en eFPGA?

eFPGA

Konceptet kallas eFPGA eller inbäddad FPGA. Den består av att integrera en FPGA som en del av en SoC och därför inte som ett separat chip, vilket öppnar möjligheten att denna typ av enheter antas av den allmänna marknaden.

Som i en integrerad GPU förloras den yttre ringen som kommunicerar den dedikerade FPGA med utsidan eftersom detta är vanligt för hela SoC. Vilket minskar storleken på SoC med 25% jämfört med dess dedikerade version.

eFPGA vs FPGA

Fördelen med eFPGA är att genom att använda samma kommunikationshastighet som resten av SoC-elementen, blir den snabbare när den kommunicerar. En eFPGA, som är på samma processor och använder samma kablar för att kommunicera, kommer att fungera mycket snabbare än att ha en standard FPGA separerad från CPU, vilket representerar en ökning av prestanda jämfört med eFPGA, inte en dedikerad FPGA, detta Det tillåter oss att göra saker som inte är möjliga med en vanlig FPGA, men samtidigt är vi begränsade till vad som kan göras i en eFPGA eftersom det inte finns så mycket utrymme som i en FPGA.

Detta innebär att det för närvarande finns två scenarier för att implementera en FPGA som en integrerad del av ett system. Den första är eFPGA, den andra är FPGA som chipet, vilket är en separat fråga och täcker mycket olika marknader. Du kan till exempel överväga att skapa ett neuralt nätverk för AI med en icke-inbäddad FPGA, vilket du inte kan göra i en eFPGA.

eFPGA för I / O på CPU: er och PC-GPU: er.

eFPGA

Den mest uppenbara applikationen är I / O-gränssnitt, till exempel kan vi implementera ett USB-gränssnitt med en FPGA och en SerDES och omkonfigurera båda för att fungera som ett SATA-gränssnitt. Vi kan också göra detsamma med en FPGA och en radio ansluten till den för att till exempel konvertera en WiFi Direkt gränssnitt till en Bluetooth-enhet beroende på behovet av konfigurationen. Tanken är inte att slutanvändaren gör dessa ändringar, utan snarare att det är monteraren eller tillverkaren av hårdvarukomponenten som gör dessa ändringar.

Det är också möjligt att implementera det i en GPU, det kan till exempel vara att skärmar med DP 2.0-stöd visas och din GPU endast har stöd för DP 1.4, men tack vare det faktum att videodrivrutinen har implementerats i en FPGA kan detta omprogrammeras och få stöd för den nya videoutgången. Det kan också vara så att du har köpt GPU för gruvdrift och att du inte är intresserad av att visa grafik, i så fall kan du konfigurera om FPGA för skärmutgången i en kryptografisk processor eller till och med en liten ASIC för att påskynda gruvdrift.

I allmänhet kan eFPGA användas för att ersätta externa gränssnitt på en processor och ofta finns på kringutrustningen utan att behöva göra om chipet. Inte bara ingångs- och utgångsgränssnitt utan också ram, till exempel att gå från ett DDR4-gränssnitt till en LPDDR4 utan att behöva tillverka två olika chips.

eFPGA integrerad i kärnan i en CPU

Patente eFPGA AMD

Ett av sätten på vilket processorer kommer att öka sin prestanda i framtiden kommer att vara genom att fokusera detta på vanliga och repetitiva delar av koden. En annan lösning skulle vara accelerationen av de tunga delarna av koden som skulle utföras av specialiserade enheter.

Precis nästan samtidigt med köpet av Xilinx publicerade AMD ett patent där man talade om användningen av FPGA för att påskynda vissa instruktioner, vilket skulle gå till en ytterligare integrationsnivå. FPGA: s redan inne i processorn och inte som ett extra element i SoC.

  • En processor kan innehålla en eller flera programmerbara exekveringsenheter, som kan konfigureras om för att utföra alla typer av instruktioner.
  • Nämnda exekveringsenheter är eFPGA, den del av CPU som ansvarar för datafångstnings- och avkodningsstegen är gemensamma för alla CPU: er och ansvarar för att distribuera instruktionerna som ska utföras till eFPGA som fungerar som exekveringsenheten.
  • När processorn laddar en tråd laddar den också den typ av exekveringsenheter som krävs för att utföra denna, så eFPGA: erna konfigureras som sådana tack vare de interna konfigurationsfilerna.
  • EFPGA kan omprogrammeras i farten och var och en för en annan funktion.

Till exempel kan ett program använda heltalsenheter mycket men inte SIMD-enheten, för om exekveringsenheterna implementeras som eFPGA kan vi omkonfigurera den som var som en SIMD-enhet för att fungera som en ytterligare heltalsenhet.