欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種蒙哥馬利模乘方法及其電路的制作方法

文檔序號(hào):6400989閱讀:264來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種蒙哥馬利模乘方法及其電路的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及公鑰加密領(lǐng)域,更具體地,涉及一種蒙哥馬利模乘方法及其電路。
背景技術(shù)
公鑰加密利用的是非對(duì)稱(chēng)密碼,使用兩個(gè)獨(dú)立擔(dān)憂存在著某種數(shù)學(xué)聯(lián)系的密鑰:公鑰和私鑰。通信的各方保密各自的私鑰,公開(kāi)其公鑰,發(fā)送者使用接收者的動(dòng)搖加密,接收者使用只有自己制動(dòng)的私鑰解密。公鑰加密還可以用于解決數(shù)字簽名的問(wèn)題。RSA是一種公鑰加密算法,既可以作為數(shù)據(jù)加解密也可以用來(lái)數(shù)字簽名和驗(yàn)證,這使得該算法得到了廣泛的應(yīng)用,例如網(wǎng)絡(luò)信息安全、智能卡、安全芯片以及手機(jī)移動(dòng)通信等。RSA算法的安全依賴(lài)于大數(shù)分解的難易性,隨著計(jì)算機(jī)的飛速發(fā)展,512位密鑰長(zhǎng)度的RSA加密算法安全性受到威脅,因此高安全的應(yīng)用中必須將密鑰長(zhǎng)度增加到1024位甚至2048位。密鑰長(zhǎng)度的增加使硬件電路設(shè)計(jì)變得復(fù)雜,需要占用更多的硬件資源開(kāi)銷(xiāo),面積功耗都會(huì)大幅上升,速度也會(huì)下降。RSA加密最關(guān)鍵的計(jì)算步驟就是模乘,根據(jù)運(yùn)算公式C=MEmodN,需要不斷重復(fù)模乘操作以得到運(yùn)算結(jié)果,模乘算法的優(yōu)劣決定了整個(gè)加密運(yùn)算時(shí)間的長(zhǎng)短?,F(xiàn)有設(shè)計(jì)大部分采用蒙哥馬利模乘算法優(yōu)化加解密時(shí)間,然而一味的提高模乘速度會(huì)使得功耗和面積增加,這對(duì)面積和功耗受限制的芯片設(shè)計(jì)帶來(lái)巨大的挑戰(zhàn)。而且傳統(tǒng)的模乘算法是在軟件中實(shí)現(xiàn),這將取決于處理器的速度,每個(gè)操作都需要取指令、譯碼以及執(zhí)行指令,大大降低了算法執(zhí)行速度。隨著集成電路的發(fā)展,模乘算法大多采用硬件實(shí)現(xiàn),其最關(guān)鍵的電路便是多項(xiàng)式乘加器。但由于乘加器功耗大,現(xiàn)有做法普遍是用多個(gè)時(shí)鐘實(shí)現(xiàn),非常速度慢。

