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

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

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

定 價:¥109.80

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

ISBN: 9787115568007 出版時間: 2021-10-01 包裝: 平裝
開本: 16開 頁數(shù): 376 字數(shù):  

內(nèi)容簡介

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

作者簡介

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

圖書目錄

第 一部分 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請扛起這口鍋—為什么國產(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系—平頭哥、芯來科技 16
1.2.7 背鍋俠ISA 16
1.3 人生已如此艱難,你又何必拆穿—CPU從業(yè)者的無奈 18
1.4 無敵者是多么寂寞—ARM統(tǒng)治著的世界 19
1.4.1 獨樂樂與眾樂樂—ARM公司的盈利模式 19
1.4.2 小個子有大力量—無處不在的Cortex-M系列 22
1.4.3 移動王者—Cortex-A系列在手持設(shè)備領(lǐng)域的巨大成功 23
1.4.4 進擊的巨人—ARM進軍PC與服務器領(lǐng)域的雄心 25
1.4.5 ARM當前發(fā)展 26
1.5 東邊日出西邊雨,道是無晴卻有晴—RISC-V登場 26
1.5.1 緣起名校 26
1.5.2 興于開源 27
1.5.3 本土發(fā)展 29
1.6 舊時王謝堂前燕,飛入尋常百姓家—你也可以設(shè)計自己的處理器 30
第 2章 大道至簡—RISC-V架構(gòu)之魂 31
2.1 簡單就是美—RISC-V架構(gòu)的設(shè)計理念 32
2.1.1 無病一身輕—架構(gòu)的篇幅 32
2.1.2 能屈能伸—模塊化的指令集 34
2.1.3 濃縮的都是精華—指令的數(shù)量 34
2.2 RISC-V架構(gòu)簡介 35
2.2.1 模塊化的指令集 35
2.2.2 可配置的通用寄存器組 36
2.2.3 規(guī)整的指令編碼 36
2.2.4 簡潔的存儲器訪問指令 37
2.2.5 高效的分支跳轉(zhuǎn)指令 38
2.2.6 簡潔的子程序調(diào)用 38
2.2.7 無條件碼執(zhí)行 39
2.2.8 無分支延遲槽 40
2.2.9 零開銷硬件循環(huán)指令 40
2.2.10 簡潔的運算指令 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擴展指令子集 43
2.2.16 矢量指令子集 43
2.2.17 自定義指令擴展 43
2.2.18 比較 43
2.3 RISC-V軟件工具鏈 44
2.4 RISC-V和其他開放架構(gòu)有何不同 47
2.4.1 平民英雄—OpenRISC 47
2.4.2 豪門顯貴—SPARC 48
2.4.3 身出名門—MIPS 48
2.4.4 名校優(yōu)生—RISC-V 49
第3章 亂花漸欲迷人眼—盤點RISC-V商業(yè)版本與開源版本 50
3.1 各商業(yè)版本與開源版本綜述 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 蜂鳥E203處理器核與SoC 58
3.2 小結(jié) 59
第4章 開源RISC-V—蜂鳥E203處理器核與SoC 60
4.1 與眾不同的蜂鳥E203處理器 61
4.2 蜂鳥E203處理器簡介—蜂鳥雖小,五臟俱全 62
4.3 蜂鳥E203處理器的性能指標 64
4.4 蜂鳥E203處理器的配套SoC 64
4.5 蜂鳥E203處理器的配置選項 66

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

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

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

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

本目錄推薦

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