当前位置:主页 > 书籍配套资源 > CPU设计配套资源
《CPU设计实战》试验资源

《CPU设计实战》试验资源

  • 更新:2022-01-05
  • 大小:16 MB
  • 类别:CPU设计
  • 作者:汪文祥、邢金璋
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

本书系统介绍了CPU设计的发展过程、每个开发环节的知识要点、开发过程中需要注意的工程问题等。通过学习这本书,读者可以自己设计一个具有基本功能的CPU。这本书的内容是循序渐进的,从CPU设计的基础知识到简单流水线CPU的设计、多周期流水线中央处理器、缓存,并增加主频、运行Linux内核等高级功能,让读者逐渐掌握CPU设计的方法和要点。本书适用于大学计算机及相关专业计算机、对CPU开发感兴趣的读者也可以阅读计算机体系结构等课程的实用教材。

封面图

目录

  • 丛书序言
  • 前言
  • 第1章CPU芯片研发过程概述 1
  • 1.1处理器和处理器核 1
  • 1.2芯片产品的研制过程 2
  • 1.3芯片设计的工作阶段 3
  • 第2章硬件实验平台及FPGA设计流程 5
  • 2.1硬件实验平台 5
  • 2.1.1龙芯CPU设计与体系结构教学实验系统 5
  • 2.1.2龙芯计算机系统能力培养远程实验平台 7
  • 2.2FPGA的设计流程 8
  • 2.2.1FPGA的一般设计流程 9
  • 2.2.2基于Vivado的FPGA设计流程 10
  • 2.2.3Vivado使用小贴士 33
  • 2.3任务与实践 35
  • 第3章数字逻辑电路设计基础 36
  • 3.1数字逻辑电路设计与Verilog代码开发 36
  • 3.1.1面向硬件电路的设计思维方式 37
  • 3.1.2行为描述的Verilog编程风格 38
  • 3.1.3自顶向下的设计划分过程 38
  • 3.1.4常用数字逻辑电路的Verilog描述 39
  • 3.2数字逻辑电路功能仿真的常见错误及其调试方法 55
  • 3.2.1功能仿真波形分析 56
  • 3.2.2波形异常类错误的调试 60
  • 3.3进一步使用Vivado 66
  • 3.3.1定制同步RAM IP核 66
  • 3.3.2定制异步RAM IP核 68
  • 3.3.3查看时序结果和资源利用率 69
  • 3.4任务与实践 69
  • 3.4.1实践任务一:寄存器堆仿真 70
  • 3.4.2实践任务二:同步RAM和异步RAM仿真、综合与实现 71
  • 3.4.3实践任务三:数字逻辑电路的设计与调试 72
  • 第4章简单流水线CPU设计 74
  • 4.1设计一个简单的单周期CPU 75
  • 4.1.1设计单周期CPU的总体思路 75
  • 4.1.2单周期CPU的数据通路设计 76
  • 4.1.3单周期CPU的控制信号生成 88
  • 4.1.4复位的处理 91
  • 4.2不考虑相关冲突的流水线CPU设计 92
  • 4.2.1添加流水级间缓存 92
  • 4.2.2同步RAM的引入 93
  • 4.2.3调整更新PC的数据通路 96
  • 4.2.4不考虑相关冲突情况下流水线控制信号的设计 96
  • 4.3CPU设计开发环境(CPU_CDE) 97
  • 4.3.1快速上手CPU设计的开发环境 97
  • 4.3.2CPU设计开发环境的组织与结构 99
  • 4.3.3CPU设计开发环境使用进阶 113
  • 4.4CPU设计的功能仿真调试技术 117
  • 4.4.1为什么要用基于Trace比对的调试辅助手段 117
  • 4.4.2基于Trace比对调试手段的盲区及其对策 119
  • 4.4.3学会阅读汇编程序和反汇编代码 119
  • 4.4.4CPU调试中要抓取的信号以及如何看这些信号 124
  • 4.5指令相关与流水线冲突 125
  • 4.5.1处理寄存器写后读数据相关引发的流水线冲突 126
  • 4.5.2转移计算未完成 127
  • 4.6流水线数据的前递设计 127
  • 4.6.1前递的数据通路设计 128
  • 4.6.2前递的流水线控制信号调整 130
  • 4.6.3前递引发的主频下降 131
  • 4.7任务与实践 131
  • 4.7.1实践任务一:简单CPU参考设计调试 132
  • 4.7.2实践任务二:用阻塞技术解决相关引发的冲突 132
  • 4.7.3实践任务三:用前递技术解决相关引发的冲突 133
  • 第5章在流水线中添加运算类指令 134
  • 5.1算术逻辑运算类指令的添加 134
  • 5.1.1ADD、ADDI和SUB指令的添加 134
  • 5.1.2SLTI和SLTIU指令的添加 135
  • 5.1.3ANDI、ORI和XORI指令的添加 135
  • 5.1.4SLLV、SRLV和SRAV指令的添加 135
  • 5.2乘除法运算类指令的添加 136
  • 5.2.1调用Xilinx IP实现乘除法运算部件 136
  • 5.2.2电路级实现乘法器 140
  • 5.2.3电路级实现除法器 147
  • 5.3乘除法配套数据搬运指令的添加 154
  • 5.3.1乘法运算实现为单周期的情况 155
  • 5.3.2乘法运算实现为多周期流水的情况 155
  • 5.4任务与实践 156
  • 第6章在流水线中添加转移指令和访存指令 157
  • 6.1转移指令的添加 157
  • 6.1.1BGEZ、BGTZ、BLEZ和BLTZ指令 158
  • 6.1.2J指令 158
  • 6.1.3BLTZAL和BGEZAL指令 158
  • 6.1.4JALR指令 158
  • 6.2访存指令的添加 158
  • 6.2.1LB、LBU、LH和LHU指令的添加 158
  • 6.2.2SB和SH指令的添加 159
  • 6.2.3非对齐访存指令的说明 160
  • 6.2.4LWL和LWR指令的添加 162
  • 6.2.5SWL和SWR指令的添加 164
  • 6.3任务与实践 164
  • 第7章例外和中断的支持 166
  • 7.1例外和中断的基本概念 166
  • 7.1.1例外是一套软硬件协同处理的机制 166
  • 7.1.2精确例外 167
  • 7.2MIPS指令系统中与例外相关的功能定义 168
  • 7.2.1CP0寄存器 168
  • 7.2.2例外产生条件的判定 168
  • 7.2.3例外入口 170
  • 7.2.4MFC0和MTC0指令 170
  • 7.2.5ERET指令 170
  • 7.3流水线CPU实现例外和中断的设计要点 170
  • 7.3.1例外检测逻辑 170
  • 7.3.2精确例外的实现 172
  • 7.3.3CP0寄存器 173
  • 7.3.4CP0冲突 179
  • 7.4任务与实践 180
  • 7.4.1实践任务一:添加syscall例外支持 181
  • 7.4.2实践任务二:添加其他例外支持 181
  • 第8章AXI总线接口设计 184
  • 8.1类SRAM总线 184
  • 8.1.1主方和从方 185
  • 8.1.2类SRAM总线接口信号的定义 185
  • 8.1.3类SRAM总线的读写时序 186
  • 8.1.4类SRAM总线的约束 189
  • 8.2类SRAM总线的设计 189
  • 8.2.1取指设计的考虑 190
  • 8.2.2访存设计的考虑 195
  • 8.3AXI总线协议 195
  • 8.3.1AXI总线信号一览 195
  • 8.3.2理解AXI总线协议 197
  • 8.3.3类SRAM总线接口信号与AXI总线接口信号的关系 202
  • 8.4类SRAM-AXI的转接桥设计 203
  • 8.4.1转接桥的顶层接口 203
  • 8.4.2转接桥的设计要求 204
  • 8.4.3转接桥的设计建议 204
  • 8.5任务与实践 205
  • 8.5.1实践任务一:添加类SRAM总线支持 205
  • 8.5.2实践任务二:添加AXI总线支持 208
  • 8.5.3实践任务三:完成AXI随机延迟验证 210
  • 第9章TLB MMU设计 211
  • 9.1TLB模块的基础知识 212
  • 9.1.1TLB的虚实地址转换 212
  • 9.1.2TLB的软件访问 214
  • 9.1.3TLB的软硬件交互机制 215
  • 9.2TLB模块设计的分析 217
  • 9.3TLB相关的CP0寄存器与指令的实现 219
  • 9.4利用TLB进行虚实地址转换及TLB例外 221
  • 9.5任务与实践 222
  • 9.5.1实践任务一:TLB模块设计 222
  • 9.5.2实践任务二:添加TLB相关指令和CP0寄存器 224
  • 9.5.3实践任务三:添加TLB相关例外支持 225
  • 第10章高速缓存设计 226
  • 10.1Cache模块的设计 227
  • 10.1.1Cache的设计规格 227
  • 10.1.2Cache模块的数据通路设计 228
  • 10.1.3Cache模块内部的控制逻辑设计 237
  • 10.1.4Cache的硬件初始化问题 241
  • 10.2将Cache模块集成至CPU中 242
  • 10.2.1Cache命中情况下的CPU流水线适配 242
  • 10.2.2Cache缺失情况下的CPU流水线适配 243
  • 10.2.3Uncache访问的处理 243
  • 10.3CACHE指令 245
  • 10.3.1CACHE指令的定义 245
  • 10.3.2CACHE指令的实现 247
  • 10.4性能测试程序 247
  • 10.4.1Dhrystone 247
  • 10.4.2Coremark 250
  • 10.5Cache的性能 251
  • 10.6任务与实践 252
  • 10.6.1实践任务一:Cache模块设计 252
  • 10.6.2实践任务二:在CPU中集成ICache 254
  • 10.6.3实践任务三:在CPU中集成DCache 255
  • 10.6.4实践任务四:在CPU中添加CACHE指令 256
  • 第11章进阶设计 258
  • 11.1运行Linux内核 258
  • 11.1.1复杂SoC搭建 259
  • 11.1.2CPU的进一步完善 259
  • 11.1.3调试建议 260
  • 11.2提升主频的常用方法 261
  • 11.2.1平衡各级流水线的延迟 261
  • 11.2.2优化大概率事件的处理逻辑 261
  • 11.2.3用面积和功耗换时序 262
  • 11.2.4进一步切分流水线 262
  • 11.3静态双发射流水线的实现 262
  • 11.4动态调度机制的实现 263
  • 11.4.1一个双发射动态调度流水线的设计实例 263
  • 11.4.2动态调度中常见电路结构的RTL实现 266
  • 11.5硬件转移预测技术 266
  • 11.5.1硬件转移预测的流水线设计框架 267
  • 11.5.2一个轻量级转移预测器的设计规格 268
  • 11.6访存优化技术 269
  • 11.6.1store buffer 269
  • 11.6.2Non-blocking Cache 270
  • 11.6.3访存乱序执行 271
  • 11.6.4多级Cache 271
  • 11.6.5Cache预取 272
  • 11.7多核处理器的实现 272
  • 11.7.1多核互联结构 273
  • 11.7.2多核编号 273
  • 11.7.3核间中断 273
  • 11.7.4多核情况下的存储一致性 274
  • 11.7.5LL-SC指令对的访存原子性 282
  • 附录A龙芯CPU设计与体系结构教学实验系统 285
  • 附录BVivado的安装 288
  • 附录C简单MIPS指令系统规范 301
  • 附录DVivado使用进阶 345

资源下载

资源下载地址1:https://pan.baidu.com/s/1n-7TiUrH5PVU5qVSM-iXNg

相关资源

网友留言