Gli array di gate programmabili sul campo sembrano complicati, ma aprono un mondo completamente nuovo per gli sviluppatori.
Se hai mai letto qualcosa sull'emulazione dei giochi retrò, potresti esserti imbattuto in un tipo di semiconduttore chiamato Field-Programmable Gate Array (FPGA). Si tratta di speciali circuiti integrati in grado di riconfigurarsi dopo essere stati fabbricati grazie a blocchi logici configurabili (CLB). In altre parole, è possibile riprogrammare il chipset affinché agisca come qualsiasi altro tipo di circuito digitale, che ha molteplici applicazioni nell'intelligenza artificiale, nella progettazione di chipset e in altri campi.
Gli FPGA hanno molti casi d'uso e dispositivi come Analogue Pocket li utilizzano per supportare diversi dispositivi portatili. Tuttavia, Microsoft utilizza anche gli FPGA per alimentare Bing poiché consente all'azienda di riprogrammarli rapidamente per supportare nuovi algoritmi man mano che vengono sviluppati.
FPGA vs CPU tradizionali: qual è la differenza?
A differenza di un chipset standard, il Snapdragon 8 Gen 2, ad esempio: un FPGA non è progettato per essere riprogrammato sul campo. È un System on Chip (SoC) composto da più parti, tra cui GPU, NPU e CPU. Una volta spedito, questo è ciò che riceveranno i consumatori e le aziende.
Gli FPGA, tuttavia, sono pensati per essere malleabili in modo che l'utente possa modificare parti del chip senza introdurre costi o rischi aggiuntivi. Nei settori in rapida evoluzione, come quello delle automobili a guida autonoma, è possibile introdurre in qualsiasi momento nuove normative e standard per qualsiasi aspetto del dispositivo. L'uso di un FPGA può consentire un aggiornamento OTA per riprogrammare il chip per supportare nuovi standard.
Una grande differenza tra FPGA e CPU tradizionali è che sono progettati per elaborare i dati in parallelo con un compromesso con una velocità di clock molto inferiore. Ad esempio, un FPGA con 10 pipeline per l'elaborazione dati può eseguire operazioni di moltiplicazione su due numeri per ciascuna pipeline, moltiplicando 20 numeri per ciclo. Una CPU tradizionale può moltiplicare due numeri per ciclo, per core e in ordine sequenziale.
Come funzionano gli FPGA per l'emulazione?
Gli FPGA vengono spesso utilizzati per l'emulazione hardware e una parte interessante del processo di progettazione del chipset è l'uso degli FPGA per emulare diverse parti del SoC durante i test. I progettisti di chipset possono utilizzare più FPGA per prototipare un circuito integrato specifico per l'applicazione (ASIC). Per creare un progetto hardware viene utilizzato un linguaggio di descrizione hardware (HDL) e questo linguaggio indica all'FPGA come organizzarsi. Nel caso di Analogue Pocket, questi progetti sono distribuiti sotto forma di "core" tipicamente scritti in Verilog e gli utenti possono scaricare un core per preparare il palmare per console specifiche.
Ad esempio, l'Analog Pocket può leggere i giochi per Game Boy direttamente nello slot per le cartucce e riprodurli come se fosse la console originale. Non solo, ma gli adattatori per cartucce aggiungono ulteriore supporto anche per altri dispositivi, come Game Gear, Atari Lynx e altri. Ciò è possibile solo grazie alla natura riprogrammabile di un FPGA che utilizza l'emulazione hardware anziché l'emulazione software per garantire che i giochi siano giocabili. Un MiSTer (che utilizza una scheda FPGA DE-10 Nano come base e richiede moduli aggiuntivi sopra di essa) è simile in quanto può essere utilizzato per emulare console come SNES, Sega Genesis e persino il Game Cube. L'emulazione hardware è generalmente più accurata dell'emulazione software e offre anche vantaggi in termini di prestazioni.
Sebbene l’hardware invecchi e possa diventare inaffidabile nel tempo, gli FPGA possono essere semplicemente riprogrammati per emulare la stessa esperienza hardware.
Naturalmente, ciò non significa che i core siano una perfetta interpretazione HDL uno a uno di un chipset. Si avvicinano abbastanza, ma nel tempo vengono apportate correzioni e miglioramenti ai core per risolvere i problemi che potrebbero essere identificati durante il normale utilizzo. Questi core sono realizzati mediante il reverse engineering dei chipset utilizzati in questi dispositivi e richiedono la mappatura di ogni singolo componente sulla scheda madre. Nei chipset proprietari personalizzati diventa ancora più difficile, con gli sviluppatori che spesso hanno bisogno di vedere un chip "senza cappuccio" con un microscopio per vedere cosa succede esattamente all'interno del chip e replicarlo.
Ecco perché gli FPGA sono importanti anche per la preservazione dell'hardware. Sebbene l’hardware invecchi e possa diventare inaffidabile nel tempo, gli FPGA possono essere semplicemente riprogrammati per emulare la stessa esperienza hardware. Il chip riorganizzerà la propria logica fisica al suo interno per adattarla al nucleo che gli viene fornito. L'ecosistema openFPGA è progettato per aiutare nella conservazione dell'hardware.
Oltre a ciò, ottieni l'ulteriore vantaggio di giocare a quei giochi in modo legittimo ma su un hardware complessivamente migliore. Puoi acquistare un Analogue Pocket per $ 220 e giocare ai giochi Game Boy proprio come avresti fatto in passato, ma con una qualità costruttiva più elevata, uno schermo migliore e persino il supporto dock.
Svantaggi degli FPGA
Tuttavia, ci sono alcuni inconvenienti. Tanto per cominciare, occupano molto più spazio delle CPU tradizionali e sono anche molto più costose da produrre. Dispositivi come Analogue Pocket e MiSTer FPGA costano un sacco di soldi, con quest'ultimo che ti costa più di $ 500 se raccogli anche alcuni componenti aggiuntivi. La maggior parte delle persone preferirebbe semplicemente emulare i giochi sui propri smartphone o computer e non si preoccupa della precisione pixel perfetta fornita dall'emulazione a livello hardware.
Naturalmente, anche gli FPGA sono in qualche modo nella loro infanzia legata al consumo, con la loro popolarità in aumento solo negli ultimi anni. In realtà sono in circolazione da tanto tempo in casi d'uso professionali da parte di scienziati, architetti di chipset, intelligenza artificiale e simili, ma è solo negli ultimi anni che i dispositivi consumer sono comparsi e sono utilizzabili in modi più casuali o entusiasti.
Per la maggior parte delle persone che vogliono entrare nell'emulazione, la comodità di un dispositivo dedicato che garantisce a l'esperienza fedele all'originale è allettante, ma non è qualcosa di cui tutti hanno bisogno o di cui tutti si preoccupano. Personalmente, se voglio giocare a un gioco come Super Mario Bros, sono felice di giocarci semplicemente sul telefono mentre sono in movimento. Non ho bisogno di un dispositivo dedicato, ma capisco il fascino di averne uno.