(57)【要約】処理システムは第１の命令セットの命令を実行するプロセッサ・コア（１０４）及び第２の命令セットの命令をエミュレートするように第１の命令セットの１つ以上の命令に対応する変換器出力信号を発生する命令変換器（１０８）を有している。命令変換器（１０８）は、第２の命令セットの命令をエミュレートする最後のオペレーションが実行されるまでその命令に対する入力変数が変更されないようにするために構成されたオペレーションを指示する変換器出力信号をもたらす。割込みハンドラは第１の命令セットの命令のオペレーションを実行した後に割込みを処理する。最後の命令が実行されるまで入力状態が変わらないように命令の変換したシーケンスを構成することによって、割込みが生じたときに最後のオペレーションが始動されていなければ完全なエミュレーションを再実行することによって、または割込みが生じたとき最後のオペレーションが始動していれば第２の命令セットから次の命令を実行することによって割込み後に処理を再始動できるという結果が得られる。
2004511041.tif 000002
【特許請求の範囲】
【請求項１】
データを処理する装置において、
第１の命令セットの命令によって指定される通りにオペレーションを実行するのに動作可能なプロセッサ・コアと、
第２の命令セットの命令を前記第１の命令セットの命令に対応する変換器出力に変換するのに動作可能な命令変換器であって、前記第２の命令セットのうちの少なくとも１つの命令が１つ以上の入力変数を使用して実行すべきオペレーションを指定してなる前記命令変換器と、
割込み信号に応答して、現在実行中のオペレーションの実行を完了した後に前記第１の命令セットの命令に対応する各オペレーションの実行を中断する割込み処理ルーチンと、
前記割込みの後に実行を再始動する再始動ロジックと、を具備し、
前記命令変換器は前記第１の命令セットの命令に対応する変換器出力信号の１つ以上のセットのシーケンスを発生して、前記第２の命令セットのうちの前記少なくとも１つの命令を表すべく動作可能であり、この際、各シーケンスは前記シーケンス内の最後のオペレーションを実行するまでに前記１つ以上の入力変数に対して何らの変更も行わないものであって、
前記第２の命令セットのうちの少なくとも１つの命令を表すオペレーションのシーケンスの実行の際に割込みが発生した後、
（ｉ）前記シーケンスでの最後のオペレーションの実行の始動に先立って前記割込みが生じたら、前記再始動ロジックは前記シーケンスの最後のオペレーションの実行を再始動し、かつ
（ｉｉ）前記シーケンスでの最後のオペレーションの実行を始動した後に前記割込みが生じたら、前記再始動ロジックは前記シーケンスに続く次の命令にて実行を再始動してなることを特徴とする前記装置。
【請求項２】
請求項１記載の装置において、前記変換器出力信号は最初の命令セットの或る命令を形成する信号を含むことを特徴とする前記装置。
【請求項３】
請求項１及び請求項２の何れか１つに記載の装置において、前記変換器出力信号は前記プロセッサ・コアの動作を制御する制御信号、及び前記第１の命令セットの命令を復号化すると直ちに生成される突合わせ制御信号を含むことを特徴とする前記装置。
【請求項４】
請求項１ないし３の何れか１つに記載の装置において、前記変換器出力信号は前記プロセッサ・コアの動作を制御すると共に、前記第１の命令セットの命令を復号化すると直ちに生成される各制御信号によって指定されない各パラメータを指定する各制御信号を含むことを特徴とする前記装置。
【請求項５】
請求項１ないし４のうちの何れか１つに記載の装置において、前記再始動ロジックは前記命令変換器の一部分であることを特徴とする前記装置。
【請求項６】
請求項１ないし５のうちの何れか１つに記載の装置において、前記再始動ロジックは変換中の前記第２の命令セットの命令の再始動位置に対するポインタを記憶し、この際、前記ポインタは前記最後のオペレーションを実行すると直ちに進められてなることを特徴とする前記装置。
【請求項７】
請求項６記載の装置において、前記ポインタは現在変換中の前記第２の命令セットの或る命令を記憶するメモリ位置のメモリ・アドレスを指すプログラム・カウンタ値であることを特徴とする前記装置。
【請求項８】
請求項１ないし７のうちの何れか１つに記載の装置において、前記第２の命令セットの命令はスタックに保持されているスタック・オペランド上で実行すべき各オペレーションを指定すると共に、前記入力変数は各入力スタック・オペランドを含むことを特徴とする前記装置。
【請求項９】
請求項８記載の装置において、前記第２の命令セットのうちの少なくとも１つの命令を実行することによって前記スタックから移動するどのスタック・オペランドも前記最後のオペレーションの実行が開始されるまでは移動しないことを特徴とする前記装置。
【請求項１０】
請求項８及び９の何れか１つに記載の装置において、前記第２の命令のうちの前記少なくとも１つの命令を実行することによって前記スタックに加えられるどのスタック・オペランドも前記最後のオペレーションの実行が開始されるまでは加えられないことを特徴とする前記装置。
【請求項１１】
請求項１ないし１０のうちの何れか１つに記載の装置において、前記入力変数は前記第２の命令内では指定されないシステム状態変数を含むことを特徴とする前記装置。
【請求項１２】
請求項１ないし１１のうちの何れか１つに記載の装置において、前記プロセッサは複数のレジスタを含むレジスタ・バンクを有すると共に、前記第１の命令セットの命令は前記レジスタに保持されている各レジスタ・オペランド上のオペレーションを実行することを特徴とする前記装置。
【請求項１３】
請求項１２記載の装置において、前記レジスタ・バンク内のレジスタセットは前記スタックのトップ位置からスタック・オペランドを保持することを特徴とする前記装置。
【請求項１４】
請求項１３記載の装置において、前記命令変換器は前記レジスタセット内の異なるレジスタが前記スタック内の異なる位置からそれぞれのスタック・オペランドを保持する複数のマッピング状態を有し、この際、前記命令変換器は前記最後のオペレーションが前記入力変数を更新するように実行されるときにマッピング状態の間を移動するように動作可能であることを特徴とする前記装置。
【請求項１５】
請求項１ないし１４のうちの何れか１つに記載の装置において、前記第２の命令のセットの各命令はジャバ仮想マシーン命令であることを特徴とする前記装置。
【請求項１６】
データを処理する方法において、
第１の命令セットの命令によって指定される通りにオペレーションを実行する段階と、
第２の命令セットの命令を前記第１の命令セットの命令に対応する各変換器出力信号に変換する段階であって、前記第２の命令セットのうちの少なくとも１つの命令が１つ以上の入力変数を使用して実行すべきオペレーションを指定してなる前記段階と、
割込み信号に応答して、現在実行中のオペレーションの実行を完了した後に前記第１の命令セットの命令に対応するオペレーションの実行を中断する段階と、
前記割込みの後に実行を再始動する段階と、を具備し、
前記変換する段階は前記第１の命令セットの命令に対応する変換器出力信号のうちの１つ以上のセットのシーケンスを発生して、前記第２の命令セットのうちの前記少なくとも１つの命令を表し、この際、各シーケンスは前記シーケンス内の最後のオペレーションが実行されるまで前記１つ以上の入力変数には何らの変更も行われないものであって、
前記第２の命令セットの前記少なくとも１つの命令を表すオペレーションのシーケンスを実行する際に割込みが発生した後、
（ｉ）前記シーケンスでの最後のオペレーションの実行を始動する前に前記割込みが発生したら、前記シーケンスの最初のオペレーションでの実行を再始動し、かつ
（ｉｉ）前記シーケンスでの最後のオペレーションの実行を始動した後に前記割込みが生じたら、前記シーケンスに続く次のシーケンスでの実行を再始動してなることを特徴とする前記方法。
【請求項１７】
請求項１６記載の方法を実行すべくコンピュータを制御するコンピュータ・プログラムを保持するコンピュータ・プログラム製品。
【発明の詳細な説明】
【０００１】
この発明はデータ処理システムの分野に関する。特に、この発明は第１の命令セットの各命令を実行すべく動作可能なプロセッサ・コアと、第２の命令セットの各命令をプロセッサ・コアによる実行に対して好適な形式に変換すべく実行可能な命令変換器とを有するデータ処理システムに関する。
【０００２】
ネイティブ（ｎａｔｉｖｅ）命令を有するプロセッサ・コアと関連して動作して、非ネイティブ（ｎｏｎ−ｎａｔｉｖｅ）命令をプロセッサ・コアによる実行に対するネイティブ命令に変換することができる命令変換器を提供することが知られている。この種のアプローチはデータ処理システムの能力を拡張する上で魅力的であるが、或る一定の困難性と複雑化をもたらす。
【０００３】
この種の問題はどのようにして割込み信号を処理するかである。処理システムはできるだけ迅速に各割込み信号に応答すべきことが望ましい。このことは実時間オペレーションを制御するシステムにおいて特に重要である。割込み待ち時間は限界性能パラメータとなる可能性があり、最悪の場合の状況を用いて測定される。従って、ネイティブ命令を実行する際、割込み信号が現在実行中のネイティブ命令の完了後直ちに応答されるように設定することが知られている。
【０００４】
非ネイティブ命令をネイティブ命令に変換するシステムのコンテキストでは、単一の非ネイティブ命令を１つ以上のネイティブ命令に変換されることがしばしば起こる。そのため、単一の非ネイティブ命令を表すネイティブ命令のシーケンスの実行中に割込みが受信されると、非ネイティブ命令は部分的にしか完了されず、処理システムの状態は不確実であり得る。このことを処理する１つの方法は、割込み信号を受信すると直ちにトリガされて、割込み後の再始動に先立って状態を復元することができ、それによって部分的にしか完了していない非ネイティブ命令を完了に向けて進行させることができるように、処理システムの現在の状態を記憶する付加的ハードウェアを提供することである。しかしながら、この種のアプローチは付加的ハードウェアのオーバーヘッド、即ち、重要な付加的複雑化を招くという不利益を有し、割込みの処理に先立って処理システムの状態をセーブする必要性のために、割込み性能を本質的に劣化させ得る。
【０００５】
代替的アプローチは各非ネイティブ命令を最小単位として扱う、即ち、非ネイティブ命令の全実行が完了させ後まで割込みが処理されないようにシステムを制御することである。このアプローチは割込み待ち時間にさらに逆インパクトを与える。
【０００６】
命令セットと他の背景情報の間の変換に対する既知のシステムの例が以下のように見い出すことができる。米国特許明細書第５，８０５，８９５号、米国特許明細書第３，９５５，１８０号、米国特許明細書第５，９７０，２４２号、米国特許明細書第５，６１９，６６５号、米国特許明細書第５，８２６，０８９号、米国特許明細書第５，９２５，１２３号、米国特許明細書第５，８７５，３３６号、米国特許明細書第５，９３７，１９３号、米国特許明細書第５，９５３，５２０号、米国特許明細書第６，０２１，４６９号、米国特許明細書第５，５６８，６４６号、米国特許明細書第５，７５８，１１５号、米国特許明細書第５，３６７，６８５号、アイ・ビー・エム（ＩＢＭ）技術開示公報、１９８８年３月、第３０８頁から第３０９頁、「低減命令セットコンピュータ用システム／３７０エミュレータ・アシスト・プロセッサ（Ｓｙｓｔｅｍ／３７０　Ｅｍｕｌａｔｏｒ　Ａｓｓｉｓｔ　Ｐｒｏｃｅｓｓｏｒ　Ｆｏｒ　ａ　Ｒｅｄｕｃｅｄ　Ｉｎｓｔｒｕｃｔｉｏｎ　Ｓｅｔ　Ｃｏｍｐｕｔｅｒ）」、ＩＢＭ技術開示公報、１９８６年７月、第５４８頁から第５４９頁、「全機能シリーズ／１命令セットエミュレータ（Ｆｕｌｌ　Ｆｕｎｃｔｉｏｎ　Ｓｅｒｉｅｓ／１　Ｉｎｓｔｒｕｃｔｉｏｎ　Ｓｅｔ　Ｅｍｕｌａｔｏｒ）」、ＩＢＭ技術開示公報、１９９４年３月、第６０５頁から第６０６頁、「限定命令セットコンピュータ・プロセッサに関する実時間複雑命令セットコンピュータ・アーキテクチャ・ハードウェア・エミュレータ（Ｒｅａｌ−Ｔｉｍｅ　ＣＩＳＣ　Ａｒｃｈｉｔｅｃｔｕｒｅ　ＨＷ　Ｅｍｕｌａｔｏｒ　Ｏｎ　Ａ　ＲＩＳＣ　Ｐｒｏｃｅｓｓｏｒ）」、ＩＢＭ技術開示公報、１９９８年３月、第２７２頁、「エミュレーション制御ブロックを使用した性能改良（Ｐｅｒｆｏｒｍａｎｃｅ　Ｉｍｐｒｏｖｅｍｅｎｔ　Ｕｓｉｎｇ　Ａｎ　ＥＭＵＬＡＴＩＯＮ　Ｃｏｎｔｒｏｌ　Ｂｌｏｃｋ）」、ＩＢＭ技術開示公報、１９９５年１月、第５３７頁から第５４０頁、「低減命令セットコンピュータ／サイクルシステムに関するコード・エミュレーション用の高速命令復号（Ｆａｓｔ　Ｉｎｓｔｒｕｃｔｉｏｎ　Ｄｅｃｏｄｅ　Ｆｏｒ　Ｃｏｄｅ　Ｅｍｕｌａｔｉｏｎ　ｏｎ　Ｒｅｄｕｃｅｄ　Ｉｎｓｔｒｕｃｔｉｏｎ　Ｓｅｔ　Ｃｏｍｐｕｔｅｒ／Ｃｙｃｌｅｓ　Ｓｙｓｔｅｍｓ）」、ＩＢＭ技術開示公報、１９９３年２月、第２３１頁から第２３４頁、「高性能二重アーキテクチャプロセッサ（Ｈｉｇｈ　Ｐｅｒｆｏｒｍａｎｃｅ　Ｄｕａｌ　Ａｒｃｈｉｔｅｃｔｕｒｅ　Ｐｒｏｃｅｓｓｏｒ）」、ＩＢＭ技術開示公報、１９８９年３月、第４０頁から第４３頁、「システム／３７０　Ｉ／Ｏ　チャネルプログラム・チャネル指令ワード先取り（Ｓｙｓｔｅｍ／３７０　Ｉ／Ｏ　Ｃｈａｎｎｅｌ　Ｐｒｏｇｒａｍ　Ｃｈａｎｎｅｌ　Ｃｏｍｍａｎｄ　Ｗｏｒｄ　Ｐｒｅｆｅｔｃｈ）」、ＩＢＭ技術開示公報、１９８５年６月、第３０５頁から第３０６頁、「完全マイクロコード制御式エミュレーション・アーキテクチャ（Ｆｕｌｌｙ　Ｍｉｃｒｏｃｏｄｅ−Ｃｏｎｔｒｏｌｌｅｄ　Ｅｍｕｌａｔｉｏｎ　Ａｒｃｈｉｔｅｃｔｕｒｅ）」、ＩＢＭ技術開示公報、１９７２年３月、第３０７４頁から第３０７６頁、「エミュレーション用演算コード及び状態処理（Ｏｐ　Ｃｏｄｅ　ａｎｄ　Ｓｔａｔｕｓ　Ｈａｎｄｌｉｎｇ　Ｆｏｒ　Ｅｍｕｌａｔｉｏｎ）」、ＩＢＭ技術開示公報、１９８２年８月、第９５４頁から第９５６頁、「残存する命令を符号化するのに適した大規模システム及び基本要素の最も頻繁に使用する命令を有するマイクロプロセッサのオンチップ・マイクロコーディング（Ｏｎ−Ｃｈｉｐ　Ｍｉｃｒｏｃｏｄｉｎｇ　ｏｆ　ａ　Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ　Ｗｉｔｈ　Ｍｏｓｔ　Ｆｒｅｑｕｅｎｃｙ　Ｕｓｅｄ　Ｉｎｓｔｒｕｃｔｉｏｎｓ　ｏｆ　Ｌａｒｇｅ　Ｓｙｓｔｅｍ　ａｎｄ　Ｐｒｉｍｉｔｉｖｅｓ　Ｓｕｉｔａｂｌｅ　ｆｏｒ　Ｃｏｄｉｎｇ　Ｒｅｍａｉｎｉｎｇ　Ｉｎｓｔｒｕｃｔｉｏｎｓ）」、ＩＢＭ技術開示公報、１９８３年４月、第５５７６頁から第５５７７頁、「エミュレーション命令（Ｅｍｕｌａｔｉｏｎ　Ｉｎｓｔｒｕｃｔｉｏｎ）」、非同期応答モード・システムアーキテクチャ（ＡＲＭ　Ｓｙｓｔｅｍ　Ａｒｃｈｉｔｅｃｔｕｒｅ）（エス・ファーバー（Ｓ　Ｆｕｒｂｅｒ）著）、コンピュータ・アーキテクチャ（Ｃｏｍｐｕｔｅｒ　Ａｒｃｈｉｔｅｃｔｕｒｅ）、定量的アプローチ（Ａ　Ｑｕａｎｔｉｔａｔｉｖｅ　Ａｐｐｒｏａｃｈ）（ヘネシー（Ｈｅｎｎｅｓｓｙ）及びパターソン（Ｐａｔｔｅｒｓｏｎ）著）、及びジャバ仮想マシーン仕様（Ｔｈｅ　Ｊａｖａ（登録商標）　Ｖｉｒｔｕａｌ　Ｍａｃｈｉｎｅ　Ｓｐｅｃｉｆｉｃａｔｉｏｎ）（チム・リンドホルム（Ｔｉｍ　Ｌｉｎｄｈｏｌｍ）及びフランク・イェーリン（Ｆｒａｎｋ　Ｙｅｌｌｉｎ）著、第１版及び第２版）。
【０００７】
最悪ケースの割込み待ち時間が安全限界パラメータとなり得る、エアバッグ制御システムまたはアンチロック・ブレークシステム等の実時間アプリケーションにこの種のシステムの使用を考える時、非ネイティブ命令を実行する際の低い割込みの待ち時間を達成する要求は重要な点となる。
【０００８】
一態様から見れば、この発明はデータを処理する装置において、
第１の命令セットの各命令によって指定される通りに各オペレーションを実行するのに動作可能なプロセッサ・コアと、
第２の命令セットの各命令を前記第１の命令セットの各命令に対応する変換出力に変換するように動作可能な命令変換器であって、前記第２の命令セットのうちの少なくとも１つの命令が１つ以上の入力変数を使用して実行すべきオペレーションを指定してなる前記命令変換器と、
割込み信号に応答して、現在実行中のオペレーションの実行を完了した後に前記第１の命令セットの各命令に対応する各オペレーションの実行を中断する割込み処理ハンドラーと、
前記割込みの後に実行を再始動する再始動ロジックと、を具備し、
前記命令変換器は前記第１の命令セットの各命令に対応する変換器出力信号の１つ以上のセットのシーケンスを発生して、前記第２の命令セットのうちの前記少なくとも１つの命令を表すべく動作可能であり、この際、各シーケンスは前記シーケンス内の最後のオペレーションを実行するまでに前記１つ以上の入力変数に対して何らの変更も行わないものであって、
前記第２の命令セットのうちの少なくとも１つの命令を表すオペレーションのシーケンスの実行の際に割込みが発生した後、
（ｉ）前記シーケンスでの最後のオペレーションの実行の始動に先立って前記割込みが生じたら、前記再始動ロジックは前記シーケンスの最後のオペレーションの実行を再始動し、かつ
（ｉｉ）前記シーケンスでの最後のオペレーションの実行を始動した後に前記割込みが生じたら、前記再始動ロジックは前記シーケンスに続く次の命令にて実行を再始動してなることを特徴とする前記装置を提供する。
【０００９】
この発明は、非ネイティブな命令を、実行すべき複数のネイティブな命令のシーケンスであり、再始動に過度の困難を伴なうことなくネイティブな命令に対応するオペレーションの完了の後の割込みサービスを提供し得る形式に変換することを可能としている。この発明はこのことを変換されたオペレーションシーケンスが最後のオペレーションを実行するまで入力変数に対して如何なる変更も行わないように設定することによって達成する。このため、最後のオペレーションの実行の前に割込みが生じても、入力変数は変わることがないので非ネイティブな命令をそっくりそのまま再始動することができ、これに対して最後のオペレーションの実行を始動した後に割込みが生じたら、割込みが生じた非ネイティブ命令に続く次の命令から再始動ロジックを続けて行くことができる。
【００１０】
第２の（非ネイティブな（ｎｏｎ−ｎａｔｉｖｅ））命令セットの命令は第１の（ネイティブな（ｎａｔｉｖｅ））命令セットの命令に完全に変換することができることが認められよう。しかしながら、第２の命令セットの命令を第１の命令セットの命令と同様にプロセッサ・コアを制御可能な制御信号に変換することも可能である。第２の命令セットの命令が第１の命令セットの命令の能力を越える能力を有し、また、第２の命令セットの命令から得た制御信号が第１の命令セットの命令によってもたらされる機能を越えるようにプロセッサ・コアの動作を拡張制御することもまた可能である。
【００１１】
再始動ロジックは専用のハードウェア部品であっても良いが、本発明の好ましい実施例では、再始動ロジックは命令変換器の一部分であり得る。命令変換器は非ネイティブ命令に対するオペレーションのシーケンスを制御する各変換器出力信号を生成するものであるから、割込みが生じた時に最後のオペレーションが既に始動されているか否かを容易に決定することができる。それに応じて、この情報を命令変換器内の再始動ロジックに提供して、非ネイティブ命令が完全に再始動されたか、或るいは次の命令が再始動されたかを決定する。
【００１２】
割込みが生じた時にどのようにしてシステムを再始動すべきかに関する記録を採る便利な方法は、最後のオペレーションの実行により進められるポインタを有する再始動位置に対するポインタを記憶することである。このポインタは都合のよいことに現在変換中の命令を記憶するメモリ位置のメモリ・アドレスを指すプログラム・カウンタ値であって良い。
【００１３】
本発明は多くの異なる型式の命令セットに適応可能であるが、第２の命令セットがスタック・オペランドがスタックに保持されると実行すべきオペレーションを指定するものである場合に特に有益である。この種のスタックベースのシステムは一般にスタックからそれらの入力オペランドを読み出すと共に、出力オペランドをスタックに書き込む。この様なオペレーションをエミュレートするとき、本発明は最後のオペレーションの実行が開始された後までスタック・オペランドは重ね書きされることはないことを保証する。同様にして、最後のオペレーションの実行が開始されるまでスタック・オペランドはスタックに加えられることはない。
【００１４】
特定の非ネイティブ命令の実行形態を制御するシステムの入力変数はその非ネイティブ命令内で明快に宣言されたオペランドを越えて拡張し得ることが理解される。特に、システム環境の状態変数は所定の命令の実行形態に影響を及ぼし得るものであり、本発明は最後のオペレーションの実行が開始されるまでこの種のシステム状態変数も変化しないようにする。
【００１５】
最後のオペレーションの実行までシステム状態は変化しないことを保証する必要性は有効な変換されたオペレーション・シーケンスを発生する上での制約であり得る。これにより、割込み待ち時間は保護されるが、非ネイティブな処理速度には強い影響がある。しかし、この影響は、変換可能な命令の型式または達成し得る変換されたシーケンスのコンパクト性に余り大きな制約を課すことなく、最後のオペレーションまで入力オペランドがスタックから除去されず、出力オペランドがスタックに加えられることがないように最後のオペレーションが実行されるまで更新されないマッピング状態に従って、プロセッサ・コアのレジスタ内に保持されたスタック・オペランドをスタック位置にマッピングすることにより、レジスタベースのプロセッサがスタックベースの命令をエミュレートするシステムにおいて、減し得る。
【００１６】
別の態様から見れば、本発明はデータを処理する方法において、
第１の命令セットの命令によって指定される通りにオペレーションを実行する段階と、
第２の命令セットの命令を前記第１の命令セットの命令に対応する変換器出力信号に変換する段階であって、前記第２の命令セットのうちの少なくとも１つの命令が１つ以上の入力変数を使用して実行すべきオペレーションを指定してなる前記段階と、
割込み信号に応答して、現在実行中のオペレーションの実行を完了した後に前記第１の命令セットの命令に対応するオペレーションの実行を中断する段階と、
前記割込みの後に実行を再始動する段階と、を具備し、
前記変換する段階は前記第１の命令セットの命令に対応する変換器出力信号のうちの１つ以上のセットのシーケンスを発生して、前記第２の命令セットのうちの前記少なくとも１つの命令を表し、この際、シーケンスは前記シーケンス内の最後のオペレーションが実行されるまで前記１つ以上の入力変数には何らの変更も行われないものであって、
前記第２の命令セットの前記少なくとも１つの命令を表すオペレーションのシーケンスを実行する際に割込みが発生した後、
（ｉ）前記シーケンスでの最後のオペレーションの実行を始動する前に前記割込みが発生したら、前記シーケンスの最初のオペレーションでの実行を再始動し、かつ
（ｉｉ）前記シーケンスでの最後のオペレーションの実行を始動した後に前記割込みが生じたら、前記シーケンスに続く次のシーケンスでの実行を再始動してなることを特徴とする前記方法を提供する。
【００１７】
本発明はまた前記技術に従って汎用コンピュータを制御することができるコンピュータ・プログラムを生成するコンピュータ・プログラム製品を提供する。
【００１８】
ここで、本発明の各実施例を添付図面を参照して例示的に説明することとする。
【００１９】
図１はＡＲＭプロセッサに基づくシステムでの使用に好適な型式の第１の例の命令パイプライン３０を示している。この命令パイプライン３０は取出しステージ３２、ネイティブ命令（ＡＲＭ／Ｔｈｕｍｂ命令）復号ステージ３４、実行ステージ３６、メモリ・アクセス・ステージ３８及び書戻しステージ４０を備えている。実行ステージ３６、メモリ・アクセス・ステージ３８及び書戻しステージ４０は実質的に従来のものである。取出しステージ３２の下流、及びネイティブ命令復号ステージ３４の上流には、命令変換器ステージ４２が設けられている。この命令変換器ステージ４２は可変長のジャバ・バイトコード命令（Ｊａｖａ（登録商標）　ｂｙｔｅｃｏｄｅ　ｉｎｓｔｒｕｃｔｉｏｎ）をネイティブなＡＲＭ命令に変換する有限状態マシーンである。命令変換器ステージ４２は、多ステップ・オペレーションを実行することができ、それにより単一のジャバ・バイトコード命令は命令パイプライン３０の残りの部分を送られてそのジャバ・バイトコード命令によって指定されるオペレーションを実行するＡＲＭ命令のシーケンスを発生する。簡単なジャバ・バイトコード命令は単一のＡＲＭ命令のみを要求してオペレーションを実行し得るのに対し、もっと復雑化したジャバ・バイトコード命令、またシステム環境状態が指示する環境では、複数のＡＲＭ命令がジャバ・バイトコード命令によって指定されるオペレーションを提供するのに必要とされる。この多ステップ・オペレーションは取出しステージ３２の下流に位置し、そのためメモリ・システムから複数の変換したＡＲＭ命令またはジャバ・バイトコードの取り出しに電力は消費されない。各ジャバ・バイトコード命令は、ジャバ・バイトコード変換オペレーションをサポートするための付加的制約をメモリ・システム上に及ぼさない従来の方法でメモリ・システム内に記憶される。
【００２０】
図示するように、命令変換器ステージ４２にはバイパス経路が設けられている。命令変換モードで動作しない場合は、命令パイプライン３０は命令変換器ステージ４２をバイパスすると共に、本質的に変更のない方法で動作して、各ネイティブ命令の復号化をもたらすことができる。
【００２１】
命令パイプライン３０では、命令変換器ステージ４２は対応するＡＲＭ命令を完全に表すと共に、マルチプレクサを介してネイティブ命令復号器３４に渡される変換器出力信号を発生するものとして図示されている。命令変換器４２は、またネイティブ命令のデコーダに渡される幾つかの付加的制御信号を生成する。ネイティブ命令復号化内のビット空間の制約はネイティブ命令によって指定され得るオペランドの範囲に制限を課すこととなる。これらの制限は必ずしも非ネイティブ命令によって共有されない。付加的制御信号をもたらして、メモリ内に記憶されたネイティブ命令内で指定することが不可能な非ネイティブ命令から得た付加命令指定信号を渡すようになっている。例として、ネイティブ命令はネイティブ命令内の即時オペランド・フィールドとして使用される比較的少数のビットを提供するのに対して、非ネイティブ命令は拡張された範囲を許容し、これは付加的制御信号を使用することによって利用でき、即時オペランドの拡張された部分は、同じくネイティブ命令復号器３４に渡される変換されたネイティブな命令とは別にネイティブ命令復号器３４に渡される。
【００２２】
図２は更なる命令パイプライン４４を図示している。この例では、システムには非ネイティブ命令復号器５０のみならず２つのネイティブ命令復号器４６、４８も備えられている。この非ネイティブ命令復号器５０は非ネイティブ命令をサポートすべく設けられている実行ステージ５２、メモリ・ステージ５４及び書戻しステージ５６によってオペレーション内で指定できるように制約されている。それに応じて、非ネイティブ命令復号器５０は非ネイティブ命令をネイティブオペレーション（単一のネイティブオペレーションであってもネイティブオペレーションのシーケンスであって良い）に変換し、次いで適切な制御信号を実行ステージ５２に供給して、これらの１つ以上のネイティブオペレーションを実行する。この例では、非ネイティブ命令復号器５０はネイティブ命令を形成する信号を生成するのではなく、ネイティブ命令（または拡張されたネイティブ命令）オペレーションを指定する制御信号をもたらすことが認められよう。発生された制御信号はネイティブ命令復号器４６、４８によって発生された制御信号と一致しなくとも良い。
【００２３】
動作の際、取出しステージ５８によって取り出された命令は図示のデマルチプレクサを使用して特定の処理モードに応じて命令復号器４６、４８または５０の内の１つに選択的に供給される。
【００２４】
図３は命令パイプラインの取出しステ−ジをより詳細に概念的に図示している。取出しロジック６０はメモリ・システムから固定長の命令ワードを取り出して、これらを命令ワード・バッファ６２に供給する。この命令ワード・バッファ６２は現在の命令ワード及び次の命令ワードの双方を記憶し得るという２つのサイドを有するスイング・バッファである。現在の命令ワードが完全に復号化されると共に、復号化が次の命令ワードに進む毎に、取出しロジック６０は前の現在の命令ワードをメモリから取り出す次の命令ワードと置換するように機能する。即ち、スイング・バッファの各サイドは逐次的に記憶する各命令ワードをインターリーブ式に２つだけ増分することとなる。
【００２５】
図示の例では、ジャバ・バイトコード命令の最大命令長さは３バイトである。従って、ワード・バッファ６２の何れかのサイド内の任意の３つの隣合うバイトを選択して命令変換器６４に供給することを可能にする３つのマルチプレクサが設けられている。ワード・バッファ６２及び命令変換器６４にはまたネイティブ命令を取り出して復号化する時に使用するバイパス経路６６が設けられている。
【００２６】
各命令ワードは一回メモリから取り出されてワード・バッファ６２内に記憶されることが了知されよう。命令変換器６４がジャバ・バイトコードのＡＲＭ命令への変換を実行するので、単一の命令ワードはワード・バッファ６２から読み出した多数のジャバ・バイトコードを有することができる。命令変換オペレーションは命令パイプライン内に制限されるので、複数回のメモリ・システムの読出しを必要とせず、かつメモリ・リソースを消費することなく或いは他の制約をメモリ・システムに課することなく、ネイティブ命令の可変長変換シーケンスを生成することができる。
【００２７】
プログラム・カウンタ値は現在変換中の各ジャバ・バイトコードと関連している。このプログラム・カウンタ値はパイプラインの各ステージに沿って渡され、必要ならば、各ステージは処理中の特別のジャバ・バイトコードに関連してこの情報を使用することができる。複数のＡＲＭ命令オペレーションのシーケンスに変換するジャバ・バイトコードに対するプログラム・カウンタ値は、そのシーケンス内の最後のＡＲＭ命令オペレーションが実行され始めるまで増分されない。実行中のメモリ内の命令を直接指し続けるようにしてプログラム・カウンタ値を維持することによって、デバッキング及び分岐目標計算等のシステムの他の態様が効率良く簡易化される。
【００２８】
図４は命令バッファ６２から可変長のジャバ・バイトコード命令を読み出すことを概略的に図示している。最初の段階で、１の長さを有するジャバ・バイトコード命令が読み出されて復号化される。次の段階は、長さが３バイトでかつメモリから取り出された隣接する命令コード間にまたがるジャバ・バイトコード命令である。これらの命令コードの双方は命令バッファ６２内に存在するので、命令の復号化及び処理は取り出された命令ワード間に可変長の命令がまたがることによって遅延されることはない。一旦３つのジャバ・バイトコードが命令バッファ６２から読み出されると、以前取り出された命令ワードの再補充が始められ、後続の処理は既に存在している継続の命令ワードからのジャバ・バイトコードの復号化を続けることとなる。
【００２９】
図４に図示された最後の段階は第２の３バイトコード命令の読み出しを図示している。これはまた、命令ワード間にまたがっている。先行する命令ワードの再補充が完了していなければ、適切な命令ワードが命令バッファ６２に記憶されるまで、命令の読み出しはパイプラインの停止によって遅延される。幾つかの実施例では、この種の行為のためタイミングはパイプラインが決して停止しないというものである。大部分のジャバ・バイトコードは図示された例よりも短く、従って両方とも命令ワード間にまたがる連続した２つの復号化は相対的に異例なものであるため、この特殊な例は通常ほとんど生じないことが認められよう。有効な信号は、ジャバ・バイトコードが命令バッファ６２から読み出される前に命令が適切に再補充されたか否かを知らせることを可能とするように命令バッファ６２内の各命令ワードと関連付けることができる。
【００３０】
図５はプロセッサ・コア１０４及びレジスタ・バンク１０６を備えたデータ処理システム１０２を示している。命令変換器１０８は命令経路内に設けられて、ジャバ仮想マシーン命令をプロセッサ・コア１０４に供給されるネイティブＡＲＭ命令（またはこれに対応する各制御信号）に変換するようになっている。ネイティブなＡＲＭ命令がアドレス指定可能メモリから取り出されている時には、命令変換器１０８はバイパスされる。このアドレス指定可能なメモリは、オフチップＲＡＭメモリを有するキャッシュ・メモリ等のメモリ・システムであって良い。メモリ・システム、特にキャッシュ・メモリの下流に命令変換器１０８を設けることによって、メモリ・システムの記憶容量を効率的に使用することができる。何故ならば、変換を要求する濃密は命令をメモリ・システム内に記憶し、プロセッサ・コア１０４に渡す直前にネイティブ命令に拡張するのみであるからである。
【００３１】
この例でのレジスタ・バンク１０６は１６個の汎用３２−ビットレジスタを含み、そのうちの４個がスタック・オペランドを記憶するのに割り当てられる。即ち、スタック・オペランドを記憶するレジスタセットはレジスタＲ０、Ｒ１、Ｒ２及びＲ３である。
【００３２】
レジスタセットは空であっても、スタック・オペランドで部分的に充填されても、或いはスタック・オペランドで完全に充填されても良い。スタック・オペランドもトップを現在保持している特別なレジスタはレジスタセット内のどのレジスタであっても良い。こうして、命令変換器は、全てのレジスタが空である１つの状態と、レジスタセット内に保持されているそれぞれ異なる数のスタック・オペランドに対応し、スタック・オペランドのトップを保持する異なるレジスタを有する、４つの状態から成る４つのグループの１７の異なるマッピング状態の内の何れか１つの状態となり得ることが認められよう。表１は命令変換器１０８に対する状態マッピングの１７の異なる状態を図示している。スタック・オペランド記憶域に対して割り当てられるレジスタの数の差異、または各レジスタ内に保持されたデータ値の処理方法に関して特定のプロセッサ・コアが有する制約のため、マッピング状態は特定の実施に依存するものであり、表１は特定の一実施例として挙げられているに過ぎないことが認められよう。
【表１】
2004511041.tif 000003
【００３３】
表１の中で、状態値の最初の３ビットはレジスタセット内の空でないレジスタの数を示していることを認めることができる。状態値の最後の２ビットはスタック・オペランドのトップを保持するレジスタのレジスタ番号を示している。このようにして、状態値を容易に使用して、ハードウェア変換器またはソフトウェア変換器の動作を制御して、レジスタセットの現在の占有及びスタック・オペランドのトップの現在の位置を考慮することができる。
【００３４】
図５に図示するように、ジャバ・バイトコードＪ１、Ｊ２、Ｊ３のストリームはアドレス指定可能なメモリ・システムから命令変換器１０８に送られる。次いで、命令変換器１０８は他の変数だけでなく入力ジャバ・バイトコード及び命令変換器１０８の即時マッピング状態に依存してＡＲＭ命令（または、恐らくは拡張された等価の制御信号）のストリームを出力する。図示された例はＡＲＭ命令Ａ１１及びＡ１２にマッピング中のジャバ・バイトコードＪ１を示している。ジャバ・バイトコードＪ２はＡＲＭ命令Ａ２１、Ａ２２及びＡ２３にマッピングする。最後に、ジャバ・バイトコードＪ３はＡＲＭ命令Ａ３１にマッピングする。ジャバ・バイトコードのおのおのは入力として１つ以上のスタック・オペランドを要求すると共に、出力として１つ以上のスタック・オペランドを生成するであろう。この例におけるプロセッサ・コア１０４は各レジスタ内に保持されたデータ値のみを処理することができるロード／ストアアーキテクチャを有するＡＲＭプロセッサ・コアであるとすると、命令変換器１０８は、処理される前に所望のスタック・オペランドを必要に応じてレジスタセットに取り出すか、またはレジスタセット内に現在保持されているスタック・オペランドをアドレス指定可能なメモリに記憶して、生成されるであろう結果としてのスタック・オペランドに対する空間を作り出すＡＲＭ命令を生成するように設定される。各ジャバ・バイトコードは、ジャバ演算コードを表すＡＲＭ命令を実行する前に使用可能でなければならないレジスタセット内の空レジスタの数を示す「空要求（ｒｅｑｕｉｒｅ　ｅｍｐｔｙ）」値と、実行に先立ってレジスタセット内に存在しなければならないスタック・オペランドの数を示す関連する「充填要求（ｒｅｑｕｉｒｅ　ｆｕｌｌ）」を有するものと考え得ることが認められよう。
【００３５】
表２は初期マッピング状態値、充填要求値、最終状態値及び関連するＡＲＭ命令の間の関係を説明している。初期状態値及び最終状態値は表１のマッピング状態に対応している。命令変換器１０８は変換中の特定のジャバ・バイトコード（オペコード）と関連する充填要求値を決定する。命令変換器（１０８）は、これが有する初期マッピング状態に応じて、ジャバ・バイトコードを実行する前により多くのスタック・オペランドをレジスタセットにロードする必要があるか否かを決定する。表１はこの種のスタック・キャッシュロード動作の後に採られる最終マッピング状態と供に関連するＡＲＭ命令（ＬＤＲ命令）を使用してスタック・オペランドをレジスタセットにロードする必要があるか否かの決定に用いられ、ジャバ・バイトコードの充填要求値に用いられるテストと初期状態を一緒に示している。実際には、ジャバ・バイトコードの実行に先立って１つ以上のスタック・オペランドをレジスタセットにロードする必要があれば、おのおのがスタック・オペランドをレジスタセットのレジスタのうちの１つにロードする関連するＡＲＭ命令を有する、複数のマッピング状態遷移が生じることとなる。他の実施例では、単一の状態遷移で複数のスタック・オペランドをロードし、そのためマッピング状態変化を表２に示すものを越えるようにすることが可能である。
【表２】
2004511041.tif 000004
【００３６】
表２から判るように、スタック・オペランドを記憶するレジスタセットにロードされた新しいスタック・オペランドはスタック・オペランドの新しいトップを形成することとなり、これは、初期状態に応じてレジスタセット内のレジスタのうちの特定の１つにロードされることとなる。
【００３７】
表３は同様に、初期状態、空要求値、最終値、及び特定のジャバ・バイトコードの空要求値がジャバ・バイトコードを実行する前に必ず初期状態が与えられなければならない時、レジスタセット内の或るレジスタを空にして初期状態及び最終状態の間を移動させる関連したＡＲＭ命令の間の関係を説明している。ＳＴＲ命令でアドレス指定可能なメモリに書き出された特定のレジスタ値は、レジスタのうちのどれがスタック・オペランドの現在のトップであるかに応じて変化することとなる。
【表３】
2004511041.tif 000005
【００３８】
前述した例のシステムでは、充填要求及び空要求条件は相互に排他的、即ち、命令変換器が変換している特定のジャバ・バイトコードに対してどの時点においても、充填要求または空要求条件の内の一方のみが真であることができることが認められよう。ハードウェア命令変換器１０８と供に用いられることが選択された命令と一緒に命令変換器１０８によって使用される命令テンプレートは、この相互に排他的な要求を満たし得るように選択される。もしこの要求が適切でないと、要求した通りに各レジスタ内に実行の結果を保持できるようにすべくジャバ・バイトコードを表す命令を実行した後に十分な空のレジスタを使用可能にし得ないレジスタセット内に存在する複数の入力スタック・オペランドを特定のジャバ・バイトコードが要求するという状況が生じ得る。
【００３９】
所定のジャバ・バイトコードは消費されたスタック・オペランドの数と発生したスタック・オペランドの数の間の差分を表す全体の正味のスタック動作を有することとなることが認められよう。消費されたスタック・オペランドの数は実行に先立つ要求であり、また発生したスタック・オペランドの数は実行後の要求であるので、各ジャバ・バイトコードと関連する充填要求値及び空要求値は、正味の全体の動作が本質的に満たされるとしても、そのバイトコードの実行に先立って満足されなければならない。表４は初期状態、全体のスタック動作、最終状態、及びレジスタ使用及びスタック・オペランドのトップ（ＴＯＳ：ｔｏｐ　ｏｆ　ｓｔａｃｋ　ｏｐｅｒａｎｄ）の相対的位置の変化の間の関係を説明している。ジャバ・バイトコードの充填要求値及び空要求値に応じて所定のジャバ・バイトコードに対する必須条件を確定するため、表４に示されている状態遷移を実行することに先立って表２または表３に示した状態遷移のうちの１つ以上を実行しなければならない。
【表４】
2004511041.tif 000006
2004511041.tif 000007
2004511041.tif 000008
【００４０】
表２、表３及び表４に示した状態及び条件の間の関係は単一の状態遷移表または状態図に結合し得るが、以上では明瞭化のために個別に示されてきたことが認められよう。
【００４１】
異なる状態、条件、及び正味の動作の間の関係は命令変換器１０８の動作の態様を制御する（有限状態マシーンとしての）ハードウェア状態マシーンを形成するのに使用することができる。代替的に、これらの関係はソフトウェアまたはハードウェア及びソフトウェアの組合わせによってモデル化することができよう。
【００４２】
部分集合の各ジャバ・バイトコードに対して、表２、表３及び表４に関連して使用し得るそのバイトコードに対する関連する充填要求値、空要求値及びスタック動作値を示す可能なジャバ・バイトコードの部分集合の例が以下に続く。
【表５】
2004511041.tif 000009
2004511041.tif 000010
【００４３】
前述したジャバ・バイトコード命令のおのおのに対する命令テンプレートの例も以下に続く。図示の各命令はジャバ・バイトコードのおのおのの要求された行為を実施するＡＲＭ命令である。レジスタ・フィールド「ＴＯＳ−３」、「ＴＯＳ−２」、「ＴＯＳ」、「ＴＯＳ＋１」及び「ＴＯＳ＋２」は現在適用されているマッピング状態に応じて表１から読み出されるような適切なレジスタ指定子で置換される。表示「ＴＯＳ＋ｎ」は、現在のスタック・オペランドのトップを記憶するレジスタの上方Ｎ番目のレジスタを示しスタック・オペランドのトップを記憶するレジスタで始まり、レジスタセットの終端に達するまで、レジスタ値は上方に計数され、その終端でレジスタセット内の最初のレジスタに戻される。
【表６】
2004511041.tif 000011
【００４４】
前述した技術に従ってハードウェア変換ユニット１０８によって実行される単一ジャバ・バイトコードの実行シーケンスの例を以下に示す。実行される命令に応じて状態のシーケンスを通して進行し、各状態遷移について実行される動作の結果としてＡＲＭ命令のシーケンスを発生し、全体がジャバ・バイトコードをＡＲＭ命令のシーケンスに変換する効果を有する初期状態の観点から実行シーケンスを示している。
【表７】
2004511041.tif 000012
【００４５】
図６は複数のジャバ・バイトコード命令の実行を異なる方法で説明している。図６の上部はＡＲＭ命令のシーケンスと、ジャバ・バイトコード命令ｉａｄｄの実行後に生じるマッピング状態及びレジスタ内容の変化を示している。レジスタセット内の全てのレジスタが空であることに対応して初期マッピング状態は０００００である。生成された最初の２つのＡＲＭ命令は、２つのスタック・オペランドをＲ０であるスタックのトップ「ＴＯＳ」レジスタでスタック・オペランドを記憶するレジスタにポップ（ＰＯＰ）すべく機能する。３番目のＡＲＭ命令はレジスタＲ１内の予め保持されたスタック・オペランドを消費しながら追加処理を実際に実行すると共に、（スタック・オペランドのトップになっている）レジスタＲ３に結果を書き込み、こうして−１の全体のスタック動作を生成する。
【００４６】
次いで、処理はおのおのが２つのスタック・オペランドの長いロードを表す２つのジャバ・バイトコードの実行に移行する。最初のジャバ・バイトコードに対する２の空要求条件が直ちに満たされ、それに応じて２つのＡＲＭ　ＬＤＲ命令を発行し実行するであろう。最初の長いロードのジャバ・バイトコードの実行後のマッピング状態は０１１０１である。この状態で、レジスタセットは単一の空のレジスタのみを含む。次のジャバ・バイトコードの長いロード命令は満たされない２の空要求値を有し、それに応じて要求される最初の動作はＡＲＭ　ＳＴＲ命令を用いたアドレス指定可能メモリへのスタック・オペランドのＲＵＳＨである。このことは、２つの後続のＬＤＲ命令の一部分としてロードされる新しいスタック・オペランドによる使用に対してレジスタを自由にする。前述したように、命令変換はハードウェア、ソフトウェア、またはこの２つの組合わせによって達成することができる。前述した技術に従って発生したソフトウェア・インタプリタの例の小区分を以下に挙げる。
【表８】
2004511041.tif 000013
2004511041.tif 000014
2004511041.tif 000015
2004511041.tif 000016
【００４７】
図７はスタック位置のトップで始まる２ワードのデータによって指定されるデータ・アレイ内から２ワードのデータを読み出す機能を有するジャバ・バイトコード命令「ｌａｌｏａｄ」を説明している。データ・アレイから読み出された２つのワードはそれらの位置を指定した２つのワードと交代して最上のスタック・エントリを形成する。
【００４８】
命令「ｌａｌｏａｄ」がアレイ及びデータのアレイ内の位置を指定する入力スタック・オペランドを重ね書きすることなくアレイから取り出したスタック・オペランドの一時記憶のための十分なレジスタ空間を有するために、ジャバ・バイトコード命令を２つの空要求値を有するものとして指定する。即ち、スタック・オペランド記憶装置に専用のレジスタ・バンク内のレジスタのうちの２つを命令「ｌａｌｏａｄ」をエミュレートするＡＲＭ命令を実行することに先立って空にしなければならない。このジャバ・バイトコードがあるときに２つの空のレジスタがなければ、必要な一時記憶域のための空間を作ると共に、命令に対する空要求値を満たすように、メモリ外のレジスタ内に現在保持されたスタック・オペランドをＰＵＳＨすべく記憶オペレーション（ＳＴＲ）を実行する。
【００４９】
データの位置はアレイ位置と個別のスタック・オペランドとしてそのアレイ内のインデックスによって指定されるので、命令はまた充填要求値２を有している。図面は充填要求及び空要求条件を既に満たすものとして、かつ「０１００１」のマッピング状態を有するものとして最初の状態を示している。命令「ｌａｌｏａｄ」は３つのＡＲＭ命令に分割される。これらの命令のうち最初のものは、スタック・オペランドのレジスタ・キャッシュとして機能するレジスタセット外のスペア・ワーキング・レジスタにアレイ・リファレンスをロードする。２番目の命令はアレイ内のインデックスと関連してこのアレイ・リファレンスを使用し、スタック・オペランドの記憶装置として専用される空レジスタの内の１つに書き込まれる第１のアレイ・ワードをアクセスするようになっている。
【００５０】
最初の２つのＡＲＭ命令を実行した後、システムのマッピング状態は変化せず、スタック・ポインタのトップは空きとして指定されたレジスタで開始したところに、依然そのままの状態で留まっていることに注目する必要がある。
【００５１】
ＡＲＭ命令のシーケンス内の最後の命令は、スタック・オペランドを記憶するためのレジスタセットに第２のアレイ・ワードをロードする。これは最後の命令であり、その間に割込みが生じていても、これはこの命令が完了する後まで処理されることはなく、スタック・オペランドを記憶するレジスタのマッピング状態に対する変更によってこの命令で入力状態を変化させることは安全である。この例では、マッピング状態は「０１０１１」に変化し、これはスタック・ポインタの新しいトップを第２のアレイ・ワードに置くと共に、アレイ・リファレンス及びインデックス値の入力変数はここで空のレジスタであることを示す。即ち、レジスタを空とすることはそれらがスタックから保持していた値を除去することと等価である。
【００５２】
命令「ｌａｌｏａｄ」の全体のスタック動作はレジスタ内に保持されたスタック・オペランドの数を変更していないが、それにも拘らずマッピング状態の交換が生じている。最後のオペレーションの実行により実施されるマッピング状態の変更は変換されたジャバ・バイトコードの機能として命令変換器中に組み込まれており、命令「ｌａｌｏａｄ」の特性として示される「スワップ（ｓｗａｐ）」パラメータによって指示される。
【００５３】
この図面の例は１つの特定の命令であるが、前述した原理はＡＲＭ命令としてエミュレートされる多くの異なるジャバ・バイトコード命令または他の型式の命令に拡張することができることが認められよう。
【００５４】
図８は前述した技術を概略的に例示するフロー図である。ステップ１０で、ジャバ・バイトコードがメモリから取り出される。ステップ１２で、そのジャバ・バイトコードに対する充填要求値及び空要求値が調べられる。空要求または充填要求の条件の何れかが満たされなければ、スタック・オペランド（恐らくは複数のスタック・オペランド）のそれぞれのＰＵＳＨ及びＰＯＰオペレーションをステップ１４及び１６で実行される。この特定のシステムは空要求及び充填要求の条件が同時に未対応の状態を許さないことに留意されよう。ステップ１２の条件が満たされるまでステップ１４から１６の複数のパスが要求される。
【００５５】
ステップ１８で、ジャバ・バイトコードに対する変換テンプレート内で指定された最初のＡＲＭ命令が選択される。ステップ２０で、この選択されたＡＲＭ命令がステップ１０で取り出したジャバ・バイトコードのエミュレーションで実行すべき最後の命令であるか否かがチェックされる。実行中のＡＲＭ命令が最後の命令であれば、ステップ２１はプログラム・カウンタ値を更新するように機能して、実行すべき命令のシーケンスでの次のジャバ・バイトコードを指す。ＡＲＭ命令が最後の命令であれば、今割込みが生じているか否かに無関係にその実行を完了することとなり、従ってプログラム・カウンタ値を次のジャバ・バイトコードに更新し、システムの状態が通常の、まだ割込みのないそのマッチング、即ちジャバ・バイトコードの完全な実行に達することとなるその時点から実行を再始動することが確実であることが理解される。ステップ２０でのテストが最後のバイトコードに達していないことを示せば、プログラム・カウンタ値の更新はバイパスされる。
【００５６】
ステップ２２では現在のＡＲＭ命令を実行する。ステップ１８で、テンプレートの一部分として実行が要求されるＡＲＭ命令がまだあるか否かのテストが行われる。更なるＡＲＭ命令があれば、これらの命令のうちの次の命令をステップ２６で選択し、処理はステップ２０に戻る。それ以上の命令がなければ、処理はステップ２８に進み、このステップ２８で関係するジャバ・バイトコードに対して指定された任意のマッピングの変更／交換を行い、所望のスタック位置のトップ及びスタック・オペランドを保持している種々のレジスタの充填／空の状態を反映するようにする。
【００５７】
図８は、もし存在すれば、割込みを処理し、次いで割込みの後で処理を再開する時点を概略的に例示している。バイトコード・シーケンスで戻り点として記憶中の現在のプログラム・カウンタ値が何であろうとステップ２２で現在進行中のＡＲＭ命令を実行した後、割込みが処理され始める。実行中の現在のＡＲＭ命令がテンプレ−ト・シーケンス内の最後の命令であれば、ステップ２１でプログラム・カウンタ値を更新することとなり、従って次のジャバ・バイトコードを指すこととなる（ＡＲＭ命令は、命令セット・スイッチが初期化されねばならない）。現在実行中のＡＲＭ命令がシーケンスの最後の命令以外のものであれば、プログラム・カウンタ値は関係するジャバ・バイトコードの実行の開始時に示されたものと依然同一であり、従ってリターンが実行されたとき、ジャバ・バイトコード全体が再び実行されることとなる。
【００５８】
図９はジャバ・バイトコードのストリームを受信すると共に、変換されたＡＲＭ命令のストリーム（または対応する制御信号）を出力してプロセッサ・コアの動作を制御するジャバ・バイトコード変換ユニット６８を例示している。前述したように、ジャバ・バイトコード変換器６８は命令テンプルを使用して簡単なジャバ・バイトコードをＡＲＭ命令またはＡＲＭ命令のシーケンスに変換する。各ジャバ・バイトコードが実行されたとき、スケジューリング制御ロジック内のカウンタ値はデクリメントされる。このカウンタ値が零に達したとき、ジャバ・バイトコード変換ユニット６８はスレッド（ｔｈｒｅａｄ）またはタスク間のスケジューリングを適切に管理するスケジューリング・コードに分岐するＡＲＭ命令を出す。
【００５９】
簡単なジャバ・バイトコードはこれらのバイトコードの高速ハードウェアに基づく実行をもたらすジャバ・バイトコード変換ユニット６８自身によって処理されるが、もっと複雑な処理オペレーションを必要とするバイトコードは解釈ルーチンの集合として設けられるソフトウェア・インタプリタに送られる（この種のルーチンの選択例はこの説明のより前に与えられている）。詳述すると、ジャバ・バイトコード変換ユニット６８は受信したバイトコードがハードウェア変換によってサポートされるバイトコードではないことを判断することができ、それに応じてそのバイトコードを解釈するソフトウェア・ルーチンが見い出されるかまたは参照されるジャバ・バイトコードに対応したアドレスに分岐を行うことができる。スケジューリング・ロジック７０がスケジューリング・オペレーションはスケジューリング・コードに分岐を生成する必要があることを示す場合に、この機構を用いることができる。
【００６０】
図１０は図９の実施例の動作をより詳細にかつハードウェア及びソフトウェア間のタスクの分割を例示している。全ジャバ・バイトコードはジャバ・バイトコード変換ユニット６８によって受信され、ステップ７２でカウンタをデクリメントする。ステップ７２で、カウンタ値が零に達したか否かについてチェックが行われる。カウンタ値が零に達していれば（システムに組み込ました所定の値またはユーザによって制御されプログラムされた値の何れかからかカウントダウン）、ステップ７６でスケジューリング・コードに分岐が行われる。カウンタは零に達しているので、これはここで新しい零ではない値に進められる。ステップ７６でスケジューリング・コードが完了すると、制御はハードウェアに戻され処理はステップ７２に進む。そこでは次のジャバ・バイトコードが取り出されカウンタがデクリメントされる。代替的に、ステップ７６で新しい値をスケジューリング・プロセスからの生成物の一部分としてカウンタに設定しても良い。
【００６１】
ステップ７４でテストがカウンタは零に等しくないことを示していれば、ステップ７８でジャバ・バイトコードを取り出す。ステップ８０で、取り出したバイトコードがステップ８２でハードウェア変換によって実行することができる簡単なバイトフードか、もっと複雑な処理を必要とし、ステップ８４でソフトウェア解釈へ行かなければならないかを決定する。処理がソフトウェア解釈へ進み、これが完了すると制御はハードウェアに戻り、ステップ７２で次のジャバ・バイトコードを取出すためにカウンタを再度デクリメントする。
【００６２】
図１１は代替的制御構成を例示している。ステップ８６での処理の開始において、命令信号（スケジューリング信号）がデアサート（ｄｅａｓｓｅｒｔ）される。ステップ８８で、取り出したジャバ・バイトコードを調べて、ハードウェア変換がサポートされる簡単なバイトコードか否かをチェックする。ハードウェア変換がサポートされていなければ、制御はステップ９０で解釈用ソフトウェアに行き、ステップ９０でＡＲＭ命令ルーチンを実行し、ジャバ・バイトコードを解釈する。バイトコードがハードウェア変換がサポートされている簡単なものであれば、処理はステップ９２に進み、このステップ９２で１つ以上のＡＲＭ命令が多サイクル有限状態マシーンの型式で機能するジャバ・バイトコード変換ユニット６８によって順々に出される。ジャバ・バイトコードがステップ９０またはステップ９２の何れかで適正に実行されると、処理はステップ９４に進み、ここで命令信号がステップ８６でデアサートされる前の短期間アサート（ａｓｓｅｒｔ）される。命令信号のアサート（ａｓｓｅｒｔｉｏｎ）は、解釈または変換された命令を部分的に実行することによりデータの完全性を損う危険性無しで、タイマベースのスケジューリング割込みを取り扱うことが可能な安全時点に達したことを外部回路に指示する。
【００６３】
図１２は図１１で発生した命令信号への応答に使用し得る例示的回路を示している。タイマ９６は所定の期間が終了した後にタイマ信号を周期的に発生する。このタイマ信号はクリアタイマ割込み信号によってクリアされるまでラッチ９８内に記憶される。ラッチ９８の出力はステップ９４でアサートされた命令信号とＡＮＤゲート１００によって論理的に組み合わされる。ラッチが設定され、命令信号がアサートされると、割込みがＡＮＤゲート１００の出力として発生され、標準的割込み処理のためにシステム内に設けられた割込み処理機構を使用してスケジューリング・オペレーションを実行する割込みをトリガするのに使用される。割込み信号が発生すると、次に次回のタイマ出力パルスが生じるまでラッチ９８をクリアするクリアタイマ割込み信号の生成をトリガする。
【００６４】
図１３は図１２の回路の動作を図示する信号図である。プロセッサ・コア・クロック信号は規則的な周波数で生じる。タイマ９６は所定の周期でタイマ信号を発生して、安全なとき、スケジューリング・オペレーションを開始すべきことを指示する。タイマ信号はラッチされる。命令信号は特定のジャバ・バイトコードが実行された速さに依存する間隔だけ離隔した時間に発生する。簡単なジャバ・バイトコードは単一のプロセッサ・コア・クロック周期、より典型的には２つまたは３つのクロック周期で実行されるのに対し、高レベルの管理タイプの機能を提供する複雑なジャバ・バイトコードはその実行がソフトウェア・インタプリタによって完了される前に数百のプロセッサ・クロック周期をとる。何れの場合でも、保留中のアサートされラッチされたタイマ信号は、スケジューリング・オペレーションの開始が安全であることを示す命令信号が出るまで、スケジューリング・オペレーションのトリガを行なわない。ラッチされたタイマ信号と命令信号が同時に生ずることによって、ラッチ９８をクリアするクリア信号が直後に来る割込み信号の発生がトリガされる。
【図面の簡単な説明】
【図１】
例示的な命令パイプライン構成を概略的に示す図である。
【図２】
例示的な命令パイプライン構成を概略的に示す図である。
【図３】
取出しステージ構成を詳細に示す図である。
【図４】
取出しステージ内のバッファリングした命令ワード内から可変長非ネイティブ命令の読出しを概略的に示す図である。
【図５】
プロセッサ・コアネイティブ命令及び変換を必要とする命令の双方を実行するデータ処理システムを概略的に示す図である。
【図６】
例示的命令のシーケンス及びスタック・オペランド記憶に対して使用されるレジスタの内容の状態に対して、マッピング状態及び変換を要求する命令とネイティブ命令の間の関係を概略的に示す図である。
【図７】
ネイティブ命令のシーケンスとして非ネイティブ命令を実行することを概略的に示す図である。
【図８】
命令変換器が変換された命令に対する割込み待ち時間を保存するようにして動作する方法を図示するフロー図である。
【図９】
ハードウェア及びソフトウェア技術を使用してジャバ・バイトコードをＡＲＭ演算コードに変換することを概略的に示す図である。
【図１０】
ハードウェアベースの変換器、ソフトウェアベースのスケジューリングの間の制御のフローを概略的に示す図である。
【図１１】
タイマベースのアプローチを使用してスケジューリング・オペレーションを制御する別の方法を示す図である。
【図１２】
タイマベースのアプローチを使用してスケジューリング・オペレーションを制御する別の方法を示す図である。
【図１３】
図１２の回路の動作を制御する各信号を図示する信号図である。
【図１】
2004511041.tif 000017
【図２】
2004511041.tif 000018
【図３】
2004511041.tif 000019
【図４】
2004511041.tif 000020
【図５】
2004511041.tif 000021
【図６】
2004511041.tif 000022
【図７】
2004511041.tif 000023
【図８】
2004511041.tif 000024
【図９】
2004511041.tif 000025
【図１０】
2004511041.tif 000026
【図１１】
2004511041.tif 000027
【図１２】
2004511041.tif 000028
【図１３】
2004511041.tif 000029
【国際公開パンフレット】
2004511041.tif 000030
2004511041.tif 000031
2004511041.tif 000032
2004511041.tif 000033
2004511041.tif 000034
2004511041.tif 000035
2004511041.tif 000036
2004511041.tif 000037
2004511041.tif 000038
2004511041.tif 000039
2004511041.tif 000040
2004511041.tif 000041
2004511041.tif 000042
2004511041.tif 000043
2004511041.tif 000044
2004511041.tif 000045
2004511041.tif 000046
2004511041.tif 000047
2004511041.tif 000048
2004511041.tif 000049
2004511041.tif 000050
2004511041.tif 000051
2004511041.tif 000052
2004511041.tif 000053
2004511041.tif 000054
2004511041.tif 000055
2004511041.tif 000056
2004511041.tif 000057
2004511041.tif 000058
2004511041.tif 000059
2004511041.tif 000060
2004511041.tif 000061
2004511041.tif 000062
2004511041.tif 000063
2004511041.tif 000064
2004511041.tif 000065
2004511041.tif 000066
2004511041.tif 000067
2004511041.tif 000068
2004511041.tif 000069
2004511041.tif 000070
2004511041.tif 000071
【国際調査報告】
2004511041.tif 000072
2004511041.tif 000073
2004511041.tif 000074
2004511041.tif 000075