《CPU设计实战》试验资源

  • 更新时间:
  • 5196人关注
  • 点击下载

给大家带来的是《CPU设计实战》试验资源,介绍了关于CPU、设计实战、试验资源、CPU设计方面的内容,本书是由机械工业出版社出版,已被103人关注,由热心网友麴西贝提供,目前本书在CPU设计类综合评分为:7.3分。

资源详情相关推荐
《《CPU设计实战》试验资源》封面
  • 出版社:机械工业出版社
  • 作者:汪文祥、邢金璋
  • 大小:16 MB
  • 类别:CPU设计
  • 热度:683
  • 自己动手写CPU
  • 手把手教你设计CPU:RISC-V处理器篇
  • CPU自制入门
  • 分布式服务架构:原理、设计与实战
  • Python程序设计入门到实战
  • 配套书籍介绍

    本书系统介绍了CPU设计的发展过程、每个开发环节的知识要点、开发过程中需要注意的工程问题等。通过学习这本书,读者可以自己设计一个具有基本功能的CPU。这本书的内容是循序渐进的,从CPU设计的基础知识到简单流水线CPU的设计、多周期流水线中央处理器、缓存,并增加主频、运行Linux内核等高级功能,让读者逐渐掌握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
    • 第8章AXI总线接口设计 184
    • 8.1类SRAM总线 184
    • 8.1.1主方和从方 185
    • 8.1.2类SRAM总线接口信号的定义 185
    • 8.1.3类SRAM总线的读写时序 186
    • 8.1.4类SRAM总线的约束 189
    • 8.2类SRAM总线的设计 189
    • 8.2.1取指设计的考虑 190
    • 8.2.2访存设计的考虑 195
    • 8.3AXI总线协议 195
    • 8.3.1AXI总线信号一览 195
    • 8.3.2理解AXI总线协议 197
    • 8.3.3类SRAM总线接口信号与AXI总线接口信号的关系 202
    • 8.4类SRAM-AXI的转接桥设计 203
    • 8.4.1转接桥的顶层接口 203
    • 8.4.2转接桥的设计要求 204
    • 8.4.3转接桥的设计建议 204
    • 8.5任务与实践 205
    • 8.5.1实践任务一:添加类SRAM总线支持 205
    • 8.5.2实践任务二:添加AXI总线支持 208
    • 8.5.3实践任务三:完成AXI随机延迟验证 210
    • 第9章TLB MMU设计 211
    • 9.1TLB模块的基础知识 212
    • 9.1.1TLB的虚实地址转换 212
    • 9.1.2TLB的软件访问 214
    • 9.1.3TLB的软硬件交互机制 215
    • 9.2TLB模块设计的分析 217
    • 9.3TLB相关的CP0寄存器与指令的实现 219
    • 9.4利用TLB进行虚实地址转换及TLB例外 221
    • 9.5任务与实践 222
    • 9.5.1实践任务一:TLB模块设计 222
    • 9.5.2实践任务二:添加TLB相关指令和CP0寄存器 224
    • 9.5.3实践任务三:添加TLB相关例外支持 225
    • 第10章高速缓存设计 226
    • 10.1Cache模块的设计 227
    • 10.1.1Cache的设计规格 227
    • 10.1.2Cache模块的数据通路设计 228
    • 10.1.3Cache模块内部的控制逻辑设计 237
    • 10.1.4Cache的硬件初始化问题 241
    • 10.2将Cache模块集成至CPU中 242
    • 10.2.1Cache命中情况下的CPU流水线适配 242
    • 10.2.2Cache缺失情况下的CPU流水线适配 243
    • 10.2.3Uncache访问的处理 243
    • 10.3CACHE指令 245
    • 10.3.1CACHE指令的定义 245
    • 10.3.2CACHE指令的实现 247
    • 10.4性能测试程序 247
    • 10.4.1Dhrystone 247
    • 10.4.2Coremark 250
    • 10.5Cache的性能 251
    • 10.6任务与实践 252
    • 10.6.1实践任务一:Cache模块设计 252
    • 10.6.2实践任务二:在CPU中集成ICache 254
    • 10.6.3实践任务三:在CPU中集成DCache 255
    • 10.6.4实践任务四:在CPU中添加CACHE指令 256
    • 第11章进阶设计 258
    • 11.1运行Linux内核 258
    • 11.1.1复杂SoC搭建 259
    • 11.1.2CPU的进一步完善 259
    • 11.1.3调试建议 260
    • 11.2提升主频的常用方法 261
    • 11.2.1平衡各级流水线的延迟 261
    • 11.2.2优化大概率事件的处理逻辑 261
    • 11.2.3用面积和功耗换时序 262
    • 11.2.4进一步切分流水线 262
    • 11.3静态双发射流水线的实现 262
    • 11.4动态调度机制的实现 263
    • 11.4.1一个双发射动态调度流水线的设计实例 263
    • 11.4.2动态调度中常见电路结构的RTL实现 266
    • 11.5硬件转移预测技术 266
    • 11.5.1硬件转移预测的流水线设计框架 267
    • 11.5.2一个轻量级转移预测器的设计规格 268
    • 11.6访存优化技术 269
    • 11.6.1store buffer 269
    • 11.6.2Non-blocking Cache 270
    • 11.6.3访存乱序执行 271
    • 11.6.4多级Cache 271
    • 11.6.5Cache预取 272
    • 11.7多核处理器的实现 272
    • 11.7.1多核互联结构 273
    • 11.7.2多核编号 273
    • 11.7.3核间中断 273
    • 11.7.4多核情况下的存储一致性 274
    • 11.7.5LL-SC指令对的访存原子性 282
    • 附录A龙芯CPU设计与体系结构教学实验系统 285
    • 附录BVivado的安装 288
    • 附录C简单MIPS指令系统规范 301
    • 附录DVivado使用进阶 345

    相关声明:

    《CPU设计实战》试验资源 下载资源由用户 温景同 于 2022-01-05 10:09:29 分享至网盘,版权归机械工业出版社所有。仅供想学习CPU设计的网友交流使用,专题参考:试验资源CPU设计,CPU设计,

    CPU设计相关资源

    • 《AutoCAD 2020中文版建筑设计实战从入门到精通》素材

      《AutoCAD 2020中文版建筑设计实战从入门到精通》素材

      大小:26.21 MBAutoCAD

      立即下载
    • 《基于BIM的Revit 2019中文版建筑设计实战演练》项目文件

      《基于BIM的Revit 2019中文版建筑设计实战演练》项目文件

      编辑推荐 图解的形式替代大量的文字,使图书在有限的篇幅内包含的案例更多;n 配备丰富的视频.提供的视频能使读者像看电影一样喜闻乐见,像读童话书一样通俗易懂;n 图书内容由浅入深,引人入胜;n 作者近30年的BIM设计绘图经验,倾囊相授,使读者学到真知识,练成真本领。 内容简介 本书系统、全面地介绍了Revit 2019在建筑方面的基础功能及实际应用,是入门读者快速、全面地掌握Revit 2019的理想教材。n 本书从Revit 2019的基本操作入手,结合大量

      大小:2.4 GBRevit

      立即下载
    • 《从零开始:Indesign CC 2019设计基础+商业设计实战》视频,素材,源文件

      《从零开始:Indesign CC 2019设计基础+商业设计实战》视频,素材,源文件

      编辑推荐 Adobe授权培训中心推荐教材,全书结合了大量的商业实战案例和练习,通过案例精讲和商业实战练习巩固理论知识。 本书选取的案例针对性强,贴近真实的商业需求。案例讲解细致、全面,包括设计理论、设计思路、商业需求和操作过程,完胜市面上大多数侧重于讲解操作过程的图书。 内容简介 本书是Adobe中国授权培训中心官方推荐教材,针对InDesign CC 2019软件初学者,深入浅出地讲解软件的使用技巧,用实战案例进一步引导读者掌握该软件的

      大小:1.9 GBIndesign

      立即下载
    • FPGA设计实战演练(逻辑篇)

      FPGA设计实战演练(逻辑篇)

      FPGA设计实战演练(逻辑篇) 面对广大的FPGA/CPLD初学者,从零开始讲述FPGA/CPLD以及相关的基础知识,并以一个支持各种入门、进阶的子母板形式学习套件为实验平台,将24个应用实例贯穿其中。实

      大小:273.3 MBFPGA

      立即下载
    • Photoshop CS3平面设计实战从入门到精通

      Photoshop CS3平面设计实战从入门到精通

      PhotoshopCS3平面设计实战从入门到精通 作者:新视角文化行著 出版社: 出版日期:2009-02 内容介绍 《PhotoshopCS3平面设计实战从入门到精通》是“从入门到精通”系列书中的一本。《PhotoshopCS3平面设计实战从入门到精通》根据使用PhotoshopCS3进行平面设计的特点,精心设计了130个实例,循序渐进地讲解了使用PhotoshopCS3设计和制作专业平面作品所需要的知识点和操作技巧。全书共分9章,分别讲解了认识PhotoshopCS3,工具的使用,色彩的调整,图层、通

      大小:20.24 MBPhotoshop

      立即下载

    CPU设计配套笔记

    9小时3分钟前回答

    python 实时得到cpu和内存的使用情况方法

    如下所示: #先下载psutil库:pip install psutilimport psutilimport os,datetime,timedef getMemCpu(): data = psutil.virtual_memory() total = data.total #总内存,单位为byte free = data.available #可以内存 memory = "Memory usage:%d"%(int(round(data.percent)))+"%"+" " cpu = "CPU:%0.2f"%psutil.cpu_percent(interval=1)+"%" return memory+cpudef main(): while(True): info = getMemCpu() time.sleep(0.2) print info+"\b"*(len(info)+1),if __name__=="__main__": main() 以上这篇python 实时得到cpu和内存的使用情况方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

    12小时56分钟前回答

    Pytorch如何切换 cpu和gpu的使用详解

    前言,在pytorch中,当服务器上的gpu被占用时,很多时候我们想先用cpu调试下代码,那么就需要进行gpu和cpu的切换。 方法1:x.to(device) 把 device 作为一个可变参数,推荐使用argparse进行加载: 使用gpu时: device='cuda'x.to(device) # x是一个tensor,传到cuda上去 使用cpu时: device='cpu'x.to(device) 方法2:使用x.cuda()+CUDA_VISIBLE_DEVICES 很多贴子中说,使用x.cuda() 和x.to('cuda') 虽然是等效的,但是x.cuda() 的缺点是无法动态切换cpu。然而,其实配合命令行参数CUDA_VISIBLE_DEVICES 是可以进行切换的。 在服务器上创建一个python脚本 t.py: import torchprint(torch.cuda.device_count()) # 可用gpu数量print(torch.cuda.is_available()) # 是否可用gpu 首先先看一下……