第1章OpenRISC介紹 1
1.1 開源軟核處理器 1
1.2 OpenRISC 1000架構(gòu) 4
1.3 OR1200——OpenRISC
1000架構(gòu)的一個實(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 一個簡單的匯編程序
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 本書的一些說明及定義
34
2.4.1 一些說明 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ù)位后取第一條指令的過程分析
51
3.5.1 復(fù)位信號有效階段 51
3.5.2 復(fù)位信號無效后的第一個時鐘周期上升沿 56
3.5.3 復(fù)位信號無效后的第一個時鐘周期的組合邏輯階段 57
3.6 第二條及后續(xù)指令的讀取過程分析 58
3.6.1 復(fù)位信號無效后的第二個時鐘周期的上升沿
58
3.6.2 復(fù)位信號無效后的第二個時鐘周期的組合邏輯階段 59
第4章 數(shù)據(jù)處理類指令剖析 61
4.1 數(shù)據(jù)處理類指令說明 61
4.2 分析用例
65
4.3 流水線的簡單模型
67
4.4 l.add指令分析
69
4.4.1 l.add取指階段的組合邏輯輸出
70
4.4.2 l.add取指階段的時序邏輯輸出
73
4.4.3 l.add譯碼階段的組合邏輯輸出
75
4.4.4 l.add譯碼階段的時序邏輯輸出
80
4.4.5 l.add執(zhí)行階段的組合邏輯輸出
91
4.4.6 l.add執(zhí)行階段的時序邏輯輸出
97
4.4.7 第一條指令分析小結(jié)
98
4.5 l.sfeqi指令分析 99
4.5.1 l.sfeqi取指階段的組合邏輯輸出 99
4.5.2 l.sfeqi取指階段的時序邏輯輸出 100
4.5.3 l.sfeqi譯碼階段的組合邏輯輸出 100
4.5.4 l.sfeqi譯碼階段的時序邏輯輸出 101
4.5.5 l.sfeqi執(zhí)行階段的組合邏輯輸出 102
4.5.6 l.sfeqi執(zhí)行階段的時序邏輯輸出 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章 特殊寄存器訪問類指令剖析
123
5.1 OR1200中的特殊寄存器 123
5.2 第0組特殊寄存器
125
5.3 特殊寄存器訪問類指令說明
127
5.4 分析用例
128
5.5 l.mfspr指令分析 130
5.5.1 l.mfspr取指階段的組合邏輯輸出 131
5.5.2 l.mfspr取指階段的時序邏輯輸出 132
5.5.3 l.mfspr譯碼階段的組合邏輯輸出 132
5.5.4 l.mfspr譯碼階段的時序邏輯輸出 133
5.5.5 l.mfspr執(zhí)行階段第1個時鐘周期的組合邏輯輸出
135
5.5.6 l.mfspr執(zhí)行階段第1個時鐘周期的時序邏輯輸出
138
5.5.7 l.mfspr執(zhí)行階段第2個時鐘周期的組合邏輯輸出
141
5.5.8 l.mfspr執(zhí)行階段第2個時鐘周期的時序邏輯輸出
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í)行階段的時序邏輯輸出 148
5.7 SPRS分析
148
5.8 完善流水線數(shù)據(jù)通路圖
155
第6章 轉(zhuǎn)移類指令剖析 157
6.1 延遲槽 157
6.2 轉(zhuǎn)移類指令說明 158
6.3 分析用例
159
6.4 l.bf指令分析 161
6.4.1 l.bf取指階段的組合邏輯輸出 162
6.4.2 l.bf取指階段的時序邏輯輸出 163
6.4.3 l.bf譯碼階段的組合邏輯輸出 164
6.4.4 l.bf譯碼階段的時序邏輯輸出 166
6.4.5 l.bf執(zhí)行階段第1個時鐘周期的組合邏輯輸出
169
6.4.6 l.bf執(zhí)行階段第2個時鐘周期的組合邏輯輸出
173
6.4.7 l.bf執(zhí)行階段第2個時鐘周期的時序邏輯輸出
174
6.4.8 l.bf指令分析小結(jié)
175
6.5 l.jalr指令分析
176
6.5.1 l.jalr取指階段的組合邏輯輸出
177
6.5.2 l.jalr取指階段的時序邏輯輸出
177
6.5.3 l.jalr譯碼階段的組合邏輯輸出
177
6.5.4 l.jalr譯碼階段的時序邏輯輸出
179
6.5.5 l.jalr執(zhí)行階段第1個時鐘周期的組合邏輯輸出 180
6.5.6 l.jalr執(zhí)行階段第2個時鐘周期的組合邏輯輸出 181
6.5.7 l.jalr執(zhí)行階段第2個時鐘周期的時序邏輯輸出 182
6.6 轉(zhuǎn)移類指令對處理器效率的影響
182
6.7 繼續(xù)完善流水線數(shù)據(jù)通路圖
183
第7章 異常處理類指令剖析 185
7.1 OR1200中的異常分類 185
7.2 OR1200中的異常處理過程 185
7.3 異常處理類指令說明 187
7.4 分析用例
187
7.5 EXCEPTION模塊的作用
190
7.6 l.sys指令分析
195
7.6.1 l.sys取指階段的組合邏輯輸出
196
7.6.2 l.sys取指階段的時序邏輯輸出
196
7.6.3 l.sys譯碼階段的組合邏輯輸出
197
7.6.4 l.sys譯碼階段的時序邏輯輸出
198
7.6.5 l.sys執(zhí)行階段的組合邏輯輸出
199
7.6.6 l.sys執(zhí)行階段的時序邏輯輸出
201
7.6.7 異常處理過程——FLU1狀態(tài) 207
7.6.8 異常處理過程——FLU2狀態(tài) 211
7.6.9 異常處理過程——FLU3狀態(tài) 212
7.6.10 異常處理過程——FLU4狀態(tài)
212
7.6.11 異常處理過程——FLU5狀態(tài)
213
7.6.12 l.sys分析小結(jié) 214
7.7 l.trap指令分析 215
7.7.1 l.trap譯碼階段的時序邏輯輸出
216
7.7.2 l.trap執(zhí)行階段的組合邏輯輸出
216
7.7.3 l.trap執(zhí)行階段的時序邏輯輸出
216
7.7.4 異常處理過程——FLU1狀態(tài) 217
7.7.5 異常處理過程——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取指階段的時序邏輯輸出
219
7.8.3 l.rfe譯碼階段的組合邏輯輸出
220
7.8.4 l.rfe譯碼階段的時序邏輯輸出
221
7.8.5 l.rfe執(zhí)行階段第1個時鐘周期的組合邏輯輸出 223
7.8.6 l.rfe執(zhí)行階段第2個時鐘周期的組合邏輯輸出 224
7.8.7 l.rfe執(zhí)行階段第2個時鐘周期的時序邏輯輸出 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 乘法、除法類指令說明
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取指階段的時序邏輯輸出
240
8.6.3 l.mul譯碼階段的組合邏輯輸出
240
8.6.4 l.mul譯碼階段的時序邏輯輸出
241
8.6.5 l.mul執(zhí)行階段第1個時鐘周期的組合邏輯輸出 243
8.6.6 l.mul執(zhí)行階段第1個時鐘周期的時序邏輯輸出 245
8.6.7 l.mul執(zhí)行階段第2個時鐘周期的組合邏輯輸出 247
8.6.8 l.mul執(zhí)行階段第2個時鐘周期的時序邏輯輸出 249
8.6.9 l.mul執(zhí)行階段第33個時鐘周期的時序邏輯輸出
250
8.6.10 l.mul執(zhí)行階段第34個時鐘周期的組合邏輯輸出
250
8.6.11 l.mul執(zhí)行階段第34個時鐘周期的時序邏輯輸出
252
8.6.12 l.mul執(zhí)行階段第35個時鐘周期的時序邏輯輸出
252
8.6.13 l.mul分析小結(jié) 252
8.7 l.mul指令分析(并行乘法)
253
8.7.1 l.mul執(zhí)行階段第1個時鐘周期的組合邏輯輸出(并行乘法) 253
8.7.2 l.mul執(zhí)行階段第1個時鐘周期的時序邏輯輸出(并行乘法) 254
8.7.3 l.mul執(zhí)行階段第2個時鐘周期的組合邏輯輸出(并行乘法) 255
8.7.4 l.mul執(zhí)行階段第2個時鐘周期的時序邏輯輸出(并行乘法) 256
8.7.5 l.mul執(zhí)行階段第3個時鐘周期的時序邏輯輸出(并行乘法) 256
8.7.6 l.mul執(zhí)行階段第4個時鐘周期的組合邏輯輸出(并行乘法) 256
8.7.7 l.mul執(zhí)行階段第4個時鐘周期的時序邏輯輸出(并行乘法) 257
8.7.8 l.mul執(zhí)行階段第5個時鐘周期的時序邏輯輸出(并行乘法) 257
8.7.9 l.mul分析小結(jié)(并行乘法) 257
8.8 l.mac指令分析 257
8.8.1 l.mac執(zhí)行階段第1個時鐘周期的組合邏輯輸出 259
8.8.2 l.mac執(zhí)行階段第1個時鐘周期的時序邏輯輸出 260
8.8.3 l.mac執(zhí)行階段第2個時鐘周期的組合邏輯輸出 261
8.8.4 l.mac執(zhí)行階段第2個時鐘周期的時序邏輯輸出 261
8.8.5 后l.mac執(zhí)行階段第1個時鐘周期的時序邏輯輸出 262
8.8.6 后l.mac執(zhí)行階段第2個時鐘周期的時序邏輯輸出 262
8.8.7 l.mac指令分析小結(jié) 263
8.9 l.div指令分析(串行除法)
263
8.10 繼續(xù)完善流水線數(shù)據(jù)通路圖 266
第9章 加載存儲類指令剖析 268
9.1 加載存儲類指令說明 268
9.2 分析用例
270
9.3 l.sb指令分析
274
9.3.1 l.sb取指階段的組合邏輯輸出 276
9.3.2 l.sb取指階段的時序邏輯輸出 276
9.3.3 l.sb譯碼階段的組合邏輯輸出 276
9.3.4 l.sb譯碼階段的時序邏輯輸出 278
9.3.5 l.sb執(zhí)行階段第1個時鐘周期的組合邏輯輸出 280
9.3.6 l.sb執(zhí)行階段第2個時鐘周期的組合邏輯輸出 286
9.3.7 l.sb執(zhí)行階段第2個時鐘周期的時序邏輯輸出 287
9.3.8 l.sb指令分析小結(jié) 287
9.4 l.lbs指令分析
288
9.4.1 l.lbs執(zhí)行階段第1個時鐘周期的組合邏輯輸出 290
9.4.2 l.lbs執(zhí)行階段第2個時鐘周期的組合邏輯輸出 291
9.4.3 l.lbs執(zhí)行階段第2個時鐘周期的時序邏輯輸出 294
9.4.4 l.lbs指令分析小結(jié) 294
9.5 對齊異常處理流程
295
9.6 三級流水線還是五級流水線
297
9.7 完整的流水線數(shù)據(jù)通路圖 298
第10章
MMU剖析 301
10.1 MMU的作用及工作過程 301
10.2 TLB的作用及工作過程
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命中且無頁錯誤情況下IMMU工作分析
324
10.3.8 IMMU使用情景之二——指令取指階段ITLB未命中情況下IMMU工作分析
329
10.3.9 IMMU使用情景之三——指令取指階段ITLB命中但有頁錯誤情況下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的一個簡單SOPC 340
11.1 簡單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基本知識 350
12.1.1 Cache的作用 350
12.1.2 Cache的結(jié)構(gòu)與工作過程
351
12.2 OR1200中Cache簡介
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