JP4376904B2 - 乗算装置 - Google Patents

乗算装置 Download PDF

Info

Publication number
JP4376904B2
JP4376904B2 JP2006531356A JP2006531356A JP4376904B2 JP 4376904 B2 JP4376904 B2 JP 4376904B2 JP 2006531356 A JP2006531356 A JP 2006531356A JP 2006531356 A JP2006531356 A JP 2006531356A JP 4376904 B2 JP4376904 B2 JP 4376904B2
Authority
JP
Japan
Prior art keywords
partial product
partial
encoding
multiplicand
result
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.)
Active
Application number
JP2006531356A
Other languages
English (en)
Other versions
JPWO2006022089A1 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Publication of JPWO2006022089A1 publication Critical patent/JPWO2006022089A1/ja
Application granted granted Critical
Publication of JP4376904B2 publication Critical patent/JP4376904B2/ja
Active 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • 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

Description

本発明は、乗算を行う装置に関し、特に固定小数点数の乗算を行う装置に関する。
ディジタル演算処理を行うLSIには、乗算装置がオンチップ化されることが一般的になっている。高精度な演算が要求される音声やマルチメディア等の処理では、固定小数点数で演算が行われ、乗算の結果がオーバーフローする場合には飽和処理を行うことが要求される。固定小数点数の乗算では、被乗数と乗数とが共に負の最大値である場合のみ、乗算結果がオーバーフローする。この場合は乗算結果を正の最大値に補正する必要がある。ここで負の最大値とは、その絶対値が最大である負の数である。
図15は、従来の乗算装置の構成の例を示すブロック図である。この乗算装置では、乗算の際に、オーバーフロー検出部914が、被乗数と乗数とが共に負の最大値である場合にはオーバーフローを検出する。出力セレクタ926が、オーバーフローが検出された場合には飽和値(正の最大値)を選択し、それ以外の場合には最終加算部924の出力を選択することにより、乗算結果がオーバーフローした時の補正を行っている(例えば、特許文献1参照)。
特開平1−267728号公報(第3図)
図15のような乗算装置では、オーバーフロー検出結果に基づいて、最終加算の結果と飽和値とから一方を選択をするためには、各ビットについてセレクタが必要である。M+1ビットの被乗数AとN+1ビットの乗数Bとの乗算では(M,Nは、2以上の整数)、被乗数A及び乗数Bが符号付きの数であるとき、乗算結果はM+N+1ビットとなる。このため、出力セレクタとしてM+N+1個のセレクタが必要であり、オーバーフロー処理のために回路規模が増大するという問題があった。
本発明は、乗算を行う装置において、オーバーフロー処理のための回路規模を小さくすることを目的とする。
本発明に係る乗算装置は、2の補数で表現された固定小数点数である被乗数と、2の補数で表現されたN+1(Nは2以上の整数)ビットの固定小数点数である乗数との乗算による積を求める乗算装置であって、前記乗数を2次のブースのアルゴリズムに基づいてエンコードし、得られた複数のエンコード結果を出力するエンコード部と、前記被乗数と前記乗数とが共に負の最大値である場合に、オーバーフローが発生することを検出するオーバーフロー検出部と、前記被乗数と前記複数のエンコード結果のそれぞれとの間の複数の部分積と、前記複数の部分積のそれぞれに対応し、対応する部分積に加算してその部分積の2の補数を得るための複数の補正項とを生成して出力する部分積生成部と、前記複数の部分積及び前記複数の補正項の累算を行い、2つの中間積に圧縮して出力する累算部と、前記2つの中間積の加算を行い、その結果を乗算結果として出力する最終加算部とを備える。前記部分積生成部は、前記複数のエンコード結果のうちの最上位及び最下位以外のエンコード結果のそれぞれを入力とし、前記被乗数と入力されたエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、入力されたエンコード結果に対応する最上位及び最下位以外の部分積及び補正項を生成する複数の第1の部分積生成回路と、前記被乗数と前記複数のエンコード結果のうちの最上位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最上位の部分積及び補正項を生成する第2の部分積生成回路と、前記被乗数と前記複数のエンコード結果のうちの最下位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最下位の部分積及び補正項を生成する第3の部分積生成回路とを有する。前記第2の部分積生成回路は、前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、前記最上位の補正項として0を出力する。前記第3の部分積生成回路は、前記被乗数及び選択信号に応じて前記最下位の部分積のうちの1ビットをそれぞれ生成する複数の選択回路と、エンコード結果補正部とを有するものであり、前記複数の選択回路のうち、前記最下位の部分積の下位N−1ビットを出力するN−1個の選択回路には前記エンコード結果補正部の出力が、その他の選択回路には前記最下位のエンコード結果が、前記選択信号として与えられており、前記エンコード結果補正部は、前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、当該エンコード結果補正部の出力が与えられる選択回路から1が出力されるような値を出力し、その他の場合には、前記最下位のエンコード結果を出力する。
これによると、被乗数と乗数とが共に負の最大値であり、オーバーフローの発生が検出された場合に、部分積生成部の出力を補正して、乗算結果が正の最大値になるようにすることができる。オーバーフローが発生する場合においても、求められた乗算結果に対しては処理を行う必要がないので、オーバーフロー処理のために要する回路の規模を小さくすることができる。
オーバーフローの発生が検出された場合には、最上位の補正項として0を出力するようにし、最下位の部分積の下位N−1ビットのそれぞれとして1を出力するようにして、乗算結果が正の最大値になるようにすることができるので、オーバーフロー処理のために要する回路の規模を小さくすることができる。
第3の部分積生成回路においては、オーバーフローが発生することが検出された場合にエンコードの結果を補正するためのエンコード結果補正部を追加するのみでよい。
本発明に係る他の乗算装置は、2の補数で表現された固定小数点数である被乗数と、2の補数で表現されたN+1(Nは2以上の整数)ビットの固定小数点数である乗数との乗算による積を求める乗算装置であって、前記乗数を2次のブースのアルゴリズムに基づいてエンコードし、得られた複数のエンコード結果を出力するエンコード部と、前記被乗数と前記乗数とが共に負の最大値である場合に、オーバーフローが発生することを検出するオーバーフロー検出部と、前記被乗数と前記複数のエンコード結果のそれぞれとの間の複数の部分積と、前記複数の部分積のそれぞれに対応し、対応する部分積に加算してその部分積の2の補数を得るための複数の補正項とを生成して出力する部分積生成部と、前記複数の部分積及び前記複数の補正項の累算を行い、2つの中間積に圧縮して出力する累算部と、前記2つの中間積の加算を行い、その結果を乗算結果として出力する最終加算部とを備える。前記部分積生成部は、前記複数のエンコード結果のうちの最上位及び最下位以外のエンコード結果のそれぞれを入力とし、前記被乗数と入力されたエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、入力されたエンコード結果に対応する最上位及び最下位以外の部分積及び補正項を生成する複数の第1の部分積生成回路と、前記被乗数と前記複数のエンコード結果のうちの最上位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最上位の部分積及び補正項を生成する第2の部分積生成回路と、前記被乗数と前記複数のエンコード結果のうちの最下位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最下位の部分積及び補正項を生成する第3の部分積生成回路とを有する。前記第2の部分積生成回路は、前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、前記最上位の補正項として0を出力する。前記第3の部分積生成回路は、前記被乗数及び選択信号に応じて前記最下位の部分積のうちの1ビットをそれぞれ生成する複数の選択回路と、前記複数の選択回路のうち、前記最下位の部分積の下位N−1ビットを出力するN−1個の選択回路のそれぞれに対応するN−1個の飽和処理回路とを有するものであり、前記複数の選択回路は、それぞれ、前記最下位のエンコード結果を前記選択信号として用いるものであり、前記N−1個の飽和処理回路は、それぞれ、前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、前記複数の選択回路のうち、対応する選択回路の出力を1に補正して出力し、その他の場合には、前記対応する選択回路の出力をそのまま出力させるものである。
これによると、第3の部分積生成回路においては、オーバーフローが発生することが検出された場合に最下位の部分積を補正するためのN−1個の飽和処理回路を追加するのみでよい。
本発明に係る更に他の乗算装置は、2の補数で表現された固定小数点数である被乗数と、2の補数で表現された固定小数点数である乗数との乗算による積を求める乗算装置であって、前記乗数を2次のブースのアルゴリズムに基づいてエンコードし、得られた複数のエンコード結果を出力するエンコード部と、前記被乗数と前記乗数とが共に負の最大値である場合に、オーバーフローが発生することを検出するオーバーフロー検出部と、前記被乗数と前記複数のエンコード結果のそれぞれとの間の複数の部分積と、前記複数の部分積のそれぞれに対応し、対応する部分積に加算してその部分積の2の補数を得るための複数の補正項とを生成して出力する部分積生成部と、前記複数の部分積及び前記複数の補正項の累算を行い、2つの中間積に圧縮して出力する累算部と、前記2つの中間積の加算を行い、その結果を乗算結果として出力する最終加算部とを備える。前記部分積生成部は、前記複数のエンコード結果のうちの最上位以外のエンコード結果のそれぞれを入力とし、前記被乗数と入力されたエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、入力されたエンコード結果に対応する最上位以外の部分積及び補正項を生成する複数の第1の部分積生成回路と、前記被乗数と前記複数のエンコード結果のうちの最上位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最上位の部分積及び補正項を生成する第2の部分積生成回路とを有する。前記複数の第1の部分積生成回路は、それぞれ、対応するエンコード結果に従って選択された1ビットの値と前記オーバーフロー検出部によるオーバーフローの検出結果との論理和を、対応する2ビットの補正項の下位ビットとして、前記オーバーフロー検出部によるオーバーフローの検出結果を、前記対応する2ビットの補正項の上位ビットとして出力する。前記第2の部分積生成回路は、前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、前記最上位の補正項として0を出力する。
これによると、オーバーフローが発生することが検出された場合に、最上位の補正項として0を出力するようにし、最上位以外の補正項として2進数11を出力するようにして、乗算結果が正の最大値になるようにすることができる。2次のブースのアルゴリズムに基づいてN+1ビットの乗数をエンコードする場合、補正項の個数は(N+1)/2個なので、補正項を補正するための回路が(N+1)/2個必要となるが、従来の構成に比べてオーバーフロー処理のために要する回路の規模を小さくすることが可能になる。
以上のように、本発明によれば、固定小数点数の乗算結果がオーバーフローする場合の処理を行う回路の規模を小さくすることができる。したがって、回路面積を抑え、回路の低コスト化を図ることができる。
以下、本発明の実施の形態について、図面を参照しながら説明する。
(第1の実施形態)
以下では、M+1ビットの被乗数AとN+1ビットの乗数Bとの乗算をする場合について説明する(M,Nは、2以上の整数)。ここで、被乗数A及び乗数Bは2の補数で表現された符号付きの固定小数点数であり、その最上位ビットの右側に小数点が存在するとし、最上位ビットは正又は負の符号を示すとする。この固定小数点形式では、正の最大値は、0.99…9(各ビットの値は、“011…11”)であり、負の最大値は、その絶対値が最大である負の数であって、−1.00…0(各ビットの値は、“100…00”)である。
図1は、本発明の第1の実施形態に係る乗算装置の構成を示すブロック図である。図1の乗算装置は、エンコード部12と、オーバーフロー検出部14と、部分積生成部16と、累算部22と、最終加算部24とを備えている。
エンコード部12は、N+1ビットの乗数Bを2次のブース(Booth)のアルゴリズムに基づいてエンコードし、得られたブースエンコード結果BE_0,BE_1,…,BE_Lを部分積生成部16に出力する。ブースエンコード結果BE_0,BE_Lは、それぞれ最下位及び最上位のブースエンコード結果である。
オーバーフロー検出部14は、被乗数Aと乗数Bとが共に負の最大値であるときに、オーバーフローの発生を検出し、その結果をオーバーフロー検出結果ODとして部分積生成部16に出力する。
部分積生成部16は、被乗数Aとブースエンコード結果BE_0,BE_1,…,BE_Lのそれぞれとの間の複数の部分積、及びこれらの部分積に対応する補正項を生成して、累算部22に出力する。部分積生成部16は、オーバーフロー検出部14がオーバーフローの発生を検出した場合には、乗算結果が正の最大値になるように、これらの複数の部分積及び補正項のうちのいずれかを補正して出力する。累算部22は、生成された複数の部分積及び補正項の累算を行い、2つの中間積に圧縮して最終加算部24に出力する。最終加算部24は、2つの中間積の加算を行い、求められた乗算結果を出力する。
部分積生成部16は、最上位及び最下位以外の部分積、及びこれらの部分積に対応する補正項を生成する複数の第1の部分積生成回路140と、最上位の部分積及び補正項を生成する第2の部分積生成回路160と、最下位の部分積及び補正項を生成する第3の部分積生成回路180とを備えている。ここでいう部分積は、2の補数を得るために補正項が加算される前の部分積である。補正項は、対応する部分積の2の補数を得るために、この部分積に加算される数である。
図2は、第1の実施形態における第1の部分積生成回路140の構成を示す回路図である。図2の部分積生成回路140は、最上位及び最下位以外のブースエンコード結果BE_1,BE_2,…,BE_L−1のうちの1つ(BE_kと表記する)に基づいて、部分積PBと、補正項CBとを求めて出力する。部分積生成回路140は、部分積PBのうちの最上位ビット以外を生成するM+1個の選択回路142と、部分積PBの最上位ビットを生成する選択回路144と、補正項生成回路146とを備えている。
これらの選択回路142,144は、全体として、ブースエンコード結果BE_kが1の場合は被乗数Aを、2の場合は被乗数Aを1ビット左シフトさせた値を、−1の場合は被乗数Aの各ビットを論理反転させた値を、−2の場合は被乗数Aを1ビット左シフトさせた値の各ビットを論理反転させた値を、0の場合は“0”を、選択して出力する。補正項生成回路146は、ブースエンコード結果BE_kが正又は0の場合は“0”を、負の場合は“1”を、2の補数の補正項CBとして選択して出力する。
図3は、第1の実施形態における第2の部分積生成回路160の構成を示す回路図である。図3の部分積生成回路160は、最上位のブースエンコード結果BE_Lに基づいて、部分積PCと、補正項CCとを求めて出力する。部分積生成回路160は、補正項生成回路146に代えて補正項生成回路166を備える点の他は、図2の第1の部分積生成回路140と同様に構成されている。
オーバーフロー検出部14は、被乗数Aと乗数Bとが共に負の最大値であることを検出した場合には、オーバーフロー検出結果ODを“1”にし、その他の場合は“0”にする。補正項生成回路166は、オーバーフロー検出結果ODが“1”である場合には、“0”を2の補数の補正項CCとして出力する。また、補正項生成回路166は、オーバーフロー検出結果ODが“0”である場合には、ブースエンコード結果BE_Lが正又は0のときは“0”を、負のときは“1”を、2の補数の補正項CCとして選択して出力する。
図4は、第1の実施形態における第3の部分積生成回路180の構成を示す回路図である。図4の部分積生成回路180は、最下位のブースエンコード結果BE_0に基づいて、部分積PAと、補正項CAとを求めて出力する。部分積生成回路180は、図2の第1の部分積生成回路140において、エンコード結果補正部188を更に備え、下位のN−1個の選択回路142には、ブースエンコード結果BE_0ではなく、エンコード結果補正部188の出力を与えるようにしたものである。
エンコード結果補正部188は、オーバーフロー検出結果ODが“1”である場合には、ブースエンコード結果BE_0を“−1”に補正して下位のN−1個の選択回路142に出力し、オーバーフロー検出結果ODが“0”である場合には、ブースエンコード結果BE_0をそのまま出力する。下位のN−1個の選択回路142は、被乗数Aとエンコード結果補正部188の出力に基づき、部分積を生成して出力し、これらよりも上位の選択回路142は、被乗数Aとブースエンコード結果BE_0とに基づき、部分積を生成して出力する。
図5は、第1の実施形態における乗算の計算例を示す説明図である。以下では、被乗数A及び乗数Bのそれぞれのビット数M+1,N+1は、いずれも8であるとして説明する。被乗数Aと乗数Bとが共に負の最大値であることが検出された場合について説明する。このとき、被乗数A及び乗数Bは、具体的には“10000000”である。
乗数Bが負の最大値の場合における最上位及び最下位以外のブースエンコード結果BE_kは0になる。このため、第1の部分積生成回路140は、いずれも、部分積PBとして“000000000”を出力し、補正項CBとして“0”を出力する。
乗数Bが負の最大値の場合における最上位のブースエンコード結果BE_Lは−2になり、第2の部分積生成回路160は、部分積PCとして“011111111”を出力する。オーバーフロー検出結果ODが“1”であるので、2の補数の補正項CCは、補正項生成回路166により値“0”に補正される。
乗数Bが負の最大値の場合における最下位のブースエンコード結果BE_0は0になる。オーバーフロー検出結果ODが“1”であるので、エンコード結果補正部188は、ブースエンコード結果BE_0を“−1”に補正する。このため、下位の6個の選択回路142は、被乗数Aを論理反転させた値を選択し、下位の6ビットのそれぞれとして“1”を出力する。すなわち、第3の部分積生成回路180は、部分積PAとして“000111111”を出力し、補正項CAとして“0”を出力する。
したがって、被乗数Aと乗数Bとが共に負の最大値である場合には、図5のように、最終加算部24からは“011111111111111”が出力される。すなわち、最終加算部24は、正の最大値に補正された乗算結果を出力し、本来の被乗数Aと乗数Bとの積に近い値を得ることができる。
図6は、第3の部分積生成回路の構成の他の例を示す回路図である。図6の部分積生成回路280は、図2の部分積生成回路140において、N−1個の飽和処理回路231を更に備えたものである。飽和処理回路231は、例えばORゲートである。
N−1個の飽和処理回路231は、下位のN−1個の選択回路142にそれぞれ対応している。下位のN−1個の選択回路142は、それぞれ、その出力を対応する飽和処理回路231に与える。飽和処理回路231は、いずれも、オーバーフロー検出結果ODが“1”である場合には“1”を出力し、その他の場合には対応する選択回路142の出力をそのまま出力する。
被乗数Aと乗数Bとが共に負の最大値である場合には、部分積生成回路280が出力する部分積PA2は“000111111”となるので、図4の部分積生成回路180に代えて図6の部分積生成回路280を用いても、同様の乗算結果が得られる。
(第2の実施形態)
図7は、本発明の第2の実施形態に係る第1の部分積生成回路340の構成を示す回路図である。図7の部分積生成回路340は、図2の部分積生成回路140において、補正項生成回路146に代えて補正項生成回路346を備えるものである。第2の実施形態において、ブースエンコード結果BE_kは、最上位以外のブースエンコード結果を示すものとする。
第2の実施形態は、図1の乗算装置において、部分積生成回路140,180に代えて部分積生成回路340を用いるものである。その他の構成要素については、第1の実施形態において説明したものと同様であるので、説明を省略する。
補正項生成回路346は、オーバーフロー検出結果ODが“1”である場合には、2進数“11”を2の補数の補正項CB3として出力する。また、補正項生成回路346は、オーバーフロー検出結果ODが“0”である場合には、ブースエンコード結果BE_0,BE_kが正又は0のときは“00”を、負のときは“01”を、2の補数の補正項CB3として選択して出力する。部分積生成回路340が出力する部分積PB3は、図2の部分積生成回路140が出力する部分積PBと同じである。
図8は、第2の実施形態における乗算の計算例を示す説明図である。被乗数Aと乗数Bとが共に負の最大値であることが検出された場合について説明する。この場合、部分積生成回路340のそれぞれが出力する部分積PB3は“000000000”となる。また、補正項生成回路346のそれぞれが、補正項CB3として“11”を出力する。したがって、図8のように、部分積PB3,PCと補正項CB3,CCとが加算されて得られる乗算結果は、正の最大値に補正されて出力される。
(第3の実施形態)
図9は、本発明の第3の実施形態に係る第1の部分積生成回路440の構成を示す回路図である。図9の部分積生成回路440は、図4の部分積生成回路180において、最下位の2個の選択回路142には、ブースエンコード結果BE_kではなく、エンコード結果補正部188の出力を与え、これらよりも上位の選択回路142には、ブースエンコード結果BE_kを与えるようにしたものである。第3の実施形態において、ブースエンコード結果BE_kは、最上位以外のブースエンコード結果を示すものとする。
第3の実施形態は、図1の乗算装置において、部分積生成回路140,180に代えて部分積生成回路440を用いるものである。その他の構成要素については、第1の実施形態において説明したものと同様であるので、説明を省略する。
図10は、第3の実施形態における乗算の計算例を示す説明図である。被乗数Aと乗数Bとが共に負の最大値であることが検出された場合について説明する。この場合、乗数Bの最上位以外のブースエンコード結果BE_kは“0”になる。オーバーフロー検出結果ODが“1”であるので、エンコード結果補正部188は、ブースエンコード結果BE_kを“−1”に補正する。すると、最下位の2個の選択回路142は、被乗数Aの対応するビットを論理反転させた値を選択するので、部分積生成回路440は、いずれも、部分積PB4として“000000011”を出力し、補正項CB4として“0”を出力する。したがって、図10のように、部分積PB4,PBと補正項CB4,CCとが加算されて得られる乗算結果は、正の最大値に補正されて出力される。
図11は、図9の第1の部分積生成回路の変形例を示す回路図である。図11の部分積生成回路540は、図2の部分積生成回路140において、2個の飽和処理回路231を更に備えたものである。飽和処理回路231は、例えばORゲートである。
2個の飽和処理回路231は、最下位の2個の選択回路142にそれぞれ対応している。最下位の2個の選択回路142は、それぞれ、出力を対応する飽和処理回路231に与える。飽和処理回路231は、いずれも、オーバーフロー検出結果ODが“1”である場合には“1”を出力し、オーバーフロー検出結果ODが“0”である場合には対応する選択回路142の出力をそのまま出力する。
被乗数Aと乗数Bとが共に負の最大値であることが検出された場合には、部分積生成回路540は、いずれも、部分積PB5として“000000011”を出力するので、図9の部分積生成回路440に代えて図11の部分積生成回路540を用いても、同様の乗算結果が得られる。
(第4の実施形態)
図12は、本発明の第4の実施形態に係る第1の部分積生成回路640の構成を示す回路図である。図12の部分積生成回路640は、図2の部分積生成回路140において、補正項生成回路146に代えて補正項生成回路646を備え、飽和処理回路231を更に備えたものである。飽和処理回路231は、例えばORゲートである。第4の実施形態において、ブースエンコード結果BE_kは、最上位以外のブースエンコード結果を示すものとする。
最下位から2番目の選択回路142は、その出力を飽和処理回路231に与える。飽和処理回路231は、オーバーフロー検出結果ODが“1”である場合には“1”を出力し、オーバーフロー検出結果ODが“0”である場合には最下位から2番目の選択回路142の出力をそのまま出力する。補正項生成回路646は、オーバーフロー検出結果ODが“1”である場合には“1”を補正項CB6として出力し、オーバーフロー検出結果ODが“0”である場合には図2の補正項生成回路146と同様の値を補正項CB6として出力する。
第4の実施形態は、図1の乗算装置において、部分積生成回路140,180に代えて部分積生成回路640を用いるものである。その他の構成要素については、第1の実施形態において説明したものと同様であるので、説明を省略する。
図13は、第4の実施形態における乗算の計算例を示す説明図である。被乗数Aと乗数Bとが共に負の最大値であることが検出された場合について説明する。この場合、乗数Bの最上位以外のブースエンコード結果BE_kは0になる。オーバーフロー検出結果ODが“1”であるので、補正項生成回路646及び飽和処理回路231は、“1”を出力する。つまり、部分積生成回路640は、いずれも、部分積PB6として“000000010”を出力し、補正項CB6として“1”を出力する。したがって、図13のように、部分積PB6,PBと補正項CB6,CCとが加算されて得られる乗算結果は、正の最大値に補正されて出力される。
(第5の実施形態)
本実施形態では、図1の乗算装置を変形した積和演算装置について説明する。図14は、本発明の第5の実施形態に係る積和演算装置の構成を示すブロック図である。
図14の積和演算装置は、M+1ビットの被乗数AとN+1ビットの乗数Bとの間の積と、加数Xとの和又は差を求める。すなわち、この積和演算装置は、X±A×Bの演算を行う。ここで、加数Xは2の補数で表現された符号付きの固定小数点数であり、その最上位ビットの右側に小数点が存在するとし、最上位ビットは正又は負の符号を示すとする。
図14の積和演算装置は、エンコード部712と、オーバーフロー検出部14と、部分積生成部16と、累算部22と、固定小数点シフト部32と、桁上げ保存加算部34と、桁上げ伝播加算部36と、セレクタ38とを備えている。オーバーフロー検出部14、部分積生成部16、及び累算部22は、図1を参照して説明したものと同じであるので、説明を省略する。
エンコード部712は、積和演算をすべきことを演算選択信号SLが示している場合には、図1のエンコード部12と同様に、乗数Bを2次のブースのアルゴリズムに基づいてエンコードし、得られたブースエンコード結果BE_0,BE_1,…,BE_Lを部分積生成部16に出力する。また、エンコード部712は、積差演算をすべきことを演算選択信号SLが示している場合には、乗数Bを2次のブースのアルゴリズムに基づいてエンコードし、得られた結果の2の補数をブースエンコード結果BE_0,BE_1,…,BE_Lとして部分積生成部16に出力する。
固定小数点シフト部32は、小数点位置が加数Xと合うように、累算部22から出力される中間積をシフトし、その結果を桁上げ保存加算部34に出力する。セレクタ38は、積和演算又は積差演算をすべきことを演算選択信号SLが示している場合には、加数Xを選択し、その他の場合には、“0”を選択して、桁上げ保存加算部34に出力する。“0”が選択された場合には、図14の積和演算装置は、乗算(A×B)を行うことになる。
桁上げ保存加算部34は、セレクタ38の出力と、固定小数点シフト部32から出力される2つの中間積とを桁上げ保存加算し、2つの中間積を求めて桁上げ伝播加算部36に出力する。桁上げ伝播加算部36は、入力された2つの中間積の加算を行い、求められた演算結果を出力する。
このように、図14の積和演算装置によると、演算選択信号SLに応じて、積和演算、積差演算、又は乗算を行うことができる。
なお、部分積生成回路140,160,180に代えて、第1〜第4の実施形態で説明した他の部分積生成回路を用いるようにしてもよい。
以上のように、本発明に係る乗算装置及び積和演算装置は、被乗数Aと乗数Bとが共に負の最大値であることが検出された場合には、乗算結果が正の最大値になるように、部分積生成部において部分積又は補正項に対して補正を行う。求められた乗算結果に対してはオーバーフローに対処するための処理を行わないので、回路規模を抑えることができる。
本発明は、固定小数点数の乗算の結果がオーバーフローした場合の処理を行う回路の規模を小さくすることができるので、乗算器として有用である。特に、高精度な演算を実現するために固定小数点数での演算が必要となる音声やメディア処理等のプロセッサに内蔵される乗算器又は積和演算器として有用である。
本発明の第1の実施形態に係る乗算装置の構成を示すブロック図である。 第1の実施形態における第1の部分積生成回路の構成を示す回路図である。 第1の実施形態における第2の部分積生成回路の構成を示す回路図である。 第1の実施形態における第3の部分積生成回路の構成を示す回路図である。 第1の実施形態における乗算の計算例を示す説明図である。 第3の部分積生成回路の構成の他の例を示す回路図である。 本発明の第2の実施形態に係る第1の部分積生成回路の構成を示す回路図である。 第2の実施形態における乗算の計算例を示す説明図である。 本発明の第3の実施形態に係る第1の部分積生成回路の構成を示す回路図である。 第3の実施形態における乗算の計算例を示す説明図である。 図9の第1の部分積生成回路の変形例を示す回路図である。 本発明の第4の実施形態に係る第1の部分積生成回路の構成を示す回路図である。 第4の実施形態における乗算の計算例を示す説明図である。 本発明の第5の実施形態に係る積和演算装置の構成を示すブロック図である。 従来の乗算装置の構成の例を示すブロック図である。
12,712 エンコード部
14 オーバーフロー検出部
16 部分積生成部
22 累算部
24 最終加算部
32 固定小数点シフト部
34 桁上げ保存加算部
36 桁上げ伝播加算部
38 セレクタ
140,340,440,540,640 第1の部分積生成回路
142,144 選択回路
146,166,346,646 補正項生成回路
160 第2の部分積生成回路
180,280 第3の部分積生成回路
188 エンコード結果補正部
231 飽和処理回路

