一種基于大規(guī)模粗粒度可重構處理器的sm4-128加密算法實現(xiàn)方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種基于大規(guī)模粗粒度可重構處理器的SM4?128加密算法實現(xiàn)方法及系統(tǒng),該系統(tǒng)包括可重構處理器、微處理器、系統(tǒng)總線;所述可重構計算陣列包括可重構計算陣列塊,可重構計算陣列塊包括可重構陣列運算行、寫端口運算行選擇器、讀端口運算行選擇器;所述微處理器通過系統(tǒng)總線分別與配置控制模塊的配置與控制接口,可重構處理器的輸入先入先出寄存器組連接,所述輸入先入先出寄存器組連接可重構計算陣列,可重構計算陣列連接輸出端連接可重構處理器,輸出端連接可重構處理器通過系統(tǒng)總線與微處理器連接。該系統(tǒng)及方法針對SM4?128加密算法,通過將多輪迭代在可重構處理器中部分展開和中間結果數(shù)據(jù)緩存的方式進行優(yōu)化和加速。
【專利說明】
一種基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法實現(xiàn)方法及系統(tǒng)
技術領域
[0001]本發(fā)明涉及嵌入式可重構系統(tǒng)領域,尤其涉及一種應用于通信、加密等領域的基于大規(guī)模粗粒度嵌入式可重構系統(tǒng)及其處理方法。
【背景技術】
[0002]通用處理器與專用集成電路(ASIC)是傳統(tǒng)的計算機系統(tǒng)結構領域的兩大主流方法。然而,隨著應用領域對系統(tǒng)的性能、能耗、上市時間等指標需求的不斷提高,這兩種傳統(tǒng)計算模式的弊端就暴露出來。
[0003]通用處理器方法適用范圍廣,但是計算效率低,專用集成電路雖然可以提高計算速度和計算效率,滿足性能需求,但是ASIC器件的靈活性很差。
[0004]為了在靈活性和計算效率之間實現(xiàn)很好的權衡,可重構計算(reconf igurablecomputing)技術應運而生??芍貥嬘嬎闶钱斍坝嬎銠C系統(tǒng)結構領域的發(fā)展趨勢之一,它的架構介于通用處理器和ASIC之間,并且綜合了二者長處。它通過對可重構設備進行配置,可以使之由一個通用的計算平臺轉化為一個專用的硬件系統(tǒng),以完成具體的計算任務,相當于計算任務同時在時間和空間上展開,顯示出了應用的靈活性和很高的計算性能。此外,可重構計算技術還具有系統(tǒng)能耗低、可靠性高、上市時間短等優(yōu)勢。這些優(yōu)勢使得可重構計算技術在各個應用領域尤其是嵌入式應用領域有著廣闊的應用前景。很多在嵌入式領域中的主流應用,例如多媒體應用、加/解密應用以及通信應用等都非常適合利用可重構計算技術實現(xiàn)。當前的可重構計算技術主要還是用于尖端技術領域中的計算平臺,但隨著可重構邏輯器件成本逐漸降低,運行時可重構計算技術不斷完善,我們有理由相信可重構計算技術具備的種種優(yōu)勢會使其在更多的領域里大有作為。
[0005]目前國內外已研究有多重可重構系統(tǒng),如ReMAP,AsAP,DRP等。但是,這些陣列的互聯(lián)方式較為簡單,在SM4-128加密算法方法的運算中需要大量的中間數(shù)據(jù)存儲以及較多的輪數(shù),因此運算的效率和速度較低。傳統(tǒng)的可重構計算系統(tǒng)在SM4-128加密算法的運算效率與運算周期方面存在較大問題。
【發(fā)明內容】
[0006]為了克服現(xiàn)有技術中存在的不足,本發(fā)明的目的是提供一種基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法系統(tǒng),利用可重構技術的并行性處理、運算模塊獨立可配置等優(yōu)點,在支持一定的靈活性的同時,通過提高對SM4-128加密算法算法的并行度以及優(yōu)化流水線等方法以實現(xiàn)SM4-128加密算法算法的高效運算。
[0007]為實現(xiàn)上述目的,本發(fā)明采用的技術方案為:
[0008]—種基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法系統(tǒng),包括可重構處理器、微處理器、系統(tǒng)總線;
[0009]其中,所述可重構處理器包括配置控制模塊、輸入先入先出寄存器組、輸出先入先出寄存器組、通用寄存器堆、可重構計算陣列;
[0010]所述配置控制模塊包括依次連接的配置與控制接口、配置存儲器、配置解析模塊,配置控制模塊的輸出端連接可重構處理器;
[0011]所述可重構計算陣列包括可重構計算陣列塊,可重構計算陣列塊包括可重構陣列運算行、寫端口運算行選擇器、讀端口運算行選擇器;所述可重構陣列運算行的輸出端連接寫端口運算行選擇器的輸入端,寫端口運算行選擇器的輸出端連接通用寄存器堆;所述讀端口運算行選擇器的輸入端接入通用寄存器堆,讀端口運算行選擇器的輸出端連接可重構陣列運算行;
[0012]其中,所述可重構陣列運算行包括算術邏輯單元、查找表單元、比特置換網(wǎng)絡、字節(jié)置換網(wǎng)絡以及數(shù)據(jù)輸入單元和數(shù)據(jù)輸出單元;
[0013]所述微處理器通過系統(tǒng)總線分別與配置控制模塊的配置與控制接口,可重構處理器的輸入先入先出寄存器組連接,所述輸入先入先出寄存器組連接可重構計算陣列,可重構計算陣列連接輸出端連接可重構處理器,輸出端連接可重構處理器通過系統(tǒng)總線與微處理器連接;
[0014]其中,通過分析SM4-128加密算法的特征來確定SM4-128加密算法的運算流程,將多輪的SM4-128加密算法運算展開成一幅數(shù)據(jù)流圖映射到可重構處理器中,通過多幅數(shù)據(jù)流圖最終完成SM4-128加密算法的整個運算;
[0015]微處理器通過系統(tǒng)總線發(fā)送明文數(shù)據(jù)給可重構處理器,可重構處理器將明文數(shù)據(jù)存入輸入先入先出寄存器組,并在最終計算完成后輸出密文數(shù)據(jù)到輸出先入先出寄存器組,并發(fā)送中斷信號,最終由微處理器讀出輸出至輸出先入先出寄存器組中的數(shù)據(jù)。
[0016]首先對配置單元中的配置存儲器進行初始化,微處理器將所需要的配置信息通過配置單元的配置與控制接口發(fā)送到配置存儲器中,然后通過配置單元中的配置解析模塊解析配置存儲器,實現(xiàn)對計算陣列的配置、啟動以及切換操作。
[0017]進一步的,所述的可重構處理器有M個可重構計算陣列塊、I個通用寄存器堆、I個輸入先入先出寄存器組和I個輸出先入先出寄存器組,其中M取整數(shù);其中M個可重構計算陣列塊通過一個I個通用寄存器堆互相進行數(shù)據(jù)的儲存、讀取和傳遞;且多個可重構計算陣列塊中相鄰的兩個可重構計算陣列塊通過數(shù)據(jù)輸入單元和數(shù)據(jù)輸出單元連接;第一個可重構計算陣列塊通過第一個可重構陣列運算行的數(shù)據(jù)輸入單元與輸入先入先出寄存器組相連,同時第M個可重構計算陣列塊通過最后一個個可重構陣列運算行的數(shù)據(jù)輸出單元與輸出先入先出寄存器組相連。作為優(yōu)選方案,可重構處理器有10個可重構陣列塊。
[0018]進一步的,所述的每個可重構計算陣列塊包括N個可重構陣列運算行和I個讀端口運算行選擇器和I個寫端口運算行選擇器,其中N取整數(shù);其每N個可重構陣列運算行共享I個通用寄存器堆的讀端口和寫端口。作為優(yōu)選方案,可重構陣列塊包括4個可重構陣列運算行。
[0019]進一步的,所述的可重構陣列運算行包括X1個數(shù)據(jù)輸入單元,X2個數(shù)據(jù)輸出單元,X3個字節(jié)置換網(wǎng)絡,X4個比特置換網(wǎng)絡和X5個8位算術邏輯單元,X6個查找表單元,其中X1,X2,X3,X4,X5和X6均取整數(shù);數(shù)據(jù)經(jīng)過數(shù)據(jù)輸入單元,由選擇器通過讀取并解析不同的配置信息來選擇數(shù)據(jù)流入的字節(jié)置換網(wǎng)絡和比特置換網(wǎng)絡;字節(jié)置換網(wǎng)絡與比特置換網(wǎng)絡的輸出分為X5個8位的數(shù)據(jù)分別固定對應于X5個8位算術邏輯單元,并行運算X5/4組SM4-128加密算法數(shù)據(jù);每個算術邏輯單元使用數(shù)據(jù)選擇器選擇任意三個置換網(wǎng)絡的輸出作為其輸入;數(shù)據(jù)輸出單元暫存算術邏輯單元的結果并讀取配置信息決定將數(shù)據(jù)輸出到先入先出寄存器組、下一個可重構陣列運算行或通用寄存器堆。作為優(yōu)選方案,可重構陣列運算行包括數(shù)據(jù)載入單元,數(shù)據(jù)輸出單元,字節(jié)置換網(wǎng)絡,比特置換網(wǎng)絡和16個8位算術邏輯單元;數(shù)據(jù)經(jīng)過數(shù)據(jù)載入單元,由選擇器通過讀取并解析不同的配置信息來選擇數(shù)據(jù)流入的字節(jié)置換網(wǎng)絡和比特置換網(wǎng)絡;字節(jié)置換網(wǎng)絡與比特置換網(wǎng)絡的128位的輸出分為16個8位的數(shù)據(jù)分別固定對應于16個8位算術邏輯單元,一次性可以運算4組SM4-128加密算法數(shù)據(jù);每個算術邏輯單元可以使用數(shù)據(jù)選擇器選擇其中三個置換網(wǎng)絡的輸出作為其輸入;數(shù)據(jù)載入單元可以暫存算術邏輯單元的結果并讀取配置信息決定將數(shù)據(jù)輸出到先進先出寄存器組、下一個可重構陣列運算行還是通用寄存器堆。
[0020]進一步的,所述算術邏輯單元及查找表用于實現(xiàn)異或運算、與運算、直通輸出、查表操作的運算操作;同時每個算術邏輯單元有最多3個輸入和最多2個輸出,其中算術邏輯單元執(zhí)行上述運算操作的同時,支持任選一個輸入作為輸出;每4個8位的算術邏輯單元通過進位端口連接成為I個32位的算術邏輯單元;每4個可重構陣列運算行共享一個查找表,來實現(xiàn)查表操作。作為優(yōu)選方案,算術邏輯單元中包含3輸入異或、2輸入異或運算;同時每個算術邏輯單元有最多3個輸入和最多2個輸出,其中算術邏輯單元執(zhí)行上述運算操作的同時,支持任選一個輸入作為輸出;查找表單元支持數(shù)據(jù)的查表操作,每4個可重構計算行單元共享一個查找表單元。由于SM4-128加密算法方法中全部為32位運算,因此每4個8位的算術邏輯單元可以通過進位端口連接成為I個32位的算術邏輯單元。
[0021]進一步的,該系統(tǒng)的SM4-128加密算法包括如下6個步驟,對于32輪迭代的128比特的加密算法,對(2)?(6)步驟順序操作并循環(huán)32次后,執(zhí)行(6)執(zhí)行I次,即可得到密文(其中 0<i<31):
[0022](I)生成Y[i]:數(shù)據(jù)輸入單元將X[i+l],X[i+2],X[i+3]同時載入可重構運算單元行中,(其中0<i<31);對載入數(shù)據(jù)經(jīng)過字節(jié)置換網(wǎng)絡后,輸入值同一個32比特的邏輯運算單元,進行三輸入異或操作,得到Y[ i ],并將其計算結果存入通用寄存器中;
[0023](2)生成A[i]:數(shù)據(jù)輸入單元將輪密鑰rk[i]及Y[i]同時載入可重構運算單元行中,在經(jīng)過字節(jié)置換網(wǎng)絡進行移位后,再對ri[i],Y[i]兩者進行異或操作,將結果A[i]輸出至緩存單元中;
[0024](3)查表操作:數(shù)據(jù)輸入單元將A[i]從緩存單元中載入至可重構運算單元行中;A
[i]在通過字節(jié)置換網(wǎng)絡后,在查找表中對A[i]進行查表操作,得到B[i],并將B[i]存入緩存單元中;
[0025](4)線性變換:數(shù)據(jù)輸入單元將B[i]從緩存單元中載入至可重構陣列單元行中;B[幻在經(jīng)過比特置換網(wǎng)絡后,生成中間數(shù)據(jù)扮[丨],82[丨],將81[丨],82[丨],8[丨]三者進行異或操作,生成M[i],并將M[i]及B[i]存入緩存單元;將上一行輸出結果M[i]及B[i]從緩存單元中載入至可重構陣列單元行中,B[i]在經(jīng)過比特置換網(wǎng)絡后,生成中間數(shù)據(jù)B3[i],B4[i],將B3[i],B4[i],M[i]三者進行異或操作,得到T[i];
[0026](5)生成X[i+4]:數(shù)據(jù)輸入單元將T[i]從緩存單元中載入至可重構陣列單元行中,對T[ i]及X[ i]進行異或操作,得到X[ i+4];
[0027](6)逆序操作:數(shù)據(jù)輸入單元將X[32],X[33],X[34],X[35]從通用寄存器中載入至可重構計算單元行中,經(jīng)過字節(jié)置換網(wǎng)絡,實現(xiàn)逆序,得到從高位至低位按照X[35],X[34],X[33],X[32]的數(shù)據(jù),輸出至輸出先入先出寄存器組,得到密文。
[0028]一種基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法的實現(xiàn)方法,包括以下步驟:
[0029](1)分析514_128加密算法的計算特點,并歸納出數(shù)據(jù)流圖;
[0030](2)確定數(shù)據(jù)流圖之后,針對可重構處理器的硬件特點,在了解其各寄存器、運算器以及各功能模塊的作用機制的情況下配置可重構處理器,并生成配置信息;
[0031](3)通過微處理器將配置信息以及所需要的各種初始數(shù)據(jù)存入相應的存儲器中;
[0032](4)最后微處理器啟動可重構處理器,并將配置信息及數(shù)據(jù)發(fā)送給可重構處理器;
[0033](5)當可重構處理器完成當前任務后,發(fā)送中斷信號。
[0034]有益效果:本發(fā)明基于大規(guī)模粗粒度動態(tài)可重構處理器,通過10個可重構陣列塊包含多個運算單元,借助通用寄存器堆提高SM4-128加密算法算法的運算并行度,在具有一定靈活性的同時,提高SM4-128加密算法方法的運算效率,盡可能的減少運算周期。
【附圖說明】
[0035]圖1為本發(fā)明的基于大規(guī)模粗粒度嵌入式可重構系統(tǒng)處理器框圖;
[0036]圖2a_圖2d為一個可重構陣列塊的運算流示意,共同構成本發(fā)明中SM4-128加密算法運算流圖。
【具體實施方式】
[0037]下面結合附圖對本發(fā)明作更進一步的說明。
[0038]如圖1所示為一種基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法系統(tǒng),包括可重構處理器、微處理器、系統(tǒng)總線;
[0039]其中,所述可重構處理器包括配置控制模塊、輸入先入先出寄存器組、輸出先入先出寄存器組、通用寄存器堆、可重構計算陣列;
[0040]所述配置控制模塊包括依次連接的配置與控制接口、配置存儲器、配置解析模塊,配置控制模塊的輸出端連接可重構處理器;
[0041]所述可重構計算陣列包括可重構計算陣列塊,可重構計算陣列塊包括可重構陣列運算行、寫端口運算行選擇器、讀端口運算行選擇器;所述可重構陣列運算行的輸出端連接寫端口運算行選擇器的輸入端,寫端口運算行選擇器的輸出端連接通用寄存器堆;所述讀端口運算行選擇器的輸入端接入通用寄存器堆,讀端口運算行選擇器的輸出端連接可重構陣列運算行;
[0042]其中,所述可重構陣列運算行包括算術邏輯單元、查找表單元、比特置換網(wǎng)絡、字節(jié)置換網(wǎng)絡以及數(shù)據(jù)輸入單元和數(shù)據(jù)輸出單元;
[0043]所述微處理器通過系統(tǒng)總線分別與配置控制模塊的配置與控制接口,可重構處理器的輸入先入先出寄存器組連接,所述輸入先入先出寄存器組連接可重構計算陣列,可重構計算陣列連接輸出端連接可重構處理器,輸出端連接可重構處理器通過系統(tǒng)總線與微處理器連接;
[0044]其中,通過分析SM4-128加密算法的特征來確定SM4-128加密算法的運算流程,將多輪的SM4-128加密算法運算展開成一幅數(shù)據(jù)流圖映射到可重構處理器中,通過多幅數(shù)據(jù)流圖最終完成SM4-128加密算法的整個運算;
[0045]微處理器通過系統(tǒng)總線發(fā)送明文數(shù)據(jù)給可重構處理器,可重構處理器將明文數(shù)據(jù)存入輸入先入先出寄存器組,并在最終計算完成后輸出密文數(shù)據(jù)到輸出先入先出寄存器組,并發(fā)送中斷信號,最終由微處理器讀出輸出至輸出先入先出寄存器組中的數(shù)據(jù)。
[0046]首先對配置單元中的配置存儲器進行初始化,微處理器將所需要的配置信息通過配置單元的配置與控制接口發(fā)送到配置存儲器中,然后通過配置單元中的配置解析模塊解析配置存儲器,實現(xiàn)對計算陣列的配置、啟動以及切換操作。
[0047]可重構處理器有10個可重構計算陣列塊、I個通用寄存器堆、I個輸入先入先出寄存器組和I個輸出先入先出寄存器組;其中10個可重構計算陣列塊通過一個I個通用寄存器堆互相進行數(shù)據(jù)的儲存、讀取和傳遞;且多個可重構計算陣列塊中相鄰的兩個可重構計算陣列塊通過數(shù)據(jù)輸入單元和數(shù)據(jù)輸出單元連接;第一個可重構計算陣列塊通過第一個可重構陣列運算行的數(shù)據(jù)輸入單元與輸入先入先出寄存器組相連,同時第10個可重構計算陣列塊通過最后一個個可重構陣列運算行的數(shù)據(jù)輸出單元與輸出先入先出寄存器組相連。
[0048]每個可重構計算陣列塊包括4個可重構陣列運算行和I個讀端口運算行選擇器和I個寫端口運算行選擇器;其每4個可重構陣列運算行共享I個通用寄存器堆的讀端口和寫端
□ O
[0049]可重構陣列運算行包括數(shù)據(jù)載入單元,數(shù)據(jù)輸出單元,字節(jié)置換網(wǎng)絡,比特置換網(wǎng)絡和16個8位算術邏輯單元;數(shù)據(jù)經(jīng)過數(shù)據(jù)載入單元,由選擇器通過讀取并解析不同的配置信息來選擇數(shù)據(jù)流入的字節(jié)置換網(wǎng)絡和比特置換網(wǎng)絡;字節(jié)置換網(wǎng)絡與比特置換網(wǎng)絡的128位的輸出分為16個8位的數(shù)據(jù)分別固定對應于16個8位算術邏輯單元,一次性可以運算4組SM4-128加密算法數(shù)據(jù);每個算術邏輯單元可以使用數(shù)據(jù)選擇器選擇其中三個置換網(wǎng)絡的輸出作為其輸入;數(shù)據(jù)載入單元可以暫存算術邏輯單元的結果并讀取配置信息決定將數(shù)據(jù)輸出到先進先出寄存器組、下一個可重構陣列運算行還是通用寄存器堆。
[0050]算術邏輯單元中包含3輸入異或、2輸入異或運算;同時每個算術邏輯單元有最多3個輸入和最多2個輸出,其中算術邏輯單元執(zhí)行上述運算操作的同時,支持任選一個輸入作為輸出;查找表單元支持數(shù)據(jù)的查表操作,每4個可重構計算行單元共享一個查找表單元。由于SM4-128加密算法方法中全部為32位運算,因此每4個8位的算術邏輯單元可以通過進位端口連接成為I個32位的算術邏輯單元。
[0051]該系統(tǒng)的SM4-128加密算法包括如下6個步驟,對于32輪迭代的128比特的加密算法,對(2)?(6)步驟順序操作并循環(huán)32次后,執(zhí)行(6)執(zhí)行I次,即可得到密文(其中OSiS31):
[0052](I)生成Y[i]:數(shù)據(jù)輸入單元將X[i+l],X[i+2],X[i+3]同時載入可重構運算單元行中,(其中0<i<31);對載入數(shù)據(jù)經(jīng)過字節(jié)置換網(wǎng)絡后,輸入值同一個32比特的邏輯運算單元,進行三輸入異或操作,得到Y[ i ],并將其計算結果存入通用寄存器中;
[0053](2)生成A[i]:數(shù)據(jù)輸入單元將輪密鑰rk[i]及Y[i]同時載入可重構運算單元行中,在經(jīng)過字節(jié)置換網(wǎng)絡進行移位后,再對ri[i],Y[i]兩者進行異或操作,將結果A[i]輸出至緩存單元中;
[0054](3)查表操作:數(shù)據(jù)輸入單元將A[i]從緩存單元中載入至可重構運算單元行中;A[i]在通過字節(jié)置換網(wǎng)絡后,在查找表中對A[i]進行查表操作,得到B[i],并將B[i]存入緩存單元中;
[0055](4)線性變換:數(shù)據(jù)輸入單元將B[i]從緩存單元中載入至可重構陣列單元行中;B[幻在經(jīng)過比特置換網(wǎng)絡后,生成中間數(shù)據(jù)扮[丨],82[丨],將81[丨],82[丨],8[丨]三者進行異或操作,生成M[i],并將M[i]及B[i]存入緩存單元;將上一行輸出結果M[i]及B[i]從緩存單元中載入至可重構陣列單元行中,B[i]在經(jīng)過比特置換網(wǎng)絡后,生成中間數(shù)據(jù)B3[i],B4[i],將B3[i],B4[i],M[i]三者進行異或操作,得到T[i];
[0056](5)生成X[i+4]:數(shù)據(jù)輸入單元將T[i]從緩存單元中載入至可重構陣列單元行中,對T[ i]及X[ i]進行異或操作,得到X[ i+4];
[0057](6)逆序操作:數(shù)據(jù)輸入單元將X[32],X[33],X[34],X[35]從通用寄存器中載入至可重構計算單元行中,經(jīng)過字節(jié)置換網(wǎng)絡,實現(xiàn)逆序,得到從高位至低位按照X[35],X[34],X[33],X[32]的數(shù)據(jù),輸出至輸出先入先出寄存器組,得到密文。
[0058]一種基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法的實現(xiàn)方法,包括以下步驟:
[0059](1)分析514_128加密算法的計算特點,并歸納出數(shù)據(jù)流圖;
[0060](2)確定數(shù)據(jù)流圖之后,針對可重構處理器的硬件特點,在了解其各寄存器、運算器以及各功能模塊的作用機制的情況下配置可重構處理器,并生成配置信息;
[0061 ] (3)通過微處理器將配置信息以及所需要的各種初始數(shù)據(jù)存入相應的存儲器中;
[0062](4)最后微處理器啟動可重構處理器,并將配置信息及數(shù)據(jù)發(fā)送給可重構處理器;
[0063](5)當可重構處理器完成當前任務后,發(fā)送中斷信號。
[0064]該實現(xiàn)方法基于SM4-128加密算法方法,需要將其轉化為數(shù)據(jù)流圖,并制定SM4-128加密算法方法的數(shù)據(jù)輸入方式,然后根據(jù)數(shù)據(jù)流圖和數(shù)據(jù)輸入方式對應特定的可重構系統(tǒng)處理器生成相應的配置信息,通過配置可重構陣列塊將SM4-128加密算法映射到該陣列上,由此實現(xiàn)SM4-128加密算法方法。
[0065]以上詳細描述了本發(fā)明的優(yōu)選實施方式,但是,本發(fā)明并不限于上述實施方式中的具體細節(jié),在本發(fā)明的技術構思范圍內,可以對本發(fā)明的技術方案進行多種等同變換,這些等同變換均屬于本發(fā)明的保護范圍。
【主權項】
1.一種基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法系統(tǒng),其特征在于:包括可重構處理器、微處理器、系統(tǒng)總線; 其中,所述可重構處理器包括配置控制模塊、輸入先入先出寄存器組、輸出先入先出寄存器組、通用寄存器堆、可重構計算陣列; 所述配置控制模塊包括依次連接的配置與控制接口、配置存儲器、配置解析模塊,配置控制模塊的輸出端連接可重構處理器; 所述可重構計算陣列包括可重構計算陣列塊,可重構計算陣列塊包括可重構陣列運算行、寫端口運算行選擇器、讀端口運算行選擇器;所述可重構陣列運算行的輸出端連接寫端口運算行選擇器的輸入端,寫端口運算行選擇器的輸出端連接通用寄存器堆;所述讀端口運算行選擇器的輸入端接入通用寄存器堆,讀端口運算行選擇器的輸出端連接可重構陣列運算行; 其中,所述可重構陣列運算行包括算術邏輯單元、查找表單元、比特置換網(wǎng)絡、字節(jié)置換網(wǎng)絡以及數(shù)據(jù)輸入單元和數(shù)據(jù)輸出單元; 所述微處理器通過系統(tǒng)總線分別與配置控制模塊的配置與控制接口,可重構處理器的輸入先入先出寄存器組連接,所述輸入先入先出寄存器組連接可重構計算陣列,可重構計算陣列連接輸出端連接可重構處理器,輸出端連接可重構處理器通過系統(tǒng)總線與微處理器連接; 其中,通過分析SM4-128加密算法的特征來確定SM4-128加密算法的運算流程,將多輪的SM4-128加密算法運算展開成一幅數(shù)據(jù)流圖映射到可重構處理器中,通過多幅數(shù)據(jù)流圖最終完成SM4-128加密算法的整個運算; 微處理器通過系統(tǒng)總線發(fā)送明文數(shù)據(jù)給可重構處理器,可重構處理器將明文數(shù)據(jù)存入輸入先入先出寄存器組,并在最終計算完成后輸出密文數(shù)據(jù)到輸出先入先出寄存器組,并發(fā)送中斷信號,最終由微處理器讀出輸出至輸出先入先出寄存器組中的數(shù)據(jù)。2.如權利要求1所述的基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法系統(tǒng),其特征在于:所述的可重構處理器有M個可重構計算陣列塊、I個通用寄存器堆、I個輸入先入先出寄存器組和I個輸出先入先出寄存器組,其中M取整數(shù);其中M個可重構計算陣列塊通過一個I個通用寄存器堆互相進行數(shù)據(jù)的儲存、讀取和傳遞;且多個可重構計算陣列塊中相鄰的兩個可重構計算陣列塊通過數(shù)據(jù)輸入單元和數(shù)據(jù)輸出單元連接;第一個可重構計算陣列塊通過第一個可重構陣列運算行的數(shù)據(jù)輸入單元與輸入先入先出寄存器組相連,同時第M個可重構計算陣列塊通過最后一個可重構陣列運算行的數(shù)據(jù)輸出單元與輸出先入先出寄存器組相連。3.如權利要求2所述的基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法系統(tǒng),其特征在于:所述的每個可重構計算陣列塊包括N個可重構陣列運算行和I個讀端口運算行選擇器和I個寫端口運算行選擇器,其中N取整數(shù);其每N個可重構陣列運算行共享I個通用寄存器堆的讀端口和寫端口。4.如權利要求3所述的基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法系統(tǒng),其特征在于:所述的可重構陣列運算行包括X1個數(shù)據(jù)輸入單元,X2個數(shù)據(jù)輸出單元,X3個字節(jié)置換網(wǎng)絡,X4個比特置換網(wǎng)絡和X5個8位算術邏輯單元,X6個查找表單元,其中X1,X2,X3,X4,X5和X6均取整數(shù);數(shù)據(jù)經(jīng)過數(shù)據(jù)輸入單元,由選擇器通過讀取并解析不同的配置信息來選擇數(shù)據(jù)流入的字節(jié)置換網(wǎng)絡和比特置換網(wǎng)絡;字節(jié)置換網(wǎng)絡與比特置換網(wǎng)絡的輸出分為X5個8位的數(shù)據(jù)分別固定對應于X5個8位算術邏輯單元,并行運算X5/4組SM4-128加密算法數(shù)據(jù);每個算術邏輯單元使用數(shù)據(jù)選擇器選擇任意三個置換網(wǎng)絡的輸出作為其輸入;數(shù)據(jù)輸出單元暫存算術邏輯單元的結果并讀取配置信息決定將數(shù)據(jù)輸出到先入先出寄存器組、下一個可重構陣列運算行或通用寄存器堆。5.如權利要求4所述的基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法系統(tǒng),其特征在于:所述算術邏輯單元及查找表用于實現(xiàn)異或運算、與運算、直通輸出、查表操作的運算操作;同時每個算術邏輯單元有最多3個輸入和最多2個輸出,其中算術邏輯單元執(zhí)行上述運算操作的同時,支持任選一個輸入作為輸出;每4個8位的算術邏輯單元通過進位端口連接成為I個32位的算術邏輯單元;每4個可重構陣列運算行共享一個查找表,來實現(xiàn)查表操作。6.如權利要求1-5任一所述的基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法系統(tǒng),其特征在于:其特征在于:該系統(tǒng)的SM4-128加密算法包括如下6個步驟,對于32輪迭代的128比特的加密算法,對(2)?(6)步驟順序操作并循環(huán)32次后,執(zhí)行(6)執(zhí)行I次,即可得到密文(其中0紀<31): (1)生成Y[i]:數(shù)據(jù)輸入單元將X[i+l],X[i+2],X[i+3]同時載入可重構運算單元行中,(其中0<i<31);對載入數(shù)據(jù)經(jīng)過字節(jié)置換網(wǎng)絡后,輸入值同一個32比特的邏輯運算單元,進行三輸入異或操作,得到Y[i],并將其計算結果存入通用寄存器中; (2)生成A[i]:數(shù)據(jù)輸入單元將輪密鑰rk[i]及Y[i]同時載入可重構運算單元行中,在經(jīng)過字節(jié)置換網(wǎng)絡進行移位后,再對ri[i],Y[i]兩者進行異或操作,將結果A[i]輸出至緩存單元中; (3)查表操作:數(shù)據(jù)輸入單元將A[ i ]從緩存單元中載入至可重構運算單元行中;A [ i ]在通過字節(jié)置換網(wǎng)絡后,在查找表中對A[i]進行查表操作,得到B[i],并將B[i]存入緩存單元中; (4)線性變換:數(shù)據(jù)輸入單元將B[i]從緩存單元中載入至可重構陣列單元行中;B[i]在經(jīng)過比特置換網(wǎng)絡后,生成中間數(shù)據(jù)81[丨],82[丨],將扮[丨],82[丨],8[丨]三者進行異或操作,生成M[i],并將M[i]及B[i]存入緩存單元;將上一行輸出結果M[i]及B[i]從緩存單元中載入至可重構陣列單元行中,B[i]在經(jīng)過比特置換網(wǎng)絡后,生成中間數(shù)據(jù)B3[i],B4[i],將B3[i],B4[i],M[i]三者進行異或操作,得到T[i]; (5)生成X[i+4]:數(shù)據(jù)輸入單元將T[i]從緩存單元中載入至可重構陣列單元行中,對T[i]及X[ i]進行異或操作,得到X[ i+4]; (6)逆序操作:數(shù)據(jù)輸入單元將X[32],X[33],X[34],X[35]從通用寄存器中載入至可重構計算單元行中,經(jīng)過字節(jié)置換網(wǎng)絡,實現(xiàn)逆序,得到從高位至低位按照X[35],X[34],X[33],X[32]的數(shù)據(jù),輸出至輸出先入先出寄存器組,得到密文。7.—種基于大規(guī)模粗粒度可重構處理器的SM4-128加密算法的實現(xiàn)方法,其特征在于:包括以下步驟: (1)分析SM4-128加密算法的計算特點,并歸納出數(shù)據(jù)流圖; (2)確定數(shù)據(jù)流圖之后,針對可重構處理器的硬件特點,在了解其各寄存器、運算器以及各功能模塊的作用機制的情況下配置可重構處理器,并生成配置信息;(3)通過微處理器將配置信息以及所需要的各種初始數(shù)據(jù)存入相應的存儲器中;(4)最后微處理器啟動可重構處理器,并將配置信息及數(shù)據(jù)發(fā)送給可重構處理器;(5)當可重構處理器完成當前任務后,發(fā)送中斷信號。
【文檔編號】G06F21/72GK105912501SQ201610299248
【公開日】2016年8月31日
【申請日】2016年5月6日
【發(fā)明人】楊錦江, 閔婧, 尹玲, 申艾麟, 李兆奇, 趙利鋒, 葛偉
【申請人】東南大學—無錫集成電路技術研究所