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
660
RISC-V CPU 自作本の実装と執筆/cybozulabs-youth10-hosoya
Cybozu
PRO
March 31, 2021
Tweet
Share
More Decks by Cybozu
See All by Cybozu
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
45k
テクニカルライティング
cybozuinsideout
PRO
4
300
サイボウズのアジャイルクオリティ2024
cybozuinsideout
PRO
3
270
モブに早く慣れたい人のためのガイド2024
cybozuinsideout
PRO
3
370
モバイル
cybozuinsideout
PRO
3
190
ソフトウェアライセンス
cybozuinsideout
PRO
4
160
ソフトウェアテスト
cybozuinsideout
PRO
3
260
自動テスト
cybozuinsideout
PRO
3
270
Docker入門2024
cybozuinsideout
PRO
3
460
Other Decks in Technology
See All in Technology
Next.jsとNuxtが混在? iframeでなんとかする!
ypresto
1
130
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
2
230
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
180
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
560
複雑なState管理からの脱却
sansantech
PRO
1
160
Introduction to Works of ML Engineer in LY Corporation
lycorp_recruit_jp
0
150
プロダクト活用度で見えた真実 ホリゾンタルSaaSでの顧客解像度の高め方
tadaken3
0
210
Zennのパフォーマンスモニタリングでやっていること
ryosukeigarashi
0
240
OCI 運用監視サービス 概要
oracle4engineer
PRO
0
4.8k
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.2k
強いチームと開発生産性
onk
PRO
36
12k
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.7k
Featured
See All Featured
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Building Your Own Lightsaber
phodgson
103
6.1k
We Have a Design System, Now What?
morganepeng
50
7.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
130
Raft: Consensus for Rubyists
vanstee
136
6.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
How STYLIGHT went responsive
nonsquared
95
5.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
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