Claims (3)

  1. 2の補数で表現された固定小数点数である被乗数と、2の補数で表現されたN+1(Nは2以上の整数)ビットの固定小数点数である乗数との乗算による積を求める乗算装置であって、
    前記乗数を2次のブースのアルゴリズムに基づいてエンコードし、得られた複数のエンコード結果を出力するエンコード部と、
    前記被乗数と前記乗数とが共に負の最大値である場合に、オーバーフローが発生することを検出するオーバーフロー検出部と、
    前記被乗数と前記複数のエンコード結果のそれぞれとの間の複数の部分積と、前記複数の部分積のそれぞれに対応し、対応する部分積に加算してその部分積の2の補数を得るための複数の補正項とを生成して出力する部分積生成部と、
    前記複数の部分積及び前記複数の補正項の累算を行い、2つの中間積に圧縮して出力する累算部と、
    前記2つの中間積の加算を行い、その結果を乗算結果として出力する最終加算部とを備え、
    前記部分積生成部は、
    前記複数のエンコード結果のうちの最上位及び最下位以外のエンコード結果のそれぞれを入力とし、前記被乗数と入力されたエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、入力されたエンコード結果に対応する最上位及び最下位以外の部分積及び補正項を生成する複数の第1の部分積生成回路と、
    前記被乗数と前記複数のエンコード結果のうちの最上位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最上位の部分積及び補正項を生成する第2の部分積生成回路と、
    前記被乗数と前記複数のエンコード結果のうちの最下位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最下位の部分積及び補正項を生成する第3の部分積生成回路とを有するものであり、
    前記第2の部分積生成回路は、
    前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、前記最上位の補正項として0を出力するものであり、
    前記第3の部分積生成回路は、
    前記被乗数及び選択信号に応じて前記最下位の部分積のうちの1ビットをそれぞれ生成する複数の選択回路と、
    エンコード結果補正部とを有するものであり、
    前記複数の選択回路のうち、前記最下位の部分積の下位N−1ビットを出力するN−1個の選択回路には前記エンコード結果補正部の出力が、その他の選択回路には前記最下位のエンコード結果が、前記選択信号として与えられており、
    前記エンコード結果補正部は、
    前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、当該エンコード結果補正部の出力が与えられる選択回路から1が出力されるような値を出力し、その他の場合には、前記最下位のエンコード結果を出力するものである
    ことを特徴とする乗算装置。
  2. 2の補数で表現された固定小数点数である被乗数と、2の補数で表現されたN+1(Nは2以上の整数)ビットの固定小数点数である乗数との乗算による積を求める乗算装置であって、
    前記乗数を2次のブースのアルゴリズムに基づいてエンコードし、得られた複数のエンコード結果を出力するエンコード部と、
    前記被乗数と前記乗数とが共に負の最大値である場合に、オーバーフローが発生することを検出するオーバーフロー検出部と、
    前記被乗数と前記複数のエンコード結果のそれぞれとの間の複数の部分積と、前記複数の部分積のそれぞれに対応し、対応する部分積に加算してその部分積の2の補数を得るための複数の補正項とを生成して出力する部分積生成部と、
    前記複数の部分積及び前記複数の補正項の累算を行い、2つの中間積に圧縮して出力する累算部と、
    前記2つの中間積の加算を行い、その結果を乗算結果として出力する最終加算部とを備え、
    前記部分積生成部は、
    前記複数のエンコード結果のうちの最上位及び最下位以外のエンコード結果のそれぞれを入力とし、前記被乗数と入力されたエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、入力されたエンコード結果に対応する最上位及び最下位以外の部分積及び補正項を生成する複数の第1の部分積生成回路と、
    前記被乗数と前記複数のエンコード結果のうちの最上位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最上位の部分積及び補正項を生成する第2の部分積生成回路と、
    前記被乗数と前記複数のエンコード結果のうちの最下位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最下位の部分積及び補正項を生成する第3の部分積生成回路とを有するものであり、
    前記第2の部分積生成回路は、
    前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、前記最上位の補正項として0を出力するものであり、
    前記第3の部分積生成回路は、
    前記被乗数及び選択信号に応じて前記最下位の部分積のうちの1ビットをそれぞれ生成する複数の選択回路と、
    前記複数の選択回路のうち、前記最下位の部分積の下位N−1ビットを出力するN−1個の選択回路のそれぞれに対応するN−1個の飽和処理回路とを有するものであり、
    前記複数の選択回路は、それぞれ、
    前記最下位のエンコード結果を前記選択信号として用いるものであり、
    前記N−1個の飽和処理回路は、それぞれ、
    前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、前記複数の選択回路のうち、対応する選択回路の出力を1に補正して出力し、その他の場合には、前記対応する選択回路の出力をそのまま出力させるものである
    ことを特徴とする乗算装置。
  3. 2の補数で表現された固定小数点数である被乗数と、2の補数で表現された固定小数点数である乗数との乗算による積を求める乗算装置であって、
    前記乗数を2次のブースのアルゴリズムに基づいてエンコードし、得られた複数のエンコード結果を出力するエンコード部と、
    前記被乗数と前記乗数とが共に負の最大値である場合に、オーバーフローが発生することを検出するオーバーフロー検出部と、
    前記被乗数と前記複数のエンコード結果のそれぞれとの間の複数の部分積と、前記複数の部分積のそれぞれに対応し、対応する部分積に加算してその部分積の2の補数を得るための複数の補正項とを生成して出力する部分積生成部と、
    前記複数の部分積及び前記複数の補正項の累算を行い、2つの中間積に圧縮して出力する累算部と、
    前記2つの中間積の加算を行い、その結果を乗算結果として出力する最終加算部とを備え、
    前記部分積生成部は、
    前記複数のエンコード結果のうちの最上位以外のエンコード結果のそれぞれを入力とし、前記被乗数と入力されたエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、入力されたエンコード結果に対応する最上位以外の部分積及び補正項を生成する複数の第1の部分積生成回路と、
    前記被乗数と前記複数のエンコード結果のうちの最上位のエンコード結果との間で、前記複数の部分積及び前記複数の補正項のうち、最上位の部分積及び補正項を生成する第2の部分積生成回路とを有するものであり、
    前記複数の第1の部分積生成回路は、それぞれ、
    対応するエンコード結果に従って選択された1ビットの値と前記オーバーフロー検出部によるオーバーフローの検出結果との論理和を、対応する2ビットの補正項の下位ビットとして、前記オーバーフロー検出部によるオーバーフローの検出結果を、前記対応する2ビットの補正項の上位ビットとして出力するものであり、
    前記第2の部分積生成回路は、
    前記オーバーフロー検出部によってオーバーフローが発生することが検出された場合には、前記最上位の補正項として0を出力するものである
    ことを特徴とする乗算装置。
