指令级并行
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指令级并行
我们知道,要从系统结构上提高计算机的性能,就必须设法以各种方式挖掘计算机工作的并行性。
并行性又有粗粒度并行性(coarse-grained parallelism)和细粒度并行性(fine-grained parallelism)之分。
所谓粗粒度并行性是在多处理机上分别运行多个进程,由多台处理机合作完成一个程序。
所谓细粒度并行性是在一个进程中进行操作一级或指令一级的并行处理。
这两种粒度的并行性在一个计算机系统中可以同时采用,在单处理机上则用细粒度并行性。
指令级并行概念
指令级并行(Instruction-Level Parallelism, ILP),是细粒度并行,主要是相对于粗粒度而言的。
顾名思义,指令级并行是指存在于指令一级即指令间的并行性,主要是指机器语言一级,如存储器访问指令、整型指令、浮点指令之间的并行性等,它的主要特点是并行性由处理器硬件和编译程序自动识别和利用,不需要程序员对顺序程序作任何修改。
正是由于这一优点,使得它的发展与处理器的发展紧密相连。
指令级并行技术突破了每个时钟周期完成一条指令的框框,做到在单处理机上每个时钟周期能完成的指令数平均多于一条。
我们已知道,向量处理机进行的是细粒度的并行处理,它在处理向量时由于采用了流水线,多功能部件河链接技术,能够做到每个时钟周期完成多个操作,相当于多条指令。
但它在处理标量时,效率将大大降低,有时甚至还不及一个普通的通用计算机。
现在几种新的系统结构设计,其基本思想是要挖掘指令级并行,使单处理机达到一个时钟周期完成多条指令。
指令级并行性的含义可用下面的例子来说明:
(1)Load C1←23(R2)
Add R3←R3+1
FPAdd C4←C4+C3
并行度=3
(2)Add R3←R3+1
Add R4←R3+R2
Store R0←R4
并行度=1
上例中,(1)的三条指令是互相独立的,它们之间不存在数相关,所以可以并行执行。
反之,(2)的三条指令中,第2条要用到第1条的结果,第3条要用到第2条的结果,它们都不能并行执行。
(1)的并行度为3,它存在指令级的并行性。
(2)的并行度为1,指令间没有并行性。
如果能把程序中存在度指令级并行性挖掘出来,加以利用,就能达到一个机器周期执行几条指令的目
的。
有一个与指令级并行性有关的指标,叫做CPI(每条指令的周期数)。
它是在流水线中执行一条指令所需的机器周期数。
CPI是随指令执行的内容不同而异的,像在RISC机中,大多数指令的CPI大于1。
可以用平均CPI来说明一台处理机的速度性能。
平均CPI来说明一台处理机的速度性能。
平均CPI 是把各种类型的指令需要的机器周期按一定的混合比加权(即出现的频度)后计算而得。
它同经常用于表示处理机速度的MIPS(每秒百万条指令)关系是:f/CPI=MIPS。
上式中f是时钟频率(以MHz为单位)。
例如:f=300MHz,CPI=0.6,则处理机可达到300/0.6=500MIPS。
开发指令级并行(IPL)来提高效率在60年代最早的管道处理机就开始了,在80和90年代,对效率的快速提高这些技术是很关键的。
实现指令级并行处理的技术
实现指令级并行处理的技术主要有两种:超级标量(superscalar)计算机,另一种是超长指令字(Very Large Instruction Word,VLIW)计算机。
超级标量计算机同超长指令字计算机有相同之处,他们都有多个可以并行操作的执行部件,利用指令级并行性来提高计算机的速度,一个机器周期可以完成多条指令。
两者之间的最基本区别在于并行操作执行在什么时候决定(即调度)。
在超级标量结构中,利用硬件支持在程序执行过程中将多个指令操作发送到并行的执行单元。
超级标量硬件通常还支持深度流水线的动态调度。
在VLIW结构中,则在软件编译时由编译器决定,即由编译器进行并行指令调度。
超级标量结构对于那些已经有大量现有软件基础,而且这些软件不可能重新编译生成新的二进制代码的处理器非常适合。
虽然超级标量可以达到很高程度的并行,但就性能、硬件和功率成本来说,每次应用执行都有额外的开销。
对于直线式代码,当流水线级被填满时存在很大的性能代价。
不幸的是,对于任何生产级DSP应用来说都存在大量分支和条件执行指令,此时深度流水线会造成极大的延迟开销。
VLIW结构对于针对处理器重新编译的应用代码非常适合。
嵌入式应用在固定到芯片中以前通过会进行重新编译,在嵌入式DSP中,通常是这样的。
对于VLIW,决定和调度并行操作的开销只出现一次,即在应用的编译过程中。
超级标量方法的支持者通常认为超级标量结构具有代码密度优势,因为可保持代码简洁,并可即时实现并行操作调度。
在VLIW方法中,在长指令字中可能会存在在某一时钟周期中用不到的代码开销。
然而,几乎每一家VLIW处理器供应商都提供某种形式的指令压缩方法来减少这种开销。
在指令级并行程序执行模型方面,超长指令字和超标量处理器的编译器
都采用静态代码调度、软件流水或软硬件流水都方法开发程序的指令级并行性。
程序编译的主要任务是根据程序的串行代码进行并行指令调度和寄存器分配,但是不论采用哪种方法,由于调度问题本身的特征,完成上述3个功能的算法都是NP完全的,因而大部分算法都采用一定的启发式测略。
下面我们分别通过超级标量和超长指令字的实例来进行说明。
超级标量实例:MIPS处理器
MIPS R4000是最早推出的64位处理器之一。
SGI在收购MIPS(后MIPS 又独立)之后继续发展T系列的64位处理器,先后推出了R6000、R8000、R10000、R12000等型号。
以最初的R4000来说,R4000的指令仍为32位,R4000的页的大小是可变的,可在4KB~16MB间变化,而且可以以页为单位变化各个页的大小。
它的浮点的加法器、乘法器和除法器3个部件是分开的,这3个浮点部件可以互相重叠工作,也可以同定点运算重叠工作,但在一个周期内,只能有一个浮点运算流出流水线。
在同一位置进行读和写时,寄存器组可以把写入数据局部地旁路到读数总线上。
R4000中的指令流水线分8个站,它们是:IF——取指令(前半周期)、IS——取指令(后半周期)、RF——从寄存器取数、EX——执行、DF——取数(前半周期)、DS——取数(后半周期)、TC——核对标签数、WB——写回结果。
R4000流水线指令重叠情况如图所示:
图1 R4000超级流水线
在R4000的超级流水线结构中,其周期是机器主周期的一半,深度为8,遇到读数指令有2个周期的延迟。
流水线中对指令间的相关处理是靠硬件互锁来保证的,与它之前的R2000/R3000用软件来实现互锁不同。
MIPS R12000是超级标量的RISC微处理器,它采用ANDES(无序动态执行和调度)的体系结构。
在每个流水线周期内可对4条指令进行译码。
该微处理器有5条执行流水线分别连接到整数和浮点执行单元,并具有推理机
制及无序动态执行机制。
通过提高R10000设计的时钟速度以及保证应用性能相应提高的一些重要修改,在保持指令集与当前处理器兼容的同时,R12000设计将CPU的速度提高到400MHz。
另一些新的优化包括:将乱序指令的数量从32条增加到48条、增加了一个双向分支目标高速缓存,将分支预测表的规模增加了三倍。
代号为H1的R10000系列(包括R12000)之后的下一代处理器系统,有效地消除了CPU与内存之间存在的瓶颈问题。
H1保持了与MIPS IV R10000系列编码和指令集兼容性。
超长指令字实例:MAP-CA宽带数字信号处理器
MAP-CA是Equator公司MAP系列超长指令字处理器中的一种。
它在300MHz的时钟周期运行速度下,其处理能力为30 GOPS(每秒300亿次整数运算),处理速度相当于Pentium III的6.4倍,是其它解决方案的10倍以上。
其核心功能是通过软件为高性能、大视频流的宽带应用而设计的。
可编程序的芯片允许服务提供者展开更多的服务和功能,如time-shifting、安全媒体播放及有针对性的广告。
在高性能的宽带应用产品中如机顶盒、数字电视、视频会议系统、医疗图像产品、数字视频编辑系统和办公自动化等有着广泛的应用前景。
MAP-CA 宽带信号处理器(BSP)内部结构主要包含一个超长指令字处理器内核(The VLIW core)、一个可编程位流协处理器(The VLx)、视频滤波协处理器、显示刷新控制器和丰富的数字I/O接口等。
MAP-CA的PCI总线接口与PCI 2.1规范完全兼容,最高数据传输率高达66Mbps。
PCI接口中的配置寄存器在芯片上电时由ROM控制其初始化。
MAP-CA的PCI接口作为PCI总线的目标设备时,通过PCI接口可以访问MAP-CA内部的SDRAM,还可以访问一些相对程序员透明的控制寄存器、PIO空间等。
作为PCI主控器,PCI接口可以用超长指令字内核(VLIW core)、协处理器来初始化PCI总线请求,还可以发起内存、I/O和配置命令。
MAP-CA 可以作为PCI总线上的主机。
它有三对申请/应答信号线,使得在多处理器系统应用中最多可以有4个MAP-CA同时接到PCI总线上而不需要任何中间转接装置。
MAP-CA是一个单一3.3V供电的器件,如果在5V PCI总线结构系统中使用,需要一个3。
3V~5V的电平转换芯片即可。
ROM控制器接口单元(ROMCON)有以下四种不同的功能:1、作为MAP-CA的配置和启动电路的接口,在系统启动时读取系统配置并启动程序。
2、作为FLASH ROM接口,控制片外FLASH ROM的读写操作。
3、作为中断控制和仲裁逻辑,控制软件和硬件产生的VLIW核及PCI总线中断的使能、设置和清除。
4、作为内部可编程寄存器的访问接口,可以实现对内部可编程寄存器的访问。
指令级并行研究的展望
从目前的形势看,开发指令级并行性的处理器中,由于VLIW结构的处理器不具有目标代码的兼容性,超标量处理器就占绝对优势。
今后,VLIW 结构的处理器如果仍不能解决这一主要问题,也不会有多大的起色。
最近几年出现的TTA,DS,PEWs,MISC,Multiscalar等结构,要么仅仅是一种概念型结构,要么缺乏目标代码的兼容性,因此也很难在通用处理器市场上与超标量处理器一争高低,最终的命运只能与VLIW相同。
然而,超标量处理器要想开发出更多的指令级并行性,获取更高的IPC (Instructions Per Cycle),必需解决如下三个主要问题:及时提供指令,及时提供数据,增大程序中的并行性。
为了及时提供所需的指令,一个可能的途径是借助编译技术增大基本块,这等价于减少转移指令,使指令流被中断的机会减少。
另一种途径是进一步优化转移处理策略,比如说转移预测的准确率。
对超标量处理器性能影响最严重的是转移指令,由于5%的误预测率都会带来较高的性能损失,因此如何在允许的条件下提高转移预测率,对超标量处理器性能都会带来较高的性能损失,因此如何在允许的条件下提高转移预测率以及探索别的处理转移指令的方法,将是今后的主要方向。
为了及时提供所需的操作数,必需有较好的数据预取策略和更为有效且命中率更高的Cache结构和存储系统。
增大程序中并行性,最主要的是增大基本块的大小。
途径之一是采用新的编译技术如超块技术等来增大程序的基本块。
途径之二是采取如多条件码域和条件式执行等更为有效的转移指令的同时预测也是一个非常有希望的方向。
除此之外,由于多存储体系的使用,处理器的通讯延迟有随处理器性能提高而增大的趋势,且INTERNET日益普及,使得与外界的交流、通讯越来越重要,因此,在提高处理器性能的同时,减少通讯延迟将是未来的发展方向。
参考文献
1 The MAP-CA VLIW-based Media Processor White Paper.Equator Technologies Inc
and Hitachi Ltd.
2 一个基于软件流水并行性技术的VLIW体系结构苏伯珙汤志忠等著计算机
学报1992
3 计算机体系结构——指令级并行(IPL)的研究电子周刊2001
4 超长指令字技术顾慧计算机学报2000
5 计算机系统结构孙强南等科学出版社2000
6 指令级并行发展与展望胡良校陈耀强计算机科学2000。