JP2953451B2 - 割り込み処理方法 - Google Patents
割り込み処理方法Info
- Publication number
- JP2953451B2 JP2953451B2 JP35771297A JP35771297A JP2953451B2 JP 2953451 B2 JP2953451 B2 JP 2953451B2 JP 35771297 A JP35771297 A JP 35771297A JP 35771297 A JP35771297 A JP 35771297A JP 2953451 B2 JP2953451 B2 JP 2953451B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- exception
- entry
- entry number
- occurrence
- 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
Links
Landscapes
- Advance Control (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、リオーダバッファ
等を使用して命令追い越し制御が行われる情報処理装置
のパイプライン処理における割り込み処理方法に関す
る。
等を使用して命令追い越し制御が行われる情報処理装置
のパイプライン処理における割り込み処理方法に関す
る。
【0002】
【従来の技術】プロセッサの実行性能の向上を妨げる要
因の一つにデータ制約がある。データ制約とは、ある命
令の演算結果を参照する後続の命令は、先行する命令の
実行が終了するまで実行を開始できないことをいう。こ
のデータ制約のために、命令の実行を開始できず、プロ
セッサ内の演算パイプラインが停止し、実行性能の低下
が引き起こされる。
因の一つにデータ制約がある。データ制約とは、ある命
令の演算結果を参照する後続の命令は、先行する命令の
実行が終了するまで実行を開始できないことをいう。こ
のデータ制約のために、命令の実行を開始できず、プロ
セッサ内の演算パイプラインが停止し、実行性能の低下
が引き起こされる。
【0003】昨今のマイクロプロセッサでは、このデー
タ制約によるプロセッサの実行性能の低下を最小限に抑
えるため、リオーダバッファ等を使用して命令のアウト
オブオーダー(out of order)実行(非順序実行)を
サポートするものが多い。リオーダバッファとは、命令
をフェッチ、デコードした後、それらの命令の実行条件
が整うまで退避しておくバッファである。リオーダバッ
ファからの実際の命令実行開始は、元のプログラム順で
はなく、実行条件が整ったものから順次実行開始され
る。これにより、前述したデータ制約によるプロセッサ
の実行性能の低下を抑えることができる。
タ制約によるプロセッサの実行性能の低下を最小限に抑
えるため、リオーダバッファ等を使用して命令のアウト
オブオーダー(out of order)実行(非順序実行)を
サポートするものが多い。リオーダバッファとは、命令
をフェッチ、デコードした後、それらの命令の実行条件
が整うまで退避しておくバッファである。リオーダバッ
ファからの実際の命令実行開始は、元のプログラム順で
はなく、実行条件が整ったものから順次実行開始され
る。これにより、前述したデータ制約によるプロセッサ
の実行性能の低下を抑えることができる。
【0004】ただし、リオーダバッファからの命令の実
行開始は、アウトオブオーダーであっても、リオーダバ
ッファからの命令の削除はインオーダー(in order)
で行われる(順番に削除される)。そのため、同一のレ
ジスタに実行結果を書き込む命令が複数あり、かつそれ
らの命令の実行順序がプログラムによる実行順序と入れ
替わっていた場合、命令の実行終了と同時に演算結果を
レジスタに書き込んでしまうと、そのレジスタの値を参
照する命令が誤ったデータを参照することになる。した
がって、すべての命令の実行結果は、リオーダバッファ
中の各命令に対応して、一旦レジスタとは別の領域に退
避しておき、該退避領域からインオーダー実行でレジス
タに実行結果を書き込むようにする必要がある。このよ
うに、退避領域からインオーダー実行でレジスタに実行
結果を書き込む処理をリタイアと呼ぶ。上述した命令実
行結果のレジスタへの書き込みと同様のことが、命令実
行に伴う例外の処理にも当てはまる。
行開始は、アウトオブオーダーであっても、リオーダバ
ッファからの命令の削除はインオーダー(in order)
で行われる(順番に削除される)。そのため、同一のレ
ジスタに実行結果を書き込む命令が複数あり、かつそれ
らの命令の実行順序がプログラムによる実行順序と入れ
替わっていた場合、命令の実行終了と同時に演算結果を
レジスタに書き込んでしまうと、そのレジスタの値を参
照する命令が誤ったデータを参照することになる。した
がって、すべての命令の実行結果は、リオーダバッファ
中の各命令に対応して、一旦レジスタとは別の領域に退
避しておき、該退避領域からインオーダー実行でレジス
タに実行結果を書き込むようにする必要がある。このよ
うに、退避領域からインオーダー実行でレジスタに実行
結果を書き込む処理をリタイアと呼ぶ。上述した命令実
行結果のレジスタへの書き込みと同様のことが、命令実
行に伴う例外の処理にも当てはまる。
【0005】例外処理は、命令がアウトオブオーダー実
行で行われていたとしても、正確な割り込みを実装する
場合は、例外を発生した命令以前の先行命令がすべて実
行を完了し、かつ実行結果がレジスタに書き込まれてい
る状態で開始されなければならない。すなわち、命令の
実行に伴い例外が発生しても、直ちに例外処理を開始す
ることはできない。したがって、例外が発生した場合、
該当する命令のリオーダバッファ中のエントリに対応し
て例外が発生したことを示すフラグ、および例外の要因
を示すフィールドが必要になる。
行で行われていたとしても、正確な割り込みを実装する
場合は、例外を発生した命令以前の先行命令がすべて実
行を完了し、かつ実行結果がレジスタに書き込まれてい
る状態で開始されなければならない。すなわち、命令の
実行に伴い例外が発生しても、直ちに例外処理を開始す
ることはできない。したがって、例外が発生した場合、
該当する命令のリオーダバッファ中のエントリに対応し
て例外が発生したことを示すフラグ、および例外の要因
を示すフィールドが必要になる。
【0006】例外要因は、通常、複数がプロセッサのア
ーキテクチャに定義され、またそれらの要因は互いに排
他であるとは限らない。このため、リオーダバッファを
使用してアウトオブオーダー実行をするプロセッサで正
確な割り込みをサポートする場合、そもそもの目的であ
るデータ制約による実行性能低下の軽減に必要なハード
ウェアだけでなく、例外要因を命令のリオーダバッファ
からの削除タイミングまで保持する機構が、リオーダバ
ッファのエントリ数に応じて必要となる。
ーキテクチャに定義され、またそれらの要因は互いに排
他であるとは限らない。このため、リオーダバッファを
使用してアウトオブオーダー実行をするプロセッサで正
確な割り込みをサポートする場合、そもそもの目的であ
るデータ制約による実行性能低下の軽減に必要なハード
ウェアだけでなく、例外要因を命令のリオーダバッファ
からの削除タイミングまで保持する機構が、リオーダバ
ッファのエントリ数に応じて必要となる。
【0007】従来の情報処理装置の命令パイプラインを
構成するリオーダバッファ制御情報部の一例を図6に示
し、以下に、その動作を説明する。なお、情報処理装置
の命令パイプラインの概略構成については、後述の実施
例の項目で詳しく説明することとし、ここではリオーダ
バッファ制御情報の動作についてのみ説明する。
構成するリオーダバッファ制御情報部の一例を図6に示
し、以下に、その動作を説明する。なお、情報処理装置
の命令パイプラインの概略構成については、後述の実施
例の項目で詳しく説明することとし、ここではリオーダ
バッファ制御情報の動作についてのみ説明する。
【0008】図6において、リオーダバッファ中の各エ
ントリにはオペコード、実行結果の書き込み先を示すデ
ィスティネーションフィールド、各命令実行の入力デー
タを示すRyソースおよびRzソース、対応する命令の
命令アドレス、発行済みであるか否かを示すフラグ、実
行が完了しリタイア待ちであることを示すDONEフラ
グの他に、各エントリの命令の実行で発生した例外要因
を保持するフィールドが設けられている。
ントリにはオペコード、実行結果の書き込み先を示すデ
ィスティネーションフィールド、各命令実行の入力デー
タを示すRyソースおよびRzソース、対応する命令の
命令アドレス、発行済みであるか否かを示すフラグ、実
行が完了しリタイア待ちであることを示すDONEフラ
グの他に、各エントリの命令の実行で発生した例外要因
を保持するフィールドが設けられている。
【0009】従来のリオーダバッファ制御情報部では、
リオーダバッファ中の命令のリタイア時に、そのリタイ
アした命令に関する命令エントリの例外要因に何らかの
例外の発生が登録されていた場合は、該命令の後続命令
の情報をリオーダバッファ中からパージ(除去)した
後、該命令の例外要因に応じた例外処理シーケンスが起
動される。
リオーダバッファ中の命令のリタイア時に、そのリタイ
アした命令に関する命令エントリの例外要因に何らかの
例外の発生が登録されていた場合は、該命令の後続命令
の情報をリオーダバッファ中からパージ(除去)した
後、該命令の例外要因に応じた例外処理シーケンスが起
動される。
【0010】
【発明が解決しようとする課題】上述した従来技術にお
いては、例えば複数の命令で例外が発生していても、最
古の命令に対してのみ例外処理が起動されるため、それ
以降の命令に対する例外要因の保持は無駄なものになっ
てしまう。そのため、実際は、例外処理を起動するのに
必要な例外要因としては、リオーダバッファ中の最古の
命令に対するものだけで良いことになる。また、アーキ
テクチャによっては、命令仕様上いかなる例外をも発生
し得ない命令が存在する場合もある。このようなことか
ら、従来技術においては、リオーダバッファ中の全エン
トリに対し、使用しないかもしれない例外要因を保持す
るフィールドを付加していることになり、ハードウェア
量の投資に対する性能面で不利なものとなっていた。
いては、例えば複数の命令で例外が発生していても、最
古の命令に対してのみ例外処理が起動されるため、それ
以降の命令に対する例外要因の保持は無駄なものになっ
てしまう。そのため、実際は、例外処理を起動するのに
必要な例外要因としては、リオーダバッファ中の最古の
命令に対するものだけで良いことになる。また、アーキ
テクチャによっては、命令仕様上いかなる例外をも発生
し得ない命令が存在する場合もある。このようなことか
ら、従来技術においては、リオーダバッファ中の全エン
トリに対し、使用しないかもしれない例外要因を保持す
るフィールドを付加していることになり、ハードウェア
量の投資に対する性能面で不利なものとなっていた。
【0011】本発明の目的は、従来、リオーダバッファ
のエントリ数に応じて必要とされていた、命令の実行に
伴い発生した例外要因を保持するハードウェアを削減す
ることができる割り込み処理方法を提供することにあ
る。
のエントリ数に応じて必要とされていた、命令の実行に
伴い発生した例外要因を保持するハードウェアを削減す
ることができる割り込み処理方法を提供することにあ
る。
【0012】
【課題を解決するための手段】上記目的を達成するた
め、本発明の割り込み処理方法は、複数のエントリを有
するリオーダバッファに一連の実行命令を登録し、該登
録命令のうちから発行条件の整った順に命令を発行して
処理を行うパイプライン処理における割り込み処理方法
において、発行した命令の前記リオーダバッファ中にお
けるエントリ番号を保持し、該命令について例外処理が
発生すると、その保持しているエントリ番号を例外発生
命令エントリ番号として獲得し、該例外発生命令エント
リ番号とともにその例外要因を保持する第1のステップ
と、新たに発行した命令に例外処理が発生すると、該新
たな例外処理発生により獲得した例外発生命令エントリ
番号と前回の例外処理発生により獲得した例外発生命令
エントリ番号とを比較していずれが前記リオーダバッフ
ァ内で古い命令のものであるかを判定する第2のステッ
プと、前記判定結果が、新たな例外処理発生により獲得
した例外発生エントリ番号の方が古い命令のものである
場合には、前回保持した例外発生エントリ番号および例
外要因に代えて該新たな例外処理発生により獲得した例
外発生命令エントリ番号とその例外要因を保持する第3
のステップと、前記第3のステップにて最終的に保持さ
れる例外発生命令エントリ番および例外要因に基づいて
例外処理命令を実行する第4のステップとを含み、前記
第1のステップは、前記発行命令としてリオーダバッフ
ァから発行されるメモリアクセス系命令と演算系命令の
それぞれについて、例外発生命令エントリ番号を獲得
し、該例外発生命令エントリ番号とともにその例外要因
を保持する処理を含み、前記第2のステップは、前記リ
オーダバッファに新たに登録される命令のエントリ番号
を示すリオーダバッファ先頭エントリポインタと、前記
第1のステップにて獲得された、前記演算系命令に関す
る例外発生命令エントリ番号である演算系エントリ番号
および前記メモリアクセス系命令に関する例外発生命令
エントリ番号であるメモリ系エン トリ番号との関係が、
メモリ系エントリ番号<演算系エントリ番号<先頭エン
トリポインタまたは、先頭エントリポインタ<メモリ系
エントリ番号<演算系エントリ番号または、演算系エン
トリ番号<先頭エントリポインタ<メモリ系エントリ番
号の何れかの条件を満たすときに、メモリ系エントリ番
号が演算系エントリ番号より古い命令のものであると判
定し、演算系エントリ番号<メモリ系エントリ番号<先
頭エントリポインタまたは、先頭エントリポインタ<演
算系エントリ番号<メモリ系エントリ番号または、メモ
リ系エントリ番号<先頭エントリポインタ<演算系エン
トリ番号の何れかの条件を満たすときに、演算系エント
リ番号がメモリ系エントリ番号より古い命令のものであ
ると判定する処理を含むことを特徴とする。
め、本発明の割り込み処理方法は、複数のエントリを有
するリオーダバッファに一連の実行命令を登録し、該登
録命令のうちから発行条件の整った順に命令を発行して
処理を行うパイプライン処理における割り込み処理方法
において、発行した命令の前記リオーダバッファ中にお
けるエントリ番号を保持し、該命令について例外処理が
発生すると、その保持しているエントリ番号を例外発生
命令エントリ番号として獲得し、該例外発生命令エント
リ番号とともにその例外要因を保持する第1のステップ
と、新たに発行した命令に例外処理が発生すると、該新
たな例外処理発生により獲得した例外発生命令エントリ
番号と前回の例外処理発生により獲得した例外発生命令
エントリ番号とを比較していずれが前記リオーダバッフ
ァ内で古い命令のものであるかを判定する第2のステッ
プと、前記判定結果が、新たな例外処理発生により獲得
した例外発生エントリ番号の方が古い命令のものである
場合には、前回保持した例外発生エントリ番号および例
外要因に代えて該新たな例外処理発生により獲得した例
外発生命令エントリ番号とその例外要因を保持する第3
のステップと、前記第3のステップにて最終的に保持さ
れる例外発生命令エントリ番および例外要因に基づいて
例外処理命令を実行する第4のステップとを含み、前記
第1のステップは、前記発行命令としてリオーダバッフ
ァから発行されるメモリアクセス系命令と演算系命令の
それぞれについて、例外発生命令エントリ番号を獲得
し、該例外発生命令エントリ番号とともにその例外要因
を保持する処理を含み、前記第2のステップは、前記リ
オーダバッファに新たに登録される命令のエントリ番号
を示すリオーダバッファ先頭エントリポインタと、前記
第1のステップにて獲得された、前記演算系命令に関す
る例外発生命令エントリ番号である演算系エントリ番号
および前記メモリアクセス系命令に関する例外発生命令
エントリ番号であるメモリ系エン トリ番号との関係が、
メモリ系エントリ番号<演算系エントリ番号<先頭エン
トリポインタまたは、先頭エントリポインタ<メモリ系
エントリ番号<演算系エントリ番号または、演算系エン
トリ番号<先頭エントリポインタ<メモリ系エントリ番
号の何れかの条件を満たすときに、メモリ系エントリ番
号が演算系エントリ番号より古い命令のものであると判
定し、演算系エントリ番号<メモリ系エントリ番号<先
頭エントリポインタまたは、先頭エントリポインタ<演
算系エントリ番号<メモリ系エントリ番号または、メモ
リ系エントリ番号<先頭エントリポインタ<演算系エン
トリ番号の何れかの条件を満たすときに、演算系エント
リ番号がメモリ系エントリ番号より古い命令のものであ
ると判定する処理を含むことを特徴とする。
【0013】
【0014】<作用>例外要因の保持のために必要とな
るハードウェアは、本来処理性能向上に特別寄与するも
のではなく、ハードウェア量の投資に対する性能向上割
合の観点からも、できるだけ少量のハードウェアで実現
することが望まれる部分である。また、例外処理は最古
の命令に対してのみ起動されることから、例外要因で実
際に例外処理開始時点で必要なのは、リオーダバッファ
中で最古の命令に対するものだけで良いことになり、複
数の命令で例外が発生していたとしても、後続命令に対
する例外要因を保持する必要はない。このようなことか
ら、本発明においては、リオーダバッファ中で最古の命
令に対する例外要因が保持されるようになっている。こ
のように構成したことにより、例外要因の保持に必要な
ハードウェアは例えば1エントリ分で済むことになる。
るハードウェアは、本来処理性能向上に特別寄与するも
のではなく、ハードウェア量の投資に対する性能向上割
合の観点からも、できるだけ少量のハードウェアで実現
することが望まれる部分である。また、例外処理は最古
の命令に対してのみ起動されることから、例外要因で実
際に例外処理開始時点で必要なのは、リオーダバッファ
中で最古の命令に対するものだけで良いことになり、複
数の命令で例外が発生していたとしても、後続命令に対
する例外要因を保持する必要はない。このようなことか
ら、本発明においては、リオーダバッファ中で最古の命
令に対する例外要因が保持されるようになっている。こ
のように構成したことにより、例外要因の保持に必要な
ハードウェアは例えば1エントリ分で済むことになる。
【0015】
【発明の実施の形態】次に、本発明の実施形態について
図面を参照して説明する。
図面を参照して説明する。
【0016】図1に、本発明の割り込み処理方法が適用
された情報処理装置の命令パイプラインを構成するリオ
ーダバッファ制御情報部の一実施形態を示す。このリオ
ーダバッファ制御情報部は、前述の図6に示したリオー
ダバッファ制御情報部の各命令エントリから、例外要因
フィールドを取り除き、かわりに例外発生命令エントリ
保持部、例外発生命令エントリ番号制御部が追加された
構成になっている。このリオーダバッファ制御情報部を
備えた情報処理装置の一実施形態を図2に示す。
された情報処理装置の命令パイプラインを構成するリオ
ーダバッファ制御情報部の一実施形態を示す。このリオ
ーダバッファ制御情報部は、前述の図6に示したリオー
ダバッファ制御情報部の各命令エントリから、例外要因
フィールドを取り除き、かわりに例外発生命令エントリ
保持部、例外発生命令エントリ番号制御部が追加された
構成になっている。このリオーダバッファ制御情報部を
備えた情報処理装置の一実施形態を図2に示す。
【0017】以下、図1および図2を参照して、本情報
処理装置の構成および動作について説明を行なう。
処理装置の構成および動作について説明を行なう。
【0018】リオーダバッファ制御情報部2は、命令バ
ッファ1から読み出された命令を登録するnエントリの
リオーダバッファを有し、リオーダバッファに一連の実
行命令を登録して、該登録命令のうちから発行条件の整
った順に命令を発行する他、発行した命令に例外処理が
発生した場合には、その命令に関する例外要因などの保
持処理を行う。リオーダバッファ演算結果データ3は、
各命令の実行結果を一時的に保持するnエントリのバッ
ファで、リオーダバッファ制御情報部2のエントリと1
対1に対応する。すなわち、リオーダバッファ制御情報
部2のエントリmに登録された命令の実行結果は、リオ
ーダバッファ演算結果データ3のエントリmに登録され
る。
ッファ1から読み出された命令を登録するnエントリの
リオーダバッファを有し、リオーダバッファに一連の実
行命令を登録して、該登録命令のうちから発行条件の整
った順に命令を発行する他、発行した命令に例外処理が
発生した場合には、その命令に関する例外要因などの保
持処理を行う。リオーダバッファ演算結果データ3は、
各命令の実行結果を一時的に保持するnエントリのバッ
ファで、リオーダバッファ制御情報部2のエントリと1
対1に対応する。すなわち、リオーダバッファ制御情報
部2のエントリmに登録された命令の実行結果は、リオ
ーダバッファ演算結果データ3のエントリmに登録され
る。
【0019】例外処理制御部5は、リオーダバッファ制
御情報部2からの指示により例外処理シーケンスを起動
し、例外処理シーケンスが終了すると例外処理終了通知
をリオーダバッファ制御情報部2に送出する。リオーダ
バッファ制御情報部2は例外処理終了通知を受信する
と、通常状態に戻り、命令バッファ1からの命令取り込
みや発行命令の選択制御等を行なう。
御情報部2からの指示により例外処理シーケンスを起動
し、例外処理シーケンスが終了すると例外処理終了通知
をリオーダバッファ制御情報部2に送出する。リオーダ
バッファ制御情報部2は例外処理終了通知を受信する
と、通常状態に戻り、命令バッファ1からの命令取り込
みや発行命令の選択制御等を行なう。
【0020】命令実行処理部11は、リオーダバッファ
制御情報部2から発行された命令に基づいて処理を実行
する部で、発行命令を実行中に例外処理が発生した場合
は、例外要因とともに例外報告をリオーダバッファ制御
情報部2に対して通知する。その構成は、キャッシュメ
モリ8、主記憶装置9、発行されたメモリ系命令に基づ
いてアクセスするアドレスを計算するアドレスアダー
6、発行された演算系命令に基づいて演算をする演算器
7からなる。演算器7は、演算処理中に例外処理が発生
すると、例外要因とともに例外報告をリオーダバッファ
制御情報部2に対して通知する(演算系命令例外報
告)。キャッシュメモリ8は、アクセス処理中に、例外
処理が発生すると、例外要因とともに例外報告をリオー
ダバッファ制御情報部2に対して通知する(メモリアク
セス系命令例外報告)。
制御情報部2から発行された命令に基づいて処理を実行
する部で、発行命令を実行中に例外処理が発生した場合
は、例外要因とともに例外報告をリオーダバッファ制御
情報部2に対して通知する。その構成は、キャッシュメ
モリ8、主記憶装置9、発行されたメモリ系命令に基づ
いてアクセスするアドレスを計算するアドレスアダー
6、発行された演算系命令に基づいて演算をする演算器
7からなる。演算器7は、演算処理中に例外処理が発生
すると、例外要因とともに例外報告をリオーダバッファ
制御情報部2に対して通知する(演算系命令例外報
告)。キャッシュメモリ8は、アクセス処理中に、例外
処理が発生すると、例外要因とともに例外報告をリオー
ダバッファ制御情報部2に対して通知する(メモリアク
セス系命令例外報告)。
【0021】リネーム処理部10は、命令バッファ1か
ら読み出された命令のソースオペランドをリネームす
る。ここでリネームとは、命令バッファ1から読み出し
た命令Aのソースオペランドが、既にリオーダバッファ
制御情報部2に登録されている命令Bの演算結果を参照
する場合に、リオーーダバッファ制御情報部2中の命令
Bの登録されているエントリ番号を命令Aのソースオペ
ランドに対応するリネーム番号として付与することであ
る。
ら読み出された命令のソースオペランドをリネームす
る。ここでリネームとは、命令バッファ1から読み出し
た命令Aのソースオペランドが、既にリオーダバッファ
制御情報部2に登録されている命令Bの演算結果を参照
する場合に、リオーーダバッファ制御情報部2中の命令
Bの登録されているエントリ番号を命令Aのソースオペ
ランドに対応するリネーム番号として付与することであ
る。
【0022】リネームについて以下に詳細に説明する。
【0023】ここで命令コードは、図4に示すようなフ
ォーマットである。OPフィールドは、命令種別を示
す。Rxフィールドは、命令の演算結果を格納するレジ
スタファイル4内のエントリ番号を示す。RyおよびR
zフィールドは、演算のソースオペランドである。
ォーマットである。OPフィールドは、命令種別を示
す。Rxフィールドは、命令の演算結果を格納するレジ
スタファイル4内のエントリ番号を示す。RyおよびR
zフィールドは、演算のソースオペランドである。
【0024】図5(a)に示すような命令列において、
命令は命令の演算結果であるレジスタファイルのエ
ントリ0(以下、S0と称す。)と命令の結果である
レジスタファイルのエントリ4を参照する。このとき、
図5(b)に示すように、命令がリオーダバッファの
エントリ1に、命令がリオーダバッファのエントリn
−4に登録されているとすると、命令のオペランドリ
ネームでは、ソースオペランドRyに対して「1」が付
与され、ソースオペランドRzに対して「n−4」が付
与される。
命令は命令の演算結果であるレジスタファイルのエ
ントリ0(以下、S0と称す。)と命令の結果である
レジスタファイルのエントリ4を参照する。このとき、
図5(b)に示すように、命令がリオーダバッファの
エントリ1に、命令がリオーダバッファのエントリn
−4に登録されているとすると、命令のオペランドリ
ネームでは、ソースオペランドRyに対して「1」が付
与され、ソースオペランドRzに対して「n−4」が付
与される。
【0025】このようにソースオペランドをリネームす
ることで、図5(a)の命令のようにSOを上書きす
る命令が存在し、かつ命令が命令を追い越して実行
された場合でも、命令は正しく命令の演算結果を参
照することができる。
ることで、図5(a)の命令のようにSOを上書きす
る命令が存在し、かつ命令が命令を追い越して実行
された場合でも、命令は正しく命令の演算結果を参
照することができる。
【0026】命令バッファ1から読み出された命令は、
リオーダバッファ制御情報部2に登録される。リオーダ
バッファ制御情報部2は、複数のエントリから構成され
ており、各エントリの命令の登録および抹消の順序は
「インオーダー」実行で行われる。すなわち、リオーダ
バッファ制御情報部2がn個のエントリで構成される場
合、エントリ0に最初の命令が登録され、その後エント
リ1,エントリ2,…,エントリn−1の順に登録され
る。エントリn−1の次は、エントリ0に登録エントリ
が移る。ただし、この場合は、エントリ0に登録されて
いた先行命令が、既にリタイアし、エントリ0が空き状
態でなければならない。この新規に命令を登録するエン
トリは、先頭エントリポインタ22により管理される。
新規に命令をフェッチ/デコード/リオーダバッファ登
録を行なうたびに、先頭エントリポインタ22は命令を
リオーダバッファに登録した数だけ歩進する。
リオーダバッファ制御情報部2に登録される。リオーダ
バッファ制御情報部2は、複数のエントリから構成され
ており、各エントリの命令の登録および抹消の順序は
「インオーダー」実行で行われる。すなわち、リオーダ
バッファ制御情報部2がn個のエントリで構成される場
合、エントリ0に最初の命令が登録され、その後エント
リ1,エントリ2,…,エントリn−1の順に登録され
る。エントリn−1の次は、エントリ0に登録エントリ
が移る。ただし、この場合は、エントリ0に登録されて
いた先行命令が、既にリタイアし、エントリ0が空き状
態でなければならない。この新規に命令を登録するエン
トリは、先頭エントリポインタ22により管理される。
新規に命令をフェッチ/デコード/リオーダバッファ登
録を行なうたびに、先頭エントリポインタ22は命令を
リオーダバッファに登録した数だけ歩進する。
【0027】また、リオーダバッファ制御情報部2から
の命令の削除も同様に「インオーダー」で行われる。リ
オーダバッファ中の未発行の命令から発行すべき命令が
選択され、実行が終了すると該命令に対応するエントリ
のDONEフラグが点灯する。該命令のエントリの抹消
は、該命令のDONEフラグが点灯し、かつ、該命令の
先行命令がすべて抹消されているとき(すなわち、該命
令がリオーダバッファ中の最古の命令であるとき)にリ
タイア制御部24からのリタイア指示信号に基づいて行
われる。ここで、リオーダバッファ制御情報部2から命
令が抹消されるとき、同時にリオーダバッファ演算結果
データ3内の対応するデータがレジスタファイル4の、
命令により指定されたエントリに書き移される。この動
作をリタイアというが、リタイアの対象となる、リオー
ダバッファ中で最古のエントリは、リタイアエントリポ
インタ30により指し示されるようになっている。この
リタイアエントリポインタ30は、リタイア制御部24
からのリタイア指示信号により歩進する。
の命令の削除も同様に「インオーダー」で行われる。リ
オーダバッファ中の未発行の命令から発行すべき命令が
選択され、実行が終了すると該命令に対応するエントリ
のDONEフラグが点灯する。該命令のエントリの抹消
は、該命令のDONEフラグが点灯し、かつ、該命令の
先行命令がすべて抹消されているとき(すなわち、該命
令がリオーダバッファ中の最古の命令であるとき)にリ
タイア制御部24からのリタイア指示信号に基づいて行
われる。ここで、リオーダバッファ制御情報部2から命
令が抹消されるとき、同時にリオーダバッファ演算結果
データ3内の対応するデータがレジスタファイル4の、
命令により指定されたエントリに書き移される。この動
作をリタイアというが、リタイアの対象となる、リオー
ダバッファ中で最古のエントリは、リタイアエントリポ
インタ30により指し示されるようになっている。この
リタイアエントリポインタ30は、リタイア制御部24
からのリタイア指示信号により歩進する。
【0028】リオーダバッファ中の命令の発行は「アウ
トオブオーダー」実行で行われる。すなわち、リオーダ
バッファ中の命令の登録順序と関わりなく、発行条件の
整った命令のうちから発行命令が選択される。
トオブオーダー」実行で行われる。すなわち、リオーダ
バッファ中の命令の登録順序と関わりなく、発行条件の
整った命令のうちから発行命令が選択される。
【0029】リオーダバッファから発行選択された命令
が演算命令であった場合は、演算器7への入力データが
リオーダバッファ演算結果データ3あるいはレジスタフ
ァイル4から読み出され、演算器7に投入される。演算
結果はリオーダバッファ演算結果データ3の該命令に対
応するエントリに書き込まれる。命令実行時に演算例外
が発生した場合は、演算器7によって、例外要因ととも
に例外報告がリオーダバッファ制御情報部2に対し通知
される(演算系命令例外報告)。
が演算命令であった場合は、演算器7への入力データが
リオーダバッファ演算結果データ3あるいはレジスタフ
ァイル4から読み出され、演算器7に投入される。演算
結果はリオーダバッファ演算結果データ3の該命令に対
応するエントリに書き込まれる。命令実行時に演算例外
が発生した場合は、演算器7によって、例外要因ととも
に例外報告がリオーダバッファ制御情報部2に対し通知
される(演算系命令例外報告)。
【0030】リオーダバッファから発行選択された命令
がメモリアクセス系の命令であった場合は、アドレスオ
ペランドデータがリオーダバッファ演算結果データ3あ
るいはレジスタファイル4から読み出され、アドレスア
ダー6に投入されてアクセスするメモリアドレスが計算
される。ここで、命令がストア系命令の場合は、ストア
データが同様にリオーダバッファ演算結果データ3ある
いはレジスタファイル4から読み出されてキャッシュメ
モリ8に通知される。ロード系命令のロードデータは、
リオーダバッファ演算結果データ3の該命令に対応する
エントリに書き込まれる。また、命令実行時に例外が発
生した場合は、キャッシュメモリ8によって、例外要因
とともに例外報告がリオーダバッファ制御情報部2に対
して通知される(メモリアクセス系命令例外報告)。
がメモリアクセス系の命令であった場合は、アドレスオ
ペランドデータがリオーダバッファ演算結果データ3あ
るいはレジスタファイル4から読み出され、アドレスア
ダー6に投入されてアクセスするメモリアドレスが計算
される。ここで、命令がストア系命令の場合は、ストア
データが同様にリオーダバッファ演算結果データ3ある
いはレジスタファイル4から読み出されてキャッシュメ
モリ8に通知される。ロード系命令のロードデータは、
リオーダバッファ演算結果データ3の該命令に対応する
エントリに書き込まれる。また、命令実行時に例外が発
生した場合は、キャッシュメモリ8によって、例外要因
とともに例外報告がリオーダバッファ制御情報部2に対
して通知される(メモリアクセス系命令例外報告)。
【0031】次に、リオーダバッファ制御情報部2につ
いて詳細に説明する。
いて詳細に説明する。
【0032】リオーダバッファ制御情報部2は、図1に
示すように、命令エントリ211〜21n、先頭エントリ
ポインタ22、発行命令選択回路23、リタイア制御回
路24、エントリ番号持ち回り部25、例外エントリ番
号制御回路26、例外要因保持部27、例外処理要求生
成部28からなる。
示すように、命令エントリ211〜21n、先頭エントリ
ポインタ22、発行命令選択回路23、リタイア制御回
路24、エントリ番号持ち回り部25、例外エントリ番
号制御回路26、例外要因保持部27、例外処理要求生
成部28からなる。
【0033】命令エントリ211〜21nはそれぞれ、オ
ペコード371〜37n、ディスティネーションフィール
ド301〜30n、Ryソース311〜31n、Rzソース
32 1〜32n、Ryリネーム番号331〜33n、Rzリ
ネーム番号341〜34n、命令アドレスフィールド35
1〜35n、発行済みフラグ361〜36n、DONEフラ
グ381〜38nを備える。ディスティネーションフィー
ルド301〜30nには、各命令によって指定される、実
行結果のレジスタファイル中の書き込みエントリの番号
が登録される。これはすなわち、図4の命令フィールド
に示すRxフィールドである。Ryソース311〜31n
とRzソース321〜32nは、命令によって指定され
る、各命令の演算入力データが格納されているレジスタ
ファイル中のエントリ番号が登録される。これはすなわ
ち、図4の命令フィールドに示すRyおよびRzフィー
ルドである。命令アドレスフィールド351〜35nに
は、各命令のアドレスが登録される。発行済みフラグ3
61〜36nは、エントリの命令が発行されたことを示
す。発行済みフラグ361〜36nは、命令が発行される
ときにセットされ、該命令がリオーダバッファから削除
されるときにリセットされる。DONEフラグ381〜
38nは、エントリの命令の実行が終了しリタイア待ち
状態であることを示す。
ペコード371〜37n、ディスティネーションフィール
ド301〜30n、Ryソース311〜31n、Rzソース
32 1〜32n、Ryリネーム番号331〜33n、Rzリ
ネーム番号341〜34n、命令アドレスフィールド35
1〜35n、発行済みフラグ361〜36n、DONEフラ
グ381〜38nを備える。ディスティネーションフィー
ルド301〜30nには、各命令によって指定される、実
行結果のレジスタファイル中の書き込みエントリの番号
が登録される。これはすなわち、図4の命令フィールド
に示すRxフィールドである。Ryソース311〜31n
とRzソース321〜32nは、命令によって指定され
る、各命令の演算入力データが格納されているレジスタ
ファイル中のエントリ番号が登録される。これはすなわ
ち、図4の命令フィールドに示すRyおよびRzフィー
ルドである。命令アドレスフィールド351〜35nに
は、各命令のアドレスが登録される。発行済みフラグ3
61〜36nは、エントリの命令が発行されたことを示
す。発行済みフラグ361〜36nは、命令が発行される
ときにセットされ、該命令がリオーダバッファから削除
されるときにリセットされる。DONEフラグ381〜
38nは、エントリの命令の実行が終了しリタイア待ち
状態であることを示す。
【0034】発行命令選択回路23は、命令エントリ2
11〜21nに登録されている命令のうち発行条件の整っ
た命令を選択し発行する。このとき、発行した命令のリ
オーダバッファ中のエントリ番号がエントリ番号持ち回
り部25に送出される。エントリ番号持ち回り部25
は、発行した命令の例外報告タイミングまでこのエント
リ番号を持ちまわったのち、例外エントリ番号制御回路
26に送出する。
11〜21nに登録されている命令のうち発行条件の整っ
た命令を選択し発行する。このとき、発行した命令のリ
オーダバッファ中のエントリ番号がエントリ番号持ち回
り部25に送出される。エントリ番号持ち回り部25
は、発行した命令の例外報告タイミングまでこのエント
リ番号を持ちまわったのち、例外エントリ番号制御回路
26に送出する。
【0035】また、発行命令選択回路23は、命令の発
行と同時に、発行した命令のリオーダバッファ中のエン
トリの発行済みフラグをセットする。複数の命令を同時
に発行した場合は、それらの命令のリオーダバッファ中
のエントリの発行済みフラグをセットする。そして、発
行した命令の実行が終了すると同時に、該命令のリオー
ダバッファ中のエントリのDONEフラグをセットす
る。
行と同時に、発行した命令のリオーダバッファ中のエン
トリの発行済みフラグをセットする。複数の命令を同時
に発行した場合は、それらの命令のリオーダバッファ中
のエントリの発行済みフラグをセットする。そして、発
行した命令の実行が終了すると同時に、該命令のリオー
ダバッファ中のエントリのDONEフラグをセットす
る。
【0036】本実施例においては、同時に発行される命
令は演算系命令で1個、メモリアクセス系命令で1個の
合計2個までとするが、これに限定されるものではな
い。例えば、演算系命令の同時発行個数が2以上であっ
ても、またメモリアクセス系命令の同時発行個数が2以
上であっても良い。この場合の同時発行個数の変更は容
易であり、また本発明の趣旨とは直接関係はない。
令は演算系命令で1個、メモリアクセス系命令で1個の
合計2個までとするが、これに限定されるものではな
い。例えば、演算系命令の同時発行個数が2以上であっ
ても、またメモリアクセス系命令の同時発行個数が2以
上であっても良い。この場合の同時発行個数の変更は容
易であり、また本発明の趣旨とは直接関係はない。
【0037】保持部27は、演算器7およびキャッシュ
メモリ8から通知された例外発生命令エントリ番号およ
び例外要因を保持するための手段で、その構成は、演算
器7からの演算系命令例外報告の有無を示すフラグであ
る演算系例外報告Vとキャッシュメモリ8からのメモリ
アクセス系命令例外報告の有無を示すフラグであるメモ
リ系例外報告Vとから構成される例外発生命令エントリ
番号V27aと、例外発生命令エントリ番号を保持する
ための例外発生命令エントリ番号保持部27bと、例外
要因を保持するための例外要因保持部27cと、からな
る。
メモリ8から通知された例外発生命令エントリ番号およ
び例外要因を保持するための手段で、その構成は、演算
器7からの演算系命令例外報告の有無を示すフラグであ
る演算系例外報告Vとキャッシュメモリ8からのメモリ
アクセス系命令例外報告の有無を示すフラグであるメモ
リ系例外報告Vとから構成される例外発生命令エントリ
番号V27aと、例外発生命令エントリ番号を保持する
ための例外発生命令エントリ番号保持部27bと、例外
要因を保持するための例外要因保持部27cと、からな
る。
【0038】例外エントリ番号制御回路26は、例外の
発生した命令のうちリオーダバッファ内で最も古い命令
のものの例外要因および例外発生命令エントリ番号を保
持部27に保持する制御手段である。この例外エントリ
番号制御回路26は、エントリ番号持ち回り部25から
送出される例外発生命令エントリ番号と例外発生命令エ
ントリ番号保持部27bに保持されている例外発生命令
エントリ番号とを比較していずれがリオーダバッファ内
で古い命令のものであるかを判定する比較・判定手段を
有し、該比較・判定手段により、エントリ番号持ち回り
部25から送出される例外発生命令エントリ番号の方が
古いと判定されると、該命令の例外要因および例外発生
命令エントリ番号を例外要因保持部27cおよび例外発
生命令エントリ番号保持部27bに保持させるようにな
っている。
発生した命令のうちリオーダバッファ内で最も古い命令
のものの例外要因および例外発生命令エントリ番号を保
持部27に保持する制御手段である。この例外エントリ
番号制御回路26は、エントリ番号持ち回り部25から
送出される例外発生命令エントリ番号と例外発生命令エ
ントリ番号保持部27bに保持されている例外発生命令
エントリ番号とを比較していずれがリオーダバッファ内
で古い命令のものであるかを判定する比較・判定手段を
有し、該比較・判定手段により、エントリ番号持ち回り
部25から送出される例外発生命令エントリ番号の方が
古いと判定されると、該命令の例外要因および例外発生
命令エントリ番号を例外要因保持部27cおよび例外発
生命令エントリ番号保持部27bに保持させるようにな
っている。
【0039】以下、上記の例外エントリ番号制御回路2
6について図3を参照して詳細に説明する。以下の説明
では、エントリ番号持ち回り部25が、発行したメモリ
アクセス系命令のリオーダバッファ中におけるエントリ
番号を保持し、該メモリアクセス系命令についてキャッ
シュメモリ8から例外報告を受けると、保持しているエ
ントリ番号を例外発生命令エントリ番号として送出する
第1のエントリ番号持ち回り手段と、発行した演算系命
令のリオーダバッファ中におけるエントリ番号を保持
し、該演算系命令について演算器7から例外報告を受け
ると、保持しているエントリ番号を例外発生命令エント
リ番号として送出する第2のエントリ番号持ち回り手段
を備えているものとする。
6について図3を参照して詳細に説明する。以下の説明
では、エントリ番号持ち回り部25が、発行したメモリ
アクセス系命令のリオーダバッファ中におけるエントリ
番号を保持し、該メモリアクセス系命令についてキャッ
シュメモリ8から例外報告を受けると、保持しているエ
ントリ番号を例外発生命令エントリ番号として送出する
第1のエントリ番号持ち回り手段と、発行した演算系命
令のリオーダバッファ中におけるエントリ番号を保持
し、該演算系命令について演算器7から例外報告を受け
ると、保持しているエントリ番号を例外発生命令エント
リ番号として送出する第2のエントリ番号持ち回り手段
を備えているものとする。
【0040】図3において、論理回路26aは、リオー
ダバッファ先頭エントリポインタ22、演算系例外報告
V(図2の演算系命令例外報告の有無を示すフラグ)、
エントリ番号持ち回り部25から演算器例外報告タイミ
ングに同期して送出される演算系エントリ番号、メモリ
系例外報告V(図2のメモリアクセス系命令例外報告の
有無を示すフラグ)、およびメモリ系エントリ番号に基
づいて、同時に報告された演算系エントリ番号とメモリ
系エントリ番号のうち何れがリオーダバッファ中で古い
エントリであるかを判定する。同時に例外報告をする、
演算系命令およびメモリアクセス系命令のうち、リオー
ダバッファ中で古い命令の例外報告を、例外発生命令エ
ントリ番号保持部27bおよび例外要因保持部27cに
登録させる。以下の、の場合には、論理回路26a
は、メモリ系命令のエントリ番号が古いと判定し、
「1」を出力する。
ダバッファ先頭エントリポインタ22、演算系例外報告
V(図2の演算系命令例外報告の有無を示すフラグ)、
エントリ番号持ち回り部25から演算器例外報告タイミ
ングに同期して送出される演算系エントリ番号、メモリ
系例外報告V(図2のメモリアクセス系命令例外報告の
有無を示すフラグ)、およびメモリ系エントリ番号に基
づいて、同時に報告された演算系エントリ番号とメモリ
系エントリ番号のうち何れがリオーダバッファ中で古い
エントリであるかを判定する。同時に例外報告をする、
演算系命令およびメモリアクセス系命令のうち、リオー
ダバッファ中で古い命令の例外報告を、例外発生命令エ
ントリ番号保持部27bおよび例外要因保持部27cに
登録させる。以下の、の場合には、論理回路26a
は、メモリ系命令のエントリ番号が古いと判定し、
「1」を出力する。
【0041】演算系例外報告Vとメモリ系例外報告V
が両方とも点灯しているときで、 メモリ系エントリ番号<演算系エントリ番号<先頭エン
トリポインタ または、 先頭エントリポインタ<メモリ系エントリ番号<演算系
エントリ番号 または、 演算系エントリ番号<先頭エントリポインタ<メモリ系
エントリ番号 の何れかの条件を満たすとき メモリ系例外報告Vのみ点灯しているとき 上述のようにして論理回路26aによりメモリ系命令の
方が古いと判定されたときは、セレクタ27dはメモリ
系エントリ番号を選択し、セレクタ27eはメモリ系例
外要因を選択する。
が両方とも点灯しているときで、 メモリ系エントリ番号<演算系エントリ番号<先頭エン
トリポインタ または、 先頭エントリポインタ<メモリ系エントリ番号<演算系
エントリ番号 または、 演算系エントリ番号<先頭エントリポインタ<メモリ系
エントリ番号 の何れかの条件を満たすとき メモリ系例外報告Vのみ点灯しているとき 上述のようにして論理回路26aによりメモリ系命令の
方が古いと判定されたときは、セレクタ27dはメモリ
系エントリ番号を選択し、セレクタ27eはメモリ系例
外要因を選択する。
【0042】なお、演算系例外報告Vとメモリ系例外報
告Vが両方とも点灯しているときで、 演算系エントリ番号<メモリ系エントリ番号<先頭エン
トリポインタ または、 先頭エントリポインタ<演算系エントリ番号<メモリ系
エントリ番号 または、 メモリ系エントリ番号<先頭エントリポインタ<演算系
エントリ番号 の何れかの条件を満たすときには、論理回路26aは、
演算系エントリ番号がメモリ系エントリ番号より古い命
令のものであると判定する。
告Vが両方とも点灯しているときで、 演算系エントリ番号<メモリ系エントリ番号<先頭エン
トリポインタ または、 先頭エントリポインタ<演算系エントリ番号<メモリ系
エントリ番号 または、 メモリ系エントリ番号<先頭エントリポインタ<演算系
エントリ番号 の何れかの条件を満たすときには、論理回路26aは、
演算系エントリ番号がメモリ系エントリ番号より古い命
令のものであると判定する。
【0043】論理回路26bは、リオーダバッファ先頭
エントリポインタ22、例外発生命令エントリ番号V2
7a、例外発生命令エントリ番号保持部27b、メモリ
系例外報告V、メモリ系エントリ番号に基づいて、例外
発生エントリ番号とメモリ系エントリ番号のうち何れが
リオーダバッファ中で古いエントリであるかを判定す
る。例外発生エントリ番号に対応する命令よりもメモリ
系エントリ番号に対応する命令が古い命令であった場合
には、例外発生エントリ番号保持部27bおよび例外要
因保持部27cを更新する必要がある。以下の、の
場合には、論理回路26bは、メモリ系命令のエントリ
番号が古いと判定し、「1」を出力する。
エントリポインタ22、例外発生命令エントリ番号V2
7a、例外発生命令エントリ番号保持部27b、メモリ
系例外報告V、メモリ系エントリ番号に基づいて、例外
発生エントリ番号とメモリ系エントリ番号のうち何れが
リオーダバッファ中で古いエントリであるかを判定す
る。例外発生エントリ番号に対応する命令よりもメモリ
系エントリ番号に対応する命令が古い命令であった場合
には、例外発生エントリ番号保持部27bおよび例外要
因保持部27cを更新する必要がある。以下の、の
場合には、論理回路26bは、メモリ系命令のエントリ
番号が古いと判定し、「1」を出力する。
【0044】例外発生エントリ番号V27aとメモリ
系例外報告Vが両方とも点灯しているときで、 メモリ系エントリ番号<例外発生エントリ番号<先頭エ
ントリポインタ または、 先頭エントリポインタ<メモリ系エントリ番号<例外発
生エントリ番号 または、 例外発生エントリ番号<先頭エントリポインタ<メモリ
系エントリ番号 の何れかの条件を満たすとき。
系例外報告Vが両方とも点灯しているときで、 メモリ系エントリ番号<例外発生エントリ番号<先頭エ
ントリポインタ または、 先頭エントリポインタ<メモリ系エントリ番号<例外発
生エントリ番号 または、 例外発生エントリ番号<先頭エントリポインタ<メモリ
系エントリ番号 の何れかの条件を満たすとき。
【0045】メモリ系例外報告Vのみ点灯していると
き 論理回路26cは、リオーダバッファ先頭エントリポイ
ンタ22、例外発生エントリ番号V27a、例外発生エ
ントリ番号保持部27b、演算器例外報告V、エントリ
番号持ち回り部25から演算器例外報告タイミングに同
期して送出される演算系エントリ番号に基づいて、例外
発生エントリ番号と演算系エントリ番号のうち何れがリ
オーダバッファ中で古いエントリであるかを判定する。
例外発生エントリ番号に対応する命令よりも演算系エン
トリ番号に対応する命令が古い命令であった場合には、
例外発生エントリ番号保持部27bおよび例外要因保持
部27cを更新する必要がある。以下の、の場合に
は、論理回路26cは、演算系エントリ番号が古いと判
定し、「1」を出力する。
き 論理回路26cは、リオーダバッファ先頭エントリポイ
ンタ22、例外発生エントリ番号V27a、例外発生エ
ントリ番号保持部27b、演算器例外報告V、エントリ
番号持ち回り部25から演算器例外報告タイミングに同
期して送出される演算系エントリ番号に基づいて、例外
発生エントリ番号と演算系エントリ番号のうち何れがリ
オーダバッファ中で古いエントリであるかを判定する。
例外発生エントリ番号に対応する命令よりも演算系エン
トリ番号に対応する命令が古い命令であった場合には、
例外発生エントリ番号保持部27bおよび例外要因保持
部27cを更新する必要がある。以下の、の場合に
は、論理回路26cは、演算系エントリ番号が古いと判
定し、「1」を出力する。
【0046】例外発生エントリ番号V27aと演算器
例外報告Vが両方とも点灯しているときで、 演算系エントリ番号<例外発生エントリ番号<先頭エン
トリポインタ または、 先頭エントリポインタ<演算系エントリ番号<例外発生
エントリ番号 または、 例外発生エントリ番号<先頭エントリポインタ<演算系
エントリ番号 の何れかの条件を満たすとき。
例外報告Vが両方とも点灯しているときで、 演算系エントリ番号<例外発生エントリ番号<先頭エン
トリポインタ または、 先頭エントリポインタ<演算系エントリ番号<例外発生
エントリ番号 または、 例外発生エントリ番号<先頭エントリポインタ<演算系
エントリ番号 の何れかの条件を満たすとき。
【0047】演算系例外報告Vのみ点灯しているとき 上述の例外エントリ番号制御回路26では、論理回路2
6b,26cの出力を入力とするOR回路26dよりな
るストローブ手段が、論理回路26b,26cの比較結
果に基づいて、例外発生命令エントリ番号保持部27b
および例外要因保持部27cにおける保持内容を更新す
る。具体的には、論理回路26bによりメモリ系例外エ
ントリ番号が例外発生エントリ番号保持部27bより古
い命令であると判断されたとき、または論理回路26c
により演算系例外エントリ番号が例外発生エントリ番号
保持部27bより古い命令であると判断されたとき、O
Rゲート26dの出力が1となり、例外発生エントリ番
号V27a、例外発生エントリ番号保持部27b、例外
要因保持部27cが更新される。
6b,26cの出力を入力とするOR回路26dよりな
るストローブ手段が、論理回路26b,26cの比較結
果に基づいて、例外発生命令エントリ番号保持部27b
および例外要因保持部27cにおける保持内容を更新す
る。具体的には、論理回路26bによりメモリ系例外エ
ントリ番号が例外発生エントリ番号保持部27bより古
い命令であると判断されたとき、または論理回路26c
により演算系例外エントリ番号が例外発生エントリ番号
保持部27bより古い命令であると判断されたとき、O
Rゲート26dの出力が1となり、例外発生エントリ番
号V27a、例外発生エントリ番号保持部27b、例外
要因保持部27cが更新される。
【0048】以上の動作により、初めてメモリ系例外や
演算系例外が発生したとき、またはすでに例外発生エン
トリ番号保持部27bに例外発生エントリ番号が登録さ
れていて新たな例外が発生したときに、その例外に対応
する命令のリオーダバッファ中のエントリ番号および該
命令の例外要因がそれぞれ例外発生エントリ番号保持部
27bおよび例外要因保持部27cに正しく登録され
る。
演算系例外が発生したとき、またはすでに例外発生エン
トリ番号保持部27bに例外発生エントリ番号が登録さ
れていて新たな例外が発生したときに、その例外に対応
する命令のリオーダバッファ中のエントリ番号および該
命令の例外要因がそれぞれ例外発生エントリ番号保持部
27bおよび例外要因保持部27cに正しく登録され
る。
【0049】例外処理制御部5に対する例外処理要求
は、例外処理要求生成部28によって以下のようにして
生成される。
は、例外処理要求生成部28によって以下のようにして
生成される。
【0050】リタイアエントリポインタ30と例外発生
エントリ番号保持部27bの内容がコンパレータ281
により比較される。さらに、コンパレータ28aの出力
と例外発生エントリ番号V27a、リタイア制御部24
からのリタイア指示信号がANDゲート28bに入力さ
れ、その出力が例外処理要求として例外処理部5に送出
される。
エントリ番号保持部27bの内容がコンパレータ281
により比較される。さらに、コンパレータ28aの出力
と例外発生エントリ番号V27a、リタイア制御部24
からのリタイア指示信号がANDゲート28bに入力さ
れ、その出力が例外処理要求として例外処理部5に送出
される。
【0051】例外が発生した命令の命令アドレスは、以
下のようにして求められる。
下のようにして求められる。
【0052】リオーダバッファ制御情報部2内の各エン
トリ211〜21nの命令アドレスフィールドがセレタタ
に入力され、例外発生エントリ番号保持部27bにより
選択される。該選択結果が、例外の発生した命令の命令
アドレスである。この例外発生命令アドレスは、例外処
理要求が立っていないときは無効とされる。
トリ211〜21nの命令アドレスフィールドがセレタタ
に入力され、例外発生エントリ番号保持部27bにより
選択される。該選択結果が、例外の発生した命令の命令
アドレスである。この例外発生命令アドレスは、例外処
理要求が立っていないときは無効とされる。
【0053】
【発明の効果】以上説明したように構成される本発明に
よれば、命令追い越しバッファの各エントリの命令に対
応して例外要因を保持する必要がないので、例外要因の
保持に必要なハードウェアは例えば1エントリ分で済む
ことになり、ハードウェア量を大幅に削減することがで
きるという効果がある。
よれば、命令追い越しバッファの各エントリの命令に対
応して例外要因を保持する必要がないので、例外要因の
保持に必要なハードウェアは例えば1エントリ分で済む
ことになり、ハードウェア量を大幅に削減することがで
きるという効果がある。
【図1】本発明の割り込み処理方法が適用された情報処
理装置の一実施形態を示すブロック図である。
理装置の一実施形態を示すブロック図である。
【図2】図1に示すリオーダバッファ制御情報部を備え
た情報処理装置の一実施形態を示すブロック図である。
た情報処理装置の一実施形態を示すブロック図である。
【図3】図1に示す例外エントリ番号制御回路26の一
構成例を示すブロック図である。
構成例を示すブロック図である。
【図4】リネーム処理における命令コードの一フォーマ
ット例を示す図である。
ット例を示す図である。
【図5】オペランドリメーミングにおける命令実行手順
の一例を示す図である。
の一例を示す図である。
【図6】従来の情報処理装置の命令パイプラインを構成
するリオーダバッファ制御情報部の一構成例を示すブロ
ック図である。
するリオーダバッファ制御情報部の一構成例を示すブロ
ック図である。
1 命令バッファ 2 リオーダバッファ制御情報部 3 リオーダバッファ演算結果データ部 4 レジスタファイル部 5 例外処理制御部 6 アドレスアダー 7 演算器 8 キャッシュメモリ 9 主記憶装置 10 リネーム処理部 11 命令実行処理部 22 先頭エントリポインタ 23 発行命令選択回路 24 リタイア制御部 25 エントリ番号持ち回り部 26 例外発生命令エントリ番号制御回路 27 保持部 28 例外処理要求生成部
Claims (3)
- 【請求項1】 複数のエントリを有するリオーダバッフ
ァに一連の実行命令を登録し、該登録命令のうちから発
行条件の整った順に命令を発行して処理を行うパイプラ
イン処理における割り込み処理方法において、 発行した命令の前記リオーダバッファ中におけるエント
リ番号を保持し、該命令について例外処理が発生する
と、その保持しているエントリ番号を例外発生命令エン
トリ番号として獲得し、該例外発生命令エントリ番号と
ともにその例外要因を保持する第1のステップと、 新たに発行した命令に例外処理が発生すると、該新たな
例外処理発生により獲得した例外発生命令エントリ番号
と前回の例外処理発生により獲得した例外発生命令エン
トリ番号とを比較していずれが前記リオーダバッファ内
で古い命令のものであるかを判定する第2のステップ
と、 前記判定結果が、新たな例外処理発生により獲得した例
外発生エントリ番号の方が古い命令のものである場合に
は、前回保持した例外発生エントリ番号および例外要因
に代えて該新たな例外処理発生により獲得した例外発生
命令エントリ番号とその例外要因を保持する第3のステ
ップと、 前記第3のステップにて最終的に保持される例外発生命
令エントリ番および例外要因に基づいて例外処理命令を
実行する第4のステップとを含み、 前記第1のステップは、 前記発行命令としてリオーダバッファから発行されるメ
モリアクセス系命令と演算系命令のそれぞれについて、
例外発生命令エントリ番号を獲得し、該例外発生命令エ
ントリ番号とともにその例外要因を保持する処理を含
み、 前記第2のステップは、 前記リオーダバッファに新たに登録される命令のエント
リ番号を示すリオーダバッファ先頭エントリポインタ
と、前記第1のステップにて獲得された、前記演算系命
令に関する例外発生命令エントリ番号である演算系エン
トリ番号および前記メモリアクセス系命令に関する例外
発生命令エントリ番号であるメモリ系エントリ番号との
関係が、 メモリ系エントリ番号<演算系エントリ番号<先頭エン
トリポインタ または、 先頭エントリポインタ<メモリ系エントリ番号<演算系
エントリ番号または、 演算系エントリ番号<先頭エントリポインタ<メモリ系
エントリ番号の何れかの条件を満たすときに、メモリ系
エントリ番号が演算系エントリ番号より古い命令のもの
であると判定し、 演算系エントリ番号<メモリ系エントリ番号<先頭エン
トリポインタまたは、 先頭エントリポインタ<演算系エントリ番号<メモリ系
エントリ番号または、 メモリ系エントリ番号<先頭エントリポインタ<演算系
エントリ番号 の何れかの条件を満たすときに、演算系エントリ番号が
メモリ系エントリ番号より古い命令のものであると判定
する処理を含む ことを特徴とする割り込み処理方法。 - 【請求項2】 請求項1に記載の割り込み処理方法にお
いて、 前記第2のステップは、 前記リオーダバッファ先頭エントリポインと、前記メモ
リ系エントリ番号と、前回の例外処理発生により獲得し
た例外発生命令エントリ番号との関係が、 メモリ系エントリ番号<例外発生エントリ番号<先頭エ
ントリポインタまたは、 先頭エントリポインタ<メモリ系エントリ番号<例外発
生エントリ番号または、 例外発生エントリ番号<先頭エントリポインタ<メモリ
系エントリ番号 の何れかの条件を満たすときに、メモリ系エントリ番号
が前回の例外処理発生により獲得した例外発生命令エン
トリ番号より古い命令のものであると判定する処理をさ
らに含む ことを特徴とする割り込み処理方法。 - 【請求項3】 請求項1または請求項2に記載の割り込
み処理方法において、 前記第2のステップは、 前記リオーダバッファ先頭エントリポインと、前記演算
系エントリ番号と、前回の例外処理発生により獲得した
例外発生命令エントリ番号との関係が、 演算系エントリ番号<例外発生エントリ番号<先頭エン
トリポインタまたは、 先頭エントリポインタ<演算系エントリ番号<例外発生
エントリ番号または、 例外発生エントリ番号<先頭エントリポインタ<演算系
エントリ番号 の何れかの条件を満たすときに、演算系エントリ番号が
前回の例外処理発生により獲得した例外発生命令エント
リ番号より古い命令のものであると判定する処理をさら
に含む ことを特徴とする割り込み処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35771297A JP2953451B2 (ja) | 1997-12-25 | 1997-12-25 | 割り込み処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35771297A JP2953451B2 (ja) | 1997-12-25 | 1997-12-25 | 割り込み処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11184696A JPH11184696A (ja) | 1999-07-09 |
JP2953451B2 true JP2953451B2 (ja) | 1999-09-27 |
Family
ID=18455532
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35771297A Expired - Lifetime JP2953451B2 (ja) | 1997-12-25 | 1997-12-25 | 割り込み処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2953451B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1264087C (zh) * | 1999-09-08 | 2006-07-12 | 关一 | 寄存器再命名方法 |
-
1997
- 1997-12-25 JP JP35771297A patent/JP2953451B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH11184696A (ja) | 1999-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3772900B2 (ja) | コンピュータシステム | |
US7624253B2 (en) | Determining register availability for register renaming | |
JP2009527866A (ja) | アウトオブオーダープロセッサにおけるトランザクショナルメモリ | |
JP2003029986A (ja) | プロセッサ間レジスタ継承方法及びその装置 | |
JPH06259253A (ja) | データプロセッサおよびその動作方法 | |
EP0747809A1 (en) | A method and system for processing multiple branch instructions that write to count and/or link registers | |
CN114341804A (zh) | 最小化用于处理器中的中断指令恢复的寄存器重命名映射表(rmt)状态恢复的处理器重排序缓冲器(rob)的遍历 | |
JP2953451B2 (ja) | 割り込み処理方法 | |
JP3497087B2 (ja) | 命令制御装置及びその方法 | |
JP2894438B2 (ja) | パイプライン処理装置 | |
JP2552738B2 (ja) | データ処理装置 | |
JP2901573B2 (ja) | スーパースカラー方式の情報処理装置 | |
JPS6149695B2 (ja) | ||
JPH07219771A (ja) | 命令プロセッサ | |
JP2002149438A (ja) | リカバリ制御用バッファ記憶の制御方法 | |
JPH0756760A (ja) | リカバリ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 8 Free format text: PAYMENT UNTIL: 20070716 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080716 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 10 Free format text: PAYMENT UNTIL: 20090716 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Year of fee payment: 11 Free format text: PAYMENT UNTIL: 20100716 |