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