2 ポイント 投稿者 GN⁺ 2025-01-04 | 1件のコメント | WhatsAppで共有
  • 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-guideXiangShan-User-Guide/releases で提供されている
  • ドキュメント翻訳には Weblate が使われており、英語やその他の言語への翻訳貢献を受け付けている
  • すべての XiangShan ドキュメントは CC-BY-4.0 ライセンスに従う

公開論文と開発方法論

  • MICRO 2022 論文「Towards Developing High Performance RISC-V Processors Using Agile Methodology」は、XiangShan と高性能 RISC-V プロセッサ開発におけるアジャイル開発手法の適用を扱っている
  • 論文では、チップ開発プロセスを加速するために開発・利用したツールを取り上げている
    • 設計
    • 機能検証
    • デバッグ
    • 性能検証
  • この論文はアーティファクト評価で AvailableFunctionalReproduced の 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_HOMENEMU project絶対パス に設定
    • NOOP_HOME を XiangShan プロジェクトの 絶対パス に設定
    • AM_HOMEAM project絶対パス に設定
    • mill をインストール
    • プロジェクトをクローン後、make init でサブモジュールを初期化
  • Verilator ベースのシミュレータ:
    • Verilator のインストールが必要
    • make emu で Verilator ベースの C++ シミュレータ ./build/emu をビルド
    • 実行引数は ./build/emu --help で確認できる
    • 詳細は Makefileverilator.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 情報の表示、バイナリの終了地点までの実行が含まれる

トラブルシューティング、コミュニティ、ライセンス

