《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 密碼SoC中嵌入式鏈式DMA的研究與設計
密碼SoC中嵌入式鏈式DMA的研究與設計
來源:電子技術應用2014年第1期
李軍偉,戴紫彬,南龍梅
解放軍信息工程大學,河南 鄭州450004
摘要: 為了提高密碼SoC中密碼運算模塊與其他功能部件之間數據傳輸的效率,提出了一種適合密碼運算的嵌入式鏈式DMA傳輸方式。分析了CPU傳輸、Block DMA傳輸和鏈式DMA傳輸3種數據傳輸方式的特點;設計了嵌入式鏈式DMA的硬件架構,給出了其工作流程;為嵌入式鏈式DMA設計了主從復合接口,使其具有控制總線、發起總線傳輸的功能;使用65 nm CMOS工藝標準單元庫對嵌入式鏈式DMA模塊進行了ASIC實現;搭建了仿真驗證平臺。實驗結果表明,嵌入式鏈式DMA可以明顯提升密碼SoC數據傳輸效率,滿足了功能和性能的需求。
中圖分類號: TP309.7
文獻標識碼: A
文章編號: 0258-7998(2014)01-0056-04
Research and design of embedded scatter-gather DMA for cipher SoC
Li Junwei,Dai Zibin,Nan Longmei
PLA Information Engineering University,Zhengzhou 450004,China
Abstract: To improve the efficiency of data transfer between cryptographic computation module and other functional components in cipher SoC,a method of embeded scatter-gather DMA is proposed. The characteristic of CPU transfer, Block DMA transfer and scatter-gather DMA transfer are analyzed. The hardware architecture of embedded scatter-gather DMA is designed,and its workflow is given. To enable embedded scatter-gather DMA has the function to control bus and initiate a bus transfer, a Master-Slave composite interface is designed.The simulate result indicates that the proposed embedded scatter-gather DMA can significantly enhance the data transmission efficiency of cipher SoC,meeting the functional and performance requirements.
Key words : cipher SoC;transmission mechanism;scatter-gather DMA;bus;master/slave interface

    隨著加密技術在信息安全領域的廣泛應用,對密碼SoC(System on Chip)芯片的性能提出了更高的要求。相比于不斷提高的接口傳輸速率和越來越大的存儲容量,總線的數據傳輸效率卻一直提升緩慢,已經逐漸成為制約密碼芯片處理性能的瓶頸[1]。
    密碼SoC中數據的傳輸方式有兩種——CPU編程傳輸方式和直接存儲器存取DMA(Direct Memory Access)傳輸方式[1]。以CPU為主控制器的數據傳輸方式相對簡單,然而,該方式需要在CPU控制下進行尋址,每傳輸一個數據都需要經過多個指令周期。因此,存在傳輸效率低、CPU負擔過重等問題,不適合進行大批量數據的傳輸。在DMA傳輸方式中,DMA控制器代替CPU接管總線并負責數據傳輸,省去了由CPU負責傳輸時所必須的尋址指令,大大提高了系統的數據傳輸效率和性能[2-3]。然而,傳統的塊傳輸DMA(Block DMA)每個數據“塊”傳輸完成后都需要申請中斷并重新啟動DMA,塊與塊之間的傳輸延時較長,在執行多次傳輸操作時效率較低[4-5]。
    為了解決密碼SoC中數據傳輸效率的瓶頸問題,本文研究了鏈式DMA傳輸方式,設計了適合密碼運算的嵌入式鏈式DMA,并比較了其與CPU傳輸、Block DMA傳輸方式性能的優劣。
1 密碼SoC系統
1.1 基于AMBA總線的密碼SoC

    共享總線結構是目前密碼SoC芯片中最常用的片上通信結構。它采用共享通信通道和時分復用的總線仲裁機制,為片上通信模塊提供一條共享通信鏈路。本文設計的密碼SoC架構如圖1所示。

    選用AMBA(Advanced Microcontroller Bus Architecture)總線連接各IP核。其中,AXI(Advanced Extensible Interface)總線是一種高性能、高帶寬、低延遲的片內總線[6]。它的地址/控制和數據相位是分離的,支持不對齊的數據傳輸,同時在突發傳輸中,只需要首地址。支持分離的讀寫數據通道、并支持顯著傳輸訪問和亂序訪問,更加容易進行時序收斂。
    該密碼SoC芯片集成了主處理器、密碼運算模塊(CIPHER PE)、通用DMA、片上存儲器等關鍵模塊,具備高安全性、高密碼處理能力、多種通信接口等特點。
1.2 密碼SoC中數據傳輸機制分析
    在密碼SoC中,密碼運算模塊作為核心部件,需要通過總線與存儲器、接口部件等進行頻繁的、大批量的數據交互。數據的傳輸通過CPU編程傳輸方式和DMA傳輸方式實現。
