新書推薦:
《
UE5虚幻引擎必修课(视频教学版)
》
售價:NT$
505.0
《
真需求
》
售價:NT$
505.0
《
阿勒泰的春天
》
售價:NT$
230.0
《
如见你
》
售價:NT$
234.0
《
人格阴影 全新修订版,更正旧版多处问题。国际分析心理学协会(IAAP)主席力作
》
售價:NT$
305.0
《
560种野菜野果鉴别与食用手册
》
售價:NT$
305.0
《
中国官僚政治研究(一部洞悉中国政治制度演变的经典之作)
》
售價:NT$
286.0
《
锂电储能产品设计及案例详解
》
售價:NT$
505.0
|
編輯推薦: |
本书集作者20多年相关课程教学之经验,汇国内外相关资料之精华,内容新颖、充实,结构清晰、完整,文字通俗、简洁。既可作为“计算机组成原理”、“计算机组成与系统结构”等课程的教材,也可作为“计算机组成原理实验”和“计算机系统结构”等课程的教学参考书。与国内外同类教材相比,主要特色如下:
1.强调软件和硬件的关联
将计算机组成和系统结构内容与程序设计、操作系统以及编译器等软件内容有机结合,使读者能从程序员角度深刻理解计算机组成和系统结构原理,以及硬件与软件的关系。
2.细化流水线CPU设计内容
以MIPS体系为主线,建立高级语言→汇编语言→机器语言→CPU功能之间的转换关系,并以实际MIPS指令为目标,循序渐进地逐步细化流水线CPU设计内容。
3.注重用实例图表阐述概念
用大量实例和图表详实阐述基本原理及其具体应用,使抽象的概念和内容易于理解和消化,并提供形式多样、内容丰富的习题,用以进行课后练习。
4. 提供丰富的教辅资源
教材配套网站提供了课堂电子教案、习题参考答案、动画视频以及其他各类丰富的教辅资料,以帮助教师备课,辅助学生学习,并提供学习交流平台。
|
內容簡介: |
《计算机组成与系统结构(第3版)》主要介绍计算机组成与系统结构涉及的相关概念、理论和技术,主要内容包括指令集体系结构、数据的表示和存储,以及实现指令集体系结构的计算机各部件的内部工作原理、组成结构及其相互连接。本书共分9章: 第1章对计算机系统及其性能评价进行概述性介绍;第2~3章主要介绍数据的机器级表示和运算,以及运算部件的结构与设计;第4~6章介绍指令系统、各种CPU设计技术及指令流水线;第7章主要介绍包含主存、外存、cache和虚拟存储器在内的存储器层次结构;第8章介绍总线互连及输入输出系统;第9章介绍并行处理计算系统的基本硬件结构和并行程序设计编程模型。
本书内容详尽,反映现实,概念清楚,通俗易懂,实例丰富,并提供大量典型习题供读者练习。本书可以作为高等学校计算机专业本科生“计算机组成原理”“计算机组成原理与系统结构”“计算机系统结构”课程的教材,也可以作为有关专业研究生或计算机技术人员的参考书。
|
關於作者: |
袁春风,南京大学计算机科学与技术系二级教授,中国计算机学会杰出教育奖和宝钢优秀教师奖获得者。先后主持精品课程和精品资源共享课;主编高等教育规划教材和江苏省重点建设教材各一套;获省“质量工程”教学奖励、省教学成果特等奖、国家教学成果二等奖等;主持精品在线开放课程两门。
|
目錄:
|
第1章计算机系统概述1
1.1计算机的发展历程1
1.1.1通用电子计算机的诞生1
1.1.2元器件的更新与体系结构的发展2
1.2计算机系统的基本组成3
1.2.1计算机硬件的基本组成4
1.2.2计算机软件7
1.3计算机系统层次结构7
1.3.1计算机系统抽象层的转换8
1.3.2计算机系统的不同用户9
1.4程序开发与执行过程11
1.4.1从源程序到可执行程序11
1.4.2可执行文件的启动和执行12
1.4.3程序与指令及控制信号的关系13
1.4.4指令的执行过程14
1.5计算机系统性能评价16
1.5.1计算机性能的定义16
1.5.2用指令执行速度进行性能评估18
1.5.3用基准程序进行性能评估18
1.5.4Amdahl定律19
1.6本章小结20
习题20
第2章数据的机器级表示23
2.1数制和编码23
2.1.1信息的二进制编码23
2.1.2进位记数制24
2.1.3定点和浮点表示27
2.1.4定点数的编码27
2.2整数的表示32
2.2.1无符号整数的表示32
2.2.2带符号整数的表示32
2.2.3C语言中的整数类型33
2.3实数的表示34
2.3.1浮点数的表示格式34
2.3.2浮点数的规格化36
2.3.3IEEE 754浮点数标准36
2.3.4C语言中的浮点数类型39
2.4非数值数据的编码表示40
2.4.1逻辑值41
2.4.2西文字符41
2.4.3汉字字符42
2.5数据的宽度和存储44
2.5.1数据的宽度和单位44
2.5.2数据的存储和排列顺序46
2.6本章小结48
习题49
目录计算机组成与系统结构(第3版)第3章运算方法和运算部件52
3.1高级语言和机器指令中的运算52
3.1.1C语言程序中涉及的运算52
3.1.2MIPS指令中涉及的运算54
3.2基本运算部件55
3.2.1全加器和加法器55
3.2.2并行进位加法器56
3.2.3带标志加法器58
3.2.4算术逻辑部件59
3.3定点数运算59
3.3.1补码加减运算60
3.3.2原码加减运算61
3.3.3原码乘法运算62
3.3.4补码乘法运算65
3.3.5快速乘法器67
3.3.6原码除法运算69
3.3.7补码除法运算74
3.4整数乘除运算76
3.4.1乘除运算溢出判断76
3.4.2常量的乘除运算78
3.5浮点数运算80
3.5.1浮点数加减运算80
3.5.2浮点运算的精度和舍入83
3.5.3浮点数乘/除运算85
3.6本章小结87
习题88
第4章指令系统91
4.1指令格式设计91
4.1.1指令地址码的个数91
4.1.2指令格式设计原则92
4.2指令系统设计92
4.2.1基本设计问题92
4.2.2操作数类型93
4.2.3寻址方式94
4.2.4操作类型96
4.2.5操作码编码97
4.2.6标志信息的生成与使用98
4.2.7指令系统设计风格99
4.2.8异常和中断处理机制101
4.3程序的机器级表示102
4.3.1MIPS汇编语言和机器语言103
4.3.2选择结构的机器代码表示107
4.3.3循环结构的机器代码表示108
4.3.4过程调用的机器代码表示109
4.4指令系统实例: RISCV架构115
4.4.1RISCV指令系统概述115
4.4.2RISCV指令参考卡116
4.4.3基础整数指令集119
4.5本章小结124
习题124
第5章中央处理器129
5.1CPU概述129
5.1.1CPU的基本功能129
5.1.2CPU的基本组成130
5.1.3数据通路与时序控制132
5.2单周期处理器设计133
5.2.1指令功能的描述134
5.2.2数据通路的设计135
5.2.3控制器的设计143
5.2.4时钟周期的确定149
5.3多周期处理器设计150
5.3.1多周期处理器设计思想150
5.3.2多周期数据通路设计151
5.3.3硬连线控制器设计154
5.3.4微程序控制器设计156
5.4带异常处理的处理器设计158
5.4.1CPU对异常和中断的处理158
5.4.2带异常处理的数据通路设计160
5.4.3带异常处理的有限状态机161
5.5本章小结162
习题162
第6章指令流水线165
6.1流水线概述165
6.1.1流水线的执行效率165
6.1.2适合流水线的指令集特征166
6.2流水线处理器的实现167
6.2.1每条指令的流水段分析167
6.2.2流水线数据通路的设计168
6.2.3流水线控制器的设计173
6.3流水线冒险及其处理174
6.3.1结构冒险174
6.3.2数据冒险176
6.3.3控制冒险182
6.4高级流水线技术191
6.4.1静态多发射处理器191
6.4.2动态多发射处理器195
6.4.3Pentium 4处理器的流水线结构199
6.5本章小结202
习题203
第7章存储器层次结构206
7.1存储器概述206
7.1.1存储器的分类206
7.1.2主存储器的组成和基本操作207
7.1.3存储器的层次化结构208
7.2半导体随机存取存储器209
7.2.1基本存储元件209
7.2.2SRAM芯片和DRAM芯片210
7.2.3SDRAM芯片技术213
7.2.4内存条和内存条插槽214
7.2.5存储器芯片的扩展215
7.2.6多模块存储器217
7.3外部辅助存储器218
7.3.1磁盘存储器的结构219
7.3.2磁盘存储器的性能指标220
7.3.3磁盘存储器的连接222
7.3.4冗余磁盘阵列222
7.3.5Flash存储器和U盘223
7.3.6固态硬盘225
7.4存储器的数据校验225
7.4.1数据校验基本原理225
7.4.2奇偶校验码226
7.4.3海明校验码227
7.4.4循环冗余校验码231
7.5高速缓冲存储器233
7.5.1程序访问的局部性233
7.5.2cache的基本工作原理235
7.5.3cache行和主存块之间的映射方式237
7.5.4cache中主存块的替换算法244
7.5.5cache的一致性问题247
7.5.6cache缺失对总体性能的影响248
7.5.7cache设计应考虑的问题249
7.5.8cache结构举例251
7.6虚拟存储器252
7.6.1虚拟存储器的基本概念252
7.6.2进程的虚拟地址空间253
7.6.3虚拟存储器的实现255
7.6.4存储保护263
7.7本章小结267
习题267
第8章系统互连及输入输出组织273
8.1外部设备的分类与特点273
8.1.1外设的分类273
8.1.2外设的特点274
8.2常用输入输出设备274
8.2.1键盘274
8.2.2打印机275
8.2.3显示器277
8.3外设与CPU和主存的互连278
8.3.1总线的基本概念278
8.3.2基于总线的互连结构280
8.3.3I/O接口的功能283
8.3.4I/O接口的通用结构285
8.3.5I/O端口及其编址286
8.4I/O数据传送控制方式288
8.4.1程序直接控制I/O方式288
8.4.2中断控制I/O方式291
8.4.3DMA方式301
8.5内核空间I/O软件304
8.5.1I/O子系统概述304
8.5.2与设备无关的I/O软件306
8.5.3设备驱动程序308
8.5.4中断服务程序309
8.6本章小结309
习题310
第9章并行处理系统313
9.1并行处理系统概述313
9.1.1并行处理的主要技术问题313
9.1.2并行处理系统的分类315
9.2多处理器系统317
9.2.1UMA多处理器结构318
9.2.2NUMA多处理器结构320
9.2.3多处理器系统中的互连网络322
9.2.4多核处理器和硬件多线程技术323
9.2.5共享存储器的同步控制325
9.3多计算机系统329
9.3.1集群多计算机系统330
9.3.2网格多计算机系统333
9.4向量处理机和SIMD技术333
9.4.1向量计算机334
9.4.2Intel架构中的SIMD技术335
9.4.3GPU架构338
9.5并行处理编程模式简介340
9.6本章小结343
参考文献345
|
內容試閱:
|
计算机组成(computer organization)是指计算机主要功能部件的组成结构、逻辑设计及功能部件之间的相互连接关系。计算机系统结构 (computer architecture)的经典定义是指程序设计者(主要指低级语言程序员或系统软件设计者)所看到的计算机系统的属性,即计算机的功能特性和概念性结构,也称指令集体系结构(instruction set architecture,ISA)。指令集体系结构规定的内容主要包括: 指令操作类型、指令处理的数据类型、指令格式、寻址方式和可访问空间大小、通用寄存器个数和位数、控制和状态寄存器的定义、I/O空间的编址方式、异常和中断机制、机器工作状态的定义和切换、输入输出数据传送方式、存储保护方式等。
本书主要介绍计算机组成与系统结构涉及的相关内容。在计算机系统层次结构中,这些内容位于软件和硬件的结合处,不仅涉及计算机硬件设计和指令系统设计,还涉及操作系统、编译程序和程序设计等部分软件技术,是整个计算机系统中核心的部分。
1. 本书的写作思路和内容组织
计算机组成与系统结构这两部分涉及的内容相互融合,密不可分。无论是国内还是国外,很多高校都逐渐把计算机组成原理和系统结构课程的内容有机结合起来;甚至国外一些经典教材还把与前两者密切相关的软件设计内容也融合在一起。这种方式可以加深读者对计算机软硬件系统的整体化理解,并有效地增强对学生的计算机系统设计能力的培养。
本书在总结和借鉴国外著名高校使用的教材、教案、教学理念和教学方法的基础上,力图以“培养学生现代计算机系统设计能力”为目标,贯彻“从程序设计视角出发,强调软硬件关联与协同,以CPU设计为核心”的组织思路,试图改变同类传统教材就硬件讲硬件、软硬件分离的内容组织方式,以系统化观点全面地介绍计算机组成与系统结构相关知识和技术。
为了体现以上思路和目标,本书在以下几方面进行重点考虑和内容组织。
(1) 首先基于“高级语言程序→汇编语言程序→机器指令序列→控制信号”的路线展现程序从编程设计、翻译转换,到终在CPU上运行的整个过程。在此基础上,用计算机系统层次化的观点阐述“计算机组成原理”和“计算机组成与系统结构”课程在整个计算机系统中的位置、内容和作用,从而为清晰了解本课程的内容和作用、为全面建立计算机软硬件系统的整体概念打下基础。
(2) 将指令执行过程和异常、中断、存储访问、I/O访问等重要概念和技术结合起来进行介绍,力求清晰说明CPU执行指令过程中硬件与操作系统相互切换和协同工作的处理过程,使读者深刻理解软硬件系统之间的关系与协同工作过程。
(3) 讲述与程序设计有密切关系的体系结构内容(如数据表示、信息存放、操作数寻址、过程调用、程序访问局部性等)时,试图通过对硬件设计与程序设计之间关系的说明,使读者建立 “从程序员视角理解计算机硬件系统设计,从硬件设计的视角理解程序设计与执行”的思想,力图在提高读者硬件设计能力的同时,也增强其进行高效的和系统化的程序设计的能力。
前言计算机组成与系统结构(第3版)(4) 在“计算机组成原理”教材传统内容的基础上增加指令流水线设计相关的详细内容,依照“简单的IAS计算机CPU→总线式CPU→单周期CPU→多周期CPU→基本流水线CPU→动态超标量超流水线CPU”的次序,循序渐进地介绍CPU设计技术及其发展过程,以MIPS处理器和Pentium 4处理器为蓝本,力图使读者全面深入地掌握现代计算机的CPU设计技术。
(5) 结合指令流水线技术介绍基于流水线的编译优化技术,使读者对编译技术与指令流水线实现技术之间的密切关系有一定的认识和理解。
(6) 在详细介绍单处理器计算机组成与系统结构原理的基础上,对并行处理系统进行简要介绍,为读者进一步学习高级体系结构打下必要的基础。
考虑到很多读者需要参考国外同类教材,为了使读者在阅读国外教材时不用对其中的门电路符号进行切换,以方便读者快速理解电路图,本书中的门电路符号未使用国标,而是采用了美标。
2. 各章节主要内容
本书共有9章,各章主要内容如下。
第1章(计算机系统概述)主要介绍冯?瘙簚诺依曼结构的特点、计算机硬件的基本组成、计算机系统层次结构、程序开发与执行过程以及系统性能评价方法。
第2章(数据的机器级表示)主要介绍无符号数和有符号整数的表示、IEEE 754浮点数标准、西文字符和汉字的编码表示、数据的宽度和存储方式。
第3章(运算方法和运算部件)主要介绍核心运算部件ALU的功能和设计、各类定点数和浮点数的运算方法和相应的运算部件。
第4章(指令系统)主要介绍高级语言与低级语言的关系、指令格式、操作数类型、寻址方式、操作类型、异常和中断处理机制,并以MIPS架构为例介绍C语言程序的机器级表示。
第5章(中央处理器)主要介绍CPU的基本功能和内部结构、指令执行过程、数据通路的基本组成和定时、单周期和多周期数据通路、控制器的设计、带异常处理的处理器设计。
第6章(指令流水线)主要介绍指令流水线的基本原理、流水段寄存器的概念、流水线数据通路的设计、流水线的控制信号、结构冒险及其处理、数据冒险及其处理、转发技术、控制冒险及其处理、分支预测原理、超标量和动态流水线的概念和技术。
第7章(存储器层次结构)主要介绍存储器层次结构的概念、半导体存储器的组织、多模块存储器、磁盘和固态硬盘、存储器的数据校验、cache的基本原理和相应的实现技术、虚拟存储器的基本概念、进程的虚拟地址空间、虚拟存储器的实现和存储保护。
第8章(系统互连及输入输出组织)主要介绍常用输入输出设备的基本原理、外设与主机的互连、I/O接口的功能和结构、I/O端口编址方式、程序查询I/O方式、中断I/O方式、DMA方式以及内核I/O软件的基本概述等。
第9章(并行处理系统)主要介绍UMA多处理器、CCNUMA多处理器、多核处理器和硬件多线程技术、共享存储器的同步控制、集群、网格、CPU、向量处理机和SIMD等相关基本概念,以及并行处理编程模型简介。
3. 第3版修订内容
近几年来,计算机组成与系统结构领域发生了一些变革,一些技术有了新的发展。为了反映技术的进步,淘汰陈旧过时的内容,拓宽本领域知识的覆盖面,并更加合理地构建知识框架,特别是在进一步体现软硬件融合的教学理念方面,第3版进行了相应修订,主要包括以下几方面。
在第1章关于计算机系统性能评价一节中,简化了对计算机性能测试方面的介绍,同时增加了对Amdahl定律的介绍,并提供了相关例题。
对第2章进行了一些调整。因为目前通用计算机的用户程序几乎不会使用像BCD码等十进制数来表示数据,所以新版中删除了“十进制数的表示”一节。此外,由于各类存储器设计时都必须考虑数据校验码的问题,因而将“数据校验码”从第2章移到了介绍存储器层次结构的第7章。
第3章增加了对整数乘除运算溢出判断处理内容的介绍,从高级语言程序、编译器、指令系统和底层乘除运算电路等多个层面相互关联展开讨论,通过对溢出判断相关例子的分析,能让读者深刻理解计算机系统各层次之间的关联关系。此外,第3章删除了传统教材中的4位定点运算器这种中规模集成电路芯片的内容。
在第4章关于指令系统设计一节中,增加了异常/中断处理机制的介绍,改变了传统教材中将异常和中断相关内容放在输入输出部分重点介绍的做法,强调了异常/中断相关内容在指令系统设计中的重要性。在第4章的指令系统实例部分,将原来对IA32和ARM两种架构的简要介绍,改为对新型指令集架构RISCV的比较全面的介绍。
对于第5章,因为第2版教材对多周期处理器设计,特别是微程序控制器设计方面的内容讲解过于细化和具体,而引入多周期处理器的主要目的只是为了便于介绍带异常处理的处理器设计,因此,第3版中简化了不太重要的多周期处理器和微程序控制器方面的内容。
第7章的内容调整比较多。首先,将第2版中第7.2节~第7.5节合并为一节,并压缩调整了其中的一部分内容,使得内容更加简洁紧凑,逻辑性更强。其次,将第2版的8.3节“外部存储设备”作为存储器层次结构中的一层移到介绍存储器层次结构的第7章中,从逻辑上来说更加合理。再次,将第2章的“数据校验码”移到第7章,并增加了针对固态硬盘进行海明校验的基本方法介绍。后,在“虚拟存储器”这一节,删除了第2版中关于进程上下文切换、分区和分页存储管理等内容的介绍,增加了存储管理总体结构介绍,将可执行文件、进程虚拟地址空间、链接器、程序的生成和加载、页表、地址转换等许多计算机系统核心概念贯穿起来,以引导并加深读者对计算机系统层次结构的理解。此外,还增加了对RISCV虚拟存储管理机制的介绍。
在第9章的“多处理器系统”一节,增加了“共享存储器的同步控制”相关内容,介绍了RISCV架构中针对事务处理和操作原子性需要而提供的屏障指令和原子操作指令集RV32A中的部分指令,通过实例介绍了如何利用这些指令实现共享存储器的同步控制。
4. 关于本书使用的一些建议
本书可作为“计算机组成原理”课程的教材,也可作为“计算机组成原理实验”和“计算机系统结构”等课程的教学参考书。特别是对于不专门开设“计算机系统结构”课程的院校,使用本书作为“计算机组成与系统结构”课程的教材是比较合适的。
对于本书的使用,具体建议如下。
(1) 课堂教学应以主干内容为主,力求完整给出知识框架体系,并着重讲清楚相关概念之间的联系。
(2) 标注为的内容是可以跳过而不影响阅读连贯性的部分,主要有3类: 简单易懂的基础性内容,具体实现方面比较细节的内容,在技术层面上更加深入的内容。这些内容对深入理解课程的整体核心内容是非常有帮助的。因此,在课时允许的情况下,可以选择其中的一部分进行课堂讲解;在课时不允许的情况下,也可安排学生进行课后阅读。
(3) 书中每个重要的知识点和概念后面都有一些例子(答案分析过程以#结束),可选择部分重要的、难懂的例子在课堂上讲解,而大部分可留给学生自学。
(4) 习题中列出的概念术语基本涵盖了相应章节的主要概念,可以让学生对照检查是否全部清楚其含义;习题中列出的简答问题是相应章节重要的基本问题,可以通过对照检查以判断学生对相应章节内容的掌握程度;对于综合运用题,如果与程序设计相关,则可用编程方式来求解或验证,这样做,对学生深刻理解课程内容有帮助。
(5) 本书在CPU设计方面提供了比较具体的实现方案,相关内容可以作为基于FPGA和硬件描述语言进行CPU设计实验的参考资料。
5. 致谢
在本书的编写过程中,得到了张福炎教授的悉心指导;黄宜华教授从书稿的篇章结构到内容各方面都提出了许多宝贵的意见,进行了修改,并对全书内容进行了全面细致的审核和校对;书中有关CPU设计的初图稿和内容组织思路由陈贵海教授提供;此外,武港山教授以及俞建新、吴海军、张泽生、蔡晓燕等老师也对本书提出了许多宝贵的意见;杨晓亮、肖韬、翁基伟、刘长辉、宗恒、莫志刚、叶俊杰等研究生对相关章节的内容和习题分别进行了校对和试做,并提出了许多宝贵的意见和修改建议。在此对以上各位老师和研究生一并表示衷心的感谢。
本书是基于作者在南京大学从事“计算机组成原理”和“计算机组成与系统结构”课程教学20多年来所积累的讲稿内容编写而成的,感谢各位同仁和各届学生对讲稿内容所提出的宝贵意见,使得本教材的内容得以不断地改进和完善。
6. 结束语
本书广泛参考了国内外相关的经典教材和教案,在内容上力求做到取材先进,并反映技术发展现状;在内容的组织和描述上力求概念准确、语言通俗易懂、实例深入浅出,并尽量利用图示和实例来解释和说明问题。由于计算机组成与系统结构相关的基础理论和技术在不断发展,新的思想、概念、技术和方法不断涌现,加之作者水平有限,书中难免存在不当或遗漏之处,恳请广大读者对本书的不足之处给予指正,以便在后续的版本中予以改进。
作者2021年10月于南京
|
|