注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)硬件、外部設(shè)備與維護(hù)手把手教你RISC-V CPU 處理器設(shè)計(jì)(上)

手把手教你RISC-V CPU 處理器設(shè)計(jì)(上)

手把手教你RISC-V CPU 處理器設(shè)計(jì)(上)

定 價(jià):¥109.80

作 者: 芯來(lái)科技生態(tài)組 著,胡振波 編
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787115568007 出版時(shí)間: 2021-10-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 376 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書(shū)系統(tǒng)地介紹了 CPU 設(shè)計(jì)技巧和新興開(kāi)源RISC-V架構(gòu),內(nèi)容翔實(shí),涵蓋開(kāi)源蜂鳥(niǎo)E203處理器各模塊的具體實(shí)現(xiàn),以及可擴(kuò)展協(xié)處理器的實(shí)現(xiàn)機(jī)制。為了讓讀者學(xué)以致用,本書(shū)還集成了大量的實(shí)例,用實(shí)例把各個(gè)模塊的實(shí)現(xiàn)方式貫穿起來(lái)。 本書(shū)適合從事CPU設(shè)計(jì)的工程師和技術(shù)愛(ài)好者閱讀。

作者簡(jiǎn)介

  胡振波,芯來(lái)科技創(chuàng)辦人兼執(zhí)行官,中國(guó)RISC-V領(lǐng)域的先行者,擁有豐富的處理器內(nèi)核開(kāi)發(fā)經(jīng)驗(yàn),曾長(zhǎng)期就職于外企,擔(dān)任處理器內(nèi)核研發(fā)核心崗位負(fù)責(zé)人。其打造的國(guó)內(nèi)RISC-V開(kāi)源項(xiàng)目——蜂鳥(niǎo)E203,對(duì)國(guó)內(nèi)RISC-V的普及和推廣起到了巨大的推動(dòng)作用。以胡振波為核心創(chuàng)辦的芯來(lái)科技目前已經(jīng)成為中國(guó)先行的RISC-V處理器內(nèi)核IP和解決方案公司,推出的嵌入式CPU核系列產(chǎn)品處于中國(guó)RISC-V處理器研發(fā)與產(chǎn)業(yè)化的前列。

圖書(shū)目錄

第 一部分 CPU與RISC-V綜述

