JPS6347827A - 妥当性応答発生装置 - Google Patents

妥当性応答発生装置

Info

Publication number
JPS6347827A
JPS6347827A JP62117258A JP11725887A JPS6347827A JP S6347827 A JPS6347827 A JP S6347827A JP 62117258 A JP62117258 A JP 62117258A JP 11725887 A JP11725887 A JP 11725887A JP S6347827 A JPS6347827 A JP S6347827A
Authority
JP
Japan
Prior art keywords
instruction
floating point
exponent
response
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP62117258A
Other languages
English (en)
Inventor
デービツド・アレン・ヒユルセツキー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS6347827A publication Critical patent/JPS6347827A/ja
Pending 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/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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/3832Less usual number representations
    • G06F2207/3844Hexadecimal
    • 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/386Special constructional features
    • G06F2207/3884Pipelining
    • 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

Landscapes

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

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A、産業上の利用分野 この発明は、命令発行部から浮動小数点演算機構に出さ
れる浮動小数点演算命令に対する、浮動小数点演算機構
の妥当性応答を促進するための装置および方法に関する
ものである。
B、従来技術およびその問題点 浮動小数点演算は、少なくとも18Mシステム/360
の登場以来、計算機システムの高精度付属機構として実
現されてきた。浮動小数点演算な実行できる能力をもつ
計算手段は、たとえば1960年9月3日付けの米国特
許第3400371号に記載されている18Mシステム
/370中に見られる。
浮動小数点は、主に科学計算で、桁数が異なる数を組み
合わせるとき使用される。第6図に浮動小数点数の2進
表示を示す。この2進表示はBOないしB31の32ビ
ット、またはBOないしBO3の64ビツトを含み、前
者は短精度演算に使用され後者は良精度演算に使用され
る。短精度演算でも良精度演算でも第1ビツトBOは表
わされる数の代数符号を表わす。すなわち、ビットBO
が0のとき符号は正とみなされ、1のときは負である。
次の7ビツトB1ないしB7はその数の指数部を表わす
。なお、指数部は2のべき指数を示す。短精度演算の場
合、ビットB8ないしB31は少数部の大きさの2進表
示であり、範囲(1゜0]内の値をとる。良精度演算で
は、少数部は上記と同じ範囲に含まれるが、もう32ビ
ット分高い精度で表わされる。浮動小数点表示で表わさ
れる数は、2のn(ただしnは指数部によって示される
指数)乗と小数部の積である。
浮動小数点数は、普通第7図に示すような16進数の形
で表わされる。第7図の16進数で、最初の2つの16
進数字HOとHlは、第6図に示した2進数の最初の8
個の2進数字BOないしB7に対応する。第6図の短精
度演算用2進小数部BSないしB31は、第7図の表現
ではH2ないしHlで表わされる。同様に、良精度演算
用小数部は、16進表示では数字H2ないしHl5で表
わされる。
当業者なら理解できることであるが、浮動小数点「演算
」とは、浮動小数点演算「命令」によって呼び出される
特定の演算シーケンスのことである。典型的な場合、I
 、B Mシステム/370では、浮動小数点演算命令
