网站首页  软件下载  游戏下载  翻译软件  电子书下载  电影下载  电视剧下载  教程攻略

请输入您要查询的图书:

 

书名 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
随便看

 

霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。

 

Copyright © 2002-2024 101bt.net All Rights Reserved
更新时间:2025/1/19 16:33:03