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