JP2006531356A 2004-08-26 2005-07-13 乗算装置 Active JP4376904B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2004246881 2004-08-26
JP2004246881 2004-08-26
PCT/JP2005/012954 WO2006022089A1 (ja) 2004-08-26 2005-07-13 乗算装置

Publications (2)

Publication Number Publication Date
JPWO2006022089A1 JPWO2006022089A1 (ja) 2008-05-08
JP4376904B2 true JP4376904B2 (ja) 2009-12-02

Family

ID=35967309

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006531356A Active JP4376904B2 (ja) 2004-08-26 2005-07-13 乗算装置

Country Status (5)

Country Link
US (1) US20080098057A1 (ja)
JP (1) JP4376904B2 (ja)
CN (1) CN100517213C (ja)
TW (1) TW200627261A (ja)
WO (1) WO2006022089A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8082287B2 (en) * 2006-01-20 2011-12-20 Qualcomm Incorporated Pre-saturating fixed-point multiplier
US7958180B2 (en) * 2007-07-05 2011-06-07 International Business Machines Corporation Multiplier engine
CN111258542B (zh) * 2018-11-30 2022-06-17 上海寒武纪信息科技有限公司 乘法器、数据处理方法、芯片及电子设备
CN110209375B (zh) * 2019-05-30 2021-03-26 浙江大学 一种基于radix-4编码和差分权重存储的乘累加电路
CN110688087B (zh) * 2019-09-24 2024-03-19 上海寒武纪信息科技有限公司 数据处理器、方法、芯片及电子设备
CN111752528B (zh) * 2020-06-30 2021-12-07 无锡中微亿芯有限公司 一种支持高效乘法运算的基本逻辑单元
CN116991359B (zh) * 2023-09-26 2023-12-22 上海为旌科技有限公司 Booth乘法器、混合Booth乘法器及运算方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11126157A (ja) * 1997-10-24 1999-05-11 Matsushita Electric Ind Co Ltd 乗算方法および乗算回路