は第3図に示す形をとり、オペレーション・フィールド
1個とオペランド・フィールド2個(FAとFB)を含
む。18Mシステム/370は、浮動小数点レジスタF
AとFBに含まれる1対のオペランドに対して、OPフ
ィールドで指示される演算を実行し、結果を浮動小数点
レジスタFAに戻す。
18Mシステム/370における通常の浮動小数点演算
命令には、「加算クラス」命令、乗算命令、除算命令、
および比較や開平などその他の特殊命令がある。「加算
クラス」命令には、正規化されたまたは正規化されてい
ない良精度および短精度の加算と減算が含まれる。
正規化加算クラス命令の演算シーケンスは、少なくとも
3つのステップからなる。第1ステツプでは、演算を施
される2個のオペランドの指数部が、比較される。それ
に関して、演算が実行される2個のオペランドの小数部
が、オペランドを比較することにより位置合せされる。
指数部が小さな方のオペランドの小数部が、2つのオペ
ランドの指数部を等しくするのに必要な16進数字の数
だけ右にシフトされる。次に加算クラス演算が実行され
、レジスタFB内にあるオペランドの小数部がレジスタ
FA内にあるオペランドの小数部に加えられ、または後
者から差し引かれる。最後に、得られた数の小数部が検
査される。その最上位の数字が0の場合、最上位の数字
がOでなくなるまで小数部が左にシフトされる。同時に
、小数部の最上位のゼロでない数字を最上位の桁に入れ
るためにシフトしなければならない桁数に対応する量だ
け、指数部が減らされる。非正規化加算クラス演算では
、第3のステップである正規化が省略される。
浮動小数点乗算および除算では、演算シーケンスは、下
記のステップからなる。まず事前正規化ステップで、両
方のオペランドが加算クラス演算について上段で説明し
たのと同じやり方で正規化される。次に、両方のオペラ
ンドの指数部が加算または減算され、必要な演算が乗算
であるがそれとも除算かに応じて小数部が組み合わされ
る。最後に、得られた小数部の最上位の数字が0の場合
、加算クラスの正規化について上段で説明したのと同じ
やり方で事後正規化が行なわれる。
C1問題点を解決するための手段 本発明はこの問題を解決せんとするものである。
この問題を解決するため、浮動小数点演算装置が浮動小
数点算術命令に応答して一対のオペランドに対して遂行
する浮動小数点算術演算について妥当性応答を発生する
本発明の妥当性応答発生装置は、(a)  浮動小数点
算術命令の完了前に該浮動小数点算術命令のオペランド
を組み合わせて暫定的な指数部を生成し該暫定的な指数
部が所定の値の範囲に人っているかどうかを判断する第
1の手段と、(b)  オペランドの指数部および小数
部から、浮動小数点算術命令が非ゼロの結果を生ずる有
効加算命令であるのかまたは有効減算命令であるのかを
判断する第2の手段と、(c)  これらの第1の手段
および第2の手段に応答して、(イ)浮動小数点算術命
令が乗算クラスの命令でありかつ上記暫定的な指数部が
上記所定の値の範囲に人っている場合、又は、(ロ)浮
動小数点算術命令が有効加算命令であり上記暫定的な指
数部が上記所定の値の範囲に入っておりかつ該浮動小数
点算術命令がその実行により非ゼロの結果を生ずるもの
である場合に、上記浮動小数点算術命令の完了前に妥当
性応答を発行する第3の手段と、を有することを特徴と
する。
本発明の作用は以下の実施例と共に説明する。
D、実施例 はじめに本実施例を概説する。
本実施例に基づく装置は、妥当性応答に応じて条件的に
分岐し割込み可能であるような命令シーケンス中におい
て命令発行部から供給される浮動小数点算術命令に応答
して浮動小数点演算装置が一対のオペランドに対して遂
行する浮動小数点算術演算について早期妥当性応答を発
生する。
妥当性応答の発生をその妥当性応答と関連する浮動小数
点算術命令の実行完了前に時期を早めて行なわせること
で、命令発行部の命令発行速度が増大することができる
この早期妥当性応答は現在実行中の浮動小数点算術演算
のオペランドに含まれる指数、符合および小数部から導
出される。この早期妥当性応答はその命令の実行前また
は実行中に作られる。また、本実施例によれば、早期妥
当性応答を付勢する一定の加算クラスの浮動小数点算術
命令の完了前に条件コードを設定する能力が提供される
。さらに、一定の加算および減算命令についての早期妥
当性応答と同期して早期割込み要求も供給される。浮動
小数点比較演算は、本質的には減算であり、通常は適応
浮動小数点減算によって実行される。同様に開平演算は
、浮動小数点環境では、通常、修正除算シーケンスによ
って行なわれる。
浮動小数点演算は16進指数部で表わすのが常会手段で
あり、以下の本発明の説明でもそれに従うことにする。
したがって、正規化の間に小数部の最上位の16進数字
、すなわちH2が検査される。この小数部の数字H2が
Oの場合、H2がOでなくなるまで、その右側にある少
数の16進数字が左にシフトされる。また、16進表示
では指数部は16のべき乗を表わす。したがって、浮動
小数点は、16のm来(ただしmは指数部の大きさ)と
小数部との積であるまた、指数部は、0から127まで
の値をとる。正の整数として表わされる。実際にはこれ
は−64から+63までの範囲の指数部の値をコード化
表示したものである。
すなわち指数部フィールドの値がら64を引くと、実際
の指数部の値が得られる。通常の言い方では、数64(
16進表示で40)は、「バイアス」量と呼ばれる。
浮動小数点演算の結果は、浮動小数点演算命令を含む命
令シーケンスの決定条件を確立する際に重要である。1
8Mシステム/37oでは、これらの決定条件は、プロ
グラム状況ワード(PSW)の隣接する2つのビット(
「条件コード(CC)Jと総称される)で表わされる。
条件コードは、00.01.10の少なくとも3つの状
態をとり、浮動小数点演算の結果によって影響を受ける
。浮動小数点演算が完了すると、結果がゼロの場合は0
0に、結果が負(くo)の場合はolに、また結果が正
(〉O)の場合はolにセットされる。
周知の通り、条件コードは加算クラス演算および比較演
算の結果によってセットされ、通常は分岐命令の目的命
令を決定するのに使われる。
18Mシステム/370で浮動小数点演算を実行すると
、オベレーテインク・システム監視プログラムに対する
割込み要求が生成されることもあり得る。周知の通り、
割込み命令は、条件コードによって示される条件以外の
条件の発生を示す。
一般に割込み要求が出ると、プログラムの実行が中断さ
れる。浮動小数点環境では、いくつかの例外のうちの一
つが発生するとき、割込み要求が生成される。例外とは
、指数部あふれ、指数下位桁あふれ、ゼロによる除算、
負の数の開平、および有効数字例外である。
指数部あふれ例外が発生するのは、結果の最終的指数部
が127を越え、かつ結果の小数部がゼロでないときで
ある。通常、指数部あふれは、小数部の最上位の桁の繰
上げを必要とする加算クラス演算から生じ、小数部を右
にシフトし指数部を1だけ増やすことによって調整され
る。乗算または除算では、指数部の計算中に指数部あふ
れが発生する。
指数下位桁あふれ例外が発生するのは、結果の最終的指
数部が負の値となるときで、たとえば加算クラス演算の
正規化や乗算または除算の事後正規化の際に発生する。
指数下位桁あふれは、乗算または除算中の指数部の計算
からも発生する。事前正規化の際の指数下位桁あふれの
場合は、割込み要求が発生しないことに留意されたい。
分母が0のときの除算や負の数の開平を試行したときに
も例外が発生する。
有効数字例外は、プログラム状況ワード(PSW)中の
有効数字例外マスク(S M ’)と呼ばれるビットの
状態に応じて発生する。このビットが1であり、加算ク
ラス演算の結果の小数部がOである場合、割込み要求が
発生する。しかし、SM値がOで、加算クラス演算の結
果の小数部が0の場合は、割込みは起こらない。
IBMシステム/370など浮動小数点演算能力を含む
計算機のオペレーションの際には、浮動小数点演算は直
列化される。これは、プログラム割込みと条件コードの
更新を命令ストリームの実行と精密に同期させなければ
ならないという要件によるものである。かかる同期が必
要なのは、命令シーケンスの形と連続性が、条件コード
と割込みレジスタによって決定されるためである。シス
テム/370を作り上げている大部分のアーキテクチャ
では、命令ストリームを条件コードの更新および割込み
要求と同期させるために、現在実行中の浮動小数点演算
が完了するまで命令の発行を抑制しており、それによっ
て、演算の結果から生じる条件コードの更新または割込
み要求を使って、命令シーケンスが分岐されるかそれと
も中断されるかが決定できるようになっている。これら
のシステムでは、命令を出す際に、条件コードと割込み
要求信号の現在の状態が考慮されるのは、浮動小数点演
算の実行が完了したと確認できるときだけである。この
完了は、大抵は、浮動小数点演算の完了に応じて出る妥
当性応答信号によって示される。この信号が出されて演
算の完了を示すとき、条件コードと割込み要求の現在の
状態が妥当であると見なされる。
妥当性応答を供給するため浮動小数点演算の結果を待た
なければならないという要件があるので、バイブライン
式処理法または並列処理法を用いた浮動小数点演算機構
の効率が低下する場合がある。
これらの最新式演算装置では、複数の浮動小数点演算処
理が同時に実行できるのであるが、浮動小数点演算の結
果を待って浮動小数点演算命令が直列化される場合、現
在実行中の命令が完了した後でしか浮動小数点演算命令
が開始できず、したがって並列処理の利益がなくなるた
め、バイブライン式浮動小数点演算機構の効率が低下す
る。
本実施例に基づく早期妥当性応答発生装置は、浮動小数
点算術命令(以下、単に「浮動小数点命令」ともいう)
のオペランド中の指数を数値的に組み合わせて暫定的な
指数部を得、出された命令の実行完了前にこの暫定指数
部を所定の閾値範囲と比較する、閾値回路を備えている
。オペランド対の指数部と小数部および出された命令の
命令フィールドによって条件つけられるテスト論理回路
が、加算クラス命令を識別し、識別された加算クラス命
令の実行によってゼロの結果が生成されるか、それとも
ゼロでない結果が生成するかを判定する。妥当性トリガ
論理回路は、閾値検査回路とテスト論理回路に応答して
命令が乗算命令であり暫定指数部が閾値範囲内にある場
合、または命令が加算クラス命令であり暫定指数部が閾
値範囲内にありかつその命令の実行によってゼロでない
結果が生成される場合、出された命令の実行完了前に早
期妥当性応答を出す。
本実施例はまた、浮動小数点演算命令を実行する浮動小
数点演算機構と、浮動小数点命令の完了時に浮動小数点
演算機構が生成する条件コードおよび割込み要求によっ
て決まる順序で浮動小数点命令を出す命令発行部との組
合せとしても表現できる。本実施例は、浮動小数点演算
機構による浮動小数点命令の実行と同期して出される浮
動小数点命令を順序づける、いくつかのバイブライン式
レジスタに関する。浮動小数点演算機構にアクセスして
、バイブライン式レジスタ中で順序づけされて出される
浮動小数点命令のオペランドまたは中間結果の一部分を
選択的に取り出すアクセス回路も含まれる。応答促進機
構がバイブラン式レジスタ内の順序つけされた命令なら
びにバイブライン式レジスタ内のある命令のオペランド
部分とその命令に対して得られた中間結果を受は取って
、浮動小数点演算機構が命令の実行を完了する前に、条
件コードと割込みコードが出された命令の正しい結果を
示すことを確認する妥当性応答を供給する。
本発明にもとづく方法の実施例は、出された浮動小数点
命令を浮動小数点演算機構が受は取ったとき、出された
命令のオペランド中の非正規化指数同志を組み合わせて
、出された命令の実行結果の指数部を近似する暫定指数
部を得るステップを含む。次に暫定指数部を第1の指数
閾値範囲と突き合わせてテストし、暫定指数部が第1の
指数閾値範囲に含まれる場合は、出された演算命令の実
行以前の起点時間に妥当性応答が供給される。この方法
はさらに、出された命令が乗算命令であるかまたはゼロ
でない結果を生成する有効加算命令である場合にだけ、
上記の組合せステップとテスト・ステップを実行するス
テップを含む、それ以外の場合は、浮動小数点演算機構
から暫定指数部が取り出され、それが第2の指数閾値範
囲と突き合わせてテストされ、暫定指数部が第2の指数
閾値範囲に含まれる場合は、起点時間より後の目的時間
に、ただし出された命令の実行以前に、妥当性応答が供
給される。
本発明にもとづく装置または方法を考える場合、当業者
でも、ある種の浮動小数点命令の結果がそれに関連する
浮動小数点演算の完了前に予測できるとは予想できない
かもしれない。しかし、本発明は、まず、浮動小数点乗
算命令の例外が指数部あふれまたは指数下位桁あふれの
みにもとづく故に、オペランドの指数同志を組み合わせ
、この組合せの結果を分析することによりこれらの例外
が命令実行前に予測できるという知見に基づいている。
この知見の重要性は、開運する命令が浮動小数点バイブ
ライン中で順序づけられている間に、乗算オペランドの
指数を分析する機会を与える、バイブライン式浮動小数
点アーキテクチャの場合に極めて顕著である。本発明は
、次に、浮動小数点バイブライン中の加算クラス浮動小
数点命令についても同じオペランド指数の分析が行なえ
、さらにかかる命令のオペランドの符号と小数部の検査
および分析にもとづいて、かかる命令の結果がゼロであ
るかそれともゼロでないかが予測できるという知見にも
基づく。それにより、ゼロを生成する結果に対して有効
数字例外および割込みが発生するかどうかを予測する機
会が得られ、かつゼロでない結果を生成する命令に対し
て早期妥当性応答を供給し条件コードを予測する機会が
得られる。
以下、図面を参照して本実施例を詳説する。
本発明の適用される環境を第4図に示す。第4図におい
て、浮動小数点演算機構(FPLI)10は、命令発行
部から一連の浮動小数点(FLPT)オペランドと浮動
小数点(FLPT)命令を受は取る。命令発行部は、命
令処理機構(IPU)12、エミュレーション援助処理
機構(EAP)14、および記憶機構16からなる。第
4図は、本発明を適用した特定の環境に関するものであ
ることに留意されたい。すなわち、本発明を実施するに
際し、命令処理部が必ずしも第4図の構造をとる必要は
ない。たとえば、18Mシステム/370によって動作
する通常の計算機複合体で構成されるものでもよい。た
だし、第4図では、IBMシステム/370命令をマツ
ピンクし、命令処理機構12を介して浮動小数点演算機
構10に流れる目的命令ストリームにするために、エミ
ュレーション援助処理機構(EAP)14を使っている
エミュレーション援助処理機構14のようなエミュレー
ション援助処理機構は、たとえば米国特許第45876
12号などに詳しく記載されている。
第4図において、記憶機構16は、システム/370形
式の命令とそれに関連するオペランドからなるプログラ
ムを内蔵している。通常、記憶機構16は、エミュレー
ション援助処理機構(EAP)14が信号経路上に供給
するアドレス信号によって記憶アクセスが可能となるよ
うに編成されている。これらのアドレス信号を受けて、
信号線19と20上に命令とオペランドが供給される。
システム/370形式の命令をエミュレーショ援助処理
機構14が受は取り、通常の変換機構(CONV)15
がそれを浮動小数点演算機構が理解できる命令の形に翻
訳する。翻訳された命令は、信号線21を介して命令処
理機構(IPU)12に供給される。命令処理機構12
が受は取ったオペランドとそれに関連する命令は、それ
ぞれ浮動小数点(FLPT)オペランドおよび浮動小数
点(FLPT)命令として、データバス23および24
上に渡される。信号線20と21を介して命令処理機構
12に供給されたオペランドおよび命令が、バス23と
24に供給される。エミュレーション援助処理機構14
内のロッキング論理回路(LOGIC)26で生成され
るプロセッサ・バス・ロッキング制御信号(以下、単に
「ロッキング制御信号」ともいう。)により、バス23
と24をロックして新しい命令の供給を防止することが
できる。ロッキング制御信号は、信号線27を介してバ
ス・ロック機構(LOCK)29と30に供給される。
このバス・ロック機構は、たとえばラッチで構成するこ
とができる。
以下の議論では、出される命令が、バス・ロック機構3
0にラッチされるものとする。ある種の命令では、命令
オペランドの一つをバス・ロック機構29にも保持する
ことができる。ロッキング制御信号は、現在バス・ロッ
ク機構に保持されている命令を信号線21上の次の命令
で置き換えて命令を出すようになっている。なお、ロッ
キング論理回路26は、信号線27上でロッキング制御
信号を生成または抑制することにより、命令を出すか否
かを決定する。
第4図のアーキテクチャの命令発行機能をシステム/3
70環境で考える場合、エミュレーション援助処理機構
(EAP)14は、信号線28上で浮動小数点演算機構
10から妥当性応答を受は取るまで、ロッキング論理回
路(LOGIC)26を介して命令の発行を抑制する。
エミュレーション援助処理機構14は、バス・ロック機
構(LOCK)30に現在保持されている浮動小数点命
令の完了時に妥当性応答を受は取ると、条件コード信号
u!81と割込み要求信号線32を検査して、条件コー
ドの現在の状態を判定し、かつバス・ロック機構30中
で命令の実行が完了した結果、割込み要求が発生したか
どうか判定する。本発明を理解するには必ずしも必要で
はないが、条件コード信号線31上の条件コード信号を
使って、現在のプログラム状況ワード(psw)中の条
件コード(CC)が変更されるかどうかが判定されるこ
とが理解できるはずである。割込み要求信号線32上で
割込み要求を受は取ると、エミュレーション援助処理機
構14中のルーチンが割込み分岐ハンドラ(BRtol
H)に分岐する。このハンドラは、通常はソフトウェア
・ルーチンで構成される。
したがって、システム/370環境中では、現在供給さ
れている実行すべき370命令が、割込みを起こす可能
性のあるタイプのもの、あるいはその演算に対する条件
コードが現在のプログラム状況ワード(PSW)を更新
しなければならないものであることをエミュレーション
援助処理機構(EAP)14が検出した場合、バス28
と24をロックするための適当なロッキング制御信号を
供給して、命令処理機構(IPU)12が浮動小数点演
算機構(FPU)10またはパス23と24に接続され
たその他の機構にそれ以上命令を供給するのを防止する
。このロッキングは、条件コード信号線と割込要求信号
線が検査されたとき、妥当性応答を受は取るまで維持さ
れる。
従来のシステム/370環境では、命令が浮動小数点演
算機構10に供給される速度は、下記の諸刃子によ1て
規定されている。
(1)現在パス・ロック機構(LOCK)30内にある
命令が要求する動作を浮動小数点演算機構(FPU)1
0が完了する速度。
(2)条件コードまたは割込み要求の変化が発生したか
否かを浮動小数点演算機構(FPLI)10がエミュレ
ーション援助処理機構(EAP)14に通知する速度。
(3)エミュレーション援助処理機構14がパス・ロッ
ク機構30をアシロツクして、次の命令を渡す速度。
本発明は、ある種の浮動小数点演算の結果、条件コード
または割込み要求が変化するかどうかを演算の完了前に
事前決定することにより、第2の速度因子の改善をはか
るものである。この事前決定により、信号、SIi!2
8上への妥当性応答の供給をパス・ロック機構30内で
の動作完了前の時点に繰り上げることが可能となる。妥
当性応答の促進により、エミュレーション援助処理機構
(EAP )14は通常より早く条件コード信号線と割
込み要求信号線をテストし、命令速度シーケンスのステ
ップ3を開始することができる。このため、浮動小数点
演算機構(FPU)10が前の命令の実行を完了する前
に、次の命令を出すことが可能になる。
ステップ2の改善によって得られる効果は、浮動小数点
演算機構10にバイブライン機能を付与して同時に少な
くとも2個の命令を実行できるようにすると、さらに高
まる。
パイプライン式多重処理浮動小数点演算機構は当技術で
周知である。たとえば、18Mシステム/370/91
は、同時に浮動小数点加算、乗算および除算を実行する
能力をもつ浮動小数点演算機構を備えている。
第5図に浮動小数点演算機構(FPU)10の構造をさ
らに詳細に示した。浮動小数点演算機構(FPU)10
は、FPU制御機構32、記憶/指数処理機構34、お
よびそれぞれ乗算、除算と開平演算、加算クラス演算を
含む浮動小数点小数部操作を実行するための演算実行機
構38.40.42を含んでいる。FPU制御機構32
は、パス24を介して浮動小数点命令とオペランド・ア
ドレスを受は取り、すべての機能単位の動作を調整し同
期させるための論理回路を含んでいる。記憶/指数処理
機構34は、浮動小数点演算の施されるオペランド対を
記憶するための浮動小数点レジスタ(FP、R)を含ん
でいる。記憶/指数処理機構34は、また指数演算、事
前正規化、および事後正規化を行なうための通常の回路
を含んでいる。
データ・インターフェース86は、データ・パス23を
介して浮動小数点演算機構(FPU)10と命令処理機
構(IPU)12の間でオペランドをステージングする
。パス23上で受は取られたオペランドは、データ・イ
ンターフェース36により、浮動小数点演算機構内にあ
る結果パス43を介して記憶/指数処理機構34にステ
ージングされる。記憶/指数処理機構34に供給された
オペランドは、浮動小数点レジスタの、FPU制御機構
32によって信号線45上に供給されるFPRアドレス
が示す位置に記憶される。オペランドは、やはり浮動小
数点演算機構(FPU)10内にあるオペランド・パス
44f:介して、演算実行機構38.40.42に供給
される。−組のオペランドが演算実行機構に渡されるの
と同時に、FPU制御機構32から適切な演算実行機構
に演算実行機構起動信号が供給される。オペランド対と
演算実行機構起動信号が渡されると、指定された演算実
行機構は、出された命令が要求するオペランド対の小数
部に対して演算を実行する。この小数部の演算の結果が
、結果パス43を介して記憶/指数処理機構34内の浮
動小数点レジスタに戻されて記憶される。結果オペラン
ドは、浮動小数点レジスタからオペランド・バスを介し
てデータ・インターフェース36に転送され、データ・
インターフェース36からパス23を介して命令処理機
構(IPU)12に送り戻される。
本実施例によれば、浮動小数点レジスタから信号線48
を介して、またデータ・インターフェース36から信号
線49を介して得られる閾値検査データを用いて、FP
U制御機構32内で早期妥当性応答が生成される。以下
の説明では、「閾値検査データ」の語は、命令バス24
を介して浮動小数点演算機構10に出される命令が使用
するオペランド対の符号、指数部、および小数部から直
接または間接に導出される情報を指すものとする。
閾値検査データ信号線49は、記憶機構から第2のオペ
ランドを取り出す、周知のRX型浮動小数点命令に必要
である。したがって、RX型浮動小数点命令の場合、記
憶機構から抜き出されたオペランドから導出された閾値
検査データが、信号線49を介してFPU制御機構32
に供給され、浮動小数点レジスタ中のもう一方のオペラ
ンドに対する閾値検査データが信号線48を介して供給
される。これ以外の場合はすべて、両方のオペランドに
対する閾値検査データが信号線48を介して供給される
本実施例にもとづくオペレーションに際して、FPU制
御機構32は、浮動小数点演算機構(FPU)10に出
された命令を実行するのに必要な浮動小数点演算で使わ
れる2つのオペランドの指数を組み合わせる。オペラン
ドの事前正規化およびその結果生じる指数の調整ならび
に結果の事後正規Tヒおよびその最終指数の調整を考慮
すると、指数下位桁あふれまたは指数部あふれの正確な
量が決定できる。しかし、多くの場合、通常の命令セッ
トではこの種の例外は稀なので、エミュレーション援助
処理機構(EAP )14に対して妥当性応答を生成す
る際には、このような厳密な情報は不要である。本発明
は、浮動小数点演算の実行完了前に割込みが発生しない
ことが保証できるなら、演算がまだ実行中に浮動小数点
演算機構(FPU)10が妥当性応答を提供できるとい
う知見によるものである。本発明はまた、演算に関係す
るオペランドの指数から導出された暫定指数部が、予め
定められた許容指数閾値範囲に含まれるとの知識にもと
づいて、かかる保証が可能なことに基づく。この閾値範
囲内では、事前正規化または事後正規化により最大数の
シフトが起こったとしても、演算の結果、指数下位桁あ
ふれや指数部あふれは起こらない。すなわち、後述する
条件のもとで、暫定指数部が予め定められた指数閾値範
囲に含まれるとの判断を使って、浮動小数点演算機構1
0のFPU制御機構32が早期妥当性応答を生成する。
もちろん、指数閾値範囲として選ばれた限界が、(演算
の実行完了後に)例外を生じることのない演算について
妥当性応答を促進できないことがあり得る。したがって
、演算の実行完了前に妥当性応答を促進する機会を複数
提供する。
ここで、暫定指数部とは、最後に出された浮動小数点命
令の適用を受ける浮動小数点オペランドの指数を代数的
に組み合わせたものをいう。この組合せは、加算、減算
または比較である。したがって、記憶/指数処理機構3
4とデータ・インターフェース36から第5図のFPU
制御機構32に渡される「閾値検査データ」には、オペ
ランドの指数が含まれる。
暫定指数部を指数閾値範囲と突き合わせて比較する閾値
検査は、個々のオペランドの指数が事前正規化または事
後正規化によって調整される実際の量は無視して、結果
について指数部あふれおよび指数下位桁あぶれがあるが
どうが、暫定指数部を評価する。指数閾値範囲検査はさ
らに、各オペランドが可能な最大の事前正規化または事
後正規化を施され、その結果、暫定指数部が一方の範囲
限界の方向に移動すると仮定している。
たとえば、良精度の乗算の間に可能な下位桁あふれが生
じるかどうかテストする場合、演算に関係する各オペラ
ンドが16進数で13桁という可能な最大の事前正規化
を受け、結果が16進数で1桁の可能な最大の事後正規
化を受けるものと仮定される。したがって、暫定指数部
が全体で27桁下がることがあり得る。好都合な指数閾
値範囲の下限は32となる。暫定指数部がこの下限より
も低い(すなわち範囲外の)場合、早期妥当性応答は延
期される。好ましい実施例では、範囲の上限は127に
設定され、したがって良精度乗算用の指数閾値範囲は[
32,127コとなる。短精度乗算では、指数閾値範囲
は[16,127コである。
当業者なら理解できることであるが、良精度および短精
度乗算の指数閾値範囲を用いると、指数部あふれまたは
指数下位桁あふれを生じない多くの乗算が排除される。
こういった場合、第2の指数範囲を用い、今度は記憶/
指数処理機構34が行なう事前正規化の調整によって生
成される指数を暫定指数部として使う。この場合の第2
の指数閾値範囲は[16,127]である。この場合は
閾値範囲の下限は下位桁あぶれの1桁上であり、1桁の
事後正規化処理が許容される。第2の指数閾値範囲に含
まれない乗算、除算および開平演算では、浮動小数点演
算機構(FPU)10は、通常時にすなわち演算の実行
が終了し完成したときに妥当性応答を供給するように制
約される。
好ましい実施例では、正規化されたならびに正規化され
ていない加算または減算を含む短精度および良精度の「
加算」クラス演算も、妥当性応答の促進のために分析さ
れる。この点に関して、加算クラス命令のオペランドの
指数部を上記に定義した第1および第2の指数閾値範囲
に含まれるかどうか分析することはできるものの、これ
らの演算では、結果の小数部がゼロとなるとき、有効数
字例外が発生する機会もあることがわかった。この可能
性は、「有効減算」と呼ばれるすべての演算で存在する
。本明細書では、「有効減算」の語は、オペランドFB
がオペランドF Aから有効に差し引かれる浮動小数点
演算の意味で用いる。有効減算とは、オペランドの符号
と演算の符号を考慮に入れて、奇数個のマイナス符号を
含む加算クラス演算であると定義される。したがって、
たとえば正のオペランドと負のオペランドの加算は、マ
イナスの符号をもつオペランドがプラスの符号をもつオ
ペランドから有効に差し引かれるので、有効減算である
。負のオペランドから負のオペランドを引く減算も有効
減算である。
「有効加算」と呼ばれる加算クラス演算でも、結果がゼ
ロとなる可能性は存在する。有効加算とは、小数部の符
号と演算の符号を考慮にいれて、偶数個のマイナス符号
を含む演算であると定義される。したがって、例えば、
正のオペランドから負のオペランドを引く演算は有効加
算である。同様に、2つの負のオペランドの加算も有効
加算である。有効加算では、両方のオペランド小数部が
すべてゼロのときだけ、結果がゼロとなる可能性がある
従来技術では加算クラス演算での有効数字例外の検出は
、演算終了時に、結果の小数部を上記のようにプログラ
ム状況ワード(PSW)中のSM(有効数字マスク)に
照らして検査し分析するときに行なわれる。
したがって、早期妥当性応答をもたらすには、加算クラ
ス命令の場合、演算結果を早期に分析することが必要で
ある。実際には、この分析で結果がゼロであるかないか
を予測し、ゼロでない場合は結果の符号を予測しなけれ
ばならない。こうすることが必要なのは、妥当性応答が
促進されたとき、割込みが検出され供給されるようにす
るためである。また、条件コードを正確に設定するため
にも必要である。
本実施例の手順は、第1図を参照すると理解できる。第
1図はこの手順の各操作ステップを示す流れ図である。
まず、浮動小数点命令(この命令について早期妥当性応
答が供給される可能性がある)が、浮動小数点演算機構
(FPU)10に供給される。前記のように、浮動小数
点演算機構10はパイプライン式である。したがって、
浮動小数点演算機構で実行される算術演算は、後でさら
に詳しく論じるように、FPUクロックと同期した一連
の操作ステップからなる。各算術演算は、FPLIクロ
ックの数サイクルの間続く。本発明では、妥当性応答が
、特定の演算に必要なFPLIクロックのサイクル数に
対して促進される。妥当性応答は、複数の応答レベルの
1つで促進される。
レベル1が最も早く、レベル4は通常の応答時間、すな
わち演算終了時に対応する。
第1図において、本発明に基づく方法は、浮動小数点演
算機構(FPU)10に浮動小数点命令を供給すること
から始まる。これによって、浮動小数点演算機構10内
で命令操作シーケンスが開始される。命令が演算実行機
構38.4o、または42のうちの1つの使用を必要と
しない場合、本手順から出るので、妥当性応答が本発明
にもとづいて促進されることはない。逆に命令がある演
算実行機構の使用を必要とする場合は、演算が分析され
て、それが乗算またはゼロでない結果オペランドを生成
する有効加算であるがどうが判定される。どちらの場合
でも、ステップ50の肯定出口から出る。
ステップ50の肯定出口で、2つのオペランドの指数部
にもとづいて暫定指数部(INT  CH)が生成され
、関係する演算によって大きさの変わる第1の指数閾値
範囲と比較される。予想される結果がゼロでない有効加
算の場合、暫定指数部は、演算に関係する2つのオペラ
ンドの指数部のうち大きい方である。この暫定指数部が
範囲[16,126]と比べて評価される。この範囲の
下限16は、設計の都合上便宜的に選んだもので、事後
正規化の際に結果が左シフトされ得る最大桁数があると
仮定している。良精度加算の場合、最大シフトは16進
数で13桁なので、この範囲の下限は、結果の指数に対
して、余分に3桁の調整桁のマージンを見込んである。
範囲の上限126は、小数部を16進数で1桁左にシフ
トし、続いて結果の指数を1だけ増やすことを必要とす
る、繰上げの可能性を見込んだものである。
乗算クラスの演算の暫定指数部は、2つのオペランドの
指数部を加算し、余分のバイアス量64の分だけ合計を
調整し、調整後の暫定指数部の値を第1の指数閾値範囲
と比較することによって得られる。短精度乗算の場合、
この範囲は[16,127]、良精度乗算の場合の範囲
は[32,127コである。最後に、指数下位桁あふれ
227(EUM)と呼ばれるプログラム状況ワード(P
SW)ビットがリセットされ、演算が乗算である場合、
ブロック51で特別の措置が施される。この場合、暫定
指数部が15以下であれば、暫定指数部は第1の指数閾
値範囲内にあると見なされる。
ブロック51でテストされた暫定指数部が上記の第1の
指数閾値範囲に含まれるとき、そのブロックの肯定出口
から出る。好ましい実施例では、ブロック51の肯定出
口から出た後、さらに2つのテストが行なわれる。これ
らのテスト、すなわちブロック53と54は、浮動小数
点演算機構(FPU)10の特定の構造と動作に応じて
必要となる。統合方式の異なる別の浮動小数点演算機構
では、本発明の主目的あるいは基本概念に影響を与える
ことなく、これらのステップが省略できる。
ステップ53では、ブロック51で暫定指数部の算出に
使ったオペランド指数データが古いがどうかテストが行
なわれる。この検査は、指数データが新しく、完了した
浮動小数点演算から得られたものであることを確認する
ためのものである。このデータが新しくない場合、指数
データが進行中の浮動小数点演算の結果から供給される
ものと仮定される。
ステップ54で、短精度RXタイプの浮動小数点算術演
算であるかどうかテストされる。かがる演算は、浮動小
数点演算機構(FPU)10のデータ・インターフェー
ス36(第5図)を通してデータをステージングするこ
とにより開始される。こういった演算では、演算開始と
同時に、オペランド全体がデータ・インターフェース3
6にステージングされる。オペランドは記憶/指数処理
機構34内の浮動小数点レジスタを通ってステージング
されずに、上記の演算実行機構に転送される。
FPU制御機構32が信号線49を介して閾値検査デー
タを得るには、FPUクロック・サイクルが1サイクル
余分に必要となる。したがって、短精度RXタイプの浮
動小数点演算用の指数データは、演算開始の1サイクル
後にFPU制御機構32が使用できる。FAオペランド
に対する閾値検査データは演算開始時に完全に使用可能
ではないので、妥当性応答の促進をIFPUサイクルだ
け遅延させなければならない。これとは対照的に良精度
RXタイプの演算では、連続する2FPUサイクル中に
オペランド・データがデータ・インターフェース36に
ステージングされ、この2FPUサイクルの最初のサイ
クル中に指数データが転送される。それに対応する良精
度RXタイプの演算は、2転送サイクルの最後のサイク
ルまで開始されず、その結果、信号IJI49上の閾値
検査データが信号線48上の閾値検査データと同時に、
浮動小数点演算の開始の1サイクル前に使用可能になる
指数データが新しく、かつ演算が短精度1”LXタイプ
のものではないと仮定すると、ブロック51の肯定出口
から出て、可能な最も早い時間に早期妥当性応答がもた
らされる。この時間をレベル1と名づける。
算術演算がテスト・ブロック50で合格せず、ブロック
51の否定出口またはブロック53もしくは54の肯定
出口から出ると仮定すると、上記の暫定指数部が浮動小
数点演算機構(FPU)10の記憶/指数処理機構34
から得られ、第2の指数閾値範囲[16,126]に突
き合わせてテストされる。第2の指数閾値範囲は、除数
がゼロの除算と負の数の開平演算以外のブロック56に
入るすべての演算に関係する。暫定指数部が第2の指数
閾値範囲に含まれない場合、あるいは、演算がゼロによ
る除算まはた負の数の開平である場合、演算の完了時に
レベル4の妥当性応答が供給される。
第1図で、出された命令がレベル1の応答であるかどう
か調べるどのテストにも失格した場合、ブロック56に
移り、そこで再度その命令がテストされ、それが加算ク
ラス演算に関するものであるかどうか判定される。加算
クラス演算でない場合は、ブロック57に移って、ゼロ
のオペランドを含む除算または負の数の開平演算である
かどうか判定される。命令がこのどちらの演算にも関係
しない場合、否定出口からブロック58に移る。
ブロック56で命令が加算クラス演算であると判定され
た場合も、ブロック56の肯定出口からXブロック58
に入る経路がある。すなわち、ブロック59で、加算ク
ラス演算が再度テストされ、それがゼロでない結果を生
成する有効加算であるかどうか判定される。有効加算の
場合は、ブロック59の肯定出口からブロック58に人
って、暫定指数部のテストを受ける。
ブロック58では、関係する演算の暫定指数部が範囲[
16,126]と突き合わせてテストされる。その範囲
に含まれる場合は、この演算からレベル2の妥当性応答
が生成される。レベル2は、レベル1の応答の後、レベ
ル4の応答の前に発生する。
ブロック59の否定出口から出るのは、演算がゼロのオ
ペランドを含む有効加算または有効減算の場合である。
この場合、関係するオペランドの暫定指数部がブロック
58の指数閾値範囲に含まれるなら、ブロック60の肯
定出口から出て、妥当性応答がレベル3に促進される。
レベル8の妥当性応答は、演算完了前、レベル2の応答
が使用可能となる時間より後に発生する。
ブロック57の肯定出口、あるいはブロック58または
60の否定出口から出た場合、演算は完了するまで実行
され、その後、演算完了後の通常の時間にレベル4の応
答が供給される。
次に第2A図、第2B図、第11A図、−第11B図を
参照すると、浮動小数点演算の実行に対する早期妥当性
応答の生成とタイミングが理解できる。第2A図および
第2B図では、FPU制御機構とデータ・インターフェ
ースは、依然として参照番号32と36で示しであるが
、浮動小数点演算機構(FPU)10の残りの部分はま
とめてブロック66として示しである。以下の説明では
、ブロック66を統合記憶/実行機構(C3EU’)と
呼ぶことにする。
第2A図において、FPU制御機構32は、いくつかの
パイプライン式レジスタ68ないし75を含んでいる。
これらのレジスタは、順次並列構造に配列されており、
その中を命令データが、統合記憶/実行機構(C5EU
 )66が行なう浮動小数点演算命令の実行と同期して
シフトされる。
このバイブライン式レジスタは、前記の各レベルの妥当
性応答に対応する多段シーケンスを定義する。この点に
関して、命令が出されたとき、その命令に関係する情報
は、まず第1のFPLJサイクル中にレジスタ68に記
憶される。このレジスタ68を「バイブ」レジスタと名
づける。次に、情報は「バイブ」レジスタ68から「ソ
ース」レジスタ69に並列にシフトされる。命令データ
は、ソース・レジスタに記憶された後、3つのレジスタ
70.71.72のうちの一つにシフトされる。
レジスタ70.71.72を、それぞれ「加算目的」レ
ジスタ、「乗算目的」レジスタ、「除算目的」レジスタ
と名づける。データは、出された命令を実行するのに必
要な演算に対応する目的レジスタにシフトされる。すな
わち、乗算命令の場合、命令データはソース・レジスタ
69から乗算目的レジスタ71に転送される。目的レジ
スタに続いて、一連の3つのレジスタ73.74.75
がある。レジスタ73.74.75は、それぞれ「書込
みステージ」レジスタ、「書込み目的」レジスタ、「書
込みバックアップ」レジスタ、と呼ばれる。データは、
連続する3FPUサイクルの間にこの3つのレジスタ中
に配列される。
第11A図および第11B図に示す4組の波形図を見る
とわかるが、情報は連続するFPUサイクル中にバイブ
ライン式レジスタを通って反復転送される。特定の実施
例の環境では、各FPUサイクルは、4つのサブサイク
ルO51,2、Lに細分される。命令バイブライン・シ
ーケンスの第1のバイブ・サイクルでは、命令情報がバ
イブ・レジスタ68に保持される。バイブ・サイクルの
しサブサイクルの終り(時間TL)に、命令情報がソー
ス・レジスタに転送され、ソース・サイクル中そごに保
持される。ソース・サイクルのしサブサイクル中に命令
情報は目的レジスタ70.71.72のうちの適切なレ
ジスタに転送される。
命令情報は関連する演算が終了するまで目的レジスタ7
0.71、または72内に保持される。演算には数FP
Uサイクルかかるが、それらのサイクルは目的サイクル
と呼ばれる。演算の終了時に、命令情報が当該の目的レ
ジスタから書込みステージ・レジスタ73にシフトされ
、1ステージ・サイクルの間そこに保持される。
好ましい実施例の特定の環境では、関連する命令のソー
ス・サイクル中に適格な演算に対するレベル1の早期妥
当性応答がもたらされる。事前正規化が不要の場合、最
初の目的サイクル中にその命令に対するレベル2の妥当
性応答がもたらされる。事前正規化サイクルが必要な場
合、後続の目的サイクルでレベル2の妥当性応答がもた
らされる。第1または第2の妥当性応答レベルに該当し
ない命令は、ステージ・サイクル中にレベル3の妥当性
応答をもたらすことができる。レベル4の妥当性応答は
省略時の妥当性応答条件に対応するもので、レベル1.
2、または3の早期妥当性応答を生成せずに命令が書込
み目的レジスタ74に到着した場合に与えられる。
第2A図および第2B図の構成図に戻ると、出された命
令は、命令バス24を介してFPtJPt様構32に供
給される。第2A図において、命令バス24は、命令コ
ード・バス24aとオペランド・アドレス・バス24b
からなる。出された命令に対応する命令コードが命令コ
ード・バス24aを介してバイブ・レジスタ68の命令
コード(INSTR)フィールドに供給される。統合記
憶/実行機構(SEU)66内の特定の浮動小数点レジ
スタ(FPR)に対応するアドレス情報がアドレス・バ
ス24b上に供給される。命令がRXタイプでない場合
、バイブ・レジスタのFAフィールドに入力される、第
1のオペランドを保持する浮動小数点レジスタのアドレ
スと、バイブ・レジスタのFBフィールドに入力される
、第2のオペランドを保持する浮動小数点レジスタのア
ドレスと、バイブ・レジスタのFTフィールドに入る、
その命令の結果が記憶される浮動小数点レジスタのアド
レスがFPRアドレスとなる。命令がRXタイプの場合
は、FAアドレスとFTアドレスだけがバイブ・レジス
タに供給される。
バイブ・レジスタ68とソース・レジスタ69は、とも
に命令のFA、FB、FT、およびlN5TRの各フィ
ールドを記憶し、また応答妥当(RV)ビットを記憶す
る。RVビットは、命令が演算実行モジュール38.4
0.42のうちの一つを必要とする算術命令である場合
に、命令の命令コード(INSTR)を受けてデコーダ
80が供給する。RVビット、FPRアドレスおよび命
令コードを含む情報がパイプ・レジスタ68からソース
・レジスタ69に転送されるが、ソース・レジスタ69
からは結果アドレスFTとRVビットだけが目的レジス
タ70,71.72のうちの一つに転送される。したが
って、目的レジスタとは、浮動小数点演算の結果を書き
込むべきFPRレジスタである。演算の実行段階が完了
すると、RVフィールドとFTフィールドは書込みステ
ージ・レジスタ73、書込み目的レジスタ74、書込み
バックアップ・レジスタ75中を順次転送される。この
時点では演算は完了しておらず、なお事後正規化が必要
なこともある。
オペランドを浮動小数点レジスタ82に入れるには、通
常FPFLアレイ・マルチプレクサ84を介して行なう
。周知の通り、浮動小数点レジスタは8個の64ビツト
・レジスタを含んでおり、それぞれが短精度オペランド
を記憶するための上位32ビツト・セクションと、良精
度オペランドを記憶するための下位32ビツト・セクシ
ョンに分かれている。オペランドが浮動小数点レジスタ
に入るとき、オペランドの符号と指数部がFPU制御機
構32に供給される。さらに、ゼロ検査回路85が、小
数部のビットB8ないしB31についてのゼロ・ビット
Z1と、小数部のビットB32ないしB63についての
ゼロ・ビットZ2の、1対のFPR小R小数ロ・ビット
を出力する。小数部の各部分の値がゼロの場合、それに
対応するゼロ・ビットがセットされ、そうでない場合は
、そのゼロ・ビットがリセットされる。このとき浮動小
数点レジスタ82に書き込まれているオペランドのFP
Rアドレスは、書込み目的レジスタ74中のFTアドレ
スである。浮動小数点レジスタが書き込まれた後のサイ
クルで、書込みバックアップ・レジスタのアドレスがF
PU制御機構32内のレベル1符号/ゼロ/指数レジス
タ・アレイ87に供給される。レベルルジスタ・アレイ
87は、アドレス可能レジスタ・アレイであり、あるオ
ペランドの浮動小数点レジスタ・アドレスに対応するレ
ジスタ・アドレスにそのオペランドに対する閾値検査デ
ータを含んでいる。
命令が出されると、その命令は浮動小数点演算機構(F
PU)10に供給され、データをまずパイプ・レジスタ
68に入れる。パイプ・レジスタ68では、1対のオペ
ランドが送られてくると当該のFPU演算実行機構に合
図することにより、すべての演算が始まる。パイプ・レ
ジスタ68内にある浮動小数点レジスタ・アドレスと命
令コード(INST)”t)フィールドの内容が、通常
の競合回避論理回路89に供給され、そこで浮動小数点
レジスタ、内部FPUバス、演算実行機構などのFPU
資源に対するアクセスが直列化される。
パイプ・レジスタ68内の命令の命令コード・フィール
ドが示す演算の実行にFPU資源が使用できる場合、適
切な処理開始信号が演算実行機構に送られ、パイプ・レ
ジスタ68内の情報がソース・レジスタ69に転送され
る。ソース・レジスタ69は、1サイクル分だけの命令
情報を保持し、主としてどの演算実行機構がオペランド
・バスの使用権を持っているかを示すのに使われる。事
前正規化が不要な場合、ソース・サイクルの4つのサブ
サイクルで、FAレジスタとFBレジスタの内容を当該
の演算実行機構に転送してその演算実行機構の演算を開
始させるのに充分である。次にFTフィールドに入って
いる結果アドレスが適切な目的レジスタに渡される。目
的レジスタ71ないし73は、演算実行機構から結果が
完了したとの信号を受は取るまで、そのアドレスを保持
する。
次に結果アドレスが書込みレジスタ73ないし75に渡
され、そこで結果を浮動小数点レジスタに記憶するのを
制御するために使われる。
特に図示してはいないが、上記のタイプのサブサイクル
FPUクロックを生成するには、もちろん通常の回路を
使用できる。さらに、自明のことながら、バイブライン
式レジスタ中での情報の転送は、バイブラインの対応す
るステージについて得られる条件に応じて、FPUクロ
ックの適切なサブサイクルを各レジスタにゲートするこ
とによって実現することができる。
RVビットは、潜在的な各早期妥当性応答レベルでその
妥当性応答が早いレベルで供給されたかどうかを示すた
め、バイブライン・レジスタ中で命令情報に随伴する。
妥当性応答が供給されると、FtVビットがリセットさ
れ、それ以降に同じ命令に対して応答が生成されるのを
抑制する。すなわち、エミュレーション援助処理機構(
EAP)14に妥当性応答を供給しなければならない命
令は、バイブ・レジスタ68内でデコーダ80によりそ
のRVビットがセットされる。早期妥当性応答が生成さ
れると、その命令がバイブライン式レジスタ内のどこに
あろうと、そのFLYビットはリセットされる。命令が
書込み目的レジスタ74に到達し、RVビットがリセッ
トされていない場合、レベル4の妥当性応答が与えられ
る。命令処理機構(IPU)12は、エミュレーション
援助処理機構14によって活動開始されるまで、別の命
令を出すことができないので、バイブライン式レジスタ
内に2つの命令が人っている場合、それらが同時に妥当
性応答を生成できないことが保証されている。当業者に
は自明の通り、これによって、各応答レベルに必要な合
計のロックアウト制御部が減少する。
レベル1の妥当性応答の生成 次に、本発明に基づきレベル1の妥当性応答がどのよう
にして生成されるのかを理解するため、第2A図、第2
B図、および第11A図を参照する。まず第11A図に
おいて、レベル1応答と記されている波形群を考える。
レベル1の応答を生成する際は、その命令のソース・サ
イクルのT1と同時に、FPU制御機構32によって、
「早期応答」と記されているレベル1応答の波形が生成
される。好ましい実施例では、エミュレーション援助処
理機構14の動作により、FPU制御機構32が早期妥
当性応答を生成した後の第2サイクルのT2中に呂され
た命令に続く次の可能な命令が生成される。したがって
、命令処理機構(IPU)12とエミュレーション援助
処理機構14からなる命令発行部は、レベル1の応答を
受けると、レベル1応答シーケンス中の第2の目的サイ
クルの時間T2から後、次の命令を出すことができる。
第2A図および第2B図において、早期妥当性応答の処
理は、浮動小数点演算機構(FPU)10に浮動小数点
演算命令が到着すると、開始される。その命令がデコー
ダ80でデコードされ、それが条件コードの更新または
割込みを起こさなければならないタイプのものかどうか
が判定される。
そういったタイプのものである場合、rtVビットが1
個生成され、オペランド・アドレス(FAとFB)、結
果アドレス(FAまたはFT)、および命令コード(I
NSTR)と共にバイブ・レジスタ68のRVフィール
ドにラッチされる。当然のことながら、I”LXタイプ
の命令の場合は、FAフィールドがソース・レジスタと
目的レジスタを兼ね、FBフィールドは充填されない。
バイブ・レジスタ68内の命令が、その命令を実行する
のに必要な資源が使えるかどうかを競合回避論理回路8
9が判定するのを待つ間、レベル1符号/ゼロ/指数レ
ジスタ・アレイ87にバイブ・レジスタ68内の2つの
ソース・アドレスFAとFBがアクセスする。これは、
その命令のバイブ・サイクルのT1とT2中に行なわれ
る。
アレイ87のFA位置とFB位置にあるデータは、先に
説明したように前の命令の結果によってそこに入れられ
たものであり、その命令が浮動小数点レジスタに書き込
まれている間に、その閾値検査データが統合記憶/実行
機構(C5EU)66から転送された。バイブ・レジス
タ68内の命令がI’tXタイプのものである場合、F
Bオペランドは、オペランド・パス23からデータ・イ
ンターフェース36内のデータ・レジスタ94を介して
得られる。データ・インターフェース36内のゼロ検査
回路92は、第2のオペランドに関する小数部ゼロ情報
を小数部ゼロ・ビットZ1と22の形で供給する。
さらに、バイブ・レジスタ内の命令コード(INSTR
)フィールドに人っている命令コードが命令デコーダ1
06aに供給され、そこでデコードされて、制御情報D
IV、M、ADD、L/S。
S/C,RX  OP、5QrtTをもたらす。なお、
DIV、M、ADDはそれぞれ除算命令、乗算命令、加
算クラス命令を表わす。L/Sは、それがセットされて
いる場合は良精度演算を示し、リセットされている場合
は短精度演算を示す。S/Cは、減算または比較演算に
対応する。RX  OPは、セットされている場合、F
LX演算を表わす。5QrtTは、セットされている場
合、開平演算を表わす。
レベル1の妥当性応答を判定するための閾値検査データ
の使い方を第8図に示す。図かられかるように、レベル
1符号/ゼロ/指数レジスタ・アレイ87は、たとえば
単一書込みアドレス(WRADD)ボートを有する記憶
素子から構成することができ、この記憶素子は、書込み
バックアップ・レジスタ75のFTフィールドのアドレ
スに対応する位置に今完了した演算に対する閾値検査デ
ータを記憶する。これは、その命令の実行が完了したサ
イクルの次のサイクルの時間TOに、通常の書込み許可
信号とFTフィールドの内容を供給することによって行
なわれる。レベルルジスタ・アレイ87は次に読取り可
能となり、パイプ・レジスタ68のFAフィールドとF
BフィールドがT1ないしT2にレベルルジスタ・アレ
イ87に供給される。パイプ・サイクルの時間T1にF
AアドレスとFBアドレスに記憶されていた閾値検査デ
ータが、それぞれレベルルジスタ・アレイ87の読取リ
ポートA(RPA)および読取りボートB (RPB 
)を介して供給される。命令がRX演算(RX  OP
)に関係するものである場合、マルチプレクサ94が、
データ・インターフェース・ブロック36からのRX閾
値検査データをゲートする。閾値検査データの7ビツト
のオペランド指数がレベル1閾値検査回路95に入り、
一方、符号とゼロ・ビット・データは有効加算テスト回
路96に供給される。
レベル1閾値検査回路95は、7ビツト加算器97、加
算器97の出力の上位3ビツト(0,1,2)を時間T
oでラッチする3ビツト・レジスタ98、マルチプレク
サ99、加算器97の繰上げ状態(C)を時間TOでラ
ッチするレジスタ101、乗算組合せ論理回路102、
インバータ103、デジタル・ラッチング比較機構10
5、比較機構107、加算組合せ論理回路108、およ
びORゲートから構成される。
第8図において、バイブ・レジスタ68内の出された命
令に対する両方のオペランドの2つの7ビツト指数が7
ビツト加算器97に供給される。
これらの指数の供給源は、演算のタイプによって異なる
。演算が非RXタイプのものである場合、有効加算テス
ト回路96はレベルルジスタ・アレイ87のRPBボー
トから第2の指数を供給する。そうでない場合は、命令
デコーダ106aによってRX  OPビットがセット
され、それによって有効加算テスト回路96がデータ・
インターフェース36からの指数データを供給する。
演算が乗算の場合、命令デコーダ106aからのADD
ビットはリセットされ、Mビットがセットされる。AD
Dビットがリセット状態であると、加算器97は通常の
やり方で7ビツトの指数を加算する。ADDビットがリ
セットされると、さらにマルチプレクサ99が加算器9
7の出力の上位3ビツトをレジスタ98に供給する。加
算で繰上げが生じる場合、加算器97の繰上げ(CO)
ボートからのビットがレジスタ101に供給される。
レジスタ101の出力は、繰上げ(C)ビットと呼ばれ
る。乗算では、レジスタ98と101の内容がデコーダ
106aからのMビットおよびL/Sビットと共に、乗
算組合せ論理回11102に供給される。さらに、プロ
グラム試況ワード(PSW)の下位桁あふれマスク(U
M)も乗算組合せ論理回路102に供給される。乗算で
は、Mビットがセットされ、L/Sビットの状態が、良
精度乗算と短精度乗算のどちらを実行するのかを示す。
乗算組合せ論理回路102は、Mビットが乗算であるこ
とを示すとき使用可能となる。この場合、乗算組合せ論
理回路102は、乗算境界外れ(MOOB)信号を供給
する。この信号は、第1表のいずれかの項が真の場合に
セットされる。
第  1  表 互    −註−J〜 C・0         指数桁あふれ一四1・UM 
        指数下位桁あ不れC・0・T・2・■
T−U b+     定精度範囲下限C・0・工・L
/S−IJM      長精度範囲下限第1表におい
て、C・0はオペランド指数の和が192以上であるこ
とを示す。乗算に関与する余分のバイアス量64を消去
すると、この項は、指数の和が127を超えることを予
測し、それを短精度および良精度の乗算指数閾値範囲の
上限より上に設定することが理解できる。
第2の項で−T℃−7■−Mは、指数の和が64未満で
あり、指数下位桁あふれマスク(LIM)がないことを
示す。この場合も、浮動小数点乗算に関して指数を加算
することにより導入された余分のバイアス量64を除去
すると、得られる指数は正にはなり得ないことがわかる
。第1表の3番目と4番目の項は、乗算によって生じた
余分のバイアス量64を考慮に入れつつ、それぞれ短精
度および良精度の乗算指数閾値範囲の下限を超えたかど
うか検査する。
第1表のいずれかの項が真であれば、乗算組合せ論理回
路102は乗算境界外れ信号(MOOB)をセットする
。逆に第1表のどの項も真でなければ、乗算境界外れ信
号がリセットされる。乗算境界外れ信号はインバータ1
03によって反転され、正論理検出信号MULT  W
IB(乗算境界内信号)をもたらす。正論理検出信号が
セットされると、バイブ・レジスタ68内の命令に対す
る乗算結果の指数は、第1の指数閾値範囲に含まれるこ
とになる。
パイプ・レジスタ68内の命令が加算クラス命令の場合
、デコーダ106aはADD信号をセットする。加算ク
ラス演算が減算または比較演算である場合、デコーダ1
06から供給されるS/C信号もセットされる。加算ク
ラス命令がバイブ・レジスタ内にあるとき、ADD信号
がセット状態であると、加算器97はその演算を反転し
、減算器として働く。セットされたADD信号は、加算
器の繰上り(CI)ボートにも供給され、その結果、加
算器97が2の補数マシンとして有効に動作する。当業
者なられかるように、指数の2の補数加算によって繰上
げが起こるのは、2の補数形式の数の絶対値が補数化さ
れていない数の絶対値よりも小さい場合だけである。し
たがって、この繰上げを使って加算クラス演算で2つの
指数のどちらが大きいかを識別することができる。大き
い方の指数の選択は、マルチプレクサ99がレジスタ1
01内の繰上げ信号(CO)の状態にもとづいて行なう
。したがって、加算クラス演算では、ADD信号と繰上
げ信号(Co)が共にセットされると、マルチプレクサ
99は、大きい方の指数の上位3ビツトをレジスタ98
に供給し、選択された指数のすへてのビットをデジタル
・ラッチング比較機構105に供給する。デジタル・ラ
ッチング比較機構105では、大きい方の指数が評価さ
れ、すべて1からなるかどうか調べられる。この比較の
結果が、ソース・サイクルの時間Toでデジタル・ラッ
チング比較機構105によってラッチされる。ソース・
サイクルの時間TOで、大きい方の指数の上位3ビツト
が、比較機構107内で値16のデジタル表示と突き合
わせて比較される。加算組合せ論理回路108が、比較
機構105と107の出力を比較し、比較の結果、指数
が加算クラス演算に対する第1の指数閾値範囲に含まれ
ることが示された場合、加算クラス境界内信号(ADD
  WIB)を活動化させる。
レベル1閾値検査回路95の出力は、レベル1境界内信
号(WIB)としてORゲート109を経て供給される
パイプ・レジスタ68内の命令が加算クラス命令の場合
、有効加算テスト回路96がADD信号によって活動化
される。有効加算テスト回路96は、レジスタ112と
有効加算論理回路113で構成される。レジスタ112
は、各オペランドごとにそれに対する符号ビットとゼロ
・ビットな受け取る。各オペランドに対するZ1ビット
とZ2ビットがゲート114および115内で組み合わ
される。ゲート114は、式ZA=(Z、・Z2)+(
UT’H−zt)から求められる信号ZAをもたらす。
同様に、信号ZB=(Zt・Z2)+(LIs−Z、)
は、オペランドFBの小数部がゼロであるか否かを示す
。符号ビット8AとSBは、その通常の値を保持する。
(すなわち、オペランドが正の数の場合、このビットは
ゼロのデジタル値をとる。)以下の説明では、ZAとZ
Bを「ゼロ・ビット」と呼び、SAとSBを「符号ビッ
ト」と呼ぶことにする。最後に、プログラム状況ワード
(psw)からの有効数字マスク(SM)とデコーダ1
06からのS/C信号も、レジスタ112中に捕捉され
る。レジスタ112内に捕捉された信号は、有効加算論
理回路113に供給される。
この有効加算命令回*113は、第2表にもとづいて動
作する。
第  2  表 (その他すべての場合)        O第2A図お
よび第2B図に示すように、有効力ロ算テスト回路96
から供給されるA信号は、演算が上段で定義した有効加
算であることを示す。
第2表の1行目で、プログラム状況ワード(PSW)内
の有効数字マスク(SM)の値がゼロで、両方のオペラ
ンドがゼロのとき、Aビットがセットされる。この場合
、結果の小数部は確実にゼロであると予測できるが、有
効数字マスク(S M )ビットもゼロであるため、有
効数字例外にはならない。したがって、早期の妥当性応
答が、予想される条件コードと共に供給できる。第2表
の次の4行は、基本的に、その結果の小数部がゼロでな
いと予測できる、有効加算を定義するものである。
たとえば、第2表の2行目は、符号が反対で小数部がゼ
ロでない2つのオペランドを組み合わせる減算である。
この場合、結果オペランドの小数部は絶対値が2つのオ
ペラン、ドの和に等しく、小数部の符号がマイナスであ
ることがわかる。
ここで第2A図に戻ると、レベル1閾値検査回路95の
出力と有効加算テスト回路96の出力が、レベル1応答
トリガ回路116に供給される。レベル1応答トリガ回
路116は閾値検査回路95からレベル1境界内信号(
WIB)を受は取り、有効加算テスト回路96からA信
号を受は取り、パイプ・レジスタ68内の命令からKV
ビットを受は取る。第9図に示すように、レベル1応答
トリガ回路116は、応答トリガ論理回路118とリセ
ット可能ラッチ119から構成される。応答トリガ論理
回路118は、式(1)にもとづいてレベル1の妥当性
応答を供給する。
レベル1応答= (ADD 5T−A−WIB−PIP
E RV)+(MULT 5T−WIB−PIPE R
V)  (1)式(1)の第1項が活動化されるのは、
パイプ・レジスタ68内の命令が、その結果がゼロでな
いと予測され、かつその暫定指数部が加算クラス合金に
対する第1の指数閾値範囲に含まれる有効加算命令のと
きである。式(1)の第2項が活動化されるのは、パイ
プ・レジスタ68内の命令が、その暫定指数部が良精度
演算または短精度演算に対する第1の指数閾値範囲に含
まれる乗算命令のときである。レベル1妥当性応答は、
A信号と境界内信号(WIB)が共にソース・サイクル
のサブサイクルTO(第11A図)で活動化されるのを
受けて、応答トリガ論理回路11〜8によって生成され
る。したがって、TOサブサイクルでA信号および境界
内信号とほぼ同時に、応答トリガ論理回路118によっ
てラッチされないレベル1応答が活動化される。この応
答信号は、T1サブサイクルでリセット可能ラッチ11
9によってラッチされ、ソース・サイクルの次の第1の
目的サイクルのT1までそこに保持される。
第2A図に戻ると、ラッチされたレベル1応答がORゲ
ート120に供給される。このORゲート120は、別
のORゲート121に接続されている。レベル1応答が
生成されると、Ortゲート120と121を通過して
、レベル1に早期妥当性応答として供給される。
第11A図のレベル1応答の波形を見るとわかるように
、レベル1の妥当性応答が生成されると、ソース・サイ
クルのT1サブサイクルの始めにラッチ119の動作に
よってそれが活動化され、ソース・サイクルの後の目的
サイクルのT1サブサイクルの始めに非活動化される。
レベル2およびレベル3の応答 次に第2B図、第11A図および第11B図を参照する
と、妥当性応答のレベル2またはレベル3についての促
進に対する閾値検査データは、統合記憶/実行機構(C
3EU )66の暫定指数部レジスタ(ICR)125
.126.127がら得られる。暫定指数部レジスタの
内容は、浮動小数点演算中に統合記憶/実行機構(SC
EU)66内の回路によって計算された暫定指数部であ
る。
指数部計算回路は通常のものであり、したがって本明細
書では図示も説明もしない。
浮動小数点演算では、暫定指数部は通常オペランド小数
部の算術演算の前に計算されるので、実行すべき命令に
ついての暫定指数部は、適切な演算実行機構に対する開
始信号が競合回避論理回路89によって生成されるとき
までに、計算されて暫定指数部レジスタの1つに入れら
れている。開始信号は、FPU計算ブロック内の演算実
行機構を活動化するが、マルチプレクサ129を構成す
るのにも使われる。マルチプレクサ129は、選択され
た暫定指数部レジスタからの暫定指数部をレベル2およ
び3閾値検査回路130に供給する。
好ましい実施例では、閾値検査回路130は統合記憶/
実行機構(C5EU )66中に含まれる。
ただしこれは設計上の一選択にすぎない。別の設計では
、レベル2および8閾値検査回路130を、PFU制御
機構32中に配置することもできる。
レベル2および3閾値検査回路130は、レベル1閾値
検査回路95と機能的に同等な回路な実現するものであ
り、暫定指数部が第2の指数閾値範囲に含まれる場合、
暫定指数部境界内信号(WIB)を供給する。
さらに、有効加算テスト回路96と基本的に同等の有効
加算テスト回路131のあるレベルが、浮動小数点演算
機構10のオペランド・バス44から小数部ゼロ・ビッ
トと符号ビットを受は取る。
これらの信号は、通常加算クラス演算実行機構42内で
生成される。有効加算テス゛ト回路131は、第2表に
もとづいてA信号を出力し、このA信号はその暫定指数
部に対する実行開始信号および境界内信号(WIB)と
−緒に、レベル2応答トリガ回路132およびレベル3
応答トリガ回路133に供給される。
レベル2応答トリガ回路132は、ソース・サイクルの
後の最初の目的サイクルのT1の始めに、レベル2応答
を供給する。レベル2応答は、第3表の各項にもとづい
て生成される。
裏−」L−入 レベル2応答の項 1               条   件(ICW
IB−DIV 5T−S(JRT−ZIT−非セロテ割
る5OURCE RV) (ICWIB−DIV 5T−SQRT−SA・   
正の数の開平5OURCE RV) (ICWTB−ADD 5T−A−SOURCE RV
)  有効加算・非セロ(ICWIB−MULT 5T
−SOURCE RV)  乗算境界内第1項は、その
暫定指数部が第2の指数閾値範囲に含まれ、除数がゼロ
でない除算に対する応答を生成させる。第2項は、正の
数に関する開平に対するレベル2応答をもたらす。第3
項は、第1図の判断ブロック53と54でレベル1応答
の条件に該当しなかった有効加算に対するレベル2応答
をもたらす。第4項は、その暫定指数部が第2の指数閾
値範囲に含まれるが、第1図のステップ51.53.5
4のテストにすべて失格した乗算に対するレベル2応答
をもたらす。
レベル2応答トリガ回路132は、レベル1応答トリガ
回路116と同じやり方で、ラッチされた形式およびラ
ッチされない形式のレベル2応答を供給する。ラッチさ
れたレベル2応答は、ORゲート120と121を通過
して、妥当性応答信号を条件づける。
レベル3応答は、加算クラス演算、すなわち有効減算ま
たは結果がゼロの有効加算の場合、有効数字マスク(S
M)が解除された(すなわちSM=0の)とき、レベル
3応答トリガ回路133によって供給される。好ましい
実施例では、レベル3応答トリガ回路183はステージ
・サイクルのT1中に活動開始される。加算クラス演算
の場合、ステージ・サイクルは、バイブ・サイクルから
3つ後のサイクルである。レベル3応答は、適切な目的
レジスタ中のRVがセットされたままのとき有効に活動
開始される。好ましい実施例では、適切な目的レジスタ
のRVビットの状態は、レベル2有効加算テスト回路1
81の出力をラッチすることにより与えられる。レベル
3応答トリガ回路133は、適切な目的レジスタ内のR
Vビットの実際の状態を検出することにより、この機能
を重複できることは明らかである。
最後に、バイブライン式レジスタ中の命令が早期妥当性
応答をもたらさずに書込み目的レジスタ74に移る場合
、その命令の演算シーケンスが完了したとき、通常通り
レベル4応答トリガ回路135が妥当性応答をもたらす
。レベル4応答は、レベル4応答トリガ回路135から
ORゲート121を経て直接、妥当性応答として供給さ
れる。
容易にわかるように、応答トリガ回路116.132.
133.135は、基本的に適切なバイブライン式レジ
スタ内のRVビットの状態によってゲートされる。した
がって、RVビットが妥当性応答の生成とほぼ同時にリ
セットされることが重要である。バイブライン式レジス
タ中のRVビットは、応答トリガ回路116.132.
133のうちの1つがあるレベルの応答を生成したとき
、リセットされる。このため、それ以降、応答は生成さ
れなくなる。たとえば、レベル1応答トリガ回路116
がレベル1応答を活動化すると、ORゲート120の出
力がORゲート121だけでなく、ソース・レジスタ6
9のRVフィールドを制御するゲーテインク回路にも供
給される。図には示してないが、ソース・レジスタのK
Vフィールド用のゲーティング回路は、好ましい実施例
では通常のラッチから構成され、その人力ボートがバイ
ブ・レジスタのRVフィールドの内容を受は取る。この
ラッチは、ゲートされたTLツクックによってクロック
される。TLツクック・ゲートは、ORゲート120か
ら出力されるリセット信号の状態によって制御される。
好ましい実施例では、ORゲート120から出力された
リセット信号が正の状態のとき、各バイブライン式レジ
スタのR■フィールドがリセットされる。したがって、
いずれかのバイブライン式レジスタ内でRVビットがセ
ットされている場合、当然のことながら、関連する命令
については妥当性応答は生成されず、したがって次の命
令は出されないことになる。このため、l’tVビット
がセットされた命令がレジスタ内にある限り、バイブラ
イン式レジスタは後続の命令に対してロックされる。ま
たバイブライン式レジスタのどのレジスタのRVビット
もセットされていないとき、バイブライン式レジスタは
有効にアシロツクされる。
早期妥当性応答と順序を合わせた条件コードのセツティ
ングおよび割込み要求の生成は、第10図、第11A図
および第11B図を参照すれば理解できる。先に述べた
ように、条件コードは、加算クラス演算の影響を受ける
。したがって、レベル1またはレベル2の早期妥当性応
答をもたらす有効加算では、結果の予想出力にもとづい
て条件コードを生成しなければならない。レベル1また
はレベル2の早期妥当性応答を生成する有効加算用の1
対のデコーダが、単一のブロック170で示しである。
レベル1条件コード・デコーダおよびレベル2条件コー
ド・デコーダは、第2A図のレベル1およびレベル2応
答トリガ回路で使用できる信号と同等の信号を受けて同
等に動作する。
すなわち、レベル1条件コード・デコーダは、テスト回
路が使用する2B信号およびSA倍信号入力として受は
取る。レベル2条件コード・デコーダは、レベル2有効
加算テスト回路131が使用する対応する信号を受けて
動作する。レベル1およびレベル2のデコード動作は、
次式で記載される。
B=ZB−5A       (2) C=ZB−5A       (3) レベル3条件コード・デコーダは、浮動小数点演算機構
(FPU)10の結果バス43を介して結果の小数部と
符号を受は取り、第4表にもとづいて条件コードを生成
する。
第  4  表 ZRF  5FtF  B  C 第4表で、項ZFtFは結果の小数部オール・ゼロ・ビ
ットであり、項SRFは結果の小数部符号ビットであり
、どちらも加算クラス演算実行機構42から結果バス4
3を介して得られる。出力項BとCは、2ビツトの条件
コードを定義する。
条件コード・デコーダ170と171の出力は、それぞ
れ3つのANDゲート172.173.174を経て供
給される。これらのANDゲートの出力端子は単一のO
FLゲート175に結合されている。ORゲート回路1
75の出力は、条件コード・レジスタ176にラッチさ
れ、3状態ドライバ回路177に供給される。3状態ド
ライバ回路177の出力端子は、別の3状態ドライバ回
路179と共通の2ビツト幅のバス178に結合されて
いる。3状態ドライバ回路179は、妥当性応答がレベ
ル4で供給される場合、条件コードを供給する。3状態
ドライバ177と179の出力は、条件コードとしてエ
ミュレーション援助処理機構(RAP)14に供給され
る。
割込み要求が、レベル3の早期妥当性応答と同期してA
NDゲート180によって生成される。
ANDゲート180は、加算実行機構47から結果小数
部オール・ゼロ・ビットZRFを受は取り、プログラム
状況ワード(psw)から有効数字マスク(SM)を受
は取り、また書込みステージ書込みゲート信号を受は取
る。書込みステージ書込みゲート信号は、実行を完了す
べき命令が加算クラス演算命令のとき通常通り生成され
る。たとえば命令が比較命令の場合、書込みステージ書
込みゲート信号は非活動化され、割込み要求は抑制され
る。ANDゲート180の出力は、割込み要求レジスタ
182に供給され、割込み要求レジスタ182の出力は
38態ドライバ回路183に送られる。3状態ドライバ
回路183の出力端子は、エミュレーション援助処理機
構(EAP)14につながる割込み要求バス184に通
常通り接続されている。3状態ドライバ回路185も割
込み要求バス184に接続され、正しい条件が得られか
つ今実行を完了したばかりの演算に対して以前の割込み
要求が生成されていないとき、通常通りレベル4で割込
み要求信号を生成するようになっている。
ANDゲート172.173.174はぞれぞれラッチ
190.191.192の出力によって活動化される。
ラッチ190,191.192は、それぞれラッチされ
たレベル1、レベル2およびレベル3の妥当性応答を受
は取るように接続されている。このため、それぞれの早
期応答レベルで生成される条件コードの供給とそのレベ
ルに対する適切な妥当性応答信号が同期される。たとえ
ば、第11A図のレベル1応答の波形で、OFtゲート
120に入力されたラッチされたレベル1の妥当性応答
を表わす早期妥当性応答の波形220は、ソース・サイ
クルのT1サブサイクル以降、エミュレーション援助処
理機構(EAP)14に供給される。(また、ラッチさ
れないレベル1の妥当性応答は、波形220の破線部分
221で表わすように、同じサイクルの時間TOで活動
化されることにも留意されたい。)早期妥当性応答(波
形220の実線部分)をエミュレーション援助処理機構
14が受は取ると、エミュレーション援助処理機構14
は、波形222の正の部分で定義される時間内に条件コ
ード信号と割込み要求信号を抽出する。条件コードは3
状態ドライバ回路177を経てエミュレーション援助処
理機構14に供給される。3状態ドライバ回路177は
、ソース・サイクルのT2でラッチ190によって活動
化されるレベル1応答によって活動開始される。ただし
、条件コード自体が3状態ドライバ回路177に供給さ
れるのは、ソース・サイクルのTLでANDゲート19
5が活動開始されてからである。すなわち、条件コード
信号(波形224)は、ソース・サイクルの最終サブサ
イクル中に条件コード・バス178を介してエミュレー
ション援助処理機構14に出力され、エミュレーション
援助処理機構14の抽出期間(波形222)中にエミュ
レーション援助処理機構14による抽出に使用できる。
3状態ドライバ回i!8177は、レジスタ198がク
ロックされると、ソース・サイクルから2つ後のサイク
ルのTOでリセットされ、波形224を遷移225で降
下させる。
3状態ドライバ回路179と185は、早期妥当性応答
が供給されるとき、プッシュプル・ドライバ回路213
によって使用禁止にされる。3状態ドライバ回路179
と185は、条件コード・パスと割込み要求バス上の信
号状態を整定させるため、3状態ドライバ回路177と
183が活動開始される前に使用禁止になる。これは、
第11A図のレベルl応答の波形で波形226として示
しである。プッシュプル・ドライバ回路213は、ラッ
チされない応答がORゲート221を経てORゲート2
12に供給されることにより、できるだけ早い時間に活
動化される。このため、プッシュプル・ドライバ回路2
13は、ソース・サイクルの始めに浮動小数点レジスタ
・デゲート信号を出力することができる。レジスタ21
0と211は、ソース・サイクルの後のll72サイク
ルの間、ラッチされた応答信号をラッチし、それによっ
て、早期妥当性応答と可能な条件コードがエミュレーシ
ョン援助処理機構(EAP’)14に供給される間中ず
つと、3状態ドライバ回路179と185はデゲートさ
れたままとなる。
最後に、レベル1応答の波形は、早期妥当性応答の生成
後に命令が波形226を出すと浮動小数点演算機構(F
PU)10が予想できる最も早い時間を示す、波形22
7を含んでいる。
第11A図のレベル2応答の波形および第2A図の回路
を調べると、レベル1の早期妥当性応答について今説明
した信号シーケンスが、IFPUサイクルだけ時間的に
遅れていることが確認できる。
レベル3応答の波形は、可能な割込み要求が生成できる
のはレベル3の間だけである点が興味深い。この点に関
して、割込み要求ドライバ回路183は条件コード・ド
ライバ回!!8177と同じやり方で活動開始される。
したがって、レジスタ182から3状態ドライバ回路1
83に入力される割込み要求線の状態が、割込み要求パ
ス上の信号を決定する。ソース・サイクルの後の最初の
目的サイクルの完了時に、結果の小数部が加算クラス演
算実行機構42によって浮動小数点演算機構(FPU)
10の結果バス43上に供給され、統合記憶/実行機構
66から利用できる。このとき、ANDゲート180の
出力は、結果の小数部とプログラム状況ワード(psw
)中の有効数字マスク(SM)の状態に応じた状態を取
る。結果の小数部がすべてゼロで、かつ有効数字マスク
がセットされている場合、ANDゲートの出力が活動化
される。活動化された出力は目的サイクルの時間TLで
レジスタ182に捕捉され、ステージ・サイクルの後の
最初のサイクルまで、ドライバ回路183に割込み要求
パスをドライブさせる。
レベル4応答の波形は、18Mシステム/370が浮動
小数点演算の完了時にどのようにして非早期妥当性応答
を供給するかを示すために示したものである。
以上、本発明を具体的に好ましい実施例を参照しながら
図示し説明してきたが、特許請求の範囲に示す如き本発
明の概念とその範囲から外れることなく、それに変更を
加えることができることを、当業者なら容易に理解する
はずである。
E0発明の詳細 な説明した如く本発明によれば、現在実行中の浮動小数
点算術命令についての妥当性応答が命令の実行完了前に
供給されるので、同時に複数の浮動小数点算術命令が実
行でき、パイプライン式アーキテクチャの利点を生かす
ことができる。また命令の発行速度が加速されるので合
計の計算速度も向上する。
【図面の簡単な説明】
第1図は本発明の実施例に基づく早期妥当性応答発生の
流れを示す図、第2A図および第2B図は第1図の流れ
図を実現するためのパイプライン式制御機構の構成を示
す図、第3図は浮動小数点算術命令の基本形式を示す図
、第4図は条件的に割込み可能な順序で命令を出す命令
発行部に対し演算を行なう浮動小数点演算機構およびそ
れに関連する構成要素構成を示す図、第5図は第4図の
浮動小数点演算機構の詳細を示す図、第6図は2進表示
による浮動小数点算術命令のオペランドを示す図、第7
図は1B進表示による浮動小数点算術命令のオペランド
を示す図、第8図は第2A図および第2B図のパイプラ
イン式制御機構で使われる指数閾値検査論理回路および
有効加算論理回路の構成を示す図、第9図は妥当性応答
トリガ論理回路の構成を示す図である。ヤ1o i 1
漆渾#4’e肖出願人  インターナショナル・ビジネ
ス・マシーンズ・コーポレーション 代理人  弁理士  頓  宮  孝  −(外1名) 才 3 の  や金形式゛ 2道(f父、j5づれrニオぜランド ′γ!鱈/lJ・速算小数部− 才 7 図 164.春示9r0才ぜランドO鳴N +”−6/ 1←

Claims (1)

  1. 【特許請求の範囲】 浮動小数点演算装置が浮動小数点算術命令に応答して一
    対のオペランドに対して遂行する浮動小数点算術演算に
    ついて妥当性応答を発生する装置であって、 (a)浮動小数点算術命令の完了前に該浮動小数点算術
    命令のオペランドの指数を組み合わせて暫定的な指数部
    を生成し該暫定的な指数部が所定の値の範囲に入ってい
    るかどうかを判断する第1の手段と、 (b)オペランドの指数部および小数部から、浮動小数
    点算術命令が非ゼロの結果を生ずる有効加算命令である
    のかまたは有効減算命令であるのかを判断する第2の手
    段と、 (c)上記第1の手段および第2の手段に応答して、 (イ)浮動小数点算術命令が乗算クラスの命令でありか
    つ上記暫定的な指数部が上記所定の値の範囲に入ってい
    る場合、または、 (ロ)浮動小数点算術命令が有効加算命令であり上記暫
    定的な指数部が上記所定の値の範囲に入っておりかつ該
    浮動小数点算術命令がその実行により非ゼロの結果を生
    ずるものである場合に、 上記浮動小数点算術命令の完了前に妥当性応答を発行す
    る第3の手段と、 より成る妥当性応答発生装置。
JP62117258A 1986-08-15 1987-05-15 妥当性応答発生装置 Pending JPS6347827A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/896,879 US4845659A (en) 1986-08-15 1986-08-15 Accelerated validity response permitting early issue of instructions dependent upon outcome of floating point operations
US896879 2001-06-29

Publications (1)

Publication Number Publication Date
JPS6347827A true JPS6347827A (ja) 1988-02-29

Family

ID=25407005

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62117258A Pending JPS6347827A (ja) 1986-08-15 1987-05-15 妥当性応答発生装置

Country Status (4)

Country Link
US (1) US4845659A (ja)
EP (1) EP0256358A3 (ja)
JP (1) JPS6347827A (ja)
BR (1) BR8703889A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6488628A (en) * 1987-09-29 1989-04-03 Nec Corp Exception processor

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4879676A (en) * 1988-02-29 1989-11-07 Mips Computer Systems, Inc. Method and apparatus for precise floating point exceptions
DE68927218T2 (de) * 1988-10-18 1997-02-06 Hewlett Packard Co Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
EP0365322A3 (en) * 1988-10-19 1991-11-27 Hewlett-Packard Company Method and apparatus for exception handling in pipeline processors having mismatched instruction pipeline depths
US5093908A (en) * 1989-04-17 1992-03-03 International Business Machines Corporation Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor
US5553015A (en) * 1994-04-15 1996-09-03 International Business Machines Corporation Efficient floating point overflow and underflow detection system
US5907837A (en) * 1995-07-17 1999-05-25 Microsoft Corporation Information retrieval system in an on-line network including separate content and layout of published titles
US5742533A (en) * 1996-05-21 1998-04-21 International Business Machines Corporation Method and apparatus for modulus error checking
US6035390A (en) * 1998-01-12 2000-03-07 International Business Machines Corporation Method and apparatus for generating and logically combining less than (LT), greater than (GT), and equal to (EQ) condition code bits concurrently with the execution of an arithmetic or logical operation
US6701427B1 (en) * 1999-12-22 2004-03-02 Arm Limited Data processing apparatus and method for processing floating point instructions
US6487688B1 (en) * 1999-12-23 2002-11-26 Logicvision, Inc. Method for testing circuits with tri-state drivers and circuit for use therewith
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7373489B1 (en) * 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US9684514B2 (en) * 2014-09-10 2017-06-20 International Business Machines Corporation Inference based condition code generation
US11175890B2 (en) * 2019-04-30 2021-11-16 International Business Machines Corporation Hexadecimal exponent alignment for binary floating point unit

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61123930A (ja) * 1984-11-19 1986-06-11 Fujitsu Ltd 可変長デ−タ演算のオ−バフロ−検出方式

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3551665A (en) * 1966-09-13 1970-12-29 Ibm Floating point binary adder utilizing completely sequential hardware
US3881173A (en) * 1973-05-14 1975-04-29 Amdahl Corp Condition code determination and data processing
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
US4542456A (en) * 1982-04-28 1985-09-17 At&T Bell Laboratories Method and apparatus for performing range checks
US4573118A (en) * 1983-03-31 1986-02-25 Fairchild Camera & Instrument Corporation Microprocessor with branch control
US4578750A (en) * 1983-08-24 1986-03-25 Amdahl Corporation Code determination using half-adder based operand comparator
US4683546A (en) * 1984-01-03 1987-07-28 Motorola, Inc. Floating point condition code generation
JPH0192829A (ja) * 1987-10-02 1989-04-12 Hitachi Ltd 浮動小数点演算器
US4879676A (en) * 1988-02-29 1989-11-07 Mips Computer Systems, Inc. Method and apparatus for precise floating point exceptions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61123930A (ja) * 1984-11-19 1986-06-11 Fujitsu Ltd 可変長デ−タ演算のオ−バフロ−検出方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6488628A (en) * 1987-09-29 1989-04-03 Nec Corp Exception processor

Also Published As

Publication number Publication date
EP0256358A3 (en) 1990-07-04
BR8703889A (pt) 1988-03-29
US4845659A (en) 1989-07-04
EP0256358A2 (en) 1988-02-24

Similar Documents

Publication Publication Date Title
EP0331372B1 (en) Method of and apparatus using floating point execption signals for controlling several processors
US4112489A (en) Data processing systems
US5093908A (en) Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor
US5394351A (en) Optimized binary adder and comparator having an implicit constant for an input
US5699279A (en) Optimized binary adders and comparators for inputs having different widths
JPS6347827A (ja) 妥当性応答発生装置
US4578750A (en) Code determination using half-adder based operand comparator
US5212662A (en) Floating point arithmetic two cycle data flow
US4999802A (en) Floating point arithmetic two cycle data flow
JPS59114641A (ja) 割込処理装置
JPH0635675A (ja) データプロセッサにおいて除算を行うための方法および装置
JPH07225671A (ja) 結果正規化機構と動作の方法
US5590351A (en) Superscalar execution unit for sequential instruction pointer updates and segment limit checks
US4773035A (en) Pipelined data processing system utilizing ideal floating point execution condition detection
US6070218A (en) Interrupt capture and hold mechanism
US5615113A (en) Early signaling of no-overflow for nonrestoring twos complement division
JP6428488B2 (ja) 加減算器及び加減算器の制御方法
JP2002099447A (ja) プロセッサ
US4707783A (en) Ancillary execution unit for a pipelined data processing system
US4809162A (en) Saving registers in data processing apparatus
US5675528A (en) Early detection of overflow and exceptional quotient/remainder pairs for nonrestoring twos complement division
US5748518A (en) Data processing divider
Lutz et al. Early zero detection [integrated adder/subtracter/zero-detector]
JP3089427B2 (ja) データ処理装置
CN111752613A (zh) 迭代运算的处理