使用硬件指针的simd核心中的发散分支解决方案的制作方法

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