在SIMD处理单元中的任务执行制造技术

技术编号:11640775 阅读:78 留言:0更新日期:2015-06-24 17:22
本发明专利技术的各实施例涉及在SIMD处理单元中的任务执行。一种SIMD处理单元处理多个任务,每个任务包括上至预定最大数目的工作项目。任务的工作项目被布置用于对相应数据项目执行公共指令序列。数据项目被布置成块,其中块中的一些块包括至少一个无效数据项目。涉及无效数据项目的工作项目是无效工作项目。该SIMD处理单元包括被配置为在多个处理周期内执行特定任务的工作项目的指令的一组处理通道。控制模块基于工作项目的有效性将工作项目组装成任务,从而使得跨越处理通道在时间上对准特定任务的无效工作项目。以这一方式,可以减少由于无效工作项目的浪费的处理时隙数目。

【技术实现步骤摘要】
在SIMD处理单元中的任务执行
本专利技术总体上涉及SIMD处理单元,并且更特别地涉及在SIMD处理单元中的任务执行。
技术介绍
单指令多数据(SIMD)处理单元被布置为同时对多个数据项目执行相同操作。这允许SIMD处理单元并行处理数据项目,这可以比串行处理每个数据项目更高效。SIMD处理单元在将对大量数据项目执行相同指令(这在多媒体应用中是常见的)时特别有用。例如,图形处理单元(GPU)可以使用SIMD处理单元以便对计算机生成的图像的大量像素中的每个像素执行操作。相似地,用于处理(例如,由相机捕获的)图像数据的图像处理单元(该图像处理单元可以例如是相机处理流水线的部分)可以使用SIMD处理单元以便对图像的大量像素中的每个像素执行操作。任务可以由多个“工作项目”形成,其中可以执行任务的工作项目以由此对相应数据项目执行公共指令序列。也就是说,工作项目可以包括将对数据项目执行的指令序列,其中包括将对相应数据项目执行的相同指令序列的一组工作项目被一起分组成任务。每个任务可以包括上至预定最大数目的工作项目。可以在任务中包括的工作项目的最大数目可以在不同系统中变化,但是图1代表可以包括上至三十二个工作项目102的任务100。为了清楚,在图1中标注了工作项目102中的仅一些工作项目。图1也指示了工作项目可以被包括在的在任务内的三十二个不同项目定位(从定位0到定位31)中的一些项目定位。可以并行执行在任务内的不同工作项目,因为它们是将对相应数据项目实施的指令的相应实例。任务100未充满工作项目,并且因此被视为具有“部分空置(residency)”。也就是说,任务100包括少于三十二个工作项目,但是它具有用于三十二个工作项目的容量。在任务100中的在图1中有底纹的定位包括工作项目,而在任务100中的在图1中未被底纹化的定位不包括工作项目。因此,任务100在定位0到16包括用于在SIMD处理单元上执行的十七个工作项目而在定位17到31不包括工作项目。另外,在定位0到6、9、11、15和16的工作项目102是用于由SIMD处理单元执行的有效工作项目。然而,如以下更具体地说明的那样,一些工作项目可能无效,在该情况下,它们将未被SIMD处理单元执行。在定位7、8、10和12到14的工作项目102在图1中所示的示例中是无效工作项目并且被示出为交叉影线。SIMD处理单元可以包括多个处理通道,每个处理通道被配置为在多个处理周期中的每个处理周期中执行工作项目的指令。图2表示使用SIMD处理单元来处理任务,该SIMD处理单元包括在图2中被表示为200的十六个处理通道。处理通道和处理周期的组合包括工作项目的指令可以在其中被处理的处理“时隙”。在这一情况下,处理周期是时钟周期,并且图2示出了被标注为clk0、clk1、clk2和clk3的四个时钟周期。来自第一任务(任务100)的前十六个定位中的工作项目的指令被调度为在第一处理周期(clk0)中跨越十六个处理通道执行;并且来自任务100的接下来十六个定位中的工作项目的指令被调度为在第二处理周期(clk1)中跨越十六个处理通道执行。在接下来的时钟周期(clk2和clk3)中,处理通道被调度为执行来自下一任务的工作项目。在任务具有部分空置时,然后将浪费一些处理时隙,即,将未在那些处理时隙中执行工作项目。这从图2可见,因为任务100未在定位17到31包括工作项目,并且这样在第二时钟周期(clk1)中将执行来自仅一个工作项目(10216)的指令。因此,十五个处理通道在图2中所示的示例中在时钟周期clk1期间空闲。另外,如果无效工作项目被调度用于在处理时隙中执行则也浪费该处理时隙因为未处理无效工作项目因此在图2中所示的示例中,处理通道7、8、10、12、13和14在第一处理周期(clk0)期间空闲,因为工作项目1027、1028、10210、10212、10213和10214在任务100中是无效工作项目。在图2中所示的系统因此出于以上给出的原因而造成浪费的处理时隙。现代图形应用编程接口(API)(比如OpenGL和Microsoft的DirectX)定义跨越在2x2像素四方格内的像素而进行操作的指令。例如,经常有必要通过“梯度”操作来确定在不同像素之间的可变数量的改变速率。这些指令的存在防止在将工作项目打包成任务时去除(与无效工作项目对应的)“空”像素时隙。
技术实现思路
提供这一
技术实现思路
以按照简化形式介绍以下在具体实施方式中进一步描述的概念选集。这一
技术实现思路
并非旨在于标识要求保护的主题内容的关键特征或者实质特征,它也未旨在于用来限制要求保护的主题内容的范围。提供了一种被配置为处理多个任务的单指令多数据(SIMD)处理单元,每个任务包括上至预定最大数目的工作项目,其中任务的工作项目被布置用于对相应数据项目执行公共指令序列,数据项目被布置成数据项目块,其中块中的一些块包括至少一个无效数据项目,以及其中涉及无效数据项目的工作项目是无效工作项目,该SIMD处理单元包括:被配置为在多个处理周期内执行特定任务的工作项目的指令的一组处理通道;以及控制模块,该控制模块被配置为基于工作项目的有效性将工作项目组装(assemble)成任务,从而使得跨越该一组处理通道在时间上对准特定任务的无效工作项目。提供了一种被配置为处理多个任务的单指令多数据(SIMD)处理单元,每个任务包括上至预定最大数目的工作项目,其中任务中的一些任务包括少于预定最大数目的工作项目,以及其中任务的工作项目被布置用于对相应数据项目执行公共指令序列,该SIMD处理单元包括:并行多组处理通道,每组被配置为在多个处理周期内执行相应任务的工作项目的指令;以及耦合到多组处理通道的逻辑,该逻辑被配置为如果没有被调度用于在特定处理周期中在特定一组处理通道中的任何处理通道中执行的工作项目则与其它组的处理通道独立地使特定一组处理通道跳过特定处理周期。提供了一种使用单指令多数据(SIMD)处理单元以处理多个任务的方法,每个任务包括上至预定最大数目的工作项目,其中任务的工作项目被布置用于对相应数据项目执行公共指令序列,数据项目被布置成数据项目块,其中块中的一些块包括至少一个无效数据项目,其中涉及无效数据项目的工作项目是无效工作项目,以及其中SIMD处理单元包括被配置为在多个处理周期内执行特定任务的工作项目的指令的一组处理通道,该方法包括:基于工作项目的有效性将工作项目组装成任务,从而使得跨越该一组处理通道在时间上对准特定任务的无效工作项目;以及使用该一组处理通道来执行特定任务的工作项目的指令。提供了一种使用单指令多数据(SIMD)处理单元以处理多个任务的方法,每个任务包括上至预定最大数目的工作项目,其中任务中的一些任务包括少于预定最大数目的工作项目,以及其中任务的工作项目被布置用于对相应数据项目执行公共指令序列,其中SIMD处理单元包括并行多组处理通道,该方法包括:在每组处理通道在多个处理周期内执行相应任务的工作项目的指令;以及如果没有被调度用于在特定处理周期中在特定一组处理通道中的任何处理通道中执行的工作项目,则与其它组的处理通道独立地使特定一组处理通道跳过特定处理周期。可以提供一种用于生成根据这里描述的示例中的任何示例的单指令多数据处理单元的计算机可读代码。本文档来自技高网
...
在SIMD处理单元中的任务执行

