【计算机体系结构】相关

2020-04-21  本文已影响0人  南方者

1.相关是​导致流水线冲突的主要原因。

2.相关

        ① 两条指令之间存在某种依赖关系。

        ② 如果两条指令相关,则他们就有可能不能在流水线中重叠执行或者只能部分重叠执行。

3.三类相关有:数据相关(真数据相关)、名相关、控制相关

数据相关

对于两条指令i (前一条指令)和 j (后一条指令),如果在以下条件之一成立,则称指令j和指令i数据相关。

    1. 指令j 使用指令i 产生的结果

    2. 指令j 与指令k 数据相关,指令k 又与指令i数据相关。

数据相关特点

    1. 具有传递性

    2. 反映了数据的流动关系,即如何从其产生者流动到其消费者

实例1:

实例1

存在数据相关的指令:

    1. L.D与ADD.D的数据相关(L.D指令将访存结果写入F0,而ADD.D需要使用L.D的访存结果)

    2. ADD.D与S.D的数据相关(ADD.D将计算结果写入F4,而S.D需要使用ADD.D的计算结果写入存储器)

    3. S.D与DADDIU的数据相关(前者修改R1的值,后者使用R1的值作为分支条件)

数据相关检测

    1. 当数据的流动是经过寄存器时,相关的检测比较直观和容易。

    2.当数据的流动是经过存储器时,检测比较复杂。

    (原因:1. 相同形式的地址其有效地址未必相同。2. 形式不同的地址其有效地址可能相同)

名相关

名:

    · 指令访问的寄存器或存储器单元的名称(例:R5,0x00001000等)

名相关:

     ·  如果两条指令使用相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关。

细分:

    1. 反相关

    如果指令j 写的名与指令i 读的名相同,则称指令i 和j 发生了反相关。

    实例2:

    2. 输出相关如果指令j 和指令i 写相同的名,则称指令i 和j 发生了输出相关

    实例3: 

实例2 实例3

名相关的特点

    1. 名相关的两条指令之间没有数据的传递。

    2. 如果一条指令中的名改变了,并不影响另外一条指令的执行。

消除名相关的方法:换名技术(通过改变指令中操作数的名来消除名相关)

例:对于寄存器操作数进行换名称为寄存器换名。

    · 既可以用编译器静态实现,也可以用硬件动态完成。

    实例4:

实例4

控制相关

①控制相关是指由分支指令引起的相关

②为了保证程序应有的执行顺序,必须严格按控制相关确定的顺序执行

控制相关实例5:( 这里不能把s 移到if 语句的then 之后 )

实例5
上一篇下一篇

猜你喜欢

热点阅读