呂廣秋,李 偉,陳 韜,南龍梅
(信息工程大學 信息安全重點實驗室,鄭州 450001)
在密碼片上系統(System of Chip,SoC)內集成專用協處理器以加速密碼運算,已成為目前高性能SoC設計的重要方法。密碼SoC的性能受主處理器、協處理器以及數據調度控制的影響[1-2],其中,直接內存存取(Direct Memory Access,DMA)設計尤為重要。DMA的外圍設備能直接訪問內存,使其在內存數據拷貝[3-5]、實時數據采集[6-8]等數據密集型應用中得到廣泛應用。
密碼SoC等數據密集型應用對數據傳輸帶寬的需求較高,因此,DMA傳輸的總線帶寬利用率直接影響密碼SoC的整體性能。文獻[9]中的SoC多層總線通信架構對IP在總線中的掛載分布提出更高要求,因此,其難以顯著提高傳輸性能,且存在總線帶寬利用率低、資源占用和功耗較大的缺點。文獻[10-11]中更高性能的總線雖然具有更大帶寬,但其在密碼應用中總線帶寬利用率以及重復任務和多任務傳輸效率均較低的問題仍未得到解決。
文獻[12]提出一種支持鏈表和多通道傳輸的DMA,其支持多個順序固定的DMA傳輸,但具有密碼協處理器利用率不高、重復任務和多任務傳輸效率低等不足。文獻[13-15]提出基于雙總線的全雙工DMA,雖然其實現了并行讀寫數據的功能,但總線閑置率過高且未提高同一總線上IP的DMA傳輸速度。文獻[16]提出專用輕量級DMA,其通過專用接口實現并行訪問,但該DMA傳輸范圍局限在固定IP與其他IP之間,難以支持任意2個IP之間的DMA傳輸。文獻[17]使用多個DMA引擎實現數據預取,但其對無延遲的數據訪問未取得優化效果。
本文借鑒已有研究根據特定應用優化DMA設計的思想[18-20],同時結合密碼SoC數據流的特點,設計一種面向密碼SoC的高性能全雙工DMA。針對總線帶寬不足的問題,通過流水線技術對特定模塊的DMA傳輸開辟專用通道以實現并行讀寫,無需更改總線結構,僅在特定模塊接口和DMA讀寫控制器中進行少量更改便可大幅提高特定模塊的DMA傳輸速度。針對DMA傳輸的控制、配置等時間過長的問題,本文DMA加入循環傳輸模式,實現DMA自主控制重復任務的循環執行,減少CPU啟動、配置和返回等重復操作,提高傳輸效率和帶寬利用率并降低CPU占用空間。針對協處理器利用率不高的問題,通過動態優先級技術完成各通道面向服務質量(Quality of Service,QoS)的自適應傳輸,進一步提高系統的傳輸效率和質量。
通用密碼SoC包含通用主處理器CPU、片上存儲器、隨機存儲器RAM、高速接口、DMA和協處理器等部分,其結構如圖1所示。通過分析密碼服務特點可知,當密碼SoC提供密碼服務時,數據流向歸總為4路DMA通道傳輸,如圖1中虛線箭頭所示:
①大量待處理數據由高速接口進入片內RAM。
②片內RAM的數據進入協處理器并被處理。
③數據處理完成后返回RAM。
④片內RAM中的數據傳回高速接口完成一次密碼服務。

