处理器的制作方法

文档序号:6520585阅读:212来源:国知局
专利名称:处理器的制作方法
技术领域
本发明涉及SIMD(单指令多数据)类型处理器,特别涉及处理三维向量或四元组的SIMD类型处理器。
背景技术
被称作四元数的数字被用于执行对象旋转、球面插值和在三维图像处理中的类似的东西。四元组是增加了标量值的三维向量,表示在三维空间的轴线和在轴线上的旋转。四元组P由如下的标量值p和三维向量U表示。
P=[p;U]设置p=Aw和U=(Ax,Ay,Az),并且利用虚数单元i、j和k,四元组P同样如下表示。
P=Aw+Axi+Ayj+Azk虚数单元i、j和k具有如下的关系。
ii=jj=kk=ijk=-1ij=kji=-k类似的,设置四元组Q为Q=[q;V],并设置q=Bw和V=(Bx,By,Bz),Q=Bw+Bxi+Byj+Bzk通过PQ=(-AxBx-AyBy-AzBz+AwBw)+(AxBw+AyBz-AzBy+AwBx)i+(-AxBz+AyBw+AzBx+AwBy)j+(AxBy-AyBx+AzBw+AwBz)k
=Mw+Mxi+Myj+Mzk …(等式1)获得四元组P和四元组Q的四元组的乘积PQ。
要求16乘法和12加法和减法以获得这样的四元组乘积的分量(Mw,Mx,My和Mz)。当同时执行这些操作时,可以增加必要的电路标量。
当两个四元组被当作两个四维向量时,每个四元组乘积的分量(Mw,Mx,My和Mz)以两个四维向量的元素(Aw,Ax,Ay和Az和Bw,Bx,By和Bz)的乘积的求和的形式给出。然而,乘积求和的顺序和符号对于每个分量都不同。因此,当电路可以执行四维向量的元素的重排列和在乘积求和操作的同时执行符号反转时,四元组乘积可以由四个乘积求和操作来表示。
然而使用32位指令代码,在包括关于指令域中符号反转和重排列的信息的同时,所述位数不足以表示具有三个操作数的向量操作指令。因此,经常使用这样的装置,该装置通过另一个指令实现向量重排列和符号反转,将由重排列和符号反转所产生的新的向量存储到另一个寄存器中,然后利用该寄存器执行操作。
例如,提供指令来执行这样的向量重排列和符号反转,所述指令被提供于其中指令集已经由Intel公司开发的用于多媒体的指令集SSE中(流SIMD扩展)、和其中指令集已经由Motorola公司开发的用于多媒体的指令集AltiVec等中(见非专利文献,Intel公司在2004年的“IA-32Intel(R)Architecture Software Developer’s Manual Volume 1BasicArchitecture”,和Motorola公司在1999年6月的“AltiVec TechnologyProgramming Interface Manual”)。