第 1章 CPU之三生三世 2
1.1 眼看他起高樓,眼看他宴賓客,眼看他樓塌了—CPU眾生相 3
1.1.1 ISA—CPU的靈魂 4
1.1.2 CISC架構(gòu)與RISC架構(gòu) 5
1.1.3 32位架構(gòu)與64位架構(gòu) 6
1.1.4 ISA眾生相 6
1.1.5 CPU的領(lǐng)域之分 11
1.2 ISA請(qǐng)扛起這口鍋—為什么國(guó)產(chǎn)CPU尚未足夠成熟 12
1.2.1 MIPS系—龍芯和君正 12
1.2.2 x86系—北大眾志、上海兆芯和天津海光 13
1.2.3 Power系—中晟宏芯 14
1.2.4 Alpha系—申威 14
1.2.5 ARM系—飛騰、海思、展訊 14
1.2.6 RISC-V系—平頭哥、芯來(lái)科技 16
1.2.7 背鍋俠ISA 16
1.3 人生已如此艱難,你又何必拆穿—CPU從業(yè)者的無(wú)奈 18
1.4 無(wú)敵者是多么寂寞—ARM統(tǒng)治著的世界 19
1.4.1 獨(dú)樂(lè)樂(lè)與眾樂(lè)樂(lè)—ARM公司的盈利模式 19
1.4.2 小個(gè)子有大力量—無(wú)處不在的Cortex-M系列 22
1.4.3 移動(dòng)王者—Cortex-A系列在手持設(shè)備領(lǐng)域的巨大成功 23
1.4.4 進(jìn)擊的巨人—ARM進(jìn)軍PC與服務(wù)器領(lǐng)域的雄心 25
1.4.5 ARM當(dāng)前發(fā)展 26
1.5 東邊日出西邊雨,道是無(wú)晴卻有晴—RISC-V登場(chǎng) 26
1.5.1 緣起名?!?6
1.5.2 興于開(kāi)源 27
1.5.3 本土發(fā)展 29
1.6 舊時(shí)王謝堂前燕,飛入尋常百姓家—你也可以設(shè)計(jì)自己的處理器 30
第 2章 大道至簡(jiǎn)—RISC-V架構(gòu)之魂 31
2.1 簡(jiǎn)單就是美—RISC-V架構(gòu)的設(shè)計(jì)理念 32
2.1.1 無(wú)病一身輕—架構(gòu)的篇幅 32
2.1.2 能屈能伸—模塊化的指令集 34
2.1.3 濃縮的都是精華—指令的數(shù)量 34
2.2 RISC-V架構(gòu)簡(jiǎn)介 35
2.2.1 模塊化的指令集 35
2.2.2 可配置的通用寄存器組 36
2.2.3 規(guī)整的指令編碼 36
2.2.4 簡(jiǎn)潔的存儲(chǔ)器訪問(wèn)指令 37
2.2.5 高效的分支跳轉(zhuǎn)指令 38
2.2.6 簡(jiǎn)潔的子程序調(diào)用 38
2.2.7 無(wú)條件碼執(zhí)行 39
2.2.8 無(wú)分支延遲槽 40
2.2.9 零開(kāi)銷(xiāo)硬件循環(huán)指令 40
2.2.10 簡(jiǎn)潔的運(yùn)算指令 40
2.2.11 優(yōu)雅的壓縮指令子集 41
2.2.12 特權(quán)模式 42
2.2.13 CSR 42
2.2.14 中斷和異?!?2
2.2.15 P擴(kuò)展指令子集 43
2.2.16 矢量指令子集 43
2.2.17 自定義指令擴(kuò)展 43
2.2.18 比較 43
2.3 RISC-V軟件工具鏈 44
2.4 RISC-V和其他開(kāi)放架構(gòu)有何不同 47
2.4.1 平民英雄—OpenRISC 47
2.4.2 豪門(mén)顯貴—SPARC 48
2.4.3 身出名門(mén)—MIPS 48
2.4.4 名校優(yōu)生—RISC-V 49
第3章 亂花漸欲迷人眼—盤(pán)點(diǎn)RISC-V商業(yè)版本與開(kāi)源版本 50
3.1 各商業(yè)版本與開(kāi)源版本綜述 51
3.1.1 Rocket Core 51
3.1.2 BOOM Core 53
3.1.3 Freedom E310 SoC 54
3.1.4 LowRISC SoC 54
3.1.5 PULPino Core與SoC 54
3.1.6 PicoRV32 Core 55
3.1.7 SCR1 Core 56
3.1.8 ORCA Core 56
3.1.9 Andes Core 56
3.1.10 Microsemi Core 56
3.1.11 Codasip Core 57
3.1.12 Nuclei Core 57
3.1.13 蜂鳥(niǎo)E203處理器核與SoC 58
3.2 小結(jié) 59
第4章 開(kāi)源RISC-V—蜂鳥(niǎo)E203處理器核與SoC 60
4.1 與眾不同的蜂鳥(niǎo)E203處理器 61
4.2 蜂鳥(niǎo)E203處理器簡(jiǎn)介—蜂鳥(niǎo)雖小,五臟俱全 62
4.3 蜂鳥(niǎo)E203處理器的性能指標(biāo) 64
4.4 蜂鳥(niǎo)E203處理器的配套SoC 64
4.5 蜂鳥(niǎo)E203處理器的配置選項(xiàng) 66

