JP2013210837A - 演算回路及び演算方法 - Google Patents

演算回路及び演算方法 Download PDF

Info

Publication number
JP2013210837A
JP2013210837A JP2012080528A JP2012080528A JP2013210837A JP 2013210837 A JP2013210837 A JP 2013210837A JP 2012080528 A JP2012080528 A JP 2012080528A JP 2012080528 A JP2012080528 A JP 2012080528A JP 2013210837 A JP2013210837 A JP 2013210837A
Authority
JP
Japan
Prior art keywords
circuit
partial product
multiplicand
multiplier
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.)
Pending
Application number
JP2012080528A
Other languages
English (en)
Inventor
Kenichi Kitamura
健一 北村
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012080528A priority Critical patent/JP2013210837A/ja
Priority to US13/736,328 priority patent/US20130262549A1/en
Publication of JP2013210837A publication Critical patent/JP2013210837A/ja
Pending legal-status Critical Current

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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic

Landscapes

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

Abstract

【課題】複数ビット毎に乗数を処理してキャリーレス乗算を実行する演算回路を提供する。
【解決手段】演算回路は、被乗数を保持する被乗数保持回路と、乗数を保持する乗数保持回路と、被乗数のn倍数(nは整数)を出力するn倍数算出回路と、被乗数と被乗数を1ビット左シフトした結果との排他的論理和である中間排他的論理和演算結果を出力する中間排他的論理和演算回路と、乗数の第1の部分に応じて、第1の選択信号を出力する第1のデコード回路と、乗数の第2の部分に応じて、第2の選択信号を出力する第2のデコーダ回路と、第1の選択信号に応じて、被乗数のn倍数又は中間排他的論理和演算結果のいずれかを選択する第1部分積選択回路と、第2の選択信号に応じて、被乗数のn倍数又は中間排他的論理和演算結果のいずれかを選択する第2部分積選択回路と、第1部分積選択回路の第1部分積と第2部分積選択回路の第2部分積とを加算する加算回路を有する。
【選択図】図6

Description

