JP5811175B2 - 演算処理装置及び演算処理方法 - Google Patents

演算処理装置及び演算処理方法 Download PDF

Info

Publication number
JP5811175B2
JP5811175B2 JP2013514951A JP2013514951A JP5811175B2 JP 5811175 B2 JP5811175 B2 JP 5811175B2 JP 2013514951 A JP2013514951 A JP 2013514951A JP 2013514951 A JP2013514951 A JP 2013514951A JP 5811175 B2 JP5811175 B2 JP 5811175B2
Authority
JP
Japan
Prior art keywords
data
normalization
cycle
maximum
rounded
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
JP2013514951A
Other languages
English (en)
Other versions
JPWO2012157132A1 (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 Corp
Original Assignee
NEC Corp
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 Corp filed Critical NEC Corp
Priority to JP2013514951A priority Critical patent/JP5811175B2/ja
Publication of JPWO2012157132A1 publication Critical patent/JPWO2012157132A1/ja
Application granted granted Critical
Publication of JP5811175B2 publication Critical patent/JP5811175B2/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
    • 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
    • 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/49942Significance control

Landscapes

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

Description

本発明は、演算処理装置及び演算処理方法に関し、特にブロック浮動小数点処理を行う演算処理装置及び演算処理方法に関する。
ディジタル信号処理において、浮動小数点による演算は、扱う信号データの値の範囲が広い場合でも高い精度で演算できるという利点がある。一方で、複雑な回路が必要になるため、回路規模や消費電力が大きいという問題がある。また、固定小数点による演算は、回路が単純で、回路規模や消費電力が小さいという利点がある一方で、演算精度が低いという問題がある。
これに対し、浮動小数点と固定小数点の双方の利点を兼ね備えた演算方法として、ブロック浮動小数点による演算がある。ブロック浮動小数点による演算では、複数の信号データを1つのブロックとしてまとめ、各ブロック単位で共通の指数をもつように、ブロック全体で正規化する。
より詳細には、ブロック浮動小数点処理において、次のステップでブロック浮動小数点の正規化処理を行う(例えば、特許文献1、特許文献2)。
(1)ブロック内の全データの最大指数を求める。
(2)前記最大指数によりブロック全体をシフト(正規化)する。
ここで最大指数とは、ブロック内の全てのデータが桁あふれを起こさない最大の指数を示す。最大指数はブロック内の全データのうち、絶対値が最大のデータの指数値に等しい。
特開平9−128213号公報 特開平8−212052号公報
以下に、通常のブロック浮動小数点の正規化処理の具体例を説明する。図5は、ブロック浮動小数点の正規化処理を行う通常の演算処理装置200の構成を示すブロック図である。演算処理装置200は、第1の演算回路201、正規化回路202、データメモリ回路203、丸め回路241〜243及び第2の演算回路204を有する。
第1の演算回路201は、受け取った3つの入力データに対して演算を行い、演算結果をそれぞれデータD211〜D213として出力する。第1の演算回路201には、1つのブロックを構成する異なる入力データが順次入力される。例えば、図5においては、第1の演算回路201は、ブロックを構成する9個の入力データを受け取る。この場合、第1の演算回路201は、3つの入力データを、3つのサイクルに分けて受けとる。そして、第1の演算回路201は、受け取った入力データに対して演算を行い、演算結果であるデータD211〜D213を3サイクルに分けて出力する。入力データは、例えば、外部装置(図示せず)から第1の演算回路201に順次出力される。
正規化回路202は、最大指数算出回路210及びシフト回路221〜223を有する。最大指数算出回路210は、第1の演算回路201から順次出力される、ブロックを構成するデータD211〜D213を受け取り、1つのブロックに属するデータD211〜D213の最大指数Imaxを算出する。すなわち、第1の演算回路201からブロックを受け取るごとに、最大指数Imaxの算出動作を行う。そして、最大指数算出回路210は、算出した最大指数Imaxを出力する。
データメモリ回路203は、第1の演算回路201からデータD211〜D213を受け取り、最大指数算出回路210がブロックに属するデータD211〜D213の最大指数Imaxを算出している間、同じブロックに属するデータD211〜D213を保持する。すなわち、データメモリ回路203は、データD211〜D213をブロック単位で保持する。具体的には、データメモリ回路203は、外部から受け取る書き込みアドレスAw21〜Aw23に対応するアドレスに、データD211〜D213のそれぞれを格納して保持する。
そして、データメモリ回路203は、最大指数算出回路210が最大指数Imaxの算出を完了した後、保持しているデータD211〜D213を、データD221〜D223として出力する。このとき、データメモリ回路203は、データD211〜D213の順番を並べ替えて、データD221〜D223として出力することが可能である。具体的には、データメモリ回路203は、外部から受け取る読み出しアドレスAr21〜Ar23に対応するアドレスに保持しているデータを、それぞれデータD221〜D223として出力する。
データメモリ回路203に入力する書き込みアドレスAw21〜Aw23及び読み出しアドレスAr21〜Ar23は、例えば、外部装置(図示せず)からデータメモリ回路203に順次出力される。
正規化回路202のシフト回路221〜223は、データメモリ回路203からデータD221〜D223を受け取る。そして、シフト回路221〜223は、最大指数算出回路210が算出した最大指数Imaxに基づいて、D221〜D223のそれぞれをシフトさせる。これにより、データD221〜D223は正規化処理がなされる。シフト回路221〜223は、正規化処理後のデータを、データD231〜D233として出力する。
丸め回路241〜243のそれぞれは、シフト回路221〜223からデータD231〜D233を受け取る。そして、丸め回路241〜243は、データD231〜D233のそれぞれに対して丸め処理を行い、データのビット幅が削減されたデータD241〜D243を出力する。
第2の演算回路204は、丸め回路241〜243からデータD241〜D243を受け取る。そして、第2の演算回路204は、データD241〜D243のそれぞれに対して演算を行い、演算結果を出力データとして外部装置(不図示)へ出力する。
以上より、演算処理装置200は、丸め回路241〜243の丸め処理により、データのビット幅を削減するので、第1の演算回路201が出力するデータD211〜D213のビット幅よりも、第2の演算回路が受け取るデータD241〜D243のビット幅を小さくすることができる。
続いて、演算処理装置200の動作について詳述する。図6は、演算処理装置200の動作を示すタイミングチャートである。以下では、演算処理装置200の処理対象となるブロックは、12ビットのデータであるデータD1〜D9により構成される。また、データD1〜D9の値は、2の補数表現で示される。なお、データのビット列において、最も左のビットがMSB(Most Significant Bit)であり、最も右のビットがLSB(Least Significant Bit)である。MSBは、符号ビットを示す。
演算処理装置200の動作は、サイクルC1〜C6からなる。また、演算処理装置200の動作は、サイクルC1〜C3とサイクルC4〜C6とに大別される。以下では、まず、サイクルC1〜C3について説明する。サイクルの進行は、例えばクロック信号CLKを用いて制御される。
第1の演算回路201は、サイクルC1において、3つの入力データに対して演算を行い、その結果をそれぞれデータD211〜D213として出力する。このとき出力されるデータD211〜D213を、それぞれデータD1〜D3と表記する。次いで、第1の演算回路201は、サイクルC2において、3つの入力データに対して演算を行い、その結果をそれぞれデータD211〜D213として出力する。このとき出力されるデータD211〜D213を、それぞれデータD4〜D6と表記する。次いで、第1の演算回路201は、サイクルC3において、3つの入力データに対して演算を行い、その結果をそれぞれデータD211〜D213として出力する。このとき出力されるデータD211〜D213を、それぞれデータD7〜D9と表記する。以下に、データD1〜D9を例示する。
データD1(サイクルC1、データD211):000101110111
データD2(サイクルC1、データD212):001100010001
データD3(サイクルC1、データD213):000001101100
データD4(サイクルC2、データD211):111100111000
データD5(サイクルC2、データD212):111110000000
データD6(サイクルC2、データD213):000000100101
データD7(サイクルC3、データD211):000010111110
データD8(サイクルC3、データD212):000011010001
データD9(サイクルC3、データD213):000010111001
最大指数算出回路210は、ブロックを構成するデータD1〜D9を逐次受けとる。そして、最大指数算出回路210は、データD1〜D9の最大指数を算出する。具体的には、最大指数算出回路210は、データD1〜D9のそれぞれの絶対値を算出する。以下に、データD1〜D9のそれぞれの絶対値ABS1〜ABS9を示す。
絶対値ABS1(データD1の絶対値):000101110111
絶対値ABS2(データD2の絶対値):001100010001
絶対値ABS3(データD3の絶対値):000001101100
絶対値ABS4(データD4の絶対値):000011001000
絶対値ABS5(データD5の絶対値):000010000000
絶対値ABS6(データD6の絶対値):000000100101
絶対値ABS7(データD7の絶対値):000010111110
絶対値ABS8(データD8の絶対値):000011010001
絶対値ABS9(データD9の絶対値):000010111001
次に、最大指数算出回路210は、絶対値ABS1〜ABS9の論理和ADDを算出する。以下に、絶対値ABS1〜ABS9の論理和を示す。
論理和ADD(絶対値ABS1〜ABS9の論理和):001111111111
次に、最大指数算出回路210は、論理和ADDのMSB(Most Significant Bit)側から見て最初にビットの値が1となるビット位置を検出する。この例では、論理和ADDのMSB側から見て最初にビットの値が1となる、9ビット目を検出する(ここで、MSBを11ビット目、LSB(Least Significant Bit)を0ビット目とする)。
ここで、データD1〜D9を共通の指数で正規化するために、データD1〜D9を同一のシフト量で左にビットシフトする場合について検討する。この場合、シフト量が1ビットであれば、データD1〜D9の符号はいずれも変化せずに、正規化後の値が正しく表現される。したがって、この場合の最大指数Imaxは「−1」である。
サイクルC1〜C3の間、すなわち最大指数算出回路210がデータD1〜D9の最大指数Imaxを算出している間、データメモリ回路203は、データD1〜D9を受け取って保持する。そして、最大指数算出回路210が最大指数Imaxの算出を完了した後のサイクルC4〜C6で、データメモリ回路203は、保持していたデータD1〜D9を、データD221〜D223として出力する。このとき、データメモリ回路203は、第2の演算回路204が行う演算に供するため、データD221〜D223を、例えば以下の要領で出力する。
サイクルC1において、データメモリ回路203は、書き込みアドレスAw21〜Aw23により指定されたアドレスA1〜A3に、データD1〜D3のそれぞれを格納する。また、サイクルC2において、データメモリ回路203は、書き込みアドレスAw21〜Aw23により指定されたアドレスA4〜A6に、データD4〜D6のそれぞれを格納する。また、サイクルC3において、データメモリ回路203は、書き込みアドレスAw21〜Aw23により指定されたアドレスA7〜A9に、データD7〜D9のそれぞれを格納する。
続いて、サイクルC4〜C6について説明する。サイクルC4〜C6では、最大指数算出回路210は、算出した最大指数Imaxである「−1」を、シフト回路221〜223に出力する。
サイクルC4において、データメモリ回路203は、読み出しアドレスAr21により指定されたアドレスA1に保持しているデータD1を、データD221として出力する。また、データメモリ回路203は、読み出しアドレスAr22により指定されたアドレスA3に保持しているデータD3を、データD222として出力する。さらに、データメモリ回路203は、読み出しアドレスAr23により指定されたアドレスA5に保持しているデータD5を、データD223として出力する。
サイクルC5において、データメモリ回路203は、読み出しアドレスAr21により指定されたアドレスA2に保持しているデータD2を、データD221として出力する。また、データメモリ回路203は、読み出しアドレスAr22により指定されたアドレスA4に保持しているデータD4を、データD222として出力する。さらに、データメモリ回路203は、読み出しアドレスAr23により指定されたアドレスA7に保持しているデータD7を、データD223として出力する。
サイクルC6において、データメモリ回路203は、読み出しアドレスAr21により指定されたアドレスA6に保持しているデータD6を、データD221として出力する。また、データメモリ回路203は、読み出しアドレスAr22により指定されたアドレスA8に保持しているデータD8を、データD222として出力する。さらに、データメモリ回路203は、読み出しアドレスAr23により指定されたアドレスA9に保持しているデータD9を、データD223として出力する。
シフト回路221〜223のそれぞれは、最大指数Imaxの値「−1」に基づいて、データD221〜D223として出力されるデータD1〜D9をシフトして、正規化処理を行う。シフト回路221〜223は、正規化処理によりデータD1〜D9から生成された正規化データND1〜ND9を出力する。
具体的には、サイクルC4において、シフト回路221〜223のそれぞれは、データD221〜D223として出力されたデータD1、D3及びD5を、最大指数Imaxの値「−1」に基づいてシフトする。これにより、正規化データND1、ND3及びND5が生成される。正規化データND1、ND3及びND5は、それぞれデータD231〜D233として出力される。
サイクルC5において、シフト回路221〜223のそれぞれは、データD221〜D223として出力されたデータD2、D4及びD7を、最大指数Imaxの値「−1」に基づいてシフトする。これにより、正規化データND2、ND4及びND7が生成される。正規化データND2、ND4及びND7は、それぞれデータD231〜D233として出力される。
サイクルC6において、シフト回路221〜223のそれぞれは、データD221〜D223として出力されたデータD6、D8及びD9を、最大指数Imaxの値「−1」に基づいてシフトする。これにより、正規化データND6、ND8及びND9が生成される。正規化データND6、ND8及びND9は、それぞれデータD231〜D233として出力される。
以下に、正規化データND1〜ND9を示す。
(サイクルC4)
正規化データND1:001011101110
正規化データND3:000011011000
正規化データND5:111100000000
(サイクルC5)
正規化データND2:011000100010
正規化データND4:111001110000
正規化データND7:000101111100
(サイクルC6)
正規化データND6:000001001010
正規化データND8:000110100010
正規化データND9:000101110010
丸め回路241〜243のそれぞれは、サイクルC4〜C6において、データD241〜D243として出力される正規化データND1〜ND9に対して、丸め処理を行う。これにより、正規化データND1〜ND9のビット幅を6ビットに削減した丸めデータRD1〜RD9を生成する。
具体的には、サイクルC4において、丸め回路241〜243のそれぞれは、データD231〜D233として出力された正規化データND1、ND3及びND5を丸め、丸めデータRD1、RD3及びRD5を生成する。丸めデータRD1、RD3及びRD5は、それぞれデータD241〜D243として出力される。
サイクルC5において、丸め回路241〜243のそれぞれは、データD231〜D233として出力された正規化データND2、ND4及びND7を丸め、丸めデータRD2、RD4及びRD7を生成する。丸めデータRD2、RD4及びRD7は、それぞれデータD241〜D243として出力される。
サイクルC6において、丸め回路241〜243のそれぞれは、データD231〜D233として出力された正規化データND6、ND8及びND9を丸め、丸めデータRD6、RD8及びRD9を生成する。丸めデータRD6、RD8及びRD9は、それぞれデータD241〜D243として出力される。
以下に、丸めデータRD1〜RD9を示す。
(サイクルC4)
丸めデータRD1:001011
丸めデータRD3:000011
丸めデータRD5:111100
(サイクルC5)
丸めデータRD2:011000
丸めデータRD4:111001
丸めデータRD7:000101
(サイクルC6)
丸めデータRD6:000001
丸めデータRD8:000110
丸めデータRD9:000101
第2の演算回路204は、シフト回路221〜223のそれぞれが出力するデータD241〜D243に対して演算を行い、その結果をそれぞれ出力する。
具体的には、サイクルC4において、第2の演算回路204は、丸めデータRD1、RD3及びRD5に対して演算を行い、その結果をそれぞれ出力する。サイクルC5において、第2の演算回路204は、丸めデータRD2、RD4及びRD7に対して演算を行い、その結果をそれぞれ出力する。サイクルC6において、第2の演算回路204は、丸めデータRD6、RD8及びRD9に対して演算を行い、その結果をそれぞれ出力する。
上述したように、演算処理装置200は、丸め回路241〜243が丸め処理を行う前に、正規化回路202が正規化処理を行う。そのため、冗長ではない有効なビットを保存したまま、丸め処理によりビット幅を削減することができる。よって、固定小数点のままで丸め処理を行う場合に比べて、演算精度を高くすることができる。
また、演算処理装置200は、丸め回路241〜243が丸め処理を行うことにより、データのビット幅を削減する。そのため、第1の演算回路201が出力するデータのビット幅よりも、第2の演算回路204が受け取るデータのビット幅を小さくすることができる。すなわち、第2の演算回路204が演算するデータのビット幅を小さくすることができる。従って、第2の演算回路204の回路規模や消費電力を小さくすることができる。
ところが、演算処理装置200では、最大指数を算出するために、正規化処理及び丸め処理を行う前のブロック内の全データを、データメモリ回路203に保持する必要がある。そのため、データメモリ回路203に必要とされるメモリ容量が大きくなる。その結果、回路規模が大きくなってしまうという問題がある。
また、演算処理装置200では、ブロック内の全データを共通の指数によって正規化する。そのため、データ処理のデータ数が大きくなると、各データの値の範囲(ダイナミックレンジ)が広い場合に、精度が劣化してしまうという問題がある。
本発明は上記の事情を鑑みて成されたものであり、本発明の目的は、ブロック浮動小数点処理を高精度に行うことができる、小回路規模の演算処理装置及び演算処理方法を提供することである。
本発明の一態様である演算処理装置は、共通の指数を持つ、複数の固定小数点表現のデータ又はブロック浮動小数点表現の仮数部のデータが複数サイクルのそれぞれにおいて入力され、前記複数サイクルのそれぞれの前記複数のデータに対する最大指数に基づいて、当該サイクルの複数のデータを当該複数のデータに共通の指数で正規化する第1の正規化を行う第1の正規化手段と、前記第1の正規化が行われた前記複数のデータのそれぞれのビット幅を削減した複数の丸めデータを出力する丸め手段と、前記複数サイクル分の前記第1の正規化が行われた前記複数の丸めデータを保持し、保持されている前記複数の丸めデータの内、複数の指定された前記丸めデータを出力する第1の記憶手段と、前記複数の指定された前記丸めデータのそれぞれについて、前記第1の正規化で用いられた前記最大指数と、当該最大指数の前記複数の指定された前記丸めデータについての最大値とに基づいて、前記複数の指定された前記丸めデータを当該複数の指定された前記丸めデータに共通の指数で正規化する第2の正規化を行い、出力する第2の正規化手段と、を含む。
本発明の一態様である演算処理方法は、共通の指数を持つ、複数の固定小数点表現のデータ又はブロック浮動小数点表現の仮数部のデータが複数サイクルのそれぞれにおいて入力され、前記複数サイクルのそれぞれの前記複数のデータに対する最大指数に基づいて、当該サイクルの複数のデータを当該複数のデータに共通の指数で正規化する第1の正規化を行い、前記第1の正規化が行われた前記複数のデータのそれぞれのビット幅を削減した複数の丸めデータを出力し、前記複数サイクル分の前記第1の正規化が行われた前記複数の丸めデータを保持し、保持されている前記複数の丸めデータの内、複数の指定された前記丸めデータを出力し、前記複数の指定された前記丸めデータのそれぞれについて、前記第1の正規化で用いられた前記最大指数と、当該最大指数の前記複数の指定された前記丸めデータについての最大値とに基づいて、前記複数の指定された前記丸めデータを当該複数の指定された前記丸めデータに共通の指数で正規化する第2の正規化を行い、出力する。
本発明によれば、ブロック浮動小数点処理を高精度に行うことができる、小回路規模の演算処理装置及び演算処理方法を提供することができる。
実施の形態1にかかる演算処理装置100の構成を示すブロック図である。 実施の形態1にかかる演算処理装置100の構成を更に詳細に表示したブロック図である。 実施の形態1にかかる演算処理装置100の第1の正規化フェーズ(サイクルC1〜C3)における動作を示すタイミングチャートである。 実施の形態1にかかる演算処理装置100の第2の正規化フェーズ(サイクルC4〜C6)における動作を示すタイミングチャートである。 ブロック浮動小数点の正規化処理を行う通常の演算処理装置200の構成を示すブロック図である。 演算処理装置200の動作を示すタイミングチャートである。 実施の形態1にかかる特徴的な構成を示すブロック図である。
以下、図面を参照して本発明の実施の形態について説明する。各図面においては、同一要素には同一の符号が付されており、必要に応じて重複説明は省略される。
実施の形態1
まず、本発明の実施の形態1にかかる演算処理装置100について説明する。図1は、実施の形態1にかかる演算処理装置100の構成を示すブロック図である。演算処理装置100は、第1の正規化回路120、丸め回路130、データメモリ回路140、第2の正規化回路150を有する。なお、第1の正規化回路120及び第2の正規化回路150は、それぞれ第1及び第2の正規化手段に相当する。丸め回路130は、丸め手段に相当する。データメモリ回路140は、第1の記憶手段に相当する。
演算処理装置100には、複数のデータからなるブロックを構成する固定小数点表現のデータ又はブロック浮動小数点表現の仮数部のデータが、第1の演算回路110を介して複数入力される。換言すれば、演算処理装置100には、1サイクルあたりn(nは、2以上の整数)個のデータがm(mは、2以上の整数)サイクル入力される。この場合、1つのブロックを構成するデータ数は、(m×n)個となる。
以下では、説明の簡略化のため、演算処理装置100には、3つのデータが3サイクル入力される場合について説明する。この場合、第1の演算回路110には、1つのブロックを構成する異なる入力データが3つずつ順次入力される。そして、第1の演算回路110は、受け取った3つの入力データに対して演算を行い、演算結果をそれぞれデータD111〜D113として出力する。入力データは、例えば、外部装置(図示せず)から第1の演算回路110に順次出力される。例えば、図1においては、第1の演算回路110は、ブロックを構成する9個の入力データを受け取る。この場合、第1の演算回路110は、3つの入力データを、3つのサイクルに分けて受け取る。そして、第1の演算回路110は、受け取った入力データに対して演算を行い、演算結果であるデータD111〜D113を3サイクル出力する。
演算処理装置100は、入力されたブロックを構成するデータに対して所定の処理を行い、第2の演算回路160へ処理後のデータD151〜153を出力する。第2の演算回路160は、データD151〜D153のそれぞれに対して演算を行い、演算結果を外部装置(不図示)へ出力する。
図2は、演算処理装置100の構成を更に詳細に表示した図である。図2に示すように、第1の正規化回路120は、シフト回路SC11〜SC13及び最大指数算出回路121を有する。図1では、簡略化のため、「シフト回路」を「SC」と表示している。なお、シフト回路SC11〜SC13は、それぞれ第2のシフト手段に相当する。最大指数算出回路121は、第2の算出回路に相当する。
最大指数算出回路121は、データD111〜D113を受け取り、データD111〜D113の最大指数Imaxをサイクルごとに算出する。そして、最大指数算出回路121は、算出した最大指数Imaxを、サイクルごとに出力する。
シフト回路SC11〜SC13は、最大指数算出回路121がサイクルごとに算出した最大指数Imaxに基づいて、データD111〜D113のビットをシフトすることにより、第1の正規化処理を行う。第1の正規化処理が行われたデータD121〜D123は、それぞれ丸め回路131〜133へ出力される。図1では、簡略化のため、「丸め回路」を「RC」と表示している。
丸め回路130は、丸め回路131〜133を有する。なお、丸め回路131〜133は、それぞれ第1〜第3の丸め手段に相当する。丸め回路131〜133は、データD121〜D123に対して丸め処理を行うことにより、データのビット幅が削減された丸めデータD131〜D133を生成する。丸めデータD131〜D133は、データメモリ回路140へ出力される。
データメモリ回路140は、丸めデータD131〜D133をブロックの単位で保持する。すなわち、データメモリ回路140は、データD131〜D133をブロックの単位で保持する。具体的には、データメモリ回路140は、外部から受け取る書き込みアドレスAw1〜Aw3に対応するアドレスに、データD131〜D133のそれぞれを格納して保持する。
また、データメモリ回路140は、ブロックの単位で保持したデータを、データD141〜D143として出力する。このとき、データメモリ回路140は、データD131〜D133の順番を並べ替えて、データD141〜D143として出力することが可能である。具体的には、データメモリ回路203は、外部から受け取る読み出しアドレスAr1〜Ar3に対応するアドレスに保持しているデータを、それぞれデータD141〜D143として出力する。
データメモリ回路140が受け取る書き込みアドレスAw1〜Aw3及び読み出しアドレスAr1〜Ar3は、例えば、外部装置(図示せず)からデータメモリ回路140に順次出力される。
第2の正規化回路150は、指数メモリ回路151、補正指数算出回路152及びシフト回路SC21〜SC23を有する。なお、指数メモリ回路151は、第2の記憶手段に相当する。補正指数算出回路152は、第1の算出手段に相当する。シフト回路SC21〜SC23は、それぞれ第1のシフト手段に相当する。
指数メモリ回路151は、最大指数算出回路121がサイクルごとに出力する最大指数Imaxを、外部から指定されたアドレスに保持する。また、指数メモリ回路151は、外部から指定されたアドレスに保持されている最大指数Imaxを、指数データID1〜ID3として出力する。
補正指数算出回路152は、指数データID1〜ID3に基づいて、補正指数CI1〜CI3を算出する。算出された補正指数CI1〜CI3は、それぞれシフト回路SC21〜SC23へ出力される。
シフト回路SC21〜SC23は、データメモリ回路140からデータD141〜D143を受け取る。そして、シフト回路SC21〜SC23は、補正指数CI1〜CI3に基づいて、D141〜D143のそれぞれをシフトさせる。これにより、データD141〜D143は第2の正規化処理がなされる。シフト回路SC21〜SC23は、第2の正規化処理後のデータD151〜D153を出力する。
続いて、演算処理装置100の動作について詳述する。演算処理装置100の動作は、サイクルC1〜C6からなる。また、演算処理装置100の動作は、サイクルC1〜C3とサイクルC4〜C6とに大別される。以下では、演算処理装置100の動作を鑑み、サイクルC1〜C3を第1の正規化フェーズP1、サイクルC4〜C6を第2の正規化フェーズP2として説明する。サイクルの進行は、例えばクロック信号CLKを用いて制御される。
まず、第1の正規化フェーズP1(サイクルC1〜C3)における演算処理装置100の動作について説明する。図3は、実施の形態1にかかる演算処理装置100の第1の正規化フェーズP1(サイクルC1〜C3)における動作を示すタイミングチャートである。
本実施の形態において、第1の演算回路110は、ブロック浮動小数点の正規化処理の対象となるブロックとして、12ビットのデータであるデータD1〜D9を出力する。また、以下では、データD1〜D9の値を2の補数表現で示す。以降に示すデータのビット列では、最も左のビットがMSB(Most Significant Bit)であり、最も右のビットがLSB(Least Significant Bit)である。なお、MSBは、符号ビットである。以下に、データD1〜D9を示す。
データD1:000101110111
データD2:001100010001
データD3:000001101100
データD4:111100111000
データD5:111110000000
データD6:000000100101
データD7:000010111110
データD8:000011010001
データD9:000010111001
第1の演算回路110は、サイクルC1において、入力されるデータに演算を行い、その演算結果であるデータD1〜D3を、それぞれデータD111〜D113として出力する。同様に、第1の演算回路110は、サイクルC2において、入力されるデータに演算を行い、その演算結果であるデータD4〜D6を、それぞれデータD111〜D113として出力する。第1の演算回路110は、サイクルC3において、入力されるデータに演算を行い、その演算結果であるデータD7〜D9を、それぞれデータD111〜D113として出力する。
最大指数算出回路121は、サイクルC1〜C3において、データD111〜D113をサイクルごとに受け取る。最大指数算出回路121は、サイクルごとのデータD111〜D113の最大指数Imaxを算出する。
具体的には、最大指数算出回路121は、ブロック内のデータD1〜D9の絶対値をサイクルごとに算出する。以下に、データD1〜D9の絶対値ABS1からABS9を示す。
(サイクルC1)
絶対値ABS1(データD1の絶対値):000101110111
絶対値ABS2(データD2の絶対値):001100010001
絶対値ABS3(データD3の絶対値):000001101100
(サイクルC2)
絶対値ABS4(データD4の絶対値):000011001000
絶対値ABS5(データD5の絶対値):000010000000
絶対値ABS6(データD6の絶対値):000000100101
(サイクルC3)
絶対値ABS7(データD7の絶対値):000010111110
絶対値ABS8(データD8の絶対値):000011010001
絶対値ABS9(データD9の絶対値):000010111001
続いて、算出した絶対値ABS1〜ABS9の論理和ADD1〜3を、サイクルごとに算出する。以下に、絶対値ABS1〜ABS3、絶対値ABS4〜ABS6及び絶対値ABS7〜ABS9のそれぞれの論理和ADD1〜3を示す。
(サイクルC1)
論理和ADD1(絶対値ABS1〜ABS3の論理和):001101111111
(サイクルC2)
論理和ADD2(絶対値ABS4〜ABS6の論理和):000011101101
(サイクルC3)
論理和ADD3(絶対値ABS7〜ABS9の論理和):000011111101
続いて、それぞれのサイクルにおいて、論理和のMSB(Most Significant Bit)側から見て最初にビットの値が1となるビット位置を検出する。以下では、MSBを11ビット目、LSB(Least Significant Bit)を0ビット目として説明する。
まず、サイクルC1では、MSB側から見て最初にビットの値が1となるビット位置として、9ビット目を検出する。ここで、サイクルC1のデータD1〜D3を共通の指数で正規化するために、データD1〜D3を同一のシフト量で左にビットシフトする場合について検討する。この場合、シフト量が1ビットであれば、データD1〜D3の符号はいずれも変化せずに、正規化後の値が正しく表現される。したがって、サイクルC1の最大指数Imax1は「−1」である。最大指数算出回路121は、サイクルC1において、算出した最大指数Imax1である「−1」を出力する。
同様に、サイクルC2では、MSB側から見て最初にビットの値が1となるビット位置として、7ビット目を検出する。データD4〜D6を同一のシフト量で左にビットシフトする場合、シフト量が3ビットであれば、データD4〜D6の符号はいずれも変化せずに、正規化後の値が正しく表現される。したがって、サイクルC2の最大指数Imax2は「−3」である。最大指数算出回路121は、サイクルC2において、算出した最大指数Imax2である「−3」を出力する。
サイクルC3では、MSB側から見て最初にビットの値が1となるビット位置として、7ビット目を検出する。データD7〜D9を同一のシフト量で左にビットシフトする場合、シフト量が3ビットであれば、データD7〜D9の符号はいずれも変化せずに、正規化後の値が正しく表現される。したがって、サイクルC3の最大指数Imax3は「−3」である。最大指数算出回路121は、サイクルC3において、算出した最大指数Imax3である「−3」を出力する。
指数メモリ回路151は、サイクルC1において、書き込みアドレスAwmで指定されたアドレスAm1に、最大指数Imax1の値「−1」を書き込む。また、指数メモリ回路151は、サイクルC2において、書き込みアドレスAwmで指定されたアドレスAm2に、最大指数Imax2の値「−3」を書き込む。指数メモリ回路151は、サイクルC3において、書き込みアドレスAwmで指定されたアドレスAm3に、最大指数Imax3の値「−3」を書き込む。
次いで、シフト回路SC11〜SC13の動作について説明する。シフト回路SC11〜SC13は、最大指数算出回路121がサイクルごとに算出した最大指数Imaxに基づいて、データD111〜D113をシフトすることにより、第1の正規化処理を行う。
具体的には、サイクルC1において、シフト回路SC11〜SC13のそれぞれは、最大指数算出回路121が算出した最大指数Imax1の値「−1」に基づいて、データD111〜D113として受け取ったデータD1〜D3をシフトする。そして、シフト回路SC11〜SC13のそれぞれは、第1の正規化処理後の第1の正規化データND11〜ND13を、データD121〜D123としてそれぞれ出力する。
サイクルC2において、シフト回路SC11〜SC13のそれぞれは、最大指数算出回路121が算出した最大指数Imax2の値「−3」に基づいて、データD111〜D113として受け取ったデータD4〜D6をシフトする。そして、シフト回路SC11〜SC13のそれぞれは、第1の正規化処理後の第1の正規化データND14〜ND16を、データD121〜D123としてそれぞれ出力する。
サイクルC3において、シフト回路SC11〜SC13のそれぞれは、最大指数算出回路121が算出した最大指数Imax3の値「−3」に基づいて、データD111〜D113として受け取ったデータD7〜D9をシフトする。そして、シフト回路SC11〜SC13のそれぞれは、第1の正規化処理後の第1の正規化データND17〜ND19を、データD121〜D123としてそれぞれ出力する。
以下に、第1の正規化フェーズP1(サイクルC1〜C3)の各サイクルにおける第1の正規化処理後の第1の正規化データND11〜ND19を示す。
(サイクルC1)
第1の正規化データND11:001011101110
第1の正規化データND12:011000100010
第1の正規化データND13:000011011000
(サイクルC2)
第1の正規化データND14:100111000000
第1の正規化データND15:110000000000
第1の正規化データND16:000100101000
(サイクルC3)
第1の正規化データND17:010111110000
第1の正規化データND18:011010001000
第1の正規化データND19:010111001000
丸め回路131〜133のそれぞれは、サイクルC1〜C3において、データD121〜D123として出力される第1の正規化データND11〜ND19に対して、丸め処理を行う。これにより、丸め回路131〜133は、正規化データND1〜ND9のビット幅を6ビットに削減した丸めデータRD11〜RD19を生成する。
つまり、サイクルC1において、丸め回路131〜133は、第1の正規化データND11〜ND13のビット幅を削減した丸めデータRD11〜RD13を、丸めデータD131〜D133としてそれぞれ出力する。
サイクルC2において、丸め回路131〜133は、第1の正規化データND14〜ND16のビット幅を削減した丸めデータRD14〜RD16を、丸めデータD131〜D133としてそれぞれ出力する。
サイクルC3において、丸め回路131〜133は、第1の正規化データND17〜ND19のビット幅を削減した丸めデータRD17〜RD19を、丸めデータD131〜D133としてそれぞれ出力する。
以下に、第1の正規化フェーズP1(サイクルC1〜C3)の各サイクルにおける、丸め処理後の丸めデータRD11〜RD19を示す。
(サイクルC1)
丸めデータRD11:001011
丸めデータRD12:011000
丸めデータRD13:000011
(サイクルC2)
丸めデータRD14:100111
丸めデータRD15:110000
丸めデータRD16:000100
(サイクルC3)
丸めデータRD17:010111
丸めデータRD18:011010
丸めデータRD19:010111
データメモリ回路140は、第1の正規化フェーズP1(サイクルC1〜C3)において、丸め回路131〜133がデータD131〜D133として出力した丸めデータRD11〜RD19を受け取り、保持する。
具体的には、サイクルC1において、データメモリ回路140は、書き込みアドレスAw1〜Aw3で指定されたアドレスA1〜A3のそれぞれに、データD131〜D133として出力された丸めデータRD11〜RD13を格納して保持する。
サイクルC2において、データメモリ回路140は、書き込みアドレスAw1〜Aw3で指定されたアドレスA1〜A3のそれぞれに、データD131〜D133として出力された丸めデータRD14〜RD16を格納して保持する。
サイクルC3において、データメモリ回路140は、書き込みアドレスAw1〜Aw3で指定されたアドレスA1〜A3のそれぞれに、データD131〜D133として出力された丸めデータRD17〜RD19を格納して保持する。
また、指数メモリ回路151は、サイクルC1〜C3のそれぞれで算出される最大指数Imax1〜Imax3を格納して保持する。
具体的には、サイクルC1において、指数メモリ回路151は、書き込みアドレスAwmで指定されたアドレスAm1に、最大指数Imax1の値「−1」を格納して保持する。同様に、サイクルC2において、指数メモリ回路151は、書き込みアドレスAwmで指定されたアドレスAm2に、最大指数Imax2の値「−3」を格納して保持する。サイクルC3において、指数メモリ回路151は、書き込みアドレスAwmで指定されたアドレスAm3に、最大指数Imax3の値「−3」を格納して保持する。
続いて、第2の正規化フェーズP2(サイクルC4〜C6)における演算処理装置100の動作について説明する。図4は、実施の形態1にかかる演算処理装置100の第2の正規化フェーズP2(サイクルC4〜C6)における動作を示すタイミングチャートである。
データメモリ回路140は、保持していた丸めデータRD11〜RD19を、データD141〜D143として出力する。このとき、データメモリ回路140は、第2の演算回路160が行う演算のために、入力とは異なる順番でデータを出力する。
具体的には、サイクルC4において、データメモリ回路140は、読み出しアドレスAr1で指定されたアドレスA1に保持している丸めデータRD11を、データD141として出力する。同様に、データメモリ回路140は、読み出しアドレスAr2で指定されたアドレスA3に保持している丸めデータRD13をデータD142として、読み出しアドレスAr3で指定されたアドレスA5に保持している丸めデータRD15をデータD143として出力する。
サイクルC5において、データメモリ回路140は、読み出しアドレスAr1で指定されたアドレスA2に保持している丸めデータRD12を、データD141として出力する。同様に、データメモリ回路140は、読み出しアドレスAr2で指定されたアドレスA4に保持している丸めデータRD14をデータD142として、読み出しアドレスAr3で指定されたアドレスA7に保持している丸めデータRD17をデータD143として出力する。
サイクルC6において、データメモリ回路140は、読み出しアドレスAr1で指定されたアドレスA6に保持している丸めデータRD16を、データD141として出力する。同様に、データメモリ回路140は、読み出しアドレスAr2で指定されたアドレスA8に保持している丸めデータRD18をデータD142として、読み出しアドレスAr3で指定されたアドレスA9に保持している丸めデータRD19をデータD143として出力する。
指数メモリ回路151は、第2の正規化フェーズP2(サイクルC4〜C6)において、保持していた最大指数Imax1〜Imax3を、指数データID1〜ID3として出力する。
具体的には、サイクルC4において、指数メモリ回路151は、読み出しアドレスArm1で指定されたアドレスAm1に保持している最大指数Imax1の値「−1」をデータID1として出力する。同様に、指数メモリ回路151は、読み出しアドレスArm2で指定されたアドレスAm1に保持している最大指数Imax1の値「−1」を指数データID2として、読み出しアドレスArm3で指定されたアドレスAm2に保持している最大指数Imax3の値「−3」を指数データID3として出力する。
サイクルC5において、指数メモリ回路151は、読み出しアドレスArm1で指定されたアドレスAm1に保持している最大指数Imax1の値「−1」を指数データID1として出力する。同様に、指数メモリ回路151は、読み出しアドレスArm2で指定されたアドレスAm2に保持している最大指数Imax2の値「−3」を指数データID2として、読み出しアドレスArm3で指定されたアドレスAm3に保持している最大指数Imax3の値「−3」を指数データID3として出力する。
サイクルC6において、指数メモリ回路151は、読み出しアドレスArm1で指定されたアドレスAm2に保持している最大指数Imax2の値「−3」を指数データID1として出力する。同様に、指数メモリ回路151は、読み出しアドレスArm2で指定されたアドレスAm3に保持している最大指数Imax3の値「−3」を指数データID2として、読み出しアドレスArm3で指定されたアドレスAm3に保持している最大指数Imax3の値「−3」を指数データID3として出力する。
補正指数算出回路152は、第2の正規化フェーズP2(サイクルC4〜C6)の各サイクルにおいて、指数データID1〜ID3に基づいて補正指数CI1〜CI3を算出する。そして、補正指数算出回路152は、補正指数CI1〜CI3のそれぞれを、シフト回路SC21〜SC23へ出力する。
まず、サイクルC4において、補正指数算出回路152は、指数データID1〜ID3のそれぞれの値「−1」、「−1」及び「−3」から、補正指数CI1〜CI3を算出する。具体的には、補正指数算出回路152は、入力した指数データID1〜ID3の最大値を求める。この場合、指数データID1〜ID3の最大値は指数データID1の値「−1」である。次いで、補正指数算出回路152は、指数データID1〜ID3の補正指数CI1〜CI3を算出する。ここで、補正指数CI1〜CI3とは、指数データID1〜ID3のそれぞれに加算することにより、加算後の値を最大値に一致させることができる数を意味する。従って、補正指数算出回路152は、補正指数CI1〜CI3として、それぞれ「0」、「0」及び「+2」を出力する。
サイクルC5において、補正指数算出回路152は、指数データID1〜ID3のそれぞれの値「−1」、「−3」及び「−3」から、補正指数CI1〜CI3を算出する。この場合、指数データID1〜ID3の最大値は指数データID1の値「−1」である。従って、補正指数算出回路152は、補正指数CI1〜CI3として、それぞれ「0」、「+2」及び「+2」を出力する。
サイクルC6において、補正指数算出回路152は、指数データID1〜ID3のそれぞれの値「−3」、「−3」及び「−3」から、補正指数CI1〜CI3を算出する。この場合、指数データID1〜ID3の最大値は指数データID1の値「−3」である。従って、補正指数算出回路152は、補正指数CI1〜CI3として、それぞれ「0」を出力する。
シフト回路SC21〜SC23は、第2の正規化フェーズP2(サイクルC4〜C6)において、補正指数算出回路152が算出した補正指数CI1〜CI3に基づいて、データD141〜D143のそれぞれをシフトして、第2の正規化処理を行う。第2の正規化処理により生成されたデータD151〜D153は、第2の演算回路160に出力される。なお、第2の正規化処理により、丸めデータRD11〜RD19のそれぞれに基づいて、第2の正規化データND21〜ND29が生成される。
具体的には、サイクルC4において、シフト回路SC21は、データD141として受け取った丸めデータRD11を補正指数CI1の値「0」だけシフトさせ、第2の正規化データND21を生成する。シフト回路SC22は、データD142として受け取った丸めデータRD13を補正指数CI2の値「0」だけシフトさせ、第2の正規化データND23を生成する。シフト回路SC23は、データD143として受け取った丸めデータRD15を補正指数CI3の値「+2」だけシフトさせ、第2の正規化データND25を生成する。第2の正規化データND21、ND23及びND25は、それぞれデータD151〜D153として出力される。
サイクルC5において、シフト回路SC21は、データD141として受け取った丸めデータRD12を補正指数CI1の値「0」だけシフトさせ、第2の正規化データND22を生成する。シフト回路SC22は、データD142として受け取った丸めデータRD14を補正指数CI2の値「+2」だけシフトさせ、第2の正規化データND24を生成する。シフト回路SC23は、データD143として受け取った丸めデータRD17を補正指数CI3の値「+2」だけシフトさせ、第2の正規化データND27を生成する。第2の正規化データND22、ND24及びND27は、それぞれデータD151〜D153として出力される。
サイクルC6において、シフト回路SC21は、データD141として受け取った丸めデータRD16を、補正指数CI1の値「0」だけシフトさせ、第2の正規化データND26を生成する。シフト回路SC22は、データD142として受け取った丸めデータRD18を補正指数CI2の値「0」だけシフトさせ、第2の正規化データND28を生成する。シフト回路SC23は、データD143として受け取った丸めデータRD19を補正指数CI3の値「0」だけシフトさせ、第2の正規化データND29を生成する。第2の正規化データND26、ND28及びND29は、それぞれデータD151〜D153として出力される。
以下に、第2の正規化フェーズP2(サイクルC4〜C6)の各サイクルにおける第2の正規化処理後の第2の正規化データND21〜ND29を示す。
(サイクルC4)
第2の正規化データND21:001011
第2の正規化データND23:000011
第2の正規化データND25:111100
(サイクルC5)
第2の正規化データND22:011000
第2の正規化データND24:111001
第2の正規化データND27:000101
(サイクルC6)
第2の正規化データND26:000100
第2の正規化データND28:011010
第2の正規化データND29:010111
次に、本発明の特徴的な構成について説明する。
図7は、実施の形態1にかかる特徴的な構成を示すブロック図である。
演算処理装置100は、第1の正規化回路120、丸め回路130、データメモリ回路(第1の記憶回路)140、及び、第2の正規化回路150を含む。
ここで、第1の正規化回路120は、共通の指数を持つ、複数の固定小数点表現のデータ又はブロック浮動小数点表現の仮数部のデータが複数サイクルのそれぞれにおいて入力され、複数サイクルのそれぞれの複数のデータに対する最大指数に基づいて、当該サイクルの複数のデータを当該複数のデータに共通の指数で正規化する第1の正規化を行う。
丸め回路120は、第1の正規化が行われた複数のデータのそれぞれのビット幅を削減した複数の丸めデータを出力する。
データメモリ回路(第1の記憶回路)140は、複数サイクル分の第1の正規化が行われた複数の丸めデータを保持し、保持されている複数の丸めデータの内、複数の指定された丸めデータを出力する。
第2の正規化回路150は、複数の指定された丸めデータのそれぞれについて、第1の正規化で用いられた最大指数と、当該最大指数の複数の指定された丸めデータについての最大値とに基づいて、複数の指定された丸めデータを当該複数の指定された丸めデータに共通の指数で正規化する第2の正規化を行い、出力する。
上述の通り、本実施の形態では、複数のデータを並列に演算する並列演算回路を複数含むデータ処理回路において、各演算回路で同時に演算するデータをひとつのブロックとするブロック浮動小数点処理を行う。そのため、データ処理のデータ数の大きさによらず、演算の並列度でブロックのサイズを決めることができる。したがって、データ処理のデータ数が大きい場合においても、ブロックを小さくすることができるため、各データの値範囲が広い場合でも、精度が劣化しないという効果がある。
演算処理装置100では、データを保持するデータメモリ回路140の前段で第1の正規化処理および丸め処理を行い、データメモリ回路140の後段で第2の正規化処理を行うことが可能となる。
また、第1の正規化処理の指数値を考慮して、第2の正規化処理における補正指数を決定する。すなわち、演算処理装置100では、シフト回路SC21〜SC23で第2の正規化処理が行われるデータD141〜D143の基となった丸めデータRD11〜RD19が生成されたサイクルと、丸めデータRD11〜RD19を正規化するための補正指数の算出のための減算に用いられる最大指数が算出されたサイクルと、が等しくなるように、補正指数が算出される。
これにより、演算処理装置100では、データメモリ回路140の前で丸め処理を行ってデータのビットを削減するので、データメモリ回路140に必要なメモリ容量を、より小さくすることができる。その結果、回路規模が小さく消費電力が低い演算処理装置を提供することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の実施の形態においては、n及びmの値を3としたが、あくまで例に過ぎない。従って、n及びmは、ともに2以上の任意の整数とすることが可能である。
上述の実施の形態において、各サイクルでデータメモリ回路140から出力されるデータの組み合わせは、上述の例に限られない。すなわち、n個ずつ出力されるのであれば、データメモリ回路140は、任意の組み合わせのデータを出力することができる。
この出願は、2011年5月16日に出願された日本出願特願2011−109554を基礎とする優先権を主張し、その開示の全てをここに取り込む。
100 演算処理装置
110、201 第1の演算回路
120 第1の正規化回路
130 丸め回路
131 第1の丸め回路
132 第2の丸め回路
133 第3の丸め回路
140、203 データメモリ回路
150 第2の正規化回路
160、204 第2の演算回路
121、210 最大指数算出回路
151 指数メモリ回路
152 補正指数算出回路
241〜243 丸め回路
200 演算処理装置
202 正規化回路
221〜223 シフト回路
Aw1〜Aw3、Aw21〜Aw23、Awm 書き込みアドレス
Ar1〜Ar3、Ar21〜Ar23、Arm1〜Arm3 読み出しアドレス
C1〜C6 サイクル
CI1〜CI3 補正指数
D1〜D9、D111〜D113、D121〜D123、D131〜D133、D141〜D143、D151〜D153、D211〜D213、D221〜D223、D231〜D233、D241〜D243 データ
ID1〜ID3 指数データ
Imax、Imax1〜Imax3 最大指数
P1 第1の正規化フェーズ
P2 第2の正規化フェーズ
SC11〜SC13、SC21〜SC23 シフト回路

Claims (10)

  1. 共通の指数を持つ、複数の固定小数点表現のデータ又はブロック浮動小数点表現の仮数部のデータが複数サイクルのそれぞれにおいて入力され、前記複数サイクルのそれぞれの前記複数のデータに対する最大指数に基づいて、当該サイクルの複数のデータを当該複数のデータに共通の指数で正規化する第1の正規化を行う第1の正規化手段と、
    前記第1の正規化が行われた前記複数のデータのそれぞれのビット幅を削減した複数の丸めデータを出力する丸め手段と、
    前記複数サイクル分の前記第1の正規化が行われた前記複数の丸めデータを保持し、保持されている前記複数の丸めデータの内、複数の指定された前記丸めデータを出力する第1の記憶手段と、
    前記複数の指定された前記丸めデータのそれぞれについて、前記第1の正規化で用いられた前記最大指数と、当該最大指数の前記複数の指定された前記丸めデータについての最大値とに基づいて、前記複数の指定された前記丸めデータを当該複数の指定された前記丸めデータに共通の指数で正規化する第2の正規化を行い、出力する第2の正規化手段と、
    を含み、
    前記複数の指定された前記丸めデータは、前記複数サイクルの内の異なるサイクルに前記第1の正規化が行われたデータの丸めデータを含む、
    演算処理装置。
  2. 前記第2の正規化手段は、前記複数の指定された前記丸めデータのそれぞれについて、前記第1の正規化で用いられた前記最大指数を、当該最大指数の前記複数の指定された丸めデータについての最大値から減じた補正指数を算出し、当該補正指数に基づいて、前記複数の指定された前記丸めデータのそれぞれを正規化する、
    請求項1に記載の演算処理装置。
  3. 前記第1の正規化手段は、第1の正規化フェーズにおいてn(nは、2以上の整数)個の固定小数点表現のデータ又はブロック浮動小数点表現の仮数部のデータがm(mは、2以上の整数)サイクルのそれぞれにおいて入力され、前記n個のデータに対する最大指数に基づいて、前記n個のデータをサイクルごとに正規化し、
    前記丸め手段は、前記第1の正規化手段により正規化された前記n個のデータのそれぞれのビット幅を削減したn個の丸めデータをサイクルごとに出力し、
    前記第1の記憶手段は、前記第1の正規化フェーズにおいて、前記mサイクル分の(m×n)個の前記丸めデータを保持し、前記第1の正規化フェーズ後の第2の正規化フェーズにおいて、保持されている前記丸めデータから選択したn個の指定された前記丸めデータをサイクルごとに出力し、
    前記第2の正規化手段は、前記第2の正規化フェーズにおいて、前記mサイクル分のm個の前記最大指数からn個を選択し、前記n個の前記最大指数の最大値から前記n個の前記最大指数のそれぞれを減じたn個の補正指数を算出し、前記n個の補正指数に基づいて前記n個の指定された前記丸めデータのそれぞれをサイクルごとに正規化し、
    前記第2の正規化手段で正規化されるk(kは、1以上n以下の整数)番目の前記丸めデータが生成されたサイクルと、当該k番目の前記丸めデータを第2の正規化手段で正規化する際に用いた前記補正指数の算出に用いた前記最大指数に対応するサイクルと、が同じである、
    請求項2に記載の演算処理装置。
  4. 前記第2の正規化手段は、
    前記第1の正規化フェーズにおいて、前記m個の前記最大指数のそれぞれを、外部からの指数書き込みアドレスで指定されたアドレスに保持し、前記第2の正規化フェーズにおいて、外部からの指数読み出しアドレスで指定されたn個のアドレスに保持されているn個の前記最大指数をサイクルごとに出力する第2の記憶手段と、
    前記第2の記憶手段から出力される前記n個の前記最大指数の最大値を検出し、前記最大値から前記n個の前記最大指数のそれぞれを減じたn個の前記補正指数をサイクルごとに算出する第1の算出手段と、を含む、
    請求項3に記載の演算処理装置。
  5. 前記第1の記憶手段は、
    前記第1の正規化フェーズにおいて、前記(m×n)個の前記丸めデータのそれぞれを外部からの書き込みアドレスで指定されたアドレスに保持し、前記第2の正規化フェーズにおいて、外部からの読み出しアドレスで指定されたアドレスに保持されている前記丸めデータをサイクルごとにn個ずつ出力する、
    請求項3又は4に記載の演算処理装置。
  6. 前記第2の正規化手段は、前記n個の補正指数に基づいてn個の指定された前記丸めデータのそれぞれのビットをサイクルごとにシフトさせるn個の第1のシフト手段を更に含む、
    請求項3乃至5のいずれか一項に記載の演算処理装置。
  7. 前記第1の正規化手段は、受け取った前記n個のデータのそれぞれを正規化するためのn個の指数をサイクルごとに算出し、前記n個の指数の最大値を前記最大指数として出力する第2の算出手段と、
    前記最大指数に基づいて前記n個のデータのそれぞれのビットをサイクルごとにシフトさせるn個の第2のシフト手段と、を含む、
    請求項3乃至6のいずれか一項に記載の演算処理装置。
  8. 前記丸め手段は、前記第1の正規化手段で正規化された前記n個のデータのそれぞれのビット幅をサイクルごとに削減するn個の丸め手段を含む、
    請求項3乃至7のいずれか一項に記載の演算処理装置。
  9. 共通の指数を持つ、複数の固定小数点表現のデータ又はブロック浮動小数点表現の仮数部のデータが複数サイクルのそれぞれにおいて入力され、前記複数サイクルのそれぞれの前記複数のデータに対する最大指数に基づいて、当該サイクルの複数のデータを当該複数のデータに共通の指数で正規化する第1の正規化を行い、
    前記第1の正規化が行われた前記複数のデータのそれぞれのビット幅を削減した複数の丸めデータを出力し、
    前記複数サイクル分の前記第1の正規化が行われた前記複数の丸めデータを保持し、保持されている前記複数の丸めデータの内、複数の指定された前記丸めデータを出力し、
    前記複数の指定された前記丸めデータのそれぞれについて、前記第1の正規化で用いられた前記最大指数と、当該最大指数の前記複数の指定された前記丸めデータについての最大値とに基づいて、前記複数の指定された前記丸めデータを当該複数の指定された前記丸めデータに共通の指数で正規化する第2の正規化を行い、出力し、
    前記複数の指定された前記丸めデータは、前記複数サイクルの内の異なるサイクルに前記第1の正規化が行われたデータの丸めデータを含む、
    演算処理方法。
  10. 前記第2の正規化を行う場合、前記複数の指定された前記丸めデータのそれぞれについて、前記第1の正規化で用いられた前記最大指数を、当該最大指数の前記複数の指定された丸めデータについての最大値から減じた補正指数を算出し、当該補正指数に基づいて、前記複数の指定された前記丸めデータのそれぞれを正規化する
    請求項9に記載の演算処理方法。
JP2013514951A 2011-05-16 2011-08-31 演算処理装置及び演算処理方法 Active JP5811175B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013514951A JP5811175B2 (ja) 2011-05-16 2011-08-31 演算処理装置及び演算処理方法

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011109554 2011-05-16
JP2011109554 2011-05-16
JP2013514951A JP5811175B2 (ja) 2011-05-16 2011-08-31 演算処理装置及び演算処理方法
PCT/JP2011/070306 WO2012157132A1 (ja) 2011-05-16 2011-08-31 演算処理装置及び演算処理方法

Publications (2)

Publication Number Publication Date
JPWO2012157132A1 JPWO2012157132A1 (ja) 2014-07-31
JP5811175B2 true JP5811175B2 (ja) 2015-11-11

Family

ID=47176490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013514951A Active JP5811175B2 (ja) 2011-05-16 2011-08-31 演算処理装置及び演算処理方法

Country Status (4)

Country Link
US (1) US9519457B2 (ja)
EP (1) EP2711835A4 (ja)
JP (1) JP5811175B2 (ja)
WO (1) WO2012157132A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011161859A1 (ja) * 2010-06-22 2011-12-29 日本電気株式会社 半導体集積回路及び指数算出方法
JP6225687B2 (ja) * 2013-02-18 2017-11-08 富士通株式会社 データ処理装置、およびデータ処理方法
US9916130B2 (en) 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
US11615307B2 (en) 2018-12-06 2023-03-28 MIPS Tech, LLC Neural network data computation using mixed-precision
US11893470B2 (en) 2018-12-06 2024-02-06 MIPS Tech, LLC Neural network processing using specialized data representation
DE102020104594B4 (de) * 2020-02-21 2024-01-25 Infineon Technologies Ag Verarbeitung von Radarsignalen

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04195334A (ja) * 1990-11-27 1992-07-15 Matsushita Electric Ind Co Ltd 固定小数点型デジタル信号処理装置
WO1999066423A1 (fr) * 1998-06-15 1999-12-23 Asahi Kasei Kogyo Kabushiki Kaisha Dispositif pour calcul de donnees

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4872132A (en) * 1987-03-13 1989-10-03 Zoran Corporation Method and means for block floating point arithmetic
JPH08212052A (ja) 1995-02-03 1996-08-20 Fujitsu Ltd 正規化データ生成回路
JPH09128213A (ja) 1995-10-31 1997-05-16 Hitachi Ltd ブロックフローティング処理システムおよび方法
US8280939B2 (en) * 2008-05-22 2012-10-02 Videoiq, Inc. Methods and apparatus for automatic accuracy-sustaining scaling of block-floating-point operands

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04195334A (ja) * 1990-11-27 1992-07-15 Matsushita Electric Ind Co Ltd 固定小数点型デジタル信号処理装置
WO1999066423A1 (fr) * 1998-06-15 1999-12-23 Asahi Kasei Kogyo Kabushiki Kaisha Dispositif pour calcul de donnees

Also Published As

Publication number Publication date
US20140089361A1 (en) 2014-03-27
EP2711835A1 (en) 2014-03-26
JPWO2012157132A1 (ja) 2014-07-31
WO2012157132A1 (ja) 2012-11-22
EP2711835A4 (en) 2014-10-29
US9519457B2 (en) 2016-12-13

Similar Documents

Publication Publication Date Title
JP5811175B2 (ja) 演算処理装置及び演算処理方法
JP4990977B2 (ja) 命令に応じた丸め処理の実行
JP5731937B2 (ja) ベクトル浮動小数点引数削減
US9588696B2 (en) Montgomery modular multiplication-based data processing method
US8874630B2 (en) Apparatus and method for converting data between a floating-point number and an integer
US10445064B2 (en) Implementing logarithmic and antilogarithmic operations based on piecewise linear approximation
JP2006154979A (ja) 浮動小数点数演算回路
CN107533452A (zh) 除法和根计算以及快速结果格式化
EP2431865B1 (en) Semiconductor integrated circuit and index calculation method
JP2021515936A (ja) 16ビット浮動小数点乗算器を用いた行列と行列の乗算による複数精度整数乗算器
CN104823153B (zh) 用于执行指令的处理器、归一化加法运算的方法、通信设备、机器可读介质、用于处理指令的设备和设备
US8972471B2 (en) Arithmetic module, device and system
CN115268832A (zh) 浮点数取整的方法、装置以及电子设备
US9128759B2 (en) Decimal multi-precision overflow and tininess detection
CN116382782A (zh) 向量运算方法、向量运算器、电子设备和存储介质
US20210034329A1 (en) Parallel rounding for conversion from binary floating point to binary coded decimal
JP2017527014A5 (ja)
US9740428B1 (en) Circular buffer descriptor for describing and/or accessing a circular buffer
JP2012113508A (ja) 浮動小数点演算回路、浮動小数点演算回路を備えたコンピュータ及びその演算制御方法と演算制御プログラム
US11314482B2 (en) Low latency floating-point division operations
US20120059998A1 (en) Bit mask extract and pack for boundary crossing data
JP2017027126A (ja) 演算処理装置および演算処理装置の制御方法
WO2022204620A2 (en) Systems and methods for efficient accumulate and multiply-accumulate operations of floating-point numbers in a unified register file
US20080307032A1 (en) Divider Circuit
JP5610508B2 (ja) 演算装置、演算方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150624

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150831

R150 Certificate of patent or registration of utility model

Ref document number: 5811175

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150