專利名稱:一種數(shù)據(jù)的重排方法及重排裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器和計算機系統(tǒng)領(lǐng)域,具體地說,涉及面向處理器的并行處理, 尤其是并行數(shù)據(jù)的重排方法及重排裝置。
背景技術(shù):
隨著處理器技術(shù)的進步,處理器的速度不斷提高,性能不斷增強,同時用戶對計算 機或者處理器的要求越來越高。但是僅僅依靠電子元件的加速來滿足需求是遠遠不夠的, 因此提高計算機的并行處理能力及增加有效的處理指令變的尤其重要。在現(xiàn)有的技術(shù)方案中,中國專利CN 200480018443. 8介紹了一種重排數(shù)據(jù)的方法 和裝置,具體的說明如下第一和第二操作數(shù)是SIMD寄存器,但,第二操作數(shù)的寄存器也可用存儲器位置替 換。第一操作數(shù)包括用于重排的源數(shù)據(jù),對于第一操作數(shù)的寄存器也是目的寄存器。除了 改變它們的位置,根據(jù)本發(fā)明的實施例還包括將選定的字節(jié)設(shè)定到零的能力。第二操作數(shù)包括一組重排控制掩碼字節(jié)以指定重排模式。用于選擇源數(shù)據(jù)元素的 比特數(shù)是源操作數(shù)中數(shù)據(jù)元素數(shù)量的log2.例如,一個64比特寄存器,分為8個字節(jié)數(shù),因 此需要三個比特指示源操作數(shù)中數(shù)據(jù)元素的數(shù)量。以下代碼中的[2:0]指數(shù)表示3個比特。 如果置位了重排控制字節(jié)的最高有效比特7,則將常數(shù)零寫入結(jié)果字節(jié)。否則如果第二操作 數(shù)的字節(jié)I的最低有效三位包含整數(shù)J,則重排指令使得第一源寄存器的第J個字節(jié)被復(fù)制 到目的寄存器的第I字節(jié)位置。以下是用于64BIT操作數(shù)的緊縮字節(jié)重排操作的一個實施 例的示例性偽碼
權(quán)利要求
1.一種數(shù)據(jù)重排裝置,所述數(shù)據(jù)重排裝置作為處理器的一個組成部分,按照VLIW處理 器的操作過程,在矢量數(shù)據(jù)處理單元中執(zhí)行數(shù)據(jù)重排操作,其特征在于所述數(shù)據(jù)重排裝置 包括指令存儲單元,用來存儲將要執(zhí)行的指令代碼;數(shù)據(jù)存儲單元,用來存儲指令代碼執(zhí)行所需的數(shù)據(jù)指令讀??;指令讀取和分發(fā)單元,該單元將指令代碼從指令存儲單元中讀取并發(fā)送給所有執(zhí)行單元;矢量數(shù)據(jù)處理單元,該單元用來執(zhí)行指令代碼當(dāng)中的矢量處理指令; 矢量寄存器組,包含矢量寄存器VRO,VRl,…,Vfoi,用來存放來自所述數(shù)據(jù)存儲單元的 數(shù)據(jù),其運算單元則從適量寄存器組中讀寫數(shù)據(jù);矢量重排順序寄存器組,包含矢量重排順序寄存器VR_CFG0,VR_CFG1,VR_CFG2,…,VR_ CFGn,用來配置參與矢量重排運算的單元,來選擇部分或是全部矢量元算單元參與運算。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)重排裝置,用于對兩個源寄存器中的數(shù)據(jù)互換重排,或 者用于對一源、二源、三源等多源的數(shù)據(jù)重排。
3.根據(jù)權(quán)利要求1或2所述的數(shù)據(jù)重排裝置,其中,所述指令讀取和分發(fā)單元從所述指令存儲單元中讀取重排指令,然后分發(fā)給所述矢量 數(shù)據(jù)處理單元,所述矢量數(shù)據(jù)處理單元根據(jù)所述重排指令執(zhí)行重排操作;所述矢量數(shù)據(jù)處理單元根據(jù)所述重排指令將待重排數(shù)據(jù)隊列從所述數(shù)據(jù)存儲單元讀 入到所述矢量寄存器組源的寄存器中,所述源寄存器的指定是由所述重排指令決定的;所述矢量數(shù)據(jù)處理單元根據(jù)指令要求以及所述矢量重排順序寄存器的內(nèi)容,完成對所 述矢量寄存器組內(nèi)保存的數(shù)據(jù)元素的重排操作,結(jié)果存放在所述矢量寄存器組目標(biāo)寄存器 中,所述目標(biāo)寄存器的指定是由重排指令決定的;將存放在所述目標(biāo)寄存器內(nèi)重排后的結(jié)果,存放到所述數(shù)據(jù)存儲單元中。
4.一種數(shù)據(jù)重排方法,通過一條指令周期即完成兩個源寄存器中的部分數(shù)據(jù)互換重 排,其特征在于包括如下步驟步驟1,將執(zhí)行重排所需重排指令由指令存儲單元中讀取出來送至矢量數(shù)據(jù)處理單元, 所需重排指令是一個指令或一組指令;步驟2,根據(jù)所述重排指令,將待重排數(shù)據(jù)由數(shù)據(jù)存儲單元加載到矢量寄存器組中的兩 個寄存器當(dāng)中,這兩個寄存器作為重排的兩個源寄存器,同時也是兩個目的寄存器; 步驟3,對所述兩個源寄存器互換重排,重排后的結(jié)果依然存儲在這兩個寄存器中; 步驟4,將目標(biāo)寄存器VRO,VRl,…,VRn寫回到數(shù)據(jù)存儲器。
5.一種數(shù)據(jù)重排方法,其特征在于包括如下步驟步驟1,將執(zhí)行重排所需重排指令由指令存儲單元中讀取出來送至矢量數(shù)據(jù)處理單元, 所需重排指令是一個指令或一組指令。步驟2,根據(jù)所述重排指令,將待重排數(shù)據(jù)由數(shù)據(jù)存儲單元加載到矢量寄存器組中的一 個或兩個或多個寄存器當(dāng)中,這些寄存器作為重排的源寄存器。步驟3,加載矢量重排順序寄存器,將矢量重排順序數(shù)值加載到矢量重排順序寄存器 VR_CFGa,VR_CFGb,VR_CFGc,…,VR_CFGm ;所述矢量重排寄存器的個數(shù)和目標(biāo)寄存器的個數(shù) 相同;按照所述矢量重排順序寄存器的內(nèi)容將數(shù)據(jù)從源矢量寄存器VRO,VRl,…,VRn寫入到目標(biāo)矢量寄存器VRa,VRb, VRc,…,VRm當(dāng)中;同時根據(jù)所述矢量重排順序寄存 器VR_CFGa,VR_CFGb, VR_CFGc,…,VR_CFGm對應(yīng)位置的內(nèi)容判斷將所述目標(biāo)寄存器VI a, VRb, VRc,…,VR的內(nèi)容置為0或-1或保持原值;步驟4,將目標(biāo)寄存器VRa,VRb, VRc,…,VRm寫回到數(shù)據(jù)存儲器。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)重排方法,其中在所述步驟3中,所述源寄存器按照所述 重排寄存器中的內(nèi)容,放入到目標(biāo)寄存器中。
7.根據(jù)權(quán)利要求6所述的數(shù)據(jù)重排方法,其中所述目標(biāo)寄存器可以是一個或多個矢量 寄存器,不同目標(biāo)寄存器對應(yīng)的重排順序由各自的充排順序寄存器來確定。
8.一種數(shù)據(jù)重排方法,其特征在于包括如下步驟步驟1,在矢量重排順序寄存器組VR_CFG寄存器中,如果數(shù)據(jù)的最高位為1,則所對應(yīng) 目標(biāo)寄存器VRm中的第i位置的數(shù)據(jù)為0 ;步驟2,矢量重排順序寄存器組VR_CFG寄存器中,如果數(shù)據(jù)的次高位為1,則所對應(yīng)目 標(biāo)寄存器VRm中的第I位置的數(shù)據(jù)為1 ;步驟3,矢量重排順序寄存器組VR_CFG寄存器中,如果數(shù)據(jù)的次次高位為1,則所對應(yīng) 目標(biāo)寄存器VRm中的第I位置的數(shù)據(jù)為-1 ;步驟4,矢量重排順序寄存器組VR_CFG寄存器中,如果數(shù)據(jù)小于對,且數(shù)據(jù)為J,重排指 令使得源寄存器的第J個數(shù)據(jù)被復(fù)制到目的寄存器的第I位置;步驟5,在矢量重排順序寄存器組VR_CFG寄存器中,除上述以外的情況,則對所對應(yīng)目 標(biāo)寄存器VRm中的第I位置的數(shù)據(jù)保持不變。
9.一種數(shù)據(jù)重排方法,其特征在于包括如下步驟步驟1,在矢量重排順序寄存器組VR_CFGa,VR_CFGb,VR_CFGc,…,VR_CFGm寄存器中, 如果數(shù)據(jù)的最高位為1,則所對應(yīng)目標(biāo)寄存器VRa,VRb, VRc,…,VRm中的第i位置的數(shù)據(jù) 為零;步驟2,矢量重排順序寄存器組VR_CFGa,VR_CFGb,VR_CFGc,…,VR_CFGm寄存器中,如 果數(shù)據(jù)的次高位為1,則所對應(yīng)目標(biāo)寄存器VRa,VRb, VRc,…,VRm中的第I位置的數(shù)據(jù)為 1 ;步驟3,矢量重排順序寄存器組VR_CFGa,VR_CFGb,VR_CFGc,…,VR_CFGm寄存器中,如 果數(shù)據(jù)的次次高位為1,則所對應(yīng)目標(biāo)寄存器VRa,VRb, VRc,…,VRm中的第I位置的數(shù)據(jù) 為-1 ;步驟4,矢量重排順序寄存器組VR_CFGa,VR_CFGb,VR_CFGc,…,VR_CFGm寄存器中,如 果數(shù)據(jù)小于24,且數(shù)據(jù)為J,重排指令使得源寄存器的第J個數(shù)據(jù)被復(fù)制到目的寄存器VRa, VRb, VRc,…,VRm的第I位置;步驟5,在矢量重排順序寄存器組VR_CFGa,VR_CFGb,VR_CFGc,…,VR_CFGm寄存器中, 除上述以外的情況,則對所對應(yīng)目標(biāo)寄存器VRa,VRb,VRc,…,VRm中的第I位置的數(shù)據(jù)保 持不變。
全文摘要
一種數(shù)據(jù)重排裝置,作為處理器的一個組成部分,按照VLIW處理器的操作過程,在矢量數(shù)據(jù)處理單元中執(zhí)行數(shù)據(jù)重排操作,所述數(shù)據(jù)重排裝置包括指令存儲單元,用來存儲將要執(zhí)行的指令代碼;數(shù)據(jù)存儲單元,用來存儲指令代碼執(zhí)行所需的數(shù)據(jù)指令讀取;指令讀取和分發(fā)單元,該單元將指令代碼從指令存儲單元中讀取并發(fā)送給所有執(zhí)行單元;矢量數(shù)據(jù)處理單元,該單元用來執(zhí)行指令代碼當(dāng)中的矢量處理指令;矢量寄存器組,包含矢量寄存器VR0,VR1,…,VRn,用來存放來自所述數(shù)據(jù)存儲單元的數(shù)據(jù),其運算單元則從適量寄存器組中讀寫數(shù)據(jù);矢量重排順序寄存器組,包含矢量重排順序寄存器VR_CFG0,VR_CFG1,VR_CFG2,…,VR_CFGn,用來配置參與矢量重排運算的單元,來選擇部分或是全部矢量元算單元參與運算。
文檔編號G06F9/315GK102109978SQ20111004758
公開日2011年6月29日 申請日期2011年2月28日 優(yōu)先權(quán)日2011年2月28日
發(fā)明者孫瑞琛 申請人:孫瑞琛