專利名稱::一種可重構橢圓曲線密碼處理器的制作方法
技術領域:
:本發明涉及電子信息安全
技術領域:
,更具體地說,涉及一種可重構橢圓曲線密碼處理器。
背景技術:
:在當今信息時代,隨著電子商務,電子政務,軍事通信的蓬勃發展,信息安全問題受到了人們廣泛的關注。公鑰密碼體制有效地解決了在公共信道上保護信息的抗抵賴性、身份認證、密鑰分發等問題。由于基于橢圓曲線離散對數問題(ECDLP)的橢圓曲線密碼(ECC,EllipticCurveCryptography)已經被證明是一種比RSA更安全、計算上更高效的公鑰密碼體制。因此,ECC逐步取代RSA成為下一代公鑰密碼標準。橢圓曲線密碼算法的實現通常有軟件和硬件兩種方式。采用軟件方式即通用CPU方式實現具有靈活性高、維護容易,升級方便等優點,但由于通用微處理器指令系統的局限性,使該實現方式下的性能難以達到高速處理需求;采用專用硬件實現ECC密碼處理時,雖然可使密碼處理性能達到最高,但由于該方式只是針對特定的一種或幾種特定的ECC密碼算法進行硬件優化,因而導致了其靈活性差,不便于進行二次開發。一旦ECC密碼算法或標準發生改變,ECC密碼算法專用硬件就需要重新設計生產。造成了密碼芯片品種多、裝備成本高,給固定ECC算法芯片的使用帶來了很大的局限性。由于靈活性與高效性是密碼處理追求的兩大主要目標。近年來采用可重構計算技術和專用指令系統的微處理器(ASIP)來實現密碼處理成為研究的熱點。例如2003年5月,美國Sim公司設計出支持GF(2n)域上任意曲線的橢圓曲線密碼專用指令集處理器,在該處理器上可以支持NIST推薦的15個標準橢圓曲線及其它定義在二元擴域上的任意曲線,并且性能比較通用微處理器改善明顯,但對素數域支持不夠。2004年奧地利格拉茨大學J.Grobschadl等通過在MIPS32處理器核中添加乘累加單元擴展微處理器指令集實現了ECC的加速。這種實現方式占用資源少,更加靈活,但速度較慢。H.Eberle等采用類似的思想在SPARC處理器上擴展指令集,速度有了較大提高。2006年比利時魯汶大學K.Sakiyama等采用了指令級并行體系結構設計了ECC協處理器,實現了有限域層上的并行處理,速度提升明顯,但只能實現固定的曲線,靈活性受限。2003年IBM公司日本研究實驗室基于通用微處理器+協處理器體系結構,采用0.13μπιCMOS標準單元庫設計了一款可伸縮雙域橢圓曲線密碼處理器,其協處理器核心運算模塊均基于32-bitX32-bit雙域乘法器,能夠支持GF(ρ)域上的任意素數和GF(2n)域上任意的不可約多項式,該協處理器具有較高的靈活性,但該處理器無法提供專用的有限域運算指令,對有限域運算的調度缺乏靈活性;2008年臺灣國立清華大學的Jyu-YimnLai根據該思想,也提出了類似的實現方案,其核心是四個并行的雙域乘法器,可以根據實際需要在面積和速度之間進行折衷,但同樣缺乏專用的有限域運算指令對有限域層次的調度靈活性不夠;2005年復旦大學的曾曉洋等采用了通用ARM處理器+協處理器體系架構方案,利用擴展微代碼指令兩級譯碼方式設計了硬件可配置ECC密碼協處理器;2006年國防科學技術大學的童元滿、2008年解放軍信息工程大學的仲先海也給出了類似的ECC實現方案。這類實現方式利用協處理器作為加速部件,利用通用微處理器進行調度控制,實現了橢圓曲線密碼處理性能的提升。但該種方式依賴于通用微處理器對協處理器的調度,并且協處理器的專用有限域運算密碼指令通過譯碼電路產生對于用戶不可見,造成用戶開發困難。可見,盡管可重構計算技術在一定程度上提升了專用ECC密碼芯片的靈活性,專用指令密碼處理器設計技術使微處理器在ECC密碼處理性能上有了一定程度提高,但是采用這些新技術仍然無法滿足現代網絡通信對ECC密碼處理實現方式靈活性和高速性的要求。因此,現有技術無法從根本上緩解ECC密碼處理的靈活性與性能之間的矛盾。
發明內容有鑒于此,本發明實施例提供一種可重構橢圓曲線密碼處理器,實現提高橢圓曲線密碼處理器的處理性能和處理效率。本發明實施例提供一種可重構橢圓曲線密碼處理器,所述處理器包括控制單元,用于完成指令存取、指令譯碼、指令存儲器地址生成及協調處理器內部指令與外部用戶命令的正確執行;數據通路單元,包括向量寄存器堆子單元,用于存儲待進行橢圓密碼處理的數據;多個向量功能子單元,所述用于根據所述控制單元的協調指令對所述待進行橢圓密碼處理的數據進行相應運算處理;配置寄存器子單元,用于接收所述控制單元輸出的可重構配置指令,對所述功能子單元的運算進行可重構配置;回寫子單元,用于將所述功能單元的輸出數據及回寫數據回傳至相應向量寄存器堆;輸入/輸出單元,用于實現待進行橢圓密碼處理的數據的輸入和處理結果的輸出O優選的,所述向量寄存器堆子單元包括多簇向量寄存器堆。優選的,每一簇向量寄存器堆包括多個通用向量寄存器、多個基點向量寄存器;則,對于所述每一簇向量寄存器堆存在一個或多個所述向量功能子單元。優選的,所述向量功能子單元包括有限域運算模塊及邏輯運算模塊。優選的,所述有限域運算模塊包括模加/減有限域運算子模塊、模乘有限域運算子模塊及模逆有限域運算子模塊。優選的,所述控制單元還用于采用超長指令字并行指令結構進行指令存取及指令譯碼。優選的,所述模加/減有限域運算子模塊具體為針對素數域與二元域、基于字進行運算的模加/減器。優選的,所述模乘有限域運算子模塊具體為針對素數域與二元域、采用字級_字級類型的FIOS模乘算法實現。優選的,所述模逆有限域運算子模塊具體為針對素數域與二元域、采用Montgomery模逆算法實現。同現有技術相比,本發明提供的技術方案通過向量寄存器堆和向量功能子單元實現數據級并行運算,能夠大大提升系統整體工作性能。本發明的結構在充分利用VLIW指令級并行性基礎上,進一步發掘了橢圓曲線密碼算法中存在的數據級并行性,通過采用超長指令字與向量處理相結合的體系結構支持了指令級和數據級的并行,能夠有效提升ECC密碼專用指令集處理器的計算性能。為了更清楚地說明本發明實施例的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹。顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1為現有技術中橢圓曲線密碼運算體系示意圖;圖2為本發明實施例提供的橢圓曲線密碼處理器結構示意圖;圖3為現有技術中的E⑶SA簽名驗證并行調度算法流程示意圖;圖4為現有技術中的二進制點乘算法流程示意圖;圖5為本發明實施例提供的可重構ECC密碼處理器體系結構模型示意圖;圖6為本發明實施例提供的寄存器堆示意圖;圖7為本發明實施例采用的ClusteredVLIff結構示意圖;圖8為本發明實施例提供的一種分離分簇式寄存器堆示意圖;圖9為本發明實施例提供的可重構橢圓曲線密碼處理器體系結構電路結構示意圖;圖10為本發明實施例提供的橢圓曲線密碼處理器指令結構示意圖;圖11為本發明實施例提供的0類型和C類型指令束結構示意圖。具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述。顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。橢圓曲線密碼體制是建立在有限域橢圓曲線有理點上的新一代公鑰密碼體制,是基于有限域上橢圓曲線離散對數的困難問題。在密碼學中,最常用的域一般為素數域GF(ρ)或階為2"的二元域GF(2n)。橢圓曲線密碼系統包括四個層次的運算,如圖1所示。其中,橢圓曲線上群運算層的點乘運算是核心的運算,它通過調度曲線層點加和倍點運算服務來完成,同時又服務于上層的應用層運算,而點加和倍點運算是通過調度有限域上的基本算術實現的。從目前橢圓曲線密碼處理器體系結構的研究狀況來看,盡管有一些結構都采用專用指令的方式來實現橢圓曲線密碼專用微處理器,并取得了一定成果,但在體系結構設計上大多采用RISC處理器體系結構,由于該體系結構不能支持指令級的并行,無法有效提升橢圓曲線密碼處理性能。另一方面,采用通用處理器+協處理器體系結構實現的橢圓曲線密碼處理器,協處理器作為主處理器的加速部件來使用的,硬件結構相對固定,無法提供專用的有限域運算指令,造成用戶開發的靈活性不夠。因此,橢圓曲線密碼處理器在體系結構設計方面,性能與靈活性之間的矛盾尚未得到完全有效解決。主要體現在(1)性能改善不夠明顯為了提高通用處理器的執行密碼處理的速度,部分橢圓曲線密碼處理器體系結構是在確保通用微處理器體系結構不變的情況下,通過增加密碼處理單元和擴展專用密碼處理指令來實現。例如J.Grobschadl通過在MIPS32處理器核中添加乘累加單元擴展微處理器指令集實現了ECC加速,由于MIPS32處理器體系結構自身并不適合橢圓曲線密碼處理特點,指令集抽象不夠充分,導致密碼處理性能改善不夠明顯,密碼處理性能僅能得到有限的提升。(2)算法的廣泛適應性不足ECC密碼應用范圍廣、標準多,橢圓曲線類型與橢圓曲線參數可選性強,群運算層與曲線層運算算法多樣,有限域運算的實現方法異常豐富。很多橢圓曲線密碼處理器體系結構只針對某個域上的橢圓曲線群特定參數長度的運算特點而設計,因此可以達到較好的加速功能。但這些處理器體系結構很難支持任意域上任意橢圓曲線群運算性能的提升,而且支持的參數長度有限。當更換橢圓曲線類型或橢圓曲線參數時,性能的下降十分明顯。例如Sim公司設計的密碼專用指令集處理器,只支持GF(2n)域上任意曲線的橢圓曲線密碼運算,無法實現素數域上橢圓曲線密碼的處理,而且該結構不支持任意長度參數的運算。因此,本發明實施例技術方案提供的橢圓曲線密碼處理器體系結構,能夠將素數域與二元域統一在一個密碼專用指令微處理器體系結構內,實現支持任意橢圓曲線群、任意不可約多項式以及參數長度可配置的橢圓曲線密碼處理器,有效的提升橢圓曲線密碼處理速度以及靈活性。下面首先對本發明提供的橢圓曲線密碼處理器進行說明,參照圖2所示,所述橢圓曲線密碼處理器包括控制單元,用于完成指令存取、指令譯碼、指令存儲器地址生成及協調處理器內部指令與外部用戶命令的正確執行;數據通路單元,包括向量寄存器堆子單元,用于存儲待進行橢圓密碼處理的數據;多個向量功能子單元,所述用于根據所述控制單元的協調指令對所述待進行橢圓密碼處理的數據進行相應運算處理;配置寄存器子單元,用于接收所述控制單元輸出的配置指令,對所述功能子單元的運算進行配置;回寫子單元,用于將所述功能單元的輸出數據及回寫數據回傳至相應向量寄存器堆;輸入/輸出單元,用于實現待進行橢圓密碼處理的數據的輸入和處理結果的輸出ο本發明實施例提供的橢圓曲線密碼處理器案通過向量寄存器堆實現數據級并行運算,能夠大大提升系統整體工作頻率。為了便于對本發明進一步的理解,下面結合本發明的具體實施方式對本發明進行詳細描述。本發明實施例中,橢圓曲線密碼處理器實際采用了可重構橢圓曲線密碼處理器體系結構設計,該設計主要包括以下幾個重要方面(1)橢圓曲線密碼算法各運算層次并行調度算法設計橢圓曲線密碼算法各運算層次并行調度算法是設計可并行的橢圓曲線密碼處理器體系結構的依據與基礎。設計各運算層次并行調度算法需要深入分析橢圓曲線密碼算法,具體研究其應用層、群運算層、曲線層和有限域運算層各層次運算之間數據相關性,深入挖掘各層次運算存在并行性。(2)橢圓曲線密碼處理器體系結構設計橢圓曲線密碼處理器是一種面向特定一類應用進行優化設計的處理器,其體系結構設計應當是立足通用微處理器體系結構,并且具有高度的針對性,體系結構應能更準確和高效地滿足應用處理的需求。因此,在建立體系結構模型時應當充分考慮橢圓曲線密碼處理特點,以提升處理器的指令級并行度為出發點,研究橢圓曲線密碼處理的結構特征、存儲特性、計算粒度、數據并行處理等特征。(3)橢圓曲線密碼處理器可重構功能單元設計功能單元是處理器的基本運算部件,它直接決定了處理器指令運算的效率,是可重構橢圓曲線密碼處理器體系結構設計的關鍵技術。在面向橢圓曲線密碼運算的處理器體系結構中,功能單元的設計應當密切結合橢圓曲線密碼處理特點,采用高效靈活的有限域算法。同時根據可重構計算原理,采用可重構設計思想設計具備指令級可重構特性的橢圓曲線密碼處理功能單元。要研究橢圓曲線密碼算法是否具有可開發并行性,必須從橢圓曲線密碼算法的各個層次和并行算法入手,從分析各層基本運算的數據相關性能開始,設計合適的并行調度算法,并結合資源占用等各種因素,研究最適合橢圓曲線密碼算法的并行結構。橢圓曲線密碼算法中頂層應用層對需要對點乘運算、點加運算以及各個有限域運算層進行調度。各頂層應用中使用到的點乘、點加、模乘、模加與模逆運算的次數如表1所表1橢圓曲線密碼應用協議運算構成<table>tableseeoriginaldocumentpage7</column></row><table>從表1中可以看到,每種應用都調用了群運算層和有限域運算層的運算,而且大都算法都可以支持群運算層和有限域運算層的并行調度;例如簽名驗證算法應用使用了兩次點乘運算,并且兩次點乘運算可并行執行。下面選取一個典型的E⑶SA簽名驗證協議為例,說明其并行調度的特性。假設Alice對消息進行簽名并發送給Bob,Bob接收到消息后對簽名進行驗證。簽名算法如下所示<table>tableseeoriginaldocumentpage8</column></row><table>驗證算法如下<table>tableseeoriginaldocumentpage8</column></row><table>ν=χ,modη;當且僅當ν=r時,接受此簽名,否則拒絕該簽名。該協議運算改進的并行調度流程如圖3所示,從圖3中可以看出,Alice或Bob可以進行兩個點乘并行的計算,并且點乘運算可以和有限域運算同時執行。因此,可以得出頂層應用層可以在群運算層之間、群運算層和有限域運算層之間并行調度。在橢圓曲線密碼算法體制中,群運算層中的點乘運算是橢圓曲線密碼算法中的主要運算,是由點加和倍點運算組成。目前常用的主要有以下幾種點乘算法二進制(Doub1e-and-Add)點乘算法、wary點乘算法、NAF點乘算法、固定窗口點乘算法和Montgomery點乘算法。通過對這些點乘調度算法的分析得出部分點乘算法具有并行調度曲線層運算的特點,可以開發曲線層上點加和倍點的并行性。下面以常見的從右到左Double-and-Add點乘算法為例分析其并行調度可行性。從右到左掃描二進制double-and-add點乘調度算法如算法3所示。算法3從右到左二進制double-and-add點乘調度算法輸入k=Gv1Iv2…k。)2,PeE輸出0=kP步驟1.0—02.Fori=0tom_ldo2.1Ifkj=1thenQ—Q+P2.2P—2P3.Return0圖4依據算法給出了二進制點乘算法的流程圖,圖中假設算法輸入大整數為Gv1,km_2…kQ)2,根據算法循環次數為m次。從圖中可以看出每次循環都需要做一次倍點運算,而點加運算需要判斷&是否為1才可以進行。由于算法每次循環倍點運算和點加運算不存在數據相關,倍點運算和點加運算可以同時計算出來,然后再根據h選擇正確的值做下一輪運算,因此二進制點乘算法可以對點加和倍點的并行調度。運算效率可以提高約1/3,性能改善相當明顯。曲線層上點加和倍點運算作為構成點乘運算的基本操作,具備了更明顯的并行調度有限域運算層的特點。下面以分析二進制域上的點加和倍點算法為例分析其并行調度性能。二元域上的點加、倍點調度在Lopez&Dahab射影坐標下的執行效率是最高的,下面以Lopez&Dahab射影坐標下的點加和點倍為例,使用兩路模乘(U0Ul)和模加(U2U3)單元,說明其并行性。Lopez&Dahab射影坐標下的點加調度算法如下所示,其中M表示模乘運算時間,S代表模平方時間,A代表模加減時間,是臨時變量。算法4:Lopez&Dahab射影坐標下的點加調度算法<table>tableseeoriginaldocumentpage10</column></row><table>并行調度算法如下所示算法5:Lopez&Dahab射影坐標下并行點加調度算法<table>tableseeoriginaldocumentpage10</column></row><table><table>tableseeoriginaldocumentpage11</column></row><table>使用并行的調度算法,運算時間為7M+2A,計算過程中所需要的最大存儲變量空間為8個。與相比普通的調度算法,并行改進后一次點加運算流程可以減少7次模乘運算時間、6次模加運算時間,可以使點加運算的運算速度提高50%以上。Lopez&Dahab射影坐標下的點倍調度算法如下所示<table>tableseeoriginaldocumentpage11</column></row><table>并行調度如下所示<table>tableseeoriginaldocumentpage11</column></row><table><table>tableseeoriginaldocumentpage12</column></row><table>使用并行的調度算法,運算時間為5M+3A,計算過程中所需要的最大存儲變量空間為6個。相比普通調度算法,并行倍點調度算法可以節約5次模乘運算和1次模加運算,運算速度可以提高50%,性能提升非常明顯。通過對橢圓曲線密碼算法特點的分析,可以得出橢圓曲線密碼處理具有計算密集型特點,數據處理算法中常常具有較大的內在并行性,因此,可以通過在可重構橢圓曲線密碼處理器體系結構設計中開發并行的處理功能,以提升系統整體工作頻率。有限域上大整數運算可劃分成具有較小數據位寬的模乘模加操作序列,適合橫向適度并行,縱向深度流水處理,因此可開發的數據級并行(DLP)度較大。目前數據級并行性的開發的典型代表是向量處理結構,它采用的是單指令處理多個數據的方式,是一種數據級并行結構。考慮到指令系統是整個微處理器系統軟/硬件之間的接口,是處理器體系結構的主要表現形式。微處理器的指令系統與其總體結構及整體設計思想密切相關,確定了指令系統,也就確定了處理器的體系結構。因此,橢圓曲線密碼專用指令處理器的指令結構設計對于體系結構密不可分,是橢圓曲線密碼專用指令處理器設計的關鍵技術。就橢圓曲線密碼專用指令處理器而言,一方面,指令結構設計應當吻合橢圓曲線密碼處理的特征;另一方面,指令結構設計應當立足所選用的并行體系結構。這是解決橢圓曲線密碼專用指令處理器體系結構設計的關鍵問題。由于橢圓曲線密碼算法控制流較為簡單,具有相對規則的處理結構和有規律的分支跳轉,并且具有并行調度的特點,因此,可開發出一定的指令級并行(ILP)。面向橢圓曲線密碼處理的專用指令集處理器體系結構宜采用超長指令字(VLIW)體系結構,VLIW結構本身具備了專用密碼處理的諸多特點,如較大的數據處理位寬、多處理單元并行結構、指令譯碼便捷、集中控制邏輯簡單等。因此,VLIW結構非常適合于橢圓曲線密碼處理的指令級并行開發。因此,本發明實施例提供的可重構橢圓曲線密碼處理器針對橢圓曲線密碼算法的數據處理特征,對其指令集、整體架構及可重構功能單元進行設計,能夠加速數據的處理、減小處理器芯片面積,又具備可編程的靈活性。橢圓曲線密碼算法處理是計算強度大、計算復雜度高的任務,具有較明顯的并行數據處理特征。在深入研究這些算法特征的基礎上,對整體架構及關鍵部件進行優化設計,提出適合橢圓曲線密碼運算處理特點的專用指令集處理器體系結構,強化數據通路的計算能力、簡化控制通路的復雜度,滿足橢圓曲線密碼處理的靈活性以及高性能需求。根據以上對目前并行微處理器體系結構的分析,結合橢圓曲線密碼處理結構特點,可重構橢圓曲線密碼處理器體系結構在設計上采用超長指令字與向量處理相結合的體系結構以支持指令級和數據級的并行。該結構在充分利用VLIW指令級并行性基礎上,進一步發掘了橢圓曲線密碼算法有限域運算任務中存在的數據級并行性,有效提升了橢圓曲線密碼專用指令集處理器的計算性能。本發明提出的支持并行處理的可重構橢圓曲線密碼處理器體系結構模型如圖5所示,在該結構主要由超長指令字發射與譯碼模塊、可重構向量處理單元、向量寄存器以及存取單元所構成。通過該結構模型,指令經過指令隊列按照VLIW方式發射,通過譯碼模塊進入到可重構向量處理單元。可重構向量處理單元作為可重構橢圓曲線密碼處理器體系結構中的核心運算部件,具備數據并行理功能,執行有限域上大位寬整數的運算任務;向量寄存器與可重構向量處理單元相對應,儲存運算過程中的臨時數據以及運算中所需的常數值;存取單元用來與外部進行數據交換。在橢圓曲線密碼算法的處理過程,可重構向量處理單元中的寄存器、存儲器中的主要數據包括以下三類(1)橢圓曲線密碼參數主要包括基點P的χ和y坐標、素數域上的階P、二元域上不可約多項式f(z)、基點P的階、有限域類型等,這些數據存儲在向量功能單元內部設置的靜態配置存儲器中,與寄存器結構設計無關。(2)預計算的固定點Pi/常數值基于窗口的點乘算法以及固定基點的點乘算法,需要根據基點P預計算出某些點Pi,在橢圓曲線密碼點乘算法處理中,通過調用這些預計算的數據以提高點乘的運算速度。預計算的數據量的大小根據窗口W的寬度不同而定。存儲空間隨著窗口寬度的增大而增力口。預計算的數據在加解密ECC點乘處理過程中保持不變,只有在基點P更換時,才會由預計算算法重新計算生成固定點Pp對于此類數據采用基點寄存器堆進行存儲,此外基點寄存器堆還存儲計算過程中需要儲存常數值參與運算,如橢圓曲線參數a,b,η值以及有限域運算需要的一些常數值。(3)輸入/輸出/臨時數據包括存儲輸入、輸出和計算過程中臨時數據,其中輸入數據包括了基點P的x、y坐標;輸出的數據即是最終的運算結果,運算中頻繁改變的臨時數據,如點乘算法處理和P值預計算中形成的臨時數據等,對于此類數據的采用通用向量寄存器堆進行存儲。在以往的橢圓曲線密碼微處理器設計中,由于受內部寄存器數量限制,內部僅能存放輸入、輸出和臨時數據,預計算的固定點P需要存儲在片外存儲器中。當執行固定點Pi預計算程序時,將計算得到的固定點Pi寫入外部存儲器中;在橢圓曲線密碼計算過程中,再將每個循環計算所需的固定點Pi調入內部寄存器,如此在整個橢圓曲線密碼處理過程中,存在較多訪存指令。因此,造成了橢圓曲線密碼處理器性能的下降。VLIff處理器提高并行處理能力的基本出發點就是通過增加向量功能單元數量,實現并行計算,通過大容量寄存器堆,實現數據存儲與交換。由于兩類數據有著不同的用途和使用特點,對存儲容量的要求也存在較大差別。為此,本發明提供的可重構橢圓曲線密碼處理器體系結構中將向量寄存器堆子單元設計了兩個寄存器堆,實現對兩類不同數據的存儲,如圖6所示。其中VFU表示可重構向量功能單元。其中,在每個VFU處理過程中,有兩個數據源,其中一個來自通用向量寄存器堆,另外一個來自基點向量寄存器堆或者通用向量寄存器堆,運算完成后得到的運算結果再存放到基點向量寄存器堆或者通用向量寄存器堆中。圖7所示的整個通用向量寄存器堆具有8個讀端口,4個寫端口,即可同時從通用向量寄存器堆中讀取8個源數據,可同時往通用向量寄存器堆寫入4個結果數據;基點寄存器堆具有4個讀端口,4個寫端口,即可同時從基點向量寄存器堆中讀取4個源數據,可同時往基點向量寄存器堆寫入4個結果數據。通用向量寄存器堆完成輸入的基點P的x、y坐標、臨時數據、輸出數據的暫存。這類數據在橢圓曲線密碼處理過程中的前后數據相關性強,一般中間數據的生命周期很短,即參與運算完畢后,源數據不會再次使用,結果可以直接覆蓋源操作數。影響通用向量寄存器堆容量的主要因素有密碼算法的運算長度、運算模式、算法處理結構等,考慮到目前橢圓曲線密碼算法的運算長度,最終確定通用向量寄存器堆位寬為192bit,向量長度為32。根據指令構成研究,每個基本有限域運算處理指令槽有兩個源操作數,其中一個來自通用向量寄存器堆,另外一個來自基點向量寄存器堆或者通用向量寄存器堆,每條指令操作得到一個運算結果回寫寄存器堆,因此通用向量寄存器需要8個192位讀端口、4個192位的寫端口,該容量足以滿足目前公開的橢圓曲線密碼算法的需求。基點向量寄存器堆用于存儲橢圓曲線密碼處理過程的所使用的預計算出的固定點Pi以及計算過程中需要儲存常數值。影響基點向量寄存器堆的存儲容量與結構的主要因素有固定點Pi參與運算數據位寬、密碼算法的運算長度、算法窗口、支路數。一般情況下,基點向量寄存器堆存儲容量由算法窗口大小、密碼算法的運算長度、運算數據位寬三個方面確定。表2給出了橢圓曲線密碼算法中常用的預計算點乘算法,固定點Pi儲存量的分析數據。表2橢圓曲線密碼算法中常用的預計算點乘算法所需存儲量—點乘算法I儲存點數ηI存儲量(仿射坐標)窗口NAF算法2"’-2-1_廠丄χ192χ2χ"_固定基窗口算法__「m/w]-1__FLxl92x2xn_固定基NAF窗口算法__「m/w]-l__FXxl92x2x^__m-ary點乘算法__2^2__ΓΖχ192χ2χπ__固定基comb算法____VLx\92x2xn__同時多點乘算法__I2w-I__ΓΖχ192χ2χπ_窗口TNAF算法2"'-2-1FLxl92x2x_備注(1).VL表示向量長度_(2).w表示窗口寬度(3).w表示眾的長度(4).m-ary算法中m表示進制,一般為2〃,等效窗口寬度為W=廠(5).儲存不包括P點本身,如果需要存儲原始的P點,則將表中的點數加上1(6).在射影坐標系下存儲量為VLxl92x3xn_從表中可以看出,隨著窗口寬度w的增加,儲存的預計算值的數量成指數級的增力口,因此需要考慮支持適當的寬度,同時考慮儲存資源的利用率。從算法角度來看一般w不超過6個。對于特殊的窗口寬度w所需的大于基點向量寄存器堆容量的儲存值,可以考慮放到處理器外部的大容量RAM進行存儲。考慮到存儲點應用需求和硬件實現資源消耗,橢圓曲線密碼處理器最終確定基點向量寄存器堆位寬為192bit,向量長度為72,存儲容量為192X72bit,讀端口4個,寫端口4個。該存儲容量當VL=1時最大支持36個點的儲存,當VL=2時最大支持18個點的儲存,當VL=3時最大支持12個點的儲存。VLIW處理器在提高指令級并行度的同時,對寄存器堆的容量、端口數量提出了更高的要求,其結果是導致了寄存器堆結構復雜,系統整體工作頻率的下降。為了解決這一問題,在本發明的另一個實施例中,提出了分簇(Clustered)VLIW結構,即將寄存器堆分成若干組,每組寄存器堆對應若干功能單元。ClusteredVLIW結構示意圖如圖7所示。ClusteredVLIW結構的工作原理為分簇式結構通過對復雜的處理器硬件架構進行合理地分割,形成可以相對獨立執行指令的多個簇結構(例如圖8中的ClusterA,ClusterB),每個簇分配了指令執行所需的寄存器(例如圖8中的RF_A,RF_B)、功能單元(例如圖8中每個簇對應的FU)等資源,簇與簇之間通過特定的通道進行數據交互(例如圖8中BUS總線)。例如圖8的結構中,整個寄存器劃分為了兩個寄存器簇結構,即RF_A,RF_B兩個簇。每個寄存器簇中又有相應的功能單元FU,功能單元讀取各自簇內的寄存器數據進行運算,然后將結果數據寫入到相應的簇內的寄存器中。RF_A,RF-B兩個寄存器簇中的數據再通過總線通道進行交互傳遞。VLIW分簇式結構,降低了寄存器堆的復雜度以及規模,減小了各部件間的數據交互,減小了處理器關鍵路徑的延遲,提高處理器的工作頻率。通過前面分析可知,橢圓曲線密碼處理中的兩類數據按基本橢圓曲線密碼處理長度,即向量寄存器位寬192bit分成子塊,分別進行處理,并存儲于兩個向量寄存器堆之中,適合于采用分簇結構。此時,處理器內部兩個向量寄存器堆均被分為ABCD四簇,如圖8所示,每個Cluster向量寄存器堆位寬為192bit。其中,GPVR表示通用向量寄存器堆、SPVR表示基點向量寄存器堆。根據以上對并行體系結構模型的研究,以及分簇式寄存器堆結構的設計,本發明提出了可重構分簇式橢圓曲線密碼處理器體系結構電路的設計方案。該體系結構整體電路基于VLIW與向量處理相結合的處理器架構,采用以下分簇式電路結構設計(1)向量寄存器堆的分簇式結構設計該電路所有簇分享原有的向量寄存器堆,原有向量寄存器堆按照相同比例分配到不同簇中,特定的子向量寄存器堆只屬于特定的簇結構。該電路能夠有效降低向量寄存器的容量,減少向量寄存器堆訪問端口的數量,減少向量寄存器堆的訪問延遲。(2)向量功能單元的分簇式結構設計分簇結構中的向量功能單元電路設計采用了異構功能單元的設計方案,即將所有向量運算單元不等地分配到不同簇的功能單元中,每個簇中向量功能單元所包含的向量運算單元不同,操作數輸入、輸出結構不同。通過指令控制的方式,將專用指令橢圓曲線密碼處理器動態重構為多個簇并行執行模式,解決了有限向量寄存器堆資源與多個功能單元之間的矛盾,增強了處理的靈活性。根據上述處理器架構,可重構橢圓曲線密碼處理器體系結構電路如圖9所示,整個電路可劃分為數據通路單元、控制單元、輸入/輸出單元等三部分。數據通路由通用向量寄存器堆、基點向量寄存器堆、配置寄存器、向量功能單元(VFU)、回寫單元等五個部分構成。控制單元實現對處理器的整體協調控制,主要完成指令存取、指令譯碼、指令存儲器地址生成、協調處理器內部指令與外部用戶命令正確執行等工作,而且數據通路正確有序的工作也必須在控制單元正確調度控制下才得以進行。在具體實施時,可以包括指令存儲器、尋址電路、分支控制模塊、堆棧、專用計數器與標志寄存器模塊。輸入/輸出單元包括輸入/輸出接口控制模塊、輸入/輸出寄存器等電路模塊及含命令寄存器和密鑰、各類曲線參數輸入接口電路。其中,數據通路單元中通用向量寄存器堆及基點向量寄存器堆被分為4簇;功能單元包含四個向量功能單元VFUOVFU3,各對應一簇向量寄存器堆;回寫單元則對功能單元的輸出、輸入寄存器等回寫數據進行選擇,并將結果寫回至相應通用向量寄存器堆、基點向量寄存器堆及輸出寄存器。可重構橢圓曲線密碼處理器在工作前,首先需要外部注入算法的可重構配置信息到控制單元中的指令存儲器中,形成指令控制整個數據通路的數據傳遞;然后外部通過接口單元注入密碼運算所需要的各類參數,處理器在控制單元的協調下開始密碼處理工作;運算完成后,將結果數據通過接口單元的輸出寄存器讀至外部。數據通路是處理器的關鍵部件之一,其中執行操作的向量功能部件與存儲數據的向量寄存器通過傳輸總線進行互連,總線存在不同的數據寬度,使向量功能單元可觸發多種密碼運算,運算結果再回寫到向量寄存器中。根據橢圓曲線密碼處理的并行性及位寬需求,共設置四個向量功能單元VFUOVFU3。每個向量功能單元內部運算模塊組成與結構各不相同,分別由一個有限域運算單元和一個邏輯運算單元構成。四個向量功能單元可并發執行即支持四個向量操作的并行處理。由于任何一個密碼算法都是由一系列操作按照一定的時序關系(并行或者串行)構成的,每個操作的執行則是靠指令譯碼得到控制信號后驅動相應運算單元而實現的。在橢圓曲線密碼算法中,將能夠并行執行的操作(相互之間沒有數據或者存儲相關性)指令集中到一起執行,這無疑會大大提高系統性能。為了指令能夠驅動多個操作,達到并行處理的目的,本發明在單個指令操作中設計了組合指令,其設計思想是開發單數據通路的指令級并行度,同一時刻最多能驅動24個普通指令操作。橢圓曲線密碼并行結構特征對可重構處理器指令系統構造提出了以下要求(1)構造面向單個基本密碼處理指令;(2)構造面向24個普通指令(運算處理指令或者控制指令)同時進行處理的密碼組合處理指令;橢圓曲線密碼處理器指令結構要素包括特征域、指令槽、操作數,如圖10所示。橢圓曲線密碼處理都是針對大整數操作數進行處理,因此可重構橢圓曲線密碼處理器在指令系統上構造了面向大整數處理的指令槽,每個指令槽用于實現576位以下的橢圓曲線密碼有限域運算層單個處理操作,如二元域與素數有限域上的模加、模減、模約減、模平方、模乘、模逆運算,以及數據傳輸等。基本運算指令可以獨立使用,也可以組合為并行的長指令,提高處理器的執行效率。針對橢圓曲線密碼處理的控制調度特點,設計了專門的分支控制指令槽,實現分支控制指令,包括以下六類控制計數器操作指令計數器清零、置數、加1、減1操作;控制計數器分支判斷指令當前計數值判斷(大于、等于、小于)指令,計數值加1后判斷(大于、等于、小于)指令,計數值減1后判斷(大于、等于、小于)指令;K值寄存器操作指令K值寄存器清零、移位操作;K值寄存器分支判斷指令當前K值寄存器移出的值判斷(大于、等于、小于)指令;無條件轉移指令無條件跳轉到指定地址;子程序調用和返回指令實現子程序調用與返回;分支控制指令可以獨立使用,也可以將分支判斷指令與控制操作指令進行拼裝成為一條超長指令字,實現橢圓曲線密碼處理過程中的無延遲跳轉,從而提高循環的執行效率。對于橢圓曲線密碼處理指令而言,按照源操作數的數目,可以分為兩類一類是只有一個源操作數的指令,如模逆、模平方、模約減、立即數移位等指令;另一類是具有兩個源操作數的指令,如模加/減、模乘等大部分形式的指令。這樣就能夠將操作數的格式控制在兩個源操作數地址、一個目的操作數地址之內,經過組合后達到48個源操作數地址、24個目的操作數地址的形式。此外,特征域用于表示指令束結構,指示各個指令槽在指令束中的位置,其目的是為了簡化編譯系統和硬件的設計。不同賦值的特征域對應不同的指令束,特征域的取值分為0和1兩種,分別對應普通指令和組合指令。VLIW指令字又稱為指令束,由一個特征域和多個獨立的指令槽(或稱為指令段)構成,本發明橢圓曲線密碼處理器的一個指令束,依據指令槽的類型,指令束共設計兩種類型,分別稱為0類型、C類型。(1)0類型0型指令束由四個基本運算處理指令槽構成,每個指令槽對應一系列基本的大整數有限域密碼處理指令,包括二元域與素數有限域上的模加、模減、模約減、模平方、模乘、模逆運算以及基本邏輯運算等一系列運算指令。四個基本運算處理指令槽指令結構相同,能夠獨立控制相應的功能單元,支持多個有限域運算并行處理,指令槽中的操作碼分別被送往相應的功能單元FUOFU3,使能基本的密碼處理指令,經指令譯碼后,將數據從寄存器堆中讀出、運算,運算結果回寫到寄存器堆內部。(2)C類型C型指令束由2個分支控制指令槽構成。每個分支控制指令槽由分支判斷指令或控制操作指令組成。分支判斷指令包括了控制計數器分支判斷指令和K值寄存器分支判斷指令,控制操作指令包括了控制計數器操作指令和K值寄存器操作指令。每個分支控制指令槽中的操作碼被送往控制分支部件,經指令譯碼后,控制相應的電路模塊工作,控制程序計數器跳轉。2個分支控制指令槽進行拼裝,實現跳轉分支和控制操作并行進行,從而提高橢圓曲線密碼算法處理過程中循環的分支控制執行效率。圖11給出了0類型和C類型指令束結構示意圖。本發明實施例中,對于通用向量寄存器堆,每條指令的目的操作數只能寫入本簇寄存器堆中,即簇中的VFU單元運算的結果在指令的控制下存放至本簇寄存器堆中;兩個源操作數可以來自任意簇寄存器堆中,即簇中的VFU單元的輸入數據在指令的控制下可以來自任意簇寄存器堆中。對于基點向量寄存器堆,每條指令的目的操作數只能寫入本簇寄存器堆中,即簇中的VFU單元運算的結果在指令的控制下存放至本簇寄存器堆中;源操作數可以來自任意簇基點向量寄存器堆中,但每個簇基點向量寄存器堆每次只能讀出一個數據,即簇中VFU單元的輸入數據在指令的控制下只能有一個來自任意簇基點向量寄存器堆中。各個簇中的數據傳遞正是通過以上訪問原則完成數據的傳遞。分簇VLIW處理器結構在簡化VLIW結構寄存器堆設計,提升系統整體工作頻率的同時,也給處理器的靈活使用上帶來了一定問題。因此,合理規劃操作數的簇間分配問題,確定功能單元訪問異簇寄存器堆數據方式,是橢圓曲線密碼處理器設計中的一個關鍵問題。通用向量寄存器堆內部存儲有輸入的基點P的x、y坐標、臨時數據、每循環運算結果、輸出數據等,每一Cluster的存儲容量小,靈活性要求高。為此,確定通用向量寄存器堆的訪問原則如下每條指令的目的操作數只能寫入本簇寄存器堆中。每條指令的兩個源操作數可以來自任意簇寄存器堆中。根據這一原則,當對通用向量寄存器堆進行寫操作時,通用向量寄存器堆的每一Cluster分屬不同的運算支路和功能單元。ClusterA對應功能單元VFUO,ClusterB對應VFU1,ClusterC對應VFU2,ClusterD對應VFU3。即功能單元VFUO的運算結果只能夠寫入ClusterΑ,功能單元VFUl的運算結果只能夠寫入ClusterB,功能單元VFU2的運算結果只能夠寫入ClusterC,功能單元VFU3的運算結果只能夠寫入ClusterD。與通用向量寄存器堆相比,基點向量寄存器堆規模更大,其存儲容量為192X72bit,讀端口4個,寫端口4個。實驗表明,當采用與通用向量寄存器堆相同的讀操作方式,其互聯網絡的資源占用是通用向量寄存器堆的2.5倍,延遲也增加20%,這些將對處理器的性能造成極大影響。通過對橢圓曲線密碼算法的深入研究,可以發現,對于群運算層上的點乘算法而言,其運算中需要的固定值Pi,只會作為一個源輸入值參與到底層的各個有限域運算。為此,確定基點向量寄存器堆的訪問原則如下每條指令的目的操作數只能寫入本簇寄存器堆中。每條指令的源操作數可以來自任意簇寄存器堆中,但任意一簇寄存器堆每次只能讀出一個數據。這種數據讀取方式與通用向量寄存器堆相比,靈活性有所下降,但性能得到有效提升。與讀完全固定方式相比,提高了靈活性。本發明實施例中,向量功能單元采用可重構設計方案。由此,根據橢圓曲線密碼處理特點,可重構的功能單元需要設計可配置模加/減有限域運算單元、可配置模乘有限域運算單元以及可配置模逆有限域運算單元,具體包括(1)對有限域運算單元的雙有限域可配置硬件實現結構進行設計二進制有限域上的加減運算為域元素對應系數的異或,硬件實現非常簡單。素數有限域上的加減運算會產生進位和借位,對于大數運算而言是比較耗時的。與傳統的可配置設計思路不同,在進行雙有限域可配置硬件結構設計時,采用可重構設計的思想設計可重構的運算數據路徑,能夠同時支持兩個有限域上的運算。相比較于分別設計兩個單獨的有限域運算單元,本發明設計能夠節省近50%的硬件資源。(2)對有限域運算單元的運算數據長度可配置硬件實現結構進行設計目前橢圓曲線密碼算法中,NIST推薦使用的二進制有限域和素數有限域的最大域值分別為571和521,因此本發明設計的有限域運算單元最高可以支持576位數據的運算,能夠兼容576位以下數據的運算,而對于大于576位的有限域運算可以通過上層調度實現。運算數據長度可配置的硬件實現結構,將重點從兩個方面進行設計一是設計能夠適用于任意不可約多項式和素數運算的算法,并根據算法設計硬件;二是從減少硬件資源開銷出發,設計可配置的硬件實現結構。(3)從提高有限域運算單元的運算速度出發,優化算法設計高效的硬件電路通過對有限域運算算法進行分析,最大程度地對算法進行優化,一是設計雙有限域算法,以最小的代價實現雙有限域運算的統一;二是簡化算法中的運算步驟;然后基于優化算法,從提高運算并行性和電路時鐘頻率出發,研究硬件實現電路,設計高效優化的硬件電路。對于傳統的模加/減運算電路,輸入的操作數字長是固定的,無法實現操作數的可配置性。通過借鑒數字信號處理系統設計中常用的折疊技術,設計一種基于字的雙域統一模加/減器,把較長字長操作數的模加/減運算轉換成基于字的模加/減操作,不但可以減小模加/減運算模塊的面積,而且使得模加/減運算具有了可配置性,從而實現了多精度操作數模加/減運算。由于二元域上的模加/減運算,實質上為兩操作數的異或運算,完全可以復用素數域模加中的部分運算。基于可重構的思想,在同一電路結構中實現素數域上的模加/減運算與二元域上的模加/減運算則可以進一步減小芯片面積。模加/減運算若按照單精度實現方式,η位全加器和全減器的延遲會嚴重影響電路的時鐘頻率。為降低數據路徑延遲,一般的做法是將運算數據分成若干個字,對運算數據按字進行處理,以提高電路時鐘頻率。首先從算法角度出發,對模加和模減算法進行優化,以簡化硬件設計。對模加算法進行優化,達到以下兩個目的一是將第一次整數加法產生的進位不帶入第二次的模約簡運算中,使兩次運算的數據路徑相同。二是前后兩次運算均采用相同的加法運算電路完成,即電路中只設計加法運算數據路徑即能完成模加運算。對模減算法進行優化,達到以下目的以加法完成模減運算,第一次的整數減法和第二次的整數加法運算均采用加法運算完成,即電路中只設計加法運算數據路徑即能完成模減運算。考慮到經過優化的模加和模減算法,其數據路徑均為相同位寬的加法運算單元,所以可以設計統一的模加和模減運算單元,即模加和模減運算共用運算單元的數據路徑。這樣可以達到節省50%硬件資源開銷的目的。模乘運算是ECC密碼處理中最關鍵的運算,它的運算速度快慢決定了密碼處理的整體性能。截止目前,所有模乘算法可以大體分為三種類型傳統模乘方法、交叉模乘算法、Montgomery模乘算法。其中,Montgomery模乘算法是應用最為廣泛的也最高效的模乘算法,它將素數域上模乘運算中的除法運算替換成移位操作,大大加快了模乘運算的速度和效率。Montgomery模乘算法存在的主要問題是模乘運算數據長度固定,不具備可配置性。另一個缺陷就是模乘運算的數據路徑延遲達到2級η位全加器的延遲,極大限制了電路的時鐘頻率。所以在對算法進行硬件實現時,一般是將運算數據分成若干個字,對運算數據按字進行處理,以提高算法并行度和電路時鐘頻率。目前Montgomery模乘運算的擴展和優化實現算法主要可以分為以下四種類型比特級-完全長度(Bit-LevelFull-Precision,BLFP)算法,即對一個運算數據按比特進行處理,對另一個運算數據按完全長度進行處理;比特級-字級(Bit-LevelWord-Level,BLffL)算法,即對一個運算數據按比特進行處理,對另一個運算數據按字進行處理;字級-完全長度(Word-LevelFull-Precision,WLFP)算法,即對一個運算數據按字進行處理,對另一個運算數據按完全長度進行處理;字級-字級(Word-LevelWord-Level,WLWL)算法,即對一個運算數據按字進行處理,對另一個運算數據同樣也按字進行處理。因為BLFP和WLFP類型的算法與原始Montgomery模乘算法存在相同的缺陷,所以要設計可配置的模乘運算單元,一般采用BLWL和WLWL這兩種類型的算法。基于這兩種類型的算法,并按求乘法部分積與約簡方式的不同,又相繼提出了S0S、CI0S、FI0S、FIPS、CIHS這五種不同類型的Montgomery擴展算法,表2列出了這五種算法的總運算量的比較結果。表中的s代表運算數據的字數,M、A、S和Shift分別代表一次字乘法運算、字加法運算、字減法運算和字移位操作。表3S0S、CI0S、FI0S、FIPS、CIHS五種算法的運算量比較~~總運算量SOSS2(2M+4A)+Sm+(s+1)S+(s+1)ShiftCIOSs2(5M+10A+Shift)FIOSs2(2M+4A)~sAFIPS(S2-S)(7M+10A+6Shift)/2-(s-l)(5M+6A+3Shift)~~總運算量CIHSS2(3M+9A)_s(M+8A)根據以上分析,在不考慮流水線實現算法的前提下,FIOS算法的運算量是這五種算法中最少的。下面以運算周期和硬件實現的復雜度對這五種算法進行分析。先求乘法部分積后進行約簡的SOS算法,需要四次循環,運算周期太長;將求乘法部分積與約簡運算粗略結合的CIOS算法,在完成對一個運算數據全部比特的處理后,進行一次約簡運算,所以在一個外部循環內需要嵌套兩個內部循環,第一個內部循環求乘法部分積,第二個內部循環進行約簡運算,所需運算周期數較前一種方式少,但運算周期數仍然較大;將求乘法部分積與約簡運算精細結合的FIPS算法,需要對部分積做進一步處理,并在每次完成對運算數據一個字的處理后,即進行一次約簡運算,所以該算法需要兩個外部循環,每個外部循環內嵌套一個內部循環;將求乘法部分積與約簡運算精細結合的FIOS算法,在每次完成對運算數據一個字的處理后,即進行約簡運算,所以只需要一個外部循環,并且外部循環內只嵌套一個內部循環,所需運算周期是最少的;將求乘法部分積與約簡運算粗略結合的CIHS算法,對運算數據和部分積均要進行處理,所以需要兩個外部循環,并且第二個外部循環內嵌套兩個內部循環。另一方面,SOS、CI0S、FIPS、CIHS這四種算法,對運算數據和乘法部分積的讀取非常復雜,而且并不按照它們在寄存器中的先后存儲次序,而是由外部循環以及內部循環的次數決定,這樣將大大增加控制電路的設計難度。而FIOS算法中對運算數據按照它們在寄存器中的先后存儲次序逐字進行處理,對中間變量的讀取也按照寫入寄存器的先后次序,因而更便于設計硬件電路。本專利采用了WLWL類型的FIOS模乘算法進行設計。有限域求逆運算是ECC密碼算法的關鍵運算之一,同時也是效率最低的有限域運算。通常情況下,有限域求逆運算的開銷至少是乘法運算的4倍,因此求逆運算的效率將直接影響到整個ECC密碼系統的效率。有限域上的求逆算法主要分為以下三種類型第一種類型是基于Fermat小定理方法。這種方法比較簡單,只需要進行一次模冪(若干次連續模乘)運算即可,但所需運算周期數較多,并且不支持二元域上所有的不可約多項式。第二種類型是基于歐幾里德定理,由Stein提出的兩個求最大公約數算法衍生而來。該算法僅僅依賴于下列運算加法,減法,奇偶校驗,求二倍值(對應于在二進制表示中的左移),偶數折半(對應于在二進制表示中的右移)。第三種類型是Montgomery模逆算法。該算法首先對運算數據進行轉換,進一步提高運算效率,使之更適合硬件實現。算法僅僅依賴于加法、減法、奇偶校驗、求二倍值(對應于在二進制表示中的左移)、偶數折半(對應于在二進制表示中的右移)運算。第二種類型與第三種類型的求逆算法適合硬件實現,并且運算效率較高,但基于歐幾里德定理的算法存在兩點不足一是該算法每次循環需要對多種情況進行判斷,若采用串行判斷的方式,判斷延遲較長,若采用并行判斷的方式,電路中需要更多的中間變量寄存資源;二是該算法不能支持Montgomery數域上的運算,與Montgomery模乘算法不能有效統一起來,需要額外的數域轉換步驟。根據以上對不同類型求逆算法的分析,本發明對Montgomery模逆算法進行了研究,并基于算法設計了可配置硬件實現結構。Montgomery模逆算法。該算法分為兩個運算部分,第一部分為近似Montgomery模逆算法,第二部分是對近似結果進行進一步轉換,求得逆元。Montgomery模逆算法近似求逆運算得到近似Montgomery逆元,此時可以通過移位加操作得到普通數域逆元或Montgomery逆元。但在實際應用中,需要根據具體情況求得這兩種不同的逆元,若通過移位加操作完成數域轉換,需要改動控制電路。因此通過分析求普通數域內的普通逆元、求Montgomery域內的Montgomery逆元、求普通數域內的Montgomery逆元禾口求Montgomery域內的普通逆元這四種類型的模逆運算,可以得出若以Montgomery模乘運算代替移位加操作,并以不同的預計算參數值作為模乘器的輸入,這樣就能夠達到設計一個統一的硬件結構在不同數域之間進行轉換的目的,而不需要對硬件電路進行任何改變。從而達到了靈活高效的目的。可見,本發明提供的可重構橢圓曲線密碼處理器,基于橢圓曲線密碼算法可并行處理特征,在設計上遵循了通用處理器體系結構設計方法,采用超長指令字(VLIW)與向量處理相結合的體系結構。該結構能夠滿足橢圓曲線密碼處理的基本特點,具有較高的指令級并行度,同時結合可重構方法設計了具有支持指令重構的專用密碼處理并行指令結構,從而達到更高的處理效率,為高速網絡數據保密通信提供一種新的高效靈活的處理模式,因此,相比目前現有的橢圓曲線密碼處理器具有較大的性能優勢。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解并實施。本領域普通技術人員可以理解實現上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關的硬件來完成,所述的程序可存儲于計算機可讀取存儲介質中,該程序在執行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-OnlyMemory,ROM)或隨機存儲記憶體(RandomAccessMemory,RAM)等。對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本發明。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發明實施例的精神或范圍的情況下,在其它實施例中實現。因此,本發明實施例將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。權利要求一種可重構橢圓曲線密碼處理器,其特征在于,所述處理器包括控制單元,用于完成指令存取、指令譯碼、指令存儲器地址生成及協調處理器內部指令與外部用戶命令的正確執行;數據通路單元,包括向量寄存器堆子單元,用于存儲待進行橢圓密碼處理的數據;多個向量功能子單元,用于根據所述控制單元的協調指令對所述待進行橢圓密碼處理的數據進行相應運算處理;配置寄存器子單元,用于接收所述控制單元輸出的可重構配置指令,對所述功能子單元的運算進行可重構配置;回寫子單元,用于將所述功能單元的輸出數據及回寫數據回傳至相應向量寄存器堆;輸入/輸出單元,用于實現待進行橢圓密碼處理的數據的輸入和處理結果的輸出。2.根據權利要求1所述的可重構橢圓曲線密碼處理器,其特征在于,所述向量寄存器堆子單元包括多簇向量寄存器堆。3.根據權利要求1所述的可重構橢圓曲線密碼處理器,其特征在于,每一簇向量寄存器堆包括多個通用向量寄存器、多個基點向量寄存器;則,對于所述每一簇向量寄存器堆存在一個或多個所述向量功能子單元。4.根據權利要求1所述的可重構橢圓曲線密碼處理器,其特征在于,所述向量功能子單元包括有限域運算模塊及邏輯運算模塊。5.根據權利要求4所述的可重構橢圓曲線密碼處理器,其特征在于,所述有限域運算模塊包括模加/減有限域運算子模塊、模乘有限域運算子模塊及模逆有限域運算子模塊。6.根據權利要求1所述的可重構橢圓曲線密碼處理器,其特征在于,所述控制單元還用于采用超長指令字并行指令結構進行指令存取及指令譯碼。7.根據權利要求5所述的可重構橢圓曲線密碼處理器,其特征在于,所述模加/減有限域運算子模塊具體為針對素數域與二元域、基于字進行運算的模加/減器。8.根據權利要求5所述的可重構橢圓曲線密碼處理器,其特征在于,所述模乘有限域運算子模塊具體為針對素數域與二元域、采用字級_字級類型的FIOS模乘算法實現。9.根據權利要求5所述的可重構橢圓曲線密碼處理器,其特征在于,所述模逆有限域運算子模塊具體為針對素數域與二元域、采用Montgomery模逆算法實現。全文摘要本發明公開了一種可重構橢圓曲線密碼處理器,包括控制單元,用于完成指令存取、指令譯碼、指令存儲器地址生成及協調處理器內部指令與外部用戶命令的正確執行;數據通路單元,包括向量寄存器堆子單元,用于存儲待進行橢圓密碼處理的數據;多個向量功能子單元,用于根據所述控制單元的協調指令對橢圓密碼處理的數據進行相應運算處理;配置寄存器子單元,用于接收所述控制單元輸出的可重構配置指令,對所述功能子單元的運算進行可重構配置;回寫子單元,用于將所述功能單元的輸出數據及回寫數據回傳至相應向量寄存器堆;輸入/輸出單元,用于實現待進行橢圓密碼處理的數據的輸入和處理結果的輸出。以提高橢圓曲線密碼處理器的處理靈活性和效率。文檔編號G06F21/00GK101826142SQ20101015202公開日2010年9月8日申請日期2010年4月19日優先權日2010年4月19日發明者嚴迎建,劉軍偉,南龍梅,徐勁松,徐進輝,戴紫彬,李偉,楊曉輝申請人:中國人民解放軍信息工程大學