發(fā)明內(nèi)容
本發(fā)明旨在至少在一定程度上解決上述技術(shù)問(wèn)題。本發(fā)明的首要目的是提供一種高速低功耗的蒙哥馬利模乘方法。本發(fā)明的進(jìn)一步目的是提供一種高速低功耗的蒙哥馬利模乘電路。本發(fā)明第一個(gè)目的技術(shù)方案為:一種蒙哥馬利模乘方法,模長(zhǎng)度為k,k=sw,其中w為算法每次處理的字長(zhǎng)大小,s為算法for循環(huán)所需的次數(shù);輸入?yún)?shù)包括a、b和模數(shù)n,r為一存儲(chǔ)器的高k位為存放輸入?yún)?shù)a和輸出結(jié)果的r2,r的低k位為存放輸入?yún)?shù)b的rl,t為多項(xiàng)式臨時(shí)計(jì)算結(jié)果,r32、zl、c、xl、x2、n0’為中間變量,i和j為循環(huán)變量,其運(yùn)算步驟為:計(jì)算 r2=MonPro (a, b, n) =a*b*2-k mod n ;將t和i賦零值;將中間變量r32賦值為r的第s個(gè)字,其中,r32表示存儲(chǔ)器r的第32為地址的數(shù)據(jù);令i為O開(kāi)始外循環(huán);
將t的第i個(gè)字與r32相乘,乘積結(jié)果與t的第i個(gè)字相加,結(jié)果的低k位賦給z I,高k位賦給c ;接著將zl與nO’相乘,乘積結(jié)果的低k位賦給zl,高k位賦給c,其中,nO'通過(guò)預(yù)先計(jì)算獲取,nO' =-nO_1mod (232), nO是指模數(shù)η的低32位值,η從外部輸入;令x2=zl ;令xl等于r的第i個(gè)字;令j為O開(kāi)始內(nèi)循環(huán);將xl與r的第i個(gè)字相乘后的結(jié)果和x2與η的第i個(gè)字相乘后的結(jié)果相加,相加結(jié)果再加上c和t的第i+j個(gè)字,最終結(jié)果的低k位賦給t的第i+j個(gè)字,高k位賦給c ;并令t的第i+s個(gè)字等于C,然后循環(huán)變量j加1,當(dāng)j小于s時(shí)重復(fù)內(nèi)循環(huán),當(dāng)j大于或者等于s時(shí)退出內(nèi)循環(huán);循環(huán)變量i加1,當(dāng)i小于s時(shí)重復(fù)外循環(huán),當(dāng)i大于或者等于s時(shí)退出外循環(huán);判斷t的高k位是否大于η,若是則將r2=r2-n,否則將t的低k位賦給r2 ;根據(jù)r2輸出模乘結(jié)果。在本方法中, 多項(xiàng)式乘加器公式的運(yùn)算只需要一個(gè)時(shí)鐘周期,運(yùn)算速度得到大大的提升。而且本發(fā)明的蒙哥馬利模乘方法采用一體化設(shè)計(jì)集成相關(guān)操作,使得多項(xiàng)式乘加器公式只需要做兩次加法以及兩次乘法,時(shí)間復(fù)雜度為O (s2),大大簡(jiǎn)化了運(yùn)算的復(fù)雜度,進(jìn)一步提升運(yùn)算的速度,降低系統(tǒng)功耗。本發(fā)明第二個(gè)目的技術(shù)方案為:一種蒙哥馬利模乘電路,所述蒙哥馬利模乘采用權(quán)利要求1所述的方法實(shí)現(xiàn),所述電路包括依次連接的接口電路、SRAM存儲(chǔ)器、蒙哥馬利模乘控制器、臨時(shí)寄存器和多項(xiàng)式乘加器;接口電路與外部總線連接,將輸入?yún)?shù)a、b寫(xiě)進(jìn)SRAM存儲(chǔ)器的r中,并將計(jì)算完畢后的輸出結(jié)果讀出;SRAM存儲(chǔ)器包括r存儲(chǔ)器和t存儲(chǔ)器,用于存儲(chǔ)輸入?yún)?shù)a、輸入?yún)?shù)b、中間處理數(shù)據(jù)以及最終計(jì)算結(jié)果;蒙哥馬利模乘控制器用于產(chǎn)生地址和控制信號(hào),讀取SRAM存儲(chǔ)器中的數(shù)據(jù)并放入相應(yīng)寄存器中進(jìn)行處理,其內(nèi)設(shè)置有地址產(chǎn)生器、減法器、計(jì)數(shù)器和控制電路;所述地址產(chǎn)生器用于產(chǎn)生狀態(tài)跳轉(zhuǎn)信號(hào)和訪問(wèn)SRAM存儲(chǔ)器的地址信號(hào);減法器用于完成r2=r2_n的減法操作;計(jì)數(shù)器用于計(jì)算外部循環(huán)次數(shù)i和內(nèi)部循環(huán)次數(shù)j ;控制電路控制循環(huán)的進(jìn)入和退出以及在每個(gè)時(shí)鐘內(nèi),根據(jù)地址產(chǎn)生器產(chǎn)生的地址從SRAM存儲(chǔ)器中取出相應(yīng)數(shù)據(jù)放到臨時(shí)寄存器中,并將中間結(jié)果和多項(xiàng)式臨時(shí)計(jì)算結(jié)果t寫(xiě)回到SRAM存儲(chǔ)器中;臨時(shí)寄存器用于暫存SRAM存儲(chǔ)器讀寫(xiě)數(shù)據(jù)以及多項(xiàng)式乘加器的輸入輸出結(jié)果;多項(xiàng)式乘加器,用于完成如下計(jì)算:將xl與r的第i個(gè)字相乘后的結(jié)果和x2與η的第i個(gè)字相乘后的結(jié)果相加,相加結(jié)果再加上c和t的第i+j個(gè)字,最終結(jié)果的低k位賦給t的第i+j個(gè)字,高k位賦給C。在本發(fā)明的蒙哥馬利模乘電路中,多項(xiàng)式乘加器采用一體化設(shè)計(jì),即用一個(gè)組合邏輯模塊將兩次加法、兩次乘法運(yùn)算集成在一起,大大降低了時(shí)間復(fù)雜度,提升了算法的運(yùn)算速度。在一種優(yōu)選方案中,所述臨時(shí)寄存器中包括七個(gè)寄存器:ti寄存器、xl寄存器、yl寄存器、x2寄存器、y2寄存器、c寄存器和zl寄存器。這七個(gè)寄存器分別用于暫存SRAM存儲(chǔ)器讀寫(xiě)數(shù)據(jù)以及多項(xiàng)式乘加器的輸入輸出結(jié)果。所述SRAM存儲(chǔ)器為雙端口 SRAM存儲(chǔ)器,其在時(shí)鐘的下降沿完成讀操作,在時(shí)鐘的上升沿完成寫(xiě)操作。在一種優(yōu)選方案中,所述SRAM存儲(chǔ)器為雙端口寄存器文件,其在時(shí)鐘的下降沿完成讀操作,在時(shí)鐘的上升沿完成寫(xiě)操作。雙端口寄存器功耗低,訪問(wèn)速度快,其在時(shí)鐘的下降沿完成讀操作,上升沿完成寫(xiě)操作,使其能夠在一個(gè)時(shí)鐘內(nèi)完成讀寫(xiě)操作。在一種優(yōu)選方案中,多項(xiàng)式乘加器對(duì)多項(xiàng)式采用基4的Booth編碼,其產(chǎn)生的部分和利用4:2壓縮器逐級(jí)壓縮。與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案的有益效果是:本發(fā)明的多項(xiàng)式乘加器采用一體化設(shè)計(jì),將兩次加法、兩次乘法運(yùn)算集成在一起,使多項(xiàng)式乘加器能夠在一個(gè)時(shí)鐘周期內(nèi)完成多項(xiàng)式的一次計(jì)算,降低了算法的時(shí)間復(fù)雜度,從而提升了算法的運(yùn)算速度,降低整個(gè)算法運(yùn)行的功耗。


