《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 密碼SoC中嵌入式鏈?zhǔn)紻MA的研究與設(shè)計(jì)
密碼SoC中嵌入式鏈?zhǔn)紻MA的研究與設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2014年第1期
李軍偉,戴紫彬,,南龍梅
解放軍信息工程大學(xué),,河南 鄭州450004
摘要: 為了提高密碼SoC中密碼運(yùn)算模塊與其他功能部件之間數(shù)據(jù)傳輸?shù)男剩岢隽艘环N適合密碼運(yùn)算的嵌入式鏈?zhǔn)紻MA傳輸方式,。分析了CPU傳輸、Block DMA傳輸和鏈?zhǔn)紻MA傳輸3種數(shù)據(jù)傳輸方式的特點(diǎn),;設(shè)計(jì)了嵌入式鏈?zhǔn)紻MA的硬件架構(gòu),,給出了其工作流程;為嵌入式鏈?zhǔn)紻MA設(shè)計(jì)了主從復(fù)合接口,,使其具有控制總線,、發(fā)起總線傳輸?shù)墓δ埽皇褂?5 nm CMOS工藝標(biāo)準(zhǔn)單元庫對嵌入式鏈?zhǔn)紻MA模塊進(jìn)行了ASIC實(shí)現(xiàn),;搭建了仿真驗(yàn)證平臺(tái),。實(shí)驗(yàn)結(jié)果表明,嵌入式鏈?zhǔn)紻MA可以明顯提升密碼SoC數(shù)據(jù)傳輸效率,,滿足了功能和性能的需求,。
中圖分類號(hào): TP309.7
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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

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

    共享總線結(jié)構(gòu)是目前密碼SoC芯片中最常用的片上通信結(jié)構(gòu),。它采用共享通信通道和時(shí)分復(fù)用的總線仲裁機(jī)制,為片上通信模塊提供一條共享通信鏈路,。本文設(shè)計(jì)的密碼SoC架構(gòu)如圖1所示,。

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

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

    DMA寄存器組是總線CPU和內(nèi)部DMA傳輸控制器控制DMA傳輸?shù)拇翱冢刂茽顟B(tài)寄存器,、地址寄存器,、傳輸長度寄存器、中斷狀態(tài)寄存器和中斷屏蔽寄存器等,。
    (1)控制狀態(tài)寄存器Control_reg:控制狀態(tài)寄存器的內(nèi)容描述了本次DMA的傳輸方式,,DMA傳輸控制器通過判斷控制狀態(tài)寄存器的不同位的值,進(jìn)入不同的傳輸狀態(tài),,進(jìn)行相應(yīng)的傳輸操作,。
    (2)地址寄存器RawAddr_reg:當(dāng)鏈?zhǔn)紻MA執(zhí)行總線寫操作時(shí),,地址寄存器標(biāo)識(shí)數(shù)據(jù)源地址;當(dāng)執(zhí)行總線讀操作時(shí),,地址寄存器標(biāo)識(shí)目的地址,。
    (3)傳輸長度寄存器SIZE_reg:表示本次DMA傳輸?shù)臄?shù)據(jù)長度,即傳輸?shù)淖止?jié)個(gè)數(shù),。
    (4)中斷狀態(tài)寄存器Intrp_Status_reg:為CPU提供嵌入式鏈?zhǔn)紻MA的中斷狀態(tài),。
    (5)中斷屏蔽寄存器Intrp_Block_reg:可以屏蔽嵌入式鏈?zhǔn)紻MA的中斷請求。
    描述符FIFO是一個(gè)32 bit進(jìn),、160 bit出的FIFO,,其大小為200×32 bit,在鏈?zhǔn)紻MA模式下可以暫存40組DMA傳輸描述符,。之所以這樣設(shè)計(jì)描述符FIFO是因?yàn)樵谳斎朊枋鰰r(shí),,要符合總線32 bit的位寬,在輸出描述符時(shí),,允許一個(gè)時(shí)鐘周期內(nèi)同時(shí)輸出5個(gè)32 bit(即一組描述符),,從而完成一次DMA傳輸。這樣節(jié)省了讀取描述符的周期,,提高了DMA的工作效率,。
    數(shù)據(jù)通道FIFO包括輸入FIFO和輸出FIFO。輸入FIFO緩存總線寫入的數(shù)據(jù),,輸出FIFO緩存密碼運(yùn)算模塊的計(jì)算結(jié)果,。
    中斷控制邏輯主要負(fù)責(zé)在數(shù)據(jù)傳輸完畢之后向CPU發(fā)送中斷信號(hào),以交還總線控制權(quán),。
    硬件握手接口用來向DMA 傳輸控制器發(fā)出信號(hào),,表明相應(yīng)部件已經(jīng)準(zhǔn)備好。
    DMA傳輸控制器是嵌入式鏈?zhǔn)紻MA的控制中樞,,下節(jié)將對其設(shè)計(jì)進(jìn)行詳細(xì)介紹,。
