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