JP4355705B2 - 乗算装置、及び演算装置 - Google Patents

乗算装置、及び演算装置 Download PDF

Info

Publication number
JP4355705B2
JP4355705B2 JP2006046184A JP2006046184A JP4355705B2 JP 4355705 B2 JP4355705 B2 JP 4355705B2 JP 2006046184 A JP2006046184 A JP 2006046184A JP 2006046184 A JP2006046184 A JP 2006046184A JP 4355705 B2 JP4355705 B2 JP 4355705B2
Authority
JP
Japan
Prior art keywords
multiplication
operand
circuit
mask
register
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
JP2006046184A
Other languages
English (en)
Other versions
JP2007226489A (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.)
NEC Computertechno Ltd
Original Assignee
NEC Computertechno 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 NEC Computertechno Ltd filed Critical NEC Computertechno Ltd
Priority to JP2006046184A priority Critical patent/JP4355705B2/ja
Priority to US11/709,784 priority patent/US8041758B2/en
Publication of JP2007226489A publication Critical patent/JP2007226489A/ja
Application granted granted Critical
Publication of JP4355705B2 publication Critical patent/JP4355705B2/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/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3868Bypass control, i.e. possibility to transfer an operand unchanged to the output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/386Special constructional features
    • G06F2207/3872Precharge of output to prevent leakage

Landscapes

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

Description