1.2.1 CPU傳輸方式分析
    CPU作為主控制器的數據傳輸機制相對簡單,CPU完善的指令系統能夠支持用戶進行靈活方便的數據傳輸操作。但是,CPU傳輸機制存在嚴重的不足。一方面,CPU作為控制數據傳輸的中間媒介,需要對每個數據分組做加載/存儲才能實現一次完整的數據傳輸操作,這些加載/存儲操作不僅占用了CPU寶貴的控制資源,而且消耗了大量的總線周期,傳輸效率非常低。另一方面,CPU需要全程控制數據的傳輸過程,導致無法進行其他運算或控制操作,CPU的數據位寬和處理能力也可能成為制約數據傳輸性能提升的瓶頸。
1.2.2 DMA傳輸方式分析
    在密碼SoC芯片中,CPU并不適合于大批量數據的傳輸操作。為了解決批量數據的傳輸問題,引入了DMA數據傳輸機制。
    DMA傳輸是一種數據直接傳輸機制。DMA控制器能夠在總線設備間快速傳輸數據,是一種完全由硬件完成輸入/輸出的操作方式。能夠有效替代微處理器的加載/存儲指令,顯著提高系統的數據傳輸能力。然而,傳統的塊傳輸DMA存在諸多不足。首先,當密碼運算用到的待加/解密數據、配置參數等來自多個非連續存儲區域,或者分批次從I/O進入時,就要進行多次DMA塊傳輸。每個數據“塊”傳輸完成后都需要申請中斷并重新啟動DMA。塊與塊之間的傳輸延時較長,在執行多次傳輸操作時效率較低。其次,傳統DMA為了解決長期占有總線的問題,設計的傳輸數據緩存單元中,所有需要DMA傳輸的數據都要經過DMA控制器的緩存,同樣一段數據需要經過讀寫兩個過程,而且不支持讀寫同時操作,浪費了總線傳輸周期。
    為解決這些問題,分布式結構、為數據吞吐量大的模塊預設專用通道、鏈式DMA技術等技術被提出。其中為密碼SoC芯片設計適合的DMA控制器是提高數據交換效率的關鍵技術。
2 嵌入式鏈式DMA設計
    嵌入式鏈式DMA是為總線上需要大量數據交換的部件設計的功能模塊,將其嵌入到需要改進的部件中,通過總線接口掛接到總線上。為密碼SoC的密碼運算模塊設計嵌入式鏈式DMA,使其具有DMA傳輸功能,可以大大提高密碼SoC的數據傳輸效率。
2.1 鏈式DMA傳輸方式分析
    在傳統的設計中,密碼運算模塊作為從設備掛接總線,系統DMA在CPU的配置和調度下完成大批量的數據傳輸。鏈式傳輸方式是指將DMA的傳輸描述符(源基地址、目標基地址、數據傳輸量、下一描述符指針及其他參數)放在DMA內的存儲單元內,當DMA傳輸操作完成后,DMA控制器從指針寄存器指向的地址中把新的通道參數讀入DMA傳輸控制器,按照新的參數要求進行新的DMA傳輸。系統只需初始化這些命令和參數,CPU接收DMA產生的傳輸完成中斷信號,從而無需在DMA進行數據傳輸過程中頻繁介入。
    在密碼SoC芯片中,片上存儲器、芯片接口與密碼運算模塊之間的數據傳輸較為頻繁,參與密碼運算的不同數據信息(密鑰、參數、明文、密文等)通常來自于密碼SoC的不同地址空間,而且明文、密文的傳輸會頻繁交替進行,而批量數據報文的輸入/輸出非常適合采用鏈式DMA傳輸機制來實現,其傳輸機制如圖2所示。

    基于以上分析,決定為密碼SoC設計鏈式DMA,從而完成密碼SoC中大批量的數據傳輸。下文對鏈式DMA進行詳細的分析與設計。
