•优先拓扑顺序:基本块的数据依赖图通常是非循环的,并且有许多拓扑顺序与图一致。多种启发式方法来用来把给定的图选择优选的拓扑顺序,例如,首先选择最长关键路径的节点。
•列表调度:给定一个数据依赖图的优先顺序拓扑顺序,我们可以按照这个顺序来考虑节点。在最早的时钟周期调度每个节点,这与图形边缘、所有先前调度的节点的调度以及机器的资源约束所提供的时序约束一致。
•区间编码的运动:在一些情况下,可以将语句从其出现的基础块移到前驱或后驱。优点是可以有可能在新地址中并行执行指令,这些指令并不在原始位置。如果旧位置和新位置之间不存在支配关系,那么可能需要沿某些路径插入补偿码,以确保执行完全相同的指令序列,而不管控制流程如何。
•Do-All循环:Do-all循环在迭代中没有依赖关系,所以任何迭代都可以并行执行。
•Do-All循环的软件流水线:软件流水线技术是利用机器一次执行多条指令的技术。我们计划循环的迭代以较小的间隔开始,在迭代中放置非操作指令以避免机器资源迭代之间的冲突。其结果是循环可以快速执行前导码,尾声和微小的内部循环。
•Do-Across循环:大多数循环从每次迭代到之后迭代具有数据依赖性。这些被称为Do-Across循环。
网友评论