计算机体系结构:嵌入式方法
作者 : Ian McLoughlin (新加坡南洋理工大学)著
译者 : 王沁 齐悦 译
丛书名 : 计算机科学丛书
出版日期 : 2012-07-02
ISBN : 978-7-111-37904-1
定价 : 59.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 347
开本 : 16
原书名 : Computer Architecture: An Embedded Approach
原出版社: McGraw-Hill
属性分类: 教材
包含CD :
绝版 :
图书简介

本书在传统的计算机体系结构教科书的基础之上扩展了嵌入式系统的内容,并以新颖而完整的视角看待今天的计算机体系结构。前两章讲了计算机的发展和算术处理基础知识,随后分别介绍了CPU结构、功能单元、性能优化、外部接口、实际嵌入式处理和计算的未来。本书不仅通过大量的图表和例子来增强可读性,同时文中还穿插了许多注释框来拓宽读者的视野,其中包括一些额外的例子、有趣的信息摘要和附加的解释。书中除了包含嵌入式工程师所需的所有与典型计算机体系结构理论课程有关的主要内容外,还包括大量对目标读者有用的信息——甚至给读者提供建立和测试自定义软核处理器的机会,每一个主要的章节末尾都配有思考题。

图书特色

计算机体系结构
嵌入式方法
Computer Architecture
An Embedded Approach
Ian McLoughlin (新加坡南洋理工大学) 著 王沁 齐悦 (北京科技大学) 译
计算机科学正在发生深刻的变革,随着嵌入式系统的广泛应用,每年全世界售出的嵌入式计算机大约是桌面计算机的40倍,大学毕业生将更多地从事嵌入式系统硬件的设计,而不是设计一个传统的桌面计算机。计算学科发展和产业界的技术进步,要求高等教育也进行与时俱进的改革。本书采用现代视角来看待当今的计算机体系结构,强调日益重要的嵌入式系统,以满足教育界和工业界对于硬件设计人才培养的需求。
本书在提供计算机体系结构背景知识的基础上,将讲述的重点放在我们每天生活和工作都要依赖的嵌入式系统上。书中首先介绍了算术和处理中的基础知识,随后分几章讨论了CPU结构、功能单元、性能优化、外部接口、实际嵌入式处理和计算的未来。本书还提出了嵌入式工业中关键的几个特定主题,以及在CPU设计项目中包含设计、仿真、测试和规划一个简单嵌入式计算机的一切必要步骤。
本书所采用的嵌入式系统相关的方法,使得书中的知识内容更加贴近工业界的需要,激励学生更投入地学习,并构建起该门课程与传统课程体系内其他相关课程(如电子学、计算机工程或计算机科学课程)的相互联系。本书不是在传统计算机体系结构教材的基础上扩展了嵌入式系统的一章,而是以新颖的视角来看待今天的计算机体系结构——它以历史上巨大而古老的机器为基础,现在正朝着嵌入式系统高度集成化的方向不断发展。
作者简介
Ian McLoughlin 现任新加坡南洋理工大学计算机工程学院副教授,拥有英国伯明翰大学博士学位。过去的20年,他在三大洲的工业部门、政府部门和学术界都工作过。作为经验丰富的工程师,他设计和工作的系统涉及航空、电信、日常消费品等诸多领域。他经常主持面向电子行业的技术培训课程,并为嵌入式系统(尤其是与音频和无线技术相关)的开发项目提供咨询和顾问服务。由于其在农村电信解决方案方面的杰出工作,他与新西兰大吉电子有限公司(Tait Electronics Ltd)的团队成员在2005年荣获首届IEE工程创新奖。他是IET会员、IEEE高级会员、英国注册工程师和全欧工程师。

图书前言

