计算机组成与系统结构(第2版)

计算机组成与系统结构(第2版)"

作者:袁春风主编杨若瑜、王帅、唐杰编著
ISBN:9787302408642
定价:¥44.50
字数:千字
页数:
出版时间:2015.08.01
开本:
版次:2-6
装帧:
出版社:清华大学出版社
简介

本书主要介绍计算机组成与系统结构涉及的相关概念、理论和技术内容,主要包括指令集体系结构、数据的表示和存储,以及实现指令集体系结构的计算机各部件的内部工作原理、组成结构及其相互连接关系。全书共9章: 第1章对计算机系统及其性能评价进行概述性介绍,第2、3章主要介绍数据的机器级表示、运算以及运算部件的结构与设计,第4~6章介绍指令系统以及各种CPU设计技术,第7章主要介绍包含主存、cache和虚拟存储器在内的存储器分层体系结构,第8章介绍总线互连以及输入输出系统,第9章介绍并行处理计算系统的基本硬件结构和并行程序设计编程模型。

   本书内容详尽,概念清楚,通俗易懂,实例丰富,并提供大量典型习题供读者练习。本书可以作为计算机专业本科或大专院校学生计算机组成原理与系统结构课程的教材,也可以作为有关专业研究生或计算机技术人员的参考书。

前言

FOREWORD计算机组成(computer organization)是指计算机主要功能部件的组成结构、逻辑设计及功能部件间的相互连接关系。计算机系统结构(computer architecture)的经典定义是指程序设计者(主要指低级语言程序员或编译程序设计者)所看到的计算机系统的属性,即计算机的功能特性和概念性结构,也称指令集体系结构(Instruction Set Architecture,ISA),包括数据类型及数据格式,指令格式,寻址方式和可访问空间大小,程序可访问的寄存器个数、位数和编号,控制寄存器的定义,I/O空间的编址方式,中断结构,机器工作状态的定义和切换,输入输出数据传送方式,存储保护方式等。

本书主要介绍计算机组成与系统结构涉及的相关内容。在计算机系统层次结构中,这些内容位于软件和硬件的结合处,不仅涉及计算机硬件设计和指令系统设计,还涉及操作系统、编译程序和程序设计等部分软件设计技术,是整个计算机系统中最核心的部分。

1. 本书的写作思路和内容组织

计算机组成与系统结构这两部分涉及的内容相互融合,密不可分。无论是国内还是国外,很多高校都逐渐把计算机组成原理和系统结构课程的内容有机结合起来;甚至国外一些经典教材还把与之密切相关的软件设计的内容也融合进来。这种方式可以加深读者对计算机软、硬件系统的整体化理解,并有效地增强对学生的计算机系统设计能力的培养。

本书在总结和借鉴国外著名高校使用的教材、教案、教学理念和教学方法的基础上,力图以“培养学生现代计算机系统设计能力”为目标,贯彻“从程序设计视角出发、强调软硬件关联与协同、以CPU设计为核心”的组织思路,试图改变国内同类教材通常的就硬件讲硬件、软硬件分离的传统内容组织方式,以系统化观点全面地介绍计算机组成和系统结构的相关知识和技术。

为了体现以上目标和思路,本书在以下几个方面进行了重点考虑和内容组织: 

(1) 首先基于“高级语言程序→汇编语言程序→机器指令序列→控制信号”的路线展现程序从编程设计、转换翻译到最终在CPU上运行的整个过程;在此基础上,用计算机系统层次化的观点阐述计算机组成与系统结构课程在整个计算机系统中的位置、内容和作用,从而为清晰了解本课程的内容和作用、为全面建立计算机软件和硬件系统的整体概念打下基础。

(2) 将指令执行过程和异常、中断、存储访问、I/O访问等重要概念和技术结合起来进行介绍,力求清晰地说明CPU执行指令过程中硬件与操作系统相互切换和协同工作的处理过程,使读者深刻理解软硬件系统之间的关系与协同工作过程。

(3) 在讲述与程序设计有密切关系的体系结构内容(如数据表示、信息存放、操作数寻址、过程调用、程序访问局部性等)时,试图通过对硬件设计与程序设计的关系的说明,使读者建立 “从程序员视角理解计算机硬件系统设计,从硬件设计的视角理解程序设计与执行”的思想,力图在提高读者硬件设计能力的同时,也增强其进行高效的和系统化的程序设计的能力。

计算机组成与系统结构(第2版)(4) 在国内“计算机组成原理”教材传统内容基础上增加指令流水线设计的详细内容,依照“最简单的IAS计算机CPU→总线式CPU→单周期CPU→多周期CPU→基本流水线CPU→动态超标量超流水线CPU”的次序,循序渐进地介绍CPU设计技术及其发展过程,以MIPS处理器和Pentium 4处理器为蓝本,力图使读者全面深入地掌握现代计算机的CPU设计技术。

(5) 结合指令流水线技术介绍基于流水线的编译优化技术,使读者对编译技术与指令流水线实现技术之间的密切关系有一定的认识和理解。

2. 各章节主要内容

本书共有9章,各章主要内容如下: 

第1章(计算机系统概述)主要介绍冯·诺依曼结构的特点、计算机硬件的基本组成、计算机软件设计和执行过程、计算机系统层次结构以及系统性能评价方法。

第2章(数据的机器级表示)主要介绍无符号数和带符号整数的表示、IEEE 754浮点数标准、西文字符和汉字的编码表示、大端/小端存放顺序及对齐方式以及常用检/纠错码表示与使用方法等。

第3章(运算方法和运算部件)主要介绍各类定点数和浮点数的运算方法和相应的运算部件,以及核心运算部件ALU的功能和设计实现等。