【技术保护点】
一种被配置为处理多个任务的单指令多数据(SIMD)处理单元,每个任务包括上至预定最大数目的工作项目,其中任务的所述工作项目被布置用于对相应数据项目执行公共指令序列,所述数据项目被布置成数据项目块,其中所述块中的一些块包括至少一个无效数据项目,以及其中涉及无效数据项目的工作项目是无效工作项目,所述SIMD处理单元包括:一组处理通道,所述一组处理通道被配置为在多个处理周期内执行特定任务的工作项目的指令;以及控制模块,所述控制模块被配置为基于所述工作项目的有效性将所述工作项目组装成所述任务,从而使得跨越所述一组处理通道在时间上对准所述特定任务的无效工作项目。

【技术特征摘要】
2013.12.18 GB 1322388.81.一种被配置为处理多个任务的单指令多数据(SIMD)处理单元,每个任务包括上至预定最大数目的工作项目,其中任务的所述工作项目被布置用于对相应数据项目执行公共指令序列,所述数据项目被布置成数据项目块,其中所述块中的一些块包括至少一个无效数据项目,以及其中涉及无效数据项目的工作项目是无效工作项目,所述SIMD处理单元包括:一组处理通道,所述一组处理通道被配置为在多个处理周期内执行特定任务的工作项目的指令;以及控制模块,所述控制模块被配置为基于所述工作项目的有效性将所述工作项目组装成所述任务,从而使得跨越所述一组处理通道在时间上对准所述特定任务的无效工作项目。2.根据权利要求1所述的SIMD处理单元,其中所述一组的所述处理通道中的每个处理通道被配置为在多个连续处理周期内执行与相应数据项目块有关的工作项目的指令。3.根据权利要求1或者2所述的SIMD处理单元,还包括耦合到所述一组处理通道的逻辑,所述逻辑被配置为如果无效工作项目集合是被调度用于在处理周期内通过所述一组处理通道来执行的仅有工作项目,则使所述一组处理通道跳过对所述无效工作项目集合的执行。4.根据权利要求1或者2所述的SIMD处理单元,其中所述控制模块被配置为设置指示符以指示所述工作项目已经如何被组装成所述任务。5.根据权利要求4所述的SIMD处理单元,还包括:存储库,所述存储库被配置为存储从所述一组处理通道输出的经处理的所述数据项目;以及存储逻辑,所述存储逻辑被配置为基于所述指示符确定用于在所述存储库中存储经处理的所述数据项目的地址。6.根据权利要求1或者2所述的SIMD处理单元,其中所述控制模块被配置为将所述工作项目组装成所述任务,从而使得与数据项目块有关的工作项目块的工作项目被一起分组成相同任务。7.根据权利要求6所述的SIMD处理单元,其中所述控制模块被配置为将所述工作项目组装成所述任务,从而使得工作项目块基于在所述相应工作项目块中的无效工作项目数目而被一起分组成任务。8.根据权利要求6所述的SIMD处理单元,其中所述控制模块被配置为将所述工作项目组装成所述任务,从而使得在工作项目块内的工作项目被重新排序以由此对准来自在任务内的不同工作项目块的所述无效工作项目。9.根据权利要求8所述的SIMD处理单元,其中所述控制模块被配置为通过执行在工作项目块内的工作项目的旋转操作和交换操作中的至少一个操作来对在所述工作项目块内的所述工作项目重新排序。10.根据权利要求9所述的SIMD处理单元,其中所述控制模块被配置为设置指示符以指示所述工作项目已经如何被组装成所述任务,其中所述控制模块被配置为设置用于多个所述工作项目块的相应指示符以指示在所述多个工作项目块内的所述工作项目的顺序。11.根据权利要求10所述的SIMD处理单元,其中每个工作项目块包括四个工作项目,以及其中每个指示符包括三位:两位用于定义在所述工作项目块内的所述工作项目的旋转,以及一位用于定义是否已经在所述工作项目块内的预定定位处对所述工作项目中的两个工作项目执行了交换操作。12.根据权利要求1或者2所述的SIMD处理单元,其中存在用于所述工作项目的多于两个级别的有效性,以及其中所述控制模块被配置为基于所述工作项目的有效性将所述工作项目组装成所述任务,从而使得跨越所述一组处理通道、在时间上对准所述特定任务的具有相同级别的有效性的工作项目。13.根据权利要求1或者2所述的SIMD处理单元,其中所述数据项目是像素值。14.根据权利要求13所述的SIMD处理单元,其中所述数据项目块是像素四方格。15.根据权利要求1或者2所述的SIMD处理单元,其中所述任务中的一些任务包括少于所述预定最大数目的工作项目,以及其中所述SIMD处理单元包括:并行多组处理通道,每组被配置为在多个处理周期内执行相应任务的工作项目的指令...

【专利技术属性】
技术研发人员:J·豪森J·里德肖Y·C·富
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:英国;GB

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

1