并行管道中的发散分支的硬件和软件解决方案制造技术

技术编号:12357738 阅读:67 留言:0更新日期:2015-11-20 13:25
一种用于在处理器内部的硬件并行执行道上有效地处理指令的系统和方法。响应于已识别的循环内部的给定发散点,编译器将所述已识别的循环内部的指令布置到超长指令字(VLIW)中。至少一个VLIW包括由所述给定发散点和对应汇聚点之间的不同基本块混合的指令。所述编译器生成代码,其中当被执行时,所述代码在运行时将给定的VLIW内部的指令分配给目标处理器内部的多个并行执行道。所述目标处理器包括单指令多数据(SIMD)微型体系结构。对给定的道的分配是基于运行时在所述给定分散点处针对所述给定的道发现的分支方向。所述目标处理器包括用于存储指示的矢量寄存器,所述指示指示了已提取的VLIW内部的哪个给定指令用于相关联的道来执行。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】 背景
本公开涉及计算系统,并且更具体地说,涉及在处理器内部的硬件并行执行道上 有效地处理指令。 背景 任务的并行化被用来增加计算机系统的吞吐量。为此,编译器可从程序代码中提 取并行化的任务以在系统硬件上并行执行。为了增加在硬件上的并行执行,处理器可包括 多个并行执行道,如单指令多数据(SIMD)微型体系结构。与单道微型体系结构或通用微型 体系结构相比,这种类型的微型体系结构可以为特定的软件应用程序提供更高的指令吞吐 量。受益于SHffi微型体系结构的任务的一些实例包括视频图形渲染、加密和垃圾回收。 在许多情况下,特定的软件应用程序具有数据并行性,其中每个工作项目的执行 或并行函数调用在自身内部是数据相关的。例如,第一工作项目可数据独立于第二工作项 目,并且第一工作项目和第二工作项目中的每一个被同时安排在SHffi微型体系结构内部 的单独并行执行道上。然而,在第一工作项目和第二工作项目中的每一个内部执行的指令 量可以是数据相关的。实施为分支指令的条件测试可针对第一工作项目通过,但是针对取 决于每个工作项目的数据的第二工作项目未通过。由于第二工作项目在第一工作项目继续其正在进行的执行时停止执行并且等待, 并行执行的效率可能被降低。当只有少数工作项目由于已通过测试而继续执行,而大部分 工作项目由于未通过测试而空闲时,低效率增长。 实施方案概述 本专利技术涵盖用于在处理器内部的硬件并行执行道上有效地处理指令的系统和方 法。在各种实施方案中,后端编译器检查软件应用程序的程序指令以布置指令并且生成代 码来在目标处理器上目有效地处理指令。目标处理器可包括单指令多数据(SHffi)微型体 系结构内部的多个并行执行道。编译器可识别循环和对应的基本块。循环内部的发散点可 包括分支指令。例如,在已识别的循环内部的程序指令中可以使用if-elseif-else构造、 if-else构造、条件构造等等。在执行发散点和对应汇聚点之间的已翻译的和已编译的程序 指令期间,可遍历多个跟踪路径。 在编译期间,响应于已识别的循环内部的给定发散点,编译器可将已识别的循环 内部的指令布置到一个或多个超长指令字(VLIW)中。至少一个VLIW可包括由给定发散点 和对应汇聚点之间的不同基本块混合的指令。例如,如果给定发散点和对应汇聚点之间存 在具有四个指令的基本块A和具有六个指令的基本块B,那么编译器可将指令排列到六个 VLIW中。前四个VLIW可包括来自基本块A和基本块B中的每一个的一个指令。第一VLIW 可包括来自基本块A和基本块B中的每一个的第一指令。第二VLIW可包括来自基本块A 和基本块B中的每一个的第二指令,以此类推。最后两个VLIW可包括与空(nop)成组的来 自基本块B的一个指令。编译器可追踪指向VLIW中的每一个的程序计数器(PC)值。 编译器可生成代码来与已翻译和已编译的程序指令一起插入。当被执行时,插入 的代码可在运行时将给定VLIW内部的指令分配给目标处理器内部的多个并行执行道。对 给定道的分配可基于在运行时在给定分散点处针对给定的道发现的分支方向。继续上述实 施例,如果VLIW是由基本块A和基本块B创建的第二VLIW并且给定的道的分支指令已被 接受,那么给定的道可被分配第二VLIW内部的基本块A中的第二指令。如果分支指令并未 被接受,那么给定的道可被分配第二VLIW内部的基本块B中的第二指令。在各种实施方案 中,VLIW具有可变长度。当被执行时,插入的代码可更新对应于下一个PC的VLIW的大小。 在一些实施方案中,处理器可包括单指令多数据(SHffi)微型体系结构内部的多 个并行执行道。所述处理器可包括大小寄存器,其用于存储可变长度VLIW的大小。处理器 内部的控制逻辑可在相应周期中提取并解码给定VLIW内部的某一数量的指令,所述数量 等于已存储大小。多个执行道可同时执行给定VLIW内部的所述数量的指令。处理器可另 外包括矢量寄存器,其具有与多个执行道中对应的道相关联的比特范围。所述比特范围可 存储偏移量。给定的偏移量可识别已提取的VLIW内部的指令。 参照以下描述和附图可以进一步理解这些实施方案和其他实施方案。 附图简述 图1是单指令多数据(SMD)管道执行流程的一个实施方案的概括性框图。 图2是控制流程图的一个实施方案的概括性框图。 图3是用于控制流程图的执行序列的一个实施方案的概括性框图。 图4是用于处理器的SHffi微型体系结构的逻辑布局的概括性框图。 图5是目标代码排列的一个实施方案的概括性框图。 图6是用于使用编译技术来优化多个工作项目在处理器中的并行执行的方法的 一个实施方案的概括性框图。 图7是用于使用硬件技术来优化多个工作项目在处理器中的并行执行的方法的 一个实施方案的概括性框图。 图8是目标代码排列的另一个实施方案的概括性框图。 虽然本专利技术容易有各种修改和替代形式,但通过举例方式在附图中展示特定的实 施方案并且在本文中对其进行详细描述。然而应理解,附图和对实施方案的详细描述并不 意图将实施方案限于所公开的特定形式,而相反,实施方案应涵盖属于由所附权利要求书 所界定的精神和范围内的所有修改、等同物以及替代方案。 实施方案详述 在以下描述中,阐述了许多特定细节以提供对实施方案的透彻理解。然而,本领域 的一般技术人员应当认识到,可能在没有这些特定细节的情况下实现实施方案。在一些情 况下,没有详细展示众所周知的电路、结构和技术以避免混淆实施方案。 参照图1,展示了示出单指令多数据(SM))管道执行流程100的一个实施方案的 概括性框图。指令102-108可被提取并且被发送至具有相关联数据的SHffi管道。展示了 并行的垂直执行道内部的多个计算单元。计算单元中的一些是活动的计算单元110。由于 在给定的管阶段期间被禁用,其他计算单元是不活动的计算单元112。为了便于说明,未展 示控制逻辑和存储元件,如管道寄存器。 硬件计算单元包括硬件,所述硬件进行具有相关联数据的给定工作项目的给定指 令的执行。这种硬件可包括算术逻辑单元,所述算术逻辑单元被配置来进行加法、乘法、零 检测、按位移位、除法、视频图形和多媒体指令或处理器设计领域的技术人员已知的其他操 作。在SHffi管道内部具有并行执行道的处理器的实施例包括图形处理单元(GPU)、数字信 号处理(DSP)等等。在一个实施方案中,SHffi管道可位于视频卡上。在另一个实施方案中, SHffi管道可集成在母板上。 SHffi管道可改进在游戏、娱乐、科学和医学领域中使用的广泛多种数据并行应用 的计算性能。这类应用通常需要在大量对象上执行相同的程序。因为每个对象独立于其他 对象被处理,但是使用相同的操作序列,所以SHffi微型体系结构提供相当大的性能增强。 GPU也被考虑用于非图形计算。 软件应用程序可包括函数调用或计算内核和内部函数的集合。软件程序员可定义 函数调用,而内部函数可在给定的库中被定义。例如,软件应用程序可在二维(2D)数据阵 列(如图像文件)上进行数据处理。软件应用程序可在2D图像的逐个像素基础上或者在 二维矩阵的逐个元素基础上进行由软件程序员开发的算法。给定的函数调用可在索引空间 上被调用。索引空间也可被称为维度空间。对于本文档来自技高网...

【技术保护点】
一种非暂时性计算机可读存储介质,其存储被配置用于由计算机系统的至少一个处理器执行的至少一个程序,其中所述至少一个程序包括可执行来进行以下操作的指令:识别多个程序指令内部的循环和对应的基本块;并且响应于已识别的循环内部的给定发散点,将所述已识别的循环内部的多个指令布置到多个超长指令字(VLIW)中,其中至少一个VLIW包括由所述给定发散点和对应汇聚点之间的不同基本块混合的指令。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:雷扎·亚兹达尼
申请(专利权)人:超威半导体公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1