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
0
710
RISC-V CPU 自作本の実装と執筆/cybozulabs-youth10-hosoya
Cybozu
PRO
March 31, 2021
Tweet
Share
More Decks by Cybozu
See All by Cybozu
PSIRTでAIテストを実施するまでの道のり
cybozuinsideout
PRO
0
91
無理なく続けるサイボウズの社内勉強会
cybozuinsideout
PRO
1
1.2k
分散システムにおける 無兆候データ破損の影響について
cybozuinsideout
PRO
1
62
タンパク質構造のシミュレーションソフトウェア試行錯誤
cybozuinsideout
PRO
1
49
読みやすいアセンブリ言語
cybozuinsideout
PRO
1
44
Wasmで拡張できる軽量マークアップ⾔語Brack(後編)
cybozuinsideout
PRO
1
38
Wasmで拡張できる軽量マークアップ⾔語Brack(前編)
cybozuinsideout
PRO
1
39
kintone開発組織のAWSエンジニアの紹介
cybozuinsideout
PRO
0
240
kintone開発組織のサービスプラットフォームチームの紹介
cybozuinsideout
PRO
0
140
Other Decks in Technology
See All in Technology
AWS Organizations 新機能!マルチパーティ承認の紹介
yhana
1
170
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
210
製造業からパッケージ製品まで、あらゆる領域をカバー!生成AIを利用したテストシナリオ生成 / 20250627 Suguru Ishii
shift_evolve
PRO
1
150
Wasm元年
askua
0
160
生成AI時代の開発組織・技術・プロセス 〜 ログラスの挑戦と考察 〜
itohiro73
1
330
Github Copilot エージェントモードで試してみた
ochtum
0
110
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
4
890
Oracle Audit Vault and Database Firewall 20 概要
oracle4engineer
PRO
3
1.7k
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
5
4.2k
GitHub Copilot の概要
tomokusaba
1
140
本が全く読めなかった過去の自分へ
genshun9
0
630
Model Mondays S2E03: SLMs & Reasoning
nitya
0
200
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.7k
4 Signs Your Business is Dying
shpigford
184
22k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
The Straight Up "How To Draw Better" Workshop
denniskardys
234
140k
Six Lessons from altMBA
skipperchong
28
3.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Being A Developer After 40
akosma
90
590k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Music & Morning Musume
bryan
46
6.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
800
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