计算机体系结构——标量处理机(重叠方式)
重叠方式
重叠原理与一次重叠
1个指令周期可以分为三个部分
- 顺序解释
- 每条指令之间顺序串行(执行完一条指令后才取下条指令)地进行每条指令内部的各个微操作也顺序串行地进行。
- 重叠解释
- 解释第K指令的操作完成之前,就开始解释第K+1条指令。
遇到的问题:缓冲冲突 - 解决方案:
1、让操作数和指令分别存放于两个独立编址且可同时访问的存储器中(指令和数据分开存放)
2、维持指令和操作数混存,但采用多体交叉主存结构
3、增设采用先进先出方式工作的指令缓冲寄存器(简称指缓)。
一次重叠
取指令的时间可以忽略(指令利用空闲时间把指令从内存取到CPU内部,后面取指令的时间可以忽略)
实现 “执行k”与“分析k+1”一次重叠的要求
1、硬件上还应有独立的指令分析部件和指令执行部件。
2、还需在硬件上解决控制上的同步,保证任何时候都只是“执行k”与“分析k+1”重叠。(不可以谁更快更慢,如果更短要插入的等待时间,)
3、为了实现“分析k+1”和“执行k”的一次重叠,还需要解决好控制上的许多关联的问题。
- 例如:
1、处理好条件转移指令 (要跳转的时候可能要取消进入缓存的下一条指令,若跳转的指令还没进入缓存,需要设立等待时间)
2、控制上还要解决好邻近指令之间有可能出现的某种关联----- “数据相关”(上一条指令的执行结果下一条指令需要使用)
3、还要解决好邻近指令之间“指令相关”
相关处理
-
转移指令的处理
解决方法:通过延迟转移技术来解决
具体步骤:编译程序生成目标程序时,将转移指令与条件转移无关的第k-1条指令交换一下位置,这样,即使条件转移成功也不会使重叠效率下降(交换两条指令顺序,将跳转指令放到上一条指令的前面,无论转移是否成功都不需要取消下一条指令,可以在下一条指令执行是取出跳转的指令) -
指令相关的处理
解决方案:
1、规定在程序运行过程中不准修改指令,指令相关就不可能发生。
2、为满足程序设计灵活性的需要,在程序运行过程中有时希望修改指令,这时可设置一条“执行”指令来解决。 -
主存空间数相关的处理
主存空间数相关是相邻两条指令之间出现对主存同一单元要求先写而后读的关联
解决方法:推后“分析k+1”的读 -
通用寄存器组相关的处理
解决方案:推后读(推后分析指令),或增设“相关专用通路”
注:主存空间数相关不用“相关专用通路”法。(原因:小概率事件)