发明内容
然而,在计算四元组乘积中,即使当使用上述指令来执行向量重排列和符号反转,也有必要应用一个指令来进一步在四个内积的每一个上执行向量重排列和符号反转,因此增加了程序的大小。
因此希望提供响应单指令而计算四元组乘积的SIMD类型处理器。
根据本发明的第一实施例,提供一种处理器,包括生成第一输入向量的元素和第二输入向量的元素的任意组合的数据操作装置,对所述组合执行乘积求和操作的运算装置,和用于根据第一输入向量和第二输入向量的元素的数目,通过数据操作装置控制组合的生成,和通过运算装置控制乘积求和操作的重复控制装置。因此由于对第一输入向量和第二输入向量的元素的任意组合重复执行乘积求和操作而提供了一种效果。也就是,即使象四元组乘积指令的情况下,当向量的元素的乘积求和操作的组合是复杂的时候,例如,重复控制装置的重复控制使得四元组乘积的计算响应一个指令而作为处理被执行。
在第一个实施例中,重复控制装置可以包括用于在重复控制装置的控制下,重排列第二输入向量的元素的重排列装置,以及在重复控制装置的控制下,对重排列装置的输出的符号反转的符号反转装置。因此依据顺序和符号灵活地生成第一输入向量和第二输入向量的元素的任意组合,因而产生了一种效果。
此外,重复控制装置可以包括计数装置,用于对对应元素的数目的次数进行计数;以及操作控制装置,用于根据计数装置的计数值,控制重排列装置和符号反转装置。因此由于对向量的元素的任意组合重复执行乘积求和操作而产生了一种效果。
在第一个实施例中,第二输入向量可以具有四个元素(Bx,By,Bz和Bw),以及在重复控制装置的控制下,数据操作装置可以顺序生成第一序列(Bw,Bz,-By和Bx)、第二序列(-Bz,Bw,Bx和By)、第三序列(By,-Bx,Bw和Bz)和第四序列(-Bx,-By,-Bz和Bw)。因此由于提供了计算四元组乘积的一个向量而产生了一种效果。
此外,第一输入向量可以具有四个元素(Ax,Ay,Az和Aw),以及在重复控制装置的控制下,运算装置可以顺序执行第一乘积求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘积求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘积求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘积求和操作(-AxBx-AyBy-AzBz+AwBw)。因此由于提供了四元组乘积中的每个元素而产生了一种效果。
在第一个实施例中,处理器可以进一步包括大小处理装置,用来设置超过每个第一输入向量和第二输入向量的元素的数目的元素为零。因此即使在第一输入向量和第二输入向量的元素的数目很小的时候,由于计算了乘积求和操作的正确结果而产生了一种效果。
根据本发明的第二实施例,提供了一种处理器,包括保存第一输入向量和第二输入向量的向量保存装置,生成第一输入向量的元素和第二输入向量的元素的任意组合的数据操作装置,对所述组合执行乘积求和操作的运算装置,以及用于根据第一输入向量和第二输入向量的元素的数目,通过数据操作装置控制组合的生成,和通过运算装置控制的乘积求和操作,并产生作为预定元素保存在向量保存装置的输出向量中的乘积求和操作的结果的重复控制装置。因此由于对由向量保存装置保存的第一输入向量和第二输入向量的元素的任意组合重复执行乘积求和操作而提供了一种效果。
根据本发明的第三实施例,提供了一种处理器,包括保存具有四个元素(Ax,Ay,Az和Aw)的第一输入向量和具有四个元素(Bx,By,Bz和Bw)的第二输入向量的向量保存装置,在执行第一输入向量和第二输入向量之间操作的指令中提取第一输入向量和第二输入向量的元素的数目的提取装置,用于供应第一输入向量的元素(Ax,Ay,Az和Aw)的第一供应装置,用于供应第二输入向量的元素的第一序列(Bw,Bz,-By和Bx)、第二序列(-Bz,Bw,Bx和By)、第三序列(By,-Bx,Bw和Bz)和第四序列(-Bx,-By,-Bz和Bw)的第二供应装置,当元素的数目为4时,在第一输入向量和第二输入向量的元素的基础上顺序执行第一乘积求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘积求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘积求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘积求和操作(-AxBx-AyBy-AzBz+AwBw)的运算装置,第一输入向量和第二输入向量的元素由第一供应装置和第二供应装置提供,使向量保存装置保存乘积求和操作的结果。因此由于通过设置元素的数目为4,顺序生成了四元组乘积的每个元素而提供了一种效果。
在第三实施例中,当元素数为3时,在第一输入向量和第二输入向量的元素的基础上,运算装置可以顺序生成第一外积元素(AyBz-AzBy)、第二外积元素(-AxBz+AzBx)和第三外积元素(AxBy-AyBx),第一输入向量和第二输入向量的元素由第一供应装置和第二供应装置提供,使得向量保存装置保存外积元素。因此由于通过设置元素的数目为3,顺序生成外积的每个元素而提供了一种效果。
根据本发明的第四实施例,提供了一种处理器,作为指令集,具有在具有四个元素(Ax,Ay,Az和Aw)的第一输入向量和具有四个元素(Bx,By,Bz和Bw)的第二输入向量之间执行操作的指令。该处理器包括提取装置,用于在执行第一输入向量和第二输入向量之间操作的指令中提取第一输入向量和第二输入向量的元素的数目;以及运算装置,用于当元素的数目为4时,在第一输入向量和第二输入向量的元素的基础上顺序执行第一乘积求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘积求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘积求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘积求和操作(-AxBx-AyBy-AzBz+AwBw),并计算四元组乘积。因此由于通过设置元素的数目为4,使得处理器执行指令来顺序生成四元组乘积的每个元素而提供了一种效果。
在第四实施例中,当元素的数目为3时,在第一输入向量和第二输入向量的元素的基础上,运算装置可以顺序生成第一外积元素(AyBz-AzBy)、第二外积元素(-AxBz+AzBx)和第三外积元素(AxBy-AyBx),并计算外积。因此由于通过设置元素的数目为3使得处理器执行指令来顺序生成外积的每个元素而提供了一种效果。
本发明可以响应单指令而产生计算四元组乘积的很好的效果。


