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

CPU制作入門(mén):基于RISC-V和Chisel

CPU制作入門(mén):基于RISC-V和Chisel

定 價(jià):¥98.00

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

購(gòu)買這本書(shū)可以去


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

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

暫缺《CPU制作入門(mén):基于RISC-V和Chisel》作者簡(jiǎn)介

圖書(shū)目錄

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

本目錄推薦

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