当前位置: 网站首页 >> 知识库 >> 正文
计算机的硬件组成及工作过程
发布时间:2024-05-08       编辑:网络中心       浏览次数:

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

  1. 初:(PC)=0,指向第一条指令的存储地址

  2. (PC)->MAR,导致(MAR)=0

  3. M(MAR)->MDR,导致(MDR)=00001 0000000101

  4. (MDR)->IR,导致(IR)=00001 0000000101

  5. OP(IR)->CU,指令操作码送到CU,CU分析后得知,这是取指指令

  6. Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=0000000101=5

  7. M(MAR)->MDR,导致(MDR)=0000000000000010=2

  8. (MDR)->ACC,导致(ACC)=0000000000000010=2

(2)进行a*b

  1. 上一条指令取指后PC自动+1,(PC)=1;执行后,(ACC)=2

  2. (PC)->(MAR),导致(MAR)=1

  3. M(MAR)->MDR,导致(MDR)=00100 0000000110

  4. (MDR)->IR,导致(IR)=00001 0000000110

  5. OP(IR)->CU,指令操作码送到CU,CU分析后得知,这是乘法指令

  6. Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=0000000110=6

  7. M(MAR)->MDR,导致(MDR)=0000000000000011=3

  8. (ACC)->X,导致(X)=2

  9. (MQ)*(X)->ACC,由ALU实现乘法运算,导致(ACC)=6,如果乘积太大,则需要MQ辅助存储

(3)进行(a*b)+c

  1. 上一条指令取指后(PC)=2,执行后(ACC)=6

  2. (PC)->(MAR),导致(MAR)=2

  3. M(MAR)->MDR,导致(MDR)=00011 0000000111

  4. (MDR)->IR,导致(IR)=00011 0000000111

  5. OP(IR)->CU,指令操作码送到CU,CU分析后得知,这是加法指令

  6. Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=0000000111=7

  7. M(MAR)->MDR,导致(MDR)=0000000000000001=1

  8. (ACC)+(X)->ACC,由ALU实现加法运算,导致(ACC)=7

(4)存储y=a*b+c

  1. 上一条指令取指后(PC)=3,执行后(ACC)=7

  2. PC)->(MAR),导致(MAR)=3

  3. M(MAR)->MDR,导致(MDR)=00010 0000001000

  4. (MDR)->IR,导致(IR)=00010 0000001000

  5. OP(IR)->CU,指令操作码送到CU,CU分析后得知,这是存数指令、

  6. Ad(IR)->MAR,指令的地址码送到MAR,导致(MAR)=0000001000=8

  7. (ACC)->MDR,导致(MDR)=7

  8. (MDR)->地址为8的存储单元,导致y=7

 注意:

  1. M:主存中的某存储单元

  2. ACC、MQ、X、MAR、MDR......:相应的存储器

  3. M(MAR):去存储单元中的数据

  4. (ACC)......:取相应存储器中的数据

  5. OP(IR):取操作码

  6. Ad(IR):取地址码


来源:https://blog.csdn.net/weixin_49370884/article/details/127077480

作者:

关闭本页

澳门人威尼斯3966教育技术与网络中心版权所有

©GDAFC Education Technology & Network Center, All Rights Reserved.