(57)【特許請求の範囲】
【請求項１】
記憶領域に格納された一以上のソフトウェア命令の中から、命令カウンタが指定する格納アドレスに格納されているこれから実行すべきソフトウェア命令を取り出して、プロセッサ上でエミュレーションを実行するＳＷ実行手段と、
前記一以上のソフトウェア命令の中から一括して実行しうる複数のソフトウェア命令を抽出するＳＷ抽出手段と、
前記複数のソフトウェア命令を複合化して所定の複合ソフトウェア命令を構成する複合化手段と、
前記複合ソフトウェア命令を第二の記憶領域に格納する複合ＳＷ格納手段と、
前記第二の記憶領域に格納された複合ソフトウェア命令の中から、第二の命令カウンタが指定する第二の格納アドレスに格納されているこれから実行すべき複合ソフトウェア命令を取り出して、前記エミュレーションを実行する複合ＳＷ実行手段と、
前記ソフトウェア命令及び前記複合ソフトウェア命令の実行プロセスを示すテーブルデータを登録するテーブル登録手段と、
前記テーブルデータに登録された実行プロセスに従って前記ソフトウェア命令又は前記複合ソフトウェア命令についての前記エミュレーションを実行させる実行制御手段と、を備え、
前記テーブル登録手段は、
これから実行すべき複合ソフトウェア命令の前記第二記憶領域における格納アドレス、前記複合ソフトウェア命令を構成する先頭のソフトウェア命令の前記記憶領域における格納アドレス、及び、次に実行すべきソフトウェア命令の前記記憶領域における格納アドレスを対応付けた第一のテーブルデータを前記テーブルデータとして登録し、
前記実行制御手段は、
前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第一のテーブルデータに登録されていない場合には、当該格納アドレスに格納されているソフトウェア命令を前記記憶領域から取り出して前記エミュレーションを実行させ、
前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第一のテーブルデータに登録されている場合には、当該格納アドレスに対応付けて登録されている複合ソフトウェア命令の前記格納アドレスによって前記第二の命令カウンタが指定する前記格納アドレスを更新し、当該更新後の格納アドレスに格納されている複合ソフトウェア命令を前記第二の記憶領域から取り出して前記エミュレーションを実行させ、当該エミュレーションの実行後に、前記格納アドレスに対応付けて登録されている次に実行すべきソフトウェア命令の前記格納アドレスによって前記命令カウンタが指定する前記格納アドレスを更新する
ことを特徴とする情報処理装置。
【請求項２】
前記複合ＳＷ格納手段は、
前記複合化手段によって構成された複合ソフトウェア命令を、当該複合ソフトウェア命令を構成する先頭のソフトウェア命令に代えて前記記憶領域に格納し、
前記テーブル登録手段は、
前記複合ソフトウェア命令の前記記憶領域における格納アドレス及び次に実行すべきソフトウェア命令の前記記憶領域における格納アドレスを対応付けた第二のテーブルデータを専ら前記テーブルデータとして登録し、
前記実行制御手段は、
前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第二のテーブルデータに登録されていない場合には、専ら、当該格納アドレスに格納されているソフトウェア命令を前記記憶領域から取り出して前記エミュレーションを実行させ、前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第二のテーブルデータに登録されている場合には、専ら、当該格納アドレスに格納されている複合ソフトウェア命令を前記記憶領域から取り出して前記エミュレーションを実行させ、当該エミュレーションの実行後、前記第二のテーブルデータにおける前記格納アドレスに対応づけて登録されている次に実行すべきソフトウェア命令の前記記憶領域における格納アドレスによって前記命令カウンタが指定する前記格納アドレスを更新する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記複合ＳＷ格納手段は、
前記複合化手段によって構成された複合ソフトウェア命令を、当該複合ソフトウェア命令を構成する先頭のソフトウェア命令に代えて前記記憶領域に格納するとともに、重複した処理を防ぐための所定の識別コードを、その複合ソフトウェア命令を構成する先頭以外の他のソフトウェア命令に代えて前記記憶領域に格納し、
前記実行制御手段は、
前記命令カウンタが指定する前記格納アドレスにソフトウェア命令又は複合ソフトウェア命令が格納されている場合には、専ら、これらを取り出して前記エミュレーションを実行させ、前記命令カウンタが指定する前記格納アドレスに前記識別コードが格納されている場合には、専ら、前記命令カウンタが指定する前記格納アドレスをその次に実行すべきソフトウェア命令の前記格納アドレスに更新する
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記複合ＳＷ格納手段は、
前記複合化手段によって構成された複合ソフトウェア命令を、当該複合ソフトウェア命令を構成する先頭のソフトウェア命令に代えて前記記憶領域に格納するとともに、前記複合ソフトウェア命令を格納する格納アドレスの次に指定される前記格納アドレスには、前記複合ソフトウェア命令についての前記エミュレーションの実行の次に実行すべきソフトウェア命令の前記格納アドレスを前記記憶領域に格納し、
前記実行制御手段は、
前記命令カウンタが指定する前記格納アドレスにソフトウェア命令又は複合ソフトウェア命令が格納されている場合には、専ら、これらを取り出して前記エミュレーションを実行させ、前記命令カウンタが指定する前記格納アドレスにソフトウェア命令または複合ソフトウェア命令が格納されていない場合は、専ら、その格納アドレスに格納された前記次に実行すべきソフトウェア命令の格納アドレスによって前記命令カウンタが指定する前記格納アドレスを更新する
ことを特徴とする請求項１〜３のいずれか一項記載の情報処理装置。
【請求項５】
前記テーブル登録手段は、
前記複合化手段によって構成された複合ソフトウェア命令、当該複合ソフトウェア命令を構成する先頭のソフトウェア命令の前記記憶領域における格納アドレス、及び、次に実行すべきソフトウェア命令の前記記憶領域における格納アドレスを対応付けた第三のテーブルデータを専ら前記テーブルデータとして登録し、
前記実行制御手段は、
前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第三のテーブルデータに登録されていない場合には、専ら、当該格納アドレスに格納されているソフトウェア命令を前記記憶領域から取り出して前記エミュレーションを実行させ、前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第三のテーブルデータに登録されている場合には、専ら、前記格納アドレスに対応づけて前記第三のテーブルデータにおいて登録されている複合ソフトウェア命令を取り出して前記エミュレーションを実行させ、当該エミュレーションの実行後、前記命令カウンタが指定する前記格納アドレスを、前記第三のテーブルデータにおける前記格納アドレスに対応づけて登録されている次に実行すべきソフトウェア命令の前記記憶領域における格納アドレスに更新する
ことを特徴とする請求項１〜４のいずれか一項記載の情報処理装置。
【請求項６】
ソフトウェア命令のエミュレーションを実行するためのエミュレーション方法であって、
記憶領域に格納された一以上のソフトウェア命令の中から、命令カウンタが指定する格納アドレスに格納されているこれから実行すべきソフトウェア命令を取り出して、プロセッサ上でエミュレーションを実行するＳＷ実行ステップと、
前記一以上のソフトウェア命令の中から一括して実行しうる複数のソフトウェア命令を抽出するＳＷ抽出ステップと、
前記複数のソフトウェア命令を複合化して所定の複合ソフトウェア命令を構成する複合化ステップと、
前記複合ソフトウェア命令を第二の記憶領域に格納する複合ＳＷ格納ステップと、
前記第二の記憶領域に格納された複合ソフトウェア命令の中から、第二の命令カウンタが指定する第二の格納アドレスに格納されているこれから実行すべき複合ソフトウェア命令を取り出して、前記エミュレーションを実行する複合ＳＷ実行ステップと、
前記ソフトウェア命令及び前記複合ソフトウェア命令の実行プロセスを示すテーブルデータを登録するテーブル登録ステップと、
前記テーブルデータに登録された実行プロセスに従って前記ソフトウェア命令又は前記複合ソフトウェア命令についての前記エミュレーションを実行させる実行制御ステップと、を有し、
前記テーブル登録ステップは、
これから実行すべき複合ソフトウェア命令の前記第二記憶領域における格納アドレス、前記複合ソフトウェア命令を構成する先頭のソフトウェア命令の前記記憶領域における格納アドレス、及び、次に実行すべきソフトウェア命令の前記記憶領域における格納アドレスを対応付けた第一のテーブルデータを前記テーブルデータとして登録し、
前記実行制御ステップは、
前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第一のテーブルデータに登録されていない場合には、当該格納アドレスに格納されているソフトウェア命令を前記記憶領域から取り出して前記エミュレーションを実行させ、
前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第一のテーブルデータに登録されている場合には、当該格納アドレスに対応付けて登録されている複合ソフトウェア命令の前記格納アドレスによって前記第二の命令カウンタが指定する前記格納アドレスを更新し、当該更新後の格納アドレスに格納されている複合ソフトウェア命令を前記第二の記憶領域から取り出して前記エミュレーションを実行させ、当該エミュレーションの実行後に、前記格納アドレスに対応付けて登録されている次に実行すべきソフトウェア命令の前記格納アドレスによって前記命令カウンタが指定する前記格納アドレスを更新する
ことを特徴とするエミュレーション方法。
【請求項７】
コンピュータを、
記憶領域に格納された一以上のソフトウェア命令の中から、命令カウンタが指定する格納アドレスに格納されているこれから実行すべきソフトウェア命令を取り出して、プロセッサ上でエミュレーションを実行するＳＷ実行手段、
前記一以上のソフトウェア命令の中から一括して実行しうる複数のソフトウェア命令を抽出するＳＷ抽出手段、
前記複数のソフトウェア命令を複合化して所定の複合ソフトウェア命令を構成する複合化手段、
前記複合ソフトウェア命令を第二の記憶領域に格納する複合ＳＷ格納手段、
前記第二の記憶領域に格納された複合ソフトウェア命令の中から、第二の命令カウンタが指定する第二の格納アドレスに格納されているこれから実行すべき複合ソフトウェア命令を取り出して、前記エミュレーションを実行する複合ＳＷ実行手段、
前記ソフトウェア命令及び前記複合ソフトウェア命令の実行プロセスを示すテーブルデータを登録するテーブル登録手段、及び
前記テーブルデータに登録された実行プロセスに従って前記ソフトウェア命令又は前記複合ソフトウェア命令についての前記エミュレーションを実行させる実行制御手段、として機能させ、
前記テーブル登録手段に、
これから実行すべき複合ソフトウェア命令の前記第二記憶領域における格納アドレス、前記複合ソフトウェア命令を構成する先頭のソフトウェア命令の前記記憶領域における格納アドレス、及び、次に実行すべきソフトウェア命令の前記記憶領域における格納アドレスを対応付けた第一のテーブルデータを前記テーブルデータとして登録させ、
前記実行制御手段に、
前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第一のテーブルデータに登録されていない場合には、当該格納アドレスに格納されているソフトウェア命令を前記記憶領域から取り出して前記エミュレーションを実行させ、
前記命令カウンタが指定する前記格納アドレスと同一の格納アドレスが前記第一のテーブルデータに登録されている場合には、当該格納アドレスに対応付けて登録されている複合ソフトウェア命令の前記格納アドレスによって前記第二の命令カウンタが指定する前記格納アドレスを更新し、当該更新後の格納アドレスに格納されている複合ソフトウェア命令を前記第二の記憶領域から取り出して前記エミュレーションを実行させ、当該エミュレーションの実行後に、前記格納アドレスに対応付けて登録されている次に実行すべきソフトウェア命令の前記格納アドレスによって前記命令カウンタが指定する前記格納アドレスを更新させる
ことを特徴とするエミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ上で所定プログラムをエミュレーションする情報処理装置、エミュレーション方法及びエミュレーションプログラムに関する。
【背景技術】
【０００２】
一般的に、コンピュータシステム上で他のシステムのＯＳ（Operating  System）等の機能を実現するソフトウェアエミュレーションにおいては、一のソフトウェア命令を単位としてエミュレーションを実施していた。
【０００３】
図１５は、一般的なコンピュータシステムにおけるソフトウェアエミュレーションの実行プロセスを模式的に表した模式図である。
同図に示すように、各ソフトウェア命令はＯＳ用のＳＷ命令コード領域１０６に命令Ａから命令Ｂ、命令Ｃ、命令Ｄ、命令Ｅ・・・と順に配置されて格納されている。
命令カウンタＣ０１は、現在実行している（又はこれから実行する）ソフトウェア命令（命令Ａ）のメモリ上の格納番地（Ｘ番地）を指しており、ソフトウェア命令の命令語長が４バイト固定とした場合、命令Ａの処理が完了するとＸ＋４番地、命令Ｂの処理が完了するとＸ＋８番地、命令Ｃの処理が完了するとＸ＋１２番地、といったように、指定する番地（アドレス）が若番順に更新され、一のソフトウェア命令ごとに順次命令サイクルが実行されることとなる。
【０００４】
従って、コンピュータシステムのハードウェア性能が増強しない限りエミュレーション速度の根本的な向上は見込めず、ソフトウェア処理によるエミュレーションの高速化については一定の限界があるとされてきた。
【０００５】
このような状況下、ハードウェア性能に関わらず、コンピュータシステムのエミュレーション速度を向上させることが可能なエミュレーション方法及びコンピュータシステムが提案された（例えば、特許文献１参照）。
このエミュレーション方法等によれば、複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成した該複数のターゲット命令を一括するコーディングに分岐し、該コーディングに従って処理を実行するようにしている。
従って、特に既存の資源を活かしながらエミュレーション速度を向上させることができ、合理的で、かつ、高速処理が可能な技術として期待されていた。
【０００６】
【特許文献１】特開２００７−３１０５４６号公報（第１−８頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載のエミュレーション方法等においては、ターゲット命令の順序制御が明確に示されておらず、特に、命令サイクルにおける命令カウンタ（プログラムカウンタ）の書き換えや更新に関するプロセスは明らかではなかった。
このため、同一命令が重複処理されることに伴う遅延等が発生する可能性があった。
また、専ら分岐処理を行う仕組みを採っているため、アルゴリズムが複雑になり、却って処理能力が低下する可能性が考えられた。
【０００８】
本発明の目的は、上述した課題である、命令の実行プロセスにおける不具合を解消し、エミュレーションの高速化を図る情報処理装置、エミュレーション方法及びエミュレーションプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の情報処理装置は、一以上のソフトウェア命令の中から一括して実行しうる複数のソフトウェア命令を抽出するＳＷ抽出手段と、前記ＳＷ抽出手段によって抽出された複数のソフトウェア命令を複合化して所定の複合ソフトウェア命令を構成する複合化手段と、前記複合ソフトウェア命令又はソフトウェア命令を所定順序に基づき、所定プロセッサ上でエミュレーションさせる実行制御手段と、を備えた構成としてある。
【００１０】
また、本発明のエミュレーション方法は、ソフトウェア命令のエミュレーションを迅速化するためのエミュレーション方法であって、一以上のソフトウェア命令の中から一括して実行しうる複数のソフトウェア命令を抽出するステップと、抽出された前記複数のソフトウェア命令を複合化して所定の複合ソフトウェア命令を構成するステップと、前記複合ソフトウェア命令又はソフトウェア命令を所定順序に基づき、所定プロセッサ上でエミュレーションさせるステップと、を有する方法としてある。
【００１１】
さらに、本発明のエミュレーションプログラムは、ソフトウェア命令を所定のプロセッサ上でエミュレーションする情報処理装置において当該エミュレーションを迅速化するためのエミュレーションプログラムであって、前記情報処理装置を構成するコンピュータを、一以上のソフトウェア命令の中から一括して実行しうる複数のソフトウェア命令を抽出するＳＷ抽出手段、前記ＳＷ抽出手段によって抽出された複数のソフトウェア命令を複合化して所定の複合ソフトウェア命令を構成する複合化手段、前記複合ソフトウェア命令又はソフトウェア命令を所定順序に基づき、所定のプロセッサ上でエミュレーションさせる実行制御手段、として機能させるためのプログラムとしてある。
【発明の効果】
【００１２】
本発明によれば、ソフトウェア命令の複合化及び適切な実行プロセスに基づき、エミュレーション速度を的確に向上させることができる。
また、既存の資源を活かしつつエミュレーションの高速化を図ることも可能である。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の好ましい実施形態について図１〜図１４を参照して説明する。
ここで、以下に示す本実施形態の情報処理装置は、プログラム（ソフトウェア）の命令によりコンピュータで実行される処理，手段，機能によって実現される。プログラムは、コンピュータの各構成要素に指令を送り、以下に示すような所定の処理・機能を行わせる。すなわち、本実施形態の情報処理装置における各処理・手段は、プログラムとコンピュータとが協働した具体的手段によって実現される。
なお、プログラムの全部又は一部は、例えば、磁気ディスク，光ディスク，半導体メモリ，その他任意のコンピュータで読取り可能な記録媒体により提供され、記録媒体から読み出されたプログラムがコンピュータにインストールされて実行される。また、プログラムは、記録媒体を介さず、通信回線を通じて直接にコンピュータにロードし実行することもできる。
【００１４】
まず、図１は、本発明の各種実施形態に共通する情報処理装置の基本構成を示した機能ブロック図である。
同図に示す情報処理装置１は、ソフトウェア命令をプロセッサ上で動作させるための情報処理装置であって、ＳＷ抽出手段１０、複合化手段１１及び実行制御手段１２を備えている。
ＳＷ抽出手段１０は、一以上のソフトウェア命令１３の中から一括して実行しうるソフトウェア命令１３を抽出するものである。
また、複合化手段１１は、ＳＷ抽出手段１３によって抽出された複数のソフトウェア命令１３を複合化して所定の複合ソフトウェア命令１４を構成するものである。
そして、実行制御手段１２は、複合化手段１１によって構成された複合ソフトウェア命令１４または複合化手段１１によって構成されないソフトウェア命令１３を所定順序にもとづき選択し、プロセッサ１０４上のエミュレータ１０３を用いて実行させるものである。
【００１５】
［第一実施形態］
図２及び図３は、本発明の第一実施形態に係る情報処理装置の基本構成を示したブロック図である。
図２に示すように、本実施形態の情報処理装置１は、ソフトウェア命令を汎用プロセッサ上で動作できるようにソフトウェアエミュレーションで処理する情報処理である。
具体的には、情報処理装置１は、プログラムに従い命令を実行し制御するプロセッサ（CPU：Central  Processing  Unit）１０４と、プロセッサ１０４の処理において必要なプログラムやデータを格納するメモリ１０５と、プロセッサ１０４に対するコマンドその他のデータを入力する入力部及びプロセッサ１０４の処理結果について表示等を行う出力部からなるＩＯ（Input  Output）装置１０９と、を有する構成となっている。
【００１６】
メモリ１０５は、半導体メモリ、磁気ディスク、光ディスクその他の記録媒体であり、各種記憶領域を有している。
具体的には、メモリ１０５は、オペレーティングシステム１０２用のソフトウェア命令群が格納されるＯＳ用のＳＷ命令コード領域（本発明の記憶領域）１０６、ソフトウェア命令群に含まれる複数のソフトウェア命令１３によって構成される複合ソフトウェア命令１４が格納される複合ＳＷ命令用コード領域（本発明の第二記憶領域）１０７及びエミュレーションプログラム（エミュレータ１０３）が格納されるエミュレータメモリ領域１０８を有している。
また、メモリ１０５には、ソフトウェア命令１３や複合ソフトウェア命令１４の実行制御に用いられる所定のテーブル記憶領域（後述する変換テーブルＴ０１，Ｔ０３及び次ＩＣ(Instruction  Counter)テーブルＴ０２）が含まれている。
【００１７】
プロセッサ１０４は、エミュレータメモリ領域１０８に格納されたエミュレーションプログラム１０３を読み出し、このエミュレーションプログラム１０３に従ってエミュレーション処理を実行し、オペレーティングシステム１０２の命令を所定命令に置き換えながらアプリケーションプログラム１０１の処理を実行する。
特に、本実施形態においては、コード解析プログラム１１０による実行制御（実行制御手段１２）のもと、前記ソフトウェア命令１３又は複合ソフトウェア命令１４のエミュレーションを実行する。
【００１８】
コード解析プログラム１１０は、メモリ１０５のＳＷ命令コード領域１０６の中から複合ソフトウェア命令１４に変換可能なソフトウェア命令１３が存在するか否かを検索・判定し、変換可能な二以上のソフトウェア命令１３があればこれらを抽出し（ＳＷ抽出手段１０）、複合化して（複合化手段１１）、複合ＳＷ命令用コード領域１０７に格納する指示をプロセッサ１１１に対して行う。
【００１９】
また、コード解析プログラム１１０は、図２に示すように、専用のプロセッサ１１１上で動作させることが通常だが、他の形態を採ることも可能である。
例えば、図３に示すように、一プロセッサ１１２上にエミュレータとコード解析プログラム１１０とを実装し、エミュレータ１０４の処理の空き時間を利用してコード解析プログラム１１０を動作させるようにしてもよい。
このような構成にすることで、プロセッサ１１２を効率よく稼働させることが可能となるため、有効な資源活用を図りつつ、図２に示す情報処理装置１と同様の効果を得ることができる。
従って、以下「プロセッサ」とある場合には、図３の形態における共用プロセッサ１１２もこれに含まれるものとする。
【００２０】
ここで、コード解析プログラム１１０の具体的な処理方法について図４を参照しながら説明を行う。
図４は、本実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
なお、命令カウンタ（本発明の命令カウンタ）Ｃ０１とＯＳ用ソフトウェア命令コード領域１０６は、一般的な情報処理装置の機能と同様であり、基本的な処理プロセスは図１５で示した流れを踏襲するものである。
つまり、命令カウンタＣ０１の指定番地に基づき、ＯＳ用ＳＷ命令コード領域１０６の若い番地から順にソフトウェア命令１３が一つずつ取り出されて実行される（本発明のＳＷ実行手段）。
そして、一のソフトウェア命令１３の実行後は、命令カウンタＣ０１の指定番地が次の番地に更新されたうえで、一命令サイクルが終了することとなる。
【００２１】
ただし、本実施形態においては、コード解析プログラム１１０が、ＯＳ用ＳＷ命令コード領域１０６から順次ソフトウェア命令１３を読み込み、複合化が可能か否かを解析・判定するようにしている。
そして、複合化可能と判断した場合には、複合化手段によって得た複合ソフトウェア命令１４を複合ＳＷ命令コード領域１０７に格納し、必要に応じて実行するようにしている（本発明の複合ＳＷ実行手段）。
また、複合化された元のソフトウェア命令１３を識別し重複処理等の回避しつつ適切な順序で命令実行を行わせるため、予め、複合化前のソフトウェア命令１３のＯＳ用ＳＷ命令コード領域１０６における番地と、複合化によって得られた複合ソフトウェア命令１４の複合ＳＷ命令コード領域１０７における番地と、命令カウンタＣ０１が次に指定すべき番地と、を変換テーブルＴ０１に登録するようにしている（本発明のテーブル登録手段）。
【００２２】
図４に示すように、本実施形態においては、ＳＷ命令ＡとＳＷ命令Ｂとが複合ＳＷ命令Ａ＋Ｂに複合され、ＳＷ命令ＤとＳＷ命令Ｅとが複合ＳＷ命令Ｄ＋Ｅに複合されるため、変換テーブルＴ０１には、１ワード目に、ＳＷ命令Ａの格納番地「Ｘ番地」、複合ＳＷ命令Ａ＋Ｂの格納番地「Ｙ番地」及び命令カウンタＣ０１が次に指定すべきＳＷ命令の格納番地「Ｘ＋８番地」が登録され、２ワード目に、ＳＷ命令Ｄの格納番地「Ｘ＋１２番地」、複合ＳＷ命令Ｄ＋Ｅの格納番地「Ｙ＋４番地」及び命令カウンタＣ０１が次に指定すべきＳＷ命令の格納番地「Ｘ＋２０番地」が登録されることとなる。
【００２３】
そして、プロセッサ１０４は、ソフトウェア命令１３を実行する際、まず変換テーブルＴ０１を検索し、命令カウンタＣ０１の指定番地と同一の番地が「命令カウンタ」欄に登録されている場合には、対応して登録されてある「複合ＩＣ」欄の番地データを取り出して複合命令カウンタＣ０２（本発明の第二命令カウンタ）の指定番地とする。
次いで、プロセッサ１０４は、複合命令カウンタＣ０２が指定する番地にアクセスして複合ソフトウェア命令１４を取り出し、実行を行う。
一方、命令カウンタＣ０１の指定番地と同一の番地が「命令カウンタ」欄に登録されていない場合には、その指定番地のソフトウェア命令１３を取り出し実行を行う。
【００２４】
なお、複合ソフトウェア命令１４の実行後は、変換テーブルＴ０１上にともに対応づけて登録されている「次のＩＣ」欄の番地データを命令カウンタＣ０１に設定することによって一の命令サイクルは終了し、命令カウンタＣ０１の次の指定番地にもとづき新たな命令サイクルが開始されることとなる。
これにより、従来は、命令Ａ、命令Ｂ、命令Ｃ、命令Ｄ、命令Ｄ、命令Ｅと一命令毎に直列的に動作していたのに対し、本実施形態に係る複合化処理及び実行プロセス制御によって、命令Ａ＋Ｂ、命令Ｃ、命令Ｄ＋Ｅと一部並列処理が行われることになり、このため、エミュレーション速度を向上させることが可能となっている。
【００２５】
次に、本実施形態に係る複合化処理について図面を参照しながら詳細に説明する。
図５は、本実施形態に係る情報処理装置において行われる複合化処理を説明するためのイメージ図である。
図５に示すように、ここでは、メモリ１０５のＳＷ命令コード領域１０６に格納してあるデータを汎用レジスタ「GRx」に格納するＬＤ命令と、汎用レジスタ「GRx」と汎用レジスタ「GRy」を加算して汎用レジスタ「GRx」に格納するＥＸＥ命令の２系統を複合化する例について説明する。
なお、汎用プロセッサはメモリアクセス系に２本のパイプライン、演算系に１本のパイプラインを備え、レジスタ依存関係によるパイプラインストールは１Ｔであるとし、汎用レジスタ「GRx／GRy」はソフトウェアから可視なレジスタ（ＳＷビジブルレジスタ）で、ソフトウェア領域ではないローカルなメモリ空間に配置されているものとする。
【００２６】
同図に示すように、ＬＤ命令の１Ｔ目にて、ＳＷ命令コード領域１０６のメモリ空間「MEM」よりデータを取り出し、プロセッサ内のワークレジスタ「WK1」に一旦格納する。
２Ｔ目では、ワークレジスタ「WK1」の内容を、ローカルなメモリ空間に配置されている汎用レジスタ「GRx」にストアする。
３Ｔ目、すなわち、ＥＸＥ命令の１Ｔ目においては、汎用レジスタ「GRx」と汎用レジスタ「GRy」の内容をそれぞれプロセッサ内のワークレジスタ「WK1」「WK2」に読み出す。
本例では、メモリアクセス系に２本のパイプラインを備えているため、図４のようにｌｄ命令を２命令同時に実行することが可能である。
４Ｔ目では、ワークレジスタ「WK1」とワークレジスタ「WK2」の値を加算して、ワークレジスタ「WK1」に格納する。
５Ｔ目にて、ワークレジスタ「WK1」の値を汎用レジスタ「GRx」にストアする。
なお、上記の例では、ＬＤ命令とＥＸＥ命令の処理Ｔ数が５Ｔとなっているが、処理Ｔ数は、汎用プロセッサのパイプライン数やレジスタ依存関係によるパイプラインストールのＴ数によって、処理Ｔ数が増減する場合がある。
【００２７】
次に、このＬＤ命令とＥＸＥ命令を複合化したＬＤ＋ＥＸＥ命令について説明する。
１Ｔ目にて、ＳＷ命令コード領域１０６のメモリ空間「MEM」よりデータを取り出し、プロセッサ内のワークレジスタ「WK1」に格納する。
また、汎用レジスタ「GRy」の内容をワークレジスタ「WK2」に格納する。
本例では、ｌｄ命令を２命令同時に実行することが可能であり、１Ｔにてこれらを並行処理することができる。
２Ｔ目では、ワークレジスタ「WK1」とワークレジスタ「WK2」の値を加算してワークレジスタ「WK1」に格納する。
３Ｔ目にて、ワークレジスタ「WK1」の値をローカルなメモリ空間に配置されている汎用レジスタ「GRx」に格納する。
【００２８】
その結果、図５に示すように、複合命令ＬＤ＋ＥＸＥ命令の処理Ｔ数は３Ｔとなり、複合前の５Ｔと比較して２Ｔの性能向上を図ることができる。
このように、汎用プロセッサのパイプライン数やパイプラインストールのＴ数などを考慮して複合ソフトウェア命令１４を構成することでエミュレーション速度をより高速化することが可能となる。
【００２９】
次に、以上のような構成からなる第一実施形態の情報処理装置におけるプロセッサの処理手順について図６を参照しながら説明する。
図６は、本発明の第一実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
まず、コード解析プログラム１１０の指示のもとプロセッサ１１１は、命令カウンタＣ０１が指定する番地データが変換テーブルＴ０１に登録されているか否かを検索・判定する（Ｓ５０１）。
その結果、指定番地が変換テーブルＴ０１に登録されていないと判定された場合（Ｓ５０２：ＮＯ）、コード解析プログラム１１０の指示に基づきプロセッサ１０４は、命令カウンタＣ０１が指定する番地に格納されているソフトウェア命令１３をＳＷ命令コード領域１０６から取り出す（Ｓ５０３）。
そして、プロセッサ１０４は、ステップＳ５０３で取り出したソフトウェア命令１３の実行処理を行い（Ｓ５０４）、その後、命令カウンタＣ０１を次の番地に更新して一命令サイクルを終了する（Ｓ５０５）。
【００３０】
一方、命令カウンタＣ０１が指定する番地データが変換テーブルＴ０１に登録されていると判定された場合（Ｓ５０２：ＹＥＳ）、コード解析プログラム１１０の指示のもと、プロセッサ１０４は、変換テーブルＴ０１の登録データから「複合ＩＣ」欄と「次のＩＣ」欄の番地データを取り出す（Ｓ５０６）。
次に、プロセッサ１０４は、ステップＳ５０６で取り出した「複合ＩＣ」欄の番地データを複合命令カウンタＣ０２の指定番地とし、当該指定番地に格納されている複合ソフトウェア命令１４を複合ＳＷ命令用コード領域１０７から取り出す（Ｓ５０７）。
そして、プロセッサ１０４は、ステップＳ５０７で取り出した複合ソフトウェア命令１４の実行処理を行い（Ｓ５０８）、最後に命令カウンタＣ０１を「次のＩＣ」の番地に設定して一の命令サイクルを終了する（Ｓ５０９）。
【００３１】
以上説明したように、本実施形態の情報処理装置１は、コード解析プログラム１１０を有しており、このコード解析プログラム１１０の制御のもとプロセッサ１０４が的確に命令処理を実行するようにしている。
具体的には、プロセッサ１０４は、ＳＷ命令コード領域１０６から複合化しうるソフトウェア命令１３を抽出し、複合化して複合ＳＷ命令用コード領域１０７に格納するように制御される。
そして、プロセッサ１０４は、必要に応じ、複合ＳＷ命令用コード領域１０７から複合ソフトウェア命令１４を取り出して実行するようにしている。
このため、単一命令を直列的に処理するのではなく、複数命令を並行して処理できるために処理時間が短縮され、結果、エミュレーション速度を向上させることができるようになっている。
【００３２】
また、本実施形態に係る情報処理装置１によれば、メモリ１０５の所定領域に変換テーブルＴ０１を配置し、コード解析プログラム１１０は、この変換テーブルＴ０１の登録データに基づいてプロセッサ１０４を制御するようにしている。
具体的には、予め、変換テーブルＴ０１には、複合化に用いた元のソフトウェア命令１３のアドレスや複合化によって得た複合ソフトウェア命令１４のアドレスのほか、次に実行すべきソフトウェア命令１３のアドレスを登録するようにしている。
そして、ソフトウェア命令１３の実行の際には、命令カウンタＣ０１の指定値と変換テーブルＴ０１の登録データとの照合を行った上で、その照合結果に応じた命令処理を選択して実行されるよう、コード解析プログラム１１０がプロセッサ１０４を制御するようにしている。
【００３３】
このため、重複した命令処理や過剰な分岐処理を発生させず、速度低下の要因を排除することで間接的にエミュレーション速度の向上に貢献している。
特に、複数のパイプラインを備えた汎用プロセッサの場合、パイプライン数を最大限に活かすように複合ソフトウェア命令１４を構成し、また、変換テーブルＴ０１上に登録することで、パイプラインの並列度を向上させることができる等、エミュレーション速度をさらに向上させることが可能である。
【００３４】
さらに、本実施形態に係るコード解析プログラム１１０や変換テーブルＴ０１はソフトウェア資源であるため、既存のハードウェアをそのまま利用することができ、コスト性に優れた情報処理装置１を容易に実現することも可能となっている。
【００３５】
［第二実施形態］
次に、本発明の第二実施形態に係る情報処理装置について図７及び図８を参照しながら説明する。
図７は、本発明の第二実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
本実施形態では、複合化手段によって得られた複合ソフトウェア命令１４を専用のコード領域（複合ＳＷ命令用コード領域１０７）に格納するのではなく、もとのＳＷ命令コード領域１０６に上書きして格納する点で第一実施形態とは異なる。
【００３６】
すなわち、図７に示すように、コード解析プログラム１１０は、ＳＷ命令用コード領域１０６からＳＷ命令Ａ、ＳＷ命令Ｂ、・・・と順次命令を読み込み、複合化が可能か否かを解析・判定する。
そして、複合化可能と判断した場合には、複合化手段によって得た複合ソフトウェア命令１４をＳＷ命令コード領域１０６’に上書きして格納するようにしている。（なお、図７では、領域１０６と領域１０６’とを説明の便宜上分けて表現しているが、実際には同じメモリ空間を指している。）
【００３７】
その結果、複合ＳＷ命令の命令語長（４バイト）は複合化前の命令語長（８バイト）よりも短くなるため、通常の逐次処理を行うと重複した命令処理が行われることとなり、適切ではない。
例えば、本実施形態の場合、複合ＳＷ命令Ａ＋Ｂの実行後には、ＳＷ命令Ｂが再度読み出され、誤った処理（ＳＷ命令Ｂ）を実行してしまうこととなる。
このため、本実施形態においては、次に実行する命令の先頭を正確に識別すべく、次ＩＣテーブルＴ０２を設けるようにしている。
この次ＩＣテーブルＴ０２には、複合化に用いられた元のソフトウェア命令１３の番地と次に実行すべきソフトウェア命令１３の番地とを対応づけて登録するようにしており、命令実行の際、命令カウンタＣ０１の値と次ＩＣテーブルＴ０２の登録データとを照合した上で、重複処理なく適切な順序で命令実行が行われるようにしている。
【００３８】
本実施形態の例においては、ＳＷ命令ＡとＳＷ命令Ｂとを複合ＳＷ命令Ａ＋Ｂに複合し、Ｘ番地に上書きして格納するようにしている。
また、ＳＷ命令ＤとＳＷ命令Ｅとを複合ＳＷ命令Ｄ＋Ｅに複合し、Ｘ＋１２番地に上書きして格納するようにしている。
このため、次ＩＣテーブルＴ０２には、１ワード目に、複合ＳＷ命令Ａ＋Ｂの格納番地「Ｘ番地」と命令カウンタＣ０１が次に指定すべきＳＷ命令の格納番地「Ｘ＋８番地」とを登録し、２ワード目に、複合ＳＷ命令Ｄ＋Ｅの格納番地「Ｘ＋１２番地」と命令カウンタＣ０１が次に指定すべきＳＷ命令の格納番地「Ｘ＋２０番地」を登録する。
【００３９】
そして、プロセッサ１０４は、命令カウンタＣ０１の指示番地に格納されているソフトウェア命令１３又は複合ソフトウェア命令１４を実行することとなるが、次ＩＣテーブルＴ０２を検索し、命令カウンタＣ０１の指定番地と同一の番地が「命令カウンタ」欄に登録されている場合には、対応して登録されてある「次ＩＣ」欄の番地データを取り出し、命令実行後にはその取り出した番地データによって命令カウンタＣ０１を更新するようにしている。
これによって一の命令サイクルは終了し、命令カウンタＣ０１における更新後の指定番地にもとづいて新たな命令サイクルが開始されることとなる。
このように、一般的には命令Ａ、命令Ｂ、命令Ｃ、命令Ｄ、命令Ｄ、命令Ｅと、一命令ずつ順番に処理が行われていたのに対し、本実施形態に係る複合化処理及び実行プロセス制御によって、命令Ａ＋Ｂ、命令Ｃ、命令Ｄ＋Ｅと、合理的でかつ適正な順序で処理が行われることとなり、結果、エミュレーション速度を向上させることが可能となる。
【００４０】
そこで、本実施形態に係る情報処理装置におけるプロセッサの処理手順について図８を参照しながら説明を行う。
図８は、本発明の第二実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
まず、コード解析プログラム１１０の指示のもとプロセッサ１１１は、命令カウンタＣ０１が指定する番地データが次ＩＣテーブルＴ０２に登録されているか否かを検索・判定する（Ｓ７０１）。
その結果、命令カウンタＣ０１の指定番地が次ＩＣテーブルＴ０２に登録されていないと判定された場合（Ｓ７０２：ＮＯ）、コード解析プログラム１１０の指示に基づきプロセッサ１０４は、命令カウンタＣ０１の指定番地に格納されているソフトウェア命令１３をＳＷ命令用コード領域１０６から取り出す（Ｓ７０３）。
そして、プロセッサ１０４は、Ｓ７０３で取り出したソフトウェア命令１３の実行処理を行い（Ｓ７０４）、その後、命令カウンタＣ０１を次の番地に更新して一命令サイクルを終了する（Ｓ７０５）。
【００４１】
一方、命令カウンタＣ０１が指定する番地が次ＩＣテーブルＴ０２に登録されていると判定された場合（Ｓ７０２：ＹＥＳ）、コード解析プログラム１１０の指示のもと、プロセッサ１０４は、次ＩＣテーブルＴ０２の登録データから「次のＩＣ」欄の番地データを取り出す（Ｓ７０６）。
次に、プロセッサ１０４は、命令カウンタＣ０１の指定番地に格納されている複合ソフトウェア命令１４をＳＷ命令用コード領域１０６’から取り出す（Ｓ７０７）。
そして、プロセッサ１０４は、Ｓ７０７で取り出した複合ソフトウェア命令１４の実行処理を行い（Ｓ７０８）、最後に、ステップＳ７０６で取り出した「次ＩＣ」欄の番地データを命令カウンタＣ０１の次ＩＣ値として設定して一の命令サイクルを終了する（Ｓ７０９）。
【００４２】
以上説明したように、本実施形態の情報処理装置１によれば、第一実施形態と異なり、複合ソフトウェア命令１４を格納する専用の領域（複合ＳＷ命令コード領域ＳＷ命令コード領域１０７）を設けず、複合ソフトウェア命令１４をもとのＳＷ命令コード領域１０６に上書きして格納するようにしている。
このため、メモリ１０５の記憶領域を抑えることができるだけでなく、第一実施形態のように複合ソフトウェア命令１４を索引する必要がないため、オーバーヘッドが抑えられて効率的な命令処理が可能となる。
すなわち、第一実施形態と異なる態様においても当該形態と同様の効果を奏することができ、さらに機能を高める他の効果も奏することが可能となっている。
【００４３】
［第三実施形態］
次に、本発明の第三実施形態に係る情報処理装置について図９及び図１０を参照しながら説明する。
図９は、本発明の第三実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
本実施形態では、第二実施形態と同様に複合化手段によって得られた複合ソフトウェア命令１４を、ＳＷ命令コード領域１０６に上書きして格納するが、実行制御のためのテーブル記憶領域を備えない点で前述の実施形態とは異なる。
【００４４】
まず、コード解析プログラム１１０は、ＳＷ命令用コード領域１０６からＳＷ命令Ａ、ＳＷ命令Ｂ、・・・と順次命令を読み込み、複合化が可能か否かを解析・判定する。
そして、複合化可能と判断した場合には、複合化手段によって得た複合ソフトウェア命令１４をＳＷ命令コード領域１０６’に上書きして格納するようにしている。（なお、図９では、領域１０６と領域１０６’を説明の便宜上分けて表現しているが、実際には同じメモリ空間を指している。）
【００４５】
その結果、複合ＳＷ命令の命令語長（４バイト）は複合化前の命令語長（８バイト）よりも短くなるため、通常の逐次処理を行うと重複した命令処理が行われることとなり、適切ではない。
例えば、本実施形態の場合、複合ＳＷ命令Ａ＋Ｂの実行後には、ＳＷ命令Ｂが再度読み出され、誤った処理（ＳＷ命令Ｂ）を実行してしまうこととなる。
このため、本実施形態においては、次に実行する命令の先頭を正確に識別すべく、ソフトウェア命令１３の実行を伴わないところの番地には所定の識別コードを格納するようにしている。
本実施形態の例においては、図９に示すとおり、「ＮＯＰ（No  Operation）」なる識別コードを対応する番地に格納するようにしている。
従って、通常の逐次処理のもとではＳＷ命令Ｂが重複して実行され不具合を生ずるが、このＳＷ命令Ｂを「ＮＯＰ」に置き換えることで複合ＳＷ命令Ａ＋Ｂの実行後にはＮＯＰ命令が実行され（実際には何も動作されない）、次のＳＷ命令Ｃが取り出され実行されることとなる。
【００４６】
次に、本実施形態に係る情報処理装置におけるプロセッサの処理手順について図１０を参照しながら説明を行う。
図１０は、本発明の第三実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
まず、プロセッサ１０４は、命令カウンタＣ０１が指定する番地にアクセスしてＮＯＰが格納されているか否かを判別する（Ｓ９０１）。
その結果、指定番地にＮＯＰが格納されていない場合（Ｓ９０２：ＮＯ）、プロセッサ１０４は、命令カウンタＣ０１が指定する番地に格納されているソフトウェア命令１３又は複合ソフトウェア命令１４を取り出す（Ｓ９０３）。
そして、プロセッサ１０４は、ステップＳ９０３において取り出した命令の実行処理を行い（Ｓ９０４）、その後、命令カウンタＣ０１を次の番地に更新して一命令サイクルを終了する（Ｓ９０５）。
【００４７】
一方、命令カウンタＣ０１が指定する番地にＮＯＰが格納されている場合（Ｓ９０２：ＹＥＳ）、プロセッサ１０４は、命令の実行処理を行わずに、命令カウンタＣ０１の指定番地を次の値に更新する（Ｓ９０５）。
【００４８】
以上説明したように、本実施形態の情報処理装置１によれば、第二実施形態と同様に複合ＳＷ命令コード領域１０７を有さないが、さらにプロセッサ１０４における実行制御に供するテーブル領域を設けないようにしている。
そして、命令実行を省略する番地には所定の識別コード（ＮＯＰ）を格納し、逐次処理における重複処理を直接的に防止するようにしている。
このため、メモリ１０５の記憶領域や命令索引に係るオーバーヘッドをさらに抑え、より効率的な命令処理が可能となる。
すなわち、本実施形態に係る情報処理装置１のように、第一又は第二の実施形態と異なる態様においてもこれらと同様の効果を奏することができ、さらに機能を高める他の効果も奏することが可能となっている。
【００４９】
［第四実施形態］
次に、本発明の第四実施形態に係る情報処理装置について図１１及び図１２を参照しながら説明する。
図１１は、本発明の第四実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
本実施形態では、第二実施形態又は第三実施形態と同様、複合化手段によって得られた複合ソフトウェア命令１４をＳＷ命令コード領域１０６に上書きして格納するようにしている。
ただし、実行制御のためのテーブル記憶領域を備えない点で第一実施形態と第二実施形態と異なり、命令の実行処理を伴わない番地には識別コードではなく、次に実行すべき命令の番地データ（次ＩＣ）を格納している点で第三実施形態と異なる。
【００５０】
まず、コード解析プログラム１１０は、ＳＷ命令用コード領域１０６からＳＷ命令Ａ、ＳＷ命令Ｂ、・・・と順次命令を読み込み、複合化が可能か否かを解析・判定する。
そして、複合化可能と判断した場合には、複合化手段によって得た複合ソフトウェア命令１４をＳＷ命令コード領域１０６’に上書きして格納するようにしている。（なお、図１１では、領域１０６と領域１０６’を説明の便宜上分けて表現しているが、実際には同じメモリ空間を指している。）
【００５１】
その結果、複合ソフトウェア命令１４の命令語長（４バイト）は複合化前の命令語長（１２バイト）よりも短くなるため、通常の逐次処理を行うと、重複した命令処理が行われることとなり、適切ではない。
例えば、本実施形態の場合、複合ＳＷ命令Ａ＋Ｂ＋Ｃの実行後には、ＳＷ命令ＢやＳＷ命令Ｃが再度読み出され、誤った処理（ＳＷ命令Ｂ及びＳＷ命令Ｃ）を実行してしまうこととなる。
このため、本実施形態においては、次に実行する命令の先頭を正確に識別すべく、ソフトウェア命令１３の実行を伴わないところの番地には次に実行すべき命令の番地データ（次ＩＣ）を格納するようにしている。
従って、通常の逐次処理のもとではＳＷ命令ＢやＳＷ命令Ｃが重複して実行され不具合を生ずるが、このＳＷ命令Ｂを次ＩＣ値に置き換えることで複合ＳＷ命令Ａ＋Ｂ＋Ｃの実行後には、命令カウンタＣ０１の値が次ＩＣ値（Ｘ＋１２番地）に設定され、Ｘ＋１２番地に格納されている複合ＳＷ命令Ｄ＋Ｅが取り出され実行されることとなる。
【００５２】
次に、本実施形態に係る情報処理装置におけるプロセッサの処理手順について図１２を参照しながら説明を行う。
図１２は、本発明の第四実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
まず、プロセッサ１０４は、命令カウンタＣ０１が指定する番地にアクセスして番地データ（ＩＣ値）が格納されているか否かを判別する（Ｓ１１０１）。
その結果、指定番地にＩＣ値が格納されていないと判定された場合（Ｓ１１０２：ＮＯ）、プロセッサ１０４は、命令カウンタＣ０１が指定する番地に格納されているソフトウェア命令１３又は複合ソフトウェア命令１４を取り出す（Ｓ１１０３）。
そして、プロセッサ１０４は、ステップＳ１１０３で取り出した命令の実行処理を行い（Ｓ１１０４）、その後、命令カウンタＣ０１を次の番地に更新して一命令サイクルを終了する（Ｓ１１０５）。
【００５３】
一方、命令カウンタＣ０１が指定する番地にＩＣ値が格納されていると判定された場合（Ｓ１１０２：ＹＥＳ）、プロセッサ１０４は、命令の実行処理を行わずに、命令カウンタＣ０１の指定番地としてそのＩＣ値を設定する（Ｓ１１０６）。
【００５４】
以上説明したように、本実施形態の情報処理装置１によれば、第二実施形態乃至第四実施形態と同様に複合ＳＷ命令コード領域１０７を有せず、また、第三実施形態と同様にテーブル記憶領域を設けないようにしている。
ただし、命令の重複処理を防ぐため、命令実行を省略する番地には次ＩＣ値を格納し、命令カウンタＣ０１を直接制御する点で第三実施形態と異なる。
このため、メモリ１０５の記憶領域や命令索引に係るオーバーヘッドをさらに抑え、より効率的な命令処理が可能となる。
このように本実施形態に係る情報処理装置によれば、前述の実施形態と異なる態様においてもこれらと同様の効果を奏することができ、さらに機能を高める他の効果も奏することが可能である。
【００５５】
［第五実施形態］
次に、本発明の第五実施形態に係る情報処理装置について図１３及び図１４を参照しながら説明する。
図１３は、本発明の第五実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
本実施形態では、前述の第一実施形態や第二実施形態と同様に所定のテーブル記憶領域を備えるが、複合化手段によって得た複合ソフトウェア命令１４をそのテーブル記憶領域に格納する点で異なる。
【００５６】
まず、コード解析プログラム１１０は、ＳＷ命令用コード領域１０６からＳＷ命令Ａ、ＳＷ命令Ｂ、・・・と順次命令を読み込み、複合化が可能か否かを解析・判定する。
そして、複合化可能と判断した場合には、複合化手段によって得た複合ソフトウェア命令１４を変換テーブルＴ０３に格納する。
また、変換テーブルＴ０３には、格納する複合ソフトウェア命令１４に対応づけてその複合化に用いた元のソフトウェア命令１３の番地と次の命令カウンタＣ０１の番地とを登録するようにしており、命令実行の際、命令カウンタＣ０１の値と変換テーブルＴ０３の登録データとを照合した上で、重複処理なく適切な順序で命令実行が行われるようにしている。
【００５７】
具体的には、本実施形態においては、ＳＷ命令ＡとＳＷ命令Ｂとを複合ＳＷ命令Ａ＋Ｂに複合し、ＳＷ命令ＤとＳＷ命令Ｅとを複合ＳＷ命令Ｄ＋Ｅに複合するようにしている。
このため、変換テーブルＴ０３には、１ワード目に、複合ＳＷ命令Ａ＋Ｂを格納するとともに、元のソフトウェア命令１３の先頭番地「Ｘ番地」と命令カウンタＣ０１が次に指定すべきＳＷ命令の格納番地「Ｘ＋８番地」とを登録し、２ワード目に、複合ＳＷ命令Ｄ＋Ｅを格納するとともに、元のソフトウェア命令１３の先頭番地「Ｘ＋１２番地」と命令カウンタＣ０１が次に指定すべきＳＷ命令の格納番地「Ｘ＋２０番地」を登録する。
【００５８】
そして、プロセッサ１０４は、命令カウンタＣ０１の指示番地に格納されているソフトウェア命令１３又は複合ソフトウェア命令１４を実行することとなるが、その際、変換テーブルＴ０３を検索し、命令カウンタＣ０１の指定番地と同一の番地が「命令カウンタ」欄に登録されている場合には、対応して登録されてある「次ＩＣ」欄の番地データを取り出すようにしている。
また、係る命令の実行後は、変換テーブルＴ０３から取り出した「次のＩＣ」欄の番地データによって命令カウンタＣ０１を更新することによって一の命令サイクルは終了し、命令カウンタＣ０１における更新後の指定番地にもとづき新たな命令サイクルが開始されることとなる。
【００５９】
次に、以上のような構成からなる第五実施形態の情報処理装置１におけるプロセッサの処理手順について図１４を参照しながら説明する。
図１４は、本発明の第五実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
まず、コード解析プログラム１１０の指示のもとプロセッサ１１１は、命令カウンタＣ０１が指定する番地のデータが変換テーブルＴ０３に登録されているか否かを検索・判定する（Ｓ１３０１）。
その結果、命令カウンタＣ０１の指定番地が変換テーブルＴ０３に登録されていないと判断された場合（Ｓ１３０２：ＮＯ）、コード解析プログラム１１０の指示に基づきプロセッサ１０４は、命令カウンタＣ０１が指定する番地に格納されているソフトウェア命令１３を取り出す（Ｓ１３０３）。
そして、プロセッサ１０４は、Ｓ１３０３で取り出したソフトウェア命令１３の実行処理を行い（Ｓ１３０４）、最後に命令カウンタＣ０１を次の番地に更新して一命令サイクルを終了する（Ｓ１３０５）。
【００６０】
一方、命令カウンタＣ０１が指定する番地が変換テーブルＴ０３に登録されていると判断された場合（Ｓ１３０２：ＹＥＳ）、コード解析プログラム１１０の指示のもと、プロセッサ１０４は、変換テーブルＴ０３の登録データから「複合命令」欄に格納されている複合ソフトウェア命令１４と「次のＩＣ」欄の番地データを取り出す（Ｓ１３０６）。
次に、プロセッサ１０４は、ステップＳ１３０６で取り出した複合ソフトウェア命令１４の実行処理を行う（Ｓ１３０７）。
そして、命令カウンタＣ０１の指定番地を、ステップＳ１３０６で取り出した「次のＩＣ」欄の番地データに設定することによって一の命令サイクルが終了する（Ｓ１３０８）。
【００６１】
以上説明したように、本実施形態の情報処理装置１によれば、変換テーブルＴ０３を有しており、このテーブル領域に複合化されたソフトウェア命令１３を格納する点で前述の実施形態とは異なる。
すなわち、この変換テーブルＴ０３は、命令処理の順序制御に資するアドレス情報のみならず、これらの情報に対応づけて複合ソフトウェア命令１４を格納するようにしている。
このため、複合ソフトウェア命令１４の実行に関し、命令を再度索引する必要が無く、直接実行することができるため、オーバーヘッドを抑えることが可能となっている。
このように本実施形態に係る情報処理装置によれば、上述の他の実施形態と異なる態様によってもこれらと同様の効果を奏することができ、さらに機能を高める他の効果を奏することも可能となっている。
【００６２】
以上、本発明の情報処理装置について、好ましい実施形態を示して説明したが、本発明にかかる情報処理装置は、上述した実施形態にのみ限定されるものではなく、本発明の範囲で種々の変更実施が可能であることは言うまでもない。
例えば、本発明の情報処理装置は、エミュレーション処理に限定するものではなく、広く一般的なコンピュータシステムに適用することも可能である。
また、本実施形態のコード領域はメモリ内に配置されるのではなく、外部の記憶媒体内に配置され、必要に応じ電気通信回線等を介して送受信が行われる形態であってもよい。
これにより、さらに様々な形態によっても本発明を実現することができ、拡張性に優れたコンピュータシステムを提供することが可能となる。
【産業上の利用可能性】
【００６３】
本発明は、エミュレータを備えたコンピュータシステムに好適に利用することができる。
【図面の簡単な説明】
【００６４】
【図１】本発明のあらゆる実施形態に対応する情報処理装置の基本構成を示した機能ブロック図である。
【図２】本発明の第一実施形態に係る情報処理装置の基本構成を示した第一のブロック図である。
【図３】本発明の第一実施形態に係る情報処理装置の基本構成を示した第二のブロック図である。
【図４】本発明の第一実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
【図５】本発明の第一実施形態に係る情報処理装置において行われる複合化処理を説明するためのイメージ図である。
【図６】本発明の第一実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
【図７】本発明の第二実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
【図８】本発明の第二実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
【図９】本発明の第三実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
【図１０】本発明の第三実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
【図１１】本発明の第四実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
【図１２】本発明の第四実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
【図１３】本発明の第五実施形態に係る情報処理装置上で稼働するコード解析プログラムの制御の様子を模式的に表した模式図である。
【図１４】本発明の第五実施形態に係る情報処理装置におけるプロセッサの処理手順を示したフローチャートである。
【図１５】通常のコンピュータシステムにおけるソフトウェアエミュレーションの実行プロセスを模式的に表した模式図である。
【符号の説明】
【００６５】
１  情報処理装置
１０  ＳＷ抽出手段
１１  複合化手段
１２  実行制御手段
１３  ソフトウェア命令
１４  複合ソフトウェア命令
１０１  アプリケーションプログラム
１０２  オペレーティングシステム（ＯＳ）
１０３  エミュレータ
１０４，１１１，１１２  プロセッサ
１０５  メモリ
１０６  ＯＳ用のＳＷ命令コード領域
１０７  複合ＳＷ命令用のコード領域
１０８  エミュレータ用のメモリ領域
１０９  ＩＯ装置
１１０  コード解析プログラム
Ｃ０１  命令カウンタ
Ｃ０２  複合命令カウンタ
Ｔ０１，Ｔ０３  変換テーブル
Ｔ０２  次ＩＣテーブル
【図１】
0005045934.tif 000002
【図２】
0005045934.tif 000003
【図３】
0005045934.tif 000004
【図４】
0005045934.tif 000005
【図５】
0005045934.tif 000006
【図６】
0005045934.tif 000007
【図７】
0005045934.tif 000008
【図８】
0005045934.tif 000009
【図９】
0005045934.tif 000010
【図１０】
0005045934.tif 000011
【図１１】
0005045934.tif 000012
【図１２】
0005045934.tif 000013
【図１３】
0005045934.tif 000014
【図１４】
0005045934.tif 000015
【図１５】
0005045934.tif 000016