JP2007156748A - 演算処理装置,情報処理装置,及び演算処理方法 - Google Patents

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

Info

Publication number
JP2007156748A
JP2007156748A JP2005349804A JP2005349804A JP2007156748A JP 2007156748 A JP2007156748 A JP 2007156748A JP 2005349804 A JP2005349804 A JP 2005349804A JP 2005349804 A JP2005349804 A JP 2005349804A JP 2007156748 A JP2007156748 A JP 2007156748A
Authority
JP
Japan
Prior art keywords
shift
unit
bit
result
normalization
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.)
Granted
Application number
JP2005349804A
Other languages
English (en)
Other versions
JP4571903B2 (ja
Inventor
Kunihiko Tajiri
邦彦 田尻
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 JP2005349804A priority Critical patent/JP4571903B2/ja
Priority to US11/385,718 priority patent/US7720899B2/en
Priority to EP06251769.3A priority patent/EP1806652B1/en
Priority to CNB2006100764824A priority patent/CN100545805C/zh
Priority to KR1020060037654A priority patent/KR100818011B1/ko
Publication of JP2007156748A publication Critical patent/JP2007156748A/ja
Application granted granted Critical
Publication of JP4571903B2 publication Critical patent/JP4571903B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • 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
    • G06F7/49947Rounding
    • G06F7/49952Sticky bit
    • 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
    • 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
    • G06F7/49947Rounding
    • G06F7/49957Implementation of IEEE-754 Standard
    • 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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】スティッキービットを生成するためのハードウェア資源を低減しながら、スティッキービットを生成するために必要となるサイクルタイムを削減して、スティッキービットを効率良く生成できるようにする。
【解決手段】演算結果の正規化の際に演算結果がシフトされたか否かを表す情報の生成を行なう演算処理装置において、演算結果を出力する演算手段と、複数のシフト手段を有し、演算結果に対する正規化処理を複数のシフト手段により分割して行なう正規化処理手段30と、複数のシフト手段に対する複数のシフト量を算出するシフト量算出手段と、複数のシフト量を用いて、演算結果の正規化の際に演算結果がシフトされるか否かの予測結果である仮情報の生成を行なう予測手段51と、仮情報を用いて、前記情報の生成を行なう生成手段52とをそなえる。
【選択図】図2

Description

本発明は、演算処理装置の浮動小数点積和演算器(FMA:Floating-point Multiply Adder)において、スティッキービット(Sticky bit)を用いて演算結果の丸め処理を行なう技術に関し、特に、演算結果の丸め処理における正規化シフト量を所定ビット(例えば1ビット)の誤差以内で求める予測論理を使用する場合にスティッキービットを効率良く求めるための技術に関する。
従来から、浮動小数点積和演算器(FMA:Floating-point Multiply Adder)は、例えば図12に示すごとく構成される。この図12に示す浮動小数点積和演算器100は、右シフト部(Aligner(Right Shifter))10,乗算器(CSA(Carry Save Adder) Tree)11,CSA(Carry Save Adder)12,絶対値加算器(Abs. Adder)13,シフト量算出部(L. Z. Predictor(Leading Zero Predictor))20,正規化処理部(Normalizer(Left Shifter))300,及び丸め処理部(Rounder)400をそなえて構成されている。
なお、浮動小数点積和演算器100は、例えばIEEE(The Institute of Electrical and Electronics Engineers, Inc.;米国電子技術者協会)754準拠の単精度演算と倍精度演算とをサポートする。
右シフト部10,乗算器11,CSA12及び絶対値加算器13は、3オペランド(図中“OP1”,“OP2”,“OP3”)の浮動小数点積和演算を実行する積和演算部として機能するものである。
シフト量算出部20は、絶対値加算器13からの出力データ(演算結果;後述する図13参照)の先頭からどれだけ“0”が連続しているかを求めるものであり、この結果が正規化処理部300に入力されるシフト量(Shift Amount)となる。つまり、シフト量算出部20は、正規化処理部300による左シフト処理(正規化処理)に用いる正規化シフト量を算出する。
ここで、浮動小数点積和演算器100では、高速化のために、絶対値加算器13による処理と並行して、シフト量算出部20が正規化シフト量を算出するように構成されており、シフト量算出部20は、絶対値加算器13の出力データではなく、前段のCSA12の出力データ(すなわち、絶対値加算器13の入力データ)を用いて正規化シフト量を算出する。なお、シフト量算出部20によって算出された正規化シフト量は、ここでは7ビットで表わされるデータで正規化処理部300に出力される。
さらに、このようなシフト量算出部20では、算出する正規化シフト量が1ビット不足する場合がある。
正規化処理部300は、シフト量算出部20によって算出された正規化シフト量を用いて絶対値加算器13の出力データ(以下、演算結果という)に対してシフト処理を施すものであり、正規化処理部300によって演算結果の所定ビット位置が必ず“1”になる。
丸め処理部400は、正規化処理部300によって正規化処理を施された演算結果に対して丸め処理を行なうものであり、丸め処理部400は丸め処理に必要なスティッキービットを自身で生成する。つまり、丸め処理部400は、本浮動小数点積和演算器100の出力データとしての演算結果の仮数部(後述する図14,図15参照)の精度を向上すべく、演算結果において仮数部以外の切り捨てられる領域(スティッキービット生成領域;後述する図14,図15参照)に“1”がある場合には、当該仮数部に“1”を加える丸め処理を施す。
ここで、図13に示すごとく、絶対値加算器13の出力データである演算結果は、例えば128ビット長データ(“0”もしくは“1”のデータ)からなり、C<127:0>で表わされる。なお、C<127:125>は固定値“000”となる。
そして、浮動小数点積和演算器100が単精度演算をサポートする場合には、正規化処理部300によって正規化処理を施された正規化処理部300からの出力データ(R<127:0>)は、図14に示すごとく構成される。
つまり、128ビットの演算結果(R<127:0>)のうち、最上位から4ビットのR<127:124>は固定値のフィールドであり、R<123:101>の23ビットが仮数部であり、さらに、その後段のR<100>がG(guard)ビット、R<99>がR(round)ビットであり、残りのR<98:0>の99ビットがスティッキービットの生成対象範囲となるスティッキービット生成領域となる。
また、浮動小数点積和演算器100が倍精度演算をサポートする場合には、正規化処理部300によって正規化処理を施された正規化処理部300からの出力データ(R<127:0>)は図15に示すごとく構成される。
つまり、128ビットの演算結果のうち、最上位から4ビットのR<127:124>は固定値のフィールドであり、R<123:72>の52ビットが仮数部であり、さらに、その後段のR<71>がG(guard)ビット、R<70>がR(round)ビットであり、残りのR<69:0>の70ビットがスティッキービットの生成対象範囲となるスティッキービット生成領域となる。
なお、図14,図15に示す単精度演算及び倍精度演算それぞれの場合において、R<127:124>は固定値のフィールドで“0000”のままであるが、正規化処理部300による正規化処理によって、R<124>が必ず“1”になる。
図16に正規化処理部300及び丸め処理部400の構成を示す。この図16に示すように、正規化処理部300は、複数段のシフタ31〜35、つまり、第1シフト部(1st left shifter)31,第2シフト部(2nd left shifter)32,第3シフト部(3rd left shifter)33,第4シフト部(4th left shifter)34,及び1ビットシフト部(1bit left shifter)35をそなえて構成されている。
第1〜第4シフト部31〜34は、シフト量算出部20によって7ビット長のデータとして算出された正規化シフト量SA<6:0>(SA:Shift Amount)を用いて演算結果に正規化処理(左シフト)を行なう。
図13に示したように、入力データ(演算結果)が128ビットのデータであるため、第1〜第4シフト部31〜34によるシフト量(つまり、シフト量算出部20によって算出される正規化シフト量)は、最大で127ビットとなる。そのため、ここでは、第1シフト部31は正規化シフト量として、7ビット長データのうち1ビットのデータに基づいて、64ビット又は0ビットのシフトを行なうことができ、第2シフト部32は7ビット長データのうち2ビットのデータに基づいて、48,32,16,0のいずれかのビットのシフトを行なうことができ、第3シフト部33は7ビット長データのうち2ビットのデータに基づいて、12,8,4,0のいずれかのビットのシフトを行なうことができ、第4シフト部34は7ビット長データのうち2ビットのデータに基づいて、3,2,1,0のいずれかのビットのシフトを行なうことができる。
1ビットシフト部35は、第4シフト部34による正規化処理の結果、所定のビット位置(ここではR<124>)が“1”になるようにシフトされているか否かを判断し、所定のビット位置が“1”でなければ、シフト量算出部20によって算出された正規化シフト量が1ビット不足していたものとして、第4シフト部34によって正規化処理を施された演算結果に対してさらに1ビットの左シフト処理を施す。その結果、かかる所定のビット位置のデータは“1”になる。
つまり、1ビットシフト部35は、第4シフト部34の出力データの所定ビット位置が“0”であるか“1”であるかを判断し、“1”である場合にはシフト処理を実行しない。一方、シフト量算出部20によって算出された正規化シフト量が1ビット不足しているために所定ビット位置が“0”である場合には、正規化処理を完了すべく、所定ビット位置が“1”になるように、第4シフト部34の出力データを1ビットだけシフトする。
また、図16に示すごとく、丸め処理部400は、インクリメンタ(Incrementer)41,スティッキービット生成部42,丸め判定部(Judge Round)43,及び選択回路44から構成される。
インクリメンタ41は、正規化処理部300によって正規化処理を施された演算結果のうちの、仮数部(単精度演算の場合はR<123:101>,倍精度演算の場合はR<123:72>)に“1”を加える丸め処理を行なう。
スティッキービット生成部42は、インクリメンタ41によって丸め処理を施された演算結果を最終的に出力するか否かを丸め判定部43が判断するのに用いるスティッキービットを生成する。スティッキービット生成部42は、スティッキービット生成領域に“1”のデータが含まれているか否かを、スティッキービット生成領域のすべてのデータに対して論理和演算を行なうことにより判断し、スティッキービット生成領域に少なくとも一つ“1”が含まれる場合にはスティッキービットを“1”に設定する。
したがって、単精度演算の場合には、スティッキービット生成部42はR<98:0>の99ビットのデータの論理和演算を行なうことによって、このスティッキービット生成領域に“1”が存在するか否かを判断してスティッキービットを生成する。また、倍精度演算の場合には、スティッキービット生成部42はR<69:0>の70ビットのデータの論理和演算を行なうことによってスティッキービットを生成する。
丸め判定部43は、スティッキービット生成部42によって生成されたスティッキービット,演算結果における仮数部の最下位ビットであるL(Least significant bit)ビット,G(Guard)ビット,R(Round)ビット(図14,図15参照)とともに、外部から入力されるRD(Round Direction)ビット及びSIGNビットに基づいて、丸め処理が必要であるか否かを判断する。そして、丸め判定部43は、かかる判定の結果を選択回路44に出力する。
選択回路44は、丸め判定部43による判定結果に基づいて、インクリメンタ41を介して入力される丸め処理を施された演算結果と、正規化処理部300から出力されたままの演算結果とのいずれか一方を出力するものである。
つまり、選択回路44は、丸め判定部43による判定結果が丸め処理が必要であると判断された場合には、インクリメンタ41によって丸め処理を施された演算結果を出力する一方、丸め判定部43による判定結果が丸め処理が不要であると判断された場合には、正規化処理部300から出力されたままの丸め処理が施されていない演算結果を出力する。
また、従来から、正規化処理前の積和演算結果の仮数部を、正規化シフト量に基づいて生成されたマスクデータを用いてマスクすることによってスティッキービットを生成する技術がある(例えば、下記特許文献1参照)。
特開平8−212192号公報
しかしながら、図12に示す従来の浮動小数点積和演算器100では、スティッキービット生成部42がスティッキービットを生成するために最大(単精度演算の場合)で99ビット長のデータの論理和演算を必要がある。これは56ビット長のデータをAND回路で処理する場合と同程度のディレイである56ビットのインクリメンタ41よりもディレイが大きい。
さらに、浮動小数点積和演算器100では、正規化処理部300によって演算結果に正規化処理を施し、次いでスティッキービット生成部42がスティッキービットを生成した後にさらに丸め判定部43が丸め判定を行なうことによりデータを選択するので、正規化処理部300からデータが出力されてから丸め処理部400(すなわち浮動小数点積和演算器100)からデータが出力されるまで、ディレイが厳しい結果となる。
また、近年では、浮動小数点積和演算器100が搭載される中央処理装置の周波数は2GHzを大きく超えている。このような2GHz以上の周波数になると、サイクルタイムが非常に短いため,128ビット幅のシフト部(Left Shifter)以上のディレイ時間が要求される正規化処理を、正規化処理部300において1サイクルで実行するのは困難である。まして丸め処理部400の処理も同じサイクルタイムで実行するのは困難である。したがって、図17に破線Yで示すごとく、正規化処理部300による処理と丸め処理部400による処理との間でパイプラインステージを分割するのが一般的である。なお、図17に示す例は、単精度演算をサポートする場合であり、破線Xで示すごとく、第1シフト部31による処理と第2シフト部32による処理の間でパイプラインステージが切られ、また、破線Zで示すごとく、選択回路44からの出力後もパイプラインステージが切られている。
この図17に示すように、パイプラインステージを分割する場合には、パイプラインステージを切ったところでデータをラッチ(Latch)する必要があり、正規化処理部300による処理と丸め処理部400による処理との境界では、128ビットのデータをラッチすることになる。つまり、このステージングラッチでは、スティッキービット生成部42がスティッキービットを生成するためだけに使用するスティッキービット生成領域の99ビットのデータ(R<98:0>)をラッチしなくてはならず、かかるステージングラッチのための配置・配線(物量)が膨大になってしまう。なお、倍精度演算をサポートする場合でも、スティッキービットを生成するためだけに、スティッキービット生成領域の70ビット幅のデータ(R<69:0>)をラッチしなくてはならない。
また、上記特許文献1に開示されている技術では、シフト量算出部(最上位桁検出部)によって算出された正規化シフト量が1ビット不足する場合に対応するために、正規化シフト量が1ビット不足していない場合のマスクと、正規化シフト量が1ビット不足している場合のマスクとの2種類のマスクを作成する必要がある。
そして、(1)正規化処理の結果を見て正規化シフト量が1ビット不足しているか否かを判断し、上記の2種類のマスクのいずれか一方を採用する方法、又は、(2)上記の2種類のマスクのそれぞれを用いた処理結果を用意しておき、正規化処理の結果に基づいていずれか一方の処理結果を選択する方法のいずれか一方の方法を採用する必要がある。
しかしながら、上記(1)の方法を採用した場合には、ディレイが非常に大きいものになってしまう。また、上記(2)の方法を採用した場合には、マスク処理や論理和演算処理のためのハードウェア資源(物量)が増大してしまう。
本発明は、このような課題に鑑み創案されたもので、スティッキービットを生成するためのハードウェア資源を低減しながら、スティッキービットを生成するために必要となるサイクルタイムを削減して、スティッキービットを効率良く生成できるようにすることを目的とする。
上記目的を達成するために、本発明における演算処理装置は、演算結果の正規化の際に1がシフトされたか否かを表すスティッキービットを用いて演算結果の丸め処理を行なう演算処理装置において、前記演算結果を出力する演算手段と、少なくとも2つ以上のシフト手段を有し、前記演算結果に対する正規化処理を前記複数のシフト手段により分割して行なう正規化処理手段と、前記複数のシフト手段に対する複数のシフト量を算出するシフト量算出手段と、前記複数のシフト量を用いて、演算結果の正規化の際に1がシフトされる否かの予測結果である仮スティッキービットの生成を行なうスティッキービット予測手段と、前記仮スティッキービットを用いて、前記スティッキービットの生成を行なうスティッキービット生成手段とを有することを特徴とする演算処理装置であることを特徴とする(請求項1)。
上記目的を達成するために、本発明における前記演算処理装置はさらに、前記スティッキービットを用いて前記丸め処理を行なうか否かの判定結果を出力する丸め判定手段と、前記演算結果に1を加算するインクリメント手段と、前記判定結果を用いて、前記演算結果と前記インクリメント手段の出力のいずれかを選択する選択手段とを有することを特徴とする(請求項2)。
上記目的を達成するために、本発明における演算処理装置は、演算結果の正規化の際に1がシフトされたか否かを表すスティッキービットを用いて演算結果の丸め処理を行なう演算処理装置により演算を行なう情報処理装置において、前記演算結果を出力する演算手段と、少なくとも2つ以上のシフト手段を有し、前記演算結果に対する正規化処理を前記複数のシフト手段により分割して行なう正規化処理手段と、前記複数のシフト手段に対する複数のシフト量を算出するシフト量算出手段と、前記複数のシフト量を用いて、演算結果の正規化の際に1がシフトされる否かの予測結果である仮スティッキービットの生成を行なうスティッキービット予測手段と、前記仮スティッキービットを用いて、前記スティッキービットの生成を行なうスティッキービット生成手段とを有する演算処理装置により演算を行なうことを特徴とする情報処理装置であることを特徴とする(請求項3)。
上記目的を達成するために、本発明における前記演算処理装置はさらに、前記スティッキービットを用いて前記丸め処理を行なうか否かの判定結果を出力する丸め判定手段と、前記演算結果に1を加算するインクリメント手段と、前記判定結果を用いて、前記演算結果と前記インクリメント手段の出力のいずれかを選択する選択手段とを有することを特徴とする(請求項4)。
上記目的を達成するために、本発明における演算処理方法は、演算結果の正規化の際に1がシフトされたか否かを表すスティッキービットを用いて演算結果の丸め処理を行なう演算処理方法において、前記演算結果を出力するステップと、少なくとも2つ以上のシフト処理ステップにおいて用いる複数のシフト量を算出するシフト量算出ステップと、前記演算結果に対する正規化処理を、前記シフト量を用いてそれぞれ前記複数のシフト処理ステップに分割して行なう正規化処理ステップと、前記複数のシフト量を用いて、演算結果の正規化の際に1がシフトされる否かの予測結果である仮スティッキービットの生成を行なうスティッキービット予測ステップと、前記仮スティッキービットを用いて、前記スティッキービットの生成を行なうスティッキービット生成ステップとを有することを特徴とする(請求項5)。
このように、本発明によれば、論理和算出部が正規化処理部による正規化処理と並行して、仮スティッキービットを算出し、生成部がこの仮スティッキービットと、正規化処理部によって正規化処理を施された演算結果のうちスティッキービット生成領域の一部のデータとに基づいてスティッキービットの生成を行なうため、正規化処理後にスティッキービット生成領域にかかるすべてのデータについて論理和を算出する必要がなく、ディレイの増大を防止して効率良くスティッキービットを生成することができる。
具体的には従来の方式では、99入力が必要であった論理和回路を5入力の論理和回路にすることが可能であり、演算ディレイ及びパイプラン段数を大幅に削減しクロック周波数の向上に貢献することが可能となる。
また、正規化処理部による正規化処理と丸め処理部による処理との間のパイプラインステージを分割した場合には、正規化処理と並行してスティッキービットを生成しているので、演算結果すべてをラッチする必要はなく、演算結果からスティッキービット生成領域を除いた領域をラッチするだけで良いため、係るラッチのためのステージングラッチや配置配線にかかるハードウェア資源を低減することができる。具体的には、従来の方式では単精度演算及び倍制度演算のために128ビットのデータ幅が必要であったラッチを60ビット幅にすることが可能となり、配置配線等の物理量を大幅に削減することが可能となる。
さらに、スティッキービット生成部の処理対象領域である第2領域に、正規化シフト量の不足分の正規化処理を施す1ビットシフト部によって処理が施されうる領域が含まれているため、シフト量算出部によって算出された正規化シフト量が所定ビット不足しているか否かにより、それぞれに対応する専用のハードウェアを用意する必要がなく、正規化シフト量が不足している場合にも関わらずスティッキービットを確実に生成することができる。
したがって、上述した特許文献1に開示された技術のように、正規化シフト量が所定ビット不足した場合と、不足しない場合との両方の場合に対応するために、ディレイ増加や物量増加を招くことがない。
従って、従来のように演算結果の正規化処理後にスティッキービットの生成処理を行う方式よりも、本方式は物理量の大幅削減を可能とし、演算ディレイ及びパイプラン段数を大幅に削減することができるという特有の効果を有する。
以下、図面を参照しながら本発明の実施の形態について説明する。
〔1〕本発明の単精度演算における実施形態について
まず、図1に示すブロック図を参照しながら、本発明の一実施形態としての浮動小数点積和演算器の構成について説明する。なお、図1において記述の符号と同一の符号は同一の部分もしくは略同一の部分を示している。したがって、ここではこれらの詳細な説明は一部省略する。
この図1に示すように、本浮動小数点積和演算器1は、右シフト部(Aligner(Right Shifter))10,乗算器(Multiplier(CSA(Carry Save Adder) Tree))11,CSA(Carry Save Adder)12,絶対値加算器(Abs. Adder)13,シフト量算出部(L. Z. Predictor(Leading Zero Predictor);シフト量算出手段)20,正規化処理部(Normalizer(Left Shifter);正規化処理手段)30,丸め処理部(Rounder)40,及びスティッキービット生成部(Sticky bit Generator)50をそなえて構成されている。
なお、本浮動小数点積和演算器1は、例えばIEEE(The Institute of Electrical and Electronics Engineers, Inc.;米国電子技術者協会)754準拠の単精度演算をサポートする。
また、絶対値加算器13からの出力データ(演算結果;正規化処理部30の入力データフォーマット)は上記図13に示したもの(C<127:0>)と同様であり、本浮動小数点積和演算器1が単精度演算をサポートする場合のデータ構造(正規化処理部30の出力データフォーマット)は上記図14に示したもの(R<127:0>)と同様である。したがって、以下の説明においても、演算結果(入力データフォーマット)や出力データ(出力データフォーマット)については上記図13〜図15を用いて説明する。
右シフト部10,乗算器11,CSA12及び絶対値加算器13は、3オペランド(図中“OP1”,“OP2”,“OP3”)の浮動小数点積和演算を実行する積和演算部として機能するものである。なお、この積和演算部の演算結果(すなわち、絶対値加算器13の出力データ)は、上記図13に示すようにC<127:0>で表わされる。
シフト量算出部20は、絶対値加算器13からの出力データ(演算結果)の先頭からどれだけ“0”が連続しているかを予測するものであり、この結果が正規化処理部30のシフト量(Shift Amount)となる。つまり、シフト量算出部20は、正規化処理部30による左シフト処理(正規化処理)に用いる、演算結果に対する正規化シフト量を算出する。なお、シフト量算出部20によって算出される正規化シフト量は1ビット不足する場合がある。
正規化処理部30は、シフト量算出部20によって算出された正規化シフト量を用いて絶対値加算器13の出力データ(以下、演算結果という)に対して左シフト処理(正規化処理)を施すものであり、正規化処理部30によって演算結果の所定ビット位置(ここではR<124>)が必ず“1”になる。
ここで、図2に本浮動小数点積和演算器1の正規化処理部30,丸め処理部40,及びスティッキービット生成部50の構成を示す。この図2に示すごとく、正規化処理部30は、複数段のシフタ31〜35、つまり、第1シフト部(1st left shifter)31,第2シフト部(2nd left shifter)32,第3シフト部(3rd left shifter)33,第4シフト部(4th left shifter)34,及び1ビットシフト部(1bit left shifter(第2処理部))35をそなえて構成されている。
第1〜第4シフト部31〜34は、シフト量算出部20によって算出された正規化シフト量(7ビットのデータ:SA<6:0>)を用いて演算結果に正規化処理(左シフト)を行なう第1処理部として機能する。
ここで、演算結果は128ビットのデータであるため、第1〜第4シフト部31〜34によるシフト量(つまり、シフト量算出部20によって算出される正規化シフト量)は、最大で127ビットとなる。そのため、ここでは、第1シフト部31は正規化シフト量である7ビット長データSA<6:0>のうちSA<6>に基づいて、64ビットもしくは0ビットのシフトを行なうことができ、第2シフト部32はSA<6:0>のうちSA<5:4>に基づいて、48,32,16,0のいずれかのビットのシフトを行なうことができ、第3シフト部33はSA<6:0>のうちSA<3:2>に基づいて、12,8,4,0のいずれかのビットのシフトを行なうことができ、第4シフト部34はSA<6:0>のうちSA<1:0>に基づいて、3,2,1,0のいずれかのビットのシフトを行なうことができる。
なお、上述のごとく、7ビット長のデータで出力される正規化シフト量のうち、第1シフト部31には正規化シフト量が64ビット以上であるか否か、つまり、第1シフト部31が64ビットのシフト処理を実行するか否かを示す1ビットのデータ(SA<6>)が入力され、SA<6>が“1”の場合は64ビットのシフトを実行し、SA<6>が“0”の場合はシフトを実行しない。
また、第2シフト部32〜第4シフト部34に入力される正規化シフト量がSA<5:0>で表わされる場合、第2シフト部32はSA<5:4>に基づいて正規化処理を実行する。ここでは、第2シフト部32は、SA<5:4>が“11”の場合は48ビットのシフトを実行し、SA<5:4>が“10”の場合は32ビットのシフトを実行し、SA<5:4>が“01”の場合は16ビットのシフトを実行し、SA<5:4>が00“00”の場合はシフトを実行しない。
また、これと同様に、第3シフト部33は、SA<3:2>が“11”の場合は12ビットのシフトを実行し、SA<3:2>が“10”の場合は8ビットのシフトを実行し、SA<3:2>が“01”の場合は4ビットのシフトを実行し、SA<3:2>が“00”の場合はシフトを実行しない。
また、これと同様に、第4シフト部34は、SA<1:0>が“11”の場合は3ビットのシフトを実行し、SA<1:0>が“10”の場合は2ビットのシフトを実行し、SA<1:0>が“01”の場合は1ビットのシフトを実行し、SA<1:0>が“00”の場合はシフトを実行しない。
1ビットシフト部35は、第4シフト部34による正規化シフト量に基づく正規化処理の結果、所定のビット位置R<124>が“1”になるようにシフトされているか否か(正規化シフト量が不足しているか否か)を判断し、所定のビット位置が“1”でなければ、シフト量算出部20によって算出された正規化シフト量が1ビット不足していたものとして、第4シフト部34によって正規化処理を施された演算結果に対してさらに1ビットのシフト処理を施す。その結果、かかる所定のビット位置のデータは“1”になる。
つまり、1ビットシフト部35は、第4シフト部34の出力データの所定ビット位置が“0”であるか“1”であるかを判断し、“1”である場合にはシフト処理を実行しない。
一方、シフト量算出部20によって算出された正規化シフト量が1ビット不足しているために所定ビット位置が“0”である場合には、正規化処理を完了すべく(すなわち、所定ビット位置を“1”にすべく)、第4シフト部34の出力データを1ビットだけシフトする。
なお、本浮動小数点積和演算器1では、スティッキービット生成部50が正規化処理部30による正規化処理と並行しながらスティッキービットを生成するため、正規化処理部30は丸め処理部40に対して正規化処理を施した演算結果の全ビットではなく、かかる演算結果のうち、スティッキービット生成領域を除いた部分を丸め処理部40に出力する。換言すると、丸め処理部40には、単精度演算の場合にはR<127:99>の29ビット長のデータが丸め処理部40に入力される。
また、図2に示すごとく、スティッキービット生成部50は、正規化処理部30による正規化処理と並行してスティッキービットを生成するものであり、論理和算出部(Sticky bit Predictor;予測手段)51及び生成部(図中“make sticky”と表記;生成手段)52をそなえて構成されている。
このスティッキービット生成部50は、具体的に、正規化処理部30の出力データ(R<127:0>)のうちのスティッキービット生成領域(単精度演算の場合は図14のR<98:0>、1ビットでも“1”があれば、スティッキービットをオンに設定し、スティッキービット生成領域の全ビットが“0”であればスティッキービットをオフに設定するものであり、論理和算出部51と生成部52とによってスティッキービットを生成する。
論理和算出部51は、正規化処理部30による正規化処理と並行しながら、演算結果における最下位ビットから所定領域内のデータが、正規化処理部30による正規化処理によってスティッキービット生成領域内に移行されるか否かを予測し、スティッキービット生成領域内に移行されると予測したデータの論理和を仮スティッキービット(Interim Sticky bit)として算出するものである。
ここでは、論理和算出部51は、第1シフト部31による正規化処理を施された演算結果に対して、かかる演算結果のうちの所定領域(第1領域)のデータが、正規化処理部30による正規化処理によってスティッキービット生成領域にシフトされるか否かを、第2シフト部32及び第3シフト部33に入力される正規化シフト量(4ビットのデータ;SA<5:2>)を用いて予測し、予測したスティッキービット生成領域内にシフトされるデータが“1”を含むか否かを判断する。これにより、論理和算出部51は仮スティッキービットを生成する。
ここで、本浮動小数点積和演算器1が単精度演算をサポートする場合について説明する。
本浮動小数点積和演算器1では、正規化処理部20が左シフト処理を施すので、R<98:0>に“1”があるか否かのチェックは、正規化シフト量を用いてC<98:0>の範囲に“1”を含むか否かをチェックすることにより実行することができる。
具体的には、論理和算出部51は、まず、第2シフト部32〜第4シフト部34がシフトしうる最大範囲である63ビットに、1ビットシフト部35がシフトしうる1ビットを加えた64ビット長分の正規化処理が実行されたとしても、R<98:0>に含まれる範囲、つまり、正規化シフト量に関係なくスティッキービット生成領域に残る範囲に対して、論理和演算処理を施す。
単精度演算の場合、論理和算出部51は、最大シフト量である64ビットの左シフトが実行されてもR<98:64>になるC<34:0>について、論理和演算を行なう。
さらに、論理和算出部51は、上記の正規化シフト量に係わらずR<98:0>に含まれる部分を除いた範囲、ここでは、上記C<34;0>を除いた範囲であるC<94:35>を対象に処理を行なう。ここでは、C<94:35>において、正規化シフト量(SA<5:2>)に基づくシフト処理によってR<98:0>の外に出ない部分について、4ビット単位で論理和演算して検証する。なお、4ビット単位で論理和演算するのは、第3シフト部33が4ビット単位でシフト量が変化するように構成されているためである。
つまり、図5(a)に示すごとく、C<94:91>について、SA<5:2>が“0000”の場合にはシフト量が0〜3ビットとなるため、このC<94:91>はR<98:0>の範囲内に必ず残るため、この場合に限り、C<94:91>を論理和演算した結果をPAT<14>として出力する。一方、SA<5:2>が“0001”の場合にはシフト量が4〜7ビットとなるため、このC<94:91>はR<98:95>の範囲内に収まるか、もしくは、R<98:0>の範囲外に出るため、生成部52により処理を行なう。
この図5(a)に示す処理は、例えば図6に示すOR(論理和)ゲート,NOT(否定)ゲート,及びAND(論理積)ゲートからなる論理回路51aによって実現される。すなわち、論理和算出部51は、回路51aをそなえている。また論理回路51aの入力信号S16は、例えば図3に示す論理回路32aによって実現される。つまり、論理和算出部51は、SA<5>とSA<4>との論理和をS16(16ビット以上のシフトを行なうか否かを示す信号)として出力するORゲート32a−3を備える論理回路32aをそなえている。また同様に、論理回路51aの入力信号S4は、例えば図4に示す論理回路33aによって実現される。つまり、論理和算出部51は、SA<3>とSA<2>との論理和をS4(4ビット以上のシフトを行なうか否かを示す信号)として出力するORゲート33a−3を備える論理回路33aをそなえている。
次に、図5(b)に示すごとく、C<90:87>について、SA<5:2>が“0001”以下の場合には、このC<90:87>はR<98:0>の範囲内に必ず残るため、C<90:87>を論理和演算した結果をPAT<13>として出力する。一方、SA<5:2>が“0010”の場合には、このC<90:87>はR<98:95>の範囲内に収まるか、もしくは、R<98:0>の範囲外に出るため、予測を行わずにシフト結果を用いて生成部52により処理を行なう。
この図5(b)に示す処理は、例えば図7に示すORゲート,NOTゲート,及びANDゲートからなる論理回路51bによって実現される。つまり、論理和算出部51は、C<90:87>の論理和を出力するORゲート51b−1と、S16,S8をそれぞれ反転出力するNOTゲート51b−2,51b−3と、これらNOTゲート51b−2,51b−3からの出力の論理積を出力するANDゲート51b−4と、ORゲート51b−1の出力とANDゲート51b−4の出力との論理積をPAT<13>として出力するANDゲート51b−5とからなる論理回路51bをそなえている。また論理回路51bの入力信号S16は、例えば図3に示す論理回路32aによって実現される。つまり、論理和算出部51は、SA<5>とSA<4>との論理和をS16(16ビット以上のシフトを行なうか否かを示す信号)として出力するORゲート32a−3からなる論理回路32aをそなえている。また同様に、論理回路51bの入力信号S8は、例えば図4に示す論理回路33aによって実現される。つまり、論理和算出部51は、SA<3>をS8(8ビット以上のシフトを行なうか否かを示す信号)として出力するバッファゲート33a−2からなる論理回路33aをそなえている。
以降、C<86:35>までのデータについても、4ビット毎のデータを対象に、正規化シフト量の値を1ビットずつ増やしながら同様の場合分けをして、論理和演算を行うことによりPAT<12>〜PAT<1>として出力するか、もしくは、予測を行わずにシフトした結果を用いて処理を行う。
そして、図5(c)に示すごとく、最後のC<38:35>については、SA<5:2>が“1110”以下の場合には、このC<38:35>はR<98:0>の範囲内に必ず残るため、この場合に限り、C<38:35>を論理和演算した結果をPAT<0>として出力する。一方、SA<5:2>が“1111”の場合には、このC<38:35>はR<98:95>の範囲内に収まるか、もしくは、R<98:0>の範囲外に出るため、生成部52により処理を行なう。
この図5(c)に示す処理は、例えば図8に示すORゲート,NANDゲート,及びANDゲートからなる論理回路51cによって実現される。つまり、論理和算出部51は、C<38:35>の論理和を出力するORゲート51c−1と、S48とS12との否定論理積を出力するNANDゲート51c−2と、ORゲート51c−1の出力とNANDゲート51c−2の出力との論理積をPAT<0>として出力するANDゲート51c−3とからなる論理回路51cをそなえている。また論理回路51bの入力信号S48は、例えば図3に示す論理回路32aによって実現される。つまり、論理和算出部51は、SA<5>とSA<4>との論理積をS48(48ビットのシフトを行なうか否かを示す信号)として出力するANDゲート32a−1からなる論理回路32aをそなえている。また同様に、論理回路51bの入力信号S12は、例えば図4に示す論理回路33aによって実現される。つまり、論理和算出部51は、SA<3>とSA<2>との論理積をS12(12ビットのシフトを行なうか否かを示す信号)として出力するANDゲート33a−1からなる論理回路33aをそなえている。
このように、論理和算出部51がC<94:35>のデータを対象に、上述のごとく処理を行なうことによって、PAT<14:0>が出力される。
最後に、論理和算出部51は、図18に示すように構成された論理和回路51dによりPAT<14:0>の論理和演算を行なうことによって、仮スティッキービットを生成する。ここで、PAT<14:0>のうちの少なくとも1ビットが“1”であれば、論理和算出部51(論理回路51d)は仮スティッキービットをオン(すなわち“1”)に設定する一方、全ビットが“0”であれば、仮スティッキービットをオフ(すなわち“0”)に設定する。
このように、論理和算出部51は、単精度演算をサポートする場合には、C<94:0>(第1領域)のデータを対象に、正規化処理部30(ここでは第1シフト部31〜第3シフト部33)による正規化処理によってスティッキービット生成領域にシフトされるデータを予測して、この予測に基づいて仮スティッキービットを生成する。
次に、生成部52について説明を行なう。生成部52は正規化処理部30によって正規化処理を施された演算結果におけるスティッキービット生成領域のうち第2領域であるR<98:95>の範囲内のデータと、論理和算出部51によって算出された仮スティッキービットとに基づいて、スティッキービットを生成するものである。
つまり、論理和算出部51は正規化シフト量のSA<5:0>のうちのSA<5:2>にかかる正規化処理について予測を行なったが、生成部52はSA<1:0>にかかる正規化処理について予測は行なわず、1ビットシフト部35の結果による最終的なシフト結果を利用する。
すなわち、第4シフト部34がシフトしうる最大のシフト量である3ビットと、1ビットシフト部がシフトしうる1ビットとを合わせた、R<98:95>の4ビット長データの範囲については、論理和演算を行なう。
したがって、ここでは、生成部52は、R<98:95>の4ビットと、仮スティッキービットの1ビットとの計5ビット長のデータを論理和演算し、これら5ビット長のデータのうち1ビットでも“1”であれば、スティッキービットをオンに設定する一方、全ビットが“0”であればスティッキービットをオフに設定する。
このように、生成部52が論理和演算を処理しうるビット数は、必ず1ビットシフト部35が担当しうるシフト量(ここでは1ビット)以上になる。
また、本浮動小数点積和演算器1では、第1処理部として機能する第1シフト部31〜第4シフト部34のうちの、最終段の第4シフト部34が、これら複数段のシフト部31〜34の中で最も少ないシフト量を処理しうるように構成されている。これにより、生成部52が論理和演算を処理しうるビット数を最小にすることができ、生成部52の回路規模を最小にすることが可能となるとともに、生成部52のディレイも最小にすることができる。
次に、生成部52について説明すると、生成部52は正規化処理部30によって正規化処理を施された演算結果におけるスティッキービット生成領域のうちの第1領域(ここではC<65:0>)の範囲と同範囲の領域を除いた領域(ここではR<69:66>;第2領域)の範囲内のデータと、論理和算出部51によって算出された仮スティッキービットとに基づいて、スティッキービットを生成するものである。
つまり、生成部52はSA<1:0>にかかる正規化処理について予測は行なわず、R<69:66>の4ビットのデータについては、論理和演算を行なう。
したがって、生成部52は、R<69:66>の4ビットと、仮スティッキービットの1ビットとの計5ビットのデータを論理和演算し、これら5ビット長のデータのうち1ビットでも“1”であれば、スティッキービットをオンに設定する一方、全ビットが“0”であればスティッキービットをオフに設定する。
次に、丸め処理部40について説明する。図2に示すように、丸め処理部40は、正規化処理部30によって正規化処理を施された演算結果に対して、スティッキービット生成部50の生成部52によって生成されたスティッキービットに基づいて丸め処理を施すものであり、インクリメンタ(Incrementer;増分手段)41,丸め判定部(Judge Round;丸め判定手段)43,及び選択回路(選択手段)44をそなえて構成されている。
インクリメンタ41は、正規化処理部30によって正規化処理を施された演算結果のうちの、仮数部(単精度演算の場合はC<123:101>)に“1”を加える丸め処理を行なう。
丸め判定部43は、(1)スティッキービット生成部50によって生成されたスティッキービット、(2)正規化処理部30から出力された演算結果における仮数部の最下位ビットであるL(Least significant bit)ビット(図14,図15参照)、(3)かかる演算結果におけるG(Guard)ビット、(4)かかる演算結果におけるR(Round)ビット(図14,図15参照)、(5)外部から入力されるRD(Round Direction:丸め方向)ビット、及び、(6)外部から入力されるSIGN(符号)ビットに基づいて、丸め処理が必要であるか否かを判断する。そして、丸め判定部43は、かかる判定の結果を選択回路44に出力する。
選択回路44は、丸め判定部43による判定結果に基づいて、インクリメンタ41を介して入力された丸め処理を施された演算結果と、正規化処理部30から出力されたまま状態の演算結果とのいずれか一方を出力するものである。
つまり、選択回路44は、丸め判定部43による判定結果が丸め処理が必要である場合には、インクリメンタ41によって丸め処理を施された演算結果を出力する一方、丸め判定部43による判定結果が丸め処理が不要である場合には、丸め処理が施されていない演算結果である正規化処理部30の演算結果を出力する。
次に、図10を参照しながら、本浮動小数点積和演算器1の正規化処理部30,スティッキービット生成部50,及び丸め処理部40の動作例(パイプラインステージを分割する場合)について説明する。なお、図10は本浮動小数点積和演算器1が単精度演算の演算を行なう場合を示しており、図10において破線X〜Zはパイプラインステージの分割を行なう境界を示している。
図10に示すように、本浮動小数点積和演算器1では、正規化処理部30の第2シフト処理部32以降の処理に並行して、スティッキービット生成部50の論理和算出部51が処理を実行し、スティッキービット生成部50の生成部52は正規化処理部30による正規化処理後に、1ビットシフト部35の結果を用いてスティッキービットを生成する。
そして、上述したように、従来から正規化処理部30による正規化処理と、丸め処理部40による丸め処理との間は処理サイクルが長くなるため、パイプラインステージを分割するのが一般的であり、本浮動小数点積和演算器1でも破線Yに示すようにパイプラインステージを分割する場合がある。
この場合、1ビットシフト部35(つまり、正規化処理部30)から出力されるデータは、R<127:0>のうちの、スティッキービット生成領域R<98:0>を除いた、R<127:99>の29ビットのデータとなり、この29ビット長のデータをラッチするだけで良い。出力データからスティッキービット生成領域R<98:0>を除くことができるのは、スティッキービット生成部50がスティッキービットを生成するため、丸め処理部40にあらためてR<98:0>を出力する必要がないためである。
また、スティッキービット生成部50によって生成されたスティッキービット1ビット分をラッチする必要もある。
そして、ラッチされた29ビット長のデータのうち、R<127:101>はインクリメンタ41に入力されるとともに、インクリメンタ41をバイパスして選択回路44にも直接入力される。
さらに、ラッチされた29ビットのデータのうち、Lビット,Rビット,及びGビットに該当するR<101:99>の3ビット幅のデータは、丸め判定に用いられるため丸め判定部43に入力される。
そして、ラッチされた58ビット長のデータのうち、R<127:72>はインクリメンタ41に入力されるとともに、インクリメンタ41をバイパスして選択回路44にも直接入力される。
さらに、ラッチされた58ビット長のデータのうち、丸め判定部43による判定に用いられるLビット,Rビット,及びGビットに該当するR<72:70>の3ビット幅のデータは、丸め判定部43に入力される。
このように、本発明の一実施形態としての浮動小数点積和演算器1によれば、論理和算出部51が正規化処理部30による正規化処理と並行して、仮スティッキービットを算出し、生成部52が仮スティッキービットと、正規化処理部30によって正規化処理を施された演算結果のうちスティッキービット生成領域の一部データとに基づいてスティッキービットの生成をため、正規化処理後にスティッキービット生成領域にかかるすべてのデータについて論理和を算出する必要がなく、ディレイを防止して効率良くスティッキービットを生成することができる。
具体的には、単精度演算をサポートする場合、正規化処理部30による正規化処理後は、スティッキービット生成領域99ビットのデータを論理和演算するのではなく、5ビットのデータのみを論理和演算するだけで良いため、ディレイを大幅に削減することができる。
また、正規化処理部30による処理と丸め処理部40による処理との間のパイプラインステージを分割した場合には、正規化処理と並行してスティッキービットの生成を行なうため、演算結果データのすべて(R<127:0>)をラッチする必要はなく、スティッキービット生成領域を除いた範囲のみをラッチするだけで良いため、ラッチ等のハードウェア資源(物量)を削減することができる。具体的には、単精度演算用浮動小数点積和演算器において、従来は128ビット長のラッチ対象データを59ビット長(図11参照)にまで削減することができ、これらの差分である68ビット分のラッチを削減することができる。
さらに、本浮動小数点積和演算器1では、1ビットシフト部35による正規化処理の結果を考慮して、つまり、1ビットシフト部35による正規化処理で変化しうるスティッキービット生成領域(第2領域)については、当該正規化処理の結果に基づいてスティッキービットの生成を行なうので、スティッキービットの生成を正規化処理部30による正規化処理と並行して開始しながら、シフト量算出部20によって算出された正規化シフト量が1ビット不足しているか否かの場合分けを行なう必要がないため、正規化シフト量が不足しているかいないかに関わらずスティッキービットを確実に生成することができる。したがって、上述した特許文献1に開示された技術のように、この正規化シフト量が1ビット不足した場合と、不足しない場合との両方の場合に対応するために、ディレイや物量の増加が発生することはない。
また、正規化処理部30における複数段により構成されるシフト部31〜34のうち最終段の第4シフト部34による正規化処理に対して、論理和算出部51は予測を行なわずに、生成部52が第4シフト部34における正規化処理の結果に基づいてスティッキービットの生成を行なう。つまり、生成部52が処理対象とする第2領域は第4シフト部34による最大シフト量と1ビットシフト部35の1ビットとの合計である。これによって論理和算出部51が複数段により構成されるシフト部31〜34のすべてのシフト部(第1処理部)による正規化処理の結果を予測する方法よりも効率よく仮スティッキービットを生成することができる。
このとき、本浮動小数点積和演算器1では、第4シフト部34がシフト部31〜34の中で最もシフト量が少ないので、生成部52による処理も効率が良くなり、さらに、生成部52を構成する物量を低減することができる。
〔2〕本発明の倍精度演算における実施形態について
まず、図1に示すブロック図を参照しながら、本発明の一実施形態としての浮動小数点積和演算器の構成について説明する。なお、図1において記述の符号と同一の符号は同一の部分もしくは略同一の部分を示している。したがって、ここではこれらの詳細な説明は一部省略する。
この図1に示すように、本浮動小数点積和演算器1は、右シフト部(Aligner(Right Shifter))10,乗算器(Multiplier(CSA(Carry Save Adder) Tree))11,CSA(Carry Save Adder)12,絶対値加算器(Abs. Adder)13,シフト量算出部(L. Z. Predictor(Leading Zero Predictor))20,正規化処理部(Normalizer(Left Shifter))30,丸め処理部(Rounder)40,及びスティッキービット生成部(Sticky bit Generator)50をそなえて構成されている。
なお、本浮動小数点積和演算器1は、例えばIEEE(The Institute of Electrical and Electronics Engineers, Inc.;米国電子技術者協会)754準拠の倍精度演算をサポートする。
また、絶対値加算器13からの出力データ(演算結果;正規化処理部30の入力データフォーマット)は上記図13に示したもの(C<127:0>)と同様であり、本浮動小数点積和演算器1が倍精度演算をサポートする場合のデータ構造(正規化処理部30の出力データフォーマット)は上記図15に示したもの(R<127:0>)と同様である。したがって、以下の説明においても、演算結果(入力データフォーマット)や出力データ(出力データフォーマット)については上記図13〜図15を用いて説明する。
右シフト部10,乗算器11,CSA12及び絶対値加算器13は、3オペランド(図中“OP1”,“OP2”,“OP3”)の浮動小数点積和演算を実行する積和演算部として機能するものである。なお、この積和演算部の演算結果(すなわち、絶対値加算器13の出力データ)は、上記図13に示すようにC<127:0>で表わされる。
シフト量算出部20は、絶対値加算器13からの出力データ(演算結果)の先頭からどれだけ“0”が連続しているかを予測するものであり、この結果が正規化処理部30のシフト量(Shift Amount)となる。つまり、シフト量算出部20は、正規化処理部30による左シフト処理(正規化処理)に用いる、演算結果に対する正規化シフト量を算出する。なお、シフト量算出部20によって算出される正規化シフト量は1ビット不足する場合がある。
正規化処理部30は、シフト量算出部20によって算出された正規化シフト量を用いて絶対値加算器13の出力データ(以下、演算結果という)に対して左シフト処理(正規化処理)を施すものであり、正規化処理部30によって演算結果の所定ビット位置(ここではR<124>)が必ず“1”になる。
ここで、図2に本浮動小数点積和演算器1の正規化処理部30,丸め処理部40,及びスティッキービット生成部50の構成を示す。この図2に示すごとく、正規化処理部30は、複数段のシフタ31〜35、つまり、第1シフト部(1st left shifter)31,第2シフト部(2nd left shifter)32,第3シフト部(3rd left shifter)33,第4シフト部(4th left shifter)34,及び1ビットシフト部(1bit left shifter(第2処理部)35をそなえて構成されている。
第1〜第4シフト部31〜34は、シフト量算出部20によって算出された正規化シフト量(7ビットのデータ:SA<6:0>)を用いて演算結果に正規化処理(左シフト)を行なう第1処理部として機能する。
ここで、演算結果は128ビットのデータであるため、第1〜第4シフト部31〜34によるシフト量(つまり、シフト量算出部20によって算出される正規化シフト量)は、最大で127ビットとなる。そのため、ここでは、第1シフト部31は正規化シフト量である7ビット長データSA<6:0>のうちSA<6>に基づいて、64ビットもしくは0ビットのシフトを行なうことができ、第2シフト部32はSA<6:0>のうちSA<5:4>に基づいて、48,32,16,0のいずれかのビットのシフトを行なうことができ、第3シフト部33はSA<6:0>のうちSA<3:2>に基づいて、12,8,4,0のいずれかのビットのシフトを行なうことができ、第4シフト部34はSA<6:0>のうちSA<1:0>に基づいて、3,2,1,0のいずれかのビットのシフトを行なうことができる。
なお、上述のごとく、7ビット長のデータで出力される正規化シフト量のうち、第1シフト部31には正規化シフト量が64ビット以上であるか否か、つまり、第1シフト部31が64ビットのシフト処理を実行するか否かを示す1ビットのデータ(SA<6>)が入力され、SA<6>が“1”の場合は64ビットのシフトを実行し、SA<6>が“0”の場合はシフトを実行しない。
また、第2シフト部32〜第4シフト部34に入力される正規化シフト量がSA<5:0>で表わされる場合、第2シフト部32はSA<5:4>に基づいて正規化処理を実行する。ここでは、第2シフト部32は、SA<5:4>が“11”の場合は48ビットのシフトを実行し、SA<5:4>が“10”の場合は32ビットのシフトを実行し、SA<5:4>が“01”の場合は16ビットのシフトを実行し、SA<5:4>が00“00”の場合はシフトを実行しない。
また、これと同様に、第3シフト部33は、SA<3:2>が“11”の場合は12ビットのシフトを実行し、SA<3:2>が“10”の場合は8ビットのシフトを実行し、SA<3:2>が“01”の場合は4ビットのシフトを実行し、SA<3:2>が“00”の場合はシフトを実行しない。
また、これと同様に、第4シフト部34は、SA<1:0>が“11”の場合は3ビットのシフトを実行し、SA<1:0>が“10”の場合は2ビットのシフトを実行し、SA<1:0>が“01”の場合は1ビットのシフトを実行し、SA<1:0>が“00”の場合はシフトを実行しない。
1ビットシフト部35は、第4シフト部34による正規化シフト量に基づく正規化処理の結果、所定のビット位置R<124>が“1”になるようにシフトされているか否か(正規化シフト量が不足しているか否か)を判断し、所定のビット位置が“1”でなければ、シフト量算出部20によって算出された正規化シフト量が1ビット不足していたものとして、第4シフト部34によって正規化処理を施された演算結果に対してさらに1ビットのシフト処理を施す。その結果、かかる所定のビット位置のデータは“1”になる。
つまり、1ビットシフト部35は、第4シフト部34の出力データの所定ビット位置が“0”であるか“1”であるかを判断し、“1”である場合にはシフト処理を実行しない。
一方、シフト量算出部20によって算出された正規化シフト量が1ビット不足しているために所定ビット位置が“0”である場合には、正規化処理を完了すべく(すなわち、所定ビット位置を“1”にすべく)、第4シフト部34の出力データを1ビットだけシフトする。
なお、本浮動小数点積和演算器1では、スティッキービット生成部50が正規化処理部30による正規化処理と並行しながらスティッキービットを生成するため、正規化処理部30は丸め処理部40に対して正規化処理を施した演算結果の全ビットではなく、かかる演算結果のうち、スティッキービット生成領域を除いた部分を丸め処理部40に出力する。換言すると、丸め処理部40には、倍精度演算の場合にはR<127:70>の58ビット長のデータが丸め処理部40に入力される。
また、図2に示すごとく、スティッキービット生成部50は、正規化処理部30による正規化処理と並行してスティッキービットを生成するものであり、論理和算出部(Sticky bit Predictor)51及び生成部(図中“make sticky”と表記)52をそなえて構成されている。
このスティッキービット生成部50は、具体的に、正規化処理部30の出力データ(R<127:0>)のうちのスティッキービット生成領域(倍精度演算の場合は図15のR<69:0>)内に、1ビットでも“1”があれば、スティッキービットをオンに設定し、スティッキービット生成領域の全ビットが“0”であればスティッキービットをオフに設定するものであり、論理和算出部51と生成部52とによってスティッキービットを生成する。
論理和算出部51は、正規化処理部30による正規化処理と並行しながら、演算結果における最下位ビットから所定領域内のデータが、正規化処理部30による正規化処理によってスティッキービット生成領域内に移行されるか否かを予測し、スティッキービット生成領域内に移行されると予測したデータの論理和を仮スティッキービット(Interim Sticky bit)として算出するものである。
ここでは、論理和算出部51は、第1シフト部31による正規化処理を施された演算結果に対して、かかる演算結果のうちの所定領域(第1領域)のデータが、正規化処理部30による正規化処理によってスティッキービット生成領域にシフトされるか否かを、第2シフト部32及び第3シフト部33に入力される正規化シフト量(4ビットのデータ;SA<5:2>)を用いて予測し、予測したスティッキービット生成領域内にシフトされるデータが“1”を含むか否かを判断する。これにより、論理和算出部51は仮スティッキービットを生成する。
ここで、本浮動小数点積和演算器1が倍精度演算をサポートする場合について説明すると、正規化処理部20が演算結果に対する左シフト処理を施すので、R<69:0>の範囲内に“1”があるか否かのチェックは、正規化シフト量を用いてC<69:0>の範囲内に“1”があるか否かをチェックすることにより実行できる。
倍精度演算の場合、論理和算出部51は、まず、第2シフト部32以降でシフトしうる最大幅である64ビットのシフト処理を施したとしてもR<69:64>となるC<5:0>について、論理和演算を行なう。
さらに、論理和算出部51は、上記の正規化シフト量に係わらずR<69:0>に含まれる範囲以外の部分、ここでは、C<65:6>を対象に処理を行なう。
論理和算出部51は、C<65:6>において、正規化シフト量(SA<5:2>)に基づくシフト処理によってR<69:0>の範囲外に出ない部分について、4ビット単位で論理和演算して検証する。
つまり、図9(a)に示すごとく、C<65:62>について、SA<5:2>が“0000”の場合には、このC<65:62>はR<69:0>の範囲内に必ず残るため、この場合に限り、C<65:62>を論理和演算した結果をPAT<14>として出力する。一方、SA<5:2>が“0001”の場合には、このC<65:62>はR<69:66>の範囲内に収まるか、もしくは、R<69:0>の範囲外に出るため、当該シフト結果を用いて生成部52による処理を行なう。なお、この処理は、例えば上述した図6に示す論理回路51aと同様の構成による論理回路によって実現される。
次に、図9(b)に示すごとく、C<61:58>について、SA<5:2>が“0001”以下の場合には、このC<61:58>はR<69:0>の範囲内に必ず残るため、この場合に限り、C<61:58>を論理和演算した結果をPAT<13>として出力する。一方、SA<5:2>が“0010”の場合には、このC<61:58>はR<69:66>の範囲内に収まるか、もしくは、R<69:0>の範囲外に出るため、生成部52による処理を行なう。なお、この処理は、例えば上述した図7に示す論理回路51bと同様の構成による論理回路によって実現される。
以降、C<57:6>の範囲までのデータについても、4ビット毎のデータを対象に、正規化シフト量の値を1ビットずつ増やしながら同様の場合分けをして、論理和演算を行なうか、もしくは、予測を行わずに当該シフト結果を用いて生成部52による処理でカバーする。
そして、図9(c)に示すごとく、最後のC<9:6>については、SA<5:2>が“1110”以下の場合には、このC<9:6>はR<69:0>内に必ず残るため、この場合に限り、C<9:6>を論理和演算した結果をPAT<0>として出力する。一方、SA<5:2>が“1111”の場合には、このC<9:6>はR<69:66>内に収まるか、もしくは、R<69:0>の外に出るため、生成部52による処理でカバーする。なお、この処理は、例えば上述した図8に示す論理回路51cと同様の構成による論理回路によって実現される。
このように、論理和算出部51がC<65:6>の範囲のデータを対象に、上述のごとく処理を行なうことによって、PAT<14:0>が出力される。
最後に、論理和算出部51は、図18に示すように構成された論理和回路51dにより、PAT<14:0>に対する論理和演算を行なうことによって、単精度演算の場合同様に仮スティッキービットを生成する。
このように、論理和算出部51は、倍精度演算をサポートする場合には、C<65:0>(第1領域)のデータを対象に、正規化処理部30(ここでは第1シフト部31〜第3シフト部33)による正規化処理によってスティッキービット生成領域にシフトされる範囲のデータを予測して、この予測に基づいて仮スティッキービットを生成する。
次に、生成部52について説明すると、生成部52は正規化処理部30によって正規化処理を施された演算結果におけるスティッキービット生成領域のうちの第1領域(ここではC<65:0>)の範囲と同範囲の領域を除いた領域(ここではR<69:66>;第2領域)の範囲内のデータと、論理和算出部51によって算出された仮スティッキービットとに基づいて、スティッキービットを生成するものである。
つまり、生成部52はSA<1:0>にかかる正規化処理について予測は行なわず、R<69:66>の4ビットのデータについては、論理和演算を行なう。
したがって、生成部52は、R<69:66>の4ビットと、仮スティッキービットの1ビットとの計5ビットのデータを論理和演算し、これら5ビット長のデータのうち1ビットでも“1”であれば、スティッキービットをオンに設定する一方、全ビットが“0”であればスティッキービットをオフに設定する。
次に、丸め処理部40について説明する。図2に示すように、丸め処理部40は、正規化処理部30によって正規化処理を施された演算結果に対して、スティッキービット生成部50の生成部52によって生成されたスティッキービットに基づいて丸め処理を施すものであり、インクリメンタ(Incrementer)41,丸め判定部(Judge Round)43,及び選択回路44をそなえて構成されている。
インクリメンタ41は、正規化処理部30によって正規化処理を施された演算結果のうちの、仮数部(倍精度演算の場合はC<123:72>)に“1”を加える丸め処理を行なう。
丸め判定部43は、(1)スティッキービット生成部50によって生成されたスティッキービット、(2)正規化処理部30から出力された演算結果における仮数部の最下位ビットであるL(Least significant bit)ビット(図14,図15参照)、(3)かかる演算結果におけるG(Guard)ビット、(4)かかる演算結果におけるR(Round)ビット(図14,図15参照)、(5)外部から入力されるRD(Round Direction:丸め方向)ビット、及び、(6)外部から入力されるSIGN(符号)ビットに基づいて、丸め処理が必要であるか否かを判断する。そして、丸め判定部43は、かかる判定の結果を選択回路44に出力する。
選択回路44は、丸め判定部43による判定結果に基づいて、インクリメンタ41を介して入力された丸め処理を施された演算結果と、正規化処理部30から出力されたまま状態の演算結果とのいずれか一方を出力するものである。
つまり、選択回路44は、丸め判定部43による判定結果が丸め処理が必要である場合には、インクリメンタ41によって丸め処理を施された演算結果を出力する一方、丸め判定部43による判定結果が丸め処理が不要である場合には、丸め処理が施されていない演算結果である正規化処理部30の演算結果を出力する。
なお、本浮動小数点積和演算器1が倍精度演算の演算を行なう場合の動作例を図11に示すと、この場合、1ビットシフト部35(つまり、正規化処理部30)から出力されるデータは、R<127:0>のうちの、スティッキービット生成領域R<69:0>の範囲を除いた、R<127:70>の58ビット長のデータとなり、この58ビットのデータをラッチするだけでよくなる。
そして、ラッチされた58ビット長のデータのうち、R<127:72>はインクリメンタ41に入力されるとともに、インクリメンタ41をバイパスして選択回路44にも直接入力される。
さらに、ラッチされた58ビット長のデータのうち、丸め判定部43による判定に用いられるLビット,Rビット,及びGビットに該当するR<72:70>の3ビット幅のデータは、丸め判定部43に入力される。
このように、本発明の一実施形態としての浮動小数点積和演算器1によれば、論理和算出部51が正規化処理部30による正規化処理と並行して、仮スティッキービットを算出し、生成部52が仮スティッキービットと、正規化処理部30によって正規化処理を施された演算結果のうちスティッキービット生成領域の一部データとに基づいてスティッキービットの生成をため、正規化処理後にスティッキービット生成領域にかかるすべてのデータについて論理和を算出する必要がなく、ディレイを防止して効率良くスティッキービットを生成することができる。
具体的には、倍精度演算をサポートする場合、正規化処理部30による正規化処理後は、スティッキービット生成領域70ビットのデータを論理和演算するのではなく、5ビットのデータのみを論理和演算するだけで良いため、ディレイを大幅に削減することができる。
また、正規化処理部30による処理と丸め処理部40による処理との間のパイプラインステージを分割した場合には、正規化処理と並行してスティッキービットの生成を行なうため、演算結果データのすべて(R<127:0>)をラッチする必要はなく、スティッキービット生成領域を除いた範囲のみをラッチするだけで良いため、ラッチ等のハードウェア資源(物量)を削減することができる。具体的には、倍精度演算用浮動小数点積和演算器において、従来は128ビット長のラッチ対象データを59ビット長(図11参照)にまで削減することができ、これらの差分である68ビット分のラッチを削減することができる。
さらに、本浮動小数点積和演算器1では、1ビットシフト部35による正規化処理の結果を考慮して、つまり、1ビットシフト部35による正規化処理で変化しうるスティッキービット生成領域(第2領域)については、当該正規化処理の結果に基づいてスティッキービットの生成を行なうので、スティッキービットの生成を正規化処理部30による正規化処理と並行して開始しながら、シフト量算出部20によって算出された正規化シフト量が1ビット不足しているか否かの場合分けを行なう必要がないため、正規化シフト量が不足しているかいないかに関わらずスティッキービットを確実に生成することができる。したがって、上述した特許文献1に開示された技術のように、この正規化シフト量が1ビット不足した場合と、不足しない場合との両方の場合に対応するために、ディレイや物量の増加が発生することはない。
また、正規化処理部30における複数段により構成されるシフト部31〜34のうち最終段の第4シフト部34による正規化処理に対して、論理和算出部51は予測を行なわずに、生成部52が第4シフト部34における正規化処理の結果に基づいてスティッキービットの生成を行なう。つまり、生成部52が処理対象とする第2領域は第4シフト部34による最大シフト量と1ビットシフト部35の1ビットとの合計である。これによって論理和算出部51が複数段により構成されるシフト部31〜34のすべてのシフト部(第1処理部)による正規化処理の結果を予測する方法よりも効率よく仮スティッキービットを生成することができる。
このとき、本浮動小数点積和演算器1では、第4シフト部34がシフト部31〜34の中で最もシフト量が少ないので、生成部52による処理も効率が良くなり、さらに、生成部52を構成する物量を低減することができる。
〔3〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態において、第1処理部を構成する複数段のシフト部31〜34におけるシフト量は、本発明において限定されるものではなく、種々変更してもよい。
また、上述した実施形態では、シフト量算出部20によって算出される正規化シフト量について1ビット不足する場合があるものを例に挙げて説明したが、かかる正規化シフト量の不足量は限定されるものではない。
また、上述した実施形態では、浮動小数点積和演算器1が単精度演算と倍精度演算の演算を実行する場合を例に挙げて説明したが、本発明はこれに限定されるものではなく、例えば、n倍精度演算(nは整数)など本浮動小数点積和演算器1がサポートする演算精度は限定されるものではない。
〔4〕付記
(付記1)
演算結果の正規化の際に前記演算結果がシフトされたか否かを表す情報の生成を行なう演算処理装置において、
前記演算結果を出力する演算手段と、
複数のシフト手段を有し、前記演算結果に対する正規化処理を前記複数のシフト手段により分割して行なう正規化処理手段と、
前記複数のシフト手段に対する複数のシフト量を算出するシフト量算出手段と、
前記複数のシフト量を用いて、演算結果の正規化の際に前記演算結果がシフトされるか否かの予測結果である仮情報の生成を行なう予測手段と、
前記仮情報を用いて、前記情報の生成を行なう生成手段とを有することを特徴とする演算処理装置。
(付記2)
演算結果の正規化の際に前記演算結果がシフトされたか否かを表す情報を用いて演算結果の丸め処理を行なう演算処理装置において、
前記演算結果を出力する演算手段と、
複数のシフト手段を有し、前記演算結果に対する正規化処理を前記複数のシフト手段により分割して行なう正規化処理手段と、
前記複数のシフト手段に対する複数のシフト量を算出するシフト量算出手段と、
前記複数のシフト量を用いて、演算結果の正規化の際に前記演算結果がシフトされるか否かの予測結果である仮情報の生成を行なう予測手段と、
前記仮情報を用いて、前記情報の生成を行なう生成手段と、
前記情報を用いて前記丸め処理を行なうか否かの判定結果を出力する丸め判定手段と、
前記演算結果に所定値を加算する増分手段と、
前記判定結果を用いて、前記演算結果と前記増分手段の出力のいずれかを選択する選択手段とを有することを特徴とする演算処理装置。
(付記3)
演算結果の正規化の際に前記演算結果がシフトされたか否かを表す情報を用いて演算結果の丸め処理を行なう演算処理装置により演算を行なう情報処理装置において、
前記演算結果を出力する演算手段と、
複数のシフト手段を有し、前記演算結果に対する正規化処理を前記複数のシフト手段により分割して行なう正規化処理手段と、
前記複数のシフト手段に対する複数のシフト量を算出するシフト量算出手段と、
前記複数のシフト量を用いて、演算結果の正規化の際に前記演算結果がシフトされるか否かの予測結果である仮情報の生成を行なう予測手段と、
前記仮情報を用いて、前記情報の生成を行なう生成手段とを有する演算処理装置により演算を行なうことを特徴とする情報処理装置。
(付記4)
前記演算処理装置はさらに、
前記情報を用いて前記丸め処理を行なうか否かの判定結果を出力する丸め判定手段と、
前記演算結果に所定値を加算する増分手段と、
前記判定結果を用いて、前記演算結果と前記増分手段の出力のいずれかを選択する選択手段とを有することを特徴とする付記3記載の情報処理装置。
(付記5)
演算結果の正規化の際に前記演算結果がシフトされたか否かを表す情報を用いて演算結果の丸め処理を行なう演算処理方法において、
前記演算を行うステップと、
複数のシフト処理ステップにおいて用いる複数のシフト量を算出するシフト量算出ステップと、
前記演算結果に対する正規化処理を、前記シフト量を用いてそれぞれ前記複数のシフト処理ステップに分割して行なう正規化処理ステップと、
前記複数のシフト量を用いて、演算結果の正規化の際に前記演算結果がシフトされるか否かの予測結果である仮情報の生成を行なう予測ステップと、
前記仮情報を用いて、前記情報の生成を行なう生成ステップとを有することを特徴とする演算処理方法。
(付記6)
演算結果の正規化の際に前記演算結果がシフトされたか否かを表す情報を用いて演算結果の丸め処理を行なう演算処理方法において、
前記演算結果を出力するステップと、
少なくとも2つ以上のシフト処理ステップにおいて用いる複数のシフト量を算出するシフト量算出ステップと、
前記演算結果に対する正規化処理を、前記シフト量を用いてそれぞれ前記複数のシフト処理ステップに分割して行ない正規化された演算結果を生成する正規化処理ステップと、
前記複数のシフト量を用いて、演算結果の正規化の際に前記演算結果がシフトされる否かの予測結果である仮情報の生成を行なう予測ステップと、
前記仮情報を用いて、前記情報の生成を行なう生成ステップと、
前記正規化された演算結果に対して前記情報を用いて丸め処理を行う丸め処理ステップとを有することを特徴とする演算処理方法。
(付記7)
積和演算を実行する積和演算部と、
該積和演算部による前記演算の結果に対する正規化シフト量を算出するシフト量算出部と、
該シフト量算出部によって算出された前記正規化シフト量を用いて前記積和演算部による前記演算結果に対して正規化処理を施す正規化処理部と、
該正規化処理部による正規化処理と並行しながら、前記演算結果における最下位から所定領域(以下、第1領域という)内のデータが、前記正規化処理部による正規化処理によってスティッキービット生成領域内に移行されるか否かを予測して、前記スティッキービット生成領域内に移行されると予測したデータの論理和を仮スティッキービットとして算出する論理和算出部と、
前記正規化処理部によって正規化処理を施された演算結果における前記スティッキービット生成領域のうちの前記第1領域と同一領域を除いた領域(以下、第2領域という)内のデータと、前記論理和算出部によって生成された仮スティッキービットとに基づいてスティッキービットを生成する生成部と、
前記正規化処理部によって前記正規化処理を施された前記演算結果に対して、前記生成部によって生成された前記スティッキービットに基づいて丸め処理を施す丸め処理部とをそなえて構成されていることを特徴とする、情報処理装置。
(付記8)
前記正規化処理部が、前記正規化シフト量に基づいて正規化処理を施す第1処理部と、該第1処理部による正規化処理の結果に基づいて当該正規化シフト量が不足しているか否かを判断して、不足していると判断した場合には当該不足しているシフト量を用いて当該結果に対してさらに正規化処理を施す1ビットシフト部とをそなえ、
前記スティッキービット生成領域の前記第2領域の総ビット数が、前記1ビットシフト部によって正規化処理が施されうる前記不足しているシフト量以上であることを特徴とする、付記1記載の情報処理装置。
(付記9)
前記正規化処理部の前記1ビットシフト部は、前記正規化シフト量が不足していないと判断した場合には、正規化処理を実行しないことを特徴とする、付記2記載の情報処理装置。
(付記10)
前記正規化処理部の前記第1処理部が、前記正規化シフト量に基づいて前記演算結果をシフトする複数段のシフト部からなり、
前記スティッキービット生成領域の前記第2領域の総ビット数が、前記複数段のシフト部のうちの最終段のシフト部が担当する最大の正規化シフト量と前記1ビットシフト部が担当しうる前記不足しているシフト量との合計であることを特徴とする、付記2または付記3記載の情報処理装置。
(付記11)
前記正規化処理部の前記第1処理部の前記最終段のシフト部が、前記複数段のシフト部の中で最も少ないシフト量を担当することを特徴とする、付記4記載の情報処理装置。
(付記12)
前記正規化処理部から前記丸め処理部に前記演算結果のうちの前記スティッキービット生成領域を除いた部分が入力されることを特徴とする、付記1〜付記5のいずれか1項に記載の情報処理装置。
本発明の一実施形態としての演算処理装置の構成を示すブロック図である。 本発明の一実施形態としての演算処理装置の正規化処理部,スティッキービット生成部,丸め処理部の構成を示すブロック図である。 本発明の一実施形態としての演算処理装置のスティッキービット生成部の論理和算出部がそなえる論理回路の一例を示す図である。 本発明の一実施形態としての演算処理装置のスティッキービット生成部の論理和算出部がそなえる論理回路の一例を示す図である。 本発明の一実施形態としての演算処理装置が単精度演算をサポートする際のスティッキービット生成部の論理和算出部の動作を説明するための図であり、(a)〜(c)のそれぞれはスティッキービット生成領域のうちの一部の領域に対する動作を説明するための図である。 本発明の一実施形態としての演算処理装置のスティッキービット生成部の論理和算出部がそなえる論理回路の一例を示す図である。 本発明の一実施形態としての演算処理装置のスティッキービット生成部の論理和算出部がそなえる論理回路の一例を示す図である。 本発明の一実施形態としての演算処理装置のスティッキービット生成部の論理和算出部がそなえる論理回路の一例を示す図である。 本発明の一実施形態としての演算処理装置が倍精度演算をサポートする際のスティッキービット生成部の論理和算出部の動作を説明するための図であり、(a)〜(c)のそれぞれはスティッキービット生成領域のうちの一部の領域に対する動作を説明するための図である。 本発明の一実施形態としての演算処理装置において、単精度演算をサポートする際にパイプラインステージを切ったときの動作例を示す図である。 本発明の一実施形態としての演算処理装置において、倍精度演算をサポートする際にパイプラインステージを切ったときの動作例を示す図である。 従来の浮動小数点積和演算器の構成を示すブロック図である。 第2シフト部に入力されるデータフォーマットを説明するための図である。 本発明の演算処理装置及び従来の浮動小数点積和演算器が単精度演算をサポートする場合の出力データを説明するための図である。 本発明の演算処理装置及び従来の浮動小数点積和演算器が倍精度演算をサポートする場合の出力データを説明するための図である。 従来の浮動小数点積和演算器の正規化処理部及び丸め処理部の構成を示す図である。 従来の浮動小数点積和演算器において、単精度演算をサポートする際にパイプラインステージを切ったときの動作例を示す図である。 本発明の一実施形態としての演算処理装置のスティッキービット生成部の論理和算出部の論理和回路を示す図である。
符号の説明
1,100 浮動小数点積和演算器
10 右シフト部
11 乗算器
12 CSA(Carry Save Adder)
13 絶対値加算器
20 シフト量算出部(シフト量算出手段)
30,300 正規化処理部(正規化処理手段)
31 第1シフト部(第1処理部)
32 第2シフト部(第1処理部)
32a,33a,51a〜51c 論理回路
32a−1,33a−1,51a−4,51a−5,51b−4,51b−5,51c−3 ANDゲート
32a−2,33a−2 バッファゲート
32a−3,33a−3,51a−1〜51c−1 ORゲート
33 第3シフト部(第1処理部)
34 第4シフト部(第1処理部)
35 1ビットシフト部(第2処理部)
40 丸め処理部
41 インクリメンタ(増分手段)
42,50 スティッキービット生成部
43 丸め判定部(丸め判定手段)
44 選択回路(選択手段)
51 論理和算出部(予測手段)
51a−2,51a−3,51b−2,51b−3 NOTゲート
51c−2 NANDゲート
51d 論理和回路
52 生成部(生成手段)

Claims (5)

  1. 演算結果の正規化の際に前記演算結果がシフトされたか否かを表す情報の生成を行なう演算処理装置において、
    前記演算結果を出力する演算手段と、
    複数のシフト手段を有し、前記演算結果に対する正規化処理を前記複数のシフト手段により分割して行なう正規化処理手段と、
    前記複数のシフト手段に対する複数のシフト量を算出するシフト量算出手段と、
    前記複数のシフト量を用いて、演算結果の正規化の際に前記演算結果がシフトされるか否かの予測結果である仮情報の生成を行なう予測手段と、
    前記仮情報を用いて、前記情報の生成を行なう生成手段とを有することを特徴とする演算処理装置。
  2. 演算結果の正規化の際に前記演算結果がシフトされたか否かを表す情報を用いて演算結果の丸め処理を行なう演算処理装置において、
    前記演算結果を出力する演算手段と、
    複数のシフト手段を有し、前記演算結果に対する正規化処理を前記複数のシフト手段により分割して行なう正規化処理手段と、
    前記複数のシフト手段に対する複数のシフト量を算出するシフト量算出手段と、
    前記複数のシフト量を用いて、演算結果の正規化の際に前記演算結果がシフトされるか否かの予測結果である仮情報の生成を行なう予測手段と、
    前記仮情報を用いて、前記情報の生成を行なう生成手段と、
    前記情報を用いて前記丸め処理を行なうか否かの判定結果を出力する丸め判定手段と、
    前記演算結果に所定値を加算する増分手段と、
    前記判定結果を用いて、前記演算結果と前記増分手段の出力のいずれかを選択する選択手段とを有することを特徴とする演算処理装置。
  3. 演算結果の正規化の際に前記演算結果がシフトされたか否かを表す情報を用いて演算結果の丸め処理を行なう演算処理装置により演算を行なう情報処理装置において、
    前記演算結果を出力する演算手段と、
    複数のシフト手段を有し、前記演算結果に対する正規化処理を前記複数のシフト手段により分割して行なう正規化処理手段と、
    前記複数のシフト手段に対する複数のシフト量を算出するシフト量算出手段と、
    前記複数のシフト量を用いて、演算結果の正規化の際に前記演算結果がシフトされるか否かの予測結果である仮情報の生成を行なう予測手段と、
    前記仮情報を用いて、前記情報の生成を行なう生成手段とを有する演算処理装置により演算を行なうことを特徴とする情報処理装置。
  4. 前記演算処理装置はさらに、
    前記情報を用いて前記丸め処理を行なうか否かの判定結果を出力する丸め判定手段と、
    前記演算結果に所定値を加算する増分手段と、
    前記判定結果を用いて、前記演算結果と前記増分手段の出力のいずれかを選択する選択手段とを有することを特徴とする請求項3記載の情報処理装置。
  5. 演算結果の正規化の際に前記演算結果がシフトされたか否かを表す情報を用いて演算結果の丸め処理を行なう演算処理方法において、
    前記演算を行うステップと、
    複数のシフト処理ステップにおいて用いる複数のシフト量を算出するシフト量算出ステップと、
    前記演算結果に対する正規化処理を、前記シフト量を用いてそれぞれ前記複数のシフト処理ステップに分割して行なう正規化処理ステップと、
    前記複数のシフト量を用いて、演算結果の正規化の際に前記演算結果がシフトされるか否かの予測結果である仮情報の生成を行なう予測ステップと、
    前記仮情報を用いて、前記情報の生成を行なう生成ステップとを有することを特徴とする演算処理方法。
JP2005349804A 2005-12-02 2005-12-02 演算処理装置,情報処理装置,及び演算処理方法 Expired - Fee Related JP4571903B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2005349804A JP4571903B2 (ja) 2005-12-02 2005-12-02 演算処理装置,情報処理装置,及び演算処理方法
US11/385,718 US7720899B2 (en) 2005-12-02 2006-03-22 Arithmetic operation unit, information processing apparatus and arithmetic operation method
EP06251769.3A EP1806652B1 (en) 2005-12-02 2006-03-30 Normalization and rounding of an arithmetic operation result
CNB2006100764824A CN100545805C (zh) 2005-12-02 2006-04-20 算术运算单元、信息处理设备和算术运算方法
KR1020060037654A KR100818011B1 (ko) 2005-12-02 2006-04-26 연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005349804A JP4571903B2 (ja) 2005-12-02 2005-12-02 演算処理装置,情報処理装置,及び演算処理方法

Publications (2)

Publication Number Publication Date
JP2007156748A true JP2007156748A (ja) 2007-06-21
JP4571903B2 JP4571903B2 (ja) 2010-10-27

Family

ID=37897349

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005349804A Expired - Fee Related JP4571903B2 (ja) 2005-12-02 2005-12-02 演算処理装置,情報処理装置,及び演算処理方法

Country Status (5)

Country Link
US (1) US7720899B2 (ja)
EP (1) EP1806652B1 (ja)
JP (1) JP4571903B2 (ja)
KR (1) KR100818011B1 (ja)
CN (1) CN100545805C (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009140491A (ja) * 2007-12-07 2009-06-25 Nvidia Corp 融合型積和演算機能ユニット
JP2012521047A (ja) * 2009-03-16 2012-09-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 浮動小数点ユニットにおけるオーバーシフトの高速検出のためのメカニズム
JP2018195228A (ja) * 2017-05-22 2018-12-06 富士通株式会社 演算器及び演算器の制御方法
JP2022533850A (ja) * 2019-05-24 2022-07-26 グーグル エルエルシー 多入力浮動小数点加算器
CN117762375A (zh) * 2023-12-22 2024-03-26 摩尔线程智能科技(北京)有限责任公司 数据处理方法、装置、计算装置、图形处理器和存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2110740B1 (en) * 2007-02-09 2013-05-29 Fujitsu Limited Computation processor, information processor, and computing method
US8762444B2 (en) * 2011-09-28 2014-06-24 Nvidia Corporation Fast condition code generation for arithmetic logic unit
US9911470B2 (en) 2011-12-15 2018-03-06 Nvidia Corporation Fast-bypass memory circuit
JP5450781B1 (ja) * 2012-12-26 2014-03-26 株式会社東芝 演算回路及び方法
US10141930B2 (en) 2013-06-04 2018-11-27 Nvidia Corporation Three state latch
GB2535426B (en) * 2014-10-31 2021-08-11 Advanced Risc Mach Ltd Apparatus, method and program for calculating the result of a repeating iterative sum
JP7165018B2 (ja) * 2018-10-03 2022-11-02 キヤノン株式会社 情報処理装置、情報処理方法
US11188299B2 (en) * 2019-07-31 2021-11-30 International Business Machines Corporation Repurposed hexadecimal floating point data path

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63229521A (ja) * 1987-03-19 1988-09-26 Matsushita Electric Ind Co Ltd シフト回路
JPH0367328A (ja) * 1989-08-04 1991-03-22 Ricoh Co Ltd 浮動小数点演算装置
JPH03211617A (ja) * 1990-01-17 1991-09-17 Nec Corp ブロック論理和回路とシフト方式
JPH08212192A (ja) * 1994-11-17 1996-08-20 Hitachi Ltd 積和演算器及びデータ処理装置
US5771183A (en) * 1996-06-28 1998-06-23 Intel Corporation Apparatus and method for computation of sticky bit in a multi-stage shifter used for floating point arithmetic
JP2002007111A (ja) * 2000-05-30 2002-01-11 Hewlett Packard Co <Hp> 多重データ・セットを処理するためのセルフタイム式伝送方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US44716A (en) * 1864-10-18 Improved potato-digger
US4941120A (en) 1989-04-17 1990-07-10 International Business Machines Corporation Floating point normalization and rounding prediction circuit
US5128889A (en) 1990-02-22 1992-07-07 Matsushita Electric Industrial Co., Ltd. Floating-point arithmetic apparatus with compensation for mantissa truncation
US5471410A (en) 1994-10-14 1995-11-28 International Business Machines Corporation Method and apparatus for sticky and leading one detection
US5757682A (en) * 1995-03-31 1998-05-26 International Business Machines Corporation Parallel calculation of exponent and sticky bit during normalization
US5867407A (en) 1995-06-30 1999-02-02 Digital Equipment Corporation Normalization shift prediction independent of operand substraction
US5754458A (en) * 1996-05-30 1998-05-19 Hewlett-Packard Company Trailing bit anticipator
US5793654A (en) * 1996-09-30 1998-08-11 Intel Corporation Saturating alignment shifter
US6167419A (en) * 1997-04-01 2000-12-26 Matsushita Electric Industrial Co., Ltd. Multiplication method and multiplication circuit
KR20010018956A (ko) * 1999-08-24 2001-03-15 한탁돈 부동소수점 병렬 반올림 방법 및 연산장치
US6557021B1 (en) * 1999-11-04 2003-04-29 Intrinsity, Inc. Rounding anticipator for floating point operations
US6571266B1 (en) 2000-02-21 2003-05-27 Hewlett-Packard Development Company, L.P. Method for acquiring FMAC rounding parameters
US6615228B1 (en) 2000-05-30 2003-09-02 Hewlett-Packard Development Company, Lp Selection based rounding system and method for floating point operations
JP3492638B2 (ja) 2001-02-23 2004-02-03 エヌイーシーコンピュータテクノ株式会社 浮動小数点乗算器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63229521A (ja) * 1987-03-19 1988-09-26 Matsushita Electric Ind Co Ltd シフト回路
JPH0367328A (ja) * 1989-08-04 1991-03-22 Ricoh Co Ltd 浮動小数点演算装置
JPH03211617A (ja) * 1990-01-17 1991-09-17 Nec Corp ブロック論理和回路とシフト方式
JPH08212192A (ja) * 1994-11-17 1996-08-20 Hitachi Ltd 積和演算器及びデータ処理装置
US5771183A (en) * 1996-06-28 1998-06-23 Intel Corporation Apparatus and method for computation of sticky bit in a multi-stage shifter used for floating point arithmetic
JP2002007111A (ja) * 2000-05-30 2002-01-11 Hewlett Packard Co <Hp> 多重データ・セットを処理するためのセルフタイム式伝送方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009140491A (ja) * 2007-12-07 2009-06-25 Nvidia Corp 融合型積和演算機能ユニット
JP2012084142A (ja) * 2007-12-07 2012-04-26 Nvidia Corp 融合型積和演算機能ユニット
JP2012521047A (ja) * 2009-03-16 2012-09-10 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 浮動小数点ユニットにおけるオーバーシフトの高速検出のためのメカニズム
JP2018195228A (ja) * 2017-05-22 2018-12-06 富士通株式会社 演算器及び演算器の制御方法
JP2022533850A (ja) * 2019-05-24 2022-07-26 グーグル エルエルシー 多入力浮動小数点加算器
JP7285966B2 (ja) 2019-05-24 2023-06-02 グーグル エルエルシー 多入力浮動小数点加算器
CN117762375A (zh) * 2023-12-22 2024-03-26 摩尔线程智能科技(北京)有限责任公司 数据处理方法、装置、计算装置、图形处理器和存储介质

Also Published As

Publication number Publication date
EP1806652B1 (en) 2015-12-09
JP4571903B2 (ja) 2010-10-27
EP1806652A3 (en) 2008-11-05
KR100818011B1 (ko) 2008-03-31
US20070130242A1 (en) 2007-06-07
CN1975662A (zh) 2007-06-06
CN100545805C (zh) 2009-09-30
EP1806652A2 (en) 2007-07-11
US7720899B2 (en) 2010-05-18
KR20070058293A (ko) 2007-06-08

Similar Documents

Publication Publication Date Title
JP4571903B2 (ja) 演算処理装置,情報処理装置,及び演算処理方法
EP2846257B1 (en) Floating-point adder circuitry
US8606840B2 (en) Apparatus and method for floating-point fused multiply add
US20150347089A1 (en) Microarchitecture for floating point fused multiply-add with exponent scaling
JP2002108606A (ja) スティッキービット生成回路及び乗算器
US8930433B2 (en) Systems and methods for a floating-point multiplication and accumulation unit using a partial-product multiplier in digital signal processors
JP2018535476A (ja) 浮動小数点数の丸め処理
JP3845009B2 (ja) 積和演算装置、及び積和演算方法
JPWO2007096982A1 (ja) 演算処理装置および演算処理方法
EP2435904B1 (en) Integer multiply and multiply-add operations with saturation
US20230092574A1 (en) Single-cycle kulisch accumulator
KR19980041753A (ko) 다른 데이타 형을 갖는 다수의 데이타를 처리하는 가산기
US7143126B2 (en) Method and apparatus for implementing power of two floating point estimation
US20070156803A1 (en) Overflow detection and clamping with parallel operand processing for fixed-point multipliers
JP4806453B2 (ja) 演算処理装置、情報処理装置、および演算方法
Hamid et al. Design of generic floating point multiplier and adder/subtractor units
US7401107B2 (en) Data processing apparatus and method for converting a fixed point number to a floating point number
WO2018057111A1 (en) Distributed double-precision floating-point multiplication
US6993549B2 (en) System and method for performing gloating point operations involving extended exponents
CN112214196A (zh) 浮点异常处理方法及装置
US20040049528A1 (en) Apparatus and method for adding multiple-bit binary-strings
He et al. Multiply-add fused float point unit with on-fly denormalized number processing
JP2002023997A (ja) 浮動小数点演算のための選択ベースの丸め方法
Tyagi et al. A novel hardware efficient reconfigurable 32-bit arithmetic unit for binary, BCD and floating point operands
EP3528107B1 (en) Increment/decrement apparatus and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090901

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091026

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100309

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100607

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100616

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

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

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

Free format text: PAYMENT UNTIL: 20130820

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees