描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111558071丛书名: 计算机科学丛书
内容简介
本书共三部分。第 一 部分介绍了计算机体系结构的基本内容;第二部分介绍指令集体系结构,这是本书的核心,包括指令集的概念、计算机体系结构的一些重要问题,ARM系列微处理器,处理器适应视频编辑和现代多媒体应用的方法;第三部分介绍计算机是如何工作的,以及它在内部是如何组织的。
目 录
目 录
Computer Organization and Architecture: Themes and Variations
出版者的话
译者序
前言
本书导读
作者简介
部分 起始篇
第1章 计算机系统体系结构 4
1.1 什么是计算机系统体系结构 7
1.2 体系结构和组成 11
1.2.1 计算机系统和技术 14
1.2.2 计算机体系结构在计算机科学中的地位 14
1.3 计算机的发展 16
1.3.1 机械计算机 17
1.3.2 机电式计算机 19
1.3.3 早期的电子计算机 19
1.3.4 微机和PC革命 20
1.3.5 摩尔定律和进步的历程 21
1.3.6 存储技术发展 22
1.3.7 普适计算 23
1.3.8 多媒体计算机 23
1.4 存储程序计算机 24
1.4.1 问题描述 24
1.4.2 解决方法 24
1.4.3 构造一个算法 26
1.4.4 计算机需要通过什么来解决问题 27
1.4.5 存储器 29
1.5 存储程序的概念 31
1.6 计算机系统概览 35
1.6.1 存储层次 35
1.6.2 总线 37
1.7 现代计算 39
本章小结 39
习题 40
第2章 计算机算术 42
2.1 数据是什么 43
2.1.1 位与字节 43
2.1.2 位模式 44
2.2 数字 48
2.2.1 位置记数法 48
2.3 二进制运算 49
2.4 有符号整数 52
2.4.1 符号及值表示法 52
2.4.2 二进制补码运算 53
2.5 乘除法简介 55
2.5.1 移位运算 55
2.5.2 无符号二进制乘法 56
2.5.3 快速乘法 57
2.5.4 除法 59
2.6 浮点数 63
2.6.1 IEEE浮点数 64
2.7 浮点运算 68
2.8 浮点运算和程序员 70
2.8.1 浮点运算中的误差传播 71
2.8.2 生成数学函数 72
本章小结 74
习题 74
第二部分 指令集体系结构
第3章 体系结构与组成 79
3.1 存储程序计算机 79
3.1.1 扩展处理器:常量处理 84
3.1.2 扩展处理器:流控制 85
3.2 ISA的组成 93
3.2.1 寄存器 94
3.2.2 寻址方式概述 96
3.2.3 指令格式 98
3.2.4 操作码与指令 99
3.3 ARM指令集体系结构 101
3.3.1 ARM寄存器集 103
3.3.2 ARM指令集 103
3.4 ARM汇编语言 104
3.4.1 ARM程序结构 105
3.4.2 汇编器的实际考虑因素 107
3.4.3 伪指令 110
3.5 ARM数据处理指令 112
3.5.1 算术指令 113
3.5.2 位操作 116
3.5.3 移位操作 117
3.5.4 指令编码——洞察ARM体系结构 121
3.6 ARM的流控制指令 121
3.6.1 无条件分支 122
3.6.2 条件分支 122
3.6.3 测试与比较指令 123
3.6.4 分支与循环结构 124
3.6.5 条件执行 124
3.7 ARM寻址方式 126
3.7.1 立即数寻址 127
3.7.2 寄存器间接寻址 129
3.7.3 带偏移量的寄存器间接寻址 131
3.7.4 ARM的自动前索引寻址方式 134
3.7.5 ARM的自动后索引寻址方式 136
3.7.6 程序计数器相对寻址 136
3.7.7 ARM的load与store指令编码 136
3.8 子程序调用与返回 138
3.8.1 ARM对子程序的支持 139
3.8.2 条件子程序调用 141
3.9 ARM代码实例 141
3.9.1 计算值 141
3.9.2 字节操作与拼接 141
3.9.3 字节逆转 142
3.9.4 乘以2n-1或2n+1 142
3.9.5 多条件的使用 143
3.9.6 只用一条指令 143
3.9.7 实现多段程序 143
3.9.8 简单位级逻辑操作 144
3.9.9 十六进制字符转换 144
3.9.10 输出十六进制字符 144
3.9.11 打印横幅 145
3.10 子程序与栈 145
3.10.1 子程序调用与返回 147
3.10.2 子程序嵌套 148
3.10.3 叶子程序 150
3.11 数据的大小与排列 150
3.11.1 数据组织与端格式 150
3.11.2 数据组织和ARM 152
3.11.3 块移动指令 156
3.12 整合——将所有内容放在一起 160
本章小结 163
习题 163
第4章 指令集体系结构——广度和深度 168
4.1 数据存储和栈 170
4.1.1 存储和栈 172
4.1.2 通过栈传递参数 179
4.2 特权模式和异常 187
4.3 MIPS:另一种RISC 190
4.3.1 MIPS数据处理指令 193
4.4 数据处理与数据传送 195
4.4.1 不可见的交换指令 198
4.4.2 双精度移位 199
4.4.3 压缩和解压缩指令 200
4.4.4 边界测试 201
4.4.5 位字段数据 202
4.4.6 循环 206
4.5 存储器间接寻址 207
4.6 压缩代码、RISC、Thumb和MIPS16 213
4.6.1 Thumb指令集体系结构 214
4.6.2 MIPS16 219
4.7 变长指令 220
本章小结 224
习题 224
第5章 计算机体系结构与多媒体 229
5.1 高性能计算应用 230
5.1.1 图像处理 233
5.2 多媒体的影响——重新使用CISC 243
5.3 SIMD处理简介 246
5.3.1 SIMD技术的应用 254
5.4 流扩展和SIMD技术的发展 259
5.4.1 浮点软件扩展 261
5.4.2 Intel的第三层多媒体扩展 263
5.4.3 Intel SSE3和SSE4指令 264
5.4.4 ARM系列处理器的多媒体
指令 265
本章小结 267
习题 267
第三部分 组成和效能
第6章 处理器控制 272
6.1 通用数字处理器 274
6.1.1 微程序 277
6.1.2 生成微操作 282
6.2 RISC的组成 286
6.2.1 寄存器–寄存器数据通路 289
6.2.2 单周期直通计算机的控制 292
6.3
Computer Organization and Architecture: Themes and Variations
出版者的话
译者序
前言
本书导读
作者简介
部分 起始篇
第1章 计算机系统体系结构 4
1.1 什么是计算机系统体系结构 7
1.2 体系结构和组成 11
1.2.1 计算机系统和技术 14
1.2.2 计算机体系结构在计算机科学中的地位 14
1.3 计算机的发展 16
1.3.1 机械计算机 17
1.3.2 机电式计算机 19
1.3.3 早期的电子计算机 19
1.3.4 微机和PC革命 20
1.3.5 摩尔定律和进步的历程 21
1.3.6 存储技术发展 22
1.3.7 普适计算 23
1.3.8 多媒体计算机 23
1.4 存储程序计算机 24
1.4.1 问题描述 24
1.4.2 解决方法 24
1.4.3 构造一个算法 26
1.4.4 计算机需要通过什么来解决问题 27
1.4.5 存储器 29
1.5 存储程序的概念 31
1.6 计算机系统概览 35
1.6.1 存储层次 35
1.6.2 总线 37
1.7 现代计算 39
本章小结 39
习题 40
第2章 计算机算术 42
2.1 数据是什么 43
2.1.1 位与字节 43
2.1.2 位模式 44
2.2 数字 48
2.2.1 位置记数法 48
2.3 二进制运算 49
2.4 有符号整数 52
2.4.1 符号及值表示法 52
2.4.2 二进制补码运算 53
2.5 乘除法简介 55
2.5.1 移位运算 55
2.5.2 无符号二进制乘法 56
2.5.3 快速乘法 57
2.5.4 除法 59
2.6 浮点数 63
2.6.1 IEEE浮点数 64
2.7 浮点运算 68
2.8 浮点运算和程序员 70
2.8.1 浮点运算中的误差传播 71
2.8.2 生成数学函数 72
本章小结 74
习题 74
第二部分 指令集体系结构
第3章 体系结构与组成 79
3.1 存储程序计算机 79
3.1.1 扩展处理器:常量处理 84
3.1.2 扩展处理器:流控制 85
3.2 ISA的组成 93
3.2.1 寄存器 94
3.2.2 寻址方式概述 96
3.2.3 指令格式 98
3.2.4 操作码与指令 99
3.3 ARM指令集体系结构 101
3.3.1 ARM寄存器集 103
3.3.2 ARM指令集 103
3.4 ARM汇编语言 104
3.4.1 ARM程序结构 105
3.4.2 汇编器的实际考虑因素 107
3.4.3 伪指令 110
3.5 ARM数据处理指令 112
3.5.1 算术指令 113
3.5.2 位操作 116
3.5.3 移位操作 117
3.5.4 指令编码——洞察ARM体系结构 121
3.6 ARM的流控制指令 121
3.6.1 无条件分支 122
3.6.2 条件分支 122
3.6.3 测试与比较指令 123
3.6.4 分支与循环结构 124
3.6.5 条件执行 124
3.7 ARM寻址方式 126
3.7.1 立即数寻址 127
3.7.2 寄存器间接寻址 129
3.7.3 带偏移量的寄存器间接寻址 131
3.7.4 ARM的自动前索引寻址方式 134
3.7.5 ARM的自动后索引寻址方式 136
3.7.6 程序计数器相对寻址 136
3.7.7 ARM的load与store指令编码 136
3.8 子程序调用与返回 138
3.8.1 ARM对子程序的支持 139
3.8.2 条件子程序调用 141
3.9 ARM代码实例 141
3.9.1 计算值 141
3.9.2 字节操作与拼接 141
3.9.3 字节逆转 142
3.9.4 乘以2n-1或2n+1 142
3.9.5 多条件的使用 143
3.9.6 只用一条指令 143
3.9.7 实现多段程序 143
3.9.8 简单位级逻辑操作 144
3.9.9 十六进制字符转换 144
3.9.10 输出十六进制字符 144
3.9.11 打印横幅 145
3.10 子程序与栈 145
3.10.1 子程序调用与返回 147
3.10.2 子程序嵌套 148
3.10.3 叶子程序 150
3.11 数据的大小与排列 150
3.11.1 数据组织与端格式 150
3.11.2 数据组织和ARM 152
3.11.3 块移动指令 156
3.12 整合——将所有内容放在一起 160
本章小结 163
习题 163
第4章 指令集体系结构——广度和深度 168
4.1 数据存储和栈 170
4.1.1 存储和栈 172
4.1.2 通过栈传递参数 179
4.2 特权模式和异常 187
4.3 MIPS:另一种RISC 190
4.3.1 MIPS数据处理指令 193
4.4 数据处理与数据传送 195
4.4.1 不可见的交换指令 198
4.4.2 双精度移位 199
4.4.3 压缩和解压缩指令 200
4.4.4 边界测试 201
4.4.5 位字段数据 202
4.4.6 循环 206
4.5 存储器间接寻址 207
4.6 压缩代码、RISC、Thumb和MIPS16 213
4.6.1 Thumb指令集体系结构 214
4.6.2 MIPS16 219
4.7 变长指令 220
本章小结 224
习题 224
第5章 计算机体系结构与多媒体 229
5.1 高性能计算应用 230
5.1.1 图像处理 233
5.2 多媒体的影响——重新使用CISC 243
5.3 SIMD处理简介 246
5.3.1 SIMD技术的应用 254
5.4 流扩展和SIMD技术的发展 259
5.4.1 浮点软件扩展 261
5.4.2 Intel的第三层多媒体扩展 263
5.4.3 Intel SSE3和SSE4指令 264
5.4.4 ARM系列处理器的多媒体
指令 265
本章小结 267
习题 267
第三部分 组成和效能
第6章 处理器控制 272
6.1 通用数字处理器 274
6.1.1 微程序 277
6.1.2 生成微操作 282
6.2 RISC的组成 286
6.2.1 寄存器–寄存器数据通路 289
6.2.2 单周期直通计算机的控制 292
6.3
前 言
前 言Computer Organization and Architecture: Themes and Variations21世纪是科学和技术奇迹频出的时代。计算机已经做到了人们期望它做到的一切——甚至更多。生物工程解开了细胞的秘密,使科学家能够合成10年前无法想象的新药。纳米技术让人们有机会窥探微观世界,将计算机革命与原子工程结合在一起创造出的纳米机器人,也许有一天能够植入人体,修复人体内部的创伤。普适计算带来了手机、MP3播放器和数码相机,使人们彼此之间能够通过Internet保持联系。计算机是几乎所有现代技术的核心。本书将阐述计算机是如何工作的。
从20世纪50年代起大学就开始教授这门被称为计算的学科了。一开始,大型机主导了计算,这个学科包括对计算机本身、控制计算机的操作系统、语言和它们的编译器、数据库以及商业计算等的研究。此后,计算的发展呈指数增长,到现在已包含多个不同的领域,任何一所大学都不可能完全覆盖这些领域。人们不得不将注意力集中在计算的基本要素上。这一学科的核心在于机器本身:计算机。当然,作为一个理论概念,计算可以脱离计算机而独立存在。实际上,在20世纪三四十年代计算机革命开始之前,人们已经进行了相当多的关于计算机的科学理论基础的研究工作。然而,计算在过去40年里的发展方式与微处理器的崛起紧密联系在一起。如果人们无法拥有价格非常便宜的计算机,Internet也无法按照它已有的轨迹取得成功。
由于计算机本身对计算的发展及其发展方向产生了巨大影响,在计算的课程体系中包含一门有关计算机如何工作的课程是非常合理的。大学里计算机科学或计算机工程方向的培养方案中都会有这样一门课程。实际上,专业和课程的认证机构都将计算机体系结构作为一项核心要求。比如,计算机体系结构就是IEEE 计算机协会和ACM联合发布的计算学科课程体系的中心内容。
介绍计算机具体体现与实现的课程有各种各样的名字。有人将它们叫作硬件课,有人管它们叫作计算机体系结构,还有人把它们叫作计算机组成(以及它们之间的各种组合)。本书用计算机体系结构表示这门研究计算机设计方法和运行方式的课程。当然,我会解释为什么这门课程有那么多不同的名字,并会指出可以用不同的方式来看待计算机。
与计算机科学的所有领域一样,计算机体系结构也随着指令集设计、指令级并行(ILP)、Cache缓存技术、总线系统、猜测执行、多核计算等技术的发展而飞速进步。本书将讨论所有这些话题。
计算机体系结构是计算机科学的基石。例如,计算机性能在今天的重要性超过了以往任何时候,为了做出选择,即便是那些购买个人电脑的用户也必须了解计算机系统的结构。
尽管绝大多数学生永远不会设计一台新的计算机,但今天的学生却需要比他们的前辈更全面地了解计算机。虽然学生们不必是合格的汇编语言程序员,但他们一定要理解总线、接口、Cache和指令系统是如何决定计算机系统的性能的。
而且,理解计算机体系结构会使学生能够更好地学习计算机科学的其他领域。例如,指令系统的知识就能使学生更好地理解编译器的运行机制。
写作这本书的动机源于我在提赛德大学(University of Teesside)讲授计算机体系结构中级课程的经历。我没有按照传统方式授课,而是讲授了那些能够好地体现计算机体系结构伟大思想的内容。在这门课程里,我讲授了一些强调计算机科学整体概念的主题,对学生的操作系统和C语言课程均有不小的帮助。这门课非常成功,特别是在激发学生的学习动力方面。
任何编写计算机体系结构教材的人必须知道这门课会在3个不同的系讲授:电子工程(EE),电子与计算机工程(ECE),计算机科学(CS)。这些系有自己的文化,也会从各自的角度看待计算机体系结构。电子工程系和电子与计算机工程系会关注电子学以及计算机的每个部件是如何工作的。面向这两个系的教材会将重点放在门、接口、信号和计算机组成上。而计算机科学系的学生大都没有足够的电子学知识背景,因此很难对那些强调电路设计的教材感兴趣。实际上,计算机科学系更强调底层的处理器体系结构与高层的计算机科学抽象之间的关系。
尽管要写出一本能够同时满足电子工程系、电子与计算机工程系和计算机科学系的教材几乎是不可能的,但本书进行了有效的折中,它为电子工程系和电子与计算机工程系提供了足够的门级和部件级的知识,而这些内容也没有高深到使计算机科学系的学生望而却步的程度。
本科计算机体系结构课可在三个不同层次上讲授:介绍性的、中级的和高级的。有些学校会讲授全部三个层次的内容,有些学校则将这些内容压缩为两个层次,还有一些学校只进行介绍。本书面向那些学习层次和第二层次计算机体系结构课的学生,以及那些希望了解微处理器体系结构当前进展的职业工程师。学习本书的前提条件是读者应了解高级语言(如C)的基本原理和基本的代数知识。
由于本书覆盖了计算机体系结构的基础内容、核心知识以及高级主题,内容丰富,篇幅很大,适用于计算机体系结构相关的不同课程裁剪使用。综合考虑国内高校计算机组成与结构系列课程的教学目标和课程设置,中文
从20世纪50年代起大学就开始教授这门被称为计算的学科了。一开始,大型机主导了计算,这个学科包括对计算机本身、控制计算机的操作系统、语言和它们的编译器、数据库以及商业计算等的研究。此后,计算的发展呈指数增长,到现在已包含多个不同的领域,任何一所大学都不可能完全覆盖这些领域。人们不得不将注意力集中在计算的基本要素上。这一学科的核心在于机器本身:计算机。当然,作为一个理论概念,计算可以脱离计算机而独立存在。实际上,在20世纪三四十年代计算机革命开始之前,人们已经进行了相当多的关于计算机的科学理论基础的研究工作。然而,计算在过去40年里的发展方式与微处理器的崛起紧密联系在一起。如果人们无法拥有价格非常便宜的计算机,Internet也无法按照它已有的轨迹取得成功。
由于计算机本身对计算的发展及其发展方向产生了巨大影响,在计算的课程体系中包含一门有关计算机如何工作的课程是非常合理的。大学里计算机科学或计算机工程方向的培养方案中都会有这样一门课程。实际上,专业和课程的认证机构都将计算机体系结构作为一项核心要求。比如,计算机体系结构就是IEEE 计算机协会和ACM联合发布的计算学科课程体系的中心内容。
介绍计算机具体体现与实现的课程有各种各样的名字。有人将它们叫作硬件课,有人管它们叫作计算机体系结构,还有人把它们叫作计算机组成(以及它们之间的各种组合)。本书用计算机体系结构表示这门研究计算机设计方法和运行方式的课程。当然,我会解释为什么这门课程有那么多不同的名字,并会指出可以用不同的方式来看待计算机。
与计算机科学的所有领域一样,计算机体系结构也随着指令集设计、指令级并行(ILP)、Cache缓存技术、总线系统、猜测执行、多核计算等技术的发展而飞速进步。本书将讨论所有这些话题。
计算机体系结构是计算机科学的基石。例如,计算机性能在今天的重要性超过了以往任何时候,为了做出选择,即便是那些购买个人电脑的用户也必须了解计算机系统的结构。
尽管绝大多数学生永远不会设计一台新的计算机,但今天的学生却需要比他们的前辈更全面地了解计算机。虽然学生们不必是合格的汇编语言程序员,但他们一定要理解总线、接口、Cache和指令系统是如何决定计算机系统的性能的。
而且,理解计算机体系结构会使学生能够更好地学习计算机科学的其他领域。例如,指令系统的知识就能使学生更好地理解编译器的运行机制。
写作这本书的动机源于我在提赛德大学(University of Teesside)讲授计算机体系结构中级课程的经历。我没有按照传统方式授课,而是讲授了那些能够好地体现计算机体系结构伟大思想的内容。在这门课程里,我讲授了一些强调计算机科学整体概念的主题,对学生的操作系统和C语言课程均有不小的帮助。这门课非常成功,特别是在激发学生的学习动力方面。
任何编写计算机体系结构教材的人必须知道这门课会在3个不同的系讲授:电子工程(EE),电子与计算机工程(ECE),计算机科学(CS)。这些系有自己的文化,也会从各自的角度看待计算机体系结构。电子工程系和电子与计算机工程系会关注电子学以及计算机的每个部件是如何工作的。面向这两个系的教材会将重点放在门、接口、信号和计算机组成上。而计算机科学系的学生大都没有足够的电子学知识背景,因此很难对那些强调电路设计的教材感兴趣。实际上,计算机科学系更强调底层的处理器体系结构与高层的计算机科学抽象之间的关系。
尽管要写出一本能够同时满足电子工程系、电子与计算机工程系和计算机科学系的教材几乎是不可能的,但本书进行了有效的折中,它为电子工程系和电子与计算机工程系提供了足够的门级和部件级的知识,而这些内容也没有高深到使计算机科学系的学生望而却步的程度。
本科计算机体系结构课可在三个不同层次上讲授:介绍性的、中级的和高级的。有些学校会讲授全部三个层次的内容,有些学校则将这些内容压缩为两个层次,还有一些学校只进行介绍。本书面向那些学习层次和第二层次计算机体系结构课的学生,以及那些希望了解微处理器体系结构当前进展的职业工程师。学习本书的前提条件是读者应了解高级语言(如C)的基本原理和基本的代数知识。
由于本书覆盖了计算机体系结构的基础内容、核心知识以及高级主题,内容丰富,篇幅很大,适用于计算机体系结构相关的不同课程裁剪使用。综合考虑国内高校计算机组成与结构系列课程的教学目标和课程设置,中文
评论
还没有评论。