《计算机原理与设计 Verilog HDL版》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:李亚民著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302251095
  • 页数:520 页
图书介绍:本书讲述计算机原理、计算机设计以及如何Verilog HDL实现设计。

第1章 计算机基础知识及性能评价 1

1.1 计算机系统概述 1

1.1.1 计算机系统的组成 1

1.1.2 计算机发展简史 2

1.1.3 计算机指令结构 4

1.1.4 CISC和RISC 7

1.1.5 一些基本单位的意义 9

1.2 计算机的基本结构 10

1.2.1 RISC CPU的基本结构 10

1.2.2 多线程CPU和多核CPU 12

1.2.3 存储层次和虚拟存储器管理 13

1.2.4 I/O接口和总线 14

1.3 如何提高计算机的性能 15

1.3.1 计算机性能和性能评价 15

1.3.2 踪迹驱动模拟和执行驱动模拟 16

1.3.3 高性能计算机和互联网络 18

1.4 硬件描述语言 18

1.5 习题 21

第2章 逻辑电路及Verilog HDL简介 22

2.1 基本逻辑门和常用逻辑门 22

2.2 用Verilog HDL实现基本的逻辑操作 24

2.3 逻辑门的CMOS晶体管实现以及晶体管级的Verilog HDL 29

2.3.1 CMOS反向器 29

2.3.2 CMOS与非门和或非门 31

2.4 四种风格的Verilog HDL描述 33

2.4.1 晶体管开关级的Verilog HDL 33

2.4.2 逻辑门级的Verilog HDL 35

2.4.3 数据流风格的Verilog HDL 36

2.4.4 功能描述风格的Verilog HDL 37

2.5 常用的组合电路及其设计 40

2.5.1 多路选择器设计 40

2.5.2 译码器设计 41

2.5.3 32位移位器设计 43

2.6 时序电路的设计方法 47

2.6.1 D锁存器 47

2.6.2 D触发器 49

2.6.3 状态转移图及时序电路设计 52

2.7 习题 58

第3章 计算机算法及其Verilog HDL实现 61

3.1 二进制整数 61

3.1.1 无符号二进制整数 62

3.1.2 补码表示的带符号二进制整数 62

3.2 加减法算法及Verilog HDL实现 63

3.2.1 加法器和减法器设计 63

3.2.2 先行进位加法器设计 69

3.3 乘法算法及Verilog HDL实现 73

3.3.1 无符号数乘法器设计 73

3.3.2 带符号数乘法器设计 74

3.3.3 无符号数Wallace树型乘法器设计 77

3.3.4 带符号数Wallace树型乘法器设计 82

3.4 除法算法及Verilog HDL实现 84

3.4.1 恢复余数除法器设计 84

3.4.2 不恢复余数除法器设计 86

3.4.3 带符号数不恢复余数除法器设计 89

3.4.4 Goldschmidt除法算法 91

3.4.5 Newton-Raphson除法算法 94

3.5 开方算法及Verilog HDL实现 97

3.5.1 恢复余数开方算法 97

3.5.2 不恢复余数开方算法 100

3.5.3 Goldschmidt开方算法 105

3.5.4 Newton-Raphson开方算法 108

3.6 习题 111

第4章 指令系统及ALU设计 113

4.1 指令系统结构 113

4.1.1 操作数类型 113

4.1.2 数据在存储器中的存放方法 114

4.1.3 指令类型 115

4.1.4 指令结构 117

4.1.5 寻址方式 118

4.2 MIPS指令格式和通用寄存器定义 119

4.2.1 MIPS指令格式 119

4.2.2 MIPS通用寄存器 120

4.3 MIPS指令和ALU设计 120

4.3.1 本书CPU可执行的MIPS指令 120

4.3.2 ALU设计 123

4.4 习题 125

第5章 单周期CPU及其Verilog HIL设计 127

5.1 执行一条指令所需的硬件电路 127

5.1.1 与取指令有关的电路 127

5.1.2 寄存器计算类型指令执行时所需电路 128

5.1.3 立即数计算类型指令执行时所需电路 130

5.1.4 访问存储器类型指令执行时所需电路 130

5.1.5 条件转移类型指令执行时所需电路 131

5.1.6 跳转和子程序调用及返回类型指令执行时所需电路 132

5.2 寄存器堆设计 133

5.2.1 寄存器堆的硬件电路设计 133

5.2.2 结构描述风格的寄存器堆Verilog HDL代码 135

5.2.3 功能描述风格的寄存器堆Verilog HDL代码 138

5.3 数据路径设计 139

5.3.1 多路选择器的使用 139

5.3.2 单周期CPU的总体电路 142

5.3.3 单周期CPU的Verilog HDL代码 143

5.4 控制部件设计 144

5.4.1 控制部件的逻辑设计 145

5.4.2 控制部件的Verilog HDL代码 147

5.5 存储器及测试程序设计 149

5.5.1 数据存储器设计 149

5.5.2 指令存储器及测试程序设计 150

5.5.3 单周期CPU测试结果及说明 151

5.6 习题 156

第6章 异常和中断处理及其电路实现 158

6.1 异常和中断 158

