JP2018097864A - リーディングゼロ予想 - Google Patents

リーディングゼロ予想 Download PDF

Info

Publication number
JP2018097864A
JP2018097864A JP2017228193A JP2017228193A JP2018097864A JP 2018097864 A JP2018097864 A JP 2018097864A JP 2017228193 A JP2017228193 A JP 2017228193A JP 2017228193 A JP2017228193 A JP 2017228193A JP 2018097864 A JP2018097864 A JP 2018097864A
Authority
JP
Japan
Prior art keywords
difference
bits
mask
intermediate value
floating point
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
JP2017228193A
Other languages
English (en)
Other versions
JP7044528B2 (ja
Inventor
レイモンド ルッツ デイヴィッド
Raymond Lutz David
レイモンド ルッツ デイヴィッド
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines 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 ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2018097864A publication Critical patent/JP2018097864A/ja
Application granted granted Critical
Publication of JP7044528B2 publication Critical patent/JP7044528B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/485Adding; Subtracting
    • 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
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • 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
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (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)
  • Nonlinear Science (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】浮動小数点数同士の演算を行なうデータ処理装置を提供する。【解決手段】中間値生成回路が、第1の浮動小数点数と、第2の浮動小数点数から中間値を生成する。この中間値は、第1の浮動小数点数の絶対値と、第2の浮動小数点数の絶対値の差におけるリーディングゼロの数の予測を示すリーディング0の数を含んでいる。予測は、第1の浮動小数点数の絶対値と、第2の浮動小数点数の絶対値の差におけるリーディングゼロの数と最大でも1つしか違わない。カウント回路が、前記中間値におけるリーディング0の数をカウントし、マスク生成回路が、この中間値を利用して1つまたは複数のマスクを形成する。マスク生成回路は、カウント回路が中間値におけるリーディング0の数をカウントするのと同時にまたはそれより前に1つまたは複数のマスクを形成する。【選択図】図1

Description

本開示は、データ処理に関する。例えばそれは、浮動小数点数に関係してよい。
浮動小数点数は、仮数部に基数のべき指数部の累乗を掛けた組み合わせとして表すことができる。例えば0.0012という値は、仮数部が1.2で、基数が10であり、指数部が−3である数1.2X10−3として表現することが可能である。二進法表現においては、基数が2であることが一般的である。正規化された浮動小数点数は、最低でも1であり、かつ2未満の仮数部を有する。ある浮動小数点数を別の浮動小数点数から減算する際、その結果は極めて小さな数字になる、すなわちリーディングゼロの数が大きくなる可能性がある。リーディングゼロの数(実際の数または予測される数のいずれか)をカウントすることで1つまたは複数のマスクを生成することによって、この数字を正規化することがこれまで提案されてきた。その差を計算する前にこのような作業が行われなかった場合(融合積和演算を行うケースでよくあるように)、ストール(stall)が生じる結果となる可能性があり、リーディングゼロの数を計算することでその差を正規化することができる。
第1の例の構成から考察されるように、第1の浮動小数点数と、第2の浮動小数点数から中間値を生成するための中間値生成回路であって、前記中間値が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の差におけるリーディング0の数の予測を示すリーディング0の数を有し、前記予測が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の前記差における前記リーディング0の数と最大でも1つしか違わない中間値生成回路と、前記中間値における前記リーディング0の数をカウントするカウント回路と、前記中間値を利用して1つまたは複数のマスクを形成するマスク生成回路とを備えるデータ処理装置であって、前記マスク生成回路が、前記中間値における前記リーディングゼロの数をカウントするのと同時にまたはそれより前に前記1つまたは複数のマスクを形成するように構成されるデータ処理装置が提供される。
第2の例の構成から考察されるように、第1の浮動小数点数と、第2の浮動小数点数から中間値を生成するための中間値生成手段であって、前記中間値が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の差におけるリーディング0の数の予測を示すリーディング0の数を有し、前記予測が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の前記差における前記リーディング0の数と最大でも1つしか違わない中間値生成手段と、前記中間値における前記リーディング0の数をカウントするためのカウント手段と、前記中間値を利用して1つまたは複数のマスクを形成するためのマスク生成手段とを備えるデータ処理装置であって、前記マスク生成手段が、前記カウント手段が前記中間値における前記リーディング0の数をカウントするのと同時にまたはそれより前に前記1つまたは複数のマスクを形成するデータ処理装置が提供される。
第3の例の構成から考察されるように、第1の浮動小数点数と、第2の浮動小数点数から中間値を生成するステップであって、前記中間値が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の差におけるリーディング0の数の予測を示すリーディング0の数を有し、前記予測が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の前記差における前記リーディング0の数と最大でも1つしか違わない中間値生成ステップと、前記中間値における前記リーディング0の数をカウントするステップと、前記中間値を利用して1つまたは複数のマスクを形成するステップとを含むデータ処理方法であって、前記1つまたは複数のマスクを形成するステップが、前記カウントステップが前記中間値における前記リーディング0の数をカウントするのと同時にまたはそれより前に行われるデータ処理方法が提供される。
本発明を、添付の図面に例示されるようなその実施形態を参照して単なる一例としてさらに記載する。
一実施形態による一例のデータ処理装置の図である。 一実施形態による一例のマスク生成器の図である。 一実施形態による一例の最初のマスク生成回路配線の図である。 一実施形態によるlマスク生成回路配線の一例を示す概略図である。 一実施形態によるsマスク生成回路配線の一例を示す概略図である。 マスクを利用して仮数部のオーバーフローを検出し、差の特定のビットを取得するための回路配線を概略的に示す図である 一実施形態による一例のデータ処理方法を示すフローチャートを含む図である。 一実施形態による生成されたマスクを利用する一例を示すフローチャートを含む図である。
添付の図面を参照して実施形態を考察する前に、以下の実施形態の記載が提供される。
一例の構成によって、第1の浮動小数点数と、第2の浮動小数点数から中間値を生成するための中間値生成回路であって、前記中間値が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の差におけるリーディング0の数の予測を示すリーディング0の数を有し、前記予測が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の前記差における前記リーディング0の数と最大でも1つしか違わない中間値生成回路と、前記中間値における前記リーディング0の数をカウントするカウント回路と、前記中間値を利用して1つまたは複数のマスクを形成するマスク生成回路とを備えるデータ処理装置であって、前記マスク生成回路が、前記カウント回路が前記中間値における前記リーディングゼロの数をカウントするのと同時にまたはそれより前に前記1つまたは複数のマスクを形成するように構成されるデータ処理装置が提供される。
第1の浮動小数点数と、第2の浮動小数点数が付与されると、中間値生成回路は中間値を生成する。この中間値を使用して、第1の浮動小数点数(a)と、第2の浮動小数点数(b)の絶対値の差におけるリーディングゼロの数を予測することができる。二進算術演算において、差は和演算を行うことによって計算することができ、それ故に「差」という用語は、必ずしも減算を行うことは必要とせず、むしろ2つの項の絶対値における差、すなわち||a|-|b||を指している。この中間値を使用してリーディングゼロの数の予測を求めることができるが、この予測は1だけずれる可能性がある。詳細には、予測は、絶対値の差の計算中のいずれかの段階において「キャリー」が生じる可能性を考慮していない可能性がある。いずれにしても中間値を生成してから、マスク生成回路を使用してこの中間値を利用して1つまたは複数のマスクを形成する。さらに、マスクは、カウント回路が中間値におけるリーディングゼロの数をカウントするのと同時にまたはそれより前に生成される。よって、中間値におけるリーディングゼロの数をカウントし、その後その情報を利用してマスクを生成する方法と比べてより迅速にマスクが生成される。その結果、マスクをより迅速に利用できるようになり、そのため浮動小数点数の絶対値の差を計算するのと同時に利用できるようにすることができる。中間値は、2つの浮動小数点数における絶対値の差の計算の中間の値であってよく、例えばそれはその計算を通して中程で使用される値であってよい。例えばマスクは、中間値から直接生成される場合もある。
いくつかの実施形態において、データ処理装置は、前記第1の浮動小数点数の前記絶対値と、前記第2の浮動小数点数の前記絶対値の差を求めるために様々な回路を備える。そのような様々な回路を使用して、2つの浮動小数点数の絶対値における実際の差を求めることができる。しかしながらこの差は正規化されていない場合があり、正規化は、中間値に基づいて行うことができる。
いくつかの実施形態において、前記中間値はいくつかのリーディングゼロを有し、その後に最上位の1が続き、その後にゼロまたは複数の0と1が続いており、前記最上位の1の位置は、前記第1の浮動小数点数の前記絶対値と、前記第2の浮動小数点数の前記絶対値の前記差における最上位の1の位置と同一である、または前記第1の浮動小数点数の前記絶対値と、前記第2の浮動小数点数の前記絶対値の前記差における前記最上位の1の前記位置に隣接するかのいずれかである。これらの実施形態において、中間値は、2つの浮動小数点数の絶対値の差におけるリーディングゼロの数を、この差と同数の(またはそれより1つ多い)リーディングゼロの数を有することによって示している。例えば差000001001は、同数のリーディングゼロを有する000001101場合、または1つ多いリーディングゼロを有する000000101の中間値を有する場合がある。
いくつかの実施形態において、前記1つまたは複数のマスクは、前記中間値における前記最上位の1の前記位置を示すlマスクを有し、前記マスク生成回路は、前記中間値を取り込み、前記ゼロまたは複数の0と1を等しい数の0で置き換えることによって前記lマスクを形成する。マスク生成回路によって中間値から形成されるマスクの1つは、lマスクである。lマスクは、一連の数のリーディングゼロと、後に続く一連の数のリーディング1とで構成されている。一連のリーディングゼロの数は、浮動小数点数の絶対値の差におけるリーディングゼロの数と同じである、またはその数から1つだけ異なっている。例えば00110の差と仮定すると、lマスクの可能な値は、リーディングゼロの数が同じである場合は00111であり、または1つだけ多い場合は00011である。
いくつかの実施形態において、データ処理装置は、前記lマスクと、前記差に基づいて、前記差の仮数部がオーバーフローしたかどうかを検出するための仮数部オーバーフロー検出回路を備える。仮数部がオーバーフローしたか否かを判別することができるいくつかの方法がある。しかしながらいくつかの実施形態において、前記仮数部オーバーフロー検出回路は、前記lマスクと、前記差の下位ビット以外のビットの間で論理AND演算を行うことによって、前記差の前記仮数部がオーバーフローしたかどうかを検出するように構成されている。例えば対応する一対のビット間で論理AND演算を行い、その後リダクションOR演算を行うことによって(すなわち結果として生じたAND演算からの全てのビット間でOR演算を行うことによって)、仮数部がオーバーフローしたかどうかを示す全体的な結果を求めることができる。これは、対応する一対のビット間での論理AND演算の一方が正である場合(すなわちlマスクにおける対応するビットと、差における対応するビットが両方とも「1」である場合)、このとき指数部のオーバーフローが発生しているという結果を有する。当然のことながら、仮数部のオーバーフローの有無を異なる方法で示すために他の論理演算が行われる場合もあることも理解されたい。例えばリダクションOR演算の結果を反転することによって、「0」は、仮数部のオーバーフローが発生したことを示す。
いくつかの実施形態において、前記仮数部オーバーフロー検出回路は、左に1回シフトされた前記lマスクと、前記差の下位ビット以外のビットの間で対での論理AND演算を行うことによって、前記差の前記仮数部がオーバーフローしたかどうかを検出するように構成されている。そのような実施形態では、比較すべき関連するビット同士を「ワイヤリング(wiring)」する代わりに、ビットを1の位左に物理的にシフトする論理的な左シフト演算が行われる。これまで通り、シフトされたlマスクと差の間の対応するビットに対してビット単位のAND演算を行うことができる。いくつかの実施形態において、さらなるリダクションOR演算を行うことで、仮数部のオーバーフローが発生したかどうかの指標を得ることができる。オーバーフローを判別する他の方法も存在することを理解されたい。例えば、対応するビットに対してビット単位の論理AND演算を行う前に、差に対して右への論理シフトが行われる場合もある。
いくつかの実施形態において、データ処理装置は、前記lマスクに基づいて前記差の所与のビットの値を返すためのビット取得回路を備える。そのようなビット取得回路によって返すことができるいくつかの異なるビットが存在する。例えば一部の実施形態では、前記所与のビットは、オーバーフロー最下位ビット、最下位ビット、オーバーフローガードビットおよびガードビットのうちの1つである。最下位ビットは、仮数部の最下位ビットを指す。ガードビットは、次の最下位ビットを指す(例えば仮数部の一部ではない最上位ビット)。このようなビットの各々が、丸め処理のプロセスにおいて使用される。オーバーフロー最下位ビットと、オーバーフローガードビットは、仮数部がオーバーフローした場合の最下位ビットと、ガードビットを指す。仮数部のオーバーフローによって、これらのビットは1の位だけ有意レベルが上がる。
ビット取得回路が所与のビットを取得することができるいくつかの方法がある。しかしながら一部の実施形態では、前記ビット取得回路は、前記差と、右に何回かシフトされた前記lマスクに対して論理ANDを行うことによって前記差の前記所与のビットの前記値を返し、前記回数は、前記所与のビットに依存している。いくつかの実施形態において、差が所与のビットに従って何回か左にシフトされる場合もある。
いくつかの実施形態において、前記1つまたは複数のマスクは、前記差におけるリーディング0以外のビットの位置を示すsマスクを有し、前記マスク生成回路は、前記中間値を取りこみ、前記ゼロまたは複数の0と1を同数の1で置き換えることによって前記sマスクを形成する。sマスクは、マスク生成回路によって形成することができる第2のマスクである。lマスクが最上位の1から後のビットをゼロに設定することによって形成されるのに対して、sマスクは、最上位の1から後の全てのビットを1に設定する。sマスクにおけるビットの数は、中間値におけるビットの数と等しい。
いくつかの実施形態において、データ処理装置は、前記sマスクに基づいて前記差のゼロまたは複数の後続ビット(trailing bits)を返すためにビット取得回路を備える。sマスクはこれにより、差からいくつかの一連の最下位ビットを返すのに利用することができる。
差の後続ビットを取得するのにsマスクを使用することができるいくつかの方法がある。しかしながら一部の実施形態では、前記ビット取得回路は、前記差のビットのサブセットと、前記sマスクのビットのサブセットに対して論理AND演算を行うことによって前記差の前記ゼロまたは複数の後続ビットを返す。いくつかの実施形態において、サブセットには、sマスクの全てのビットと、差の全てのビットが含まれる。一部の他の実施形態において、サブセットは厳密なサブセットであり、sマスクと差のビットの一部のみが含まれる。
いくつかの実施形態において、前記後続ビットは、オーバーフロースティッキー(sticky)ビットを含んでおり、前記差のビットの前記サブセットは、前記差の後続xビットであり、前記sマスクのビットの前記サブセットは、前記sマスクの後続xビットであり、xは、前記差+1におけるスティッキービットの数に等しい。差の後続xビットと、sマスクの後続xビットは、例えば差とsマスクのx最下位ビットを指す場合がある。オーバーフロースティッキービットは、仮数部がオーバーフローした場合にスティッキービットになる(例えば仮数部の最上位ビットの差の計算中にキャリーが発生した結果として左に1回シフトされた)ビットを指している。
いくつかの実施形態において、前記後続ビットは、スティッキービットを含んでおり、前記差のビットの前記サブセットは、前記差の後続yビットであり、前記sマスクのビットの前記サブセットは、前記sマスクの後続yビットであり、yは、前記差におけるスティッキービットの数に等しい。
いくつかの実施形態において、前記第1の浮動小数点数と、前記第2の浮動小数点数は正規化される。例えば第1の浮動小数点数と、第2の浮動小数点数は、カウント回路がリーディングゼロの数をカウントする前、かつマスク生成回路が1つまたは複数のマスクを形成する前に正規化される。正規化された浮動小数点数は1以上かつ2未満の仮数部を有する。
特定の実施形態を次に図面を参照して記載する。
浮動小数点(FP)は、少ない数のビットを利用して実数の近似値を求める有効な方法である。IEEE754-2008FP標準規格は、FP数に関して多様な異なる形式を提案しており、これには、バイナリ64(倍精度(Double Precision)、すなわちDPとしても知られる)、バイナリ32(単精度(Single Precision)、すなわちSPとしても知られる)、およびバイナリ16(半精度(Half Precision)、すなわちHPとしても知られる)が含まれる。数字64、32および16は、各々の形式に関して必要とされるビットの数を指している。
FP数は、科学の分野で教示される「科学記数法」と極めて似ており、この場合-200万の代わりに-2.0×10と書く。この数字の要素は、符号(このケースではマイナス)と、仮数部(2.0)と、指数部の基数(10)と、指数部(6)である。これらの要素の全ては、そこに相違点もあるが、FP数においては類似の形を有し、その中で最も重要なのは、構成する要素が2進数として格納され、指数部の基数が常に2であることである。
より正確には、FP数は、符号ビットと、任意の数のバイアスがかけられた指数部ビットと、任意の数の小数部ビットとで構成される。詳細には、その形式が、以下のビットで構成されていることに我々は興味を惹かれる。
負の数に対して符号は1であり、正の数に関しては0である。典型的にはゼロを含めた全ての数が符号を有する。
指数部はバイアスをかけられ、このことは、真の指数部が、この数字に格納されたものと異なっていることを意味している。例えばバイアスされたSP指数部は8ビット長であり、0から255の範囲である。指数部0と255は、特殊なケースであるが、全ての他の指数部は127だけバイアスされており、真の指数部が、バイアスされた指数部より127小さいことを意味している。最小のバイアスされた指数部は1であり、これは−126の真の指数部に相当する。最大のバイアスされた指数部は254であり、これは127の真の指数部に相当する。HPおよびDP指数部も同じように作用し、上記の表示されるバイアスを含む。
SP指数部255(またはDP指数部2047またはHP指数部31)は、無限大と、NaN(非数:Not a Number)と呼ばれる特殊なシンボルが指定されている。無限大(正または負であり得る)は、ゼロの小数部を有する。指数部255と、非ゼロ小数部を含むいずれの数字もNaNである。無限大は飽和値を提供し、そのためそれは実際には「この計算値が、この形式で表すことができるものより大きい数となる」というようなことを意味している。NaNは、例えばゼロで割る、または負の数の平方根を取るなど、実数に対して数学的に定義されない演算のために返される。
指数部ゼロは、いずれの形式においても、サブノーマル数とゼロが指定される。正規の数は、
-1符号×(1.小数部)×2
の値を表しており、
この場合、eは、バイアスされた指数部から算出された真の指数部である。項(1.小数部)は、仮数部と呼ばれ、1は、FP数の要素として格納されないが、代わりに指数部から推測される。ゼロと最大指数部以外の指数部は、形式(1.小数部)の仮数部を示す。指数部ゼロは、形式(0.小数部)の仮数部を示しており、真の指数部は、所与の形式で(1−バイアス)と等しいことを示している。そのような数字は、サブノーマル数と呼ばれる(歴史的にこのような数字は、デノーマルと呼ばれていたが、現在の慣習では用語サブノーマルの方が好まれる)。
指数部と小数部の両方がゼロに等しい数は、ゼロである。
以下の表は、HP形式におけるいくつかの例の数字を有する。エントリは二進法であり、読みやすくするために‘_’の文字が加えられている。サブノーマルエントリ(表の4番目のライン、ゼロの指数を含む)は、直前のラインにおけるノーマルエントリとは異なる指数を生むことに留意されたい。
FP実装が複雑であることの大部分はサブノーマルに起因するものであり、そのためそれらは、マイクロコードまたはソフトウェアによって扱われることが多い。サブノーマルは、ハードウェアにおいて扱うこともでき、ソフトウェアやマイクロコードの実装と比べて10から100倍その演算を速めることができる。
符号を扱うFP方式は、サイン−マグニチュード(sign-magnitude)と呼ばれ、整数がコンピュータに格納される通常のやり方(2の補数)とは異なる。サイン−マグニチュード表現では、同じ数字の正のバージョンと負のバージョンは、符号ビットのみが異なる。符号ビットと、3の仮数部ビットとで構成される4ビットのサイン−マグニチュードの整数は、プラスのものとマイナスのものを、
+1=0001 -1=1001
として表す。
2の補数の表現では、nビットの整数iは、
バイナリn+1-bit値2+iの下位nビットによって表され、そうすると4ビットの2の補数の整数は、プラスとマイナスを
+1=0001 -1=1111
として表現する。
2の補数形式は実際には、それがコンピュータ算術を簡素化することから、符号付きの整数に関して一般的である。
固定小数点数は、厳密に整数と同じであるように見えるが、実際には、特定の数の小数分ビットを有する値を表現している。センサデータは固定小数点形式である場合が多く、FPが広く採用される前に書かれた大量の固定小数点ソフトウェアが存在している。固定小数点数は、プログラマーが「二進小数点」、すなわちその数字の整数と小数部分の間の分離符号を常時監視する必要がある、かつまたビットを正確な場所に維持するためにその数字を絶えずシフトする必要があることから、それを使って作業するのはかなり面倒なものである。FP数には、このような支障がなく、そのため固定小数点数とFP数を切り替えることが可能であることが望ましい。切り替えが可能であるということは、固定小数点のソフトウェアとデータを引き続き使用することができるが、新たなソフトウェアを書いたときには固定小数点に限定されないことも意味している。
大抵のFP演算は、演算が無限の範囲と精度で行われると仮定して計算され、その後FP数に収まるように丸められることがIEEE-754標準規格によって要求されている。計算結果がFP数にきっかり一致した場合、このときその値は常に返されるが、通常は、計算結果は、2つの連続した浮動小数点数の間にある値となる。丸め処理は、2つの連続する数字のどちらが返されるべきかを選ぶプロセスである。
丸め処理には、丸め処理モードと呼ばれるいくつかの方法があり、これらのうちの6つの例は以下の通りである。
この定義は、任意の実際の方法でどのように丸め処理を行うかについて伝えるものではない。1つの一般的な実装は、演算を行い、打ち切り後の値(すなわちFP形式に収まる値)を見ると同時に残りのビットも見て、このとき特定の条件を保持するならば打ち切り後の値を調節することである。これらの計算は全て
L−(最下位)打ち切り後の値の最下位ビット
G−(ガード)次の最上位ビット(すなわち打ち切りに含まれない最初のビット)
S−(スティッキー)打ち切りの部分ではない全ての残りのビットの論理OR
に基づいている。
これらの3つの値と、打ち切り後の値が与えられたならば、以下の表に従って正確に丸められた値を常に計算することができる。
例えば2つの4ビットの仮数部を掛け、その後4ビットの仮数部に丸めると考える。
sig1=1011(10進法の11)
sig2=0111(10進法の7)
を掛けると、
sig1×sig2=1001_101(10進法の77)となる。
4つの最下位ビット(1101)は、その桁におけるビットLGssに相当する。
打ち切り後の4ビットの結果の最下位ビットはL、次のビットはGとラベルされ、Sはsとラベルされた残りのビットの論理OR(すなわちS=0|1=1) である。丸め処理を行うために、その4ビットの結果(1001)を上記の表の丸め処理モードと、計算方法に従って調節する。そうして例えばRNA丸め処理において、Gが設定されると、我々は1001+1=1010を返す。RX丸め処理の場合、G|Sが真であるとLを1に設定し(それは既に1であり、そのためこのケースでは、何も変化しない)、1001を返す。
図1は、一実施形態によるデータ処理装置100を例示している。この例において、データ処理装置は、各々が106ビットである2つの仮数部オペランド(sigaと、sigb)を受け取る。この例では、「siga」に指定される値は、sigaとsigbのうちの大きい方である。しかしながら代替の一実施形態では、データ処理装置100は、siga−sigbと、sigb−sigaの両方を計算するために構成が複製される場合もある。各々のオペランドは106ビットであるが、これは、それが融合積和(FMA:fuse-multiply-add)演算の計算において使用される融合仮数部のサイズであるためである。その他の仮数部のサイズも使用され得ることを理解されたい。これらの2つの値は、加算回路110に渡される。その目的はsigaとsigbの差を求めることであるが、これは、sigbを2つの補数形式に変換し、sigaと、sigbと、1とを加算することによって達成することができる。これは加算回路110を利用し、加算回路110のキャリーフラグを「1」に設定して「1」の加算を実現することによって達成される。値sigaと、sigbは、中間値生成回路130にも渡され、この回路はリーディングゼロ予想装置120の一部を形成しており、このリーディングゼロ予想装置が、sigaの値とsigbの値の差におけるリーディングゼロの数を推測する。中間値生成回路130は、中間値(w)を生成する。中間値wは、加算回路110によって計算された差におけるリーディングゼロの数と等しい、またはそれとは1つ異なるリーディングゼロの数を有するようなものである。これにより中間値生成回路が、差におけるリーディングゼロの数を予測することができる。この中間値wは、wにおけるリーディングゼロの数をカウントするカウント回路140によって分析される。その結果(lシフト)は、加算回路110によって計算された差を正規化するにはどのくらいの左シフトを行うべきかについて、シフト回路160に推定値を与える7ビットの数字である。
これとは別に中間値生成回路130によって形成された中間値(w)は、1つまたは複数のビットマスクを生成するためにマスク生成回路150に提供される。マスク生成回路150の作動は、後により詳細に示される。しかしながらこれらのマスクの1つまたは複数は、オーバーフローおよび丸め処理回路170に渡され、この回路が、マスク生成回路150によって形成されたマスクの1つまたは複数を利用して仮数部のオーバーフローが発生したか否かを判別する。仮数部のオーバーフローは、加算回路110によって行われる計算において所持されるビットに起因して仮数部のサイズが大きくなった場合に発生する。このようなことが起こった場合、この場合右のビットシフタ180を使用して仮数部を1ビット右にシフトさせることで相殺する。この演算の結果(右に0または1のいずれかのシフト)は、sigaとsigbとの正規化された差である。図1の回路配線において、マスク生成回路150は中間値(w)からマスクを形成するため、カウント回路140がカウントする演算を完了するのと同時にまたはその前にマスクを形成する。この方法において、オーバーフローおよび丸め処理回路170が、仮数部のオーバーフローが発生したか否かをより迅速に判別することが可能である。
図2は、一実施形態によるマスク生成回路150の一例を図示する。マスク生成回路150は、一次マスク回路190を備えており、これは中間値生成回路130から中間値(w)を受け取り、この中間値に対して最初の一セットの計算を行う。これらの最初の計算はその後、lマスクを計算するためにlマスク生成回路200に渡され、sマスクを計算するためにsマスク生成回路210に渡される。lマスクは、1が後に続く中間値(w)と同数のリーディングゼロを含む。残りのビットは全てゼロである。sマスクもまた、1が後に続く中間値(w)と同数のリーディングゼロを含む。残りのビットは全て1である。そうすると、例えば中間値(w)が000110100100と仮定すると、lマスクは000100000000になり、sマスクは000111111111になる。これらのマスクを利用して、仮数部のオーバーフローが発生したか否かを判別することができる、または所望されるように差の計算から特定のビットを抜き出すことができる。
図3は、16ビットの数に適した一次マスク回路190の一例を例示する。当業者は、この構造は最初の一セットの計算を生み出すために一般化することができることを理解されるであろう。この最初の計算は、wの一連のビットの異なるサブセットの論理ORを表している。当業者が理解するように、そのようなビットのいずれか1つが「1」であるならば、ビットのサブセットの論理ORは「1」になる。隣り合うビットの各々の対(例えばw0とw1、w2とw3、w3とw4など)が入力としてORゲートに挿入される。1つのレベルにおけるORゲートからの出力は、次のレベルで入力としてORゲートに提供される。このようにして、ORゲートの数を各レベルにおいてトップレベルになるまで半分に減し、その入力におけるビットのいずれかが「1」であるか否かを示す1つのORゲートとなる。これに加えて、各々のORゲートに対する第1の入力(最初のレベルにおけるもの以外)が、最初の計算としてlマスク生成回路200およびsマスク生成回路210に提供される。図3の例では、最初の計算には、(15:0)または(15:8)または(15:12)または(7:4)または(15:14)または(11:10)または(7:6)または(3:2)の値が含まれる。この情報を利用して、「1」である任意の値についての最上位の「1」を迅速に突き止めることができる。このような内部値は図4において使用されることでw(中間値)における最上位の「1」を迅速に見つけることを可能にする。
図4は、lマスク生成回路200を例示しており、これはいくつかのANDゲートで構成されており、ANDゲートの各々は、2つの入力のうちの一方を反転させる。lマスク生成回路は、一次マスク回路190によって生まれた最初の計算を利用して、一続きの出力ビット(m0・・・m15)を生成し、これらがlマスクのビットを表す。第1のレベルにおいて、各々のグループは、一対のビット(例えばw0とw1、w2とw3、w3とw4など)を含み、上位ビットが続いており、下位ビットは、上位ビットのORの反転した形式と共に(すなわち最初のレベルにおける上位ビット自体)ANDゲートへの入力として受信される。換言すると、各グループにおいて、上位の半数が「1」ではない場合、下位の半数はもっぱら「1」になる。第1のレベルの場合、例えば、w15が「1」ではない場合、w14はもっぱら「1」であり得る。これにより、各々のグループに関して一対の出力が生じることになり、最初の出力はそのグループの上部の半数が「1」であるかどうかを示しており、次の出力は、そのグループの下部の半数が「1」であるかどうかを示している。各々のその後のレベルにおいて、隣接するグループ同士が結合される。したがって第2のレベルでは、第1のグループは、最初の4ビット(w0−w3)に関連する。ここでもまたビットの上部の半数は自動的に進み、下位の半数は、上位のビットのORの反転した形式と共に、ANDゲートへの入力として受信される。ここでもまた換言すると、各々のグループにおいて、上位の半数が「1」ではない場合、下位の半数はもっぱら「1」になる。よって第2のレベルの場合、w3とw2はそのまま進む。反対にw0とw1は各々AND演算される、または(3:2)である。 この結果は4つの出力である。
出力の数字は各レベルにおいて同一である。同様に各レベルにおいて、ANDゲートの数字は、b/2と等しく、bはwのビット数である。
図5は、sマスク回路210を例示する。sマスク回路は、一部を反転するANDゲートがORゲートによって置き換えられていることを除いて、図4に示されるlマスク回路と一致している。
図6は、オーバーフローおよび丸め処理回路170を概略的に例示しており、これはlマスクとsマスクを使用して仮数部のオーバーフローを検出し、加算回路110によって計算された差の特定のビットを取得する。オーバーフローおよび丸め処理回路170は、マスク生成回路150によって形成された1つまたは複数のマスクを受け取る。
仮数部オーバーフロー検出回路220によってlマスクを利用して、仮数部のオーバーフローを検出する。これは、lマスクを1ビット左に移動させ、シフトされたlマスクと差の間でビット毎のAND演算を行い、その後その結果に対してリダクションORを行うことによって達成することができる。しかしながら実際にはシフト演算を実際に行う必要はなく、代わりに適切なビットを直接結びつけることができるため所望されるビットを操作することができる。詳細には、仮数部のオーバーフロー信号は、式|(lマスク[105:0]&差[106:1])によって計算することができる。
オーバーフローおよび丸め処理回路170はまた、加算回路110によって計算された差から特定のビットを取得するためにビット取得回路230を含む。例えば要求されるビットは、オーバーフロー最下位ビット、最下位ビット、オーバーフローガードビットおよびガードビットであり得る。最下位ビットと、ガードビットのオーバーフローヴァージョンは、仮数部がオーバーフローした場合の(これによりオーバーフローガードビットの位置は、最下位ビットと同じである)最下位ビットと、ガードビットに相当する。したがってオーバーフロー最下位ビットは、lマスクを52ビットを右に移動させることによって検出することができ、オーバーフローガードビット(または最下位ビット)は、lマスクを53ビット右に移動させることによって検出することができ、ガードビットは、lマスクを54ビットを右に移動させることによって検出することができる。各々のケースにおいて、シフト後のlマスクはその後、差とビット単位でAND演算され、リダクションORが行われる。シフトの回数は、sigaおよびsibaの性質に左右される。この例では、2つの値は共に倍精度であり、故に仮数部は53ビット長であると推測される。ここでもまた実際は、実際にlマスクをシフトする必要はない。代わりに、適切なビットを直接結びつけることで関連するビットを操作することができる。したがってオーバーフロー最下位ビットは、この例では、式|(lマスク[106:51]&差[55:0])によって求めることができ、最下位ビットまたはオーバーフローガードビットは、式|(lマスク[106:51] &差[55:0])によって求めることができ、その一方でガードビットは、式|(lマスク[106:53]&和[53:0])によって求めることができる。lマスクの上部のtビットと、差の下部のtビットの間でビット単位のAND演算が行われる。
sマスクはまた、オーバーフロースティッキービットと、ノーマルスティッキービットを取得するために、ビット取得回路230によって使用される場合もある。スティッキービットは、ガードビットに続く全てのビットに対してORを行った結果として生じる。よって差から後続ビットを取得するためにsマスクを利用する必要がある。倍精度の浮動小数点数の上記の例では、スティッキービットは、差の下位の54ビットにおいてのみであり得る。したがってオーバーフロースティッキービットを計算する作業は、式|(sマスク[53:0]&差[53:0])によって達成され、スティッキービットは、式|(sマスク[52:0]&差[52:0])によって達成される。
図7は、一実施形態による一例のデータ処理方法を示すフローチャート240を例示している。プロセスはステップ250において始まり、ここで中間値(w)が生成される。プロセスはその後2つの部分に分かれる。ステップ260において、中間値(w)におけるリーディングゼロの数が計算される。これはカウント回路140によって実現することができる。ステップ260が完了するときに終了するウィンドウタイムの間に、ステップ270において、例えばマスク生成回路150によって1つまたは複数のマスクが形成される。
図8は、一実施形態による生成されたマスクを利用する一例を示すフローチャート280を含んでいる。ステップ290において、2つの浮動小数点仮数部の和(または差)が、生成されたマスクと比較される。これは、仮数部オーバーフロー検出回路220によって実現することができる。ほぼ同時に、和(または差)が、カウント回路140によって指示される回数だけ左にシフトされる。これは左シフタ160によって実現することができる。いずれのケースでも、ステップ310において、仮数部のオーバーフローが発生したか否かが仮数部オーバーフロー検出回路220より判定される。もし発生したならば、このときステップ320において、和/差に対して1ビットの右シフトが(例えば右シフタ180によって)行われる。いずれのケースでも、ステップ330において正規化された和/差が出力される。
同様のやり方で、仮数部のオーバーフローが発生したか否かに関わらず、ビット取得回路230を使用して特定のビットの値を求めることができる。これらの値は、そのような値と、行われる丸め処理演算に従って、正規化された和に対して丸め演算を行うための出力である場合がある。
上記の実施形態はよって、マスクを形成することで、差/和におけるリーディングゼロの数を概算する中間値(w)を利用することによって、より迅速に仮数部のオーバーフローを判別し、かつ差/和演算の特定のビットを取得することが可能である。この方法において、マスクを使用しない場合、または中間値(w)のリーディングゼロの数から生成されたマスクを使用しなかった場合に比べて、より迅速に出力を正規化する(および出力を丸める)ことも可能である。これはとりわけ、入力の指数は同一である、または1つずれており、よって多くのリーディングゼロを伴う数字となり得る「近経路(near path)」演算において有効である可能性がある。
最初の研究された例を検討すると、そこではsiga=1001_1010であり、siba=1000_1100である。演算siga−sibaは、siga+〜siba+1(これは2つの補数減算である)。この演算の結果は、0000_1110である(いかなる整数オーバーフローも無視する)。よってその差は4つのリーディングゼロを有する。中間値は、この差と同じ(または1つ多い)リーディングゼロを有することになる。厳密には、いかにしてwが計算されるかは、この文献の範囲を超えており、これまでどこかで十分に考察されている。このケースでは、中間値は、0000_1001である。換言すると4つのリーディングゼロが予測される。lマスクは0000_1000となり、sマスクは0000_1111となる。|(lマスク[7:0]&差[8:1])の結果は0である。よってオーバーフローは発生していない。これは、加算演算において上部の4つのビットを加えたことで0000となり、その一方で下部の4つのビットにおいてはキャリーアウトが発生していないことに注目することによって確認することができる。
2番目の研究された例を検討すると、そこではsiga=1001_1010であり、sigb=0110_1111である。演算の結果は、0000_1010である。中間値はこのケースでは0000_0101である。lマスクはよって、0000_0100であり、sマスクは0000_0111である。したがって5つのリーディングゼロが予測される。しかしながら|(lマスク[7:0]&差[8:1])の結果は1である。故に、仮数部のオーバーフローが発生している。これは、加算演算において上部の5つのビットを加え、その結果が00000であることに注目することによって確認することができる。その一方で、下部の3つのビットでは、キャリーアウトが発生している。wによる予測は故に1つだけずれ、そのためリーディングゼロの正確な数は4である。図1における回路配線では、これは左シフタ160がwに基づいて5つの左シフトを実行することになる。仮数部のオーバーフローの検出によってその後、予測ミスの補正を行うために、右シフタ180によるさらなる1ビットの右シフトが生じることになる。
本出願において、「・・・で構成される」という言葉は、特定の装置の1つの要素が、規定された操作を実行することが可能な構成を有することを意味するのに使用される。この文脈において、「構成」とは、ハードウェアまたはソフトウェアの相互接続の構成または方式を指している。例えば装置は、規定された動作を提供する専用ハードウェアを有する場合がある、あるいはプロセッサまたは他の処理デバイスがその機能を果たすようにプログラムされる場合もある。「構成される」とは、規定された動作を提供するために装置の要素を何らかの方法で変更させる必要があることは示唆していない。
本発明の例示の実施形態を添付の図面を参照してここに詳細に記載してきたが、本発明は、そのような厳密な実施形態に限定されるものではなく、添付のクレームによって定義される本発明の精神および範囲から逸脱することなく、当業者によって種々の変更、追加および修正をそこに行うことができることを理解されたい。例えば、本発明の範囲から逸脱することなく、従属クレームの特徴の様々な組み合わせを独立クレームの特徴との併せて作成することができる。

Claims (20)

  1. 第1の浮動小数点数と、第2の浮動小数点数から中間値を生成するための中間値生成回路であって、前記中間値が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の差におけるリーディング0の数の予測を示すリーディング0の数を有し、前記予測が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の前記差における前記リーディング0の数と最大でも1つしか違わない中間値生成回路と、
    前記中間値における前記リーディング0の数をカウントするカウント回路と、
    前記中間値を利用して1つまたは複数のマスクを形成するマスク生成回路と、
    を備えるデータ処理装置であって、
    前記マスク生成回路が、前記中間値における前記リーディングゼロの数をカウントするのと同時にまたはそれより前に前記1つまたは複数のマスクを形成するように構成されるデータ処理装置。
  2. 前記第1の浮動小数点数と、前記第2の浮動小数点数の前記絶対値の差を求めるために差分回路を備える、請求項1に記載のデータ処理装置。
  3. 前記中間値が、いくつかのリーディングゼロを有し、その後に最上位の1が続き、その後にゼロまたは複数の0もしくは複数の1が続いており、
    前記最上位の1の位置は、
    前記第1の浮動小数点数の前記絶対値と、前記第2の浮動小数点数の前記絶対値の前記差における最上位の1の位置と同一である、または
    前記第1の浮動小数点数の前記絶対値と、前記第2の浮動小数点数の前記絶対値の前記差における前記最上位の1の前記位置に隣接するかのいずれかである、請求項2に記載のデータ処理装置。
  4. 前記1つまたは複数のマスクが、前記中間値における前記最上位の1の前記位置を示すlマスクを備えており、
    前記マスク生成回路が、前記中間値を取り込み、前記ゼロまたは複数の0と1を同数の0で置き換えることによって前記lマスクを形成する、請求項3に記載のデータ処理装置。
  5. 前記lマスクと、前記差に基づいて、前記差の仮数部がオーバーフローしたかどうかを検出するための仮数部オーバーフロー検出回路を備える、請求項4に記載のデータ処理装置。
  6. 前記仮数部オーバーフロー検出回路が、前記lマスクと、前記差の下位ビット以外のビットの間で論理AND演算を行うことによって、前記差の前記仮数部がオーバーフローしたかどうかを検出するように構成される、請求項5に記載のデータ処理装置。
  7. 前記仮数部オーバーフロー検出回路が、左に1回シフトされた前記lマスクと、前記差の下位ビット以外のビットの間で対での論理AND演算を行うことによって、前記差の前記仮数部がオーバーフローしたかどうかを検出するように構成されている、請求項5に記載のデータ処理装置。
  8. 前記仮数部オーバーフロー検出回路が前記差の前記仮数部がオーバーフローしたことを検出するのに応じて、前記差に対して1ビットの修正するための右シフトを行う、請求項5に記載のデータ処理装置。
  9. 前記lマスクに基づいて前記差の所与のビットの値を返すためのビット取得回路を備える、請求項4に記載のデータ処理装置。
  10. 前記所与のビットは、オーバーフロー最下位ビット、最下位ビット、オーバーフローガードビットおよびガードビットのうちの1つである、請求項9に記載のデータ処理装置。
  11. 前記ビット取得回路が、前記差のビットのサブセットと、前記lマスクのビットのサブセットに対して論理AND演算を行うことによって、前記差の前記所与のビットの前記値を返し、
    前記差のビットの前記サブセットと、前記lマスクのビットの前記サブセットが、前記所与のビットに依存している、請求項9に記載のデータ処理装置。
  12. 前記ビット取得回路が、前記差と、右に何回かシフトされた前記lマスクに対して論理ANDを行うことによって前記差の前記所与のビットの前記値を返し、
    前記回数は、前記所与のビットに依存している、請求項9に記載のデータ処理装置。
  13. 前記1つまたは複数のマスクは、前記差におけるリーディング0以外のビットの位置を示すsマスクを有し、
    前記マスク生成回路が、前記中間値を取りこみ、前記ゼロまたは複数の0と1を同数の1で置き換えることによって前記sマスクを形成する、請求項3に記載のデータ処理装置。
  14. 前記sマスクに基づいて前記差のゼロまたは複数の後続ビットを返すためにビット取得回路を備える、請求項13に記載のデータ処理装置。
  15. 前記ビット取得回路が、前記差のビットのサブセットと、前記sマスクのビットのサブセットに対して論理AND演算を行うことによって、前記差の前記ゼロまたは複数の後続ビットを返す、請求項14に記載のデータ処理装置。
  16. 前記後続ビットが、オーバーフロースティッキービットを含んでおり、
    前記差のビットの前記サブセットが、前記差の後続xビットであり、前記sマスクのビットの前記サブセットが、前記sマスクの後続xビットであり、
    xは、前記差+1におけるスティッキービットの数に等しい、請求項15に記載のデータ処理装置。
  17. 前記後続ビットが、スティッキービットを含んでおり、
    前記差のビットの前記サブセットが、前記差の後続yビットであり、
    前記sマスクのビットの前記サブセットが、前記sマスクの後続yビットであり、
    yは、前記差におけるスティッキービットの数に等しい、請求項15に記載のデータ処理装置。
  18. 前記第1の浮動小数点数と、前記第2の浮動小数点数が正規化される、請求項1に記載のデータ処理装置。
  19. 第1の浮動小数点数と、第2の浮動小数点数から中間値を生成するための中間値生成手段であって、前記中間値が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の差におけるリーディング0の数の予測を示すリーディング0の数を有し、前記予測が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の前記差における前記リーディング0の数と最大でも1つしか違わない中間値生成手段と、
    前記中間値における前記リーディング0の数をカウントするためのカウント手段と、
    前記中間値を利用して1つまたは複数のマスクを形成するためのマスク生成手段と、
    を備えるデータ処理装置であって、
    前記マスク生成手段が、前記カウント手段が前記中間値における前記リーディング0の数をカウントするのと同時にまたはそれより前に前記1つまたは複数のマスクを形成するデータ処理装置。
  20. 第1の浮動小数点数と、第2の浮動小数点数から中間値を生成するステップであって、前記中間値が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の差におけるリーディング0の数の予測を示すリーディング0の数を有し、前記予測が、前記第1の浮動小数点数の絶対値と、前記第2の浮動小数点数の絶対値の前記差における前記リーディング0の数と最大でも1つしか違わない中間値生成ステップと、
    前記中間値における前記リーディング0の数をカウントするステップと、
    前記中間値を利用して1つまたは複数のマスクを形成するステップと、
    を含むデータ処理方法であって、
    前記1つまたは複数のマスクを形成するステップが、前記カウントステップが前記中間値における前記リーディング0の数をカウントするのと同時にまたはそれより前に行われるデータ処理方法。
JP2017228193A 2016-12-06 2017-11-28 リーディングゼロ予想 Active JP7044528B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/370,212 2016-12-06
US15/370,212 US10606557B2 (en) 2016-12-06 2016-12-06 Leading zero anticipation

Publications (2)

Publication Number Publication Date
JP2018097864A true JP2018097864A (ja) 2018-06-21
JP7044528B2 JP7044528B2 (ja) 2022-03-30

Family

ID=60950209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017228193A Active JP7044528B2 (ja) 2016-12-06 2017-11-28 リーディングゼロ予想

Country Status (5)

Country Link
US (1) US10606557B2 (ja)
JP (1) JP7044528B2 (ja)
KR (1) KR102459011B1 (ja)
CN (1) CN108153513B (ja)
GB (1) GB2559039B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6773979B2 (ja) * 2017-03-13 2020-10-21 富士通株式会社 処理回路及び処理回路の制御方法
CN109960486B (zh) * 2019-02-14 2021-06-25 安谋科技(中国)有限公司 二进制数据处理方法及其装置、介质和系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520028A (ja) * 1990-12-28 1993-01-29 Matsushita Electric Ind Co Ltd 加減算のための浮動小数点演算装置の仮数部処理回路
JPH05307463A (ja) * 1992-04-13 1993-11-19 Nec Corp プライオリティエンコーダおよび浮動小数点加減算装置
JPH1063482A (ja) * 1996-07-12 1998-03-06 Internatl Business Mach Corp <Ibm> 計算システム及び方法
US5841683A (en) * 1996-09-20 1998-11-24 International Business Machines Corporation Least significant bit and guard bit extractor
WO2008096446A1 (ja) * 2007-02-09 2008-08-14 Fujitsu Limited 演算処理装置、情報処理装置、および演算方法
JP2015170359A (ja) * 2014-03-07 2015-09-28 エイアールエム リミテッド 浮動小数点オペランドを乗算するためのデータ処理装置及び方法
US20150378679A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Underflow/overflow detection prior to normalization

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392228A (en) * 1993-12-06 1995-02-21 Motorola, Inc. Result normalizer and method of operation
US7720900B2 (en) * 2005-09-09 2010-05-18 International Business Machines Corporation Fused multiply add split for multiple precision arithmetic
GB201111035D0 (en) * 2011-06-29 2011-08-10 Advanced Risc Mach Ltd Floating point adder
US9104479B2 (en) * 2011-12-07 2015-08-11 Arm Limited Apparatus and method for rounding a floating-point value to an integral floating-point value

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0520028A (ja) * 1990-12-28 1993-01-29 Matsushita Electric Ind Co Ltd 加減算のための浮動小数点演算装置の仮数部処理回路
JPH05307463A (ja) * 1992-04-13 1993-11-19 Nec Corp プライオリティエンコーダおよび浮動小数点加減算装置
JPH1063482A (ja) * 1996-07-12 1998-03-06 Internatl Business Mach Corp <Ibm> 計算システム及び方法
US5841683A (en) * 1996-09-20 1998-11-24 International Business Machines Corporation Least significant bit and guard bit extractor
WO2008096446A1 (ja) * 2007-02-09 2008-08-14 Fujitsu Limited 演算処理装置、情報処理装置、および演算方法
JP2015170359A (ja) * 2014-03-07 2015-09-28 エイアールエム リミテッド 浮動小数点オペランドを乗算するためのデータ処理装置及び方法
US20150378679A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Underflow/overflow detection prior to normalization

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ATKINS,MG AND HERRING,JR: "Floating Point Adder Leading Zero Anticipate", IP.COM, vol. 36, no. 10, JPN7021004664, 1 October 1993 (1993-10-01), pages 545 - 548, ISSN: 0004629406 *

Also Published As

Publication number Publication date
US10606557B2 (en) 2020-03-31
GB201720229D0 (en) 2018-01-17
KR20180064975A (ko) 2018-06-15
US20180157463A1 (en) 2018-06-07
KR102459011B1 (ko) 2022-10-27
CN108153513A (zh) 2018-06-12
GB2559039A (en) 2018-07-25
GB2559039B (en) 2019-06-05
JP7044528B2 (ja) 2022-03-30
CN108153513B (zh) 2023-05-23

Similar Documents

Publication Publication Date Title
CN105468331B (zh) 独立的浮点转换单元
CN107769791B (zh) 用于定点到浮点的转换的装置和方法及2的负幂检测器
JP3541066B2 (ja) コンピュータにおいて除算および平方根計算を実施するための方法および装置
US9608662B2 (en) Apparatus and method for converting floating-point operand into a value having a different format
JP6360450B2 (ja) 浮動小数点オペランドを乗算するためのデータ処理装置及び方法
JPH02500551A (ja) 浮動小数点正規化予測のための装置及び方法
US10338889B2 (en) Apparatus and method for controlling rounding when performing a floating point operation
CN108694037B (zh) 用于在执行浮点减法时估计移位量的装置和方法
CN111936965A (zh) 随机舍入逻辑
US10061561B2 (en) Floating point addition with early shifting
JP7044528B2 (ja) リーディングゼロ予想
JP2006172035A (ja) 除算・開平演算器
JPH09244874A (ja) 最上位有効ビット位置予測方法
US10275218B1 (en) Apparatus and method for subtracting significand values of floating-point operands
US9658827B2 (en) Apparatus and method for performing reciprocal estimation operation
KR20210124347A (ko) 앵커 데이터 요소 변환
US10331406B2 (en) Handling floating-point operations
KR100974190B1 (ko) 부동 소수점을 이용한 복소수 곱셈방법
US10346130B2 (en) Handling floating point operations
KR20230015844A (ko) 극소 검출
RU2614932C1 (ru) Устройство для логарифмирования двоичных чисел
US20080307032A1 (en) Divider Circuit
CN110879696A (zh) 平方根运算中的推测性计算
JP2005031847A (ja) 整数演算の方法および整数演算プログラム、ならびに整数演算装置
JPH05313861A (ja) 開平演算装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220202

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220317

R150 Certificate of patent or registration of utility model

Ref document number: 7044528

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150