(57)【特許請求の範囲】
【請求項１】
あるアーキテクチャ用のオブジェクトである移行元オブジェクトを、同等に動作する、移行先アーキテクチャ用のオブジェクトである移行先オブジェクトに、静的なオブジェクト変換と動的なオブジェクト変換とのいずれかを用いて変換するオブジェクト変換装置であって、
移行元オブジェクトが、使用頻度の高いオブジェクトであるか否かを示す使用頻度情報を記憶する第１の記憶手段と、
前記第１の記憶手段に記憶された使用頻度情報に基づき、移行元オブジェクトが使用頻度の高いオブジェクトであるか否かを判断する判断手段と、
前記判断手段によって使用頻度の高いオブジェクトであると判断された移行元オブジェクトに対応する移行先オブジェクトであって、動的なオブジェクト変換によって得られた動的変換オブジェクトを記憶する第２の記憶手段とを備えることを特徴とするオブジェクト変換装置。
【請求項２】
前記判断手段によって移行元オブジェクトが使用頻度の高いオブジェクトであると判断されたときに、前記第２の記憶手段に、その移行元オブジェクトに対応する動的変換オブジェクトが記憶されていた場合には、その動的変換オブジェクトを実行し、前記第２の記憶手段に、前記移行元オブジェクトに対応する動的変換オブジェクトが記憶されていない場合には、前記移行元オブジェクトを、対応する移行先オブジェクトに変換するオブジェクト変換実行手段を、さらに、備えることを特徴とする請求項１記載のオブジェクト変換装置。
【請求項３】
前記オブジェクト変換実行手段は、前記判断手段により、使用頻度の高いオブジェクトであると判断された移行元オブジェクトのうち、特定の移行元オブジェクトに対しては、その移行元オブジェクトに対応する、予め用意された移行先オブジェクトである静的変換オブジェクトを実行することを特徴とする請求項２記載のオブジェクト変換装置。
【請求項４】
前記使用頻度情報は、移行元オブジェクトが含まれるページ単位で、使用頻度の高いオブジェクトであるか否かを示し、
前記第２の記憶手段は、所定数の、第２所定サイズの記憶領域を有し、
前記ページと前記第２の記憶手段の前記記憶領域の対応関係を管理するための管理手段を、さらに、備え、
前記オブジェクト変換実行手段は、ある移行元オブジェクトの変換によって得られた動的変換オブジェクトを、前記管理手段によって、その移行元オブジェクトが含まれるページに対応づけられている、前記第２の記憶手段の記憶領域に記憶することを特徴とする請求項２または請求項３に記載のオブジェクト変換装置。
【請求項５】
前記第２の記憶手段が備える記憶領域の数を変更するための変更手段を、さらに、備えることを特徴とする請求項４記載のオブジェクト変換装置。
【請求項６】
前記管理手段は、各記憶領域内の動的変換オブジェクトが利用された時間順をも管理し、全記憶領域が移行先オブジェクトの記憶に使用されている状態で、前記第２の記憶手段に、新たなページに属する移行元オブジェクトに相当する動的変換オブジェクトを記憶する必要が生じた場合には、最も過去に利用された記憶領域内の動的変換オブジェクトをパージし、その記憶領域を前記新たなページ用の記憶領域とすることを特徴とする請求項４または請求項５に記載のオブジェクト変換装置。
【請求項７】
前記管理手段は、各記憶領域内の動的変換オブジェクトを利用しているプロセス数をも管理し、全記憶領域が移行先オブジェクトの記憶に使用されている状態で、前記第２の記憶手段に、新たなページ内の移行元オブジェクトに相当する動的変換オブジェクトを記憶する必要が生じた場合には、前記プロセス数がゼロの記憶領域の中で最も過去に利用された記憶領域内の動的変換オブジェクトをパージすることを特徴とする請求項６に記載のオブジェクト変換装置。
【請求項８】
前記オブジェクト変換実行手段は、前記判断手段によって使用頻度の高いオブジェクトであると判断された複数の移行元オブジェクトに相当する移行先オブジェクトを動的変換オブジェクトとして作成する機能を有することを特徴とする請求項２ないし請求項７のいずれかに記載のオブジェクト変換装置。
【請求項９】
あるアーキテクチャ用のオブジェクトである移行元オブジェクトを、同等に動作する、移行先アーキテクチャ用のオブジェクトである移行先オブジェクトに、静的なオブジェクト変換と動的なオブジェクト変換とのいずれかを用いて変換するオブジェクト変換方法であって、
移行元オブジェクトが、使用頻度の高いオブジェクトであるか否かを示す使用頻度情報を設定する設定ステップと、
この設定ステップで設定された使用頻度情報に基づき、変換すべき移行元オブジェクトが使用頻度の高いオブジェクトであるか否かを判断する判断ステップと、
前記判断ステップにおいて、前記移行元オブジェクトが使用頻度の高いオブジェクトであると判断されたときに、記憶手段に、その移行元オブジェクトに対応する移行先オブジェクトであって動的なオブジェクト変換によって得られた動的変換オブジェクトが記憶されていた場合には、その動的変換オブジェクトを実行し、前記記憶手段に、前記移行元オブジェクトに対応する動的変換オブジェクトが記憶されていない場合には、前記移行元オブジェクトを、対応する移行先オブジェクトに変換するオブジェクト変換実行ステップとを含むことを特徴とするオブジェクト変換方法。
【請求項１０】
移行先アーキテクチャを有するコンピュータを、あるアーキテクチャ用のオブジェクトである移行元オブジェクトを、同等に動作する、移行先アーキテクチャ用のオブジェクトである移行先オブジェクトに、静的なオブジェクト変換と動的なオブジェクト変換とのいずれかを用いて変換するように動作させるためのプログラムであって、さらに前記コンピュータを、
移行元オブジェクトが、使用頻度の高いオブジェクトであるか否かを示す使用頻度情報を記憶する第１の記憶手段と、
前記移行先アーキテクチャ用のオブジェクトである移行先オブジェクトであって、動的なオブジェクト変換によって得られた動的変換オブジェクトを記憶する第２の記憶手段と、
前記第１の記憶手段に記憶された使用頻度情報に基づき、移行先オブジェクトに変換すべき移行元オブジェクトが使用頻度の高いオブジェクトであるか否かを判断する判断手段と、
前記判断手段によって移行元オブジェクトが使用頻度の高いオブジェクトであると判断されたときに、前記第２の記憶手段に、その移行元オブジェクトに対応する動的変換オブジェクトが記憶されていた場合には、その動的変換オブジェクトを実行し、前記第２の記憶手段に、前記移行元オブジェクトに対応する動的変換オブジェクトが記憶されていない場合には、前記移行元オブジェクトを、対応する移行先オブジェクトに変換するオブジェクト変換実行手段として、動作させるためのプログラムが記録されたプログラム記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、オブジェクト変換装置、オブジェクト変換方法、プログラム記録媒体に関し、あるアーキテクチャ用のオブジェクト（プログラム・オブジェクト）を、自身のアーキテクチャ用のオブジェクトに変換して実行するオブジェクト変換装置、方法と、コンピュータを、そのようなオブジェクト変換装置として動作させるためのプログラムが記録されたプログラム記録媒体に関する。
【０００２】
【従来の技術】
周知のように、あるコンピュータ用に開発されたオブジェクトを、アーキテクチャの異なるコンピュータで使用するためには、何らの形で、当該オブジェクトを変換してやる必要がある。そのようなオブジェクトの変換方法としては、静的オブジェクト変換方法などと呼ばれる、事前に命令列を移行先アーキテクチャにおいて同等に動作するオブジェクトに変換する方法が知られている。また、動的オブジェクト変換方法などと呼ばれる、命令実行時にオブジェクト変換を行う方法も知られている。
【０００３】
【発明が解決しようとする課題】
静的オブジェクト変換方法では、変換にかかる時間は、実行時間に影響しない。しかしながら、一般に、静的オブジェクト変換を行うと、変換によって得られるオブジェクトサイズが大きなものとなる。すなわち、静的オブジェクト変換では、変換により得られるオブジェクトの動作ステップ数が増加し、その結果として、オブジェクトの性能が低下するという問題があった。一方、動的オブジェクト変換方法では、変換によって得られるオブジェクトサイズは比較的小さなものとなる。しかしながら、移行元オブジェクトが、複数回実行されないオブジェクトを含むものであった場合、そのオブジェクトの変換にかかる時間が、変換後のオブジェクトの全体的な動作速度を低下させてしまうという問題があった。
【０００４】
そこで、本発明の課題は、上記のような問題が生じないオブジェクト変換装置、方法を提供することにある。
また、本発明の他の課題は、コンピュータを、そのようなオブジェクト変換装置として動作させることが出来るプログラムが記録されたプログラム記録媒体を提供することにある。
【０００５】
【課題を解決するための手段】
上記課題を解決するために、本発明では、あるアーキテクチャ用のオブジェクトである移行元オブジェクトを、同等に動作する、移行先アーキテクチャ用のオブジェクトである移行先オブジェクトに変換するオブジェクト変換装置を、（イ）移行元オブジェクトが、使用頻度の高いオブジェクトであるか否かを示す使用頻度情報を記憶する第１の記憶手段と、（ロ）第１の記憶手段に記憶された使用頻度情報に基づき、移行元オブジェクトが使用頻度の高いオブジェクトであるか否かを判断する判断手段と、（ハ）判断手段によって使用頻度の高いオブジェクトであると判断された移行元オブジェクトに対応する移行先オブジェクトを記憶する第２の記憶手段とを用いて構成する。
【０００６】
また、本発明のオブジェクト変換装置は、判断手段によって移行元オブジェクトが使用頻度の高いオブジェクトであると判断されたときに、第２の記憶手段に、その移行元オブジェクトに対応する移行先オブジェクトが記憶されていた場合には、その移行先オブジェクトを実行し、第２の記憶手段に、移行元オブジェクトに対応する移行先オブジェクトが記憶されていない場合には、移行元オブジェクトを、対応する移行先オブジェクトに変換するオブジェクト変換実行手段を、付加することが出来る。
【０００７】
オブジェクト変換実行手段としては、判断手段により、使用頻度の高いオブジェクトであると判断された移行元オブジェクトのうち、特定の移行元オブジェクトに対しては、その移行元オブジェクトに対応する、予め用意された移行先オブジェクトを実行するものを用いても良い。
【０００８】
また、使用頻度情報を、移行元オブジェクトが含まれるページ単位で、使用頻度の高いオブジェクトであるか否かを示す情報とし、第２の記憶手段として、所定数の、第２所定サイズの記憶領域を有するものを用い、ページと第２の記憶手段の記憶領域の対応関係を管理するための管理手段を、付加し、オブジェクト変換実行手段として、ある移行元オブジェクトの変換によって得られた移行先オブジェクトを、管理手段によって、その移行元オブジェクトが含まれるページに対応づけられている、第２の記憶手段の記憶領域に記憶する手段を採用することも出来る。また、第２の記憶手段が備える記憶領域の数を変更するための変更手段を付加しても良い。
【０００９】
管理手段として、各記憶領域内の移行先オブジェクトが利用された時間順をも管理し、全記憶領域が移行先オブジェクトの記憶に使用されている状態で、第２の記憶手段に、新たなページに属する移行元オブジェクトに相当する移行先オブジェクトを記憶する必要が生じた場合には、最も過去に利用された記憶領域内の移行先オブジェクトをパージし、その記憶領域を新たなページ用の記憶領域とする手段を用いても良い。
【００１０】
さらに、管理手段として、各記憶領域内の移行先オブジェクトを利用しているプロセス数をも管理し、全記憶領域が移行先オブジェクトの記憶に使用されている状態で、第２の記憶手段に、新たなページ内の移行元オブジェクトに相当する移行先オブジェクトを記憶する必要が生じた場合には、プロセス数が所定値以下の記憶領域の中で最も過去に利用された記憶領域内の移行先オブジェクトをパージする手段を用いることも出来る。
【００１１】
また、オブジェクト変換実行手段として、判断手段によって使用頻度の高いオブジェクトであると判断された複数の移行元オブジェクトに相当する移行先オブジェクトを作成する機能を有する手段を用いても良い。このような機能を持たせておけば、移行元オブジェクトを、移行先アーキテクチャ用のオブジェクトに変換する際の自由度が増すので、より良いオブジェクトへの変換が可能となる。
【００１２】
なお、本発明のオブジェクト変換装置は、いわゆる、プロセッサを利用した装置となるが、上記のような動作をさせるために専用に設計したプロセッサを用いても実現でき、一般的なコンピュータ内のプロセッサに、プログラム記録媒体を介して、所定のプログラムを供給することによっても実現できる。
【００１３】
【発明の実施の形態】
以下、本発明の実施の形態を、図面を参照して、具体的に説明する。
本発明の一実施形態によるオブジェクト変換装置は、あるオブジェクトを変換・実行する際に、静的なオブジェクト変換と動的なオブジェクト変換を利用する。このため、実施形態のオブジェクト変換装置の全体的な動作を説明する前に、まず、動的なオブジェクト変換を行う際の、本装置の動作手順を説明することにする。なお、実施形態のオブジェクト変換装置は、コンピュータに、動的変換用プログラム（一種のオペレーティングシステム）をインストールすることによって実現された装置であるため、以下では、そのハードウェア構成の説明は省略する。
【００１４】
オブジェクト変換装置は、他のアーキテクチャ用のオブジェクトから、自身のアーキテクチャ用のオブジェクトを得るために、オペコードテーブル、オペレーションテーブル、スケルトンテーブルと名付けたテーブルを利用する。
【００１５】
図１に模式的に示したように、オペコードテーブルは、メインオペコードテーブルと２つのサブオペコードテーブルからなる。オペコードテーブルは、他のアーキテクチャ用の命令オブジェクト（以下、ＡＳＰ命令オブジェクトと表記する）のオペコードから、後述するオペレーションテーブルへのポインタ（再配置アドレス）を得るためのテーブルであり、メインオペコードテーブル内の、０ｘ００〜０ｘＦＤにより参照されるデータは、ＡＳＰ命令オブジェクトに含まれるオペコード０ｘ００〜０ｘＦＤ用の、オペレーションテーブルのテーブル要素へのポインタとなっている。また、メインオペコードテーブル内の、０ｘＦＥ、０ｘＦＦにより参照されるデータは、それぞれ、０ｘＦＥ用、０ｘＦＦ用サブオペコードテーブルへのポインタとなっている。そして、０ｘＦＥ用サブオペコードテーブルの、０ｘ００〜０ｘＦＦにより参照されるデータは、オペコード０ｘＦＥ００〜０ｘＦＥＦＦ用の、オペレーションテーブルのテーブル要素へのポインタとなっており、０ｘＦＦ用サブオペコードテーブルの、０ｘ００〜０ｘＦＦにより参照されるデータは、オペコード０ｘＦＦ００〜０ｘＦＦＦＦ用の、オペレーションテーブルのテーブル要素へのポインタとなっている。
【００１６】
要するに、ＡＳＰ命令オブジェクトのオペコードには、１バイトのものと２バイトのものがあり、２バイトのオペコードは、第１バイトが、０ｘＦＥ、或いは、０ｘＦＦとなっている。このため、実施形態のオブジェクト変換装置では、オペコードテーブルとして上記構成のものを採用し、ＡＳＰ命令オブジェクトの各オペコードから、オペレーションテーブルへのポインタが得られるようにしている。
【００１７】
図２に示したように、オペレーションテーブルは、固定長部（１）と固定長部（２）とからなる複数のテーブル要素を持つテーブルとなっている。固定長部（１）には、識別コード、変換規則情報、例外処理チェック情報、オブジェクトコード長、解析処理エントリ、オペランドパターン処理エントリが記憶されており、固定長部（２）には、スケルトンテーブル内の対応するテーブル要素へのポインタが記憶されている。
【００１８】
固定長部（１）内の変換規則情報は、次のＡＳＰ命令オブジェクトを併せた形でオブジェクト変換を行うか否かを指定する情報となっている。例外処理チェック情報は、対応するＡＳＰ命令オブジェクトのオペランドの指定値のチェック方法を指定する情報となっている。オブジェクトコード長は、対応するＡＳＰ命令オブジェクトのオブジェクトコード長を規定する情報となっている。解析処理エントリは、ＡＳＰ命令オブジェクトを解析するために実行すべき処理のエントリアドレスとなっており、動的オブジェクト変換を行っても効果がない命令に対しては、動的オブジェクト変換に因らない処理手順に関するエントリが設定されている。また、オペランドパターン処理エントリは、オペランドパターン処理のエントリアドレスとなっている。なお、固定長部（１）内の識別コードは、テーブル要素の内容を識別し易いようにするために記憶させているコードであり、オブジェクト変換時には利用されないコードとなっている。
【００１９】
スケルトンテーブルは、共通プロトタイプ部とＣＩＳＣ命令プロトタイプ部からなる。共通プロトタイプ部は、各種の命令の変換時に共通に使用されるプロトタイプに関する情報からなる。ＣＩＳＣ命令プロトタイプ部には、ＡＳＰ命令のＣＩＳＣ命令に対応するプロトタイプ仕様の部分からなり、オペレーションテーブル内に記憶されているスケルトンテーブルのポインタは、ＣＩＳＣ命令プロトタイプ部内のテーブル要素のポインタとなっている。
【００２０】
図３に、スケルトンテーブルのＣＩＳＣ命令プロトタイプ部の構成を示す。図示したように、スケルトンテーブルのＣＩＳＣ命令プロトタイプ部は、固定長部と可変長部とからなる複数のテーブル要素を有する。固定長部には、識別コード、ソートキー情報、チェーンポインタ、交換情報数、ネイティブコード長が設定されており、可変長部には、交換情報とネイティブコード情報が設定されている。
【００２１】
可変長部に設定されているネイティブコード情報は、移行先アーキテクチャ用の、コードを埋め込むべき部分が空きとなっているオブジェクトコード（すなわち、オブジェクトコードのスケルトン）であり、交換情報は、そのオブジェクトコードに、空いている部分の位置やその部分に埋め込むべきコードのタイプ等を指定する情報となっている。
【００２２】
固定長部に設定されている交換情報数、ネイティブコード長は、この可変長部に設定される交換情報の数とネイティブコード情報の長さを表す情報となっている。また、ソートキー情報は、共通プロトタイプ部のテーブル要素を指定する情報となっている。チェーンポインタは、スケルトンテーブル内の他のテーブル要素へのポインタであり、１つのＡＳＰ命令が複数のスケルトンの組み合わせで構成される場合などにそれらのスケルトンを関連づけるために用いられている。なお、チェーンの最終要素であるテーブル要素には、チェーンポインタとして“ＥＯＦ”が設定される。固定長部内の識別コードは、オペレーションテーブル内の識別コードと同様に、テーブル要素の内容を識別し易いようにするために記憶させている、オブジェクト変換時には利用されないコードである。
【００２３】
本装置では、これらのテーブルに基づき、ＡＳＰ命令オブジェクトが、以下のような手順で移行先アーキテクチャの命令オブジェクトに変換される。
まず、ＡＳＰ命令オブジェクトのオペコードを用いて、オペコードテーブルが検索され、オペレーションテーブルのポインタが取得される。次いで、オペレーションテーブル内の、当該ポインタで識別されるテーブル要素が読み出される。そして、そのテーブル要素に含まれるスケルトンテーブルのポインタに基づき、スケルトンテーブルのテーブル要素の内容（交換情報、ネイティブコード情報等）が読み出され、可変部分を組み込んだ移行先オブジェクトが作業用領域に展開される。この際、チェーンポインタが設定されていた場合には、さらに、スケルトンテーブルの他のテーブル要素の内容も読み出され、当該内容を用いて作成された移行先命令オブジェクトが作業領域に追加される。この処理（移行先命令オブジェクトの展開）は、ＡＳＰ命令オブジェクトが最も短時間で実行可能なものに変換されるように行われる（そのような処理を可能とする処理手順のエントリが、解析処理エントリ並びにオペランドパターン処理エントリに設定されている）。
【００２４】
そして、オペレーションテーブルから読み出された変換規則情報が、次ＡＳＰ命令を併せた形でオブジェクト変換を行うことを指示するものであった場合には、次のＡＳＰ命令オブジェクトに対しても同様の処理が行われる。そして、変換規則情報が、次ＡＳＰ命令を併せた形でオブジェクト変換を行わないこと（オブジェクト変換を中断すること）を指示するものであった場合には、作業領域に格納しておいた移行先命令オブジェクト群の最適化が行われ、最適化を行った移行先命令オブジェクト群が、実際に使用するオブジェクトとしてメモリに格納される。
【００２５】
以下、上記動的オブジェクト変換処理を、実際の例を用いてさらに具体的に説明する。
ＡＳＰ命令は、汎用レジスタを多く備えるアーキテクチャ用の命令であるため、本装置では、メモリの一領域に汎用レジスタ群がマッピングされる。このため、汎用レジスタを利用するＡＳＰ命令は、メモリ上の一記憶領域を利用する命令に変換される。例えば、汎用レジスタを利用するＡＳＰ命令の１つに、図４（ａ）に示したような命令形式をとる、ＬＢ（Ｌｏａｄ  Ｂｉｔ）という命令がある。この命令は、主記憶上の指定されたビット長の領域の内容を、指定された汎用レジスタへ置数する命令となっている。より具体的には、この命令は、図４（ｂ）にその一例を示したように、Ｂ、Ｘ、Ｄから求められる半語領域の先頭からＬ１ビット目のビットからビット長Ｌ２の領域の内容を、Ｒ部で指定されている汎用レジスタの下位Ｌ２ビットに置数し、当該汎用レジスタの残りのビットに“０”を設定する命令となっている。また、Ｌ１、Ｌ２で指定されるビット領域は、半語境界に跨ってはならない命令となっている（跨っていた場合、オペレーション例外となる）。
【００２６】
このＬＢ命令を一般的に（Ｌ１，Ｌ２の値に因らず）成立する移行先命令オブジェクトに変換した場合、図５（ａ）に示したものとなるが、本装置では、図５（ｂ１）〜（ｂ８）に示したように、ＬＢ命令が、そのオペランドの値に応じたオブジェクトに変換される。なお、図５において、ＥＤＩは、汎用レジスタ群として使用される領域の先頭のポインタであり、Ｒｘｘは、Ｒ部指定されている汎用レジスタに対応する記憶領域のオフセットである。
【００２７】
また、図６に示したようなＡＳＰ命令▲１▼〜▲４▼を変換する場合にも、最適化が行われる。この場合、各命令を個々に変換すると、汎用レジスタ０、１の内容を対応するメモリ上の記憶領域ＧＲ０、ＧＲ１に移すのには内部レジスタを介する必要があるため、同図、中央に記したように、１２ステップからなる命令列が得られることになる。
【００２８】
しかしながら、ＡＳＰ命令▲１▼、▲３▼において、汎用レジスタ０は、計算課程で現れる値の格納に用いられているだけであり、その値は、ＡＳＰ命令▲４▼において、ＡＳＰ命令列の「答え」に書き換えられてしまう。すなわち、▲１▼、▲３▼に相当する処理時には内部レジスタへのみ目的とする値が設定されるようにしておけば、当該値をＧＲ０に格納する必要はない。ＧＲ１についても同様のことが言えるため、結局、図６の右側に示したような６ステップの命令列で、ＡＳＰ命令列と同じ結果が得られることになる。本装置は、作業領域に展開したオブジェクトを、実際に使用する移行先オブジェクトとしてメモリに格納する際に、このよう最適化を行うように構成されている。
【００２９】
次に、図７ないし図９を用いて、本オブジェクト変換装置の全体的な動作を説明する。図７に模式的に示したように、本オブジェクト変換装置が動作する場合、そのメモリ１１は、変換して実行すべきオブジェクトであるアプリケーションを記憶するためのアプリケーション格納領域２１と、動的変換用プログラムが記憶されるプログラム記憶領域２２と、静的変換オブジェクトを記憶するための静的変換オブジェクト展開域２３と、動的変換オブジェクトが記憶される動的変換オブジェクト展開域２４と、データ域２５に分割されて使用される。各領域は、その用途のためのみに使用される領域となっており、アプリケーション格納領域、プログラム記憶領域、静的変換オブジェクト展開域には、アプリケーション、動的変換用プログラム、静的変換オブジェクトが、記憶装置１２からローディングされる。なお、前述したオペコードテーブル、オペレーションテーブル、スケルトンテーブルも、動的変換用プログラムの一部として記憶装置１２からローディングされる。また、アプリケーション格納領域２１、プログラム記憶領域２２、静的変換オブジェクト展開域２３は、固定サイズの領域となっているが、動的変換オブジェクト展開域２４とデータ域２５の比率は変えられるように構成されている。そして、データ域２５には、変換対象とするアプリケーションオブジェクトの各ページを動的オブジェクト変換の対象とするか否かを指定するためのページテーブルが設定される。
【００３０】
図８に模式的に示したように、ページテーブルは、変換すべきアプリケーション（実際には、ＡＳＰアーキテクチャ用のＯＳ）がＮページ（実施形態では、１ページは４ｋＢ）であった場合、Ｎ個の情報記憶領域を有するよう構成される。ページテーブルは、本装置の動作に伴いその内容が更新されていくテーブルであり、初期状態では、動的オブジェクト変換の対象としないページに対応する情報記憶領域に、その旨を示す情報（本装置では、０ｘ００００００００）が設定され、動的オブジェクト変換の対象とするページに対応する情報記憶領域に、０ｘ１０００００００が設定されたテーブルとなっている。なお、図中、模式的に示してあるように、使用頻度が高いページを、動的オブジェクト変換を行うページとして指定しておく。
【００３１】
また、動的変換オブジェクト展開域は、図示したように、動的変換オブジェクト展開域として使用するメモリの容量に応じた数のセグメントに分割されて使用される。なお、動的変換の対象とするページの数は、動的変換オブジェクト展開域２４に設定されるセグメントの数とは無関係に設定される。
【００３２】
本装置では、このページテーブル、動的変換オブジェクト展開域が次のように利用されて、アーキテクチャの異なるアプリケーションが変換、実行される。
図９に示したように、アプリケーションを変換、実行する際、まず、ＡＳＰ命令がフェッチされ（ステップＳ１０１）、その命令の種類が判断される（ステップＳ１０２）。そして、当該命令が動的変換域切替命令であった場合（ステップＳ１０２；切替命令）には、切替処理（ステップＳ１０３）が行われる。なお、動的変換域切替命令は、動的オブジェクト格納域並びに管理のために使用される記憶領域を初期化させる（切替処理を実行させる）ために、アプリケーションに挿入しておく命令となっている。
【００３３】
また、命令が動的変換域切替命令ではなく、分岐命令でもなかった場合（ステップＳ１０２；その他）には、静的変換オブジェクトによる命令実行（ステップＳ１０４）が行われた後、ステップＳ１０１からの処理が再度行われる。
【００３４】
命令が分岐命令であった場合（ステップＳ１０２；分岐命令）、ページテーブルを参照して、分岐先が動的変換対象領域であるか否かが判断される（ステップＳ１０５）。そして、分岐先が動的変換対象領域でなかった場合（ステップＳ１０５；Ｎ）には、静的変換オブジェクトを用いた命令実行（ステップＳ１０６）の後、ステップＳ１０１に戻り、次の命令に対する処理が行われる。
【００３５】
一方、分岐先が動的変換対象領域であった場合（ステップＳ１０５；Ｙ）、その分岐命令が静的に実行（ステップＳ１０７）された後に、動的変換対象領域にある次の命令がフェッチされ（ステップＳ１０８）、当該命令に関する動的変換が完了しているか否かが判断される（ステップＳ１０９）。この判断手順の詳細については後述するが、例えば、ページテーブルの内容が初期値のままであった場合、ステップＳ１０９において動的変換がなされていないと判断され（Ｎ）、オペレーションテーブルに記憶されている情報に基づき、その命令が動的変換が効果的な命令であるか否かが判断される（ステップＳ１１０）ことになる。
【００３６】
当該命令が動的変換が効果的な命令であった場合（ステップＳ１１０；Ｙ）には、既に説明したような手順で動的変換が行われる。そして、その結果が動的変換オブジェクト用のあるセグメントに格納され、ページテーブルへのセグメント番号の設定が行われていなかった場合には、ページテーブルにそのセグメントのセグメント番号が設定される（ステップＳ１１１）。この際、セグメントテーブルと名付けたテーブルの内容も更新されるのであるが、その詳細についても後述することにする。
【００３７】
その後、動的変換した命令が実行され（ステップＳ１１２）、実行した命令が分岐命令やページの最終命令等、動的変換対象領域の最後の命令であった場合には（ステップＳ１１４；Ｙ）、ステップＳ１０１からの処理が行われる。一方、実行した命令が動的変換対象領域の最後の命令でなかった場合（ステップＳ１１４；Ｎ）には、ステップＳ１０８からの処理が行われる。
【００３８】
そして、フェッチされた命令が動的変換が未完了の命令であり（ステップＳ１０９；Ｎ）、かつ、動的変換が効果的な命令ではなかった場合（ステップＳ１１０；Ｎ）には、当該命令が静的変換オブジェクトをコールするオブジェクトに変換される（ステップＳ１１３）。次いで、その命令が実行され、ステップＳ１１４に進み、動的変換領域が終了したか否かが判断される。
【００３９】
また、フェッチされた命令が動的変換が既に完了している命令であった場合（ステップＳ１０９；Ｙ）、その変換済みの命令が即座に実行（ステップＳ１１２）された後に、ステップＳ１１４が実行される。
【００４０】
以下、変換対象オブジェクトが、図１０に示したものであり、領域１、４が動的変換対象として設定され、領域０、２、３が動的変換対象外として設定されている場合を例に、上記した動作をさらに具体的に説明する。
【００４１】
この場合、各領域の各命令に対して、以下のような処理が行われる。領域０の命令（１）に対しては、動的変換オブジェクト展開域が初期化される。命令（２）に対しては、テスト命令ＴＳＴが実行される。命令（３）に対しては、命令が無条件分岐命令ＪＭＰなので、その分岐先が動的変換対象領域であるか否かがチェックされる。そして、分岐先が動的変換対象領域であるので、次の命令（５）に対して、当該命令の動的変換が完了しているか否かがチェックされることになる。一方、命令（４）は、無条件分岐命令ＪＭＰではあるが、その分岐先が動的変換対象領域ではないので、領域２内の次の命令に対しては、当該命令の動的変換が完了しているか否かのチェックは行われない。
【００４２】
また、領域１内の命令（５）は、動的変換が効果的な命令であるとされている加算命令ＡＤＤであるので、動的変換が未完了である場合には、動的変換が行われた後、実行される。当然、動的変換が完了していた場合には、その動的変換後のオブジェクトが即座に実行される。一方、ＣＶＤ命令（６）は、動的変換領域内に存在する命令ではあるが、動的変換が効果的でないとされている命令となっている。このため、この命令は、未変換である場合には、静的オブジェクトをコールするオブジェクトに変換される。
【００４３】
他の命令についても同様に、その命令が動的変換対象領域内にあるか、動的変換が効果的な命令であるか否か、動的変換が既に行われているか否か、動的変換対象領域への分岐命令であるか等に応じた手順で、その処理（実行）が行われる。
【００４４】
以下、本装置の動作をさらに詳細に説明する。
一般的には、動的オブジェクト変換の対象とするページの数は、動的変換オブジェクト用セグメントの数よりも大きく設定されるので、本装置を使用し続けていると、空いている動的変換オブジェクト用セグメントが存在しないという状態が生じ得る。このため、本装置では、動的変換オブジェクト用セグメントの管理を、セグメントテーブルと名付けたテーブルをも利用して行っている。
【００４５】
セグメントテーブルは、１個の動的変換オブジェクト用セグメントに１個設けられるテーブルであり、図１１に示したように、セグメントテーブルには、対応ページ番号、有効／無効フラグ、実行プロセス数、ロックワード、セグメント内空きポインタ、対応セグメント先頭アドレス、ＬＲＵ（Ｌｅａｓｔ  Ｒｅａｃｅｎｔｌｙ  Ｕｓｅｄ）制御用リバース／フォワードアドレス等が記憶される。なお、セグメントテーブルは、対応セグメント先頭アドレスによって、１つの変換オブジェクト用セグメントに対応づけられており、対応ページ番号によって、ページテーブルと対応づけられている。
【００４６】
セグメントテーブル内のＬＲＵ制御用リバース／フォワードアドレスは、空いている動的変換オブジェクト用セグメントが存在しなくなったときに、パージするセグメントを特定するために使用される情報となっている。
【００４７】
より具体的には、図１２（１）に模式的に示したように、あるセグメントテーブルのフォワードアドレスを読み出せば、そのセグメントテーブルに対応するセグメントの次に使用されたセグメントに関するセグメントテーブルアドレスが得られるようにフォワードアドレスは設定される。さらに、あるセグメントテーブルのリバースアドレスを読み出せば、そのセグメントテーブルに対応するセグメントの１つ前に使用されたセグメントに関するセグメントテーブルアドレスが得られるようにリバースアドレスは設定される。また、最も最近使用した動的オブジェクト用セグメントに関するセグメントテーブルのフォワードアドレス、最も過去に使用した動的オブジェクト用セグメントに関するセグメントテーブルのリバースアドレスには、それぞれ、その旨を示す情報であるＮＵＬＬが設定されるようセグメントテーブルは管理される。
【００４８】
また、本装置内には、最も最近使用したセグメントに関するセグメントテーブルのアドレスである最新セグメントテーブルアドレスと最も過去に使用されたセグメントに関するセグメントテーブルのアドレスである最古セグメントテーブルアドレスを記憶するための領域も設けられている。そして、セグメントをパージしなければならなくなった場合には、最新／最古セグメントテーブルアドレス並びにそれらのアドレスで識別されるセグメントテーブル内のフォワード／リバースアドレス等を用いて、パージすべきセグメントの特定と、そのセグメントが最も最近使用されたことを示すようにセグメントテーブル内の関係するデータを書き換える処理が行われる。
【００４９】
例えば、図１２（１）に示した状態で、１つのセグメントテーブル並びに対応するセグメントがパージされる場合には、通常、最古セグメントテーブルアドレスで識別されるセグメントテーブル並びに対応するセグメントが以下の手順でパージされる。まず、最古セグメントテーブルアドレスで識別されるセグメントテーブルからフォワードアドレスを読み出すことによって、次に古いセグメントテーブル（図では、Ｂ）が求められる。そして、セグメントテーブルＢのリバースアドレスにＮＵＬＬが設定されるとともに、最古セグメントテーブルアドレスとしてセグメントテーブルＢのアドレスが設定される。次いで、対応する動的オブジェクト用セグメントの初期化とページテーブル内の関連する情報の初期化が行われる。さらに、最新セグメントテーブルアドレスで識別されるセグメントテーブルのフォワードアドレスにセグメントテーブルＡのアドレスが設定される。次いで、セグメントテーブルＡのリバースアドレスに最新セグメントテーブルアドレス（Ｄ）が設定され、フォワードアドレスにＮＵＬＬが設定される。その後、最新セグメントテーブルアドレスがセグメントテーブルＡのアドレスが設定され、パージが完了する。
【００５０】
図１１に示してあるように、動的変換オブジェクト用セグメントは、６４ｋＢのサイズを有し、そのうち、１６ｋＢが、命令アドレス変換テーブルとして使用されている。命令アドレス変換テーブルは、ＡＳＰ空間の対応するページ内の命令のアドレスと変換後の命令群の先頭アドレスとを対応づけるテーブルとなっており、例えば、命令アドレス変換テーブルの先頭に示してある“００００１０００”（１６進表記）は、対応するページ内の相対アドレス０の命令に対応する動的オブジェクトがセグメントの先頭から“００００１０００”の位置から始まっていることを示す情報となっている。既に説明したように、ページテーブルの、ある動的変換対象ページに関する情報は、そのページ内の命令が１命令でも動的変換されていれば、有意なセグメント番号を有するものとなる。すなわち、処理対象となっている命令が動的変換されていなくとも、ページテーブルの対応する情報が有意なセグメント番号を有するものとなっていることがある。このため、上述したステップＳ１０９では、実際には、対象命令を含むページにセグメントが割り当てられていた場合、この命令アドレステーブルの内容が参照されて、動的変換が完了しているか否かが判定されている。
【００５１】
また、ステップＳ１１１では、実際には、このセグメントテーブルを利用して、図１３に示したような手順の処理が行われている。
すなわち、動的変換を行うことが必要な命令がフェッチされた場合、他プロセスによって変換処理が行われているか否かを確認するために、まず、変換処理のロックワードの取得が試みられる（ステップＳ２０１）。そして、ロックワードが取得できた場合、すなわち、変換処理を実行できる状況にある場合（ステップＳ２０２；Ｙ）、ページテーブルを参照して、対象命令を含むページに対してセグメントテーブルが獲得（用意）されているか否かが判断される（ステップＳ２０４）。セグメントテーブルが獲得されていた場合（ステップＳ２０４；Ｙ）、既に説明したような手順で動的オブジェクトが生成され（ステップＳ２０８）、対象セグメントテーブルの実行プロセス数がカウントアップされる（ステップＳ２０９）。次いで、実行のため、対象セグメントテーブルのロックワードが取られ（ステップＳ２１０）、変換処理中のロックが解除される（ステップＳ２１１）。そして、その動的変換されたオブジェクトが実行され、実行完了後、対象セグメントテーブルのロックが解除される。
【００５２】
一方、動的変換を行うべき命令が、セグメントテーブルが獲得されていないページ内の命令であった場合（ステップＳ２０４；Ｎ）、空きセグメントテーブルがあるか否かが判断される（ステップＳ２０５）。なお、この判断は、有効／無効フラグの内容を確認することにより行われる。
【００５３】
空きセグメントテーブルが存在した場合（ステップＳ２０５；Ｙ）には、動的変換を行うべき命令を含むページに割り当てる空き動的オブジェクトセグメントを決定し、当該動的オブジェクトセグメントを初期化され、また、空きセグメントテーブルにその動的オブジェクトセグメントに関する情報が記憶される（ステップＳ２０６）。次いで、ページテーブルにその新たなセグメントテーブルのポインタが設定され（ステップＳ２０７）、既に説明したステップＳ２０８からの処理が行われる。
【００５４】
一方、空きセグメントテーブルが存在していなかった場合、ＬＲＵ制御のロックワードの取得が試みられる（ステップＳ２１２）。そして、他プロセスによりＬＲＵ制御が行われていた場合（ステップＳ２１３；Ｙ）、すなわち、ロックワードが取得できなかった場合には、変換処理中のロックが解除され（ステップＳ２１６）、動的変換ではなく、静的変換したオブジェクトが実行される。
【００５５】
また、ＬＲＵ制御のロックワードが取得できた場合（ステップＳ２１３；Ｎ）、セグメントテーブルを獲得するための処理であるＬＲＵ制御処理が行われる（ステップＳ２１４）。そして、ＬＲＵ制御処理において、セグメントテーブルが獲得された場合（ステップＳ２１５；Ｙ）には、ステップＳ２０８からの処理が実行され、獲得されなかった場合（ステップＳ２１５；Ｎ）には、ステップＳ２１６からの処理が行われる。
【００５６】
図１４に示したように、ＬＲＵ制御処理時には、まず、１つのセグメントテーブルが選択される（ステップＳ３０１）。図から明らかなようにステップＳ３０１は、繰り返し実行されるステップとなっているが、最初に実行されるステップ３０１では、最も過去に利用されたセグメントテーブルが選択される。そして、２回目以降に実行されるステップＳ３０１では、前回選択されたセグメントテーブルの次に、利用された時間が過去のセグメントテーブルが選択される。
【００５７】
そして、そのような選択が行えた場合（ステップＳ３０２；Ｎ）には、パージ処理を行うために、当該セグメントテーブルとその前後の（フォワードアドレス、リバースアドレスで関連づけられている）セグメントテーブルのロックワードの取得が試みられる（ステップＳ３０３）。対象セグメントテーブルのロックワードが取得出来なかった場合、すなわち、他プロセスによって当該セグメントテーブルが関係するオブジェクトが実行中であった場合（ステップＳ３０４；Ｙ）には、ステップＳ３０１に戻り、次のセグメントテーブルが選択される。一方、ロックワードが取得できた場合（ステップＳ３０４；Ｎ）、実行プロセス数が“０”であるかが判断され、“０”でなかった場合（ステップＳ３０５；Ｎ）には、パージ処理のロックが解除（ステップＳ３０６）された後、次のセグメントテーブルが選択される。一方、実行プロセス数が“０”であった場合（ステップＳ３０５；Ｙ）には、そのセグメントテーブルを、現在処理対象となっている命令を含むページ用のセグメントテーブルとして使用するために、ページテーブル内のそのセグメントテーブルに関するポインタがクリアされる（ステップＳ３０７）。次いで、対象セグメントテーブルの内容の書換（ステップＳ３０８）と、対応する動的オブジェクト用セグメントの初期化（ステップＳ３０９）が行われる。次いで、ページテーブルの該当ページ用の記憶領域に、そのセグメントテーブルのポインタが設定され（ステップＳ３１０）、パージ処理のロックが解除され（ステップＳ３１１）、ＬＲＵ制御処理が終了する。すなわち、ステップＳ２１５で“Ｙ”側への分岐が行われる状態でＬＲＵ制御処理が終了する。
【００５８】
一方、実行ロック中でなく、かつ、実行プロセス数が“０”のセグメントテーブルが見いだせなかった場合（ステップＳ３０２；Ｙ）には、セグメントテーブルが獲得されることなく、パージ処理のロックが解除されて（ステップＳ３１１）、ＬＲＵ制御処理が終了する。
【００５９】
以上、詳細に説明したように、実施形態のオブジェクト変換装置では、動的オブジェクト変換と静的オブジェクト変換を組み合わせた形で、オブジェクトが変換実行されるので、従来のオブジェクト変換を行う装置に比して、効率的にメモりが利用された状態で、すなわち、より高速に動作することになる。また、動的変換オブジェクト展開域のサイズや、動的変換対象とするページを設定できるように構成されているので、対象とするアプリケーションの内容や実際の使用状況に即した運用が行える装置にもなっている。
【００６０】
＜変形形態＞
実施形態のオブジェクト変換装置は、各種の変形が可能である。例えば、１ページのサイズと、動的変換オブジェクトのセグメントのサイズは、実施形態で示したものとしなくとも良いことは当然である。また、アプリケーションの中には、自身の内容を書き換えてしまうものが存在するが、図１５に模式的に示したように、そのような書き換え（図では、オブジェクトＢｘがＢｙに書き換えられている）が行われた場合、対応する動的変換オブジェクトのみを書き換え後のオブジェクトに相当する動的変換オブジェクトに修正できるように装置を構成しておいても良い。
【００６１】
【発明の効果】
本発明によれば、従来のオブジェクト変換を行う装置に比して、メモリが有効が利用でき、その結果として、効率的に動作するオブジェクト変換装置を得ることが出来る。
【図面の簡単な説明】
【図１】本発明の一実施形態によるオブジェクト変換装置が備えるオペコードテーブルの説明図である。
【図２】実施形態のオブジェクト変換装置が備えるオペレーションテーブルの説明図である。
【図３】実施形態のオブジェクト変換装置が備えるスケルトンテーブルのＣＩＳＣプロトタイプ部の説明図である。
【図４】ＡＳＰ命令の一つであるＬＢ命令の説明図である。
【図５】実施形態のオブジェクト変換装置がＬＢ命令に対して実行する動的オブジェクト変換処理の説明図である。
【図６】実施形態のオブジェクト変換装置が実行する動的オブジェクト変換処理の説明図である。
【図７】実施形態のオブジェクト変換装置が備えるメモリの利用方法の説明図である。
【図８】実施形態のオブジェクト変換装置内に設定されるページテーブルと動的変換オブジェクト展開域の説明図である。
【図９】実施形態のオブジェクト変換装置の全体的な動作手順を示した流れ図である。
【図１０】実施形態のオブジェクト変換装置の全体的な動作手順を説明するためのプログラムリストである。
【図１１】実施形態のオブジェクト変換装置内に設けられるセグメントテーブルと動的変換オブジェクト用セグメントの説明図である。
【図１２】実施形態のオブジェクト変換装置で、動的変換オブジェクトを記憶するためのセグメントをパージする必要が生じたときに行われる処理の説明図である。
【図１３】実施形態のオブジェクト変換装置が実行する動的オブジェクト変換処理の詳細な流れ図である。
【図１４】実施形態のオブジェクト変換装置が実行するＬＲＵ制御処理の流れ図である。
【図１５】実施形態のオブジェクト変換装置の変形形態の説明図である。
【符号の説明】
１１  メモリ
１２  記憶装置
２１  アプリケーション格納領域
２２  プログラム記憶領域
２３  静的変換オブジェクト展開域
２４  動的変換オブジェクト展開域
２５  データ域
【図１】
0003631896.tif 000002
【図２】
0003631896.tif 000003
【図３】
0003631896.tif 000004
【図４】
0003631896.tif 000005
【図５】
0003631896.tif 000006
【図６】
0003631896.tif 000007
【図７】
0003631896.tif 000008
【図８】
0003631896.tif 000009
【図９】
0003631896.tif 000010
【図１０】
0003631896.tif 000011
【図１１】
0003631896.tif 000012
【図１２】
0003631896.tif 000013
【図１３】
0003631896.tif 000014
【図１４】
0003631896.tif 000015
【図１５】
0003631896.tif 000016