《步步惊“芯”——软核处理器内部设计分析》
基本信息
作者: 雷思磊
出版社:电子工业出版社
ISBN:9787121204890
上架时间:2013-6-22
出版日期:2013 年7月
开本:16开
页码:500
版次:1-1
所属分类:计算机 > 计算机组织与体系结构 > 微处理器/CPU
更多关于 》》》《步步惊“芯”——软核处理器内部设计分析》
内容简介
计算机书籍
《步步惊“芯”——软核处理器内部设计分析》以开源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 修改makefile30
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的内部ram49
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的一个简单sopc340
11.1 简单sopc的结构340
11.2 wishbone总线互联矩阵wb_conmax341
11.3 挂接在互联矩阵wb_conmax下的ram模块342
11.4 sopc顶层文件344
11.5 modelsim新建工程min_or1200_sopc346
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 修改已有的简单sopc398
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
相关推荐
### 步步惊“芯”-软核处理器内部设计分析 #### 一、软核处理器简介 软核处理器(Soft Core Processor)是一种可编程的处理器设计方案,与硬核处理器(Hard Core Processor)不同,它不是通过专用硬件实现的,而是...
10. **实际应用**:了解CPU设计后,你可以参与嵌入式系统、微控制器、高性能计算等领域的工作,或者深入研究多核处理器、GPU等复杂系统。 学习CPU设计是一个系统性的工程,需要深厚的数字电路基础、计算机体系结构...
今天,我们一起来探索这个神奇的信息技术王国,寻找那些熟悉而又充满神秘感的朋友们——了解信息技术设备。 首先,让我们来解答一个基本的问题:什么是信息技术?简单来说,信息技术就是利用各种现代技术手段来获取...
而Intel处理器则采用点面接触式设计,主板插槽上有两个凸起部分,用户需要将处理器上的两个缺口对准这两个凸起部分,然后按压处理器直至扣紧。 安装内存则是另一项技术活。随着技术的不断进步,目前市面中的内存...
计算机组成原理是计算机科学与技术领域的基础课程,它揭示了计算机硬件系统的内部构造和工作原理。在本实验软件HQFC-B1中,我们将深入探讨这个领域的核心知识点,帮助用户理解和掌握计算机的基本构成和运行机制。 ...
这一过程涉及多个阶段,包括词法分析、语法分析、语义分析以及目标代码生成等。了解这些编译原理不仅有助于编写更高效的代码,还能帮助解决编程过程中遇到的各种问题。 #### 四、了解编译系统的工作原理至关重要 ...
STM32系列处理器内部集成了一个固化的In-System Programming (ISP) 程序。当启动时,STM32会检查两个特殊引脚 BOOT0 和 BOOT1 的状态。如果 BOOT0 引脚为高电平(1),而 BOOT1 引脚为低电平(0),那么STM32就会...