專利名稱:蒙哥馬利模乘法器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總地涉及密碼系統(tǒng),更具體地涉及用于此類密碼系統(tǒng)的蒙哥馬利模乘法器(Montgomery modular multiplier)。
背景技術(shù):
在通過計算機網(wǎng)絡(luò)的方式交換各類數(shù)據(jù)的信息通信環(huán)境中,有線和/或移動(無線)通信領(lǐng)域、加密系統(tǒng)(密碼系統(tǒng))日益作為確保數(shù)據(jù)安全性的必要工具。特別是,對于電子會計或識別系統(tǒng)來說通過提供加密和/或解密技術(shù)而確保數(shù)據(jù)的安全性是必須的。加密技術(shù)可以籠統(tǒng)地分為密鑰(對稱密鑰,私人密鑰,或通用密鑰)和公鑰(非對稱密鑰)的形式。
由美國商務(wù)部所擬訂的數(shù)據(jù)加密系統(tǒng)(DES)的加密算法是一種典型的密碼系統(tǒng)密鑰加密類型。其它的典型加密系統(tǒng)包括出自前蘇聯(lián)的政府標準(GOST),以及瑞士的內(nèi)部數(shù)據(jù)加碼算法(IDEA)。對于一個密鑰加密系統(tǒng)來說,由于各個交換信息需要共享相同的密鑰,因此具有為了安全性而具有一個附加的信道的優(yōu)點。因而這樣的密鑰類型的加密系統(tǒng)為了讓用戶能與其他用戶交流信息通常需要由一個用戶保有并管理多個密鑰。
公鑰類型的加密系統(tǒng)使用彼此不同的加密和解密密鑰,這就使得即便通過知道兩個密鑰之一的人也很難檢測到相應(yīng)的密鑰。在公共密鑰系統(tǒng)中,信息通過一個密鑰和/或一個公鑰加擾或解擾(即,信息可以通過使用一個私人密鑰來加擾并且使用一個公共密鑰來解擾,反之亦然)。雖然公共密鑰系統(tǒng)由于無需為共享密鑰具備一個附加的信道,并與密鑰系統(tǒng)相比可以提供改善的數(shù)據(jù)安全性,因此在密鑰管理方面很方便,但公共密鑰系統(tǒng)因為要產(chǎn)生兩個不同的密鑰并需要復(fù)雜的數(shù)學運算來使用兩個不同密鑰恢復(fù)信息,因此僅具有有限的容量來處理高速數(shù)據(jù)。
改進的加密系統(tǒng)使用了蒙哥馬利算法,其為在硬件和軟件系統(tǒng)實施例中執(zhí)行公鑰加密算法提供了更大的益處。使用了蒙哥馬利算法的加密系統(tǒng)能夠?qū)⒑茈y用硬件實現(xiàn)的對一個數(shù)字的模運算變換為簡單的乘法和加法的移位運算。蒙哥馬利算法在單個的乘法運算步驟之前和之后使用了一個運算數(shù)變換處理。因此,雖然由于在應(yīng)用中重復(fù)運行了乘法運算,基于蒙哥馬利算法的加密系統(tǒng)比在單獨乘法域中其他的模乘法系統(tǒng)要慢,但是基于蒙哥馬利算法的系統(tǒng)由于無需在每個處理周期執(zhí)行運算數(shù)的轉(zhuǎn)換步驟,因而能比基于通常的公鑰算法的加密系統(tǒng)在執(zhí)行加密運算時更快。
一種用于提高乘法處理速度的方法拓展了基數(shù)。如果基數(shù)值增加,那么在給定的乘法處理中的重復(fù)累加數(shù)減少一個相應(yīng)的數(shù)。然而,基數(shù)的增加可以導(dǎo)致由附加的處理步驟所產(chǎn)生的更復(fù)雜的累加周期,因此加長了處理流程的時間。例如,雖然由硬件實現(xiàn)時基數(shù)2的操作算法相對簡單,但是,累加周期的重復(fù)數(shù)為基數(shù)4的操作算法的二倍。相反地,基數(shù)4的操作運算相對于基數(shù)2的操作算法所需的硬件,需要為每個重復(fù)周期提供更長的處理時間以及更復(fù)雜的硬件結(jié)構(gòu)。
發(fā)明內(nèi)容
本發(fā)明的一個示例性實施例是一個蒙哥馬利乘法器。該乘法器可以包括一模乘積產(chǎn)生器,用來選擇n位模數(shù)-M,0,M,2M和前一行結(jié)果SI其中之一作為模乘積;一部分乘積產(chǎn)生器,用來選擇-2A,-A,0,+A和+2A被乘數(shù)其中之一作為部分乘積;和一累加器,用來堆棧該所選擇的模乘積和部分乘積。在實施例中,一個蒙哥馬利運算單元可以包括一個存儲器、一用來將被乘數(shù)A、乘數(shù)B和模數(shù)M存儲在存儲器中的主機、以及一個上述的蒙哥馬利乘法器。該蒙哥馬利乘法器可以在主機的控制下用所存儲的被乘數(shù)、乘數(shù)和模數(shù)執(zhí)行一個蒙哥馬利乘法運算,并可以將來自蒙哥馬利乘法運算中的運算結(jié)果存儲在所述存儲器中。
本發(fā)明的另一個示例性實施例是一個累加器。該累加器可以包括多個用來以進位保存加法模式運算的壓縮器,該多個壓縮器的每個接收模乘積,部分乘積、第一值和第二值,并產(chǎn)生一個相應(yīng)的下一個和、一個相應(yīng)的下一個進位和一個相應(yīng)的下一個較低值;一和寄存器,用來從多個壓縮器的每個接收相應(yīng)的下一個和以輸出一個相應(yīng)的更新的當前和;一進位寄存器,用來從多個壓縮器的每個接收相應(yīng)的下一個進位來輸出一個相應(yīng)的更新的當前進位;和一較低值寄存器,用來從多個壓縮器的每個接收相應(yīng)的下一個較低值以輸出一個相應(yīng)的更新的當前低值。
本發(fā)明的另一個示例性實施例是一個運算單元。該運算單元可以包括一乘法器,用來順序地執(zhí)行用于一個包括n/c位塊的n位被乘數(shù)、包括n/c位、塊的一個n位乘數(shù)、包括n/c塊的n位模數(shù)、拓展的乘數(shù)塊和拓展的模數(shù)塊的單元乘法運算(n/c)*(n/c)次。對該運算單元來說,n>c并且n和c是正整數(shù)。
本發(fā)明的另一個示例性實施例是一個蒙哥馬利乘法單元。該乘法單元包括一個具有n/c行數(shù)的運算矩陣,n和c是正整數(shù),其中每行與重復(fù)執(zhí)行n/c次的單元乘法運算和進位傳遞加法運算關(guān)聯(lián)。該乘法單元可以包括一個具有進位保存加法結(jié)構(gòu)的累加器,用來執(zhí)行該重復(fù)單元乘法運算;和一個加法進位傳遞加法器,用來執(zhí)行該進位傳遞加法運算。
本發(fā)明的另一個示例性實施例是一個蒙哥馬利乘法器。該蒙哥馬利乘法器可以包括一個模乘積選擇產(chǎn)生器,用來從多個可選擇的n位模數(shù)M選擇一個模乘積,該給定的模數(shù)M是在該n位模數(shù)中從當前輸入拓展塊中形成的。該乘法器還可以包括一個部分乘積產(chǎn)生器,用來從多個可選擇的n位被乘數(shù)A中選擇一個被乘數(shù)作為部分乘積,給定的被乘數(shù)A是在n位被乘數(shù)中從當前位輸入拓展塊中形成的。該乘法器的累加器可以將選擇的模乘積和部分乘積累加以產(chǎn)生一個乘積結(jié)果。在一個實例中,上述蒙哥馬利乘法器可以是包括了一個存儲器和主機的運算單元的一部分。
本發(fā)明的另一個示例性實施例是一個蒙哥馬利乘法器。該蒙哥馬利乘法器也可以用于執(zhí)行一個基于輸入其中的控制信號的邏輯狀態(tài)的蒙哥馬利乘法運算和通常的乘法運算。
本發(fā)明通過參考附圖所詳細描述的示例性實施例將變得更加的清楚,其中,相同的元件用相同的標號表示,并且該描述僅僅是示例性的因此不能來限制本發(fā)明的示例性實施例。
圖1示出了用于執(zhí)行四倍精度運算的運算矩陣的結(jié)構(gòu)示意圖。
圖2示出了根據(jù)圖1所示的四倍精度的單元乘法運算的順序。
圖3是根據(jù)本發(fā)明的一個示例性實施例的加密系統(tǒng)的示意圖。
圖4是根據(jù)本發(fā)明的一個示例性實施例的蒙哥馬利乘法器數(shù)據(jù)路徑的框圖。
圖5示出了圖3所示的蒙哥馬利乘法器的存儲器接口12的框圖。
圖6示出了根據(jù)控制信號FROCE_RI[2:0]在存儲器接口12中由多路復(fù)用器121選擇的信號的真值表。
圖7示出了根據(jù)控制信號SEL_RDO[1:0]在存儲器接口12中由多路復(fù)用器123選擇的信號的真值表。
圖8A到8C示出了根據(jù)本發(fā)明的一個示例性實施例的蒙哥馬利乘法器10的功能結(jié)構(gòu)框圖。
圖9示出了根據(jù)本發(fā)明的一個示例性實施例的用于存儲被乘數(shù)值A(chǔ)的示例性寄存器105的詳細電路結(jié)構(gòu)。
圖10示出了根據(jù)本發(fā)明的一個示例性實施例的用于產(chǎn)生模乘積值MMI的模乘積產(chǎn)生器120的結(jié)構(gòu)。
圖11示出了根據(jù)本發(fā)明的一個示例性實施例的由蒙哥馬利記錄器110所配置的編碼的真值表。
圖12示出了根據(jù)本發(fā)明的一個示例性實施例的用于存儲乘數(shù)值B的寄存器。
圖13示出了根據(jù)本發(fā)明的一個示例性實施例的部分乘積產(chǎn)生器130的示例性電路。
圖14示出了根據(jù)本發(fā)明的一個示例性實施例的由亭記錄器140所管理的編碼的真值表。
圖15示出了根據(jù)本發(fā)明的一個示例性實施例的累加器150。
圖16示出了在一個示例性的累加器中當移位信號SHIFT_ACC為邏輯“1”時,輸入到壓縮器中的信號的配置。
圖17示出了在一個示例性的累加器中當移位信號SHIFT_ACC為邏輯“0”時,輸入到壓縮器中的信號的配置。
圖18示出了根據(jù)本發(fā)明的一個示例性實施例的4∶2壓縮器的示例性電路。
圖19示出了根據(jù)本發(fā)明的一個示例性實施例的移位寄存器116的詳細結(jié)構(gòu)。
圖20示出了根據(jù)本發(fā)明的一個示例性實施例的移位寄存器115的詳細結(jié)構(gòu)。
圖21示出了根據(jù)本發(fā)明的一個示例性實施例的用于存儲累加器150的和S0[1:0]的移位寄存器180的詳細結(jié)構(gòu)。
圖22示出了根據(jù)本發(fā)明的一個示例性實施例的用于產(chǎn)生提供給蒙哥馬利記錄器110的SPPI[1:0]的電路。
圖23示出了根據(jù)本發(fā)明的一個示例性實施例的CPA運算模塊160的電路結(jié)構(gòu)。
圖24示出了當用偶次多精度模式從每行的最后CSA運算轉(zhuǎn)到一CPA運算時,在累加器150中保持一個給定字的最高半字的特征。
圖25示出了用于亭記錄器140的給定輸入/輸出信號的邏輯規(guī)則的配置的真值表。
圖26示出了用于蒙哥馬利記錄器110的輸入/輸出信號的邏輯規(guī)則的配置的真值表。
具體實施例方式
本發(fā)明的示例性實施例將在以下參照附圖更詳細地進行描述。然而,本發(fā)明也可以有不同的實施方式而不限于此處設(shè)定的示例性實施例。相反地,提供這些實施例使公開全面和完整,并向本領(lǐng)域的技術(shù)人員表達了本發(fā)明的范圍。在整個說明書中,相同的數(shù)字標號相同的元件。
根據(jù)所描述的傳統(tǒng)加密系統(tǒng)的問題,可以設(shè)計一種具有對模運算增強處理速度的加密系統(tǒng)結(jié)構(gòu),而無需加大或使系統(tǒng)硬件復(fù)雜化。另一方面,使用計算機系統(tǒng)所提供的改進的運算工具,可以為確保加密系統(tǒng)的安全性而加長密鑰。一個給定的密鑰的長度可以根據(jù)給定的應(yīng)用而隨需改變。這樣,具有可變給定長度密鑰的加密系統(tǒng)可以根據(jù)需要適用于各種應(yīng)用環(huán)境。
如以下所詳細描述的,本發(fā)明的示例性實施例引入了一個支持精度多樣性的可升級的蒙哥馬利模乘法器。本發(fā)明的示例性實施例可以實現(xiàn)使用較低復(fù)雜度的蒙哥馬利乘法器而具有精度多樣性的乘法運算。此外,示例性的實施例可以執(zhí)行一個通常的乘法運算,以及基于適當?shù)目刂菩盘柕拿筛珩R利乘法。
本發(fā)明的示例性實施例可以應(yīng)用到基于基數(shù)4運算邏輯的蒙哥馬利乘法算法,以下稱之為“基數(shù)4的插入式蒙哥馬利乘法算法”(R4IMM)。根據(jù)以下所描述的示例性實施例,該乘法器所涉及的邏輯運算系統(tǒng)可以應(yīng)用于使用公共密鑰加密算法的通信網(wǎng)絡(luò)或計算系統(tǒng),以及在便攜式集成電路(IC)卡(或智能卡)等中實現(xiàn)。
根據(jù)示例性實施例,R4IMM算法中涉及的參數(shù)可以定義如下M表示模值為正,并為例如3、7等比2大的奇數(shù)整數(shù);M′為整數(shù)并滿足等式條件(-M*M’)mod 4=1;A表示被乘數(shù)值并為整數(shù),同時滿足條件0≤A<M;B表示乘數(shù)值并為整數(shù),同時滿足條件0≤B<M。
這里,B=ΣI=0N-IbIAI,]]>bI∈{0,1,2,3},其中bI是一個由2位構(gòu)成的單元被乘數(shù);o是操作數(shù)的參數(shù),表示一個被乘數(shù)、乘法器和模的給定長度;c示出了當執(zhí)行單元乘法運算時“塊長度”的參數(shù)(即,塊的位數(shù)或字節(jié)數(shù)等),并表示在系統(tǒng)硬件中的數(shù)據(jù)路徑的寬度;w示出了字的長度(即,在存儲器中的數(shù)據(jù)總線寬度)的參數(shù);和d示出了基數(shù)的數(shù)字長度的參數(shù)。例如,如果采用4基數(shù)乘法器一個密碼系統(tǒng)具有一個32位的數(shù)據(jù)總線寬度,那么在4基數(shù)的乘法器中的字長w當數(shù)字長d為2時是32。
應(yīng)用到本發(fā)明的示例性實施例中的基本R4IMM運算算法可以描述如下S0=0for I=0 to(n/2-1)qI=(((SI+bIA)mod 4)*M’)mod 4SI+1=(SI+bIA+qIM)/4endforif(SN≥M)SN=SN-M在以上的基本R4IMM運算算法中,參數(shù)I表示數(shù)字索引或重復(fù)運算的次數(shù)。商qI表示加入數(shù)M來創(chuàng)建SI+bI+qIM的兩個最低有效位(LSB)為“00”。在余數(shù)系統(tǒng)(RNS)中,通過將模M的整數(shù)倍加入到一個特定值所取得的數(shù)與它的初始數(shù)值相同,并且模乘積qIM(模值M的整數(shù)倍)就等于該初始數(shù)值。此外,即便當SI+bI+qIM的兩個LSB“00”由一個基數(shù)4來除(即,右移兩(2)位),也由于其保留有最大有效數(shù)(即,MSB)而不會使得信息丟失。
得到部分乘積值PPI和模乘積值MMI而在硬件系統(tǒng)上實現(xiàn)R4IMM運算。由于單元被乘數(shù)bI和商qI都為兩位,因此部分乘積值PPI和模乘積值MMI可以使用四個如公式1所示的可用值而產(chǎn)生(這里,bI{0,1,2,4}而qI{0,1,2,3})。
bIA=PPI∈{0,A,2A,3A}qIA=MMI∈{0,M,2M,3M}然而,如果部分乘積值PPI和模乘積值MMI按照公式1創(chuàng)建,那么執(zhí)行取得A或M的1位移位值以及它的初始值(即,A或M)的和運算,以計算3A或3M。例如,可以使用一個獨立的加法器來計算3A或3M值,3A或3M也可以預(yù)先計算并將其存儲作為以后的參考。但是,由于系統(tǒng)是根據(jù)為計算其中的3A或3M值所需的時間和空間而設(shè)計的,因此3A和3M的計算可以由傳統(tǒng)的硬件結(jié)構(gòu)負擔并可以看作降低運算性能的根源。
因此,當在產(chǎn)生部分乘積值PPI和模乘積值MMI中加強計算性能時,本發(fā)明的示例性實施例可以設(shè)計來降低硬件的負擔。這種在增強處理的情況下降低硬件負擔可以通過使用兩種不同性質(zhì)類型的記錄配置和/或記錄方法。
此外,根據(jù)本發(fā)明的示例性實施例的乘法器可以在一個給定的時間中執(zhí)行c位的乘法運算,還可以使用重復(fù)運算周期處理n位的乘法運算(這里n是c的整數(shù)倍)。這樣的多精度R4IMM算法可以表示如下。
for row_idx=0 to row_idx=(n/c-1)beginfor col_idx=0 to col_idx=(0/c-1)begindo_ini( );for wrd_idx=0 to wrd_idx=(c/w-1)beginfor dgt_idx=0 to dgt_idx=(w/d-1)begindo_acc( );endforendforendfor
for wrd_idx=0 to wrd_idx=(c/w-1)begindo-cpa( );endforendfor在該算法中,函數(shù)do_ini( )表示累加塊的函數(shù)(位塊或字的字節(jié)),其源于以前行所確定的運算值S,并在累加器中與當前列和當前值具有相同的位置。換句話說,函數(shù)do_ini( )在給定的列循環(huán)的起始處修改乘法器的累加器的初始值。這種修改流程的完成是由于根據(jù)本發(fā)明的示例性實施例的蒙哥馬利乘法器被設(shè)計來適用于給定的具有多精度的運算。
函數(shù)do_acc( )表示累加在累加器中的每個周期所產(chǎn)生的部分乘積值PP和模乘積值MM兩個矢量的函數(shù)。本發(fā)明的示例性實施例所使用的累加器可以以一個或多個進位保存加法器(CSA)的結(jié)構(gòu)實現(xiàn),該加法的結(jié)果值可以分別表示每個存儲在相應(yīng)的賦予給定矢量的寄存器中的進位矢量、和矢量、以及較低值矢量中的每一個。
函數(shù)do_cpa( )表示對進位值、和值、以及較低值的加法運算。這可以通過使用進位傳遞加法器來實現(xiàn),其中所得的結(jié)果作為每行最后一步的累加結(jié)果。
圖1示出了用于執(zhí)行四倍精度運算的運算矩陣的結(jié)構(gòu)示意圖。參考圖1,對于四倍精度運算,被乘數(shù)A,乘數(shù)B,以及模M每個被分成四塊,每個表示為A={A3A2A1A0},B={B3B2B1B0},以及M={M3M2M1M0}。在具有c位塊長度的乘法器中,乘法運算可以順序在塊單元中執(zhí)行,例如,A0*B0,A1*B0,A2*B0,A3*B0等...,同時存儲該乘法運算的最終結(jié)果。
圖2示出了根據(jù)圖1所示的四倍精度的單元乘法運算的序列。根據(jù)本發(fā)明的示例性實施例,參數(shù)A3,A2,A1,A0,B3,B2和B0可以表示塊長度,而運算組A0*B0,A1*B0,A2*B0,A3*B0等可以表示為單元乘法運算(或框符)。被乘數(shù)A和乘數(shù)B的每個運算可以通過進位保存加法(CSA)循環(huán)的累加器而執(zhí)行,并可以包括一個用于在累加器中將三個結(jié)果值(進位,和,以及較低值)求和的進位傳遞加法(CPA)循環(huán),以在完成每行的最終單元乘法運算后產(chǎn)生一單個的值。因此圖2示出了圖1所示的具有四倍精度的單元乘法運算順序。
圖3是根據(jù)本發(fā)明的一個示例性實施例的加密系統(tǒng)的結(jié)構(gòu)示意圖。參考圖3,加密系統(tǒng)1可以包括一個蒙哥馬利乘法器10,主機20,存儲器訪問判定器30,以及一個存儲器40。主機20可以包括一個用于與諸如蒙哥馬利乘法器10和輸入/輸出單元之類的外設(shè)通信的外設(shè)接口21,和用于與存儲器40通信的存儲器接口。
乘法器10可以包括一個與主機20通信的主機接口11,以及與存儲器40通信的存儲器接口12??梢酝ㄟ^存儲器訪問判定器30來調(diào)整在乘法器10、主機20和存儲器40之間的通信條件。主機接口11可以包括一個特殊功能寄存器(SFR)13。乘法器10還可以包括一個控制器(未示出)來產(chǎn)生特定的控制信號,這些控制信號更詳細的描述為FORCE_RI[2:0],SEL_RDO[1:0],F(xiàn)ORCE_PP[1:0],F(xiàn)ORCE_MM[1:0],USE_X_REG,SEL_CPA_IN[2:0],IS_1ST_CPA_WORD,IS_ODD_PREC,UDP_SIGN_S,UPD_MSlB_S,SFT_BI_PISO,SFT_QI_PISO,STO_BR_ROW,和SHIFT_ACC。
主機20將操作數(shù)(即,被乘數(shù)A,乘數(shù)B,模M)存儲在存儲器40中,并通過給SFR13發(fā)送一個運算初始命令來指示記錄運算模式的執(zhí)行。在將給定的運算結(jié)果值S存儲在存儲器40的一個字段后,乘法器10通過記錄在SFR13中的運算結(jié)束信息來告知主機20運算結(jié)束。存儲結(jié)果值S的字段可以通過主機20指定。SFR13還可以存儲符號位,這將在以后詳細描述。
存儲器40可以分為指定存儲容量的段。存儲輸入和結(jié)果值的段可以通過主機20來指定,同時為每個段指定一個索引。因此,如果在一個乘法運算周期之后所得的結(jié)果作為輸入值重復(fù)應(yīng)用到下一個乘法運算中(即,使用在諸如RSA的公共密鑰加密系統(tǒng)中的冪運算),則可以用于執(zhí)行在僅僅改變輸入和輸出值段索引后的下一個乘法運算,即,無需任何數(shù)據(jù)的移動。這對于提高系統(tǒng)的性能有益處。
圖4是根據(jù)本發(fā)明的一個示例性實施例的蒙哥馬利乘法器的框圖。圖4圖示了輸入到蒙哥馬利乘法器10以及從蒙哥馬利乘法器10輸出的數(shù)據(jù)的配置。
圖5示出了圖3所示的蒙哥馬利乘法器的存儲器接口12的框圖。存儲器接口12包括多路復(fù)用器12_1和12_3,以及寄存器12_2和12_4。
圖6示出了根據(jù)控制信號FROCE_RI[2:0]在存儲器接口12中由多路復(fù)用器12_1選擇的信號的真值表,圖7示出了根據(jù)控制信號SEL_RDO[1:0]在存儲器接口12中由多路復(fù)用器12_3選擇的信號的真值表。多路復(fù)用器12_1響應(yīng)控制信號FORCE_RI[2:0],輸出輸入信號中的一個。如圖6所示,數(shù)據(jù)信號REG_DI[31:0]從多路復(fù)用器12_1輸出,同時寄存器12_2可以提供給蒙哥馬利乘法器數(shù)據(jù)路徑100,這在以后將詳細描述。多路復(fù)用器12_3響應(yīng)控制信號SEL_RDO[1:0]的狀態(tài),輸出它的輸入信號中的一個。如圖4所示,數(shù)據(jù)信號RAM_DO[31:0]從多路復(fù)用器12_3輸出同時寄存器12_4可以存儲在存儲器40中。
圖8A到8C示出了根據(jù)本發(fā)明的一個示例性實施例的蒙哥馬利乘法器的功能結(jié)構(gòu)框圖。圖8A到8C表示的蒙哥馬利乘法器可以包括用來存儲模M的模寄存器102和103、用來存儲被乘數(shù)A的被乘數(shù)寄存器104和105、存儲乘數(shù)B的乘數(shù)寄存器106、用來存儲以前行(SI)的結(jié)果值的優(yōu)先值寄存器101、蒙哥馬利記錄器110、亭記錄器140、用來產(chǎn)生一個模乘積MM的倍模產(chǎn)生器120、用來產(chǎn)生一個部分乘積PP的部分乘積產(chǎn)生器130、用來執(zhí)行蒙哥馬利乘法運算的累加器150、以及用來在累加器150中對三個結(jié)果值(進位,和,較低位)求和的CPA模塊160。
存儲在寄存器101~105的每個操作數(shù)的長度可以為(c+w/2)+1。每個寄存器可以包括一個并行輸入并行輸出(PIPO)寄存器并可以分為可控的1位觸發(fā)器以及2*(c/w)+1子寄存器。子寄存器的長度可以是w/2。
圖9示出了根據(jù)本發(fā)明的一個示例性實施例的用于存儲被乘數(shù)值A(chǔ)的示例性寄存器105的電路結(jié)構(gòu)。寄存器105的結(jié)構(gòu)是一個實例;寄存器101~105的每個可以具有相同的結(jié)構(gòu)。參考圖9,寄存器105可以被設(shè)置成c=256和w=32的情況,并可以包括17個子寄存器200~216和一個符號寄存器220。雖然顯示了17個子寄存器,但給定的寄存器可以包括的子寄存器可以例如比17更多或更少,其具體的數(shù)量可以隨應(yīng)用而定。
當c=256和w=32,每個子寄存器200~216的大小可以是16位(表示半個字)而符號寄存器220的大小可以是1位。偶數(shù)子寄存器200,202,204,...,和216可以接收從存儲器接口12所提供的數(shù)據(jù)(32位字)的低16位PEG_DI[15:0],而奇數(shù)子寄存器201,203,205,...,和215可以接收從存儲器接口12所提供的數(shù)據(jù)(32位字)的高16位REG_DI[31:16]。
在其初始形式中,操作數(shù)的位長n是塊位長c的整數(shù)倍,因此符號位由于其間所提供的亭和蒙哥馬利記錄函數(shù)而被加入到操作數(shù)中。因此,在蒙哥馬利乘法器數(shù)據(jù)路徑100中所使用的每個操作數(shù)的位長(c’)變?yōu)閏’=c+k,其中k的最小值為1。參數(shù)c’可以稱作為“拓展塊的位長”也可以作為表示拓展塊的位長的參數(shù)。在實際中,當輸入數(shù)據(jù)從存儲器40讀出并且數(shù)據(jù)總線寬度w=32使得一個字,半個字,四分之一字分別為32,16,8位時,作為數(shù)據(jù)傳送率,根據(jù)數(shù)據(jù)的傳送率k的可以獲取的值為w,w/2,和w/4。更小的k值降低了用于單元乘法運算(附圖1中的CSA運算)的重復(fù)周期次數(shù),因而減小了執(zhí)行重復(fù)周期的相應(yīng)的硬件的尺寸。這對于用減小的電路尺寸和/或功耗等實現(xiàn)較大的計算性能有好處。
因此,當k=w/2而不是k=w時可以實現(xiàn)簡化硬件結(jié)構(gòu),而與k=w/2比較如果k=w/4具有更簡化的硬件結(jié)構(gòu)。因此對k來說可用的值可以是w,w/2,和w/4中的一個。例如,本發(fā)明示例性實施例中k的值是k=w/2。因此,例如當塊位長c=256,字長w=32,k=32/2=16時,拓展塊位長c’可以定義為c’=272位(因為c’=c+k而k=w/2,c’=256+16=272)。存儲在SFR13中的符號位SIGN_S可以通過存儲器接口12存儲在符號寄存器220中。
每個子寄存器響應(yīng)選通時鐘或加載使能控制信號,執(zhí)行可選擇的數(shù)據(jù)加載運算。因此,從寄存器105輸出的被乘數(shù)AX_PIPO_REG[272:0]包括273位(拓展的272位塊位長和1位SIGN_S位)。寄存器101-104的結(jié)構(gòu)與寄存器105相同。如圖8B所示,提供給寄存器101~105的數(shù)據(jù)為REG_DI[31:0]。如圖5所示,例如,數(shù)據(jù)REG_DI[31:0]可以通過合并從存儲器40提供給存儲器接口12的字長數(shù)據(jù)RAM_DI[32:0]、符號位SIGN_A、SIGN_B、和SIGN_S、以及以前結(jié)果值的第二更高位MS1B_S而產(chǎn)生。如圖6所示的真值表,控制信號FORCE_RI[2:0]確定何時和怎樣為設(shè)定數(shù)據(jù)REG_DI[31:0]而產(chǎn)生合并。
優(yōu)先值寄存器101可以用來提供以前行的結(jié)果值,SI,來計算當前行。在圖8B中,其顯示為SI_PIPO_REG[272:0]。
兩個模寄存器102和103用來提供模值M(參見圖8B,MY_PIPO_REG[272:0]和MX_PIPO_REG[272:0])給倍模寄存器120,而兩個被乘數(shù)寄存器104和105用來提供被乘數(shù)A給部分乘積產(chǎn)生器130(圖8B,AY_PIPO_REG[272:0]和AX_PIPO_REG[272:0])。使用兩個寄存器來分別存儲被乘數(shù)值A(chǔ)和模值M的原因是為了提高處理A和M的速度。例如,在用于被乘數(shù)A的兩個寄存器104和105中,一個寄存器(104或105)用來存儲用在蒙哥馬利乘法器的數(shù)據(jù)路徑100中的當前單元乘法運算中的被乘數(shù)值A(chǔ),而另一個用來存儲用于下一個單元乘法運算所用使用的被乘數(shù)值A(chǔ)。類似地,在用于模M的兩個寄存器102和103中,一個寄存器(102或103)用來存儲在蒙哥馬利乘法器10中當前單元乘法運算所使用的模值M,而另一個寄存器用來存儲下一個單元乘法運算所使用的模值M。因此,在完成當前單元乘法運算后,可以無遲延地開始下一個單元乘法運算,以從存儲器中讀取被乘數(shù)和模值。
乘法器10通過重復(fù)處理周期取得了一個蒙哥馬利乘法解決方案。蒙哥馬利記錄器110和模乘積產(chǎn)生器120來用來選擇模乘積MMI。在所選定的的模乘積MMI中,蒙哥馬利記錄器110接收從累加器150來的重復(fù)數(shù)據(jù)。在本發(fā)明的示例性實施例中的重復(fù)數(shù)據(jù)SPPI[1:0]可以基于存儲在累加器150中的和ACC_S_REGI[1:0]、進位ACC_C_REGI[1:0]、較低位ACC_L_REGI[2:0]以及部分乘積PPI[1:0],以及基于用于累加器150的反饋輸入的移位控制信號SHIFT_ACC而產(chǎn)生。根據(jù)本發(fā)明的示例性實施例,重復(fù)數(shù)據(jù)SPPI[1:0]可以以位長(或大小)變化。例如,SPPI可以多于兩(2)位,如實施例中的其他部件那樣。
圖10示出了根據(jù)本發(fā)明的一個示例性實施例的用于產(chǎn)生模乘積值MMI的模乘積產(chǎn)生器120的結(jié)構(gòu)。模乘積產(chǎn)生器120可以包括多路復(fù)用器301~303和AND門304。響應(yīng)于寄存器選擇信號USE_X_REG,多路復(fù)用器301輸出從模寄存器102和103所提供的模MY_PIPO_REG[272:0]和MX_PIPO_REG[272:0]中的一個。
響應(yīng)模乘積選擇信號SEL_MM[1:0],多路復(fù)用器303輸出以前值SI_PIPO_REG[272:0]、M、2M和-M中的一個。值2M可以通過將由多路復(fù)用器302輸出的值M左移一位并在LSB處插入“0”而獲得。值-M可以通過位反相由多路復(fù)用器302輸出的值M而得到。
AND門304將從蒙哥馬利記錄器110(參見圖8A)來的模乘積使能信號EN_MM與多路復(fù)用器303的輸出合并,以輸出模乘積MMI。模乘積MMI可以包括(c+w/2)+2位。例如,當c=256而w=16時,MMI為274位。模乘積使能信號EN_MM可以用來設(shè)定模乘積MMI為“0”。如圖8B所示,模乘積MMI提供給累加器150。
圖11示出了根據(jù)本發(fā)明的一個示例性實施例的由蒙哥馬利記錄器110所設(shè)置的編碼的真值表。雖然圖11顯示了三個輸入M[1]和SPPI[1:0]提供給了蒙哥馬利記錄器110,但示例性實施例可以配置為具有任意數(shù)量的輸入和輸出。
如前所討論的,在典型的4基數(shù)系統(tǒng)中的模乘積MMI可以包括0,M,2M和3M。要獲取3M典型地需要一個將2M加入到M中的附加的加法器或存儲元件。加法器和/或存儲元件的添加有助于硬件的尺寸和/或計算延遲,這影響了計算的速度和使用的功率。圖11所示的編碼方法使用了位轉(zhuǎn)換(bitinversion)和位移位,以在無需附加加法器或存儲元件的情況下獲取模乘積MMI。蒙哥馬利記錄器110接收模M的第二LSBM[1]和SPPI的兩個LSB,即SPPI[1:0]。蒙哥馬利記錄器110輸出模乘積選擇信號SEL_MM[1:0],模乘積使能信號EN_MM,以及符號反轉(zhuǎn)信號NEG_MM來表示信號反轉(zhuǎn)(即,信號NEG_MM表示是否使用位轉(zhuǎn)換,獲取-M)。
在本發(fā)明的另一個示例性實施例中,可使用一種與分別在圖13和14中所示的部分乘積產(chǎn)生器130和亭記錄器140中所使用的類似的能降低硬件尺寸,提升計算速度和/或降低功耗的方法。總地來說,乘法器100通過累加器150接收模乘積MMI和部分乘積PP1,隨后通過重復(fù)運算周期執(zhí)行模乘法。以后將更詳細地描述圖13和14。
圖12示出了根據(jù)本發(fā)明的一個示例性實施例的用于存儲乘數(shù)B的寄存器106。乘數(shù)寄存器106在除了為校正累加器150的初始值的周期外的每個周期存儲從存儲器40接收到的乘數(shù)B接著在乘數(shù)B的以前周期的LSBB1和B0和低位LSB中,通過位移將更高的位BR向右輸出。如圖12所示,乘數(shù)寄存器106包括一個移位寄存器401,多路復(fù)用器402和405,以及觸發(fā)器403和404。
移位寄存器401可以設(shè)置成與字長(w=32)具有相同的位長,并可以響應(yīng)移位選擇信號SFT_BI_PISO運轉(zhuǎn)。移位寄存器401在移位選擇信號SFT_BI_PISO為邏輯“0”時通過存儲器接口12的REG_DI[31:0]重新接收乘法器數(shù)據(jù)字,而在移位選擇信號SFT_BI_PISO為邏輯“1”時將接收到的字的右移兩位。移位寄存器401的兩個LSB B1和B0輸出到亭記錄器140。
提供一個信號STO_BR_ROW以存儲在單元乘法運算的最后周期中所使用的第二LSB B1為低(即,當移位選擇信號SFT_BI_PISO為邏輯“0”)。多路復(fù)用器402可選擇地輸出存儲在觸發(fā)器403中的值或移位寄存器401的第二LSB B1。觸發(fā)器403存儲多路復(fù)用器402的輸出,而觸發(fā)器404存儲移位寄存器401的第二LSB B1。提供一個信號USE_BR_ROW來控制觸發(fā)器403的值BR_ROW作為在第二個周期中(即,在校正累加器150的初始值周期后的下一個周期)的位BR來選擇。位BR提供給亭記錄器140。
亭記錄器140和部分乘積選擇器130用來選擇部分乘積PPI,0,A,A,2A和2A中的該值,提供給累加器150。如圖8A到8C所示,亭記錄器140接收從寄存器106來的乘法器B的位B1,B0和BR,并提供部分乘積選擇信號SEL_PP[1:0]、部分乘積使能信號EN_PP、以及部分乘積符號反向信號NEG_PP給部分乘積產(chǎn)生器130。
圖13示出了根據(jù)本發(fā)明的一個示例性實施例的部分乘積產(chǎn)生器130的示例性電路。部分乘積產(chǎn)生器130可以包括多路復(fù)用器501~503和一個AND門504。多路復(fù)用器501響應(yīng)于寄存器選擇信號USE_X_REG,從寄存器104和105所提供的被乘數(shù)AY_PIPO_REG[272:0]和AX_PIPO_REG[272:0]之中輸出一個給定的被乘數(shù)值A(chǔ)(即A[272:0])。
多路復(fù)用器503響應(yīng)于通過亭記錄器140所提供的模乘積選擇信號SEL_PP[1:0],輸出一個從2A,A,2A和A所選擇的被乘數(shù)值。值2A通過將多路復(fù)用器501所輸出的A左移一位并在最低有效位處插入“1”而得到。值2A通過將多路復(fù)用器501輸出的值A(chǔ)左移一位并在最低有效位處插入“0”而得到。
AND門504輸出部分乘積模乘積PPI,其是通過邏輯地合并亭記錄器140的部分乘積使能信號EN_PP與多路復(fù)用器503的輸出而得到的。部分乘積使能信號EN_PP用來產(chǎn)生“0”作為部分乘積PPI。部分乘積PPI可以是(c+w/2)+2位。在此例中,當c=256而w=32時,部分乘積PPI為274位。部分乘積PPI提供給累加器150。
圖14示出了根據(jù)本發(fā)明的一個示例性實施例的由亭記錄器140所管理的編碼的真值表。雖然圖14公開了三個輸入B1,B0和BR提供給亭記錄器140,但示例性實施例可以具有所希望的任意數(shù)量的輸入和輸出。
再回到圖8A到8C,由模乘積產(chǎn)生器120所產(chǎn)生的模乘積MMI[273:0]和由部分乘積產(chǎn)生器130所產(chǎn)生的部分乘積PPI[273:0]被提供給了累加器150。
圖15示出了根據(jù)本發(fā)明的一個示例性實施例的累加器150。參考圖15,累加器150可以包括串聯(lián)的具有c’=c+w/2+5位的4∶2壓縮器610~617。如前面參考圖10和13所討論的,模乘積MMI和部分乘積PPI的每個位長都為(c+w/2)+2位。
累加器150可以將運算結(jié)果分開存儲在和寄存器620,進位寄存器630,和較低值寄存器650。和寄存器620可以包括有(c+w/2)+3位的觸發(fā)器。進位寄存器630可以具有(c+w/2)+4位數(shù)量的觸發(fā)器。較低值寄存器650可以包括三個觸發(fā)器。圖8B所示的CPA模塊160接收每個都在和寄存器620和進位寄存器630的輸出中的低c+1位ACC_S_REG[c:0]和ACC_C_REG[c:0],和在低值寄存器650的輸出位中的MSB ACC_L_REG[2]。而且,低位寄存器650的兩個LSB ACC_L_REG[2:0]均提供給SPP產(chǎn)生器170,如圖8c所示。
在示例性實施例中,到累加器150的輸入包括模乘積MMI,部分乘積PPI,模乘積反向信號NEG_MM,部分乘積反向信號NEG_PP,以及用于累加器150的反饋輸入的移位控制信號SHIFT_ACC。示例性的累加器150可以設(shè)計成CSA結(jié)構(gòu),用來防止進位傳遞延遲所導(dǎo)致的性能下降。壓縮器610-617的每個可以包括四個輸入和兩個輸出,即4∶2壓縮器。
圖18顯示了一個示例性的4∶2壓縮器的電路。壓縮器612具有多個輸入。壓縮器的輸入值具有一個循環(huán)索引I而輸出值具有一個循環(huán)索引I+1。
對于此例,壓縮器612可以包括全加器701和702。第一全加器701接收CI,PI,和PPI,接著輸出第一全加器進位C0和第一全加器和S0。第一全加器進位C0作為輸出進位CN而輸出,其是下一個更高位位置壓縮器k+1(即在圖15中的壓縮器612和613之間緊鄰壓縮器612的壓縮器)的輸入CP。第二全加器702接收該第一全加器的和S0,模乘積MMI,以及1位低值位置壓縮器(即,壓縮器611)的進位CP,并輸出一個第二全加器進位C0和第二全加器和S0。第二全加器進位C0作為下一個進位CI+1而輸出,其用做提供給1位低值位置壓縮器611的進位CI。第二全加器和S0用做提供給2位較低位位置壓縮器的和SI。最低位位置壓縮器(即,壓縮器610)接收部分乘積反向信號NEG_PP作為進位CP的輸入。
4∶2壓縮器612的輸入和輸出之間的關(guān)系可以用以下等式來表示。
2CN+2CI+1+SI+1=CP+CI+SI+PPI+MMI
回到圖15,全加器640接收從第一壓縮器610輸出的和SI
,模乘積的最低位MMI
,和模乘積反向信號NEG_MM。全加器641接收從第二壓縮器611輸出的和位,從第一壓縮器610輸出的進位位,和從全加器640輸出的進位位。全加器640的和,全加器641的和與進位均存儲在低值寄存器650中。
累加器150相應(yīng)于當前單元乘法運算,從用于單元乘法的第一周期中在前行中的結(jié)果起,累加一個結(jié)果。這樣的過程稱為初始值校正周期,并由多路復(fù)用器600-609提供。
壓縮器的一個輸入端連接兩個多路復(fù)用器。例如,兩個多路復(fù)用器600和601連接到相應(yīng)于模和部分乘積的LSB MMI
和PPI
的第一壓縮器610。多路復(fù)用器600接收和位ACC_S_REG
作為第一輸入而將從它的2位高位位置壓縮器所提供的低值A(chǔ)CC_L_REG
作為第二輸入。多路復(fù)用器601接收和位ACC_S_REG
作為第一輸入和從1位高位位置壓縮器611所提供的低值A(chǔ)CC_L_REG[2]作為第二輸入。
對于第二壓縮器611,多路復(fù)用器602接收和位ACC_S_REG[1]作為第一輸入并接收從它的2位高位位置壓縮器所提供的低值A(chǔ)CC_L_REG[1],作為第二輸入。多路復(fù)用器603接收和位ACC_S_REG[1]作為第一輸入和從它的1位高位位置壓縮器612所提供的低值A(chǔ)CC_L_REG[2]作為第二輸入。
至于第三壓縮器612,多路復(fù)用器604接收它的2位高壓縮器的和位ACC_S_REG[2]作為第一輸入,并且接收與其連接的壓縮器612的和位ACC_S_REG
作為第二輸入。多路復(fù)用器605接收它的1位高壓縮器的進位ACC_C_REG[2]作為第一輸入,并且接收它的1位較低壓縮器(即,壓縮器611)的進位位ACC_C_REG
作為第二輸入。
通過最后的壓縮器617連接到第三壓縮器612的第一和第二多路復(fù)用器具有相同的結(jié)構(gòu)。但是,連接到最高壓縮器617的多路復(fù)用器608的第一輸入為連接到其本身的壓縮器617的和位,而第二多路復(fù)用器609的第一輸入是連接到其本身的壓縮器617的進位位。
連接到比最高位位置要低的壓縮器616的多路復(fù)用器606的第一輸入是它的1位高壓縮器617的和位。從最高位位置提供給四個高壓縮器617、616、615和614的模和部分乘積、PPI和MMI每個均具有相同的PPI和MMI的MSB。
圖16示出了當移位信號SHIFT_ACC為邏輯“1”時,輸入到壓縮器中的信號的配置。僅僅在累加器的初始值校正周期后的一周期期間,移位信號SHIFT_ACC為邏輯“0”,而在其余的周期期間均為邏輯“1”。當移位信號SHIFT_ACC為邏輯“1”時,第一和第二多路復(fù)用器的每個,600,602,...,和608,和601,603,...,和609輸出其第一輸入作為輸出,如圖16所示。
對于除了累加器150的初始值校正周期外的所有周期,存儲在低值寄存器650中的和S0[1:0]被輸出。由壓縮器612~617所提供的進位、和、以及低值都存儲在進位寄存器630、和寄存器620、以及低位寄存器650中,并在下一個周期返回到壓縮器610~617的反饋循環(huán)。由于在下一個周期中要被累加的部分乘積和倍模乘積比先前周期的要高出兩位,因此需要它們被反饋輸入到比先前存儲位置要低兩位的位位置。
圖17示出了當移位信號SHIFT_ACC為邏輯“0”時,輸入到壓縮器中的信號的配置。當移位信號SHIFT_ACC為邏輯“0”時,第一和第二多路復(fù)用器,600,602,...,和608,和601,603,...,和609的每個輸出其第二輸入作為其輸出,如圖17所示。
在每個框的累加器150的初始值校正周期中,累加器150通過累加一個值來執(zhí)行用于校正累加器150的起始值的運算,所述值與在先行的所得結(jié)果值之中的給定位位置中的寄存器中存儲的值相匹配。同時,存儲在和寄存器620、進位寄存器630和低值寄存器650中的值可以在反饋循環(huán)中提供作為累加器150的輸入,而無需改變位的位置。
如上所述,部分乘積為PPI={-2A,-A,0,+A,+2A}而模乘積為MMI={SI,-M,0,+M,+2M}。對于累加器150的初始值校正周期,0和SI可分別選做為部分乘積PPI和模乘積MMI。對于累加器150的初始值校正周期節(jié)省的所有的其余周期,部分乘積PPI和模乘積MMI根據(jù)圖11和14中的真值表所示的編碼方法來選定。
被選擇作為部分和模乘積的值-A和-M可以通過位反向而得到。通過對A和M每個左移一位可以得到值+2A和+2M,而值-2A可以通過將A向左移一位后再反向而得到。通過左移以及位反向運算而得到的部分和模乘積結(jié)果可作為1的余數(shù)。根據(jù)本發(fā)明的示例性實施例的乘法器10可以用于使用2的余數(shù)的系統(tǒng)的操作。2的余數(shù)等于將“1”加入到1的余數(shù)中所得的數(shù)。部分乘積的反向信號NEG_PP和模乘積的反向信號NEG_MM可以用來表示1的余數(shù)-A,-2A和-M作為它們的2的余數(shù)。換句話說,當部分乘積PP為-A或-2A時部分乘積反向信號NEG_PP為“1”,而當部分乘積PP為0,+A或+2A時部分乘積反向信號NEG_PP為“0”。模乘積反向信號NEG_MM在模乘積MMI為-M時置為“1”,而在在模乘積MMI為SI,0,+M或+2時置為“0”。
根據(jù)本發(fā)明的示例性實施例的蒙哥馬利乘法器為了執(zhí)行一個多精度的運算可以設(shè)置成如圖1所示的運算矩陣形式。同時,該示例性的蒙哥馬利乘法器的內(nèi)部數(shù)據(jù)可以用最優(yōu)化的位長表示而不會數(shù)據(jù)溢出,因此可以防止無必要設(shè)計的太多的位。以下的數(shù)學分析可以為在運算矩陣中的每行的運算結(jié)果值提供一個示例性的范圍,從而確定表示每行運算所得結(jié)果所需的位數(shù)。在圖1所示的運算矩陣的行中,除了最后一行外的所有行都使用了如下的被乘數(shù)A,乘數(shù)B,以及模M。
M2n-1+1≤M<2n-1A-M≤A<+MB-2C+W/2-1≤B<2C+W/2-1從第一行(參見圖1的ROW_0)所產(chǎn)生的中間結(jié)果S0由公式4所確定。
SO=A·B+Q·MR]]>在公式4中,R表示常數(shù)2c+w/2。由于這里所描述的該示例性蒙哥馬利乘法器與基數(shù)4的結(jié)構(gòu)關(guān)聯(lián),因此該乘法器每個周期處理乘數(shù)B的2位。同時在每個周期中使用的Q值從{-1,0,+1,+2}中選擇一個。因此,在給定行中的Q的最大和最小值可由下面公式5來確定。
Max(Q)=(+2)·20+(+2)·22+(+2)·24+...+(+2)·2c+w/2-2=2·[4c+w/22-14-1]=23·(2c+w/2-1)]]>Min(Q)=(-1)·20+(-1)·22+(-1)·24+...+(-1)·2c+w/2-2=-1·[4c+w/22-14-1]=-13·(2c+w/2-1)]]>使用以上的條件,則中間結(jié)果S0的最大和最小值可以通過以下的公式6得到。
Max(S0)=M·(2c+w/2-1-1)+23·(2c+w/2-1)·M2c+w/2-1·(12+23)·M=76·M]]>Min(S0)=M·(-2c+w/2-1-1)-13·(2c+w/2-1)·M2c+w/2-1·(-12-13)·M=-56·M]]>由于模M具有n位,因此在以上所述的范圍內(nèi)通過一數(shù)字表示的所需數(shù)為n+2位,并包括一個符號位。
從第二行(圖1中的ROW_1)所得到的中間結(jié)果S1可以根據(jù)前面的第一行的中間結(jié)果S0而得到。對S1的計算可以用以下的公式7來描述。
S1=S0+A·B+Q·MR]]>S1的最大和最小值可以通過以下的公式8來確定。
Max(S1)=76·M+M·(2c+w/2-1-1)+23·(2c+w/2-1)·M2c+w/2]]>=(76·12c+w/2+12+23)·M=76·(12c+w/2+1)·M=76·M]]>Min(S1)=-56·M+M·(-2c+w/2-1-1)-13·(2c+w/2-1)·M2c+w/2]]>=(-56·12c+w/2-12-13)·M=-56·(12c+w/2+1)·M=-56·M]]>在由上述公式8所規(guī)定的范圍內(nèi)表示的該數(shù)字的位數(shù)也是n+2位。通過相同的方式,第三行(附圖1,ROW_2)的中間結(jié)果S2也能用n+2位表示。
此外,在結(jié)果和行的單組為多精度的最后行而存在的情況下,單精度的結(jié)果值可以用包括一個符號位的n+1位表示。這一特性可以用以下的步驟來證實。
被乘數(shù)A,乘數(shù)B,以及模M的范圍可以通過公式9來設(shè)定。
M2n-1+1≤M<2n+12cp-1+1≤M<2cp-1A-M≤A<+MB-M≤B<+M最終結(jié)果S可以如公式10所示來概括。
S=A·B+Q·MR]]>在公式10中,參數(shù)R為常量并等于2(c+w/2)p。公式10所示的Q的最大和最小值可以通過公式11來確定。
Max(Q)=(+2)·20+(+2)·22+(+2)·24+...+(+2)·2(c+w/2)·p-2=2·[4(c+w/2)·p2-14-1]=23·(2(c+w/2)·p-1)]]>Min(Q)=(-1)·20+(-1)·22+(-1)·24+...+(-1)·2(c+w/2)·p-2=-1·[4(c+w/2)·p2-14-1]=-13·(2(c+w/2)·p-1)]]>因此,最終結(jié)果S的最大和最小值可以通過下面的公式12而取得。
Max(S)=M·(2c·p-1)+23·(2(c+w/2)·p-1)·M2(c+w/2)·p·(12(w/2)·p+23)·M=+M]]>Min(S)=M·(-2c·p-1)-13·(2(c+w/2)·p-1)·M2(c+w/2)·p·(-12(w/2)·p-13)·M=-M]]>表示以上條件范圍中的數(shù)的位數(shù)為n+1。
如以上所述,在多精度運算方法中,在超出從其他行(圖1的中間行ROW_0到ROW_2)確定的中間結(jié)果的+M的范圍時會產(chǎn)生數(shù)據(jù)溢出,但最后一行(圖1的ROW_3)的中間結(jié)果卻處于最大值的附近。這樣的情況對應(yīng)于為每個周期所選擇的Q值在高位位置周圍幾乎都為+2,并且被乘數(shù)A的符號等于在對應(yīng)內(nèi)部行使用的乘數(shù)值B的塊符號。
每行的運算結(jié)果均用n+2位表示。但是,當n是w的整數(shù)倍同時存儲器40的大小也為w的整數(shù)倍時,在存儲器40中不能有效地存儲附加的兩位。因此,根據(jù)本發(fā)明的示例性實施例,在n+2位中的低n位可以存儲在存儲器40中而其余的2位(即,符號位,也就是最高位(MSB),和第二MSB)存儲在蒙哥馬利乘法器10的內(nèi)部寄存器(圖3,SFR13)中。高2位可以稱為SIGN_S和MS1B_S。
在完成直到最后一行的運算處理后,符號位符號SIGN_S和第二高位MS1B_S具有同樣的值。但是,在完成對內(nèi)部行的運算處理后,第二高位可以根據(jù)符號位設(shè)定的“0”而設(shè)定為“1”。
根據(jù)本發(fā)明的示例性實施例的蒙哥馬利乘法器數(shù)據(jù)路徑100可以進一步包括移位寄存器106,115,116和180。在每個移位寄存器106,115,116和180中所接受的位長為w,因此在每個寄存器中它的位一個周期可以右移2位。寄存器106和115可以是并行輸入串行輸出移位寄存器,而寄存器116和180可以是串行輸入并行輸出移位寄存器。
每個周期所產(chǎn)生的模乘積MMI可以指定給僅僅在累加器150的初始值校正周期中的前一個結(jié)果SI。每個周期所產(chǎn)生的MMI可以通過由圖11所示的用于其他周期的真值表所確定的qIM來選擇。這里,qI為{-1,0,1,2}。
對于圖1所示的行,第一單元乘法運算CSA0.0,CSA1.0,CSA2.0,和CSA3.0(以下稱為“Gen-Q Box”)可以根據(jù)qI的計算而執(zhí)行,所確定的qI值可以存儲在存儲器40中以便重復(fù)利用在相同行的單元乘法運算中的qI。圖8A到8C所示的蒙哥馬利記錄器110對于每行第一單元乘法運算Gen-Q Box除了累加器150的起始值校正周期之外的所有周期產(chǎn)生具有兩(2)位符號的QO[1:0],隨后再將該QO[1:0]存儲到移位寄存器116中。
圖19顯示了移位寄存器116為QO_SIPO_REG[15:0]的詳細的配置。該移位寄存器116每一周期將數(shù)據(jù)位右移2位并在高2位位置處存儲由蒙哥馬利記錄器110所提供的QO[1:0]。每當在其中引入新的字長數(shù)據(jù)時,該移位寄存器116將其數(shù)據(jù)(即,QO_SIPO_REG[31:0])傳送到存儲器40。
圖20顯示了移位寄存器115為QI_PISO_REG[15:0]的詳細的配置。存儲在存儲器40中的QO以字長W為單元傳送到移位寄存器115中。移位寄存器115的低值QI[1:0]提供給蒙哥馬利記錄器110。移位寄存器115當移位控制信號SFT_QI_PISO為“0”時響應(yīng)于一個時鐘信號,從存儲器40接收新數(shù)據(jù),但當移位控制信號SFT_QI_PISO為“1”時將其數(shù)據(jù)右移2位。
除了對于每行的第一單元乘法運算Gen-Q Box外剩余的全部單元乘法運算CSA0.1-CSA0.3,CSA1.1-CSA1.3,CSA2.1-CSA2.3,和CSA3.1-CSA3.3(以下稱為“Gen-S Box”)來說,2位乘法結(jié)果SO[1:0](表示累加器150的和)對于除累加器150的初始值校正周期外的每個周期而產(chǎn)生。該SO[1:0]值按序存儲在移位寄存器180中。
圖21顯示了用來存儲累加器150的和SO[1:0]的移位寄存器180的詳細配置。移位寄存器180響應(yīng)一個時鐘信號,將它的數(shù)據(jù)一周期右移2位,并在高2位位置處存儲累加器150的SO[1:0]值。每當在其中引入新的字長數(shù)據(jù)時,移位寄存器180將其數(shù)據(jù)SO_SIPO_REG[31:0]傳送到存儲器40。
圖22顯示了用于產(chǎn)生使用在蒙哥馬利記錄器110中的部分乘積重復(fù)數(shù)據(jù)SPPI[1:0]的SPP產(chǎn)生電路170。該部分乘積重復(fù)數(shù)據(jù)SPPI[1:0]可以基于存儲在累加器150中的和,和寄存器620的ACC_S_REG[1:0]以及進位寄存器630的ACC_C_REG[1:0]兩個LSB,較低位寄存器650的值A(chǔ)CC_L_REG[2:0],部分乘積的兩個LSB PPI[1:0],以及用于累加器150的反饋輸入的移位控制信號SHIFT_ACC而確定。值A(chǔ)CC_S_REG[1:0],ACC_C_REG[1:0],和ACC_L_REG[2:0]可以通過2位加法器801求和。來自2位加法器801的求和的值通過2位加法器802而與PPI[1:0]求和。2位加法器803將PPI[1:0]與ACC_L_REG[1:0]求和。多路復(fù)用器804在移位控制信號SHIFT_ACC為邏輯“0”時選擇加法器802的輸出,而在移位控制信號SHIFT_ACC為邏輯“1”時通過選擇加法器803的輸出而輸出重復(fù)部分乘積數(shù)據(jù)SPPI[1:0]。如以上所述,重復(fù)部分乘積數(shù)據(jù)SPPI[1:0]可以提供給蒙哥馬利記錄器110。本發(fā)明的示例性實施例中沒有位的尺寸(或長度)的限制。例如,重復(fù)部分乘積數(shù)據(jù)SPPI可以多于2位,如實施例中的其他部分那樣。
圖23示出了根據(jù)本發(fā)明的一個示例性實施例的進位傳送加法器(CPA)運算模塊160的電路結(jié)構(gòu)。例如,C=256而w=32。在圖1所示的CPA中運算模塊160,CPA0,CPA1,CPA2,和CPA3可以按序運算。多路復(fù)用器901接收在存儲于累加器150的進位寄存器630的進位位中的低值A(chǔ)CC_C_REG[255:0]作為塊長度。多路復(fù)用器902輸入存儲在累加器150的和寄存器620中的和S[255:0]。響應(yīng)輸入選擇信號SEL_CPA_IN[2:0],多路復(fù)用器901和902按序在256個輸入位中從LSB選擇32位。來自多路復(fù)用器901和902的輸出可以分別存儲在寄存器903和904中。輸入選擇信號SEL_CPA_IN[2:0]可以從“0000”變到“1111”。因此,CPA模塊160通過以32位為單元進行8個重復(fù)CPA周期而能夠處理256位的運算。
進位傳遞加法器905將多路復(fù)用器902的進位輸入C_IN加入到存儲在寄存器903和904中的值CPA_A_REG[31:0]和CPA_B_REG[31:0]。在完成每行的進位保存加法(CSA)運算后,累加器150所得結(jié)果值為ACC_S_PEG[256:0]+ACC_C_REG[256:0]+ACC_L_REG[2],這個結(jié)果通過CPA運算的經(jīng)由求和轉(zhuǎn)換成單一數(shù)字后存儲在存儲器40中。因此,在CPA運算的第一周期中(即,SEL_CPA_IN[2:0]=“000”)進位輸入C_IN為ACC_L_REG[2],而在剩余周期中(即,從SEL_SPA_IN[2:0]=“001”到SEL_CPA_IN[2:0]=“111”)其余進位輸入C_IN為先前運算周期的進位輸出C_OUT。來自進位傳遞加法器905的進位輸出C_OUT可以存儲在寄存器906中。
用于一行的結(jié)果值的新的符號位SIGN_S是通過將進位輸出C_OUT(在CPA模塊160中通過重復(fù)運算將進位ACC_C_REG[255:0]加入和ACC_S_REG[255:0]后所產(chǎn)生的)與ACC_C_REG[256]和ACC_S_REG[256]執(zhí)行一個XOR運算而取得。符號位SIGN_S可以在信號UPD_SIGN_S的控制下變?yōu)樽钚掠嬎闼玫闹???刂菩盘朥PD_SIGN_S直接將第二高位MS1B_S變?yōu)樽钚掠嬎闼玫闹怠?br>
圖24示出了當以偶數(shù)倍多精度模式從每行的最后CSA運算運行轉(zhuǎn)為一個CPA運算時,在累加器150中保持一個給定字的最高半字的特征。在偶數(shù)倍多精度模式(即,雙倍精度模式或四倍精度模式)的情況下,當從每行的最后的CSA運算轉(zhuǎn)到CPA運算步驟時,累加器150的輸出位的最后的半個字(即,當w=32時的16位)保存在寄存器180中而不會傳送到存儲器40中。這種效果如圖24所示。如圖24所示,具有四倍精度模式的乘法器重復(fù)CSA單元運算周期四次。每個單元乘法運算的數(shù)據(jù)長度可以通過以下的公式13來定義(其中c=256,w=32)。
c’=c+w/2=(c/w)*w+w/2=(256/32)*32+32/2=8*32+16=272第二單元運算CSA1的最后半字(16位)與第三單元運算CSA2的第一個半字合并或組合的輸出包括了一個整字。該整字存儲在存儲器40中。另外,由于沒有更多的單元運算模塊,因此第四單元運算CSA3的最后半字的輸出保存在寄存器180中而不會被傳送給存儲器40。為了強制地將保存在寄存器180中的半個字在CPA運算中放入存儲器40中,使用了其中的控制信號IS_IST_CPA_WORD和IS_ODD_PREC。
再回到圖23,在偶數(shù)倍精度模式(IS_ODD_PREC=‘0’)中,低16位,作為在CPA運算的第一周期(IS_IST_CPA_WORD=“1”)中從進位傳遞加法器905輸出的結(jié)果,包括具有存儲在寄存器180中的高16位SO_SIPO_REG[31:16]的一個整字(32位)。該整字存儲在寄存器925中。從進位傳遞加法器905輸出的結(jié)果的高16位存儲在寄存器922中。
在余下的周期中,在來自進位傳遞加法器905的輸出位中的低16位存儲在寄存器925中,并與在前一個周期中存儲器922中的高16位合并。寄存器925的數(shù)據(jù)因此在每個周期中都存儲在存儲器40中。
圖25示出了用于亭記錄器140的給定輸入/輸出信號的邏輯規(guī)則的配置。如以上根據(jù)圖14所討論的,亭記錄器140可以具有組合邏輯電路的結(jié)構(gòu)。在亭記錄器140的輸入和輸出信號之間的邏輯規(guī)則可以如圖25所示來配置。
在圖25中,A[1]和A
是用在當前單元乘法運算中的被乘數(shù)A的兩個LSB。因此,-A的兩個LSB為{A[1]xor A
,A
},而+2A和-2A的兩個LSB為{A
,0}。
當強制部分乘積控制信號FORCE_PP[1:0]為“11”時,部分乘積PPI的值通過乘數(shù)值B1,B0,和BR來確定。另外,當強制部分乘積控制信號FORCE_PP[1:0]為“01”,“10”和“00”時,部分乘積PPI的值分別強制為+A,-A,和0。
在圖1所示的用于每個單元乘法運算的累加器150的初始值校正周期中,前一行的結(jié)果值SI“堆?!痹诶奂悠?50中。這樣的情況發(fā)生時,部分乘積PPI選定為“0”而模乘積MMI選定為前一行的結(jié)果值SI。在累加器150的初始值校正周期中,強制部分乘積選擇信號FORCE_PP[1:0]設(shè)定為“11”來將部分乘積PPI的值強制設(shè)定為“0”。
在根據(jù)本發(fā)明的示例性實施例的蒙哥馬利乘法器10中,模的求冪結(jié)果可以表示為蒙哥馬利余數(shù)“XR mod M”。但是,所需的結(jié)果是通常的余數(shù)“Xmod M”。因此,強制部分乘積控制信號FORCE_PP[1:0]可以用來將蒙哥馬利余數(shù)變換為通常的余數(shù)。例如,可以通過對將乘數(shù)B設(shè)定為“+1”和被乘數(shù)A設(shè)定為蒙哥馬利乘法的結(jié)果值通過再次進行蒙哥馬利乘法而得到通常的余數(shù)。為此,強制部分乘積控制信號FORCE_PP[1:0]可以僅僅在運算矩陣第一行的每個單元運算中的初始值校正周期后的第一個周期中設(shè)定為‘01’,而將部分乘積PPI變?yōu)?A。在余下的所有周期中,強制部分乘積控制信號FORCE_PP[1:0]均設(shè)定為‘11’來‘強制’部分乘積PPI為0。
輸入到亭記錄器140的B1,B0,和BR由乘數(shù)寄存器106提供。參考圖8C,輸入A[1:0]可以從AX_PIPO_REG[1:0]或AY_PIPO_REG[1:0]中選擇一個。輸入SEL_PP_D[1:0]是選擇信號SEL_PP的延遲形式;該延遲是由于延遲電路141(也稱之為“流水線寄存器”141)的鎖存FF1所產(chǎn)生的,如圖8B所示。亭記錄器140的部分乘積使能信號EN_PP和輸出SEL_PP[1:0]被提供給部分乘積產(chǎn)生器130。部分乘積反向信號NEG_PP提供給累加器150,而部分乘積PPI[1:0]從亭記錄器140輸出到SPP產(chǎn)生器170,如圖22所示。
圖26示出了用于蒙哥馬利記錄器110的給定輸入/輸出信號的邏輯規(guī)則的配置。蒙哥馬利記錄器110也可以包括組合邏輯電路。在蒙哥馬利記錄器110的新的輸入和輸出信號之間的示例性邏輯規(guī)則如圖26所示。在圖26中,用于qI(QI[1:0]和QO[1:0])的編碼方法可以通過以下的公式14來概括。
MM=0→qI=“00”MM=+M→qI=“01”MM=-M→qI=“10”MM=+2M→qI=“11”在圖26中,M1表示模M的第二低值。當強制模部分乘積選擇信號FORCE_MM[1:0]為‘11’時,模乘積MMI的值通過重復(fù)部分乘積數(shù)據(jù)SPP[1:0]和M1而確定。但是,當強制模部分乘積選擇信號FORCE_MM[1:0]為‘10’時,模乘積MMI可以強制選擇為前一行的結(jié)果值SI。當FORCE_MM[1:0]為‘01’時,模乘積MMI可以被產(chǎn)生作為由QI[1:0]所選擇的值。
對于運算矩陣所有的單元乘法運算,模乘積MMI的值根據(jù)累加器150的初始值校正周期中的前一行的結(jié)果值SI來選擇。由于必須選擇適于運算矩陣的每行中第一單元運算(即,Gen-Q Box)中的重復(fù)部分乘積數(shù)據(jù)SPP[1:0]和M1模乘積MMI,因此在除了累加器150的初始值校正周期之外所有剩余周期中強制模乘積控制信號FORCE_MM[1:0]均設(shè)定為‘00’。在初始值校正周期中,計算qI接著將其作為QO[1:0]輸出,并通過寄存器116存儲在存儲器40中。
在除了用于運算矩陣的每行的第一單元運算(即,Gen-Q Box)之外的‘剩余’單元運算(即,Gen-S Box)中,通過重復(fù)使用在第一單元運算Gen-QBox期間存儲在存儲器40中的qI(即,輸入QI[1:0])而選擇模乘積MMI。輸入QI[1:0]可以通過將強制模乘積控制信號FORCE_MM[1:0]設(shè)定為‘01’而重復(fù)使用。
根據(jù)本發(fā)明的示例性實施例的乘法數(shù)據(jù)路徑100除了蒙哥馬利乘法運算外還能夠有助于通常的乘法運算。對通常的乘法運算來說,也可以使用其中的強制模乘積控制信號FORCE_MM[1:0]。但是,由于通常的乘法運算無需使用模,因此沒有模乘積MMI。因此,強制模乘積控制信號FORCE_MM[1:0]僅僅用于在每個單元運算的累加器150的初始值校正周期期間設(shè)定為‘10’,其將模乘積MMI設(shè)定為前一行的結(jié)果值SI。在其余的周期期間,強制模乘積控制信號FORCE_MM[1:0]設(shè)定為‘00’以強制模乘積MMI為0。
再回到圖8A,從SPP產(chǎn)生器170提供輸入到蒙哥馬利記錄器110的重復(fù)部分乘積數(shù)據(jù)SPP[1:0]。M1用在第一單元運算(即,Gen-Q Box),并在存儲在寄存器102中的模值M的第二LSB和存儲在寄存器103中的第二LSB之中選擇。同時,QI[1:0]是存儲在寄存器115中的兩個LSB。通過觸發(fā)器111將來自SEL_MM[1:0]的輸入SEL_MM_D[1:0]遲延一個周期。蒙哥馬利記錄器110的輸出QO[1:0]提供給寄存器116。模乘積選擇信號SEL_MM[1:0]和模乘積使能信號EN_MM提供給模乘積產(chǎn)生器120。模乘積反向信號NEG_MM提供給累加器150。
參照圖8B,干擾信號(glitch)去除器114可以用來通過去除出現(xiàn)在輸出信號SEL_MM[1:0]、EN_MM、和NEG_MM的干擾信號而降低其功耗。干擾信號去除器114可以包括鎖存器或觸發(fā)器,并可以根據(jù)在蒙哥馬利乘法器10的另一個寄存器或觸發(fā)器所用的反向時鐘或一個時鐘而操作。干擾信號去除器114的用途可以根據(jù)具體情況而定。如果一應(yīng)用需要更快的運算速度而不是降低功耗,那么可以通過在蒙哥馬利乘法器10中略去干擾信號去除器114而縮短關(guān)鍵途徑的斜度(skew)。
流水線寄存器141用來通過2級的流水線寄存器而增加運算頻率。乘數(shù)寄存器106和亭記錄器140可以比其他的模塊的運行早一個周期??刂菩盘朥SE_X_REG可以一起控制以下的電路組件用于給亭記錄器選擇輸入信號A[1:0]的多路復(fù)用器142、模乘積產(chǎn)生器120、部分乘積產(chǎn)生器130、多路復(fù)用器113和選擇信號M1輸入給蒙哥馬利記錄器110的觸發(fā)器112。這里,由于流水線運算,只有選擇亭記錄器140的輸入信號A[1:0]的多路復(fù)用器142直接使用控制信號USE_X_REG,而其他的電路120、130、112和113接收從控制信號USE_X_REG延遲了一個周期的信號,如圖8B所示。
如以上所述,本發(fā)明的示例性實施例可以用于提供使用了可升級的蒙哥馬利乘法器的多精度乘法運算。而且,該乘法器可以執(zhí)行通常的乘法運算和蒙哥馬利乘法運算。示例性的蒙哥馬利乘法器可配置為通過使用強制模乘積控制信號FORCE_MM[1:0]將一個蒙哥馬利余數(shù)轉(zhuǎn)換為通常的余數(shù)。
雖然本發(fā)明已通過附圖所示的示例性實施例進行了描述,但其并不限于此。對于本領(lǐng)域的技術(shù)人員來說各種置換,修改和變換均可以在不背離本發(fā)明示例性實施例的范圍和精神的前提下進行。
權(quán)利要求
1.一種乘法器,包括一模乘積產(chǎn)生器,用來選擇n位模數(shù)-M,0,M,2M和前一行結(jié)果SI其中之一作為模乘積;一部分乘積產(chǎn)生器,用來選擇-2A,-A,0,+A和+2A被乘數(shù)其中之一作為部分乘積;和一累加器,用來堆棧該所選擇的模乘積和部分乘積。
2.根據(jù)權(quán)利要求1的乘法器,其中M從在n位模數(shù)中的當前輸入拓展位塊中形成;A從在n位被乘數(shù)中的當前輸入拓展位塊中形成。
3.根據(jù)權(quán)利要求2的乘法器,其中前一行結(jié)果從在累加器的前一行的乘法結(jié)果中相應(yīng)當前被乘數(shù)和模數(shù)的輸入拓展塊的位數(shù)而形成。
4.根據(jù)權(quán)利要求2的乘法器,其中模乘積產(chǎn)生器選擇前一行結(jié)果作為在累加器的初始值校正周期中的模乘積。
5.根據(jù)權(quán)利要求4的乘法器,其中部分乘積產(chǎn)生器在累加器的初始值校正周期中設(shè)定部分乘積為‘0’。
6.根據(jù)權(quán)利要求4的乘法器,其中初始值校正周期表示使用n位被乘數(shù)和n位模數(shù)的當前輸入拓展塊位的單元乘法運算的一個第一周期。
7.根據(jù)權(quán)利要求5的乘法器,其中初始值校正周期表示使用了n位被乘數(shù)和n位模數(shù)的當前輸入拓展塊位的單元乘法運算的一個第一周期。
8.根據(jù)權(quán)利要求1的乘法器,其中-M模數(shù)通過對模數(shù)M反向而取得。
9.根據(jù)權(quán)利要求1的乘法器,其中2M模數(shù)通過對模數(shù)M移位而取得。
10.根據(jù)權(quán)利要求2的乘法器,進一步包括一個模寄存器用來存儲n位模數(shù)(M)的當前輸入位;一個被乘數(shù)寄存器用來存儲n位被乘數(shù)(A)的當前輸入位;和一個乘數(shù)寄存器用來存儲n位乘數(shù)(B)的當前輸入位。
11.根據(jù)權(quán)利要求10的乘法器,其中模寄存器和被乘數(shù)寄存器每一個都作為c’+1位寄存器配置,和c’為一個正數(shù),表示n位被乘數(shù)和n位模數(shù)至少之一的拓展塊位長,c’小于或等于n。
12.根據(jù)權(quán)利要求10的乘法器,其中模寄存器進一步包括多個每個大小為半個字的子寄存器,和一個1位符號寄存器。
13.根據(jù)權(quán)利要求12的乘法器,進一步包括用于存儲字長數(shù)據(jù)的存儲器接口模塊,其中模寄存器的多個子存儲器包括偶數(shù)的子寄存器和奇數(shù)的子寄存器,偶數(shù)的子寄存器,配置為用來存儲由存儲器接口模塊所提供的字長數(shù)據(jù)的低有效位半字,和奇數(shù)的子寄存器,配置為用來存儲由存儲器接口模塊所提供的字長數(shù)據(jù)的高有效位半字。
14.根據(jù)權(quán)利要求10的乘法器,其中被乘數(shù)寄存器進一步包括多個每個大小為半個字的子寄存器,和一個1位符號寄存器。
15.根據(jù)權(quán)利要求14的乘法器,進一步包括用于存儲字長數(shù)據(jù)的存儲器接口模塊,其中被乘數(shù)寄存器的多個子存儲器包括偶數(shù)的子寄存器和奇數(shù)的子寄存器,偶數(shù)的子寄存器,配置為用來存儲由存儲器接口模塊所提供的字長數(shù)據(jù)的低有效位半字,和奇數(shù)的子寄存器,配置為用來存儲由存儲器接口模塊所提供的字長數(shù)據(jù)的高有效位半字。
16.根據(jù)權(quán)利要求10的乘法器,進一步包括一個移位寄存器用來存儲n位乘數(shù)的輸入位作為字長(w),該字長等于或小于塊長(c),w≤c≤n,并將數(shù)據(jù)移位兩位。
17.根據(jù)權(quán)利要求16的乘法器,其中部分乘積選擇器從n位乘數(shù)的當前輸入位的三個位(B0,B1,BR)中產(chǎn)生一個部分乘積選擇信號,并選擇n位被乘數(shù)的輸入位A、2A、-A、和-2A其中之一作為部分乘積。
18.根據(jù)權(quán)利要求17的乘法器,其中2A被乘數(shù)通過對A被乘數(shù)移位而得到。
19.根據(jù)權(quán)利要求17的乘法器,其中-A被乘數(shù)通過對A被乘數(shù)反向而得到。
20.根據(jù)權(quán)利要求17的乘法器,其中-2A被乘數(shù)通過對A被乘數(shù)反向并移位而得到。
21.一種運算單元,包括一存儲器;一主機,用來將被乘數(shù)A、乘數(shù)B和模數(shù)M存儲在存儲器中;和權(quán)利要求1的乘法器,用來根據(jù)所存儲的被乘數(shù)、乘數(shù)和模數(shù)在主機的控制下執(zhí)行蒙哥馬利乘法運算,并將蒙哥馬利乘法運算的運算結(jié)果存儲在存儲器中。
22.根據(jù)權(quán)利要求21的運算單元,其中M從在n位模數(shù)中的當前輸入拓展位塊中形成;A從在n位被乘數(shù)中的當前輸入拓展位塊中形成;和前一行結(jié)果從在累加器的前一行乘法結(jié)果中相應(yīng)被乘數(shù)和模數(shù)的當前輸入拓展塊的位中形成。
23.根據(jù)權(quán)利要求21的運算單元,其中模乘積選擇器讀取前一行結(jié)果SI和來自存儲器的n位模數(shù)的一部分,以選擇SI,-M,0,M和2M其中之一作為模乘積,和部分乘積選擇器讀取n位被乘數(shù)的一部分以選擇-2A、-A、0、+A和+2A其中之一作為部分乘積,該選擇的模和部分乘積由累加器堆棧。
24.根據(jù)權(quán)利要求21的運算單元,其中乘法器重復(fù)執(zhí)行蒙哥馬利乘法運算直到被乘數(shù)、乘數(shù)和模都從存儲器中讀取出。
25.根據(jù)權(quán)利要求21的運算單元,其中被乘數(shù)、乘數(shù)和模數(shù)的每個均為n位,和乘法器通過單元乘法運算每個周期的c’位處理讀出的被乘數(shù)、乘數(shù)和模數(shù),其中c’表示被乘數(shù)、乘數(shù)和模數(shù)的位的拓展塊的位長。
26.根據(jù)權(quán)利要求25的運算單元,其中乘法器從存儲器讀取乘數(shù)作為w位塊存儲在大小為w位長度的寄存器中,其中w表示一個字長,依序按d位處理存儲在w位寄存器中的乘數(shù),其中d表示基數(shù)的數(shù)字長,和在處理完w位寄存器存儲的w位后從存儲器讀取乘數(shù)的下一個w位。
27.根據(jù)權(quán)利要求26的運算單元,其中乘法器還進一步包括一個控制器,用來產(chǎn)生一個強制部分乘積控制信號。
28.根據(jù)權(quán)利要求27的運算單元,其中當強制部分乘積控制信號具有第一值時,部分乘積選擇器從乘法器的當前輸入位的三個位(B0、B1、BR)中產(chǎn)生部分乘積選擇信號和部分乘積使能信號,并基于被乘數(shù)(A)的輸入位選擇A、2A、-A、-2A和0其中之一作為部分乘積。
29.根據(jù)權(quán)利要求27的運算單元,其中當強制部分乘積控制信號具有第二值時,部分乘積選擇器選擇被乘數(shù)(A)作為部分乘積。
30.根據(jù)權(quán)利要求27的運算單元,其中當強制部分乘積控制信號具有第三值時,部分乘積選擇器根據(jù)被乘數(shù)(A)選擇-A作為部分乘積。
31.根據(jù)權(quán)利要求27的運算單元,其中強制部分乘積控制信號在累加器的初始值校正周期中具有一個第四值,并且當強制部分乘積控制信號具有該第四值時,部分乘積選擇器選擇0作為部分乘積。
32.根據(jù)權(quán)利要求29的運算單元,其中當強制部分乘積控制信號具有一個第三值時,部分乘積選擇器根據(jù)被乘數(shù)(A)選擇-A作為部分乘積。
33.根據(jù)權(quán)利要求32的運算單元,其中強制部分乘積控制信號在累加器的初始值校正周期中具有一個第四值。
34.根據(jù)權(quán)利要求32的運算單元,其中當強制部分乘積控制信號具有該第四值時,部分乘積選擇器選擇0作為部分乘積。
35.根據(jù)權(quán)利要求27的運算單元,其中乘法器響應(yīng)于存儲在累加器中的進位值、和值和低值、部分乘積、和用于累加器的反饋輸入的移位控制信號產(chǎn)生重復(fù)部分乘積數(shù)據(jù)SPPI。
36.根據(jù)權(quán)利要求35的運算單元,其中該控制器進一步產(chǎn)生一個強制模乘積控制信號。
37.根據(jù)權(quán)利要求36的運算單元,其中當強制模乘積控制信號具有一個第一值時,模乘積選擇器產(chǎn)生一個模乘積選擇信號,以選擇來自重復(fù)數(shù)據(jù)SPPI的-M,0,M和2M以及模(M)的第二較低位中的一個。
38.根據(jù)權(quán)利要求36的運算單元,其中強制模乘積控制信號在累加器的初始值校正周期中具有一個第二值。
39.根據(jù)權(quán)利要求38的運算單元,其中當強制模乘積控制信號具有該第二值時,模乘積選擇器選擇前一行的結(jié)果作為模乘積。
40.根據(jù)權(quán)利要求39的運算單元,其中當強制模乘積控制信號具有一個第三值時,模乘積選擇信號根據(jù)值QI來產(chǎn)生。
41.根據(jù)權(quán)利要求40的運算單元,其中強制模乘積控制信號在除初始值校正周期外的其余周期中都具有一個第四值。
42.根據(jù)權(quán)利要求41的運算單元,其中當強制部分乘積控制信號具有第二值時,模乘積選擇器選擇被乘數(shù)(A)作為部分乘積來得到一個通常的余數(shù)。
43.根據(jù)權(quán)利要求26的運算單元,其中被乘數(shù),乘數(shù)和模數(shù)的每個在單元乘法運算中為c’位,該單元乘法運算在所有的運算周期中執(zhí)行(n/c)*(n/c)次。
44.根據(jù)權(quán)利要求43的運算單元,其中該乘法器重復(fù)以w位從存儲器讀取n位的被乘數(shù)和模數(shù),將w位存儲在大小為c’位長度的c’位存儲器中,和將c’位寄存器的c’位作為一個整體處理。
45.根據(jù)權(quán)利要求44的運算單元,其中每個單元乘法運算的第一運算周期表示累加器的初始值校正周期。
46.根據(jù)權(quán)利要求45的運算單元,其中模乘積選擇器選擇前一行的結(jié)果作為在累加器的初始值校正周期中的模乘積。
47.根據(jù)權(quán)利要求46的運算單元,其中在累加器的初始值校正周期中部分乘積選擇器將部分乘積設(shè)定為‘0’。
48.根據(jù)權(quán)利要求44的運算單元,進一步包括一模寄存器,存儲具有模(M)的當前輸入拓展塊長度(c’)的位;一被乘數(shù)寄存器,存儲具有被乘數(shù)(A)的當前輸入拓展塊長度(c’)的位;和一乘數(shù)寄存器,存儲具有乘數(shù)(B)的當前輸入字長(w)的位。
49.根據(jù)權(quán)利要求48的運算單元,其中模寄存器和被乘數(shù)寄存器每個都實施為c’+1位的寄存器,和c’為一個正數(shù),表示n位被乘數(shù)和n位模數(shù)至少之一的拓展塊位長度,c’小于或等于n。
50.根據(jù)權(quán)利要求48的運算單元,其中模寄存器和被乘數(shù)寄存器的每個還包括多個子寄存器和一個響應(yīng)時鐘信號和加載使能信號之一可選擇地加載一個新值的1位符號寄存器。
51.根據(jù)權(quán)利要求48的運算單元,其中被乘數(shù)寄存器是一個具有w位長度的寄存器,w表示一個字長,和乘數(shù)寄存器響應(yīng)于時鐘和控制信號中的一個將數(shù)據(jù)右移或加載新的值。
52.一種累加器,包括多個用來以進位保存加法模式運算的壓縮器,該多個壓縮器的每個接收一個模乘積,部分乘積、第一值和第二值,并產(chǎn)生一個相應(yīng)的下一個和、一個相應(yīng)的下一個進位和一個相應(yīng)的下一個低值;一和寄存器,用來從多個壓縮器的每個接收相應(yīng)的下一個和以輸出一個相應(yīng)的更新的當前和;一進位寄存器,用來從多個壓縮器的每個接收相應(yīng)的下一個進位來輸出一個相應(yīng)的更新的當前進位;和一低值寄存器,用來從多個壓縮器的每個接收相應(yīng)的下一個低值以輸出一個相應(yīng)的更新的當前低值。
53.根據(jù)權(quán)利要求52的累加器,其中多個壓縮器的每個接收下一個和,下一個進位和下一個低值作為在累加器的初始值校正周期后的周期中的第一和第二值。
54.根據(jù)權(quán)利要求53的累加器,其中在除了累加器的起始值校正周期之后的周期的所有周期中,多個壓縮器中的每個接收來自2位較高壓縮器的和,和來自一位較高壓縮器的一個進位,作為第一和第二值。
55.根據(jù)權(quán)利要求54的累加器,其中將多個壓縮器中的最低壓縮器的和提供給第一附加全加器,將最較低壓縮器的進位、第二較低壓縮器的和和第一附加全加器的進位提供給第二附加全加器,和第一附加全加器的和以及第二附加全加器的進位及和表示下一個低值。
56.根據(jù)權(quán)利要求53的累加器,進一步包括多個多路復(fù)用器用來響應(yīng)于表示在累加器的初始值校正周期后的一個周期的信號,選擇該第一和第二值。
57.根據(jù)權(quán)利要求52的累加器,其中模乘積從一個n位的模數(shù)產(chǎn)生,部分乘積從一個n位的被乘數(shù)和n位的乘數(shù)來產(chǎn)生,部分乘積和模乘積的每個為c+k+2=c’+2位,其中k為8的整數(shù)倍,c表示位塊的位長,c’表示拓展的位塊的位長,而n為c的整數(shù)倍,c≤n并且c’=c+k。
58.根據(jù)權(quán)利要求55的累加器,其中多個壓縮器為串接并且數(shù)量至少為c+k+5=c+5’。
59.根據(jù)權(quán)利要求52的累加器,其中多個壓縮器的每個均為一個4∶2壓縮器。
60.根據(jù)權(quán)利要求52的累加器,其中多個壓縮器的每個都包括兩個全加器。
61.根據(jù)權(quán)利要求52的累加器,其中多個壓縮器的最較低壓縮器接收部分乘積的反向信號和模乘積的反向信號中的一個。
62.一種運算單元,包括一乘法器,用來順序地執(zhí)行用于一個包括n/c位塊的n位被乘數(shù),包括n/c位塊的一個n位乘數(shù),包括n/c位塊的n位模數(shù),拓展的乘數(shù)塊和拓展的模數(shù)塊的單元乘法運算(n/c)*(n/c)次,其中n>c,并且n和c是正整數(shù)。
63.根據(jù)權(quán)利要求62的運算單元,其中該乘法器進一步包括一模乘積產(chǎn)生器,用來選擇n位模數(shù)-M,0,M,2M和前一行結(jié)果SI其中之一作為模乘積;一部分乘積產(chǎn)生器,用來選擇-2A,-A,0,+A和+2A被乘數(shù)其中之一作為部分乘積;和一累加器,用來堆棧該所選擇的模乘積和部分乘積。
64.根據(jù)權(quán)利要求63的運算單元,其中M是在n位模數(shù)中c’位(c’=c+k)的當前輸入拓展塊,k為整數(shù),和A是在n位被乘數(shù)中c’位的當前輸入拓展塊。
65.根據(jù)權(quán)利要求63的運算單元,其中前一行結(jié)果是在累加器的前一行乘法結(jié)果中相應(yīng)于被乘數(shù)和模數(shù)的當前輸入拓展塊的位的相乘結(jié)果。
66.根據(jù)權(quán)利要求62的運算單元,其中乘法器執(zhí)行用于多行的單元乘法運算以在每行的結(jié)束產(chǎn)生乘法結(jié)果,和除了最后一行外的所有行的乘法結(jié)果都具有n+2位的位長。
67.根據(jù)權(quán)利要求66的運算單元,其中最后一行的乘法結(jié)果具有n+1位的位長。
68.根據(jù)權(quán)利要求62的運算單元,其中n表示包括了一個或多個被乘數(shù),乘數(shù),和模數(shù)的操作數(shù)的位長。
69.根據(jù)權(quán)利要求68的運算單元,其中c表示塊的位長,n表示c的整數(shù)倍。
70.根據(jù)權(quán)利要求69的運算單元,其中c’表示拓展塊的位長,c’=c+k,k為整數(shù)。
71.根據(jù)權(quán)利要求70的運算單元,其中在乘法器中的數(shù)據(jù)路徑的大小與c’成比例。
72.一種乘法單元,包括一具有n/c行數(shù)的運算矩陣,n和c是正整數(shù),其中每行與重復(fù)執(zhí)行n/c次的單元蒙哥馬利乘法運算和進位傳遞加法運算關(guān)聯(lián);一具有進位保存加法結(jié)構(gòu)的累加器,用來執(zhí)行該重復(fù)單元乘法運算;和一附加進位傳遞加法器,用來執(zhí)行該進位傳遞加法運算。
73.根據(jù)權(quán)利要求72的蒙哥馬利乘法單元,其中一旦該矩陣的n/c行的單元乘法乘法運算和進位傳遞加法運算完成,則蒙哥馬利乘法運算完成。
74.一種乘法器,包括一模乘積產(chǎn)生器,用來從多個可選擇的n位模數(shù)M中選擇一個模乘積,從在該n位模數(shù)中當前輸入拓展塊中形成的一個給定的模數(shù)M;一部分乘積產(chǎn)生器,用來從多個可選擇的n位被乘數(shù)A中選擇一個被乘數(shù)作為部分乘積,從在n位被乘數(shù)中當前位輸入拓展塊中形成一個給定的被乘數(shù)A;和一累加器,將選擇的模乘積和部分乘積累加以產(chǎn)生一個乘積結(jié)果。
75.一種運算單元,包括一存儲器;一主機,用來將被乘數(shù)A、乘數(shù)B和模數(shù)M存儲在存儲器中;和權(quán)利要求74所述的乘法器,根據(jù)所存儲的被乘數(shù)、乘數(shù)和模數(shù),在主機的控制下,所述乘法器執(zhí)行蒙哥馬利乘法運算,并將蒙哥馬利乘法運算的乘法結(jié)果存儲在存儲器中。
76.一種蒙哥馬利乘法器,適于基于輸入其中的控制信號的邏輯狀態(tài)而執(zhí)行一蒙哥馬利乘法運算和通常的乘法運算。
全文摘要
在蒙哥馬利乘法器中,模乘積產(chǎn)生器可以從多個n位模數(shù)M中選擇一個模乘積,同時在該n位模數(shù)中從當前輸入拓展塊中形成一個給定的模數(shù)M。部分乘積產(chǎn)生器從多個可選擇的n位被乘數(shù)A中選擇一個被乘數(shù)作為部分乘積,同時在n位被乘數(shù)中從當前位輸入拓展塊中形成一個給定的被乘數(shù)A。累加器可以將選擇的模乘積和部分乘積累加以產(chǎn)生一個乘積結(jié)果。蒙哥馬利乘法器可以是包括了一個存儲器和主機的運算單元的一部分,也可以用于基于輸入其中的控制信號的邏輯狀態(tài)執(zhí)行蒙哥馬利乘法運算和通常的乘法運算。
文檔編號G06F7/72GK1702613SQ20051007882
公開日2005年11月30日 申請日期2005年3月2日 優(yōu)先權(quán)日2004年3月2日
發(fā)明者孫熙寬 申請人:三星電子株式會社