第二部分 手把手教你使用Verilog設(shè)計(jì)CPU
第5章 先見(jiàn)森林,后觀樹(shù)木—蜂鳥(niǎo)E203處理器核設(shè)計(jì)總覽和頂層 70
5.1 處理器硬件設(shè)計(jì)概述 71
5.1.1 架構(gòu)和微架構(gòu) 71
5.1.2 CPU、處理器、Core和處理器核 71
5.1.3 處理器設(shè)計(jì)和驗(yàn)證 71
5.2 蜂鳥(niǎo)E203處理器核的設(shè)計(jì)理念 72
5.3 蜂鳥(niǎo)E203處理器核的RTL代碼風(fēng)格 73
5.3.1 使用標(biāo)準(zhǔn)DFF模塊例化生成寄存器 73
5.3.2 推薦使用assign語(yǔ)法替代if-else和case語(yǔ)法 75
5.3.3 其他若干注意事項(xiàng) 77
5.4 蜂鳥(niǎo)E203模塊層次劃分 77
5.5 蜂鳥(niǎo)E203處理器核的源代碼 78
5.6 蜂鳥(niǎo)E203處理器核的配置選項(xiàng) 78
5.7 蜂鳥(niǎo)E203處理器核支持的RISC-V指令子集 79
5.8 蜂鳥(niǎo)E203處理器核的流水線結(jié)構(gòu) 79
5.9 蜂鳥(niǎo)E203處理器核的頂層接口 79
5.10 小結(jié) 82
第6章 流水線不是流水賬—蜂鳥(niǎo)E203處理器核流水線 83
6.1 處理器流水線概述 84
6.1.1 從經(jīng)典的5級(jí)流水線說(shuō)起 84
6.1.2 可否不要流水線—流水線和狀態(tài)機(jī)的關(guān)系 86
6.1.3 深處種菱淺種稻,不深不淺種荷花—流水線的深度 86
6.1.4 向上生長(zhǎng)—越來(lái)越深的流水線 87
6.1.5 向下生長(zhǎng)—越來(lái)越淺的流水線 88
6.2 處理器流水線中的亂序 88
6.3 處理器流水線中的反壓 88
6.4 處理器流水線中的沖突 89
6.4.1 流水線中的資源沖突 89
6.4.2 流水線中的數(shù)據(jù)沖突 90
6.5 蜂鳥(niǎo)E203處理器的流水線 91
6.5.1 流水線總體結(jié)構(gòu) 91
6.5.2 流水線中的沖突 92
6.6 小結(jié) 92
第7章 萬(wàn)事開(kāi)頭難— 一切從取指令開(kāi)始 93
7.1 取指概述 94
7.1.1 取指特點(diǎn) 94
7.1.2 如何快速取指 95
7.1.3 如何處理地址不對(duì)齊的指令 96
7.1.4 如何處理分支指令 97
7.2 RISC-V架構(gòu)特點(diǎn)對(duì)于取指的簡(jiǎn)化 102
7.2.1 規(guī)整的指令編碼格式 102
7.2.2 指令長(zhǎng)度指示碼放于低位 102
7.2.3 簡(jiǎn)單的分支跳轉(zhuǎn)指令 103
7.2.4 沒(méi)有分支延遲槽指令 104
7.2.5 提供明確的靜態(tài)分支預(yù)測(cè)依據(jù) 105
7.2.6 提供明確的RAS依據(jù) 105
7.3 蜂鳥(niǎo)E203處理器的取指實(shí)現(xiàn) 106
7.3.1 IFU總體設(shè)計(jì)思路 106
7.3.2 簡(jiǎn)單譯碼 108
7.3.3 簡(jiǎn)單BPU 110
7.3.4 PC生成 114
7.3.5 訪問(wèn)ITCM和BIU 116
7.3.6 ITCM 120
7.3.7 BIU 120
7.4 小結(jié) 121
第8章 一鼓作氣,執(zhí)行力是關(guān)鍵—執(zhí)行 122
8.1 執(zhí)行概述 123
8.1.1 指令譯碼 123
8.1.2 指令執(zhí)行 123
8.1.3 流水線的沖突 124
8.1.4 指令的交付 124
8.1.5 指令發(fā)射、派遣、執(zhí)行、寫(xiě)回的順序 124
8.1.6 分支解析 126
8.2 RISC-V架構(gòu)的特點(diǎn)對(duì)于執(zhí)行的簡(jiǎn)化 126
8.2.1 規(guī)整的指令編碼格式 127
8.2.2 優(yōu)雅的16位指令 127
8.2.3 精簡(jiǎn)的指令個(gè)數(shù) 127
8.2.4 整數(shù)指令的操作數(shù)個(gè)數(shù)是1或2 127
8.3 蜂鳥(niǎo)E203處理器的執(zhí)行實(shí)現(xiàn) 127
8.3.1 執(zhí)行指令列表 128
8.3.2 EXU總體設(shè)計(jì)思路 128
8.3.3 譯碼 129
8.3.4 整數(shù)通用寄存器組 135
8.3.5 CSR 138
8.3.6 指令發(fā)射、派遣 139
8.3.7 流水線沖突、長(zhǎng)指令和OITF 143
8.3.8 ALU 149
8.3.9 交付 162
8.3.10 寫(xiě)回 162
8.3.11 協(xié)處理器擴(kuò)展 162
8.4 小結(jié) 163
第9章 善始者實(shí)繁,克終者蓋寡—交付 164
9.1 處理器中指令的交付、取消、沖刷 165
9.1.1 指令交付、取消、沖刷 165
9.1.2 指令交付的常見(jiàn)實(shí)現(xiàn)策略 166
9.2 RISC-V架構(gòu)特點(diǎn)對(duì)于交付的簡(jiǎn)化 166
9.3 蜂鳥(niǎo)E203處理器中指令交付的硬件實(shí)現(xiàn) 167
9.3.1 分支預(yù)測(cè)指令的處理 168
9.3.2 中斷和異常的處理 171
9.3.3 多周期執(zhí)行的指令的交付 171
9.4 小結(jié) 172
第 10章 讓子彈飛一會(huì)兒—寫(xiě)回 173
10.1 處理器的寫(xiě)回 174
10.1.1 處理器寫(xiě)回功能簡(jiǎn)介 174
10.1.2 處理器常見(jiàn)寫(xiě)回策略 174
10.2 蜂鳥(niǎo)E203處理器的寫(xiě)回硬件實(shí)現(xiàn) 174
10.2.1 最終寫(xiě)回仲裁 175
10.2.2 OITF模塊和長(zhǎng)指令寫(xiě)回仲裁模塊 176
10.3 小結(jié) 179
第 11章 哈弗還是比亞迪—存儲(chǔ)器 181
11.1 存儲(chǔ)器概述 182
11.1.1 誰(shuí)說(shuō)處理器一定要有緩存 182
11.1.2 處理器一定要有存儲(chǔ)器 183
11.1.3 ITCM和DTCM 185
11.2 RISC-V架構(gòu)特點(diǎn)對(duì)于存儲(chǔ)器訪問(wèn)指令的簡(jiǎn)化 186
11.2.1 僅支持小端格式 186
11.2.2 無(wú)地址自增/自減模式 186
11.2.3 無(wú)一次讀多個(gè)數(shù)據(jù)和一次寫(xiě)多個(gè)數(shù)據(jù)的指令 186
11.3 RISC-V架構(gòu)的存儲(chǔ)器訪問(wèn)指令 187
11.3.1 存儲(chǔ)器讀和寫(xiě)指令 187
11.3.2 fence指令和fence.i指令 187
11.3.3 A擴(kuò)展指令集 187
11.4 蜂鳥(niǎo)E203處理器核的存儲(chǔ)器子系統(tǒng)硬件實(shí)現(xiàn) 188
11.4.1 存儲(chǔ)器子系統(tǒng)總體設(shè)計(jì)思路 188
11.4.2 AGU 188
11.4.3 LSU 193
11.4.4 ITCM和DTCM 195
11.4.5 A擴(kuò)展指令集的硬件實(shí)現(xiàn) 198
11.4.6 fence與fence.i指令的硬件實(shí)現(xiàn) 202
11.4.7 BIU 204
11.4.8 ECC 204
11.5 小結(jié) 204
第 12章 黑盒子的窗口—總線接口單元 205
12.1 片上總線協(xié)議概述 206
12.1.1 AXI 206
12.1.2 AHB 206
12.1.3 APB 207
12.1.4 TileLink 207
12.1.5 總結(jié)比較 207
12.2 自定義總線協(xié)議ICB 208
12.2.1 ICB協(xié)議簡(jiǎn)介 208
12.2.2 ICB協(xié)議信號(hào) 209
12.2.3 ICB協(xié)議的時(shí)序 209
12.3 ICB的硬件實(shí)現(xiàn) 214
12.3.1 一主多從 214
12.3.2 多主一從 215
12.3.3 多主多從 216
12.4 蜂鳥(niǎo)E203處理器核BIU 217
12.4.1 BIU簡(jiǎn)介 217
12.4.2 BIU的微架構(gòu) 218
12.4.3 BIU的源代碼 218
12.5 蜂鳥(niǎo)E203處理器SoC總線 219
12.5.1 SoC總線簡(jiǎn)介 219
12.5.2 SoC總線的微架構(gòu) 220
12.5.3 SoC總線的源代碼 220
12.6 小結(jié) 221
第 13章 不得不說(shuō)的故事—中斷和異?!?22
13.1 中斷和異常概述 223
13.1.1 中斷概述 223
13.1.2 異常概述 224
13.1.3 廣義上的異常 224
13.2 RISC-V架構(gòu)異常處理機(jī)制 226
13.2.1 進(jìn)入異?!?26
13.2.2 退出異常 229
13.2.3 異常服務(wù)程序 230
13.3 RISC-V架構(gòu)中斷定義 231
13.3.1 中斷類(lèi)型 231
13.3.2 中斷屏蔽 233
13.3.3 中斷等待 233
13.3.4 中斷優(yōu)先級(jí)與仲裁 234
13.3.5 中斷嵌套 235
13.4 RISC-V架構(gòu)中與中斷和異常相關(guān)的CSR 236
13.5 蜂鳥(niǎo)E203處理器中異常處理的硬件實(shí)現(xiàn) 236
13.5.1 蜂鳥(niǎo)E203處理器的異常和中斷實(shí)現(xiàn)要點(diǎn) 236
13.5.2 蜂鳥(niǎo)E203處理器支持的中斷和異常類(lèi)型 237
13.5.3 蜂鳥(niǎo)E203處理器對(duì)mepc寄存器的處理 237
13.5.4 蜂鳥(niǎo)E203處理器的中斷接口 238
13.5.5 蜂鳥(niǎo)E203處理器CLINT微架構(gòu)及源代碼分析 239
13.5.6 蜂鳥(niǎo)E203處理器PLIC微架構(gòu)及源代碼分析 242
13.5.7 蜂鳥(niǎo)E203處理器中交付模塊對(duì)中斷和異常的處理 244
13.6 小結(jié) 248
第 14章 最不起眼的其實(shí)是最難的—調(diào)試機(jī)制 249
14.1 調(diào)試機(jī)制概述 250
14.1.1 交互調(diào)試概述 250
14.1.2 跟蹤調(diào)試概述 252
14.2 RISC-V架構(gòu)的調(diào)試機(jī)制 252
14.2.1 調(diào)試器軟件的實(shí)現(xiàn) 253
14.2.2 調(diào)試模式 253
14.2.3 調(diào)試指令 254
14.2.4 調(diào)試模式下的CSR 254
14.2.5 調(diào)試中斷 254
14.3 蜂鳥(niǎo)E203處理器中的調(diào)試機(jī)制 254
14.3.1 蜂鳥(niǎo)E203處理器中的交互式調(diào)試 254
14.3.2 DTM 255
14.3.3 硬件調(diào)試模塊 256
14.3.4 調(diào)試中斷處理 259
14.3.5 調(diào)試模式下CSR的實(shí)現(xiàn) 260
14.3.6 調(diào)試機(jī)制指令的實(shí)現(xiàn) 261
14.4 小結(jié) 262
第 15章 動(dòng)如脫兔,靜若處子—低功耗的訣竅 263
15.1 處理器低功耗技術(shù)概述 264
15.1.1 軟件層面的低功耗 264
15.1.2 系統(tǒng)層面的低功耗 264
15.1.3 處理器層面的低功耗 265
15.1.4 模塊和單元層面的低功耗 265
15.1.5 寄存器層面的低功耗 266
15.1.6 鎖存器層面的低功耗 267
15.1.7 SRAM層面的低功耗 267
15.1.8 組合邏輯層面的低功耗 267
15.1.9 工藝層面的低功耗 268
15.2 RISC-V架構(gòu)的低功耗機(jī)制 268
15.3 蜂鳥(niǎo)E203處理器低功耗機(jī)制的硬件實(shí)現(xiàn) 268
15.3.1 蜂鳥(niǎo)E203處理器在系統(tǒng)層面的低功耗 268
15.3.2 蜂鳥(niǎo)E203處理器層面的低功耗 270
15.3.3 蜂鳥(niǎo)E203處理器在單元層面的低功耗 272
15.3.4 蜂鳥(niǎo)E203處理器在寄存器層面的低功耗 272
15.3.5 蜂鳥(niǎo)E203處理器在鎖存器層面的低功耗 275
15.3.6 蜂鳥(niǎo)E203處理器在SRAM層面的低功耗 276
15.3.7 蜂鳥(niǎo)E203處理器在組合邏輯層面的低功耗 277
15.3.8 蜂鳥(niǎo)E203處理器在工藝層面的低功耗 278
15.4 小結(jié) 278
第 16章 工欲善其事,必先利其器—RISC-V可擴(kuò)展協(xié)處理器 279
16.1 領(lǐng)域特定架構(gòu) 280
16.2 RISC-V架構(gòu)的可擴(kuò)展性 281
16.2.1 RISC-V架構(gòu)的預(yù)留指令編碼空間 281
16.2.2 RISC-V架構(gòu)的預(yù)定義指令 282
16.3 蜂鳥(niǎo)E203處理器的協(xié)處理器擴(kuò)展機(jī)制—NICE 282
16.3.1 NICE指令的編碼 282