本発明は、演算回路及び演算方法に関する。
近年、セキュリティ意識の高まりから暗号演算が必要となる機会が増えており、それに伴い計算機に暗号機能を搭載するケースが増えている。暗号演算においては複雑な計算を繰り返し行うことが多く、演算器をハードウェアとして実装することが高速化のために有効である。しかしながら、計算が複雑であるために、演算器の回路のコストと回路遅延とが問題となる。
暗号関連の演算のひとつに、キャリーレス乗算という演算がある。通常の乗算では、乗数の各桁と被乗数との積である部分積を求め、これら複数の部分積の総和をとる過程においてキャリーを伝搬させるが、キャリーレス乗算では、部分積の総和をとる過程でキャリーを伝搬させない。この演算では、結果的にSUM成分だけが最終積となるので、実質的には部分積の各ビットのXOR(排他的論理和)が積となる。
通常の2進数の乗算においては、1ビット毎に乗数を処理する場合、乗数の各ビット(0又は1)と被乗数との積である部分積(被乗数の0倍又は1倍)を求め、全ビットに対して求められた部分積の総和を求める。それに対して、高速化のために乗数を2ビット毎に処理する計算の仕方がある。その場合には、乗数の各2ビットに現れ得る4通りの2進数00、01、10、及び11に対応して、被乗数の0倍、1倍、2倍、及び3倍を、それぞれ部分積として求めることになる。この際、0倍数、1倍数、及び2倍数を計算するのは容易だが、3倍数を計算する回路は複雑になることが問題となる。これを解決する方法してBoothアルゴリズムが一般に用いられ、3倍数を直接計算することなく、4倍数+(−1倍数)として実効的に3倍数を実現する。
キャリーレス乗算においても、1ビット毎に乗数を処理するのではなく、複数ビット(例えば2ビット)毎に乗数を処理することで、高速な乗算を実現することが望まれる。
特開平10−326183号公報 特開昭63−240219号公報
1つの側面では、演算回路が高速にキャリーレス乗算を実行可能となるようにすることを目的とする。
演算回路は、被乗数を保持する被乗数保持回路と、乗数を保持する乗数保持回路と、前記被乗数のn倍数(nは整数)を出力するn倍数算出回路と、前記被乗数と前記被乗数を1ビット左シフトした結果との排他的論理和である中間排他的論理和演算結果を出力する中間排他的論理和演算回路と、前記保持された乗数の第1の部分に応じて、第1の選択信号を出力する第1のデコード回路と、前記保持された乗数の第2の部分に応じて、第2の選択信号を出力する第2のデコーダ回路と、前記第1の選択信号に応じて、前記n倍数算出回路が出力した前記被乗数のn倍数又は前記中間排他的論理和演算回路が出力した前記中間排他的論理和演算結果のいずれかを選択する第1部分積選択回路と、前記第2の選択信号に応じて、前記n倍数算出回路が出力する前記被乗数のn倍数又は前記中間排他的論理和演算回路が出力する前記中間排他的論理和演算結果のいずれかを選択する第2部分積選択回路と、前記第1部分積選択回路が選択した第1部分積と前記第2部分積選択回路が選択した第2部分積とを加算した加算結果を出力する加算回路を有することを特徴とする。
演算方法は、被乗数のn倍数(nは整数)を算出し、前記被乗数と前記被乗数を1ビット左シフトした結果との排他的論理和である中間排他的論理和演算結果を算出し、乗数の第1の部分に応じて、第1の選択信号を生成し、前記乗数の第2の部分に応じて、第2の選択信号を生成し、前記第1の選択信号に応じて、前記被乗数のn倍数又は前記中間排他的論理和演算結果のいずれかを選択して第1部分積とし、前記第2の選択信号に応じて、前記被乗数のn倍数又は前記中間排他的論理和演算結果のいずれかを選択して第2部分積とし、前記第1部分積と前記第2部分積とを加算した加算結果を出力する各段階を含むことを特徴とする。
少なくとも1つの実施例によれば、演算回路は、高速にキャリーレス乗算を実行することができる。
コンピュータシステムの構成の一例を示す図である。 通常の乗算の例とキャリーレス乗算の例とを対比して示す図である。 2ビット毎に乗数を処理する場合のキャリーレス乗算における部分積の計算例を示す図である。 乗数の2ビットのビットパターンに応じて何れの部分積を選択するかを示す表である。 2ビット毎に乗数を処理する場合のキャリーレス乗算の一例を示す図である。 乗数が4ビットである場合において2ビット毎に乗数を処理してキャリーレス乗算を行う演算回路の一例を示す図である。 中間排他的論理和演算回路の構成の一例を示す図である。 着目2ビットと1ビット下位のビットとの合計3ビットのビットパターンに応じて何れの部分積を選択するかを示す表である。 乗数が4ビットである場合において2ビット毎に乗数を処理して通常の乗算又はキャリーレス乗算の何れかを選択的に実行する演算回路の一例を示す図である。 Boothデコーダの入出力関係を示す真理値表の一例を示す図である。 CSA回路の構成の一例を示す図である。 乗数の3ビットのビットパターンに応じて何れの部分積を選択するかを示す表である。 乗数が4ビットである場合において3ビット毎に乗数を処理してキャリーレス乗算を実行する演算回路の一例を示す図である。 XOR2算出回路の構成の一例を示す図である。 XOR3算出回路の構成の一例を示す図である。 XOR4算出回路の構成の一例を示す図である。 着目3ビットとその直ぐ下の位の2ビットとの合計5ビットのビットパターンに応じて何れの部分積を選択するかを示す表である。 乗数が4ビットである場合において3ビット毎に乗数を処理して通常の乗算又はキャリーレス乗算の何れかを選択的に実行する演算回路の一例を示す図である。 デコーダの入出力関係を示す真理値表の一例を示す図である。 デコーダの入出力関係を示す真理値表の一例を示す図である。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図1は、コンピュータシステムの構成の一例を示す図である。図1に示すコンピュータシステムは、演算処理装置としてのプロセッサ10及び主記憶装置としてのメモリ11を含む。プロセッサ10は、2次キャッシュ部12、1次キャッシュ部13、制御部14、及び演算部15を含む。1次キャッシュ部13は、命令キャッシュ13A及びデータキャッシュ13Bを含む。演算部15は、例えばプロセッサコアであり、レジスタ16、演算制御部17、及び演算器18を含む。演算器18には演算回路19が含まれる。なお図1及び以降の同様の図において、各ボックスで示される各機能ブロックと他の機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各機能ブロックは、他のブロックと物理的に分離された1つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の1つの機能を示したものであってもよい。各機能ブロックは、他のブロックと論理的に分離された1つのモジュールであってもよいし、或いは他のブロックと論理的に一体となったモジュール中の1つの機能を示したものであってもよい。
プロセッサ10では、1次キャッシュ部13及び2次キャッシュ部12を設けることにより、キャッシュメモリを多階層化した構成となっている。具体的には、1次キャッシュ部13と主記憶(メモリ11)との間に、主記憶よりは高速にアクセスできる2次キャッシュ部12を設けている。これにより、1次キャッシュ部13においてキャッシュミスが発生した場合に、主記憶にアクセスが必要になる頻度を低くして、キャッシュミス・ペナルティーを軽減することができる。
制御部14は、命令フェッチアドレスと命令フェッチリクエストとを1次命令キャッシュ40に発行し、この命令フェッチアドレスから命令をフェッチする。制御部14は、フェッチした命令をデコードし、デコード結果に従い演算部15を制御して、フェッチされた命令を実行する。演算制御部17は、制御部14の制御下で動作し、演算対象のレジスタ16からのデータを演算器18に供給したり、演算結果のデータを指定されたレジスタ16に格納したりする。また演算制御部17は、演算器18が実行する演算のタイプを指定する。更に演算制御部17は、アクセス先のアドレスを指定し、1次キャッシュ部13の当該アドレスに対してロード命令やストア命令を実行する。ロード命令により、指定アドレスから読み出されたデータは、指定されたレジスタ16に格納される。またストア命令により、指定されたレジスタ16のデータが、指定されたアドレスに書き込まれる。演算器18に含まれる演算回路19が、キャリーレス乗算を実行する回路である。
図2は、通常の乗算の例とキャリーレス乗算の例とを対比して示す図である。図2の(a)には被乗数1101と乗数1011との4ビット数同士の乗算が示される。乗数の各ビット(0又は1)と被乗数との積である部分積(被乗数の0倍又は1倍)を求め、乗数の4つのビットに対してそれぞれ求められた4つの部分積の総和を求めている。総和を求める際には、キャリーが伝搬している。図2の(b)には被乗数1101と乗数1011との4ビット数同士のキャリーレス乗算が示される。乗数の各ビット(0又は1)と被乗数との積である部分積(被乗数の0倍又は1倍)を求め、乗数の4つのビットに対してそれぞれ求められた4つの部分積の総和を求めている。総和を求める際には、キャリーが伝搬していない。キャリーレス乗算の結果は、4つの部分積のXOR(排他的論理和)に等しい。図2の(a)に示される演算及び図2の(b)に示される演算は、双方共に、1ビット毎に乗数を処理する場合の乗算である。
図3は、2ビット毎に乗数を処理する場合のキャリーレス乗算における部分積の計算例を示す図である。被乗数1101に対して、図3の(a)には乗数側の2ビットが00の場合、図3の(b)には乗数側の2ビットが01の場合、図3の(c)には乗数側の2ビットが10の場合、図3の(d)には乗数側の2ビットが11の場合が示される。
図3の(a)に示すように被乗数1101に対して乗数側の2ビットが00の場合、第1ビットの0に対する部分積と第2ビットの0に対する部分積が両方共に0000であり、それら2つの部分積のXOR演算の結果は00000となる。このXOR演算の結果00000が、2ビット毎に乗数を処理するキャリーレス乗算において、被乗数1101に対して乗数側の2ビットが00の場合の部分積となる。この部分積は、被乗数1101の0倍数である。
図3の(b)に示すように被乗数1101に対して乗数側の2ビットが01の場合、第1ビットの1に対する部分積は1101、第2ビットの0に対する部分積は0000であり、それら2つの部分積のXOR演算の結果は01101となる。このXOR演算の結果01101が、2ビット毎に乗数を処理するキャリーレス乗算において、被乗数1101に対して乗数側の2ビットが01の場合の部分積となる。この部分積は、被乗数1101の1倍数である。
図3の(c)に示すように被乗数1101に対して乗数側の2ビットが10の場合、第1ビットの0に対する部分積は0000、第2ビットの1に対する部分積は1101であり、それら2つの部分積のXOR演算の結果は11010となる。このXOR演算の結果11010が、2ビット毎に乗数を処理するキャリーレス乗算において、被乗数1101に対して乗数側の2ビットが10の場合の部分積となる。この部分積は、被乗数1101の2倍数である。
図3の(d)に示すように被乗数1101に対して乗数側の2ビットが11の場合、第1ビットの1に対する部分積は1101、第2ビットの1に対する部分積は1101であり、それら2つの部分積のXOR演算の結果は10111となる。このXOR演算の結果10111が、2ビット毎に乗数を処理するキャリーレス乗算において、被乗数1101に対して乗数側の2ビットが11の場合の部分積となる。この部分積は、被乗数1101と被乗数1101を1ビット左シフトした結果とのXOR演算の結果である。
以上のように考えると、2ビット毎に乗数を処理するキャリーレス乗算においては、被乗数の0倍数、被乗数の1倍数、被乗数の2倍数、及び被乗数と被乗数を1ビット左シフトした結果とのXOR演算結果を、部分積候補として考えればよい。これら4つの部分積候補から、乗数の一部分である2ビットのビットパターンに応じて、1つを部分積として選択すればよい。なお被乗数の0倍数、被乗数の1倍数、被乗数の2倍数は、何れも、被乗数のn倍数(nは整数)に相当する。
図4は、乗数の2ビットのビットパターンに応じて何れの部分積を選択するかを示す表である。表の左側の列には、乗数の2ビットのビットパターン00,01,10,11が示される。表の右側の列には、各ビットパターンに対して選択されるべき部分積が示される。ここでx0は0倍数、x1は1倍数、x2は2倍数、XORは被乗数と被乗数を1ビット左シフトした結果とのXOR演算結果を示す。例えば、乗数の着目2ビットが10であれば、2倍数(x2)を部分積にすればよいことが、この表から分かる。
図5は、2ビット毎に乗数を処理する場合のキャリーレス乗算の一例である。図2の場合と同様に、被乗数1101と乗数1011との4ビット数同士の乗算が示される。乗数の下位側(LSB(Least Significant Bit)側)2ビット11に対して、図4の表に従って、被乗数と被乗数を1ビット左シフトした結果とのXOR演算結果である10111が部分積として得られる。また乗数の上位側(MSB(Most Significant Bit)側)2ビット10に対して、図4の表に従って、被乗数の2倍数である11010が部分積として得られる。こうして求められた2つの部分積同士のXOR演算結果を求めれば、そのXOR演算の結果01111111がキャリーレス乗算の結果となる。
図6は、乗数が4ビットである場合において2ビット毎に乗数を処理してキャリーレス乗算を行う演算回路の一例を示す図である。図6の演算回路は、被乗数保持回路21、乗数保持回路22、2倍数算出回路23、中間排他的論理和演算回路24、第1のデコーダ25、第2のデコーダ26、第1部分積選択回路27、第2部分積選択回路28、ビットシフト回路29、XOR回路30を含む。またXOR回路30の演算結果を格納する演算結果格納回路31が設けられてよい。図6は、乗数が4ビットの場合の構成を示すが、これは限定的でない一例に過ぎず、乗数のビット数は特に制限されるものではない。乗数のビット数がM(偶数)であれば、2個のデコーダ25及び26の代わりにM/2個のデコーダが設けられ、部分積選択回路27及び28の代わりにM/2個の部分積選択回路が設けられることになる。その場合であっても、各デコーダ及び各部分積選択回路の動作は本実施例におけるデコーダ25及び26並びに部分積選択回路27及び28の動作と同様である。また乗数のビット数が大きくなると、XOR回路30に入力されるビット数が大きくなるが、XOR回路30においてXOR演算が実行されることに変わりはない。
被乗数保持回路21は、被乗数を保持するレジスタであってよい。乗数保持回路22は、乗数を保持するレジスタであってよい。2倍数算出回路23は、被乗数の2倍数を出力する2倍数算出回路である。なお信号線32は、被乗数の1倍数を出力する1倍数算出回路に相当する。また被乗数の0倍数を出力する0倍数算出回路は明示的には示されていないが、部分積選択回路27及び28には固定値0を選択して出力する機能が含まれている。これにより、0倍数選択を指示する選択信号が対応するデコーダ25及び26から印加されると、部分積選択回路27及び28は、0を出力することができる。この固定値0を提供する回路部分、1倍数算出回路に相当する信号線32、及び2倍数算出回路23を纏めて、被乗数のn倍数(nは整数)を出力するn倍数算出回路と考えることができる。
中間排他的論理和演算回路24は、被乗数と被乗数を1ビット左シフトした結果との排他的論理和であるXOR演算結果を出力する。第1のデコーダ25は、乗数保持回路22に保持された乗数の第1の部分(例えば下位側(LSB側)2ビット)に応じて、第1の選択信号を出力する。第2のデコーダ26は、乗数保持回路22に保持された乗数の第2の部分(例えば上位側(MSB側)2ビット)に応じて、第2の選択信号を出力する。具体的には、第1のデコーダ25及び第2のデコーダ26の各々は、図4に示す表に従って、乗数の対応する2ビット部分(即ち下位側(LSB側)2ビット又は上位側(MSB側)2ビット)に対応する選択信号を生成する。即ち、0倍数、1倍数、2倍数、及び、被乗数と被乗数を1ビット左シフトした結果とのXOR演算結果の何れか1つを指定する例えば少なくとも2ビットの選択信号が、第1のデコーダ25及び第2のデコーダ26の各々により別個に生成される。
第1部分積選択回路27は、第1の選択信号に応じて、n倍数算出回路が出力した被乗数のn倍数又は中間排他的論理和演算回路24が出力したXOR演算結果のいずれかを選択する。より具体的には、第1部分積選択回路27は、第1の選択信号に応じて、固定値0、信号線32からの被乗数の1倍数、2倍数算出回路23からの被乗数の2倍数、又は中間排他的論理和演算回路24からのXOR演算結果のいずれかを選択する。
第2部分積選択回路28は、第2の選択信号に応じて、n倍数算出回路が出力した被乗数のn倍数又は中間排他的論理和演算回路24が出力したXOR演算結果のいずれかを選択する。より具体的には、第2部分積選択回路28は、第2の選択信号に応じて、固定値0、信号線32からの被乗数の1倍数、2倍数算出回路23からの被乗数の2倍数、又は中間排他的論理和演算回路24からのXOR演算結果のいずれかを選択する。
第1部分積選択回路27の出力する第1部分積と第2部分積選択回路28の出力する第2部分積とは、XOR回路30に供給される。但し第2部分積については、第1部分積とのビット位置の違いを反映させるために、ビットシフト回路29により2ビット左にシフトさせてから、XOR回路30に供給される。
XOR回路30は、第1部分積選択回路27が選択した第1部分積と第2部分積選択回路28が選択した第2部分積とを加算した加算結果を出力する加算回路である。より具体的には、この加算演算においてキャリーは伝搬されることなく、加算結果はXOR演算結果となる。従って、XOR回路30は、単にXOR演算のみを実行するよう設計された回路であってもよいし、キャリー伝搬しないようにキャリー伝搬経路を遮断した構成の加算回路であってもよい。このような加算回路として、桁上保存加算回路(Carry Save Adder回路)を用いてもよい。
XOR回路30がXOR演算のみを実行するXOR回路である場合、例えば図5に示すような2つの部分積同士のXOR演算結果を求めればよい。即ち、XOR回路を第1部分積と前記第2部分積との重複部分(即ち3ビット分)に設け、このXOR回路により第1部分積と第2部分積との重複部分のXOR演算結果を求めればよい。なお乗数のビット数がM(偶数)であれば、M/2個の部分積がXOR演算の対象となる。その場合、第1部分積と第2部分積との重複部分のXOR演算結果を求め、更にそのXOR演算結果と第3部分積等の他の部分積との重複する部分についてXOR演算を行うことになる。
図7は、中間排他的論理和演算回路24の構成の一例を示す図である。中間排他的論理和演算回路24は、ビットシフト回路35及びXOR回路36を含む。ビットシフト回路35は、被乗数を1ビット左シフトした結果を生成する。XOR回路36は、被乗数とビットシフト回路35の出力とのXOR演算結果を求めることにより、被乗数と被乗数を1ビット左シフトした結果との排他的論理和を求める。
以下において、通常の乗算とキャリーレス乗算との両方を選択的に実行可能な演算回路について説明する。前述のように、通常の2進数の乗算において、高速化のために乗数を2ビット毎に処理する計算の仕方がある。その場合には、乗数の各2ビットに現れ得る4通りの数00、01、10、及び11に対応して、被乗数の0倍、1倍、2倍、及び3倍を、それぞれ部分積として求めることになる。この際、0倍数、1倍数、及び2倍数を計算するのは容易だが、3倍数を計算する回路は複雑になることが問題となる。これを解決する方法してBoothアルゴリズムが一般に用いられ、3倍数を直接計算することなく、実効的に3倍数を実現する。
より具体的には、Boothアルゴリズムでは、3倍数の計算に際して、3倍数=4倍数+(−1倍数)であることを利用している。即ち、3倍数を足し込んだ最終結果を得るためには、乗数のある2ビットで−1倍数を足しこみ、乗数の次の2ビットで1倍数を足しこめばよい。なぜなら、乗数の次の2ビットの1倍数は、直前の2ビットから見ると4倍数だからである。このようにして、−1倍数と4倍数とを足し込んだ最終結果を得ることにより、3倍数を足し込むのと同等の計算が可能となる。
ただし、次の2ビットに着目した場合、そのビット自身に応じて足し込むべき倍数を決める作業に加え、前の2ビットのために足し込むべき1倍数があるか否かの判断が必要になる。そこで、前の2ビットのための1倍数が必要かどうかの判断のために、自身のビットの1ビット下位のビットをチェックしている。そして、そのチェックしたビットが1であれば、前の2ビットのための1倍数が必要であると判断する。このため、前の2ビットにおいて2倍数を足し込む場合(即ち前の2ビットが10の場合)も、次の2ビットから見た1ビット下位のビットが1となるので、2倍数=4倍数+(−2倍数)として計算する。このようにして、自身の2ビットと1ビット下位のビットとの合計3ビットのみを参照することで、前の2ビットのための倍数と自身のビットのための倍数との両方を考慮した倍数を選びことが可能となる。
図8は、着目2ビットと1ビット下位のビットとの合計3ビットのビットパターンに応じて何れの部分積を選択するかを示す表である。Boothアルゴリズムによる通常の乗算とキャリーレス乗算との両方に対応可能とするためには、3ビットのビットパターンに対して、Boothアルゴリズムにより選択すべき部分積とキャリーレス乗算により選択すべき部分積との両方を規定する必要がある。表の左側の列には、乗数の3ビットのビットパターン000乃至111が示される。ここで、一番右側の1ビットが1ビット下位のビットであり、その上位にある2ビットが着目2ビットである。
表の真ん中の列には、各ビットパターンに対して、Boothアルゴリズムにより通常の乗算のために選択されるべき部分積が示される。なおここで、x−1及びx−2の表記はそれぞれ、被乗数の−1倍数及び被乗数の−2倍数を示す。例えば乗数の3ビットが101の場合には、自身の2ビット10に対して2倍数が必要であるが、2倍数は前述のように4倍数+(−2倍数)として計算するので、自身の2ビット10に対して−2倍数が選択される。また1ビット下位のビット1は、前の2ビットのための1倍数が必要になることを示している。従って乗数の3ビットが101の場合には、−2倍数+1倍数により、結果として、−1倍数(x−1)が部分積として選択されることになる。
表の右側の列には、各ビットパターンに対して、キャリーレス乗算のために選択されるべき部分積が示される。表記は図4の場合と同様である。前述の説明から分かるように、キャリーレス乗算では乗数の各2ビットに着目すればよく、その下位の1ビットをチェックする必要はない。従って、乗数の3ビットの最下位ビットの値に関わりなく、上位2ビットの値のみに応じて、選択する部分積が決まってくる。即ち、図8に示す表において乗数の上位2ビットの値に着目した場合にキャリーレス乗算用に選択する部分積は、図4に示す乗数2ビットの同一の値に対して選択する部分積と同一である。
図9は、乗数が4ビットである場合において2ビット毎に乗数を処理して通常の乗算又はキャリーレス乗算の何れかを選択的に実行する演算回路の一例を示す図である。図9の演算回路は、制御値保持回路40、被乗数保持回路41、乗数保持回路42、信号線43、2倍数算出回路44、マイナス2倍数算出回路45、マイナス1倍数算出回路46、中間排他的論理和演算回路47、及びBoothデコーダ48乃至50を含む。演算回路は更に、部分積選択回路51乃至53、ビットシフト回路54、ビットシフト回路55、及びCSA(Carry Save Adder)回路56を含む。またCSA回路56の演算結果を格納する加算結果格納回路57及びキャリー格納回路58が設けられてよい。図9は、乗数が4ビットの場合の構成を示すが、これは限定的でない一例に過ぎず、乗数のビット数は特に制限されるものではない。乗数のビット数がM(偶数)であれば、3個のデコーダ48乃至50の代わりにM/2+1個のデコーダが設けられ、部分積選択回路51乃至53の代わりにM/2+1個の部分積選択回路が設けられることになる。その場合であっても、各デコーダ及び各部分積選択回路の動作は本実施例におけるデコーダ48乃至50及び部分積選択回路51乃至53の動作と同様である。また乗数のビット数が大きくなると、CSA回路56に入力されるビット数が大きくなるが、CSA回路56において桁上保存加算が実行されることに変わりはない。
制御値保持回路40は、Boothアルゴリズムを用いた通常の乗算又はキャリーレス乗算の何れかを示す制御値を格納する。この格納値は、例えば0であるときに通常の乗算を示し、例えば1であるときにキャリーレス乗算を示してよい。
被乗数保持回路41は、被乗数を保持するレジスタであってよい。乗数保持回路42は、乗数を保持するレジスタであってよい。信号線43は、被乗数の1倍数を出力する1倍数算出回路に相当する。2倍数算出回路44は、被乗数の2倍数を出力する。マイナス2倍数算出回路45は、被乗数の−2倍数を出力する。マイナス1倍数算出回路46は、被乗数の−1倍数を出力する。また被乗数の0倍数を出力する0倍数算出回路は明示的には示されていないが、部分積選択回路51乃至53には固定値0を選択して出力する機能が含まれている。これにより、0倍数選択を指示する選択信号が対応するデコーダ48乃至50から印加されると、部分積選択回路51乃至53は、0を出力することができる。この固定値0を提供する回路部分、1倍数算出回路に相当する信号線43、2倍数算出回路44、マイナス2倍数算出回路45、及びマイナス1倍数算出回路46を纏めて、被乗数のn倍数(nは整数)を出力するn倍数算出回路と考えることができる。
中間排他的論理和演算回路47は、被乗数と被乗数を1ビット左シフトした結果との排他的論理和であるXOR演算結果を出力する。Boothデコーダ48は、乗数保持回路22に保持された乗数の第1の部分(例えば下位側(LSB側)2ビット+その下位の仮想1ビット0)に応じて、第1の選択信号を出力する。Boothデコーダ49は、乗数保持回路42に保持された乗数の第2の部分(例えば上位側(MSB側)2ビット+その下位の1ビット)に応じて、第2の選択信号を出力する。Boothデコーダ50は、乗数保持回路42に保持された乗数の第3の部分(例えば上位側(MSB側)2ビットの上の仮想2ビット00+その下位の1ビット)に応じて、第3の選択信号を出力する。具体的には、Boothデコーダ48乃至50の各々は、図8に示す表に従って、乗数の対応する3ビット部分に対応する選択信号を生成する。即ち、0倍数、1倍数、2倍数、−2倍数、−1倍数、及び、被乗数と被乗数を1ビット左シフトした結果とのXOR演算結果の何れか1つを指定する選択信号が、Boothデコーダ48乃至50の各々により別個に生成される。
図10は、Boothデコーダの入出力関係を示す真理値表の一例を示す。図9に示すBoothデコーダ48乃至50の各々は、図10に示す真理値表に従って、各演算を選択するデコード信号を出力してよい。制御値保持回路40の制御値が0であり通常の乗算を示す場合、例えば乗数の着目3ビットが011であれば、2倍数(x2)を選択する選択信号が出力される。また同様に制御値保持回路40の制御値が0であり通常の乗算を示す場合、例えば乗数の着目3ビットが110であれば、−1倍数(x−1)を選択する選択信号が出力される。更に、制御値保持回路40の制御値が1でありキャリーレス乗算を示す場合、例えば乗数の着目3ビットが011であれば、1倍数(x1)を選択する選択信号が出力される。また同様に制御値保持回路40の制御値が1でありキャリーレス乗算を示す場合、例えば乗数の着目3ビットが110であれば、被乗数と被乗数を1ビット左シフトした結果とのXOR演算結果を選択する選択信号が出力される。
図9を再び参照し、部分積選択回路51は、第1の選択信号に応じて、n倍数算出回路が出力した被乗数のn倍数又は中間排他的論理和演算回路47が出力したXOR演算結果のいずれかを選択する。より具体的には、部分積選択回路51は、第1の選択信号に応じて、0倍数、1倍数、2倍数、−2倍数、−1倍数、及び、被乗数と被乗数を1ビット左シフトした結果とのXOR演算結果の何れか1つを選択して出力する。部分積選択回路52も、第2の選択信号に応じて、同様の選択動作を実行する。部分積選択回路53も、第3の選択信号に応じて、同様の選択動作を実行する。
部分積選択回路51乃至53がそれぞれ出力する3つの部分積は、CSA回路56に供給される。但し部分積選択回路52からの部分積については、ビット位置の違いを反映させるために、ビットシフト回路54により2ビット左にシフトさせてから、CSA回路56に供給される。また部分積選択回路53からの部分積については、ビット位置の違いを反映させるために、ビットシフト回路55により4ビット左にシフトさせてから、CSA回路56に供給される。
図11は、CSA回路56の構成の一例を示す図である。CSA回路56は、3入力2出力のCSA回路60乃至68、及びAND回路69を含む。L0[4:0]は部分積選択回路51からの5ビットの部分積、L1[6:2]は部分積選択回路52からの5ビットの部分積、L2[8:4]は部分積選択回路53からの5ビットの部分積である。括弧内の[x:y]は、ビットシフト回路による桁合わせ後の加算時のビット位置において下からyビット目からxビット目までのデータであることを示す。
CSA回路60乃至62、CSA回路68、及びCSA回路64乃至67から出力される加算結果S[0]及びS[2]乃至S[8]、及び、L0[1]に等しいS[1]からなるデータS[8:0]が、加算結果SUM[8:0]として出力される。またCSA回路60乃至62、CSA回路68、及びCSA回路64乃至67から出力されるキャリーC[1]及びC[3]乃至C[9]からなるデータC[9:3,1]が、キャリーCRY[9:3,1]として出力される。
CSA回路56は、部分積選択回路51乃至53が選択したそれぞれの部分積を加算した加算結果SUM[8:0]を出力する加算回路である。より具体的には、この加算演算においてキャリーは伝搬されることはない。3入力2出力のCSA回路60乃至68は、複数の部分積の重複部分に設けられ、部分積の重複部分の加算結果を求める。この場合、第1部分積と第2部分積との重複部分の加算結果を求め、更にその加算結果と第3部分積等の他の部分積との重複する部分について加算演算を行っているとみなすことができる。またAND回路69は、部分積同士の重複部分の加算結果により生じたキャリーの伝搬を抑止するマスク回路として機能する。AND回路69は、制御値保持回路40の制御値が通常の乗算を示す場合にキャリーの伝搬を許可し、制御値保持回路40の制御値がキャリーレス乗算を示す場合にキャリーの伝搬を抑止してよい。
以上の説明では、2ビット毎に乗数を処理する場合について説明したが、一纏まりとするビット数は2に限らず、3又はそれ以上のビット数を一纏めとしてもよい。以下に、一例として、3ビット毎に乗数を処理する演算回路について説明する。
図12は、乗数の3ビットのビットパターンに応じて何れの部分積を選択するかを示す表である。表の左側の列には、乗数の3ビットのビットパターン000乃至111が示される。表の右側の列には、各ビットパターンに対して選択されるべき部分積が示される。ここでx0は0倍数、x1は1倍数、x2は2倍数、x4は4倍数を示す。またXORは被乗数と被乗数を1ビット左シフトした結果とのXOR演算結果を示す。以下においてこのような演算をXOR1と呼ぶ。XOR2は被乗数と被乗数を2ビット左シフトした結果とのXOR演算結果を示す。以下においてこのような演算をXOR2と呼ぶ。XOR3は被乗数を2ビット左シフトした結果と被乗数を1ビット左シフトした結果とのXOR演算結果を示す。以下においてこのような演算をXOR3と呼ぶ。XOR4は被乗数を2ビット左シフトした結果と、被乗数を1ビット左シフトした結果と、被乗数とのXOR演算結果を示す。以下においてこのような演算をXOR4と呼ぶ。例えば、乗数の着目3ビットが010であれば、2倍数(x2)を部分積にすればよいことが、この表から分かる。
図13は、乗数が4ビットである場合において3ビット毎に乗数を処理してキャリーレス乗算を実行する演算回路の一例を示す図である。図13の演算回路は、被乗数保持回路71、乗数保持回路72、信号線73、2倍数算出回路74、4倍数算出回路75、XOR1算出回路76、XOR2算出回路77、XOR3算出回路78、XOR4算出回路79、デコーダ80、及びデコーダ81を含む。演算回路は更に、部分積選択回路82、部分積選択回路83、ビットシフト回路84、及びXOR回路85を含む。またXOR回路85の演算結果を格納する演算結果格納回路86が設けられてよい。図13は、乗数が4ビットの場合の構成を示すが、これは限定的でない一例に過ぎず、乗数のビット数は特に制限されるものではない。乗数のビット数に関わらず、各デコーダ及び各部分積選択回路の動作は本実施例におけるデコーダ及び部分積選択回路の動作と同様である。また乗数のビット数が大きくなると、XOR回路85に入力されるビット数が大きくなるが、XOR回路85においてXOR演算が実行されることに変わりはない。
図6の演算回路においてデコーダ25及び26は図4の表に従った選択信号を出力するが、図13の演算回路においてデコーダ80及び81は図12の表に従った選択信号を出力する。また図6の演算回路において、部分積選択回路27及び28による選択対象は、0倍数、1倍数、2倍数、及びXOR1演算結果の何れかである。それに対して図6の演算回路において、部分積選択回路82及び83による選択対象は、0倍数、1倍数、2倍数、4倍数、XOR1演算結果、XOR2演算結果、XOR3演算結果、及びXOR4演算結果、の何れかである。また図6の演算回路においてビットシフト回路29は左へ2ビットのシフトを行うが、図13の演算回路においてビットシフト回路84は左へ3ビットのシフトを行う。それ以外の点において、図6の演算回路と図13の演算回路とは、基本的に同様であり、詳細な説明は省略する。
図14は、XOR2算出回路77の構成の一例を示す図である。XOR2算出回路77は、ビットシフト回路91及びXOR回路92を含む。ビットシフト回路91は、被乗数を2ビット左シフトした結果を生成する。XOR回路92は、被乗数とビットシフト回路91の出力とのXOR演算結果を求めることにより、被乗数と被乗数を2ビット左シフトした結果との排他的論理和を求める。なお図13に示すXOR1算出回路76は、図7に示す中間排他的論理和演算回路24と同一の回路構成であってよい。
図15は、XOR3算出回路78の構成の一例を示す図である。XOR3算出回路78は、ビットシフト回路93及び94並びにXOR回路95を含む。ビットシフト回路93は、被乗数を2ビット左シフトした結果を生成する。ビットシフト回路94は、被乗数を1ビット左シフトした結果を生成する。XOR回路95は、ビットシフト回路93の出力とビットシフト回路94の出力とのXOR演算結果を求めることにより、被乗数を2ビット左シフトした結果と被乗数を1ビット左シフトした結果との排他的論理和を求める。
図16は、XOR4算出回路79の構成の一例を示す図である。XOR4算出回路79は、ビットシフト回路96及び97並びにXOR回路98を含む。ビットシフト回路96は、被乗数を2ビット左シフトした結果を生成する。ビットシフト回路97は、被乗数を1ビット左シフトした結果を生成する。XOR回路98は、ビットシフト回路96の出力と、ビットシフト回路97の出力と、被乗数のXOR演算結果を求めることにより、被乗数を2ビット左シフトした結果と被乗数を1ビット左シフトした結果と被乗数との排他的論理和を求める。
図17は、着目3ビットとその直ぐ下の位の2ビットとの合計5ビットのビットパターンに応じて何れの部分積を選択するかを示す表である。通常の乗算とキャリーレス乗算との両方に対応可能とするために、これら5ビットのビットパターンに対して、通常の乗算に対して選択すべき部分積とキャリーレス乗算に対して選択すべき部分積との両方が規定されている。表の左側の列には、乗数の5ビットのビットパターン00000乃至11111が示される。ここで、一番右側の2ビットが着目3ビットの直ぐ下の位の2ビットであり、その上位にある3ビットが着目3ビットである。
表の真ん中の列には、各ビットパターンに対して、通常の乗算のために選択されるべき部分積が示される。なおここで、x−1及びx−2等の表記はそれぞれ、被乗数の−1倍数及び被乗数の−2倍数等を示す。
表の右側の列には、各ビットパターンに対して、キャリーレス乗算のために選択されるべき部分積が示される。表記は図12の場合と同様である。前述の説明から分かるように、キャリーレス乗算では乗数の各3ビットに着目すればよく、その下の位の2ビットをチェックする必要はない。従って、乗数の5ビットの最下位2ビットの値に関わりなく、上位3ビットの値のみに応じて、選択する部分積が決まってくる。即ち、図17に示す表において乗数の上位3ビットの値に着目した場合にキャリーレス乗算用に選択する部分積は、図12に示す乗数3ビットの同一の値に対して選択する部分積と同一である。
図18は、乗数が4ビットである場合において3ビット毎に乗数を処理して通常の乗算又はキャリーレス乗算の何れかを選択的に実行する演算回路の一例を示す図である。図18の演算回路は、制御値保持回路100、被乗数保持回路101、乗数保持回路102、信号線103、4倍数算出回路104、3倍数算出回路105、2倍数算出回路106、及びマイナス1倍数算出回路107を含む。演算回路は更に、XOR1算出回路108、XOR3算出回路109、マイナス4倍数算出回路110、マイナス3倍数算出回路111、マイナス2倍数算出回路112、XOR2算出回路113、XOR4算出回路114、デコーダ115、及びデコーダ116を含む。演算回路は更に、部分積選択回路117、部分積選択回路118、ビットシフト回路119、及びCSA回路120を含む。またCSA回路120の演算結果を格納する加算結果格納回路122及びキャリー格納回路121が設けられてよい。図18は、乗数が4ビットの場合の構成を示すが、これは限定的でない一例に過ぎず、乗数のビット数は特に制限されるものではない。乗数のビット数に関わらず、各デコーダ及び各部分積選択回路の動作は本実施例におけるデコーダ及び部分積選択回路の動作と同様である。また乗数のビット数が大きくなると、CSA回路120に入力されるビット数が大きくなるが、CSA回路120においてXOR演算が実行されることに変わりはない。
図19A及び図19Bは、デコーダの入出力関係を示す真理値表の一例を示す。図18に示すデコーダ115乃至116の各々は、図19A及び図19Bに示す真理値表に従って、各演算を選択するデコード信号を出力してよい。制御値保持回路100の制御値が0であり通常の乗算を示す場合、例えば乗数の着目5ビットが01011であれば、3倍数(x3)を選択する選択信号が出力される。また同様に制御値保持回路40の制御値が0であり通常の乗算を示す場合、例えば乗数の着目5ビットが11001であれば、−2倍数(x−2)を選択する選択信号が出力される。更に、制御値保持回路110の制御値が1でありキャリーレス乗算を示す場合、例えば乗数の着目5ビットが01011であれば、2倍数(x2)を選択する選択信号が出力される。また同様に制御値保持回路110の制御値が1でありキャリーレス乗算を示す場合、例えば乗数の着目5ビットが11001であれば、XOR3演算結果を選択する選択信号が出力される。
図9の演算回路においてデコーダ48乃至50は図10の表に従った選択信号を出力するが、図18の演算回路においてデコーダ115及び116は図19A及び図19Bの表に従った選択信号を出力する。また図9の演算回路において、部分積選択回路51乃至53による選択対象は、0倍数、1倍数、2倍数、−2倍数、−1倍数、及びXOR1演算結果の何れかである。それに対して図18の演算回路において、部分積選択回路117及び118による選択対象は、0倍数及び図18に示される各演算結果の何れかである。また図9の演算回路においてビットシフト回路54及び55は左へ2ビットのシフト及び4ビットのシフトを行うが、図18の演算回路においてビットシフト回路119は左へ3ビットのシフトを行う。それ以外の点において、図9の演算回路と図18の演算回路とは、基本的に同様であり、詳細な説明は省略する。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
21 被乗数保持回路
22 乗数保持回路
23 2倍数算出回路
24 中間排他的論理和演算回路
25 第1のデコーダ
26 第2のデコーダ
27 第1部分積選択回路
28 第2部分積選択回路
29 ビットシフト回路
30 XOR回路

