《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 基于FPGA的密碼設(shè)備多處理器協(xié)調(diào)控制技術(shù)研究與設(shè)計

基于FPGA的密碼設(shè)備多處理器協(xié)調(diào)控制技術(shù)研究與設(shè)計

2008-07-08
作者:劉晶晶1, 戴紫彬2

??? 摘??要: 介紹了一種基于FPGA的密碼設(shè)備" title="密碼設(shè)備">密碼設(shè)備多處理器" title="多處理器">多處理器模型,結(jié)合模型的特點論述了利用這種多處理器進(jìn)行協(xié)調(diào)控制的機(jī)制以及一般設(shè)計方法,。對處理器相互之間的關(guān)系進(jìn)行了研究與分析,同時也對從處理器與密碼設(shè)備之間的通信流程進(jìn)行了詳細(xì)的分析和設(shè)計,。針對共享資源的使用提出了一種基于雙端口" title="雙端口">雙端口RAM的解決方法,提高了系統(tǒng)資源的利用效率,。
??? 關(guān)鍵詞: 協(xié)調(diào)控制? 多處理器? 密碼設(shè)備

?

??? 隨著科學(xué)技術(shù)的迅猛發(fā)展及用戶對信息安全和敏感信息保護(hù)重視程度的提高,,密碼技術(shù)的使用越來越普及。但是,隨著密碼運算速度越來越快,、密碼位數(shù)越來越長,、密碼運算處理量越來越大,對系統(tǒng)計算能力及實時性的要求也在不斷提高,,以往基于單處理器的系統(tǒng)已經(jīng)不能滿足密碼運算對系統(tǒng)加脫密速度和密鑰寬度的要求。與此同時,,微處理器的價格越來越便宜,,在完成復(fù)雜的系統(tǒng)任務(wù)時,采用多個處理器共同協(xié)調(diào)完成密碼運算任務(wù),,以提高系統(tǒng)的計算能力和降低時間,,已經(jīng)成為大勢所趨?;谝陨锨闆r,,綜合各方面的考慮,本文提出基于多處理器協(xié)調(diào)控制的密碼設(shè)備研究與設(shè)計,。
??? 通過對密碼設(shè)備特點和密碼運算結(jié)構(gòu)的分析可以知道,,進(jìn)行密碼設(shè)備的多" title="的多">的多處理器設(shè)計一般需要考慮以下幾點:
??? (1)處理器的選型。RISC,、CISC和DSP是目前主要采用的處理器架構(gòu),,可以根據(jù)實際情況進(jìn)行針對性的選擇。
??? (2)處理器的個數(shù),。對處理器個數(shù)的選擇,,主要應(yīng)考察多處理器的使用對于處理效果和處理效率是否能達(dá)到設(shè)計的要求,總體處理性能是否優(yōu)于單個處理器的處理性能,。
??? (3)處理器間的互連結(jié)構(gòu),。
??? (4)多處理器的主從關(guān)系以及共享存儲區(qū)的使用。
??? 本文將討論密碼設(shè)備多處理器設(shè)計所遵循的一般性原則,,分析多個處理器之間的通信及控制關(guān)系,,并按處理器關(guān)系的不同提出密碼設(shè)備多處理器設(shè)計的具體方案。同時,,針對多處理器協(xié)調(diào)控制的相關(guān)問題給出基于雙端口RAM的緩沖區(qū)共享資源的解決辦法,,以節(jié)省系統(tǒng)的資源,提高系統(tǒng)的利用效率,。
1 多處理器設(shè)計技術(shù)研究
1.1 多處理器設(shè)計中應(yīng)注意的問題
??? 在多處理器的設(shè)計中應(yīng)該注意以下問題:
??? (1)多處理器相互之間關(guān)系的處理,。
??? (2)內(nèi)部資源和緩沖區(qū)的利用和分配。
??? (3)多處理器接口的設(shè)計,。
??? (4)時鐘頻率和讀寫時序的匹配關(guān)系,。
????(5)總線資源的仲裁和分配。
??? 在多處理器的設(shè)計中,應(yīng)該意識到多處理器的設(shè)計并不僅僅是處理器數(shù)量的疊加,,而應(yīng)該是處理效果和運算效率的整體性提高,,它所注重的是系統(tǒng)之間的合力,而不是單一模塊的發(fā)展,。在有些設(shè)計中,,往往存在著由于處理器結(jié)構(gòu)和片內(nèi)資源使用不合理而帶來整體性能的降低,達(dá)不到設(shè)計的要求,,甚至其利用率還達(dá)不到單個處理器單獨使用的效果,,給資源帶來了浪費。除此以外,,在設(shè)計中還應(yīng)該處理好多進(jìn)程之間的關(guān)系,,注意相關(guān)進(jìn)程的競爭,避免由此帶來的數(shù)據(jù)混淆和死鎖,。
1.2 多處理器相互關(guān)系研究
??? 處理器按相互之間的關(guān)系可以分為兩類:主從關(guān)系和對等關(guān)系,。主從關(guān)系是按CPU在整個系統(tǒng)中的地位和作用對其進(jìn)行分類,主處理器在系統(tǒng)中起著主導(dǎo)作用,,其生存周期伴隨著整個處理活動的始終,,它參與了系統(tǒng)的大部分操作,從處理器觸發(fā),、等待,、停止等一系列活動都由其控制,但它并不參與具體的運算和操作,,更多的時候,,它更像一個控制器;從處理器則主要負(fù)責(zé)具體的操作,,進(jìn)行大批量的數(shù)據(jù)運算,,返回狀態(tài)信息,然后由主處理器進(jìn)行后續(xù)操作,。而對等關(guān)系則可以理解為處理器之間關(guān)系是平等的,,除了初始化的一些操作外,兩者的地位和作用是一樣的,,競爭使用內(nèi)部共享資源,。
??? 兩者之間并沒有明顯的區(qū)別,只是在使用中根據(jù)用戶不同的需求有針對性地進(jìn)行選擇,。其中,,具有主從關(guān)系的多處理器設(shè)計適用于處理器完成不同工作的情況,在這種情況下可以根據(jù)用戶的使用需要有針對性地進(jìn)行設(shè)計,,發(fā)揮每個處理器最大的工作效率,,避免相關(guān)資源的浪費,;而具有對等關(guān)系的多處理器設(shè)計主要應(yīng)用于幾個處理器完成相同或相似功能的操作,與主從關(guān)系相比,,共享緩沖和接口模塊的設(shè)計較為簡便,,但關(guān)于總線資源的調(diào)度及總線仲裁的設(shè)計較為復(fù)雜。
1.3 共享資源的使用
??? FPGA的內(nèi)部資源是極其有限的,,所以在多處理器的設(shè)計中有許多資源都是由兩個或多個處理器共享,,這雖然可以有效地減少資源的使用,提高共享模塊的使用效率,,但由此對共享資源的使用和控制也帶來了新的問題,。尤其是中間緩沖的設(shè)計,由于其狀態(tài)量多,,信號復(fù)雜,往往成為設(shè)計中的難點和重點問題,。為有效解決上述問題,,一般應(yīng)從以下幾個方面加以考慮:
??? (1)臨時數(shù)據(jù)的存取。當(dāng)需要使用到前一個或前幾個微處理器運算所得的數(shù)據(jù)時,,可以通過添加移位寄存器的方式進(jìn)行暫存,,但這種方法僅僅用于少量信息的存儲,當(dāng)有多位或大量信息時往往造成資源使用的緊張,。
??? (2)合理使用總線仲裁,,減少相關(guān)數(shù)據(jù)的等待時間。通過使用總線仲裁機(jī)制可以避免總線擁堵,,減少時間浪費,。
??? (3)添加狀態(tài)中斷和喚醒機(jī)制。中斷提供一個主動信息給處理器表示需要進(jìn)行某些運算,,當(dāng)由于某些原因造成無法及時處理時,,可以通過添加等待/喚醒機(jī)制節(jié)省時間。
2 密碼設(shè)備多處理器系統(tǒng)的設(shè)計
??? 密碼設(shè)備的處理和控制有其自身的特點:
??? (1)運算量多且大,。密碼運算作為一種較為復(fù)雜的數(shù)學(xué)計算,,數(shù)據(jù)量是極為龐大的,無論是算法的實現(xiàn),,中間結(jié)果的存儲還是直接的運算都會占用很多的處理器資源,,但由于其運算相對較為獨立,所以使用單一的處理器進(jìn)行運算有利于程序的優(yōu)化,,提高系統(tǒng)的性能,。
??? (2)具有某些特殊的密碼運算。密碼運算具有移位,、循環(huán)這些較為特殊的運算,,而且這些運算使用量大,次數(shù)多,可設(shè)置特殊的指令對其進(jìn)行操作,。
??? (3)提供較為完備的密碼功能,。密碼設(shè)備可提供不同種類不同類型的算法來實現(xiàn)密碼設(shè)備的功能,而且這些密碼算法的使用也可以作為不同的類型加以單列,。
??? 綜合以上各方面的考慮,,采用主從式的多處理器結(jié)構(gòu)進(jìn)行設(shè)計可以有效地利用處理器的資源,簡化相關(guān)設(shè)計的流程,,提高系統(tǒng)的效率,,其結(jié)構(gòu)模型如圖1所示。


