[发明专利]分级循环指令有效

专利信息
申请号: 201310268022.1 申请日: 2013-06-28
公开(公告)号: CN103530088A 公开(公告)日: 2014-01-22
发明(设计)人: M·G·佩尔金斯;A·J·希格哈姆 申请(专利权)人: 美国亚德诺半导体公司
主分类号: G06F9/30 分类号: G06F9/30
代理公司: 中国国际贸易促进委员会专利商标事务所 11038 代理人: 冯玉清
地址: 美国马*** 国省代码: 美国;US
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 分级 循环 指令
【说明书】:

技术领域

发明的实施例总体上涉及硬件并行性(hardware parallelism)的有效使用,更特别地,涉及循环展开以及软件流水线技术。

背景技术

编译器获取高级通用语言(诸如C、C++或Java)编写的计算机源代码并且将其转换成低级机器特定的对象代码。针对简单的单核处理器编译代码可包括相对直接地将高级指令一对一地转换成低级指令。例如,访问C++类中的数据可被编译成地址算法和存储器访问机器级指令。

然而,针对具有多个功能单元或支持矢量处理的处理器编译代码可能更复杂得多。一般目标是通过使每个核(和/或每个处理器、执行单元以及流水线,这根据给定设备的具体硬件而言)尽可能地忙碌来尽可能快地运行所编译的程序。然而,该目标要求原始以串行/序列写成的指令被编译为并行地运行,并非所有指令能够同时执行。例如,如果用于第二指令的输入取决于第一指令的结果,那么第一指令和第二指令不能并行运行;第二指令必须等候第一指令完成。

“智能”编译器识别能够并行运行的指令并且创建被剪裁来并行运行的机器代码(明确地说,诸如针对超长指令字VLIW处理器产生的代码,或者含蓄地说,针对超标量(superscalar)处理器产生的代码)。可并行化情形的两个大类包括(i)表现出指令级并行性的指令和(ii)表现出数据级并行性的指令。指令级并行性指的是两个或更多指令对彼此的输出没有依赖性且因此可以被并行地计算。数据级并行性指的是对数据的集合(即,矢量)执行操作,其中对集合成员的单独操作不依赖于涉及其它成员的操作。例如,为了将两个矩阵加在一起,矩阵元素的数据级并行性可以用于并行地运行元素相加指令中的一些或全部,因为元素级别的相加操作是独立的。

编译器实现指令级和数据级并行性的一个途径是利用源代码中编写的循环(例如,for和while循环)。循环的两次或更多次迭代可以并行地执行(即“矢量化”,其利用数据级并行性)和/或循环的连续迭代可以部分地重叠(即“软件流水线技术”,其利用指令级并行性)。用于软件流水线技术的一种有用的算法是“模数调度”。关于矢量化,for循环(例如)可调用十次迭代;如果每次迭代中运行的指令独立于其它迭代的那些指令,并且如果编译器可访问例如五个处理元件,那么编译器可创建并行地在五个处理元件的每个处执行循环的两次迭代的汇编代码。关于软件流水线技术,例如,如果循环包括两个指令,但是第一指令不依赖于前一迭代的第二指令的结果,则循环的下一迭代的第一指令可被调度为与循环的当前迭代的仍在执行的第二指令并行地运行。

矢量化和软件流水线技术的一个缺点是它们增大了所执行的代码的大小。矢量化需要应付循环的余数大小的最终迭代的代码(例如,如果循环需要十一次迭代且五个处理元件可用,那么最后的迭代仅使用处理元件之一)。这种“部分填充的”最终迭代可能不仅仅是效率低的问题;许多大规模处理器阵列被调谐成期望稳定的有效数据流,个体处理元件可能不那么容易被关闭。软件流水线技术在可运行一组有效率的核心指令(循环内核(loop kernel))之前需要构造指令(set-up instruction)(循环序言(loop prolog))来准备硬件环境,在运行之后还需要开销指令(overhead instruction)(循环尾言(loop epilog))来析构循环并且整理硬件环境以用于进一步的指令。在许多情况下,该附加的开销代码可能大于循环内核代码本身,并且在具有有限的指令高速缓存或缓存容量的处理器上,可能降低性能。另一缺点是对具有可变迭代次数(称为循环的“行程计数”)的循环的处理较差;因为在编译时不能知晓行程计数,所以在运行时需要行程计数的各种测试,由此增大了程序的运行时间(尤其是在最终行程计数表现为小的时候)。

试图解决这些缺点的已有系统仅可产生进一步的缺点。例如,一些处理器(例如,矢量处理器)实施一种方法,该方法在循环的最后迭代中选择性地禁用个别处理元件。然而,在循环的最后迭代中禁用处理元件与软件流水线技术不合,流水线技术使来自循环内核中的各迭代的指令重叠。另一些系统通过将循环指令储存在固定大小的缓存中并且发布特殊循环指令来表达循环的构造、析构和稳定状态,但是这些系统不仅限制了循环内核的大小(基于固定缓存的大小),而且还不能处理更复杂的循环(诸如需要寄存器重命名的那些循环)。还有另一些系统使用一组复杂的旋转硬件寄存器来处理复杂的循环,但是这些寄存器从处理器的其它部分占据了宝贵的占用面积。因此,存在对更有效地执行任意大小和复杂度的循环内核的方法的需要。

发明内容

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于美国亚德诺半导体公司,未经美国亚德诺半导体公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201310268022.1/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top