Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

khosoya

August 29, 2020
Tweet

Other Decks in Education

Transcript

  1. 自己紹介 どんな事をやってるか 名前 細谷 啓 (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
  2. ジェネリック CPU 実験って何? CPU 実験とは  各地の大学に存在する CPU を FPGA 等の実際の回路上に実装し

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

    てみる講義の事を所謂 CPU 実験3と呼びます。 (一般的には高難易度な)CPU 実験を誰でも楽しくやりやすいよう (ジェネリックにした)、書籍と実装&ドキュメントの形にしたい というのが根本のアイデアです。 3日本で有名なのは東大と京大ですが、様々な大学 (東工大, 筑波大..etc) に同じ ような実験があります 3
  4. 行うこと • Chisel と Verilog-HDL というハードウェア記述原語を使い、 64bit RISC-Ⅴ4の段階的な実装をする。設計ドキュメントも 含め OSS

    公開 (ライセンスは Apache2.0 予定) • (出来れば) 複数の FPGA ボード上での実稼働可能にするハー ネスの作成 • 上記 CPU の実装に関する詳細な実装指南書の執筆 個人の活動であるので、時間切れ (ラボユース期間終了) になって もプロジェクトがちゃんと終われるよう、書籍と実装を常に纏 まった状態にして段階的に作業 (拡張とその対応する章の追加) を 出来る所までしていく。 4何故 RISC-Ⅴなのかは後述 5
  5. 具体的には:高速化 高速化では以下の実装を考えています: • 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
  6. 具体的には:機能拡張 • 最小限の RISC-V の実装 (RV64I User-Mode) • 整数乗算・除算命令の追加 (M

    拡張) • アトミック命令の追加 (A 拡張) • 圧縮命令 (16bit 命令長化) の追加 (C 拡張) • Machine-Mode の追加 (PLIC, CLIC といった例外コントロー ラ含む) • Supervisor-Mode の追加 • (本当に余裕があれば) 単精度浮動小数点命令の追加 (F 拡張) 7
  7. なぜ CPU 自作か やってみなきゃわからない事が多すぎるから 5 =⇒ コンピュータアーキテクチャの座学では CPU の事を (軽く実

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

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

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

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

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

    SiFive の U84 のマイクロアーキ テクチャ図です。 x86 とタームが変わっていてわかりに くい事がわかるでしょうか 10図は https: //www.linleygroup.com/mpr/article.php?id=12214Figure.1 より 11初めてのハイパフォーマンス RISC-Ⅴとして話題になったもの 13
  13. 予定 やれる事はまだまだ多くあり、特に以下の部分を (出来れば) 直近 1,2 ヶ月で終わらせたいと考えています。 • 実装と設計ドキュメントの一般公開 • 5

    ステージパイプライン化までの書籍をラボユース内部の方 に見てもらう • M, A 拡張の公式テストパターン通過 18
  14. 想定質問 実機が確定していない理由 • 現実的に個人・小規模組織で使用可能なのは FPGA だが、 Xilinx, Altera(現 Intel),Lattice 等の

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

    Chisel は Scala の組み込み DSL であるため、読者の環境が整 いやすく IDE 等の支援も受けやすい • RISC-Ⅴでは Chisel が実装で使われることが多く、本テーマ の内容であれば情報にリーチしやすい • Chisel だけであると FPGA 依存の問題が処理しづらい為、 Verilog を使う