Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RISC-V CPU 自作本の実装と執筆/cybozulabs-youth10-hosoya
Search
Cybozu
PRO
March 31, 2021
Technology
820
0
Share
RISC-V CPU 自作本の実装と執筆/cybozulabs-youth10-hosoya
Cybozu
PRO
March 31, 2021
More Decks by Cybozu
See All by Cybozu
kintone リサーチ副部/UXリサーチャー 業務紹介
cybozuinsideout
PRO
0
39
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
10
78k
私たちが『JaSST協賛』から『外部コネクト』チームになった理由
cybozuinsideout
PRO
0
230
LLMでもいつものテスト技術〜意外と半分はこれまでのテストでした〜
cybozuinsideout
PRO
1
560
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
1.1k
LLMアプリの品質保証
cybozuinsideout
PRO
1
480
技術広報チームに丸投げしない!「一緒につくる」スポンサー活動
cybozuinsideout
PRO
0
210
テクニカルライター (グループウェア) について
cybozuinsideout
PRO
0
170
つけまが降ってきた日
cybozuinsideout
PRO
1
650
Other Decks in Technology
See All in Technology
DevOpsDays2026 Tokyo Cross-border practices to connect "safety" and "DX" in healthcare
hokkai7go
0
120
AI時代に新卒採用、はじめました/junior-engineer-never-die
dmnlk
0
230
AIがコードを書く時代の ジェネレーティブプログラミング
polidog
PRO
3
670
AIエージェントを構築して感じた、AI時代のCDKとの向き合い方
smt7174
1
150
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
4
14k
Autonomous Database - Dedicated 技術詳細 / adb-d_technical_detail_jp
oracle4engineer
PRO
5
13k
"SQLは書けません"から始まる データドリブン
kubell_hr
0
130
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.3k
TanStack Start エコシステムの現在地 / TanStack Start Ecosystem 2026
iktakahiro
1
360
サイバーフィジカル社会とは何か / What Is a Cyber-Physical Society?
ks91
PRO
0
160
スクラムを支える内部品質の話
iij_pr
0
350
Azure Lifecycle with Copilot CLI
torumakabe
0
130
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Code Reviewing Like a Champion
maltzj
528
40k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
エンジニアに許された特別な時間の終わり
watany
106
240k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Side Projects
sachag
455
43k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
170
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
300
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.4k
Paper Plane (Part 1)
katiecoart
PRO
0
6.5k
Transcript
RISC-V CPU 自作本の実装と執筆 細谷 啓 (Hosoya Kei) March 30, 2021
サイボウズ・ラボユーズ第 10 期生 C/C++によるソフトウェア開発ゼミ
話す内容 1. テーマの説明・行うこと 2. CPU 自作はどういうものか 3. テーマの進捗状況 4. 今後について
1
テーマの説明・行うこと
なんのために CPU 自作をするか コンピュータアーキテクチャの座学では CPU の事を理解したつも りでも、CPU はやってみなきゃわからない事が多すぎる。 現実の CPU
実装では色々なペリフェラル (周辺機器) やバス・ キャッシュ等の様々な事を考慮する必要が有る (Ready-Valid プロ トコルや AXI4, AMBA, PCIe 等のバスプロトコル。当然ながら割込 コントローラ) 自分のコンピュータをどれくらい理解出来ているかを試すには CPU 自作は最適。 あと楽しい 2
CPU とは (a) (b) Figure 1: 筆者所有の Intel 8088(a, 1979
年発売) と AMD ThreadRipper 2920X(b, 2018 年発売)。 両方とも時代は違えど CPU。 3
(現代の)CPU 自作は大変 CPU 自作で必要な知識を大雑把に分解すると.... • ISA 設計 • バス設計 •
周辺機器設計 • 回路設計知識 • ECAD 習熟 • メモリコントローラ設計 • RTL 設計技術 • 消費電力推定 • ベンチマーク • …etc … どう考えても一気には出来ない =⇒ 各個撃破が肝要 4
本テーマの目標 本テーマでは高速化と機能拡張の二つを目指す CPU を目標とし て、最小限の実装から段階的にステップを踏んで CPU を実装して いき、参考実装とその実装解説書籍を作成し公開する事を目標と した。 5
具体的に何をやるか • ISA 設計, コンパイラバックエンド対応等の部分は切り捨てる • Chisel と Verilog-HDL というハードウェア記述言語を使い、
主に 64bit RISC-Ⅴの段階的な実装 (論理合成可能な状態で) をする1 • 上記 CPU の実装に関する詳細な実装指南書の執筆 1RiSC-16 など他の ISA も演習で行います 6
具体的には:高速化 • 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
具体的には:機能拡張 • 最小限の RISC-V の実装 (RV64I User-Mode) • 整数乗算・除算命令の追加 (M
拡張) • アトミック命令の追加 (A 拡張) • 圧縮命令 (16bit 命令長化) の追加 (C 拡張) • Machine-Mode の追加 (PLIC, CLIC といった例外コントロー ラ含む) • Supervisor-Mode の追加 • (本当に余裕があれば) 単精度浮動小数点命令の追加 (F 拡張) 8
CPU 自作はどういうものか
CPU のデバッグってどうするの? 基本的には命令列をメモリにマップし、命令コミット時点でのレ ジスタステート等をゴールデンモデル2と比較。 2様々な定義がありますが、ここでは ISA に対し真正な挙動をするモデルの意味 9
デバッグ:波形? 10
デバッグ:ターミナル printf デバッグの方が楽! 11
デバッグ:ゴールデンモデルとの比較 テスト自動化出来る場合は多いが、基本的に複数命令に跨った問 題が発生するので見比べる必要がある 例:モデルのダンプ … C0: 21 [0] pc=[0000001002] W[r
0=0000000000000000][0] R[r 0=0000000000000000] R[r 0=918250ce690efa03] inst=[00006db7] lui s11, 0x6 … 12
テーマの進捗状況
進捗:書籍 一先ずある程度読める形になったのが以下の章 • Verilog-HDL 解説&回路設計基礎 • Chisel 解説 • RISC-V
解説 • キャッシュ解説 • シングルサイクルプロセッサ実装 • 5 ステージパイプライン実装 が、まだ不完全で本としての流れが出来ていない。 13
進捗: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
現状の問題 • Chisel が相当不安定 (この一年で API 含めエコシステムがか なり変更された, 公式ドキュメントが古くて内容が通用し ない…etc
…) • 初学者が何に躓くのかわからなくなってしまい悩み込む3 • ご時世で時間捻出が大変 3個人的に、分かれば自明病 (分かってしまうと勉強してた時なにに躓いていた のがわからなくなる) と呼んでいます 15
今後について
今後の予定 4,5 月中 人を募ってプライベートプレビューをして貰う 6,7 月 (開始から一年の区切り) にキャッシュ付きパイプライン章 までを纏めた本として公開予定 16
ご清聴ありがとうございました この場でもサイボウズラボの方々、特にメンターである光成さん にお礼を言わせてください。ご面倒ばかりおかけしてしまいまし たが、約一年間指導して頂きありがとうございました! 発表には間に合いませんでしたが、6 月までには本として発表す る予定なので、その際はよろしくお願いします。 17