在任何时候都有大批关于计算机体系结构的书籍出版。许多著名作者都试图在该领域有所作为,然而,计算机是一个高速发展的领域,因此,几乎没有书籍可以不加改动便能跟上时代的步伐。首先,向嵌入式计算系统的迅速转变就让许多作者及其所写的东西落伍了。有些教科书坚持将计算机看做是20世纪50~60年代像房子大小的机器,而更多的是将计算机视为20世纪80~90年代的台式机和服务器。只有少数人认为绝大多数现代计算机已经嵌入到我们日常所见的物品中,且几乎还没有人意识到未来是嵌入式的,即终有一天台式计算机将会和50年前的穿孔卡片计算机一样,被认为是过时的。
  本书面向嵌入式计算的未来。关于嵌入式处理器的论题将与其他教科书中的更为传统的论题放在一起讨论,而且会尽可能强调来自嵌入式世界的实例。
  这本书的目标读者主要由三部分人群组成。首先是选择了计算机体系结构相关课程的本科生,尤其是大三学生。其次是那些在开始一个更深层次的课题之前需要计算机体系结构最新知识的研究生们。第三类便是行业工程师。随着可重构逻辑电路,特别是FPGA(现场可编程门阵列)不断变大、变快和更加廉价,人们对于软核计算机愈发感兴趣,它是由工程师为特定任务而设计的CPU。这也许是有史以来第一次,设计工具让普通工程师有机会设计和构建自己定制的计算机。这本书将会为工程师们提供一个理解计算机体系结构的传统和现代技术及其权衡取舍的坚固的知识平台,这是一门计算机设计的艺术。
  本书以全新的视角写作而成,不会依靠任何一本现有书籍。这种做法能让本书避免许多计算机发展史上人们走过的死胡同和无关区域,并使它有一个更加精确定义的目标。本书不仅仅在计算机体系结构教科书的基础之上扩展了几章嵌入式系统内容,而且以新颖而又完整的视角来看待今天的计算机体系结构——它以历史上巨大而古老的机器为基础,现在正朝着嵌入式系统高度集成化的方向不断发展。
  该书旨在通俗易懂。在书中穿插了许多图表,以便读者理解那些晦涩难懂的概念,同时也有许多注释框贯穿全文,其中包括一些额外的例子、有趣的信息摘要和附加的解释,用于扩充正文。除了包含嵌入式工程师所需的所有与典型计算机体系结构理论课程有关的主要内容外(这其中不包括磁带存储、温切斯特驱动器和超级计算机设计),本书还包括大量对目标读者有用的信息——甚至给读者提供建立和测试自定义软核处理器的机会。
  本书通篇将使用国际单位(SI),也包括新的计算机存储度量单位KiB和MiB(在附录A里有相关解释)。每一个主要的章节末尾都配有思考题,在教师手册中有参考答案。更多的例子和推荐的进一步阅读材料参见本书相关网站www.mheducation.asia/olc/mcloughlin。

Ian McLoughlin

上架指导

计算机\计算机组成

封底文字

计算机科学正在发生深刻的变革,随着嵌入式系统的广泛应用,每年全世界售出的嵌入式系统大约是桌面计算机的40倍,大学毕业生将更多地从事嵌入式系统硬件的设计,而不是设计一个传统的桌面计算机。学科发展和产业界的技术进步,要求高等教育也进行与时俱进的改革。本书采用现代视角来看待当今的计算机体系结构,强调日益重要的嵌入式系统,以满足教育界和工业界对于硬件设计人才培养的需求。

本书在提供计算机体系结构背景知识的基础上,将讲述的重点放在我们每天生活和工作都要依赖的嵌入式系统上。书中首先介绍了算术和处理中的基础知识,随后分几章讨论了CPU结构、功能单元、性能优化、外部接口、实际嵌入式处理和计算的未来。本书还提出了嵌入式工业中关键的几个特定主题,以及在CPU设计项目中包含设计、仿真、测试和规划一个简单嵌入式计算机的一切必要步骤。

