JPH0756760A - リカバリ装置 - Google Patents
リカバリ装置Info
- Publication number
- JPH0756760A JPH0756760A JP5198314A JP19831493A JPH0756760A JP H0756760 A JPH0756760 A JP H0756760A JP 5198314 A JP5198314 A JP 5198314A JP 19831493 A JP19831493 A JP 19831493A JP H0756760 A JPH0756760 A JP H0756760A
- Authority
- JP
- Japan
- Prior art keywords
- rename
- reorder buffer
- register
- instruction
- conversion table
- 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.)
- Withdrawn
Links
Landscapes
- Advance Control (AREA)
- Retry When Errors Occur (AREA)
Abstract
(57)【要約】
【目的】 本発明は、非順序実行時にリカバリ要因が発
生したときにリカバリするリカバリ装置に関し、リオー
ダバッファおよびフューチャファイルなどのサイズを小
さくし、少ないハードウェア量でリカバリを実現するこ
とを目的とする。 【構成】 命令実行したときのディスティネーションの
レジスタ番号42に対応づけて一意なリネーム番号43
を登録するリオーダバッファ4と、その命令および先行
する全ての命令が命令実行結果をレジスタファイル7に
書き込んだ後(コミット後)にリオーダバッファ4から
対応するディスティネーションのレジスタ番号42およ
びリネーム番号43をコピーする変換テーブル3とを備
え、レジスタファイル7を参照する際に、リオーダバッ
ファ4から有効な最新のリネーム番号43のものを検索
あるいは変換テーブル3を参照して行い、一方、リカバ
リ要因が発生した場合、変換テーブル3を参照して行う
ように構成する。
生したときにリカバリするリカバリ装置に関し、リオー
ダバッファおよびフューチャファイルなどのサイズを小
さくし、少ないハードウェア量でリカバリを実現するこ
とを目的とする。 【構成】 命令実行したときのディスティネーションの
レジスタ番号42に対応づけて一意なリネーム番号43
を登録するリオーダバッファ4と、その命令および先行
する全ての命令が命令実行結果をレジスタファイル7に
書き込んだ後(コミット後)にリオーダバッファ4から
対応するディスティネーションのレジスタ番号42およ
びリネーム番号43をコピーする変換テーブル3とを備
え、レジスタファイル7を参照する際に、リオーダバッ
ファ4から有効な最新のリネーム番号43のものを検索
あるいは変換テーブル3を参照して行い、一方、リカバ
リ要因が発生した場合、変換テーブル3を参照して行う
ように構成する。
Description
【0001】
【産業上の利用分野】本発明は、非順序実行時に分岐予
測外れなどのリカバリ要因が発生したときにリカバリす
るリカバリ装置に関するものである。
測外れなどのリカバリ要因が発生したときにリカバリす
るリカバリ装置に関するものである。
【0002】
【従来の技術】一般にスーパスカラプロセッサの性能を
向上させるために、命令実行をout-of-order(非順序実
行)で行なうことが広く行われている。そのようなプロ
セッサにおいて、割り込みなどの例外が発生したり、分
岐予測が外れたりした場合、本来実行してはいけない命
令が既に実行済となっている可能性があり、その時はプ
ロセッサの状態をこれらの命令の実行前に戻す必要があ
る。この復元作業をリカバリと呼ぶ。out-of-order実行
のプロセッサではリカバリ機構が必須である。
向上させるために、命令実行をout-of-order(非順序実
行)で行なうことが広く行われている。そのようなプロ
セッサにおいて、割り込みなどの例外が発生したり、分
岐予測が外れたりした場合、本来実行してはいけない命
令が既に実行済となっている可能性があり、その時はプ
ロセッサの状態をこれらの命令の実行前に戻す必要があ
る。この復元作業をリカバリと呼ぶ。out-of-order実行
のプロセッサではリカバリ機構が必須である。
【0003】リカバリ方式の代表的なものにリオーダバ
ッファを用いる方式がある。図9にリオーダバッファの
一般的な構成を示す。レジスタをターゲットとする命令
がデコードされると、デコードされた順番に従って、リ
オーダバッファ21中の1個のエントリがその命令に割
り当てられ、実行が終了すると、その結果をターゲット
レジスタの番号とともにリオーダバッファ21中の割り
当てられたエントリに格納する。命令のコミット(結果
の書き戻し)は、リオーダバッファ21のエントリ番号
順に行われるので、後の命令が先行して終了しても、先
行命令が終了するまでは、結果をリオーダバッファ21
内に保持したままで、コミットしない。即ち、個々の命
令はデコードされた後に、 リオーダバッファ レジスタファイル 状態1:実行が終了していない。 − − 状態2:実行が終了し、結果が リオーダバッファに存在する。 有り − 状態3:コミットして、結果が レジスタファイルに存在する。 − 有り また、後続命令によるレジスタ参照においては、先行命
令が状態1にある間は待となり、状態2にある間はリオ
ーダバッファ21からの参照となり、状態3にある間は
レジスタファイルからの参照となる。リオーダバッファ
21からの参照は連想的で、制御が複雑となる。そこ
で、図10に示すように、常に最新のレジスタ値を格納
したフューチャファイル26と呼ぶファイルを用いて参
照を行なう方式が提案されている。フューチャファイル
26の参照は普通のインデックスによるアクセスなので
実現は簡単であり、上述した最新のレジスタ値がフュー
チャファイル26に格納されているので、リオーダバッ
ファ21を検索して最新のレジスタ値を見つける手間が
省略できる。
ッファを用いる方式がある。図9にリオーダバッファの
一般的な構成を示す。レジスタをターゲットとする命令
がデコードされると、デコードされた順番に従って、リ
オーダバッファ21中の1個のエントリがその命令に割
り当てられ、実行が終了すると、その結果をターゲット
レジスタの番号とともにリオーダバッファ21中の割り
当てられたエントリに格納する。命令のコミット(結果
の書き戻し)は、リオーダバッファ21のエントリ番号
順に行われるので、後の命令が先行して終了しても、先
行命令が終了するまでは、結果をリオーダバッファ21
内に保持したままで、コミットしない。即ち、個々の命
令はデコードされた後に、 リオーダバッファ レジスタファイル 状態1:実行が終了していない。 − − 状態2:実行が終了し、結果が リオーダバッファに存在する。 有り − 状態3:コミットして、結果が レジスタファイルに存在する。 − 有り また、後続命令によるレジスタ参照においては、先行命
令が状態1にある間は待となり、状態2にある間はリオ
ーダバッファ21からの参照となり、状態3にある間は
レジスタファイルからの参照となる。リオーダバッファ
21からの参照は連想的で、制御が複雑となる。そこ
で、図10に示すように、常に最新のレジスタ値を格納
したフューチャファイル26と呼ぶファイルを用いて参
照を行なう方式が提案されている。フューチャファイル
26の参照は普通のインデックスによるアクセスなので
実現は簡単であり、上述した最新のレジスタ値がフュー
チャファイル26に格納されているので、リオーダバッ
ファ21を検索して最新のレジスタ値を見つける手間が
省略できる。
【0004】これらリオーダバッファ21を用いたリカ
バリは、ある命令で例外が発生すると、その命令よりも
先行する命令は全てコミットし、後続の命令はコミット
しない状態で、例外処理ルーチンに制御を渡す。この
際、リオーダバッファ21を用いれば、例外の発生した
命令よりエントリ番号の若い全ての命令の実行の終了を
待って、結果の書き戻しを行い、更にその後に例外処理
を行えばよいから、リカバリ処理を簡単に行なうことが
できる。
バリは、ある命令で例外が発生すると、その命令よりも
先行する命令は全てコミットし、後続の命令はコミット
しない状態で、例外処理ルーチンに制御を渡す。この
際、リオーダバッファ21を用いれば、例外の発生した
命令よりエントリ番号の若い全ての命令の実行の終了を
待って、結果の書き戻しを行い、更にその後に例外処理
を行えばよいから、リカバリ処理を簡単に行なうことが
できる。
【0005】次に、図9および図10の構成および動作
を簡単に説明する。図9は、従来のリオーダバッファ例
を示す。リオーダバッファ21は、図示のように、ID
に対応づけて有効フラグ22、レジスタ番号23、レジ
スタに格納すべき値(レジスタ値)24を格納したもの
である。ここでは、レジスタ値24は、通常、データ幅
に対応し、32ビットあるいは64ビット幅である。
を簡単に説明する。図9は、従来のリオーダバッファ例
を示す。リオーダバッファ21は、図示のように、ID
に対応づけて有効フラグ22、レジスタ番号23、レジ
スタに格納すべき値(レジスタ値)24を格納したもの
である。ここでは、レジスタ値24は、通常、データ幅
に対応し、32ビットあるいは64ビット幅である。
【0006】図10は、従来のフューチャファイルの位
置付け例を示す。フューチャファイル26は、上述した
ようにリオーダバッファ21に格納した最新のレコード
の値(レジスタ番号、レジスタ値)を持つものである。
このフューチャファイル26を持つことにより、最新の
レジスタ値を見つける場合、リオーダバッファ21中か
ら同じレジスタ番号のうちの最新のレジスタ値を探す手
間が省け、高速化できる。このフューチャファイル26
は、レジスタ数分のエントリを持つ必要がある。
置付け例を示す。フューチャファイル26は、上述した
ようにリオーダバッファ21に格納した最新のレコード
の値(レジスタ番号、レジスタ値)を持つものである。
このフューチャファイル26を持つことにより、最新の
レジスタ値を見つける場合、リオーダバッファ21中か
ら同じレジスタ番号のうちの最新のレジスタ値を探す手
間が省け、高速化できる。このフューチャファイル26
は、レジスタ数分のエントリを持つ必要がある。
【0007】
【発明が解決しようとする課題】従来のリオーダバッフ
ァ21およびフューチャファイル26を用いたリカバリ
方式をコンピュータシステムに実装すると、高い性能を
得るためにはリオーダバッファ21のエントリ数をある
程度以上確保する必要がある。また、フューチャファイ
ル26もアーキテクチャで与えられたレジスタ数分のエ
ントリが必要である。これら2つのリオーダバッファ2
1およびフューチャファイル26は、レジスタフィアル
25と同程度のサイズにもなってしまい、LSIで作成
するときにチップレイアウト上の大きな制約となってし
まうという問題があった。
ァ21およびフューチャファイル26を用いたリカバリ
方式をコンピュータシステムに実装すると、高い性能を
得るためにはリオーダバッファ21のエントリ数をある
程度以上確保する必要がある。また、フューチャファイ
ル26もアーキテクチャで与えられたレジスタ数分のエ
ントリが必要である。これら2つのリオーダバッファ2
1およびフューチャファイル26は、レジスタフィアル
25と同程度のサイズにもなってしまい、LSIで作成
するときにチップレイアウト上の大きな制約となってし
まうという問題があった。
【0008】本発明は、これらの問題を解決するため、
リオーダバッファおよびフューチャファイルのサイズを
小さくし、少ないハードウェア量でリカバリを実現する
ことを目的としている。
リオーダバッファおよびフューチャファイルのサイズを
小さくし、少ないハードウェア量でリカバリを実現する
ことを目的としている。
【0009】
【課題を解決するための手段】図1は、本発明の原理構
成図を示す。図1において、変換テーブル3は、コミッ
ト後のレジスタ番号42およびリネーム番号43をコピ
ーして格納するものである。
成図を示す。図1において、変換テーブル3は、コミッ
ト後のレジスタ番号42およびリネーム番号43をコピ
ーして格納するものである。
【0010】リオーダバッファ4は、命令のIDに対応
づけてレジスタ番号42および一意なリネーム番号43
などを登録するものである。セレクト信号生成回路6
は、リオーダバッファ4あるいは変換テーブル3のいず
れからのリネーム番号を選択するを決定するものであ
る。
づけてレジスタ番号42および一意なリネーム番号43
などを登録するものである。セレクト信号生成回路6
は、リオーダバッファ4あるいは変換テーブル3のいず
れからのリネーム番号を選択するを決定するものであ
る。
【0011】フューチャファイル10は、レジスタ番号
42に対応づけて最新のリネーム番号43を格納するも
のである。
42に対応づけて最新のリネーム番号43を格納するも
のである。
【0012】
【作用】本発明は、図1などに示すように、命令実行し
たときのデスティネーションのレジスタ番号42および
一意なリネーム番号43を命令のIDに対応づけてリオ
ーダバッファ4に登録すると共に、命令実行結果をレジ
スタファイル7に書き込んだ後(コミット後)にリオー
ダバッファ4から対応するディスティネーションのレジ
スタ番号42およびリネーム番号43を変換テーブル4
にコピーして格納しておき、レジスタファイル7を参照
する際に、リオーダバッファ4から最新のリネーム番号
43のものを検索あるいは変換テーブル3を参照して行
い、一方、リカバリ要因(例えば分岐外れなど)が発生
した場合には変換テーブル3を参照して行うようにして
いる。
たときのデスティネーションのレジスタ番号42および
一意なリネーム番号43を命令のIDに対応づけてリオ
ーダバッファ4に登録すると共に、命令実行結果をレジ
スタファイル7に書き込んだ後(コミット後)にリオー
ダバッファ4から対応するディスティネーションのレジ
スタ番号42およびリネーム番号43を変換テーブル4
にコピーして格納しておき、レジスタファイル7を参照
する際に、リオーダバッファ4から最新のリネーム番号
43のものを検索あるいは変換テーブル3を参照して行
い、一方、リカバリ要因(例えば分岐外れなど)が発生
した場合には変換テーブル3を参照して行うようにして
いる。
【0013】この際、リオーダバッファ4のディスティ
ネーションのレジスタ番号42および最新のリネーム番
号43をフューチャファイル10に格納しておき、レジ
スタファイル7を参照する際に、フューチャファイル1
0あるいは変換テーブル3を参照して行い、一方、リカ
バリ要因が発生した場合には変換テーブル3を参照して
行うようにしている。
ネーションのレジスタ番号42および最新のリネーム番
号43をフューチャファイル10に格納しておき、レジ
スタファイル7を参照する際に、フューチャファイル1
0あるいは変換テーブル3を参照して行い、一方、リカ
バリ要因が発生した場合には変換テーブル3を参照して
行うようにしている。
【0014】また、リオーダバッファ4に命令に対応づ
けてエントリを格納する際のIDとして、命令に一意に
割り当てたID、あるいは命令自身のプログラムカウン
タに格納されたアドレスのうちの任意のmビット(mは
整数)とするようにしている。
けてエントリを格納する際のIDとして、命令に一意に
割り当てたID、あるいは命令自身のプログラムカウン
タに格納されたアドレスのうちの任意のmビット(mは
整数)とするようにしている。
【0015】また、レジスタファイル7のレジスタ番号
に対応づけてリオーダバッファ4あるいは変換テーブル
3のいずれを選択するかのビットを持つセレクト信号生
成回路6を設け、セレクト信号生成回路6からのセクク
ト信号に従って、変換テーブル3からのリネーム番号あ
るいはリオーダバッファ4からの最新のリネーム番号
(あるいはフューチャファイル10からのリネーム番
号)のいずれかを選択するようにしている。
に対応づけてリオーダバッファ4あるいは変換テーブル
3のいずれを選択するかのビットを持つセレクト信号生
成回路6を設け、セレクト信号生成回路6からのセクク
ト信号に従って、変換テーブル3からのリネーム番号あ
るいはリオーダバッファ4からの最新のリネーム番号
(あるいはフューチャファイル10からのリネーム番
号)のいずれかを選択するようにしている。
【0016】また、リオーダバッファ4中に当該リオー
ダバッファ4あるいは変換テーブル3のいずれを選択す
るかのセレクト情報44を設け、当該セレクト情報44
に従って、リオーダバッファ4あるいは変換テーブル3
を選択するようにしている。
ダバッファ4あるいは変換テーブル3のいずれを選択す
るかのセレクト情報44を設け、当該セレクト情報44
に従って、リオーダバッファ4あるいは変換テーブル3
を選択するようにしている。
【0017】従って、リオーダバッファ4、変換テーブ
ル3およびフューチャファイル10のサイズを小さく
し、少ないハードウェア量でリカバリを実現することが
可能となる。例えば従来のリオーダバッファ4、フュー
チャファイル10および変換テーブル3はレジスタ番号
およびレジスタ値(例えば32ビット幅や64ビット
幅)であったものを、本発明ではレジスタ番号およびリ
ネーム番号(例えば6ビット幅)となり、ビット容量を
大幅に削減できる。
ル3およびフューチャファイル10のサイズを小さく
し、少ないハードウェア量でリカバリを実現することが
可能となる。例えば従来のリオーダバッファ4、フュー
チャファイル10および変換テーブル3はレジスタ番号
およびレジスタ値(例えば32ビット幅や64ビット
幅)であったものを、本発明ではレジスタ番号およびリ
ネーム番号(例えば6ビット幅)となり、ビット容量を
大幅に削減できる。
【0018】
【実施例】まず、図1の構成および動作を詳細に説明す
る。図1の(a)は、構成図を示す。
る。図1の(a)は、構成図を示す。
【0019】図1の(a)において、デコード回路1
は、aから与えられた命令をデコードし、デスティネー
ションレジスタ番号およびソースレジスタ番号をbとc
に出力すると共に、同時に個々の命令を識別するIDを
生成してdに出力するものである。
は、aから与えられた命令をデコードし、デスティネー
ションレジスタ番号およびソースレジスタ番号をbとc
に出力すると共に、同時に個々の命令を識別するIDを
生成してdに出力するものである。
【0020】新規番号割当回路2は、bから入力された
デスティネーションレジスタ番号に、一意なリネーム番
号を割り当ててeに出力するものである。命令実行パイ
プライン8は、eからリネーム番号を入力し、演算を行
った結果をkに出力すると共に演算に要したサイクルだ
け保持してjに書き込みアドレスを出力するものであ
る。
デスティネーションレジスタ番号に、一意なリネーム番
号を割り当ててeに出力するものである。命令実行パイ
プライン8は、eからリネーム番号を入力し、演算を行
った結果をkに出力すると共に演算に要したサイクルだ
け保持してjに書き込みアドレスを出力するものであ
る。
【0021】レジスタファイル7は、kから入力された
演算結果を、jからライトアドレスポート7−2に入力
されたライトアドレスの位置に書き込んだり、hからリ
ードアドレスポート7−1に入力されたアドレスからデ
ータをiに読み出して命令実行パイプライン8に入力し
たりするものである。
演算結果を、jからライトアドレスポート7−2に入力
されたライトアドレスの位置に書き込んだり、hからリ
ードアドレスポート7−1に入力されたアドレスからデ
ータをiに読み出して命令実行パイプライン8に入力し
たりするものである。
【0022】リオーダバッファ4は、bからのデスティ
ネーションレジスタ番号およびeからのリネーム番号
を、dからの命令に割り当てられたIDのエントリに格
納して保持したりなどするものである。リオーダバッフ
ァ4は、図1の(b)に示すように、有効フラグ41、
レジスタ番号(bの値)42、リネーム番号(eの値)
43、セレクト情報44から構成されている。このよう
に、リオーダバッファ5には、従来のレジスタ番号とそ
の値ではなく、リネーミング前後の値(正確にはデステ
ィネーションレジスタ番号および一意に割り当てたリネ
ーム番号)を格納するので、必要なビット容量が少なく
なる。
ネーションレジスタ番号およびeからのリネーム番号
を、dからの命令に割り当てられたIDのエントリに格
納して保持したりなどするものである。リオーダバッフ
ァ4は、図1の(b)に示すように、有効フラグ41、
レジスタ番号(bの値)42、リネーム番号(eの値)
43、セレクト情報44から構成されている。このよう
に、リオーダバッファ5には、従来のレジスタ番号とそ
の値ではなく、リネーミング前後の値(正確にはデステ
ィネーションレジスタ番号および一意に割り当てたリネ
ーム番号)を格納するので、必要なビット容量が少なく
なる。
【0023】セレクタ7は、変換テーブル3からfに出
力されたコミットしたリネーム番号と、リオーダバッフ
ァ4からgに出力された最新のリネーム番号とのうちの
1つを選択したものをhに出力するものである。このh
に出力したリネーム番号をレジスタファイル7のリード
アドレスポート7−1に入力し、iから出力されたオペ
ランドを命令実行パイプライン8に入力する。gは、c
(ソースレジスタ番号)をキーにリオーダバッファ4を
検索して、レジスタ番号が当該cと等しいエントリのう
ち、最も新しく登録されているエントリのリネーム番号
43の値を出力する。
力されたコミットしたリネーム番号と、リオーダバッフ
ァ4からgに出力された最新のリネーム番号とのうちの
1つを選択したものをhに出力するものである。このh
に出力したリネーム番号をレジスタファイル7のリード
アドレスポート7−1に入力し、iから出力されたオペ
ランドを命令実行パイプライン8に入力する。gは、c
(ソースレジスタ番号)をキーにリオーダバッファ4を
検索して、レジスタ番号が当該cと等しいエントリのう
ち、最も新しく登録されているエントリのリネーム番号
43の値を出力する。
【0024】変換テーブル3は、レジスタ番号につい
て、命令のコミットした最新のリネーム番号43をそれ
ぞれ格納したものである。これは、リオーダバッファ4
の各エントリに割り当てられた命令がコミットしたこと
を契機に、リオーダバッファ4のレジスタ番号42に対
応するエントリに、リネーム番号43の値をコピーす
る。判り易く言えば、リオーダバッファ4はデコードさ
れたがコミットされていない命令に対応するレジスタ番
号42およびリネーム番号43を格納し、変換テーブル
3はコミットしたリネーム番号をレジスタ番号2のエン
トリに格納する。
て、命令のコミットした最新のリネーム番号43をそれ
ぞれ格納したものである。これは、リオーダバッファ4
の各エントリに割り当てられた命令がコミットしたこと
を契機に、リオーダバッファ4のレジスタ番号42に対
応するエントリに、リネーム番号43の値をコピーす
る。判り易く言えば、リオーダバッファ4はデコードさ
れたがコミットされていない命令に対応するレジスタ番
号42およびリネーム番号43を格納し、変換テーブル
3はコミットしたリネーム番号をレジスタ番号2のエン
トリに格納する。
【0025】セレクト信号生成回路6は、内部にレジス
タの個数分の1ビットのテーブルを有し、cからの入力
に対応した値が“0”ならば変換テーブル3の値をセレ
クタ5に選択させ、値が“1”ならばリオーダバッファ
4の値をセレクタ5に選択させる信号をmに出力するも
のである。
タの個数分の1ビットのテーブルを有し、cからの入力
に対応した値が“0”ならば変換テーブル3の値をセレ
クタ5に選択させ、値が“1”ならばリオーダバッファ
4の値をセレクタ5に選択させる信号をmに出力するも
のである。
【0026】以上が通常時のシステムの構成および動作
である。実際にはスーパスカラの多重度に応じて、図中
の信号も幅を持つことになるが、それによって回路の本
質的な動作に影響を与えない。次に、リカバリ時の構成
および動作を説明する。
である。実際にはスーパスカラの多重度に応じて、図中
の信号も幅を持つことになるが、それによって回路の本
質的な動作に影響を与えない。次に、リカバリ時の構成
および動作を説明する。
【0027】割り込みや分岐予測外れなどのリカバリ要
因が発生すると、リカバリ処理が必要になる。リカバリ
において、該当する命令のIDよりも若いIDを持つ命
令がコミットされると共に、それ以外の命令は例え実行
が終わっていても、プロセッサ内部に影響を残さないよ
うにする必要がある。制御回路9は、コミットされる命
令を識別するための回路を有し、それらの命令につい
て、通常動作時と同様に、命令がコミットする毎にリオ
ーダバッファ4の内容を変換バッファ3にコピーする。
この制御は、o、pによって行なう。
因が発生すると、リカバリ処理が必要になる。リカバリ
において、該当する命令のIDよりも若いIDを持つ命
令がコミットされると共に、それ以外の命令は例え実行
が終わっていても、プロセッサ内部に影響を残さないよ
うにする必要がある。制御回路9は、コミットされる命
令を識別するための回路を有し、それらの命令につい
て、通常動作時と同様に、命令がコミットする毎にリオ
ーダバッファ4の内容を変換バッファ3にコピーする。
この制御は、o、pによって行なう。
【0028】コミットさせる命令が全てコミットし終わ
ると、nによってセレクト信号生成回路6内のテーブル
を全てクリアする。これによって、全てのレジスタの参
照は、変換テーブル3に格納された情報に基づいてリネ
ームされることとなり、コミットされていない命令の影
響を排除することができる。
ると、nによってセレクト信号生成回路6内のテーブル
を全てクリアする。これによって、全てのレジスタの参
照は、変換テーブル3に格納された情報に基づいてリネ
ームされることとなり、コミットされていない命令の影
響を排除することができる。
【0029】その後、新たなリネームが発生する毎に、
セレクト信号生成回路6中の該当するレジスタ番号のビ
ットを“0”から“1”に変更すれば、リオーダバッフ
ァ4中のリネーム番号の値を参照することができるよう
になる。以下順次詳細に説明する。
セレクト信号生成回路6中の該当するレジスタ番号のビ
ットを“0”から“1”に変更すれば、リオーダバッフ
ァ4中のリネーム番号の値を参照することができるよう
になる。以下順次詳細に説明する。
【0030】図2は、本発明の命令実行の流れ図(フュ
ーチャファイルが無い場合)を示す。図2において、S
1は、 ・ 命令デコードする。
ーチャファイルが無い場合)を示す。図2において、S
1は、 ・ 命令デコードする。
【0031】・ ソースレジスタのリネーミング(変
換テーブルまたはリオーダバッファの最新値を見る) ・ デスティネーションレジスタのリネーミングをし
てリオーダバッファに格納する。
換テーブルまたはリオーダバッファの最新値を見る) ・ デスティネーションレジスタのリネーミングをし
てリオーダバッファに格納する。
【0032】ここで、は、既述したように、図1のa
から入力された命令をデコード回路1がデコードし、デ
スティネーションレジスタ番号およびソースレジスタ番
号を出力する。は、既述したように、変換テーブル3
からコミット済のリネーム番号あるいはリオーダバッフ
ァ4からの最新のリネーム番号のいずれかを選択する。
は、既述したように、デスティネーションレジスタ番
号に割り当てた一意のリネーム番号をリオーダバッファ
4に格納する。
から入力された命令をデコード回路1がデコードし、デ
スティネーションレジスタ番号およびソースレジスタ番
号を出力する。は、既述したように、変換テーブル3
からコミット済のリネーム番号あるいはリオーダバッフ
ァ4からの最新のリネーム番号のいずれかを選択する。
は、既述したように、デスティネーションレジスタ番
号に割り当てた一意のリネーム番号をリオーダバッファ
4に格納する。
【0033】S2は、リネーム後のソースレジスタ番号
に従ってオペランドリードする。これは、S1ので選
択したソースレジスタ番号(リネーム番号)をレジスタ
ファイル7のリードアドレスポート7−1に入力し、出
力したオペランドを命令実行パイプライン8に入力す
る。
に従ってオペランドリードする。これは、S1ので選
択したソースレジスタ番号(リネーム番号)をレジスタ
ファイル7のリードアドレスポート7−1に入力し、出
力したオペランドを命令実行パイプライン8に入力す
る。
【0034】S3は、演算実行する。これは、S2で入
力されたオペランドをもとに演算実行する。S4は、リ
ネーム後のデスティネーションレジスタ番号に従って、
オペランドライトする。これは、S3で命令実行パイプ
ラインで演算実行した演算結果を、デスティネーション
レジスタ番号に従ってレジスタファイル7に書き込む。
力されたオペランドをもとに演算実行する。S4は、リ
ネーム後のデスティネーションレジスタ番号に従って、
オペランドライトする。これは、S3で命令実行パイプ
ラインで演算実行した演算結果を、デスティネーション
レジスタ番号に従ってレジスタファイル7に書き込む。
【0035】S5は、リネーム後のデスティネーション
レジスタ番号をリオーダバッファ4から読んで変換テー
ブルに格納する。これにより、コミット済の命令のリネ
ーム番号が変換テーブル3にコピーされたこととなる。
レジスタ番号をリオーダバッファ4から読んで変換テー
ブルに格納する。これにより、コミット済の命令のリネ
ーム番号が変換テーブル3にコピーされたこととなる。
【0036】以上のS1からS5によって1命令の実行
を終了し、同様にして次の命令を実行する。これによ
り、リオーダバッファ4および変換テーブル3には、レ
ジスタ番号とリネーム番号、およびリネーム番号を格納
することとなり、従来のレジスタ値(例えば32ビット
幅、64ビット幅)に比較し、本発明はリネーム番号
(例えば6ビット幅)と非常にビット容量が少なくて済
み、LSIに実装する際にチップ面積を少なくすること
が可能となる。
を終了し、同様にして次の命令を実行する。これによ
り、リオーダバッファ4および変換テーブル3には、レ
ジスタ番号とリネーム番号、およびリネーム番号を格納
することとなり、従来のレジスタ値(例えば32ビット
幅、64ビット幅)に比較し、本発明はリネーム番号
(例えば6ビット幅)と非常にビット容量が少なくて済
み、LSIに実装する際にチップ面積を少なくすること
が可能となる。
【0037】図3は、本発明の具体例説明図(図2)を
示す。これは、図1の流れ図に従ったときの図1の構成
におけるリオーダバッファ4および変換テーブル3に格
納されるレジスタ番号、リネーム番号の値の変化の様子
を示す。
示す。これは、図1の流れ図に従ったときの図1の構成
におけるリオーダバッファ4および変換テーブル3に格
納されるレジスタ番号、リネーム番号の値の変化の様子
を示す。
【0038】図3の(a)は、プログラム例を示す。こ
こに記載した図示の下記のプログラム例 デスティネーション リネーム番号 命令1 *** → r3 3 → 13 ・ ・ ・ 命令2 *** → r3 3 → 23 は、命令1で演算結果をr3(デスティネーションレジ
スタ3)に書き込み、このときのレジスタ3に一意のリ
ネーム番号“13”を割り当てたものである。同様に、
命令2で演算結果をr3に書き込み、このときのレジス
タ3に一意のリネーム番号“23”を割り当てたもので
ある。
こに記載した図示の下記のプログラム例 デスティネーション リネーム番号 命令1 *** → r3 3 → 13 ・ ・ ・ 命令2 *** → r3 3 → 23 は、命令1で演算結果をr3(デスティネーションレジ
スタ3)に書き込み、このときのレジスタ3に一意のリ
ネーム番号“13”を割り当てたものである。同様に、
命令2で演算結果をr3に書き込み、このときのレジス
タ3に一意のリネーム番号“23”を割り当てたもので
ある。
【0039】次に、命令1、命令2実行時の動作を説明
する。図3の(b)は、命令1のデコード後の様子を示
す。命令1をデコードしてデスティネーションレジスタ
番号“3”に一意のリネーム番号“13”を割り当てた
ので、 有効フラグ41 レジスタ番号42 リネーム番号43 V(有効) 3 13 をリオーダバッファ4に格納する。
する。図3の(b)は、命令1のデコード後の様子を示
す。命令1をデコードしてデスティネーションレジスタ
番号“3”に一意のリネーム番号“13”を割り当てた
ので、 有効フラグ41 レジスタ番号42 リネーム番号43 V(有効) 3 13 をリオーダバッファ4に格納する。
【0040】図3の(c)は、命令1のコミット後の様
子を示す。命令1を演算実行したその演算結果をレジス
タファイル7に書き込んだので、図3の(b)のリオー
ダバッファ4の命令1のエントリの内容を変換テーブル
3にコピーする(レジスタ番号“3”のエントリにリネ
ーム番号“13”をコピーする)。
子を示す。命令1を演算実行したその演算結果をレジス
タファイル7に書き込んだので、図3の(b)のリオー
ダバッファ4の命令1のエントリの内容を変換テーブル
3にコピーする(レジスタ番号“3”のエントリにリネ
ーム番号“13”をコピーする)。
【0041】図3の(d)は、命令5のデコード後の様
子を示す。命令5をデコードしてデスティネーションレ
ジスタ番号“3”に一意のリネーム番号“23”を割り
当てたので、 有効フラグ41 レジスタ番号42 リネーム番号43 V(有効) 3 23 をリネーダバッファ4に格納する。
子を示す。命令5をデコードしてデスティネーションレ
ジスタ番号“3”に一意のリネーム番号“23”を割り
当てたので、 有効フラグ41 レジスタ番号42 リネーム番号43 V(有効) 3 23 をリネーダバッファ4に格納する。
【0042】図3の(e)は、命令5のコミット後の様
子を示す。命令5を演算実行したその演算結果をレジス
タファイル7に書き込んだので、図3の(d)のリオー
ダバッファ4の命令5のエントリの内容を変換バッファ
3にコピーする(レジスタ番号“3”のエントリにリネ
ーム番号“23”をコピーして上書きする)。
子を示す。命令5を演算実行したその演算結果をレジス
タファイル7に書き込んだので、図3の(d)のリオー
ダバッファ4の命令5のエントリの内容を変換バッファ
3にコピーする(レジスタ番号“3”のエントリにリネ
ーム番号“23”をコピーして上書きする)。
【0043】以上によって、リオーダバッファ4には命
令デコード時のレジスタ番号42およびリネーム番号4
3を格納し、変換バッファ3にはコミット後にリオーダ
バッファ4からコピーして格納する。これらにより、リ
カバリするための情報が記憶されたこととなる。
令デコード時のレジスタ番号42およびリネーム番号4
3を格納し、変換バッファ3にはコミット後にリオーダ
バッファ4からコピーして格納する。これらにより、リ
カバリするための情報が記憶されたこととなる。
【0044】次に、図4を用いて図1の構成における動
作を詳細に説明する。ここでは、図3の例を用いて説明
する。図4において、S11は、デコードする。これ
は、既述した図2のS1の命令のデコードを行なう。
作を詳細に説明する。ここでは、図3の例を用いて説明
する。図4において、S11は、デコードする。これ
は、既述した図2のS1の命令のデコードを行なう。
【0045】S12は、デスティネーション番号(例え
ば3)を出力する(図2のS1の参照)。S13は、
新規番号割当回路2がS12で通知を受けたデスティネ
ーション番号(例えば3)に一意のリネーム番号(例え
ば13)を割り当て、リオーダバッファ4およびパイプ
ライン8を経由して演算に要するサイクルだけ遅延させ
てレジスタファイル7にライトアドレスポートに入力す
る。
ば3)を出力する(図2のS1の参照)。S13は、
新規番号割当回路2がS12で通知を受けたデスティネ
ーション番号(例えば3)に一意のリネーム番号(例え
ば13)を割り当て、リオーダバッファ4およびパイプ
ライン8を経由して演算に要するサイクルだけ遅延させ
てレジスタファイル7にライトアドレスポートに入力す
る。
【0046】S14は、S12からのデスティネーショ
ン番号(例えば3)および新規番号割当回路2からのリ
ネーム番号(例えば13)を命令に対応するIDのリオ
ーダバッファ4のエントリに書き込む。
ン番号(例えば3)および新規番号割当回路2からのリ
ネーム番号(例えば13)を命令に対応するIDのリオ
ーダバッファ4のエントリに書き込む。
【0047】S15は、S25で演算結果をレジスタフ
ァイル7に書き込んで命令のコミッドが終了した後、リ
オーダバッファ4の該当するエントリ(ここでは図示の
3と13)を変換テーブル4にコピーする(エントリ3
に13を格納する、in−order)。
ァイル7に書き込んで命令のコミッドが終了した後、リ
オーダバッファ4の該当するエントリ(ここでは図示の
3と13)を変換テーブル4にコピーする(エントリ3
に13を格納する、in−order)。
【0048】S16は、セレクト信号生成回路6内のテ
ーブルのビット3を1にセットする。これは、レジスタ
番号に対応づけて設けたテーブルのビット3を1(リオ
ーダバッファ4からのリネーム番号を選択)にセットす
る。
ーブルのビット3を1にセットする。これは、レジスタ
番号に対応づけて設けたテーブルのビット3を1(リオ
ーダバッファ4からのリネーム番号を選択)にセットす
る。
【0049】S17は、ソース番号を出力する(図2の
S1の参照)。S18は、セレクト信号生成回路6が
ソース番号に対応するビット値をセレクト信号として出
力する。そして、S21でこのセレクト信号によってセ
レクタ5を動作させ、“0”のときに変換テーブル3か
らのリネーム番号をリードアドレスとして出力し、
“1”のときにリオーダバッファ4からのリネーム番号
をリードアドレスとして出力する。
S1の参照)。S18は、セレクト信号生成回路6が
ソース番号に対応するビット値をセレクト信号として出
力する。そして、S21でこのセレクト信号によってセ
レクタ5を動作させ、“0”のときに変換テーブル3か
らのリネーム番号をリードアドレスとして出力し、
“1”のときにリオーダバッファ4からのリネーム番号
をリードアドレスとして出力する。
【0050】S19は、S17で出力されたソース番号
の入力に対応する最新のリネーム後番号をリオーダバッ
ファ4から検索して出力する。S20は、S17で出力
されたソース番号の入力に対応するリネーム後番号を変
換バッファ3から出力する。
の入力に対応する最新のリネーム後番号をリオーダバッ
ファ4から検索して出力する。S20は、S17で出力
されたソース番号の入力に対応するリネーム後番号を変
換バッファ3から出力する。
【0051】S22は、S21で選択されたリードアド
レスを入力し、レジスタファイル7から値(オペラン
ド)を出力し、パイプライン8に入力する。S23は、
S22で入力されたオペランドをもとに演算実行する。
レスを入力し、レジスタファイル7から値(オペラン
ド)を出力し、パイプライン8に入力する。S23は、
S22で入力されたオペランドをもとに演算実行する。
【0052】S24は、S23の演算実行中にリカバリ
要因(例えば割り込み、分岐予測外れなど)が発生か判
別する。YESの場合には、S26でリオーダバッファ
4の無効化(有効フラグ41を無効)し、S27でセレ
クト信号生成回路6の内部のテーブルの全てのビットを
0クリアし、コミット済の変換テーブル3からのリネー
ム番号を選択するようにしておく(コミットの未を含む
リオーダバッファ4からのリネーム番号を選択しないよ
うにしておく)。
要因(例えば割り込み、分岐予測外れなど)が発生か判
別する。YESの場合には、S26でリオーダバッファ
4の無効化(有効フラグ41を無効)し、S27でセレ
クト信号生成回路6の内部のテーブルの全てのビットを
0クリアし、コミット済の変換テーブル3からのリネー
ム番号を選択するようにしておく(コミットの未を含む
リオーダバッファ4からのリネーム番号を選択しないよ
うにしておく)。
【0053】S25は、S24のNOでリカバリ要因が
発生しなかったので、ライトアドレスに演算結果を書き
込む。この書き込んだ後、既述したS15で演算結果の
終了した命令のエントリのリオーダバッファ4の内容を
変換テーブル3にコピーする。
発生しなかったので、ライトアドレスに演算結果を書き
込む。この書き込んだ後、既述したS15で演算結果の
終了した命令のエントリのリオーダバッファ4の内容を
変換テーブル3にコピーする。
【0054】以上によって、フューチャファイルが無い
場合の正常時の動作の説明、およびリカバリ要因が発生
したときにリオーダバッファ4の無効化およびセレクト
信号生成回路6の全ビットを0クリアしたリカバリ処理
の説明を終了したこととなる。
場合の正常時の動作の説明、およびリカバリ要因が発生
したときにリオーダバッファ4の無効化およびセレクト
信号生成回路6の全ビットを0クリアしたリカバリ処理
の説明を終了したこととなる。
【0055】次に、図5ないし図8を用いてフューチャ
ファイル10を設けた場合の構成および動作を詳細に説
明する。ここで、図5ないし図8のフューチャファイル
有りの場合は、図1ないし図4のフューチャファイル無
しの場合にそれぞれ対応するものである。
ファイル10を設けた場合の構成および動作を詳細に説
明する。ここで、図5ないし図8のフューチャファイル
有りの場合は、図1ないし図4のフューチャファイル無
しの場合にそれぞれ対応するものである。
【0056】図5は、本発明の他の構成図を示す。図5
の(a)は、構成図を示す。図中の1から9は、図1の
1から9にほぼ同じであるので、説明を省略する。
の(a)は、構成図を示す。図中の1から9は、図1の
1から9にほぼ同じであるので、説明を省略する。
【0057】図5の(a)において、フューチャファイ
ル10は、レジスタ番号のエントリに最新のリネーム番
号を登録したものである。これは、リオーダバッファ4
に同じレジスタ番号42の複数のリネーム番号43が登
録されていた場合、これらを全部検索して最新のリネー
ム番号43のものを見つけて出力するという煩雑は制御
が必要となってしまっていたものを、本発明のフューチ
ャファイル10を設けてこれにレジスタ番号の最新のリ
ネーム番号を常に登録し、即時に最新のリネーム番号の
ものを読み出し可能としたものである。
ル10は、レジスタ番号のエントリに最新のリネーム番
号を登録したものである。これは、リオーダバッファ4
に同じレジスタ番号42の複数のリネーム番号43が登
録されていた場合、これらを全部検索して最新のリネー
ム番号43のものを見つけて出力するという煩雑は制御
が必要となってしまっていたものを、本発明のフューチ
ャファイル10を設けてこれにレジスタ番号の最新のリ
ネーム番号を常に登録し、即時に最新のリネーム番号の
ものを読み出し可能としたものである。
【0058】図5の(b)は、フューチャファイル例を
示す。ここでは、フューチャファイル10は、リネーム
前のレジスタ番号のエントリに、最新のリネーム番号を
登録したものである。
示す。ここでは、フューチャファイル10は、リネーム
前のレジスタ番号のエントリに、最新のリネーム番号を
登録したものである。
【0059】図6は、本発明の命令実行の流れ図(フュ
ーチャファイルが有る場合)を示す。図6において、S
31は、 ・ 命令デコードする。
ーチャファイルが有る場合)を示す。図6において、S
31は、 ・ 命令デコードする。
【0060】・ ソースレジスタのリネーミング(変
換テーブルまたはリオーダバッファの最新値を見る) ・ デスティネーションレジスタのリネーミングをし
てリオーダバッファとフューチャファイル10に格納す
る。
換テーブルまたはリオーダバッファの最新値を見る) ・ デスティネーションレジスタのリネーミングをし
てリオーダバッファとフューチャファイル10に格納す
る。
【0061】ここで、は、既述したように、図1のa
から入力された命令をデコード回路1がデコードし、デ
スティネーションレジスタ番号およびソースレジスタ番
号を出力する。は、既述したように、変換テーブル3
からコミット済のリネーム番号あるいはリオーダバッフ
ァ4からのリネーム番号のいずれかを選択する。は、
既述したように、デスティネーションレジスタ番号に割
り当てた一意のリネーム番号をリオーダバッファ4に格
納すると共に、新たに設けたフューチャファイル10の
レジスタ番号のエントリにリネーム番号を上書きして常
に最新のものを保持する。
から入力された命令をデコード回路1がデコードし、デ
スティネーションレジスタ番号およびソースレジスタ番
号を出力する。は、既述したように、変換テーブル3
からコミット済のリネーム番号あるいはリオーダバッフ
ァ4からのリネーム番号のいずれかを選択する。は、
既述したように、デスティネーションレジスタ番号に割
り当てた一意のリネーム番号をリオーダバッファ4に格
納すると共に、新たに設けたフューチャファイル10の
レジスタ番号のエントリにリネーム番号を上書きして常
に最新のものを保持する。
【0062】S32は、リネーム後のソースレジスタ番
号に従ってオペランドリードする。これは、S31の
で選択したソースレジスタ番号(リネーム番号)をレジ
スタファイル7のリードアドレスポート7−1に入力
し、出力したオペランドを命令実行パイプライン8に入
力する。
号に従ってオペランドリードする。これは、S31の
で選択したソースレジスタ番号(リネーム番号)をレジ
スタファイル7のリードアドレスポート7−1に入力
し、出力したオペランドを命令実行パイプライン8に入
力する。
【0063】S33は、演算実行する。これは、S32
で入力されたオペランドをもとに演算実行する。S34
は、リネーム後のデスティネーションレジスタ番号に従
って、オペランドライトする。これは、S33で命令実
行パイプラインで演算実行した演算結果を、デスティネ
ーションレジスタ番号に従ってレジスタファイル7に書
き込む。
で入力されたオペランドをもとに演算実行する。S34
は、リネーム後のデスティネーションレジスタ番号に従
って、オペランドライトする。これは、S33で命令実
行パイプラインで演算実行した演算結果を、デスティネ
ーションレジスタ番号に従ってレジスタファイル7に書
き込む。
【0064】S35は、リネーム後のデスティネーショ
ンレジスタ番号をリオーダバッファ4から読んで変換テ
ーブルに格納する。これにより、コミット済の命令のリ
ネーム番号が変換テーブル3にコピーされたこととな
る。
ンレジスタ番号をリオーダバッファ4から読んで変換テ
ーブルに格納する。これにより、コミット済の命令のリ
ネーム番号が変換テーブル3にコピーされたこととな
る。
【0065】以上のS31からS35によって1命令の
実行を終了し、同様にして次の命令を実行する。これに
より、リオーダバッファ4および変換テーブル3には、
レジスタ番号とリネーム番号、およびリネーム番号を格
納、更にフューチャファイル10には最新のリネーム番
号を常に保持することとなり、従来のレジスタ値(32
ビット幅や64ビット幅)に比較し、本発明はリネーム
番号(例えば6ビット幅)と非常にビット容量が少なく
て済み、LSIに実装する際にチップ面積を少なくする
ことが可能となる。
実行を終了し、同様にして次の命令を実行する。これに
より、リオーダバッファ4および変換テーブル3には、
レジスタ番号とリネーム番号、およびリネーム番号を格
納、更にフューチャファイル10には最新のリネーム番
号を常に保持することとなり、従来のレジスタ値(32
ビット幅や64ビット幅)に比較し、本発明はリネーム
番号(例えば6ビット幅)と非常にビット容量が少なく
て済み、LSIに実装する際にチップ面積を少なくする
ことが可能となる。
【0066】図7は、本発明の具体例説明図(図6)を
示す。これは、図6の流れ図に従ったときの図5の構成
におけるリオーダバッファ4、変換テーブル3およびフ
ューチャファイル10に格納されるレジスタ番号、リネ
ーム番号の値の変化の様子を示す。
示す。これは、図6の流れ図に従ったときの図5の構成
におけるリオーダバッファ4、変換テーブル3およびフ
ューチャファイル10に格納されるレジスタ番号、リネ
ーム番号の値の変化の様子を示す。
【0067】図7の(a)は、プログラム例を示す。図
3の(a)と同一であるので説明を省略する。次に、命
令1、命令2実行時の動作を説明する。
3の(a)と同一であるので説明を省略する。次に、命
令1、命令2実行時の動作を説明する。
【0068】図7の(b)は、命令1のデコード後の様
子を示す。命令1をデコードしてデスティネーションレ
ジスタ番号“3”に一意のリネーム番号“13”を割り
当てたので、 有効フラグ41 レジスタ番号42 リネーム番号43 V(有効) 3 13 をリオーダバッファ4に格納する。併せて、フューチャ
ファイルに図示のようにレジスタ番号“3”のエントリ
にリネーム番号“13”を上書きし、最新のリネーム番
号“13”を保持する。
子を示す。命令1をデコードしてデスティネーションレ
ジスタ番号“3”に一意のリネーム番号“13”を割り
当てたので、 有効フラグ41 レジスタ番号42 リネーム番号43 V(有効) 3 13 をリオーダバッファ4に格納する。併せて、フューチャ
ファイルに図示のようにレジスタ番号“3”のエントリ
にリネーム番号“13”を上書きし、最新のリネーム番
号“13”を保持する。
【0069】図7の(c)は、命令1のコミット後の様
子を示す。これは、図3の(c)と同様であるので、説
明を省略する。図7の(e)は、命令5のコミット後の
様子を示す。命令5を演算実行したその演算結果をレジ
スタファイル7に書き込んだので、図7の(d)のリオ
ーダバッファ4の命令5のエントリの内容を変換バッフ
ァ3にコピーする(レジスタ番号“3”のエントリにリ
ネーム番号“23”をコピーして上書きする)。併せ
て、フューチャファイルに図示のようにレジスタ番号
“3”のエントリにリネーム番号“23”を上書きし、
最新のリネーム番号“23”を保持する。
子を示す。これは、図3の(c)と同様であるので、説
明を省略する。図7の(e)は、命令5のコミット後の
様子を示す。命令5を演算実行したその演算結果をレジ
スタファイル7に書き込んだので、図7の(d)のリオ
ーダバッファ4の命令5のエントリの内容を変換バッフ
ァ3にコピーする(レジスタ番号“3”のエントリにリ
ネーム番号“23”をコピーして上書きする)。併せ
て、フューチャファイルに図示のようにレジスタ番号
“3”のエントリにリネーム番号“23”を上書きし、
最新のリネーム番号“23”を保持する。
【0070】以上によって、リオーダバッファ4には命
令デコード時のレジスタ番号42およびリネーム番号4
3を格納すると共に、フューチャファイル10にレジス
タ番号42のエントリに最新のリネーム番号を上書きし
て保持する。そして、変換バッファ3にはコミット後に
リオーダバッファ4からリネーム番号をコピーして格納
する。これらにより、リカバリするための情報が記憶さ
れたこととなる。
令デコード時のレジスタ番号42およびリネーム番号4
3を格納すると共に、フューチャファイル10にレジス
タ番号42のエントリに最新のリネーム番号を上書きし
て保持する。そして、変換バッファ3にはコミット後に
リオーダバッファ4からリネーム番号をコピーして格納
する。これらにより、リカバリするための情報が記憶さ
れたこととなる。
【0071】次に、図8を用いて図5の構成における動
作を詳細に説明する。ここでは、図7の例を用いて説明
する。図中のS41からS57は、図4のS11からS
27にそれぞれ対応し、S49を除き同一であるのでそ
れらの説明を省略する。
作を詳細に説明する。ここでは、図7の例を用いて説明
する。図中のS41からS57は、図4のS11からS
27にそれぞれ対応し、S49を除き同一であるのでそ
れらの説明を省略する。
【0072】図8において、S44’は、フューチャフ
ァイル10のS42で出力されたレジスタ番号のエント
リに、S43で出力されたリネーム番号を上書きし、最
新のリネーム番号(例えば3)を保持する。
ァイル10のS42で出力されたレジスタ番号のエント
リに、S43で出力されたリネーム番号を上書きし、最
新のリネーム番号(例えば3)を保持する。
【0073】S49は、S47でソース番号の出力に対
応して、フューチャファイル10の当該ソース番号(レ
ジスタ番号)のエントリに保持されている最新のリネー
ム番号を出力する。これにより、図4のS19でリオー
ダバッファ4から同一のレジスタ番号を持つ複数のリネ
ーム番号のうちから最新のものを検索して出力するとい
う煩雑は制御が不要となる。
応して、フューチャファイル10の当該ソース番号(レ
ジスタ番号)のエントリに保持されている最新のリネー
ム番号を出力する。これにより、図4のS19でリオー
ダバッファ4から同一のレジスタ番号を持つ複数のリネ
ーム番号のうちから最新のものを検索して出力するとい
う煩雑は制御が不要となる。
【0074】以上によって、フューチャファイル10が
有りの場合、当該フューチャファイル10に最新のリネ
ーム番号を常に保持しているので、最新のリネーム番号
を取り出すときに即時に当該フューチャファイル10か
ら簡単な制御かつ迅速に取り出し、レジスタファイル7
にリードアドレスとして供給し、データ(オペランド)
を読み出してパイプライン8に入力し、演算実行するこ
とが可能となる。そして、リカバリ要因が発生したとき
には、リオーダバッファ4の無効化およびセレクト信号
生成回路6の全ビットを0クリアしてリカバリ処理を終
了する。
有りの場合、当該フューチャファイル10に最新のリネ
ーム番号を常に保持しているので、最新のリネーム番号
を取り出すときに即時に当該フューチャファイル10か
ら簡単な制御かつ迅速に取り出し、レジスタファイル7
にリードアドレスとして供給し、データ(オペランド)
を読み出してパイプライン8に入力し、演算実行するこ
とが可能となる。そして、リカバリ要因が発生したとき
には、リオーダバッファ4の無効化およびセレクト信号
生成回路6の全ビットを0クリアしてリカバリ処理を終
了する。
【0075】
【発明の効果】以上説明したように、本発明によれば、
リオーダバッファ4、変換テーブル3およびフューチャ
ファイル10にリネーム番号を格納する構成を採用して
いるため、従来のレジスタ値を格納する場合に比し、ビ
ット容量を削減でき、小さいハードウェア量でリカバリ
処理を実現できる。従来のレジスタ値(例えば32ビッ
ト幅、64ビット幅)を本発明ではリネーム番号(例え
ば6ビット幅)に狭くすることができ、大幅にビット容
量を削減することが可能となる。
リオーダバッファ4、変換テーブル3およびフューチャ
ファイル10にリネーム番号を格納する構成を採用して
いるため、従来のレジスタ値を格納する場合に比し、ビ
ット容量を削減でき、小さいハードウェア量でリカバリ
処理を実現できる。従来のレジスタ値(例えば32ビッ
ト幅、64ビット幅)を本発明ではリネーム番号(例え
ば6ビット幅)に狭くすることができ、大幅にビット容
量を削減することが可能となる。
【図1】本発明の原理構成図である。
【図2】本発明の命令実行の流れ図(フューチャファイ
ルが無い場合)である。
ルが無い場合)である。
【図3】本発明の具体例説明図(図2)である。
【図4】本発明の各ブロックの動作説明図(フューチャ
ファイルが無い場合)である。
ファイルが無い場合)である。
【図5】本発明の他の構成図である。
【図6】本発明の命令実行の流れ図(フューチャファイ
ルが有る場合)である。
ルが有る場合)である。
【図7】本発明の具体例説明図(図6)である。
【図8】本発明の各ブロックの動作説明図(フューチャ
ファイルが有る場合)である。
ファイルが有る場合)である。
【図9】従来のリオーダバッファ例である。
【図10】従来のフューチャファイルの位置付け図であ
る。
る。
1:デコード回路 2:新規番号割当回路 3:変換テーブル 4:リオーダバッファ 5:セレクタ 6:セレクト信号生成回路 7:レジスタファイル 8:命令実行パイプライン(パイプライン) 9:制御回路 10:フューチャファイル
Claims (5)
- 【請求項1】命令実行したときのディスティネーション
のレジスタ番号(42)に対応づけて一意なリネーム番
号(43)を登録するリオーダバッファ(4)と、 命令実行結果をレジスタファイル(7)に書き込んだ後
(コミット後)に上記リオーダバッファ(4)から対応
するディスティネーションのレジスタ番号(42)およ
びリネーム番号(43)をコピーする変換テーブル
(3)とを備え、 レジスタファイル(7)を参照する際に、上記リオーダ
バッファ(4)から最新のリネーム番号(43)のもの
を検索あるいは変換テーブル(3)を参照して行い、一
方、リカバリ要因が発生した場合、上記変換テーブル
(3)を参照して行うように構成したことを特徴とする
リカバリ装置。 - 【請求項2】上記リオーダバッファ(4)の最新のディ
スティネーションのレジスタ番号(42)および一意な
リネーム番号(43)を上書きして格納するフューチャ
ファイル(10)を備え、 レジスタファイル(7)を参照する際に、上記フューチ
ャファイル(10)あるいは変換テーブル(3)を参照
して行い、一方、リカバリ要因が発生した場合には上記
変換テーブル(3)を参照して行うように構成したこと
を特徴とする請求項1のリカバリ装置。 - 【請求項3】上記リオーダバッファ(4)に命令に対応
づけてエントリを格納する際のIDとして、命令に一意
に割り当てたID、あるいは命令自身のプログラムカウ
ンタに格納されたアドレスのうちの任意のmビット(m
は整数)としたことを特徴とする請求項1および請求項
2記載のリカバリ装置。 - 【請求項4】レジスタファイル(7)のレジスタ番号に
対応づけて上記リオーダバッファ(4)あるいは変換テ
ーブル(3)のいずれを選択するかのビットを持つセレ
クト信号生成回路(6)を設け、当該セレクト信号生成
回路(6)からのセククト信号に従って、変換テーブル
(3)からのリネーム番号あるいはリオーダバッファ
(4)からの最新のリネーム番号(あるいはフューチャ
ファイル(10)からのリネーム番号)のいずれかを選
択することを特徴とする請求項1ないし請求項3記載の
リカバリ装置。 - 【請求項5】上記リオーダバッファ(4)中に当該リオ
ーダバッファ(4)あるいは上記変換テーブル(3)の
いずれを選択するかのセレクト情報(44)を設け、当
該セレクト情報(44)に従って、リオーダバッファ
(4)あるいは変換テーブル(3)を選択するように構
成したことを特徴とする請求項1ないし請求項3記載の
リカバリ装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5198314A JPH0756760A (ja) | 1993-08-10 | 1993-08-10 | リカバリ装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP5198314A JPH0756760A (ja) | 1993-08-10 | 1993-08-10 | リカバリ装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0756760A true JPH0756760A (ja) | 1995-03-03 |
Family
ID=16389070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5198314A Withdrawn JPH0756760A (ja) | 1993-08-10 | 1993-08-10 | リカバリ装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0756760A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002543490A (ja) * | 1999-04-27 | 2002-12-17 | トランジティブ テクノロジーズ リミテッド | プログラムコード変換において使用する例外処理の方法および装置 |
-
1993
- 1993-08-10 JP JP5198314A patent/JPH0756760A/ja not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002543490A (ja) * | 1999-04-27 | 2002-12-17 | トランジティブ テクノロジーズ リミテッド | プログラムコード変換において使用する例外処理の方法および装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5887161A (en) | Issuing instructions in a processor supporting out-of-order execution | |
JP3637920B2 (ja) | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 | |
US5557763A (en) | System for handling load and/or store operations in a superscalar microprocessor | |
US7769986B2 (en) | Method and apparatus for register renaming | |
US5913048A (en) | Dispatching instructions in a processor supporting out-of-order execution | |
US5471633A (en) | Idiom recognizer within a register alias table | |
US5826055A (en) | System and method for retiring instructions in a superscalar microprocessor | |
US6098167A (en) | Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution | |
JP3919802B2 (ja) | プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法 | |
KR100747128B1 (ko) | 발행 후에 명령의 비투기적 성질을 발견하고 상기 명령을 재발행하는 스케줄러 | |
JPH09120360A (ja) | ロード命令を実行する実行ユニットを具備するデータ・プロセッサおよびその動作方法 | |
US20070050592A1 (en) | Method and apparatus for accessing misaligned data streams | |
US5664137A (en) | Method and apparatus for executing and dispatching store operations in a computer system | |
WO1996012228A1 (en) | Redundant mapping tables | |
JP2005500616A (ja) | 2レベルの分岐予測キャッシュによる分岐予測 | |
US6192461B1 (en) | Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle | |
US5860014A (en) | Method and apparatus for improved recovery of processor state using history buffer | |
US5870612A (en) | Method and apparatus for condensed history buffer | |
US6070235A (en) | Data processing system and method for capturing history buffer data | |
US5915110A (en) | Branch misprediction recovery in a reorder buffer having a future file | |
US5946468A (en) | Reorder buffer having an improved future file for storing speculative instruction execution results | |
US6240507B1 (en) | Mechanism for multiple register renaming and method therefor | |
JP3732234B2 (ja) | スーパースカラマイクロプロセッサのための非ブロッキングロードを実現するロード/ストアユニットおよびロード/ストアバッファから非ブロッキング的にロードを選択する方法 | |
JPH0756760A (ja) | リカバリ装置 | |
US6175909B1 (en) | Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20001031 |