附图1是示出了根据本发明实施例的SIMD类型计算机系统的配置实例图;附图2是示出了在本发明实施例中的指令格式的实例图;附图3是示出了在本发明实施例中的在函数代码和大小之间关系的图;附图4是表示在本发明实施例中的由指令解码器解码的实例图;附图5是示出在本发明实施例中的重复控制电路的配置的实例图;附图6是在本发明实施例中的由重复控制电路执行的用于四元组乘积指令控制的实例图;附图7A和7B是在本发明实施例中由重复控制电路执行的用于另一个操作指令控制的实例图;附图8是在本发明实施例中由重复控制电路执行的用于另一个操作指令控制的另一个实例图;附图9是示出了在本发明实施例中的寄存器文件的配置的实例图;附图10是示出了在本发明实施例中的大小处理电路的配置的实例图;附图11是示出了在本发明实施例中的大小处理电路中选择信号的内容的实例图;附图12是示出了在本发明实施例中的数据操作电路配置的实例图;附图13是示出了在本发明实施例中的运算单元配置的实例图。
具体实施例方式
以下将参照附图详细描述本发明的优选实施例。
附图1是示出了根据本发明实施例的SIMD类型计算机系统的配置实例图。这个SIMD类型计算机系统包括处理器100和指令存储器200。处理器100包括程序计数器110、指令解码器130、寄存器文件140、重复控制电路150、大小处理电路161和162、数据操作电路170和运算电路180。处理器100被连接到指令存储器200,或者处理器100包括指令存储器200。
程序计数器110计数在指令存储器200中被读取的指令的地址。通过信号线119,在由程序计数器110指定的地址的基础上,从指令存储器200中读取指令,并通过信号线209提供到指令解码器130。指令解码器130解码从指令存储器200读取的指令,来提取指令所必需的指令操作代码和操作数。
寄存器文件140通过信号线139被由从指令解码器130提供的操作数访问,并在寄存器文件140中执行读和写。寄存器文件140可以同时读取两组数据。寄存器文件140分别通过信号线148和149提供两组数据到大小处理电路161和162。
重复控制电路150通过信号线138接收解码的信号。根据该信号,重复控制电路150通过信号线151控制寄存器文件140,通过信号线154和155控制数据操作电路170,并通过信号线156控制运算单元180。当如在四元组乘积的情况下需要多次重复操作时,重复控制电路150控制该重复。
每个大小处理电路161和162接收从寄存器文件140读取的操作数(数据),并执行大小处理,其中在超过通过信号线137给出的元素的数目(大小)的输入数据部分设置值为“0”。
通过信号线169,数据操作电路170接收由大小处理电路162的大小处理产生的操作数,并执行例如数据解码、符号反转等等的数据操作。由这样的数据操作产生的操作数通过信号线179提供到运算单元180。
通过信号线156在重复控制电路150的控制下,运算单元180对通过信号线168和信号线179提供的操作数执行预定操作。通过信号线156在重复控制电路150的控制下,运算单元180的操作结果通过信号线189被写到寄存器文件140。
附图2是示出了在本发明实施例中的指令格式的实例图。假定在这种情况下,32位定长指令具有三种操作数作为RISC(精简指令集计算机)结构类型指令集。处理器100被实现为SIMD类型处理器,其在定长指令的基础上并行执行四种操作的最大值。要注意的是,当在以下的描述中作为例子来假定同时执行四种操作时,本发明不局限于此,可以同时执行任意数目的操作。
这个指令格式具有函数代码210、大小220、写操作数230、第一读操作数240和第二读操作数250。函数代码210表示指令的操作代码,并表示本发明实施例的运算单元180中的操作类型。大小220表示要被操作的数据元素的数目,并被用于根据函数代码210的控制部分。特别的,根据由解码器131解码的结果,选择器132选择大小220的一个内容和值“1”,由此确定写元素的数目223、第一读元素的数目224、第二读元素的数目225和重复的数目226。写元素的数目223是当数据写到寄存器文件140时的元素的数目。每个第一读元素的数目224和第二读元素的数目225是当数据从寄存器文件140读取时的元素的数目。重复的数目226是当重复控制电路150执行重复控制时的重复的数目。附图3示出了由选择器132选择的内容。
参照附图3,与函数代码210一致,示出了写元素的数目223、第一读元素的数目224、第二读元素的数目225和重复的数目226的选择内容。在这种情况下,函数代码210包括四元组乘积(qmul)、内积(dot)、加法(add)、减法(sub)、乘法(mul)、除法(div)和比较(cmp)。
在四元组乘积的情况中,例如,值“1”被给出作为写元素的数目223,大小的内容220被给出作为第一读元素的数目224、第二读元素的数目225和重复的数目226。
再参照附图2,写操作数230表示在寄存器文件140中的写地址,并保存写寄存器说明231和写元素说明232。当在寄存器文件140中保存多个寄存器时,该多个寄存器的每一个寄存器结合多个元素为一组,通过写寄存器说明231指定要被写的寄存器,通过写元素说明232指定在那个寄存器中的元素。
第一读操作数240和第二读操作数250表示从寄存器文件140中执行读取的读地址,并分别包括第一读寄存器说明241和第二读寄存器说明251。在本发明的实施例中,足够指定要被读的寄存器,而且并不特别需要在那个寄存器中指定元素。因此没有提供元素说明的字段。
假定结合四个元素为一组的32字寄存器,例如,被保存为寄存器文件140的配置,需要5位用于寄存器说明,2位用于元素说明。假定相等地分配字段到操作数,分配7位到每个写操作数230、第一读操作数240和第二读操作数250。因为大小220表示在寄存器中的元素的数目,分配2位到大小220。因此,在这种情况中,可以分配32位的9位到函数代码210。
附图4是表示在本发明实施例中由指令解码器130解码的实例图。指令解码器130通过信号线209解码从指令存储器200读取的指令来提取以下字段。特别地,指令解码器130输出函数代码210、写元素的数目223、写元素说明232和重复的数目226到信号线138。另外,指令解码器130输出写寄存器说明231、第一读寄存器说明241和第二读寄存器说明251到信号线139。此外,指令解码器130输出第一读元素的数目224和第二读元素的数目225到信号线137。
附图5是示出了在本发明实施例中重复控制电路150的配置实例图。重复控制电路150包括重复计数器510和操作控制电路520。
在信号线138中接收重复的数目226,重复计数器510以加1的形式从初始值“1”到重复的数目226计数,并通过信号线519提供计数值给操作控制电路520。
操作控制电路520根据函数代码210、写元素的数目223以及在信号线138中的写元素说明232和在信号线519中的重复计数输出写使能到信号线151、读重排列到信号线154、读符号反转到信号线155和运算单元说明到信号线156。
在信号线151中的写使能具有提供给寄存器文件140中的每个元素位置的一个位。例如,当结合例如四个元素为一组的寄存器被保存为寄存器文件140的配置时,在信号线151中的写使能由四位1511到1514形成。在信号线151中的写使能被提供到寄存器文件140。
在信号线154中的读重排列和在信号线155中的读符号反转被提供到数据操作电路170。在信号线156中的运算单元说明被提供给运算单元180。
附图6是在本发明实施例中由重复控制电路150执行的用于四元组乘积指令控制的实例图。当函数代码210表示四元组乘积(qmul)时,操作控制电路520根据在信号线519中的重复计数生成控制信号。
首先,关于在信号线151中的写使能,当在信号线519中的重复计数表示值“1”时,在信号线151中仅仅第一位是值“1”,其它位是值“0”。因此,当在信号线519中的重复计数表示值“1”时,在运算单元180中的操作结果仅仅被写到写寄存器中的第一元素。当在信号线519中的重复计数表示值“2”时,仅仅在信号线151中的第二位是值“1”,其它位是值“0”。因此,当在信号线519中的重复计数表示值“2”时,运算单元180中的操作结果仅仅被写到写寄存器中的第二元素。类似的,当在信号线519中的重复计数表示值“3”时,运算单元180中操作结果仅仅被写到写寄存器中的第三元素。当在信号线519中的重复计数表示值“4”时,运算单元180中操作结果仅仅被写到写寄存器中的第四元素。
在信号线154中的读重排列表示当原始状态是“XYZW,”时,读数据在信号线154中被重排列为信号线154中由读重排列指定的状态。当在信号线519中的重复计数表示值“1”时,在信号线154中的读重排列表示“WZYX”,因此表示读数据被重排列为与排列的原始顺序相反的顺序。当在信号线519中的重复计数表示值“2”时,在信号线154中的读重排列表示“ZWXY”,因此表示读数据被重排列,以致于第一片数据成为第三片数据、第二片数据成为第四片数据、第三片数据成为第一片数据和第四片数据变成第二片数据。类似的,当在信号线519中的重复计数表示值“3”时,读数据被重排列为“YXWZ”。当在信号线519中的重复计数表示值“4”时,读数据以“XYZW”状态被输出(即,输入实际上是输出)。
在信号线155中的读符号反转表示,当对应符号为“P”时,在具有经过上述重排列的数据上不执行符号反转,当对应符号为“N”时在数据上执行符号反转。当在信号线519中的重复计数表示值“1”时,在信号线155中的读符号反转表示“PPNP”,因此表示符号反转仅仅在第三片数据上执行。当在信号线519中的重复计数表示值“2”时,在信号线155中的读符号反转表示“NPPP”,因此表示符号反转仅仅在第一片数据上执行。类似的,当在信号线519中的重复计数表示值“3”时,符号反转仅仅在第二片数据上执行。当在信号线519中的重复计数表示值“4”时,仅仅在除了第四片数据之外的数据上执行符号反转。
在信号线154中的读重排列和在信号线155中的读符号反转对应于上述等式1中的四元组乘积的元素的组合顺序和符号。
表示内积的值“5”被输出作为信号线156中的运算单元说明。这个值不依赖于信号线519中的重复计数。
附图7A和7B是在本发明实施例中由重复控制电路150执行的用于另一个操作指令控制的实例图。附图7A是当函数代码210代表加法(add)、减法(sub)、乘法(mul)、除法(div)或者比较(cmp)时,在信号线151中的写使能内容的图。附图7B是当函数代码210代表内积(dot)时,在信号线151中的写使能内容的图。
参照附图7A,在函数代码210代表加法等等的情况中,当在信号线138中的写元素的数目223为值“1”时,仅仅在信号线151中的写使能信号的第一位是值“1”,写使能的其它位是值“0”。当在信号线138中的写元素的数目223为值“2”时,在信号线151中的写使能的第一位和第二位是值“1”,写使能的其它位是值“0”。当在信号线138中的写元素的数目223为值“3”时,仅仅在信号线151中的写使能的第四位是值“0”,写使能的其它位是值“1”。当在信号线138中的写元素的数目223为值“4”时,在信号线151中的写使能的所有位是值“1”。
参照附图7B,在函数代码210表示内积的情况中,当在信号线138中的写元素说明232为值“X”时,仅仅在信号线151中的写使能的第一位为值“1”,写使能的其它位为值“0”。当在信号线138中的写元素说明232为值“Y”时,仅仅在信号线151中的写使能的第二位为值“1”,写使能的其它位为值“0”。当在信号线138中的写元素说明232为值“Z”时,仅仅在信号线151中的写使能的第三位为值“1”,写使能的其它位为值“0”。当在信号线138中的写元素说明232为值“W”时,仅仅在信号线151中的写使能的第四位为值“1”,写使能的其它位为值“0”。
附图8是在本发明实施例中由重复控制电路150执行的用于另一个操作指令控制的另一个实例图。当函数代码210表示加法、减法、乘法、除法、比较或者内积时,在信号线519中的重复计数始终表示值“1”,在信号线154中的读重排列表示“XYZW”,在信号线155中的读符号反转表示“PPPP”。这意味着不在运算单元180中执行多个重复,并且也不执行读数据的重排列和符号反转。
然而,通过信号线156的用于运算单元180的运算单元说明是必要的。在加法的情况中,值“0”被指定。在减法的情况中,值“1”被指定。在乘法的情况中,值“2”被指定。在除法的情况中,值“3”被指定。在比较的情况中,值“4”被指定。在内积的情况中,值“5”被指定。
附图9是示出了在本发明实施例中寄存器文件140的配置实例图。寄存器文件140在垂直方向被提供有地址,使得四个元素作为一个寄存器在水平方向被同时访问。假定在这种情况中,四元组的x分量被保存在左起的第一元素中,四元组的y分量被保存在第二元素中,四元组的z分量被保存在第三元素中,以及四元组的w分量(标量分量)被保存在第四元素中。
在寄存器140中的访问地址通过信号线139由指令解码器130提供。在信号线139中,第一读寄存器说明241和第二读寄存器说明251表示读地址,以及写寄存器说明231表示写地址。保存在由第一读寄存器说明241表示的地址处的数据从信号线148输出。类似的,保存在由第二读寄存器说明251表示的地址处的数据从信号线149输出。
从信号线189提供的数据被保存在由写寄存器说明231表示的地址。这时,根据在信号线151中的写使能来控制是否保存对应的数据。特别的,当写使能的第一位1511表示值“1”时,数据被写到对应的第一元素。当写使能的第一位1511表示值“0”时,数据没有被写到对应的第一元素。其它位的情况也一样,当写使能的第二位到第四位表示值“1”时,数据被写到对应的元素,当写使能的第二位到第四位表示值“0”时,数据没有被写到对应的元素。
附图10是示出了在本发明实施例中大小处理电路161或162的配置实例图。大小处理电路161或162分别包括双输入选择器611到614或621到624。
每个双输入选择器611到614通过信号线148以及根据在信号线137中第一读元素的数目224的值“0”,选择由寄存器文件140提供的四片数据1481到1484的一个。类似的,双输入选择器621到624通过信号线149以及根据在信号线137中第二读元素的数目225的值“0”,选择由寄存器文件140提供的四片数据1491到1494的一个。这时,第一读元素的数目224和第二读元素的数目225和到双输入选择器611到614和621到624的选择信号(读使能)有关,如附图11所示。
附图11是示出了在本发明实施例中大小处理电路161或162中的选择信号的内容的实例图。
特别地,当在信号线137中的第一读元素的数目224为值“1”时,仅仅双输入选择器611的读使能2241为值“1”,其它的信号为值“0”。因此,信号线1481的值被输出到信号线1681,值“0”被输出到信号线1682到1684。当在信号线137中的第一读元素的数目224为值“2”时,双输入选择器611和612的读使能2241和2242为值“1”,其它的信号为值“0”。因此,信号线1481和信号线1482的值被分别输出到信号线1681和1682,值“0”被输出到信号线1683和1684。当在信号线137中的第一读元素的数目224为值“3”时,双输入选择器614的读使能2244为值“0”,其它的信号为值“1”。因此,信号线1481到1483的值被分别输出到信号线1681到1683,值“0”被输出到信号线1684。当在信号线137中的第一读元素的数目224为值“4”时,双输入选择器611到614的所有读使能2241到2244为值“1”。因此,信号线1481到1484的值被分别输出到信号线1681到1684。
类似的,当在信号线137中的第二读元素的数目225为值“1”时,仅仅双输入选择器621的读使能2251为值“1”,其它的信号为值“0”。因此,信号线1491的值被输出到信号线1691,值“0”被输出到信号线1692到1694。当在信号线137中的第二读元素的数目225为值“2”时,双输入选择器621和622的读使能2251和2252为值“1”,其它的信号为值“0”。因此,信号线1491和信号线1492的值被分别输出到信号线1691和1692,值“0”被输出到信号线1693和1694。当在信号线137中的第二读元素的数目225为值“3”时,双输入选择器624的读使能2254为值“0”,其它的信号为值“1”。因此,信号线1491到1493的值被分别输出到信号线1691到1693,值“0”被输出到信号线1694。当在信号线137中的第二读元素的数目225为值“4”时,双输入选择器621到624的所有读使能2251到2254为值“1”。因此,信号线1491到1494的值被分别输出到信号线1691到1694。
通过将大小处理电路161和162中超过元素数目(大小)的部分设置值“0”,即使在元素的数目少于4的时候,仍可以产生四个元素乘积结果的求和来表示内积。另外,通过在这种情况中设置不必要的元素为零,可以避免运算单元的不必要操作,并因此减少功耗。
附图12是示出了在本发明实施例中数据操作电路170的配置实例图。数据操作电路170包括四个四输入选择器711到714、四个符号反相器721到724和四个双输入选择器731到734。
每个四输入选择器711到714根据在信号线154中的读重排列1541到1544,选择通过信号线169由大小处理电路162提供的四片数据1691到1694的一个。在信号线154中的读重排列1541到1544由重复控制电路150提供,每个表示选择哪个分量,如参考附图6和附图8所述。因此,四输入选择器711到714重排列数据。
符号反相器721到724分别反转四输入选择器711到714的输出的符号。接着,双输入选择器731到734根据在信号线155中的读符号反转1551到1554,分别选择经过符号反相器721到724的值,或者选择没有经过符号反相器721到724的值。在信号线155中的读符号反转1551到1554由重复控制电路150提供,每个表示是否反转符号,如参考附图6和附图8所述。因此,符号反相器721到724和双输入选择器731到734反转数据的符号,并接着通过信号线179输出四片数据1791到1794。
附图13是示出了在本发明实施例中运算单元180的配置实例图。运算单元180包括四个运算电路组810、加法器820和四个操作结果选择器831到834。
提供运算电路组810来对应四对输入操作数。例如,每个运算电路组810包括加法器、减法器、乘法器、除法器和比较器。加法器820接收四个运算电路组810中乘法器的各自输出,并计算四个乘法结果的求和。即,加法器820的输出表示乘积求和操作的结果。
操作结果选择器831到834根据通过信号线156由重复控制电路150提供的运算单元说明,选择由运算电路组810和加法器820操作的结果,并输出选择结果到信号线189(1891到1894)。例如,当运算单元说明为“0”时,操作结果选择器831到834选择由运算电路组810进行加法的结果。当运算单元说明为“1”时,操作结果选择器831到834选择由运算电路组810进行减法的结果。当运算单元说明为“2”时,操作结果选择器831到834选择由运算电路组810进行乘法的结果。当运算单元说明为“3”时,操作结果选择器831到834选择由运算电路组810进行除法的结果。当运算单元说明为“4”时,操作结果选择器831到834选择由运算电路组810进行比较的结果。当运算单元说明为“5”时,操作结果选择器831到834选择由加法器820进行乘积求和操作的结果。
在如上所述形成的SIMD类型计算机系统中,四元组乘积指令(qmul)分配四元组P和Q的四个分量到各自四维向量的元素,并生成四元组乘积PQ。特别地,以Ax、Ay、Az和Aw的顺序被保存在寄存器文件140中的分量X、Y、Z和W的四维向量由第一读操作数240指定。以Bx、By、Bz和Bw的顺序被保存在寄存器文件140中的分量X、Y、Z和W的四维向量由第二读操作数250指定。接着,大小220被设置为值“4”。因此。在寄存器文件140中指定的写操作数230的分量X、Y、Z和W中,以Mx、My、Mz和Mw的顺序获得四元组乘积PQ。
利用三维向量U和V的内积和外积,四元组P和四元组Q的乘积PQ可以被表示为PQ=[pq-U·V;pV+qU+U×V]其中·表示内积,×表示外积。
假定p=0且q=0,在这种情况中四元组P和Q的乘积是PQ=[-U·V;U×V]。
可以理解的是,这个乘积PQ的分量本身形成了U和V的外积。即PQ=(AyBz-AzBy)i+(-AxBz+AzBx)j+(AxBy-AyBx)k=Nxi+Nyj+Nzk特别的,当大小220被设置为值“3”且一个四元组乘积指令被执行时,由第一读操作数240指定的寄存器和由第二读操作数250指定的寄存器都具有由大小处理电路161和162设置到零的分量W。因为大小220的值“3”同样被设置作为重复的数目226,由重复计数器510的重复计数519是“1”、“2”或者最大为“3”。在各自的设置中对分量X、Y和Z执行三次操作来计算Mx、My和Mz。在这种情况中对于系数(Nx、Ny和Nz),p=0且q=0,这是因为分量W都是零,且计算了三维向量(Ax、Ay、Az)和(Bx、By、Bz)的外积。
因此,根据本发明的实施例,可以通过利用重复控制电路150对两个四维向量的乘积求和操作重复四次来计算四元组乘积,同时,在一个向量上执行数据操作。因此不结合多个指令就能够计算具有单四元组乘积指令的四元组乘积,因此减少了程序的大小,并提高了指令缓冲器的利用效率。另外,既然不需要提供用于保存经过重排列和符号反转的中间数据的寄存器,因此可以提高寄存器的利用效率。
另外,可以通过在与计算四元组乘积的配置相同的配置中应用三维向量来计算外积。特别地,当在函数代码210中指定四元组乘积指令(qmul)时,可以通过设置大小220为值“4”来计算四元组乘积。可以通过设置大小220为值“3”来计算外积。
要注意的是,虽然本发明的实施例表示体现本发明的例子,并与随后所说明的特定创造性的项目有关,但本发明不局限于此,在不脱离本发明精神的情况下可以进行各种修改。
例如,数据操作装置对应数据操作电路170。例如,运算装置对应运算单元180。例如,重复控制装置对应重复控制电路150。
例如,重排列装置对应选择器711到714。例如,符号反转装置对应符号反相器721到724和选择器731到734。
例如,计数装置对应重复计数器510。例如,操作控制装置对应操作控制电路520。
例如,大小处理装置对应大小处理电路161和162。
例如,向量保存装置对应寄存器文件140。例如,数据操作装置对应数据操作电路170。例如,运算装置对应运算单元180。例如,重复控制装置对应重复控制电路150。
例如,向量保存装置对应寄存器文件140。例如,提取装置对应指令解码器130。例如,第一供应装置对应寄存器文件140。例如,第二供应装置对应数据操作电路170。例如,运算装置对应运算单元180。
例如,提取装置对应指令解码器130。例如,运算装置对应运算单元180。
要注意的是,在本发明实施例中所述的处理过程可以被解释为具有一系列步骤的方法、或者解释为使计算机执行一系列程序的程序或存储该程序的记录介质。
例如,作为本发明实际使用的例子,本发明可以应用到执行向量操作的SIMD类型处理器。
本领域技术人员可以理解的是,在附加的权利要求书或与之等价的范围之内,可以根据设计要求和其它因素产生各种修改、组合、子组合和替换。
权利要求
1.一种处理器,包括数据操作装置,用于生成第一输入向量的元素和第二输入向量的元素的任意组合;运算装置,用于对所述组合执行乘积求和操作;以及重复控制装置,用于根据所述第一输入向量和所述第二输入向量的元素的数目,通过所述数据操作装置控制所述组合的生成,并通过所述运算装置控制所述乘积求和操作。
2.如权利要求1所述的处理器,其中所述重复控制装置包括重排列装置,用于在所述重复控制装置的控制下,重排列所述第二输入向量的元素;以及符号反转装置,用于在所述重复控制装置的控制下,反转所述重排列装置输出的符号。
3.如权利要求2所述的处理器,其中所述重复控制装置包括计数装置,用于对相应于所述元素的数目的次数计数;以及操作控制装置,用于根据所述计数装置的计数值,控制所述重排列装置和所述符号反转装置。
4.如权利要求1所述的处理器,其中所述第二输入向量具有四个元素(Bx,By,Bz和Bw),以及在所述重复控制装置的控制下,所述数据操作装置顺序生成第一序列(Bw,Bz,-By和Bx)、第二序列(-Bz,Bw,Bx和By)、第三序列(By,-Bx,Bw和Bz)和第四序列(-Bx,-By,-Bz和Bw)。
5.如权利要求4所述的处理器,其中所述第一输入向量具有四个元素(Ax,Ay,Az和Aw),以及在所述重复控制装置的控制下,所述运算装置顺序执行第一乘积求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘积求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘积求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘积求和操作(-AxBx-AyBy-AzBz+AwBw)。
6.如权利要求1所述的处理器,进一步包括大小处理装置,用于设置超过每个所述第一输入向量和所述第二输入向量的所述元素的数目的元素为零。
7.一种处理器,包括向量保存装置,用于保存第一输入向量和第二输入向量;数据操作装置,用于生成所述第一输入向量的元素和所述第二输入向量的元素的任意组合;运算装置,用于对所述组合执行乘积求和操作;以及重复控制装置,用于根据所述第一输入向量和所述第二输入向量的元素的数目,通过所述数据操作装置控制所述组合的生成,和通过所述运算装置控制所述乘积求和操作,并产生作为预定元素保存在所述向量保存装置的输出向量中的乘积求和操作的结果。
8.一种处理器,包括向量保存装置,用于保存具有四个元素(Ax,Ay,Az和Aw)的第一输入向量和具有四个元素(Bx,By,Bz和Bw)的第二输入向量;提取装置,在执行所述第一输入向量和所述第二输入向量之间操作的指令中,用于提取所述第一输入向量和所述第二输入向量的元素的数目;第一供应装置,用于供应所述第一输入向量的元素(Ax,Ay,Az和Aw);第二供应装置,用于供应所述第二输入向量的元素的第一序列(Bw,Bz,-By和Bx)、第二序列(-Bz,Bw,Bx和By)、第三序列(By,-Bx,Bw和Bz)和第四序列(-Bx,-By,-Bz和Bw);以及运算装置,用于当所述元素的数目为4时,在所述第一输入向量和所述第二输入向量的元素的基础上顺序执行第一乘积求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘积求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘积求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘积求和操作(-AxBx-AyBy-AzBz+AwBw),所述第一输入向量和所述第二输入向量的元素由所述第一供应装置和所述第二供应装置提供,并使所述向量保存装置保存乘积求和操作的结果。
9.如权利要求8所述的处理器,其中当所述元素的数目为3时,在所述第一输入向量和所述第二输入向量的元素的基础上,所述运算装置顺序生成第一外积元素(AyBz-AzBy)、第二外积元素(-AxBz+AzBx)和第三外积元素(AxBy-AyBx),所述第一输入向量和所述第二输入向量的元素由所述第一供应装置和所述第二供应装置提供,并使所述向量保存装置保存外积元素。
10.一种处理器,作为指令集,具有在具有四个元素(Ax,Ay,Az和Aw)的第一输入向量和具有四个元素(Bx,By,Bz和Bw)的第二输入向量之间执行操作的指令,所述处理器包括提取装置,在执行所述第一输入向量和所述第二输入向量之间操作的指令中,用于提取所述第一输入向量和所述第二输入向量的元素的数目;以及运算装置,用于当所述元素的数目为4时,在所述第一输入向量和所述第二输入向量的元素的基础上顺序执行第一乘积求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘积求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘积求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘积求和操作(-AxBx-AyBy-AzBz+AwBw),并计算四元组乘积。
11.如权利要求10所述的处理器,其中当所述元素的数目为3时,在所述第一输入向量和所述第二输入向量的元素的基础上,所述运算装置顺序生成第一外积元素(AyBz-AzBy)、第二外积元素(-AxBz+AzBx)和第三外积元素(AxBy-AyBx),并计算外积。
12.一种处理器,包括数据操作器,用于生成第一输入向量的元素和第二输入向量的元素的任意组合;运算部分,用于对所述组合执行乘积求和操作;以及重复控制器,用于根据所述第一输入向量和所述第二输入向量的元素的数目,通过所述数据操作器控制所述组合的生成,并通过所述运算部分控制所述乘积求和操作。
13.一种处理器,包括向量保存器,用于保存第一输入向量和第二输入向量;数据操作器,用于生成所述第一输入向量的元素和所述第二输入向量的元素的任意组合;运算部分,用于对所述组合执行乘积求和操作;以及重复控制器,用于根据所述第一输入向量和所述第二输入向量的元素的数目,通过所述数据操作器控制所述组合的生成,和通过所述运算部分控制所述乘积求和操作,并产生作为预定元素保存在所述向量保存器的输出向量中的乘积求和操作的结果。
14.一种处理器,包括向量保存器,用于保存具有四个元素(Ax,Ay,Az和Aw)的第一输入向量和具有四个元素(Bx,By,Bz和Bw)的第二输入向量;提取器,在执行所述第一输入向量和所述第二输入向量之间操作的指令中,用于提取所述第一输入向量和所述第二输入向量的元素的数目;第一供应器,用于供应所述第一输入向量的元素(Ax,Ay,Az和Aw);第二供应器,用于供应所述第二输入向量的元素的第一序列(Bw,Bz,-By和Bx)、第二序列(-Bz,Bw,Bx和By)、第三序列(By,-Bx,Bw和Bz)和第四序列(-Bx,-By,-Bz和Bw);以及运算部分,用于当所述元素的数目为4时,在所述第一输入向量和所述第二输入向量的元素的基础上顺序执行第一乘积求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘积求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘积求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘积求和操作(-AxBx-AyBy-AzBz+AwBw),所述第一输入向量和所述第二输入向量的元素由所述第一供应器和所述第二供应器提供,并使所述向量保存器保存乘积求和操作的结果。
15.一种处理器,作为指令集,具有在具有四个元素(Ax,Ay,Az和Aw)的第一输入向量和具有四个元素(Bx,By,Bz和Bw)的第二输入向量之间执行操作的指令,所述处理器包括提取器,在执行所述第一输入向量和所述第二输入向量之间操作的指令中,用于提取所述第一输入向量和所述第二输入向量的元素的数目以及运算部分,用于当所述元素的数目为4时,在所述第一输入向量和所述第二输入向量的元素的基础上顺序执行第一乘积求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘积求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘积求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘积求和操作(-AxBx-AyBy-AzBz+AwBw),并计算四元组乘积。
全文摘要
本发明提供一种处理器,包括数据操作装置,用于生成第一输入向量的元素和第二输入向量的元素的任意组合;运算装置,用于对所述组合执行乘积求和操作;和重复控制装置,用于根据第一输入向量和第二输入向量的元素的数目,通过数据操作装置控制组合的生成,和通过运算装置控制乘积求和操作。
文档编号G06F15/80GK1783054SQ20051002303
公开日2006年6月7日 申请日期2005年11月22日 优先权日2004年11月22日
发明者坂口浩章, 长谷川浩一 申请人:索尼株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1