为你推荐
前言
第1章 CPU芯片研发过程概述
1.1 处理器和处理器核
1.2 芯片产品的研制过程
1.3 芯片设计的工作阶段
第2章 硬件实验平台及FPGA设计流程
2.1 硬件实验平台
2.1.1 龙芯CPU设计与体系结构教学实验系统
2.1.2 龙芯普及型系统能力培养远程实验平台
2.2 FPGA的设计流程
2.2.1 FPGA的一般设计流程
2.2.2 基于Vivado的FPGA实现流程
2.2.3 Vivado使用小贴士
2.3 任务与实践
2.3.1 本书配套实验环境
2.3.2 实践任务1:跑马灯
第3章 数字逻辑电路设计基础
3.1 数字逻辑电路设计与Verilog代码开发
3.1.1 面向硬件电路的设计思维方式
3.1.2 自顶向下的设计划分过程
3.1.3 行为描述的Verilog编程风格
3.1.4 常用数字逻辑电路的Verilog描述
3.2 数字逻辑电路功能仿真的常见错误及调试方法
3.2.1 功能仿真波形分析
3.2.2 波形异常类错误的调试
3.3 任务与实践
3.3.1 实践任务2:寄存器堆仿真
3.3.2 实践任务3:同步RAM和异步RAM仿真、综合与实现
3.3.3 实践任务4:数字逻辑电路的设计与调试
第4章 单周期CPU设计
4.1 设计一个5条指令的单周期CPU
4.1.1 设计CPU的总体思路
4.1.2 5条指令单周期CPU数据通路设计
4.1.3 5条指令单周期CPU控制信号生成
4.2 验证5条指令的单周期CPU
4.2.1 5条指令单周期CPU实验开发环境快速上手
4.2.2 minicpu_env实验开发环境组织结构介绍
4.2.3 功能仿真验证
4.3 设计一个20条指令的单周期CPU
4.3.1 新增ALU类指令的数据通路设计
4.3.2 新增Branch类指令的数据通路设计
4.3.3 新增指令后控制信号的调整
4.4 验证20条指令的单周期CPU
4.4.1 mycpu_env实验开发环境组织结构介绍
4.4.2 基于trace比对的调试框架
4.4.3 func功能测试程序
4.4.4 基于mycpu_env实验开发环境的实验流程
4.4.5 mycpu_env实验开发环境使用进阶
4.5 CPU设计实验功能仿真调试技术
4.5.1 为什么要用基于trace比对的调试辅助手段
4.5.2 基于trace比对调试手段的“盲区”及对策
4.5.3 学会阅读汇编程序和反汇编代码
4.6 任务与实践
4.6.1 实践任务5:5条指令单周期CPU
4.6.2 实践任务6:20条指令单周期CPU
第5章 简单流水线CPU设计
5.1 不考虑相关冲突的流水线CPU设计
5.1.1 添加流水级间缓存
5.1.2 同步读RAM的引入
5.1.3 调整更新PC的数据通路
5.1.4 不考虑相关冲突情况下流水线控制信号的设计
5.1.5 复位的处理
5.2 指令相关与流水线冲突
5.2.1 处理寄存器写后读数据相关引发的流水线冲突
5.2.2 处理控制相关
5.3 流水线数据前递设计
5.3.1 前递的数据通路设计
5.3.2 前递的流水线控制信号调整
5.3.3 前递引发的主频下降
5.4 CPU设计实验功能仿真调试技术进阶
5.4.1 valid和PC信号不能少
5.4.2 各流水线信号分组有序摆放
5.4.3 先遍历指令再遍历流水线
5.5 任务与实践
5.5.1 实践任务7:不考虑相关引发的冲突的简单流水线CPU
5.5.2 实践任务8:阻塞技术解决相关引发的冲突
5.5.3 实践任务9:前递技术解决相关引发的冲突
第6章 在流水线中添加普通用户态指令
6.1 算术逻辑运算类指令的添加
6.1.1 slti和sltui指令的添加
6.1.2 andi、ori和xori指令的添加
6.1.3 sll.w、srl.w和sra.w指令的添加
6.1.4 pcaddu12i指令的添加
6.2 乘除法运算类指令的添加
6.2.1 调用Xilinx IP实现乘除法运算部件
6.2.2 电路级实现乘法器
6.2.3 电路级实现除法器
6.3 转移指令的添加
6.4 访存指令的添加
6.4.1 ld.b、ld.h、ld.bu、ld.hu指令的添加
6.4.2 st.b、st.h指令的添加
6.5 任务与实践
6.5.1 实践任务10:算术逻辑运算指令和乘除法运算指令添加
6.5.2 实践任务11:转移指令和访存指令添加
第7章 异常和中断的支持
7.1 异常和中断的基本概念
7.1.1 异常是一套软硬件协同处理的机制
7.1.2 精确异常
7.2 LoongArch指令系统中与异常相关的功能定义
7.2.1 控制状态寄存器
7.2.2 异常产生条件的判定
7.2.3 响应异常后硬件的一般处理过程
7.2.4 异常处理返回指令
7.2.5 CSR读写指令
7.3 流水线CPU实现异常和中断的设计要点
7.3.1 异常检测逻辑的实现
7.3.2 精确异常的实现
7.3.3 控制状态寄存器的实现
7.3.4 处理控制状态寄存器相关引发的冲突
7.4 其他指令的实现
7.5 任务与实践
7.5.1 实践任务12:添加系统调用异常支持
7.5.2 实践任务13:添加其他异常与中断支持
第8章 AXI总线接口设计
8.1 类SRAM总线
8.1.1 主方和从方
8.1.2 类SRAM总线接口信号的定义
8.1.3 类SRAM总线的读写时序
8.1.4 类SRAM总线的约束
8.2 类SRAM总线的设计
8.2.1 取指设计的考虑
8.2.2 访存设计的考虑
8.3 AXI总线协议
8.3.1 AXI总线信号一览
8.3.2 AXI总线协议的初步解读
8.3.3 类SRAM总线接口信号与AXI总线接口信号的关系
8.4 类SRAM-AXI的转接桥设计
8.4.1 转接桥的顶层接口
8.4.2 转接桥的设计要求
8.4.3 转接桥的设计建议
8.5 任务与实践
8.5.1 实践任务14:添加类SRAM总线支持
8.5.2 实践任务15:添加AXI总线支持
8.5.3 实践任务16:完成AXI随机延迟验证
第9章 存储管理单元设计
9.1 存储管理单元相关规范定义梳理
9.2 TLB模块设计分析
9.3 MMU相关CSR与指令的实现
9.3.1 MMU的CSR相关引发的冲突处理
9.3.2 TLB相关指令的实现
9.4 利用MMU进行虚实地址转换及MMU相关异常的实现
9.5 任务与实践
9.5.1 实践任务17:设计TLB模块
9.5.2 实践任务18:添加TLB相关指令和CSR
9.5.3 实践任务19:添加TLB相关异常支持
第10章 Cache设计
10.1 Cache模块的设计
10.1.1 Cache的设计规格
10.1.2 Cache模块的数据通路设计
10.1.3 Cache模块内部的控制逻辑设计
10.1.4 Cache的硬件初始化问题
10.2 将Cache集成至CPU中
10.2.1 Cache命中情况下的CPU流水线适配
10.2.2 Cache缺失情况下的CPU流水线适配
10.2.3 非缓存访问的处理
10.3 Cache维护指令
10.4 任务与实践
10.4.1 实践任务20:Cache模块设计
10.4.2 实践任务21:在CPU中集成ICache
10.4.3 实践任务22:在CPU中集成DCache
10.4.4 实践任务23:在CPU中添加CACOP指令
第11章 进阶实验开发环境
11.1 chiplab开发环境组织与构成
11.2 chiplab开发环境的推荐使用方式
11.3 软件仿真功能验证
11.3.1 固定测试程序验证
11.3.2 随机指令测试程序验证
11.3.3 基于差分测试的调试辅助机制
11.4 FPGA上板功能验证
11.4.1 FPGA综合实现
11.4.2 在FPGA上运行Linux操作系统
第12章 进阶设计
12.1 提升主频的常用方法
12.1.1 平衡各级流水线的延迟
12.1.2 针对大概率事件优化逻辑
12.1.3 用面积和功耗换时延
12.1.4 进一步切分流水线
12.1.5 主频提升技术实现示例
12.2 超标量流水线的实现
12.2.1 超标量流水线前端设计要点
12.2.2 静态调度超标量流水线后端设计要点
12.3 动态调度机制的实现
12.3.1 动态调度机制设计要点提示
12.3.2 动态调度中常见电路结构的RTL实现
12.4 硬件转移预测技术
12.4.1 硬件转移预测的流水线设计框架
12.4.2 一个轻量级转移预测器设计规格
12.5 访存优化技术
12.5.1 写缓存
12.5.2 非阻塞式高速缓存
12.5.3 访存乱序执行
12.5.4 多级Cache
12.5.5 Cache预取
12.6 多核处理器的实现
12.6.1 多核互联结构
12.6.2 多核编号
12.6.3 核间中断
12.6.4 多核情况下的存储一致性
12.6.5 缓存一致性协议
12.6.6 ll.w-sc.w指令对的访存原子性
附录
附录A 龙芯CPU设计与体系结构教学实验系统
附录B Vivado的安装
附录C Vivado使用入门
附录D Vivado使用进阶
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