第4章(指令系统)主要介绍高级语言与低级语言的关系、指令格式、操作数类型、寻址方式、操作类型、硬件对过程的支持、用户程序在虚存空间的配置和划分等技术。

第5章(中央处理器)主要介绍CPU的基本功能和内部结构、指令执行过程、数据通路的基本组成和定时、单周期和多周期数据通路、硬连线路和微程序控制器、异常和中断等概念和技术。

第6章(指令流水线)主要介绍指令流水线的基本原理、流水段寄存器的概念、流水线数据通路的设计、流水线的控制信号、结构冒险及其处理、数据冒险及其处理、转发技术、控制冒险及其处理、分支预测原理、超标量和动态流水线的概念和技术。

第7章(存储器分层体系结构)主要介绍存储器分层结构的概念、半导体存储器的组织、多模块存储器、cache的基本原理、cache和主存间的映射关系及替换算法、虚拟存储器的基本概念、页表结构、缺页异常、TLB的实现技术。

第8章(互连及输入输出组织)主要介绍常用输入输出外设和磁盘存储器的工作原理、现代计算机内部互连结构、I/O接口的结构、I/O端口编址方式、程序查询I/O方式、中断I/O方式、DMA方式以及内核I/O软件概述等。

第9章(并行处理系统)主要介绍UMA(对称)多处理器、CCNUMA多处理器、片级多处理器和多线程技术、集群多计算机、网格多计算机、向量处理机和SIMD技术,还对并行处理编程模型进行了概述。

3. 第2版修订内容

近几年来,计算机组成与系统结构领域发生了一些变革,一些技术有了新的发展。为了反映技术的进步,拓宽本领域知识的覆盖面,并更加合理地构建知识框架,本书第2版在第1版的基础上进行了若干修订。

首先,对第1版的章节顺序进行了一些调整。因为数据的运算、指令系统、中央处理器以及指令流水线的关系比较密切,所以将第1版中原来的第4章存储器层次结构的内容调到了指令流水线的后面。

此外,在内容上对一些知识点进行了增、删、改,主要包括以下几个方面。

(1) 程序的开发和执行过程。第1章中增加了对hello程序执行过程的描述,并举例对程序和指令的关系进行了说明,同时还增加了一个冯·诺依曼结构模型机,利用该模型机对指令的执行过程进行了详细讲解。

(2) 运算方法和运算部件。对第3章进行了较大的调整。为了突出ALU中算术运算所生成的标志信息的作用,增加了对带标志加法器的描述;简化了对单级先行进位加法器、两级先行进位加法器、原码加减法、移码加减法、原码两位乘法、补码两位乘法、原码除法、十进制加减运算等的描述。

(3) 标志信息的生成与使用。第4章中增强了对标志信息处理问题的说明,增加了IA32指令系统中的条件转移指令功能描述,结合第3章中ALU生成的标志信息,比较透彻地说明了标志信息的生成与使用问题。

(4) 指令系统举例。第4章中保留了目前最流行的PC处理器指令系统IA32,增加了嵌入式处理器指令系统ARM,并将Intel处理器架构中的MMX、SSE等SIMD指令集移到了新增加的第9章中,作为并行处理技术的一部分来介绍。

(5) DRAM芯片技术。第7章中增加了对DDR2和DDR3 SDRAM芯片的描述。

(6) 存储器芯片的扩展及其与CPU的连接。对第7章中的这部分内容进行了大幅度修订,删去了陈旧的内容和举例,增加了目前系统中实际使用情况的描述。

(7) cache结构举例。第7章中增加了新的多核处理器芯片Core i7中cache结构的举例。

(8) 系统总线。系统内部的互连技术发展非常快,很多传统的概念已经过时,为此,对第1版中第8章(系统总线)的内容进行了大幅度修改,并将其合并到后面的输入输出组织一章中。总线裁决、总线定时、PCI总线标准和SCSI接口等内容被取消或弱化。增加了有关PCIExpress、QPI等互连技术的介绍。

(9) 外部设备。第8章中删除或弱化了CRT显示器、磁带存储器和光盘存储器等内容。

(10) I/O接口。第8章中删除有关I/O接口的分类、并行接口和串行接口、I/O接口的举例的内容。

(11) I/O控制方式。第8章中删除了关于通道方式和I/O处理器方式的内容。增加了对I/O子系统的介绍,简要描述了从高级语言层到I/O设备层之间的一个转换过程。

(12) 并行处理系统。增加了一章专门介绍各类并行处理系统的硬件结构以及涉及的硬件互连、软件通信及并行编程等技术问题。

4. 关于本书使用的一些建议

本书可作为“计算机组成原理”课程的教材,也可作为“计算机组成原理实验”课程和“计算机系统结构”课程的教学参考书。特别是对于不专门开设“计算机系统结构”课程的院校,使用本书作为“计算机组成与系统结构”课程的教材是比较合适的。

对于本书的使用,具体建议如下: 

(1) 课堂教学应以主干内容为主,力求完整地给出知识框架体系,并着重讲清楚相关概念之间的联系。

(2) 标注为*的内容是可以跳过而不影响阅读连贯性的部分,主要有以下三类: 简单易懂的基础性内容、具体实现方面的细节内容和在技术层面上更加深入的内容。这些内容对深入理解课程的整体核心内容是非常有帮助的。因此,在课时允许的情况下,可以选择其中的一部分进行课堂讲解;在课时不允许的情况下,也尽量安排学生进行课后阅读。

(3) 书中每个重要的知识点和概念后面都有一些例子,可选择部分重要的、难懂的例子在课堂上讲解,而大部分可留给学生自学。