本书所采用的嵌入式系统相关的方法,使得书中的知识内容更加贴近工业界的需要,激励学生更投入地学习,并构建起该门课程与传统课程体系内其他相关课程(如电子学、计算机工程或计算机科学课程)的相互联系。本书不是在传统计算机体系结构教材的基础上扩展了嵌入式系统的一章,而是以新颖的视角来看待今天的计算机体系结构——它以历史上巨大而古老的机器为基础,现在正朝着嵌入式系统高度集成化的方向不断发展。

作者简介

Ian McLoughlin (新加坡南洋理工大学)著:Ian McLoughlin 现任新加坡南洋理工大学计算机工程学院副教授,拥有英国伯明翰大学博士学位。过去的20年,他在三大洲的工业部门、政府部门和学术界都工作过。作为经验丰富的工程师,他设计和工作的系统涉及航空、电信、日常消费品等诸多领域。他经常主持面向电子行业的技术培训课程,并为嵌入式系统(尤其是与音频和无线技术相关)的开发项目提供咨询和顾问服务。由于其在农村电信解决方案方面的杰出工作,他与新西兰大吉电子有限公司(Tait Electronics Ltd)的团队成员在2005年荣获首届IEE工程创新奖。他是IET会员、IEEE高级会员、英国注册工程师和全欧工程师。

译者简介

王沁 齐悦 译:暂无简介

图书目录

出版者的话
前言
致谢
第1章 引言1
 1.1 本书组织结构1
 1.2 进化过程1
 1.3 计算机发展阶段划分4
  1.3.1 第一代计算机4
  1.3.2 第二代计算机4
  1.3.3 第三代计算机5
  1.3.4 第四代计算机6
  1.3.5 第五代计算机7
 1.4 云、普适、网格和超并行计算机7
 1.5 未来8
 1.6 小结9
第2章 基础知识10
 2.1 计算机组成10
  2.1.1 Flynn分类法10
  2.1.2 连接方式11
  2.1.3 计算机结构层次视图11
 2.2 计算机基本原理12
 2.3 数字格式15
  2.3.1 无符号二进制15
  2.3.2 原码15
  2.3.3 反码15
  2.3.4 补码15
  2.3.5 移码(excess-n)16
  2.3.6 BCD码16
  2.3.7 定点数表示法17
  2.3.8 符号扩展17
 2.4 算术运算18
  2.4.1 加法18
  2.4.2 并行进位传递加法器18
  2.4.3 超前进位20
  2.4.4 减法20
 2.5 乘法21
  2.5.1 加法迭代法22
  2.5.2 部分积方法22
  2.5.3 移位加方法24
  2.5.4 Booth和Robertson方法25
 2.6 除法26
 2.7 定点数格式的运算28
  2.7.1 定点数的运算28
  2.7.2 定点数的乘除29
 2.8 浮点数30
  2.8.1 广义浮点数30
  2.8.2 IEEE754浮点标准30
  2.8.3 IEEE754标准模式31
   2.8.3.1 规格化模式31
   2.8.3.2 非规格化模式32
   2.8.3.3 其他模式数33
  2.8.4 IEEE754数的范围33
 2.9 浮点数处理35
  2.9.1 IEEE754数的加减运算36
  2.9.2 IEEE754数的乘除法38
  2.9.3 IEEE754中间格式38
  2.9.4 舍入39
 2.10 小结39
 思考题40
