1.2 计算机系统层次结构
1.2.1计算机系统的组成 ⚡
硬件系统和软件系统共同构成了一个完整的计算机系统⚡
——硬件:有形的物理设备,是计算机系统中实际物理装置的总称
——软件:在硬件上运行的程序和相关的数据及文档
1.2.2计算机硬件
冯·诺依曼机基本思想⚡
⚡存储程序 的基本思想是:将事先编制好的程序和原始数据送入主存后才能执行,一旦程序被启动执行,就无须操作人员的干预,计算机会自动逐条执行指令,直至程序执行结束。
冯·诺依曼在研究EDVAC机时提出了存储程序
的概念,
存储程序
的思想 奠定了现代计算机的基本结构,- 以此概念为基础的各类计算机通称为冯·诺依曼机,
冯·诺依曼机特点如下:
- 采用“存储程序”的工作方式(或者说控制流驱动方式)。
- 计算机硬件系统由5大部件组成: 运算器、存储器、控制器、输入设备和输出设备。
- 指令和数据以同等地位存储在存储器中,形式上没有区别,但计算机应能区分它们【经典考题】
- 指令和数据均用二进制代码表示。
——指令由操作码和地址码组成,
操作码指出操作的类型,
地址码指出操作数的地址。
冯·诺依曼机工作方式基本特点:按地址访问并顺序执行指令⚡
计算机的功能部件
1 输入设备 输出设备
——输入/输出设备(I/O设备)是计算机与外界联系的桥梁,是计算机中不可缺少的重要组成部分。
2 存储器
存储器分为主存储器(内存储器)和辅助存储器(外存储器)
——主存储器
CPU能够直接访问的存储器是主存储器。
主存储器的工作方式是按存储单元的地址进行存取,这种存取方式称为按地址存取方式。
——辅助存储器
辅助存储器用于帮助主存储器记忆更多的信息,
辅助存储器中的信息必须调入主存后,才能为 CPU所访问。
主存储器的最基本组成如图所示。
- 存储体存放二进制信息,
- 地址寄存器(MAR) 存放访存地址,经过地址译码后找到所选的存储单元。
- 数据寄存器(MDR) 用于暂存要从存储器中读或写的信息,
- 时序控制逻辑用于产生存储器操作所需的各种时序信号。
存储体由许多存储单元组成,
每个存储单元包含若干存储元件,
每个存储元件存储一位二进制代码“0”或“1”。
因此存储单元可存储一串二进制代码,称这串代码为存储字,称这串代码的位数为存储字长,存储字长可以是1B(8bit)或是字节的偶数倍。
-
MAR用于寻址,其位数对应着存储单元的个数,如MAR为10位,则有2^10=1024个存储单元,记为1K。
MAR的长度与PC的长度相等( MAR位数与地址码长度相同⚡) -
MDR位数和存储字长相等⚡,一般为字节的2次幂的整数倍。
注意:MAR与MDR虽然是存储器的一部分,但在现代计算机中却是存在于CPU中的
3 运算器
——是计算机的执行部件,用于进行算术运算和逻辑运算。
——运算器的核心是算术逻辑单元(ALU)。
——运算器包含若干通用寄存器,用于暂存操作数和中间结果,
如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、 变址寄存器(IX)、基址寄存器(BR)等,其中前3个寄存器是必须具备的。
——运算器内还有程序状态寄存器(PSW),也称标志寄存器,用于存放ALU运算得到的一些标志信息或处理机的状态信息,如结果是否溢出、有无产生进位或借位、结果是否为负等。
4 控制器
- 控制器是计算机的指挥中心,由其“指挥”各部件自动协调地进行工作。
控制器由程序计数器(PC)、指令寄存器(IR)、控制单元(CU) 组成。
- PC用来存放当前欲执行指令的地址,具体自动+1的功能(这里的“1”指一条指令的长度),
即可自动形成下一条指令的地址,它与主存的MAR之间有一条直接通路。
(PC用来跟踪下一条要执行的指令在主存储器中的地址⚡) - IR用来存放当前的指令⚡,其内容来自主存的MDR指令中的操作码OP(IR)送至CU, 用以分析指令并发出各种微操作命令序列
- 而 地址码Ad(IR) 送往 MAR,用以取操作数。
一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU)
CPU和主存储器共同构成主机,而除主机外的其他硬件装置(外存、IO设备等)统称为外部设备,简称外设。
- CPU包含ALU、通用寄存器组GPRs、标志寄存器、 控制器、指令寄存器IR、程序计数器PC、存储器地址寄存器MAR\存储器数据寄存器MDR⚡
图中从控制器送出的虚线就是控制信号,可以控制如何修改PC以得到下一条指令的地址,可以控制ALU执行什么运算,可以控制主存是进行读操作还是写操作(读/写控制信号)
1.2.3计算机软件
按其功能分类,可分为系统软件和应用软件
-
⚡系统软件是一组保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户使用。
——eg:操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序等。 -
⚡应用软件是指用户为解决某个应用领域中的各类问题而编制的程序,如各种科学计算类程序、工程设计类程序、数据统计与处理程序等。
——eg:数据库系统(DBS),PHOTOSHOP
三个级别的语言
- 机器语言(二进制代码语言):
——需要编程人员记忆每条指令的二进制编码
——机器语言是计算机唯一可以直接识别和执行的语言
——计算机硬件能直接执行的只有机器语言 - 汇编语言
——汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。
——使用汇编语言编辑的程序,必须经过一个称为汇编程序的系统软件的翻译,将其转换为机器语言程序后,才能在计算机的硬件系统上执行。 - 高级语言
——高级语言(如C、C++、java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。
——通常高级语言需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,
或直接由高级语言程序翻译成机器语言程序。
由于计算机无法直接理解和执行高级语言程序,
- ⚡翻译程序有以下三类:
——汇编程序(汇编器)
将汇编语言程序翻译成机器语言程序。
——⚡编译程序(编译器)
将高级语言程序翻译成汇编语言/机器语言程序。
(一次性、编译时间长、运行快⚡)
——⚡解释程序(解释器)
将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
(非一次性、编译时间短、运行慢⚡) - 编译程序和解释程序的作用都是将高级语言程序转换成机器语言程序⚡
软件和硬件的逻辑功能等价性 ⚡
-
硬件实现的往往是最基本的算术和逻辑运算功能,而其他功能大多通过软件的扩充得以实现。
-
对某一功能来说,既可以由硬件实现,又可以由软件实现,从用户的角度来看,它们在功能上是等价的。
-
例如,浮点数运算既可以用专门的浮点运算器硬件实现,又可以通过一段子程序实现,这两种方法在功能上完全等效,不同的只是执行时间的长短而已,显然硬件实现的性能要优于软件实现的性能。
-
软件和硬件逻辑功能的等价性是计算机系统设计的重要依据,
-
软、硬件的功能分配 及 其界面的确定 是计算机系统结构研究的重要内容。
-
当研制一台计算机时,设计者必须明确分配每一级的任务,确定哪些功能使用硬件实现,哪些功能使用软件实现。
-
软件、硬件功能界面的划分是由设计目标、性能价格比、技术水平等综合因素决定的
-
一个功能若其自身使用频繁 且 用硬件实现的成本较为理想,使用硬件解决可以提高效率。
1.2.4计算机系统的层次结构
计算机是一个硬软件组成的综合体。
由于软/硬件的设计者和使用者从不同的角度、用不同的语言来对待同一个计算机系统,因此他们看到的计算机系统的属性对计算机系统提出的要求也就各不相同。
计算机系统的多级层次结构的作用,就是针对上述情况,根据从各种角度所看到的机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统。
-
关于计算机系统层次结构的分层方式,目前尚无统一的标准:
——第1级是微程序机器层,这是一个实在的硬件层, 它由机器硬件直接执行微指令。
——第2级是传统机器语言层,它也是一个实际的机器层,由微程序解释机器指令系统。
——第3级是操作系统层,它由操作系统程序实现。操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称混合层。
——第4级是汇编语言层,它为用户提供一种符号化的语言,借此可编写汇编语言源程序。这一层由汇编程序支持和执行。
——第5级是高级语言层,它是面向用户的,是为方便用户编写应用程序而设置的。该层由各种高级语言编译程序支持和执行。在高级语言层之上,还可以有应用程序层。
-
没有配备软件的纯硬件系统称为裸机
-
第3层~第5层称为虚拟机,简单来说就是软件实现的机器。
虚拟机器只对该层的观察者存在,这里的分层和计算机网络的分层类似,对于某层的观察者来说,只能通过该层的语言来了解和使用计算机,而不必关心下层是如何工作的。 -
层次之间的关系紧密,下层是(实现)上层的基础,上层是下层的(功能)扩展 ⚡
-
软件和硬件之间的界面就是指令集体系结构(ISA),ISA定义了一台计算机可以执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。
-
可以看出,ISA是指软件能感知到的部分,也称软件可见部分。
1.2.5计算机系统工作原理
1“存储程序”工作方式 ⚡
-
“存储程序”工作方式规定,程序执行前,需要将程序所含的指令和数据送入主存,一旦程序被启动执行,就无须操作人员的干预, 自动逐条完成指令的取出和执行任务。
-
一个程序的执行就是周而复始地执行一条一条指令的过程。
-
每条指令的执行过程包括:
从主存取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器。 -
程序执行前,先将程序第一条指令的地址存放到PC中,取指令时,将PC的内容作为地址访问主存。
-
在每条指令执行过程中, 都需要计算下条将执行指令的地址,并送至PC。
若当前指令为顺序型指令,则下条指令地址为PC的内容加上当前指令的长度;若当前指令为转跳型指令,则下条指令地址为指令中指定的目标地址。 -
当前指令执行完后,根据PC的值到主存中取出的是下条将要执行的指令,因而计算机能周而复始地自动取出并执行一条一条的指令。
2 从源程序到可执行文件
预处理阶段——编译阶段——汇编阶段——链接阶段
⚡- 预处理:对#include、#define等语句进行处理,预处理后仍然是高级语言。
3 程序执行过程的描述
-
程序的执行过程就是数据在CPU、主存储器和IO设备之间流动的过程,
-
所有数据的流动都是通过总线、IO接口等进行的。
-
在程序的执行过程中,必须依靠操作系统的支持。用户程序不能直接访问某些底层硬件(键盘、磁盘等),需要依靠操作系统内核来完成。(eg:用户程序需要调用内核的read系统调用来读取磁盘上的文件。)
4 指令执行过程的描述
- 可执行文件代码段是由一条一条机器指令构成的,
- 指令是用0和1表示的一串0/1序列,用来指示CPU完成一个特定的原子操作。
例如,取数指令从存储单元中取出一个数据送到CPU的寄存器中,存数指令将CPU寄存器的内容写入一个存储单元,ALU指令将两个寄存器的内容进行某种算术或逻辑运算后送到一个CPU寄存器中,等等。
下面以取数指令(送至运算器的ACC中)为例来说明,其信息流程如下:
Ⅰ取指令:PC(程序计数器)→MAR(地址寄存器)→M(主存)→MDR(数据寄存器)→IR(指令寄存器)
- 根据PC取指令到IR,将PC的内容送MAR,
- MAR中的内容直接送地址线,同时控制器将 读信号送 读/写信号线,
- 主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,
- MDR从数据线接收指令信息,并传送到IR中。
Ⅱ分析指令:OP(IR)→CU(控制单元)
- 指令译码并送出控制信号。
- 控制器根据IR中指令的操作码,生成相应的控制信号,送到不同的执行部件。
- 在本例中,IR中是取数指令,因此读控制信号被送到总线的控制线上。
Ⅲ执行指令:Ad(IR)→ MAR →M→ MDR →ACC(累加器)
- 取数操作。
- 将IR中指令的地址码送MAR,MAR中的内容送地址线,
- 同时控制器将读信号送 读/写信号线,从主存中读出操作数,
- 并通过数据线送至MDR,再传送到ACC中。
- 每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1→PC
1.3计算机的性能指标
1.3.1 计算机的主要性能指标
1.字长
- 字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,
- 通常与CPU的寄存器位数、加法器有关。字长一般等于CPU内寄存器的大小,
- 字长越长,数的表示范围越大,计算精度越高。
- 计算机字长通常选定为字节(8位)的整数倍。
字长通常指的是ALU一次操作可以处理的最大数据长度,通常这个长度也等于CPU内寄存器的大小,
我们常说的32位、64位指的就是字长。
字长决定了CPU一次操作可以处理的数据长度.
2.数据通路带宽
- 数据通路带宽是指数据总线一次所能并行传送信息的位数。
- 这里所说的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)有可能不同。
注意:各个子系统通过数据总线连接形成的数据传送路径称为数据通路
3.主存容量
- 主存容量是指主存储器所能存储信息的最大容量,
- 通常以字节来衡量,也可用字数字长(如 512K×16位)来表示存储容量。
- 其中,MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长
- 例如,MAR为16位,表示2^16=65536,即此存储体内有65536个存储单元(可称为64K内存,1K=1024),若MDR为32位,表示存储容量为64K×32位。
4.运算速度
(1)吞吐量和响应时间。
- 吞吐量
____指系统在单位时间内处理请求的数量。
____它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。
____几乎每步都关系到主存,因此系统吞吐量主要取决于主存的存取周期。 - 响应时间
____指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的 等待时间。
____通常包括 CPU时间(运行一个程序所花费的时间)与 等待时间(用于磁盘访 问、存储器访问、O操作、操作系统开销等的时间)
(2)主频和CPU时钟周期
- 主频(CPU时钟频率)。机器内部主时钟的频率,是衡量机器速度的重要参数。
- 对于同一个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快。
例如,常用CPU的主频有1.8Hz、2.4GHz、2.8gHz等
注意:CPU时钟周期=1/主频,主频通常以Hz(赫兹)为单位,1Hz表示每秒1次 - CPU时钟周期通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位, 执行指令的每个动作至少需要1个时钟周期
(3)CPI(Cycle Per Instruction))
- 即执行一条指令所需的时钟周期数
- 不同指令的时钟周期数可能不同,因此对于一个程序或一台机器来说,其CPI指该 程序或该机器指令集 中的所有指令执行所需的平均时钟周期数,此时CPI是一个平均值。
(4)CPU执行时间
-
指运行一个程序所花费的时间。
CPU执行时间=CPU时钟周期数/主频=(指令条数CPI)/主频
-
上式表明,CPU的性能(CPU执行时间)取决于三个要素:主频(时钟频率)、每条指令执行所用的时钟周期数(CPI)、指令条数
-
主频、CPI和指令条数是相互制约的。例如,更改指令集可以减少程序所含指令的条数,但同时可能引起CPU结构的调整,从而可能会增加时钟周期的宽度(降低主频)。有关主频、CPI 和指令条数的相互制约关系,相信读者在学完指令系统、数据通路设计后会有更深刻的认识。
(5)MIPS(Million Instructions Per Second)
- 即每秒执行多少百万条指令
MIPS=指令条数/(执行时间×10 ^ 6)=主频/(CPI×10 ^ 6)
- MIPS对 不同机器进行性能比较 是有缺陷的,因为不同机器的指令集不同,指令的功能也就不同,比如在机器M1上某条指令的功能也许在机器M2上要用多条指令来完成;
- 不同机器的CPI 和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。
(6)MFLOPS 、GFLOPS 、TFLOPS 、PFLOPS 、EFLOPS 和ZFLOPS
-
MFLOPS (Million Floating -point Operations Per Second),即每秒执行多少百万次浮点运算
MFLOPS =浮点操作次数/(执行时间×10 ^ 6)
-
GFLOPS (Giga Floating -point Operations Per Second ),即每秒执行多少十亿次浮点运算
GFLOPS = 浮点操作次数(执行时间×10 ^ 6)
-
TFLOPS (Tera Floating -point Operations Per Second ),即每秒执行多少万亿次浮点运算。
TFLOPS = 浮点操作次数/(执行时间×10^12)
-
PFLOPS = 浮点操作次数/(执行时间×10^15)
-
ZFLOPS = 浮点操作次数/(执行时间×10^21)
注意:
在描述存储容量、文件大小等时,K、M、G、T通常用2的幂次表示
在描述速率、频率等时,k、M、G、T通常用10的幂次表示,
通常前者用大写的 K,后者用小写的k,但其他前缀均为大写,表示的含义取决于所用的场景
5.基准程序 (Benchmarks)
- 基准程序是专门用来进行性能评价的一组程序,能够很好地反映机器在运行实际负载时的性能,可以通过在不同机器上运行相同的基准程序来比较在不同机器上的运行时间,从而评测其性能。
- 对于不同的应用场合,应该选择不同的基准程序。
- 使用基准程序进行计算机性能评测也存在一些缺陷,因为基准程序的性能可能与某一小段的短代码密切相关,而硬件系统设计人员或编译器开发者可能会针对这些代码片段进行特殊的优化,使得执行这段代码的速度非常快,以至于得不到准确的性能评测结果。
1.3.2 专业术语
系列机
——具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列。
——系列机的基本特性是指令系统向后兼容(下几代/版本CPU都可以使用当前的指令系统)⚡
兼容
——指软件或硬件的通用性,即运行在某个型号的计算机系统中的硬件/软件也能应用于另一个型号的计算机系统时,称这两台计算机在硬件或软件上存在兼容性。
系列机的基本特性是指令系统向后兼容
软件可移植性
指把使用在某个系列计算机中的软件直接或进行很少的修改就能运行在另一个系列计算机中的可能性。
固件
——将程序固化在 ROM(只读存储器) 中组成的部件称为固件。
——固件是一种具有软件特性的硬件,吸收了软硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软硬件结合的产物。
——例如,目前操作系统已实现了部分固化(把软件永恒地存储于ROM中)
补充
- 机器字长:能够直接处理的二进制数据的位数。
指令字长:一个指令中包含的二进制代码的位数
存储字长:一个存储单元存储二进制数据的位数。 - 数据通路:数据在功能部件之间传送的路径
- 操作系统:特殊的软件,管理硬件资源
- 编译程序:是一次性将任务书翻译成机器可以理解语言⚡
解释程序:翻译一句,执行一句⚡ - 计算机(硬件)可执行的语言有且只有——机器语言⚡
可用助记符/码编写的语言——汇编语言⚡ - 相联存储器:⚡
既可以按地址寻址,也可按内容寻址
主要用于虚拟存储器中 - 立即数:数据存放在指令中
寄存器寻址:数据存放在寄存器中