国产精品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ù)乘法實現(xiàn)方法及裝置制造方法

      文檔序號:6634240閱讀:303來源:國知局
      基于向量指令的大整數(shù)乘法實現(xiàn)方法及裝置制造方法
      【專利摘要】一種基于向量指令的大整數(shù)乘法實現(xiàn)方法及裝置,將大整數(shù)乘法的被乘數(shù)和乘數(shù)分別拆分為一個或多個向量長度整數(shù),計算這些整數(shù)相乘,并對所有乘積求和;計算兩個向量長度的整數(shù)相乘時,將所有向量乘法指令產(chǎn)生的積向量按照指定的次序組成兩條加法進位鏈,利用帶進位的向量加法指令,將每次向量相加產(chǎn)生的進位作為下一個向量加法指令的輸入,消除鏈中所有加法進位,只產(chǎn)生兩個加法進位,將其加回,得到兩個向量長度整數(shù)的乘積。特別地,若被乘數(shù)和乘數(shù)的長度都小于向量長度的1/n,將n組整數(shù)相乘合并為一次向量長度整數(shù)相乘,計算吞吐量提升n倍?;谝陨洗笳麛?shù)乘法方法,還公開了一種基于Intel Xeon Phi協(xié)處理器的高速大整數(shù)乘法裝置。本發(fā)明減少了大整數(shù)乘法需要的指令數(shù),降低了計算延遲,提高了計算吞吐量。
      【專利說明】基于向量指令的大整數(shù)乘法實現(xiàn)方法及裝置

      【技術領域】
      [0001] 本發(fā)明涉及計算機技術中的數(shù)據(jù)加解密領域,特別涉及一種基于向量指令的大整 數(shù)乘法實現(xiàn)方法及裝置。

      【背景技術】
      [0002] 大整數(shù)乘法廣泛應用于計算機技術中公鑰密碼計算過程,保證所傳輸數(shù)據(jù)的安全 性。在計算機的數(shù)據(jù)密碼計算領域,大整數(shù)乘法常常用于計算大整數(shù)模乘。大整數(shù)模乘是 一類公鑰加密算法,如RSA算法和橢圓曲線算法)的基本運算,決定了算法的計算速度。對 于事先不知道模數(shù)的大整數(shù)模乘,如RSA算法中的模乘,一般使用蒙哥馬利模乘算法實現(xiàn); 對于可以事先確定模數(shù)且模數(shù)為梅森素數(shù)的大整數(shù)模乘,如橢圓曲線算法,比如SM2算法 和ECDSA算法中的模乘,可以先計算大整數(shù)乘法,再用快速約簡對乘積取模。
      [0003] 大整數(shù)乘法可以用硬件實現(xiàn),也可以用軟件實現(xiàn)。硬件實現(xiàn)包括采用現(xiàn)場可編輯 邏輯門陣列(FPGA)和專用集成電路(ASIC)實現(xiàn)。硬件實現(xiàn)比較靈活,可以按照需要定制 乘法器,如乘法器的字長,流水線的設計等。但是硬件實現(xiàn)一般開發(fā)難度大,開發(fā)周期長,成 本高。軟件實現(xiàn)是在商用處理器上進行軟件編程,利用商用處理器的特性優(yōu)化算法。商用 處理器主要包括以下幾類:中央處理器(CPU)、數(shù)字信號處理器(DSP)和圖形處理器(GPU)。 這些處理器使用不同的指令集,存儲結構也有所不同。CPU和DSP-般是單核或多核的處理 器,每個核都有較強的計算能力,可以執(zhí)行不同指令,支持向量指令集。GPU是眾核處理器, 一般擁有數(shù)千個核,每個核的計算能力較弱,多個核同時執(zhí)行相同的指令。對于大整數(shù)乘法 的計算速率影響最大的是處理器使用的指令集,直接決定完成一次大整數(shù)乘法需要的指令 數(shù)。
      [0004] 處理器的指令可分為兩大類:標量指令和向量指令。標量指令是一條指令處理一 個字;向量指令是一條指令處理一個向量,一個向量包含多個字,即一條向量指令可以對向 量中的所有字同時執(zhí)行相同操作。CPU,包括X86、ARM,支持向量指令集,是單指令多數(shù)據(jù) (SMD)的處理器。GPU是單指令多線程(SMT)的處理器,即多個線程執(zhí)行相同的指令,但 每個線程執(zhí)行的指令一次只處理一個字。而且,CPU和GPU選擇了不同的發(fā)展方向。CPU不 斷加強向量指令,增加向量長度,添加新的向量指令,提升單核計算能力,GPU則不斷增加核 的數(shù)量,提高線程并行度,增大總的計算吞吐量。因此,對于用戶最常用的CPU處理器,要想 發(fā)揮其計算能力,必須充分利用向量指令。
      [0005] X86CPU近20年不斷加強向量指令集,從MMX指令集、SSE指令集發(fā)展到AVX指令 集、AVX2指令集,AVX2指令集支持256位的整數(shù)和浮點運算。英特爾公司的Xeon Phi協(xié)處 理器支持512位向量指令集,支持對16個單精度浮點數(shù)或16個32位整數(shù)同時計算。向量 指令集中的向量乘法指令和向量加法指令對兩個向量相同位置的字進行計算。如果向量內 不同位置的字數(shù)據(jù)相關,如加法進位要累加到更高位置的字中,向量指令就很難處理。
      [0006] 計算大整數(shù)相乘要對多個向量乘法結果求和,每次相加都要使用向量加法指令將 相同位置的字相加,并處理這些字產(chǎn)生的進位。其中最重要的是獲取和保存各字產(chǎn)生的進 位,并將進位累加到和向量。一個字產(chǎn)生的進位需要加到更高位置的字中,而且還可能產(chǎn)生 新的進位,所以進位是不斷向更高位置的字傳播的,直到不再產(chǎn)生新的進位。所以如何處理 加法進位是實現(xiàn)基于向量指令的大整數(shù)乘法的關鍵,也是難點。
      [0007] 目前利用向量指令處理大整數(shù)乘法中的加法進位的方法是使用冗余表示,S卩:將 大整數(shù)拆開存儲到向量每個字的低比特位,空出若干高比特位,向量相加時產(chǎn)生的進位會 保存在高比特位,不會溢出,也不用立刻向更高的字傳播,最后要將和向量從冗余表示轉換 回整數(shù)。
      [0008] 這種方法的主要缺點是:第一,將大整數(shù)轉換為冗余表示,以及將大整數(shù)乘法的結 果從冗余表示轉換回整數(shù)需要很多向量指令;第二,由于每個字都要留出若干高位容納加 法產(chǎn)生的進位,大整數(shù)可能需要拆成更多的字,這樣會增加向量乘法指令和向量加法指令 的運行次數(shù)。
      [0009] 冗余表示的方法不能非常高效地計算大整數(shù)乘法中的向量快速求和,所以計算效 率較低。


      【發(fā)明內容】

      [0010] 有鑒于此,本發(fā)明提供了一種基于向量指令的大整數(shù)乘法實現(xiàn)方法,該方法能夠 提高大整數(shù)乘法的計算效率。
      [0011] 本發(fā)明還提供一種基于向量指令的大整數(shù)乘法的實現(xiàn)裝置,該裝置能夠提高大整 數(shù)乘法的計算效率。
      [0012] 根據(jù)上述目的,本發(fā)明是這樣實現(xiàn)的:
      [0013] 一種基于向量指令的大整數(shù)乘法實現(xiàn)方法,該方法應用在計算機的公鑰密碼計算 過程,
      [0014] A、將大整數(shù)乘法的被乘數(shù)和乘數(shù)拆分為一個或多個向量長度整數(shù);
      [0015] B、計算向量長度整數(shù)相乘,過程為:
      [0016] ⑴將被乘數(shù)向量依次與乘數(shù)向量的每個字相乘,得到所有積向量;
      [0017] (2)將積向量組成一條字對齊的(:c/l型)加法進位鏈,利用帶進位的向量加法指 令消除鏈中產(chǎn)生的所有加法進位,產(chǎn)生一組和向量和一個加法進位;
      [0018] (3)將和向量組成一條錯開一個字的型)加法進位鏈,利用帶進位的向量加 法指令消除鏈中產(chǎn)生的所有加法進位,產(chǎn)生兩個和向量和一個加法進位;
      [0019] ⑷將兩個加法進位加回和向量,得到被乘數(shù)向量和乘數(shù)向量的乘積;
      [0020] 重復執(zhí)行步驟(1)至步驟(4)計算出步驟A拆分出的所有向量長度整數(shù)的乘積。
      [0021] C、對所有向量長度整數(shù)的乘積求和。
      [0022] -種基于向量指令的大整數(shù)乘法實現(xiàn)裝置,在支持帶進位向量加法指令的處理器 上實現(xiàn)上述方法,包括:向量拆分組合模塊、向量長度整數(shù)相乘模塊、乘積求和模塊,其中,
      [0023] 向量拆分組合模塊,用于將被乘數(shù)和乘數(shù)分別拆成一個或多個向量;或將η組長 度不大于向量長度的整數(shù)組合成兩個向量;
      [0024] 向量長度整數(shù)相乘模塊包括兩個子模塊:向量乘法模塊和向量加法模塊;
      [0025] 向量乘法模塊,用于計算被乘數(shù)向量與乘數(shù)向量的各字相乘,得到所有積向量;
      [0026] 向量加法模塊包括型加法進位鏈模塊和S型加法進位鏈模塊,用于將積向量 組成一條^型加法進位鏈計算,將運算出的向量組成一條?型加法進位鏈,最后將兩個加 法進位加回和向量,得到被乘數(shù)向量和乘數(shù)向量的乘積;如果被乘數(shù)或乘數(shù)被拆為多個向 量,需要多次調用向量長度整數(shù)相乘模塊進行計算;
      [0027] 乘積求和模塊,用于對所有向量長度整數(shù)相乘模塊產(chǎn)生的積向量求和。
      [0028] 從上述方案可以看出,本發(fā)明將大整數(shù)乘法的被乘數(shù)和乘數(shù)分別拆分為一個或多 個向量長度整數(shù),計算這些整數(shù)相乘,并對所有乘積求和;計算兩個向量長度的整數(shù)相乘 時,將所有向量乘法指令產(chǎn)生的積向量按照指定的次序組成兩條加法進位鏈,利用帶進位 的向量加法指令,將每次向量相加產(chǎn)生的進位作為下一個向量加法指令的輸入,消除鏈中 所有加法進位,只產(chǎn)生兩個加法進位,將其加回,得到兩個向量長度整數(shù)的乘積。特別地,若 被乘數(shù)和乘數(shù)的長度都小于向量長度的1/n,將η組整數(shù)相乘合并為一次向量長度整數(shù)相 乘,計算吞吐量提升η倍。基于以上大整數(shù)乘法方法,還公開了一種基于Intel Xeon Phi 協(xié)處理器的高速大整數(shù)乘法裝置。本發(fā)明減少了大整數(shù)乘法需要的指令數(shù),降低了計算延 遲,提高了計算吞吐量。

      【專利附圖】

      【附圖說明】
      [0029] 圖1為本發(fā)明實施例提供的基于向量指令大整數(shù)乘法實現(xiàn)方法的流程圖;
      [0030] 圖2為本發(fā)明實施例提供的步驟102被乘數(shù)向量依次與乘數(shù)向量的每個字相乘的 具體計算流程圖;
      [0031] 圖3為本發(fā)明實施例提供的進位累加算法計算過程及簡化過程示意圖;
      [0032] 圖4為本發(fā)明實施例提供的c/〖型加法進位鏈結構及計算過程示意圖;
      [0033] 圖5為本發(fā)明實施例提供的B型加法進位鏈結構及計算過程示意圖;
      [0034] 圖6為本發(fā)明實施例提供的步驟103 4型加法進位鏈的具體計算流程圖;
      [0035] 圖7為本發(fā)明實施例提供的步驟104 S型加法進位鏈的具體計算流程圖;
      [0036] 圖8為本發(fā)明實施例提供的步驟105將兩個加法進位加回和向量的具體計算流程 圖;
      [0037] 圖9為本發(fā)明實施例提供的基于向量指令的大整數(shù)乘法實現(xiàn)裝置結構示意圖;
      [0038] 圖10為本發(fā)明實施例中的Intel Xeon Phi掩碼寄存器的使用示意圖;
      [0039] 圖11為本發(fā)明第二實施例提供的基于Intel Xeon Phi的實現(xiàn)裝置同時計算兩個 256位整數(shù)乘法的具體計算流程圖。

      【具體實施方式】
      [0040] 為使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對 本發(fā)明作進一步詳細說明。
      [0041] 為了提高大整數(shù)乘法的計算效率,本發(fā)明在進行大整數(shù)計算時,不采用大整數(shù)冗 余表示的方法,以省去冗余表示和整數(shù)表示轉換需要的多條指令,并充分利用向量每個字 的高比特位。本發(fā)明公開的大整數(shù)乘法的實現(xiàn)方法將本發(fā)明將大整數(shù)乘法的被乘數(shù)和乘數(shù) 分別拆分為一個或多個向量長度整數(shù),計算這些整數(shù)相乘,并對所有乘積求和;計算兩個向 量長度的整數(shù)相乘時,將所有向量乘法指令產(chǎn)生的積向量按照指定的次序組成兩條加法進 位鏈,利用帶進位的向量加法指令,將每次向量相加產(chǎn)生的進位作為下一個向量加法指令 的輸入,消除鏈中所有加法進位,最后只產(chǎn)生兩個加法進位,將其加回,得到兩個向量長度 整數(shù)的乘積;特別的,若被乘數(shù)和乘數(shù)的長度都小于向量長度的1/n,可將η組整數(shù)相乘合 并為一次向量長度整數(shù)相乘,計算吞吐量提升η倍。基于以上大整數(shù)乘法實現(xiàn)方法,本發(fā)明 還公開了一種基于Intel Xeon Phi協(xié)處理器的高速大整數(shù)乘法裝置。本發(fā)明公開的實現(xiàn) 方法和裝置大幅減少了大整數(shù)乘法需要的指令數(shù),降低了計算延遲,提高了計算吞吐量。 [0042] 本發(fā)明提供的大整數(shù)乘法應用于計算機技術中的傳輸數(shù)據(jù)的加解密過程。
      [0043] 本發(fā)明提供的方法可以在處理器上完成,諸如Intel公司的Xeon Phi協(xié)處理器上 實現(xiàn),可以對SM2、E⑶SA、RSA等多種密碼計算過程中的大整數(shù)乘法進行高速計算。
      [0044] 為了方便描述,本發(fā)明定義符號:
      [0045] 帶箭頭的變量表示一個向量,如
      [0046] 不帶箭頭的數(shù)組元素表示該向量的一個字,如X[i]表示向量兌的第i個字;
      [0047] 帶不同下標的多個向量表示這些向量之間有某種前后關系,如1^和1^都是低位 乘法向量指令的乘法結果,L 2比L1高一個字。
      [0048] 向量長度為U比特,向量內字的長度為w比特,一個向量由s個字組成,u = s*w。
      [0049] 圖1為本發(fā)明實施例提供的基于向量指令大整數(shù)乘法實現(xiàn)方法的流程圖,其具體 步驟為:
      [0050] 步驟101、將大整數(shù)乘法的被乘數(shù)和乘數(shù)拆分為一個或多個向量長度整數(shù);
      [0051] 步驟102至步驟104用于計算一組向量長度整數(shù)相乘。
      [0052] 步驟102、將被乘數(shù)向量依次與乘數(shù)向量的每個字相乘,得到所有積向量;
      [0053] 步驟103、將積向量組成一條字對齊的型)加法進位鏈,利用帶進位的向量加 法指令消除鏈中產(chǎn)生的所有加法進位,產(chǎn)生一組和向量和一個加法進位;
      [0054] 步驟104、將和向量組成一條錯開一個字的(:S型)加法進位鏈,利用帶進位的向 量加法指令消除鏈中產(chǎn)生的所有加法進位,產(chǎn)生兩個和向量和一個加法進位;
      [0055] 步驟105、將兩個加法進位加回和向量,得到被乘數(shù)向量和乘數(shù)向量的乘積;
      [0056] 重復執(zhí)行步驟102至步驟105計算出步驟101拆分出的所有向量長度整數(shù)的乘 積。
      [0057] 步驟106、對所有向量長度整數(shù)的乘積求和。下面具體說明步驟101至步驟106的 實現(xiàn)方法。
      [0058] 為了方便描述,本發(fā)明定義符號:
      [0059] 帶箭頭的變量表示一個向量,如X:
      [0060] 不帶箭頭的數(shù)組元素表示該向量的一個字,如X[i]表示向量?1的第i個字;
      [0061] 帶不同下標的多個向量表示這些向量之間有某種前后關系,如和ζ:都是低位 乘法向量指令的乘法結果,L2比L1高一個字。
      [0062] 下面說明本發(fā)明用到的參數(shù)。
      [0063] 向量長度為U比特,向量內字的長度為w比特,一個向量由s個字組成,u = s*w。 被乘數(shù)X的長度為a比特,乘數(shù)Y的長度為b比特。
      [0064] 步驟101將任意長度的被乘數(shù)和乘數(shù)拆分為一個或多個向量長度整數(shù),具體過程 為:
      [0065] 將a比特的被乘數(shù)X劃分為mx個字,b比特的乘數(shù)Y劃分為my。最高的字中如果 長度不足u比特,將空出的高位比特置0。
      [0066]

      【權利要求】
      1. 一種基于向量指令的大整數(shù)乘法實現(xiàn)方法,該方法應用在計算機的公鑰密碼計算過 程,其特征包括 : A、 將大整數(shù)乘法的被乘數(shù)和乘數(shù)拆分為一個或多個向量長度整數(shù); B、 計算向量長度整數(shù)相乘,過程為: (1) 將被乘數(shù)向量依次與乘數(shù)向量的每個字相乘,得到所有積向量; (2) 將積向量組成一條字對齊的型)加法進位鏈,利用帶進位的向量加法指令消 除鏈中產(chǎn)生的所有加法進位,產(chǎn)生一組和向量和一個加法進位; (3) 將和向量組成一條錯開一個字的(S型)加法進位鏈,利用帶進位的向量加法指令 消除鏈中產(chǎn)生的所有加法進位,產(chǎn)生兩個和向量和一個加法進位; (4) 將兩個加法進位加回和向量,得到被乘數(shù)向量和乘數(shù)向量的乘積; 重復執(zhí)行步驟(1)至步驟(4)計算出步驟A拆分出的所有向量長度整數(shù)的乘積。 C、 對所有向量長度整數(shù)的乘積求和。
      2. 如權利要求1中所述的實現(xiàn)方法,其特征在于,所述加法進位鏈算法利用帶進位的 向量加法指令將多個需要求和的向量按指定次序組成一條加法進位鏈,消除鏈中所有進 位,其中, 帶講你向骨fin抹指冬Αη「πτ加下豐完.
      ADC指令將向量:jf、鏟:和進位向量CarryIn相加,產(chǎn)生和向量和新的進位向量CarryOut; 加法進位鏈,其特征在于,向量瓦與向量K相加產(chǎn)生進位向量Carry:Carry:作 為向量與向量求和的輸入進位向量,相加產(chǎn)生進位向量Carry2,如此進行m-l次, CarrymS1作為向量t與向量求和的輸入進位向量并產(chǎn)生進位向Λ:Carrymsm個 向量加法組成一條所述加法進位鏈。用公式可表示為:
      加法進位鏈包括m個向量加法,最后只產(chǎn)生一個進位向量Carrym,消除m-l個進位向 量。
      3. 如權利要求2所述實現(xiàn)方法,其特征在于,所述.^型加法進位鏈,若滿足如下要求, 即為一條4型加法進位鏈:將需要求和的2s個向量按高低位排序,能夠排成字對齊的s個 向量對,且向量對按高低順序依次相差一個字,將向量對按從低到高的順序組成一條加法 進位鏈,計算向量長度整數(shù)相乘,過程為:使用帶進位的向量加法指令對W型加法進位鏈 的每組向量對求和,共需要執(zhí)行S次,帶進位的向量加法指令,產(chǎn)生S個和向量和一個進位 向量; 所述B型加法進位鏈,滿足要求為:將需要求和的S個向量按高低位排序,能夠排成依 次相差一個字的加法進位鏈,所述S型加法進位鏈規(guī)定如下三個操作為一輪B型加法進 位鏈計算操作: (1) 將和向量最低字保存到一個低位向量指定的字中; (2) 將和向量向低位移一個字; (3) 將和向量與下一個向量,以及進位向量相加,產(chǎn)生新的和向量和新的進位向量; 所述?型加法進位鏈由低到高的順序依次對鏈中的s個向量執(zhí)行?型加法進位鏈計 算操作,共需執(zhí)行s-1次S型加法進位鏈計算操作,產(chǎn)生一個高位向量和若干低位向量以及 一個加法進位向量。
      4. 如權利要求1所述的實現(xiàn)方法,其特征在于,所述向量長度整數(shù)相乘中的乘法計 算,使用向量乘法指令將被乘數(shù)向量依次與乘數(shù)向量的每個字相乘,得到所有積向量,過程 為: 使用字擴散指令(SPREAD),高位乘法向量指令(MULHIGH)和低位乘法向量指令 (MULLOff); 被乘數(shù)向量f和乘數(shù)向量f:都有s個字,計算過程為: FORi-Itos,反復執(zhí)行步驟⑴至(3)
      產(chǎn)生s個低位積向量K到ζ和s個高位積向量習^到Ιζβ
      5. 如權利要求4所述的實現(xiàn)方法,其特征在于,所述向量長度整數(shù)相乘中的加法計算, 對所有被乘數(shù)向量依次與乘數(shù)向量的每個字相乘得到的積向量,使用加法進位鏈算法快速 求和; 使用帶進位向量加法指令(ADC)、向量混合指令(BLEND)以及向量移位指令(SHIFT);B2、將所述2s個積向量中的2s-2個向量分為s-1組向量對,組成一條c/?型加法進位 鏈,由低位向高位對s-1組向量對依次求和,得到s+1個和向量,SuniQMSums,以及1個 加法進位向量Carrys;

      B3、s+1個和向到Sums組成一條型加法進位鏈,進行S輪型加法進位鏈 計算,得到低位結果向量Low,高位和向量Hi彡Zis,加法進位向量Car?-ysf+i
      + ] B4、將進位向量Carrys、Carrys^1快速累加到高位和向量得到乘法結果向 量High、Low〇
      6.如權利要求1所述的實現(xiàn)方法,其特征在于,當被乘數(shù)向量f或乘數(shù)向量i?的高位 若干個字為0時,對所述向量長度整數(shù)乘法進行優(yōu)化: 設向量乂高Sx個字為0,向量F高Sy個字為0,若Sx >Sy,則交換向量f和向量?各字 的值; 向量F?的高Sy個字是0,只對向量^1的低S-SyA字擴散,進行S-Sy輪向量乘法,產(chǎn)生 S-Sy個低位積向量G到,和S-Sb個高位積向量瓦^到Hs_Sy ; 對產(chǎn)成的2* (S-Sy)個積向量,則步驟103只要進行S-Sy-I輪c/l型加法進位鏈計算,產(chǎn) 生s-sy+l個和向量,Smn^MSums_s^以及1個加法進位向量Carrys^1J; 對上面產(chǎn)生的s-sy+l個和向量到Sums_s^,以及1個加法進位向量 執(zhí)行S-Sy輪2型加法進位鏈計算,得到低位結果向量Mm;,高位和向量加法進 位向量CarrysLsyH,其中向量Low只有S-Sy個低位字是有效的,高Sy個字是無效的; mCarrys^CcirTyj^syH累加到H詔fcs=Sj;,得到高位結果向量向量 和向量的低S-SyA字合并,組成向量f、F的乘法結果; 以上優(yōu)化方法執(zhí)行了S-Sy輪向量乘法,S-Sy-I輪型加法進位鏈計算,8-\輪?型加 法進位鏈計算,節(jié)省了Sy輪向量乘法、Sy輪^型加法進位鏈計算和Sy輪S型加法進位鏈計 算。
      7.如權利要求1所述的實現(xiàn)方法,其特征在于,該方法還包括:將η組長度都不大于向 量長度[^的被乘數(shù)和乘數(shù)組成兩個向量,一次計算出η組整數(shù)相乘,η為大于等于1的自 然數(shù); 將η組被乘數(shù)組成一個被乘數(shù)向量η組乘數(shù)組成一個乘數(shù)向量每組被乘數(shù)和乘 數(shù)都是字對齊的; 只對?中的字進行組內擴散,即將乘數(shù)Yi的第j個字YiU]擴散到向量中從 _ *(i- 1) + !?到*i的_?個字。所以只需要進行輪向量乘法,產(chǎn)生$個低位積 向量ζ*到Lgj和_個高位積向量?到; 將2 - 1組字對齊的高位和低位積向量組成一條4·型加法進位鏈,進行H- 1輪 " - LtiJ ?Λ型加法進位鏈操作; 將bd- 1組字對齊的高位和低位積向量組成一條<^型加法進位鏈,進行一 1輪 ^型加法進位鏈操作,生成[fj+1個和向量到Sumgj; 將Ifj+1個和向量到組成一條s型加法進位鏈,進行輪?型加法 進位鏈操作,生成和Zftgh,將兩個加法進位加回High; 將和按被乘數(shù)和乘數(shù)的分組拆開,組合成每組整數(shù)的乘法結果。
      8. -種基于向量指令的大整數(shù)乘法實現(xiàn)裝置,其特征在于,在支持帶進位向量加法指 令的處理器上實現(xiàn)權利要求1?7中的任一方法,包括:向量拆分組合模塊、向量長度整數(shù) 相乘模塊、乘積求和模塊,其中, 向量拆分組合模塊,用于將被乘數(shù)和乘數(shù)分別拆成一個或多個向量;或將η組長度不 大于向量長度的整數(shù)組合成兩個向量; 向量長度整數(shù)相乘模塊包括兩個子模塊:向量乘法模塊和向量加法模塊; 向量乘法模塊,用于計算被乘數(shù)向量與乘數(shù)向量的各字相乘,得到所有積向量; 向量加法模塊包括c/l型加法進位鏈模塊和S型加法進位鏈模塊,用于將積向量組成 一條型加法進位鏈計算,將運算出的向量組成一條S型加法進位鏈,最后將兩個加法進 位加回和向量,得到被乘數(shù)向量和乘數(shù)向量的乘積;如果被乘數(shù)或乘數(shù)被拆為多個向量,需 要多次調用向量長度整數(shù)相乘模塊進行計算; 乘積求和模塊,用于對所有向量長度整數(shù)相乘模塊產(chǎn)生的積向量求和。
      9. 如權利要求8所述的實現(xiàn)裝置,其特征在于,在Intel公司的XeonPhi協(xié)處理器上 實現(xiàn)。
      【文檔編號】G06F7/523GK104461449SQ201410645961
      【公開日】2015年3月25日 申請日期:2014年11月14日 優(yōu)先權日:2014年11月14日
      【發(fā)明者】林璟鏘, 趙原, 荊繼武, 潘無窮, 鄭昉昱, 向繼 申請人:中國科學院數(shù)據(jù)與通信保護研究教育中心
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1