在单指令多数据通路结构中的非整数倍大小阵列循环处理的制作方法

文档序号:6476765阅读:183来源:国知局
专利名称:在单指令多数据通路结构中的非整数倍大小阵列循环处理的制作方法
技术领域
本发明涉及在单指令多数据通路(single instruction multiple datapath,SIMD)处理器结构中的一个数据项阵列(an array of data items)上的循环处理操作。
背景技术
并行处理是处理数据项阵列的有效方法。SIMD处理器为一种并行处理器阵列结构,其中一个单指令可控制多个数据通路。每一数据通路在一给定时间内只能处理一个数据项。举一个简单的例子,在一个具有四个数据通路的SIMD处理器中,在两遍循环操作中的四个数据通路的每一个中可处理一个八数据项阵列中的数据项。数据通路和数据项之间的分配是可变的,但是一种方法为,在第一遍(pass),第一数据通路处理阵列的第一数据项,第二数据通路处理阵列的第二数据项,第三数据通路处理阵列的第三数据项,第四数据通路处理阵列的第四数据项。在第二遍,第一数据通路处理第五数据项,第二数据通路处理第六数据项,第三数据通路处理第七数据项,第四数据通路处理第八数据项。
当阵列中的数据项数目不是数据通路数目的整数倍时就会有问题产生。例如,通过修改上述的简单例子,从而得到四个数据通路和一个具有七个资料项的阵列,则在第二遍期间,第四数据通路没有阵列第八项的元素可处理。其结果是,除非在第二遍期间禁用第四数据通路,否则第四数据通路可能错误地改写存储器中其他的数据结构。
一种避免这种错误地改写的方法是强制要求阵列的大小,也就是要求数据项阵列中包含的数据项数目为数据通路数目的整数倍。这种方法是假设程序员事先控制好数据项如何在阵列中分配,可是他们并不是总能这样做。
典型地,数据通路SIMD处理器中的每一数据通路都有一个相关的处理器启动位来控制数据通路启动或禁用。例如当一个数据通路将以别的方式超出阵列时,可允许禁用该数据通路。

发明内容
总的来说,本发明的特点在于提供一种方法,用来控制是否启动正在运算阵列中的数据元素的SIMD处理器中的多个处理器数据通路之一,该方法包括基于关于SIMD处理器和阵列的参数以及阵列的数据项相对的数据通路的处理状态的信息来决定是否启动该数据通路。
在优选实施例中,信息包括数据项和存储器之间的分配,由数据通路执行循环处理操作的并行循环遍数的总数、阵列的大小、数据通路的数目(也就是SIMD处理器中有多少数据通路)。处理状态是循环处理操作中数据通路的剩余并行遍数循环遍数的数目。
数据项和存储器之间的分配可能是单一间隔(unity-stride),相邻(contiguous)或条状间隔(striped-stride)。
在另一方面,本发明的特点是一个计算机指令包括一个循环处理指令,该循环处理指令在处理数据项阵列期间,能指定多个处理器数据通路之一的启动。
在优选实施例中,该指令包括能指定剩余并行循环遍数的数目以处理阵列的并行计数字段和能指定串行循环遍数数目以处理阵列的串行计数字段。
在另一方面,本发明的特点是提供一个处理器,包括寄存器文件(registerfile)和与该寄存器文件连接的算术逻辑单元,以及一个程序处理存储器,用于存储处理数据阵列期间使处理器启动多个处理器数据通路之一的循环处理指令。
本发明实施例的各个方面可具有下列一个或更多的优点。
不必事先了解阵列的数据项数目就可以禁用数据通路。
本方法可容易地扩展至多种存储器分配结构。
因为由也可节省寄存器空间的简单且功能强大的单指令来指定所需许多操作,所述操作用于决定是否启动和禁用数据通路,所以循环处理指令可节省指令存储器。循环处理指令挽救了程序员,使其不必强制使数据项阵列中数据项的数目为数据通路数目的整数倍。
通过参考下列详细说明、附图和权利要求,本发明其它特点和优点将会更加清楚。


