•结构问题:优化的代码调度利用了现代化计算机体系结构的特征。这样的机器一般允许管道执行,其中几个指令同时处于不同的执行阶段。一些机器还允许多个指令同时开始执行。
•数据依赖:调度指令时,必须保证每个存储器位置和寄存器上的指令是有效的。必须一条指令在一个位置写入之后,另一条指令才能读取这个位置时,才会发生真实的数据依赖。在读取之后执行写入时,发生反依赖性。并且当对同一位置进行两次写入时,会发生输出依赖性。
•消除依赖性:通过使用附加位置来存储数据,可以消除反依赖性和输出依赖性。只有真正的依赖不能被消除,代码的调度是要遵守的。
•基本块的数据依赖图:这些图表示基本块的语句之间的时序约束。节点对应于语句。从n到m的边缘标记为d表示指令m必须在指令n开始后至少开始D个时钟周期。
网友评论