2.2 硬件架構設計
    嵌入式鏈式DMA控制器主要由DMA寄存器組、描述符FIFO、數據通道FIFO、中斷控制邏輯、硬件握手接口、DMA傳輸控制器、總線接口等模塊組成。其硬件結構圖如圖3所示。

    DMA寄存器組是總線CPU和內部DMA傳輸控制器控制DMA傳輸的窗口,包括控制狀態寄存器、地址寄存器、傳輸長度寄存器、中斷狀態寄存器和中斷屏蔽寄存器等。
    (1)控制狀態寄存器Control_reg:控制狀態寄存器的內容描述了本次DMA的傳輸方式,DMA傳輸控制器通過判斷控制狀態寄存器的不同位的值,進入不同的傳輸狀態,進行相應的傳輸操作。
    (2)地址寄存器RawAddr_reg:當鏈式DMA執行總線寫操作時,地址寄存器標識數據源地址;當執行總線讀操作時,地址寄存器標識目的地址。
    (3)傳輸長度寄存器SIZE_reg:表示本次DMA傳輸的數據長度,即傳輸的字節個數。
    (4)中斷狀態寄存器Intrp_Status_reg:為CPU提供嵌入式鏈式DMA的中斷狀態。
    (5)中斷屏蔽寄存器Intrp_Block_reg:可以屏蔽嵌入式鏈式DMA的中斷請求。
    描述符FIFO是一個32 bit進、160 bit出的FIFO,其大小為200×32 bit,在鏈式DMA模式下可以暫存40組DMA傳輸描述符。之所以這樣設計描述符FIFO是因為在輸入描述時,要符合總線32 bit的位寬,在輸出描述符時,允許一個時鐘周期內同時輸出5個32 bit(即一組描述符),從而完成一次DMA傳輸。這樣節省了讀取描述符的周期,提高了DMA的工作效率。
    數據通道FIFO包括輸入FIFO和輸出FIFO。輸入FIFO緩存總線寫入的數據,輸出FIFO緩存密碼運算模塊的計算結果。
    中斷控制邏輯主要負責在數據傳輸完畢之后向CPU發送中斷信號,以交還總線控制權。
    硬件握手接口用來向DMA 傳輸控制器發出信號,表明相應部件已經準備好。
    DMA傳輸控制器是嵌入式鏈式DMA的控制中樞,下節將對其設計進行詳細介紹。
2.3 DMA傳輸控制器設計
    DMA傳輸控制器是鏈式DMA進行數據傳輸的核心,控制著整個DMA的傳輸過程,主要通過一個DMA傳輸狀態機來實現。DMA傳輸控制器的狀態轉移如圖4所示。

    在一次DMA傳輸發起之前, DMA傳輸控制器會讀取FIFO中的描述符,向控制寄存器組寫入數據。或者主處理器通過總線從接口直接配置DMA寄存器。然后, DMA傳輸控制器根據寄存器組中的控制信息開始一次DMA傳輸。
    主模式下的DMA有主模式寫和主模式讀兩種類型,主模式寫是把數據通道讀FIFO里的數據包通過總線傳送到從設備,主模式讀則是讀取從設備的數據包并傳送到數據通道讀FIFO中。
    IDLE狀態:上電復位初始狀態。系統上電復位進入該狀態,在該狀態中不做任何操作。
    DMA_read:DMA讀操作狀態。在該狀態下,DMA傳輸控制器執行讀操作,從總線存儲設備、I/O接口中讀取數據,傳輸到讀數據緩存中。
    DMA_write:DMA寫操作狀態。在該狀態下,DMA傳輸控制器執行寫操作,從寫數據緩存中讀取數據,傳輸到總線存儲設備、I/O接口中。
    WAIT:傳輸等待狀態。在該狀態下DMA傳輸控制器不作任何操作。
3 AXI總線主/從復合接口設計
    嵌入式鏈式DMA若要掛接總線,完成總線傳輸工作,必須為其設計總線接口,使其符合AXI總線的讀寫時序。根據應用需求,為嵌入式鏈式DMA設計的AXI總線接口包括總線從設備接口和總線主設備接口兩部分。
3.1 AXI總線從設備接口設計
    AXI總線從設備接口是CPU控制鏈式DMA的接口,鏈式DMA作為總線從設備時,CPU可以通過該接口完成對鏈式DMA的描述符輸入和寄存器配置工作。圖5顯示了總線從設備接口狀態機的設計方式。

    IDLE 狀態:空閑等待狀態,系統上電復位進入該狀態,在該狀態中,不接收任何傳輸,所有輸出的 ready 信號均為低。
    WRTD 狀態:寫數據狀態,在該狀態下,slave準備好接收數據,輸出驅動awready以及wready為高,握手成功后即完成傳輸。
    REDD 狀態:讀數據狀態。在該狀態下,slave 輸出驅動arready為高,解析地址與控制信息,將有效數據送上總線。
3.2 AXI總線主設備接口設計
    CPU承擔著整個密碼SoC的任務調度工作,由于它頻繁的參與數據傳輸工作,限制了其計算能力的發揮和總線帶寬的利用率。為密碼協處理器設計總線主設備接口,配合嵌入式鏈式DMA使其具有總線控制功能,可以減輕CPU任務負載,提高總線數據傳輸效率。
    AXI總線主設備接口主要用于鏈式DMA向AXI總線發送傳輸控制信號,當鏈式DMA獲得總線控制權后,作為總線主設備,它可以通過AXI主設備接口實現從源設備地址讀取數據或者向目的設備地址寫入數據的操作。
    以讀操作為例,首先AXI 主設備接口單元控制器從讀命令緩存隊列中讀取讀命令字,產生相應的讀傳輸操作命令,并傳送到相應AXI讀地址傳輸通道;然后AXI 讀數據通道從外部讀取相應的數據,把相應的數據送入內部寬度為32 bit的數據緩存中,完成相應讀操作。此時當該突發傳輸所對應的所有數據讀取完后,如果讀命令緩存隊列還有命令字,則發起相應的下一次讀操作。嵌入式鏈式DMA進行總線寫操作與此過程類似。
