1 Punkte von GN⁺ 2024-08-28 | 1 Kommentare | Auf WhatsApp teilen

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

 
GN⁺ 2024-08-28
Hacker-News-Kommentare
  • Es gibt die Frage, was Softwareingenieure anders machen müssen, wenn sie Software für RISC-V entwickeln

    • Die Größe ausführbarer Dateien kann zunehmen, daher sollte zur Wahrung der Cache-Lokalität aggressiv optimiert werden
    • Bestimmte Softwaretypen könnten sich eher für CISC oder RISC eignen, zum Beispiel Spiele oder Webserver
  • 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

    • Zusatzfrage, ob klassische Vektoren auf GPUs nützlicher sein könnten als gepacktes SIMD
  • Erinnerung an den Fall eines bekannten Russen, der Atomic Heart auf dem Elbrus 8S ausgeführt hat

    • Elbrus hat einen nativen Übersetzer, und Atomic Heart war mit 15–25 fps spielbar
  • Meinung, dass der Artikel bei den „Grundlagen“ zu knapp ist

    • Es werden zusätzliche Informationen dazu benötigt, wie die x86_64-ISA auf einem RISC-V-Chip umgesetzt wurde
  • Meinung, dass RISC-V im Kontext der x86-Emulation die geringste Ausdrucksstärke hat

    • RISC wurde im Informatikunterricht zur Computergeschichte als Reduced Instruction Set Computer erklärt
    • Viele Artikel und neue RISC-V-Profile legen nahe, dass „für funktionale Gleichwertigkeit noch ein paar weitere Instruktionen nötig sind“
    • RISC-V ist eine praktische Alternative zu anderen Plattformen, aber es stellt sich die Frage, ob der Traum von RISC tot ist
  • Meinung, dass das Ergebnis beeindruckend ist

    • Es war viel Arbeit nötig, und in manchen Fällen scheint RISC-V an seine Grenzen zu stoßen
    • Bitmanipulations- und Scatter-Instruktionen sollten als Erweiterungen hinzugefügt werden
  • Frage zu 86Box

    • Erinnerung an die Zeit mit dem Amstrad PC1512 und der Erfahrung, eine Hardcard und Speichererweiterungen hinzugefügt zu haben
    • Unterhaltsame Zeiten mit Borland TurboPascal und Zortech C
  • Auf dem Screenshot sind 31 GB RAM zu sehen

    • Es scheint deutlich mehr RAM zu verwenden als ein Development Board mit maximaler Ausstattung
  • Link zu einem früheren Beitrag und Informationen zum Milk-V Pioneer

    • Ein 64-Kern-RISC-V-Motherboard und eine Workstation als Produkt für native Entwicklung
  • Meinung, dass man hoffentlich Feedback auf ISA-Ebene an RVI weitergeben kann