计算机系统概述
考纲内容
- 计算机系统层次结构
计算机系统的基本组成
计算机硬件的基本组成
计算机软件和硬件的关系
计算机系统的工作原理:“存储程序”方式;高级语言程序与机器语言程序的转换;程序和指令的执行过程 - 计算机性能指标
吞吐量;响应时间;CPU时钟周期;主频;CPI;CPU执行时间;MIPS;MFLOPS;GFLOPS;TFLOPS;PFLOPS;EFLOPS;ZFLOPS
思考以下问题:
1、计算机由哪几部分组成?以哪部分为中心
2、翻译程序、汇编程序、编译程序、解释程序有什么区别?各自的特性是什么?
3、不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?
计算机的发展历程
不再考纲内容中,都是死记内容,感兴趣自行搜索了解
计算机系统层次结构
计算机系统的组成
**硬件系统
和软件系统
**共同构成了一个完成的计算机系统
硬件是指有形的物理设备,是计算机系统中实际物理装置的总称
软件是指在硬件上运行的程序和相关的数据及文档
某一功能,若其既可以用软件实现又可以用硬件实现,则称为**软/硬件在逻辑功能上是等价的
**
计算机硬件
冯 · 诺依曼机基本思想
冯 · 诺依曼计算机的特点:
- 采用**
存储程序
**的工作方式 - 计算机硬件系统由**
运算器
、存储器
、控制器
、输入设备
、输出设备
**5大部件组成 指令和数据
以同等地位存储在存储器中,形式上没有区别
,但计算机应能区分它们指令和数据
均用二进制代码表示
指令由操作码和地址码组成
,操作码指出操作的类型
,地址码指出操作数的地址
存储程序的基本思想:将事先编制好的程序和原始数据送入主存储器后才能执行,一旦程序被启动执行,就无需操作人员的干预,计算机会自动逐条执行指令,直至程序执行结束
计算机的功能部件
1、输入设备
主要功能:将程序和数据以及其所能识别和接受的信息形式输入计算机
2、输出设备
主要功能:将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形式输出
3、存储器
分为**主存储器
(内存储器或主存)和辅助存储器
**(外存储器或外存)
CPU能直接访问
的存储器是主存储器
辅助存储器
用于帮助主存储器记忆更多的信息
,辅助存储器中的信息**必须调入主存储器后才能为CPU所访问
**
主存储器的工作方式是**按存储单元的地址进行存取
,这种存取方式称为按地址存取方式
**
存储体存放二进制信息
**存储器地址寄存器(MAR)**存放访存地址,经过地址译码后找到所选的存储单元
**存储器数据寄存器(MDR)**用于暂存要从存储器中读或写的信息
时序控制逻辑用于产生存储器操作所需的各种时序信号
存储体
由许多存储单元
组成,每个存储单元包含若干存储元件
,每个存储元件存储一位二进制代码0或1
存储单元可存储一串二进制代码,称这串代码为存储字
,称这串代码的位数为存储字长
存储字长可以是1B(8bit)或是字节的偶数倍
MAR用于寻址
,其**位数反映最多可寻址的存储单元的个数
,如MAR为10位,则最多有210 = 1024**,记为1K。MAR的长度与PC(程序计数器)的长度相等
MDR的位数通常等于存储字长
,一般为2次幂的整数倍
注:MAR与MDR虽然是存储器的一部分,但在现代计算机中是存在于CPU中的;另外,高速缓存(Cache)同样存在于CPU
4、运算器
运算器是计算机的执行部件
,用于**进行算术运算和逻辑运算
**
算术运算是按算术运算规则进行的运算,如加、减、乘、除
逻辑运算包括与、或、非、异或、比较、移位等运算
运算器的核心是**算术逻辑单元(ALU)
**
运算器包含若干通用寄存器
,用于**暂存操作数和中间结果
,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等,其中前三个寄存器是必须具备的
运算器内还有程序状态寄存器(PSW)
,也称标志寄存器
,用于存放ALU运算得到的一些标志信息或处理机的状态信息
**,如结果是否溢出、有无产生进位或借位、结果是否为负等
5、控制器
控制器是计算机的指挥中心,由其“指挥”各部件自动协调地进行工作
控制器由**程序计数器(PC)
、指令寄存器(IR)
和控制单元(CU)
**组成
PC用来**存放当前欲执行指令的地址
,具有自动加1的功能(这里的1
指一条指令的⻓度),即可自动形成下一条指令的地址
,它与主存储器的MAR之间有一条直接通路
**
IR用来**存放当前的指令
,其内容来自主存储器的MDR
**
指令中的**操作码OP(IR)送至CU
,用以分析指令并发出各种微操作命令序
;地址码Ad(IR)送往MAR
,用以取操作数
**
一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU)
CPU和主存储器共同构成主机
,而除主机外的其他硬件装置(外存、I/O设备等)统称外部设备,简称外设
冯 · 诺依曼结构的模型机
CPU包含ALU、通用寄存器组GPRs、标志寄存器、控制器、指令寄存器IR、程序计数器PC、存储器地址寄存器MAR和存储器数据寄存器MDR
图中从控制器送出的虚线就是控制信号,可以控制如何修改PC以得到下一条指令的地址,可以控制ALU执行什么运算,可以控制主存储器是进行读操作还是写操作(读/写控制信号)
CPU和主存储器之间通过一组总线相连
,总线中有**地址、控制和数据
3组信号线
MAR中的地址信息会直接送到地址线上
,用于指向读/写操作的主存储器存储单元
**
控制线中有读/写信号线
,指出数据是从CPU写入主存储器还是从主存储器读出到CPU
,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中
计算机软件
系统软件和应用软件
软件按其功能分类,可分为**系统软件
和应用软件
**
系统软件是一组保证计算机系统高效、正确运行的基础软件,通常作系统资源提供给用户使用
主要有操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序等
应用软件是指用户为解决某个应用领域中的各类问题而编制的程序
如各种科学计算类程序、工程设计类程序、数据统计与处理程序等
三个级别的语言
- 机器语言。也称二进制代码语言,需要编程人员记忆每条指令的二进制编码。
机器语言是计算机唯二可以直接识别和执行的语言
- 汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更容易为人们记忆和理解。使用汇编语言编辑的程序,
必须经过一个称为汇编程序的系统软件的翻译,将其转换机器语言程序后,才能在计算机的硬件系统上执行
- 高级语言。高级语言(如C、C++、Java等)是为方便程序设计人员写出解决问题的处理方案和解题过程的程序。通常高级语言**
需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序
,或直接由高级语言程序翻译成机器语言程序
**
计算机**无法直接理解和执行高级语言程序
,所以需要将高级语言程序转换为机器语言程序
,通常把进行这种转换的软件系统称翻译程序**
翻译程序有以下三类:
- 汇编程序(汇编器)。将**
汇编语言程序翻译成机器语言程序
** - 解释程序(解释器)。将**
源程序中的语句按执行顺序逐条翻译成机器指令
并立即执行
** - 编译程序(编译器)。将**
高级语言程序翻译成汇编语言或机器语言程序
**
软件和硬件的逻辑功能等价性
硬件实现的往往是最基本的算术和逻辑运算功能,而其他功能大多通过软件的扩充得以实现
硬件实现的性能要优于软件实现的性能
计算机系统的层次结构
计算机系统的多级层次结构的作用,就是针对上述情况,根据从各种⻆度所看到的机器之间的有机联系,来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统
- 微程序机器层,这是一个实在的硬件层,
由机器硬件直接执行微指令
- 传统机器语言层,它也是一个实际的机器层,
由微程序解释机器指令系统
- 操作系统层,它由操作系统程序实现。
操作系统程序是由机器指令和广义指令组成的
,这些广义指令是为了扩展机器功能而设置的,是**由操作系统定义和解释的软件指令
**,所以这一层也称混合层 - 汇编语言层,这一层**
由汇编程序支持和执行
**,借此可编写汇编语言源程序 - 高级语言层,它是面向用户的,是为方便用户编写应用程序而设置的。该层**
由各种高级语言编译程序支持和执行
**
在高级语言层之上,还可以有应用程序层,它由解决实际问题的处理程序组成,如文字处理软件、多媒体处理软件和办公自动化软件等
没有配备软件的纯硬件系统称裸机
第3层~第5层称为虚拟机,简单来说就是软件实现的机器,虚拟机器只对该层的观察者存在
层次之间的关系紧密,下层是上层的基础,上层是下层的扩展
软件和硬件之间的界面就是指令集体系结构(ISA)
ISA定义了**一台计算机可以执行的所有指令的集合
**,每条指令规定了计算机执行什么操作,以及所处理的操作数存放的地址空间和操作数类型。ISA是指软件能感知到的部分,也称软件可⻅部分
计算机系统的工作原理
“存储程序”工作方式
程序执行前,需要**将程序所含的指令和数据送入主存储器
**
一旦程序被启动执行,就无须操作人员的干预,自动逐条完成指令的取出和执行任务
一个程序的执行就是周而复始地执行一条一条指令的过程
每条指令的执行过程包括:从主存储器中取指令、对指令进行译码、计算下条指令地址、取操作数并执行、将结果送回存储器
- 程序执行前,先将程序第一条指令的地址存放到PC中
取指令时,将PC的内容作为地址访问主存储器 - 在每条指令执行过程中,都需要计算下条将执行指令的地址,并送至PC
若当前指令为顺序型指令,则下条指令地址为PC的内容加上当前指令的⻓度
若当前指令为转跳型指令,则下条指令地址为指令中指定的目标地址 - 当前指令执行完后,根据PC的内容到主存储器中取出的是下一条将要执行的指令
因而计算机能周而复始地自动取出并执行一条一条的指令
从源程序到可执行文件
翻译过程的四个阶段:
- 预处理阶段:在C语言中,**
预处理器
**对源程序中以字符#开头的命令进行处理 - 编译阶段:
编译器
对预处理后的源程序进行编译
,生成一个汇编语言源程序
。汇编语言源程序中的每条语句都以一种文本格式描述了一条低级机器语言指令 - 汇编阶段:
汇编器
将汇编语言源程序翻译成机器语言指令
,把这些**指令打包成
一个称为可重定位目标文件
** - 链接阶段:
链接器
将多个可重定位目标文件和标准库函数合并为一个可执行目标文件
,简称可执行文件。最终生成的可执行文件被保存在磁盘上
指令执行过程的描述
可执行文件代码段是由一条一条机器指令构成的,指令是用0和1表示的一串0/1序列,用来**指示CPU完成一个特定的原子操作
**
以取数指令(送至运算器的ACC中)为例来说明,其信息流程如下:(看看了解流程,第5章会具体说明)
- 取指令: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
注:
(PC)指程序计数器PC中存放的内容
PC -> MAR应理解为(PC) -> MAR,即程序计数器中的值经过数据通路送到MAR,也即表示数据通路时括号可省略(因力只是表示数据流经的途径,而不强调数据本身的流动)
但运算时括号不能省略,即(PC)+1 -> PC不能写为PC+1 -> PC
括号最好不要随便省略
提醒:
1、冯 · 诺依曼机的基本工作方式是控制流驱动方式,即按照指令的执行序列,一次读取指令,然后根据指令所含的控制信息调用数据信息进行处理
2、运算器内不包含地址寄存器,地址寄存器虽然在CPU内,但并未集成到运算器与控制器中
3、关于CPU存取速度:寄存器在CPU内,速度最快,其次为Cache高速缓存,最后为内存
4、汇编语言与机器结构有关,不同设备中,汇编语言对应着不同的机器指令集,通过汇编程序转换成机器指令
5、相联存储器既可以按地址寻址又可以按内容寻址
6、高级语言源程序转换为可执行目标文件的主要过程:预处理 -> 编译 -> 汇编 -> 链接
计算机的性能指标
计算机的主要性能指标
机器字长
通常所说的某16位或32位机器
,其中的16、32指的是机器字⻓,简称字⻓
字⻓是指**计算机进行一次整数运算
(即定点整数运算)所能处理的二进制数据的位数
,通常与CPU的寄存器位数、ALU有关
字⻓一般等于通用寄存器的位数或ALU的宽度
,字⻓越⻓,数的表示范围越大,计算精度越高
计算机字⻓通常选定为字节(8位)的整数倍
**
数据通路带宽
数据通路带宽是指**数据总线一次所能并行传送信息的位数
**
这里所说的数据通路宽度是指**外部数据总线的宽度
**,它与CPU内部的数据总线宽度(内部寄存器的大小)有可能不同
各个子系统**通过数据总线连接形成的数据传送路径称为数据通路
**
主存容量
主存容量是指**主存储器所能存储信息的最大容量
**,通常以字节
来衡量,也可用字数x字⻓
来表示存储容量
MAR的位数反映了存储单元的个数
;MDR的位数反映了存储单元的字⻓
例:MAR为16位,表示216 = 65536,即此存储体内有65536个存储单元(可称为64K内存,1K = 1024),若MDR为32位,则表示存储容量为64K x 32位
运算速度
1、吞吐量和响应时间。
- 吞吐量。指系统**
在单位时间内处理请求的数量
。它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备
几乎每步都关系到主存储器,因此系统吞吐量主要取决于主存储器的存取周期
** - 响应时间。指从**
用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间
。通常包括CPU时间
(运行一个程序所花费的时间)与等待时间
**(用于磁盘访问、存储器访问、1/O操作、操作系统开销等的时间)
2、主频和CPU时钟周期
- CPU时钟周期。
机器内部主时钟脉冲信号的宽度
,它是**CPU工作的最小时间单位
**
时钟脉冲信号由机器脉冲源发出的脉冲信号经整形和分频后形成
时钟周期以相邻状态单元间组合逻辑电路的最大延迟为基准确定
时钟周期也以指令流水线的每个流水段的最大延迟时间确定 - 主频(CPU时钟频率)。
机器内部主时钟的频率
,即时钟周期的倒数
,它是衡量机器速度的重要参数
对于同一个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快
主频最直观的理解就是每秒有多少个时钟周期
注:CPU时钟周期 = 1 / 主频,主频通常以Hz(赫兹)为单位,10Hz表示每秒10次
3、CPI
执行一条指令所需的时钟周期数
不同指令的时钟周期数可能不同,因此对于一个程序或一台机器来说,其**CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数
,此时CPI是一个平均值
**。
4、IPS
每秒执行多少条指令
I
P
S
=
主频
/
平均
C
P
I
IPS = 主频 / 平均CPI
IPS=主频/平均CPI
因为计算机内部有庞大的指令数量,因此有不同数量级的IPS表达方式:
MIPS:每秒执行多少百万条指令
MIPS = 指令条数/(执行时间 × 10^6) = 主频/(CPI × 10^6)
注:不同机器的CPI和时钟周期不同,因而同一条指令在不同机器上所用的时间也不同
5、CPU执行时间
运行一个程序所花费的时间
C
P
U
执行时间
=
C
P
U
时钟周期数
/
主频
=
(
指令条数
×
C
P
I
)
/
主频
CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频
CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频
上式表明,CPU的性能(CPU执行时间)取决于三个要素:主频、CPI和指令条数
主频、CPI和指令条数是相互制约的
更改指令集可以减少程序所含的指令条数,但同时可能引起CPU结构的调整,从而可能会增加时钟周期的宽度(降低主频)
6、FLOPS
每秒执行多少次浮点运算
与IPS类似,同样也有不同数量级的FLOPS表达方式:
MFLOPS,即每秒执行多少百万(10^6)次浮点运算
GFLOPS,即每秒执行多少十亿(10^9)次浮点运算
TFLOPS,即每秒执行多少万亿(10^12)次浮点运算
PFLOPS,即每秒执行多少千万亿(10^15)次浮点运算
EFLOPS,即每秒执行多少百京(10^18)次浮点运算(1京=1亿亿=1016)
ZFLOPS,即每秒执行多少十万京(10^21)次浮点运算
注:
在描述存储容量、文件大小等时,K、M、G.T通常用2的幂次表示,如1Kb = 2^10b
在描述速率、频率等时,k、M、G、T通常用10的幂次表示,如1kb/s = 10^3b/S
通常前者用大写的K,后者用小写的k,但其他前缀均为大写,表示的含义取决于所用的场景
几个专业术语
-
系列机。具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列
-
兼容。指软件或硬件的通用性,即运行在某个型号的计算机系统中的硬/软件也能应用于另一个型号的计算机系统时,称这两台计算机在硬件或软件上存在兼容性
-
固件。将程序固化在ROM中组成的部件称为固件。固件是一种具有软件特性的硬件,吸收了软件/硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软/硬件结合的产物
提醒:
1、MAR的位数反映了存储单元的个数;MDR的位数反映了存储单元的字⻓
2、在用于科学计算的计算机中,标志系统性能的最有用的参数是MFLOPS
3、CPI是执行一条指令所需的时钟周期数,系统结构、指令集、计算机组织都会影响CPI,而时钟频率并不会影响CPI,但可加快指令的执行速度
4、CPU主频越高,完成指令的一个执行步骤所用的时间就越短,执行指令的速度就越快
5、数据通路的功能是实现CPU内部的运算器和寄存器及寄存器之间的数据交换,优化数据通路结构,可以有效提高计算机系统的吞吐量,从而加快程序的执行
6、计算机程序需要先转化成机器指令序列才能最终得到执行,通过对程序进行编译优化可以得到更优的指令序列,从而使得程序的执行时间也越短
7、机器字长指CPU内部用于整数运算的数据通路的宽度
8、数据通路是指数在指令执行过程中所经过的路径及路径上的部件,主要是CPU内部进行数据运算、存储和传送的部件,这些部件的宽度基本上要一致才能相互匹配
9、机器字长 = ALU位数 = 通用寄存器宽度
小结
计算机由哪几部分组成?以哪部分为中心?
计算机由运算器、控制器、存储器、输入设备及输出设备五大部分构成
现代计算机通常把运算器和控制器集成在一个芯片上,合称中央处理器
在微处理器之前,运算器和控制器分离,存储器的容量很小,因此以运算器为中心,其他部件都通过运算器完成信息的传递
现代计算机以存储器为中心,使I/O操作尽可能地绕过CPU,直接在I/O设备和存储器之间完成,以提高系统的整体运行效率
主频高的CPU一定比主频低的CPU快吗?为什么?
衡量CPU运算速度的指标有很多,不能以单独的某个指标来判断CPU的好坏。
CPU的主频表示CPU内数字脉冲信号振荡的速度,主频和实际的运算速度存在一定的关系,但目前还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(架构、缓存、指令集、CPU的位数、Cache大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的CPU实际运算速度较低的现象
翻译程序、汇编程序、编译程序、解释程序有什么差别?各自的特性是什么?
翻译程序有两种:
编译程序,它将高级语言源程序一次全部翻译成目标程序,只要源程序不变,就无须重新翻译
解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序
编译程序与汇编程序的区别:
若源语言是高级语言,而目标语言是诸如汇编语言或机器语言之类的低级语言,则这样的一个翻译程序称为编译程序
若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序
不同级别的语言编写的程序有什么区别?哪种语言编写的程序能被硬件直接执行?
机器语言和汇编语言与机器指令对应,而高级语言不与指令直接对应,具有较好的可移植性
其中机器语言编写的程序可以被硬件直接执行
字、字⻓、机器字⻓、指令字⻓、存储字⻓的区别和联系是什么
字⻓是指CPU内部用于整数运算的数据通路的宽度,因此字⻓等于CPU内部用于整数运算的运算器位数和通用寄存器宽度,它反映了计算机处理信息的能力
字用来表示被处理信息的单位,用来度量数据类型的宽度,如x86机器中将一个字定义为16位
指令字⻓:一个指令字中包含的二进制代码的位数
存储字⻓:一个存储单元存储的二进制代码的位数
指令字⻓一般取存储字⻓的整数倍
若指令字⻓等于存储字⻓的2倍,则需要2个访存周期来取出一条指令
若指令字⻓等于存储字⻓,则取指令周期等于机器周期
字、字长、指令字长、存储字长都必须是字节的整数倍