首页  软件  游戏  图书  电影  电视剧

请输入您要查询的图书:

 

图书 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
标签
缩略图
书名 CPU设计实战:LOONGARCH版
副书名
原作名
作者 汪文祥 邢金璋
译者
编者
绘者
出版社 机械工业出版社
商品编码(ISBN) 9787111751915
开本 16开
页数 384
版次 1
装订
字数 485
出版时间 2024-07-01
首版时间
印刷时间 2024-07-01
正文语种
读者对象
适用范围
发行范围
发行模式 实体书
首发网站
连载网址
图书大类
图书小类
重量
CIP核字
中图分类号 TP332
丛书名
印张
印次 1
出版地
整理
媒质
用纸
是否注音
影印版本
出版商国别
是否套装
著作权合同登记号
版权提供者
定价
印数
出品方
作品荣誉
主角
配角
其他角色
一句话简介
立意
作品视角
所属系列
文章进度
内容简介
作者简介
目录
文摘
安全警示 适度休息有益身心健康,请勿长期沉迷于阅读小说。
随便看

 

兰台网图书档案馆全面收录古今中外各种图书,详细介绍图书的基本信息及目录、摘要等图书资料。

 

Copyright © 2004-2025 xlantai.com All Rights Reserved
更新时间:2025/5/6 14:00:26