章宇雷,李 偉,徐金甫,陳 韜
(信息工程大學(xué) 信息安全重點(diǎn)實(shí)驗(yàn)室,河南 鄭州 450000)
近年來,國(guó)內(nèi)外針對(duì)雜湊算法硬件實(shí)現(xiàn)的研究較多,但絕大多數(shù)文獻(xiàn)僅僅是針對(duì)專用集成電路硬件結(jié)構(gòu)進(jìn)行設(shè)計(jì)的,在靈活性上具有局限性,難以適應(yīng)多種算法實(shí)時(shí)切換的需求。粗粒度可重構(gòu)密碼邏輯陣列(coarse-grained reconfigurable cipher logical array,CRCLA)是一種基于數(shù)據(jù)流的高效運(yùn)算結(jié)構(gòu)[2],兼顧了靈活性和處理速度的需求,能夠通過配置實(shí)現(xiàn)多種算法的實(shí)時(shí)重構(gòu)。
目前,國(guó)內(nèi)外針對(duì)算法映射到CRCLA上的研究,主要集中在分組密碼算法上,如文獻(xiàn)[2-5]。然而國(guó)內(nèi)外還沒有針對(duì)雜湊算法映射問題的專項(xiàng)研究,相較于其它類型算法,雜湊算法在運(yùn)算中具有其不同的特征,在映射的方法上會(huì)有一定的區(qū)別。同時(shí),在映射過程中,對(duì)于某一具體操作的映射,往往存在著多種候選映射方案,最佳映射方案的選取必定會(huì)影響后續(xù)操作的映射,且決定了整個(gè)映射結(jié)果的優(yōu)劣,需要結(jié)合雜湊算法的映射特征設(shè)定相應(yīng)的決策機(jī)制來選取最佳映射方案。
本文分析了雜湊算法的基本特征,結(jié)合可重構(gòu)陣列的硬件結(jié)構(gòu),采用空間展開操作并行的映射手段,針對(duì)在具體映射過程中某一操作的多種候選映射方案提出了一種優(yōu)先級(jí)決策機(jī)制,從而總結(jié)出雜湊算法高能效映射方法,并選取了幾種典型的雜湊算法進(jìn)行實(shí)驗(yàn)。
雜湊密碼算法是將任意長(zhǎng)度消息編碼的數(shù)字序列按照一定的規(guī)則進(jìn)行填充后按固定長(zhǎng)度分成一些消息塊,經(jīng)過消息擴(kuò)展后的消息塊經(jīng)過壓縮變換后輸出固定長(zhǎng)度的雜湊值。雜湊算法處理流程如圖1所示。
圖1 雜湊算法處理流程
通過對(duì)多種典型的雜湊算法的運(yùn)算過程進(jìn)行分析,雜湊算法具有以下幾個(gè)特征:
特征1:不同算法涉及的運(yùn)算操作均較為簡(jiǎn)單,大部分運(yùn)算操作在陣列上僅需計(jì)算單元中的一個(gè)算子單元即可實(shí)現(xiàn),因此在映射時(shí)可以將部分操作進(jìn)行合并,減少映射資源。
特征2:消息擴(kuò)展部分輪間數(shù)據(jù)依賴強(qiáng)烈但有固定規(guī)律,由計(jì)算過程可以發(fā)現(xiàn),從某一輪開始,該輪輸出數(shù)據(jù)依賴于之前輪的輸出數(shù)據(jù),但具有固定性。在映射中,需要注意每一輪數(shù)據(jù)的存儲(chǔ)以方便后續(xù)的運(yùn)算,因此數(shù)據(jù)的存儲(chǔ)方式是一個(gè)需要考慮的問題。
特征3:消息擴(kuò)展模塊與壓縮部分的關(guān)聯(lián)數(shù)據(jù)呈單向流動(dòng),且兩部分可同步進(jìn)行,映射時(shí)存在并行執(zhí)行的可能性,從而可以減少算法的執(zhí)行周期,提高算法的吞吐率。
特征4:壓縮部分輪內(nèi)數(shù)據(jù)依賴強(qiáng)烈但無輪間數(shù)據(jù)依賴,壓縮部分的輪運(yùn)算每輪輸出只與前一輪的數(shù)據(jù)存在依賴關(guān)系,輪運(yùn)算內(nèi)部數(shù)據(jù)僅與當(dāng)前輪相關(guān),不存在輪間數(shù)據(jù)依賴關(guān)系。因此在映射時(shí),相關(guān)計(jì)算PE的跨度不要過大,減少不必要的互連資源。
綜上所述,雜湊密碼算法的基本特征對(duì)算法的映射方式進(jìn)行了一定的約束,本文將依據(jù)雜湊算法的基本特征提出雜湊算法的高能效映射方法。
CRCLA采用了數(shù)據(jù)流加配置流驅(qū)動(dòng)的方式,通過配置信息來配置陣列內(nèi)部計(jì)算單元以及互連結(jié)構(gòu),從而實(shí)現(xiàn)不同種類的密碼運(yùn)算操作。
CRCLA整體上由輸入輸出FIFO、接口控制器、陣列控制器、配置控制單元、共享存儲(chǔ)單元(shared store unit,SSU)和運(yùn)算系統(tǒng)組成,其結(jié)構(gòu)如圖2所示。
圖2 CRCLA整體結(jié)構(gòu)
其中,輸入輸出FIFO負(fù)責(zé)數(shù)據(jù)的緩存以及與外部數(shù)據(jù)的交互,輸入FIFO用來存儲(chǔ)輸入的配置信息以及數(shù)據(jù),輸出FIFO用來存儲(chǔ)經(jīng)過陣列計(jì)算后得到的輸出數(shù)據(jù);配置控制單元由1個(gè)配置解析器和4個(gè)配置頁面組成,4個(gè)配置頁面之間可以通過控制進(jìn)行切換,可實(shí)現(xiàn)陣列的實(shí)時(shí)重構(gòu),配置解析器用來解析配置信息,將配置信息送至對(duì)應(yīng)的部件;陣列控制器可通過配置信息的配置,負(fù)責(zé)產(chǎn)生陣列內(nèi)部所需要的控制信號(hào),以保證算法的正常執(zhí)行;計(jì)算系統(tǒng)由64個(gè)計(jì)算單元(process element,PE)和基于2D-Mesh的互連結(jié)構(gòu)組成。
PE由可重構(gòu)密碼塊(reconfigurable cryptography block,RCB)及互連單元組成,RCB承擔(dān)主要的計(jì)算任務(wù),內(nèi)部包含著能實(shí)現(xiàn)多種運(yùn)算的運(yùn)算部件,且可通過內(nèi)部互連實(shí)現(xiàn)數(shù)據(jù)互通,能夠?qū)崿F(xiàn)復(fù)雜的密碼運(yùn)算。RCB內(nèi)部還包含寄存器單元,便于實(shí)現(xiàn)數(shù)據(jù)的暫存以及控制數(shù)據(jù)路徑的延時(shí),可以適應(yīng)不同算法的需求。由于部分密碼算法存在大位寬計(jì)算需求,同一行多個(gè)PE能夠級(jí)聯(lián),以實(shí)現(xiàn)64 bit、128 bit的運(yùn)算。
為方便問題描述,需要將雜湊算法到可重構(gòu)陣列上的映射抽象成數(shù)學(xué)模型,結(jié)合國(guó)內(nèi)外提出的陣列結(jié)構(gòu),本小節(jié)抽象出通用陣列數(shù)據(jù)流模型,對(duì)算法映射問題給出以下定義。
定義1 粗粒度可重構(gòu)陣列的硬件資源圖(coarse-grained reconfigurable array resource graph,CRAG)可表示為:給定一個(gè)由N×N個(gè)PE構(gòu)成的CRCLA,包含共享存儲(chǔ)單元等資源,其硬件資源圖可表示為CRAG={PE,Con,M},其中,PE為陣列中所有計(jì)算單元PEi,j的集合,i,j分別表示PE位于第i行,第j列,1≤i≤N, 1≤j≤N;Con表示互連資源的集合;M表示存儲(chǔ)資源的集合。
定義2 可重構(gòu)陣列的計(jì)算單元資源的集合可表示為:PE={OU1,OU2,…OUn},其中OU表示PE內(nèi)部包含的算子單元,如算術(shù)類單元、邏輯類單元、置換類單元等各類密碼運(yùn)算單元。
定義3 可重構(gòu)陣列的互連資源的集合可表示為:Con={ConPE,ConPES},其中,ConPE表示PE之間的互連,ConPES表示PE與共享存儲(chǔ)單元之間的互連。
定義4 可重構(gòu)陣列的存儲(chǔ)資源的集合可表示為:M={Rs,SSU},其中Rs為陣列中的寄存器單元Rsi,j的集合,i,j分別表示Rs位于第i行,第j列,1≤i≤N, 1≤j≤N;SSU表示共享存儲(chǔ)單元。
定義5 一個(gè)雜湊算法的集合可表示為:Ha={op,L,SData},其中,op表示雜湊算法包含的一系列運(yùn)算操作,L表示各個(gè)操作之間的連接關(guān)系,SData表示雜湊算法運(yùn)算過程中需要寄存的數(shù)據(jù)。
定義6 雜湊算法到可重構(gòu)陣列上的映射:給定一個(gè)雜湊算法的集合Ha={op,L,SData}和一個(gè)可重構(gòu)陣列的硬件資源圖CRAG={PE,Con,M},Ha到CRAG上的映射可表示為在滿足資源約束的條件下,完成op→PE,L→Con,SData→M的綁定。
本節(jié)首先進(jìn)行雜湊算法的映射分析,為提高映射能效,確定總體采用的映射手段后,針對(duì)映射過程中某一具體操作的多種候選映射方案提出了基于優(yōu)先級(jí)的決策機(jī)制,并對(duì)映射方法進(jìn)行了描述。
對(duì)于雜湊算法的填充部分,其操作是將數(shù)據(jù)“1”添加到消息末尾,再添加k個(gè)“0”,需要滿足以下條件
1+l+k=448 mod 512或1+l+k=896 mod 512
(1)
式中:l表示填充后的總長(zhǎng)度,mod為模運(yùn)算。由于填充部分運(yùn)算的特殊性,通過對(duì)現(xiàn)有的陣列結(jié)構(gòu)進(jìn)行研究發(fā)現(xiàn),其計(jì)算單元無法滿足填充部分運(yùn)算的需求,因此,僅針對(duì)經(jīng)過填充后的一個(gè)消息塊的消息擴(kuò)展、迭代壓縮的映射進(jìn)行研究。通過對(duì)比多種雜湊算法的研究分析,其主要參數(shù)數(shù)據(jù)見表1。
表1 多種雜湊算法主要參數(shù)對(duì)比
不難看出,不同種類的雜湊算法不同之處在于數(shù)據(jù)位寬、操作數(shù)長(zhǎng)度,循環(huán)次數(shù)以及最后輸出的雜湊值。其算法流程以及涉及的運(yùn)算幾乎是一致的。
CRCLA陣列結(jié)構(gòu)的輸入數(shù)據(jù)位寬為32 bit,在陣列內(nèi)部同一行多個(gè)PE之間可以通過級(jí)聯(lián)來實(shí)現(xiàn)大位寬處理。上述列表中所涉及到的運(yùn)算通過配置RCB即可完全實(shí)現(xiàn),并且能夠滿足多個(gè)操作并行的處理。
對(duì)于雜湊密碼算法,衡量其性能的指標(biāo)主要通過吞吐率來體現(xiàn),假設(shè)L為處理數(shù)據(jù)位寬,N為雜湊運(yùn)算過程所需時(shí)鐘周期數(shù),F(xiàn)為時(shí)鐘頻率,則雜湊算法的吞吐率可以表示如式(2)所示
(2)
式(2)中可以看出,要提高雜湊算法的吞吐率,主要可以通過增大數(shù)據(jù)處理位寬,增大時(shí)鐘頻率,以及降低運(yùn)算過程所需時(shí)鐘周期數(shù)來實(shí)現(xiàn)。由于大多數(shù)文獻(xiàn)中評(píng)價(jià)雜湊算法的處理性能通常以吞吐率作為評(píng)價(jià)指標(biāo),而可重構(gòu)陣列可采用堆疊可重構(gòu)單元的方式來提高吞吐率[3],因此僅考慮吞吐率指標(biāo)是不夠客觀的,需要同時(shí)考慮算法運(yùn)行的功耗。其功耗取決于具體的映射方案,以及消耗的資源總數(shù)來確定。
通過3.1節(jié)對(duì)雜湊算法的映射分析,其主要運(yùn)算過程體現(xiàn)在消息擴(kuò)展和迭代壓縮中的循環(huán)部分。首先,對(duì)消息擴(kuò)展模塊和迭代壓縮模塊進(jìn)行分別討論。在一組消息經(jīng)過消息擴(kuò)展后將各消息塊分成若干個(gè)操作數(shù)(不超過16個(gè)),再將這些操作數(shù)通過一些基本的運(yùn)算生成下一個(gè)操作數(shù)后并更新。陣列中存在著通用的共享存儲(chǔ)單元SSU,若將劃分后的這些數(shù)據(jù)都存入SSU,將會(huì)大大加劇從SSU到PE的互連資源的壓力,極有可能造成互連資源不足導(dǎo)致映射失敗的情況,且不方便后續(xù)的數(shù)據(jù)更新及運(yùn)算。陣列中每個(gè)PE中都包含寄存器單元,因此,將初始化的若干個(gè)數(shù)據(jù)通過移位的方式傳送至每個(gè)PE的寄存器單元中,通過PE之間的互連網(wǎng)絡(luò)來實(shí)現(xiàn)移位,每當(dāng)生成一個(gè)新的數(shù)據(jù)后,通過配置打開寄存器的使能信號(hào),實(shí)現(xiàn)移位的功能,來達(dá)到數(shù)據(jù)上的更新。以16個(gè)32位操作數(shù)為例,深色箭頭表示PE內(nèi)部寄存器內(nèi)的數(shù)據(jù)的走向,每個(gè)PE承擔(dān)著不同的計(jì)算任務(wù),如圖3所示。
圖3 移位寄存器的構(gòu)成
而對(duì)于迭代壓縮模塊,每一輪的運(yùn)算實(shí)質(zhì)上也是對(duì)各個(gè)數(shù)據(jù)進(jìn)行密碼運(yùn)算并更替,每一輪輸出數(shù)據(jù)僅與上一輪相關(guān),因此,只需考慮在映射時(shí),哪一些操作可以合并映射在同一個(gè)PE上以及布局布線,減少陣列中的資源消耗。
在同時(shí)考慮兩個(gè)模塊的映射時(shí),采取空間展開并行操作的方式,在其資源充足的前提下,將CRCLA陣列在空間上劃分成兩塊,上半部分映射消息擴(kuò)展模塊,下半部分映射迭代壓縮模塊。上下兩部分存在著從消息擴(kuò)展部分到壓縮迭代部分?jǐn)?shù)據(jù)的單向流動(dòng),通過對(duì)控制上的配置,當(dāng)消息擴(kuò)展模塊生成數(shù)據(jù)后,送入迭代壓縮模塊進(jìn)行運(yùn)算,實(shí)現(xiàn)兩個(gè)模塊的并行映射與執(zhí)行,這樣既能充分利用可重構(gòu)陣列的資源,又能減少運(yùn)算周期,有效提高算法的吞吐率。當(dāng)陣列規(guī)模較小時(shí),則采用多重配置頁面的模式進(jìn)行映射。
在制定了總體的映射方案后,再對(duì)映射過程中某一具體操作的映射進(jìn)行分析。
在映射過程中,一個(gè)雜湊算法的某個(gè)操作往往會(huì)存在多種映射方案,如寄存器的選取、互連資源的走向、運(yùn)算PE的選取等等。
定義7 候選映射方案:針對(duì)雜湊算法映射中的某一具體操作及與其相關(guān)的操作數(shù)和連接關(guān)系,存在多種組合方式Map={Mapk∶op→PEi,j,L→Con,SData→Mi,j,k=1,2,…n},能滿足當(dāng)前映射的需求,則Mapk稱為一種候選映射方案。
某個(gè)操作的多個(gè)候選映射方案的選取往往會(huì)直接影響后續(xù)操作的映射方案的選取以及整個(gè)映射方案的優(yōu)劣,因此,需要建立一套適配于雜湊算法映射的決策機(jī)制,來從多種映射方案中選取最佳方案,使得其在各個(gè)方面都較優(yōu)。本文從存儲(chǔ)資源開銷、PE內(nèi)部占用率開銷、互連資源開銷、配置信息量、延時(shí)開銷5個(gè)方面進(jìn)行討論并確定其優(yōu)先級(jí)。
存儲(chǔ)資源開銷。在雜湊算法映射到陣列的過程中,由以上分析可知,對(duì)陣列內(nèi)部的寄存器需求較高,若某個(gè)映射操作上占用過多的寄存器資源,極有可能導(dǎo)致后續(xù)的映射操作難度加大。
PE占用率開銷??芍貥?gòu)處理單元PE是用來執(zhí)行具體運(yùn)算的功能單元,若在映射中導(dǎo)致一些PE上承擔(dān)的計(jì)算任務(wù)明顯比其它PE要多,而在后續(xù)的映射過程中由于互連資源的限制需要再次使用這部分PE,將會(huì)導(dǎo)致需要重構(gòu)配置的次數(shù)增多,同時(shí)也會(huì)加大配置信息量。
互連資源開銷。由于陣列內(nèi)的互連資源是有限的,而面積和功耗導(dǎo)致了不可能保證任意兩個(gè)PE之間的直接連接。由第2節(jié)可知,本文基于的陣列結(jié)構(gòu)在互連上采用的是最為常規(guī)的2D-mesh結(jié)構(gòu),只能夠保證一個(gè)PE可以同其相鄰的PE進(jìn)行直接連接。在配置當(dāng)前操作時(shí),必須要考慮使用的互連資源,否則后續(xù)的映射操作可能會(huì)存在互連資源沖突的情況,導(dǎo)致需要切換配置頁面重構(gòu)配置,這不僅大大加劇了映射的復(fù)雜度,并且也可能直接導(dǎo)致映射失敗。
配置信息量。映射方案的配置信息量越少,數(shù)據(jù)注入輸入FIFO占用的時(shí)鐘周期越少,同時(shí)說明需要配置的結(jié)構(gòu)單元越少,映射復(fù)雜度越低,效率越高。
延時(shí)開銷。輪函數(shù)的循環(huán)部分為核心部分,其核心循環(huán)的延時(shí)開銷將直接決定映射的性能優(yōu)劣。
這5個(gè)方面如果單獨(dú)考慮則過于片面,但是如果僅僅通過計(jì)算相加的方式來擇優(yōu)選取,由于各個(gè)開銷在計(jì)算結(jié)果的單位上完全不同,且重要性不同,則不能客觀反應(yīng)出總的映射開銷,選取的映射方案實(shí)質(zhì)上并不一定就是最佳的。因此,本節(jié)設(shè)計(jì)了針對(duì)雜湊算法的決策機(jī)制,分析這5種開銷的重要性程度,給出優(yōu)先級(jí)排序,按照優(yōu)先級(jí)從大到小的方式進(jìn)行篩選得出最佳方案。
本文的目標(biāo)瞄準(zhǔn)點(diǎn)為雜湊算法的高能效映射,為了提高雜湊算法映射后的計(jì)算性能,將延時(shí)開銷作為首要評(píng)判指標(biāo)。其次,雜湊算法在映射過程中,需要用到大量的存儲(chǔ)資源,而存儲(chǔ)資源的分配不佳將會(huì)導(dǎo)致后續(xù)的操作存儲(chǔ)資源分配難度大大加劇,且在一定程度上會(huì)影響到互連資源的消耗上,因此,將存儲(chǔ)資源消耗作為決策機(jī)制中的第二評(píng)判指標(biāo)。當(dāng)決定互連時(shí),若選取占用較多的互連資源的方案,將會(huì)導(dǎo)致后續(xù)的操作在互連上存在繞線過多,或占用過多PE作為路由PE的情況,甚至可能導(dǎo)致映射失敗,因此將互連資源作為第三評(píng)判指標(biāo)??紤]PE占用率是為了平衡各個(gè)PE的使用程度,以免出現(xiàn)某些PE操作過多某些PE操作過少的情況,因此將PE占用率作為第四評(píng)判指標(biāo)。最后,在剩下的侯選映射方案中選取配置信息量最小的方案進(jìn)行映射。據(jù)此,得出表2所示的決策機(jī)制偽代碼。
表2 決策機(jī)制偽代碼
通過以上分析,得到基于優(yōu)先級(jí)決策機(jī)制的雜湊算法高能效映射方法描述如下,其流程如圖4所示。
圖4 雜湊算法高能效映射方法流程
步驟1對(duì)目標(biāo)陣列硬件結(jié)構(gòu)及其可用的資源總量進(jìn)行分析,得到陣列資源圖CRAG={PE,Con,M};
步驟2對(duì)需要映射的算法進(jìn)行分析,得到算法中可映射加速的部分的集合Ha={op,L,SData};
步驟3依據(jù)陣列可用資源及待映射算法的復(fù)雜程度,判斷是否可以采用空間展開操作并行的方式進(jìn)行映射,如可行,將按照3.2節(jié)所述方案進(jìn)行映射劃分。如不可行,則采用多配置頁面方式;
步驟4依據(jù)陣列中計(jì)算單元的結(jié)構(gòu)對(duì)算法中可以合并的操作進(jìn)行操作合并,得到新的算法操作集合Ha`;
步驟5按照算法操作的優(yōu)先級(jí)對(duì)算法中的每個(gè)操作進(jìn)行映射,判斷該操作是否存在候選映射方案,若存在,則跳至步驟6;若不存在,則跳至步驟7;
步驟6計(jì)算各個(gè)候選映射方案的5個(gè)開銷值,按照3.3節(jié)所述映射決策機(jī)制進(jìn)行決策,得到最佳映射方案;
步驟7更新硬件資源映射圖,并判斷是否存在未映射的操作,若存在,則重復(fù)步驟5~步驟7;若不存在,則映射結(jié)束,依據(jù)硬件資源映射圖得到陣列數(shù)據(jù)流配置信息。
本節(jié)首先通過SM3映射示例來展示整個(gè)映射流程及映射結(jié)果,然后對(duì)決策機(jī)制進(jìn)行實(shí)驗(yàn)對(duì)比。
以SM3算法為例,遵照以上映射流程進(jìn)行映射。對(duì)運(yùn)算操作進(jìn)行合并后映射到PE中,選取RAM單元用來存儲(chǔ)算法中涉及到的IV等常量。依據(jù)所需算子數(shù)量,將SM3的消息擴(kuò)展和迭代壓縮部分分別映射到陣列上,得到圖5所示的陣列數(shù)據(jù)路徑映射圖。
如圖5所示,將SM3的消息擴(kuò)展部分映射在陣列的上半部分,SM3的操作位寬為32位,移位寄存器的構(gòu)成部分為16個(gè)操作數(shù),選取左上部分16個(gè)PE通過PE內(nèi)部寄存器以及互連構(gòu)成移位寄存器。此外考慮到該部分涉及到的運(yùn)算為移位、異或等操作,可以操作合并至同一個(gè)PE當(dāng)中,減少資源消耗。
圖5 SM3陣列映射圖
陣列圖的下半部分用來映射壓縮模塊。壓縮模塊運(yùn)算相對(duì)于消息擴(kuò)展模塊較為復(fù)雜,需要更為精確的劃分運(yùn)算操作,在映射前期,更需要對(duì)同一操作的多種候選映射方案準(zhǔn)確利用好映射決策機(jī)制。算法中壓縮模塊的布爾運(yùn)算取決于當(dāng)前操作的輪數(shù),因此需要兩個(gè)配置頁面來完成整個(gè)運(yùn)算,圖中下半部分的深色PE即為映射布爾運(yùn)算的PE。
在將數(shù)據(jù)注入陣列移位寄存器的過程中,僅需在第5個(gè)時(shí)鐘周期就可將Wj和W′j通過配置送入迭代壓縮部分,實(shí)現(xiàn)操作上的并行,大大減少了算法運(yùn)行的周期。經(jīng)過優(yōu)化后的方案相比典型的映射方案減少了11個(gè)時(shí)鐘周期,提高了算法的吞吐率。
本文提出了一種針對(duì)雜湊算法映射的決策機(jī)制,基于存儲(chǔ)資源開銷、PE占用率開銷、互連資源開銷、配置信息量、延時(shí)開銷5種開銷按照影響程度排列優(yōu)先級(jí),如果一個(gè)操作存在多種映射方案時(shí),決策機(jī)制將依據(jù)優(yōu)先級(jí)篩選出最佳映射方案。
本文以課題組設(shè)計(jì)的陣列結(jié)構(gòu)進(jìn)行實(shí)驗(yàn),由于大部分文獻(xiàn)所實(shí)現(xiàn)的可重構(gòu)陣列結(jié)構(gòu)無源碼支持,且相關(guān)文獻(xiàn)中列舉的映射算法均為分組密碼算法,而課題組設(shè)計(jì)的陣列結(jié)構(gòu)基本符合2.2節(jié)中所提到的陣列數(shù)據(jù)流模型,因此可以作為典型陣列硬件結(jié)構(gòu)進(jìn)行實(shí)驗(yàn),其實(shí)驗(yàn)結(jié)果能夠具有一定的參考價(jià)值。
實(shí)驗(yàn)基于課題組前期設(shè)計(jì)的55 nm工藝下流片的粗粒度可重構(gòu)密碼邏輯陣列芯片,其基本硬件結(jié)構(gòu)如圖2所示。選取了SM3、SHA-256、SHA-384、SHA-512、MD4、MD5等多種典型雜湊算法在陣列芯片上進(jìn)行實(shí)測(cè)分析,通過構(gòu)建Xilinx AX7020開發(fā)板與陣列芯片的數(shù)據(jù)交互,并將數(shù)據(jù)通過串口助手打印至PC端,得到的吞吐率及功耗測(cè)試結(jié)果見表3、表4。
表3 不同決策方案得到的吞吐率/(Mb/s)
表4 不同決策方案得到的功耗/mW
表3分別對(duì)5種開銷單獨(dú)決策、直接相加決策、本文優(yōu)化后的決策進(jìn)行了多種雜湊算法的吞吐率測(cè)試,由表中所示數(shù)據(jù)可以看出,在吞吐率上以延時(shí)開銷進(jìn)行決策的吞吐率最佳,這是因?yàn)檠訒r(shí)開銷很大程度上決定了其算法的吞吐率,但本文優(yōu)化后的結(jié)果也處于較優(yōu)水平;表4分別對(duì)多種決策方案進(jìn)行了多種雜湊算法的功耗測(cè)試,由表中所示數(shù)據(jù)可以看出,功耗上基本是以配置信息量決策最佳,但本文優(yōu)化后的結(jié)果同時(shí)也處于較優(yōu)水平;由于大多數(shù)文獻(xiàn)中評(píng)價(jià)雜湊算法的處理性能通常以吞吐率作為評(píng)價(jià)指標(biāo),但對(duì)于陣列結(jié)構(gòu),僅考慮吞吐率及功耗指標(biāo)是不夠客觀的,本文將能效比作為主要評(píng)價(jià)指標(biāo)。
上述典型算法在7種決策方案上的能效比如圖6所示。其中橫坐標(biāo)1~7分別表示基于存儲(chǔ)資源開銷、PE占用率開銷、互連資源開銷、配置信息量、延時(shí)開銷,直接相加以及優(yōu)化后,縱坐標(biāo)表示能效值,其單位為Mbps/mW。從圖中可以明顯看出,本文提出的優(yōu)化后的決策機(jī)制在能效提升上有著明顯的優(yōu)勢(shì),相較于其它不同決策機(jī)制的映射方法,本文提出的決策機(jī)制在能效上提升了約10%到20%。
圖6 典型雜湊算法映射結(jié)果
本文通過分析雜湊算法的基本特征,結(jié)合陣列數(shù)據(jù)流處理模型,采用空間展開操作并行手段,并針對(duì)某一具體操作的候選映射方案提出了一種優(yōu)先級(jí)決策機(jī)制。以課題組設(shè)計(jì)的陣列結(jié)構(gòu)作為實(shí)驗(yàn)平臺(tái),選取了幾種典型的雜湊算法進(jìn)行驗(yàn)證,數(shù)據(jù)表明,本文提出的映射方法在能效上具有一定的優(yōu)勢(shì),能夠滿足典型雜湊算法的映射需求。由于本文僅針對(duì)雜湊算法的數(shù)據(jù)路徑映射上進(jìn)行分析,且未對(duì)陣列結(jié)構(gòu)上進(jìn)行改進(jìn),下一步將結(jié)合控制路徑,以及修改部分陣列結(jié)構(gòu),進(jìn)一步完善映射方法及提高雜湊算法映射的能效。