包郵 處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn)
-
>
全國(guó)計(jì)算機(jī)等級(jí)考試最新真考題庫(kù)模擬考場(chǎng)及詳解·二級(jí)MSOffice高級(jí)應(yīng)用
-
>
決戰(zhàn)行測(cè)5000題(言語(yǔ)理解與表達(dá))
-
>
軟件性能測(cè)試.分析與調(diào)優(yōu)實(shí)踐之路
-
>
第一行代碼Android
-
>
JAVA持續(xù)交付
-
>
EXCEL最強(qiáng)教科書(完全版)(全彩印刷)
-
>
深度學(xué)習(xí)
處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn) 版權(quán)信息
- ISBN:9787111772927
- 條形碼:9787111772927 ; 978-7-111-77292-7
- 裝幀:平裝-膠訂
- 冊(cè)數(shù):暫無(wú)
- 重量:暫無(wú)
- 所屬分類:>>
處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn) 本書特色
·對(duì)于本科生,本書是實(shí)用的計(jì)算機(jī)體系結(jié)構(gòu)入門書。相對(duì)于Patterson和Hennessy等作者的經(jīng)典書籍,本書更側(cè)重于實(shí)踐,從普通流水線到多周期、多線程和多核,逐步實(shí)現(xiàn)不同的處理器。
·對(duì)于教師,本書是一應(yīng)俱全的實(shí)驗(yàn)工具包。書中的所有實(shí)現(xiàn)都作為GitHub開源項(xiàng)目向讀者開放,并使用定量方法,基于相同的基準(zhǔn)測(cè)試集來(lái)對(duì)比不同實(shí)現(xiàn)方案的性能。
·對(duì)于FPGA工程師,本書是高層次綜合(HLS)和RISC-V實(shí)戰(zhàn)指南。書中介紹了Xilinx Vitis工具包中的HLS環(huán)境,逐步解釋如何在FPGA上對(duì)設(shè)計(jì)進(jìn)行實(shí)現(xiàn)、仿真和綜合。
處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn) 內(nèi)容簡(jiǎn)介
本書是一本非常實(shí)用的計(jì)算機(jī)體系結(jié)構(gòu)入門書,所基于的RISC-V指令集架構(gòu)是一種開源的機(jī)器語(yǔ)言,有望成為主流的設(shè)計(jì)語(yǔ)言。本書旨在指導(dǎo)讀者動(dòng)手設(shè)計(jì)RISC-V處理器,實(shí)現(xiàn)不同的處理器組織,如普通流水線、多周期操作流水線、多線程、多核等。在每一步的實(shí)現(xiàn)環(huán)節(jié),都給出開源的C++ HLS代碼,可以在基于FPGA的開發(fā)板上進(jìn)行集成和測(cè)試。本書從設(shè)計(jì)的角度介紹計(jì)算機(jī)體系結(jié)構(gòu),既涵蓋足夠的理論知識(shí),又提供豐富的實(shí)驗(yàn)資源,既可作為面向本科生的計(jì)算機(jī)體系結(jié)構(gòu)入門教程,又可作為面向FPGA工程師的高層次綜合和RISC-V的實(shí)戰(zhàn)指南。
處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn)處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn) 前言
前 言
處理器體系結(jié)構(gòu):DIY方式
本書是關(guān)于處理器體系結(jié)構(gòu)的又一本新書。盡管本書介紹了多核和多線程設(shè)計(jì),但這些新內(nèi)容并非本書的主題,本書旨在介紹處理器體系結(jié)構(gòu)的設(shè)計(jì)。
本書借鑒了Douglas Comer所著的知名操作系統(tǒng)教材[1-2]。與Douglas Comer介紹操作系統(tǒng)設(shè)計(jì)的方式類似,本書使用DIY方式來(lái)介紹處理器設(shè)計(jì)。
Douglas Comer的書使用C源代碼從頭構(gòu)建了一個(gè)完整的操作系統(tǒng)。本書的目標(biāo)是讓讀者也使用C源代碼從頭開始構(gòu)建自己的處理器。
讀者只需一臺(tái)計(jì)算機(jī)、一塊開發(fā)板(可選)和一套能夠?qū)語(yǔ)言程序轉(zhuǎn)換成等效FPGA(現(xiàn)場(chǎng)可編程門陣列)實(shí)現(xiàn)的免費(fèi)軟件。
如果讀者沒有開發(fā)板,仍然可以仿真本書中介紹的處理器。
處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn) 目錄
前 言
致 謝
**部分 單核處理器
第1章 FPGA及高層次綜合概述2
1.1 FPGA中可放置的硬件2
1.2 查找表:一種存儲(chǔ)真值表的硬件3
1.3 組合LUT4
1.4 FPGA的結(jié)構(gòu)6
1.5 FPGA編程7
參考文獻(xiàn)8
第2章 Vitis_HLS、Vivado和Vitis
IDE工具的設(shè)置和使用9
2.1 獲取硬件9
2.2 獲取軟件:Xilinx Vitis工具10
2.3 在Vitis軟件中安裝開發(fā)板的定義11
2.4 安裝圖書資源12
2.5 使用軟件12
2.5.1 創(chuàng)建項(xiàng)目12
2.5.2 創(chuàng)建IP16
2.5.3 仿真IP20
2.5.4 綜合IP24
2.6 使用Vivado創(chuàng)建設(shè)計(jì)32
2.7 加載IP并使用Vitis運(yùn)行FPGA50
參考文獻(xiàn)61
第3章 RISC-V工具的安裝和使用62
3.1 安裝RISC-V工具鏈和模擬
器/調(diào)試器62
3.1.1 安裝RISC-V工具鏈62
3.1.2 spike模擬器64
3.1.3 為基于RISC-V FPGA的處理
器構(gòu)建可執(zhí)行代碼67
3.2 使用GDB進(jìn)行調(diào)試68
3.2.1 安裝GDB69
3.2.2 安裝OpenOCD69
3.2.3 定義與spike模擬器兼容的
鏈接器描述文件69
3.2.4 使用鏈接器描述文件進(jìn)行
編譯70
3.2.5 為OpenOCD定義spike配置
文件70
3.2.6 連接spike、OpenOCD和GDB70
3.2.7 調(diào)試過程71
3.3 使用GDB調(diào)試復(fù)雜代碼73
第4章 RISC-V體系結(jié)構(gòu)77
4.1 RISC-V指令集體系結(jié)構(gòu)77
4.1.1 RV32I寄存器和RISC-V
應(yīng)用程序二進(jìn)制接口77
4.1.2 RV32I指令79
4.1.3 RV32I指令格式80
4.1.4 匯編語(yǔ)法84
4.2 代碼示例86
4.2.1 表達(dá)式86
4.2.2 測(cè)試87
4.2.3 循環(huán)89
4.2.4 函數(shù)調(diào)用89
參考文獻(xiàn)91
第5章 構(gòu)建具有“取指”“譯碼”
和“執(zhí)行”功能的處理器92
5.1 HLS編程的一般概念92
5.1.1 關(guān)鍵路徑92
5.1.2 使用更多的計(jì)算來(lái)減少關(guān)鍵
路徑93
5.1.3 并行執(zhí)行93
5.2 基本的處理器執(zhí)行時(shí)間公式94
5.3 **步:構(gòu)建更新pc的通路95
5.3.1 fetching_ip設(shè)計(jì)95
5.3.2 fetching_ip頂層函數(shù)96
5.3.3 fetch函數(shù)99
5.3.4 execute函數(shù)101
5.3.5 IP運(yùn)行條件101
5.3.6 使用測(cè)試平臺(tái)進(jìn)行IP仿真102
5.3.7 仿真輸出102
5.3.8 fetching_ip綜合103
5.3.9 z1_fetching_ip Vivado項(xiàng)目105
5.3.10 在FPGA上驅(qū)動(dòng)fetching_ip
的helloworld.c程序106
5.4 第二步:添加一點(diǎn)譯碼操作來(lái)
計(jì)算下一個(gè)pc107
5.4.1 RISC-V指令編碼107
5.4.2 fetching_decoding_ip110
5.4.3 fetching_decoding_ip.h文件112
5.4.4 fetch函數(shù)和running_cond_
update函數(shù)114
5.4.5 decode函數(shù)114
5.4.6 指令執(zhí)行(計(jì)算下一個(gè)pc)116
5.4.7 使用測(cè)試平臺(tái)模擬
fetching_decoding_ip118
5.4.8 fetching_decoding_ip的綜合119
5.4.9 z1_fetching_decoding_ip
Vivado項(xiàng)目119
5.4.10 驅(qū)動(dòng)fetching_decoding_ip
的helloworld.c代碼121
5.5 第三步:填充執(zhí)行級(jí)來(lái)構(gòu)建
寄存器通路121
5.5.1 取指、譯碼和執(zhí)行IP:
fde_ip設(shè)計(jì)121
5.5.2 兩種調(diào)試工具:寄存器文件
轉(zhuǎn)存和代碼反匯編123
5.5.3 IP的運(yùn)行條件124
5.5.4 fde_ip.h文件124
5.5.5 譯碼函數(shù)和執(zhí)行函數(shù)126
5.5.6 寄存器文件127
5.5.7 計(jì)算128
5.5.8 使用測(cè)試平臺(tái)模擬fde_ip132
5.5.9 fde_ip綜合138
5.5.10 z1_fde_ip Vivado項(xiàng)目138
5.5.11 使用helloworld.c程序
驅(qū)動(dòng)FPGA中的fde_ip139
參考文獻(xiàn)140
第6章 構(gòu)建RISC-V處理器141
6.1 rv32i_npp_ip頂層函數(shù)141
6.1.1 rv32i_npp_ip頂層函數(shù)原型、
局部聲明和初始化141
6.1.2 do…while循環(huán)142
6.2 譯碼更新143
6.3 數(shù)據(jù)存儲(chǔ)器訪問:對(duì)齊和大小端143
6.4 execute函數(shù)144
6.4.1 訪存地址的計(jì)算144
6.4.2 compute_result函數(shù)145
6.4.3 mem_store函數(shù)146
6.4.4 mem_load函數(shù)147
6.4.5 write_reg函數(shù)148
6.5 用測(cè)試平臺(tái)模擬rv32i_npp_ip149
6.6 rv32i_npp_ip的綜合153
6.7 z1_rv32i_npp_ip Vivado項(xiàng)目154
6.8 在FPGA上驅(qū)動(dòng)rv32i_npp_ip
的helloworld.c程序154
第7章 測(cè)試RISC-V處理器156
7.1 用本書的測(cè)試程序測(cè)試
rv32i_npp_ip處理器156
7.2 使用官方riscv-tests進(jìn)行更多測(cè)試156
7.2.1 用spike運(yùn)行riscv-tests156
7.2.2 riscv-tests結(jié)構(gòu)157
7.2.3 使riscv-tests結(jié)構(gòu)適配
Vitis_HLS環(huán)境160
7.2.4 添加_start.S程序?qū)⑺?br /> 測(cè)試合并161
7.2.5 在Vitis_HLS中仿真測(cè)試
的testbench162
7.2.6 在Vitis_HLS環(huán)境中運(yùn)行
riscv-tests163
7.2.7 在FPGA上測(cè)試167
7.3 在rv32i_npp_ip處理器上運(yùn)行
基準(zhǔn)測(cè)試集168
7.3.1 mibench測(cè)試集中的
basicmath_small基準(zhǔn)
測(cè)試169
7.3.2 在FPGA上運(yùn)行basicmath_
small基準(zhǔn)測(cè)試174
7.3.3 mibench測(cè)試集的其他
基準(zhǔn)測(cè)試176
7.3.4 mibench和riscv-tests基準(zhǔn)
在rv32i_npp_ip實(shí)現(xiàn)上的
執(zhí)行時(shí)間176
7.4 建議練習(xí):RISC-V的M和F
指令擴(kuò)展177
7.4.1 使rv32i_npp_ip設(shè)計(jì)適應(yīng)
RISC-V的M擴(kuò)展177
7.4.2 使rv32i_npp_ip設(shè)計(jì)適應(yīng)
RISC-V的F擴(kuò)展178
7.5 調(diào)試提示179
7.5.1 綜合不是仿真:可以禁用
仿真的某些部分179
7.5.2 無(wú)限仿真:用for循環(huán)替換
do…while循環(huán)179
7.5.3 Frozen IP On FPGA:檢查
ap_int和ap_uint變量179
7.5.4 Frozen IP On FPGA:檢查
#ifndef__SYNTHESIS__
內(nèi)部的計(jì)算180
7.5.5 Frozen IP On FPGA:用
for循環(huán)代替“while
(!IsDone(...)); ”循環(huán)180
7.5.6 Frozen IP On FPGA:減少
RISC-V代碼的運(yùn)行180
7.5.7 FPGA上的非確定性行為:
檢查初始化180
7.5.8 在FPGA上運(yùn)行時(shí)的調(diào)試
輸出180
參考文獻(xiàn)180
第8章 構(gòu)建流水線RISC-V處理器181
8.1 **步:流水線控制181
8.1.1 非流水線微架構(gòu)與流水線
微架構(gòu)的區(qū)別181
8.1.2 流水級(jí)之間的連接結(jié)構(gòu)182
8.1.3 IP頂層函數(shù)183
8.1.4 流水線中的控制流指令
處理185
8.1.5 fetch_decode流水級(jí)186
8.1.6 execute_wb流水級(jí)186
8.1.7 IP的仿真與綜合188
8.1.8 使用IP的Vivado項(xiàng)目189
8.1.9 在開發(fā)板上運(yùn)行Vivado
項(xiàng)目190
8.1.10 simple_pipeline_ip的進(jìn)
一步測(cè)試191
8.1.11 非流水線設(shè)計(jì)與流水線
設(shè)計(jì)的比較191
8.2 第二步:將流水線分成多個(gè)
流水級(jí)192
8.2.1 四級(jí)流水線192
8.2.2 流水級(jí)之間的連接192
8.2.3 fetch_decode流水級(jí)的
decode部分194
8.2.4 IP的頂層函數(shù)194
8.2.5 執(zhí)行階段的旁路機(jī)制195
8.2.6 執(zhí)行階段197
8.2.7 內(nèi)存載入冒險(xiǎn)201
8.2.8 訪存階段202
8.2.9 寫回階段202
8.2.10 testbench函數(shù)203
8.2.11 IP綜合204
8.2.12 Vivado項(xiàng)目204
8.2.13 Vivado項(xiàng)目在開發(fā)板上
的執(zhí)行情況205
8.2.14 rv32i_pp_ip的進(jìn)一步測(cè)試206
8.3 比較二級(jí)流水線與四級(jí)流水線206
第9章 構(gòu)建多周期流水線RISC-V
處理器208
9.1 流水線與多周期流水線的區(qū)別208
9.1.1 凍結(jié)流水級(jí)的等待信號(hào)208
9.1.2 有效的輸入位和輸出位209
9.1.3 取指并計(jì)算下一個(gè)pc209
9.1.4 多周期流水級(jí)的安全結(jié)構(gòu)210
9.1.5 多個(gè)多周期流水級(jí)210
9.2 IP的頂層函數(shù)211
9.3 流水級(jí)213
9.3.1 取指階段213
9.3.2 譯碼階段215
9.3.3 發(fā)射階段217
9.3.4 執(zhí)行階段222
9.3.5 訪存階段226
9.3.6 寫回階段227
9.4 仿真、綜合與運(yùn)行IP228
9.4.1 IP仿真與綜合228
9.4.2 Vivado項(xiàng)目及實(shí)現(xiàn)報(bào)告229
9.4.3 在開發(fā)板上運(yùn)行IP230
9.4.4 multicycle_pipeline_ip的
進(jìn)一步測(cè)試231
9.5 比較多周期流水線與四級(jí)流水線231
9.6 建議練習(xí):將II減少到1233
參考文獻(xiàn)234
第10章 使用多hart流水線構(gòu)建
RISC-V處理器235
10.1 使用多hart處理器同時(shí)處理
多個(gè)線程235
10.2 多hart內(nèi)存模型236
10.3 multihart流水線238
10.3.1 hart的數(shù)量239
10.3.2 multihart的流水級(jí)狀態(tài)240
10.3.3 占用信息數(shù)組243
10.3.4 multihart_ip的頂層函數(shù)243
10.3.5 將_to_結(jié)構(gòu)復(fù)制到_from_
結(jié)構(gòu)的new_cycle函數(shù)249
10.3.6 multihart取指階段250
10.3.7 譯碼階段252
10.3.8 發(fā)射階段253
10.3.9 執(zhí)行階段256
10.3.10 訪存階段257
10.3.11 寫回階段260
10.3.12 lock_unlock_update函數(shù)262
10.3.13 run_cond_update函數(shù)262
10.4 模擬multihart_ip263
10.4.1 用不相關(guān)的代碼填充hart263
10.4.2 用并行化代碼填充hart265
10.5 綜合IP269
10.6 Vivado項(xiàng)目和實(shí)施報(bào)告269
10.7 在開發(fā)板上運(yùn)行multihart_ip271
10.7.1 運(yùn)行獨(dú)立代碼271
10.7.2 運(yùn)行并行應(yīng)用程序272
10.7.3 multihart_ip的進(jìn)一步測(cè)試273
10.8 比較multihart_ip與四級(jí)流
水線274
10.8.1 兩個(gè)hart274
10.8.2 四個(gè)hart275
10.8.3 八個(gè)hart276
參考文獻(xiàn)276
第二部分 多核處理器
第11章 連接IP278
11.1 AXI interconnect系統(tǒng)278
11.2 使用外部存儲(chǔ)器IP的非流水
RISC-V處理器279
11.2.1 具有BRAM接口的頂層
函數(shù)279
11.2.2 IP的綜合280
11.2.3 Vivado項(xiàng)目280
11.2.4 在開發(fā)板上運(yùn)行IP284
11.3 通過AXI interconnect連接
多個(gè)CPU和多塊RAM285
11.3.1 多IP設(shè)計(jì)285
11.3.2 CPU的頂層函數(shù)286
11.3.3 CPU頭文件和testbench
代碼287
11.4 多IP設(shè)計(jì)的仿真、綜合和運(yùn)行288
11.4.1 仿真288
11.4.2 綜合289
11.4.3 Vivado項(xiàng)目289
11.4.4 運(yùn)行多IP設(shè)計(jì)294
第12章 多核RISC-V處理器296
12.1 multicycle_pipeline_ip到多核
的適配296
12.1.1 向頂層函數(shù)原型添加IP的編號(hào)297
12.1.2 IP頂層函數(shù)聲明298
12.1.3 IP頂層函數(shù)初始化298
12.1.4 IP頂層函數(shù)主循環(huán)299
12.1.5 寄存器文件初始化299
12.1.6 訪存300
12.2 仿真IP303
12.2.1 在不同的IP上仿真獨(dú)立的
程序303
12.2.2 仿真并行的程序305
12.3 綜合IP309
12.4 Vivado項(xiàng)目309
12.5 在開發(fā)板上運(yùn)行IP311
12.5.1 運(yùn)行獨(dú)立的程序311
12.5.2 運(yùn)行并行的程序312
12.6 評(píng)估多核IP的并行效率314
參考文獻(xiàn)315
第13章 基于multihart核的多核
RISC-V處理器316
13.1 從multihart_ip到多核316
13.1.1 multihart IP多核的頂層
函數(shù)原型和局部聲明316
13.1.2 數(shù)據(jù)存儲(chǔ)器的訪問319
13.2 仿真IP322
13.2.1 仿真獨(dú)立的程序322
13.2.2 仿真并行的程序325
13.2.3 綜合IP328
13.2.4 Vivado項(xiàng)目328
13.3 在開發(fā)板上運(yùn)行IP329
13.3.1 運(yùn)行獨(dú)立的程序329
13.3.2 運(yùn)行并行的程序331
13.4 評(píng)估多核multihart IP的并行
效率333
第14章 使用Pynq-Z1/Z2開發(fā)
板上的LED和按鈕進(jìn)行
探索335
14.1 訪問開發(fā)板上的按鈕和LED
的Zynq設(shè)計(jì)335
14.2 通過RISC-V處理器訪問按鈕
和LED的設(shè)計(jì)336
14.3 結(jié)論339
縮略詞340
處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn) 作者簡(jiǎn)介
伯納德·古森斯(Bernard Goossens)
法國(guó)佩皮尼昂大學(xué)理學(xué)院教授,研究領(lǐng)域包括處理器微架構(gòu)、計(jì)算機(jī)系統(tǒng)等。著有Architecture et micro-architecture des processeurs(Springer,2002)(法語(yǔ))。
- >
煙與鏡
- >
【精裝繪本】畫給孩子的中國(guó)神話
- >
上帝之肋:男人的真實(shí)旅程
- >
山海經(jīng)
- >
月亮與六便士
- >
朝聞道
- >
巴金-再思錄
- >
伯納黛特,你要去哪(2021新版)