网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | CPU设计实战:LOONGARCH版 |
分类 | |
作者 | 汪文祥 邢金璋 |
出版社 | 机械工业出版社 |
下载 | |
简介 | 编辑推荐 本书深入浅出地介绍了如何从零开始一步步设计出一个入门级的CPU,以及在这个过程中应该掌握哪些知识、遵守哪些设计原则、规避哪些设计风险、可以使用哪些开发技巧。全书从逻辑上分为三个部分。第一部分(第1~3章)介绍产业界进行CPU研发的过程以及本地与远程 FPGA实验平台、FPGA上板实现、Verilog应用实例等CPU设计中必要的基础知识。第二部分(第4~10章)从一个仅实现5条指令的单周期CPU设计开始,逐步引入流水线设计,添加指令,增加异常和中断的支持,并完成AXI总线接口、TLB MMU 和高速缓存的设计与实现,最终完成一个入门级的CPU的设计。第三部分(第11、12章)为准备进阶设计的读者给出一些指导和建议,包括进阶实验开发环境与常用的设计优化方案。 内容推荐 本书深入浅出地介绍了如何从零开始一步步设计出一个入门级的CPU,以及在这个过程中应该掌握哪些知识、遵守哪些设计原则、规避哪些设计风险、可以使用哪些开发技巧。全书从逻辑上分为三个部分,第一部分(第1~3章)介绍产业界进行CPU研发的过程以及本地与远程 FPGA实验平台、FPGA上板实现、Verilog应用实例等CPU设计中必要的基础知识。第二部分(第4~10章)从一个仅实现5条指令的单周期CPU设计开始,逐步引入流水线设计,添加指令,增加异常和中断的支持,并完成AXI总线接口、TLB MMU 和高速缓存的设计与实现,最终完成一个入门级的CPU的设计。第三部分(第11~12章)为准备进阶设计的读者给出一些指导和建议,包括进阶实验开发环境与常用的设计优化方案。本书适合作为高校计算机及相关专业计算机组成、计算机体系结构等课程的实践教材,也可供对CPU设计感兴趣的相关技术人员阅读。 目录 目 录<br />序<br />前言<br />第1章 CPU芯片研发过程概述 1<br />1.1 处理器和处理器核 1<br />1.2 芯片产品的研制过程 2<br />1.3 芯片设计的工作阶段 3<br />第2章 硬件实验平台及FPGA<br />设计流程 5<br />2.1 硬件实验平台 5<br />2.1.1 龙芯CPU设计与体系结构<br />教学实验系统 5<br />2.1.2 龙芯普及型系统能力培养<br />远程实验平台 8<br />2.2 FPGA的设计流程 9<br />2.2.1 FPGA的一般设计流程 9<br />2.2.2 基于Vivado的FPGA<br />实现流程 11<br />2.2.3 Vivado使用小贴士 12<br />2.3 任务与实践 13<br />2.3.1 本书配套实验环境 13<br />2.3.2 实践任务1:跑马灯 14<br />第3章 数字逻辑电路设计基础 15<br />3.1 数字逻辑电路设计与Verilog<br />代码开发 15<br />3.1.1 面向硬件电路的设计思维<br />方式 16<br />3.1.2 自顶向下的设计划分<br />过程 17<br />3.1.3 行为描述的Verilog编程<br />风格 18<br />3.1.4 常用数字逻辑电路的<br />Verilog描述 19<br />3.2 数字逻辑电路功能仿真的常见<br />错误及调试方法 36<br />3.2.1 功能仿真波形分析 37<br />3.2.2 波形异常类错误的调试 43<br />3.3 任务与实践 49<br />3.3.1 实践任务2:寄存器堆<br />仿真 49<br />3.3.2 实践任务3:同步RAM<br />和异步RAM仿真、综合<br />与实现 50<br />3.3.3 实践任务4:数字逻辑<br />电路的设计与调试 52<br />第4章 单周期CPU设计 54<br />4.1 设计一个5条指令的单周期<br />CPU 55<br />4.1.1 设计CPU的总体思路 55<br />4.1.2 5条指令单周期CPU数据<br />通路设计 57<br />4.1.3 5条指令单周期CPU控制<br />信号生成 69<br />4.2 验证5条指令的单周期CPU 71<br />4.2.1 5条指令单周期CPU实验<br />开发环境快速上手 71<br />4.2.2 minicpu_env实验开发<br />环境组织结构介绍 73<br />4.2.3 功能仿真验证 73<br />4.3 设计一个20条指令的单周期<br />CPU 75<br />4.3.1 新增ALU类指令的数据<br />通路设计 76<br />4.3.2 新增Branch类指令的<br />数据通路设计 80<br />4.3.3 新增指令后控制信号的<br />调整 83<br />4.4 验证20条指令的单周期<br />CPU 87<br />4.4.1 mycpu_env实验开发<br />环境组织结构介绍 88<br />4.4.2 基于trace比对的调试<br />框架 89<br />4.4.3 func功能测试程序 93<br />4.4.4 基于mycpu_env实验<br />开发环境的实验流程 102<br />4.4.5 mycpu_env实验开发<br />环境使用进阶 104<br />4.5 CPU设计实验功能仿真调试<br />技术 106<br />4.5.1 为什么要用基于trace<br />比对的调试辅助手段 106<br />4.5.2 基于trace比对调试手段<br />的“盲区”及对策 107<br />4.5.3 学会阅读汇编程序和<br />反汇编代码 108<br />4.6 任务与实践 113<br />4.6.1 实践任务5:5条指令<br />单周期CPU 114<br />4.6.2 实践任务6:20条指令<br />单周期CPU 114<br />第5章 简单流水线CPU设计 116<br />5.1 不考虑相关冲突的流水线CPU<br />设计 117<br />5.1.1 添加流水级间缓存 117<br />5.1.2 同步读RAM的引入 118<br />5.1.3 调整更新PC的数据<br />通路 121<br />5.1.4 不考虑相关冲突<br />情况下流水线控制<br />信号的设计 121<br />5.1.5 复位的处理 122<br />5.2 指令相关与流水线冲突 123<br />5.2.1 处理寄存器写后读数据<br />相关引发的流水线冲突 124<br />5.2.2 处理控制相关 125<br />5.3 流水线数据前递设计 128<br />5.3.1 前递的数据通路设计 128<br />5.3.2 前递的流水线控制信号<br />调整 131<br />5.3.3 前递引发的主频下降 132<br />5.4 CPU设计实验功能仿真调试<br />技术进阶 133<br />5.4.1 valid和PC信号<br />不能少 133<br />5.4.2 各流水线信号分组有序<br />摆放 133<br />5.4.3 先遍历指令再遍历<br />流水线 134<br />5.5 任务与实践 134<br />5.5.1 实践任务7:不考虑相关<br />引发的冲突的简单流水线CPU 135<br />5.5.2 实践任务8:阻塞技术<br />解决相关引发的冲突 136<br />5.5.3 实践任务9:前递技术<br />解决相关引发的冲突 137<br />第6章 在流水线中添加普通<br />用户态指令 139<br />6.1 算术逻辑运算类指令的添加 139<br />6.1.1 slti和sltui指令的添加 140<br />6.1.2 andi、ori和xori指令的<br />添加 140<br />6.1.3 sll.w、srl.w和sra.w<br />指令的添加 141<br />6.1.4 pcaddu12i指令的添加 141<br />6.2 乘除法运算类指令的添加 141<br />6.2.1 调用Xilinx IP实现乘除法<br />运算部件 142<br />6.2.2 电路级实现乘法器 146<br />6.2.3 电路级实现除法器 154<br />6.3 转移指令的添加 161<br />6.4 访存指令的添加 162<br />6.4.1 ld.b、ld.h、ld.bu、ld.hu<br />指令的添加 162<br />6.4.2 st.b、st.h指令的添加 164<br />6.5 任务与实践 165<br />6.5.1 实践任务10:算术逻辑<br />运算指令和乘除法运算<br />指令添加 165<br />6.5.2 实践任务11:转移指令<br />和访存指令添加 166<br />第7章 异常和中断的支持 168<br />7.1 异常和中断的基本概念 168<br />7.1.1 异常是一套软硬件协同<br />处理的机制 169<br />7.1.2 准确异常 169<br />7.2 LoongArch指令系统中与异常<br />相关的功能定义 170<br />7.2.1 控制状态寄存器 170<br />7.2.2 异常产生条件的判定 171<br />7.2.3 响应异常后硬件的一般<br />处理过程 174<br />7.2.4 异常处理返回指令 174<br />7.2.5 CSR读写指令 175<br />7.3 流水线CPU实现异常和中断的<br />设计要点 175<br />7.3.1 异常检测逻辑的实现 175<br />7.3.2 准确异常的实现 177<br />7.3.3 控制状态寄存器的实现 178<br />7.3.4 处理控制状态寄存器<br />相关引发的冲突 186<br />7.4 其他指令的实现 188<br />7.5 任务与实践 188<br />7.5.1 实践任务12:添加系统<br />调用异常支持 188<br />7.5.2 实践任务13:添加其他<br />异常与中断支持 189<br />第8章 AXI总线接口设计 191<br />8.1 类SRAM总线 192<br />8.1.1 主方和从方 192<br />8.1.2 类SRAM总线接口<br />信号的定义 192<br />8.1.3 类SRAM总线的读写<br />时序 194<br />8.1.4 类SRAM总线的约束 197<br />8.2 类SRAM总线的设计 198<br />8.2.1 取指设计的考虑 198<br />8.2.2 访存设计的考虑 203<br />8.3 AXI总线协议 204<br />8.3.1 AXI总线信号一览 204<br />8.3.2 AXI总线协议的初步<br />解读 206<br />8.3.3 类SRAM总线接口信号<br />与AXI总线接口信号的<br />关系 212<br />8.4 类SRAM-AXI的转接桥设计 212<br />8.4.1 转接桥的顶层接口 212<br />8.4.2 转接桥的设计要求 213<br />8.4.3 转接桥的设计建议 214<br />8.5 任务与实践 215<br />8.5.1 实践任务14:添加类<br />SRAM总线支持 215<br />8.5.2 实践任务15:添加AXI<br />总线支持 219<br />8.5.3 实践任务16:完成AXI<br />随机延迟验证 220<br />第9章 存储管理单元设计 222<br />9.1 存储管理单元相关规范定义<br />梳理 223<br />9.2 TLB模块设计分析 224<br />9.3 MMU相关CSR与指令的<br />实现 229<br />9.3.1 MMU的CSR相关引发<br />的冲突处理 229<br />9.3.2 TLB相关指令的实现 230<br />9.4 利用MMU进行虚实地址转换<br />及MMU相关异常的实现 231<br />9.5 任务与实践 233<br />9.5.1 实践任务17:设计TLB<br />模块 233<br />9.5.2 实践任务18:添加TLB<br />相关指令和CSR 235<br />9.5.3 实践任务19:添加TLB<br />相关异常支持 236<br />第10章 Cache设计 238<br />10.1 Cache模块的设计 239<br />10.1.1 Cache的设计规格 239<br />10.1.2 Cache模块的数据通路<br />设计 241<br />10.1.3 Cache模块内部的控制<br />逻辑设计 250<br />10.1.4 Cache的硬件初始化<br />问题 255<br />10.2 将Cache集成至CPU中 256<br />10.2.1 Cache命中情况下的<br />CPU流水线适配 256<br />10.2.2 Cache缺失情况下的<br />CPU流水线适配 257<br />10.2.3 非缓存访问的处理 257<br />10.3 Cache维护指令 259<br />10.4 任务与实践 259<br />10.4.1 实践任务20:Cache<br />模块设计 260<br />10.4.2 实践任务21:在CPU<br />中集成ICache 262<br />10.4.3 实践任务22:在CPU<br />中集成DCache 263<br />10.4.4 实践任务23:在CPU<br />中添加CACOP指令 264<br />第11章 进阶实验开发环境 265<br />11.1 chiplab开发环境组织与<br />构成 266<br />11.2 chiplab开发环境的推荐<br />使用方式 267<br />11.3 软件仿真功能验证 269<br />11.3.1 固定测试程序验证 269<br />11.3.2 随机指令测试程序<br />验证 274<br />11.3.3 基于差分测试的调试<br />辅助机制 277<br />11.4 FPGA上板功能验证 280<br />11.4.1 FPGA综合实现 280<br />11.4.2 在FPGA上运行Linux<br />操作系统 281<br />第12章 进阶设计 290<br />12.1 提升主频的常用方法 291<br />12.1.1 平衡各级流水线的<br />延迟 291<br />12.1.2 针对大概率事件优化<br />逻辑 291<br />12.1.3 用面积和功耗换时延 292<br />12.1.4 进一步切分流水线 293<br />12.1.5 主频提升技术实现<br />示例 293<br />12.2 超标量流水线的实现 294<br />12.2.1 超标量流水线前端<br />设计要点 295<br />12.2.2 静态调度超标量流水线<br />后端设计要点 296<br />12.3 动态调度机制的实现 296<br />12.3.1 动态调度机制设计要点<br />提示 298<br />12.3.2 动态调度中常见电路<br />结构的RTL实现 301<br />12.4 硬件转移预测技术 302<br />12.4.1 硬件转移预测的流水线<br />设计框架 302<br />12.4.2 一个轻量级转移预测器<br />设计规格 304<br />12.5 访存优化技术 305<br />12.5.1 写缓存 305<br />12.5.2 非阻塞式高速缓存 306<br />12.5.3 访存乱序执行 307<br />12.5.4 多级Cache 308<br />12.5.5 Cache预取 308<br />12.6 多核处理器的实现 309<br />12.6.1 多核互联结构 309<br />12.6.2 多核编号 310<br />12.6.3 核间中断 310<br />12.6.4 多核情况下的存储<br />一致性 311<br />12.6.5 缓存一致性协议 312<br />12.6.6 ll.w-sc.w指令对的访存<br />原子性 320<br />附录 323<br />附录A 龙芯CPU设计与体系结构<br />教学实验系统 323<br />附录B Vivado的安装 327<br />附录C Vivado使用入门 337<br />附录D Vivado使用进阶 361 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。