(57)【特許請求の範囲】
【請求項１】
各々が少なくとも１つのマイクロ命令を含むマクロ命令を処理するためのデータ処理システムであって、
マイクロ命令を記憶するためのアドレス可能なメモリを含み、前記メモリにおけるマイクロ命令の少なくとも１つの特定のマイクロ命令は、複数個の次のマイクロ命令候補を有する条件付マイクロ命令であり、さらに、
前記メモリを選択的にアドレス指定して選択されたマイクロ命令をそこから読出すためのアドレス手段と、
実行結果および他のマシーン状態を記憶するための状態／結果記憶手段と、
前記メモリから読出されたマイクロ命令を実行し、該実行命令に応答して前記状態／結果記憶手段を変化させるための実行手段とを含み、
前記実行手段は、前記メモリから読出されたマイクロ命令をパイプライン態様で処理する多数のステージを含み、前記ステージの少なくとも１つによって読出されるマイクロ命令は、条件付マイクロ命令について予測された次のマイクロ命令の前記アドレス手段に対する次のアドレスを与え、
前記実行手段は、また、予測された次のマイクロ命令とそれに続く少なくとも１つのマイクロ命令の前記ステージにおける実行中に変更されたマシーン状態に対する元の状態に対応するバックアップコピーを格納するためのリストア記憶手段を含み、
前記実行手段は、前記予測された次のマイクロ命令とそれに続く少なくとも１つのマイクロ命令を実行し、該予測が正確であるかが確定する前に前記予測に基づいて実行される命令の実行により前記状態／結果記憶手段の記憶内容に変化を生じさせ、
前記実行手段は、前記状態／結果記憶手段において前記変化が生じた後、不正確なマイクロ命令予測を検出し、
前記実行手段は、前記不正確な次のマイクロ命令予測検出に応答して、前記リストア手段の前記バックアップコピーを利用して前記状態／結果記憶手段の前記変化を前記不正確に予測された次のマイクロ命令の実行前の状態の値に復帰させる、データ処理システム。
【請求項２】
前記アドレス可能なメモリは、CISCマクロ命令およびRISCマクロ命令の両方を記憶し、CISC命令は複数個のマイクロ命令を含み、RISC命令は単一の命令を含み、
前記アドレス手段は、現在実行中のマイクロ命令がRISCマクロ命令に対応するかまたはCISCマクロ命令の最後のマイクロ命令の場合、前記アドレス可能なメモリからの次のマイクロ命令が、CISC型またはRISC型のいずれであろうとも次のマクロ命令の最初のマイクロ命令であるように動作する、請求項１に記載のデータ処理システム。
【請求項３】
前記データ処理システムは、マイクロ命令がRISCマイクロ命令であるか、または複数のCISCマイクロ命令の１つであるかにかかわらず、同一の態様でマイクロ命令を扱う、請求項２に記載のデータ処理システム。
【請求項４】
前記実行手段は、各ステージの結果を記憶するための、ステージ間に配置されるレジスタ記憶手段を含む、請求項１に記載のデータ処理システム。
【請求項５】
前記実行手段は、実行中に、前記レジスタ記憶手段からの出力を異なるステージに転送して使用させる、請求項４に記載のデータ処理システム。
【請求項６】
前記実行手段は、不正確なマイクロ命令予測の検出に応答して、前記レジスタ記憶手段への書込を禁止する、請求項４に記載のデータ処理システム。
【請求項７】
前記実行手段は、不正確なマイクロ命令予測の検出に応答して、前記レジスタ記憶手段に現在記憶されるデータを無効にして該パイプラインを空にする、請求項６に記載のデータ処理システム。
【請求項８】
各ステージは１クロックサイクルで動作する、請求項１に記載のデータ処理システム。
【発明の詳細な説明】
発明の背景および概要
この発明は一般に、デジタルデータ処理装置の動作を制御するための改良された装置および方法に関する。
上述の同時に提出された出願連続番号第08/174,856号において、好ましくは単一の集積回路チップまたはモジュール上で実現され、多段階パイプライン化および分岐予測でCISC命令およびRISC命令を用いることができる非常に有利な高速マイクロ命令実行アーキテクチャが開示される。この発明は、好ましくは単一の集積回路チップまたはモジュール上で同様に実現され、かつこれもまた他の広範なアーキテクチャに適用可能であるこの出願に開示されるアプローチの非常に重要かつ新規な改良を与える。
この発明によって与えられる新規な改良は、命令が正確に予測されたかどうかが判断される前に、推論的な状態の変化を予測された命令の実行中に生じさせる非常に重要な特性を加える。当業者には周知であるように、不正確であるかもしれない命令に対して状態の変化を許すことは、不正確な状態の変化を元通りにしなくてはならないことに関連した問題のために不所望と見なされている。これは上述の同時に提出された特許出願におけるような多段階アーキテクチャが用いられる場合に一層困難な問題である。
この発明に従って、予測の正確さが判断される前に推論的な状態の変化を予測された命令の実行中に生じさせ、同時にまた、この発明が誤って予測されたと判断されるならば非常に有利かつ迅速な態様で不正確に変化された状態を補正する方法および装置が提供される。
この発明の具体的な性質ならびに他の目的、特徴、利点および用途は添付の図面と関連して好ましい実施例の以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
図１は、先行技術のデジタルデータ処理システムの概略ブロック図である。
図２は、図１のシステムに用いられる制御語の形式を示す。
図３は、上述の同時に提出された出願において開示される好ましい実施例を示す概略ブロック図である。
図４は、マイクロ命令アドレスに応答してマイクロ命令のアクセスを表を用いて示す。
図５は、図３のシステムに与えられ得るCISC命令およびRISC命令が混合した一例を表を用いて示す。
図６は、図３のシステムに与えられ得る典型的なマイクロ命令の流れを示す。
図７は、図６のマイクロ命令の流れに対する、図３のシステムにおけるマイクロ命令のフローを示す表である。
図８は、この発明に従って推論的状態変化を用いるデジタルデータ処理システムの好ましい実施例を大まかに示す概略ブロック図である。
図９は、図８のシステムをより具体的に示す概略ブロック図である。
図10は、図９のシステムに与えられ得る典型的なマイクロ命令の流れを示す。
図11は、図10のマイクロ命令の流れに対する、図10のシステムにおけるマイクロ命令のフローを示す表である。
詳細な説明
同様の数字および記号が図面の図を通して同様の素子に当てはまる。
この発明の好ましい実施例は、上述の同時に提出された出願連続番号第08/174,856号において開示される多段階高速マイクロ命令実行アーキテクチャに適用されるように説明される。したがって、この出願の開示が最初に図１−７を参照して示される。
最初に、先行技術のデジタルデータ処理システムを一般に示す図１を参照する。簡略化するために、図１のブロック８は、この技術において周知であるさまざまな形状のいずれにおいても各々が与えられる、メモリ記憶ユニット（MSU）10、算術論理ユニット（ALU）11、入力／出力（I/O）セクション12、およびタイミング制御13を含む、デジタルデータ処理システムの従来的な部分を表すように与えられる。
典型的に、同期のタイミングがタイミング制御13によって図１のシステムに与えられ、１つのマイクロ命令が各機械サイクルの間に行なわれる。機械サイクルは典型的に単一のクロックタイムに対応し、機械状態を表わす記憶装置は各サイクルの終わりに起こるクロックによって更新される。図面を混乱させないために、図１のシステムのさまざまな構成要素に与えられる特定的なタイミング信号が図示されないが、従来の態様で与えられると想定されるべきである。
図１の全体の説明を続けると、プログラマブルマイクロ命令メモリ14が複数個のマイクロ命令制御語CWを記憶するために与えられることが理解される。典型的な制御語CWは図２に図示され、マイクロ命令Ｍ、次のアドレスフィールドNAおよび条件選択フィールドCSから構成されるとわかる。選択されたマイクロ命令制御語CWは、マイクロ命令アドレスレジスタ18のマイクロ命令アドレスMaddrに応答してマイクロ命令メモリ14からマイクロ命令レジスタ16にフェッチされる。アドレスMaddrは、条件選択論理22とマイクロ命令レジスタ16における次のアドレスフィールドNAとブロック８によって与えられる代替アドレスAaddrとから選択された条件信号22aに応答して次のアドレス論理20によって前のサイクルの間に与えられる。この代替アドレスAaddrは、サブルーチンの復帰または割込の目的のために必要とされ得るような他の次のマイクロ命令アドレスを選択させる。選択される条件信号22aは、マイクロ命令レジスタ16における選択フィールドCSとブロック８からのマイクロ命令結果Meとに応答して条件選択論理22によって選択される。
図１のシステム動作の間、以下のオーバラップした（パイプライン化した）実行動作およびフェッチ動作が各機械サイクルの間に起こり、（１）システムはマイクロ命令レジスタ16に記憶された制御語CW（この制御語は前のサイクルの間にマイクロ命令メモリ14からフェッチされ、マイクロ命令メモリ16に記憶されている）のマイクロ命令Ｍ部分を実行し、（２）アドレスレジスタ18のマイクロ命令アドレスMaddrに応答して、システムはマイクロ命令メモリ14から次のマイクロ命令制御語をフェッチし、それを次のサイクルの間に用いるためにマイクロ命令レジスタ16に記憶する。
図１の先行技術のシステムに関連して、マイクロ命令が無条件である（すなわち、次のマイクロ命令が１つしかない）とき、フェッチ動作（上の（２））は常に正確な次のマイクロ命令をマイクロ命令レジスタ16にフェッチすることが理解される。このような無条件のマイクロ命令では、パイプライン化マイクロ命令フェッチ動作および実行動作はマイクロ命令のフローの速度を高めるのに効果的である。しかしながら、マイクロ命令が条件付である（すなわち、起こり得る次のマイクロ命令が２つ以上ある）ならば、予測される次のマイクロ命令アドレスMaddrは図１のブロック８によってアドレスレジスタ18に与えられ、このために、間違った次のマイクロ命令をフェッチすることになり得る。この場合、マイクロ命令のフローを補正するためのステップが取られなければならない。
たとえば上述の米国特許第4,155,120号および第4,430,706号に説明されるような、不正確にフェッチされたマイクロ命令を補正するためのさまざまな方法が知られている。これらの特許の開示はここに援用されると見なされるべきである。これらの開示によって取られるアプローチは、正確に予測されたかどうかを判断するために、予測されたマイクロ命令の各々をテストすることである。正しくなければ、不正確にフェッチされたマイクロ命令がアボートされ（すなわち、機械状態におけるいかなる変化も生じないように防がれ）、正確な次のマイクロ命令をフェッチするための方策が取られる。
上述の同時に提出された出願において開示される多段階パイプライン化マイクロプログラミングアーキテクチャの好ましい実施例は一般に図３に図示される。図３に示されるように、マイクロ命令のフェッチおよび実行は多数の段階（ステージ）を用いるパイプライン化態様で行なわれる。レジスタ10、12、14および16は段階間の記憶を行なう。必然的ではないが、基本的な外部クロックレートの倍数であるレートでこれらの多数の段階にクロックを与えることは特に有利であり、これによって、スループット速度がそれに応じて高められる。この多重クロックレートはたとえばRISCシステムに典型的に用いられる高いレートであってもよい。図３に示されるような、このような多重高速パイプライン化はこの明細書中では超パイプライン化と称される。
より具体的に図３を検討すると、段階０、段階１、段階２および段階３と呼ばれる４つの段階が図示される。各段階は単一のクロックだけを必要とする。図３を過度に複雑にしないために、クロック信号が図示されていないが、従来の態様で与えられると想定されるべきである。
図３を参照して、段階０は、マイクロ命令アドレスレジスタ102のマイクロ命令アドレスに応答してマイクロ命令メモリ100からマイクロ命令レジスタ104へマイクロ命令Ｍを読出すことを含むと理解される。マイクロ命令メモリ100はたとえば、共通の譲受人に譲渡され、1993年11月30日に提出された同時係属の特許出願連続番号第08/159,883号および第08/159,683号に開示されるようなオンチップ命令キャッシュであってもよい。
図３の段階０の間に、次のアドレスデータNAはまたマイクロ命令Ｍとともにマイクロ命令メモリ100から読出される。この次のアドレスデータNAは、次のクロックサイクルの間に用いるべき次のマイクロ命令を選択するために、次のマイクロ命令アドレスAmをマイクロ命令アドレスレジスタ102に与える次のアドレス論理106に与えられる。このように、段階０が完了するとき、マイクロ命令Ｍはマイクロ命令レジスタ104にセットアップされており、次のマイクロ命令のアドレスはマイクロ命令アドレスレジスタ102にセットアップされている。
説明される好ましい実施例では、静的な次のマイクロ命令予測アプローチが用いられるが、動的な予測も用いられ得ると理解されたい。したがって、条件付の各マイクロ命令について、次のマイクロ命令が知られており、無条件の命令と同様にフェッチされる。たとえば、静的な予測が用いられる場合、条件付の命令に従う次の命令はコンパイラによって予め定められており、マイクロ符号に組込まれる。このように、次のマイクロ命令のフェッチは、現在のマイクロ命令からの、または前に実行されたいかなるマイクロ命令からのマイクロ命令実行結果のテストも待たなくてもよい。代わりに、予測される次のマイクロ命令アドレスAmは、現在のマイクロ命令Ｍがマイクロ命令レジスタ104へ読込まれる同じクロックの間にマイクロ命令アドレスレジスタ102においてセットアップされる。この動作は、マイクロ命令アドレスレジスタ102の連続した次のマイクロ命令アドレスAm1、Am2、Am3が、それぞれのクロック周期１、２、３の間に、それぞれの次に従うクロック周期２、３、４の対応するマイクロ命令M1、M2、M3を読出させる態様を表によって表わす図４において例示される。
予測される次のマイクロ命令Amは、マイクロ命令メモリ100から読出されるNAに応答して、各クロックが次のアドレス論理106によって与えられる間にマイクロ命令アドレスレジスタ102においてセットアップする。NA自体はマイクロ命令アドレスであってもよいか、次の順次（＋１）マクロ命令アドレスが用いられるべきことを示してもよいか、または、複数個の入力アドレスAlのうちのどれが次のマイクロ命令アドレスAmとして用いられるべきかを示してもよい。これらの入力アドレスAlはサブルーチン復帰、飛越し、割込を扱い、また、マイクロ命令を終了し（その最後のマイクロ命令が完了されているとき）、かつ次のマクロ命令の最初のマイクロ命令に進むのに備える。次のマイクロ命令はまた好ましい実施例では静的に予測されてもよく、これは、１つのマイクロ命令から次のものへのフローが、マクロ命令におけるマイクロ命令の数にかかわらずマイクロ命令レベルで明白であるために容易に達成される。
図５は、クロック周期１−10の間のCISCマイクロ命令およびRISCマイクロ命令の混合した例を表によって示す。図５に示されるように、マイクロ命令M1、M2、M3、M4は第１のCISCマクロ命令MCISC−１を構成し、次のマイクロ命令M5、M6、M7は３つのRISCマクロ命令MRISC−１、MRISC−２、MRISC−３を構成し、次の３つのマイクロ命令M8、M9、M10は第２のCISCマクロ命令MCISC−２を構成する。CISCマクロ命令MCISC−１およびMCISC−２と混合したRISCマクロ命令MRISC−１、MRISC−２、MRISC−３のストリングは、CISCの利点を放棄せずに利点をRISC性能から取出させる。たとえば、RISC命令のこのようなストリングは、結果的により高い性能に繋がるマイクロ符合のフローの部分にRISC動作を与えるために用いられ得る。
段階０がいかにマイクロ命令をマイクロ命令レジスタ104へフェッチし、かつマイクロ命令アドレスレジスタ102において次のマイクロ命令アドレスAmをセットアップするかが説明されたので、段階１の間の動作が次に図３を参照して説明される。段階１の間、マイクロ命令レジスタ104から取出された段階１制御信号104aが、選択されたオペランドをレジスタファイル108からアクセスさせ、オペランドレジスタ110に記憶させる。
レジスタファイル108は、ハードウェア／マイクロ符号の組合せによって実現される仮想計算機の「状態」を記憶する。たとえば、レジスタファイル108は（次のアドレス論理106に与えられるAlのような）さまざまなアドレスと中間結果とシステム動作のために必要とされる他のデータとを記憶する。レジスタファイル108は、上述の共通の譲受人に譲渡された同時係属の特許出願連続番号第08/159,883号および第08/159,683号に開示されるようなオンチップキャッシュを含んでもよい。レジスタファイル108はまた、データをそこから受信し、かつそこに送信するためのオフチップ主メモリ（図示せず）とインタフェースしてもよい。
図３に示されるように、以下の制御機能がまた段階１の間に行なわれ、ａ）マイクロ命令レジスタ104からの段階１制御信号104bは、段階２の間の動作を制御するのに用いるために段階３制御レジスタ112に転送され、ｂ）マイクロ命令レジスタ104からの段階１条件選択信号CSは、段階２条件レジスタ114に転送されるべきであり、かつ段階２において用いられる特定の段階１条件信号を選択するために段階２条件選択論理114に与えられる。如何にマイクロ命令が段階０においてアクセスされ、かつオペランドが段階１でそれに応答して選択されるかが説明されたので、この説明は次に、回転動作、マスキング動作および算術論理動作がこれらの選択されたオペランドにおいてその間に行なわれる段階２の検討に進む。より具体的には、段階３の間、オペランドレジスタ110において選択されるオペランドは、段階２制御レジスタ112からの段階２制御信号によって制御される回転倫理118、マスク論理120、および算術制御論理122（ALU）によって操作される。段階２の間のこれらの操作の結果はマイクロ命令結果レジスタ124に記憶される。レジスタ124におけるこれらの結果は、段階３の間に用いられて、段階０においてフェッチされたマイクロ命令が次に説明されるように正確に予測されたかどうかを判断するフラグ125を含む。段階３と同様に、段階２制御レジスタ112からの段階２制御信号は段階３制御レジスタ126に転送されて、段階３の間の動作を制御するのに用いられ、同様に、段階２制御レジスタ112からの段階２制御信号CS2が段階２制御選択論理128に与えられて、段階３条件レジスタ130に転送されるべきであり、かつ段階３において用いられる特定の条件を選択する。
マイクロ命令の実行は段階３の間に完了される。段階３の間、図３のマイクロ命令結果レジスタ124に記憶される結果はレジスタファイル108に書込まれる。段階３の間でまた、予測テスト論理132はマイクロ命令が適切に予測されたかどうかを判断する。これが達成されるのは、フラグ出力125Aaを、段階３条件レジスタ130からの条件130a、レジスタファイル108から取出された予測される条件131、および／または、他の段階で起こるものを含んで同時に行なわれるさまざまな論理動作からの出力を、予測テスト論理132に適用することによってである。これらの入力に基づいて、予測テスト論理132はマイクロ命令が間違って予測されたかどうかを判断し、間違っていれば、アボート信号132aを生成する。このアボート信号132aは以下の動作を開始する。すなわち、ａ）アボート信号132aはレジスタファイル108および他の復元および論理に与えられて、誤って予測されたマイクロ命令がシステム状態および／または他のシステム復元を不適切に変化することを回避し、ｂ）アボート信号132aは、誤って予測されたマイクロ命令に従ってフェッチされたマイクロ命令の効果を無効にすることによってパイプラインを空にさせる。したがって、アボート信号は、アドレスレジスタ102、オペランドレジスタ110、結果レジスタ124、マイクロ命令レジスタ104、制御レジスタ112および126、ならびに条件レジスタ116および130のデータを無効にするために用いられる。アボート信号132aに応答するこの無効化はたとえば、上述の特許第4,155,120号および第4,430号,706号と上述の特許出願連続番号第08/159,883号および連続番号第08/159,683号とにおいて開示されるように達成され得る。好ましい態様は、レジスタのデータが無効であることを示すようにアボート信号132aによって設定可能である関連のレジスタの各々における有効性ビットを含むはずである。図３を混乱させないために、アボート信号132aからさまざまなレジスタへの接続は図示されないが、当業者によって容易に与えられ得る。
段階３はまた、マイクロ命令が誤って予測されたことを予測テスト論理132が判断するときに正確なマイクロ命令をフェッチする。これは、予測テスト論理132からの信号132bを図３の次のアドレス論理106に適用することによって達成され、このために、次のアドレス論理106がマイクロ命令アドレスレジスタ102において（フェッチされているべき正確なマイクロ命令に対応する）正確なマイクロ命令アドレスをセットアップする。次に動作は図３と関連して段階０、１、２および３でこれまでに説明されたように進む。誤って予測された命令の発見がパイプラインを空にさせたために、無効化された段階の動作は無視される。
誤って予測された条件付のマイクロ命令の結果として上述のようにパイプラインを空にすることは、これが深いパイプラインを有する多段階アーキテクチャが特に用いられる場合にあまりにも頻繁に起こるならば、性能に酷く影響を与え得ることが理解される。しかしながら、条件付の分岐は静的な予測であってもマイクロ命令レベルで高い精度に予測できることが発見されているので、図３に示される多段階超パイプライン化アーキテクチャの全体の性能は非常に重要な性能上の改良を与えることができる。
上述の多段階超パイプライン化アーキテクチャはさらなる利点をもたらす。たとえば、図３において、さらなる出力信号122bおよび122cはALU122から与えられ、さらなる出力信号124bおよび124cは結果レジスタ124から与えられることに注意されたい。これらの出力信号は性能を高めるために他の段階において論理および記憶に与えられると有利であろう。たとえば、ALU122からの出力122bと結果レジスタ124からの出力124bとはオペランドレジスタ110への入力としてそれぞれ与えられることに注意されたい。また、ALU122からの出力122cと結果レジスタ124からの124cとは、それぞれの段階において動作に影響を与えるために、マイクロ命令レジスタ104と制御レジスタ112および126と条件選択論理114および128との入力として用いるために与えられ得る。パイプライン化多段階アーキテクチャによって可能にされたこのような段階間の相互接続は各段階の動作を高める際により優れた融通性および順応性を与え、したがって全体のマイクロ命令実行を高める。別の重要な利点は、１つのクロックにおいて行なわれることができない論理動作が第１の段階において部分的に行なわれ、次に次の段階において完了できることである。さらに、条件付のマイクロ命令が正確に予測されたかどうかを判断することに関連した論理を行なうために多数の段階が利用可能なので、予測の正確さが、論理テスト動作にさらなる遅延を必要とせずに段階３において判断できる。
次に、図３の多段階超パイプライン化アーキテクチャの典型的な動作を図示するために用いられる図６および図７を参照する。
図６は典型的なマイクロ命令の流れの例であり、マイクロ命令B1およびF1は条件付であり、B2はB1に従い、F2はF1に従うことが予測される。
図７の表は、図６のマイクロ符号のフローに基づいて10個のクロック周期について段階０、１、２および３のマイクロ命令のフローを図示し、ここでB1からB2へのフローの予測は不正確であるとわかるが、F1からF2へのフローの予測は補正されているとわかる。図８のクロック周期は好ましくは単一のクロック時間に対応し、機械状態（マシーン状態）を表わす記憶装置は各クロック周期の終わりに更新されると理解されたい。
図３および図４を参照して、段階０の間、マイクロ命令はマイクロ命令レジスタ104においてフェッチかつ記憶され、段階１の間、フェッチされたマイクロ命令に対するオペランドがマイクロ命令オペランドレジスタ110において選択かつ記憶され、段階２の間、回転動作、マスク動作およびALU動作が選択されたオペランドで行なわれ、その結果（およびフラグ）は結果レジスタ124に記憶され、段階３の間、結果はレジスタファイル108へ書込まれ、予測されたマイクロ命令の正確さがテストされることが思い出される。不正確なマイクロ命令がフェッチされたことが段階３の間に判断されるならば、マイクロ命令はアボートされ、パイプラインは空にされ、正確なマイクロ命令のアドレスはアドレスレジスタ102においてセットアップされる。
最初に、アボートを含まない、図７のクロック周期１−４がより詳細に説明される。図７に示されるように、クロック周期１−４の間、段階０がそれぞれのマイクロ命令A1、B1、C1、およびD1をフェッチし、クロック周期２−４の間、段階１がそれぞれのマイクロ命令A1、B1およびC1に対するオペランドを選択し、クロック周期３−４の間、段階２がそれぞれのマイクロ命令A1およびB1に対するマスク動作、回転動作およびALU動作を行ない、クロック周期４の間、段階３がマイクロ命令A1に対して結果の記憶と次のマイクロ命令のアドレス選択とを行なう。不正確な予測がクロック周期１−４の間に発見されていないので、アボートは起こらない。
クロック周期５の間、段階０、１、２および３はそのそれぞれの動作を図７に示されるようにマイクロ命令E1、D1、C1およびB1で行なう。しかしながら、クロック５の段階３の間、予測テスト論理132はマイクロ命令C1が不正確に判断され、かつマイクロ命令B2が代わりにフェッチされているべきであることを判断する。結果として、レジスタファイル108における書込を回避するアボートが（これまでに説明されたように）起こり、レジスタ104、110、112、116、124、126および130のデータを無効にすることによってパイプラインを空にし、正確なマイクロ命令アドレス（すなわち、B2のアドレス）をマイクロ命令アドレスレジスタ102においてセットアップさせる。
したがって、図７のクロック周期６に示されるように、クロック周期６の段階０の間、正確なマイクロ命令B2がマイクロ命令レジスタ104へフェッチされる。「Ｘ」はクロック周期６の段階１、２および３において印を付けられて、３つの無効化された（空にされた）段階の動作がクロック周期６の間無視されることを示すことに注意されたい。
図７のクロック周期７の間、マイクロ命令F1が段階０の間にフェッチされ、オペランドが図示されるように段階１の間にマイクロ命令B2について選択される。段階２および段階３は（クロック７のこれらの段階について与えられる「Ｘ」によって示されるように）クロック７の間無視され続け、これは、正確なマイクロ命令B2に対応する有効なデータがまだそこに伝搬されていないからである。
図７のクロック周期８では、マイクロ命令G1が段階０においてフェッチされる。図６において、F1は条件付のマイクロ命令であり、この場合マイクロ命令G1は想定される予測に基づいてフェッチされることに注意されたい。また、クロック８の間、オペランドは段階１のマイクロ命令F1について選択され、マスク動作、回転動作およびALU動作は段階２のマイクロ命令B2について行なわれる。クロック８の段階３は再び「Ｘ」で印を付けられ、これは有効なデータがまだそこに伝搬されていないからである。
クロック周期９では、パイプラインは再び満たされ、これは４つの段階０、１、２および３の全部が今や有効であるからである。クロック周期９では、次のマイクロ命令G2が段階０の間にフェッチされ、オペランドは段階２の間にマイクロ命令F1について選択され、実行が段階３のマイクロ命令B2について完了される。
図７に示される最後のクロック周期であるクロック周期10では、次のマイクロ命令G3が段階０の間にフェッチされ、オペランドは段階１においてマイクロ命令G2について選択され、回転動作、マスク動作およびALU動作は段階２においてマイクロ命令G1について行なわれ、マイクロ命令完了動作が段階３においてマイクロ命令F1について行なわれる。マイクロ命令F1が図６に示されるように条件付なので、段階３はまた予測されるマイクロ命令G1の選択が正確であったかどうかを判断する。この例について想定されるように予測が正確であることがわかるので、アボートは起こらず、フローは割込なしに続く。
図１−７に関して、上述の同時に提出された特許出願連続番号第 号において開示されるマイクロ命令実行アーキテクチャを説明したので、そこにこの発明を組入れるための好ましい態様が次に図８−11を参照して説明される。しかしながら、まず、命令が正確に予測されているかが判断されるまで状態変化が遅延されるときに性能が劣化し得るいくつかの理由を検討することが、この発明を理解する際に役立つであろう。
今日のシステムには典型的であるような同時実行または脱順序実行をもたらすパイプライン化命令実行アーキテクチャを用いるときに、いくつかのデータハザードが存在することが理解される。周知であるように、データハザードは、通例はオーバラップする命令実行のために、不正確なデータを読出または書込可能である状況に当てはまる。データハザードの一例はリードアフタライト（RAW）ハザードであり、ここで命令は後の命令が「読出」しなければならないデータを「書込」、この場合、「書込」は「読出」が引起こさせられる前に行なわれなければならない。データハザードの別の例はライトアフタリード（WAR）ハザードであり、ここで命令は後の命令が「書込」しなければならないデータを「読出」、この場合、「書込」は「読出」の後に起こらなければならない。データハザードのさらなる例はライトアフタライト（WAW）ハザードであり、ここで命令は後の命令がまた書込まなければならないデータを書込み、この場合、「書込」は適切な順序で起こらなければならない。
パイプライン化アーキテクチャは典型的に、命令にそのそれぞれの結果（変化する機械状態）を予め定められた順序で書込むことを強制することによって上に例示されたようなデータハザードを解決する。命令の書込のこのような強制は、分岐予測を用いるパイプライン化機械について特に、命令実行の速度に著しい遅延を起こし得る。なぜなら、命令が正確に予測されたことが判断されるまでに結果の書込を遅延させなければならないことによってさらなる遅延が導入されるからである。
図８は、この発明に従って推論的状態変化を用いる好ましい実施例を大まかに示す概略ブロック図である。
図８に関連して、図３に説明されたものと類似したマイクロ命令アーキテクチャが好ましくは用いられることを理解されたい。より具体的には、図８は、実行段階EX−１、EX−２およびEX−３から命令実行結果をそれぞれ受ける中間レジスタI1、I2およびI3を用いるパイプライン化多段階アーキテクチャの３つの段階を示す。中間レジスタI1、I2およびI3はたとえば、図３のレジスタ104、110および124にそれぞれ対応でき、実行段階EX−１、EX−２およびEX−３は図３の段階１、２および３に対応できる。図８に示される機械状態ブロック200は図３のレジスタファイル108と他の機械状態109との両方に対応する。また、より明らかにするために、図３のさまざまな部分が図８から省略されているが、図３に示されるような同じ態様で与えられ得る。
実行段階EX−１、EX−２およびEX−３から図８の機械状態200に与えられる実行結果は、E1、E2およびE3としてそれぞれ示され、段階EX−１、EX−２およびEX−３に与えられてこれによって用いられる特定の機械状態値はS1、S2およびS3としてそれぞれ示される。
図８に示されるように、復元レジスタ（リストア記憶手段）202はライン201を経て機械状態200と通信する。この復元レジスタ202は機械状態のバックアップコピーを記憶するために設けられて、変化を生じる命令が正確に予測されたかどうかがまだ判断されていなくても、機械状態200を段階の命令実行に応答して変化させる。これは、初期の状態変化を１つ以上の状態値において生じさせ、同時に、元の状態値のバックアップコピーを（ライン201を経て）対応する復元レジスタ202において記憶することによて達成される。したがって、状態変化を引起こした命令が誤って予測されたことが後に判断されるならば、対応する復元レジスタのバックアップコピーが（ライン201を経て）機械状態200に与えられて、不正確に変化された状態値をその元の（正確な）値に復元する。
対応する命令が正確に予測されていることが判断されるまで待つ必要なしに図８のパイプライン化アーキテクチャが状態値を変化させるので、著しく高い速度の命令実行が達成できる。たとえば、早く完了できる命令について、かつ命令実行が可能な限り速く状態を変化することによって加速できる命令について、上述のような状態の初期の変化をもたらすことで性能が著しく改善できる。与えられる復元レジスタ202の数を制限することが所望なので、性能において最大の改良を生じる状態変化にバックアップが主に与えられるべきである。
次に、図８に示された推論的状態変化アーキテクチャの動作の具体的な例を示すために用いられる図９−11を参照する。
図９は基本的には図８と類似しており、図９のカウンタ303は、推論的な状態変化が有利に与えられ得るブロック200における状態値を表わす。同様に、図９のEX−２およびEX−３の復元レジスタ305および307は、図９ではカウンタ303をバックアップするために用いられる図８の復元レジスタ202を表わす。図９の実行ブロックEX−１、EX−２およびEX−３と中間レジスタI1、I2およびI3は図８と関連してこれまでに説明されたとおりである。
説明されるこの動作サンプルのために、図10のマイクロ命令のフローが示されることが想定され、ここでＡは条件付のマイクロ命令であり、２つの可能な次のマイクロ命令、すなわちマイクロ命令ＢまたはＤを有する。また、図10のマイクロ命令Ａ、Ｂ、ＤおよびＦの各々は段階EX−１の間に図９のカウンタ303を増分させ、カウンタ303はさもなければ増分されないことが想定される。これが図９において示されるのは、以下に説明されるように誤った予測がEX−３の間に検出されないときに通常は起こるものである、新しいカウント値CVをマルチプレクサ310を経てカウンタ303に与える段階EX−１によってである。CVが段階EX−１の間にカウンタ303を増分させるとき、元の（変化されない）カウント値のバックアップコピーはEX−２復元レジスタ305に記憶される。カウンタ出力303aはまた、実行ブロックEX−１に与えられてこれによって各クロック周期の間に用いられることに注意されたい。また、図９に示されるように、EX−２復元レジスタ305はそのバックアップ値を各マイクロ命令の終わりにEX−３復元レジスタ307に転送し、それをそのそれぞれのマイクロ命令がこれによって実行されるときに段階EX−３において用いさせる。
図３の段階３に類似した、図９の実行ブロックEX−３はマイクロ命令が誤って予測されたかどうかを判断する。誤っているならば、EX−３は適切な出力Abを与えて、図３の段階３についてこれまでに説明されたようにアボート動作を行なう。さらに、誤った予測が検出されるとき、図９のEX−３は復元カウンタ出力Rcを与え、これはマルチプレクサ310に与えられて、EX−１からのカウント値CVの代わりにカウンタ303に与えられるべきEX−３復元レジスタ307のカウント値を選択する。これは、誤って予測されているとわかったマイクロ命令によってEX−１の間に変化される前に有していた値にカウンタ303を事実上復元する。マイクロ命令が正確に予測されたことをEX−３が判断するならば、カウンタ303は復元されないが、EX−１によって与えられる新しいカウント値に従って通常の態様で設定される。
図11をさらに参照して次に説明されるのは、図10に示される例示的なマイクロ命令フローがクロック周期１−７の間に図10の推論的実行アーキテクチャを通して伝播される具体的な態様である。この例では、マイクロ命令Ｂが条件付のマイクロ命令Ａに従うように予測されているが、これは、マイクロ命令Ａがマイクロ命令Ｄによって従われているべきなので誤った予測であることが想定される。カウンタ303は最初は「１」カウント値を有することがさらに想定される。
図11は、図示されるクロック周期１−７の各々の間にどのマイクロ命令が段階EX−１、EX−２およびEX−３の各々によって処理されているかを示す。図８におけるように、図11のクロック周期は好ましくは単一のクロック時間に対応し、機械状態を表わす記憶装置は各クロック周期の終わりに更新される。図11はまた、各クロック周期の間のカウンタ303とカウンタ復元レジスタ305および307との値を示す。各クロックの間の動作が次により詳細に検討される。
図11のクロック周期１の間、マイクロ命令Ａは図示されるように段階EX−１によって動作される。また、カウンタ303は「１」の想定される初期のカウント値を有するとわかる。クロック周期１の間に適切ではない活動は「？」によって示される。
図11のクロック周期２の間、マイクロ命令Ａは段階EX−２に伝搬しており、予測される次のマイクロ命令Ｂが段階EX−１にある。また、クロック周期２の間、カウンタ303は、クロック周期１の間にマイクロ命令Ａで動作された段階EX−１から「２」の増分されたCV値を受けた結果として「２」のカウント値を有する。また、EX−１カウンタ復元レジスタ305は、カウンタ303の元の「１」の値がバックアップコピーを与えるためにクロック周期１の間にそこに記憶された結果としてクロック周期２の間に「１」の値を有する。
図11のクロック周期３に示されるように、マイクロ命令C1は状態EX−１にあり、マイクロ命令Ｂは状態EX−２にあり、マイクロ命令Ａは状態EX−３にある。（マイクロ命令Ａのように）マイクロ命令Ｂの間にEX−１によって与えられるCV値がカウンタ303をEX−１の間に増分させることが想定されるので、カウンタ303はクロック周期３の間「３」のカウント値を有し、EX−２復元レジスタ305はカウンタ303の前の「２」のカウント値に対応する「２」の値を有する。また、EX−２カウンタ307は、カウンタ復元レジスタ303の前の「１」のカウントが図11において示されるようにクロック周期２の間にそこに転送された結果としてクロック周期３の間に「１」の値を有する。
マイクロ命令Ａがクロック周期３の間に段階EX−３にあるので、マイクロ命令Ａからマイクロ命令Ｂに予測される分岐がテストされる。これまでに述べられたように、示される例では、マイクロ命令Ｂが不正確に予測され、かつマイクロ命令Ｄがマイクロ命令Ａに従うべきであったことを段階EX−３が判断すると想定される。
マイクロ命令Ｂが誤って予測されたとクロック周期３の間に判断する結果として、クロック周期４の間、（たとえば図３の段階３に関連して説明されたように）正確なマイクロ命令Ｄが段階EX−１に与えられ、他の段階EX−２および段階EX−３ならびにEX−２復元レジスタ305およびEX−３復元レジスタ307が「Ｘ」によって示されるように無効にされる。クロック周期４の間、クロック周期３の間のEX−３からの復元出力がカウンタ303に適応するためにEX−３カウンタ復元レジスタ307の元の「１」のカウント値をマルチプレクサ310に選択させる結果として復元が起こる、カウンタ303がその元の「１」の値（すなわち、それがクロック周期１におけるマイクロ命令Ｂの実行の前に有していた値）に復元されるであろうことに注意されたい。
図11に示されるように、図11の次に従うクロック５−７の間、補正されたマイクロ命令のフローＤ、Ｅ、Ｆなどにおける動作が図11に示されるように進み、カウンタ303、EX−２復元レジスタ305、およびEX−３復元レジスタ307はこれまでに説明されたようにカウンタ303のためのバックアップコピーを与える。クロック１−７について結果として生じる完了されたマイクロ命令フローは、図11の段階EX−３ラインによって示されるようにＡ、Ｄ、Ｅである。
この発明はこの明細書に説明されるその好ましい実施例に限定されないことを理解されたい。なぜなら、構成の配置、用途および動作における多くの変化がこの発明の範疇内で可能だからである。
したがって、この発明は、添付の請求の範囲によって規定されるようなこの発明の範疇内に含まれるあらゆる修正、変化および適合を含むと見なされるべきである。
【図１】
0003564517.tif 000002
【図２】
0003564517.tif 000003
【図４】
0003564517.tif 000004
【図７】
0003564517.tif 000005
【図３】
0003564517.tif 000006
【図５】
0003564517.tif 000007
【図６】
0003564517.tif 000008
【図１０】
0003564517.tif 000009
【図１１】
0003564517.tif 000010
【図８】
0003564517.tif 000011
【図９】
0003564517.tif 000012