文章目录
一、计算机系统概述
1. 计算机发展简史
-
技术发展:
-
第一代(1946~1957)
- 真空管
- 冯·诺依曼提出 “程序存储计算机”;
- 代表机种:第一台电子计算机ENIAC;IAS通用计算机模型机:冯.诺依曼结构
-
第二代(1958~1964)
- 晶体管
- 元器件:逻辑元件采用晶体管,内存由磁芯构成,外存为磁鼓与磁带。
- 特点:变址,浮点运算,多路存储器,I/O处理机,中央交换结构(非总线结构)
- 软件:使用高级语言,提供了系统软件。
- 代表机种:IBM 7094 (scientific)、1401 (business)和 DEC公司的 PDP-1
-
第三代(1965~1971)
- 中小集成电路SSI/MSI
- 元器件:逻辑元件与主存储器均由集成电路(IC)实现
- 特点:微程序控制,Cache,虚拟存储器,流水线等。
- 代表机种:IBM 360和DEC PDP-8(大/巨型机与小型机同时发展 )
- 巨型机(Supercomputer):Cray-1
- 大型机(Mainframe):IBM360系列(引入兼容性(系列机)概念)
- 小型机(Minicomputer):DEC PDP-8(引入总线结构)
-
第四代(标准不一,1972 ~ 今)
- 大规模/超大规模集成电路
- 元器件:半导体存储器、微处理器(CPU中所有元件放在一块芯片)
- 特点:共享存储器,分布式存储器及大规模并行处理系统,计算机网络发展与广泛应用
-
-
关键机器
- IAS通用计算机模型机:首次使用冯.诺依曼结构
- IBM360系列:引入兼容性(系列机)概念
- DEC PDP-8:引入总线结构
2. 计算机系统的组成
- 计算机系统由软件和硬件两大部分组成
(1)计算机硬件的基本组成
-
计算机的五个基本部件:
-
运算器:进行加/减/乘/除四种基本算术运算,并且也能进行一些逻辑运算和附加运算。由算数逻辑单元ALU、通用寄存器(保存计算中间结果)和标志寄存器组成
-
控制器:自动执行指令,控制各个部件协调地进行工作
-
存储器:既能存放数据,也能存放指令,形式上两者没有区别,但计算机应能区分数据还是指令(“存储程序”思想)
-
输入设备:操作人员交互
-
输出设备:操作人员交互
-
-
典型的冯诺依曼机以运算器为中心;现代计算机已经转化为以存储器为中心
- 微处理器面世之前,运算器和控制器分离,且存储器容量小,设计成运算器为中心,各部件通过运算器传递数据
- 随着微电子技术进步,大量I/O设备速度和CPU速度差距悬殊,设计成存储器为核心,使I/O操作尽量绕过CPU,直接在I/O设备和存储器间进行。
-
指令和数据以同等地位存储在存储器中,都用二进制表示
-
每条指令由操作码和地址码两部分组成。操作码指出操作类型,地址码指出操作数的地址, 由一串指令组成程序
-
指令在存储器内按顺序存放,通常是顺序执行,特定条件下根据运算结果改变执行顺序
-
核心思想是 “存储程序” 工作方式:任何要计算机完成的工作都要先被编写成程序,然后将程序和原始数据送入主存并启动执行。一旦程序被启动,计算机应能在不需操作人员干预下,自动完成逐条取出指令和执行指令的任务。
-
结构示意图
- 这是一个以存储器为中心的现代计算机结构示意图
- 早期,部件之间用分散方式相连
- 现在,部件之间大多用总线方式相连
- 趋势,点对点(分散方式)高速连接
- 冯诺依曼结构模型机示意图如下:可见存储器中的
MAR
和MDR
都在CPU
内部;CPU和主存之间靠总线连接(地址/控制/数据)
- 这是一个以存储器为中心的现代计算机结构示意图
-
冯诺依曼机的
基本工作方式
是控制流驱动方式 ,基本特点
是程序存储原理
多处理机的基本工作方式
是多指令多数据流方式;
(2)计算机软件分类
- 计算机软件分为系统软件和应用软件
- 数据库管理系(DBMS)和数据库系统(DBS)是有区别的
- DBMS是位于用户和操作系统之间的一层数据管理软件,是系统软件
- DBS是计算机系统引入数据库之后的系统。一般由数据库、数据库管理系统、数据库管理员和系统应用构成
(3)三个级别的语言
- 机器语言:又称二进制语言,需要编程人员记忆每一条二进制编码。是计算机唯一可以直接识别和执行的语言
- 汇编语言:使用英文单词和缩写代替二进制编码,相当于机器语言的助记符。使用汇编语言编写的程序,必须经过汇编程序翻译为机器语言后才能在计算机硬件上运行
- 高级语言:为方便程序设计人员写出解决问题的处理方案和解题过程的程序,通常需要经过编译程序翻译为汇编语言,再经过汇编程序翻译为机器语言后才能在计算机硬件上运行
(4)计算机的工作过程
-
计算机的工作过程分为以下三个步骤
- 把程序和数据装入主存
- 将源程序转换为可执行文件
- 从可执行文件的首地址开始逐条执行指令
-
从源文件到可执行文件的过程
- 预处理阶段:预处理器(cpp)对程序中
#
开头的命令进行处理(例如将#include
的头文件内容插入程序),输出一个.i
文件 - 编译阶段:编译器(ccl)对预处理后的源程序进行编译,生成一个
.s
汇编语言源程序 - 汇编阶段:汇编器(as)将
.s
文件翻译成机器指令,把它们打包成一个.o
可重定位目标文件,这是一种二进制文件 - 链接阶段:链接器(ld)将多个
.o
文件和标准库函数合并为一个可执行目标文件(可执行文件),本例中为hello
文件。最终生成的文件存在磁盘上
- 预处理阶段:预处理器(cpp)对程序中
3. 计算机层次结构
-
计算机的多级层次结构
- 每一层完成自己的任务并对上层透明(类似网络中的分层思想)
- 对使用某一级语言编程的程序员来讲,只要熟悉和遵守该级语言的使用规定,所编程序总是能在此机器上运行并得到结果,而不用考虑这个机器级是如何实现的。就好像该程序员有了一台可以直接使用这种语言作为机器语言的机器一样。这里,“机器”被定义为能存储和执行相应语言程序的算法和数据结构的集合体。
- 就目前的状况来看,M0用硬件实现,M1用微程序(固件)实现,M2到M5大多用软件实现。所谓固件(Firmware),是一种具有软件功能的硬件,例如将软件固化在ROM这种大规模集成电路的硬器件上就是一种固件。以软件为主实现的机器称为虚拟机器,以区别于由硬件或固件实现的实际机器。虚拟机器不一定全由软件实现,有些操作也可用固件或硬件实现。例如,操作系统的某些命令可用微程序或硬件实现。
-
计算机系统抽象层的转换
-
计算机系统的不同用户
4. 练习题
- 将软件固定在ROM中来实现某种功能,这样的硬件称为:
固件
- 冯诺依曼机中,指令和数据均以二进制形式存储,能区分它们的是:
控制器
- 算数逻辑单元、主存和控制单元合称:
主机
- 计算机中所有信息采用二进制存储的理由:
由物理器件性能决定
- 冯诺依曼机器中,所有数据和指令都是二进制形式存储的,CPU区分它们的依据是:
指令周期的不同阶段
- 完整的计算机系统应该包括:外部设备和主机(错,这只是硬件部分)
完整的计算机系统应该包括:配套的硬件设备和软件系统(对) - 冯诺依曼机的基本工作方式是:
控制流驱动方式
(运算器为中心)
多处理机的基本工作方式是:多指令多数据流方式
二、计算机性能评价
1. 基本概念
-
字长
- 机器字长:CPU一次处理数据的二进制位数,通常与CPU寄存器位数有关
- 存储字长:存储器中一个单元存储的二进制位数,=
MDR
的位数 - 指令字长:计算机指令字的二进制位数
- 数据字长:计算机数据总线一次能并行传输的h二进制位数,可以 ≠
MDR
的位数
注:早期存储字长、指令字长、数据字长是相同的,现在这三个可以不同,但必须都是字节整数倍
-
存储器
存储体
由存储单元构成,存储单元包含若干存储元件,每个元件存放0或1,一个存储单元存储一串二进制码(一个存储字),这串码的位数即存储字长地址寄存器MAR
:主存地址寄存器,用来存欲访问存储单元的地址,其位数对应存储单元的个数(MAR有10位,则有2^10=1024个存储单元)。MAR的位数反映了可寻址范围的最大值(不一定是实际存储器容量),MAR一般在CPU内部数据寄存器MDR
:存储数据寄存器,用来存放存储体某单元取出的二进制码或准备向存储器存入的二进制码,位数与存储字长相同,MDR一般在CPU内部
-
存储容量
- 存储容量包括主存容量和辅存容量
- 主存容量:主存中存储的二进制码的总位数
存储容量 = 存储单元个数*存储字长
2. 计算机性能的衡量标准
- 主要是吞吐率和响应时间两大基本指标
3. 计算机性能测试
- 如果不考虑完成同样的应用背景而直接比较计算机性能,多用执行时间来衡量。完成同样的工作量所需时间最短的机器性能最好
- 操作系统进行处理器调度时,往往有多个程序(进程)轮流使用处理器,所以用户感受到的某个程序的运行时间不是真正的运行时间
- 讨论CPU性能时,我们只关心用户CPU时间
4. 性能相关概念和评价指标
(1)概念
- 响应时间:从提交作业到完成作业所花费的时间
- 吞吐量:一定时间内完成的作业数
- (用户)CPU时间:CPU真正花在运行用户代码上的时间
- 时钟周期:计算机一个时钟周期的时间,通常是处理器时钟,一般是常数。单位
ps/us/ns/ms/s
等。计算机利用时钟信号进行同步 - 时钟频率/主频:时钟周期的倒数。单位
Hz/GHz/MHz
等 CPI
:执行一条指令所需要的时钟周期数- 对于一条特定的指令,CPI指运行此指令所需的时钟周期数
- 对于一个程序/一台机器,CPI指此程序或机器指令集中所有指令执行所需的平均时钟周期数。
如果两台机器CPU内部逻辑电路完全一致,看作二者综合CPI相等
MIPS
:百万指令/秒,这是一个单位,用于衡量机器执行定点指令的速度MFLOPS
:百万浮点数操作/秒,是一个单位- 机器周期/CPU周期:指完成一个基本操作所需的时间,通常由多个时钟周期组成
- 指令周期:CPU从主存取出一条指令所需的全部时间
- 中断周期:当CPU使用中断方式实现主机和I/O设备交换信息时,CPU在每条指令执行阶段结束前,都要发出中断查询信号,以检测是否有I/O提出中断请求,若有则进入中断响应。中断响应阶段即为中断周期
(2)计算公式
- (一段程序的)综合CPI ( C P I i CPI_i CPIi表示第i条指令的CPI; F i F_i Fi表示第i条指令的占比)
- 总时钟周期数
- CPU执行时间
- 计算MIPS(注意单位是
百万/秒
,要乘 1 0 − 6 10^{-6} 10−6)
- 峰值MIPS
- 选取一组指令,使其平均CPI最小(比如有指令a/b/c,其中a指令的CPI最小,选一组全是a指令的程序 ),由此计算得到的MIPS即为峰值MIPS
5. 性能评估
-
性能评估时,要综合考虑指令条数、时钟周期和CPI
-
提高时钟频率,往往对CPU结构造成改变,导致其他性能降低。故提升频率虽然可以提升CPU执行程序的速度,但往往不能相同倍数地提升执行速度
-
两段程序,指令条数少不代表执行时间短;时钟频率高不代表执行速度快
-
早期常用MIPS来衡量计算机性能,它反映了计算机执行定点运算的速度。但由于不同机器指令集不同、指令功能不同、CPI和时钟周期不同,所以一条相同的指令在不同机器上执行所用的时间也不同。用MIPS对不同机器的性能进行比较往往是不准确不客观的
-
现在一般采用基准程序进行性能评估。基准程序是专门用来进行性能测评的一组程序,可以很好地反映机器在运行实际负载时的性能。通过在不同机器上运行相同的基准程序,比较运行时间来测评性能。基准程序最好是用户经常使用的一些实际程序,对于不同的场合,应选择不同的基准程序。通常,可以在两台机器上运行多个基准程序,计算执行总时间的算术平均/几何平均/加权平均值。