第3章 CPU基础42
 3.1 什么是计算机42
 3.2 让计算机为你服务42
  3.2.1 程序存储42
  3.2.2 存储架构43
  3.2.3 程序传输44
  3.2.4 控制单元44
  3.2.5 微指令48
  3.2.6 RISC和CISC的对比49
  3.2.7 处理器实例51
 3.3 指令处理51
  3.3.1 指令集52
  3.3.2 取指和译码54
   3.3.2.1 指令译码55
   3.3.2.2 取操作数55
   3.3.2.3 分支56
   3.3.2.4 立即数57
  3.3.3 压缩指令集57
  3.3.4 寻址模式59
  3.3.5 堆栈机和逆波兰表示法61
 3.4 数据处理62
  3.4.1 数据的格式和表达63
  3.4.2 数据流65
  3.4.3 数据存储66
  3.4.4 内部数据66
  3.4.5 数据处理67
   3.4.5.1 在小位宽CPU上处理大位宽数字67
   3.4.5.2 定点CPU上的浮点数68
   3.4.5.3 复数69
 3.5 自顶向下方法69
  3.5.1 计算机的能力69
   3.5.1.1 功能70
   3.5.1.2 时钟频率70
   3.5.1.3 位宽70
   3.5.1.4 内存70
  3.5.2 性能衡量和统计70
  3.5.3 性能评估72
 3.6 小结73
 思考题74
第4章 处理器内部组成76
 4.1 内部总线结构76
  4.1.1 程序员的角度76
  4.1.2 分解互联排列77
  4.1.3 ADSP21xx总线排列78
  4.1.4 数据与程序同时访存78
  4.1.5 双总线体系结构80
  4.1.6 单总线体系结构81
 4.2 算术逻辑单元82
  4.2.1 ALU功能82
  4.2.2 ALU设计83
 4.3 内存管理单元85
  4.3.1 对虚拟存储的需求85
  4.3.2 MMU操作85
  4.3.3 退回算法87
  4.3.4 内部存储碎片和片段87
  4.3.5 外部碎片88
  4.3.6 改进的MMU89
  4.3.7 内存保护89
 4.4 cache90
  4.4.1 直接相联cache92
  4.4.2 组相联cache93
  4.4.3 全相联cache94
  4.4.4 局部性原则94
  4.4.5 cache替换算法95
  4.4.6 cache性能98
  4.4.7 cache一致性99
 4.5 协处理器100
 4.6 浮点运算单元101
  4.6.1 浮点仿真102
 4.7 SIMD流指令扩展(SSE)和多媒体扩展103
  4.7.1 多媒体扩展(MMX)103
  4.7.2 MMX实现103
  4.7.3 MMX的使用104
  4.7.4 SIMD流指令扩展(SSE)105
  4.7.5 使用SSE和MMX105
 4.8 嵌入式系统中的协处理105
 4.9 小结106
 思考题107
第5章 提高CPU性能110
 5.1 CPU加速技术简介110
 5.2 流水线111
  5.2.1 多功能流水线112
  5.2.2 动态流水线113
  5.2.3 改变流水线模式113
  5.2.4 数据相关冒险114
  5.2.5 条件冒险116
  5.2.6 条件分支117
  5.2.7 编译时流水线补偿118
  5.2.8 相对地址分支119
  5.2.9 流水线的指令集补偿120
  5.2.10 运行时流水线补偿122
 5.3 复杂指令集(CISC)和精简指令集(RISC)123
 5.4 超标量体系结构124
  5.4.1 简单超标量124
  5.4.2 多发送超标量125
  5.4.3 超标量的性能126
 5.5 每周期的指令数127
  5.5.1 不同体系结构的IPC127
  5.5.2 IPC度量128
 5.6 硬件加速器129
  5.6.1 零开销循环129
  5.6.2 地址处理硬件131
  5.6.3 影子寄存器134
 5.7 分支预测134
  5.7.1 分支预测的必要性134
  5.7.2 单T位预测器136
  5.7.3 双位预测器137
  5.7.4 计数器和移位器预测器138
  5.7.5 局部分支预测器139
  5.7.6 全局分支预测器141
  5.7.7 G选择预测器142
  5.7.8 G共享预测器143
  5.7.9 混合预测器144
  5.7.10 分支目标缓冲145
  5.7.11 基本代码段147
  5.7.12 分支预测总结148
 5.8 并行机器148
  5.8.1 SISD向MIMD的演变150
  5.8.2 为提高性能而采用并行152
  5.8.3 其他并行处理153
 5.9 Tomasulo算法155
  5.9.1 Tomasulo算法的原理155
  5.9.2 Tomasulo系统的例子155
  5.9.3 嵌入式系统中的Tomasulo算法159
 5.10 小结160
 思考题160
