求教汇编 动态分支预测的不理解的地方解决方法

求教汇编 动态分支预测的不理解的地方
书上 这样说的
  求教汇编    动态分支预测的不理解的地方解决方法
处理器是奔腾的  书是杨季文的 INTEL 80x86  
  代码是这样的
  SHR  EBX,1   ;EBX = 00100110B
  JC   NEXT
  ``````
NEXT :```````
     我个人感觉 从第4步开始 写错了   本来没有命中  却置成了1  后面的好像也有错 ,希望大家给我指正 ,感激不尽 
另外还有一个问题 
  例如 :如下 右边的3条单时钟指令可代替左边的一条3时钟指令
ADD [EBX],ECX      MOV EAX,[EBX]  
                   ADD EAX,ECX
                   MOV [EBX],AX
由于Pentium对存储器的访问仍保持顺序执行时的次序,只有在U流水线中的指令完成需要的存储器访问后,v流水线可能有的配对指令才能够进行存储器访问,因此上述左边指令可能多耽搁流水线超过2个时钟,而右边的片段可避免由于存储访问而耽搁流水线(这我不明白了,右边的也不是进行存储器访问了,这不需要时钟吗 ?好晕   望高手详解了 ,谢谢了。
------解决方案--------------------
1. 这个没有问题,命中BTB和预测正确是两个概念,前者只是分支转移执行后在BTB中留下记录,之后再执行这个转移指令之前,如果预测器查找之前的记录还在,那就是命中BTB了,但不代表预测分支转移还是不转移正确。

2. 如果仅凭上述代码来看,效率的差别是这样的,(在Pentium上)和ADD [EBX],ECX配对的V流水线指令只能有一条(如果这条指令是单周期指令,那V流水线就空置了2个时钟周期),也就是3个时钟周期之内最多执行2条指令,而后者的三条单时钟周期指令,最多在V流水线中可配对3条指令,也就是3个时钟周期之内最多执行6条指令。