4 系統驗證和測試

 


    為了驗證嵌入式鏈式DMA設計的正確性,分析其對密碼SoC整體性能的提升,采用CMOS 65 nm工藝標準單元庫對嵌入式鏈式DMA模塊進行了綜合。根據綜合結果得出該模塊的時鐘頻率最高可以達到600 MHz。然后,搭建了驗證測試平臺。比較不同傳輸機制的傳輸效率和性能提升,定義數據傳輸效率為傳輸數據個數與總線周期數的比值[9]。
    表1統計了在系統工作頻率一定時,分別采用CPU傳輸、BlockDMA傳輸、EmbeddedS-GDMA傳輸機制時密碼SoC的吞吐率。其中性能提升是指BlockDMA、EmbeddedS-GDMA的傳輸效率相對于CPU傳輸方式的性能提升。

    從表1中可以看出,在3種傳輸方式中,嵌入式鏈式DMA的傳輸效率最高。傳統塊傳輸DMA次之,主要是因為其在使用時,數據需要經過塊傳輸DMA的緩存,而且總線不能同時完成讀寫操作,浪費了一些時鐘周期。同時可以看出,當傳輸的數據量越大、傳輸操作次數越多時,采用嵌入式鏈式DMA的傳輸方式對傳輸效率的提升越明顯。
    本文設計的嵌入式鏈式DMA,減少了啟動DMA傳輸的配置周期,提高了DMA傳輸機制的效率;還具有總線主設備功能,減輕了主處理器的任務負載。測試驗證結果表明,相比于CPU傳輸方式和Block DMA傳輸方式,采用嵌入式鏈式DMA傳輸方式可以極大地提高數據傳輸效率,解決了密碼SoC中數據傳輸的瓶頸問題,提升了密碼SoC系統性能。
參考文獻
[1] 蘇陽.分組密碼多引擎并行處理技術研究[D].鄭州:解放軍信息工程大學,2012.
[2] 季順南.基于AXI總線的DMA控制器設計[D].廣州:華南理工大學,2010.
[3] 王賀,張勇.基于PCI Express總線的分散-聚集式DMA的設計[J].儀器儀表學報,2010,31(8):100-102.
[4] 黃侃,佟冬,劉洋.MCS-DMA:一種面向SoC內DMA傳輸的內存控制器優化設計[J].電子學報,2010,38(3):598-603.
[5] Peng Yu,Li Bo,Liu Datong.A high speed DMA transaction method for PCI express devices[J].IEEE Computer Society,2009,108(4):103-108.
[6] KISTLER M,BROKENSHIRE D.Detecting race conditions in asynchronous DMA operations with full system simulation[J].IEEE Computer Society,2011,117(5):207-214.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 欧美激情久久久久久久大片 | 日韩国产成人精品视频 | 国产亚洲综合久久 | 最新亚洲情黄在线网站无广告 | 欧美三级不卡视频 | 香蕉tv亚洲专区在线观看 | 久在草| 国产亚洲精品九九久在线观看 | 男人天堂视频网 | 99久久精品免费 | 久久亚洲精品中文字幕亚瑟 | 色一伦一情一区二区三区 | 亚洲精品一区二三区在线观看 | 精品午夜寂寞黄网站在线 | 亚洲精品三区 | 国产精品午夜性视频网站 | 日本丶国产丶欧美色综合 | 亚洲另类视频在线观看 | 亚洲欧美精品一区 | 乱码在线中文字幕加勒比 | 一级做a爰片性色毛片视频图片 | 看免费人成va视频全 | 一级aaaaaa毛片免费同男同女 | 国产欧美日韩在线观看一区二区三区 | 亚洲日本va | 97免费视频观看 | 亚洲国产成人在线 | 手机在线国产精品 | 欧美一级一极性活片免费观看 | 国产成人综合久久精品红 | 国产青草| 国产成人免费高清在线观看 | 杨晨晨福利视频 | 国产精品免费大片一区二区 | 白白在线观看永久免费视频 | 欧美三级毛片 | 红色记忆 | 男女配种猛烈免费视频 | 亚洲国产日韩女人aaaaaa毛片在线 | 特级a毛片 | 欧美高清亚洲欧美一区h |