(4) 习题中列出的概念术语基本涵盖了相应章节的主要概念,可以让学生对照检查是否全部清楚其含义;习题中列出的简答问题是相应章节重要的基本问题,可以通过对照检查以判断学生对相应章节内容的掌握程度;对于综合运用题,如果与程序设计相关,则可用编程方式来求解或验证,这样做,对学生深刻理解课程内容有帮助。

(5) 本书在CPU设计方面给出了比较具体的实现方案,相关内容可以作为基于FPGA和硬件描述语言进行CPU设计实验的参考资料。

(6) 书后给出了部分国际一流大学相关课程网站网址,可以到这些网站找到课堂讲义、习题参考答案以及更多的相关教辅资料。

5. 作者及致谢

参与本书编写工作的有袁春风、杨若瑜、王帅、唐杰、杨杰和樊士庆。全书由袁春风担任主编,负责全书内容的组织、统稿和编审。

在本书的编写过程中,得到了张福炎教授的悉心指导;黄宜华教授从书稿的篇章结构到内容各方面都提出了许多宝贵的意见,进行了修改,并对全书内容进行了全面细致的审核和校对;书中有关CPU设计的最初图稿和内容组织思路由陈贵海教授提供;此外,武港山教授、杨若瑜、俞建新、吴海军、张泽生、蔡晓燕等老师也对本书提出了许多宝贵的意见;杨晓亮、肖韬、翁基伟、刘长辉、宗恒、莫志刚、叶俊杰等研究生对相关章节的内容和习题分别进行了校对和试做,并提出了许多宝贵的意见和修改建议。在此对以上各位老师和研究生一并表示衷心的感谢。

本书是作者在南京大学从事“计算机组成与系统结构”课程教学20多年来所积累的讲稿内容的基础上编写而成的,感谢各位同仁和各届学生对讲稿内容所提出的宝贵的反馈和改进意见,使得本教材的内容得以不断地改进和完善。

6. 结束语

本书广泛参考了国内外相关的经典教材和教案,在内容上力求做到取材先进并反映技术发展现状;在内容的组织和描述上力求概念准确、语言通俗易懂、实例深入浅出,并尽量利用图示和实例来解释和说明问题。但是,由于计算机组成与系统结构相关的基础理论和技术在不断发展,新的思想、概念、技术和方法不断涌现,加之作者水平有限,在编写中难免存在不当或遗漏之处,恳请广大读者对本书的不足之处给予指正,以便在后续的版本中予以改进。

作者2015年6月于南京

目录

CONTENTS第1章计算机系统概述1

1.1计算机的发展历程1

*1.1.1通用电子计算机的诞生1

*1.1.2第一代计算机2

*1.1.3第二代计算机2

*1.1.4第三代计算机3

*1.1.5第四代计算机3

1.2计算机系统的基本组成4

1.2.1计算机硬件4

1.2.2计算机软件8

1.3计算机系统的层次结构8

1.3.1计算机系统抽象层的转换9

1.3.2计算机系统的不同用户10

1.4程序开发与执行过程12

1.4.1从源程序到可执行程序12

1.4.2可执行文件的启动和执行14

1.4.3程序与指令的关系15

1.4.4指令的执行过程16

1.5计算机系统性能评价17

1.5.1计算机性能的定义18

1.5.2计算机性能的测试18

1.5.3用指令执行速度进行性能评估20

1.5.4用基准程序进行性能评估21

1.6本章小结 22

习题23

第2章数据的机器级表示25

2.1数制和编码25

*2.1.1信息的二进制编码25

*2.1.2进位记数制27

2.1.3定点与浮点表示31

2.1.4定点数的编码表示31

计算机组成与系统结构(第2版)2.2整数的表示36

2.2.1无符号整数的表示36

2.2.2带符号整数的表示36

2.2.3C语言中的整数类型36

2.3实数的表示38

2.3.1浮点数的表示格式38

2.3.2浮点数的规格化39

2.3.3IEEE 754浮点数标准39

2.3.4C语言中的浮点数类型44

2.4十进制数的表示45

*2.4.1用ASCII码字符表示45

*2.4.2用BCD码表示46

2.5非数值数据的编码表示46

2.5.1逻辑值46

*2.5.2西文字符47

*2.5.3汉字字符48

2.6数据的宽度和存储50

2.6.1数据的宽度和单位50

2.6.2数据的存储和排列顺序51

2.7数据校验码54

2.7.1奇偶校验码55

2.7.2海明校验码56

2.7.3循环冗余校验码60

2.8本章小结62

习题62

第3章运算方法和运算部件66

3.1高级语言和机器指令中的运算66

*3.1.1C程序中涉及的运算66

*3.1.2MIPS指令中涉及的运算69

3.2基本运算部件70

3.2.1串行进位加法器71

3.2.2并行进位加法器72

3.2.3带标志加法器73

3.2.4算术逻辑部件74

3.3定点数运算75

3.3.1补码加减运算75

*3.3.2原码加减运算77

*3.3.3移码加减运算77

3.3.4原码乘法运算78

3.3.5补码乘法运算81

*3.3.6快速乘法器83

3.3.7原码除法运算85

*3.3.8补码除法运算90

3.4浮点数运算93

3.4.1浮点数加减运算93

*3.4.2浮点数乘除运算97

3.5运算部件的组成100

*3.5.1定点运算部件100

*3.5.2浮点运算部件102

3.6本章小结103

习题104

 第4章指令系统107

4.1指令格式设计107

4.1.1指令地址码的个数107

4.1.2指令格式设计原则108

4.2指令系统设计108

4.2.1基本设计问题109

4.2.2操作数类型110

4.2.3寻址方式110

4.2.4操作类型112

4.2.5操作码编码114

