定义
并行指令代码 (EPIC:explicitly parallel instruction code):在计算机的一个指令周期内可以执行多于一条指令。 CPU每取出并执行一条指令,都要完成一系列的操作,这一系列操作所需的时间通常叫做一个指令周期,也就是从取指令、分析指令到执行完所需的全部时间。1主要是为了减少程序的执行时间和提高资源利用率。如我们比较熟悉的英特尔的64位芯片架构就是一个并行指令代码架构。
指令的分类在计算机中,指令:指令是指计算机能够识别并执行的某种操作的命令,指令一般由:操作码,操作数及下一个指令的地址组成。指令一般分为以下几类:
传送类指令
传送类指令包括数据传送指令、数据交换指令、堆栈操作指令等。
算术运算类指令
算术运算类指令可提供加、减、乘、除4种基本算术运算的操作指令。这些指令可实现字节或字的运算,符号数和无符号数的运算,加1、减l运算,比较运算,各种校正操作,以及十进制的算术运算。
逻辑运算指令
逻辑运算指令可以提供与、或、test、异或、取反等操作指令。
移位、循环类指令
移位类指令和循环类指令也是汇编语言巾常用的指令。
程厚控制类指令
程序控制类指令主要是指程序转移指令、子程序调用、返回等一系列指令。这是一类非
常重要的指令.是实现程序结构的基础。
处理器控制指令
处理器控制指令用来控制与协处理器之间的交互作用,修改标志寄存器,以及使处理器
与外部设备同步等。
串操作指令
在存储器中存放的一串字或字节可以是二进制数,也可以是删码或侧I码。它们存放在某一个连续的内存区中,若对它们的每字或字节均进行同样的操作,该操作就称串操作。
位操作指令
位操作指令是对菜一位进行操作的指令,也就是对一个字(字节)中的某一位进行操作
的指令。
其他指令
除上面所介绍的常用基本指令外,硬件技术的发展和多媒体技术的兴起,还要求CPU能够处理单指令多数据流(SIMD)。因此,在CPU中还会设置一些功能更强的专用指令,如数据转换指令、特权指令、数字信早处理(DSP)指令、SIMD多媒体指令集(MMX)、路z(多数据流SIMD扩展指令集)、路E2、SSK3、SSE4等。它们构成当今的IntelCPU指令系统,使得现在的计算机具有高速的多媒体处理能力,使计算机的应用更为广泛。1
指令并行技术以减少程序运行时间为目的,发现和利用程序中的并行性,这样的过程称为并行处理(Prallel Processing)。通俗地讲,并行处理就是用计算机多个资源的同步应用来解决计算问题。
指令级并行(Instruction—Levcl—Parallelism)是指在指令序列中存在的潜在并行性。现阶段,几乎所有的处理器部采用丁流水线的方式,要保证流水线的性能,就要尽可能少地发生流水线停顿。作为流水线技术的扩展,指令级并行技术是研究的一个重点,它主要是发现指令序列之间的并行性并进行指令级的并行处理,以达到提高计算机性能的目的。指令级并行性又称纲粒度并行,而粗粒度主要指程序间的并行性。存储器的访问指令、整型指令、浮点指令之间的并行性等都属于指令级并行。
循环展开
循环展开的基本原理是把循环体代码展开,通过多次复制循环体代码并调整循环出口代码而得到一个新的循环体。所以,可以把循环展开看作是一种循环变换。展开后的循环体包含更多的指令,可以使编译器更加方便地发现互不相关的指令并进行并行处理;同时,循环展开后循环体内的代码被重复执行的次数相对减少了,这意味着循环展开可以减少循环转移的开销。
动态指令调度
动态指令调度是由硬件在程序实际运行时实施的,它通过硬件重新安排指令的执行顺序,绕过或防止数据相关导致的错误,减少处理器空转,提高程序的并行性。采用由硬件实现的动态指令调度方法可以对编译阶段无法确定的相关进行优化,从而简化了编译器的工作。这样,代码在不同组织结构的机器上,同样可以有效地运行,即提高代码的可移植性。当然,动态指令调度的这些优点是以显著提高的硬件复杂度为代价的。
动态分支预测
动态分支预测的基本思想就是通过分支指令的历史记录来进行当前分文指令的预测,历史记录中记录的内容可能包括分支指令最近一次或多次是否转移成功的信息、转移成功的目标地址、目标地址处的一条或多条指令,根据不同处理器的需要,历史记录中可能包括以上内容的一种或多种信息。那么很明显,动态分支预测技术的两个关键技术一个是如何记录分支指令的历史记录信息,另一个是如何根据历史记录的信息预测分支指令的转移方向。大多数的分支指令在真正执行后会根据预测情况和实际执行情况对历史记录进行修改。当某条流水指令执行时,根据指令的地址查找历史记录,“该指令是否是分支指令?”“如果是,之前执行该指令时是否转移成功?”根据查找的结果,对那些分支指令的转移是否能够成功进行预测。2
EPIC体系结构EPIC体系结构是VLIW(Very LongInstruction Word,超长指令字)体系结构的延伸,同时还结合了RISC体系结构的优点。VLIW(处理器在数值计算方面具有很大的优势,而RISC处理器可以高效地处理分支密集型的标量应用程序,因此EPIC处理器吸收了两者的长处,在科学计算和通用程序领域都具有高性能的处理能力。它的基本思想是最大眼度地提高软硬件之间的合作,增强微处理铝体系结构与编译软件的合力,从而提高计算机系统的并行处理机能力。编译器会先分析源代码,检查指令依赖情况,从源代码中最大程度地挖掘指令级的并行性,确定可以做并行处理的指令,然后把并行指令放在一起并重新排序,提取并调度其指令级的并行。EPIC编译器将这种并行性“显性”地告知硬件设备,硬件只需按序高速并行处理其指令和数据,由此可见,EPIC编译器等价于协调并行工作必需的一部分控制电路。
IA—64是HP公司和Intel公司合作开发的新一代64位体系结构,它是CPIC体系结构的第一个商业版本,用于安腾(Itan5um)处理器上。 P面简要地概括了这种体系结构的技术特点,这里用IA—64来指代EPIC体系结构。它主要有以下特点:
显性并行
大量的寄存器
编译器与处理器的通信
改进的“分支预测”技术
猜测执行
高效的函数调用
软件流水2