本書是一本以產教融合思想為指引,面向處理器與系統芯片設計人才培養(yǎng)的新型教材,主要分為基礎和實驗兩部分�;A部分側重于基于開源指令架構RISC-V并結合阿里平頭哥半導體公司的玄鐵C910等先進處理器案例講授計算機體系結構的基本原理。RISC-V架構的開放性與良好生態(tài)為理論知識的教學提供了更好的藍本,通過剖析業(yè)界先進的RISC-V處理器也使理論知識能夠更好地聯系具體應用。實驗部分詳細介紹基于RISC-V開源項目開發(fā)的系列實驗,包括編譯與仿真工具鏈實驗、體系結構探索實驗、SoC設計實驗等內容,充分利用了平頭哥XuanTie處理器、Wujian100 SoC平臺等工業(yè)級的開發(fā)資源,使學生可以切實感受體系結構知識的實踐運用和完整的軟硬件開發(fā)流程。
1.融入主流應用,系統性凝練知識體系。
2.結合企業(yè)實際,注重培養(yǎng)工程師實踐能力。
3.依托前沿場景,聚焦業(yè)務邏輯,實現應用開發(fā)。
這本教材,把最新的RISC-V技術發(fā)展動態(tài)融合進理論授課中,引入真實的工業(yè)級處理器案例和軟硬件開發(fā)流程,讓學生緊跟產業(yè)前沿,并通過相關的實驗教學內容構建理論聯系實際的學習過程。
韓軍,復旦大學教授,中國計算機學會計算機工程與工藝專業(yè)委員會常務委員及教育工作組組長、復旦大學集成芯片與系統全國重點實驗室 IP 與芯片架構創(chuàng)新中心主任、國家重點研發(fā)計劃“光電子與微電子器件及集成”重點專項“高能效人機交互芯片技術”項目首席科學家、國家自然科學基金重點項目負責人。以第一作者和通信作者在國內外重要的學術期刊與會議上發(fā)表論文 90 篇,獲 30 項國家發(fā)明專利。擔任《電子學報》、Microelectronics Journal 和Chinese Journal of Electronics編委會委員。長期致力于開展處理器架構與系統芯片的產學合作。
第 一章 計算機體系結構簡介 1
1.1 計算機的過去,現在和未來 1
1.1.1 計算機的歷史回顧 1
1.1.2 計算機的發(fā)展現狀 4
1.1.3 計算機的未來趨勢 8
1.2 計算機體系結構的定義 13
1.2.1 ISA 14
1.2.2 微架構 16
1.2.3 硬件實現 18
1.3 主流ISA介紹 18
1.3.1 ISA的誕生 19
1.3.2 CISC架構指令集 19
1.3.3 RISC架構指令集 21
1.4 案例學習:平頭哥C910處理器介紹 27
1.4.1 平頭哥公司介紹 27
1.4.2 玄鐵C910簡介 28
1.4.3 玄鐵C910的處理器微架構 28
1.4.4 玄鐵C910的工作模式 32
1.5 本章小結 32
第二章 指令集基本原理 34
2.1 指令集的發(fā)展歷史與分類 34
2.1.1 CISC和RISC之爭 35
2.1.2 指令集的分類 36
2.2 指令尋址模式 37
2.2.1 指令的組成 38
2.2.2 常見的指令尋址模式 38
2.3 數據類型與指令操作 39
2.3.1 RISC-V指令集的數據類型 39
2.3.2 指令操作分類 40
2.3.3 控制流指令 42
2.4 指令集編碼 42
2.4.1 可變長度編碼與固定長度編碼 43
2.4.2 操作碼的編碼 44
2.4.3 RISC-V的指令編碼 45
2.5 特權等級與CSR 46
2.5.1 特權等級 47
2.5.2 RISC-V指令集的CSR 48
2.6 指令集的ABI規(guī)定 49
2.7 案例學習:平頭哥C910處理器的自定義指令 50
2.7.1 Cache指令子集 51
2.7.2 多核同步指令子集 51
2.7.3 算術運算指令子集 52
2.7.4 位操作指令子集 52
2.7.5 存儲指令子集 53
2.8 本章小結 53
第三章 處理器流水線結構 55
3.1 實現RISC指令集的典型硬件結構 55
3.1.1 微架構與指令集的關系 55
3.1.2 RV32I指令集的數據通路 56
3.2 基礎流水線 60
3.2.1 流水線的基本概念 60
3.2.2 基礎流水線的性能分析 64
3.3 流水線沖突 66
3.3.1結構沖突(structural hazard) 66
3.3.2控制沖突(control hazard) 66
3.3.3數據沖突(data hazard) 67
3.4 前饋 69
3.5 亂序執(zhí)行和超標量流水線 72
3.5.1 基礎流水線的性能瓶頸 72
3.5.2 多發(fā)射(multiple issue)技術與超標量(superscalar)技術 73
3.5.3 亂序執(zhí)行與動態(tài)調度 74
3.5.4 重排序緩沖區(qū)(reorder buffer,ROB) 77
3.5.5 寄存器重命名和Tomasulo算法 80
3.6 分支預測 85
3.6.1 靜態(tài)預測 85
3.6.2 局部預測器 86
3.6.3 相關預測器 90
3.6.4 預測跳轉地址 91
3.6.5 指令復用 94
3.6.6 預測的代價 95
3.6.7 BOOM中的分支預測器 96
3.7 指令級并行的過去與未來 102
3.8 案例學習:平頭哥C910處理器的指令級并行 104
3.9 本章小結 105
第四章 計算機存儲系統 107
4.1 半導體存儲技術 107
4.1.1 SRAM 108
4.1.2 DRAM 108
4.1.3 flash 109
4.1.4 RRAM 111
4.1.5存儲技術在計算機中的應用 111
4.2 虛擬存儲(virtual memory) 112
4.2.1 虛擬存儲的工作原理 112
4.2.2 保護進程 114
4.2.3 頁式虛擬存儲的可能結構 115
4.3 處理器與內存的速度差距:內存墻 117
4.4 緩存 118
4.4.1 緩存的概念 118
4.4.2 緩存的基本性質 119
4.5 緩存結構示例 124
4.6 緩存的性能和基本優(yōu)化手段 124
4.6.1 增加緩存容量,以降低缺失率 125
4.6.2 增加路數,以降低缺失率 125
4.6.3 增加塊粒度,以降低缺失率 126
4.6.4 緩存讀優(yōu)先于緩存寫,以降低缺失懲罰 126
4.6.5 多級緩存,以降低缺失懲罰 126
4.6.6 地址翻譯和緩存索引并行,以減少命中時間 127
4.7 多核處理器中的緩存一致性 128
4.7.1 緩存一致性協議的分類和比較 129
4.7.2 MSI一致性協議 131
4.8 案例學習:平頭哥C910處理器的存儲系統 133
4.8.1 平頭哥玄鐵C910的緩存層次 134
4.8.2 平頭哥玄鐵C910緩存優(yōu)化手段 136
4.8.3 平頭哥玄鐵C910的虛擬內存系統 137
4.9 本章小結 139
第五章 計算機I/O原理 140
5.1 I/O概述 140
5.1.1 I/O設備 141
5.1.2 I/O接口和I/O總線 142
5.2 I/O設備與主機間的通信 145
5.2.1 處理器查詢方式 145
5.2.2 中斷方式 147
5.2.3 DMA方式 148
5.3 常見的I/O總線協議 151
5.3.1 PCI,PCI-X,PCI-E 151
5.3.2 SCSI,SAS,iSCSI 152
5.3.3 ATA,SATA 153
5.4 磁盤的基本原理 154
5.4.1 磁盤的經典結構 154
5.4.2 磁盤的演化 155
5.4.3 磁盤陣列 157
5.5 排隊論簡介 163
5.5.1 隊列系統的簡單抽象 163
5.5.2 隊列系統的表示——Kendall表示法 164
5.5.3 Little定理 165
5.5.4 用排隊論評估簡單的I/O系統 165
5.6 案例學習:wujian100的USI模塊 167
5.6.1 UART 169
5.6.2 SPI 170
5.6.3 I2C 172
5.7 本章小結 173
第六章 SoC系統設計 175
6.1 SoC概述 175
6.1.1 SoC簡介 175
6.1.2 SoC的基本組成 176
6.1.3 SoC的優(yōu)勢 178
6.1.4 SoC面臨的發(fā)展挑戰(zhàn) 180
6.2 系統總線 181
6.2.1 總線概述 181
6.2.2 AMBA總線 183
6.3 SoC軟硬件協同開發(fā) 189
6.3.1 SoC的軟件環(huán)境 189
6.3.2 SoC的軟硬件協同設計 190
6.4 案例學習:wujian100 SoC平臺 195
6.5 本章小結 198
第七章 嵌入式操作系統 200
7.1 操作系統簡介 200
7.1.1 操作系統的基本概念 200
7.1.2 操作系統的發(fā)展歷史 201
7.1.3 嵌入式操作系統的主要特點 203
7.2 進程與保護 204
7.2.1 進程的基本概念 204
7.2.2 進程保護 207
7.3 進程調度 209
7.3.1 單處理器進程調度 210
7.3.2 實時調度 213
7.4 文件管理 215
7.4.1 文件系統 215
7.4.2 目錄 217
7.4.3 文件 219
7.5 案例學習:在RISC-V處理器上運行Linux系統 220
7.5.1 GNU和LLVM項目 220
7.5.2 準備交叉編譯環(huán)境 222
7.5.3 編譯內核 223
7.5.4 根文件系統和引導程序 224
7.6 本章小結 226
第八章 體系結構仿真器實驗 227
8.1 RISC-V交叉編譯和仿真環(huán)境的安裝與配置 227
8.1.1 實驗目的 227
8.1.2 實驗介紹 227
8.1.3 實驗內容 229
8.2 QEMU運行裸機程序與Linux系統并調試 234
8.2.1 實驗目的 234
8.2.2 實驗介紹 234
8.2.3 實驗內容 236
8.3 RISC-V匯編程序編程練習 247
8.3.1 實驗目的 247
8.3.2 實驗介紹 247
8.3.3 實驗內容 250
8.4 QEMU上運行YOLO算法 254
8.4.1 實驗目的 254
8.4.2 實驗介紹 254
8.4.3 實驗內容 259
8.5 本章小結 264
第九章 RTL級的SoC平臺仿真實驗 265
9.1 SMART平臺基礎操作實驗 265
9.1.1 實驗目的 265
9.1.2 實驗介紹 265
9.1.3 實驗內容 268
9.2 緩存操作實驗 270
9.2.1 實驗目的 270
9.2.2 實驗介紹 270
9.2.3 實驗內容 271
9.3 分支預測實驗 275
9.3.1 實驗目的 275
9.3.2 實驗介紹 275
9.3.3 實驗內容 276
9.4 YOLO綜合仿真實驗 278
9.4.1 實驗目的 278
9.4.2 實驗介紹 278
9.4.3 實驗內容 281
9.5 本章小結 285
第十章 基于FPGA的SoC板級測試實驗 286
10.1 wujian100平臺介紹和FPGA測試 286
10.1.1 實驗目的 286
10.1.2 實驗介紹 286
10.1.3 實驗內容 288
10.2 語音識別電子系統綜合設計 295
10.2.1 實驗目的 295
10.2.2 實驗介紹 295
10.2.3 實驗內容 301
10.3 本章小結 303