FPGA 数字设计和计算机体系结构 原书第2版-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

FPGA 数字设计和计算机体系结构 原书第2版

该帖子部分内容已隐藏
付费阅读
已售 1
3积分
作者:(美国)哈里斯 (David money harris) (美国)Sarah L.harris 译者:陈虎 目录出版者的话 相关评论 译者序 前言 第1章 二进制 1.1 课程计划 1.2 控制复杂性的艺术 1.2.1 抽象 1.2.2 约束 1.2.3 三条原则 1.3 数字抽象 1.4 数字系统 1.4.1 十进制数 1.4.2 二进制数 1.4.3 十六进制数 1.4.4 字节,半字节和全字 1.4.5 二进制加法 1.4.6 有符号的二进制数 1.5 逻辑门 1.5.1 非门 1.5.2 缓冲 1.5.3 与门 1.5.4 或门 1.5.5 其他二输入逻辑门 1.5.6 多输入门 1.6 数字抽象之下 1.6.1 电源电压 1.6.2 逻辑电平 1.6.3 噪声容限 1.6.4 直流电压传输特性 1.6.5 静态约束 1.7 CMOS晶体管 1.7.1 半导体 1.7.2 二极管 1.7.3 电容 1.7 4nMos和pMOS晶体管 1.7.5 CMOS非门 1.7.6 其他CMOS逻辑门 1.7.7 传输门 1.7.8 类nMOS逻辑 1.8 功耗 1.9 总结和展望 习题 第2章 组合逻辑设计 2.1 引言 2.2 布尔表达式 2.2.1 术语 2.2.2 与或式 2.2.3 或与式 2.3 布尔代数 2.3.1 公理 2.3.2 单变量定理 2.3.3 多变量定理 2.3.4 定理的统一证明方法 2.3.5 等式化简 2.4 从逻辑到门 2.5 多级组合逻辑 2.5.1 减少硬件 2.5.2 推气泡 2.6 X和Z 2.6.1 非法值x 2.6.2 浮空值z 2.7 卡诺图 2.7.1 画圈的原理 2.7.2 卡诺图化简逻辑 2.7.3 无关项 2.7.4 小结 2.8 组合逻辑模块 2.8.1 多路选择器 2.8.2 译码器 2.9 时序 2.9.1 传输延迟和最小延迟 2.9.2 毛刺 2.10 总结 习题 第3章 时序逻辑设计 3.1 引言 3.2 锁存器和触发器 3.2.1 SR锁存器 3.2.2 D锁存器 3.2.3 D触发器 3.2.4 寄存器 3.2.5 带使能端的触发器 3.2.6 带复位功能的触发器 3.2.7 晶体管级的锁存器和触发器设计 3.2.8 小结 3.3 同步逻辑设计 3.3.1 一些有问题的电路 3.3.2 同步时序电路 3.3.3 同步和异步电路 3.4 有限状态机 3.4.1 有限状态机设计实例 3.4.2 状态编码 3.4.3 Moore型状态机和Mealy型状态机 3.4.4 状态机的分解 3.4.5 有限状态机小结 3.5 时序逻辑电路的时序 3.5.1 动态约束 3.5.2 系统时序 3.5.3 时钟偏移 3.5 4亚稳态 3.5.5 同步器 3.5.6 分辨时间的推导 3.6 并行 3.7 总结 习题 第4章 硬件描述语言 4.1 引言 4.1.1 模块 4.1.2 硬件描述语言的起源 4.1.3 模拟和综合 4.2 组合逻辑 4.2.1 按位操作符 4.2.2 注释和空格 4.2.3 缩减运算符 4.2.4 条件赋值 4.2.5 内部变量 4.2.6 优先级 4.2.7 数字 4.2.8 z和x 4.2.9 位混合 4.2.1 0延迟 4.2.1 1VHDL库和类型 4.3 结构建模 4.4 时序逻辑 4.4.1 寄存器 4.4.2 可复位寄存器 4.4.3 带使能端的寄存器 4.4.4 多寄存器 4.4.5 锁存器 4.5 更多组合逻辑 4.5.1 选择语句 4.5.2 if语句 4.5.3 Verilog的easez语句 4.5.4 阻塞式和非阻塞式赋值 4.6 有限状态机 4.7 参数化模块 4.8 测试程序 4.9 总结 习题 第5章 常见数字模块 5.1 引言 5.2 算术电路 5.2.1 加法 5.2.2 减法 5.2.3 比较器 5.2.4 算术逻辑单元 5.2.5 移位器和循环移位器 5.2.6 乘法 5.2.7 除法 5.2.8 深入阅读 5.3 数制系统 5.3.1 定点数系统 5.3.2 浮点数系统 5.4 时序电路模块 5.4.1 计数器 5.4.2 移位寄存器 5.5 存储器阵列 5.5.1 概述 5.5.2 动态随机访问存储器 5.5.3 静态随机访问存储器 5.5.4 面积和延迟 5.5.5 寄存器文件 5.5.6 只读存储器 5.5.7 使用存储器阵列的逻辑 5.5.8 存储器的硬件描述语言 5.6 逻辑阵列 5.6.1 可编程逻辑阵列 5.6.2 现场可编程门阵列 5.6.3 阵列实现 5.7 总结 习题 第6章 体系结构 6.1 引言 6.2 汇编语言 6.2.1 指令 6.2.2 操作数:寄存器、存储器和常数 6.3 机器语言 6.3.1 R一类型指令 6.3.2 I一类型指令 6.3.3 J一类型指令 6.3.4 解释机器语言码 6.3.5 程序存储 6.4 编程 6.4.1 算术/逻辑指令 6.4.2 分支 6.4.3 条件语句 6.4.4 循环 6.4.5 数组 6.4.6 过程调用 6.5 寻址方式 6.6 编译、汇编和加载 6.6.1 内存图 6.6.2 转换成二进制代码和开始执行程序 6.7 其他主题 6.7.1 伪指令 6.7.2 异常 6.7.3 有符号和无符号的指令 6.7.4 浮点指令 6.8 真实世界透视:IA一32结构 6.8.1 IA一32的寄存器 6.8.2 IA一32的操作数 6.8.3 状态标志 6.8.4 IA一32指令集 6.8.5 IA一32指令编码 6.8.6 IA一32的其他特性 6.8.7 小结 6.9 总结 习题 第7章 微结构 7.1 引言 7.1.1 体系结构状态和指令集 7.1.2 设计过程 7.1.3 MIPS微结构 7.2 性能分析 7.3 单周期处理器 7.3.1 单周期数据路径 7.3.2 单周期控制 7.3.3 更多指令 7.3.4 性能分析 7.4 多周期处理器 7.4.1 多周期数据路径 7.4.2 多周期控制 7.4.3 更多指令 7.4.4 性能分析 7.5 流水线处理器 7.5.1 流水线数据路径 7.5.2 流水线控制 7.5.3 冲突 7.5.4 更多指令 7.5.5 性能分析 7.6 硬件描述语言表示 7.6.1 单周期处理器 7.6.2 通用模块 7.6.3 测试程序 7.7 异常 7.8 高级微结构 7.8.1 深流水线 7.8.2 分支预测 7.8.3 超标量处理器 7.8.4 乱序处理器 7.8.5 寄存器重命名 7.8.6 单指令流多数据流 7.8.7 多线程 7.8.8 多处理器 7.9 现实世界透视:IA一32微结构 7.10 总结 习题 第8章 存储器系统 8.1 引言 8.2 存储器系统性能分析 8.3 高速缓存 8.3.1 高速缓存中存放的数据 8.3.2 高速缓存中的数据查找 8.3.3 数据的替换 8.3.4 高级高速缓存设计 8.3.5 MIPS处理器中高速缓存的发展 8.4 虚拟存储器 8.4.1 地址转换 8.4.2 页表 8.4.3 地址转换后备缓冲 8.4.4 存储器保护 8.4.5 替换策略 8.4.6 多级页表 8.5 内存映射I/O 8.6 现实世界透视:IA一32存储器和I/O系统 8.6.1 IA一32高速缓存系统 8.6.2 IA一32虚拟存储器 8.6.3 IA一32的直接I/O编程机制 8.7 总结 习题 附录A数字系统实现 附录BMIPS指令 延伸阅读材料
Digital Design and Computer Architecture,Second Edition
出版者的话
译者序
本书赞誉
前言
第1章二进制1
1.1课程计划1
1.2控制复杂性的艺术1
1.2.1抽象1
1.2.2约束2
1.2.3三Y原则3
1.3数字抽象3
1.4数制4
1.4.1十进制数4
1.4.2二进制数5
1.4.3十六进制数6
1.4.4字节、半字节和全字7
1.4.5二进制加法8
1.4.6有符号的二进制数8
1.5逻辑门10
1.5.1非门11
1.5.2缓冲器11
1.5.3与门11
1.5.4或门11
1.5.5其他两输入逻辑门11
1.5.6多输入门12
1.6数字抽象13
1.6.1电源电压13
1.6.2逻辑电平13
1.6.3噪声容限13
1.6.4直流电压传输特性14
1.6.5静态约束15
1.7CMOS晶体管*16
1.7.1半导体16
1.7.2二极管17
1.7.3电容17
1.7.4nMOS和pMOS晶体管17
1.7.5CMOS非门19
1.7.6其他CMOS逻辑门19
1.7.7传输门20
1.7.8类nMOS逻辑20
1.8功耗*21
1.9总结和展望22
习题22
面试问题28
第2章组合逻辑设计29
2.1引言29
2.2布尔表达式31
2.2.1术语31
2.2.2与或式31
2.2.3或与式32
2.3布尔代数33
2.3.1公理33
2.3.2单变量定理33
2.3.3多变量定理34
2.3.4定理的统一证明方法35
2.3.5等式化简36
2.4从逻辑到门37
2.5多级组合逻辑39
2.5.1减少硬件39
2.5.2推气泡40
2.6X和Z41
2.6.1非法值X41
2.6.2浮空值Z41
2.7卡诺图42
2.7.1画圈的原理43
2.7.2卡诺图化简逻辑44
2.7.3无关项46
2.7.4小结47
2.8组合逻辑模块47
2.8.1复用器47
2.8.2译码器50
2.9时序51
2.9.1传播延迟和最小延迟51
2.9.2毛刺54
2.10总结55
习题55
面试问题60
第3章时序逻辑设计61
3.1引言61
3.2锁存器和触发器61
3.2.1SR锁存器62
3.2.2D锁存器63
3.2.3D触发器64
3.2.4寄存器64
3.2.5带使能端的触发器65
3.2.6带复位功能的触发器65
3.2.7晶体管级锁存器和触发器的设计*66
3.2.8小结66
3.3同步逻辑设计67
3.3.1一些有问题的电路67
3.3.2同步时序电路68
3.3.3同步电路和异步电路70
3.4有限状态机70
3.4.1有限状态机设计实例70
3.4.2状态编码74
3.4.3Moore型状态机和Mealy型状态机76
3.4.4状态机的分解79
3.4.5由电路图导出状态机80
3.4.6有限状态机小结82
3.5时序逻辑的时序82
3.5.1动态约束83
3.5.2系统时序83
3.5.3时钟偏移*87
3.5.4亚稳态88
3.5.5同步器89
3.5.6分辨时间的推导*90
3.6并行92
3.7总结94
习题95
面试问题100
第4章硬件描述语言101
4.1引言101
4.1.1模块101
4.1.2硬件描述语言的起源101
4.1.3模拟和综合102
4.2组合逻辑104
4.2.1位运算符104
4.2.2注释和空白104
4.2.3缩位运算符106
4.2.4条件赋值106
4.2.5内部变量106
4.2.6优先级109
4.2.7数字109
4.2.8Z和X110
4.2.9位混合111
4.2.10延迟112
4.3结构化建模113
4.4时序逻辑115
4.4.1寄存器115
4.4.2复位寄存器115
4.4.3带使能端的寄存器116
4.4.4多寄存器116
4.4.5锁存器119
4.5更多组合逻辑119
4.5.1case语句120
4.5.2if语句122
4.5.3带有无关项的真值表122
4.5.4阻塞赋值和非阻塞赋值124
4.6有限状态机127
4.7数据类型*130
4.7.1SystemVerilog130
4.7.2VHDL131
4.8参数化模块*133
4.9测试程序135
4.10总结138
习题138
面试问题145
第5章数字模块146
5.1引言146
5.2算术电路146
5.2.1加法146
5.2.2减法151
5.2.3比较器152
5.2.4算术逻辑单元153
5.2.5移位器和循环移位器154
5.2.6乘法*155
5.2.7除法*156
5.2.8补充阅读156
5.3数制157
5.3.1定点数157
5.3.2浮点数*157
5.4时序电路模块160
5.4.1计数器160
5.4.2移位寄存器160
5.5存储器阵列162
5.5.1概述162
5.5.2动态随机访问存储器164
5.5.3静态随机访问存储器165
5.5.4面积和延迟165
5.5.5寄存器文件165
5.5.6只读存储器165
5.5.7使用存储器阵列的逻辑167
5.5.8存储器HDL167
5.6逻辑阵列168
5.6.1可编程逻辑阵列169
5.6.2现场可编程逻辑门阵列169
5.6.3阵列实现*173
5.7总结174
习题174
面试问题180
第6章体系结构181
6.1引言181
6.2汇编语言182
6.2.1指令182
6.2.2操作数:寄存器、存储器和常数183
6.3机器语言187
6.3.1R类型指令187
6.3.2l类型指令188
6.3.3J类型指令189
6.3.4解释机器语言代码189
6.3.5存储程序189
6.4编程190
6.4.1算术/逻辑指令190
6.4.2分支193
6.4.3条件语句194
6.4.4循环195
6.4.5数组197
6.4.6函数调用200
6.5寻址方式206
6.6编译、汇编和装入208
6.6.1内存映射208
6.6.2转换成二进制代码和开始执行程序209
6.7其他主题*211
6.7.1伪指令211
6.7.2异常212
6.7.3有符号指令和无符号指令212
6.7.4浮点指令213
6.8从现实世界看:x86结构*214
6.8.1×86寄存器215
6.8.2×86操作数215
6.8.3状态标志216
6.8.4×86指令集216
6.8.5×86指令编码218
6.8.6×86的其他特性219
6.8.7小结219
6.9总结219
习题220
面试问题227
第7章微体系结构228
7.1引言228
7.1.1体系结构状态和指令集228
7.1.2设计过程229
7.1.3MIPS微体系结构230
7.2性能分析230
7.3单周期处理器231
7.3.1单周期数据路径231
7.3.2单周期控制235
7.3.3更多指令237
7.3.4性能分析239
7.4多周期处理器240
7.4.1多周期数据路径240
7.4.2多周期控制244
7.4.3更多指令252
7.4.4性能分析254
7.5流水线处理器255
7.5.1流水线数据路径257
7.5.2流水线控制258
7.5.3冲突258
7.5.4更多指令269
7.5.5性能分析269
7.6硬件描述语言表示*270
7.6.1单周期处理器270
7.6.2通用模块274
7.6.3基准测试程序276
7.7异常*279
7.8高级微体系结构*281
7.8.1深流水线282
7.8.2分支预测282
7.8.3超标量处理器284
7.8.4乱序处理器285
7.8.5寄存器重命名287
7.8.6单指令流多数据288
7.8.7多线程288
7.8.8同构多处理器289
7.8.9异构多处理器289
7.9从现实世界看:x86微体系结构*290
7.10总结295
习题296
面试问题300
第8章存储器和输入/输出系统301
8.1引言301
8.2存储器系统性能分析304
8.3高速缓存305
8.3.1高速缓存中存放的数据305
8.3.2高速缓存中的数据查找305
8.3.3数据的替换311
8.3.4高级高速缓存设计*312
8.3.5MIPS高速缓存的发展*314
8.4虚拟存储器315
8.4.1地址转换316
8.4.2页表317
8.4.3转换后备缓冲器318
8.4.4存储器保护319
8.4.5替换策略*319
8.4.6多级页表*319
8.5I/O简介321
8.6嵌入式I/O系统322
8.6.1PIC32MX675F512H微控制器322
8.6.2通用数字I/O326
8.6.3串行I/O328
8.6.4计时器336
8.6.5中断337
8.6.6模拟I/O339
8.6.7其他微控制器外设343
8.7PC I/O系统358
8.7.1USB359
8.7.2PCI和PCI Express360
8.7.3DDR3内存360
8.7.4网络360
8.7.5SATA361
8.7.6连接到PC361
8.8从现实世界看:x86存储器和I/O系统*363
8.8.1×86高速缓存系统363
8.8.2×86虚拟存储器364
8.8.3×86可编程I/O365
8.9总结365
后记365
习题365
面试问题371
附录A数字系统实现372
附录BMIPS指令396
附录CC语言编程400
附录DMIPS处理器的FPGA实现433
补充阅读452
索引454
 Digital Design and Computer ArchitectureSecond Edition目前已经有很多优秀的数字逻辑设计书籍,也有一些很好的计算机体系结构教材(例如,Patterson和Hennessy撰写的经典教材),为什么还需要出版一本包含了数字逻辑设计和体系结构的书呢?本书的独特之处在于从计算机体系结构的视角来学习数字逻辑设计,内容从基本的二进制开始,直到引导学生完成MIPS处理器的设计。
  多年来,我们曾在哈维玛德学院使用了多个版本的《Computer Organization and Design》(计算机组成与设计)(由Patterson和Hennessy撰写)。我们特别欣赏该书覆盖了MIPS处理器的体系结构和微体系结构,因为MIPS处理器是获得商业成功的体系结构,而且它也非常简单,可以在导论课程中向学生解释清楚,并可以由学生自主设计和实现。由于我们的课程没有预修课程,所以前半个学期需要介绍数字逻辑设计,而这部分没有被《Computer Organization and Design》所包含。其他大学也表示需要一本能包含数字电路设计和体系结构的教材。于是,我们着手开始准备这样一本包含了数字逻辑设计和体系结构的书。
  我们相信设计处理器对于电子工程和计算机专业的学生是一个特殊而重要的经历。对外行而言,处理器内部的工作几乎像魔术一样,然而事实证明,如果详细解释,处理器的工作原理就非常易于理解。数字逻辑设计本身是一个令人激动的主题。汇编语言程序则揭示了处理器内部所用的语言。而微体系结构将两者联系在一起。
  本书适合于在一个学期内完成教学的数字逻辑设计和计算体系结构入门课程,也可以用于两个学期的教学,以便用更多的时间来消化和理解书中所讲的知识并在实验室中进行实践。不需要任何预修内容也可以教授这个课程。本书一般在大学本科二年级或者三年级使用,也可以提供给聪明的一年级学生学习。
  特点本书有以下特点。
  并列讲述SystemVerilog和VHDL语言硬件描述语言(Hardware Description LanguageHDL)是现代数字逻辑设计实践的中心,而设计者分成了SystemVerilog语言和VHDL语言两个阵营。在介绍了组合逻辑和时序逻辑设计后,本书紧接着就在第4章介绍硬件描述语言。硬件描述语言将在第5章和第7章用于设计更大的模块和整个处理器。然而,如果不讲授硬件描述语言,那么可以跳过第4章,而后续章节仍然可以继续使用。
  本书的特色在于使用并列方式讲述SystemVerilog和VHDL,使读者可以快速地对比两种语言。第4章描述适用于这两种硬件描述语言的原则,而且并列给出了这两种语言的语法和实例。这种并列方法使得在教学中教师可以选择其中一种硬件描述语言来讲述,也可以让读者在专业实践中很快地从一种描述语言转到另一种描述语言。
  经典的MIPS体系结构和微体系结构第6章和第7章主要介绍MIPS体系结构。这部分内容主要改编自Patterson和Hennessy的论著。MIPS是一个理想的体系结构,因为每年有上百万实际产品投入使用,而且高效和易于学习。同时,世界各地上百所大学已经围绕MIPS体系结构开发了教学内容、实验和工具。
  现实视角第6、7、8章列举了Intel公司x86处理器系列的体系结构、微体系结构和存储器层次结构。第8章还介绍了Microchip PIC32微控制器的外部设备。这些章节揭示了书中所讲的概念如何应用到很多PC内部芯片和消费电子产品的设计中。
  高级微体系结构概览第7章介绍了现代高性能微体系结构的特征,包括分支预测、超标量、乱序执行操作、多线程和多核处理器。这些内容对于第一次上体系结构课程的学生比较容易理解,并说明了本书介绍的微体系结构原理是如何扩展到现代处理器的设计中的。
  章末的习题和面试问题学习数字设计的最佳方式是实践。每章的最后有很多习题来实际应用所讲述的内容。习题后面是同行向申请这个领域工作的学生提出的一些面试问题。这些问题可以让学生感受到面试过程中可能遇见的典型问题。习题答案可以通过本书的配套网站和教师网站获得。更详细的内容参见下文——在线补充资料。
  在线补充资料.关于本书教辅资源,使用教材的教师需通过爱思唯尔的教材网站注册并通过审批后才能获取。本书配套网站(对所有读者开放)包括了以下内容:
  ●奇数编号习题的答案。
  ●Altera和Synopsys公司专业版计算机辅助设计工具的链接。
  ●QtSpim(一般称为SPIM)的链接,一个MIPS模拟器。
  ●MIPS处理器的硬件描述语言(HDL)代码。
  ●Altera Quartus Ⅱ工具的提示。
  ●Microchip MPLAB IDE(集成开发环境)工具的提示。
  ●PPT格式的电子教案。
  ●课程示例和实验素材。
  ●勘误表。
  教师网站包括:
  ●所有习题的答案。
  ●Altera和Synopsys公司专业版计算机辅助设计工具的链接(Synopsys公司为取得资格认证的大学提供Synplify Premier工具的50个许可证。更多Synopsys大学计划内容请参见本书教师网站)。
  ●JPG格式和PPT格式的书中插图。
  关于在课程中使用Altera、Synopsys、Microchip和QtSpim工具的更详细的内容请参见下文。构建实验工具的细节也将在下面介绍。
  如何使用课程中的软件工具Altera Quartus IIQuartus Ⅱ Web Edition是QuartusTM Ⅱ FPGA设计工具的免费版本。基于此软件,学生可以使用原理图或者硬件描述语言(SystemVerilog或VHDL)完成数字逻辑设计。在完成设计后,学生可以使用Altera Quartus Ⅱ Web Edition中包含的ModelSimTMAltera Starter Edition工具模拟电路。Quartus Ⅱ Web Edition还包含支持SystemVerilog或者VHDL的内置逻辑综合工具。
  Web Edition和Subscription Edition两个软件的区别在于,Web Edition仅支持Altera公司部分常用的FPGA器件。ModelSimAltera Starter Edition和ModelSim商业版的区别在于,Starter Edition降低了10000多行硬件描述语言代码的模拟速度。
  Microchip MPLAB IDEMicrochip MPLAB IDE是用于PIC微控制器编程的工具,可免费下载。MPLAB将程序的编写、编译、模拟和调试集成到一个界面。它包括一个C编译器和调试器,允许学生开发C语言和汇编程序,编译它们,以及可选择地将它们编程到PIC微控制器。
  可选工具:Synplify Premier和QtSpimSynplify Premier和QtSpim是本课程资料的可选工具。
  Synplify Premier产品是一个面向FPGA和CPLD设计的综合和调试环境。它包含HDL Analyst,一个独特的图形化HDL分析工具,自动生成可以回HDL源代码交叉探测的设计示意图。在学习和调试过程中这非常有用。
  Synopsys公司为取得资格认证的大学提供SynplifyPremier工具的50个许可证。更多关于Synopsys大学计划内容或者Synopsys FPGA设计软件信息,请参见本书教师网站(textbooks elsevier com/9780123944245)。
  QtSpim(简称为SPIM)是一个可运行MIPS汇编代码的MIPS模拟器。学生可以在文本文件中输入MIPS汇编代码,通过QtSpim进行模拟。QtSpim显示指令、存储器和寄存器的值。用户手册和示例文件的链接可以通过本书配套网站(textbooks elsevier com/9780123944245)访问。
  实验配套网站提供了从数字逻辑设计到计算机体系结构的一系列实验的链接。这些实验教学生如何使用Quartus Ⅱ工具来输入、模拟、综合和实现他们的设计。这些实验也包含了使用Microchip MPLAB IDE完成C语言和汇编语言编程的内容。
  经过综合后,学生可以在Altera DE2开发和教育板上实现自己的设计。这个功能强大且具有价格优势的开发板可以通过获得。该开发板包含可通过编程来实现学生设计的FPGA。我们提供的实验描述了如何使用Cyclone Ⅱ Web Edition在DE2开发板上实现一些设计。
  为了运行这些实验,学生需要下载并安装Altera Quartus Ⅱ Web Edition和Microchip MPLAB IDE。教师也需要选择软件安装在实验室的机器上。这些实验包括如何在DE2开发板上实现项目的指导。这些实现步骤可以跳过,但是我们认为它有很大的价值。
  我们在Windows平台上测试了所有的实验,当然这些工具也可以在Linux上使用。
  错误正如所有有经验的程序员所知道的,比较复杂的程序都毫无疑问存在潜在的错误。本书也不例外。我们花费了大量的精力查找和去除本书的错误。然而,错误仍然不可避免。我们将在本书的网站上维护和更新勘误表。
  请将你发现的错误发送。第一个报告实质性错误而且在后续版本中采用了其修改意见的读者可以得到1美元的奖励!
  致谢首先,我们要感谢David Patterson和John Hennessy。他们在《Computer Organization and Design》(计算机组成与设计)一书中对MIPS微体系结构进行了开创性的介绍。我们多年以来讲授了该书的多个版本。感谢他们对这本书的慷慨支持,以及允许在他们的微体系结构上进行设计。
  我们喜爱的卡通画作家Duane Bibby花费了很长时间和努力来说明数字电路设计中有趣的奇遇。我们也很感激Morgan Kaufamann公司的Nate McFadden、Todd Green、Danielle Miller、Robyn Day以及团队的其他同事,没有他们的热情支持,本书将无法面世。
  我们要感谢Matthew Watkins为第7章“异构多处理器”一节撰稿。我们也感谢Chris Parks、Carl Pearson和Johnathan Chai为本书第2版测试代码和开发内容。
  很多评阅人也对本书的质量给予了很大的帮助。他们包括:John Barr、Jack V.Briner、Andrew C.Brown、Carl Baumgaertner、A.Utku Diril、Jim Frenzel、Jaeha Kim、Phillip King、James Pinter.Lucke、Amir Roth、Z.Jerry Shi、James E.Stine、Luke Teyssier、Peiyi Zhao、Zach Dodds、Nathaniel Guy、Aswin Krishna、Volnei Pedroni、Karl Wang、Ricardo Jasinski以及一位匿名评阅人。
  我们也非常感谢哈维玛德学院上这个课程的学生,他们对本书的草稿提供了有帮助的反馈。需要特别记住的是:Matt Weiner、Carl Walsh、Andrew Carter、Casey Schilling、Alice Clifton、Chris Acon和Stephen Brawner。
  最后,但同样重要的是,我们要感谢家人的爱和支持。
 
请登录后发表评论

    没有回复内容