JP2022162183A - 演算装置および演算方法 - Google Patents

演算装置および演算方法 Download PDF

Info

Publication number
JP2022162183A
JP2022162183A JP2021066868A JP2021066868A JP2022162183A JP 2022162183 A JP2022162183 A JP 2022162183A JP 2021066868 A JP2021066868 A JP 2021066868A JP 2021066868 A JP2021066868 A JP 2021066868A JP 2022162183 A JP2022162183 A JP 2022162183A
Authority
JP
Japan
Prior art keywords
mantissa
exponent
shift circuit
circuit
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
JP2021066868A
Other languages
English (en)
Inventor
一広 阿部
Kazuhiro Abe
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 JP2021066868A priority Critical patent/JP2022162183A/ja
Priority to US17/573,027 priority patent/US20220326911A1/en
Publication of JP2022162183A publication Critical patent/JP2022162183A/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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying

Abstract

【課題】積和演算を実行する演算装置において、桁合わせシフト回路の回路遅延を低減する。【解決手段】演算装置は、第1および第2浮動小数点数データの第1および第2指数を加算して得られる第3指数の下位nビット(nは1以上の整数)を0に設定して第4指数を生成する切り下げ回路と、第3指数の下位nビットの値で示されるビット数分、第1および第2浮動小数点数データの第1および第2仮数を乗算して得られる第3仮数を左シフトして第4仮数を生成する第1シフト回路と、第4仮数の2のn乗のビット毎に誤り検出符号を生成する誤り符号生成回路と、第4指数と第5指数との差に基づいて第4仮数と第5仮数との桁合わせを実行し、桁合わせ後の仮数に対応する指数を第5指数として出力する第2シフト回路と、桁合わせ後の第4仮数および第5仮数を加算し、加算結果を第5仮数として出力する第2加算器と、を有する。【選択図】図1

Description

