内容简介
第1章 计算机基础知识及性能评价
1.1 计算机系统概述
1.1.1 计算机系统的组成
1.1.2 计算机发展简史
1.1.3 计算机指令结构
1.1.4 CISC和RISC
1.1.5 一些基本单位的意义
1.2 计算机的基本结构
1.2.1 RISC CPU的基本结构
1.2.2 多线程CPU和多核CPU
1.2.3 存储层次和虚拟存储器管理
1.2.4 I/O接口和总线
1.3 如何提高计算机的性能
1.3.1 计算机性能和性能评价
1.3.2 踪迹驱动模拟和执行驱动模拟
1.3.3 高性能计算机和互联网络
1.4 硬件描述语言
1.5 习题
第2章 逻辑电路及Verilog HDL简介
2.1 基本逻辑门和常用逻辑门
2.2 用Verilog HDL实现基本的逻辑操作
2.3 逻辑门的CMOS晶体管实现以及晶体管级的Verilog HDL
2.3.1 CMOS反向器
2.3.2 CMOS与非门和或非门
2.4 四种风格的Verilog HDL描述
2.4.1 晶体管开关级的Verilog HDL
2.4.2 逻辑门级的Verilog HDL
2.4.3 数据流风格的Verilog HDL
2.4.4 功能描述风格的Verilog HDL
2.5 常用的组合电路及其设计
2.5.1 多路选择器设计
2.5.2 译码器设计
2.5.3 32位移位器设计
2.6 时序电路的设计方法
2.6.1 D锁存器
2.6.2 D触发器
2.6.3 状态转移图及时序电路设计
2.7 习题
第3章 计算机算法及其Verilog HDL实现
3.1 二进制整数
3.1.1 无符号二进制整数
3.1.2 补码表示的带符号二进制整数
3.2 加减法算法及Verilog HDL实现
3.2.1 加法器和减法器设计
3.2.2 先行进位加法器设计
3.3 乘法算法及Verilog HDL实现
3.3.1 无符号数乘法器设计
3.3.2 带符号数乘法器设计
3.3.3 无符号数Wallace树型乘法器设计
3.3.4 带符号数Wallace树型乘法器设计
3.4 除法算法及Verilog HDL实现
3.4.1 恢复余数除法器设计
3.4.2 不恢复余数除法器设计
3.4.3 带符号数不恢复余数除法器设计
3.4.4 Goldschmidt除法算法
3.4.5 Newton-Raphson除法算法
3.5 开方算法及Verilog HDL实现
3.5.1 恢复余数开方算法
3.5.2 不恢复余数开方算法
3.5.3 Goldschmidt开方算法
3.5.4 Newton-Raphson开方算法
3.6 习题
第4章 指令系统及ALU设计
4.1 指令系统结构
4.1.1 操作数类型
4.1.2 数据在存储器中的存放方法
4.1.3 指令类型
4.1.4 指令结构
4.1.5 寻址方式
4.2 MIPS指令格式和通用寄存器定义
4.2.1 MIPS指令格式
4.2.2 MIPS通用寄存器
4.3 MIPS指令和ALU设计
4.3.1 本书CPU可执行的MIPS指令
4.3.2 ALU设计
4.4 习题
第5章 单周期CPU及其Verilog HIL设计
5.1 执行一条指令所需的硬件电路
5.1.1 与取指令有关的电路
5.1.2 寄存器计算类型指令执行时所需电路
5.1.3 立即数计算类型指令执行时所需电路
5.1.4 访问存储器类型指令执行时所需电路
5.1.5 条件转移类型指令执行时所需电路
5.1.6 跳转和子程序调用及返回类型指令执行时所需电路
5.2 寄存器堆设计
5.2.1 寄存器堆的硬件电路设计
5.2.2 结构描述风格的寄存器堆Verilog HDL代码
5.2.3 功能描述风格的寄存器堆Verilog HDL代码
5.3 数据路径设计
5.3.1 多路选择器的使用
5.3.2 单周期CPU的总体电路
5.3.3 单周期CPU的Verilog HDL代码
5.4 控制部件设计
5.4.1 控制部件的逻辑设计
5.4.2 控制部件的Verilog HDL代码
5.5 存储器及测试程序设计
5.5.1 数据存储器设计
5.5.2 指令存储器及测试程序设计
5.5.3 单周期CPU测试结果及说明
5.6 习题
第6章 异常和中断处理及其电路实现
6.1 异常和中断
6.1.1 异常和中断的定义与类型
6.1.2 查询中断和向量中断
6.1.3 中断屏蔽和中断嵌套
6.1.4 中断优先级
6.2 带有异常和中断处理功能的CPU的设计
6.2.1 异常和中断的处理过程以及相关的寄存器
6.2.2 与异常和中断有关的指令
6.2.3 带有异常和中断处理功能的CPU总体结构
6.2.4 带有异常和中断处理功能的CPU Verilog HDL代码
6.3 CPU的异常与中断测试
6.3.1 测试程序和测试数据
6.3.2 CPU异常及中断处理测试结果及说明
6.4 习题
第7章 多周期CPU及其Verilog HDL设计
7.1 把一条指令的执行分成若干个周期
7.1.1 取指令周期IF
7.1.2 指令译码周期ID
7.1.3 指令执行周期EXE
7.1.4 存储器访问周期MEM
7.1.5 结果写回周期WB
7.2 多周期CPU的总体电路及Verilog HDL代码
7.2.1 多周期CPU的总体电路
7.2.2 多周期CPU的Verilog HDL代码
7.3 用有限状态机实现多周期CPU的控制部件
7.3.1 多周期CPU的控制部件的状态转移图
7.3.2 多周期CPU的控制部件的总体结构
7.3.3 下一状态函数
7.3.4 控制信号的产生
7.3.5 控制部件的Verilog HDL代码
7.4 存储器及测试程序设计
7.4.1 存储器设计
7.4.2 测试程序代码
7.4.3 多周期CPU测试结果
7.5 习题
第8章 流水线CPU及其Verilog HDL设计
8.1 流水线技术的基本概念
8.1.1 取指令IF级的电路
8.1.2 指令译码ID级的电路
8.1.3 指令执行EXE级的电路
8.1.4 存储器访问MEM级的电路
8.1.5 结果写回WB级的电路
8.2 流水线CPU的相关问题及解决对策
8.2.1 数据相关及解决对策
8.2.2 控制相关及解决对策
8.3 流水线CPU的整体设计及Verilog HDL代码
8.3.1 流水线CPU的整体电路
8.3.2 流水线CPU的Verilog HDL代码
8.4 流水线CPU的测试
8.4.1 流水线CPU的测试程序
8.4.2 流水线CPU的仿真波形
8.5 精确中断和异常事件处理
8.5.1 异常事件和中断的种类以及相关的寄存器
8.5.2 流水线CPU的中断响应过程
8.5.3 流水线CPU处理异常事件
8.6 带有处理异常和中断功能的流水线CPU的设计
8.6.1 流水线CPU的总体结构
8.6.2 流水线CPU的Verilog HDL代码
8.6.3 异常和中断的测试程序与仿真波形
8.7 习题
第9章 浮点算法及FPU Verilog HDL设计
9.1 IEEE 754浮点数格式
9.2 单精度浮点数与整数之间的转换
9.2.1 浮点数转换成整数
9.2.2 整数转换成浮点数
9.3 浮点加法器FADD设计
9.3.1 浮点加法算法
9.3.2 浮点加法器Verilog HDL代码
9.3.3 流水线浮点加法器设计
9.4 浮点乘法器FMUL设计
9.4.1 浮点乘法算法
9.4.2 Wallace树型浮点乘法器Verilog HDL代码
9.4.3 流水线Wallace树型浮点乘法器设计
9.5 浮点除法器FDIV设计
9.5.1 浮点除法算法
9.5.2 Newton-Raphson浮点除法器Verilog HDL代码
9.6 浮点开方器FSQRT设计
9.6.1 浮点开方算法
9.6.2 Newton-Raphson浮点开方器Verilog HDL代码
9.7 习题
第10章 带有FPU的流水线CPU及其Verilog HDL设计
10.1 CPU/FPU流水线模型
10.1.1 CPU/FPU可执行的指令
10.1.2 CPU/FPU基本的流水线模型
10.2 带有两个写端口的寄存器堆设计
10.3 浮点数据相关以及流水线暂停
10.3.1 浮点运算结果的内部前推和流水线暂停
10.3.2 lwcl和swcl造成的流水线暂停及内部前推
10.3.3 浮点除法和开方指令造成的流水线暂停
10.4 带有FPU的流水线CPU的总体结构及Verilog HDL代码
10.4.1 带有FPU的流水线CPU的具体电路
10.4.2 浮点部件FPU的具体电路
10.4.3 整数部件IU的具体电路
10.4.4 带有FPU的流水线CPU的Verilog HDL代码
10.5 存储器模块及CPU/FPU的测试
10.5.1 指令存储器和数据存储器
10.5.2 CPU/FPU的测试程序
10.5.3 CPU/FPU的仿真波形
10.6 习题
第11章 多线程CPU及其Verilog HDL设计
11.1 多线程CPU概述
11.1.1 多线程CPU的基本概念
11.1.2 多线程CPU的基本结构
11.2 多线程CPU设计
11.2.1 线程的选择方法
11.2.2 多线程CPU的详细电路
11.2.3 多线程CPU的Verilog HDL代码
11.3 多线程CPU的仿真波形
11.4 习题
第12章 存储器和虚拟存储器管理
12.1 存储器
12.1.1 静态存储器(SRAM)
12.1.2 动态存储器(DRAM)
12.1.3 只读存储器(ROM)
12.1.4 相联存储器(CAM)
12.1.5 存储层次
12.2 高速缓存(Cache)
12.2.1 Cache的映像机制
12.2.2 Cache块的替换算法
12.2.3 Cache写策略
12.2.4 数据Cache电路设计及Verilog HDL代码
12.3 虚拟存储器管理及TLB设计
12.3.1 虚拟存储器与主存的关系
12.3.2 分段管理
12.3.3 分页管理
12.3.4 快速地址转换TLB及其电路设计
12.3.5 TLB与Cache的并行访问
12.4 MIPS基于TLB的虚拟地址转换机制
12.4.1 MIPS的虚拟地址空间
12.4.2 MIPS TLB的构成
12.4.3 MIPS虚拟地址转换
12.4.4 MIPS TLB维护指令
12.5 习题
第13章 带有Cache及TLB和FPU的CPU设计
13.1 Cache和TLB的总体结构
13.2 与Cache有关的电路设计
13.2.1 指令Cache的Verilog HDL代码
13.2.2 数据Cache和指令Cache与外部存储器的接口
13.2.3 Cache不命中时流水线暂停的电路
13.3 与TLB有关的电路设计
13.3.1 指令TLB(ITLB)和数据TLB(DTLB)
13.3.2 TLB不命中时异常信号的产生
13.3.3 与TLB不命中异常有关的寄存器
13.3.4 对TLB不命中异常的处理
13.4 带有Cache及TLB的CPU设计
13.4.1 带有Cache及TLB的CPU总体结构
13.4.2 带有Cache及TLB的CPU的Verilog HDL代码
13.5 带有Cache及TLB的CPU的测试程序和仿真波形
13.6 习题
第14章 多核CPU及其Verilog HDL设计
14.1 多核CPU概述
14.1.1 多核CPU的基本概念
14.1.2 多核CPU的Cache一致性问题
14.2 多核CPU设计
14.2.1 多核CPU的总体结构
14.2.2 多核对外部总线的竞争与仲裁
14.2.3 多核CPU的Verilog HDL代码
14.3 多核CPU的测试程序及仿真波形
14.4 习题
第15章 输入/输出接口及设计
15.1 I/O接口概述
15.1.1 I/O地址空间和I/O指令
15.1.2 I/O查询和中断
15.1.3 直接存储器访问DMA
15.1.4 总线和总线的同步方式
15.2 数据错误检测及校正
15.2.1 奇偶校验
15.2.2 错误纠正码ECC(扩展的海明码)
15.2.3 循环冗余校验CRC
15.3 异步通信接口UART
15.4 PS/2接口
15.4.1 PS/2键盘
15.4.2 PS/2鼠标
15.5 视频图像阵列VGA
15.5.1 VGA及其接口控制器设计
15.5.2 VGA显示键盘字符
15.6 I/O总线
15.6.1 I2C串行总线
15.6.2 PCI并行总线
15.7 习题
第16章 高性能计算机及互联网络设计
16.1 高性能计算机的种类
16.1.1 集中式共享存储器系统(SMP)
16.1.2 分布式共享存储器系统(DSM)
16.2 互联网络的构成
16.3 互联网络的拓扑特性
16.3.1 节点度(Degree)
16.3.2 直径(Diameter)
16.3.3 平均距离(Average Distance)
16.3.4 对分宽度(Bisection Bandwidth)
16.4 常用的互联网络
16.4.1 Mesh
16.4.2 Torus
16.4.3 Hypercube
16.4.4 Tree和Fat-Tree
16.5 基本的通信操作
16.5.1 一对多广播
16.5.2 多对多广播
16.5.3 一对多私通
16.5.4 多对多私通
16.6 新型互联网络
16.6.1 Dual-Cube
16.6.2 Metacube
16.6.3 RDN
16.7 习题
参考文献
图索引
表索引
术语索引