JP2007310546A - エミュレーション方法及びコンピュータシステム - Google Patents

エミュレーション方法及びコンピュータシステム Download PDF

Info

Publication number
JP2007310546A
JP2007310546A JP2006137587A JP2006137587A JP2007310546A JP 2007310546 A JP2007310546 A JP 2007310546A JP 2006137587 A JP2006137587 A JP 2006137587A JP 2006137587 A JP2006137587 A JP 2006137587A JP 2007310546 A JP2007310546 A JP 2007310546A
Authority
JP
Japan
Prior art keywords
target instructions
target
instruction
combination
coding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2006137587A
Other languages
English (en)
Other versions
JP4778359B2 (ja
Inventor
Tsutomu Fujiwara
勉 藤原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Computertechno Ltd
Original Assignee
NEC Computertechno Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Computertechno Ltd filed Critical NEC Computertechno Ltd
Priority to JP2006137587A priority Critical patent/JP4778359B2/ja
Priority to US11/798,223 priority patent/US8392893B2/en
Publication of JP2007310546A publication Critical patent/JP2007310546A/ja
Application granted granted Critical
Publication of JP4778359B2 publication Critical patent/JP4778359B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

【課題】ターゲットシステムのエミュレーション速度をより向上させることが可能なエミュレーション方法及びコンピュータシステムを提供する。
【解決手段】複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成した該複数のターゲット命令を一括して処理するためのコーディングに分岐し、該コーディングにしたがって処理を実行する。複数のターゲット命令が一括して処理できない組み合わせの場合、1つのターゲット命令をエミュレーションするコーディングに分岐し、該コーディングにしたがって処理を実行する。
【選択図】図1

Description

ベースシステム上で他のシステム(OSやCPU等)の機能を実現するエミュレーションには、ハードウェアを用いる方法とソフトウェアを用いる方法とが知られている。本発明は後者のソフトウェアによりエミュレーションを実現するためのエミュレーション方法及びコンピュータシステムに関する。
従来のコンピュータシステムでは、ベースシステム上で他のシステムのOS等(以下、ターゲットシステムと称す)の機能を実現する場合、ターゲットシステムの個々の命令(以下、ターゲット命令と称す)を処理の単位としてエミュレーションを実施している。
図24は従来のエミュレーション方法の処理手順を示すフローチャートである。
図24に示すように、エミュレーション時、コンピュータシステムは、最初に1つのターゲット命令をフェッチし(ステップ2−1)、フェッチしたターゲット命令をデコードして解読する(ステップ2−2)。次に、デコード結果に基づきターゲット命令の処理を実行し(ステップ2−3)、処理が終了すると、命令に応じた所定の終了処理を実行する(ステップ2−4)。このとき、コンピュータシステムは、ターゲット命令をベースシステムの命令に置き換えながら処理を行う。
しかしながら、このようなエミュレーション方法ではターゲット命令にしたがって処理するホストシステムのハードウェア性能が向上しないと、ターゲットシステムのエミュレーション速度は向上しない。
そのため、ターゲットシステムのエミュレーション速度を向上させる様々な手法が検討され、例えば特許文献1には、コンピュータシステムが備えるプロセッサ数に応じてターゲット命令のエミュレーション処理を分割し、分割した処理を各プロセッサにより並列に実行することでエミュレーション処理を高速化することが開示されている。また、特許文献2にはエミュレーション中に次に処理するターゲット命令を先行してフェッチすることでターゲットプログラムのエミュレーションを高速化することが開示されている。
さらに、特許文献3には、命令フェッチとデコードの処理結果を保存するためのデコードキャッシュを備え、ターゲット命令の最初の実行時にデコードキャッシュにそのデコード結果を保存し、同じ命令の次回の実行時に保存したデコードキャッシュの内容を再利用することでエミュレーション速度を向上させることが開示されている。特許文献3では、デコードキャッシュにデコード済のターゲット命令に対応する実行処理アドレス(実行処理ルーチンの先頭アドレス)を登録することで、登録済のターゲット命令のデコード処理を、テーブルを参照するだけの単純な処理に置き換えている。
特開2004−127154号公報 特開2001−306334号公報 特開2005−063165号公報
上述した従来のコンピュータシステムのうち、特許文献1に記載の構成では、プロセッサ数の判定、エミュレーション処理の分割、分割した処理のプロセッサへの割付、各プロセッサの処理結果をまとめる等の処理を行う命令エミュレーション処理分割部が必要となるため、装置規模が増大する問題がある。
また、特許文献2に記載の構成ではターゲット命令のフェッチ処理のみが高速化され、特許文献3に記載の構成ではターゲット命令のデコード処理のみが高速化されるが、それ以外の処理は高速化対象では無いため、エミュレーション速度が充分に向上するとは言えない。
本発明は上記したような従来の技術が有する問題点を解決するためになされたものであり、ターゲットシステムのエミュレーション速度をより向上させることが可能なエミュレーション方法及びコンピュータシステムを提供することを目的とする。
上記目的を達成するため本発明のエミュレーション方法は、ターゲット命令をエミュレーションするためのエミュレーション方法であって、
複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成した該複数のターゲット命令を一括して処理するためのコーディングに分岐し、該コーディングにしたがって処理を実行する方法である。
一方、本発明のコンピュータシステムは、ターゲット命令をエミュレーションするコンピュータシステムであって、
複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成された該複数のターゲット命令を一括して処理するためのコーディングに分岐し、該コーディングにしたがって処理を実行する処理装置と、
前記複数のターゲット命令を一括して処理するためのコーディングが格納されるメモリと、
を有する構成である。
上記のようなエミュレーション方法及びコンピュータシステムでは、複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成された該複数のターゲット命令を一括して処理するためのコーディングに分岐し、該コーディングにしたがって処理を実行するため、所定の複数のターゲット命令を一括して処理することができる。
本発明によれば、複数のターゲット命令を一括して処理できるため、ベースシステムにエミュレーションのための専用のハードウェアを追加することなく、エミュレーション速度を向上させることができる。
また、従来のターゲット命令の実行処理やターゲット命令の終了処理等のコーディングを修正することなく、複数のターゲット命令を一括して処理するためのコーディングを追加するだけで、複数のターゲット命令を一括して処理できるため、既に作成してある資源(コーディング)を無駄にすることがない。
次に本発明について図面を参照して説明する。
本発明のコンピュータシステムでは、エミュレータ(エミュレーションプログラム)に複数のターゲット命令を一括して処理するための機能を備えることで、ターゲットシステムのエミュレーション速度を向上させる。具体的には、エミュレーションを実施する際に、複数のターゲット命令が一括して処理できる組み合わせの場合は、予め作成したそれらのターゲット命令を一括して処理するためのコーディングに分岐して処理を実行することで複数命令を一括して処理する。
(第1の実施の形態)
図1は本発明のコンピュータシステムの一構成例を示すブロック図である。
図1に示すように、本発明のコンピュータシステムは、プロセッサ(CPU)を含む処理装置1−5と、処理装置1−5の処理で必要なプログラムや情報が格納されるメモリ1−6と、処理装置1−5に対してコマンドや情報等を入力するための入力装置あるいは処理装置1−5の処理結果をモニタするための出力装置であるIO(Input Output)装置1−10とを有する構成である。
メモリ1−6には、ターゲットシステムのOSが格納されるターゲットメモリ領域1−7、エミュレーションプログラム(エミュレータ1−4)が格納されるエミュレータメモリ領域1−8及びベースシステムのOSが格納されるベースメモリ領域1−9を備えている。
また、メモリ1−6には、本発明のエミュレーション方法で用いる、後述する命令組み合わせテーブル、プロセス分岐テーブルあるいは命令組み合わせ履歴テーブルが格納される。メモリ1−6は、半導体メモリ、磁気ディスク、光ディスクあるいはその他の記録媒体であってもよい。
処理装置1−5は、エミュレータメモリ領域1−8に格納されたエミュレーションプログラムを読み出し、該エミュレーションプログラムにしたがって本発明のエミュレーション方法の処理を実行し、ターゲットシステムのOS1−2の命令をベースシステムのOS1−3の命令に置き換えながら、ターゲットシステムのOS1−2上で動作するアプリケーションプログラム1−1の処理を実行する。
本実施形態では、各ターゲット命令を個々にエミュレーションするコーディングと、複数のターゲット命令を一括してエミュレーションするコーディングとを予め作成し、エミュレータメモリ領域1−8に予め格納しておく。そして、エミュレーションの実行時、処理装置1−5は、複数のターゲット命令をそれぞれフェッチし、予め作成した命令組み合わせテーブルを参照して、フェッチした複数のターゲット命令が一括して処理できるか否かを判定する。複数のターゲット命令が一括して処理できる組み合わせの場合、それらのターゲット命令を一括してエミュレーションするコーディングに分岐して処理を実行する。一方、複数のターゲット命令が一括して処理できない組み合わせの場合、フェッチした複数のターゲット命令のうち、先行するターゲット命令をエミュレーションするコーディングに分岐して処理を実行する。
命令組み合わせテーブルは、例えば図2に示すように先行する第1のターゲット命令を行とし、後続する第2のターゲット命令を列とする、3つの命令A〜Cの組み合わせ毎に一括して処理が可能であるか否かを「OK」または「NG」で示したものである。図2に示す例では、第1のターゲット命令が命令B、第2のターゲット命令が命令Aの組み合わせのときに一括して処理することが可能であり、その他の組み合わせは一括して処理できないことを示している。
なお、命令A〜Cは、ターゲットプログラムで使用可能な命令であり、図2に示すように命令A〜Cの3種類に限らず、ターゲットプログラムに応じて、より少ない種類、あるいはより多くの種類の命令を備えていてもよい。
また、図2に示した命令組み合わせテーブルでは、先行する第1のターゲット命令を行とし、後続する第2のターゲット命令を列とする例を示したが、先行する第1のターゲット命令を列とし、後続する第2のターゲット命令を行としてもよい。
コンピュータシステムが備える命令組み合わせテーブルの数は1つに限る必要はなく、複数の命令組み合わせテーブルを備えていてもよい。
図2では、2つのターゲット命令の組み合わせが一括して処理できるか否かを示す命令組み合わせテーブルの一例を示したが、3つ以上のターゲット命令を一括して処理する場合は、その命令数に合わせて、各ターゲット命令の組み合わせが一括して処理できるか否かを示す命令組み合わせテーブルを予め作成すればよい。その場合、それら3つ以上のターゲット命令を一括してエミュレーションするコーディングを予め作成しておく。
次に第1の実施の形態のエミュレーション方法について図3を用いて説明する。
図3は本発明のコンピュータシステムの第1の実施の形態の処理手順を示すフローチャートである。なお、図3は2つのターゲット命令を一括して処理する場合の処理手順を示している。
図3に示すように、処理装置1−5は、最初に先行する第1のターゲット命令をフェッチし(ステップ3−1)、第1のターゲット命令をデコードする(ステップ3−2)。続いて、処理装置1−5は、後続する第2のターゲット命令をフェッチし(ステップ3−3)、第2のターゲット命令をデコードする(ステップ3−4)。
次に、処理装置1−5は、第1のターゲット命令及び第2のターゲット命令のデコード結果に基づき、図2に示した命令組み合わせテーブルを索引して(ステップ3−5)、第1のターゲット命令と第2のターゲット命令とが一括して処理できるか否かを判定する(ステップ3−6)。
第1のターゲット命令と第2のターゲット命令が一括して処理できる場合、処理装置1−5は、第1のターゲット命令と第2のターゲット命令を一括してエミュレーションするコーディングへ分岐し(ステップ3−10)、第1のターゲット命令と第2のターゲット命令の処理を一括して実行し(ステップ3−11)、処理が終了すると、第1のターゲット命令と第2のターゲット命令に対応する所定の終了処理を実行する(ステップ3−12)。
一方、ステップ3−6にて第1のターゲット命令と第2のターゲット命令が一括して処理できないと判定した場合、処理装置1−5は、先行する第1のターゲット命令をエミュレーションするコーディングへ分岐し(ステップ3−7)、第1のターゲット命令の処理を実行し(ステップ3−8)、処理が終了すると、第1のターゲット命令に対応する所定の終了処理を実行する(ステップ3−9)。
なお、図3では、ステップ3−1にて1つのターゲット命令(第1のターゲット命令)のみをフェッチする例を示したが、ステップ3−1にて2つ以上のターゲット命令を一括してフェッチしてもよく、2つ以上のターゲット命令を段階的にフェッチしてもよい。
また、図3では、ステップ3−2にて1つのターゲット命令(第1のターゲット命令)のみをデコードする例を示したが、ステップ3−1にて2つ以上のターゲット命令を一括してフェッチしている場合は、ステップ3−2にてそれらのターゲット命令を一括してデコードしてもよく、それらのターゲット命令を段階的にデコードしてもよい。
また、図3では、ステップ3−11にて2つのターゲット命令を一括して処理する例を示したが、2つ以上のターゲット命令をフェッチ及びデコードしている場合は、ステップ3−11にてそれらのターゲット命令を一括して処理してもよい。図3のステップ3−11の処理は、図3のステップ3−9に示す単一のターゲット命令の終了処理と並行して実施してもよい。
次に、一括して処理できるターゲット命令の組み合わせについて具体的に説明する。
以下は、一括して処理できるターゲット命令の組み合わせとして、ベースシステムの命令にインテル社のIA64命令を使用し、ターゲット命令addt, subtを実行する例である。
図4はaddt命令及びsubt命令のコードの一例を示す模式図である。
図4に示すように、addt命令は、GR1で指定されるGRレジスタ(汎用レジスタ)の情報(4Byte)とGR2で指定されるGRレジスタの情報(4Byte)とを加算し、加算結果をGR2で指定されるGRレジスタに格納する命令である。
また、subt命令は、GR3で指定されるGRレジスタの情報(4Byte)からGR4で指定されるGRレジスタの情報(4Byte)を減算し、減算結果をGR4で指定されるGRレジスタに格納する命令である。
addt命令、subt命令を単体で処理する際のコーディングの具体例を図5〜図8に示す。図5はaddt命令及びsubt命令のフェッチ及びデコード処理の具体例を示し、図6はaddt命令の実行処理の具体例を示している。また、図7はsubt命令の実行処理の具体例を示し、図8はaddt命令及びsubt命令の終了処理の具体例を示している。
一方、addt命令とsubt命令を一括して処理する場合のコーディングの具体例を図9〜図11に示す。図9はaddt命令とsubt命令を一括して処理する場合のフェッチ及びデコード処理の具体例を示し、図10はaddt命令とsubt命令を一括して処理する場合の実行処理の具体例を示している。また、図11はaddt命令とsubt命令を一括して処理する場合の終了処理の具体例を示している。但し、図9〜図11に示したコーディングには、命令組み合わせテーブルを参照し、フェッチした2つのターゲット命令が一括して処理できるか否かを判定する処理を記述していない。本発明を実施する場合、このような判定処理も必要となる。このように一括して処理できるターゲット命令の組み合わせは各種存在する。
なお、一括して実行できないターゲット命令の組み合わせは基本的に存在しないが、組み合わせる前の各ターゲット命令の個々の処理で必要な実行時間(クロック数)と、各ターゲット命令を一括して処理する場合に必要な実行時間(クロック数)とが等しい場合、それらのターゲット命令を一括して処理するメリットは無い。したがって、そのようなターゲット命令の組み合わせは一括して処理する必要はない。
また、3つ以上のターゲット命令を一括して処理する場合は、例えば図12に示すように3つのターゲット命令を全てフェッチしてデコードし、それらのターゲット命令が一括して処理できる組み合わせか否かを判定し、一括して処理できる組み合わせの場合は、それらのターゲット命令を一括してエミュレーションするコーディングへ分岐すればよい。このとき、図13に示すように、次のターゲット命令をフェッチしてデコードした段階、あるいはさらに次の命令(次々命令)をフェッチしてデコードした段階で、フェッチしたターゲット命令が一括して処理できる組み合わせか否かを判定し、一括して処理できる組み合わせではない場合は、先行するターゲット命令をエミュレーションするコーディングへ分岐してもよい。図12及び図13は一括して処理できるターゲット命令の数が3つの場合のコーディング例を示している。
本実施形態のコンピュータシステムによれば、複数のターゲット命令を一括して処理できるため、ベースシステムにエミュレーションのための専用のハードウェアを追加することなく、エミュレーション速度を向上させることができる。
また、従来のターゲット命令の実行処理やターゲット命令の終了処理等のコーディングを修正することなく、複数のターゲット命令を一括して処理するためのコーディングを追加するだけで、複数のターゲット命令を一括して処理できるため、既に作成してある資源(コーディング)を無駄にすることがない。
(第2の実施の形態)
次に本発明のコンピュータシステムの第2の実施の形態について図面を用いて説明する。
第2の実施の形態は、第1の実施の形態で示した命令組み合わせテーブルに代えてプロセス分岐テーブルを用いることで、エミュレーション速度を向上させる例である。コンピュータシステムの構成は第1の実施の形態と同様であるため、その説明は省略する。
図14に示すように、プロセス分岐テーブルは、所定のプロセスを示すプロセス名と、該プロセス名に対応する命令カウンタと、該プロセスで実行する複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報(コーディング分岐先)とが関連付けて予め設定されたものである。
プロセス名と、そのプロセス名に対応する命令カウンタ及びターゲット命令の具体例を図15に示す。図15はJ0〜JZとP0〜PZの組み合わせにより各プロセス名を表している。
特定のプロセス名に対応する命令カウンタとターゲット命令の組み合わせが固定の場合、処理装置はプロセス分岐テーブルを索引するだけで複数のターゲット命令を一括して処理することが可能であり、命令フェッチ及びそのデコード処理を削除することが可能になる。
このようなプロセス分岐テーブルを用いる処理は、複数のターゲット命令の組み合わせから成る所定のプロセスが一括して処理できることが予め判明している場合に有効である。
なお、図14及び図15では、プロセス分岐テーブルに、プロセス名に対応して命令カウンタ及びコーディング分岐先を有する例を示したが、複数のターゲット命令を特定できれば、プロセス分岐テーブルをどのような情報を用いて構成してもよい。
また、図14及び図15に示したプロセス分岐テーブルでは、プロセス名に対応して1つの命令カウンタ及びコーディング分岐先を有する例を示したが、プロセス名に対応して複数の命令カウンタ及びコーディング分岐先を備える構成であってもよい。
図16は本発明のコンピュータシステムの第2の実施の形態の処理手順の一例を示すフローチャートである。なお、図16は一括して処理できる2つのターゲット命令からプロセスが構成されている場合の処理手順を示している。
図16に示すように、処理装置は、最初に命令カウンタの値及びプロセス名を読み出し(ステップ6−1)、命令カウンタの値及びプロセス名から図14に示したプロセス分岐テーブルを索引する(ステップ6−2)。続いて、処理装置は、命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されている否かを判定する(ステップ6−3)。命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されている場合、処理装置は対応するコーディング分岐先の情報を取得し(ステップ6−8)、第1のターゲット命令と第2のターゲット命令を一括してエミュレーションするコーディングへ分岐する(ステップ6−9)。そして、第1のターゲット命令と第2のターゲット命令の処理を一括して実行し(ステップ6−10)、処理が終了すると、第1のターゲット命令及び第2のターゲット命令に対応する所定の終了処理を実行する(ステップ6−11)。
一方、ステップ6−2にて命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されていない場合、処理装置は、先行する第1のターゲット命令をフェッチし(ステップ6−4)、第1のターゲット命令をデコードする(ステップ6−5)。そして、デコード結果に基づき第1のターゲット命令の処理を実行し(ステップ6−6)、処理が終了すると、命令に応じた所定の終了処理を実行する(ステップ6−7)。
ところで、図16に示した処理手順では、命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されていない場合、すなわち複数のターゲット命令が一括して処理できない場合は、図24に示した従来の処理に比べて、命令カウンタの値及びプロセス名をチェックし、プロセス分岐テーブルを索引して複数のターゲット命令が一括して処理できるか否かを判定する処理が増えることになるため、エミュレーション速度が遅くなるおそれがある。図17にこの点を改善した処理手順を示す。
図17は本発明のコンピュータシステムの第2の実施の形態の処理手順の他の例を示すフローチャートである。なお、図17は、図16と同様に一括して処理できる2つのターゲット命令からプロセスが構成される場合の処理手順を示している。
図17に示すように、処理装置は、最初に先行する第1のターゲット命令をフェッチすると共に、命令カウンタの値及びプロセス名を読み出す(ステップ7−1)。続いて、処理装置は、第1のターゲット命令をデコードすると共に、命令カウンタの値及びプロセス名から図14に示したプロセス分岐テーブルを索引する(ステップ7−2)。
次に、処理装置は、命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されている否かを判定し(ステップ7−3)、命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されている場合は、それに対応するコーディングの分岐先の情報を取得し(ステップ7−6)、第1のターゲット命令と第2のターゲット命令を一括してエミュレーションするコーディングへ分岐する(ステップ7−7)。そして、第1のターゲット命令と第2のターゲット命令の処理を一括して実行し(ステップ7−8)、処理が終了すると、第1のターゲット命令及び第2のターゲット命令に対応する所定の終了処理を実行する(ステップ7−9)。
一方、ステップ7−3にて命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されていない場合、処理装置は、ステップ7−2の第1のターゲット命令のデコード結果に基づき第1のターゲット命令の処理を実行し(ステップ7−4)、処理が終了すると、命令に応じた所定の終了処理を実行する(ステップ7−5)。
図17に示した処理手順では、ステップ7−3にて命令カウンタの値及びプロセス名がプロセス分岐テーブルに登録されていないと判定しても、第1のターゲット命令のフェッチ及びデコードが既に終了しているため、図16に示した処理手順よりも、複数のターゲット命令が一括して処理できない場合のエミュレーション速度の劣化を抑制できる。
なお、図16のステップ6−4及び図17のステップ7−1では、1つのターゲット命令(第1のターゲット命令)のみフェッチする例を示しているが、これらのステップにて2つ以上のターゲット命令を一括してフェッチしてもよく、2つ以上のターゲット命令を段階的にフェッチしてもよい。
また、図16のステップ6−5及び図17のステップ7−2では、1つのターゲット命令(第1のターゲット命令)のみデコードする例を示しているが、2つ以上のターゲット命令をフェッチしている場合は、それらのターゲット命令を一括してデコードしてもよく、それらのターゲット命令を段階的にデコードしてもよい。
また、図16のステップ6−9及び図17のステップ7−8では、2つのターゲット命令を一括して処理する例を示したが、2つ以上のターゲット命令をフェッチ及びデコードしている場合は、それらのターゲット命令を一括して処理してもよい。
図16のステップ6−9の処理は、図16のステップ6−7に示す単一のターゲット命令の終了処理と並行して実施してもよく、図17のステップ7−8の処理は、図17のステップ7−5に示す単一のターゲット命令の終了処理と並行して実施してもよい。
本実施形態のコンピュータシステムにおいても、第1の実施の形態と同様に、複数のターゲット命令を一括して処理できるため、ベースシステムにエミュレーションのための専用のハードウェアを追加することなく、エミュレーション速度を向上させることができる。
また、従来のターゲット命令の実行処理やターゲット命令の終了処理等のコーディングを修正することなく、複数のターゲット命令を一括して処理するためのコーディングを追加するだけで、複数のターゲット命令を一括して処理できるため、既に作成してある資源(コーディング)を無駄にすることがない。
特に本実施形態では、特定のプロセス名に対応する命令カウンタとターゲット命令の組み合わせが固定の場合、プロセス分岐テーブルを索引するだけで複数のターゲット命令を一括して処理することが可能であるため、命令フェッチ及びそのデコード処理を削減できる。
(第3の実施の形態)
次に本発明のコンピュータシステムの第3の実施の形態について図面を用いて説明する。
第3の実施の形態は命令組み合わせ履歴テーブルを用いることでエミュレーション速度を向上させる例である。コンピュータシステムの構成は第1の実施の形態と同様であるため、その説明は省略する。
図18は第3の実施の形態で用いる命令組み合わせ履歴テーブルの一例を示すテーブル図であり、図19は第3の実施の形態で用いる命令組み合わせ履歴テーブルの他の例を示すテーブル図である。
図18に示す命令組み合わせ履歴テーブルは、一括して処理した実績のある複数のターゲット命令の組み合わせのうち、最も新しく処理した命令の組み合わせと、それらの命令を一括してエミュレーションするコーディングへの分岐先を示す情報(コーディング分岐先)とが格納される例である。図18では、先行する第1のターゲット命令が命令A、後続する第2のターゲット命令が命令Bの組み合わせと、その命令A及び命令Bを一括してエミュレーションするコーディング分岐先が格納されている。
一方、図19に示す命令組み合わせ履歴テーブルは、一括して処理した実績のある複数のターゲット命令の組み合わせのうち、最も新しく処理した命令の組み合わせと、それらの命令を一括してエミュレーションするコーディング分岐先とが、先行する第1のターゲット命令の種類毎に格納される例である。
図19では、先行する第1のターゲット命令が命令A、後続する第2のターゲット命令が命令Bの組み合わせと、その命令A及び命令Bを一括してエミュレーションするコーディング分岐先とが、命令Aに対応して格納されている。同様に、先行する第1のターゲット命令が命令B、後続する第2のターゲット命令が命令Cの組み合わせと、その命令B及び命令Cを一括してエミュレーションするコーディング分岐先とが、命令Bに対応して格納されている。図19では、命令Cを第1のターゲット命令とする命令の組み合わせとそのコーディング分岐先とが登録されていないため、命令Cを第1のターゲット命令とする組み合わせは一度も処理されていないことを示している。
なお、図18及び図19に示す命令組み合わせ履歴テーブルでは、ターゲット命令の組み合わせ及びコーディング分岐先を備えた例を示しているが、一括して処理した複数のターゲット命令の組み合わせ履歴が特定できれば、命令組み合わせ履歴テーブルはどのような情報を用いて構成してもよい。
また、図18に示した命令組み合わせ履歴テーブルでは、ターゲット命令の組み合わせと、それに対応するコーディング分岐先の情報とが1組格納され、図19に示した命令組み合わせ履歴テーブルでは、先行する第1のターゲット命令の種類毎に、ターゲット命令の組み合わせと、それに対応するコーディング分岐先の情報とが1組格納されているが、命令組み合わせ履歴テーブルには、ターゲット命令の組み合わせと、それに対応するコーディング分岐先の情報とがそれぞれ複数組格納されていてもよい。
図20は本発明のコンピュータシステムの第3の実施の形態の処理手順の一例を示すフローチャートである。
図20に示すように、処理装置は、最初に先行する第1のターゲット命令をフェッチし(ステップ10−1)、第1のターゲット命令をデコードする(ステップ10−2)。次に、処理装置は、図19または図19に示した命令組み合わせ履歴テーブルを索引し(ステップ10−3)、デコードした第1のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が登録されているか否かを判定する(ステップ10−4)。
第1のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が登録されている場合、処理装置は、後続する第2のターゲット命令をフェッチし(ステップ10−8)、第2のターゲット命令をデコードする(ステップ10−9)。
次に、処理装置は、第1のターゲット命令と第2のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されているか否かを判定し(ステップ10−10)、第1のターゲット命令と第2のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されている場合は、第1のターゲット命令と第2のターゲット命令を一括して処理するコーディングへ分岐する(ステップ10−11)。そして、第1のターゲット命令と第2のターゲット命令の処理を一括して実行し(ステップ10−12)、処理が終了すると、第1のターゲット命令と第2のターゲット命令に対応する所定の終了処理を実行する(ステップ10−13)。
一方、ステップ10−4にて第1のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が命令組み合わせ履歴テーブルに登録されていない場合、あるいはステップ10−10にて第1のターゲット命令と第2のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されていない場合、処理装置は、ステップ10−2の第1のターゲット命令のデコード結果に基づき、第1のターゲット命令をエミュレーションするコーディングへ分岐する(ステップ10−5)。そして、第1のターゲット命令の処理を実行し(ステップ10−6)、処理が終了すると、命令に応じた所定の終了処理を実行する(ステップ10−7)。
第1の実施の形態のコンピュータシステムでは、図3に示したように、第2のターゲット命令のデコード処理が完了しないと、命令組み合わせテーブルを索引することができない。一方、第3の実施の形態のコンピュータシステムでは、図20に示すように、デコードにより第1のターゲット命令が判別できれば、第2のターゲット命令のフェッチやデコード処理を待たずに命令組み合わせ履歴テーブルを索引できる。そのため、命令組み合わせテーブルを索引するよりもテーブルの索引結果をより速く得ることができる。
また、第1の実施の形態で示した命令組み合わせテーブルを索引する場合、処理装置は、デコードした複数のターゲット命令の組み合わせと命令組み合わせテーブルの各エントリとを全て比較する必要がある。しかしながら、第3の実施の形態で示した命令組み合わせ履歴テーブルでは、比較対象が1つのエントリであるため、テーブルの索引結果をより速く得ることができる。
ところで、図20に示した処理では、一括して処理した実績のある複数のターゲット命令のうち、最も新しく処理した組み合わせのみ命令組み合わせ履歴テーブルに登録される。したがって、処理したターゲット命令の組み合わせが次々変化すれば、一括して処理することが可能なターゲット命令の組み合わせであっても、各ターゲット命令を個別に処理することになってしまう。
この点を改善するため、第1の実施の形態で示した命令組み合わせテーブルと上記命令組み合わせ履歴テーブルとをそれぞれ索引する処理例を図21に示す。
図21は本発明のコンピュータシステムの第3の実施の形態の処理手順の他の例を示すフローチャートである。
図21に示すように、処理装置は、最初に先行する第1のターゲット命令をフェッチし(ステップ11−1)、第1のターゲット命令をデコードする(ステップ11−2)。次に、処理装置は、図18または図19に示した命令組み合わせ履歴テーブルを索引し(ステップ11−3)、デコードした第1のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が登録されているか否かを判定する(ステップ11−4)。
第1のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が登録されている場合、処理装置は、後続する第2のターゲット命令をフェッチし(ステップ11−8)、第2のターゲット命令をデコードする(ステップ11−9)。
次に、処理装置は、第1のターゲット命令と第2のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されているか否かを判定し(ステップ11−10)、第1のターゲット命令と第2のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されている場合は、第1のターゲット命令と第2のターゲット命令を一括して処理するコーディングへ分岐する(ステップ11−11)。そして、第1のターゲット命令と第2のターゲット命令の処理を一括して実行し(ステップ11−12)、処理が終了すると、第1のターゲット命令と第2のターゲット命令に対応する所定の終了処理を実行する(ステップ11−13)。
ステップ11−4にて第1のターゲット命令に対応する命令の組み合わせ及びコーディング分岐先が命令組み合わせ履歴テーブルに登録されていない場合、処理装置は、ステップ11−2の第1のターゲット命令のデコード結果に基づき、第1のターゲット命令をエミュレーションするコーディングへ分岐する(ステップ11−5)。そして、第1のターゲット命令の処理を実行し(ステップ11−6)、処理が終了すると、命令に応じた所定の終了処理を実行する(ステップ11−7)。
ステップ11−10にて第1のターゲット命令と第2のターゲット命令の組み合わせが命令組み合わせ履歴テーブルに登録されていない場合、処理装置は、命令組み合わせテーブルを索引し(ステップ11−14)、第1のターゲット命令と第2のターゲット命令が一括して処理できるか否かを判定する(ステップ11−15)。
第1のターゲット命令と第2のターゲット命令が一括して処理できる場合、処理装置はステップ11−16へ移行し、ステップ11−11からステップ11−13の処理を実行する。また、第1のターゲット命令と第2のターゲット命令が一括して処理できない場合、処理装置はステップ11−17へ移行し、ステップ11−5からステップ11−7の処理を実行する。
図21に示した処理手順では、処理対象のターゲット命令の組み合わせが次々変化しても、一括して処理することが可能なターゲット命令の組み合わせであれば、それらを一括して処理することができる。また、命令組み合わせ履歴テーブルを索引した結果、第1のターゲット命令と第2のターゲット命令が一括して処理できる場合は、命令組み合わせテーブルを索引しなくて済むため、命令組み合わせテーブルを索引することによるエミュレーション速度の遅れを抑制できる。
なお、図20のステップ10−1及び図21のステップ11−1では、1つのターゲット命令(第1のターゲット命令)のみフェッチする例を示しているが、これらのステップにて2つ以上のターゲット命令を一括してフェッチしてもよく、2つ以上のターゲット命令を段階的にフェッチしてもよい。
また、図20のステップ10−2及び図21のステップ11−2では、1つのターゲット命令(第1のターゲット命令)のみデコードする例を示しているが、2つ以上のターゲット命令を一括してフェッチしている場合は、それらのターゲット命令を一括してデコードしてもよく、それらのターゲット命令を段階的にデコードしてもよい。
また、図20のステップ10−12及び図21のステップ11−12では、2つのターゲット命令を一括して処理する例を示したが、2つ以上のターゲット命令をフェッチ及びデコードしている場合は、それらのターゲット命令を一括して処理してもよい。
さらに、図20のステップ10−12の処理は、図20のステップ10−7に示す単一のターゲット命令の終了処理と並行して実施してもよく、図21のステップ11−12の処理は、図21のステップ11−7に示す単一のターゲット命令の終了処理と並行して実施してもよい。
本実施形態のコンピュータシステムによれば、第1の実施の形態と同様の効果に加えて、テーブルの索引結果をより速く得ることができるため、エミュレーション速度がより向上する。
(第4の実施の形態)
次に本発明のコンピュータシステムの第4の実施の形態について図面を用いて説明する。
第4の実施の形態は、次に実行するターゲット命令及びさらにその次に実行するターゲット命令に対する、第1の実施の形態〜第3の実施の形態で示した命令組み合わせテーブル、プロセス分岐テーブルまたは命令組み合わせ履歴テーブルの索引処理を、先に実施しているターゲット命令の処理と並行して実施することで、エミュレーション速度を向上させる例である。
図22は本発明のコンピュータシステムの第4の実施の形態の処理手順を示すフローチャートである。なお、図22は図21に示した第3の実施の形態の処理手順に第4の実施の形態を適用した例である。第4の実施の形態は、図3に示した第1の実施の形態の処理、図16及び図17に示した第2の実施の形態の処理、及び図20に示した第3の実施の形態の処理にも適用可能である。
図22に示すように、第4の実施の形態では、図21に示したステップ11−1、11−2、11−3、11−8、11−9及び11―14の処理における第1のターゲット命令及び第2のターゲット命令の処理と並行して、次に実行する第3のターゲット命令のフェッチ(ステップ11−1)、第3のターゲット命令のデコード処理(ステップ11−2)、命令組み合わせ履歴テーブルの索引(ステップ11−3)、第3のターゲット命令に後続する第4のターゲット命令のフェッチ(ステップ11−8)、第4のターゲット命令のデコード処理(ステップ11−9)及び命令組み合わせテーブルの索引(ステップ11−14)の各処理をそれぞれ実行する。
処理装置は、第3のターゲット命令及び第4のターゲット命令に対する処理に移行すると、先に実施した命令組み合わせ履歴テーブルの索引結果、命令組み合わせテーブル索引結果及び命令デコード結果を読み出し、図21に示した第3の実施の形態の処理と同様にステップ11−4から11−17の処理を実行する。
このように本実施形態のコンピュータシステムでは、処理時間の負荷バランスを変えることでエミュレーション速度を改善することが可能となる。
なお、図22に示した処理では、次に実行する第3のターゲット命令及び第4のターゲット命令に対する命令組み合わせ履歴テーブルや命令組み合わせテーブルの索引処理と、第1のターゲット命令及び第2のターゲット命令の処理とを1つのプロセッサにより並行して実施する例を示している。しかしながら、処理装置に複数のプロセッサを備えている場合は、これらの処理を異なるプロセッサで並行して処理してもよい。その場合でも、図21に示した第3の実施の形態の処理だけでなく、図3に示した第1の実施の形態の処理、図16及び図17に示した第2の実施の形態の処理、及び図20に示した第3の実施の形態の処理にも適用可能である。
また、第4の実施の形態では、図23に示すように、次に実行する第3のターゲット命令及び第4のターゲット命令に対する命令組み合わせ履歴テーブルや命令組み合わせテーブルの索引処理時に、第3のターゲット命令と第4のターゲット命令が一括して処理できる組み合わせの場合は、それらを一括して処理する命令として、使用していない命令コードに書き換えてもよい。
その場合、処理装置は、第3のターゲット命令及び第4のターゲット命令に対する処理に移行すると、先に実施した命令組み合わせ履歴テーブルの索引結果、命令組み合わせテーブル索引結果及び命令デコード結果を読み出し、それらの命令を使用していない命令コードに書き換えたか否かを判定し(ステップ13−1)、命令コードを書き換えている場合は、該命令コードにしたがって図21に示したステップ11−11から11−13の処理を実施する。
ステップ13−1にて命令コードを書き換えていないと判定した場合は、図21に示したステップ11−5から11−7の処理を実施する。
図23に示した処理では、次に実行する第3のターゲット命令及び第4のターゲット命令を一括して処理する命令を書き換えることで、命令組み合わせテーブルや命令組み合わせ履歴テーブルの索引処理や判定処理を簡略化することが可能であり、図22に示したステップ11−10、11−15、11−16及び11−17の処理を削減できる。
この場合でも、図21に示した第3の実施の形態の処理だけでなく、図3に示した第1の実施の形態の処理、図16及び図17に示した第2の実施の形態の処理、及び図20に示した第3の実施の形態の処理にも適用可能である。
本実施形態のコンピュータシステムによれば、第1の実施の形態及び第2の実施の形態と同様の効果に加えて、処理時間の負荷バランスを変えることでエミュレーション速度を改善することが可能となる。
本発明のコンピュータシステムの一構成例を示すブロック図である。 第1の実施の形態のコンピュータシステムで用いる命令組み合わせテーブルの一例を示すテーブル図である。 本発明のコンピュータシステムの第1の実施の形態の処理手順を示すフローチャートである。 addt命令及びsubt命令のコードの一例を示す模式図である。 addt命令及びsubt命令のフェッチ及びデコード処理の具体例を示すコーディング図である。 addt命令の実行処理の具体例を示すコーディング図である。 subt命令の実行処理の具体例を示すコーディング図である。 addt命令及びsubt命令の終了処理の具体例を示すコーディング図である。 addt命令とsubt命令を一括して処理する場合のフェッチ及びデコード処理の具体例を示すコーディング図である。 addt命令とsubt命令を一括して処理する場合の実行処理の具体例を示すコーディング図である。 addt命令とsubt命令を一括して処理する場合の終了処理の具体例を示すコーディング図である。 3つ以上のターゲット命令を一括して処理する場合のフェッチ及びデコード処理の一例を示すコーディング図である。 3つ以上のターゲット命令を一括して処理する場合のフェッチ及びデコード処理の他の例を示すコーディング図である。 第2の実施の形態のコンピュータシステムで用いるプロセス分岐テーブルの一例を示すテーブル図である。 図14に示したプロセス分岐テーブルのプロセス名、命令カウンタ及びターゲット命令の具体例を示すテーブル図である。 本発明のコンピュータシステムの第2の実施の形態の処理手順の一例を示すフローチャートである。 本発明のコンピュータシステムの第2の実施の形態の処理手順の他の例を示すフローチャートである。 第3の実施の形態で用いる命令組み合わせ履歴テーブルの一例を示すテーブル図である。 第3の実施の形態で用いる命令組み合わせ履歴テーブルの他の例を示すテーブル図である。 本発明のコンピュータシステムの第3の実施の形態の処理手順の一例を示すフローチャートである。 本発明のコンピュータシステムの第3の実施の形態の処理手順の他の例を示すフローチャートである。 本発明のコンピュータシステムの第4の実施の形態の処理手順を示すフローチャートである。 本発明のコンピュータシステムの第4の実施の形態の処理手順の変形例を示すフローチャートである。 従来のエミュレーション方法の処理手順を示すフローチャートである。
符号の説明
1−1 アプリケーションプログラム
1−2 ターゲットシステムのOS
1−3 ベースシステムのOS
1−4 エミュレータ
1−5 プロセッサ
1−6 メモリ
1−7 ターゲットメモリ領域
1−8 エミュレータメモリ領域
1−9 ベースメモリ領域
1−10 IO装置

Claims (26)

  1. ターゲット命令をエミュレーションするためのエミュレーション方法であって、
    複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成した該複数のターゲット命令を一括して処理するためのコーディングに分岐し、該コーディングにしたがって処理を実行するエミュレーション方法。
  2. 予め前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルを作成しておき、
    複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令を一括して処理できるか否かを、前記命令組み合わせテーブルを索引して判定し、
    複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
    複数のターゲット命令が一括して処理できない組み合わせの場合は、1つのターゲット命令をエミュレーションするコーディングに分岐して処理する請求項1記載のエミュレーション方法。
  3. 予め前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び複数のターゲット命令を特定する情報と該複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報とを関連付けたプロセス分岐テーブルを作成しておき、
    前記複数のターゲット命令を特定する情報を読み出し、前記プロセス分岐テーブルを索引して該複数のターゲット命令を特定する情報が登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
    該複数のターゲット命令を特定する情報が前記プロセス分岐テーブルに登録されていない場合は、1つのターゲット命令をフェッチしてデコードし、該ターゲット命令をエミュレーションするコーディングに分岐して処理する請求項1記載のエミュレーション方法。
  4. 前記複数のターゲット命令を特定する情報を読み出す処理と、前記1つのターゲット命令をフェッチしてデコードする処理とを同時に実行する請求項3記載のエミュレーション方法。
  5. 予め前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び一括して処理した実績のある複数のターゲット命令の組み合わせと、該複数のターゲット命令を一括してエミュレーションするコーディングへの分岐先を示す情報とを関連付けた命令組み合わせ履歴テーブルを作成しておき、
    複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
    該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、1つのターゲット命令をエミュレーションするコーディングに分岐して処理する請求項1記載のエミュレーション方法。
  6. 予め前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルを作成しておき、
    デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令が一括して処理できるか否かを判定し、
    該複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理する請求項5記載のエミュレーション方法。
  7. 前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理しているとき、または前記1つのターゲット命令をエミュレーションするコーディングに分岐して処理しているとき、
    次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理を同時に実行する請求項6記載のエミュレーション方法。
  8. 前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐した処理、または前記1つのターゲット命令をエミュレーションするコーディングに分岐した処理と、
    次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理と、
    を異なるプロセッサで実行する請求項7記載のエミュレーション方法。
  9. 次に実行する複数のターゲット命令が一括して処理できる場合、該複数のターゲット命令を、使用していない命令コードに書き換える請求項7または8記載のエミュレーション方法。
  10. ターゲット命令をエミュレーションするコンピュータシステムであって、
    複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成した該複数のターゲット命令を一括して処理するためのコーディングに分岐し、該コーディングにしたがって処理を実行する処理装置と、
    前記複数のターゲット命令を一括して処理するためのコーディングが格納されるメモリと、
    を有するコンピュータシステム。
  11. 前記メモリに、
    予め作成された前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルが格納され、
    前記処理装置は、
    複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令を一括して処理できるか否かを、前記命令組み合わせテーブルを索引して判定し、
    複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
    複数のターゲット命令が一括して処理できない組み合わせの場合は、1つのターゲット命令をエミュレーションするコーディングに分岐して処理する請求項10記載のコンピュータシステム。
  12. 前記メモリに、
    予め作成された前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び複数のターゲット命令を特定する情報と該複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報とを関連付けたプロセス分岐テーブルが格納され、
    前記処理装置は、
    前記複数のターゲット命令を特定する情報を読み出し、前記プロセス分岐テーブルを索引して該複数のターゲット命令を特定する情報が登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
    該複数のターゲット命令を特定する情報が前記プロセス分岐テーブルに登録されていない場合は、1つのターゲット命令をフェッチしてデコードし、該ターゲット命令をエミュレーションするコーディングに分岐して処理する請求項10記載のコンピュータシステム。
  13. 前記処理装置は、
    前記複数のターゲット命令を特定する情報を読み出す処理と、前記1つのターゲット命令をフェッチしてデコードする処理とを同時に実行する請求項12記載のコンピュータシステム。
  14. 前記メモリに、
    予め作成された前記ターゲット命令を個々にエミュレーションするためのコーディング、複数のターゲット命令を一括してエミュレーションするためのコーディング及び一括して処理した実績のある複数のターゲット命令の組み合わせと、該複数のターゲット命令を一括してエミュレーションするコーディングへの分岐先を示す情報とを関連付けた命令組み合わせ履歴テーブルが格納され、
    前記処理装置は、
    複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されている場合は、該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
    該複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、1つのターゲット命令をエミュレーションするコーディングに分岐して処理する請求項10記載のコンピュータシステム。
  15. 前記メモリに、
    予め作成された前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルが格納され、
    前記処理装置は、
    デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令が一括して処理できるか否かを判定し、
    該複数のターゲット命令が一括して処理できる組み合わせの場合、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理する請求項14記載のコンピュータシステム。
  16. 前記処理装置は、
    前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理しているとき、または前記1つのターゲット命令をエミュレーションするコーディングに分岐して処理しているとき、
    次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理を同時に実行する請求項15記載のコンピュータシステム。
  17. 前記処理装置は、
    前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐した処理、または前記1つのターゲット命令をエミュレーションするコーディングに分岐した処理を実行する第1のプロセッサと、
    次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理を実行する第2のプロセッサと、
    を有する請求項16記載のコンピュータシステム。
  18. 前記処理装置は、
    次に実行する複数のターゲット命令が一括して処理できる場合、該複数のターゲット命令を、使用していない命令コードに書き換える請求項16または17記載のコンピュータシステム。
  19. コンピュータにターゲット命令をエミュレーションさせるためのプログラムであって、
    複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成した該複数のターゲット命令を一括して処理するためのコーディングに分岐し、該コーディングにしたがって処理を実行するためのプログラム。
  20. 複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該複数のターゲット命令を一括して処理できるか否かを、予め作成された前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルを索引して判定し、
    複数のターゲット命令が一括して処理できる組み合わせの場合、予め作成された該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
    複数のターゲット命令が一括して処理できない組み合わせの場合、予め作成された1つのターゲット命令をエミュレーションするコーディングに分岐して処理するための請求項19記載のプログラム。
  21. 前記複数のターゲット命令を特定する情報を読み出し、
    前記複数のターゲット命令を特定する情報と該複数のターゲット命令を一括して処理するコーディングの分岐先を示す情報とを関連付けたプロセス分岐テーブルを索引し、
    前記プロセス分岐テーブルに前記読み出した複数のターゲット命令を特定する情報が登録されている場合は、予め作成された該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
    前記プロセス分岐テーブルに前記読み出した複数のターゲット命令を特定する情報が登録されていない場合は、予め作成された1つのターゲット命令をフェッチしてデコードし、該ターゲット命令をエミュレーションするコーディングに分岐して処理するための請求項19記載のプログラム。
  22. 前記複数のターゲット命令を特定する情報を読み出す処理と、前記1つのターゲット命令をフェッチしてデコードする処理とを同時に実行するための請求項21記載のプログラム。
  23. 複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、
    予め作成された一括して処理した実績のある複数のターゲット命令の組み合わせと、該複数のターゲット命令を一括してエミュレーションするコーディングへの分岐先を示す情報とを関連付けた命令組み合わせ履歴テーブルを索引し、
    前記命令組み合わせ履歴テーブルに前記デコードした複数のターゲット命令の組み合わせが登録されている場合は、予め作成された該複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理し、
    前記命令組み合わせ履歴テーブルに前記デコードした複数のターゲット命令の組み合わせが登録されていない場合は、予め作成された1つのターゲット命令をエミュレーションするコーディングに分岐して処理するための請求項19記載のプログラム。
  24. 前記命令組み合わせ履歴テーブルに前記デコードした複数のターゲット命令の組み合わせが登録されていない場合、予め作成された前記ターゲット命令の組み合わせ毎に一括して処理できるか否かを示す命令組み合わせテーブルを索引して該複数のターゲット命令が一括して処理できるか否かを判定し、
    該複数のターゲット命令が一括して処理できる組み合わせの場合は、該ターゲット命令を一括してエミュレーションするコーディングに分岐して処理するための請求項23記載のプログラム。
  25. 前記複数のターゲット命令を一括してエミュレーションするコーディングに分岐して処理しているとき、または前記1つのターゲット命令をエミュレーションするコーディングに分岐して処理しているとき、
    次に実行する複数のターゲット命令をフェッチして該複数のターゲット命令をデコードし、該デコードした複数のターゲット命令の組み合わせが前記命令組み合わせ履歴テーブルに登録されていない場合は、前記命令組み合わせテーブルを索引して該複数のターゲット命令を一括して処理できるか否かを判定する処理を同時に実行するための請求項24記載のプログラム。
  26. 次に実行する複数のターゲット命令が一括して処理できる場合、該複数のターゲット命令を、使用していない命令コードに書き換えるための請求項25記載のプログラム。
JP2006137587A 2006-05-17 2006-05-17 エミュレーション方法及びコンピュータシステム Expired - Fee Related JP4778359B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006137587A JP4778359B2 (ja) 2006-05-17 2006-05-17 エミュレーション方法及びコンピュータシステム
US11/798,223 US8392893B2 (en) 2006-05-17 2007-05-11 Emulation method and computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006137587A JP4778359B2 (ja) 2006-05-17 2006-05-17 エミュレーション方法及びコンピュータシステム

Publications (2)

Publication Number Publication Date
JP2007310546A true JP2007310546A (ja) 2007-11-29
JP4778359B2 JP4778359B2 (ja) 2011-09-21

Family

ID=38713040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006137587A Expired - Fee Related JP4778359B2 (ja) 2006-05-17 2006-05-17 エミュレーション方法及びコンピュータシステム

Country Status (2)

Country Link
US (1) US8392893B2 (ja)
JP (1) JP4778359B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009193446A (ja) * 2008-02-15 2009-08-27 Nec Computertechno Ltd 情報処理装置、情報処理装置におけるエミュレーション方法及びエミュレーションプログラム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7041068B2 (en) 2001-06-12 2006-05-09 Pelikan Technologies, Inc. Sampling module device and method

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6482131A (en) * 1987-09-24 1989-03-28 Mitsubishi Electric Corp Data processor
JPH08305583A (ja) * 1995-05-08 1996-11-22 N Ii C Joho Syst:Kk Cpuシミュレーション方法
JPH11175349A (ja) * 1997-11-11 1999-07-02 Internatl Business Mach Corp <Ibm> データ列生成方法及び装置、変換方法、及びコンピュータ
JP2001306334A (ja) * 2000-04-25 2001-11-02 Nec Software Hokuriku Ltd エミュレーション装置
JP2004127154A (ja) * 2002-10-07 2004-04-22 Mitsubishi Electric Corp 情報処理装置及び命令エミュレーション装置及び命令エミュレーション処理実行方法
JP2005063165A (ja) * 2003-08-13 2005-03-10 Fujitsu Ltd 仮想計算機の高速エミュレータ

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5210832A (en) * 1986-10-14 1993-05-11 Amdahl Corporation Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle
US4951195A (en) * 1988-02-01 1990-08-21 International Business Machines Corporation Condition code graph analysis for simulating a CPU processor
WO1994027215A1 (en) * 1993-05-07 1994-11-24 Apple Computer, Inc. Method for decoding guest instructions for a host computer
US5560013A (en) * 1994-12-06 1996-09-24 International Business Machines Corporation Method of using a target processor to execute programs of a source architecture that uses multiple address spaces
US5790845A (en) * 1995-02-24 1998-08-04 Hitachi, Ltd. System with reservation instruction execution to store branch target address for use upon reaching the branch point
US5751982A (en) * 1995-03-31 1998-05-12 Apple Computer, Inc. Software emulation system with dynamic translation of emulated instructions for increased processing speed
US5926642A (en) * 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US6055371A (en) * 1996-12-26 2000-04-25 Nec Corporation Compile device, compile method and recording medium for recording compiler
JP4573189B2 (ja) * 1998-10-10 2010-11-04 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムコード変換方法
US6480818B1 (en) * 1998-11-13 2002-11-12 Cray Inc. Debugging techniques in a multithreaded environment
US6976157B1 (en) * 1999-11-04 2005-12-13 International Business Machines Corporation Circuits, systems and methods for performing branch predictions by selectively accessing bimodal and fetch-based history tables
US7251594B2 (en) * 2001-12-21 2007-07-31 Hitachi, Ltd. Execution time modification of instruction emulation parameters
US7765533B2 (en) * 2002-04-25 2010-07-27 Koninklijke Philips Electronics N.V. Automatic task distribution in scalable processors
US7506321B1 (en) * 2002-06-11 2009-03-17 Unisys Corporation Computer emulator employing direct execution of compiled functions
US8108843B2 (en) * 2002-09-17 2012-01-31 International Business Machines Corporation Hybrid mechanism for more efficient emulation and method therefor
WO2005119439A2 (en) * 2004-06-01 2005-12-15 The Regents Of The University Of California Retargetable instruction set simulators
US7747565B2 (en) * 2005-12-07 2010-06-29 Microsoft Corporation Garbage collector support for transactional memory

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6482131A (en) * 1987-09-24 1989-03-28 Mitsubishi Electric Corp Data processor
JPH08305583A (ja) * 1995-05-08 1996-11-22 N Ii C Joho Syst:Kk Cpuシミュレーション方法
JPH11175349A (ja) * 1997-11-11 1999-07-02 Internatl Business Mach Corp <Ibm> データ列生成方法及び装置、変換方法、及びコンピュータ
JP2001306334A (ja) * 2000-04-25 2001-11-02 Nec Software Hokuriku Ltd エミュレーション装置
JP2004127154A (ja) * 2002-10-07 2004-04-22 Mitsubishi Electric Corp 情報処理装置及び命令エミュレーション装置及び命令エミュレーション処理実行方法
JP2005063165A (ja) * 2003-08-13 2005-03-10 Fujitsu Ltd 仮想計算機の高速エミュレータ

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009193446A (ja) * 2008-02-15 2009-08-27 Nec Computertechno Ltd 情報処理装置、情報処理装置におけるエミュレーション方法及びエミュレーションプログラム

Also Published As

Publication number Publication date
US8392893B2 (en) 2013-03-05
US20070271084A1 (en) 2007-11-22
JP4778359B2 (ja) 2011-09-21

Similar Documents

Publication Publication Date Title
KR101607549B1 (ko) 명령어의 제어 흐름 추적
US7783867B2 (en) Controlling instruction execution in a processing environment
US20060037009A1 (en) Multiple stage program recompiler and method
US9213563B2 (en) Implementing a jump instruction in a dynamic translator that uses instruction code translation and just-in-time compilation
US9529610B2 (en) Updating compiled native instruction paths
US10083032B2 (en) System, apparatus and method for generating a loop alignment count or a loop alignment mask
JP2014216021A (ja) バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法
CN117193861B (zh) 指令处理方法、装置、计算机设备和存储介质
US20150186169A1 (en) Defining an instruction path to be compiled by a just-in-time (jit) compiler
US9977675B2 (en) Next-instruction-type-field
CN114217856B (zh) 面向AArch64架构的CPU指令微基准测试方法及系统
CN117827284B (zh) 向量处理器访存指令处理方法、系统、设备及存储介质
JP4778359B2 (ja) エミュレーション方法及びコンピュータシステム
JP4420055B2 (ja) マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法
CN111176663B (zh) 应用程序的数据处理方法、装置、设备及存储介质
WO2021036173A1 (zh) 解释执行字节码指令流的方法及装置
US20090178054A1 (en) Concomitance scheduling commensal threads in a multi-threading computer system
US20220197718A1 (en) Enabling asynchronous operations in synchronous processors
US20080189527A1 (en) Employing a buffer to facilitate instruction execution
US7752424B2 (en) Null value checking instruction
CN112445587A (zh) 一种任务处理的方法以及任务处理装置
US9389865B1 (en) Accelerated execution of target of execute instruction
CN106445466B (zh) 超长指令字指令集的指令处理方法及装置
US8898433B2 (en) Efficient extraction of execution sets from fetch sets
JP2013061810A (ja) 情報処理装置、情報処理装置制御方法及び中間コード命令実行プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110301

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110622

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110701

R150 Certificate of patent or registration of utility model

Ref document number: 4778359

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140708

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees