目录
1.计算机的硬件组成
1.1 主存储器
主存储器包括存储体M、各种逻辑部件以及控制电路等。为了能实现按地址访问的方式,还必须配置两个寄存器存储器地址寄存器(MAR)和存储器数据寄存器(MDR)。
- 存储器地址寄存器(MAR):存放欲访问的存储单元的地址,其位数对应存储单元的个数。
- 存储器数据寄存器(MDR):存放从存储体某单元取出的代码或者准备往某存储单元存入的代码,其位数与存储字长相等。
1.2 运算器
运算器最少包括3个寄存器和一个算术逻辑单元。
- 累加器(ACC):存放操作数或运算结果。
- 乘商寄存器(MQ):在乘、除法运算时,用于存放操作数或运算结果。
- 通用的操作数寄存器(X):存放操作数。
- 算术逻辑单元(ALU):通过内部复杂电路实现算术运算、逻辑运算。
1.3 控制器
控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。
具体而言,它首先要命令存储器读出一条指令,称为取指过程。接着,它要对这条指令进行分析,指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址,称为分析过程。最后根据操作数所在的地址以及指令的操作码完成某种操作,称为执行过程。
- 控制单元(CU):分析指令,给出控制信息。
- 指令寄存器(IR):存放当前执行的指令。
- 程序计数器(PC):存放下一条指令的地址,有自动加1的功能,即可自动形成下一条指令的地址。
1.4 I/O
I/O子系统包括各种I/O设备及其相应的接口。每一种I/O设备都由I/O接口与主机联系,它接收CU发出的各种控制命令,并完成相应的操作。
1.5 细化的计算机组成框图
2. 计算机的计算过程
接下来用我们熟悉的一段代码来了解一下计算机的计算过程。
int a = 2, b = 3, c = 1, y = 0;
void main() {
y = a * b + c;
}
编译并装入主存储器可以得到:
(1)取出数值a=2
- 初:(PC)=0,指向第一条指令的存储地址
- (PC)->MAR,导致(MAR)=0
- M(MAR)->MDR,导致(MDR)=00001 0000000101
- (MDR)->IR,导致(IR)=00001 0000000101
- OP(IR)->CU,指令操作码送到CU,CU分析后得知,这是取指指令
- Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=0000000101=5
- M(MAR)->MDR,导致(MDR)=0000000000000010=2
- (MDR)->ACC,导致(ACC)=0000000000000010=2
(2)进行a*b
- 上一条指令取指后PC自动+1,(PC)=1;执行后,(ACC)=2
- (PC)->(MAR),导致(MAR)=1
- M(MAR)->MDR,导致(MDR)=00100 0000000110
- (MDR)->IR,导致(IR)=00001 0000000110
- OP(IR)->CU,指令操作码送到CU,CU分析后得知,这是乘法指令
- Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=0000000110=6
- M(MAR)->MDR,导致(MDR)=0000000000000011=3
- (ACC)->X,导致(X)=2
- (MQ)*(X)->ACC,由ALU实现乘法运算,导致(ACC)=6,如果乘积太大,则需要MQ辅助存储
(3)进行(a*b)+c
- 上一条指令取指后(PC)=2,执行后(ACC)=6
- (PC)->(MAR),导致(MAR)=2
- M(MAR)->MDR,导致(MDR)=00011 0000000111
- (MDR)->IR,导致(IR)=00011 0000000111
- OP(IR)->CU,指令操作码送到CU,CU分析后得知,这是加法指令
- Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=0000000111=7
- M(MAR)->MDR,导致(MDR)=0000000000000001=1
- (ACC)+(X)->ACC,由ALU实现加法运算,导致(ACC)=7
(4)存储y=a*b+c
- 上一条指令取指后(PC)=3,执行后(ACC)=7
- PC)->(MAR),导致(MAR)=3
- M(MAR)->MDR,导致(MDR)=00010 0000001000
- (MDR)->IR,导致(IR)=00010 0000001000
- OP(IR)->CU,指令操作码送到CU,CU分析后得知,这是存数指令、
- Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=0000001000=8
- (ACC)->MDR,导致(MDR)=7
- (MDR)->地址为8的存储单元,导致y=7
注意:
- M:主存中的某存储单元
- ACC、MQ、X、MAR、MDR......:相应的存储器
- M(MAR):去存储单元中的数据
- (ACC)......:取相应存储器中的数据
- OP(IR):取操作码
- Ad(IR):取地址码