本発明は、演算装置および演算方法に関する。
複数バイトを含むデータをバイト単位でシフトした後、さらにビット単位でシフトすることで、任意のビット数をシフト可能なシフト回路が知られている。この種のシフト回路では、データがバイト毎にパリティを含む場合、データをバイト単位でシフトすることで、シフト後のパリティの予測回路が不要になる(例えば、特許文献1参照)。
また、浮動小数点数データを加算する加算器において、浮動小数点数データから変換した固定小数点数データを使用して加算を実行し、加算結果を浮動小数点数データに変換する手法が知られている(例えば、特許文献2参照)。
特開昭61-148527号公報 特開2016-157299号公報
ところで、浮動小数点積和演算器等の演算装置において、乗算結果を順次足し込む処理を実行する場合、桁合わせシフト回路により乗算結果の仮数と前回の加算結果の仮数とが桁合わせされた後、加算回路による加算が実行される。桁合わせでの仮数のビットシフト数は、乗算結果の指数の前回の加算結果の指数との差分により決まる任意の値である。このため、桁合わせシフト回路には、桁合わせした仮数のパリティを生成するパリティ生成回路が設けられる。桁合わせシフト回路が、積和演算のためのループ経路に含まれる場合、パリティ生成回路等の桁合わせシフト回路の回路遅延は、演算装置の演算時間の増大に影響しやすい。
1つの側面では、本発明は、積和演算を実行する演算装置において、桁合わせシフト回路の回路遅延を低減することを目的とする。
一つの観点によれば、演算装置は、第1浮動小数点数データと第2浮動小数点数データとを乗算し、乗算結果を順次足し合わせる演算装置であって、前記第1浮動小数点数データの第1指数と前記第2浮動小数点数データの第2指数とを加算して第3指数を生成する第1加算器と、前記第1浮動小数点数データの第1仮数と前記第2浮動小数点数データの第2仮数とを乗算して第3仮数を生成する乗算器と、前記第3指数の下位nビット(nは1以上の整数)を0に設定して第4指数を生成する切り下げ回路と、前記第3指数の下位nビットの値で示されるビット数分、前記第3仮数を左シフトして第4仮数を生成する第1シフト回路と、前記第4仮数の2のn乗のビット毎に誤り検出符号を生成する誤り符号生成回路と、前記第4指数と第5指数との差に基づいて前記第4仮数と第5仮数との桁合わせを実行し、桁合わせ後の仮数に対応する指数を前記第5指数として出力する第2シフト回路と、桁合わせ後の第4仮数および第5仮数を加算し、加算結果を前記第5仮数として出力する第2加算器と、を有する。
積和演算を実行する演算装置において、桁合わせシフト回路の回路遅延を低減することができる。
一実施形態における演算装置の一例を示すブロック図である。 別の実施形態における演算装置の一例を示すブロック図である。 図1の左シフト回路が生成する仮数の例を示す説明図である。 図2の桁合わせシフト回路の一例を示すブロック図である。 図4の右シフト回路の例を示すブロック図である。 他の演算装置の一例を示すブロック図である。 図6の桁合わせシフト回路の一例を示す説明図である。 図7の右シフト回路の一例を示すブロック図である。 図8のシフト回路212aの一例を示す回路図である。 図8のシフト回路212aの動作の一例を示す説明図である。 別の実施形態における演算装置の一例を示すブロック図である。
以下、図面を参照して、実施形態が説明される。
図1は、一実施形態における演算装置の一例を示す。図1に示す演算装置100は、例えば、浮動小数点数データの積和演算を実行する積和演算器であり、プロセッサ等に搭載される。演算装置100は、オペランドOP1、OP2を乗算し、乗算結果を順次足し込む処理を実行することで、演算方法を実現する。
演算装置100は、レジスタ10、12、加算器14、乗算器16、切り下げ回路18、パリティ予測回路20、左シフト回路22、桁合わせシフト回路24および加算器26を有する。加算器14は、第1加算器の一例である。左シフト回路22は、第1シフト回路の一例である。桁合わせシフト回路24は、第2シフト回路の一例である。加算器26は、第2加算器の一例である。
レジスタ10、12は、演算対象のオペランドOP1、OP2を保持する。オペランドOP1は、指数E1と仮数F1とを含む。オペランドOP2は、指数E2と仮数F2とを含む。なお、各オペランドOP1、OP2には、仮数F1、F2の所定数のビット毎にパリティデータが付加されてもよい。
例えば、IEEE(The Institute of Electrical and Electronics Engineers)754(浮動小数点数演算標準)の倍精度浮動小数点数フォーマットを使用する場合、指数E1、E2は、11ビットであり、仮数F1、F2は、52ビットであり、符号ビットが1ビットである。IEEE754の単精度浮動小数点数フォーマットを使用する場合、指数E1、E2は、8ビットであり、仮数F1、F2は、23ビットであり、符号ビットが1ビットである。なお、以下の説明では、正値が扱われるとし、符号ビットは省略する。
加算器14は、指数E1、E2の加算を実行し、加算結果を指数E3として出力する。乗算器16は、仮数F1、F2の乗算を実行し、乗算結果を仮数F3として出力する。なお、乗算器16は、乗算結果の仮数F3に、所定数のビット毎にパリティデータを付加してもよい。また、乗算器16は、レシジュチェック方式により保護されてもよい。
切り下げ回路18は、加算器14からの指数E3の下位nビットを0に設定することで、指数E3の切り下げ処理を実行する。なお、nは1以上の整数であればよい。nは、パリティ予測回路20による各パリティDPの生成に使用される仮数F3のビット数2に対応して決められる。以下の説明では、nが2ビットであるとする。
パリティ予測回路20は、指数E3の下位2ビットで示される全てのビット値0、1、2、3で仮数F3を左シフトした場合に生成される4通りの仮数F4について4ビット(2ビット)毎にパリティDPを生成する。パリティ予測回路20は、生成したパリティDPを左シフト回路22に出力する。以下では、パリティDPの生成単位である2ビットのデータ(仮数)の各々は、ディジットと称される。例えば、データの2ビットは、下位ビット側から第1ディジット、第2ディジット、第3ディジット、...と称される。
左シフト回路22は、指数E3の下位2ビットのビット値(0から3のいずれか)だけ仮数F3の各ビットを左シフトする。これにより、切り下げ回路18で切り下げられた指数E3の下位2ビットのビット値に応じて仮数F3を増加させることができる。換言すれば、指数E3に対する指数E4の減少分を仮数F3に対する仮数F4の増加分として相殺することができ、指数F4と仮数F5とで示される浮動小数点数データを、指数E3と仮数F3とで示される浮動小数点数データと同じにすることができる。
また、左シフト回路22は、パリティ予測回路20により生成された4通りの仮数F4に対応するパリティDPのうち、指数E3の下位2ビットのビット値に対応するパリティDPを選択する。そして、左シフト回路22は、選択したパリティDPを仮数F4内に埋め込む。パリティ予測回路20と、左シフト回路22において4通りの仮数F4に対応するパリティDPから正しいパリティDPを選択する機能部とは、誤り符号生成回路の一例である。パリティDPは、誤り検出符号の一例である。
桁合わせシフト回路24は、指数E4および仮数F4で示される浮動小数点数データと、指数E5および仮数F5で示される浮動小数点数データとの桁合わせを実行し、桁合わせ後の仮数F4、F5と指数E5とを出力する。加算器26は、桁合わせシフト回路24により桁合わせされた仮数F4、F5の加算を実行し、加算結果を新たな仮数F5として出力する。例えば、加算器26は、仮数F4、F5の加算結果である新たな仮数F5に対応するパリティDPを予測する図示しないパリティ予測回路を含む。加算器26に含まれるパリティ予測回路は、加算器26による加算動作と並列に動作するため、ディレイペナルティは少ない。
例えば、桁合わせシフト回路24は、指数E4、E5のうち値が小さい指数に対応する仮数を、指数E4、E5の差の絶対値だけ右シフトする右シフト回路25を有する。桁合わせシフト回路24は、指数E4、E5のうち、大きい指数を指数E5として出力する。
右シフト回路25は、指数E4>指数E5の場合、仮数F5を指数E4-指数E5だけ右シフトする。右シフト回路25は、指数E4<指数E5の場合、仮数F4を指数E5-E4だけ右シフトする。右シフト回路25は、指数E4=指数E5の場合、右シフトを実行せずに仮数F4、F5を加算器26に出力する。
指数E4は、切り下げ回路18による切り下げにより下位2ビットが0である。指数E5は、下位2ビットが0に設定された指数E4に基づいて生成されるため、下位2ビットは0である。このため、右シフト回路25によるシフト量を常に4ビット単位(2単位)にすることができる。
例えば、右シフト回路25により仮数F4がシフトされた場合、シフト後の仮数に対するパリティDPは、パリティ予測回路20により生成されたパリティDPをそのまま使用することができる。また、右シフト回路25により仮数F5がシフトされた場合、シフト後の仮数に対するパリティDPは、後述する加算器26により生成されたパリティDPをそのまま使用することができる。
したがって、右シフト回路25によるシフト後の仮数に対応するパリティDPを予測するパリティ予測回路を省くことができる。桁合わせシフト回路24にパリティ予測回路を搭載する場合、パリティ予測回路が予測したパリティDPは、右シフト回路25に供給される。このため、パリティ予測回路を搭載する桁合わせシフト回路は、パリティ予測回路を搭載しない桁合わせシフト回路24に比べて、右シフト回路25のビットシフト時間が長くなってしまう。
この実施形態では、桁合わせシフト回路24へのパリティ予測回路の搭載が不要になるため、桁合わせシフト回路24の回路遅延を低減することができる。例えば、右シフト回路25によるビットシフト時間を短縮することができる。この結果、仮数F4、F5の桁合わせ時間を短縮することができ、積和演算に掛かる時間を短縮することができる。演算時間の短縮効果は、積和演算の回数が多いほど高くなる。
図2は、別の実施形態における演算装置の一例を示す。図1と同様の要素については、詳細な説明は省略する。図2に示す演算装置102は、図1の演算装置100と同様に、浮動小数点数データの積和演算を実行する積和演算器である。すなわち、演算装置102は、積和演算の演算方法を実現する。この実施形態では、パリティDPは、仮数F3の4ビット(2ビット;nは2)毎に生成されるとする。
演算装置102は、レジスタ110、112、加算器114、乗算器116、切り下げ回路118、パリティ予測回路120、左シフト回路122および中間レジスタ123を有する。また、演算装置102は、桁合わせシフト回路200、加算器126、ループバックレジスタ127および正規化シフト回路128を有する。中間レジスタ123およびループバックレジスタ127は、クロックサイクルを区切るために配置される。
レジスタ110、112、加算器114および乗算器116の機能は、図1のレジスタ10、12、加算器14および乗算器16の機能と同様である。切り下げ回路118、パリティ予測回路120、左シフト回路122および加算器126の機能は、図1の切り下げ回路18、パリティ予測回路20、左シフト回路22および加算器26の機能と同様である。例えば、左シフト回路122は、指数E3の下位2ビットのビット値(0から3のいずれか)だけ仮数F3の各ビットを左シフトする。左シフト回路122が生成する仮数F4の例は、図3に示される。
中間レジスタ123は、切り下げ回路118から出力される指数E4と左シフト回路122から出力される仮数F4とを保持し、保持した指数E4および仮数F4を桁合わせシフト回路200に出力する。桁合わせシフト回路200の機能は、図1の桁合わせシフト回路24の機能と同様である。桁合わせシフト回路200の例は、図4に示される。ループバックレジスタ127は、桁合わせシフト回路200からの指数E5と、加算器126からの仮数F5とを保持し、保持した指数E5および仮数F5を桁合わせシフト回路200および正規化シフト回路128に出力する。
正規化シフト回路128は、仮数F5の丸め処理を実行するとともに、仮数F5の最上位ビットの1つ上に暗黙の1があるとして仮数F5を表現する。また、正規化シフト回路128は、丸め処理に応じて指数E5を調整する。そして、正規化シフト回路128は、正規化した指数E5と仮数F5とを演算結果として出力する。
図3は、図2の左シフト回路122が生成する仮数F4の例を示す。図3では、説明を分かりやすくするため、仮数F3、F4のうちの下位の16ビットを抜き出している。パリティDPは、仮数F3、F4の4ビット毎に付加されるとする。この場合、左シフト回路122は、指数E3の下位2ビットのビット値(0から3のいずれか)と同じ数だけ仮数F3を左ビットシフトすることで、仮数F4を生成する。また、パリティ予測回路120により予測されたパリティDP(4つのビットシフト量に対応する4つDP3、4つのDP2、4つのDP1、4つのDP0)からビットシフト量に対応するパリティDP3-DP0を選択する。
シフト量が0ビットの場合、仮数F4の各4ビットとパリティDPとの対応は、仮数F3の各4ビットとパリティDPとの対応と同じである。シフト量が1、2、3ビットの場合、仮数F4に対応するパリティDPと、仮数F3に対応するパリティDPとは異なる。このため、左シフト回路122は、パリティ予測回路20により予測されるパリティDPからビットシフト量に応じたパリティDPを選択する。
図3の0ビットシフトから3ビットシフト後の仮数F4を示す領域において、長円の破線は、仮数F4中の4ビットにそれぞれ対応するパリティDP(DP3-PD0)が生成されることを示す。図2のパリティ予測回路120は、図3に16個の長円に対応して16個のパリティDPの予測値を生成する。そして、左シフト回路122は、上述したように、16個のパリティDPのうち、ビットシフト量に応じた4個のパリティDPを選択して、仮数F4に含ませる。
図4は、図2の桁合わせシフト回路200の一例を示すブロック図である。桁合わせシフト回路200は、比較器201、差分器202、入れ替えセレクタ203、右シフト回路204およびセレクタ205を有する。
比較器201は、中間レジスタ123からの指数E4とループバックレジスタ127からの指数E5との大小を比較し、比較結果をセレクタ205および入れ替えセレクタ203に出力する。差分器202は、中間レジスタ123からの指数E4とループバックレジスタ127からの指数E5との差分を絶対値として算出し、算出した差分を右シフト回路204に出力する。ここで、指数E4、E5は、いずれも下位ビットが0のため、差分器202が出力する差分の下位2ビットも0になる。
入れ替えセレクタ203は、比較器201による比較結果に基づいて、仮数F4、F5のうち、指数E4、E5が小さい仮数を右シフト回路204に出力し、指数E4、E5が大きい仮数を加算器126に出力する。なお、入れ替えセレクタ203は、指数E4、E5が等しい場合、仮数F4、F5の入れ替えを実行せずに、右シフト回路204と加算器126とにそれぞれ出力する。
右シフト回路204は、入れ替えセレクタ203から供給される仮数(F4またはF5)を、差分器202からの差分が示すビット数だけ右シフトし、右シフトした仮数を加算器126に出力する。右シフト回路204は、ビットシフト回路の一例である。ここで、差分器202から出力される差分の下位2ビットは0であるため、右シフト量は、4の倍数になる。したがって、右シフト後の仮数に対応するパリティDPは、新たに生成することなく、右シフト前の仮数に対応するパリティDPを利用することができる。この結果、右シフト回路204に対応するパリティ予測回路を設けなくてよいため、右シフト回路204によるシフト動作を、パリティ予測回路を設ける場合に比べて高速に実行することができる。
セレクタ205は、比較器201による比較結果に基づいて、指数E4、E5のうち大きい指数を新たな指数E5として出力する。ここで、指数E4、E5は、いずれも下位ビットが0のため、セレクタ205が出力する新たな指数E5の下位2ビットも0になる。
図5は、図4の右シフト回路204の例を示すブロック図である。図5では、例えば、64ビットのデータR[63:0]の4ビット毎にパリティDP[15:0]を生成する例と、64ビットのデータR[63:0]の8ビット毎にパリティDP[7:0]を生成する例とが示される。データRは仮数Fに対応する。符号SAは、0ビットから63ビットのシフト量を示すシフト量信号を示し、図4の差分器202から出力される差分に対応する。
4ビット毎にパリティDPを生成する場合(n=2)、図2の左シフト回路122により指数E3の下位2ビットのビット値と同じ数だけ予め左シフトされている。このため、シフト量信号SA[1:0]は、常に00であり、データR1[63:0]を0ビット、1ビット、2ビットまたは3ビット右シフトするシフト回路(後述する図8に示すシフト回路212a等)を不要にすることができる。
初段のシフト回路204aは、左シフト回路122により生成された仮数F4またはループバックレジスタ127に保持された仮数F5をそのまま受ける。そして、シフト回路204aは、シフト量信号SA[3:2]に応じて、4:1セレクタを使用して、データR1[63:0]を0ビット、4ビット、8ビットまたは12ビット右シフトする。
2段目のシフト回路204bは、シフト量信号SA[5:4]に応じて、4:1セレクタを使用して、シフト回路204aから出力されるデータを0ビット、16ビット、32ビットまたは48ビット右シフトする。これにより、右シフト回路204は、シフト量信号SA[5:0]に応じて、4・p(pは、0以上の整数)ビットを右シフトし、データR[63:0]およびパリティDP[15:0]を生成することができる。なお、データR[63:0]の4ビットと各パリティDPとの対応関係は変わらないため、パリティDP[15:0]は、新たに生成されず、再利用される。
8ビット毎にパリティDPを生成する場合(n=3)、図2の左シフト回路122に対応する左シフト回路により指数E3の下位3ビットのビット値と同じ数だけ予め左シフトされている。このため、シフト量信号SA[2:0]は、常に000である。初段のシフト回路204cは、シフト量信号SA[4:3]に応じて、4:1セレクタを使用して、データR1[63:0]およびパリティRP1[7:0]を0ビット、8ビット、16ビットまたは24ビット右シフトする。
2段目のシフト回路204dは、シフト量信号SA[5]に応じて、2:1セレクタを使用して、シフト回路204cから出力されるデータを0ビットまたは32ビット右シフトする。これにより、右シフト回路204は、シフト量信号SA[5:0]に応じて8・p(pは、0以上の整数)ビットを右シフトし、データR[63:0]およびパリティDP[7:0]を生成することができる。なお、データR[63:0]の8ビットと各パリティDPとの対応関係は変わらないため、パリティDP[7:0]は、新たに生成されず、再利用される。
図5に示すように、例えば、桁合わせシフト回路200内で4ビット毎にパリティDPを生成する右シフト回路204を、2段のシフト回路204a、204bにより構成することができる。同様に、桁合わせシフト回路200内で8ビット毎にパリティDPを生成する右シフト回路204を、2段のシフト回路204c、204dにより構成することができる。右シフト回路204は、シフト量信号SA[2:0]に対応するシフト回路を省略できるため、シフト回路1段分の高速化を実現することができる。
以上、この実施形態においても、上述した実施形態と同様に、桁合わせシフト回路200へのパリティ予測回路の搭載を不要にできるため、桁合わせシフト回路200の回路遅延を低減することができる。さらに、この実施形態では、右シフト回路204において、データR1[63:0]を0ビット、1ビット、2ビットまたは3ビット右シフトするシフト回路を不要にすることができる。このため、右シフト回路204によるシフト動作に掛かる時間を、シフト回路の1段分短縮することができ、桁合わせシフト回路200の回路遅延をさらに低減することができる。
この結果、演算装置102による浮動小数点積和演算を高速に実行することができ、演算装置102の性能を向上することができる。例えば、中間レジスタ123からループバックレジスタ127までのクリティカルパスの遅延時間を削減することで、演算装置102のクロック周波数を高くすることが可能になる。
図6は、他の演算装置の一例を示すブロック図である。図2と同様の要素については、同じ符号を付し、詳細な説明は省略する。図6に示す演算装置104は、図2の切り下げ回路118、パリティ予測回路120および左シフト回路122を持たない。このため、加算器114から出力される指数E3および乗算器116から出力される仮数F3は、指数E4および仮数F4として中間レジスタ123に保持される。また、演算装置104は、図2の桁合わせシフト回路200の代わりに桁合わせシフト回路210を有する。演算装置104のその他の構成は、図2の演算装置102の構成と同様である。
中間レジスタ123に格納される指数E4は、加算器114による指数E1、E2の加算結果であり、指数E4の下位2ビットは、0から3のいずれかである。同様に、ループバックレジスタ127に格納される指数E5は、1ビット単位で桁合わせされた結果であり、指数E5の下位2ビットは、0から3のいずれかである。
図7は、図6の桁合わせシフト回路210の一例を示すブロック図である。図4と同様の要素については、同じ符号を付し、詳細な説明は省略する。桁合わせシフト回路210は、図4の桁合わせシフト回路200の右シフト回路204の代わりに右シフト回路212およびパリティ予測回路213を有する。また、桁合わせシフト回路210に供給される指数E4、E5の下位2ビット、差分器202から出力される差分の下位2ビット、および、セレクタ205から出力される指数E5の下位2ビットは、0から3のいずれかである。
このため、右シフト回路212は、差分器202から出力される差分に応じて、例えば、0ビットから63ビットまで1ビット単位で右ビットシフトする。右ビットシフトが4ビット単位で実行されないため、桁合わせシフト回路210は、パリティ予測回路213により、右ビットシフト後の仮数に対するパリティDPを予測する。
図8は、図7の右シフト回路212の一例を示すブロック図である。図5と同様の要素については、詳細な説明は省略する。図8は、例えば、64ビットのデータR[63:0]の4ビット毎にパリティDP[15:0]を生成する例が示される。右シフト回路212は、3段構成のシフト回路212a、212b、212cを有する。シフト回路212b、212cの機能は、図5のシフト回路204a、204bの機能とそれぞれ同じである。
シフト回路212aは、シフト量信号SA[1:0]に応じて、4:1セレクタを使用して、データD[63:0]を0ビット、1ビット、2ビットまたは3ビット右シフトする。すなわち、シフト回路212aは、シフト量信号SA[1:0]に応じて、データD[63:0]をq(qは、0から3のいずれか)ビットを右シフトし、データR1[63:0]として出力する。
また、シフト回路212aは、シフト量に応じたデータR1[63:0]に各4ビットに対応するパリティDP[15:0]をパリティ予測回路213から出力されるパリティDPから選択する。そして、シフト回路212aは、データR1[63:0]およびパリティRP1[15:0]をシフト回路212bに出力する。
このように、シフト回路212aによる右シフト量が4ビット単位でない場合、シフト回路212aによるシフト後のデータR1[63:0]に付加するパリティDPを予測するパリティ予測回路213が設けられる。これにより、パリティ生成のための遅延ペナルティが発生する。また、右シフト回路212には、図5に比べて1段多いシフト回路212a、212b、212cが搭載される。このため、シフト量信号SA[5:0]に応じた右シフト動作に掛かる時間が、図5の右シフト回路204に比べて長くなる。
図9は、図8のシフト回路212aの一例を示す回路図である。図9では、シフト回路212aのうち、第3ディジット(R1[15:12]、RP1[3])に対応する4:1セレクタの例が示される。各4:1セレクタは、シフト量信号SA[1:0]のビット値に対応する入力を選択し、データR1[15:12]およびパリティRP1[3]として出力する。例えば、シフト量信号SA[1:0]のビット値が01の場合、5つの4:1セレクタは、データD[16:13]およびパリティDP[1]をデータR1[15:12]およびパリティRP1[3]として出力する。
図10は、図8のシフト回路212aの動作の一例を示す。図3と同様の動作については、詳細な説明は省略する。図10では、1ビット右シフトの例と、3ビット右シフトの例が示される。
シフト回路212aは、シフト量信号SA[1:0]=01の場合、各ビットを1ビットずつ右シフトし、最上位ビットに0を挿入し、最下位ビットを追い出す。また、シフト回路212aは、シフト後の各ディジット(4ビット)に対応して、パリティ予測回路213が予測したパリティDPから対応するパリティDPを選択する。
シフト回路212aは、シフト量信号SA[1:0]=11の場合、各ビットを3ビットずつ右シフトし、最上位の3ビットに0を挿入し、最下位の3ビットを追い出す。また、シフト回路212aは、シフト後の各ディジット(4ビット)に対応して、パリティ予測回路213が予測したパリティDPから対応するパリティDPを選択する。
図11は、別の実施形態における演算装置の一例を示す。図4と同様の要素については、同じ符号を付し、詳細な説明は省略する。図11に示す演算装置106は、加算器114から出力される指数E3と乗算器116から出力される仮数F3とを保持する中間レジスタ130を有する。そして、演算装置106は、積和演算の演算方法を実現する。
切り下げ回路118は、中間レジスタ130に保持された指数E3の下位2ビットを0に設定することで、指数E3の切り下げ処理を実行する。左シフト回路122は、中間レジスタ130に保持された指数E3の下位2ビットのビット値(0から3のいずれか)だけ、中間レジスタ130に保持された仮数F3の各ビットを左シフトする。
なお、下位2ビットは、パリティ予測回路120による各パリティDPの生成に使用される仮数F3のビット数4(=2)のnに対応する。このため、切り下げ回路118が0に設定する指数E3の下位のビット数は、2ビットに限定されず、パリティ予測回路120による各パリティDPの生成に使用される仮数F3のビット数2に対応して、nに決められてもよい。
例えば、中間レジスタ130は、乗算器116による乗算時間と、パリティ予測回路120および左シフト回路122による動作時間との和が、乗算器116による仮数F1、F2の乗算に掛かるクロックサイクル時間を超える場合に配置される。これにより、クロック周波数を下げることなく、乗算器116と中間レジスタ123との間に、パリティ予測回路120および左シフト回路122を配置することができる。
これに対して、中間レジスタ130を配置しない場合、乗算器116による乗算時間と、パリティ予測回路120および左シフト回路122による回路遅延時間との和は、乗算器116による仮数F1、F2の乗算に掛かるクロックサイクル時間に含まれる。このため、乗算器116による乗算時間と、パリティ予測回路120および左シフト回路122による動作時間との和を、乗算器116による仮数F1、F2の乗算に掛かるクロックサイクル時間以内にする場合、クロック周波数を下げる必要がある。この場合、ループ経路に含まれる桁合わせシフト回路200の回路遅延の低減効果が、クロック周波数の低下により打ち消されるおそれがあり、演算装置106の性能は低下するおそれがある。
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、この実施形態では、パリティ予測回路120および左シフト回路122の回路遅延時間に応じて中間レジスタ130を配置することで、クロック周波数を下げることなく、上述した桁合わせシフト回路200の機能を実現することができる。この結果、演算装置106による浮動小数点積和演算を高速に実行することができ、演算装置106の性能を向上することができる。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
10、12 レジスタ
14 加算器
16 乗算器
18 切り下げ回路
20 パリティ予測回路
22 左シフト回路
24 桁合わせシフト回路
25 右シフト回路
26 加算器
100、102、104、106 演算装置
110、112 レジスタ
114 加算器
116 乗算器
118 切り下げ回路
120 パリティ予測回路
122 左シフト回路
123 中間レジスタ
126 加算器
127 ループバックレジスタ
128 正規化シフト回路
130 中間レジスタ
200 桁合わせシフト回路
201 比較器
202 差分器
203 入れ替えセレクタ
204 右シフト回路
204a、204b、204c、204d シフト回路
205 セレクタ
210 桁合わせシフト回路
212 右シフト回路
213 パリティ予測回路
DP パリティ
SA シフト量信号