2.3 DMA傳輸控制器設(shè)計(jì)
    DMA傳輸控制器是鏈?zhǔn)紻MA進(jìn)行數(shù)據(jù)傳輸?shù)暮诵模刂浦麄€(gè)DMA的傳輸過程,,主要通過一個(gè)DMA傳輸狀態(tài)機(jī)來實(shí)現(xiàn),。DMA傳輸控制器的狀態(tài)轉(zhuǎn)移如圖4所示。

    在一次DMA傳輸發(fā)起之前, DMA傳輸控制器會(huì)讀取FIFO中的描述符,,向控制寄存器組寫入數(shù)據(jù),。或者主處理器通過總線從接口直接配置DMA寄存器,。然后, DMA傳輸控制器根據(jù)寄存器組中的控制信息開始一次DMA傳輸,。
    主模式下的DMA有主模式寫和主模式讀兩種類型,主模式寫是把數(shù)據(jù)通道讀FIFO里的數(shù)據(jù)包通過總線傳送到從設(shè)備,主模式讀則是讀取從設(shè)備的數(shù)據(jù)包并傳送到數(shù)據(jù)通道讀FIFO中,。
    IDLE狀態(tài):上電復(fù)位初始狀態(tài),。系統(tǒng)上電復(fù)位進(jìn)入該狀態(tài),在該狀態(tài)中不做任何操作,。
    DMA_read:DMA讀操作狀態(tài),。在該狀態(tài)下,DMA傳輸控制器執(zhí)行讀操作,,從總線存儲(chǔ)設(shè)備,、I/O接口中讀取數(shù)據(jù),傳輸?shù)阶x數(shù)據(jù)緩存中,。
    DMA_write:DMA寫操作狀態(tài),。在該狀態(tài)下,DMA傳輸控制器執(zhí)行寫操作,,從寫數(shù)據(jù)緩存中讀取數(shù)據(jù),,傳輸?shù)娇偩€存儲(chǔ)設(shè)備、I/O接口中,。
    WAIT:傳輸?shù)却隣顟B(tài)。在該狀態(tài)下DMA傳輸控制器不作任何操作,。
3 AXI總線主/從復(fù)合接口設(shè)計(jì)
    嵌入式鏈?zhǔn)紻MA若要掛接總線,,完成總線傳輸工作,必須為其設(shè)計(jì)總線接口,,使其符合AXI總線的讀寫時(shí)序,。根據(jù)應(yīng)用需求,為嵌入式鏈?zhǔn)紻MA設(shè)計(jì)的AXI總線接口包括總線從設(shè)備接口和總線主設(shè)備接口兩部分,。
3.1 AXI總線從設(shè)備接口設(shè)計(jì)
    AXI總線從設(shè)備接口是CPU控制鏈?zhǔn)紻MA的接口,,鏈?zhǔn)紻MA作為總線從設(shè)備時(shí),CPU可以通過該接口完成對鏈?zhǔn)紻MA的描述符輸入和寄存器配置工作,。圖5顯示了總線從設(shè)備接口狀態(tài)機(jī)的設(shè)計(jì)方式,。

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

 


    為了驗(yàn)證嵌入式鏈?zhǔn)紻MA設(shè)計(jì)的正確性,分析其對密碼SoC整體性能的提升,,采用CMOS 65 nm工藝標(biāo)準(zhǔn)單元庫對嵌入式鏈?zhǔn)紻MA模塊進(jìn)行了綜合,。根據(jù)綜合結(jié)果得出該模塊的時(shí)鐘頻率最高可以達(dá)到600 MHz。然后,,搭建了驗(yàn)證測試平臺(tái),。比較不同傳輸機(jī)制的傳輸效率和性能提升,定義數(shù)據(jù)傳輸效率為傳輸數(shù)據(jù)個(gè)數(shù)與總線周期數(shù)的比值[9],。
    表1統(tǒng)計(jì)了在系統(tǒng)工作頻率一定時(shí),,分別采用CPU傳輸、BlockDMA傳輸,、EmbeddedS-GDMA傳輸機(jī)制時(shí)密碼SoC的吞吐率,。其中性能提升是指BlockDMA、EmbeddedS-GDMA的傳輸效率相對于CPU傳輸方式的性能提升。

    從表1中可以看出,,在3種傳輸方式中,,嵌入式鏈?zhǔn)紻MA的傳輸效率最高。傳統(tǒng)塊傳輸DMA次之,,主要是因?yàn)槠湓谑褂脮r(shí),,數(shù)據(jù)需要經(jīng)過塊傳輸DMA的緩存,而且總線不能同時(shí)完成讀寫操作,,浪費(fèi)了一些時(shí)鐘周期,。同時(shí)可以看出,當(dāng)傳輸?shù)臄?shù)據(jù)量越大,、傳輸操作次數(shù)越多時(shí),,采用嵌入式鏈?zhǔn)紻MA的傳輸方式對傳輸效率的提升越明顯。
    本文設(shè)計(jì)的嵌入式鏈?zhǔn)紻MA,,減少了啟動(dòng)DMA傳輸?shù)呐渲弥芷?,提高了DMA傳輸機(jī)制的效率;還具有總線主設(shè)備功能,,減輕了主處理器的任務(wù)負(fù)載,。測試驗(yàn)證結(jié)果表明,相比于CPU傳輸方式和Block DMA傳輸方式,,采用嵌入式鏈?zhǔn)紻MA傳輸方式可以極大地提高數(shù)據(jù)傳輸效率,,解決了密碼SoC中數(shù)據(jù)傳輸?shù)钠款i問題,提升了密碼SoC系統(tǒng)性能,。
參考文獻(xiàn)
[1] 蘇陽.分組密碼多引擎并行處理技術(shù)研究[D].鄭州:解放軍信息工程大學(xué),2012.
[2] 季順南.基于AXI總線的DMA控制器設(shè)計(jì)[D].廣州:華南理工大學(xué),,2010.
[3] 王賀,,張勇.基于PCI Express總線的分散-聚集式DMA的設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2010,,31(8):100-102.
[4] 黃侃,,佟冬,劉洋.MCS-DMA:一種面向SoC內(nèi)DMA傳輸?shù)膬?nèi)存控制器優(yōu)化設(shè)計(jì)[J].電子學(xué)報(bào),,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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。