1、无条件转移
  一段有无条件转移指令的程序如下:
  k: ……
  k+1: JMP L
  …: ……
  L: ……
  无条件转移指令一般在指令分析器中就执行完成,形成转移地址L,如图8.23所示。如果转移距离比较远,指令L不在指令缓冲栈中,则要将指令缓冲栈中的所有指令全部作废,指令分析器要等待一个"取指令L"周期之后才能开始"分析L"。如果转移的距离比较近,有可能指令L已经被取到了指令缓冲栈中。这时,只要作废指令缓冲栈中的部分指令,即作废从k+3到L-1之间的所有指令。指令分析器在完成"分析k+1"之后,可以接着进行"分析L",即指令分析器仍然可以不停顿地连续工作。
图8.23 无条件转移指令的执行时序
分析k 执行k
     
 
分析k+1
     
 
指令L不在指令缓冲栈
取指令L 分析L 执行L
 
指令L在指令缓冲栈
分析L 执行L
 
分析L+1 执行L+1

  在有的处理机中,为了进一步减少无条件转移指令造成的影响,在指令缓冲栈的入口处增设一个专门处理无条件转移指令的指令分析器。这样,取到指令缓冲栈中的指令就都是有用的,不会再发生作废先行缓冲栈中指令的情况。采用这种方法能够减少处理机与主存储器之间的通信量,而且,无条件转移指令对后面的指令分析器和指令执行部件等将不再造成影响,就象程序中没有无条件转移指令一样。