密碼算法中用于支持散列值生成的simd指令的制作方法
【專利摘要】數(shù)據(jù)處理系統(tǒng)(2)包括單一指令多重數(shù)據(jù)寄存器文件(12)及單一指令多重處理電路(14)。單一指令多重數(shù)據(jù)處理電路(14)支持用于執(zhí)行散列算法的部分的密碼處理指令的執(zhí)行。操作數(shù)存儲在單一指令多重數(shù)據(jù)寄存器文件(12)內(nèi)。支持密碼的指令不遵循一般基于通道的處理且產(chǎn)生輸出操作數(shù),在這些輸出操作數(shù)中,輸出操作數(shù)的不同部分取決于在輸入操作數(shù)內(nèi)的多個不同元素。
【專利說明】密碼算法中用于支持散列值生成的SIMD指令
【技術領域】
[0001]本發(fā)明關于數(shù)據(jù)處理系統(tǒng)領域。更具體地,本發(fā)明關于在數(shù)據(jù)處理系統(tǒng)內(nèi)提供支持密碼的指令。
【背景技術】
[0002]使用數(shù)據(jù)處理系統(tǒng)執(zhí)行密碼操作是為人們已知的。這種已知密碼處理操作的實例包括安全散列算法(Secure Hash Algorithm ;SHA)。SHA具有各種不同已知形式,包括SHA-1、SHA-2、SHA256及SHA512。這些算法是運算密集的算法。
[0003]一種支持這些算法的已知方法是使用通用處理器,該通用處理器利用該通用處理器的通用寄存器文件(register file)執(zhí)行通用指令。此方法的一個問題在于執(zhí)行這些算法必須操縱大量狀態(tài)數(shù)據(jù)(通??僧a(chǎn)生160位及160位以上的散列值),結果是操作通常必須被分解并且每次由對數(shù)據(jù)的部分進行操作的單獨程序指令的長序列執(zhí)行,進而導致執(zhí)行算法所需的時間量及執(zhí)行算法時消耗的能量的不利增加。
[0004]另一已知方法是提供專用支持密碼的處理器,諸如密碼共處理器,該密碼共處理器具有專用電路,該專用電路用于執(zhí)行該算法且通常通過傳遞待散列的數(shù)據(jù)的開始的指針且然后等待接收所得散列值而啟動。此方法之問題在于:提供專用密碼硬件產(chǎn)生了額外成本及復雜性。此外,在將專用硬件的操作與裝置的其他操作整合時會產(chǎn)生問題,諸如中斷處理、多任務等等,因為將專用密碼硬件并入通常在數(shù)據(jù)處理系統(tǒng)內(nèi)提供的機制中以使用數(shù)據(jù)處理系統(tǒng)處理操作的這些方面非常困難且復雜。
【發(fā)明內(nèi)容】
[0005]自一個方面而言,本發(fā)明提供一種數(shù)據(jù)處理設備,該數(shù)據(jù)處理設備包含:
[0006]單一指令多重數(shù)據(jù)寄存器文件;及
[0007]單一指令多重數(shù)據(jù)處理電路,該單一指令多重數(shù)據(jù)處理電路耦接至該單一指令多重數(shù)據(jù)寄存器文件且被配置為由單一指令多重數(shù)據(jù)程序指令控制,以獨立地對存儲在單獨通道內(nèi)的單獨數(shù)據(jù)元素執(zhí)行處理操作,該單獨通道在該單一指令多重數(shù)據(jù)寄存器文件的輸入操作數(shù)寄存器內(nèi);其中
[0008]該單一指令多重數(shù)據(jù)處理電路被配置為由另外的程序指令控制,以對向量數(shù)據(jù)值執(zhí)行另外的處理操作,該向量數(shù)據(jù)值包含保持在該單一指令多重數(shù)據(jù)寄存器文件的輸入操作數(shù)寄存器內(nèi)的數(shù)據(jù)元素序列,以產(chǎn)生存儲在該單一指令多重數(shù)據(jù)寄存器文件的輸出操作數(shù)寄存器內(nèi)的輸出操作數(shù),該輸出操作數(shù)具有含有值的第一部分,該值取決于在該數(shù)據(jù)元素序列內(nèi)的所有數(shù)據(jù)元素。
[0009]本發(fā)明技術認識到,許多數(shù)據(jù)處理系統(tǒng)已具備單一指令多重數(shù)據(jù)處理機制。這些單一指令多重數(shù)據(jù)處理機制通常包括單一指令多重數(shù)據(jù)寄存器文件,該單一指令多重數(shù)據(jù)寄存器文件具有能夠存儲且操縱大數(shù)據(jù)寬度操作數(shù)的大存儲容量,這些大數(shù)據(jù)寬度操作數(shù)通常在單一指令多重數(shù)據(jù)處理中涉及。在單一指令多重數(shù)據(jù)處理中,通常在單一程序指令控制下獨立地處理數(shù)據(jù)的單獨通道。例如,數(shù)據(jù)的單獨通道可包含色彩像素值或其他向量值的分量值,所有這些值皆將經(jīng)受相同處理操作,諸如縮放。本發(fā)明技術認識到,單一指令多重數(shù)據(jù)寄存器文件的存儲能力可利用另外的程序指令重復使用,該另外的程序指令不遵循單一指令多重數(shù)據(jù)程序指令的通常形式。特定言之,通道的處理不必為獨立的,且產(chǎn)生的輸出操作數(shù)可具有含有值的第一部分,該值取決于在形成輸入的向量數(shù)據(jù)值內(nèi)的所有數(shù)據(jù)元素。
[0010]在單一指令多重數(shù)據(jù)程序指令的區(qū)域外的單一指令多重寄存器文件的重復使用可應用于各種領域,諸如數(shù)據(jù)壓縮及數(shù)據(jù)密碼術。本技術尤其非常適合于數(shù)據(jù)密碼術。
[0011]在此上下文中,另外的程序指令可經(jīng)安排以執(zhí)行迭代處理操作,該迭代處理操作消耗連續(xù)的數(shù)據(jù)字及至少部分中間散列值以產(chǎn)生輸出散列值。散列值產(chǎn)生通常需要操縱大量的數(shù)據(jù)及寄存器文件,同時具有存儲及操縱非常長的操作數(shù)值的能力。
[0012]另外的程序指令的一個形式為其中該另外的程序指令具有自該單一指令多重數(shù)據(jù)寄存器文件讀取的第一輸入操作數(shù)Qd[127:0]及第二輸入操作數(shù)Sn[31:0]兩者,且該向量數(shù)據(jù)值包含Vm[Index+31:1ndex],其中Index為O至2N,其中N為正整數(shù),該另外的處理操作產(chǎn)生該輸出操作數(shù)Qdratput [127:0],以具有與由以下步驟給出的值相同的值:
[0013]
【權利要求】
1.一種數(shù)據(jù)處理設備,該數(shù)據(jù)處理設備包含: 單一指令多重數(shù)據(jù)寄存器文件;及 單一指令多重數(shù)據(jù)處理電路,該單一指令多重數(shù)據(jù)處理電路耦接至該單一指令多重數(shù)據(jù)寄存器文件且被配置為由單一指令多重數(shù)據(jù)程序指令控制,以獨立地對存儲在單獨通道內(nèi)的單獨數(shù)據(jù)元素執(zhí)行處理操作,該單獨通道在該單一指令多重數(shù)據(jù)寄存器文件的輸入操作數(shù)寄存器內(nèi);其中 該單一指令多重數(shù)據(jù)處理電路被配置為由另外的程序指令控制,以對向量數(shù)據(jù)值執(zhí)行另外的處理操作,該向 量數(shù)據(jù)值包含保持在該單一指令多重數(shù)據(jù)寄存器文件的輸入操作數(shù)寄存器內(nèi)的數(shù)據(jù)元素序列,以產(chǎn)生存儲在該單一指令多重數(shù)據(jù)寄存器文件的輸出操作數(shù)寄存器內(nèi)的輸出操作數(shù),該輸出操作數(shù)具有含有值的第一部分,該值取決于在該數(shù)據(jù)元素序列內(nèi)的所有數(shù)據(jù)元素。
2.如權利要求1所述的數(shù)據(jù)處理設備,其中該另外的程序指令為密碼程序指令,該密碼程序指令操作以依賴于形成該向量數(shù)據(jù)值的數(shù)據(jù)的多個字產(chǎn)生作為該輸出操作數(shù)的輸出散列值。
3.如權利要求2所述的數(shù)據(jù)處理設備,其中該另外的程序指令執(zhí)行迭代處理操作,該迭代處理操作消耗連續(xù)數(shù)據(jù)字及至少部分中間散列值以產(chǎn)生該輸出散列值。
4.如權利要求1、2和3中任一項所述的數(shù)據(jù)處理設備,其中該另外的程序指令具有自該單一指令多重數(shù)據(jù)寄存器文件讀取的第一輸入操作數(shù)Qd[127:0]及第二輸入操作數(shù)Sn [31:0]兩者,且該向量數(shù)據(jù)值包含Vm[Index+31:1ndex],其中Index為O至2N,其中N為正整數(shù),該另外的處理操作產(chǎn)生該輸出操作數(shù)QcLtput[127:0],以具有與由以下步驟給出的值相同的值:
5.如權利要求1、2和3中任一項所述的數(shù)據(jù)處理設備,其中該另外的程序指令具有自該單一指令多重數(shù)據(jù)寄存器文件讀取的第一輸入操作數(shù)Qd[127:0]及第二輸入操作數(shù)Sn [31:0]兩者,且該向量數(shù)據(jù)值包含Vm[Index+31:1ndex],其中Index為O至2N,其中N為正整數(shù),該另外的處理操作產(chǎn)生該輸出操作數(shù)QcLtput[127:0],以具有與由以下步驟給出的值相同的值:
6.如權利要求4和5中任一項所述的數(shù)據(jù)處理設備,其中該另外的程序指令包括選擇以下其中之一作為OP FUNC(B, C,D)的字段:
(((C XOR D)AND B)XOR D);
(B XOR C XOR D);及
(B AND C)OR((B OR C)AND D)。
7.如權利要求4、5和6中任一項所述的數(shù)據(jù)處理設備,其中該第一輸入操作數(shù)Qd[127:0]及該第二輸入操作數(shù)Sn[31:0]讀取自在該單一指令多重數(shù)據(jù)寄存器文件內(nèi)的單獨寄存器。
8.如權利要求4、5和6中任一項所述的數(shù)據(jù)處理設備,其中該第一輸入操作數(shù)Qd[127:0]及該第二輸入操作數(shù)Sn[31:0]讀取自在該單一指令多重數(shù)據(jù)寄存器文件內(nèi)的共享寄存器。
9.如權利要求1、2和3中任一項所述的數(shù)據(jù)處理設備,其中該另外的程序指令具有自該單一指令多重數(shù)據(jù)寄存器文件讀取的第一輸入操作數(shù)Qd[127:0]及第二輸入操作數(shù)Qn[127:0]兩者,且該向量數(shù)據(jù)值包含Vm[Index+31:1ndex],其中Index為O至2'其中N為正整數(shù),該另外的處理操作產(chǎn)生該輸出操作數(shù)QcLtput[127:0],以具有與由以下步驟給出的值相同的值:
10.如權利要求1、2和3中任一項所述的數(shù)據(jù)處理設備,其中該另外的程序指令具有自該單一指令多重數(shù)據(jù)寄存器文件讀取的第一輸入操作數(shù)Qd[127:0]及第二輸入操作數(shù)Qn [127:0]兩者,且該向量數(shù)據(jù)值包含Vm[Index+31:1ndex],其中Index為O至2N,其中N為正整數(shù),該另外的處理操作產(chǎn)生該輸出操作數(shù)QcLtput[127:0],以具有與由以下步驟給出的值相同的值:
11.如權利要求9和10中任一項所述的數(shù)據(jù)處理設備,其中該第一輸入操作數(shù)Qd[127:0]及該第二輸入操作數(shù)Qn[127:0]讀取自在該單一指令多重數(shù)據(jù)寄存器文件內(nèi)的單獨寄存器。
12.如權利要求9和10中任一項所述的數(shù)據(jù)處理設備,其中該第一輸入操作數(shù)Qd[127:0]及該第二輸入操作數(shù)Qn[127:0]讀取自在該單一指令多重數(shù)據(jù)寄存器文件內(nèi)的共享寄存器。
13.如前述任一權利要求所述的數(shù)據(jù)處理設備,其中該單一指令多重數(shù)據(jù)處理電路利用用于管理該另外的程序指令及該單一指令多重數(shù)據(jù)程序指令的處理的共同機制。
14.如權利要求13所述的數(shù)據(jù)處理設備,其中該管理處理包括管理下述中的一個或多個: 寄存器重新命名; 指令調(diào)度; 指令發(fā)出; 指令報廢;及 指令中斷。
15.如權利要求4和5中任一項所述的數(shù)據(jù)處理設備,其中該單一指令多重數(shù)據(jù)處理電路被配置為由旋轉(zhuǎn)指令控制,該旋轉(zhuǎn)指令具有輸入操作數(shù)Sm[31:0]且產(chǎn)生具有值的輸出操作數(shù)Sd[31:0],該值與Sm[31:0]右旋轉(zhuǎn)兩個位位置給出的值相同。
16.如權利要求4和5中任一項所述的數(shù)據(jù)處理設備,其中該單一指令多重數(shù)據(jù)處理電路被配置為由第一調(diào)度更新指令控制,該第一調(diào)度更新指令具有第一輸入操作數(shù)Sp [127:0]及第二輸入操作數(shù)Sq [127:0]且產(chǎn)生具有值的輸出操作數(shù)Sr [127:0],該值與通過以下步驟給出的值相同:
T[127:0]={Sp[63:0]:Sq[127:64]}及
Sr[127:0]=T[127:0]X0R Sr[127:0]XOR Sq[127:0]。
17.如權利要求14所述的數(shù)據(jù)處理設備,其中該單一指令多重數(shù)據(jù)處理電路被配置為由第二調(diào)度更新指令控制,該第二調(diào)度更新指令具有輸入操作數(shù)Ss [127:0]且產(chǎn)生具有值的輸出操作數(shù)St [127:0],該值與通過以下步驟給出的值相同:
T[127:0] = St[127:0]X0R{32{0}:Ss[127:32]};
St[95:0] = {Τ[94:64]:Τ[95]:Τ[62:32]:Τ[63]:Τ[30:0]:Τ[31]};及
St[127:96]=({T[126:96]:T[127]})X0R({T[29:0]:Τ[31:30]})。
18.如權利要求9和10中任一項所述的數(shù)據(jù)處理設備,其中該單一指令多重數(shù)據(jù)處理電路被配置為由第一調(diào)度更新指令控制,該第一調(diào)度更新指令具有輸入操作數(shù)Sp [127:0]且產(chǎn)生具有值的輸出操作數(shù)Sq[127:0],該值與通過以下步驟給出的值相同:
T[127:0]={Sp[31:0]:Sq[127:32]}; T[127: O] = VecR0R32 (T[127: O],7)XOR VecR0R32 (Τ [ I 27: O],18)XORVecR0R32(T[127:0],3);及
Sq [127:0] =VecADD32 (Τ [127:0],Sq [127:0]), 其中VecR0R32(A,B)為在A內(nèi)的每個32位字單獨右旋轉(zhuǎn)B位位置,且VecADD32 (A,B)為在A內(nèi)的每個32位字單獨增加至在B內(nèi)的相應32位字。
19.如權利要求18所述的數(shù)據(jù)處理設備,其中該單一指令多重數(shù)據(jù)處理電路被配置為由第二調(diào)度更新指令控制,該第二調(diào)度更新指令具有第一輸入操作數(shù)Sp [127:0]及第二輸入操作數(shù)Sq[127:0]且產(chǎn)生具有值的輸出操作數(shù)Sr[127:0],該值與通過以下步驟給出的值相同:
T0[127:0]={Sq[31:0]:Sp[127:32]};
Tl[63:0] = Sq[127:64]; Tl[63:0] = VecR0R32(Tl[63:0] , 17) XOR VecR0R32(Tl[63:0],19)XORVecR0R32(Tl[63:0],10);
T3[63:0]=VecADD32(Sr[63:0],TO[63:0]);
Tl [63:0]=VecADD32(T3[63:0], Tl [63:0]); T2 [63:0]=VecR0R32(Tl[63:0], 17)XOR VecR0R32(Tl[63:0], 19)XORVecR0R32(Tl[63:0],10);
T3 [63:0]=VecADD32(Sr[127:64],TO [127:64]);及
Sr[127:0] = {VecADD32(T3[63:0],T2[63:0]): Tl[63:0]}, 其中VecR0R32(A,B)為在A內(nèi)的每個32位字單獨右旋轉(zhuǎn)B位位置,且VecADD32 (A,B)為在A內(nèi)的每個32位字單獨增加至在B內(nèi)的相應32位字。
20.如前述任一權利要求所述的數(shù)據(jù)處理設備,該數(shù)據(jù)處理設備進一步包含與該單一指令多重數(shù)據(jù)寄存器文件分離的通用寄存器文件,該通用寄存器文件具有通用寄存器,該通用寄存器具有比在該單一指令多重數(shù)據(jù)寄存器文件內(nèi)的寄存器位寬度低的位寬度,并且通用處理電路耦接至該通用寄存器文件,且被配置為由通用處理指令控制以對存儲在該通用寄存器中的一個通用寄存器內(nèi)的輸入操作數(shù)執(zhí)行處理操作。
21.一種數(shù)據(jù)處理設備,該數(shù)據(jù)處理設備包含: 單一指令多重數(shù)據(jù)寄存器文件裝置,用于存儲單一指令多重數(shù)據(jù)操作數(shù);及 單一指令多重數(shù)據(jù)處理裝置,用于在單一指令多重數(shù)據(jù)程序指令的控制下執(zhí)行處理操作,該單一指令多重數(shù)據(jù)處理裝置耦接至該單一指令多重數(shù)據(jù)寄存器文件裝置,且對存儲在該單一指令多重數(shù)據(jù)寄存器文件裝置的輸入操作數(shù)寄存器內(nèi)的單獨通道內(nèi)的單獨數(shù)據(jù)元素獨立地執(zhí)行該處理操作;其中 該單一指令多重數(shù)據(jù)處理裝置由另外的程序指令控制,以對向量數(shù)據(jù)值執(zhí)行另外的處理操作,該向量數(shù)據(jù)值包含保持在該單一指令多重數(shù)據(jù)寄存器文件裝置的輸入操作數(shù)寄存器內(nèi)的數(shù)據(jù)元素序列,以產(chǎn)生存儲在該單一指令多重數(shù)據(jù)寄存器文件裝置的輸出操作數(shù)寄存器內(nèi)的輸出操作數(shù),該輸出操作數(shù)具有含有值的第一部分,該值取決于在該數(shù)據(jù)元素序列內(nèi)的所有數(shù)據(jù)元素。
22.一種處理數(shù)據(jù)的方法,該方法包含以下步驟: 將單一指令多重數(shù)據(jù)操作數(shù)存儲在單一指令多重數(shù)據(jù)寄存器文件內(nèi); 在單一指令多重數(shù)據(jù)程序指令的控制下,獨立地對存儲在該單一指令多重數(shù)據(jù)寄存器文件的輸入操作數(shù)寄存器內(nèi)的單獨通道內(nèi)的單獨數(shù)據(jù)元素執(zhí)行處理操作;及 在另外的程序指令的控制下,對向量數(shù)據(jù)值執(zhí)行另外的處理操作,該向量數(shù)據(jù)值包含保持在該單一指令多重數(shù)據(jù)寄存器文件的輸入操作數(shù)寄存器內(nèi)的數(shù)據(jù)元素序列,以產(chǎn)生存儲在該單一指令多重數(shù)據(jù)寄存器文件的輸出操作數(shù)寄存器內(nèi)的輸出操作數(shù),該輸出操作數(shù)具有含有值的第一部分,該值取決于在該數(shù)據(jù)元素序列內(nèi)的所有數(shù)據(jù)元素。
23.如權利要求22所述的方法,其中該另外的程序指令具有自該單一指令多重數(shù)據(jù)寄存器文件讀取的第一輸入操作數(shù)Qd[127:0]及第二輸入操作數(shù)Sn [31:0]兩者,且該向量數(shù)據(jù)值包含Vm[Index+31:1ndex],其中Index為O至2N,其中N為正整數(shù),該另外的處理操作產(chǎn)生該輸出操作數(shù)QcLtput[127:0],以具有與通過以下步驟給出的值相同的值:
24.如權利要求22所述的方法,其中該另外的程序指令具有自該單一指令多重數(shù)據(jù)寄存器文件讀取的第一輸入操作數(shù)Qd[127:0]及第二輸入操作數(shù)Sn [31:0]兩者,且該向量數(shù)據(jù)值包含Vm[Index+31:1ndex],其中Index為O至2N,其中N為正整數(shù),該另外的處理操作產(chǎn)生該輸出操作數(shù)QcLtput[127:0],以具有與通過以下步驟給出的值相同的值:
25.如權利要求22所述的方法,其中該另外的程序指令具有自該單一指令多重數(shù)據(jù)寄存器文件讀取的第一輸入操作數(shù)Qd[127:0]及第二輸入操作數(shù)Qn[127:0]兩者,且該向量數(shù)據(jù)值包含Vm[Index+31:1ndex],其中Index為O至2N,其中N為正整數(shù),該另外的處理操作產(chǎn)生該輸出操作數(shù)QcLtput[127:0],以具有與通過以下步驟給出的值相同的值:
26.如權利要求22所述的方法,其中該另外的程序指令具有自該單一指令多重數(shù)據(jù)寄存器文件讀取的第一輸入操作數(shù)Qd[127:0]及第二輸入操作數(shù)Qn[127:0]兩者,且該向量數(shù)據(jù)值包含Vm[Index+31:1ndex],其中Index為O至2N,其中N為正整數(shù),該另外的處理操作產(chǎn)生該輸出操作數(shù)QcLtput[127:0],以具有與通過以下步驟給出的值相同的值:
27.一種存儲于計算機存儲介質(zhì)上的計算機程序,該計算機程序用于控制計算機以提供對應于如權利要求1至21任一項所述的數(shù)據(jù)處理設備的虛擬機執(zhí)行環(huán)境。
【文檔編號】G06F9/38GK103930869SQ201280055673
【公開日】2014年7月16日 申請日期:2012年9月20日 優(yōu)先權日:2011年11月17日
【發(fā)明者】馬修·詹姆斯·霍斯內(nèi)爾, 理查德·羅伊·格里森思懷特, 丹尼爾·克爾肖, 斯圖亞特·大衛(wèi)·貝爾斯 申請人:Arm 有限公司