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