图1是单指令多数据通路(SIMD)处理器的方块图。
图2是循环处理期间,具有4个数据通路的SIMD处理器以存储器的单一间隔分配来处理阵列中的30个数据项的表格。
图3是循环处理指令的语法。
图4是循环处理期间,具有4个数据通路的SIMD处理器以存储器的相邻间隔分配来处理阵列中的30个数据项的表格。
图5是含循环分支的循环处理指令的语法。
图6是循环处理期间控制SIMD处理器的数据通路启动的处理的流程图。
不同附图中的相同附图标记表示相同元件。
具体实施例方式
参考图1,单指令多数据通路(SIMD)处理器10包括指令高速缓冲存储器12,控制逻辑14,串行数据通路,和标注为18a,18b,18c,...,18n的多个并行数据通路。并行数据通路18写入存储器20。每一数据通路18有与其相连的处理器启动(PE)位22。具体地说,并行数据通路18a连接到处理器PE位22a,并行数据通路18b连接到处理器PE位22b,以下类推。当启动PE位时,启动所连接的并行数据通路,并且并行数据通路写入数据项。例如,如果启动PE位22a时,可由并行数据通路18a写入数据项;如果启动PE位22b时,可由并行数据通路18b写入数据项。如果启动PE位22n时,并行数据通路18n写入数据项。当禁用PE位时,其所连接的并行数据通路禁用,并且并行数据通路不能写入数据项。
在运算时,控制逻辑14从指令高速缓冲存储器12获得指令。指令被馈送给串行数据通路16,该串行数据通路16提供该指令给并行数据通路18。除非某一特定数据通路的处理器启动位被禁用,否则每一数据通路18被同时读取和写入。
在数据项阵列的循环处理操作期间,可能需要禁用一个或更多数据通路18,以避免未使用到的数据通路超出阵列末端和错误地改写存储器中另一数据结构。在循环处理操作期间,基于SIMD处理器和阵列的参数以及阵列中数据项相对的数据通路的处理状态的信息来快速地决定数据通路的启动与禁用,而不需要由人工来决定。此信息包括(1)循环处理操作时发生的并行循环遍数总数,(2)在串行数据通路设计中所执行的循环遍数的数目(这表示阵列的大小),(3)在循环处理操作时剩余并行遍数的数目,(4)用于在数据通路间分配阵列的数据项的存储器分配,和(5)并行数据通路的数目。提供了基于该信息在循环处理期间启动或禁用一个数据通路(由此启动或禁用该数据通路)的处理器启动位的指令。
有许多种方法来分配用于SIMD处理器中的数据项阵列的处理的存储器。最简单的存储器分配方法是数据通路数目(NDP)的每一个占用该循环的第NDP次迭代。这种存储器分配类型称为“单一间隔”。
参考图2,例如,表格图解表示循环处理期间,具有4个标号为DP0、DP1、DP2和DP3的数据通路的SIMD处理器以图示存储器分配的单一间隔分别处理阵列中标号为0到29的30个数据项。为了处理此阵列,执行8遍并行循环。在第1遍并行循环中,由数据通路0、1、2和3来处理数据项0、1、2和3。在第2遍并行循环中,由数据通路0、1、2和3来处理数据项4、5、6和7。在最后一遍并行循环中,也就是第8遍并行循环,由数据通路0和1来处理数据项28和29,而数据通路2和3必须禁用以免超出阵列和重写存储器中存储的其它数据。
图2所示表格说明了为何这种存储器分配类型被称为单一间隔。在给定任一遍并行循环中的每一并行数据通路正在处理的数据项之间的“间隔“为1。也就是说在一遍并行循环中正由并行数据通路处理的任意两个数据项差值为1(或单一)。
单一间隔分配中,在处理多个数据项时,提出了一种模型。具体地说,该模型图解表示只有在最后一遍并行循环中的两个数据通路需要被禁用(很明显地,图2所示的模型是简单的;当数据通路的数目和阵列大小增加时,模型变得较复杂但仍可及时识别)。从该模型可知在串行计算机中所执行的循环遍数总数(这表示阵列的大小),剩余并行循环遍数的数目,和数据通路的数目,并提供了一条指令来决定在特定的某遍并行循环期间,是否禁用特定的数据通路。
参考图3,循环处理器启动指令30包括表示在循环处理操作期间剩余并行循环遍数的数目的字段C,和表示在串行计算机结构中对阵列中全部数据项进行业务处理所需的遍数总数目的字段L。指令30包括存储器分配指定x。在图2所示的例子中,存储器分配指定x将参考单一间隔存储器分配,即由于共有30个数据项在串行计算机结构中要求30遍循环,所以U和L=30。PE[i,j]表示在第j遍并行循环期间,数据通路i的处理器启动位的状态。
参考图2所举的单一间隔的例子,串行循环遍数的总数除以数据通路的数目,并把所得值上舍入为下一整数,由此来决定并行循环遍数的总数。因而,在并行循环遍数的总数等于30/4的例子中,所得值上舍入为下一整数8。
如果并行循环遍数的总数减去剩余并行循环遍数的数目,全部由数据通路的总数加上数据通路索引来相乘,所得到的数比串行循环遍数总数还少时,则利用由单一间隔例子中表示的模型得到的经验以及C和L的值,启动与表示数据通路的数据通路索引i和数据项j相关联的处理器启动位,即PE[i,j]。
可替换的是,SIMD处理器10可使用相邻间隔存储器分配。参考图4,示出了具有4个数据通路(DP0-DP3)和实现相邻间隔存储器分配的SIMD处理器10如何处理阵列中30个数据项(0-29)的表格。为了处理此阵列中的全部30个数据项,执行8遍并行。在第1遍并行循环中,分别由数据通路0、1、2和3来处理数据项0、8、16和24。在第2遍并行循环中,由数据通路0、1、2和3来处理数据项1、9、17和25。继续该处理,即产生一个模型。在该特定例子中,在第7遍和第8遍并行循环中,禁用数据通路3以免改写超出阵列中30个数据项的末端的存储器。在每一遍启动其它所有数据通路。
当邻近数据项被用于处理某一特定的数据项时,相邻间隔存储器分配很有用。比如,如果数据通路0正在处理第5遍并行循环中的数据项4,则其已具有来自第4遍并行循环的数据项3,并将使用下一遍并行循环中的数据项5。因为每一数据通路正在访问阵列的相邻区域,所以这种存储器分配被称作相邻间隔分配。
在相邻间隔存储器分配中,提出一个模型,表示在这个例子的最后二遍并行循环的执行期间,需要禁用一个单数据通路。再参考图3,存储器分配指定x=CONT表示相邻间隔存储器分配的结构。参考图4所述例子,串行循环遍数的总数除以数据通路的数目,并把所得值上舍入为下一整数,由此来决定处理数据项阵列所需的并行循环遍数的总数。因而,在并行循环遍数的总数等于30/4的例子中,所得值上舍入为8。
如果并行循环遍数的总数乘以数据通路索引加上并行循环遍数的总数减去剩余并行循环遍数的数目比串行循环遍数的总数少,则根据相邻间隔存储器分配模型以及C值和L值,启动与数据通路索引i和数据项j相关联的处理器启动位,即PE[i,j]。
交叉存取式存储器允许一次执行多个存储器存取。交叉存取式存储器的内存条的数目M一般而言为2的次方,因为这允许使用最低地址位来完成内存条的选取。如果读写指令的间隔也是2的次方,因为所有的地址都试图要存取相同内存条,则存储器交叉存取就没有任何帮助。例如,M=4而且间隔也为4,而读或写的地址将是0、4、8等等,则它们全部必须由内存条0来处理;而内存条1、2、3将是空闲的。
为了避免所有的数据项由相同的内存条处理,间隔的值可以被选成奇数。因为任何奇数均与2的任意次方互质,所以如果M是2的次方,则间隔选为奇数可均匀地扩展M个内存条中的地址。以30项的阵列为例,采用相邻分配时,间隔为9而非8。数据通路0将对应阵列的0到8项,数据通路1将与阵列的9到17项关联,数据通路2将对应阵列的18到26项,数据通路3将被分配到阵列的26到29项。数据通路3对于最后6项,也就是阵列的30到35项将被关闭。这种存储器分配被称作条状间隔存储器分配。
在条状间隔存储器分配结构中,由串行数据通路的总数除以数据通路的数目,并把所得值上舍入至下一个奇数,来决定处理数据项阵列所需的并行循环遍数数目。
再参考图3,存储器指定x=S表示条状间隔分配。如果并行循环遍数的总数乘以数据通路索引加上并行循环遍数的总数减去剩余并行循环遍数的数目比串行循环遍数的总数少,则启动与数据通路i和数据项j相关联的处理器启动位,即PE[i,j]。
参考图5,示出了结合循环分支指令70的循环处理器启动指令。该被结合的指令70,依据存储器分配结构、并行循环遍数的总数和剩余并行循环遍数的数目,来设定先前所述的处理器启动位和检测剩余并行循环遍数的数目是否为零。如果剩余并行循环遍数的数目大于零,则执行分支(即“go to PC+displacement”),以执行下一遍循环操作。否则,退出循环,且处理继续。另一例子中,减少剩余并行循环遍数的数目且继续循环处理操作。
参考图6,在循环处理期间,控制SIMD处理器中数据通路的启动的处理100判断(步骤102)用于对阵列中全部数据项进行业务处理的串行循环遍数的数目。处理判断(步骤104)用于对阵列进行业务处理的剩余并行循环遍数的数目。处理然后测试(步骤106)存储器分配结构是否为单一间隔分配。如果存储器分配是单一间隔分配,且如果并行循环遍数的总数减去剩余并行循环遍数的数目,全部乘以数据通路的总数加上数据通路索引比串行循环遍数的总数少时,则启动正对数据项进行业务处理的数据通路的处理器启动位(步骤108)。
如果存储器分配不是单一间隔,则处理测试(步骤110)存储器分配结构是否为相邻间隔分配。如果存储器分配为相邻间隔分配,且如果并行循环遍数的总数乘以数据通路索引加上并行循环遍数的总数减去剩余并行循环遍教的数目比串行循环遍数的总数少时,则启动正对数据项进行业务处理的数据通路的处理器启动位(步骤112)。
最后,如果存储器分配不是单一或相邻间隔分配时,处理测试(步骤114)存储器分配结构是否为条状间隔分配。如果存储器分配为条状间隔分配,且并行循环遍数的总数乘以数据通路索引加上并行循环遍数的总数减去剩余并行循环遍数的数目比串行循环遍数的总数少时,则启动正对数据项进行业务处理的数据通路的处理器启动位(步骤116)。
本发明的许多实施例已描述如上。然而,应理解在不脱离本发明的精神和范围的情况下,可做各种更改。例如为了处理更多的数据项,依据采用的存储器分配结构,在一个模型发展了的时间前,可一直使用查询表。一旦模型发展了,以这里描述的方法来决定数据通路的启动。因此,其余的实施例均在所附权利要求保护范围内。
权利要求
1.一种控制方法,用于控制是否启动SIMD处理器中的多个处理器数据通路之一,这些数据通路正在运行阵列中的数据元素,所述方法包括基于关于SIMD处理器和阵列的参数以及阵列中数据项相对的数据通路的处理状态的信息来决定是否启动该数据通路。
2.根据权利要求1所述的方法,其中所述信息包括所述数据项和存储器之间的分配。
3.根据权利要求2所述的方法,其中所述信息包括所述分配是否为单一、相邻、或条状间隔。
4.根据权利要求1所述的方法,其中所述信息包括所述数据通路执行循环处理操作的并行循环遍数的总数。
5.根据权利要求1所述的方法,其中所述信息表示所述阵列的大小。
6.根据权利要求1所述的方法,其中所述处理状态为所述循环处理操作中剩余并行循环遍数的数目。
7.根据权利要求1所述的方法,其中所述信息包括所述处理器数据通路的数目。
8.根据权利要求1所述的方法,其中所述信息包括所述数据项和存储器之间的分配,所述数据通路执行循环处理操作的并行循环遍数的总数,所述阵列的大小,所述循环处理操作中所述数据通路的剩余并行遍数的数目,和所述处理器数据通路的数目。
9.根据权利要求8所述的方法,其中所述数据项和所述存储器之间的分配为单一间隔。
10.根据权利要求9所述的方法,其中由串行循环遍数的总数除以所执行数据通路的总数,并上舍入到下一个整数来决定所述循环遍数的总数。
11.根据权利要求10所述的方法,其中启动包括确定所述并行循环遍数的总数减去剩余循环遍数的数目乘以所执行数据通路的总数加上数据通路的数目是否小于所述串行循环遍数的总数。
12.根据权利要求8所述的方法,其中所述数据项和所述存储器之间的分配为相邻间隔。
13.根据权利要求12所述的方法,其中由所述串行循环遍数的总数除以数据通路的数目,并上舍入到下一个整数值来决定所述并行循环遍数的总数。
14.根据权利要求13所述的方法,其中启动包括确定所述并行循环遍数的总数乘以数据通路的数目加上所述并行循环遍数的总数减去所述剩余并行循环遍数的数目是否小于所述串行循环遍数的总数。
15.根据权利要求8所述的方法,其中所述分配为条状间隔。
16.根据权利要求15所述的方法,其中启动包括确定所述并行循环遍数的总数乘以数据通路的数目加上所述并行循环遍数的总数减去所述剩余并行循环遍数的数目是否小于所述串行循环遍数的总数。
17.一种计算机指令,包括循环处理指令,用于在处理数据项阵列期间指定多个处理器数据通路之一的启动。
18.根据权利要求17所述的指令,进一步包括指定所述剩余并行循环遍数的数目以处理所述阵列的并行计数字段。
19.根据权利要求17所述的指令,其中所述指令更包括指定所述串行循环遍数的数目以处理所述阵列的串行计数字段。
20.一种处理器,包括寄存器文件;连接到所述寄存器文件的算术逻辑单元,和程序控制存储器,用于存储处理数据阵列期间使处理器启动多个处理器数据通路之一的循环处理指令。
全文摘要
说明了一种在循环处理操作期间,控制SIMD处理器中的处理器数据通路的启动的方法。所述方法所使用的信息包括数据项和存储器(20)之间的分配,阵列的大小和在循环处理操作中数据通路的剩余并行遍数的数目。也提供一个计算机指令(12),其中包括循环处理指令,用于在处理数据项阵列期间指定多个数据通路之一的启动。该指令包括一个指定剩余并行循环遍数的数目以处理所述阵列的计数字段和一个指定串行循环遍数的数目以处理所述阵列的计数字段。可使用不同的指令来处理并行数据通路的遍数的不同分配。所述指令也使用关于数据通路总数(18)的信息。
文档编号G06F9/38GK1484786SQ01821639
公开日2004年3月24日 申请日期2001年11月9日 优先权日2000年11月13日
发明者约翰·L·雷福德, 约翰 L 雷福德 申请人:奇普赖茨设计公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1