Claims (5)

  1. 被乗数を保持する被乗数保持回路と、
    乗数を保持する乗数保持回路と、
    前記被乗数のn倍数(nは整数)を出力するn倍数算出回路と、
    前記被乗数と前記被乗数を1ビット左シフトした結果との排他的論理和である中間排他的論理和演算結果を出力する中間排他的論理和演算回路と、
    前記保持された乗数の第1の部分に応じて、第1の選択信号を出力する第1のデコード回路と、
    前記保持された乗数の第2の部分に応じて、第2の選択信号を出力する第2のデコーダ回路と、
    前記第1の選択信号に応じて、前記n倍数算出回路が出力した前記被乗数のn倍数又は前記中間排他的論理和演算回路が出力した前記中間排他的論理和演算結果のいずれかを選択する第1部分積選択回路と、
    前記第2の選択信号に応じて、前記n倍数算出回路が出力する前記被乗数のn倍数又は前記中間排他的論理和演算回路が出力する前記中間排他的論理和演算結果のいずれかを選択する第2部分積選択回路と、
    前記第1部分積選択回路が選択した第1部分積と前記第2部分積選択回路が選択した第2部分積とを加算した加算結果を出力する加算回路
    を有することを特徴とする演算回路。
  2. 前記加算回路は、前記第1部分積と前記第2部分積との重複部分に設けられた排他的演算回路であり、前記排他的演算回路は前記第1部分積と前記第2部分積との重複部分の排他的論理和演算結果を求めることを特徴とする請求項1記載の演算回路。
  3. 前記加算回路は、前記第1部分積と前記第2部分積との重複部分に設けられた桁上保存加算回路であり、前記桁上保存加算回路は前記第1部分積と前記第2部分積との重複部分の加算結果を求めることを特徴とする請求項1記載の演算回路。
  4. 前記桁上保存加算回路は、前記第1部分積と前記第2部分積との重複部分の加算結果により生じたキャリーの伝搬を抑止するマスク回路を有することを特徴とする請求項3記載の演算回路。
  5. 被乗数のn倍数(nは整数)を算出し、
    前記被乗数と前記被乗数を1ビット左シフトした結果との排他的論理和である中間排他的論理和演算結果を算出し、
    乗数の第1の部分に応じて、第1の選択信号を生成し、
    前記乗数の第2の部分に応じて、第2の選択信号を生成し、
    前記第1の選択信号に応じて、前記被乗数のn倍数又は前記中間排他的論理和演算結果のいずれかを選択して第1部分積とし、
    前記第2の選択信号に応じて、前記被乗数のn倍数又は前記中間排他的論理和演算結果のいずれかを選択して第2部分積とし、
    前記第1部分積と前記第2部分積とを加算した加算結果を出力する
    各段階を含むことを特徴とする演算方法。
