内容简介
本书采用结构化方法来介绍计算机系统,书的内容建立在“计算机是由层次结构组成的,每层完成规定的功能”这一概念之上。作者对本版进行了的更新,以反映当今要的计算机技术以及计算机组成和体系结构方面的进展。书中详细讨论了数字逻辑层、微体系结构层、指令系统层、操作系统层和汇编语言层,并涵盖了并行体系结构的内容,而且每一章结尾都配有丰富的习题。本书适合作为计算机专业本科生计算机组成与结构课程的教材或参考书,也可供相关领域技术人员参考。
目录
目 录
Structured Computer Organization, Sixth Edition
出版者的话
译者序
前言
第1章 概述 1
1.1 结构化计算机组成 1
1.1.1 语言、层次和虚拟机 1
1.1.2 现代多层次计算机 3
1.1.3 多层次计算机的演化 5
1.2 计算机体系结构的里程碑 8
1.2.1 第零代——机械计算机(1642—1945) 8
1.2.2 第一代——电子管计算机(1945—1955) 10
1.2.3 第二代——晶体管计算机(1955—1965) 12
1.2.4 第三代——集成电路计算机(1965—1980) 14
1.2.5 第四代——超大规模集成电路计算机(1980年至今) 15
1.2.6 第五代——低功耗和无所不在的计算机 17
1.3 计算机家族 18
1.3.1 技术和经济推动 18
1.3.2 计算机扫视 20
1.3.3 一次性计算机 21
1.3.4 微型控制器 22
1.3.5 移动计算机和游戏计算机 23
1.3.6 个人计算机 24
1.3.7 服务器 25
1.3.8 大型主机 26
1.4 系列计算机举例 26
1.4.1 x86体系结构简介 27
1.4.2 ARM体系结构简介 31
1.4.3 AVR体系结构简介 32
1.5 公制计量单位 33
1.6 本书概览 34
习题 35
第2章 计算机系统组成 38
2.1 处理器 38
2.1.1 CPU组成 39
2.1.2 指令执行 40
2.1.3 RISC和CISC 42
2.1.4 现代计算机设计原则 43
2.1.5 指令级并行 44
2.1.6 处理器级并行 47
2.2 主存储器 50
2.2.1 存储位 50
2.2.2 内存编址 51
2.2.3 字节顺序 52
2.2.4 纠错码 53
2.2.5 高速缓存 56
2.2.6 内存封装及其类型 58
2.3 辅助存储器 59
2.3.1 层次存储结构 59
2.3.2 磁盘 60
2.3.3 IDE盘 62
2.3.4 SCSI盘 63
2.3.5 RAID盘 64
2.3.6 固盘 67
2.3.7 只读光盘 68
2.3.8 可刻光盘 71
2.3.9 可擦写光盘 73
2.3.10 DVD 73
2.3.11 Blu-Ray 74
2.4 输入/输出设备 75
2.4.1 总线 75
2.4.2 终端 78
2.4.3 鼠标 81
2.4.4 游戏控制器 83
2.4.5 打印机 84
2.4.6 电信设备 88
2.4.7 数码相机 94
2.4.8 字符编码 95
2.5 小结 99
习题 99
第3章 数字逻辑层 103
3.1 门和布尔代数 103
3.1.1 门 103
3.1.2 布尔代数 105
3.1.3 布尔函数的实现 107
3.1.4 等价电路 108
3.2 基本数字逻辑电路 110
3.2.1 集成电路 111
3.2.2 组合逻辑电路 111
3.2.3 算术电路 114
3.2.4 时钟 118
3.3 内存 119
3.3.1 锁存器 119
3.3.2 触发器 121
3.3.3 寄存器 122
3.3.4 内存组成 123
3.3.5 内存芯片 125
3.3.6 RAM和ROM 128
3.4 CPU芯片和总线 130
3.4.1 CPU芯片 130
3.4.2 计算机总线 132
3.4.3 总线宽度 134
3.4.4 总线时钟 135
3.4.5 总线仲裁 138
3.4.6 总线操作 141
3.5 CPU芯片举例 143
3.5.1 Intel Core
摘要与插图
第1章Structured Computer Organization, Sixth Edition
概 述
数字计算机是通过执行人们给出的指令来完成工作的机器。描述如何完成一个确定任务的指令序列称为程序(program)。每台计算机的电路都只能识别和直接执行有限的简单指令,所有程序都必须在执行前转换成这些指令。这些基本的指令几乎都不会比下面的指令复杂:
两个数相加。
检查某数是否为零。
将一些数据从计算机内存的某些单元复制到另外的单元中。
计算机的这些原始指令共同组成了一种可供人和计算机进行交流的语言,我们称其为机器语言(machine language)。设计一种新的计算机时,人们必须先决定它的机器语言中包含哪些指令。通常,原始指令应尽量简单,兼顾考虑计算机的使用要求和性能要求,以降低实现电路的成本和复杂度。正因为大多数机器语言如此简单,使用起来才显得十分困难和乏味。
通过对计算机的这些简单描述,我们可将计算机结构化为一系列抽象机,每台抽象机都建立在其下层抽象机的基础上。这样,计算机的复杂性就在可控范围内,计算机系统的设计也可在有组织和系统的状态下进行。我们把这种方法称为结构化计算机组成(structured computer organization),并以此命名本书。下一节我们将解释它的含义,然后回顾一下计算机发展历史和这当中一些有影响的机型。
1.1 结构化计算机组成
正如前面提到的,在方便人们使用和方便计算机实现之间存在着巨大的差距。人可能要做X,而计算机只会做Y。这就有问题了。本书的目的就是解释如何解决这个问题。
1.1.1 语言、层次和虚拟机
这个问题可从两个途径解决,两者都需要设计一个比内置的机器指令更方便人们使用的新的指令集合。这样,新的指令集合也构成了一种语言,我们称为L1,对应地把机器中内置的机器语言指令组成的语言叫L0。两种途径的不同之处在于采取什么办法让只能执行用L0写的程序的计算机执行用L1写的程序。
一种途径是在执行用L1写的程序之前生成一个等价的L0指令序列来替换它,生成的程序全部由L0指令组成。计算机执行等效的L0程序来代替原来的L1程序,这种技术叫做翻译(translation)。
另一种途径是用L0写一个程序,将L1的程序作为输入数据,按顺序检查它的每条指令,然后直接执行等效的L0指令序列计算出结果。它不需要事先生成一个L0语言的新程序。我们把这种方法称为解释(interpretation),把完成这个过程的L0程序称为解释器(interpreter)。
翻译和解释其实是类似的。两种方法中L1的指令都是通过执行等效的L0指令序列来实现的。区别在于,翻译时整个L1程序都先转换为L0程序,然后L1程序就被抛弃,新的L0程序被装入计算机内存中执行。执行过程中,运行的都是新生成的L0程序,控制计算机的也是L0程序。
而解释时,每条L1指令被检查和解码之后将立即执行,不生成翻译后的程序。这里,控制计算机的是解释器。对它来说,L1程序仅仅只是数据。这两种方法,以及后来它们的综合,都得到了广泛的应用。
比起理解翻译和解释这两个概念,想象存在一种假想的以L1为机器语言的计算机或虚拟机也许更简单一些。让我们把这种虚拟机定义为M1(相应地,把原来的以L0为机器语言的虚拟机定义为M0),如果这种计算机可以以足够低廉的成本得到,那就根本不需要L0这种语言或者是执行L0语言程序的机器了。人们可以简单地用L1写程序并让计算机直接执行。即使因为使用L1为语言的虚拟机太贵或太复杂而不能由电子电路构成,大家还是可以写L1语言的程序。这些程序可以用能直接被现有计算机执行的L0语言程序翻译或解释。换句话说,大家可以像虚拟机真正存在一样用它们的语言写程序。
为