国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法

      文檔序號(hào):416074閱讀:487來源:國知局
      專利名稱:一種基于蒙哥馬利模乘的數(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)人:飛天誠信科技股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1