(57)【要約】【課題】  入出力サブシステムにおいてアダプタ機能についての細分化された使用情報を捕獲し提示するための測定ファシリティを提供する。【解決手段】  アダプタに固有の入出力トラフィックを機能ごとに追跡し、その結果を動的にユーザに提示する。この情報は例えば、性能調整、負荷均衡化、および使用に基づいた課金のために有用である。【選択図】図２
2013538378.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境におけるリソース使用を測定する方法であって、
アダプタを識別するための機能ハンドルを含み、情報を追跡するためのメモリ内の位置を指定するＰＣＩ機能制御変更（ＭＰＦＣ）命令を実行することと、
前記コンピューティング環境のアダプタ機能が、前記アダプタ機能に結合されたシステム・メモリの命令によってアクセスされているか、またはアクセスを要求していると判定することと、
前記アダプタ機能に固有の情報を追跡することであって、前記追跡された情報が判定されたアクセス命令のカウントまたは判定されたメモリへのアクセス要求のカウントを含み、前記追跡された情報がアダプタ機能ごとのものである、ことと、
前記追跡された情報をメモリ内の前記位置に記憶することと、
を含む、方法。
【請求項２】
前記判定することが、前記アダプタ機能が命令によってアクセスされていると判定し、前記追跡することが、
前記命令のタイプを判定することと、
前記命令の前記タイプおよび前記アダプタ機能に対して排他的に与えられたカウンタを更新することと、
を更に含む、請求項１に記載の方法。
【請求項３】
ロード命令、記憶命令、記憶阻止命令、変更命令、およびリフレッシュ変換命令を含む複数のタイプの命令があり、それらの各々が前記アダプタ機能にアクセスするために個別に用いられる、請求項２に記載の方法。
【請求項４】
前記判定することが、前記アダプタ機能がメモリ・アクセス動作を要求していると判定し、前記追跡することが、
メモリ・アクセス動作のタイプを判定することと、
前記アダプタ機能および前記メモリ・アクセス動作の前記タイプに対して排他的に与えられたカウンタを更新することと、
を更に含む、請求項１に記載の方法。
【請求項５】
読み取りアクセスおよび書き込みアクセスを含む複数のタイプのメモリ・アクセス動作がある、請求項４に記載の方法。
【請求項６】
前記アダプタ機能に複数のアドレス空間が割り当てられ、前記カウンタが前記複数のアドレス空間の１つのアドレス空間に固有のものである、請求項４に記載の方法。
【請求項７】
前記追跡することが１つ以上のカウンタを更新することを含み、前記１つ以上のカウンタが、前記アダプタ機能に固有のものであり、前記アダプタ機能に関連付けられた入出力トラフィックを反映する、請求項１に記載の方法。
【請求項８】
前記方法が前記追跡された情報を自動的にユーザに提示することを更に含む、請求項１に記載の方法。
【請求項９】
前記追跡することが１つ以上のカウンタを更新することを含み、前記自動的に提示することが、前記ユーザにアクセス可能な制御ブロックを前記１つ以上のカウンタからの値で周期的に更新することを含む、請求項８に記載の方法。
【請求項１０】
前記方法が、前記アダプタ機能について追跡を実行するか否かを判定することを更に含み、追跡がアダプタ機能ごとにイネーブルされ、更に、追跡を実行するという判定に応答して前記追跡を実行することを含む、請求項１に記載の方法。
【請求項１１】
コンピューティング環境におけるリソース使用を測定するためのコンピュータ・システムであって、
メモリと、
前記メモリと通信状態にあるプロセッサと、
アダプタを識別するための機能ハンドルを含み、情報を追跡するためのメモリ内の位置を指定するＰＣＩ機能制御変更（ＭＰＦＣ）命令を実行するための実行器と、
前記コンピューティング環境のアダプタ機能が、前記アダプタ機能に結合されたシステム・メモリの命令によってアクセスされているか、またはアクセスを要求していると判定するための判定器と、
前記アダプタ機能に固有の情報を追跡するための追跡器であって、前記追跡された情報が判定されたアクセス命令のカウントまたは判定されたメモリへのアクセス要求のカウントを含み、前記追跡された情報がアダプタ機能ごとのものである、追跡器と、
前記追跡された情報をメモリ内の前記位置に記憶するための記憶器と、
を含む、コンピュータ・システム。
【請求項１２】
コンピュータ読み取り可能媒体上に記憶されたコンピュータ・プログラム・コードを含むコンピュータ・プログラムであって、コンピュータ・システムにロードされて実行された場合、請求項１から１０のいずれかに記載の方法の全てのステップを前記コンピュータ・システムに実行させる、コンピュータ・プログラム。
【請求項１３】
コンピューティング環境におけるリソース使用を測定するためのコンピュータ・システムであって、
メモリと、
前記メモリと通信状態にあるプロセッサと、を含み、前記コンピュータ・システムが、
アダプタを識別するための機能ハンドルを含み、情報を追跡するためのメモリ内の位置を指定するＰＣＩ機能制御変更（ＭＰＦＣ）命令を実行することと、
前記コンピューティング環境のアダプタ機能が、前記アダプタ機能に結合されたシステム・メモリの命令によってアクセスされているか、またはアクセスを要求していると判定することと、
前記アダプタ機能に固有の情報を追跡することであって、前記追跡された情報が判定されたアクセス命令のカウントまたは判定されたメモリへのアクセス要求のカウントを含み、前記追跡された情報がアダプタ機能ごとのものである、ことと、
前記追跡された情報をメモリ内の前記位置に記憶することと、
を含む方法を実行するように構成されている、コンピュータ・システム。
【請求項１４】
前記判定することが、前記アダプタ機能が命令によってアクセスされていると判定し、前記追跡することが、
前記命令のタイプを判定することと、
前記命令の前記タイプおよび前記アダプタ機能に対して排他的に与えられたカウンタを更新することと、
を更に含む、請求項１３に記載のコンピュータ・システム。
【請求項１５】
前記判定することが、前記アダプタ機能がメモリ・アクセス動作を要求していると判定し、前記追跡することが、
メモリ・アクセス動作のタイプを判定することと、
前記アダプタ機能および前記メモリ・アクセス動作の前記タイプに対して排他的に与えられたカウンタを更新することと、
を更に含む、請求項１３に記載のコンピュータ・システム。
【請求項１６】
前記アダプタ機能に複数のアドレス空間が割り当てられ、前記カウンタが前記複数のアドレス空間の１つのアドレス空間に固有のものである、請求項１５に記載のコンピュータ・システム。
【請求項１７】
前記方法が前記追跡された情報を自動的にユーザに提示することを更に含む、請求項１３に記載のコンピュータ・システム。
【請求項１８】
前記追跡することが１つ以上のカウンタを更新することを含み、前記自動的に提示することが、前記ユーザにアクセス可能な制御ブロックを前記１つ以上のカウンタからの値で周期的に更新することを含む、請求項１７に記載のコンピュータ・システム。
【請求項１９】
前記方法が、前記アダプタ機能について追跡を実行するか否かを判定することを更に含み、追跡がアダプタ機能ごとにイネーブルされ、更に、追跡を実行するという判定に応答して前記追跡を実行することを含む、請求項１３に記載のコンピュータ・システム。
【請求項２０】
コンピューティング環境におけるリソース使用を測定するためのコンピュータ・プログラムであって、
処理回路によって読み取り可能であり、請求項１から１０のいずれかに記載の方法を実行するために前記処理回路によって実行するための命令を記憶するコンピュータ読み取り可能記憶媒体を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に入出力処理に関し、具体的には、入出力処理に関連したリソース使用の測定に関する。
【背景技術】
【０００２】
大型コンピューティング・システムにおいては、多くの場合、入出力（Ｉ／Ｏ）インフラストラクチャを介したトラフィックに関する情報を提供する測定ファシリティが利用可能である。かかる情報は、プログラム性能の調整、負荷均衡化、更にリソース使用に基づいたユーザへの課金に有用である。
【０００３】
１つの特定の例として、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するＳｙｓｔｅｍ  ｚ（Ｒ）においては、Ｉ／Ｏインフラストラクチャを介して流れるトラフィックに関する情報を取得するユーティリティが提供され、これはチャネル・サブシステムと称される。チャネル・サブシステムは、複数のチャネル・タイプおよび様々なＩ／Ｏサブシステム伝送を通してチャネル・アクセスのための一貫したインタフェースを提供する。このインタフェースは、サブチャネル・コール開始命令とも称され、ユーザのためにファームウェアによって実行される。ファームウェアは、物理チャネルの詳細をユーザから隠し、リソース使用を追跡するための測定ユーティリティ等のユーティリティを与える。
【０００４】
しかしながら、他のＩ／Ｏインフラストラクチャでは、物理チャネルの詳細はユーザに露呈され、詳細を隠すインフラストラクチャが与えるファシリティは利用可能でない。
【０００５】
２００９年５月１４日に発表されたＦｒｅｋｉｎｇ等の「Ｄｙｎａｍｉｃａｌｌｙ  Ｓｃａｌａｂｌｅ  Ｑｕｅｕｅｓ  Ｆｏｒ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｄｒｉｖｅｎ  ＰＣＩ  Ｅｘｐｒｅｓｓ  Ｍｅｍｏｒｙ  Ｔｒａｆｆｉｃ」と題する米国特許出願公開第２００９／０１２５６６６Ａ１号は、データ処理システム内で方法を実施するためのコンピュータ・プログラム、および、ＩＯリンク上で様々なパケット・サイズまたは可変／異なる数のトランザクションあるいはその両方を含む多数の異なるＩＯ構成のための高性能ＩＯデータ伝送を可能とするためのＰＣＩ  Ｅｘｐｒｅｓｓプロトコルについて記載している。ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルは、カウンタの利用および動的に可変のキュー・サイズをサポートするように高度化される。標準的なキュー・エントリに加えて、いくつかの（または選択された数の）動的に可変のキュー・エントリを提供／予約し、高度化ＰＣＩ  Ｅｘｐｒｅｓｓプロトコル内で動的キュー変更（ＤＱＭ：ｄｙｎａｍｉｃ  ｑｕｅｕｅ  ｍｏｄｉｆｉｃａｔｉｏｎ）ユーティリティを与えて、進行中の現在のデータ転送を監視し、ＰＣＩ  Ｅｘｐｒｅｓｓ  ＩＯリンク上での現在のデータ・トラフィック送信に基づいてキュー・エントリのサイズ（複数のサイズ）をいつ変更する（拡大または縮小する）かを管理する。高度化ＰＣＩ  Ｅｘｐｒｅｓｓプロトコルは、多くの大きいデータ・パケットを効率的に伝送する平衡点を与えると共に、顕著なパケットの各サイズの数に制限を加える。
【０００６】
２００９年１０月６日に発行されたＣａｒｌｓｏｎ等の「Ｅｍｕｌａｔｉｏｎ  ｏｆ  Ｅｘｔｅｎｄｅｄ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｍｅａｓｕｒｅｍｅｎｔ  Ｂｌｏｃｋ  Ｆａｃｉｌｉｔｉｅｓ」と題する米国特許第７，６００，０５３号では、高度化入出力（Ｉ／Ｏ）測定ブロック・ファシリティをエミュレートする。ファシリティは、関連Ｉ／Ｏ測定データを収集し、そのデータを後に効率的に検索するために高度化測定ブロックに記憶することを可能とする。記憶したデータはＩ／Ｏサブチャネルの性能に関連する。
【０００７】
２００９年１２月８日に発行されたＭｏｃｈ等の「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｏｐｔｉｍｉｚｉｎｇ  ｔｈｅ  Ｒｅｓｐｏｎｓｉｖｅｎｅｓｓ  ａｎｄ  Ｔｈｒｏｕｇｈｐｕｔ  ｏｆ  ａ  Ｓｙｓｔｅｍ  Ｐｅｒｆｏｒｍｉｎｇ  Ｐａｃｋｅｔｉｚｅｄ  Ｄａｔａ  Ｔｒａｎｓｆｅｒｓ  Ｕｓｉｎｇ  ａ  Ｔｒａｎｓｆｅｒ  Ｃｏｕｎｔ  Ｍａｒｋ」と題する米国特許第７，６３１，０９７号は、送信および受信デバイスを含むシステムにおいてパケット化データ伝送を管理するための機構を記載している。送信デバイスは、複数のパケットで受信デバイスにデータを送信することができ、各パケットは所定数のデータ・バイト長である。送信デバイスは、送信されたデータ・バイト数に基づいてデータ伝送カウントを維持するための伝送カウント・ユニットを含むことができる。受信デバイスは、伝送カウント・マークにより送信デバイスをプログラムすることができる。このマークは、データ伝送カウントの特定のカウントに対応した数とすることができる。送信デバイスは、データ伝送カウントと伝送カウント・マークとの間の差を計算することができる。伝送カウントと伝送カウント・マークとの間の差が所定の数未満である場合、送信デバイスは所定数未満のデータ・バイトを有する短いデータ・パケットを受信デバイスに送信することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開第２００９／０１２５６６６Ａ１号
【特許文献２】米国特許第７，６００，０５３号
【特許文献３】米国特許第７，６３１，０９７号
【特許文献４】米国特許第５，５５１，０１３号
【特許文献５】米国特許第６，００９，２６１号
【特許文献６】米国特許第５，５７４，８７３号
【特許文献７】米国特許第６，３０８，２５５号
【特許文献８】米国特許第６，４６３，５８２号
【特許文献９】米国特許第５，７９０，８２５号
【非特許文献】
【０００９】
【非特許文献１】「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」と題するＩＢＭ（Ｒ）出版物（ＩＢＭ  Ｐｕｂｌｉｃａｔｉｏｎ  Ｎｏ．  ＳＡ２２−７８３２−０７、２００９年２月）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ＰＣＩ  Ｅｘｐｒｅｓｓ等の特定のＩ／Ｏインフラストラクチャは、サブシステム・アクティビティを測定するために標準的なインタフェースを規定しない。しかしながら、Ｉ／Ｏトラフィックを測定する能力は望ましい機能である。
【課題を解決するための手段】
【００１１】
従って、本発明の一態様に従って、ＰＣＩ機能等のアダプタ機能のための測定ファシリティが提供される。
【００１２】
コンピューティング環境においてリソース使用を測定するためのコンピュータ・プログラムを提供することによって、従来技術の欠点を克服し、利点を提供する。コンピュータ・プログラムは、処理回路によって読み取り可能であり、方法を実行するために処理回路によって実行するための命令を記憶するコンピュータ読み取り可能記憶媒体を含む。この方法は例えば、アダプタを識別するための機能ハンドルを含み、情報を追跡するためのメモリ内の位置を指定するＰＣＩ機能制御変更（ＭＰＦＣ）命令を実行することと、コンピューティング環境のアダプタ機能が、アダプタ機能に結合されたシステム・メモリの命令によってアクセスされているか、またはアクセスを要求していると判定することと、アダプタ機能に固有の情報を追跡することであって、追跡された情報が判定されたアクセス命令のカウントまたは判定されたメモリへのアクセス要求のカウントを含み、追跡された情報がアダプタ機能ごとのものである、ことと、追跡情報をメモリ内の位置に記憶することと、を含む。
【００１３】
本明細書において、本発明の１つ以上の態様に関連した方法およびシステムについても記載し、特許請求を行う。
【００１４】
更に別の特徴および利点が、本発明の技法によって実現される。本発明の他の実施形態および態様は、本明細書において詳細に記載され、特許請求する本発明の一部と見なされる。
【００１５】
本発明の１つ以上の態様について特に指摘し、本明細書の最後で特許請求の範囲において一例として明確に特許請求する。本発明の前述および他の目的、特徴、および利点は、添付図面と関連付けて以下の詳細な説明を読むことから明らかになろう。
【図面の簡単な説明】
【００１６】
【図１】本発明の１つ以上の態様を組み込んで用いるためのコンピューティング環境の一実施形態を示す。
【図２】本発明の一態様に従った、命令を追跡するための論理の一実施形態を示す。
【図３】本発明の一態様に従った、機能に関連付けられたカウンタの一実施形態を示す。
【図４】本発明の一態様に従った、アダプタ機能からＤＭＡ読み取りおよび書き込みを追跡するために用いられる伝送カウンタの一実施形態を示す。
【図５】本発明の一態様に従った、ＤＭＡ動作を追跡するための論理の一実施形態を示す。
【図６】本発明の一態様に従った、アダプタ機能のための測定制御ブロックの一実施形態を示す。
【図７】本発明の一態様に従って用いられるＰＣＩ機能制御変更命令の一実施形態を示す。
【図８】本発明の一態様に従った、図７のＰＣＩ機能制御変更命令により用いられるフィールドの一実施形態を示す。
【図９】本発明の一態様に従った、図７のＰＣＩ機能制御変更命令により用いられる別のフィールドの一実施形態を示す。
【図１０】本発明の一態様に従って用いられる機能情報ブロック（ＦＩＢ）の内容の一実施形態を示す。
【図１１】本発明の一態様に従った、ＰＣＩ機能制御変更命令の論理の概要の一実施形態を示す。
【図１２】本発明の一態様に従った、ＰＣＩ機能制御変更命令により指定することができる設定ＰＣＩ機能測定パラメータ動作の論理の一実施形態を示す。
【図１３】本発明の一態様に従って用いられるＰＣＩロード命令の一実施形態を示す。
【図１４】本発明の一態様に従った、図１３のＰＣＩロード命令により用いられるフィールドの一実施形態を示す。
【図１５】本発明の一態様に従った、図１３のＰＣＩロード命令により用いられる別のフィールドの一実施形態を示す。
【図１６】本発明の一態様に従った、ＰＣＩロード動作を実行するための論理の一実施形態を示す。
【図１７】本発明の一態様に従った、ＰＣＩロード動作を実行するための論理の一実施形態を示す。
【図１８】本発明の一態様に従って用いられるＰＣＩ記憶命令の一実施形態を示す。
【図１９】本発明の一態様に従った、図１８のＰＣＩ記憶命令により用いられるフィールドの一実施形態を示す。
【図２０】本発明の一態様に従った、図１８のＰＣＩ記憶命令により用いられる別のフィールドの一実施形態を示す。
【図２１】本発明の一態様に従った、ＰＣＩ記憶動作を実行するための論理の一実施形態を示す。
【図２２】本発明の一態様に従った、ＰＣＩ記憶動作を実行するための論理の一実施形態を示す。
【図２３】本発明の一態様に従って用いられるＰＣＩ記憶阻止命令の一実施形態を示す。
【図２４】本発明の一態様に従った、図２２のＰＣＩ記憶阻止命令により用いられるフィールドの一実施形態を示す。
【図２５】本発明の一態様に従った、図２２のＰＣＩ記憶阻止命令により用いられる別のフィールドの一実施形態を示す。
【図２６】本発明の一態様に従った、図２２のＰＣＩ記憶阻止命令により用いられる更に別のフィールドの一実施形態を示す。
【図２７】本発明の一態様に従った、ＰＣＩ記憶阻止動作を実行するための論理の一実施形態を示す。
【図２８】本発明の一態様に従った、ＰＣＩ記憶阻止動作を実行するための論理の一実施形態を示す。
【図２９】本発明の１つ以上の態様を組み込んだコンピュータ・プログラムの一実施形態を示す。
【図３０】本発明の１つ以上の態様を組み込んで用いるためのホスト・コンピュータ・システムの一実施形態を示す。
【図３１】本発明の１つ以上の態様を組み込んで用いるためのコンピュータ・システムの更に別の例を示す。
【図３２】本発明の１つ以上の態様を組み込んで用いるためのコンピュータ・ネットワークを含むコンピュータ・システムの別の例を示す。
【図３３】本発明の１つ以上の態様を組み込んで用いるためのコンピュータ・システムの様々な要素の一実施形態を示す。
【図３４】本発明の１つ以上の態様を組み込んで用いるための図３２のコンピュータ・システムの実行ユニットの一実施形態を示す。
【図３５】本発明の１つ以上の態様を組み込んで用いるための図３２のコンピュータ・システムの分岐ユニットの一実施形態を示す。
【図３６】本発明の１つ以上の態様を組み込んで用いるための図３２のコンピュータ・システムのロード／記憶ユニットの一実施形態を示す。
【図３７】本発明の１つ以上の態様を組み込んで用いるためのエミュレートされたホスト・コンピュータ・システムの一実施形態を示す。
【発明を実施するための形態】
【００１７】
本発明の一態様によれば、ＰＣＩ  Ｅｘｐｒｅｓｓアダプタ等のアダプタを含む入出力（Ｉ／Ｏ）サブシステムにおいてアダプタ機能についての細分化された使用情報を捕獲し提示するための測定ファシリティが提供される。この情報は例えば、性能調整、負荷均衡化、および使用に基づいた課金のために有用である。１つの特定の例では、アダプタに固有のＩ／Ｏトラフィックをアダプタ機能ごとに追跡し、その結果を動的にユーザに提示する。例えば、アダプタ機能ごとに、アダプタ・アクセス命令を追跡し、直接メモリ・アクセス・トラフィックを集計する。アクセス命令は、例えばプロセッサのファームウェアによって追跡され、直接メモリ・アクセス・トラフィックは、例えばハードウェア・カウンタによって集計される。Ｉ／Ｏサブシステムは、ユーザに指定されたメモリ位置で制御ブロックを更新することによって、測定値を動的にユーザに提示する。測定はデバイスに依存せず、この場合、デバイスのタイプ（例えばアダプタ）は前もって知る必要はない。  
【００１８】
本明細書において用いる場合、アダプタという言葉は、いかなるタイプのアダプタも含む（例えば記憶アダプタ、ネットワーク・アダプタ、処理アダプタ、ＰＣＩアダプタ、暗号アダプタ、他のタイプの入出力アダプタ等）。一実施形態において、１つのアダプタは１つのアダプタ機能を含む。しかしながら、他の実施形態では、１つのアダプタが複数のアダプタ機能を含むことができる。１つのアダプタが１つのアダプタ機能を含む場合であっても複数のアダプタ機能を含む場合であっても、本発明の１つ以上の態様を適用可能である。更に、本明細書に提示する例において、特に注記しない限り、アダプタはアダプタ機能（例えばＰＣＩ機能）と相互交換可能に用いられる。
【００１９】
図１を参照して、本発明の１つ以上の態様を組み込んで用いるコンピュータ環境の一実施形態について説明する。一例において、コンピューティング環境１００は、インターナショナル・ビジネス・マシーンズ・コーポレーションによって提供されるＳｙｓｔｅｍ  ｚ（Ｒ）サーバである。Ｓｙｓｔｅｍ  ｚ（Ｒ）は、インターナショナル・ビジネス・マシーンズ・コーポレーションが提供するｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に基づいている。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）に関する詳細は、「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」と題するＩＢＭ（Ｒ）出版物（ＩＢＭ  Ｐｕｂｌｉｃａｔｉｏｎ  Ｎｏ．  ＳＡ２２−７８３２−０７、２００９年２月）に記載されている。ＩＢＭ（Ｒ）、Ｓｙｓｔｅｍ  ｚ（Ｒ）、およびｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）は、インターナショナル・ビジネス・マシーンズ・コーポレーション（ニューヨーク州アーモンク）の登録商標である。本明細書において用いる他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーションおよび他の企業の登録商標、商標、または製品名である場合がある。
【００２０】
一例において、コンピューティング環境１００は、１つ以上の中央処理装置（ＣＰＵ）１０２を含み、これはメモリ・コントローラ１０６を介してシステム・メモリ１０４（メイン・メモリとも称される）に結合されている。システム・メモリ１０４にアクセスするため、中央処理装置１０２は、システム・メモリにアクセスするための用いられるアドレスを含む読み取りまたは書き込み要求を発行する。この要求に含まれるアドレスは典型的に、システム・メモリにアクセスするために直接用いることができないので、システム・メモリに対するアクセスにおいて直接に使用可能なアドレスに変換される。アドレスは変換機構（ＸＬＡＴＥ）１０８を介して変換される。例えば、アドレスは、動的アドレス変換（ＤＡＴ：ｄｙｎａｍｉｃ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）を用いて仮想アドレスから実アドレスまたは絶対アドレスに変換される。
【００２１】
アドレス（必要な場合は変換されている）を含む要求は、メモリ・コントローラ１０６によって受信される。一例において、メモリ・コントローラ１０６はハードウェアから構成され、システム・メモリに対するアクセスのアービトレーションを行うためおよびメモリの一貫性を維持するために用いられる。このアービトレーションは、ＣＰＵ１０２から受信した要求に対して、および１つ以上のアダプタ１１０から受信した要求に対して実行される。中央処理装置と同様に、アダプタは、システム・メモリに対するアクセスを得るための要求をシステム・メモリ１０４に発行する。
【００２２】
一例において、アダプタ１１０は、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）またはＰＣＩ  Ｅｘｐｒｓｅｓ（ＰＣＩｅ）アダプタであり、１つ以上のＰＣＩ機能１１１を含む。ＰＣＩ機能は、１つ以上のスイッチ（例えばＰＣＩｅスイッチ）１１４を介して入出力ハブ１１２（例えばＰＣＩハブ）にルーティングされる要求を発行する。一例において、入出力ハブは、１つ以上の状態機械を含むハードウェアから構成され、Ｉ／Ｏ−メモリ・バス１２０を介してメモリ・コントローラ１０６に結合されている。
【００２３】
入出力ハブは例えば、スイッチから要求を受信するルート複合体１０６を含む。要求は入出力アドレスを含み、これはアドレス変換および保護ユニット１８に与えられ、このユニット１１８は、要求に用いられる情報にアクセスする。一例として、要求は、直接メモリ・アクセス（ＤＭＡ）動作の実行またはメッセージ信号割込み（ＭＳＩ）の要求に用いられる入出力アドレスを含むことができる。アドレス変換および保護ユニット１１８は、ＤＭＡまたはＭＳＩ要求に用いられる情報にアクセスする。具体的な例として、ＤＭＡ動作では、アドレスを変換するために情報を取得することができる。次いで、変換されたアドレスをメモリ・コントローラに転送して、システム・メモリにアクセスする。
【００２４】
一例において、アダプタ機能が発行したＤＭＡまたはＭＳＩ要求のために用いられる情報は、Ｉ／Ｏハブ内（例えばアドレス変換および保護ユニット）に位置するデバイス・テーブル・エントリから取得される。デバイス・テーブル・エントリはアダプタ機能のための情報を含み、各アダプタ機能には少なくとも１つのデバイス・テーブル・エントリが関連付けられている。例えば、アダプタ機能に割り当てられたアドレス空間当たり１つのデバイス・テーブル・エントリがある。アダプタ機能から発行された要求では、この要求において与えられる要求側ＩＤ（例えばバス番号、デバイス番号、および機能番号を指定する）を用いて、デバイス・テーブル・エントリの位置を特定する。
【００２５】
アダプタ、特に要求を発行するアダプタ機能に加えて、プロセッサ１０２により、アダプタ、特にアダプタ機能にアクセスすることができる。このアクセスは、プロセッサが発行した命令を介して行われる。この例では、命令はＩ／Ｏインフラストラクチャに固有のものである。すなわち、Ｉ／ＯインフラストラクチャがＰＣＩまたはＰＣＩｅに基づく場合、命令はＰＣＩ命令である。例示的なＰＣＩ命令は、少数の例を挙げると、ＰＣＩロード、ＰＣＩ記憶、ＰＣＩ記憶阻止、ＰＣＩ変更、およびＰＣＩリフレッシュ変換を含む。一例ではＩ／Ｏインフラストラクチャおよび命令はＰＣＩに基づくが、他の実施形態では他のインフラストラクチャおよび対応する命令を用いることも可能である。
【００２６】
プロセッサがアダプタ機能に対して発行した要求では、アダプタ機能に関連付けられた機能テーブル・エントリが参照される。機能テーブル・エントリは、セキュア・メモリに記憶され、機能ハンドルを用いて位置が特定されるものであり、アダプタ機能の特徴を含む。一例では、機能ハンドルは、このハンドルがイネーブルされているか否かを示すイネーブル・インジケータと、機能を識別する機能番号（これは静的識別子であり、機能テーブルに対するインデックスとして用いることができる）と、この機能ハンドルの特定のインスタンスを指定するインスタンス番号と、を含む。
【００２７】
本発明の一態様に従って、機能ごとに（本明細書ではアダプタ機能および機能を交換可能に用いる）、１つ以上のＰＣＩ固有の命令の実行を自動的にカウントし、アダプタ機能によってシステム・メモリとの間で伝送したデータ量を測定する機能が提供される。更に、現在の測定値によってシステム・メモリを周期的に動的に更新するための機能が提供される。
【００２８】
図２を参照して、ＰＣＩアクセス命令を追跡するための論理の一実施形態について説明する。アクセス命令は、アダプタ機能（例えばアダプタ機能のアドレス空間）にアクセスするか、またはアダプタ機能のためのアクションを実行する（例えばデバイス・テーブル・エントリをポピュレートまたは変更する）命令である。一例においては、これらの命令はプロセッサのファームウェアによって実施され、従ってファームウェアは命令の追跡を実行している。本明細書において用いる場合、ファームウェアは例えば、プロセッサのマイクロコード、ミリコード、またはマクロコードあるいはそれら全てを含む。これは例えば、より高いレベルの機械コードの実施に用いられるハードウェア・レベルの命令またはデータ構造あるいはその両方を含む。一実施形態において、これは例えば、基礎にあるハードウェアに固有の信頼できるソフトウェアまたはマイクロコードを含み、システム・ハードウェアに対するオペレーティング・システムのアクセスを制御するマイクロコードとして典型的に提供される自社開発コードを含む。
【００２９】
図２を参照すると、まず、命令実行の主体が完了する（ステップ２００）。すなわち、指定されたアダプタ動作を実行するためにプロセッサが発行したロード、記憶、記憶阻止、変更、またはリフレッシュ、変換命令等のＰＣＩ命令を実行し、その命令の主体が完了する。
【００３０】
その後、命令の主体の実行が成功したか否かを判定する（問い合わせ２０２）。この判定は例えば、命令に関連付けられたステータス（例えばＩ／Ｏハブにより戻される）を調べることによって行われる。実行が成功でなかった場合、命令実行は完了し（ステップ２０４）、この実施形態では、その命令について追跡は行わない。（他の実施形態では失敗した命令もカウントする場合がある。）しかしながら、実行が成功した場合には、このアダプタ機能について測定がイネーブルされているか否かを更に判定する（問い合わせ２０６）。すなわち、一例では、アダプタ機能に関連付けられた制御ブロック内の測定イネーブル・インジケータを設定することによって、アダプタ機能ごとに測定をイネーブルすることができる。測定がイネーブルされていない場合、この場合も追跡せずに命令実行が完了する（ステップ２０４）。
【００３１】
しかしながら、この機能について測定がイネーブルされている場合は、セキュア・メモリからこの機能についての命令使用カウンタを検索する（ステップ２０８）。例えば一実施形態においては、各機能に対して複数のカウンタがある。図３に示すように、機能Ａは、例えばロード・カウンタ３１０、記憶カウンタ３１２、記憶阻止カウンタ３１４、機能変更カウンタ３１６、およびリフレッシュ変換カウンタ３１８等の複数のカウンタを含む。これらのカウンタの各々は、ＰＣＩ機能にアクセスするために使用可能であり追跡することが望ましいＰＣＩ命令のタイプに対応する。どのタイプの命令が実行されたかについて判定を行い、実行が成功したばかりの命令に対応するカウンタを検索する。例えば、これが実行されたロード命令であった場合、セキュア・メモリからロード・カウンタ３１０を検索する。他の実施形態では、これよりも多いか、少ないか、またはこれとは異なるカウンタまたは命令あるいはその両方の使用または追跡あるいはその両方を行うことも可能である。
【００３２】
図２に戻ると、適切な命令使用カウンタの検索に続いて、これを（例えば１だけ）増分し、セキュア・メモリに記憶する（ステップ２１０）。これによって命令実行は完了する（ステップ２０４）。
【００３３】
命令追跡に加えて、本発明の一態様に従って、ＤＭＡ動作も追跡される。具体的には、機能当たりのデータ伝送量を集計する。典型的に、ＤＭＡ動作は前述の命令カウント機構を用いておりＣＰＵに可視的でないので、代替的な技法を用いる。例えば図４に示すように、ＰＣＩ機能１１０がＤＭＡ書き込みまたは読み出し動作を発行した場合、これは１つ以上のスイッチ１１４を介してＩ／Ｏハブ１１２において受信される。所与のＰＣＩ機能からＰＣＩ読み取りまたは書き込みパケットをＩ／Ｏハブで受信したことに応答して、ハブ内、特にルート複合体１１６内のデータ伝送カウンタ４００は、データ伝送のサイズに従って増分される。１つの特定の例では、各ＰＣＩ機能について一意の読み取りおよび書き込みデータ伝送カウンタ・セットを維持する。これらのカウンタは例えば伝送されたバイト数を追跡する。例えばＤＭＡ動作が読み取り動作である場合、読み取ったバイト数によって読み取りカウンタを更新する。同様に、ＤＭＡ動作が書き込み動作である場合、書き込んだバイト数によって書き込みカウンタを更新する。一例では、カウンタはハードウェア・カウンタである（例えば３２バイト粒度上の３２ビット・カウンタ）。
【００３４】
図５を参照して、ＤＭＡ動作の追跡に関して更に詳細に説明する。一例においては、この論理を実行するのはＩ／Ｏハブである。図５に示すように、まず、ＰＣＩ機能からのＤＭＡ要求をＩ／Ｏハブにおいて受信する（ステップ４５０）。このＰＣＩ機能について測定がイネーブルされているか否かについて判定を行う（問い合わせ４５２）。すなわち、測定は特定のアダプタ機能についてイネーブルされている。この判定は、機能に関連付けられたインジケータを調べることによって行われる。測定イネーブル・インジケータが設定されていない場合、ＤＭＡ動作の追跡は完了する。しかしながら、この特定のＰＣＩ機能について測定がイネーブルされている場合、処理されている要求のタイプについて判定を行う（ステップ４５４）。すなわち、要求が読み取り要求であるかまたは書き込み要求であるかである。更に、メッセージ信号割込または他のもの等、他のタイプの動作をカウントすることも可能である。
【００３５】
要求のタイプに基づいて、そのタイプおよびこの機能のためのカウンタを選択して更新する（ステップ４５８）。一例では、これはＤＭＡ処理と並行して行われる。これによってＤＭＡ要求の追跡が完了する。
【００３６】
上述のことに加えて、本発明の一態様によれば、各ＰＣＩ機能についてシステム・メモリ内に測定制御ブロックがあり、これは周期的に（例えば４秒ごとに）動的に更新される。例えば、ファームウェアは、１つ以上のアダプタ機能についての１つ以上の制御ブロックを、機能の測定値の周期的サンプリングによって自動的に更新する。例えば、ファームウェアは、Ｉ／Ｏハブからカウンタを周期的に読み取り、それらを測定制御ブロック内の累積カウントに加える。
【００３７】
図６に測定制御ブロック５００の一実施形態を示す。図示のように、この例では、測定制御ブロック５００は例えば以下を含む様々なパラメータを含む。
【００３８】
サンプル・カウント５０２：このフィールドは、Ｉ／Ｏサブシステムが測定制御ブロックを更新するたびに増分される。
【００３９】
記憶動作フィールド５０４：このフィールドは、この制御ブロックに関連付けられたＰＣＩ機能のために実行された記憶命令の更新値である。このフィールドは、このフィールドの値に記憶カウンタ３１２内の値を加えることによって更新される。
【００４０】
この制御ブロック内のフィールド（サンプル・カウント・フィールドを除く）は、所与の時間期間にわたって累積するか、または各サンプリング周期の後にリセットして１サンプリング周期のカウントを値が反映するようにすることができる。累積周期はポリシーに基づいて規定され、再構成することができる。
【００４１】
ロード動作フィールド５０６：このフィールドは、このＰＣＩ機能のためのロード動作のカウントを含む。このフィールドは、このフィールドの値にロード・カウンタ３１０内の値を加えることによって更新される。
【００４２】
記憶阻止動作フィールド５０８：このフィールドは、このＰＣＩ機能のための記憶阻止動作のカウントを含む。このフィールドは、このフィールドの値に記憶阻止カウンタ３１４内の値を加えることによって更新される。
【００４３】
リフレッシュ変換動作フィールド５１０：このフィールドは、このＰＣＩ機能のためのリフレッシュ変換命令のカウントを含む。このフィールドは、このフィールドの値にリフレッシュ変換カウンタ３１８内の値を加えることによって更新される。リフレッシュ変換命令を用いて、アダプタによって用いられた変換情報を更新する。
【００４４】
ＤＭＡ読み取り／書き込みカウンタ（複数のカウンタ）５１２：このフィールドは、このＰＣＩ機能のための読み取りおよび書き込みカウンタの更新情報を更に含む。この例では、これらのカウンタは６４ビット・カウンタである。例えば、Ｉ／Ｏハブから伝送カウンタ４００を周期的に検索し、これを用いてＤＭＡ読み取り／書き込みカウンタ５１２を更新する。
【００４５】
また、指定された時間間隔で、測定ブロック内の各フィールドが動的に更新される。サンプルのカウント・フィールドを増分し、他の各フィールドの更新は、制御ブロック内の値を加えるか、セキュア・メモリ内の対応するカウンタにより置換することによって行う。
【００４６】
１つの特定の例において、ＰＣＩ機能は、このために規定された１つ以上のアドレス空間を有することができ、従ってルート複合体は、機能の各アドレス空間について１対の読み取り／書き込みカウンタを含む。同様に、そのＰＣＩ機能の測定ブロックは、各アドレス空間についてカウンタの読み取り／書き込み対を含む。
【００４７】
ある機能について測定ファシリティをイネーブルするために、一例においては、オペレーティング・システムが、ＰＣＩ機能制御変更命令と称する測定登録命令を実行する。この命令の実行を用いて、測定制御ブロックのためのシステム・メモリ内のアドレスおよびその位置にアクセスするために用いられるキーについて、Ｉ／Ｏサブシステムに知らせる。１つの特定の例では、この命令も追跡することができ、従って測定制御ブロック内にこの命令のためのフィールドがあり、更にセキュア・メモリ内にカウンタがある（例えば機能変更カウンタ３１６を参照）。
【００４８】
ここで、ＰＣＩ機能制御変更命令に関する詳細を更に記載する。図７を参照すると、ＰＣＩ機能制御変更命令６００は例えば、ＰＣＩ機能制御変更命令を示す操作符号６０２、動作パラメータが確立されているアダプタ機能に関する様々な情報を含む位置を指定する第１のフィールド６０４、および、ＰＣＩ機能情報ブロック（ＦＩＢ）をフェッチする位置を指定する第２のフィールド６０６を含む。フィールド１および２が指定する位置の内容について以下で更に説明する。
【００４９】
一実施形態において、フィールド１は、様々な情報を含む一般的なレジスタを示す。図８に示すように、レジスタの内容は、例えば、変更命令が実行されているアダプタ機能のハンドルを識別する機能ハンドル６１０、機能ハンドルが指定するアダプタ機能に関連付けられたシステム・メモリ内のアドレス空間を指定するアドレス空間６１２、アダプタ機能のために実行される動作を指定する動作制御６１４、および、命令が既定のコードによって完了した場合に命令に関するステータスを与えるステータス６１６を含む。
【００５０】
一実施形態において、機能ハンドルは例えば、ハンドルがイネーブルされているか否かを示すイネーブル・インジケータ、アダプタ機能を識別する機能番号（これは静的識別子であり、機能テーブルに対するインデックスのための用いることができる）、および、この機能ハンドルの特定のインスタンスを指定するインスタンス番号を含む。各アダプタ機能について１つの機能ハンドルがあり、これを用いて機能テーブル内の機能テーブル・エントリ（ＦＴＥ）の位置を特定する。各機能テーブル・エントリは、そのアダプタ機能に関連付けられた動作パラメータまたは他の情報あるいはその両方を含む。一例として、機能テーブル・エントリは以下を含む。
【００５１】
インスタンス番号。このフィールドは、機能テーブル・エントリに関連付けられたアダプタ機能ハンドルの特定のインスタンスを示す。
【００５２】
デバイス・テーブル・エントリ（ＤＴＥ）・インデックス１〜ｎ。１つ以上のデバイス・テーブル・インデックスがある場合があり、各インデックスは、デバイス・テーブル・エントリ（ＤＴＥ）の位置を特定するためのデバイス・テーブルに対するインデックスである。アダプタ機能当たり１つ以上のデバイス・テーブル・エントリがあり、各エントリはそのアダプタ機能に関連付けられた情報を含み、これは、アダプタ機能の要求（例えばＤＭＡ要求、ＭＳＩ要求）を処理するために用いられる情報、およびアダプタ機能に関連付けられた要求（例えばＰＣＩ命令）に関連する情報を含む。各デバイス・テーブル・エントリは、アダプタ機能に割り当てられたシステム・メモリ内の１つのアドレス空間に関連付けられている。１つのアダプタ機能は、アダプタ機能に割り当てられたシステム・メモリ内に１つ以上のアドレス空間を有する場合がある。
【００５３】
ビジー・インジケータ。このフィールドは、アダプタ機能がビジーであるか否かを示す。
【００５４】
パラメータ・エラー状態インジケータ。このフィールドは、アダプタ機能がパラメータ・エラー状態であるか否かを示す。
【００５５】
回復開始インジケータ。このフィールドは、アダプタ機能のために回復が開始されたか否かを示す。
【００５６】
許可インジケータ。このフィールドは、アダプタ機能の制御を試みているオペレーティング・システムがそうする権限を有するか否かを示す。
【００５７】
イネーブル・インジケータ。このフィールドは、アダプタ機能がイネーブルされているか否かを示す（例えば１＝イネーブル、０＝ディセーブル）。
【００５８】
要求側識別子（ＲＩＤ）。これは、アダプタ機能の識別子であり、例えばバス番号、デバイス番号、および機能番号を含む。
【００５９】
一例において、このフィールドは、アダプタ機能の構成空間のアクセスのために用いられる。（アダプタのメモリは、例えば構成空間、Ｉ／Ｏ空間、または１つ以上のメモリ空間あるいはそれら全てを含むアドレス空間として画定することができる。）一例では、構成空間は、オペレーティング・システム（または他の構成）によってアダプタ機能に発行された命令において構成空間を指定することによってアクセスすることができる。この命令に指定されているのは、構成空間に対するオフセット、および、ＲＩＤを含む適切な機能テーブル・エントリの位置を特定するために用いられる機能ハンドルである。ファームウェアは、命令を受信し、これが構成空間のためのものであると判定する。従って、これはＲＩＤを用いてＩ／Ｏハブに対する要求を発生し、Ｉ／Ｏハブはアダプタにアクセスするための要求を生成する。アダプタ機能の位置はＲＩＤに基づいており、オフセットはアダプタ機能の構成空間に対するオフセットを指定する。
【００６０】
ベース・アドレス・レジスタ（ＢＡＲ）（１からｎ）。このフィールドは、ＢＡＲ０〜ＢＡＲｎと示される複数の符号なし整数を含み、これらは最初に指定されたアダプタ機能に関連付けられ、それらの値はアダプタ機能に関連付けてベース・アドレス・レジスタに記憶される。各ＢＡＲは、アダプタ機能内のメモリ空間またはＩ／Ｏ空間の開始アドレスを指定し、更にアドレス空間のタイプを示す。すなわち、例えばこれが６４または３２ビット・メモリ空間であるか、または３２ビットＩ／Ｏ空間であるかを示す。
【００６１】
一例において、これは、アダプタ機能のメモリ空間またはＩ／Ｏ空間あるいはその両方にアクセスするために用いられる。例えば、アダプタ機能にアクセスするための命令に与えられたオフセットを、命令において指定されたアドレス空間に関連付けられたベース・アドレス・レジスタ内の値に加えて、アダプタ機能にアクセスするために用いるアドレスを取得する。命令において与えられたアドレス空間識別子は、アクセスされるアダプタ機能内のアドレス空間および対応して用いられるＢＡＲを識別する。
【００６２】
サイズ１〜ｎ：このフィールドは、ＳＩＺＥ０〜ＳＩＺＥｎと表される複数の符号なしの整数を含む。サイズ・フィールドの値は、非ゼロの場合、各アドレス空間のサイズを表し、各エントリが前述のＢＡＲに対応する。
【００６３】
以下で、ＢＡＲおよびサイズに関する詳細を更に説明する。
【００６４】
１．アダプタ機能についてＢＡＲが実施されていない場合、ＢＡＲフィールドおよびその対応するサイズ・フィールドは双方ともゼロとして記憶される。
【００６５】
２．ＢＡＲフィールドがＩ／Ｏアドレス空間または３２ビット・メモリ・アドレス空間のいずれかを表す場合、対応するサイズ・フィールドは非ゼロであり、アドレス空間のサイズを表す。
【００６６】
３．ＢＡＲフィールドが６４ビット・メモリ・アドレス空間を表す場合、
ａ．ＢＡＲｎフィールドは最下位アドレス・ビットを表す。
ｂ．次に続くＢＡＲｎ＋１フィールドは最上位アドレス・ビットを表す。
ｃ．対応するＳＩＺＥｎフィールドは非ゼロであり、アドレス空間のサイズを表す。
ｄ．対応するＳＩＺＥｎ＋１フィールドは無意味であり、ゼロと記憶される。
【００６７】
内部ルーティング情報：この情報を用いて、アダプタに対する特定のルーティングを実行する。これは、例えば一例として、ノード、プロセッサ・チップ、およびハブ・アドレス指定情報を含む。
【００６８】
ステータス指示：これは、例えば、ロード／記憶動作が阻止されているかまたはアダプタがエラー状態にあるか否かの指示ならびに他の指示を提供する。
【００６９】
一例において、ビジー・インジケータ、永続エラー状態インジケータ、および回復開始インジケータは、ファームウェアにより実行される監視に基づいて設定される。更に、許可インジケータは、例えばポリシーに基づいて設定される。ＢＡＲ情報は、プロセッサ（例えばプロセッサのファームウェア）によるバス・ウォークの間に発見された構成情報に基づいている。他のフィールドは、構成、初期化、またはイベントあるいはそれら全てに基づいて設定することができる。他の実施形態では、機能テーブル・エントリは、これよりも多いか、少ないか、またはこれとは異なる情報を含むことができる。含まれる情報は、アダプタ機能によってサポートされるかまたはアダプタ機能のためにイネーブルされる動作に応じて異なる場合がある。
【００７０】
図９参照すると、一例において、フィールド２はＰＣＩ機能情報ブロック（ＦＩＢ）の論理アドレス６２０を示し、これは関連付けられたアダプタ機能に関する情報を含む。情報機能ブロックを用いて、アダプタ機能に関連付けられたデバイス・テーブル・エントリまたは機能テーブル・エントリあるいはその両方（または他の位置）を更新する。情報は、アダプタの初期化または構成あるいはその両方の間に、または特定のイベントに応答して、あるいはその両方で、ＦＩＢに記憶される。
【００７１】
図１０を参照して、機能情報ブロック（ＦＩＢ）に関する詳細を更に説明する。一実施形態において、機能情報ブロック６５０は以下のフィールドを含む。
【００７２】
フォーマット６５１：このフィールドはＦＩＢのフォーマットを指定する。
【００７３】
インターセプト制御６５２：このフィールドを用いて、ページ可能モード・ゲストによる特定の命令のゲスト実行が命令のインターセプトを引き起こすか否かを示す。
【００７４】
エラー指示６５４：このフィールドは、直接メモリ・アクセスおよびアダプタ割込のためのエラー状態指示を含む。ビットがセットされている場合（例えば１）、アダプタ機能について直接メモリ・アクセスまたはアダプタ割込を実行している間に１つ以上のエラーが検出されている。
【００７５】
ロード／記憶阻止６５６：このフィールドは、ロード／記憶動作が阻止されているか否かを示す。
【００７６】
ＰＣＩ機能有効６５８：このフィールドは、アダプタ機能についてのイネーブル制御を含む。ビットがセットされている場合（例えば１）、アダプタ機能はＩ／Ｏ動作についてイネーブルされていると見なされる。
【００７７】
アドレス空間登録６６０：このフィールドは、アダプタ機能についての直接メモリ・アクセス・イネーブル制御を含む。フィールドがセットされている場合（例えば１）、直接メモリ・アクセスがイネーブルされている。
【００７８】
ページ・サイズ６６１：このフィールドは、ＤＭＡメモリ・アクセスによってアクセスされるメモリのページまたは他のユニットのサイズを示す。
【００７９】
ＰＣＩベース・アドレス（ＰＢＡ）６６２：このフィールドは、アダプタ機能に割り当てられたシステム・メモリにおけるアドレス空間のためのベース・アドレスである。これは、指定されたＤＭＡアドレス空間に対する直接メモリ・アクセスのためにアダプタ機能を用いることができる最下位仮想アドレスを表す。
【００８０】
ＰＣＩアドレス限界（ＰＡＬ）６６４：このフィールドは、指定されたＤＭＡアドレス空間内でアダプタ機能がアクセスすることができる最上位仮想アドレスを表す。
【００８１】
入出力アドレス変換ポインタ（ＩＯＡＴ）６６６：入出力アドレス変換ポインタは、ＰＣＩ仮想アドレス変換によって用いられるいずれかの変換テーブルの第１のものを示し、またはこれは、変換の結果である記憶のフレームの絶対アドレスを直接示すことができる。
【００８２】
割込サブクラス（ＩＳＣ）６６８：このフィールドは、アダプタ機能についてのアダプタ割込を提示するために用いられる割込サブクラスを含む。
【００８３】
割込数（ＮＯＩ）６７０：このフィールドは、アダプタ機能についてアクセスされる個別割込コードの数を示す。また、このフィールドは、アダプタ割込ビット・ベクトル・アドレスおよびアダプタ割込ビット・ベクトル・オフセット・フィールドが指定するアダプタ割込ビット・ベクトルのビット単位のサイズを規定する。
【００８４】
アダプタ割込ビット・ベクトル・アドレス（ＡＩＢＶ）６７２：このフィールドは、アダプタ機能についてのアダプタ割込ビット・ベクトルのアドレスを指定する。このベクトルは割込処理において用いられる。
【００８５】
アダプタ割込ビット・ベクトル・オフセット６７４：このフィールドは、アダプタ機能についての第１のアダプタ割込ビット・ベクトルのビット・オフセットを指定する。
【００８６】
アダプタ割込サマリ・ビット・アドレス（ＡＩＳＢ）６７６：このフィールドは、割込処理において任意に用いられるアダプタ割込サマリ・ビットを示すアドレスを提供する。
【００８７】
アダプタ割込サマリ・ビット・オフセット６７８：このフィールドは、アダプタ割込サマリ・ビット・ベクトルに対するオフセットを提供する。
【００８８】
機能管理ブロック（ＦＭＢ）・アドレス６８０：このフィールドは、アダプタ機能に関する測定値を収集するために用いられる機能測定ブロックのアドレスを提供する。
【００８９】
機能測定ブロック・キー６８２：このフィールドは、機能測定ブロックにアクセスするためのアクセス・キーを含む。
【００９０】
サマリ・ビット通知制御６８４：このフィールドは、用いられているサマリ・ビット・ベクトルがあるか否かを示す。
【００９１】
命令承認トークン６８６：このフィールドは、ページ可能記憶モード・ゲストがホストの介入なしでＰＣＩ命令を実行することを承認されているか否かを判定するために用いられる。
【００９２】
一例において、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）では、ページ可能ゲストは、解釈のレベル２において解釈実行開始（ＳＩＥ：Ｓｔａｒｔ  Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ）命令によって解釈的に実行される。例えば、論理パーティション（ＬＰＡＲ）・ハイパーバイザは、ＳＩＥ命令を実行して物理的な固定メモリにおいて論理パーティションを開始する。ｚ／ＶＭ（Ｒ）がその論理パーティションにおけるオペレーティング・システムである場合、これはＳＩＥ命令を発行してそのＶ＝Ｖ（仮想）記憶においてそのゲスト（仮想）機械を実行する。従って、ＬＰＡＲハイパーバイザはレベル１のＳＩＥを用い、ｚ／ＶＭ（Ｒ）ハイパーバイザはレベル２のＳＩＥを用いる。
【００９３】
アドレス変換フォーマット６８７：このフィールドは、変換において用いる最上位変換テーブルのアドレス変換のために選択したフォーマットを示す（例えば最上位のテーブルの指示（例えばセグメント・テーブル、第３領域等）、および選択したフォーマットの指示（例えばＣＰＵ  ＤＡＴコンパチブル、Ｉ／Ｏ拡張アドレス変換フォーマット、バイパス・フォーマット、ノー・フェッチ・フォーマット））。これは、フォーマットも示すことができる。
【００９４】
ＰＣＩ機能制御変更命令において指定された機能情報ブロックを用いて、選択したデバイス・テーブル・エントリ、機能テーブル・エントリ、または命令において指定されたアダプタ機能に関連付けられた他のファームウェア制御あるいはその全てを変更する。デバイス・テーブル・エントリ、機能テーブル・エントリ、または他のファームウェア制御あるいはその全てを変更することによって、アダプタにいくつかのサービスが提供される。これらのサービスは例えば、アダプタ割込、アドレス変換、エラー状態リセット、ロード／記憶阻止のリセット、機能測定パラメータの設定、およびインターセプト制御の設定を含む。
【００９５】
図１１を参照して、ＰＣＩ機能制御変更命令に関連付けられた論理の一実施形態について説明する。一例において、命令はオペレーティング・システム（または他の構成）によって発行され、このオペレーティング・システムを実行しているプロセッサ（例えばファームウェア）によって実行される。本明細書における例では、命令およびアダプタ機能はＰＣＩベースである。しかしながら、他の例では、異なるアダプタ・アーキテクチャおよび対応する命令を用いることも可能である。
【００９６】
一例では、オペレーティング・システムは、（例えば命令によって指定された１つ以上のレジスタにおいて）以下のオペランドを命令に与える。すなわち、ＰＣＩ機能ハンドル、ＤＭＡアドレス空間識別子、動作制御、および機能情報ブロックのアドレスである。
【００９７】
図１１を参照すると、最初に、ＰＣＩ機能制御変更命令を可能とするファシリティがインストールされているか否かを判定する（問い合わせ７００）。この判定は、例えば制御ブロックに記憶されたインジケータを調べることによって行われる。ファシリティがインストールされていない場合、例外条件を与える（ステップ７０２）。他の場合は、命令がページ可能記憶モード・ゲスト（または他のゲスト）によって発行されたか否かを判定する（問い合わせ７０４）。イエスの場合、ホスト・オペレーティング・システムはそのゲストのための動作をエミュレートする（ステップ７０６）。
【００９８】
他の場合、オペランドの１つ以上がアラインメントされているか否かを判定する（問い合わせ７０８）。例えば、機能情報ブロックのアドレスがダブルワード境界上にあるか否かを判定する。一例では、これは任意である。オペランドがアライネメントされていない場合、例外条件を与える（ステップ７１０）。他の場合、機能情報ブロックがアクセス可能であるか否かについて判定を行う（問い合わせ７１２）。そうでない場合、例外条件を与える（ステップ７１４）。他の場合、ＰＣＩ機能制御変更命令のオペランドに与えられたハンドルがイネーブルされているか否かを判定する（問い合わせ７１６）。一例では、この判定はハンドル内のイネーブル・インジケータを調べることによって行われる。ハンドルがイネーブルされていない場合、例外条件を与える（ステップ７１８）。
【００９９】
ハンドルがイネーブルされている場合、ハンドルを用いて機能テーブル・エントリの位置を特定する（ステップ７２０）。すなわち、ハンドルの少なくとも一部を機能テーブルに対するインデックスとして用いて、動作パラメータを確立するアダプタ機能に対応した機能テーブル・エントリの位置を特定する。
【０１００】
機能テーブル・エントリが見つかったか否かについて判定を行う（問い合わせ７２２）。そうでない場合、例外条件を与える（ステップ７２４）。他の場合、命令を発行している構成がゲストである場合（問い合わせ７２６）、例外条件（例えばホストに対するインターセプト）を与える（ステップ７２８）。この問い合わせは、構成がゲストでない場合または他の認証を調べることができる場合、指定されていれば、無視することができる。
【０１０１】
次いで、機能がイネーブルされているか否かについて判定を行う（問い合わせ７３０）。一例では、この判定は、機能テーブル・エントリにおけるイネーブル・インジケータを調べることによって行う。これがイネーブルされていない場合、例外条件を与える（ステップ７３２）。
【０１０２】
機能がイネーブルされている場合、回復がアクティブであるか否かについて判定を行う（ステップ７３４）。機能テーブル・エントリにおける回復インジケータによって回復がアクティブであると判定された場合、例外条件を与える（ステップ７３６）。しかしながら、回復がアクティブでない場合、機能がビジーであるか否かについて更に判定を行う（問い合わせ７３８）。この判定は、機能テーブル・エントリにおけるビジー・インジケータを調べることによって行う。機能がビジーである場合、ビジー条件を与える（ステップ７４０）。ビジー条件によって、命令をドロップするのでなく再試行することができる。
【０１０３】
機能がビジーでない場合、機能情報ブロック・フォーマットが有効であるか否かについて更に判定する（問い合わせ７４２）。例えば、ＦＩＢのフォーマット・フィールドを調べて、このフォーマットがシステムによりサポートされているか否かを判定する。これが無効である場合、例外条件を与える（ステップ７４４）。機能情報ブロック・フォーマットが有効である場合、命令のオペランドにおいて指定された動作制御が有効であるか否かを更に判定する（問い合わせ７４６）。すなわち、動作制御が、この命令のための指定動作制御の１つであるかどうかである。これが無効である場合、例外条件を与える（ステップ７４８）。しかしながら、動作制御が有効である場合、処理は続けて特定の動作制御を指定する。
【０１０４】
この動作制御によって指定可能な１つの動作は、測定を維持するために用いられるＰＣＩ機能測定パラメータ設定動作である。この動作によって、機能情報ブロックからＰＣＩ機能測定に関連したＰＣＩ機能パラメータを設定する。機能測定ブロック・アドレス・フィールドが非ゼロ・アドレスを含む場合、ＰＣＩ機能測定をイネーブルする。しかしながら、機能測定ブロック・アドレス・フィールドがゼロを含む場合、ＰＣＩ機能測定をディセーブルする。一例においては、機能情報ブロックから取得されたこの動作のためのオペランドは、機能測定ブロック・アドレスおよび機能測定ブロック・キーを含む。示したオペランドは、機能テーブル・エントリから取得されたＤＭＡアドレス空間数を含む。
【０１０５】
図１２を参照して、この動作に関連付けられた論理の一実施形態について説明する。一例において、機能測定ブロック・アドレスがゼロに等しいか否かについて判定を行う（問い合わせ８００）。その場合、機能テーブル・エントリ内の機能測定パラメータをゼロにリセットする（ステップ８０２）。更に、Ｉ／ＯハブにおけるＤＭＡカウンタをクリアしてディセーブルすると共に、測定をディセーブルする。
【０１０６】
問い合わせ８００に戻ると、機能測定ブロック・アドレスがゼロでない場合、全てのデバイス・テーブル・エントリの機能測定ブロックが４ｋ境界に及ぶか否かについて更に判定を行う（問い合わせ８０６）。一例では、４ｋブロック範囲は、機能測定ブロック・アドレス、固定機能測定ブロック・サイズ、および各ＤＭＡアドレス空間についてのＤＭＡアドレス空間固有延長を加えることによって判定される。機能測定ブロックが４ｋ境界に及ぶ場合、例外条件を与える（ステップ８０８）。他の場合、機能情報ブロックの機能測定ブロック・アドレスおよび機能測定ブロック・キー・パラメータから、機能テーブル・エントリ内の機能測定パラメータ（例えばＦＭＢＡおよびＦＭＢＫ）を設定する（ステップ８１２）。更に、Ｉ／ＯハブにおけるＤＭＡカウンタをクリアしイネーブルすると共に、測定をイネーブルする。
【０１０７】
更に、ＰＣＩロード、ＰＣＩ記憶、およびＰＣＩ記憶阻止についての詳細を与える。
【０１０８】
まず図１３を参照すると、ＰＣＩロード命令の一実施形態が示されている。図示のように、ＰＣＩロード命令９００は例えば、ＰＣＩロード命令を示す操作符号９０２と、アダプタ機能からフェッチしたデータをロードする位置を指定する第１のフィールド９０４と、データがロードされるアダプタ機能に関する様々な情報が含まれる位置を指定する第２のフィールド９０６と、を含む。フィールド１およびフィールド２が指定する位置の内容について以下で更に説明する。
【０１０９】
一例では、フィールド１は汎用レジスタを示し、図１４に示すように、そのレジスタの内容９０４は、この命令に指定されたアダプタ機能の位置からロードされた１以上のバイトの連続的な範囲を含む。一例では、データはレジスタの最も右側のバイト位置にロードされる。
【０１１０】
一実施形態において、フィールド２は、様々な情報を含む１対の汎用レジスタを示す。図１４に示すように、レジスタの内容は例えば以下を含む。
【０１１１】
イネーブル・ハンドル９１０：このフィールドは、データがロードされるアダプタ機能のイネーブルされた機能ハンドルである。
【０１１２】
アドレス空間９１２：このフィールドは、データがロードされるアダプタ機能内のアドレス空間を識別する。
【０１１３】
アドレス空間内オフセット９１４：このフィールドは、データがロードされる指定されたアドレス空間内のオフセットを指定する。
【０１１４】
長さフィールド９１６：このフィールドは、ロード動作の長さ（例えばロードされるバイト数）を指定する。
【０１１５】
ステータス・フィールド９１８：このフィールドは、命令が既定の条件コードで完了した場合に適用可能なステータス・コードを与える。
【０１１６】
一実施形態において、アダプタ機能からロードされるバイトは、アダプタ機能が指定したＰＣＩアドレス空間における整数境界内に含まれなければならない。アドレス空間フィールドがメモリ・アドレス空間を指定する場合、整数境界サイズは例えばダブルワードである。アドレス空間フィールドがＩ／Ｏアドレス空間または構成アドレス空間を示す場合、整数境界サイズは例えばワードである。
【０１１７】
図１６および図１７を参照して、ＰＣＩロード命令に関連付けられた論理の一実施形態について説明する。一例において、命令はオペレーティング・システム（または他の構成）によって発行され、このオペレーティング・システムを実行しているプロセッサ（例えばファームウェア）によって実行される。本明細書における例では、命令およびアダプタ機能はＰＣＩベースである。しかしながら、他の例では、異なるアダプタ・アーキテクチャおよび対応する命令を用いることも可能である。
【０１１８】
命令を発行するために、オペレーティング・システムは、（例えば命令によって指定された１つ以上のレジスタにおいて）以下のオペランドを命令に与える。すなわち、ＰＣＩ機能ハンドル、ＤＭＡアドレス空間（ＰＣＩＡＳ）、ＰＣＩアドレス空間に対するオフセット、およびロードされるデータ長である。ＰＣＩロード命令の完了が成功すると、データは命令によって指定された位置（例えばレジスタ）にロードされる。
【０１１９】
図１６を参照すると、最初に、ＰＣＩロード命令を可能とするファシリティがインストールされているか否かを判定する（問い合わせ１０００）。この判定は、例えば制御ブロックに記憶されたインジケータを調べることによって行われる。ファシリティがインストールされていない場合、例外条件を与える（ステップ１００２）。他の場合は、オペランドがアラインメントされているか否かを判定する（問い合わせ１００４）。例えば、いくつかのオペランドが偶数／基数レジスタ対にあることが必要である場合、それらの要件が満足されているか否かを判定する。オペランドがアラインメントされていない場合、例外を与える（ステップ１００６）。他の場合、ファシリティがインストールされてオペランドが整合されている場合、ＰＣＩロード命令のオペランドに与えられたハンドルがイネーブルされているか否かを判定する（問い合わせ１００８）。一例では、この判定はハンドル内のイネーブル・インジケータを調べることによって行われる。ハンドルがイネーブルされていない場合、例外条件を与える（ステップ１０１０）。
【０１２０】
ハンドルがイネーブルされている場合、ハンドルを用いて機能テーブル・エントリの位置を特定する（ステップ１０１２）。すなわち、ハンドルの少なくとも一部を機能テーブルに対するインデックスとして用いて、データがロードされるアダプタ機能に対応した機能テーブル・エントリの位置を特定する。
【０１２１】
その後、命令を発行している構成がゲストである場合、ゲストによって用いるように機能が構成されているか否かを判定する（問い合わせ１０１４）。これが認証されていない場合、例外条件を与える（ステップ１０１６）。構成がゲストでない場合、または指定されているならば他の認証を調べることができる場合は、この問い合わせは無視することができる。
【０１２２】
次いで、機能がイネーブルされているか否かを判定する（問い合わせ１０１８）。一例では、この判定は、機能テーブル・エントリ内のイネーブル・インジケータを調べることによって行われる。これがイネーブルされていない場合、例外条件を与える（ステップ１０２０）。
【０１２３】
機能がイネーブルされている場合、アドレス空間が有効であるか否かについて判定を行う（ステップ１０２２）。例えば、指定されたアドレス空間が、アダプタ機能の示されたアドレス空間であり、この命令に適切なものであるか否かである。アドレス空間が無効である場合、例外条件を与える（ステップ１０２４）。他の場合、ロード／記憶が阻止されているか否かについて判定を行う（ステップ１０２６）。一例では、この判定は、機能テーブル・エントリ内のステータス・インジケータを調べることによって行われる。ロード／記憶が阻止されている場合、例外条件を与える（ステップ１０２８）。
【０１２４】
しかしながら、ロード／記憶が阻止されていない場合、回復がアクティブであるか否かについて判定を行う（問い合わせ１０３０）。一例では、この判定は、機能テーブル・エントリ内の回復開始インジケータを調べることによって行われる。回復がアクティブである場合、例外条件を与える（ステップ１０３２）。他の場合、機能がビジーであるか否かについて判定を行う（問い合わせ１０３４）。この判定は、機能テーブル・エントリ内のビジー・インジケータを調べることによって行われる。機能がビジーである場合、ビジー条件を与える（ステップ１０３６）。ビジー条件によって、命令をドロップするのでなく再試行することができる。
【０１２５】
機能がビジーでない場合、命令において指定されたオフセットが有効であるか否かについて更に判定する（問い合わせ１０３８）。すなわち、機能テーブル・エントリで指定されたように、オフセットが、アドレス空間のベースおよび長さ内の動作長と組み合わされているか否かである。そうでない場合、例外条件を与える（ステップ１０４０）。しかしながら、オフセットが有効である場合、長さが有効であるか否かについて判定を行う（問い合わせ１０４２）。すなわち、アドレス空間タイプに依存したアドレス空間内のオフセットがあるか、整数境界サイズが有効な長さであるか否かである。そうでない場合、例外条件を与える（ステップ１０４４）。他の場合、処理はロード命令へと移る（一実施形態では、ファームウェアが上述のチェックを実行する）。
【０１２６】
続いて図１７では、ロードがアダプタ機能の構成アドレス空間のためのものであるか否かについてファームウェアが判定を行う（問い合わせ１０５０）。すなわち、アダプタ機能のメモリの構成に基づいて、命令において与えられた指定アドレス空間が構成空間であるか否かである。そうである場合、ファームウェアは様々な処理を行って、アダプタ機能に結合されたハブに要求を供給する。次いでハブはこの要求を機能にルーティングする（ステップ１０５２）。
【０１２７】
例えば、ファームウェアは、命令オペランドにおいて与えられた機能テーブルが示す機能テーブル・エントリから要求側ＩＤを取得する。更に、ファームウェアは、機能テーブル・エントリ内の情報（例えば内部ルーティング情報）に基づいて、この要求を受信するハブを判定する。すなわち、ある環境は１つ以上のハブを有する場合があり、ファームウェアはアダプタ機能に結合されたハブを判定する。次いで要求をハブに転送する。ハブは構成読み取り要求パケットを発生し、これはＰＣＩバス上を通って、機能テーブル・エントリ内のＲＩＤにより識別されたアダプタ機能に達する。構成読み取り要求はＲＩＤおよびオフセット（すなわちデータ・アドレス）を含み、これらはデータをフェッチするために用いられる。これについては以下で説明する。
【０１２８】
問い合わせ１０５０に戻ると、示されたアドレス空間が構成空間でない場合、ファームウェアは再び様々な処理を実行して要求をハブに供給する（ステップ１０５４）。ファームウェアは、ハンドルを用いて機能テーブル・エントリを選択し、そのエントリから、適切なハブの位置を特定するための情報を取得する。また、これは、ロード動作において用いられるデータ・アドレスを計算する。このアドレスを計算するには、機能テーブル・エントリから得たＢＡＲ開始アドレス（ＢＡＲは命令において与えられたアドレス空間識別子に関連付けられたものである）を、命令において与えられたオフセットに加える。この計算されたデータ・アドレスはハブに供給される。次いでハブはそのアドレスを取得し、これを、ＰＣＩバスを通ってアダプタ機能に達するＤＭＡ読み取り要求パケット等の要求パケットに含ませる。
【０１２９】
ステップ１０５２またはステップ１０５４のいずれかによる要求の受信に応答して、アダプタ機能は、指定された位置から（すなわちデータ・アドレスにおいて）要求されたデータをフェッチし、要求に応じてそのデータを戻す（ステップ１０５６）。応答はアダプタ機能からＩ／Ｏハブに転送される。応答の受信に応じて、ハブは応答を開始プロセッサに転送する。次いで開始プロセッサは、応答パケットからデータを取得し、これを命令において指定された示された位置（例えばフィールド１）にロードする。ＰＣＩロード動作は、成功の指示によって完了する（例えばゼロの条件コードを設定する）。
【０１３０】
アダプタ機能からデータを検索し、これを示された位置に記憶するロード命令に加えて、実行可能な別の命令は記憶命令である。記憶命令は、アダプタ機能の指定された位置にデータを記憶する。ＰＣＩ記憶命令の一実施形態について図１８を参照して説明する。図示のように、ＰＣＩ記憶命令１１００は例えば、ＰＣＩ記憶命令を示す操作符号１１０２と、アダプタ機能に記憶されるデータを含む位置を指定する第１のフィールド１１０４と、データが記憶されるアダプタ機能に関連した様々な情報を含む位置を指定する第２のフィールド１１０６と、を含む。以下で、フィールド１およびフィールド２によって示される位置の内容について更に説明する。
【０１３１】
一例では、フィールド１は汎用レジスタを示し、図１９に示すように、そのレジスタの内容１１０４は、アダプタ機能の指定位置にロードされる１以上のバイトの連続的な範囲を含む。一例では、レジスタの最も右側のバイト位置におけるデータが記憶される。
【０１３２】
一実施形態において、フィールド２は、様々な情報を含む１対の汎用レジスタを示す。図２０に示すように、レジスタの内容は例えば以下を含む。
【０１３３】
イネーブル・ハンドル１１１０：このフィールドは、データが記憶されるアダプタ機能のイネーブルされた機能ハンドルである。
【０１３４】
アドレス空間１１１２：このフィールドは、データが記憶されるアダプタ機能内のアドレス空間を識別する。
【０１３５】
アドレス空間内オフセット１１１４：このフィールドは、データが記憶される指定されたアドレス空間内のオフセットを指定する。
【０１３６】
長さフィールド１１１６：このフィールドは、記憶動作の長さ（例えば記憶されるバイト数）を指定する。
【０１３７】
ステータス・フィールド１１１８：このフィールドは、命令が既定の条件コードで完了した場合に適用可能なステータス・コードを与える。
【０１３８】
図２１および図２２を参照して、ＰＣＩ記憶命令に関連付けられた論理の一実施形態について説明する。一例において、命令はオペレーティング・システムによって発行され、このオペレーティング・システムを実行しているプロセッサ（例えばファームウェア）によって実行される。
【０１３９】
命令を発行するために、オペレーティング・システムは、（例えば命令によって指定された１つ以上のレジスタにおいて）以下のオペランドを命令に与える。すなわち、ＰＣＩ機能ハンドル、ＤＭＡアドレス空間（ＰＣＩＡＳ）、ＰＣＩアドレス空間に対するオフセット、記憶されるデータ長、および記憶されるデータに対するポインタである。ＰＣＩ記憶命令の完了が成功すると、データは命令によって指定された位置に記憶される。
【０１４０】
図２１を参照すると、最初に、ＰＣＩ記憶命令を可能とするファシリティがインストールされているか否かを判定する（問い合わせ１２００）。この判定は、例えば制御ブロックに記憶されたインジケータを調べることによって行われる。ファシリティがインストールされていない場合、例外条件を与える（ステップ１２０２）。他の場合は、オペランドがアラインメントされているか否かを判定する（問い合わせ１２０４）。例えば、いくつかのオペランドが偶数／基数レジスタ対にあることが必要である場合、それらの要件が満足されているか否かを判定する。オペランドがアラインメントされていない場合、例外を与える（ステップ１２０６）。他の場合、ファシリティがインストールされてオペランドが整合されている場合、ＰＣＩ記憶命令のオペランドに与えられたハンドルがイネーブルされているか否かを判定する（問い合わせ１２０８）。一例では、この判定はハンドル内のイネーブル・インジケータを調べることによって行われる。ハンドルがイネーブルされていない場合、例外条件を与える（ステップ１２１０）。
【０１４１】
ハンドルがイネーブルされている場合、ハンドルを用いて機能テーブル・エントリの位置を特定する（ステップ１２１２）。すなわち、ハンドルの少なくとも一部を機能テーブルに対するインデックスとして用いて、データが記憶されるアダプタ機能に対応した機能テーブル・エントリの位置を特定する。
【０１４２】
その後、命令を発行している構成がゲストである場合、ゲストによって用いるように機能が構成されているか否かを判定する（問い合わせ１２１４）。これが認証されていない場合、例外条件を与える（ステップ１２１６）。構成がゲストでない場合、または指定されているならば他の認証を調べることができる場合は、この問い合わせは無視することができる。
【０１４３】
次いで、機能がイネーブルされているか否かを判定する（問い合わせ１２１８）。一例では、この判定は、機能テーブル・エントリ内のイネーブル・インジケータを調べることによって行われる。これがイネーブルされていない場合、例外条件を与える（ステップ１２２０）。
【０１４４】
機能がイネーブルされている場合、アドレス空間が有効であるか否かについて判定を行う（ステップ１２２２）。例えば、指定されたアドレス空間が、アダプタ機能の示されたアドレス空間であり、この命令に適切なものであるか否かである。アドレス空間が無効である場合、例外条件を与える（ステップ１２２４）。他の場合、ロード／記憶が阻止されているか否かについて判定を行う（ステップ１２２６）。一例では、この判定は、機能テーブル・エントリ内のステータス・インジケータを調べることによって行われる。ロード／記憶が阻止されている場合、例外条件を与える（ステップ１２２８）。
【０１４５】
しかしながら、ロード／記憶が阻止されていない場合、回復がアクティブであるか否かについて判定を行う（問い合わせ１２３０）。一例では、この判定は、機能テーブル・エントリ内の回復開始インジケータを調べることによって行われる。回復がアクティブである場合、例外条件を与える（ステップ１２３２）。他の場合、機能がビジーであるか否かについて判定を行う（問い合わせ１２３４）。この判定は、機能テーブル・エントリ内のビジー・インジケータを調べることによって行われる。機能がビジーである場合、ビジー条件を与える（ステップ１２３６）。ビジー条件によって、命令をドロップするのでなく再試行することができる。
【０１４６】
機能がビジーでない場合、命令において指定されたオフセットが有効であるか否かについて更に判定する（問い合わせ１２３８）。すなわち、機能テーブル・エントリで指定されたように、オフセットが、アドレス空間のベースおよび長さ内の動作長と組み合わされているか否かである。そうでない場合、例外条件を与える（ステップ１２４０）。しかしながら、オフセットが有効である場合、長さが有効であるか否かについて判定を行う（問い合わせ１２４２）。すなわち、アドレス空間タイプに依存したアドレス空間内のオフセットがあるか、整数境界サイズが有効な長さであるか否かである。そうでない場合、例外条件を与える（ステップ１２４４）。他の場合、処理は記憶命令へと移る（一実施形態では、ファームウェアが上述のチェックを実行する）。
【０１４７】
続いて図２２では、記憶がアダプタ機能の構成アドレス空間のためのものであるか否かについてファームウェアが判定を行う（問い合わせ１２５０）。すなわち、アダプタ機能のメモリの構成に基づいて、命令において与えられた指定アドレス空間が構成空間であるか否かである。そうである場合、ファームウェアは様々な処理を行って、アダプタ機能に結合されたハブに要求を供給する。次いでハブはこの要求を機能にルーティングする（ステップ１２５２）。
【０１４８】
例えば、ファームウェアは、命令オペランドにおいて与えられた機能テーブルが示す機能テーブル・エントリから要求側ＩＤを取得する。更に、ファームウェアは、機能テーブル・エントリ内の情報（例えば内部ルーティング情報）に基づいて、この要求を受信するハブを判定する。すなわち、ある環境は１つ以上のハブを有する場合があり、ファームウェアはアダプタ機能に結合されたハブを判定する。次いで要求をハブに転送する。ハブは構成書き込み要求パケットを発生し、これはＰＣＩバス上を通って、機能テーブル・エントリ内のＲＩＤにより識別されたアダプタ機能に達する。構成書き込み要求はＲＩＤおよびオフセット（すなわちデータ・アドレス）を含み、これらはデータを記憶するために用いられる。これについては以下で説明する。
【０１４９】
問い合わせ１２５０に戻ると、示されたアドレス空間が構成空間でない場合、ファームウェアは再び様々な処理を実行して要求をハブに供給する（ステップ１２５４）。ファームウェアは、ハンドルを用いて機能テーブル・エントリを選択し、そのエントリから、適切なハブの位置を特定するための情報を取得する。また、これは、記憶動作において用いられるデータ・アドレスを計算する。このアドレスを計算するには、機能テーブル・エントリから得たＢＡＲ開始アドレスを、命令において与えられたオフセットに加える。この計算されたデータ・アドレスはハブに供給される。次いでハブはそのアドレスを取得し、これを、ＰＣＩバスを通ってアダプタ機能に達するＤＭＡ書き込み要求パケット等の要求パケットに含ませる。
【０１５０】
ステップ１２５２またはステップ１２５４のいずれかによる要求の受信に応答して、アダプタ機能は、指定された位置で（すなわちデータ・アドレスで）要求されたデータを記憶する（ステップ１２５６）。ＰＣＩ記憶動作は、成功の指示によって完了する（例えばゼロの条件コードを設定する）。
【０１５１】
典型的に最大で例えば８バイトをロードまたは記憶するロードおよび記憶命令に加えて、実行可能な別の命令は記憶阻止命令である。記憶阻止命令は、アダプタ機能の指定された位置に更に大きなデータ・ブロック（例えば１６、３２、６４、１２８、または２５６バイト）を記憶する。ブロックのサイズは必ずしも２の累乗に限定されない。一例では、指定された位置は、（Ｉ／Ｏまたは構成空間でなく）アダプタ機能のメモリ空間内にある。
【０１５２】
ＰＣＩ記憶阻止命令の一実施形態について図２３を参照して説明する。図示のように、ＰＣＩ記憶阻止命令１３００は例えば、ＰＣＩ記憶阻止命令を示す操作符号１３０２と、データが記憶されるアダプタ機能に関連した様々な情報を含む位置を指定する第１のフィールド１３０４と、データが記憶される指定アドレス空間内のオフセットを含む位置を指定する第２のフィールド１３０６と、アダプタ機能に記憶されるデータのシステム・メモリ・アドレスを含む位置を指定する第３のフィールド１３０８と、を含む。以下で、フィールド１、２、および３によって示される位置の内容について更に説明する。
【０１５３】
一例では、フィールド１は様々な情報を含む汎用レジスタを示す。図２４に示すように、そのレジスタの内容は例えば以下を含む。
【０１５４】
イネーブル・ハンドル１３１０：このフィールドは、データが記憶されるアダプタ機能のイネーブルされた機能ハンドルである。
【０１５５】
アドレス空間１３１２：このフィールドは、データが記憶されるアダプタ機能内のアドレス空間を識別する。
【０１５６】
長さフィールド１３１４：このフィールドは、記憶動作の長さ（例えば記憶されるバイト数）を指定する。
【０１５７】
ステータス・フィールド１３１６：このフィールドは、命令が既定の条件コードで完了した場合に適用可能なステータス・コードを与える。
【０１５８】
一例では、フィールド２は汎用レジスタを示し、図２５に示すように、そのレジスタの内容は、データが記憶される指定アドレス空間内のオフセットを指定する値（例えば６４ビットの符号なし整数）を含む。
【０１５９】
一例において、フィールド３は、図２６に示すように、アダプタ機能に記憶されるシステム・メモリ１３２２内の第１のデータ・バイトの論理アドレスを含む。
【０１６０】
図２７および図２８を参照して、ＰＣＩ記憶阻止命令に関連付けられた論理の一実施形態について説明する。一例において、命令はオペレーティング・システムによって発行され、このオペレーティング・システムを実行しているプロセッサ（例えばファームウェア）によって実行される。
【０１６１】
命令を発行するために、オペレーティング・システムは、（例えば命令によって指定された１つ以上のレジスタにおいて）以下のオペランドを命令に与える。すなわち、ＰＣＩ機能ハンドル、ＤＭＡアドレス空間（ＰＣＩＡＳ）、ＰＣＩアドレス空間に対するオフセット、記憶されるデータ長、および記憶されるデータに対するポインタである。ポインタ・オペランドは、レジスタおよび符号ありまたは符号なし変位の双方を含むことができる。ＰＣＩ記憶阻止命令の完了が成功すると、データは命令によって指定された位置に記憶される。
【０１６２】
図２７を参照すると、最初に、ＰＣＩ記憶阻止命令を可能とするファシリティがインストールされているか否かを判定する（問い合わせ１４００）。この判定は、例えば制御ブロックに記憶されたインジケータを調べることによって行われる。ファシリティがインストールされていない場合、例外条件を与える（ステップ１４０２）。他の場合、ファシリティがインストールされていると、ＰＣＩ記憶阻止命令のオペランドに与えられたハンドルがイネーブルされているか否かについて判定する（問い合わせ１４０４）。一例では、この判定はハンドル内のイネーブル・インジケータを調べることによって行われる。ハンドルがイネーブルされていない場合、例外条件を与える（ステップ１４０６）。
【０１６３】
ハンドルがイネーブルされている場合、ハンドルを用いて機能テーブル・エントリの位置を特定する（ステップ１４１２）。すなわち、ハンドルの少なくとも一部を機能テーブルに対するインデックスとして用いて、データが記憶されるアダプタ機能に対応した機能テーブル・エントリの位置を特定する。
【０１６４】
その後、命令を発行している構成がゲストである場合、ゲストによって用いるように機能が構成されているか否かを判定する（問い合わせ１４１４）。これが認証されていない場合、例外条件を与える（ステップ１４１６）。構成がゲストでない場合、または指定されているならば他の認証を調べることができる場合は、この問い合わせは無視することができる。
【０１６５】
次いで、機能がイネーブルされているか否かを判定する（問い合わせ１４１８）。一例では、この判定は、機能テーブル・エントリ内のイネーブル・インジケータを調べることによって行われる。これがイネーブルされていない場合、例外条件を与える（ステップ１４２０）。
【０１６６】
機能がイネーブルされている場合、アドレス空間が有効であるか否かについて判定を行う（ステップ１４２２）。例えば、指定されたアドレス空間が、アダプタ機能の示されたアドレス空間であり、この命令に適切なもの（すなわちメモリ空間）であるか否かである。アドレス空間が無効である場合、例外条件を与える（ステップ１４２４）。他の場合、ロード／記憶が阻止されているか否かについて判定を行う（ステップ１４２６）。一例では、この判定は、機能テーブル・エントリ内のステータス・インジケータを調べることによって行われる。ロード／記憶が阻止されている場合、例外条件を与える（ステップ１４２８）。
【０１６７】
しかしながら、ロード／記憶が阻止されていない場合、回復がアクティブであるか否かについて判定を行う（問い合わせ１４３０）。一例では、この判定は、機能テーブル・エントリ内の回復開始インジケータを調べることによって行われる。回復がアクティブである場合、例外条件を与える（ステップ１４３２）。他の場合、機能がビジーであるか否かについて判定を行う（問い合わせ１４３４）。この判定は、機能テーブル・エントリ内のビジー・インジケータを調べることによって行われる。機能がビジーである場合、ビジー条件を与える（ステップ１４３６）。ビジー条件によって、命令をドロップするのでなく再試行することができる。
【０１６８】
機能がビジーでない場合、命令において指定されたオフセットが有効であるか否かについて更に判定する（問い合わせ１４３８）。すなわち、機能テーブル・エントリで指定されたように、オフセットが、アドレス空間のベースおよび長さ内の動作長と組み合わされているか否かである。そうでない場合、例外条件を与える（ステップ１４４０）。しかしながら、オフセットが有効である場合、長さが有効であるか否かについて判定を行う（問い合わせ１４４２）。すなわち、アドレス空間タイプに依存したアドレス空間内のオフセットがあるか、整数境界サイズが有効な長さであるか否かである。そうでない場合、例外条件を与える（ステップ１４４４）。他の場合、処理は記憶阻止命令へと移る（一実施形態では、ファームウェアが上述のチェックを実行する）。
【０１６９】
続いて図２８では、記憶されるデータを含む記憶装置にアクセス可能であるか否かについてファームウェアが判定を行う（問い合わせ１４５０）。そうでない場合、例外条件を与える（ステップ１４５２）。そうである場合、ファームウェアは様々な処理を行って、アダプタ機能に結合されたハブに要求を供給する。次いでハブはこの要求を機能にルーティングする（ステップ１４５４）。
【０１７０】
例えば、ファームウェアはハンドルを用いて機能テーブル・エントリを選択し、そのエントリから、適切なハブの位置を特定するための情報を取得する。また、これは、記憶阻止動作において用いられるデータ・アドレスを計算する。このアドレスを計算するには、機能テーブル・エントリから得たＢＡＲ開始アドレス（ＢＡＲはアドレス空間識別子によって識別される）を、命令において与えられたオフセットに加える。この計算されたデータ・アドレスはハブに供給される。更に、命令において与えられたアドレスが参照したデータを、システム・メモリからフェッチしてＩ／Ｏハブに供給する。次いでハブはそのアドレスおよびデータを取得し、これを、ＰＣＩバスを通ってアダプタ機能に達するＤＭＡ書き込み要求パケット等の要求パケットに含ませる。
【０１７１】
要求の受信に応答して、アダプタ機能は、指定された位置で（すなわちデータ・アドレスで）要求されたデータを記憶する（ステップ１４５６）。ＰＣＩ記憶阻止動作は、成功の指示によって完了する（例えばゼロの条件コードを設定する）。
【０１７２】
上述したのは、ＰＣＩ固有のＩ／Ｏトラフィックを機能ごとに追跡し、その結果を動的にユーザに提示する（例えばオペレーティング・システム、オペレーティング・システムのデバイス・ドライバ、他のプログラム等）測定ファシリティである。具体的には、機能ごとに、アクセス命令を追跡して直接メモリ・アクセス・トラフィックを集計する。測定はデバイスに依存せず、この場合、デバイスのタイプは前もって知る必要はない。
【０１７３】
本明細書において提供される測定ファシリティによって、アダプタ機能に対するプログラム（例えばオペレーティング・システム）の直接アクセスを可能とする命令を提供するＩ／Ｏサブシステムにおけるリソースの追跡が可能となる。リソース使用の追跡は、デバッグ・ツールを用いることなく、かかる使用をオペレーティング・システムまたはアプリケーション・インストルメント化コードが記録することなく行われる。本明細書において提供されるファシリティはプロセッサに一体化されており、このため全てのオペレーティング・システムに共通であり、動的に結果を利用可能とすることができる。同様に、データ伝送量を測定するため、この機能はＩ／Ｏインフラストラクチャに一体化されており、結果は動的に利用可能である。
【０１７４】
一例において、測定ファシリティは機能ごとにイネーブルされる。更に、動的に、測定値は機能ごとにユーザ空間に導入され、かかる情報についてユーザ・プログラム・クエリは有しない。
【０１７５】
本明細書に記載した実施形態では、アダプタはＰＣＩアダプタである。本明細書において用いる場合、ＰＣＩは、ＰＣＩ−ＳＩＧ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ）が規定したようなＰＣＩベースの仕様に従って実施されるいずれかのアダプタを指し、限定ではないがＰＣＩまたはＰＣＩｅを含む。１つの特定の例では、ＰＣＩｅはコンポーネント・レベルの相互接続規格であり、Ｉ／Ｏアダプタとホスト・システムとの間のトランザクションのための双方向通信プロトコルを規定する。ＰＣＩｅ通信は、ＰＣＩｅバス上の伝送のためのＰＣＩｅ規格に従ってパケットにカプセル化されている。Ｉ／Ｏアダプタで開始してホスト・システムで終了するトランザクションを、上りトランザクションと称する。ホスト・システムで開始してＩ／Ｏアダプタで終端するトランザクションを、下りトランザクションと称する。ＰＣＩｅトポロジはポイント・ツー・ポイント一方向リンクに基づいており、これらは対になって（例えば１つの上りリンク、１つの下りリンク）、ＰＣＩｅバスを形成する。ＰＣＩｅ規格は、ＰＣＩ−ＳＩＧによって維持され公開される。
【０１７６】
当業者によって認められるように、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する１つ以上のコンピュータ読み取り可能媒体（複数の媒体）において具現化されたコンピュータ・プログラムの形態を取ることも可能である。
【０１７７】
ここで図２９を参照すると、一例において、コンピュータ・プログラム１５００は例えば、コンピュータ読み取り可能プログラム・コード手段または論理１５０４を記憶するための１つ以上のコンピュータ読み取り可能記憶媒体１５０２を含み、本発明の１つ以上の態様を提供してこれを推進する。
【０１７８】
コンピュータ読み取り可能媒体上で具現化されたプログラム・コードは、限定ではないが、無線、優先、光ファイバ・ケーブル、ＲＦ等、または前述のもののいずれかの適切な組み合わせを含む適切な媒体を用いて送信することができる。
【０１７９】
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語、アセンブラ、または同様のプログラミング言語等の従来の手順プログラミング言語を含む１つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の場合、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、（例えばインターネット・サービス・プロバイダを用いてインターネットを介して）外部コンピュータに対して行うことができる。
【０１８０】
本発明の実施形態に従った方法、装置（システム）、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様について記載する。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するための手段を生成するようになっている。
【０１８１】
また、これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施する命令を含む製造品を生成するようになっている。
【０１８２】
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能／行為を実施するためのプロセスを提供するようになっている。
【０１８３】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムの可能な実施のアーキテクチャ、機能性、および動作を例示する。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能（複数の機能）を実施するための１つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した２つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、規定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
【０１８４】
上述のことに加えて、本発明の１つ以上の態様は、カスタマ環境の管理を提供するサービス・プロバイダによって提供、供給、展開、管理、サービス提供等を行うことができる。例えば、サービス・プロバイダは、１人以上のカスタマに、本発明の１つ以上の態様を実行するコンピュータ・コードまたはコンピュータ・インフラストラクチャあるいはその両方の生成、維持、支持等を行うことができる。これに対して、サービス・プロバイダは、一例として加入または自由契約あるいはその両方のもとでカスタマから支払いを受け取ることができる。これに加えて、またはこの代わりに、サービス・プロバイダは、１人以上の第三者に対する広告内容の販売から支払いを受け取ることができる。
【０１８５】
本発明の一態様において、本発明の１つ以上の態様を実行するためにアプリケーションを展開することができる。一例として、アプリケーションの展開は、本発明の１つ以上の態様を実行するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１８６】
本発明の更に別の態様として、コンピュータ読み取り可能コードをコンピューティング・システムに一体化することを含むコンピュータ・インフラストラクチャを展開することができる。この場合、コンピューティング・システムと組み合わせたコードが本発明の１つ以上の態様を実行することができる。
【０１８７】
本発明の更に別の態様として、コンピュータ読み取り可能コードをコンピュータ・システムに一体化することを含むコンピューティング・インフラストラクチャの一体化のためのプロセスを提供することができる。コンピュータ・システムはコンピュータ読み取り可能媒体を含み、コンピュータ媒体は本発明の１つ以上の態様を含む。コンピュータ・システムと組み合わせたコードが本発明の１つ以上の態様を実行することができる。
【０１８８】
様々な実施形態について上述したが、これらは例に過ぎない。例えば、他のアーキテクチャのコンピューティング環境が、本発明の１つ以上の態様を組み込んでこれを用いることができる。一例として、パワー・システム・サーバもしくはインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供される他のサーバ、または他の企業のサーバ等、システムｚ（Ｒ）サーバ以外のサーバが、本発明の１つ以上の態様を含むか、用いるか、またはこれから利益を得るかあるいはそれら全てとすることができる。更に、本明細書の例において、アダプタおよびＩ／Ｏハブ（例えばＰＣＩハブ）はサーバの一部と見なされるが、他の実施形態では、それらは必ずしもサーバの一部と見なす必要がなく、単にコンピューティング環境のシステム・メモリまたは他のコンポーネントあるいはその両方に結合されていると見なすことができる。コンピューティング環境はサーバである必要はない。更に、他の例では、コンピューティング環境は論理的にパーティション化されており、かかる例では特定の論理パーティションにカウンタが関連付けられている。更に、アダプタはＰＣＩベースであるが、本発明の１つ以上の態様は、他のアダプタまたは他のＩ／Ｏコンポーネントと共に使用可能である。アダプタおよびＰＣＩアダプタは一例に過ぎない。更に、これよりも多いか、少ないか、またはこれとは異なる情報が追跡される場合がある。多くの様々な変形が可能である。
【０１８９】
更に、コンピューティング環境の他のタイプが本発明の１つ以上の態様から利益を得ることも可能である。一例として、プログラム・コードの記憶または実行あるいはその両方に適したデータ処理システムであって、システム・バスを介してメモリ要素に直接または間接に結合された少なくとも２つのプロセッサを含むものを使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いるローカル・メモリと、バルク記憶装置と、実行中にバルク記憶装置からコードを検索しなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的な記憶を提供するキャッシュ・メモリと、を含む。
【０１９０】
入出力またはＩ／Ｏデバイス（限定ではないが、キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サム・ドライブ、および他のメモリ媒体等を含む）を、直接またはＩ／Ｏコントローラを介在させてのいずれかでシステムに結合することができる。また、システムにネットワーク・アダプタを結合することで、データ処理システムを、私的ネットワークまたは公的ネットワークを介在させて他のデータ処理システムまたは遠隔プリンタもしくは記憶デバイスに結合することができる。利用可能なネットワーク・アダプタのタイプのいくつかの例として、モデム、ケーブル・モデム、およびイーサネット・カードがある。
【０１９１】
図３０を参照すると、本発明の１つ以上の態様を実施するためのホスト・コンピュータ・システム５０００の代表的なコンポーネントが示されている。代表的なホスト・コンピュータ５０００は１つ以上のＣＰＵ５００１を含み、これは、コンピュータ・メモリ（すなわち中央記憶装置）５００２、ならびに、他のコンピュータまたはＳＡＮ等と通信するための記憶媒体デバイス５０１１およびネットワーク５０１０に対するＩ／Ｏインタフェースに対して通信状態にある。ＣＰＵ５００１は、アーキテクチャ化された命令セットおよびアーキテクチャ化された機能性を有するアーキテクチャに準拠している。ＣＰＵ５００１は、プログラム・アドレス（仮想アドレス）をメモリの実アドレスに変換するための動的アドレス変換（ＤＡＴ）５００３を有することができる。ＤＡＴは典型的に、変換をキャッシュするための変換ルックアサイド・バッファ（ＴＬＢ）５００７を含むので、後にコンピュータ・メモリ５００２のブロックにアクセスする際、アドレス変換の遅延は必要ない。典型的に、コンピュータ・メモリ５００２とプロセッサ５００１との間でキャッシュ５００９を用いる。キャッシュ５００９は階層型として、２つ以上のＣＰＵに利用可能な大きいキャッシュを有すると共に、この大きいキャッシュと各ＣＰＵとの間にもっと小さく高速の（下位レベルの）キャッシュを有することができる。いくつかの実施においては、下位レベルのキャッシュを分割して、命令フェッチおよびデータ・アクセスのために別個の下位レベルのキャッシュを提供する。一実施形態においては、メモリ５００２からキャッシュ５００９を介して命令フェッチ・ユニット５００４が命令をフェッチする。この命令は、命令復号ユニット５００６において復号され、命令実行ユニットまたは複数のユニット５００８にディスパッチされる（いくつかの実施形態では他の命令と共に）。通常、実行ユニット５００８は、例えば算術実行ユニット、浮動小数点実行ユニット、および分岐命令実行ユニットのように、いくつか用いられる。命令は実行ユニットによって実行され、必要に応じて命令指定レジスタまたはメモリからオペランドにアクセスする。メモリ５００２からオペランドにアクセスする（ロードまたは記憶する）場合、典型的にロード／記憶ユニット５００５が、実行している命令の制御のもとでこのアクセスを処理する。命令は、ハードウェア回路においてまたは内部マイクロコード（ファームウェア）において、またはそれらの双方によって実行することができる。
【０１９２】
注記したように、コンピュータ・システムは、ローカル（または主）記憶装置において情報を含み、更に、アドレス指定、保護、参照、および変更記録を含む。アドレス指定のいくつかの態様は、アドレスのフォーマット、アドレス空間の概念、様々なタイプのアドレス、およびあるタイプのアドレスを別のタイプのアドレスに変換する方法を含む。主記憶装置のいくつかは、永続的に割り当てられた記憶位置を含む。主記憶装置は、直接アドレス可能な高速アクセス・データ記憶をシステムに提供する。データおよびプログラムの双方は、主記憶装置に（入力デバイスから）ロードされた後に、処理することが可能となる。
【０１９３】
主記憶装置は、１つ以上のもっと小さい高速アクセス・バッファ記憶装置を含むことができ、これらは時にキャッシュと呼ばれる。キャッシュは典型的に、ＣＰＵまたはＩ／Ｏプロセッサと物理的に関連付けられている。別個の記憶媒体の物理的な構築および使用の性能以外の効果は、一般にはプログラムによって観察することができない。
【０１９４】
命令およびデータ・オペランドについて別個のキャッシュを維持することができる。キャッシュ内の情報は、キャッシュ・ブロックまたはキャッシュ・ライン（または短縮してライン）と呼ばれる整数境界上の連続したバイトに維持される。モデルによって、キャッシュ・ラインのサイズをバイトで返すキャッシュ属性抽出命令を与えることができる。また、また、モデルは、データ・プリフェッチおよびデータ関連長プリフェッチ命令を与えることができ、これはデータまたは命令キャッシュに対する記憶のプリフェッチまたはキャッシュからのデータの解放を実行する。
【０１９５】
記憶装置は、長い水平方向のビット文字列と見なされる。ほとんどの動作では、記憶装置へのアクセスは左から右へのシーケンスで進む。ビット文字列は８ビットの単位に細分される。８ビット単位は１バイトと呼ばれ、これは全ての情報フォーマットの基本的な構築ブロックである。記憶装置内の各バイト位置は、一意の負でない整数によって識別され、これがそのバイト位置のアドレス、または単にバイト・アドレスである。隣接するバイト位置は連続するアドレスを有し、左で０から開始し、左から右へのシーケンスで進んでいく。アドレスは符号なしの二進数であり、２４、３１、または６４ビットである。
【０１９６】
情報は、記憶装置とＣＰＵまたはチャネル・サブシステム間で、一度に１バイトずつまたはバイト・グループ１つずつ送信される。特に指定しない限り、例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）において、記憶装置内のバイト・グループはそのグループの最も左のバイトによってアドレス指定される。グループ内のバイト数は、実行される動作によって暗示されるか、または明示的に指定される。ＣＰＵ動作において用いる場合、バイト・グループはフィールドと呼ばれる。例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）においては、各バイト・グループ内で、ビットは左から右へのシーケンスで付番される。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）では、最も左のビットを「上位」ビットと称し、最も右のビットを「下位」ビットと称することがある。しかしながら、ビット番号は記憶装置アドレスではない。バイトのみをアドレス指定することができる。記憶装置内のバイトの個々のビットに対して動作するため、バイト全体がアクセスされる。１バイト内のビットは、左から右へ（例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）において）、０から７まで付番される。１アドレス内のビットは、２４ビット・アドレスでは８〜３１または４０〜６３、３１ビット・アドレスでは１〜３１または３３〜６３と付番することができる。それらは６４ビット・アドレスでは０〜６３と付番される。多バイトの他のいずれかの固定長フォーマット内において、このフォーマットを形成するビットは、０から始めて連続的に付番される。エラー検出の目的のため、および好ましくは補正の目的のために、各バイトまたはバイト・グループと共に１つ以上のチェック・ビットを送信することができる。かかるチェック・ビットは、機械により自動的に発生され、プログラムにより直接制御することはできない。記憶容量はバイト数で表される。記憶オペランド・フィールドの長さが命令の動作コードにより暗示された場合、フィールドは固定長を有するといわれ、これは１、２、４、８、または１６バイトとすることができる。いくつかの命令では、もっと大きいフィールドが暗示されることがある。記憶オペランド・フィールドの長さが暗示されずに明示的に示された場合、フィールドは可変長を有するといわれる。可変長オペランドは、１バイトの増分で（またはいくつかの命令により、２バイトの倍数または他の倍数で）長さが変動することがある。情報が記憶装置に配置されると、記憶装置に対する物理経路の幅が記憶されるフィールドの長さよりも大きい場合があるとしても、指定されたフィールド内に含まれるバイト位置のみの内容が置換される。
【０１９７】
ある特定の情報ユニットは、記憶装置の整数境界上になければならない。情報ユニットについて、その記憶アドレスがバイト単位のユニット長の倍数である場合、境界は整数と呼ばれる。整数境界上の２、４、８、および１６バイトには特別な名称が与えられる。ハーフワードは、２バイト境界上にある２個の連続バイトのグループであり、命令の基本的な構築ブロックである。ワードは、４バイト境界上にある４個の連続バイトのグループである。ダブルワードは、８バイト境界上にある８個の連続バイトのグループである。クアッドワード（ｑｕａｄｗｏｒｄ）は、１６バイト境界上にある１６個の連続バイトのグループである。記憶アドレスがハーフワード、ワード、ダブルワード、およびクアッドワードを指定した場合、アドレスの二進表現は、最も右側にそれぞれ１つ、２つ、３つ、または４つのゼロ・ビットを含む。命令は２バイトの整数境界上になければならない。ほとんどの命令の記憶オペランドは境界アラインメント要件を有しない。
【０１９８】
命令およびデータ・オペランドについて別個のキャッシュを実施するデバイス上では、命令が後にフェッチされるキャッシュ・ライン内にプログラムを記憶した場合、後にフェッチされる命令を記憶装置が変更するか否かにはかかわらず、著しい遅延が生じることがある。
【０１９９】
一実施形態において、本発明はソフトウェアによって実施することができる（ライセンスを受けた内部コード、ファームウェア、ミクロコード、ミリコード、ピココード等と称されることがあり、それらはいずれも本発明に適合する）。図３０を参照すると、本発明を具現化するソフトウェア・プログラム・コードは典型的に、ＣＤ−ＲＯＭドライブ、テープ・ドライブ、またはハード・ドライブ等の長期記憶媒体デバイス５０１１からホスト・システム５０００のプロセッサ５００１によってアクセスされる。ソフトウェア・プログラム・コードは、ディスケット、ハード・ドライブ、またはＣＤ−ＲＯＭ等、データ処理システムと共に用いるための様々な既知の媒体のいずれかにおいて具現化することができる。コードは、かかる媒体上に配布することができ、または、コンピュータ・メモリ５００２からユーザに配布するか、もしくは１つのコンピュータ・システムの記憶装置からネットワーク５０１０を介して、他のシステムのユーザにより用いるためにそのような他のコンピュータ・システムに配布することができる。
【０２００】
ソフトウェア・プログラム・コードは、様々なコンピュータ・コンポーネントおよび１つ以上のアプリケーション・プログラムの機能および相互作用を制御するオペレーティング・システムを含む。プログラム・コードは通常、記憶媒体デバイス５０１１から比較的高速のコンピュータ記憶装置５００２へとページされ、ここでプロセッサ５００１による処理のために利用可能となる。メモリ内もしくは物理媒体上でのソフトウェア・プログラム・コードの具現化、またはネットワークを介したソフトウェア・コードの分配、あるいはその両方のための技法および装置は周知であり、本明細書においてこれ以上は論じない。プログラム・コードは、タンジブルな媒体（限定ではないが、電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープ等を含む）上で生成され記憶された場合、「コンピュータ・プログラム」と称されることが多い。コンピュータ・プログラム媒体は典型的に、処理回路によって実行するために好ましくはコンピュータ・システムにおいて処理回路により読み取り可能である。
【０２０１】
図３１は、本発明を実施可能である代表的なワークステーションまたはサーバ・ハードウェア・システムを示す。図３１のシステム５０２０は、任意の周辺装置を含むパーソナル・コンピュータ、ワークステーション、またはサーバ等の代表的なベース・コンピュータ・システム５０２１を含む。ベース・コンピュータ・システム５０２１は、１つ以上のプロセッサ５０２６およびバスを含み、このバスは、既知の技法に従ってプロセッサ（複数のプロセッサ）５０２６とシステム５０２１の他のコンポーネントとの間を接続し通信を可能とするために用いられる。バスは、プロセッサ５０２６をメモリ５０２５および長期記憶装置５０２７に接続する。記憶装置５０２７は、例えばハード・ドライブ（例えば磁気媒体、ＣＤ、ＤＶＤ、およびフラッシュ・メモリのいずれかを含む）、またはテープ・ドライブを含むことができる。また、システム５０２１は、バスを介してマイクロプロセッサ５０２６を１つ以上のインタフェース・デバイスに接続するユーザ・インタフェース・アダプタを含むことができる。インタフェース・デバイスは、キーボード５０２４、マウス５０２３、プリンタ／スキャナ５０３０、または、タッチ・スクリーン、デジタル化入力パッド等のいずれかのユーザ・インタフェース・デバイスとすることができる他のインタフェース・デバイスあるいはそれら全て等である。また、バスは、ＬＣＤスクリーンまたはモニタ等のディスプレイ・デバイス５０２２を、ディスプレイ・アダプタを介してマイクロプロセッサ５０２６に接続する。
【０２０２】
システム５０２１は、５０２８をネットワーク５０２９に通信することができるネットワーク・アダプタによって他のコンピュータまたはコンピュータ・ネットワークと通信を行うことができる。例示的なネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネットまたはモデムである。あるいは、システム５０２１は、ＣＤＰＤ（セル式デジタル・パケット・データ）カード等の無線インタフェースを用いて通信を行うことができる。システム５０２１は、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）においてそのような他のコンピュータに関連付けることができ、またはシステム５０２１は、別のコンピュータ等を用いたクライアント／サーバ配置におけるクライアントとすることができる。これらの構成の全てならびに適切な通信ハードウェアおよびソフトウェアは、当技術分野において既知である。
【０２０３】
図３２は、本発明を実施可能なデータ処理ネットワーク５０４０を示す。データ処理ネットワーク５０４０は、無線ネットワークおよび有線ネットワーク等の複数の個別ネットワークを含み、その各々が複数の個別のワークステーション５０４１、５０４２、５０４３、５０４４を含むことができる。更に、当業者には認められるであろうが、１つ以上のＬＡＮを含むことができ、ＬＡＮはホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むことができる。
【０２０４】
更に図３２を参照すると、ネットワークは、ゲートウェイ・コンピュータ（クライアント・サーバ５０４６）またはアプリケーション・サーバ（データ・レポジトリにアクセスすることができ、ワークステーション５０４５から直接アクセスすることができる遠隔サーバ５０４８）等のメインフレーム・コンピュータまたはサーバを含むことができる。ゲートウェイ・コンピュータ５０４６は、個別の各ネットワークへのエントリ・ポイントとして機能する。１つのネットワーキング・プロトコルを別のものに接続する場合にゲートウェイが必要である。ゲートウェイ５０４６は、好ましくは通信リンクによって別のネットワーク（例えばインターネット５０４７）に結合することができる。また、ゲートウェイ５０４６は、通信リンクを用いて１つ以上のワークステーション５０１、５０４２、５０４３、５０４４に直接結合することができる。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから利用可能なＩＢＭ  ｅＳｅｒｖｅｒ（ＴＭ）  Ｓｙｓｔｅｍ  ｚ（Ｒ）サーバを用いて実施することができる。
【０２０５】
図３１および図３２を同時に参照すると、本発明を具現化することができるソフトウェア・プログラミング・コードは、ＣＤ−ＲＯＭドライブまたはハード・ドライブ等の長期記憶媒体５０２７からシステム５０２０のプロセッサ５０２６によってアクセスすることができる。ソフトウェア・プログラミング・コードは、ディスケット、ハード・ドライブ、またはＣＤ−ＲＯＭ等、データ処理システムと共に用いるための様々な既知の媒体のいずれかで具現化することができる。コードは、かかる媒体上に分配することができ、またはメモリからユーザ５０５０、５０５１に分配するか、もしくは１つのコンピュータ・システムの記憶装置からネットワークを介して他のコンピュータ・システムのユーザによって用いるためにそのような他のシステムに分配することができる。
【０２０６】
あるいは、プログラミング・コードは、メモリ５０２５において具現化し、プロセッサ・バスを用いてプロセッサ５０２６によってアクセスすることができる。かかるプログラミング・コードはオペレーティング・システムを含み、これが様々なコンピュータ・コンポーネントおよび１つ以上のアプリケーション・プログラム５０３２の機能および相互作用を制御する。プログラム・コードは、通常記憶媒体５０２７から高速メモリ５０２５にページされ、ここでプロセッサ５０２６による処理に利用可能となる。メモリ内もしくは物理媒体上でのソフトウェア・プログラム・コードの具現化、またはネットワークを介したソフトウェア・コードの分配、あるいはその両方のための技法および装置は周知であり、本明細書においてこれ以上は論じない。プログラム・コードは、タンジブルな媒体（限定ではないが、電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープ等を含む）上で生成され記憶された場合、「コンピュータ・プログラム」と称されることが多い。コンピュータ・プログラム媒体は典型的に、処理回路によって実行するために好ましくはコンピュータ・システムにおいて処理回路により読み取り可能である。
【０２０７】
プロセッサに対して最も容易に利用可能なキャッシュ（通常はプロセッサの他のキャッシュよりも高速かつ小型である）は、最下位（Ｌ１またはレベル１）キャッシュであり、主記憶装置（メイン・メモリ）は最上位キャッシュ（３レベルの場合Ｌ３）である。多くの場合、最下位キャッシュは、実行される機械命令を保持する命令キャッシュ（Ｉ−キャッシュ）と、データ・オペランドを保持するデータ・キャッシュ（Ｄ−キャッシュ）とに分割される。
【０２０８】
図３３を参照すると、プロセッサ５０２６について例示的なプロセッサの実施形態が示されている。典型的に、プロセッサ性能を向上させるため、キャッシュ５０５３の１つ以上のレベルを用いてメモリ・ブロックをバッファする。キャッシュ５０５３は、高速バッファであり、用いられる可能性の高いメモリ・データのキャッシュ・ラインを保持する。典型的なキャッシュ・ラインは６４、１２８、または２５６バイトのメモリ・データである。多くの場合、命令のキャッシュにはデータのキャッシュとは別個のキャッシュを用いる。キャッシュ・コヒーレンス（メモリおよびキャッシュにおけるラインのコピーの同期）は多くの場合、当技術分野において周知の様々な「スヌープ」アルゴリズムによって与えられる。プロセッサ・システムのメイン・メモリ記憶装置５０２５は、キャッシュと称されることが多い。４レベルのキャッシュ５０５３を有するプロセッサ・システムにおいて、主記憶装置５０２５は時にレベル５（Ｌ５）キャッシュと称される。これは通常もっと高速であり、コンピュータ・システムに利用可能な不揮発性記憶装置（ＤＡＳＤ、テープ等）の一部を保持するのみだからである。主記憶装置５０２５は、オペレーティング・システムによって主記憶装置５０２５の内外にページされるデータのページを「キャッシュする」。
【０２０９】
プログラム・カウンタ（命令カウンタ）５０６１は、実行対象の現在の命令のアドレスの経過を追っている。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）プロセッサのプログラム・カウンタは６４ビットであり、切り捨てて３１または２４ビットとして以前のアドレス指定の限度をサポートすることができる。プログラム・カウンタは典型的にはコンピュータのＰＳＷ（プログラム・ステータス・ワード）で具現化され、文脈切り換えの間持続するようになっている。このため、進行中の、プログラム・カウンタ値を有するプログラムは、例えばオペレーティング・システムによって割込をかけることができる（プログラム環境からオペレーティング・システム環境への文脈切り換え）。プログラムがアクティブでない間プログラムのＰＳＷはプログラム・カウンタ値を維持し、オペレーティング・システムが実行している間オペレーティング・システムのプログラム・カウンタ（ＰＳＷ）が用いられる。典型的に、プログラム・カウンタは現在の命令のバイト数に等しい量だけ増分される。ＲＩＳＣ（縮小命令セット・コンピューティング）命令は典型的に固定長であり、ＣＩＳＣ（復号命令セット・コンピューティング）命令は典型的に可変長である。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）の命令はＣＩＳＣ命令であり、長さは２、４、または６バイトである。プログラム・カウンタ５０６１は、例えば文脈切り換え動作または分岐命令の分岐選択動作のいずれかによって変更される。文脈切り換え動作においては、現在のプログラム・カウンタ値を、実行しているプログラムに関する他の状態情報（条件コード等）と共にプログラム・ステータス・ワードにセーブし、新しいプログラム・コード値をロードして、実行する新しいプログラム・モジュールの命令を指し示す。分岐選択動作は、分岐命令の結果をプログラム・カウンタ５０６１にロードすることによってプログラム内で決定またはループをプログラムが行うことを可能とするために、実行される。
【０２１０】
典型的に、命令フェッチ・ユニット５０５５を用いてプロセッサ５０２６のために命令をフェッチする。フェッチ・ユニットは、分岐選択命令のターゲット命令である「次の連続命令」、または文脈切り換え後のプログラムの第１の命令のいずれかをフェッチする。最新の命令フェッチ・ユニットは多くの場合、プリフェッチ技法を用いて、プリフェッチした命令を用いる可能性に基づいて命令を投機的にプリフェッチする。例えば、フェッチ・ユニットは、次の連続命令を含む命令の１６バイトおよび更に別の連続命令の追加バイトをフェッチすることができる。
【０２１１】
次いで、フェッチした命令をプロセッサ５０２６によって実行する。一実施形態においては、フェッチした命令（複数の命令）をフェッチ・ユニットのディスパッチ・ユニット５０５６に渡す。ディスパッチ・ユニットは命令（複数の命令）を復号して、復号した命令（複数の命令）に関する情報を適切なユニット５０５７、５０５８、５０６０に転送する。実行ユニット５０５７は典型的に、命令フェッチ・ユニット５０５５から復号した算術命令に関する情報を受信し、命令の操作符号に従ってオペランドに算術演算を実行する。オペランドは、好ましくはメモリ５０２５から、アーキテクチャ化されたレジスタ５０５９から、または実行している命令の即値フィールドから、実行ユニット５０５７に与えられる。実行の結果は、記憶される場合、メモリ５０２５、レジスタ５０５９、または他の機械ハードウェア（制御レジスタ、ＰＳＷレジスタ等）に記憶される。
【０２１２】
プロセッサ５０２６は典型的に、命令の機能を実行するための１つ以上のユニット５０５７、５０５８、５０６０を有する。図３４を参照すると、実行ユニット５０５７は、アーキテクチャ化された汎用レジスタ５０５９、復号／ディスパッチ・ユニット５０５６、ロード記憶ユニット５０６０、および他のプロセッサ・ユニット５０６５と、インタフェース論理５０７１を介して通信を行うことができる。実行ユニット５０５７は、いくつかのレジスタ回路５０６７、５０６８、５０６９を用いて、算術論理ユニット（ＡＬＵ）５０６６が動作を行う情報を保持することができる。ＡＬＵは、加算、減算、乗算、および除算等の算術演算を実行すると共に、論理積、論理和、および排他的論理和（ＸＯＲ）、回転、およびシフト等の論理関数を実行する。好ましくは、ＡＬＵは、設計に依存する特殊な動作をサポートする。他の回路は、例えば条件コードおよび回復サポート論理を含む他のアーキテクチャ化されたファシリティ５０７２を提供することができる。典型的に、ＡＬＵ動作の結果は出力レジスタ回路５０７０に保持され、これはこの結果を様々な他の処理機能に転送することができる。プロセッサ・ユニットには多くの構成があり、本記載は、単に一実施形態の代表的な理解を得ることを意図しているに過ぎない。
【０２１３】
例えばＡＤＤ命令は、算術および論理機能性を有する実行ユニット５０５７において実行されるが、例えば浮動小数点命令は、特殊な浮動小数点機能を有する浮動小数点実行において実行される。好ましくは、実行ユニットは、オペランドに対して操作符号規定関数を実行することによって、命令により識別されたオペランドに対して動作する。例えばＡＤＤ命令は、命令のレジスタ・フィールドにより識別された２つのレジスタ５０５９で見出されたオペランドに対して実行ユニット５０５７により実行することができる。
【０２１４】
実行ユニット５０５７は、２つのオペランドに対して算術加算を実行し、その結果を第３のオペランドに記憶する。第３のオペランドは、第３のレジスタまたは２つのソース・レジスタの１つとすることができる。実行ユニットは、好ましくは算術論理ユニット（ＡＬＵ）５０６６を用い、これは、シフト、回転、論理積、論理和、および排他的論理和等の様々な論理関数、ならびに、加算、減算、乗算、除算のいずれかを含む様々な代数関数を実行することができる。いくつかのＡＬＵ５０６６はスカラー演算のために設計され、いくつかは浮動小数点のために設計されている。データは、アーキテクチャに応じて、ビッグ・エンディアン（Ｂｉｇ  Ｅｎｄｉａｎ）（この場合、最下位バイトが最上位バイト・アドレスである）、またはリトル・エンディアン（Ｌｉｔｔｌｅ  Ｅｎｄｉａｎ）（この場合、最下位バイトが最下位バイト・アドレスである）のいずれかとすることができる。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）はビッグ・エンディアンである。符号付きフィールドは、アーキテクチャに応じて、符号および大きさ、１の補数、または２の補数とすることができる。２の補数は、ＡＬＵが減算機能を設計する必要がないという点で有利である。なぜなら、２の補数における負の値または正の値に必要なのはＡＬＵ内の加算のみだからである。数は一般に略記で記述され、例えば１２ビット・フィールドが４，０９６バイト・ブロックのアドレスを規定し、４Ｋバイト（キロバイト）・ブロックと一般に記載される。
【０２１５】
図３５を参照すると、分岐命令を実行するための分岐命令情報は典型的に分岐ユニット５０５８に送信され、これは多くの場合、分岐履歴テーブル５０８２等の分岐予想アルゴリズムを用いて、他の条件動作が完了する前に分岐の結果を予想する。現在の分岐命令のターゲットをフェッチし、投機的に実行した後に条件動作が完了する。条件動作が完了すると、条件動作の条件および投機結果に基づいて、投機的に実行した分岐命令を完了させるかまたは廃棄する。典型的な分岐命令は、条件コードをテストし、条件コードが分岐命令の分岐要件を満足させた場合にはターゲット・アドレスに分岐することができる。ターゲット・アドレスは、例えば命令のレジスタ・フィールドまたは即値フィールドで見出されたものを含むいくつかの数に基づいて計算することができる。分岐ユニット５０５８は、複数の入力レジスタ回路５０７５、５０７６、５０７７を有するＡＬＵ５０７４および出力レジスタ回路５０８０を用いることができる。分岐ユニット５０５８は、例えば、汎用レジスタ５０５９、復号ディスパッチ・ユニット５０５６、または他の回路５０７３と通信することができる。
【０２１６】
命令グループの実行は、例えば、オペレーティング・システムにより開始された文脈切り換え、文脈切り換えを生じるプログラム例外またはエラー、文脈切り換えまたは複数のプログラムの多スレッド・アクティビティを生じる（多スレッド環境において）Ｉ／Ｏ割込信号を含む様々な理由で割込を受ける可能性がある。好ましくは、文脈切り換えアクションでは、現在実行しているプログラムに関する状態情報をセーブし、次いで呼び出している別のプログラムに関する状態情報をロードする。状態情報は、例えばハードウェア・レジスタまたはメモリにセーブすることができる。状態情報は、好ましくは、実行される次の命令を指し示すプログラム・カウンタ値、条件コード、メモリ変換情報、およびアーキテクチャ化されたレジスタ内容を含む。文脈切り換えアクティビティは、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、またはファームウェア・コード（ミクロコード、ピココード、またはライセンスを受けた内部コード（ＬＩＣ））によって、単独でまたは組み合わせて実行することができる。
【０２１７】
プロセッサは、命令規定方法に従ってオペランドにアクセスする。命令は、命令の一部の値を用いて即値オペランドを提供することができ、汎用レジスタまたは特殊目的レジスタ（例えば浮動小数点レジスタ）のいずれかを明示的に指し示す１つ以上のレジスタ・フィールドを提供することができる。命令は、オペランドとして操作符号フィールドにより識別した、暗示されたレジスタを利用することができる。命令は、オペランドのためにメモリ位置を用いることができる。オペランドのメモリ位置は、レジスタ、即値フィールド、またはレジスタおよび即値フィールドの組み合わせによって提供することができ、これはｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）長変位ファシリティによって例示される。ここで、命令は、ベース・レジスタ、インデックス・レジスタ、および即値フィールド（変位フィールド）を規定し、これらを加算して例えばメモリ内のオペランドのアドレスを提供する。本明細書において、位置は典型的に、特に指示しない限りメイン・メモリ（主記憶装置）内の位置を示す。
【０２１８】
図３６を参照すると、プロセッサは、ロード／記憶ユニット５０６０を用いて記憶装置にアクセスする。ロード／記憶ユニット５０６０は、メモリ５０５３においてターゲット・オペランドのアドレスを取得してオペランドをレジスタ５０５９またはメモリ５０５３の別の位置にロードすることによってロード動作を実行することができ、または、メモリ５０５３においてターゲット・オペランドのアドレスを取得してレジスタ５０５９またはメモリ５０５３の別の位置から取得したデータをメモリ５０５３内のターゲット・オペランド位置に記憶することによって、記憶動作を実行することができる。ロード／記憶ユニット５０６０は投機的なものとすることができ、命令シーケンスに対してアウト・オブ・オーダーのシーケンスでメモリにアクセスすることができるが、ロード／記憶ユニット５０６０は、命令がイン・オーダーで実行されたようにプログラムに対して外観を維持しなければならない。ロード／記憶ユニット５０６０は、汎用レジスタ５０５９、復号／ディスパッチ・ユニット５０５６、キャッシュ／メモリ・インタフェース５０５３、または他の要素５０８３と通信を行うことができ、様々なレジスタ回路、ＡＬＵ５０８５、および制御論理５０９０を含んで、記憶アドレスを計算すると共に、パイプライン処理を順に行って動作をイン・オーダーに維持する。いくつかの動作はアウト・オブ・オーダーである場合があるが、ロード／記憶ユニットは、プログラムに対してアウト・オブ・オーダーの動作がイン・オーダーで実行されたように見せる機能性を提供する。これについては当技術分野において周知である。
【０２１９】
好ましくは、アプリケーション・プログラムが「見る」アドレスは、仮想アドレスと称されることが多い。仮想アドレスは時に「論理アドレス」および「実効アドレス」と称される。これらの仮想アドレスは、様々な動的アドレス変換（ＤＡＴ）技術の１つによって物理メモリ位置に再送出されるという点で仮想である。この技術は、限定ではないが、単にオフセット値で仮想アドレスにプレフィックスを付けること、仮想アドレスを１つ以上の変換テーブルにより変換することを含み、変換テーブルは好ましくは、少なくともセグメント・テーブルおよびページ・テーブルを単独でまたは組み合わせて含み、好ましくはセグメント・テーブルはページ・テーブルを指し示すエントリを有する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）では、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、および任意のページ・テーブルを含む変換の階層が与えられる。多くの場合、アドレス変換の性能を向上させるためには、仮想アドレスを関連する物理メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ（ＴＬＢ）を利用する。エントリは、ＤＡＴが変換テーブルを用いて仮想アドレスを変換する際に生成される。この後に仮想アドレスを用いると、低速の連続変換テーブル・アクセスでなく高速のＴＬＢのエントリを利用することができる。ＴＬＢ内容は、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）を含む様々な置換アルゴリズムによって管理することができる。
【０２２０】
プロセッサがマルチプロセッサ・システムのプロセッサである場合、各プロセッサは、コヒーレンシのために、Ｉ／Ｏ、キャッシュ、ＴＬＢ、およびメモリ等の共有リソースをインターロック状態に保持する責任を有する。典型的に、キャッシュ・コヒーレンシを維持する際には「スヌープ」技術が用いられる。スヌープ環境では、共有を容易にするために、各キャッシュ・ラインを、共有状態、排他的状態、変更状態、無効状態等のいずれか１つとしてマーク付けすることができる。
【０２２１】
Ｉ／Ｏユニット５０５４（図３３）は、プロセッサに、例えばテープ、ディスク、ポインタ、ディスプレイ、およびネットワークを含む周辺装置に取り付けるための手段を提供する。Ｉ／Ｏユニットは多くの場合、ソフトウェア・ドライバによってコンピュータ・プログラムに提示される。ＩＢＭ（Ｒ）からのＳｙｓｔｅｍ  ｚ（Ｒ）等のメインフレームにおいては、チャネル・アダプタおよびオープン・システム・アダプタがメインフレームのＩ／Ｏユニットであり、オペレーティング・システムと周辺装置間の通信を提供する。
【０２２２】
更に、他のタイプのコンピューティング環境も本発明の１つ以上の態様から利益を得ることができる。一例として、環境はエミュレータ（例えばソフトウェアまたは他のエミュレーション機構）を含むことができ、この場合、特定のアーキテクチャ（例えば命令実行、アドレス変換等のアーキテクチャ化された機能、およびアーキテクチャ化されたレジスタ）またはそのサブセットがエミュレートされる（例えばプロセッサおよびメモリを有するネイティブのコンピュータ・システム上で）。かかる環境においては、エミュレータを実行するコンピュータがエミュレートしている機能とは異なるアーキテクチャを有する場合であっても、エミュレータの１つ以上のエミュレーション機能が本発明の１つ以上の態様を実施することができる。一例として、エミュレーション・モードにおいて、エミュレートしている特定の命令または動作が復号され、適切なエミュレーション機能を構築して個々の命令または動作が実施される。
【０２２３】
エミュレーション環境において、ホスト・コンピュータは例えば、命令およびデータを記憶するメモリと、メモリから命令をフェッチし、任意にフェッチした命令のためのローカル・バッファを提供する命令フェッチ・ユニットと、フェッチした命令を受信し、フェッチされた命令のタイプを判定する命令復号ユニットと、命令を実行するための命令実行ユニットと、を含む。実行は、メモリからレジスタにデータをロードすること、レジスタからメモリにデータを戻して記憶すること、または、復号ユニットによる判定に従って、あるタイプの算術または論理演算を実行することを含むことができる。一例では、各ユニットはソフトウェアにおいて実施される。例えば、ユニットにより実行されている動作は、エミュレータ・ソフトウェア内の１つ以上のサブルーチンとして実施される。
【０２２４】
更に具体的には、メインフレームにおいて、アーキテクチャ化された機械命令は、通常は今日の「Ｃ」プログラマのようなプログラマにより、多くの場合コンピュータ・アプリケーションによって用いられる。記憶媒体に記憶されたこれらの命令は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）ＩＢＭ（Ｒ）サーバによってネイティブに、または他のアーキテクチャを実行する機械において実行することができる。それらは、既存のおよび今後のＩＢＭ（Ｒ）メインフレーム・サーバにおいて、およびＩＢＭ（Ｒ）の他の機械（例えばＰｏｗｅｒ  Ｓｙｓｔｅｍｓ（Ｒ）サーバおよびＳｙｓｔｅｍ  ｘ（Ｒ）Ｓｅｒｖｅｒ）上で、エミュレートすることができる。それらは、ＩＢＭ（Ｒ）、Ｉｎｔｅｌ（Ｒ）、ＡＭＤ（ＴＭ）および他の企業により製造されたハードウェアを用いて、多種多様な機械上でＬｉｎｕｘ（Ｒ）を実行する機械において実行することができる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（Ｒ）のもとでそのハードウェア上での実行以外に、Ｌｉｎｕｘおよび、ＴｕｒｂｏＨｅｒｃｕｌｅｓ（ｗｗｗ．ｔｕｒｂｏｈｅｒｃｕｌｅｓ．ｃｏｍ／）またはＨｅｒｃｕｌｅｓ（ｗｗｗ．ｈｅｃｕｌｅｓ−３９０．ｏｒｇ／）またはＦＳＩ（Ｆｕｎｄａｍｅｎｔａｌ  Ｓｏｆｔｗａｒｅ，  Ｉｎｃ．）（ｗｗｗ．ｆｕｎｓｏｆｔ．ｃｏｍ／）によるエミュレーションを用いる機械を用いることができ、この場合は一般に実行はエミュレーション・モードである。エミュレーション・モードでは、エミュレーション・ソフトウェアはネイティブ・プロセッサにより実行されて、エミュレートしたプロセッサのアーキテクチャをエミュレートする。
【０２２５】
ネイティブ・プロセッサは典型的に、ファームウェアまたはネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行して、エミュレートしたプロセッサのエミュレーションを実行する。エミュレーション・ソフトウェアは、エミュレートしたプロセッサ・アーキテクチャの命令をフェッチし実行する責任を有する。エミュレーション・ソフトウェアは、エミュレートしたプログラム・カウンタを維持して、命令境界の経過を追う。エミュレーション・ソフトウェアは、１度に１つ以上のエミュレートした機械命令をフェッチし、その１つ以上のエミュレートした機械命令をネイティブ・プロセッサによる実行のために対応するネイティブ機械命令グループに変換することができる。これらの変換した命令は、より高速の変換を達成可能であるようにキャッシュすることができる。それにもかかわらず、エミュレーション・ソフトウェアは、エミュレートしたプロセッサ・アーキテクチャのアーキテクチャ・ルールを維持して、エミュレートしたプロセッサのために書かれたオペレーティング・システムおよびアプリケーションが正しく動作することを保証しなければならない。更に、エミュレーション・ソフトウェアは、エミュレートしたプロセッサ・アーキテクチャによって識別されたリソースを提供しなければならない。このアーキテクチャは、限定ではないが、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブルおよびページ・テーブルを含む動的アドレス変換機能、割込機構、文脈切り換え機構、ＴＯＤ（Ｔｉｍｅ  ｏｆ  Ｄａｙ）クロック、およびＩ／Ｏサブシステムに対するアーキテクチャ化されたインタフェースを含み、エミュレートしたプロセッサ上で動作するように設計されたオペレーティング・システムまたはアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で動作可能であるようになっている。
【０２２６】
エミュレートされた特定の命令が復号され、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば「Ｃ」サブルーチンもしくはドライバにおいて、または好適な実施形態の記載を理解した後に当業者の技術の範囲内にあるような特定のハードウェアのためのドライバを提供する他の何らかの方法において、実施される。様々なソフトウェアおよびハードウェア・エミュレーション特許は、限定ではないが、Ｂｅａｕｓｏｌｅｉｌ等による「Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ｈａｒｄｗａｒｅ  Ｅｍｕｌａｔｉｏｎ」と題する米国特許第５，５５１，０１３号、Ｓｃａｌｚｉ等による「Ｐｒｅｐｒｏｃｅｓｓｉｎｇ  ｏｆ  Ｓｔｏｒｅｄ  Ｔａｒｇｅｔ  Ｒｏｕｔｉｎｅｓ  ｆｏｒ  Ｅｍｕｌａｔｉｎｇ  Ｉｎｃｏｍｐａｔｉｂｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  Ｔａｒｇｅｔ  Ｐｒｏｃｅｓｓｏｒ」と題する米国特許第６，００９，２６１号、Ｄａｖｉｄｉａｎ等による「Ｄｅｃｏｄｉｎｇ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎ  ｔｏ  Ｄｉｒｅｃｔｌｙ  Ａｃｃｅｓｓ  Ｅｍｕｌａｔｉｏｎ  Ｒｏｕｔｉｎｅｓ  ｔｈａｔ  Ｅｍｕｌａｔｅ  ｔｈｅ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ」と題する米国特許第５，５７４，８７３号、Ｇｏｒｉｓｈｅｋ等による「Ｓｙｍｍｅｔｒｉｃａｌ  Ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ  Ｂｕｓ  ａｎｄ  Ｃｈｉｐｓｅｔ  Ｕｓｅｄ  ｆｏｒ  Ｃｏｐｒｏｃｅｓｓｏｒ  Ｓｕｐｐｏｒｔ  Ａｌｌｏｗｉｎｇ  Ｎｏｎ−Ｎａｔｉｖｅ  Ｃｏｄｅ  ｔｏ  Ｒｕｎ  ｉｎ  ａ  Ｓｙｓｔｅｍ」と題する米国特許第６，３０８，２５５号、Ｌｅｔｈｉｎ等による「Ｄｙｎａｍｉｃ  Ｏｐｔｉｍｉｚｉｎｇ  Ｏｂｊｅｃｔ  Ｃｏｄｅ  Ｔｒａｎｓｌａｔｏｒ  ｆｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｅｍｕｌａｔｉｏｎ  ａｎｄ  Ｄｙｎａｍｉｃ  Ｏｐｔｉｍｉｚｉｎｇ  Ｏｂｊｅｃｔ  Ｃｏｄｅ  Ｔｒａｎｓｌａｔｉｏｎ  Ｍｅｔｈｏｄ」と題する米国特許第６，４６３，５８２号、Ｅｒｉｃ  Ｔｒａｕｔによる「Ｍｅｔｈｏｄ  ｆｏｒ  Ｅｍｕｌａｔｉｎｇ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  Ｈｏｓｔ  Ｃｏｍｐｕｔｅｒ  Ｔｈｒｏｕｇｈ  Ｄｙｎａｍｉｃ  Ｒｅｃｏｍｐｉｌａｔｉｏｎ  ｏｆ  Ｈｏｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ」と題する米国特許第５，７９０，８２５号、および他の多くのものが含まれる。これらは、当業者に利用可能なターゲット機械のための異なる機械向けにアーキテクチャ化された命令フォーマットのエミュレーションを達成するための様々な既知の方法を例示している。
【０２２７】
図３７において、ホスト・コンピュータ・システム５０００’をエミュレートする、エミュレートされたホスト・コンピュータ・システム５０９２の一例が示されている。エミュレートされたホスト・コンピュータ・システム５０９２において、ホスト・プロセッサ（ＣＰＵ）５０９１はエミュレートされたホスト・プロセッサ（または仮想ホスト・プロセッサ）であり、ホスト・コンピュータ５０００’のプロセッサ５０９１のものとは異なるネイティブ命令セット・アーキテクチャを有するエミュレーション・プロセッサ５０９３を含む。エミュレートされたホスト・コンピュータ・システム５０９２は、エミュレーション・プロセッサ５０９３にアクセス可能なメモリ５０９４を有する。例示的な実施形態においては、メモリ５０９４は、ホスト・コンピュータ・メモリ部分５０９６およびエミュレーション・ルーチン部分５０９７に分割されている。ホスト・コンピュータ・メモリ５０９６は、ホスト・コンピュータ・アーキテクチャに従って、エミュレートされたホスト・コンピュータ５０９２のプログラムに利用可能である。エミュレーション・プロセッサ５０９３は、エミュレートされたプロセッサ５０９１のものとは異なるアーキテクチャのアーキテクチャ化された命令セットのネイティブ命令を実行し、このネイティブ命令はエミュレーション・ルーチン・メモリ５０９７から取得されたものである。更に、エミュレーション・プロセッサ５０９３は、シーケンスおよびアクセス／復号ルーチンにおいて取得される１つ以上の命令を用いることによって、ホスト・コンピュータ・メモリ５０９６におけるプログラムから実行するためのホスト命令にアクセスすることができ、このシーケンスおよびアクセス／復号ルーチンは、アクセスされたホスト命令（複数の命令）を復号して、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判定することができる。例えば汎用レジスタ、制御レジスタ、動的アドレス変換、Ｉ／Ｏサブシステム・サポート、およびプロセッサ・キャッシュを含む、ホスト・コンピュータ・システム５０００’のために規定された他のファシリティを、アーキテクチャ化されたファシリティ・ルーチンによってエミュレートすることができる。また、エミュレーション・ルーチンは、エミュレーション・プロセッサ５０９３において利用可能な機能（汎用レジスタおよび仮想アドレスの動的変換等）を利用して、エミュレーション・ルーチンの性能を向上させることができる。また、ホスト・コンピュータ５０００’の機能をエミュレートする際にプロセッサ５０９３を支援するために、特別なハードウェアおよびオフ・ロード・エンジンを提供することも可能である。
【０２２８】
本明細書において用いた用語は、特定の実施形態を記載する目的のためだけのものであり、本開示を限定することは意図していない。本明細書において用いたように、単数形「１つの（ａ）、（ａｎ）、（ｔｈｅ）」は、文脈によって明らかに他の場合が示されない限り、複数形を含むことが意図されている。また、「含む」または「含んでいる」という言葉あるいはその両方は、本明細書において用いられた場合、述べた特徴、整数、ステップ、動作、要素、または構成要素あるいはそれら全ての存在を規定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループあるいはそれら全ての存在または追加を除外するものではないことは、理解されよう。
【０２２９】
以下の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的に特許請求したような他の特許請求した要素と組み合わせて機能を実行するためのいずれかの構造、材料、または行為を含むことが意図されている。本発明の記載は、例示および記述の目的のために提示したが、網羅的であることや、開示した形態に本発明を限定することは、意図していない。本発明の範囲から逸脱することなく、当業者には多くの変更および変形が明らかであろう。実施形態は、本開示の原理および実際的な用途を最良に説明するため、更に、想定される特定の用途に適した様々な変更と共に様々な実施形態に関して当業者が本発明を理解することを可能とするために、選択し記載したものである。
【図１】
2013538378.tif 000003
【図２】
2013538378.tif 000004
【図３】
2013538378.tif 000005
【図４】
2013538378.tif 000006
【図５】
2013538378.tif 000007
【図６】
2013538378.tif 000008
【図７】
2013538378.tif 000009
【図８】
2013538378.tif 000010
【図９】
2013538378.tif 000011
【図１０】
2013538378.tif 000012
【図１１】
2013538378.tif 000013
【図１２】
2013538378.tif 000014
【図１３】
2013538378.tif 000015
【図１４】
2013538378.tif 000016
【図１５】
2013538378.tif 000017
【図１６】
2013538378.tif 000018
【図１７】
2013538378.tif 000019
【図１８】
2013538378.tif 000020
【図１９】
2013538378.tif 000021
【図２０】
2013538378.tif 000022
【図２１】
2013538378.tif 000023
【図２２】
2013538378.tif 000024
【図２３】
2013538378.tif 000025
【図２４】
2013538378.tif 000026
【図２５】
2013538378.tif 000027
【図２６】
2013538378.tif 000028
【図２７】
2013538378.tif 000029
【図２８】
2013538378.tif 000030
【図２９】
2013538378.tif 000031
【図３０】
2013538378.tif 000032
【図３１】
2013538378.tif 000033
【図３２】
2013538378.tif 000034
【図３３】
2013538378.tif 000035
【図３４】
2013538378.tif 000036
【図３５】
2013538378.tif 000037
【図３６】
2013538378.tif 000038
【図３７】
2013538378.tif 000039
2013538378.tif 000040
2013538378.tif 000041
2013538378.tif 000042
2013538378.tif 000043
2013538378.tif 000044
2013538378.tif 000045
2013538378.tif 000046
2013538378.tif 000047
2013538378.tif 000048
2013538378.tif 000049
2013538378.tif 000050
2013538378.tif 000051
2013538378.tif 000052
2013538378.tif 000053
2013538378.tif 000054
2013538378.tif 000055
2013538378.tif 000056
2013538378.tif 000057
2013538378.tif 000058
2013538378.tif 000059
2013538378.tif 000060
2013538378.tif 000061
2013538378.tif 000062
2013538378.tif 000063
2013538378.tif 000064
2013538378.tif 000065
2013538378.tif 000066
2013538378.tif 000067
2013538378.tif 000068
2013538378.tif 000069
2013538378.tif 000070
2013538378.tif 000071
2013538378.tif 000072
2013538378.tif 000073
2013538378.tif 000074
2013538378.tif 000075
2013538378.tif 000076
【手続補正書】
【提出日】平成24年12月26日(2012.12.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータ・システムによりコンピューティング環境におけるリソース使用を測定する方法であって、
アダプタを識別するための機能ハンドルを含み、情報を追跡するためのメモリ内の位置を指定するＰＣＩ機能制御変更命令を実行することと、
前記コンピューティング環境のアダプタ機能が、前記アダプタ機能に結合されたシステム・メモリの命令によってアクセスされているか、またはアクセスを要求していると判定することと、
前記アダプタ機能に固有の情報を追跡することであって、前記追跡された情報が判定されたアクセス命令のカウントまたは判定されたメモリへのアクセス要求のカウントを含み、前記追跡された情報がアダプタ機能ごとのものである、ことと、
前記追跡された情報をメモリ内の前記位置に記憶することと、
を含む、方法。
【請求項２】
前記判定することが、前記アダプタ機能が命令によってアクセスされていると判定し、前記追跡することが、
前記命令のタイプを判定することと、
前記命令の前記タイプおよび前記アダプタ機能に対して排他的に与えられたカウンタを更新することと、
を更に含む、請求項１に記載の方法。
【請求項３】
ロード命令、記憶命令、記憶阻止命令、変更命令、およびリフレッシュ変換命令を含む複数のタイプの命令があり、それらの各々が前記アダプタ機能にアクセスするために個別に用いられる、請求項２に記載の方法。
【請求項４】
前記判定することが、前記アダプタ機能がメモリ・アクセス動作を要求していると判定し、前記追跡することが、
メモリ・アクセス動作のタイプを判定することと、
前記アダプタ機能および前記メモリ・アクセス動作の前記タイプに対して排他的に与えられたカウンタを更新することと、
を更に含む、請求項１に記載の方法。
【請求項５】
読み取りアクセスおよび書き込みアクセスを含む複数のタイプのメモリ・アクセス動作がある、請求項４に記載の方法。
【請求項６】
前記アダプタ機能に複数のアドレス空間が割り当てられ、前記カウンタが前記複数のアドレス空間の１つのアドレス空間に固有のものである、請求項４に記載の方法。
【請求項７】
前記追跡することが１つ以上のカウンタを更新することを含み、前記１つ以上のカウンタが、前記アダプタ機能に固有のものであり、前記アダプタ機能に関連付けられた入出力トラフィックを反映する、請求項１に記載の方法。
【請求項８】
前記方法が前記追跡された情報を自動的にユーザに提示することを更に含む、請求項１に記載の方法。
【請求項９】
前記追跡することが１つ以上のカウンタを更新することを含み、前記自動的に提示することが、前記ユーザにアクセス可能な制御ブロックを前記１つ以上のカウンタからの値で周期的に更新することを含む、請求項８に記載の方法。
【請求項１０】
前記方法が、前記アダプタ機能について追跡を実行するか否かを判定することを更に含み、追跡がアダプタ機能ごとにイネーブルされ、更に、追跡を実行するという判定に応答して前記追跡を実行することを含む、請求項１に記載の方法。
【請求項１１】
コンピューティング環境におけるリソース使用を測定するためのコンピュータ・システムであって、
メモリと、
前記メモリと通信状態にあるプロセッサと、
アダプタを識別するための機能ハンドルを含み、情報を追跡するためのメモリ内の位置を指定するＰＣＩ機能制御変更命令を実行するための実行器と、
前記コンピューティング環境のアダプタ機能が、前記アダプタ機能に結合されたシステム・メモリの命令によってアクセスされているか、またはアクセスを要求していると判定するための判定器と、
前記アダプタ機能に固有の情報を追跡するための追跡器であって、前記追跡された情報が判定されたアクセス命令のカウントまたは判定されたメモリへのアクセス要求のカウントを含み、前記追跡された情報がアダプタ機能ごとのものである、追跡器と、
前記追跡情報をメモリ内の前記位置に記憶するための記憶器と、
を含む、コンピュータ・システム。
【請求項１２】
コンピュータ・プログラムであって、コンピュータ・システムにロードされて実行された場合、請求項１から１０のいずれかに記載の方法を前記コンピュータ・システムに実行させる、コンピュータ・プログラム。
【国際調査報告】
2013538378.tif 000077
2013538378.tif 000078
2013538378.tif 000079