Claims (4)

  1. 第1浮動小数点数データと第2浮動小数点数データとを乗算し、乗算結果を順次足し合わせる演算装置であって、
    前記第1浮動小数点数データの第1指数と前記第2浮動小数点数データの第2指数とを加算して第3指数を生成する第1加算器と、
    前記第1浮動小数点数データの第1仮数と前記第2浮動小数点数データの第2仮数とを乗算して第3仮数を生成する乗算器と、
    前記第3指数の下位nビット(nは1以上の整数)を0に設定して第4指数を生成する切り下げ回路と、
    前記第3指数の下位nビットの値で示されるビット数分、前記第3仮数を左シフトして第4仮数を生成する第1シフト回路と、
    前記第4仮数の2のn乗のビット毎に誤り検出符号を生成する誤り符号生成回路と、
    前記第4指数と第5指数との差に基づいて前記第4仮数と第5仮数との桁合わせを実行し、桁合わせ後の仮数に対応する指数を前記第5指数として出力する第2シフト回路と、
    桁合わせ後の第4仮数および第5仮数を加算し、加算結果を前記第5仮数として出力する第2加算器と、
    を有する演算装置。
  2. 前記第2シフト回路は、前記第1シフト回路により生成された前記第4仮数または前記第5仮数を、前記2のn乗のビットを単位としてビットシフトするビットシフト回路を有する
    請求項1に記載の演算装置。
  3. 前記第1加算器から出力される前記第3指数および前記乗算器から出力される前記第3仮数を保持し、保持した前記第3指数を前記切り下げ回路に出力し、保持した第3仮数を前記第1シフト回路に出力するレジスタを有する
    請求項1または請求項2に記載の演算装置。
  4. 第1浮動小数点数データと第2浮動小数点数データとを乗算し、乗算結果を順次足し合わせる演算方法であって、
    前記第1浮動小数点数データの第1指数と前記第2浮動小数点数データの第2指数とを加算して第3指数を生成し、
    前記第1浮動小数点数データの第1仮数と前記第2浮動小数点数データの第2仮数とを乗算して第3仮数を生成し、
    前記第3指数の下位nビット(nは1以上の整数)を0に設定して第4指数を生成し、
    前記第3指数の下位nビットの値で示されるビット数分、前記第3仮数を左シフトして第4仮数を生成し、
    前記第4仮数の2のn乗のビット毎に誤り検出符号を生成し、
    前記第4指数と第5指数との差に基づいて前記第4仮数と第5仮数との桁合わせを実行し、桁合わせ後の仮数に対応する指数を前記第5指数として出力し、
    桁合わせ後の第4仮数および第5仮数を加算し、加算結果を前記第5仮数として出力する
    演算方法。
