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