JPH083786B2 - 浮動小数点演算処理装置 - Google Patents

浮動小数点演算処理装置

Info

Publication number
JPH083786B2
JPH083786B2 JP61302748A JP30274886A JPH083786B2 JP H083786 B2 JPH083786 B2 JP H083786B2 JP 61302748 A JP61302748 A JP 61302748A JP 30274886 A JP30274886 A JP 30274886A JP H083786 B2 JPH083786 B2 JP H083786B2
Authority
JP
Japan
Prior art keywords
floating point
instruction
central processing
instructions
bus
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.)
Expired - Lifetime
Application number
JP61302748A
Other languages
English (en)
Other versions
JPS62156735A (ja
Inventor
アンソニー・エス・フォング
Original Assignee
ウオング・ラボラトリ−ズ・インコ−ポレ−テツド
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 ウオング・ラボラトリ−ズ・インコ−ポレ−テツド filed Critical ウオング・ラボラトリ−ズ・インコ−ポレ−テツド
Publication of JPS62156735A publication Critical patent/JPS62156735A/ja
Publication of JPH083786B2 publication Critical patent/JPH083786B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】 産業上の利用分野 この発明は、情報処理システムにおいて浮動小数点の
演算処理を実行する装置に関し、特に浮動小数点命令の
実行において浮動小数点の演算処理を制御する装置に関
する。
従来技術 多くの情報処理システムは、例えば技術的及び科学的
な分野に関係する数学的な計算を実行する際に、浮動小
数点の演算処理を実行できることが必要であり、少なく
ともこれを実行できることが望ましい。小数のコンピユ
ータは特別に技術及び科学用に設計されているが、大多
数のシステムは汎用を目的として設計されているので、
汎用システムにとつてこの問題は浮動小数点の演算処理
用に一つの特殊機能を備えることになる。
一般に、この機能を得るために過去において用いられ
た解決方法として、エミユレーシヨン、独立浮動小数点
プロセツサ、及び関連する浮動小数点プロセツサを挙げ
ることができる。第1に、浮動小数点演算処理は、シス
テムにおける汎用の中央処理ユニツト上で稼働している
浮動小数点演算処理のエミユレーシヨン・ソフトウエア
により実行される。即ち、前記中央処理ユニツトを浮動
小数点プロセツサのように動作させたり、エミユレーシ
ヨン処理されるのはソフトウエアである。一般に、汎用
の中央処理ユニツトは、浮動小数点演算処理用に設計さ
れていないので、通常、中央処理ユニツトはこれらの処
理の実行が遅く、かつ能率的ではない。従つて、この解
決方法は、浮動小数点演算処理の頻度が相当に低く、非
能率、かつ速度が遅くてもよい場合を除けば、満足でき
るものではなかつた。
他の極端な場合として、あるシステムでは、浮動小数
点演算処理を実行する特殊目的の中央処理ユニツトと並
列に動作する完全に別個の、独立した浮動小数点プロセ
ツサを備えている。一般に、独立浮動小数点プロセツサ
は高速度かつ浮動小数点処理が能率的であるが、システ
ム・コストの点でかなりの投資を必要とする。即ち、浮
動小数点プロセツサは通常、全ての演算処理要素を備え
ることになるが、汎用中央処理ユニツトのコストは、浮
動小数点処理を実行する特殊機能にしか利用しないもの
のコストとなる。更に、中央処理ユニツト、浮動小数点
プロセツサ、及び全体としてのシステムは、1台以上の
独立した処理ユニツトを有するシステムに避けられない
複雑さのために、更に複雑となり、従つて更に高価とな
る。即ち、この解決方法は主として技術用及び科学用に
専用化したシステムにおいてのみ完全許容し得るもので
あつた。
最も一般的な第3の解決方法では、中央処理ユニツト
が演算論理ユニツトの付加ユニツト、即ち拡張ユニツト
として実質的に動作する関連浮動小数点ユニツトを備え
るものである。即ち、関連浮動小数点ユニツトは浮動小
数点処理用の特殊な演算論理要素を備えると共に、中央
処理ユニツトの命令及びオペランドのフエツチ機構、及
びデコード機構や、マイクロコード制御機構のような他
の要素を共有するものである。
この解決方法における主要な問題は中央処理ユニツト
及び浮動小数点ユニツトが所望の動作速度を得ることに
ある。即ち、要素の共有により、中央処理ユニツト又は
浮動小数点ユニツトは他のユニツトがその演算処理を終
了するまで処理を遅延させなければならない。例えば、
多くのシステムにおいて、中央処理ユニツトはメモリの
書き込み及び読み出し処理と、浮動小数点ユニツト用に
一定の制御機能を実行するので、中央処理ユニツトが浮
動小数点演算処理中にそれ自身の処理の実行を保留し
て、浮動小数点ユニツトのサービスをしなければならな
い。同様に、浮動小数点ユニツトは、中央処理ユニツト
に浮動小数点ユニツトの支援ができる余裕ができるま
で、演算処理の実行を頻繁に遅延しなければならない。
本発明は、これらの問題点及び従来技術の他の問題点
を解決する浮動小数点演算処理実行用の改良装置を提供
するものである。
発明の概要 この発明は、全般的に、命令及びオペランドを記憶す
るメモリと、命令及びオペランドをフエツチして、デコ
ードする機構を含む中央処理ユニツトと、前記中央処理
ユニツトとメモリとの間に接続されてこれらの間におい
て命令及びオペランドを授受するバスとを有する情報処
理システムに関する。前記バスに接続され、かつデコー
ドした浮動小数点命令に応答して浮動小数点演算処理を
実行する関連浮動小数点ユニツトが備えられている。浮
動小数点ユニツト及び中央処理ユニツトは独立したクロ
ツク及びマイクロ制御をそれぞれ有するので、それぞれ
他に対して独立して演算処理を実行することができる。
浮動小数点ユニツトは中央処理ユニツトと並列に動作
して命令ストリームに現れる複数の浮動小数点命令を実
行する。命令の流れの中に現れる複数の浮動小数点命
令、及びそれらに関連するオペランドは、本質的に、非
浮動小数点命令と同じようにメモリからフエツチされ、
中央処理ユニツトに転送されて実行されるのではなく、
浮動小数点ユニツトにロードされて実行される。従つ
て、浮動小数点命令及び非浮動小数点命令は、中央処理
ユニツトが浮動小数点命令の終了を待つ必要もなく、少
なくとも一定の非浮動小数点命令の実行を自由に始める
ことができるため、平行して実行できる。
浮動小数点ユニツトは命令/オペランドのフエツチ機
構を備えておらず、それ自身は書き込み、又は読み出し
のアクセスをしない。全ての命令及びオペランド・フエ
ツチ・オペランドと、浮動小数点ユニツトに対する全て
のデータ書き込みとを中央処理ユニツトが実行するの
で、一定の浮動小数点演算処理、特にメモリの書き込み
又は読み出しを必要とする浮動小数点演算処理に関し
て、浮動小数点ユニツトは、中央処理ユニツトに従属
し、独立して動作することができない。
この発明は、浮動小数点演算処理を実行し、中央処理
ユニツト及び浮動小数点ユニツトの演算処理を制御する
と共に調整することにより、一方のユニツトのオペレー
シヨンが他方のユニツトに依存する期間を減少させる改
良装置を提供することにある。従つて、このシステムの
総合的な実行速度は、中央処理ユニツト及び浮動小数点
ユニツトが処理を実行する際に独立して、かつ並列して
動作することができる期間だけ増加される。
本発明は、浮動小数点命令が中央処理ユニツトと浮動
小数点ユニツトとの間において処理のインターロツクを
必要とする第1グループの命令の一要素であるか、又は
中央処理ユニツトと浮動小数点ユニツトとの間において
処理のインターロツクを必要としない第2グループの命
令の一要素であるかを判断する手段を備えている。浮動
小数点ユニツトは、更に、アイドル状態か、又は利用可
能状態かを判断する手段も備えている。また第1グルー
プの命令の生起と、浮動小数点手段におけるアイドル状
態と、に応答して浮動小数点ユニツトに対して第1グル
ープの命令を送出して実行する手段も備えている。この
手段は第2グループの命令の生起と、浮動小数点ユニツ
トにおいて利用可能状態と、に応答して、浮動小数点ユ
ニツトに第2グループの命令を送出して実行する。
浮動小数点ユニツトは各処理サイクルにおいて、浮動
小数点ユニツトが利用可能状態か、又はアイドル状態か
を判断する手段を備えている。この手段は、浮動小数点
ユニットが次の命令を受け取ることができる状態、即
ち、利用可能状態にあるときは、中央処理ユニットに利
用可能状態信号を出力する。また、浮動小数点ユニット
が次の命令を受け取ることができ、かつ、現在命令を実
行していないとき、又は次の処理サイクルで命令を実行
することもないとき、即ち、アイドル状態のときは、ア
イドル信号を出力する。
中央処理ユニツトは、更に浮動小数点命令の生起に応
答して中央処理ユニツトが浮動小数点命令を検出したこ
とを示すロード命令信号を浮動小数点ユニツトに出力す
る。続いて、この浮動小数点ユニツトは中央処理ユニツ
トのロード命令信号に応答して中央処理ユニツトから浮
動小数点命令を受け取る。
中央処理ユニツトは、更に浮動小数点ユニツトとメモ
リとの間にデータの転送を必要とする第1グループの浮
動小数点命令を検出したときに、データ転送を実行すべ
きことを示すデータ転送信号を送出する。中央処理ユニ
ツトは、データ転送信号に関連してバスがデータ転送可
能なことを示す中央処理サイクル終了信号も出力する。
続いて、浮動小数点ユニツトはデータ転送信号及び中央
処理サイクル終了信号に応答して、浮動小数点クロツク
を中央処理ユニツトに同期させ、命令により要求された
データ転送を実行する。
最後に、中央処理ユニツトは、浮動小数点命令の生起
に応答して、浮動小数点命令が浮動小数点ユニツトに送
出されたことを示す命令信号を送出する。更にこの浮動
小数点ユニツトは前記バスに接続され、浮動小数点ユニ
ツトに実行すべき浮動小数点命令のアドレスを受け取つ
て記憶し、かつ命令信号に応答してバスからの命令アド
レスを命令アドレス・レジスタにロードする命令アドレ
ス・レジスタを有する。前記浮動小数点手段に例外条件
が生起したときは、浮動小数点ユニツトは例外信号を送
出し、命令アドレス・レジスタからバスに例外条件を発
生させた命令のアドレスを転送する。次に、中央処理ユ
ニツトは前記バスから命令信号を受け取ることにより例
外信号に応答して対応する例外取り扱い処理を開始す
る。
従つて、この発明の目的は改良した浮動小数点ユニツ
トを提供することにある。
更に、この発明の目的が改良した浮動小数点ユニツ
ト、及び関連して浮動小数点命令の実行を制御する手段
を提供することにある。
この発明の他の目的及び効果は、通常に習熟している
者(当業者)において現在好ましいとするこの発明の一
実施例の次の詳細な説明から明らかとなるであろう。
この発明の他の目的、効果及び特徴は、好適な実施例
についての次の詳細な説明及び図面を参照することによ
り、当業者において理解されるであろう。
好適な実施例の説明 次の説明は、本発明のここで好適な一実施例に関連し
たコンピユータ・システムの構造及びオペレーシヨンに
ついて行なわれている。次の説明は、システムの構造及
びオペレーシヨンについて総合ブロツク図により先ず行
なわれる。次いで、システム、特にシステムのプロセツ
サ・ユニツトの一定の特徴及び動作原理について更に詳
細に説明する。最後に、この発明の浮動小数点ユニツト
(EPU)を説明する。説明を明確にするために、一定の
参照番号及び図面の規約を以下の説明の全般に亘つて用
いる。特に、図面に示すシステム要素を指す参照番号は
3又は4桁により構成される。下位(右端)2桁は特定
の図面に示された特定の要素を表わし、また上位(左
端)2桁はその要素が最初に現れた図面を表わす。例え
ば特定のシステム要素は第1図において第12番目の要素
として現れ、以後、この要素は参照番号112により引用
される。同様に、第2図に第9番目の要素として初めて
現れる要素は参照番号209により引用されることにな
る。以上説明したとうに、このような参照番号は、以下
の説明においてその要素が最初に現れた時点で割り当て
られ、その要素を引用する以後の説明の全般に亘つて用
いられるものとする。例えば、第2図に最初に現れる要
素209は、第3図にも現れるが第3図でも引き続き参照
番号209により識別される。
A.ブロツク線図の構成とオペレーシヨン(第1図) 第1図を参照すると、本発明を組込まれたシステム10
2のブロツク線図が示されている。図に示すように、シ
ステム102は処理ユニツト(PU)104、主メモリ(MM)10
6、システム制御ユニツト(SCU)108、および1個以上
のサテライト(satellite)処理ユニツト(SPU)112を
備えたシステムバスインタフエース(SBI)110を含む。
これらの要素はシステムバス(SB)114に双方向的に接
続され、かつ該バスにより相互に接続され、該システム
バス114は、双方向性システムアドレス(SA)バス116、
双方向性メモル制御(MC)バス117、双方向性システム
データ(SD)バス118及びシステムバス制御(SBC)リン
ク119とから構成されている。SAバス114とSDバス116と
はそれぞれシステム102の要素の間でアドレスやデータ
を転送するためのものであり、一方MCバス117はMM106の
動作の制御を行う。SBCリンク119はSB114の各種のユー
ザ、例えばPU104、MM106、SCU108及びSBI110によりSB11
4へのアクセスを制御する機構を提供する。例えばPU10
4、SCU108、MM106およびSBI110のようなシステム102の
ある種のエレメントも支援リンク(SL)バス120により
さらに相互に接続されている。以下さらに下記するよう
に、SLバス120はSCU108とシステム102のある要素の内部
オペレーシヨンとの間でアクセスや通信を提供する。
まずPU104を参照すると、PU104は処理制御されて、即
ちプログラムの実行の間受取られる命令によつて制御さ
れてデータに対する演算を行う中央処理ユニツト(CP
U)122を含む。以下詳細に説明するように、CPU122と、
PU104の関連エレメントは、CPU122がその各サイクル当
り1個のマイクロ命令を、かつ1回に1個のマイクロ命
令を実行するようにしてマイクロプログラムにより制御
される。
第1図に示すMM106を参照すると、MM106はデータや命
令を記憶する1個以上のメモリユニツト(MU)130と、M
U130からの、あるいはMU130へのデータや命令の読取
り、書込みを制御するメモリ制御ユニツト(MCU)132と
を含む。MCUはSAバス116、MCバス117、SDバス118および
SBCリンク119から接続され、SLバス120から接続された
システム102のエレメントの中の1つである。
SCU108は主として全体のシステム制御及び支援オペレ
ーシヨンを行う。第1図に示すように、SCU108はシステ
ムコンソールとして作用し、マイクロコードをPU104に
コードする例えばデイスケツトシステムを提供する。ま
た、SCU108は局部的な診断機能を行い、かつ遠隔診断装
置用のリンクを提供することができる。SCU108のその他
の機能には、停電時の自動再開機能ならびにエラーロギ
ングおよびシステムの作動モニタリングを含むとができ
る。
SBI110およびSPU112を参照すれば、SPU112は周辺装
置、例えばプリンタ、通信リンク、ターミナル及びデイ
スク駆動装置用のインテリジエント制御装置/インタフ
エースである。SPU112は入力/出力(IO)バス136を介
してSBI110に接続されている。SBI110はSPU112と協働し
て、IOバス136およびシステムバス114の間の通信インタ
フエースとして作動し、周辺装置とシステム102の要素
との間で情報を転送する。
B.PU104ブロツク(第2図) 第2図を参照すると、PU104のブロツク図が示されて
いる。図に示したように、PU104の要部、即ちCPU122、A
GU124、ATU/C126及びEPU128はPU104内部データ・バス
(DB)202を介して相互接続される。以下で更に説明す
るが、DB202はPU104の要素間において命令及びデータの
授受をする主要な転送路である。
PU104の要素をここで参照すると、中央処理ユニツト
(CPU)122が処理の制御に従い、即ちプログラムの実行
中に受け取つた命令の制御に従い、データについて演算
処理を実行する。このことから、処理はユーザ用のプロ
グラムを実行するエンテイテイとして説明することがで
き、またプログラム実行のアドレス空間及び現在の状態
を表わすものと説明することができる。更にこのことか
ら、CPU122及び関連するPU104の要素はCPU122により制
御されたマイクロプログラムであり、CPU122は各CPUサ
イクルに1つの命令及び1度に1マイクロ命令を実行す
る。
CPU122は基本的に2進及び10進整数の演算処理装置を
実行し、かつ以下で説明する形式の汎用命令を実行す
る。CPU122はアドレス発生ユニツト(AGU)124の支援に
よりあるアドレスの生成処理、例えば命令アドレス関連
の計算も実行する。更に、CPU122はPU104の制御に用い
るシステム・プログラム・コントロール・ワードを発生
して保持する。また、CPU122はマイクロ命令の分岐アド
レスも発生し、マイクロコード・シーケンサから受け取
つたリテラル・フイールドを用いてリテラル・フイール
ド定数処理を実行する。
CPU122に関連して、アドレス発生ユニツト(AGU)124
があり、これには以下で説明しているように、命令ブリ
フエツチ及びキユー機構が備えられている。AGU124は、
命令をフエツチし、この命令のフイールドからこれらの
命令により動作すべきオペランドを参照する仮想アドレ
スを発生し、マイクロ命令リーチンを識別するアドレス
を送出し、これらの命令を実行する。AGU124はここでも
現在の命令のフイールドから実行すべき次の命令の仮想
アドレスを発生する。
第2図に示すように、AGU124は、CPU122がこれらの命
令を実行する前に、これらの命令をフエツチして記憶す
る命令ラツチ(IL)204及び命令キユー(IQ)206を有す
る。IQ206は、マイクロ命令ルーチンのアドレスを送出
するために用いるオペレーション・コード(opcode)フ
イールドと、このマイクロ命令ルーチンに基づいて処理
すべきオペランドの識別情報を含むフイールドに関連し
たオペランドとを命令から抽出するために必要なロジツ
クを有する。
IQ206に関連してIQ206の一部である命令レジスタ0
(IRO)208と、送出アドレス発生レジスタ(DAG)210と
がある。以下で詳細に説明するように、DAG210は実行す
べき現在命令の送出アドレスを保持し、一方IRO208は実
行すべき次の命令を保持する。更に、AGU124はアドレス
の算出用の情報を記憶するアドレス発生レジスタ・フア
イル(AGRF)212を有する。AGRF212は、例えばベース・
アドレスの記憶用に割り付けられたレジスタを備えるこ
とができ、また命令から、処理ずべき命令及びオペラン
ドを参照するための仮想アドレスの発生に必要なデコー
ド及び演算ロジツクを備えている。
以下で更に詳細に説明するように、AGU124及びCPU122
はそれぞれ命令処理・ユニツト及び実行処理・ユニツト
と呼ぶことができる。AGU124及びCPU122は独立して、か
つ平行に動作し、命令のフエツチ及びデコードと、オペ
ランド・フエツチと、命令の実行とを重複させることが
できる。
CPU122及びAGU124に関連して、アドレス変換ユニツト
/キヤツシユ(ATU/C)126がある。このATU/C126はPU10
4とシステム102の他の要素との間のデータ及びアドレス
の転送路として、即ちPU104及びSAバス116内の複数の要
素と、SDバス118との間の転送路として動作する。第1
図及び第2図に示すように、CPU122、FPU128及びAGU124
は互いに内部データ・バス(DBバス)202を介してATU/C
126に接続されており、一方AGU124は仮想アドレス(V
A)バス214を介してATU/C126に接続されている。続い
て、ATU/C126はDBバス202と、VAバス214と、SAバス116
と、SDバス118との間に接続されている。
先ず、第2図に示すように、PU104の内部バス及び命
令バスについて説明すると、ATU/C126はSDバス118とDB
バス202との間に双方向に接続されたデータ・キヤツシ
ユ(DC)216を有する。SDバス118とDB202との間におけ
るデータ/命令の主転送路として利用されるのに加え
て、DC216はCPU122及びFPU128の処理の前に、複数の命
令及びオペランドを記憶して出力するキヤツシユ機構と
して動作する。特に、複数の命令及びオペランドはSDバ
ス118からDC216に読み込まれて記憶され、続いてDC216
からDBバス202を介してCPU122、AGU124及びFPU128に読
み出される。CPU122又はFPU128からSDバス118に書き込
まれるデータは、DBバス202を介してDC216に読み込ま
れ、またDC216を介してSDバス118に転送される。
PU104の内部アドレス・バスについて説明すると、先
に説明したように、AGU124は仮想アドレス、即ち処理の
アドレス空間に相対する複数の命令及びオペランドの複
数のアドレスを発生する。次に、これらの仮想アドレス
はATU/C126に供給され、特にVAバス214を介してアドレ
ス変換ユニツト(ATU)218に供給される。
ATU218はVAバス214とSAバス116との間のアドレス・バ
スをなし、一部が仮想アドレスを物理アドレスに変換す
るキヤツシユ機構に含まれる。ATU218には、現在の物理
的命令アドレスを記憶して出力する物理的命令アドレス
・レジスタ(PIAR)220と、現在の物理的オペランド及
びデータ・アドレスを記憶して出力する物理アドレス・
レジスタ(PAR)222とが関連されると共に、接続されて
いる。第2図に示すように、PIAR220及びPAR222の出力
は、物理アドレス(PA)バス224を介してSAバス116に接
続されて、SDバス118とDC216との間の複数の命令及びオ
ペランドの読み出し及び書き込みを制御し、またDC216
に接続されてDC216とDBバス202との間の複数の命令及び
オペランドの読み出し及び書き込みを制御している。
この点から、以下で更に詳細に説明するように、AGU1
24及びCPU122は、AGU124と共に動作して命令のフエツ
チ、命令のデコード、オペランドのフエツチ及び命令の
実行を重複させている。
前述のように、PU104は処理の制御に基づいて、即ち
プログラムの実行中に受け取つた命令の制御に基づいて
データの演算処理を実行する。このマイクロコードの制
御は、例えば複数の命令のデコードの結果としてAGU124
のDAG210から得られるアドレスの送出と、及びPU104の
処理中に発生する一定の条件及び試験とに応答してマイ
クロシーケンサ(MC)226により行なわれる。
最後に、前述したように、PU104はPU104の他の処理、
例えばCPU122の処理と平行して浮動小数点の演算処理を
実行する浮動小数点ユニツト(FPU)128を有する。第2
図に示すように、FPU128は、DBバス202に対して双方向
のデータ接続と、CPU122からの制御入力と、AGU124のIR
O208からの浮動小数点命令の選択入力とを有する。
以下で更に詳細に説明するように、FPU128はCPU122と
並列に動作して命令ストリームに現れる複数の浮動小数
点命令を実行する。命令ストリームに現れる複数の浮動
小数点命令と、それらに関連する複数のオペランドと
は、本質的にCPU122に転送されて実行されるのではな
く、非浮動小数点命令と同じような方法によりATU/C126
からフエツチされるものであり、FPU128にロードされて
実行される。従つて、浮動小数点命令及び非浮動小数点
命令を並列に実行することができ、ここではCPU122が浮
動小数点命令の終了を待つ必要もなく、少なくともある
非浮動小数点命令の実行により進行することが許容され
る。
この点、以下で更に詳細に説明するように、FPU128
は、命令/オペランド・フエツチ機構を備えておらず、
勿論、オペランドがFPU128のレジスタに存在しない限
り、それ自身はMM106か、又はDC216においてキヤツシユ
された複数の命令及びオペランドに対するアクセスはし
ない。
CPU122は、AGU124及びATU/C126と連係して動作してお
り、全ての命令及びオペランドのフエツチ・オペランド
と、FPU128に対する全てのデータ書き込みを実行する。
この理由からFPU128の詳細な説明に入る前に、CPU122の
命令/オペランドのフエツチ及びデータの書き込み処
理、AGU124及びATU/C126を次に説明しよう。
この発明の対象であるFPU128については、AGU124から
CPU122及びAGU124に対する命令及びオペランドのフエツ
チを説明した後に、以下で更に詳細に説明しよう。
C.命令及びオペランドのフエツチ 以上に説明したように、AGU124及びCPU122は、ATU/C1
26と共に動作して命令及びオペランドのフエツチと、命
令のデコード及び実行を重複させている。これも上で説
明したように、DC216はPU104のオペレーシヨンを予測し
てMM106から複数の命令及びオペランドをフエツチして
記憶し、かつ必要に応じてそれぞれAGU124及びCPU122に
これらの命令及びオペランドを供給するように部分的に
動作する。更に、DC216は、CPU122が実行した処理に起
因するオペランドのために、CPU122からMM106への再書
き込みの転送路として動作する。DC216とCPU122又はFPU
128との間の複数のオペランドの読み出し及び書き込み
は、AGU124及びATU218のPIAR220の処理により得られた
オペランドの複数の書き込み/読み出しアドレスに応答
して実行される。DC216からAGU124へ、即ちID206への命
令の読み込みは、CPU122及びATU218のPIAR220の処理に
より得られた次の命令アドレスに応答して実行される。
PU104、特にCPU122及びFPU128の処理速度は、DC216か
らCPU122、FPU128及びAGU124へ複数の命令及びオペラン
ドを転送することができる速度により部分的に決定さ
れ、CPU122又はFPU128の処理の結果DC216に転送され、
次いでSDバス118に転送される。この理由から、CPU12
2、FPU128、AGU124及びATU/C126は重複され、かつイン
ターリーブされた命令/オペランドの書き込み/読み込
みにおいて対話的に協力するように設計されているの
で、DC216と、CPU122と、FPU128との間に複数の命令及
びオペランドの連続的な流れが有効に存在する。
フエツチ/書き込み機構は、CPU122、FPU128、AGU12
4、及びPIAR220と、PAR222とに関連したATU218を含むも
のであり、重複し、かつインターリーブ形式で動作して
DC216から命令をフエツチし、かつCPU122又はFPU128とD
C216との間で複数のオペランドを読み出して書き込む。
与えられた全てのCPUサイクルにおいて、CPUサイクルは
命令の実行により定義され、かつCPUクロツク(CPUC)
の連続するエツジにより輪郭づけされており、一つの命
令がフエツチされ、一つのオペランドがDC216から読み
出されるか、又はこれに書き込まれる。
各CPUサイクルの開始は、CPUCの前縁、即ち立上りエ
ツジにより決定され、その後に生起する一連の事象はオ
ペランドの書き込みか、又は読み出しかを保留している
状態に従つている。オペランドの読み込みか、又は読み
込みかを保留しているときは、オペランドの書き込み又
は読み出しアドレスは、CPUCの前縁、即ちCPUサイクル
を開始するCPUCエツジの時点でDC216に供給され、CPUC
の前縁の後の1システム・クロツク(SYSCLK)期間に命
令アドレスがDC216に供給される。オペランド読み出し
又は書き込みが保留されていないときは、CPUCで前縁
で、即ちCPU期間の開始時点で命令アドレスがDC216に供
給される。
まず、オペランドの読み出し及び書き込みを考慮する
と、DC216にキヤツシユされているオペランドの読み出
し、又は書き込みにおいて、オペランドはアドレスの後
の次のSYSCLKでDBバス202に現れ、次に現れるCPUCの前
縁、即ち次のCPUサイクルを開始するCPUCのエツジでそ
れぞれCPU122、FPU128又はDC216にラツチされる。DC216
にオペランドがキヤツシユされておらず、MM106からフ
エツチしなければならないオペランド読み出しの場合、
オペランドはアドレスの後、数サイクルのSYSCLKでDBバ
ス202に現れ、次に生起するCPUCの前縁、即ち次に生起
するCPUサイクルの開始時でCPU122又はFPU128に再びラ
ツチされる。
即ち、オペランドは書き込み又は読み出しを行なうCP
Uサイクルでは、オペランド・アドレスがそのCPUサイク
ルを開始するCPUCのエツジでDC216に供給され、オペラ
ンドはそのCPUCの開始後の1サイクル以上のSYSCLKでDB
202上に現れ、CPUサイクルを開始するCPUCが次に生起す
るCPUCのエツジでその行き先であるCPU122、FPU128又は
DC216にラツチされる。
命令のフエツチにおいて、アドレス指定された命令
は、通常、アドレスの後の1 SYSCLK期間にDBバス202に
現れ、次に生起するCPUCの第2のエツジ、即ち立下りで
IL204にラツチされ、またIQ206に命令を受け取る空きが
あるときは、次に生起するCPUCのエツジ(CPUサイクル
を開始させる)でIQ206にロードされる。IQ206が命令を
受け取る空きがないときは、IQ206に命令を受け入れる
ことが可能となるスペースが得られるCPUCの前縁が生起
するまで、命令はIL204に保持される。
以上で説明した処理におけるPIAR220、PIAR220及びIL
204の機能について考察する。先ず注意すべきことは、P
AR222及びPIAR220を備えることにより、1回のCPUサイ
クル内で一つの命令及び1つのオペランドの両者のフエ
ツチを容易にし、かつこれを可能にすることである。即
ち、1CPUサイクル内でDC216からオペランドを読み出し
又はこれに書き込み、かつ一つの命令を読み出すために
は、DC216に第1に命令用の、第2にオペランド用の2
アドレスを供給しなければならない。
前述のように、ATU218は二つのアドレス・ストリー
ム、即ちPIAR220からの命令アドレスのストリーム及びP
AR222からのオペランド書き込み/読み出しストリーム
を出力する。PIAR220及びPAR222は、一方が読み出さ
れ、他方が増加又はロードされている間に、交互に読み
出され、かつ新しいアドレスにより増加されるか、又は
ロードされる。従つて、PIAR220及びPAR222は共に、CPU
122クロツク期間毎にDC216に対し、交播する命令アドレ
ス及びオペランド書き込み/読み出しアドレスである1
つのアドレスを供給することができる。
IL204の機能をここで考察すると、先ず注目すべきこ
ととして、CPU122は、オペランドを受け取り可能な状態
となるまで、その処理の性質により、DC216からオペラ
ンドの読み出しを要求しないということがある。即ち、
CPU122は、その入力バツフアにオペランドを受け取る余
地ができない限り、オペランドを受け取らない。従つ
て、CPU122は、DBバス202にオペランドが現れると直ち
に、DBバス202からオペランドを移動させることが常に
可能であり、これによつてDBバス202は常に次のSYSCLK
期間に通常現れる命令を転送することが可能である。
しかし、命令の場合は、CPUサイクル毎に新しい命令
をフエツチするが、命令はIQ206を介して同じような速
度で進行することはない。このために、与えられたCPU
サイクルでIQ206には新しくフエツチされた命令を受け
取る余地が存在しない可能がある。しかし、IL204を備
えることにより、フエツチした命令をDBバス202から取
り去り、かつDBバス202に空きができるまで、IL204にセ
ーブさせ、これによつて次に現れるかも知れないオペラ
ンドのためにDBバス202を開放する。
FPU128をここで参照すると、以下で更に詳細に説明す
るように、FPU128は複数のオペランド及びデータの読み
出し及び書き込みをし、CPU122と同じような方法により
命令の送出アドレスを受け取る。即ち、FPU128のオペラ
ンド/データの読み出し及び書き込みをFPU128が独自に
ではなく、CPU122が管理することを除き、CPU122と同じ
ような方法により、浮動小数点オペランドをDBバス202
から受け取り、データをDBバス202に書き込む。また、F
PU128はCPU122と同じような方法によりAGU124から、即
ちAGU124の命令キュー及びデコード機構から命令の送出
アドレスも受け取る。
以上で説明で説明した命令フエツチ及びデコード処理
は、CPU122、AGU124、ATU/C126及びMS226の構造及び動
作と共に、1985年5月6日に出願され、本発明の出願人
に譲渡された関連の米国特許出願第730,977号に更に詳
細に説明されていることに注意すべきである。従つて、
ここでは米国特許出願第730,977号の適当な説明部分を
引用により関連させる。
PU104の概要構造及び動作、特にFPU128に関連するPU1
04の部分及び動作を説明したので、FPU128を以下に詳細
に説明しよう。
D.浮動小数点ユニツト(FEU)128(第3A図) 以下で更に詳細に説明するように、FPU128の主要な機
能要素には、浮動小数点算術演算処理を実行する浮動小
数点演算プロセツサと、前記浮動小数点演算プロセツサ
の処理を制御する浮動小数点制御ユニツトとが含まれ
る。次に、これらの要素を前述の順序で説明する。
D.1浮動小数点演算プロセツサ(第3A図) FPU128の以下の説明じ関連し、ここで説明する浮動小
数点演算プロセツサは一般的なものであつて、その要素
及び処理が全般的に当該の技術分野における当業者にと
り慣れ親しんでいる設計のものであり、またここで実施
した特定の設計はこの発明の限定するものでないことに
注意すべきである。即ち、この発明は浮動小数点演算プ
ロセツサについての他の設計及び実施に用いることがで
きる。従って、浮動小数点演算プロセツサを余す所なく
詳細に説明することはしないが、当該の技術分野におけ
る当業者にとりこの発明の典型的な動作環境を説明する
ために必要な程度には説明する。
第3A図を参照すると、FPU128の演算プロセツサの総合
的な構造及び処理を示すブロツク図が示されいる。ここ
に示すように、FPU128の演算プロセツサには、符号及び
指数に関連した処理を実行する符号‐指数プロセツサ
(SEP)302と、仮数に関連の複数の処理を実行する分数
一商プロセツサ(FQP)304とが含まれている。SEP302及
びFQP304はそれぞれデータ・バスI/Oバツフア306を介し
てDB202に直接接続され、浮動小数点オペランド、即ち
それぞれ複数の浮動小数点オペランドの指数及び仮数フ
イールドの受け取り、かつ書き込みをする双方向入出力
ポートを有する。
D.1.符号‐指数プロセツサ(SEP)302(第3A図) 先ず、SEP302を参照すると、以下に説明するように、
SEP302は浮動小数点演算処理に必要な符号及び指数オペ
ランドに関連する処理を実行する。当該の技術分野にお
いて周知のように、これらの処理には仮数フイールドの
先行ゼロの除去、指数フイールドの等化及び演算結果の
符号の決定が含まれる。例えば、仮数から先行ゼロを除
去する処理においては、仮数フイールドに現れる先行ゼ
ロを検出し、仮数フィールドをシフトして先行ゼロを除
去することにより、指数フイールドを調整する。指数を
等化する処理においては、指数フイールドを比較し、そ
れらの指数の差により一方の又は他方の仮数フイールド
をシフトすることにより、それらの指数を等化させる。
演算結果の符号決定では、実行するすべき処理の面から
オペランドの値を比較して、演算結果の符号を決定す
る。
第3A図に示すように、符号/指数プロセツサ(SEP)3
02は、指数‐符号レジスタ・フアイル(ERF)308と、浮
動小数点オペランドの符号・指数フイールドを部分的に
記憶する関連の指数ワーキング・レジスタ(EWR)310と
を有する。以下で説明するように、FQP304は、ERF308及
びEWR310に並列、かつこれらと仮数に関連した処理が同
一のレジスタ構造を有する。
ERF308は、説明したように、浮動小数点オペランドの
符号‐指数フイールドを記憶する16個の8ビットのレジ
スタからなる。この点、各ERF308レジスタに含まれてい
る情報が7ビットの指数フイールドと、1ビツトの符号
フイールドとからなることに注意すべきである。ここで
は、ERF308における16レジスタのうちの4レジスタを浮
動小数点レジスタ用に、6レジスタをマイクロコード及
び診断用に、4レジスタを定義した定数の記憶用に、2
レジスタを現在不使用とすることを意図している。以上
で説明するように、ERF308は2つの出力ポートを有する
ので、2つのERF308レジスタの内容は何時では読み出す
ことができ、また符号ロジツク(SL)312に接続されて
いる1入力を有する。以上で説明したように、また以下
で更に説明するように、SL312はオペランド/演算結果
の符号に関する論理演算処理を実行し、またSEP302の指
数演算論理ユニツト(EALU)314からERF308へのデータ
路を形成する。
EWR310は現在処理中の8ビツト指数フイールドを一時
記憶する1つの8ビツト・レジスタである。図示のよう
に、EWR310は1つの出力ポートと、1つの入力ポートを
有する。
ERF308の2出力及びEWR310の1出力は指数演算セレク
タ(EAS)316の入力に接続され、更にEAS316はSEP302の
指数演算論理ユニット(EALU)314に対する選択をし、
入力を供給する。EAS316の第3の入力は先行ゼロロジツ
ク(LZL)318から供給される。
以下で更に説明するように、LZL318は浮動小数点オペ
ランドの仮数及び指数フイールドについて実行したシフ
ト処理に関連する論理演算処理を実行し、その仮数フイ
ールドに現れる先行ゼロを除去する。第3A図に示すよう
に、LZL318の入力は以下に説明するように、FQP304の演
算論理ユニツト(ALU)に接続され、浮動小数点処理の
各サイクルにおいてFQP304のALUを通過する際に仮数フ
イールドに現れる先行ゼロの数を検出して記憶する。こ
れも先に説明したように、先行ゼロロジツク(LZL)318
はERF308の出力に接続された入力を有し、対応する指数
フイールドの指数フイールドを受け取る。当該技術分野
において周知のようにLZL318は仮数フイールドの先行ゼ
ロと、対応する指数フイールド入力とに関連して動作
し、仮数フイールドの先行ゼロを最小化する際に用いら
れるEAS316に出力をする。
第3A図に示すEAS316の説明に戻ると、EAS316は演算論
理処理のためにEALU314に2出力を供給している。以上
で説明したように、この2出力には、ERF308からの符号
・指数フイールド、EWR310からの定義された定数、又は
マイクロコードの診断フイールドと、仮数の先行ゼロの
縮小における指数を調整する際に用いた先行ゼロロジツ
ク(LZL)318の出力とが含まれる。EALU314はこれらの
入力に基づいて演算論理処理を実行し、続いてEAS316の
出力がEWR310の入力及びSL312の入力に供給れることに
より、以上で説明したように、EALU314の出力からSL312
を介してEAS316の入力へのデータ路が形成される。
更にSEP302では2つのデータ路について注意すべきで
あり、その第1はERF308に関連し、その第2はSEP302と
DBIOB306との間の転送路、即ちDBバス202である。第1
に関しては、ERF308の2つの出力ポートが一本のERFバ
ス320に多重化され、まらERFバス320はSL312の入力及び
EALU314の出力に接続される。SL312に対するERFバス320
の入力は演算結果の符号決定処理に用いられる。ERFバ
ス320をEALU314の出力に接続することにより、選択した
ERF308のレジスタの内容のEWR310の入力及びSL312の関
連入力に読み出すことができ、これによつてERF308の出
力ポートからSL312を介してERF308の入力へのデータ路
を形成する。
DBバス202とSEP302との間の入出力データ路に関連し
て、第3A図に示すように、双方向データ路はDBバス202
からDBIOB306を介し、EAS316の出力ポートを、対応する
EALU314の入力ポートと接続しているバス、に接続され
る。従つて、SEP302からDBバス202への出力データ路
は、ERF308及びEWR310の出力ポートからEAS316を介して
DBIOB306及びDBバス202への信号路からなる。
続いてSEP302の入力データ路は、DBバス202及びDBIOB
306から以上で説明したEALU314の入力ポートへ接続され
る。この点から、EALU314は、演算論理処理をするので
はなく、その入力から方向EALU314を介してその出力へ
直接、データを渡すデータ路として動作する。EALU314
の出力に現れるDBバス202からのデータは、以上で説明
したように、EWR310に、又はSL312を介してERF308のレ
ジスタに読み込まれる。
D.1.b.分数/商プロセツサ(FQP)304(第3A図) 第3A図を再び参照すると、SEP302の演算処理に関連し
て浮動小数点オペランドの仮数フイールドについて演算
処理を実行するFPU128の分数/商プロセツサ(FQP)304
のブロツク図が示されている。以下で説明するように、
これらの演算処理には、仮数の加算、引算、乗算及び割
算が含まれる。
ここで説明した浮動小数点演算プロセツサもその要素
及び演算処理が全般的に当該技術分野における当業者に
とりありふれた設計などで、FQP304を余す所なく説明す
ることはしない。しかし、FQP304については、当該技術
分野において当業者がこの発明の典型的な動作環境を理
解するのに必要とする程度に行なうことにする。
先ず、FQP304が浮動小数点オペランド仮数フイールド
に基づいて実行した一般的算出演算処理を説明する。以
上で説明したように、FPU128が実行する主要な演算処理
には、浮動小数点数の加算、引算、乗算及び割算が含ま
れていることは既に述べた。これらの処理のうちで、加
算及び引算が全般的に同じような方法で実行される。従
つて、指数はSEP302により比較され、それらの間の差が
判断される。もし、これらの指数間に差があるときは、
オペランドの指数が他のオペランドの指数に等しくなる
ように、これらの指数をシフトすることにより、即ち1
つの仮数を乗算、又は割算することにより、等化されな
ければならない。この実施例では、小さな数をシフトし
ているので、計算制度を最高に保持している。2つのオ
ペランド、即ち仮数は実際の演算処理により加算又は引
算され、その結果の符号が2つのオペランドの符号とそ
の値との組合わせ、及び特定の演算処理により決定され
る。
乗算は、一方の仮数を被乗数として、かつ他方の仮数
を乗数として指定し、SEP302によるオペランド指数の加
算と、FQP304による仮数についての反復的な分数の乗算
及び加算処理とにより実行される。各分数の乗算及び加
算処理では、被乗数を乗数に乗算してサブプロダクト
(sub-product)を生成し、乗算が終了するまでその結
果のサブプロダクトを前のサブプロダクトの和に加算す
る。この点から、FQP304がPROMに備えている乗算テーブ
ルを用い、8ビツト×56ビツトの乗算を実行することに
注意すべきである。ただし、56ビツト入力は被乗数の仮
数であり、8ビツト入力が乗数の仮数の現在の分数であ
る。連続的な乗数の仮数の分数は乗数の仮数を連続的に
8ビツト右シフトすることにより選択され、現在右端の
8ビツトは現在の乗数の分数である。
割算は、SEP302が指数について引算することにより、
またFQP304が仮数についての反復的な分数の引算又は加
算より得られる。各分数の引算又は加算では、前の演算
処理において発生した部分剰余である除数から引算し、
又これに加算する。その結果を1ビツトだけ左シフトし
て新しい分数処理用の新しい部分剰余と、新しい商ビツ
トとを発生し、新しい商ビツトを左シフトによりMQ334
の稼働中の商にする。
ここで再び第3A図を参照すると、FQP304は分数/商レ
ジスタ・フアイル(FQRF)322及び関連する分数/商ワ
ーキング・レジスタ(FQWR)324を含むものとして示さ
れており、これらは以上で説明したように、ERF308及び
EWR310と構造が同一であり、処理も並行している。更
に、FQRF322はA及びBにより示す2つのポートを有す
るので、内部のレジスタから2つの仮数を同時に読み出
すことができ、一方FQWR324にはレジスタが一個であ
り、1つの出力ポートを有する。この実施例のFPU128で
は、仮数フイールドが56ビツト幅、MQ334が64ビツト幅
であり、8×64ビツトを乗算した結果の部分積(partia
l product)が保持されることに注意すべきである。
FQRF322及びFQWR324には16進シフター(HS)326が関
連しており、図示のように、HS326はFQWR324の出力ポー
トと、FQRF322のB出力ポートとに接続されている。HS3
26はLZL318の制御により動作し、加算及び引算の演算処
理における指数等化に関連した仮数のシフト処理を実行
する。
FQRF322のA出力ポートと、HS326の出力とは、FQP304
の演算論理プロセツサ要素への入力として備えられてい
る。演算論理プロセッサを介してデータが流れるシーケ
ンスにおけるこれらの要素を説明すると、HS326の出力
は56ビツトの乗算器分数レジスタ(MR)328に接続され
ている。MR328は乗算処理において乗算命令の制御によ
りMR328の内容を8ビツト右にシフトする動作をし、未
確定のビツトを埋めることにより、乗数の分数を発生す
る。
MR328の出力及びFQRF322のA出力ポートは、PROM乗算
器(PM)330の入力に並列に接続されている。以上で説
明したように、PM330はPROM乗算テーブルからなり、そ
の入力も基づいて8×56の乗算処理を実行する。PM330
の出力(複数)は乗算器演算論理ユニツト(MALU)332
に供給される。MALU332は3つのキヤリー・セーブ加算
ユニツトの後にキヤリー・ルツク・アヘツド加算ユニツ
トを従属させたものからなり、PM330と連係動作により
乗算処理を実行する。
以上で説明したように、MR328及びMQ334の主たる機能
は、乗算処理を実行すること、特に乗算処理において連
続的なサブプロダクトを発生することである。FQRF322
のAポートからは56ビツトの被乗数が供給され、一方MR
328からは8ビツトの乗数が供給される。MR328は、以上
で説明したように、HS326を介してFQRF322のBポートか
ら56ビツトの乗数を受け取り、連続的な8ビツトの右シ
フトにより8ビツトの乗数を発生している。
MALU332の出力は乗算商レジスタ(MQ)334に接続され
ており、MQ334は、乗算処理における現在のサブプロダ
クトのように、8×56ビツト乗算の64ビツトを記憶す
る。MQ334は割算処理において商レジスタとしても動作
する。
FQP304の剰余の主な要素は、分数マルチプレクサ(F
M)336と、分数演算論理ユニツト(FAL)338と、部分剰
余レジスタ(PR)340とからなり、全体で仮数の加算、
引算、乗算及び割算の処理を実行する汎用演算論理ユニ
ットとして動作する。以上で説明したように、MQ334の
出力及びFQRF322のA出力ポートはFM336の入力に接続さ
れている。またFM336の出力はFAL338の第1の入力ポー
トに接続され、FM336は動作によりFAL338の第1の入力
ポートの入力としてMQ334の出力か、又はFQRF322のAポ
ートの出力を選択する。FAL338の第2の入力ポートは、
図示のように、HS326の出力に接続されている。FAL338
の出力はPR340を介してFAL338の第1の入力ポートと、F
QRF322及びFQWR324の入力ポートとに接続されている。
ここで、仮数に基づいて実行する演算処理を説明する
と、加算及び引算の処理において指数を等化する際のHS
326の仮数シフト処理は既に述べた。仮数の実際の加算
及び引算において、第1の仮数はFQRF322のAポートか
らFM336を介してFAL338の第1の入力ポートに供給され
る。第2の仮数はFQRF322のBポートから出力され、HS3
26により必要なだけシフトされてFAL338の第2の入力ポ
ートに供給される。次に、FAL338は先に説明したよう
に、仮数の必要な加算又は引算を実行し、必要に応じて
FQRF322又はFQWR324にその結果を書き込む。
乗算において、現在のサブプロダクトは、以上で説明
したように、MR328、PM330及びMALU332により出力さ
れ、MQ334に記憶される。次に、現在のサブプロダクト
はFM336により選択され、FAL338の第1の入力ポートに
供給される。現在のサブプロダクト、即ち前のサブプロ
ダクトの和はFQRF322に記憶され、またFQRF322のBポー
トからHS326を介してFAL338の第2の入力ポートに読み
出される。FAL338はサブプロダクト及び部分積の加算を
実行してFQRF322にその結果を書き込み、新しい部分積
とする。
割算は、再記憶なしのアルゴニズムを用い、即ち前の
ステツプの商のビツトに基づいて被除数に対する除数の
反復的な加算及び引算により実行される。割算では、初
期被除数がFQRF322に記憶され、またFQRF322のAポート
からFM336を介してFAL338の第1の入力ポートへ読み出
される。除数はFQRF322にも記憶され、またFQRF322のB
ポートからFAL338の第2の入力ポートへ読み出される。
被除数は4ビツトが右シフトされ、除数より小さいこと
が補償される。この点において、第1の処理は常に引算
であるが、次の処理は引算又は加算であつてもよいこと
に注意すべきである。次に、FAL338は被除数から除数を
引算し、その結果を1ビツトだけFR340を介して左シフ
トし、次の分数引算の被除数である新しい部分剰余を発
生する。次に、新しい部分剰余はFR340からFAL338の第
1の入力ポートに供給され、また除数は再びMALU332か
らFAL338の第2の入力ポートに再び供給され、また商ビ
ツトはMQ334へと左シフトされる。この処理は、割算処
理が完了するまで次の分数引算の各々に対して反復され
る。
最後に、FQP304には、先に説明したように、DBバス20
2に直接接続される入出力データ路が含まれる。以下で
説明するように、FQP304の入出力データ路には更にFPU1
28の制御ユニツトが含まれる。
第3A図に示すFQP304に入出力データ転送路を先ず説明
すると、FQP304は、HS326の出力、即ちFQRF322のB出力
ポートと、DBIOB306との間に接続されている双方向分数
/商データ・バツファ(FQDB)342を有する。以上で説
明したように、DBIOB306は更にDBバス202に双方向に接
続されている。
データ、即ち浮動小数点オペランドの仮数フイールド
を、FQRF322からFQRF322のB出力ポートと、HS326、FQD
B342及びDBIOB306を有する信号路とを介してDBバス202
に読み出すことができる。データを、DBバス202からDBI
OB306、FQDB342、FAL338及びFQRF322の入力ポートを有
する信号路を介してFQRF322に読み込むことができる。
この場合にFAL338は、演算機能又は論理機能を実行する
のではなく、データスループツト(thronghput)径路と
して動作する。
ここで、SEP302及びFQP304を有するFPU128の制御ユニ
ツトの各要素を参照すると、FPU128は先に説明したよう
に、CPU122と並列に動作して命令ストリームに現れる浮
動小数点命令を実行する。本質的に、命令ストリームに
現れる浮動小数点命令、及びこれらに関連するオペラン
ドは、CPU122により転送されて実行されるのではなく、
非浮動小数点命令と同じようにATU/C126からフエツチさ
れ、FPU128にロードされて実行される。従つて、CPU122
は、浮動小数点命令の終了を待つ必要はなく、少なくと
もある非浮動小数点命令を随意に実行し始めることがで
きるための、浮動小数点命令及び非浮動小数点命令は並
行に実行され得る。
前にも説明したように、FPU128は、その内部レジスタ
を除き、命令/オペランド・フエツチ機構を備えてはい
ず、またMM106か、又はDC216にキヤツシユされた命令
や、オペランドに自分でアクセスを行なうこともない。
CPU122は、AGU124及びATU/C126と連係して動作してお
り、FPU128に関する全ての命令及びオペランド・フエツ
チ・オペランドと、全てのデータ書き込みを実行する。
これらの理由から、FPU128が実行している浮動小数点
命令の命令アドレスは、CPU122が現在実行している命令
と異なることがある。例えば、オーバーフローのような
例外条件がFPU12に発生したときは、FPU128はこの例外
条件が発生した浮動小数点命令のアドレスを報告する。
従つて、CPU122は浮動小数点命令アドレスを得ることが
できず、CPU128はこのような浮動小数点命令のアドレス
を全てセーブしなければならない。
この浮動小数点命令をレーブする機能は、浮動小数点
命令アドレス・レジスタ(FPIA)344により得られる。
図示のように、EPIA344はDBIOB306を介してDBバス202に
接続され、全ての浮動小数点命令のアドレスを捕捉して
記憶する。この実施例の場合では、FPIA344はラツチに
レジスタを従属させたものからなり、最大2段の命令ア
ドレス・メモリを備える。例えばEPIA344のレジスタを
用いてFPU128が現在実行している命令のアドレスを記憶
し、またFPIA344のラツチを用いてFPU128のIQ356に記憶
されている次の命令のアドレスを捕捉して一時記憶する
ことができる。次に、前の命令の実行を終了し、IQ356
にある命令の実行を開始したときはFPIA344のラツチに
捕捉されたアドレスは、FPIA344のレジスタに転送され
る。
FPIA344の出力は、以下に説明するように、双方向命
令アドレス・バツフア(IAB)346を介してFPU128の制御
ユニツトと、FQWR324の第2の入力に供給される。FQWR3
24は、HS326、FQDB342及びDBIOB306と共に、捕捉して記
憶した浮動小数点命令のアドレスをDBバス202に再び読
み出すことが可能な信号路を形成する。
IAB346は現在浮動小数点命令のアドレスをFPU128の制
御ユニツトに供給可能な信号路を形成する。更に、以下
で説明するように、IAB346は、浮動小数点マイクロコー
ドをDB202からFPU128の制御メモリに書き込み、FPU128
の制御メモリからDBバス202へ読み出す信号路を形成す
る。この浮動小数点マイクロコードを書き込む信号路は
DBバス202、FPIA344及びIAB346からなり、また読み込み
信号路はIAB346、FQWR324、HS326及びDBIOB306からな
る。
FPU128の全般的な構造及び動作を説明したので、次に
FPU128の浮動小数点制御ユニツトを説明しよう。
D.2.浮動小数点制御ユニツト(第3B図) 第3B図を参照すると、先に説明したように、FPU128の
マイクロコード制御を行なうFPU128の制御ユニツトに関
するブロツク図が示されている。先に説明したように、
FPU128の制御ユニツトはCPU122の指示に従つてオペラン
ド/データ読み出し及び書き込みを制御し、CPU122と同
じような方法によりAGU124から、即ちAGU124の命令キユ
ー及びデコード機構から送出された命令の管理従って浮
動小数点の処理を実行する。このような制御ユニツトの
処理及び設計は当該技術分野の当業者にとり周知なの
で、FPU128の制御ユニツトについて余す所なく詳細に説
明することはしないが、当該技術分野の当業者にとり、
この発明の典型的な動作環境を理解するのに必要とする
程度に説明する。
第3A図に示すように、FPU128の制御ユニツトは、FPU1
28の処理を指示するマイクロロード・ルーチンを記憶
し、かつ供給するコントローラ・ストア(CS)348を有
する。この実施例において、CS348は例えば電源投入診
断ルーチンを記憶するROM(読み出し専用メモリ)と、
命令マイクロコードを記憶するRAM(ランダム・アクセ
ス・メモリ)部とからなる。以下で説明するように、CS
348にはDBバス202からのデータ書き込み/読み出し信号
路が備えられている。
CS348の出力は図示のように、マイクロインストラク
ション・レジスタ(MIR)350の入力に接続されており、
MIR350は現在のマイクロ命令を捕捉し、かつ保持する。
MIR350の出力は、現在のマイクロ命令からなる複数のビ
ツトからなるものであり、FPU128の剰余の部分、例えば
SEP302、FQP304と、CPU122に対するFPU128の制御論理イ
ンタフエースとに供給され、FPU128の処理を制御してい
る。
CS348の出力は、更にIAB346に接続されているので、C
S348の内容をDBバス202に読み出し可能な信号路を形成
している。以下で説明するように、IAB346に対するこの
接続もマイクロコードをCS348に書き込み可能にする信
号路の一部を形成している。最後に、CS348の出力は、F
PU128が現在実行しているマイクロコード・ルーチンの
ページ番号を受け取つて記憶するページ数レジスタ(P
N)352に供給される。
先に説明したように、浮動小数点オペレーシヨンの実
行を管理する命令は、AGU124から、即ちIRO208から、CS
348において対応するマイクロ命令シーケンスの開始を
本体指示する命令アドレスの形式により送出される。第
3B図に示すように、AGU124のIRO208からのこの入力は、
インストラクシヨン・アドレス選択マルチプレクサ(IA
S)354に対する第1の入力として供給される。以下で説
明するように、IAS354は、IRO208を含む複数の信号源か
らCS348のマイクロコード・ルーチン開始アドレスを選
択して供給する動作をする。DSバス202から別の送出路
があること、即ちDBバス202に現れるある複数のビツト
を送出アドレスとして、又は送出アドレスの一部として
用いることができることに注意すべきである。
IRO208から入力されるFPU128の命令送出に関連して1
段インストラクシヨン・キユー(IQ)356があり、これ
によつて、FPU128が現在実行している命令に先だつて1
つの浮動小数点命令を受け取り、かつ記憶できるように
している。図示のように、IQ356の入力は、IRO208からI
AS354への入力と並列に接続され、またIQ356の出力はIA
S354の第2の入力に接続されている。
最後に、IAS354の第3の入力はPN352の出力に接続さ
れ、PN352は先に説明したように、FPU128の現在実行し
ているマイクロコード・ルーチンのページ数を記憶す
る。第4の入力はMIR350の出力に接続され、これも先に
説明したように、現在のマイクロ命令を保持する。
先に説明したIAS354の入力は、アドレス・シーケンス
・コントローラ(ASC)358の入力に供給される。ASC358
は更に現在実行しているマイクロ命令を含むこれらの入
力に応答し、必要とする逐次的なマイクロ命令を選択し
て現在の演算処理を選択する。ASC358は、例えばアドバ
ンスド・マイクロ・デバイシズ(Advanced Micro Devic
es)社の2911Aシーケンス・コントローラを有すること
が可能であり、またACS348のマイクロ命令アドレスから
なるASC358の出力はACS358のアドレス入力として供給さ
れる。図示のように、ASC358の出力はPN352にも供給さ
れ、新しいページ数の選択に用いられる。
FPU128の演算制御ユニツトの総合的な構造及び処理を
説明したので、CPU122を有するFPU128のインタフエース
を次に説明しよう。この点からCPU122に対するFPU128の
インタフエース構造を、主としてこの特定の設計に固有
な論理ゲートにより実現し、またこの論理ゲートが当該
技術分野における当業者にとり多くの他の方法により実
現できることに注意すべきである。従って、当該技術分
野における当業者は、CPU122によるFPU128のインタフエ
ースの構造及び処理をその間で授受される信号及びそれ
らの信号に基づいて実行される論理動作の説明からよく
理解できるであろう。従つて、この実施例で用いられる
特定のロジツクについては詳細に説明しない。しかし、
当該技術分野における当業者に対して、本発明を適切に
開示するために、これらの信号に基づく動作のインタフ
エース信号及び論理動作について詳細に説明する。
E.FPU128/CPU122インタフエース (第3A図、第4A図及び第4B図) 以下では先ずCPU122/FPU128のインタフエースの全般
的処理を説明し、次にその信号及び論理的な動作を詳細
に説明する。ここでは先に説明したように、FPU128はCP
U122と並列に動作して命令ストリームに現れる浮動小数
点命令を実行することに注意すべきである。本質的に、
命令ストリームに現れる浮動小数点命令、及び関連する
これらのオペランドは、CPU122により転送されて実行さ
るのではなく、非浮動小数点命令と同じような方法によ
りATU/C126からフエツチされ、FPU128によりロードされ
て実行される。従って、CPU122は浮動小数点命令の終了
を待つ必要もなく、少なくともある非浮動小数点命令の
実行を随意に開始できることから、浮動小数点処理及び
非浮動小数点処理は並行に実行可能である。
この点において更に、また以上で説明したように、FP
U128は命令/オペランド・フエツチ機構を有せず、また
それ自身がMM106や、DC216にキヤツシユした命令及びオ
ペランドにアクセスすることはしない。CPU122は、AGU1
24及びATU/C126と連係して動作しており、全ての命令及
びオペランド・フエツチ・オペランドと、FPU128に対す
る全てのデータ書き込みとを実行する。従つて、FPU128
は全てのオペランド/データ読み出し及び書き込みを実
行し、またAGU124から送出された命令の指示に基づき、
かつFPU128のインタフエースを介してCPU122に供給され
た制御信号に応答して全ての浮動小数点命令を実行す
る。また先に説明したように、FPU128とCPU122との動作
の調整は、FPU128からCPU122に供給された制御信号によ
り制御されている。
E.1浮動小数点処理の実行の概要 (第4A図及び第4B図) 先に説明したように、本発明のFPU128は、処理がCPU1
22及びFPU128側において調整及び協同動作を必要とする
ときにのみ、CPU122及びFPU128の動作を同期させること
により、CPU122の動作速度を増加させている。例えば、
与えられた浮動小数点処理は、処理の開始時にMM106か
らFPU128にオペランドを読み出すこと、又は浮動小数点
演算処理の終了時に、浮動小数点演算処理の結果による
オペランドをMM106に書き込むことを必要とすることが
ある。以上で説明したように、FPU128と授受される全て
のデータの転送は、DBバス202を介してCPU122により制
御される。従つて、これらの処理にはCPU122及びFPU128
の協力及び同期が必要である。他の実施例の場合は、オ
ペランドの送出源及び行き先は、全てFPU128、即ちERF3
08及びFQRF322である、この場合に、CPU122はFPU128に
オペランド・コードを渡すだけでよく、FPU128はCPU122
の処理の実行を独立して進めることができる。その場合
に、FPU128が浮動小数点演算処理を実行している間に、
CPU122は他の処理を実行することができる。更に、FPU1
28が処理を終了し、その結果が再びDB202に読み出され
た後にのみ、FPU128に対するCPU122のアテンシヨンが必
要となる。
この基本的な処理の結果、CPU122及びFPU128をその処
理において必要なときにのみ同期させ、CPU122及びFPU1
28の処理及びそれらのインタフエースは実行すべき命令
の形式に依存している。この理由から、全ての命令は4
形式に分けられ、かつCPU122及びFPU128の処理は命令が
属する形式に依存している。
以下で説明するように、命令の形式は、(a)命令が
FPU128とCPU122との間に処理のインターロツクを必要と
しない浮動小数点命令か、(b)FPU128とCPU122との間
で処理のインターロツクを必要とする浮動小数点命令
か、(c)FPU128とCPU122との間で処理のインターロツ
クを必要とする非浮動小数点命令か、又は(d)前記
(a)、(b)又は(c)の形式でない命令、即ち浮動
小数点命令でなく、かつFPU128及びCPU122との間で処理
のインターロツクを必要としない命令かに従つたものと
なる。
以上の命令の形式に関する定義から明らかなことは、
形式が2つの特徴により識別されることである。第1の
特徴は、命令が浮動小数点命令(FPUINST)であるか否
か、即ち命令が浮動小数点演算処理を必要とするか否か
である。第2の特徴は、命令が浮動小数点ロツク(EPUL
OCK)命令であるか否か、即ち命令がFPU128とCPU122の
処理のインターロツクを必要とするか否かである。
4形式の命令を更に詳細に説明すると、この実施例に
おいて定義された命令の4形式は、以上で定義した順序
で、次の用になる。
形式(a):FPUINST/NOT FPULOCK命令 この形式には全ての命令が含まれ、その実行には、FP
U128が実行する演算処理を必要とする。
FPUINST処理例には、全てのレジスタ対レジスタ浮動
小数点演算処理、即ちFPU128への、又は、FPU128のデー
タの転送を必要とすることなく、完全にFPU128内で実行
される全ての浮動小数点演算処理が含まれる。
更に形式(a)の命令の例には、オーバーフロー、ア
ンダーフロー、又は0による割算のようなFPU128の例外
条件が発生する可能性のある複数の浮動小数点演算処理
が含まれる。以下で説明するように、CPU122が命令アド
レスをDBバス202を介してFPU128に送出する場合は、上
記のように、命令アドレスはFRIA344に記憶され、FPU12
8の例外条件が発生した場合は、CPU122の要求時にFPU12
8が命令アドレス及び例外の識別をDBバス202を介してCP
U122に戻す。
形式(b):FPUINST/FPULOCK命令 この形式には、FPU128(FPUINST)による演算処理、
及びFPU128とCPU122との間の処理のインターロツク(FP
ULOCK)を必要とする全ての命令が含まれる。
本質的に、これらの命令には、FPU128に書き込む、又
はこれにより読み出すデータを必要とする全ての浮動小
数点処理命令、即ちCPU122の制御によりFPU128に、又は
FPU128からデータを転送する全ての浮動小数点演算処理
が含まれる。このような処理には、データをMM106からF
PU128に転送、又はデータをFPU128からMM106に記憶する
複数の処理が含まれる。先に説明したように、FPU128は
命令/オペランド・フエツチ機構に備えられていず、ま
たそれ自身がMM106に対し、またDC216にキヤツシユした
命令及びオペランドに対してアクセスすることはしな
い。CPU122は、AGU124及びATU/C126と連係して動作して
おり、全ての命令及びオペランド・フエツチ・オペラン
ドを処理し、FPU128に対する全てのデータ書き込みを実
行する。従つて、これらの処理はFPU128及びCPU122のイ
ンターロツクを必要とし、これにより命令はFPULOCK形
式の範疇内にある。
更に、形式(b)の命令の例にも、オバーフロー、ア
ンダーフロー、又は0による割算のようなFPU128の例外
条件が発生する可能性のある複数の命令が含まれる。以
下で説明するように、CPU122が命令アドレスをDBバス20
2を介してFPU128に送出する場合は、上記のように、命
令アドレスがEPIA344に記憶される。もし、FPU128の例
外条件が発生したときは、FPU128はCPU122の要求時に命
令アドレス及び例外の識別をDBバス202を介してCPU122
に返送する。
更に注意すべきことは、以下で更に説明するように、
CPU122が形式(b)の命令を送出しているときは、FPU1
28はアイドル状態にあるか、又はアイドル状態にならな
ければならないこと、またこれも以下で更に説明するよ
うに、それらの命令を実行中にCPU122とFPU128との間で
データを転送しているときは、FPU128の内部クロツクを
CPU122の内部クロツクに同期させることである。形式
(c):NOT FPUINST/FPULOCK命令 これらの命令には、FPU128及びCPU122のインターロツ
ク(FPULOCK)を必要とする全ての命令を含むが、FPU12
8による演算処理(NOT FPUINST)の実行は含まれない。
形式(c)の例には、本質的にプログラム制御及び実
行の流れがFPU128の状態または処理により影響を受ける
か、又はCPU122のプログラム環境を変化させる全ての処
理を含む。このような命令の例としては、呼出と、復帰
と、分岐と、書き込み、読み出し及びCPU122が保持して
いるプログラム・コントロール・ワードの状態に従う命
令とを含む複数の命令及び処理がある。
(b)及び(c)形式についての上記の説明から明ら
かなように、形式(b)及び(c)の命令は、FPU128と
CPU122との間における情報の転送を必要とする点、即ち
FPU128とCPU122との間にインターロツクを必要とする点
で同じであることに注意すべきである。
形式(d):NOT FPUINST/NOT FPULOCK命令 形式(d)の命令は、何れにしろFPU128を含まない、
即ちFPUINSTやFPULOCK命令でない全ての命令を本質的に
含む。この場合には、FPU128の状態を無視してCPU122及
びFPU128と並列に実行することができる。
4形式の命令についての以上の説明から明らかなよう
に、これらの4形式の命令はFPU128の処理に関連する2
グループに属する。その第1のグループは形式(b)及
び(c)からなり、その第2のグループは(a)からな
る。形式(b)及び(c)の命令に共通する特徴は、両
形式の命令がFPU128とCPU122との間で処理のインターロ
ツク、即ちFPULOCK命令を必要とすることである。形式
(a)の命令、即ちFPUINST命令は、FPU128による演算
処理を必要とする点で形式(b)の命令と同じである
が、FPU128とCPU122との間に処理のインターロツクを必
要としない点は異なる。形式(a)の命令は、形式
(c)の命令がFPUINST命令でない点で、形式(c)の
命令と異なる。
これらの特徴に従つた命令形式のグループ分けによ
り、また以下で説明するように、FPU128及びCPU122の相
互処理は命令が属するグループに依存している。即ち、
形式(b)及び(c)を含む第1グループか、又は形式
(a)を含む第2グループかによる。先に説明したよう
に、形式(b)及び(c)の命令に共通の特徴は、これ
らがFPU128及びCPU122のインターロツク、即ちFPULOCK
命令を必要とすることである。この理由から以下、第1
グループをFPULOCK命令と呼ぶことにする。同様に、形
式(a)の命令からなる第2グループの命令を以下、FP
UINST命令と呼ぶことにする。
第4A図及び第4B図を参照すると、それぞれFPULOCK命
令及びFPUINST命令の場合に、FPU128及びSLバス120の処
理を示すタイミング図が示されている。最初に、第4A図
及びFPULOCK命令を説明する。先に説明したように、FPU
LOCK命令は、FPU128がアイドル状態、即ちFPU128の命令
キユー(IQ356)が空であり、EPU128がFPULOCK命令を送
出する前に浮動小数点命令を実行していない状態となる
まで、CPU122を待機させることが必要となる。CPU122が
FPULOCK命令を送出しようとしているとき、FPU128がア
イドル状態にないとき、又は次のマイクロコード・サイ
クルでアイドル状態とならないときは、CPU122は送出例
外により待機状態に置かれる。更に、FPULOCK命令がFPU
128とCPU122との間でデータの転送を必要とするとき
は、FPU128の内部クロツクをCPU122の内部クロツクに同
期させなければならない。
第4A図及び第4B図では、FPU128及びCPU122の処理が同
期状態にある、即ちFPU128の内部クロツク及びCPU122の
内部クロツクが同期しているかのように表わされている
ことを注意すべきである。実際の処理では、内部クロツ
ク及びFPU128及びCPU122の処理を例えば1クロツク・サ
イクルの1/2だけオフセツトできるので、明確、かつ説
明を容易にするために、このような表示を用いるもので
ある。上記のように、送出した命令がその処理において
FPU128及びCPU122を同期させることが必要なときは、以
下に説明するインタフエース信号によりこの同期を実行
し、第4A図及び第4B図に表わすようにFPU128及びCPU122
の処理サイクルを同期状態にする。
第4A図を参照すると、CPU122がFPULOCK命令を送出し
ている連続的な5つのマイクロコード・サイクルが表わ
されている。期間1において、FPU128は命令0(INST
0)の実行(EXEC)を完了し、命令1(INST 1)を送出
している。INST 1は次の浮動小数点命令であり、IQ356
(Q INST)に保持されている。CPU122はFPULOCK命令(D
ISP)を送出しようとするが、FPU128がアイドル状態で
はないので、送出例外(DISPX)及び待機となる。期間
2においては、FPU128はINST 1を実行し、ここでもFPU1
28はINST 1状態ではないので、CPU122は再度DISPX及び
待機となる。期間3において、FPU128はINST 1の実行を
完了すので、次のマイクロコード・サイクルでアイドル
状態になる。従つて、CPU122は、次の浮動小数点命令で
ある命令2(INST 2)を送出することが可能となる。FP
U128はIQ356に命令を有するので、FPU128は期間3の開
始で直ちにINST 2を送出(DISP INST 2)し、期間4に
おいてINST 2の実行(EXEC INST 2)を開始する。
第4B図を参照すると、CPU122が非FPULOCK命令/FPUINS
T命令を送出している連続的な5つのマイクロコード・
サイクルが示されている。先に説明したように、FPUINS
T命令は、CPU122が次の命令を送出可能となる前に、FPU
128の命令キュー(IQ356)が空であることだけが必要で
ある。この条件が満足されず、かつCPU122がFPUINST命
令を送出しようとしているときは、CPU122は再び送出例
外をとり、待機状態になる。
期間1及び期間2において、FPU128はINST 0を実行
(EXEC INST 0)し、またINST 1がIQ356にキユー登録
(Q INST 1)されているので、CPU122がINST 2を送出
(DISP INST 2)しようとし、またFPU128がキユー登録
された命令を有するので、送出例外(DISPX)及び待機
状態になる。期間3において、FPU128はINST 0の実行
(EXEC INST 0)を完了するので、先に説明したよう
に、IQ356にキユー登録されたINST 1を送出(DISP INST
1)する。FPU128はINST 1を送出したので、FPU128の命
令キユーはいつぱいではなくなり、CPU122はINST 2を送
出(DISP INST 2)する。期間4において、FPU128はINS
T 1の実行(EXEC INST 1)を開始すると共に、INST 2が
IQ356に現れる(Q INST 2)。この期間において、FPU12
8はINST 1を実行いている間に、CPU122はINST 2の実行
(DISP INST 2)と関連してCPU122が実行すべきあらゆ
る処理の実行を開始することができる。
浮動小数点処理の送出及び実行に関連してFPU128及び
CPU122の処理を説明したが、これらの処理を調整するFP
U128及びCPU122のインタフエースの処理を以下に説明す
る。
E.2FPU128/CPU122インタフエース(第3B図) 先に説明したように、CPU122に対するFPU128のインタ
フエース構造は、主としてこの設計に特有な論理ゲート
により実現され、このインタフエース・ゲートを当該技
術分野における当業者が他の多くの方法により実現する
ことも可能である。従つて、当該技術分野における当業
者には、CPU122によるFPU128のインタフエースの構造及
び処理を、それらの間において授受される信号及びこれ
らの信号により実行される論理動作の説明から充分に理
解できるであろう。従つて、この実施例で用いた特定の
ロジツクを詳細に説明することはしない。しかし、この
信号により実行されたインタフエース信号及び論理的な
動作は、当該の技術分野における当業者に対してこの発
明を適切に開示するため、以下に詳細に説明する。
第3B図を参照すると、FPU128の制御構造がここにも示
されており、これにはCPU/FPUインタフエース・ロジツ
ク(CFIL)360と、FPU128及びCPU122を介して授受され
上記3種の命令についての処理を調整する信号と、が含
まれている。先に説明したように、このインタフエース
においてCPU122から、特にCPU122のMC226からFPU128に
供給される8つの主要信号と、CPU122に、即ちFPU128か
らMC226に供給される4つの信号とがある。FPU128及CPU
122の処理の調整に関連してこれらの信号及びこれらの
論理動作を次に説明しよう。
先ず、これらの信号のうちでCPU122がFPU128に供給す
る信号を説明する。
CLK(Clock) FPU128及びCPU122がそれらに固有の内部クロツクを駆
動し、処理のタイミングを制御する総括的なPU104のク
ロツクである。
BCPUCLK(バツフア化されたCPU122クロツク) CPU122の内部クロツク。BCPUCLKはCPU122のマイクロ
コード・サイクルを定める。即ち、1 BCPUCLK期間はCPU
122のマイクロ命令を実行する時間であり、マイクロ命
令に従つて変わる。通常、BCPUCLKノ基本的な期間は120
nc(ナノ秒)であり、60nsまで延長することができる。
BCPUCLKは、FPU128がCPU122のマイクロサイクルが終了
した状態、つまりCPU122がマイクロ命令を終了した状
態、及びCPU122からFPU128の複数のレジスタ、即ちFRF3
08、EWR310、FQRF322及びFQWR324にデータをロードした
状態を判断する際に用いる。
BTRAP(バツフア付きトラツプ(TRAP)) CPU122が成長する信号であり、CPU122がTRAP状態にな
つたことを示す。CPU122のクロツクはトラツプ処理のた
めに120nsだけ延長され、全てのCPU122のコマンドは無
効にされる。以下で説明するように、インタフエース信
号FPUDXはBTRAPによりゲートされるので、FPUDXはCPU12
2のトラツプ条件に基づいて無効にされる。
EC(終了サイクル) CPU122が生成する信号であり、CPU122のサイクルの終
了を示す。ECは、FPU128が使用する信号であり、CPU122
からデータを読み出すときにFPU128の内部クロツクを保
留する。例えば、以下で説明するように、CPU122がFPUD
Xを出したときに、FPU128がECを使用してFPU128の内部
クロツクをCPU122のクロツクに同期させる。FPU128がア
イドル状態にあるときは、FPU128の更にECに応答し、即
ち次のFPUINST命令の送出を予測してその動作をCPU122
の動作に同期させる。
FPUDX(FPU128送出) CPU122が生成する信号であり、CPU122がDBバス202上
にFPU128に対するデータを送出していること、又はCPU1
22がDBバス202上でFPU128からのデータを探しているこ
とと、及びFPU128はDBバス202上にデータを送出すべき
こととをFPU128に知らせるものである。
FPUI(FPU128命令) CPU122から出される信号であり、DBバス202から次の
命令の送出情報(アドレス)を受け取るようにFPU128に
指令するものである。FPUIが出されたときは、CPU122が
FPU128にコマンドを送出していることをFPU128に知らせ
る。以下で説明するが、CPU122はFPUIを送出する前にイ
ンタフエース信号FPUID及びFPUAVを試験しなければなら
ないことと、及びCPU122はインタフエース信号FPUABを
出すときにはFPUIの意味及びオペレーションを変更すう
ことに注意すべきである。
LFPUI(FPU128命令をロード) AGU124から出される信号であり、FPU128にIR0から次
に送出される情報を受け取らせる。LFPUIの送出によ
り、CPU122がFPU128によりサービスを要求する命令を丁
度送出したことをFPU128に知らせる。
FPUAB(FPUがアボート) FPU128の待機状態を解除するために、即ち、FPU128の
内部クロツクを停止してCPU122によるデータ転送の完了
を待機し、FPU128を強制的に送出状態にするときにCPU1
22から送出される信号である。FPU128が待機状態にある
ときは、FPU128の命令キユーが空であり、強制送出はFP
U128をアイドル状態に置くことに注意すべきである。FP
U128が待機状態でないときは、FPU128の動作には影響が
ない。以下で説明するが、FPUIと同時にされるものはFP
UABの意味及びオペレーションを変化させることにも注
意すべきである。
LDFPIA(EPIA344をロード) この信号はFPUI及びFPUABの論理「積」により発生し
てCPU122から送出され、FPU128に対して前に送出した命
令の命令アドレスによりFPU128がDB202からFPIA344をロ
ードする。
ここで、FPU128からCPU122に供給されるインタフエー
ス信号について説明する。これらの信号には次のものが
ある。
FPUID(FPU128がアイドル状態) FPU128が生成する信号であり、FPU128が現在アイドル
状態にあること、即ちFPU128の命令キユーIQ356が空で
あり、FPU128には例外が存在しない。即ちFPU128は保留
状態ではないことを示す。
FPUAV(FPU128が利用可能) FPU128が発生する信号であり、FPU128の命令キユーIQ
356が空であり、又は次の命令サイクルで空となるこ
と、かつ以下で説明するように、FPUXPが送出されてい
ず、かつこれから送出することもないことを示す。
EPUXP(FPU128の例外保留) FPU128は生成する信号であり、オーバーフロー、アン
ダーフロー又は0による割算のような浮動小数点例外条
件の存在をFPU128が検出したことを示す。
FPCC(FPU128条件コード) FPU128が生成する条件コードであり、CPU122が保持し
ているプログラム制御ワードに現れる条件コードの一部
として、またこれと同様に用いられ、CPU122に供給され
るものである。FPCCは、条件コードが更新される可能性
のある命令をFPU128に送出する際に、FPU128からCPU122
に供給される。従つて、CPU122はその命令の実行中の適
当な時期に条件コードをチエツクする。
以上で、この発明の現に好ましい一実施例の説明を終
了する。上記の本発明は、その精神又は本質的な特徴か
ら逸脱することなく、他の特定の形式に実施することが
できるものであることに注意すべきである。従つて、こ
の実施例はいかなる意味においても例示であつて、限定
するものでないこと、この発明の範囲は以上の詳細な説
明によるのではなく、特許請求の範囲により示されるこ
と、特許請求の範囲の意味及び同等なものの範囲内に含
まれる全ての変更は本発明に含まれるべきであることを
理解すべきである。
【図面の簡単な説明】
第1図はこの発明に関連するコンピユータ・システムの
ブロツク図、 第2図はこの発明に関連するコンピュータ・システムに
おける中央処理ユニツトのブロツク図、 第3A図は浮動小数点ユニツトの演算プロセツサを示すブ
ロツク図、 第3B図は浮動小数点ユニツトの制御ユニツトを示すブロ
ツク図、 第4A図及び第4B図はCPU122及びFPU128がそれぞれ送出し
て実行するFPULOCK及びFPUINSTを示すタイミング図であ
る。 102…システム、106…主メモリ(MM)、116…双方向性
システム・アドレス(SA)バス、118…双方向性システ
ム・データ(SD)バス、128…浮動小数点ユニツト(FP
U)、122…中央処理ユニツト(CPU)、202…内部データ
・バス(DB)、208…インストラクシヨン・レジスタ0
(IR0)、210…送出アドレス発生レジスタ(DAG)、226
…マイクロシーケンサ、306…データ・バスI/Oバツフ
ア、344…浮動小数点命令アドレス・レジスタ(FPI
A)、346…双方向命令アドレス・バツフア(IAB)、348
…コントローラ・ストア(CS)、350…マイクロインス
トラクシヨン・レジスタ(MIR)、360…CPU/FPUインタ
フエース・ロジツク(CFIL)。

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】浮動小数点命令を含む命令及びオペランド
    を記憶するメモリ手段(106)と、前記命令及び前記オ
    ペランドをフエッチしデコードする手段(122、124)を
    含む中央処理手段と、前記中央処理手段と前記メモリ手
    段との間に接続されたバス手段(116、118、202)と、
    前記バス手段に接続され、前記フエッチしデコードする
    手段から受信したデコードされた浮動小数点命令に応答
    して浮動小数点処理を実行する浮動小数点手段(128)
    と、を備える情報処理システム(102)において、浮動
    小数点命令の実行を制御する装置であって、 浮動小数点命令が、前記浮動小数点手段と前記中央処理
    手段との間のオペレーションのインターロックを要求す
    る第1グループの命令の一要素か、又は前記浮動小数点
    手段と前記中央処理手段との間のオペレーションのイン
    ターロックを要求しない第2グループの命令の一要素
    か、を判断する手段(226)と、 前記浮動小数点手段がアイドル状態か、又は利用可能状
    態か、を判断する手段(360)と、 前記第1グループの命令及び前記浮動小数点手段のアイ
    ドル状態の発生に応答して、前記浮動小数点手段に対し
    前記第1グループの命令を送出して実行させ、かつ、前
    記第2グループの命令及び前記浮動小数点手段の利用可
    能状態の発生に応答して、前記浮動小数点手段に対し前
    記第2グループの命令を送出して実行させる手段(20
    8)と、 を備えることを特徴とする装置。
  2. 【請求項2】前記浮動小数点手段に、 動作の各サイクルにおいて、前記浮動小数点手段が利用
    可能状態にあるか、又はアイドル状態にあるかを判断
    し、 前記浮動小数点手段が次の命令を受け取ることができる
    ときは、前記中央処理手段に利用可能信号を送出し、 前記浮動小数点手段が次の命令を受け取ることができ、
    かつ命令を現在実行していないか又は次の動作のサイク
    ルで命令を実行しないときは、前記中央処理手段にアイ
    ドル信号を送出する手段(350、360)を備える、 特許請求の範囲第1項に記載の装置。
  3. 【請求項3】前記浮動小数点手段は、前記中央処理手段
    のデコード手段に接続され、現在実行している命令に先
    だち、複数の命令を受け取って記憶する命令キュー手段
    (356)を有し、 前記浮動小数点手段は、前記命令キュー手段の次の命令
    用の記憶位置に空きがあるときは、次の命令を随意に受
    け取り可能である、 特許請求の範囲第2項記載の装置。
  4. 【請求項4】前記中央処理手段に、浮動小数点命令の発
    生に応答して、前記中央処理手段が浮動小数点命令を検
    出したことを示すロード命令信号を前記浮動小数点手段
    に送出する手段(226、360)を備え、 前記浮動小数点手段に、前記中央処理手段からのロード
    命令信号に応答して、前記中央処理手段のデコード手段
    から前記浮動小数点命令を受け取る手段(360)を備え
    る、 特許請求の範囲第1項に記載の装置。
  5. 【請求項5】前記中央処理手段及び前記浮動小数点手段
    はそれらのオペレーション・サイクルを独立して制御す
    る内部クロック手段をそれぞれ備え、 前記中央処理手段及び前記浮動小数点手段は互いに独立
    して命令を実行可能であり、 前記中央処理手段のクロックは前記浮動小数点手段に供
    給され、更に 前記中央処理手段に、 前記浮動小数点手段と前記メモリ手段との間でデータの
    転送を要求される前記第1グループの浮動小数点命令に
    応答して、前記浮動小数点手段に、データ転送を実行す
    べきことを示すデータ転送信号を送出し、かつ前記中央
    処理手段のオペレーションに応答して、前記バス手段が
    データ転送のために利用可能状態であることを示す中央
    処理手段サイクル終了信号を送出する手段(210、226、
    360)を備え、かつ 前記浮動小数点手段に、 前記中央処理手段サイクル終了信号及び前記データ転送
    信号に応答して、前記中央処理手段のクロックに前記浮
    動小数点手段のクロックを同期させ、前記命令により要
    求されるデータ転送を実行する手段(360、348、350)
    を備える、 特許請求の範囲第1項に記載の装置。
  6. 【請求項6】前記中央処理手段及び前記浮動小数点手段
    は、それらのオペレーションサイクルを独立して制御す
    る内部クロック手段をそれぞれ備え、 前記中央処理手段及び前記浮動小数点手段は、互いに独
    立して命令を実行可能とし、 前記中央処理手段のクロックを前記浮動小数点手段に供
    給し、更に、 前記中央処理手段に、 前記中央処理手段のオペレーションに応答して、前記バ
    ス手段がデータ転送のために利用可能状態であることを
    示す中央処理手段サイクル終了信号を送出する手段(21
    0、226、360)を備え、 前記浮動小数点手段に、 前記中央処理手段サイクル終了信号及びデータ転送信号
    と、前記浮動小数点手段のアイドル状態の存在とに応答
    して、前記中央処理手段のクロックに浮動小数点手段の
    クロックを同期させる手段(360、348、350)を備え
    る、 特許請求の範囲第1項に記載の装置。
  7. 【請求項7】前記中央処理手段に、 浮動小数点命令の発生を検出し、且つ浮動小数点命令を
    送出していることを示す命令信号を前記浮動小数点手段
    へ送出する手段(210、226、230)を備え、 前記浮動小数点手段に、 前記バス手段に接続され、前記浮動小数点手段により実
    行される浮動小数点命令のアドレスを受け取り且つ記憶
    する命令アドレス手段(344、346)と、 前記命令信号に応答して、前記バス手段から前記命令ア
    ドレス手段に前記アドレスをロードする手段(306)
    と、を備える、 特許請求の範囲第1項に記載の装置。
  8. 【請求項8】前記浮動小数点手段に、 浮動小数点命令の実行に応答して、例外条件の発生を検
    出し、そして、前記浮動小数点手段に例外条件を検出し
    たときは、前記中央処理手段に、例外条件が発生したこ
    とを示す例外信号を送出し、且つ前記例外条件が発生し
    た前記浮動小数点命令のアドレスを前記命令アドレス手
    段から前記バス手段に転送する手段(348、350、360、3
    46)を備え、 前記中央処理手段に、 前記例外信号に応答して、前記バス手段から前記アドレ
    スを受け取り、対応する例外処理のオペレーションを開
    始する手段(360、226)を備える、 特許請求の範囲第7項に記載の装置。
  9. 【請求項9】前記第1グループの命令は、前記浮動小数
    点手段への、又は前記浮動小数点手段からのデータの転
    送を要求する命令を含む、 特許請求の範囲第1項に記載の装置。
  10. 【請求項10】前記第1グループの命令は、その実行に
    より前記中央処理手段のオペレーションに影響を与え得
    る命令を含む、 特許請求の範囲第1項に記載の装置。
JP61302748A 1985-12-19 1986-12-18 浮動小数点演算処理装置 Expired - Lifetime JPH083786B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/810,795 US4763294A (en) 1985-12-19 1985-12-19 Method and apparatus for floating point operations
US810795 1985-12-19

Publications (2)

Publication Number Publication Date
JPS62156735A JPS62156735A (ja) 1987-07-11
JPH083786B2 true JPH083786B2 (ja) 1996-01-17

Family

ID=25204726

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61302748A Expired - Lifetime JPH083786B2 (ja) 1985-12-19 1986-12-18 浮動小数点演算処理装置

Country Status (6)

Country Link
US (1) US4763294A (ja)
EP (1) EP0226226B1 (ja)
JP (1) JPH083786B2 (ja)
AU (1) AU582917B2 (ja)
CA (1) CA1253621A (ja)
DE (1) DE3678677D1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1327080C (en) * 1987-05-26 1994-02-15 Yoshiko Yamaguchi Reduced instruction set computer (risc) type microprocessor
JPH0719204B2 (ja) * 1987-09-17 1995-03-06 筑波大学長 浮動小数点演算方式
JPH0679307B2 (ja) * 1987-10-22 1994-10-05 日本電気株式会社 コプロセッサの並行動作制御方式
US4823260A (en) * 1987-11-12 1989-04-18 Intel Corporation Mixed-precision floating point operations from a single instruction opcode
US5247628A (en) * 1987-11-30 1993-09-21 International Business Machines Corporation Parallel processor instruction dispatch apparatus with interrupt handler
US5268856A (en) * 1988-06-06 1993-12-07 Applied Intelligent Systems, Inc. Bit serial floating point parallel processing system and method
US5153848A (en) * 1988-06-17 1992-10-06 Bipolar Integrated Technology, Inc. Floating point processor with internal free-running clock
JP2858140B2 (ja) * 1988-10-19 1999-02-17 アポロ・コンピューター・インコーポレーテッド パイプラインプロセッサ装置および方法
US5062041A (en) * 1988-12-29 1991-10-29 Wang Laboratories, Inc. Processor/coprocessor interface apparatus including microinstruction clock synchronization
US4982428A (en) * 1988-12-29 1991-01-01 At&T Bell Laboratories Arrangement for canceling interference in transmission systems
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5134693A (en) * 1989-01-18 1992-07-28 Intel Corporation System for handling occurrence of exceptions during execution of microinstructions while running floating point and non-floating point instructions in parallel
GB2230119B (en) * 1989-04-07 1993-04-21 Intel Corp Conditional execution speed-up on synchronizing instructions
US5214765A (en) * 1989-08-31 1993-05-25 Sun Microsystems, Inc. Method and apparatus for executing floating point instructions utilizing complimentary floating point pipeline and multi-level caches
JP2682232B2 (ja) * 1990-11-21 1997-11-26 松下電器産業株式会社 浮動小数点演算処理装置
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
JP2549256B2 (ja) * 1992-12-01 1996-10-30 インターナショナル・ビジネス・マシーンズ・コーポレイション 浮動小数点プロセッサへデータを転送する方法及び装置
US5586332A (en) * 1993-03-24 1996-12-17 Intel Corporation Power management for low power processors through the use of auto clock-throttling
JP3145545B2 (ja) * 1993-10-18 2001-03-12 松下電器産業株式会社 メモリアクセス装置
EP0666525B1 (en) * 1994-02-04 2001-09-12 Intel Corporation Method and apparatus for control of power consumption in a computer system
US5557734A (en) * 1994-06-17 1996-09-17 Applied Intelligent Systems, Inc. Cache burst architecture for parallel processing, such as for image processing
US5968162A (en) * 1996-04-02 1999-10-19 Advanced Micro Devices, Inc. Microprocessor configured to route instructions of a second instruction set to a second execute unit in response to an escape instruction
US7373440B2 (en) 1997-12-17 2008-05-13 Src Computers, Inc. Switch/network adapter port for clustered computers employing a chain of multi-adaptive processors in a dual in-line memory module format
US6076152A (en) * 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US7565461B2 (en) 1997-12-17 2009-07-21 Src Computers, Inc. Switch/network adapter port coupling a reconfigurable processing element to one or more microprocessors for use with interleaved memory controllers
US6192438B1 (en) * 1998-09-18 2001-02-20 Lg Information & Communications, Ltd. U-interface matching circuit and method
US6934828B2 (en) * 2002-09-17 2005-08-23 Intel Corporation Decoupling floating point linear address
US7225324B2 (en) 2002-10-31 2007-05-29 Src Computers, Inc. Multi-adaptive processing systems and techniques for enhancing parallelism and performance of computational functions
US7765386B2 (en) * 2005-09-28 2010-07-27 Intel Corporation Scalable parallel pipeline floating-point unit for vector processing
US7890686B2 (en) * 2005-10-17 2011-02-15 Src Computers, Inc. Dynamic priority conflict resolution in a multi-processor computer system having shared resources
US7716100B2 (en) * 2005-12-02 2010-05-11 Kuberre Systems, Inc. Methods and systems for computing platform
US8914618B2 (en) * 2005-12-29 2014-12-16 Intel Corporation Instruction set architecture-based inter-sequencer communications with a heterogeneous resource

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3871578A (en) * 1972-10-10 1975-03-18 Digital Equipment Corp Data processing system for multiplying and intergerizing floating point numbers
US4128876A (en) * 1977-04-28 1978-12-05 International Business Machines Corporation Synchronous microcode generated interface for system of microcoded data processors
US4161784A (en) * 1978-01-05 1979-07-17 Honeywell Information Systems, Inc. Microprogrammable floating point arithmetic unit capable of performing arithmetic operations on long and short operands
US4229801A (en) * 1978-12-11 1980-10-21 Data General Corporation Floating point processor having concurrent exponent/mantissa operation
US4338675A (en) * 1980-02-13 1982-07-06 Intel Corporation Numeric data processor
US4509116A (en) * 1982-04-21 1985-04-02 Digital Equipment Corporation Special instruction processing unit for data processing system
US4612628A (en) * 1983-02-14 1986-09-16 Data General Corp. Floating-point unit constructed of identical modules
US4589067A (en) * 1983-05-27 1986-05-13 Analogic Corporation Full floating point vector processor with dynamically configurable multifunction pipelined ALU
JPS6043751A (ja) * 1983-08-18 1985-03-08 Hitachi Ltd 情報処理装置

Also Published As

Publication number Publication date
EP0226226A2 (en) 1987-06-24
US4763294A (en) 1988-08-09
AU6483386A (en) 1987-06-25
EP0226226B1 (en) 1991-04-10
JPS62156735A (ja) 1987-07-11
EP0226226A3 (en) 1988-08-24
AU582917B2 (en) 1989-04-13
CA1253621A (en) 1989-05-02
DE3678677D1 (de) 1991-05-16

Similar Documents

Publication Publication Date Title
JPH083786B2 (ja) 浮動小数点演算処理装置
US4594655A (en) (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US4639886A (en) Arithmetic system having pipeline structure arithmetic means
CA1176757A (en) Data processing system for parallel processings
US5093908A (en) Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor
US5006980A (en) Pipelined digital CPU with deadlock resolution
US4430707A (en) Microprogrammed digital data processing system employing multi-phase subroutine control for concurrently executing tasks
JPH02227769A (ja) データ処理システム
WO1994003860A1 (en) Massively parallel computer including auxiliary vector processor
JP3607476B2 (ja) マイクロプロセッサ内の共有データパスを介して整数データ及び浮動小数点データを通信する方法並びに処理装置
JPH0731597B2 (ja) 複数のマイクロプログラム制御式処理装置を備えるプロセッサ
US4562538A (en) Microprocessor having decision pointer to process restore position
US5029073A (en) Method for fast establishing a co-processor to memory linkage by main processor
US5590351A (en) Superscalar execution unit for sequential instruction pointer updates and segment limit checks
US5062041A (en) Processor/coprocessor interface apparatus including microinstruction clock synchronization
CA2123448C (en) Blackout logic for dual execution unit processor
AU644065B2 (en) Arithmetic unit
CN100507835C (zh) 用于改善按次序的处理器的性能的方法和系统
JP2001142699A (ja) パイプラインプロセッサにおける命令データの転送メカニズム
US5299318A (en) Processor with a plurality of microprogrammed units, with anticipated execution indicators and means for executing instructions in pipeline manner
JPH096610A (ja) データ処理システムにおいて複合命令の実行中にオペランドを交換するための方法およびシステム
US6012139A (en) Microprocessor including floating point unit with 16-bit fixed length instruction set
KR0136111B1 (ko) 데이터요소의 수정장치 및 그 방법
JPS5828609B2 (ja) トクシユメイレイシヨリソウチ
JPS6134186B2 (ja)

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term