Also Published As

Publication number Publication date
US20080098057A1 (en) 2008-04-24
JPWO2006022089A1 (ja) 2008-05-08
TW200627261A (en) 2006-08-01
CN101010665A (zh) 2007-08-01
WO2006022089A1 (ja) 2006-03-02
CN100517213C (zh) 2009-07-22

Similar Documents

Publication Publication Date Title
JP4376904B2 (ja) 乗算装置
US7315163B2 (en) Arithmetic unit
KR20010014992A (ko) 고차 기수 제산기 및 그 방법
EP0613082B1 (en) 4:2 adder and multiplier circuit employing the same
JP2009135891A (ja) データ変換装置及びその制御方法
JP6350111B2 (ja) 乗算回路及びその乗算方法
JPS595350A (ja) 組合わせ乗算器
US20190042198A1 (en) Methods for using a multiplier to support multiple sub-multiplication operations
JP4273071B2 (ja) 除算・開平演算器
US20090228538A1 (en) Multi input coding adder, digital filter, signal processing device, synthesizer device, synthesizing program, and synthesizing program recording medium
JP6734938B2 (ja) ニューラルネットワーク回路
US7840628B2 (en) Combining circuitry
JP4933405B2 (ja) データ変換装置及びその制御方法
JP2010102431A (ja) 浮動小数点数演算回路と浮動小数点演算方法及びサーボ制御装置
JPH0793134A (ja) 乗算器
Gao et al. Decimal floating-point multiplier with binary-decimal compression based fixed-point multiplier
JP2606326B2 (ja) 乗算器
JPH11237973A (ja) 乗算器
JPH11126157A (ja) 乗算方法および乗算回路
TW200534161A (en) Sign extension method and architecture of a multiplier
US5923888A (en) Multiplier for the multiplication of at least two figures in an original format
Dave et al. Multiplication by complements
JP4042215B2 (ja) 演算処理装置およびその方法
US9632751B2 (en) Arithmetic circuit and arithmetic method
JP2006301685A (ja) 乗算装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090407

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090608

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090818

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: 20090909

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: 20120918

Year of fee payment: 3