6.1.1 异常和中断的定义与类型 158

6.1.2 查询中断和向量中断 159

6.1.3 中断屏蔽和中断嵌套 162

6.1.4 中断优先级 163

6.2 带有异常和中断处理功能的CPU的设计 164

6.2.1 异常和中断的处理过程以及相关的寄存器 164

6.2.2 与异常和中断有关的指令 165

6.2.3 带有异常和中断处理功能的CPU总体结构 166

6.2.4 带有异常和中断处理功能的CPU Verilog HDL代码 168

6.3 CPU的异常与中断测试 173

6.3.1 测试程序和测试数据 173

6.3.2 CPU异常及中断处理测试结果及说明 176

6.4 习题 181

第7章 多周期CPU及其Verilog HDL设计 182

7.1 把一条指令的执行分成若干个周期 182

7.1.1 取指令周期IF 183

7.1.2 指令译码周期ID 184

7.1.3 指令执行周期EXE 185

7.1.4 存储器访问周期MEM 188

7.1.5 结果写回周期WB 189

7.2 多周期CPU的总体电路及Verilog HDL代码 189

7.2.1 多周期CPU的总体电路 189

7.2.2 多周期CPU的Verilog HDL代码 189

7.3 用有限状态机实现多周期CPU的控制部件 191

7.3.1 多周期CPU的控制部件的状态转移图 191

7.3.2 多周期CPU的控制部件的总体结构 191

7.3.3 下一状态函数 192

7.3.4 控制信号的产生 193

7.3.5 控制部件的Verilog HDL代码 193

7.4 存储器及测试程序设计 198

7.4.1 存储器设计 198

7.4.2 测试程序代码 198

7.4.3 多周期CPU测试结果 199

7.5 习题 203

第8章 流水线CPU及其Verilog HDL设计 204

8.1 流水线技术的基本概念 204

8.1.1 取指令IF级的电路 206

8.1.2 指令译码ID级的电路 207

8.1.3 指令执行EXE级的电路 208

8.1.4 存储器访问MEM级的电路 208

8.1.5 结果写回WB级的电路 208

8.2 流水线CPU的相关问题及解决对策 210

8.2.1 数据相关及解决对策 210

8.2.2 控制相关及解决对策 214

8.3 流水线CPU的整体设计及Verilog HDL代码 215

8.3.1 流水线CPU的整体电路 215

8.3.2 流水线CPU的Verilog HDL代码 216

8.4 流水线CPU的测试 224

8.4.1 流水线CPU的测试程序 224

8.4.2 流水线CPU的仿真波形 225

8.5 精确中断和异常事件处理 228

8.5.1 异常事件和中断的种类以及相关的寄存器 228

8.5.2 流水线CPU的中断响应过程 229

8.5.3 流水线CPU处理异常事件 232

8.6 带有处理异常和中断功能的流水线CPU的设计 235

8.6.1 流水线CPU的总体结构 235

8.6.2 流水线CPU的Verilog HDL代码 236

8.6.3 异常和中断的测试程序与仿真波形 242

8.7 习题 245

第9章 浮点算法及FPU Verilog HDL设计 246

9.1 IEEE 754浮点数格式 246

9.2 单精度浮点数与整数之间的转换 247

9.2.1 浮点数转换成整数 247

9.2.2 整数转换成浮点数 251

9.3 浮点加法器FADD设计 253

9.3.1 浮点加法算法 253

9.3.2 浮点加法器Verilog HDL代码 255

9.3.3 流水线浮点加法器设计 262

9.4 浮点乘法器FMUL设计 269

9.4.1 浮点乘法算法 269

9.4.2 Wallace树型浮点乘法器Verilog HDL代码 271

9.4.3 流水线Wallace树型浮点乘法器设计 276

9.5 浮点除法器FDIV设计 282

9.5.1 浮点除法算法 282

9.5.2 Newton-Raphson浮点除法器Verilog HDL代码 283

9.6 浮点开方器FSQRT设计 292

9.6.1 浮点开方算法 292

9.6.2 Newton-Raphson浮点开方器Verilog HDL代码 293

9.7 习题 301

第10章 带有FPU的流水线CPU及其Verilog HDL设计 303

10.1 CPU/FPU流水线模型 303

10.1.1 CPU/FPU可执行的指令 303

10.1.2 CPU/FPU基本的流水线模型 304

10.2 带有两个写端口的寄存器堆设计 306

10.3 浮点数据相关以及流水线暂停 307

10.3.1 浮点运算结果的内部前推和流水线暂停 308

10.3.2 lwcl和swcl造成的流水线暂停及内部前推 310

10.3.3 浮点除法和开方指令造成的流水线暂停 315

10.4 带有FPU的流水线CPU的总体结构及Verilog HDL代码 316

10.4.1 带有FPU的流水线CPU的具体电路 317

10.4.2 浮点部件FPU的具体电路 318

10.4.3 整数部件IU的具体电路 319

10.4.4 带有FPU的流水线CPU的Verilog HDL代码 320

10.5 存储器模块及CPU/FPU的测试 328

10.5.1 指令存储器和数据存储器 328

