计算机组成原理自学笔记(十)

控制单元要完成指令解释的全部过程,包括把指令从内存单元当中取出、分析指令、执行指令、写回结果。

指令周期

指令周期是指从取出一条指令开始,一直到这条指令执行结束所需要的全部时间;或者是解释一条指令的全部时间。(所谓解释一条指令包括了取值、分析、执行等等过程)
完成一条指令:需要把指令从内存单元当中取出,放入CPU的IR寄存器,需要对指令的操作码部分进行分析,需要对寻址方式进行分析,这些就是取指和分析部分,这两部分可以放在一起当做取值阶段;另外就是执行指令,执行指令包括完成指令要求的全部运算,该部分我们称为执行周期。

完成一条指令
取指/分析
取指周期
执行
执行周期

不同CPU、不同指令集、不同的的设计方法可以把完成一条指令分成不同的阶段,此处的划分方式仅做举例说明
在这里插入图片描述

取指阶段完成了把指令从内存单元当中取出送入比如到计算机(CPU)当中,也包括了分析阶段,把操作码部分送到CU,由CU来确定这是系统当中的哪一条指令;
执行结算包括了取操作数、执行以及执行结果的写回;

每条指令的指令周期不同
实际上即使在一个CPU当中,不同的指令,指令周期的长度或者指令周期里面包含的机器周期的个数也可能是不一样的。
1)比如有点指令只包括取指周期不包括执行周期,像NOP指令,该指令表示空操作,计算机系统不需要做任何操作;
2)一种情况包含了取指周期和执行周期,并且取指周期和执行周期执行时间是相同的,像ADD mem 表示内存单元qu取出一个数和ACC寄存器中的数据做加法,结果保存在ACC当中,此处取指周期要访问一次内存把指令从内存当中取出放入到CPU当中,执行周期的时候也要访问一次内存把操作数取出送入到CPU当中,并执行加法操作,这连个时间基本上相同;
3)取指周期 != 执行周期 ;如 MUL mem,执行周期比qu取指周期长

具有间接寻址的指令周期
指令集当中支持多种类型的寻址方式,特别是间址寻址方式,在寻找操作数的地址的过程当中也需要访问存储器,那么在执行阶段如果我们把所有的取操作数和执行这两部分内容都放到执行周期的话,在执行周期可能需要两次访存,一次访存是取出操作数的地址,第二次访存是取操作数,那么执行周期就会比较长,所以我们可以在指令周期当中增加一个间址周期
在这里插入图片描述
带有中断周期的指令周期
如果机器是支持中断的,那么在指令周期的执行周期结束的时候就要确认是否有中断请求,如果有则需要响应中断,响应中断的过程我们要保存断点、形成中断服务程序的入口地址、我们要硬件关中断,这些操作都要在中断周期当中完成。由此如果一条指令比较复杂并且带有中断,那么完整的指令周期包括:取指周期、间址周期、执行周期、中断周期 四个阶段。

指令周期的流程
我们假设指令周期至少包括取指周期和执行周期
在这里插入图片描述
CPU工作周期的标志
指令周期的不同阶段,控制器需要做不同操作;因此控制器在指令周期的不同的阶段要发出不同的控制命令,控制器也需要知道当前处于指令周期的哪一个阶段,即使是我们对同一个部件进行操作,在指令周期的不同阶段这些操作也是不同的。
CPU访存有四种性质
读回来的是一条指令,比如在取指阶段;读回来的也可能是操作数;如果是间址寻址,那么在间址周期读回来的是地址;在中断阶段我们要保存断点;
指令 ------ 取指周期 (取出来的是指令,需要送到IR当中)
地址 ------ 间址周期 (取出来的是地址,需要送到IR的地址码部分或者MDR寄存器的地址码部分)
存取 操作数或结果 ------ 执行周期 (取:读出来的是操作数,要放入CPU当中的寄存器为数据操作做准备)
程序断点 ----- 中断周期(程序断点保存到内存单元的制定位置)

尽管都是对内存的操作,但是在不同的周期的读或者写要完成不同的功能,为了对控制单元进行设计,我们必须要标识出当前处于指令执行的哪个阶段,以便于控制器发出相应的控制操作,把数据或者是指令或者是地址传送到指定的位置,那么 这些标记就是CPU工作周期的标志
在这里插入图片描述


指令周期的数据流
1)取指周期数据流
PC 提供下一条要取的那条指令的地址;需要访问存储器,存储器所需要的地址需要保存在MAR当中,数据保存在MDR;取回的指令保存在IR当中;所有的操作都是由CU来控制
在这里插入图片描述
2)间址周期数据流
指令所需要的操作数的地址保存在指令的地址码部分,在下图结构中,指令在IR和MDR都存在,因此首先要取出我们需要的操作数的地址,该地址在存储器当中,我们的起始操作可以从IR开始也可以从MDR开始,假设从MDR起始(即操作数所在内存单元的地址保存在MDR),MDR中的地址码部分送给MAR进行内存单元的访问,MAR将地址发送到地址总线,通过地址总线发送到存储器,CU发出读操作,操作信号先发给控制总线,然后由控制总线送到存储器;存储器完成读操作以后,把数据送到数据总线上(该数据是一条地址,是这条指令所需要的操作数所在的内存单元地址),数据总线将数据送到MDR当中,此时MDR的地址码部分就是真正的操作数的地址。
在这里插入图片描述

3)执行周期数据流
不同的指令在执行周期的差异非常大,数据流也不同,后续章节详细介绍

4)中断周期数据流
中断周期的操作包含:保存断点、形成中断服务程序的进入地址、硬件关中断。
保存程序的断点,即把程序的断点保存在程序的某一个内存单元当中,由CU来确定保存断点的内存地址,CU给出内存地址将其放入MAR中,MAR把地址传送给数据总线,再由数据总线传送给存储器;保存断点是个写操作,CU会向存储器发出写命令,即CU将命令发送到控制总线,然后由控制总线送入到存储器;断点就是中断之后返回到程序的位置,也就是中断之后要执行的下一条指令的地址是多少,这个地址就保存在PC当中,所以保存断点就是要保存当前PC的值,PC要把值送到MDR当中,由MDR送到数据总线,数据总线保存到存储单元当中
在这里插入图片描述
形成中断服务入口程序的入口地址,改地址由CU给出,并由CU直接写入到PC当中

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值