本発明は、データの演算を行う演算装置に関する。特に、本発明は、データの乗算を行う乗算装置に関する。
コンピュータにおいては、浮動小数点数(floating point number)や固定小数点数(fixed point number)が扱われる。それら浮動小数点数や固定小数点数の演算を行うための演算装置が知られている。なかでも乗算を行うための演算装置は、乗算装置(multiplier)と呼ばれている。演算装置や乗算装置に関する従来技術として、次のものが知られている。
特許文献1には、浮動小数点数の乗算と共に、整数の乗算を効率良く実行することを目的とした浮動小数点乗算回路が記載されている。特許文献1に記載された技術によれば、整数データは、仮数部の最上位ビットが0である浮動小数点形式で表現される。これにより、整数データと浮動小数点数データとの間の特別な区別がなくなり、両者は統一的に取り扱われることになる。
特許文献2には、正規化浮動小数点数だけでなく、固定小数点数及び非正規化浮動小数点数の乗算を行う浮動小数点乗算装置が記載されている。例えば、固定小数点数は、最上位ビットから連続するゼロの数だけ左シフタによってシフトされた後、正規化浮動小数点数の乗算を行う乗算回路に提供される。また、乗数及び被乗数のそれぞれに関するシフト量の和が加算器により算出される。乗算回路から出力される乗算結果は、そのシフト量の和だけ右シフタによってシフトされる。
特許文献3には、浮動小数点乗算回路の規模を縮小することを目的とした技術が記載されている。その浮動小数点乗算回路は、第1の値の仮数部と第2の値の仮数部との乗算を行う乗算器を有する。乗算器は、2次のブースデコーダ及びセレクタにより部分積を求める。求められた部分積は、アレイ式に加算される。
特許文献4には、ディジタル信号処理プロセッサ(DSP)の演算回路の消費電力を低減することを目的とした技術が記載されている。その演算回路は、複数の機能ブロックを有している。また、その演算回路は、複数のスイッチとコントロールブロックを有している。複数のスイッチは、複数の機能ブロックのそれぞれに対するクロックの供給をオン/オフする。コントロールブロックは、各スイッチを制御することによって、各機能ブロックに対するクロックの供給を制御する。
特許文献5には、マイクロプロセッサ内のビットフィールド操作回路が記載されている。そのビットフィールド操作回路は、マスクデータ生成回路を備え、そのマスクデータ生成回路が出力するマスクデータを用いてビットフィールド操作を行う。マスクデータ生成回路は、マスクビット生成回路とシフタとを有する。シフタは、マスクビット生成回路から出力されるマスクビットを所定のビットだけシフトさせ、そのマスクビットをマスクデータとしてALUに出力する。
特開昭61−49234号公報 特開平5−40605号公報 特開平10−333886号公報 特開平5−150870号公報 特開平9−114639号公報
本発明の目的は、乗算装置や演算装置の消費電力を低減することができる技術を提供することにある。
以下に、[発明を実施するための最良の形態]で使用される番号・符号を用いて、[課題を解決するための手段]を説明する。これらの番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明の第1の観点において、乗算装置が提供される。その乗算装置は、乗算アレイ(41)と、加算器(44,7,8)と、部分積制御回路(42)とを備える。乗算アレイ(41)は、nビット(nは自然数)の乗数とnビットの被乗数との乗算を行うことによって部分積を生成する。加算器(44,7,8)は、生成された部分積を加算する。部分積制御回路(42)は、乗算アレイ(41)のうち乗数及び被乗数の有効桁に対応する有効領域(Re)を活性化するイネーブル信号(ENB−a〜ENB−d)を生成する。その有効桁は、乗数及び被乗数のフォーマットに依存する。部分積制御回路(42)は、そのフォーマットを指定する乗算命令(MC)に応じてイネーブル信号(ENB−a〜ENB−d)の状態を制御する。
乗算アレイ(41)はダイナミック回路で構成される。乗算アレイ(41)の初段ダイナミック回路は、イネーブル信号(ENB−a〜ENB−d)によりオン/オフされるスイッチ(23)を有している。イネーブル信号(ENB−a〜ENB−d)が無効の場合、スイッチ(23)はオフされ、ダイナミック回路のディスチャージ動作は停止する。
イネーブル信号(ENB−a〜ENB−d)は、乗算アレイ(41)のうち第1領域を活性化する第1イネーブル信号と、乗算アレイ(41)のうち第2領域を活性化する第2イネーブル信号とを含む。乗数及び被乗数のフォーマットが第1フォーマットである場合、有効領域(Re)は、第1領域である。よって、部分積制御回路(42)は、第1イネーブル信号を有効に設定し、第2イネーブル信号を無効に設定する。また、乗数及び被乗数のフォーマットが第2フォーマットである場合、有効領域(Re)は、第1領域及び第2領域である。よって、部分積制御回路(42)は、第1イネーブル信号及び第2イネーブル信号を有効に設定する。
上記フォーマットは、単精度浮動小数点形式、倍精度浮動小数点形式、32ビット固定小数点形式、及び64ビット固定小数点形式を含む。
本発明に係る乗算装置は、乗算の有効/無効を示すマスクビット(MASK)が格納されるマスクレジスタ(3)を更に備える。この場合、部分積制御回路(42)は、乗算命令(MC)に加えてマスクビット(MASK)に基づいて、イネーブル信号(ENB−a〜ENB−d)の状態を制御する。特に、マスクビット(MASK)が無効を示す場合、部分積制御回路(42)は、イネーブル信号(ENB−a〜ENB−d)を全て無効に設定する。
本発明に係る乗算装置は、第1オペランド(OP1)が格納される第1レジスタ(1)と、第2オペランド(OP2)が格納される第2レジスタ(2)と、第1前処理回路(5)と、第2前処理回路(5)とを更に備える。第1前処理回路(5)は、乗算命令(MC)に従って第1オペランド(OP1)を指数部(EXP1)と仮数部(MNT1)に分割し、仮数部(MNT1)を乗数として乗算アレイ(41)に出力する。第2前処理回路(5)は、乗算命令(MC)に従って第2オペランド(OP2)を指数部(EXP2)と仮数部(MNT2)に分割し、仮数部(MNT2)を被乗数として乗算アレイ(41)に出力する。
第1レジスタ(1)、第2レジスタ(2)、及びマスクレジスタ(3)は、ベクトルデータが格納されるベクトルレジスタであってもよい。その場合、第1オペランド(OP1)は、第1レジスタ(1)に格納される第1ベクトルデータの各要素である。第2オペランド(OP2)は、第2レジスタ(2)に格納される第2ベクトルデータの各要素である。マスクビット(MASK)は、マスクレジスタ(3)に格納されるベクトルマスクデータの各要素であり、第1オペランド(OP1)及び第2オペランド(OP2)に対応付けられている。
本発明に係る乗算装置は、上記加算器(44,7,8)の出力及びマスクビット(MASK)を受け取る選択回路(12)を更に備える。選択回路(12)は、加算器(44,7,8)の出力に基づいて、第1オペランド(OP1)と第2オペランド(OP2)との乗算の結果を示す結果データ(RES)を生成する。マスクビット(MASK)が無効を示す場合、選択回路(12)は、結果データ(RES)の値を0に設定する。
上述の加算器は、固定小数点形式で部分積を加算する固定小数点加算器(8)と、浮動小数点形式で部分積を加算する浮動小数点加算器(7)とを含んでもよい。選択回路(12)は、更に乗算命令(MC)を受け取る。マスクビット(MASK)が有効を示す場合、選択回路(12)は、乗算命令(MC)に応じて固定小数点加算器(8)及び浮動小数点加算器(7)のいずれかの出力を選択し、選択された出力に基づいて結果データ(RES)を生成する。
本発明の第2の観点において、乗算装置が提供される。その乗算装置は、乗算アレイ(41)と、加算器(44,7,8)と、マスクレジスタ(3)と、部分積制御回路(42)とを備える。乗算アレイ(41)は、乗数と被乗数との乗算を行うことによって部分積を生成する。加算器(44,7,8)は、生成された部分積を加算する。マスクレジスタ(3)には、乗算の有効/無効を示すマスクビット(MASK)が格納される。部分積制御回路(42)は、乗算アレイ(41)を活性化するイネーブル信号(ENB−a〜ENB−d)の状態を、マスクビット(MASK)に基づいて制御する。マスクビット(MASK)が無効を示す場合、部分積制御回路(42)は、イネーブル信号(ENB−a〜ENB−d)を無効に設定する。乗算アレイ(41)は、ダイナミック回路で構成され、乗算アレイ(41)の初段ダイナミック回路は、イネーブル信号(ENB−a〜ENB−d)によりオン/オフされるスイッチ(23)を有する。イネーブル信号(ENB−a〜ENB−d)が無効の場合、上記スイッチ(23)はオフされ、ダイナミック回路のディスチャージ動作は停止する。
本発明に係る乗算装置は、第1オペランド(OP1)が格納される第1レジスタ(1)と、第2オペランド(OP2)が格納される第2レジスタ(2)と、第1前処理回路(5)と、第2前処理回路(5)とを更に備える。第1前処理回路(5)は、第1オペランド(OP1)の仮数部(MNT1)を乗数として乗算アレイ(41)に出力する。第2前処理回路(5)は、第2オペランド(OP2)の仮数部(MNT2)を被乗数として乗算アレイ(41)に出力する。これら第1レジスタ(1)、第2レジスタ(2)、及びマスクレジスタ(3)は、ベクトルデータが格納されるベクトルレジスタである。第1オペランド(OP1)は、第1レジスタ(1)に格納される第1ベクトルデータの各要素である。第2オペランド(OP2)は、第2レジスタ(2)に格納される第2ベクトルデータの各要素である。マスクビット(MASK)は、マスクレジスタ(3)に格納されるベクトルマスクデータの各要素であり、第1オペランド(OP1)及び第2オペランド(OP2)に対応付けられている。
本発明の第3の観点において、演算装置が提供される。その演算装置は、第1オペランド(OP1)が格納される第1レジスタ(1)と、第2オペランド(OP2)が格納される第2レジスタ(2)と、第1オペランド(OP1)と第2オペランド(OP2)を用いて演算を行う演算器(102,103)と、演算制御回路(101)とを備える。演算制御回路(101)は、演算器(102,103)のうち第1オペランド(OP1)及び第2オペランド(OP2)の有効桁に対応する有効領域(Re)を活性化するイネーブル信号(ENB)を生成する。その有効桁は、第1オペランド(OP1)及び第2オペランド(OP2)のフォーマットに依存する。演算制御回路(101)は、そのフォーマットを指定する演算命令(OC)に応じてイネーブル信号(ENB)の状態を制御する。
上記演算器(102,103)はダイナミック回路で構成される。演算器(102,103)の初段ダイナミック回路は、イネーブル信号(ENB)によりオン/オフされるスイッチ(23)を有する。イネーブル信号(ENB)が無効の場合、スイッチ(23)はオフされ、ダイナミック回路のディスチャージ動作は停止する。
本発明に係る演算装置は、演算の有効/無効を示すマスクビット(MASK)が格納されるマスクレジスタ(3)を更に備えてもよい。この場合、演算制御回路(101)は、演算命令(OC)に加えてマスクビット(MASK)に基づいて、イネーブル信号(ENB)の状態を制御する。特に、マスクビット(MASK)が無効を示す場合、演算制御回路(101)は、イネーブル信号(ENB)を無効に設定する。
第1レジスタ(1)、第2レジスタ(2)、及びマスクレジスタ(3)は、ベクトルデータが格納されるベクトルレジスタであってもよい。その場合、第1オペランド(OP1)は、第1レジスタ(1)に格納される第1ベクトルデータの各要素である。第2オペランド(OP2)は、第2レジスタ(2)に格納される第2ベクトルデータの各要素である。マスクビット(MASK)は、マスクレジスタ(3)に格納されるベクトルマスクデータの各要素であり、第1オペランド(OP1)及び第2オペランド(OP2)に対応付けられている。
本発明によれば、演算命令やマスクビットに応じて、複数種類のイネーブル信号の状態が制御される。これにより、オペランドのフォーマットに応じて、乗算アレイ等の演算器における未使用領域を非活性化することが可能となる。より具体的には、その未使用領域における初段ダイナミック回路のディスチャージ動作を完全に停止させることが可能となる。更に、ディスチャージ動作が停止した初段ダイナミック回路以降のダイナミック回路の動作も抑制される。従って、複数のフォーマットを扱う演算装置の消費電力が低減される。
添付図面を参照して、本発明の実施の形態に係る乗算装置を説明する。本実施の形態に係る乗算装置は、ベクトル乗算機能を有するベクトル乗算装置(vector multiplier)であり、ベクトルデータの乗算を行う。また、本実施の形態に係るベクトル乗算装置は、複数のデータフォーマットをサポートしており、浮動小数点演算と固定小数点演算を同一のハードウェアで実行する。
1.概略構成
図1は、本実施の形態に係るベクトル乗算装置の構成を示すブロック図である。本実施の形態に係るベクトル乗算装置は、ベクトルレジスタ1、ベクトルレジスタ2、マスクレジスタ3、乗算回路4、前処理回路5、指数部加算器6、浮動小数点加算器7、固定小数点加算器8、0カウンタ9、正規化丸め回路10、指数部補正回路11、及び選択回路12を備えている。
ベクトルレジスタ1は、前処理回路5に接続されている。そのベクトルレジスタ1には乗算の対象である第1ベクトルデータが格納される。その第1ベクトルデータの各要素が第1オペランドOP1であり、順番に前処理回路5に出力される。また、ベクトルレジスタ2は、他の前処理回路5に接続されている。そのベクトルレジスタ2には乗算の対象である第2ベクトルデータが格納される。その第2ベクトルデータの各要素が第2オペランドOP2であり、順番に他の前処理回路5に出力される。各オペランドのフォーマットとしては、IEEEに準拠する倍精度(double precision)浮動小数点形式及び単精度(single precision)浮動小数点形式に加えて、64ビット固定小数点形式及び32ビット固定小数点形式の4フォーマットが挙げられる。
本実施の形態によれば、第1オペランドOP1と第2オペランドOP2との乗算毎に、その乗算が有効化/無効化される。そのために、各乗算の有効/無効を示すマスクビットMASKが用意され、そのマスクビットMASKの列であるベクトルマスクデータがマスクレジスタ3に格納される。
より詳細には、マスクレジスタ3はベクトルレジスタであり、そのマスクレジスタ3には、ベクトルデータであるベクトルマスクデータが格納される。ベクトルマスクデータの要素数は、上記第1ベクトルデータあるいは第2ベクトルデータの要素数と同じである。ベクトルマスクデータの各要素であるマスクビットMASKは、第1、第2ベクトルデータの各要素(第1オペランドOP1、第2オペランドOP2)に対応付けられており、その対応する要素毎に乗算の有効/無効を規定している。例えば、マスクビットMASKが“1”の場合、乗算は有効であり、マスクビットMASKが“0”の場合、乗算は無効である。マスクレジスタ3は、乗算回路4及び選択回路12と接続されており、マスクビットMASKは、乗算回路4及び選択回路12により参照される。
前処理回路5は、ベクトルレジスタ1または2、乗算回路4、及び指数部加算器6に接続されている。この前処理回路5は、ベクトルレジスタからオペランドを受け取り、また、所定のコントローラ(図示されない)からそのオペランドのフォーマットを指定する「乗算命令MC」を受け取る。そして、前処理回路5は、その乗算命令MCが示すフォーマットに従って、受け取ったオペランドを指数部と仮数部に分割する。例えば、ベクトルレジスタ1に接続された前処理回路5は、第1オペランドOP1を第1指数部EXP1と第1仮数部MNT1に分割し、それら第1指数部EXP1及び第1仮数部MNT1のそれぞれを指数部加算器6及び乗算回路4に出力する。また、ベクトルレジスタ2に接続された前処理回路5は、第2オペランドOP2を第2指数部EXP2と第2仮数部MNT2に分割し、それら第2指数部EXP2及び第2仮数部MNT2のそれぞれを指数部加算器6及び乗算回路4に出力する。尚、指数部EXT1、EXP2の各々は、符号と指数を含んでいるとする。
乗算回路4は、マスクレジスタ3、前処理回路5、浮動小数点加算器7、及び固定小数点加算器8に接続されている。この乗算回路4は、前処理回路5から、第1仮数部MNT1を乗数として受け取り、第2仮数部MNT2を被乗数として受け取る。そして、乗算回路4は、乗数と被乗数との乗算を行い、その乗算結果を浮動小数点加算器7及び固定小数点加算器8に出力する。より詳細には、乗算回路4は、部分積生成回路41、部分積制御回路42、デコーダ43、及び部分積加算器44を有している。デコーダ43は、第1仮数部MNT1を再コード化し、乗数として部分積生成回路41に出力する。部分積生成回路41は、nビットの乗数(第1仮数部MNT1)とnビットの被乗数(第2仮数部MNT2)との乗算を行うことによってn個の部分積を生成する。ここで、nは自然数である。部分積加算器44は、生成されたn個の部分積を2個になるまで加算し、最終的に得られた2つの部分積を浮動小数点加算器7及び固定小数点加算器8に出力する。
本実施の形態によれば、部分積生成回路41を活性化/非活性化するために部分積制御回路42が設けられている。部分積制御回路42は、マスクレジスタ3に接続されており、第1仮数部MNT1及び第2仮数部MNT2に対応付けられたマスクビットMASKを、マスクレジスタ3から受け取る。また、部分積制御回路42は、上述の乗算命令MCを受け取る。そして、部分積制御回路42は、乗算命令MC及びマスクビットMASKに基づいて、イネーブル信号ENBを生成する。そのイネーブル信号ENBは、部分積生成回路41を活性化/非活性化するための信号であり、部分積制御回路42から部分積生成回路41に送出される。後の第2節で詳しく説明されるように、本実施の形態によれば、複数種類のイネーブル信号ENBが用意される。
固定小数点加算器8は、乗算回路4と選択回路12に接続されている。固定小数点加算器8は、乗算回路4から出力される上記2個の部分積を、固定小数点形式で加算する。そして、固定小数点加算器8は、その加算結果のうち有効桁を選択回路12へ出力する。この固定小数点加算器8の出力が、固定小数点乗算結果(の仮数部)MNT_FXとなる。
浮動小数点加算器7は、乗算回路4、0カウンタ9、及び正規化丸め回路10に接続されている。浮動小数点加算器7は、乗算回路4から出力される上記2個の部分積を、浮動小数点形式で加算する。そして、浮動小数点加算器7は、その加算結果を0カウンタ9と正規化丸め回路10へ出力する。0カウンタ9は、浮動小数点加算器7、正規化丸め回路10、及び指数部補正回路11に接続されている。0カウンタ9は、浮動小数点加算器7の出力のうちMSB(Most Significant Bit)から連続するビット0の数をカウントし、そのカウント値を正規化丸め回路10と指数部補正回路11へ出力する。正規化丸め回路10は、浮動小数点加算器7、0カウンタ9、及び選択回路12に接続されている。正規化丸め回路10は、0カウンタ9が出力するカウント値(シフト数)に基づいて、浮動小数点加算器7の出力の正規化を行う。更に、正規化丸め回路10は、丸め処理(rounding)を行い、その処理結果を選択回路12へ出力する。この正規化丸め回路10の出力が、浮動小数点乗算結果の仮数部MNT_FLとなる。
指数部加算器6は、前処理回路5及び指数部補正回路11に接続されている。この指数部加算器6は、前処理回路5から出力される指数部EXP1及びEXP2を受け取り、符号の判定及び指数同士の加算を行う。そして、指数部加算器6は、加算結果としての指数部EXPを指数部補正回路11に出力する。指数部補正回路11は、指数部加算器6、0カウンタ9、及び選択回路12に接続されている。この指数部補正回路11は、0カウンタ9が出力するカウント値(シフト数)に応じて指数部EXPの補正を行い、その処理結果を選択回路12へ出力する。この指数部補正回路11の出力が、浮動小数点乗算結果の指数部EXP’となる。
選択回路12は、マスクレジスタ3、固定小数点加算器8、正規化丸め回路10、及び指数部補正回路11に接続されている。この選択回路12は、乗算命令MC、マスクビットMASK、仮数部MNT_FX、仮数部MNT_FL、及び指数部EXP’を受け取る。マスクビットMASKが有効(“1”)であり、且つ、乗算命令MCが浮動小数点乗算を示す場合、選択回路12は、正規化丸め回路10の出力である仮数部MNT_FLを選択し、その仮数部MNT_FLと指数部EXP’とを連結する。これにより、浮動小数点乗算結果が生成される。一方、マスクビットMASKが有効であり、かつ、乗算命令MCが固定小数点乗算を示す場合、選択回路12は、固定小数点加算器8の出力である仮数部MNT_FXを選択し、その仮数部MNT_FXを固定小数点乗算結果とする。生成された浮動小数点乗算結果あるいは固定小数点乗算結果は、第1オペランドOP1と第2オペランドOP2との乗算の結果である。選択回路12は、その乗算の結果を示す結果データRESを出力する。ここで、マスクビットMASKが無効(“0”)を示す場合、選択回路12は、結果データRESの値を全て0に設定する。このように、マスクビットMASKによって、第1オペランドOP1と第2オペランドOP2との乗算はマスクされる。
2.乗算回路
次に、図2を参照して、本実施の形態に係る乗算回路4を詳しく説明する。上述の部分積生成回路41は、nビットの乗数(multiplier)とnビットの被乗数(multiplicand)との乗算を行う「乗算アレイ」である。上述の通り、乗数としては、第1オペランドOP1に関連する第1仮数部MNT1が入力され、被乗数としては、第2オペランドOP2に関連する第2仮数部MNT2が入力される。この乗算アレイにおいて、乗数の1つのビットと被乗数との乗算が行われ、1段の部分積(partial product)が生成される。乗数の全てのビットに関して乗算が行われることにより、n段の部分積が生成される。そのn段の部分積は、図2に示されるように、筆算の形に並べられる。このn段の部分積を加算することによって、積が求められる。
部分積生成回路41は、例えば64×64ビット乗算アレイ(n=64)である。従って、乗数及び被乗数として、64ビットの乗数及び被乗数を用意する必要がある。乗数及び被乗数のフォーマットは、オペランドのフォーマットに依存している。本実施の形態に係るベクトル乗算装置によれば、次の4つのフォーマットがサポートされている。
(1)64ビット固定小数点形式
図3は、64ビット固定小数点のフォーマットを示している。この場合、64ビットのオペランドの全てが、そのまま64ビットの仮数部MNT1又はMNT2となる。そして、その64ビットの仮数部MNT1及びMNT2が、乗数及び被乗数として乗算アレイに入力される。図4は、64ビット固定小数点の場合の乗算アレイを示している。64ビットの全てが有効桁であるため、未使用領域Rx(値が0に固定される領域)は存在せず、乗算アレイ中の全ての領域が有効領域Reとなる。図2に示された領域Ra〜Rdを参照すると、有効領域Reは「Re=Ra+Rb+Rc+Rd」と表される。
(2)32ビット固定小数点形式
図5は、32ビット固定小数点のフォーマットを示している。この場合、オペランドの有効桁は32ビットだけである。従って、有効桁32ビットの下位側に32ビット分の“0”が付け足され、それにより64ビットの仮数部MNT1又はMNT2が生成される。そして、その64ビットの仮数部MNT1及びMNT2が、乗数及び被乗数として乗算アレイに入力される。図6は、32ビット固定小数点の場合の乗算アレイを示している。この場合、有効桁は上位32ビットだけであり、乗算アレイのうち乗数及び被乗数の有効桁に対応する有効領域Reは「Re=Ra+Rb」と表される(図2参照)。それ以外の領域、すなわち、乗数又は被乗数の下位32ビットに対応する領域は、未使用領域Rxとなる。図6において、乗算アレイ全体の75%にあたる領域が未使用領域Rxである。
(3)倍精度浮動小数点形式
図7は、倍精度浮動小数点のフォーマットを示している。この場合、64ビットのオペランドは、符号S(1ビット)、指数E(11ビット)、及び仮数M(52ビット)を含んでいる。このうち符号Sと指数Eが指数部EXP1又はEXP2となる。一方、52ビットの仮数Mの先頭には隠しビット(hidden bit)“1”が付け足され、また、その下位側には11ビット分の“0”が付け足される。これにより、64ビットの仮数部MNT1又はMNT2が生成される。そして、その64ビットの仮数部MNT1及びMNT2が、乗数及び被乗数として乗算アレイに入力される。図8は、倍精度浮動小数点の場合の乗算アレイを示している。この場合、有効桁は上位53ビットであり、乗算アレイのうち乗数及び被乗数の有効桁に対応する有効領域Reは「Re=Ra+Rb+Rc」と表される(図2参照)。それ以外の領域、すなわち、乗数又は被乗数の下位11ビットに対応する領域は、未使用領域Rxとなる。図8において、乗算アレイ全体の約31%にあたる領域が未使用領域Rxである。
(4)単精度浮動小数点形式
図9は、単精度浮動小数点のフォーマットを示している。この場合、32ビットのオペランドは、符号S(1ビット)、指数E(8ビット)、及び仮数M(23ビット)を含んでいる。このうち符号Sと指数Eが指数部EXP1又はEXP2となる。一方、23ビットの仮数Mの先頭には隠しビット“1”が付け足され、また、その下位側には40ビット分の“0”が付け足される。これにより、64ビットの仮数部MNT1又はMNT2が生成される。そして、その64ビットの仮数部MNT1及びMNT2が、乗数及び被乗数として乗算アレイに入力される。図10は、単精度浮動小数点の場合の乗算アレイを示している。この場合、有効桁は上位24ビットであり、乗算アレイのうち乗数及び被乗数の有効桁に対応する有効領域Reは「Re=Ra」と表される(図2参照)。それ以外の領域、すなわち、乗数又は被乗数の下位40ビットに対応する領域は、未使用領域Rxとなる。図10において、乗算アレイ全体の約86%にあたる領域が未使用領域Rxである。
以上に説明されたように、フォーマットによって乗数及び被乗数の有効桁は変わる。すなわち、有効領域Re及び未使用領域Rxは、フォーマットに依存して変化する。
乗算回路4は、しばしばダイナミックCMOS回路で構成される。その場合、乗算アレイの未使用領域Rxにおいて、クロック信号CLKによって回路が常時動作する可能性がある。更に、後段の部分積加算器44においても、未使用領域Rxからの出力結果に対する加算処理が常時行われる可能性がある。これらのことは、消費電力の増大を招いてしまう。この消費電力の増大を抑えるため、本実施の形態によれば、フォーマットに応じて有効領域Reを活性化するイネーブル信号ENBが提供される。
より具体的には、図2を参照して、4種類のイネーブル信号ENB−a〜ENB−dが提供される。イネーブル信号ENB−a〜dは、それぞれ領域Ra〜Rdを活性化するための信号であり、それぞれ領域Ra〜Rdに入力される。イネーブル信号ENB−aが有効(“1”)の場合、領域Raは活性化され、その中の回路は動作する。一方、イネーブル信号ENB−aが無効(“0”)の場合、領域Raは非活性化され、その中の回路の動作は停止する。同様に、イネーブル信号ENB−b(ENB−c,ENB−d)が有効の場合、領域Rb(Rc,Rd)は活性化され、その中の回路は動作する。一方、イネーブル信号ENB−b(ENB−c,ENB−d)が無効の場合、領域Rb(Rc,Rd)は非活性化され、その中の回路の動作は停止する。
図4の場合(64ビット固定小数点)、イネーブル信号ENB−a〜ENB−dの全てが有効に設定される。図6の場合(32ビット固定小数点)、イネーブル信号ENB−a及びENB−bが有効に設定され、イネーブル信号ENB−c及びENB−dが無効に設定される。図8の場合(倍精度浮動小数点)、イネーブル信号ENB−a〜ENB−cが有効に設定され、イネーブル信号ENB−dが無効に設定される。図10の場合(単精度浮動小数点)、イネーブル信号ENB−aだけが有効に設定され、イネーブル信号ENB−b〜ENB−dが無効に設定される。
このようなイネーブル信号ENBの設定を行う回路が、図1及び図2に示される部分積制御回路42である。有効領域Reはフォーマットに依存しているため、部分積制御回路42は、そのフォーマットを指定する乗算命令MCを参照すればよい。すなわち、本実施の形態に係る部分積制御回路42は、乗算命令MCに応じてイネーブル信号ENB−a〜ENB−dのそれぞれの状態(有効/無効)を制御する。更に、部分積制御回路42は、乗算そのものを有効化/無効化する上述のマスクビットMASKを参照してもよい。マスクビットMASKが有効(“1”)を示す場合、部分積制御回路42は、乗算命令MCに基づいてイネーブル信号ENB−a〜ENBdの制御を行う。一方、マスクビットMASKが無効(“0”)を示す場合、部分積制御回路42は、乗算命令MCにかかわらずイネーブル信号ENB−a〜ENBdの全てを無効に設定する。これにより、乗算アレイの全ての領域が非活性化される。
図11は、本実施の形態に係るイネーブル信号ENB−a〜ENB−dを要約的に示している。図11に示されるように、イネーブル信号ENBは、乗算命令MCの論理和とマスクビットMCとの論理積で表される。
部分積制御回路42により生成されたイネーブル信号ENB−a〜ENB−dは、乗算アレイ中の対応する領域Ra〜Rdに供給される。本実施の形態に係る乗算アレイ41は、高速・大規模回路に好適なダイナミック回路により構成されている。図12は、乗算アレイ41の初段ダイナミック回路の構成を示している。
図12に示されるように、初段ダイナミック回路は、nMOS論理21、評価トランジスタ22、イネーブルスイッチ23、及びpMOS24を有している。評価トランジスタ22は、ゲートにクロック信号CLKが入力されるnMOSである。イネーブルスイッチ23は、上記イネーブル信号ENBによりON/OFFされるスイッチであり、例えば、ゲートにイネーブル信号ENBが入力されるnMOSである。このイネーブルスイッチ23は、電荷がチャージされるダイナミックノードNDとnMOS論理21との間でスイッチングを行う。また、nMOS論理21、評価トランジスタ22、及びイネーブルスイッチ23は、直列に接続されている。
まず、イネーブル信号ENBが有効(“1”)である場合を考える。この時、イネーブルスイッチ23はオンされ、ダイナミック回路は動作する。ダイナミック回路では、クロック信号CLKがLowのとき、pMOS24がオンし、評価トランジスタ22がオフする。その結果、ダイナミックノードNDは電源電圧Vddにプリチャージされる。クロック信号CLKがHighになると、pMOS24はオフし、評価トランジスタ22はオンになる。この時、nMOS論理21がオフになる論理入力が入力されていれば、ダイナミックノードNDの電位はVdd(High)のままである。しかし、nMOS論理21がオンになる論理入力が入力されていれば、ダイナミックノードNDに蓄えられた電荷がディスチャージされる。そして、ある時間の後、ダイナミックノードNDの電位は0V(Low)になる。このように、ダイナミック回路は、クロック信号CLKに応じて、ダイナミックノードNDのチャージ/ディスチャージを繰り返す。
一方、イネーブル信号ENBが無効(“0”)の場合、イネーブルスイッチ23はオフする。従って、初段ダイナミック回路のディスチャージ動作は完全に停止する。イネーブル信号ENBが無効である間は、初段ダイナミック回路の出力は必ずLowに保たれる。初段ダイナミック回路の出力(0)が入力される次段以降のダイナミック回路においては、nMOS論理段へ0が入力され、ディスチャージ動作が抑止される。このようにして、次段以降のダイナミック回路におけるディスチャージ動作が次々と抑止される。その結果、乗算アレイ(部分積生成回路)41の未使用領域Rx及びその後段におけるディスチャージ動作回数が減少する。従って、消費電力が低減される。
3.動作例
次に、既出の図面を適宜参照しながら、本実施の形態に係るベクトル乗算装置の動作例を説明する。
3−1.64ビット固定小数点数
図1において、前処理回路5、乗算回路4、及び選択回路12へ供給される乗算命令MCは、「64ビット固定小数点乗算」である。
前処理回路5は、ベクトルレジスタ1から第1オペランドOP1を受け取り、乗算命令MCに従って第1指数部EXP1及び第1仮数部MNT1を生成する。固定小数点乗算の場合、第1指数部EXP1は“0”である。また、第1仮数部MNT1は、図3に示されるように、第1オペランドOP1の64ビット全てに対応する。前処理回路5は、それら第1指数部EXP1及び第1仮数部MNT1を、それぞれ指数部加算器6及び乗算回路4に出力する。同様に、他の前処理回路5は、ベクトルレジスタ2から第2オペランドOP2を受け取り、第2指数部EXP2及び第2仮数部MNT2を、それぞれ指数部加算器6及び乗算回路4に出力する。
部分積制御回路42は、乗算命令MCとマスクビットMASKに基づいてイネーブル信号ENBを生成し、そのイネーブル信号ENBを部分積生成回路41に出力する。マスクビットMASKが有効ならば、図11に示されるように、イネーブル信号ENB−a〜ENB−dの全てが有効(“1”)に設定される。その結果、図2及び図4に示されるように、領域Ra〜Rdの全てが有効領域Reとなる。有効領域Reにおいて、初段ダイナミック回路中のイネーブルスイッチ23はオンし、初段ダイナミック回路は常時動作する。
部分積加算器44は、部分積生成回路41から出力される64個の部分積を2個になるまで加算する。そして、部分積加算器44は、最終的に得られた2個の部分積を浮動小数点加算器7及び固定小数点加算器8に出力する。固定小数点加算器8は、その2個の部分積の加算を行い、加算結果のうち有効桁の部分を選択回路12へ出力する。この固定小数点加算器8の出力が、固定小数点乗算結果RESとなる。選択回路12は、乗算命令MCに応じて、固定小数点加算器8の出力を選択し、固定小数点乗算結果RESを出力する。
3−2.32ビット固定小数点数
図1において、前処理回路5、乗算回路4、及び選択回路12へ供給される乗算命令MCは、「32ビット固定小数点乗算」である。
前処理回路5は、ベクトルレジスタ1から第1オペランドOP1を受け取り、乗算命令MCに従って第1指数部EXP1及び第1仮数部MNT1を生成する。ここで、前処理回路5は、図5に示されるように、第1オペランドOP1の有効桁32ビットの下位側に32ビットの“0”を付け足すことによって、64ビットの第1仮数部MNT1を生成する。また、固定小数点乗算の場合、第1指数部EXP1は“0”である。前処理回路5は、それら第1指数部EXP1及び第1仮数部MNT1を、それぞれ指数部加算器6及び乗算回路4に出力する。同様に、他の前処理回路5は、ベクトルレジスタ2から第2オペランドOP2を受け取り、第2指数部EXP2及び第2仮数部MNT2を、それぞれ指数部加算器6及び乗算回路4に出力する。
部分積制御回路42は、乗算命令MCとマスクビットMASKに基づいてイネーブル信号ENBを生成し、そのイネーブル信号ENBを部分積生成回路41に出力する。マスクビットMASKが有効ならば、図11に示されるように、イネーブル信号ENB−a及びENB−bが有効(“1”)に設定され、イネーブル信号ENB−c及びENB−dが無効(“0”)に設定される。その結果、図2及び図6に示されるように、領域Ra及びRbが有効領域Reとなる。有効領域Reにおいて、初段ダイナミック回路中のイネーブルスイッチ23はオンし、初段ダイナミック回路は常時動作する。一方、領域Rc及びRd(未使用領域Rx)において、初段ダイナミック回路中のイネーブルスイッチ23はオフする。その結果、領域Rc及びRdにおいて、初段ダイナミック回路のディスチャージ動作は完全に停止し、出力はLowに固定される。次段以降のダイナミック回路においても、ディスチャージ動作が抑止される。従って、部分積生成回路41の未使用領域Rx及び部分積加算器44におけるディスチャージ動作回数が減少し、消費電力が低減される。
部分積加算器44は、部分積生成回路41から出力される64個の部分積を2個になるまで加算する。そして、部分積加算器44は、最終的に得られた2個の部分積を浮動小数点加算器7及び固定小数点加算器8に出力する。固定小数点加算器8は、その2個の部分積の加算を行い、加算結果のうち有効桁の部分を選択回路12へ出力する。この固定小数点加算器8の出力が、固定小数点乗算結果RESとなる。選択回路12は、乗算命令MCに応じて、固定小数点加算器8の出力を選択し、固定小数点乗算結果RESを出力する。
3−3.倍精度浮動小数点数
図1において、前処理回路5、乗算回路4、及び選択回路12へ供給される乗算命令MCは、「倍精度浮動小数点乗算」である。
前処理回路5は、ベクトルレジスタ1から第1オペランドOP1を受け取り、乗算命令MCに従って第1指数部EXP1及び第1仮数部MNT1を生成する。ここで、前処理回路5は、図7に示されるように、符号S(1ビット)と指数E(11ビット)から第1指数部EXP1を生成する。また、前処理回路5は、52ビットの仮数Mに、隠しビット“1”及び11ビットの“0”を付け足すことによって、64ビットの第1仮数部MNT1を生成する。前処理回路5は、それら第1指数部EXP1及び第1仮数部MNT1を、それぞれ指数部加算器6及び乗算回路4に出力する。同様に、他の前処理回路5は、ベクトルレジスタ2から第2オペランドOP2を受け取り、第2指数部EXP2及び第2仮数部MNT2を、それぞれ指数部加算器6及び乗算回路4に出力する。
部分積制御回路42は、乗算命令MCとマスクビットMASKに基づいてイネーブル信号ENBを生成し、そのイネーブル信号ENBを部分積生成回路41に出力する。マスクビットMASKが有効ならば、図11に示されるように、イネーブル信号ENB−a〜ENB−cが有効(“1”)に設定され、イネーブル信号ENB−dが無効(“0”)に設定される。その結果、図2及び図8に示されるように、領域Ra〜Rcが有効領域Reとなる。有効領域Reにおいて、初段ダイナミック回路中のイネーブルスイッチ23はオンし、初段ダイナミック回路は常時動作する。一方、領域Rd(未使用領域Rx)において、初段ダイナミック回路中のイネーブルスイッチ23はオフする。その結果、領域Rdにおいて、初段ダイナミック回路のディスチャージ動作は完全に停止し、出力はLowに固定される。次段以降のダイナミック回路においても、ディスチャージ動作が抑止される。従って、部分積生成回路41の未使用領域Rx及び部分積加算器44におけるディスチャージ動作回数が減少し、消費電力が低減される。
部分積加算器44は、部分積生成回路41から出力される64個の部分積を2個になるまで加算する。そして、部分積加算器44は、最終的に得られた2個の部分積を浮動小数点加算器7及び固定小数点加算器8に出力する。浮動小数点加算器7は、その2個の部分積の加算を行い、その加算結果を0カウンタ9と正規化丸め回路10へ出力する。0カウンタ9は、浮動小数点加算器7の出力のうちMSBから連続するビット0の数をカウントし、そのカウント値(シフト数)を正規化丸め回路10と指数部補正回路11へ出力する。正規化丸め回路10は、0カウンタ9が出力するカウント値に基づいて、浮動小数点加算器7の出力の正規化及び丸めを行う。この正規化丸め回路10の出力が、浮動小数点乗算結果RESの仮数部MNT_FLとなる。
指数部加算器6は、前処理回路5から出力される指数部EXP1及びEXP2を受け取り、符号の判定及び指数同士の加算を行う。そして、指数部加算器6は、加算結果としての指数部EXPを指数部補正回路11に出力する。指数部補正回路11は、0カウンタ9が出力するカウント値に応じて指数部EXPの補正を行う。この指数部補正回路11の出力が、浮動小数点乗算結果RESの指数部EXP’となる。
選択回路12は、乗算命令MCに応じて、正規化丸め回路10(浮動小数点加算器7)から出力される仮数部MNT_FLを選択する。そして、選択回路12は、仮数部MNT_FL及び指数部EXP’を連結することにより、浮動小数点乗算結果RESを得る。
3−4.単精度浮動小数点数
図1において、前処理回路5、乗算回路4、及び選択回路12へ供給される乗算命令MCは、「単精度浮動小数点乗算」である。
前処理回路5は、ベクトルレジスタ1から第1オペランドOP1を受け取り、乗算命令MCに従って第1指数部EXP1及び第1仮数部MNT1を生成する。ここで、前処理回路5は、図9に示されるように、符号S(1ビット)と指数E(8ビット)から第1指数部EXP1を生成する。また、前処理回路5は、23ビットの仮数Mに、隠しビット“1”及び40ビットの“0”を付け足すことによって、64ビットの第1仮数部MNT1を生成する。前処理回路5は、それら第1指数部EXP1及び第1仮数部MNT1を、それぞれ指数部加算器6及び乗算回路4に出力する。同様に、他の前処理回路5は、ベクトルレジスタ2から第2オペランドOP2を受け取り、第2指数部EXP2及び第2仮数部MNT2を、それぞれ指数部加算器6及び乗算回路4に出力する。
部分積制御回路42は、乗算命令MCとマスクビットMASKに基づいてイネーブル信号ENBを生成し、そのイネーブル信号ENBを部分積生成回路41に出力する。マスクビットMASKが有効ならば、図11に示されるように、イネーブル信号ENB−aが有効(“1”)に設定され、イネーブル信号ENB−b〜ENB−dが無効(“0”)に設定される。その結果、図2及び図10に示されるように、領域Raだけが有効領域Reとなる。有効領域Reにおいて、初段ダイナミック回路中のイネーブルスイッチ23はオンし、初段ダイナミック回路は常時動作する。一方、領域Rb〜Rd(未使用領域Rx)において、初段ダイナミック回路中のイネーブルスイッチ23はオフする。その結果、領域Rb〜Rdにおいて、初段ダイナミック回路のディスチャージ動作は完全に停止し、出力はLowに固定される。次段以降のダイナミック回路においても、ディスチャージ動作が抑止される。従って、部分積生成回路41の未使用領域Rx及び部分積加算器44におけるディスチャージ動作回数が減少し、消費電力が低減される。
部分積加算器44は、部分積生成回路41から出力される64個の部分積を2個になるまで加算する。そして、部分積加算器44は、最終的に得られた2個の部分積を浮動小数点加算器7及び固定小数点加算器8に出力する。浮動小数点加算器7は、その2個の部分積の加算を行い、その加算結果を0カウンタ9と正規化丸め回路10へ出力する。0カウンタ9は、浮動小数点加算器7の出力のうちMSBから連続するビット0の数をカウントし、そのカウント値(シフト数)を正規化丸め回路10と指数部補正回路11へ出力する。正規化丸め回路10は、0カウンタ9が出力するカウント値に基づいて、浮動小数点加算器7の出力の正規化及び丸めを行う。この正規化丸め回路10の出力が、浮動小数点乗算結果RESの仮数部MNT_FLとなる。
指数部加算器6は、前処理回路5から出力される指数部EXP1及びEXP2を受け取り、符号の判定及び指数同士の加算を行う。そして、指数部加算器6は、加算結果としての指数部EXPを指数部補正回路11に出力する。指数部補正回路11は、0カウンタ9が出力するカウント値に応じて指数部EXPの補正を行う。この指数部補正回路11の出力が、浮動小数点乗算結果RESの指数部EXP’となる。
選択回路12は、乗算命令MCに応じて、正規化丸め回路10(浮動小数点加算器7)から出力される仮数部MNT_FLを選択する。そして、選択回路12は、仮数部MNT_FL及び指数部EXP’を連結することにより、浮動小数点乗算結果RESを得る。
3−5.マスクビット=無効
マスクビットMASKが無効の場合、全てのイネーブル信号ENB−a〜ENB−dが無効に設定される。その結果、乗算アレイの全ての領域Ra〜Rdにおいて、初段ダイナミック回路のディスチャージ動作は完全に停止する。従って、消費電力が低減される。また、選択回路12は、出力する結果データRESの値を全て0に設定する。このように、マスクビットMASKによって、第1オペランドOP1と第2オペランドOP2との乗算はマスクされる。
4.効果
本実施の形態によれば、乗算命令MCやマスクビットMASKに基づいて、複数種類のイネーブル信号ENB−a〜ENB−dの状態が制御される。これにより、オペランドのフォーマットに応じて、乗算アレイ41における未使用領域Rxを非活性化することが可能となる。より具体的には、その未使用領域Rxにおける初段ダイナミック回路のディスチャージ動作を完全に停止させることが可能となる。更に、ディスチャージ動作が停止した初段ダイナミック回路以降のダイナミック回路の動作も抑制される。従って、複数のフォーマットを扱う乗算装置の消費電力が低減される。
5.ベクトル演算装置
本発明は、乗算装置以外の演算装置にも適用され得る。例として、図13は、本発明が適用されたベクトル演算装置を示している。このベクトル演算装置は、浮動小数点形式や固定小数点形式といった複数種類のデータフォーマットをサポートしている。図13に示されるように、ベクトル乗算装置は、ベクトルレジスタ1、ベクトルレジスタ2、マスクレジスタ3、前処理回路5、演算制御回路101、浮動小数点演算器102、固定小数点演算器103、及び選択回路104を備えている。
ベクトルレジスタ1、ベクトルレジスタ2、及びマスクレジスタ3は、図1に示されたものと同様である。ベクトルレジスタ1には、演算対象である第1ベクトルデータが格納され、その第1ベクトルデータの各要素が第1オペランドOP1となる。ベクトルレジスタ2には、演算対象である第2ベクトルデータが格納され、その第2ベクトルデータの各要素が第2オペランドOP2となる。マスクレジスタ3には、ベクトルマスクデータが格納され、そのベクトルマスクデータの各要素がマスクビットMASKとなる。マスクビットMASKは、第1オペランドOP1と第2オペランドOP2との演算の有効/無効を示す。
前処理回路5は、オペランドのフォーマットを指定する演算命令OCを受け取る。そして、前処理回路5は、その演算命令OCに基づいて、第1オペランドOP1を、第1指数部EXP1と第1仮数部MNT1に分割する。また、他の前処理回路5は、演算命令OCに基づいて、第2オペランドOP2を、第2指数部EXP2と第2仮数部MNT2に分割する。これら指数部EXP1、EXP2、仮数部MNT1、MNT2は、浮動小数点演算器102及び固定小数点演算器103に供給される。
浮動小数点演算器102は、指数部EXP1、EXP2、仮数部MNT1、MNT2を用いて、浮動小数点演算を行う。この浮動小数点演算器102は、図1における乗算回路4、指数部加算器6、浮動小数点加算器7、0カウンタ9、正規化丸め回路10、及び指数部補正回路11に相当する。一方、固定小数点演算器103は、指数部EXP1、EXP2、仮数部MNT1、MNT2を用いて、固定小数点演算を行う。この固定小数点演算器103は、図1における乗算回路4及び固定小数点加算器8に相当する。これら浮動小数点演算器102及び固定小数点演算器103は、ダイナミック回路で構成されている。
各演算器102、103において演算が行われる演算対象の有効桁は、オペランドのフォーマットに依存する。オペランドのフォーマットによっては、各演算器102、103において、演算に用いられない未使用領域Rxが発生する。未使用領域Rx以外の領域、すなわち、演算対象の有効桁に対応する領域が、有効領域Reである。有効領域Re及び未使用領域Rxは、オペランドのフォーマットに依存して変化する。その有効領域Reを活性化し、未使用領域Rxを非活性化するために、イネーブル信号ENBが提供される。そのイネーブル信号ENBを生成し、演算器102、103に供給する回路が、演算制御回路101である。
演算制御回路101は、図1における部分積制御回路42に相当する。つまり、演算制御回路101は、演算命令OC及びマスクビットMASKに基づいて、イネーブル信号ENBの状態を制御する。演算命令OCはオペランドのフォーマットを示している。よって、演算制御回路101は、演算命令OCを参照することによって、有効領域Reに供給されるイネーブル信号ENBを有効に設定し、未使用領域Rxに供給されるイネーブル信号ENBを無効に設定することができる。また、マスクビットMASKが無効を示す場合、演算制御回路101は、全てのイネーブル信号ENBを無効に設定する。
イネーブル信号ENBは、演算器102、103が有する初段ダイナミック回路に供給される。その初段ダイナミック回路は、図12に示されるように、イネーブル信号ENBによってON/OFFするイネーブルスイッチ23を有している。イネーブル信号ENBが無効の場合、イネーブルスイッチ23はオフし、ディスチャージ動作は完全に停止する。すなわち、未使用領域Rxは非活性化され、初段ダイナミック回路におけるディスチャージ動作は完全に停止する。
選択回路104は、図1における選択回路12に相当する。この選択回路104は、マスクレジスタ3、浮動小数点演算器102、及び固定小数点演算器103に接続されている。選択回路104は、浮動小数点演算器102から浮動小数点演算結果を受け取り、固定小数点演算器103から固定小数点演算結果を受け取る。マスクビットMASKが有効であり、且つ、演算命令OCが浮動小数点演算を示している場合、選択回路104は、浮動小数点演算結果を選択する。マスクビットMASKが有効であり、且つ、演算命令OCが固定小数点演算を示している場合、選択回路104は、固定小数点演算結果を選択する。そして、選択回路104は、選択された演算結果を示す演算結果データRESを出力する。また、マスクビットMASKが無効の場合、選択回路104は、出力する結果データRESの値を全て0に設定する。このように、マスクビットMASKによって、第1オペランドOP1と第2オペランドOP2との演算はマスクされる。
以上に説明されたように、本発明によれば、演算命令OCやマスクビットMASKに応じて、イネーブル信号ENBの状態が制御される。これにより、オペランドのフォーマットに応じて、演算器102、103における未使用領域Rxを非活性化することが可能となる。より具体的には、その未使用領域Rxにおける初段ダイナミック回路のディスチャージ動作を完全に停止させることが可能となる。更に、ディスチャージ動作が停止した初段ダイナミック回路以降のダイナミック回路の動作も抑制される。従って、複数のフォーマットを扱う演算装置の消費電力が低減される。
図1は、本発明の実施の形態に係るベクトル乗算装置の構成を示すブロック図である。 図2は、本実施の形態に係る乗算回路を説明するための図である。 図3は、64bit固定小数点のフォーマットを示す概念図である。 図4は、64bit固定小数点の場合の乗算アレイを示す概念図である。 図5は、32bit固定小数点のフォーマットを示す概念図である。 図6は、32bit固定小数点の場合の乗算アレイ示す概念図である。 図7は、倍精度浮動小数点のフォーマットを示す概念図である。 図8は、倍精度浮動小数点の場合の乗算アレイを示す概念図である。 図9は、単精度浮動小数点のフォーマットを示す概念図である。 図10は、単精度浮動小数点の場合の乗算アレイを示す概念図である。 図11は、本実施の形態に係るイネーブル信号を示す図である。 図12は、乗算アレイの初段ダイナミック回路の構成を示す回路図である。 図13は、本発明の実施の形態に係るベクトル演算装置の構成を示すブロック図である。
符号の説明
1,2 ベクトルレジスタ
3 マスクレジスタ
4 乗算回路
5 前処理回路
6 指数部加算器
7 浮動小数点加算器
8 固定小数点加算器
9 0カウンタ
10 正規化丸め回路
11 指数部補正回路
12 選択回路
21 nMOS論理
22 評価トランジスタ
23 イネーブルスイッチ
41 部分積生成回路(乗算アレイ)
42 部分積制御回路
43 デコーダ
44 部分積加算器
101 演算制御回路
102 浮動小数点演算器
103 固定小数点演算器
104 選択回路
ENB イネーブル信号
EXP1 第1指数部
EXP2 第2指数部
MASK マスクビット
MC 乗算命令
MNT1 第1仮数部
MNT2 第2仮数部
OC 演算命令
OP1 第1オペランド
OP2 第2オペランド
Re 有効領域
Rx 未使用領域

