求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

手把手教你RISC·VCPU上檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋

來自 孔夫子網 的圖片

手把手教你RISC·VCPU上》,副標題:處理器設計,胡振波主編 芯來科技生態組 著,出版社: 人民郵電出版社。

人民郵電出版社,1953年10月成立,隸屬於中國工信出版傳媒集團,是工業和信息化部主管的大型專業出版社[1]。建社以來,人民郵電出版社圍繞「立足工信事業,面向現代社會,傳播科學知識,引領美好生活」的出版宗旨,已發展成為集圖書、期刊、音像電子及數字出版於一體的綜合性出版大社[2]

內容簡介

本書系統地介紹了 CPU 設計技巧和新興開源RISC-V架構,內容翔實,涵蓋開源蜂鳥E203處理器各模塊的具體實現,以及可擴展協處理器的實現機制。為了讓讀者學以*用,本書還集成了大量的實例,用實例把各個模塊的實現方式貫穿起來。

本書適合從事CPU設計的工程師和技術愛好者閱讀。

目錄

第 **分 CPU與RISC-V綜述

第 *章 CPU之三生三世 2

  • .* 眼看他起*樓,眼看他宴賓客,眼看他樓塌了—CPU眾生相 3
  • .*.* ISA—CPU的靈魂 4
  • .*.2 CISC架構與RISC架構 5
  • .*.3 32位架構與64位架構 6
  • .*.4 ISA眾生相 6
  • .*.5 CPU的*域之分 **
  • .2 ISA請扛起這口鍋—為什麼*產CPU尚未足夠成熟 *2
  • .2.* MIPS系—龍芯和君正 *2
  • .2.2 x86系—北大眾志、上海兆芯和天津海光 *3
  • .2.3 Power系—中晟宏芯 *4
  • .2.4 Alpha系—申威 *4
  • .2.5 ARM系—飛騰、海思、展訊 *4
  • .2.6 RISC-V系—平頭哥、芯來科技 *6
  • .2.7 背鍋俠ISA *6
  • .3 人生已如此艱難,你又何*拆穿—CPU從業者的*奈 *8
  • .4 *敵者是多麼寂寞—ARM統治着的* *9
  • .4.* *樂樂與眾樂樂—ARM公司的盈利模式 *9
  • .4.2 小個子有大力量—*處*在的Cortex-M系列 22
  • .4.3 移動*者—Cortex-A系列在手持設備*域的巨大成功 23
  • .4.4 進擊的巨人—ARM進軍PC與服務器*域的雄心 25
  • .4.5 ARM當前發展 26
  • .5 東邊日出西邊雨,道是*晴卻有晴—RISC-V登場 26
  • .5.* 緣起名校 26
  • .5.2 興於開源 27
  • .5.3 本土發展 29
  • .6 舊時*謝堂前燕,飛入尋常*姓家—你也可以設計自己的處理器 30

第 2章 大道*簡—RISC-V架構之魂 3*

2.* 簡單*是美—RISC-V架構的設計理念 32

2.*.* *病*身輕—架構的篇幅 32

2.*.2 能屈能伸—模塊化的指令集 34

2.*.3 濃縮的*是*華—指令的數量 34

2.2 RISC-V架構簡介 35

2.2.* 模塊化的指令集 35

2.2.2 可配置的通用寄存器組 36

2.2.3 規整的指令編碼 36

2.2.4 簡潔的存儲器訪問指令 37

2.2.5 *效的分支跳轉指令 38

2.2.6 簡潔的子程序調用 38

2.2.7 *條件碼執行 39

2.2.8 *分支延遲槽 40

2.2.9 零開銷硬件循環指令 40

2.2.*0 簡潔的運算指令 40

2.2.** *雅的壓縮指令子集 4*

2.2.*2 *權模式 42

2.2.*3 CSR 42

2.2.*4 中斷和異常 42

2.2.*5 P擴展指令子集 43

2.2.*6 矢量指令子集 43

2.2.*7 自定義指令擴展 43

2.2.*8 比較 43

2.3 RISC-V軟件工具鏈 44

2.4 RISC-V和其他開放架構有何*同 47

2.4.* 平民英雄—OpenRISC 47

2.4.2 豪門顯貴—SPARC 48

2.4.3 身出*—MIPS 48

2.4.4 名校*生—RISC-V 49

第3章 亂花漸欲迷人眼—盤點RISC-V商業版本與開源版本 50

3.* 各商業版本與開源版本綜述 5*

3.*.* Rocket Core 5*

3.*.2 BOOM Core 53

3.*.3 Freedom E3*0 SoC 54

3.*.4 LowRISC SoC 54

