面向集群式VLIW/EPIC机器的编译器导向指令级并行提取
1. 引言
多媒体、通信和安全应用程序展现出大量的指令级并行性(ILP)。为满足这些高要求应用的性能需求,使用能暴露/提取ILP的编译技术以及具备大量功能单元的处理器数据路径(如VLIW/EPIC处理器)至关重要。
基本的VLIW数据路径可能基于一个由所有功能单元(FU)共享的单一寄存器文件,但这种简单的组织方式在功能单元数量增加时扩展性不佳。集群式VLIW数据路径通过限制功能单元和寄存器之间的连接性来解决这一问题,即集群上的功能单元只能对该集群的寄存器文件进行读写操作。不过,数据可能需要在机器的集群之间传输,这可能会增加延迟,因此开发考虑此类数据传输的性能增强技术很重要。
大多数上述应用只有少数时间关键内核,即一小部分代码(有时低至3%)会被频繁执行,且大部分处理时间通常花在这些时间关键循环嵌套的最内层两个循环上。此外,这些循环内存在相当高的控制复杂度,这表明针对此类时间关键内循环体的ILP提取必须处理控制/分支结构。
2. 背景知识
- 循环性能指标:循环的性能由新循环迭代的平均启动速率定义,即启动间隔(II)。
- 软件流水:是一种ILP提取技术,通过对循环体操作进行重定时(即重叠多个循环迭代),以生成更紧凑的调度。
- 模调度:在调度过程中利用软件流水技术,将额外的ILP暴露给数据路径资源,从而减少循环的启动间隔。
- 谓词执行:允许同时调度替