
答案
答:指令之间的数据冲突有3种类型:真相关、反相关、输出相关。
真相关(数据依赖,有时候也称为数据相关):考虑两条指令i和j,i在j的前面,指令k在指令i和指令j之间。如果下述条件之一成立,则称指令j与指令i真相关:
(1)指令j使用指令i产生的结果(写后读);
(2)指令j与指令k真相关,而指令k又与指令i真相关。(真相关的传递性)
反相关:考虑两条指令i和j,i在j的前面,如果指令j所写的名与指令i所读的寄存器名或存储地址相同,则称指令i和j发生了反相关。(读后写)
输出相关:考虑两条指令i和j,i在j的前面,如果指令j和指令i所写的寄存器名或存储地址相同,则称指令i和j发生了输出相关。(写后写)
其中反相关和输出相关又合称名相关。名相关的意思是两条指令使用了相同的寄存器名或存储地址,但是它们之间并没有数据流动,即没有真正的数据依赖关系,则称这两条指令存在名相关。