XiangShan – Open-Source-Hochleistungsprozessor auf Basis von RISC-V
(github.com/OpenXiangShan)- XiangShan(香山) ist ein Open-Source-Projekt mit dem Ziel, einen leistungsstarken RISC-V-Prozessor zu entwickeln; die aktuelle Version Kunminghu(昆明湖) wird derzeit im master-Branch entwickelt
- Die Dokumentation ist unter docs.xiangshan.cc öffentlich verfügbar, und die Entwurfsdokumentation für Kunminghu V2R2 sowie das Benutzerhandbuch werden als separate Dokumente bereitgestellt
- Als stabile Mikroarchitekturen gibt es Yanqihu(雁栖湖) und Nanhu(南湖); Yanqihu ist die erste stabile Mikroarchitektur und wird seit Juni 2020 entwickelt
- Der Entwicklungsablauf besteht aus Scala-Entwurfscode, FIRRTL-Transformation, Cache-Subsystem, dem Co-Simulations-Framework difftest und vorkompilierten Simulations-Images
- Das Projekt bietet Pfade zur Verilog-Generierung, zur Ausführung eines Verilator-basierten Simulators und zur Nutzung von xspdb, sodass die Erstellung des Designs und die Programmsimulation innerhalb des Projekts durchgeführt werden können
Projektüberblick
- XiangShan(香山) ist ein Open-Source-Projekt für einen leistungsstarken RISC-V-Prozessor
- Eine chinesische Beschreibung wird in einer separaten README bereitgestellt
- Die Projektdokumentation ist unter docs.xiangshan.cc verfügbar
- Die XiangShan-Entwurfsdokumentation für Kunminghu V2R2 ist separat unter docs.xiangshan.cc/projects/design veröffentlicht
- Das XiangShan-Benutzerhandbuch ist unter docs.xiangshan.cc/projects/user-guide und XiangShan-User-Guide/releases verfügbar
- Für Dokumentationsübersetzungen wird Weblate verwendet; Beiträge zu englischen und anderen Sprachübersetzungen sind willkommen
- Alle XiangShan-Dokumente stehen unter der Lizenz CC-BY-4.0
Veröffentlichte Paper und Entwicklungsmethodik
- Das MICRO-2022-Paper „Towards Developing High Performance RISC-V Processors Using Agile Methodology“ behandelt XiangShan und die Anwendung agiler Entwicklungsmethodik bei der Entwicklung leistungsstarker RISC-V-Prozessoren
- Das Paper behandelt die Werkzeuge, die entwickelt und verwendet wurden, um den Chip-Entwicklungsprozess zu beschleunigen
- Entwurf
- funktionale Verifikation
- Debugging
- Performance-Verifikation
- Das Paper erhielt in der Artifact Evaluation alle drei Badges: Available, Functional und Reproduced
- Materiallinks:
Mikroarchitektur-Versionen
- Die erste stabile Mikroarchitektur ist Yanqihu(雁栖湖) und befindet sich im yanqihu-Branch
- Entwicklung seit Juni 2020
- Die zweite stabile Mikroarchitektur ist Nanhu(南湖) und befindet sich im nanhu-Branch
- Die aktuelle Version wird auch Kunminghu(昆明湖) genannt und befindet sich noch in Entwicklung im master-Branch
- Die README enthält ein Überblicksdiagramm der Mikroarchitektur Kunminghu
Repository-Struktur
- Die wichtigsten Verzeichnisse sind in Entwurfscode, Entwicklungsskripte, Submodule, Cache, Co-Simulation und ausführbare Images unterteilt
src/main/scala: Speicherort der Entwurfsdateiendevice: virtuelle Geräte für die Simulationsystem: SoC-Wrappertop: Top-Level-Modulutils: Utility-Codexiangshan: zentraler Entwurfscodexiangshan/transforms: nützliche FIRRTL-Transformationen
scripts: Skripte für die agile Entwicklungyunsuan: das yunsuan-Submodul von XiangShanXSCache: das Cache-Subsystem von XiangShandifftest: das Co-Simulations-Framework difftestready-to-run: vorkompilierte Simulations-Images
IDE und Verilog-Generierung
- Die BSP-Konfiguration erfolgt mit
make bsp - Die IDEA-Konfiguration erfolgt mit
make idea - Der Verilog-Code wird mit
make verilogerzeugt- Mehrere
.sv-Dateien werden im Ordnerbuild/rtl/erzeugt - Eine Beispieldatei ist
build/rtl/XSTop.sv - Weitere Informationen sind im
Makefilezu finden
- Mehrere
Ausführung der Simulation
- Um Programme in der Simulation auszuführen, werden Umgebungsvariablen und abhängige Werkzeuge benötigt
- Vorbereitung:
NEMU_HOMEauf den absoluten Pfad des NEMU project setzenNOOP_HOMEauf den absoluten Pfad des XiangShan-Projekts setzenAM_HOMEauf den absoluten Pfad des AM project setzenmillinstallieren- Nach dem Klonen des Projekts die Submodule mit
make initinitialisieren
- Verilator-basierter Simulator:
- Verilator muss installiert sein
- Mit
make emuwird der Verilator-basierte C++-Simulator./build/emugebaut - Ausführungsargumente sind unter
./build/emu --helpeinsehbar - Weitere Informationen stehen im
Makefileund inverilator.mk
- Ausführungsbeispiele:
make emu CONFIG=MinimalConfig EMU_THREADS=2 -j10./build/emu -b 0 -e 0 -i ./ready-to-run/coremark-2-iteration.bin --diff ./ready-to-run/riscv64-nemu-interpreter-so
xspdb-Ausführungspfade
- xspdb kann auf zwei Arten verwendet werden
- Schneller Einstieg mit vorkompilierten Binärdateien:
- Keine Kompilierung erforderlich; ausführbar mit einer Standard-Python-Umgebung
- Bietet die vollständige XiangShan-Erfahrung bei geringem Speicherverbrauch
- Die neueste XSPdb kann in der Ausführungszusammenfassung des Actions-Workflows des Repositorys heruntergeladen werden
- Build aus dem Quellcode:
- Erfordert die Installation des Verifikationswerkzeugs picker, das Hochsprachen unterstützt
- Mit
make pdbwird die XiangShan-Python-Binärdatei gebaut - Mit
make pdb-runwird die XiangShan-Binärdatei ausgeführt
- Beispielinteraktionen mit xspdb umfassen das Laden einer Binärdatei, das Setzen eines Watchpoints auf die Commit-PC, schrittweises Ausführen auf Instruktionsebene, die Ausgabe von PC-Informationen und das Ausführen bis zum Endpunkt der Binärdatei
Fehlerbehebung, Community und Lizenz
- Eine Dokumentation zur Fehlerbehebung ist im Troubleshooting Guide verfügbar
- Kontaktkanäle:
- WeChat: XiangShan Open-Source-Prozessor
- Zhihu: XiangShan Open-Source-Prozessor
- Weibo: XiangShan Open-Source-Prozessor
- Mailingliste: xiangshan-all@ict.ac.cn
- Archiv der Mailingliste: mail-archive.com
- Die Implementierung wurde von mehreren grundlegenden Papern inspiriert; eine Liste relevanter Veröffentlichungen findet sich in den Acknowledgements der XiangShan-Dokumentation
- Die Copyright-Angaben umfassen die folgenden Institutionen
- 2020-2025 Institute of Computing Technology, Chinese Academy of Sciences
- 2021-2025 Beijing Institute of Open Source Chip
- 2020-2022 Peng Cheng Laboratory
- XiangShan steht unter der Lizenz Mulan PSL v2
1 Kommentare
Meinungen auf Hacker News
Wenn man eine Simulation ausprobieren möchte, kann man mit dem Dockerfile, das ich verwende, eine Umgebung auf Basis von Ubuntu 24.04 erstellen.
Es klont
OpenXiangShan/xs-envund erledigt die Installation der Tools, die Installation von Verilator, die Initialisierung von XiangShan, den Build von DRAMsim3, den Build desDefaultConfig-Emulators sowie den Build des Beispielsnexus-am/apps/hello.Man braucht 64 GB RAM; in meinem Fall lief es mit 16 GB RAM plus 48 GB Swap. Es kann sein, dass einige Schritte doppelt sind, aber beim letzten Versuch hat es so funktioniert.
Dieses Projekt war das erste seit Langem, das mein Gehirn wirklich gekitzelt hat, weil sich darin einige meiner aktuellen Interessen auf merkwürdige Weise überlappen.
Allerdings habe ich schon nach einem sehr kurzen Überfliegen stark mit nicht englischsprachigen Nutzern mitgefühlt. Das README ist für englischsprachige Nutzer ausreichend freundlich, aber beim Lesen fühlte es sich so an, als müsste ich im Kopf ständig Token-Namen umbenennen, um folgen zu können; dabei sind mir zwei Dinge aufgefallen.
Erstens erinnerte es mich daran, warum ich klassische russische Literatur nie zu Ende lese: Schon am Anfang prasseln Namen auf einen ein, die nicht zu den vertrauten Namensmengen gehören, und man verliert sich wie bei einem Cache Miss.
Zweitens scheint diese kulturelle Muskulatur für englischsprachige Nutzer kaum nötig gewesen zu sein. Schließlich verwendet die Welt Englisch seit ziemlich langer Zeit in gewissem Maß als Lingua franca, und mir fiel auch der Witz ein: „Wie nennt man jemanden, der nur eine Sprache spricht? Monolingual … nur ein Scherz, Amerikaner.“
Es scheint möglich, dass „Amerikaner wie ich“ ein öffentliches Registry pflegen könnten, das Token in Dokumentation und Source vorverarbeitet. Eine Definitions-Registry im Stil von
DefinitelyTypedwäre zwar extrem nischig, aber vermutlich ziemlich nützlich.https://structuredprocrastination.com/light/biling.php
https://github.com/OpenXiangShan/XiangShan-doc/blob/main/doc...
Die Liste der fusionierten Instruktionen ist etwas ungewöhnlich. Abgesehen von den Entsprechungen zu
SH{1,2,3,4}ADDhätte ich den Rest jedenfalls nicht erwartet.Ich lese das zwar gerade mit Google Translate, aber die Kurzsprung-Prädikation im SiFive-Stil scheint dort auch nicht aufzutauchen.
Das verwendete Technik-Wiki ist ziemlich schwer zu navigieren und zu durchsuchen, und inoffizielle GitHub-Repositories sind auch nicht viel besser, sodass es schwer ist, überhaupt herauszufinden, ob so etwas existiert.
Ich habe den Link zu diesem Projekt schon vor ein paar Wochen gepostet; solche akademischen Projekte anzusehen ist wirklich spannend.
Für Interessierte ist der zweiwöchentliche Blog hier verlinkt, einige Beiträge gibt es auch auf Englisch: https://docs.xiangshan.cc/zh-cn/latest/blog/
Mir gefällt, dass die Mikroarchitektur-Namen wie Yanqihu (Yanqi-See), Nanhu (Südsee) und Kunminghu (Kunming-See) ein See-Thema haben.
Coffee Lake? Skylake? Nein, Kunming Lake.
https://en.m.wikipedia.org/wiki/List_of_Intel_codenames
Man sollte zur Kenntnis nehmen, dass China bei KI, Robotik und Prozessoren große Fortschritte macht, und es ist beeindruckend, dass ein großer Teil davon als Open Source veröffentlicht wird.
Großartige Arbeit und inspirierend.
Die chinesische Kultur ist um ständige Reproduktion und schrittweise Verbesserung herum aufgebaut, und das reicht mindestens bis in die Zeit von Konfuzius zurück. Manche sehen das als wahlloses Kopieren, tatsächlich geht es aber eher um tiefes Lernen und darum, auf den Schultern anderer zu stehen.
Diese „Fork it“-Haltung passt ziemlich gut zu Open Source, kann aber bei IP-Lizenzen oder Patenten natürlich ziemlich ärgerlich sein.
Allerdings bedeutet diese Offenheit nicht, dass sie sich leicht über China hinaus ausdehnt, insbesondere nicht außerhalb des chinesischen Kultur- und Sprachraums.
Es gibt ein kommerzielles Produkt, das XiangShans frühere Nanhu-Architektur verwendet. Es scheint zwar noch nicht auf dem Markt zu sein, ist aber trotzdem interessant.
https://milkv.io/ja/ruyibook
Welche Strategie steckt dahinter, das als Open Source zu veröffentlichen?
Einer der Punkte, die dort genannt wurden, war, dass sie hoffen, RISC-V insgesamt und insbesondere ihre eigenen Kerne würden zu einer akademischen Forschungsplattform werden. Dann würden State-of-the-Art-Ideen öffentlich geteilt, und die Industrie weltweit würde profitieren.
Optimistisch betrachtet wünschen sie sich eine bessere Zukunft für alle; zynisch betrachtet bedeutet Open Source, dass Sanktionen oder Exportkontrollen sehr viel schwerer durchzusetzen sind. Die Wahrheit liegt vermutlich irgendwo dazwischen.
Es ist sowieso schwer, damit Geld zu verdienen, und die Universität erlaubt es normalerweise; für den Lebenslauf ist es sehr gut.
Auch in Europa gibt es viel Open Source, und ehrlich gesagt heißt das nicht, dass die Regierung eine Verschwörung zur Zerstörung der USA plant. Ich sehe Linux nicht als Plan der schwedischen Regierung zur Zerstörung der USA.
Nach meiner Erfahrung kümmern sich die meisten Chinesen auch nicht besonders um Länder außerhalb Chinas, sofern sie nicht im Außenhandel arbeiten. China ist selbst im Vergleich zu Ländern wie den USA so groß, dass man dort in einer eigenen Blase lebt, und solche Fragen scheinen sie nicht einmal monatlich, geschweige denn täglich zu beschäftigen.
Es wäre eine Methode, etwas „gut genuges“ kostenlos zu verbreiten, das den Burggraben der Konkurrenz angreift. Wenn der Abstand nicht groß ist, kann das das Geschäft der Konkurrenz beschädigen.
Dass Apple und große Tech-Unternehmen OpenStreetMap als Gegengewicht zu Google Maps finanzieren, kann man ähnlich sehen. Schon die Verringerung der Einnahmen eines Konkurrenten hat strategischen Wert.
In dieselbe Richtung ging Satya Nadellas Aussage in einem Interview, dass es für Microsoft schon ein großer Sieg wäre, wenn ChatGPT lediglich die Kosten der Google-Suche erhöht.
Es ist schön, ein weiteres Projekt zu sehen, das Chisel verwendet. Ich frage mich, wohin sich die Branche bewegt.
Es wirkt, als sei es an der Zeit, dass Verilog und VHDL ersetzt werden. An eines von beiden habe ich aus dem Studium wirklich unangenehme Erinnerungen.
Mein Betreuer der Bachelorarbeit betreibt ein Unternehmen, das versucht, Verilog und VHDL zu ersetzen, und macht das schon deutlich länger als zehn Jahre. Es scheint noch keine großen Spuren hinterlassen zu haben, aber ich habe das Feld nicht weiter verfolgt: https://github.com/clash-lang/clash-compiler
Es gibt auch eine RISC-V-Implementierung, die damit geschrieben wurde.
Tools in diesem Bereich sind zu teuer zu bauen und zu verifizieren, und der Markt ist zu klein; daher wirkt es fast unmöglich, dass innerhalb eines vernünftigen Zeitraums etwas entsteht, das das bestehende Ökosystem ernsthaft bedroht.