计算机体系结构

当前位置:首页 > 计算机网络 > 计算机体系结构 > 计算机体系结构

出版社:机械工业出版社
出版日期:2012-7
ISBN:9787111379041
作者:Ian McLoughlin
页数:348页

章节摘录

版权页:   插图:   3.1 什么是计算机 当人们说起一台计算机,他们的印象是一个米色的箱子,有显示器、键盘和鼠标。虽然他们印象中的这个箱子确实包含着一台计算机,但我们知道其实箱子里需要了解的东西还很多。 系统中的“计算机”部分包括CPU、存储子系统和连接它们的总线——实际上正是这几块构成了以存储程序来执行功能的数字计算机。它并不需要显卡、无线接口卡、硬盘和音响系统来计算或执行所存储的程序。 存储程序的数字计算机可以说是一个非常灵活但又相当基本的数据计算和传输的机器,通过编程来实现需要的功能。 如今,科技发达地区的人们常被十几台或上百台计算机包围。它们可能在微波炉中、烤炉中、手机中、MP3播放器中,甚至是电子门锁中。据估计,一辆豪华汽车含有超过100个处理器,甚至一个入门机型都可能包括不止40个单独的设备。最新一个令人惊讶的例子,一条双人电热毯已经发展到包含4个专用微处理器——在电热毯的两边各有一套独立控制,每套中一个工作、一个备用。随着这种规模的应用,容易想象得到“未来就是嵌入式的”。本章的内容适用于各种计算机,无论是房间大小的还是蚂蚁大小的。 3.2让计算机为你服务 正如我们所看到的,在最基本的层面,计算机只是一个能够传输数据和执行逻辑操作的单元。所有更高级别的计算功能都是由这些基本数据传输和逻辑运算构成的一个序列或组合。计算机内各种各样的单元模块用于执行不同的任务,而这些是非常标准的组成模块,被大多数计算机所采用。例如,一个算术逻辑单元( ALU)执行算术运算,而一个总线用来从一点到另一点传输数据。显然,需要一些方法来指导计算机执行——决定在何时何处使用这些基本模块传输数据,以及执行哪一个逻辑操作。计算机(包括其内部单元和总线)必须通过编程才能执行人们希望它完成的工作。 作为第一步,需要将要完成的工作拆分为一系列可行的操作。这样的一个序列称为程序,并且每个操作是通过指令加操作数来发布命令。计算机中能够支持的操作列表称为指令集。 3.2.1 程序存储 程序中的所有指令需要以一种可被计算机访问的方式储存。最初的电子计算机是通过将导线插入不同的插孔来编程的。后来,使用手动转换,随后又使用自动的打孔式读卡器,穿孔之后磁带被发明出来,但是不管是哪种存储格式,每一次上电之后的新编程都需要手工输入。 现代计算机将程序存储在磁盘、ROM、EEPROM、闪存或类似的媒体上。程序总是在执行前从存储设备读取到RAM中,这是出于性能的原因:RAM比大多数的大容量存储设备速度更快。 在内存中存储的条目需要有一个能够访问的位置。这个存储的位置也需要被标识,这样才能进行访问。早期的计算机设计者称存储的位置为地址,因为这让CPU可以选择和访问任何存放在独立地址中的指定的信息或程序代码。实现这件事最有效的方式就是由CPU通知存储设备它要访问的地址,然后等待该地址的内容,在一段时间后从设备接口读取这个内容值。 大家知道,CPU的编程用最低级的机器代码指令完成,这些指令或者是定长的(在大多数RISC机器中,如ARM、PIC或MIPS),或者是指令字长度可变的(在一些CISC机器中,如Motorola 68000)。程序是按特定序列排列的指令簇,用来指示计算机执行所要求的任务。 执行这些指令序列完成正确的工作,可能需要访问一些需要处理的数据。历史上曾经主张将程序存储空间和数据存储空间分离,特别是因为这两种类型的信息有不同的特点:程序通常是顺序且只读的,而数据可能需要读/写双向访问,而且对数据的访问可能是按顺序的也可能是随机方式。

内容概要

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

编辑推荐

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

作者简介

计算机科学正在发生深刻的变革,随着嵌入式系统的广泛应用,每年全世界售出的嵌入式计算机大约是桌面计算机的40倍,大学毕业生将更多地从事嵌入式系统硬件的设计,而不是设计一个传统的桌面计算机。计算学科发展和产业界的技术进步,要求高等教育也进行与时俱进的改革。本书采用现代视角来看待当今的计算机体系结构,强调日益重要的嵌入式系统,以满足教育界和工业界对于硬件设计人才培养的需求。
本书在提供计算机体系结构背景知识的基础上,将讲述的重点放在我们每天生活和工作都要依赖的嵌入式系统上。书中首先介绍了算术和处理中的基础知识,随后分几章讨论了CPU结构、功能单元、性能优化、外部接口、实际嵌入式处理和计算的未来。本书还提出了嵌入式工业中关键的几个特定主题,以及在CPU设计项目中包含设计、仿真、测试和规划一个简单嵌入式计算机的一切必要步骤。
本书所采用的嵌入式系统相关的方法,使得书中的知识内容更加贴近工业界的需要,激励学生更投入地学习,并构建起该门课程与传统课程体系内其他相关课程(如电子学、计算机工程或计算机科学课程)的相互联系。本书不是在传统计算机体系结构教材的基础上扩展了嵌入式系统的一章,而是以新颖的视角来看待今天的计算机体系结构——它以历史上巨大而古老的机器为基础,现在正朝着嵌入式系统高度集成化的方向不断发展。

图书封面


 计算机体系结构下载 精选章节试读



发布书评

 
 


精彩短评 (总计1条)

  •     让我真正理解了许多CPU概念!
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024