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