第6章 外部总线163
 6.1 总线接口163
  6.1.1 总线控制信号164
  6.1.2 直接存储器存取(DMA)164
 6.2 并行总线规范165
 6.3 标准接口166
  6.3.1 系统控制接口166
  6.3.2 系统数据总线167
   6.3.2.1 ISA总线及其衍生总线167
   6.3.2.2 PC/104168
   6.3.2.3 PCI170
   6.3.2.4 LVDS170
  6.3.3 输入/输出总线171
  6.3.4 外设器件总线172
  6.3.5 与网络设备的接口172
 6.4 实时性问题172
  6.4.1 外部激励173
  6.4.2 中断173
  6.4.3 实时性定义173
  6.4.4 时间范围参数174
  6.4.5 硬件体系结构对实时操作系统的支持175
 6.5 中断和中断处理176
  6.5.1 中断的重要性176
  6.5.2 中断过程176
   6.5.2.1 中断事件通知处理器176
   6.5.2.2 CPU完成正在进行的工作177
   6.5.2.3 转入中断服务例程177
   6.5.2.4 中断重定向179
  6.5.3 高级中断处理180
  6.5.4 共享中断180
  6.5.5 可重入代码181
  6.5.6 软件中断181
 6.6 无线181
  6.6.1 无线技术181
  6.6.2 无线接口183
  6.6.3 无线相关问题183
 6.7 小结183
 思考题184
第7章 实用嵌入式CPU187
 7.1 概述187
 7.2 微处理器不只是核187
 7.3 功能需求189
 7.4 时钟192
 7.5 时钟与功耗194
  7.5.1 传输延迟195
  7.5.2 电流相关问题195
  7.5.3 时钟问题解决方法196
  7.5.4 低电压设计196
 7.6 存储197
  7.6.1 早期的计算机存储198
  7.6.2 只读存储器198
  7.6.3 随机存取存储器203
   7.6.3.1 静态RAM204
   7.6.3.2 动态RAM205
   7.6.3.3 DRAM的寻址机制206
 7.7 分页与重叠209
 7.8 嵌入式系统中的存储210
  7.8.1 非易失存储器211
  7.8.2 易失存储器212
  7.8.3 其他存储器213
 7.9 测试和验证214
  7.9.1 集成电路设计和制造问题215
  7.9.2 内置自测(BIST)216
  7.9.3 联合测试行动小组(JTAG)218
 7.10 错误检测和纠正220
 7.11 看门狗定时器和复位监测223
 7.12 逆向工程225
  7.12.1 逆向工程过程226
   7.12.1.1 功能分析228
   7.12.1.2 物理结构分析228
   7.12.1.3 材料清单228
   7.12.1.4 系统架构229
  7.12.2 详细的物理布局229
   7.12.2.1 电气连接原理图230
   7.12.2.2 存储程序230
   7.12.2.3 软件230
 7.13 防止逆向工程232
  7.13.1 存储程序的被动模糊233
  7.13.2 可编程逻辑家族234
  7.13.3 主动RE防范234
  7.13.4 主动RE防范分类235
 7.14 小结236
 思考题236
