(57)【特許請求の範囲】
【請求項１】
マイクロプロセッサ命令を実行する方法であって、
受信された命令のセットを命令グループに編成し、基本ブロック・キャッシュのエントリに前記命令グループの命令を保管するステップと、
前記命令グループを実行のためにディスパッチし、前記ディスパッチされた命令グループに対応する完了テーブル内のエントリをアロケーションするステップと、
前記命令グループの実行中に、前記命令グループの実行よってストア・フォワード例外を発生させた否かを示す命令履歴情報を記録するステップと、
次の命令グループの実行の前に順次実行モードに入ることによって、前記命令履歴情報に応答して前記命令の実行を変更するステップとを含み、
前記編成するステップは、前記命令グループはせいぜい１分岐命令を含み、前記分岐命令は前記命令グループ内の最後の命令を含み、
前記ディスパッチしアロケーションするステップは、前記完了テーブル内の各エントリは前記基本ブロック・キャッシュ内のエントリに対応し、
前記ストア・フォワード例外は、メモリ参照が共通でありプログラム順序ではストア命令に続くべきロード命令が前記ストア命令より前に実行されることを特徴とする
方法。
【請求項２】
前記基本キャッシュ・ブロックから命令グループを実行のために発行するステップを含む、請求項１記載の方法。
【請求項３】
受信された命令のセットを前記命令グループに編成する前に、前記受信された命令の各々を第１の命令フォーマットから第２の命令フォーマットへ変換し、前記第２の命令フォーマットが前記第１の命令フォーマットより命令あたり多くのビット数を含むことを特徴とする、請求項１記載の方法。
【請求項４】
ストレージ機構と、
命令キャッシュから命令のセットを受信するよう構成され、該命令セットをストレージ機構に編成するよう調整された、クラッキング・ユニットと、
前記クラッキング・ユニットからの命令グループを格納するのに適し、基本キャッシュ・ブロック・エントリに対応した命令履歴フィールドを含み、前記命令グループの先行する実行がストア・フォワード例外を発生させた否かを命令履歴情報により示される、基本キャッシュ・ブロックとを備え、
前記クラッキング・ユニットは、前記命令グループはせいぜい１分岐命令を含み、前記分岐命令は前記命令グループ内の最後の命令を含み、基本ブロック・キャッシュのエントリ内の前記命令グループに前記最後の命令を保管し、
前記基本キャッシュ・ブロックは、後続の命令グループの実行の前に順次実行モードに入ることによって前記命令履歴情報に応答して前記命令の実行を変更するように構成され、
前記ストア・フォワード例外は、メモリ参照が共通でありプログラム順序ではストア命令に続くべきロード命令が前記ストア命令より前に実行されることを特徴とする、
マイクロプロセッサ。
【請求項５】
更に実行中の命令をトラッキングするための完了テーブルを含み、前記完了テーブルは命令グループ・のセットして編成され、前記完了テーブルのエントリの各々は前記基本ブロック・キャッシュの命令に対応することを特徴とする請求項４記載のマイクロプロセッサ。
【請求項６】
前記命令グループの実行が完了したとき、前記命令履歴フィールドに情報を格納するよう構成された完了テーブル制御ロジックを更に含む、請求項５記載のプロセッサ。
【請求項７】
前記クラッキング・ユニットは、前記命令セットのフォーマットを第１命令フォーマットから第２命令フォーマットに変更し、前記第２の命令フォーマットが前記第１の命令フォーマットより命令あたり多くのビット数を使用することを特徴とする、請求項４記載のマイクロプロセッサ。
【請求項８】
少なくとも１つのプロセッサ、メモリ、入力手段、及びディスプレイ手段を含むデータ処理システムであって、前記プロセッサは、
ストレージ機構と、
命令キャッシュから命令のセットを受信するよう構成され、該命令セットをストレージ機構に編成するよう調整された、クラッキング・ユニットと、
前記クラッキング・ユニットからの命令グループを格納するのに適し、基本キャッシュ・ブロック・エントリに対応した命令履歴フィールドを含み、前記命令グループの先行する実行がストア・フォワード例外を発生させた否かを命令履歴情報により示される、基本キャッシュ・ブロックとを含み、
前記クラッキング・ユニットは、前記命令グループはせいぜい１分岐命令を含み、前記分岐命令は前記命令グループ内の最後の命令を含み、基本ブロック・キャッシュのエントリ内の前記命令グループに前記最後の命令を保管し、
前記基本キャッシュ・ブロックは、後続の命令グループの実行の前に順次実行モードに入ることによって前記命令履歴情報に応答して前記命令の実行を変更するように構成され、
前記ストア・フォワード例外は、メモリ参照が共通でありプログラム順序ではストア命令に続くべきロード命令が前記ストア命令より前に実行されることを特徴とする、
データ処理システム。
【請求項９】
前記受信命令の各々は第１の命令フォーマットによってフォーマットされ、前記クラッキング・ユニットは前記受信命令を第１の命令フォーマットから第２の命令フォーマットに変換し、前記命令グループ内の各命令は前記第２のフォーマットに従ってフォーマットされ、前記第２の命令フォーマットは第１の命令フォーマットより命令当たり多くのビットを有することを特徴とする請求項８記載のデータ処理システム。
【請求項１０】
前記命令グループの実行が完了したとき、前記命令履歴フィールドに情報を格納するよう構成された完了テーブル制御ロジックを更に含む、請求項８記載のデータ処理システム。
【請求項１１】
前記クラッキング・ユニットは、前記命令セットのフォーマットを第１命令フォーマットから第２命令フォーマットに変更し、前記第２の命令フォーマットが前記第１の命令フォーマットより命令あたり多くのビット数を使用することを特徴とする、請求項８記載のデータ処理システム。
【請求項１２】
前記第２の命令フォーマットは前記第１の命令フォーマットに含まれるオペランドランドを明示参照を含む請求項３記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にマイクロプロセッサ・アーキテクチャの分野に関し、特に命令グループ・アーキテクチャ、対応するキャッシュ機構、及びその有用な拡張機能を利用したマイクロプロセッサに関する。
【０００２】
【従来の技術】
マイクロプロセッサ技術によりギガヘルツクラスの性能が実現される中、マイクロプロセッサの設計者は、特定の命令セット・アーキテクチャ（ＩＳＡ）で動作するよう設計され、既に実用に供されている多数のソフトウェアとの互換性を維持し、その一方で最新技術を利用するという大きな課題に直面している。設計者はこの問題を解決するため、既存ＩＳＡに従ってフォーマットされている命令を受信し、命令フォーマットをギガヘルツの実行パイプラインでの動作に適した内部ＩＳＡに変換するよう調整された"階層化アーキテクチャ"・マイクロプロセッサを実装している。図４を参照する。階層化アーキテクチャ・マイクロプロセッサ４０１の部分が示してある。この設計で、マイクロプロセッサ４０１の命令キャッシュ４１０は、フェッチ・ユニット４０２によりメイン・メモリからフェッチされた命令を受信し格納する。命令キャッシュ４１０に格納された命令は、第１ＩＳＡ（つまりプロセッサ４０１により実行されているプログラムが書込まれたＩＳＡ）に従ってフォーマットされる。命令は次に、命令キャッシュ４１０から検索され、ＩＳＡコンバータ４１２により第２ＩＳＡに変換される。第１ＩＳＡから第２ＩＳＡへの命令の変換には複数のサイクルが必要なので、変換プロセスは通常、パイプライン処理され、従って、どの時点でも第１ＩＳＡから第２ＩＳＡへ複数の命令を変換しなければならないことがある。変換された命令は次に、実行のためプロセッサ４０１の実行パイプライン４２２に転送される。フェッチ・ユニット４０２は、分岐判断の結果を予測することによって分岐命令に続いて実行される命令のアドレスを決定しようとする分岐予測ロジック４０６を含む。命令は次に、分岐予測をもとに投機的に発行され実行される。ただし分岐の予測が外れたとき、プロセッサ４０１の命令キャッシュ４１０と最終ステージ４３２の間に保留された命令をフラッシュする必要がある。システム内の予測ミスした分岐結果がフラッシュされたときに生じる性能のペナルティは、パイプラインの長さの関数である。フラッシュする必要のあるパイプライン・ステージが多ければ多いほど、分岐予測の外れた場合の性能のペナルティが大きくなる。階層化アーキテクチャではプロセッサ・パイプラインが長くなり、所定の時間に"フライト中"の命令数が増える可能性があるため、階層化アーキテクチャに伴う分岐予測外れのペナルティは、プロセッサの性能を制限する要因になる。
【０００３】
従って、分岐予測外れの性能ペナルティに対応した階層化アーキテクチャ・マイクロプロセッサを実装することが強く求められる。また、実装された解決策が、コードの断片の反復実行により発生する例外条件の反復発生を、少なくとも部分的には解決することも求められる。更にまた、実装された解決策が、次に実行される命令を発行キューで検索する機能を犠牲にすることなく、事実上、大きい発行キューを使用可能にすることも求められる。
【０００４】
【発明が解決しようとする課題】
本発明は、命令グループ及び命令グループ・フォーマットに一致するキャッシュ機構を利用したマイクロプロセッサを提供することを目的とする。
【０００５】
本発明は更に、プロセッサ、データ処理システム、及び性能を改良するため基本キャッシュ・ブロックとともに命令履歴情報を利用する方法を提供することを目的とする。
【０００６】
本発明は更に、プロセッサ、データ処理システム、及び１次発行キューと２次発行キューを利用した方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明の実施例は、マイクロプロセッサ及びこれに関連する方法とデータの処理システムを想定している。マイクロプロセッサは、第１命令セットを受信するよう構成された命令クラッキング・ユニット（cracking unit）を含む。クラッキング・ユニットは、命令のセットを命令グループとして編成する。グループの各命令は命令グループ・タグを共有する。プロセッサはまた、命令グループ・フォーマットで編成され、クラッキング・ユニットにより生成された命令グループをキャッシュするよう構成された基本キャッシュ・ブロック機構を含む。プロセッサの実行ユニットは、命令グループの命令を実行するのに適している。実施例で、命令グループの命令の実行中に例外が発生し、これによりフラッシュが生じたとき、フラッシュされるのは、基本キャッシュ・ブロックからディスパッチされた命令のみである。プロセッサは、基本キャッシュ・ブロックに届いた命令のみフラッシュすることにより、クラッキング・ユニット・パイプラインに保留されている命令がフラッシュされないようにする。フラッシュされる命令が少なくなるので、例外発生時の性能ペナルティも減少する。他の実施例で、受信された命令は、第１命令フォーマットに従ってフォーマットされ、第２命令セットは第２命令フォーマットに従ってフォーマットされる。第２命令フォーマットは第１命令フォーマットより幅が広い。基本キャッシュ・ブロックは、基本キャッシュ・ブロックの対応するエントリの各命令グループを格納しやすいように構成される。実施例によっては、基本キャッシュ・ブロックの各エントリは、対応する基本キャッシュ・ブロック・エントリを示すエントリ・フィールドと、次に実行される命令グループを予測するポインタを含む。プロセッサは、好適には、予測ミスした分岐に対応したキャッシュ・エントリのポインタを更新するよう構成される。
【０００８】
プロセッサは、命令セットを受信し、命令セットを命令グループに編成するのに適している。命令グループは実行を目的にディスパッチされる。命令グループの実行後、命令グループに関連する例外イベントを示す命令履歴情報が記録される。その後、命令の実行が命令履歴情報に応答して変更され、後の命令グループ実行時の例外イベントの発生が防止される。プロセッサは、命令キャッシュ等のステージ機構、Ｌ２キャッシュまたはシステム・メモリ、クラッキング・ユニット、及び基本キャッシュ・ブロックを含む。クラッキング・ユニットは、ステージ機構から命令セットを受信するよう構成される。クラッキング・ユニットは、命令セットを命令グループに編成するよう調整される。クラッキング・ユニットは、命令セットのフォーマットを第１命令フォーマットから第２命令フォーマットに変更することができる。基本キャッシュ・ブロックのアーキテクチャは命令グループを格納するのに適している。基本キャッシュ・ブロックは、基本キャッシュ・ブロックの各エントリに対応した命令履歴フィールドを含む。命令履歴情報は、命令グループに関連した例外イベントを示す。好適実施例の場合、基本キャッシュ・ブロックの各エントリは、クラッキング・ユニットにより生成された１つの命令グループに対応する。プロセッサには更に、命令グループの実行が完了したときに命令履歴フィールドに情報を格納するよう構成された完了テーブル制御ロジックを追加できる。命令履歴情報は、命令グループの命令が他の命令と依存関係を持つかどうか、または命令グループの実行が前にストア・フォワード例外になったかどうかを示すことができる。この実施例で、プロセッサは、命令グループの実行が前にストア・フォワード例外になったことの検出に応答する順次モード（in-order-mode）で動作するよう構成される。
【０００９】
プロセッサは、命令を発行ユニットにディスパッチするのに適している。発行ユニットは、１次発行キューと２次発行キューを含む。命令は、実行のため現在発行が許可されている場合は１次発行キューに格納される。実行のため現在発行が許可されていない場合は２次発行キューに格納される。プロセッサは、１次発行キューの複数の命令のうち次に発行する命令を決定する。命令は、別の命令からの結果に依存する場合は、１次発行キューから２次発行キューに移動される。実施例で、命令は、実行のため発行された後、１次発行キューから２次発行キューに移動することができる。この実施例では、命令は、指定時間の間２次発行キューに維持することができる。その後、命令が拒否されていない場合は、命令を含む２次発行キュー・エントリの割当てが解除される。マイクロプロセッサは、命令キャッシュ、命令キャッシュから命令を受信するよう構成されたディスパッチ・ユニット、及びディスパッチ・ユニットから命令を受信するよう構成された発行ユニットを含む。発行ユニットは、ディスパッチされ現在実行を許可されている命令を１次発行キューに割当て、ディスパッチされ現在実行を許可されていない命令を２次発行キューに割当てる。
【００１０】
【発明の実施の形態】
図１を参照する。本発明に従ったデータ処理システム１００の実施例が示してある。システム１００は、中央処理装置（プロセッサ）１０１ａ、１０１ｂ、１０１ｃ等（ここではプロセッサ１０１と総称する）を含む。実施例で、各プロセッサ１０１は、ＲＩＳＣ（縮小命令セット・コンピュータ）マイクロプロセッサ等である。ＲＩＳＣプロセッサ一般については、C．MayらによるPower PC Architecture：A Specification for a New Family of RISC Processors（Morgan Kaufmann、1994 2d edition）を参照されたい。プロセッサ１０１は、システム・バス１１３を通してシステム・メモリ２５０及び他の様々なコンポーネントに接続される。ＲＯＭ（読出し専用メモリ）１０２は、システム・バス１１３に接続され、ＢＩＯＳ（基本入出力システム）等を含み、ＢＩＯＳはシステム１００の基本機能を制御する。図１は、システム・バス１１３に接続されたＩ／Ｏアダプタ１０７とネットワーク・アダプタ１０６も含む。Ｉ／Ｏアダプタ１０７は、ハード・ディスク１０３、テープ・ストレージ・デバイス１０５等の大容量記憶装置をシステム・バス１１３にリンクする。ネットワーク・アダプタ１０６は、バス１１３を外部ネットワークと相互接続し、データ処理システム１００が他のシステムと通信できるようにする。ディスプレイ・モニタ１３６は、ディスプレイ・アダプタ１１２によりシステム・バス１１３に接続され、アダプタ１１２は、グラフィックスの多いアプリケーション及びビデオ・コントローラの性能を改良するためグラフィックス・アダプタ等を含む。実施例によっては、アダプタ１０７、１０６、１１２は、中間バス・ブリッジ（図示せず）を介してシステム・バス１１３に接続されるＩ／Ｏバスに接続することができる。ハード・ディスク・コントローラ、ネットワーク・アダプタ、グラフィックス・アダプタ等の周辺装置を接続するのに適したＩ／Ｏバスは、PCI SIG（分科会）（オレゴン州ヒルズボロ）のＰＣＩローカル・バス仕様２．２版に従って指定されているＰＣＩ（Peripheral Components Interface）バス等である。他の入出力デバイスは、ユーザ・インタフェース・アダプタ１０８を通してシステム・バス１１３に接続されているように示している。キーボード１０９、マウス１１０、スピーカ１１１は全てユーザ・インタフェース・アダプタ１０８を通してバス１１３にリンクされ、アダプタ１０８は、例えば複数のデバイス・アダプタを１つの回路に統合するSuperI/Oチップ等である。このようなチップの情報については、National Semiconductor Corporation、www．national．comのPC87338/PC97338 ACPI 1．0及びPC98/99 Compliant SuperI/Oデータ・シート（１９９８年１１月）を参照されたい。図１に示すように、システム１００は、プロセッサ１０１の形の処理手段、システム・メモリ２５０と大容量記憶装置１０４を含むステージ手段、キーボード１０９、マウス１１０等の入力手段、及びスピーカ１１１、ディスプレイ１３６を含む出力手段を含む。システム・メモリ２５０と大容量記憶装置１０４の一部の実施例は、集合的にＩＢＭ  ＡＩＸ等のオペレーティング・システムまたは他の適切なオペレーティング・システムを格納し、図１に示した様々なコンポーネントの機能を調整する。ＡＩＸオペレーティング・システムの詳細については、ＩＢＭのAIX Version 4．3 Technical Reference：Base Operating System and Extensions、Volumes 1 and 2（SC23-4159、SC23-4160）、AIX Version 4．3 System User's Guide：Communications and Networks（SC23-4122）、及びAIX Version 4．3 System User's Guide：Operating System and Devices（SC23-4121）を参照されたい。
【００１１】
図２を参照する。本発明の実施例に従ったプロセッサ１０１を簡素化した図が示してある。プロセッサ１０１は、次にフェッチする命令のアドレスを生成するのに適した命令フェッチ・ユニット２０２を含む。フェッチ・ユニット２０２により生成された命令アドレスは命令キャッシュ２１０に与えられる。フェッチ・ユニット２０２は、名前からわかるように、プログラムの実行フローの決定結果を所定の情報をもとに予測するよう調整された分岐予測ロジック等を含む。分岐決定を正しく予測できるかどうかは、プロセッサ１０１が命令を投機的且つ順不同に実行することによって性能を改良するために重要な要因である。フェッチ・ユニット２０２により生成された命令アドレスは命令キャッシュ２１０に与えられる。キャッシュ２１０は高速ステージ機構にシステム・メモリの内容の一部を格納する。命令キャッシュ２１０に格納された命令は、好適には第１ＩＳＡに従ってフォーマットされる。第１ＩＳＡは通常、例えばPowerPC、x86互換命令セット等のレガシーＩＳＡである。PowerPC命令セットについての詳細は、モトローラ社のPowerPC 620 RISC Microprocessor User's Manual（MPC620UM/AD）を参照されたい。フェッチ・ユニット２０２により生成された命令アドレスが、命令キャッシュ２１０で現在複製されているシステム・メモリ位置に対応する場合、命令キャッシュ２１０は、対応する命令をクラッキング・ユニット２１２に転送する。フェッチ・ユニット２０２により生成された命令アドレスに対応した命令が、命令キャッシュ２１０に現在存在しない（つまりフェッチ・ユニット２０２により与えられた命令アドレスが命令キャッシュ２１０をミスしている）場合、命令は、クラッキング・ユニット２１２に転送する前に、Ｌ２キャッシュ（図示せず）またはシステム・メモリからフェッチする必要がある。
【００１２】
クラッキング・ユニット２１２は、入力される命令ストリームを変更し、所定の実行パイプラインで高動作周波数（１ＧＨｚを超える動作周波数）にて実行するのに最適な命令セットを生成するよう調整される。例えば、クラッキング・ユニット２１２は、実施例によっては、PowerPCマイクロプロセッサによりサポートされる命令等、３２ビット幅のＩＳＡで命令を受信し、ギガヘルツ・レンジ以上で動作する高速実行ユニットでの実行を促進する第２の、好適にはより幅の広いＩＳＡに変換する。クラッキング・ユニット２１２により生成される命令の、幅広いフォーマットは、例えばクラッキング・ユニット２１２により受信され第１フォーマットに従ってフォーマットされた命令にて単に暗示されているだけか、または参照されているだけの情報（オペランド値等）を格納する明示的フィールド等を含めることができる。例えば、実施例によっては、クラッキング・ユニットによって生成された命令のＩＳＡは６４ビット以上のビット幅である。
【００１３】
他の実施例で、クラッキング・ユニット２１２は、命令を第１フォーマットから第２の、好適にはより幅の広いフォーマットに変換する他、フェッチされた命令セットを命令グループ３０２に編成するよう設計される。図３に命令グループの例が示してある。命令グループ３０２はそれぞれ、命令スロット３０４ａ、３０４ｂ等（ここでは命令スロット３０４と総称する）のセットを含む。命令セットを命令グループに編成することで、特にフライト中の多数の命令に対して名前変更レジスタのマッピング・テーブルや完了テーブルを維持するため必要なロジックが簡素化され、高速実行が促進される。図３は、クラッキング・ユニット２１２により実行可能な命令グループの３つの例を示す。
【００１４】
例１で、３０１と示した命令セットは、クラッキング・ユニット２１２により１つの命令グループ３０２に変換される。本発明の図の実施例では、各命令グループ３０２が、３０４ａ、３０４ｂ、３０４ｃ、３０４ｄ、及び３０４ｅと示した５つのスロットを含む。各スロット３０４は１つの命令を含むことができる。この実施例で、各命令グループは最大５つの命令を含むことができる。実施例によっては、クラッキング・ユニット２１２により受信される命令セット３０１の命令は、前記のように第１ＩＳＡに従ってフォーマットされ、グループ３０２に格納された命令は、より幅の広い第２フォーマットに従ってフォーマットされる。命令グループを使用することで、個別にタグを付けて追跡する必要のある命令数が減少し、名前変更リカバリ・テーブルや完了テーブルのロジックが簡素化される。従って、命令グループを使用することは、順不同プロセッサにて保留命令を追跡するプロセスを簡素化するよう努めながら、各命令に関する情報をいくらか犠牲にすることを想定したものである。
【００１５】
図３の例２は、本発明の実施例に従ってクラッキング・ユニット２１２により実行される命令グループの第２例を示す。この例は、実行を高速化するため、複雑な命令を単純な命令のグループに分けるクラッキング・ユニット２１２の機能を示している。図示の例で、２つのＬＤＵ（load-with-update）命令のシーケンスが、それぞれスロット３０４ａ及び３０４ｃにあるロード命令のペアと、それぞれスロット３０４ｂ及び３０４ｄにあるＡＤＤ命令のペアを含む命令グループに分けられる。この例では、グループ３０２に分岐命令は含まれないので、命令グループ３０２の最後のスロット３０４ｅにも命令が含まれない。PowerPCのＬＤＵ命令は、他の命令セットの類似の命令と同様、命令が複数のＧＰＲ（汎用レジスタ）の内容に影響を与えるという意味で複雑な命令である。具体的には、ＬＤＵ命令は、第１ＧＰＲの内容に影響を与えるロード命令と、第２ＧＰＲの内容に影響を与えるＡＤＤ命令に分けることができる。従って、図３の例２の命令グループ３０２で、２つ以上の命令スロット３０４の命令は、クラッキング・ユニット２１２により受信された１つの命令に対応する。
【００１６】
例３で、クラッキング・ユニット２１２に入力される１つの命令が、複数のグループ３０２を占める命令セットに分けられる。具体的には、図３は、ＬＭ（load multiple）命令を示す。ＬＭ命令は（PowerPC命令セットによると）、メモリ内の連続した位置の内容を連続番号の付いたＧＰＲにロードする。図の例で、連続した６つのメモリ位置のＬＭは、６つのロード命令に分けられる。プロセッサ１０１の図の実施例に従った各グループ３０２は、多くても５つの命令しか含まず、５番目のスロット３０４ｅは分岐命令に予約されているので、６つのレジスタのＬＭはそれぞれ２つのグループ３０２ａ及び３０２ｂに分けられる。ロード命令のうち４つは第１グループ３０２ａに格納され、残り２つのロード命令は第２グループ３０２ｂに格納される。従って例３で、１つの命令が複数の命令グループ３０２にまたがる命令セットに分けられる。
【００１７】
図２を参照する。クラッキング・ユニット２１２の好適実施例により生成された命令グループ３０２は、基本キャッシュ・ブロック２１３に転送され、格納されて実行が保留される。図５を参照する。基本キャッシュ・ブロック２１３の実施例が示してある。図の実施例で、基本キャッシュ・ブロック２１３はエントリ５０２ａ乃至５０２ｎのセット（ここでは基本キャッシュ・ブロック・エントリ５０２と総称する）を含む。実施例によっては、基本キャッシュ・ブロック２１３の各エントリ５０２が１つの命令グループ３０２を格納する。また各エントリ５０２は、エントリＩＤ５０４、ポインタ５０６、及び命令アドレス（ＩＡ）・フィールド５０７等を含む。各エントリ５０２の命令アドレス・フィールド５０７は完了テーブル２１８のＩＡフィールドと同類である。他の実施例で、基本キャッシュ・ブロック５０４の各エントリは、完了テーブル２１８のエントリに対応し、命令アドレス・フィールド５０７は、対応する命令グループ３０２の第１命令の命令アドレスを示す。他の実施例で、ポインタ５０６は、分岐予測アルゴリズム、分岐履歴テーブル、または他の分岐予測メカニズムをもとに次に実行される命令グループ３０２のエントリＩＤを示す。前記のように、クラッキング・ユニット２１２で命令グループ３０２を形成する好適な実施例は、分岐命令を各グループ３０２の最後のスロットに割当てる。また、クラッキング・ユニット２１２の好適実施例は、グループ３０２の分岐命令数が１（または１以下）である命令グループ３０２を生成する。この構成の各命令グループ３０２は、図６に示す分岐ツリー６００のレッグ（足）を表すとみなすことができる。その場合、命令グループ３０２は、対応する命令グループ・エントリ５０４の値により表される。例えば第１命令グループ３０２ａは、そのエントリ番号（１）等により示される。１例として、プロセッサ１０１の分岐予測メカニズムが、レッグ１に続いてレッグ２（第２グループ３０２ｂに対応）が実行されると予測し、レッグ２に続いてレッグ３が実行されると仮定する。基本キャッシュ・ブロック２１３は、本発明の実施例によっては、これらの分岐予測を反映するため、ポインタ５０６をセットして次に実行されるグループ３０２を示す。基本キャッシュ・ブロック２１３の各エントリ５０２のポインタ５０６は、次にディスパッチされるグループ３０２を決定するために利用することができる。
【００１８】
基本キャッシュ・ブロック２１３は、フェッチ・ユニット２０２が命令キャッシュ２１０と連携するのと同様、ブロック・フェッチ・ユニット２１５と連携する。具体的には、ブロック・フェッチ・ユニット２１５は、基本キャッシュ・ブロック２１３に与えられる命令アドレスを生成する役割を持つ。ブロック・フェッチ・ユニット２１５により与えられる命令アドレスは、基本キャッシュ・ブロック２１３の命令アドレス・フィールド５０７にあるアドレスと比較される。ブロック・フェッチ・ユニット２１３により与えられた命令アドレスが基本キャッシュ・ブロック２１３でヒットする場合、対応する命令グループが発行キュー２２０に転送される。ブロック・フェッチ・ユニット２１５により与えられたアドレスが基本キャッシュ・ブロック２１３でミスした場合、命令アドレスはフェッチ・ユニット２０２に送り返され、対応する命令が命令キャッシュ２１０から検索される。基本キャッシュ・ブロック２１３は、領域節約に適した実施例では（ダイ・サイズ）、命令キャッシュ２１０をなくすことができる。この実施例で、命令はＬ２キャッシュ、システム・メモリ等の適切なステージ機構から検索され、クラッキング・ユニット２１２に直接与えられる。ブロック・フェッチ・ユニット２１３により生成された命令アドレスが、基本キャッシュ・ブロック２１３でミスした場合、対応する命令が命令キャッシュ２１０ではなくＬ２キャッシュまたはシステム・メモリから検索される。
【００１９】
プロセッサ１０１の図の実施例は更に、ディスパッチ・ユニット２１４を示す。ディスパッチ・ユニット２１４は、各命令グループの命令を対応する発行キュー２２０に転送する前に、必要な全てのリソースが利用できるようにする。また、ディスパッチ・ユニット２１４は、ディスパッチ／完了制御ロジック２１６と通信し、命令が発行された順序とこれらの命令の完了状態を追跡し、順不同実行を促進する。前記のように、クラッキング・ユニット２１２が入力された命令を命令グループに編成するプロセッサ１０１の実施例で、各命令グループ３０２には、完了制御ロジック２１６により、発行済み命令グループの順序を知らせるグループ・タグ（ＧＴＡＧ）が割当てられる。１例として、ディスパッチ・ユニット２１４は、単調に増加する値を連続した命令グループに割当てることができる。この構成で、ＧＴＡＧ値が小さい命令グループは、ＧＴＡＧ値の大きい命令グループよりも先に発行されている（つまりその命令グループより若い）と言われる。プロセッサ１０１の図の実施例は、ディスパッチ・ユニット２１４を独立した機能ブロックとして示しているが、基本キャッシュ・ブロック２１３の命令グループ編成は、ディスパッチ・ユニット２１４の機能を組み込むのに役立つ。従って、実施例によっては、ディスパッチ・ユニット２１４が基本キャッシュ・ブロック２１３内に組み込まれ、基本キャッシュ・ブロック２１３は発行キュー２２０に直接接続される。
【００２０】
ディスパッチ／完了制御ロジック２１６に関連して、本発明の実施例にて、発行済み命令グループの状態を追跡するため完了テーブル２１８が使用される。図７を参照する。完了テーブル２１８の実施例が示してある。図の実施例で、完了テーブル２１８はエントリ７０２ａ乃至７０２ｎのセット（ここでは完了テーブル・エントリ７０２と総称する）を含む。この実施例で完了テーブル２１８の各エントリ７０２は、命令アドレス（ＩＡ）・フィールド７０４と状態ビット・フィールド７０６を含む。この実施例で、各命令グループ３０２のＧＴＡＧ値は、命令グループ３０２に対応した完了情報が格納された完了テーブル２１８のエントリ７０２を識別する。従って、完了テーブル２１８のエントリ１に格納された命令グループ３０２は、ＧＴＡＧ値が１等となる。この実施例で完了テーブル２１８は更に、ＧＴＡＧ値の小さい命令グループが、ＧＴＡＧ値の大きい命令グループより実際に若いことを示すラップ・アラウンド・ビットを含むことができる。他の実施例で、命令アドレス・フィールド７０４は、対応する命令グループ３０２の第１スロット３０４ａに命令のアドレスを含む。状態フィールド７０６は、例えば完了テーブル２１８の対応するエントリ７０２が利用できるかどうか、前に保留されている命令グループにエントリが割当てられているかどうかを示す状態ビットを含むことができる。
【００２１】
図２に示したプロセッサ１０１の実施例で、命令はディスパッチ・ユニット２１４から発行キュー２２０に発行され、対応する実行パイプ２２２での実行を待機する。プロセッサ１０１には、様々な実行パイプを追加できる。パイプはそれぞれ、プロセッサの命令セットの一部を実行するよう設計される。実施例で、実行パイプ２２２は、分岐ユニット・パイプライン２２４、ロード／ストア・パイプライン２２６、固定小数点演算ユニット２２８、及び浮動小数点ユニット２３０等を含む。各実行パイプ２２２は、２つ以上のパイプライン・ステージで構成することができる。発行キュー２２０に格納された命令は、様々な発行優先順位アルゴリズムを使用して実行パイプ２２２に発行することができる。実施例によっては、例えば、発行キュー２２０の保留された最も古い命令が、次に実行パイプ２２２に発行される命令になる。この実施例で、ディスパッチ・ユニット２１４により割当てられたＧＴＡＧ値は、発行キュー２２０の保留されている命令の相対経過時間を決定するため使用される。発行前に、命令の宛先レジスタ・オペランドが、使用できる名前変更ＧＰＲに割当てられる。最終的に命令が発行キュー１２０から対応する実行パイプに転送されるとき、実行パイプは、命令コードにより示される動作を実行し、命令がパイプラインの最終ステージに達したとき（１３２）、命令の結果を命令の名前変更ＧＰＲに書込む。名前変更ＧＰＲとこれに対応する設計済みレジスタ間にマッピングが維持される。命令グループの全命令（及び若い命令グループの全命令）が、例外を発生することなく終了したとき、完了テーブル２１８の完了ポインタが次の命令グループに増分される。完了ポインタが新しい命令グループに増分されたとき、古い命令グループの命令に関連する名前変更レジスタが解除され、これにより古い命令グループの命令の結果がコミットされる。終了しまだコミットされていない命令よりも古い命令が例外を発生した場合、例外を発生した命令及び全ての若い命令がフラッシュされ、名前変更リカバリ・ルーチンが呼び出され、ＧＰＲマッピングが既知の最後の有効状態に戻される。
【００２２】
予測された分岐が取られない場合（分岐予測外れ）、実行パイプ２２２で保留されている命令と発行キュー２２０がフラッシュされる。また予測ミスした分岐に関連する基本キャッシュ・ブロック・エントリ５０２のポインタ５０６が更新され、採用された最も新しい分岐が反映される。この更新プロセスの例を、プログラム実行によりレッグ１（命令グループ３０２ａ）からレッグ４（命令グループ３０２ｄ）への分岐が発生する場合について、図５に示す。エントリ５０２ａのポインタ５０６は先に、基本キャッシュ・ブロック２１３の番号２のエントリにある命令グループ（つまりグループ３０２ｂ）への分岐を予測したので、命令グループ３０２ａからグループ３０２ｄへの実際の分岐は予測が外れている。予測が外れた分岐は削除され、ブロック・フェッチ・ユニット２１５に送り返され、基本キャッシュ・ブロック２１３と各パイプライン２２２の最終ステージ２３２間に保留されている命令がフラッシュされ、基本キャッシュ・ブロック２１３のエントリ４の命令グループ３０２ｄから実行が再開される。また、基本キャッシュ・ブロック・エントリ５０２ａのポインタ５０６は、その前の値２から新しい値４に変更され、最も新しい分岐情報が反映される。本発明は、基本キャッシュ・ブロック２１３とブロック・フェッチ・ユニット２１５を実行パイプライン２２２に近接して組み込むことで、分岐予測が外れた場合の性能ペナルティを少なくするものである。具体的には、命令クラッキング・ユニット２１２の"下流"側に基本キャッシュ・ブロック２１３を実装することによって、分岐予測の外れたフラッシュ・パスから、クラッキング・ユニット２１２に保留されている命令をなくし、よって、分岐予測外れの後にパージしなければならないパイプライン・ステージ数を少なくし、性能ペナルティを少なくする。また基本キャッシュ・ブロック２１３は、ディスパッチ／完了制御ロジック２１６と完了テーブル２１８の編成に一致した構造を持つキャッシュ・メカニズムを想定し、よって、介在するロジックの編成を簡素化し、前記のように、基本キャッシュ・ブロック２１３への有用な拡張機能の実装を容易にしている。
【００２３】
実施例の基本キャッシュ・ブロック２１３は更に、例外、フラッシュ、割込み等、性能を制限するイベント（ここでは例外イベントと総称する）の発生につながる可能性のあるシナリオを避けるため、同じ命令グループの後の実行の間に使用される可能性のある情報を記録することによって、プロセッサ性能を好都合に改良できるようにする命令履歴情報を含む。図８に示した基本キャッシュ・ブロック２１３の実施例で、命令履歴情報は、各エントリ５０２の命令履歴フィールド５０８に格納される。命令履歴フィールド５０８に格納される情報の種類の例として、ロード命令が最後に実行されたときストア・フォワード例外になった特定のロード命令を含む命令グループを考える。ストア・フォワード例外は、メモリ参照が共通の（プログラム順序で）ストア命令に続くロード命令が、順不同マシンでストア命令より先に実行されたときに生じる。ロード命令は、ストア命令より前に実行された場合は、レジスタから無効な値を検索するので、例外が発生する結果、命令がフラッシュされる。基本キャッシュ・ブロック２１３と完了制御ロジック２１６の構造間には並列性があるため、命令の実行と完了の方法に関してディスパッチ／完了制御ロジック２１６が取得した情報を基本キャッシュ・ブロック２１３の対応するエントリに転送するタスクが容易になる。この並列性がない場合、ディスパッチ／完了制御ロジック２１６からの完了情報は、通常、グループ命令情報をそのコンポーネント命令と関連付けるため、何らかの形の中間のハッシュ・テーブル、その他の適切なメカニズムを通して渡す必要がある。ストア・フォワードの例では、ストア・フォワード例外を検出した後、ディスパッチ／完了制御ロジック２１６が、基本キャッシュ・ブロック２１３の対応するエントリの命令履歴フィールド５０８に、ストア・フォワード例外を示すビットを書込む。後で命令グループが実行された場合、前にストア・フォワード例外が発生したことを示す命令履歴情報を、例えばプロセッサ１０１を、ストアの完了前にロードが実行されるのを防ぐ順次モードにするために使用できる。従って、本発明のこの実施例は、命令グループに関連した例外イベントを示す命令履歴情報を記録し、その後、命令グループの実行を変更することで、命令グループが後で実行されるときの例外イベントの発生を防ごうとするものである。ストア・フォワードの例に示しているが、命令履歴情報フィールド５０８は、予測メカニズムの精度に関連する情報、予測オペランド値、キャッシュ・ミス／ヒット情報等、プロセッサが例外条件の再発を回避できるような様々な命令履歴イベントに関連した情報を記録するのに適している。
【００２４】
基本キャッシュ・ブロック２１３の実行履歴フィールド５０８に記録される情報の１例が、図９に示す実施例により強調されている。この実施例では、発行キュー２２０が１次発行キュー９０２と２次発行キュー９０４に分けられる。発行キュー２２０の最適なサイズまたは深さは、拮抗する考慮事項のバランスを表す。一方では、プロセッサの機能を最大限に活用して命令を順不同に実行するため、極めて大きく深い発行キューを実装することが望ましい。命令を順不同で発行する機能は、発行キュー２２０に保留されている命令の数により制限される。発行キューが多くなると、順不同処理に適した命令も多くなる。他方、発行キューが深くなると、プロセッサのサイクル時間の制約内で次に発行する命令を決定するプロセッサの機能は減少する。言い換えると、発行キュー２２０に保留される命令が多ければ多いほど、次に発行する命令を決定するため必要な時間が長くなる。そのため、発行キュー２２０のような発行キューは、約２０以下の深さに制限されることが多い。本発明の実施例は、発行キューで次に発行可能な命令を検索するため必要なロジックをあまり大きくする必要なく、深い発行キューのメリットを実現しようとするものである。本発明は、既に発行されていて、プロセッサ１０１の実行パイプライン２２２に保留されているか、またはオペランド値を依存している他の命令の完了を待機しているため、発行キュー２２０に保留されている命令を直ちに発行することができないことが多いという事実を利用している。
【００２５】
図９を参照する。本発明の実施例に従った発行キュー２２０は、１次発行キュー９０２と２次発行キュー９０４を含む。１次発行キュー９０２は、直ちに発行可能な命令を格納する。実施例で、ディスパッチ・ユニット２１４からディスパッチされた命令は、最初、１次発行キュー９０２の使用できるエントリに格納される。後に、命令が他の命令に依存することが確認された場合、依存する命令は、依存対象である命令によって必要な情報が検索されるまで、２次発行キュー９０４に移動される。例えば、ロード命令に続く加算命令に、ロード命令の結果が必要な場合、最初に両方の命令を１次発行キュー９０２にディスパッチすることができる。加算命令がロード命令に依存することが確認されると、加算命令は１次発行キュー９０２から２次発行キュー９０４に転送される。図８に関して述べたように、命令履歴フィールド５０８を利用した実施例では、後の命令実行時に、加算命令を２次発行キュー９０４に直接格納できるように加算命令の依存性を記録することができる。２次発行キュー９０４はまた、最近発行され、プロセッサの実行パイプラインにまだ保留されている命令を格納するために使用できる。この実施例で、命令は１次発行キュー９０２から発行された後、２次発行キュー９０４に転送される。実施例によっては、命令が拒否されないことが確認されるまで、命令を２次発行キュー９０４に配置することができる。命令が拒否されていないことを確認する１つの方法は、２次発行キュー９０４の各エントリに関連付けたタイマ／カウンタ（図示せず）を実装することである。最初に命令が１次発行キュー９０２から２次発行キュー９０４に転送されたときに、カウンタ／タイマが初期化される。他の実施例で、カウンタ／タイマは、カウンタ／タイマの初期化以降に終了したクロック・サイクル数をカウントする。カウンタ／タイマが所定数のサイクルについてカウントを続け、命令が拒否されたことが検出されない場合、命令は正常に完了したとみなされ、２次発行キュー９０４のエントリが割当てを解除される。命令の依存性のため、または命令が最近１次発行キューから発行されたために、命令がディスパッチされていても現在実行可能ではない２次発行キューとともに実行するため、現在発行可能な命令に専用される１次発行キューを含む発行キューを利用することによって、次に発行する命令を決定するため必要な時間（つまりロジック・レベル数）をかなり長くすることなく、発行キューの有効サイズまたは深さが増加する。
【００２６】
本発明の開示内容を享受する当業者には明らかなように、本発明は、予測ミスした分岐に伴う待ち時間を少なくするため、グループ分けされた命令（つまり、第１フォーマットから第２フォーマットに変換された命令）を格納するのに適したキャッシュ機構を含むマイクロプロセッサの様々な実施例を想定している。図とともに詳しく説明した本発明の形式は、現在の好適な例にすぎない。特許請求の範囲は、ここに開示した好適実施例の変形例を全て包括するように広く解釈されるべきものである。
【００２７】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００２８】
（１）マイクロプロセッサ命令を実行する方法であって、
受信された命令のセットを命令グループに編成するステップと、
前記命令グループを実行のためディスパッチするステップと、
前記命令グループの実行後、前記命令に関連する例外イベントを示す命令履歴情報を記録するステップと、
前記命令履歴情報に応答して前記命令の実行を変更し、前記命令グループの後の実行中に前記例外イベントの発生を防ぐステップと、
を含む、方法。
（２）前記命令グループを基本キャッシュ・ブロックにキャッシュするステップを含み、該基本キャッシュ・ブロックの各エントリは命令グループに対応する、前記（１）記載の方法。
（３）前記基本キャッシュ・ブロックから命令グループを実行のため発行するステップを含む、前記（２）記載の方法。
（４）前記命令セットは第１命令フォーマットに従ってフォーマットされ、前記命令グループの命令セットは第２命令フォーマットに従ってフォーマットされる、前記（１）記載の方法。
（５）前記命令履歴情報の記録は、前記命令グループの実行によってストア・フォワード例外が発生したかどうかを示す情報を記録するステップを含む、前記（１）記載の方法。
（６）前記命令グループの実行変更は、前記命令グループの後の実行より先に順次実行モードに入るステップを含む、前記（５）記載の方法。
（７）ストレージ機構と、
命令キャッシュから命令のセットを受信するよう構成され、該命令セットをストレージ機構に編成するよう調整された、クラッキング・ユニットと、
前記クラッキング・ユニットからの命令グループを格納するのに適し、基本キャッシュ・ブロック・エントリに対応した命令履歴フィールドを含み、前記命令グループに関連した例外イベントが命令履歴情報により示される、基本キャッシュ・ブロックと、
を含む、マイクロプロセッサ。
（８）前記基本キャッシュ・ブロックの各エントリは、前記クラッキング・ユニットにより生成された１つの命令グループに対応する、前記（７）記載のプロセッサ。
（９）前記命令グループの実行が完了したとき、前記命令履歴フィールドに情報を格納するよう構成された完了テーブル制御ロジックを含む、前記（７）記載のプロセッサ。
（１０）前記命令履歴情報は、前記命令グループの命令が他の命令に依存するかどうかを示す、前記（７）記載のプロセッサ。
（１１）前記命令履歴情報は、前記命令グループの実行によりストア・フォワード例外が前に発生したかどうかを示す、前記（７）記載のプロセッサ。
（１２）前記プロセッサは、前記命令グループの実行によりストア・フォワード例外が前に発生したことの検出に応答して、順不同モードで動作するよう構成された、前記（１１）記載のプロセッサ。
（１３）前記クラッキング・ユニットは、前記命令セットのフォーマットを第１命令フォーマットから第２命令フォーマットに変更する、前記（７）記載のプロセッサ。
（１４）少なくとも１つのプロセッサ、メモリ、入力手段、及びディスプレイ手段を含むデータ処理システムであって、
ストレージ機構と、
前記ストレージ機構から命令のセットを受信し、該命令セットを命令グループに編成するよう調整された、クラッキング・ユニットと、
前記クラッキング・ユニットからの命令グループを格納するのに適し、基本キャッシュ・ブロック・エントリに対応した命令履歴フィールドを含み、前記命令グループに関連した例外イベントが命令履歴情報により示される、基本キャッシュ・ブロックと、
を含む、データ処理システム。
（１５）前記基本キャッシュ・ブロックの各エントリは、前記クラッキング・ユニットにより生成された１つの命令グループに対応する、前記（１４）記載のシステム。
（１６）前記命令グループの実行が完了したとき、前記命令履歴フィールドに情報を格納するよう構成された完了テーブル制御ロジックを含む、前記（１４）記載のシステム。
（１７）前記命令履歴情報は、前記命令グループの命令が他の命令に依存するかどうかを示す、前記（１４）記載のシステム。
（１８）前記命令履歴情報は、前記命令グループの実行によりストア・フォワード例外が前に発生したかどうかを示す、前記（１４）記載のシステム。
（１９）前記プロセッサは、前記命令グループの実行によりストア・フォワード例外が前に発生したことの検出に応答して、順次モードで動作するよう構成された、前記（１８）記載のシステム。
（２０）前記クラッキング・ユニットは、前記命令セットのフォーマットを第１命令フォーマットから第２命令フォーマットに変更する、前記（１４）記載のシステム。
【図面の簡単な説明】
【図１】本発明の実施例に従ったマイクロプロセッサを含むデータ処理システムの特定のコンポーネントを示す図である。
【図２】本発明の実施例に従ったマイクロプロセッサの特定のコンポーネントを示す図である。
【図３】図２のプロセッサの実施例により実行される命令クラッキング関数の例を示す図である。
【図４】マイクロプロセッサの特定のコンポーネントを示す図である。
【図５】図２のマイクロプロセッサの基本キャッシュ・ブロックを示す図である。
【図６】図２のプロセッサに予想される様々な分岐を示す図である。
【図７】本発明に適した完了テーブルを示す図である。
【図８】命令履歴情報を含む基本キャッシュ・ブロックを示す図である。
【図９】本発明の実施例に従った１次発行キューと２次発行キューを含む発行キューを示す図である。
【符号の説明】
１００  データ処理システム
１０１  中央処理装置（プロセッサ）
１０２  ＲＯＭ（読出し専用メモリ）
１０３  ハード・ディスク
１０４  大容量記憶装置
１０５  テープ・ストレージ・デバイス
１０６  ネットワーク・アダプタ
１０７  Ｉ／Ｏアダプタ
１０８  ユーザ・インタフェース・アダプタ
１０９  キーボード
１１０  マウス
１１１  スピーカ
１１２  ディスプレイ・アダプタ
１１３  システム・バス
１３６  ディスプレイ・モニタ
２０２  命令フェッチ・ユニット
２１０  命令キャッシュ
２１２  クラッキング・ユニット
２１３  基本キャッシュ・ブロック
２１４  ディスパッチ・ユニット
２１５  ブロック・フェッチ・ユニット
２１６  ディスパッチ／完了制御ロジック
２１８  完了テーブル
２２０  発行キュー
２２２  実行パイプ
２２４  分岐ユニット・パイプライン
２２６  ロード／ストア・パイプライン
２２８  固定小数点演算ユニット
２３０  浮動小数点ユニット
２３２  最終ステージ
２５０  システム・メモリ
３０２  命令グループ
３０４  命令スロット
４０１  階層化アーキテクチャ・マイクロプロセッサ
４０２  フェッチ・ユニット
４０６  分岐予測ロジック
４１０  命令キャッシュ
４１２  ＩＳＡコンバータ
４２２  実行パイプライン
４３２  最終ステージ
５０２  基本キャッシュ・ブロック・エントリ
５０４  エントリＩＤ
５０６  ポインタ
５０７  命令アドレス（ＩＡ）・フィールド
５０８  命令履歴フィールド
６００  分岐ツリー
７０２  完了テーブル・エントリ
７０４  命令アドレス（ＩＡ）・フィールド
７０６  状態ビット・フィールド
９０２  １次発行キュー
９０４  ２次発行キュー
【図１】
0003683808.tif 000002
【図２】
0003683808.tif 000003
【図３】
0003683808.tif 000004
【図４】
0003683808.tif 000005
【図５】
0003683808.tif 000006
【図６】
0003683808.tif 000007
【図７】
0003683808.tif 000008
【図８】
0003683808.tif 000009
【図９】
0003683808.tif 000010