文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)01-0056-04
隨著加密技術(shù)在信息安全領(lǐng)域的廣泛應(yīng)用,,對(duì)密碼SoC(System on Chip)芯片的性能提出了更高的要求,。相比于不斷提高的接口傳輸速率和越來越大的存儲(chǔ)容量,總線的數(shù)據(jù)傳輸效率卻一直提升緩慢,,已經(jīng)逐漸成為制約密碼芯片處理性能的瓶頸[1],。
密碼SoC中數(shù)據(jù)的傳輸方式有兩種——CPU編程傳輸方式和直接存儲(chǔ)器存取DMA(Direct Memory Access)傳輸方式[1]。以CPU為主控制器的數(shù)據(jù)傳輸方式相對(duì)簡(jiǎn)單,,然而,,該方式需要在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ù)“塊”傳輸完成后都需要申請(qǐng)中斷并重新啟動(dòng)DMA,,塊與塊之間的傳輸延時(shí)較長(zhǎng),,在執(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ù)相位是分離的,支持不對(duì)齊的數(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ī)制相對(duì)簡(jiǎn)單,,CPU完善的指令系統(tǒng)能夠支持用戶進(jìn)行靈活方便的數(shù)據(jù)傳輸操作。但是,,CPU傳輸機(jī)制存在嚴(yán)重的不足,。一方面,CPU作為控制數(shù)據(jù)傳輸?shù)闹虚g媒介,,需要對(duì)每個(gè)數(shù)據(jù)分組做加載/存儲(chǔ)才能實(shí)現(xiàn)一次完整的數(shù)據(jù)傳輸操作,,這些加載/存儲(chǔ)操作不僅占用了CPU寶貴的控制資源,而且消耗了大量的總線周期,,傳輸效率非常低,。另一方面,CPU需要全程控制數(shù)據(jù)的傳輸過程,,導(dǎo)致無(wú)法進(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ù)“塊”傳輸完成后都需要申請(qǐng)中斷并重新啟動(dòng)DMA,。塊與塊之間的傳輸延時(shí)較長(zhǎng),在執(zhí)行多次傳輸操作時(shí)效率較低,。其次,,傳統(tǒng)DMA為了解決長(zhǎng)期占有總線的問題,設(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),從而無(wú)需在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ù)傳輸。下文對(duì)鏈?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ù)拇翱?,包括控制狀態(tài)寄存器,、地址寄存器、傳輸長(zhǎng)度寄存器,、中斷狀態(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)傳輸長(zhǎng)度寄存器SIZE_reg:表示本次DMA傳輸?shù)臄?shù)據(jù)長(zhǎng)度,,即傳輸?shù)淖止?jié)個(gè)數(shù)。
(4)中斷狀態(tài)寄存器Intrp_Status_reg:為CPU提供嵌入式鏈?zhǔn)紻MA的中斷狀態(tài),。
(5)中斷屏蔽寄存器Intrp_Block_reg:可以屏蔽嵌入式鏈?zhǔn)紻MA的中斷請(qǐng)求,。
描述符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é)將對(duì)其設(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可以通過該接口完成對(duì)鏈?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ā)傳輸所對(duì)應(yīng)的所有數(shù)據(jù)讀取完后,如果讀命令緩存隊(duì)列還有命令字,,則發(fā)起相應(yīng)的下一次讀操作,。嵌入式鏈?zhǔn)紻MA進(jìn)行總線寫操作與此過程類似。
4 系統(tǒng)驗(yàn)證和測(cè)試
為了驗(yàn)證嵌入式鏈?zhǔn)紻MA設(shè)計(jì)的正確性,,分析其對(duì)密碼SoC整體性能的提升,,采用CMOS 65 nm工藝標(biāo)準(zhǔn)單元庫(kù)對(duì)嵌入式鏈?zhǔn)紻MA模塊進(jìn)行了綜合。根據(jù)綜合結(jié)果得出該模塊的時(shí)鐘頻率最高可以達(dá)到600 MHz,。然后,,搭建了驗(yàn)證測(cè)試平臺(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的傳輸效率相對(duì)于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的傳輸方式對(duì)傳輸效率的提升越明顯,。
本文設(shè)計(jì)的嵌入式鏈?zhǔn)紻MA,減少了啟動(dòng)DMA傳輸?shù)呐渲弥芷?,提高了DMA傳輸機(jī)制的效率,;還具有總線主設(shè)備功能,減輕了主處理器的任務(wù)負(fù)載,。測(cè)試驗(yàn)證結(jié)果表明,,相比于CPU傳輸方式和Block DMA傳輸方式,采用嵌入式鏈?zhǔn)紻MA傳輸方式可以極大地提高數(shù)據(jù)傳輸效率,,解決了密碼SoC中數(shù)據(jù)傳輸?shù)钠款i問題,,提升了密碼SoC系統(tǒng)性能,。
參考文獻(xiàn)
[1] 蘇陽(yáng).分組密碼多引擎并行處理技術(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.