4.2.6标志信息的生成与使用116

4.2.7指令系统设计风格118

4.3指令系统实例120

*4.3.1IA32指令系统120

*4.3.2ARM指令系统123

4.4程序的机器级表示125

4.4.1MIPS汇编语言和机器语言125

*4.4.2选择结构的机器代码表示129

*4.4.3循环结构的机器代码表示130

*4.4.4过程调用的机器代码表示131

4.5本章小结138

习题139

第5章中央处理器142

5.1CPU概述142

5.1.1指令执行过程142

5.1.2CPU的基本功能和基本组成143

5.1.3数据通路的基本结构144

5.2单周期处理器设计152

5.2.1指令功能的描述153

5.2.2数据通路的设计154

5.2.3控制逻辑单元的设计162

5.2.4时钟周期的确定168

5.3多周期处理器设计169

*5.3.1信号竞争问题169

*5.3.2指令执行状态分析170

*5.3.3硬连线路控制器设计172

5.4微程序控制器设计175

5.4.1微程序控制器的结构175

*5.4.2微命令编码176

*5.4.3微指令地址的确定181

5.5异常和中断处理184

5.5.1基本概念184

5.5.2异常处理过程186

*5.5.3带异常处理的处理器设计187

5.6本章小结189

习题190

第6章指令流水线194

6.1流水线概述194

6.1.1流水线的执行效率194

6.1.2适合流水线的指令集特征195

6.2流水线处理器的实现196

6.2.1每条指令的流水段分析196

6.2.2流水线数据通路的设计197

6.2.3流水线控制器的设计202

6.3流水线冒险及其处理203

6.3.1结构冒险203

6.3.2数据冒险205

6.3.3控制冒险211

6.4高级流水线技术219

*6.4.1静态多发射处理器220

*6.4.2动态多发射处理器223

*6.4.3Pentium 4处理器的流水线结构227

6.5本章小结230

习题232

第7章存储器分层体系结构235

7.1存储器概述235

7.1.1存储器的分类235

7.1.2主存储器的组成和基本操作236

7.1.3存储器的主要性能指标237

7.1.4存储器的层次化结构238

7.2半导体随机存取存储器239

7.2.1基本存储元件239

7.2.2SRAM芯片和DRAM芯片240

7.2.3SDRAM芯片技术244

7.3存储器芯片的扩展及其与CPU的连接245

7.3.1内存条和内存条插槽245

7.3.2存储器芯片的扩展247

7.4半导体只读存储器和Flash存储器248

7.4.1半导体只读存储器248

7.4.2半导体Flash存储器248

7.5并行存储器结构技术250

7.5.1双口存储器250

7.5.2多模块存储器250

7.6高速缓冲存储器252

7.6.1程序访问的局部性253

7.6.2cache的基本工作原理255

7.6.3cache行和主存块之间的映射方式257

7.6.4cache中主存块的替换算法264

7.6.5cache的一致性问题267

*7.6.6cache性能评估268

*7.6.7影响cache性能的因素269

*7.6.8cache 结构举例272

7.7虚拟存储器274

*7.7.1进程与进程的上下文切换274

*7.7.2存储器管理275

7.7.3虚拟地址空间277

7.7.4虚拟存储器的实现279

*7.7.5存储保护286

7.8本章小结287

习题288

第8章互连及输入输出组织294

8.1外部设备的分类与特点294

8.1.1外设的分类294

8.1.2外设的特点295

8.2输入设备和输出设备295

*8.2.1键盘295

*8.2.2鼠标器297

*8.2.3打印机297

*8.2.4显示器299

8.3外部存储设备301

8.3.1磁表面存储原理301

8.3.2硬磁盘存储器303

8.3.3冗余磁盘阵列307

8.3.4U盘和固态硬盘309

8.4外设与CPU、主存的互连310

8.4.1总线概述310

8.4.2基于总线的互连结构312

8.5I/O接口317

8.5.1I/O接口的功能317

8.5.2I/O接口的通用结构317

8.5.3I/O端口及其编址319

8.6I/O数据传送控制方式320

8.6.1程序直接控制I/O方式320

8.6.2程序中断I/O方式323

8.6.3DMA方式 333

8.7I/O子系统概述336

8.8内核空间I/O软件339

8.8.1与设备无关的I/O软件339

8.8.2设备驱动程序341

8.8.3中断服务程序342

8.9本章小结344

习题345

*第9章并行处理系统349

9.1并行处理系统概述349

9.1.1并行处理的主要技术问题349

9.1.2并行处理系统的分类351

9.2多处理器系统353

9.2.1UMA多处理器结构354

9.2.2NUMA多处理器结构356

9.2.3多处理器系统中的互连网络358

9.2.4片级多处理器和多线程技术359

9.3多计算机系统360

9.3.1集群多计算机系统360

9.3.2网格多计算机系统364

9.4向量处理机和SIMD技术364

9.4.1向量处理机364

9.4.2Intel架构中的SIMD技术366

9.4.3GPU架构368

9.5并行处理编程模式简介371

9.6本章小结374

参考文献376

计算机组成与系统结构(第2版)2.2整数的表示36

2.2.1无符号整数的表示36

2.2.2带符号整数的表示36

2.2.3C语言中的整数类型36

2.3实数的表示38

2.3.1浮点数的表示格式38

2.3.2浮点数的规格化39

2.3.3IEEE 754浮点数标准39

2.3.4C语言中的浮点数类型44

2.4十进制数的表示45

*2.4.1用ASCII码字符表示45

*2.4.2用BCD码表示46

2.5非数值数据的编码表示46

2.5.1逻辑值46

*2.5.2西文字符47

*2.5.3汉字字符48

