显式并发指令运算

显示式并发指令运算 (EPIC) 是 HP-Intel 联盟于 1997 年创造的一个术语,用于描述研究人员自 1980 年代初以来一直在研究的计算范式。 这种范式也称为独立架构。 它是 Intel 和 HP 开发 Intel Itanium 架构的基础,HP 后来断言 EPIC 只是 Itanium 架构的旧称。 EPIC 允许微处理器通过使用编译器并行执行软件指令,而不是使用复杂的片上电路来控制并行指令执行。 这是为了允许简单的性能扩展,而无需诉诸更高的时钟频率

植根于 VLIW

到 1989 年,HP 的研究人员认识到精简指令集计算机 (RISC) 架构在每个周期一条指令时已达到极限。 他们开始研究一种新架构,后来命名为 EPIC。 研究的基础是 VLIW,其中在每条指令中编码多个操作,然后由多个执行单元处理。

EPIC 的一个目标是将指令调度的复杂性从 CPU 硬件转移到软件编译器,软件编译器可以静态地进行指令调度(借助跟踪反馈信息)。 这消除了 CPU 中复杂调度电路的需要,从而释放空间和功率用于其他功能,包括额外的执行资源。 一个同样重要的目标是通过使用编译器查找和利用并行执行的额外机会来进一步利用指令级并行性 (ILP)。

VLIW(至少是原始形式)有几个缺点使其无法成为主流:

  • VLIW 指令集在实现之间不向后兼容。 当构建更广泛的实现(更多执行单元)时,更广泛机器的指令集不会向后兼容旧的、更窄的实现。
  • 来自包含 CPU 缓存和 DRAM 的内存层次结构的加载响应没有确定性延迟。 这使得编译器对加载指令的静态调度变得非常困难。

EPIC 架构从 VLIW 架构演变而来,但保留了超标量架构的许多概念。

超越 VLIW

EPIC 架构增加了几个特性来解决 VLIW 的不足:

  • 每组多个软件指令称为一个包。 每个包都有一个停止位,指示后续包是否依赖于这组操作。 有了这个功能,未来的实现可以构建为并行发布多个捆绑包。 依赖信息是由编译器计算出来的,所以硬件不需要进行操作数依赖检查。
  • 软件预取指令用作一种数据预取。 这种预取增加了加载缓存命中的机会,并且可以指示缓存的各个级别所需的时间局部性程度。
  • 推测性加载指令用于在知道数据是否会被使用(绕过控制依赖性)或是否会在使用前被修改(绕过数据依赖性)之前推测性地加载数据。
  • 检查加载指令通过检查推测加载是否依赖于以后的存储来帮助推测加载,因此必须重新加载。

EPIC 架构还包括一系列用于提高 ILP 的架构概念:

  • 预测执行用于减少分支的出现并增加指令的推测执行。 在此功能中,分支条件被转换为谓词寄存器,用于从未采用的分支一侧终止执行指令的结果。
  • 延迟异常,在通用寄存器中使用一个 not a thing 位,允许推测执行过去可能的异常。
  • 非常大的架构寄存器文件避免了寄存器重命名的需要。
  • 多路分支指令通过将许多备选分支组合成一个包来改进分支预测。

Itanium 架构还添加了旋转寄存器文件,这是一种对软件流水线很有用的工具,因为它避免了手动展开和重命名寄存器。

显式并发指令运算

其他研发

对 EPIC 架构的其他研究与 Itanium 架构的开发没有直接关系:

  • 由 Wen-mei Hwu 领导的伊利诺伊大学厄巴纳-香槟分校的 IMPACT 项目是关于这一主题的许多有影响力研究的来源。
  • HP 实验室的 PlayDoh 架构是另一个主要研究项目。
  • Gelato 是一个开源开发社区,学术和商业研究人员在其中致力于为运行在
0

点评

点赞

相关文章