1件のコメント

 
GN⁺ 2025-01-04
Hacker Newsの意見
  • シミュレーションを試したいなら、自分が使っている Dockerfile で Ubuntu 24.04 ベースの環境を作れる
    OpenXiangShan/xs-env をクローンして、ツールのインストール、Verilator のインストール、XiangShan の初期化、DRAMsim3 のビルド、DefaultConfig エミュレータのビルド、nexus-am/apps/hello サンプルのビルドまで行っている
    RAM 64GB が必要で、自分の場合は 16GB RAM に 48GB のスワップを追加して動かした。重複した手順があるかもしれないが、最後に試したときはこの方法でうまくいった

    • どうしてそこまで メモリ を大量に使うのか気になる
  • このプロジェクトは、最近の関心事が妙に噛み合って、久しぶりに強く知的刺激を受けたプロジェクトだった
    ただ、ごく短時間ざっと見ただけでも、非英語圏の利用者 に強く共感した。README は英語圏の利用者には十分親切だが、読み進める間ずっと頭の中でトークン名を置き換えながら追う感覚があり、その過程で二つのことが見えた
    第一に、古典ロシア文学を最後まで読めない理由を思い出した。なじみのない名前の集合が序盤から大量に出てきて、キャッシュミスのように道を見失う
    第二に、英語圏の利用者にはこういう文化的な筋力があまり必要なかったのだと思う。地球はかなり長い間、英語をある程度共通語のように使ってきたからで、「一つの言語しか話せない人を何と呼ぶ? モノリンガル……いや、アメリカ人だ」という冗談も思い出した
    ドキュメントやソース内のトークンを事前処理してくれる公開レジストリを、「私のようなアメリカ人」が維持することもできそうだ。DefinitelyTyped スタイルの定義レジストリなら、かなりニッチだが結構便利そうだ

    • モノリンガルで気分が悪くなるときは、「いくつの言語を知っているか」よりも、「自分が住む場所からおよそ 1,000 マイル以内にあり、500 万人以上が話す言語のうち何パーセントを知っているか」のほうが、より公平な問いだという文章がある
      https://structuredprocrastination.com/light/biling.php
  • https://github.com/OpenXiangShan/XiangShan-doc/blob/main/doc...
    融合命令 の一覧が少し独特だ。どうせ SH{1,2,3,4}ADD に対応するものを除けば、残りは予想していなかった
    Google Translate で見ているところだが、SiFive スタイルの 短いジャンプ条件実行 もそこには見当たらない

    • RISC-V 組織自体が推奨する 命令融合シーケンス をどこかに一覧化したり文書化したりしているのか気になる
      使われている技術 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、ロボティクス、プロセッサ で大きく前進している点は知っておくべきで、その多くをオープンソースで公開しているのも印象的だ
    素晴らしい仕事で、刺激を受ける

    • RISC-V はそもそも 自由オープンソースソフトウェア ではないのか?
    • オープンソース化そのものが成功要因の一部である可能性も高い
      中国文化は絶え間ない再現と漸進的改善を中心に築かれており、少なくとも孔子の時代までさかのぼる。これを無差別な模倣と見る人もいるが、実際には深く学び、他人の肩の上に立つことに近い
      こうした「フォークしよう」という姿勢はオープンソースとかなり相性が良いが、知的財産ライセンスや特許の側から見れば、当然いら立たしいやり方かもしれない
      ただし、このような開放性が中国の外、とくに中国文化圏や中国語圏の外へ容易に広がるという意味ではない
  • XiangShan の以前の Nanhu アーキテクチャ を使う商用製品がある。まだ発売されたようには見えないが、それでも興味深い
    https://milkv.io/ja/ruyibook

  • これを オープンソース で公開する戦略は何だろう?

    • HotChips 2024 で発表していた: https://www.youtube.com/watch?v=4_R0S6piLA0&t=2114s
      そこで語られていたことの一つは、RISC-V 全体、とくに自分たちのコアが 学術研究プラットフォーム になることを望んでいるという点だった。そうなれば最先端のアイデアが公開の場で共有され、産業界が世界的に恩恵を受ける
      楽観的に見れば、皆にとってよりよい未来を望んでいるということだし、冷笑的に見れば、オープンソースは制裁や輸出規制の対象にしづらいという意味でもある。真実はおそらくその中間あたりだろう
    • 大学はもともと常にオープンソースで公開するものだ。自分も大学で作るものは全部オープンソースで公開している
      どうせ収益化は難しいし、大学もたいてい許可するので、履歴書にはとても良いからだ
      ヨーロッパにもオープンソースは多く、正直に言って政府がアメリカを破壊しようと陰謀を巡らせているわけではない。Linux をスウェーデン政府によるアメリカ破壊計画だとは見なさない
      自分の経験では、中国人の大半も貿易業に従事していない限り、中国の外の国をそれほど気にしていない。中国はアメリカのような国と比べても大きすぎて、自分たちだけのバブルの中で生きているような感じで、そういう問題を毎月どころか毎日考えているわけでもなさそうだ
    • 別の動機として、西側の チップ設計支配力 を弱めることがあるかもしれない
      競合の堀を攻撃するために「十分に良い」ものを無料でばらまくやり方だ。差が大きくなければ、競合の事業を損なうこともできる
      Apple や大手テック企業が Google Maps に対抗して OpenStreetMap に資金を出しているのも、似たように見られる。競合の収益を減らすだけでも戦略的価値がある
      Satya Nadella がインタビューで、ChatGPT が Google 検索のコストを上げるだけでも Microsoft にとって大きな勝利だと述べたのも同じ文脈だ
    • 現実的には、中国科学院の内部グループが、他の国立研究機関と同じように、評価でより大きな インパクト指標 を求めているだけである可能性が高い
    • 戦略は、中国の宣伝、採用拡大のマーケティング、チップの 二強構造 の打破、貢献の確保、そして技術をコモディティ化して制裁耐性を持たせることに近いように見える
  • Chisel を使う別のプロジェクトを見るとうれしくなる。業界では流れがどこへ向かっているのか気になる
    Verilog と VHDL は 置き換えられる時期 が来たように見える。どちらか一方は大学時代に本当に不快な思いをしながら使った記憶がある

    • 何が変わって、今こそ Verilog と VHDL が置き換えられる時期だということになるのか気になる
      自分の学士論文の指導教員は Verilog と VHDL を置き換えようとする会社を経営していて、もう 10 年どころではない長い期間それを続けている。まだ大きな足跡を残したようには見えないが、この分野を追い続けていたわけではない: https://github.com/clash-lang/clash-compiler
      これで書かれた RISC-V 実装もある
      この分野のツールは作るのも検証するのも高コストすぎ、市場は小さすぎるので、妥当な期間内に既存エコシステムを脅かすようなものが出てくるのはほぼ不可能に見える