王 凱,李 偉,陳 韜,南龍梅
(1.信息工程大學(xué) 信息安全重點實驗室,河南 鄭州 450001; 2.復(fù)旦大學(xué) 微電子學(xué)院,上海 200433)
密碼算法的實現(xiàn)方式主要包括:通用處理器、專用指令處理器、FPGA(field programmable gate array)、密碼邏輯陣列和密碼算法IP核(intellectual property core)等[1]。其中,密碼算法IP核是運(yùn)算性能最高、功耗和面積最小的方式,長期以來受到廣泛應(yīng)用。
密碼SoC(system on chip)通過將通用處理器、密碼算法IP核、存儲和接口模塊等單元集成到單顆芯片上,能夠?qū)崿F(xiàn)數(shù)據(jù)加解密、消息簽名/驗證和數(shù)據(jù)完整性驗證等密碼應(yīng)用,已經(jīng)成為保障信息安全的核心部件。半導(dǎo)體與集成電路技術(shù)的迅速發(fā)展,使得密碼SoC的功能越來越強(qiáng),規(guī)模越來越大,基于密碼算法IP核集成的設(shè)計方法,在密碼SoC設(shè)計中得到了廣泛應(yīng)用。如何實現(xiàn)不同類型密碼算法IP核的統(tǒng)一管理和高效調(diào)度,對于增強(qiáng)密碼SoC整體靈活性和高效性具有重要意義。
AMBA(advanced microcontroller bus architecture bus)總線是ARM公司研發(fā)的一種片上總線系統(tǒng),支持多個主/從設(shè)備的快速連接和芯片級測試,在密碼SoC設(shè)計中得到了廣泛應(yīng)用。其中AHB(advanced high performance bus)總線作為AMBA的高級高性能總線,廣泛應(yīng)用于密碼SoC中處理器與算法IP核的高速連接。
針對密碼SoC中算法IP核的調(diào)度控制的研究主要有幾種。文獻(xiàn)[2]實現(xiàn)了基于FPGA的SDIO通信接口,但無法適用于多種密碼算法IP核運(yùn)算需求。文獻(xiàn)[3]實現(xiàn)了一種FPGA通用串行接口設(shè)計,但數(shù)據(jù)傳輸速率慢,嚴(yán)重限制了密碼算法IP核運(yùn)算性能。文獻(xiàn)[4]完成了一種基于FPGA的動態(tài)部分可重構(gòu)智能I/O接口設(shè)計與實現(xiàn),但需要通過TCP/IP網(wǎng)絡(luò)數(shù)據(jù)包切換總線接口配置指令,配置信息量很大。文獻(xiàn)[5]完成了一種面向通用可重構(gòu)計算的外存訪問接口設(shè)計,但是硬件開銷較大,且不能主動進(jìn)行數(shù)據(jù)傳輸。
針對以上問題,本文緊密結(jié)合密碼SoC和不同密碼算法IP核的實際應(yīng)用需求,深入分析不同的分組、序列、雜湊和公鑰密碼算法的編碼原理及硬件實現(xiàn)差異,從數(shù)據(jù)傳輸過程和運(yùn)算控制信號等方面提取出大量共性邏輯,提出了一種通用數(shù)據(jù)包格式和數(shù)據(jù)通信協(xié)議,能夠在進(jìn)行數(shù)據(jù)傳輸?shù)耐瑫r,根據(jù)各種算法的運(yùn)算需求,快速完成接口適配,使其滿足不同算法、工作模式和運(yùn)算階段的運(yùn)算控制需求。同時提出了一種可編程邏輯電路,高效完成數(shù)據(jù)包解析和通信協(xié)議轉(zhuǎn)換,能夠?qū)崿F(xiàn)與不同密碼算法IP核間的數(shù)據(jù)通信與運(yùn)算控制。最后又針對密碼算法IP核的數(shù)據(jù)傳輸設(shè)計了一種專用DMA(direct memory access)控制器,能夠獨立快速完成密碼算法IP核與片上存儲間的數(shù)據(jù)傳輸。
密碼SoC作為當(dāng)前滿足用戶信息安全需求的主要方式,其內(nèi)部除了通用處理器、片上總線、存儲和接口模塊之外,還必須包含多種密碼算法IP核。典型的基于AMBA總線的密碼SoC基本結(jié)構(gòu)如圖1所示。
圖1 基于AMBA總線的密碼SoC基本結(jié)構(gòu)
面對日益突出的信息安全問題,單一種類的密碼算法已經(jīng)無法滿足用戶多樣化的密碼應(yīng)用需求。尤其是近幾年研究的研究熱點問題,如零知識證明和可信計算等,要求密碼SoC必須能夠靈活高效調(diào)用多種密碼算法IP核,以此滿足用戶越來越高的信息安全需求。
一般來說,密碼算法IP核通常只針對密碼算法的運(yùn)算實現(xiàn),必須通過接口模塊掛載到AHB總線上,才能與系統(tǒng)其它模塊實現(xiàn)數(shù)據(jù)通信。接口的設(shè)計,直接影響密碼算法IP核管理調(diào)度的靈活性和密碼處理的高效性[6]。
1.2.1 管理調(diào)度需求分析
常用的密碼算法可分為序列、分組、雜湊和公鑰密碼算法4種類型[7]。不同類型密碼算法由于其編碼原理不同,其硬件實現(xiàn)過程有很大差別,如圖2所示,非常不利于密碼SoC的統(tǒng)一管理和調(diào)度控制[8]。
圖2 不同體制密碼算法的硬件實現(xiàn)過程
表1至表4分別統(tǒng)計了幾種典型的分組、序列、雜湊和公鑰密碼算法的基本參數(shù)信息。
表1 典型分組密碼算法參數(shù)比較
表2 典型序列密碼算法參數(shù)比較
表3 典型雜湊密碼算法參數(shù)比較
表4 典型公鑰密碼算法參數(shù)比較
通過分析,密碼SoC要實現(xiàn)多種算法IP核的統(tǒng)一管理調(diào)度,必須要解決3個問題[9]:數(shù)據(jù)傳輸、運(yùn)算控制和狀態(tài)反饋。
1.2.2 數(shù)據(jù)傳輸需求分析
密碼算法IP核的數(shù)據(jù)吞吐率β是衡量密碼SoC整體運(yùn)算性能的重要標(biāo)志,其值可表示為
(1)
其中,算法IP核的時鐘頻率fIP、分組長度Lgroup和完成一次密碼運(yùn)算的時鐘周期數(shù)Ps,針對特定密碼算法IP核均為固定值。而數(shù)據(jù)寫入時鐘周期數(shù)Pin、數(shù)據(jù)讀出時鐘周期數(shù)Pout和傳輸?shù)却龝r鐘周期數(shù)Pwait,受總線寬度和傳輸方式影響,在不同的應(yīng)用環(huán)境中差別較大。
實驗發(fā)現(xiàn),密碼算法IP核在硬件設(shè)計時的理論數(shù)據(jù)吞吐率通常較高,而集成到SoC內(nèi)部后的實際吞吐率卻很低,而究其根本原因在于總線數(shù)據(jù)傳輸效率較低,無法滿足算法IP核運(yùn)算需求[10]。
限制算法IP核數(shù)據(jù)吞吐率的原因主要有兩種[11]:
(1)數(shù)據(jù)輸入過程較慢,造成數(shù)據(jù)斷流,算法IP核必須等下一組明文數(shù)據(jù)注入完成以后,才能啟動運(yùn)算;
(2)數(shù)據(jù)讀出過程較慢,造成數(shù)據(jù)阻塞,算法IP核必須等上一組加密結(jié)果讀出完成以后,才能啟動運(yùn)算。
而影響數(shù)據(jù)傳輸效率的原因主要有兩點,也是本文中通用接口模型優(yōu)化的重點:
(1)輸入/輸出FIFO(first input first output)深度;
(2)總線帶寬利用率;
當(dāng)輸入/輸出FIFO深度Din和Dout設(shè)置為不同大小時,一組數(shù)據(jù)的密碼運(yùn)算過程如圖3所示。
圖3 不同F(xiàn)IFO深度下的一次密碼運(yùn)算過程
密碼算法的數(shù)據(jù)吞吐率隨輸入/輸出FIFO深度變化的曲線如圖4所示。
圖4 不同F(xiàn)IFO深度下的算法數(shù)據(jù)吞吐率
若輸入FIFO能夠存儲的數(shù)據(jù)量小于運(yùn)算所需的一個分組長度Lin,很容易造成數(shù)據(jù)斷流,因此,輸入FIFO的深度Din必須滿足
(2)
同理可得,在不造成輸出數(shù)據(jù)阻塞的情況下,輸出FIFO的深度Dout也必須滿足
(3)
在保證密碼算法IP核性能不受限的情況下,要使得接口電路面積最小,則輸入/輸出FIFO深度Din和Dout應(yīng)當(dāng)設(shè)置為相應(yīng)的最小值。
假設(shè)總線數(shù)據(jù)傳輸?shù)膸捓寐蕿棣牵渲悼杀硎緸?/p>
(4)
其中,Pd表示在一次數(shù)據(jù)傳輸過程中,數(shù)據(jù)傳輸所占用的時鐘周期數(shù),而N則為總線空等待的時鐘周期數(shù)。通常來說,總線帶寬利用率為η無法達(dá)到100%。
要實現(xiàn)極限數(shù)據(jù)吞吐率,數(shù)據(jù)傳輸必須滿足的條件是:Pwait=0,即:在算法IP核的一次運(yùn)算過程中,其接口必須將上一次的運(yùn)算結(jié)果全部讀出,且將下一次運(yùn)算所需的消息全部寫入,亦即:完成一個分組讀寫的總時間不能大于一次密碼運(yùn)算的時間,用公式可表示為
(5)
其中,輸入/輸出數(shù)據(jù)長度Lin和Lout、總線寬度Lbus、總線時鐘頻率fbus受到具體算法和密碼SoC系統(tǒng)影響,通常難以改變。在最大限度保證密碼算法IP核的快速運(yùn)算的情況下,接口與總線進(jìn)行數(shù)據(jù)傳輸時,總線帶寬利用率η應(yīng)當(dāng)滿足的條件為
(6)
此時,數(shù)據(jù)傳輸所占的時鐘周期數(shù)Pd應(yīng)滿足
(7)
因此,接口在進(jìn)行數(shù)據(jù)傳輸時,可按照不同算法、工作模式和運(yùn)算階段的運(yùn)算需求,配置專用DMA數(shù)據(jù)傳輸方式,確定每次連續(xù)數(shù)據(jù)傳輸?shù)淖謹(jǐn)?shù),進(jìn)而確定數(shù)據(jù)傳輸所占的時鐘周期數(shù)Pd,使接口數(shù)據(jù)傳輸過程能夠滿足密碼運(yùn)算需求,充分發(fā)揮算法IP核運(yùn)算性能。
密碼SoC調(diào)度多種算法IP核的傳統(tǒng)方式,主要有兩種:
(1)接口定制[12],即針對特定算法IP核定制接口電路,使其能夠正確掛載到片上總線。這樣每調(diào)用一種算法都必須重新設(shè)計接口,較大增加了密碼SoC設(shè)計復(fù)雜度和工作量;
(2)算法可重構(gòu)[13],即采用可重構(gòu)技術(shù),使設(shè)計出的電路結(jié)構(gòu)能夠通過配置實現(xiàn)不同的密碼算法。這種方式主要有兩個不足之處:一是對于同一算法,可重構(gòu)電路會增加芯片面積,降低算法性能;二是可重構(gòu)技術(shù)只能用于編碼原理相近的算法,而無法適用于所有算法,更無法滿足密碼SoC同時調(diào)度多種算法的實際需求。
本文通過分析不同類型密碼算法IP核的數(shù)據(jù)傳輸過程,及運(yùn)算控制需求,從中提取出大量共性特征,并提出了一種通用數(shù)據(jù)包和數(shù)據(jù)通信協(xié)議,能夠在實現(xiàn)算法IP核數(shù)據(jù)輸入的同時,完成對接口的配置,使其能夠適配不同類型的密碼算法、工作模式和運(yùn)算階段,進(jìn)而實現(xiàn)多種應(yīng)用場景下,對多種算法IP核的統(tǒng)一管理調(diào)度。
密碼算法IP核在運(yùn)算過程中所需的外部信號主要可分為兩類:運(yùn)算控制類和待處理數(shù)據(jù)。根據(jù)算法編碼原理和運(yùn)算需求,不同類型算法運(yùn)算過程差異較大,而同一密碼算法通常也存在多種不同的工作模式,難以實現(xiàn)統(tǒng)一控制。此外,算法IP核在運(yùn)算過程中也需要密鑰、初始向量IV、命令控制和消息數(shù)據(jù)等多種類型的外部數(shù)據(jù),難以進(jìn)行統(tǒng)一管理。
因此,密碼SoC要實現(xiàn)對算法IP核的統(tǒng)一管理和調(diào)度控制,必須通過統(tǒng)一的數(shù)據(jù)傳輸機(jī)制,在完成基本參數(shù)和數(shù)據(jù)注入的同時,實現(xiàn)對接口的配置,使其能夠根據(jù)實際需求適配不同類型的算法IP核,并在不同工作模式下完成相應(yīng)的調(diào)度控制。
本文充分考慮不同類型密碼算法的運(yùn)算差異的同時,提取出大量共性邏輯,設(shè)計了一種通用的數(shù)據(jù)包格式,在數(shù)據(jù)傳輸過程中,總線按照“包頭+數(shù)據(jù)”的格式[14],首先通過包頭發(fā)送與數(shù)據(jù)傳輸和運(yùn)算控制相關(guān)的關(guān)鍵信息,然后將算法參數(shù)和消息數(shù)據(jù)依次注入接口。而接口則通過數(shù)據(jù)包解析,完成數(shù)據(jù)傳輸任務(wù),并產(chǎn)生算法IP核的運(yùn)算控制信號。每次數(shù)據(jù)傳輸?shù)母袷饺鐖D5所示。
圖5 通用數(shù)據(jù)包傳輸格式
包頭內(nèi)存儲與密碼算法IP核運(yùn)算相關(guān)的關(guān)鍵信息,直接決定本次數(shù)據(jù)傳輸?shù)膶崿F(xiàn)過程。在本設(shè)計中,包頭共分兩組,每組各32 bit。其中Mater_sel表示主機(jī)選擇信號,決定數(shù)據(jù)傳輸是被動還是主動傳輸方式;W_R為讀寫控制信號;Data_type為數(shù)據(jù)類型;Mode為數(shù)據(jù)讀取模式,可配置為“查詢讀”或“中斷讀”的方式,Length為數(shù)據(jù)長度。第二組包頭中Addr_bus為片上存儲地址。
密碼SoC實現(xiàn)完整的密碼應(yīng)用包含多個層次:應(yīng)用層、算法層、運(yùn)算層和傳輸層,如圖6所示。
圖6 密碼應(yīng)用實現(xiàn)的層次關(guān)系
在本設(shè)計的數(shù)據(jù)通信協(xié)議中,密碼SoC調(diào)用單個算法IP核,主要可分為3個階段:初始化運(yùn)算階段、算法運(yùn)算階段和運(yùn)算結(jié)果讀取階段。
每次需要啟動密碼運(yùn)算時,CPU根據(jù)實際運(yùn)算需求,按照“包頭+數(shù)據(jù)”的格式,首先對接口進(jìn)行配置,并向密碼算法IP核注入?yún)?shù)、命令或數(shù)據(jù),接口再將數(shù)據(jù)根據(jù)需要注入算法IP核,同時發(fā)出相應(yīng)的運(yùn)算控制信號,算法IP核隨即啟動相應(yīng)的運(yùn)算操作。
運(yùn)算完成后,若為“中斷讀”模式,則接口直接向CPU發(fā)出中斷信號,隨后將數(shù)據(jù)讀出。若為“查詢讀”模式,則CPU可在需要讀取數(shù)據(jù)時,先查詢算法IP核運(yùn)算狀態(tài),再將數(shù)據(jù)讀出。
不同類型的密碼算法IP核,由于編碼原理和硬件實現(xiàn)方式的不同,所需的外部控制信號和狀態(tài)反饋信號存在較大差異。傳統(tǒng)的接口電路,在實現(xiàn)對算法IP核的運(yùn)算控制和狀態(tài)讀取時,大多采用狀態(tài)機(jī)的方式,雖然實現(xiàn)簡單,但靈活性較差,無法滿足多種算法、多種工作模式和多個運(yùn)算階段的實際需求。
本文在通用數(shù)據(jù)通信協(xié)議的基礎(chǔ)上,采用可編程技術(shù),設(shè)計了一種通用電路結(jié)構(gòu)[15],能夠靈活實現(xiàn)AHB總線對不同類型算法IP核的運(yùn)算控制和狀態(tài)讀取。
密碼算法IP核通用接口主要完成AHB總線與不同算法IP核間的數(shù)據(jù)傳輸、運(yùn)算控制和狀態(tài)反饋,實現(xiàn)系統(tǒng)統(tǒng)一管理和調(diào)度控制。另一方面,為了減少通用處理器的性能浪費(fèi),實現(xiàn)快速數(shù)據(jù)傳輸,該接口還需要具備獨立完成數(shù)據(jù)傳輸?shù)墓δ堋?/p>
本文通過分析不同類型密碼算法IP核的硬件實現(xiàn)方式和實際運(yùn)算需求,通過可編程技術(shù),設(shè)計了一種通用接口電路,使其能夠適配不同類型密碼算法IP核,其整體結(jié)構(gòu)如圖7所示。
圖7 密碼算法IP核接口整體結(jié)構(gòu)
整個接口左側(cè)為AHB總線協(xié)議標(biāo)準(zhǔn)的主接口和從接口信號,右側(cè)為密碼算法IP核的控制信號、地址信號、輸入/輸出數(shù)據(jù)和狀態(tài)反饋信號。接口內(nèi)部則主要由輸入/輸出FIFO、專用DMA、解包電路、狀態(tài)寄存器、控制寄存器和內(nèi)核讀寫控制器組成。
密碼運(yùn)算過程中,總線寫入的所有的包頭和數(shù)據(jù)都先緩存在輸入FIFO。輸入FIFO與算法IP核間的數(shù)據(jù)通信模塊如圖8所示,是確保整個接口功能正確性的關(guān)鍵。
圖8 輸入FIFO與算法IP核的數(shù)據(jù)通信模塊
此外,不同密碼算法IP核硬件實現(xiàn)差異導(dǎo)致運(yùn)算性能也不同,且大都難以與總線時鐘頻率匹配。因此,本設(shè)計的輸入/輸出路徑均采用異步雙端口FIFO實現(xiàn)。系統(tǒng)運(yùn)行時,專用DMA采用與AHB總線相同的低頻時鐘,其余部分的時鐘頻率則設(shè)為密碼算法IP核的最大時鐘頻率,兩部分獨立運(yùn)行,在保證系統(tǒng)正常運(yùn)行的同時,最大限度發(fā)揮密碼算法IP核的運(yùn)算性能。
AHB總線與算法IP核之間的協(xié)議轉(zhuǎn)換核心主要在于運(yùn)算控制和狀態(tài)反饋,而不同的算法IP核由于運(yùn)算過程的不同,在這兩個方面存在較大差異。針對這些差異,本文設(shè)計了一種通用信號轉(zhuǎn)換機(jī)制,其核心就在于控制和狀態(tài)寄存器,二者可直接與算法IP核通信,共同存儲與整個運(yùn)算過程相關(guān)的關(guān)鍵信號。
控制寄存器針對不同類型密碼算法和多種工作模式的運(yùn)算需求,設(shè)置了多種運(yùn)算控制信號,實現(xiàn)對算法IP核數(shù)據(jù)傳輸與運(yùn)算的直接控制,如圖9所示。其中Last信號為最后一組分組信號的標(biāo)志;Field為橢圓曲線密碼算法域選擇信號;Command為運(yùn)算控制命令;Start_initial為初始運(yùn)算啟動信號;Start為密碼運(yùn)算啟動信號;Rst_n為系統(tǒng)復(fù)位信號;W_R為讀寫控制信號;Mflag為主機(jī)選擇信號;Mode為接口工作模式。
圖9 控制寄存器結(jié)構(gòu)
狀態(tài)寄存器負(fù)責(zé)收集算法IP核的運(yùn)算狀態(tài)信號,以及接口數(shù)據(jù)存儲和傳輸?shù)臓顟B(tài)信號,并反饋給總線,便于CPU判斷進(jìn)行下一步操作,其結(jié)構(gòu)如圖10所示。其中低10位分別為輸入/輸出FIFO的存儲狀態(tài)信號;Busy信號為內(nèi)核運(yùn)算忙信號;Pre_done為內(nèi)核初始運(yùn)算完成信號;Data_valid為內(nèi)核運(yùn)算完成信號;Verify_result為公鑰密碼算法的消息驗證結(jié)果標(biāo)志信號;DMA_rd_done和DMA_wr_done為專用DMA讀/寫完成信號。
圖10 狀態(tài)寄存器結(jié)構(gòu)
密碼SoC需要調(diào)用不同類型密碼算法進(jìn)行密碼處理時,只需將接口內(nèi)控制寄存器和狀態(tài)寄存器的不同信號與對應(yīng)IP核的相關(guān)信號進(jìn)行連接,然后再掛載到AHB總線即可。
3.3.1 專用DMA數(shù)據(jù)傳輸方式
密碼SoC中的數(shù)據(jù)傳輸一般可采用通用處理器和DMA兩種方式[16]。當(dāng)進(jìn)行大量數(shù)據(jù)的密碼處理時,通過通用處理器進(jìn)行數(shù)據(jù)傳輸速率極慢,且會浪費(fèi)其運(yùn)算性能,而通用DMA面積較大,硬件成本較高。本文針對密碼算法IP核的數(shù)據(jù)傳輸,在接口內(nèi)部設(shè)計了一種專用DMA控制器[17],專門負(fù)責(zé)密碼算法IP核與片上存儲之間的數(shù)據(jù)搬運(yùn)工作,極大提高了數(shù)據(jù)傳輸性能。
DMA的工作方式主要包括3種:CPU暫停訪問、交替訪問和周期挪用[18,19]。按照式(6)中的要求,專用DMA必須要有盡量大的總線帶寬利用率,才能充分發(fā)揮密碼算法IP核運(yùn)算性能。因此本文采用CPU暫停訪問的方式,能夠最大限度提升DMA的數(shù)據(jù)傳輸速率[20]。
此外,密碼算法IP核在工作過程中,通常不會進(jìn)行同時讀寫操作,本設(shè)計中的專用DMA取消全雙工設(shè)計[21]和多通道設(shè)計[22,23],盡可能地縮減硬件開銷,提高電路最大工作頻率。
3.3.2 專用DMA硬件設(shè)計
專用DMA作為直接決定通用接口模型數(shù)據(jù)傳輸性能的模塊,其電路結(jié)構(gòu)如圖11所示。
圖11 專用DMA整體結(jié)構(gòu)
整個專用DMA按照其功能特點,可劃分為3個層次10個部分。
第一層包括專用DMA與AHB總線實現(xiàn)信息交互的主接口模塊和從接口模塊,負(fù)責(zé)協(xié)議轉(zhuǎn)換,主要通過狀態(tài)機(jī)電路,實現(xiàn)專用DMA與AHB總線之間的運(yùn)算控制和數(shù)據(jù)傳輸。
第二層為專用DMA的核心部分,共包括數(shù)據(jù)傳輸控制器、基地址寄存器、地址產(chǎn)生模塊、數(shù)據(jù)長度寄存器、數(shù)據(jù)長度遞減模塊以及中斷控制器。這一部分主要完成整個專用DMA的狀態(tài)運(yùn)行和數(shù)據(jù)傳輸控制。
第三層則包括輸入/輸出FIFO控制器,在讀寫控制狀態(tài)機(jī)的控制下,能夠建立FIFO與片上存儲直接進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ?,將來自片上存儲的?shù)據(jù)注入輸入FIFO,或?qū)⑦\(yùn)算結(jié)果由輸出FIFO搬運(yùn)到片上存儲單元。
數(shù)據(jù)傳輸控制器作為專用DMA最核心的部分,直接影響整個DMA的數(shù)據(jù)傳輸效率。為最大限度提高專用DMA的數(shù)據(jù)傳輸性能,本文中的數(shù)據(jù)傳輸控制器采用“狀態(tài)機(jī)+計數(shù)器”方式進(jìn)行設(shè)計,狀態(tài)轉(zhuǎn)換圖如圖12所示。這種設(shè)計的優(yōu)點是:
圖12 專用DMA數(shù)據(jù)傳輸控制器狀態(tài)轉(zhuǎn)換
(1)狀態(tài)數(shù)量少,能夠簡化狀態(tài)跳轉(zhuǎn)過程,提高系統(tǒng)可靠性,同時減少狀態(tài)存儲和狀態(tài)譯碼的面積消耗;
(2)狀態(tài)跳轉(zhuǎn)可配置,能夠按照式(7)和算法輸入/輸出數(shù)據(jù)長度Lin和Lout、總線寬度Lbus、總線時鐘頻率fbus和算法IP核的時鐘頻率fIP,計算得出數(shù)據(jù)傳輸所需的最小時鐘周期數(shù)Pd,即狀態(tài)跳轉(zhuǎn)時的計數(shù)器值,由此使得專用DMA能夠在不同算法、工作模式和運(yùn)算階段,實現(xiàn)對應(yīng)的最佳數(shù)據(jù)傳輸方式。
當(dāng)需要進(jìn)行密碼運(yùn)算時,CPU首先按照不同算法的運(yùn)算需求,對接口進(jìn)行配置,包括目標(biāo)地址、數(shù)據(jù)傳輸方式、傳輸方向和數(shù)據(jù)長度等。數(shù)據(jù)傳輸控制器再根據(jù)傳輸模式,決定通過CPU進(jìn)行數(shù)據(jù)傳輸,還是采用專用DMA主動完成數(shù)據(jù)傳輸,以及專用DMA的最佳數(shù)據(jù)傳輸方式。
為了驗證可編程高性能接口的正確性、靈活性和高效性,本文構(gòu)建了一套基于AMBA總線的密碼SoC測試平臺,其內(nèi)部不僅包含通用SoC的基本單元,如RISCV處理器、通用DMA、片上存儲模塊(SRAM、Eflash)、多種接口單元(UART、USB和SDIO等)和其它功能模塊(JTAG、INIT、Timer、Wdt、PLL等),能夠執(zhí)行常用的用戶程序,還集成了密碼算法IP核接口和多種密碼算法IP核,便于靈活高效實現(xiàn)多樣化密碼應(yīng)用。
為了充分發(fā)揮密碼SoC各個模塊的運(yùn)算性能,保證整個系統(tǒng)的高速運(yùn)行,本文采用多時鐘域設(shè)計,其中將AHB總線時鐘頻率設(shè)置為200 MHz,而密碼算法IP核則設(shè)置為與之對應(yīng)的最大時鐘頻率,使得密碼運(yùn)算性能最大化。而為了使整個接口的性能和面積達(dá)到最優(yōu),接口中的輸入/輸出FIFO按照算法的分組長度進(jìn)行設(shè)置。
密碼算法IP核的數(shù)據(jù)讀寫,可通過通用處理器、通用DMA或接口內(nèi)專用DMA實現(xiàn)。其中采用通用處理器進(jìn)行數(shù)據(jù)傳輸?shù)姆绞剿俣茸盥?,且會影響處理器?zhí)行系統(tǒng)程序,浪費(fèi)其運(yùn)算性能,進(jìn)行大量數(shù)據(jù)的密碼運(yùn)算時一般不采用。
專用DMA作為通用接口模型中的重要模塊,其設(shè)計的合理性及數(shù)據(jù)傳輸效率,直接影響整個接口的數(shù)據(jù)傳輸性能。為驗證專用DMA的設(shè)計合理性,本文首先將其與DesignWare軟件生成的通用DMA及文獻(xiàn)[17-21]中的通用DMA進(jìn)行對比。
為驗證專用DMA模塊數(shù)據(jù)傳輸?shù)母咝裕疚膶S肈MA放在SoC驗證平臺下進(jìn)行峰值傳輸速率測試,并進(jìn)行對比,結(jié)果見表5。
表5 DMA測試結(jié)果對比
測試結(jié)果表明,本設(shè)計中的專用DMA,專門針對密碼算法IP核的數(shù)據(jù)傳輸進(jìn)行設(shè)計,能夠建立接口內(nèi)FIFO與片上存儲直接進(jìn)行數(shù)據(jù)傳輸?shù)耐ǖ?,獨立快速完成接口與片上存儲間的數(shù)據(jù)傳輸,且能夠按照不同算法、工作模式和運(yùn)算階段的數(shù)據(jù)傳輸需求進(jìn)行適配,實現(xiàn)最佳的數(shù)據(jù)傳輸方式。
相比其它文獻(xiàn)中的通用DMA,本設(shè)計中的專用DMA資源占用更小,而時鐘頻率和峰值傳輸速率更高,能夠以較小的面積開銷,更快速地實現(xiàn)密碼算法IP核與SoC片上存儲之間的數(shù)據(jù)傳輸。
而為了驗證整個接口的靈活性和高效性,本文基于Xilinx Virtex-7 FPGA,搭建了一個SoC驗證平臺,如圖13所示。
圖13 FPGA驗證平臺
在驗證平臺上,本文先后選取了幾種典型的密碼算法IP核,在搭建好的SoC驗證平臺中,采用通用接口將多種密碼算法IP核集成到SoC中,并進(jìn)行了數(shù)據(jù)吞吐率測試對比,結(jié)果見表6。
表6 算法IP核數(shù)據(jù)吞吐率測試對比
實驗結(jié)果表明,在功能方面,相比文獻(xiàn)[2-5],本文中的通用接口模型,由于采用了通用數(shù)據(jù)通信協(xié)議和可編程電路結(jié)構(gòu),功能更加完善,能夠根據(jù)實際需求適配不同算法IP核,實現(xiàn)分組、序列、雜湊和公鑰密碼算法IP核到AHB總線的掛載和數(shù)據(jù)通信,進(jìn)而完成密碼SoC對不同類型密碼算法IP核的統(tǒng)一管理和調(diào)度控制。
在性能方面,相比文獻(xiàn)[2-5],本文中的通用接口模型,主要有三方面優(yōu)勢:一是提取了大量共性邏輯,接口配置信息量少;二是通過電路優(yōu)化,實現(xiàn)了更高的時鐘頻率;三是內(nèi)部集成了針對密碼運(yùn)算數(shù)據(jù)傳輸設(shè)計的專用DMA,能夠獨立高效完成密碼算法IP核與片上存儲間的數(shù)據(jù)傳輸,進(jìn)而大幅度提升了密碼算法IP核的數(shù)據(jù)吞吐率。
相比采用通用DMA進(jìn)行數(shù)據(jù)傳輸,本文中的通用接口在內(nèi)部專用DMA主動進(jìn)行數(shù)據(jù)傳輸,可將AES、SM4、SNOW、ZUC、SHA3、SM3和RSA算法的數(shù)據(jù)吞吐率分別提高266%、258%、232%、239%、116%、117%和64%。
本文通過分析密碼SoC中的密碼應(yīng)用需求,在充分考慮不同類型密碼算法IP核硬件實現(xiàn)差異性的同時,提取出大量共性邏輯,完成了一種統(tǒng)一的算法IP核通用接口模型和可編程電路結(jié)構(gòu)設(shè)計。測試結(jié)果表明,該接口模型和可編程邏輯電路,能夠快速適配不同類型算法IP核,實現(xiàn)算法IP核與AHB總線的高速數(shù)據(jù)通信,大幅度提高密碼SoC實現(xiàn)分組、序列、雜湊密碼算法和公鑰數(shù)據(jù)加密的數(shù)據(jù)吞吐率,在密碼SoC設(shè)計中,對提高系統(tǒng)靈活性、高效性,縮短設(shè)計周期,具有重要意義。下一步,可在此模型和可編程電路的基礎(chǔ)上,進(jìn)一步擴(kuò)展功能,使其能夠支持密碼算法IP核以外的其它功能模塊。