XiangShan(香山)– オープンソースの高性能 RISC-V プロセッサ
(github.com/OpenXiangShan)- XiangShan(香山) は、高性能 RISC-V プロセッサを目指すオープンソースプロジェクトで、現在のバージョン Kunminghu(昆明湖) は master ブランチで開発中
- ドキュメントは docs.xiangshan.cc で公開されており、Kunminghu V2R2 の設計文書とユーザーガイドが別途提供されている
- 安定版マイクロアーキテクチャには Yanqihu(雁栖湖) と Nanhu(南湖) があり、Yanqihu は 2020 年 6 月から開発された最初の安定版マイクロアーキテクチャ
- 開発フローは Scala の設計コード、FIRRTL 変換、キャッシュサブシステム、difftest 共同シミュレーションフレームワーク、事前ビルド済みシミュレーションイメージで構成される
- Verilog 生成、Verilator ベースのシミュレータ実行、xspdb 実行パスが提供されており、設計生成とプログラムシミュレーションをプロジェクト内で実行できる
プロジェクト概要
- XiangShan(香山) はオープンソースの高性能 RISC-V プロセッサ プロジェクト
- 中国語の説明は別の README で提供されている
- プロジェクトのドキュメントは docs.xiangshan.cc で閲覧できる
- Kunminghu V2R2 向け XiangShan 設計文書は docs.xiangshan.cc/projects/design で別途公開されている
- XiangShan ユーザーガイドは docs.xiangshan.cc/projects/user-guide と XiangShan-User-Guide/releases で提供されている
- ドキュメント翻訳には Weblate が使われており、英語やその他の言語への翻訳貢献を受け付けている
- すべての XiangShan ドキュメントは CC-BY-4.0 ライセンスに従う
公開論文と開発方法論
- MICRO 2022 論文「Towards Developing High Performance RISC-V Processors Using Agile Methodology」は、XiangShan と高性能 RISC-V プロセッサ開発におけるアジャイル開発手法の適用を扱っている
- 論文では、チップ開発プロセスを加速するために開発・利用したツールを取り上げている
- 設計
- 機能検証
- デバッグ
- 性能検証
- この論文はアーティファクト評価で Available、Functional、Reproduced の 3 つのバッジをすべて獲得している
- 資料リンク:
マイクロアーキテクチャのバージョン
- 最初の安定版マイクロアーキテクチャは Yanqihu(雁栖湖) で、yanqihu ブランチ にある
- 2020 年 6 月から開発
- 2 番目の安定版マイクロアーキテクチャは Nanhu(南湖) で、nanhu ブランチ にある
- 現在のバージョンは Kunminghu(昆明湖) とも呼ばれ、master ブランチで現在も開発中
- README には Kunminghu マイクロアーキテクチャの概要図が含まれている
リポジトリ構成
- 主なディレクトリは、設計コード、開発スクリプト、サブモジュール、キャッシュ、共同シミュレーション、実行イメージに分かれている
src/main/scala: 設計ファイル の場所device: シミュレーション用仮想デバイスsystem: SoC ラッパーtop: 最上位モジュールutils: ユーティリティコードxiangshan: 主要な設計コードxiangshan/transforms: 有用な FIRRTL 変換
scripts: アジャイル開発 用スクリプトyunsuan: XiangShan の yunsuan サブモジュールXSCache: XiangShan のキャッシュサブシステムdifftest: difftest 共同シミュレーションフレームワークready-to-run: 事前ビルド済みシミュレーションイメージ
IDE と Verilog 生成
- BSP 設定は
make bspで行う - IDEA 設定は
make ideaで行う - Verilog コードは
make verilogで生成する- 複数の
.svファイルがbuild/rtl/フォルダに生成される - 例のファイルは
build/rtl/XSTop.sv - 詳細は
Makefileを参照
- 複数の
シミュレーション実行
- プログラムをシミュレーションで実行するには、環境変数と依存ツールが必要
- 準備手順:
NEMU_HOMEを NEMU project の 絶対パス に設定NOOP_HOMEを XiangShan プロジェクトの 絶対パス に設定AM_HOMEを AM project の 絶対パス に設定millをインストール- プロジェクトをクローン後、
make initでサブモジュールを初期化
- Verilator ベースのシミュレータ:
- Verilator のインストールが必要
make emuで Verilator ベースの C++ シミュレータ./build/emuをビルド- 実行引数は
./build/emu --helpで確認できる - 詳細は
Makefileとverilator.mkを参照
- 実行例:
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 実行パス
- xspdb は 2 つの方法で利用できる
- 事前ビルド済みバイナリですぐに始める:
- コンパイル不要で、標準的な Python 環境だけで実行できる
- メモリ使用量が少なく、完全な XiangShan 体験を提供する
- 最新の XSPdb は、リポジトリの Actions ワークフローの実行サマリーから入手できる
- ソースコードからビルド:
- 高水準言語をサポートする検証ツール picker のインストールが必要
make pdbで XiangShan Python バイナリをビルドmake pdb-runで XiangShan バイナリを実行
- xspdb の対話例には、バイナリのロード、コミット PC ウォッチポイントの設定、命令単位のステップ実行、PC 情報の表示、バイナリの終了地点までの実行が含まれる
トラブルシューティング、コミュニティ、ライセンス
- トラブルシューティング文書は Troubleshooting Guide で提供されている
- 連絡チャネル:
- WeChat: XiangShan オープンソースプロセッサ
- Zhihu: XiangShan オープンソースプロセッサ
- Weibo: XiangShan オープンソースプロセッサ
- メーリングリスト: xiangshan-all@ict.ac.cn
- メーリングリストアーカイブ: mail-archive.com
- 実装は複数の重要論文から着想を得ており、関連論文一覧は XiangShan ドキュメントの Acknowledgements にある
- 著作権表示には以下の機関が含まれる
- 2020-2025 Institute of Computing Technology, Chinese Academy of Sciences
- 2021-2025 Beijing Institute of Open Source Chip
- 2020-2022 Peng Cheng Laboratory
- XiangShan は Mulan PSL v2 ライセンスに従う
1件のコメント
Hacker Newsの意見
シミュレーションを試したいなら、自分が使っている Dockerfile で Ubuntu 24.04 ベースの環境を作れる
OpenXiangShan/xs-envをクローンして、ツールのインストール、Verilator のインストール、XiangShan の初期化、DRAMsim3 のビルド、DefaultConfigエミュレータのビルド、nexus-am/apps/helloサンプルのビルドまで行っているRAM 64GB が必要で、自分の場合は 16GB RAM に 48GB のスワップを追加して動かした。重複した手順があるかもしれないが、最後に試したときはこの方法でうまくいった
このプロジェクトは、最近の関心事が妙に噛み合って、久しぶりに強く知的刺激を受けたプロジェクトだった
ただ、ごく短時間ざっと見ただけでも、非英語圏の利用者 に強く共感した。README は英語圏の利用者には十分親切だが、読み進める間ずっと頭の中でトークン名を置き換えながら追う感覚があり、その過程で二つのことが見えた
第一に、古典ロシア文学を最後まで読めない理由を思い出した。なじみのない名前の集合が序盤から大量に出てきて、キャッシュミスのように道を見失う
第二に、英語圏の利用者にはこういう文化的な筋力があまり必要なかったのだと思う。地球はかなり長い間、英語をある程度共通語のように使ってきたからで、「一つの言語しか話せない人を何と呼ぶ? モノリンガル……いや、アメリカ人だ」という冗談も思い出した
ドキュメントやソース内のトークンを事前処理してくれる公開レジストリを、「私のようなアメリカ人」が維持することもできそうだ。
DefinitelyTypedスタイルの定義レジストリなら、かなりニッチだが結構便利そうだhttps://structuredprocrastination.com/light/biling.php
https://github.com/OpenXiangShan/XiangShan-doc/blob/main/doc...
融合命令 の一覧が少し独特だ。どうせ
SH{1,2,3,4}ADDに対応するものを除けば、残りは予想していなかったGoogle Translate で見ているところだが、SiFive スタイルの 短いジャンプ条件実行 もそこには見当たらない
使われている技術 Wiki は閲覧も検索もかなり難しく、非公式の GitHub リポジトリもあまりマシではないので、そもそも存在するのかどうかすら把握しにくい
数週間前にもこのプロジェクトへのリンクを投稿したが、こういう 学術プロジェクト を見るのは本当に興味深い
興味がある人向けに隔週ブログがここにまとまっており、一部は英語でも提供されている: https://docs.xiangshan.cc/zh-cn/latest/blog/
マイクロアーキテクチャ名が Yanqihu(雁栖湖)、Nanhu(南湖)、Kunminghu(昆明湖) のような 湖テーマ なのが良い
Coffee Lake? Skylake? ではなく Kunming Lake だ
https://en.m.wikipedia.org/wiki/List_of_Intel_codenames
中国が AI、ロボティクス、プロセッサ で大きく前進している点は知っておくべきで、その多くをオープンソースで公開しているのも印象的だ
素晴らしい仕事で、刺激を受ける
中国文化は絶え間ない再現と漸進的改善を中心に築かれており、少なくとも孔子の時代までさかのぼる。これを無差別な模倣と見る人もいるが、実際には深く学び、他人の肩の上に立つことに近い
こうした「フォークしよう」という姿勢はオープンソースとかなり相性が良いが、知的財産ライセンスや特許の側から見れば、当然いら立たしいやり方かもしれない
ただし、このような開放性が中国の外、とくに中国文化圏や中国語圏の外へ容易に広がるという意味ではない
XiangShan の以前の Nanhu アーキテクチャ を使う商用製品がある。まだ発売されたようには見えないが、それでも興味深い
https://milkv.io/ja/ruyibook
これを オープンソース で公開する戦略は何だろう?
そこで語られていたことの一つは、RISC-V 全体、とくに自分たちのコアが 学術研究プラットフォーム になることを望んでいるという点だった。そうなれば最先端のアイデアが公開の場で共有され、産業界が世界的に恩恵を受ける
楽観的に見れば、皆にとってよりよい未来を望んでいるということだし、冷笑的に見れば、オープンソースは制裁や輸出規制の対象にしづらいという意味でもある。真実はおそらくその中間あたりだろう
どうせ収益化は難しいし、大学もたいてい許可するので、履歴書にはとても良いからだ
ヨーロッパにもオープンソースは多く、正直に言って政府がアメリカを破壊しようと陰謀を巡らせているわけではない。Linux をスウェーデン政府によるアメリカ破壊計画だとは見なさない
自分の経験では、中国人の大半も貿易業に従事していない限り、中国の外の国をそれほど気にしていない。中国はアメリカのような国と比べても大きすぎて、自分たちだけのバブルの中で生きているような感じで、そういう問題を毎月どころか毎日考えているわけでもなさそうだ
競合の堀を攻撃するために「十分に良い」ものを無料でばらまくやり方だ。差が大きくなければ、競合の事業を損なうこともできる
Apple や大手テック企業が Google Maps に対抗して OpenStreetMap に資金を出しているのも、似たように見られる。競合の収益を減らすだけでも戦略的価値がある
Satya Nadella がインタビューで、ChatGPT が Google 検索のコストを上げるだけでも Microsoft にとって大きな勝利だと述べたのも同じ文脈だ
Chisel を使う別のプロジェクトを見るとうれしくなる。業界では流れがどこへ向かっているのか気になる
Verilog と VHDL は 置き換えられる時期 が来たように見える。どちらか一方は大学時代に本当に不快な思いをしながら使った記憶がある
自分の学士論文の指導教員は Verilog と VHDL を置き換えようとする会社を経営していて、もう 10 年どころではない長い期間それを続けている。まだ大きな足跡を残したようには見えないが、この分野を追い続けていたわけではない: https://github.com/clash-lang/clash-compiler
これで書かれた RISC-V 実装もある
この分野のツールは作るのも検証するのも高コストすぎ、市場は小さすぎるので、妥当な期間内に既存エコシステムを脅かすようなものが出てくるのはほぼ不可能に見える