JP2012080528A 2012-03-30 2012-03-30 演算回路及び演算方法 Pending JP2013210837A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2012080528A JP2013210837A (ja) 2012-03-30 2012-03-30 演算回路及び演算方法
US13/736,328 US20130262549A1 (en) 2012-03-30 2013-01-08 Arithmetic circuit and arithmetic method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012080528A JP2013210837A (ja) 2012-03-30 2012-03-30 演算回路及び演算方法

Publications (1)

Publication Number Publication Date
JP2013210837A true JP2013210837A (ja) 2013-10-10

Family

ID=49236509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012080528A Pending JP2013210837A (ja) 2012-03-30 2012-03-30 演算回路及び演算方法

Country Status (2)

Country Link
US (1) US20130262549A1 (ja)
JP (1) JP2013210837A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105302520A (zh) * 2015-10-16 2016-02-03 北京中科汉天下电子技术有限公司 一种倒数运算的求解方法及系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9052985B2 (en) * 2007-12-21 2015-06-09 Intel Corporation Method and apparatus for efficient programmable cyclic redundancy check (CRC)
US8442217B2 (en) * 2008-11-17 2013-05-14 Intel Corporation Method of implementing one way hash functions and apparatus therefor
US8464125B2 (en) * 2009-12-10 2013-06-11 Intel Corporation Instruction-set architecture for programmable cyclic redundancy check (CRC) computations
US8903882B2 (en) * 2010-12-13 2014-12-02 International Business Machines Corporation Method and data processing unit for calculating at least one multiply-sum of two carry-less multiplications of two input operands, data processing program and computer program product
JP2013069000A (ja) * 2011-09-20 2013-04-18 Fujitsu Ltd パリティ予測器、キャリーレス乗算器、及び演算処理装置
US9183076B2 (en) * 2013-04-19 2015-11-10 Futurewei Technologies, Inc. Using carry-less multiplication (CLMUL) to implement erasure code

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105302520A (zh) * 2015-10-16 2016-02-03 北京中科汉天下电子技术有限公司 一种倒数运算的求解方法及系统
CN105302520B (zh) * 2015-10-16 2018-03-23 北京中科汉天下电子技术有限公司 一种倒数运算的求解方法及系统

