步步惊“芯”

出版社:电子工业出版社
出版日期:2013-7
ISBN:9787121204890
作者:雷思磊
页数:500页

作者简介

本书以开源32位软核处理器OR1200为研究对象,像引导读者如做解剖学实验那般,对其进行剖析,力图使读者对教科书上介绍的处理器有一个实践上的认识,打破处理器令人高深莫测的印象,同时使读者了解处理器设计的细节。OR1200包括CPU、MMU、Cache、总线接口、电源管理、中断控制和计时器单元等多个模块,对于不同的模块,根据其难易程度,采用指令驱动分析法、情景分析法及直接分析源代码等不同的分析方法,便于读者理解。
通过阅读本书,读者可以掌握一款成熟的软核处理器OR1200的设计思路、实现方法,同时更加深刻、具体地理解计算机组成原理、计算机体系结构等课程介绍的知识。
本书适合计算机专业的学生、FPGA开发人员、处理器设计者、嵌入式系统应用开发工程师、对处理器内部实现感兴趣的读者及对这个世界充满好奇心的读者阅读,也可以作为高等院校计算机组成原理、计算机体系结构等课程的实践参考书。

书籍目录

第1章OpenRISC介绍
1
1.1 开源软核处理器
1
1.2 OpenRISC 1000架构
4
1.3 OR1200——OpenRISC 1000架构的一个实现
4
1.3.1 寻址模式
5
1.3.2 位和字节次序
6
1.3.3 寄存器集
6
1.3.4 指令集
7
1.3.5 异常模型
8
1.4 OR1200代码组织
8
1.5 本书的分析方法
11
第2章 实验环境的搭建
13
2.1 GNU开发工具链的安装
13
2.2 GNU开发工具链的使用
18
2.2.1 一个简单的汇编程序
18
2.2.2 编译及ELF文件介绍
19
2.2.3 链接
21
2.2.4 Makefile文件
23
2.2.5 使用OR1KSim模拟器运行程序
24
2.3 创建OR1200运行的最小系统
25
2.3.1 最小系统的创建
26
2.3.2 运行仿真
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的内部RAM
49
3.5 复位后取第一条指令的过程分析
51
3.5.1 复位信号有效阶段
51
3.5.2 复位信号无效后的第一个时钟周期上升沿
56
3.5.3 复位信号无效后的第一个时钟周期的组合逻辑阶段
57
3.6 第二条及后续指令的读取过程分析
58
3.6.1 复位信号无效后的第二个时钟周期的上升沿
58
3.6.2 复位信号无效后的第二个时钟周期的组合逻辑阶段
59
第4章 数据处理类指令剖析
61
4.1 数据处理类指令说明
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执行阶段的组合逻辑输出
91
4.4.6 l.add执行阶段的时序逻辑输出
97
4.4.7 第一条指令分析小结
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执行阶段的组合逻辑输出
102
4.5.6 l.sfeqi执行阶段的时序逻辑输出
105
4.5.7 第二条指令分析小结
106
4.6 ALU分析
106
4.7 流水线数据相关的解决方法
112
4.8 定制属于自己的指令
117
4.9 不完整流水线数据通路图
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执行阶段第1个时钟周期的组合逻辑输出
135
5.5.6 l.mfspr执行阶段第1个时钟周期的时序逻辑输出
138
5.5.7 l.mfspr执行阶段第2个时钟周期的组合逻辑输出
141
5.5.8 l.mfspr执行阶段第2个时钟周期的时序逻辑输出
144
5.5.9 l.mfspr指令分析小结
144
5.6 l.mtspr指令分析
145
5.6.1 l.mtspr执行阶段的组合逻辑输出
147
5.6.2 l.mtspr执行阶段的时序逻辑输出
148
5.7 SPRS分析
148
5.8 完善流水线数据通路图
155
第6章 转移类指令剖析
157
6.1 延迟槽
157
6.2 转移类指令说明
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执行阶段第1个时钟周期的组合逻辑输出
169
6.4.6 l.bf执行阶段第2个时钟周期的组合逻辑输出
173
6.4.7 l.bf执行阶段第2个时钟周期的时序逻辑输出
174
6.4.8 l.bf指令分析小结
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执行阶段第1个时钟周期的组合逻辑输出
180
6.5.6 l.jalr执行阶段第2个时钟周期的组合逻辑输出
181
6.5.7 l.jalr执行阶段第2个时钟周期的时序逻辑输出
182
6.6 转移类指令对处理器效率的影响
182
6.7 继续完善流水线数据通路图
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执行阶段的组合逻辑输出
199
7.6.6 l.sys执行阶段的时序逻辑输出
201
7.6.7 异常处理过程——FLU1状态
207
7.6.8 异常处理过程——FLU2状态
211
7.6.9 异常处理过程——FLU3状态
212
7.6.10 异常处理过程——FLU4状态
212
7.6.11 异常处理过程——FLU5状态
213
7.6.12 l.sys分析小结
214
7.7 l.trap指令分析
215
7.7.1 l.trap译码阶段的时序逻辑输出
216
7.7.2 l.trap执行阶段的组合逻辑输出
216
7.7.3 l.trap执行阶段的时序逻辑输出
216
7.7.4 异常处理过程——FLU1状态
217
7.7.5 异常处理过程——FLU2状态
217
7.7.6 l.trap分析小结
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执行阶段第1个时钟周期的组合逻辑输出
223
7.8.6 l.rfe执行阶段第2个时钟周期的组合逻辑输出
224
7.8.7 l.rfe执行阶段第2个时钟周期的时序逻辑输出
225
7.9 继续完善流水线数据通路图
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中关于乘法、除法的一些配置
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执行阶段第1个时钟周期的组合逻辑输出
243
8.6.6 l.mul执行阶段第1个时钟周期的时序逻辑输出
245
8.6.7 l.mul执行阶段第2个时钟周期的组合逻辑输出
247
8.6.8 l.mul执行阶段第2个时钟周期的时序逻辑输出
249
8.6.9 l.mul执行阶段第33个时钟周期的时序逻辑输出
250
8.6.10 l.mul执行阶段第34个时钟周期的组合逻辑输出
250
8.6.11 l.mul执行阶段第34个时钟周期的时序逻辑输出
252
8.6.12 l.mul执行阶段第35个时钟周期的时序逻辑输出
252
8.6.13 l.mul分析小结
252
8.7 l.mul指令分析(并行乘法)
253
8.7.1 l.mul执行阶段第1个时钟周期的组合逻辑输出(并行乘法)
253
8.7.2 l.mul执行阶段第1个时钟周期的时序逻辑输出(并行乘法)
254
8.7.3 l.mul执行阶段第2个时钟周期的组合逻辑输出(并行乘法)
255
8.7.4 l.mul执行阶段第2个时钟周期的时序逻辑输出(并行乘法)
256
8.7.5 l.mul执行阶段第3个时钟周期的时序逻辑输出(并行乘法)
256
8.7.6 l.mul执行阶段第4个时钟周期的组合逻辑输出(并行乘法)
256
8.7.7 l.mul执行阶段第4个时钟周期的时序逻辑输出(并行乘法)
257
8.7.8 l.mul执行阶段第5个时钟周期的时序逻辑输出(并行乘法)
257
8.7.9 l.mul分析小结(并行乘法)
257
8.8 l.mac指令分析
257
8.8.1 l.mac执行阶段第1个时钟周期的组合逻辑输出
259
8.8.2 l.mac执行阶段第1个时钟周期的时序逻辑输出
260
8.8.3 l.mac执行阶段第2个时钟周期的组合逻辑输出
261
8.8.4 l.mac执行阶段第2个时钟周期的时序逻辑输出
261
8.8.5 后l.mac执行阶段第1个时钟周期的时序逻辑输出
262
8.8.6 后l.mac执行阶段第2个时钟周期的时序逻辑输出
262
8.8.7 l.mac指令分析小结
263
8.9 l.div指令分析(串行除法)
263
8.10 继续完善流水线数据通路图
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执行阶段第1个时钟周期的组合逻辑输出
280
9.3.6 l.sb执行阶段第2个时钟周期的组合逻辑输出
286
9.3.7 l.sb执行阶段第2个时钟周期的时序逻辑输出
287
9.3.8 l.sb指令分析小结
287
9.4 l.lbs指令分析
288
9.4.1 l.lbs执行阶段第1个时钟周期的组合逻辑输出
290
9.4.2 l.lbs执行阶段第2个时钟周期的组合逻辑输出
291
9.4.3 l.lbs执行阶段第2个时钟周期的时序逻辑输出
294
9.4.4 l.lbs指令分析小结
294
9.5 对齐异常处理流程
295
9.6 三级流水线还是五级流水线
297
9.7 完整的流水线数据通路图
298
第10章 MMU剖析
301
10.1 MMU的作用及工作过程
301
10.2 TLB的作用及工作过程
303
10.3 IMMU分析
305
10.3.1 IMMU结构
305
10.3.2 IMMU中的特殊寄存器
307
10.3.3 OR1200中关于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执行阶段IMMU工作分析
333
10.3.11 IMMU使用情景之五——l.mfspr执行阶段IMMU工作分析
335
10.3.12 IMMU分析小结
336
10.4 DMMU分析
336
10.4.1 DTLB结构图
337
10.4.2 DMMU中的特殊寄存器
337
10.4.3 DMMU使用情景
338
第11章 基于OR1200的一个简单SOPC
340
11.1 简单SOPC的结构
340
11.2 Wishbone总线互联矩阵WB_CONMAX
341
11.3 挂接在互联矩阵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的结构与工作过程
351
12.2 OR1200中Cache简介
352
12.3 ICache结构
353
12.3.1 ICache模块与其余模块的连接关系
353
12.3.2 ICache中数据部分
354
12.3.3 ICache中控制部分
356
12.3.4 ICache数据部分与控制部分的对外接口
357
12.4 ICache中的特殊寄存器
358
12.5 ICache使用情景
358
12.6 分析用例
359
12.7 ICache使用情景之一——l.mtspr执行阶段ICache工作分析
364
12.7.1 执行阶段的组合逻辑输出
364
12.7.2 执行阶段的时序逻辑输出
364
12.8 ICache使用情景之二——指令取指阶段ICache失靶情况下ICache工作分析
365
12.8.1 第1个时钟周期的组合逻辑输出
365
12.8.2 第1个时钟周期的时序逻辑输出
368
12.8.3 第2个时钟周期的组合逻辑输出
370
12.8.4 第2个时钟周期的时序逻辑输出
371
12.8.5 第n个时钟周期的组合逻辑输出
373
12.8.6 第n个时钟周期的时序逻辑输出
373
12.8.7 第n+1个时钟周期的组合逻辑输出
375
12.8.8 第2n个时钟周期的组合逻辑输出
376
12.8.9 第2n个时钟周期的时序逻辑输出
377
12.8.10 第2n+1个时钟周期的组合逻辑输出
378
12.8.11 第3n个时钟周期的组合逻辑输出
379
12.8.12 第3n个时钟周期的时序逻辑输出
379
12.8.13 第3n+1个时钟周期的组合逻辑输出
379
12.8.14 第4n个时钟周期的组合逻辑输出
379
12.8.15 第4n个时钟周期的时序逻辑输出
380
12.8.16 第4n+1个时钟周期的组合逻辑输出
380
12.8.17 ICache失靶时工作过程小结
381
12.9 ICache使用情景之三——指令取指阶段ICache命中情况下ICache工作分析
381
12.9.1 第1个时钟周期的组合逻辑输出
382
12.9.2 第1个时钟周期的时序逻辑输出
382
12.9.3 第2个时钟周期的组合逻辑输出
383
12.10 ICache使用情景之四——指令取指阶段内存页禁止缓存情况下ICache工作分析
384
12.10.1 第1个时钟周期的组合逻辑输出
384
12.10.2 第1个时钟周期的时序逻辑输出
385
12.10.3 第2个时钟周期的组合逻辑输出
385
12.10.4 第2个时钟周期的时序逻辑输出
386
12.10.5 第3个时钟周期的组合逻辑输出
386
12.10.6 第n个时钟周期的组合逻辑输出
387
12.10.7 第n个时钟周期的时序逻辑输出
387
第13章 DCache剖析
389
13.1 DCache的特别之处
389
13.2 DCache结构
390
13.2.1 DCache模块与其余模块的连接关系
391
13.2.2 DCache中数据部分
392
13.2.3 DCache中控制部分
394
13.2.4 DCache数据部分与控制部分的对外接口
395
13.3 DCache中的特殊寄存器
396
13.4 DCache使用情景
397
13.5 分析用例
398
13.5.1 修改已有的简单SOPC
398
13.5.2 分析用例
398
13.6 DMMU地址翻译
405
13.7 DCache使用情景之一——存储指令执行阶段DCache失靶
405
13.7.1 通写法下DCache工作过程分析
406
13.7.2 回写法下DCache工作过程分析
413
13.8 DCache使用情景之二——存储指令执行阶段DCache命中
422
13.8.1 通写法下DCache工作过程分析
422
13.8.2 回写法下DCache工作过程分析
424
13.9 DCache使用情景之三——l.mtspr指令写DCache中特殊寄存器
427
13.9.1 通写法策略下指令l.mtspr写DCBIR、DCBFR的过程分析
428
13.9.2 回写法策略下指令l.mtspr写DCBIR的过程分析
429
13.9.3 回写法策略下指令l.mtspr写DCBWR的过程分析
431
13.9.4 回写法策略下指令l.mtspr写DCBFR的过程分析
437
13.10 DCache分析小结
438
第14章 Store Buffer(SB)剖析
440
14.1 SB模块的作用与工作过程
440
14.2 SB模块的结构
441
14.2.1 SB模块的对外连接关系
441
14.2.2 SB模块内部结构
442
14.2.3 SB模块有关的宏定义
442
14.3 示例程序
442
14.4 SB模块代码分析
444
14.4.1 FIFO分析
444
14.4.2 SB分析
447
第15章 WB_BIU剖析
450
15.1 WB_BIU模块的对外连接关系
450
15.2 Wishbone寄存反馈总线周期
451
15.3 WB_BIU代码分析
454
15.3.1 WB_BIU中的有限状态机
455
15.3.2 总线时钟与处理器时钟不同时的处理代码
462
第16章 PM、TT、PIC剖析
466
16.1 电源管理模块PM分析
466
16.1.1 PM介绍
466
16.1.2 PM模块的对外连接关系、特殊寄存器及相关宏定义
466
16.1.3 PM代码分析
468
16.2 计时器单元TT分析
471
16.2.1 TT介绍
471
16.2.2 TT的对外连接关系及相关宏定义
472
16.2.3 TT代码分析
473
16.2.4 计时器中断响应过程
475
16.3 可编程中断控制器PIC分析
477
16.3.1 PIC介绍
477
16.3.2 PIC的对外连接关系及相关宏定义
478
16.3.3 PIC代码分析
479

内容概要

雷思磊,理工男,好静,倡导低碳生活,常以环保人士自居,喜读书,自幼笃信“博观而约取厚积而薄发”,是故,所读书籍甚为驳杂,年近而立,尚不确定根本兴趣目标,一日,驻足书架之前,细览所读书籍,惊觉随岁月增长,关注点依次从应用编程、操作系统、驱动设计转移至处理器结构,此一脉络极其清晰,遂如醍醐灌顶,幡然醒悟,原来余根本兴趣目标在“底层”,在于从根本上理解世界之运行,遂耗数年时间钻研处理器工作原理,乃有些微收获,拙作当为数年辛苦之小结,然学无止境,科技发展亦日新月异,唯有持续钻研,方能大成,屈子曰:路漫漫其修远兮,吾将上下而求索。此言甚是,余定谨记而遵行之。


 步步惊“芯”下载



发布书评

 
 


精彩短评 (总计1条)

  •     让我顺利毕业吧!
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024