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
740
RISC-V CPU 自作本の実装と執筆/cybozulabs-youth10-hosoya
Cybozu
PRO
March 31, 2021
Tweet
Share
More Decks by Cybozu
See All by Cybozu
kintone開発チームの紹介
cybozuinsideout
PRO
0
74k
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
60
AIツール開発ワークショップ(Dify)【サイボウズ新人研修2025】
cybozuinsideout
PRO
20
23k
モバイル【サイボウズ新人研修2025】
cybozuinsideout
PRO
3
3.8k
Git/GitHub を使う上で知っておくと嬉しいかも Tips【サイボウズ新人研修2025】
cybozuinsideout
PRO
14
10k
GitHub Copilot活用【サイボウズ新人研修2025】
cybozuinsideout
PRO
15
14k
ソフトウェアライセンス【サイボウズ新人研修2025】
cybozuinsideout
PRO
13
8.3k
エンジニアのためのアウトプット講座 〜知識をシェアするはじめの一歩〜【サイボウズ新人研修2025】
cybozuinsideout
PRO
7
4.6k
Docker入門【サイボウズ新人研修2025】
cybozuinsideout
PRO
13
12k
Other Decks in Technology
See All in Technology
roppongirb_20250911
igaiga
1
240
Webブラウザ向け動画配信プレイヤーの 大規模リプレイスから得た知見と学び
yud0uhu
0
230
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
9
73k
Generative AI Japan 第一回生成AI実践研究会「AI駆動開発の現在地──ブレイクスルーの鍵を握るのはデータ領域」
shisyu_gaku
0
270
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
200
Function Body Macros で、SwiftUI の View に Accessibility Identifier を自動付与する/Function Body Macros: Autogenerate accessibility identifiers for SwiftUI Views
miichan
2
180
AIエージェント開発用SDKとローカルLLMをLINE Botと組み合わせてみた / LINEを使ったLT大会 #14
you
PRO
0
120
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
250
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
21
11k
AWSで始める実践Dagster入門
kitagawaz
1
620
AIのグローバルトレンド2025 #scrummikawa / global ai trend
kyonmm
PRO
1
290
人工衛星のファームウェアをRustで書く理由
koba789
15
7.9k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3k
A Tale of Four Properties
chriscoyier
160
23k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
Done Done
chrislema
185
16k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.6k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Bash Introduction
62gerente
615
210k
Faster Mobile Websites
deanohume
309
31k
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