圖1 密碼SoC中數據流特征
密碼SoC的數據處理速度VP主要由數據傳輸速度VT、協處理器利用率α和數據處理最大速度VCo決定,即:
max(VP)=min(VT,α·VCo)
(1)
協處理器的最大速度VCo由本身硬件設計決定,本文不做討論。數據傳輸速度VT過低將會產生2種降低密碼SoC性能的情況:
1)當協處理器數據傳入速度VDataIn<α·VCo時,將會出現數據斷流,即協處理器必須等待數據輸入。
2)當協處理器數據傳出速度VDataOut<α·VCo時,將會導致數據阻塞,即協處理器必須等待數據傳出。
總線帶寬利用率β定義如下:
(2)
其中,tD為數據傳輸周期數,tT為總線被DMA設備占用的時鐘數。在理想情況下,傳輸1個數據最少花費1個時鐘周期,即β最大為100%。
數據傳輸速度VT等于整個密碼服務期間DMA通道的數據平均傳輸速度VDMA_ave。當前密碼SoC數據傳輸可用帶寬B為:
(3)
其中,Bmax為系統總線的最大帶寬,VDMA_i_ave為DMA多個通道共用總線時第i個DMA通道的數據傳輸平均速度(本文中n=4),B其他為總線上其他操作占用的帶寬。當B其他=0時,DMA通道傳輸速度達到最大,由對稱密碼應用中各個DMA通道數據傳輸量相同得到:
VDMA_i_ave≤Bmax×β/n
(4)
DMA傳輸是密碼SoC最主要的數據傳輸方式,其直接決定帶寬利用率β的大小。DMA傳輸流程分為4步:
1)配置DMA傳輸。
2)DMA將源地址數據讀取至FIFO。
3)DMA將FIFO數據寫入目的地址。
4)完成傳輸,掛起中斷或等待CPU輪詢。
由此可知,DMA的傳輸速度為:
(5)
其中,VDMA_i為DMA啟動傳輸到結束傳輸的平均速度,LB為DMA傳輸的數據長度,TConfig為配置時間,TStart和TDMA返回為傳輸啟動和完成反饋的時間,TDMA讀+TDMA寫為DMA讀寫耗費時間。
在式(5)中,DMA傳輸效率受定長時間的配置、啟動和返回等操作影響,同時受由DMA讀寫方式決定的DMA讀寫耗費時間的影響。目前,學術界和工業界將DMA的讀寫方式分為三類,如表1所示。

表1 3種DMA讀寫方式的帶寬利用率對比
設T1為TConfig+TStart+TDMA返回的值,不同DMA讀寫方式下的DMA傳輸速度為:
(6)
式(6)表明,傳輸數據長度LB越大,則DMA傳輸速率VDMA_i越高。本文中LB的單位為字(Word)且T的單位為時鐘節拍數(Clock),此時有β=VDMA_i。當LB足夠大時有VDMA_i=β≈1/m。
聯合式(1)、式(4)和式(6)可知,密碼SoC的數據處理速度VP可表示為:
(7)
由式(7)可知,密碼SoC的最大數據處理速度VP無法大于總線可用帶寬的1/n或α·VCo。
密碼SoC中的Bmax、VCo和LB分別由總線類型、協處理器硬件設計和密碼SoC數據處理分組長度決定,參數固定。為使得密碼SoC性能最大化,本文將在影響因子m、n、T1、α方面對DMA進行優化。
為提高密碼SoC的性能,本文從3個方面對DMA設計進行優化:使用專用接口進行全雙工的DMA讀寫傳輸,降低DMA重復配置與啟動的時間,改變傳輸通道優先級的自適應傳輸。
由式(7)可知,密碼SoC的性能由協處理器利用率決定,而協處理器利用率又受數據傳輸速度影響,因此,得到密碼SoC性能最大化的必要條件和充分條件如下:
1)必要條件:數據傳輸速度VT足夠大,不會限制協處理器利用率α和密碼SoC性能。
2)充分條件:協處理器利用率α達到最大,此時密碼SoC性能最大。
當密碼SoC性能最大化的必要條件未滿足時,設V′P為密碼SoC的最大數據處理速度,由式(7)可知:
(8)
其中,影響因子m、n和T1對V′P的影響關系和取值范圍如下:
(9)
式(9)表明,為使得SoC性能最大化的必要條件未滿足時V′P最大,應最小化m、n和T1。
本文在特定模塊中開辟專用接口以實現并行讀寫的全雙工DMA傳輸。由表1可知,此時m為最小值1,且AHB總線上執行的DMA傳輸通道個數n由4降為2。本文DMA專用接口占用硬件資源極小,在未改變系統總線結構的前提下實現了數據的全雙工讀寫,極大地提高了數據傳輸速度并降低了總線傳輸負載。