2.6数据的宽度和存储50

2.6.1数据的宽度和单位50

2.6.2数据的存储和排列顺序51

2.7数据校验码54

2.7.1奇偶校验码55

2.7.2海明校验码56

2.7.3循环冗余校验码60

2.8本章小结62

习题62

第3章运算方法和运算部件66

3.1高级语言和机器指令中的运算66

*3.1.1C程序中涉及的运算66

*3.1.2MIPS指令中涉及的运算69

3.2基本运算部件70

3.2.1串行进位加法器71

3.2.2并行进位加法器72

3.2.3带标志加法器73

3.2.4算术逻辑部件74

3.3定点数运算75

3.3.1补码加减运算75

*3.3.2原码加减运算77

*3.3.3移码加减运算77

3.3.4原码乘法运算78

3.3.5补码乘法运算81

*3.3.6快速乘法器83

3.3.7原码除法运算86

*3.3.8补码除法运算90

3.4浮点数运算93

3.4.1浮点数加减运算93

*3.4.2浮点数乘除运算97

3.5运算部件的组成100

*3.5.1定点运算部件100

*3.5.2浮点运算部件102

3.6本章小结103

习题103

 第4章指令系统107

4.1指令格式设计107

4.1.1指令地址码的个数107

4.1.2指令格式设计原则108

4.2指令系统设计108

4.2.1基本设计问题109

4.2.2操作数类型110

4.2.3寻址方式110

4.2.4操作类型115

4.2.5操作码编码114

4.2.6标志信息的生成与使用116

4.2.7指令系统设计风格118

4.3指令系统实例120

*4.3.1IA32指令系统120

*4.3.2ARM指令系统123

4.4程序的机器级表示125

4.4.1MIPS汇编语言和机器语言125

*4.4.2选择结构的机器代码表示129

*4.4.3循环结构的机器代码表示130

*4.4.4过程调用的机器代码表示131

4.5本章小结138

习题139

第5章中央处理器142

5.1CPU概述142

5.1.1指令执行过程142

5.1.2CPU的基本功能和基本组成143

5.1.3数据通路的基本结构144

5.2单周期处理器设计152

5.2.1指令功能的描述153

5.2.2数据通路的设计154

5.2.3控制逻辑单元的设计162

5.2.4时钟周期的确定168

5.3多周期处理器设计169

*5.3.1信号竞争问题169

*5.3.2指令执行状态分析170

*5.3.3硬连线路控制器设计172

5.4微程序控制器设计175

5.4.1微程序控制器的结构175

*5.4.2微命令编码176

*5.4.3微指令地址的确定181

5.5异常和中断处理184

5.5.1基本概念184

5.5.2异常处理过程186

*5.5.3带异常处理的处理器设计187

5.6本章小结189

习题190

第6章指令流水线194

6.1流水线概述194

6.1.1流水线的执行效率194

6.1.2适合流水线的指令集特征195

6.2流水线处理器的实现196

6.2.1每条指令的流水段分析196

6.2.2流水线数据通路的设计197

6.2.3流水线控制器的设计202

6.3流水线冒险及其处理203

6.3.1结构冒险203

6.3.2数据冒险205

6.3.3控制冒险211

6.4高级流水线技术219

*6.4.1静态多发射处理器220

*6.4.2动态多发射处理器223

*6.4.3Pentium 4处理器的流水线结构227

6.5本章小结230

习题232

第7章存储器分层体系结构235

7.1存储器概述235

7.1.1存储器的分类235

7.1.2主存储器的组成和基本操作236

7.1.3存储器的主要性能指标237

7.1.4存储器的层次化结构238

7.2半导体随机存取存储器239

7.2.1基本存储元件239

7.2.2SRAM芯片和DRAM芯片240

7.2.3SDRAM芯片技术244

7.3存储器芯片的扩展及其与CPU的连接245

7.3.1内存条和内存条插槽245

7.3.2存储器芯片的扩展247

7.4半导体只读存储器和Flash存储器248

7.4.1半导体只读存储器248

7.4.2半导体Flash存储器248

7.5并行存储器结构技术250

7.5.1双口存储器250

7.5.2多模块存储器250

7.6高速缓冲存储器252

7.6.1程序访问的局部性253

7.6.2cache的基本工作原理255

7.6.3cache行和主存块之间的映射方式257

7.6.4cache中主存块的替换算法264

7.6.5cache的一致性问题267

7.6.6cache性能评估268

*7.6.7影响cache性能的因素269

*7.6.8cache 结构举例272

7.7虚拟存储器274

*7.7.1进程与进程的上下文切换274

*7.7.2存储器管理275

7.7.3虚拟地址空间277

7.7.4虚拟存储器的实现279

*7.7.5存储保护285

7.8本章小结287

习题287

第8章互连及输入输出组织293

8.1外部设备的分类与特点293

8.1.1外设的分类293

8.1.2外设的特点294

8.2输入设备和输出设备294

*8.2.1键盘294

*8.2.2鼠标器296

*8.2.3打印机296

*8.2.4显示器298

8.3外部存储设备300

8.3.1磁表面存储原理300

8.3.2硬磁盘存储器302

8.3.3冗余磁盘阵列306

8.3.4U盘和固态硬盘308

8.4外设与CPU、主存的互连309

8.4.1总线概述309

8.4.2基于总线的互连结构311

8.5I/O接口316

8.5.1I/O接口的功能316

8.5.2I/O接口的通用结构316

8.5.3I/O端口及其编址318

8.6I/O数据传送控制方式319

8.6.1程序直接控制I/O方式319

8.6.2程序中断I/O方式322

8.6.3DMA方式 332

8.7I/O子系统概述335

