Die Geschichte
- Vor einem Jahr konnte der RV64-DynaRec nur vergleichsweise „leicht lauffähige“ native Linux-Spiele wie Stardew Valley und World of Goo ausführen
- Viele neue x86_64-Befehle wurden schnell für RISC-V implementiert, aber im DynaRec gab es noch viele Bugs
- Damals gab es kein RISC-V-Gerät, an das sich eine AMD-Grafikkarte anschließen ließ, und die integrierten IMG-Grafikchips des VisionFive 2 und LicheePi 4A unterstützten OpenGL nicht
- Mit gl4es ließen sich Spiele wie Stardew Valley ausführen, für komplexere Linux-Spiele oder Windows-Spiele reichte das jedoch nicht aus
- Durch Sophgos Milk-V Pioneer wurde es möglich, eine AMD-Grafikkarte anzuschließen; zudem wurden viele RV64-DynaRec-Bugs behoben und neue x86-Befehle hinzugefügt, sodass sich The Witcher 3 ausführen ließ
Aktueller Stand des RISC-V-DynaRec
- Der x86-Befehlssatz ist sehr umfangreich
- Das ARM64-Backend implementiert mehr als 1.600 x86-Befehle, das RV64-Backend jedoch nur etwa 1.000
- SSE-Befehle wurden als skalare Befehle umgesetzt; AArch64 nutzt die Neon-Erweiterung, LoongArch64 die LSX-Erweiterung, was die Leistung verringert
- RISC-V verfügt mit RVV über eine Vektorerweiterung, die vom Milk-V Pioneer und von den SpacemiT-K1/M1-SoCs unterstützt wird
- Kürzlich wurde box64 um grundlegende RVV-Unterstützung erweitert und einige gängige SSE-Befehle wurden implementiert, das Ganze befindet sich aber noch in einem frühen Stadium
Die wichtigsten fehlenden Befehle für die x86-Emulation
- Für die x86-Emulation ist RISC-V im Vergleich zu AArch64 und LoongArch64 weniger ausdrucksstark
- RISC-V hat keine Befehle, mit denen sich Bitbereiche eines Registers auswählen oder in Bitbereiche eines anderen Registers einfügen lassen
- Um zum Beispiel den Befehl
ADD AH, BL auf RISC-V umzusetzen, sind 10 Befehle nötig
Der Frust mit atomaren 16-Byte-Befehlen
- x86 besitzt atomare Operationsbefehle mit dem
LOCK-Präfix, und box64 emuliert diese mit LR/SC-Sequenzen
- Der Befehl
LOCK CMPXCHG16B vergleicht und tauscht 16 Byte Speicher, aber RISC-V hat keinen entsprechenden Befehl dafür
- Deshalb lässt sich dieser Befehl nicht vollständig korrekt implementieren, obwohl viele Programme wie Unity-Spiele ihn verwenden
Fazit
- Trotz mehrerer Nachteile läuft The Witcher 3 in box64 mit bis zu 15 fps, im Hauptmenü sogar mit voller Geschwindigkeit
Zusammenfassung von GN⁺
- Dass The Witcher 3 auf RISC-V ausgeführt wurde, ist ein wichtiges Ereignis, das den technischen Fortschritt zeigt
- Die x86-Emulation auf RISC-V liegt im Vergleich zu anderen Architekturen noch zurück, könnte sich aber durch Erweiterungen wie RVV verbessern
- Die geringe Ausdrucksstärke von RISC-V und das Fehlen atomarer 16-Byte-Befehle bleiben zentrale Probleme
- Ein Projekt mit ähnlicher Funktionalität ist ein Emulator wie QEMU
1 Kommentare
Hacker-News-Kommentare
Es gibt die Frage, was Softwareingenieure anders machen müssen, wenn sie Software für RISC-V entwickeln
Neugier darüber, ob Systeme mit einer „GPU“ erscheinen könnten, die aus einigen großen RISC-V-CPUs und vielen kleinen RISC-V-CPUs besteht
Erinnerung an den Fall eines bekannten Russen, der Atomic Heart auf dem Elbrus 8S ausgeführt hat
Meinung, dass der Artikel bei den „Grundlagen“ zu knapp ist
Meinung, dass RISC-V im Kontext der x86-Emulation die geringste Ausdrucksstärke hat
Meinung, dass das Ergebnis beeindruckend ist
Frage zu 86Box
Auf dem Screenshot sind 31 GB RAM zu sehen
Link zu einem früheren Beitrag und Informationen zum Milk-V Pioneer
Meinung, dass man hoffentlich Feedback auf ISA-Ebene an RVI weitergeben kann