计算机组成第五章之指令周期

一.基本概念

指令周期的基本概念我用自顶向下来解释。
首先呢,一个指令周期是包括取址周期和执行周期的。取址周期呢是我取出某个指令并且分析该指令;执行周期呢是我执行该指令并且把结果存放到寄存器中去。取址就是说我们把指令从内存单元中把它取出来,取到cpu当中,分析呢,就是把操作码部分给cpu,告诉我们这是一条什么样的指令。执行呢就是比如我们要去取操作数,我们执行完后是不是就要把结果给存回去。

另一方面,指令周期呢又是由若干个机器周期来表示,机器周期呢是由若干个时钟周期来表示。在这里,时钟周期就是最小的单位了。时钟周期又称为节拍,或者T周期,或者cpu时钟周期(注意和cpu周期区别)。机器周期呢又称为cpu周期。

二.基本的指令周期

MOV指令的指令周期
RR指令
在这里插入图片描述
取指令周期:
1.程序计数器pc中装入第一条指令地址 101
2.pc中的内容被放在指令地址总线ABUS上并指存进行译码
3.在指存中读出101对应的地址指令为MOV指令,并将指令放入指令总线IBUS上面,通过IBUS装入指令寄存器IR中
4.程序计数器内容+1,变为102
5.指令存储器中的操作码OP被译码
6.cpu识别出了MOV指令。至此,取址周期结束。

执行周期:
1.操作控制器OC送出控制信号到通用寄存器中,选择了R1作为源寄存器,R0作为目标寄存器。
2.OC送出控制信号到ALU,制定ALU做传送操作
3.OC送出控制信号,打开ALU三态门,将数据输出到数据总线DBUS上(任何时候DBUS只能有一个数据)
4.OC送出控制信号,将DBUS上的数据打入到数据缓冲寄存器DR中
5.OC送出控制信号,将DR中的数据打入到目标寄存器中,R0数据由00变为10.至此,执行周期结束。

总结:

  1. 三条总线(指令地址总线ABUS 指令总线IBUS 数据总线DBUS)
  2. 执行周期中每一个操作都由OC操作控制器输出控制信号来执行

LAD指令的指令周期
在这里插入图片描述
取址周期:
1.在程序计数器PC中装入第二条指令地址102
2.指令地址102进入到指令地址总线ABUS上,对指存进行译码
3.将102号地址对应的指令放进指令总线IBUS上,通过IBUS寄存到指令寄存器IR中
4.程序计数器+1,为取下一条指令做准备
5.对操作码OC字段进行译码
6.cpu识别LAD指令,至此,取址周期结束

执行周期:
1.OC发出控制命令给IR输出三态门,将指令中的直接地址码6传入到数据总线DBUS上
2.OC发出操作命令,将地址码6装入到数存地址寄存器AR
3.OC发出读命令,将数存6号单元中的数100读出到DBUS上
4.OC发出命令,将DBUS上的数放入数据缓冲寄存器中DR
5.OC发出命令,将DR中的数100装入通用寄存器R1,原来R1中的数被覆盖了。至此,执行周期结束

总结:

  1. RS型指令有三个cpu周期,一次访问指存,一次访问数存,还有一次执行
  2. 取址周期都一样,具体差别在执行周期上

ADD指令的指令周期

在这里插入图片描述
取址周期同上。
执行周期:
1.OC送出控制信号到通用寄存器,选择R1作为源寄存器,R2作为目标寄存器
2.OC送出控制信号到ALU,指定ALU做R1和R2的加法
3.OC送出控制信号,打开ALU输出三态门,将数据120放到DBUS中
4.OC送粗控制信号,将DBUS上的数据打入到缓冲寄存器DR中 ,ALU产生的进位信号保存在状态寄存器PSWR中
5.OC送出控制信号,将DR中的数放入到R2,R2原来的数被120覆盖。至此,执行周期结束。

STO指令的指令周期
在这里插入图片描述
执行周期:
1.操作控制器OC送出操作命令到通用寄存器,选择R3做数据存储器的地址单元
2.OC发出操作命令,打开了通用寄存器三态门(不经过ALU,节省时间),将地址30放入到DBUS总线上。
3.OC发出操作命令,将地址30打入数存寄存器AR中,并进行数存译码 4.OC发出操作命令到通用寄存器,选择120,作为数存的写入数据
5.OC发出操作命令,打开通用寄存器输出三态门,将120放在DBUS上
6.OC发出操作命令,将数据120写入到数存30号单元。

JMP指令的指令周期
执行周期:
1.OC发出操作控制命令,打开指令寄存器IR的输出三态门,将IR中的地址码101发送到DBUS上
2.OC发出操作控制命令,将DBUS上的地址码101打入到程序计数器PC中,PC中原先内容106被替换。于是,下一条指令不是从106号单元取出,而是转移到101号单元取出。至此,JMP执行周期结束。

总结:

MOV指令 和 ADD指令 都是RR指令;类型相同,执行周期过程也相同
操作通式:

  • 到通用寄存器中找到目标寄存器和源寄存器地址
  • 告诉ALU他要做什么运算(加法还是传送)
  • 将处理好的数据通过ALU三态门输出到DBUS总线上
  • 将数据打入到DR(数据缓冲寄存器)
  • 将数据覆盖掉目标寄存器中原有的数据
  • 完。

LAD指令和STO指令都是RS指令,之所以相较于RR多了一个周期,是因为要访问数存(cache)

LAD指令操作通式:

  • 打开IR(指令寄存器)输出三态门,将直接地址打入到DBUS总线
  • 将数据打入到AR(数据地址寄存器)中去
  • 找到数存直接地址(6)对应的那个寄存器,将里面的数(100)放入到DBUS总线上
  • 打入到DR(数据缓冲寄存器)
  • 覆盖掉通用寄存器R1原有的数据
  • 完。

STO指令操作通式:

  • 打开IR输出三态门,将R3传送到DBUS上面
  • 将R3打入到通用寄存器中,取出里面的数据
  • 打开通用寄存器三态门,将数据打入到DBUS总线上
  • 传入到AR,找到30对应的那个寄存器
  • 打开IR输出三态门,将R2传送到DBUS上面
  • 将R2打入到通用寄存器中,取出里面的数据
  • 打开通用寄存器三态门,将数据打入到DBUS上
  • 传入AR,将数据写入30对应寄存器中,原有的数据(40)被覆盖了
  • 完。
  • 14
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值