??? 其中,,可以將相關(guān)的數(shù)據(jù)傳輸分為兩類:主/從CPU之間的通信和從CPU與內(nèi)部算法模塊之間的通信,。
2.1 主/從CPU之間的通信
??? 主/從CPU之間的通信過程可以分為以下六個步驟:
??? (1)主CPU向參數(shù)控制寄存器" title="控制寄存器">控制寄存器寫參數(shù),向控制寄存器寫控制字,。

??? (2)觸發(fā)從CPU中斷,。
??? (3)喚醒從CPU中斷,中斷處理程序從控制參數(shù)寄存器中讀出參數(shù),。然后跳轉(zhuǎn)至對應(yīng)操作,。
??? (4)從CPU執(zhí)行完所需處理后,往狀態(tài)寄存器寫返回參數(shù),,然后再向控制寄存器寫相關(guān)控制字,。
??? (5)觸發(fā)主CPU中斷。
??? (6)主CPU的中斷處理開始運行,,從狀態(tài)寄存器中讀取返回參數(shù)[1],。
??? 中斷的產(chǎn)生是通過一個控制寄存器進(jìn)行控制的,控制寄存器分別映射到主/從CPU的相關(guān)存儲空間,,這樣主/從CPU都可以向控制寄存器寫入控制數(shù)據(jù),。同時控制寄存器也與主/從CPU的中斷控制器相連,控制寄存器可以根據(jù)寫入的控制數(shù)據(jù)信息觸發(fā)某個CPU的中斷,。
??? 當(dāng)主CPU需要通信時,,要先往參數(shù)控制寄存器寫一個控制參量,包括CPU的相關(guān)配置信息,、內(nèi)存及地址的大小,同時向控制寄存器寫控制字,,并將控制字的C1_val位置為1,用來通知從CPU命令已發(fā)送,;然后控制寄存器判斷C1_val位值并通過中斷寄存器向從CPU發(fā)送一個中斷,,從CPU接收到這個中斷后,從參數(shù)控制寄存器里取出相關(guān)參數(shù),,并將C1_val置為0,,同時將C1_empty位置為1,,表示正在進(jìn)行相關(guān)處理和運算;當(dāng)從CPU密碼運算完成時,,將C1_empty位置為0,,并將控制寄存器的C2_val位置為1,通知主CPU表示運算完成,;主CPU接收中斷后,,清C2_val位,并置C2_empty位,,C2_empty觸發(fā)從CPU中斷,,通知從CPU狀態(tài)信息已被讀取,然后從CPU可以向狀態(tài)寄存器中寫入新的狀態(tài)信息,。
??? 主/從CPU共享內(nèi)存的使用,,可以通過設(shè)立共享緩沖區(qū)加以解決,將共享內(nèi)存分塊,,由主/從CPU調(diào)用,。在設(shè)計中使用雙端口RAM作為兩個CPU的交互區(qū),其優(yōu)點主要有以下兩方面:
??? (1)分配明確的地址空間,,減少主/從CPU之間的競爭。使用雙端口RAM,,對存儲空間的使用可以通過選通相對應(yīng)的地址,,直接進(jìn)行數(shù)據(jù)的讀取和存儲。從而避免了數(shù)據(jù)的混淆和進(jìn)程死鎖,。
??? (2)內(nèi)外時鐘工作在不同的頻率,。可以通過引入雙時鐘讓主/從CPU工作在不同的頻率,,分別按照自己的速率進(jìn)行數(shù)據(jù)的傳輸,,減少接口模塊的設(shè)計難度,同時也可以使CPU的設(shè)計和選擇具有更大的靈活性,。
??? 由圖2可以看出,,利用雙端口RAM,兩個CPU較好地進(jìn)行了數(shù)據(jù)傳輸,,實現(xiàn)了要求,,達(dá)到了目的[2-3]

