(57)【要約】【課題】  マシン状態に基づいて命令の実行を管理するための方法、情報処理システム、コンピュータ・プログラム製品、及びコンピュータ・プログラムを提供する。【解決手段】  方法、情報処理システム、及びコンピュータ・プログラム製品が、マシン状態に基づいて命令の実行を管理する。少なくとも１つの命令を受信する。少なくとも１つの命令をデコードする。デコードに応答して、現在のマシン状態を判断する。判断された現在のマシン状態に基づいて、少なくとも１つの命令を１組の操作単位に編成する。操作単位の組を実行する。【選択図】      図２
2013521551.tif 000002
【特許請求の範囲】
【請求項１】
マシン状態に基づいて、命令の実行を管理するための方法であって、前記方法は、
少なくとも１つの命令を受信するステップと、
前記少なくとも１つの命令をデコードするステップと、
前記デコードするステップに応答して、現在のマシン状態を判断するステップと、
前記判断された現在のマシン状態に基づいて、前記少なくとも１つの命令を１組の操作単位に編成するステップと、
前記操作単位の組を実行するステップと、
を含む方法。
【請求項２】
前記判断するステップは、
１組のマシン状態制御ビット及び前記少なくとも１つの命令と関連した命令テキストのうちの少なくとも１つを分析するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記マシン状態制御ビットの組は、
１組のプログラム状況ワード・ビットと、
ミリコード状態と、
スローモード状態と、
エミュレーション・アクティブ状態と、
のうちの少なくとも１つを含む、請求項２に記載の方法。
【請求項４】
前記プログラム状況ワード・ビットの組は、
１組のアドレス・モード・ビットと、
アドレス状態ビットと、
問題状態ビットと、
のうちの少なくとも１つを含む、請求項３に記載の方法。
【請求項５】
前記編成するステップは、少なくとも第１のアドレス・モード及び第２のアドレス・モードのうちの１つと関連付けられたマシン状態に基づくものであり、前記編成するステップは、
前記マシン状態が前記第１のアドレス・モードと関連付けられている場合、前記少なくとも１つの命令を第１の複数の操作単位に編成するステップと、
前記マシン状態が前記第２のアドレス・モードと関連付けられている場合、前記少なくとも１つの命令を第２の複数の操作単位に編成するステップであって、前記第２の複数の操作単位は、前記第１の複数の操作単位より少なくとも１つ少ない操作単位を含む、ステップと、
をさらに含む、前記請求項のいずれかに記載の方法。
【請求項６】
前記判断されたマシン状態に基づいて、前記少なくとも１つの命令がミリコードで実行されることを判断するステップをさらに含む、前記請求項のいずれかに記載の方法。
【請求項７】
前記マシン状態は、
エミュレーション・モードと、
問題状態と、
ディスエーブル・ラッチ・モードと、
動的にプログラムされたラッチ・モードと、
シリアル化されたオペコード・モードと、
分岐トレース・モードと、
モード・トレース・モードと、
監視クラス選択モードと、
のうちの少なくとも１つであると判断される、請求項６に記載の方法。
【請求項８】
前記少なくとも１つの命令を編成するステップは、前記少なくとも１つの命令がミリコードで実行されるとの判断に基づいており、前記操作単位の組は、
第１のオペランドのアドレスを定める第１の操作単位と、
前記第１のオペランドの前記アドレスをアクセス・レジスタ・モードにおいて変換するために用いられるプログラム・アクセス・レジスタに基づいて、ミリコード・アクセス・レジスタを設定する第２の操作単位と、
現在のプログラム状況ワード値に基づいて、少なくとも１つのミリコード制御レジスタを設定する第３の操作単位と、
第２のオペランドのアドレスを定める第４の操作単位と、
前記第２のオペランドの前記アドレスをアクセス・レジスタ・モードにおいて変換するために用いられるプログラム・アクセス・レジスタに基づいて、ミリコード・アクセス・レジスタを設定する第５の操作単位と、
前記少なくとも１つの命令の命令テキストの少なくとも一部分を、ミリコード制御レジスタにコピーする第６の操作単位と、
前記第２のオペランドの長さをミリコード汎用レジスタに格納する第７の操作単位と、
前記第２のオペランドの長さをミリコード汎用レジスタに格納する第８の操作単位と、
分岐操作単位である第９の操作単位と、
のうちの少なくとも１つを含む、請求項６又は請求項７のいずれかに記載の方法。
【請求項９】
前記現在のマシン状態を判断するステップは、
前記少なくとも１つの命令と関連した汎用レジスタのサイズを、１組のアドレッシング・モード・ビットの関数として定めるステップをさらに含む、前記請求項のいずれかに記載の方法。
【請求項１０】
前記現在のマシン状態を判断するステップは、
前記少なくとも１つの命令と関連した汎用レジスタの読み出しタイプを、１組のアドレッシング・モード・ビットの関数として定めるステップをさらに含む、前記請求項のいずれかに記載の方法。
【請求項１１】
前記現在のマシン状態を判断するステップは、
前記少なくとも１つの命令と関連したアドレス・レジスタのソースを、アドレス空間及び複数の制御データ空間モードの関数として定めるステップをさらに含む、前記請求項のいずれかに記載の方法。
【請求項１２】
マシン状態に基づいて命令の実行を管理するための情報処理システムであって、前記情報システムは、
プロセッサと、
前記プロセッサに通信可能に結合されたメモリと、
少なくとも１つの命令を受信し、
前記少なくとも１つの命令をデコードする、
ように動作可能な命令デコード・ユニットと、
前記少なくとも１つの命令がデコードされることに応答して、現在のマシン状態を判断するためのマシン状態判断ユニットと、
判断された前記現在のマシン状態に基づいて、前記少なくとも１つの命令を１組の操作単位に編成するための前記プロセッサ内の命令分割ユニットと、
を含み、
前記プロセッサは前記操作単位の組を実行するように動作可能である、
情報処理システム。
【請求項１３】
前記命令デコード・ユニットは、
１組のマシン状態制御ビット、及び、前記少なくとも１つの命令と関連した命令テキストのうちの少なくとも１つを分析する、
ようにさらに動作可能である、請求項１２に記載の情報処理システム。
【請求項１４】
前記少なくとも１つの命令は、前記マシン状態が第１のアドレス・モード及び第２のアドレス・モードのうちの少なくとも一方と関連付けられることに基づいて、１組の操作単位に編成され、前記命令分割ユニットは、
前記マシン状態が前記第１のアドレス・モードと関連付けられている場合、前記少なくとも１つの命令を第１の複数の操作単位に編成し、
前記マシン状態が前記第２のアドレス・モードと関連付けられている場合、前記少なくとも１つの命令を第２の複数の操作単位に編成する、
ようにさらに動作可能であり、前記第２の複数の操作単位は、前記第１の複数の操作単位より少なくとも１つ少ない操作単位を含む、請求項１２又は請求項１３に記載の情報処理システム。
【請求項１５】
前記命令分割ユニットは、前記少なくとも１つの命令がミリコードで実行されるとの判断に基づいて、前記少なくとも１つの命令を編成するようにさらに動作可能であり、前記操作単位の組は、
第１のオペランドのアドレスを定める第１の操作単位と、
前記第１のオペランドの前記アドレスをアクセス・レジスタ・モードにおいて変換するために用いられるプログラム・アクセス・レジスタに基づいて、ミリコード・アクセス・レジスタを設定する第２の操作単位と、
現在のプログラム状況ワード値に基づいて、少なくとも１つのミリコード制御レジスタを設定する第３の操作単位と、
第２のオペランドのアドレスを定める第４の操作単位と、
前記第２のオペランドの前記アドレスをアクセス・レジスタ・モードにおいて変換するために用いられるプログラム・アクセス・レジスタに基づいて、ミリコード・アクセス・レジスタを設定する第５の操作単位と、
前記少なくとも１つの命令の命令テキストの少なくとも一部分を、ミリコード制御レジスタにコピーする第６の操作単位と、
前記第２のオペランドの長さをミリコード汎用レジスタに格納する第７の操作単位と、
前記第２のオペランドの長さをミリコード汎用レジスタに格納する第８の操作単位と、
分岐操作単位である第９の操作単位と、
のうちの少なくとも１つを含む、請求項１２から請求項１４までのいずれかに記載の情報処理システム。
【請求項１６】
マシン状態に基づいて命令の実行を管理するためのコンピュータ・プログラム製品であって、
処理回路により読取可能であり、かつ、請求項１から請求項１１までのいずれかに記載の方法を実行するために、前記処理回路により実行するための命令を格納する、コンピュータ可読ストレージ媒体を含む、コンピュータ・プログラム製品。
【請求項１７】
コンピュータ可読媒体上に格納され、かつ、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、前記プログラムがコンピュータ上で実行されたとき、請求項１から請求項１１までのいずれかに記載の方法を実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、マイクロプロセッサに関し、より具体的には、命令をより簡単な操作に編成することに関する。
【背景技術】
【０００２】
ＩＰＣ（Instruction per cycle：サイクルあたりの命令実行数）を増加させるための種々の従来の手法が、命令を、より簡単な組の操作単位（unit of operations、Ｕｏｐ）に分割（crack）する。しかしながら、これらの手法は、命令をＵｏｐに分割するが、この分割は、一般に、命令オペコード（opcode）に基づいた静的なものであり、ハードウェアの効率的使用、特に、発行キューに向けられたものではない。従って、発行キューは、性能及び発行帯域幅に苦しむことがある。
【０００３】
１９８９年１０月１０日に出願された「Ｉｎｓｔｒｕｃｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ  ｆｏｒ  ｃｏｍｐｕｔｅｒ」と題する特許文献１は、コンピュータが、命令の処理速度及びデータのスループットを最適化するように構成されることを教示する。コンピュータは、メインメモリと、メモリ制御ユニットと、物理的キャッシュ・ユニットと、中央処理装置とを含む。命令処理ユニットは、中央処理装置内に含められる。命令処理ユニットの機能は、命令をデコードし、命令実行コマンドを生成すること、又は、中央処理装置内で命令の実行を指示することである。命令は、メインメモリからレジスタに転送され、そこで、命令のアドレス・フィールドがデコードされて、分割された命令を生成し、これらの命令は、論理命令キャッシュ内に格納される。分割された命令が選択されると、これらは出力バッファ及びデコーダに転送され、そこで、命令の残りのフィールドがデコードされて、命令の実行コマンドを生成する。キャッシュ内の命令は、物理アドレスではなく、論理アドレスに格納される。キャッシュはさらに、分岐命令を１クロック・サイクルで選択することができるように、コンピュータの基本クロック周期の速度の二倍で動作することができる。
【０００４】
１９９８年１０月２０日に出願された「Ｉｎｓｔｒｕｃｔｉｏｎ  ｔｒａｎｓｌａｔｉｏｎ  ｕｎｉｔ  ｃｏｎｆｉｇｕｒｅｄ  ｔｏ  ｔｒａｎｓｌａｔｅ  ｆｒｏｍ  ａ  ｆｉｒｓｔ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｔｏ  ａ  ｓｅｃｏｎｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ」と題する特許文献２は、ソース命令セットから１組の中間のアトミック操作（atomic operation）に命令を減少させる命令変換ユニットを教示する。次に、アトミック操作が再結合されてターゲット命令セット内の命令になる。命令変換ユニットに結合された実行コアは、ターゲット命令セットからの命令を実行するように構成することができる。しかしながら、ソース命令セットとの両立性は維持される。複数のソース命令を減少させてアトミック操作にすることにより、複数のソース命令の一部を結合してターゲット命令にすることができる。
【０００５】
２００７年１月９日に出願された「Ｖｉｒｔｕａｌ  ｉｎｓｔｒｕｃｔｉｏｎ  ｅｘｐａｎｓｉｏｎ  ｂａｓｅｄ  ｏｎ  ｔｅｍｐｌａｔｅ  ａｎｄ  ｐａｒａｍｅｔｅｒ  ｓｅｌｅｃｔｏｒ  ｉｎｆｏｒｍａｔｉｏｎ  ｓｐｅｃｉｆｙｉｎｇ  ｓｉｇｎ−ｅｘｔｅｎｓｉｏｎ  ｏｒ  ｃｏｎｃｅｎｔｒａｔｉｏｎ」と題する特許文献３は、拡張可能な命令セットのアーキテクチャを教示する。１つの実施形態において、マイクロプロセッサは、メモリと、仮想命令拡張ストアと、置換論理とを含む。メモリは、指標及び少なくとも１つのパラメータを含む少なくとも１つの仮想命令を格納する。仮想命令拡張ストアは、少なくとも１つの命令テンプレートと、少なくとも１つのパラメータ・セレクタとを含む。置換論理は、少なくとも１つの拡張命令のシーケンスを形成する。一例において、置換論理は、少なくとも１つのパラメータを符号拡張（sign-extend）し、少なくとも１つのパラメータ・セレクタが指定する方法で、少なくとも１つの拡張命令の即値（immediate value）を形成する。別の例においては、置換論理は、仮想命令の第１のパラメータと第２のパラメータを連結させ、少なくとも１つのパラメータ・セレクタが指定する方法で、少なくとも１つの拡張命令の即値を形成する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第４，８７３，６２９号明細書
【特許文献２】米国特許第５，８３６，０８９号明細書
【特許文献３】米国特許第７，１６２，６２１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従って、当技術分野において、上記の問題に対処する必要性がある。
【課題を解決するための手段】
【０００８】
１つの好ましい実施形態において、マシン状態に基づいて命令の実行を管理するための方法が開示される。この方法は、少なくとも１つの命令を受信することを含む。少なくとも１つの命令をデコードする。デコードに応答して、現在のマシン状態を判断する。判断された現在のマシン状態に基づいて、少なくとも１つの命令を１組の操作単位に編成する。操作単位の組を実行する。
【０００９】
別の好ましい実施形態において、マシン状態に基づいて命令の実行を管理するための情報処理システムが開示される。この情報処理システムは、メモリと、メモリに通信可能に結合されたプロセッサとを含む。命令デコード・ユニットは、少なくとも１つの命令を受信するように構成される。命令デコード・ユニットはまた、少なくとも１つの命令をデコードするようにも構成される。マシン状態判断ユニットは、デコードに応答して、現在のマシン状態を判断するように構成される。プロセッサ内の命令分割ユニットは、判断された現在のマシン状態に基づいて、少なくとも１つの命令を１組の操作単位に編成するように構成される。プロセッサは、操作単位の組を実行するように構成される。
【００１０】
さらに別の好ましい実施形態において、マシン状態に基づいて命令の実行を管理するためのコンピュータ・プログラム製品が開示される。このコンピュータ・プログラム製品は、処理回路により読み出し可能であり、かつ、方法を実行するために、処理回路によって実行するための命令を格納するコンピュータ可読ストレージ媒体を含む。この方法は、少なくとも１つの命令を受信することを含む。少なくとも１つの命令をデコードする。デコードに応答して、現在のマシン状態を判断する。判断された現在のマシン状態に基づいて、少なくとも１つの命令を１組の操作単位に編成する。操作単位の組を実行する。
【００１１】
更に別の態様の観点から見ると、本発明は、コンピュータ可読媒体上に格納され、かつ、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、プログラムがコンピュータ上で実行されたとき、本発明のステップを実行するためのソフトウェア・コード部分を含む、コンピュータ・プログラムを提供する。
【００１２】
ここで本発明が、以下の図面に示されるような好ましい実施形態を参照して、単なる例として説明される。
【図面の簡単な説明】
【００１３】
【図１】本発明の１つの好ましい実施形態による動作環境の一例を示す。
【図２】本発明の１つの好ましい実施形態によるプロセッサ・コアの詳細図を示す。
【図３】本発明の好ましい実施形態による、マシン状態に基づいて命令を分割する種々の例を示す。
【図４】本発明の好ましい実施形態による、マシン状態に基づいて命令を分割する種々の例を示す。
【図５】本発明の好ましい実施形態による、マシン状態に基づいて命令を分割する種々の例を示す。
【図６】本発明の好ましい実施形態による、マシン状態に基づいて命令を分割する種々の例を示す。
【図７】本発明の１つ又は複数の好ましい実施形態による、マシン状態に基づいて命令を分割する一例を示す動作フロー図である。
【発明を実施するための形態】
【００１４】
必要に応じて、本発明の詳細な実施形態が本明細書に開示されるが、開示される実施形態は、本発明の単なる例示であり、本発明は様々な形態で具体化できることを理解すべきである。従って、本明細書に開示される特定の構造上及び機能上の詳細は、限定的なものとして解釈されるべきではなく、単に特許請求の範囲のための基準として、及び、事実上いずれかの適切で詳細な構造において本発明を様々に用いるように当業者に教示するための代表的な基準として解釈されるべきである。さらに、本明細書で用いられる用語及び句は、限定的であることを意図するものではなく、本発明を理解することができる説明を提供することを意図するものである。
【００１５】
動作環境
図１は、本発明の種々の好ましい実施形態に適用可能な例示的な動作環境を示す。特に、図１は、本発明の１つの好ましい実施形態が実装される並列分散処理システムを示す。この好ましい実施形態において、並列分散処理システム１００は、ＳＭＰコンピューティング環境で動作する。ＳＭＰコンピューティング環境において、並列アプリケーションは、同じ処理ノード上の種々のプロセッサ上で実行される幾つかのタスク（プロセス）を有することができる。並列分散処理システム１００は、複数のネットワーク・アダプタ１０６及び１０８を介して互いのノードに結合された、複数の処理ノード１０２及び１０４上で実行される。各々の処理ノード１０２及び１０４は、それ自体のオペレーティング・システム・イメージ１１０及び１１２、チャネル・コントローラ１１４及び１１６、メモリ１１８及び１２０、並びにプロセッサ１２２及び１２４をシステム・メモリ・バス１２６及び１２８上に有する独立したコンピュータである。システム入力／出力バス１３０及び１３２は、Ｉ／Ｏアダプタ１３４及び１３６と通信アダプタ１０６及び１０８を結合する。簡単にするために、各々の処理ノード１０２及び１０４内に、１つだけのプロセッサ１２２及び１２４が示されているが、各々の処理ノード１０２及び１０４は、１つより多いプロセッサを有してもよい。通信アダプタは、ネットワーク・スイッチ１３８を介して互いにリンクされている。
【００１６】
また、ノード１０２、１０４の一方又は両方が、大容量記憶インターフェース１４０を含む。大容量記憶インターフェース１４０は、大容量記憶装置１４２をノード１０２に接続するために用いられる。１つの特定のタイプのデータ・ストレージ装置は、コンパクト・ディスク（「ＣＤ」）ドライブのようなコンピュータ可読媒体であり、これを用いて、ＣＤ１４４又はＤＶＤにデータを格納し、そこからデータを読み出すことができる。別のタイプのデータ・ストレージ装置は、例えば、ＪＦＳタイプのファイル・システム動作をサポートするように構成されたハードディスクである。幾つかの好ましい実施形態において、種々の処理ノード１０２及び１０４は、処理クラスタの一部とすることができる。本発明は、ＳＭＰ環境に限定されるものではない。他のアーキテクチャも適用可能であり、本発明のさらに好ましい実施形態は、単一のシステム内で動作することもできる。
【００１７】
プロセッサ・コア
１つの好ましい実施形態によると、図２は、マシン状態に基づいて命令を分割するための、プロセッサ１２２、１２４内のプロセッサ・コア２００の一例を示す。図２に示される構成は、特許請求される本発明に適用可能な一例にしかすぎないことに留意すべきである。特に、図２は、プロセッサ・コア２００を示す。１つの好ましい実施形態において、このプロセッサ・コア２００は、プロセッサ・コア２００を他のプロセッサ及び周辺機器に結合するバス・インターフェース・ユニット２０２を含む。バス・インターフェース・ユニット２０２はまた、データ値を読み出し、格納するＬ１データ・キャッシュ（Ｄキャッシュ）２０４、プログラム命令を読み出すＬ１命令キャッシュ（Ｉキャッシュ）２０６、及びキャッシュ・インターフェース・ユニット２０８を、外部メモリ、プロセッサ及び他のデバイスにも接続する。
【００１８】
Ｌ１  Ｉキャッシュ２０６は、命令をプリフェッチし、投機的ローディング（speculative loading）及び分岐予測機能（branch prediction capability）を含むことができる、命令フェッチ・ユニット（ＩＦＵ）２１０と共に、命令ストリームのローディングを提供する。これらのフェッチされた命令コードは、命令デコード・ユニット（ＩＤＵ）２１２により、命令処理データにデコードされる。ひとたびデコードされると、命令は、命令シーケンサ・ユニット（ＩＳＵ）２１４にディスパッチされる。ＩＳＵ２１４は、一般的な演算を実行するための１つ又は複数の固定小数点ユニット（ＦＸＵ）２１６及び浮動小数点演算を実行するための１つ又は複数の浮動小数点ユニット（ＦＰＵ）２１８などの、様々な実行ユニットに発行される命令の順序付け（sequencing）を制御する。浮動小数点ユニット２１８は、２進浮動小数点ユニット２２０、１０進浮動小数点ユニット２２１及び／又はその種の他のものとすることができる。１つの好ましい実施形態において、ＦＸＵ２１６は、互いのコピーである複数のＦＸＵパイプラインを含むことに留意すべきである。ＩＳＵ２１４は、１つ又は複数のＬＳＵパイプラインを介して、１つ又は複数のロード／ストア・ユニット（ＬＳＵ）２３０にも結合される。これらの１つ又は複数のＬＳＵパイプラインは、ロード及びストアを実行するための実行ユニットとして扱われ、分岐の生成に取り組む。
【００１９】
ＩＳＵ２１４内に常駐する、１組のグローバル完了テーブル（ＧＣＴ）２２２は、命令のターゲットである特定の実行ユニットが命令の実行完了を示すまで、タグを介してＩＳＵ２１４によって発行された命令を追跡する。ＦＸＵ２１６及びＦＰＵ２１８は、汎用レジスタ（ＧＰＲ）２２４及び浮動小数点レジスタ（ＦＰＲ）２２６などの種々のリソースに結合される。ＧＰＲ２２４及びＦＰＲ２２６は、ロード・ストア・ユニット（ＬＳＵ）２３０によって、Ｌ１  Ｄキャッシュ２０４からロードされ、格納されたデータ値のためのデータ値ストレージを提供する。
【００２０】
さらに、上述したプロセッサ・コア２００の構成に対して、１つの好ましい実施形態において、ＬＳＵ２３０は、ロード・キュー（ＬＤＱ）２３２、ストア・キュー（ＳＴＱ）２３４、及びストア・バッファ（ＳＴＢ）２３６を含む。ＬＤＱ２３２及びＳＴＱ２３４の各々は、それぞれ、未処理のロード及びストア命令と関連した付加的な情報を追跡する、エントリ２３８、２４０を含む。例えば、ＬＤＱ２３２のエントリ２３８は、対応するロード命令の開始アドレスと終了アドレスとを含む。ＳＴＱ２３４のエントリ２４０は、対応するストア・データの開始アドレスと終了アドレスとを含む。ＳＴＢ２３６は、エントリ２４２を含み、ここで、対応するストア命令が、データをキャッシュ２０４に書き戻す前にそのデータを保存する。
【００２１】
１つの好ましい実施形態において、ＩＤＵ２１２は、分割ユニット（cracking unit）２４４を含む。分割ユニット２４４は、複雑な命令をより簡単なユニットに編成する／分ける。別の言い方をすれば、分割ユニット２４４は、命令を、実行ユニットにおいて処理できる１組の操作単位（Ｕｏｐ）に編成する。分割ユニット２４４は、以下でより詳細に説明される。１つの好ましい実施形態において、ＩＤＵ２１２はまた、これらに限定されるものではないが、プログラム状況ワード（Program Status Word、ＰＳＷ）ビット、ミリモード状態、スローモード状態、エミュレーション・アクティブ状態などといった、マシン状態制御ビットの現在の状態を判断する、マシン状態判断ユニット２４６も含む。１つの好ましい実施形態において、マシン状態は、命令自体の命令テキストから判断することもできる。例えば、Ｒ２フィールドがゼロである場合、Ｉ２フィールドが特定の定数値である場合、マスク・フィールドが連続的である又はゼロである場合などには、命令を異なる組のＵｏｐに分割することができる。
【００２２】
マシン状態判断ユニット２４６は、以下により詳細に説明される。この好ましい実施形態においては、ＩＤＵ２１２は、例えば、実行ステップ及び／又は実行パイプを減少させることによって命令の実行を変更する命令短縮化ユニット２４８も含む。短縮された命令は、より少ない発行キュー・リソースを占め、発行キューの帯域幅を改善し、場合によっては、より少ないＧＣＴリソースを占め、完了を早め、電力消費を低減させ、より少ないＬＤＱ／ＳＴＱのリソース割り当てをもたらす。命令短縮化ユニット２４８は、以下により詳細に説明される。
【００２３】
マシン状態に基づいた命令の管理
上述のように、コンピュータ・システムは、典型的には、命令フェッチ部／ユニット、命令デコード・ユニット、命令グループ化及びディスパッチ・ユニット、命令順序付け及び発行ユニット、実行ユニット（固定小数点、ロード・ストア、ＢＦＵ、ＤＦＵ等）、並びに命令完了ユニットを含む。命令のデコードとは、命令が最初にデコードされ、理解されることを指す。命令のグループ化、分割、ロード、ストアなどの命令特性についての情報がデコードされる。命令のディスパッチ時に（イン・オーダーの最後の時点（last in order point））、論理レジスタの番号及びタイプ（ＧＰＲ、ＦＰＲ、ＡＲ等）、条件コードの読み出し／書き込み、ＦＰＣの読み出し／書き込み、ＰＳＷの読み出し／書き込み等のような情報が、ＩＳＵ２１４に与えられる。
【００２４】
ＩＳＵ２１４は、論理レジスタを物理レジスタにマッピングし、コピーし、依存ベクトルを設定し、ディスパッチされた命令を命令キューに格納する。発行準備ができた命令が、命令キューから読み出され、実行ユニット及び古さごとにランク付けされ、次に実行ユニットに発行される。例えば、２つの命令が、ＦＸＵパイプ０に発行する準備ができた場合、各々の実行ユニットは単一の命令しか受信できないので、最も古い命令だけが発行される。
【００２５】
従って、図１に関して上述した一般的な処理機構に加えて、本発明の種々の好ましい実施形態は、命令処理の速度を最適化し、データ・スループットを増大させることにより、ＩＰＣを増大させる。例えば、発行キューは、性能に影響されやすい。従って、本発明の種々の好ましい実施形態は、サイクル時間の要件を満たす一定サイズのキューに対するデコードされた命令の処理を変更することにより、発行キュー・エントリを節約する。このことにより、発行キューの性能全体が改善される。
【００２６】
１つの好ましい実施形態において、命令のデコード時間中、プログラム状況ワード（ＰＳＷ）ビットを含むマシン状態制御ビットが、命令処理／デコード時間中に用いられ、命令の分割を変化させること及び／又は命令の短縮化を適用することによって、命令の実行を変更する。命令の変更により、性能が改善され、正確な命令の実行が保証される。
【００２７】
ＩＦＵ２１０がＩ−キャッシュ２０６から命令をフェッチすると、ＩＦＵ２１０は、ＩＤＵ２１２によりデコードするために、命令をパイプラインに送る。ＩＤＵ２１２は、命令をデコードし、これらに限定されるものではないが、ＲＲ−タイプ分岐命令（例えば、ＢＣＴＲ、ＢＣＴＧＲ、ＢＣＲ及びＢＡＳＲ、並びにＢＡＬＲ）；ＬＡ、ＬＡＹ、ＬＡＥ、及びＬＡＥＹタイプ命令、シフト／ローテート・タイプ命令（例えば、ＲＬＬ及びＲＬＬＧ）、並びにＬＣＴＬ及びＳＰＫＡ命令のような命令のタイプを識別する。次に、マシン状態判断ユニット２４６は、プログラム状況ワード（ＰＳＷ）ビットを含むマシン状態制御ビットに基づいて、マシン状態を判断する。
【００２８】
プログラム状況ワード（ＰＳＷ）ビットの一部は、アドレス・モード・ビット（ＰＳＷ（３１：３２））、アドレス空間ビット（ＰＳＷ（１６：１７））、問題状態ビット（ＰＳＷ（１５））である。問題状態ビットに関して、このビットがゼロである場合、全ての命令が許容されるとき、プロセッサは「スーパーバイザ（supervisor）状態」にある。このビットが１であるとき、実行が許容されるかどうかを、すなわち、例外が検出されないことを判断するために、何らかの追加の実行処理が要求される。アドレス空間ビットに関して、これらのビットは、変換モードを制御する。モードの１つ（ＡＲ−モード）において、ベース・レジスタ番号により指定されるアクセス・レジスタのコンテンツが、変換のために必要とされる。アドレス・モード・ビットに関して、これらのビットは、実効アドレス実効アドレス生成のサイズに影響を与える。「００」の値は、２４−ビットのアドレス・サイズを示し、「０１」の値は３１−ビットのアドレス・サイズを示し、「１１」の値は６４−ビットのアドレス・サイズを示す。アドレス生成のサイズ及び使用は、多くの場合、「アドレッシング・モード（addressing mode）」と呼ばれる。
【００２９】
命令処理を変更する他のプロセッサ状態は、ミリモード状態、スローモード状態、エミュレーション・アクティブ状態等を含む。設定時のミリモード状態は、プロセッサが、プログラム・モード以外のプログラマには見えないコードを実行していることを示す。ミリモード・コードは、複雑な命令を実行し、プログラム例外、非同期例外等を処理するために用いられる。スローモード・ビットは、プロセッサが、主として、正確な例外を報告し、かつ、マルチ処理システムにおけるフォワード・プログレス（forward progress）を呈するために用いられる単一の命令（命令のフェッチから完了まで）を実行しているときに設定される。
【００３０】
これらの識別された値に基づいて、ＩＤＵ２１４は、デコードされた命令の処理を変更する。１つの好ましい実施形態において、以下により詳細に説明されるように、デコードされた命令の処理は、識別されたマシン状態に基づいて命令を分割することによって変更することができ、識別されたマシン状態に基づいて命令を短縮化することができ、及び／又は、識別されたマシン状態に基づいて、命令をミリコード化する（millicode）ように強制することができる。
【００３１】
以下の例は、識別されたマシン状態に基づいて、命令を分割すること、短縮化すること、及び／又はミリコードで実行されるように強制することによって、デコードされた命令の処理がどのように変更されるかを示す。本発明の種々の好ましい実施形態は、他の命令セットにも適用可能であるので、以下の例で用いられる命令セットは限定されるものではないことに留意すべきである。
【００３２】
上述のように、種々の命令は、１つの好ましい実施形態においては、アドレス・モード・ビットにより与えられるマシン状態に影響を受けやすい。メモリ・アドレスを可変サイズとして指定できるとき、ｚ−マイクロプロセッサを含む現在のマイクロプロセッサは、異なるアドレス・モードでアプリケーションを実行する。ｚ−プロセッサにおいて、アドレスのサイズは、アドレッシング・モードに応じて、２４ビット、３１ビット、及び６４ビットとすることができる。アドレッシング・モード・ビットは、ＰＳＷのビット３１：３２である。アドレス生成（ＡＧＥＮ）は、ベース・レジスタ及び指標（index）レジスタを命令の変位（displacement）フィールドに付加することによって形成される。汎用レジスタ（ＧＰＲ）は、６４ビット・レジスタ番号として指定され、ここで上位ワード（high word）（ビット０：３１）及び下位ワード（low bit）の３２ビット（ビット３２：６３）が別々に制御される。例えば、ＧＰＲの上位ワード及び下位ワードは、マッピングされ、異なるようにリネームされ、２つの異なる物理レジスタを指し示すことができる。換言すれば、１６のアーキテクチャ化されたＧＰＲは、一方の組がＧＰＲの上位部分を含み、他方の組がＧＰＲの下位部分を含む、２つのＧＰＲの組と考えることができる。
【００３３】
６４ビットのアドレッシング・モードにおいて、ベース・レジスタ及び指標レジスタの上位ワード及び下位ワードは、ＡＧＥＮ計算のためのソースである。アドレス・モード・ビットが、ｚ−プロセッサのようなマイクロプロセッサの命令フェッチ・ユニットにおいて予測される。命令デコード・ユニットに送られた命令が、予測されたアドレッシング・モード・ビット（命令キャッシュから命令をフェッチするために用いられるアドレッシング）、及び、命令がミリコード命令空間からフェッチされたかどうかを識別するミリコード・ビットと共に提示される。ＡＧＥＮ計算に用いられるベース・レジスタ及び指標レジスタに加えて、オペランド・アクセスがアクセス・レジスタ・モード（ＡＲ−モード）で行われたとき、キャッシュ・オペランドのアドレス変換のために、ベース・レジスタ番号（ＡＲ−ベース）により指定されるアクセス・レジスタが必要である。ＡＲ−モードは、ＰＳＷビット１６：１７（アドレス空間）、ビット５（ＤＡＴビット）及び他のミリコード制御レジスタ・ビットによって指定される。
【００３４】
アドレス・モード・ビットに影響を受けやすい１つの命令セットは、ＢＡＳＲ、ＢＡＳ、ＢＡＬ及びＢＡＬＲ命令のような分岐の保存及びリンクである。これらの命令は、第２のオペランド（ＢＡＬＲ／ＢＡＳＲにおいてはＧＰＲ−Ｒ２、及びＢＡＬ／ＢＡＳにおいてはＧＰＲ−Ｂ２＋Ｄ２）によって指定される新しい命令のアドレスに分岐する。さらに、更新された命令アドレスを含むプログラム状況ワード（ＰＳＷ）からの情報は、第１のオペランド位置におけるリンク情報として保存される。保存されるＰＳＷ情報は、ＰＳＷビット３１及び３２によって指定されるアドレッシング・モード・ビットを含む。
【００３５】
１つの好ましい実施形態において、マシン状態判断ユニット２４６は、現在のマシン状態が、ＰＳＷにおけるアドレス・モード・ビットにより示されるような２４ビット・アドレス・モードであるか又は３１ビット・アドレス・モードであるかを判断する。この好ましい実施形態において、分割ユニットは、命令を、図３に示される３つのＵｏｐのような所与の数のＵｏｐに分割する。第１のＵｏｐ１  ３０２は、分岐ターゲット・アドレスを計算する。第２のＵｏｐ２  ３０４は、実行される次の命令のアドレス（命令アドレスＩＡ＋命令長コード）を定め、計算し、結果をスクラッチＧＰＲに格納する。第３のＵｏｐ３  ３０６は、分割前のマシン状態を示すリンク情報をＧＰＲに格納する。この好ましい実施形態においては、リンク情報は、ＰＳＷのビット３２内に見出される。
【００３６】
マシン状態判断ユニット２４６が、現在のマシン状態が６４ビット・アドレス・モードであると判断された場合、図３及び図４に示されるように、短縮化ユニット２４８は、命令の分割を、３Ｕｏｐではなく２Ｕｏｐに短縮化する。この好ましい実施形態において、分割ユニットは、命令を、図４に示される２つのＵｏｐのような所与の数のＵｏｐに分割する。第１のＵｏｐ１は、分岐ターゲット・アドレスを計算する。第２のＵｏｐ２は、実行される次の命令のアドレス（命令アドレスＩＡ＋ＩＬＣ（命令長コード））を計算し、結果をスクラッチＧＰＲに格納する。図に示すように、命令は、プロセッサのアドレッシング・モードに応じて、異なるように分割される。
【００３７】
別の好ましい実施形態においては、それぞれ、２４ビット・モード及び３１ビット・モードにおけるＢＡＬ／ＢＡＬＲについての図５及び図６に示されるように、マシン状態判断ユニット２４６は、現在のマシン状態が、ＰＳＷにおけるアドレス・モード・ビットにより示される２４ビット・アドレス・モードであるか、又は３１ビット・アドレス・モードであるかを判断する。この好ましい実施形態において、分割ユニットは、命令を、図５及び図６に示される３つのＵｏｐのような所与の数のＵｏｐに分割する。第１のＵｏｐ１は、分岐ターゲット・アドレスを計算する。第２のＵｏｐ２は、実行される次の命令のアドレス（命令アドレスＩＡ＋ＩＬＣ（命令長コード））を計算し、結果をスクラッチＧＰＲに格納する。第３のＵｏｐは、２４ビット・モードにおけるＢＡＬ／ＢＡＬＲについての図５における、条件コード、命令長コード、及びプログラム・マスク（ＰＳＷ（２０：２３））のようなリンク情報と、分割前のマシン状態を示す、ＧＰＲの３１ビット・モードにおけるＢＡＬ／ＢＡＬＲについての図６における、ＰＳＷのビット３１内に見出されるリンク情報とを格納する。
【００３８】
次の例は、命令をミリコードで実行されるように強制することに関するものである。ミリコードは、外部アプリケーション又はコンパイラには見えないが、ライセンスを受けた内部コードによって用いられる。命令がハードウェアによって実行するのに複雑すぎる場合、命令をミリコードで実行されるように強制される。ミリコードは、垂直型マイクロコードと考えることができ、そこでは、ミリコードで実行されるあらゆる命令について、プロセッサがミリコード空間（ストレージ・システム領域）から固有の組の命令（発行済みの１つのミリコード特別支援命令）をフェッチし、それらを実行する。命令をミリコード化するように強制するには、多くの場合、ミリ入力シーケンス（milli-entry sequence）として知られるＵｏｐのシーケンスが必要である。命令のデコード時に、命令は、それが「複雑」であるかが評価され、「複雑」である場合、通常の命令のディスパッチ・シーケンスの代わりに、ミリ入力Ｕｏｐのシーケンスがディスパッチされる。以下は、ハードウェアをトリガして、所与の命令をミリコード化するように強制するマシン状態判断ユニット２４６により調べられる条件の一部である。
【００３９】
マシン状態判断ユニット２４６が検出する１つの条件は、命令がエミュレーション・モード下にあるかどうか（ホストとしてではなく、ゲスト１及びゲスト２において実行されているコード）、及び、ＳＩＥ（Start Interpretive Execution、解釈実行開始）インターセプトが可能であるかどうか、又は、ロード及び制御（ＬＣＴＬ／ＬＣＴＬＧ）命令などにおいて、命令がエミュレーション・モードでＣＲ−Ｅをロードしているかどうかである。ＬＣＴＬ／ＬＣＴＬＧにおいて、命令は、ＣＲ−Ｒ１からＣＲ−Ｒ３までのレジスタ範囲を制御し、第２のオペランド位置によって指定されるメモリからロードされる。第２のオペランド・アドレスは、命令テキストにおいて指定された変位フィールド（Ｄ２フィールド）に付加されたＧＰＲ−Ｂ２のコンテンツと等しくなる。
【００４０】
ＳＩＥインターセプトは、エミュレーション・モードでは実行できない命令によりトリガすることができ、インターセプトは、制御をホストに戻す。この好ましい実施形態において、マシン状態判断ユニット２４６は、制御レジスタを分析して、命令がエミュレーション・モード下にあるかどうかを示す１つ又は複数の制御ビットを識別する。命令がエミュレーション・モード下にある場合、命令は、ミリコードで実行されるように強制される。
【００４１】
マシン状態判断ユニット２４６が検出する別の条件は、ＳＰＫＡ（Set Program PSW Key）命令のような命令が、問題状態にあるかどうかである。この好ましい実施形態において、マシン状態判断ユニット２４６は、ＰＳＷを分析して、ビット１５が１に設定されるかどうかを判断し、ここで、１は問題状態を示す。この条件が真である場合、命令はミリコードで実行されるように強制される。
【００４２】
別の例において、マシンの状態は、内部ラッチ、又は、動的にプログラムされたラッチ又はレジスタの組を設定することによって表わされる設計状態によって指し示される。この例において、マシン状態判断ユニット２４６は、ディスエーブル・ラッチ（スキャン・オンリー・ラッチ（scan only latch））又は動的にプログラムされたラッチが特定の値に設定されているか又は特定の値と等しいかどうかを判断する。特定の値に設定されている又は特定の値と等しい場合、命令は、ミリコードで実行されるように強制される。スキャン・オンリー・ラッチは、技術データを設計にスキャンすることにより、システムの起動時に初期化される。換言すれば、これらのラッチは、電源投入時に、常に所与の値に初期化される。対照的に、システムが実行されている間、動的にプログラムされたラッチ又はレジスタを所定の値に設定することが可能である。
【００４３】
別の条件は、命令の重複に関するものであり、これは、命令の命令テキストに基づいて判断することができる。この例においては、シリアル化オペコード機構が、マシン状態判断ユニット２４６により与えられ、デコード時に、デコードされた命令のオペコードが保存されたオペコードと合致するかどうかを判断する。例えば、これに限定されるものではないが、ＭＶＣ命令のような命令が、最初に及びＡＧＥＮ（オペランド・アドレス生成）時に、正常にディスパッチされた場合、マシン状態判断ユニット２４６は、命令オペランドが破壊的に重複していると判断する。次に、ＭＶＣ命令がフラッシュされ、命令をミリコード化するように強制するためのアクションが取られる。次に、命令は、Ｉキャッシュからフェッチされ、デコード論理に与えられる。次に、デコード論理は、今回は、命令がミリコード化するように強制されると判断するので、動作は一度に１バイトだけより低速で実行される。
【００４４】
更に別の条件は、ＢＡＬＲ、ＢＳＭ、ＢＡＳＳＭ及びＢＡＳＲ命令のような分岐命令に向けられる。この例においては、マシン状態判断ユニット２４６は、分岐のトレース（tracing）が可能であるかどうかを判断する。分岐トレース・モードにおいては、分岐ターゲット・アドレスのような分岐命令についての情報は、ソフトウェアのデバッグ（debugging）目的などの理由のために、メモリ領域内に格納される。例えば、マシン状態判断ユニット２４６は、制御レジスタ１２のような制御レジスタを調べ、分岐トレースが可能であるかどうかを判断する。分岐トレースが可能である場合、命令は、ミリコードで実行されるように強制される。
【００４５】
別の条件は、ＳＡＭ２４、ＳＡＭ３１及びＳＡＭ６４命令のようなアドレス・モード命令の設定に向けられる。この例においては、マシン状態判断ユニット２４６は、モード・トレースが可能であるかどうかを判断する。モード・トレース・モードにおいて、アドレッシング・モードを更新する命令についての情報は、ソフトウェアのデバッグ目的などの理由のために、メモリ内に格納される。例えば、マシン状態判断ユニット２４６は、制御レジスタ１２のような制御レジスタを調べ、モード・トレースが可能であるかどうかを判断する。モード・トレースが可能である場合、命令は、ミリコードで実行されるように強制される。
【００４６】
別の例では、マシン状態判断ユニット２４６は、選択されたモニタ・クラスが、これに限定されるものではないが、Ｍｏｎｉｔｏｒ  Ｃａｌl（ＭＣ）命令のような命令に対して可能であるかどうかも判断する。この例では、マシン状態判断ユニット２４６は、命令テキスト１２：１５を、制御レジスタの８ビット４８：６２と比較する。マシン状態判断ユニット２４６が、選択されたモニタ・クラスのいずれかが可能であると判断した場合、命令は、ミリコードで実行されるように強制されるので、ファシリティ及びプログラムの監視が行われる。
【００４７】
上述した条件に基づいて、命令がミリコード化するように強制された場合、分割ユニット２４４は、命令を１組のＵｏｐに分割する。一例において、ミリ入力シーケンスは、最大９個のＵｏｐを含む。第１のＵｏｐ、すなわちＵｏｐ１：ＭＧＲ９←１ｓｔ  ｏｐｅｒａｎｄ  ａｄｄｒｅｓｓ（第１のオペランド・アドレス）は、第１のオペランドのアドレスを計算し、このアドレスを、ＭＧＲ９のようなミリコードＧＲに格納する。第１のオペランド・アドレスは、命令フォーマットに基づいて計算される。例えば、ＲＸ−フォーマットについては、第１のオペランド・アドレスは、ベースＧＰＲ値＋指標ＧＰＲ＋変位値と等しくなる。
【００４８】
第２のＵｏｐ、すなわちＵｏｐ２：ＭＡＲ９←ＡＲ−Ｂａｓｅ（ＡＲ−ベース）は、変換に必要とされるアクセス・レジスタ番号を保存する。ミリコードＡＲ−レジスタ９は、アクセス・レジスタ（ＡＲ）モードにおける変換のために用いられるプログラム・アクセス・レジスタ（ＡＲ−ｒｅｇ）から設定される。ＲＸ／ＲＳ／ＳＳフォーマットにおいて、ＡＲ−ベース・レジスタは、変換のために用いられるＡＲである。第３のＵｏｐ、すなわちＵｏｐ３は、アクセス・キー、アドレス・モード、アドレス空間等のようなビットをＰＳＷからコピーし、これらのビットを、オペランド・アクセス制御レジスタ（Operand Access Control Register）と名付けられた内部ミリコード制御レジスタ内に格納する。オペランド・アクセス制御レジスタは、オペランド・アクセス及びＡＧＥＮ計算のために、プログラムＰＳＷの代わりに用いられる。
【００４９】
第４のＵｏｐ、すなわちＵｏｐ４：ＭＧＲ１１←２ｎｄ  ｏｐｅｒａｎｄ  ａｄｄｒｅｓｓ（第２のオペランド・アドレス）は、第２のオペランド・アドレスが計算されることを除いて、第１のＵｏｐと類似している。Ｕｏｐ１と同様に、第２のオペランド・アドレスは、命令構成に基づいて計算される。例えば、ＳＳフォーマットの命令については、第２のオペランド・アドレスは、Ｂａｓｅ２  ＧＰＲ値＋変位２値と等しい。このＵｏｐは、２つのメモリ・オペランドを含む命令のためのものである。第５のＵｏｐ、すなわちＵｏｐ５：ＭＡＲ１１←ＡＲ−Ｂａｓｅ２（ＡＲ−ベース２）は、Ｕｏｐ２と類似しているが、第１のオペランドではなく第２のオペランドに向けられる。第６のＵｏｐ、すなわちＵｏｐ６では、別のミリコード制御レジスタが、命令フォーマット及びその命令試験ビットに基づいて更新される。このＵｏｐは、ミリコードでの命令の実行を容易にする。
【００５０】
第７のＵｏｐ、すなわちＵｏｐ７：ＭＧＲ５←１ｓｔ  ｏｐｅｒａｎｄ  ｌｅｎｇｔｈ  ｆｏｒ  ｓｏｍｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｔｙｐｅｓ（何らかの命令のタイプについての第１のオペランド長）は、第１の演算のオペランド長を格納する。第８のＵｏｐ、すなわちＵｏｐ８：ＭＧＲ７←２ｎｄ  ｏｐｅｒａｎｄ  ｌｅｎｇｔｈ  ｆｏｒ  ｓｏｍｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｔｙｐｅｓ（何らかの命令のタイプについての第２のオペランド長）は、第２の演算のオペランド長を格納する。第９のＵｏｐ：Ｕｏｐ９は、ミリコードの入力は、サブルーチンへの分岐と類似しているため、分岐Ｕｏｐであり、これは分岐予測論理により予測することができる。
【００５１】
別の例では、マシン状態判断ユニット２４６は、アドレッシング・モード・ビットの関数として、ＧＰＲ（下位ワード対全ダブルワード（double word））ターゲットのサイズを分析する。ロード・アドレス・タイプの命令（例えば、ＬＡ、ＬＡＹ、ＬＡＥ、ＬＡＥＹ及びＬＡＲＬ）についてのＧＰＲターゲット・サイズ（下位ワード対全ダブルワード）もまた、アドレッシング・モード・ビットの関数である。ロード・アドレス・タイプの命令に関して、Ｂ２、Ｘ２及びＤ２によって指定される実効アドレスは、汎用レジスタＲ１に入れられる。実効アドレス（ＧＰＲ−Ｂ２＋ＧＰＲ−Ｘ２＋Ｄ２）のサイズは、２４ビット・アドレッシング・モードにおいては２４ビットであり、３１ビット・アドレッシング・モードにおいては３１ビットであり、６４−ビット・アドレッシング・モードにおいては６４ビットである。アドレッシング・モードは、ＰＳＷにおいて識別される。２４ビット・アドレッシング・モード及び３１ビット・アドレッシング・モードにおいては、ＧＰＲ−Ｒ１の下位ワード（下位３２ビット）だけが更新され、上位ワードは変更されないままである。６４ビットにおいては、アドレスは、６４ビットＧＰＲ−Ｒ１全体を更新する。
【００５２】
上述のように、２４ビット・アドレス・モード及び３１ビット・アドレス・モードにおいて、ＧＰＲ−Ｒ１の下位３２ビット（ビット３２：６３）だけが新しい値で更新される一方、ＧＰＲのビット０：３１は変更されないままである。６４ビット・アドレス・モードにおいては、ＧＰＲ−Ｒ１のビット０：６３が更新される。異なるアドレッシング・モードを有するプロセッサにおいては、ＧＰＲの下位ワード（ビット３２：６３）は、ＧＰＲの上位ワード（ビット０：３１）とは別個に物理レジスタにマッピングされる。その結果、命令のデコード・サイクル中、アドレッシング・モードが調べられ、２４ビット・アドレス・モード又は３１ビット・アドレス・モードのいずれかの場合、ＧＰＲ−Ｒ１の下位ワードだけが命令のターゲットとして識別され、結果的に、ＧＰＲ−Ｒ１の下位ワードだけが物理レジスタにマッピングされる。ＧＰＲの下位ワードだけがターゲットとして指定された場合、マッパー（mapper）の半分がクロック制御されないので、ＧＰＲソース／ターゲットの正しいサイズを定めることは、電力の利点も有する。
【００５３】
更に別の例において、マシン状態判断ユニット２４６は、アドレス・モードの関数として、ＧＰＲ読み出しのサイズ（３２ビットの読み出し対６４ビットの読み出し）を分析する。キャッシュ・アクセス（ロード、ストア）、分岐ターゲット、及びロード・アドレス命令のために用いられるアドレス生成（ＡＧＥＮ）計算は、アドレス・モードに依存する。オペランド・アドレス及び分岐ターゲットは、２４ビット・アドレス・モードにおいては２４ビットとして、３１ビット・アドレス・モードにおいては３１ビットとして、及び６４ビット・アドレス・モードにおいては６４ビットとして定められる。従って、命令のデコード時に、アドレス・モードが調べられ、２４ビット・モードにあるか又は３１ビット・モードにあるかが判断され、次に、ベース・レジスタ及び指標レジスタの上位ワード（ビット０：３１）が、ＡＧＥＮ計算についてのソースとして識別されない。このことは、マッパーがベース／指標レジスタの上位ワードを参照することに関する電力の節約をもたらし、より古い命令がベース・レジスタ又は指標レジスタのビット０：３１を更新している場合、検出に対するいずれのＧＰＲインターロックも除去する。
【００５４】
別の例では、マシン状態判断ユニット２４６は、アドレス空間（ＰＳＷ（１６：１７））及びＰＳＷ（５）の関数として、アクセス・レジスタ（ＡＲ−ｒｅｇ）ソースを分析する。データ・キャッシュ・アクセス・アドレスは、論理アドレスから絶対アドレスに変換される。オペランド・アクセスのために用いられる１つの変換モードは、アクセス・レジスタ・モード（ＡＲ−モード）変換である。このモードにおいて、ＡＲ−ｒｅｇコンテンツは、変換のために用いられる。ベース・レジスタ及び指標レジスタを有するＲＸ−ロード／ストアについては、フェッチ／ストアがＡＲ−モードで行われた場合、変換のためにＡＲ−ベースのコンテンツが必要とされる。ＡＲ−モードは、ＰＳＷ（１６：１７）＝“０１”として定められ、ＤＡＴビット（ＰＳＷ（５））又は他の制御状態のいずれかがアクティブである。従って、命令のデコード時に、マシン状態判断ユニット２４６は、キャッシュ・アクセスがＡＲ−モードにあるかどうかをチェックし、それに応じて、ＡＲ−ベースをソースとして設定する。従って、キャッシュ・アクセスがＡＲ−モードにない場合、ＡＲ−ベースは、ＡＧＥＮについてのソースとして識別されず、そのマッピングされた物理レジスタ番号を参照しないことにより、電力が節約され、より古い命令が、ＡＲ−ベースを更新している場合には、検出に対する命令の依存も除去される。
【００５５】
上の議論から分かるように、本発明の種々の好ましい実施形態は、デコードされた命令の処理を変更する。１つの好ましい実施形態において、デコードされた命令の処理は、識別されたマシン状態に基づいて命令を分割することによって変更することができ、命令は、識別されたマシン状態に基づいて短縮化することができ、及び／又は、命令は、識別されたマシン状態に基づいて、ミリコード化するように強制することができる。マシン状態は、アドレス・モード・ビット（ＰＳＷ（３１：３２））、アドレス空間ビット（ＰＳＷ（１６：１７））、問題状態ビット（ＰＳＷ（１５））のようなＰＳＷビットから判断することができる。命令の処理を変更する他のプロセッサ状態ビットは、ミリモード・ビット、スローモード・ビット、エミュレーション・アクティブ・ビット等を含む。また、実際の命令テキスト自体が「マシン状態」と考えられ、デコードされた命令の処理を変更するために用いられる。
【００５６】
動作フロー図
図７は、マシン状態に基づいて命令を分割する一例を示す動作フロー図である。図７の動作フロー図は、ステップ７０２で開始し、直接ステップ７０４に流れる。ステップ７０４において、ＩＤＵ２１４は、命令を受信する。ステップ７０６において、ＩＤＵ２１４は、命令をデコードする。ステップ７０８において、ＩＤＵ２１４は、マシン状態判断ユニット２４を介して、図２乃至図６に関して上述されたように現在のマシン状態を判断する。ステップ７０８の結果に応じて、図示されるようなｎ個の分割シーケンスから、１つの分割シーケンスを選択する。分割シーケンス１について、ステップ７１０において、ＩＤＵ２１４は、分割ユニット２４４を介して、少なくとも１つの命令を１組の操作単位に編成する。次にステップ７１２において、操作単位の組を実行する。次にステップ７１４において、制御の流れが終了する。分割シーケンス２についても同様に、ステップ７２０において、ＩＤＵ２１４は、分割ユニット２４４を介して、少なくとも１つの命令を１組の操作単位に編成する。次にステップ７２２において、操作単位の組を実行する。次にステップ７２４において、制御の流れが終了する。また、分割シーケンスＮについては、ステップ７３０において、ＩＤＵ２１４は、分割ユニット２４４を介して、少なくとも１つの命令を操作単位の組に編成する。次にステップ７３２において、操作単位の組を実行する。次にステップ７３４において、制御の流れが終了する。
【００５７】
限定されない例
本発明の特定の好ましい実施形態が開示されたが、当業者であれば、本発明の精神及び範囲から逸脱することなく、特定の好ましい実施形態に変更を行い得ることを理解するであろう。従って、本発明の範囲は、特定の好ましい実施形態に制限されるものではなく、添付の特許請求の範囲は、本発明の範囲内のありとあらゆるこうした用途、修正及び好ましい実施形態をカバーすることが意図される。
【００５８】
本発明の種々の例示的な好ましい実施形態が、完全に機能的なコンピュータ・システムの文脈において説明されたが、当業者であれば、種々の好ましい実施形態は、例えばＣＤ、ＣＤ  ＲＯＭ、又は他の形態の記録可能媒体などのＣＤ又はＤＶＤを介して、或いは、いずれかのタイプの電子伝送機構を介して、プログラム製品として分散させることが可能であることを理解するであろう。
【符号の説明】
【００５９】
１００：並列分散処理システム
１０２、１０４：処理ノード
１０６、１０８：ネットワーク・アダプタ
１１０、１１２：オペレーティング・システム・イメージ
１１４、１１６：チャネル・コントローラ
１１８、１２０：メモリ
１２２、１２４：プロセッサ
１２６、１２８：システム・メモリ・バス
１３０、１３２：システム入力／出力バス
１３４、１３６：Ｉ／Ｏアダプタ
１３８：ネットワーク・スイッチ
１４０：大容量記憶インターフェース
１４２：大容量記憶装置
１４４：ＣＤ
２００：プロセッサ・コア
２０２：バス・インターフェース・ユニット
２０４：Ｌ１データ・キャッシュ（Ｄキャッシュ）
２０６：Ｌ１命令キャッシュ（Ｉキャッシュ）
２０８：キャッシュ・インターフェース・ユニット
２１０：命令取り出しユニット（ＩＦＵ）
２１２：命令解読ユニット（ＩＤＵ）
２１４：命令シーケンサ・ユニット（ＩＳＵ）
２１６：固定小数点ユニット（ＦＸＵ）
２１８：浮動小数点ユニット（ＦＰＵ）
２２０：２進浮動小数点ユニット
２２１：１０進浮動小数点ユニット
２２２：グローバル完了テーブル（ＧＣＴ）
２２４：汎用レジスタ（ＧＰＲ）
２２６：浮動小数点レジスタ（ＦＰＲ）
２３０：ロード・ストア・ユニット（ＬＳＵ）
２３２：ロード・キュー（ＬＤＱ）
２３４：ストア・キュー（ＳＴＱ）
２３６：ストア・バッファ（ＳＴＢ）
２３８、２４０、２４２：エントリ
２４４：分割ユニット
２４６：マシン状態判断ユニット
２４８：命令短縮化ユニット
【図１】
2013521551.tif 000003
【図２】
2013521551.tif 000004
【図３】
2013521551.tif 000005
【図４】
2013521551.tif 000006
【図５】
2013521551.tif 000007
【図６】
2013521551.tif 000008
【図７】
2013521551.tif 000009
【国際調査報告】
2013521551.tif 000010
2013521551.tif 000011