手把手教你設計 CPU-RISC-V 處理器篇 手把手教你设计CPU-RISC-V处理器篇
胡振波
- 出版商: 人民郵電
- 出版日期: 2018-05-01
- 定價: $594
- 售價: 8.5 折 $505
- 語言: 簡體中文
- 頁數: 428
- 裝訂: 平裝
- ISBN: 7115480524
- ISBN-13: 9787115480521
-
相關分類:
嵌入式系統、RISC-V
-
其他版本:
手把手教你 RISC-V CPU (上) : 處理器設計
銷售排行:
👍 2021 年度 簡體中文書 銷售排行 第 15 名
👍 2019 年度 簡體中文書 銷售排行 第 17 名
👍 2018 年度 簡體中文書 銷售排行 第 12 名
🥉 2018/9 簡體中文書 銷售排行 第 3 名
買這商品的人也買了...
-
$2,500$2,375 -
$480$379 -
$620$527 -
$580$493 -
$480$379 -
$281SystemVerilog 驗證
-
$620$527 -
$296深入淺出 USB 系統開發 : 基於 ARM Cortex-M3
-
$580$458 -
$403深度學習與計算機視覺 : 算法原理、框架應用與代碼實現 (Deep Learning & Computer Vision:Algorithms and Examples)
-
$3,430Computer Architecture : A Quantitative Approach, 6/e (Paperback)
-
$250程序員的數學
-
$200人工智能基礎 (高中版)
-
$294深入淺出 SSD:固態存儲核心技術、原理與實戰
-
$834$792 -
$229手把手教你學 FPGA 設計 : 基於大道至簡的至簡設計法
-
$594$564 -
$658Xilinx FPGA 權威設計指南:基於 Vivado 2018 集成開發環境
-
$474$450 -
$708$673 -
$2,920$2,774 -
$502基於 RISC-V 的人工智能應用開發
-
$588$559 -
$653SiFive 經典 RISC-V FE310 微控制器原理與實踐
-
$602嵌入式 C語言自我修養 — 從芯片、編譯器到操作系統
相關主題
商品描述
本書是一本介紹通用CPU設計的入門書,以通俗的語言系統介紹了CPU和RISC-V架構,力求為讀者揭開CPU設計的神秘面紗,打開電腦體系結構的大門。
本書共分為四部分。第一部分是CPU與RISC-V的綜述,幫助初學者對CPU和RISC-V快速地建立起認識。
第二部分講解如何使用Verilog設計CPU,使讀者掌握處理器核的設計精髓。
第三部分主要介紹蜂鳥E203配套的SoC和軟件平臺,使讀者實現蜂鳥E203 RISC-V處理器在FPGA原型平臺上的運行。第四部分是附錄,介紹了RISC-V指令集架構,輔以作者加入的背景知識解讀和註解,以便於讀者理解。
本書不僅適合CPU或芯片設計相關從業者閱讀使用,也適合作為大中專院校相關師生學習RISC-V處理器設計(使用Verilog語言)和CPU設計的指導用書。
作者簡介
胡振波,上海交通大學電子工程系本科、微電子學院碩士。擁有業界多年ASIC和CPU設計與驗證經驗,先後在Marvell任職ARM架構CPU設計高級工程師、在Synopsys任職研發經理、在比特大陸任職IC設計總監、在武漢聚芯微電子任職架構師,現致力於推動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架構特點對於執行的簡化121
8.2.1規整的指令編碼格式122
8.2.2優雅的16位指令122
8.2 .3精簡的指令個數122
8.2.4整數指令都是兩操作數122
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
12.2.2 ICB總線協議信號207
12.2.3 ICB總線協議時序207
12.3 ICB總線的硬件實現210
12.3.1一主多從210
12.3.2多主一從211
12.3.3多主多從212
12.4蜂鳥E200處理器核BIU 212
12.4.1 BIU簡介212
12.4.2 BIU微架構213
12.4.3 BIU源碼分析214
12.5蜂鳥E200處理器SoC總線214
12.5.1 SoC總線簡介215
12.5.2 SoC總線微架構215
12.5.3 SoC總線源碼分析216
12.6總結216
第13章不得不說的故事——中斷和異常217
13.1中斷和異常概述218
13.1.1中斷概述218
13.1.2異常概述219
13.1.3廣義上的異常219
13.2 RISC-V架構異常處理機制221
13.2.1進入異常221
13.2.2退出異常224
13.2.3異常服務程序225
13.3 RISC-V架構中斷定義226
13.3.1中斷類型226
13.3.2中斷屏蔽228
13.3.3中斷等待229
13.3.4中斷優先級與仲裁230
13.3.5中斷嵌套230
13.3.6總結比較231
13.4 RISC-V架構異常相關CSR寄存器232
13.5蜂鳥E200異常處理的硬件實現232
13.5.1蜂鳥E200處理器的異常和中斷實現要點232
13.5.2蜂鳥E200處理器的異常類型233
13.5.3蜂鳥E200處理器對於mepc的處理234
13.5.4蜂鳥E200處理器的中斷接口234
13.5.5蜂鳥E200處理器CLINT微架構及源碼分析235
13.5.6蜂鳥E200處理器PLIC微架構及源碼分析238
13.5.7蜂鳥E200處理器交付模塊對中斷和異常的處理242
13.5.8小結245
第14章最不起眼的,其實是最難的——調試機制246
14.1調試機制概述247
14.1.1交互調試概述247
14.1.2跟踪調試概述249
14.2 RISC-V架構的調試機制249
14.2.1調試器軟件的實現250
14.2.2調試模式250
14.2.3調試指令251
14.2.4調試機制CSR 251
14.2.5調試中斷251
14.3蜂鳥E200調試機制的硬件實現251
14.3.1蜂鳥E200交互式調試概述251
14.3. 2 DTM模塊253
14.3.3硬件調試模塊253
14.3.4調試中斷處理257
14.3.5調試機制CSR寄存器的實現258
14.3.6調試機制指令的實現258
14.3.7小結259
第15章動如脫兔,靜若處子——低功耗的訣竅260
15.1處理器低功耗技術概述261
15.1.1軟件層面低功耗261
15.1.2系統層面低功耗261
15.1.3處理器層面低功耗262
15.1.4單元層面低功耗262
15.1.5寄存器層面低功耗263
15.1.6鎖存器層面低功耗264
15.1.7 SRAM層面低功耗264
15.1.8組合邏輯層面低功耗264
15.1.9工藝層面低功耗265
15.2 RISC-V架構的低功耗機制265
15.3蜂鳥E200低功耗機制的硬件實現265
15.3.1蜂鳥E200系統層面低功耗265
15.3.2蜂鳥E200處理器層面低功耗267
15.3.3蜂鳥E200單元層面低功耗269
15.3.4蜂鳥E200寄存器層面低功耗269
15.3.5蜂鳥E200鎖存器層面低功耗272
15.3.6蜂鳥E200 SRAM層面低功耗273
15.3.7蜂鳥E200組合邏輯層面低功耗274
15.3.8蜂鳥E200工藝層面低功耗275
15.4總結275
第16章工欲善其事,必先利其器——RISC-V可擴展協處理器276
16.1專用領域架構DSA 277
16.2 RISC-V架構的可擴展性278
16.2.1 RISC-V的預留指令編碼空間278
16.2.2 RISC-V的預定義的Custom指令279
16.3蜂鳥E200的協處理器接口EAI 279
16.3.1 EAI指令的編碼279
16.3.2 EAI接口信號280
16.3.3 EAI流水線接口281
16.3.4 EAI存儲器接口282
16.3.5 EAI接口時序283
16.4蜂鳥E200的協處理器參考示例286
16.4.1示例協處理器需求286
16.4.2示例協處理器指令287
16.4.3示例協處理器實現288
16.4.4示例協處理器性能289
16.4.5示例協處理器代碼290
第三部分使用Verilog進行仿真和在FPGA SoC原型上運行軟件
第17章冒個煙先— —運行Verilog仿真測試292
17.1 E200開源項目的代碼層次結構293
17.2 E200開源項目的測試用例294
17.2.1 riscv-tests自測試用例294
17.2.2編譯ISA自測試用例295
17.3 E200開源項目的測試平台( TestBench) 298
17.4在Verilog TestBench中運行測試用例299
第18章套上殼子上路——實現SoC和FPGA原型302
18.1 Freedom E310 SoC簡介303
18.2 HBird-E200-SoC簡介304
18.2.1 HBird-E200-SoC組成結構304
18.2.2 HBird-E200-SoC代碼結構309
18.3 HBird-E200-SoC FPGA原型平台311
18.3.1 FPGA開發板311
18.3.2生成mcs文件燒寫FPGA 314
18.3.3 JTAG調試器317
18.3.4 FPGA原型平台DIY總結320
18.4蜂鳥E200專用FPGA開發板320
第19章畫龍點睛——運行和調試軟件示例321
19.1 Freedom-E-SDK平台簡介322
19.2 SIRV-E-SDK平台簡介323
19.2.1 SIRV-E-SDK簡介323
19.2.2 SIRV-E- SDK代碼結構324
19.3使用SIRV-E-SDK運行示例程序325
19.4使用GDB和OpenOCD調試示例程序328
19.5 Windows圖形化IDE開發工具331
第20章是騾子是馬?拉出來遛遛——運行跑分程序332
20.1跑分程序簡介333
20.2 Dhrystone簡介333
20.3運行Dhrystone Benchmark 335
20.4 CoreMark簡介337
20.5運行CoreMark Benchmark 338
20.6總結與比較340
附錄部分RISC-V架構詳述
附錄A RISC-V架構指令集介紹342
附錄B RISC-V架構CSR寄存器介紹374
附錄C RISC -V架構的PLIC介紹384
附錄D存儲器模型背景介紹392
附錄E存儲器原子操作指令背景介紹397
附錄F RISC-V指令編碼列表400
附錄G RISC-V偽指令列表404