书籍详情

步步惊芯:软核处理器内部设计分析

步步惊芯:软核处理器内部设计分析

作者:雷思磊 著

出版社:电子工业出版社

出版时间:2013-07-01

ISBN:9787121204890

定价:¥75.00

购买这本书可以去
内容简介
  本书以开源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

猜您喜欢