顯式並行指令運算

显式并行指令运算（，縮寫：EPIC）是一种指令集架构，是1997年由惠普-英特尔安腾联盟（）创造的一个术语
，用来描述一个自1980年代早期以来研究人员一直在探索的计算范式。
这个范式也被称为“独立”（）架构。它是英特尔和惠普开发英特尔Itanium架构的基础，
而惠普后来声称“EPIC”只是Itanium架构的一个旧术语。
EPIC允许微处理器通过使用编译器而不是复杂的芯片内电路来控制并行指令执行，从而并行执行软件指令。这旨在实现简单的性能扩展，而无需依赖更高的时钟频率。

 原理 
其指令中有3位是用来指示上一条运算指令是不是与下一条指令有相关性，是不是要等上一条指令运行完毕后才能运行下一条，如果没有相关性，则两条指令可同时由不同的CPU节点来处理，这样的方式大大提高了CPU并行运算的效率。

 实现 
EPIC成为IA-64架构的基础（IA代表Intel Architecture，即英特尔架构，与IA-32对应），这是英特尔与惠普共同开发的纯64位微处理器。英特尔的安腾（Itanium）系统处理器采用了这种架构。

基于VLIW的根源
到1989年，惠普的研究人员认识到精简指令集计算机（RISC）架构在每个周期只能执行一条指令，达到了极限。他们开始研究一种新架构，后来被命名为EPIC。研究的基础是VLIW，其中每条指令中编码了多个操作，然后由多个执行单元处理。

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

VLIW（至少原始形式）有几个缺点，使其未能成为主流：
 VLIW指令集在不同实现之间不向后兼容。当构建更宽的实现（更多执行单元）时，宽机器的指令集与较旧的、较窄的实现不向后兼容。
 从包括CPU缓存和DRAM的内存层次加载响应没有确定的延迟。这使得编译器对加载指令的静态调度变得非常困难。

EPIC架构源于VLIW架构，但保留了许多超标量架构的概念。

超越VLIW
EPIC架构增加了几个特性以克服VLIW的不足：
 每组多个软件指令称为一个捆绑包。每个捆绑包都有一个停止位，指示该操作集是否被后续捆绑包依赖。通过这种能力，未来的实现可以并行发出多个捆绑包。依赖信息由编译器计算，因此硬件不必执行操作数依赖检查。
 软件预取指令作为一种数据预取使用。此预取增加了加载时缓存命中率的机会，并可以指示在各级缓存中所需的时间局部性程度。
 投机加载指令用于在尚不确定数据是否会被使用（绕过控制依赖）或在使用之前是否会被修改（绕过数据依赖）时，投机性地加载数据。
 检查负载指令通过检查一个投机负载是否依赖于后续存储，从而帮助投机负载，因此必须重新加载。

EPIC架构还包括一系列建筑概念，以增加ILP：
 基于条件的执行用于减少分支的发生并增加指令的推测执行。在此功能中，分支条件被转换为谓词寄存器，这些寄存器用于消除未被采取的分支一侧已执行指令的结果。
 延迟异常，使用通用寄存器中的一个非事物位，允许在可能的异常之后进行推测性执行。
 非常大的架构寄存器文件避免了寄存器重命名的需求。
 多路分支指令通过将多个替代分支组合成一个捆绑来提高分支预测。

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

其他研发
还有其他对EPIC架构的研究，这些研究与Itanium架构的发展没有直接关系：
 伊利诺伊大学厄本那-香槟分校的IMPACT项目，由Wen-mei Hwu领导，是该主题上许多有影响力研究的来源。
 HP-labs的PlayDoh架构是另一个重要的研究项目。
 Gelato是一个开源开发社区，学术和商业研究人员在其中合作开发更有效的编译器，以支持在Itanium服务器上运行的Linux应用程序。

另见
 複雜指令集電腦（CISC）
 精简指令集计算机（RISC）
 （MISC）
 超长指令字（VLIW）

 单一指令计算机（OISC）
 计算机系统结构
 超純量


参考文献

外部链接
 EPIC 的历史背景
 马克·斯莫瑟曼（2002）《理解 EPIC 架构和实现》

Category:微處理器