10.5.2 CPU/FPU的测试程序 329

10.5.3 CPU/FPU的仿真波形 331

10.6 习题 335

第11章 多线程CPU及其Verilog HDL设计 337

11.1 多线程CPU概述 337

11.1.1 多线程CPU的基本概念 337

11.1.2 多线程CPU的基本结构 338

11.2 多线程CPU设计 338

11.2.1 线程的选择方法 338

11.2.2 多线程CPU的详细电路 339

11.2.3 多线程CPU的Verilog HDL代码 340

11.3 多线程CPU的仿真波形 343

11.4 习题 351

第12章 存储器和虚拟存储器管理 352

12.1 存储器 352

12.1.1 静态存储器(SRAM) 352

12.1.2 动态存储器(DRAM) 354

12.1.3 只读存储器(ROM) 354

12.1.4 相联存储器(CAM) 355

12.1.5 存储层次 356

12.2 高速缓存(Cache) 357

12.2.1 Cache的映像机制 358

12.2.2 Cache块的替换算法 360

12.2.3 Cache写策略 362

12.2.4 数据Cache电路设计及Verilog HDL代码 362

12.3 虚拟存储器管理及TLB设计 365

12.3.1 虚拟存储器与主存的关系 366

12.3.2 分段管理 366

12.3.3 分页管理 367

12.3.4 快速地址转换TLB及其电路设计 368

12.3.5 TLB与Cache的并行访问 372

12.4 MIPS基于TLB的虚拟地址转换机制 373

12.4.1 MIPS的虚拟地址空间 373

12.4.2 MIPS TLB的构成 374

12.4.3 MIPS虚拟地址转换 377

12.4.4 MIPS TLB维护指令 377

12.5 习题 380

第13章 带有Cache及TLB和FPU的CPU设计 382

13.1 Cache和TLB的总体结构 382

13.2 与Cache有关的电路设计 383

13.2.1 指令Cache的Verilog HDL代码 383

13.2.2 数据Cache和指令Cache与外部存储器的接口 384

13.2.3 Cache不命中时流水线暂停的电路 385

13.3 与TLB有关的电路设计 385

13.3.1 指令TLB(ITLB)和数据TLB(DTLB) 386

13.3.2 TLB不命中时异常信号的产生 386

13.3.3 与TLB不命中异常有关的寄存器 387

13.3.4 对TLB不命中异常的处理 391

13.4 带有Cache及TLB的CPU设计 392

13.4.1 带有Cache及TLB的CPU总体结构 392

13.4.2 带有Cache及TLB的CPU的Verilog HDL代码 393

13.5 带有Cache及TLB的CPU的测试程序和仿真波形 406

13.6 习题 414

第14章 多核CPU及其Verilog HDL设计 415

14.1 多核CPU概述 415

14.1.1 多核CPU的基本概念 415

14.1.2 多核CPU的Cache一致性问题 417

14.2 多核CPU设计 418

14.2.1 多核CPU的总体结构 418

14.2.2 多核对外部总线的竞争与仲裁 418

14.2.3 多核CPU的Verilog HDL代码 419

14.3 多核CPU的测试程序及仿真波形 421

14.4 习题 426

第15章 输入/输出接口及设计 427

15.1 I/O接口概述 427

15.1.1 I/O地址空间和I/O指令 427

15.1.2 I/O查询和中断 427

15.1.3 直接存储器访问DMA 428

15.1.4 总线和总线的同步方式 429

15.2 数据错误检测及校正 429

15.2.1 奇偶校验 429

15.2.2 错误纠正码ECC(扩展的海明码) 430

15.2.3 循环冗余校验CRC 431

15.3 异步通信接口UART 432

15.4 PS/2接口 441

15.4.1 PS/2键盘 442

15.4.2 PS/2鼠标 444

15.5 视频图像阵列VGA 446

15.5.1 VGA及其接口控制器设计 446

15.5.2 VGA显示键盘字符 456

15.6 I/O总线 461

15.6.1 I2C串行总线 461

15.6.2 PCI并行总线 472

15.7 习题 480

第16章 高性能计算机及互联网络设计 482

16.1 高性能计算机的种类 482

16.1.1 集中式共享存储器系统(SMP) 482

16.1.2 分布式共享存储器系统(DSM) 483

16.2 互联网络的构成 484

16.3 互联网络的拓扑特性 486

16.3.1 节点度(Degree) 486

16.3.2 直径(Diameter) 486

16.3.3 平均距离(Average Distance) 487

16.3.4 对分宽度(Bisection Bandwidth) 487

16.4 常用的互联网络 487

16.4.1 Mesh 487

16.4.2 Torus 487

16.4.3 Hypercube 488

16.4.4 Tree和Fat-Tree 488

16.5 基本的通信操作 489

16.5.1 一对多广播 490

16.5.2 多对多广播 491

16.5.3 一对多私通 491

16.5.4 多对多私通 492

16.6 新型互联网络 492

16.6.1 Dual-Cube 493

16.6.2 Metacube 497

16.6.3 RDN 499

16.7 习题 502

参考文献 503

图索引 505

表索引 515

术语索引 517