计算机的基本构成
计算机的功能部件
- 输入设备:将信息转换成机器能识别的形式。
- 存储器:存放数据和程序。
- 运算器:进行算数运算和逻辑运算。
- 输出设备:将结果转换成人们熟悉的形式。
- 控制器:来指挥程序运行。
冯诺伊曼基本思想
冯诺依曼机的特点:
- 采用“存储程序的”工作方式。
- 计算机硬件系统由运算器、存储器、控制器、输入和输出设备组成。
- 指令和数据以同等地位存储在存储器中,计算机能区别出它们。
- 指令和数据均用二进制代码表示。
冯诺伊曼机的基本工作方式是以控制流驱动方式,以运算器为中心,且是单处理器。
“存储程序”的思想是:将事先编制好的程序和原始数据送入主存后才能执行,一旦程序被启动执行,就无需操作人员的干预。
图1-1就是标准的冯诺依曼机,实线表示数据线,虚线表示控制线和反馈线。
冯诺依曼计算机是以运算器为中心,任何计算都得经过运算器,会导致效率过低,从而有了现代计算机的结构,如图1-2。
现代计算机以存储器为中心,当运算完成可以直接从存储器中取址来完成所想要的操作,而现在所谓的CPU就是运算器和控制器的集成部件。
计算机各个部件的工作原理
主存储器的基本组成
主存储器以存储单元的地址进行存取。主存储器的最基本组成如图1-3所示,地址寄存器(MAR)存放访存地址。数据寄存器(MDR)用于暂存要从存储器中读或写的数据信息。
主存储器中存储体由多个存储单元(每个存储单元存放一串二进制代码)组成。存储单元存储的一串二进制代码称为存储字,而存储字的位数称为存储字长,存储字长可以是1B(8bit)或是1B的偶数倍。
MAR位数反映存储单元的个数,MDR的位数是要等于存储子长的。
例:
MAR=4位 -> 总共有$2^4$个存储单元
MDR=16位 -> 每个存储单元可存放16bit。
注:1字节(byte)=1B = 8bit,1字(word)= 16bit
运算器的基本组成
运算器主要用于算计运算(如:加减乘除)、逻辑运算(如:与或非)。
ACC(Accumulator):累加器,用于存放操作数,或运算结果。
MQ(Multiple-Quotient Register): 乘商寄存器,在乘、除运算时,用于存放操作数或运算结果。
X: 通用的操作数寄存器,用于存放操作数。
ALU(Arithmetic and Logic Unit):算数逻辑单元,实现算数运算、逻辑运算。
控制器的基本组成
CU(Control Unit):控制单元,分析指令,给出控制信号。
IR(Instruction Register):指令寄存器,存放当前执行的指令。
PC(Program Counter):程序计数器,存放下一条指令地址,有自动加1功能。
完成一条指令的过程:通过PC进行取指令,用IR分析指令,最后用CU执行指令。
计算机的工作过程
假设有这么一段代码
int a=2,a=3,c=1,y=0;
void main(){
y-a*b+c;
}
编译后装入主存:
a=2的2b(16bit)二进制形式0000000000000010
,其他同理。
若计算机要执行上方代码,会进行以下工作:
此时(PC)->0,PC指向0地址,PC会通过地址总线来获取MAR种主存地址为0的指令,控制器会通过控制总线来告诉主存储器要进行读操作。
MAR会根据主存地址信息去存储体种找到对应指令,然后存储体会将相应二进制放到MDR中,此时M(MAR)->MDR,(MDR)= ,(MAR)=0(M(MAR)表示将地址寄存器中的内容通过存储体放到数据寄存器中)。
MDR中已经存放了主存地址0的指令信息,此时需要再通过一条数据总线来将信息存放到IR内,(MDR)->IR,导致(IR)= 000001 0000000101
然后前6个比特,IR再送到CU控制单元中,CU会分析当前操作码的信息,此时读取到的使取数指令,会控制IR来读取a,导致(MAR)=5。
MAR会通过存储体去MDR中读取a,导致(MDR)=000000000000010=2。
然后MDR中的数据会传送到ACC中,然后就完成了“取数”指令。
因为PC有自动+1功能,就会自动进行下一条功能。
计算机软件
计算机软件中三个级别的语言,分别为:
机器语言。又称二进制代码语言,需要编程人员记忆每条指令的二进制编码。
汇编语言。用英文单词或缩写来代替二进制的指令代码。
高级语言。如C、C++、Java等,通常高级语言需要通过编译程序编译成汇编语言,然后经过汇编得到机器语言程序,或直接由高级语言翻译成机器语言程序。
翻译程序有以下三类:
- 汇编器:通汇编语言再翻译成机器语言。
- 解释器:将源程序逐句翻译成机器指令并立即执行。
- 编译器:运行后一次性全部翻译成机器语言程序。
由于软件和硬件逻辑功能具有等价性(有些功能既可以使用软件实现,也可以使用硬件实现),就产生了
计算机系统的层次结构
计算机通过多级层次结构来分清彼此之间的界面,明确各自的功能,以便构成合理、高效的计算机系统。
计算机层次结构暂无统一的标准,但可以分层图1-8所示的层次结构。
第1级微程序机器层,它由机器硬件直接执行微指令。
第2级传统机器语言层,由01代码组成,由微程序解释机器指令系统。
第3级系统操作层,由操作系统程序实现,通过操作系统来对硬件进行操作。
第4级汇编语言层,这一层由汇编语言支持和执行,为用户提供提供一种符号化的语言,借此可编写汇编语言源程序。
第5级高级语言层,它是面向用户的,该层由各种高级语言编译程序支持和执行。
指令集体系结构(ISA):软件和硬件之间的界面,设计计算机的系统的ISA,就是定义一台计算机可以支持哪些指令,以及每条指令的作用是什么、每条指令的用法是什么。
计算机的性能指标
字长
字长是指计算机进行一次整数运算所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器有关。计算机字长通常选定为字节(8位)的整数倍。
- 数据字长:是数据总线一次能并行传送信息的位数。
- 存储字长:一个存储单元中的二进制代码的位数,存储字长等于MDR的位数。
- 机器字长:即计算机的位数,计算机一次能处理的二进制的长度。
数据通路带宽
数据通路带宽是指数据总线一次所能并行传送信息的位数。
主存容量
主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量。
由于主存储器中MAR(存储地址寄存器)位数反映存储单元的个数(最多支持多少个),MDR(存储数据寄存器)位数等于存储字长等于每个存储单元的大小。
**总容量=存储单元个数$\times$存储字长 **(单位为bit)。
运算速度
吞吐量和响应时间。
- 吞吐量:指系统再单位时间内处理请求的数量。系统吞吐量主要取决于主存的存取周期。
- 响应时间:指用户从计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。
主频和CPU时钟周期。
CPU时钟周期。通常为节拍脉冲或T周期,即主频的倒数,是CPU的最小时间单位,执行指令的每个动作至少需要1个时钟周期。
CPU时钟周期=$\frac{1}{主频}$
主频(CPU时钟频率)。是衡量机器速度的重要参数。主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快。
注:CPU时钟周期=1/主频,主频通常以Hz(赫兹)为单位,1Hz表示每秒1次。
CPI(Cycle Per Instruction):即执行一条指令所需的时钟周期数。
CPU执行时间:指运行一个程序所花费的时间。
CPU执行时间=CPU时钟周期数/主频=(指令条数$\times$CPI)/主频
CPU的性能主要取决于三个要素:
- 主频
- 每条指令执行所用的时钟周期数(CPI)
- 指令条数
MIPS(Million Instructions Per Second),即每秒执行多少百万条指令。
MIPS=指令条数/(执行时间$\times 10^6$)=主频/(CPI$\times 10^6$)
基准程序
基准程序是专门用来进行性能评价的一组程序。(例如跑分软件)
其他专业术语
- 系列机:具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列。
- 兼容:指软件或硬件的通用性。
- 软件可移植性:指把使用再某个系列计算机中的软件直接或进行很少修改就能运行在另一个计算机的可能性。
- 固件:将程序固化在ROM中组成的部件称为固件。
常用数量单位
描述内存容量、文件大小时:
$1KB=2^{10}B=1024B,1MB=2^{20}B,1GB=2^{30}B, 1TB=2^{40}B$
描述频率、速率时:
大小以乘$10^3$递增
$K=10^3,M=10^6…$
K->M->G->T->P->F->Z
常见问题与易混淆点
翻译程序、解释程序、汇编程序、编译程序的区别和联系
翻译程序有两种:
一种是编译程序,将语言源程序一次性全翻译成目标程序。
另一种是解释程序,将语言源程序逐句翻译成对应的机器目标代码,直至所有语句全部被翻译并执行完。
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。
透明性
在计算机领域种,所谓用户无法”看“到的某个事物或属性,称为”透明“。
例如,对用高级语言程序员来说,浮点数格式。乘法指令等这些指令的格式和数据如何运行等都是透明的;
对于机器语言或汇编语言程序员来说,指令的格式、机器结构、数据格式等都不是透明的。
在CPU中,IR、MAR和MDR对各类程序员都是透明的。
字、字长、机器字长、指令字长、存储字长的区别和联系
通常说”某16位或32位机器“中,16、32指的是字长,也称机器字长。
所谓字长,通常是指CPU内部用于整数运算的数据通路的宽度,反映了计算机处理信息的能力。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2访存周期来取出一条指令;