JP2021066868A 2021-04-12 2021-04-12 演算装置および演算方法 Pending JP2022162183A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021066868A JP2022162183A (ja) 2021-04-12 2021-04-12 演算装置および演算方法
US17/573,027 US20220326911A1 (en) 2021-04-12 2022-01-11 Product-sum calculation device and product-sum calculation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021066868A JP2022162183A (ja) 2021-04-12 2021-04-12 演算装置および演算方法

Publications (1)

Publication Number Publication Date
JP2022162183A true JP2022162183A (ja) 2022-10-24

Family

ID=83510775

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021066868A Pending JP2022162183A (ja) 2021-04-12 2021-04-12 演算装置および演算方法

Country Status (2)

Country Link
US (1) US20220326911A1 (ja)
JP (1) JP2022162183A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240033565A (ko) * 2022-09-05 2024-03-12 리벨리온 주식회사 뉴럴 프로세싱 장치, 그에 포함되는 프로세싱 엘리먼트 및 뉴럴 프로세싱 장치의 다양한 포맷 연산 방법

Also Published As

Publication number Publication date
US20220326911A1 (en) 2022-10-13

Similar Documents

Publication Publication Date Title
CN105468331B (zh) 独立的浮点转换单元
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
US9608662B2 (en) Apparatus and method for converting floating-point operand into a value having a different format
JP7115211B2 (ja) 演算処理装置および演算処理装置の制御方法
WO2022170809A1 (zh) 一种适用于多精度计算的可重构浮点乘加运算单元及方法
CN109901813B (zh) 一种浮点运算装置及方法
JP5640081B2 (ja) 飽和を伴う整数乗算および乗算加算演算
CN111752526A (zh) 浮点相加
US9059726B2 (en) Apparatus and method for performing a convert-to-integer operation
JP2022162183A (ja) 演算装置および演算方法
US10310809B2 (en) Apparatus and method for supporting a conversion instruction
US7401107B2 (en) Data processing apparatus and method for converting a fixed point number to a floating point number
JPH04355827A (ja) 開平演算装置
CN108153513B (zh) 前导零预测
US20200183650A1 (en) Radix-1000 decimal floating-point numbers and arithmetic units using a skewed representation of the fraction
US5710730A (en) Divide to integer
US20200133633A1 (en) Arithmetic processing apparatus and controlling method therefor
TWI804043B (zh) 多輸入多輸出的累加器及其執行方法
US20040049528A1 (en) Apparatus and method for adding multiple-bit binary-strings
CN107533462B (zh) 浮点运算装置以及方法
JP3100868B2 (ja) 浮動小数点数のための算術演算装置
US20190155573A1 (en) Handling floating-point operations
CN114327360A (zh) 运算单元、浮点数计算的方法、装置、芯片和计算设备
KR20070105415A (ko) 부호화를 이용하는 곱셈 장치 및 그 방법
JPH05313861A (ja) 開平演算装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240111