(57)【要約】【課題】ＣＰＵに対応していない非ネイティブコードで記述されたプログラムをＣＰＵが処理可能なネイティブコードにリアルタイムで変換する命令セット変換装置において、例えばＪａｖａ（登録商標）バイトコードにあるような解決処理を必要とするプログラムコードを効率よくコード変換することを可能とする。【解決手段】非ネイティブ命令セットのプログラムを等価なネイティブ命令セットのプログラムに変換する命令セット変換装置であって、入力された非ネイティブコードを変換してネイティブコードを生成する命令デコーダ２１５と、解決処理により得られる付随情報を記憶する解決キャッシュ２２０とを備え、解決処理の必要な非ネイティブコードが入力された場合に、この非ネイティブコードに付加されたインデックス値に基づき解決キャッシュ２２０内の記憶データが検索されて、この解決キャッシュ２２０から対応する付随情報が命令デコーダ２１５に供給されるように構成する。【選択図】        図４
2005004685.tif 000002
【特許請求の範囲】
【請求項１】
処理内容を特定するのに離れたアドレスに格納された付随情報が必要な非ネイティブコードを含む非ネイティブ命令セットのプログラムを等価なネイティブ命令セットのプログラムに変換する命令セット変換装置であって、
入力された非ネイティブコードを変換してネイティブコードを生成する命令デコーダと、
上記付随情報を記憶するとともに上記非ネイティブコードを含む命令列中で当該非ネイティブコードに関連されたインデックス値に基づいて当該インデックス値に対応する上記付随情報を検索して上記命令デコーダに供給する連想記憶機構と、
を備えていることを特徴とする命令セット変換装置。
【請求項２】
上記非ネイティブ命令セットのプログラムは上記付随情報の値がそれぞれ異なる複数のプログラムグループを含み、
上記連想記憶機構は、異なるプログラムグループ間の上記付随情報を記憶するとともに上記インデックス値と上記プログラムグループを識別するグループインデックスとに基づいてこれらグループインデックスと上記インデックス値とに対応する上記付随情報を検索するように構成されていることを特徴とする請求項１記載の命令セット変換装置。
【請求項３】
上記連想記憶機構は、記憶した複数の付随情報のうちどの付随情報を廃棄するかを決定する判定手段を有し、記憶した付随情報を廃棄する際に上記判定手段の決定に従って廃棄が行われるように構成されていることを特徴とする請求項１又は２に記載の命令セット変換装置。
【請求項４】
上記連想記憶機構は、記憶情報の一部又は全部の廃棄を行うための制御レジスタを有していることを特徴とする請求項１〜３の何れかに記載の命令セット変換装置。
【請求項５】
条件に応じて複数の変換パターンを適用可能な非ネイティブコードを含む非ネイティブ命令セットのプログラムを等価なネイティブ命令セットのプログラムに変換する命令セット変換装置であって、
入力された非ネイティブコードを変換してネイティブコードを生成する命令デコーダと、
上記非ネイティブコードの変換パターンを特定する付随情報を記憶するとともに上記非ネイティブコードと上記の条件に関する情報に基づいて対応する上記付随情報を検索して上記命令デコーダに供給する連想記憶機構と、
を備えていることを特徴とする命令セット変換装置。
【請求項６】
データバス、アドレスバスおよび制御バスを有するバスシステムと、
該バスシステムに接続されたバスマスタ装置および第１のバススレーブ装置と、
データ端子が上記データバスに接続されるとともにアドレス信号線およびバスマスタ装置を待機させるウエイト信号を出力するウエイト信号線とが第１のバススレーブ装置に接続された第２のバススレーブ装置と、
を備えたことを特徴とする情報処理システム。
【請求項７】
上記第１のバススレーブ装置は、非ネイティブ命令セットのプログラムを上記第２のバススレーブ装置から読み込んで等価なネイティブ命令セットのプログラムに変換して上記バスマスタ装置に供給する命令セット変更機能を有することを特徴とする請求項６記載の情報処理システム。
【請求項８】
上記第１のバススレーブ装置は、圧縮データを上記第２のバススレーブ装置から読み込むとともに解凍して上記バスマスタ装置に供給するデータ変換機能を有することを特徴とする請求項６記載の情報処理システム。
【請求項９】
上記データ変換装置は、上記バスマスタ装置から書込みデータを受けて該書込みデータに従って上記第２のバススレーブ装置の圧縮データを更新するように構成されていることを特徴とする請求項８記載の情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、１つの命令セットを用いて記述されたプログラムを異なる命令セットの命令コードにリアルタイムで変換していくハードウェア、並びに、このようなハードウェアが接続される情報処理システムに関し、特にＪａｖａ（登録商標）バイトコード等により記述されたプログラムを異なる命令セットに対応したプロセッサで実行するのに有用な技術に関する。
【０００２】
【従来の技術】
１つの命令セットのプログラムを異なる命令セットのプロセッサで実行する従来の技術として、例えば、特許文献１に開示の技術がある。この技術はプロセッサとメモリとの間にコード変換装置を置き、プロセッサの命令フエッチ時に非ネイティブコードからネイティブコードへのコード変換を行うものである。ネイティブコードはコードスペースという仮想的なアドレス空間に配置し、実行する非ネイティブコード１バイトに対して２のべき乗倍のブロックを割り当てる。非ネイティブコードからネイティブコードへの変換は、非ネイティブ命令の命令コード毎に対応するネイティブコードを格納したテーブルを参照することにより、一つ一つの非ネイティブコード命令毎に変換が行われる。
【０００３】
なお、この明細書において、プロセッサに対応していない命令セットのことを「非ネイティブ命令セット」と、その命令コードのことを「非ネイティブコード」と、プロセッサに対応した命令セットのことを「ネイティブ命令セット」と、その命令コードのことを「ネイティブコード」と呼ぶ。また、ネイティブコードが仮想的に格納される上記コードスペースのことを「仮想ネイティブ空間」と呼ぶ。
【０００４】
また、本発明者は、先に、命令コードの変換をリアルタイムに行いつつレジスタを効率的に用いてスタック処理の高速化を図ったり、前後の命令コードを考慮してコード変換の最適化を図ったり、その他、キャッシュのヒット率の向上や、仮想ネイティブ空間のアドレス不足を解消することのできる命令セット変換装置について出願している（特願２００２−８７７７７号）。
また、ハードウェアの支援によらない通常のＪａｖａ（登録商標）バイトコードの処理方法は非特許文献１に詳しく記述されている。
【０００５】
【特許文献１】
米国特許第５８７５３３６号明細書（“Ｍｅｔｈｏｄ  ａｎｄ  ｓｙｓｔｅｍ  ｆｏｒ  ｔｒａｎｓｌａｔｉｎｇ  ａ  ｎｏｎ−ｎａｔｉｖｅ  ｂｙｔｅｃｏｄｅ  ｔｏ  ａ  ｓｅｔ  ｏｆ  ｃｏｄｅｓ  ｎａｔｉｖｅ  ｔｏ  ａ  ｐｒｏｃｅｓｓｏｒ  ｗｉｔｈ  ｉｎ  ａ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ”）
【非特許文献１】
ティム・リンドホルム、フランク・イェリン／著、野崎裕子／訳、「Ｊａｖａ仮想マシン仕様」、アジソン・ウェスレイ・パブリッシャーズ・ジャパン、１９９７年１２月発行
【０００６】
【発明が解決しようとする課題】
ところで、例えばＪａｖａバイトコードのような命令セットでは、個々の命令コードのバイナリー値だけでは命令の処理内容が特定されず、命令コードの変換を行うことが出来ないという場合がある。例えば、Ｊａｖａバイトコードには、或るレコード内の特定のフィールドにアクセスする命令があり、この命令には対象のレコードを指し示すインデックスが命令のパラメータとして与えられるが、命令実行のためにはそのレコードの型を参照してアクセスするフィールドがレコード内のどの位置にあるか、そのフィールドのオフセット値を調べる必要がある。
【０００７】
また、或るレコードの定数をロードする命令では、対象のレコードを指し示すインデックスが命令のパラメータとして与えられるが、この命令実行のためにはそのレコードにアクセスして定数値を得なければならない。
【０００８】
また、スタティックな変数にアクセスする命令では、スタティック変数の型やアドレスなどの情報を記述したレコードを指し示すインデックスがパラメータとして与えられるが、この命令実行のためにはそのレコードにアクセスして変数の情報を得なければならない。
このように命令実行のために必要な情報のことを本明細書では付随情報と呼ぶ。
【０００９】
Ｊａｖａバイトコードのプログラムでは、上記のような命令コードを扱うために１つのクラスの中にコンスタントプールと呼ばれるデータテーブルを備え、このコンスタントプールに各命令コードの付随情報が登録されるようになっている。そして、上記のような処理内容の特定されていない命令コードを実行する際には、命令コードに付加されたインデックスを頼りにコンスタントプールから付随情報を読み出し、それに基づき処理を行うようになっている。このような付随情報を求める処理のことをＪａｖａバイトコードでは解決と呼んでいる。
【００１０】
このように解決処理の必要なプログラムを特許文献１の技術でリアルタイムに変換しながら実行するには、命令コードとパラメータのインデックスが読み込まれた後、そのインデックスに基づきコンスタントプールから型情報を検索するサブルーチン処理にプログラムを一旦切り換え、ソフトウェア処理にて変数の型情報を検索させた後、この型情報に基づいて元のプログラムの命令コードを変換するという処理が必要となる。
しかしながら、このような解決処理を何度も繰り返していたのではプログラム動作の高速化が望めないという第１の課題がある。
【００１１】
また、上記のコンスタントプールは、クラスごとに異なる値を持つため、命令コードとパラメータのインデックスとが同じ値であっても、それにより得られる付随情報はプログラムグループが異なれば同一にはならない。従って、解決処理で得られた付随情報をキャッシュして流用するような場合でも、処理するプログラムグループが変われば付随情報のキャッシュも入れ替える必要がある。しかしながら、プログラムの文脈によっては、例えば、あるプログラムグループは実行頻度が高く、別のプログラムグループは実行頻度が低いというようなことがあり、また、プログラムグルーブによっては必要な解決処理が少なかったり多かったりと性質が異なる。従って、只、プログラムグループが変わるごとに付随情報のキャッシュを入れ替えていたのでは、プログラムの文脈やプログラムグループの性質によって解決処理の効率が悪くなるという第２の課題がある。
【００１２】
また、特許文献１の技術では、ＣＰＵとメモリシステム（メモリ単体或いはメモリとメモリコントローラなど）の間にコード変換装置を挿入しており、ＣＰＵがメモリにアクセスする際には常にコード変換装置を経由しなければならない。このような構成は、特にメモリシステムが高速である場合にＣＰＵによるメモリアクセスの大きなオーバーヘッドとなる。
【００１３】
一方、メモリアクセスのオーバーヘッドを減らすために、ＣＰＵとメモリシステムとコード変換装置とを同じバスに接続すると、ＣＰＵが仮想ネイティブ空間（コード変換装置）へアクセスしている間に、コード変換装置はメモリにアクセスしなければならないので、ＣＰＵとコード変換装置とで衝突が生じてしまう。このような問題は仕様の規定されたバスシステムを用いる場合には特に深刻である。
【００１４】
すなわち、特許文献１の技術では、ＣＰＵとコード変換装置とのバス衝突を避けるためにＣＰＵによるメモリアクセス性能が犠牲になっているという第３の課題があった。また、このような課題は、ハードウェアによる圧縮・解凍デバイスを介してメモリアクセスを行うことでメモリ領域よりも大きな容量のデータを扱うことを可能としたシステムにおいても同様に生じるものである（第４の課題）。
【００１５】
この発明の目的は、上記第１と第２の課題を解決して、解決処理等が必要なプログラムのコード変換を効率良く行うことが可能な命令セット変換装置を提供することにある。
この発明の他の目的は、ＣＰＵがデータ変換装置（命令セットの変換装置や圧縮・解凍の変換装置）を介してメモリアクセスを行うシステムにおいて、上記第３と第４の課題を解決して、ＣＰＵが直接にメモリアクセスする場合にもオーバーヘッドのないメモリアクセス性能を得ることの出来る情報処理システムを提供することにある。
この発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添附図面から明らかになるであろう。
【００１６】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を説明すれば、下記のとおりである。
すなわち、付随情報が必要な非ネイティブコードを含むプログラムを等価なネイティブ命令セットのプログラムに変換する命令セット変換装置であって、上記非ネイティブコードに付加されたインデックス値に基づき対応する付随情報を検索可能に記憶する連想記憶機構を設ける。
【００１７】
このような手段によれば、例えばソフトウェア処理により１度求めた付随情報を連想記憶機構に記憶させておき、次に同じ付随情報が必要な場合はこの連想記憶機構からそれを引き出すようにすることで、ソフトウェアによる解決処理の回数を減らしてプログラム動作の高速化を図ることが出来る。
【００１８】
望ましくは、連想記憶機構に、同一の付随情報が定義されたプログラムグループ（オブジェクト志向言語のクラスや１つのクラスを任意の大きさに分割した個々のブロックなど）を識別するグループインデックスに対応させて付属情報を記憶させ、プログラムグループが変更しても現在処理中のプログラムグループに対応した付属情報を引き出せるようにすると良い。
【００１９】
これにより、各プログラムグループの付随情報を連想記憶機構に混在させることができるので、付随情報の異なる複数のブログラムグループに渡ってコード変換を行うときでも複数のグループの解決処理を高速に行うことが出来る。
【００２０】
また望ましくは、上記連想記憶機構に廃棄する付随情報を決定する判定手段を設けると良い。これにより、貯まった付随情報の廃棄方法を最適化することが出来る。具体的には、あまり使用されていない付随情報から廃棄していくのであれば、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式の判定手段を設ければ良い。
【００２１】
また、上記連想記憶機構に記憶した付随情報の一部又は全部を廃棄する制御レジスタを設けると良い。これにより、例えば、動的にプログラムが変更されるなど、連想記憶機構に蓄えられた付随情報の一部又は全部が無用になったときに、一括して廃棄することが出来る。
【００２２】
また、本発明に係るもう一つの命令セット変換装置は、条件（例えば前又は後ろに続く命令コードや、例えば或るプログラムグループでは変数が一定値となるなどそのプログラムグループごとに成立する特殊な条件など）に応じて複数種類のコード変換を適用可能な非ネイティブコードがある場合に、連想記憶機構に当該非ネイティブコードのコード変換の種類を特定する付随情報を記憶させ、この非ネイティブコードと上記条件に関する情報に基づいて対応した上記付随情報を連想記憶機構から供給させるようにしたものである。
【００２３】
例えば、変換対象としている命令（ターゲット命令と云う）が、それ１つでもネイティブコードに変換することは出来るが、このターゲット命令の前後等に特定の命令がある場合には、それらをまとめてより高速なネイティブコードに変換することが出来るといったことがある。そこで、上記手段によれば、このような変換情報をターゲット命令の付随情報として連想記憶機構に記憶させておき、条件を満たす場合にこの付随情報を命令デコーダに渡すようにすることで、最適化されたコード変換が可能となる。
【００２４】
その他、各プログラムグループの内容をソフトウェアで予め解析しておき、そのプログラムグループで成立するある種の条件が成立したときに、特定の命令を処理するネイティブコードをその条件に適したコードにすると処理時間が短縮されるという場合があるが、ビット列として命令コードのみを抽出して、プログラムグループ番号と共に検索パターンとすることによりその条件かどうかを命令デコーダに渡すことができる。
【００２５】
また、本発明に係る情報処理システムは、バスマスタ装置（例えばＣＰＵやＣＰＵキャッシャ）と第１のバススレーブ装置（例えば命令セット変換装置）とを同一のバスシステムに接続する一方、第２のバススレーブ装置（例えばメモリ又はメモリへのデータ入出力を制御するメモリコントローラ）は上記バスシステムのうちデータバスに接続するとともに、アドレス線とウエイト信号線とを第１のバススレーブ装置に接続するようにしたものである。
【００２６】
このような手段によれば、ＣＰＵから実アドレスへのアクセスがある場合には、メモリのアドレス線とウエイト線とを第１のスレーブ装置を介してバスシステムに接続させることで、ＣＰＵからメモリへ大きな遅延なくアクセスさせることが出来る。また、ＣＰＵから仮想ネイティブ空間へアクセスがあった場合には、第１のスレーブ装置によりメモリのアドレス線とウエイト線とをバスシステムから切り離すとともに、命令セット変換装置がＣＰＵにウエイト信号を出力することで、ＣＰＵとの間にバス衝突を生じさせることなく、命令セット変換装置からメモリへアクセスすることが出来る。つまり、ＣＰＵと命令セット変換装置とのバス衝突を発生させることなく、ＣＰＵによるメモリアクセスの遅延を顕著に小さくすることが出来る。
【００２７】
なお、このような情報処理システムの構成は、第１のバススレーブ装置がデータの圧縮と解凍とを行うデータ変換装置である場合にも同様の効果を生じる。また、その場合には、第１のバススレーブ装置（データ変換装置）は、バスマスタ装置（例えばＣＰＵ）からデータの書き込みがあった場合に、このデータを反映させるべく第２のバススレーブ装置（例えばメモリ）の圧縮データを更新するように構成する。
【００２８】
【発明の実施の形態】
以下、本発明の好適な実施例を図面に基づいて説明する。
図１は、本発明の第１実施例の命令セット変換装置を搭載した情報処理システムの構成を示すブロック図、図２は、記憶装置３に格納された非ネイティブ命令セットのプログラムと仮想ネイティブ空間に設定された仮想アドレスブロックとの対応関係を表わす図である。
【００２９】
この実施例の情報処理システムは、例えば半導体メモリなどの記憶装置３に格納された例えばＪａｖａ（登録商標）バイトコードなどの非ネイティブ命令セットにより作成されたプログラムを、命令セット変換装置２が等価のネイティブコードにリアルタイムで変換してＣＰＵ１に供給し、ＣＰＵ１でそのプログラムを実行していくものである。この実施例において、例えば、非ネイティブ命令セットはスタックマシン言語であり、ネイティブ命令セットはＲＩＳＣ（縮小命令セットコンピュータ）言語である。
【００３０】
図２に示すように、変換されたネイティブコードは、仮想的なアドレス空間である仮想ネイティブ空間に格納されたものとして扱われ、ＣＰＵ１はこの仮想ネイティブ空間のアドレスを用いてネイティブコードをフェッチする。仮想ネイティブ空間では、１つの非ネイティブコードに対して２のｎ乗バイト（例えば１６バイト）の空間（最適化ブロック）が一対一で対応付けられる。なお、図２に示す非ネイティブコードと仮想ネイティブコード空間との対応関係については、先願（特願２００２−８７７７７号）に詳しく説明されている。
【００３１】
命令セット変換装置２は、ＣＰＵ１から出力されたアドレスが仮想ネイティブ空間のものか判定してその場合に対応する非ネイティブコードのアドレスの割り出しを行うネイティブ空間判定部２３と、非ネイティブコードからネイティブコードへの変換を行う命令列変換部２１と、記憶装置３の読み書きの制御を行う記憶制御部２４等から構成される。
【００３２】
この実施例の情報処理システムにおいては、ＣＰＵ１は、データバス１１、アドレス線１０およびウエイト線１３を含む制御線とからなるバスシステムのバスマスタ装置である。命令セット変換装置２は、このバスにバススレーブ装置として接続されている。一方、記憶装置３はバススレーブ装置としてこのバスのデータバス１１に接続されるが、アドレス線１２とウエイト線１４は命令セット変換装置２の記憶制御部２４を介してバスのアドレス線１０とウエイト線１３に遮断可能に接続されている。
【００３３】
この情報処理システムによれば、仮想ネイティブ空間のアドレスがアドレス信号１０に出力されていない状態では、命令セット変換装置２の記憶制御部４においてバスシステムのアドレス線１０とウエイト線１３が記憶装置３のアドレス線１２とウエイト線１４に接続された状態にある。従って、ＣＰＵ１が記憶装置３のメモリ空間のアドレスにアクセスするときには、アドレスの送信に僅かな遅延が及ぼされるのみで、その他は直接バスシステムを介して接続されたのと同様に記憶装置３にアクセスすることが出来る。
【００３４】
一方、ＣＰＵ１が非ネイティブ命令セットのプログラムを実行するため仮想ネイティブ空間へアクセスする際には、命令セット変換装置２のネイティブ空間判定部２３がそのアドレスを検出し、命令セット変換装置２においてＣＰＵ１の仮想ネイティブ空間へのデータアクセスを仮想的に行う。このとき、命令セット変換装置２は非ネイティブコードの読み出しなどのために記憶装置３にアクセスしなければならないが、そのときは、命令列変換部２１から記憶制御部２４に制御信号が送られて、記憶装置３のアドレス線１２とウエイト線１４がバスのアドレス線１０とウエイト線１３から切断される。
【００３５】
さらに、記憶制御部２４からＣＰＵ１にウエイト信号を出力することでＣＰＵ１がデータバス１１を占有した状態でデータバス１１を使用可能とする。そして、この状態で、データバス１１と記憶装置３のアドレス線１２およびウエイト線１４を介して命令セット変換装置２から記憶装置３にアクセスが行われる。
【００３６】
このような方式では、一時的にデータバス１１をバスマスタ装置の制御と関係なく利用することになるが、多くのバスアーキテクチャではバススレーブ装置の読出し中、読出しデータが確定するまでの間は他のバススレーブ装置がデータバスをドライブして使うことが許されているものが多いので、既存の多くのバスアーキテクチャに対して適用可能である。
【００３７】
図３には、図１のネイティブ空間判定部２３の構成図を、図４には命令列変換部２１の構成図を、図５にはネイティブエリアテーブル２３５の内容と仮想ネイティブ空間と非ネイティブコードが格納された実メモリ空間と巨視的な関係を示す。
【００３８】
ネイティブ空間判定部２３は、仮想ネイティブ空間の最大アドレスと最少アドレスがそれぞれ設定される最大アドレスレジスタ２３１および最小アドレスレジスタ２３２と、読出しアドレスが仮想ネイティブ空間のものか否か判別して命令列変換部２１に制御信号を出力する比較器２３３と、仮想ネイティブ空間のアドレスからそれに対応する記憶装置３の実アドレスを導くためのネイティブエリアテーブル２３５および加算器２３４等から構成される。
【００３９】
図５に示すように、非ネイティブコードのプログラムは例えばクラスなどのプログラムグループＰＧ…ごとに区分することが出来る。この実施例では、これに対応させて、仮想ネイティブ空間を互いに同一の大きさの複数のエリアブロックＡＢ…に区分し、各プログラムグループＰＧ…と各エリアブロックＡＢ…とを一対一で対応づけるようになっている。なお、図２に示す非ネイティブコードと仮想ネイティブ空間との微視的な関係は、図５の１つのプログラムグループＰＧとそれに対応する１つのエリアブロックＡＢとの中で成り立っているものである。
【００４０】
上記プログラムグループＰＧとエリアブロックＡＢとの対応関係は、ネイティブエリアテーブル２３５により保存される。すなわち、ネイティブエリアテーブル２３５の各行は、複数のエリアブロックＡＢ…に順番に対応づけられており、そこに対応付けられるプログラムグループＰＧ…の先頭アドレス（非ネイティブプログラムアドレス）が格納されるようになっている。それにより、この先頭アドレスで示されるプログラムブロックＡＢとエリアブロックＡＢ…とが一対一に対応付けられている。
【００４１】
このネイティブエリアテーブル２３５には、ＣＰＵ１からのアドレス信号のうち上記複数のエリアブロックＡＢ…の１つを選択する上位ビットが入力され、この上位ビットに対応する先頭アドレスが加算器２３４に出力されるようになっている。
【００４２】
加算器２３４にはＣＰＵ１からのアドレス信号のうちエリアブロックＡＢの内部変位を表わす下位ビットが入力されて、ネイティブエリアテーブル２３５から供給された先頭アドレスに加算する。その結果、仮想ネイティブコードのアドレスからそれに対応する非ネイティブコードが格納されている記憶装置３のアドレスが求められるようになっている。
【００４３】
命令列変換部２１は、図４に示すように、変換する非ネイティブコードのアドレスを格納するアドレスレジスタ部２１１と、変換する非ネイティブコードを含む所定長のコードを保持する非ネイティブバッファ２１２と、レジスタをスタックとして使用するためにレジスタとスタックの対応関係の情報が格納される格納部となるマッピング構造２１３と、１つのコード変換に複数のマシンサイクルが必要な場合にそのサイクルの格納部となるシーケンス番号２１４と、非ネイティブコードをネイティブコードに変換する非ネイティブコード命令デコーダ２１５と、非ネイティブコード命令デコーダ２の信号を受けて実際にネイティブコードを生成するプリミティブ生成器２１６−１，２１６−２と、２つのプリミティブ生成器２１６−１，２１６−２から生成されたネイティブコードを連接する連接器２１７と、ネイティブコードの順序を最適化する命令順序最適化バッファ２１８と、生成されたネイティブコードの相対アドレスの格納部となるネイティブアドレス（格納部）２１９と、ネイティブコードをバッファリングしてデータバス１１に出力するネイティブバッファ２１０と、非ネイティブコードの処理を特定するために必要な解決処理の結果が検索可能に格納される連想メモリ（以下、解決キャッシュと証する）２２０とを備えている。
【００４４】
図６にはマッピング構造格納部２１３の構成例を示す。
マッピング構造２１３は、スタックの深さ情報を保持するデプス格納部と、１行目がスタックポインタが指し示すスタックトップ、２行目以降がスタックトップから２段目以降のエントリと云うように、スタックの各エントリに対応づけられたデータテーブルとから構成される。データテーブルの各行には、レジスタ割り当ての有無を示すＲビットと、割り当てられたレジスタ番地又は割当て無しの場合にはスタックデータ（定数）そのものが格納されるデータフィールドとが設けられている。
【００４５】
そして、このマッピング構造２１３のデータを更新し利用しながら非ネイティブ命令デコーダ２１５がコード変換処理を行うことで、スタック処理をレジスタを用いて高速に処理することの可能なネイティブコードを生成することが可能になっている（特願２００２−８７７７７号を参照）。
【００４６】
図７には解決キャッシュ２２０の連想記憶の構成例を示す。
解決キャッシュ２２０は、非ネイティブバッファ２１２から出力される非ネイティブコードを監視して解決処理を必要とするターゲット命令を検出する監視用デコーダと、ターゲット命令とその前後の非ネイティブコードならびにアドレス線１０に出力されている仮想アドレス空間のアドレス値とから検索パターンを計算する検索パターン演算機構と、検索パターンと付随情報とを格納するとともに検索パターンに基づき付随情報を出力する連想記憶機構とから構成される。
【００４７】
この実施例では、解決キャッシュ２２０の検索パターンとして、クラスに相当するプログラムグループＰＧのグループ番号（グループインデックス）と、ターゲット命令のパラメータに付加されたインデックス値とからなるバイナリー値を用いている。グループ番号は、アドレス線１０のアドレス値から求めることができ、インデックス値はターゲット命令から所定ビット離れたバイナリー値を抽出するようにして求めることが出来る。
【００４８】
付随情報としては、解決処理で一般に求められる、ターゲット命令のパラメータを特定するパラメータサイズ、オブジェクトのレコード内におけるフィールドのオフセット値、定数、或いはアドレスなどである。
【００４９】
解決キャッシュ２２０の連想記憶機構には、アドレス線１０とデータバス１１が接続された制御レジスタが備わり、この制御レジスタを介してＣＰＵ１によりデータの登録や削除が可能になっている。また、制御レジスタの所定の制御ビットを設定することで、連想記憶の一部の範囲または全部を一括消去することが出来るようになっている。
【００５０】
また、解決キャッシュ２２０には、それ自身に、アクセス履歴から重要度の低い登録データを判定する例えばＬＲＵ方式の判定手段が備わっている。そして、この判定手段により、記憶スペースが足りなくなった場合に廃棄する登録データが決定されるようになっている。このような連想記憶の構成は、具体的には、４−Ｗａｙ方式のＬＲＵ機能付きセットアソシアティブ型のキャッシュメモリと同様の構成により実現できる。但し、登録データを削除するさいにキャッシュメモリから主記憶へライトバックする必要がないためライトバックする構成は除かれる。
【００５１】
伝統的なセットアソシアティブのキャッシュと同じ機構を採用するとするとカラムアドレスの選択が重要になる。通常のキャッシュではカラムアドレスはメモリアドレスの下位ビットが使われるが、解決キャッシュ２２０の連想記憶では、検索パターンをハッシュ関数に代入した値をカラムアドレスとするか、あるいは検索パターンの一部のビットをカラムアドレスに使うことが考えられる。また、一部のビットを使う場合には、プログラムグループ番号のビットを含めずに、インデックス値の下位ビットをカラムアドレスに使うことが有効と思われる。その理由は、インデックスはフルのビットが使われることはまれで多くの場合、小さなインデックス値しか使われないという点と同一のプログラムグループが連続して使われる頻度が高く、プログラムグループが切り替わる頻度は低いからである。
【００５２】
また、解決キャッシュ２２０からはフラッシュ線２２１が連接器２１７と命令順序最適化バッファ２１８に接続され、フラッシュ信号によりこれら連接器２１７と命令順序最適化バッファ２１８にラッチされたデータを削除することが可能になっている。
【００５３】
次に、上記構成の情報処理システムおよび命令セット変換装置２の動作について説明する。
非ネイティブコードのプログラムを実行するには、先ず、前処理として、別のソフトウエア処理等により、非ネイティブコードのプログラムを解析して該プログラムをプログラムグループＰＧ…ごとに区分し、これらプログラムグループＰＧ…の先頭アドレスをネイティブエリアテーブル２３５に登録する。
【００５４】
プログラムグループＰＧ…の数が多くて仮想ネイティブ空間のアドレスが不足するような場合には、各エリアブロックＡＢ…に対するプログラムグループＰＧ…の割り当てを、動的に変化させることで対応することが出来る。すなわち、プログラムの実行中に使用していないプログラムグループＰＧの割り当てを解除して、使用するプログラムグループＰＧを割り当てる。このような割当ての変更は、割り当てのされていないプログラムグループＰＧが呼び出される際に、別の割込み処理が開始されるように設定しておき、該割込み処理によりネイティブエリアテーブル２３５の内容を書き換えることで達成される。
【００５５】
非ネイティブコードコードのプログラムが開始されてＣＰＵ１により仮想ネイティブ空間へのアクセスがなされると、そのアドレスを含む最適化ブロックに対応する非ネイティブコードが命令列変換部２１に読み出され、非ネイティブ命令レコーダ２１５によりネイティブコードへ変換されていく。変換の際、スタックを利用する非ネイティブコードがあった場合には、非ネイティブ命令デコーダ２１５がマッピングデータ構造２１３を更新および参照することでレジスタを用いた高速なネイティブコードへの変更を行う。そして、変換されたネイティブコードは連接器２１７で連接され、命令順序最適化バッファ２１８で順番が最適化されてネイティブバッファ２１０を介してＣＰＵ１１のキャッシュに供給される（特願２００２−８７７７７号に参照）。
【００５６】
また、上記のコード変換の際、非ネイティブバッファ２１２から非ネイティブ命令デコーダ２１５に出力される非ネイティブコードの中に解決処理を必要とするコード（ターゲット命令）が含まれていると、解決キャッシュ２２０にそれが検出されこのターゲット命令の前後のバイナリー値からこのターゲット命令のパラメータのインデックスが示されるビット列の値（インデックス値）が抽出される。また、このときのアドレス線１０の値から、ターゲット命令が含まれるプログラムグループＰＧの番号（＝仮想ネイティブ空間のエリアブロックの番号）を計算する。そして、これらインデックス値とプログラムグループＰＧの番号を検索パターンとして、連想記憶を検索し、この検索パターンと合致するものあれば、それに対応して格納されている付随情報を非ネイティブ命令デコーダ２１５に出力する。それにより、解決処理を必要とする非ネイティブコードのコード変換を高速に処理することが出来る。
【００５７】
一方、合致するものがなければ非ネイティブ命令デコーダ２１５は解決処理のサブルーチン処理にジャンプするネイティブコードを生成する。このサブルーチン処理はこの情報処理システムに合わせて予め用意しておくものである。
【００５８】
そして、このジャンプ命令がＣＰＵ１に送られ実行されると、続いて、上記ターゲット命令の解決処理を行うサブルーチン処理が実行され、このターゲット命令のパラメータの付随情報が求められる。サブルーチン処理の終りには、上記ターゲット命令の検索パターンと求められた付随情報とを解決キャッシュ２２０に登録する処理を行って元のプログラムに戻る。
【００５９】
登録は、ＣＰＵ１がアドレス線１０とデータバス１１を介して解決キャッシュ２２０の制御レジスタにアクセスすることで行われる。これにより、同じプログラムグループＰＧの中で解決処理を必要とする１つの非ネイティブコードと同じものが多数含まれている場合には、１番始めにサブルーチン処理により付属情報を求めるだけで、２度目からはそのサブルーチン処理を行わずに解決キャッシュ２２０から付随情報を引き出して使うことが出来るので、プログラムの実行を高速化できる。また、検索パターンには、パラメータのインデックス値だけでなく、プログラムグループＰＧの番号も含まれているので、処理するプログラムグループＰＧが変更されても、付随情報をそのまま解決キャッシュ２２０に残しておき、再び同じプログラムグループＰＧの処理が行われた際に、以前に登録された付随情報をそのまま利用することが出来る。
【００６０】
なお、このように非ネイティブコードの変換途中にサブルーチン処理へ移行する処理方式は、付加情報を求める解決処理だけでなく、その他、付随情報を使っても容易に処理できない命令にも適用可能なものである。
【００６１】
解決キャッシュ２２０に検索パターンや付随情報を登録する際、連想記憶の記憶領域が足りなくなっている場合には、解決キャッシュ２２０内部の判定手段により重要度の低い（例えば余り使われることのない）エントリが判定され、そこに新たなエントリが登録される。
【００６２】
また、このように登録や削除で解決キャッシュ２２０の内容が変化したときには、それ以前に変換したネイティブコードの命令列と新しい付随情報に基づいた命令変換結果との間で矛盾が生じる可能性があるため、フラッシュ線２２１を介したフラッシュ信号により命令順序最適化バッファ２１８やネイティブバッファ２１０に記憶されているネイティブコードの命令列をクリアする。
【００６３】
また、先に述べたように、仮想ネイティブ空間のアドレス不足によりネイティブエリアテーブル２３５の内容を動的に変化させる場合には、非ネイティブコードの各プログラムグループＰＧ…の番号が変更されることになり、解決キャッシュ２２０に格納された検索パターンと付随情報の整合性が崩れるので、整合性のなくなった解決キャッシュ２２０のエントリを削除する必要がある。そのため、ネイティブエリアテーブル２３５の更新に伴って、ＣＰＵ１から解決キャッシュ２２０の制御レジスタに一部又は全部のエントリの消去の設定がなされて、不整合となったエントリがクリアされる。
【００６４】
ここで、付随情報の消去はプログラムの実行結果に影響を与えることはないので、アドレスを正確に指定することは必須でなく、削除する必要のあるアドレスを含んだ一定のアドレス範囲のエントリを整合性のあるエントリも含めて削除してもかまわない。従って、連想記憶の構造に依存する指定可能なアドレス範囲で整合性の崩れたエントリを削除すればよい。極端な場合、アドレスを無視して全エントリを消去するようにしても良い。なお、解決キャッシュ２２０の容量の制限が問題にならなければキャッシュ方式ではなく必要な全てのエントリを保持させておくようにしても構わない。
【００６５】
なお、この実施例では、非ネイティブコードのコード変換中に解決処理が必要となったときに、その必要な付随情報のみを求めてそれを解決キャッシュ２２０へ登録するようにしているが、例えば、１つのプログラムグループＰＧの処理の開始時に割込み処理を行って、該割込み処理によりそのプログラムグループＰＧのコンスタントプールに含まれている全ての付随情報を解決キャッシュ２２０に登録するようにしても良いし、非ネイティブコードのプログラムの開始前に別のソフトウェアを用いてプログラムに備わる付随情報を抽出して解決キャッシュ２２０に登録しておくことも可能である。
【００６６】
また、この実施例では、同じプログラムグループＰＧの中では、異なる命令間でも１つのインデックスにより同じ付随情報が定義づけられているが、同じインデックスでも命令間で異なる定義となるときには、解決キャッシュ２２０の検索パターンとしてプログラムグループ番号と命令番号とインデックス値とを合わせたビット列を適用して対応することが出来る。
【００６７】
また、この実施例では、予め別のソフトウェア処理により非ネイティブコードのプログラムを解析してクラスの先頭アドレスをネイティブエリアテーブル２３５（図５参照）に登録することで、解決キャッシュ２２０の検索パターンに使われるプログラムグループ番号がプログラムのクラス等と対応して解決処理の効率化が図られる例を示したが、ネイティブエリアテーブル２３５を使わない方式でも、解決キャッシュ２２０の検索パターンにプログラムグループの番号を含めて解決処理の効率化を図ることが出来る。
【００６８】
図８には、ネイティブエリアテーブルを使わない場合のネイティブ空間判定部の構成図を、図９には、非ネイティブコードが格納されるメモリ空間と仮想ネイティブ空間との対応関係を表わす説明図を示す。
【００６９】
ネイティブエリアテーブル２３５わ使わない場合には、図２に示す非ネイティブコードと仮想ネイティブ空間の最適化ブロックの対応関係が、プログラムの先頭から最後までが同様に続いた関係となる。これを巨視的に示したものが図９である。
【００７０】
このような対応関係では、仮想ネイティブ空間のアドレスからそれに対応する非ネイティブコードが格納されたメモリ空間のアドレスを求める構成は、図８に示すように非ネイティブコードのプログラムの開始アドレスが格納される格納部となる非ネイティブプログラム開始アドレス２３６と、アドレス線１０に出力されたアドレスから仮想ネイティブ空間の相対アドレスを求める減算器２３７と、非ネイティブ命令セッサの１つのオペコードに対する最適化ブロックの倍率（例えば１６）を相対アドレスに乗算して非ネイティブプログラム開始アドレス２３６の値と加算することで仮想ネイティブ空間のアドレスに対応する非ネイティブコードのアドレスを求める加算器２３４とから構成される。
【００７１】
そして、このような構成では、プログラムグループ番号として減算器２３７の出力の上位ビットを適用することが出来る。この値は、仮想ネイティブ空間を先頭から同じ大きさで複数に分割したエリアブロックＡＢ…と一対一で対応する値となる。
【００７２】
ところで、異なるクラスでは同じインデックスであっても付随情報の値は異なってくるので、２つのクラスの変換コードが１つのエリアブロックにまたがるようにネイティブ空間が分割されていると正常な動作が得られない。そのため、このような構成を適用する場合には、非ネイティブコードのプログラムの配置を調整して、２つのクラスの変換コードが１つのエリアブロックにまたがらないようにする必要がある。
【００７３】
また、プログラムグループ番号となる減算器２３７出力の上位ビットは、そのビット数を小さくすればエリアブロックＡＢ…が小さくなることを意味するので、解決処理の効率が悪くなる一方、ビット数を大きくすればエリアブロックＡＢ…が大きくなって解決処理の効率が良くなるが、複数のクラスがまたがることがないように非ネイティブコードの配置を調整する際に、無駄なメモリ空間が多くなるという欠点がある。従って、両者を考慮して最適化な大きさを決めればよく、例えば１０２４バイト程度の大きさにエリアブロックを設定することが出来る。
【００７４】
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、上記実施例では、解決キャッシュ２２０を、非ネイティブコードの解決処理を効率化するものとして使用しているが、その他、命令コードの前後関係に基づく最適化に解決キャッシュ２２０を使うことが出来る。
【００７５】
例えば、検索パターンとして２つの命令コード“ｉｃｏｎｓｔ＿２  ｉｄｉｖ”のバイナリー値と、付随情報として「この２命令はスタックトップの値を１ｂｉｔ算術シフトすればよい」という内容を非ネイティブ命令デコーダ２１５に示すデータを記憶させておく。そして、解決キャッシュ２２０の監視用デコーダで“ｉｃｏｎｓｔ”の非ネイティブコードを監視し、このコードを検出した場合にその命令を含む前後の２バイトのバイナリー値を抽出し、“ｉｃｏｎｓｔ＿２  ｉｄｉｖ”を記述したバイナリー値であれば、該バイナリー値を検索パターンとして対応する付随情報を非ネイティブ命令デコーダ２１５に供給させる。
【００７６】
このような構成により、２つの命令コード“ｉｃｏｎｓｔ＿２”と“ｉｄｉｖ”を別々にコード変換した場合よりも変換後のネイティブコードの長さを短くできるなど、前後のコードに応じた最適なコード変換処理が可能となる。
【００７７】
同様に、検索パターンとして２つの命令コード“ｉｃｏｎｓｔ＿４  ｉｄｉｖ”のバイナリー値と、付随情報として「この２命令はスタックトップの値を２ｂｉｔ算術シフトすればよい」という内容のデータを記憶させておくことで、同様にコード変換処理の最適化が可能である。
【００７８】
また、検索パターンとしてストア命令“ｉｓｔｏｒｅ”のバイナリー値と、付随情報として次命令以降のストア命令が何個あるかを示す情報を記憶させておき、解決キャッシュ２２０により現在コード変換している非ネイティブコードの直後の２つの命令コードを抽出し、それらにストア命令が１個又は２個あれば、「次命令以降のストア命令数は１個」とか「次命令以降のストア命令数は２個」の情報を非ネイティブ命令デコーダ２１５に供給させる。
【００７９】
このような情報により、非ネイティブ命令デコーダ２１５は現在のコード変換を行うか否かの判定に使うことが出来る。例えば、現在コード変換しているものがロード命令で、且つ、現在のコード変換の位置が１つの最適化ブロックの終りから数個のコードである場合、次命令以降にストア命令があればこのロード命令が有効に使えるが、そうでないとするとロード命令で記憶装置３からロードしたデータを、最適化ブロックの変換終了に伴って記憶装置３に戻さなければならないので、無駄な処理となる。従って、非ネイティブ命令デコーダ２１５では、上記の付随情報によりこの無駄な処理を見送ることが出来る。
【００８０】
なお、このように命令コードの前後関係に基づく最適化を行うのに解決キャッシュ２２０を使用する場合には、検索パターンと付随情報の関係はプログラムグループＰＧの変更に伴って変わることがないので、プログラムグループ番号を検索パターンに含める必要はなく、また、解決キャッシュ２２０への検索パターンや付随情報の登録や削除を動的に行う必要もない。従って、このような場合には、別の最適化用ソフトウェアにより予め上記のような検索パターンと付随情報を解決キャッシュ２２０に登録しておけば良い。
【００８１】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるＪａｖａバイトコードをＲＩＳＣ言語のネイティブ命令セットに変換する命令セット変換装置やその情報処理システムについて説明したがこの発明はそれに限定されるものでなく、種々の命令セット間のコード変換を行う装置やシステムに広く利用することができる。
【００８２】
また、本発明のうちバスマスタ装置と２台のバススレーブ装置をバスシステムに接続して各装置間で最適なデータ転送を可能とする発明については、上記実施例で示したバスマスタ装置としてのＣＰＵ１と、第１のバススレーブ装置としての命令セット変換装置２と、第２のバススレーブ装置としての記憶装置３とからなる情報処理システムに限られず、次のような情報処理システムに適用して同様の効果を得ることができる。
【００８３】
図１０には、本発明に係る第２実施例の情報処理システムの構成図を、図１１には、メモリ圧縮装置４の圧縮メモリ空間判定部４３の構成図を示す。
この情報処理システムは、バスマスタ装置としてＣＰＵ１と、第１のバススレーブ装置としてメモリ圧縮装置４と、第２のバススレーブ装置として記憶装置３とを備え、ＣＰＵ１から仮想的な圧縮メモリ空間へアクセスすることで、この部分の圧縮データをメモリ圧縮装置４が記憶装置３から読み出し解凍してＣＰＵ１に送ったり、或いは、ＣＰＵ１から送られたデータを圧縮して記憶装置３へ書き込んだりするものである。
【００８４】
このような情報処理システムにおいても、ＣＰＵ１が直接に記憶装置３へアクセスする場合と、メモリ圧縮装置４を介して圧縮・解凍処理を経てアクセスする場合とがあるが、データバス１１とアドレス線１０，１２、ウエイト線１３，１４の構成により、第１実施例の場合と同様に、ＣＰＵ１からの直接アクセスの遅延を顕著に小さくするとともに、ＣＰＵ１１とバス衝突を起すことなくメモリ圧縮装置４に処理させることが出来るという効果が得られる。
【００８５】
メモリ圧縮装置４の解凍部４１と圧縮部４２の処理アルゴリズムは、公知の圧縮・解凍のアルゴリズムを用いることで構成できる。また、圧縮メモリ空間判定部４３は、圧縮率が一定の場合には、図８のネイティブ空間判定部２３と同様の構成が適用できる。
【００８６】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
すなわち、本発明に従うと、命令変換に関してより多くの情報を得ることにより効率的なネイティブコードを作成し、非ネイティブセットプログラムの高速な実行が可能となる。また、本発明により命令変換機構や、メモリ圧縮機構をＣＰＵとメモリとの間に介在させる場合に、これらの機構とＣＰＵのバス衝突を起させることなく、メモリに対してＣＰＵがアクセスする場合のオーバーヘッドを減らすことが出来るという効果がある。
【図面の簡単な説明】
【図１】本発明の第１の実施例の命令セット変換装置を備えた情報処理システムの構成を示すブロック図である。
【図２】非ネイティブ命令セットプログラムとネイティブ命令セットプログラムのメモリ空間上の対応関係を示す図である。
【図３】図１のネイティブ空間判定部の構成を示すブロック図である。
【図４】図１の命令列変換部の構成を示すブロック図である。
【図５】ネイティブエリアテーブル２３５の内容と仮想ネイティブ空間と非ネイティブコードが格納された実メモリ空間と巨視的な関係を説明する図である。
【図６】図４のマッピングデータ構造の内容を示す図である。
【図７】図４の解決キャッシュの内容を示す図である。
【図８】ネイティブエリアテーブルを使わない場合のネイティブ空間判定部の構成図である。
【図９】ネイティブエリアテーブルを使わない場合において、非ネイティブコードが格納されるメモリ空間と仮想ネイティブ空間との対応関係を表わす説明図を示す。
【図１０】本発明に係る第２実施例の情報処理システムの構成図である。
【図１１】図１０の圧縮メモリ空間判定部の構造を示すブロック図である。
【符号の説明】
１    ＣＰＵ
２    命令セット変換装置
３    主記憶装置
４    メモリ圧縮装置
１０    ＣＰＵからのアドレス線
１１    データバス
１２    記憶装置へのアドレス線
１３    ＣＰＵへのウェイト線
１４    記憶装置からのウェイト線
１５    ＣＰＵへのバス要求線
１６    ＣＰＵからのバス獲得線
２１    命令列変換部
２３    ネイティブ空間判定部
２４    記憶制御ブロック
４１    解凍部
４２    圧縮部
４３    圧縮メモリ空間判定部
２１０    ネイティブバッファ
２１１    アドレスレジスタ部
２１２    非ネイティブバッファ
２１３    マッピングデータ構造
２１４    シーケンス番号
２１５    非ネイティブ命令デコーダ
２１６−１〜２    プリミティブ生成器
２１７    連接器
２１８    命令順序最適化バッファ
２１９    ネイティブアドレス
２２０    解決キャッシュ
２２１    フラッシュ線
２３１    最大アドレス
２３２    最小アドレス
２３３    比較器
２３４    加算器
２３５    ネイティブエリアテーブル
２３６    開始アドレス
２３７    減算器
【図１】
2005004685.tif 000003
【図２】
2005004685.tif 000004
【図３】
2005004685.tif 000005
【図４】
2005004685.tif 000006
【図５】
2005004685.tif 000007
【図６】
2005004685.tif 000008
【図７】
2005004685.tif 000009
【図８】
2005004685.tif 000010
【図９】
2005004685.tif 000011
【図１０】
2005004685.tif 000012
【図１１】
2005004685.tif 000013