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