徐金甫 章宇雷 李 偉 陳 韜
(戰(zhàn)略支援部隊信息工程大學(xué) 鄭州 450001)
粗粒度可重構(gòu)密碼邏輯陣列(Coarse -grained Reconfigurable Cipher Logical Array, CRCLA)是一種基于數(shù)據(jù)流的高效運算結(jié)構(gòu),它結(jié)合了專用集成電路高性能與通用處理器高靈活性的特點[1],具有豐富的計算資源和互連資源,能夠?qū)崿F(xiàn)密碼算法的高能效實現(xiàn)及靈活性切換。但由于其復(fù)雜的硬件結(jié)構(gòu),在映射密碼算法時,也帶來了一定的難度。不同的映射方式將直接影響算法的實現(xiàn)性能及功耗,因此合理的映射方式是充分發(fā)揮粗粒度可重構(gòu)陣列結(jié)構(gòu)優(yōu)勢的關(guān)鍵[2]。
將密碼算法映射到CRCLA上,從數(shù)據(jù)流圖的角度出發(fā),映射問題實際上就是布局和布線兩個子問題的組合。目前,國內(nèi)外針對布局布線算法的研究主要是基于現(xiàn)場可編程邏輯門陣列(Field Programmable Gate Array, FPGA)進行的,而該項研究上均是將布局布線過程拆分成兩個階段進行的,按照先布局后布線的順序[3,4],采用了模擬退火算法及路徑搜索算法。與傳統(tǒng)的FPGA的布局布線算法不同的是,在CRCLA的映射問題上,布局和布線兩個子問題存在著很大的關(guān)聯(lián)性,若將其獨立分開,將不能達到較好的映射效果,且映射失敗往往發(fā)生在布線的過程中,因此需要將兩者結(jié)合。文獻[5]提出了一種基于圖映射的算法SPKM啟發(fā)式映射算法,通過“分裂-推送”的方式將循環(huán)部分映射至粗粒度可重構(gòu)陣列上,減少了映射的陣列行數(shù),但其流水性能較差;文獻[6]提出了一種存儲感知映射方法RAMP,在調(diào)度步驟之前,智能地探索各種路由資源,提高了映射的效率和質(zhì)量;文獻[7]提出了一種基于傳輸感知的有效循環(huán)映射方法TAEM,該方法可以有效利用CGRA上的異構(gòu)資源,顯著提高了編譯速度;文獻[8]對數(shù)據(jù)進行存儲劃分后利用模調(diào)度的方式進行映射,并采用了路徑重用進一步優(yōu)化路由資源,但其依賴可重構(gòu)單元進行路由,并未討論存在互連資源的可重構(gòu)陣列結(jié)構(gòu);文獻[9]提出了一種以邊為中心的模調(diào)度(Edge-centric Modulo Scheduling, EMS)映射算法,在時間維度上的模調(diào)度采用了邊的映射為中心,節(jié)點為邊放置過程中的產(chǎn)物的方式,縮短了算法的搜索空間,減少了編譯時間的同時,也能夠達到較好的映射性能,但其搜索空間可能存在局部最優(yōu)解;文獻[10]針對流水氣泡問題進行了優(yōu)化,通過直通算子共享的方式減少了算法的啟動間隔,提升了算法映射的性能等。
上述算法主要基于通用型可重構(gòu)陣列的結(jié)構(gòu)下進行討論的,而密碼算法的運算具有特殊性,且CRCLA內(nèi)部由專為密碼處理而設(shè)計的運算單元排列而成,通過配置信息來形成特定的數(shù)據(jù)通路[11],因此上述映射算法均不適用基于CRCLA的密碼算法映射問題。本文通過結(jié)合密碼算法的運算特征及CRCLA的硬件結(jié)構(gòu),提出了一種映射過程中的建模方式,對映射過程具有更加清晰地描述;并提出了一種以邊來指導(dǎo)節(jié)點的空間映射算法,通過確定根節(jié)點的映射后,按照關(guān)鍵路徑優(yōu)先的原則構(gòu)造搜索步,并制定了路徑搜索的方案使得映射路徑最短,為避免映射失敗,引入了回溯機制,提升了映射的能效及效率。
本文基于課題組前期設(shè)計的一款粗粒度可重構(gòu)密碼邏輯陣列開展映射算法驗證,該陣列結(jié)構(gòu)已在55 nm工藝下流片并驗證。圖1所示為課題組設(shè)計的4×4規(guī)模陣列,該陣列結(jié)構(gòu)中,4×4個同構(gòu)的運算單元(Processing Element, PE)構(gòu)成了PE的計算資源,運算位寬為32 bit,其內(nèi)部包含了多個運算功能單元(Functional Unit, FU),如比特置換單元、邏輯運算單元、非線性運算單元等,能夠滿足密碼算法運算的基本需求,并且各個FU單元之間存在互連網(wǎng)絡(luò),能夠?qū)崿F(xiàn)數(shù)據(jù)的互通。為消除密碼運算過程中的流水氣泡以及滿足部分算法數(shù)據(jù)的寄存需求,在各個FU單元后添加了寄存器傳輸網(wǎng)絡(luò),可以通過配置來實現(xiàn)數(shù)據(jù)的寄存。同時,每一行的PE之間存在級聯(lián)網(wǎng)絡(luò),能夠滿足部分密碼算法大位寬數(shù)據(jù)的處理需求。
連接盒(Connect Box, CB)和開關(guān)盒(Switch Box, SB)構(gòu)成了CRCLA的互連資源,CB分布在各個PE的4個方向上,能夠?qū)崿F(xiàn)PE與PE之間的互連以及PE與SB之間的互連;SB位于4個CB的中心,能夠?qū)崿F(xiàn)各個CB之間的互連。各個單元之間采用雙向數(shù)據(jù)傳輸?shù)姆绞?,同一個方向上不能同時存在兩個輸出或輸入,否則即為錯誤映射方式。
圖1 CRCLA整體硬件結(jié)構(gòu)
基于以上分析,密碼算法的映射問題實際上就是將密碼算法轉(zhuǎn)換成CRCLA的配置數(shù)據(jù)的過程。考慮到密碼算法表示的多樣性,結(jié)合粗粒度可重構(gòu)密碼邏輯陣列的結(jié)構(gòu),采用密碼算法的數(shù)據(jù)流圖作為密碼算法映射問題的輸入。
在進行數(shù)據(jù)流圖的映射之前,由于CRCLA的一個PE中含有多種運算功能單元,能夠同時實現(xiàn)多個節(jié)點的運算,為充分利用PE內(nèi)部資源以及降低映射難度,需要對初始的密碼算法數(shù)據(jù)流圖進行任務(wù)劃分,任務(wù)劃分過程參照文獻[12],本文不再贅述。
在經(jīng)過任務(wù)劃分后,同樣可以得到一個新的數(shù)據(jù)流圖,但該數(shù)據(jù)流圖中的節(jié)點不再表示單一的運算節(jié)點,而是由多個運算節(jié)點形成的節(jié)點簇,在后文中,如無特殊說明,均稱為節(jié)點,且本文中的密碼算法數(shù)據(jù)流圖均為經(jīng)過了任務(wù)劃分后的數(shù)據(jù)流圖。因此,各節(jié)點之間可能存在多條互連關(guān)系。
下面將舉例說明此種表示方式。如圖2(a)所示為一個初始的數(shù)據(jù)流圖,此時,一個節(jié)點表示一個運算操作;在經(jīng)過任務(wù)劃分后,得到如圖2(b)所示的數(shù)據(jù)流圖,此時一個節(jié)點中包含多個運算操作;圖2(c)即為該數(shù)據(jù)流圖的矩陣表示方法。
圖2 數(shù)據(jù)流圖的矩陣表示過程
同樣地,對粗粒度可重構(gòu)密碼邏輯陣列的計算及互連資源參數(shù)化模型進行表示。圖3所示為對PE的資源占用情況采用鏈表式描述。
Tag_row(PE)表示當前PE所在行數(shù),Tag_line(PE)表示當前PE所在列數(shù),Occupied(PE)表示當前PE是否被占用,其值可取0或1,值為1表示被占用。當陣列規(guī)模較小時,可能無法容納一個數(shù)據(jù)流圖,需要多個配置頁面來進行配置,因此添加一個Page(PE)來表示當前PE的配置頁面。
圖3 PE資源占用情況表示
對于互連資源,由2.1節(jié)可知,每一個PE周圍均有8個互連開關(guān)盒,為便于描述,將一個PE左邊及上邊的兩個CB、左上角的一個SB作為一個集合,如圖4(a)所示。
SB及CB的位置用該PE所在的行列進行表示,同時需要有對應(yīng)的標量對其進行區(qū)分,其表示方法如圖4(b)所示。
Tag(Con)表示當前鏈表指向的互連單元,其值可取0, 1, 2,分別代表SB, CB0, CB1。E_in,E_out, N_in, N_out, S_in, S_out, W_in,W_out分別表示東南西北4個方向的輸入和輸出占用情況,其值可取0或1,值為1表示已被占用,即表示不能從此方向輸入(輸出)。
綜上,本小節(jié)對密碼算法的數(shù)據(jù)流圖和CRCLA的計算資源及互連資源進行了描述,使得在映射過程中能夠更清晰地表示資源占用情況及映射的輸入輸出,為后續(xù)的算法映射奠定了一定的基礎(chǔ)。
圖4 一個包含互連及運算單元的集合及其表示方式
由2.2節(jié)分析可知,密碼算法映射問題面向的是一個經(jīng)過劃分后的能夠滿足CRCLA的各種約束的數(shù)據(jù)流圖。由于劃分后的數(shù)據(jù)流圖中的每個節(jié)點在映射時直接對應(yīng)于一個PE,且PE內(nèi)部各個FU均可通過全互連網(wǎng)絡(luò)實現(xiàn)數(shù)據(jù)之間的交互,因此無需考慮節(jié)點內(nèi)部算子的連接關(guān)系。受限于面積限制,CRCLA各個PE之間無法采用全互連網(wǎng)絡(luò),因此,其互連資源較為匱乏。通常,傳統(tǒng)的映射方法都是以節(jié)點為中心的,其重點在于如何將節(jié)點分配給各個PE,然而當密碼算法映射時,隨著映射的推進,即使還存在有大量的空閑狀態(tài)下的PE,也不可避免地由于互連資源限制導(dǎo)致映射失敗。
密碼算法的映射性能取決于映射到陣列上的關(guān)鍵路徑的延遲,而關(guān)鍵路徑上的延遲同時取決于計算單元PE的關(guān)鍵路徑延遲以及互連資源的關(guān)鍵路徑延遲。假設(shè)一個密碼算法映射到陣列上,則其關(guān)鍵路徑的延遲可以表示為
由式(3)可知,在布局布線可以通過盡量減少x,y的值來降低關(guān)鍵路徑上的延遲,即減少CB, SB的個數(shù)。因此各個節(jié)點映射的PE應(yīng)盡可能的緊湊,且各PE之間的連線應(yīng)盡可能短。
結(jié)合以上所有分析,互連資源的映射直接決定了密碼算法的映射性能及映射的成功與否。另外,對于密碼算法的映射問題,經(jīng)過大量研究可知,其布局及布線有著十分緊湊的聯(lián)系,不能將兩者單獨分開進行討論。
定義7 密碼算法映射問題:給定一個經(jīng)過劃分后的密碼算法數(shù)據(jù)流圖G={V,E}和陣列C ={P,L},在滿足路徑存在約束、方向一致性約束及資源約束的前提下,找到一個最少使用互連資源的映射f(G)。
EMS(Edge-centric Modulo Scheduling)算法,是一種以邊為中心的模調(diào)度算法,它摒棄了傳統(tǒng)的先布局后布線以節(jié)點為中心的模擬退火映射算法,采用顯示的方法來取代模擬退火的隱式管理,傳統(tǒng)的模擬退火算法在映射時編譯時間過長,而EMS算法則采用了以數(shù)據(jù)流圖中的邊為中心的映射方式,首先考慮的是布線的資源利用率問題,在路由邊的過程中尋找可以映射節(jié)點的單元。因此,只要邊映射成功了,節(jié)點的映射也隨之成功,這一方法將布局布線兩個過程結(jié)合起來,搜索空間大大縮小,提高了編譯的效率。在映射過程中,遵循以下幾個準則:(1)最小化布線資源;(2)主動避免布線失??;(3)對邊的映射進行優(yōu)先級度量。
EMS算法是一種時域映射模調(diào)度算法,而本文所研究的密碼算法具有強烈的數(shù)據(jù)相關(guān)性,在映射上通常為空間映射,即不存在子圖之間的時序問題,且面向的對象為互連及計算資源較為豐富的粗粒度密碼邏輯陣列,模調(diào)度將不適用于密碼算法的映射。因此,該算法難以適用于本文的映射問題,本文在此基礎(chǔ)上,針對密碼算法在CRCLA上的映射問題,提出一種以邊為中心的空間映射算法(Edge-centric Cipher Logical array Mapping,ECLMap)。
在總體映射策略上,假設(shè)陣列資源能夠滿足密碼算法的映射需求,采用空間映射的手段,結(jié)合上述分析,密碼算法的映射問題更貼切于EMS算法中的以邊為中心指導(dǎo)節(jié)點進行映射的思想。因此在映射過程中,同樣遵循4.1節(jié)提到的EMS算法的3個準則。
在映射一個密碼算法數(shù)據(jù)流圖時,按照優(yōu)先級順序?qū)⑵洳鸱殖芍鸺夁f進的遞增子圖,以邊為引導(dǎo),按照遞增子圖的順序依次進行映射。圖5所示為對一個數(shù)據(jù)流圖拆分的過程。
如圖5所示,在映射由A, B, C, D4個節(jié)點組成的數(shù)據(jù)流圖時,按照遞增子圖的順序進行映射,對圖1而言,假設(shè)首先映射節(jié)點A至某個PE后,從該PE出發(fā)沿著陣列對邊1進行搜索,當尋找到未被占用的PE時,停止本次搜索,此條路徑即為邊1對應(yīng)的映射對象,而該PE為節(jié)點B的映射對象,即同時完成了該子圖的布局布線。依次按照遞增子圖的順序進行搜索。此圖相應(yīng)的搜索路徑順序為A1B→B2C→C4D→D3A。結(jié)合密碼算法的映射特征及CRCLA的硬件結(jié)構(gòu),采用以下策略來完成整個映射過程:
圖5 數(shù)據(jù)流圖拆分映射過程
策略1 起始節(jié)點的映射。就緒隊列中包含節(jié)點及節(jié)點之間的邊,在進行邊的映射之前,首先需要確定一個起始位PE,然后從這個PE出發(fā),對邊進行映射。由于目標陣列的第1行PE為輸入行PE,外部數(shù)據(jù)只能通過第1行PE輸入而進行運算,因此,第1行PE作為起始節(jié)點的映射對象。由于本文的研究內(nèi)容為空間映射,無需考慮各個節(jié)點的時間上的先后順序,因此,從所有入度為0的起始節(jié)點中,按照扇出邊的值從大到小的順序,選擇扇出邊的值最大的起始節(jié)點進行映射。這是因為扇出邊的值較大的節(jié)點對互連資源的需求較大,隨著不斷進行映射,可用的互連資源和PE個數(shù)不斷減少,易受其他已經(jīng)映射的節(jié)點占用的資源影響,可能難以找到有效的映射。
策略2 搜索步的構(gòu)造。在確認了起始節(jié)點后,需要明確搜索路徑的順序,即構(gòu)造一個搜索步。為貼合密碼算法的運算特性,一個已映射的節(jié)點可能存在多個依賴關(guān)系,也就存在多條有向邊,從該節(jié)點出發(fā),優(yōu)先選擇關(guān)鍵路徑上的邊進行映射。而如果優(yōu)先映射非關(guān)鍵路徑的邊,可能會造成在映射關(guān)鍵路徑的邊時,由于部分互連資源被占用,需要繞線從而使用了更多的互連資源,不僅影響其他節(jié)點及邊的映射,還可能使得關(guān)鍵路徑的延遲變大從而導(dǎo)致最終的映射性能不佳,甚至?xí)?dǎo)致之后的邊映射失敗。
因此,本文在深度優(yōu)先搜索的基礎(chǔ)上,按照關(guān)鍵路徑優(yōu)先級最大的方式構(gòu)造搜索步。該過程可以描述為如下步驟:
步驟 1 輸入為算法的數(shù)據(jù)流圖 G,輸出為搜索路徑SE={e1,e2,···,en}。從根節(jié)點v開始,將該節(jié)點標記為已訪問;
步驟 2 將關(guān)鍵路徑優(yōu)先納入集合S E中,并將這條關(guān)鍵路徑上的節(jié)點均標記為已訪問;
步驟 3 搜索與根節(jié)點 v相連的所有的邊e=<v,u >,若節(jié)點u 未被訪問,則將邊e 納入SE中,然后以節(jié)點u為起點,循環(huán)步驟3至與v相連的所有的邊均已被訪問。
步驟 4 若圖中仍然存在未被訪問的節(jié)點,則以該節(jié)點為起始節(jié)點,跳至步驟3,直到所有節(jié)點均被標記為已訪問。
步驟 5 得到一條搜索路徑SE={e1,e2,···,en}。之后的映射則按照該搜索路徑進行。
策略3 路徑選擇。一個PE周圍存在著東南西北4個方向的互連資源,即連接盒CB,當確定一條就緒隊列中待映射的邊e后,通過查找鏈表來確定哪個方向的CB沒有被占用;在映射前期,當存在多個方向的CB未被占用時,有多個CB可以進行選擇。此時,從已映射的節(jié)點對應(yīng)的PE進行多條路徑搜索。對于單條路徑搜索,當首次搜索到某個CB周圍存在未映射的PE時,作為本次路徑的終點,停止本次路徑搜索,并記錄該條路徑所經(jīng)過的CB, SB以及未映射的PE的編號。定義一條路徑搜索(邊e=<u,v > 的映射)為
在進行路徑搜索時,為避免大量無意義的解而造成編譯時間的浪費,算法并不窮舉有向邊的所有可能的映射子圖。當搜索到某個未映射的PE時,對路徑的終點PE進行分析,定義一個PE的親和度為通過與該PE可進行數(shù)據(jù)交互的其他PE的個數(shù)和數(shù)據(jù)流圖中與待映射節(jié)點u存在直接連接關(guān)系的節(jié)點個數(shù)之間的關(guān)系。通過計算該PE與待映射節(jié)點的親和度來進行取舍,其計算公式為
式(4)為親和度計算公式,其中,Conu為除去已映射的節(jié)點,與節(jié)點 u有著直接連接關(guān)系的節(jié)點的個數(shù);ConPE表示與路徑終點PE能夠進行數(shù)據(jù)交互的未映射的PE的個數(shù)。由公式可知,若Conu>ConPE,則在后續(xù)的映射過程中會導(dǎo)致與節(jié)點u 有直接連接關(guān)系的部分節(jié)點映射失敗,因此其親和度值為0;若Conu≤ConPE,則該條路徑的后續(xù)映射能夠滿足其映射需求,此時,若Conu越接近于ConPE,則該PE越符合該節(jié)點u 的映射需求,則其親和度的值越高,其最大值為1。這樣既能夠保證節(jié)點 u的直接相鄰節(jié)點被成功映射,又不會造成資源的浪費,保留了其他具有更多可進行數(shù)據(jù)交互的PE個數(shù)的PE,可供后續(xù)節(jié)點的映射。因此,若該PE的親和度值為0,則刪除該條搜索路徑。
為使其互連資源盡可能少,在經(jīng)過算法搜索后得到的所有路徑中,篩選出最短的路徑,即所經(jīng)過的CB, SB個數(shù)最少,從最短的路徑中,選出親和度值最高的路徑,作為最佳路徑,為本次映射的最終方案。若存在多個最佳路徑,則進行記錄,并隨機挑選一個路徑作為本次映射的最終方案。
策略4 回溯機制。該算法采用的搜索方式是啟發(fā)式的,在后續(xù)的節(jié)點的映射過程中,隨著映射的推進,由于可用的資源越來越緊張,可能會出現(xiàn)映射失敗的情況。因此,采用一種反向回溯機制,該機制基于一種稱為回溯表(Failure Table,F(xiàn)T)的數(shù)據(jù)結(jié)構(gòu)[14]。在前向映射某個節(jié)點 vi時,每次挑選出最佳路徑時,對剩下的路徑依照親和度值及路徑大小按照從小到大進行排序,因此,回溯表可以表示為FTi=(vi,{Road1,Road2,···,Roadn}), 其中,Roadi則表示從vi的前向節(jié)點對應(yīng)映射的PE出發(fā),進行搜索得到的路徑,包含經(jīng)過的CB, SB的位置信息及終點PE的位置信息。
若在映射過程中,從某個節(jié)點 vi映射對應(yīng)的PE出發(fā)的路徑在搜索的過程中,當出現(xiàn)以下情況時:(1)無法搜索到未映射的PE;(2)所有路徑中的親和度的值均為0;(3)沒有可以進行映射的路徑;則進行反向回溯,回到在映射節(jié)點vj時的路徑搜索過程中,在回溯表中刪除所有到達該PE的路徑。之后查找回溯表中的信息,選擇親和度值最大的最短路徑Roadj進行映射,并將Roadj從回溯表中刪除,然后進行后續(xù)的邊及節(jié)點的映射。當出現(xiàn) vj的回溯表為空時,說明vj及前向路徑僅存在當前的一種映射方案,則往前回溯到 vj的前向節(jié)點vi的回溯表中繼續(xù)尋找其他映射方案,并依此類推,直到找到回溯的節(jié)點的回溯表不為空。
如表1所示,為ECLMap的完整過程的偽代碼。算法的輸入為經(jīng)過任務(wù)劃分后的密碼算法數(shù)據(jù)流圖及CRCLA的資源集合,輸出為最終的映射結(jié)果。
首先,對算法映射結(jié)果以及回溯表進行初始化(行(1) —行(2));接著依據(jù)策略1對起始節(jié)點進行選取,并依據(jù)策略2構(gòu)造相應(yīng)的搜索步(行(3)—行(5))。然后對搜索步中的起始節(jié)點進行映射,再從已映射的節(jié)點對應(yīng)的PE出發(fā),按照搜索步的順序依次對每一條邊的映射路徑依據(jù)策略3進行搜索,并通過親和度值來篩選可選路徑,在所有可選路徑中確定最短路徑即為該邊的最終映射方案,該路徑的終點為節(jié)點對應(yīng)的映射PE,并在回溯表中記錄其他候選方案(行(6)—行(15))。若映射過程中某一條邊沒有可選路徑,映射失敗,則進行反向回溯,從而進行新的映射(行(16) —行(26))。直到所有的節(jié)點及邊映射完畢后,輸出最終映射結(jié)果。
為驗證本文提出的ECLMap算法相較于其他算法在密碼算法映射問題上的有效性及優(yōu)勢,本節(jié)在實驗室前期研制的粗粒度可重構(gòu)密碼邏輯陣列上進行測試,該陣列結(jié)構(gòu)已完成相關(guān)功能驗證,在仿真平臺下使用Verilog HDL進行了相應(yīng)的模塊化描述,本文選取了典型的密碼算法AES, DES, A5-1,ZUC和SM3等密碼算法進行映射實驗,并利用了綜合仿真驗證工具進行了功能驗證及相關(guān)性能測試。
采用Intel Core i5- 6300HQ@ 2. 30 GHz CPU及16 GB內(nèi)存環(huán)境進行算法映射及仿真測試。首先,對算法自身的回溯機制進行了驗證,主要體現(xiàn)在對有無回溯時算法映射的成功率進行了統(tǒng)計與分析,其結(jié)果如圖6所示。從圖6可以看出,由于引入了回溯機制,使得算法在某一步映射失敗時,可以通過查詢回溯表返回至上一步,選擇其他候選方案進行重新映射,一定程度上避免了映射失敗,提高了映射成功率。
表1 ECLMap算法描述
為驗證ECLMap算法的高效性,對算法的編譯時間進行了測試,并將其與SA[4], SPKM[5],EPIMap[15]和2-StepACO[16]等幾種通用的映射算法進行了對比,結(jié)果如圖7所示。從圖中可以看出,本文提出的ECLMap算法對密碼算法的數(shù)據(jù)流圖與CRCLA的硬件結(jié)構(gòu)之間緊密的聯(lián)系進行了充分的考慮,并對初始的密碼算法的數(shù)據(jù)流圖進行了任務(wù)劃分的優(yōu)化,因此在編譯時間上相較于其他算法有著一定的優(yōu)勢,平均減少了約25%。
圖6 ECLMap算法映射成功率對比
圖7 CRCLA密碼算法映射編譯時間對比結(jié)果
對于密碼算法,其更為重要的是映射在CRCLA硬件結(jié)構(gòu)上實現(xiàn)的性能及功耗。因此,經(jīng)過不同算法運行后得到的不同配置方案下的配置信息,在CRCLA仿真平臺下進行映射實驗。表2和表3分別展示了幾種通用的映射算法和本文的ECLMap算法下的映射的性能及1.2 V工作電壓下的功耗結(jié)果對比。圖8進一步直觀地顯示了幾種密碼算法在不同的映射算法下實現(xiàn)的能效。從圖8可以看出,在編譯時間優(yōu)于其他算法的同時,ECLMap算法在映射能效上同樣比其他算法要高,平均提升了約20%,這是因為ECLMap算法的設(shè)計對于密碼算法更具針對性,從而能夠滿足密碼算法的高能效映射。
表2 不同映射算法下的密碼算法映射性能(Mbps)
表3 不同映射算法下的密碼算法映射功耗(mW)
圖8 CRCLA密碼算法映射能效對比結(jié)果
為實現(xiàn)密碼算法在粗粒度密碼邏輯陣列上的高能效映射,對密碼算法的映射問題進行了分析。本文對密碼算法的數(shù)據(jù)流圖及粗粒度可重構(gòu)密碼邏輯陣列的資源進行了相應(yīng)的描述,分析了影響密碼算法映射性能的關(guān)鍵因素及可進行提高的方面,并提出了一種以邊為中心的密碼邏輯陣列映射算法ECLMap,算法引入了回溯機制來進一步確保映射的成功率。實驗表明,在4×4陣列規(guī)模下,該算法無論是編譯時間還是映射性能上,相較于其他算法,均具有一定的優(yōu)勢。下一步將結(jié)合可變的陣列規(guī)模對算法進行改進。