第1章 绪论 1
1.1 计算机系统概述 1
1.1.1 计算机系统的层次结构 1
1.1.2 计算机硬件系统的组成 2
1.1.3 计算机软件系统的组成 4
1.2 计算机系统的评价指标 4
1.3 处理器概述 6
1.3.1 指令集体系结构和微体系结构 6
1.3.2 CISC和RISC 6
1.3.3 指令集体系结构中的“五朵金花” 7
1.3.4 MIPS指令集体系结构的发展 8
1.4 本书的主要内容 10
1.4.1 目标处理器MiniMIPS32 10
1.4.2 原型系统MiniMIPS32 SYS 10
第2章 MiniMIPS32处理器的指令集体系结构 12
2.1 操作数的数据类型 12
2.2 寄存器概述 12
2.3 MiniMIPS32存储空间的编址方式 15
2.4 指令系统 16
2.4.1 MiniMIPS32的指令格式 16
2.4.2 MiniMIPS32指令集和具体操作 16
2.5 MiniMIPS32指令的寻址方式 36
2.6 MiniMIPS32的操作模式 38
2.7 协处理器CP0 38
2.8 异常处理 38
第3章 MiniMIPS32程序的机器级表示 40
3.1 从C程序到可执行目标程序 40
3.2 基于MiniMIPS32的汇编程序设计 42
3.2.1 汇编程序结构 42
3.2.2 汇编程序伪指令 42
3.2.3 汇编程序宏指令 46
3.2.4 MIPS指令集仿真器QtSpim 48
3.3 C语言程序的机器级表示 53
3.3.1 选择结构 53
3.3.2 循环结构 57
3.3.3 函数调用 58
3.3.4 数组 66
第4章 现场可编程逻辑门阵列(FPGA)及其设计流程 69
4.1 FPGA概述 69
4.1.1 Xilinx FPGA的基本结构 70
4.1.2 DIGILENT Nexys4 DDR FPGA开发平台 73
4.2 FPGA的设计流程 74
4.3 Xilinx Vivado集成设计环境 75
4.3.1 Vivado集成设计环境介绍 75
4.3.2 基于Vivado的FPGA设计流程 77
第5章 MiniMIPS32处理器的基本流水线设计与实现 91
5.1 流水线的基本概念 91
5.1.1 什么是流水线 91
5.1.2 指令流水线 91
5.1.3 指令流水线的评价指标 93
5.1.4 指令流水线的特点 94
5.2 MiniMIPS32处理器的整体结构和设计方法 94
5.2.1 MiniMIPS32处理器的整体结构 94
5.2.2 MiniMIPS32处理器的设计方法 96
5.3 MiniMIPS32处理器的基本流水线设计 97
5.3.1 非转移类R-型指令的流水线数据通路的设计 97
5.3.2 非转移类I-型指令的流水线数据通路的设计 120
5.3.3 控制单元的设计 134
5.4 基于Verilog HDL的实现与测试 142
5.4.1 MiniMIPS32处理器的基本流水线的Verilog实现 142
5.4.2 MiniMIPS32 SYS原型系统的Verilog实现 169
5.4.3 功能测试 171
第6章 MiniMIPS32处理器的流水线相关问题和暂停机制 175
6.1 流水线的数据相关和消除方法 175
6.1.1 数据相关的概念 175
6.1.2 数据相关的消除方法 177
6.1.3 支持定向前推的MiniMIPS32处理器的设计 179
6.1.4 基于Verilog HDL的实现与测试 181
6.2 流水线的控制相关和消除方法 189
6.2.1 控制相关的概念 189
6.2.2 控制相关的消除方法 189
6.2.3 转移指令流水线数据通路的设计 191
6.2.4 转移指令流水线控制单元的设计 193
6.2.5 基于Verilog HDL的实现与测试 196
6.3 流水线的暂停机制 205
6.3.1 引起流水线暂停的原因 206
6.3.2 多周期除法指令的设计 207
6.3.3 支持暂停机制的流水线的设计 208
6.3.4 基于Verilog HDL的实现与测试 211
第7章 MiniMIPS32处理器异常处理的设计与实现 225
7.1 CP0协处理器 225
7.1.1 概述 225
7.1.2 协处理器CP0中的寄存器 226
7.1.3 协处理器CP0指令及数据相关 229
7.2 异常的基本概念 230
7.2.1 异常和中断 230
7.2.2 异常处理的流程 231
7.3 MiniMIPS32处理器的异常处理 232
7.3.1 精确异常 232
7.3.2 支持的异常类型 233
7.3.3 MiniMIPS32处理器的异常处理流程 234
7.3.4 支持异常处理的MiniMIPS32处理器流水线的设计 236
7.4 基于Verilog HDL的实现与测试 240
7.4.1 支持异常处理的MiniMIPS32处理器流水线的Verilog HDL实现 240
7.4.2 功能测试 260
第8章 综合测试 264
8.1 改进的MiniMIPS32 SYS原型系统 264
8.1.1 原型系统的架构 264
8.1.2 原型系统的实现 265
8.2 测试方法概述 272
8.3 功能点测试 273
8.4 C程序测试 279
附录A MiniMIPS32处理器交叉编译环境的搭建 281
A.1 虚拟机Virtual Box的安装 281
A.2 Ubuntu Linux操作系统的安装 284
A.3 MiniMIPS32交叉编译环境的安装与配置 290
附录B 指令存储器和数据存储器的设计 293
B.1 指令存储器的设计 293
B.2 数据存储器的设计 299
参考文献 304