注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn)

處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn)

處理器架構(gòu)設(shè)計(jì):基于高層次綜合的RISC-V實(shí)現(xiàn)

定 價(jià):¥179.00

作 者: [法]伯納德·古森斯
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787111772927 出版時(shí)間: 2025-03-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書是一本非常實(shí)用的計(jì)算機(jī)體系結(jié)構(gòu)入門書,所基于的RISC-V指令集架構(gòu)是一種開源的機(jī)器語言,有望成為主流的設(shè)計(jì)語言。本書旨在指導(dǎo)讀者動(dòng)手設(shè)計(jì)RISC-V處理器,實(shí)現(xiàn)不同的處理器組織,如普通流水線、多周期操作流水線、多線程、多核等。在每一步的實(shí)現(xiàn)環(huán)節(jié),都給出開源的C++ HLS代碼,可以在基于FPGA的開發(fā)板上進(jìn)行集成和測試。本書從設(shè)計(jì)的角度介紹計(jì)算機(jī)體系結(jié)構(gòu),既涵蓋足夠的理論知識(shí),又提供豐富的實(shí)驗(yàn)資源,既可作為面向本科生的計(jì)算機(jī)體系結(jié)構(gòu)入門教程,又可作為面向FPGA工程師的高層次綜合和RISC-V的實(shí)戰(zhàn)指南。

作者簡介

  伯納德·古森斯(Bernard Goossens) 法國佩皮尼昂大學(xué)理學(xué)院教授,研究領(lǐng)域包括處理器微架構(gòu)、計(jì)算機(jī)系統(tǒng)等。著有Architecture et micro-architecture des processeurs(Springer,2002)(法語)。

圖書目錄

譯者序
前 言
致 謝
第一部分 單核處理器
第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 匯編語法84
4.2 代碼示例86
4.2.1 表達(dá)式86
4.2.2 測試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ì)算來減少關(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 使用測試平臺(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)譯碼操作來
  計(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 使用測試平臺(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í)來構(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 使用測試平臺(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ǔ)器訪問:對齊和大小端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 用測試平臺(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章 測試RISC-V處理器156
7.1 用本書的測試程序測試
   rv32i_npp_ip處理器156
7.2 使用官方riscv-tests進(jìn)行更多測試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 />   測試合并161
7.2.5 在Vitis_HLS中仿真測試
   的testbench162
7.2.6 在Vitis_HLS環(huán)境中運(yùn)行
   riscv-tests163
7.2.7 在FPGA上測試167
7.3 在rv32i_npp_ip處理器上運(yùn)行
  基準(zhǔn)測試集168
7.3.1 mibench測試集中的
   basicmath_small基準(zhǔn)
   測試169
7.3.2 在FPGA上運(yùn)行basicmath_
   small基準(zhǔn)測試174
7.3.3 mibench測試集的其他
   基準(zhǔn)測試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 無限仿真:用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)
   一步測試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)一步測試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)一步測試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)一步測試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 評估多核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 評估多核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

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)