8.8内核空间I/O软件338

8.8.1与设备无关的I/O软件338

8.8.2设备驱动程序340

8.8.3中断服务程序341

8.9本章小结343

习题344

第9章并行处理系统348

9.1并行处理系统概述348

9.1.1并行处理的主要技术问题348

9.1.2并行处理系统的分类350

9.2多处理器系统352

9.2.1UMA多处理器结构353

9.2.2NUMA多处理器结构355

9.2.3多处理器系统中的互连网络357

9.2.4片级多处理器和多线程技术358

9.3多计算机系统359

9.3.1集群多计算机系统359

9.3.2网格多计算机系统363

9.4向量处理机和SIMD技术363

9.4.1向量处理机363

9.4.2Intel架构中的SIMD技术365

9.4.3GPU架构367

9.5并行处理编程模式简介370

9.6本章小结373

参考文献375

第1章计算机系统概述1

1.1计算机的发展历程1

1.1.1通用电子计算机的诞生1

1.1.2第一代计算机2

1.1.3第二代计算机2

1.1.4第三代计算机3

1.1.5第四代计算机3

1.2计算机系统的基本组成4

1.2.1计算机硬件4

1.2.2计算机软件8

1.3计算机系统的层次结构8

1.3.1计算机系统抽象层的转换9

1.3.2计算机系统的不同用户10

1.4程序开发与执行过程11

1.4.1从源程序到可执行程序11

1.4.2可执行文件的启动和执行13

1.4.3程序与指令的关系14

1.4.4指令的执行过程15

1.5计算机系统性能评价16

1.5.1计算机性能的定义17

1.5.2计算机性能的测试17

1.5.3用指令执行速度进行性能评估19

1.5.4用基准程序进行性能评估20

1.6本章小结 21

习题22

第2章数据的机器级表示24

2.1数制和编码24

2.1.1信息的二进制编码24

2.1.2进位记数制26

2.1.3定点与浮点表示30

2.1.4定点数的编码表示30

计算机组成与系统结构(第2版)2.2整数的表示35

2.2.1无符号整数的表示35

2.2.2带符号整数的表示35

2.2.3C语言中的整数类型35

2.3实数的表示37

2.3.1浮点数的表示格式37

2.3.2浮点数的规格化38

2.3.3IEEE 754浮点数标准38

2.3.4C语言中的浮点数类型43

2.4十进制数的表示44

2.4.1用ASCII码字符表示44

2.4.2用BCD码表示45

2.5非数值数据的编码表示45

2.5.1逻辑值45

2.5.2西文字符46

2.5.3汉字字符47

2.6数据的宽度和存储49

2.6.1数据的宽度和单位49

2.6.2数据的存储和排列顺序50

2.7数据校验码53

2.7.1奇偶校验码54

2.7.2海明校验码55

2.7.3循环冗余校验码59

2.8本章小结61

习题61

第3章运算方法和运算部件65

3.1高级语言和机器指令中的运算65

3.1.1C程序中涉及的运算65

3.1.2MIPS指令中涉及的运算68

3.2基本运算部件69

3.2.1串行进位加法器70

3.2.2并行进位加法器71

3.2.3带标志加法器72

3.2.4算术逻辑部件73

3.3定点数运算74

3.3.1补码加减运算74

3.3.2原码加减运算76

3.3.4原码乘法运算77

3.3.5补码乘法运算80

3.3.6快速乘法器82

3.3.7原码除法运算85

3.3.8补码除法运算89

3.4浮点数运算92

3.4.1浮点数加减运算92

3.4.2浮点数乘除运算96

3.5运算部件的组成99

3.5.1定点运算部件99

3.5.2浮点运算部件101

3.6本章小结102

习题102

 第4章指令系统106

4.1指令格式设计106

4.1.1指令地址码的个数106

4.1.2指令格式设计原则107

4.2指令系统设计107

4.2.1基本设计问题108

4.2.2操作数类型109

4.2.3寻址方式109

4.2.5操作码编码113

4.2.6标志信息的生成与使用115

4.2.7指令系统设计风格117

4.3指令系统实例119

4.3.1IA32指令系统119

4.3.2ARM指令系统122

4.4程序的机器级表示124

4.4.1MIPS汇编语言和机器语言124

4.4.2选择结构的机器代码表示128

4.4.3循环结构的机器代码表示129

4.4.4过程调用的机器代码表示130

4.5本章小结137

习题138

第5章中央处理器141

5.1CPU概述141

5.1.1指令执行过程141

5.1.2CPU的基本功能和基本组成142

5.1.3数据通路的基本结构143

5.2单周期处理器设计151

5.2.1指令功能的描述152

5.2.2数据通路的设计153

5.2.3控制逻辑单元的设计161

5.2.4时钟周期的确定167

5.3多周期处理器设计168

5.3.1信号竞争问题168

5.3.2指令执行状态分析169

5.3.3硬连线路控制器设计171

5.4微程序控制器设计174

5.4.1微程序控制器的结构174

5.4.2微命令编码175

5.4.3微指令地址的确定180

5.5异常和中断处理183

5.5.1基本概念183

5.5.2异常处理过程185

5.5.3带异常处理的处理器设计186

5.6本章小结188

习题189

第6章指令流水线193

6.1流水线概述193

6.1.1流水线的执行效率193

6.1.2适合流水线的指令集特征194

6.2流水线处理器的实现195

6.2.1每条指令的流水段分析195

6.2.2流水线数据通路的设计196

6.2.3流水线控制器的设计201

6.3流水线冒险及其处理202

6.3.1结构冒险202

6.3.2数据冒险204

6.3.3控制冒险210

6.4高级流水线技术218

