説明

命令実行を容易にするためのバッファの使用

【課題】メインライン処理の外部の特殊な状況を処理する機能を提供すること。
【解決手段】命令実行は、特殊な状況を有する命令を処理するのにバッファを使用することによって容易にされる。そのような命令を実行する時に、命令のポインタが、バッファに向けられる。命令は、バッファから実行され、その後、ポインタが、バッファ以外の位置をポイントするように回復される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、全般的には、処理環境内の命令の処理に関し、具体的には、命令実行を容易にするためのバッファの使用に関する。
【背景技術】
【0002】
通常、命令ストリームの実行中には、命令が実行され、複数のテストが実行され、その後、次の命令が実行されるなどである。しかし、ある種の命令は、特殊な処理を必要とする。たとえば、execute命令は、実行の前に変更され得るターゲット命令を指定する。この変更は、管理されなければならない。さらに、メモリ境界(たとえば、ページ境界)をまたぐ命令は、命令の物理的に不連続な部分を入手することを必要とする。やはり、この状況は管理されなければならない。
【0003】
これらの状況の処理は、重要である。しかし、メインライン処理中のこれらの状況の処理は、システム性能を劣化させる。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】「z/Architecture Principles of Operation」IBM Publication No.SA22−7832−04、2005年9月
【発明の概要】
【発明が解決しようとする課題】
【0005】
前述に基づいて、メインライン処理の外部の特殊な状況を処理する機能の必要が存在する。具体的に言うと、命令実行を容易にする機能の必要が存在する。一例で、バッファが、命令実行を容易にするのに使用され、特殊な状況が、メインライン処理の外部で処理されるようになる。特殊な状況を伴う命令が観察される時に、命令のポインタが、最も少なくともその命令のコピーを有する一時バッファをポイントする。命令は、一時バッファから実行され、その後、ポインタが、メモリ内の適当な位置をポイントするように回復される。
【課題を解決するための手段】
【0006】
請求項1で請求される方法の提供を介して、従来技術の短所が克服され、追加の利益が実現される。
【0007】
対応するコンピュータ・プログラムおよびシステムも、本明細書で説明され、特許請求される。
【0008】
追加の特徴および利益は、本発明の技術を介して実現される。本発明の他の実施形態および態様は、本明細書で詳細に説明され、請求される発明の一部と考えられる。
【0009】
本発明の1つまたは複数の態様を、本明細書の末尾の特許請求の範囲で例として特に指摘し、明確に請求する。本発明の前述および他の目的、特徴、および利益は、添付図面と共に解釈される次の詳細な説明から明白である。
【図面の簡単な説明】
【0010】
【図1】本発明の1つまたは複数の態様を組み込み、使用する処理環境の一実施形態を示す図である。
【図2】本発明の態様による図1の処理環境のシステム・アーキテクチャの一実施形態を示す図である。
【図3】本発明の態様による図2のシステム・アーキテクチャのエミュレータの一実施形態のさらなる詳細を示す図である。
【図4】本発明の態様による図3のエミュレータの中央処理装置(CPU)実施態様の一実施形態のさらなる詳細を示す図である。
【図5】本発明の態様による図4のCPU実施態様のインタープリタ・コードの一実施形態のさらなる詳細を示す図である。
【図6】本発明の態様による命令実行のフローの一実施形態を示す図である。
【図7】本発明の態様による命令ストリームの実行に関連する論理の一実施形態を示す図である。
【図8】本発明の態様による図7のテスト・セットの処理に関連する論理の一実施形態を示す図である。
【図9】本発明の1つまたは複数の態様を組み込んだコンピュータ・プログラム製品の一実施形態を示す図である。
【発明を実施するための形態】
【0011】
本発明の態様によれば、機能が、処理環境内で命令実行を制御するために提供される。一例として、メインライン命令ストリーム内の命令は、単一のテストに合格することに応答して処理され続ける。しかし、テストに合格しない場合には、メインライン・ストリーム内の命令ではなく、テスト・セットが実行される。
【0012】
単一のテストは、本明細書でend−of−range(範囲の終り)と称する、ある値が選択的にセットされる変数との命令カウンタの比較を含む。その値が満足されない間は、命令実行が、メインライン命令ストリーム内の次の命令に進み続ける。しかし、その値に達するかこれを超えた時には、実行が、失敗して所定のテスト・セットになり、このテスト・セットが実行される。
【0013】
一実施形態で、テスト・セットの処理中に、バッファを使用して命令実行を容易にすることができる。たとえば、ある種の命令は、処理される時に特殊な処理を必要とする(たとえば、Execute命令およびページ境界をまたぐ命令)。この処理を容易にするために、バッファが使用され、このバッファに、必要な場合または望まれる場合に、ターゲット命令がコピーされ、命令に対する変更が可能になる。
【0014】
本発明の1つまたは複数の態様を組み込み、使用する処理環境の一実施形態を、図1を参照して説明する。この例では、処理環境100は、ネイティブ・アーキテクチャと呼ぶことができる1つのアーキテクチャに基づくが、ゲスト・アーキテクチャと呼ぶことができるもう1つのアーキテクチャをエミュレートする。例として、ネイティブ・アーキテクチャは、米国ニューヨーク州アーモンクのInternational Business Machines Corporation社によって提供されるPower4もしくはPowerPC(R)アーキテクチャまたはIntel Corporation社によって提供されるIntel(R)アーキテクチャであり、ゲスト・アーキテクチャは、やはり米国ニューヨーク州アーモンクのInternational Business Machines Corporation社によって提供されるz/Architecture(R)である。z/Architecture(R)の諸態様は、参照によってその全体を本明細書に組み込まれる、「z/Architecture Principles of Operation」、IBM Publication No.SA22−7832−04、2005年9月に記載されている。
【0015】
処理環境100は、たとえば、たとえば1つまたは複数のバス108を介して互いに結合された、ネイティブ・プロセッサ102(たとえば、中央処理装置(CPU))、メモリ104(たとえば、メイン・メモリ)、および1つまたは複数の入出力(I/O)デバイス106を含む。例として、ネイティブ・プロセッサ102は、米国ニューヨーク州アーモンクのInternational Business Machines Corporation社(IBM(R))によって提供されるpSeries(R)サーバの一部である。IBM(R)、pSeries(R)、Power PC(R)、およびz/Architecture(R)は、米国ニューヨーク州アーモンクのInternational Business Machines Corporation社の登録商標である。Intel(R)は、Intel Corporation社の登録商標である。本明細書で使用される他の名前が、International Business Machines Corporation社または他の会社の登録商標、商標、または製品名である場合がある。
【0016】
ネイティブ・プロセッサ102は、この環境内での処理中に使用される、1つもしくは複数の汎用レジスタまたは1つもしくは複数の特殊目的レジスタあるいはその両方など、1つまたは複数のネイティブ・レジスタ110を含む。これらのレジスタは、任意の特定の時点でのこの環境の状態を表す情報を含む。
【0017】
エミュレーションを提供するために、処理環境は、エミュレータ、ゲスト・オペレーティング・システム、および1つまたは複数のゲスト・アプリケーションを含むように設計される。これらの設計された特徴を、図2を参照してさらに説明する。
【0018】
図2を参照して、処理環境100のシステム・アーキテクチャ200の一実施形態を説明する。システム・アーキテクチャ200は、たとえば、環境の設計された諸態様を定義する複数のインプリメンテーション・レイヤを含む。この特定の例では、レイヤは、1つまたは複数のインターフェースまたはコントローラあるいはその両方を介してメモリ204および入出力デバイスまたはネットワークあるいはその両方206に結合されたハードウェア202と、ホスト・オペレーティング・システム208と、エミュレータ210と、ゲスト・オペレーティング・システム212と、1つまたは複数のゲスト・アプリケーション214とを例として含む。1つのレイヤは、1つまたは複数のインターフェースを介して少なくとも1つの他のレイヤに結合される。たとえば、ゲスト・アプリケーション214は、少なくとも1つのインターフェースを介してゲスト・オペレーティング・システム212に結合される。他のインターフェースが、他のレイヤを結合するのに使用される。さらに、このアーキテクチャは、他のレイヤまたはインターフェースあるいはその両方をも含むことができる。図2に示されたさまざまなレイヤを、下でさらに説明する。
【0019】
ハードウェア202は、処理環境のネイティブ・アーキテクチャであり、たとえば、Power4、PowerPC(R)、Intel(R)、または他のアーキテクチャに基づく。ハードウェア上で稼動するのは、International Business Machines Corporation社によって提供されるAIX(R)、またはLINUXなどのホスト・オペレーティング・システム208である。AIX(R)は、米国ニューヨーク州アーモンクのInternational Business Machines Corporation社の登録商標である。
【0020】
エミュレータ210は、ネイティブ・アーキテクチャとは異なるアーキテクチャをエミュレートするのに使用される複数のコンポーネントを含む。この実施形態では、エミュレートされるアーキテクチャは、International Business Machines Corporation社によって提供されるz/Architecture(R)であるが、他のアーキテクチャもエミュレートすることができる。エミュレーションは、ゲスト・オペレーティング・システム212(たとえば、International Business Machines Corporation社の登録商標であるz/OS(R))が、ネイティブ・アーキテクチャ上で実行することを可能にし、1つまたは複数のゲスト・アプリケーション214(たとえば、Zアプリケーション)のサポートを可能にする。エミュレータ210に関するさらなる詳細を、図3を参照して説明する。
【0021】
図3を参照すると、エミュレータ210は、1つまたは複数のサービス・プロセス302に結合された共有メモリ300と、入出力(I/O)インプリメンテーション304と、中央処理装置(CPU)インプリメンテーション306とを含み、これらのそれぞれを、下でさらに詳細に説明する。
【0022】
共有メモリ300は、サービス・プロセス302、入出力インプリメンテーション304、およびCPUインプリメンテーション306から可視のホスト内のメモリの一部の表現である。これは、独立プロセス(たとえば、サービス・プロセス、入出力インプリメンテーション、CPUインプリメンテーション)がデータを読み取り、共有メモリ内に格納することによって通信するストレージ区域である。一例として、共有メモリは、たとえばシステム・グローバル情報、CPUコンテキストおよび情報、エミュレートされたメイン・ストレージ、エミュレートされたメイン・ストレージ・キー、ならびにサブチャネル(すなわち、入出力デバイスを表すデータ構造)を含む複数の領域を含む。
【0023】
サービス・プロセス302は、CPUを作成するのに使用される1つまたは複数のプロセスおよび1つまたは複数の他のプロセスを含むと同時に、開始、停止、リセット、初期プログラム・ロード(IPL)その他などの設計されたオペレータ・ファシリティを提供する。サービス・プロセス302は、エミュレートされたシステム・ファシリティの表示または変更、共有リソースの入手/解放、他のメンテナンス・コマンドその他など、他の機能をも提供することができる。
【0024】
入出力インプリメンテーション304は、たとえば、入出力デバイスと通信するのに使用される1つまたは複数のサブチャネル・プロセスおよび入出力コントローラを含む。入出力コントローラは、本発明の一態様で、サブチャネル・プロセスを開始し、回復を実行する責任を負う。
【0025】
CPUインプリメンテーション306は、命令を実行し、その処理を管理する責任を負う。CPUインプリメンテーション306は、図4〜5を参照して説明する複数のコンポーネントを含む。
【0026】
図4を参照すると、CPUインプリメンテーション306は、たとえば、命令を入手し、変換し、実行するのに使用されるインタープリタ・コード400と、初期スタートアップおよびチップ(たとえば、サービス・コール論理プロセッサ(SCLP)プロセス)との通信を助けるアーキテクチャ化されたコプロセッサ402と、エミュレータのタイミング機能の責任を負うタイミング・ファシリティ404とを含む。インタープリタ・コード400に関するさらなる詳細を、図5を参照して説明する。
【0027】
インタープリタ・コード400は、たとえば、メモリ・アクセス・ユニット422、CPU制御426、非同期割込みハンドラ428、および同期割込みハンドラ430に結合されたインタープリテーション・ユニット420を含む。
【0028】
インタープリテーション・ユニット420は、メモリから1つまたは複数のゲスト命令を入手し、それらのゲスト命令のネイティブ命令を提供し、それらのネイティブ命令を実行する責任を負う。ゲスト命令は、ネイティブ・プロセッサ102のアーキテクチャ以外のアーキテクチャで実行されるように開発されたソフトウェア命令(たとえば、機械命令)を含む。たとえば、ゲスト命令を、z/Architecture(R)プロセッサ上で実行されるように設計されたものとすることができるが、このゲスト命令は、その代わりに、たとえばpSeries(R)サーバとすることのできるネイティブ・プロセッサ102上でエミュレートされる。
【0029】
一例で、ネイティブ命令の提供は、ゲスト命令に関連するエミュレータ内のコード・セグメントを選択することを含む。たとえば、各ゲスト命令は、エミュレータ内の関連するコード・セグメントを有し、この関連するコード・セグメントは、1つまたは複数のネイティブ命令のシーケンスを含み、そのコード・セグメントが、実行のために選択される。
【0030】
さらなる例では、提供は、たとえば変換プロセス中に、所与のゲスト命令に関する命令のネイティブ・ストリームを作成することを含む。これは、機能を識別することと、同等のネイティブ命令を作成することとを含む。
【0031】
命令がメモリ・アクセスを含む場合に、メモリ・アクセス・ユニット422が、共有メモリ300へのアクセスに使用される。メモリ・アクセス・ユニットは、動的アドレス変換(DAT)432またはアクセス・レジスタ変換(ART)434などの変換機構を使用して、論理アドレスを絶対アドレスに変換することができ、この絶対アドレスが、必要な場合に、メモリにアクセスするのに使用され、あるいはさらに変換され得る。
【0032】
この実施形態では、インタープリテーション・ユニット420内の処理は、能率的にされなければならない。したがって、待ち状態またはあるアーキテクチャ・レベルから別のアーキテクチャ・レベルへ(たとえば、z/Architecture(R)からESA/390へ)の変更その他など、より複雑な状況が生じる場合に、制御は、CPU制御426に転送され、このCPU制御426が、イベントを処理し、制御をインタープリテーション・ユニット420に返す。
【0033】
さらに、割込みが発生する場合に、処理は、インタープリテーション・ユニット420から、割込みが非同期割込みである場合には非同期割込みハンドラ428に、割込みが同期割込みである場合には同期割込みハンドラ430に遷移する。割込みが処理された後に、処理は、インタープリテーション・ユニット420に戻る。
【0034】
具体的に言うと、インタープリテーション・ユニットは、共有メモリ内のある種の位置を監視し、ある位置が変化した場合に、これは、割込みがCPUまたは入出力のうちの1つによってセットされたことを意味する。したがって、インタープリテーション・ユニットは、適当な割込みハンドラを呼び出す。
【0035】
インタープリテーション・ユニット420に関するさらなる詳細を、図6を参照して説明する。具体的に言うと、図6は、インタープリテーション・ユニットに関連する処理フローの一実施形態を示す。この実施形態では、処理フローは、スレッド式と考えられる。というのは、各命令ルーチンが、関連する復号/ディスパッチ・ルーチンを有する(すなわち、中央制御を有しない)からである。このフローは、一実施形態で、z/Architecture(R)をエミュレートしている命令を実行している。
【0036】
図6を参照すると、処理フロー500が、一方は本明細書でメインライン処理502と称し、他方はテスト・セット処理504と称する2つのセクションを含むことが示されている。メインライン処理は、処理が、命令の間でかなりのテストを実行せずにある命令ルーチンから別の命令ルーチンに進む、能率的にされた処理である。この実施形態では、命令実行の間に実行される唯一のテストは、メインライン処理が継続すべきかどうかまたは処理が失敗してテスト・セットにならなければならないかどうかを判定する単純なテストである。さらなるテストを実行しなければならないか、他のアクションが要求される場合には、処理は、メインライン処理を終了し、テスト・セット処理504に入る。テストまたは他の処理が実行されたならば、処理は、メインライン処理で再開される。大多数の時間に、処理が、メインライン処理のままになると期待される。
【0037】
一実施形態では、メインライン処理に入る前に、ある種の初期化が実行される。たとえば、ポインタが、インタープリテーション・ユニット420(図5)に入力され、このポインタは、実行される命令ストリームを含む特定のファイルまたはメモリ区域を示す。この命令ストリームは、たとえば、ネイティブ・プロセッサ上で実行されるZ命令を含む。
【0038】
命令ストリームにポインタを設けることに加えて、命令ストリームの命令カウンタならびにエミュレートされる処理環境に関連する状態(たとえば、Z状態)が、設けられる。この状態は、たとえば、命令プログラム・イベント記録(I−PER)モードがアクティブであるかどうか、I−STEPまたはADSTOPがアクティブであるかどうか、現在の実行モードなどを示す、さまざまなレジスタおよびフラグを含む。状態が、評価され、その評価に基づいて、テスト・セット処理504(図6)のテスト・セットのうちの1つが選択される。たとえば、I−PERモードがアクティブである場合には、PERテスト・セットを選択してよい。ポインタには、選択されたテスト・セットがセットされ、処理は、そのテスト・セットで継続される。
【0039】
選択されたテスト・セットが実行され、これは、下で説明するように、1つもしくは複数のテストまたは1つもしくは複数のアクションあるいはその両方を実行することを含むことができる。テスト・セットでは、処理がメインライン処理にもう一度失敗する場合に、どのテスト・セットを次に選択すべきかに関する判断を行う。さらに、メインライン処理を継続すべきかどうかを判定するための単一のテストで使用される変数end−of−rangeが、セットされる。この変数は、下でさらに詳細に説明するように、実行されるテストおよび命令ストリームの処理ステージに基づいてセットされる。
【0040】
テスト・セットの実行の後に、処理は、そのテスト・セットによって決定されるメインライン処理の命令ルーチン506に継続する。選択された命令ルーチンが完了する時に、制御は、選択された命令ルーチン506に関連する復号/ディスパッチ・ルーチン508で継続される。
【0041】
復号/ディスパッチ・ルーチンは、次のオペコードについて命令ストリームを読み取り、その命令に進むか、失敗してテスト・セットに進む。たとえば、復号/ディスパッチ・ルーチンでは、単一のテストを実行して、能率的にされたメインライン処理が継続するかどうか、または処理が一時的に失敗してテスト・セット処理になるかどうかを判定する。すなわち、復号/ディスパッチ・ポイントでは、テストを行って、より複雑な処理が必要であるかどうか、または処理がメインライン・ストリーム内に留まることができるかどうかを判定する。より複雑な処理が要求される場合には、命令を囲む状況を、所定のテスト・セット内で人工的に変更して、命令ルーチンに進む前に状況を単純にする。というのは、命令ルーチンが、状況が単純であることを仮定するからである。たとえば、命令ストリームは、物理的に連続した位置から命令をフェッチできると仮定する。復号/ディスパッチが、命令がページ境界をまたぐのでそれが不可能であることを示す場合には、処理は、テスト・セットに継続し、このテスト・セットで、追加処理が実行される。
【0042】
たとえば、命令ページ境界またぎ510、回復511、I−PERフェッチ512、I−StepおよびAdstop 514、開始および終了516、ならびに統計収集実行モード決断(JITモード)518を含む、処理のために選択できるさまざまなテスト・セットがある。これらのテスト・セットが、例として提供されるが、追加の、より少数の、または異なるテスト・セットを使用することができる。各テスト・セットは、メインライン処理に戻る前に実行される1つまたは複数のアクションを含むことができる。テスト・セットに関するさらなる詳細を、下で説明する。
【0043】
選択できる1つのテスト・セットが、命令ページ境界またぎ510であり、これは、命令がページ境界をまたいでいるかどうかを判定するのに使用される。このテスト・セットは、命令がページ(またはメモリの他の指定された単位)の終りに近い時に呼び出される。たとえば、end−of−range変数には、たとえば、ページの終りから4バイトを引いたものと等しい値がセットされる。完了したばかりの命令ルーチンに関連する復号/ディスパッチ・ルーチンでは、end−of−range値を命令カウンタと比較して、命令がページの終りに近いかどうかを判定する。この単一のテストが満足される場合に、この例では命令ページ境界またぎ510が呼び出される。
【0044】
命令ページ境界またぎ510では、テストを実行して、命令が複数のページにまたがるかどうかを判定する。一例として、ページがやはり4バイトを有し、命令が2バイトのみである場合に、その命令は、それでもそのページに収まる。したがって、処理は、メインライン処理で再開され、このメインライン処理が、この命令を処理する。しかし、命令が6バイトであり、命令のうちの4バイトだけが1ページ上にある場合に、その命令はページ境界をまたいでいると判定される。命令の最後の2バイトは、論理的には連続するが、物理的には不連続なので、処理が、最後の2バイトを入手し、6バイトを提供する(これらが物理的に連続であるかのように)ために実行される。6バイトが、物理的に連続するメモリにあるかのように入手され、実行すべき適当な命令ルーチンに(ポインタを介して)供給される。
【0045】
上で説明したように、メインライン処理内の各命令内でページ境界またぎテストを実行するのではなく、このテストは、望まれる時または必要な時にのみ実行される。すなわち、このテストは、命令がページの終りに近いと判定される時に限って実行される。
【0046】
もう1つのテスト・セットが、回復511である。このテスト・セットは、下でさらに詳細に説明するように、命令に関する特別な処理が必要な時に呼び出される。1つの例で、さまざまな変数の値が格納され、これらの変数が、その後に変更される。その後、回復が、これらの変数を保存された値に戻すのに使用される。
【0047】
もう1つのテスト・セットが、I−PERフェッチ512である。PER監視は、指定されたストレージ区域からの命令のフェッチなど、ある種のプログラム・イベントを監視するz/Architectureのデバッギング・ツールである。このテスト・セットは、end−of−range値が、I−PERモードを開始しなければならないことを示す時に使用される。たとえば、PER監視を、ページの途中で開始しなければならず、end−of−range変数と命令カウンタとの比較が、ページの途中を示し、PER監視が開始される場合に、このテスト・セットが呼び出され、PERに関連する処理が実行される。
【0048】
もう1つのテスト・セットが、I−StepおよびAdstop 514である。I−StepおよびAdstopは、設計されたz/Architecture(R)内のデバッギング・ツールである。I−Stepについて、プロセッサは、単一命令を通ってステップし、その後、停止状態になるモードにされる。停止状態中に、機械の状態が検査される。たとえば、レジスタを手作業で読み取り、その後、I−Stepモード継続を発行する。I−Stepテスト・セットを呼び出すためには、end−of−range変数が、命令カウンタと一致する。すべての種類の命令の実行の後に、命令カウンタは、すぐにend−of−rangeを超え、したがって、end−of−rangeには、人工的に0がセットされる。したがって、プログラム実行は、各命令の直後にテスト・ブロックに進む。プログラム実行は、停止状態に進み、ユーザ対話を待ち、その後、継続する。
【0049】
Adstopは、命令アドレスが特定の範囲内である時の停止である。これは、PERモードに似ている。
【0050】
もう1つのテスト・セットが、開始および終了テスト・セットである。このテスト・セットは、制御をCPU制御に転送しなければならない時および制御をCPU制御から戻って転送しなければならない時に使用される。プログラム実行が、あるアーキテクチャ・モードかラベルのアーキテクチャ・モードに変化する時に、このフローは終了され、制御は、CPU制御で継続される。このテスト・セットを呼び出すために、一例として、end−of−range変数に0がセットされる。
【0051】
統計収集実行モード決断518は、どのモードを実行に使用しなければならないのかを判定するのに使用される。このテスト・セットは、使用統計を収集し、その統計に基づいて実行モードを選択する。実行モードの例は、インタープリタティブ・モード(メインライン処理502に戻る)、各実行される命令がバッファにコピーされる記録モード、およびアドレスが以前に変換された時に使用される変換モードを含む。このテスト・セットを呼び出すために、一例として、end−of−range変数に0がセットされる。これは、このテスト・セットを各命令の後に処理することを可能にする。
【0052】
上のテスト・セットでは、主要なテストまたはアクションが示されるが、各テスト・セットは、他のアクションを含むことができる。たとえば、各テスト・セットは、たとえば、主要なテストまたはアクションに加えて、命令ページ境界またぎがまたがれつつあるかどうか、または割込みが保留中であるかどうかをもチェックすることができる。多数の他の例も存在する。
【0053】
インタープリテーション・ユニット420による命令ストリームの処理に関連するさらなる詳細を、図7を参照して説明する。
【0054】
当初に、命令ストリームへのポインタを、命令ストリームに関連する命令カウンタおよび状態と一緒に、インタープリテーション・ユニット420に入力する、ステップ600。状態は、たとえば、例として、浮動小数点レジスタ、汎用レジスタ、制御レジスタ、またはアドレッシング・レジスタあるいはこれらの組合せを含むレジスタと、たとえばPERモード・アクティブ、I−Stepアクティブなどを示すフラグとを含む。この状態を評価する、ステップ602。
【0055】
評価に基づいて、テスト・セットのうちの1つを選択し、テスト・セットの処理を開始する、ステップ604。このテスト・セットは、処理が特定のテスト・セットを開始しなければならないことを評価が示すという点で、事前に決定される。テスト・セット内で、ある種のアクションが、テスト・セットに依存して実行される。さらに、テスト・セットは、必要な場合に、次に呼び出すべきテスト・セットを決定し、その、次のテスト・セットをポイントするようにテスト・セット・ポインタをセットする。次のテスト・セットは、テスト・セット内で実行される評価(たとえば、PERアクティブ、ページ境界またぎに近い、I−Stepアクティブなど)に依存して、同一のテスト・セットまたは異なるテスト・セットとすることができる。
【0056】
テスト・セットの実行に応答して、フローは、メインライン処理内の選択された命令ルーチンに進み、そのルーチンが実行される、ステップ606。一例で、このルーチンは、1つの命令を含むが、他の例では、このルーチンが、複数の命令を含むことができる。命令ルーチンが完了した時に、処理は、その命令ルーチンに関連する復号/ディスパッチ・ルーチンに継続する、ステップ608。復号/ディスパッチでは、単一のテストを実行して、処理を次の命令に継続すべきなのか、失敗してテスト・セットにすべきなのかを判定する、ステップ610。この単一のテストは、end−of−rangeの値が満足されたかどうかに関するチェックである。これが満足されていない場合、問合せ612、処理は、メインライン実行に継続する、ステップ606。そうでない場合には、処理は、失敗して所定のテスト・セットになり、ステップ614、その後、テスト・セットが処理される、ステップ616。その後、処理は、テスト・セットによって示される、処理すべき次の命令ルーチンに継続する。
【0057】
テスト・セットの処理に関する追加の詳細を、図8を参照して説明する。テスト・セットの処理中に、特殊な処理を含む命令を実行することができる。そのような命令の処理を容易にするために、下で説明するように、バッファが使用される。
【0058】
図8を参照すると、テスト・セットの処理が開始され、命令に出会う、ステップ700。この命令が特殊な処理を必要とするタイプの命令であるかどうかに関する判定を行う、問合せ702。たとえば、命令が、executeまたはページ境界をまたぐ命令であるかどうかに関するチェックを行う。特殊な処理を必要とする命令である場合には、バッファが使用される。このバッファは、プロセッサのローカル・メモリ内に存在する一時バッファである。たとえば、命令が、ターゲット命令を実行することを指定するZ命令であるexecute命令である場合に、ターゲット命令が、バッファリングされるメモリ位置にロードされる、ステップ704。ターゲット命令をバッファにコピーすることによって、命令に関連する少なくとも1つの態様を変更することができる、ステップ706。たとえば、ターゲット命令が、move character(MVC)命令であると仮定すると、命令内で指定される、移動すべきバイト数が変更されなければならない。命令が、バッファにコピーされ、移動すべきバイト数を示すために変更される。たとえば、移動すべきオリジナル・バイト数が4バイトである場合に、これを、8バイトなど、別の値に変更することができる。したがって、4バイトを移動するのではなく、ターゲット命令は、8バイト(または任意の他のバイト数)を移動するように変更される。
【0059】
さらなる例として、命令が、ページ境界をまたぐ命令であると仮定する。この場合に、ターゲット命令は、実行すべき命令であり、論理的には連続するが、物理的には不連続であり、命令のバイトが、これらを物理的に連続したものにするためにバッファにコピーされる。たとえば、あるページに配置された命令のバイトの第1セットが、バッファにコピーされ、別のページ上のその命令の残りのバイトも、バッファにコピーされる、ステップ704。この例では、命令を変更する必要はなく、したがって、ステップ706は無視される。
【0060】
バッファを初期化した後に、さまざまなタスクが、処理されるテスト・セットの一部として実行される。これらのタスクは、たとえば、命令ポインタをバッファにリダイレクトすることと、後の使用のためにさまざまな変数の値を保存すること、ステップ708を含む。たとえば、end−of−range変数の現在の値、ならびに次テスト・セット・インジケータの現在の値を保存する。
【0061】
その後、これらの変数の値を置換する、ステップ710。たとえば、end−of−rangeに0をセットし、次テスト・セット・インジケータを、回復テスト・セットをポイントするようにセットする。
【0062】
次に、バッファ内の命令を実行する。復号/ディスパッチで、単一のテスト(たとえば、end−of−range変数)が失敗し、したがって、回復テスト・セットが選択される、ステップ714。回復中に、ステップ708〜710でのアクションが元に戻される。たとえば、命令ポインタは、オリジナルの命令ストリームにリダイレクトされ、end−of−range変数には、保存された値がセットされ、次テスト・セット・インジケータも、保存された値にリセットされる。その後、処理は、次の命令で継続される、ステップ716。
【0063】
問合せ702に戻って、命令が、特殊な処理を必要とするタイプの命令ではない場合には、処理は、テスト・セットによる指示通りに、テスト・セットのまたは戻ってメインライン処理の次の命令に継続する。
【0064】
本発明の1つまたは複数の態様を、たとえばコンピュータ可読媒体を有する製造品(たとえば、1つまたは複数のコンピュータ・プログラム製品)に含めることができる。媒体は、その中に、たとえば、本発明の機能を提供し、容易にするためにコンピュータ可読プログラム・コード手段または論理(たとえば、命令、コード、コマンドなど)を有する。製造品を、コンピュータ・システムの一部として含めるか、別々に販売することができる。
【0065】
本発明の1つまたは複数の態様を組み込んだ製造品またはコンピュータ・プログラム製品の一例を、図9を参照して説明する。コンピュータ・プログラム製品800は、たとえば、本発明の1つまたは複数の態様を提供し、容易にするためにその上にコンピュータ可読プログラム・コード手段または論理804を格納するために1つまたは複数のコンピュータ使用可能媒体802を含む。媒体は、電子、磁気、光学、電磁、赤外線、または半導体システム(または装置もしくはデバイス)、あるいは伝搬媒体とすることができる。コンピュータ可読媒体の例は、半導体メモリまたはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、リジッド磁気ディスク、および光ディスクを含む。光ディスクの例は、コンパクト・ディスク読取り専用メモリ(CD−ROM)、書換可能コンパクト・ディスク(CD−R/W)、およびDVDを含む。
【0066】
1つまたは複数のコンピュータ可読プログラム・コード手段または論理によって定義される1つまたは複数の相互に関係付けられたモジュールのプログラム命令のシーケンスまたは論理アセンブリは、本発明の1つまたは複数の態様の実行を指示する。
【0067】
有利なことに、単一のend−of−rangeテストによって決定されるテスト(単一のend−of−rangeテスト以外の)または他のアクションが要求されない限り、制御がメインライン処理内で維持される、命令実行を制御する能力が提供される。必要な時に限ってテストを実行することによって、性能が高められ、コーディングが単純化される(たとえば、各命令がテストのすべてに関するコードを含む必要がない)。
【0068】
有利なことに、処理は、分岐が、インタープリタに戻った後に次のルーチンへではなく、次のルーチンへ(テスト・セットを処理する必要がないと仮定して)発生するという点で、能率的にされる。
【0069】
さらなる利益として、execute命令など、ある種の命令に関連するオーバーヘッドが、バッファを使用することによって減らされる。execute命令に関して、メモリのあるページからメモリの別のページへのジャンプに関連するオーバーヘッドがある。たとえば、メモリのあるページにあるexecute命令が実行され、その後、メモリの異なるページにあるターゲット命令が実行される。ターゲット命令が実行された後に、処理は、execute命令の後の命令にリターンする。この行き来する分岐に関連するオーバーヘッドがある。しかし、バッファを使用することによって、最初のページを去ることの記録が維持され、したがって、処理がリターンする時に、回復を実行することができ、追加のテストまたはアクションあるいはその両方(たとえば、アドレス変換など)を実行する必要はない。
【0070】
さまざまな実施形態を上で説明したが、これらは例にすぎない。たとえば、処理環境は、Power4、PowerPC(R)、またはIntel(R)以外のアーキテクチャに基づく処理ユニットを含むことができる。さらに、pSeries(R)サーバ以外のサーバが、本発明の1つまたは複数の態様を組み込み、使用することができる。さらに、本明細書で言及したもの以外のオペレーティング・システムを使用することができる。さらに、処理環境は、z/Architecture(R)以外の環境をエミュレートすることができる。さらに、さまざまなエミュレータを使用することができる。エミュレータは、さまざまな会社によって市販され、提供される。さらに、処理環境は、エミュレータ・コードを含む必要がない。多数の他のタイプの処理環境が、本発明の1つまたは複数の態様を組み込み、または使用し、あるいはその両方を行うことができる。
【0071】
さらに、バッファが、execute命令およびページ境界をまたぐ命令など、ある種の命令の処理に使用されるが、バッファが使用される他の命令または状況あるいはその両方があってもよく、これらは、本発明の範囲に含まれる。
【0072】
さらに、テスト・セットは、例として提供されたものである。追加の、より少数の、または他の、あるいはこれらの組合せのテスト・セットを使用することができる。含まれるテスト・セットの個数は、設計依存である。本発明に対する多数の変形形態が、可能であり、本発明の範囲に含まれる。
【0073】
さらに、1つまたは複数の実施形態で、直接または間接にシステム・バスを介してメモリ要素に結合される少なくとも1つのプロセッサを含む、プログラム・コードを格納し、または実行し、あるいはその両方を行うのに適するデータ処理システムが使用可能である。メモリ要素は、たとえば、プログラム・コードの実際の実行中に使用されるローカル・メモリ、バルク・ストレージ、および、実行中にバルク・ストレージからコードを取り出さなければならない回数を減らすために少なくともいくつかのプログラム・コードの一時的記憶を提供するキャッシュ・メモリを含む。
【0074】
入出力デバイスすなわちI/Oデバイス(キーボード、ディスプレイ、ポインティング・デバイス、DASD、テープ、CD、DVD、サム・ドライブ、および他の記憶媒体などを含むがこれらに限定はされない)を、直接にまたは介在する入出力コントローラを介してのいずれかでシステムに結合することができる。ネットワーク・アダプタをシステムに結合して、データ処理システムが、介在する私有ネットワークまたは公衆ネットワークを介して他のデータ処理システム、リモート・プリンタ、またはストレージ・デバイスに結合された状態になることを可能にすることもできる。モデム、ケーブル・モデム、およびイーサネット(R)・カードが、使用可能なタイプのネットワーク・アダプタのうちの少数である。
【0075】
本発明の1つまたは複数の態様の機能を、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せで実施することができる。本発明の機能を実行するために機械によって実行可能な命令の少なくとも1つのプログラムを実施する機械によって可読の少なくとも1つのプログラム・ストレージ・デバイスを提供することができる。
【0076】
本明細書で示される流れ図は、例にすぎない。これらの流れ図または本明細書で説明されるステップ(もしくは動作)に対する、本発明の趣旨から逸脱しない多数の変形形態があり得る。たとえば、ステップを、異なる順序で実行することができ、ステップを、追加し、削除し、または変更することができる。これらの変形のすべてが、請求される発明の一部と考えられる。
【0077】
実施形態を本明細書で詳細に図示し、説明したが、本発明の趣旨から逸脱せずに多数の変更、追加、および置換などを行うことができ、したがって、これらが、添付の特許請求の範囲で定義される本発明の範囲に含まれると考えられることが、当業者には明白である。