3.*.5 PULPino Core與SoC 54

3.*.6 PicoRV32 Core 55

3.*.7 SCR* Core 56

3.*.8 ORCA Core 56

3.*.9 Andes Core 56

3.*.*0 Microsemi Core 56

3.*.** Codasip Core 57

3.*.*2 Nuclei Core 57

3.*.*3 蜂鳥E203處理器核與SoC 58

3.2 小結 59

第4章 開源RISC-V—蜂鳥E203處理器核與SoC 60

4.* 與眾*同的蜂鳥E203處理器 6*

4.2 蜂鳥E203處理器簡介—蜂鳥雖小,五臟俱* 62

4.3 蜂鳥E203處理器的性能指標 64

4.4 蜂鳥E203處理器的配套SoC 64

4.5 蜂鳥E203處理器的配置選項 66

第二*分 手把手教你使用Verilog設計CPU

第5章 先見森林,後觀樹木—蜂鳥E203處理器核設計總覽和*層 70

5.* 處理器硬件設計概述 7*

5.*.* 架構和微架構 7*

5.*.2 CPU、處理器、Core和處理器核 7*

5.*.3 處理器設計和驗證 7*

5.2 蜂鳥E203處理器核的設計理念 72

5.3 蜂鳥E203處理器核的RTL代碼風格 73

5.3.* 使用標準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處理器核的流水線結構 79

5.9 蜂鳥E203處理器核的*層接口 79

5.*0 小結 82

第6章 流水線*是流水賬—蜂鳥E203處理器核流水線 83

6.* 處理器流水線概述 84

6.*.* 從*的5級流水線說起 84

6.*.2 可否*要流水線—流水線和狀態機的關係 86

6.*.3 深處種菱淺種稻,*深*淺種荷花—流水線的深度 86

6.*.4 向上生長—越來越深的流水線 87

6.*.5 向下生長—越來越淺的流水線 88

6.2 處理器流水線中的亂序 88

6.3 處理器流水線中的反壓 88

6.4 處理器流水線中的衝突 89

6.4.* 流水線中的資源衝突 89

6.4.2 流水線中的數據衝突 90

6.5 蜂鳥E203處理器的流水線 9*

6.5.* 流水線總體結構 9*

6.5.2 流水線中的衝突 92

6.6 小結 92

第7章 萬事開頭難— *切從取指令開始 93

7.* 取指概述 94

7.*.* 取指*點 94

7.*.2 如何快速取指 95

7.*.3 如何處理地址*對齊的指令 96

7.*.4 如何處理分支指令 97

7.2 RISC-V架構*點對於取指的簡化 *02

7.2.* 規整的指令編碼格式 *02

7.2.2 指令長度指示碼放於低位 *02

7.2.3 簡單的分支跳轉指令 *03

7.2.4 沒有分支延遲槽指令 *04

7.2.5 提供明確的靜態分支預測依據 *05

7.2.6 提供明確的RAS依據 *05

7.3 蜂鳥E203處理器的取指實現 *06

7.3.* IFU總體設計思路 *06

7.3.2 簡單譯碼 *08

7.3.3 簡單BPU **0

7.3.4 PC生成 **4

7.3.5 訪問ITCM和BIU **6

7.3.6 ITCM *20

7.3.7 BIU *20

7.4 小結 *2*

第8章 *鼓作氣,執行力是關鍵—執行 *22

8.* 執行概述 *23

8.*.* 指令譯碼 *23

8.*.2 指令執行 *23

8.*.3 流水線的衝突 *24

8.*.4 指令的交付 *24

8.*.5 指令發射、派遣、執行、寫回的順序 *24

8.*.6 分支解析 *26

8.2 RISC-V架構的*點對於執行的簡化 *26

8.2.* 規整的指令編碼格式 *27

8.2.2 *雅的*6位指令 *27

8.2.3 *簡的指令個數 *27

8.2.4 整數指令的操作數個數是*或2 *27

8.3 蜂鳥E203處理器的執行實現 *27

8.3.* 執行指令列表 *28

8.3.2 EXU總體設計思路 *28

8.3.3 譯碼 *29

8.3.4 整數通用寄存器組 *35

8.3.5 CSR *38

8.3.6 指令發射、派遣 *39

8.3.7 流水線衝突、長指令和OITF *43

8.3.8 ALU *49

8.3.9 交付 *62

8.3.*0 寫回 *62

8.3.** 協處理器擴展 *62

8.4 小結 *63

第9章 善始者實繁,克*者蓋寡—交付 *64

9.* 處理器中指令的交付、取消、沖刷 *65

9.*.* 指令交付、取消、沖刷 *65