(10)

(11)
由式(10)、式(11)可知,本文DMA的循環工作模式使得總線帶寬利用率和傳輸效率接近總線傳輸的理論上限值,從而最大化DMA的傳輸速度。當密碼SoC性能最大化的必要條件滿足后,密碼SoC的性能受限于協處理器利用率α,即:
V′P=α·VCo
(12)
為使協處理器利用率α最大,本文DMA采用多通道的動態優先級技術,實現了優先保證協處理器輸入FIFO非空、輸出FIFO非滿,使得當SoC性能最大化的必要條件滿足時協處理器利用率α接近100%且密碼SoC的性能最大,最終實現密碼SoC中數據的自適應傳輸。
將通用DMA、鏈式DMA和本文DMA應用于密碼SoC后,其協處理器利用率變化如圖2所示。其中:
①為通用DMA等待LB大小的數據處理完畢后再進行數據搬移時發生數據斷流,協處理器處于空閑。
②為鏈式DMA提前傳輸FIFO中處理完畢的數據,數據斷流得到緩解。
③為DMA傳輸優先保證協處理器輸入FIFO非空、輸出FIFO非滿,消除數據斷流和阻塞,最大化協處理器利用率α,從而極大地提高了密碼SoC性能。

圖2 3種DMA傳輸方式下的協處理器利用率變化
Fig.2 Varying utilization rate of coprocessor in three transmission modes of DMA
相較于傳統DMA,本文DMA具有支持全雙工數據讀寫、循環工作模式和自適應傳輸功能,其硬件結構如圖3所示。其中,①完成全雙式數據讀寫,②中的讀寫狀態機采用循環工作模式,③具備自適應傳輸功能,④為DMA各通道的配置參數。

圖3 DMA硬件結構
在圖3中,由并行讀寫仲裁電路決定是否進行全雙工讀寫,其控制電路如圖4所示。

圖4 并行讀寫仲裁控制電路
當ParallelEnable為高電平有效時,本文DMA處于全雙工并行讀寫狀態,此時由ParallelEnable和SwitchEnable信號共同決定讀寫引擎對片上IP和RAM的控制通路。本文DMA的循環工作模式由圖3中的部分②完成。一旦通道傳輸完畢,讀寫狀態機檢測到該通道工作在循環模式時,會將該通道的配置寄存器AddrReading和AddrWriting重新賦值為StartAddrRead和StartAddrWrite,并且不會對通道完成標志信號Finish置位,即該通道重新配置為傳輸初始狀態,減輕CPU對重復任務的控制負擔。
自適應傳輸由圖3中的部分③完成。由通道優先級請求電路和優先級仲裁電路共同完成通道優先級的動態調整,最終實現協處理器輸入FIFO非空、輸出FIFO非滿。為實現該目標,本文DMA使用通道優先級請求電路生成通道的提權請求信號Priority_Higher。同時,為了保證循環模式下的數據一致性,該模塊生成了通道的掛起請求信號Priority_Suspend,例如,當發生數據覆蓋或讀取未準備好的數據時,當前通道傳輸應當掛起。通道優先級請求信號生成關系如表2所示。優先級仲裁電路會根據通道的掛起、提權信號選定每個通道當前優先級,通過仲裁實時得到優先級最高的通道,并通知讀寫狀態機將總線授權給該通道以進行讀寫。

表2 各通道的動態優先級
本文DMA工作流程如圖5所示。

