$30 off During Our Annual Pro Sale. View Details »

RISC-V CPU 自作本の実装と執筆/cybozulabs-youth10-hosoya

RISC-V CPU 自作本の実装と執筆/cybozulabs-youth10-hosoya

Cybozu
PRO

March 31, 2021
Tweet

More Decks by Cybozu

Other Decks in Technology

Transcript

  1. RISC-V CPU 自作本の実装と執筆
    細谷 啓 (Hosoya Kei)
    March 30, 2021
    サイボウズ・ラボユーズ第 10 期生
    C/C++によるソフトウェア開発ゼミ

    View Slide

  2. 話す内容
    1. テーマの説明・行うこと
    2. CPU 自作はどういうものか
    3. テーマの進捗状況
    4. 今後について
    1

    View Slide

  3. テーマの説明・行うこと

    View Slide

  4. なんのために CPU 自作をするか
    コンピュータアーキテクチャの座学では CPU の事を理解したつも
    りでも、CPU はやってみなきゃわからない事が多すぎる。
    現実の CPU 実装では色々なペリフェラル (周辺機器) やバス・
    キャッシュ等の様々な事を考慮する必要が有る (Ready-Valid プロ
    トコルや AXI4, AMBA, PCIe 等のバスプロトコル。当然ながら割込
    コントローラ)
    自分のコンピュータをどれくらい理解出来ているかを試すには
    CPU 自作は最適。
    あと楽しい
    2

    View Slide

  5. CPU とは
    (a) (b)
    Figure 1: 筆者所有の Intel 8088(a, 1979 年発売) と AMD ThreadRipper
    2920X(b, 2018 年発売)。
    両方とも時代は違えど CPU。
    3

    View Slide

  6. (現代の)CPU 自作は大変
    CPU 自作で必要な知識を大雑把に分解すると....
    • ISA 設計
    • バス設計
    • 周辺機器設計
    • 回路設計知識
    • ECAD 習熟
    • メモリコントローラ設計
    • RTL 設計技術
    • 消費電力推定
    • ベンチマーク
    • …etc …
    どう考えても一気には出来ない =⇒ 各個撃破が肝要
    4

    View Slide

  7. 本テーマの目標
    本テーマでは高速化と機能拡張の二つを目指す CPU を目標とし
    て、最小限の実装から段階的にステップを踏んで CPU を実装して
    いき、参考実装とその実装解説書籍を作成し公開する事を目標と
    した。
    5

    View Slide

  8. 具体的に何をやるか
    • ISA 設計, コンパイラバックエンド対応等の部分は切り捨てる
    • Chisel と Verilog-HDL というハードウェア記述言語を使い、
    主に 64bit RISC-Ⅴの段階的な実装 (論理合成可能な状態で)
    をする1
    • 上記 CPU の実装に関する詳細な実装指南書の執筆
    1RiSC-16 など他の ISA も演習で行います
    6

    View Slide

  9. 具体的には:高速化
    • 5 ステージパイプライン化 (Back Forwarding 等のハザード軽
    減等も含む)
    • 4, 8-Way Set Associative キャッシュ
    • 単純な分岐予測 Always (not) Taken の追加
    • 2bit 分岐予測器
    • Tomasulo Algorithm の実装による Out-of-Order(OoO) 化
    (in-order issue, out-of-order execution.)
    • ReOrder Buffer の追加 (効率的な OoO 実行が出来るように
    なる)
    7

    View Slide

  10. 具体的には:機能拡張
    • 最小限の RISC-V の実装 (RV64I User-Mode)
    • 整数乗算・除算命令の追加 (M 拡張)
    • アトミック命令の追加 (A 拡張)
    • 圧縮命令 (16bit 命令長化) の追加 (C 拡張)
    • Machine-Mode の追加 (PLIC, CLIC といった例外コントロー
    ラ含む)
    • Supervisor-Mode の追加
    • (本当に余裕があれば) 単精度浮動小数点命令の追加 (F 拡張)
    8

    View Slide

  11. CPU 自作はどういうものか

    View Slide

  12. CPU のデバッグってどうするの?
    基本的には命令列をメモリにマップし、命令コミット時点でのレ
    ジスタステート等をゴールデンモデル2と比較。
    2様々な定義がありますが、ここでは ISA に対し真正な挙動をするモデルの意味
    9

    View Slide

  13. デバッグ:波形?
    10

    View Slide

  14. デバッグ:ターミナル
    printf デバッグの方が楽!
    11

    View Slide

  15. デバッグ:ゴールデンモデルとの比較
    テスト自動化出来る場合は多いが、基本的に複数命令に跨った問
    題が発生するので見比べる必要がある
    例:モデルのダンプ

    C0: 21 [0] pc=[0000001002] W[r 0=0000000000000000][0] R[r
    0=0000000000000000] R[r 0=918250ce690efa03]
    inst=[00006db7] lui s11, 0x6

    12

    View Slide

  16. テーマの進捗状況

    View Slide

  17. 進捗:書籍
    一先ずある程度読める形になったのが以下の章
    • Verilog-HDL 解説&回路設計基礎
    • Chisel 解説
    • RISC-V 解説
    • キャッシュ解説
    • シングルサイクルプロセッサ実装
    • 5 ステージパイプライン実装
    が、まだ不完全で本としての流れが出来ていない。
    13

    View Slide

  18. 進捗:CPU 実装
    Set Associative キャッシュ等を作れたのは良いが、メインの 5 ス
    テージ パイプライン RV64IM(User-Mode Only) が非自明なバグを
    埋め込んでしまったので再実装中。
    Register File
    IF ID EX MEM WB
    Memory
    Register File
    IF ID EX MEM WB
    Memory
    14

    View Slide

  19. 現状の問題
    • Chisel が相当不安定 (この一年で API 含めエコシステムがか
    なり変更された, 公式ドキュメントが古くて内容が通用し
    ない…etc …)
    • 初学者が何に躓くのかわからなくなってしまい悩み込む3
    • ご時世で時間捻出が大変
    3個人的に、分かれば自明病 (分かってしまうと勉強してた時なにに躓いていた
    のがわからなくなる) と呼んでいます
    15

    View Slide

  20. 今後について

    View Slide

  21. 今後の予定
    4,5 月中 人を募ってプライベートプレビューをして貰う
    6,7 月 (開始から一年の区切り) にキャッシュ付きパイプライン章
    までを纏めた本として公開予定
    16

    View Slide

  22. ご清聴ありがとうございました
    この場でもサイボウズラボの方々、特にメンターである光成さん
    にお礼を言わせてください。ご面倒ばかりおかけしてしまいまし
    たが、約一年間指導して頂きありがとうございました!
    発表には間に合いませんでしたが、6 月までには本として発表す
    る予定なので、その際はよろしくお願いします。
    17

    View Slide