Tscheff
Bekanntes Mitglied
Hatte das hier auf meinem Blog (https://blog.retr0.party) geschrieben. Vlt interessiert es ja doch noch jemanden. Habe mit den Analogue-Geräten und seit neuestem auch mit dem MisterFPGA sehr viel Spaß. Auch die Kids und meine Frau spielen das Zeug irgendwie DERZEIT viel lieber als den aktuellen Kram.
DIESES Gedöns hat man mit FPGA nicht Innerhalb eines FPGAs können mehrere Konsolen-Chips gleichzeitig simuliert werden. Und das tolle ist, dass man einem FPGA sagen kann, dass es zB nur mit 1,7Mhz agieren solle. Auch die Skalierung und die Ausgabe auf HDMI ist bei FPGA kein Problem - oder zumindest bei FPGA-Konsolen - da man eigentlich nur hinter den FPGA-Chip einen weiteren Chip klemmt, der das Bild passend dann ausgibt. Bei der Software-Emulation muss auch DAS zusätzlich von der Software innerhalb der Orchestrierung mit dem passenden Clock der Konsole getan werden. Erbsenzählerei natürlich. Aber für Enthusiasten macht das eben durchaus den Unterschied.
WAS IST FPGA?
Grundsätzlich ist es mal so, dass FPGA (https://de.wikipedia.org/wiki/Field_Programmable_Gate_Array) eigentlich ein alter Hut ist und in der Industrie schon sehr viel länger als in Consumer-Geräten verwendet wird. Stellt euch vor, ihr hätte einen Chip, bei dem ihr jederzeit festlegen könnt, wie sich die Transistoren (oder besser die “Logik-Gatter” innerhalb des Chips verhalten sollen. Also eigentlich so eine Art T-1000 auf Chip-Ebene. So ein FPGA-Chip hat also die Möglichkeit, dass ein Entwickler ihm zum Zeitpunkt X eine Art Schaltbild mitteilt und ihm dann sagt “Wenn Strom bei dir anliegt an deinen verschiedenen Eingängen, dann hast du gefälligst am Ende das folgende Ergebnis auszuspucken”. Mal sehr simplifiziert. Das wird mit der sogenannten HDL gemacht (siehe Wikipedia https://de.wikipedia.org/wiki/Hardwarebeschreibungssprache). Ich kann mich also zB Daheim hinsetzen, kann mir so einen FPGA holen mit zB drei Eingängen, kann hinter den Chip ein paar LEDs packen und kann jetzt vorm Start mittels HDL den Chip so einstellen, dass er für verschiedene Konfigurationen die LEDs an oder ausschaltet. “Häh? Für was brauch ich da so einen Chip? Das kann ich doch mit normalen Schaltungen auch selbst löten!” Richtig. Aber jetzt kommt eben die Krux. Wenn ich Lust habe, dass die LEDs nach einem Tag jetzt anders geschaltet werden sollen, dann muss ich das nur in meiner HDL ändern, schnell auf den FPGA bringen und schwups habe ich da eine Art, die LEDs blinken zu lassen. “Boah ey, toll, das kann ich mit einem Microcontroller auch.” RICHTIG. Aber jetzt kommen wir zu den feinen Unterschieden. Der Microcontroller bekommt dieses Verhalten nicht auf der “Stromebene” sondern auf der “Software-Ebene”. D.h. in einem Micro-Controller wird - natürlich da dann oft auf Maschinencode-Ebene - das Verhalten implementiert und wenn nun Strom an den Eingängen anliegt, dann wird der Code ausgeführt und das erwartete Ergebnis dann an den Ausgang gepackt. Ihr seht schon, dass wir in einem Microcontroller nun eigentlich schon eine Ebene mehr haben: • 1. Strom liegt an • 2. Dieser Strom wird interpretiert • 3. Strom wird passenden an den Ausgängen ausgegeben. Bei einem FPGA-Chip passiert alles auf Strom-Ebene. Der Strom fließt also durch die “Gatter” und kommt dann passend am Ende wieder raus (Auch hier wieder mega simplifiziert zur Veranschaulichung).SUPER? UND FÜR WAS BRAUCHT MAN JETZT DIESES FPGA?
FPGAs werden seit Jahrzehnten in der Herstellung von Schaltungen und CPUs benötigt, um geplante Weiter- und Neuentwicklungen zu testen. Stellt euch vor, ihr seid ein super, dufter Intel-Ingenieur und würdet jetzt gerne die Funktionsweise eures neuen Super-Chips testen, ohne dass dieser hergestellt werden muss. Genau DAFÜR kann man FPGAs verwenden. FPGAs haben natürlich den Nachteil, dass diese Aufgrund ihrer Flexibilität deutlich größer (komplizierter) herzustellen sind, als der Chip selbst am Ende und man hat es dann oft mit FPGA-ANLAGEN zu tun, die mehrere Räume/Racks umfassen. So wird dann der Schaltplan einer neuen CPU mit HDL beschrieben und dann werden die Millionen an FPGA-Logik-Gatter passend konfiguriert und der Plan des Chips (also der Entwurf) kann auf seine Funktionalität getestet werden. Das war so einer der ERSTEN Anwendungsfälle, für die die Teile eigentlich gebraucht wurden. Durch die Weiterentwicklung und dadurch, dass auch FPGAs leistungsfähiger und kleiner wurden, werden FPGAs mittlerweile genutzt, um “Alt”-Systeme in Produktionen oder Geräten los zu werden. Aber auch in Autos werden FPGAs gerne genutzt, da es für viele Anwendungsfälle einfach keine optimalen Chips gibt. In diesem Falle kann jemand einfach das FPGA so einstellen, dass es für gewisse Situationen optimal funktioniert (zB autonomes Fahren) etc. Da es in vielen Situationen in der Industrie oftmals keine Standards gibt, ist es für Hersteller einfach zu teuer, Chips herstellen zu lassen, die exakt den Anwendungsfall abdecken. Also stellt man sich die Chips dann einfach selbst mithilfe von FPGAs her. Das ist flexibler. Und zusätzlich ist man nicht auf mehrere Chip-Hersteller angewiesen und kann stattdessen in Großen Margen von FPGA-Herstellern kaufen. Aber auch in anderen Industriezweigen werden FPGAs gerne verwendet. Im Endeffekt immer dann, wenn auf Hardware-Ebene möglichst ohne Latenz, mit maximaler Flexibilität und für dedizierte Fälle Chips gebraucht werden (zB DACs).OK. UND WAS HAT DAS JETZT MIT KONSOLEN ZU TUN?
Naja. Genauso, wie FPGAs IRGENDWELCHE Chips darstellen können, können die ja genauso auch Konsolen-Chips “emulieren”. Emulieren ist hierbei nicht ganz richtig. Man muss eigentlich von simulieren sprechen, da sie in ihrer Funktion eben ein fast perfektes Ebenbild sind und den “Strom” perfekt nachbilden. Eben diese Fähigkeit macht sich Analogue mit ihren Geräten zu nutze. Gerade von GB(A)/NES/SNES gibt es mittlerweile durch die Jahrzehnte SEHR exaktes Reverse Engineering, was im Endeffekt die Chips einer jeder Konsolen auf “Schaltungsebene” beschreibt. Somit nimmt Analogue eben dieses Wissen und konfiguriert ihre FPGAs so, dass sich diese wie ihre Ebenbilder verhalten. Man HAT ALSO in den Analogue-Geräten auf der Hardware-Ebene ein perfektes Ebenbild der Konsolen-Architektur, wie man sie auch in den Originalen wieder findet. Und der Witz ist, dass sich bei Konsolen nicht nur Chips in den Konsolen sondern auch in den Modulen wieder finden!JO. SUPER. UND WAS IST DARAN JETZT BESSER ALS MIT SOFTWARE-EMULATION?
Auch Heute gibt es immer noch Probleme mit Software-Emulation. Viele dieser Probleme haben mit Performance und mit Timings zu tun. Das meiste rührt daher, dass Software-Emulation eben NICHT auf der untersten Ebene des “Stromes” passiert, sondern es noch viele weitere Schichten gibt, die parallel zu einem Spiel ausgeführt und durchlaufen werden müssen. Arbeitsspeicher - Programm - Betriebssystem - Maschinencode - Bus - CPU - (vielleicht wieder zurück) - GPU - Anzeige. Dazu kommt noch, dass in einer Konsole viele Komponenten parallel ihre Arbeit verrichten und die CPU der Konsole als zentrale Koordinationseinheit verwendet werden kann. Somit arbeiten pro “Tick”, die eine CPU und die Komponenten machen können, eben Audio und GPU und auch der Chip im Modul parallel und liefern eben diese Ergebnisse dann auch parallel der CPU, dass diese damit was anfangen kann. In der Software-Emulation ist diese Orchestrierung VIEL schwieriger, da das Schedulung zuallererst beim Betriebssystem liegt und - obwohl man heutzutage auch viele Cores hat - man dennoch maximal an der Spielelogik dran bleiben muss, die 50/60hz auf die verwendete HZ-Zahl der CPU mapped. UND sequentiell passiert. Also die verschiedenen Komponenten, die in einer Konsole parallel ihre Arbeit verrichten, müssen in der Software Emulation eben "pro Tick" dann doch sequentiell orchestriert werden.DIESES Gedöns hat man mit FPGA nicht Innerhalb eines FPGAs können mehrere Konsolen-Chips gleichzeitig simuliert werden. Und das tolle ist, dass man einem FPGA sagen kann, dass es zB nur mit 1,7Mhz agieren solle. Auch die Skalierung und die Ausgabe auf HDMI ist bei FPGA kein Problem - oder zumindest bei FPGA-Konsolen - da man eigentlich nur hinter den FPGA-Chip einen weiteren Chip klemmt, der das Bild passend dann ausgibt. Bei der Software-Emulation muss auch DAS zusätzlich von der Software innerhalb der Orchestrierung mit dem passenden Clock der Konsole getan werden. Erbsenzählerei natürlich. Aber für Enthusiasten macht das eben durchaus den Unterschied.