圖5 DMA工作流程
在DMA傳輸配置階段需要對使用專用接口的特定模塊地址范圍、各個通道的傳輸參數以及工作模式進行配置。在DMA傳輸開始后,首先檢測當前傳輸通道的源或目的地址是否包含在專用接口的地址范圍內,如果是,則使用AHB總線和專用通道并行讀寫數據,高效實現數據搬移,此時m=1;否則,DMA將定長大小的數據塊讀入FIFO后寫至目的地址,流水執行數據的讀取和返回,此時m=2。優先級仲裁器接收到通道傳輸狀態反饋后進行通道優先級動態調整,實現面向QoS的自適應傳輸:當通道提權信號有效時,通道提升到預配置的高優先級;當掛起信號有效時,當前通道傳輸掛起,由次優先級通道進行傳輸或進入等待狀態;通道的提權和掛起信號均無效時則優先級不變。
圖6所示為面向QoS的自適應傳輸示例。自適應傳輸允許優先級較高的通道掛起優先級較低的通道傳輸(如Task1~Task3),而傳統DMA不允許通道傳輸被打斷,導致當前傳輸通道優先級可能不是最高。同時,本文DMA自適應傳輸優先在當前最高優先級通道中準備完畢的通道中進行傳輸(如Task3掛起,執行Task4),并且自適應傳輸允許通道優先級動態變化(如Task5),從而提高傳輸服務質量。當工作在循環模式時,DMA通道在完成傳輸后自動重置傳輸參數,節省CPU對DMA配置、啟動等的時間,高效執行重復的DMA傳輸任務。在不啟用循環模式時,DMA完成一次傳輸后,通常由中斷模塊向CPU發起中斷報告傳輸完成情況。

圖6 面向QoS的自適應傳輸示例
圖7所示為DMA在2種模式下的傳輸效率對比,單實線為通用DMA與本文DMA共同操作,雙虛線為通用DMA完成一次通道傳輸后返回和重新配置操作。從圖7可以看出,DMA工作在循環模式時無需CPU參與,提高了總線帶寬利用率β和SoC應用的靈活性。

圖7 循環模式傳輸效率優化效果
Fig.7 Effect of transmission efficiency optimization in the cyclic mode
為對本文DMA進行有效評估,將其與文獻[12-14]中的DMA以及由Design Ware2018生成的DMA進行對比分析,結果如表3所示。

表3 DMA的性能對比分析
在表3中,本文DMA采用Verilog HDL硬件語言實現,并基于55 nm工藝對設計進行邏輯綜合。最高頻率是指將DMA設計的頻率從原工藝等效至55 nm下所得到的大致工作頻率,表示支持該功能,—表示文中未給出。由表3可知,本文DMA消耗資源適中,頻率較高,在通道個數、傳輸位寬上相對文獻[12]與文獻[14]DMA較少。雖然本文DMA相對Design Ware2018生成的DMA仲裁策略不足,但其在工作模式和讀寫并行上功能完善,對密碼應用的支持性更好。
當對外提供密碼服務且時鐘頻率為400 MHz時,傳輸分片長度LB對通用DMA與本文DMA的數據傳輸速度及總線帶寬利用率β的影響如圖8所示。其中,通用DMA帶寬利用率變化曲線與式(6)吻合,而本文DMA因后續通道傳輸沒有配置、啟動等時間,導致傳輸效率幾乎不隨LB變化。本文DMA使用專用接口進行并發讀寫源、目的地址,VDMA_i可達11.6 Gb/s,而通用DMA只能進行數據的逐個讀取寫入,VDMA_i僅為3.4 Gb/s。

圖8 400 MHz下DMA傳輸效率隨LB的變化情況
Fig.8 DMA transmission efficiency changing withLBat 400 MHz
表4所示為本文DMA對對稱密碼服務的性能優化情況。從表4可以看出,相對通用DMA,應用本文DMA后帶寬利用率平均值由28%上升至91%,協處理器利用率平均值由25%上升至54%,密碼算法ZUC、SNOW、SM3、SM4和AES的性能分別提升了216%、222%、123%、69%和221%。

表4 DMA傳輸下對稱密碼算法實驗結果
本文對密碼SoC中基于AHB總線的DMA傳輸進行優化,為特定模塊開辟專用接口實現并行讀寫,使用循環模式和動態優先級技術完成DMA通道的高效傳輸,從而解決通用DMA使用AHB總線時帶寬利用率低的問題,提高密碼SoC的整體性能。實驗結果表明,相對通用DMA,本文DMA的協處理器利用率與帶寬利用率均較高。然而本文DMA還存在不支持描述符配置和僅支持AHB總線接口等不足,探究并解決該問題將是下一步的研究方向。