6.4.1静态多发射处理器219

6.4.2动态多发射处理器222

6.4.3Pentium 4处理器的流水线结构226

6.5本章小结229

习题231

第7章存储器分层体系结构234

7.1存储器概述234

7.1.1存储器的分类234

7.1.2主存储器的组成和基本操作235

7.1.3存储器的主要性能指标236

7.1.4存储器的层次化结构237

7.2半导体随机存取存储器238

7.2.1基本存储元件238

7.2.2静态SRAM芯片和DRAM芯片239

7.2.3SDRAM芯片技术243

7.3存储器芯片的扩展及其与CPU的连接244

7.3.1内存条和内存条插槽244

7.3.2存储器芯片的扩展246

7.4半导体只读存储器和Flash存储器247

7.4.1半导体只读存储器247

7.4.2半导体Flash存储器247

7.5并行存储器结构技术249

7.5.1双口存储器249

7.5.2多模块存储器249

7.6高速缓冲存储器251

7.6.1程序访问的局部性252

7.6.2cache的基本工作原理254

7.6.3cache行和主存块之间的映射方式256

7.6.4cache中主存块的替换算法263

7.6.5cache的一致性问题266

7.6.6cache性能评估267

7.6.7影响cache性能的因素268

7.6.8cache 结构举例271

7.7虚拟存储器273

7.7.1进程与进程的上下文切换273

7.7.2存储器管理274

7.7.3虚拟地址空间276

7.7.4虚拟存储器的实现278

7.7.5存储保护284

7.8本章小结286

习题286

第8章互连及输入输出组织292

8.1外部设备的分类与特点292

8.1.1外设的分类292

8.1.2外设的特点293

8.2输入设备和输出设备293

8.2.1键盘293

8.2.2鼠标器295

8.2.3打印机295

8.2.4显示器297

8.3外部存储设备299

8.3.1磁表面存储原理299

8.3.2硬磁盘存储器301

8.3.3冗余磁盘阵列305

8.3.4U盘和固态硬盘307

8.4外设与CPU、主存的互连308

8.4.1总线概述308

8.4.2基于总线的互连结构310

8.5I/O接口315

8.5.1I/O接口的功能315

8.5.2I/O接口的通用结构315

8.5.3I/O端口及其编址317

8.6I/O数据传送控制方式318

8.6.1程序直接控制I/O方式318

8.6.2程序中断I/O方式321

8.6.3DMA方式 331

8.7I/O子系统概述334

8.8内核空间I/O软件337

8.8.1与设备无关的I/O软件337

8.8.2设备驱动程序339

8.8.3中断服务程序340

8.9本章小结342

习题343

第9章并行处理系统347

9.1并行处理系统概述347

9.1.1并行处理的主要技术问题347

9.1.2并行处理系统的分类349

9.2多处理器系统351

9.2.1UMA多处理器结构352

9.2.2NUMA多处理器结构354

9.2.3多处理器系统中的互连网络356

9.2.4片级多处理器和多线程技术357

9.3多计算机系统358

9.3.1集群多计算机系统358

9.3.2网格多计算机系统362

9.4向量处理机和SIMD技术362

9.4.1向量处理机362

9.4.2Intel架构中的SIMD技术364

9.4.3GPU架构366

9.5并行处理编程模式简介369

9.6本章小结372

参考文献374

第1章计算机系统概述1

1.1计算机系统的基本组成及其层次结构1

1.2计算机硬件的5个功能部件及其功能4

1.3计算机系统主要的技术与性能指标7

1.4计算机的体系结构、组成和实现概述9

1.5计算机发展进步、分类和拓展应用的进程10

本章内容小结和学习方法建议13

习题与思考题14

第2章数字电路基础和常用器件15

2.1数字电路的基本元件15

2.1.1晶体二极管与三极管15

2.1.2应用案例16

2.2数字电路基础及其相关处理方法18

2.2.13种基本逻辑关系18

2.2.2逻辑函数及其描述方法21

2.2.3逻辑函数的特性、规则与应用22

2.3组合逻辑电路及时序逻辑电路23

2.3.1常用逻辑门器件23

2.3.2时序逻辑电路26

2.3.3存储器芯片简介30

2.3.4几个专用功能器件和存储器芯片的引脚图30

2.4现场可编程逻辑器件及其应用31

2.4.1现场可编程器件概述31

2.4.2CPLD和FPGA的编程与应用34

本章内容小结和学习方法建议35

习题与思考题35

第3章数据表示、运算算法和线路实现37

3.1数字化信息编码的概念和二进制编码知识37

3.1.1数字化信息编码的概念37

3.1.2二进制编码和码制转换38

3.1.3检错纠错码44

3.2数据表示48

3.2.1逻辑类型数据的表示48

3.2.2字符类型数据的表示48

3.2.3多媒体信息编码51

3.2.4数值类型数据的表示53

3.3二进制数值数据的编码方案与运算算法58

3.3.1原码、反码、补码的定义58

3.3.2补码加、减运算规则和电路实现62

3.3.3原码一位乘法、除法的实现方案64

3.3.4实现乘法、除法的其他方案69

本章内容小结和学习方法建议74

习题与思考题75

计算机组成与体系结构(第2版)第4章运算器部件77

4.1算术逻辑运算单元的功能设计与线路实现77

4.2定点运算器79

4.2.1定点运算器部件的功能、组成与控制概述79

4.2.2运算器芯片Am2901实例与使用80

4.2.3MIPS多指令周期CPU系统的运算器的组成及其功能84

4.2.4简化TEC2000计算机的运算器部件的功能、组成与设计85

4.3浮点运算和浮点运算器91

4.3.1浮点数的运算规则91

