计算机内部执行程序语言的流程——各硬件如何相互配合完成工作

int a=2,b=3,c=1,y=0;
void main()
{
	y=a*b+c;
}

接下来看一下计算机内部是怎么执行这个程序的吧!

首先,先了解一下计算机硬件的组成:

1、主存储器:

  1. 存储体:存储计算机的数据,包含很多存储单元,数据在存储体中按地址存储
  2. MAR【Memory Address Register(存储地址寄存器)】:将要读取或者写入数据的地址放到这里
  3. MDR【Memory Data Register(存储数据寄存器)】:将读取或者写入的数据放到这里
    在这里插入图片描述

2、运算器:

  1. ACC:累加器,用于存放操作数或运算结果
  2. MQ:乘商寄存器,在乘除运算时,用于存放操作数或运算结果
  3. X:通用的操作数寄存器,用于存放操作数
  4. ALU:算术逻辑单元,通过内部复杂的电路实现算术运算、逻辑运算
    在这里插入图片描述

3、控制器:

  1. CU:控制单元,分析指令,并控制其他硬件的操作
  2. IR:指令寄存器,存放当前执行的指令
  3. PC:程序计数器,有自动加1的功能

在这里插入图片描述

接下来,程序开始运行啦

第一步是实现了“取a”的操作,具体来看:

  1. PC指向0地址位,从而MAR=0
  2. MAR=0, 从而读取0地址下存储的数据到MDR
  3. MDR取出的数据转存到控制器里面的IR
  4. IR的操作码即前6位送给控制器的CU,CU分析得知这是一个取数的指令
  5. IR将地址码即后10位送给存储器的MAR
  6. MAR根据地址码找到地址5,将这个地址下的数据即2取出放到MDR中
  7. MDR将数据再放到运算器的ACC中,从而ACC=2

在这里插入图片描述
第二步实现了“乘以b”的操作,具体来看:

  1. PC自动加1,PC=1,从而MAR=1
  2. MAR=1,从而取出地址1的数据放到MDR中
  3. MDR将数据给控制器的IR
  4. IR的操作码即前6位送给控制器的CU,CU分析得知这是一个“乘法”的指令
  5. IR将地址码即后10位送给存储器的MAR
  6. MAR根据地址码找到地址6,将这个地址下的数据即3取出放到MDR中
  7. 因为3是乘数,所以MDR将其放到控制器下的MQ中
  8. ACC将里面的数即被乘数放到X中
  9. MQ*X计算的结果放到ACC中,从而ACC=6,这里如果乘积太大的话,则需要MQ辅助存储
    在这里插入图片描述

第三步实现了“加上c”的操作,具体来看:

1.PC自动加1,PC=2,从而MAR=2
2. MAR=2,从而取出地址2的数据放到MDR中
3. MDR将数据给控制器的IR
4. IR的操作码即前6位送给控制器的CU,CU分析得知这是一个“加法”的指令
5. IR将地址码即后10位送给存储器的MAR
6. MAR根据地址码找到地址7,将这个地址下的数据即1取出放到MDR中
7. 因为1是加数,所以MDR将其放到控制器下的X中
8. ACC+X->ACC=7,由ALU实现加法运算

在这里插入图片描述
第四步实现了“存数”的操作,具体来看:

1.PC自动加1,PC=3,从而MAR=3
2. MAR=3,从而取出地址3的数据放到MDR中
3. MDR将数据给控制器的IR
4. IR的操作码即前6位送给控制器的CU,CU分析得知这是一个“存数”的指令
5. IR将地址码即后10位送给存储器的MAR
6. MAR根据地址码找到地址8
7. ACC将其寄存的数转到MDR,从而MDR=7
8. MDR将数据写到地址8对应的存储单元,导致y=7
在这里插入图片描述
第五步实现了“停机”的操作,具体来看:

1.PC自动加1,PC=4,从而MAR=4
2. MAR=4,从而取出地址4的数据放到MDR中
3. MDR将数据给控制器的IR
4. IR的操作码即前6位送给控制器的CU,CU分析得知这是一个“停机”的指令
5. 利用中断机制通知操作系统终止该进程
在这里插入图片描述

总结

冯 诺依曼计算机的特点:
1、计算机由五大部件组成
2、指令和数据以同等地位存于存储器,可按地址寻访(指令:取数,存数,加法,乘法,停机等;数据:操作数的值以及计算结果的初始值)
3、指令由操作码和地址码组成
4、指令和数据用二进制表示
5、以运算器为中心(现在一般以存储器为中心)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值