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

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

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

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

?

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


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

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

?


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

??? 在密碼設(shè)備多處理系統(tǒng)模型中,從CPU作為外部主CPU和內(nèi)部密碼模塊之間的連接設(shè)備,也起著十分重要的作用。在外部主CPU將相關(guān)命令和必要參數(shù)通過共享緩沖區(qū)傳送給從CPU以后,具體的密碼運(yùn)算以及所提供功能的具體實(shí)現(xiàn)都要由從CPU進(jìn)行控制。以下結(jié)合其模型設(shè)計(jì)做具體介紹[4]
??? 就模塊控制而言,最關(guān)鍵的問題是密碼功能模塊之間相互關(guān)系的協(xié)調(diào)以及總線資源的使用和仲裁。密碼設(shè)備向用戶提供多項(xiàng)密碼服務(wù)功能。一般應(yīng)包括數(shù)據(jù)加密、身份認(rèn)證、數(shù)字簽名等基本功能,在本設(shè)計(jì)中,將這些功能單獨(dú)剝離出來,利用單獨(dú)的算法協(xié)處理器模塊加以實(shí)現(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對(duì)局部總線狀態(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)行判斷。如果檢測(cè)到復(fù)位信號(hào)Reset=1,則無條件進(jìn)入狀態(tài)S0,否則繼續(xù)等待;隨后狀態(tài)機(jī)進(jìn)行操作參數(shù)的配置,通過地址譯碼單元對(duì)相關(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ī)對(duì)緩沖區(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)時(shí),狀態(tài)機(jī)進(jìn)行后續(xù)信號(hào)判斷,若WEN_INFIFO=1、READY#=1,則進(jìn)入等待狀態(tài)S1,否則繼續(xù)停留在S7狀態(tài);當(dāng)操作進(jìn)入S6狀態(tài)時(shí),若WEN_INFIFO=0、READY#=0,則進(jìn)入S8狀態(tài),然后在S8狀態(tài)進(jìn)行猝發(fā)傳輸信號(hào)Burst的判斷,若為1進(jìn)入狀態(tài)S1繼續(xù)等待,否則進(jìn)入狀態(tài)S0,表示數(shù)據(jù)傳輸完成。
??? 在本文介紹的主從式多CPU結(jié)構(gòu)中,主CPU用來控制管理各個(gè)模塊的協(xié)同工作,從CPU單獨(dú)負(fù)責(zé)密碼運(yùn)算的實(shí)現(xiàn)。通過中斷通信和內(nèi)存共享的方式,兩塊CPU能在同一個(gè)系統(tǒng)里達(dá)到很好的協(xié)作,提高了整體芯片的功能。
??? 密碼設(shè)備設(shè)計(jì)的復(fù)雜度正在不斷提高,隨著科學(xué)技術(shù)的不斷發(fā)展以及計(jì)算機(jī)性能的不斷提高,以往長度的算法設(shè)計(jì)已不能滿足系統(tǒng)安全的要求。可以預(yù)見,在未來的密碼設(shè)備的設(shè)計(jì)中,會(huì)有越來越多不同種類的CPU集成于同一個(gè)密碼設(shè)備里,如何協(xié)調(diào)所有的CPU,更有效地發(fā)揮所有CPU的性能仍是一項(xiàng)值得研究的課題。
參考文獻(xiàn)
[1]? 郭凱,陳穎琪,方向忠. HDTV SOC中的多CPU設(shè)計(jì).電視技術(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)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。