專利名稱:一種數據的重排裝置的制作方法
技術領域:
本發(fā)明涉及微處理器和計算機系統(tǒng)領域,具體地說,涉及面向處理器的并行處理, 尤其是并行數據的重排裝置。
背景技術:
隨著處理器技術的進步,處理器的速度不斷提高,性能不斷增強,同時用戶對計算機或者處理器的要求越來越高。但是僅僅依靠電子元件的加速來滿足需求是遠遠不夠的, 因此提高計算機的并行處理能力及增加有效的處理指令變的尤其重要。在現有的技術方案中,中國專利CN 200480018443. 8介紹了一種重排數據的裝置,具體的說明如下第一和第二操作數是SIMD寄存器,但,第二操作數的寄存器也可用存儲器位置替換。第一操作數包括用于重排的源數據,對于第一操作數的寄存器也是目的寄存器。除了改變它們的位置,根據本發(fā)明的實施例還包括將選定的字節(jié)設定到零的能力。第二操作數包括一組重排控制掩碼字節(jié)以指定重排模式。用于選擇源數據元素的比特數是源操作數中數據元素數量的log2.例如,一個64比特寄存器,分為8個字節(jié)數,因此需要三個比特指示源操作數中數據元素的數量。以下代碼中的[2:0]指數表示3個比特。 如果置位了重排控制字節(jié)的最高有效比特7,則將常數零寫入結果字節(jié)。否則如果第二操作數的字節(jié)I的最低有效三位包含整數J,則重排指令使得第一源寄存器的第J個字節(jié)被復制到目的寄存器的第I字節(jié)位置。以下是用于64BIT操作數的緊縮字節(jié)重排操作的一個實施例的示例性偽碼
For i=0to7{
If(SRC2[(i*8)+7]=-l)
DEST[(i*8)+7...(i*8)+0]<-0 Else
Index[2:0]<- SRC2[(i*8)+2...(i*8)+0]
DEST[(i*8)+7...(i*8)+0]<-SRCl/DEST[(Index*8)+7.,.(Index*8)+0]
}上述專利CN 200480018443. 8,在技術上的局限性是其一,在通信數據處理中,特別是FFT運算中,有時僅僅需要對2個源寄存器中的部分數據進行互換,下一周期即對源數據寄存器進行操作。英特爾的重排裝置如果要達到這種目的,需要增加很多冗余指令。其二,英特爾技術專利支持對一個數據源進行重排,而在通信數據處理中,需要對兩個源或者三個源進行重排。其三,英特爾技術專利不支持對原有數據的保持,英特爾第一源操作數是源寄存
器也是目的寄存器,它僅僅是對一個矢量源操作數進行重排,這樣雖然節(jié)省了 1個寄存器,但是對于即要保留原有數據又要求對原有數據進行重排的處理增加工作難度及工作任務。本發(fā)明有效地解決了上述問題,通過本發(fā)明的重排指令,實現諸如FFT運算所需要的指令數量會急劇的減少,提高了處理速度;同時,本發(fā)明可以對兩個源或者三個源甚至多源進行重排;能夠實現即保留原有數據,又對原有數據進行重排的處理。另外,本發(fā)明除了支持重排數據的歸零,還增添了對重排數據置位和置負一的功能。
發(fā)明內容為了解決上述問題,本發(fā)明提出一種數據的重排裝置。本發(fā)明的數據重排裝置是作為處理器的一個組成部件,其執(zhí)行的過程按照 VLIW(超長指令字)處理器的操作過程進行,在具體實現重排的過程,體現出本發(fā)明的內容。本發(fā)明的數據重排裝置包括指令存儲單元,用來存儲將要執(zhí)行的指令代碼;數據存儲單元,用來存儲指令代碼執(zhí)行所需的數據指令讀?。恢噶钭x取和分發(fā)單元,該單元將指令代碼從指令存儲單元中讀取并發(fā)送給所有執(zhí)行單元;矢量數據處理單元,該單元用來執(zhí)行指令代碼當中的矢量處理指令;矢量寄存器組,包含矢量寄存器VR0,VR1,…,Vfoi,用來存放來自數據存儲單元的數據,其運算單元則從適量寄存器組中讀寫數據;矢量重排順序寄存器組,包含矢量重排順序寄存器VRJFGO,VR_CFG1,VR_ CFG2,…,VR_CFGn,用來配置參與矢量重排運算的單元,來選擇部分或是全部矢量元算單元參與運算。[0021]所述數據的重排是按照VLIW處理器的操作過程在矢量數據處理單元中完成。所述指令讀取和分發(fā)單元從所述指令存儲單元中讀取重排指令,然后分發(fā)給所述矢量數據處理單元,所述矢量數據處理單元根據所述重排指令執(zhí)行重排操作;所述矢量數據處理單元根據所述重排指令將待重排數據隊列從所述數據存儲單元讀入到所述矢量寄存器組源的寄存器中,所述源寄存器的指定是由所述重排指令決定的;所述矢量數據處理單元根據指令要求以及所述矢量重排順序寄存器的內容,完成對所述矢量寄存器組內保存的數據元素的重排操作,結果存放在所述矢量寄存器組目標寄存器中,所述目標寄存器的指定是由重排指令決定的;將存放在所述目標寄存器內重排后的結果,存放到所述數據存儲單元中。根據本發(fā)明的數據重排按功能可以可分為兩大類,一類是對兩個源寄存器中的數據互換重排,在互換重排中參與重排的兩個源寄存器也是兩個目的寄存器。另一大類是對一個源,兩個源,三個源或者多源的數據進行重排。其主要功能是可以根據實際要求,把一個源,兩個源,三個源或者多源的數據任意排列其位置,結果放入一個目的寄存器中。本發(fā)明僅僅需要一條指令周期即完成2個源寄存器中的部分數據互換重排。減少了某些算法所帶來的冗余指令。提高了處理器的計算速度。本發(fā)明支持對多個源數據寄存器的重排,如一個源、兩個源、三個源等。本發(fā)明支持對目的寄存器中的部分數據進行保持,而其他部分正常的接收重排的
4數據,源寄存器中的數據保持不變。本發(fā)明除了支持重排數據的歸零,還增添了對重排數據置位和置負一的功能。
參照如下附圖將更加易于理解本發(fā)明圖1所示為本發(fā)明的數據重裝置執(zhí)行處理的流程圖圖2所示為本發(fā)明的數據重排裝置的結構框圖;圖3所示為兩個源的數據互換示意圖;圖4兩個源寄存器互換之后的數據內容;圖5八點FFT運算流圖;圖6 —級蝶形運算后的中間結果值;圖7為兩個源的數據互換重排實例;圖8所示為三個源的數據重排示意圖。
具體實施方式
本發(fā)明的數據重排裝置包括指令存儲單元,數據存儲單元,指令讀取和分發(fā)單元,矢量數據處理單元,矢量寄存器組,矢量重排順序寄存器組。所述數據的重排是按照 VLIff處理器的操作過程在矢量數據處理單元中完成。在完成一次數據重排過程中,首先將重排指令由指令存儲單元中讀入到指令讀取和分發(fā)單元中,再由指令讀取單元將重排指令分發(fā)到矢量數據處理單元中,由矢量數據處理單元執(zhí)行重排操作。矢量數據處理單元根據重排指令,首先將待重排數據隊列從數據存儲單元讀入到矢量寄存器組源寄存器中,源寄存器的指定是由重排指令決定的;然后將配置順序完加載到矢量重排順序寄存器組VR_CFG0,VR_CFG1,…,VR_CF&i當中(是否需要配置順序寄存器這一步,根據數據重排功能,是可選的);矢量數據處理單元根據指令要求以及矢量重排順序寄存器的內容,完成對矢量寄存器組內保存的數據元素的重排操作,結果存放在矢量寄存器組目標寄存器中,目標寄存器的指定是由重排指令決定的;最后,將存放在目標寄存器內重排后的結果,存放到數據存儲單元對應空間中。這樣就完成了一次數據重排操作。根據本發(fā)明的數據重排裝置,按功能分為兩大類對兩個源寄存器中的數據互換重排;對一源、二源、三源等多源的數據重排。對兩個源寄存器中的數據互換重排時,執(zhí)行如下步驟步驟1,將執(zhí)行重排所需指令由指令存儲單元中讀取出來送至矢量數據處理單元, 這是一個指令或一組指令。步驟2,根據一個重排指令,將待互換重排數據由數據存儲單元加載到矢量寄存器組中的二個寄存器當中。這兩個寄存器作為重排的源寄存器,同時也是目的寄存器。步驟3,根據圖表3指示,對兩個源寄存器互換重排。重排后的結果依然存儲在這兩個寄存器中,互換重排后的結果如圖4所示。步驟4,將目標寄存器VRO,VRl,…,VRn寫回到數據存儲器。對一源、二源、三源等多源的數據重排時,執(zhí)行如下步驟[0046]首先,將執(zhí)行重排所需指令(一個指令或一組指令)由指令存儲單元中讀取出來送至矢量數據處理單元。其次,根據一個重排指令或一組重排指令,將待重排數據由數據存儲單元加載到矢量寄存器組中的某一個,某二個,或多個寄存器當中。這些寄存器作為重排的源寄存器。第三,加載矢量重排順序寄存器,將矢量重排順序數值加載到矢量重排順序寄存器VR_CFG0,CFG1,CFG2,…,CFGn ;矢量重排寄存器的個數和目標寄存器的個數相同。按照矢量重排順序寄存器VR_CFG的內容將數據從源矢量寄存器VR0,VR1,…,Vfoi寫入到目標矢量寄存器VRm當中;同時根據矢量重排順序寄存器VR_CFG對應位置的內容判斷將目標寄存器VRm的內容置為0或-1或保持原值。最后,將目標寄存器VRO,VR1,…,Vfoi寫回到數據存儲單元;下面,對于本發(fā)明的數據重排裝置所實現的兩類功能,即支持2個源寄存器中的數據互換重排,以及支持一源、二源、三源等多源數據的重排,參照附圖具體說明如下。對支持2個源寄存器數據重排操作而言,如附圖3所示,以1 位矢量寄存器為例 (本發(fā)明不限于1 位,也可以為256位,512位等)首先,指令讀取和分發(fā)單元從指令存儲單元中讀取重排指令,將指令傳遞給矢量執(zhí)行單元,矢量執(zhí)行根據指令從數據存儲單元讀取8個16位數據X(0),X(1),X(2),X(3),X (4),X (5),X (6),X (7),并加載到矢量寄存器組中的矢量寄存器VRO中,其中VRO是128bit寄存器。再加載另外8個16位數據Y(O),Y(I), Y⑵,Y (3) ,Y(4),Y(5),Y (6),Y (7)到128為矢量寄存器VRl中。這16個數據就是要進行重排的數據源,VRO和VRl就是重排指令的源寄存器。執(zhí)行2個源寄存器數據重排操作,此時,矢量重排順序寄存器的內容如圖所示,如圖3所示進行互換重排,即把箭頭所指示的部分互換,Y(O)與X(I)互換,Y (2)與Χ(3)互換,Y (4)與Χ(5)互換,Y (6)與X (7)互換。互換后 VRO 中的數據 X(0),Y (0) ,X(2),Y(2),X (4) ,Υ(4),Χ(6),Υ (6) ; VRl 中的數據為 X(I), Y(I),X⑶,Y (3),X (5) ,Y (5),Χ(7),Υ(7),如圖 4 所示。下面以應用實列來說明本發(fā)明的優(yōu)勢,以8點FFT為例,在FFT運算中考慮到數據的并行運算,8點FFT流圖如圖表五所示,可以對加載的八點數據X(O),X(I),XQ),Χ(3), Χ(4),Χ(5),Χ(6),Χ(7)重排。從8點FFT的流圖上可以看出,每次蝶形運算有一次復數乘法,兩次復數加法。在第一級蝶形運算中,數據分成2組,存入兩個矢量寄存器中。X(O),
X(2),X(I),X (3)放入矢量寄存器VRO中,X (4),X (6),X (5),X (7)放入矢量寄存器VRl中, 由圖六可以看出,X⑷,X (6),X (5),X (7)需要乘上旋轉因子WnO,再與X (4),X (6),X (5), X(7)完成加減法運算。因為WnO為一,所以直接完成X(O)X⑵X(1)X(3)于X(4)X(6)X(5) X(7)加減法運算,得出第一級蝶形運算后的中間結果。即VR0+VR1,VRO-VRl。把VR0+VR1的結果存入VR2中,VRO-VRl的結果存入VR3中。VR2,VR3中的結果如圖六所示。VR2的值對應第一級蝶形運算后的Xl (O)Xl O) Xl (4) Xl (6),VR3的值對應第一級蝶形運算后的Xl (1)
XI(3)Xl (5)Xl (7)。從FFT的流圖可以看出在第二級蝶形運算中,Xl (2)X1 (3)X1 (6)X1 (7) 要分別乘上旋轉因子WnO,Wn2, WnO, Wn2,如果考慮到DSP的并行運算,需要把Xl O) Xl (3) Xl (6)Xl (7)放入一個矢量運算單元中,這樣一個矢量乘法指令,即可完成Xl O)*Wn0, Xl(3)*Wn2,Xl(6)*WnO,Xl(7)*Wn2,乘后的結果在于 X I(O)X I(I)X 1(4)X 1(5)相加減。 因此把X 1(2) X 1(3) Xl (6) X 1(7)放入一個矢量寄存器中,X 1 (2) Xl (3) Xl (6) X 1(7)放入一個寄存器中。要實現上述功能需要對VR2和VR3中的數據進行互換重排即可完成。結果如圖7所示。以上所述,此裝置在一個時鐘周期即完成2個源寄存器中的部分數據互換重排。 減少了某些算法所帶來的冗余指令,提高了處理器的運算速度。本發(fā)明的數據重排裝置除了支持兩個源寄存器中的數據互換重排,還支持對一個源,兩個源,三個源或者多源進行重排。其主要功能是可以根據實際要求,把一個源,兩個源,三個源或者多源的數據任意排列其位置,結果放入一個目的寄存器中。過程如下其一在矢量重排順序寄存器組VR_(FG寄存器中,如果16BIT數據(I位置)的最高位為1,則所對應VR3中的第i位置的數據為0。其二矢量重排順序寄存器組VR_CFG寄存器中,如果16BIT數據(I位置)的次高位為1,則所對應VR3中的第I位置的數據為1。其三矢量重排順序寄存器組VR_CFG寄存器中,如果16BIT數據(I位置)的次次高位為1,則所對應VR3中的第I位置的數據為-1。其四矢量重排順序寄存器組VR_CFG寄存器中,如果16BIT數據(I位置)的小于 24,且數據為J,重排指令使得源寄存器的第J個16BIT數據被復制到目的寄存器的第I位置。其五在矢量重排順序寄存器組VR_(FG寄存器中,除上述以外的情況,則對所對應 VR3中的第I位置的數據保持不變。在本設計中,如圖8所示,所有的矢量寄存器的都是1 位的,此實例矢量寄存器雖然是1 位的,但本發(fā)明不限于1 位,256位,512位等。1 位分為8個16BIT的數據。 VR.CFG分為8個16BIT的數據,指定重排的模式,三個源寄存器VRO、VRU VR2為將要被重排的數據,一個目的寄存器VR3存儲重排后的數據。VR0、VR1、VR2共有數據,對應的十進制位置為0-23,用16進制表示為 0-17。V RO對應的位置從左到右為0-7,VRl對應的位置從左到右為8_F,VR2對應的位置從左到右為10-17。加載矢量重排順序寄存器VR-CFG,VR-CFG所對應的8個16BIT的數據從左到右分別為 IC F 3F001178005500F。矢量重排順序寄存器的執(zhí)行如下如下操作VR-CFG矢量重排順序寄存器中的第一個16BIT數據為1,即把VRO對應位置中的數據X(I)放入目的寄存器中第一個16BIT中;VR-CFG矢量重排順序寄存器中的第二個 16BIT數據為C,即把VRl對應位置中的數據Y⑷放入目的寄存器中第二個16BIT中,以此類推VR-CFG矢量重排順序寄存器中的第三個數據,第四個數據。當VR-CFG矢量重排順序寄存器中的第五個16B1T數據為FOOl時,即最高位為一,即把目的寄存器所對應位置的數據置0 ;當VR-CFG矢量重排順序寄存器中的第七個16BIT數據為8001時,即次高位為一, 即把目的寄存器所對應位置的數據置1 ;當VR-CFG矢量重排順序寄存器中的第八個16BIT 數據為500f時,即次次高位為一,即把目的寄存器所對應位置的數據置-1。
權利要求1. 一種數據重排裝置,所述數據重排裝置作為處理器的一個組成部件,按照VLIW處理器的操作過程,在矢量數據處理單元中執(zhí)行數據重排操作,其特征在于所述數據重排裝置包括指令存儲單元,用來存儲將要執(zhí)行的指令代碼;數據存儲單元,用來存儲指令代碼執(zhí)行所需的數據指令讀?。恢噶钭x取和分發(fā)單元,該單元將指令代碼從指令存儲單元中讀取并發(fā)送給所有執(zhí)行單元;矢量數據處理單元,該單元用來執(zhí)行指令代碼當中的矢量處理指令; 矢量寄存器組,包含矢量寄存器VRO,VRl,…,Vfoi,用來存放來自所述數據存儲單元的數據,其運算單元則從適量寄存器組中讀寫數據;矢量重排順序寄存器組,包含矢量重排順序寄存器VR_CFG0,VR_CFG1,VR_CFG2,…,VR_ CFGn,用來配置參與矢量重排運算的單元,來選擇部分或是全部矢量元算單元參與運算。
專利摘要一種數據重排裝置,作為處理器的一個組成部件,按照VLIW處理器的操作過程,在矢量數據處理單元中執(zhí)行數據重排操作,所述數據重排裝置包括指令存儲單元,用來存儲將要執(zhí)行的指令代碼;數據存儲單元,用來存儲指令代碼執(zhí)行所需的數據指令讀?。恢噶钭x取和分發(fā)單元,該單元將指令代碼從指令存儲單元中讀取并發(fā)送給所有執(zhí)行單元;矢量數據處理單元,該單元用來執(zhí)行指令代碼當中的矢量處理指令;矢量寄存器組,包含矢量寄存器VR0,VR1,…,VRn,用來存放來自所述數據存儲單元的數據,其運算單元則從適量寄存器組中讀寫數據;矢量重排順序寄存器組,包含矢量重排順序寄存器VR_CFG0,VR_CFG1,VR_CFG2,…,VR_CFGn,用來配置參與矢量重排運算的單元,來選擇部分或是全部矢量元算單元參與運算。
文檔編號G06F9/315GK202133997SQ201120156918
公開日2012年2月1日 申請日期2011年5月17日 優(yōu)先權日2011年2月28日
發(fā)明者孫瑞琛 申請人:江蘇中科芯核電子科技有限公司