(57)【要約】      （修正有）【課題】少なくとも１個のゲスト処理システムの入出力（Ｉ／Ｏ）処理を促進するための製品、方法およびシステムを提供する。【解決手段】少なくとも１個のゲスト処理システムの入出力（Ｉ／Ｏ）処理を促進するためのコンピュータ読み取り可能なプログラム・コード論理が、少なくとも１個のゲスト処理システムのためにネイティブ・システム上でＩ／Ｏアーキテクチャをエミュレートし、前記Ｉ／Ｏアーキテクチャの複数個のＩ／Ｏ装置のためにマルチ装置マネジャを提供し、そのマルチ装置マネジャを少なくとも１個のネットワーク・ドライバ・プロセスにインターフェースする少なくとも１個の通信アダプタ・プロセスを提供し、そのマルチ装置マネジャが、少なくとも１個のゲスト処理システム・フォーマットでのＩ／Ｏメッセージをネイティブ・システム・フォーマットでのメッセージに翻訳し、これによってＩ／Ｏ処理を促進する。【選択図】図１
2008293479.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１個のゲスト処理システムの入出力（Ｉ／Ｏ）処理を促進するため以下のステップをコンピュータに実行させるプログラムであって、
前記少なくとも１個のゲスト処理システムのためにネイティブ・システム上でＩ／Ｏアーキテクチャをエミュレートするステップであって、前記エミュレートするステップが、
前記Ｉ／Ｏアーキテクチャの複数個のＩ／Ｏ装置のためにマルチ装置マネジャを提供するステップと、
前記マルチ装置マネジャを少なくとも１個のネットワーク・ドライバ・プロセスにインターフェースする少なくとも１個の通信アダプタ・プロセスを提供するステップとを含み、
前記少なくとも１個の通信アダプタ・プロセスによって処理するために、前記マルチ装置マネジャが、少なくとも１個のゲスト処理システム・フォーマットでのＩ／Ｏメッセージをネイティブ・システム・フォーマットでのメッセージに翻訳し、これによって前記少なくとも１個のゲスト処理システムのＩ／Ｏ処理を促進する、前記プログラム。
【請求項２】
前記マルチ装置マネジャを提供するステップが、前記Ｉ／Ｏアーキテクチャの前記複数個のＩ／Ｏ装置の各Ｉ／Ｏごとに別個の装置マネジャを提供するステップを含む、請求項１に記載のプログラム。
【請求項３】
各メッセージ・キューが前記マルチ装置マネジャの個々の装置マネジャと関連するようなマルチ・メッセージ・キューを提供するステップを、前記エミュレートするステップが更に含み、前記マルチ・メッセージ・キューがネイティブ・システム・フォーマットでのメッセージを前記少なくとも１個の通信アダプタ・プロセスに通すのを促進する、請求項２に記載のプログラム。
【請求項４】
前記少なくとも１個の通信アダプタ・プロセスによる処理のために、前記マルチ装置マネジャがマルチ・ゲスト処理システム・フォーマットでのＩ／Ｏメッセージを、ネイティブ・システム・フォーマットでのメッセージに翻訳する、請求項１に記載のプログラム。
【請求項５】
前記少なくとも１個の通信アダプタ・プロセスの共通通信アダプタ・プロセスによる処理のために、マルチ・ゲスト処理システム・フォーマットでのＩ／Ｏメッセージがマルチ装置マネジャによりネイティブ・システム・フォーマットに翻訳される、請求項４に記載のプログラム。
【請求項６】
マルチ・ゲスト処理システム・フォーマットでのＩ／Ｏコマンドが、ＱＤＩＯプロトコル・フォーマットでのチャネル・コマンド・ワード（ＣＣＷ）と非ＱＤＩＯプロトコル・フォーマットでのＣＣＷとを含む、請求項４に記載のプログラム。
【請求項７】
少なくとも１個の通信アダプタ・プロセスの共通通信アダプタ・プロセスによって処理するためにネイティブ・システム・フォーマットでのメッセージに、マルチ・ゲスト処理システムでのＩ／Ｏコマンドを前記マルチ装置マネジャが翻訳し、かつ前記共通通信アダプタ・プロセスがオープン・システムズ・アダプタ（ＯＳＡ）プロセスである、請求項６に記載のプログラム。
【請求項８】
前記エミュ レートするステップが、前記少なくとも１個の通信アダプタ・プロセスを介してアクセス可能なマルチ・ネットワーク・ドライバ・インターフェースを提供するステップを更に含み、かつ前記マルチ装置マネジャが、前記少なくとも１個の通信アダプタ・プロセスにまたがるマルチ・ネットワーク・ドライバ・インターフェースを共有する、請求項１に記載のプログラム。
【請求項９】
前記少なくとも１個のゲスト処理システムが、マルチの隔離されたメモリ・ブロックに区画されたメモリを含み、かつ前記エミュレートするステップが前記マルチの隔離されたメモリ・ブロックの各メモリ・ブロックに前記マルチ装置マネジャの各装置マネジャがアクセスするのを許容するステップを含む、請求項１に記載のプログラム。
【請求項１０】
前記エミュレートするステップが更に、Ｉ／Ｏアーキテクチャのエミュレーションを初期化するステップを含み、該初期化するステップが更に、
定義した入出力構成ディレクトリから構成情報を得ることによりマルチ装置マネジャを初期化するステップ、
各初期化された装置マネジャのためにメッセージ・キューを生成するステップ、
少なくとも１個の通信アダプタ・プロセスを初期化するステップ、 
少なくとも１個の通信アダプタ・プロセスごとに、エミュレータ・サービス・インターフェースを介してアクセス可能なサービス・キューを生成するステップ、および
初期化の完了を知らせるステップであって、その後は前記少なくとも１個のゲスト処理システム・フォーマットでのＩ／Ｏメッセージが前記マルチ装置マネジャで翻訳のために受け取ることができるように前記知らせるステップ、
により行われる、請求項１に記載のプログラム。
【請求項１１】
少なくとも１個のゲスト処理システム・フォーマットでのＩ／Ｏメッセージが、チャネル・コマンド・ワード（ＣＣＷ）を含み、
前記エミュレートするステップが、
装置マネジャにより少なくとも１個のＣＣＷをインターセプトするステップと、
前記少なくとも１個の通信アダプタ・プロセスによる処理のために少なくとも１個のＣＣＷをネイティブ・システム・フォーマットでの少なくとも１個のメッセージに翻訳するステップと、
前記装置マネジャに関連するメッセージ・キュー上にネイティブ・システム・フォーマットでの少なくとも１個のメッセージを置くステップと、
前記少なくとも１個の通信アダプタ・プロセスのところでネイティブ・システム・フォーマットでの前記少なくとも１個のメッセージを前記メッセージ・キューを介して受け取るステップと、
前記少なくとも１個の通信アダプタ・プロセスのところでネイティブ・システム・フォーマットでの前記少なくとも１個のメッセージの通信アダプタ処理を提供するステップと、
その後、前記少なくとも１個の通信アダプタ・プロセスから出力されたデータをネットワーク・インターフェースに送信するステップと、
を更に含む、請求項１に記載のプログラム。
【請求項１２】
前記少なくとも１個の通信アダプタ・プロセスおよび少なくとも１個のマルチ装置マネジャが前記エミュレートされたＩ／Ｏアーキテクチャの少なくとも１個のＩ／Ｏサブシステムを構成し、かつ
前記エミュレートするステップが、
前記少なくとも１個のＩ／ＯサブシステムのＩ／Ｏサブシステムごとに、前記Ｉ／Ｏサブシステムの状態についてのメモリ回復情報を定期的に保存するステップと、
前記Ｉ／Ｏサブシステムのための前記定期的に保存された回復情報を用い前記Ｉ／Ｏサブシステムで障害からトランスペアレントに回復するステップと、
を更に含む、請求項１に記載のプログラム。
【請求項１３】
前記トランスペアレントに回復するステップが、障害を生じた通信アダプタ・プロセスまたは前記Ｉ／Ｏサブシステムの装置マネジャをその障害時の保存された状態に向けて再スタートするステップを含む、請求項１２に記載のプログラム。
【請求項１４】
前記少なくとも１個のＩ／Ｏサブシステムが少なくとも１個のｃｈｐｉｄにあり、かつ前記少なくとも１個のその通信アダプタ・プロセスが少なくとも１個のオープン・システムズ・アダプタ（ＯＳＡ）プロセスである、請求項１３に記載のプログラム。
【請求項１５】
少なくとも１個のゲスト処理システムの入出力（Ｉ／Ｏ）処理を促進するためのコンピュータ実行可能な方法であって、
前記少なくとも１個のゲスト処理システムのためにネイティブ・システム上でＩ／Ｏアーキテクチャをエミュレートするステップであって、前記エミュレートするステップが、
前記Ｉ／Ｏアーキテクチャの複数個のＩ／Ｏ装置のためにマルチ装置マネジャを提供するステップと、
前記マルチ装置マネジャを少なくとも１個のネットワーク・ドライバ・プロセスにインターフェースする少なくとも１個の通信アダプタ・プロセスを提供するステップとを含み、
前記少なくとも１個の通信アダプタ・プロセスによって処理するために、前記マルチ装置マネジャが、少なくとも１個のゲスト処理システム・フォーマットでのＩ／Ｏメッセージをネイティブ・システム・フォーマットでのメッセージに翻訳し、これによって前記少なくとも１個のゲスト処理システムのＩ／Ｏ処理を促進することができる前記方法。
【請求項１６】
少なくとも１個のゲスト処理システムの入出力（Ｉ／Ｏ）処理を促進するためのシステムであって、
少なくとも部分的にＩ／Ｏアーキテクチャをエミュレートするためのエミュレータを含む処理環境を含み、前記エミュレータが
エミュレータＩ／Ｏインターフェースと、
エミュレートされる前記Ｉ／Ｏアーキテクチャの複数個のＩ／Ｏ装置のためのマルチ装置マネジャであって、前記Ｉ／Ｏアーキテクチャの複数個のＩ／Ｏ装置のＩ／Ｏ装置ごとに別個の装置マネジャが設けられているものと、
マルチ・メッセージ・キューであって、各メッセージ・キューが前記マルチ装置マネジャの個々の装置マネジャと関連付けられているものと、
前記マルチ装置マネジャを少なくとも１個のネットワーク・ドライバ・プロセスにインターフェースする少なくとも１個の通信アダプタ・プロセスとを含み、
前記少なくとも１個の通信アダプタ・プロセスによって処理するために、前記マルチ装置マネジャが、少なくとも１個のゲスト処理システム・フォーマットでのＩ／Ｏメッセージをネイティブ・システム・フォーマットでのメッセージに翻訳し、これによって前記少なくとも１個のゲスト処理システムのＩ／Ｏ処理を促進することができる前記システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・システム・エミュレーションの分野に関し、より具体的には１個もしくはそれ以上のゲスト処理システムのためのＩ／Ｏアーキテクチャをネイティブなシステム上でエミュレートすることによりそのゲスト処理システムのＩ／Ｏ処理を促進することに関する。
【背景技術】
【０００２】
メインフレーム・クラスの処理環境の復活により、メインフレーム環境用のアプリケーションをソフトウエア開発者が書きたいという望みが増大してきている。そのような開発環境や訓練のためのコストが高いと、この努力をくじいてしまう。エミュレーションはこのジレンマに対する一つの解決策である。エミュレーションは、ゲスト・システム（例えば、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションすなわちＩＢＭ社が提供するｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＢＭ社の商標）システム）のもっと特化したプロセッサ・アーキテクチャを提供するようにネイティブ・システム（例えば、ＵＮＩＸ（Ｔｈｅ  Ｏｐｅｎ  Ｇｒｏｕｐの登録商標）やＬＩＮＵＸ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄs氏の商標）をベースとするワークステーションなどの汎用プロセッサ）がプログラムされる際に使用されるプロセスである。この解決策はアプリケーション開発を実行するための製品を所有するコストをはるかに低くする。
【特許文献１】米国特許第６，９７６，０８３号明細書
【非特許文献１】ＩＢＭ  Ｊｏｕｒｎａｌ  ｏｆ  Ｒｅｓｅａｒｃｈ  ａｎｄ  Ｄｅｖｅｌｏｐｍｅｎｔ  第４６巻第４／５号、２００２年発行
【非特許文献２】z/Architecture Principles of Operation（ｚアーキテクチャ  その動作原理）ＩＢＭ刊行物No. SA22-7832-04, ２００５年９月発行
【非特許文献３】Virtual Machines: Versatile Platforms For Systems and Processes (TheMorgan Kaufmann Series in Computer Architecture and Design)（仮想マシーン：システムおよびプロセスのための多用途のプラットフォーム） Jim Smithand Ravi Nair, ２００５年６月３日発行
【発明の開示】
【発明が解決しようとする課題】
【０００３】
少なくとも１個のゲスト処理システムの入出力処理を促進する方法およびシステムを提供する。
【課題を解決するための手段】
【０００４】
ここで提案される概念は、少なくとも１個のゲスト処理システムのための入出力（Ｉ／Ｏ）アーキテクチャをネイティブ・システム上でエミュレートすることにより、前記ネイティブ・システム上で少なくとも１個のゲスト処理システムのＩ／Ｏ処理を促進することによって前述の努力を後押しする。もっと具体的に云うと、ここで提供されるのは、一つの側面で、少なくとも１個のゲスト処理システムのＩ／Ｏ処理を促進させるコンピュータ読み出し可能なプログラム・コード論理を有する少なくとも１個の媒体を含む製品（an article of manufacture）である。実行時のコンピュータ読み出し可能なプログラム・コード論理はたとえば以下のステップを実行する。すなわち、前記少なくとも１個のゲスト処理システムのためのＩ／Ｏアーキテクチャをネイティブ処理システム上でエミュレートするステップである。前記Ｉ／Ｏアーキテクチャをエミュレートするステップには、前記Ｉ／Ｏアーキテクチャの複数個のＩ／Ｏ装置のために複数個の（マルチもしくはマルチプル）装置マネジャを提供するステップと、前記マルチ装置マネジャを少なくとも１個のネットワーク・ドライバ・プロセスにインターフェースする少なくとも１個の通信アダプタ・プロセスを提供するステップとを含み、前記少なくとも１個の通信アダプタ・プロセスにより処理するためにネイティブ・システム・フォーマットでのメッセージに、少なくとも１個のゲスト処理システム・フォーマットでのＩ／Ｏメッセージをマルチ装置マネジャが変換し、これによって前記少なくとも１個のゲスト処理システムのＩ／Ｏ処理を促進する。
【０００５】
他の側面では、少なくとも１個のゲスト処理システムのＩ／Ｏ処理を促進する方法が提供され、これが前記少なくとも１個のゲスト処理システムのためのＩ／Ｏアーキテクチャをネイティブ処理システム上でエミュレートするステップを含む。前記Ｉ／Ｏアーキテクチャをエミュレートするステップは、前記Ｉ／ＯアーキテクチャのマルチＩ／Ｏ装置のためにマルチ装置マネジャを提供するステップと、マルチ装置マネジャを少なくとも１個のネットワーク・ドライバ・プロセスにインターフェースする少なくとも１個の通信アダプタ・プロセスに提供するステップとを含む。前記マルチ装置マネジャは、前記少なくとも１個の通信アダプタ・プロセスによる処理のために少なくとも１個のゲスト処理システム・フォーマットでのＩ／Ｏメッセージをネイティブ・システム・フォーマットでのメッセージに翻訳し、これによって前記ゲスト処理システムのＩ／Ｏ処理を促進する。
【０００６】
更なる側面では、少なくとも１個のゲスト処理システムのＩ／Ｏ処理を促進するためのシステムが提供される。このシステムは、少なくとも一個のゲスト処理システムのＩ／Ｏ処理を促進するためのＩ／Ｏアーキテクチャを、少なくとも部分的にエミュレートするためのエミュレータを含む処理環境を含む。前記エミュレータは、エミュレータＩ／Ｏインターフェースと、エミュレートされる前記Ｉ／Ｏアーキテクチャの複数個のＩ／Ｏ装置のためのマルチ装置マネジャであって、前記Ｉ／Ｏアーキテクチャの複数個のＩ／Ｏ装置の各Ｉ／Ｏ装置に別個の装置マネジャが設けられているものと、マルチ・メッセージ・キューであって、各メッセージ・キューが前記マルチ装置マネジャの個々の装置マネジャと関連されているものと、前記マルチ装置マネジャを少なくとも１個のネットワーク・ドライバ・プロセスにインターフェースする少なくとも１個の通信アダプタ・プロセスと、前記少なくとも１個の通信アダプタ・プロセスによって処理するために、前記マルチ装置マネジャが、少なくとも１個のゲスト処理システム・フォーマットでのＩ／Ｏメッセージをネイティブ・システム・フォーマットでのメッセージに翻訳し、これによって前記少なくとも１個のゲスト処理システムのＩ／Ｏ処理を促進することができるものとを含む。
【０００７】
本発明の技法により追加の特徴および効果が実現される。本発明の他の実施例および側面をここで詳細に記述するが、これらは特許請求の範囲に記した発明の一部と考えられる。
【０００８】
本発明の一つもしくはそれ以上の側面を、特許請求の範囲に例示として抽出し、明確に請求している。前述のそして他の目的、特徴、効果が、添付図面と併せて行われる以下の詳細な説明から明らかになる。
【発明を実施するための最良の形態】
【０００９】
本発明の一側面によれば、少なくとも１個のゲスト処理システムのためのＩ／Ｏアーキテクチャをネイティブ・システム上でエミュレートすることによって、少なくとも１個のゲスト処理システムの入出力（Ｉ／Ｏ）処理を促進する能力が提供される。Ｉ／Ｏアーキテクチャのエミュレーションの多くの側面が例えば、ＩＢＭ社が提案するｚアーキテクチャ（ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ、ＩＢＭ社の商標）に関連してここで記述され特許請求の範囲で請求される。
【００１０】
アダプタというのは、データ処理分野での言葉の感覚では、これまでホスト・システムと１個もしくはそれ以上の外部装置との間で通信するのに使用される一つのハードウエア装置である。従って、アダプタはデータ処理システムにおける入出力の接続性の一形態を提供するとみられる。本発明は、ＩＢＭ社が提供する製品、オープン・システム・アダプタ（ＯＳＡ）と呼ばれるものに関連してここでは専ら記述されている。このアダプタはホスト・システム・メモリとデータ・ネットワークとの間のデータ伝送のためのプロトコルを提供する。特に、このプロトコルが差し向けられるデータ・ネットワークはローカル・エリア・ネットワーク（ＬＡＮ）である。
【００１１】
従来はオープン・システム・アダプタがＱＤＩＯプロトコルを用いている。ＱＤＩＯ（Queues direct input/output）プロトコルは１９９０年に導入され、Ｉ／Ｏアーキテクチャの分野では従来技術に属するが、迅速なホスト−ＬＡＮ通信を提供する。このプロトコルを用いるシステムの例を特許文献１に示す。ＱＤＩＯアーキテクチャはまた非特許文献１にも記述されている。
【００１２】
はじめに述べたとおり、エミュレーション技法は、ハードウエアの開発、特に高級なシステムの上昇するコストにより産業界で一層流行している。メインフレーム・クラスのマシーンが蘇ったことによりこのタイプのマシーンのためのアプリケーションを書くコード開発者の興味を増すようになった。高級なシステムのうちのもっとも重要なものの一つが、ＩＢＭ社が製造し市販しているｚシリーズ（ＩＢＭ社の商標）のデータ・プロセッサである。
【００１３】
残念ながら、これらの高級システムのコストはプログラムを書く人やデザイナがこの分野において、特に開発および訓練目的で働く意欲を失わせている。ＵｎｉｘＷａｒｅ（Ｔｈｅ  Ｏｐｅｎ  Ｇｒｏｕｐの登録商標）もしくはＬＩＮＵＸ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓ氏の商標）ベースのワークステーションのいずれかの上で稼動するｚシリーズ・プロセッサのエミュレーションを提供するいろいろな試みが行われてきたが、ＤＡＳＤ、カップリング、Ｉ／Ｏアーキテクチャおよびネットワーク機能を含む、そのシステムの他のパーツをエミュレートしたいという希望が大きくなっている。本発明は、例えばｚシリーズのＩ／ＯアーキテクチャのためのＩ／Ｏアーキテクチャ・エミュレーションの必要性を満たすように指向している。
【００１４】
本発明の一つもしくはそれ以上の側面を導入し使用する処理環境の一実施例を図１に関連して説明する。この例では処理環境１００が、ネイティブ・アーキテクチャとも呼ばれる一つのアーキテクチャに基くが、これはゲスト・アーキテクチャとも呼ばれる他のアーキテクチャをエミュレートする。ネイティブ・アーキテクチャの例は、ＩＢＭ社が提供するＰｏｗｅｒ４もしくはＰｏｗｅｒＰＣ（ＩＢＭ社の商標）アーキテクチャ、あるいはインテル社が提供するＩｎｔｅｌ（インテル社の商標）アーキテクチャである。そしてゲスト・アーキテクチャの例はＩＢＭ社が提供するｚアーキテクチャである。ｚアーキテクチャの側面は非特許文献２に記載される。
【００１５】
処理環境１００は、例えばネイティブ・プロセッサ１０２（例えば、中央処理装置（ＣＰＵ））と、メモリ１０４（例えば、メイン・メモリ）と、例えば１個もしくはそれ以上のバス１０８を介して互いに結合される１個もしくはそれ以上の入出力（Ｉ／Ｏ）装置１０６とを含む。例えば、ネイティブＣＰＵ１０２はＩＢＭ社が提供するｐＳｅｒｉｅｓ（商標）サーバー、ｐＳｅｒｉｅｓ（商標）ＰｏｗｅｒＰＣ（商標）およびｚアーキテクチャ（商標） の一部であり、これらはＩＢＭ社の登録商標である。Ｉｎｔｅｌ（商標）はインテル・コーポレーションすなわちインテル社の登録商標である。他の名称もこの中で使用されるかもしれないが、ＩＢＭ社または他の会社の登録商標、商標もしくは製品名であり得る。
【００１６】
ネイティブＣＰＵ１０２は、その環境の中で処理中に使用される１個もしくはそれ以上の汎用目的のレジスタおよび／もしくは１個もしくはそれ以上の特定目的のレジスタなどの１個もしくはそれ以上のネイティブ・レジスタ１１０を含む。これらのレジスタは任意の時点での環境の状態を表す情報を含む。
【００１７】
更に、ネイティブＣＰＵ１０２がメモリ１０４にストアされた命令およびコードを実行する。一つの特定の例では、中央処理装置がメモリ１０４にストアされたエミュレータ・コード１１２を実行する。このコードは一つのアーキテクチャ中に構成された処理環境が他のアーキテクチャをエミュレートするのを可能にする。例えば、エミュレータ・コード１１２はｐシリーズ（商標）サーバーなどのｚアーキテクチャ（商標）以外のアーキテクチャに基づくマシーンがｚアーキテクチャをエミュレートするのを許容し、ｚアーキテクチャに基づいて開発されたソフトウエアおよび命令を実行するのを許容する。
【００１８】
エミュレータ・コード１１２（別名、エミュレータ）に関する詳細が、図２に関連して記述される。一実施例では、エミュレータ・コード１１２が、メモリ１０４から１個もしくはそれ以上のゲスト命令２０２を得て、その１個もしくはそれ以上の得られた命令をローカルにバッファするための命令取り出しルーチン２００を含む。ゲスト命令２０２はネイティブＣＰＵ１０２のアーキテクチャ以外のアーキテクチャにおいて実行されるように開発されたソフトウエア命令（例えば、マシーン命令）を含む。例えば、ゲスト命令２０２はｚアーキテクチャ・プロセッサ上で実行するように設計されてきているが、その代わりに例えばｐシリーズ・サーバーであってもよいネイティブＣＰＵ１０２上でエミュレートされている。
【００１９】
エミュレータ１１２はまた得られたゲスト命令の型を決定し、１個もしくはそれ以上の対応するネイティブ命令２０８にゲスト命令を翻訳するための命令翻訳ルーチン２０４を含む。この翻訳は、例えばゲスト命令によって実行されるべき機能を識別すること、およびその機能を実行するようにネイティブ命令を選択することを含む。
【００２０】
更に、エミュレータ１１２は、ネイティブ命令が実行させられるエミュレーション制御ルーチン２０６を含む。エミュレーション制御ルーチン２０６はネイティブＣＰＵ１０２にネイティブ命令のルーチンを実行させてもよい。そのネイティブ命令のルーチンとは１個もしくはそれ以上の以前に得られたゲスト命令をエミュレートするものである。そのような実行の結果、次の１個もしくはそれ以上のゲスト命令を得ることをエミュレートする命令取り出しルーチンに制御を戻す。ネイティブ命令２０８の実行はメモリ１０４からレジスタにデータをロードし、レジスタからメモリにデータを戻してストアし、あるいは翻訳ルーチンによって決定されるように、演算動作もしくは論理動作のいくつかの型を遂行することを含んでもよい。
【００２１】
各ルーチンは、例えば、メモリにストアされネイティブＣＰＵ１０２によって実行されるソフトウエアで実施されてもよい。他の例では、１個もしくはそれ以上のルーチンもしくは動作がファームウエア、ハードウエア、ソフトウエアもしくはその組み合わせで実施される。このエミュレートされたゲスト・プロセッサのレジスタはネイティブＣＰＵのレジスタを用いてもしくはメモリ１０４中の場所を用いてエミュレートされてもよい。１個もしくはそれ以上の実施例では、ゲスト命令２０２、ネイティブ命令２０８およびエミュレーション・コード１１２が同じメモリ中に在っても異なるメモリの間に分かれて存在していてもよい。
【００２２】
取り出しおよび制御ルーチンによって処理されてきた命令を累積したものが、一実施例ではジャスト・イン・タイム・コンパイラ２１０に更に提供される。そのジャスト・イン・タイム・コンパイラ２１０は命令を調べ、冗長性を取り除く機会を探し、エミュレータが稼動しているネイティブ・プラットホーム上の命令の一致シーケンスを発生する動的コンパイラである。エミュレータが一時に一つの命令を見る可視性を有するが、ジャスト・イン・タイム・コンパイラ２１０は一連の命令を見る可視性がある。一連の命令を見る可視性があるので、命令のシーケンス中の冗長性を探し出して除去するよう試みることができる。ジャスト・イン・タイム・コンパイラ２１０の一例はＩＢＭ社が提供するＪＡＶＡ（登録商標）ジャスト・イン・タイム（ＪＩＴ）コンパイラである。ＪＡＶＡはカリフォルニア州サンタクララのサン・マイクロシステムズ・インクの登録商標である。
【００２３】
エミュレータ １１２はネイティブ・アーキテクチャとは異なるアーキテクチャをエミュレートするのに使用される多数のコンポーネントを含む。この例では、エミュレートされているＣＰＵおよびＩ／ＯアーキテクチャがＩＢＭ社が提供するｚアーキテクチャであるが、他のアーキテクチャが同様にエミュレートされてもよい。このエミュレーションはネイティブ・アーキテクチャ上でゲスト・オペレーティング・システム２１２（例えば、ｚ／ＯＳ，ＩＢＭ社の登録商標）がネイティブ・アーキテクチャを実行するようにイネーブル（能動化）し、また１個もしくはそれ以上のゲスト・アプリケーション２１４（例えば、ｚアプリケーション）をサポートするようにイネーブルする。エミュレータ１１２の更なる詳細を図３に関連して記述する。
【００２４】
図３を参照すると、エミュレータ１１２は１個もしくはそれ以上のサービス・プロセス３０２、入出力（Ｉ／Ｏ）インプリメンテーション３０４、および中央処理装置（ＣＰＵ）インプリメンテーション３０６に結合された共有メモリ３００を含む。その各々については以下で詳細に記述する。
【００２５】
共有メモリ３００はサービス・プロセス３０２、Ｉ／Ｏインプリメンテーション３０４およびＣＰＵインプリメンテーション３０６から見えるホスト中のメモリ部分を表す。それは独立のプロセス（例えば、サービス・プロセス、Ｉ／Ｏインプリメンテーション、ＣＰＵインプリメンテーション）相互が、共有メモリにデータを読み書きすることによって通信しあうストレージ領域である。一例として、共有メモリは複数の領域を含む。この複数の領域というのは、例えばシステム・グローバル情報、ＣＰＵコンテキストおよび情報、エミュレートされるストレージ、エミュレートされるストレージ・キー、およびサブチャネル（例えば、Ｉ／Ｏ装置を表すデータ構造）を含む。
【００２６】
サービス・プロセス３０２は、ＣＰＵおよび１個もしくはそれ以上の他のプロセスを生じるとともに、スタート、ストップ、リセット、初期プログラム・ロード（ＩＰＬ）などアーキテクチャのオペレータの機能を提供するのに使用される１個もしくはそれ以上のプロセスを含む。エミュレートされるシステムの機能の表示もしくは代替、共有資源の獲得／開放、他の維持（メインテナンス）コマンド等の共有資源の他の機能を提供することもできる。
【００２７】
Ｉ／Ｏインプリメンテーション３０４は、例えば１個もしくはそれ以上のサブチャンネル・プロセス、およびＩ／Ｏ装置と通信するのに使用されるＩ／Ｏコントローラを含む。Ｉ／Ｏコントローラはサブチャンネル・プロセスを開始し、回復を行う責任があり、これは本発明の一側面である。中央処理装置（ＣＰＵ）インプリメンテーション３０６は命令を実行し、その処理を管理する責任がある。
【００２８】
図４ないし図９はネイティブ・システム上でＩ／Ｏアーキテクチャ・エミュレーションを採用する１個もしくはそれ以上のゲスト処理システムの入出力（Ｉ／Ｏ）処理を促進するための解決策（アプローチ）の実施例を示す。これらのＩ／Ｏアーキテクチャ・エミュレーションの図において、「ホスト」はネイティブ・システムおよび／もしくはゲスト・システムを云い、そのいずれでもエミュレートされたＩ／Ｏアーキテクチャを採用することができる。 図４ないし図９は、単なる一例ではあるが、ＩＢＭ社が提供するｚシリーズ（商標）のＩ／ＯアーキテクチャのためのＩ／Ｏアーキテクチャ・エミュレーションを示す。
【００２９】
図４は、１個もしくはそれ以上のオープン・システム・アダプタ（ＯＳＡ）を用いるｚシリーズ（商標）処理環境のためのＩ／Ｏハードウエアをエミュレートするソフトウエア構造４００の一実施例を示す。エミュレータ４００は、ＱＤＩＯモード（列に並んだ直接入出力）の作業４１１および非ＱＤＩＯモードの作業４１２の両方に対処するエミュレータＩ／Ｏインターフェース４１０を含む。エミュレータＩ／Ｏインターフェース４１０は複数個の装置マネジャ４２０とインターフェースし、その装置マネジャ４２０は１個もしくはそれ以上のオープン・システム・アダプタ（ＯＳＡ）プロセス４３０と通信する。エミュレートされるＩ／Ｏアーキテクチャのための各Ｉ／Ｏ装置に対しては別個の装置マネジャ４２０が設けられる。装置マネジャ４２０は、１個もしくはそれ以上のＯＳＡプロセス（すなわち、１個もしくはそれ以上の通信アダプタ・プロセス）を処理するために、１個もしくはそれ以上のゲスト処理システム・フォーマットでのＩ／Ｏメッセージをネイティブ・システム・フォーマットでのメッセージに翻訳する能力を提供する。ネイティブ・システム・フォーマットでのメッセージを１個もしくはそれ以上のＯＳＡプロセス４３０にパスさせやすくするためにメッセージ・キュー４２５が採用される。
【００３０】
エミュレータ４００は、各ＯＳＡプロセス４３０に割り当てられた専用のサービス・キュー４３５を介して各ＯＳＡプロセス４３０と通信するエミュレータ・サービス・インターフェース４５０を含む。エミュレータ・サービス・インターフェース４５０はＯＳＡエミュレーションをスタートもしくは再スタートさせるための回復手順に関連して以下で更に説明する。各ＯＳＡプロセス４３０はドライバ４４０のような１個もしくはそれ以上のネットワーク・インターフェースと通信する。この例でネットワーク・インターフェースはローカル・エリア・ネットワーク（ＬＡＮ）である。
【００３１】
図４はオープン・システム・アダプタ（ＯＳＡ）を用いるｚシリーズＩ／ＯアーキテクチャのようなＩ／Ｏアーキテクチャの正確なエミュレーションを提供するソフトウエア構造を示す。このＯＳＡ機能はＩＢＭ  ＡＩＸ（商標）およびインテルＬＩＮＵＸの両環境で単一のＵＮＩＸ（登録商標）プロセスとして稼動してもよい。エミュレートされたＩ／Ｏアーキテクチャが１個もしくはそれ以上のＬＡＮアダプタ上にあると、例えばＡＩＸ（商標）プラットフォームはｚシリーズ（商標）メインフレーム上で現在利用可能な任意のハードウエア補助を提供する。このインプリメンテーションのために、各ＯＳＡ  ｃｈｐｉｄ（Channel Path Identifier、 チャネル・パス識別子）は、そのエミュレータ ・ソフトウエアを稼動するワークステーションによって提供される１個もしくはそれ以上のＬＡＮアダプタと通信する。ＯＳＡ  ｃｈｐｉｄ  （もしくはｃｈｐｉｄ）はＯＳＡプロセスおよび１個もしくはそれ以上の装置マネジャ（ＤＭ）プロセスの両方を含む。実施例によると、図４は、ＯＳＡプロセス（１）および第１から第５のＤＭプロセスを含む単一のｃｈｐｉｄを示す。このｃｈｐｉｄはマルチのホストによって図示のとおり、逐次にあるいは同時に用いられてもよい。一実施例では、エミュレートされたＩ／Ｏアーキテクチャはマルチのｃｈｐｉｄを含む。
【００３２】
ｚアーキテクチャ・エミュレーション環境で稼動するｃｈｐｉｄの前述の記述では、ＯＳＡプロセスがホストＴＣＰ／ＩＰもしくはＳＮＡスタックとＤＭプロセスのグループを介して通信する。その際、１個の装置マネジャ・プロセスがＩ／Ｏアーキテクチャの各Ｉ／Ｏ装置に提供されている。図４の例では、図示のｃｈｐｉｄの３個のＤＭプロセス（装置マネジャ）４２０が、ＱＤＩＯ  ＴＣＰ／ＩＰスタック（ＱＤＩＯ  作業）４１１を用いる第１ホスト（処理システム）４６１のために採用される。一方で第２ホスト（処理システム）４６２のＳＮＡおよび非ＱＤＩＯ通信スタック（非ＱＤＩＯ作業）４１２のために２個のＤＭプロセス４２０が使用される。ＱＤＩＯ  ＴＣＰ／ＩＰスタックが採用されようがＳＮＡもしくは非ＱＤＩＯ通信スタックが採用されようが、チャネル・コマンド・ワード（ＣＣＷ）が一連のメッセージ・キューを介して通信アダプタ・プロセスと通信するのに使用される。ＣＣＷはそのシステムにとってはよく知られた関連名称であり、異なるセットのＣＣＷがＱＤＩＯ対非ＱＤＩＯの結合にまたがって用いられる。読み書きメッセージ・キューは、ＤＭ制御書き込み装置プロセスおよびＤＭ制御読み取り装置プロセスと関連して、ＯＳＡ  ｃｈｐｉｄプロセスに対して存在してもよい。各ＣＣＷは関連するメッセージ・キュー４２５から出され順次処理され、そして応答（例えばＣＣＷの状態）は制御読み取り装置として機能するＤＭプロセスの読み取りキュー上に戻されてもよい。ＬＡＮを外れたトラフィックはまた読み取りキューを介してホストにも達する。そのＯＳＡプロセスは、ネイティブ・オペレーティング・システムにより提供される標準ＬＡＮドライバ・インターフェースを介して、（ＬＩＮＵＸもしくはＡＩＸ（商標）にネイティブな）デフォールトのＯＳＡ  ＬＡＮドライバと通信する。
【００３３】
各装置マネジャ４２０は、そのエミュレートされたＯＳＡプロセスによる処理のためのネイティブ・システム・フォーマットに、夫々のＣＣＷメッセージを翻訳するための１個もしくはそれ以上の翻訳テーブルを用いる。これらのテーブルはｚシリーズ（商標）Ｉ／Ｏアーキテクチャ上の刊行物情報、例えば前述の非特許文献２を用いて当業者により容易に導き出せる。
【００３４】
以下のリストは装置管理プロセスで受け取るＣＣＷプロトコル・メッセージのためのコードならびに装置管理プロセスから送られたネイティブ・システム・メッセージ・フォーマットのためのコードの例を提供することによるこの翻訳を示す。
ＤＭメッセージ受信フォーマット：
typedef struct
{
long int mtype; /*メッセージ・タイプ(別名 装置番号)*/
unsigned short mreqtype;/*ＣＰからのリクエスト・タイプ*/ 
unsigned char mcmd; /*翻訳されるべきＣＣＷコマンド*/
unsigned char mflags; /*ＣＣＷフラッグ*/
int mcount; /*転送すべきバイトの数*/
char mtext[8]; /*メッセージ・テキスト*/
}OSAMSG_t;
【００３５】
ＤＭメッセージ送信フォーマット：
typedef struct 
{
long int device_number; /* 別名  メッセージ・タイプ*/
unsigned short req_type;/*ＯＳＡへもしくはＯＳＡからのリクエスト・タイプ*/ 
unsigned char channel_status;
unsigned char device_status;
unsigned short residual_count;/*転送されなかったバイトの数*/
unsigned short transfer_count;/*そのメッセージ中に幾つのバイトがあるか*/
char mtext[8]; /*戻すべきデータ*/ 
}DMMSG_t;
【００３６】
更なる例として、以下のリストは、エミュレートされたｚシリーズ（商標）のＩ／ＯアーキテクチャでのＯＳＡプロセスによる処理のためのネイティブ・システム・フォーマットにＣＣＷを変換する装置マネジャのためのコマンド翻訳コードの部分的な例である。
コマンド翻訳コード
#define ASYNC_STATUS 0xF000 
#define OSA_PCI 0xF001 
#define SET_QDIO_ACTIVE 0xF002 
#define SET_QDIO_INACTIVE 0xF003 /*ＱＤＩＯアクティブをリセット*/ 
//クリーンアップおよび同期を示すためにＯＳＡに送られたメッセージＩＤ awsosa 
#define OSA_CLEANUP 0xCCCC 
typedef struct 
{ 
BYTE Flags; 
#define CU_Init_Status0x80 
/*このビットがチャンネル上にあるとき、機能が制御ユニット機能から状態を求めるで
/*あろう。
#define CU_End_Status0x40 
/*このビットは、１のとき、そのデータ転送が完了したことを示し、チャネルが制御ユ/*ニットから終了状態を求めなければならないことを示す。もしそれがゼロなら、/*ＣＤＴエントリの最終状態フィールドから終了状態が取られる。
#define CU_Get_Buffers 0x20 
/*このビットは、１のとき、チャネルが新しいＳＧＬおよびＬＤＳデータ・バッファを/*割当てなければならないことを示す。このビットは書き込み動作の間通常はオン/*である。
#define CU_Special_Cmd0x10 
/* このビットは、１のとき、そのコマンドが特別であることを示す。すなわち、それが/*有効なコマンドであるが、メイン・ラインのパスでは使用されない。*/
/*書き込み動作*/ 
BYTE Init_Status; 
BYTE Final_Status; 
BYTE CU_Flags; /*そのＣＵのための特別のフラッグ*/ 
} CDT_ENTRY; 
typedef struct 
{ 
CDT_ENTRY Entry[256]; 
} CDT; 
#define CU_Invalid 0x01/*無効コマンド・インジケータ*/ 
#define CU_IntvReq 0x02 /*仲裁が必要とされる条件*/ 
#define CU_Sense 0x04 /*センス・コマンド*/ 
#define CU_Tools 0x08 /*ツールＣＣＷ*/ 
#define CU_RstEvt 0x10 /*リセッティング・イベントＣＤＴ*/ 
#define CU_QDIO 0x20 /*ＱＤＩＯ特別コマンド*/ 
#define CU_ATN 0x80 /*注意喚起*/ 
#define CU_SMF 0x40 /*状態修整子*/ 
#define CU_CUE 0x20 /*制御ユニット終了*/ 
#define CU_BSY 0x10 /*ビジー*/ 
#define CU_CE 0x08 /*チャネル終了*/ 
#define CU_DE 0x04 /*装置終了*/ 
#define CU_UC 0x02 /*ユニット・チェック*/
#define CU_UE 0x01 /*ユニット例外*/
【００３７】
図５は本発明によるＩ／Ｏアーキテクチャ・エミュレーション初期化（ブロック５００）のための処理の一実施例を示すフローチャートである。エミュレータがスタートし（ブロック５１０）、それから定義ファイルからＩ／Ｏ構成を読み取る。この定義ファイルはカスタマがプリセットしたＩ／Ｏ定義を含んでいてもよい。一例として、表１がｚシリーズ（商標）Ｉ／Ｏアーキテクチャのための簡単な定義ファイルを示す。
【表１】
2008293479.tif 000003
【００３８】
このサンプル定義ファイルでは、Ｉ／Ｏ部分のみが示される。ＯＳＤはＱＤＩＯ  ｃｈｐｉｄを表すが、ＯＳＥは非ＱＤＩＯ  ｃｈｐｉｄである。「path（パス）」はｃｈｐｉｄすなわちチャネル・パス識別番号を云い、一方で「Device（装置）」は装置マネジャ番号を云う。各装置のステートメントは、装置マネジャの一つのインスタンスを云う。  
【００３９】
エミュレータが、定義ファイルで定義された各Ｉ／Ｏ装置のための装置マネジャ・インスタンスをスタートする（ブロック５３０）。それからサービス・キューが各装置マネジャに割り当てられる（ブロック５４０）。
【００４０】
装置マネジャをスタートするのと軌を一にして、エミュレータがシステム単位での回復プロセスを開始する（ブロック５５０）。回復プロセスは図８および図９に沿って説明する。基本的に、回復プロセスは、定義ファイルで定義されたｃｈｐｉｄごとにＯＳＡプロセスを開始する（ブロック５６０）。それからＯＳＡプロセス・インスタンスごとにサービス・キューが生成されるすなわち割当てられる（ブロック５７０）。その割り当てられるサービス・キューはＯＳＡプロセス・インスタンスへの全てのサービス・リクエストに対するものである。そのキューのセットアップの完了時に、初期化が終了する（ブロック５８０）。そしてＩ／Ｏアーキテクチャ・エミュレーションのＩ／Ｏ初期化部分が完了することをエミュレータに知らせる。この後、エミュレートされたＩ／Ｏアーキテクチャを用いてデータ転送が開始する（ブロック５９０）。
【００４１】
一つの初期化の実施例では、２５６個のエントリをもつｃｈｐｉｄディレクトリが共有メモリ中（例えば図９のログアウト領域９３５）に生成される。全てのｃｈｐｉｄは表２中の情報を登録する。更には、表３に示すような装置特有のＯＳＡ情報が（例えば、図８のＯＳＡプロセス回復メモリ８１０に）保存される。表２および３の情報はその後の回復プロセスで使用される。
【表２】
2008293479.tif 000004
【００４２】
【表３】
2008293479.tif 000005
【００４３】
ｃｈｐｉｄプロセスを生成する前に定義ファイルが解析される。これはエミュレータのマスタＩ／Ｏプロセスによって実行される。このエミュレータ のマスタＩ／Ｏプロセスというのは、ｚシリーズ（商標）Ｉ／Ｏアーキテクチャ上で、例えばＨＳＡ（ハードウエア・システム域）を真似るように共有メモリ・エリア中にｃｈｐｉｄのための必要な制御ブロックを全て生成し得る。各ｃｈｐｉｄのためのメモリ領域はそのｃｈｐｉｄの外側のＨＳＡをアクセスすることから他のｃｈｐｉｄを保護するための特定の共有メモリ領域（名）に定義される。
【００４４】
定義ファイルが解析され、そして全てのｃｈｐｉｄのための全てのＨＳＡ制御ブロックが一旦打ち立てられると、個々のｃｈｐｉｄプロセスが生成される。定義されたｃｈｐｉｄごとに一つの「親の」プロセスが生成される。そのような親のｃｈｐｉｄプロセスから、その主たるｃｈｐｉｄプロセスに対する子のプロセスとしてＯＳＡプロセスが生成され得る。ＤＭプロセスがＣＰＵエミュレーション初期化プロセスから生成される。このデザインはエラー回復シナリオで助けとなると信じられている。「仕掛り（hang）」状態を検知するために、親のｃｈｐｉｄプロセスとＤＭおよびＯＳＡプロセスとの間で「ハートビート(heartbeat)」メッセージが使用されてもよい。もし「付加（append）」が生じるなら、その「付加（append）」を知らせるため、一つの信号（sigchild）が親のｃｈｐｉｄプロセスに送られてもよい。この信号は、図８および図９に関連して後で説明するように、ＯＳもしくはＤＭのための情報を「ログ・アウト」するように使用され得る。
【００４５】
生成時にｃｈｐｉｄプロセスにパスされるパラメータはｃｈｐｉｄ番号を含む。全ての他のＯＳＡ共有メモリ名をそのｃｈｐｉｄ番号を介して引き出すことができる。
【００４６】
Ｉ／Ｏ回復プロセスおよびＩ／Ｏｃｈｐｉｄプロセスが共有ｃｈｐｉｄディレクトリ中のルックアップによって識別されてもよい。その側面はｚアーキテクチャＩ／Ｏプロセスのための以下の表４ないし８の詳細な例の中で取り上げる。
【表４】
2008293479.tif 000006
【００４７】
【表５】
2008293479.tif 000007
【００４８】
【表６】
2008293479.tif 000008
【００４９】
【表７】
2008293479.tif 000009
【００５０】
【表８】
2008293479.tif 000010
【００５１】
前述の表から、ハード・ドライブ上のファイルをＯＳＡ構成名がポイントする（指す）ことに留意されたい。但しＭＡＣアドレス、トレース・マスクなど、リセット相互間に保存される必要のある全てのＯＳＡパラメータがストアされる。共有メモリ位置への割り当てによりレジストリのエントリが生成させられる。インターフェース番号はＯＳＡのために使用されるだけである。０×００ターミネーションをもつａｓｃｉｉでのインターフェース名が使用される。例えば、ｎｐに対しては「ｎｐ４ｍ０」、「ｎｐ４ｍ１」など、あるいはＯＳＡに対しては「ｅｎｔ０」、「ｅｎｔ１」などである。もしｃｈｐｉｄ＿ｓｔａｔｅ＿ｎｐ＿ｃａｒｄビットおよびｃｈｐｉｄ＿ｓｔａｔｅ＿ｏｓａ＿ｃａｒｄビットが両方ともゼロであれば、そのｃｈｐｉｄはｎｐでもｏｓａでもない。
【００５２】
図６は、本発明の一つの側面による装置マネジャのデータ・フローの一実施例を示す（ブロック６００）。このフローにおいて、ホスト・プロセスはソケット読み書きコマンドを発する（ブロック６１０）と仮定する。このコマンドはホスト・プロセスによってＣＣＷコマンドなどのＩ／Ｏコマンドもしくはメッセージに翻訳される（ブロック６２０）。ＣＣＷコマンドが、エミュレートされたプロセッサの例えばＱＤＩＯスタックもしくは非ＱＤＩＯスタックを介し装置マネジャによってインターセプトされる（ブロック６３０）。装置マネジャはＣＣＷコマンドを受け取り（ブロック６４０）、そのＣＣＷコマンドをＯＳＡメッセージに変換する（ブロック６５０）。このＯＳＡメッセージは、その対応するメッセージ・キューに置かれる（ブロック６６０）。このＯＳＡプロセスは装置マネジャの関連するメッセージ・キューからメッセージを受け取り（ブロック６７０）、そのメッセージに応答してＯＳＡ処理を提供する（ブロック６８０）。そのＯＳＡ処理に従って関連するＬＡＮ上にデータが送られる。
【００５３】
到来するデータに対しては、装置マネジャ・プロセスはＬＡＮからのデータを（ＯＳＡ処理を介して）受け取り、そしてそのエミュレートされたプロセッサの適宜のＴＣＰ／ＩＰスタックに進むためのメッセージの中に、そのデータをパッケージするのに必要なＣＣＷコマンド・ワードを加える。そのエミュレートされたプロセッサはこのＴＣＰ／ＩＰスタックからのメッセージを読み、そしてそれをＶＴＡＭプロトコル・レベルにパスする。これはソケット読み取り書き込みデータに変換して戻す。
【００５４】
データ・フロー・プロセスの特定例として、ホスト・オペレーティング・システムがソケット読み書きを発行する。ホスト・オペレーティング・システムのためのその下支えとなるＩ／Ｏプロトコル（すなわちＶＴＡＭ）が、ソケット読み書きを、ＣＣＷを含むＩ／Ｏプログラム（すなわちコマンド）に翻訳する。チャネル・コマンド・ワード（ＣＣＷ）はＩＢＭプロセッサ３６０／３７０アーキテクチャから起こったよく知られたプロトコル・フォーマットである。このＣＣＷメッセージはエミュレータによりインターセプトされ、そしてそのエミュレートされるプロセッサの適切なＱＤＩＯもしくは非ＱＤＩＯ のスタックにパスされる。そこで適切な装置マネジャ・プロセスによってそのデータおよびコマンドが取り出され、メッセージ・エントリに翻訳される。特に、ＳＩＧＵＳＲ２などの信号が、新しいメッセージおよびデータがＱＤＩＯもしくは非ＱＤＩＯのスタックに待機していることを装置マネジャ・プロセスに知らせるのに使用されるこのＤＭプロセスがそのメッセージを取り、それを翻訳して適切なＯＳＡプロセスにパスさせる。これでデータおよびパッケージの処理を完了させ、ＬＡＮに送れるようにする。
【００５５】
図７は、本発明の一つの側面による、エミュレータ４００の他の側面を示す。エミュレータ４００は、図４に関連して説明したように、１個もしくはそれ以上のＯＳＡプロセッサ４３０に結合されたマルチ装置マネジャ４２０を含む。エミュレータ４００は更にマルチのアイソレートされ、エミュレートされたメモリ・ブロック７００とマルチ・ネットワーク（ＬＡＮ）インターフェース７１０とを含む。本発明のある側面によれば、一実施例において、マルチのアイソレートされ、エミュレートされたメモリ・ブロック７００が各装置マネジャにより夫々にアクセス可能であって、このことは装置マネジャ・プロセスによってそれらのアイソレートされたメモリ・ブロックが共有可能であることを意味する。同様に、各ＯＳＡプロセスがマルチ共有ネットワーク・インターフェースすなわちネットワーク（ＬＡＮ）インターフェース７１０をアクセスする。こうして、単一の装置マネジャから任意のエミュレータ・メモリ・ブロック７００およびネットワーク・インターフェース７１０がアクセスされてもよい。メモリ・ブロックおよびＬＡＮインターフェースのこのような共有は従来のＯＳＡベースのＩ／Ｏアーキテクチャとは反対である。
【００５６】
従来は、ハードウエアのＯＳＡベースのＩ／ＯアーキテクチャがＯＳＡアダプタに物理的に結合されるホスト・オペレーティング・システムもしくはＬＡＮのインスタンスと通信するのに制限されている。これは、ｚシリーズ（商標）マシーンに接続されるとき特定のＯＳＡが持つことができるストレージの量もしくはＬＡＮの接続性を制限する。図７のエミュレートされたＩ／Ｏアーキテクチャの下で、ＯＳＡは任意の数のホスト・オペレーティング・システムに亘って、またもっと重要なことは幾つかのＬＡＮインスタンスに亘って共有できることである。これはｚシリーズ（商標）Ｉ／Ｏハードウエア・マシーンの上で多数の可能な接続性の利点を示す。この新しいＯＳＡがエミュレートされるので、任意のＬＡＮインターフェースもしくはハードウエア物理層（例えば、ワイヤレスの能力）が直ちに共有にされる（これに比し、従来のＯＳＡはイーサーネットのみであった）。層２（物理層）および層３（アプリケーション層）の両方の環境下でポートおよびホスト・インスタンス間の接続性を与えるであろうルーティング層を生成することができる。
【００５７】
例として、共有ストレージ・セグメントが各ｚエミュレータ・プロセスのために割り当てられてもよい。これは外部のｚシリーズ（商標）プロセス（例えばＣＥＣダンプ、ＭＡＮＯＰ、システム・イベントなど）からデータにアクセスするのを許容することになろう。表９はＯＳＡベースのエミュレートされたＩ／Ｏアーキテクチャの装置マネジャ・プロセス用の共有メモリのための構成テーブルの一例を示す。
【表９】
2008293479.tif 000011
【００５８】
ここに記述したＤＭおよびＯＳＡプロセスのための可能な信号の用法を表１０に開示する。
【表１０】
2008293479.tif 000012
【００５９】
ＳＩＧＵＳＲ１が、ＯＳＡおよびリアルＩ／Ｏの両方のための「ＣＰ−ｃｈｐｉｄ」動作（但し、ＣＰはそのプロセッサのことである）用に使用されてもよく、一方でＳＩＧＵＳＲ２が、ＯＳＡおよびリアルＩ／Ｏの両方のための「ＩＯＰ−ｃｈｐｉｄ」動作用に使用されてもよいことに留意されたい。
【００６０】
更なる詳細によれば、各ｃｈｐｉｄは共有メモリ・ブロックをトレーシングおよびロギングに割り当ててもよい。これらのタスクを行うためにｃｈｐｉｄ単位で合計１．７５メガバイトが割り当てられてもよい。このＯＳＡトレース（表９）は現在のｚシリーズ（商標）Ｉ／Ｏアーキテクチャに採用されるのと同じフォーマットで１メガバイトの循環トレースであってもよい。各エントリは、３２バイトのエントリ、トレース・コード、その後のタイムスタンプ、そして４バイトのユーザー定義フィールドが６個からなる。２５６キロバイトのログは「重要なイベント」の他の回路トレースであり、そのトレースと同じフォーマットである。ログアウト・データ領域（図９および表９参照）は５１２キロバイトの領域であって、従来からのＩ／ＯアーキテクチャにおけるＯＳＡハードウエアにより管理される全ての統計および動作パラメータを含んでいてもよい。今日では、この情報はローカル・プログラムのストレージにあるが、デバッグおよび情報の収集を促進するためにはここで提供されるエミュレーションに従って移されるかもしれない。
【００６１】
表９および表１０はこれらの領域を使用する割り当てルーチンおよびプロセスを記述している。このコマンド・ライン機能は表９および１０にも記されているが、ＯＳＡプロセスの構成をデバッグするための基になる。これらのコマンドは二つのカテゴリに属する。ｃｈｐｉｄの共有メモリ位置と排他的に通信する必要のあるコマンドと、或る動作を行うためにＯＳＡプロセスへのタップを必要とするコマンドとである。各コマンドの挙動もまたこれらの表に記されている。
【００６２】
図８は本発明の一側面によるＩ／Ｏアーキテクチャのエミュレーションのための、エラー強さのある回復プロセスを示す。図示のとおり、エミュレータ４００は、これもエミュレータ・サービス・インターフェース４５０にインターフェースするマルチのＯＳＡプロセス４３０を含む。共有ログアウト領域８１０が図示されていて、各ＯＳＡプロセスは、すでに説明したように、専用の回復メモリ領域を有している。回復プロセス論理８００は、図９に関連して以下で更に説明するが、いずれかストップしたＯＳＡプロセスの再スタートを自動的にまたトランスペアレントに試みようとするコードである。今日では、ＯＳＡハードウエアのみが、失敗する（障害を起こしている）ＯＳＡにそれ自体を管理させ、回復させるのを許容する。この新しいエミュレートされたＩ／Ｏアーキテクチャには、新しい回復パラダイムが導入され、ＯＳＡ回復プロセス８００がそのシステム中のＯＳＡインフラ全体を監視し、ポート切換え、ホット・ホスト・バックアップなどの回復動作を実行することができる。これらはｚシリーズ（商標）ＯＳＡハードウエア環境では今日まだ存在していない。新しいデータ転送機構がこの回復機能を用いて採用することができよう。リンクを集めたり（aggregation）、引き剥がしたり（stripping）することも容易に設定できよう。更には、ＯＳＡプロセス全体がそのＣＰＵおよびエミュレータ ・ベースに統合されることができるので、もし失敗が生じたとしてもエラー・ログが用意に生成され、それが全てのＯＳＡおよびＣＰＵのデータを集めることができる。ここで提供するように、エミュレートされたＩ／Ｏアーキテクチャを用いると、メモリをロギングする量およびｚシリーズ（商標）ＯＳＡに提供される機能についての現存する拘束を取り除く。失敗に依っては、データ解析のために保守担当者に集められ、提供されるＣＰＵデータに全てのデータが自動的に同期されてもよい。
【００６３】
図９は本発明の一側面による初期化および回復の論理を説明する全体的なフローチャートである。図示のとおり、エミュレータ９００が１個もしくはそれ以上の装置マネジャ９０５、（図８の）回復プロセス９１０およびサービス・プロセス９１５（すなわち図８のエミュレータ・サービス・インターフェース４５０）を初期化する。この回復手順は一つもしくはそれ以上のＯＳＡプロセス９２０をスタートさせ、１個もしくはそれ以上のＯＳＡプロセスとサービス・プロセスとの間でそのＯＳＡプロセス（図４および５参照）のために生成されたサービス・キューを用いて結合が確立される（ブロック９２５）。これで初期化が完了し、１個もしくはそれ以上のＩ／Ｏサブシステム（例えばｃｈｐｉｄ）が立ち上がり、稼動する（ブロック９３０）。一旦稼動すると、状況信号がエミュレータに戻され、Ｉ／Ｏコマンドを処理することができるという可用性を知らせることになる。稼働中は、ｃｈｐｉｄ単位の個々の回復プロセスのメモリが稼動状態情報とともに定期的に更新される（ブロック９３５）。すなわち、Ｉ／Ｏシステムが稼働するにつれ、回復情報が動的に保存され、管理される。
【００６４】
もし１個もしくはそれ以上の装置マネジャおよび／もしくはＯＳＡプロセスが失敗する（例えば、コード・エラーによるハング、装置エラーもしくはインターフェース・エラー）としたら、それから装置マネジャ・エラーが生じるなら、ＣＰＵエミュレータ９４０は、ログアウト領域９３５の記録された状態情報を用いて、装置マネジャ・プロセスの再スタートを試みる（ブロック９４５）。その再スタートの試みが成功であると仮定すると、Ｉ／Ｏサブシステムもしくはｃｈｐｉｄが成功裡に再スタートされ、稼動する（ブロック９５０）。すなわちその装置マネジャのみが失敗と仮定される。もしその再スタートが不成功であれば、Ｉ／Ｏサブシステムもしくはｃｈｐｉｄ失敗信号が送られ（ブロック９５５）、そしてその失敗しているＩ／ＯｃｈｐｉｄのためのＩ／Ｏサブシステム・ログアウト・データが保存される（ブロック９６０）。もしエラーが（再度、例えば、コード・エラー、装置エラー、もしくはインターフェース・エラーの結果として）ＯＳＡプロセスで生じたなら、その回復プロセス９６５のコードは１個もしくはそれ以上の影響のあるＯＳＡプロセスの再スタートを試みる（ブロック９７０）。ＯＳＡプロセスおよび／もしくは装置マネジャ・プロセスの中でマルチ（複数）の失敗が生じるかも知れない。その再スタートが成功であると仮定すると、Ｉ／Ｏサブシステムもしくはｃｈｐｉｄは稼動しており（ブロック９５０）、新しい状況ＯＫ信号をエミュレータに提供しそれが稼動していることそしてＩ／Ｏコマンドを受け入れ可能なことを知らせる。もしＯＳＡプロセスの再スタートが不成功であれば、主題のＩ／Ｏサブシステム（すなわちｃｈｐｉｄ）が失敗したことになる（ブロック９７５）。その一方で、Ｉ／Ｏアーキテクチャ・エミュレーションは稼動し続け、その影響を受けるＩ／Ｏサブシステムのための全てのログアウト情報がＩ／Ｏ失敗の将来の情報収集および解析のために保存される（ブロック９６０）。
【００６５】
本発明の一つもしくはそれ以上の側面が、例えばコンピュータ使用可能な媒体を有する製品（例えば、１個もしくはそれ以上のコンピュータ・プログラム製品）に含まれる。その媒体は、本発明の機能を提供し促進するために、例えばコンピュータ読み取り可能なプログラム・コード手段もしくは論理（例えば、命令、コード、コマンドなど）をその中に有する。本発明の製品はコンピュータ・システムの一部としてもしくは別体で市販されているものとして含まれることができる。
【００６６】
本発明の一つもしくはそれ以上の側面を導入した製品もしくはコンピュータ・プログラム製品の一例を図１０に示す。コンピュータ・プログラム製品１０００は、本発明の一つもしくはそれ以上の側面を提供し促進するために、その上にコンピュータ読み取り可能なプログラム・コード手段もしくは論理１００４をストア（格納）する、例えば１個もしくはそれ以上のコンピュータ使用可能媒体１００２を含む。この媒体は、電子的、磁気的、光学的、電磁気的、もしくは赤外線の、あるいは半導体のシステム（装置もしくはデバイス）または伝播媒体であり得る。コンピュータ読み取り可能媒体の例は、半導体メモリもしくは固体メモリ、磁気テープ、取り外し可能なコンピュータ・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、磁気ハード・ディスク、および光ディスクである。光ディスクの例は、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク読み取り書き込みメモリ（ＣＤ−Ｒ／Ｗ）およびＤＶＤである。
【００６７】
１個もしくはそれ以上のコンピュータ読み取り可能なプログラム・コード手段もしくは論理により定義される１個もしくはそれ以上の相互に関連付けられたモジュールの論理アセンブリもしくはある順序のプログラム命令が、本発明の一つもしくはそれ以上の側面の性能を支配する。
【００６８】
好適には、メモリの容易にアクセスできる単位のデータ構造が提供される。このデータ構造を用いることによって、メモリ・アクセスおよびシステムの性能が増進される（例えば速くなる）。このデータ構造は、ある単位のメモリをアクセスするために実行されるべきアドレス翻訳もしくは他の何らかのテストを、そのデータ構造の中ではであるが、必要としない１個もしくはそれ以上の単位のメモリ（例えばページ）の指定（例えば、アドレス）を含む。このデータ構造はエミュレートされた環境を含む任意の型の処理環境で使用できる。
【００６９】
これまで種々の実施例を説明してきたが、これらは単なる例である。例えば、本発明の１個もしくはそれ以上の側面は、エミュレートされない環境の中にも含まれる。更に、本発明の１個もしくはそれ以上の側面は、前述したのとは異なるネイティブ・アーキテクチャ、および／もしくはｚアーキテクチャ（商標）以外のアーキテクチャをエミュレートするネイティブ・アーキテクチャで使用できる。種々のエミュレータが使用できる。エミュレータ はいろいろな会社によって市販され、提供されている。エミュレーションに関する更なる詳細は、非特許文献３に記されているので参考にされたい。
【００７０】
入出力装置すなわちＩ／Ｏ装置（キーボード、ディスプレイ、ポインティング装置、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、ドライブおよび他のメモリ媒体など、これらに限定されるものではないが、これらを含む）はシステムに直接に、またはＩ／Ｏコントローラを介して間接的にシステムに結合されることができる。ネットワーク・アダプタもまたシステムに結合されてもよく、これによってデータ処理システムが他のデータ処理システムもしくは遠隔のプリンタあるいはストレージ装置に私的なまたは公的なネットワークを介して結合できるようにされてもよい。モデム、ケーブル・モデムおよびイーサーネット（Ethernet（登録商標））カードはネットワーク・アダプタの本の一例である。
【００７１】
ここで使用されるように、「得る」という用語は、取り出す、受け取る、有する、提供する、設けられる、提供される、生成する、現れる、といったものを含むが、これらに限定されるものではない。
【００７２】
本発明の一つもしくはそれ以上の側面の機能はソフトウエア、ファームウエア、ハードウエア、またはその幾つかの組み合わせで実施されることができる。本発明の機能を実行するようにマシーンにより読み出され得る命令群からなる少なくとも一つのプログラムを含めたマシーンにより読み出し可能な少なくとも１個のプログラム・ストレージ装置を設けることができる。
【００７３】
ここで示すフローチャートは単なる例示である。ここに記述したフローチャートやステップ（もしくは動作）に多くの変形が本発明の範囲から逸れずに可能である。例えば、これらのステップを異なる順序で行ったり、ステップを加えたり、減らしたり、変えたりしてもよい。これらの変形は全て特許請求の範囲に記された本発明の一部と考えられる。
【００７４】
ここで幾つかの実施例を示し、詳細に記述したが、種々の変形、付加、代替等が、特許請求の範囲に示すように本発明の範囲から逸れずに行うことができることは当業者には明らかである。
【図面の簡単な説明】
【００７５】
【図１】本発明の一つもしくはそれ以上の側面を導入し使用するための処理環境の一実施例を示す図である。
【図２】本発明の一つもしくはそれ以上の側面に従う、図１のメモリの一実施例を示す図である。
【図３】本発明の一側面に従い、ネイティブのハードウエア・アーキテクチャ上で稼動するネイティブの処理システムとゲスト処理システムをインターフェースするエミュレータの一実施例の詳細を示す図である。
【図４】本発明の一側面による入出力アーキテクチャのエミュレーションの詳細を示すエミュレータの他の実施例を示す図である。
【図５】本発明の一側面に従い、図４の入出力アーキテクチャのエミュレーションを初期化する一実施例のフローチャートである。
【図６】本発明の一側面に従い、図４の複数個の装置マネジャのうちの１個の装置マネジャのデータフロー処理の一実施例のフローチャートである。
【図７】図４のエミュレートされたＩ／Ｏアーキテクチャの他の実施例を示し、本発明の一実施例に従い、エミュレートされたＩ／Ｏアーキテクチャの種々のプロセスの共有能力を説明する図である。
【図８】図４のエミュレートされたＩ／Ｏアーキテクチャの他の実施例を示し、本発明の一側面による、停止されたコミュニケーションズ・アダプタ・インターフェースを再始動させるための共通の回復プロセスを示す図である。
【図９】本発明に従う、Ｉ／Ｏアーキテクチャ・エミュレーションおよびＩ／Ｏサブシステム再始動プロセスのフローチャートである。
【図１０】本発明の一つもしくはそれ以上の側面を導入するためのコンピュータ・プログラム製品の一実施例を示す図である。
【符号の説明】
【００７６】
１００  処理環境
１０２  ネイティブＣＰＵ
１０４  メモリ
１０６  Ｉ／Ｏ装置
１０８  バス
１１０  レジスタ
１１２  エミュレータ 
２００  命令取り出しルーチン
２０２  ゲスト命令
２０４  命令翻訳ルーチン
２０６  エミュレーション制御ルーチン
２０８  ネイティブ命令
２１０  ジャスト・イン・タイム・コンパイラ
３００  共有メモリ
３０２  サービス・プロセス
３０４  Ｉ／Ｏインプリメンテーション
３０６  ＣＰＵインプリメンテーション
４００  エミュレータ
４１０  エミュレータＩ／Ｏインターフェース
４１１  ＱＤＩＯ作業
４１２  非ＱＤＩＯ作業
４２０  （第１ないし第５の）装置マネジャ
４２５  メッセージ・キュー（ＭＳＧ  Ｑ）
４３０  ＯＳＡプロセス
４３５  サービス・キュー
４５０  エミュレータ ・サービス・インターフェース
４６１  第１のホスト（処理システム）
４６２  第２のホスト（処理システム）
【図１】
2008293479.tif 000013
【図２】
2008293479.tif 000014
【図３】
2008293479.tif 000015
【図４】
2008293479.tif 000016
【図５】
2008293479.tif 000017
【図６】
2008293479.tif 000018
【図７】
2008293479.tif 000019
【図８】
2008293479.tif 000020
【図９】
2008293479.tif 000021
【図１０】
2008293479.tif 000022