9.*.2 指令交付的常見實現策略 *66

9.2 RISC-V架構*點對於交付的簡化 *66

9.3 蜂鳥E203處理器中指令交付的硬件實現 *67

9.3.* 分支預測指令的處理 *68

9.3.2 中斷和異常的處理 *7*

9.3.3 多周期執行的指令的交付 *7*

9.4 小結 *72

第 *0章 讓子彈飛*會兒—寫回 *73

  • 0.* 處理器的寫回 *74
  • 0.*.* 處理器寫回功能簡介 *74
  • 0.*.2 處理器常見寫回策略 *74
  • 0.2 蜂鳥E203處理器的寫回硬件實現 *74
  • 0.2.* 最*寫回仲裁 *75
  • 0.2.2 OITF模塊和長指令寫回仲裁模塊 *76
  • 0.3 小結 *79

第 **章 哈弗還是比亞迪—存儲器 *8*

    • .* 存儲器概述 *82
    • .*.* 誰說處理器*定要有緩存 *82
    • .*.2 處理器*定要有存儲器 *83
    • .*.3 ITCM和DTCM *85
    • .2 RISC-V架構*點對於存儲器訪問指令的簡化 *86
    • .2.* *支持小端格式 *86
    • .2.2 *地址自增/自減模式 *86
    • .2.3 **次讀多個數據和*次寫多個數據的指令 *86
    • .3 RISC-V架構的存儲器訪問指令 *87
    • .3.* 存儲器讀和寫指令 *87
    • .3.2 fence指令和fence.i指令 *87
    • .3.3 A擴展指令集 *87
    • .4 蜂鳥E203處理器核的存儲器子系統硬件實現 *88
    • .4.* 存儲器子系統總體設計思路 *88
    • .4.2 AGU *88
    • .4.3 LSU *93
    • .4.4 ITCM和DTCM *95
    • .4.5 A擴展指令集的硬件實現 *98
    • .4.6 fence與fence.i指令的硬件實現 202
    • .4.7 BIU 204
    • .4.8 ECC 204
    • .5 小結 204

第 *2章 黑盒子的窗口—總線接口單元 205

  • 2.* 片上總線協議概述 206
  • 2.*.* AXI 206
  • 2.*.2 AHB 206
  • 2.*.3 APB 207
  • 2.*.4 TileLink 207
  • 2.*.5 總結比較 207
  • 2.2 自定義總線協議ICB 208
  • 2.2.* ICB協議簡介 208
  • 2.2.2 ICB協議信號 209
  • 2.2.3 ICB協議的時序 209
  • 2.3 ICB的硬件實現 2*4
  • 2.3.* *主多從 2*4
  • 2.3.2 多主*從 2*5
  • 2.3.3 多主多從 2*6
  • 2.4 蜂鳥E203處理器核BIU 2*7
  • 2.4.* BIU簡介 2*7
  • 2.4.2 BIU的微架構 2*8
  • 2.4.3 BIU的源代碼 2*8
  • 2.5 蜂鳥E203處理器SoC總線 2*9
  • 2.5.* SoC總線簡介 2*9
  • 2.5.2 SoC總線的微架構 220
  • 2.5.3 SoC總線的源代碼 220
  • 2.6 小結 22*

第 *3章 *得*說的故事—中斷和異常 222

  • 3.* 中斷和異常概述 223
  • 3.*.* 中斷概述 223
  • 3.*.2 異常概述 224
  • 3.*.3 廣義上的異常 224
  • 3.2 RISC-V架構異常處理機制 226
  • 3.2.* 進入異常 226
  • 3.2.2 退出異常 229
  • 3.2.3 異常服務程序 230
  • 3.3 RISC-V架構中斷定義 23*
  • 3.3.* 中斷類型 23*
  • 3.3.2 中斷屏蔽 233
  • 3.3.3 中斷等待 233
  • 3.3.4 中斷*先級與仲裁 234
  • 3.3.5 中斷嵌套 235
  • 3.4 RISC-V架構中與中斷和異常相關的CSR 236
  • 3.5 蜂鳥E203處理器中異常處理的硬件實現 236
  • 3.5.* 蜂鳥E203處理器的異常和中斷實現要點 236
  • 3.5.2 蜂鳥E203處理器支持的中斷和異常類型 237
  • 3.5.3 蜂鳥E203處理器對mepc寄存器的處理 237
  • 3.5.4 蜂鳥E203處理器的中斷接口 238
  • 3.5.5 蜂鳥E203處理器CLINT微架構及源代碼分析 239
  • 3.5.6 蜂鳥E203處理器PLIC微架構及源代碼分析 242
  • 3.5.7 蜂鳥E203處理器中交付模塊對中斷和異常的處理 244
  • 3.6 小結 248