4.3.2浮点运算器举例95

本章内容小结和学习方法建议97

习题与思考题98

第5章指令系统和汇编语言程序设计101

5.1指令格式和指令系统概述101

5.1.1指令的定义和指令格式101

5.1.2操作码的组织与编码102

5.1.3操作数的指定与使用103

5.1.4指令的分类104

5.1.5指令周期及其对计算机性能和硬件结构的影响105

5.2基本寻址方式概述107

5.3指令系统举例109

5.3.1Pentium Ⅱ计算机的指令系统110

5.3.2MIPS32计算机的指令系统112

5.3.3PDP11计算机的指令系统113

5.3.4TEC2000 计算机的指令系统115

5.4TEC2000计算机的汇编语言程序设计118

5.4.1汇编语言及其程序设计中的有关概念118

5.4.2教学计算机的汇编程序设计举例120

本章内容小结和学习方法建议125

习题与思考题126

第6章控制器128

6.1控制器的功能与组成概述128

6.2硬连线控制器129

6.2.1硬连线控制器的组成和运行原理简介130

6.2.2MIPS32计算机的控制器简介131

6.2.3TEC2000和THFPGA计算机控制器概述136

6.2.4简化TEC2000的CPU系统的设计146

6.3微程序控制器部件157

6.3.1微程序控制器的基本组成和运行原理157

6.3.2微程序设计中的下地址形成逻辑和微程序设计160

本章内容小结和学习方法建议163

习题与思考题164

第7章多级结构存储器系统和主存储器168

7.1存储器系统概述168

7.1.1存储器分类168

7.1.2存储器系统目标169

7.1.3多级结构存储器系统171

7.2主存储器172

7.2.1主存储器概述172

7.2.2动态存储器的存储原理174

7.2.3静态存储器的存储原理175

7.2.4存储器容量扩展176

7.3教学计算机的主存储器实例178

7.4提高主存储器性能的途径181

本章内容小结和学习方法建议183

习题与思考题183

第8章高速缓冲存储器和虚拟存储器185

8.1高速缓冲存储器185

8.1.1Cache的运行原理185

8.1.2Cache的3种映像方式187

8.1.3Cache实用中的问题189

8.2虚拟存储器部件192

8.2.1虚拟存储器的概念介绍192

8.2.2段式存储管理192

8.2.3页式存储管理193

本章内容小结和学习方法建议195

习题与思考题195

第9章外部存储器设备198

9.1外存设备概述198

9.1.1主要技术指标198

9.1.2磁记录原理与记录方式199

9.2磁盘设备201

9.2.1磁记录介质201

9.2.2磁盘驱动器202

9.2.3磁盘控制器203

9.3磁盘阵列204

9.4光盘设备207

9.4.1只读光盘207

9.4.2可刻光盘208

9.4.3可擦写光盘210

9.4.4DVD210

9.4.5BluRay211

本章内容小结和学习方法建议211

习题与思考题211

第10章输入输出设备212

10.1输入输出设备概述212

10.2常用的输入设备213

10.3常用的输出设备215

10.3.1点阵式输出设备基本原理215

10.3.2显示器的组成和运行原理216

10.3.3打印机的组成和运行原理220

10.3.4计算机终端223

本章内容小结和学习方法建议224

习题与思考题224

第11章输入输出系统225

11.1计算机输入输出系统概述225

11.2计算机总线226

11.2.1总线概述226

11.2.2总线结构228

11.2.3总线宽度229

11.2.4总线时钟230

11.2.5总线仲裁232

11.2.6总线举例234

11.3输入输出接口240

11.3.1输入输出接口的功能240

11.3.2通用可编程接口组成240

11.3.3输入输出接口举例241

11.4输入输出方式244

11.4.1程序直接控制方式244

11.4.2程序中断传送方式244

11.4.3直接存储器访问方式247

11.4.4I/O通道控制方式249

11.4.5外围处理机方式249

本章内容小结和学习方法建议249

习题与思考题250

第12章流水线技术252

12.1流水线的基本概念252

12.1.1流水线的概念252

12.1.2流水线的表示方法254

12.1.3流水线的特点255

12.1.4流水线的分类方法256

12.2流水线的性能指标259

12.2.1流水线的吞吐率259

12.2.2流水线的加速比262

12.2.3流水线的效率262

12.2.4流水线的最佳段数263

12.3DLX指令集与DLX流水线263

12.3.1DLX指令集结构介绍263

12.3.2DLX的一种简单实现268

12.3.3DLX流水线的实现原理270

12.4流水线中的相关问题273

12.4.1结构相关273

12.4.2数据相关275

12.4.3控制相关281

12.5指令级并行技术285

12.5.1基本概念285

12.5.2多指令发射技术286

本章内容小结和学习方法建议289

习题与思考题289

第13章并行计算机体系结构291

13.1并行计算机体系结构概述291

13.1.1计算机体系结构的发展291

13.1.2计算机体系结构的分类292

13.1.3并行计算机体系结构分类294

13.2并行计算机系统的设计问题295

13.2.1并行计算机系统的互联网络295

13.2.2并行计算机系统的性能问题300

13.2.3并行计算机系统的软件问题302

13.3SIMD计算机简介303

13.3.1阵列处理机303

13.3.2向量处理机304

13.4共享内存的多处理机系统306

13.4.1一致性内存访问的UMA多处理机系统307

13.4.2非一致性内存访问的NUMA多处理机系统312

13.4.3基于Cache内存访问的COMA多处理机系统314

13.5基于消息传递的多计算机系统314

13.5.1大规模并行处理机316

13.5.2工作站集群316

本章内容小结和学习方法建议317

习题与思考题318

主要参考书319

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个