相关是影响乱序调度的罪魁祸首,如果指令2的执行需要依赖指令1的结果,我们就
说这两条指令是相关的,指令2必须在指令1后面执行,无法乱序。
下图描述了指令间的相关性:
?...这两条指令实际上是没有相关性的,调转一下执行顺序,对结果没有影响。...这两条指令都用到AX,指令1读AX,指令2写AX,如果直接将两条语句调转,执行结果自然是不一样的,因此它们具有相关性。...不过如果仔细分析一下,这两条语句之间并没有数据流向,在逻辑上并没有相关性,引起它们相关性的原因在于:x86处理器对程序员可见的通用寄存器太少了,指令不得不共用寄存器,这样才导致指令间存在相关。...这两条指令都向AX中写,和wAR一样,wAW的两条指令间也没有数据流动,它们的相关是因为有相同的输出寄存器,因此被称为输出相关( Output Dependencies)。