Also Published As

Publication number Publication date
US20130262549A1 (en) 2013-10-03

Similar Documents

Publication Publication Date Title
US6269384B1 (en) Method and apparatus for rounding and normalizing results within a multiplier
JP5273866B2 (ja) 乗算器/アキュムレータ・ユニット
US7949696B2 (en) Floating-point number arithmetic circuit for handling immediate values
US10409604B2 (en) Apparatus and method for performing multiply-and-accumulate-products operations
JP2014219994A (ja) 算術プロセッサ
JP2002108606A (ja) スティッキービット生成回路及び乗算器
KR102341523B1 (ko) 동시 멀티 비트 가산기
US9678716B2 (en) Apparatus and method for performing absolute difference operation
JP7096828B2 (ja) 入力オペランド値を処理するための装置及び方法
JP4349265B2 (ja) プロセッサ
JPH07168697A (ja) 倍精度除算回路および方法
US10162633B2 (en) Shift instruction
JPWO2007094047A1 (ja) 演算装置および演算方法
US10409592B2 (en) Multiply-and-accumulate-products instructions
JP2006228190A (ja) 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法
US20060069901A1 (en) Apparatus and method for an address generation circuit
JP2013210837A (ja) 演算回路及び演算方法
JP6064435B2 (ja) 演算回路、演算処理装置、及び除算方法
US8713086B2 (en) Three-term predictive adder and/or subtracter
US8495275B2 (en) List structure control circuit
CN113485751A (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
JP2003241960A (ja) プロセッサ、該プロセッサにおける演算命令処理方法及び演算制御方法
US6393554B1 (en) Method and apparatus for performing vector and scalar multiplication and calculating rounded products
US10185545B2 (en) Trailing or leading zero counter having parallel and combinational logic
JP4613992B2 (ja) Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