一、相关知识
编译器和硬件都可以提高指令并行度。从功能上看,编译器主要工作是判断和消除相关,硬件主要工作是避免或减少由于指令相关而导致的机器阻塞和空转。静态调度由编译器完成,动态调度由硬件完成。
明确流水线互锁机制的概念:
如果某数据相关不能被隐藏,阻塞检测硬件机制会从使用结果的指令开始,暂停流水线,一直到数据相关消失以后,再流出新的指令,导致流水线空转。
明确动态调度和静态调度的概念:
静态调度:为了消除或减少流水线空转,首先需要编译器确定并分离出程序中存在相关的指令,然后进行指令调度,并对代码进行优化,这个过程通常称为静态调度。
VLIW结构处理器几乎完全依靠静态调度来提高指令级并行
动态调度:通过硬件重新安排指令的执行顺序,来调整相关指令实际执行时的关系,减少处理器空转。可以处理编译时未发现的相关。
在动态调度中,对原来五段流水线中的译码阶段的工作做了进一步细化,将指令结构阻塞检查和等待数据阻塞部分结束分为两部分,只要没有结构阻塞就可以流出,数据就绪(如果有数据相