JP4728392B2 - 大数乗算方法およびデバイス - Google Patents

大数乗算方法およびデバイス Download PDF

Info

Publication number
JP4728392B2
JP4728392B2 JP2008510722A JP2008510722A JP4728392B2 JP 4728392 B2 JP4728392 B2 JP 4728392B2 JP 2008510722 A JP2008510722 A JP 2008510722A JP 2008510722 A JP2008510722 A JP 2008510722A JP 4728392 B2 JP4728392 B2 JP 4728392B2
Authority
JP
Japan
Prior art keywords
vector
word
digit
bit
bits
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008510722A
Other languages
English (en)
Other versions
JP2008544344A (ja
Inventor
ドロール、イタイ
ドルグノフ、ボリス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Israel Ltd
Original Assignee
SanDisk IL Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk IL Ltd filed Critical SanDisk IL Ltd
Publication of JP2008544344A publication Critical patent/JP2008544344A/ja
Application granted granted Critical
Publication of JP4728392B2 publication Critical patent/JP4728392B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/525Multiplying only in serial-serial fashion, i.e. both operands being entered serially
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、大数の乗算の分野に関し、特に、符号付き演算のみを用いて大数の乗算を提供するための方法およびデバイスに関する。
大数乗算は、本技術で既知である、多数のコンピュータ・アルゴリズムに使用されている。大数演算の一般的な用途は、(各々が1000ビット程度の)非常に大きな数の、多数の乗算オペレーションを実行する公開鍵暗号法およびモンゴメリー乗算を含む。
「大数」は、レジスタを持つプロセッサが用いる、Nビットの整数、または幅がWビットのワード・サイズである。この場合、N>2×Wである。用語「ワード・サイズ」は、単精度レジスタのビット数、または使用中のプロセッサのメモリ幅を指す。Wビットのワード・サイズを持つ一般的なプロセッサは、Wビットの二つのワードを乗算し、その結果を、2×Wビットの二倍幅レジスタに記憶することが可能である。乗算すべきオペランドのサイズがWビットよりも大きい場合は、専用の乗算アルゴリズムが必要である。
図1は、ペンと紙とを使用して、二つの、複数桁の数字を掛け算するための、従来の技術による乗算プロシージャ10を表す。各数は、二つの十六進数字から構成されている。第一の数は、(参照番号12によって示す)3Bであり、第二の数は、(参照番号14によって示す)CAである。乗算プロシージャ10は、第二の数14の最下位の数字(LSD)のみを、第一の数12の二つの数字に乗算することから開始し、第一の中間結果を生み出す。この第一の中間結果は、参照番号16によって示す。
次に、類似のオペレーションを実行し、第二の数14の最上位の数字(MSD)を、第一の数12の二つの数字に乗算して、第二の中間結果を生み出す。参照番号18によって示す第二の中間結果は、第一の中間結果16の下方、一桁左へ移して書き込む。
乗算プロシージャ10が完了すると、第一の中間結果16と第二の中間結果18との合計が、(参照番号20によって示す)乗算結果2E8Eである。
ここに示す十六進数の乗算は、説明を明瞭にするためにのみ用いている。本技術において既知であるコンピュータ・アルゴリズムは、二進数に対して乗算を適用する。
図2は、図1に示す二つの、複数ワードの数の乗算に適用した、従来の技術によるコンピュータ乗算アルゴリズム30のフロー・チャートである。コンピュータを用いる場合、数の各デジットは、Wビットのコンピュータ・ワードで表す。用語デジットは、コンピュータ・ワードのサイズである大数の一部分に言及する。
一般に、コンピュータ乗算アルゴリズム30は、従来の技術によるプロシージャ10に同様な様式で適用する(図1を参照)。しかし、コンピュータ乗算アルゴリズムによれば、各中間乗算の結果は、乗算アルゴリズムの進行に応じて、結果ベクトルへ加算するが、図1の乗算プロシージャ10によれば、途中結果は別個に記憶し、最終段階で合計する。
最初のステップ32で、二つの被乗数ベクトルXおよびYと、その結果を保持するための結果ベクトルZを提供する。ベクトルX、YおよびZは、Wビット・ワードからなる。入力ベクトルXおよびYの長さは、各々、max_xおよびmax_yである。乗算結果を一時的に保持するために、(2×Wビット構成の)二倍幅レジスタrを用いる。
ステップ34で、結果ベクトルZをクリアする。
ステップ36で、二つの被乗数ベクトルXおよびYの内部変数i、j、c1およびc2をクリアする。この場合、iは第一数デジット・インデックスであり、jは第二数デジット・インデックスであり、c1は直前の乗算オペレーションからの高位のワードであり、そしてc2は直前の加算演算からの繰り上げである。
以下のステップ38、40、42、44、46および48は、主要な乗算ループを構成する。ステップ38で、二つのデジットを乗算し、直前の乗算高位のワードc1と、直前の加算オペレーションc2からの繰り上げを加算する。その結果を、二倍幅レジスタr内に一時的に記憶する。
ステップ40で、高位ワード乗算の結果rをc1内に記憶する。
次のステップ42で、加算繰り上げを計算してc2内に記憶する。
ステップ44で、結果ベクトル要素Zi+jを、それに乗算結果を加算することによって更新する。各結果ベクトル要素の幅がWであるため、rの低位ワードのみがエレメントZi+jに加算される。
ステップ46で、X被乗数インデックスiを、1だけ増加させる。
次のステップ48で、iの値が入力ベクトルXの長さよりも大きいかどうかを判定する。肯定の場合は、コンピュータ乗算アルゴリズムは、ステップ50へ進む。しかし、否定の場合は、コンピュータ乗算アルゴリズムは、ステップ38へ戻り、主要な乗算ループを繰り返す。
ステップ50で、次の結果ワードを、それにc1およびc2の値を加算することによって更新する。
ステップ52で、第二の被乗数インデックスjを1だけ増加させて、内部変数i、c1およびc2をクリアする。
次のステップ54で、内部変数jが入力ベクトルYの長さよりも大きいかどうかを判定する。肯定の場合(すなわち、max_x掛けるmax_y乗算オペレーションを実行した後)、コンピュータ乗算アルゴリズムはステップ56で終了し、結果ベクトルZが最終的な乗算結果を保持する。しかし、否定の場合は、コンピュータ乗算アルゴリズムは、ステップ38から内部ループを繰り返して、第一の被乗数を第二の被乗数の次のワードで乗算する。
従来の技術によるコンピュータ乗算アルゴリズムは、無符号の乗算オペレーションに基づく、大数の乗算を提供する。換言すれば、入力ベクトルX、Y、また結果ベクトルZは、すべて、デジット毎にWビットの正数を含む(符号ビットが全くない)。
しかしながら、本技術において既知であるいくつかのデジタル信号プロセッサ(DSP)は、符号付きオペレーションのみに対する演算サポートを持つ。無符号演算をサポートしない(すなわち、有符号演算のみに制限した)従来の技術によるDSPの一例は、例えばLSIロジック社が提供するZSP200DSPである。
そのようなタイプのDSPにおいては、各ワードの最上位ビット(MSB)は、常に符号ビットである。上記説明のままの、従来の技術によるコンピュータ乗算アルゴリズムを使用して、有符号乗算オペレーションを実行すると、誤った結果を生じることになる。例えば、ワード・サイズが8ビット(W=8)である場合、数0xFF×0xFFの無符号乗算オペレーションの結果は、0xFE01である(255×255は、65,025である)。有符号オペレーションのみをサポートする場合、数255は−1を表す。数−1×−1の乗算オペレーションの結果は、+1を生じるが、これは、無符号オペレーションを用いた結果とは異なる。
有符号オペレーションを実行可能な、本技術において既知であるプロセッサを使用するコンパイラは、有符号乗算結果を無符号結果へ変換する一連のオペレーションを実行することによってのみ、上述の問題を解決する。
本技術において既知である変換プロセスは、典型的に、以下のように実行される。<定義>Wは、レジスタ内のビット数、またはメモリ幅である。AおよびBは、被乗数である。各被乗数は、長さがWビットである。rは、無符号A×Bオペレーションの結果を記憶するために用いる、二倍幅の変数(2×Wビット)である。rは、二つの被乗数AおよびBの有符号乗算積(2×Wビット)である。AのMSBが1である(Aを負の数とみなす)場合、〜Aは、二つの、Aの補数である、と定義する。0−〜A=Aであることに留意する。
有符号乗算オペレーションA×Bを実行するとき、Aが負数であり(そのMSBが1である)場合、Aは、A=2W−〜Aである、と定義する。この数にBを乗算すると、r=(2W−(〜A))xB=2×B+−(〜A×B)=2×B+rという結果を生じる。
それゆえ、正数Bによる負数Aの無符号乗算オペレーションを実行するためには、AとBの有符号乗算オペレーションを実行してから、その結果にB×2の値を加算することができる。注目すべきは、B×2の乗算プロセスは、BをWビットだけ左へ移すのと同じである、ということである(B×2=B<<W)。同様に、被乗数AおよびBが負である場合、結果は、r=2×A+2×B+rまたはr=(A<<W)+(B<<W)+rである。
結論として、有符号のみの演算ユニットを持つ、無符号乗算を実行する一般的な、従来の技術によるプロセッサは、以下のオペレーションを実行する。(1)被乗数AおよびBの有符号乗算を実行する。そして(2)各被乗数(AおよびB)の符号ビットをテストする。被乗数が負である場合、他の被乗数を左へWビットだけ移し、その移した他の被乗数を、有符号乗算オペレーションの結果に加算する。
負数の確率は50%であるため、平均で、既存のプロセッサは、乗算オペレーション毎に、二倍サイズの数の一回の移動と、二倍サイズの数の一回の加算を実行しなければならない。そのようなプロセッサは、各被乗数が正あるいは負であるのかを判定するために、各被乗数をテストしなければならない。
これらの追加の算術演算は、有符号限定プロセッサの乗算性能を、無符号乗算を実行可能なプロセッサに比べ、著しく減少させる。DSPを用いる場合、状況はさらに悪化する。DSPは、単一オペレーション内で乗算および加算を実行することが可能であるが、上述のように追加の算術オペレーションを実行する必要があると、DSPの乗算および加算命令の単一オペレーションという利点を利用できない。
したがって、既存技術の欠点を解決する、有符号演算限定のプロセッサを用いて効率的な大数乗算を実行するデバイスおよび方法の必要性が広く認識される。また、そのようなものを得ることは非常に有利である。
したがって、本発明の主要な目的は、有符号演算に制限されたプロセッサを用いる効率的な大数乗算を実行するデバイスおよび方法を導入することによって、従来の技術の欠点を解決することである。
本発明によれば、次のことを含む、第一の被乗数を第二の被乗数で乗算するための無符号乗算方法が提供される。(a)第一の被乗数を第一のレジスタ内に、少なくとも一つの各デジットの第一のベクトルとして記憶すること。なお、各デジットは、所定のビット数を持つ。(b)第二の被乗数を第二のレジスタ内に、少なくとも一つの各デジットの第二のベクトルとして記憶すること。なお、各デジットは、所定のビット数を持つ。(c)第一のベクトルのデジットを、各々、所定のビット数よりも1ビット少ない対応デジットへ変換すること。(d)第二のベクトルのデジットを、各々、所定のビット数よりも1ビット少ない対応デジットへ変換すること。そして(e)すべての乗算が有符号乗算に制限されたプロセッサを用い、第一の被乗数に対応する各デジットを第二の被乗数に対応する各デジットで乗算することを含むステップによって、有符号乗算結果を算出すること。
算出ステップは、有符号乗算結果のデジットの中間値をマスクすることを含むことが好ましい。有符号乗算結果のデジットの中間値は、図4に示すボックス86内のエレメントZi+jである。
この方法は、さらに、(f)有符号乗算結果を、対応する無符号乗算結果へ変換
することを含むことが好ましい。
本発明によれば、さらに、第一の被乗数を第二の被乗数で乗算するための、次のものを含むデバイスが提供される。(a)第一の被乗数を、少なくとも一つの各デジットの第一のベクトルとして記憶するための第一のレジスタ。この場合、各デジットは、所定のビット数を持つ。(b)第二の被乗数を、少なくとも一つの各デジットの第二のベクトルとして記憶するための第二のレジスタ。この場合、各デジットは、前記所定のビット数を持つ。そして(c)すべての乗算が有符号乗算に制限されたプロセッサ。このプロセッサは、第一のベクトルおよび第二のベクトルを、各々、各デジットが上記所定のビット数よりも1ビット少ない少なくとも一つの各デジットの対応変換第一ベクトルおよび対応変換第二ベクトルへ変換し、そして対応変換第一ベクトルのビットを対応変換第二ベクトルのビットで乗算して、有符号乗算結果を算出するためのものである。
プロセッサは、既存の第一および第二のレジスタを用いて、その場で第一のベクトルおよび第二のベクトルの変換を適用することが好ましい。代替的に、対応変換第一ベクトルおよび対応変換第二ベクトルを記憶するために、第三の記憶ユニットを備えてもよい。
プロセッサは、有符号乗算結果のデジットの中間値をマスクするためのマスキング・オペレーションを適用することが好ましい。
本発明の、他の特徴および利点は、以下の図面および説明文から明らかになる。
本発明をより良く理解するために、その実施例に関する添付の図面を参照する。図中、類似符号は、対応するセクションまたはエレメントを示す。
本発明は、有符号演算のみに限定したプロセッサを用いて効率的な大数乗算を実行する、革新的なデバイスおよび方法である。本発明の好適方法は、二つの主な段階で実行される。第一に、最上位ビットがゼロ・ビットとなるよう、Wビット・ワードで表す乗数を、W−1ビット・ワードへ変換する。この変換は、有符号ビット(MSB)が常に0であることを保証する。第二に、本技術において既知である乗算アルゴリズムを用いる長数乗算プロシージャを実行する。
さて、被乗数が正数になったので、(本技術において既知である乗算技術が必要とする)有符号乗算結果を無符号の結果へ変換するための、算術オペレーションの追加のシーケンスを適用する必要はない。
したがって、非常に大きな被乗数に対して本発明の方法を実行すれば、本技術において既知である標準乗算技術に比べ、著しいコスト低減が達成できる。さらに、本発明は、単一オペレーションで加算と乗算を実行するためにDSPの機能を利用して、さらに高度な乗算性能を得る。
本技術において既知である他の乗算システムとの互換性を保つために、本発明は、乗算プロシージャのW−1ビット・ワード結果を、所定のワード表記(本文ではWビット・ワード)へと変換するオプションを提供する。そのような変換は、少なくとも一つの出力ワードのMSBが、『1』ビットであることを可能にする。
さて、図3を参照する。複数のWビット・ワードを複数のW-1ビット・ワードへ変換するための、従来の技術による変換プロシージャ60を示すブロック図である。この場合、例えば、W=8。
nビットを持つ被乗数のワード数[n/W]であり、この場合、Wは、各ワードのビット数(例えば、W=8)である。例えば、第一のワードwの8ビットは、A0(LSB)、A1、A2、A3、A4、A5、A6およびA7(MSB)によって表し、第二のワードwの8ビットは、B0(LSB)、B1、B2、B3、B4、B5、B6およびB7(MSB)によって表す。第三のワードwの8ビットは、C0(LSB)、C1、C2、C3、C4、C5、C6およびC7(MSB)と表し、以下、同様に表す。
第一のオペレーションは、被乗数の最下位デジット(LSD)を保持する第一のワードwの最上位ビット(MSB)A7を、第二のワードwの最下位ビット(LSB)B0へコピーし、第二のワードwのビットB0、B1、B2、B3、B4およびB5を1位置だけ左へシフトすることを伴う。
第二のオペレーションは第二のワードwに対して適用するが、今度は二つの最上位ビットB6およびB7を、第三のワードwの二つの最下位ビットC0およびC1へコピーし、第三のワードwのビットC0、C1、C2、C3およびC4を2位置だけ左へシフトする。
被乗数のすべての[n/W]ワードに類似オペレーションを適用した後、[n/(W−1)]新変換ワードが生じ、各新変換ワードはW−1ビットのみで表される。
実際には、上記の、WビットからWー1ビットへの変換プロシージャを(例えば共通バッファを用いて)その場で実行する場合、これらのオペレーションは、MSD(最上位デジット)からLSD(最下位デジット)へ適用する。例えば、第二のオペレーションの場合には、第三のワードw3のビットC0、C1、C2、C3およびC4を2位置だけ左へシフトさせる前に、二つの最上位ビットB6およびB7を二つの最下位ビットC0およびC1へコピーする。
さて、図4を参照する。これは、本発明の方法70を表すフロー・チャートである。
最初のステップ72で、図3の変換プロシージャ60を実行して、被乗数のWビット・ワード表記をW−1ビット・ワード表記へ変換する。両入力オペランドXおよびYを、新しいW−1ビット・ワード表記へ変換する(すなわち、乗数を保持するのに用いる各ワードは、W−1ビットを含む)。変換には、(十分なメモリが割り当てられるならば)、「オリジナル」Wビット・ワード表記の入力被乗数を保持する、同じ入力バッファを採用してもよいし、または別個に割り当てたバッファをさらに採用してもよい。入力ベクトルXおよびYの長さは、それぞれ、max_xおよびmax_yである。
max_xおよびmax_yは、以下の通りに計算する。
max_x=[n/(W−1)]、そしてmax_y=[n/(W−1)]。この場合、nは、オペランドXの長さ(すなわちビット数)を表し、nは、オペランドYの長さ(すなわちビット数)を表す。
次のステップ74で、結果を保持するための結果ベクトルZを提供する。乗算結果を一時的に保持するために、(2×Wビット構成の)二倍幅レジスタrを用いる。本発明のマスクは、2W−1−1(MSBビットは「0」で、すべての他のビットは「1」である)と定義する。本文では、マスキング・オペレーションを、Wビット・ワードをマスクに対して論理的にANDするオペレーションと定義する。
以下のステップ76、78、80、82および84は、図2に示すコンピュータ乗算アルゴリズム30の対応するステップ34、36、38、40および42と同一である。
ステップ76で、結果ベクトルZをクリアする。
ステップ78で、二つの被乗数ベクトルXおよびYの内部変数i、j、c1およびc2をクリアする。この場合、iは第一数デジット・インデックスであり、jは第二数デジット・インデックスであり、c1は直前の乗算オペレーションからの高位ワードであり、そして、c2は直前の加算オペレーションからの繰り上げである。
ステップ80、82、84、86、88および90は、主要な乗算ループである。ステップ80で、二つのデジットを乗算し、直前の乗算高位ワードc1と、直前の加算オペレーションc2からの繰り上げを加算する。結果は、二倍幅レジスタr内に一時的に記憶する。
ステップ82で、高位ワード乗算の結果rをc1内に記憶する。
次のステップ84で、加算繰り上げを計算して、c2内に記憶する。
ステップ86で、結果ベクトル要素Zi+jを、それに乗算結果を加算することによって更新する。結果ベクトル要素の幅がWであるので、rの低位ワードだけをZi+jへ加算する。それから、この結果ベクトル要素Zi+jに対してマスキング・オペレーションを適用する。有符号算術オペレーションを実行する場合、結果ベクトル要素Zi+jの符号ビット(MSB)は無関係であるため、(W−1「1」−ビット・マスクの)マスキング・オペレーションは、結果ベクトル要素Zi+jのこの符号ビット(MSB)をクリアすることを保証する。
以下のステップ88、90、92、94、96および98は、図2に示す、対応する従来の技術によるステップ46、48、50、52、54および56と同様な様式で適用する。
ステップ88で、X被乗数インデックスiを、1だけ増加させる。
ステップ90で、iの値が入力ベクトルXの長さよりも大きいかどうかを判定する。肯定の場合は、長数乗算プロシージャはステップ92へ進む。しかしながら、否定の場合には、長数乗算プロシージャは、ステップ78を適用するために戻り、主要な乗算ループを繰り返す。
ステップ92で、次の結果ワードを、それにc1およびc2の値を加算することによって更新する。
ステップ94で、第二の被乗数インデックスjを1だけ増加させ、内部変数i、c1およびc2をクリアする。
次のステップ96で、内部変数jが入力ベクトルYの長さよりも大きいかどうかを判定する。肯定の場合(すなわち、max_x掛けるmax_yの乗算オペレーションの実行後)、最終的な乗算結果を保持する有符号結果ベクトルZを、無符号結果ベクトルへ変換する。これは、複数のWー1ビット・ワードを複数のWビット・ワードへ変換するための、例えば、従来の技術による変換プロシージャ(例えば、図3の逆変換プロシージャ)を用いることによって実行する。しかし、否定の場合は、長数乗算プロシージャは、ステップ80から内部ループを繰り返して、第一の被乗数を第二の被乗数の次のワードに乗算する。
図5を参照する。これは、本発明によるデバイス100の高度な概略ブロック図である。各々をWビットで表したデジットの第一のベクトルとして第一の被乗数を記憶するためにレジスタ102を備え、各々をWビットで表したデジットの第二のベクトルとして第二の被乗数を記憶するためにレジスタ104を備える。
有符号乗算のみに制限されたプロセッサ106は、第一の被乗数の、そして第二の被乗数のデジットの各々を、W−1ビット表記へ変換し、それから、第一の被乗数の変換デジットを第二の被乗数の変換デジットで乗算して有符号乗算結果を算出する。
第一の被乗数の変換デジットおよび第二の被乗数の変換デジットをそれぞれ記憶するために、記憶装置103(例えば、RAM、レジスタ、その他)を備えることが好ましい。プロセッサ106が算出した有符号乗算結果も、W−1ビットで各々を表したワードとして、記憶ユニット103内に記憶する。
プロセッサ106は、また、有符号乗算結果を無符号乗算結果へ変換し、この無符号乗算結果を、Wビットで各々を表したワードとして記憶ユニット103内に記憶する。
代替的に、第一の被乗数の、そして第二の被乗数のW−1ビット表記への変換は、適所あるプロセッサ106によって(すなわち、各々レジスタ102およびレジスタ104を用いて)適用できる。
本文では、本発明を、特定乗算アルゴリズムによって実行するものとして説明している。しかしながら、本発明の範囲内で他の実施例が可能であることは理解すべきである。したがって、本発明は、効率的な大数乗算を実行する前に被乗数の各Wビット・ワ
ードを、W−1ビット・ワードへ変換する他の方法およびデバイスにも関する。
本発明をその特定な実施例に関して説明したが、理解すべきことは、その説明は制限を意味せず、当業技術者による修正はさらに可能であるため、そのような修正は添付の請求項の範囲内に含むことを意図している、ということである。
ペンと紙を用いる、二つの複数桁の数字を乗算するための、従来の技術による乗算プロシージャを表す。 図1に示す二つの複数ワードの数の乗算に適用した、従来の技術によるコンピュータ乗算アルゴリズムを表すフロー・チャートである。 Wビット・ワードをW−1ビット・ワードへ変換するための、従来の技術による変換プロシージャを示すブロック図である。この場合、例えば、W=8。 本発明による方法を表すフロー・チャートである。 本発明によるデバイスの、高度な概略ブロック図である。

Claims (8)

  1. プロセッサが、第一の数を第二の数で乗算するための、無符号乗算方法であって、
    前記第一の数及び前記第二の数は、共に無符号の数であり、
    (a)前記第一の数を、複数のデジットから構成される第一のベクトルとして第一のレジスタ内に記憶し、なお、前記第一のベクトルの各々のデジットは1ワードで表される所定のビット数を持つ、
    (b)前記第二の数を、複数のデジットから構成される第二のベクトルとして第二のレジスタ内に記憶し、なお、前記第二のベクトルの各々のデジットは1ワードで表される前記所定のビット数を持つ、
    (c)前記第一のベクトルの前記各デジットを、前記変換された第一のベクトルの前記各々のワードの最高位のビットが零ビットであるように、各々、前記所定のビット数よりも1ビット少ない対応デジットへ変換することにより、前記第一の数を正数に変換し、
    (d)前記第二のベクトルの前記各デジットを、前記変換された第二のベクトルの前記各々のワードの最高位のビットが零ビットであるように、各々、前記所定のビット数よりも1ビット少ない対応デジットへ変換することにより、前記第二の数を正数に変換し、そして
    (e)前記プロセッサはすべての乗算が有符号乗算に制限されたプロセッサであって、前記第一のベクトルの前記変換されたデジットのそれぞれと、前記第二のベクトルの前記変換されたデジットのそれぞれとを乗算することによって有符号乗算結果を算出し、
    前記第一及び前記第二のベクトルの前記変換されたデジットは、それぞれ複数個存在し、前記第一のベクトルの前記変換されたデジットのそれぞれと、前記第二のベクトルの前記変換されたデジットのそれぞれとによる乗算の積のそれぞれに対して、前記1ワードで表される最高位ビットが常に零となるようにマスキングオペレーションを行うことを特徴とする無符号乗算方法。
  2. 前記対応デジットへの変換に際し、前記第一及び第二の数に対するデジットの数は各々、前記第一及び第二の数のそれぞれのビット数を前記1ワードで表される所定のビット数−1で除して得られた数であり、デジットは、全てのデジットにおける全てのワードのそれぞれの最高位ビットが零ビットであるように変換されることを特徴とする請求項1に記載の無符号乗算方法。
  3. 前記対応デジットへの変換に際しては、前記第一及び前記第二の数のそれぞれに対して、それぞれの数の最下位デジットを保持する第一のワードの最上位ビットを前記第一のワードに引き続く第二のワードの最下位ビットへコピーし、前記第二のワードの各ビットを1位置だけ上位ビットへシフトさせ、さらに、前記第二のワードの最上位から(1+1)ビットを前記第二のワードに引き続く第三のワードへコピーするという操作と同様な結果が得られるように変換が行われることを特徴とする請求項1または2に記載の無符号乗算方法。
  4. さらに、(f)前記有符号乗算結果を、対応する無符号乗算結果へ変換するステップからなることを特徴とする請求項1から3のいずれかに記載の無符号乗算方法。
  5. 第一の数を第二の数で乗算するためのデバイスであって、
    前記第一の数及び前記第二の数は、共に無符号の数であり、
    (a)前記第一の数を、複数のデジットから構成される第一のベクトルとして記憶するための第一のレジスタ、なお、前記第一のベクトルの各々のデジットは少なくとも1ワードで表される所定のビット数を持つ、
    (b)前記第二の数を、複数のデジットから構成される第二のベクトルとして記憶するための第二のレジスタ、なお、前記第二のベクトルの各々のデジットは少なくとも1ワードで表される前記所定のビット数を持つ、
    (c)すべての乗算が有符号乗算に制限されたプロセッサからなり、前記プロセッサは、前記第一のベクトルおよび前記第二のベクトルを、各々、少なくとも一つの各デジットの対応変換第一ベクトルおよび対応変換第二ベクトルへ変換し、この場合の前記変換された第一及び第二のベクトルのデジットの各々は前記所定のビット数よりも1ビット少なく、
    各々、前記変換された第一ベクトルの各々のワード及び変換された第二のベクトルの各々のワードの最高位のビットが零ビットであるように変換することにより、前記第一の数及び前記第二の数をそれぞれ正数に変換し、そして、
    前記対応変換第一ベクトルのビットを前記対応変換第二ベクトルのビットで乗算し、有符号乗算結果を算出するためのものであり、
    前記第一及び前記第二のベクトルの前記変換されたデジットは、それぞれ複数個存在し、
    前記第一のベクトルの前記変換されたデジットのそれぞれと、前記第二のベクトルの前記変換されたデジットのそれぞれとによる乗算の積に対して、前記1ワードで表される最高位ビットが常に零となるようにマスキングオペレーションを行い、
    前記マスキングオペレーションは、前記プロセッサが行うものであることを特徴とするデバイス
  6. 前記対応デジットへの変換に際し、前記第一及び第二の数に対するデジットの数は各々、前記第一及び第二の数のそれぞれのビット数を前記1ワードで表される所定のビット数−1で除して得られた数であり、デジットは、全てのデジットにおける全てのワードのそれぞれの最高位ビットが零ビットであるように変換されることを特徴とする請求項5に記載のデバイス。
  7. 前記プロセッサが、その場で、前記第一のベクトルおよび前記第二のベクトルの前記変換を適用する、請求項5または6に記載のデバイス。
  8. さらに、(d)前記対応変換第一ベクトルおよび前記対応変換第二ベクトルを記憶するための記憶ユニットからなる、請求項5から7のいずれかに記載のデバイス。
JP2008510722A 2005-05-09 2006-05-09 大数乗算方法およびデバイス Expired - Fee Related JP4728392B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US67890705P 2005-05-09 2005-05-09
PCT/IL2006/000551 WO2006120680A2 (en) 2005-05-09 2006-05-09 Large number multiplication method and device

Publications (2)

Publication Number Publication Date
JP2008544344A JP2008544344A (ja) 2008-12-04
JP4728392B2 true JP4728392B2 (ja) 2011-07-20

Family

ID=37396968

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008510722A Expired - Fee Related JP4728392B2 (ja) 2005-05-09 2006-05-09 大数乗算方法およびデバイス

Country Status (6)

Country Link
US (1) US7672989B2 (ja)
EP (1) EP1880275A4 (ja)
JP (1) JP4728392B2 (ja)
KR (1) KR101247164B1 (ja)
CN (1) CN101300544B (ja)
WO (1) WO2006120680A2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication
CN104115115B (zh) 2011-12-19 2017-06-13 英特尔公司 用于多精度算术的simd整数乘法累加指令
CN104011661B (zh) * 2011-12-23 2017-04-12 英特尔公司 用于大整数运算的向量指令的装置和方法
KR101615976B1 (ko) 2014-12-18 2016-04-28 한국건설기술연구원 공학용 목재 및 콘크리트 슬래브를 구비한 합성바닥판 구조

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60229140A (ja) * 1984-04-26 1985-11-14 Nec Corp 倍精度乗算器
JPS62236030A (ja) * 1986-04-08 1987-10-16 Nec Corp 乗算回路
JPH02212927A (ja) * 1989-02-14 1990-08-24 Fujitsu Ltd 2進整数乗算処理方法
JPH03241421A (ja) * 1990-02-20 1991-10-28 Yamaha Corp 乗算器
JPH04367932A (ja) * 1991-06-17 1992-12-21 Oki Electric Ind Co Ltd 倍精度乗算方法
JPH1185471A (ja) * 1997-07-09 1999-03-30 Matsushita Electric Ind Co Ltd 演算方法および演算装置
JP2000353077A (ja) * 1999-04-07 2000-12-19 Matsushita Electric Ind Co Ltd 多倍長演算装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5509129A (en) * 1993-11-30 1996-04-16 Guttag; Karl M. Long instruction word controlling plural independent processor operations
EP0795155B1 (en) * 1994-12-01 2003-03-19 Intel Corporation A microprocessor having a multiply operation
US6014684A (en) * 1997-03-24 2000-01-11 Intel Corporation Method and apparatus for performing N bit by 2*N-1 bit signed multiplication
US6029184A (en) 1997-06-17 2000-02-22 Sun Microsystems, Inc. Method of performing unsigned operations with signed instructions in a microprocessor
US6144980A (en) * 1998-01-28 2000-11-07 Advanced Micro Devices, Inc. Method and apparatus for performing multiple types of multiplication including signed and unsigned multiplication
US6038583A (en) * 1997-10-23 2000-03-14 Advanced Micro Devices, Inc. Method and apparatus for simultaneously multiplying two or more independent pairs of operands and calculating a rounded products
US6026483A (en) * 1997-10-23 2000-02-15 Advanced Micro Devices, Inc. Method and apparatus for simultaneously performing arithmetic on two or more pairs of operands
US6393554B1 (en) * 1998-01-28 2002-05-21 Advanced Micro Devices, Inc. Method and apparatus for performing vector and scalar multiplication and calculating rounded products
US6347326B1 (en) * 1999-03-02 2002-02-12 Philips Electronics North America Corporation N bit by M bit multiplication of twos complement numbers using N/2+1 X M/2+1 bit multipliers
US6708193B1 (en) * 2000-02-21 2004-03-16 Hewlett-Packard Development Company, L.P. Linear summation multiplier array implementation for both signed and unsigned multiplication
KR20020047509A (ko) * 2000-12-13 2002-06-22 신경욱 여분 이진 부분곱을 이용한 복소수 승산방법 및 이를적용한 복소수 승산기
US6742012B2 (en) * 2000-12-27 2004-05-25 Arm Limited Apparatus and method for performing multiplication operations

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60229140A (ja) * 1984-04-26 1985-11-14 Nec Corp 倍精度乗算器
JPS62236030A (ja) * 1986-04-08 1987-10-16 Nec Corp 乗算回路
JPH02212927A (ja) * 1989-02-14 1990-08-24 Fujitsu Ltd 2進整数乗算処理方法
JPH03241421A (ja) * 1990-02-20 1991-10-28 Yamaha Corp 乗算器
JPH04367932A (ja) * 1991-06-17 1992-12-21 Oki Electric Ind Co Ltd 倍精度乗算方法
JPH1185471A (ja) * 1997-07-09 1999-03-30 Matsushita Electric Ind Co Ltd 演算方法および演算装置
JP2000353077A (ja) * 1999-04-07 2000-12-19 Matsushita Electric Ind Co Ltd 多倍長演算装置

Also Published As

Publication number Publication date
US7672989B2 (en) 2010-03-02
JP2008544344A (ja) 2008-12-04
CN101300544B (zh) 2012-05-30
KR20080016803A (ko) 2008-02-22
KR101247164B1 (ko) 2013-03-25
WO2006120680A3 (en) 2007-05-03
CN101300544A (zh) 2008-11-05
EP1880275A2 (en) 2008-01-23
EP1880275A4 (en) 2009-12-16
WO2006120680A2 (en) 2006-11-16
US20060253522A1 (en) 2006-11-09

Similar Documents

Publication Publication Date Title
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
KR100329339B1 (ko) 압축데이터에의한승산-가산연산수행장치
US5835392A (en) Method for performing complex fast fourier transforms (FFT&#39;s)
JP7096828B2 (ja) 入力オペランド値を処理するための装置及び方法
US10768898B2 (en) Efficient modulo calculation
JP3139466B2 (ja) 乗算器及び積和演算器
US20180373678A1 (en) Outer product multipler system and method
JP4728392B2 (ja) 大数乗算方法およびデバイス
CN113467750A (zh) 用于基数为4的srt算法的大整数位宽除法电路及方法
US6338135B1 (en) Data processing system and method for performing an arithmetic operation on a plurality of signed data values
JP5175983B2 (ja) 演算装置
US5870322A (en) Multiplier to selectively perform unsigned magnitude multiplication or signed magnitude multiplication
JPH04355827A (ja) 開平演算装置
JP3660075B2 (ja) 除算装置
JP2007286380A (ja) 有限可換群演算方法、装置およびそのプログラム
JP7343473B2 (ja) レジスタベースの複素数処理
US6792442B1 (en) Signal processor and product-sum operating device for use therein with rounding function
JP2002530775A (ja) 複数の符号付きデータ値に算術演算を実施するデータ処理システムおよび方法
JPH1185471A (ja) 演算方法および演算装置
JP2010072981A (ja) 複素数の積和演算装置および積和演算方法
JP2011180966A (ja) 積和演算器
JPH05313861A (ja) 開平演算装置
JP2006500615A (ja) 向上したQuisquaterReduction
JPS6175927A (ja) 符号付nビツト2進数乗算方式
JPH05216626A (ja) 乗算器

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090814

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091110

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091211

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091218

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100112

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100119

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100813

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20101109

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20101116

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101210

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110307

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110314

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110401

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110414

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140422

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees