第一章 绪论
说明:本文参考《计算机组成与系统结构(第二版)》裘雪红、车向泉等。仅作为学习笔记分享,如有侵权,请联系删除,作者邮箱:zgyang2020@163.com,若读者发现错误,请在评论区留言,以便及时更正,不胜感激。
1.1 计算机的发展历史
所谓电子数字计算机,是指能对离散逻辑符号表示的数据或进行自动处理的电子装置,简称计算机。
1.1.1 发展历史
电子数字计算机的发展根据电子元器件可划分为如下几个阶段:
1. 第一代:电子管计算机(1946-1957年)
构成器件:电磁继电器、电子管等,直接使用机器语言编程。
Atanasoff-Berry计算机(简称ABC)是世界上第一台用电子管制造的二进制计算机,是为了求解线性方程系统专门制造的,不能称为通用计算机。
ENIAC(埃尼阿克)是世界上第一台全电子通用数字计算机 ,诞生于1946年2月14日的美国宾夕法尼亚大学,并于次日正式对外公布。 ENIAC用十进制表示数字,算法也用十进制完成。其存储器包含20个累加器,每个累加器可保存一个10位十进制数。手动编程:通过设置开关和插拔电缆插头实现。
2. 第二代:晶体管计算机(1958-1964年)
构成器件:晶体管、磁芯存储器等,软件上采用监控程序对计算机进行管理,开始使用高级语言。晶体管与电子管相比,晶体管体积更小,功耗更低,可靠性更高。
3. 第三代:中小规模集成电路计算机(1965-1971年)
第3代计算机由中小规模集成电路芯片、多层印刷电路板及磁芯存储器等构成,具有更高的可靠性、更小的体积及更低的成本。
在软件上,高级语言迅速发展,出现了分时操作系统,具有分时共享和多道程序处理能力。
出现系列机,软件向下兼容。
4. 第四代:大规模和超大规模集成电路计算机(1972-2010年)
第4代计算机由大规模和超大规模集成电路构成,结构发生巨大变化,芯片的集成度提高,性能有了极大的提升。
这一代计算机使用的电子元器件的特点:
(1)计算机中的存储器由半导体存储器实现;
(2)微处理器的广泛应用。
PC机出现,开始使用图形用户界面。
出现了DOS、Windows、MacOS、UNIX、Linux等著名的操作系统。
5. 第五代:巨大规模集成电路计算机(2010年至今)
这一时期,高性能智能计算机普及,第5代计算机的特点:
(1)体积小,功耗低,性能高,无处不在;
(2)通过并行技术实现高性能;
(3)人性化、智能化,能听,会看,会说,有感情;
(4)虚拟化技术广泛应用。
1.1.2 摩尔定律
摩尔定律:1、(课本说法)集成电路芯片的集成度每18个月翻一番。
2、 当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。
摩尔定律并不是一个物理定律(物理定律是放之四海而皆准的),而是一种预言,它鞭策着工业界不断的改进,并努力去实现它。
新技术、新材料的出现,使芯片的集成度进一步提高成为可能。
随着工业的不断提高,硅基芯片的制程已经达到物理瓶颈,如果替代晶体管的材料永远找不到,摩尔定律就会消失,目前碳基芯片有望成为下一代主流芯片。
1.2 计算机的基本组成
计算机由硬件和软件两大部分组成,其基本功能为控制、运算、存储和传输。
1.2.1 硬件系统
硬件系统是指计算机中那些看得见、摸得着的物理实体。
1. 硬件组成
冯.诺依曼计算机的设计思想:存储程序、程序控制。
早期的冯·诺依曼计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备五部分组成;
各部分功能:
①运算器:实现算术运算与逻辑运算;
②控制器:根据指令功能产生相应控制信号,控制其他部分的工作,以实现指令的功能;
③存储器:存储数据和程序(指令);
④输入设备:将外部的信号输入计算机中;
⑤输出设备:接收计算机处理的结果,并作出显示,存储等操作。
2. 冯•诺依曼计算机的特点
冯•诺依曼计算机工作的基本思想:将计算机要处理的问题用指令编成程序,并将程序存放在存储器中,在控制器的控制下,从存储器中逐条取出指令并执行,通过执行程序最终解决计算机所要处理的问题。尽管经历了几十年的发展,也出现了新的设计思想,但冯•诺依曼的这种存储程序控制原理直到今天仍然在广泛地应用。
冯•诺依曼计算机的特点可归纳如下:
(1)计算机由运算器(算术逻辑部件 ALU)、存储器、控制器、输人设备和输出设各五大部件组成。
(2)指令和数据以二进制形式表示,以同等地位存放在存储器中,并可按地址访问。用二进制不仅电路简单,使用方便,而且抗干扰能力强。
(3)指令由操作码和地址码组成。操作码指明指令的功能,地址码指明操作数与运算结果的存放位置(地址)。
(4)将计算机要处理的问题用指令编成程序。
(5)在控制器的控制下,指令被逐条(顺序)从存储器中取出来执行,产生控制流,在控制流的驱动下完成指令的功能。在此过程中,数据(流)则是被动地调用。
(6)在特定条件下,可由跳转类指令根据运算结果或设定的条件改变程序中指令的执行顺序。
(7)早期的冯•诺依曼计算机以运算器为中心,输人/输出设备通过运算器与存储器传送数据。
计算机的发展已走过了七八十年,尤其是最近 30年,其规模、结构更是日新月异,但存储程序控制这一基本的冯•诺依曼工作原理到目前为止还没有发生根本变化,而正在研制中的量子计算机有望开创出新的计算机工作原理。
3. 计算机硬件结构的发展
目前,在冯•诺依曼体系结构思想的基础上,计算机硬件体系结构已经得到了很大的发展,主要有以下几个方面:
(1)不断扩充硬件及功能:增加了更多通用奇存器、多种寻址方式,支持浮点数据类型、中断和异步I/O结构。
(2)存储器分层:引人高速缓存(Cache)、虚拟存储器等,在程序执行之前,将程序与数据存放在速度慢、容量大、成本低的存储介质(比如磁盘)中;在程序执行时,将即将(或正在)执行的程序和所需的数据复制到速度快、容量小、成本高的存储介质(比如主存、高速缓存)中。
(3)总线结构:通过总线连接计算机系统中的各个模块。总线信号根据传输的信息类型,分为地址线、控制线、数据线。地址线用来选择要访问的存储单元或 1/0接口,控制线传输相应的读写控制信号,数据线用来传输数据。总线大大简化了计算机系统各模块之间的连接,增强了计算机系统硬件的扩展能力。
1.2.2 软件系统
1. 系统软件
01. OS
OS是最重要的系统软件(3大作用5大功能)
3大作用:
①是用户与计算机硬件系统之间的接口;
②是计算机软、硬件资源的管理者;
③实现了对计算机资源的抽象。
5大功能:
管理功能:处理器管理、存储管理、文件管理、设备管理及作业管理。
02. 语言处理程序
每一台计算机都会配置多种语言以利于用户编程,包括高级语言和汇编语言。将用户的源程序转换为计算机可执行的目标程序。
03. 各种服务支持软件
各种服务支持软件是指一些帮助用户使用和维护计算机的软件,比如各种调试程序、诊断程序、提示警告程序等。
2. 应用软件
为解决任务而编写的程序,以用户的需求为目标。比如用于办公自动化、视频剪辑、图形图像处理、科学计算、信息管理、过程控制、武器装备等方面的软件。WPS,Office,QQ,微信等都属于应用软件。
1.2.3 指令集体系结构
1. 指令集体系结构(ISA)概述
2. 典型的ISA
1.2.4 高级语言程序的执行过程
1.3 计算机的层次概念
由前述可知,计算机是由硬件、软件系统构成的复杂电子系统,所以,不同的人从不同的角度、不同的目的,站在不同的层次去理解和描达的计算机是不一样的。
1.3.1 计算机系统的层次结构
计算机系统的层次结构如图所示。
第1级是硬件逻辑层。该层是计算机硬件设计者所要描述和设计的计算机。设计者需认真考虑计算机的指令设置和每条指令工作的细节,考虑在硬件上如何实现各种运算,需要设计控制器的实现方案,也需要考虑主存、外存、I/0接口及外设等一系列功能部件设计的细节问题,所以该层也称为微体系结构层。
由于硬件设计复杂度的提高,第 1级的硬件设计越来越依赖设计工具软件来实现。
第2级为机器语言层。该层是计算机软件设计者所要描述和设计的计算机。该层的主要设计工作是计算机体系结构设计,包括指令系统设计,所以该层也称为指令集体系结构层。指令系统中的所有指令必须采用二进制编码,这样才能被第1级中的指令译码器识别并生成相关的控制信号,控制被控部件工作来完成指令的功能。所以该层对下提供硬件设计的依据,对上提供各层软件设计的支持,是软硬件设计的分界。
无论用什么语言编写的程序,最终都必须编译或解释为机器语言程序。而机器语言是面向具体硬件物理计算机的,不同的计算机其机器语言也不相同。
第3级是操作系统层。操作系统的功能是对整个系统的硬件、软件资源进行有效管理,在设计升算机时必须考虑要尽可能多地对操作系统给予支持。例如,在设计处理器时,若设计有虚拟存储器管理功能,将会对操作系统的存储器管理提供有力的支持。
就操作系统层来说,是上层虚拟机与下层物理机联系的桥梁,所以该层设计者既要
了解物理计算机,又要了解虚拟计算机。
第4级是汇编语言层,汇编语言层涉及的指令系统是面向特定处理器的,不同处理器的指令系统是不一样的。
第5级为高级语言层。此层上的用户为高级语言程序设计者。高级语言程序由编译程序转换成计算机可执行的机器语言(二进制代码),再由计算机执行。所以此层上的程序员通常不必了解计算机的硬件细节,只在虛拟计算机上即可完成工作。
第6级为应用语言层。在此层可设计更适合于应用的、更接近自然语言的编程语言,使应用者在虚拟计算机上工作,完全不依赖计算机硬件系统。
1.3.2 计算机体系结构、组成与实现
1. 计算机体系结构
2. 计算机组成
计算机组成也被称为计算机组织,是计算机系统的逻辑实现,包括最底层内部算法、数据流、控制流的逻辑实现。利用这一概念可以对计算机进行迎辑设计。计算机组成的设计主要包括:
•数据通路的宽度;
•专用部件(如乘除法专用部件、浮点运算专用部件等)的设置;
•各功能部件的并行程度;
•各种操作的相容性与互斥性;
•控制器的组成方式;
•存储器使用的技术;
•缓冲与排队技术的应用;
•预估、预判方法;
•高可靠性技术等。
可以看到,计算机组成注重的是硬件细节,如机器内部各功能部件的设置,它们之间的相互关系及如何实施控制,逻辑上如何更合理地构成计算机,并使其性价比尽可能地提高。
3. 计算机实现
计算机实现就是指计算机组成的物理实现。
在上述计算机体系结构区计算机组成的基础上,利用具体的集成电路芯片、电子元器件、部件、插头、插座等,根据计算机组成的逻辑设计,即可实现物理计算机。
综上可以看到,计算机体系结构、计算机组成与计算机实现三者在概念上是不同层次的,但是它们的联系是士分紧密的。体系结构决定了计算机的,总体属性,组成是体现这些属性的逻辑设计,而实现则是用物理器件来实现逻辑设计。相同的体系结构可以有不同的组成,相同的组成可以有不同的实现。
1.4 计算机分类及性能描述
1.4.1 计算机分类
1. 按用途分类
1)通用计算机
1)嵌入式计算机
2. Flynn分类法
Flynn分类法是按照计算机在执行程序的过程中信息流的特征进行分类的。在程序执行中存在三种信息流:
(1)指令流(IS):
(2)数据流(DS):
(3)控制流(CS):
按照Flynn分类法,可将计算机分为四类:
(1)单指令流单数据流(Single Instruction Single Data,SISD): 传统串行计算机,一个时钟周期仅处理一条指令和一条数据,如冯诺.依曼架构,如IBM PC机,早期的巨型机和许多8位的家用机等。
(2)单指令流多数据流(Single Instruction Multiple Data,SIMD): 所有处理器单时钟一条指令处理多条数据,例如矩阵处理器 / 向量流水线。
(3)多指令流单数据流(Multiple Instruction Single Data,MISD): 多个处理单元各自独立使用指令处理一条数据,例如实时容错计算机 / 单一信号多频滤波器
(4)多指令流多数据流(MultipleInstruction Multiple Data,MIMD): 每个处理器执行各自的指令和各自的数据,例如超级计算机 / 集群服务器 /多核计算机。
1.4.2 计算机系统性能的描述
CPU性能参数:①处理器是 32 位还是 64 位;②时钟频率;③一级、二级 和三级Cache 容量;④流水线技术(超流水、超标量技术);⑤CPU核心;⑥制造工艺(以纳米级衡量)等。
计算机性能取快于该系统的硬、软件的配置。
人们所关心的计算机的性能包括速度、主存容量、外设配置、软件配置、接口配置、可靠性、可操作性、功耗、体积、重量、价格等,其中最重要的当属速度。
1. 计算机系统配置
根据计算机系统的配置,可以了解计算机系统的基本性能。下面以高性能计算机为例做简单说明。
不同时期,对高性能计算机有不同的解释。目前,高性能计算机是指能够在可接受的时间内处理一般个人计算机无法处理的大量数据,执行一般个人计算机无法完成的密集型运算的计算机,也称为超級计算机。高性能计算机的性能一般用其浮点数运算能力衡量,通常可达到或超过几百 TFlops(1TFlops 即每秒钟可进行1×10次浮点运算)。
2. 计算机系统性能计算
3. 用测试程序来测评计算机系统性能
1.4.3 Amdahl定律
Amdahl定律是20世纪60年代由IBM 360系列计算机的主要设计者Amdahl提出的,其内容为:计算机系统中某一部件采用某种更快的执行方式后,整个系统性能的提高与这种执行方式的使用频率或占总执行时间的比例有关。
加速比 = 改进后的系统性能 改进前的系统性能 = 改进前的系统总执行时间 改进后的系统总执行时间 加速比=\frac{改进后的系统性能}{改进前的系统性能}=\frac{改进前的系统总执行时间}{改进后的系统总执行时间} 加速比=改进前的系统性能改进后的系统性能=改进后的系统总执行时间改进前的系统总执行时间
加速比即性能之比。
计算机系统的加速比决定因素:
(1)可改进部分在原系统总执行时间中所占比例:称为可改进比例,用fe表示。fe总是小于或等于1的;
(2)可改进部分改进后性能提高的程度:通常用部件加速比re来表示某部件改进后性能提高的比例。re一般大于1。
加速比
S p = 1 1 − f e − f e r e S_p=\frac{1}{1-f_e-\frac{f_e}{r_e}} Sp=1−fe−refe1
习题
1.1 第一代计算机所采用的器件是();第二代计算机所采用的器件是();第三代计算机所采用的器件是();第四代计算机所采用的器件是()。
【答案】电子管;晶体管;中小规模集成电路;大规模和超大规模集成电路。
1.2 参见图1.8,在计算机中有三种信息在流动。其中,一种是(),即操作命令,它由()产生,流向各个部件;另一种是(),它在计算机中被加工处理。
【答案】控制流;控制器;数据流。
1.3 计算机的软件通常分为两大类,一类是();另一类是()。操作系统属于()。
【答案】系统软件;应用软件;系统软件。
1.4 在计算机系统的层次结构中,位于硬件之外的所有层次统称为()。
【答案】软件系统。
1.5 描述摩尔定律并说明在最近20年里摩尔定律得以延续的理由。
【答案】摩尔定律:集成电路芯片的集成度每 18 个月翻一番。
摩尔定律得以延续的理由:新技术、新材料的出现,使芯片集成度进一步提高成为可能。
1.6 早期的冯.诺依曼计算机硬件系统主要由哪几部分组成?各部分的功能是什么?
【答案】组成:早期的冯·诺依曼计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备五部分组成;
各部分功能:
①运算器:实现算术运算与逻辑运算;
②存储器:存储数据和程序(指令);
③控制器:根据指令功能产生相应控制信号,控制其他部分的工作,一边实现指令的功能;
④输入设备:将外部的信号输入计算机中;
⑤输出设备:接收计算机处理的结果,并作出显示,存储等操作。
1.7 叙述冯.诺依曼计算机的基本工作过程。
答案:采用二进制形式表示数据和指令。
将程序(数据和指令序列)预先存放在主存储器中(程序存储),使计算机在工作时能够自动高速地从存储器中取出指令,并加以执行(程序控制)。
由运算器、控制器、存储器、输入设备、输出设备五大基本部件组成计算机硬件体系结构。
结构计算机的工作原理可以概括为八个字:存储程序,程序控制
1.8 什么工具可以将高级语言源程序转换为机器语言目标代码文件?调查编程
语言的发展历史。
【答案】编译程序;编程语言的发展历史,发现一篇有趣的文章,链接如下,很形象。
【程序员上下50年】编程语言发展史。
1.9 以你的某台电子设备为例,说明其处理器属于哪种指令集体系结构(ISA),
有什么特点?
【答案】不同的处理器家族,例如Intel IA32、IBM/Freescale PowerPC和ARM,都有不同的ISA。
指令集架构(Instruction Set Architecture,ISA)也称指令集或者指令集体系,是计算机体系结构中与程序设计有关的部分,包含基本数据类型,指令集,寄存器,寻址模式,存储体系,中断,异常处理以及外部IO。
1、x86
通常来说是Intel开发的32位指令集,这种指令集兼容16位指令,一直沿用至今,属于CISC指令集。早期Intel生产的CPU与AMD生产的CPU均支持这种指令集,相应地,这些CPU被称为x86架构(The x86 architecture)Intel官方称这种指令集架构为IA-32(Intel Architecture, 32-bit)。有时候也会被称为i386。当CPU迈向64位时,对于指令集,有2种发展途径:向下兼容x86
重新设计新的指令集,不兼容x86
这分别引出了2种指令集架构:AMD64与IA-64。
2、AMD64
AMD在Intel之前,选择了前者——设计了一向下兼容x86的64位指令集,称之为AMD64,并生产了相应指令集的CPU,市场反映良好。
补充:
1、复杂指令集计算机(Complex Instruction Set Computer,CISC):每个指令可执行若干低端操作,例如存储器读取、存储、计算操作等,指令数目多且复杂,每条指令字长不相等。这些特性使得代码编写较为简单,但是复杂的指令需要若干指令周期才可以实现。
2、精简指令集计算机(Reduced Instruction Set Computer,RISC):对指令数目与寻址方式都做了精简,只保留经常使用的指令,因此实现更加容易,指令并行程度较好,编译器效率较高。但是对于一些特殊操作,需要通过处理器额外的执行时间来弥补。其特征包括统一指令编码、泛用的寄存器,单纯的寻址模式等,每条指令的执行时间较短。
1.10 说明计算机系统结构与计算机组成各自的意义。
【答案】计算机系统结构:①从外部研究计算机系统;②它是使用者(机器语
言、汇编语言、系统程序员)所看到的物理计算机的抽象;③是编写出能够在
机器上正确运行的程序所必须了解到的计算机的属性。
计算机组成:①从计算机系统的内部来研究计算机的构成;②主要内容包括:运算方法,CPU 组成、主存储器和输入输出设备、输入输出接口等。
1.11 说明采用 Flynn 法对计算机分类的依据,并描述不同类型计算机的特点。
【答案】Flynn 分类是按照计算机在执行程序过程中信息流特征进行分类:
①SISD——传统的串行计算机;
②SIMD——阵列处理机,向量处理机;
③MISD——理想化,不存在;
④MIMD——多处理机、集训系统。
1.12 为大致了解某种处理器(CPU)的性能,人们应注意哪些性能参数?
【答案】①处理器是 32 位还是 64 位;②时钟频率;③一级、二级 和三级Cache 容量;④流水线技术(超流水、超标量技术);⑤CPU核心;⑥制造工艺(以纳米级衡量)等。
1.13 要描述一台计算机的性能,主要从哪些方面来说明
【答案】①MIPS:每秒执行指令的百万条数;
②MFLOPS:每秒执行浮点数的百万次操作数量;
③吞吐量;
④响应时间(执行时间);
⑤CPU 时间;
⑥处理器数量等。
1.14 查找资料,以某计算机的配置单为依据,说明该计算机的性能如何?
【答案】设备名称 Air15
处理器 11th Gen Intel® Core™ i5-1155G7 @ 2.50GHz 2.50 GHz
机带 RAM 16.0 GB (15.8 GB 可用)
系统类型 64 位操作系统, 基于 x64 的处理器
1.15 目前常见的基准测试程序有哪些?
【答案】基准测试程序用来测量机器的硬件最高实际运行性能,以及软件优化
的性能提升效果,可分为微基准测试程序和宏基准测试程序。
补充:
微基准测试程序(Microbenchmark):用来测量一个计算机系统的某一特定方面,如CPU定点/浮点性能、存储器速度、I/O速度、网络速度或系统软件性能(如同步性能);
宏基准测试程序(Macrobenchmark):用来测量一个计算机系统的总体性能或优化方法的通用性,可选取不同应用,如Web服务程序、数据处理程序以及科学与工程计算程序。
为了达到上述目标,基准测试程序需要满足如下条件:首先。基准测试程序包含最常见的计算、通信和访存模式,能够为实际的应用程序预测不同高性能计算系统性能排名;其次,能指导高性能计算系统和应用的改进,亦即在基准测试程序上有效的优化方法能移植到实际应用中。
1.16 用于对 PC 的性能测试分为哪三个部分?
【答案】①CPU基本性能测试:利用基准测试程序对CPU、GPU和存储系统的基本性能进行测试,通过测试对CPU、GPU和存储性能作一个基本的了解;
②测试工具软件测试:用测试工具软件进行测试,使用的测试工具大多模拟了真实的软件工作环境,所以测试结果能够客观地反映CPU、GPU和存储系统在实际应用中的性能差异;
③实际应用软件测试。
1.17 希望通过改进某计算机的浮点数运算部件,使其运行某科学计算程序的性能达到原来的 2 倍。已知浮点数运算时间占该程序总运行时间的 70%,那么浮点数运算部件的速度提高到原来的多少倍才可以达到整体的目标?
【答案】3.5
【考点】Amdahl 定律
【解析】假设该部件提升 n 倍后可以满足要求
依题意,有 S p = 1 1 − 0.7 + 0.7 n = 2 S_p=\frac{1}{1-0.7+\frac{0.7}{n}}=2 Sp=1−0.7+n0.71=2解得 n=3.5
1.18 若计算机系统的三个部件 a、b、c 是可改进的,他们的部件加速比分别为30、30、20。若部件 a 和 b 在总执行时间中所占的比例分别是 30%和 30%,要使整个系统的加速比达到 10%,则部件 c 在总执行时间中所占的比例应为多少?
【答案】3.5
【考点】Amdahl 定律
【解析】假设部件 c 在总执行时间中所占比例为 x
依题意,有 S p = 1 1 − 0.3 − 0.3 − x + 0.3 30 + 0.3 30 + x 20 = 10 S_p=\frac{1}{1-0.3-0.3-x+\frac{0.3}{30}+\frac{0.3}{30}+\frac{x}{20}}=10 Sp=1−0.3−0.3−x+300.3+300.3+20x1=10
解得 x=33.7%