(57)【特許請求の範囲】
【請求項１】
ホスト・プロセッサを備えるコンピュータの処理を管理するための方法であって、前記方法は、
第１のアーキテクチャ・モードで処理している前記ホスト・プロセッサにより、第１のゲスト仮想マシンを開始することであって、前記第１のゲスト仮想マシンは前記第１のアーキテクチャ・モードで処理するためのものであり、前記第１のアーキテクチャ・モードは、第１の命令セット・アーキテクチャを有し、かつ、第１セットのアーキテクチャ機能を与える、開始することと、
前記ホスト・プロセッサにより、第２のゲスト仮想マシンを開始することであって、前記第２のゲスト仮想マシンは第２のアーキテクチャ・モードで処理するためのものであり、前記第２のアーキテクチャ・モードは、第２の命令セット・アーキテクチャを有し、かつ、第２セットのアーキテクチャ機能を与え、前記第２セットのアーキテクチャ機能は、前記第１セットのアーキテクチャ機能において与えられるアーキテクチャ機能の縮小セットであり、前記第１セットのアーキテクチャ機能において与えられる選択されたアーキテクチャ機能は前記第２セットのアーキテクチャ機能内には存在せず、前記第２のアーキテクチャ・モードは機能禁止モードである、開始することと、
前記第２のゲスト仮想マシンにより、前記第２のアーキテクチャ・モードでの処理を実行することであって、前記処理を実行することは、前記選択されたアーキテクチャ機能が除去されたと判断することに基づいて前記第２のゲスト仮想マシンの実行を制御するために用いられる前記選択されたアーキテクチャ機能の可用性を示し得る１つ又は複数の制御をオーバーライドする、実行することと、
を含む、方法。    
【請求項２】
前記選択されたアーキテクチャ機能は動的アドレス変換を含む、請求項１に記載の方法。    
【請求項３】
前記ホスト・プロセッサ及び前記第１のゲスト仮想マシンの少なくとも１つは、動的アドレス変換を用いて１つのアドレスを別のアドレスに変換し、前記第２のゲスト仮想マシンにおいて、動的アドレス変換は利用不能であるが、制御ブロック内のインジケータは、動的アドレス変換がオンにされたことを示す、請求項２に記載の方法。    
【請求項４】
前記方法は、
前記第２のゲスト仮想マシンにより、動作を実行する要求を取得することであって、前記動作は前記選択されたアーキテクチャ機能を使用する又はイネーブルにするためのものである、取得することと、
前記要求を取得することに基づいて、前記第２のゲスト仮想マシンが前記第２のアーキテクチャ・モードで処理しているかどうかを判断することと、
前記第２のゲスト仮想マシンが前記第２のアーキテクチャ・モードで処理していると判断することに基づいて、前記選択されたアーキテクチャ機能は使用されない又はイネーブルにされないという表示を与えることと、
をさらに含む、前記請求項１ないし３のいずれかに記載の方法。    
【請求項５】
前記表示を与えることは、エラーを示すことを含む、請求項４に記載の方法。    
【請求項６】
前記エラーは例外である、請求項５に記載の方法。    
【請求項７】
前記動作は、前記選択されたアーキテクチャ機能をオンにしようと試みるＬｏａｄ  Ｐｒｏｇｒａｍ  Ｓｔａｔｕｓ  Ｗｏｒｄ命令、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令、前記選択されたアーキテクチャ機能をオンにしようと試みるＳｅｔ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令、前記選択されたアーキテクチャ機能をオンにしようと試みるＳｔｏｒｅ  Ｔｈｅｎ  ＯＲ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令、又は割り込みプログラム状況ワードが前記選択されたアーキテクチャ機能をオンにしようと試みる割り込みのうちの１つを含む、請求項４から請求項６までのいずれかに記載の方法。    
【請求項８】
前記選択されたアーキテクチャ機能に関するイネーブル／ディスエーブル・インジケータがイネーブルを示すかどうかに関係なく、コンピューティング環境のインジケータが、前記選択されたアーキテクチャ機能がサポ―されていないこと示すことに基づき、前記選択されたアーキテクチャ機能は前記第２セットのアーキテクチャ機能内には存在しない、前記請求項１ないし７のいずれかに記載の方法。    
【請求項９】
前記第１のアーキテクチャ・モードは、６４ビット・アドレッシングを含み、６４ビットの汎用レジスタを使用し、前記第２のアーキテクチャ・モードは、３１ビット・アドレッシングを含み、３２ビットの汎用レジスタを使用する、前記請求項１ないし８のいずれかに記載の方法。    
【請求項１０】
処理を管理するためのコンピュータ・システムであって、前記コンピュータ・システムは
メモリと、
前記メモリと通信するプロセッサと、
を含み、かつ、方法を実行するように構成され、前記方法は、
第１のアーキテクチャ・モードで処理しているホスト・プロセッサにより、第１のゲスト仮想マシンを開始することであって、前記第１のゲスト仮想マシンは前記第１のアーキテクチャ・モードで処理するためのものであり、前記第１のアーキテクチャ・モードは、第１の命令セット・アーキテクチャを有し、かつ、第１セットのアーキテクチャ機能を与える、開始することと、
前記ホスト・プロセッサにより、第２のゲスト仮想マシンを開始することであって、前記第２のゲスト仮想マシンは第２のアーキテクチャ・モードで処理するためのものであり、前記第２のアーキテクチャ・モードは、第２の命令セット・アーキテクチャを有し、かつ、第２セットのアーキテクチャ機能を与え、前記第２セットのアーキテクチャ機能は、前記第１セットのアーキテクチャ機能において与えられるアーキテクチャ機能の縮小セットであり、前記第１セットのアーキテクチャ機能において与えられる選択されたアーキテクチャ機能は前記第２セットのアーキテクチャ機能内には存在せず、前記第２のアーキテクチャ・モードは機能禁止モードである、開始することと、
前記第２のゲスト仮想マシンにより、前記第２のアーキテクチャ・モードでの処理を実行することであって、前記処理を実行することは、前記選択されたアーキテクチャ機能が除去されたと判断することに基づいて前記第２のゲスト仮想マシンの実行を制御するために用いられる前記選択されたアーキテクチャ機能の可用性を示し得る１つ又は複数の制御をオーバーライドする、実行することと、
を含む、コンピュータ・システム。    
【請求項１１】
前記選択されたアーキテクチャ機能は動的アドレス変換を含む、請求項１０に記載のコンピュータ・システム。    
【請求項１２】
前記ホスト・プロセッサ及び前記第１のゲスト仮想マシンの少なくとも１つは、動的アドレス変換を用いて１つのアドレスを別のアドレスに変換し、前記第２のゲスト仮想マシンにおいて、動的アドレス変換は利用不能であるが、制御ブロック内のインジケータは、動的アドレス変換がオンにされたことを示す、請求項１１に記載のコンピュータ・システム。    
【請求項１３】
前記方法は、
前記第２のゲスト仮想マシンにより、動作を実行する要求を取得することであって、前記動作は前記選択されたアーキテクチャ機能を使用する又はイネーブルにするためのものである、取得することと、
前記要求を取得することに基づいて、前記第２のゲスト仮想マシンが前記第２のアーキテクチャ・モードで処理しているかどうかを判断することと、
前記第２のゲスト仮想マシンが前記第２のアーキテクチャ・モードで処理していると判断することに基づいて、前記選択されたアーキテクチャ機能は使用されない又はイネーブルにされないという表示を与えることと、をさらに含む、請求項１０から請求項１２までのいずれかに記載のコンピュータ・システム。    
【請求項１４】
前記動作は、前記選択されたアーキテクチャ機能をオンにしようと試みるＬｏａｄ  Ｐｒｏｇｒａｍ  Ｓｔａｔｕｓ  Ｗｏｒｄ命令、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令、前記選択されたアーキテクチャ機能をオンにしようと試みるＳｅｔ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令、前記選択されたアーキテクチャ機能をオンにしようと試みるＳｔｏｒｅ  Ｔｈｅｎ  ＯＲ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令、又は割り込みプログラム状況ワードが前記選択されたアーキテクチャ機能をオンにしようと試みる割り込みのうちの１つを含む請求項１３に記載のコンピュータ・システム。    
【請求項１５】
前記選択されたアーキテクチャ機能に関するイネーブル／ディスエーブル・インジケータがイネーブルを示すかどうかに関係なく、コンピューティング環境のインジケータが、前記選択されたアーキテクチャ機能がサポ―されていないこと示すことに基づき、前記選択されたアーキテクチャ機能は前記第２セットのアーキテクチャ機能内には存在しない、請求項１０から請求項１４までのいずれかに記載のコンピュータ・システム。    
【請求項１６】
コンピュータに実行されることにより、前記コンピュータに請求項１から請求項９までのいずれかに記載の方法を実行させる、コンピュータ・プログラム。     
【発明の詳細な説明】
【技術分野】
【０００１】
１つ又は複数の態様は、一般に、コンピューティング環境内での処理に関し、具体的には、コンピューティング環境内での選択されたアーキテクチャ機能の使用を管理することに関する。
【背景技術】
【０００２】
コンピューティング環境は、様々な能力を提供し、そのアーキテクチャ構成の部分として特定の機能を含む。１つのそうした機能は、仮想アドレスを実アドレスに変換するために用いられる、動的アドレス変換（dynamic address translation）のような仮想アドレス変換である。
【０００３】
システム構成には、アプリケーション及びデータを格納するために用いられる物理メモリが含まれる。物理メモリの量は一定であり、ユーザのニーズをサポートするのには不十分であることが多い。従って、付加的なメモリ又は少なくとも付加的なメモリの外観を与えるために、仮想メモリと呼ばれるメモリ管理技術が利用される。仮想メモリは仮想アドレス指定を使用し、この仮想アドレス指定は、主メモリの物理サイズよりずっと大きく見えることが可能なアドレスの範囲を提供する。
【０００４】
仮想メモリを含むシステム構成内の主メモリにアクセスするために、例えば仮想アドレスを含むメモリ・アクセスが要求される。仮想アドレスは、例えば動的アドレス変換又は別の変換技術を用いて、物理メモリにアクセスするために用いられる実アドレスに変換される。
【０００５】
しかしながら、仮想メモリのテストには費用がかかる。アーキテクチャがサンセット（衰退技術）であるとき、例えば、主としてコマンドラインのインタープリタ環境として機能する（例えば、ＭＳ  ＤＯＳ又はＣＭＳなどの）ＤＯＳオペレーティング・システムのような最小のアーキテクチャ・サポートを使用するシステムのため、又は、ＢＩＯＳの部分を実行するために使用される（及び仮想メモリの複雑さを有することなく実行することができる）環境のため、レガシー・システムを提供することが望ましいことがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第５，５５１，０１３号明細書
【特許文献２】米国特許第６，００９，２６１号明細書
【特許文献３】米国特許第５，５７４，８７３号明細書
【特許文献４】米国特許第６，３０８，２５５号明細書
【特許文献５】米国特許第６，４６３，５８２号明細書
【特許文献６】米国特許第５，７９０，８２５号明細書
【非特許文献】
【０００７】
【非特許文献１】「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ−Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」と題するＩＢＭ出版物、出版番号第ＳＡ２２−７９３２−０９、第１０版、２０１２年９月
【非特許文献２】「ｚ／ＶＭ：Ｒｕｎｎｉｎｇ  Ｇｕｅｓｔ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ」と題するＩＢＭ出版物、ＩＢＭ（登録商標）出版番号第ＳＣ２４−５９９７−０２、２００１年１０月
【非特許文献３】「Ｓｙｓｔｅｍ／３７０  Ｅｘｔｅｎｔｅｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ／Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ」、ＩＢＭ出版番号第ＳＡ２２−７０９５−０１、１９８５年９月
【非特許文献４】Ｏｓｉｓｅｋ他著、「ＥＳＡ／３９０  ｉｎｔｅｒｐｒｅｔｉｖｅ−ｅｘｅｃｕｔｉｏｎ  ａｒｃｈｉｔｅｃｔｕｒｅ、ｆｏｕｎｄａｔｉｏｎ  ｆｏｒ  ＶＭ／ＥＳＡ」、ＩＢＭ  Ｓｙｓｔｅｍｓ  Ｊｏｕｒｎａｌ、３０巻、第１、１９９１年１月
【非特許文献５】Ｐｌａｍｂｅｃｋ他著、「Ｄｅｖｅｌｏｐｍｅｎｔ  ａｎｄ  Ａｔｔｒｉｂｕｔｅｓ  ｏｆ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ」、ＩＢＭ  Ｊ．Ｒｅｓ．＆Ｄｅｖ．、４６巻、Ｎｏ．４／５、２００２年７月／９月
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従って、当技術分野において、上述の問題に対処する必要性が存在する。
【課題を解決するための手段】
【０００９】
コンピューティング環境内でマシン命令を実行するためのコンピュータ・プログラム製品を提供することにより、従来技術の欠点が克服され、利点が与えられる。コンピュータ・プログラム製品は、例えば、処理回路により読み取り可能であり、かつ、方法を実施するための処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む。この方法は、例えば、第１のアーキテクチャ・モードで処理しているホスト・プロセッサにより、第１のゲスト仮想マシンを開始することであって、第１のゲスト仮想マシンは第１のアーキテクチャ・モードで処理するためのものであり、第１のアーキテクチャ・モードは、第１の命令セット・アーキテクチャを有し、かつ、第１セットのアーキテクチャ機能を与える、開始することと、ホスト・プロセッサにより、第２のゲスト仮想マシンを開始することであって、第２のゲスト仮想マシンは第２のアーキテクチャ・モードで処理するためのものであり、第２のアーキテクチャ・モードは、第２の命令セット・アーキテクチャを有し、かつ、第２セットのアーキテクチャ機能を与え、第２セットのアーキテクチャ機能は、第１セットのアーキテクチャ機能において与えられるアーキテクチャ機能の縮小セットであり、第１セットのアーキテクチャ機能において与えられる選択されたアーキテクチャ機能には第２セットのアーキテクチャ機能が存在せず、第２のアーキテクチャ・モードは機能禁止モードである、開始することと、第２のゲスト仮想マシンにより、第２のアーキテクチャ・モードで処理を実行することであって、処理を実行することは、第２のゲスト仮想マシンの実行を制御するために定められた選択されたアーキテクチャ機能と関連した１つ又は複数の制御をオーバーライドする、実行することと、を含む。
【００１０】
第１の態様から見ると、本発明は、コンピューティング環境内での処理を管理するための方法を提供し、この方法は、第１のアーキテクチャ・モードで処理しているホスト・プロセッサにより、第１のゲスト仮想マシンを開始することであって、第１のゲスト仮想マシンは第１のアーキテクチャ・モードで処理するためのものであり、第１のアーキテクチャ・モードは、第１の命令セット・アーキテクチャを有し、かつ、第１セットのアーキテクチャ機能を与える、開始することと、ホスト・プロセッサにより、第２のゲスト仮想マシンを開始することであって、第２のゲスト仮想マシンは第２のアーキテクチャ・モードで処理するためのものであり、第２のアーキテクチャ・モードは、第２の命令セット・アーキテクチャを有し、かつ、第２セットのアーキテクチャ機能を与え、第２セットのアーキテクチャ機能は、第１セットのアーキテクチャ機能において与えられるアーキテクチャ機能の縮小セットであり、第１セットのアーキテクチャ機能において与えられる選択されたアーキテクチャ機能には第２セットのアーキテクチャ機能が存在せず、第２のアーキテクチャ・モードは機能禁止モードである、開始することと、第２のゲスト仮想マシンにより、第２のアーキテクチャ・モードで処理を実行することであって、処理を実行することは、第２のゲスト仮想マシンの実行を制御するために定められた選択されたアーキテクチャ機能と関連した１つ又は複数の制御をオーバーライドする、実行することと、を含む。
【００１１】
更に別の態様から見ると、本発明は、コンピューティング環境内での処理を管理するための方法を提供し、この方法は、コンピューティング環境のプロセッサにより、動作を実行する要求を取得することであって、動作は選択されたアーキテクチャ機能を使用する又はイネーブルにするためのものであり、プロセッサは第１のアーキテクチャ及び第２のアーキテクチャを含む複数のアーキテクチャを同時にサポートするように構成され、第１のアーキテクチャは、選択されたアーキテクチャ機能用に構成され、選択されたアーキテクチャ機能をサポートし、第２のアーキテクチャは選択されたアーキテクチャ機能がそこから除去される、取得することと、取得することに基づいて、プロセッサが第１のアーキテクチャに基づく第１のアーキテクチャ・モードで処理しているか又は第２のアーキテクチャに基づく第２のアーキテクチャ・モードで処理しているかを判断することと、プロセッサが第１のアーキテクチャ・モードで処理していると判断することに基づいて、動作を実行することと、プロセッサが第２のアーキテクチャ・モードで処理しており、選択されたアーキテクチャ機能が除去されたと判断することに基づいて、選択されたアーキテクチャ機能が使用されない又はイネーブルにされるという表示を与えることであって、与えることは、選択されたアーキテクチャ・フィーチャがイネーブル／ディスエーブルにされたかどうかを示す制御のチェックなしに実行され、制御は、除去の表示とは別個である、与えることと、を含む。
【００１２】
更に別の態様から見ると、本発明は、コンピューティング環境内での処理を管理するためのコンピュータ・システムを提供し、このコンピュータ・システムは、メモリと、メモリと通信するプロセッサとを含み、かつ、方法を実行するように構成され、この方法は、第１のアーキテクチャ・モードで処理しているホスト・プロセッサにより、第１のゲスト仮想マシンを開始することであって、第１のゲスト仮想マシンは第１のアーキテクチャ・モードで処理するためのものであり、第１のアーキテクチャ・モードは、第１の命令セット・アーキテクチャを有し、かつ、第１セットのアーキテクチャ機能を与える、開始することと、ホスト・プロセッサにより、第２のゲスト仮想マシンを開始することであって、第２のゲスト仮想マシンは第２のアーキテクチャ・モードで処理するためのものであり、第２のアーキテクチャ・モードは、第２の命令セット・アーキテクチャを有し、かつ、第２セットのアーキテクチャ機能を与え、第２セットのアーキテクチャ機能は、第１セットのアーキテクチャ機能において与えられるアーキテクチャ機能の縮小セットであり、第１セットのアーキテクチャ機能において与えられる選択されたアーキテクチャ機能には第２セットのアーキテクチャ機能が存在せず、第２のアーキテクチャ・モードは機能禁止モードである、開始することと、第２のゲスト仮想マシンにより、第２のアーキテクチャ・モードで処理を実行することであって、処理を実行することは、第２のゲスト仮想マシンの実行を制御するために定められた選択されたアーキテクチャ機能と関連した１つ又は複数の制御をオーバーライドする、実行することと、を含む。
【００１３】
更に別の態様から見ると、本発明は、コンピューティング環境内での処理を管理するためのコンピュータ・プログラム製品を提供し、このコンピュータ・プログラム製品は、処理回路により読み取り可能であり、かつ、本発明のステップを実行する方法を実行するための処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む。
【００１４】
更に別の態様から見ると、本発明は、コンピュータ可読媒体上に格納され、プログラムがコンピュータ上で実行されるとき、本発明のステップを実施するためのソフトウェア・コード部分を含むデジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムを提供する。
【００１５】
１つ又は複数の好ましい実施形態に関連する方法及びシステムも、本明細書で説明され、特許請求される。さらに、１つ又は複数の好ましい実施形態に関連するサービスも説明され、本発明で特許請求され得る。
【００１６】
付加的な特徴及び利点が実現される。他の好ましい実施形態及び態様は、本明細書で詳細に説明され、特許請求される本発明の一部であると見なされる。
【００１７】
ここで本発明の好ましい実施形態を、添付図面を参照して単なる例として説明する。
【図面の簡単な説明】
【００１８】
【図１】本発明の好ましい実施形態による、Ｎｏ−ＤＡＴファシリティの１つ又は複数の態様を組み込み、使用するためのコンピューティング環境の一例を示す。
【図２】本発明の好ましい実施形態による、Ｎｏ−ＤＡＴファシリティの１つ又は複数の態様を組み込み、使用するための仮想コンピューティング環境の一例を示す。
【図３】本発明の好ましい実施形態による、Ｎｏ−ＤＡＴファシリティの１つ又は複数の態様を組み込み、使用するための仮想コンピューティング環境の別の例を示す。
【図４】本発明の好ましい実施形態による、Ｎｏ−ＤＡＴファシリティの１つ又は複数の態様を組み込み、使用するための仮想コンピューティング環境の別の例を示す。
【図５】本発明の好ましい実施形態による、図４のメモリのさらなる詳細を示す。
【図６】本発明の好ましい実施形態による、６４ビットのアドレス変換の１つの実施形態を示す。
【図７】本発明の好ましい実施形態による、Ｌｏａｄ  Ｐｒｏｇｒａｍ  Ｓｔａｔｕｓ  Ｗｏｒｄ（ＰＳＷ）命令の１つの例示的な形式を示す。
【図８】本発明の好ましい実施形態による、プログラム状況ワードの１つの例示的な形式を示す。
【図９】本発明の好ましい実施形態による、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令の例示的な形式を示す。
【図１０】本発明の好ましい実施形態による、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令の例示的な形式を示す。
【図１１】本発明の好ましい実施形態による、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令の例示的な形式を示す。
【図１２】本発明の好ましい実施形態による、Ｓｅｔ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令の例示的な形式を示す。
【図１３】本発明の好ましい実施形態による、Ｓｔｏｒｅ  Ｔｈｅｎ  ＯＲ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令の例示的な形式を示す。
【図１４】本発明の好ましい実施形態による、Ｎｏ−ＤＡＴファシリティと関連した処理の１つの実施形態を示す。
【図１５】本発明の好ましい実施形態による、仮想コンピューティング環境におけるＮｏ−ＤＡＴファシリティと関連した処理の１つの実施形態を示す。
【図１６】本発明の好ましい実施形態による、仮想コンピューティング環境におけるＮｏ−ＤＡＴファシリティと関連した処理の１つの実施形態を示す。
【図１７】従来技術による、本発明の好ましい実施形態を実装できる、コンピュータ・プログラム製品の１つの実施形態を示す。
【図１８】従来技術による、本発明の好ましい実施形態を実装できる、ホスト・コンピュータ・システムの１つの実施形態を示す。
【図１９】従来技術による、本発明の好ましい実施形態を実装できる、コンピュータ・システムの更に別の例を示す。
【図２０】従来技術による、本発明の好ましい実施形態を実装できる、コンピュータ・ネットワークを含むコンピュータ・システムの別の例を示す。
【図２１】従来技術による、本発明の好ましい実施形態を実装できる、コンピュータ・システムの種々の要素の１つの実施形態を示す。
【図２２】従来技術による、本発明の好ましい実施形態を実装できる、図２１のコンピュータ・システムの実行ユニットの１つの実施形態を示す。
【図２３】従来技術による、本発明の好ましい実施形態を実装できる、図２１のコンピュータ・システムの分岐ユニットの１つの実施形態を示す。
【図２４】従来技術による、本発明の好ましい実施形態を実装できる、図２１のコンピュータ・システムのロード／ストア・ユニットの１つの実施形態を示す。
【図２５】従来技術による、本発明の好ましい実施形態を実装できる、エミュレートされたホスト・コンピュータ・システムの１つの実施形態を示す。
【図２６】従来技術による、本発明の好ましい実施形態を実装できる、クラウド・コンピューティング・ノードの１つの実施形態を示す。
【図２７】従来技術による、本発明の好ましい実施形態を実装できる、クラウド・コンピューティング環境の１つの実施形態を示す。
【図２８】従来技術による、本発明の好ましい実施形態を実装できる、抽象化モデル層の一例を示す。
【発明を実施するための形態】
【００１９】
１つ又は複数の態様によると、インストールされると、アーキテクチャから、選択されたアーキテクチャ機能を除去（remove）し、環境内の他の制御に関係なく、その機能をオン／オフできなくするファシリティが提供される。ファシリティがインストールされている場合、アーキテクチャ機能はサポートされない。これは、アーキテクチャにおいてアーキテクチャ機能が利用不能であるかのようであり、実際には、ファシリティを実装するコードを、削除、バイパス、又は他の方法で排除することができる。１つのこうしたアーキテクチャ機能は、動的アドレス変換（ＤＡＴ）のような仮想アドレス変換であり、アーキテクチャは、例えばＥＳＡ／３９０である。
【００２０】
１つの特定の実施形態において、複数のアーキテクチャ・モード、例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅなどの強化されたモードのような第１のアーキテクチャ・モード、及び、例えばＥＳＡ／３９０などのレガシー・モードのような第２のアーキテクチャ・モードをサポートするように構成されたコンピューティング環境が提供される。１つの実施形態において、第１のアーキテクチャ・モードは６４ビット・アドレッシングを提供し、６４ビットの汎用レジスタを使用し、第２のアーキテクチャ・モードは３１ビット・アドレッシングを提供し、３２ビットの汎用レジスタを使用するといったように、第１のアーキテクチャ・モードは、第２のアーキテクチャ・モードとはアーキテクチャ上の相違を有する。さらに、ＤＡＴなどの特定のアーキテクチャ機能は、第１のアーキテクチャ・モードによってサポートされ、第２のアーキテクチャ・モードによってサポートすることはできない。
【００２１】
コンピューティング環境は、複数のアーキテクチャ・モードを同時に（concurrently）サポートするように構成されるが、コンピューティング環境は、これらのモードの１つのみで処理される。従って、１つの態様によると、コンピューティング環境のプロセッサが、選択されたアーキテクチャ機能を使用する操作を実行する要求を受け取ることに応答して、プロセッサは、機能を実行するか、又は、コンピューティング環境が現在処理しているアーキテクチャ・モードから機能が除去されたかどうかに基づいて、機能を実行しないという表示を提供する。
【００２２】
別の実施形態において、コンピューティング環境は、プロセッサ、及びホストによりサポートされる複数のゲスト仮想マシン上で実行されているホスト制御プログラムを有する仮想環境である。ホストは、例えば、第１のアーキテクチャ・モードで処理を行っているが、ホストにより開始されるゲスト仮想マシンが、ホストと同じアーキテクチャ・モードで処理される場合も又はされない場合もある。例えば、１つの仮想マシンは、選択された機能を提供する第１のアーキテクチャ・モードで開始することができ、別の仮想マシンは、選択されたアーキテクチャ機能を提供しない第２のアーキテクチャ・モードで開始することができる。１つの実施形態において、第２のアーキテクチャ・モードは、第１のアーキテクチャ・モードのアーキテクチャ機能の縮小セット（reduced set）を提供する。選択されたアーキテクチャ機能は、アーキテクチャから除去されたという点で、アーキテクチャの部分ではない（例えば、機能を実装するコードなしに、アーキテクチャのバージョンが作成される、又は、この機能をサポートするために既にアーキテクチャ内にあったコードがバイパス、削除、又は他の方法で排除された）。
【００２３】
別の実施形態において、第２のアーキテクチャ・モードは、第１のアーキテクチャ・モードとは異なる機能又はファシリティを提供でき、特定のアーキテクチャ能力を、第１のアーキテクチャ・モードで提供ができるが、第２のアーキテクチャ・モードでは提供できない。１つの例示的な実施形態においては、ＤＡＴ変換が第１のアーキテクチャで与えられ、第２のアーキテクチャでは与えられない（第１のアーキテクチャにより定められた形態、又は、例えばＥＳＡ／３９０、Ｓ／３９０、Ｓ／３７０、Ｓ／３６０、ＰｏｗｅｒＰＣ、Ｂｏｏｋ  ３Ｅ、Ｉｎｔｅｌ／ＡＭＤ  ｘ８６、Ｉｔａｎｉｕｍ、又はＤＡＴ若しくはＤＡＴ様ファシリティに対応する他のいずれかのアーキテクチャ仕様に従ったＰｏｗｅｒＰＣに従って提供できるような他の何れかの形態で）。ＩＢＭ、ｚ／ＯＳ、ｚ／ＶＭ、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ、Ｐｒｏｃｅｓｓｏｒ  Ｒｅｓｏｕｒｃｅ／Ｓｙｓｔｅｍｓ  Ｍａｎａｇｅｒ、ＰｏｗｅｒＰＣ、及びＰｏｗｅｒ  Ｓｙｓｔｅｍｓは、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。本明細書で使用される他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション又は他の会社の登録商標、商標、又は製品名であり得る。Ｉｎｔｅｌ及びＩｔａｎｉｕｍは、米国及び他の国々におけるＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ又はその子会社の商標又は登録商標である。
【００２４】
本明細書で示されるように、一例において、第１のアーキテクチャにおいて与えられ、第２のアーキテクチャにおいては与えられないアーキテクチャ機能は、動的アドレス変換（ＤＡＴ）のような仮想アドレス変換である。従って、１つの特定の例において、動的アドレス変換が特定のアーキテクチャ・モード（例えば、レガシー・アーキテクチャ・モード）によってサポートされないことを示す、Ｎｏ−ＤＡＴ（ＮＤＡＴとも呼ばれる）ファシリティが、コンピューティング環境において与えられる。このファシリティは、例えば、動的アドレス変換（ＤＡＴ）がオンの状態で、ＥＳＡ／３９０アーキテクチャ・モードにおける構成の可能性を除去する。つまり、このファシリティがインストールされ、イネーブルにされると、ＥＳＡ／３９０アーキテクチャ・モードにおける構成は、ＤＡＴをオンにすることができない。ＤＡＴをオンにしようとする試みは、例えば、Ｎｏ−ＤＡＴ例外プログラム割り込みを引き起こす。他の実施形態においては、他の例外コードが示される。
【００２５】
１つの実施形態において、ＮＤＡＴファシリティは、一般に、例えばＬｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ（ＬＲＡ）命令などのＤＡＴ変換と併用される１つ又は複数の命令の実行をディスエーブルにする。Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令は、例えば、この命令を第１のアーキテクチャ・モードで実行できるときに、第２のアーキテクチャ・モードで実行することはできない。
【００２６】
１つの実施形態において、１つ又は複数のコンピューティング環境（例えば、プロセッサ、ＬＰＡＲ、ゲスト）において、ＮＤＡＴファシリティを選択的にイネーブルにすることができる。しかしながら、コンピューティング環境においてＮＤＡＴファシリティがイネーブルにされると、環境内の他の制御の設定に関係なく、環境は、第２のアーキテクチャにおいてＤＡＴを使用することができない（すなわち、非ＥＳＡ／３９０ＤＡＴ）。それらの他の制御は、バイパス又はオーバーライドされる。
【００２７】
図１を参照して、Ｎｏ−ＤＡＴファシリティの１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の一例を説明する。図１を参照すると、一例において、コンピューティング環境１００は、ニューヨーク州Ａｒｍｏｎｋ所在のインターナショナル・ビジネス・マシーンズ（ＩＢＭ（登録商標）コーポレーションにより提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいている。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、非特許文献１に記載されている。コンピューティング環境は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいているが、１つの実施形態においては、ＥＳＡ／３９０又はＥＳＡ／３９０のサブセットのような、１つ又は複数の他のアーキテクチャ構成もサポートする。
【００２８】
一例として、コンピューティング環境１００は、１つ又は複数の制御ユニット１０８を介して、１つ又は複数の入力／出力（Ｉ／Ｏ）デバイス１０６に結合された中央プロセッサ・コンプレックス（ＣＰＣ）１０２を含む。中央プロセッサ・コンプレックス１０２は、例えば、１つ又は複数の中央プロセッサ（中央処理ユニット（ＣＰＵ）としても知られる）１１０及び入力／出力サブシステム１１１に結合されたプロセッサ・メモリ１０４（主メモリ、主ストレージ、中央ストレージとも呼ばれる）を含み、これらの各々を以下に説明する。
【００２９】
プロセッサ・メモリ１０４は、例えば、１つ又は複数のパーティション１１２（例えば、論理パーティション）と、論理パーティション・ハイパーバイザ１１４及び他のプロセッサ・ファームウェア１１５を含むプロセッサ・ファームウェア１１３とを含む。論理パーティション・ハイパーバイザ１１４の一例は、ニューヨーク州Ａｒｍｏｎｋ所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるＰｒｏｃｅｓｓｏｒ  Ｒｅｓｏｕｒｃｅ／Ｓｙｓｔｅｍ  Ｍａｎａｇｅｒ（ＰＲ／ＳＭ）である。
【００３０】
論理パーティションは、別個のシステムとして機能し、かつ、１つ又は複数のアプリケーション１２０、及び任意に、各々の論理パーティションについて異なり得る、内部の常駐オペレーティング・システム１２２とを有する。１つの実施形態において、オペレーティング・システムは、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるｚ／ＯＳオペレーティング・システム、ｚ／ＶＭオペレーティング・システム、ｚ／Ｌｉｎｕｘオペレーティング・システム、又はＴＰＦオペレーティング・システムである。論理パーティション１１２は、プロセッサ１１０上で実行されているファームウェアが実装する論理パーティション・ハイパーバイザ１１４により管理される。本明細書で用いられるファームウェアは、例えば、プロセッサのマイクロコード及び／又はミリコードを含む。ファームウェアは、例えば、より上位レベルのマシン・コードの実装に用いられる、ハードウェア・レベルの命令及び／又はデータ構造体を含む。１つの実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコードとして又は基礎をなすハードウェアに特有のマイクロコードとして配信される独自のコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する。
【００３１】
中央プロセッサ１１０は、論理パーティションに割り当てられた物理プロセッサ・リソースである。特に、各論理パーティション１１２は、その各々がパーティションに割り当てられた物理プロセッサ１１０の全て又は割り当て分（share）を表す、１つ又は複数の論理プロセッサを有する。特定のパーティション１１２の論理プロセッサは、そのパーティション専用とし、そのパーティションに対して基礎をなすプロセッサ・リソース１１０が予約されるようにしても、又は、別のパーティションと共有し、基礎をなすプロセッサ・リソースが潜在的に別のパーティションに利用可能であるようにしてもよい。一例において、ＣＰＵの１つ又は複数は、本明細書で説明されるＮｏ−ＤＡＴ（ＮＤＡＴ）ファシリティ１３０の態様を含む。
【００３２】
入力／出力サブシステム１１１は、入力／出力デバイス１０６と主ストレージ１０４との間の情報の流れを方向付ける。この入力／出力サブシステム１１１は、中央処理コンプレックスに結合され、中央処理コンプレックスの一部とすることも又はそれとは別個のものとすることもできる。Ｉ／Ｏサブシステムは、中央プロセッサを、入力／出力デバイスと直接通信するタスクから解放し、データ処理が、入力／出力処理と同時に進行することを可能にする。通信を提供するために、Ｉ／Ｏサブシステムは、Ｉ／Ｏ通信アダプタを用いる。例えば、チャネル、Ｉ／Ｏアダプタ、ＰＣＩカード、イーサネット・カード、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）カード等を含む、種々のタイプの通信アダプタがある。本明細書で説明される特定の例において、Ｉ／Ｏ通信アダプタはチャネルであり、従って、Ｉ／Ｏサブシステムは、本明細書ではチャネル・サブシステムと呼ばれる。しかしながら、これは一例にすぎない。他のタイプのＩ／Ｏサブシステムを用いることもできる。
【００３３】
Ｉ／Ｏサブシステムは、入力／出力デバイス１０６との間の情報の流れを管理する際に、１つ又は複数の入力／出力経路を通信リンクとして使用する。この特定の例において、通信アダプタはチャネルであるので、これらの経路は、チャネル経路と呼ばれる。
【００３４】
図２を参照して、Ｎｏ−ＤＡＴファシリティの１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の別の例を説明する。この例では、コンピューティング環境１５０は、仮想マシン・サポートを提供する中央プロセッサ・コンプレックス１５２を含む。ＣＰＵ１５２は、１つ又は複数の制御ユニット１０８を介して、１つ又は複数の入力／出力（Ｉ／Ｏ）デバイス１０６に結合される。中央プロセッサ・コンプレックス１５２は、例えば、１つ又は複数の中央プロセッサ（中央処理ユニット（ＣＰＵ）としても知られる）１１０及び入力／出力サブシステム１１１に結合されたプロセッサ・メモリ１５４（主メモリ、主ストレージ、中央ストレージとも呼ばれる）を含む。
【００３５】
プロセッサ・メモリ１５４は、例えば、１つ又は複数の仮想マシン１６２と、ホスト・ハイパーバイザ１６４及び他のプロセッサ・ファームウェア１６５を含むプロセッサ・ファームウェア１６３とを含む。ホスト・ハイパーバイザ１６４の一例は、ニューヨーク州Ａｒｍｏｎｋ所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるｚ／ＶＭ（登録商標）である。
【００３６】
ＣＰＵの仮想マシン・サポートは、各々がＬｉｎｕｘ（登録商標）のようなゲスト・オペレーティング・システム１７２をホストすることができる、多数の仮想マシン１６２を動作させる能力を提供する。各々の仮想マシン１６２は、別個のシステムとして機能することができる。つまり、各々の仮想マシンは、独立してリセットし、ゲスト・オペレーティング・システムをホストし、異なるプログラム１２０により動作することができる。仮想マシン内で実行されているオペレーティング・システム又はアプリケーション・プログラムは、十分かつ完全なシステムへのアクセスを有するように見えるが、実際には、その一部分しか利用可能ではない。Ｌｉｎｕｘは、米国、他の国々、又はその両方におけるＬｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標である。
【００３７】
この特定の例において、仮想マシンのモデルはＶ＝Ｖモデルであり、仮想マシンの絶対メモリ又は実メモリは、実メモリ又は絶対メモリの代わりにホスト仮想メモリによってバッキングされる。各々の仮想マシンは仮想線形メモリ空間を有する。物理リソースはホスト１６４によって所有され、共用物理リソースは、それぞれの処理要求に応じるために、必要に応じてホストによってゲスト・オペレーティング・システムにディスパッチされる。このＶ＝Ｖ仮想マシン（すなわち、ページング可能ゲスト）モデルでは、典型的には、ゲストが多数であるために、ホストがハードウェア・リソースを単にパーティション化して、構成済みゲストにそのハードウェア・リソースを割り当てることが妨げられるので、ゲスト・オペレーティング・システムと物理的な共用マシン・リソースとの間の対話がホストによって制御されるものと想定している。Ｖ＝Ｖモデルの１つ又は複数の態様は、非特許文献２にさらに説明される。
【００３８】
中央プロセッサ１１０は、仮想マシンに割り当て可能な物理プロセッサ・リソースである。例えば、仮想マシン１６２は１つ又は複数の論理プロセッサを含み、その各々は仮想マシンに動的に割り当て可能な物理プロセッサ・リソース１１０の全て又は割り当て分を表す。仮想マシン１６２は、ホスト１６４によって管理される。
【００３９】
１つの実施形態においては、ホスト（例えば、ｚ／ＶＭ（登録商標））及びプロセッサ（例えば、Ｓｙｓｔｅｍ  ｚ）のハードウェア／ファームウェアは、ゲスト・オペレーティング・システムとホストとの間で制御を転送する必要なしに、Ｖ＝Ｖゲスト・オペレーティング・システム動作を処理するために、制御連携方式で相互に対話する。ページング可能ストレージ・モード・ゲストについて命令を解釈実行するのを可能にするファシリティを介して、ゲスト動作をホストの介入なしに直接実行することができる。このファシリティは、Ｓｔａｒｔ  Ｉｎｔｅｒｐｒｅｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ（解釈実行開始、ＳＩＥ）という命令を提供し、この命令は、ゲスト（仮想マシン）の状態及び制御を保持する状態記述という制御ブロックを指定して、ホストが発行することができる。この命令は、マシンを解釈実行モードにするものであり、そのモードでは、ホストの注意を必要とする条件が発生するまでゲスト命令及び割り込みが直接処理される。このような条件が発生すると、解釈実行が終了し、ホスト割り込みが提示されるか又はＳＩＥ命令が検出された条件の詳細の格納を完了し、この後者のアクションはインターセプトと呼ばれる。解釈実行の一例は、非特許文献３に説明される。
【００４０】
具体的には、１つの実施形態において、解釈実行ファシリティが、仮想マシンの実行のための命令を提供する。Ｓｔａｒｔ  Ｉｎｔｅｒｐｒｅｔａｔｉｖｅ  Ｅｘｅｃｕｔｉｏｎ（解釈実行開始、ＳＩＥ）と呼ばれるこの命令は、ゲスト実行環境を確立するホストにより発行される。ホストは、実マシンを直接管理する制御プログラムであり、ゲストは、任意の仮想マシン又は解釈されるマシンを指す。マシンは、ＳＩＥ命令を発行するホストにより、解釈実行モードにされる。このモードにおいて、マシンは、選択されたアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ、ＥＳＡ／３９０）の機能を提供する。この機能は、例えば、特に特権及び問題プログラム命令の実行、アドレス変換、割り込み処理及びタイミングを含む。マシンは、該マシンが仮想マシンの文脈で実行する機能を解釈すると言われる。
【００４１】
ＳＩＥ命令は、ゲストの現在の状態に関連する情報を含む、状態記述と呼ばれるオペランドを有する。ＳＩＥの実行が終了すると、制御がホストに戻される前に、ゲストＰＳＷを含むゲストの状態を表す情報は、状態記述に保存される。
【００４２】
解釈実行アーキテクチャは、ページング可能ストレージ・モードと呼ばれる絶対ストレージのためのストレージ・モードを提供する。ページング可能ストレージ・モードにおいては、ホスト・レベルにおける動的アドレス変換が、ゲストの主ストレージをマッピングするために用いられる。ホストは、ページング可能ストレージ・モード・ゲストの実ストレージを、ホストＤＡＴを用いることによってホスト実ストレージのどの場所でも、使用可能なフレームに拡散させ、かつ、ゲスト・データを補助ストレージにページアウトする能力を有する。この技術は、ゲスト用絶対ストレージの連続的な範囲の期待される外観を保持しながら、実マシン・リソースを割り当てる際に柔軟性を与える。
【００４３】
仮想マシン環境は、ＤＡＴのアプリケーションを二度呼び出すことができる：最初は、ゲスト・レベルで、ゲストにより管理される変換テーブルによってゲスト仮想アドレスをゲスト実アドレスに変換し、次に、ページング可能ゲストに関して、ホスト・レベルで、対応するホスト仮想アドレスをホスト実アドレスに変換する。
【００４４】
特定の場合には、ホストは、通常、マシンにデリゲートされた（delegated）動作の仲裁を行う必要がある。この目的のため、状態記述は、特別な条件を「トラップする」又はインターセプトするために、ホストによって設定可能な制御を含む。インターセプト制御ビットは、特定のゲスト命令に遭遇したとき、マシンが制御をホスト・シミュレーションに戻すことを要求する。介入制御は、イネーブルにされた状態のＰＳＷへの導入をキャプチャするので、ホストは、ゲストのために保留状態を保持する割り込みを提示することができる。解釈が進行する間、別の実プロセッサ上のホストによって、介入制御を非同期的に設定することができる。マシンは、ストレージから制御を周期的に再フェッチするので、更新された値が認識される。これにより、時期尚早に解釈を妨げることなく、ゲスト割り込みを保留状態にすることができる。
【００４５】
本発明の１つの好ましい実施形態において、仮想環境において、実行制御インジケータが、ＳＩＥ状態記述内に与えられる。一般に、このアーキテクチャ機能についてのインジケータが０である場合、仮想マシン内で機能は利用不能にされ、インジケータが１である場合、関連した機能の解釈実行が試行される。一例では、ページング可能ストレージ・モードのゲストがＥＳＡ／３９０アーキテクチャ・モードにあり、インジケータが１であるとき、ＮＤＡＴファシリティがゲスト内にインストールされ、０であるとき、ＮＤＡＴはインストールされない。ＮＤＡＴがインストールされると、ＤＡＴ機能の可用性を支配すできる他の制御（例えば、仮想環境における実行を制御している他の制御又はファシリティ）に関係なく、ゲストは、ＤＡＴを使用しない。（別の実施形態において、ＮＤＡＴは、特別なインジケータを設けることなく、仮想環境において、グローバル・ファシリティとして与えられる。）
【００４６】
実行の制御に加えて、状態記述におけるモード制御は、ゲストがＥＳＡ／３９０モードで実行されるか又はｚ／Ａｒｃｈｉｔｅｃｔｕｒｅモードで実行されるかを指定し、ホスト・ストレージ内のゲスト仮想マシンのゲスト主ストレージを表すための複数の方法の１つを選択する。本発明の１つの好ましい実施形態によると、第１のアーキテクチャ・モード及び第２のアーキテクチャ・モード（例えば、それぞれｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ及びＥＳＡ／３９０）にあるゲスト間で選択するために、状態制御において制御ビットが与えられる。本発明の別の好ましい実施形態によると、２つの別個の命令が、ホストに、第１及び第２のゲスト仮想マシンを生成する能力を与えることができ、例えば、別個の命令ＳＩＥｚ及びＳＩＥｅを与えて、それぞれ、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅモード及びＥＳＡ／３９０モードでゲスト・マシンを開始することができる。
【００４７】
サーバのタイム・スライスが消費されるまで、又は、ハードウェアが仮想化できない動作、又は制御プログラムがそれに関する制御を回復する動作をサーバが実行する必要が生じるまで、ＳＩＥ命令は、制御プログラムによってディスパッチされた仮想サーバで実行される。その時点で、ＳＩＥ命令は終了し、制御は制御プログラムに戻り、制御プログラムはその命令をシミュレートするか又は仮想サーバを強制待機状態にする。完了すると、制御プログラムは、仮想サーバの実行を再びスケジュールし、サイクルが再び始まる。このようにして、ＣＰＵの全能力及び速度が仮想サーバに利用可能になる。制御プログラムによる支援又は妥当性検査を必要とする特権命令だけがインターセプトされる。これらのＳＩＥインターセプトは、そう呼ばれるように、仮想サーバが実デバイス上で実行できる動作に対して制限を課すために制御プログラムよって使用される。
【００４８】
ＳＩＥに関するさらなる詳細は、非特許文献４に記載されている。
【００４９】
本発明の１つの好ましい実施形態において、ＮＤＡＴファシリティは、いずれの制御も参照することなく、ＥＳＡ／３９０ゲスト内に自動的にインストールされる。従って、ＳＩＥ状態制御ブロックにおけるいずれの制御、又はＳＩＥ若しくは他の仮想マシン生成命令に対する他のオプションへの参照なしに、ＥＳＡ／３９０モードに対応する仮想マシンは、ＤＡＴファシリティにアクセスすることができない。
【００５０】
図３を参照して、Ｎｏ−ＤＡＴファシリティの１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の更に別の例を説明する。この例では、コンピューティング環境２００は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ及びＥＳＡ／３９０、又はＥＳＡ／３９０のサブセットを含む複数のアーキテクチャ・モード用に構成された、パーティション化されていない環境を含む。例えば、コンピューティング環境２００は、例えばＮｏ−ＤＡＴ（ＮＤＡＴ）ファシリティ２０４及び１つ又は複数のキャッシュ２０６を含むプロセッサ（中央処理ユニット−ＣＰＵ）２０２を含む。プロセッサ２０２は、１つ又は複数のキャッシュ２１０を有するメモリ部分２０８、及び入力／出力（Ｉ／Ｏ）サブシステム２１２に通信可能に結合される。Ｉ／Ｏサブシステム２１２は、例えば、データ入力デバイス、センサ、及び／又はディスプレイなどの出力デバイスを含むことができる外部Ｉ／Ｏデバイス２１４に通信可能に結合される。
【００５１】
図４を参照して、Ｎｏ−ＤＡＴファシリティの１つ又は複数の態様を組み込み、用いるためのコンピューティング環境の本発明の別の好ましい実施形態を説明する。この例では、コンピューティング環境３００は、例えば１つ又は複数のバス３０８及び／又は他の接続を介して互いに結合された、例えば、ネイティブ中央処理ユニット（ＣＰＵ）３０２、メモリ３０４、及び１つ又は複数の入力／出力デバイス及び／又はインターフェース３０６を含む。例として、コンピューティング環境３００は、ニューヨーク州Ａｒｍｏｎｋ所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるＰｏｗｅｒＰＣプロセッサ又はＰｏｗｅｒ  Ｓｙｓｔｅｍｓサーバ；カリフォルニア州Ｐａｌｏ  Ａｌｔｏ所在のＨｅｗｌｅｔｔ  Ｐａｃｋａｒｄ  Ｃｏ．により提供されるＩｎｔｅｌ  Ｉｔａｎｉｕｍ  ＩＩプロセッサを伴うＨＰ  Ｓｕｐｅｒｄｏｍｅ；及び／又は、インターナショナル・ビジネス・マシーンズ・コーポレーション、Ｈｅｗｌｅｔｔ  Ｐａｃｋａｒｄ、Ｉｎｔｅｌ、Ｏｒａｃｌｅ、又はその他により提供されるアーキテクチャに基づく他のマシンを含むことができる。
【００５２】
ネイティブ中央処理ユニット３０２は、環境内での処理の際に用いられる１つ又は複数の汎用レジスタ及び／又は１つ又は複数の専用レジスタなどの１つ又は複数のネイティブ・レジスタ３１０と、Ｎｏ−ＤＡＴファシリティ３１１とを含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【００５３】
さらに、ネイティブ中央処理ユニット３０２は、メモリ３０４内に格納された命令及びコードを実行する。１つの特定の例において、中央処理ユニットは、メモリ３０４内に格納されたエミュレータ・コード３１２を実行する。このコードにより、１つのアーキテクチャにおいて構成されたコンピューティング環境が、１つ又は複数の他のアーキテクチャをエミュレートすることが可能になる。例えば、エミュレータ・コード３１２により、ＰｏｗｅｒＰＣプロセッサ、ＰｏｗｅｒＳｙｔｅｍｓサーバ、ＨＰ  Ｓｕｐｅｒｄｏｍｅサーバ又は他のものなどの、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ以外のアーキテクチャに基づくマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（及び／又はＥＳＡ／３９０）をエミュレートし、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅに基づいて開発されたソフトウェア及び命令を実行することが可能になる。
【００５４】
図５を参照して、エミュレータ・コード３１２に関する更なる詳細が、説明される。ゲスト命令３５０が、ネイティブＣＰＵ３０２のもの以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令（例えば、マシン命令と相関する）を含む。例えば、ゲスト命令３５０は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサ２０２上で実行されるように設計されるが、代わりに、例えばＩｎｔｅｌ  Ｉｔａｎｉｕｍ  ＩＩプロセッサとすることができるネイティブＣＰＵ３０２上でエミュレートされることもある。一例において、エミュレータ・コード３１２は、メモリ３０４から１つ又は複数のゲスト命令３５０を取得し、取得された命令に対してローカル・バッファリングを任意に提供するための命令フェッチ・ルーチン３５２を含む。エミュレータ・コード３１２また、取得されたゲスト命令のタイプを判断し、ゲスト命令を１つ又は複数の対応するネイティブ命令３５６に変換するための命令変換ルーチン３５４も含む。この変換は、例えば、ゲスト命令により実施される機能を識別することと、その機能を実施するためのネイティブ命令を選択することとを含む。
【００５５】
さらに、エミュレータ・コード３１２は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン３６０を含む。エミュレーション制御ルーチン３６０は、ネイティブＣＰＵ３０２に、１つ又は複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、こうした実行の最後に、次のゲスト命令又はゲスト命令のグループの取得をエミュレートするように、制御を命令フェッチ・ルーチンに戻させることができる。ネイティブ命令３５６の実行は、データをメモリ３０４からレジスタにロードすること、データをレジスタから再びメモリに格納すること、又は変換ルーチンによって定められるような何らかのタイプの算術演算又は論理演算を実施することを含むことができる。
【００５６】
各ルーチンは、例えば、メモリ内に格納され、ネイティブ中央処理ユニット３０２によって実行される、ソフトウェアで実装される。他の例において、１つ又は複数のルーチン又は演算は、ファームウェア、ハードウェア、ソフトウェア、又はそれらの何らかの組み合わせで実装される。エミュレートされるプロセッサのレジスタは、ネイティブＣＰＵのレジスタ３１０又はメモリ３０４内の位置を使用して、エミュレートすることができる。実施形態において、ゲスト命令３５０、ネイティブ命令３５６、及びエミュレータ・コード３１２は、同一のメモリ内に存在してもよく、又は、異なるメモリ・デバイスの間に分配されてもよい。
【００５７】
図４及び図５のエミュレーション・システムの本発明の少なくとも１つの好ましい実施形態によると、ＮＤＡＴファシリティが、第１のアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ）用ではなく第２のアーキテクチャ（例えば、ＥＳＡ／３９０）用にインストールされたシステムのエミュレータが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅモード用の、ＤＡＴ変換を実施するためのエミュレーション・ルーチンを含み、ＥＳＡ／３９０アーキテクチャ・モード用の、ＤＡＴ変換を実施するためのエミュレーション・ルーチンを含まない。代わりに、第２のアーキテクチャ・モード用のエミュレータレータ・コード３１２は、第２のアーキテクチャ・モードで実行されているエミュレートされたプログラムがＤＡＴ変換をイネーブルにしようと試みているかどうかを判断し、もし試みている場合には、１つ又は複数のエラー表示を直接生成するためのテストを含む。本発明の別の好ましい実施形態において、第１及び第２のアーキテクチャ・モードを実装するために共通コード・ルーチンが用いられるとき、ＤＡＴ関連機能がプログラムにより呼び出されるとき、現在のアーキテクチャ・モードを判断するために、第１のテストが実行される。現在のアーキテクチャ・モードが第１のアーキテクチャ・モードに対応する場合、制御は、第１のアーキテクチャにおいてＤＡＴを実装するコードに移行する。現在のモードが第２のアーキテクチャ・モードに対応するとき、制御は、エラー・ルーチン及びＤＡＴ変換のイネーブル化に対応するコードに移るか、又はＤＡＴ変換の実行が呼び出される。
【００５８】
本発明の少なくとも１つの好ましい実施形態によると、ＮＤＡＴファシリティがインストールされると、ＤＡＴと併せて、多数の命令（例えば、ＬＲＡ）が使用され、これらの命令は、第２のアーキテクチャ・モードで随意的にディスエーブルにされる。本発明の少なくとも１つの好ましい実施形態によると、エミュレータ・コード３１２は、第２のアーキテクチャ・モードでＤＡＴと併せて使用されるディスエーブルにされた命令に対応する命令をエミュレートするためのコードを含まない。本発明の１つのこうした好ましい実施形態によると、エミュレータ・コード３１２は、第１のアーキテクチャ・モードでＤＡＴと併せて使用される命令に対応する命令をエミュレートするためのコードを含む。本発明の別の好ましい実施形態において、第１及び第２のアーキテクチャ・モードを実装するために共通コード・ルーチンが使用されるとき、ＤＡＴ関連機能と併せて使用される命令がプログラムにより呼び出されたとき、現在のアーキテクチャ・モードを判断するために、第１のテストが実行される。現在のモードが第１のアーキテクチャ・モードに対応する場合、制御は、第１のアーキテクチャにおいてそうした命令を実施するコードに移行する。現在のモードが第２のアーキテクチャ・モードに対応するとき、制御は、エラー・ルーチン及びＤＡＴ変換と併せて使用される命令に対応するコードに移行するか、又はＤＡＴ変換の実行が呼び出される。
【００５９】
上述のコンピューティング環境は、使用できるコンピューティング環境の単なる例に過ぎない。これらに限定されるものではないが、他のパーティション化されていない環境、他のパーティション化された環境、及び／又は他のエミュレートされた環境を含む他の環境を用いてもよく、実施形態は、いずれか１つの環境に限定されるものではない。さらに、特定のアーキテクチャの例が本明細書に説明され、特定のアーキテクチャの違い及び異なるアーキテクチャ機能が説明されるが、これらは単なる例に過ぎない。他のアーキテクチャを用いてもよく、他のアーキテクチャの違いが存在することがあり、及び／又は他のアーキテクチャ機能が、アーキテクチャの１つ又は複数によりサポートされることも又はされないこともある。
【００６０】
本発明の１つの好ましい実施形態において、各々のコンピューティング環境は、これに限定されるものではないが、動的アドレス変換を含む、第１セットのアーキテクチャ機能を提供する第１のアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ）及び第２セットのアーキテクチャ機能を提供する第２のアーキテクチャ（例えば、ＥＳＡ／３９０）のような複数のアーキテクチャをサポートするように構成される。第２セットのアーキテクチャ機能は、第１セットのアーキテクチャ機能内に含まれる、ＤＡＴのような機能の１つ又は複数が、第２セットのアーキテクチャ機能にないという点で、機能の縮小セットである。
【００６１】
動的アドレス変換（ＤＡＴ）は、任意の時点でプログラムの実行に割り込み、プログラム及びそのデータを、直接アクセス・ストレージ・デバイスなどの補助ストレージに記録しておき、後で、プログラム及びそのデータを主ストレージ内の別の位置に戻して、実行を再開できる能力を提供する。主ストレージと補助ストレージとの間のプログラム及びそのデータの転送は断片的に行われ、実行が必要になった時点で、ＣＰＵがこれらの情報にアクセスしようと試みるのに応答して、情報が主ストレージに戻される。これらの機能は、プログラム及びそのデータの変更又は検査を必要とせずに実行でき、再配置されたプログラムについては明示的なプログラミング上の規則は何も適用されず、時間的遅延が生じる以外には、プログラムの実行が妨げられることはない。
【００６２】
オペレーティング・システムによる適切なサポートによって、動的アドレス変換ファシリティを用いて、ユーザにシステムを提供することができ、このシステムでは、ストレージが、構成内で利用可能にされている主ストレージよりも大きく見える。この見かけの主ストレージを仮想ストレージと呼び、仮想ストレージ内の位置を指定するために用いられるアドレスを仮想アドレスと呼ぶことができる。ユーザの仮想ストレージは、構成内で利用可能な主ストレージのサイズをはるかに上回ることができ、通常、補助ストレージ内に維持される。仮想ストレージは、ページと呼ばれるアドレスのブロックから成るものと見なされる。仮想ストレージの中の最近参照されたページのみが、物理的な主ストレージのブロックを占有するものとして割り当てられる。ユーザが、主ストレージ内には存在しない仮想ストレージのページを参照すると、そのページは、主ストレージに取り込まれて、必要度が低いと認められるページと置き換わる。ストレージのページのスワップは、ユーザに認識されない形でオペレーティング・システムが行うことができる。
【００６３】
仮想ストレージと関連した仮想アドレスのシーケンスは、アドレス空間（address space）と呼ばれる。オペレーティング・システムによる適切なサポートにより、動的アドレス変換ファシリティを用いて、多数のアドレス空間を与えることができる。これらのアドレス空間は、ユーザ間の独立性の程度を高めることができる。こうしたサポートにより、各々のユーザごとに完全に異なるアドレス空間を含むことができ、従って、完全な独立性をもたらすことができ、又は各アドレス空間の一部分を単一の共通ストレージ領域にマッピングすることにより、共有領域を与えることができる。準特権（semi-privileged）プログラムが１つより多いこのようなアドレス空間にアクセスするのを可能にする命令も与えられる。動的アドレス変換では、制御レジスタ内の変換パラメータを変換することなく、複数の異なるアドレス空間から、例えば仮想アドレスを変換することができる。これらのアドレス空間は、一次アドレス空間、二次アドレス空間、及びＡＲ指定アドレス空間と呼ばれる。特権プログラムでは、ホーム・アドレス空間へのアクセスが可能になる。
【００６４】
主ストレージのブロックを外部媒体からの新しい情報に置き換えるプロセスでは、どのブロックを置き換えるか、及びその置き換えられたブロックを補助ストレージに記録して保存する必要があるかどうかを決定する。この決定プロセスを助けるために、参照ビット及び変更ビットが、ストレージ・キーと関連付けられる。
【００６５】
動的アドレス変換は、ＣＰＵにより生成される命令及びデータ・アドレスに対して指定することができる。
【００６６】
アドレス計算は、２４ビット、３１ビット、又は６４ビットのアドレッシング・モードで実行することができる。アドレス計算が２４ビット又は３１ビットのアドレッシング・モードで行われる場合、それぞれ左側に４０個又は３３個の０を付加して、６４ビット・アドレスを形成する。従って、結果として得られる論理アドレスは、６４ビットの長さになる。動的アドレス変換により作成される実アドレス又は絶対アドレス、及びその後でプリフィックス付加により作成される絶対アドレスは、１つの実施形態においては、６４ビットの長さになる。
【００６７】
動的アドレス変換は、ストレージ参照の際に、仮想アドレスをそれに対応する実アドレス又は絶対アドレスに変換するプロセスである。仮想アドレスは、一次仮想アドレス、二次仮想アドレス、ＡＲ（アクセス・レジスタ）指定仮想アドレス、又はホーム仮想アドレスとすることができる。これらのアドレスは、それぞれ、一次、二次、ＡＲ指定、又はホームのアドレス空間制御要素を用いて変換される。適切なアドレス空間制御要素が選択された後、変換プロセスは、４つのタイプの仮想アドレスの全てについて同じである。アドレス空間制御要素は、２Ｇバイト・アドレス空間を指定するセグメント・テーブル指定、４Ｔバイト、８Ｐバイト、又は１６Ｅバイトの空間を指定する領域テーブル指定、又は１６バイトの空間を指定する実空間指定とすることができる。（Ｋ、Ｍ、Ｇ、Ｔ，Ｐ及びＥの文字は、それぞれ、キロ（２１０）、メガ（２２０）、ギガ（２３０）、テラ（２４０）、ペタ（２５０）及びエクサ（２６０）を表す。）セグメント・テーブル指定又は領域テーブル指定により、オペレーティング・システムにより実ストレージ又は絶対ストレージ内に確立されたテーブルを使用して変換が行われる。実空間指定の場合は、ストレージ内のテーブルを使用せずに、単に、仮想アドレスが実アドレスとして扱われる。
【００６８】
セグメント・テーブル指定又は領域テーブル指定を使用したときの変換プロセスにおいて、３つのタイプの情報単位、すなわち、領域、セグメント及びページが認識される。領域は、例えば２Ｇバイトにわたり、２Ｇバイト境界で始まる、順次仮想アドレスのブロックである。セグメントは、例えば１Ｍバイトにわたり、１Ｍバイト境界で始まる、順次仮想アドレスのブロックである。ページは、例えば４Ｋバイトにわたり、４Ｋバイト境界で始まる、順次仮想アドレスのブロックである。
【００６９】
従って、仮想アドレスは、４つの基本フィールドに分けられる。ビット０−３２は、領域インデックス（ＲＸ）と呼ばれ、ビット３３−４３は、セグメント・インデックス（ＳＸ）と呼ばれ、ビット４４−５１は、ページ・インデックス（ＰＸ）と呼ばれ、ビット５２−６３は、バイト・インデックス（ＢＸ）と呼ばれる。
【００７０】
仮想アドレス空間は、そのアドレス空間制御要素により決定されるように、１つの領域を含む２Ｇバイトの空間、又は、最大８Ｇ個の領域からなる１６Ｅバイトの空間とすることができる。２Ｇバイトのアドレス空間に適用される、仮想アドレスのＲＸ部分は、全て０でなければならない。さもなければ、一例では、例外が認識される。
【００７１】
仮想アドレスのＲＸ部分は、それ自体が３つのフィールドに分けられる。ビット０−１０は領域第１インデックス（ＲＦＸ）と呼ばれ、ビット１１−２１は、領域第２インデックス（ＲＳＸ）と呼ばれ、ビット２２−３２は領域第３インデックス（ＲＴＸ）と呼ばれる。
【００７２】
図６を参照して、仮想アドレスを実アドレスに変換する一例を説明する。この例において、アドレス空間制御要素４００は、テーブル起点４０２、及び変換のための開始レベルの表示（すなわち、階層アドレス変換内のどのレベルで始まるかの表示）である指定タイプ（ＤＴ）制御４０４を含む。テーブル起点４０２及びＤＴ４０４を用いて、特定のテーブルの起点が配置される。次に、テーブルに基づいて、仮想アドレスのビットを用いて特定のテーブルにインデックス付けし、次のレベルのテーブルの起点を得る。例えば、領域第１テーブル４０６が選択される場合、仮想アドレスのビット０−１０（ＲＦＸ）４０８を用いて領域第１テーブルにインデックス付けし、領域第２テーブル４１０の起点を得る。次に、仮想アドレスのビット１１−２１（ＲＳＸ）４１２を用いて領域第２テーブル４１０にインデックス付けし、領域第３テーブル４１４の起点を得る。同様に、仮想アドレスのビット２２−３２（ＲＴＸ）４１６を用いて領域第３テーブル４１４にインデックス付けし、セグメント・テーブル４１８の起点を得る。次に、仮想アドレスのビット３３−４３（ＳＸ）４２０を用いてセグメント・テーブル４１８にインデックス付けし、ページ・テーブル４２２の起点を得、仮想アドレスのビット４４−５１（ＰＸ）を用いてページ・テーブル４２２にインデックス付けし、ページ・フレーム実アドレス４２６を有するページ・テーブル・エントリ（ＰＴＥ）４２５を得る。次に、ページ・フレーム実アドレスをオフセット４２８（ビット５２−６３）と結合（例えば、連結）して、実アドレスを得る。
【００７３】
本明細書に述べられるように、１つの態様において、動的アドレス変換ファシリティは、選択されたアーキテクチャにより与えられる利用可能な機能のセットの中に含まれていない。特に、一例において、ＤＡＴがサポートされていないことを示すＮｏ−ＤＡＴファシリティが与えられる。Ｎｏ−ＤＡＴファシリティは、該ファシリティをインストールし、任意に、該ファシリティがインストールされていることを示す、ファシリティ・ビット、例えばビット１４０などのインジケータを設定することにより、コンピューティング環境において提供することができる。一例において、ビットが１に設定された場合、ファシリティはインストールされている。１つの実施形態において、ファシリティはファシリティ・ビットを介してイネーブルにされ、他の実施形態においては、ファシリティは他の機構によってイネーブルにすることができる。例えば、仮想ゲストを有する環境においては、ファシリティは、デフォルトでイネーブルにすることができる。
【００７４】
さらに、ＤＡＴファシリティを含まない選択されたアーキテクチャのサブセット又は縮小セットを提供することによって、Ｎｏ−ＤＡＴファシリティを提供することができる。この環境において、ＤＡＴファシリティがサポートされていないという明示的な表示がない場合があり、これは単にアーキテクチャに存在しないだけである。１つの実施形態において、Ｎｏ−ＤＡＴファシリティ（ＮＤＡＴ、ＥＳＡ／３９０−Ｎｏ−ＤＡＴ、又は３９０ＮＤＡＴとも呼ばれる）は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅを実装するモデルにおいて利用可能であり得る。ファシリティは、動的アドレス変換（ＤＡＴ）がオンの状態で構成がＥＳＡ／３９０アーキテクチャ・モードにある可能性を除去する。つまり、ＮＤＡＴファシリティが与えられる場合、ＥＳＡ／３９０アーキテクチャ・モードにある構成では、ＤＡＴをオンにすることができない。１つの実施形態において、ＤＡＴをオンにする試みにより、Ｎｏ−ＤＡＴ例外プログラム割り込みが引き起こされる。他の実施形態においては、他のプログラム割り込みコード、又はエラーを示す他の方法が与えられる。さらに別の実施形態においては、エラーは示されないが、ＤＡＴはディスエーブルにされたままである。
【００７５】
１つの実施形態において、ファシリティ用に構成されたプロセッサにおけるＮｏ−ＤＡＴファシリティをイネーブルにするのはオプションであるが、他の実施形態においては、これは、コンピューティング環境の全てのプロセッサ（又は、さらに別の実施形態においては、選択されたプロセッサ）上で自動的にインストールされ、イネーブルにされる。１つの特定の実施形態において、Ｎｏ−ＤＡＴファシリティは、ゲスト−２構成（ゲストが別のゲストによって初期化される第２レベルのゲスト）においてインストールされる。こうした構成において、ゲスト−２がＥＳＡ／３９０で初期化される場合、ＤＡＴを使用することはきないが、ゲスト−１及びホスト・プロセッサは、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅで初期化することができ、従って、ＤＡＴを使用する。さらに、１つの実施形態において、ゲスト−１又はホストは、ＥＳＡ／３９０で開始することができ、Ｎｏ−ＤＡＴファシリティはイネーブルにされない。従って、ゲスト−１又はホストはＤＡＴを使用できるが、Ｎｏ−ＤＡＴはゲスト−２のためにインストールされ、従って、ＥＳＡ／３９０にあるとき、ゲスト−２はＤＡＴを使用することができない。
【００７６】
複数のアーキテクチャ・モードをサポートするコンピューティング環境においてＮｏ−ＤＡＴファシリティがインストールされている場合、環境がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モードのような第１のアーキテクチャ・モードにあるときは、ＤＡＴを実行できるが、環境がＥＳＡ／３９０アーキテクチャ・モードのような第２のアーキテクチャ・モードにあるときは、ＤＡＴを実行することができない。一例において、ＥＳＡ／３９０アーキテクチャ・モードにあり、ＮＤＡＴが与えられるときにＤＡＴを実行しようとする試みは、例えば、Ｎｏ−ＤＡＴ例外プログラム割り込みをもたらす。他の実施形態においては、エラーを示すために、別のプログラム割り込みが使用される。さらに別の実施形態において、エラーは示されず、実行は進行するが、ＤＡＴはイネーブルにされない。
【００７７】
本明細書に述べられるように、動的アドレス変換機能が構成内に与えられていず、ＤＡＴをオンにする又はＤＡＴを実行する試みがなされるとき、Ｎｏ−ＤＡＴ例外が認識される。
【００７８】
例として、例外は、次の場合に認識される。
１．ＬＯＡＤ  ＰＳＷ命令の実行により、ＤＡＴをオンにする試みがなされる。ＰＳＷを変更する前、ロードされる値はチェックされない。
２．ＬＯＡＤ  ＲＥＡＬ  ＡＤＤＲＥＳＳ命令が実行される。実行は抑止され、命令長コードは２に設定される。
３．ＳＥＴ  ＳＹＳＴＥＭ  ＭＡＳＫ命令の実行により、ＤＡＴをオンにする試みがなされる。現ＰＳＷを変更する前、設定される値はチェックされない。
４．ＳＴＯＲＥ  ＴＨＥＮ  ＯＲ  ＳＹＳＴＥＭ  ＭＡＳＫ命令の実行により、ＤＡＴをオンにする試みがなされる。現ＰＳＷのシステム・マスクを変更する前、システム・マスクに論理和演算される値はチェックされない。
５．ケース１と同様に、割り込みが発生し、割り込み−新ＰＳＷは、ビット位置５を１として有する。
【００７９】
上述のケースの各々をさらに以下に説明する。図７を参照して、Ｌｏａｄ  ＰＳＷ命令に関するさらなる詳細を説明する。１つの実施形態において、Ｌｏａｄ  ＰＳＷ命令５００が、ＰＳＷロード操作を示すためのオペコード（ｏｐｃｏｄｅ）を含むオペコード・フィールド５０２、ベース・フィールド（Ｂ２）５０４、及び変位フィールド（Ｄ２）５０６を含む。Ｂ２フィールドにより指定される汎用レジスタの内容をＤ２フィールドの内容に付加して、ストレージ内の第２のオペランドのアドレスを形成する（第２オペランド・アドレスと呼ばれる）。
【００８０】
Ｌｏａｄ  ＰＳＷ命令の操作において、現ＰＳＷは、第２オペランド・アドレスによって指定される位置におけるダブルワードの内容から形成された１６バイトのＰＳＷに置き換えられる。
【００８１】
ダブルワードのビット１２は１となり、そうでない場合には、モデルに応じて、指定例外が認識され得る。構成ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅアーキテクチャ・モード（ＣＺＡＭ）ファシリティがインストールされている場合、ダブルワードのビット１２が１ではない場合、指定例外が認識される。１つの実施形態において、ＣＺＡＭファシリティは、コンピューティング環境（例えば、プロセッサ、ＬＰＡＲ、ゲスト）を再構成するので、マルチ・アーキテクチャによりサポートされる環境における、ＥＳＡ／３９０のようなアーキテクチャの１つ又は複数の態様はもはやサポートされない。ＣＺＡＭのインストールは、パワーオン、リセット等のようなコンピューティング環境の特定のプロセスに影響を与える。例えば、ＣＺＡＭがインストールされ、イネーブルにされている場合、パワーオン又はリセット・シーケンスは、例えばＥＳＡ／３９０ではなくｚ／Ａｒｃｈｉｔｅｃｔｕｒｅを開始する。ＣＺＡＭの態様は、同時出願された、同一出願人による、Ｇａｉｎｅｙ他の「Ａｒｃｈｉｔｅｃｔｕｒａｌ  Ｍｏｄｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ」という名称の出願（ＩＢＭ整理番号第ＰＯＵ９２０１４００２１ＵＳ１）に記載されている。
【００８２】
ダブルワードのビット０−３２は、ビット１２が反転されることを除いて、現ＰＳＷの位置０−３２に入れられる。ダブルワードのビット３３−６３は、現ＰＳＷの位置９７−１２７に入れられる。現ＰＳＷのビット３３−９６は、０に設定される。
【００８３】
シリアル化及びチェックポイント同期機能は、オペランドのフェッチ前又は後、及び再び操作の完了後に実行される。
【００８４】
オペランドは、ダブルワード境界上で指定され、そうでない場合には、指定例外が認識される。モデルによって、オペランドのビット１２が０である場合、指定例外が認識され得る。
【００８５】
命令によってロードされるＰＳＷフィールドは、ビット１２のチェックを除き、それらがロードされる前に、妥当性に関してチェックされない。しかしながら、ロードの直後、指定例外が認識され、新しくロードされたＰＳＷに関して以下のいずれかが真であるとき、プログラム割り込みが発生する。
＊ビット０、２−４、１２、又は２４−３０のいずれかが１である。
＊ビット３１及び３２の両方とも０であり、ビット９７−１０３は全て０ではない。
＊ビット３１及び３２は、それぞれ、１及び０である。
これらの場合、操作は完了し、結果として得られる命令長コードは０である。
【００８６】
全てのアドレッシング及び保護例外において、操作は抑止される。
結果の条件コード：コードは、ロードされた新しいＰＳＷにおいて指定されるように設定される。
プログラム例外：
＊アクセス（フェッチ、オペランド２）
＊特権操作
＊指定
プログラミング上の注意：第２のオペランドは、ＥＳＡ／３９０  ＰＳＷの形式を有するべきである。オペランドのビット１２が０である場合、ＰＳＷロードの実行中又は実行後、指定例外が認識される。
【００８７】
ＰＳＷに関する更なる詳細が、非特許文献５に記載される。
【００８８】
図８を参照して、プログラム状況ワード（ＰＳＷ）の形式の１つの実施形態を説明する。図８を参照すると、この例では、プログラム状況ワードの形式は、以下に示されるようにビット３１がＥＡとして示される点を除いて、ＥＳＡ／３９０の形式である。
【００８９】
１つの実施形態において、プログラム状況ワード６００は、一例として、以下のフィールドを含む。
【００９０】
マスク毎（Per Mask)（Ｒ）６０２：ビット１は、ＣＰＵがプログラム・イベント記録（ＰＥＲ）と関連した割り込みに関してイネーブルにされるかどうかを制御する。ビットが０である場合、ＰＥＲイベントが割り込みを引き起こすことはない。ビットが１である場合、割り込みは許容され、制御レジスタ９内のＰＥＲイベント・マスク・ビットに左右される。
【００９１】
ＤＡＴモード（Ｔ）６０４：ビット５は、ストレージにアクセスするのに用いられる論理及び命令アドレスの暗黙的な動的アドレス変換（ＤＡＴ）が行われるかどうかを制御する。ビットが０である場合、ＤＡＴはオフであり、論理及び命令アドレスは実アドレスとして扱われる。ビットが１である場合、ＤＡＴはオンであり、動的アドレス変換機構が呼び出される。
【００９２】
Ｉ／Ｏマスク（ＩＯ）６０６：ビット６は、ＣＰＵが、Ｉ／Ｏ割り込みに関してイネーブルにされるかどうかを制御する。ビットが０である場合、Ｉ／Ｏ割り込みが発生することはない。ビットが１である場合、Ｉ／Ｏ割り込みは、制御レジスタ６内のＩ／Ｏ割り込みサブクラス・マスク・ビットに左右される。Ｉ／Ｏ割り込みサブクラス・マスク・ビットが０である場合、そのＩ／Ｏ割り込みサブクラスに対するＩ／Ｏ割り込みが発生することはなく、Ｉ／Ｏ割り込みサブクラス・マスク・ビットが１である場合、そのＩ／Ｏ割り込みサブクラスに対するＩ／Ｏ割り込みが発生することがある。
【００９３】
外部マスク（ＥＸ）６０８：ビット７は、ＣＰＵが、外部クラス内に含まれる条件による割り込みに関してイネーブルにされるかどうかを制御する。ビットが０である場合、外部割り込みが発生することはない。ビットが１である場合、外部割り込みは、制御レジスタ０内の対応する外部サブクラス・マスク・ビットに左右される。サブクラス・マスク・ビットが０である場合、サブクラスと関連した条件が割り込みを発生させることはない。サブクラス・マスク・ビットが１である場合、そのサブクラス内の割り込みが発生し得る。
【００９４】
ＰＳＷキー（キー）６１０：ビット９−１１は、ＣＰＵによるストレージ参照のためのアクセス・キーを形成する。参照がキー制御保護を受ける場合、情報が格納されるとき又はフェッチから保護される記憶位置から情報がフェッチされるとき、ＰＳＷキーがストレージ・キーと適合される。しかしながら、Ｍｏｖｅ  ｔｏ  Ｐｒｉｍａｒｙ、Ｍｏｖｅ  ｔｏ  Ｓｅｃｏｎｄａｒｙ、Ｍｏｖｅ  ｗｉｔｈ  Ｋｅｙ、Ｍｏｖｅ  ｗｉｔｈ  Ｓｏｕｒｃｅ  Ｋｅｙ、及びＭｏｖｅ  ｗｉｔｈ  Ｄｅｓｔｉｎａｔｉｏｎ  Ｋｅｙの各々のオペランドの１つ、並びに、Ｍｏｖｅ  ｗｉｔｈ  Ｏｐｔｉｏｎａｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎｓのいずれか又は両方のオペランドでは、オペランドとして指定されるアクセス・キーが、ＰＳＷキーの代わりに使用される。
【００９５】
ビット１２  ６１２：このビットは、現在のアーキテクチャ・モードを示す。このビットは、ＥＳＡ／３９０  ＰＳＷ形式の場合、１に設定される。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  ＰＳＷ形式の場合、このビットは、０になるように定められる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅモードにあるとき、真のｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  ＰＳＷ（命令アドレスをビット６４−１２７に有することを含む、本明細書で説明される形式とは異なる形式を有する）をロードするために、ｌｏａｄ  ＰＳＷ  ｅｘｔｅｎｄｅｄ（ロードＰＳＷ拡張）（ＬＰＳＷＥ）命令が定められる。しかしながら、ＥＳＡ／３９０ロードＰＳＷ（ＬＰＳＷ）は依然としてサポートされ、これを用いてＥＳＡ／３９０形式のＰＳＷをロードすることができる。ＬＰＳＷが実行され、コンピューティング環境がｚ／Ａｒｃｈｉｔｅｃｔｕｒｅモードにあるとき、プロセッサは、ＥＳＡ／３９０形式のＰＳＷを、ビット１２を反転させることを含む、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ形式に拡張する。これは、オペレーティング・システムが、ＥＳＡ／３９０形式のＰＳＷを生成するために実行するｚ／ＡｒｃｈｉｔｅｃｔｕｒｅのＰＳＷ形式を折りたたむ（collapse）のと逆である。つまり、ＥＳＡ／３９０及びｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの両方をサポートするコンピューティング環境において、ＰＳＷのコピーはストレージ内に入れられ、オペレーティング・システムは、完全なｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  ＰＳＷを、ＥＳＡ／３９０  ＰＳＷのサイズ及び形式に折りたたむ。従って、ＰＳＷ形式の依存関係を用いる他のソフトウェアは、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  ＰＳＷに気付くことができない。
【００９６】
マシン・チェック・マスク（Ｍ）６１４：ビット１３は、ＣＰＵが、マシン・チェック条件による割り込みに対してイネーブルにされるかどうかを制御する。ビットが０である場合、マシン・チェック割り込みが発生することはない。ビットが１である場合、システム損傷及び命令処理損傷に起因するマシン・チェック割り込みが許容されるが、他のマシン・チェック・サブクラス条件に起因する割り込みは、制御レジスタ１４内のサブクラス・マスク・ビットに左右される。
【００９７】
待機状態（Ｗ）６１６：ビット１４が１である場合、ＣＰＵは待機中である、つまり、命令はＣＰＵにより処理されず、割り込みが発生し得る。ビット１４が０である場合、命令のフェッチ及び実行は、通常の方法で行われる。ビットが１である場合、待機インジケータは１である。
【００９８】
問題状態（Ｐ）６１８：ビット１５が１である場合、ＣＰＵは問題状態（problem state）にある。ビット１５が０である場合、ＣＰＵは、スーパーバイザ状態（supervisor state）にある。スーパーバイザ状態においては、全ての命令が有効である。問題状態においては、意味のある情報を問題プログラムに提供し、かつ、システムの完全性に影響を与えることのない命令のみが有効であり、そうした命令は、非特権（unprivileged）命令と呼ばれる。問題状態において有効ではない命令は、特権（priviledged）命令と呼ばれる。問題状態において、ＣＰＵが特権命令を実行しようと試みるとき、特権操作例外が認識される。準特権命令と呼ばれる命令の別のグループは、特定の権限試験が満たされる場合にのみ、問題状態においてＣＰＵにより実行され、そうでない場合には、違反した特定の要件に応じて、特権操作例外又は何らかの他のプログラム例外が認識される。
【００９９】
アドレス空間制御（ＡＳ）６２０：ビット１６及び１７は、ＰＳＷビット５と共に、変換モードを制御する。
【０１００】
条件コード（ＣＣ）６２２：ビット１８及び１９は、条件コードの２つのビットである。条件コードは、特定の命令の実行において得られる結果に応じて、０、１、２、又は３に設定される。大部分の算術及び論理演算、並びに一部の他の演算が、条件コードを設定する。命令ＢＲＡＮＣＨ  ＯＮ  ＣＯＮＤＩＴＩＯＮは、分岐のための基準として、条件コード値の任意の選択を指定することができる。
【０１０１】
プログラム・マスク６２４：ビット２０−２３は、４つのプログラム・マスク・ビットである。各ビットは、次のように、プログラム例外と関連付けられる。
【表１】
0006407299.tif 000002
【０１０２】
マスク・ビットが１のとき、例外は割り込みをもたらす。マスク・ビットが０のとき、割り込みは発生しない。ＨＦＰ・有効数字・マスク・ビットのＨＦＰ・指数・アンダー・フロー・マスク・ビットの設定もまた、対応する例外が発生するときに演算が完了する方式を決定する。
【０１０３】
拡張アドレッシング・モード（ＥＡ）６２６：ビット３１は、ビット３２、即ち基本アドレッシング・モード・ビットと併せて、有効アドレス（effective address）のサイズ及び有効アドレス生成を制御する。ビット３１が０の場合、アドレッシング・モードは、ビット３２により制御される。ビット３１及び３２が両方とも１の場合、６４ビット・アドレッシングが指定される。
【０１０４】
基本アドレッシング・モード（ＢＡ）６２８：ビット３１及び３２は、有効アドレスのサイズ及び有効アドレスの生成を制御する。ビット３１及び３２の両方が０の場合、２４ビット・アドレッシングが指定される。ビット３１が０であり、ビット３２が１である場合、３１ビット・アドレッシングが指定される。ビット３１及び３２の両方とも１である場合、６４ビット・アドレッシングが指定される。ビット３１  １及びビット３２  ０は、指定例外を認識させる無効な組み合わせである。アドレッシング・モードは、ＤＡＴ、ＡＳＮ、ディスパッチ可能ユニット制御、リンケージ、エントリ、及びトレース・テーブル又はアクセス・リスト又はリンケージ・スタックにアクセスするのに用いられる、ＰＥＲアドレス又はアドレスのサイズを制御しない。ＰＳＷのビット３１及び３２によるアドレッシング・モードの制御は、次のように要約される。
【表２】
0006407299.tif 000003
命令アドレス６３０：ＰＳＷのビット３３−６３は、命令アドレスである。アドレスは、ＣＰＵが待機状態（ＰＳＷのビット１４が１）でない限り、実行される次の命令の左端バイトの位置を指定する。
【０１０５】
上述のように、Ｌｏａｄ  ＰＳＷ命令に加えて、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令により、Ｎｏ−ＤＡＴ例外が認識され得る。
【０１０６】
図９−図１１において、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令の例示的な形式が示される。図９に示されるように、１つの実施形態において、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令７００は、例えば、実アドレス・ロード操作を示すオペコードを有するオペコード・フィールド７０２、第１のレジスタ・フィールド（Ｒ１）７０４、インデックス・フィールド（Ｘ２）７０６、ベース・フィールド（Ｂ２）７０８、及び変位フィールド（Ｄ２）７１０を含む。
【０１０７】
別の実施形態において、図１０を参照すると、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令７２０が、例えば、実アドレス・ロード操作を示すオペコードを有するオペコード・フィールド７２２ａ、７２２ｂ、第１のレジスタ・フィールド（Ｒ１）７２４、インデックス・フィールド（Ｘ２）７２６、ベース・フィールド（Ｂ２）７２８、及び複数の変位フィールド（ＤＬ２、ＤＨ２）７３０ａ、７３０ｂを含む。
【０１０８】
さらに別の実施形態において、図１１を参照すると、Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令７４０が、例えば、実アドレス・ロード操作を示すオペコードを有するオペコード・フィールド７４２ａ、７４２ｂ、第１のレジスタ・フィールド（Ｒ１）７４４、インデックス・フィールド（Ｘ２）７４６、ベース・フィールド（Ｂ２）７４８、及び複数の変位フィールド（ＤＬ２、ＤＨ２）７５０ａ、７５０ｂを含む。
【０１０９】
上記の形式において、Ｒ１は、第１のオペランドを含む汎用レジスタを指定し、Ｘ２及びＸ２フィールドにより指定された汎用レジスタの内容をＤ２フィールド又はＤＨ２及びＤＬ２フィールドの内容に付加して、第２オペランド・アドレスを形成する。
【０１１０】
２４ビット又は３１ビット・アドレッシング・モードにおけるＬｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ（ＬＲＡ、ＬＲＡＹ）の場合、第２のオペランド仮想アドレスに対応する６４ビットの実アドレス又は絶対アドレスのビット０−３２が全て０である場合、実アドレス又は絶対アドレスのビット３２−６３は、汎用レジスタＲ１のビット位置３２−６３に入れられ、レジスタのビット０−３１は変更されないままである。実アドレス又は絶対アドレスのビット０−３２が全て０ではない場合、特殊操作例外が認識される。
【０１１１】
６４ビット・アドレッシング・モードにおけるＬＲＡ又はＬＲＡＹ、及び、いずれかのアドレッシング・モードにおけるＬｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ（ＬＲＡＧ）の場合、第２のオペランドの仮想アドレスに対応する６４ビットの実アドレス又は絶対アドレスは、汎用レジスタＲ１に入れられる。
【０１１２】
ＥＤＡＴ−１（強化されたＤＡＴ−１）が適用されないとき、又はＥＤＡＴ−１が適用されるが、第２のオペランドが、ＳＴＥ形式制御が０であるセグメント・テーブル・エントリ（ＳＴＥ）を用いて変換されるとき、汎用レジスタＲ１に入れられるアドレスは、実アドレスである。ＥＤＡＴ−１が適用され、第２のオペランドが、ＳＴＥ形式制御が１であるセグメント・テーブル・エントリを用いて変換されるとき、又は、ＥＤＡＴ−２が適用され、第２のオペランドが、ＲＴＴＥ形式制御が１である領域第３テーブル・エントリを用いて変換されるとき、汎用レジスタＲ１に入れられるアドレスは、絶対アドレスである。
【０１１３】
Ｘ２、Ｂ２及びＤ２フィールドにより指定される仮想アドレスは、ＤＡＴがオンであるか又はオフであるかに関係なく、動的アドレス変換ファシリティによって変換される。
【０１１４】
ＬＲＡについての変位は、１２ビットの符号なし２進整数として扱われる。ＬＲＡＹ及びＬＲＡＧについての変位は、２０ビットの符号付き２進整数として扱われる。
【０１１５】
次のテーブルに示されるように、ＤＡＴは、ＰＳＷのアドレス空間制御ビット、すなわちビット１６及び１７の現在の値に依存するアドレス空間制御要素を用いて実行される。
【表３】
0006407299.tif 000004
【０１１６】
ＡＲＴ及びＤＡＴは、それぞれ、ＡＲＴルックアサイド・バッファ（ＡＬＢ）及び変換ルックアサイド・バッファ（ＴＬＢ）を用いて実行することができる。
仮想アドレス計算は、現ＰＳＷのビット３１及び３２により指定される現在のアドレッシング・モードに従って行われる。
【０１１７】
使用されるならば領域テーブル・エントリ（単数又は複数の）のアドレス、並びに使用されるならばセグメント・テーブル・エントリ及びページ・テーブル・エントリのアドレスは、現在のアドレッシング・モードに関係なく、６４ビットのアドレスとして扱われる。これらのエントリのアドレスが実アドレスとして扱われるか又は絶対アドレスとして扱われるかは、予測不能である。
【０１１８】
該当する場合はＡＲＴ及びＤＡＴの両方を完了することができるとき、条件コード０が設定され、特殊操作例外は認識されない、つまり、アドレス空間制御要素を得ることができるとき、各ＤＡＴテーブルのエントリはテーブル内にあり、０のＩビットを有し、２４ビット又は３１ビット・アドレッシング・モードにおけるＬＲＡ又はＬＲＡＹにおいては、結果として得られる実アドレス又は絶対アドレスのビット０−３２は０である。変換されたアドレスは、境界合わせ、又はアドレッシング若しくは保護例外に関して検査されない。
【０１１９】
ＰＳＷのビット１６及び１７が０１（２進法）であり、通常、以下に示される例外の１つを引き起こす条件のためにアドレス空間制御要素を取得できない場合、（１）例外に割り当てられた割り込みコードは汎用レジスタＲ１のビット位置４８−６３に入れられ、このレジスタのビット３２は１に設定され、ビット３３−４７は０に設定され、ビット０−３１は変更されないままであり、及び（２）条件コード３を設定することにより、命令は完了する。
【表４】
0006407299.tif 000005
【０１２０】
ＡＲＴが正常に完了した場合、ＤＡＴの実行により動作は続行する。
【０１２１】
セグメント・テーブル・エントリがテーブル外にあり、エントリの実アドレス又は絶対アドレスのビット０−３２が全て０である場合、条件コード３が設定され、エントリ・アドレスのビット３２−６３は汎用レジスタＲ１のビット位置３２−６３に入れられ、レジスタのビット０−３１は変更されないままである。アドレスのビット０−３２が全て０ではない場合、結果は以下に示される通りである。
【０１２２】
６４ビット・アドレッシング・モードのＬＲＡ又はＬＲＡＹ、又は、いずれかのアドレッシング・モードのＬＲＡＧにおいて、セグメント・テーブル・エントリにおけるＩビットが１である場合、条件コード１が設定され、セグメント・テーブル・エントリの６４ビットの実アドレス又は絶対アドレスが汎用レジスタＲ１に入れられる。この場合、ＬＲＡ又はＬＲＡＹが２４ビット又は３１ビット・アドレッシング・モードにあることを除いて、セグメント・テーブル・エントリのアドレスのビット０−３２が全て０である場合、汎用レジスタＲ１のビット０−３１が変更されないままであることを除いて、結果は同じである。アドレスのビット０−３２が全て０ではない場合、結果は以下に示される通りである。
【０１２３】
６４ビット・アドレッシング・モードのＬＲＡ又はＬＲＡＹ、又は、いずれかのアドレッシング・モードのＬＲＡＧにおいて、ページ・テーブル・エントリにおけるＩビットが１である場合、条件コード２が設定され、ページ・テーブル・エントリの６４ビットの実アドレス又は絶対アドレスが汎用レジスタＲ１に入れられる。この場合、ＬＲＡ又はＬＲＡＹが２４ビット又は３１ビット・アドレッシング・モードにあることを除いて、ページ・テーブル・エントリのアドレスのビット０−３２が全て０である場合、汎用レジスタＲ１のビット０−３１が変更されないままであることを除いて、結果は同じである。アドレスのビット０−３２が全て０ではない場合、結果は以下に示される通りである。
【０１２４】
変換の試行の際に用いられるアドレスのタイプに従って、汎用レジスタＲ１に入れられたセグメント・テーブル・エントリ又はページ・テーブル・エントリは、実アドレス又は絶対アドレスである。
【０１２５】
一般に、以下に示される例外の１つを引き起こす条件が存在する場合、（１）例外に割り当てられた割り込みコードが汎用レジスタＲ１のビット位置４８−６３に入れられ、このレジスタのビット３２が１に設定され、ビット３３−４７が０に設定され、ビット０−３１は変更されないままであり、かつ（２）条件コード３を設定することにより、命令が完了する。
【表５】
0006407299.tif 000006
【０１２６】
特別な条件
２４ビット又は３１ビット・アドレッシング・モードにおけるＬＲＡ又はＬＲＡＹにおいて、結果として得られる６４ビットの実アドレスのビット０−３２が全て０ではない場合、特殊操作例外が認識される。
【０１２７】
有効アクセス・リスト指定又はＡＬＥ、ＡＳＴＥ、又は権限テーブル・エントリをフェッチするためにＡＲＴによって使用されるアドレスが、その構成内で利用不能な位置を指定するとき、或いは、領域テーブル・エントリ（単数又は複数）、もしあれば、セグメント・テーブル・エントリ、又はページ・テーブル・エントリが、その構成内で利用不能な位置を指定するとき、アドレス指定例外が認識される。
【０１２８】
アクセスされた領域テーブル・エントリ又はセグメント・テーブル・エントリ又はページ・テーブル・エントリが０のＩビット及び形式エラーを有するとき、変換指定例外が認識される。
【０１２９】
領域テーブル・エントリ又はセグメント・テーブル・エントリのアドレスを計算するために行われた加算の結果としてのビット位置０の繰り上がりは、無視することができ、又はアドレス指定例外をもたらし得る。
【０１３０】
全てのアドレス指定例外について、動作は抑止される。
結果の条件コード：
０  変換が利用可能
１  セグメント・テーブル・エントリが無効（Ｉビットが１）
２  ページ・テーブル・エントリが無効（Ｉビットが１）
３  アドレス空間制御要素が利用不能、領域テーブル・エントリがテーブル外又は無効（Ｉビットが１）、セグメント・テーブル・エントリがテーブル外、又はエントリ・アドレスのビット０−３２が全て０ではない場合、ＬＲＡ及びＬＲＡＹのみ及び２４ビット又は３１ビット・アドレッシング・モードにおいてのみ、セグメント・テーブル・エントリ又はページ・テーブル・エントリが無効（Ｉビットが１）。
【０１３１】
プログラム例外
＊アドレス指定（有効アクセス・リスト指定、アクセシ・リスト・エントリ、ＡＳＮ第２テーブル・エントリ、権限テーブル・エントリ、領域テーブル・エントリ、セグメント・テーブル・エントリ、又はページ・テーブル・エントリ）
・操作（長変位ファシリティがインストールされていない場合、ＬＲＡＹ）
・特権操作
・特殊操作（ＬＲＡ、ＬＲＡＹのみ）
・変換制約
・変換指定
【０１３２】
プログラミング上の注意
１．マルチプロセッシング構成におけるＬｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓの使用において、注意を払うべきである。他のＣＰＵのＴＬＢにおける対応するエントリがクリアされる前に、ＤＡＴテーブル・エントリ無効化又はページ・テーブル・エントリ無効化によりストレージ内のＩビットを１に設定できるので、このＣＰＵ上でのＬｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ及びＤＡＴテーブル・エントリ無効化又はページ・テーブル・エントリ無効化のいずれかを同時に実行すると、矛盾した結果がもたらされる。Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓでは、ストレージ内のテーブルにアクセスできるので、対応するＴＬＢエントリがまだクリアされていなくても、領域テーブル・エントリ、セグメント・テーブル・エントリ又はページ・テーブル・エントリは、無効のように見えることがあり（それぞれ、条件コード３、１又は２）、他のＣＰＵ上のＤＡＴテーブル・エントリ無効化又はページ・テーブル・エントリ無効化の完了まで、ＴＬＢエントリがＴＬＢ内に残っていることがある。Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓの完了からＴＬＢがエントリをクリアするまでの間に実行され得る命令の数に対する保証された制限はない。
【０１３３】
Ｌｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓを使用するための上記の注意は、ＤＡＴテーブル・エントリ内に無効ビットを明示的に設定するために、Ｃｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ  Ａｎｄ  Ｐｕｒｇｅ又はＣｏｍｐａｒｅ  Ａｎｄ  Ｒｅｐｌａｃｅ  ＤＡＴ  Ｔａｂｌｅ  Ｅｎｔｒｙが使用されるときにも当てはまる。
【０１３４】
Ｌｏａｄ  ＰＳＷ及びＬｏａｄ  Ｒｅａｌ  Ａｄｄｒｅｓｓ命令に加えて、Ｓｅｔ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令によってもＮｏ−ＤＡＴ例外が認識され得る。
【０１３５】
図１２を参照して、Ｓｅｔ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令の形式の本発明の１つの好ましい実施形態を説明する。図１２を参照すると、Ｓｅｔ  Ｓｙｓｔｅｍ  Ｍａｓｋ命令８００が、例えば、システム・マスク設定操作を指定するためのオペコード（ｏｐｃｏｄｅ）を含むオペコード・フィールド８０２、ベース・フィールド（Ｂ２）８０４、及び変位フィールド（Ｄ２）８０６を含む。
【０１３６】
動作において、現ＰＳＷのビット０−７は、第２オペランド・アドレス（Ｂ２により指定された汎用レジスタの内容を変位フィールドの値に付加することによって形成された）によって指定される位置におけるバイトに置き換えられる。
【０１３７】
特別な条件
ＳＳＭ抑止制御ビット（制御レジスト０のビット３３）が１であり、ＣＰＵがスーパーバイザ状態（supervisorstate）にあるとき、特殊操作例外が認識される。
【０１３８】
ＰＳＷのビット位置０及び２−４の内容が全て０ではない場合、ロードする前、ＰＳＷにロードされる値は、妥当性に関してチェックされず、指定例外が認識され、プログラム割り込みが発生する。この場合、命令は完了し、命令長コードは２に設定される。指定例外は、この命令についてのプログラム例外として列挙される。この例外は、この命令の実行により引き起こされるもの、又は後の命令の実行を準備するプロセスの初期に発生するものと考えることができる。
【０１３９】
全てのアドレス指定及び保護例外において、動作は抑止される。
条件コード：コードは変更されないままである。
プログラム例外：
＊アクセス（フェッチ、オペランド２）
＊特権操作
＊特殊操作
＊指定
＊変換制約
【０１４０】
さらに、Ｓｔｏｒｅ  Ｔｈｅｎ  ＯＲ  Ｓｙｔｅｍ  Ｍａｓｋ命令により、Ｎｏ−ＤＡＴ例外が認識され得る。図１３を参照して、Ｓｔｏｒｅ  Ｔｈｅｎ  ＯＲ  Ｓｙｔｅｍ  Ｍａｓｋ命令の形式の本発明の１つの好ましい実施形態を説明する。図１３を参照すると、Ｓｔｏｒｅ  Ｔｈｅｎ  ＯＲ  Ｓｙｔｅｍ  Ｍａｓｋ命令９００が、例えば、Ｓｔｏｒｅ  Ｔｈｅｎ  ＯＲ  Ｓｙｓｔｅｍ  Ｍａｓｋ（システム・マスクをストアし、次に論理和演算する）操作を指定するためのオペコード（ｏｐｃｏｄｅ）を含むオペコード・フィールド９０２、即値フィールド（Ｉ２）９０４、ベース・フィールド（Ｂ１）９０６、及び変位フィールド（Ｄ１）９０８を含む。一例において、Ｂ１により指定されるレジスタの内容を変位フィールドに付加して、第１のオペランドのアドレスを与える。即値フィールドは第２のオペランドである。
【０１４１】
動作において、現ＰＳＷのビット０−７は、第１のオペランドの位置に格納される。次に、現ＰＳＷのビット位置０−７の内容は、そのオリジナルの内容及び第２のオペランド（Ｉ２フィールド）の論理ＯＲに置き換えられる）。
【０１４２】
特別な条件
ロードする前、ＰＳＷにロードされる値は、妥当性に関してチェックされない。しかしながら、ロードした直後、指定例外が認識され、ＰＳＷのビット位置０及び２−４の内容が全て０ではない場合、指定例外が認識され、プログラム割り込みが発生する。この場合、命令が完了し、命令長コードが２に設定される。指定例外がプログラム例外として列挙される。これは、次の命令の実行を準備するプロセスの初期に発生するものと考えることができる。
アドレス指定及び保護例外において、動作が抑止される。
条件コード：コードは変更されないままである。
プログラム例外：
・アクセス（ストア、オペランド１）
・特権操作
・指定
・変換制約
【０１４３】
プログラミング上の注意：Ｓｔｏｒｅ  Ｔｈｅｎ  ＯＲ  Ｓｙｔｅｍ  Ｍａｓｋ命令により、後の復元のために、オリジナルの内容を保持しながら、プログラムを、システム・マスク内の選択されたビット１に設定することができる。例えば、プログラムは、外部マスク・ビットの現在の状況を利用可能にする必要なしに、Ｉ／Ｏ割り込みに関してＣＰＵをイネーブルにすることができる。
【０１４４】
上述したケース１（Ｌｏａｄ  ＰＳＷ）及び３−５（Ｓｅｔ  Ｓｙｓｔｅｍ  Ｍａｓｋ、Ｓｔｏｒｅ  Ｔｈｅｎ  Ｏｒ  Ｓｙｔｅｍ  Ｍａｓｋ、割り込み）において、ＰＳＷのビット５を０から１に変更した直後、Ｎｏ−ＤＡＴ例外が認識され、プログラム割り込みが発生する。これらの場合、適用できる場合、命令実行又はＰＳＷスワップが完了し、命令長コードは０となる。Ｎｏ−ＤＡＴ例外は、次の順次命令（next sequential instruction）の実行を準備するプロセスの初期に発生するものと考えることができる。従って、プログラム旧ＰＳＷにより指定された命令アドレスに配置された命令が無効化される。Ｎｏ−ＤＡＴ例外は、００３Ｄ（１６進数）（又は、同時ＰＥＲイベントが示される場合は、００ＢＤ（１６進数））のプログラム割り込みコードで示される。
【０１４５】
割り込みは、現ＰＳＷを旧ＰＳＷとして格納すること、割り込みの原因を識別する情報を格納すること、及び新ＰＳＷをフェッチすることを含む。処理は、新ＰＳＷにより指定されるように再開する。
【０１４６】
割り込みにおいて格納される旧ＰＳＷは、通常、割り込みが発生しなかった次に実行された命令のアドレスを含んでおり、従って、割り込まれたプログラムの再開を可能にする。プログラム及びスーパーバイザ呼び出し（supervisor-call）割り込みにおいては、格納される情報は、最後に実行された命令の長さを識別するコードも含み、従って、プログラムが、割り込みの原因に応答するのを可能にする。通常の応答が、割り込みを引き起こす命令の再実行である幾つかのプログラム条件の場合、命令アドレスは、最後に実行された命令を直接識別する。
【０１４７】
再開を除いて、ＣＰＵが動作状態にあるときのみ、割り込みが発生し得る。
【０１４８】
ＰＥＲ基本イベントを除いて、プログラム割り込みにより、１つのプログラム割り込み条件だけが示される。しかしながら、１つの条件の存在により、他の条件の存在は妨げられない。１つより多いプログラム割り込み条件が存在する場合、一例では、割り込みコードにおいて、割り込みコードにおいて、最も高い優先順位を有する条件が識別される。同じ優先順位の複数の条件が適用される場合、どれが示されるかは予測不能である。
【０１４９】
同じストレージ・オペランドの複数の部分が別個のアクセス制御の対象になるとき、その部分と関連したアクセス例外の優先順位は予測不能であり、かつ、必ずしも、オペランド内のバイトのアクセスについて指定されたシーケンスに関連しない。例えば、（ａ）ＭＯＶＥ（ＭＶＣ）命令の第１のオペランドがセグメント境界を超え、（ｂ）オペランドの左端部分を変換するのに用いられるセグメント・テーブル・エントリにおいて無効ビットが１であり、及び（ｃ）オペランドの右端部分を変換するのに用いられる有効ページ・テーブル・エントリにおいてＤＡＴ保護ビットが１である場合、セグメント変換例外が認識されるか又は保護例外が認識されるかは予測不能である。
【０１５０】
命令が２つのストレージ・オペランドを有し、両方のオペランドについてアクセス例外条件が存在する場合、どの条件が認識されるかは予測不能である。同じ命令（同じ例外条件を有する）の後の実行により、第１の実行と同じオペランド、又は他のオペランドに関して例外条件が認識され得る。
【０１５１】
発生する終了のタイプ（無効化、抑止、又は終了）は、割り込みコードにおいて示される例外のタイプについて定められるものである。しかしながら、終了を許可する条件が示され、無効化又は抑止のいずれかを引き起こす別の条件も存在する場合、操作単位は抑止される。
【０１５２】
図１４を参照して、複数のアーキテクチャ・モードをサポートするコンピューティング環境においてＮｏ−ＤＡＴファシリティを提供することと関連した処理の本発明の１つの実施形態を説明する。この特定の例において、両方のアーキテクチャ・モードは、選択されたアーキテクチャ機能（すなわち、各々が、例えばＤＡＴを含むように定められる）用に構成されるが、第１のアーキテクチャ・モードが機能をサポートする一方で、第２のアーキテクチャ・モードにおいて機能が除去され（例えば、サポートされない、バイパスされる、アーキテクチャから排除される等）、ＤＡＴのオン及び／又はオフ制御がある場合でもこの機能をオンにすることができない。
【０１５３】
図１４を参照すると、一例において、コンピューティング環境が、複数のアーキテクチャ：すなわち、選択されたアーキテクチャ機能（例えば、ＤＡＴ）用に構成され、これをサポートする第１のアーキテクチャ（例えば、強化されたアーキテクチャ、例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ）、及び、選択されたアーキテクチャ機能用に構成されるが、これを選択的に除去する第２のアーキテクチャ（例えば、レガシー・アーキテクチャ、例えばＥＳＡ／３９０）を同時にサポートするように構成される（ステップ１０００）。機能を除去する（Ｎｏ−ＤＡＴをオンにする、又はＮｏ−ＤＡＴを恒久的な工場で実装済みのオプションとして提供する）際、別の制御が、ＤＡＴをオンにするように設定されている場合でも、ＤＡＴをオンにすることはできない。
【０１５４】
コンピューティング環境のプロセッサが、選択されたアーキテクチャ機能を含む操作を実行する要求を取得する（ステップ１００２）。プロセッサが、第２のアーキテクチャに基づく第２のアーキテクチャ・モードで処理を行っているかどうかについての判断がなされる（問い合わせ１００４）。プロセッサが、第１のアーキテクチャ、例えばｚ／Ａｒｃｈｉｔｅｃｔｕｒｅなどの、第２のアーキテクチャとは異なるアーキテクチャ・モードで処理を行っている場合、選択されたアーキテクチャ機能が実行される（ステップ１００６）。
【０１５５】
問い合わせ１００４に戻ると、プロセッサが第２のアーキテクチャ・モードにある場合、選択されたアーキテクチャ機能が除去されたかどうかについての判断がなされる（問い合わせ１００８）。本発明の１つの好ましい実施形態において、これは、ファシリティ・インジケータ及び／又は別のインジケータをチェックすることにより判断される。機能が除去されていない（例えば、Ｎｏ−ＤＡＴがインストールされていない）場合、選択されたアーキテクチャ機能（例えば、ＤＡＴ）が実行される（ステップ１００６）。そうでない場合、選択されたアーキテクチャ機能は実行されないという表示が与えられる（ステップ１０１０）。例えば、エラーが与えられる。エラーは例外とすることができ、既知の例外タイプ又は新しい例外タイプのいずれかを用いることができる。
【０１５６】
上記の例において、第２のアーキテクチャ・モードはＤＡＴ用に構成されるが、別の実施形態においては、ＤＡＴがアーキテクチャから除去され、第２のアーキテクチャ・モードは、ＤＡＴ用に構成されず、代わりに、第２のアーキテクチャは、１つ又は複数の選択されたアーキテクチャ機能（ＤＡＴなどの）がないアーキテクチャの縮小セットを含む。この場合、ＤＡＴは、アーキテクチャから除去されるとも言われる。
【０１５７】
本発明の更に別の好ましい実施形態において、ＮＤＡＴファシリティは、ページング可能ストレージ・モード・ゲストを含むコンピューティング環境内に含まれる。そうした環境において、一例では、ホストは、第１のアーキテクチャ・モード（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ）で初期化及び処理され、ゲストは、第１のアーキテクチャ・モード又は第２のアーキテクチャ・モード（例えば、ＥＳＡ／３９０又はそのサブセット）のような別のアーキテクチャ・モードのいずれかで初期化することができる。ＥＳＡ／３９０アーキテクチャ・モードにおけるページング可能ストレージ・モード・ゲストにおいて、Ｎｏ−ＤＡＴファシリティがインストールされている場合、一例において、次のアクションが行われる。
１．本発明の１つの好ましい実施形態において、ＮＤＡＴがインストールされている場合、ゲストは、状態制御内に存在する他のインジケータ（例えば、ありとあらゆる他のインジケータ）に関係なく、ＤＡＴが与えられていないかのように有効に振る舞い、他の場合には、ＤＡＴ若しくは他のフィーチャの可用性を支配できる仮想環境における実行を制御する。
２．ＤＡＴ機能をイネーブルにし、ＤＡＴ機能を使用し、又はＤＡＴ機能の存在を必要とする命令（例えば、これに限定されるものではないが、ＬＲＡ命令を含む）を実行する試みがなされた場合、Ｎｏ−ＤＡＴ例外プログラム割り込みが提示される。
【０１５８】
図１５−図１６を参照して、ゲスト環境においてＮｏ−ＤＡＴファシリティを提供するための論理の、本発明の１つの好ましい実施形態を説明する。図１５を参照すると、ホストが第１のアーキテクチャ・モード（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ）で処理を行い（ステップ１１００）、ホストは１つ又は複数のゲスト仮想マシンを開始するためのｓｔａｒｔ  ｉｎｔｅｒｐｒｅｔａｔｉｖｅ  ｅｘｅｃｕｔｉｏｎ（解釈実行開始）命令を発行する（ステップ１１０２）。第１のゲスト仮想マシンは、第１のアーキテクチャ・モードで処理を行っており、第１のアーキテクチャ・モードは、第１の命令セット・アーキテクチャを有し、第１セットのアーキテクチャ機能を含む（ステップ１１０４）。しかしながら、第２のゲスト仮想マシンは、第２のアーキテクチャ・モードで処理を行い（ステップ１１０６）、第２のアーキテクチャ・モードは、第２の命令セット・アーキテクチャ・モードを有し、第２セットのアーキテクチャ機能を含む。第２セットのアーキテクチャ機能は、第１セットの縮小セットであり、そこには、１つ又は複数の機能（例えば、ＤＡＴなどの選択されたアーキテクチャ機能）が存在しない。従って、第２のアーキテクチャ機能は、ＤＡＴなどの機能を禁止する機能禁止（function inhibit）モードである。一例では、選択されたアーキテクチャ機能の不存在は、ファシリティ・ビットにより示される。しかしながら、１つ又は複数の実施形態において、これはオプションである。
【０１５９】
本発明の１つの特定の好ましい実施形態において、第１のアーキテクチャ・モードは、６４ビット・アドレッシングを含み、６４ビットの汎用レジスタを使用し、第２のアーキテクチャ・モードは、３１ビット・アドレッシングを含み、３２ビットの汎用レジスタを使用する。
【０１６０】
第２のゲスト仮想マシンは、第２のアーキテクチャ・モードで処理を行い、この処理は、第２のゲスト仮想マシンの実行を制御するのに用いることができる選択されたアーキテクチャ機能と関連した１つ又は複数の制御をオーバーライドする（ステップ１１０８）。例えば、ＤＡＴがオンであることを示すためにインジケータが使用される場合、このインジケータは、第２のゲスト仮想マシンに対してＮｏ−ＤＡＴファシリティがインストールされているときにオーバーライドされる制御である。更に別の例として、仮想マシンに対応するアーキテクチャの指定は、特定のフィーチャの可用性を制御し、この指定は、ＮＤＡＴファシリティによりオーバーライドされる制御でもある。オーバーライドされる制御の他の例も可能である。
【０１６１】
本発明の１つの好ましい実施形態において、第２のゲストは、選択された機能（例えば、ＤＡＴ）を使用する又はイネーブルにする操作を実行する要求を取得する（ステップ１１２０）。第２のゲストが第２のアーキテクチャ・モードで処理を行っているかどうかについての判断がなされる（問い合わせ１１２２）。第２のゲストが第２のアーキテクチャ・モードで処理を行っていない場合、操作を実行することができ、選択されたアーキテクチャ機能を使用する又はイネーブルにすることができる（ステップ１１２４）。しかしながら、第２のゲストが第２のアーキテクチャ・モードで処理を行っており、従って、選択された機能がサポートされていない（すなわち、選択された機能が除去される）場合、操作は実行されず（ステップ１１２６）、エラーが与えられる（ステップ１１２８）。
【０１６２】
上述した本発明の好ましい実施形態において、両方のゲストとも、レベル１のゲスト（すなわち、各々がホストによって初期化される）であるが、更に別の例では、１又は複数のゲストは、ゲストが別のゲストにより開始される第２レベルのゲストである。本発明のこのような好ましい実施形態において、第２レベルのゲストは、ＥＳＡ／３９０で処理が行われ、Ｎｏ−ＤＡＴがデフォルトである。つまり、ＥＳＡ／３９０で開始した第２レベルのゲストは、様々に指示し得る他の制御（例えば、ＳＩＥ制御）に関係なく、ＤＡＴを使用しない。ＤＡＴに関する他のいずれの制御もオーバーライドされる。さらに、本発明の１つの好ましい実施形態において、第１レベル・ゲスト及び／又はホストがＥＳＡ／３９０でも又はｚ／ＡｒｃｈｉｔｅｃｔｕｒｅでもＤＡＴを実行できたとしても、これは、第２レベル・ゲストについてのデフォルトである。本発明のさらに別の好ましい実施形態において、ＥＳＡ／３９０仮想マシンは、ゲスト−２仮想マシンとして生成することしかできず、ホスト及びゲスト−１モードの一方又は両方において利用可能ではない。
【０１６３】
第２のアーキテクチャ・モードにおけるＮｏ−ＤＡＴファシリティの提供を特に参照して、機能を説明してきたが、本明細書に説明される態様は、１つのアーキテクチャ・モードにおいてディスエーブルにすることができ、ゲスト又はホスト環境の更に別のアーキテクチャ・モードにおいて提供できる他のプロセッサ機能に適用することができる。
【０１６４】
本明細書に説明されるのは、命令セットを提供し、かつ、命令及びデータについての、アーキテクチャのデータ・アドレス変換を排除するための能力である。１つの実施形態にさらに説明されるのは、特定のアーキテクチャからデータ・アドレス変換を除去するための制御である。１つの実施形態において、除去することは、制御レジスタに従い、更に別の実施形態においては、１つ又は複数のデフォルト・モードに従い、例えばゲスト２などのデータ・アドレス変換の除去を自動的にイネーブルにする。さらに、本発明の１つの好ましい実施形態において、ＤＡＴが除去されたときにＤＡＴをイネーブルにする及び／又は使用する試みを示すために割り込みが与えられる。さらに、１つ又は複数の実施形態において、仮想環境のための動作モードが与えられる。
【０１６５】
本明細書で説明されるように、特定のアーキテクチャから、ＤＡＴ変換のような選択された機能を除去するためのファシリティが与えられるので、もはやテストする必要性はない。例として、プログラム（スーパーバイザ・プログラムのような）が除去された機能をイネーブルにしようと試みた場合、（既知の例外コード又は新しいコードのいずれかを用いて）エラー又は例外のような指示が与えられる。さらに、プログラムが、除去された機能を利用する命令を実行しようと試みる場合、例として、エラー又は例外のような指示が与えられる。
【０１６６】
本発明の１つの好ましい実施形態において、Ｎｏ−ＤＡＴファシリティは、例えば、次の同時出願された、同一出願人による、Ｇａｉｎｅｙ他の「Ａｒｃｈｉｔｅｃｔｕｒａｌ  Ｍｏｄｅ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ」という名称の出願（米国特許出願第１４／２１７８４０号）及びＭｉｃｈａｅｌ  Ｋ．Ｇｓｃｈｗｉｎｄによる「Ｃｏｍｍｏｎ  Ｂｏｏｔ  Ｓｅｑｕｅｎｃｅ  ｆｏｒ  Ｃｏｎｔｒｏｌ  Ｕｔｉｌｉｔｙ  Ａｂｌｅ  ｔｏ  ｂｅ  Ｉｎｉｔｉａｌｉｚｅｄ  ｉｎ  Ｍｕｌｔｉｐｌｅ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ」という名称の出願（米国特許出願第１４／２１７８００号）に記載される、ＣＺＡＭファシリティ及び／又は制御ユーティリティ・ブート・ファシリティを含む１つ又は複数の他のファシリティと共に使用することができる。
【０１６７】
図１７を参照すると、一例において、コンピュータ・プログラム製品１２００は、例えば、１つ又は複数の実施形態を提供し、容易にするように、その上にコンピュータ可読プログラム・コード手段、論理及び／又は命令１２０４を格納するための、１つ又は複数の一時的でないコンピュータ可読ストレージ媒体１２０２を含む。
【０１６８】
本発明は、システム、方法、及び／又はコンピュータ・プログラム製品とすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含むことができる。
【０１６９】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用するための命令を保持及び格納することができる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの、即ち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、クリア可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、ポータブル・コンパクト・ディスク型読み出し専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリ・スティック、フロッピー・ディスク、パンチカード又は命令がその上に記録された溝の中の隆起構造などの機械的にエンコードされるデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で用いられる場合、コンピュータ可読ストレージ媒体は、電波若しくは他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を介して伝搬する電磁波（例えば、光ファイバ・ケーブルの中を通る光パルス）、又は配線を介して伝送される電気信号などの、一時的な信号自体と解釈されるべきではない。
【０１７０】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスにダウンロードしてもよく、又は、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、及び／又は無線ネットワークなどのネットワークを介して外部コンピュータ又は外部ストレージ・デバイスにダウンロードしてもよい。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、及び／又はエッジ・サーバを含むことができる。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カード又はネットワーク・インタフェースが、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体に格納するように、コンピュータ可読プログラム命令を転送する。
【０１７１】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データとすることができ、又は、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語、及び、「Ｃ」プログラミング言語若しくは類似のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語の任意の組み合わせで書かれたソース・コード若しくはオブジェクト・コードのいずれかとすることができる。コンピュータ可読プログラム命令は、全体をユーザのコンピュータ上で実行することができ、独立型ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行されることができ、一部をユーザのコンピュータ上で実行し、一部を遠隔コンピュータ上で実行することができ、又は全体を遠隔コンピュータ若しくはサーバ上で実行することができる。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、又は、外部コンピュータに対して（例えば、インターネット・サービス・プロバイダを使用してインターネット経由で）接続が行われてもよい。幾つかの実施形態においては、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又はプログラマブル論理アレイ（ＰＬＡ）を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、コンピュータ可読プログラム命令を実行することができる。
【０１７２】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図におけるブロックの組み合わせは、コンピュータ可読プログラム命令によって実装できることが理解されるであろう。
【０１７３】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するための手段を生成するようにすることができる。これらのコンピュータ可読プログラム命令を、コンピュータ、プログラム可能データ処理装置、及び／又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読ストレージ媒体内に格納し、その結果、命令をその内部に格納したコンピュータ可読ストレージ媒体が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を含むようにすることもできる。
【０１７４】
コンピュータ可読プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で一連の動作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するようにすることもできる。
【０１７５】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実行するための１つ又は複数の実行可能な命令を含む、モジュール、セグメント又は命令の一部を表すことができる。幾つかの代替的な実施において、ブロック内に記された機能は、図面内に記された順序とは異なる順序で行われることもある。例えば、連続して示された２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステムにより実装すること、又は専用ハードウェアとコンピュータ命令との組み合わせによって実施することができることにも留意されたい。
【０１７６】
上記に加えて、１つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダによって供与、提供、配置、管理、サービス等を行うことができる。例えば、サービス・プロバイダは、１又は複数の顧客のために１つ又は複数の態様を実施するコンピュータ・コード及び／又はコンピュータ・インフラストラクチャの作成、保守、サポート等を行うことができる。見返りに、サービス・プロバイダは、例として、予約申し込み及び／又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、１又は複数の第三者に対する広告内容の販売から支払いを受けることができる。
【０１７７】
一態様において、１つ又は複数の実施形態を実施するために、アプリケーションを配備することができる。一例として、アプリケーションの配備は、１つ又は複数の実施形態を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【０１７８】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配置することができ、そこでは、コードは、コンピューティング・システムと協働して、１つ又は複数の実施形態を実施することができる。
【０１７９】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、プロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は、１つ又は複数の実施形態を含む。コードは、コンピュータ・システムと協働して、１つ又は複数の実施形態を実施することができる。
【０１８０】
種々の実施形態が上述されたが、これらは例にすぎない。例えば、１つ又は複数の実施形態を組み込み、使用するために、他のアーキテクチャのコンピューティング環境を使用することもできる。さらに、異なる命令、命令形式、命令フィールド、及び／又は命令の値を使用することができる。さらにまた、他のタイプのアドレス変換も、１つ又は複数の態様から利益を得ることができる。また、他のアーキテクチャ機能を同様に除去することができる。多くの変形が可能である。
【０１８１】
さらに、他のタイプのコンピューティング環境の利益を得、これを使用することができる。一例として、プログラム・コードを格納及び／又は実行するのに適しており、システム・バスを介してメモリ要素に直接又は間接的に結合された少なくとも２つのプロセッサを含む、データ処理システムを使用することができる。メモリ要素は、例えば、プログラム・コードの実際の実行中に用いられるローカル・メモリ、大容量記憶装置、及び実行中に大容量記憶装置からコードを取り出さなければならない回数を減らすために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリを含む。
【０１８２】
入力／出力即ちＩ／Ｏデバイス（これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サムドライブ及び他のメモリ媒体等）は、直接システムに結合することもでき、又は介在するＩ／Ｏコントローラを介してシステムに結合することができる。ネットワーク・アダプタをシステムに結合させて、データ処理システムが、介在する私的ネットワーク又は公衆ネットワークを通じて他のデータ処理システム又は遠隔プリンタ若しくはストレージ・デバイスに結合できるようにすることもできる。モデム、ケーブル・モデム及びイーサネット・カードは、ネットワーク・アダプタの利用可能なタイプのうちのほんの数例である。
【０１８３】
図１８を参照すると、これは、１つ又は複数の実施形態を実装するためのホスト・コンピュータ・システム５０００の代表的なコンポーネントが描かれる。代表的なホスト・コンピュータ５０００は、コンピュータ・メモリ（即ち、中央ストレージ）５００２と通信する１つ又は複数のＣＰＵ５００１と、他のコンピュータ若しくはＳＡＮなどとの通信のためのストレージ媒体デバイス５０１１及びネットワーク５０１０に対するＩ／Ｏインターフェースとを含む。ＣＰＵ５００１は、アーキテクチャ化命令セット及びアーキテクチャ化機能を有するアーキテクチャに準拠している。ＣＰＵ５００１は、アクセス・レジスタ変換（ＡＲＴ）５０１２を有し、これは、プログラム・アドレス（仮想アドレス）をメモリの実アドレスに変換するための動的アドレス変換（ＤＡＴ）５００３により用いられるアドレス空間を選択するためのＡＲＴルックアサイド・バッファ（ＡＬＢ）５０１３を含む。ＤＡＴは、典型的には、変換をキャッシュに入れるための変換ルックアサイド・バッファ（ＴＬＢ）５００７を含み、後でコンピュータ・メモリ５００２のブロックにアクセスしたときにアドレス変換による遅延を必要とせずに済むように変換をキャッシュに入れるための、変換ルックアサイド・バッファ（ＴＬＢ）５００７を含む。典型的には、キャッシュ５００９は、コンピュータ・メモリ５００２とプロセッサ５００１との間で用いられる。キャッシュ５００９は、１つより多くのＣＰＵが利用できる大型キャッシュと、大型キャッシュと各ＣＰＵとの間のより小型で高速な（下位レベルの）キャッシュとを有する階層構造とすることができる。いくつかの実施において、下位レベルのキャッシュは、命令フェッチ及びデータ・アクセスのための個別の下位レベル・キャッシュを提供するように分割される。
【０１８４】
１つの実施形態において、命令は、命令フェッチ・ユニット５００４によりメモリ５００２からキャッシュ５００９を介してフェッチされる。命令は、命令デコード・ユニット５００６内でデコードされ（幾つかの実施形態においては他の命令と共に）命令実行ユニット５００８にディスパッチされる。典型的には、幾つかの実行ユニット５００８、例えば、算術演算実行ユニット、浮動小数点実行ユニット及び分岐命令実行ユニットが用いられる。命令は、実行ユニットにより、必要に応じて命令が指定するレジスタ又はメモリからのオペランドにアクセスすることにより実行される。オペランドがメモリ５００２からアクセスされる（ロードされる又はストアされる）場合には、典型的には、ロード／ストア・ユニット５００５が、実行されている命令の制御下でアクセスを取り扱う。命令は、ハードウェア回路若しくは内部マイクロコード（ファームウェア）、又はこの両方の組み合わせにより実行することができる。
【０１８５】
既述のように、コンピュータ・システムは、ローカル（又は、主）ストレージ内の情報、並びにアドレス指定、保護、並びに参照及び変更記録を含む。アドレス指定の幾つかの態様は、アドレスの形式、アドレス空間の概念、アドレスの種々のタイプ及び１つのタイプのアドレスが別のタイプのアドレスに変換される方法を含む。主ストレージの一部は、恒久的に割り当てられたストレージ位置を含む。主ストレージは、システムに、直接アドレス可能なデータの高速アクセス・ストレージを提供する。データ及びプログラムの両方とも、これらが処理される前に（入力デバイスから）主ストレージにロードされる。
【０１８６】
主ストレージは、キャッシュと呼ばれることがある、１つ又は複数のより小型の高速アクセス・バッファ・ストレージを含むことができる。キャッシュは、典型的には、ＣＰＵ又はＩ／Ｏプロセッサと物理的に関連付けられる。物理的構造の、性能を除いた効果及び別個のストレージ媒体の使用は、一般に、プログラムにより観察することができない。
【０１８７】
命令及びデータ・オペランドに対して、別個のキャッシュを維持することができる。キャッシュ内の情報は、キャッシュ・ブロック又はキャッシュ・ライン（又は、簡単に言えばライン）と呼ばれる整数境界上の連続バイトで維持される。モデルは、キャッシュ・ラインのサイズをバイト単位で戻すＥＸＴＲＡＣＴ  ＣＡＣＨＥ  ＡＴＴＲＩＢＵＴＥ命令を提供することができる。別の実施形態において、この情報は、例えば、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｌａｔｆｏｒｍ  Ｒｅｆｅｒｅｎｃｅ仕様により指定されるインターフェースに従ったファームウェアから取得することができる。モデルはまた、データ・キャッシュ・ブロック・タッチ（ｄｃｂｔ）、データ又は命令キャッシュへのストレージのプリフェッチ又はキャッシュからのデータの解放を行うＰＲＥＦＥＴＣＨ  ＤＡＴＡ及びＰＲＥＦＥＴＣＨ  ＤＡＴＡ  ＲＥＬＡＴＩＶＥ  ＬＯＮＧ命令のうちの１つ又は複数を提供することもできる。
【０１８８】
ストレージは、ビットの水平の長い文字列として見ることができる。殆どの操作では、ストレージへのアクセスは、左から右への順で進行する。ビットの文字列は、８ビット単位で細分される。この８ビットの単位はバイトと呼ばれ、これは全ての情報形式の基本構成単位である。ストレージ内の各々のバイト位置は、負でない固有の整数により識別され、この整数がバイト位置のアドレス、即ち、簡単にバイト・アドレスである。隣接するバイト位置は連続するアドレスを有し、左端の０から始まって左から右へ順に進行する。アドレスは、符号なしの２進整数であり、２４ビット、３１ビット又は６４ビットである。
【０１８９】
情報は、ストレージとＣＰＵ又はチャネル・サブシステムとの間で、一度に１バイトずつ、又は１グループ分のバイトで伝送される。特に断りのない限り、例えば、Ｐｏｗｅｒ  ＩＳＡ及びｚ／Ａｒｃｈｉｔｅｃｔｕｒｅにおいて、ストレージ内のバイト・グループは、グループの左端のバイトによりアドレス指定される。グループ内のバイト数は、実行される操作により暗黙的に決定される場合、又は明示的に決定される場合がある。ＣＰＵ操作に使用される場合、バイト・グループはフィールドと呼ばれる。各々のバイト・グループ内において、例えば、Ｐｏｗｅｒ  ＩＳＡ及びｚ／Ａｒｃｈｉｔｅｃｔｕｒｅにおいて、ビットは、左から右の順に番号付けされる。Ｐｏｗｅｒ  ＩＳＡ及びｚ／Ａｒｃｈｉｔｅｃｔｕｒｅにおいて、左端のビットを「最上位」ビットと呼び、右端のビットを「最下位」ビットと呼ぶことがある。しかしながら、ビット番号はストレージ・アドレスではない。アドレス指定できるのはバイトだけである。ストレージ内の１つのバイトの個々のビットに対して操作を行うためには、そのバイト全体にアクセスされる。１バイトの中のビットには、（ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅにおいて）左から右に０から７までの番号が付けられる。１つのアドレスの中のビットには、２４ビット・アドレスの場合は、８−３１又は４０−６３の番号が付けられ、又は３１ビット・アドレスの場合は、１−３１又は３３−６３の番号が付けられ、又は６４ビット・アドレスの場合は、０−６３の番号が付けられる。一例においては、ビット８−３１及び１−３１は、３２ビット長の記憶位置（例えばレジスタ）にあるアドレスに適用され、一方、ビット４０−６３及び３３−６３は、６４ビット長の記憶位置にあるアドレスに適用される。複数バイトの任意の他の固定長形式において、形式を構成するビットは、０から始まって連続的に番号が付けられる。エラー検出のため、また好ましくは訂正のため、各々のバイト又はバイト・グループと共に１又は複数の検査ビットを伝送することができる。こうした検査ビットは、マシンにより自動的に生成され、プログラムにより直接制御することはできない。ストレージ容量は、バイト数で表現される。ストレージ・オペランド・フィールドの長さが命令のオペコードで暗黙指定される場合、そのフィールドは固定長を有するといわれ、この長さは１バイト、２バイト、４バイト、８バイト又は１６バイトとすることができる。幾つかの命令に対しては、より大きいフィールドが暗黙指定される。ストレージ・オペランドの長さが暗黙指定されず、明示的に指定される場合は、そのフィールドは可変長を有するといわれる。可変長オペランドは、１バイトのインクリメント（又は幾つかの命令では、２バイトの倍数又は他の倍数で）で長さが変化し得る。情報がストレージ内に配置されると、ストレージへの物理的パスの幅が格納されるフィールドの長さより大きい場合であっても、指定したフィールドに含まれているバイト位置の内容のみが置き換えられる。
【０１９０】
情報の特定の単位は、ストレージ内の整数境界上にあるべきである。境界は、そのストレージ・アドレスがバイトでの単位の長さの倍数である場合に、情報の単位に対して整数であると呼ばれる。整数境界上にある２バイト、４バイト、８バイト、１６バイト及び３２バイトのフィールドには、特別な名称が与えられる。ハーフワードは、２バイト境界上にある２個の連続したバイトのグループであり、これは命令の基本構成単位である。ワードは、４バイト境界上にある４個の連続したバイトのグループである。ダブルワードは、８バイト境界上にある８個の連続したバイトのグループである。クワッドワードは、１６バイト境界上にある１６個の連続したバイトのグループである。オクトワードは、３２バイト境界上にある３２個の連続したバイトのグループである。ストレージ・アドレスが、ハーフワード、ワード、ダブルワード、クワッドワード及びオクトワードを指定するとき、そのアドレスの２進表現では、それぞれ１個、２個、３個、４個又は５個の右端の０ビットを含む。命令は、２バイト整数境界上にあるべきである。殆どの命令のストレージ・オペランドは、境界位置合わせ要件を有さない。
【０１９１】
命令及びデータ・オペランドに対して別個のキャッシュを実装するデバイスにおいては、ストアが後にフェッチされる命令を変更するかどうかに関係なく、プログラムが、後にフェッチされるキャッシュ・ラインに格納される場合、著しい遅延が生じ得る。
【０１９２】
一例において、実施形態は、ソフトウェア（ライセンス内部コード、ファームウェア、マイクロコード、ミリコード、ピココードなどとも呼ばれる場合があるが、そのいずれも１つ又は複数の実施形態と整合性がある）により実施することができる。図１８を参照すると、１つ又は複数の態様を具体化するソフトウェア・プログラム・コードは、ＣＤ−ＲＯＭドライブ、テープドライブ、又はハードドライブといった長期ストレージ媒体デバイス５０１１から、ホスト・システム５０００のプロセッサ５００１によりアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はＣＤ−ＲＯＭのようなデータ処理システムと共に使用するための種々の周知の媒体のいずれかの上で具体化することができる。コードは、こうした媒体上に分散させても、又はコンピュータ・メモリ５００２からユーザに分散させても、又はこうした他のシステムのユーザが使用するために、ネットワーク５０１０上の１つのコンピュータ・システムのストレージから他のコンピュータ・システムに分散させてもよい。
【０１９３】
ソフトウェア・プログラム・コードは、種々のコンピュータ・コンポーネント及び１つ又は複数のアプリケーション・プログラムの機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体デバイス５０１１から相対的により高速のコンピュータ・ストレージ５００２にページングされ、そこでプロセッサ５００１による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び／又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体（これらに限定されるものではないが、電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープ等）上に作成され格納されたとき、「コンピュータ・プログラム」と呼ばれることが多い。コンピュータ・プログラム媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【０１９４】
図１９は、１つ又は複数の実施形態を実施することができる代表的なワークステーション又はサーバ・ハードウェア・システムを示す。図２５のシステム５０２０は、随意的な周辺機器を含む、パーソナル・コンピュータ、ワークステーション、又はサーバなどの代表的なベース・コンピュータ・システム５０２１を含む。ベース・コンピュータ・システム５０２１は、１つ又は複数のプロセッサ５０２６と、周知の技術に従ってプロセッサ５０２６とシステム５０２１の他のコンポーネントを接続し、これらの間の通信を可能にするために用いられるバスとを含む。バスは、プロセッサ５０２６を、ハードドライブ（例えば、磁気媒体、ＣＤ、ＤＶＤ及びフラッシュ・メモリのいずれかを含む）又はテープドライブを含むことができる、メモリ５０２５及び長期ストレージ５０２７に接続する。システム５０２１はまた、バスを介して、マイクロプロセッサ５０２６を、キーボード５０２４、マウス５０２３、プリンタ／スキャナ５０３０、及び／又はタッチ・センシティブ・スクリーン、デジタル化された入力パッド等のいずれかのユーザ・インターフェース機器とすることができる他のインターフェース機器といった、１つ又は複数のインターフェース機器に接続する、ユーザ・インターフェース・アダプタを含むこともできる。バスはまた、ディスプレイ・アダプタを介して、ＬＣＤスクリーン又はモニタなどのディスプレイ装置５０２２をマイクロプロセッサ５０２６にも接続する。
【０１９５】
システム５０２１は、ネットワーク５０２９と通信する５０２８ことができるネットワーク・アダプタを介して、他のコンピュータ又はコンピュータ・ネットワークと通信することができる。例示的なネットワーク・アダプタは、通信チャネル、トークン・リング、イーサネット又はモデムである。代替的に、システム５０２１は、ＣＤＰＤ（セルラー・デジタル・パケット・データ）カードのような無線インターフェースを用いて通信することもできる。システム５０２１は、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）又はシステム５０２１内のこうした他のコンピュータと関連付けることができ、又は、別のコンピュータ等とのクライアント／サーバ構成におけるクライアントとすることができる。これら構成の全て、並びに、適切な通信ハードウェア及びソフトウェアは、当技術分野において周知である。
【０１９６】
図２０は、１つ又は複数の実施形態を実施することができるデータ処理ネットワーク５０４０を示す。データ処理ネットワーク５０４０は、各々が複数の個々のワークステーション５０４１、５０４２、５０４３、５０４４を含むことができる、無線ネットワーク及び有線ネットワークのような複数の個々のネットワークを含むことができる。さらに、当業者であれば理解するように、１つ又は複数のＬＡＮを含ませることができ、そこで、ＬＡＮは、ホスト・プロセッサに結合された複数のインテリジェント・ワークステーションを含むことができる。
【０１９７】
さらに図２０を参照すると、ネットワークはまた、ゲートウェイ・コンピュータ（クライアント・サーバ５０４６）、又はアプリケーション・サーバ（データ・リポジトリにアクセスすることができ、かつ、ワークステーション５０４５から直接アクセスすることもできる遠隔サーバ５０４８）のような、メインフレーム・コンピュータ又はサーバを含むこともできる。ゲートウェイ・コンピュータ５０４６は、各々の個々のネットワークへの入力点のとして働く。ゲートウェイは、１つのネットワーク・プロトコルを別のものに接続するときに必要とされる。ゲートウェイ５０４６は、通信リンクによって別のネットワーク（例えば、インターネット５０４７）に結合できることが好ましい。ゲートウェイ５０４６はまた、通信リンクを用いて、１つ又は複数のワークステーション５０４１、５０４２、５０４３、５０４４に直接結合することもできる。ゲートウェイ・コンピュータは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なＩＢＭ  Ｐｏｗｅｒ  Ｓｙｓｔｅｍｓサーバ及びＩＢＭ  Ｓｙｓｔｅｍ  ｚサーバの一方を用いて実装することができる。
【０１９８】
図１９及び図２０を同時に参照すると、１つ又は複数の態様を具体化することができるソフトウェア・プログラム・コード５０３１には、一般的に、ＣＤ−ＲＯＭドライブ又はハードドライブといった長期ストレージ媒体５０２７から、システム５０２０のプロセッサ５０２６によってアクセスすることができる。ソフトウェア・プログラム・コードは、ディスケット、ハードドライブ、又はＣＤ−ＲＯＭといった、データ処理システムと共に用いるための種々の周知の媒体のいずれかの上で具体化することができる。コードは、そのような媒体上で分散させても、又はメモリからユーザ５０５０、５０５１に分散させても、又は、こうした他のシステムのユーザが用いるために、ネットワーク上の１つのコンピュータ・システムのメモリ若しくはストレージから他のコンピュータ・システムに分散させてもよい。
【０１９９】
代替的に、プログラム・コードをメモリ５０２５内で具体化し、プロセッサ・バスを用いてプロセッサ５０２６によってプログラム・コードにアクセスすることができる。このようなプログラム・コードは、種々のコンピュータ・コンポーネント及び１つ又は複数のアプリケーション・プログラム５０３２の機能及び相互作用を制御するオペレーティング・システムを含む。プログラム・コードは、通常、ストレージ媒体５０２７から高速メモリ５０２５にページングされ、そこでプロセッサ５０２６による処理のために利用可能になる。ソフトウェア・プログラム・コードをメモリ内、物理的媒体上で具体化し、及び／又は、ネットワークを介してソフトウェア・コードを配布する技術及び方法は周知であり、ここではこれ以上論じない。プログラム・コードは、有形の媒体（これらに限定されるものではないが、電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含む）に格納されたとき、「コンピュータ・プログラム」と呼ばれることが多い。コンピュータ・プログラム媒体は、典型的には、処理回路による実行のために、好ましくはコンピュータ・システム内の処理回路によって読み取り可能である。
【０２００】
プロセッサが最も容易に利用できるキャッシュ（通常、プロセッサの他のキャッシュよりも高速で小さい）は、最下位（Ｌ１又はレベル１）のキャッシュであり、主ストア（主メモリ）は、最上位レベルのキャッシュ（３つのレベルがある場合にはＬ３）である。最下位レベルのキャッシュは、実行されるマシン命令を保持する命令キャッシュ（Ｉ−キャッシュ）と、データ・オペランドを保持するデータ・キャッシュ（Ｄ−キャッシュ）とに分割されることが多い。
【０２０１】
図２１を参照すると、プロセッサ５０２６についての例示的なプロセッサの実施形態が示される。典型的には、メモリ・ブロックをバッファに入れてプロセッサ性能を向上させるために、１つ又は複数のレベルのキャッシュ５０５３が用いられる。キャッシュ５０５３は、用いられる可能性が高いメモリ・データのキャッシュ・ラインを保持する高速バッファである。典型的なキャッシュ・ラインは、６４バイト、１２８バイト、又は２５６バイトのメモリ・データである。データをキャッシュに入れるのではなく、命令をキャッシュに入れるために、別個のキャッシュが用いられることが多い。キャッシュ・コヒーレンス（メモリ及びキャッシュ内のラインのコピーの同期）は、多くの場合、当技術分野において周知の種々の「スヌープ」アルゴリズムによって与えられる。プロセッサ・システムの主メモリ・ストレージ５０２５は、キャッシュと呼ばれることが多い。４つのレベルのキャッシュ５０５３を有するプロセッサ・システムにおいて、主ストレージ５０２５は、典型的にはより高速であり、かつ、コンピュータ・システムが利用できる不揮発性ストレージ（ＤＡＳＤ、テープ等）の一部だけを保持するので、レベル５（Ｌ５）のキャッシュと呼ばれることがある。主ストレージ５０２５は、オペレーティング・システムによって主ストレージ５０２５との間でページングされるデータのページを「キャッシュに入れる」。
【０２０２】
プログラム・カウンタ（命令カウンタ）５０６１は、実行される現行の命令のアドレスを常時監視している。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサのプログラム・カウンタは６４ビットであり、従来のアドレッシング制限をサポートするために、３１ビット又は２４ビットに切り捨てることができる。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅプロセッサのプログラム・カウンタは、６４ビットであり、従来のアドレッシング制限をサポートするために、３２ビットに切り捨てることができる。プログラム・カウンタは、典型的には、コンテキスト・スイッチの際に持続するように、コンピュータのＰＳＷ（プログラム状況ワード）内で具体化される。従って、例えば、オペレーティング・システムにより、プログラム・カウンタ値を有する進行中のプログラムに割り込みをかけることが可能である（プログラム環境からオペレーティング・システム環境へのコンテキスト・スイッチ）。プログラムのＰＳＷは、プログラムがアクティブでない間、プログラム・カウンタ値を保持し、オペレーティング・システムが実行されている間、オペレーティング・システムの（ＰＳＷ内の）プログラム・カウンタが用いられる。典型的には、プログラム・カウンタは、現行の命令のバイト数に等しい量だけインクリメントされる。ＲＩＳＣ（Reduced Instruction Set Computing）命令は、典型的には固定長であり、ＣＩＳＣ（Complex Instruction Set Computing）命令は、典型的には可変長である。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの命令は、２バイト、４バイト、又は６バイトの長さを有するＣＩＳＣ命令である。ＩＢＭ  Ｐｏｗｅｒ  ＩＳＡの命令は、４バイトの長さを有するＲＩＳＣ命令である。例えば、コンテキスト・スイッチ操作又は分岐命令の分岐成立操作により、プログラム・カウンタ５０６１が変更される。コンテキスト・スイッチ操作において、現行のプログラム・カウンタ値は、実行されるプログラムについての他の状態情報（条件コードのような）と共にプログラム状況ワード内に保存され、実行される新しいプログラム・モジュールの命令を指し示す新しいプログラム・カウンタ値がロードされる。分岐成立操作を行い、分岐命令の結果をプログラム・カウンタ５０６１にロードすることにより、プログラムが判断を下すこと又はプログラム内でループすることを可能にする。
【０２０３】
典型的には、プロセッサ５０２６の代わりに命令をフェッチするために、命令フェッチ・ユニット５０５５が用いられる。フェッチ・ユニットは、「次の順次命令」、分岐成立命令のターゲット命令、又はコンテキスト・スイッチの後のプログラムの最初の命令のいずれかをフェッチする。今日の命令フェッチ・ユニットは、プリフェッチされた命令を用いることができる可能性に基づいて、命令を投機的にプリフェッチするプリフェッチ技術を用いることが多い。例えば、フェッチ・ユニットは、次の順次命令を含む１６バイトの命令と、付加的なバイトの更なる順次命令とをフェッチすることができる。
【０２０４】
次いで、フェッチされた命令が、プロセッサ５０２６によって実行される。１つの実施形態において、フェッチされた命令は、フェッチ・ユニットのディスパッチ・ユニット５０５６に渡される。ディスパッチ・ユニットは命令をデコードし、デコードされた命令についての情報を適切なユニット５０５７、５０５８、５０６０に転送する。実行ユニット５０５７は、典型的には、命令フェッチ・ユニット５０５５からデコードされた算術命令についての情報を受け取り、命令のオペコードに従ってオペランドに関する算術演算を行う。オペランドは、好ましくは、メモリ５０２５、アーキテクチャ化レジスタ５０５９、又は実行される命令の即値フィールドのいずれかから、実行ユニット５０５７に与えられる。実行の結果は、格納された場合には、メモリ５０２５、レジスタ５０５９、又は他のマシン・ハードウェア（制御レジスタ、ＰＳＷレジスタなどのような）内に格納される。
【０２０５】
仮想アドレスは、動的アドレス変換５０６２、及び随意的に、アクセス・レジスタ変換５０６３を用いて、実アドレスに変換される。
【０２０６】
プロセッサ５０２６は、典型的には、命令の機能を実行するための１つ又は複数の実行ユニット５０５７、５０５８、５０６０を有する。図２２を参照すると、実行ユニット５０５７は、インターフェース論理５０７１を介して、アーキテクチャ化された汎用レジスタ５０５９、デコード／ディスパッチ・ユニット５０５６、ロード・ストア・ユニット５０６０、及び他のプロセッサ・ユニット５０６５と通信することができる。実行ユニット５０５７は、幾つかのレジスタ回路５０６７、５０６８、５０６９を用いて、算術論理演算ユニット（ＡＬＵ）５０６６が動作する情報を保持することができる。ＡＬＵは、加算、減算、乗算、及び除算などの算術演算、並びに、論理積、論理和、及び排他的論理和、ローテート及びシフトのような論理関数を実行する。ＡＬＵは、設計に依存する専用の演算をサポートすることが好ましい。他の回路は、例えば条件コード及び回復サポート論理を含む、他のアーキテクチャ化ファシリティ５０７２を提供することができる。典型的には、ＡＬＵ演算の結果は、出力レジスタ回路５０７０に保持され、この出力レジスタ回路５０７０が、結果を種々の他の処理機能に転送することができる。多数のプロセッサ・ユニットの構成が存在し、本説明は、１つの実施形態の代表的な理解を与えることのみを意図している。
【０２０７】
例えばＡＤＤ命令は、算術及び論理機能を有する実行ユニット５０５７で実行され、一方、例えば浮動小数点命令は、特化された浮動小数点能力を有する浮動小数点実行部で実行される。実行ユニットは、オペランドに対してオペコードが定めた関数を行うことにより、命令が特定したオペランドに対して動作することが好ましい。例えば、ＡＤＤ命令は、命令のレジスタ・フィールドによって特定された２つのレジスタ５０５９内に見出されるオペランドに対して、実行ユニット５０５７により実行することができる。
【０２０８】
実行ユニット５０５７は、２つのオペランドに対して算術加算を実行し、結果を第３オペランドに格納し、ここで第３オペランドは、第３のレジスタであっても又は２つのソース・レジスタのいずれかであってもよい。実行ユニットは、シフト、ローテート、論理積、論理和、及び排他的論理和のような種々の論理関数、並びに、加算、減算、乗算、除法のいずれかを含む、種々の代数関数を実行することができる算術論理演算ユニット（ＡＬＵ）５０６６を用いることが好ましい。スカラー演算のために設計されたＡＬＵ５０６６もあり、浮動小数点のために設計されたものＡＬＵ５０６６もある。データは、アーキテクチャに応じて、ビッグ・エンディアン（最下位のバイトが最も高いバイト・アドレスである）、又はリトル・エンディアン（最下位のバイトが最も低いバイト・アドレスである）とすることができる。ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅは、ビッグ・エンディアンである。ＩＢＭ  Ｐｏｗｅｒ  ＩＳＡは、ビッグ・エンディアン及びリトル・エンディアン実行モードの両方をサポートする。符号付きフィールドは、アーキテクチャに応じて、符号及び大きさ、１の補数、又は２の補数とすることができる。２の補数における負の値又は正の値は、ＡＬＵ内で加法しか必要としないため、ＡＬＵが減算能力を設計する必要がないという点で、２の補数は有利である。数値は、通常、省略表現で記述され、１２ビット・フィールドは、４，０９６バイトブロックのアドレスを定め、通常、例えば４Ｋバイト（キロバイト）ブロックのように記述される。
【０２０９】
図２３を参照すると、分岐命令を実行するための分岐命令情報が、典型的には、分岐ユニット５０５８に送られ、この分岐ユニット５０５８は、多くの場合、分岐履歴テーブル５０８２のような分岐予測アルゴリズムを用いて、他の条件付き演算が完了する前に分岐の結果を予測する。条件付き演算が完了する前に、現行の分岐命令のターゲットがフェッチされ、投機的に実行される。条件付き演算が完了すると、投機的に実行された分岐命令は、条件付き演算の条件及び投機された結果に基づいて、完了されるか又は破棄される。典型的な分岐命令は、条件コードを試験し、条件コードが分岐命令の分岐要件を満たす場合、ターゲット・アドレスに分岐することができ、ターゲット・アドレスは、例えば、命令のレジスタ・フィールド又は即値フィールド内に見出されるものを含む幾つかの数に基づいて計算することができる。分岐ユニット５０５８は、複数の入力レジスタ回路５０７５、５０７６、５０７７と、出力レジスタ回路５０８０とを有するＡＬＵ５０７４を用いることができる。分岐ユニット５０５８は、例えば、汎用レジスタ５０５９、デコード・ディスパッチ・ユニット５０５６、又は他の回路５０７３と通信すること５０８１ができる。
【０２１０】
例えば、オペレーティング・システムによって開始されるコンテキスト・スイッチ、コンテキスト・スイッチを発生させるプログラム例外又はエラー、コンテキスト・スイッチを発生させるＩ／Ｏ割り込み信号、又は（マルチスレッド環境における）複数のプログラムのマルチスレッド活動を含む様々な理由により、命令のグループの実行に割り込みがかけられることがある。コンテキスト・スイッチ動作は、現在実行中のプログラムについての状態情報を保存し、次いで、起動される別のプログラムについての状態情報をロードすることが好ましい。状態情報は、例えば、ハードウェア・レジスタ又はメモリ内に保存することができる。状態情報は、実行される次の命令を指し示すプログラム・カウンタ値と、条件コードと、メモリ変換情報と、アーキテクチャ化されたレジスタの内容とを含むことが好ましい。コンテキスト・スイッチの活動は、ハードウェア回路、アプリケーション・プログラム、オペレーティング・システム・プログラム、又はファームウェア・コード（マイクロコード、ピココード、又はライセンス内部コード（ＬＩＣ））単独で又はその組み合わせで実施することができる。
【０２１１】
プロセッサは、命令により定義された方法に従ってオペランドにアクセスする。命令は、命令の一部の値を用いて即値オペランドを与えることができ、汎用レジスタ又は専用レジスタ（例えば、浮動小数点レジスタ）のいずれかを明示的に指し示す１つ又は複数のレジスタ・フィールドを与えることができる。命令は、オペコード・フィールドによって、オペランドとして識別されるインプライド・レジスタを用いることができる。命令は、オペランドのためのメモリ位置を用いることができる。命令がベース・レジスタ、インデックス・レジスタ、及び即値フィールド（変位フィールド）を定め、これらを互いに付加してメモリ内のオペランドのアドレスをもたらすｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの長変位ファシリティ、又は、Ｄ−形式のアドレスがベース・レジスタ及び即値フィールド（変位フィールド）を定め、これらを互いに付加してメモリ内のオペランドのアドレスをもたらし、かつ、Ｘ−形式のアドレスがベース・レジスタ及びインデックス・レジスタを定め、これらが互いに加えられてメモリ内のオペランドのアドレスをもたらす、Ｐｏｗｅｒ  ＩＳＡアドレッシング・モードにより例示されるように、オペランドのメモリ位置を、レジスタ、即値フィールド、又はレジスタと即値フィールドの組み合わせによって与えることができる。ここでの位置は、典型的には、特に断りのない限り、主メモリ（主ストレージ）内の記憶位置を意味する。
【０２１２】
図２４を参照すると、プロセッサは、ロード／ストア・ユニット５０６０を用いて、ストレージにアクセスする。ロード／ストア・ユニット５０６０は、メモリ５０２５内のターゲット・オペランドのアドレスを取得し、オペランドをレジスタ５０５９又は別のメモリ５０２５の記憶位置にロードすることによってロード操作を行うことができ、或いは、メモリ５０２５内のターゲット・オペランドのアドレスを取得し、レジスタ５０５９又は別のメモリ５０２５の記憶位置から取得したデータをメモリ５０２５内のターゲット・オペランドの記憶位置に格納することによって、ストア操作を行うことができる。ロード／ストア・ユニット５０６０は、投機的なものであってもよく、命令シーケンスに対してアウト・オブ・オーダー式の順序でメモリにアクセスすることができるが、プログラムに対して、命令がインオーダー式に実行されたという外観を維持することになる。ロード／ストア・ユニット５０６０は、汎用レジスタ５０５９、デコード／ディスパッチ・ユニット５０５６、キャッシュ／メモリ・インターフェース５０５３、又は他の要素５０８３と通信することができ、ストレージ・アドレスを計算し、かつ、パイプライン処理を順に行って操作をインオーダー式に保持するための、種々のレジスタ回路、ＡＬＵ５０８５、及び制御論理５０９０を含む。一部の動作は、アウト・オブ・オーダー式とすることができるが、ロード／ストア・ユニットは、アウト・オブ・オーダー式動作が、プログラムに対して、当技術分野において周知のようなインオーダー式に実行されたように見えるようにする機能を提供する。
【０２１３】
好ましくは、アプリケーション・プログラムが「見ている」アドレスは、仮想アドレスと呼ばれることが多い。仮想アドレスは、「論理アドレス」及び「実効アドレス」と呼ばれることもある。これらの仮想アドレスは、これらに限定されるものではないが、単に仮想アドレスをオフセット値にプリフィックス付加すること、１つ又は複数の変換テーブルを介して仮想アドレスを変換することを含む、種々の動的アドレス変換（ＤＡＴ）技術の１つによって、物理的メモリ位置にリダイレクトされるという点で仮想のものであり、変換テーブルは、少なくともセグメント・テーブル及びページ・テーブルを単独で又は組み合わせて含むことが好ましく、セグメント・テーブルは、ページ・テーブルを指し示すエントリを有することが好ましい。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、領域第１テーブル、領域第２テーブル、領域第３テーブル、セグメント・テーブル、及び随意的なページ・テーブルを含む、変換の階層構成が提供される。アドレス変換の性能は、仮想アドレスを関連した物理的メモリ位置にマッピングするエントリを含む変換ルックアサイド・バッファ（ＴＬＢ）を用いることにより改善されることが多い。ＤＡＴが変換テーブルを用いて仮想アドレスを変換したときに、エントリが作成される。次いで、後に仮想アドレスを用いることで、低速の順次変換テーブル・アクセスではなく、高速のＴＬＢのエントリを用いることが可能になる。ＴＬＢの内容は、ＬＲＵ（Least Recently used：最長時間未使用）を含む種々の置換アルゴリズムによって管理することができる。
【０２１４】
プロセッサがマルチプロセッサ・システムのプロセッサである場合には、各プロセッサは、コヒーレンシのために、Ｉ／Ｏ、キャッシュ、ＴＬＢ、及びメモリといった共有リソースをインターロック状態に保持する責任を負う。キャッシュ・コヒーレンシを保持する際に、一般的には「スヌープ」技術が用いられる。スヌープ環境においては、共有を容易にするために、各キャッシュ・ラインを、共有状態、排他的状態、変更状態、無効状態等のいずれか１つの状態にあるものとしてマーク付けすることができる。
【０２１５】
Ｉ／Ｏユニット５０５４（図２１）は、プロセッサに、例えば、テープ、ディスク、プリンタ、ディスプレイ、及びネットワークを含む周辺機器に取り付けるための手段を与える。Ｉ／Ｏユニットは、ソフトウェア・ドライバによってコンピュータ・プログラムに提示されることが多い。ＩＢＭによるＳｙｓｔｅｍ  ｚのようなメインフレームにおいては、チャネル・アダプタ及びオープン・システム・アダプタが、オペレーティング・システムと周辺機器との間に通信をもたらすメインフレームのＩ／Ｏユニットである。ＩＢＭ（登録商標）からのＰｏｗｅｒ  ＳｙｓｔｅｍｓのようなＲＩＳＣサーバにおいて、専用アダプタ及びオープン・システム・アダプタは、オペレーティング・システムと周辺機器との間の通信を与えるＩ／Ｏユニットである。
【０２１６】
さらに、他のタイプのコンピューティング環境が、１つ又は複数の態様から利益を得ることができる。一例として、環境は、特定のアーキテクチャ（例えば、命令実行、アドレス変換などのアーキテクチャ化された機能、及びアーキテクチャ化されたレジスタを含む）又はそのサブセットをエミュレートする（例えば、プロセッサ及びメモリを有するネイティブ・コンピュータ・システム上で）エミュレータ（例えば、ソフトウェア又は他のエミュレーション機構）を含むことができる。このような環境においては、エミュレータを実行しているコンピュータが、エミュレートされる機能とは異なるアーキテクチャを有することができたとしても、エミュレータの１又は複数のエミュレーション機能により、１つ又は複数の実施形態が実施され得る。一例として、エミュレーション・モードにおいては、エミュレートされる特定の命令又は操作がデコードされ、適切なエミュレーション機能が構築され、個々の命令又は操作を実施する。
【０２１７】
エミュレーション環境においては、ホスト・コンピュータは、例えば、命令及びデータを格納するためのメモリと、メモリから命令をフェッチし、随意的に、フェッチされた命令のためのローカル・バッファリングを提供するための命令フェッチ・ユニットと、フェッチされた命令を受信し、フェッチされた命令のタイプを判断するための命令デコード・ユニットと、命令を実行するための命令実行ユニットとを含む。実行は、データをメモリからレジスタ内にロードすること、データをレジスタから再びメモリに格納すること、又はデコード・ユニットにより判断されるように、何らかのタイプの算術演算又は論理演算を実行することを含むことができる。一例においては、各ユニットは、ソフトウェアで実装される。例えば、ユニットが実行する演算は、エミュレータ・ソフトウェア内の１つ又は複数のサブルーチンとして実装される。
【０２１８】
より具体的には、メインフレームにおいて、アーキテクチャ化されたマシン命令は、通常、プログラマによって、多くの場合コンパイラ・アプリケーションを介して、今日では「Ｃ」プログラマによって用いられる。ストレージ媒体内に格納されたこれらの命令は、Ｐｏｗｅｒ  Ｓｙｓｔｅｍｓ又はｚ／ＡｒｃｈｉｔｅｃｔｕｒｅのＩＢＭ（登録商標）サーバにおいて、又は代替的に他のアーキテクチャを実行するマシンにおいて、ネイティブに実行することができる。これらの命令は、既存の及び将来のＩＢＭ（登録商標）メインフレーム・サーバ、Ｐｏｗｅｒ  Ｓｙｓｔｅｍサーバにおいて、及び、ＩＢＭ（登録商標）の他のマシン（例えば、Ｓｙｓｔｅｍ  ｘサーバ）上で、エミュレートすることができる。これらの命令は、ＩＢＭ（登録商標）、Ｉｎｔｅｌ（登録商標）、ＡＭＤなどによって製造されたハードウェアを用いて種々のマシン上でＬｉｎｕｘを実行しているマシンにおいて実行することができる。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ又はｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ下でそのハードウェア上で実行することに加えて、Ｌｉｎｕｘを用いること、並びに、一般に実行がエミュレーション・モードにあるＨｅｒｃｕｌｅｓ、ＵＭＸ、又はＦＳＩ（Ｆｕｎｄａｍｅｎｔａｌ  Ｓｏｆｔｗａｒｅ，Ｉｎｃ）によるエミュレーションを用いるマシンを用いることもできる。エミュレーション・モードにおいては、ネイティブ・プロセッサによって、エミュレーション・ソフトウェアが実行され、エミュレートされたプロセッサのアーキテクチャをエミュレートする。
【０２１９】
ネイティブ・プロセッサは、一般的に、エミュレートされたプロセッサのエミュレーションを実行するためにファームウェア又はネイティブ・オペレーティング・システムのいずれかを含むエミュレーション・ソフトウェアを実行する。エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャの命令のフェッチと実行を担当する。エミュレーション・ソフトウェアは、エミュレートされたプログラム・カウンタを維持し、命令境界を常時監視している。エミュレーション・ソフトウェアは、一度に１つ又は複数のエミュレートされたマシン命令をフェッチし、ネイティブ・プロセッサにより実行するために、その１つ又は複数のエミュレートされたマシン命令を、対応するネイティブマシン命令のグループに変換することができる。これらの変換された命令は、より速い変換を達成できるようにキャッシュに入れることができる。それにも関わらず、エミュレーション・ソフトウェアは、エミュレートされたプロセッサ・アーキテクチャのアーキテクチャ規則を維持して、オペレーティング・システム及びエミュレートされたプロセッサのために書かれたアプリケーションが正確に動作することを保証しなければならない。さらに、エミュレーション・ソフトウェアは、これらに限定されるものではないが、制御レジスタ、汎用レジスタ、浮動小数点レジスタ、例えばセグメント・テーブル及びページ・テーブルを含む動的アドレス変換機能、割り込み機構、コンテキスト・スイッチ機構、時刻（ＴＯＤ）クロック、及びＩ／Ｏサブシステムへのアーキテクチャ化インターフェースを含む、エミュレートされたプロセッサのアーキテクチャによって識別されるリソースを提供し、オペレーティング・システム又はエミュレートされたプロセッサ上で実行するように設計されたアプリケーション・プログラムが、エミュレーション・ソフトウェアを有するネイティブ・プロセッサ上で実行することができる。
【０２２０】
エミュレートされた特定の命令がデコードされ、個々の命令の機能を実行するためのサブルーチンが呼び出される。エミュレートされたプロセッサの機能をエミュレートするエミュレーション・ソフトウェア機能は、例えば、「Ｃ」サブルーチン若しくはドライバにおいて、又は好ましい実施形態の説明を理解した後で当業者の技術の範囲内にあるような特定のハードウェアのためにドライバを提供する他の何らかの方法で実装される。Ｂｅａｕｓｏｌｅｉｌ他による「Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  ｆｏｒ  Ｈａｒｄｗａｒｅ  Ｅｍｕｌａｔｉｏｎ」という名称の特許文献１、Ｓｃａｌｚｉ他による「Ｐｒｅｐｒｏｃｅｓｓｉｎｇ  ｏｆ  Ｓｔｏｒｅｄ  Ｔａｒｇｅｔ  Ｒｏｕｔｉｎｅｓ  ｆｏｒ  Ｅｍｕｌａｔｉｎｇ  Ｉｎｃｏｍｐａｔｉｂｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  Ｔａｒｇｅｔ  Ｐｒｏｃｅｓｓｏｒ」という名称の特許文献２、Ｄａｖｉｄｉａｎ他による「Ｄｅｃｏｄｉｎｇ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎ  ｔｏ  Ｄｉｒｅｃｔｌｙ  Ａｃｃｅｓｓ  Ｅｍｕｌａｔｉｏｎ  Ｒｏｕｔｉｎｅｓ  ｔｈａｔ  Ｅｍｕｌａｔｅ  ｔｈｅ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ」という名称の特許文献３、Ｇｏｒｉｓｈｅｋ他による「Ｓｙｍｍｅｔｒｉｃａｌ  Ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ  Ｂｕｓ  ａｎｄ  Ｃｈｉｐｓｅｔ  Ｕｓｅｄ  ｆｏｒ  Ｃｏｐｒｏｃｅｓｓｏｒ  Ｓｕｐｐｏｒｔ  Ａｌｌｏｗｉｎｇ  Ｎｏｎ−Ｎａｔｉｖｅ  Ｃｏｄｅ  ｔｏ  Ｒｕｎ  ｉｎ  ａ  Ｓｙｓｔｅｍ」という名称の特許文献４、Ｌｅｔｈｉｎ他による「Ｄｙｎａｍｉｃ  Ｏｐｔｉｍｉｚｉｎｇ  Ｏｂｊｅｃｔ  Ｃｏｄｅ  Ｔｒａｎｓｌａｔｏｒ  ｆｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｅｍｕｌａｔｉｏｎ  ａｎｄ  Ｄｙｎａｍｉｃ  Ｏｐｔｉｍｉｚｉｎｇ  Ｏｂｊｅｃｔ  Ｃｏｄｅ  Ｔｒａｎｓｌａｔｉｏｎ  Ｍｅｔｈｏｄ」という名称の特許文献５、Ｅｒｉｃ  Ｔｒａｕｔによる「Ｍｅｔｈｏｄ  ｆｏｒ  Ｅｍｕｌａｔｉｎｇ  Ｇｕｅｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  ｏｎ  ａ  Ｈｏｓｔ  Ｃｏｍｐｕｔｅｒ  Ｔｈｒｏｕｇｈ  Ｄｙｎａｍｉｃ  Ｒｅｃｏｍｐｉｌａｔｉｏｎ  ｏｆ  Ｈｏｓｔ  Ｉｎｓｔｒｕｃｔｉｏｎｓ」という名称の特許文献６及び他の多くを含むがこれらに限定されない、種々のソフトウェア及びハードウェア・エミュレーションの特許は、当業者が利用可能なターゲット・マシンのための異なるマシン用に設計された命令形式のエミュレーションを達成する様々な既知の方法を示す。
【０２２１】
図２５において、ホスト・アーキテクチャのホスト・コンピュータ・システム５０００’をエミュレートする、エミュレートされたホスト・コンピュータ・システム５０９２の一例が提供される。エミュレートされたホスト・コンピュータ・システム５０９２では、ホスト・プロセッサ（ＣＰＵ）５０９１は、エミュレートされたホスト・プロセッサ（又は、仮想ホスト・プロセッサ）であり、かつ、ホスト・コンピュータ５０００’のプロセッサ５０９１のものとは異なるネイティブな命令セット・アーキテクチャを有するエミュレーション・プロセッサ５０９３を含む。エミュレートされたホスト・コンピュータ・システム５０９２は、エミュレーション・プロセッサ５０９３がアクセス可能なメモリ５０９４を有する。例示的な施形態において、メモリ５０９４は、ホスト・コンピュータ・メモリ５０９６の部分と、エミュレーション・ルーチン５０９７の部分とにパーティション化される。ホスト・コンピュータ・メモリ５０９６は、ホスト・コンピュータ・アーキテクチャに従い、エミュレートされたホスト・コンピュータ・システム５０９２のプログラムに利用可能である。エミュレーション・プロセッサ５０９３は、エミュレートされたプロセッサ５０９１のもの以外のアーキテクチャのアーキテクチャ化された命令セットのネイティブ命令を実行し、このネイティブ命令はエミュレーション・ルーチン・メモリ５０９７から取得されたものであり、かつ、エミュレーション・プロセッサ５０９３は、シーケンス及びアクセス／デコード・ルーチンにおいて取得される１つ又は複数の命令を用いることにより、ホスト・コンピュータ・メモリ５０９６の中のプログラム由来の実行のためのホスト命令にアクセスすることができ、このシーケンス及びアクセス／デコード・ルーチンは、アクセスされたホスト命令をデコードして、アクセスされたホスト命令の機能をエミュレートするためのネイティブ命令実行ルーチンを判断することができる。ホスト・コンピュータ・システム５０００’のアーキテクチャのために定められた、例えば、汎用レジスタ、制御レジスタ、動的アドレス変換、及びＩ／Ｏサブシステムのサポート、並びにプロセッサ・キャッシュといったファシリティを含む他のファシリティを、アーキテクチャ化ファシリティ・ルーチンによってエミュレートすることができる。エミュレーション・ルーチンは、エミュレーション・ルーチンの性能を高めるために、エミュレーション・プロセッサ５０９３において利用可能な（汎用レジスタ、及び仮想アドレスの動的変換といった）機能を利用することもできる。ホスト・コンピュータ５０００’の機能をエミュレートする際にプロセッサ５０９３を補助するために、専用のハードウェア及びオフ・ロード・エンジンを設けることもできる。
【０２２２】
更に別の実施形態において、１つ又は複数の態様は、クラウド・コンピューティングに関する。本開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で述べられる教示の実装は、クラウド・コンピューティング環境に限定されるものではないことが予め理解される。むしろ、本発明の実施形態は、現在知られている又は後に開発される他のいずれかのタイプのコンピューティング環境と併せて実装することができる。
【０２２３】
クラウド・コンピューティングは、最小限の管理労力又はサービス・プロバイダとの対話で迅速にプロビジョニング及び解放することができる構成可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス）の共有プールへの、便利なオンデマンドのネットワーク・アクセスを可能にするサービス配信のモデルである。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、及び少なくとも４つの配備モデルを含むことができる。
【０２２４】
特徴は、以下の通りである。
オンデマンド・セルフサービス：クラウド・コンシューマは、必要に応じて、サーバ時間及びネットワーク・ストレージ等のコンピューティング機能を、人間がサービスのプロバイダと対話する必要なく自動的に、一方的にプロビジョニングすることができる。
広範なネットワーク・アクセス：機能は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、及びＰＤＡ）による使用を促進する標準的な機構を通じてアクセスされる。
リソースのプール化：プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、異なる物理及び仮想リソースを要求に応じて動的に割り当て及び再割り当てすることにより、複数のコンシューマにサービスを提供するためにプールされる。コンシューマは、一般に、提供されるリソースの正確な位置についての制御又は知識を持たないが、より高レベルの抽象化では位置（例えば、国、州、又はデータセンタ）を特定できる場合があるという点で、位置とは独立しているといえる。
迅速な弾力性：機能は、迅速かつ弾力的に、幾つかの場合自動的に、プロビジョニングして素早くスケール・アウトし、迅速にリリースして素早くスケール・インさせることができる。コンシューマにとって、プロビジョニングに利用可能なこれらの機能は、多くの場合、無制限であり、いつでもどんな量でも購入できるように見える。
サービスの測定：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント）に適した何らかの抽象化レベルでの計量機能を用いることによって、リソースの使用を自動的に制御及び最適化する。リソース使用を監視し、制御し、報告し、利用されるサービスのプロバイダとコンシューマの両方に対して透明性をもたらすことができる。
【０２２５】
サービス・モデルは以下の通りである。
Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）：クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用するために、コンシューマに提供される機能である。これらのアプリケーションは、ウェブ・ブラウザ（例えば、ウェブ・ベースの電子メール）などのシン・クライアント・インターフェースを通じて、種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ固有のアプリケーション構成設定の考え得る例外として、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション機能をも含めて、基礎をなすクラウド・インフラストラクチャを管理又は制御しない。
Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＰａａＳ）：プロバイダによってサポートされるプログラミング言語及びツールを用いて生成された、コンシューマが生成した又は取得したアプリケーションを、クラウド・インフラストラクチャ上に配備するために、コンシューマに提供される機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージなどの基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、配備されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成に対して制御を有する。
Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＩａａＳ）：コンシューマが、オペレーティング・システム及びアプリケーションを含み得る任意のソフトウェアを配備及び動作させることができる、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースをプロビジョニンングするために、コンシューマに提供される機能である。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理又は制御しないが、オペレーティング・システム、ストレージ、配備されたアプリケーションに対する制御、及び場合によってはネットワーク・コンポーネント（例えば、ホストのファイアウォール）選択の限定された制御を有する。
【０２２６】
配備モデルは以下の通りである。
プライベート・クラウド：クラウド・インフラストラクチャは、ある組織のためだけに運営される。このクラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
コミュニティ・クラウド：クラウド・インフラストラクチャは、幾つかの組織によって共有され、共通の関心事項（例えば、任務、セキュリティ要件、ポリシー、及びコンプライアンス上の考慮事項）を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、構内又は構外に存在することができる。
パブリック・クラウド：クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループに利用可能であり、クラウド・サービスを販売する組織によって所有される。
ハイブリッド・クラウド：クラウド・インフラストラクチャは、固有のエンティティのままであるが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術（例えば、クラウド間の負荷分散のためのクラウド・バースティング）によって結び付けられる２つ又はそれより多いクラウド（プライベート、コミュニティ、又はパブリック）の混成物である。
【０２２７】
クラウド・コンピューティング環境は、無国籍性、低結合性、モジュール性、及びセマンティック相互運用性に焦点を置くことを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【０２２８】
ここで図２６を参照すると、クラウド・コンピューティング・ノードの一例の概略図が示される。クラウド・コンピューティング・ノード６０１０は、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用又は機能の範囲に対するいずれかの制限を示唆することを意図するものではない。上記に関係なく、クラウド・コンピューティング・ノード６０１０は、本明細書で上述された機能のいずれかを実装及び／又は実施することができる。
【０２２９】
クラウド・コンピューティング・ノード６０１０には、他の多数の汎用又は専用コンピューティング・システム環境又は構成で動作可能な、コンピュータ・システム／サーバ６０１２が存在する。コンピュータ・システム／サーバ６０１２と共に用いるのに好適な周知のコンピューティング・システム、環境、及び／又は構成の例としては、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステム又はデバイス等のいずれかを含む分散型クラウド・コンピューティング環境が含まれる。
【０２３０】
コンピュータ・システム／サーバ６０１２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム／サーバ６０１２は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体に配置することができる。
【０２３１】
図２６に示されるように、クラウド・コンピューティング・ノード６０１０のコンピュータ・システム／サーバ６０１２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ６０１２のコンポーネントは、これらに限定されるものではないが、１つ又は複数のプロセッサ又は処理ユニット６０１６、システム・メモリ６０２８、及びシステム・メモリ６０２８を含む種々のシステム・コンポーネントをプロセッサ６０１６に結合するバス６０１８を含むことができる。
【０２３２】
バス６０１８は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの１つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ、ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、及びＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスを含む。
【０２３３】
コンピュータ・システム／サーバ６０１２は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ６０１２がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【０２３４】
システム・メモリ６０２８は、ランダム・アクセス・メモリ（ＲＡＭ）６０３０及び／又はキャッシュ・メモリ６０３２など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ６０１２は、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体（図示されておらず、典型的には「ハードドライブ」と呼ばれる）との間の読み出し及び書き込みのために、ストレージ・システム６０３４を設けることができる。図示されないが、取り外し可能な不揮発性磁気ディスク（例えば、「フレキシブル・ディスク」）との間の読み出し及び書き込みのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、１つ又は複数のデータ媒体インターフェースによってバス６０１８に接続することができる。以下でさらに示され説明されるように、メモリ６０２８は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの組（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【０２３５】
限定ではなく例として、メモリ６０２８内に、プログラム・モジュール６０４２の組（少なくとも１つ）を有するプログラム／ユーティリティ６０４０、並びにオペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール６０４２は、一般に、本明細書で説明される本発明の実施形態の機能及び／又は方法を実行する。
【０２３６】
コンピュータ・システム／サーバ６０１２は、キーボード、ポインティング・デバイス、ディスプレイ６０２４等のような１つ又は複数の外部デバイス６０１４；ユーザがコンピュータ・システム／サーバ６０１２と対話することを可能にする１つ又は複数のデバイス；及び／又はコンピュータ・システム／サーバ６０１２が１つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス（例えば、ネットワーク・カード、モデムなど）と通信することもできる。このような通信は、入力／出力（Ｉ／Ｏ）インターフェース６０２２を経由して行うことができる。さらにまた、コンピュータ・システム／サーバ６０１２は、ネットワーク・アダプタ６０２０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用広域ネットワーク（ＷＡＮ）、及び／又はパブリック・ネットワーク（例えば、インターネット）などの１つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ６０２０は、バス６０１８を介して、コンピュータ・システム／サーバ６０１２の他のコンポーネントと通信する。図示されないが、コンピュータ・システム／サーバ６０１２と共に他のハードウェア及び／又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
【０２３７】
ここで図２７を参照すると、例示的なクラウド・コンピューティング環境６０５０が示される。示されるように、クラウド・コンピューティング環境６０５０は、例えば携帯情報端末（ＰＤＡ）又は携帯電話６０５４Ａ、デスクトップ・コンピュータ６０５４Ｂ、ラップトップ・コンピュータ６０５４Ｃ、及び／又は自動車コンピュータ・システム６０５４Ｎなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスと通信することができる、１つ又は複数のクラウド・コンピューティング・ノード６０１０を含む。ノード６０１０は、互いに通信することができる。これらのノードは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなど、１つ又は複数のネットワークにおいて物理的又は仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境６０５０は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、インフラストラクチャ、プラットフォーム、及び／又はソフトウェアを提供することが可能になる。図２７に示されるコンピューティング・デバイス６０５４Ａ−Ｎのタイプは単に例示であることを意図し、コンピューティング・ノード１０及びクラウド・コンピューティング環境６０５０は、いずれのタイプのネットワーク及び／又はネットワーク・アドレス指定可能な接続上でも（例えば、ウェブ・ブラウザを用いて）、いずれのタイプのコンピュータ化された装置とも通信できることを理解されたい。
【０２３８】
ここで図２８を参照すると、クラウド・コンピューティング環境６０５０（図２７）によって提供される機能抽象化層の組が示される。図２８に示されるコンポーネント、層、及び機能は単に例示であることを意図し、本発明の実施形態はそれらに限定されないことを予め理解されたい。図示されるように、以下の層及び対応する機能が提供される。
ハードウェア及びソフトウェア層６０６０は、ハードウェア及びソフトウェア・コンポーネントを含む。ハードウェア・コンポーネントの例として、ＩＢＭ（登録商標）ｚＳｅｒｉｅｓシステムを一例とするメインフレームと、ＩＢＭ（登録商標）  ｐＳｅｒｉｅｓシステムを一例とするＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒ（縮小命令セット・コンピュータ））アーキテクチャ・ベースのサーバと、ＩＢＭ（登録商標）  ｘＳｅｒｉｅｓ（登録商標）システムと、ＩＢＭ（登録商標）  ＢｌａｄｅＣｅｎｔｅｒ（登録商標）システムと、ストレージ・デバイスと、ネットワーク及びネットワーク・コンポーネントと、が含まれる。ソフトウェア・コンポーネントの例として、ＩＢＭ（登録商標）  ＷｅｂＳｐｈｅｒｅ（登録商標）アプリケーション・サーバ・ソフトウェアを一例とするネットワーク・アプリケーション・サーバ・ソフトウェアと、ＩＢＭ（登録商標）  ＤＢ２（登録商標）データベース・ソフトウェアを一例とするデータベース・ソフトウェアとが含まれる。（ＩＢＭ、ｚＳｅｒｉｅｓ、ｘＳｅｒｉｅｓ、ＢｌａｄｅＣｅｎｔｅｒ、ＷｅｂＳｐｈｅｒｅ、及びＤＢ２は、世界中の多数の管轄区域において登録されているインターナショナル・ビジネス・マシーンズ・コーポレーションの商標である。）
仮想化層６０６２は、抽象化層を提供し、この層により、仮想エンティティの以下の例、すなわち、仮想サーバ、仮想ストレージ、仮想プライベート・ネットワークを含む仮想ネットワーク、仮想アプリケーション及びオペレーティング・システム、並びに仮想クライアントを提供することができる。
【０２３９】
一例においては、管理層６０６０は、以下で説明される機能を提供することができる。リソース・プロビジョニングは、クラウド・コンピューティング環境内でタスクを実行するために利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格決定は、クラウド・コンピューティング環境内でリソースが利用される際のコスト追跡と、リソースの消費に対する課金又は請求とを提供する。１つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクに対する識別情報の検証と、データ及び他のリソースに対する保護とを提供する。ユーザ・ポータルは、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理は、要求されるサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント（Ｓｅｒｖｉｃｅ  Ｌｅｖｅｌ  Ａｇｒｅｅｍｅｎｔ、ＳＬＡ）の計画及び履行は、ＳＬＡに従って将来の要件が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【０２４０】
ワークロード層６０６６は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。この層から提供することができるワークロード及び機能の例には、マッピング及びナビゲーション、ソフトウェア開発及びライフサイクル管理、仮想教室教育配信、データ分析処理、及びトランザクション処理が含まれる。
【０２４１】
本明細書で用いられる用語は、特定の実施形態を説明する目的のためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、文脈が特に明示しない限り、複数形も同様に含むことを意図したものである。「含む（comprise）」及び／又は「含んでいる（comprising）」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、動作、要素、及び／又はコンポーネントの存在を指示するが、１つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、及び／又はそれらの群の存在又は追加を排除するものではないこともさらに理解されるであろう。
【０２４２】
以下の特許請求の範囲に存在する場合、「手段又はステップと機能との組合せ（ミーンズ又はステップ・プラス・ファンクション）」要素の対応する構造、材料、動作及び均等物は、明確に特許請求された他の請求要素と共に機能を実行するための任意の構造体、材料、又は行為を含むことを意図したものである。１つ又は複数の実施形態の説明は、例証及び説明のためだけに提示されたものであり、網羅的であること又は本発明を開示した形態に限定することを意図したものではない。当業者には、本発明の範囲から逸脱しない多くの修正物及び変形物が明らかとなるであろう。実施形態は、本発明の原理及び実際の用途を最もよく説明するため、及び、当業者が、企図した特定の用途に適するように種々の修正を有する種々の実施形態に関して本発明を理解することができるように、選択され記述された。
【符号の説明】
【０２４３】
１００、１５０、３００：コンピューティング環境
１０２：中央プロセッサ・コンプレックス（ＣＰＣ）
１０４、１５４：プロセッサ・メモリ
１０６、２１４：入力／出力（Ｉ／Ｏ）デバイス
１０８：制御ユニット
１１０、２０２：中央プロセッサ
１１１、２１２：入力／出力サブシステム
１１２：論理パーティション
１２０：アプリケーション
１２２：オペレーティング・システム
１５２：中央プロセッサ・コンプレックス
１６２：仮想マシン
１６３：プロセッサ・ファームウェア
１６４：ホスト・ハイパーバイザ
１６５：プロセッサ・ファームウェア
１７２：ゲスト・オペレーティング・システム
２０６：キャッシュ
３０４：メモリ
３１１：Ｎｏ−ＤＡＴ（ＮＤＡＴ）ファシリティ
３１２：エミュレータ・コード
３５０：ゲスト命令
３５２：命令フェッチ・ルーチン
３５４：命令変換ルーチン
３５６：ネイティブ命令
３６０：エミュレーション制御ルーチン
１２００：コンピュータ・プログラム製品
【図１】
0006407299.tif 000007
【図２】
0006407299.tif 000008
【図３】
0006407299.tif 000009
【図４】
0006407299.tif 000010
【図５】
0006407299.tif 000011
【図６】
0006407299.tif 000012
【図７】
0006407299.tif 000013
【図８】
0006407299.tif 000014
【図９】
0006407299.tif 000015
【図１０】
0006407299.tif 000016
【図１１】
0006407299.tif 000017
【図１２】
0006407299.tif 000018
【図１３】
0006407299.tif 000019
【図１４】
0006407299.tif 000020
【図１５】
0006407299.tif 000021
【図１６】
0006407299.tif 000022
【図１７】
0006407299.tif 000023
【図１８】
0006407299.tif 000024
【図１９】
0006407299.tif 000025
【図２０】
0006407299.tif 000026
【図２１】
0006407299.tif 000027
【図２２】
0006407299.tif 000028
【図２３】
0006407299.tif 000029
【図２４】
0006407299.tif 000030
【図２５】
0006407299.tif 000031
【図２６】
0006407299.tif 000032
【図２７】
0006407299.tif 000033
【図２８】
0006407299.tif 000034