?


2.2?從CPU和密碼模塊之間的交互與控制

??? 在密碼設(shè)備多處理系統(tǒng)模型中,,從CPU作為外部主CPU和內(nèi)部密碼模塊之間的連接設(shè)備,,也起著十分重要的作用。在外部主CPU將相關(guān)命令和必要參數(shù)通過共享緩沖區(qū)傳送給從CPU以后,,具體的密碼運算以及所提供功能的具體實現(xiàn)都要由從CPU進(jìn)行控制,。以下結(jié)合其模型設(shè)計做具體介紹[4],。
??? 就模塊控制而言,最關(guān)鍵的問題是密碼功能模塊之間相互關(guān)系的協(xié)調(diào)以及總線資源的使用和仲裁,。密碼設(shè)備向用戶提供多項密碼服務(wù)功能,。一般應(yīng)包括數(shù)據(jù)加密、身份認(rèn)證,、數(shù)字簽名等基本功能,,在本設(shè)計中,將這些功能單獨剝離出來,,利用單獨的算法協(xié)處理器模塊加以實現(xiàn),,相互之間的通信和數(shù)據(jù)交互通過局部總線進(jìn)行,數(shù)據(jù)的讀取和寫入以及局部總線的控制和使用情況都由局部總線狀態(tài)機(jī)進(jìn)行控制,。因篇幅所限,,本文只給出如圖3所示的從CPU向緩沖區(qū)寫數(shù)據(jù)的狀態(tài)機(jī)控制結(jié)構(gòu)圖。