第 *4章 最*起眼的其實是最難的—調試機制 249

  • 4.* 調試機制概述 250
  • 4.*.* 交互調試概述 250
  • 4.*.2 跟蹤調試概述 252
  • 4.2 RISC-V架構的調試機制 252
  • 4.2.* 調試器軟件的實現 253
  • 4.2.2 調試模式 253
  • 4.2.3 調試指令 254
  • 4.2.4 調試模式下的CSR 254
  • 4.2.5 調試中斷 254
  • 4.3 蜂鳥E203處理器中的調試機制 254
  • 4.3.* 蜂鳥E203處理器中的交互式調試 254
  • 4.3.2 DTM 255
  • 4.3.3 硬件調試模塊 256
  • 4.3.4 調試中斷處理 259
  • 4.3.5 調試模式下CSR的實現 260
  • 4.3.6 調試機制指令的實現 26*
  • 4.4 小結 262

第 *5章 動如脫兔,靜若處子—低功耗的訣竅 263

  • 5.* 處理器低功耗技術概述 264
  • 5.*.* 軟件層面的低功耗 264
  • 5.*.2 系統層面的低功耗 264
  • 5.*.3 處理器層面的低功耗 265
  • 5.*.4 模塊和單元層面的低功耗 265
  • 5.*.5 寄存器層面的低功耗 266
  • 5.*.6 鎖存器層面的低功耗 267
  • 5.*.7 SRAM層面的低功耗 267
  • 5.*.8 組合邏輯層面的低功耗 267
  • 5.*.9 工藝層面的低功耗 268
  • 5.2 RISC-V架構的低功耗機制 268
  • 5.3 蜂鳥E203處理器低功耗機制的硬件實現 268
  • 5.3.* 蜂鳥E203處理器在系統層面的低功耗 268
  • 5.3.2 蜂鳥E203處理器層面的低功耗 270
  • 5.3.3 蜂鳥E203處理器在單元層面的低功耗 272
  • 5.3.4 蜂鳥E203處理器在寄存器層面的低功耗 272
  • 5.3.5 蜂鳥E203處理器在鎖存器層面的低功耗 275
  • 5.3.6 蜂鳥E203處理器在SRAM層面的低功耗 276
  • 5.3.7 蜂鳥E203處理器在組合邏輯層面的低功耗 277
  • 5.3.8 蜂鳥E203處理器在工藝層面的低功耗 278
  • 5.4 小結 278

第 *6章 工欲善其事,*先利其器—RISC-V可擴展協處理器 279

  • 6.* *域*定架構 280
  • 6.2 RISC-V架構的可擴展性 28*
  • 6.2.* RISC-V架構的預留指令編碼空間 28*
  • 6.2.2 RISC-V架構的預定義指令 282
  • 6.3 蜂鳥E203處理器的協處理器擴展機制—NICE 282
  • 6.3.* NICE指令的編碼 282
  • 6.3.2 NICE協處理器的接口信號 283
  • 6.3.3 NICE協處理器的流水線接口 284
  • 6.3.4 NICE協處理器的存儲器接口 285
  • 6.3.5 NICE協處理器的接口時序 286
  • 6.4 蜂鳥E203處理器的協處理器參考示例 290
  • 6.4.* 示例協處理器的實現需求 290
  • 6.4.2 示例協處理器的自定義指令 29*
  • 6.4.3 示例協處理器的硬件實現 292
  • 6.4.4 示例協處理器的軟件驅動 292
  • 6.4.5 示例協處理器的性能分析 294

第三*分 開發實戰

第 *7章 先冒個煙—運行Verilog仿真測試 298

  • 7.* E203開源項目的代碼層次結構 299
  • 7.2 E203開源項目的測試用例 300
  • 7.2.* riscv-tests自測試用例 300
  • 7.2.2 編譯ISA自測試用例 30*
  • 7.3 E203 開源項目的測試平台 304
  • 7.4 在測試平台中運行測試用例 304

第 *8章 套上殼子上路—更多實踐 308

附錄A RISC-V架構的指令集 3**

附錄B RISC-V架構的CSR 34*

附錄C RISC-V架構的PLIC 35*

附錄D 存儲器模型背景 359

附錄E 存儲器原子操作指令背景 364

附錄F RISC-V指令編碼列表 367

附錄G RISC-V偽指令列表 374

參考文獻

  1. 我國出版社的等級劃分和分類標準,知網出書,2021-03-01
  2. 人民郵電出版社簡介,人民郵電出版社