??? 摘??要: 介紹了一種基于FPGA的密碼設備" title="密碼設備">密碼設備多處理器" title="多處理器">多處理器模型,結合模型的特點論述了利用這種多處理器進行協調控制的機制以及一般設計方法。對處理器相互之間的關系進行了研究與分析,同時也對從處理器與密碼設備之間的通信流程進行了詳細的分析和設計。針對共享資源的使用提出了一種基于雙端口" title="雙端口">雙端口RAM的解決方法,提高了系統資源的利用效率。
??? 關鍵詞: 協調控制? 多處理器? 密碼設備
?
??? 隨著科學技術的迅猛發展及用戶對信息安全和敏感信息保護重視程度的提高,密碼技術的使用越來越普及。但是,隨著密碼運算速度越來越快、密碼位數越來越長、密碼運算處理量越來越大,對系統計算能力及實時性的要求也在不斷提高,以往基于單處理器的系統已經不能滿足密碼運算對系統加脫密速度和密鑰寬度的要求。與此同時,微處理器的價格越來越便宜,在完成復雜的系統任務時,采用多個處理器共同協調完成密碼運算任務,以提高系統的計算能力和降低時間,已經成為大勢所趨?;谝陨锨闆r,綜合各方面的考慮,本文提出基于多處理器協調控制的密碼設備研究與設計。
??? 通過對密碼設備特點和密碼運算結構的分析可以知道,進行密碼設備的多" title="的多">的多處理器設計一般需要考慮以下幾點:
??? (1)處理器的選型。RISC、CISC和DSP是目前主要采用的處理器架構,可以根據實際情況進行針對性的選擇。
??? (2)處理器的個數。對處理器個數的選擇,主要應考察多處理器的使用對于處理效果和處理效率是否能達到設計的要求,總體處理性能是否優于單個處理器的處理性能。
??? (3)處理器間的互連結構。
??? (4)多處理器的主從關系以及共享存儲區的使用。
??? 本文將討論密碼設備多處理器設計所遵循的一般性原則,分析多個處理器之間的通信及控制關系,并按處理器關系的不同提出密碼設備多處理器設計的具體方案。同時,針對多處理器協調控制的相關問題給出基于雙端口RAM的緩沖區共享資源的解決辦法,以節省系統的資源,提高系統的利用效率。
1 多處理器設計技術研究
1.1 多處理器設計中應注意的問題
??? 在多處理器的設計中應該注意以下問題:
??? (1)多處理器相互之間關系的處理。
??? (2)內部資源和緩沖區的利用和分配。
??? (3)多處理器接口的設計。
??? (4)時鐘頻率和讀寫時序的匹配關系。
????(5)總線資源的仲裁和分配。
??? 在多處理器的設計中,應該意識到多處理器的設計并不僅僅是處理器數量的疊加,而應該是處理效果和運算效率的整體性提高,它所注重的是系統之間的合力,而不是單一模塊的發展。在有些設計中,往往存在著由于處理器結構和片內資源使用不合理而帶來整體性能的降低,達不到設計的要求,甚至其利用率還達不到單個處理器單獨使用的效果,給資源帶來了浪費。除此以外,在設計中還應該處理好多進程之間的關系,注意相關進程的競爭,避免由此帶來的數據混淆和死鎖。
1.2 多處理器相互關系研究
??? 處理器按相互之間的關系可以分為兩類:主從關系和對等關系。主從關系是按CPU在整個系統中的地位和作用對其進行分類,主處理器在系統中起著主導作用,其生存周期伴隨著整個處理活動的始終,它參與了系統的大部分操作,從處理器觸發、等待、停止等一系列活動都由其控制,但它并不參與具體的運算和操作,更多的時候,它更像一個控制器;從處理器則主要負責具體的操作,進行大批量的數據運算,返回狀態信息,然后由主處理器進行后續操作。而對等關系則可以理解為處理器之間關系是平等的,除了初始化的一些操作外,兩者的地位和作用是一樣的,競爭使用內部共享資源。
??? 兩者之間并沒有明顯的區別,只是在使用中根據用戶不同的需求有針對性地進行選擇。其中,具有主從關系的多處理器設計適用于處理器完成不同工作的情況,在這種情況下可以根據用戶的使用需要有針對性地進行設計,發揮每個處理器最大的工作效率,避免相關資源的浪費;而具有對等關系的多處理器設計主要應用于幾個處理器完成相同或相似功能的操作,與主從關系相比,共享緩沖和接口模塊的設計較為簡便,但關于總線資源的調度及總線仲裁的設計較為復雜。
1.3 共享資源的使用
??? FPGA的內部資源是極其有限的,所以在多處理器的設計中有許多資源都是由兩個或多個處理器共享,這雖然可以有效地減少資源的使用,提高共享模塊的使用效率,但由此對共享資源的使用和控制也帶來了新的問題。尤其是中間緩沖的設計,由于其狀態量多,信號復雜,往往成為設計中的難點和重點問題。為有效解決上述問題,一般應從以下幾個方面加以考慮:
??? (1)臨時數據的存取。當需要使用到前一個或前幾個微處理器運算所得的數據時,可以通過添加移位寄存器的方式進行暫存,但這種方法僅僅用于少量信息的存儲,當有多位或大量信息時往往造成資源使用的緊張。
??? (2)合理使用總線仲裁,減少相關數據的等待時間。通過使用總線仲裁機制可以避免總線擁堵,減少時間浪費。
??? (3)添加狀態中斷和喚醒機制。中斷提供一個主動信息給處理器表示需要進行某些運算,當由于某些原因造成無法及時處理時,可以通過添加等待/喚醒機制節省時間。
2 密碼設備多處理器系統的設計
??? 密碼設備的處理和控制有其自身的特點:
??? (1)運算量多且大。密碼運算作為一種較為復雜的數學計算,數據量是極為龐大的,無論是算法的實現,中間結果的存儲還是直接的運算都會占用很多的處理器資源,但由于其運算相對較為獨立,所以使用單一的處理器進行運算有利于程序的優化,提高系統的性能。
??? (2)具有某些特殊的密碼運算。密碼運算具有移位、循環這些較為特殊的運算,而且這些運算使用量大,次數多,可設置特殊的指令對其進行操作。
??? (3)提供較為完備的密碼功能。密碼設備可提供不同種類不同類型的算法來實現密碼設備的功能,而且這些密碼算法的使用也可以作為不同的類型加以單列。
??? 綜合以上各方面的考慮,采用主從式的多處理器結構進行設計可以有效地利用處理器的資源,簡化相關設計的流程,提高系統的效率,其結構模型如圖1所示。
??? 其中,可以將相關的數據傳輸分為兩類:主/從CPU之間的通信和從CPU與內部算法模塊之間的通信。
2.1 主/從CPU之間的通信
??? 主/從CPU之間的通信過程可以分為以下六個步驟:
??? (1)主CPU向參數控制寄存器" title="控制寄存器">控制寄存器寫參數,向控制寄存器寫控制字。
??? (2)觸發從CPU中斷。
??? (3)喚醒從CPU中斷,中斷處理程序從控制參數寄存器中讀出參數。然后跳轉至對應操作。
??? (4)從CPU執行完所需處理后,往狀態寄存器寫返回參數,然后再向控制寄存器寫相關控制字。
??? (5)觸發主CPU中斷。
??? (6)主CPU的中斷處理開始運行,從狀態寄存器中讀取返回參數[1]。
??? 中斷的產生是通過一個控制寄存器進行控制的,控制寄存器分別映射到主/從CPU的相關存儲空間,這樣主/從CPU都可以向控制寄存器寫入控制數據。同時控制寄存器也與主/從CPU的中斷控制器相連,控制寄存器可以根據寫入的控制數據信息觸發某個CPU的中斷。
??? 當主CPU需要通信時,要先往參數控制寄存器寫一個控制參量,包括CPU的相關配置信息、內存及地址的大小,同時向控制寄存器寫控制字,并將控制字的C1_val位置為1,用來通知從CPU命令已發送;然后控制寄存器判斷C1_val位值并通過中斷寄存器向從CPU發送一個中斷,從CPU接收到這個中斷后,從參數控制寄存器里取出相關參數,并將C1_val置為0,同時將C1_empty位置為1,表示正在進行相關處理和運算;當從CPU密碼運算完成時,將C1_empty位置為0,并將控制寄存器的C2_val位置為1,通知主CPU表示運算完成;主CPU接收中斷后,清C2_val位,并置C2_empty位,C2_empty觸發從CPU中斷,通知從CPU狀態信息已被讀取,然后從CPU可以向狀態寄存器中寫入新的狀態信息。
??? 主/從CPU共享內存的使用,可以通過設立共享緩沖區加以解決,將共享內存分塊,由主/從CPU調用。在設計中使用雙端口RAM作為兩個CPU的交互區,其優點主要有以下兩方面:
??? (1)分配明確的地址空間,減少主/從CPU之間的競爭。使用雙端口RAM,對存儲空間的使用可以通過選通相對應的地址,直接進行數據的讀取和存儲。從而避免了數據的混淆和進程死鎖。
??? (2)內外時鐘工作在不同的頻率??梢酝ㄟ^引入雙時鐘讓主/從CPU工作在不同的頻率,分別按照自己的速率進行數據的傳輸,減少接口模塊的設計難度,同時也可以使CPU的設計和選擇具有更大的靈活性。
??? 由圖2可以看出,利用雙端口RAM,兩個CPU較好地進行了數據傳輸,實現了要求,達到了目的[2-3]。
?
2.2?從CPU和密碼模塊之間的交互與控制
??? 在密碼設備多處理系統模型中,從CPU作為外部主CPU和內部密碼模塊之間的連接設備,也起著十分重要的作用。在外部主CPU將相關命令和必要參數通過共享緩沖區傳送給從CPU以后,具體的密碼運算以及所提供功能的具體實現都要由從CPU進行控制。以下結合其模型設計做具體介紹[4]。
??? 就模塊控制而言,最關鍵的問題是密碼功能模塊之間相互關系的協調以及總線資源的使用和仲裁。密碼設備向用戶提供多項密碼服務功能。一般應包括數據加密、身份認證、數字簽名等基本功能,在本設計中,將這些功能單獨剝離出來,利用單獨的算法協處理器模塊加以實現,相互之間的通信和數據交互通過局部總線進行,數據的讀取和寫入以及局部總線的控制和使用情況都由局部總線狀態機進行控制。因篇幅所限,本文只給出如圖3所示的從CPU向緩沖區寫數據的狀態機控制結構圖。
?
??? S0作為初始狀態,從CPU對局部總線狀態機觸發開始即進入此狀態,S1作為等待狀態,是狀態機的中間環節。一般而言,只要狀態機操作沒有完成,或者配置參數沒有完成都可以進入此狀態。
??? 一旦數據開始傳輸,狀態機首先進入等待狀態S1,并在S1狀態進行判斷。如果檢測到復位信號Reset=1,則無條件進入狀態S0,否則繼續等待;隨后狀態機進行操作參數的配置,通過地址譯碼單元對相關寄存器進行選通,向命令寄存器寫入命令(S2)、向長度寄存器寫入傳輸數據的長度(S3)和向狀態寄存器中寫入狀態信息(S4)。上述操作完成后則無條件返回至等待狀態S1,接下來進入向緩沖區寫數據的操作狀態(S5)。在S5狀態,狀態機對緩沖區滿標志位進行判斷,若FF_IR_INFIFO=0,則進入狀態S6,否則進入狀態S7。當操作進入S7狀態時,狀態機進行后續信號判斷,若WEN_INFIFO=1、READY#=1,則進入等待狀態S1,否則繼續停留在S7狀態;當操作進入S6狀態時,若WEN_INFIFO=0、READY#=0,則進入S8狀態,然后在S8狀態進行猝發傳輸信號Burst的判斷,若為1進入狀態S1繼續等待,否則進入狀態S0,表示數據傳輸完成。
??? 在本文介紹的主從式多CPU結構中,主CPU用來控制管理各個模塊的協同工作,從CPU單獨負責密碼運算的實現。通過中斷通信和內存共享的方式,兩塊CPU能在同一個系統里達到很好的協作,提高了整體芯片的功能。
??? 密碼設備設計的復雜度正在不斷提高,隨著科學技術的不斷發展以及計算機性能的不斷提高,以往長度的算法設計已不能滿足系統安全的要求。可以預見,在未來的密碼設備的設計中,會有越來越多不同種類的CPU集成于同一個密碼設備里,如何協調所有的CPU,更有效地發揮所有CPU的性能仍是一項值得研究的課題。
參考文獻
[1]? 郭凱,陳穎琪,方向忠. HDTV SOC中的多CPU設計.電視技術[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.