Vad är FPGA?

Field Programmable Gate Arrays låter komplicerat, men de öppnar upp en helt ny värld för utvecklare.

Om du någonsin har läst in retrospelemulering kan du ha stött på en halvledartyp som kallas Field-Programmable Gate Array (FPGA). Dessa är speciella integrerade kretsar som kan omkonfigurera sig själva efter att ha tillverkats tack vare konfigurerbara logiska block (CLB). Med andra ord kan du i princip programmera om chipsetet så att det fungerar som vilken annan typ av digital krets som helst, som har flera tillämpningar inom AI, chipsetdesign och andra områden.

FPGA: er har många användningsfall, och enheter som Analogue Pocket använder dem för att stödja olika handhållna enheter. Men Microsoft använder också FPGA: er för att driva Bing eftersom det gör det möjligt för företaget att snabbt omprogrammera dem för att stödja nya algoritmer allt eftersom de utvecklas.

FPGA vs traditionella CPU: er: Vad är skillnaden?

I motsats till en vanlig chipset — den Snapdragon 8 Gen 2, till exempel — en FPGA är inte utformad för att omprogrammeras i fält. Det är ett System on Chip (SoC) som består av flera delar, inklusive en GPU, NPU och CPU. När den väl har skickats är det vad konsumenter och företag kommer att få.

FPGA: er är dock avsedda att vara formbara så att användaren kan byta delar av chippet utan att införa några extra kostnader eller risker. I snabbrörliga industrier, såsom självkörande bilar, kan nya regler och standarder införas när som helst för alla aspekter av enheten. Användningen av en FPGA kan möjliggöra en OTA-uppdatering för att programmera om chippet för att stödja nya standarder.

En stor skillnad mellan FPGA: er och traditionella CPU: er är att de är utformade för att behandla data parallellt med en avvägning av mycket lägre klockhastighet. Till exempel kan en FPGA med 10 pipelines för databehandling utföra multiplikationsoperationer på två tal för varje pipeline, multiplicera 20 tal per cykel. En traditionell CPU kan multiplicera två tal per cykel, per kärna och i sekventiell ordning.

Hur fungerar FPGA: er för emulering?

FPGA: er används ofta för hårdvaruemulering, och en intressant del av chipsetdesignprocessen är användningen av FPGA: er för att emulera olika delar av SoC i testning. Chipsetdesigners kan använda flera FPGA: er för att prototypa en Application-Specific Integrated Circuit (ASIC). Ett Hardware Description Language (HDL) används för att skapa en hårdvarudesign, och detta språk talar om för FPGA: n hur den ska ordna sig. När det gäller den analoga fickan distribueras dessa designs i form av "kärnor" som vanligtvis är skrivna i Verilog, och användare kan ladda ner en kärna för att förbereda handdatorn för specifika konsoler.

Till exempel kan Analogue Pocket läsa Game Boy-spel direkt i sin patronplats och spela dem som om det vore originalkonsolen. Inte bara det, utan patronadaptrar lägger till ytterligare stöd för andra enheter också, som Game Gear, Atari Lynx och mer. Detta är bara möjligt på grund av den omprogrammerbara naturen hos en FPGA som använder hårdvaruemulering istället för mjukvaruemulering för att säkerställa att spel är spelbara. En MiSTer (som använder ett DE-10 Nano FPGA-kort som bas och kräver ytterligare moduler ovanpå det) är liknande genom att den kan användas för att emulera konsoler som SNES, Sega Genesis och till och med Spel kub. Hårdvaruemulering är i allmänhet mer exakt än mjukvaruemulering samtidigt som den erbjuder prestandafördelar.

Medan hårdvara åldras och kan bli opålitlig med tiden, kan FPGA: er helt enkelt omprogrammeras för att efterlikna samma hårdvaruupplevelse.

Naturligtvis betyder det inte att kärnor är en perfekt en-till-en HDL-tolkning av en styrkrets. De kommer ganska nära, men korrigeringar och förbättringar görs av kärnor över tid för att fixa problem som kan identifieras vid normal användning. Dessa kärnor är gjorda genom omvänd konstruktion av styrkretsen som ingår i dessa enheter, och de kräver kartläggning av varje komponent på moderkortet. I de anpassade proprietära styrkretsen blir det ännu svårare, med utvecklare som ofta behöver se ett "olockat" chip med ett mikroskop för att se exakt vad som händer inuti chipet och replikera det.

Det är därför FPGA: er också är viktiga för bevarande av hårdvara. Medan hårdvara åldras och kan bli opålitlig med tiden, kan FPGA: er helt enkelt omprogrammeras för att efterlikna samma hårdvaruupplevelse. Chipet kommer att ordna om sin egen fysiska logik inuti sig själv för att matcha vilken kärna det än ges. OpenFPGA-ekosystemet är utformat för att hjälpa till med att bevara hårdvaran.

Utöver det får du den extra fördelen av att spela dessa spel på ett legitimt sätt men på bättre övergripande hårdvara. Du kan hämta en analog ficka för $220 och spela Game Boy-spel precis som du skulle ha gjort tidigare, men med högre byggkvalitet, bättre skärm och till och med dockningsstöd.

Nackdelar med FPGA

DE-10 Nano för ett MiSTER FPGA-bygge

Det finns dock några nackdelar. Till att börja med tar de upp mycket mer utrymme än traditionella processorer, och de är också betydligt dyrare att tillverka. Enheter som Analogue Pocket och MiSTER FPGA kostar mycket pengar, med det senare ställer du tillbaka mer än $500 om du också hämtar några tillägg. De flesta människor skulle bara föredra att emulera spel på sina smartphones eller sina datorer och bryr sig inte om den pixel-perfekta noggrannheten som emulering på hårdvarunivå ger.

Naturligtvis är FPGA också något i sin konsumentrelaterade linda, och deras popularitet har bara ökat under de senaste åren. De har faktiskt funnits lika länge i professionella användningsfall av forskare, chipsetarkitekter, AI och liknande, men det är först på senare år som konsumentenheter har dykt upp och är lönsamma för användning på mer avslappnade eller entusiastiska sätt.

För de flesta som vill komma in i emulering är bekvämligheten med en dedikerad enhet som garanterar en Den ursprungliga upplevelsen är lockande, men det är inte något som alla behöver eller ens bryr sig om. Personligen, om jag vill spela ett spel som Super Mario Bros, spelar jag det gärna på min telefon när jag är på språng. Jag behöver ingen dedikerad enhet för det, men jag förstår överklagandet med att ha en.