Claims (13)

  1. nビット(nは自然数)の乗数とnビットの被乗数との乗算を行うことによって部分積を生成する乗算アレイと、
    前記生成された部分積を加算する加算器と、
    前記乗算の有効/無効を示すマスクビットが格納されるマスクレジスタと、
    前記乗算アレイのうち前記乗数及び前記被乗数の有効桁に対応する有効領域を活性化するイネーブル信号を生成する部分積制御回路と
    を備え、
    前記有効桁は、前記乗数及び前記被乗数のフォーマットに依存し、
    前記部分積制御回路は、前記フォーマットを指定する乗算命令及び前記マスクビットに応じて前記イネーブル信号の状態を制御し、
    前記マスクビットが無効を示す場合、前記部分積制御回路は、前記イネーブル信号を全て無効に設定する
    乗算装置。
  2. 請求項1に記載の乗算装置であって、
    前記乗算アレイはダイナミック回路で構成され、
    前記乗算アレイの初段ダイナミック回路は、前記イネーブル信号によりオン/オフされるスイッチを有し、
    前記イネーブル信号が無効の場合、前記スイッチはオフされ、前記ダイナミック回路のディスチャージ動作は停止する
    乗算装置。
  3. 請求項1又は2に記載の乗算装置であって、
    前記イネーブル信号は、
    前記乗算アレイのうち第1領域を活性化する第1イネーブル信号と、
    前記乗算アレイのうち第2領域を活性化する第2イネーブル信号と
    を含み、
    前記乗数及び前記被乗数のフォーマットが第1フォーマットである場合、
    前記有効領域は、前記第1領域であり、
    前記部分積制御回路は、前記第1イネーブル信号を有効に設定し、前記第2イネーブル信号を無効に設定し、
    前記乗数及び前記被乗数のフォーマットが第2フォーマットである場合、
    前記有効領域は、前記第1領域及び前記第2領域であり、
    前記部分積制御回路は、前記第1イネーブル信号及び前記第2イネーブル信号を有効に設定する
    乗算装置。
  4. 請求項1乃至3のいずれかに記載の乗算装置であって、
    前記フォーマットは、単精度浮動小数点形式、倍精度浮動小数点形式、32ビット固定小数点形式、及び64ビット固定小数点形式を含む
    乗算装置。
  5. 請求項1乃至4のいずれかに記載の乗算装置であって、
    第1オペランドが格納される第1レジスタと、
    第2オペランドが格納される第2レジスタと、
    第1前処理回路と、
    第2前処理回路と
    を更に備え、
    前記第1前処理回路は、前記乗算命令に従って前記第1オペランドを指数部と仮数部に分割し、前記第1オペランドの仮数部を前記乗数として前記乗算アレイに出力し、
    前記第2前処理回路は、前記乗算命令に従って前記第2オペランドを指数部と仮数部に分割し、前記第2オペランドの仮数部を前記被乗数として前記乗算アレイに出力する
    乗算装置。
  6. 請求項に記載の乗算装置であって、
    前記第1レジスタ、前記第2レジスタ、及び前記マスクレジスタは、ベクトルデータが格納されるベクトルレジスタであり、
    前記第1オペランドは、前記第1レジスタに格納される第1ベクトルデータの各要素であり、
    前記第2オペランドは、前記第2レジスタに格納される第2ベクトルデータの各要素であり、
    前記マスクビットは、前記マスクレジスタに格納されるベクトルマスクデータの各要素であり、前記第1オペランド及び前記第2オペランドに対応付けられている
    乗算装置。
  7. 請求項又はに記載の乗算装置であって、
    前記加算器の出力及び前記マスクビットを受け取る選択回路を更に備え、
    前記選択回路は、前記加算器の出力に基づいて、前記第1オペランドと前記第2オペランドとの乗算の結果を示す結果データを生成し、
    前記マスクビットが無効を示す場合、前記選択回路は、前記結果データの値を0に設定する
    乗算装置。
  8. 請求項に記載の乗算装置であって、
    前記加算器は、
    固定小数点形式で前記部分積を加算する固定小数点加算器と、
    浮動小数点形式で前記部分積を加算する浮動小数点加算器と
    を含み、
    前記選択回路は、更に前記乗算命令を受け取り、
    前記マスクビットが有効を示す場合、前記選択回路は、前記乗算命令に応じて前記固定小数点加算器及び前記浮動小数点加算器のいずれかの出力を選択し、前記選択された出力に基づいて前記結果データを生成する
    乗算装置。
  9. ダイナミック回路で構成され、乗数と被乗数との乗算を行うことによって部分積を生成する乗算アレイと、
    前記生成された部分積を加算する加算器と、
    前記乗算の有効/無効を示すマスクビットが格納されるマスクレジスタと、
    前記乗算アレイを活性化するイネーブル信号の状態を、前記マスクビットに基づいて制御する部分積制御回路と
    を備え、
    前記マスクビットが無効を示す場合、前記部分積制御回路は、前記イネーブル信号を無効に設定し、
    前記乗算アレイの初段ダイナミック回路は、前記イネーブル信号によりオン/オフされるスイッチを有し、
    前記イネーブル信号が無効の場合、前記スイッチはオフされ、前記ダイナミック回路のディスチャージ動作は停止する
    乗算装置。
  10. 請求項に記載の乗算装置であって、
    第1オペランドが格納される第1レジスタと、
    第2オペランドが格納される第2レジスタと、
    前記第1オペランドの仮数部を前記乗数として前記乗算アレイに出力する第1前処理回路と、
    前記第2オペランドの仮数部を前記被乗数として前記乗算アレイに出力する第2前処理回路と
    を更に備え、
    前記第1レジスタ、前記第2レジスタ、及び前記マスクレジスタは、ベクトルデータが格納されるベクトルレジスタであり、
    前記第1オペランドは、前記第1レジスタに格納される第1ベクトルデータの各要素であり、
    前記第2オペランドは、前記第2レジスタに格納される第2ベクトルデータの各要素であり、
    前記マスクビットは、前記マスクレジスタに格納されるベクトルマスクデータの各要素であり、前記第1オペランド及び前記第2オペランドに対応付けられている
    乗算装置。
  11. 第1オペランドが格納される第1レジスタと、
    第2オペランドが格納される第2レジスタと、
    前記第1オペランドと前記第2オペランドを用いて演算を行う演算器と、
    前記演算の有効/無効を示すマスクビットが格納されるマスクレジスタと、
    前記演算器のうち前記第1オペランド及び前記第2オペランドの有効桁に対応する有効領域を活性化するイネーブル信号を生成する演算制御回路と
    を備え、
    前記有効桁は、前記第1オペランド及び前記第2オペランドのフォーマットに依存し、
    前記演算制御回路は、前記フォーマットを指定する演算命令及び前記マスクビットに応じて前記イネーブル信号の状態を制御し、
    前記マスクビットが無効を示す場合、前記演算制御回路は、前記イネーブル信号を無効に設定する
    演算装置。
  12. 請求項11に記載の演算装置であって、
    前記演算器はダイナミック回路で構成され、
    前記演算器の初段ダイナミック回路は、前記イネーブル信号によりオン/オフされるスイッチを有し、
    前記イネーブル信号が無効の場合、前記スイッチはオフされ、前記ダイナミック回路のディスチャージ動作は停止する
    演算装置。
  13. 請求項11又は12に記載の演算装置であって、
    前記第1レジスタ、前記第2レジスタ、及び前記マスクレジスタは、ベクトルデータが格納されるベクトルレジスタであり、
    前記第1オペランドは、前記第1レジスタに格納される第1ベクトルデータの各要素であり、
    前記第2オペランドは、前記第2レジスタに格納される第2ベクトルデータの各要素であり、
    前記マスクビットは、前記マスクレジスタに格納されるベクトルマスクデータの各要素であり、前記第1オペランド及び前記第2オペランドに対応付けられている
    演算装置。
