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

原理

编辑

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

实现

编辑

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

基于VLIW的根源

编辑

到1989年,惠普的研究人员认识到精简指令集计算机(RISC)架构在每个周期只能执行一条指令,达到了极限。[需要解释]他们开始研究一种新架构,后来被命名为EPIC。[3]研究的基础是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应用程序。

另见

编辑

参考文献

编辑
  1. ^ Schlansker and Rau. EPIC: An Architecture for Instruction-Level Parallel Processors (PDF). HP Laboratories Palo Alto, HPL-1999-111. February 2000 [2008-05-08]. (原始内容存档 (PDF)于2012-06-12). 
  2. ^ US 4847755,Morrison, Gordon E.; Christopher B. Brooks & Frederick G. Gluck,「Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies」,发表于1989-07-11,指定于MCC Development Ltd. 
  3. ^ 3.0 3.1 Inventing Itanium: How HP Labs Helped Create the Next-Generation Chip Architecture. HP Labs. June 2001 [2007-12-14]. (原始内容存档于2012-03-04). 
  4. ^ De Gelas, Johan. Itanium–Is there light at the end of the tunnel?. AnandTech. November 9, 2005 [2008-05-08]. (原始内容存档于January 13, 2006). 

外部链接

编辑



📚 Artikel Terkait di Wikipedia

單指令流單數據流

Parallel Architectures." Parallel Programming in C with MPI and OpenMP.Boston: McGraw Hill, 2004. ISBN 0-07-282256-2 Ibaroudene, Djaffer. "Parallel Processing

Processing

Processing是一种开源编程语言,专门为电子艺术和视觉交互设计而创建,其目的是通过可视化的方式辅助编程教学,并在此基础之上表达数字创意。Processing也指Processing语言的集成开发环境(IDE)。2001年,MIT媒体实验室的 Casey Reas 和 Benjamin Fry

并行计算

并行计算机可以根据硬件支持并行的级别进行大致分类。多核计算机与多处理器计算机在一台机器内部拥有多个处理单元(英语:processing element);而计算机集群、大规模并行处理系统(英语:Massively parallel (computing))(MPP)和网格计算则调动多台计算机协同处理同一任务。有时,传统的

图 (数据结构)

HENDRICKSON, BRUCE; BERRY, JONATHAN. Challenges in Parallel Graph Processing. Parallel Processing Letters. March 2007, 17 (1): 5–20. ISSN 0129-6264. doi:10

GNU parallel

维基共享资源中相关的多媒体资源:GNU parallel xargs pexec PPSS - (Distributed) Parallel Processing Shell Script (页面存档备份,存于互联网档案馆) Tange, Ole. GNU Parallel 20220322 ('Маріу́поль')

高效率视频编码

片的主要目的是允许并行处理。图块可以独立解码,甚至可以允许随机访问影像流中其图片的特定区域。 波前并行处理 (Wavefront parallel processing) 是指将切片分成多行编码树单元,除第一行解碼外,而後每一行都需要在前一行中做出决定。波前并行处理具有来自前一行编码树单元的熵编码

唐纳德·布鲁斯·约翰逊

B., Deterministic leader election on the asynchronous QRQW PRAM, Parallel Processing Letters, 1996, 6 (2): 247–250, doi:10.1142/S0129626496000248 . Johnson's

Slurm工作调度工具

Navaridas, Javier; Miguel-Alonso, Jose. Job Scheduling Strategies for Parallel Processing. Lecture Notes in Computer Science 5798: 138–144. 2009. ISBN 978-3-642-04632-2