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

?

??? 隨著科學(xué)技術(shù)的迅猛發(fā)展及用戶對信息安全和敏感信息保護重視程度的提高,密碼技術(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)的分析可以知道,進行密碼設(shè)備的多" title="的多">的多處理器設(shè)計一般需要考慮以下幾點:
??? (1)處理器的選型。RISC、CISC和DSP是目前主要采用的處理器架構(gòu),可以根據(jù)實際情況進行針對性的選擇。
??? (2)處理器的個數(shù)。對處理器個數(shù)的選擇,主要應(yīng)考察多處理器的使用對于處理效果和處理效率是否能達到設(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)資源使用不合理而帶來整體性能的降低,達不到設(shè)計的要求,甚至其利用率還達不到單個處理器單獨使用的效果,給資源帶來了浪費。除此以外,在設(shè)計中還應(yīng)該處理好多進程之間的關(guān)系,注意相關(guān)進程的競爭,避免由此帶來的數(shù)據(jù)混淆和死鎖。
1.2 多處理器相互關(guān)系研究
??? 處理器按相互之間的關(guān)系可以分為兩類:主從關(guān)系和對等關(guān)系。主從關(guān)系是按CPU在整個系統(tǒng)中的地位和作用對其進行分類,主處理器在系統(tǒng)中起著主導(dǎo)作用,其生存周期伴隨著整個處理活動的始終,它參與了系統(tǒng)的大部分操作,從處理器觸發(fā)、等待、停止等一系列活動都由其控制,但它并不參與具體的運算和操作,更多的時候,它更像一個控制器;從處理器則主要負責(zé)具體的操作,進行大批量的數(shù)據(jù)運算,返回狀態(tài)信息,然后由主處理器進行后續(xù)操作。而對等關(guān)系則可以理解為處理器之間關(guān)系是平等的,除了初始化的一些操作外,兩者的地位和作用是一樣的,競爭使用內(nèi)部共享資源。
??? 兩者之間并沒有明顯的區(qū)別,只是在使用中根據(jù)用戶不同的需求有針對性地進行選擇。其中,具有主從關(guān)系的多處理器設(shè)計適用于處理器完成不同工作的情況,在這種情況下可以根據(jù)用戶的使用需要有針對性地進行設(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ù)時,可以通過添加移位寄存器的方式進行暫存,但這種方法僅僅用于少量信息的存儲,當(dāng)有多位或大量信息時往往造成資源使用的緊張。
??? (2)合理使用總線仲裁,減少相關(guān)數(shù)據(jù)的等待時間。通過使用總線仲裁機制可以避免總線擁堵,減少時間浪費。
??? (3)添加狀態(tài)中斷和喚醒機制。中斷提供一個主動信息給處理器表示需要進行某些運算,當(dāng)由于某些原因造成無法及時處理時,可以通過添加等待/喚醒機制節(jié)省時間。
2 密碼設(shè)備多處理器系統(tǒng)的設(shè)計
??? 密碼設(shè)備的處理和控制有其自身的特點:
??? (1)運算量多且大。密碼運算作為一種較為復(fù)雜的數(shù)學(xué)計算,數(shù)據(jù)量是極為龐大的,無論是算法的實現(xiàn),中間結(jié)果的存儲還是直接的運算都會占用很多的處理器資源,但由于其運算相對較為獨立,所以使用單一的處理器進行運算有利于程序的優(yōu)化,提高系統(tǒng)的性能。
??? (2)具有某些特殊的密碼運算。密碼運算具有移位、循環(huán)這些較為特殊的運算,而且這些運算使用量大,次數(shù)多,可設(shè)置特殊的指令對其進行操作。
??? (3)提供較為完備的密碼功能。密碼設(shè)備可提供不同種類不同類型的算法來實現(xiàn)密碼設(shè)備的功能,而且這些密碼算法的使用也可以作為不同的類型加以單列。
??? 綜合以上各方面的考慮,采用主從式的多處理器結(jié)構(gòu)進行設(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)生是通過一個控制寄存器進行控制的,控制寄存器分別映射到主/從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,表示正在進行相關(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)的地址,直接進行數(shù)據(jù)的讀取和存儲。從而避免了數(shù)據(jù)的混淆和進程死鎖。
??? (2)內(nèi)外時鐘工作在不同的頻率??梢酝ㄟ^引入雙時鐘讓主/從CPU工作在不同的頻率,分別按照自己的速率進行數(shù)據(jù)的傳輸,減少接口模塊的設(shè)計難度,同時也可以使CPU的設(shè)計和選擇具有更大的靈活性。
??? 由圖2可以看出,利用雙端口RAM,兩個CPU較好地進行了數(shù)據(jù)傳輸,實現(xiàn)了要求,達到了目的[2-3]。

?


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

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

?


??? S0作為初始狀態(tài),從CPU對局部總線狀態(tài)機觸發(fā)開始即進入此狀態(tài),S1作為等待狀態(tài),是狀態(tài)機的中間環(huán)節(jié)。一般而言,只要狀態(tài)機操作沒有完成,或者配置參數(shù)沒有完成都可以進入此狀態(tài)。
??? 一旦數(shù)據(jù)開始傳輸,狀態(tài)機首先進入等待狀態(tài)S1,并在S1狀態(tài)進行判斷。如果檢測到復(fù)位信號Reset=1,則無條件進入狀態(tài)S0,否則繼續(xù)等待;隨后狀態(tài)機進行操作參數(shù)的配置,通過地址譯碼單元對相關(guān)寄存器進行選通,向命令寄存器寫入命令(S2)、向長度寄存器寫入傳輸數(shù)據(jù)的長度(S3)和向狀態(tài)寄存器中寫入狀態(tài)信息(S4)。上述操作完成后則無條件返回至等待狀態(tài)S1,接下來進入向緩沖區(qū)寫數(shù)據(jù)的操作狀態(tài)(S5)。在S5狀態(tài),狀態(tài)機對緩沖區(qū)滿標(biāo)志位進行判斷,若FF_IR_INFIFO=0,則進入狀態(tài)S6,否則進入狀態(tài)S7。當(dāng)操作進入S7狀態(tài)時,狀態(tài)機進行后續(xù)信號判斷,若WEN_INFIFO=1、READY#=1,則進入等待狀態(tài)S1,否則繼續(xù)停留在S7狀態(tài);當(dāng)操作進入S6狀態(tài)時,若WEN_INFIFO=0、READY#=0,則進入S8狀態(tài),然后在S8狀態(tài)進行猝發(fā)傳輸信號Burst的判斷,若為1進入狀態(tài)S1繼續(xù)等待,否則進入狀態(tài)S0,表示數(shù)據(jù)傳輸完成。
??? 在本文介紹的主從式多CPU結(jié)構(gòu)中,主CPU用來控制管理各個模塊的協(xié)同工作,從CPU單獨負責(zé)密碼運算的實現(xiàn)。通過中斷通信和內(nèi)存共享的方式,兩塊CPU能在同一個系統(tǒng)里達到很好的協(xié)作,提高了整體芯片的功能。
??? 密碼設(shè)備設(shè)計的復(fù)雜度正在不斷提高,隨著科學(xué)技術(shù)的不斷發(fā)展以及計算機性能的不斷提高,以往長度的算法設(shè)計已不能滿足系統(tǒng)安全的要求。可以預(yù)見,在未來的密碼設(shè)備的設(shè)計中,會有越來越多不同種類的CPU集成于同一個密碼設(shè)備里,如何協(xié)調(diào)所有的CPU,更有效地發(fā)揮所有CPU的性能仍是一項值得研究的課題。
參考文獻
[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)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。