1.计算机的硬件组成
1.1 主存储器
主存储器包括存储体M、各种逻辑部件以及控制电路等。为了能实现按地址访问的方式,还必须配置两个寄存器存储器地址寄存器(MAR)和存储器数据寄存器(MDR)。
1.2 运算器
运算器最少包括3个寄存器和一个算术逻辑单元。
1.3 控制器
控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。
具体而言,它首先要命令存储器读出一条指令,称为取指过程。接着,它要对这条指令进行分析,指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址,称为分析过程。最后根据操作数所在的地址以及指令的操作码完成某种操作,称为执行过程。
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):取地址码
来源:https://blog.csdn.net/weixin_49370884/article/details/127077480
作者:Kk.巴扎嘿