專利名稱:處理器的制作方法
技術領域:
本發(fā)明涉及SIMD(單指令多數據)類型處理器,特別涉及處理三維向量或四元組的SIMD類型處理器。
背景技術:
被稱作四元數的數字被用于執(zhí)行對象旋轉、球面插值和在三維圖像處理中的類似的東西。四元組是增加了標量值的三維向量,表示在三維空間的軸線和在軸線上的旋轉。四元組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)。當同時執(zhí)行這些操作時,可以增加必要的電路標量。
當兩個四元組被當作兩個四維向量時,每個四元組乘積的分量(Mw,Mx,My和Mz)以兩個四維向量的元素(Aw,Ax,Ay和Az和Bw,Bx,By和Bz)的乘積的求和的形式給出。然而,乘積求和的順序和符號對于每個分量都不同。因此,當電路可以執(zhí)行四維向量的元素的重排列和在乘積求和操作的同時執(zhí)行符號反轉時,四元組乘積可以由四個乘積求和操作來表示。
然而使用32位指令代碼,在包括關于指令域中符號反轉和重排列的信息的同時,所述位數不足以表示具有三個操作數的向量操作指令。因此,經常使用這樣的裝置,該裝置通過另一個指令實現向量重排列和符號反轉,將由重排列和符號反轉所產生的新的向量存儲到另一個寄存器中,然后利用該寄存器執(zhí)行操作。
例如,提供指令來執(zhí)行這樣的向量重排列和符號反轉,所述指令被提供于其中指令集已經由Intel公司開發(fā)的用于多媒體的指令集SSE中(流SIMD擴展)、和其中指令集已經由Motorola公司開發(fā)的用于多媒體的指令集AltiVec等中(見非專利文獻,Intel公司在2004年的“IA-32Intel(R)Architecture Software Developer’s Manual Volume 1BasicArchitecture”,和Motorola公司在1999年6月的“AltiVec TechnologyProgramming Interface Manual”)。
發(fā)明內容
然而,在計算四元組乘積中,即使當使用上述指令來執(zhí)行向量重排列和符號反轉,也有必要應用一個指令來進一步在四個內積的每一個上執(zhí)行向量重排列和符號反轉,因此增加了程序的大小。
因此希望提供響應單指令而計算四元組乘積的SIMD類型處理器。
根據本發(fā)明的第一實施例,提供一種處理器,包括生成第一輸入向量的元素和第二輸入向量的元素的任意組合的數據操作裝置,對所述組合執(zhí)行乘積求和操作的運算裝置,和用于根據第一輸入向量和第二輸入向量的元素的數目,通過數據操作裝置控制組合的生成,和通過運算裝置控制乘積求和操作的重復控制裝置。因此由于對第一輸入向量和第二輸入向量的元素的任意組合重復執(zhí)行乘積求和操作而提供了一種效果。也就是,即使象四元組乘積指令的情況下,當向量的元素的乘積求和操作的組合是復雜的時候,例如,重復控制裝置的重復控制使得四元組乘積的計算響應一個指令而作為處理被執(zhí)行。
在第一個實施例中,重復控制裝置可以包括用于在重復控制裝置的控制下,重排列第二輸入向量的元素的重排列裝置,以及在重復控制裝置的控制下,對重排列裝置的輸出的符號反轉的符號反轉裝置。因此依據順序和符號靈活地生成第一輸入向量和第二輸入向量的元素的任意組合,因而產生了一種效果。
此外,重復控制裝置可以包括計數裝置,用于對對應元素的數目的次數進行計數;以及操作控制裝置,用于根據計數裝置的計數值,控制重排列裝置和符號反轉裝置。因此由于對向量的元素的任意組合重復執(zhí)行乘積求和操作而產生了一種效果。
在第一個實施例中,第二輸入向量可以具有四個元素(Bx,By,Bz和Bw),以及在重復控制裝置的控制下,數據操作裝置可以順序生成第一序列(Bw,Bz,-By和Bx)、第二序列(-Bz,Bw,Bx和By)、第三序列(By,-Bx,Bw和Bz)和第四序列(-Bx,-By,-Bz和Bw)。因此由于提供了計算四元組乘積的一個向量而產生了一種效果。
此外,第一輸入向量可以具有四個元素(Ax,Ay,Az和Aw),以及在重復控制裝置的控制下,運算裝置可以順序執(zhí)行第一乘積求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘積求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘積求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘積求和操作(-AxBx-AyBy-AzBz+AwBw)。因此由于提供了四元組乘積中的每個元素而產生了一種效果。
在第一個實施例中,處理器可以進一步包括大小處理裝置,用來設置超過每個第一輸入向量和第二輸入向量的元素的數目的元素為零。因此即使在第一輸入向量和第二輸入向量的元素的數目很小的時候,由于計算了乘積求和操作的正確結果而產生了一種效果。
根據本發(fā)明的第二實施例,提供了一種處理器,包括保存第一輸入向量和第二輸入向量的向量保存裝置,生成第一輸入向量的元素和第二輸入向量的元素的任意組合的數據操作裝置,對所述組合執(zhí)行乘積求和操作的運算裝置,以及用于根據第一輸入向量和第二輸入向量的元素的數目,通過數據操作裝置控制組合的生成,和通過運算裝置控制的乘積求和操作,并產生作為預定元素保存在向量保存裝置的輸出向量中的乘積求和操作的結果的重復控制裝置。因此由于對由向量保存裝置保存的第一輸入向量和第二輸入向量的元素的任意組合重復執(zhí)行乘積求和操作而提供了一種效果。
根據本發(fā)明的第三實施例,提供了一種處理器,包括保存具有四個元素(Ax,Ay,Az和Aw)的第一輸入向量和具有四個元素(Bx,By,Bz和Bw)的第二輸入向量的向量保存裝置,在執(zhí)行第一輸入向量和第二輸入向量之間操作的指令中提取第一輸入向量和第二輸入向量的元素的數目的提取裝置,用于供應第一輸入向量的元素(Ax,Ay,Az和Aw)的第一供應裝置,用于供應第二輸入向量的元素的第一序列(Bw,Bz,-By和Bx)、第二序列(-Bz,Bw,Bx和By)、第三序列(By,-Bx,Bw和Bz)和第四序列(-Bx,-By,-Bz和Bw)的第二供應裝置,當元素的數目為4時,在第一輸入向量和第二輸入向量的元素的基礎上順序執(zhí)行第一乘積求和操作(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,順序生成外積的每個元素而提供了一種效果。
根據本發(fā)明的第四實施例,提供了一種處理器,作為指令集,具有在具有四個元素(Ax,Ay,Az和Aw)的第一輸入向量和具有四個元素(Bx,By,Bz和Bw)的第二輸入向量之間執(zhí)行操作的指令。該處理器包括提取裝置,用于在執(zhí)行第一輸入向量和第二輸入向量之間操作的指令中提取第一輸入向量和第二輸入向量的元素的數目;以及運算裝置,用于當元素的數目為4時,在第一輸入向量和第二輸入向量的元素的基礎上順序執(zhí)行第一乘積求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘積求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘積求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘積求和操作(-AxBx-AyBy-AzBz+AwBw),并計算四元組乘積。因此由于通過設置元素的數目為4,使得處理器執(zhí)行指令來順序生成四元組乘積的每個元素而提供了一種效果。
在第四實施例中,當元素的數目為3時,在第一輸入向量和第二輸入向量的元素的基礎上,運算裝置可以順序生成第一外積元素(AyBz-AzBy)、第二外積元素(-AxBz+AzBx)和第三外積元素(AxBy-AyBx),并計算外積。因此由于通過設置元素的數目為3使得處理器執(zhí)行指令來順序生成外積的每個元素而提供了一種效果。
本發(fā)明可以響應單指令而產生計算四元組乘積的很好的效果。
附圖1是示出了根據本發(fā)明實施例的SIMD類型計算機系統(tǒng)的配置實例圖;附圖2是示出了在本發(fā)明實施例中的指令格式的實例圖;附圖3是示出了在本發(fā)明實施例中的在函數代碼和大小之間關系的圖;附圖4是表示在本發(fā)明實施例中的由指令解碼器解碼的實例圖;附圖5是示出在本發(fā)明實施例中的重復控制電路的配置的實例圖;附圖6是在本發(fā)明實施例中的由重復控制電路執(zhí)行的用于四元組乘積指令控制的實例圖;附圖7A和7B是在本發(fā)明實施例中由重復控制電路執(zhí)行的用于另一個操作指令控制的實例圖;附圖8是在本發(fā)明實施例中由重復控制電路執(zhí)行的用于另一個操作指令控制的另一個實例圖;附圖9是示出了在本發(fā)明實施例中的寄存器文件的配置的實例圖;附圖10是示出了在本發(fā)明實施例中的大小處理電路的配置的實例圖;附圖11是示出了在本發(fā)明實施例中的大小處理電路中選擇信號的內容的實例圖;附圖12是示出了在本發(fā)明實施例中的數據操作電路配置的實例圖;附圖13是示出了在本發(fā)明實施例中的運算單元配置的實例圖。
具體實施例方式
以下將參照附圖詳細描述本發(fā)明的優(yōu)選實施例。
附圖1是示出了根據本發(fā)明實施例的SIMD類型計算機系統(tǒng)的配置實例圖。這個SIMD類型計算機系統(tǒng)包括處理器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中執(zhí)行讀和寫。寄存器文件140可以同時讀取兩組數據。寄存器文件140分別通過信號線148和149提供兩組數據到大小處理電路161和162。
重復控制電路150通過信號線138接收解碼的信號。根據該信號,重復控制電路150通過信號線151控制寄存器文件140,通過信號線154和155控制數據操作電路170,并通過信號線156控制運算單元180。當如在四元組乘積的情況下需要多次重復操作時,重復控制電路150控制該重復。
每個大小處理電路161和162接收從寄存器文件140讀取的操作數(數據),并執(zhí)行大小處理,其中在超過通過信號線137給出的元素的數目(大小)的輸入數據部分設置值為“0”。
通過信號線169,數據操作電路170接收由大小處理電路162的大小處理產生的操作數,并執(zhí)行例如數據解碼、符號反轉等等的數據操作。由這樣的數據操作產生的操作數通過信號線179提供到運算單元180。
通過信號線156在重復控制電路150的控制下,運算單元180對通過信號線168和信號線179提供的操作數執(zhí)行預定操作。通過信號線156在重復控制電路150的控制下,運算單元180的操作結果通過信號線189被寫到寄存器文件140。
附圖2是示出了在本發(fā)明實施例中的指令格式的實例圖。假定在這種情況下,32位定長指令具有三種操作數作為RISC(精簡指令集計算機)結構類型指令集。處理器100被實現為SIMD類型處理器,其在定長指令的基礎上并行執(zhí)行四種操作的最大值。要注意的是,當在以下的描述中作為例子來假定同時執(zhí)行四種操作時,本發(fā)明不局限于此,可以同時執(zhí)行任意數目的操作。
這個指令格式具有函數代碼210、大小220、寫操作數230、第一讀操作數240和第二讀操作數250。函數代碼210表示指令的操作代碼,并表示本發(fā)明實施例的運算單元180中的操作類型。大小220表示要被操作的數據元素的數目,并被用于根據函數代碼210的控制部分。特別的,根據由解碼器131解碼的結果,選擇器132選擇大小220的一個內容和值“1”,由此確定寫元素的數目223、第一讀元素的數目224、第二讀元素的數目225和重復的數目226。寫元素的數目223是當數據寫到寄存器文件140時的元素的數目。每個第一讀元素的數目224和第二讀元素的數目225是當數據從寄存器文件140讀取時的元素的數目。重復的數目226是當重復控制電路150執(zhí)行重復控制時的重復的數目。附圖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中執(zhí)行讀取的讀地址,并分別包括第一讀寄存器說明241和第二讀寄存器說明251。在本發(fā)明的實施例中,足夠指定要被讀的寄存器,而且并不特別需要在那個寄存器中指定元素。因此沒有提供元素說明的字段。
假定結合四個元素為一組的32字寄存器,例如,被保存為寄存器文件140的配置,需要5位用于寄存器說明,2位用于元素說明。假定相等地分配字段到操作數,分配7位到每個寫操作數230、第一讀操作數240和第二讀操作數250。因為大小220表示在寄存器中的元素的數目,分配2位到大小220。因此,在這種情況中,可以分配32位的9位到函數代碼210。
附圖4是表示在本發(fā)明實施例中由指令解碼器130解碼的實例圖。指令解碼器130通過信號線209解碼從指令存儲器200讀取的指令來提取以下字段。特別地,指令解碼器130輸出函數代碼210、寫元素的數目223、寫元素說明232和重復的數目226到信號線138。另外,指令解碼器130輸出寫寄存器說明231、第一讀寄存器說明241和第二讀寄存器說明251到信號線139。此外,指令解碼器130輸出第一讀元素的數目224和第二讀元素的數目225到信號線137。
附圖5是示出了在本發(fā)明實施例中重復控制電路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是在本發(fā)明實施例中由重復控制電路150執(zhí)行的用于四元組乘積指令控制的實例圖。當函數代碼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中的讀重排列表示當原始狀態(tài)是“XYZW,”時,讀數據在信號線154中被重排列為信號線154中由讀重排列指定的狀態(tài)。當在信號線519中的重復計數表示值“1”時,在信號線154中的讀重排列表示“WZYX”,因此表示讀數據被重排列為與排列的原始順序相反的順序。當在信號線519中的重復計數表示值“2”時,在信號線154中的讀重排列表示“ZWXY”,因此表示讀數據被重排列,以致于第一片數據成為第三片數據、第二片數據成為第四片數據、第三片數據成為第一片數據和第四片數據變成第二片數據。類似的,當在信號線519中的重復計數表示值“3”時,讀數據被重排列為“YXWZ”。當在信號線519中的重復計數表示值“4”時,讀數據以“XYZW”狀態(tài)被輸出(即,輸入實際上是輸出)。
在信號線155中的讀符號反轉表示,當對應符號為“P”時,在具有經過上述重排列的數據上不執(zhí)行符號反轉,當對應符號為“N”時在數據上執(zhí)行符號反轉。當在信號線519中的重復計數表示值“1”時,在信號線155中的讀符號反轉表示“PPNP”,因此表示符號反轉僅僅在第三片數據上執(zhí)行。當在信號線519中的重復計數表示值“2”時,在信號線155中的讀符號反轉表示“NPPP”,因此表示符號反轉僅僅在第一片數據上執(zhí)行。類似的,當在信號線519中的重復計數表示值“3”時,符號反轉僅僅在第二片數據上執(zhí)行。當在信號線519中的重復計數表示值“4”時,僅僅在除了第四片數據之外的數據上執(zhí)行符號反轉。
在信號線154中的讀重排列和在信號線155中的讀符號反轉對應于上述等式1中的四元組乘積的元素的組合順序和符號。
表示內積的值“5”被輸出作為信號線156中的運算單元說明。這個值不依賴于信號線519中的重復計數。
附圖7A和7B是在本發(fā)明實施例中由重復控制電路150執(zhí)行的用于另一個操作指令控制的實例圖。附圖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是在本發(fā)明實施例中由重復控制電路150執(zhí)行的用于另一個操作指令控制的另一個實例圖。當函數代碼210表示加法、減法、乘法、除法、比較或者內積時,在信號線519中的重復計數始終表示值“1”,在信號線154中的讀重排列表示“XYZW”,在信號線155中的讀符號反轉表示“PPPP”。這意味著不在運算單元180中執(zhí)行多個重復,并且也不執(zhí)行讀數據的重排列和符號反轉。
然而,通過信號線156的用于運算單元180的運算單元說明是必要的。在加法的情況中,值“0”被指定。在減法的情況中,值“1”被指定。在乘法的情況中,值“2”被指定。在除法的情況中,值“3”被指定。在比較的情況中,值“4”被指定。在內積的情況中,值“5”被指定。
附圖9是示出了在本發(fā)明實施例中寄存器文件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是示出了在本發(fā)明實施例中大小處理電路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是示出了在本發(fā)明實施例中大小處理電路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是示出了在本發(fā)明實施例中數據操作電路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是示出了在本發(fā)明實施例中運算單元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類型計算機系統(tǒng)中,四元組乘積指令(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”且一個四元組乘積指令被執(zhí)行時,由第一讀操作數240指定的寄存器和由第二讀操作數250指定的寄存器都具有由大小處理電路161和162設置到零的分量W。因為大小220的值“3”同樣被設置作為重復的數目226,由重復計數器510的重復計數519是“1”、“2”或者最大為“3”。在各自的設置中對分量X、Y和Z執(zhí)行三次操作來計算Mx、My和Mz。在這種情況中對于系數(Nx、Ny和Nz),p=0且q=0,這是因為分量W都是零,且計算了三維向量(Ax、Ay、Az)和(Bx、By、Bz)的外積。
因此,根據本發(fā)明的實施例,可以通過利用重復控制電路150對兩個四維向量的乘積求和操作重復四次來計算四元組乘積,同時,在一個向量上執(zhí)行數據操作。因此不結合多個指令就能夠計算具有單四元組乘積指令的四元組乘積,因此減少了程序的大小,并提高了指令緩沖器的利用效率。另外,既然不需要提供用于保存經過重排列和符號反轉的中間數據的寄存器,因此可以提高寄存器的利用效率。
另外,可以通過在與計算四元組乘積的配置相同的配置中應用三維向量來計算外積。特別地,當在函數代碼210中指定四元組乘積指令(qmul)時,可以通過設置大小220為值“4”來計算四元組乘積??梢酝ㄟ^設置大小220為值“3”來計算外積。
要注意的是,雖然本發(fā)明的實施例表示體現本發(fā)明的例子,并與隨后所說明的特定創(chuàng)造性的項目有關,但本發(fā)明不局限于此,在不脫離本發(fā)明精神的情況下可以進行各種修改。
例如,數據操作裝置對應數據操作電路170。例如,運算裝置對應運算單元180。例如,重復控制裝置對應重復控制電路150。
例如,重排列裝置對應選擇器711到714。例如,符號反轉裝置對應符號反相器721到724和選擇器731到734。
例如,計數裝置對應重復計數器510。例如,操作控制裝置對應操作控制電路520。
例如,大小處理裝置對應大小處理電路161和162。
例如,向量保存裝置對應寄存器文件140。例如,數據操作裝置對應數據操作電路170。例如,運算裝置對應運算單元180。例如,重復控制裝置對應重復控制電路150。
例如,向量保存裝置對應寄存器文件140。例如,提取裝置對應指令解碼器130。例如,第一供應裝置對應寄存器文件140。例如,第二供應裝置對應數據操作電路170。例如,運算裝置對應運算單元180。
例如,提取裝置對應指令解碼器130。例如,運算裝置對應運算單元180。
要注意的是,在本發(fā)明實施例中所述的處理過程可以被解釋為具有一系列步驟的方法、或者解釋為使計算機執(zhí)行一系列程序的程序或存儲該程序的記錄介質。
例如,作為本發(fā)明實際使用的例子,本發(fā)明可以應用到執(zhí)行向量操作的SIMD類型處理器。
本領域技術人員可以理解的是,在附加的權利要求書或與之等價的范圍之內,可以根據設計要求和其它因素產生各種修改、組合、子組合和替換。
權利要求
1.一種處理器,包括數據操作裝置,用于生成第一輸入向量的元素和第二輸入向量的元素的任意組合;運算裝置,用于對所述組合執(zhí)行乘積求和操作;以及重復控制裝置,用于根據所述第一輸入向量和所述第二輸入向量的元素的數目,通過所述數據操作裝置控制所述組合的生成,并通過所述運算裝置控制所述乘積求和操作。
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),以及在所述重復控制裝置的控制下,所述運算裝置順序執(zhí)行第一乘積求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘積求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘積求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘積求和操作(-AxBx-AyBy-AzBz+AwBw)。
6.如權利要求1所述的處理器,進一步包括大小處理裝置,用于設置超過每個所述第一輸入向量和所述第二輸入向量的所述元素的數目的元素為零。
7.一種處理器,包括向量保存裝置,用于保存第一輸入向量和第二輸入向量;數據操作裝置,用于生成所述第一輸入向量的元素和所述第二輸入向量的元素的任意組合;運算裝置,用于對所述組合執(zhí)行乘積求和操作;以及重復控制裝置,用于根據所述第一輸入向量和所述第二輸入向量的元素的數目,通過所述數據操作裝置控制所述組合的生成,和通過所述運算裝置控制所述乘積求和操作,并產生作為預定元素保存在所述向量保存裝置的輸出向量中的乘積求和操作的結果。
8.一種處理器,包括向量保存裝置,用于保存具有四個元素(Ax,Ay,Az和Aw)的第一輸入向量和具有四個元素(Bx,By,Bz和Bw)的第二輸入向量;提取裝置,在執(zhí)行所述第一輸入向量和所述第二輸入向量之間操作的指令中,用于提取所述第一輸入向量和所述第二輸入向量的元素的數目;第一供應裝置,用于供應所述第一輸入向量的元素(Ax,Ay,Az和Aw);第二供應裝置,用于供應所述第二輸入向量的元素的第一序列(Bw,Bz,-By和Bx)、第二序列(-Bz,Bw,Bx和By)、第三序列(By,-Bx,Bw和Bz)和第四序列(-Bx,-By,-Bz和Bw);以及運算裝置,用于當所述元素的數目為4時,在所述第一輸入向量和所述第二輸入向量的元素的基礎上順序執(zhí)行第一乘積求和操作(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)的第二輸入向量之間執(zhí)行操作的指令,所述處理器包括提取裝置,在執(zhí)行所述第一輸入向量和所述第二輸入向量之間操作的指令中,用于提取所述第一輸入向量和所述第二輸入向量的元素的數目;以及運算裝置,用于當所述元素的數目為4時,在所述第一輸入向量和所述第二輸入向量的元素的基礎上順序執(zhí)行第一乘積求和操作(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.一種處理器,包括數據操作器,用于生成第一輸入向量的元素和第二輸入向量的元素的任意組合;運算部分,用于對所述組合執(zhí)行乘積求和操作;以及重復控制器,用于根據所述第一輸入向量和所述第二輸入向量的元素的數目,通過所述數據操作器控制所述組合的生成,并通過所述運算部分控制所述乘積求和操作。
13.一種處理器,包括向量保存器,用于保存第一輸入向量和第二輸入向量;數據操作器,用于生成所述第一輸入向量的元素和所述第二輸入向量的元素的任意組合;運算部分,用于對所述組合執(zhí)行乘積求和操作;以及重復控制器,用于根據所述第一輸入向量和所述第二輸入向量的元素的數目,通過所述數據操作器控制所述組合的生成,和通過所述運算部分控制所述乘積求和操作,并產生作為預定元素保存在所述向量保存器的輸出向量中的乘積求和操作的結果。
14.一種處理器,包括向量保存器,用于保存具有四個元素(Ax,Ay,Az和Aw)的第一輸入向量和具有四個元素(Bx,By,Bz和Bw)的第二輸入向量;提取器,在執(zhí)行所述第一輸入向量和所述第二輸入向量之間操作的指令中,用于提取所述第一輸入向量和所述第二輸入向量的元素的數目;第一供應器,用于供應所述第一輸入向量的元素(Ax,Ay,Az和Aw);第二供應器,用于供應所述第二輸入向量的元素的第一序列(Bw,Bz,-By和Bx)、第二序列(-Bz,Bw,Bx和By)、第三序列(By,-Bx,Bw和Bz)和第四序列(-Bx,-By,-Bz和Bw);以及運算部分,用于當所述元素的數目為4時,在所述第一輸入向量和所述第二輸入向量的元素的基礎上順序執(zhí)行第一乘積求和操作(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)的第二輸入向量之間執(zhí)行操作的指令,所述處理器包括提取器,在執(zhí)行所述第一輸入向量和所述第二輸入向量之間操作的指令中,用于提取所述第一輸入向量和所述第二輸入向量的元素的數目以及運算部分,用于當所述元素的數目為4時,在所述第一輸入向量和所述第二輸入向量的元素的基礎上順序執(zhí)行第一乘積求和操作(AxBw+AyBz-AzBy+AwBx)、第二乘積求和操作(-AxBz+AyBw+AzBx+AwBy)、第三乘積求和操作(AxBy-AyBx+AzBw+AwBz)和第四乘積求和操作(-AxBx-AyBy-AzBz+AwBw),并計算四元組乘積。
全文摘要
本發(fā)明提供一種處理器,包括數據操作裝置,用于生成第一輸入向量的元素和第二輸入向量的元素的任意組合;運算裝置,用于對所述組合執(zhí)行乘積求和操作;和重復控制裝置,用于根據第一輸入向量和第二輸入向量的元素的數目,通過數據操作裝置控制組合的生成,和通過運算裝置控制乘積求和操作。
文檔編號G06F15/80GK1783054SQ20051002303
公開日2006年6月7日 申請日期2005年11月22日 優(yōu)先權日2004年11月22日
發(fā)明者坂口浩章, 長谷川浩一 申請人:索尼株式會社