JPH0581015A - パイプライン演算制御方法およびシステム - Google Patents

パイプライン演算制御方法およびシステム

Info

Publication number
JPH0581015A
JPH0581015A JP5793492A JP5793492A JPH0581015A JP H0581015 A JPH0581015 A JP H0581015A JP 5793492 A JP5793492 A JP 5793492A JP 5793492 A JP5793492 A JP 5793492A JP H0581015 A JPH0581015 A JP H0581015A
Authority
JP
Japan
Prior art keywords
instruction
state
register
interrupt
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP5793492A
Other languages
English (en)
Other versions
JP2778610B2 (ja
Inventor
Gakuo Asakawa
岳夫 浅川
Aiichiro Inoue
愛一郎 井上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP5793492A priority Critical patent/JP2778610B2/ja
Publication of JPH0581015A publication Critical patent/JPH0581015A/ja
Application granted granted Critical
Publication of JP2778610B2 publication Critical patent/JP2778610B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 パイプライン演算制御方法およびシステムに
関し、命令のインターロックによる遅れを無くして高速
化を図ることを目的とする。 【構成】 第1の命令が最終ステートの前に2つ以上の
演算ステートを有しており、特別のステートを第1の命
令に続く第2の命令の最終ステートとして挿入可能で、
第2の命令の演算ステートが1マシンサイクル内で実行
される場合、第2の命令の処理を演算ステートから特別
のステートに移行させ、第1の命令の最終ステートと第
2の命令の特別のステートとを同時に実行させる、パイ
プライン演算制御方法およびシステム。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はパイプライン演算制御方
法及びシステムに関し、特にパイプライン擾乱を防止し
てパイプライン命令を高速に実行するパイプライン演算
制御方法及びシステムに関する。
【0002】
【従来の技術】パイプライン処理においては、1つの命
令処理をステートと称する複数の処理に分割して、複数
の命令が並列に実行される。1つの命令の少なくとも2
つの連続するステートが同一である場合、これらのステ
ートはインターロックされさたステートと呼ばれる。イ
ンターロックされさたステートにおいては、同一のハー
ドウエアが使用される。したがって、第1の命令と並列
に実行される第2の命令に関しては、第1の命令と第2
の命令の両方で同一のハードウエアを使用することを避
ける為に、インターロックされさたステートが処理され
る時間と同時に処理されるステートは第1の命令のイン
ターロックされさたステートと異なる必要がある。この
ために、後に詳細に図面により説明するように、従来
は、第1の命令に続く命令の処理が遅れた。この遅延を
パイプライン擾乱と称する。
【0003】この結果、従来は、1つの命令にインター
ロックされたステートがあると、その第1の命令に続く
命令は必然的に遅れた。図13は従来のパイプライン演
算制御の一例を示す説明図である。同図において、各命
令はこの例ではDステート、Aステート、Tステート、
Bステート、Eステート、及びWステートの6段のステ
ートで構成されている。これらのステートを順次処理す
ることにより1個の命令の処理が終了する。
【0004】Dステートでは命令のデコード(解読)が
行われ、Aステートでは、オペランドアドレス又はデコ
ードされた命令のターゲット命令アドレスが計算され、
TステートではTLB(変換索引緩衝機構,TRANSLATIO
N LOOKASIDE BUFFER) の索引が行われてキャッシュメモ
リ(バッファメモリ)をアクセスするためのアドレスが
求められ、Bステートではキャッシュ( またはバッフ
ァ) からの読み出しが行われ、Eステートでは演算の実
行が行われ、Wステートでは演算結果がレジスタに格納
れれる。
【0005】先ず命令1が開始され、命令1がAステー
トに移行すると同時に命令2のDステートが開始され
る。更に、命令2がAステートに移行すると同時に、命
令3のDステートが開始される。以降、同様にして複数
の命令(図では命令6まで)が順次実行されていく。こ
うして、複数の命令が互いに並列に実行されていく。こ
の実行はパイプラインの流れに似ている。したがって、
この演算はパイプライン演算と呼ばれている。
【0006】命令1のステートがステートAに移行する
と、次の命令2のステートはステートDに移行する。命
令2のステートがステートAに移行すると、次の命令3
のステートはステートDに移行する。こうして、複数の
命令で異なるタイミングに同一のハードウエアを使用す
ることにより、パイプライン演算が順次実行される。こ
のようなパイプライン演算が可能なためには、同時に複
数の命令の同じステートをセットしないようにすること
が必要である。例えば、図13における時刻Tについて
見ると、命令1はEステートであり、命令2はBステー
トであり、命令3はTステートであり、命令4はAステ
ートであり、命令5はDステートである。したがって、
同一の時点で同一のステートが重なることはないように
なっている。これは、同一のステートは同一のハードウ
エアを使用するからである。もし2つの命令で同一ステ
ートを同時に処理しようとすると、ハードウエアが競合
することになる。
【0007】各命令の各ステートで行われる処理に使用
されるオペランドコードのような情報はパイプラインタ
グと呼ばれるレジスタに格納される。パイプラインタグ
はシフトレジスタで構成される。パイプライン処理の進
展に伴って、パイプラインタグの内容は隣接するタグに
シフトされる。1つのステートの処理に要する時間を1
マシンサイクルと称する。パイプライン処理が理想的に
終了すれば、N個の命令はNマシンサイクルで終了する
ように見え、処理の高速化が図れることになる。
【0008】図14は1つの命令を実行するための従来
のパイプラインシステムの一例を示すブロック図であ
る。同図において、ハードウエア構成が各ステートと対
応させて示されている。Dステートでは、オペコードが
デコードされて、オペランド中のベースレジスタ番号B
及びインデックスレジスタ番号Xが得られる。こうして
得られたベースレジスタ番号B及びインデックスレジス
タ番号Xにより、レジスタスタック(汎用レジスタGR
及び浮動小数点レジスタFRを含む)がアクセスされて
アドレス計算用のデータが読み出され、ベースレジスタ
2及びインデックスレジスタ3にセットされる。
【0009】次のステートAでは、レジスタ2及び3の
出力が加算器4により加算され、その結果が有効アドレ
スとしてレジスタ5にセットされる。Tステートでは、
レジスタ5にセットされた有効アドレスがTLB(変換
索引緩衝機構)6に入力され、変換された実アドレスが
TLB6からレジスタ7にセットされる。続くBステー
トでは、レジスタ7にセットされた実アドレスが読み出
され、LBS8(主記憶データの一部のコピーを保持す
ることにより高速アクセスを可能にするローカルバッフ
ァストレージ)にアドレスとして入り、該LBS8から
対応するデータが読み出され、レジスタ9にセットされ
る。
【0010】続くEステートでは、レジスタ9の内容に
対して演算器11により演算が実行され、その演算結果
がレジスタ12にセットされる。次のWステートでは、
レジスタ12から読み出された演算結果データがレジス
タスタック13に書き込まれる。次の命令では、このレ
ジスタシタック13の内容がレジスタオペランドバス1
4を介してレジスタ10にセットされ、該次の命令のE
ステートで演算器11に送ることができるようになって
いる。
【0011】
【発明が解決しようとする課題】パイプライン処理を行
う情報処理装置においては、パイプライン処理を理想的
に動作させることを妨げる要因として、パイプラインイ
ンターロックが存在する。パイプラインインターロック
の代表的なものとして、演算処理が1サイクルで終わら
ないためのEステートインターロックがある。例えば、
浮動小数点命令では、桁合わせに1サイクルと加算演算
に1サイクルの計2サイクルを必要としている。したが
って、このような浮動少数点命令のような命令の実行に
は、1サイクル毎に命令を処理することができない。
【0012】図15はパイプラインインターロックの説
明図である。同図において、命令1から6の各々におけ
るEステートが2サイクルを必要としているとする。し
たがって、命令1のEステートが2サイクルを必要とす
るので、命令1の第2のEステートの時に次の命令2の
Bステートは、ハードウエアの競合を避けるためにEス
テートに移行することができず、この結果命令2のBス
テートは2サイクルを使用することになる。したがっ
て、命令1は7サイクルで終了しているのに、命令2以
降では、各命令長が順次1サイクルづつ増加していく。
この結果、命令5のDステートに2サイクルを要する。
こうして、命令6の開始が図13の場合と比較して1サ
イクルだけ遅れている。その理由は、命令1のEステー
トが2サイクルかかることの影響が命令5まで波及し、
命令5のDステートが2サイクルとなっているためであ
る。
【0013】図16は改良されたパイプライン処理の従
来の他の方法を示す図である。図15により説明した不
具合を解消するために、図16に示す方法では、演算ス
テートであるEステートを更にパイプライン化してEス
テートとVステートに分割する。即ち、図16では、図
15に示した全ての命令のインターロックされさたEス
テートの各々をEステートとVステートに分割して、パ
イプライン処理を行っている。この場合には、1つの命
令のWステートは次の命令のVステートと競合しないの
で、図13に示した処理と同様のスムースな処理が可能
となり、各命令のDステート命令は順次1サイクル遅れ
て実行されるようになるので、図15のように命令5で
Dステートが2サイクルとはならない。。
【0014】しかしながら、Vステート付き命令とVス
テート無しの命令とが続けて実行される場合には、依然
として命令に遅れが発生してしまう。図17は図16で
示した従来方法における問題点の説明図である。命令1
がVステート付き、命令2がVステート無し、命令3以
降がVステート付きであるとする。従来技術において
は、全ての命令はWステートで終了しなければならな
い。したがって、もし命令2がVステート無しであれ
ば、命令2が先行する命令1のWステートを越えてしま
うのを防止するために、先行する命令1がWステートに
移行する前に命令2はインターロックされなければなら
ない。一般に、Eステートにおいては、一定のクロック
信号で演算装置が動作する。これに対して、Bステート
では演算装置はまだ動作せず、データがキャッシュから
読み出されるかオペランドがレジスタから読み出され、
読み出されたデータまたはオペランドが演算装置に入力
されるだけである。したがって、Bステートは自由にイ
ンターロックできる。このために、命令2はBステート
を2サイクル使用することによりインターロックされ
る。こうして、命令1がEステートとVステートを実行
している間は、命令2はBステートに維持される。命令
2がBステートを維持している2サイクルの間は、以降
の命令は次のステートに移行できないので、各命令は前
のステートを2サイクルだけ維持する。
【0015】この結果、命令5がDステートを2サイク
ル分だけ維持し、命令6は命令5のDステートが終了し
てからDステートに入る。この結果、命令5と命令6と
の間に1サイクルの遅れが発生してしまう。本発明の目
的は、従来の方法における上記問題を解決し、インター
ロックによる命令の処理の遅れを無くして処理の高速化
を図ることのできるパイプライン演算制御方法及びシス
テムを提供することにある。
【0016】
【課題を解決するための手段】図1及び図2は本発明の
原理を示すフローチャートである。パイプライン処理に
よる複数の命令を実行し、該命令の各々は、最終ステー
トとその最終ステートの前の少なくとも1つの演算ステ
ートとを含む複数のステートのシーケンスを有するパイ
プライン演算制御方法における、連続する第1および第
2の命令のパイプライン処理において、本発明による方
法は、第1の命令が最終ステートの前に2つ以上の演算
ステートを有しているかどうかを判別する第1のステッ
プS61と、特別のステートを第2の命令の最終ステー
トとして挿入可能かどうか、および第2の命令の演算ス
テートが1マシンサイクル内で実行されるかどうか、を
判別する第2のステップS62と、第1のステップS6
1で第1の命令が2つ以上の演算ステートを有している
と判定し、且つ、第2のステップで特別のステートを第
2の命令の最終ステートとして挿入可能であり、且つ、
第2の命令の演算ステートが1マシンサイクル内で実行
されると判定したとき、第2の命令の処理を演算ステー
トから特別のステートに移行するステップS63とを備
え、第1の命令の最終ステートと第2の命令の特別のス
テートとを同時に実行するステップS64とを備えるパ
イプライン演算制御方法である。
【0017】本発明の他の態様によれば、パイプライン
処理による複数の命令を実行するパイプライン演算制御
システムであって、命令の各々は最終ステートとその最
終ステートの前の少なくとも1つの演算ステートとを含
む複数のステートのシーケンスを有しており、第1の命
令が最終命令の前に2つ以上の演算ステートを含んでい
る場合、第1の命令に続く第2の命令が特別のステート
を第2の命令の最終ステートとして含んでおり、特別の
ステートは第1の命令の最終ステートと競合するもので
はなく、第1の命令の最終ステートと第2の命令の特別
のステートとが同時に実行され、システムは、第1の命
令の実行の後に割り込みが発生しない限り第2の命令の
アドレスを格納し、第1の命令の実行の後に割り込みが
発生した場合は第1の命令のアドレスを格納するプログ
ラムステータスワード命令アドレスレジスタ(PSWI
AR)を具備する、パイプライン演算制御システムが提
供される。
【0018】
【作用】第1の命令の通常のパイプライン最終処理を行
うステートWと同時にセットされ得る特別のステートS
を第2の命令の最終ステートとし、それにより、命令が
この特別のステートSに遷移している場合には、特別の
ステートの命令とこれに先行する命令のパイプライン処
理を同時に終了させるようにしている。これにより、以
降の命令の処理に遅れが出ないので、命令の遅れを無く
して高速化を図ることができる。
【0019】
【実施例】図1及び図2により本発明の実施例を詳細に
説明する。図1において、ステップS61で、第1の命
令の処理中に、第1の命令の処理がEステートからVス
テートに移行するかどうかが判定され、もしそうであれ
ば、ステップS62で、第1の命令のWステートと競合
しない特別のステートSを第2の命令の最終ステートと
して挿入可能かどうかが判定される。もし可能であれ
ば、ステップS63で、第2の命令の最終ステートをE
ステートからSステートに移行させる。ついで、ステー
トS64で、第1の命令のWステートと第2の命令のS
ステートが同時に実行される。ついで、ステップS65
で、第1の命令の実行により割り込みが発生したかどう
かを判定する。もし答えがイエスであれば、ステップS
66で、第1の命令の命令終了タグが保持される。ここ
で、命令終了タグとは命令長コード(ILC)及び例外
有効コード(XV)のことである。もし命令1によって
割り込みが発生していなければ、第2の命令による割り
込みと判断してステップS67で、第2の命令の命令終
了タグが保持される。ついで、ステップS68で、第1
の命令または第2の命令の命令終了タグからプログラム
ステータスワード命令アドレスレジスタ(PSWIA
R)の内容が得られる。
【0020】ステップS61またはS62で、答えがノ
ーであれば、図2のステップS690からS694で、
図16または図17に示した従来のパイプライン処理が
実行される。即ち、ステップS690で、第2の命令の
最終2ステートをVステートとWステートにし、ステッ
プS691で、第1の命令のWステートと第2の命令の
Vステートを同時に実行し、ステップS692で、第1
の命令のPSWIARの内容が得られ、ステップS69
3で第2の命令のWステートが実行され、ステップS6
94で、第2の命令のPSWIARの内容が得られる。
【0021】本発明の実施例によれば、第2の命令に特
別のステートSを設定可能で第1の命令と第2の命令を
同時に終了させることができれば、第2の命令以降の命
令は遅れることがないので処理を高速に行える。Sステ
ートとは、第2の命令がSステートに移行できる場合に
第2の命令のパイプライン処理を終了させるための第2
の命令の最終ステートである。
【0022】図3は本発明の実施例によるパイプライン
処理の説明図である。同図において、命令1の後にSス
テートを含む命令2(以下Sサイクル命令とも称する)
が来ている。このSサイクル命令2の最後の2ステート
において、パイプライン処理ステートはEステートから
Sステートに遷移している。換言すれば、Sサイクル命
令はEステートの後にVステートを含んでいない。した
がって、パイプライン終了処理、即ち、Sサイクル命令
2の直前の命令1のWステートとSサイクル命令2のS
ステートとは、同時に実行される。Sステートは第1の
命令のWステートと競合しないように選ばれている。即
ち、第1の命令のWステートで用いられるハードウエア
は第2の命令のSステートで用いられるハードウエアと
は異なる。更に、Sサイクル命令のEステートは第1の
命令のVステートと競合しないように選ばれている。こ
の結果、Sサイクル命令のBステートは1サイクル内に
収まり、したがって、各命令のDステートは待機するこ
とを強いられていので図17の従来の場合に比べて時間
が1サイクルだけ短くなっている。図3においては、第
1の命令1のWステートの時間に、命令1のWステート
の情報とSサイクル命令のSステートの情報とによって
2つの命令のパイプライン終了処理が同時に行われる。
【0023】図4は本発明の実施例により、浮動小数点
加算命令(AD)と特別のステートSがある場合のスト
ア命令のパイプライン処理の動作説明図である。図4に
おいて、ストア命令はその最終ステートにSステートを
含んでいる。浮動小数点加算命令(AD)の結果をスト
ア命令で用いない場合、浮動小数点加算命令(AD)と
は異なる以前に実行された命令の結果が、ストア命令に
よって格納されている。即ち、浮動小数点加算命令(A
D)以外の以前に実行された命令にしたがって格納され
た、レジスタ13の内容は、ストア命令のBステートで
読み出されてレジスタ10にセットされ、セレクタ23
はレジスタ10の出力を選択してレジスタ10の内容が
セレクタ23及びキャッシュストレージバス(CSB)
21を介してストアデータレジスタ(STDR)22に
セットされる。
【0024】これに対して、浮動小数点加算命令の結果
をストア命令でストアする場合は、セレクタ23は、A
D命令のEステートで行われた演算の結果が格納されて
いるレジスタ12の出力を選択し、レジスタ12の内容
はセレクタ23及びCSB21を介してストアデータレ
ジスタ(STDR)22に格納される。ストアデータレ
ジスタ(STDR)22への格納動作はSステートにお
いて直ちに行われる。
【0025】この結果、AD命令の結果を格納する場合
は、レジスタ12のデータがセレクタ23を介してST
DR22にセットされる。この結果、AD命令のWステ
ートとストア命令のSステートは同時に終了する。スト
ア命令のBステートは1サイクルだけなので、命令6の
開始時に2サイクルの遅れはない。図4において、スト
ア命令に続く命令はVステート無しの命令である。した
がって、ストア命令がBステートを2サイクルにわたっ
て持っていないので、第3の命令及びそれ以降の命令に
ロスタイムは生じていない。
【0026】しかしながら、Sステートは常に命令に挿
入されるとは限らず、Sステート無しの命令を実行する
ことも可能である。図5は、本発明の実施例によりSス
テートを最終ステートに含んでいないストア命令の説明
図である。この場合、その動作は従来のストア命令の動
作と同様である。即ち、レジスタスタック13から読み
出された内容は、Bステートでレジスタ10にセットさ
れる。レジスタ10の出力はWステートでCSB21を
介してストアデータレジスタ(STDR)22にセット
される。ついで、STDR22から、データが読み出さ
れてキャッシュ又は主記憶に格納される。このSTDR
22にデータがセットされてストア命令のパイプライン
処理は終了する。
【0027】図6は本発明の実施例により、ストア命令
がその最終ステートにSステートを含んでいない場合の
加算命令とストア命令の動作説明図である。図はA命令
(固定少数点加算命令)の結果をストアする場合を示
す。この場合、動作は従来の動作と同様である。即ち、
加算命令とストア命令とが互いに関係していない場合、
加算命令にしたがって、演算器11における演算結果は
レジスタ12にセットされ、レジスタ12の内容はレジ
スタスタック13にセットされる。また、レジスタスタ
ック13にセットされた上記A命令以外の命令により以
前に格納されたデータは、ストア命令にしたがって、B
ステートでレジスタスタック13から読み出され、レジ
スタ10にセットされる。レジスタ10の内容はストア
命令のEステートでセレクタ23により選択されてST
DR22にセットされる。
【0028】これに対し、A命令の結果をストア命令に
よりSTDR22に格納する場合は、演算器11による
Eステートでの演算結果はA命令のEステートでレジス
タ12にセットされ、レジスタ12の内容はストア命令
のEステートでセレクタ23によりレジスタ10の代わ
りに選択されてCBS21に出力されストア命令のEス
テートでSTDR22にセットされる。
【0029】この結果、レジスタ13の内容が読み出さ
れてストアされるというシーケンスでは命令に2サイク
ルを要するが、レジスタの内容をSTDR22に直接書
き込むことにより、A命令にEステートのインターロッ
クがない場合には、ストア命令を1サイクルで実行する
ことが可能である。このことは、従来方法と同様であ
る。
【0030】第2の命令がその最終ステートにSステー
トを含んでいる場合、第1の命令と第2の命令が同時に
終了するので、プログラムステータスワード命令アドレ
スレジスタPSWIARは、Sステート付きの命令が終
了したかSステート無しの命令が終了したかに係わら
ず、プログラムの正しいアドレスを格納するように設計
しなければならない。
【0031】図7は1つの命令に対するタグレジスタを
示すブロック図である。同図において、Dステートで、
オペランドコードが命令レジスタから読み出される。こ
のオペランドコードに基づいて、命令長コード(IL
C)がILC発生回路112により生成される。命令長
コードILCはAステートでA−ILCレジスタ113
に、TステートでT−ILCレジスタ114に、Bステ
ートでB−ILCレジスタ115に、そしてEステート
でE−ILCレジスタ116に、順次シフトされる。E
ステートの後に、この命令のステートがEステートから
Wステートに変わると、セレクタ30はWステートでE
−ILCレジスタ内のILCを選択してW−ILCレジ
スタ31に格納する。ステートがEステートからVステ
ートに変わると、VステートでILCがV−ILCレジ
スタ117に格納され、セレクタ30はV−ILCレジ
スタ117内のILCを選択してW−ILC31に格納
する。ステートがEステートからSステートに変わる
と、ILCはE−ILCレジスタ116からS−ILC
レジスタ32にシフトされる。これらのレジスタA−I
LC、T−ILC、B−ILC、E−ILC、V−IL
C、S−ILC、及びW−ILCはタグレジスタと呼ば
れる。
【0032】図8はプログラムステータスワード命令ア
ドレスレジスタ(PSWIAR)を更新する回路を示す
ブロック図である。同図において、30はセレクタ、3
1はW−ILCレジスタまたは言い換えればWステート
命令長レジスタ、32はS−ILCレジスタまたは言い
換えればSステート命令長レジスタ、33は加算器、3
4はセレクタ、35は加算器、そして36はPSWIA
Rである。
【0033】命令長コードILCの各々は、その最終ス
テートとしてWステートを有するWステート命令のタ
グ、即ち、タグW−ILCとして、または、その最終ス
テートとしてSステートを有するSステート命令のタ
グ、即ち、タグS−ILCとして保持される。W−IL
C(Wステートにある命令の命令長コード)は、V−I
LC(Vステートにある命令の命令長コード)またはE
−ILC(Eステートにある命令の命令長コード)をセ
レクタ30を介してセットすることによりレジスタ31
にセットされる。一方、S−ILC(Sステートにある
命令の命令長コード)はE−ILCによりレジスタ32
にセットされる。ここで、V−ILCとはVステートで
実行されている命令の命令長コードをいい、E−ILC
はEステートで実行されている命令の命令長コードをい
う。
【0034】加算器33はW−ILCとS−ILCとを
加算する。セレクタ34はW−ILCと加算器33の出
力W−ILC+S−ILCのうちいずれか一方を選択す
る。セレクタ34の出力は加算器35でPSWIAR3
6の出力に加算される。PSWIAR36の出力はレジ
スタ10(図5参照)に入力される。PSWIAR36
は、命令処理の最終ステート,即ち最後のWステートも
しくはSステートで更新される。したがって、、PSW
IAR36の内容は処理された最後の命令のアドレスを
示している。割り込みが生じた場合、PSWIAR36
が用いられて割り込みを生じた命令を指定する。そのた
めに、PSWIAR36の内容は、ハードウエアによる
割り込み処理中にレジスタ10からCBS21を経由し
て、指定された主記憶領域に旧PSWとして格納され、
割り込み処理プログラムにより参照される。ここで、特
にセレクタ34の選択条件について説明する。セレクタ
34でW−ILCが選択される条件は、Wステートの命
令、即ち、最終ステートがWステートである命令でプロ
グラム割り込みが検出された場合である。図3の場合の
例はプログラム割り込みが命令1で検出された場合であ
る。PSWIAR36が命令1が終了していることを示
している場合、そして命令1の実行中に割り込みが検出
された場合、Sステート命令(上述の例ではストア命
令)の実行は抑止されなければならない。ストア命令の
抑止は、図4のストアデータレジスタ(STDR)22
へのデータの格納動作を禁止し、且つ、セレクタ34が
図7および図8のW−ILC31の出力を選択するよう
にすることにより実行される。
【0035】命令1の実行の後に割り込みが生じない場
合、セレクタ34は加算器33の出力を選択して2つの
命令、即ち、第1の命令と第2の命令の命令長コードが
PSWIAR36の内容に加算される。したがって、P
SWIAR36はその時点ではSステート命令までが終
了していることを示している。図9は本発明の実施例に
よるパイプライン演算制御方法における、図8に示した
プログラムステータスワード命令アドレスレジスタの動
作を説明するフローチャートである。
【0036】図9において、ステップS71で、第1の
命令の最終2ステートはVステートからWステートに変
化するか、または、第2の命令の最終2ステートがEス
テートからSステートに変化する場合、ステップS72
で、セレクタ30は第1の命令のV−ILC(Vステー
トにある命令の命令長コード)を選択してW−ILC3
1にセットし、第2の命令のE−ILC(Eステートに
ある命令の命令長コード)がS−ILC32にセットさ
れる。ついで、ステートS73で、加算器33はW−I
LCとS−ILCを加算する。ステートS74で、割り
込みが第1の命令により生じたかどうかを判定する。も
し答えがイエスであれば、ステートS75で、セレクタ
34はW−ILCレジスタ31を選択して加算器35は
PSWIAR+W−ILCを新たなPSWIARとして
出力する。ステートS74で割り込みが第1の命令によ
り生じなかった場合、ステップS79で、セレクタは加
算器33の出力を選択し、加算器35はPSWIAR+
S−ILC+W−ILCを新たなPSWILCとして出
力する。
【0037】ステップS71で、第1の命令の最終2ス
テートがVステートからWステートに変化しない場合、
または第2の命令の最終2ステートがEステートからS
ステートに変化しない場合、ステップS76で、命令の
最終2ステートがEステートからWステートに変化する
かどうかを判別する。もしそうであれば、ステップS7
7で、E−ILCがW−ILC31にセットされる。次
いで、ステップS78で、W−ILCがPSWIAR3
6の内容に加算されその加算結果がPSWIAR36に
ストアされる。この場合、Sステート命令は存在しな
い。
【0038】図10は本発明の実施例において用いられ
る例外コードレジスタを示すブロック図である。同図に
おいて、141はプログラム割り込みを検出するプログ
ラム割り込み検出回路である。回路141が命令のEス
テート中にプログラム割り込みを検出すると、例外有効
コードEXVと例外コードEXCを生成する。例外有効
コードXVは割り込み条件が存在していることを示すコ
ードである。例外コードXCは割り込みの原因を示すコ
ードである。ここで、例えばEXVおよびEXCの頭に
ある文字Eは、割り込みがEステート中に検出されたこ
とを意味する。
【0039】命令のステートがEステートからWステー
トに変化すると、セレクタ146はEXVを選択して例
外有効コードEXVを格納するWXVレジスタ143に
格納し、セレクタ40はEXCを選択してWXCレジス
タ41に格納する。命令のステートがEステートからV
ステートに変化した場合は、EXVはVXVレジスタ1
42およびセレクタ146を経由してWXVレジスタ1
43にシフトされ、EXCはVXCレジスタ145およ
びセレクタ40を経由してWXCレジスタ41にシフト
される。命令のステートがEステートからSステートに
変化した場合は、EXVはSXVレジスタ144にスト
アされ、EXCはSXCレジスタ42にストアされる。
【0040】図11は本発明の実施例によるプログラム
割り込みコードレジスタ更新の回路例を示すブロック図
である。割り込みが発生すると、割り込みの原因も保持
しなければならない。命令長コードILCと同様に、例
外コードXCはVステート命令またはEステート命令の
タグVXCまたはEXCとして保持される。VXCとE
XCのいずれか一方がセレクタ40により選択されてW
XCレジスタ41に格納される。EXCはSXCレジス
タ42にセットされる。
【0041】セレクタ43でWXCまたはSXCが選択
され、プログラム割り込みコードレジスタ(PGMI
C)44にセットされる。PGMIC44の内容はハー
ドウエアによる割り込み処理中に、指定された主記憶領
域に格納される。ここで、セレクタ43では、Wステー
トで割り込み条件がある場合にはWXCを、割り込み条
件がWステートになくSステートにある場合にはSXC
を選択してPGMIC44を更新する。WおよびSステ
ートともに割り込み条件がない場合には、PGMIC4
4は更新しない。
【0042】図12は図11に示したプログラム割り込
みコードレジスタの動作を説明するフローチャートであ
る。同図において、ステップS160で、第1の命令の
ステートがVステートからWステートに変化し、且つ、
第2の命令のステートがEステートからSステートに変
化するかどうかを判別する。もしそうであれば、ステッ
プS161でセレクタ40はVXCを選択してWXCレ
ジスタ42に格納する。ついで、ステップS162で、
割り込み原因が第1の命令にあるかどうかを判別する。
もしそうであれば、ステップS163で、セレクタ43
はWXCを選択してPGMIC44に格納する。ステッ
プS162で、割り込みが第1の命令によって生じたも
のでない場合、ステップS164で第2の命令が割り込
み原因かどうかを判別する。もしそうであれば、ステッ
プS165で、セレクタ43はSXCを選択してPGM
IC44に格納する。ステップS166で答えがノーで
あれば、ステップS167で割り込みがWステート命令
により生じたかどうかを判別する。もしそうであれば、
ステップS168で、セレクタ43はWXCを選択して
PGMIC44に格納する。
【0043】上記の記載では、ストア命令を用いて本発
明の実施例を詳しく説明したが、本発明はこれに限るも
のではない。WステートにおいてPSWIARの操作等
の他にはハードウエア資源の衝突が生じないケースの全
ての場合に本発明を適用することができる。そのような
例として、例えば浮動少数点命令と条件分岐命令との組
合せが考えられる。
【0044】この場合にも、条件分岐命令をEステート
からSステートに遷移させることにより、図3に示した
ように先行する命令と同時に条件分岐命令を終了させ
て、性能向上(高速化)を図ることができる。この場合
に、先に説明したストア命令と異なるのは、条件分岐命
令のSステートにおいて、パイプラインタグとして持っ
ている分岐のターゲットアドレスによってPSWIAR
を入れ換えるかどうかを先行する浮動少数点命令に関す
る例外事象および自身の分岐の成立・不成立によって制
御する操作が入る点である。
【0045】
【発明の効果】以上、詳細に説明したように、本発明に
よれば、通常のパイプライン処理を行うステートと同時
にセットされうる特別なステートを別に設け、命令がこ
の特別なステートに遷移しうる場合には2個の命令のパ
イプライン終了処理を同時に行うようにすることによ
り、命令の遅れを無くして高速化を図ることができるパ
イプライン演算制御方法およびシステムを提供すること
ができる。
【図面の簡単な説明】
【図1】本発明の原理および実施例によるパイプライン
演算制御方法の動作を説明するフローチャートである。
【図2】本発明の原理および実施例によるパイプライン
演算制御方法の動作を説明するフローチャートである。
【図3】本発明の実施例によるパイプライン演算制御方
法におけるステートの遷移を示す図である。
【図4】本発明の実施例により、浮動小数点加算命令と
ストア命令のパイプライン動作の動作説明図である。
【図5】本発明の実施例により、特別のステートがない
場合のストア命令の動作説明図である。
【図6】本発明の実施例により、特別のステートがない
場合の加算命令とストア命令とのパイプライン動作の動
作説明図である。
【図7】本発明の実施例において用いられるタグレジス
タを示すブロック図である。
【図8】本発明の実施例による、PSWIAR更新回路
の例を示すブロック図である。
【図9】本発明の実施例によるパイプライン演算制御方
法におけるプログラムステータスワード命令アドレスレ
ジスタの動作を説明するフローチャートである。
【図10】本発明の実施例において用いられる例外コー
ドレジスタを示すブロック図である。
【図11】本発明の実施例によるプログラム割り込みコ
ードレジスタ更新回路の例を示すブロック図である。
【図12】本発明の実施例によるパイプライン演算制御
方法におけるプログラム割り込みコードレジスタの動作
を説明するフローチャートである。
【図13】パイプライン処理の従来例を示す図である。
【図14】従来のパイプラインシステムの例を示すブロ
ック図である。
【図15】従来のパイプラインシステムにおけるパイプ
ラインインターロックを説明する図である。
【図16】従来のパイプライン処理の改良を示す図であ
る。
【図17】従来のシステムにおける問題の説明図であ
る。
【符号の説明】
10,12…レジスタ 13…レジスタスタック 21…キャッシュ・ストレージ・バス(CSB) 22…ストア・データ・レジスタ(STDR) 23…セレクタ

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 パイプライン処理による複数の命令を実
    行し、該命令の各々は、最終ステートとその最終ステー
    トの前の少なくとも1つの演算ステートとを含む複数の
    ステートのシーケンスを有するパイプライン演算制御方
    法における、連続する第1および第2の命令のパイプラ
    イン処理において、該方法は、 該第1の命令が該最終ステートの前に2つ以上の演算ス
    テートを有しているかどうかを判別する第1のステップ
    と、 特別のステートを該第2の命令の最終ステートとして挿
    入可能かどうか、および該第2の命令の演算ステートが
    1マシンサイクル内で実行されるかどうか、を判別する
    第2のステップと、 該第1のステップで該第1の命令が2つ以上の演算ステ
    ートを有していると判定し、且つ、該第2のステップで
    該特別のステートを該第2の命令の最終ステートとして
    挿入可能であり、且つ、該第2の命令の演算ステートが
    1マシンサイクル内で実行されると判定したとき、該第
    2の命令の処理を該演算ステートから該特別のステート
    に移行するステップとを備え、 該第1の命令の最終ステートと該第2の命令の特別のス
    テートとは同時に実行される、パイプライン演算制御方
    法。
  2. 【請求項2】 パイプライン処理による複数の命令を実
    行し、該命令の各々は、最終ステートとその最終ステー
    トの直前の少なくとも1つの演算ステートとを含む複数
    のステートのシーケンスを有するパイプライン演算制御
    方法における、連続する第1および第2の命令のパイプ
    ライン処理において、該方法は、 該第1の命令が該最終命令の直前に2つ以上の演算ステ
    ートを有しているかどうかを判別する第1のステップ
    と、 該第1の命令の最終ステートと競合しない特別のステー
    トを該第2の命令の最終ステートとして挿入可能かどう
    か、および該第2の命令の演算ステートが1マシンサイ
    クル内で実行されるかどうか、を判別する第2のステッ
    プと、 該第1のステップで該第1の命令が該最終命令の直前に
    2つ以上の演算ステートを有していると判定し、且つ、
    該第2のステップで該特別のステートを該第2の命令の
    最終ステートとして挿入可能であり、且つ、該第2の命
    令の演算ステートが1マシンサイクル内で実行されると
    判定したとき、該第2の命令の処理を該演算ステートか
    ら該特別のステートに移行するステップとを備え、 該第1の命令の最終ステートと該第2の命令の特別のス
    テートとは同時に実行される、パイプライン演算制御方
    法。
  3. 【請求項3】 該第1の命令と該第2の命令を同時に実
    行した後に、第1の命令および第2の命令の実行を完了
    するためおよび該第1の命令および第2の命令に続く命
    令の順序を制御するために必要な情報を格納するステッ
    プをさらに備える、請求項の2に記載の方法。
  4. 【請求項4】 該第1の命令および第2の命令の実行を
    完了するためおよび該第1の命令および第2の命令に続
    く命令の順序を制御するために必要な該情報とは、割り
    込みを起こした命令の位置および割り込みの原因を指定
    するために必要な情報である、請求項の3に記載の方
    法。
  5. 【請求項5】 該第1の命令の実行の直後に割り込みが
    発生した場合、該第1の命令および第2の命令の実行を
    完了するためおよび該第1の命令および第2の命令に続
    く命令の順序を制御するために必要な該情報とは、該第
    1の命令の実行後のパイプライン処理を継続するために
    必要な情報である、請求項の3に記載の方法。
  6. 【請求項6】 該第1の命令および第2の命令の実行の
    後に、該第1の命令の実行完了の直後に割り込みが発生
    しない場合、該第1の命令および第2の命令の実行を完
    了するためおよび該第1の命令および第2の命令に続く
    命令の順序を制御するために必要な該情報とは、該第2
    の命令の実行の後のパイプライン処理を継続するために
    必要な情報である、請求項の3に記載の方法。
  7. 【請求項7】 割り込みを起こした命令の位置を指定す
    るために必要な情報とは、プログラム割り込みを引き起
    こすための情報である、請求項の4に記載の方法。
  8. 【請求項8】 該プログラム割り込みを引き起こすため
    の情報とは、命令のオペランドアクセスにおいて検出さ
    れたアクセス例外である、請求項の7に記載の方法。
  9. 【請求項9】 該プログラム割り込みを引き起こすため
    の情報とは、該第1または該第2の命令の実行中に検出
    されたプログラム事象記録を指定するための情報であ
    る、請求項の7に記載の方法。
  10. 【請求項10】 該プログラム割り込みを引き起こすた
    めの情報とは、プログラム割り込みを引き起こすのに必
    要な制御情報である、請求項の7に記載の方法。
  11. 【請求項11】 該第1の命令および第2の命令の実行
    を完了するためおよび該第1の命令および第2の命令に
    続く命令の順序を制御するために必要な情報とは、割り
    込みを起こした命令のアドレスであり、該アドレスは,
    PSWアドレスレジスタに格納される、請求項の3に記
    載の方法。
  12. 【請求項12】 パイプライン処理による複数の命令を
    実行するパイプライン演算制御システムであって、該命
    令の各々は最終ステートとその最終ステートの前の少な
    くとも1つの演算ステートとを含む複数のステートのシ
    ーケンスを有しており、第1の命令が最終命令の前に2
    つ以上の演算ステートを含んでいる場合、該第1の命令
    に続く第2の命令が特別のステートを該第2の命令の最
    終ステートとして含んでおり、該特別のステートは該第
    1の命令の最終ステートと競合するものではなく、該第
    1の命令の最終ステートと該第2の命令の特別のステー
    トとが同時に実行され、該システムは、 該第1の命令の実行の後に割り込みが発生しない限り該
    第2の命令のアドレスを格納し、該第1の命令の実行の
    後に割り込みが発生した場合は該第1の命令のアドレス
    を格納するプログラムステータスワード命令アドレスレ
    ジスタ(PSWIAR)を具備する、パイプライン演算
    制御システム。
  13. 【請求項13】 該第1の命令が最終ステートの直前に
    少なくとも2つの演算ステートを有する場合に該第1の
    命令の命令長コードを格納するか、または、該第2の命
    令が該特別のステートを有していない場合に該第2の命
    令の命令長コードを格納する第1のレジスタ(W−IL
    C)と、 該第2の命令が該特別のステートを有している場合にの
    み該第2の命令の命令長コードを格納する第2のレジス
    タ(S−ILC)と、 該第1のレジスタ(W−ILC)の内容と該第2のレジ
    スタ(S−ILC)の内容とを加算する第1の加算手段
    (33)と、 該第2の命令が該特別のステートを有していない場合に
    のみ該第1のレジスタ(W−ILC)の出力を選択し、
    該第2の命令が該特別のステートを有している場合にの
    み該加算手段(33)の出力を選択する選択手段(3
    4)と、 該選択手段(34)の出力と該プログラムステータスワ
    ード命令レジスタ(PSWIAR)の出力とを加算する
    第2の加算手段(35)とをさらに具備する請求項の1
    2に記載のシステム。
  14. 【請求項14】 該選択手段(34)は、該第1の命令
    の実行において割り込みが検出されると、該加算手段
    (33)の出力の選択を禁止する禁止手段を具備する、
    請求項の13に記載のシステム。
  15. 【請求項15】 割り込みの原因を格納するプログラム
    割り込みコードレジスタ(PGMIC)を更に具備する
    請求項の12に記載のシステム。
  16. 【請求項16】 第1の割り込み内容格納レジスタ(W
    XC)、第2の割り込み内容格納レジスタ(SXC)、
    該第1の割り込み内容格納レジスタ(WXC)の内容ま
    たは該第2の割り込み内容格納レジスタ(SXC)の内
    容を選択して該プログラム割り込みコードレジスタ(P
    GMIC)に入力するレジスタ出力選択手段(43)を
    具備し、該第1の割り内容格納レジスタ(WXC)は該
    第1の命令が最終ステートの直前に少なくとも2つの演
    算ステートを有している場合に該第1の命令の割り込み
    内容を登録し、該第2の命令が該特別のステートを有し
    ていない場合に該第2の命令の割り込み内容を登録し、
    該第2の割り込み内容格納レジスタ(SXC)は、該第
    2の命令が該特別のステートを有している場合にのみ該
    第2の命令の割り込み内容を登録し、該レジスタ出力選
    択手段(43)は該第1の割り込み内容格納レジスタ
    (SXC)が該第2の命令の割り込みの内容を格納しな
    い限り該第2の割り込み内容格納レジスタ(SXC)の
    出力を選択する、請求項の15に記載のシステム。
JP5793492A 1991-03-14 1992-03-16 パイプライン演算制御方法およびシステム Expired - Lifetime JP2778610B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5793492A JP2778610B2 (ja) 1991-03-14 1992-03-16 パイプライン演算制御方法およびシステム

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP3-49730 1991-03-14
JP4973091 1991-03-14
JP5793492A JP2778610B2 (ja) 1991-03-14 1992-03-16 パイプライン演算制御方法およびシステム

Publications (2)

Publication Number Publication Date
JPH0581015A true JPH0581015A (ja) 1993-04-02
JP2778610B2 JP2778610B2 (ja) 1998-07-23

Family

ID=26390174

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5793492A Expired - Lifetime JP2778610B2 (ja) 1991-03-14 1992-03-16 パイプライン演算制御方法およびシステム

Country Status (1)

Country Link
JP (1) JP2778610B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001243066A (ja) * 2000-02-29 2001-09-07 Fujitsu Ltd パイプライン処理方法並びにその方法を利用するパイプライン処理装置
KR100732426B1 (ko) * 2000-02-29 2007-06-27 후지쯔 가부시끼가이샤 고속 컨텍스트 전환을 갖는 컴퓨터

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001243066A (ja) * 2000-02-29 2001-09-07 Fujitsu Ltd パイプライン処理方法並びにその方法を利用するパイプライン処理装置
KR100732426B1 (ko) * 2000-02-29 2007-06-27 후지쯔 가부시끼가이샤 고속 컨텍스트 전환을 갖는 컴퓨터

Also Published As

Publication number Publication date
JP2778610B2 (ja) 1998-07-23

Similar Documents

Publication Publication Date Title
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
US4430706A (en) Branch prediction apparatus and method for a data processing system
US4187539A (en) Pipelined data processing system with centralized microprogram control
US4409654A (en) Data processor adapted for interruption to an instruction stream
US6055625A (en) Pipeline computer with a scoreboard control circuit to prevent interference between registers
EP0155211A2 (en) System for by-pass control in pipeline operation of computer
KR0138468B1 (ko) 마이크로 컴퓨터
EP0094535B1 (en) Pipe-line data processing system
EP0093430B1 (en) Pipeline data processing system
EP0378415A2 (en) Multiple instruction dispatch mechanism
EP0297943B1 (en) Microcode reading control system
EP0223150B1 (en) Information processing apparatus
EP0164418B1 (en) Microprogram control system
JP2778610B2 (ja) パイプライン演算制御方法およびシステム
US5548736A (en) Method and apparatus overcoming delay introduced by instruction interlocking in pipelined instruction execution
US5276853A (en) Cache system
JP2783285B2 (ja) 情報処理装置
US5093784A (en) Data processor with efficient transfer between subroutines and main program
JPH06131180A (ja) 命令処理方式および命令処理装置
JP2812610B2 (ja) パイプライン制御方式
JPS6411973B2 (ja)
JP2643399B2 (ja) 情報処理装置
JP4564025B2 (ja) 情報処理装置における割り込み処理方法
JPS586972B2 (ja) 情報処理装置
JPS61100836A (ja) 移動命令論理比較命令処理方式

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 19980324