?


??? S0作為初始狀態(tài),,從CPU對局部總線狀態(tài)機(jī)觸發(fā)開始即進(jìn)入此狀態(tài),,S1作為等待狀態(tài),是狀態(tài)機(jī)的中間環(huán)節(jié),。一般而言,,只要狀態(tài)機(jī)操作沒有完成,或者配置參數(shù)沒有完成都可以進(jìn)入此狀態(tài),。
??? 一旦數(shù)據(jù)開始傳輸,,狀態(tài)機(jī)首先進(jìn)入等待狀態(tài)S1,并在S1狀態(tài)進(jìn)行判斷,。如果檢測到復(fù)位信號Reset=1,則無條件進(jìn)入狀態(tài)S0,,否則繼續(xù)等待;隨后狀態(tài)機(jī)進(jìn)行操作參數(shù)的配置,,通過地址譯碼單元對相關(guān)寄存器進(jìn)行選通,,向命令寄存器寫入命令(S2)、向長度寄存器寫入傳輸數(shù)據(jù)的長度(S3)和向狀態(tài)寄存器中寫入狀態(tài)信息(S4),。上述操作完成后則無條件返回至等待狀態(tài)S1,,接下來進(jìn)入向緩沖區(qū)寫數(shù)據(jù)的操作狀態(tài)(S5)。在S5狀態(tài),,狀態(tài)機(jī)對緩沖區(qū)滿標(biāo)志位進(jìn)行判斷,,若FF_IR_INFIFO=0,則進(jìn)入狀態(tài)S6,,否則進(jìn)入狀態(tài)S7,。當(dāng)操作進(jìn)入S7狀態(tài)時,狀態(tài)機(jī)進(jìn)行后續(xù)信號判斷,,若WEN_INFIFO=1,、READY#=1,則進(jìn)入等待狀態(tài)S1,,否則繼續(xù)停留在S7狀態(tài);當(dāng)操作進(jìn)入S6狀態(tài)時,,若WEN_INFIFO=0,、READY#=0,則進(jìn)入S8狀態(tài),然后在S8狀態(tài)進(jìn)行猝發(fā)傳輸信號Burst的判斷,,若為1進(jìn)入狀態(tài)S1繼續(xù)等待,否則進(jìn)入狀態(tài)S0,,表示數(shù)據(jù)傳輸完成。
??? 在本文介紹的主從式多CPU結(jié)構(gòu)中,,主CPU用來控制管理各個模塊的協(xié)同工作,,從CPU單獨負(fù)責(zé)密碼運算的實現(xiàn)。通過中斷通信和內(nèi)存共享的方式,,兩塊CPU能在同一個系統(tǒng)里達(dá)到很好的協(xié)作,,提高了整體芯片的功能。
??? 密碼設(shè)備設(shè)計的復(fù)雜度正在不斷提高,,隨著科學(xué)技術(shù)的不斷發(fā)展以及計算機(jī)性能的不斷提高,,以往長度的算法設(shè)計已不能滿足系統(tǒng)安全的要求??梢灶A(yù)見,,在未來的密碼設(shè)備的設(shè)計中,會有越來越多不同種類的CPU集成于同一個密碼設(shè)備里,,如何協(xié)調(diào)所有的CPU,,更有效地發(fā)揮所有CPU的性能仍是一項值得研究的課題。
參考文獻(xiàn)
[1]? 郭凱,,陳穎琪,方向忠. HDTV SOC中的多CPU設(shè)計.電視技術(shù)[J],2005,(3).
[2]? USing dual port interronnect to resolve multiprocessor system bottlenecks By Jonathan LaRue and Danny Tseng.http://www.Embedded.com,2006-01-18.
[3] ?GUZEMAN D. 21st century multiprocessor design. http://www.Embedded.com,2006-05-29.
[4]? GENTIE R, KATZ D.Common programming models for use ?on a dual-core processor. http://www.Embedded.com, 2006-03-22.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。