16.3.2 NICE協(xié)處理器的接口信號(hào) 283
16.3.3 NICE協(xié)處理器的流水線接口 284
16.3.4 NICE協(xié)處理器的存儲(chǔ)器接口 285
16.3.5 NICE協(xié)處理器的接口時(shí)序 286
16.4 蜂鳥(niǎo)E203處理器的協(xié)處理器參考示例 290
16.4.1 示例協(xié)處理器的實(shí)現(xiàn)需求 290
16.4.2 示例協(xié)處理器的自定義指令 291
16.4.3 示例協(xié)處理器的硬件實(shí)現(xiàn) 292
16.4.4 示例協(xié)處理器的軟件驅(qū)動(dòng) 292
16.4.5 示例協(xié)處理器的性能分析 294

第三部分 開(kāi)發(fā)實(shí)戰(zhàn)
第 17章 先冒個(gè)煙—運(yùn)行Verilog仿真測(cè)試 298
17.1 E203開(kāi)源項(xiàng)目的代碼層次結(jié)構(gòu) 299
17.2 E203開(kāi)源項(xiàng)目的測(cè)試用例 300
17.2.1 riscv-tests自測(cè)試用例 300
17.2.2 編譯ISA自測(cè)試用例 301
17.3 E203 開(kāi)源項(xiàng)目的測(cè)試平臺(tái) 304
17.4 在測(cè)試平臺(tái)中運(yùn)行測(cè)試用例 304
第 18章 套上殼子上路—更多實(shí)踐 308

附錄A RISC-V架構(gòu)的指令集 311
附錄B RISC-V架構(gòu)的CSR 341
附錄C RISC-V架構(gòu)的PLIC 351
附錄D 存儲(chǔ)器模型背景 359
附錄E 存儲(chǔ)器原子操作指令背景 364
附錄F RISC-V指令編碼列表 367
附錄G RISC-V偽指令列表 374

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)