JP2006046184A 2006-02-23 2006-02-23 乗算装置、及び演算装置 Expired - Fee Related JP4355705B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006046184A JP4355705B2 (ja) 2006-02-23 2006-02-23 乗算装置、及び演算装置
US11/709,784 US8041758B2 (en) 2006-02-23 2007-02-23 Multiplier and arithmetic unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006046184A JP4355705B2 (ja) 2006-02-23 2006-02-23 乗算装置、及び演算装置

Publications (2)

Publication Number Publication Date
JP2007226489A JP2007226489A (ja) 2007-09-06
JP4355705B2 true JP4355705B2 (ja) 2009-11-04

Family

ID=38445303

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006046184A Expired - Fee Related JP4355705B2 (ja) 2006-02-23 2006-02-23 乗算装置、及び演算装置

Country Status (2)

Country Link
US (1) US8041758B2 (ja)
JP (1) JP4355705B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010238011A (ja) * 2009-03-31 2010-10-21 Nec Computertechno Ltd ベクトル乗算処理装置および方法ならびにプログラム
JP5010648B2 (ja) * 2009-08-03 2012-08-29 エヌイーシーコンピュータテクノ株式会社 演算装置及び演算方法
US10042606B2 (en) * 2016-05-03 2018-08-07 Altera Corporation Fixed-point and floating-point arithmetic operator circuits in specialized processing blocks
US20230297336A1 (en) * 2022-03-18 2023-09-21 Arm Limited Multiple multiplication arrays

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6149234A (ja) 1984-08-16 1986-03-11 Toshiba Corp 浮動小数点乗算回路
JPH05150870A (ja) 1991-05-20 1993-06-18 Fujitsu Ltd 演算回路の消費電力低減方式
JPH0540605A (ja) 1991-08-02 1993-02-19 Toshiba Corp 浮動小数点乗算装置
JPH07248895A (ja) 1994-03-10 1995-09-26 Mitsubishi Electric Corp 半導体集積回路、半導体記憶装置、半導体一時記憶装置及び半導体演算装置
JP3433588B2 (ja) 1995-10-19 2003-08-04 株式会社デンソー マスクデータ生成回路及びビットフィールド操作回路
JP3526135B2 (ja) 1996-05-24 2004-05-10 株式会社ルネサステクノロジ ディジタル信号処理装置
JPH10326129A (ja) * 1997-05-23 1998-12-08 Mitsubishi Electric Corp 半導体装置
JPH10333886A (ja) 1997-05-30 1998-12-18 Sony Corp 浮動小数点の乗算回路
US6065032A (en) 1998-02-19 2000-05-16 Lucent Technologies Inc. Low power multiplier for CPU and DSP
US7418606B2 (en) * 2003-09-18 2008-08-26 Nvidia Corporation High quality and high performance three-dimensional graphics architecture for portable handheld devices

