專利名稱:一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法
一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法技術(shù)領域
本發(fā)明屬于計算機技術(shù)領域,尤其涉及一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法。
技術(shù)背景
在目前的大整數(shù)模乘算法的硬件實現(xiàn)中,蒙哥馬利(Montgomery)模乘算法被認 為是最高效的,也是最適合用硬件實現(xiàn)的一種算法。
目前,實現(xiàn)大整數(shù)模乘的模乘器的設計中大多采用Montgomery算法及其變形,現(xiàn) 有的模乘器的設計是對中間結(jié)果進行儲存,下一循環(huán)需要用到時再讀取,需要對存儲設備 進行頻繁的讀寫,而對存儲設備的讀寫是需要花費時鐘周期的,從而影響了模乘器的工作 效率,降低基于蒙哥馬利模乘的數(shù)據(jù)處理速率,比如現(xiàn)有的Montgomery算法存在的在硬件 上實現(xiàn)起來運算速度慢的缺陷,會導致RSA、ECC等加密算法的效率低,速度低。發(fā)明內(nèi)容
為解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明提出了一種高效的基于蒙哥馬利模乘的數(shù) 據(jù)處理方法。
本發(fā)明采取的技術(shù)方案是一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法,第一隨機存 儲器用于存儲乘數(shù),第二隨機存儲器用于存儲被乘數(shù),第三隨機存儲器用于存儲模數(shù),所述 方法包括以下步驟
步驟1:CPU初始化第五隨機存儲器,初始化第一偏移量、第二偏移量;其中,所述 第一偏移量用于表示所述第二隨機存儲器中相對于基地址的偏移地址,所述第二偏移量用 于表示所述第五隨機存儲器中相對于基地址的偏移地址。
步驟2 =CPU根據(jù)第一偏移量從所述第二隨機存儲器中讀取一個字寫入第一運算 寄存器;
步驟3 =CPU調(diào)用乘加模塊執(zhí)行第一運算寄存器的內(nèi)容與所述第一隨機存儲器的 內(nèi)容相乘后與所述第五隨機存儲器的內(nèi)容相加的運算,根據(jù)第二偏移量將得到的運算結(jié)果 從低位到高位寫入所述第五隨機存儲器;
步驟4 =CPU根據(jù)第二偏移量從所述第五隨機存儲器中讀取一個字寫入第二運算 寄存器,將所述第二運算寄存器的內(nèi)容和常數(shù)寄存器的內(nèi)容相乘,并將相乘結(jié)果的低位字 寫入第四寄存器;
步驟5 =CPU讀取所述第四寄存器、所述第三隨機存儲器和所述第五隨機存儲器的 內(nèi)容,調(diào)用乘加模塊執(zhí)行所述第四寄存器的內(nèi)容與所述第三隨機存儲器的內(nèi)容相乘后與所 述第五隨機存儲器的內(nèi)容相加的運算,將第二偏移量加1,根據(jù)第二偏移量將得到的運算結(jié) 果從低位到高位寫入所述第五隨機存儲器;
步驟6 :CPU判斷第一偏移量是否等于預設步長,是則執(zhí)行步驟8,否則執(zhí)行步驟 7 ;
步驟7 :第一偏移量加I,返回執(zhí)行步驟2 ;
步驟8 =CPU讀取所述第五隨機存儲器和所述第三隨機存儲器的內(nèi)容,判斷所述第 五隨機存儲器的內(nèi)容的值是否大于等于第三隨機存儲器的內(nèi)容的值,是則執(zhí)行步驟9,否則 執(zhí)行步驟10 ;
步驟9 :CPU用讀取到的所述第五隨機存儲器的內(nèi)容與第三隨機存儲器的內(nèi)容相 減,并根據(jù)第二偏移量將相減結(jié)果從低位到高位寫入所述第五隨機存儲器,執(zhí)行步驟10 ;
步驟10 =CPU輸出所述第五隨機存儲器的內(nèi)容。
所述步驟2具體為讀取從第二隨機存儲器的基地址起向左移動第一偏移量后對 應的字寫入第一運算寄存器。
所述乘加模塊用于實現(xiàn)CPU支持的乘法和加法運算。
步驟3所述CPU調(diào)用乘加模塊執(zhí)行第一運算寄存器的內(nèi)容與所述第一隨機存儲 器的內(nèi)容相乘后與所述第五隨機存儲器的內(nèi)容相加的運算具體包括以下步驟
步驟201 CPU判斷第一偏移量是否為0,是則執(zhí)行步驟210,否則執(zhí)行步驟202 ;
步驟202 :初始化進位寄存器,初始化索引變量;
步驟203 =CPU根據(jù)索引變量從第一隨機存儲器和第五隨機存儲器中各獲取一個 字分別寫入第三運算寄存器和第四運算寄存器;
步驟204 :CPU將第一運算寄存器的內(nèi)容和第三運算寄存器的內(nèi)容相乘,相乘結(jié)果 與第四運算寄存器的內(nèi)容相加得到第一計算結(jié)果;
步驟205 =CPU將第一計算結(jié)果與進位寄存器的內(nèi)容相加得到第二計算結(jié)果;
步驟206 =CPU將第二計算結(jié)果的高位起第一個字寫入進位寄存器,其余字根據(jù)索 引變量寫入第五隨機存儲器;
步驟207 =CPU判斷索引變量是否等于預設字長,是則執(zhí)行步驟209,否則執(zhí)行步驟 208 ;
步驟208 :索引變量加1,然后返回執(zhí)行步驟203 ;
步驟209 =CPU讀取進位寄存器的內(nèi)容,并根據(jù)索引變量將進位寄存器的內(nèi)容寫入 第五隨機存儲器;
步驟210 :CPU輸出第五隨機存儲器的內(nèi)容作為步驟3所述運算結(jié)果。
所述步驟203具體為從第一隨機存儲器和第五隨機存儲器中獲取與當前索引變 量對應的存儲位置上的字分別寫入第三運算寄存器和第四運算寄存器。
步驟206所述其余字根據(jù)索引變量寫入第五隨機寄存器具體為CPU將第二計算 結(jié)果中除高位起第一個字之外的其余字按照從低位到高位的順序從第五隨機存儲器中與 當前索引變量對應的存儲位置開始依次寫入。
步驟3和步驟5所述根據(jù)第二偏移量將得到的運算結(jié)果從低位到高位寫入第五隨 機存儲器具體為將運算結(jié)果按照從低位到高位的順序從第五隨機存儲器中基地址起向左 移第二偏移量的位置開始依次寫入。
步驟4所述CPU根據(jù)第二偏移量從第五隨機存儲器中讀取一個字寫入第二運算寄 存器具體為讀取從第五隨機存儲器的基地址起向左移動第二偏移量后對應的字寫入第二 運算寄存器。
步驟5所述調(diào)用乘加模塊執(zhí)行所述第四寄存器的內(nèi)容與所述第三隨機存儲器的 內(nèi)容相乘后與所述第五隨機存儲器的內(nèi)容相加的運算,具體包括以下步驟
步驟301 =CPU判斷第一偏移量是否為0,是則執(zhí)行步驟310,否則執(zhí)行步驟302 ;
步驟302 :初始化進位寄存器,初始化索引變量;
步驟303 =CPU根據(jù)索引變量從第三隨機存儲器和第五隨機存儲器中各獲取一個字分別寫入第三運算寄存器和第四運算寄存器;
步驟304 :CPU將第三運算寄存器的內(nèi)容與第四寄存器的內(nèi)容相乘,相乘結(jié)果與第四運算寄存器的內(nèi)容相加得到第三計算結(jié)果;
步驟305 :CPU將第三計算結(jié)果與進位寄存器的內(nèi)容相加得到第四計算結(jié)果;
步驟306 :CPU將第四計算結(jié)果的高位起第一個字 寫入進位寄存器,其余字根據(jù)索引變量寫入第五隨機存儲器;
步驟307 =CPU判斷索引變量是否等于預設字長,是則執(zhí)行步驟309,否則執(zhí)行步驟 308 ;
步驟308 :索引變量加1,然后返回執(zhí)行步驟303 ;
步驟309 =CPU讀取進位寄存器的內(nèi)容,并根據(jù)索引變量將進位寄存器的內(nèi)容寫入第五隨機存儲器;
步驟310 :CPU輸出第五隨機存儲器的內(nèi)容作為步驟5所述運算結(jié)果。
步驟9所述根據(jù)第二偏移量將相減結(jié)果從低位到高位寫入第五隨機存儲器具體為將相減結(jié)果按照從低位到高位的順序從第五隨機存儲器中基地址起向左移第二偏移量的位置開始依次寫入。
本發(fā)明提供的一種高效的基于蒙哥馬利模乘的數(shù)據(jù)處理方法,能夠達到降低系統(tǒng)運行的周期和通過提高模乘效率提高數(shù)據(jù)處理速率的效果,尤其使其應用于數(shù)據(jù)加密算法中時,能夠提高數(shù)據(jù)加解密的效率和速度。
圖1是本發(fā)明提出的一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法流程圖2是圖1中步驟103所述調(diào)用乘加模塊進行運算過程示意圖3是圖1中步驟106所述調(diào)用乘加模塊進行運算的過程示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
本實施例提供了一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法,以計算機的CPU處理器對數(shù)據(jù)進行的模乘運算處理過程為例進行介紹,本實施例中,第一隨機存儲器用于存儲模乘運算中的乘數(shù),第二隨機存儲器用于存儲模乘運算中的被乘數(shù),第三隨機存儲器用于存儲模乘運算中的模數(shù),第四寄存器用于存儲中間操作數(shù),第五隨機存儲器用于存儲模乘運算的運算結(jié)果和模乘運算過程中的乘加模塊的運算結(jié)果,常數(shù)寄存器用于存儲預設常數(shù)。
本實施例中,模乘運算的乘數(shù)、被乘數(shù)和模數(shù)的長度用機器字長η表示,η >0,優(yōu)選一個字的位長為32位,優(yōu)選η=16即512位。根據(jù)參與運算的大數(shù)選取的第一隨機存儲器、第二隨機存儲器和第三隨機存儲器的存儲空間大于等于η,優(yōu)選取為η以減少占用空間,第五隨機存儲器的存儲空間大于等于2η+1,優(yōu)選取為2η+1以減少占用空間;第四寄存器、常數(shù)寄存器的存儲空間大于等于I個字,優(yōu)選取為I個字以減少占用空間。
如圖1所示,CPU處理器執(zhí)行的基于蒙哥馬利模乘的數(shù)據(jù)處理方法,包括以下步 驟
步驟101 :初始化第五隨機存儲器,初始化第一偏移量、第二偏移量;
具體地,將第五隨機存儲器中的內(nèi)容初始化為O,將第一偏移量、第二偏移量初始 化為0,所述第一偏移量用于表示第二隨機存儲器中相對于基地址的偏移地址,所述第二偏 移量用于表示第五隨機存儲器中相對于基地址的偏移地址。
步驟102 :根據(jù)第一偏移量從第二隨機存儲器中讀取一個字寫入第一運算寄存 器;
所述根據(jù)第一偏移量從第二隨機存儲器中讀取一個字寫入第一運算寄存器具體 為讀取從第二隨機存儲器的基地址起向左移動第一偏移量后對應的字寫入第一運算寄存 器。
本實施例中,所述第一運算寄存器的存儲空間的大小優(yōu)選為I個字,用于存放計 算過程中根據(jù)第一偏移量從第二隨機存儲器中讀取的一個字。
本實施例中優(yōu)選的,第二隨機存儲器的內(nèi)容為
91D46B9B F7BF6BB6 37EF4369 9B20C28E
5C312C18 83F0AB86 CE7D029D 67400BCB
CB024F12 9EFEC843 C7BA6010 97275C41
84FA3D48 FF5CA205 761382C0 CA6F360C
當?shù)谝黄屏繛镺時,從第二隨機存儲器中讀取的一個字為CA6F360C。
步驟103 :對第一運算寄存器、第一隨機存儲器和第五隨機存儲器的內(nèi)容調(diào)用乘 加模塊進行運算,根據(jù)第二偏移量將得到的運算結(jié)果從低位到高位寫入第五隨機存儲器;
本實施例中具體地,乘加模塊可以實現(xiàn)CPU支持的乘法運算和加法運算,用于計 算第一運算寄存器與第一隨機存儲器的內(nèi)容相乘再與第五隨機存儲器的內(nèi)容相加并得到 一個運算結(jié)果,然后根據(jù)第二偏移量將運算結(jié)果寫入第五隨機存儲器中。
所述根據(jù)第二偏移量將運算結(jié)果寫入第五隨機存儲器具體為將運算結(jié)果按照從 低位到高位的順序從第五隨機存儲器中基地址開始左移第二偏移量的位置開始依次寫入。
本實施例中優(yōu)選的當?shù)谝黄屏繛镺時,參與運算的第一運算寄存器的內(nèi)容為 CA6F360C ;第五隨機存儲器的內(nèi)容為O ;
第一隨機存儲器的內(nèi)容為
FA371FB2 CA0972D1 A51D20FC D9B12C38
830024AE 5F66E7C7 B13C5C14 17D0A993
5EF27616 D1D36B0E 9E3015E2 37CB5C8F
3F7979D9 CC2085D2 D0E2B6BD E4D00064 ;
本步驟寫入第五隨機存儲器的內(nèi)容為
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 C5DC31BD
2D3641B1ABD92E50B3BB127C5780E849
AAAlIOCE3F267692D1C1873EF15E853E
CDBC267962A6A22B8BFB6695AD40EDEC
49E6D2F6CCFC3470B00EF5A9AD311CB0。
步驟104 ;:根據(jù)第二偏移量從第五隨機存儲器讀取一個字寫入第二運算寄存器,將第二運算寄存器和常數(shù)寄存器的內(nèi)容相乘,并將相乘結(jié)果的低位字寫入第四寄存器;
所述根據(jù)第二偏移量從第五隨機存儲器中讀取一個字寫入第二運算寄存器具體為讀取從第五隨機存儲器的基地址起向左移動第二偏移量后對應的字寫入第二運算寄存器。所述第二運算寄存器的存儲空間的大小優(yōu)選為I個字,用于存放計算過程中根據(jù)第二偏移量從第五隨機存儲器中讀取的一個字。
本實施例中優(yōu)選的參與運算的寫入第二運算寄存器的內(nèi)容為AD311CB0,常數(shù)寄存器的內(nèi)容為1A788E41 ;
本步驟寫入第四寄存器的內(nèi)容為89E1E8B0。
步驟105 :讀取第四寄存器、第三隨機存儲器和第五隨機存儲器的內(nèi)容;
本實施例中優(yōu)選的讀取到的第三隨機存儲器的內(nèi)容為
A9E55F8A A3D41743 634D40B3 646FA84E
7628CEAB 9B597420 4F226B6F 80E6AECF
76CE3C52 0632A7EF 8053CEC7 A30E4F9D
BFE8E6A4 E4A32F00 81564573 B4117E3F。
步驟106 :對第四寄存器、第三隨機存儲器和第五隨機存儲器的內(nèi)容調(diào)用乘加模塊進行運算,將第二偏移量加1,根據(jù)第二偏移量將得到的運算結(jié)果從低位到高位寫入第五隨機存儲器;
本實施例中具體地,乘加模塊可以實現(xiàn)CPU支持的乘法運算和加法運算,用于將第四寄存器的內(nèi)容與第三隨機存儲器的內(nèi)容相乘再與第五隨機存儲器的內(nèi)容相加并得到一個運算結(jié)果,然后第二偏移量加I后根據(jù)第二偏移量將運算結(jié)果寫入第五隨機存儲器中。
所述根據(jù)第二偏移量將得到的運算結(jié)果從低位到高位寫入第五隨機存儲器具體為將運算結(jié)果按照從低位到高位的順序從第五隨機存儲器中基地址開始左移當前第二偏移量的位置開始依次寫入。
優(yōu)選的本步驟寫入第五隨機存儲器的內(nèi)容為
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
000000000000000000000001215DDEE4
04041356051CDD28D9E5280B7EFD69C7
5CF1145678A28D3F83C42F05494E8116
4B9882E052D7C6714CB773CA2497EF6C
40531B1B746DD1FDC05E305500000000
步驟107 :判斷第一偏移量是否等于預設步長,是則執(zhí)行步驟109,否則執(zhí)行步驟108 ;
本實施例中具體地,預設步長為15。
步驟108 :第一偏移量加1,返回執(zhí)行步驟102 ;
步驟109 :讀取第五隨機存儲器的內(nèi)容,讀取第三隨機存儲器的內(nèi)容;
步驟110 :判斷讀取的第五隨機存儲器的內(nèi)容的值是否大于等于第三隨機存儲器 的內(nèi)容的值,是則執(zhí)行步驟111,否則執(zhí)行步驟112 ;
步驟111 :用讀取到的第五隨機存儲器的內(nèi)容與第三隨機存儲器的內(nèi)容相減,并 根據(jù)第二偏移量將相減結(jié)果從低位到高位寫入第五隨機存儲器,執(zhí)行步驟112 ;
本實施例中,所述根據(jù)第二偏移量將相減結(jié)果從低位到高位寫入第五隨機存儲器 具體為將相減結(jié)果按照從低位到高位的順序從第五隨機存儲器中基地址開始左移第二偏 移量的位置開始依次寫入。
步驟112 :輸出第五隨機存儲器的內(nèi)容。
本實施例中本步驟輸出的第五隨機存儲器的內(nèi)容即為模乘運算的結(jié)果。優(yōu)選的, 輸出的第五隨機存儲器的內(nèi)容為
65F36D6C AD704FF4 06219952 FA62DCC6
0F9892D1 BBC23E74 1EFECDE3 4717BDA3
55545D9E 18A97A65 59EB8832 F31DD5BC
397DA4B5 773E8EB3 8F89123B 0A05453E。
本實施例中提到的乘加模塊用于實現(xiàn)CPU支持的大數(shù)的乘法運算和加法運算,下 面以圖1中步驟103和步驟106采用乘加模塊實現(xiàn)的大數(shù)的乘法和加法運算為例進行詳細 描述。其中,進位寄存器用于存放乘法和加法運算中的進位,進位寄存器的存儲空間的大小 大于等于I個字,優(yōu)選取I個字以減少占用空間。
圖1中步驟103中所述對第一運算寄存器、第一隨機存儲器和第五隨機存儲器的 內(nèi)容調(diào)用乘加模塊進行運算的具體過程如圖2所示,包括如下步驟
步驟201 :CPU判斷第一偏移量是否為0,是則執(zhí)行步驟210,否則執(zhí)行步驟202 ;
本實施例中具體地,所述第一偏移量用于表不第二隨機存儲器中相對于基地址的 偏移地址。
步驟202 =CPU初始化進位寄存器,初始化索引變量;
本實施例中具體地,初始化進位寄存器優(yōu)選為將進位寄存器的內(nèi)容初始化為0,初 始化索引變量優(yōu)選為將索引變量初始化為I。
步驟203 =CPU根據(jù)索引變量從第一隨機存儲器和第五隨機存儲器中各獲取一個 字分別寫入第三運算寄存器和第四運算寄存器;
本實施例,根據(jù)索引變量從第一隨機存儲器和第五隨機存儲器中各獲取一個字分 別寫入第三運算寄存器和第四運算寄存器具體為從第一隨機存儲器和第五隨機存儲器中 獲取與當前索引變量對應的存儲位置上的字分別寫入第三運算寄存器和第四運算寄存器。 例如,當前索引變量為1,則將第一隨機存儲器的低位起第一個字寫入第三運算寄存器,將 第五隨機存儲器低位起第一個字寫入第四運算寄存器。
本實施例中優(yōu)選的,所述第三運算寄存器用于存儲乘加運算中的乘數(shù),所述第四 運算寄存器用于存儲乘加運算中的被加數(shù),所述第三運算寄存器和第四運算寄存器的存儲空間的大小優(yōu)選為I個字。
步驟204 :CPU將第一運算寄存器的內(nèi)容和第三運算寄存器的內(nèi)容相乘,相乘結(jié)果與第四運算寄存器的內(nèi)容相加得到第一計算結(jié)果;
本實施例中具體地,所述第一計算結(jié)果可以存放在一個臨時寄存器中,該臨時寄存器的存儲空間的大小優(yōu)選為2個字,在執(zhí)行步驟205之前包括從該臨時寄存器中讀取第一計算結(jié)果。
步驟205 :CPU將第一計算結(jié)果與進位寄存器的內(nèi)容相加得到第二計算結(jié)果;
步驟206 :CPU將第二計算結(jié)果的高位起第一個字寫入進位寄存器,其余字根據(jù)索引變量寫入第五隨機存儲器;
本實施例中具體地,其余字根據(jù)索引變量寫入第五隨機寄存器具體為CPU將第二計算結(jié)果中除高位起一個字之外的其余字按照從低位到高位的順序從第五隨機存儲器中與當前索引變量對應的存儲位置開始依次寫入。例如,當前索引變量為1,則將第二運算結(jié)果中除最高位的一個字之前的其余字從第五隨機存儲器中低位起第一個字開始依次寫入。
步驟207 :CPU判斷索引變量是否等于預設字長,是則執(zhí)行步驟209,否則執(zhí)行步驟 208 ;
本實施例中具體地,CPU判斷索引變量是否等于n,是執(zhí)行步驟209,否則執(zhí)行步驟 208 ;
步驟208 :索引變量加1,然后返回執(zhí)行步驟203 ;
步驟209 :CPU讀取進位寄存器的內(nèi)容,并根據(jù)索引變量將進位寄存器的內(nèi)容寫入第五隨機存儲器;
本實施例中具體地,CPU將讀取到的進位寄存器的內(nèi)容寫入到第五隨機存儲器中第n+1個字對應的存儲位置。
步驟210 :CPU輸出第五隨機存儲器的內(nèi)容。
具體地,本步驟輸出的第五隨機存儲器的內(nèi)容即為乘加運算的運算結(jié)果。
圖1中步驟106中所述調(diào)用乘加模塊對讀取到的數(shù)進行運算的具體過程如圖3所示,包括如下步驟
步驟301 =CPU判斷第一偏移量是否為0,是則執(zhí)行步驟310,否則執(zhí)行步驟302 ;
本實施例中具體地,所述第一偏移量用于表不第二隨機存儲器中相對于基地址的偏移地址。
步驟302 =CPU初始化進位寄存器,初始化索引變量;
本實施例中具體地,初始化進位寄存器優(yōu)選為將進位寄存器的內(nèi)容初始化為0,初始化索引變量優(yōu)選為將索引變量初始化為I。
步驟303 =CPU根據(jù)索引變量從第三隨機存儲器和第五隨機存儲器中各獲取一個字分別寫入第三運算寄存器和第四運算寄存器;
本實施例,根據(jù)索引變量從第三隨機存儲器和第五隨機存儲器中各獲取一個字分別寫入第三運算寄存器和第四運算寄存器具體為從第三隨機存儲器和第五隨機存儲器中獲取與當前索引變量對應的存儲位置上的字分別寫入第三運算寄存器和第四運算寄存器。 例如,當前索引變量為n,則將獲取到的第三隨機存儲器的最低位起第η個字寫入第三運算寄存器,將獲取到的第五隨機存儲器最低位起第η個字寫入第四運算寄存器。
本實施例中優(yōu)選的,所述第三運算寄存器用于存儲乘加運算中的乘數(shù),所述第四運算寄存器用于存儲乘加運算中的被加數(shù),所述第三運算寄存器和第四運算寄存器的存儲空間的大小優(yōu)選為I個字。
步驟304 :CPU將第三運算寄存器的內(nèi)容與第四寄存器的內(nèi)容相乘,相乘結(jié)果與第四運算寄存器的內(nèi)容相加得到第三計算結(jié)果;
本實施例中具體地,所述第三計算結(jié)果可以存放在一個臨時寄存器中,該臨時寄存器的存儲空間優(yōu)選為2個機器字長,在執(zhí)行步驟305之前包括從該臨時寄存器中讀取第三計算結(jié)果。
步驟305 :CPU將第三計算結(jié)果與進位寄存器的內(nèi)容相加得到第四計算結(jié)果;
步驟306 :CPU將第四計算結(jié)果的高位起第一個字寫入進位寄存器,其余字根據(jù)索引變量寫入第五隨機存儲器;
本實施例中具體地,其余字根據(jù)索引變量寫入第五隨機寄存器具體為CPU將第四計算結(jié)果中除高位起第一個字之外的其余字按照從低位到高位的順序從第五隨機存儲器中與當前索引變量對應的存儲位置開始依次寫入。例如,當前索引變量為n,則將第四計算結(jié)果中除高位起第一個字之外的其余字從第五隨機存儲器中低位起第η個字開始依次寫入。
步驟307 :CPU判斷索引變量是否等于預設字長,是則執(zhí)行步驟309,否則執(zhí)行步驟 308 ;
本實施例中具體地,CPU判斷索引變量是否等于n,是執(zhí)行步驟309,否則執(zhí)行步驟 308 ;優(yōu)選的n=16。
步驟308 :索引變量加1,然后返回執(zhí)行步驟303 ;
步驟309 :CPU讀取進位寄存器的內(nèi)容,并根據(jù)索引變量將進位寄存器的內(nèi)容寫入第五隨機存儲器;
本實施例中具體地,CPU將讀取到的進位寄存器的內(nèi)容寫入到第五隨機存儲器中第n+1個字對應的存儲位置。
步驟310 :CPU輸出第五隨機存儲器的內(nèi)容。
具體地,本步驟輸出的第五隨機存儲器的內(nèi)容即為乘加運算的運算結(jié)果。
以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應以權(quán)利要求的保護范圍為準。
權(quán)利要求
1.一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法,其特征在于第一隨機存儲器用于存儲乘數(shù),第二隨機存儲器用于存儲被乘數(shù),第三隨機存儲器用于存儲模數(shù),所述方法包括步驟1:CPU初始化第五隨機存儲器,初始化第一偏移量、第二偏移量;步驟2 =CPU根據(jù)第一偏移量從所述第二隨機存儲器中讀取一個字寫入第一運算寄存器;步驟3 :CPU調(diào)用乘加模塊執(zhí)行第一運算寄存器的內(nèi)容與所述第一隨機存儲器的內(nèi)容相乘后與所述第五隨機存儲器的內(nèi)容相加的運算,根據(jù)第二偏移量將得到的運算結(jié)果從低位到高位寫入所述第五隨機存儲器;步驟4 =CPU根據(jù)第二偏移量從所述第五隨機存儲器中讀取一個字寫入第二運算寄存器,將所述第二運算寄存器的內(nèi)容和常數(shù)寄存器的內(nèi)容相乘,并將相乘結(jié)果的低位字寫入第四寄存器;步驟5 :CPU讀取所述第四寄存器、所述第三隨機存儲器和所述第五隨機存儲器的內(nèi)容,調(diào)用乘加模塊執(zhí)行所述第四寄存器的內(nèi)容與所述第三隨機存儲器的內(nèi)容相乘后與所述第五隨機存儲器的內(nèi)容相加的運算,將第二偏移量加1,根據(jù)第二偏移量將得到的運算結(jié)果從低位到高位寫入所述第五隨機存儲器;步驟6 =CPU判斷第一偏移量是否等于預設步長,是則執(zhí)行步驟8,否則執(zhí)行步驟7 ; 步驟7 :第一偏移量加1,返回執(zhí)行步驟2 ;步驟8 =CPU讀取所述第五隨機存儲器和所述第三隨機存儲器的內(nèi)容,判斷所述第五隨機存儲器的內(nèi)容的值是否大于等于第三隨機存儲器的內(nèi)容的值,是則執(zhí)行步驟9,否則執(zhí)行步驟10 ;步驟9 =CPU用讀取到的所述第五隨機存儲器的內(nèi)容與第三隨機存儲器的內(nèi)容相減,并根據(jù)第二偏移量將相減結(jié)果從低位到高位寫入所述第五隨機存儲器,執(zhí)行步驟10 ;步驟10 :CPU輸出所述第五隨機存儲器的內(nèi)容。
2.根據(jù)權(quán)利要求1所述方法,其特征在于所述第一偏移量用于表示所述第二隨機存儲器中相對于基地址的偏移地址,所述第二偏移量用于表示所述第五隨機存儲器中相對于基地址的偏移地址。
3.根據(jù)權(quán)利要求1所述方法,其特征在于所述步驟2具體為讀取從第二隨機存儲器的基地址起向左移動第一偏移量后對應的字寫入第一運算寄存器。
4.根據(jù)權(quán)利要求1所述方法,其特征在于所述乘加模塊用于實現(xiàn)CPU支持的乘法和加法運算。
5.根據(jù)權(quán)利要求1所述方法,其特征在于步驟3所述CPU調(diào)用乘加模塊執(zhí)行第一運算寄存器的內(nèi)容與所述第一隨機存儲器的內(nèi)容相乘后與所述第五隨機存儲器的內(nèi)容相加的運算包括步驟201 CPU判斷第一偏移量是否為0,是則執(zhí)行步驟210,否則執(zhí)行步驟202 ;步驟202 :初始化進位寄存器,初始化索引變量;步驟203 =CPU根據(jù)索引變量從第一隨機存儲器和第五隨機存儲器中各獲取一個字分別寫入第三運算寄存器和第四運算寄存器;步驟204 :CPU將第一運算寄存器的內(nèi)容和第三運算寄存器的內(nèi)容相乘,相乘結(jié)果與第四運算寄存器的內(nèi)容相加得到第一計算結(jié)果;步驟205 :CPU將第一計算結(jié)果與進位寄存器的內(nèi)容相加得到第二計算結(jié)果;步驟206 =CPU將第二計算結(jié)果的高位起第一個字寫入進位寄存器,其余字根據(jù)索引變量寫入第五隨機存儲器;步驟207:CPU判斷索引變量是否等于預設字長,是則執(zhí)行步驟209,否則執(zhí)行步驟208 ;步驟208 :索引變量加1,然后返回執(zhí)行步驟203 ;步驟209 :CPU讀取進位寄存器的內(nèi)容,并根據(jù)索引變量將進位寄存器的內(nèi)容寫入第五隨機存儲器;步驟210 =CPU輸出第五隨機存儲器的內(nèi)容作為步驟3所述運算結(jié)果。
6.根據(jù)權(quán)利要求5所述方法,其特征在于所述步驟203具體為從第一隨機存儲器和第五隨機存儲器中獲取與當前索引變量對應的存儲位置上的字分別寫入第三運算寄存器和第四運算寄存器。
7.根據(jù)權(quán)利要求5所述方法,其特征在于步驟206所述其余字根據(jù)索引變量寫入第五隨機寄存器具體為CPU將第二計算結(jié)果中除高位起第一個字之外的其余字按照從低位到高位的順序從第五隨機存儲器中與當前索引變量對應的存儲位置開始依次寫入。
8.根據(jù)權(quán)利要求1所述方法,其特征在于步驟3和步驟5所述根據(jù)第二偏移量將得到的運算結(jié)果從低位到高位寫入第五隨機存儲器具體為將運算結(jié)果按照從低位到高位的順序從第五隨機存儲器中基地址起向左移第二偏移量的位置開始依次寫入。
9.根據(jù)權(quán)利要求1所述方法,其特征在于步驟4所述CPU根據(jù)第二偏移量從第五隨機存儲器中讀取一個字寫入第二運算寄存器具體為讀取從第五隨機存儲器的基地址起向左移動第二偏移量后對應的字寫入第二運算寄存器。
10.根據(jù)權(quán)利要求1所述方法,其特征在于步驟5所述調(diào)用乘加模塊執(zhí)行所述第四寄存器的內(nèi)容與所述第三隨機存儲器的內(nèi)容相乘后與所述第五隨機存儲器的內(nèi)容相加的運算,包括步驟301 =CPU判斷第一偏移量是否為0,是則執(zhí)行步驟310,否則執(zhí)行步驟302 ;步驟302 :初始化進位寄存器,初始化索引變量;步驟303 =CPU根據(jù)索引變量從第三隨機存儲器和第五隨機存儲器中各獲取一個字分別寫入第三運算寄存器和第四運算寄存器;步驟304 :CPU將第三運算寄存器的內(nèi)容與第四寄存器的內(nèi)容相乘,相乘結(jié)果與第四運算寄存器的內(nèi)容相加得到第三計算結(jié)果;步驟305 :CPU將第三計算結(jié)果與進位寄存器的內(nèi)容相加得到第四計算結(jié)果;步驟306 :CPU將第四計算結(jié)果的高位起第一個字寫入進位寄存器,其余字根據(jù)索引變量寫入第五隨機存儲器;步驟307:CPU判斷索引變量是否等于預設字長,是則執(zhí)行步驟309,否則執(zhí)行步驟308 ;步驟308 :索引變量加1,然后返回執(zhí)行步驟303 ;步驟309 :CPU讀取進位寄存器的內(nèi)容,并根據(jù)索引變量將進位寄存器的內(nèi)容寫入第五隨機存儲器;步驟310 =CPU輸出第五隨機存儲器的內(nèi)容作為步驟5所述運算結(jié)果。
11.根據(jù)權(quán)利要求10所述方法,其特征在于步驟9所述根據(jù)第二偏移量將相減結(jié)果從低位到高位寫入第五隨機存儲器具體為將相減結(jié)果按照從低位到高位的順序從第五隨機存儲器中基地址起向左移第二偏移量的位置開始依次寫入。
全文摘要
本發(fā)明公開了一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法,屬于計算機技術(shù)領域。本發(fā)明的方法包括CPU初始化第五隨機存儲器,對第二隨機存儲器中內(nèi)容按字為單位執(zhí)行以下操作1)調(diào)用乘加模塊將第二隨機存儲器中內(nèi)容的一個字與第一隨機存儲器的內(nèi)容相乘后與第五隨機存儲器的內(nèi)容相加,2)從1)的運算結(jié)果中提取一個字和常數(shù)寄存器的內(nèi)容相乘,并將相乘結(jié)果的低位字寫入第四寄存器,3)調(diào)用乘加模塊將第四寄存器的內(nèi)容與第三隨機存儲器的內(nèi)容相乘后與第五隨機存儲器的內(nèi)容相加;最后根據(jù)第三存儲器中內(nèi)容長度輸出第五隨機存儲器的內(nèi)容。
文檔編號G06F7/523GK102999313SQ201210566979
公開日2013年3月27日 申請日期2012年12月24日 優(yōu)先權(quán)日2012年12月24日
發(fā)明者陸舟, 于華章 申請人:飛天誠信科技股份有限公司