【特許請求の範囲】
【請求項1】
バッファに命令を提供することと、
前記バッファ内の前記命令の態様を変更しなければならないかどうかを判定することと、
前記判定ステップに応答して前記態様を変更することと、
メモリ内の前記命令の実行ではなく、前記バッファからの前記命令の実行を可能にするために、命令ポインタを前記バッファにリダイレクトすることと
を含む、処理環境内で命令実行を容易にする方法。
【請求項2】
前記提供することが、メモリ内の論理的に連続するが物理的に不連続な位置から前記バッファ内の物理的に連続する位置へ前記命令をコピーすることを含む、請求項1に記載の方法。
【請求項3】
前記命令が、ページ境界をまたぐ命令を含み、前記提供することが、前記命令の第1部分をメモリのあるページから前記バッファにコピーし、前記命令の第2部分をメモリの別のページから前記バッファにコピーすることを含む、請求項1に記載の方法。
【請求項4】
前記命令が、execute命令のターゲット命令を含み、前記変更することが、前記ターゲット命令のレジスタを変更することを含む、請求項1に記載の方法。
【請求項5】
前記処理環境が、エミュレータを含む、請求項1に記載の方法。
【請求項6】
請求項1ないし5のいずれかに記載の方法の全ステップを実行するように適合された手段を含むシステム。
【請求項7】
コンピュータ・システム上で実行される時に請求項1ないし5のいずれかに記載の方法の全ステップを実行する命令を含むコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公表番号】特表2010−518470(P2010−518470A)
【公表日】平成22年5月27日(2010.5.27)
【国際特許分類】
【出願番号】特願2009−547636(P2009−547636)
【出願日】平成20年1月21日(2008.1.21)
【国際出願番号】PCT/EP2008/050652
【国際公開番号】WO2008/092769
【国際公開日】平成20年8月7日(2008.8.7)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
【出願人】(390009531)インターナショナル・ビジネス・マシーンズ・コーポレーション (4,084)
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【Fターム(参考)】