计算机组成原理-指令是如何被执行的

各个部件

  • 运算器
    用于实现算术运算(加减乘除)、逻辑运算(与或非)
  • 控制器
    用于控制程序执行的顺序
  • 存储器
    用于存放数据

CPU = 运算器 + 控制器
主机 = CPU + 存储器(内存)
外设 = 输入设备 + 输出设备 + 辅助存储器(磁盘)

运算器

  • ACC
  • MQ
  • X
  • ALU

它们之间的关系以及运算器的逻辑图如图1所示。
在这里插入图片描述

图1 运算器内部构造

控制器

  • IR(Instruction Register):指令寄存器,作用是解析指令。
  • PC(Program Counter):程序计数器,作用是记录每条指令的地址,自增。
  • CU(Control Unit):控制单元,作用是执行指令。

主存储器(内存)

  • MAR(Memory Address Register):内存地址寄存器,保存数据被传输到的位置的地址或者数据来源位置的地址。
  • MDR(Memory Data Register):内存数据寄存器,保存要被写入地址单元或者从地址单元读出的数据。

高级语言到汇编语言

以一个具体的例子进行分析

// 省略头文件
int a=2,b=3,c=1,y=0;
void main()
{
	y=a*b+c;
}

发送给CPU的机器指令如图2所示。
在这里插入图片描述

图2 汇编程序

图2给出了高级语言转换之后的汇编语言,最左边一栏是地址,中间是指令(16位),最后一栏是注释(方便解释使用,实际汇编语言中没有)。这里也可以看到指令的操作和数据是存放在一起的,0-4地址存储的是指令,5-8地址存储的是数据。
图3给出了所有的过程。
在这里插入图片描述

图3 汇编程序执行步骤

图中绿色的序号对应下面步骤的序号。

  • 初始时,(PC)=0,程序计数器指向地址0,指向第一条指令的存储地址
  • #1:(PC)–>MAR,导致(MAR)=0
  • #2 #3:M(MAR)–>MDR,MAR去存储体中寻找地址为0的指令,并将指令的内容写入MDR中,导致(MDRR=000001 000000101
  • #4 (MDR)–>IR,MDR将数据通过数据总线传输给IR,导致(IR)=000001 000000101
  • #5 IR分析指令,发现指令的操作码OP(IR)=000001,并传输给CU,即OP(IR)–>CU,CU分析后得知"000001"是取数指令。
  • #6 AD(IR)–>MAR,指令寄存器告诉MAR需要取出"000000101"地址的值,导致(MAR)=000000101
  • #7#8 MAR去存储体中寻找,并将结果写入到MDR中,导致(MDR)=0000000000000010=2
  • #9 (MDR)—>ACC,MDR将数据通过数据总线传输到ACC,导致ACC=2

以上步骤中,取指令(#1~#4),分析指令(#5),执行取数指令(#6~#9)
在这里插入图片描述

图4 PC加1后的操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值