模逆運(yùn)算器的制造方法
【專利摘要】一種模逆運(yùn)算器,用于計(jì)算Z=Y(jié)-1mod X,包括:控制器、移位器、加減法運(yùn)算器以及存儲(chǔ)器,其中:存儲(chǔ)器適于存儲(chǔ)第一操作數(shù)X、第二操作數(shù)Y、第一變量R以及第二變量S;移位器,位寬與M相等,適于以M為單位將X與Y進(jìn)行移位操作;加減法運(yùn)算器,位寬與M相等,適于對(duì)X中的M位數(shù)據(jù)與Y中的M位數(shù)據(jù)進(jìn)行運(yùn)算;控制器,包括適于緩存并更新X對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Xlen、Y對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Ylen的寄存器,控制器以M為單位從所述存儲(chǔ)器中讀取X以及Y,控制加減法運(yùn)算器對(duì)X中的M位數(shù)據(jù)與Y中的M位數(shù)據(jù)進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果存儲(chǔ)至存儲(chǔ)器。采用所述模逆運(yùn)算器,可以避免模逆運(yùn)算參數(shù)過(guò)長(zhǎng)導(dǎo)致的模逆運(yùn)算器無(wú)法進(jìn)行模逆運(yùn)算的問(wèn)題,擴(kuò)展性較強(qiáng)。
【專利說(shuō)明】X-H- XXL.'一 ? ΠΠ
豐旲逆35昇裔
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及信息安全領(lǐng)域,尤其涉及一種模逆運(yùn)算器。
【背景技術(shù)】
[0002]模逆運(yùn)算廣泛應(yīng)用在公鑰密碼體制中,例如,在RSA算法中的解密密鑰生成時(shí)應(yīng)用到模逆運(yùn)算,模逆運(yùn)算也可以用于橢圓曲線密碼算法中的點(diǎn)加和倍點(diǎn)運(yùn)算。
[0003]目前,求解模逆運(yùn)算的方法主要包括模冪算法、擴(kuò)展歐幾里得算法、二進(jìn)制擴(kuò)展歐幾里得算法等。
[0004]模冪算法以費(fèi)馬小定理為基礎(chǔ),將模逆運(yùn)算轉(zhuǎn)換成模冪運(yùn)算,但是模冪算法無(wú)法確定模逆結(jié)果是否存在。采用模乘器作為硬件運(yùn)算單元,較為復(fù)雜且功耗較大。
[0005]擴(kuò)展歐幾里得算法通過(guò)輾轉(zhuǎn)相除計(jì)算最大公因子求解模逆,當(dāng)最大公因子為非I整數(shù)時(shí)無(wú)法獲取模逆的計(jì)算結(jié)果。采用除法器作為硬件運(yùn)算單元,實(shí)現(xiàn)仍較為復(fù)雜。
[0006]二進(jìn)制擴(kuò)展歐幾里得算法將除法轉(zhuǎn)換成移位和加減法,降低了模逆運(yùn)算器的設(shè)計(jì)復(fù)雜度。但是,在模逆運(yùn)算的參數(shù)的位長(zhǎng)較大時(shí),模逆運(yùn)算器的移位器與加減法運(yùn)算器對(duì)應(yīng)的位寬也要相應(yīng)地增加。模逆運(yùn)算器所能夠進(jìn)行運(yùn)算的數(shù)據(jù)長(zhǎng)度受移位器的位寬及加減法運(yùn)算器的位寬限制。在模逆運(yùn)算的參數(shù)的位長(zhǎng)超出移位器或加減法運(yùn)算器的位寬時(shí),模逆運(yùn)算器無(wú)法進(jìn)行模逆運(yùn)算。
【發(fā)明內(nèi)容】
[0007]本發(fā)明實(shí)施例解決的是避免模逆運(yùn)算參數(shù)過(guò)長(zhǎng)導(dǎo)致的模逆運(yùn)算器無(wú)法進(jìn)行模逆運(yùn)算的問(wèn)題,擴(kuò)展性較強(qiáng)。
[0008]為解決上述問(wèn)題,本發(fā)明實(shí)施例提供一種模逆運(yùn)算器,用于計(jì)算Z = Y 1H1d X,其中Z為所述模逆運(yùn)算的結(jié)果,X為第一操作數(shù),Y為第二操作數(shù),包括:控制器、移位器、加減法運(yùn)算器以及存儲(chǔ)器,其中:
[0009]所述存儲(chǔ)器,適于存儲(chǔ)第一操作數(shù)X、第二操作數(shù)Y、第一變量R以及第二變量S,其中:所述第一操作數(shù)X以及所述第二操作數(shù)Y均以預(yù)設(shè)的位長(zhǎng)M為單位存儲(chǔ)在所述存儲(chǔ)器中,其中,M = NXL,N彡1,L為一個(gè)字的二進(jìn)制長(zhǎng)度;
[0010]所述移位器,位寬與M相等,適于以M為單位讀取所述存儲(chǔ)器中的第一操作數(shù)X與第二操作數(shù)Y,并將第一操作數(shù)X與第二操作數(shù)Y進(jìn)行移位操作;
[0011 ] 所述加減法運(yùn)算器,位寬與M相等,適于對(duì)第一操作數(shù)X中的M位數(shù)據(jù)與第二操作數(shù)Y中的M位數(shù)據(jù)進(jìn)行運(yùn)算;
[0012]控制器,包括寄存器,所述寄存器適于緩存并更新所述第一操作數(shù)X對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen、所述第二操作數(shù)Y對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen,所述控制器以M為單位從所述存儲(chǔ)器中讀取所述第一操作數(shù)X以及所述第二操作數(shù)Y,控制所述加減法運(yùn)算器對(duì)第一操作數(shù)X中的M位數(shù)據(jù)與第二操作數(shù)Y中的M位數(shù)據(jù)進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果存儲(chǔ)至所述存儲(chǔ)器。
[0013]可選的,所述N= I。
[0014]可選的,所述加減法運(yùn)算器適于從第一操作數(shù)X中選取一字節(jié)長(zhǎng)度的連續(xù)數(shù)據(jù)與第二操作數(shù)Y中選取的對(duì)應(yīng)的一字節(jié)長(zhǎng)度的連續(xù)數(shù)據(jù)進(jìn)行運(yùn)算,在運(yùn)算結(jié)果出現(xiàn)進(jìn)位或借位時(shí),將當(dāng)前輸出的進(jìn)位或借位作為下一字節(jié)數(shù)據(jù)的進(jìn)位或借位的輸入。
[0015]可選的,在Hen不能被M整除時(shí),將所述第一操作數(shù)X高位補(bǔ)符號(hào)位,將所述第一操作數(shù)X的位長(zhǎng)Hen擴(kuò)展至被M整除;在Hen不能被M整除時(shí),將所述第二操作數(shù)Y高位補(bǔ)符號(hào)位,將所述第二操作數(shù)Y的位長(zhǎng)Hen擴(kuò)展至被M整除。
[0016]與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例的技術(shù)方案具有以下優(yōu)點(diǎn):
[0017]移位器在對(duì)X或Y進(jìn)行移位操作時(shí),以M為單位讀取X或Y的數(shù)據(jù)進(jìn)行移位操作;加減法運(yùn)算器在對(duì)X與Y進(jìn)行加減法運(yùn)算時(shí),以M為單位將X中的M個(gè)數(shù)據(jù)與Y中的M個(gè)數(shù)據(jù)進(jìn)行加減法運(yùn)算。也就是說(shuō),在整個(gè)模逆運(yùn)算的過(guò)程中,移位器和加減法運(yùn)算器均是以M為單位進(jìn)行運(yùn)算,即移位器和加減法運(yùn)算器的位寬僅為M即可實(shí)現(xiàn)對(duì)較長(zhǎng)的X和Y進(jìn)行運(yùn)算,從而可以避免模逆運(yùn)算參數(shù)過(guò)長(zhǎng)導(dǎo)致的模逆運(yùn)算器無(wú)法進(jìn)行模逆運(yùn)算的問(wèn)題,擴(kuò)展性較高。
【附圖說(shuō)明】
[0018]圖1是本發(fā)明實(shí)施例中的一種模逆運(yùn)算器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0019]現(xiàn)有的二進(jìn)制擴(kuò)展歐幾里得算法將除法轉(zhuǎn)換成移位和加減法,降低了模逆運(yùn)算器的設(shè)計(jì)復(fù)雜度,但是,在模逆運(yùn)算的參數(shù)的位長(zhǎng)較大時(shí),二進(jìn)制擴(kuò)展歐幾里得模逆運(yùn)算器的移位器與加減法運(yùn)算器對(duì)應(yīng)的位寬也要相應(yīng)地增加。模逆運(yùn)算器所能夠進(jìn)行運(yùn)算的數(shù)據(jù)長(zhǎng)度受移位器的位寬及加減法運(yùn)算器的位寬限制。在模逆運(yùn)算的參數(shù)的位長(zhǎng)超出移位器或加減法運(yùn)算器的位寬時(shí),模逆運(yùn)算器無(wú)法進(jìn)行模逆運(yùn)算。
[0020]在本發(fā)明實(shí)施例中,移位器在對(duì)X或Y進(jìn)行移位操作時(shí),以M為單位讀取X或Y的數(shù)據(jù)進(jìn)行以為操作;加減法運(yùn)算器在對(duì)X與Y進(jìn)行加減法運(yùn)算時(shí),以M為單位將X中的M個(gè)數(shù)據(jù)與Y中的M個(gè)數(shù)據(jù)進(jìn)行加減法運(yùn)算。也就是說(shuō),在整個(gè)模逆運(yùn)算的過(guò)程中,移位器和加減法運(yùn)算器均是以M為單位進(jìn)行運(yùn)算,即移位器和加減法運(yùn)算器的位寬僅為M即可實(shí)現(xiàn)對(duì)較長(zhǎng)的X和Y進(jìn)行運(yùn)算,從而可以避免模逆運(yùn)算參數(shù)過(guò)長(zhǎng)導(dǎo)致的模逆運(yùn)算器無(wú)法進(jìn)行模逆運(yùn)算的問(wèn)題,擴(kuò)展性較高。
[0021]為使本發(fā)明實(shí)施例的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施例做詳細(xì)的說(shuō)明。
[0022]參照?qǐng)D1,本發(fā)明實(shí)施例提供了一種模逆運(yùn)算器,用于計(jì)算Z = Y 1H1d X,其中Z為所述模逆運(yùn)算的結(jié)果,X為第一操作數(shù),Y為第二操作數(shù),包括:存儲(chǔ)器101、移位器102、加減法運(yùn)算器103以及控制器104,其中:
[0023]存儲(chǔ)器101,適于存儲(chǔ)模逆運(yùn)算中的第一操作數(shù)X、第二操作數(shù)Y,以及預(yù)設(shè)的第一變量R和第二變量S。
[0024]在具體實(shí)施中,可以將第一操作數(shù)X與第二操作數(shù)Y分別以預(yù)設(shè)的位長(zhǎng)M為單位分段存儲(chǔ)在存儲(chǔ)器101中。在本發(fā)明實(shí)施例中,M可以為一個(gè)字的二進(jìn)制長(zhǎng)度的整數(shù)倍,SPM = NXL, L為一個(gè)字的二進(jìn)制長(zhǎng)度??梢岳斫獾氖牵琈也可以等于一個(gè)字的二進(jìn)制長(zhǎng)度的非整數(shù)倍,M可以根據(jù)實(shí)際的應(yīng)用場(chǎng)景選取。
[0025]例如,M的值可以為16,即:將第一操作數(shù)X與第二操作數(shù)均以位長(zhǎng)為16為單位,劃分成多個(gè)數(shù)據(jù)段并存儲(chǔ)在存儲(chǔ)器101中。又如,M的值可以為24,M的值也可以為32或其他值,此處不做贅述。
[0026]在實(shí)際應(yīng)用中,在將第一操作數(shù)X以位長(zhǎng)為M劃分成多個(gè)數(shù)據(jù)段并存儲(chǔ)在存儲(chǔ)器101中時(shí),存在第一操作數(shù)X無(wú)法被M整除的情況。在本發(fā)明一實(shí)施例中,針對(duì)上述情況,對(duì)第一操作數(shù)X進(jìn)行擴(kuò)展,具體為:在第一操作數(shù)X的最高位處補(bǔ)符號(hào)位,使得經(jīng)過(guò)擴(kuò)展的第一操作數(shù)X的位長(zhǎng)被M整除。
[0027]相應(yīng)地,在將第二操作數(shù)Y以位長(zhǎng)為M劃分成多個(gè)數(shù)據(jù)段并存儲(chǔ)在存儲(chǔ)器101中時(shí),存在第二操作數(shù)Y無(wú)法被M整除的情況。在本發(fā)明一實(shí)施例中,針對(duì)上述情況,對(duì)第二操作數(shù)Y進(jìn)行擴(kuò)展,具體為:在第二操作數(shù)Y的最高位處補(bǔ)符號(hào)位,使得經(jīng)過(guò)擴(kuò)展的第二操作數(shù)Y的位長(zhǎng)被M整除。
[0028]例如,第一操作數(shù)X 為 1010101101100011100110011001,M = 16,X 的位長(zhǎng)為 28,無(wú)法被M= 16整除,因此,將第一操作數(shù)X擴(kuò)展為00001010101101100011100110011001,擴(kuò)展后的X的位長(zhǎng)為32,則第一操作數(shù)X在存儲(chǔ)器101中的存儲(chǔ)方式為:0000101010110110,
0011100110011001ο
[0029]移位器102,位寬與M相等,以M為單位從存儲(chǔ)器101中讀取第一操作數(shù)X與第二操作數(shù)Y,對(duì)第一操作數(shù)X與第二操作數(shù)Y進(jìn)行移位操作。
[0030]在本發(fā)明實(shí)施例中,移位器102的位寬可以與M相等。由于第一操作數(shù)X與第二操作數(shù)Y均以M為單位存儲(chǔ)在存儲(chǔ)器101中,因此移位器102可以一次從存儲(chǔ)器101中讀取M位數(shù)據(jù)。在進(jìn)行左移時(shí),例如,將第一操作數(shù)X左移NI位,移位器102讀取第一操作數(shù)X的最低數(shù)據(jù)段,將最低數(shù)據(jù)段低位補(bǔ)NI位0,高位的NI位數(shù)據(jù)補(bǔ)到其左邊數(shù)據(jù)段作為低位,最高數(shù)據(jù)段的高NI位舍棄,得到左移NI位的操作數(shù)X。
[0031]例如,第一操作數(shù)X在存儲(chǔ)器101中的存儲(chǔ)方式為:0000101010110110,0011100110011001ο控制器104向移位器102發(fā)送將第一操作數(shù)X左移4位的操作指令。移位器102接收到左移操作指令后,將最低16位數(shù)據(jù)左移4位,得到1001100110010000,0011與高位數(shù)據(jù)段進(jìn)行結(jié)合,最高4位0000舍棄,得到左移4位的第一操作數(shù)X為:10101011011000111001100110010000。
[0032]加減法運(yùn)算器103,位寬與M相等,以M為單位從存儲(chǔ)器101中讀取第一操作數(shù)X與第二操作數(shù)Y,并對(duì)讀取出的第一操作數(shù)X中的M位數(shù)據(jù)與第二操作數(shù)Y中的M位數(shù)據(jù)進(jìn)行加法運(yùn)算或減法運(yùn)算。
[0033]在本發(fā)明實(shí)施例中,需要注意的是,加減法運(yùn)算器103在對(duì)第一操作數(shù)X與第二操作數(shù)Y進(jìn)行加法運(yùn)算時(shí),例如,將第一操作數(shù)X與第二操作數(shù)Y相加,先按照預(yù)先設(shè)定的加法規(guī)則將第一操作數(shù)X與第二操作數(shù)Y高位對(duì)齊或低位對(duì)齊。將第一操作數(shù)X與第二操作數(shù)Y對(duì)齊部分的最低M位數(shù)據(jù)進(jìn)行相加,在進(jìn)行相加的過(guò)程中產(chǎn)生進(jìn)位時(shí),將產(chǎn)生的進(jìn)位作為相鄰高位M位數(shù)據(jù)加法運(yùn)算的進(jìn)位輸入。
[0034]加減法運(yùn)算器103在對(duì)第一操作數(shù)X與第二操作數(shù)Y進(jìn)行減法運(yùn)算時(shí),例如,將第一操作數(shù)與第二操作數(shù)Y相減,先按照預(yù)先設(shè)定的減法規(guī)則將第一操作數(shù)X與第二操作數(shù)Y高位對(duì)齊或低位對(duì)齊。將第一操作數(shù)X與第二操作數(shù)Y對(duì)齊部分的最低M位數(shù)據(jù)進(jìn)行相減,在進(jìn)行相減的過(guò)程中產(chǎn)生借位時(shí),將產(chǎn)生的借位作為相鄰高位M位數(shù)據(jù)減法運(yùn)算的借位輸入。
[0035]例如,在M = L時(shí),即M的長(zhǎng)度為一個(gè)字的位長(zhǎng)時(shí),M = 16。X為位長(zhǎng)為128位,Y的位長(zhǎng)為64位,加減法運(yùn)算器103將第一操作數(shù)X與第二操作數(shù)Y高位對(duì)齊相加,即第一操作數(shù)X和第二操作數(shù)Y之間高位對(duì)齊部分的位長(zhǎng)為64位。選取第一操作數(shù)X的第65?80位與第二操作數(shù)Y的第I?16位進(jìn)行加法運(yùn)算,在產(chǎn)生進(jìn)位時(shí),將進(jìn)位作為第一操作數(shù)第81?96位與第二操作數(shù)第17?32位相減運(yùn)算時(shí)的進(jìn)位輸入。
[0036]相類似的,第一操作數(shù)X與第二操作數(shù)Y之間的相減運(yùn)算的過(guò)程可以參照上述示例,此處不做贅述。
[0037]控制器104,以M為單位從存儲(chǔ)器101中以M為單位從讀取第一操作數(shù)X以及第二操作數(shù)Y,控制移位器102將第一操作數(shù)X或第二操作數(shù)Y進(jìn)行移位操作,控制加減法運(yùn)算器103對(duì)第一操作數(shù)X中選取的M位數(shù)據(jù)與第二操作數(shù)Y中選取的對(duì)應(yīng)的M位數(shù)據(jù)進(jìn)行加減法運(yùn)算,并將加減法運(yùn)算器103得到的運(yùn)算結(jié)果存儲(chǔ)至存儲(chǔ)器101。
[0038]在本發(fā)明實(shí)施例中,控制器104中可以設(shè)置有寄存器??梢酝ㄟ^(guò)寄存器緩存第一操作數(shù)X對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen以及第二操作數(shù)Y對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen。在模逆運(yùn)算的過(guò)程中,當(dāng)Hen或Hen發(fā)送改變時(shí),寄存器將存儲(chǔ)的Hen或Hen更新為更改以后的Xlen 或 Ylen0
[0039]在本發(fā)明實(shí)施例中,采用上述模逆運(yùn)算器計(jì)算Z = Y 1H1d X時(shí),可以通過(guò)采用將第一操作數(shù)X與第二操作數(shù)Y左移之后進(jìn)行運(yùn)算來(lái)實(shí)現(xiàn),也可以通過(guò)采用將第一操作數(shù)X與第二操作數(shù)Y右移之后進(jìn)行運(yùn)算來(lái)實(shí)現(xiàn)。
[0040]下面分別對(duì)采用左移算法進(jìn)行模逆運(yùn)算以及采用右移算法進(jìn)行模逆運(yùn)算進(jìn)行說(shuō)明。
[0041]1、米用右移算法進(jìn)彳丁模逆運(yùn)算。
[0042]首先,對(duì)采用右移算法進(jìn)行模逆運(yùn)算的基本原理進(jìn)行說(shuō)明。
[0043]第一操作數(shù)X的位長(zhǎng)為Xlen,第二操作數(shù)Y的位長(zhǎng)為Ylen,設(shè)定第一變量R = 0,以及第二變量S = 10
[0044](1.1)在Xlen彡Hen時(shí),計(jì)算X模Y。將Y右移nl位至最低位為I,將第二變量S更新為S = S/2n1。將X右移ml位至最低位為1,將第一變量R更新為R = R/2m1。
[0045]在X為正數(shù)時(shí),將X與Y低位對(duì)齊做減法,將得到的差值作為更新后的X值,并將Xlen更新為Hen = Xlen-mlo將第一變量R與第二變量S低位對(duì)齊做加法,得到的和值作為更新后的第一變量R。
[0046]在X為負(fù)數(shù)時(shí),將X與Y低位對(duì)齊做加法,將得到的和值作為更新后的X值,并將Xlen更新為Hen = Xlen-mlo將第一變量R與第二變量S低位對(duì)齊做減法,得到的差值作為更新后的第一變量R。
[0047](1.2)在Hen彡Xlen時(shí),計(jì)算Y模X。將X右移m2位至最低位為I,將第一變量R更新為R = R/2m2。將Y右移n2位至最低位為1,將第二變量S更新為S = S/2n2。
[0048]在Y為正數(shù)時(shí),將Y與X低位對(duì)齊做減法,將得到的差值作為更新后的Y值,并將Ylen更新為Hen = Ylen-n20將第二變量S與第一變量R低位對(duì)齊做加法,得到的和值作為更新后的第二變量S。
[0049]在Y為負(fù)數(shù)時(shí),將Y與X低位對(duì)齊做加法,將得到的和值作為更新后的Y值,并將Ylen更新為Hen = Ylen-n20將第二變量S與第一變量R低位對(duì)齊做減法,得到的差值作為更新后的第二變量S。
[0050]重復(fù)上述步驟(1.1)和步驟(1.2),直至更新后的X = O或更新后的Y = O時(shí),停止模逆運(yùn)算。
[0051]在更新后的X = O且更新后的Y = I時(shí),模逆運(yùn)算的結(jié)果為更新后的第二變量S ;在更新后的X = I且更新后的Y = O時(shí),模逆運(yùn)算的結(jié)果為X的初始值與更新后的第一變量R之差;在更新后的X與更新后的Y其中之一等于O而另一個(gè)不等于I時(shí),所述模逆運(yùn)算的結(jié)果不存在。
[0052]下面以X= 17,Y= 13為例。分別將X和Y轉(zhuǎn)換成對(duì)應(yīng)的二進(jìn)制數(shù),則X= 10001,Y= IlOlo初始化第一變量R = 0,第二變量S = 1,初始的)(len = 5,Ylen = 4。
[0053]X的最低位為1,Y的最低位為1,即X和Y均無(wú)需進(jìn)行右移操作,ml = 0,nl = O。Xlen > Ylen, X與Y均為整數(shù),將X和Y低位對(duì)齊做減法,得到的差值作為更新后的X值,即 X = X-Y = 10001-1101 = OOlOOo Xlen 更新為 Xlen = Xlen-ml = 5。去除更新后的 X的符號(hào)位,則X = 100,對(duì)應(yīng)的,Xlen更新為)(len = 3。
[0054]由于ml = 0,nl = 0,因此,更新后的S = S/2n1= 1,更新后的R = R/2 m1= O。將R與S低位對(duì)齊相加,得到的和值作為更新后的R。更新后的R = R+S = 0+1 = I。
[0055]更新后X的位長(zhǎng)Xlen = 3,Ylen = 4,即Hen > Xlen0將X右移m2位至最低位為1,由于更新后的X = 100,則X的右移位數(shù)m2 = 2。有上一步驟可知,當(dāng)前R = I。X右移2位后,對(duì)R進(jìn)行更新,更新后的R = R/22。由于R = 1,除2除不盡,加上模值除以2,R=(1+10001)/2 = 1001,R = (1001+10001)/2 = 1101,即為更新后的 R0
[0056]Y的最低位為1,因此Y右移位數(shù)n2 = O。X、Y均為正數(shù),將Y與X低位對(duì)齊做減法,得到更新后的Y,更新后的Y = Y-X= 1101-1 = IlOOo將X右移2位時(shí)更新的R與S低位對(duì)齊相加,得到更新后的S = S+R = 1+1101 = 1110。
[0057]更新后的Y= 1100,將Y右移n2位至最低位為1,η2 = 2,得到右移后的Y = 11。更新后的S = S/22,S= 1110,最低位為0,因此除以2可以除盡,S = S/2= 111。最低位為1,除2除不盡,加上模值除以2,則更新后的S = (S+1000D/2 = 1100。
[0058]Y位長(zhǎng)大于X位長(zhǎng),且X、Y均為正數(shù),將Y與X低位對(duì)齊做減法,更新后的Y = Y-X=11-1 = 10,更新后的 S = S+R = 1100+1101 = 10001。
[0059]更新后的Y的最低位為0,將Y右移η2位至最低位為1,η2 = I,得到右移后的Y=1。Y 右移后,S 更新為 S= (10001+10001)/2 = 100lo
[0060]右移后Y= LX = I,二者位長(zhǎng)相等,且X、Y均為正數(shù),將Y與X低位對(duì)齊相減,得到更新后的 Y = Y-X= 1-1 = Oo 更新后的 S = S+R = 10001+1101 = 11110。
[0061]由于更新后的Y = O,上述模逆運(yùn)算的計(jì)算過(guò)程結(jié)束,此時(shí)更新后的X = 1,更新后的Y = 0,模逆運(yùn)算結(jié)果存在。模逆運(yùn)算結(jié)果等于X的初始值與更新后的R之差,即模逆運(yùn)算結(jié)果Z = 10001-1101 = 100,轉(zhuǎn)換成十進(jìn)制數(shù)即Z = 4。
[0062]本發(fā)明上述實(shí)施例中提供的右移算法的距離僅為說(shuō)明如何具體地采用右移算法計(jì)算模逆運(yùn)算。在第一操作數(shù)X和第二操作數(shù)Y的位長(zhǎng)較大時(shí),也可以采用本發(fā)明上述實(shí)施例中提供的右移算法,此處不做贅述。
[0063]結(jié)合本發(fā)明上述實(shí)施例中提供的模逆運(yùn)算器,以及采用右移算法進(jìn)行模逆運(yùn)算,以下對(duì)本發(fā)明實(shí)施例中提供的模逆運(yùn)算器在進(jìn)行右移操作時(shí)的執(zhí)行過(guò)程進(jìn)行說(shuō)明。
[0064]控制器104包括寄存器,在寄存器中存儲(chǔ)并更新X對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen和Y對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen,當(dāng)Xlen彡Ylen時(shí),計(jì)算X模Y ;當(dāng)Hen彡Xlen時(shí),計(jì)算Y模X。X和Y、R和S均以字為單位存儲(chǔ)在存儲(chǔ)器101中。
[0065]以計(jì)算X模Y為例進(jìn)行說(shuō)明。
[0066]首先,將操作數(shù)Y右移至最低位為1:從存儲(chǔ)器101中讀取Y最低字,判斷出Y的右移位數(shù),按照從低位到高位的順序依次從存儲(chǔ)器101中讀取Y的所有字,送入移位器102中進(jìn)行移位,并將移位結(jié)果存儲(chǔ)至存儲(chǔ)器101。
[0067]然后,從存儲(chǔ)器101中讀取X最低字,根據(jù)X與Y的位長(zhǎng)、X的符號(hào)位以及X的最低字判斷X的右移位數(shù)和操作,包括:
[0068](1.3) tailIen = wordlen,tailIen 表示為 X 最低字后綴 O 的個(gè)數(shù),wordlen 表示為字長(zhǎng)。
[0069]Xlen-Ylen彡taillen時(shí),以字為單位按照從低位到高位的順序依次從存儲(chǔ)器101中讀取X,送入移位器102中,以shiftsize = taillen位進(jìn)行右移,移位結(jié)果寫入到存儲(chǔ)器101中作為更新后的X,再?gòu)拇鎯?chǔ)器101中讀取更新后的X的最低字進(jìn)行判斷,以獲取X的右移位數(shù)。
[0070]X為正數(shù),且Xlen-Ylen < taillen時(shí),X模Y計(jì)算過(guò)程結(jié)束,進(jìn)入Y模X計(jì)算,X右移位數(shù) shiftsize = taillen。
[0071]X 為負(fù)數(shù),且 Xlen-Ylen < taillen 時(shí),X 右移位數(shù) shiftsize = Xlen-Ylenj^S移后的X與右移后的Y低位對(duì)齊做加法。
[0072](1.4) taillen < wordlen0
[0073]在X 為正數(shù),且 Xlen-Ylen ^ taillen 時(shí),X 右移位數(shù) shiftsize = taillen,將右移后的X與右移后的Y低位對(duì)齊做減法;
[0074]在X 為負(fù)數(shù),且 Xlen-Ylen ^ taillen 時(shí),X 右移位數(shù) shiftsize = taillen,將右移后的X與右移后的Y低位對(duì)齊做加法;
[0075]在X為正數(shù),且Xlen-Ylen < taillen時(shí),X模Y計(jì)算過(guò)程結(jié)束,進(jìn)入Y模X計(jì)算,X 右移位數(shù) shiftsize = taillen ;
[0076]在X 為負(fù)數(shù),且 Xlen-Ylen < taillen 時(shí),X 右移位數(shù) shiftsize = Xlen-Ylen,將右移后的X與右移后的Y低位對(duì)齊做加法。
[0077]在X與Y進(jìn)行加法運(yùn)算或減法運(yùn)算時(shí),以字為單位從存儲(chǔ)器101中讀取右移后的X和右移后的Y,移位后X多出移位后Y的高位結(jié)果直接寫入到存儲(chǔ)器101,移位后的X與Y字長(zhǎng)相等的低位部分送入加減法運(yùn)算器103,進(jìn)行相應(yīng)的加法運(yùn)算或減法運(yùn)算,并將低位運(yùn)算結(jié)果存儲(chǔ)至存儲(chǔ)器101。將右移后的X的高位結(jié)果與低位運(yùn)算結(jié)果合并,即可得到更新后的X。
[0078]可以理解的是,在實(shí)際應(yīng)用中,還存在X的字長(zhǎng)與Y字長(zhǎng)相等的情況,此時(shí),更新后的X為加法運(yùn)算或減法運(yùn)算的結(jié)果。在計(jì)算完成后,可以將Hen更新為)(len =Xlen-shiftsize0
[0079]R更新為R/2shlftslze,在控制器104中設(shè)置計(jì)數(shù)器cnt = shiftsize。從存儲(chǔ)器101中讀取R的最低字,在最低字的最低位為O時(shí),以字為單位按照從低位到高位的順序從存儲(chǔ)器101中讀取R,送入移位器102中右移I位,移位結(jié)果寫入存儲(chǔ)器101中作為新的R值,計(jì)數(shù)器cnt更新為cnt = cnt-lo在最低字的最低位為I時(shí),以字為單位按照從低位到高位的順序從存儲(chǔ)器101中讀取R和X的初始值,送入加減法運(yùn)算器103進(jìn)行加法運(yùn)算。將加法運(yùn)算的結(jié)果送入至移位器102中右移I位,移位結(jié)果寫入存儲(chǔ)器101中作為新的R值,計(jì)數(shù)器cnt更新為cnt = cnt-lo經(jīng)過(guò)shiftsize次運(yùn)算之后,得到R/2shlftslze,即為最終的R0
[0080]將R和S進(jìn)行相關(guān)計(jì)算。以字為單位按照從低位到高位的順序依次從存儲(chǔ)器101中讀取R和S并送入至加減法運(yùn)算器103,將二者低位對(duì)齊進(jìn)行相應(yīng)的加減法運(yùn)算,將得到的和值作為更新后的R。
[0081]在計(jì)算過(guò)程中,X為位長(zhǎng)Hen不斷減小,直至求得X模Y。Y模X可以采用本發(fā)明上述實(shí)施例中相同的運(yùn)算方法。經(jīng)過(guò)若干次運(yùn)算結(jié)果之后,X和Y中的其中一個(gè)值更新為O。
[0082]在更新后的X = O且更新后的Y = I時(shí),模逆運(yùn)算的結(jié)果為更新后的第二變量S ;在更新后的X = I且更新后的Y = O時(shí),模逆運(yùn)算的結(jié)果為X的初始值與更新后的第一變量R之差;在更新后的X與更新后的Y其中之一等于O而另一個(gè)不等于I時(shí),所述模逆運(yùn)算的結(jié)果不存在。
[0083]2、米用左移算法進(jìn)彳丁模逆運(yùn)算
[0084]首先,對(duì)采用左移算法進(jìn)行模逆運(yùn)算的基本原理進(jìn)行說(shuō)明。
[0085]第一操作數(shù)X的位長(zhǎng)為Xlen,第二操作數(shù)Y的位長(zhǎng)為Ylen,設(shè)定第一變量R,以及第二變量S。
[0086](2.1)在 Xlen 彡 Ylen 時(shí),計(jì)算 X 模 Y。
[0087]在X為正數(shù)時(shí),將X左移NI位至最高位為1,X的低位補(bǔ)NI位無(wú)效O ;將左移后的X與Y高位對(duì)齊相減,將得到的差值的后NI位去除,得到的結(jié)果作為更新后的X ;將第一變量R與左移OClen-Ylen)位的第二變量S低位對(duì)齊相加,并將得到的和值作為更新后的第一變量R。
[0088]在本發(fā)明實(shí)施例中,需要注意的是,在NI大于Hen-Ylen時(shí),X左移NI位后的值小于Y,X模Y計(jì)算結(jié)束,若X = O,計(jì)算結(jié)束,若X>0,進(jìn)行Y模X計(jì)算。
[0089]在X為負(fù)數(shù)時(shí),將X左移N2位,X的低位補(bǔ)N2位無(wú)效O ;將左移后的X與Y高位對(duì)齊相加,將得到的和值的后N2位去除,得到的結(jié)果作為更新后的X ;將第一變量R與左移(Xlen-Ylen)位的第二變量S低位對(duì)齊相減,并將得到的和值作為更新后的第一變量R。其中,N2為:X最高位的O前的符號(hào)位的個(gè)數(shù)N3與(Xlen-Ylen)之間的最小值。
[0090](2.2)在 Hen 彡 Xlen 時(shí),計(jì)算 Y 模 X。
[0091 ] 在Y為正數(shù)時(shí),將Y左移Ml位至最高位為I,低位補(bǔ)Ml位無(wú)效0,將左移后的Y與X高位對(duì)齊相減,將差值的后Ml位去除,作為更新后的Y ;將第二變量S與左移(Hen-Xlen)位的第一變量R低位對(duì)齊相加,并將得到的和值作為更新后的第二變量S。
[0092]在Y為負(fù)數(shù)時(shí),將Y左移M2位,低位補(bǔ)M2位無(wú)效0,將左移后的Y與X高位對(duì)齊相加,將得到的和值的后M2位去除,作為更新后的Y ;將第二變量S與左移(Hen-Xlen)位的第一變量R低位對(duì)齊相減,得到的差值作為更新后的第二變量S ;其中,M2為:Y最高位的O前的符號(hào)位的個(gè)數(shù)M3與(Hen-Xlen)之間的最小值。
[0093]重復(fù)上述步驟(2.1)和步驟(2.2),直至更新后的X = O或更新后的Y = O時(shí),停止模逆運(yùn)算。
[0094]在更新后的X = O且更新后的Y = I時(shí),模逆運(yùn)算的結(jié)果為更新后的第二變量S ;在更新后的X = I且更新后的Y = O時(shí),模逆運(yùn)算的結(jié)果為X的初始值與更新后的第一變量R之差;在更新后的X與更新后的Y其中之一等于O而另一個(gè)不等于I時(shí),所述模逆運(yùn)算的結(jié)果不存在。
[0095]下面以X值為17、Y值為13為例,對(duì)本發(fā)明上述實(shí)施例中提供的模逆運(yùn)算方法進(jìn)行說(shuō)明。
[0096]計(jì)算Z = 13 ^ο(117ο
[0097]分別將X和Y以二進(jìn)制數(shù)表示,則X = 10001,Υ = 1101。設(shè)定第一變量R = 0,第二變量S = 1從上述內(nèi)容可知,X對(duì)應(yīng)的Xlen = 5,Y對(duì)應(yīng)的Hen = 4。
[0098]Xlen > Ylen,且Xlen-Ylen = 1,X為正數(shù)且X的第一位為1,則不將X左移,即X左移的位數(shù)為O。將X與Y高位對(duì)齊相減,將得到的差值作為更新后的X,即更新后的X =10001-11010 = -1Olllo
[0099]第一變量R與左移I位的第二變量S相加,將得到的和值作為更新后的R,即更新后的R = 10。
[0100]更新后的X = -10111為負(fù)數(shù),將X左移N2位,N2為X最高位的O前的符號(hào)位的個(gè)數(shù)N3與OClen-Ylen)之間的最小值。X最高位的O前的符號(hào)位的個(gè)數(shù)N3 = 1,(Xlen-Ylen)=1,因此N2 = 1,即將X左移I位,低位補(bǔ)I位無(wú)效0,則左移后的X = -01110,由于最低位的O為無(wú)效0,則左移后的X對(duì)應(yīng)的Hen = 4。
[0101]更新后的X對(duì)應(yīng)的Hen與Hen相等,Xlen-Ylen = 0。將Y與X相加,得到的和值為-01110+11010 = OlOOOo將和值結(jié)果的最后I位去除,作為更新后的X,即更新后的X=OlOOo
[0102]第一變量R與左移O位的第二變量S相減,并將得到的差值作為更新后的R,即更新后的R = 10-1 = 10
[0103]Y = 1101,更新后的X = 0100,X的第一位為符號(hào)位,因此X = 100。由于Xlen不包括X的符號(hào)位,因此Xlen = 3,即Hen大于更新后的X對(duì)應(yīng)的Xlen,Ylen-Xlen =UY為整數(shù)且Y的第一位為1,Y不左移。將Y與X高位對(duì)齊相減,將得到的差值作為更新后的Y,即更新后的 Y = 1101-1000 = OlOlo
[0104]將更新后的R左移I位,并與第二變量S相加,得到更新后的第二變量S = 1+10=11。
[0105]將更新后的Y最高位為0,Y為整數(shù),將Y左移I位至最高位為1,低位補(bǔ)I位無(wú)效0,左移后的Y = 1010。由于左移后的Y的最低位的O為無(wú)效0,則Y對(duì)應(yīng)的Hen = 3,Χ =100,對(duì)應(yīng)的 Xlen = 3,即 Xlen = Ylen0
[0106]將Y與X高位對(duì)齊相減,得到的差值為1010-1000 = 10,將差值的最低位的O去除,得到的值為1,即更新后的Y= I。將更新后的第二變量S與更新后的第一變量R相加,S= 11,R= I,得到更新后的第二變量S = 11+1 = 100。
[0107]更新后的Y = 1,X = 100,即X對(duì)應(yīng)的位長(zhǎng)Xlen = 3,Y對(duì)應(yīng)的位長(zhǎng)Hen = 1,Xlen-Ylen = 2。將X與Y高位對(duì)齊相減,得到的差值為100-100 = 0,即為更新后的X值。將第一變量R與左移2位的第二變量S相加,得到的和值為更新后的第一變量R = 1+10000=100lo
[0108]此時(shí),更新后的X = O,更新后的Y = I,模逆運(yùn)算結(jié)束。
[0109]從上述內(nèi)容中可知,在更新后的X = O且更新后的Y = I時(shí),模逆運(yùn)算的結(jié)果為更新后的第二變量S。第二變量S = 100,轉(zhuǎn)換成十進(jìn)制數(shù)為4。即13 1H1dn = 4。
[0110]代入驗(yàn)證:13X4 = 52,對(duì)17求模得到的結(jié)果為1,即本發(fā)明上述實(shí)施例提供的模逆運(yùn)算方法求得的結(jié)果正確。
[0111]結(jié)合本發(fā)明上述實(shí)施例中提供的模逆運(yùn)算器,以及采用左移算法進(jìn)行模逆運(yùn)算,以下對(duì)本發(fā)明實(shí)施例中提供的模逆運(yùn)算器在進(jìn)行左移操作時(shí)的執(zhí)行過(guò)程進(jìn)行說(shuō)明。
[0112]控制器104包括寄存器,在寄存器中存儲(chǔ)并更新X對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen和Y對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen,當(dāng)Xlen彡Ylen時(shí),計(jì)算X模Y ;當(dāng)Hen彡Xlen時(shí),計(jì)算Y模X。X和Y均以字為單位存儲(chǔ)在存儲(chǔ)器101中。X和Y、R和S均以字為單位存儲(chǔ)在存儲(chǔ)器101中。
[0113]以計(jì)算X模Y為例進(jìn)行說(shuō)明。
[0114]首先,將操作數(shù)Y左移至最高位為1:從存儲(chǔ)器101中讀取Y的最高字,判斷出Y所需進(jìn)行左移的位數(shù),按照從低位到高位的順序依次從存儲(chǔ)器101中讀取Y的所有字,送入移位器102中進(jìn)行移位,并將移位結(jié)果存儲(chǔ)至存儲(chǔ)器101。
[0115]然后,從存儲(chǔ)器101中讀取X最高字,根據(jù)X與Y的位長(zhǎng)、X的符號(hào)位以及X的最高字判斷X的左移位數(shù)和操作,包括:
[0116](2.3) leadlen = wordlen,在X為正數(shù)時(shí),Ieadlen表示為X最高字前綴O的個(gè)數(shù),在X為負(fù)數(shù)時(shí),Ieadlen表示為X最高字前綴I的個(gè)數(shù),wordlen表示為字長(zhǎng)。
[0117]Xlen-Ylen彡Ieadlen時(shí),以字為單位按照從低位到高位的順序依次從存儲(chǔ)器101中讀取X,送入移位器102中,以shiftsize = leadlen位進(jìn)行左移,移位結(jié)果寫入到存儲(chǔ)器101中作為更新后的X,再?gòu)拇鎯?chǔ)器101中讀取更新后的X的最高字進(jìn)行判斷,以獲取X的左移位數(shù)。
[0118]X為正數(shù),且Xlen-Ylen < leadlen時(shí),X模Y計(jì)算過(guò)程結(jié)束,進(jìn)入Y模X計(jì)算,X左移位數(shù) shiftsize = leadlen。
[0119]X 為負(fù)數(shù),且 Xlen-Ylen < leadlen 時(shí),X 左移位數(shù) shiftsize = Xlen-Ylen,將左移后的X與左移后的Y高位對(duì)齊做加法。
[0120](2.4) leadlen < wordlen。
[0121]在X 為正數(shù),且 Xlen-Ylen ^ leadlen 時(shí),X 左移位數(shù) shiftsize = leadlen,將左移后的X與左移后的Y尚位對(duì)齊做減法;
[0122]在X 為負(fù)數(shù),且 Xlen-Ylen ^ leadlen 時(shí),X 左移位數(shù) shiftsize = leadlen,將左移后的X與左移后的Y高位對(duì)齊做加法。
[0123]在X為正數(shù),且Xlen-Ylen < leadlen時(shí),X模Y計(jì)算過(guò)程結(jié)束,進(jìn)入Y模X計(jì)算,X 左移位數(shù) shiftsize = leadlen。
[0124]在X 為負(fù)數(shù),且 Xlen-Ylen < leadlen 時(shí),X 左移位數(shù) shiftsize = Xlen-Ylenj^左移后的X與左移后的Y尚位對(duì)齊做加法。
[0125]在X與Y進(jìn)行加法運(yùn)算或減法運(yùn)算時(shí),以字為單位從存儲(chǔ)器101中讀取左移后的X和左移后的Y,移位后X多出移位后Y的低位結(jié)果直接寫入到存儲(chǔ)器101,移位后的X與Y字長(zhǎng)相等的高位部分送入加減法運(yùn)算器103,進(jìn)行相應(yīng)的加法運(yùn)算或減法運(yùn)算,并將高位運(yùn)算結(jié)果存儲(chǔ)至存儲(chǔ)器101。將左移后的X的低位結(jié)果與高位運(yùn)算結(jié)果合并,即可得到更新后的X。
[0126]可以理解的是,在實(shí)際應(yīng)用中,還存在X的字長(zhǎng)與Y字長(zhǎng)相等的情況,此時(shí),更新后的X為加法運(yùn)算或減法運(yùn)算的結(jié)果。在計(jì)算完成后,可以將Hen更新為)(len =Xlen-shiftsize0
[0127]然后,R與左移O(Ien-Ylen)后的S低位對(duì)齊做加法或減法。
[0128]在本發(fā)明一實(shí)施例中,R值的計(jì)算與更新步驟為:控制器104以字為單位按照從低位到高位的順序從存儲(chǔ)器101中讀取R和S,將S送入至移位器102。移位器102將S左移(Xlen-Ylen)位,加減法運(yùn)算器103將R與左移后的S低位對(duì)齊相減,得到的差值作為更新后的R。
[0129]在本發(fā)明另一實(shí)施例中,在計(jì)算X模Y的過(guò)程中,預(yù)先設(shè)置第三變量QS,第三變量QS存儲(chǔ)在存儲(chǔ)器101中,且第三變量QS的初始值為O。在每次X左移NI位與Y高位對(duì)齊相加之后,從存儲(chǔ)器101中讀取第三變量QS以及第二變量S。將第三變量QS送入至移位器102中左移NI位,將移位結(jié)果送入至加減法運(yùn)算器103。加減法運(yùn)算器103將左移后的第三變量QS與第二變量S低位對(duì)齊并相減,得到的差值作為更新后的第三變量QS。在X模Y計(jì)算結(jié)束時(shí),從存儲(chǔ)器101中讀取第一變量R和更新后的第三變量QS,送入至加減法運(yùn)算器103中,將第一變量R與更新后的第三變量QS低位對(duì)齊相減,得到的差值作為更新后的第一變量R。
[0130]由此可見(jiàn),移位器在對(duì)X或Y進(jìn)行移位操作時(shí),以M為單位讀取X或Y的數(shù)據(jù)進(jìn)行以為操作;加減法運(yùn)算器在對(duì)X與Y進(jìn)行加減法運(yùn)算時(shí),以M為單位將X中的M個(gè)數(shù)據(jù)與Y中的M個(gè)數(shù)據(jù)進(jìn)行加減法運(yùn)算。也就是說(shuō),在整個(gè)模逆運(yùn)算的過(guò)程中,移位器和加減法運(yùn)算器均是以M為單位進(jìn)行運(yùn)算,即移位器和加減法運(yùn)算器的位寬僅為M即可實(shí)現(xiàn)對(duì)較長(zhǎng)的X和Y進(jìn)行運(yùn)算,從而可以避免模逆運(yùn)算參數(shù)過(guò)長(zhǎng)導(dǎo)致的模逆運(yùn)算器無(wú)法進(jìn)行模逆運(yùn)算的問(wèn)題,擴(kuò)展性較高。
[0131]雖然本發(fā)明披露如上,但本發(fā)明并非限定于此。任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍內(nèi),均可作各種更動(dòng)與修改,因此本發(fā)明的保護(hù)范圍應(yīng)當(dāng)以權(quán)利要求所限定的范圍為準(zhǔn)。
【主權(quán)項(xiàng)】
1.一種模逆運(yùn)算器,用于計(jì)算Z = Y 1H1d X,其中Z為所述模逆運(yùn)算的結(jié)果,X為第一操作數(shù),Y為第二操作數(shù),其特征在于,包括:控制器、移位器、加減法運(yùn)算器以及存儲(chǔ)器,其中: 所述存儲(chǔ)器,適于存儲(chǔ)第一操作數(shù)X、第二操作數(shù)Y、第一變量R以及第二變量S,其中:所述第一操作數(shù)X以及所述第二操作數(shù)Y均以預(yù)設(shè)的位長(zhǎng)M為單位存儲(chǔ)在所述存儲(chǔ)器中,其中,M = NXL,N彡1,L為一個(gè)字的二進(jìn)制長(zhǎng)度; 所述移位器,位寬與M相等,適于以M為單位讀取所述存儲(chǔ)器中的第一操作數(shù)X與第二操作數(shù)Y,并將第一操作數(shù)X與第二操作數(shù)Y進(jìn)行移位操作; 所述加減法運(yùn)算器,位寬與M相等,適于對(duì)第一操作數(shù)X中的M位數(shù)據(jù)與第二操作數(shù)Y中的M位數(shù)據(jù)進(jìn)行運(yùn)算; 控制器,包括寄存器,所述寄存器適于緩存并更新所述第一操作數(shù)X對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen、所述第二操作數(shù)Y對(duì)應(yīng)的二進(jìn)制位長(zhǎng)Hen,所述控制器以M為單位從所述存儲(chǔ)器中讀取所述第一操作數(shù)X以及所述第二操作數(shù)Y,控制所述加減法運(yùn)算器對(duì)第一操作數(shù)X中的M位數(shù)據(jù)與第二操作數(shù)Y中的M位數(shù)據(jù)進(jìn)行運(yùn)算,并將運(yùn)算結(jié)果存儲(chǔ)至所述存儲(chǔ)器。2.如權(quán)利要求1所述的模逆運(yùn)算器,其特征在于,所述N= I。3.如權(quán)利要求2所述的模逆運(yùn)算器,其特征在于,所述加減法運(yùn)算器適于從第一操作數(shù)X中選取一字節(jié)長(zhǎng)度的連續(xù)數(shù)據(jù)與第二操作數(shù)Y中選取的對(duì)應(yīng)的一字節(jié)長(zhǎng)度的連續(xù)數(shù)據(jù)進(jìn)行運(yùn)算,在運(yùn)算結(jié)果出現(xiàn)進(jìn)位或借位時(shí),將當(dāng)前輸出的進(jìn)位或借位作為下一字節(jié)數(shù)據(jù)的進(jìn)位或借位的輸入。4.如權(quán)利要求1所述的模逆運(yùn)算器,其特征在于,在Hen不能被M整除時(shí),將所述第一操作數(shù)X高位補(bǔ)符號(hào)位,將所述第一操作數(shù)X的位長(zhǎng)Hen擴(kuò)展至被M整除;在Hen不能被M整除時(shí),將所述第二操作數(shù)Y高位補(bǔ)符號(hào)位,將所述第二操作數(shù)Y的位長(zhǎng)Hen擴(kuò)展至被M整除。
【文檔編號(hào)】G06F7/72GK105988771SQ201510096487
【公開(kāi)日】2016年10月5日
【申請(qǐng)日】2015年3月4日
【發(fā)明人】劉凱, 陸繼承, 趙曉冬, 王宇
【申請(qǐng)人】上海復(fù)旦微電子集團(tuán)股份有限公司