《手把手教你設計CPU——RISC-V處理器篇》
鬍振波 著
(2018年5月齣版)
這本書講什麼?
《手把手教你設計CPU》以極為通俗易懂的語言對RISC-V架構進行瞭係統而全麵地介紹,並且結閤蜂鳥E200係列開源處理器核對CPU設計技術進行瞭深入淺齣的講解,圖文並茂,生動活潑,體現瞭作者深厚的專業技能以及將專業知識進行通俗化錶述的優秀能力。令人印象深刻的是,本書作者在對RISC-V架構進行介紹的過程中,加入瞭大量的背景知識解讀以及個人注解,使得枯燥的專業知識變得非常易於理解,可以說是難能可貴。這是一本凝聚瞭作者多年所學的精心之作,非常值得一讀,對於RISC-V架構在國內的傳播也將具有巨大的推動作用。本書作為國內不可多得的介紹RISC-V的中文書籍,相信一定會成為該領域的經典之作。
這本書目錄
第一部分 CPU與RISC-V綜述
第1章 一文讀懂CPU之三生三世 2
1.1 眼看他起高樓,眼看他宴賓客,眼看他樓塌瞭——CPU眾生相 3
1.1.1 ISA——CPU的靈魂 4
1.1.2 CISC與RISC 5
1.1.3 32位與64位架構 6
1.1.4 ISA眾生相 6
1.1.5 CPU的領域之分 10
1.2 ISA請扛起這口鍋——為什麼國産CPU尚未足夠成功 12
1.2.1 MIPS係——龍芯和君正 12
1.2.2 x86係——北大眾誌、兆芯和海光 13
1.2.3 Power係——中晟宏芯 13
1.2.4 Alpha係——申威 14
1.2.5 ARM係——飛騰、華為海思、展訊和華芯通 14
1.2.6 背鍋俠ISA 15
1.3 人生已是如此艱難,你又何必拆穿——CPU從業者的無奈 17
1.4 無敵是多麼寂寞——ARM統治著的世界 18
1.4.1 獨樂樂與眾樂樂——ARM公司的盈利模式 18
1.4.2 小個子有大力量——無處不在的Cortex-M係列 21
1.4.3 移動王者——Cortex-A係列在手持設備領域的巨大成功 23
1.4.4 進擊的巨人——ARM進軍PC與服務器領域的雄心 25
1.5 東邊日齣西邊雨,道是無晴卻有晴——RISC-V登場 25
1.6 原來你是這樣的“薯片”——ARM的免費計劃 28
1.7 舊時王謝堂前燕,飛入尋常百姓傢——你也可以設計自己的處理器 28
第2章 大道至簡——RISC-V架構之魂 29
2.1 簡單就是美——RISC-V架構的設計
哲學 30
2.1.1 無病一身輕——架構的篇幅 30
2.1.2 能屈能伸——模塊化的
指令集 32
2.1.3 濃縮的都是精華——指令的數量 32
2.2 RISC-V指令集架構簡介 33
2.2.1 模塊化的指令子集 33
2.2.2 可配置的通用寄存器組 34
2.2.3 規整的指令編碼 34
2.2.4 簡潔的存儲器訪問指令 34
2.2.5 高效的分支跳轉指令 35
2.2.6 簡潔的子程序調用 36
2.2.7 無條件碼執行 37
2.2.8 無分支延遲槽 37
2.2.9 零開銷硬件循環 38
2.2.10 簡潔的運算指令 38
2.2.11 優雅的壓縮指令子集 39
2.2.12 特權模式 40
2.2.13 CSR寄存器 40
2.2.14 中斷和異常 40
2.2.15 矢量指令子集 40
2.2.16 自定製指令擴展 41
2.2.17 總結與比較 41
2.3 RISC-V軟件工具鏈 42
2.4 RISC-V和其他開放架構有何不同 44
2.4.1 平民英雄——OpenRISC 44
2.4.2 豪門顯貴——SPARC 44
2.4.3 名校優生——RISC-V 45
第3章 亂花漸欲迷人眼——盤點RISC-V商業版本與開源版本 46
3.1 各商業與開源版本綜述 47
3.1.1 Rocket Core(開源) 47
3.1.2 BOOM Core(開源) 49
3.1.3 Freedom SoC(開源) 50
3.1.4 LowRISC SoC(開源) 50
3.1.5 PULPino Core and SoC(開源) 50
3.1.6 PicoRV32 Core(開源) 51
3.1.7 SCR1 Core(開源) 51
3.1.8 ORCA Core(開源) 51
3.1.9 Andes Core(商業IP) 52
3.1.10 Microsemi Core(商業IP) 52
3.1.11 Codasip Core(商業IP) 53
3.1.12 蜂鳥E200 Core & SoC(開源) 53
3.2 總結 53
第4章 中國第一個開源RISC-V——蜂鳥E200係列超低功耗Core & SoC 54
4.1 與眾不同的蜂鳥E200處理器 55
4.2 蜂鳥E200簡介——蜂鳥雖小,
五髒俱全 56
4.3 蜂鳥E200型號係列 57
4.4 蜂鳥E200性能指標 58
4.5 蜂鳥E200配套SoC 59
4.6 蜂鳥E200配置選項 60
第二部分 手把手教你使用
Verilog設計CPU
第5章 先見森林,後觀樹木——蜂鳥E200設計總覽和頂層介紹 65
5.1 處理器硬件設計概述 66
5.1.1 架構和微架構 66
5.1.2 CPU、處理器、Core和
處理器核 66
5.1.3 處理器設計和驗證的特點 66
5.2 蜂鳥E200處理器核設計哲學 67
5.3 蜂鳥E200處理器核RTL代碼風格
介紹 68
5.3.1 使用標準DFF模塊例化生成
寄存器 68
5.3.2 推薦使用assign語法替代if-else和case語法 70
5.3.3 其他若乾注意事項 71
5.3.4 小結 72
5.4 蜂鳥E200模塊層次劃分 72
5.5 蜂鳥E200處理器核源代碼 73
5.6 蜂鳥E200處理器核配置選項 73
5.7 蜂鳥E200處理器核支持的RISC-V
指令子集 74
5.8 蜂鳥E200處理器流水綫結構 74
5.9 蜂鳥E200處理器核頂層接口介紹 74
5.10 總結 77
第6章 流水綫不是流水賬——蜂鳥E200
流水綫介紹 78
6.1 處理器流水綫概述 79
6.1.1 從經典的五級流水綫說起 79
6.1.2 可否不要流水綫——流水綫和狀態機的關係 81
6.1.3 深處種菱淺種稻,不深不淺種荷花——流水綫的深度 81
6.1.4 嚮上生長——越來越深的
流水綫 82
6.1.5 嚮下生長——越來越淺的
流水綫 83
6.1.6 總結 83
6.2 處理器流水綫中的亂序 83
6.3 處理器流水綫中的反壓 84
6.4 處理器流水綫中的衝突 84
6.4.1 流水綫中的資源衝突 84
6.4.2 流水綫中的數據衝突 85
6.5 蜂鳥E200處理器的流水綫 86
6.5.1 流水綫總體結構 86
6.5.2 流水綫中的衝突 87
6.6 總結 87
第7章 萬事開頭難嗎——一切從取指令 開始 88
7.1 取指概述 89
7.1.1 取指特點 89
7.1.2 如何快速取指 90
7.1.3 如何處理非對齊指令 91
7.1.4 如何處理分支指令 92
7.2 RISC-V架構特點對於取指的簡化 97
7.2.1 規整的指令編碼格式 97
7.2.2 指令長度指示碼放於低位 97
7.2.3 簡單的分支跳轉指令 98
7.2.4 沒有分支延遲槽指令 100
7.2.5 提供明確的靜態分支預測依據 100
7.2.6 提供明確的RAS依據 101
7.3 蜂鳥E200處理器的取指實現 101
7.3.1 IFU總體設計思路 102
7.3.2 Mini-Decode 103
7.3.3 Simple-BPU分支預測 105
7.3.4 PC生成 109
7.3.5 訪問ITCM和BIU 111
7.3.6 ITCM 115
7.3.7 BIU 116
7.4 總結 116
第8章 一鼓作氣,執行力是關鍵—— 執行 117
8.1 執行概述 118
8.1.1 指令譯碼 118
8.1.2 指令執行 118
8.1.3 流水綫的衝突 119
8.1.4 指令的交付 119
8.1.5 指令發射、派遣、執行、寫迴的順序 119
8.1.6 分支解析 121
8.1.7 小結 121
8.2 RISC-V架構特點對於執行的簡化 122
8.2.1 規整的指令編碼格式 122
8.2.2 優雅的16位指令 122
8.2.3 精簡的指令個數 122
8.2.4 整數指令都是兩操作數 123
8.3 蜂鳥E200處理器的執行實現 123
8.3.1 執行指令列錶 123
8.3.2 EXU總體設計思路 123
8.3.3 譯碼 124
8.3.4 整數通用寄存器組 130
8.3.5 CSR寄存器 133
8.3.6 指令發射派遣 134
8.3.7 流水綫衝突、長指令和OITF 139
8.3.8 ALU 145
8.3.9 高性能乘除法 157
8.3.10 浮點單元 158
8.3.11 交付 159
8.3.12 寫迴 159
8.3.13 協處理器擴展 160
8.3.14 小結 160
第9章 善始者實繁,剋終者蓋寡——交付 161
9.1 處理器交付、取消、衝刷 162
9.1.1 處理器交付、取消、衝刷簡介 162
9.1.2 處理器交付常見實現策略 163
9.2 RISC-V架構特點對於交付的簡化 164
9.3 蜂鳥E200處理器交付硬件實現 164
9.3.1 分支預測指令的處理 165
9.3.2 中斷和異常的處理 168
9.3.3 多周期執行指令的交付 169
9.3.4 小結 169
第10章 讓子彈飛一會兒——寫迴 170
10.1 處理器的寫迴 171
10.1.1 處理器寫迴功能簡介 171
10.1.2 處理器寫迴常見策略 171
10.2 蜂鳥E200處理器的寫迴硬件實現 171
10.2.1 最終寫迴仲裁 172
10.2.2 OITF和長指令寫迴仲裁 174
10.2.3 小結 177
第11章 哈弗還是比亞迪—— 存儲器架構 178
11.1 存儲器架構概述 179
11.1.1 誰說處理器一定要有緩存 179
11.1.2 處理器一定要有存儲器 180
11.1.3 ITCM和DTCM 182
11.2 RISC-V架構特點對於存儲器訪問指令的簡化 183
11.2.1 僅支持小端格式 183
11.2.2 無地址自增自減模式 183
11.2.3 無“一次讀多個數據”和“一次寫多個數據”指令 183
11.3 RISC-V架構的存儲器相關指令 184
11.3.1 Load和Store指令 184
11.3.2 Fence指令 184
11.3.3 “A”擴展指令 184
11.4 蜂鳥E200處理器存儲器子係統硬件實現 185
11.4.1 存儲器子係統總體設計思路 185
11.4.2 AGU 186
11.4.3 LSU 190
11.4.4 ITCM和DTCM 192
11.4.5 “A”擴展指令處理 195
11.4.6 Fence與Fence.I指令處理 200
11.4.7 BIU 202
11.4.8 ECC 202
11.4.9 小結 202
第12章 黑盒子的窗口——總綫接口單元BIU 203
12.1 片上總綫協議概述 204
12.1.1 AXI 204
12.1.2 AHB 204
12.1.3 APB 205
12.1.4 TileLink 205
12.1.5 總結比較 205
12.2 自定義總綫協議ICB 206
12.2.1 ICB總綫協議簡介 206
.....................
初次拿到這本《RISC-V處理器設計實戰》時,我最直觀的感受就是它的實在與接地氣。書名裏的“手把手教你”絕非虛言,我一直覺得CPU設計是個高高在上、門檻極高的領域,但這本書的開篇就以一種非常友好的姿態,將復雜的概念拆解開來,一步步引導讀者建立起基礎認知。它不是那種上來就拋齣大量晦澀術語的書,而是從最基本的數字邏輯原理講起,將它們與CPU的構成緊密聯係。我尤其欣賞它在講解RISC-V指令集時,並沒有僅僅羅列指令,而是結閤瞭實際的應用場景,讓你明白為什麼會有這些指令,以及它們在處理器執行過程中扮演的角色。書中大量穿插的圖示和僞代碼,讓抽象的邏輯變得可視化,我常常跟著書中的步驟,在自己的腦海裏或者紙上畫齣數據流和控製流,感覺就像在搭建一個真實的積木模型。
評分閱讀過程中,我感受到瞭作者對於RISC-V指令集深入淺齣的理解。他能夠將RISC-V的設計哲學,比如其精簡指令集(RISC)的優勢,以及開放標準的意義,用非常通俗易懂的語言闡述齣來。我尤其欣賞他對RISC-V指令的分類和講解,能夠讓我清晰地分辨齣不同指令的用途,以及它們在處理器中是如何被高效地處理的。書中對於指令流水綫的講解,更是讓我受益匪淺。從單周期到多周期,再到 Pipelining 的概念,作者層層遞進,將原本復雜的流水綫操作分解為一個個可控的步驟,並詳細解釋瞭其中的挑戰,比如冒險(Hazard)的産生以及解決方法。這種細緻入微的講解,讓我對現代處理器的內部工作原理有瞭更深層次的認識。
評分讓我印象深刻的是,作者在講解過程中,非常注重實踐的指導性。這本書不僅僅是理論的堆砌,它真正地將讀者帶入瞭“設計”這個動詞本身。當我讀到關於Verilog HDL的章節時,作者的講解非常清晰,而且提供瞭大量的代碼示例。這些代碼不僅僅是片段,而是能夠構成一個完整處理器的模塊。作者會詳細解釋每一行代碼的含義,以及它對應於硬件設計的哪一部分。更難能可貴的是,書中還提供瞭仿真和調試的建議,這對於初學者來說至關重要。我嘗試著跟著書中的例子,搭建瞭一個簡單的仿真環境,親眼看到我的代碼在仿真器裏運行,指令被正確地執行,這給我帶來瞭巨大的成就感。感覺自己不再是旁觀者,而是真正參與到瞭CPU的設計過程中。
評分這本書最吸引我的地方在於,它將“自主設計”的理念貫穿始終。作者並沒有止步於講解現有的CPU設計,而是鼓勵讀者去思考如何根據自己的需求去定製和優化處理器。他在書中提齣瞭一些開放性的思考題,引導讀者去探索不同的設計思路和權衡。例如,在討論不同指令集擴展的時候,作者會讓你思考在特定應用場景下,選擇哪些擴展會更有效率。這種培養獨立思考和解決問題能力的設計,讓我覺得這本書不僅僅是一本技術手冊,更是一本“設計思維”的啓濛書。它讓我明白,學習CPU設計,最終是為瞭能夠“創造”,而不是僅僅“復刻”。我開始覺得,設計一個屬於自己的CPU,或許並沒有想象中那麼遙不可及。
評分這本書的循序漸進是我最為看重的一點。它並沒有急於求成,而是像一位耐心的老師,確保你真正理解瞭前一步的內容,纔會進入下一個環節。我特彆喜歡它在引入RISC-V架構後,沒有立刻就跳到復雜的流水綫設計,而是先從一個非常簡單的單周期處理器模型入手。通過這個基礎模型,你可以清晰地看到指令的取指、譯碼、執行、訪存和寫迴這五個基本階段是如何協同工作的。然後,作者再逐步引入概念,比如時序邏輯、寄存器堆、ALU等關鍵組件的實現細節,並且會解釋它們是如何被集成到處理器中的。每一次知識點的推進,都伴隨著對前一階段的鞏固和提升。我覺得這種“小步快跑”的方式,大大降低瞭學習難度,讓我這個初學者也能感受到掌握核心技術的樂趣,而不是被海量的信息淹沒。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有