欢迎来到天天文库
浏览记录
ID:37840823
大小:426.10 KB
页数:62页
时间:2019-06-01
《浙江工商大学计算机体系结构第2章指令级并行及其开发》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2章指令级并行及其开发指令级并行概念支持指令级并行的基本编译技术预测技术动态调度基于硬件的推测多发射技术指令传送和推测高级技术2.1指令级并行概念指令级并行(ILP,instruction-levelparallelism)产生于80年代中期,处理器采用流水线方式使指令的执行可以重叠进行,可以将指令间的关系看做是并行的,指令间潜在的重叠称为~指令级并行方法分为两类:一种依赖于硬件,动态地发现和开发指令级并行;另一种依赖于软件技术,在编译阶段静态地发现并行。前一种占主导地位,后一种局限于科学或特定领域。2.1指令级并行概念循
2、环级并行为了提高指令级并行,最常用的方法是将一个循环中的各次迭代并行执行,通常将这类并行称为循环级并行。在循环中,每个迭代可以与其他任何一次迭代重叠执行,在每次迭代内部没有重叠。2.1指令级并行概念数据相关和冒险要判断一段程序蕴含多少并行度,判断指令的相关性是一个关键问题,特别是在开发指令级并行时必须明确哪些指令是可以并行执行的。两条指令是并行的是指流水线有充足资源的情况下,这两条指令可以在任意深度的流水线上并行执行而不会产生停顿。两条指令是相关的,是指它们只能以顺序的方式执行,尽管它们之间只存在部分重叠。2.1指令级并行概
3、念数据相关相关有三种不同的类型:数据相关、名字相关和控制相关数据相关,也称为真数据相关,比如有两条指令j和i,指令j可能会引用指令i的结果或指令j数据相关于指令K,而指令k数据相关于指令i,则称指令j数据相关于指令i2.1指令级并行概念数据相关数据相关的两条指令是不能同时执行或完全重叠的,相关意味着在两条指令之间可能可能存在一条由一个或多个数据冒险组成的相关链(见附录A);同时执行数据相关的指令会使内部互锁流水线的处理器检测到冒险,造成停顿,从而减小甚至消除指令间的重叠度数据相关传递三方面的信息:1)数据相关表明存在冒险的可
4、能,2)数据相关决定了必须遵循的执行顺序,3)数据相关决定了可以达到并行度的上限2.1指令级并行概念名字相关名字相关发生在使用相同存储器或存储单元(称为名字)的两条指令之间,但名字相关的指令间不存在数据流,名字相关有两种类型(假设指令i位于指令j之前):1、反相关指令i读一个寄存器或存储单元,而指令j写该寄存器或存储单元,必须保护原始的指令执行顺序。2、输出相关指令i和指令j写相同的寄存器时,为了保证该寄存器的值最后是由指令j写入的,必须保护指令的执行顺序。2.1指令级并行概念控制相关控制相关决定了于转移指令有关的指令的执行
5、顺序,从而使与转移有关的指令只在应当被执行时按程序顺序执行,最简单的控制相关例子:ifp1{S1;}ifp2{S2;}2.1指令级并行概念控制相关控制相关会带来两类限制:1、与某一转移相关的指令不能被移动到该转移之前,这样的移动会使指令的执行不再受控于该转移,比如不能将if语句的then部分中的指令移动到if语句之前2、与某一转移相关的指令不能被移动到该转移之后,这样的移动会使指令的执行受到该转移的控制,不能将if语句之前的指令移动到受控于该if语句的then部分中2.1指令级并行概念数据冒险依据指令读写顺序,数据冒险可以分
6、为三类,写后读、写后写、读后写。写后读(RAW)J试图在i写一个数据之前读取它,这时j将错误地读出旧值,RAW是最常见的冒险类型,它对应于真实的数据相关写后写(WAW)J试图在i写一个数据之前写该数据,这时,如果执行顺序错误,那么当写操作结束时,留下的值将是i写的结果,而程序的本意是留下j写的值2.1指令级并行概念数据冒险读后写(WAR)J试图在i读一个数据之前写该数据,这时,i将错误地读出新值,这类冒险是由反相关引起的。WAR不会发生在静态流水线中,因为在静态流水线中,所以的读操作发生的早,写操作发生的晚(见附录A)。只有
7、在指令流水过程中一些指令的写操作提前完成、或者其他指令的读操作滞后完成、或者指令顺序被改变的情况下,才会发生WAR冒险读后读(RAR)不产生冒险2.2支持指令级并行的基本编译技术基本流水线调度为了避免流水线停顿,要去发现可以流水重叠的不相关的指令序列,将指令代码中相关的指令加以分离,使其相隔的时钟周期能正好等于原来指令在流水执行时的时延。编译器进行这类调度的能力既依赖于程序的指令级并行度,也依赖于流水线中功能单元的时延。2.2支持指令级并行的基本编译技术循环展开循环展开可以增加有效操作对转移和开销指令的比重,展开可以通过多次
8、复制循环体和调整循环中止代码来实现。循环展开也可以用来改进调度的效果,由于它消除了转移,因此来自不同迭代的指令可以被一起调度,可以在迭代内加入不相关的指令来消除数据相关引起的停顿。2.2支持指令级并行的基本编译技术循环展开和调度小结1、如果迭代之间是互不相关的,则可以判定循环展开是有意义的
此文档下载收益归作者所有