赞
踩
目录
两条指令之间存在某种依赖关系。如果两条指令相关,则它们就有可能不能在流水线中重叠执行或者只能部分重叠执行。
对于两条指令i(在前,下同)和j(在后,下同),如果下述条件之一成立,则称指令j与指令i数据相关。
数据相关具有传递性。数据相关反映了数据的流动关系,即如何从其产生者流动到其消费者。
当数据的流动是经过寄存器时,相关的检测比较直观和容易。
当数据的流动是经过存储器时,检测比较复杂。
相同形式的地址其有效地址未必相同;
形式不同的地址其有效地址却可能相同。
名:指令所访问的寄存器或存储器单元的名称。
如果两条指令使用相同的名,但是它们之间并没有数据流动,则称这两条指令存在名相关。
指令j与指令i之间的名相关有两种:
指令j写的名=指令i读的名
指令j写的名=指令i写的名
名相关的两条指令之间并没有数据的传送。如果一条指令中的名改变了,并不影响另外一条指令的执行。
换名技术:通过改变指令中操作数的名来消除名相关。对于寄存器操作数进行换名称为寄存器换名。既可以用编译器静态实现,也可以用硬件动态完成。
有时流水线设计者允许结构冲突的存在
主要原因:减少硬件成本如果把流水线中的所有功能单元完全流水化,或者 重复设置足够份数,那么所花费的成本将相当高。
当相关的指令靠得足够近时,它们在流水线中的重叠执行或者重新排序会改变指令读/写操作数的顺序,使之不同于它们串行执行时的顺序,则发生了数据冲突。
数据冲突分为三种:写后读冲突、写后写冲突、读后写冲突
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。