Hva er FPGAer?

click fraud protection

Field Programmable Gate Arrays høres komplisert ut, men de åpner opp en helt ny verden for utviklere.

Hvis du noen gang har lest inn retrospillemulering, kan det hende du har kommet over en halvledertype kalt Field-Programmable Gate Array (FPGA). Dette er spesielle integrerte kretser som kan rekonfigurere seg selv etter å ha blitt produsert takket være konfigurerbare logiske blokker (CLB). Med andre ord, du kan i utgangspunktet omprogrammere brikkesettet til å fungere som enhver annen type digital krets, som har flere applikasjoner innen AI, brikkesettdesign og andre felt.

FPGA-er har mange bruksområder, og enheter som Analogue Pocket bruker dem til å støtte forskjellige håndholdte enheter. Microsoft bruker imidlertid også FPGA-er for å drive Bing siden det lar selskapet raskt omprogrammere dem til å støtte nye algoritmer etter hvert som de utvikles.

FPGA vs tradisjonelle CPUer: Hva er forskjellen?

I motsetning til et standard brikkesett — Snapdragon 8 Gen 2, for eksempel — en FPGA er ikke laget for å omprogrammeres i felten. Det er et System on Chip (SoC) som består av flere deler, inkludert en GPU, NPU og CPU. Når den er sendt, er det det forbrukere og bedrifter vil motta.

FPGA-er er imidlertid ment å være formbare slik at brukeren kan endre deler av brikken uten å introdusere noen ekstra kostnader eller risiko. I raskt bevegelige bransjer, som selvkjørende biler, kan nye forskrifter og standarder innføres når som helst for alle aspekter av enheten. Bruken av en FPGA kan tillate en OTA-oppdatering for å omprogrammere brikken til å støtte nye standarder.

En stor forskjell mellom FPGAer og tradisjonelle CPUer er at de er designet for å behandle data parallelt med en avveining av mye lavere klokkehastighet. For eksempel kan en FPGA med 10 rørledninger for databehandling utføre multiplikasjonsoperasjoner på to tall for hver rørledning, og multiplisere 20 tall per syklus. En tradisjonell CPU kan multiplisere to tall per syklus, per kjerne og i sekvensiell rekkefølge.

Hvordan fungerer FPGA-er for emulering?

FPGA-er brukes ofte til maskinvareemulering, og en interessant del av brikkesettdesignprosessen er bruken av FPGA-er for å emulere forskjellige deler av SoC i testing. Brikkesettdesignere kan bruke flere FPGA-er for å prototype en Application-Specific Integrated Circuit (ASIC). Et Hardware Description Language (HDL) brukes til å lage et maskinvaredesign, og dette språket forteller FPGA hvordan den skal ordne seg. Når det gjelder den analoge lommen, er disse designene distribuert i form av "kjerner" som vanligvis er skrevet i Verilog, og brukere kan laste ned en kjerne for å forberede den håndholdte for spesifikke konsoller.

For eksempel kan Analogue Pocket lese Game Boy-spill direkte i kassettsporet og spille dem som om det var den originale konsollen. Ikke bare det, men patronadaptere legger også til ekstra støtte for andre enheter, for eksempel Game Gear, Atari Lynx og mer. Dette er bare mulig på grunn av den omprogrammerbare naturen til en FPGA som bruker maskinvareemulering i stedet for programvareemulering for å sikre at spill er spillbare. En MiSTer (som bruker et DE-10 Nano FPGA-kort som base og krever tilleggsmoduler på toppen av det) er lik ved at den kan brukes til å etterligne konsoller som SNES, Sega Genesis og til og med GameCube. Maskinvareemulering er generelt mer nøyaktig enn programvareemulering, samtidig som den gir ytelsesfordeler.

Mens maskinvare eldes og kan bli upålitelig over tid, kan FPGA-er ganske enkelt omprogrammeres for å etterligne den samme maskinvareopplevelsen.

Det betyr selvfølgelig ikke at kjerner er en perfekt en-til-en HDL-tolkning av et brikkesett. De kommer ganske nærme, men rettelser og forbedringer er gjort på kjerner over tid for å fikse problemer som kan identifiseres ved normal bruk. Disse kjernene er laget ved omvendt utvikling av brikkesettene som går inn i disse enhetene, og de krever kartlegging av hver eneste komponent på hovedkortet. I de egendefinerte proprietære brikkesettene blir det enda vanskeligere, med utviklere som ofte trenger å se en "ulukket" brikke med et mikroskop for å se nøyaktig hva som foregår på innsiden av brikken og replikere den.

Derfor er FPGA-er også viktige for bevaring av maskinvare. Mens maskinvare eldes og kan bli upålitelig over tid, kan FPGA-er ganske enkelt omprogrammeres for å etterligne den samme maskinvareopplevelsen. Brikken vil omorganisere sin egen fysiske logikk i seg selv for å matche hvilken kjerne den er gitt. OpenFPGA-økosystemet er designet for å hjelpe til med bevaring av maskinvare.

På toppen av det får du den ekstra fordelen av å spille disse spillene på en legitim måte, men med bedre generell maskinvare. Du kan hente en analog lomme for $220 og spille Game Boy-spill akkurat som du ville gjort tidligere, men med høyere byggekvalitet, bedre skjerm og til og med dock-støtte.

Ulemper med FPGAer

DE-10 Nano for en MiSTER FPGA-konstruksjon

Det er imidlertid noen få ulemper. Til å begynne med tar de mye mer plass enn tradisjonelle CPUer, og de er også betydelig dyrere å produsere. Enheter som Analogue Pocket og MiSTER FPGA koster mye penger, med sistnevnte setter deg tilbake mer enn $500 hvis du også plukker opp noen få tillegg. De fleste ville bare foretrekke å emulere spill på smarttelefonene eller datamaskinene sine og bryr seg ikke om den piksel-perfekte nøyaktigheten som emulering på maskinvarenivå gir.

Selvfølgelig er FPGA-er også litt i sin forbrukerrelaterte barndom, med populariteten deres bare økende de siste årene. De har faktisk eksistert like lenge i profesjonelle brukssaker av forskere, brikkesettarkitekter, AI og lignende, men det er først de siste årene at forbrukerenheter har dukket opp og er levedyktige for bruk på mer uformelle eller entusiastiske måter.

For de fleste som ønsker å komme inn i emulering, er bekvemmeligheten av en dedikert enhet som garanterer en Opprinnelig opplevelse er fristende, men det er ikke noe alle trenger eller bryr seg om. Personlig, hvis jeg vil spille et spill som Super Mario Bros, spiller jeg det gjerne på telefonen mens jeg er på farten. Jeg trenger ikke en dedikert enhet for det, men jeg forstår appellen ved å ha en.