Also Published As

Publication number Publication date
US8041758B2 (en) 2011-10-18
JP2007226489A (ja) 2007-09-06
US20070203964A1 (en) 2007-08-30

Similar Documents

Publication Publication Date Title
US5963461A (en) Multiplication apparatus and methods which generate a shift amount by which the product of the significands is shifted for normalization or denormalization
EP3374853B1 (en) Multiplication of first and second operands using redundant representation
EP1934710B1 (en) Floating-point processor with selectable subprecision
JP4418578B2 (ja) 第1、第2、第3オペランドに浮動小数点演算を適用するためのデータ処理装置および方法
US8990282B2 (en) Apparatus and method for performing fused multiply add floating point operation
KR100994862B1 (ko) 선택가능한 하위 정밀도에 대하여 감소된 전력 요구조건들을 가지는 부동 소수점 프로세서
US6401194B1 (en) Execution unit for processing a data stream independently and in parallel
US7720900B2 (en) Fused multiply add split for multiple precision arithmetic
US5426600A (en) Double precision division circuit and method for digital signal processor
KR100203468B1 (ko) 부동소수점수를 위한 산술연산장치
WO2017081435A1 (en) Lane position information for processing of vector
US9720646B2 (en) Redundant representation of numeric value using overlap bits
US5301139A (en) Shifter circuit for multiple precision division
JP4355705B2 (ja) 乗算装置、及び演算装置
US5247471A (en) Radix aligner for floating point addition and subtraction
JP2000057126A (ja) 浮動小数点演算器
GB2262638A (en) Digital system multiplication.
US9928031B2 (en) Overlap propagation operation
Lang et al. Division unit for binary integer decimals
US11704092B2 (en) High-precision anchored-implicit processing
US11586701B2 (en) Low-power adder circuit
JPWO2002029546A1 (ja) 演算器及びそれを用いた電子回路装置
WO1998006029A1 (en) Apparatus and methods for execution of computer instructions
JPH04314126A (ja) 逆数発生装置
CN114691088A (zh) 包括由具有三个操作数引用的指令可驱动的双乘双加运算符的处理器

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090423

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4355705

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120807

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130807

Year of fee payment: 4

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees