JPH09244874A - 最上位有効ビット位置予測方法 - Google Patents

最上位有効ビット位置予測方法

Info

Publication number
JPH09244874A
JPH09244874A JP9024644A JP2464497A JPH09244874A JP H09244874 A JPH09244874 A JP H09244874A JP 9024644 A JP9024644 A JP 9024644A JP 2464497 A JP2464497 A JP 2464497A JP H09244874 A JPH09244874 A JP H09244874A
Authority
JP
Japan
Prior art keywords
bit
sum
triples
bits
binary
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
JP9024644A
Other languages
English (en)
Other versions
JP3753275B2 (ja
Inventor
H Miller Robert Jr
ロバート・エイチ・ミラー,ジュニア
G Baha Rudolf
ルドルフォ・ジー・バーハ
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH09244874A publication Critical patent/JPH09244874A/ja
Application granted granted Critical
Publication of JP3753275B2 publication Critical patent/JP3753275B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】PKG符号方式を採用する浮動小数点加算器に
おける使用のため、2つのnビット・オリジナル・オペ
ランドの2の補数2進和の最上位有効ビット位置を予測
する方法および装置を改良する。 【解決手段】非正規化された2つの(n+1)ビット形式
の加算オペランドの各i番目位置毎に、第1の値が2つ
のビットの加算がゼロ、第2の値が1、第3の値が2で
あることを示す値を持つ3種類の記号の1つをi番目記
号として割り当てることによって(n+1)個の記号シー
ケンスを生成し、この記号シーケンスの最左端から開始
して3つの連続する記号を1つのトリプルと定義し、隣
接する2つのトリプルが常に共通の2つの隣接記号を持
つように(n+1)個のトリプルを形成し、このトリプル
の各々を検査することによって、最上位有効ビット位置
を予測する。この予測位置に従って、実際に計算された
和を正規化する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、浮動小数点2進加
算器に関するもので、特に該加算器において使用される
最上位有効ビット位置予測の装置および方法に関するも
のである。
【0002】
【従来の技術】高性能浮動小数点2進加算器は、近代マ
イクロプロセッサの重要なコンポーネントである。高性
能加算器は、旧式の腕力に任せた技術に頼るのではな
く、PKG符号化方式のような代替アプローチをしばし
ば使う。PKG符号化方式は、迅速に和を計算するた
め、2つの2進加数を諸段階で使用される可能性のある
ビット単位のキャリ情報に置き換える。加数のPKG表
示は、2つのオリジナルのオペランドより多くのビット
を必要とするが、和の計算速度の点で顕著な利益が得ら
れる。PKG方式であろうとそうでなかろうと、高性能
浮動小数点加算機の重要な部分は、「最上位有効ビット
位置予測器」(Leading Bit Anticipatorの頭文字をとっ
てLBAと呼称される)と呼ばれるエレメントである。
【0003】すべての浮動小数点演算の場合、演算の未
調整結果は正規化されなければならないことが多い。す
なわち、加算後仮数部の上位桁のゼロを削除するため有
効ビットをシフトする必要があり(あるいは、負である
2の補数の場合にも有効桁をシフトしてゼロを削除する
必要があり)、そのシフト数に対応して指数部も調整さ
れる。LBAがない場合、演算後の未調整結果は、どの
ような正規化ステップが必要かを決定するため検査され
なければならない。これが機能しないことがしばしばあ
るわけではないが、最終的解を得るまでに相当の時間を
要する。LBAは、演算の和が計算される間に正規化の
ステップを決定するので、未調整演算結果が計算され次
第追加の検査を行うことなく直ちに正規化を実行するこ
とができる。正規化ステップとは、正規化の際にゼロの
ビットを削除し、指数調整に必要なシフト桁数を決定す
ることを含む。
【0004】既存の最上位有効ビット位置予測器(LB
A)は複雑で、その実施には多くのユニットを必要とす
る。LBAの1つの例が、IBM JOURNAL OF RESEARCH AN
D DEVELOPMENT, January 1990 (Vol. 34, No. 1) pages
59-70に"Design of the IBM RISC System/6000 floati
ng-point execution unit(IBM RISC System/6000浮動小
数点演算実行装置の設計)"と題するR. K. Montoya, E.
Hokenek, S. L. Runyon各氏共著の記事に記載されてい
る。同じく上記参照誌に、E. Hokenek,R. K. Montoya両
氏著の"Leading-zero anticipator(LZA) in the IBM RI
SC System/6000 floating-point execution unit(RISC
System/6000浮動小数点演算実行装置における上位0ビ
ット予測器)"という記事が掲載されている。
【0005】
【発明が解決しようとする課題】最上位有効ビット位置
予測器からミステリを取り払い、複雑でなく実施と製作
が簡単なLBAを実現する手段が必要とされている。
【0006】
【課題を解決するための手段】本発明は、PKG符号方
式を採用する浮動小数点加算器における使用のため、2
つのnビット・オリジナル・オペランドの2の補数2進
和の最上位有効ビット位置を予測する改良された方法を
提供する。この方法は、(1)上記2つのnビット・オリ
ジナル・オペランドを2つの(n+1)ビット形式に非正
規化するステップ、(2)上記2つの(n+1)ビット形式
の各i番目位置毎に、第1の値が2つの(n+1)ビット
形式のそれぞれi番目の2つのビットの加算がゼロであ
ることを示し、第2の値がその加算が1であることを示
し、第3の値がその加算が2であることを示す値を持つ
3種類の記号の1つをi番目記号として割り当てること
によって、(n+1)個の記号シーケンスを生成するステ
ップ、(3)上記(n+1)個の記号シーケンスの最左端か
ら開始して、3つの連続する記号を1つのトリプルと定
義し、隣接する2つのトリプルが常に共通の2つの隣接
記号を持つように(n+1)個のトリプルを形成するステ
ップ、(4)上記トリプルの各々を検査して、該トリプル
に対応する上記非正規化オペランドのビット位置の部分
的加算セグメントが2つの最上位有効ビットを持つこと
を示す第1の値またはそれ以外を示す第2の値を持つ暫
定ビットを、少なくとも上記トリプルの数に等しい数の
暫定ビットから構成される2進暫定ワードの対応する暫
定ビット位置に作成するステップ、(5)上記2進暫定ワ
ードの検査によって、上記第1のビット値を持つ最上位
有効ビット位置を決定し、決定したビット位置を上記2
進暫定ワードの最左端からのビット位置数Jで表現する
ステップ、(6)上記2つの(n+1)ビット形式値を加算
して未調整和を作成するステップ、(7)上記未調整和を
上記Jに等しい量だけ正規化するステップ、および、
(8)Jが1ビット位置小さすぎることを判断し、Jが1
小さい場合、Jに対応するシフトとは別に更に追加シフ
トを行うステップ、を含む。
【0007】最下位Kの仮定が使われ暫定ビットがセッ
トされない場合、無調整演算和はゼロである。ゼロのケ
ースは指数に関する強制ゼロを必要とするが、正規化は
必要とされない。上記ステップ(5)において、残りのす
べてのビット位置について暫定ビットを作成するよう
に、MSBについての規則を若干変更することによっ
て、規則を簡素化することが可能である。その簡素化
は、中央の記号がPであるいかなるトリプルもゼロの暫
定ビットを作成することができるというものである。
【0008】
【発明の実施の形態】図1に示される浮動小数点加算回
路1は、マイクロプロセッサのような集積回路内での実
装に適するように改良された最上位有効ビット予測器
(LBA)6を装備している。図1の回路は例示の目的の
ものである点は理解されるであろう。例えば、(オーバ
ーフローを回避するため)既に(n+1)ビット表示形式
にシフトされたnビット演算を処理するものとして示さ
れている。本発明の好ましい実施形態においてはn=6
4であるが、nは、それより大きいビットでも小さいビ
ットでも可能である。しかし、そのような特定のnビッ
トおよび(n+1)ビット・オペランドは2進数の2の補
数形式である。本発明の実施例は、PKG符号化形式を
使用する加算器を用いる。
【0009】本発明のLBAがPKG符号化方式を活用
するとはいえ、LBAによって必要とされるPKG符号
化はLBAの一部であり、加算器は未符号化2進加数に
直接応答することができる点は以下の記述によって明白
となるであろう。
【0010】参考のため、2の補数の例として、5ビッ
トで表した場合の2の補数の一部を次の表1に示す。
【0011】
【表1】 0=00000 8=01000 -1=11111 -9=10111 1=00001 9=01001 -2=11110 -10=10110 2=00010 10=01010 -3=11101 -11=10101 3=00011 11=01011 -4=11100 -12=10100 4=00100 12=01100 -5=11011 -13=10011 5=00101 13=01101 -6=11010 -14=10010 6=00110 14=01110 -7=11001 -15=10001 7=00111 15=01111 -8=11000 -16=10000
【0012】図1のAおよびBは、(n+1)ビットの2
の補数形式の2進数値であり、加算されるべき2つの浮
動小数点の有効桁部分、すなわち一般的に仮数と呼ばれ
るものである。AおよびBは関連する指数部分を持つが
本図では示されていない(仮数と指数が組み合わされて
完全な浮動小数点を形成する)。2つの指数は既知の方
法で結合され、和に関する試行指数22が作成される。
試行指数22については、図1に関する説明の最後の部
分で触れる。
【0013】図1の処理の前段階では、2つの(n+1)
ビット仮数は各々nビットで表現され、それらの指数は
それぞれ異なっている。浮動小数点加算のためのセット
アップの一部として、2つの浮動小数点オペランドは、
それらのそれぞれのビット位置が同じ2の累乗数に対応
するように、調整される。これによって、オペランドの
1つが非正規化されることが必要となることがある。す
なわち、加数がアンダーフローを起こすようにその仮数
がシフトされ、その指数がそれに応じて調整される。し
かし、2つのオペランドが絶対値においてほぼ等しけれ
ば、桁あわせのための非正規化は必要ではないが、演算
結果がオーバーフローを起こす可能性を生じる。オーバ
ーフローは望ましくなく可能な限り避けられるべきもの
である。
【0014】2の補数の演算のオーバーフローは重大な
問題であり、2つの最上位ビットの繰り上げキャリの排
他的OR(XOR)によって以前は検出されていた。その
ような検出は例えばOVのようなフラグ・ビットをセッ
トした。最上位有効桁のビットから出るキャリの値を使
用して例えばEXのような1ビット拡張レジスタがセッ
トされた。オーバーフローの本当の問題は、アンダーフ
ローと対照的に、その調整が、EXをMSBへシフトさ
せる一方そのMSBおよびすべての他のビットを右に
(下位ビット方向へ)シフトさせることによって行われる
点である。アンダーフローの調整方法は、これとは反対
に左方向へシフトさせる。この2つのケースは、また、
異なる方向の指数調整を必要とする。従って、オーバー
フローの好ましくない点は、それが仮数をシフトさせ指
数を両方向で調整する必要性を生むことである。
【0015】オーバーフロー回避の戦略は、オーバーフ
ローを防止するために十分な非正規化が桁あわせの間に
行われない場合、何らか別の措置を講じることを保証す
るというものである。その何か別の措置とは、nビット
・オペランドを(n+1)ビット形式で表すものである。
これはその数値を変えることなく、オーバーフローが起
こる前により多数のビットを維持することができるメカ
ニズムでそれを表現するにすぎない。これは、例え
ば、.07を0.07として書き直すことに等しい。これ
は、以下に記述するPKG表示のビット単位形式に適し
ている。このオーバーフロー回避戦略の要点は、両方の
調整を実行しオーバーフローの発生しないことを保証す
るために必要とされるものとしてオペランドが(n+1)
ビットで書き直され非正規化されるという点である。和
の計算後結果が正規化されnビットに書き直される。オ
ーバーフローがないことが保証される一方、それ以上の
ビット幅を必要とするオーバーフローがない限り、より
広い幅の表示形式でアンダフローを持つという意味にお
いて、正規化メカニズムが一層活用される。このような
付加的正規化の必要性は、問題でなく、オーバーフロー
回避を行わない場合でさえ頻繁に必要となる。対応する
指数調整についても同様の点があてはまる。すなわち、
オーバーフローを避けることができるならば、指数を両
方向に調整する必要性がある。オーバーフローから逃れ
両方向で調整するコストは、n+1ビットの表示形式へ
の事前の非正規化を考慮するに価する。
【0016】2つの(n+1)ビット仮数入力A(図1の
符号2)およびB(同じく3)がPKG生成回路4に適用
される。PKG生成回路4は、AiおよびBiの各ペアか
らPi、KiまたはGiの1つを生成するゲーティングを
含む既知の回路である。Pは"propagate"すなわち伝播
を意味し、Kは"kill"すなわち無視を意味し、Gは"gen
erate"すなわち生成を意味し、それぞれi番目のビット
位置に関するキャリ・ビットを指す。従って、2つの
(n+1)ビット入力をPKG生成回路に適用すると、
その結果の出力は、(n+1)ビットPKGワード5とな
る。これは、(n+1)個のPKGトリプルとも呼ばれ
る。各ビット位置毎に、P、KおよびGは次の定義に従
って生成される(IFFは"の場合に限り"の意味)。 Ki = 1 IFF Ai + Bi = 0 (〜Ai AND 〜Bi) Pi = 1 IFF Ai + Bi = 1 (Ai XOR Bi) Gi = 1 IFF Ai + Bi = 2 (Ai AND Bi)
【0017】本発明の好ましいハードウエア実施形態に
おいて、Ki、PiおよびGiの各々は、(例えば2ビット
のような)信号ペアで符号化するのではなく、(例えば
「3つのうちの1つ」という表現のような)対応する3
つの相互排他的信号によって個々のビットとして表現さ
れる。原理的にはいずれの方法も同様に動作するが、個
別表示の方が処理性能がよい。
【0018】(n+1)ビットPKGワード5は、最上位
有効ビット予測器(LBA)6および加算器キャリ連鎖回
路7という2つの場所に送られる。LBA6については
後回しにして、先ず加算器キャリ連鎖7について記述す
る。加算器キャリ連鎖回路7は、(n+1)ビットP_WORD
(Pワード)8および(n+1)ビットCARRY_WORD(キャリ
・ワード)9を生成する。(n+1)ビットP_WORD8は、
単に、PKGワード5によって加算器キャリ連鎖回路7
に適用されるすべてのPiである。CARRY_WORD(キャリ・
ワード)9は既知の方法で作成される。例えば、Ciをキ
ャリ・ビットC0=G0としてCi=Gi OR (Pi AN
D Ci-1)という規則のビット単位適用によってキャリ
・ワード9が作成される。
【0019】P_WORD8およびCARRY_WORD9はXOR加算
器10に入力され、RAW_SUM(未調整和)11が出力され
る。RAW_SUM11は、正規化されてない生(すなわち未調
整)の仮数であり、左へ1回シフトされたCARRY_WORDとP
_WORDのビット単位XOR演算によって得られる。この
演算は、最下位有効桁におけるゼロのキャリ繰り入れお
よび最上位有効桁における(あるとした場合の)キャリ繰
り越しを伴なう。
【0020】RAW_SUM11はシフト器12へ入力され
る。軸シフト器である場合もあるシフト器12は、アン
ダーフロー条件を起こさないようにするため数値を正規
化する。例えば(10進数で云えば)、.00123 E9
は、1.23 E6にされなければならない(負数につい
て2の補数を使用する本発明の実施形態においては、正
規化の後、最も左の2つのビットは正数の場合"01"で
あり負数の場合"10"であり、最上位有効桁から2番目
と3番目の間に小数点がある)。シフト器12は、RAW_S
UM11をシフトさせる量を示す次の2つの入力を使用す
る。すなわち、(1)シフト量を示す2進数値SHIFT_#13
および(2)SHIFT_AGAINと名づけられたシフト器12への
入力として使用されるEXTRA_SHIFT14である。この信
号の出力源についてはLBA6に関する記述の際詳述す
る。
【0021】RAW_SUM11はまたオプションの比較器4
5にも入力されることもある。比較器45は、備えられ
ている場合、RAW_SUM11に加えてすべて0という比較
値46を比較入力として受け取る。比較器45の目的
は、未調整和がゼロであるかどうかを判断し、そうであ
れば信号24"を生成することである。
【0022】引き続き、SHIFT_#13が入力Bとして、
試行指数22がB入力として加算器21へ適用される。
反転されたEXTRA_SHIFT信号14が繰り入れキャリとし
て加算器21に適用される。加算器21は、A−(B+E
XTRA_SHIFT)を実行する。これは、全体の演算解の計算
された指数値であり、仮数がゼロでないという前提で、
加算器21の指数出力部27に出力される。浮動小数点
加算に関してよく知られているように、仮数ゼロは、指
数を無視するか指数を特定の値にセットすることを必要
とするが、本実施形態においては便宜上かつ慣例に従っ
てゼロにする。仮数がゼロであることの検出は、LBA
6において実施され、ゼロの場合は、別の信号SUM_IS_Z
ERO24のソースの役目を果たす信号24'によって仮数
ゼロが標示される。信号24'が生成されるプロセスは
後述する。LBA6が必ずしもSUM_IS_ZERO24のソー
スである必要はなく、比較器45によって生成される信
号24"で代替することもできる。
【0023】計算された指数23および事前に符号化さ
れている値ゼロ("ZERO"26)が2つのデータ入力として
MUX(マルチプレクサ)25に適用される。MUXはSU
M_IS_ZERO24によって制御され、計算された指数23
または"ZERO"26のいずれか適切な方が加算器23に関
する指数出力27として出力される。調整済み指数27
および正規化仮数15が合わされてオリジナル入力Aお
よびBの最終加算結果となる。
【0024】上述したように、加算メカニズムは必ずし
もPKG符号化方式を使用するタイプのものである必要
はなく、入力AおよびBに直接接続する完全加算器から
なるものでもよい。この点は以下の記述からも明らかと
なるであろう。
【0025】以下、最上位有効ビット予測器(LBA)の
記述を行う。LBAは、その内部動作と関係なく、上位
ビット1検出器か上位ビット0検出器かのいずれかであ
る。特定の最上位有効ビット予測器6に対しての説明は
膨大となろう。本明細書の記述は、その演算の正確性を
証明する目的ではなく、いくつかの例を用いながら、L
BAの機能性の基となる理念を説明する解探索プロセス
の概要を説明するにとどめる。いくつかの演算規則を説
明し、概念全体は表を用いて示す。
【0026】既述のように、LBAの目標は、演算結果
を検査してシフトおよび指数調整によって正規化を行う
ため、主加算メカニズムによって実際の未調整解が生成
されるのを待つ必要性を回避することである。その代わ
りに、LBA6は「正規化量」(SHIFT_#13)という一
般的に信頼性の高い近似値を迅速に形成する。未調整和
が生成され次第若干量の検査でそれを正規化することが
できる。これによって時間が節約される。
【0027】しかしながら、問題がないわけではなく、
「一般的に信頼性の高い近似値」という概念を使用しな
ければならない。(LBAの目的にとって自滅的ではあ
るが)主加算器自体と等しい処理量を行わない限り、近
似値は、ある場合は正確であり、ある場合はカウント1
外れる。そうなる理由を理解し、いくつかの適切な選択
を行うことによって、エラーが発生する場合エラーが常
に同じ方向にあるように(例えば1カウント低いように)
構成し、エラーが発生する場合を検出しそれを容易に調
整する修正対策(すなわちEXTRA_SHIFT14信号の発信)
を工夫することができる。この修正対策の負荷は、最上
位有効ビット予測器を使用しない加算−検査−正規化と
いうアプローチに比較して非常に少ない。
【0028】正規化量の近似値が得られるプロセスを以
下記述する。目標は、単に出発点として、未調整和の近
似値を生成し次に検査を行うことと仮定する。検査は、
実際の未調整和が手元にあるとすれば実行されるであろ
うものと全く同じであるので、近似値未調整和から得ら
れる時間的性能利得は、未調整和に対して必要とされる
時間と比較して小さくなければならない。この目的を達
成するために必要な情報が加数AおよびBのPKG表示
形式に含まれている。PKGワード5から別のAPPROX_S
UM(近似和)ワードを生成する試みをPKGワード内の複
数の記号から1時点に1記号ずつ取り出すように実施す
ると仮定すると、この試みの命運は直ちに定まる。すな
わち、P、KまたはGが、i番目のビット位置のための
記号であるか否かに関係なく、その位置に関する繰り入
れキャリの存在または不在が和のi番目のビットの値を
変えるので、ただ1つの記号から十分な情報を得ること
はできない。
【0029】次の試みは、PKGワード5の隣接する記
号ペアを検査することでる。あらゆるケースではない
が、いくつかの結果を以下に示す。ビットiおよび(i
−1)に関するストリングKKを考察する。(本明細書で
はある数のビットを一般に行われているように左から右
へ書き、最右端をビット・ゼロとする)。この場合、両
方のビット位置の和はゼロであり、(i−1)位置への繰
り入れキャリはそこにおかれたままであるので、i番目
の位置はゼロであるということができる。あいにく、ビ
ットiおよび(i−1)がストリングPPであるようない
くらか曖昧なケースがある。この場合(i−1)番目の位
置の繰り入れキャリに依存するということを除いて、i
番目の位置については何も云うことができない。
【0030】負数の場合1という最上位ビット・ストリ
ングおよび正数の場合0という最上位ビット・ストリン
グに関してAPPROX_SUMを検査することも以下のアプロー
チに含まれる。しかし、正または負は、最上位ビットに
よって示されるが、この最上位ビットはそこにキャリさ
れるものによって影響される。和の符号に関する不確実
性は快適でない。また、最上位1ストリングに関する検
査を行うハードウエア・セットと最上位0に関する検査
を行う別の第2のハードウエア・セットを備える必要性
を回避することが可能であるか明確でない。
【0031】正負に関する不確実性に対する解決策は、
APPROX_SUMを一緒に実行し、未調整和におけるビット反
転の近似値を出力するようにPKGワード検査メカニズ
ムを調整することである。本明細書において、この近似
を「マップ」と呼び、「近似暫定マップ」をAPPROX_X_M
APと名付ける。マップにおける連続的0ストリングは、
実際の未調整和の中の対応するビットがすべて同じ(1
または0)であることを意味する。マップのある1つの
ビット位置における1は、その位置の左にある未調整和
のビットが異なっている、換言すれば現在の位置が反転
を表すことを意味する。そのようなマップを持つことが
できれば、正であるか負であるかによって煩わされるこ
となく、検査によってAPPROX_X_MAPの最も左の1を検出
することができる。このマップについて近似的であるこ
とは、反転が実際に起こるところから1ビット位置左に
ある実際の未調整和の位置をマップの中の1が示す可能
性があるとうことである。このため、この方法が上述の
ように問題がないわけではないということになる。
【0032】次に、PKGワード5の3つの記号を一度
に検査する方法を考察する。この方法は、PKワード5
の左側(最上位有効部)から始め、PKG記号の最上位有
効トリプル(すなわち3連続記号)を取り出し、次に続く
トリプルを取り出しながら一度に1記号を処理する作業
を繰り返す。このように、1つのトリプルから次のトリ
プルへ2つの記号が重複する。1つのトリプルが検査さ
れる毎に、APPROX_X_MAPにおける対応するビット位置に
関する値が生成される。
【0033】トリプルの3つのどの位置もP、Kまたは
Gの3つのいずれかが占めることができるので、考察す
べきトリプルを形成する組合せは27ある。表1に示さ
れるように、トリプルのどれも、未調整和11の対応す
る部分的セグメントに関する暫定ビット値(bit value t
ransitions)を示すが、全体ワードのトリプルの位置が
右に少くとも1記号あるようなケースに関しては(大部
分このケースである)、該トリプルに対応する和のセグ
メントの右側部分へのキャリ繰り入れが存在することも
しないこともある点は注意する必要がある。最上位トリ
プルがAPPROX_X_SUMの最上位ビットを決定し、下位の方
向に進むにつれそれに対応したビットを決定する。オー
バーフロー回避のため(n+1)ビットへシフトされたオリ
ジナルのnビット・オペランドに対して、(n−2)個の
トリプルおよびAPPROX_X_SUMにおける対応する(n−2)
個のビット位置が存在する。このような点が、(n+1)
ビット未調整和に関する最上位有効ビット検出にとって
いかに有効な情報であるかは、図2を参照して後述す
る。
【0034】次の表2に関連して、文字?を使用する。
?は「不問」または「ワイルド・カード」を意味し、そ
の位置がビット1であろが0であろうが、あるいは、
P、K、Gのいずれの記号でも関係のないことを示す。
【0035】
【表2】 キャリあり キャリなしトリプル 結果(RESULT) の和 の和 理由 KKK 0 000 001 #1 KKP 1 001 010 #2 KKG 1 010 O1l #4 KPK 1/O(MSB/〜MSB) 010 O11 #3 KPP 1/0(MSB/〜MSB) O11 100 #3 KPG 1/O(MSB/〜MSB) 100 101 #3 KGK 1 100 101 #4 KGP 1 101 110 #2 KGG 0 110 1ll #1 PKK 1 100 101 #4 PKP 1 101 110 #2 PKG 0 1ll 000 #1 PPK 0/1(〜LSB/LSB) 110 111 #1,#5 ppp 0 l11 000 #1 PPG 0 000 001 #1 PGK 0 000 001 #1 PGP 1 001 010 #2 PGG 1 010 O1l #4 GKK 0 000 001 #1 GKP 1 001 010 #2 GKG 1 010 O1l #4 GPK 1/0(MSB/〜MSB) 010 O11 #3 GPP 1/0(MSB/〜MSB) Oll 100 #3 GPG 1/0(MSB/〜MSB) 100 101 #3 GGK 1 100 101 #4 GGP 1 101 110 #2 GGG 0 110 1ll #1 #1:各部分的和の左2ビットが反転を示さないので、0であるにちがいない。 #2:?KPと?GPには、各々が左2ビットが反転し、残りが反転しない部分的 和を常に持つので、1を割り当てる。この結果は、正しいか、あるいは、有 効ビットより1桁プラスであるかもしれない。 #3:KP?およびGP?は、1を生成する?KPおよび?GPの右側に起こるの で、不問のケースであり、これらと中央にPがあるトリプルには0を割り当 てる。 #4:KKG、GGK、GKG、KGK、PKKおよびPGGは、中央に明確な反 転がある。 #5:マイナス1(すべて1)の仮数とゼロ(すべて0)の仮数を区別する。
【0036】上記表2は、27の可能なPKGトリプル
およびRESULT(結果)に関するそれらの対応する値のリス
トである。RESULTは、歳差連動のインスタンスに対応す
るAPPROX_X_MAPにおけるビット位置の値である。すなわ
ち、対象がトリプルを考察する5番目のインスタンスで
あれば、RESULTはAPPROX_X_MAPビットの(左から数えて)
5番目に当てはまる。ここでの記述は、表2の結果(RES
ULT)欄で" 1/0 (MSB/〜MSB)として表示されているトリ
プルKPK、KPP、KPG、GPK、GPPおよびG
PGが1として解読される規則を含むMSBから始め
る。各トリプルおよびその対応するRESULT値が2つの異
なる和セグメントを伴うという点に注意する必要があ
る。これらの和セグメントは、歳差連動の回数に応じ
て、PKGトリプルの位置によって表されるビット位置
に対応する未調整和11のビット位置に位置する。これ
らの和は、発生し得る(唯一)可能な和セグメントであ
り、セグメントの右側にキャリ繰り入れがあるか否かに
関連して、記号P、KおよびGを最初の場所に割り当て
るために使用される規則を考慮することによって得られ
る。ここで、オーバーフローを回避するため(n+1)ビ
ット未調整和11を使用していること、また、APPROX_X
_MAPのMSBに関するRESULTが1であるということはア
ンダフローが発生しなかったことを意味するという点に
注意する必要がある。実際には、次の2つのケースの1
つが考えられる。すなわち、(1)(n+1)ビット加算に
アンダーフローは実際になかった(nビット加算にオー
バーフローがあったかもしれないことを示唆する)、お
よび(2)アンダーフローがないという標示は偽りであっ
て、1というRESULTは0で次のインスタンスのRESULTが
1であるべきであった、という2つのケースである。こ
の第2のケースをLBAエラーと呼ぶ。アンダーフロー
がある他のすべてのケースでは、RESULTは0でなければ
ならない。
【0037】アンダーフローもオーバーフローもない2
の補数和は正数については01?で負数については10
?で始まる。和が(正の場合)00?または(負の場合)1
1?として始まるケースはアンダーフローを表す。表2
の説明を開始する最も簡単な箇所は、0というRESULTが
どのように調整されるかに関するものである。これら
は、アンダーフローの発生に関して不確実性のないケー
スである。
【0038】これらのケースは、表2において異なるト
リプルを伴なう種々の加算セグメントを調べることによ
って見つけられる。加算セグメントについて常に000
または111だけを生成するトリプルは、RESULTの値に
ついて0を復号しなければならない。このようなトリプ
ルはPKGおよびPPPの2つである。加算セグメント
について常に000または001だけを生成するトリプ
ルもまたRESULTの値について0を復号しなければならな
い。そのようなトリプルは、KKK、PPG、PGKお
よびGKKの4つである。最後に、加算セグメントにつ
いて常に111または110だけを生成するトリプルも
同様にRESULTの値について0を復号しなければならな
い。そのようなトリプルはKGGおよびGGGの2つで
ある。これら9個のトリプルだけが、キャリ繰り入れが
あろうとなかろうと、アンダーフローが確実なトリプル
である。これらのトリプルのRESULTは、絶対に0でなけ
ればならない。
【0039】同様に、絶対にかつ明確にRESULTが1を持
つトリプルを見い出すことができる。このためには、唯
一の可能な加算セグメントが01?または10?の形式
をもつトリプルを捜す必要がある。これらは、KKG、
KPK、KPP、KPG、KGK、PKK、PGG、G
KG、GPK、GPP、GPGおよびGGKという12
個のトリプルである。これらのケースの各々は、未調整
和11がアンダーフローを示さないインスタンスを表
し、従って、また、LBAエラーのインスタンスではな
い。
【0040】これら12個のトリプルのケースが、部分
的加算セグメントの対応する各ペアが1というRESULTを
生成すべき1つのセグメントおよび0というRESULTを生
成すべきもう1つのセグメントを持つすべてのケースで
ある点に注意する必要がある。部分的加算セグメントの
それらビットへの実際のキャリ繰り入れに関する情報を
持たないが、1というRESULTを生み出す必要性を無視す
ることはできない。解決策は、たとえそれが0でなけれ
ばならなかったとしても、そのようなインスタンスの各
々は実際にLBAエラーであるので、1というRESULTを
生み出すことが安全である点に注目することである。す
なわち、0でなければならなかったのに1というRESULT
を形成したとしても、「観念上の」次のRESULT値がとに
かく1でなければならなかったことは確実である(実際
の次のRESULT値については何も云えないが、1というRE
SULTが1ビットすぐ後に発生する時補正することができ
るということだけは云える)。
【0041】従って、キャリ繰り入れがなければトリプ
ルKKP、PGPおよびGKPは0というRESULTを生成
すべきであり、一方キャリ繰り入れケースを(RESULTが
1であるべき)アンダーフローなしの正数ケースに合致
させることが表2から観察される。同様に、トリプルK
GP、PKPおよびGGPは、キャリ繰り入れのある負
のアンダーフローおよびキャリ繰り入れなしのアンダー
フローなしを表すことが観察される。しかし、これらの
インスタンスの各々もまたLBAエラーのインスタンス
であるので、状況は救われる。例としてKKPを考察す
る。部分的加算セグメントが実際にキャリ繰り入れに関
する結果である001であったと仮定する。001は一
度左にシフトすることによって正規化されなければなら
ないので、エラーである1というRESULT(アンダーフロ
ーなしおよび正規化なし)が生成される。今検討してい
ることは、未調整ビットの最も左の3ビットが001で
あるというケースである。従って、歳差連動における次
のトリプルは、01?という形式の加算セグメントを標
示することが予想される。これは正の2の補数値の有効
桁の始まりである。LBAエラーが発生したことを検出
できるように構成することができると仮定すると、それ
を直すには、更に1ビット位置正規化を行うことだけで
よい。これは、本ケースでは、APPROX_X_MAPのMSBに
おける1というRESULTによる1シフトの全体正規化を意
味する。一方、KKPに関する部分的加算セグメントが
010であったとすれば、APPROX_X_MAPのMSBにおけ
る1というRESULTはエラーでない。この場合LBAエラ
ー・メカニズムが起動されないことを確認することだけ
が必要とされる。残りのトリプルPGP、GKP、KG
P、PKPおよびGGPは、対応する同様の例によって
説明できる。これで、APPROX_XSUMのMSBをセットす
る説明を終わる。
【0042】次に、APPROX_X_SUMの残りのビットを決定
する作業の説明に移る。直前のトリプルがMSBに関す
るものであったと仮定すると、(LBAエラーの場合で
あろうとなかろうと)、MSBに対する分析によって既
に1というRESULTまたは0というRESULTのいずれかが出
力されている。RESULT0はアンダーフローが発生したこ
とを保証する。これは、RAW_SUM11の最も左に連続す
る少なくとも2つの0または1があることを意味する。
【0043】この場合、トリックではあるが、最も左の
ビットを破棄して1トリプルだけ進めあたかもMSBに
関してもう一度すべてをチェックすることを考えてみ
る。これは、いずれにして実際に有効桁をシフトさせる
ことによって正規化を行う機会が来る時RAW_SUM11に
対して実行することに対応していることであるので、こ
のように最も左の0または1のストリングを一度に1ビ
ット破棄することができる点は明白である。この点につ
いての懸念は、表2の観察によって解消される。11?
または00?を含む部分的加算セグメントはいずれも0
というRESULTを生成する。仮に切り落とされたRAW_SUM
がビット反転の前になお5個の1か5個の0を持ってい
るとすれば、1というRESULTが来る前に少なくとも4つ
の「偽のMSB破棄」が存在すること(APPROX_X_MAPの
対応するビット位置の少くとも4つが0であること)が
保証される。これは、有効ビット1の前に例えば5つの
0があれば次の4回の歳差連動が000以外の部分的加
算セグメントを持つことはないので、うまくはたらく。
なぜなら、000を持つとすれば、5個の0の中に1つ
の1が含まれていることになるがそういうことは仮定上
ないからである。これはRESULTの次の4つの値が0であ
ることを意味する。001または110の形式の部分的
加算セグメントが発生するのは早くても「破棄」ストリ
ングの最後であるとしても、そのような形式の部分的加
算セグメントが存在するので、5番目の値は、LBAエ
ラーであるかもしれないしそうでないかもしれない。
【0044】重要ないくつかのポイントを以下要約す
る。正規化された正数は、最上位ビット01で始まり、
正規化された負数は最上位ビット10で始まる。正規化
を必要とする正数は、左端にいくつかの0のストリング
を持ち、一方、正規化を必要とする負数は左端にいくつ
かの0のストリングを持つ。数は、(ゼロを含む)正数か
あるいは負数のいずれかであるので、左端にすべて1ま
たはすべて0のストリングがあり、左端の符号ビットの
ストリングの検査を開始すれば、トリプルを右へ順次処
理する過程で、そのトリプルの対応する部分的加算セグ
メントがその中央または左の位置に反対の値のビットを
持つトリプルに突然出会うことを懸念する必要はない。
それは簡単に発生しない。ビット値の変化は、対応する
部分加算セグメントのかなり右側で最初に起きるであろ
う。
【0045】また、この点で物理的シフトまたはビット
破棄を行う必要はない点は明きらかである。複数トリプ
ルにおける「歳差連動」で十分である。更に、トリプル
を1回に1つずつ取り扱わねばならないことはなく、ま
た特別な順序で処理する必要もない。なぜならば、トリ
プルは一旦取り出されれば固定的であり、表2に基づく
それらの解釈は、トリプルがMSBに対するものか否か
に関することのみに依存するからである。このように、
すべてのトリプルは、独立していて、APPROX_X_MAPに対
するすべてのビットを同一クロック・サイクルで生成す
るためにそれらを並列的に復号することができる。この
ように、「歳差連動」の概念は、単に理解のための便宜
的装置にすぎない。その単一クロック・サイクルの後、
主LBAが残す信号は、APPROX_X_MAP中の最も左の1の
ビットの位置およびLBAエラー検出の識別である。
【0046】これらの事項に記述を進める前に、表2に
関して残っている問題を取り上げる。その第1は、MS
Bについて処理しているか否かに基づくRESULTの値の相
違の問題である。MSBの場合RESULTが1である理由は
既に記述した。非MSBトリプルの場合それが0に変わ
る理由を明確にする必要がある。トリプルがKP?およ
びGP?で標示される6個のトリプルである場合にこの
点が明らかになる。一旦それらがMSBトリプルでない
ことがわかると、それらは、必ず?KPおよび?GPの
右で発生することがわかる。しかし、それら6つのトリ
プルは常に1というRESULTを持つ。従って、(APPROX_X_
MAPにおいて)そのような1の右側にあるRESULTの値は重
要でなく、「不問」の値である。それらのトリプルにつ
いてRESULTの値に0をセットする場合、(非MSB)トリ
プルのPという中央記号がRESUT値が0であるべき
ことを示すに足るものであることが表2によって明らか
である。これは、RESULTの値を生成するためにトリプル
を復号する論理における望ましい簡略化である。
【0047】別の問題は、APPROX_X_MAPのLABおよび
発生可能な例外ケースにかかわるものである。例えば、
APPROX_X_MAPはすべて0を受け取ることができるであろ
うか?受け取ることができるとすればそれは何を意味す
るのであろうか? また、1つのトリプル毎にAPPROX_X
_MAPの1ビットが対応しなければならないと述べた。し
かし、加数が(オーバーフロー回避の後)各々n+1ビッ
トであるならば、PKGワード5に(n+1)個のPKG
記号があり、それは(n‐1)個のトリプルしかないこと
を意味する。このことは、トリプルに関して処理するL
BAが右方向へ十分な長さを持っていないことを意味す
のではないか? この問いは、他の関連した問題ととも
に、図2を参照することによって回答される。
【0048】図2は、2の補数加算のビット処理におけ
る5つの異なる段階を示している。図2の最上部には、
2つのオリジナルのnビット・オペランド、A'28お
よびB'29が示されている。オーバーフロー回避の目
的のため、これらは(n+1)ビット・オペランドA(3
0,2)およびB(31,3)に算術的に右にシフトされ
ている(算術的シフトは符号ビットを維持する)。A'お
よびB'から(n+1)個のPKG記号(32、5)が作成
される。種々のダイヤモンド35は、2進オペランドの
ペアからのPKG記号のビット毎の生成に関する規則を
示す。PKG記号(32、5)は、種々の括弧36によっ
て示される(n−1)個のトリプルに分類される。表2に
おいて記述された関係を実施するゲーティング機構によ
って、各トリプルは、種々のRESULTiを生成する。種々
のRESULTiは、APPROX_X_MAP33におけるそれぞれの(n
−1)ビット位置に対応するビット値をセットする。そ
のようなAPPROX_X_MAPの(n−1)ビットは、図に示され
た方法で、最終的RAW_SUM34の(n+1)ビットに対応
する。
【0049】最後に、図2の特定の重要なケースを説明
する前に、LBAの機能をよりよく理解するため図2が
主に諸ビット位置間の関係を示すように描かれている点
を明記する。図2は、(推論できる箇所はあるが)レジス
タ間のハードウエア接続を必ずしも表してはいない。特
に、図は、APPROX_X_MAP33がRAW_SUM34に対してビ
ットを供給することを示唆していない。ビット間の対応
関係を記述しているに過ぎない。
【0050】図2の説明に戻り、既に述べたようにAPPR
OX_X_MAPがすべて0を含むと想定すると、これは、未調
整和11がビット反転の前に最上位ビット・ストリング
を含まないことを意味する。未調整和11はすべて1か
すべて0である。RAW_SUM34のビットより2つ少ない
トリプル(またはAPPROX_X_MAP33のビット)があるけれ
ども、上記の点は確かであろう。あいにく、LSB(最
下位有効ビット)に関する情報は十分でない。RAW_SUM1
1が、ゼロ(すべて0)か、マイナス1(すべてl)かある
いはマイナス2(LSBが0であることを除いてすべて
0)のいずれかであることは最低限確実である。状況を
明確にするため、先ず、APPROX_X_MAPの最上位の1ビッ
ト値が0であることがRAW_SUM34最上位2ビットにつ
いて意味する点を知る必要がある。それは和が少なくと
も1シフトだけ正規化されなければならず、従って和上
位ビットは11か00でなければならないことを意味す
る。和が11で始まりビット値反転がなければ、それは
1111...でなければならない。すべて0についても
同様である。第2に、APPROX_X_MAPのLSBにおける0
というビット値はRAW_SUMのLSBを決定するために十
分でないことが観察される。それは、その左のビットが
0であれば0であるが、その左のビットが1であればL
SBが何かはわからない。この理由を理解するため図1
を再び参照すると、キャリ繰り入れの可能性がなく、
(仮定によってその左に1がないので、すなわち上述の
ようにKP?およびGP?は1を生成するトリプルの右
にのみ存在するので)トリプルKP?およびGP?は発
生しないという追加情報が得られる。
【0051】対象となるKKK,KGG,PPK,PP
P,PPG、PGK、GKKおよびGGGという8つの
トリプルのうち、KKK、PPG、PGKおよびGKK
に関する部分的加算セグメントはキャリ繰り入れなしの
すべて0である。これは、左のビットが0である時LS
Bも0であるというケースである。PPPはすべてが1
であるというケースに関連する。あいにく、KGG、P
PKおよびGGGという3つのトリプルの場合は明確で
ない。それらは、各々、110というキャリ繰り入れの
ない部分的加算セグメントを持つ。従って、左のビット
が1であるがLSBが0であるというケース(マイナス
2という和を形成するケース)が存在する。このような
状態は、マイナス2を報告しなければならない場合なの
にマイナス1という未調整仮数をLSBが報告する可能
性を生む。そのような誤った報告によって不正確な量の
正規化が行われ、許容できない演算エラーが発生する。
【0052】しかし、上述の問題点が図2に従う実施形
態が全く役に立たないことを意味しているわけではない
ことは理解されるべきである。上述の明確でない点を取
り除き演算エラーが発生する可能性のない別の外部環境
を存在させる可能性はある。例えば一層大規模な乗算累
算装置の一部としての浮動小数点加算器においてLBA
が使用される場合、そのような構成を実施することが可
能である。その理由にこだわる必要はないが、上述のエ
ラー・メカニズムはもはや呼び出されることはない点は
明らかである。図2に従う実施形態は分析目的に主眼が
おかれてはいるが、加算累算装置の部品として実際の製
品に組み込まれたものがある。
【0053】しかしながら、マイナス1およびマイナス
2という未正規化仮数の間のこのような不便なLSBの
混乱を簡単に除去し、PKG記号のトリプルに関する
「歳差連動」の比較的単純な技術を独立型加算器におい
て使用することができることが望ましい。これは、図3
において示されるような形態で簡単に実施できる。
【0054】図3は、多くの点で図2と同じである。相
違する点は、図3が、値が「K」である最下位PKG記
号37の追加を想定している点である。これは、最下位
トリプル38から付加的最下位RESULT039を生成する
ことを可能にする。追加のRESULT0を持つことによっ
て、(今や拡張された)APPROX_X_MAPの最下位にもう1つ
のビット40を持つことを可能にする。APPROX_X_MAP4
1における付加ビット40は、RAW_SUM34との正しい
対応関係にある。このようにして物事は想定した通りに
はたらく。
【0055】次に、PKG記号の最下位の位置にKがあ
ると推定することが合理的である理由を考察する。結果
として生成されるビット・パターンに関する限り、追加
すべきnビット2進数を取り上げ単に右にゼロを付加す
ることが常であり、左ビット・パターンは変わらないま
まである。「暫定的に」負の数が維持されないことは真
実であるが、2の補数表現は単にビット解釈であり、い
ずれにしても、2の補数および符号なし2進整数は、同
じようにビット毎に追加される。更に、図3において余
分なゼロは右に追加されない。APPROX_X_MAP41にビッ
ト40が追加されればその必要はない。
【0056】RAW_SUM34の(n+1)ビットを見つける
方法も変わらない。従って、一時的に、0という余分な
低位ビットを持ちながら非正規化数A30およびB31
を暫定的に構築する点に問題はない。構築するとすれ
ば、そのような0はKというPKG記号を生成するであ
ろう。これがK37が作成される経緯である。かくし
て、「トリプル」の通常の「歳差連動」および「MSB
削除」分析がRAW_SUM34のLSBに対して直接はたら
く。
【0057】最後に、PPKに関する表2のエントリを
考察する。O/1(〜LSB/LSB)という表記は、仮定された追
加K37の使用を仮定する。それ以外は、PPKに対す
るRESULTはゼロである。この特別なケースは、RAW_SUM
11がマイナス1(すべて0)の時APPROX_X_MAPがすべて
0を含むことを防止するため、表2に含まれる。(PP
Kは、110というキャリ繰り入れのない部分的加算セ
グメントを持つ唯一のKで終わるトリプルであって、0
であるRAW_SUMの実際のLSBの左に1がある)。1をAP
PROX_X_MAPのLSBに強制的に挿入することによって、
マイナス1という未調整仮数が正規化を不要とすること
が防止される。その代わりに低位方向へ1カウントとい
う正規化量が示される。すなわちそれはLBAエラーで
ある。この点は問題ではなく、通常のように検出され修
正される。これを達成するために必要な論理は、RESULT
0を作成するゲートと同様であるが、ただし、(n+1)
PKG記号32、5における実際のLSB記号(すなわ
ち、0の添え字を持っLSB記号)がPであれば、出力
を1にするという条件を持つ。
【0058】次に図1に戻って、LBA6の内部構造を
考察する。PKGシーケンス検出器17は、表2を実施
するビット単位ゲーティング機構である。このゲーティ
ング(あるいはおそらく参照用テーブル)が、その入力側
でPKGワード5へ接続され、その出力はAPPROX_X_MAP
(33、41)のビットである。それらビット(種々のRES
ULTi)が上位1キャリ連鎖回路19に適用される。キャ
リ連鎖19は、APPROX_X_MAPにおける最上位1のビット
位置Jを見つける。この数Jは左からのビット位置のカ
ウントである。Jがゼロであれば、RAW_SUM11は、(そ
の右端のビットを取り除くことによって切り捨てられる
必要があるけれども)正規化される必要はない。出力1
3のSHIFT_#(シフト量)はJに関する値のバイナリ符号
である。出力20は、「nの1つ」であるJの値を表
す。この場合、図3に示される実施形態の場合「n」は
オリジナルのオペランド(28、29)にあるものと同じ
ビット数であり、図2の実施形態の場合はそれより1少
ない。注意すべき点であるが、LBA6が、SUM_IS_ZER
O(和ゼロ信号)24のソースであるべき信号24'を作成
する責任を果たすため、RESULTiのすべてが0でありRAW
_SUMのMSBもまた0であることを適切なゲーティング
機構を用いて検出することによって、その信号が作成さ
れる。代替的方法としては、比較器45を使用して、L
BA6からの信号24'がない場合にSUM_IS_ZERO24に
対するソースの役目を果たす信号24"を生成する。
【0059】LBAエラー検出器12の動作が図4に示
されている。図4には、図2および図3の場合と同様に
APPROX_X_MAP33, 41およびRAW_SUM34のセグメン
トが示されている。APPROX_X_MAPの内容が、最上位1キ
ャリ連鎖回路19に入力され、そこで、最左端ビットが
識別され、右側のビットがすべて削除される。RAW_SUM
34における隣接ビット位置のペアの各々について、そ
の隣接ペアのビットが排他的ORゲート42に適用され
る。図4にそのようなXORゲートがただ1つ示されて
いるが、RAW_SUM34に存在する多数の隣接ビット・ペ
アの数に相当するゲート24が備えられる点は理解され
るであろう。XORゲート42の出力は、関連ANDゲ
ート43への1方の入力となり、その他方の入力は、X
ORゲート42へ送られるRAW_SUMのビット・ペアの最
下位ビットに対応する最上位1キャリ連鎖回路19のビ
ット20である。同様に、43のようなANDゲートの
別のものがただ1つゲート44として図示されている
が、RAW_SUM34における隣接ビット・ペアの各々につ
いてANDゲート43と同等のものが備わる。ゲート4
3、44の出力のすべてのOR信号は、LBAエラーの
発生を標示するEXTRA_SHIFT信号14である。APPROX_X_
MAPの中の所与のビット位置が最左端であれば、RAW_SUM
における対応するビット位置およびその先行位置の値は
異なると通常予測される。そのような条件の不在はLB
Aエラーであり、その場合は、種々のANDゲート4
3、44のうちの1つの出力をTRUEにする。
【0060】図3において、優先キャリ連鎖回路が、次
式の規則に従って、添え字nのMSBから添え字0のL
SBへキャリCiを伝播する。Cn = 0、 Ci-1 = (Ci) OR
(APPROX_X_MAPi)、および、Ji = (APPROX_X_MAPi) AND
(〜Ci)
【0061】図5は、表2のMSB位置以外のすべてを
実施する実際の実施形態の1つにおいて使用されたCM
OSゲーティング・セルのブロック図である。出力は、
LEADING_BIT_HIGH(最上位ビット高)およびLEADING_BIT_
LOW(最上位ビット低)を意味するLHおよびLEであ
る。その相補信号は--Hおよび--Lと表記される。最上位
ビット信号(LHおよびLL)はトリプル毎に1回出さ
れ、既述した種々のRESULTiに対応する。入力に関し
て、記号P、KおよびGが観察される。これらは、PK
Gワード5のi番目の位置に対応する非相補信号を示
す。そのi番目の位置は、P、KまたはGのいずれか1
つの記号を含む。形式Pp,Kp...の記号ペアはPi+
1、Ki+1...を表し、pは左方向へのプラスを意味す
る。同様に、形式Pm,Km...の記号ペアはPi-1、Ki-
1...を表し、mは右方向へのマイナスを意味する。
【0062】既述の通り、表2における関係は、トリプ
ルがMSBに関するものであれば、6つのトリプルにつ
いて異なる。MSBのケースを実施するゲーティング・
セルを制作することは当業者にとって可能であろう。し
かし、そのような装置を制作するか否かは、許容される
ゲート遅延数、チップ上の使用可能スペースおよび単純
な個人的好みを含む因子に基づくことであろう。図6お
よび図7は可能な方法を示す。
【0063】図6は、図2および図3と同様であるが、
相違する点は、PKG記号32、5の最上位ペア47と
PPROX_X_MAP33、41のMSBの接続の部分である。
特に、図6の場合、APPROX_X_MAP33、41の最上位ビ
ットはRESULTnまたはRESULTn+1のいずれかによってセッ
トされることができる。RESULTn+1は、RESULTn+1 = (KP
or GP)という関係に従ってPKG記号の追加最上位ペ
ア47によって作成される。表2の観察によれば、それ
が、MSBケースにおいて、1というRESULTを生成しな
ければならないKP(?KP)またはGP(?GP)である
ので、上記の点は機能する。図7は、RESULTn+1 = (KP
or GP)という関係を実施するCMOSゲーティング・セ
ルのブロック図である。図5に関して使用したものと同
じ表記法が図7にも適用されている。
【0064】本発明には、例として次のような実施様態
が含まれる。 (1)2つのnビット・オリジナル・オペランドの2の
補数2進和の最上位有効ビット位置を予測する方法であ
って、上記2つのnビット・オリジナル・オペランドを
2つの(n+1)ビット形式に非正規化するステップと、
上記2つの(n+1)ビット形式の各i番目位置毎に、第
1の値が2つの(n+1)ビット形式のそれぞれi番目の
2つのビットの加算がゼロであることを示し、第2の値
がその加算が1であることを示し、第3の値がその加算
が2であることを示す値を持つ3種類の記号の1つをi
番目記号として割り当てることによって、(n+1)個の
記号シーケンスを生成するステップと、上記(n+1)個
の記号シーケンスの最左端から開始して、3つの連続す
る記号を1つのトリプルと定義し、隣接する2つのトリ
プルが常に共通の2つの隣接記号を持つように(n+1)
個のトリプルを形成するステップと、上記トリプルの各
々を検査して、該トリプルに対応する上記非正規化オペ
ランドのビット位置の部分的加算セグメントが2つの最
上位有効ビットを持つことを示す第1の値またはそれ以
外を示す第2の値を持つ暫定ビットを、少なくとも上記
トリプルの数に等しい数の暫定ビットから構成される2
進暫定ワードの対応する暫定ビット位置に作成するステ
ップと、上記2進暫定ワードの検査によって、上記第1
のビット値を持つ最上位有効ビット位置を決定するステ
ップと、上記決定したビット位置を上記2進暫定ワード
の最左端からのビット位置数JJで表現するステップ
と、上記2つの(n+1)ビット形式値を加算して未調整
和を作成するステップと、上記未調整和上記Jに等しい
量だけ正規化するステップと、を含む最上位有効ビット
位置予測方法。 (2)Jが1ビット位置小さすぎることを決定するステ
ップと、Jが1小さい場合Jに対応するシフトとは別に
更に追加シフトを行うステップと、を更に含む上記
(1)に記載の最上位有効ビット位置予測方法。 (3)上記オリジナルのオペランドが指数を持つ浮動小
数点数の仮数であって、試行指数を(J+1)桁調整する
ステップを更に含む上記(2)に記載の最上位有効ビッ
ト位置予測方法。 (4)上記2つの(n+1)ビット形式値の実際の最下位
有効ビットよりも1ビット小さいビット位置に第1の値
の記号が位置していることを示すように、上記トリプル
・シーケンスに最下位トリプルを追加するステップを更
に含む上記(1)に記載の最上位有効ビット位置予測方
法。
【0065】
【発明の効果】本発明によって、従来技術に比較して単
純化された最上位有効ビット位置予測器が提供され、浮
動小数点加算器の製造がより容易となる。
【図面の簡単な説明】
【図1】改良された最上位有効ビット予測器を備える加
算機のブロック図である。
【図2】LBA内の種々の構成要素、すなわちオリジナ
ル・オペランド、シフトされたオペンド、PKG記号、
予測ビット値マップおよび未調整演算和のビット位置の
間の対応関係を示す図式である。
【図3】図2に最下位有効PKG記号を追加した図式で
ある。
【図4】図1のLBAに関連して使用されるエラー訂正
の1つのタイプを示すブロック図である。
【図5】非MSBトリプルに関連して使用されるゲーテ
ィング・セルのCMOS形態の図式である。
【図6】図2と図3と同様であるが、PKG記号のMS
Pペアの解読を含む図式である。
【図7】図6の形態に対して使用されるゲーティング・
セルのCMOS形態の図式である。
【符号の説明】
1 浮動小数点2進加算器 2 (n+1)ビット仮数A 3 (n+1)ビット仮数B 4 PKG生成器 5 (n+1)ビットPKGワード 6 最上位有効ビット位置予測器(LBA) 7 加算器キャリ連鎖回路 8 (n+1)P_WORD信号 9 (n+1)CARRY_WORD信号 10 XOR加算器 11 RAW_SUM信号 12 LBAエラー検出器 13 SHIFT_#信号 14 EXTRA_SHIFT信号 15 正規化された仮数 17 PKGシーケンス検出器 18 PPROX_X_MAP信号 19 最上位1連鎖回路 20 値J 21 加算器 22 試行指数 23 計算結果としての指数 24 SUM_IS_ZERO信号 25 マルチプレクサ 26、46 値ゼロ 27 調整済み指数 28、29 nビットのオリジナル・オペランド 30、31 シフトされた(n+1)ビット・オペラン
ド 33、41 (n−1)個のAPPROX_X_MAP 34 (n+1)個のRAW_SUM 35 トリプルから結果を生成する規則 36 (n+1)個の記号 42 XORゲート 43、44 ANDゲート

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】2つのnビット・オリジナル・オペランド
    の2の補数2進和の最上位有効ビット位置を予測する方
    法であって、 上記2つのnビット・オリジナル・オペランドを2つの
    (n+1)ビット形式に非正規化するステップと、 上記2つの(n+1)ビット形式の各i番目位置毎に、第
    1の値が2つの(n+1)ビット形式のそれぞれi番目の
    2つのビットの加算がゼロであることを示し、第2の値
    がその加算が1であることを示し、第3の値がその加算
    が2であることを示す値を持つ3種類の記号の1つをi
    番目記号として割り当てることによって、(n+1)個の
    記号シーケンスを生成するステップと、 上記(n+1)個の記号シーケンスの最左端から開始し
    て、3つの連続する記号を1つのトリプルと定義し、隣
    接する2つのトリプルが常に共通の2つの隣接記号を持
    つように(n+1)個のトリプルを形成するステップと、 上記トリプルの各々を検査して、該トリプルに対応する
    上記非正規化オペランドのビット位置の部分的加算セグ
    メントが2つの最上位有効ビットを持つことを示す第1
    の値またはそれ以外を示す第2の値を持つ暫定ビット
    を、少なくとも上記トリプルの数に等しい数の暫定ビッ
    トから構成される2進暫定ワードの対応する暫定ビット
    位置に作成するステップと、 上記2進暫定ワードの検査によって、上記第1のビット
    値を持つ最上位有効ビット位置を決定するステップと、 上記決定したビット位置を上記2進暫定ワードの最左端
    からのビット位置数Jで表現するステップと、 上記2つの(n+1)ビット形式値を加算して未調整和を
    作成するステップと、 上記未調整和を上記Jに等しい量だけ正規化するステッ
    プと、 を含む最上位有効ビット位置予測方法。
JP02464497A 1996-02-29 1997-02-07 最上位有効ビット位置予測方法 Expired - Fee Related JP3753275B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US608,798 1996-02-29
US08/608,798 US5798952A (en) 1996-02-29 1996-02-29 Leading bit anticipator

Publications (2)

Publication Number Publication Date
JPH09244874A true JPH09244874A (ja) 1997-09-19
JP3753275B2 JP3753275B2 (ja) 2006-03-08

Family

ID=24438052

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02464497A Expired - Fee Related JP3753275B2 (ja) 1996-02-29 1997-02-07 最上位有効ビット位置予測方法

Country Status (2)

Country Link
US (1) US5798952A (ja)
JP (1) JP3753275B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3544846B2 (ja) * 1997-02-13 2004-07-21 株式会社東芝 論理回路及び浮動小数点演算装置
US6178437B1 (en) * 1998-08-25 2001-01-23 International Business Machines Corporation Method and apparatus for anticipating leading digits and normalization shift amounts in a floating-point processor
US6571267B1 (en) 1999-03-10 2003-05-27 Kabushiki Kaisha Toshiba Floating point addition/subtraction execution unit
US6499044B1 (en) * 1999-11-12 2002-12-24 Jeffrey S. Brooks Leading zero/one anticipator for floating point
US6895420B1 (en) 2000-02-16 2005-05-17 Hewlett-Packard Development Company, L.P. Apparatus and method for sharing data FET for a four-way multiplexer
US6738795B1 (en) * 2000-05-30 2004-05-18 Hewlett-Packard Development Company, L.P. Self-timed transmission system and method for processing multiple data sets
US6615228B1 (en) 2000-05-30 2003-09-02 Hewlett-Packard Development Company, Lp Selection based rounding system and method for floating point operations
US6654776B1 (en) * 2000-06-02 2003-11-25 Sun Microsystems, Inc. Method and apparatus for computing parallel leading zero count with offset
CN114758728B (zh) * 2022-06-15 2022-09-02 成都边界元科技有限公司 混合进制下产生最小海明距离的基因型标识及可视化方法

Also Published As

Publication number Publication date
US5798952A (en) 1998-08-25
JP3753275B2 (ja) 2006-03-08

Similar Documents

Publication Publication Date Title
Schmookler et al. Leading zero anticipation and detection-a comparison of methods
Bruguera et al. Leading-one prediction with concurrent position correction
US4758972A (en) Precision rounding in a floating point arithmetic unit
JPH0542011B2 (ja)
US8620983B2 (en) Leading sign digit predictor for floating point near subtractor
JP3544846B2 (ja) 論理回路及び浮動小数点演算装置
JP3753275B2 (ja) 最上位有効ビット位置予測方法
US6499044B1 (en) Leading zero/one anticipator for floating point
US6947962B2 (en) Overflow prediction algorithm and logic for high speed arithmetic units
US5831884A (en) Apparatus for performing arithmetic operation of floating point numbers capable of improving speed of operation by performing canceling prediction operation in parallel
JPH0520028A (ja) 加減算のための浮動小数点演算装置の仮数部処理回路
US7290023B2 (en) High performance implementation of exponent adjustment in a floating point design
JP6290886B2 (ja) 装飾構成に基づくモーダル区間計算
CN112650469A (zh) 用于二进制标志确定的电路和方法
US7024439B2 (en) Leading Zero Anticipatory (LZA) algorithm and logic for high speed arithmetic units
JP7044528B2 (ja) リーディングゼロ予想
Kornerup Correcting the normalization shift of redundant binary representations
CN112667197B (zh) 一种基于posit浮点数格式的参数化加减法运算电路
KR101922462B1 (ko) 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법
KR100331846B1 (ko) 실수 연산기
US5657260A (en) Priority detecting counter device
JPH09114641A (ja) 最上位デジットを決定するための装置と方法
US10275218B1 (en) Apparatus and method for subtracting significand values of floating-point operands
JP3257278B2 (ja) 冗長なシフト数予測とシフト誤り補正を用いた正規化装置
He et al. Multiply-add fused float point unit with on-fly denormalized number processing

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050510

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050804

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051208

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20091222

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091222

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20101222

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees