zoukankan      html  css  js  c++  java
  • 步步惊“芯”——软核处理器内部设计分析

    《步步惊“芯”——软核处理器内部设计分析》
    基本信息
    作者: 雷思磊
    出版社:电子工业出版社
    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
    图书信息来源:互动出版网
  • 相关阅读:
    UISearchBar的常用代理
    iOS 上传图片压缩大小设置
    __weak typeof(self)weakSelf = self;的解释和使用
    运动事件(MotionEvent)
    iOS 获取当前window
    保留小数
    ios 转图片
    iOS提示弹窗
    iOS 获取ip地址
    微信小程序 watch监听数据变化 类似vue中的watch
  • 原文地址:https://www.cnblogs.com/china-pub/p/3152891.html
Copyright © 2011-2022 走看看