李 偉 別夢妮 陳 韜 吳艾青 南龍梅
①(解放軍信息工程大學 鄭州 450000)
②(復旦大學專用集成電路與系統(tǒng)國家重點實驗室 上海 200433)
在萬物互聯(lián)的大數(shù)據(jù)時代,網(wǎng)絡與信息安全問題日漸突出,小型設備承擔的密碼處理任務日益豐富,對其密碼處理能力的要求也隨之提高。研究一種高能效的密碼芯片,在有限的面積和功耗下獲取更高的密碼處理性能具有重要應用價值和現(xiàn)實意義。
在密碼處理器實現(xiàn)方式中,通用微處理器具有很大的靈活性,但由于其運算粒度太細,運算速度遠不如專用密碼芯片。專用密碼芯片采用ASIC方式直接針對1種或幾種特定的算法進行硬件優(yōu)化,密碼處理性能高,但無法進行二次開發(fā),其兼容性差、可擴展性差。專用指令處理器有領域?qū)S弥噶罴脩艨赏ㄟ^軟件開發(fā)平臺實現(xiàn)不同密碼算法的可重構(gòu),處理性能也接近專用密碼芯片的水平,是一種具有吸引力的折中方式。因此,本文以高能效為目標,對密碼專用指令處理器體系結(jié)構(gòu)設計關(guān)鍵技術(shù)展開研究。
首先,能效模型是高能效密碼專用處理器設計的基礎,需要構(gòu)建密碼處理器能效分析模型,指導處理器整體結(jié)構(gòu)設計。
高能效密碼處理器體系結(jié)構(gòu)設計問題是一個設計空間探索問題。處理器體系結(jié)構(gòu)設計空間探索通常是一個由設計人員根據(jù)經(jīng)驗反復試驗以尋找合適的配置參數(shù)的過程。在這個過程中,設計人員需要對每一個可能影響處理器最終表現(xiàn)的參數(shù)進行選擇,通過模擬其中部分選擇方案來驗證是否滿足需求。這一過程往往需要大量的長時間的迭代,且很難確定最終選擇方案是否為最佳方案。為了加快這一進程,且提高設計方案的準確度,有研究者提出將體系結(jié)構(gòu)設計空間探索問題描述為回歸問題的思想,采用線性回歸、樣條回歸、神經(jīng)網(wǎng)絡等[1—6]分析模型進行參數(shù)預測和分析,取得了較好的成果。值得注意的是,隨著機器學習技術(shù)的蓬勃發(fā)展,更多的研究者將其引入體系結(jié)構(gòu)設計空間探索問題[7,8],使得探索迭代速度和準確度大大提高。但是,這些研究聚焦于體系結(jié)構(gòu)中的存儲容量、指令發(fā)射并行度等顯而易見的參數(shù)分析,而忽略了如單元粒度等不能使用具體數(shù)值表述的參數(shù)分析,而這部分參數(shù)往往更大程度地影響處理器的表現(xiàn)。
除此之外,精簡高效的架構(gòu)是高能效密碼專用處理器設計的關(guān)鍵。在能效模型的指導下,還需尋求高能效的處理器架構(gòu),并設計精簡的密碼運算單元,共同構(gòu)建高能效密碼專用處理器。
在密碼專用處理器架構(gòu)中,有VLIW(超長指令字)、CISC(復雜指令集)、RISC(精簡指令集)3種設計方案。其中VLIW指令集[9]架構(gòu)把許多條指令連在一起,增加了運算的速度,實現(xiàn)了指令級并行。這種方式實際使用多倍的硬件資源來換取運算速度,其龐大的面積和功耗開銷使得其能量效率大大降低。CISC指令集[10]架構(gòu)構(gòu)建的運算單元粒度大、延遲長、功耗大,同樣不適合以高能效為目標的密碼專用處理器。與之相比,RISC架構(gòu)因指令數(shù)目少、指令格式固定、指令實現(xiàn)粒度小等特點使得其硬件實現(xiàn)開銷小且能達到較高的工作頻率,更適合以高能效為目標的密碼專用處理器架構(gòu)設計。RISC架構(gòu)中,新推出的RISCV架構(gòu)開源且配套開發(fā)環(huán)境完整,更適合以高能效為目標的密碼專用處理器架構(gòu)設計。
針對上述分析,本文以高能效為目標,深入研究密碼專用指令處理器能效建模方法和體系結(jié)構(gòu)設計技術(shù)。首先,將密碼專用處理器運算單元設計空間探索問題描述為配置矩陣中的“1”值定位問題;然后,借鑒機器學習理念,引入“1”值停留在本位的概率參數(shù),建立密碼專用處理器運算單元高能效概率模型;最終,在該概率模型的指導下,提出一套高能效密碼專用處理器運算單元并將該運算單元集合擴展到64位RISCV通用密碼處理器中,完成高能效密碼專用指令處理器的構(gòu)建。
本文結(jié)構(gòu)安排如下:第2節(jié)對密碼專用指令集設計問題展開深入分析;第3節(jié)提出基于機器學習思想的密碼專用處理器運算單元高能效概率模型;第4節(jié)在能效分析模型指導下完成高能效密碼基本運算單元集合的設計并擴展到RISCV處理器中;第5節(jié)進行實驗驗證及分析,第6節(jié)總結(jié)本文工作。
在資源有限的嵌入式設備上,平衡資源和性能的關(guān)系顯得更為重要,高能效逐漸成為研究者追求的目標。密碼加速單元作為密碼專用處理器計算能力的集中體現(xiàn),其計算位寬和計算粒度影響著密碼專用處理器的關(guān)鍵路徑延遲和面積功耗開銷,同時決定了完成一個密碼任務的指令條數(shù)。在密碼加速單元設計方案已知的情況下,可進一步確定密碼處理器處理密碼任務的能效。
處理器核心的能效被定義為芯片性能與功耗的比值,單位為bps/W??梢姡枋鎏幚砥骱诵牡哪苄枰杉酒男阅芎凸膬蓚€參數(shù)。其中,性能參數(shù)在設計階段可通過邏輯綜合近似評估,而功耗需要在芯片后端設計完成后才能較為準確地采集。若直接采用性能與功耗的比值作為評價指標,則設計迭代需要更長的時間代價。在設計初期,研究者廣泛采用更容易采集到的時間面積積參數(shù)來近似評估處理器的能效。
密碼專用處理器是否滿足高能效的目標需要在執(zhí)行某一具體算法的過程中體現(xiàn),算法集合不同所設計的加速單元集合必然不同。我們假設目標算法集合為{y1,y2,···,ym},設一個密碼處理器核心完成算法 yl需要時間為Tl,密碼處理器核心的總面積為A,那么,該密碼處理器核心完成yl算法的時間面積積Wl如式(1)。
當綜合考慮執(zhí)行算法集合中所有算法的能效時,若簡單將時間面積積相加,則總時間面積積必然受指令條數(shù)多的算法影響更大。因此,為平衡各密碼算法體制差異對能效分析過程的影響,采用時間面積積增幅 fl之和作為最終評價標準,則總時間面積積增幅 f 表示如式(2),其中Wl0表示不集成任何密碼加速單元時,處理器實現(xiàn)密碼算法 yl的時間面積積。
綜上所述,高能效密碼專用處理器設計目標為找到使得總時間面積積增幅 f值最小的一種體系結(jié)構(gòu)。
對目標算法集合展開理論分析,抽取出其細粒度共性邏輯,并以此分析結(jié)果為依據(jù),確定基本密碼加速單元集合的功能種類。對于同一種功能的密碼運算,可用不同粒度、不同位寬的基本運算單元迭代實現(xiàn)。粒度和位寬大,其關(guān)鍵延遲和面積大,但實現(xiàn)算法所需時鐘周期短;粒度和位寬小,則其關(guān)鍵延遲和面積小,但實現(xiàn)算法所需時鐘周期長。我們難以通過定性分析判斷采用何種粒度與位寬的密碼基本運算單元能效更高。
綜合考慮算法集合、運算單元功能、規(guī)模、關(guān)鍵路徑延遲等參數(shù)的影響,一種配置處理器完成某一密碼算法yl的時間面積積Wl可表示為式(3),總時間面積積增幅f表示為式(4)。
此時,我們將高能效密碼專用處理器設計問題描述為矩陣 K 中“1”值的定位問題。即當 K矩陣每行元素中的“1”位于什么位置時,使得總時間面積積增幅f取得最小值。
觀察式(9), tij以及sij均可通過對密碼加速單元進行邏輯綜合獲取其值,若 Cl與矩陣 K 之間的關(guān)系確定,則可利用最優(yōu)化算法求解最優(yōu)配置。然而,Cl與矩陣 K之間的關(guān)系無法使用某一具體函數(shù)形式表述,只有在矩陣 K已知的情況下,通過編譯仿真獲取其具體數(shù)值??紤]此時 K矩陣可能的取值情況有 5a種,無法通過窮舉編譯來確定Cl與矩陣K的關(guān)系。因此,需要尋求其他方法建立f 關(guān)于矩陣 K的模型。
表1 參數(shù)列表
在這種情況下,機器學習這種不依賴于具體邏輯而依賴于數(shù)據(jù)關(guān)系的建模方式充分展現(xiàn)了其優(yōu)勢,可有效輔助建立f關(guān)于矩陣 K的能效分析模型。
建立密碼專用處理器能效分析模型的目的在于找到一個使得 f 取值最小的矩陣 K。在不能窮舉的情況下,我們更傾向于找到一個最有可能使 f取值最小的矩陣 K。即建立一個最高能效概率PW(矩陣K使得f取值最小的概率)與矩陣K 之間的關(guān)系。
Shan等人[11]在構(gòu)建功耗分析模型時,引入了一個通過概率矩陣獲取最小代價函數(shù)的機器學習算法,其解決的數(shù)學問題與本文有一定的相似性。但是,Shan等人的目標是找到一個滿足某一閾值范圍的代價函數(shù),引入的概率矩陣是為了反饋糾正代價函數(shù)的取值可能,使代價函數(shù)更逼近所設置的閾值。
借鑒上述概率矩陣轉(zhuǎn)移學習算法思想,本文提出一種高能效概率模型學習框架,如圖1所示。它由一個訓練階段和一個預測階段組成。在訓練階段,該框架從設計空間采樣n種配置,訓練一個最高能效概率模型。在預測階段,根據(jù)最高能效概率模型對設計空間中所有配置進行預測,從中找到使得能效最高的概率最大的配置矩陣K ,即所求配置。
概率模型學習框架以最高能效概率為訓練目標,可輔助建立起密碼專用處理器能效概率模型。
圖1 概率模型學習框架
如圖1所示,訓練概率模型的關(guān)鍵即為概率矩陣轉(zhuǎn)移算法,其直接決定了訓練效率以及概率模型的準確度。為設計一個合理的概率矩陣轉(zhuǎn)移算法,本文引入了一個概率矩陣 P表述最高能效概率PW與矩陣 K之間的關(guān)系。概率矩陣 P中元素pij表示“1”值停留在 kij時總時間面積積增幅f 最小的概率。由于 K矩陣中每行有且只有1個“1”元素,且每行“1”元素的位置相互獨立,顯然最高能效概率PW 與pij具有如式(10)所示關(guān)系。其中,pij滿足式(11)。根據(jù)概率矩陣 P,可以預測配置數(shù)據(jù)庫中任一配置為最優(yōu)配置的概率。
初始情況下,概率矩陣 P中元素pij為 該行元素個數(shù)的倒數(shù),即“1”值出現(xiàn)在該行任意位置的概率相等,為 1/b。在學習過程中,通過隨機采樣從未知配置集合中抽取一個配置,編譯仿真計算的實際 f值,使用該值與已標記的配置集合進行比較,判斷新采樣的配置在已知配置集合中是否為最優(yōu),并利用判斷結(jié)果更新概率矩陣的值。經(jīng)過多次迭代優(yōu)化,當連續(xù)r次預測結(jié)果與實測結(jié)果一致時,停止訓練, r是學習算法的一個控制參數(shù),其值越大,訓練準確度越高,訓練量也越大。
綜上,概率矩陣轉(zhuǎn)移算法流程圖如圖2所示,其具體描述如下:
(1)初始化配置矩陣 K及概率矩陣 P。矩陣 K中第1列為“1”,其余元素為“0”;概率矩陣 P中元素 pij為該行元素個數(shù)的倒數(shù);仿真初始矩陣 K對應的總能效比 f,記為fmin;初始化控制參數(shù)sum=0。
(2)隨機選取矩陣 K的一種配置Ki,利用概率矩陣 P計算已知配置集合中所有配置分別對應的最高能效概率,判斷新選取矩陣 Ki是否為最優(yōu)配置。
(3)仿真獲取新選取矩陣 Ki對應的總能效比fi,計算δ=fi-fmin,若δ >0意味著該配置不是最優(yōu)配置,反之,該配置是當前已知最優(yōu)配置。
(4)將步驟(2)預測結(jié)果與步驟(3)實測結(jié)果比對,若一致則sum=sum+1;否則,sum=0。
(5)若δ >0,即該配置不是最優(yōu)配置,將該配置對應位置的 pij減小一個參量α(α 為概率矩陣調(diào)整參量,決定了算法的學習速率),該行其余位置的pij增大α/b;反之,增大一個參量α ,該行其余位置的pij減小α/b;更新概率矩陣P 。
(6)若sum=r,則輸出概率矩陣 P,算法結(jié)束;否則,返回操作步驟(2)。
圖2 概率矩陣轉(zhuǎn)移算法流程圖
開源RISCV指令集架構(gòu)因指令數(shù)目少、指令格式固定、指令實現(xiàn)粒度小等特點使得其硬件實現(xiàn)開銷小且能達到較高的工作頻率,在通用處理器領域大放異彩,是當前通用高能效處理器設計的首選框架。本文以通用RISCV處理器為平臺,應用能效概率模型探索滿足高能效需求的擴展密碼加速單元集合,從而構(gòu)建高能效RISCV密碼專用處理器。
首先,我們借鑒了通用RISCV指令集架構(gòu),針對包括分組、序列、雜湊密碼算法在內(nèi)的10余種常用密碼算法,抽取出細粒度共性邏輯,設計密碼加速單元。基于這些加速單元采集能效模型所需相關(guān)數(shù)據(jù),構(gòu)建密碼專用處理器配置數(shù)據(jù)庫。然后,在密碼專用處理器能效分析模型的指導下,探索密碼處理器設計空間,提出用于密碼運算的專用指令集。最后,根據(jù)密碼專用指令集選出相應的密碼運算單元,擴展構(gòu)建高能效RISCV密碼處理器。
本文對包括分組、序列、雜湊密碼算法在內(nèi)的10余種常用密碼算法的結(jié)構(gòu)特征進行分析,對其運算類型進行分類,抽取出常見密碼算法的細粒度共性邏輯,并以此為依據(jù)設計了相應的密碼運算單元。
本文選取常用密碼算法集合包括DES, AES,M4, IDEA, A5-1, SM3, MD5, SHA256, Grain,ZUC, SNOW, RC4, CHACHA20等。針對上述算法集合共設計密碼加速單元12種,包括線性反饋移位寄存器、比特矩陣乘、三輸入布爾函數(shù)、非線性反饋移位寄存器、比特置換、模加/減、模乘、S盒替代、有限域乘法、移位、篩選、插入等[12—15]。即K矩陣中參數(shù)a=12。這12種密碼運算單元分別依照32, 64, 128, 256 bit 4種運算位寬設計,即 K矩陣中參數(shù)b=5。則共設計運算單元48種,設計配套指令57條(不同位寬指令視為同一條指令),計算得K 矩陣設計空間大小為512。
在CMOS 55 nm工藝下分別對48種運算單元進行邏輯綜合,構(gòu)建S 矩陣與 T矩陣。
根據(jù)4.1節(jié)分析,在GCC編譯鏈中擴展自定義指令57條。選取標準C語言編寫的算法程序作為標準輸入。根據(jù)概率模型學習算法需求,編譯統(tǒng)計不擴展密碼運算單元情況下執(zhí)行各密碼算法所需指令條數(shù),結(jié)果如圖3所示。
圖3 各密碼算法所需原RISCV指令條數(shù)
圖4 探索獲取密碼運算單元集合參數(shù)
根據(jù)圖3中數(shù)據(jù)和式(9),計算總時間面積積并初始化fmin,同時初始化配置矩陣 K及概率矩陣P(pij=0.2),選取控制參數(shù)r =20, α=0.01,啟動概率模型轉(zhuǎn)移算法執(zhí)行程序。經(jīng)學習,獲取運算單元集合參數(shù)如圖4所示。
由于密碼運算不存在復雜的乘除、原子、浮點操作,且基本運算位寬多在32 bit或64 bit內(nèi),同時考慮對序列密碼算法中線性反饋移位寄存器等大位寬操作的兼容,本文采用RV64I指令集作為基本指令集。該指令集僅支持兩元一目的指令形式,只能實現(xiàn)最高128 bit輸入64 bit輸出。然而,在密碼操作中,存在諸如線性反饋移位寄存器等需要128 bit數(shù)據(jù)輸入128 bit數(shù)據(jù)輸出的操作,又有諸如三輸入布爾函數(shù)等需要3個64 bit數(shù)據(jù)輸入的操作。級聯(lián)實現(xiàn)指令開銷更大,拖慢處理性能??紤]到RISCV指令格式中寄存器位置固定,遵循其設計原則,將2個源寄存器和1個目的寄存器均進行復用,即3個寄存器均可為源、目的寄存器以滿足密碼處理需要。而對于諸如連續(xù)模加等需要4個以上輸入數(shù)據(jù)的指令,增加了一組專用寄存器作為指令中某一固定輸入。擴展的指令格式如表2所示。其中,RL為兩源兩目的無立即數(shù)指令(例如128 bit置換),SRI為兩源兩目的帶立即數(shù)指令(例如線性反饋移位寄存器),C為配置指令(例如配置有限域運算不可約多項式)。
依據(jù)高能效密碼專用處理器設計空間探索結(jié)果和上述指令設計原則,設計密碼加速單元。選取PULPino項目開源的64位RISCV處理器核心Araine為基本框架,擴展專用密碼運算單元,并根據(jù)密碼處理任務特征需求,對處理器基本框架進行了優(yōu)化,擴展后的RISCV密碼處理器結(jié)構(gòu)示意圖如圖5所示。
為驗證能效概率模型準確率,隨機從設計空間中預先抽取200組數(shù)據(jù),通過編譯仿真獲取其在給定密碼算法集合下的總時間面積積增幅之和,作為測試集保存。
表2 指令模板
圖5 RISCV密碼處理器核心結(jié)構(gòu)示意圖
依據(jù)4.2節(jié)設計空間搜索結(jié)果,利用概率矩陣預測測試集中配置的能效概率。由于預測結(jié)果是一個概率值,不能直接反映為總時間面積積增幅。一種解決方式是:分別根據(jù)總時間面積積增幅之和以及能效概率對測試集中配置進行排序,以排名位置為標準對模型準確率進行檢驗。
經(jīng)測試,本文提出的能效概率模型平均經(jīng)過2300次迭代后結(jié)束,預測準確度為92.7%。
為對本文提出的RISCV密碼專用處理器進行驗證,使用Verilog HDL對RISCV密碼專用處理器進行描述,并在CMOS 55 nm工藝下進行了邏輯綜合,結(jié)果如表3所示。與擴展前相比,本文提出的RISCV密碼專用處理器面積增大了426874 μm2,關(guān)鍵延遲增加了0.51 ns。
以典型AES, DES, SHA256, SNOWV, MD5等密碼算法為例,其實現(xiàn)所需指令周期數(shù)結(jié)果如表4所示,需要注意的是,此處本文統(tǒng)計的是完成完整密碼算法批處理所需指令,不包括密鑰生成過程和初始化過程等。其時間面積積結(jié)果如圖6所示。綜上數(shù)據(jù)可知,本文提出的RISCV密碼專用處理器完成密碼算法總時間面積積增幅之和為0.46。
表3 RISCV密碼專用處理器性能
為進一步驗證本文提出的RISCV密碼專用處理器的能效優(yōu)勢,我們采集了RISCV密碼專用處理器執(zhí)行AES, DES, SHA256, SNOWV, SM3等密碼算法的實測功耗與吞吐率(400 Mbps),并與未擴展密碼加速單元的Ariane處理器進行比較。結(jié)果如圖7所示。
表4 RISCV密碼專用處理器實現(xiàn)算法所需指令周期數(shù)
圖6 RISCV密碼處理器核心實現(xiàn)算法的時間面積積
圖7 RISCV密碼處理器能效分析
綜合圖6和圖7數(shù)據(jù),可以發(fā)現(xiàn),本文提出的密碼專用處理器不同程度地提高了目標集合中算法的吞吐率,其中,對分組密碼算法的加速效果最好,對序列密碼算法的適應性略顯不足,但仍然比Ariane處理器能效更優(yōu)。由于Ariane處理器未披露其處理器功耗數(shù)據(jù),我們依據(jù)時間面積參數(shù),與Ariane處理器處理密碼任務的能效進行對比。可以發(fā)現(xiàn),密碼專用處理器的處理密碼任務的時間面積積相比Ariane處理器提高了6~55倍不等。
將本文提出的密碼專用處理器與VLIW的密碼專用處理器進行對比,為了對不同工藝下實現(xiàn)能效進行比對,本文參考了文獻[16]中的工藝換算方法對能效進行了簡單等價,其粗略評估結(jié)果如表5所示,表中數(shù)據(jù)均是標準化為55 nm工藝下的值。
由表5可知,與文獻[17]相比,AES算法能效略低,為文獻[17]的56%,但其余算法能效值提升了1.04~10.65倍,總體而言,對測試算法集合來說,能效比優(yōu)于文獻[17]。與文獻[18]相比,本文結(jié)構(gòu)在執(zhí)行雜湊密碼算法時具有明顯優(yōu)勢,SHA256算法能效較之提高了21倍,MD5算法提高了54倍。雖然分組密碼算法能效值較之低2~4倍,但文獻[18]的數(shù)值是于無反饋模式下測得的,應用場景有限;而且,與文獻[18]相比,本文提出的結(jié)構(gòu)執(zhí)行分組密碼算法能效的降低幅度遠低于雜湊密碼算法能效的提升幅度,整體而言,本文提出的結(jié)構(gòu)能效更優(yōu)。
表5 密碼處理器能效對比分析(Mbps/mW)
面向領域?qū)S玫奶幚砥髟O計方式中,專用指令處理器是靈活性與運算效率之間的折中選擇。本文以高能效為目標構(gòu)建了密碼專用處理器能效概率模型,并在該模型指導下完成了密碼專用處理器體系結(jié)構(gòu)設計。本文首先將運算單元設計空間探索問題描述為矩陣定位問題,借鑒機器學習思想提出了概率矩陣學習框架,建立了面向密碼領域的專用處理器運算單元能效分析模型。然后通過模型分析得到了針對一個密碼算法集合的高能效密碼運算單元集合。最終在通用處理器架構(gòu)的基礎上根據(jù)密碼處理特征進行優(yōu)化,并集成高能效密碼運算單元集合,實現(xiàn)了一個高能效的RISCV密碼專用指令處理器。