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