第1章OpenRISC介紹 1
1.1 開源軟核處理器 1
1.2 OpenRISC 1000架構(gòu) 4
1.3 OR1200——OpenRISC
1000架構(gòu)的一個(gè)實(shí)現(xiàn) 4
1.3.1 尋址模式 5
1.3.2 位和字節(jié)次序 6
1.3.3 寄存器集 6
1.3.4 指令集
7
1.3.5 異常模型 8
1.4 OR1200代碼組織 8
1.5 本書的分析方法 11
第2章 實(shí)驗(yàn)環(huán)境的搭建 13
2.1 GNU開發(fā)工具鏈的安裝
13
2.2 GNU開發(fā)工具鏈的使用
18
2.2.1 一個(gè)簡(jiǎn)單的匯編程序
18
2.2.2 編譯及ELF文件介紹
19
2.2.3 鏈接 21
2.2.4 Makefile文件 23
2.2.5 使用OR1KSim模擬器運(yùn)行程序
24
2.3 創(chuàng)建OR1200運(yùn)行的最小系統(tǒng) 25
2.3.1 最小系統(tǒng)的創(chuàng)建
26
2.3.2 運(yùn)行仿真 29
2.3.3 修改Makefile
30
2.3.4 觀察流水線
32
2.3.5 流水線介紹
33
2.4 本書的一些說(shuō)明及定義
34
2.4.1 一些說(shuō)明 34
2.4.2 一些定義 35
第3章
QMEM剖析 37
3.1 QMEM的作用
37
3.2 Wishbone總線快速了解
40
3.3 QMEM的Wishbone總線接口 43
3.3.1 QMEM與CPU、IMMU的連接
44
3.3.2 QMEM與ICache的連接 45
3.3.3 QMEM與CPU、DMMU的連接
46
3.3.4 QMEM與DCache的連接
47
3.4 QMEM的內(nèi)部RAM
49
3.5 復(fù)位后取第一條指令的過(guò)程分析
51
3.5.1 復(fù)位信號(hào)有效階段 51
3.5.2 復(fù)位信號(hào)無(wú)效后的第一個(gè)時(shí)鐘周期上升沿 56
3.5.3 復(fù)位信號(hào)無(wú)效后的第一個(gè)時(shí)鐘周期的組合邏輯階段 57
3.6 第二條及后續(xù)指令的讀取過(guò)程分析 58
3.6.1 復(fù)位信號(hào)無(wú)效后的第二個(gè)時(shí)鐘周期的上升沿
58
3.6.2 復(fù)位信號(hào)無(wú)效后的第二個(gè)時(shí)鐘周期的組合邏輯階段 59
第4章 數(shù)據(jù)處理類指令剖析 61
4.1 數(shù)據(jù)處理類指令說(shuō)明 61
4.2 分析用例
65
4.3 流水線的簡(jiǎn)單模型
67
4.4 l.add指令分析
69
4.4.1 l.add取指階段的組合邏輯輸出
70
4.4.2 l.add取指階段的時(shí)序邏輯輸出
73
4.4.3 l.add譯碼階段的組合邏輯輸出
75
4.4.4 l.add譯碼階段的時(shí)序邏輯輸出
80
4.4.5 l.add執(zhí)行階段的組合邏輯輸出
91
4.4.6 l.add執(zhí)行階段的時(shí)序邏輯輸出
97
4.4.7 第一條指令分析小結(jié)
98
4.5 l.sfeqi指令分析 99
4.5.1 l.sfeqi取指階段的組合邏輯輸出 99
4.5.2 l.sfeqi取指階段的時(shí)序邏輯輸出 100
4.5.3 l.sfeqi譯碼階段的組合邏輯輸出 100
4.5.4 l.sfeqi譯碼階段的時(shí)序邏輯輸出 101
4.5.5 l.sfeqi執(zhí)行階段的組合邏輯輸出 102
4.5.6 l.sfeqi執(zhí)行階段的時(shí)序邏輯輸出 105
4.5.7 第二條指令分析小結(jié)
106
4.6 ALU分析
106
4.7 流水線數(shù)據(jù)相關(guān)的解決方法
112
4.8 定制屬于自己的指令 117
4.9 不完整流水線數(shù)據(jù)通路圖 121
第5章 特殊寄存器訪問(wèn)類指令剖析
123
5.1 OR1200中的特殊寄存器 123
5.2 第0組特殊寄存器
125
5.3 特殊寄存器訪問(wèn)類指令說(shuō)明
127
5.4 分析用例
128
5.5 l.mfspr指令分析 130
5.5.1 l.mfspr取指階段的組合邏輯輸出 131
5.5.2 l.mfspr取指階段的時(shí)序邏輯輸出 132
5.5.3 l.mfspr譯碼階段的組合邏輯輸出 132
5.5.4 l.mfspr譯碼階段的時(shí)序邏輯輸出 133
5.5.5 l.mfspr執(zhí)行階段第1個(gè)時(shí)鐘周期的組合邏輯輸出
135
5.5.6 l.mfspr執(zhí)行階段第1個(gè)時(shí)鐘周期的時(shí)序邏輯輸出
138
5.5.7 l.mfspr執(zhí)行階段第2個(gè)時(shí)鐘周期的組合邏輯輸出
141
5.5.8 l.mfspr執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出
144
5.5.9 l.mfspr指令分析小結(jié)
144
5.6 l.mtspr指令分析 145
5.6.1 l.mtspr執(zhí)行階段的組合邏輯輸出 147
5.6.2 l.mtspr執(zhí)行階段的時(shí)序邏輯輸出 148
5.7 SPRS分析
148
5.8 完善流水線數(shù)據(jù)通路圖
155
第6章 轉(zhuǎn)移類指令剖析 157
6.1 延遲槽 157
6.2 轉(zhuǎn)移類指令說(shuō)明 158
6.3 分析用例
159
6.4 l.bf指令分析 161
6.4.1 l.bf取指階段的組合邏輯輸出 162
6.4.2 l.bf取指階段的時(shí)序邏輯輸出 163
6.4.3 l.bf譯碼階段的組合邏輯輸出 164
6.4.4 l.bf譯碼階段的時(shí)序邏輯輸出 166
6.4.5 l.bf執(zhí)行階段第1個(gè)時(shí)鐘周期的組合邏輯輸出
169
6.4.6 l.bf執(zhí)行階段第2個(gè)時(shí)鐘周期的組合邏輯輸出
173
6.4.7 l.bf執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出
174
6.4.8 l.bf指令分析小結(jié)
175
6.5 l.jalr指令分析
176
6.5.1 l.jalr取指階段的組合邏輯輸出
177
6.5.2 l.jalr取指階段的時(shí)序邏輯輸出
177
6.5.3 l.jalr譯碼階段的組合邏輯輸出
177
6.5.4 l.jalr譯碼階段的時(shí)序邏輯輸出
179
6.5.5 l.jalr執(zhí)行階段第1個(gè)時(shí)鐘周期的組合邏輯輸出 180
6.5.6 l.jalr執(zhí)行階段第2個(gè)時(shí)鐘周期的組合邏輯輸出 181
6.5.7 l.jalr執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 182
6.6 轉(zhuǎn)移類指令對(duì)處理器效率的影響
182
6.7 繼續(xù)完善流水線數(shù)據(jù)通路圖
183
第7章 異常處理類指令剖析 185
7.1 OR1200中的異常分類 185
7.2 OR1200中的異常處理過(guò)程 185
7.3 異常處理類指令說(shuō)明 187
7.4 分析用例
187
7.5 EXCEPTION模塊的作用
190
7.6 l.sys指令分析
195
7.6.1 l.sys取指階段的組合邏輯輸出
196
7.6.2 l.sys取指階段的時(shí)序邏輯輸出
196
7.6.3 l.sys譯碼階段的組合邏輯輸出
197
7.6.4 l.sys譯碼階段的時(shí)序邏輯輸出
198
7.6.5 l.sys執(zhí)行階段的組合邏輯輸出
199
7.6.6 l.sys執(zhí)行階段的時(shí)序邏輯輸出
201
7.6.7 異常處理過(guò)程——FLU1狀態(tài) 207
7.6.8 異常處理過(guò)程——FLU2狀態(tài) 211
7.6.9 異常處理過(guò)程——FLU3狀態(tài) 212
7.6.10 異常處理過(guò)程——FLU4狀態(tài)
212
7.6.11 異常處理過(guò)程——FLU5狀態(tài)
213
7.6.12 l.sys分析小結(jié) 214
7.7 l.trap指令分析 215
7.7.1 l.trap譯碼階段的時(shí)序邏輯輸出
216
7.7.2 l.trap執(zhí)行階段的組合邏輯輸出
216
7.7.3 l.trap執(zhí)行階段的時(shí)序邏輯輸出
216
7.7.4 異常處理過(guò)程——FLU1狀態(tài) 217
7.7.5 異常處理過(guò)程——FLU2狀態(tài) 217
7.7.6 l.trap分析小結(jié) 218
7.8 l.rfe指令分析
218
7.8.1 l.rfe取指階段的組合邏輯輸出
219
7.8.2 l.rfe取指階段的時(shí)序邏輯輸出
219
7.8.3 l.rfe譯碼階段的組合邏輯輸出
220
7.8.4 l.rfe譯碼階段的時(shí)序邏輯輸出
221
7.8.5 l.rfe執(zhí)行階段第1個(gè)時(shí)鐘周期的組合邏輯輸出 223
7.8.6 l.rfe執(zhí)行階段第2個(gè)時(shí)鐘周期的組合邏輯輸出 224
7.8.7 l.rfe執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 225
7.9 繼續(xù)完善流水線數(shù)據(jù)通路圖
226
第8章 乘法、除法類指令剖析
228
8.1 串行乘法與并行乘法 228
8.1.1 串行乘法 228
8.1.2 并行乘法 229
8.2 串行除法與并行除法 230
8.2.1 串行除法 230
8.2.2 并行除法 231
8.3 乘法、除法類指令說(shuō)明
232
8.4 OR1200中關(guān)于乘法、除法的一些配置 234
8.5 分析用例
234
8.6 l.mul指令分析(串行乘法)
238
8.6.1 l.mul取指階段的組合邏輯輸出
239
8.6.2 l.mul取指階段的時(shí)序邏輯輸出
240
8.6.3 l.mul譯碼階段的組合邏輯輸出
240
8.6.4 l.mul譯碼階段的時(shí)序邏輯輸出
241
8.6.5 l.mul執(zhí)行階段第1個(gè)時(shí)鐘周期的組合邏輯輸出 243
8.6.6 l.mul執(zhí)行階段第1個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 245
8.6.7 l.mul執(zhí)行階段第2個(gè)時(shí)鐘周期的組合邏輯輸出 247
8.6.8 l.mul執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 249
8.6.9 l.mul執(zhí)行階段第33個(gè)時(shí)鐘周期的時(shí)序邏輯輸出
250
8.6.10 l.mul執(zhí)行階段第34個(gè)時(shí)鐘周期的組合邏輯輸出
250
8.6.11 l.mul執(zhí)行階段第34個(gè)時(shí)鐘周期的時(shí)序邏輯輸出
252
8.6.12 l.mul執(zhí)行階段第35個(gè)時(shí)鐘周期的時(shí)序邏輯輸出
252
8.6.13 l.mul分析小結(jié) 252
8.7 l.mul指令分析(并行乘法)
253
8.7.1 l.mul執(zhí)行階段第1個(gè)時(shí)鐘周期的組合邏輯輸出(并行乘法) 253
8.7.2 l.mul執(zhí)行階段第1個(gè)時(shí)鐘周期的時(shí)序邏輯輸出(并行乘法) 254
8.7.3 l.mul執(zhí)行階段第2個(gè)時(shí)鐘周期的組合邏輯輸出(并行乘法) 255
8.7.4 l.mul執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出(并行乘法) 256
8.7.5 l.mul執(zhí)行階段第3個(gè)時(shí)鐘周期的時(shí)序邏輯輸出(并行乘法) 256
8.7.6 l.mul執(zhí)行階段第4個(gè)時(shí)鐘周期的組合邏輯輸出(并行乘法) 256
8.7.7 l.mul執(zhí)行階段第4個(gè)時(shí)鐘周期的時(shí)序邏輯輸出(并行乘法) 257
8.7.8 l.mul執(zhí)行階段第5個(gè)時(shí)鐘周期的時(shí)序邏輯輸出(并行乘法) 257
8.7.9 l.mul分析小結(jié)(并行乘法) 257
8.8 l.mac指令分析 257
8.8.1 l.mac執(zhí)行階段第1個(gè)時(shí)鐘周期的組合邏輯輸出 259
8.8.2 l.mac執(zhí)行階段第1個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 260
8.8.3 l.mac執(zhí)行階段第2個(gè)時(shí)鐘周期的組合邏輯輸出 261
8.8.4 l.mac執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 261
8.8.5 后l.mac執(zhí)行階段第1個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 262
8.8.6 后l.mac執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 262
8.8.7 l.mac指令分析小結(jié) 263
8.9 l.div指令分析(串行除法)
263
8.10 繼續(xù)完善流水線數(shù)據(jù)通路圖 266
第9章 加載存儲(chǔ)類指令剖析 268
9.1 加載存儲(chǔ)類指令說(shuō)明 268
9.2 分析用例
270
9.3 l.sb指令分析
274
9.3.1 l.sb取指階段的組合邏輯輸出 276
9.3.2 l.sb取指階段的時(shí)序邏輯輸出 276
9.3.3 l.sb譯碼階段的組合邏輯輸出 276
9.3.4 l.sb譯碼階段的時(shí)序邏輯輸出 278
9.3.5 l.sb執(zhí)行階段第1個(gè)時(shí)鐘周期的組合邏輯輸出 280
9.3.6 l.sb執(zhí)行階段第2個(gè)時(shí)鐘周期的組合邏輯輸出 286
9.3.7 l.sb執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 287
9.3.8 l.sb指令分析小結(jié) 287
9.4 l.lbs指令分析
288
9.4.1 l.lbs執(zhí)行階段第1個(gè)時(shí)鐘周期的組合邏輯輸出 290
9.4.2 l.lbs執(zhí)行階段第2個(gè)時(shí)鐘周期的組合邏輯輸出 291
9.4.3 l.lbs執(zhí)行階段第2個(gè)時(shí)鐘周期的時(shí)序邏輯輸出 294
9.4.4 l.lbs指令分析小結(jié) 294
9.5 對(duì)齊異常處理流程
295
9.6 三級(jí)流水線還是五級(jí)流水線
297
9.7 完整的流水線數(shù)據(jù)通路圖 298
第10章
MMU剖析 301
10.1 MMU的作用及工作過(guò)程 301
10.2 TLB的作用及工作過(guò)程
303
10.3 IMMU分析
305
10.3.1 IMMU結(jié)構(gòu)
305
10.3.2 IMMU中的特殊寄存器 307
10.3.3 OR1200中關(guān)于IMMU的一些配置
308
10.3.4 ITLB代碼分析 309
10.3.5 IMMU使用情景
313
10.3.6 分析用例 313
10.3.7 IMMU使用情景之一——指令取指階段ITLB命中且無(wú)頁(yè)錯(cuò)誤情況下IMMU工作分析
324
10.3.8 IMMU使用情景之二——指令取指階段ITLB未命中情況下IMMU工作分析
329
10.3.9 IMMU使用情景之三——指令取指階段ITLB命中但有頁(yè)錯(cuò)誤情況下IMMU工作分析
333
10.3.10 IMMU使用情景之四——l.mtspr執(zhí)行階段IMMU工作分析 333
10.3.11 IMMU使用情景之五——l.mfspr執(zhí)行階段IMMU工作分析 335
10.3.12 IMMU分析小結(jié) 336
10.4 DMMU分析
336
10.4.1 DTLB結(jié)構(gòu)圖 337
10.4.2 DMMU中的特殊寄存器 337
10.4.3 DMMU使用情景 338
第11章 基于OR1200的一個(gè)簡(jiǎn)單SOPC 340
11.1 簡(jiǎn)單SOPC的結(jié)構(gòu)
340
11.2 Wishbone總線互聯(lián)矩陣WB_CONMAX
341
11.3 掛接在互聯(lián)矩陣WB_CONMAX下的RAM模塊
342
11.4 SOPC頂層文件 344
11.5 ModelSim新建工程min_or1200_sopc
346
11.6 示例程序 348
第12章
ICache剖析 350
12.1 Cache基本知識(shí) 350
12.1.1 Cache的作用 350
12.1.2 Cache的結(jié)構(gòu)與工作過(guò)程
351
12.2 OR1200中Cache簡(jiǎn)介
352
12.3 ICache結(jié)構(gòu) 353
12.3.1 ICache模塊與其余模塊的連接關(guān)系
353
12.3.2 ICache中數(shù)據(jù)部分 354
12.3.3 ICache中控制部分 356