圖1為本發(fā)明一種蒙哥馬利模乘電路硬件實(shí)現(xiàn)架構(gòu)圖。圖2為本發(fā)明多項(xiàng)式乘加器 采用華萊士樹(shù)壓縮結(jié)構(gòu)的示意圖。圖3為本發(fā)明關(guān)鍵路徑圖。圖4為本發(fā)明中涉及到的門(mén)控時(shí)鐘電路圖。圖5為本發(fā)明的模乘算法時(shí)序圖。
具體實(shí)施例方式附圖僅用于示例性說(shuō)明,不能理解為對(duì)本專(zhuān)利的限制;為了更好說(shuō)明本實(shí)施例,附圖某些部件會(huì)有省略、放大或縮小,并不代表實(shí)際產(chǎn)品的尺寸;對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),附圖中某些公知結(jié)構(gòu)及其說(shuō)明可能省略是可以理解的。下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的說(shuō)明。實(shí)施例1一種蒙哥馬利模乘方法,模長(zhǎng)度為k,k=sw,其中w為算法每次處理的字長(zhǎng)大小,s為算法for循環(huán)所需的次數(shù);輸入?yún)?shù)包括a、b和模數(shù)η、n0',其中,nO'通過(guò)預(yù)先計(jì)算獲取,nO’ —nO^mod (232),nO是指模數(shù)η的低32位值;r為一存儲(chǔ)器,r的高k位為存放輸入?yún)?shù)a和輸出結(jié)果的r2,也就是說(shuō)輸出結(jié)果保存在r2中,r的低k位為存放輸入?yún)?shù)b的rI,t為多項(xiàng)式臨時(shí)計(jì)算結(jié)果,r32、zl、c、Xl、X2、nO’為中間變量,其中,r32表示存儲(chǔ)器r的第32為地址的數(shù)據(jù),i和j為循環(huán)變量,如圖1所示,其通過(guò)如下運(yùn)算步驟計(jì)算輸出結(jié)果:S1.r2=MonPro (a, b, n) =a*b*2-k mod nS2.t=0,i=0 ;
S3.r32=r [s];S4.for (i==0; i++; i<s)S5.(c, zl) =t [i]+r [i]*r32 ;S6.(c, zl) =zl*n0,;S7.x2=zl ;S8.xl=r[i];S9.for (j==0; j++; j<s)S10.(c, t [i+j]) =t [i+j]+xl*r [i]+x2*n [i]+c ;Sll.t [i+s] =c ;S12.1f t2>n, then (r2=t2-n)S13.else (r2=tl) 輸出結(jié)果存儲(chǔ)在r2中,通過(guò)r2即可得到輸出結(jié)果。本實(shí)施例采用一體化設(shè)計(jì)集成上述操作,SlO中的多項(xiàng)式t[i+j]+xl*r[i]+x2* n[i]+c即為多項(xiàng)式乘加器公式,其只需要做兩次加法以及兩次乘法。在本實(shí)施例中, 步驟SlO和Sll的計(jì)算只需要一個(gè)時(shí)鐘周期,大大減少了運(yùn)算的時(shí)鐘周期,從而提高了蒙哥馬利模乘的運(yùn)算速度。很明顯,本實(shí)施例中算法的時(shí)間復(fù)雜度為0(s2),假設(shè)是1024位模乘運(yùn)算,s=w=32,于是一次模乘就只需要大概1024個(gè)時(shí)鐘周期,從而能夠提升算法的運(yùn)算速度和降低系統(tǒng)的功耗。開(kāi)始工作之前,對(duì)t寄存器和i計(jì)數(shù)器清零,并從s地址的r存儲(chǔ)器中讀出內(nèi)容放到r32寄存器中,然后開(kāi)始第一重循環(huán)。S5、S6、S7、S8步驟為初始化操作步驟,是為了 SlO的高速計(jì)算做鋪墊的,由于S9的循環(huán)i是不變化的,故可以在S7和S8中先計(jì)算出xl和x2,然后進(jìn)入S9的s次循環(huán),每次循環(huán)xl和x2都不需要重新載入。在第10步驟中,在時(shí)鐘的上升沿將地址為i+j的t寄存器數(shù)據(jù)、xl寄存器、地址為i的r寄存器、x2寄存器、地址為i的η以及c寄存器放到多項(xiàng)式乘加器中,在下一個(gè)時(shí)鐘上升沿將乘加器的內(nèi)容保存回t存儲(chǔ)器中,以上操作只需一個(gè)時(shí)鐘便可完成復(fù)雜計(jì)算,這是速度提升的關(guān)鍵技術(shù)所在。實(shí)施例2本實(shí)施例以1024位模乘運(yùn)算為例在硬件上實(shí)現(xiàn)實(shí)施例1所述的方法,以本實(shí)施例算法為基礎(chǔ)實(shí)現(xiàn)的其他長(zhǎng)度(如512位、2048位等)模乘運(yùn)算及其硬件實(shí)現(xiàn)應(yīng)當(dāng)屬于本發(fā)明的保護(hù)范圍。如圖2所示,一種蒙哥馬利模乘電路,其中蒙哥馬利模乘采用上述蒙哥馬利模乘方法實(shí)現(xiàn),該電路包括依次連接的接口電路、SRAM存儲(chǔ)器、蒙哥馬利模乘控制器、臨時(shí)寄存器和多項(xiàng)式乘加器;接口電路與外部總線連接,將輸入?yún)?shù)a、b寫(xiě)進(jìn)SRAM存儲(chǔ)器的r中,并將計(jì)算完畢后的輸出結(jié)果讀出;SRAM存儲(chǔ)器包括r存儲(chǔ)器和t存儲(chǔ)器,用于存儲(chǔ)輸入?yún)?shù)a、輸入?yún)?shù)b、中間處理數(shù)據(jù)以及最終計(jì)算結(jié)果。以32位字長(zhǎng)為單位,由于是1024位模乘運(yùn)算,一共需要2048位r和t,因此需要64組r[i]和t[i] (i為O到63的整數(shù))。本實(shí)施例的SRAM存儲(chǔ)器采用雙端口存儲(chǔ)器,在低功耗的應(yīng)用場(chǎng)景,SRAM存儲(chǔ)器也可以采用雙端口寄存器文件,功耗低,訪問(wèn)速度快,可在一個(gè)時(shí)鐘內(nèi)完成讀寫(xiě)操作,在時(shí)鐘的下降沿完成讀操作,上升沿完成寫(xiě)操作。為了加快讀寫(xiě)操作,r存儲(chǔ)器和t存儲(chǔ)器可以同時(shí)執(zhí)行讀操作,寫(xiě)操作可以不在同一個(gè)時(shí)鐘內(nèi)執(zhí)行。此外,在SRAM存儲(chǔ)器不操作器件,可以將其使能信號(hào)關(guān)閉,降低功耗。采用SRAM存儲(chǔ)器的好處在于,不僅可以獲取高速讀寫(xiě)能力,還可以節(jié)省面積,同樣的存儲(chǔ)內(nèi)容,用SRAM存儲(chǔ)器要比普通的寄存器要省一倍以上面積。蒙哥馬利模乘控制器,用于產(chǎn)生地址和控制信號(hào),讀取SRAM存儲(chǔ)器中的數(shù)據(jù)并放入相應(yīng)寄存器中進(jìn)行處理,其內(nèi)設(shè)置有地址產(chǎn)生器、減法器、計(jì)數(shù)器和控制電路;所述地址產(chǎn)生器用于產(chǎn)生狀態(tài)跳轉(zhuǎn)信號(hào)和訪問(wèn)SRAM存儲(chǔ)器的地址信號(hào);減法器用于完成r2=r2_n的減法操作,即實(shí)現(xiàn)實(shí)施例1中S12步驟中的減法操作。計(jì)數(shù)器用于計(jì)算外部循環(huán)次數(shù)i和內(nèi)部循環(huán)次數(shù)j ;控制電路控制循環(huán)的進(jìn)入和退出以及在每個(gè)時(shí)鐘內(nèi),根據(jù)地址產(chǎn)生器產(chǎn)生的地址從SRAM存儲(chǔ)器中取出相應(yīng)數(shù)據(jù)放到臨時(shí)寄存器中,并將中間結(jié)果和多項(xiàng)式臨時(shí)計(jì)算結(jié)果t寫(xiě)回到SRAM存儲(chǔ)器中;臨時(shí)寄存器均為32位,包括七個(gè)寄存器,分別為ti寄存器、xl寄存器、yl寄存器、x2寄存器、y2寄存器、c寄存器和zl寄存器,用于暫存SRAM存儲(chǔ)器讀寫(xiě)數(shù)據(jù)以及多項(xiàng)式乘加器的輸入輸出結(jié)果。臨時(shí)寄存器的增加使得從SRAM存錢(qián)到多項(xiàng)式乘加器的數(shù)據(jù)通路最為便捷。本發(fā)明采用了多個(gè)臨時(shí)寄存器保存中間數(shù)據(jù),寄存器功耗大,為了進(jìn)一步降低功耗,其可以采用圖4所示的門(mén)控時(shí)鐘電路來(lái)降低寄存器的動(dòng)態(tài)功耗,只有觸發(fā)器需要干活時(shí)才給觸發(fā)器時(shí)鐘,否則不給時(shí)鐘;圖4的門(mén)控時(shí)鐘電路包括第一寄存器D1、第二寄存器D2以及與門(mén)Al ;該結(jié)構(gòu)可以由DesignCompiler綜合工具自動(dòng)生成,在信號(hào)高電平期間鎖存器是保持的,在信號(hào)低電平期間鎖存 器是透明的,此時(shí)數(shù)據(jù)可以傳進(jìn)來(lái)。多項(xiàng)式乘加器,用于完成“t+xl*yl+x2*y2+c”計(jì)算,即將xl與r的第i個(gè)字相乘后的結(jié)果和x2與η的第i個(gè)字相乘后的結(jié)果相加,相加結(jié)果再加上c和t的第i+j個(gè)字,最終結(jié)果的低k位賦給t的第i+j個(gè)字,高k位賦給C。此多項(xiàng)式乘加器采用一體化設(shè)計(jì),即用一個(gè)組合邏輯模塊將兩次加法、兩次乘法運(yùn)算做到一起。對(duì)于104為的模乘運(yùn)算來(lái)說(shuō),多項(xiàng)式采用基4的booth編碼原理,共產(chǎn)生36個(gè)部分和,為了最大限度提高性能,本實(shí)施例采用4:2壓縮器逐級(jí)壓縮部分和。如圖2所示,第一級(jí)壓縮需要9組壓縮器,第二級(jí)需要4組壓縮器,第三級(jí)需要2組壓縮器,第四級(jí)需要I級(jí)壓縮器,第五級(jí)需要I級(jí)壓縮器,第六級(jí)采用全加器將剩余的兩組累加起來(lái)并得到最后結(jié)果。多項(xiàng)式乘加器能在一個(gè)時(shí)鐘周期計(jì)算出多項(xiàng)式t+xl*yl+x2*y2+c的結(jié)果,并保存在SRAM存儲(chǔ)器中,算法第9步中的循環(huán),每輪循環(huán)只需要一個(gè)時(shí)鐘,其關(guān)鍵技術(shù)在于,每個(gè)時(shí)鐘的下降沿將SRAM的數(shù)據(jù)讀出到t、xl、yl、x2、y2以及c臨時(shí)寄存器中,在緊接著的上升沿將上一次多項(xiàng)式計(jì)算結(jié)果寫(xiě)回SRAM中,其關(guān)鍵路徑涉及到SRAM讀寫(xiě)時(shí)間、時(shí)鐘延時(shí)、組合邏輯延時(shí)以及多項(xiàng)式乘加器延時(shí),其中延時(shí)最大的是多項(xiàng)式乘加器,圖3所示是本發(fā)明關(guān)鍵路徑圖,總延時(shí)T由以下幾部分組成,D3觸發(fā)器延時(shí)Td3、組合邏輯路徑延時(shí)Tltjgi。、多項(xiàng)式乘加器延時(shí)Tp以及SRAM存儲(chǔ)器延時(shí) ;,用公式表示如下:T=TD3+Tlogic+Tp+Tr其中Tp的延時(shí)是最大的,涉及到兩個(gè)32位并行乘法器的延時(shí)。本發(fā)明通過(guò)優(yōu)化多項(xiàng)式乘加器達(dá)到較高速度;模乘電路所需時(shí)間數(shù)量級(jí)為0(s2),大大節(jié)省操作時(shí)間。如圖5所示是本發(fā)明關(guān)鍵操作時(shí)序圖,elk為系統(tǒng)時(shí)鐘,r0,rl和r2是r存儲(chǔ)器的開(kāi)始三個(gè)存儲(chǔ)數(shù)據(jù),rd_address是r存儲(chǔ)器的讀地址信號(hào),sram_out為r存儲(chǔ)器讀出的數(shù)據(jù),wr_address是r存儲(chǔ)器的寫(xiě)地址,sram_in是r存儲(chǔ)器的寫(xiě)數(shù)據(jù)。從圖中可以看到,經(jīng)過(guò)三個(gè)時(shí)鐘上升沿后,每個(gè)時(shí)鐘都有SRAM寫(xiě)數(shù)據(jù)操作,即用一個(gè)時(shí)鐘實(shí)現(xiàn)了第9步和第10步的算法操作。相同或相似的標(biāo)號(hào)對(duì)應(yīng)相同或相似的部件;附圖中描述位置關(guān)系的用于僅用于示例性說(shuō)明,不能理解為對(duì)本專(zhuān)利的限制;顯然,本發(fā)明的上述實(shí)施例僅僅是為清楚地說(shuō)明本發(fā)明所作的舉例,而并非是對(duì)本發(fā)明的實(shí)施方式的限定。對(duì)于所屬領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在上述說(shuō)明的基礎(chǔ)上還可以做出其它不同形式的變化或變 動(dòng)。這里無(wú)需也無(wú)法對(duì)所有的實(shí)施方式予以窮舉。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種蒙哥馬利模乘方法,其特征在于,模長(zhǎng)度為k,k=sw,其中W為算法每次處理的字長(zhǎng)大小,S為算法for循環(huán)所需的次數(shù);輸入?yún)?shù)包括a、b和模數(shù)n,r為一存儲(chǔ)器,r的高k位為存放輸入?yún)?shù)a和輸出結(jié)果的r2,r的低k位為存放輸入?yún)?shù)b的rl,t為多項(xiàng)式臨時(shí)計(jì)算結(jié)果,r32、zl、c、Xl、X2、nO’為中間變量,i和j為循環(huán)變量,其運(yùn)算步驟為:計(jì)算 r2=MonPro (a, b, n) =a*b*2-k mod n ; 將t和i賦零值; 將中間變量r32賦值為r的第s個(gè)字,其中,r32表示存儲(chǔ)器r的第32為地址的數(shù)據(jù); 令i為O開(kāi)始外循環(huán); 將t的第i個(gè)字與r32相乘,乘積結(jié)果與t的第i個(gè)字相加,結(jié)果的低k位賦給zl,高k位賦給c ; 接著將zl與nO’相乘,乘積結(jié)果的低k位賦給zl,高k位賦給c,其中,nO'通過(guò)預(yù)先計(jì)算獲取,nO' =-nO_1mod (232), nO是指模數(shù)η的低32位值,η從外部輸入; 令x2=zl ;令xl等于r的第i個(gè)字; 令j為O開(kāi)始內(nèi)循環(huán); 將xl與r的第i個(gè)字相乘后的結(jié)果和x2與η的第i個(gè)字相乘后的結(jié)果相加,相加結(jié)果再加上c和t的第i+j個(gè)字,最終結(jié)果的低k位賦給t的第i+j個(gè)字,高k位賦給c ;并令t的第i+s個(gè)字等于C,然后循環(huán)變量j加1,當(dāng)j小于s時(shí)重復(fù)內(nèi)循環(huán),當(dāng)j大于或者等于s時(shí)退出內(nèi)循環(huán); 循環(huán)變量i加1,當(dāng)i小于s時(shí)重復(fù)外循環(huán),當(dāng)i大于或者等于s時(shí)退出外循環(huán);` 判斷t的高k位是否大于η,若是則將r2=r2-n,否則將t的低k位賦給r2 ; 根據(jù)r2輸出模乘結(jié)果。
2.一種蒙哥馬利模乘電路,其特征在于,蒙哥馬利模乘采用權(quán)利要求1所述的方法實(shí)現(xiàn),所述電路包括依次連接的接口電路、SRAM存儲(chǔ)器、蒙哥馬利模乘控制器、臨時(shí)寄存器和多項(xiàng)式乘加器; 接口電路與外部總線連接,將輸入?yún)?shù)a、b寫(xiě)進(jìn)SRAM存儲(chǔ)器的r存儲(chǔ)器中,并將計(jì)算完畢后的輸出結(jié)果讀出; SRAM存儲(chǔ)器包括r存儲(chǔ)器和t存儲(chǔ)器,用于存儲(chǔ)輸入?yún)?shù)a、輸入?yún)?shù)b、中間處理數(shù)據(jù)以及最終計(jì)算結(jié)果; 蒙哥馬利模乘控制器,用于產(chǎn)生地址和控制信號(hào)、讀取SRAM存儲(chǔ)器中的數(shù)據(jù)并放入相應(yīng)寄存器中進(jìn)行處理,其內(nèi)設(shè)置有地址產(chǎn)生器、減法器、計(jì)數(shù)器和控制電路; 所述地址產(chǎn)生器用于產(chǎn)生狀態(tài)跳轉(zhuǎn)信號(hào)和訪問(wèn)SRAM存儲(chǔ)器的地址信號(hào); 減法器用于完成r2=r2-n的減法操作; 計(jì)數(shù)器用于計(jì)算外部循環(huán)次數(shù)i和內(nèi)部循環(huán)次數(shù)j ; 控制電路控制循環(huán)的進(jìn)入和退出以及在每個(gè)時(shí)鐘內(nèi),根據(jù)地址產(chǎn)生器產(chǎn)生的地址從SRAM存儲(chǔ)器中取出相應(yīng)數(shù)據(jù)放到臨時(shí)寄存器中,并將中間結(jié)果和多項(xiàng)式臨時(shí)計(jì)算結(jié)果t寫(xiě)回到SRAM存儲(chǔ)器中; 臨時(shí)寄存器用于暫存SRAM存儲(chǔ)器讀寫(xiě)數(shù)據(jù)以及多項(xiàng)式乘加器的輸入輸出結(jié)果;多項(xiàng)式乘加器,用于完成如下計(jì)算:將xl與r的第i個(gè)字相乘后的結(jié)果和x2與η的第i個(gè)字相乘后的結(jié)果相加,相加結(jié)果再加上c和t的第i+j個(gè)字,最終結(jié)果的低k位賦給t的第i+j個(gè)字,高k位賦給c。
3.根據(jù)權(quán)利要求2所述的蒙哥馬利模乘電路,其特征在于,所述臨時(shí)寄存器中包括七個(gè)寄存器:ti寄存器、xl寄存器、yl寄存器、x2寄存器、y2寄存器、c寄存器和zl寄存器。
4.根據(jù)權(quán)利要求2所述的蒙哥馬利模乘電路,其特征在于,所述SRAM存儲(chǔ)器為雙端口SRAM存儲(chǔ)器,其在時(shí)鐘的下降沿完成讀操作,在時(shí)鐘的上升沿完成寫(xiě)操作。
5.根據(jù)權(quán)利要求2所述的蒙哥馬利模乘電路,其特征在于,所述SRAM存儲(chǔ)器為雙端口寄存器文件,其在時(shí)鐘的下降沿完成讀操作,在時(shí)鐘的上升沿完成寫(xiě)操作。
6.根據(jù)權(quán)利要求2所述的蒙哥馬利模乘電路,其特征在于,多項(xiàng)式乘加器對(duì)多項(xiàng)式采用基4的Booth編碼,其產(chǎn) 生的部分和利用4:2壓縮器逐級(jí)壓縮。
全文摘要
本發(fā)明涉及一種蒙哥馬利模乘方法及其電路。方法中,模長(zhǎng)度k=sw,w為算法每次處理的字長(zhǎng)大小,s為算法for循環(huán)所需的次數(shù);輸入?yún)?shù)包括a、b和模數(shù)n,r為存儲(chǔ)器,其高k位為存放輸入?yún)?shù)a和輸出結(jié)果的r2,低k位為存放輸入?yún)?shù)b的r1;t為多項(xiàng)式臨時(shí)計(jì)算結(jié)果,其余為中間變量,運(yùn)算步驟為計(jì)算r2=MonPro(a,b,n)=a*b*2-k mod n;將t和i賦零值;r32=r[i];令i為0開(kāi)始外循環(huán);計(jì)算(c,z1)=t[i]+r[i]*r32;(c,z1)=z1*n0';x2=z1;x1=r[i];令j為0開(kāi)始內(nèi)循環(huán);計(jì)算(c,t[i+j])=t[i+j]+x1*r[i]+x2*n[i]+c;t[i+s]=c;變量j加1,當(dāng)j小于s時(shí)重復(fù)內(nèi)循環(huán),否則退出內(nèi)循環(huán);變量i加1,當(dāng)i小于s時(shí)重復(fù)外循環(huán),否則退出外循環(huán);判斷t的高k位是否大于n,若是則將r2=r2-n,否則將t的低k位賦給r2;根據(jù)r2輸出模乘結(jié)果。本發(fā)明能提高算法的運(yùn)算速度和降低功耗。
文檔編號(hào)G06F7/72GK103226461SQ20131010094
公開(kāi)日2013年7月31日 申請(qǐng)日期2013年3月26日 優(yōu)先權(quán)日2013年3月26日
發(fā)明者王德明, 丁顏玉, 丁一, 路崇, 段志奎, 譚洪舟 申請(qǐng)人:中山大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
丽水市| 固原市| 水城县| 克拉玛依市| 尚义县| 新昌县| 泾川县| 漳浦县| 陕西省| 广宁县| 泌阳县| 北碚区| 慈溪市| 甘泉县| 隆昌县| 陵水| 滨海县| 镇巴县| 黑河市| 繁峙县| 绥宁县| 邹城市| 台中县| 齐齐哈尔市| 米泉市| 蒙山县| 湛江市| 甘洛县| 临邑县| 温泉县| 保康县| 双鸭山市| 澜沧| 阜南县| 独山县| 汪清县| 宁蒗| 宜丰县| 白城市| 抚宁县| 山丹县|