第8章 CPU设计238
 8.1 软核处理器238
  8.1.1 微处理器不仅仅有处理器核238
  8.1.2 软核处理器的优点239
   8.1.2.1 性能239
   8.1.2.2 可用性239
   8.1.2.3 效率240
   8.1.2.4 人为因素240
 8.2 软硬件协同设计241
 8.3 现成的软核243
 8.4 制作自己的软核245
 8.5 CPU设计规格说明245
  8.5.1 CPU体系结构246
  8.5.2 总线246
  8.5.3 程序及数据存储247
  8.5.4 逻辑运算248
  8.5.5 指令处理248
  8.5.6 系统控制249
 8.6 指令集249
  8.6.1 CPU控制251
   8.6.1.1 闲置状态252
   8.6.1.2 取指状态252
   8.6.1.3 执行状态252
 8.7 CPU实现253
  8.7.1 测试的重要性253
  8.7.2 定义操作和状态:defs.v253
  8.7.3 第一个小模块:counter.v254
  8.7.4 CPU控制:state.v256
  8.7.5 程序和变量存储:ram.v257
  8.7.6 堆栈:stack.v259
  8.7.7 算术、逻辑和乘法单元:alu.v261
  8.7.8 综合测试:tinycpu.v263
 8.8 CPU测试及运行267
 8.9 编程并使用CPU267
  8.9.1 编写TinyCPU程序268
  8.9.2 TinyCPU编程工具271
 8.10 小结271
 思考题272
第9章 未来274
 9.1 单比特体系结构274
  9.1.1 位串行加法274
  9.1.2 位串行减法275
  9.1.3 位串行逻辑电路和处理275
 9.2 超长指令字体系结构276
  9.2.1 VLIW的基本原理276
  9.2.2 VLIW的难题277
 9.3 并行与大规模并行计算机278
  9.3.1 大型计算机集群278
  9.3.2 小型计算机集群279
   9.3.2.1 从嵌入式系统中解放计算资源279
   9.3.2.2 并行处理单元279
  9.3.3 并行和集群处理注意事项283
  9.3.4 互连策略283
 9.4 异步处理器285
  9.4.1 数据流控制286
  9.4.2 避免流水线冒险286
 9.5 替代数字格式系统287
  9.5.1 多值逻辑287
  9.5.2 带符号数字的表示288
 9.6 光计算289
  9.6.1 光电全加器289
  9.6.2 光电底板290
 9.7 科幻小说还是未来的现实291
  9.7.1 分布式计算291
  9.7.2 湿件(大脑)291
 9.8 小结292
附录A 内存大小的标准表示方法293
附录B 开放系统互连模型295
 B.1 引言295
 B.2 OSI层次295
 B.3 小结296
附录C 探索cache大小和结构安排的权衡设计方法297
 C.1 引言297
 C.2 准备工作297
 C.3 安装Cacti和Dinero297
 C.4 工具的使用298
 C.5 不同cache设计方案的实验299
 C.6 cache设计中的进一步信息299
 思考题300
附录D 嵌入式计算机上的无线技术301
 D.1 引言301
 D.2 802.11a,b和g301
 D.3 802.11n302
 D.4 802.20302
 D.5 802.16302
 D.6 蓝牙303
 D.7 GSM303
 D.8 GPRS304
 D.9 ZigBee305
 D.10 无线USB305
 D.11 近距离通信306
 D.12 WiBro307
 D.13 无线设备总结307
 D.14 应用举例308
 D.15 小结308
附录E 编译和仿真TinyCPU的工具309
 E.1 准备和软件获取309
 E.2 如何编译和仿真Verilog309
 E.3 如何查看仿真输出313
 E.4 高级测试平台318
 E.5 小结318
附录F TinyCPU编译和汇编代码的工具319
 F.1 引言319
 F.2 汇编过程319
 F.3 汇编器320
 F.4 汇编程序实例322
 F.5 编译器323
 F.6 小结323
索引325

教学资源推荐
作者: [美]威廉 J.达利(William J. Dally)R.柯蒂斯·哈廷(R. Curtis Harting) 著
作者: (美)Ken Kennedy,Randy Allen
作者: (美)Umakishore Ramachandran,William D. Leahy,Jr. 著
参考读物推荐
作者: [美] 沃尔弗拉姆·多纳特(Wolfram Donat) 著
作者: 刘火良 杨森 编著
作者: (美)Sun Microsystems, Inc