呂廣秋,李 偉,陳 韜,南龍梅
(信息工程大學(xué) 信息安全重點(diǎn)實(shí)驗(yàn)室,鄭州 450001)
在密碼片上系統(tǒng)(System of Chip,SoC)內(nèi)集成專用協(xié)處理器以加速密碼運(yùn)算,已成為目前高性能SoC設(shè)計(jì)的重要方法。密碼SoC的性能受主處理器、協(xié)處理器以及數(shù)據(jù)調(diào)度控制的影響[1-2],其中,直接內(nèi)存存取(Direct Memory Access,DMA)設(shè)計(jì)尤為重要。DMA的外圍設(shè)備能直接訪問(wèn)內(nèi)存,使其在內(nèi)存數(shù)據(jù)拷貝[3-5]、實(shí)時(shí)數(shù)據(jù)采集[6-8]等數(shù)據(jù)密集型應(yīng)用中得到廣泛應(yīng)用。
密碼SoC等數(shù)據(jù)密集型應(yīng)用對(duì)數(shù)據(jù)傳輸帶寬的需求較高,因此,DMA傳輸?shù)目偩€帶寬利用率直接影響密碼SoC的整體性能。文獻(xiàn)[9]中的SoC多層總線通信架構(gòu)對(duì)IP在總線中的掛載分布提出更高要求,因此,其難以顯著提高傳輸性能,且存在總線帶寬利用率低、資源占用和功耗較大的缺點(diǎn)。文獻(xiàn)[10-11]中更高性能的總線雖然具有更大帶寬,但其在密碼應(yīng)用中總線帶寬利用率以及重復(fù)任務(wù)和多任務(wù)傳輸效率均較低的問(wèn)題仍未得到解決。
文獻(xiàn)[12]提出一種支持鏈表和多通道傳輸?shù)腄MA,其支持多個(gè)順序固定的DMA傳輸,但具有密碼協(xié)處理器利用率不高、重復(fù)任務(wù)和多任務(wù)傳輸效率低等不足。文獻(xiàn)[13-15]提出基于雙總線的全雙工DMA,雖然其實(shí)現(xiàn)了并行讀寫數(shù)據(jù)的功能,但總線閑置率過(guò)高且未提高同一總線上IP的DMA傳輸速度。文獻(xiàn)[16]提出專用輕量級(jí)DMA,其通過(guò)專用接口實(shí)現(xiàn)并行訪問(wèn),但該DMA傳輸范圍局限在固定IP與其他IP之間,難以支持任意2個(gè)IP之間的DMA傳輸。文獻(xiàn)[17]使用多個(gè)DMA引擎實(shí)現(xiàn)數(shù)據(jù)預(yù)取,但其對(duì)無(wú)延遲的數(shù)據(jù)訪問(wèn)未取得優(yōu)化效果。
本文借鑒已有研究根據(jù)特定應(yīng)用優(yōu)化DMA設(shè)計(jì)的思想[18-20],同時(shí)結(jié)合密碼SoC數(shù)據(jù)流的特點(diǎn),設(shè)計(jì)一種面向密碼SoC的高性能全雙工DMA。針對(duì)總線帶寬不足的問(wèn)題,通過(guò)流水線技術(shù)對(duì)特定模塊的DMA傳輸開辟專用通道以實(shí)現(xiàn)并行讀寫,無(wú)需更改總線結(jié)構(gòu),僅在特定模塊接口和DMA讀寫控制器中進(jìn)行少量更改便可大幅提高特定模塊的DMA傳輸速度。針對(duì)DMA傳輸?shù)目刂?、配置等時(shí)間過(guò)長(zhǎng)的問(wèn)題,本文DMA加入循環(huán)傳輸模式,實(shí)現(xiàn)DMA自主控制重復(fù)任務(wù)的循環(huán)執(zhí)行,減少CPU啟動(dòng)、配置和返回等重復(fù)操作,提高傳輸效率和帶寬利用率并降低CPU占用空間。針對(duì)協(xié)處理器利用率不高的問(wèn)題,通過(guò)動(dòng)態(tài)優(yōu)先級(jí)技術(shù)完成各通道面向服務(wù)質(zhì)量(Quality of Service,QoS)的自適應(yīng)傳輸,進(jìn)一步提高系統(tǒng)的傳輸效率和質(zhì)量。
通用密碼SoC包含通用主處理器CPU、片上存儲(chǔ)器、隨機(jī)存儲(chǔ)器RAM、高速接口、DMA和協(xié)處理器等部分,其結(jié)構(gòu)如圖1所示。通過(guò)分析密碼服務(wù)特點(diǎn)可知,當(dāng)密碼SoC提供密碼服務(wù)時(shí),數(shù)據(jù)流向歸總為4路DMA通道傳輸,如圖1中虛線箭頭所示:
①大量待處理數(shù)據(jù)由高速接口進(jìn)入片內(nèi)RAM。
②片內(nèi)RAM的數(shù)據(jù)進(jìn)入?yún)f(xié)處理器并被處理。
③數(shù)據(jù)處理完成后返回RAM。
④片內(nèi)RAM中的數(shù)據(jù)傳回高速接口完成一次密碼服務(wù)。
圖1 密碼SoC中數(shù)據(jù)流特征
密碼SoC的數(shù)據(jù)處理速度VP主要由數(shù)據(jù)傳輸速度VT、協(xié)處理器利用率α和數(shù)據(jù)處理最大速度VCo決定,即:
max(VP)=min(VT,α·VCo)
(1)
協(xié)處理器的最大速度VCo由本身硬件設(shè)計(jì)決定,本文不做討論。數(shù)據(jù)傳輸速度VT過(guò)低將會(huì)產(chǎn)生2種降低密碼SoC性能的情況:
1)當(dāng)協(xié)處理器數(shù)據(jù)傳入速度VDataIn<α·VCo時(shí),將會(huì)出現(xiàn)數(shù)據(jù)斷流,即協(xié)處理器必須等待數(shù)據(jù)輸入。
2)當(dāng)協(xié)處理器數(shù)據(jù)傳出速度VDataOut<α·VCo時(shí),將會(huì)導(dǎo)致數(shù)據(jù)阻塞,即協(xié)處理器必須等待數(shù)據(jù)傳出。
總線帶寬利用率β定義如下:
(2)
其中,tD為數(shù)據(jù)傳輸周期數(shù),tT為總線被DMA設(shè)備占用的時(shí)鐘數(shù)。在理想情況下,傳輸1個(gè)數(shù)據(jù)最少花費(fèi)1個(gè)時(shí)鐘周期,即β最大為100%。
數(shù)據(jù)傳輸速度VT等于整個(gè)密碼服務(wù)期間DMA通道的數(shù)據(jù)平均傳輸速度VDMA_ave。當(dāng)前密碼SoC數(shù)據(jù)傳輸可用帶寬B為:
(3)
其中,Bmax為系統(tǒng)總線的最大帶寬,VDMA_i_ave為DMA多個(gè)通道共用總線時(shí)第i個(gè)DMA通道的數(shù)據(jù)傳輸平均速度(本文中n=4),B其他為總線上其他操作占用的帶寬。當(dāng)B其他=0時(shí),DMA通道傳輸速度達(dá)到最大,由對(duì)稱密碼應(yīng)用中各個(gè)DMA通道數(shù)據(jù)傳輸量相同得到:
VDMA_i_ave≤Bmax×β/n
(4)
DMA傳輸是密碼SoC最主要的數(shù)據(jù)傳輸方式,其直接決定帶寬利用率β的大小。DMA傳輸流程分為4步:
1)配置DMA傳輸。
2)DMA將源地址數(shù)據(jù)讀取至FIFO。
3)DMA將FIFO數(shù)據(jù)寫入目的地址。
4)完成傳輸,掛起中斷或等待CPU輪詢。
由此可知,DMA的傳輸速度為:
(5)
其中,VDMA_i為DMA啟動(dòng)傳輸?shù)浇Y(jié)束傳輸?shù)钠骄俣?LB為DMA傳輸?shù)臄?shù)據(jù)長(zhǎng)度,TConfig為配置時(shí)間,TStart和TDMA返回為傳輸啟動(dòng)和完成反饋的時(shí)間,TDMA讀+TDMA寫為DMA讀寫耗費(fèi)時(shí)間。
在式(5)中,DMA傳輸效率受定長(zhǎng)時(shí)間的配置、啟動(dòng)和返回等操作影響,同時(shí)受由DMA讀寫方式?jīng)Q定的DMA讀寫耗費(fèi)時(shí)間的影響。目前,學(xué)術(shù)界和工業(yè)界將DMA的讀寫方式分為三類,如表1所示。
表1 3種DMA讀寫方式的帶寬利用率對(duì)比
設(shè)T1為TConfig+TStart+TDMA返回的值,不同DMA讀寫方式下的DMA傳輸速度為:
(6)
式(6)表明,傳輸數(shù)據(jù)長(zhǎng)度LB越大,則DMA傳輸速率VDMA_i越高。本文中LB的單位為字(Word)且T的單位為時(shí)鐘節(jié)拍數(shù)(Clock),此時(shí)有β=VDMA_i。當(dāng)LB足夠大時(shí)有VDMA_i=β≈1/m。
聯(lián)合式(1)、式(4)和式(6)可知,密碼SoC的數(shù)據(jù)處理速度VP可表示為:
(7)
由式(7)可知,密碼SoC的最大數(shù)據(jù)處理速度VP無(wú)法大于總線可用帶寬的1/n或α·VCo。
密碼SoC中的Bmax、VCo和LB分別由總線類型、協(xié)處理器硬件設(shè)計(jì)和密碼SoC數(shù)據(jù)處理分組長(zhǎng)度決定,參數(shù)固定。為使得密碼SoC性能最大化,本文將在影響因子m、n、T1、α方面對(duì)DMA進(jìn)行優(yōu)化。
為提高密碼SoC的性能,本文從3個(gè)方面對(duì)DMA設(shè)計(jì)進(jìn)行優(yōu)化:使用專用接口進(jìn)行全雙工的DMA讀寫傳輸,降低DMA重復(fù)配置與啟動(dòng)的時(shí)間,改變傳輸通道優(yōu)先級(jí)的自適應(yīng)傳輸。
由式(7)可知,密碼SoC的性能由協(xié)處理器利用率決定,而協(xié)處理器利用率又受數(shù)據(jù)傳輸速度影響,因此,得到密碼SoC性能最大化的必要條件和充分條件如下:
1)必要條件:數(shù)據(jù)傳輸速度VT足夠大,不會(huì)限制協(xié)處理器利用率α和密碼SoC性能。
2)充分條件:協(xié)處理器利用率α達(dá)到最大,此時(shí)密碼SoC性能最大。
當(dāng)密碼SoC性能最大化的必要條件未滿足時(shí),設(shè)V′P為密碼SoC的最大數(shù)據(jù)處理速度,由式(7)可知:
(8)
其中,影響因子m、n和T1對(duì)V′P的影響關(guān)系和取值范圍如下:
(9)
式(9)表明,為使得SoC性能最大化的必要條件未滿足時(shí)V′P最大,應(yīng)最小化m、n和T1。
本文在特定模塊中開辟專用接口以實(shí)現(xiàn)并行讀寫的全雙工DMA傳輸。由表1可知,此時(shí)m為最小值1,且AHB總線上執(zhí)行的DMA傳輸通道個(gè)數(shù)n由4降為2。本文DMA專用接口占用硬件資源極小,在未改變系統(tǒng)總線結(jié)構(gòu)的前提下實(shí)現(xiàn)了數(shù)據(jù)的全雙工讀寫,極大地提高了數(shù)據(jù)傳輸速度并降低了總線傳輸負(fù)載。
(10)
(11)
由式(10)、式(11)可知,本文DMA的循環(huán)工作模式使得總線帶寬利用率和傳輸效率接近總線傳輸?shù)睦碚撋舷拗?從而最大化DMA的傳輸速度。當(dāng)密碼SoC性能最大化的必要條件滿足后,密碼SoC的性能受限于協(xié)處理器利用率α,即:
V′P=α·VCo
(12)
為使協(xié)處理器利用率α最大,本文DMA采用多通道的動(dòng)態(tài)優(yōu)先級(jí)技術(shù),實(shí)現(xiàn)了優(yōu)先保證協(xié)處理器輸入FIFO非空、輸出FIFO非滿,使得當(dāng)SoC性能最大化的必要條件滿足時(shí)協(xié)處理器利用率α接近100%且密碼SoC的性能最大,最終實(shí)現(xiàn)密碼SoC中數(shù)據(jù)的自適應(yīng)傳輸。
將通用DMA、鏈?zhǔn)紻MA和本文DMA應(yīng)用于密碼SoC后,其協(xié)處理器利用率變化如圖2所示。其中:
①為通用DMA等待LB大小的數(shù)據(jù)處理完畢后再進(jìn)行數(shù)據(jù)搬移時(shí)發(fā)生數(shù)據(jù)斷流,協(xié)處理器處于空閑。
②為鏈?zhǔn)紻MA提前傳輸FIFO中處理完畢的數(shù)據(jù),數(shù)據(jù)斷流得到緩解。
③為DMA傳輸優(yōu)先保證協(xié)處理器輸入FIFO非空、輸出FIFO非滿,消除數(shù)據(jù)斷流和阻塞,最大化協(xié)處理器利用率α,從而極大地提高了密碼SoC性能。
圖2 3種DMA傳輸方式下的協(xié)處理器利用率變化
Fig.2 Varying utilization rate of coprocessor in three transmission modes of DMA
相較于傳統(tǒng)DMA,本文DMA具有支持全雙工數(shù)據(jù)讀寫、循環(huán)工作模式和自適應(yīng)傳輸功能,其硬件結(jié)構(gòu)如圖3所示。其中,①完成全雙式數(shù)據(jù)讀寫,②中的讀寫狀態(tài)機(jī)采用循環(huán)工作模式,③具備自適應(yīng)傳輸功能,④為DMA各通道的配置參數(shù)。
圖3 DMA硬件結(jié)構(gòu)
在圖3中,由并行讀寫仲裁電路決定是否進(jìn)行全雙工讀寫,其控制電路如圖4所示。
圖4 并行讀寫仲裁控制電路
當(dāng)ParallelEnable為高電平有效時(shí),本文DMA處于全雙工并行讀寫狀態(tài),此時(shí)由ParallelEnable和SwitchEnable信號(hào)共同決定讀寫引擎對(duì)片上IP和RAM的控制通路。本文DMA的循環(huán)工作模式由圖3中的部分②完成。一旦通道傳輸完畢,讀寫狀態(tài)機(jī)檢測(cè)到該通道工作在循環(huán)模式時(shí),會(huì)將該通道的配置寄存器AddrReading和AddrWriting重新賦值為StartAddrRead和StartAddrWrite,并且不會(huì)對(duì)通道完成標(biāo)志信號(hào)Finish置位,即該通道重新配置為傳輸初始狀態(tài),減輕CPU對(duì)重復(fù)任務(wù)的控制負(fù)擔(dān)。
自適應(yīng)傳輸由圖3中的部分③完成。由通道優(yōu)先級(jí)請(qǐng)求電路和優(yōu)先級(jí)仲裁電路共同完成通道優(yōu)先級(jí)的動(dòng)態(tài)調(diào)整,最終實(shí)現(xiàn)協(xié)處理器輸入FIFO非空、輸出FIFO非滿。為實(shí)現(xiàn)該目標(biāo),本文DMA使用通道優(yōu)先級(jí)請(qǐng)求電路生成通道的提權(quán)請(qǐng)求信號(hào)Priority_Higher。同時(shí),為了保證循環(huán)模式下的數(shù)據(jù)一致性,該模塊生成了通道的掛起請(qǐng)求信號(hào)Priority_Suspend,例如,當(dāng)發(fā)生數(shù)據(jù)覆蓋或讀取未準(zhǔn)備好的數(shù)據(jù)時(shí),當(dāng)前通道傳輸應(yīng)當(dāng)掛起。通道優(yōu)先級(jí)請(qǐng)求信號(hào)生成關(guān)系如表2所示。優(yōu)先級(jí)仲裁電路會(huì)根據(jù)通道的掛起、提權(quán)信號(hào)選定每個(gè)通道當(dāng)前優(yōu)先級(jí),通過(guò)仲裁實(shí)時(shí)得到優(yōu)先級(jí)最高的通道,并通知讀寫狀態(tài)機(jī)將總線授權(quán)給該通道以進(jìn)行讀寫。
表2 各通道的動(dòng)態(tài)優(yōu)先級(jí)
本文DMA工作流程如圖5所示。
圖5 DMA工作流程
在DMA傳輸配置階段需要對(duì)使用專用接口的特定模塊地址范圍、各個(gè)通道的傳輸參數(shù)以及工作模式進(jìn)行配置。在DMA傳輸開始后,首先檢測(cè)當(dāng)前傳輸通道的源或目的地址是否包含在專用接口的地址范圍內(nèi),如果是,則使用AHB總線和專用通道并行讀寫數(shù)據(jù),高效實(shí)現(xiàn)數(shù)據(jù)搬移,此時(shí)m=1;否則,DMA將定長(zhǎng)大小的數(shù)據(jù)塊讀入FIFO后寫至目的地址,流水執(zhí)行數(shù)據(jù)的讀取和返回,此時(shí)m=2。優(yōu)先級(jí)仲裁器接收到通道傳輸狀態(tài)反饋后進(jìn)行通道優(yōu)先級(jí)動(dòng)態(tài)調(diào)整,實(shí)現(xiàn)面向QoS的自適應(yīng)傳輸:當(dāng)通道提權(quán)信號(hào)有效時(shí),通道提升到預(yù)配置的高優(yōu)先級(jí);當(dāng)掛起信號(hào)有效時(shí),當(dāng)前通道傳輸掛起,由次優(yōu)先級(jí)通道進(jìn)行傳輸或進(jìn)入等待狀態(tài);通道的提權(quán)和掛起信號(hào)均無(wú)效時(shí)則優(yōu)先級(jí)不變。
圖6所示為面向QoS的自適應(yīng)傳輸示例。自適應(yīng)傳輸允許優(yōu)先級(jí)較高的通道掛起優(yōu)先級(jí)較低的通道傳輸(如Task1~Task3),而傳統(tǒng)DMA不允許通道傳輸被打斷,導(dǎo)致當(dāng)前傳輸通道優(yōu)先級(jí)可能不是最高。同時(shí),本文DMA自適應(yīng)傳輸優(yōu)先在當(dāng)前最高優(yōu)先級(jí)通道中準(zhǔn)備完畢的通道中進(jìn)行傳輸(如Task3掛起,執(zhí)行Task4),并且自適應(yīng)傳輸允許通道優(yōu)先級(jí)動(dòng)態(tài)變化(如Task5),從而提高傳輸服務(wù)質(zhì)量。當(dāng)工作在循環(huán)模式時(shí),DMA通道在完成傳輸后自動(dòng)重置傳輸參數(shù),節(jié)省CPU對(duì)DMA配置、啟動(dòng)等的時(shí)間,高效執(zhí)行重復(fù)的DMA傳輸任務(wù)。在不啟用循環(huán)模式時(shí),DMA完成一次傳輸后,通常由中斷模塊向CPU發(fā)起中斷報(bào)告?zhèn)鬏斖瓿汕闆r。
圖6 面向QoS的自適應(yīng)傳輸示例
圖7所示為DMA在2種模式下的傳輸效率對(duì)比,單實(shí)線為通用DMA與本文DMA共同操作,雙虛線為通用DMA完成一次通道傳輸后返回和重新配置操作。從圖7可以看出,DMA工作在循環(huán)模式時(shí)無(wú)需CPU參與,提高了總線帶寬利用率β和SoC應(yīng)用的靈活性。
圖7 循環(huán)模式傳輸效率優(yōu)化效果
Fig.7 Effect of transmission efficiency optimization in the cyclic mode
為對(duì)本文DMA進(jìn)行有效評(píng)估,將其與文獻(xiàn)[12-14]中的DMA以及由Design Ware2018生成的DMA進(jìn)行對(duì)比分析,結(jié)果如表3所示。
表3 DMA的性能對(duì)比分析
在表3中,本文DMA采用Verilog HDL硬件語(yǔ)言實(shí)現(xiàn),并基于55 nm工藝對(duì)設(shè)計(jì)進(jìn)行邏輯綜合。最高頻率是指將DMA設(shè)計(jì)的頻率從原工藝等效至55 nm下所得到的大致工作頻率,表示支持該功能,—表示文中未給出。由表3可知,本文DMA消耗資源適中,頻率較高,在通道個(gè)數(shù)、傳輸位寬上相對(duì)文獻(xiàn)[12]與文獻(xiàn)[14]DMA較少。雖然本文DMA相對(duì)Design Ware2018生成的DMA仲裁策略不足,但其在工作模式和讀寫并行上功能完善,對(duì)密碼應(yīng)用的支持性更好。
當(dāng)對(duì)外提供密碼服務(wù)且時(shí)鐘頻率為400 MHz時(shí),傳輸分片長(zhǎng)度LB對(duì)通用DMA與本文DMA的數(shù)據(jù)傳輸速度及總線帶寬利用率β的影響如圖8所示。其中,通用DMA帶寬利用率變化曲線與式(6)吻合,而本文DMA因后續(xù)通道傳輸沒(méi)有配置、啟動(dòng)等時(shí)間,導(dǎo)致傳輸效率幾乎不隨LB變化。本文DMA使用專用接口進(jìn)行并發(fā)讀寫源、目的地址,VDMA_i可達(dá)11.6 Gb/s,而通用DMA只能進(jìn)行數(shù)據(jù)的逐個(gè)讀取寫入,VDMA_i僅為3.4 Gb/s。
圖8 400 MHz下DMA傳輸效率隨LB的變化情況
Fig.8 DMA transmission efficiency changing withLBat 400 MHz
表4所示為本文DMA對(duì)對(duì)稱密碼服務(wù)的性能優(yōu)化情況。從表4可以看出,相對(duì)通用DMA,應(yīng)用本文DMA后帶寬利用率平均值由28%上升至91%,協(xié)處理器利用率平均值由25%上升至54%,密碼算法ZUC、SNOW、SM3、SM4和AES的性能分別提升了216%、222%、123%、69%和221%。
表4 DMA傳輸下對(duì)稱密碼算法實(shí)驗(yàn)結(jié)果
本文對(duì)密碼SoC中基于AHB總線的DMA傳輸進(jìn)行優(yōu)化,為特定模塊開辟專用接口實(shí)現(xiàn)并行讀寫,使用循環(huán)模式和動(dòng)態(tài)優(yōu)先級(jí)技術(shù)完成DMA通道的高效傳輸,從而解決通用DMA使用AHB總線時(shí)帶寬利用率低的問(wèn)題,提高密碼SoC的整體性能。實(shí)驗(yàn)結(jié)果表明,相對(duì)通用DMA,本文DMA的協(xié)處理器利用率與帶寬利用率均較高。然而本文DMA還存在不支持描述符配置和僅支持AHB總線接口等不足,探究并解決該問(wèn)題將是下一步的研究方向。