本篇主要提供CPU设计实战计算机硬件与维护剖析CPU设计开发构建完善CPUCPU芯片研发凤凰新华书店旗舰店电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
本书面向初学者,以实战的方式带领读者了解CPU设计的流程,并从零开始逐步开发出自己的CPU。本书将计算机组成与体系结构的理论知识和工业实践充分结合,使读者在实际的CPU设计与开发过程中更加深入地理解计算机系统的工作原理,掌握CPU设计理念、方法和技术。
本书共分为三个部分,第一部分介绍CPU的研发过程以及FPGA、数字逻辑电路等相关知识;第二部分先介绍简单流水线CPU设计,在此基础上添加指令、例外、中断、总线、高速缓存等功能,完成一个具有基本功能的CPU;第三部分介绍如何增加各种高级功能,最终形成一个具有丰富功能的CPU。
本书深入浅出、层次清晰,并融入了典型的CPU开发相关的技术问题,既可以作为高等院校计算机及相关专业本科生和研究生的CPU开发类课程的教材,也可以作为从事CPU相关研发工作的专业人员的参考书。
汪文祥 工学博士,龙芯中科技术股份有限公司首席工程师,中国科学院大学岗位教授。主要研究方向为处理器体系结构设计、处理器验证及计算机系统性能分析优化等,参与了多项国家“核高基”、863 和 973 项目,在国内外各种期刊会议发表文章十余篇,申请专利数十项,授权专利十余项。2012年起任龙芯中科芯片研发部IP组组长,负责龙芯系列CPU IP核的开发研制及维护,参与制订龙芯指令系统架构规范。
邢金璋 硕士毕业于中国科学院计算技术研究所,2015年加入龙芯中科技术股份有限公司,从事处理器核结构设计工作,是龙芯小、中系列处理器核演进版本的主要结构设计者之一。近年来,积极参与“龙芯杯”全国大学生计算机系统能力培养大赛的技术支持、培训等工作。
作者深谙系统类课程实践教学中的痛点和难点,本书很多素材来源于作者在教学中的实践和思考。这套实践方案很好地将理论课程中离散的知识点熔接为一套系统化的知识体系,从而有助于提升教学质量。
—— 高小鹏(北京航空航天大学教授,教育部高等学校计算机类专业教学指导委员会副秘书长)
本书两位作者一位是龙芯公司的首席工程师,另一位是芯片研发部技术骨干,他们长期奋战在CPU开发一线,拥有丰富的开发经验。很高兴看到他们将自己多年的工程经验分享出来,编写了这本CPU实战图书。相信这本书能帮助所有对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
读写时序 186
......