注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)計算機科學(xué)理論與基礎(chǔ)知識CPU制作入門:基于RISC-V和Chisel

CPU制作入門:基于RISC-V和Chisel

CPU制作入門:基于RISC-V和Chisel

定 價:¥98.00

作 者: (日)西山悠太朗 等著;蔣萌譯
出版社: 科學(xué)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787030769657 出版時間: 2023-12-01 包裝: 平裝膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書基于RISC-V和Chisel講解自定義CPU的實現(xiàn)。全書分為5個部分,立足于CPU、存儲器、計算機架構(gòu)等基礎(chǔ)知識,逐步帶領(lǐng)讀者實現(xiàn)簡單的加減法、分支、比較等基礎(chǔ)指令,理解流水線對于CPU高速化的重要意義及實現(xiàn),最后應(yīng)用向量擴展語言實現(xiàn)自定義CPU。要提醒的是,本書所指的“CPU制作”僅限于軟件上的設(shè)計和模擬,不涉及FPGA上的實現(xiàn)。

作者簡介

暫缺《CPU制作入門:基于RISC-V和Chisel》作者簡介

圖書目錄

目錄
第Ⅰ部分 CPU制作的基礎(chǔ)知識
第1章什么是CPU 2
1.1 電路能夠描述邏輯的理由 3
1.1.1 轉(zhuǎn)換為數(shù)字信號 3
1.1.2 描述邏輯運算的電路 4
1.1.3 可以描述任何真值表的基本邏輯電路 7
1.2 為何能用基本邏輯電路實現(xiàn)CPU 9
1.2.1 時序邏輯電路:鎖存器 10
1.2.2 有限狀態(tài)機 11
1.2.3 通過時鐘信號同步 13
1.3 CPU的制造流程 17
第2章計算機架構(gòu) 19
2.1 存儲器 20
2.1.1 寄存器 21
2.1.2 主存 21
2.2 計算機的基本處理流程 22
2.2.1 取指令(IF) 23
2.2.2 指令譯碼(ID) 23
2.2.3 運算(EX)27
2.2.4 訪存(MEM) 27
CPU制作入門:基于RISC-V和Chisel
2.2.5 回寫 27
第3章 Chisel基礎(chǔ) 30
3.1 什么是Chisel 31
3.2 什么是面向?qū)ο?32
3.2.1 類和實例 32
3.2.2 繼承 33
3.3 Scala的基本語法 34
3.3.1 變量var和val 35
3.3.2 方法:def() 35
3.3.3 集合:Seq 35
3.3.4 for表達式 36
3.3.5 對象 37
3.3.6 命名空間 40
3.4 Chisel的基本語法 42
3.4.1 位值的基本類型 42
3.4.2 運算符 44
3.4.3 Module類 47
3.4.4 IO對象 48
3.4.5 Flipped對象 49
3.4.6 信號連接 50
3.4.7 組合邏輯電路:Wire/WireDefault 51
3.4.8 時序邏輯電路:RegInit 51
3.4.9 用Mem定義寄存器文件 52
3.4.10 控制電路 52
3.4.11 位操作 56
3.4.12 用printf調(diào)試 57
第Ⅱ部分簡單的CPU實現(xiàn)
第4章環(huán)境架構(gòu) 60
4.1 下載chisel-template 60
4.2 用Docker架構(gòu)運行環(huán)境 61
4.2.1 安裝Docker 61
4.2.2 創(chuàng)建Dockerfile 61
4.2.3 創(chuàng)建鏡像 62
4.2.4 創(chuàng)建容器 63
4.3 指令位列和常量文件 63
4.3.1 Instructions.scala 64
4.3.2 Consts.scala 66
4.4 第Ⅱ部分要實現(xiàn)的指令和Chisel完整代碼 69
第5章取指令的實現(xiàn) 76
5.1 Chisel代碼概要 76
5.2 Chisel的實現(xiàn) 77
第6章用ChiselTest進行取指令測試 80
6.1 ChiselTest的實現(xiàn) 80
6.2 測試流程 81
6.3 創(chuàng)建Chisel測試代碼 81
6.3.1 特征:trait 82
6.3.2 peek() 方法 83
6.3.3 clock.step() 方法 83
6.4 創(chuàng)建存儲器用HEX文件 83
6.5 用printf輸出調(diào)試信號 85
6.6 運行測試 85
6.7 Docker容器的commit 86
第7章指令譯碼器的實現(xiàn) 87
7.1 Chisel的實現(xiàn) 87
7.1.1 寄存器編號的譯碼 87
7.1.2 寄存器數(shù)據(jù)的讀取 87
7.1.3 調(diào)試信號的輸出 88
7.2 運行測試 88
第8章 LW指令的實現(xiàn) 90
8.1 RISC-V的LW指令定義 90
8.2 Chisel的實現(xiàn) 91
8.2.1 指令位模式的定義 92
8.2.2 CPU和存儲器之間的端口定義 93
8.2.3 CPU內(nèi)部的處理實現(xiàn) 94
8.2.4 存儲器的數(shù)據(jù)讀取實現(xiàn) 95
8.3 運行測試 96
8.3.1 創(chuàng)建指令文件lw.hex96
8.3.2 存儲器加載文件名的修改 97
8.3.3 測試結(jié)束條件的修改 97
8.3.4 添加調(diào)試信號 97
8.3.5 運行測試 98
第9章 SW指令的實現(xiàn) 99
9.1 RISC-V的SW指令定義 99
9.2 Chisel的實現(xiàn) 100
9.2.1 指令位模式的定義 101
9.2.2 CPU和存儲器間的端口定義 101
9.2.3 CPU內(nèi)部的處理實現(xiàn) 101
9.2.4 存儲器的數(shù)據(jù)寫入實現(xiàn) 102
9.3 運行測試 102
9.3.1 創(chuàng)建指令文件sw.hex 102
9.3.2 存儲器加載文件名的修改 104
9.3.3 測試結(jié)束條件的修改 104
9.3.4 添加調(diào)試信號 104
9.3.5 運行測試 104
第10章加減法指令的實現(xiàn) 106
10.1 RISC-V的加減法指令定義 106
10.2 Chisel的實現(xiàn) 107
10.2.1 指令位模式的定義 107
10.2.2 加減法結(jié)果的連接(EX階段) 107
10.2.3 加減法結(jié)果的寄存器回寫(WB階段) 108
第11章邏輯運算的實現(xiàn) 109
11.1 RISC-V的邏輯運算指令定義 109
11.2 Chisel的實現(xiàn) 110
11.2.1 指令位模式的定義 110
11.2.2 邏輯運算結(jié)果的連接(EX階段) 111
11.2.3 邏輯運算結(jié)果的寄存器回寫(WB階段) 111
第12章譯碼器的強化 112
12.1 ALU譯碼 112
12.1.1 譯碼器的強化(ID階段) 112
12.1.2 利用譯碼信號簡化ALU(EX階段) 113
12.2 MEM譯碼 114
12.2.1 譯碼器的強化(ID階段) 114
12.2.2 指令譯碼的非必要化(MEM階段) 115
12.3 WB譯碼 115
12.3.1 譯碼器強化(ID階段) 116
12.3.2 指令譯碼的非必要化(WB階段) 116
第13章移位運算的實現(xiàn) 118
13.1 RISC-V的移位運算指令定義 118
13.2 Chisel的實現(xiàn) 119
13.2.1 指令位模式的定義 119
13.2.2 譯碼信號的生成(ID階段) 120
13.2.3 移位運算結(jié)果的連接(EX階段) 120
第14章比較運算的實現(xiàn) 121
14.1 RISC-V的比較運算指令定義 121
14.2 Chisel的實現(xiàn) 122
14.2.1 指令位模式的定義 122
14.2.2 譯碼信號的生成(ID階段) 122
14.2.3 比較運算結(jié)果的連接(EX階段) 123
第15章分支指令的實現(xiàn) 124
15.1 RISC-V的分支指令定義 124
15.2 Chisel的實現(xiàn) 126
15.2.1 指令位模式的定義 126
15.2.2 PC的控制(IF階段) 126
15.2.3 立即數(shù)和譯碼信號的生成(ID階段) 127
15.2.4 分支可否、跳轉(zhuǎn)目標(biāo)地址的計算(EX階段) 128
第16章跳轉(zhuǎn)指令的實現(xiàn) 129
16.1 RISC-V的跳轉(zhuǎn)指令定義 129
16.2 Chisel的實現(xiàn) 131
16.2.1 指令位模式的定義 131
16.2.2 譯碼和操作數(shù)數(shù)據(jù)的讀?。↖D階段) 131
16.2.3 添加JALR運算(EX階段) 132
16.2.4 PC的控制(IF階段) 132
16.2.5 ra的回寫(WB階段) 133
第17章立即數(shù)加載指令的實現(xiàn) 134
17.1 RISC-V的立即數(shù)加載指令定義 134
17.2 Chisel的實現(xiàn) 135
17.2.1 指令位模式的定義 135
17.2.2 譯碼和操作數(shù)數(shù)據(jù)的讀?。↖D階段) 136
第18章 CSR指令的實現(xiàn) 138
18.1 RISC-V的CSR指令定義 138
18.2 Chisel的實現(xiàn) 141
18.2.1 指令位模式的定義 141
18.2.2 立即數(shù)和譯碼信號的生成(ID階段) 141
18.2.3 op1_data的連接(EX階段) 142
18.2.4 CSR的讀寫(MEM階段) 142
18.2.5 CSR讀取數(shù)據(jù)的寄存器回寫(WB階段) 143
第19章 ECALL的實現(xiàn) 144
19.1 RISC-V的ECALL指令定義 144
19.2 Chisel的實現(xiàn) 145
19.2.1 指令位模式的定義 145
xvi
CPU制作入門:基于RISC-V和Chisel
19.2.2 PC的控制(IF階段) 145
19.2.3 譯碼信號的生成(ID階段) 146
19.2.4 CSR寫入(MEM階段) 146
第20章用riscv-tests進行測試 147
20.1 riscv-tests的構(gòu)建 147
20.2 將ELF文件轉(zhuǎn)換為BIN文件 148
20.3 BIN文件的十六進制化 149
20.4 riscv-tests的路徑條件 150
20.5 riscv-tests的執(zhí)行 153
20.5.1 Chisel的實現(xiàn) 153
20.5.2 運行測試 154
20.6 批量測試腳本 156
20.6.1 HEX文件的批量生成:tohex.sh 156
20.6.2 riscv-tests的批量運行:riscv-tests.sh 156
第21章試運行C程序 159
21.1 創(chuàng)建C程序 159
21.2 編譯 161
21.3 鏈接 163
21.4 機器語言的十六進制化和DUMP文件的創(chuàng)建 164
21.5 運行測試 165
第Ⅲ部分流水線的實現(xiàn)
第22章什么是流水線 168
22.1 流水線的意義 168
22.2 創(chuàng)建CPU流水線 170
22.3 在第Ⅲ部分完成的Chisel代碼 170
第23章流水線寄存器的設(shè)置 179
23.1 寄存器的定義 179
23.2 IF階段 181
23.2.1 取指令和PC控制 181
23.2.2 IF/ID寄存器的寫入 181
23.3 ID階段 182
23.3.1 寄存器編號的譯碼和寄存器數(shù)據(jù)的讀取 182
23.3.2 立即數(shù)的譯碼 182
23.3.3 csignals的譯碼 182
23.3.4 操作數(shù)數(shù)據(jù)的選擇 183
23.3.5 生成csr_addr 183
23.3.6 ID/EX寄存器的寫入 183
23.4 EX階段 184
23.4.1 至alu_out的信號連接 184
23.4.2 分支指令的處理 185
23.4.3 EX/MEM寄存器的寫入 185

本目錄推薦

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