[OSC 2020 オンライン/京都]「ジェネリックCPU実験本の実装と執筆」/ Generic CPU Experiment Book, Design and Writing Overview.

263ce30b51276a04f5bf84b160276372?s=47 khosoya
August 29, 2020

[OSC 2020 オンライン/京都]「ジェネリックCPU実験本の実装と執筆」/ Generic CPU Experiment Book, Design and Writing Overview.

OSC 2020 Online/Kyoto 8/29(土)のサイボウズ株式会社ブースにて行われたサイボウズ・ラボユース 10 期のネタ紹介枠(14:45 ~ 15:15)での「ジェネリックCPU実験本の実装と執筆」スライドです。

URL: https://event.ospn.jp/osc2020-online-kyoto/exhibit

263ce30b51276a04f5bf84b160276372?s=128

khosoya

August 29, 2020
Tweet

Transcript

  1. ジェネリック CPU 実験本の実装と執筆 段階的拡張が可能な教育用 RISC-Ⅴマイクロアーキテクチャ 設計とその実装指南書の執筆 細谷 啓 (Hosoya Kei)

    September 3, 2020 サイボウズ・ラボユーズ第 10 期生
  2. 自己紹介 どんな事をやってるか 名前 細谷 啓 (Hosoya Kei) 専門 機械学習 Generative

    Adversarial Nets(GAN)1 自由ソフトウェア活動 中学から 10 年近く。GNU 関係のバグ修正 や様々な翻訳チームに出没 自作歴 (?) Lisp 方言&言語 VM, P2P Multi Agent System(MAS), 3D プリンタ, FPGA ボード, タスク指向音声対話シス テム, 投機実行 RISC-Ⅴ CPU2..etc 12017 年の初期 (WGAN や WGAN-GP が出た辺り) からなので、人生の十分の一 以上 (!!!)GAN に溶かしているという事になる 2筑波大の CPU 実験の余興で 1
  3. 話す内容 1. テーマの説明・行うこと 2. テーマの嬉しさ・技術選択の理由 3. テーマの進捗状況 4. 今後について 2

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

  5. ジェネリック CPU 実験って何? CPU 実験とは  各地の大学に存在する CPU を FPGA 等の実際の回路上に実装し

    てみる講義の事を所謂 CPU 実験3と呼びます。 3日本で有名なのは東大と京大ですが、様々な大学 (東工大, 筑波大..etc) に同じ ような実験があります 3
  6. ジェネリック CPU 実験って何? CPU 実験とは  各地の大学に存在する CPU を FPGA 等の実際の回路上に実装し

    てみる講義の事を所謂 CPU 実験3と呼びます。 (一般的には高難易度な)CPU 実験を誰でも楽しくやりやすいよう (ジェネリックにした)、書籍と実装&ドキュメントの形にしたい というのが根本のアイデアです。 3日本で有名なのは東大と京大ですが、様々な大学 (東工大, 筑波大..etc) に同じ ような実験があります 3
  7. 目標 CPU を作ると言っても色んな方向性がある。省電力・少面積・命 令辺りサイクルの削減・整数演算の高速化・浮動小数点演算の高 速化・多機能性..etc.. どういった所を目指していくかは重要 =⇒ 本テーマでは高速化と機能拡張の二つを目指す CPU を目標と

    して、最小限の実装から段階的にステップを踏んで CPU を実装し ていき、参考実装とその実装解説書籍を作成し公開する事を目標 とします。 4
  8. 行うこと • Chisel と Verilog-HDL というハードウェア記述原語を使い、 64bit RISC-Ⅴ4の段階的な実装をする。設計ドキュメントも 含め OSS

    公開 (ライセンスは Apache2.0 予定) • (出来れば) 複数の FPGA ボード上での実稼働可能にするハー ネスの作成 • 上記 CPU の実装に関する詳細な実装指南書の執筆 個人の活動であるので、時間切れ (ラボユース期間終了) になって もプロジェクトがちゃんと終われるよう、書籍と実装を常に纏 まった状態にして段階的に作業 (拡張とその対応する章の追加) を 出来る所までしていく。 4何故 RISC-Ⅴなのかは後述 5
  9. 具体的には:高速化 高速化では以下の実装を考えています: • 5 ステージパイプライン化 (Back Forwarding 等のハザード軽 減等も含む) •

    単純な分岐予測 Always (not) Taken の追加 • 2bit 分岐予測器 • Tomasulo Algorithm の実装による Out-of-Order(OoO) 化 (in-order issue, out-of-order execution.) • ReOrder Buffer による Commit Phase の追加 (効率的な OoO 実行が出来るようになる) 6
  10. 具体的には:機能拡張 • 最小限の RISC-V の実装 (RV64I User-Mode) • 整数乗算・除算命令の追加 (M

    拡張) • アトミック命令の追加 (A 拡張) • 圧縮命令 (16bit 命令長化) の追加 (C 拡張) • Machine-Mode の追加 (PLIC, CLIC といった例外コントロー ラ含む) • Supervisor-Mode の追加 • (本当に余裕があれば) 単精度浮動小数点命令の追加 (F 拡張) 7
  11. テーマの嬉しさ・技術選択の理由

  12. なぜ CPU 自作か やってみなきゃわからない事が多すぎるから 5 =⇒ コンピュータアーキテクチャの座学では CPU の事を (軽く実

    装できるようにでも) 理解するのが難しい。現実の CPU 実装では 色々なペリフェラル (周辺機器) やバス等の様々な事を考慮する必 要が有る (Ready-Valid プロトコルや AXI4, AMBA, PCIe 等のバスプ ロトコル。当然ながら割込ハンドリングも。) 5当然凄く楽しいというのもあります 8
  13. ISA エミュレータ自作では駄目なのか ソフトウェア上の実装 = 実回路上の実装 ISA エミュレータはあくまでもソフトウェア実装。回路とは一切 関係がないので、幾らでも神の視点を持ち込んで良くバスやメモ リレイテンシの心配も無用。Back Forwarding

    のようなプロセッ サ上技術は、当然回路上での実装の為の物なのでソフトウェア実 装では嬉しさがわからない。 回路面積や省電力まで考えたエミュレータにすれば良い?=⇒ それは合成可能という制約込みの HDL で良いと考えています 9
  14. RISC-Ⅴを使う理由 • オープンな ISA なので知的財産権の侵害の心配が一切ない! • 最低限の命令数が RV64(RISC-Ⅴ 64bit) で

    58(RV32 であれば 46) と少ない • 拡張に分かれていて、段階的に学んで実装する事が可能 • コンパイラ等のエコシステムが出来上がっており、Linux を ブートする事も可能 入門しやすい上に話題性もあり、その後 (実用・遊び) に繋げやす いという良いとこ取り!6 6ついでに RISC-V 人材になれる? (要出典) 10
  15. なぜ本が必要なのか • プロセッサ技術は情報が散逸している。今でも日本語で読め る資料は極めて少なく7、少しでも情報が纏まった資料は誰 もが欲しい状況。 • コンピュータアーキテクチャの講義を受けたとしても、半導 体プロセスや回路技術を踏まえたアーキテクトの判断を理解 するのは困難。 •

    誰もが CPU 実験を受けられるわけではない (比較的多くの大 学にあるが、数も少なくなっている) • Harvard CS2468のような講義資料や論文を読んでわかる人間 は、元々解ってる人間だけ。 =⇒ とにかく情報が無いし、数少ない情報も凄くわかりに くい!!! 7つい数日前にも CPU 自作本が刊行されていましたが 8発表時のコメントで間違い指摘を頂き、修正しました。ありがとうございます 11
  16. 本当にわかりにくい? (1) x86 AMD Zen2 マイクロアーキテクチャ の例9 例えば、右の資料は AMD 社の

    x86 Zen2 マイクロアーキテクチャの実行部 分の図です。これだけ読んで分かるで しょうか? 9図は https: //en.wikichip.org/wiki/amd/microarchitectures/zen_2 より 12
  17. 本当にわかりにくい? (2) RISC-V SiFive U841011 x86 だから複雑怪奇になってるだけ? では RISC-Ⅴの場合はどうでしょう。 右図は

    SiFive の U84 のマイクロアーキ テクチャ図です。 x86 とタームが変わっていてわかりに くい事がわかるでしょうか 10図は https: //www.linleygroup.com/mpr/article.php?id=12214Figure.1 より 11初めてのハイパフォーマンス RISC-Ⅴとして話題になったもの 13
  18. CPU の情報はわかりにくい 同じような投機実行の機構を持ちながらかなり単語ですら違いが あり、図のはずなのに理解しづらい事が解ったでしょうか? こういう事があるので、CPU 自作には可能な限り解説付きで纏 まった本が一冊でも多く欲しいと考えています。 14

  19. テーマの進捗状況

  20. 進捗:書籍 CPU の基礎・RISC-V 解説・Verilog-HDL 解説・Chisel 解説等の章 をほぼ書き終え、本としての体裁が整ってきた所。現在パイプラ イン実装の章を執筆中。 本の進捗を数値化するのは難しいですが、具体的なページ数とし ては、JIS

    B5 150p 前後。 15
  21. 進捗:CPU 実装 5 ステージ パイプライン RV64I(User-Mode Only) が RISC-Ⅴ公式 のテストパターンのほぼ全てを通過。

    Register File IF ID EX MEM WB Memory Register File IF ID EX MEM WB Memory 16
  22. この二ヶ月の成果を見て 本を書くのは何度やってもやっぱり大変……時世もあり、やはり思 うようには進んでいない 17

  23. 今後について

  24. 予定 やれる事はまだまだ多くあり、特に以下の部分を (出来れば) 直近 1,2 ヶ月で終わらせたいと考えています。 • 実装と設計ドキュメントの一般公開 • 5

    ステージパイプライン化までの書籍をラボユース内部の方 に見てもらう • M, A 拡張の公式テストパターン通過 18
  25. ご清聴ありがとうございました 何か質問があればどうぞ 19

  26. 質問セクション

  27. 想定質問 実機が確定していない理由 • 現実的に個人・小規模組織で使用可能なのは FPGA だが、 Xilinx, Altera(現 Intel),Lattice 等の

    FPGA ベンダがあり、ベン ダ依存の問題が多すぎる • 拡張を実装するにつれて面積も多くなるので、始まりの方で ボード固有の作業をしたくない 結局 RTL(レジスタ・トランスファ・レベル) での (論理合成可能と いう前提で) 健全性を示せるなら、後は FPGA ボードに適した適切 な回路制約を加えれば良いだけ12。それはプロジェクトを纏める 事を考える時期でもなんとかなるだろうという判断。 12クリティカルパスを見て 1 クロックサイクルを決定してステージ分割をするの も、Yosys 等で静的タイミング解析をすれば良いだけなので
  28. 想定質問 なぜ使う HDL が Chisel と Verilog なのか 様々な理由がありますが、以下の点に纏められます: •

    Chisel は Scala の組み込み DSL であるため、読者の環境が整 いやすく IDE 等の支援も受けやすい • RISC-Ⅴでは Chisel が実装で使われることが多く、本テーマ の内容であれば情報にリーチしやすい • Chisel だけであると FPGA 依存の問題が処理しづらい為、 Verilog を使う
  29. 想定質問 何故既存のマイクロアーキテクチャを使わないか riscv-sodor, BOOM, hummingbird.... 今や RISC-Ⅴのマイクロアー キ設計・実装は幾らでも公開されている。 が、流石に本テーマの段階的拡張を想定し、各段階をそれぞれ設 計・実装したマイクロアーキテクチャは無かった13。

    13既知の高速化技術を段階的に導入することは一般的にはまず無いので当然な のですが