JP5533538B2 - 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法 - Google Patents

情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法 Download PDF

Info

Publication number
JP5533538B2
JP5533538B2 JP2010230015A JP2010230015A JP5533538B2 JP 5533538 B2 JP5533538 B2 JP 5533538B2 JP 2010230015 A JP2010230015 A JP 2010230015A JP 2010230015 A JP2010230015 A JP 2010230015A JP 5533538 B2 JP5533538 B2 JP 5533538B2
Authority
JP
Japan
Prior art keywords
instruction
address
instruction address
emulation
information
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.)
Expired - Fee Related
Application number
JP2010230015A
Other languages
English (en)
Other versions
JP2012083963A (ja
Inventor
崇 中山
司芳 渡辺
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010230015A priority Critical patent/JP5533538B2/ja
Priority to US13/253,640 priority patent/US8984263B2/en
Publication of JP2012083963A publication Critical patent/JP2012083963A/ja
Application granted granted Critical
Publication of JP5533538B2 publication Critical patent/JP5533538B2/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/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching

Landscapes

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

Description

本発明は、エミュレーション処理を実行する情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法に関する。
従来から、CPU(Central Processing Unit)に、自CPUのアーキテクチャと異なるアーキテクチャのCPUの動作を実行させるCPUエミュレータがある。CPUエミュレータは、自CPUのアーキテクチャでは動作できないソフトウェアについて、該ソフトウェアが動作可能なアーキテクチャのCPUの動作を自CPUに実行させることで、該ソフトウェアを自CPUにおいて実行させる。
また、メインプロセッサには、命令コードをエミュレートする第1のソフトウェアモジュールが実装され、メインプロセッサ以外のプロセッサコアのうちの一つが、メインプロセッサが実行予定の命令コードを、メインプロセッサの実行に先立って共有キャッシュメモリにプリフェッチする技術が知られている。他にも、例えば、プロセッサ数に対応させて命令エミュレーション処理を分割し、分割されたそれぞれの処理をプロセッサごとに割付け、各プロセッサは割付けられた処理を並列に実行する技術が知られている。(特許文献1、特許文献2参照)
特開2004−127154号公報 特開2006−268487号公報
しかしながら、例えば、命令エミュレーション処理を複数の物理CPUにパイプライン的に実行させる従来の技術では、エミュレートする命令語の命令が分岐命令の場合、分岐命令を実行している物理CPUと異なる他の物理CPUが、分岐命令の終了まで処理を中断することとなってしまう。
1つの側面では、本発明は、エミュレートする処理が分岐命令であることによる処理速度の低下を抑制することを目的とする。
本願の開示する情報処理装置は、一つの態様において、第1のプロセッサ及び第2のプロセッサを含む情報処理装置であって、前記第1のプロセッサが、受信した命令アドレスの次の命令アドレスを算出する算出部と、算出した命令アドレスと、算出した命令アドレスに基づいて読み出した命令情報とを前記第2のプロセッサに送信する第1の送信部と、前記第2のプロセッサが、実行した処理の実行結果に含まれる命令アドレスである第1の命令アドレスを前記第1のプロセッサに送信する第2の送信部を含み、前記第1のプロセッサから受信した命令アドレスである第2の命令アドレスが、前記第1の命令アドレスと同じである場合に、前記第1のプロセッサから受信した命令情報に基づく処理を実行し、前記第2の命令アドレスが前記第1の命令アドレスと同じでない場合に、前記第1の命令アドレスに基づいて命令情報を読出し、読み出した命令情報に基づく処理を実行する実行部とを備える。
1つの態様では、エミュレートする処理が分岐命令であることにより処理速度が低下することを抑制することができる。
図1は、実施例1に係る情報処理装置の構成を示す機能ブロック図である。 図2は、実施例1に係る情報処理装置の処理のシーケンス図である。 図3は、実施例2に係るエミュレーション装置の構成を示す機能ブロック図である。 図4は、フェッチ命令情報記憶部のデータ構造の一例を示す図である。 図5は、実施例2に係るエミュレーション装置の処理のシーケンス図である。 図6は、命令実行CPUの待ち時間発生時における従来技術と実施例3の処理とを比較した説明図である。 図7は、実施例3に係るエミュレーション装置の構成を示す機能ブロック図である。 図8は、実施例3に係るエミュレーション装置の処理のシーケンス図である。 図9は、フェッチ・デコードCPUの待ち時間発生時における従来技術と実施例3の変形例の処理とを比較した説明図である。 図10は、実施例4に係るエミュレーション装置の構成を示す機能ブロック図である。 図11は、分岐実績記憶部のデータ構造の一例を示す図である。 図12は、実施例4に係るエミュレーション装置の処理のシーケンス図である。 図13は、エミュレーション処理プログラムを実行するコンピュータを示す図である。 図14は、1つの物理CPUによる命令エミュレーション処理のシーケンス図である。
まず、1つの物理CPUに実行させる1命令語あたりの命令エミュレーション処理を、図14を参照して説明する。図14は、1つの物理CPUによる命令エミュレーション処理のシーケンス図である。まず、物理CPUが、命令アドレスから命令語をロード(フェッチ)し(ステップS11)、フェッチした命令語を解析(デコード)する(ステップS12)。さらに、物理CPUが、フェッチした命令語の値からこの命令語に対応する命令エミュレーション関数のアドレスを取得する(ステップS13)。そして、物理CPUが、S13で取得したアドレスが示す命令エミュレーション関数を呼び出す(ステップS14)。物理CPUが、S14で呼び出した命令エミュレーション関数を、S12で求めたオペランドを用いて実行し(ステップS15)、次に実行する命令語の命令アドレスを取得する(ステップS16)。このように、命令エミュレーション処理は、後続する命令語を順次エミュレートする。
CPUエミュレータを用いて動作させるソフトウェアによってはCPU数の制限が設けられている場合がある。CPU数の制限が設けられたソフトウェアを実行する情報処理装置が、該ソフトウェアに設けられた制限以上の数の物理CPUを有することも考えられる。その場合、該情報処理装置が有する1つの物理CPUで、1つのCPUをエミュレートすると、いくつかの物理CPUは余ることになる。そこで、複数の物理CPUを用いて1つのCPUをさらに高速にエミュレートする機構が求められる。
以下に、本願の開示する情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法の実施例を図面に基づいて詳細に説明する。なお、以下に説明する実施例では、情報処理装置が、2個の物理CPUを備えるものとして説明するが、1個の物理CPUに物理コアが2個あっても良い。また、本実施例によりこの発明が限定されるものではない。
図1は、本実施例1に係る情報処理装置の構成を示す機能ブロック図である。図1に示すように、情報処理装置1は、第1のプロセッサ11及び第2のプロセッサ12を有する。また、第1のプロセッサ11は、算出部11a及び第1の送信部11bを有する。さらに、第2のプロセッサ12は、第2の送信部12a及び実行部12bを有する。
算出部11aは、第2のプロセッサ12から受信した命令アドレスの次の命令アドレスを算出する。なお、第2のプロセッサ12から受信した命令アドレスとは、第2のプロセッサ12によって実行された命令エミュレーション処理の実行結果に含まれる第1の命令アドレスを意味する。
第1の送信部11bは、算出部11aによって算出された命令アドレスと、当該命令アドレスに基づいて読み出した命令情報とを第2のプロセッサ12に送信する。ここで、命令アドレスに基づいて命令情報を読み出すことを「フェッチする」というものとする。
第2の送信部12aは、実行した命令エミュレーション処理の実行結果に含まれる命令アドレスである第1の命令アドレスを第1のプロセッサ11に送信する。実行部12bは、第1のプロセッサ11から受信した命令アドレスである第2の命令アドレスが、第1の命令アドレスと同じである場合に、第1のプロセッサ11から受信した命令情報に基づくエミュレーション処理を実行する。また、実行部12bは、第2の命令アドレスが第1の命令アドレスと同じでない場合に、第1の命令アドレスに基づいて命令情報を読出し、読み出した命令情報に基づく命令エミュレーション処理を実行する。
次に、情報処理装置1の命令エミュレーション処理のシーケンスを、図2を参照して説明する。図2は、実施例1に係る情報処理装置の処理のシーケンス図である。なお、図2では、1命令の命令エミュレーション処理のシーケンスについて説明する。図2に示すように、情報処理装置1は、1個の物理CPUであるフェッチ・デコードCPU及び当該フェッチ・デコードCPUと異なる1個の物理CPUである命令実行CPUを備えているものとする。
まず、フェッチ・デコードCPUは、エミュレーションの対象となるCPUの命令アドレスから命令語をフェッチし、フェッチした命令語をデコードする(ステップS21)。そして、フェッチ・デコードCPUは、フェッチした命令語の値からこの命令語に対応する命令エミュレーション関数のアドレスを取得する(ステップS22)。そして、フェッチ・デコードCPUの第1の送信部11bは、エミュレーションの対象となるCPUの命令アドレス(第2の命令アドレス)を含む命令情報を命令実行CPUに送信する(ステップS23)。
次に、命令実行CPUは、命令情報の通知待ちを行っている(ステップS24)。命令実行CPUでは、命令情報を取得すると(ステップS25)、第2の送信部12aが前命令のエミュレーション処理の実行結果に含まれる命令アドレス(第1の命令アドレス)をフェッチ・デコードCPUに送信する(ステップS26)。なお、第1の命令アドレスは、直近に実行される命令の命令アドレスである現命令アドレスを意味する。引き続き、命令実行CPUの実行部12bは、第2の命令アドレスが第1の命令アドレスと同じである場合に、取得した命令情報を用いて命令エミュレーション関数を呼び出す(ステップS27)。一方、命令実行CPUの実行部12bは、第2の命令アドレスが第1の命令アドレスと同じでない場合に、第1の命令アドレスから命令語をフェッチし、フェッチした命令情報を用いて命令エミュレーション関数を呼び出す(ステップS27)。そして、実行部12bは、呼び出した命令エミュレーション関数を、命令情報を用いて実行する(ステップS28)。
一方、フェッチ・デコードCPUは、現命令アドレスの通知待ちを行っている(ステップS29)。フェッチ・デコードCPUは、現命令アドレスである第1の命令アドレスを取得すると(ステップS30)、算出部11aが取得された現命令アドレスの次の命令アドレスである次命令アドレスを算出する(ステップS31)。そして、フェッチ・デコードCPUは、引き続き、次命令アドレスから命令語をフェッチし、該フェッチした命令語をデコードすることになる(ステップS32)。
このようにして、情報処理装置1は、エミュレーションの実行結果に含まれる命令アドレス(第1の命令アドレス)をフェッチ・デコードCPUに送信させることとした。このため、フェッチ・デコードCPUは、受信した第1の命令アドレスが示す命令に後続する命令のフェッチ及びデコードを、当該命令アドレスが示す命令のエミュレーションとパイプライン的に実行できるので、全体のエミュレーション処理を高速化できる。特に、フェッチ・デコードCPUは、受信した第1の命令アドレスが示す命令が分岐命令であっても、当該命令に後続する命令をフェッチ及びデコードするので、当該命令のエミュレーションで分岐に失敗したときデコード結果を活かせる。このため、フェッチ・デコードCPUは、全体のエミュレーション処理を高速化でき、エミュレーション処理が分岐命令であることによる処理速度の低下の抑制を図ることができる。
[実施例2に係るエミュレーション装置の構成]
図3は、本実施例2に係るエミュレーション装置2の構成を示す機能ブロック図である。図3に示すように、エミュレーション装置2は、フェッチ・デコードCPU30及び命令実行CPU40の2つの物理CPUを備える。また、エミュレーション装置2は、ターゲットメモリ記憶部21、命令関数記憶部24、フェッチ命令情報記憶部25及び命令アドレス記憶部26を有する。
フェッチ・デコードCPU30は、エミュレーションの対象となるCPUの命令をフェッチし、フェッチした命令をデコードする命令デコード部31を有する。さらに、命令デコード部31は、フェッチ処理部32、デコード処理部33及び次命令アドレス判定部34を有する。命令実行CPU40は、フェッチ・デコードCPU30によってデコードされた命令の情報に基づきエミュレーションを実行するエミュレーション実行部41を有する。さらに、エミュレーション実行部41は、命令アドレス通知部42、命令アドレス合致判定部43、フェッチ・デコード処理部44及びエミュレーション処理部45を有する。なお、フェッチ・デコードCPU30及び命令実行CPU40は、CPUであるが、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)又はMPU(Micro Processing Unit)等の電子回路であっても良い。
ターゲットメモリ記憶部21は、エミュレーションのターゲットとなるCPUのメモリ空間として割り当てられ、命令列22及びオペランド23を記憶する。命令列22は、エミュレーションの対象となるCPUの命令語の列である。オペランド23は、命令語に含まれるオペランド部が指す情報であり、命令の対象となるデータを示す。なお、ターゲットメモリ記憶部21は、例えば、RAM(Random Access Memory)、フラッシュメモリ(flash memory)等の半導体メモリ素子、又は、ハードディスク、光ディスクなどの記憶装置である。
命令関数記憶部24は、エミュレーションの対象となるCPUの命令の動作をエミュレートする関数を記憶する。以降、命令関数記憶部24に記憶された関数を命令エミュレーション関数というものとする。フェッチ命令情報記憶部25は、フェッチ・デコードCPU30及び命令実行CPU40によって共有される、命令に関する情報を記憶する。
ここで、フェッチ命令情報記憶部25について図4を参照しながら説明する。図4は、フェッチ命令情報記憶部25のデータ構造の一例を示す図である。図4に示すように、フェッチ命令情報記憶部25は、命令アドレス25a、オペランド情報25b及び命令関数アドレス25cを対応付けて記憶する。命令アドレス25aは、命令列22からフェッチした命令語のアドレスを示す。オペランド情報25bは、命令列22からフェッチした命令語に関するオペランド情報であり、例えば、命令の対象となるデータのアドレスを示す。命令関数アドレス25cは、命令列22からフェッチした命令語に対応する命令エミュレーション関数の格納先アドレスを示す。
命令アドレス記憶部26は、命令実行CPU40が直近にエミュレートする命令に関する情報を記憶する。すなわち、命令アドレス記憶部26は、命令列22における直近にエミュレートされる命令の命令アドレスである現命令アドレスを記憶する。なお、命令関数記憶部24、フェッチ命令情報記憶部25及び命令アドレス記憶部26は、例えば、RAM(Random Access Memory)、フラッシュメモリ(flash memory)等の半導体メモリ素子、又は、ハードディスク、光ディスクなどの記憶装置である。
フェッチ処理部32は、プログラムカウンタにしたがって、命令アドレスが示す命令語を命令列22からフェッチする。デコード処理部33は、フェッチした命令語をデコードし、命令実行に必要な命令情報を命令実行CPU40に通知する。具体的には、デコード処理部33は、フェッチ処理部32によってフェッチされた命令語を各フィールドに分解し、オペランド情報を求める。また、デコード処理部33は、命令関数記憶部24に基づいて、この命令語の命令に相当する命令エミュレーション関数のアドレスを取得する。そして、デコード処理部33は、命令列22からフェッチされた命令語の命令アドレス、デコードの結果として得られるオペランド情報及び命令エミュレーション関数のアドレスを含む命令情報をフェッチ命令情報記憶部25に記憶する。
次命令アドレス判定部34は、デコードされた命令の命令アドレスが前命令のエミュレーションの実行結果から得られる命令アドレスと合致するか否かを判定する。すなわち、次命令アドレス判定部34は、フェッチ及びデコード処理対象の命令アドレスが、該処理と同期間にエミュレーションがされた前命令の実行結果から得られる実効アドレスと合致するか否かを判定する。この実効アドレスは、エミュレーション処理がされた前命令の次に処理されるべき命令アドレスである。
具体的には、次命令アドレス判定部34は、フェッチ命令情報記憶部25に記憶された命令情報を、デコード処理部33から取得する。また、次命令アドレス判定部34は、命令アドレス記憶部26から直近にエミュレートされる命令の現命令アドレスを読み出す。また、次命令アドレス判定部34は、命令情報に含まれる命令アドレス25aが現命令アドレスと合致するか否かを判定する。そして、次命令アドレス判定部34は、命令アドレス25aが現命令アドレスと合致する場合には、命令アドレス25aのアドレスが示す命令に後続する命令の命令アドレスを算出し、算出した命令アドレスをプログラムカウンタに保持する。
また、次命令アドレス判定部34は、命令アドレス25aが現命令アドレスと合致しない場合には、前命令のエミュレーションの実行結果から得られる実効アドレスが所定の条件により変更されたと判断する。そして、次命令アドレス判定部34は、現命令アドレスが示す命令に後続する命令の命令アドレスをプログラムカウンタに保持する。なお、所定の条件とは、例えば、現命令アドレスが実行結果となる前命令が分岐命令であった場合や割り込み処理があった場合等であり、これらの場合に実効アドレスが変更されるのである。
命令アドレス通知部42は、命令のエミュレーション処理の実行結果から得られる現命令アドレスを命令デコード部31に通知する。具体的には、命令アドレス通知部42は、後述するエミュレーション処理部45によって前命令のエミュレーションがされた実行結果から得られる実効アドレス、すなわち直近に実行される命令の命令アドレスである現命令アドレスを取得する。また、命令アドレス通知部42は、取得した現命令アドレスを命令アドレス記憶部26に記憶する。
命令アドレス合致判定部43は、前命令のエミュレーション処理の実行結果から得られる命令アドレスがデコードされた命令の命令アドレスと合致するか否かを判定する。具体的には、命令アドレス合致判定部43は、命令アドレス通知部42によって通知された現命令アドレスを取得する。また、命令アドレス合致判定部43は、フェッチ命令情報記憶部25から命令情報を読み出す。また、命令アドレス合致判定部43は、現命令アドレスが命令情報に含まれる命令アドレス25aと合致するか否かを判定する。そして、命令アドレス合致判定部43は、現命令アドレスが命令アドレス25aと合致する場合には、命令情報を用いたエミュレーション処理を実行するように、エミュレーション処理部45に依頼する。一方、命令アドレス合致判定部43は、現命令アドレスが命令アドレス25aと合致しない場合には、フェッチ命令情報記憶部25に記憶された命令情報を破棄する。そして、命令アドレス合致判定部43は、現命令アドレスが示す命令のフェッチ及びデコード処理を実行するように、フェッチ・デコード処理部44に依頼する。
フェッチ・デコード処理部44は、命令アドレス合致判定部43から現命令アドレスのフェッチ及びデコード処理の実行依頼を取得すると、この現命令アドレスが示す命令語を命令列22からフェッチする。また、フェッチ・デコード処理部44は、フェッチした命令語を各フィールドに分解し、オペランド情報を求める。また、フェッチ・デコード処理部44は、命令関数記憶部24に基づいて、この命令語の命令に相当する命令エミュレーション関数のアドレスを取得する。そして、フェッチ・デコード処理部44は、フェッチした命令語の命令アドレス、デコードの結果として得られるオペランド情報及び命令エミュレーション関数のアドレスを含む命令情報をエミュレーション処理部45に通知する。
エミュレーション処理部45は、命令情報に基づいて、エミュレーション処理を実行する。具体的には、エミュレーション処理部45は、命令アドレス合致判定部43又はフェッチ・デコード処理部44から命令情報を取得する。また、エミュレーション処理部45は、命令情報に含まれる命令関数アドレス25cのアドレスが示す命令エミュレーション関数を呼び出す。そして、エミュレーション処理部45は、命令情報に含まれる命令アドレス25aが示す命令のエミュレーション処理を実行する。このエミュレーション処理は、命令エミュレーション関数によって命令情報に含まれるオペランド情報25bを用いて実行される。
[実施例2に係る命令エミュレーション処理のシーケンス]
次に、エミュレーション装置2の命令エミュレーション処理のシーケンスを、図5を参照して説明する。図5は、実施例2に係るエミュレーション装置の処理のシーケンス図である。なお、図5では、1個の命令エミュレーション処理のシーケンスについて説明する。図5に示すように、エミュレーション装置2は、フェッチ・デコードCPU30及び命令実行CPU40を備えているものとする。
まず、フェッチ処理部32は、プログラムカウンタにしたがって、命令アドレスが示す命令語を命令列22からフェッチし、デコード処理部33は、フェッチした命令語をデコードする(ステップS41)。ここでは、フェッチ処理部32によってフェッチされた命令の命令アドレスを「命令アドレスA」として表すものとする。そして、デコード処理部33は、命令関数記憶部24に基づいて、この命令語の命令に相当する命令エミュレーション関数のアドレスを取得する(ステップS42)。そして、デコード処理部33は、フェッチされた命令語の命令アドレスA、デコードの結果として得られるオペランド情報及び命令エミュレーション関数アドレスを含む命令情報を、フェッチ命令情報記憶部25を通じて命令実行CPU40に通知する(ステップS43)。
次に、命令実行CPU40では、命令情報の通知待ちを行い(ステップS44)、命令情報を取得する(ステップS45)。そして、命令アドレス通知部42は、前命令のエミュレーション処理の実行結果から得られる現命令アドレスをフェッチ・デコードCPU30に通知する(ステップS46)。具体的には、命令アドレス通知部42は、前命令のエミュレーション処理の実行結果から得られる実効アドレス、すなわち直近に実行される現命令の命令アドレスである現命令アドレスを命令アドレス記憶部26に記憶する。ここでは、現命令アドレスを「命令アドレスB」として表すものとする。
続いて、命令アドレス合致判定部43は、前命令のエミュレーションの実行結果から得られる命令アドレスBがデコードされた命令の命令アドレスAと合致するか否かを判定する(ステップS47)。そして、命令アドレスBが命令アドレスAと合致する場合には(ステップS47Yes)、命令アドレス合致判定部43は、命令アドレスBの命令が既にフェッチされていると判断し、エミュレーション処理を実行させるためにステップS50に移行する。
命令アドレスBが命令アドレスAと合致しない場合には(ステップS47No)、命令アドレス合致判定部43は、前命令が分岐命令等であると判断し、命令アドレスBのフェッチ及びデコード処理を実行させるためにステップS48に移行する。そして、フェッチ・デコード処理部44は、命令アドレスBが示す命令語を命令列22からフェッチし、フェッチした命令語をデコードする(ステップS48)。そして、フェッチ・デコード処理部44は、命令関数記憶部24に基づいて、この命令語の命令に相当する命令エミュレーション関数のアドレスを取得する(ステップS49)。
続いて、エミュレーション処理部45は、命令情報に含まれる命令関数アドレス25cのアドレスが示す命令エミュレーション関数を呼び出す(ステップS50)。そして、エミュレーション処理部45は、命令情報に含まれる命令アドレス25aの命令アドレスB、すなわち現命令アドレスが示す現命令のエミュレーション処理を実行する(ステップS51)。
一方、フェッチ・デコードCPU30では、次命令アドレス判定部34が前命令のエミュレーションの実行結果から得られる現命令アドレスの通知待ちを行なっている(ステップS52)。そして、次命令アドレス判定部34が現命令アドレスである命令アドレスBを取得すると(ステップS53)、デコードされた命令の命令アドレスAが命令アドレスBと合致するか否かを判定する(ステップS54)。
命令アドレスAが命令アドレスBと合致すると判定された場合には(ステップS54Yes)、次命令アドレス判定部34は、命令アドレスAに、当該命令アドレスAが示す命令の命令長を加算し、次命令アドレスを算出する(ステップS55)。具体的には、次命令アドレス判定部34は、フェッチ命令情報記憶部25に記憶された命令情報に基づいて、命令アドレスAに当該命令アドレスAが示す命令の命令長を加算し、次命令アドレスを算出する。
命令アドレスAが命令アドレスBと合致しないと判定された場合には(ステップS54No)、次命令アドレス判定部34は、命令アドレスBの命令がフェッチされていないと判断する。そして、次命令アドレス判定部34は、命令アドレスBに、当該命令アドレスBが示す命令の命令長を加算し、次命令アドレスを算出する(ステップS56)。具体的には、次命令アドレス判定部34は、命令アドレスBが示す命令語を命令列22からフェッチし、この命令語の命令長を求める。そして、次命令アドレス判定部34は、命令アドレスBに、求めた命令長を加算して得られる次命令アドレスを算出する。
そして、次命令アドレス判定部34は、算出した次命令アドレスをプログラムカウンタに保持し、フェッチ処理部32及びデコード処理部33が、次命令アドレスに関するフェッチ処理及びデコード処理を実行することとなる(ステップS57)。
[実施例2の効果]
上記実施例2によれば、命令デコード部31の次命令アドレス判定部34は、デコードされた命令の命令アドレスが命令アドレス通知部45によって通知された現命令アドレスと合致するか否かを判定する。そして、デコードされた命令の命令アドレスが現命令アドレスと合致しない場合には、次命令アドレス判定部34は、現命令アドレスが示す命令に後続する命令の命令アドレスを算出する。
かかる構成によれば、デコードされた命令の命令アドレスが現命令アドレスと合致しない場合には、現命令アドレスを実行結果とした前命令が分岐命令等であると判断し、現命令アドレスが示す命令に後続する命令の命令アドレスを算出する。この結果、エミュレーション実行部41で現命令アドレスに関する現命令のエミュレーション処理が実行される一方で、命令デコード部31では、算出した命令アドレス(現命令に後続する命令を示す命令アドレス)に関するフェッチ処理及びデコード処理を実行させることができるので、全体のエミュレーション処理を高速化できる。
また、仮に現命令アドレスに関する現命令が分岐命令であっても、次命令アドレス判定部34は、現命令アドレスが示す命令に後続する命令の命令アドレスを算出する。このため、次命令アドレス判定部34では、算出した命令アドレスに関するフェッチ処理及びデコード処理を実行させるので、現命令のエミュレーションで分岐に失敗したときデコード結果を活用することで、全体のエミュレーション処理を高速化できる。つまり、エミュレーション処理が分岐命令であることにより処理速度が低下することを抑制できる。なお、分岐の失敗とは、分岐命令のエミュレーションを実行したが、分岐できなかった場合をいう。
ところで、実施例2のエミュレーション装置2では、分岐命令等により前命令のエミュレート結果から得られる現命令アドレスが前命令に後続する命令アドレスと合致しない場合であっても、命令エミュレーション処理を高速に実行できる場合について説明した。しかしながら、エミュレーション処理自体の処理量が軽量な場合には、エミュレーション処理を実行する命令実行CPUに待ち時間が発生し、命令エミュレーション処理を高速に実行できない。そこで、本実施例3では、エミュレーション処理自体の処理量が軽量な場合であっても、命令エミュレーション処理を高速に実行できる場合を説明する。ここで、命令実行CPUの待ち時間発生時における従来技術と実施例3の処理とを、図6を参照して比較する。
図6は、命令実行CPUの待ち時間発生時における従来技術と実施例3の処理とを比較した説明図である。図6(a)では、従来の処理のシーケンス図であり、図6(b)では、本実施例3の処理のシーケンス図である。なお、括弧内のアルファベットは、命令アドレスを示すものとする。また、命令アドレスBの命令が、エミュレーション処理自体の処理量が軽量な命令であるものとする。
図6(a)に示すように、従来の処理では、命令実行CPU40が命令アドレスBの命令のエミュレーション処理を実行する(ステップS6a)。このとき、フェッチ・デコードCPU30が命令アドレスBの命令に後続する命令アドレスCの命令をフェッチし、デコードする(ステップS6b)。このとき、命令アドレスBの命令のエミュレーション処理は、軽量であるので、命令アドレスCに関するフェッチ・デコード処理の早い時点で終了する。そして、命令実行CPU40では、フェッチ・デコードCPU30における命令アドレスCの命令のフェッチ・デコード処理が終了するまで待機することとなる(ステップS6c)。したがって、エミュレーション処理自体の処理が軽量な命令がある場合には、命令実行CPU40に長時間の待ち時間が発生するので、エミュレーション装置2は、命令エミュレーション処理を高速に実行できない。
一方、図6(b)に示すように、命令実行CPU40では、命令アドレスBが示す軽量な命令に後続する命令の命令アドレスCをフェッチ・デコードCPU30に通知する(ステップS6d)。そして、フェッチ・デコードCPU30では、命令実行CPU40から通知された命令アドレスCが示す命令に後続する命令アドレスDの命令をフェッチし、デコードする(ステップS6e)。このとき、命令実行CPU40では、命令アドレスBが示す命令のエミュレーション処理を実行する(ステップS6f)。そして、引き続き、命令アドレスBに後続する命令アドレスCが示す命令のフェッチ・デコード処理を実行し(ステップS6g)、当該命令のエミュレーション処理を実行する(ステップS6h)。したがって、エミュレーション処理自体の処理が軽量な命令がある場合であっても、軽量な命令に後続する命令まで纏めてエミュレーション処理を実行するので、エミュレーション装置2は、命令エミュレーション処理を高速に実行できる。
そこで、本実施例3では、エミュレーション装置2が、エミュレーション処理自体の処理量が軽量な命令があっても、命令エミュレーション処理を高速に実行できる場合を説明する。
[実施例3に係るエミュレーション装置の構成]
図7は、実施例3に係るエミュレーション装置の構成を示す機能ブロック図である。なお、図3に示すエミュレーション装置と同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例2と実施例3とが異なるところは、エミュレーション実行部41Aの命令アドレス合致判定部43を削除し、命令実行時間判定部51Aを追加した点にある。さらに、実施例2と実施例3とが異なるところは、エミュレーション実行部41Aのフェッチ・デコード処理部44A、エミュレーション処理部45A及び命令アドレス通知部42Aを変更した点にある。
命令実行時間判定部51Aは、デコードされた命令のエミュレーションの開始から後続する命令のエミュレーションの終了までに要するエミュレーション実行時間が命令のフェッチ及びデコード処理に要するデコード実行時間に近似しているか否かを判定する。具体的には、命令実行時間判定部51Aは、フェッチ命令情報記憶部25から命令情報を読み出す。また、命令実行時間判定部51Aは、命令情報に関わる命令及びこの命令に後続する命令が軽量な命令であるか否かを、命令の種類に基づいて判定する。そして、命令実行時間判定部51Aは、判定結果を命令アドレス通知部42A及びフェッチ・デコード処理部44Aに通知する。
例えば、1命令のフェッチ及びデコード処理に要する平均実行時間と、各命令の平均実行時間を、あらかじめ記憶部(図示しない)に記憶しておく。また、命令実行時間判定部51Aは、命令情報に関わる命令の平均実行時間及びこの命令に後続する命令の平均実行時間をそれぞれ記憶部から読み出す。また、命令実行時間判定部51Aは、命令のフェッチ及びデコード処理に要する平均実行時間を記憶部から読み出す。そして、命令実行時間判定部51Aは、命令情報に関わる命令の平均実行時間とこの命令に後続する命令の平均実行時間とを加算して得られた値が命令のフェッチ及びデコード処理に要する平均実行時間に近似しているか否かを判定する。
命令アドレス通知部42Aは、命令実行時間判定部51Aによって判定された判定結果に基づいて、命令アドレスを命令デコード部31に通知する。具体的には、命令アドレス通知部42Aは、命令実行時間判定部51Aによる判定の結果、エミュレーション実行時間がデコード実行時間に近似している場合には、デコードされた命令に後続する命令の命令アドレスを命令アドレス記憶部26に記憶する。一方、命令アドレス通知部42Aは、命令実行時間判定部51Aによる判定の結果、エミュレーション実行時間がデコード実行時間に近似していない場合には、デコードされた命令が示す命令アドレスを命令アドレス記憶部26に記憶する。
エミュレーション処理部45Aは、命令情報に基づいて、エミュレーション処理を実行する。具体的には、エミュレーション処理部45Aは、命令アドレス通知部42Aによる命令アドレスの通知後、命令実行時間判定部51Aによって読み出された命令情報を取得する。また、エミュレーション処理部45Aは、フェッチ・デコード処理部44Aによる処理後、フェッチ・デコード処理部44Aによって作成された命令情報を取得する。また、エミュレーション処理部45Aは、取得した命令情報に含まれる命令関数アドレス25cのアドレスが示す命令エミュレーション関数を呼び出す。そして、エミュレーション処理部45Aは、命令情報に含まれる命令アドレス25aが示す命令のエミュレーション処理を実行する。
フェッチ・デコード処理部44Aは、命令実行時間判定部51Aによって判定された判定結果に基づいて、デコードされた命令に後続する命令アドレスの命令を命令列22からフェッチする。具体的には、フェッチ・デコード処理部44Aは、命令実行時間判定部51Aによる判定の結果、エミュレーション実行時間がデコード実行時間に近似している場合には、デコードされた命令に後続する命令を命令列22からフェッチする。また、フェッチ・デコード処理部44Aは、フェッチした命令語を各フィールドに分解し、オペランド情報を求める。また、フェッチ・デコード処理部44Aは、命令関数記憶部24に基づいて、この命令語の命令に相当する命令エミュレーション関数のアドレスを取得する。そして、フェッチ・デコード処理部44Aは、フェッチした命令語の命令アドレス、デコードの結果として得られるオペランド情報及び命令エミュレーション関数のアドレスを含む命令情報を作成し、該作成した命令情報をエミュレーション処理部45Aに通知する。一方、フェッチ・デコード処理部44Aは、命令実行時間判定部51Aによる判定の結果、エミュレーション実行時間がデコード実行時間に近似していない場合には、フェッチ及びデコード処理を実行しないものとする。
[実施例3に係る命令エミュレーション処理のシーケンス]
次に、エミュレーション装置3の命令エミュレーション処理のシーケンスを、図8を参照して説明する。図8は、実施例3に係るエミュレーション装置の処理のシーケンス図である。なお、図8では、1個の命令エミュレーション処理のシーケンスについて説明する。図8に示すように、エミュレーション装置3は、フェッチ・デコードCPU30及び命令実行CPU40を備えているものとする。
まず、フェッチ処理部32は、プログラムカウンタにしたがって、命令アドレスが示す命令語を命令列22からフェッチし、デコード処理部33は、フェッチした命令語をデコードする(ステップS61)。ここでは、フェッチ処理部32によってフェッチされた命令の命令アドレスを「命令アドレスB」として表すものとする。そして、デコード処理部33は、命令関数記憶部24に基づいて、この命令語の命令に相当する命令エミュレーション関数のアドレスを取得する(ステップS62)。そして、デコード処理部33は、フェッチされた命令語の命令アドレスB、デコードの結果得られるオペランド情報及び命令エミュレーション関数アドレスを含む命令情報を、フェッチ命令情報記憶部25を通じて命令実行CPU40に通知する(ステップS63)。
次に、命令実行CPU40では、命令実行時間判定部51Aは、命令情報の通知待ちを行い(ステップS64)、命令情報を取得する(ステップS65)。そして、命令実行時間判定部51Aは、取得した命令情報に関わる命令の開始から後続する命令の終了までのエミュレーション実行時間がフェッチ及びデコード処理のデコード実行時間に近似しているか否かを判定する(ステップS66)。ここでは、命令情報に含まれる命令アドレスBが示す命令に後続する命令の命令アドレスを「命令アドレスC」として表すものとする。例えば、命令実行時間判定部51Aは、各命令の平均実行時間をあらかじめ記憶部(図示しない)に記憶しておき、命令情報に関わる命令の平均実行時間及びこの命令に後続する命令の平均実行時間を、それぞれ記憶部から読み出す。また、命令実行時間判定部51Aは、1命令のフェッチ及びデコード処理に要する平均実行時間をあらかじめ記憶部(図示しない)に記憶しておき、1命令のフェッチ及びデコード処理に要する平均実行時間を記憶部から読み出す。そして、命令実行時間判定部51Aは、命令情報に関わる命令の平均実行時間とこの命令に後続する命令の平均実行時間とを加算して得られた値が1命令のフェッチ及びデコード処理に要する平均実行時間に近似しているか否かを判定する。
そして、エミュレーション実行時間がデコード実行時間に近似していない場合には(ステップS66No)、命令アドレス通知部42Aは、命令情報に含まれる現命令アドレスBを、命令アドレス記憶部26を通じて命令デコード部11に通知する(ステップS67)。一方、エミュレーション実行時間がデコード実行時間に近似している場合(ステップS66Yes)、命令実行時間判定部51Aは、命令情報に関わる命令に後続する命令のフェッチ及びデコード処理を実行させるべく、フラグをONに設定する(ステップS68)。そして、命令アドレス通知部42Aは、命令情報に関わる命令に後続する命令の命令アドレスCを、命令アドレス記憶部26を通じて命令デコード部11に通知する(ステップS69)。
続いて、エミュレーション処理部45Aは、命令情報に含まれる命令関数アドレス25cのアドレスが示す命令エミュレーション関数を呼び出す(ステップS70)。そして、エミュレーション処理部45Aは、命令情報に含まれる命令アドレス25aの命令アドレスBが示す命令のエミュレーション処理を実行する(ステップS71)。
続いて、フェッチ・デコード処理部44Aは、命令実行時間判定部51Aによって設定されたフラグがONであるか否かを判定する(ステップS72)。そして、フラグがONでないと判定された場合(ステップS72No)、フェッチ・デコード処理部44Aは、フェッチ及びデコード処理を実行しないで、ステップS76に移行する。
一方、フラグがONであると判定された場合(ステップ72Yes)、フェッチ・デコード処理部44Aは、命令情報に関わる命令に後続する命令アドレスCの命令語を命令列22からフェッチし、フェッチした命令語をデコードする(ステップS73)。
続いて、エミュレーション処理部45Aは、命令アドレスCが示す命令エミュレーション関数を呼び出す(ステップS74)。そして、エミュレーション処理部45Aは、命令アドレスCが示す命令のエミュレーション処理を実行する(ステップS75)。その後、命令実行時間判定部51Aは、フェッチ・デコードCPU30からの命令情報の通知待ちを行う(ステップS76)。
一方、フェッチ・デコードCPU30では、次命令アドレス判定部34が、命令実行CPU40からの命令アドレスの通知待ちを行なっている(ステップS77)。そして、次命令アドレス判定部34が、命令実行CPU40から命令アドレスを取得すると(ステップS78)、デコードされた命令の命令アドレスBが、命令実行CPU40から取得された命令アドレスと合致するか否かを判定する(ステップS79)。なお、ここでは、命令アドレスBが命令実行CPU40から取得された命令アドレスと合致しない場合には、次命令アドレス判定部34は、命令アドレスBが示す命令に後続する命令を指す命令アドレスCを取得したものとする。
命令アドレスBが、取得された命令アドレスと合致する場合(ステップS79Yes)、次命令アドレス判定部34は、命令情報に基づいて、命令アドレスBに当該命令アドレスBが示す命令の命令長を加算し、次命令アドレスを算出する(ステップS80)。
一方、命令アドレスBが、取得された命令アドレスと合致しない場合(ステップS79No)、次命令アドレス判定部34は、取得された命令アドレスCに、当該命令アドレスCが示す命令の命令長を加算し、次命令アドレスを算出する(ステップS81)。具体的には、次命令アドレス判定部34は、命令アドレスCに関する命令情報がないので、命令アドレスCが示す命令語を命令列22からフェッチし、この命令語の命令長を求める。そして、次命令アドレス判定部34は、命令アドレスCに、求めた命令長を加算して得られる次命令アドレスを算出する。
そして、次命令アドレス判定部34は、算出した次命令アドレスをプログラムカウンタに保持し、フェッチ処理部32及びデコード処理部33が、後続する次命令アドレスに関するフェッチ処理及びデコード処理を実行する(ステップS82)こととなる。
[実施例3の効果]
上記実施例3によれば、命令実行CPU40では、デコードされた命令のエミュレーションの開始からこの命令に後続する命令のエミュレーションの終了までの実行時間が、フェッチ及びデコードに要する実行時間に近似しているか否かを判定する。そして、命令アドレス通知部45Aは、判定の結果、エミュレーション実行時間がデコード実行時間に近似している場合には、デコードされた命令に後続する命令の命令アドレスを命令デコード部31に通知する。
かかる構成によれば、エミュレーション実行時間がデコード実行時間に近似している場合には、デコードされた命令に後続する命令の次の命令のフェッチ及びデコード処理を実行できることとなる。そして、命令実行CPU40が、フェッチ及びデコード処理期間に、デコードされた命令及びこれに後続する命令のエミュレーション処理を纏めて実行すれば、デコードされた命令のエミュレーション処理後の待ち時間を短縮できる。この結果、エミュレーション装置3は、命令エミュレーション処理を高速化できる。
ところで、上記実施例3では、エミュレーション装置3は、エミュレーション処理自体の処理量が軽量な命令があっても、命令実行CPU40の待ち時間を短縮し、命令エミュレーション処理を高速に実行できる場合を説明した。しかしながら、エミュレーション装置3は、エミュレーション処理自体の処理量が重量な命令があっても、フェッチ・デコードCPU30の待ち時間を短縮し、命令エミュレーション処理を高速に実行するようにしても良い。そこで、エミュレーション処理自体の処理量が重量な場合であっても、命令エミュレーション処理を高速に実行できる場合を説明する。ここで、フェッチ・デコードCPU30の待ち時間発生時における従来技術と実施例3の変形例の処理とを、図9を参照して比較する。
図9は、フェッチ・デコードCPU30の待ち時間発生時における従来技術と実施例3の変形例の処理とを比較した説明図である。図9(a)では、従来の処理のシーケンス図であり、図9(b)では、本実施例3の変形例の処理のシーケンス図である。なお、括弧内のアルファベットは、命令アドレスを示すものとする。また、命令アドレスBの命令が、エミュレーション処理量の重量な命令であるものとする。
図9(a)に示すように、従来の処理では、フェッチ・デコードCPU30が、命令アドレスBの命令のフェッチ及びデコード処理を実行し(ステップS9a)、処理結果である命令情報を、命令情報領域を通じて命令実行CPU40に通知する。続いて、フェッチ・デコードCPU30が、命令アドレスBの命令に後続する命令アドレスCの命令のフェッチ及びデコード処理を実行する(ステップS9b)。このとき、命令実行CPU40が、命令情報に基づいて、命令アドレスBに関するエミュレーション処理を実行する(ステップS9c)。命令アドレスBの命令のエミュレーション処理は重量であるので、フェッチ・デコードCPU30では、命令アドレスCに関する処理が終了しても、命令実行CPU40におけるエミュレーション処理が終了するまで長時間待機することとなる(ステップS9d)。したがって、エミュレーション処理自体の処理量が重量な命令がある場合には、フェッチ・デコードCPU30に長時間の待ち時間が発生するので、命令エミュレーション処理が滞ることとなり、エミュレーション装置3は、当該処理を高速に実行できない。
一方、図9(b)に示すように、実施例3の変形例の処理では、命令情報領域1〜4が複数存在する。フェッチ・デコードCPU30が、命令アドレスBの命令のフェッチ及びデコード処理を実行し(ステップS9e)、処理結果である命令情報を、命令情報領域2を通じて命令実行CPU40に通知する。そして、命令実行CPU40が、命令情報領域2に記憶された命令情報に基づいて、命令アドレスBに関するエミュレーション処理を実行する(ステップS9f)。このとき、フェッチ・デコードCPU30が、命令アドレスBの命令に後続する命令アドレスCの命令のフェッチ及びデコード処理を実行し(ステップS9g)、処理結果である命令情報を、命令情報領域3を通じて命令実行CPU40に通知する。そして、引き続き、フェッチ・デコードCPU30では、命令アドレスBが示す命令のエミュレーション処理の終了を待たないで、命令アドレスCに後続する命令アドレスDの命令のフェッチ・デコード処理を実行する(ステップS9h)。そして、フェッチ・デコードCPU30では、処理結果である命令情報を、命令情報領域4を通じて命令実行CPU40に通知する。
命令実行CPU40では、命令アドレスBの命令のエミュレーション処理を実行後、命令情報領域3に記憶された命令情報に基づいて、命令アドレスCに関するエミュレーション処理を実行する(ステップS9i)。そして、引き続き、命令実行CPU40では、命令情報領域4に記憶された命令情報に基づいて、命令アドレスDに関するエミュレーション処理を実行する(ステップS9j)。このように、命令情報領域を複数備えることで、エミュレーション処理自体の処理量が重量な命令がある場合であっても、フェッチ・デコードCPU30に長時間の待ち時間が発生しないので、ミュレーション装置3は、当該処理を高速に実行できる。
ところで、実施例2に係るエミュレーション装置2では、エミュレート結果から得られる現命令アドレスをフェッチ・デコードCPU30に通知し、現命令アドレスの命令に後続する命令のアドレスを算出する場合を説明した。エミュレーション装置2は、これに限定されず、エミュレート結果から得られる現命令アドレスをフェッチ・デコードCPU30に通知し、現命令アドレスの命令が分岐命令である場合、現命令アドレスの命令に後続する命令のアドレスを予測しても良い。
そこで、実施例4では、エミュレーション装置4が、エミュレート結果から得られる現命令アドレスをフェッチ・デコードCPU30に通知し、現命令アドレスの命令が分岐命令である場合、現命令アドレスの命令に後続する命令のアドレスを予測する。
[実施例4に係るエミュレーション装置の構成]
図10は、実施例4に係るエミュレーション装置の構成を示す機能ブロック図である。なお、図4に示すエミュレーション装置と同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例2と実施例4とが異なるところは、命令デコード部31Bに分岐命令判定部61B及び次命令アドレス予測部62Bを追加し、次命令アドレス判定部34Bを変更した点にある。また、実施例2と実施例4とが異なるところは、分岐実績記憶部63を追加した点にある。さらに、実施例2と実施例4とが異なるところは、エミュレーション実行部41Bに分岐実績更新部64Bを追加した点にある。
分岐実績記憶部63は、分岐命令における分岐実績を記憶する。ここで、分岐実績記憶部63について図11を参照しながら説明する。図11は、分岐実績記憶部のデータ構造の一例を示す図である。図11に示すように、分岐実績記憶部63は、分岐先アドレス63b、分岐成功回数63c及び分岐失敗回数63dを分岐命令アドレス63aに対応付けて記憶する。
分岐命令アドレス63aは、分岐命令を示す命令アドレスである。分岐先アドレス63bは、分岐命令が分岐に成功した際に制御が移る命令アドレスである。分岐成功回数63cは、分岐命令を実行した結果、分岐が成功した回数である。分岐失敗回数63dは、分岐命令を実行した結果、分岐が失敗した回数である。
分岐実績更新部64Bは、現命令が分岐命令である場合に、現命令の分岐実績を更新する。具体的には、分岐実績更新部64Bは、現命令が分岐命令である場合に、現命令のエミュレーションがされた結果に基づいて、分岐が成功したか否かを判定する。そして、分岐実績更新部64Bは、分岐が成功したと判定した場合には、現命令を示す現命令アドレスが分岐命令アドレス63aと合致する、分岐実績記憶部63の分岐成功回数63cを1加算する。一方、分岐実績更新部64Bは、分岐が失敗したと判定した場合には、現命令を示す現命令アドレスが分岐命令アドレス63aと合致する、分岐実績記憶部63の分岐失敗回数63dを1加算する。
なお、分岐実績更新部64Bは、現命令を示す現命令アドレスが分岐実績記憶部63の分岐命令アドレス63aと合致しない場合には、分岐実績記憶部63に1レコードを追加する。すなわち、分岐実績更新部64Bは、分岐命令アドレス63aを現命令アドレスとし、分岐先アドレス63bを現命令のオペランドから算出した分岐先アドレスとし、分岐成功回数63c及び分岐失敗回数63dを「0」とするレコードを追加する。そして、分岐実績更新部64Bは、分岐実績の判定結果に基づいて、分岐実績記憶部63を更新する。
次命令アドレス判定部34Bは、デコードされた命令の命令アドレスが前命令のエミュレーションの実行結果から得られる現命令アドレスと合致するか否かを判定する。具体的には、次命令アドレス判定部34Bは、デコード処理部33によってフェッチ命令情報記憶部25に記憶された命令情報を、デコード処理部33から取得する。また、次命令アドレス判定部34Bは、命令アドレス記憶部26から直近にエミュレートされる命令の命令アドレスである現命令アドレスを読み出す。また、次命令アドレス判定部34Bは、命令情報に含まれる命令アドレス25aが現命令アドレスと合致するか否かを判定する。そして、次命令アドレス判定部34Bは、命令アドレス25aが現命令アドレスと合致しない場合には、前命令のエミュレーションの実行結果から得られる命令アドレスが所定の条件により変更されたと判断する。そして、次命令アドレス判定部34Bは、現命令アドレスが示す命令に後続する命令の命令アドレスを算出する。なお、所定の条件とは、例えば、現命令アドレスが実行結果となる前命令が分岐命令であった場合や割り込み処理があった場合等であり、これらの場合に実効アドレスが変更されるのである。
分岐命令判定部61Bは、デコードされた命令の命令アドレスが、現命令アドレスと合致すると判定された場合には、当該命令が分岐命令であるか否かを判定する。また、分岐命令判定部61Bが、デコードされた命令が分岐命令であると判定された場合には、当該命令の次命令のアドレス予測を次命令アドレス予測部62Bに依頼する。一方、分岐命令判定部61Bが、デコードされた命令が分岐命令でないと判定された場合には、命令情報に含まれる命令アドレス25aのアドレスが示す命令に後続する命令の命令アドレスを算出する。そして、分岐命令判定部61Bは、算出した命令アドレスをプログラムカウンタに保持する。
次命令アドレス予測部62Bは、デコードされた命令が分岐命令である場合には、分岐実績記憶部63に基づいて、当該命令に後続する次命令の命令アドレスを予測する。具体的には、次命令アドレス予測部62Bは、分岐命令判定部61Bからデコードされた命令の次命令のアドレス予測依頼を取得すると、当該命令の命令アドレスと合致するレコードを分岐実績記憶部63から読み出す。また、次命令アドレス予測部62Bは、読み出したレコードの分岐成功回数63cが分岐失敗回数63dより大きい場合には、分岐命令の分岐が成功する可能性が高いと判断し、分岐実績記憶部63の分岐先アドレス63bを次命令アドレスとして予測する。一方、次命令アドレス予測部62Bは、読み出したレコードの分岐成功回数63cが分岐失敗回数63d以下である場合には、分岐命令の分岐が失敗する可能性が高いと判断し、デコードされた命令に後続する命令のアドレスを次命令アドレスとして予測する。また、次命令アドレス予測部62Bは、デコードされた命令の命令アドレスと合致するレコードを分岐実績記憶部63から読みだせなかった場合には、分岐先を予測できないので、デコードされた命令に後続する命令のアドレスを次命令アドレスとして予測する。
[実施例4に係る命令エミュレーション処理のシーケンス]
次に、エミュレーション装置4の命令エミュレーション処理のシーケンスを、図12を参照して説明する。図12は、実施例4に係るエミュレーション装置の処理のシーケンス図である。なお、図12に示すように、エミュレーション装置4は、フェッチ・デコードCPU30及び命令実行CPU40を備えているものとする。
まず、フェッチ処理部32は、プログラムカウンタにしたがって、命令アドレスが示す命令語を命令列22からフェッチし、デコード処理部33は、フェッチした命令語をデコードする(ステップS91)。ここでは、フェッチ処理部32によってフェッチされた命令の命令アドレスを「命令アドレスA」として表すものとする。そして、デコード処理部33は、命令関数記憶部24に基づいて、この命令語の命令に相当する命令エミュレーション関数のアドレスを取得する(ステップS92)。そして、デコード処理部33は、フェッチされた命令語の命令アドレスA、デコードの結果得られるオペランド情報及び命令エミュレーション関数アドレスを含む命令情報を、フェッチ命令情報記憶部25を通じて命令実行CPU40に通知する(ステップS93)。
次に、命令実行CPUでは、命令情報の通知待ちを行い、命令情報を取得する(ステップS94、95)。そして、命令アドレス通知部42は、前命令のエミュレーション処理の実行結果から得られる現命令アドレスを、命令アドレス記憶部26を通じてフェッチ・デコードCPU30に通知する(ステップS96)。ここでは、現命令アドレスを「命令アドレスA’」として表すものとする。
一方、フェッチ・デコードCPU30では、次命令アドレス判定部34Bが前命令のエミュレーションの実行結果から得られる現命令アドレスの通知待ちを行なっている(ステップS97)。そして、次命令アドレス判定部34Bが現命令アドレスA’を取得すると(ステップS98)、デコードされた命令の命令アドレスAが現命令アドレスA’と合致するか否かを判定する(ステップS99)。
命令アドレスAが現命令アドレスA’と合致しないと判定された場合には(ステップS99No)、次命令アドレス判定部34Bは、現命令アドレスA’に、当該命令アドレスA’が示す命令の命令長を加算し、次命令アドレスを算出する(ステップS100)。
命令アドレスAが現命令アドレスA’と合致すると判定された場合には(ステップS99Yes)、分岐命令判定部61Bは、命令アドレスAの命令が分岐命令であるか否かを判定する(ステップS101)。命令アドレスAの命令が分岐命令でないと判定された場合には(ステップS101No)、分岐命令判定部61Bは、現命令アドレスAに、命令アドレスAが示す命令の命令長を加算し、次命令アドレスを算出する(ステップS102)。
一方、命令アドレスAの命令が分岐命令であると判定された場合には(ステップS101Yes)、次命令アドレス予測部62Bは、分岐実績記憶部63に基づいて、命令アドレスAの命令に後続する次命令の命令アドレスを予測する(ステップS103)。具体的には、次命令アドレス予測部62Bは、分岐命令アドレス63aのアドレスが命令アドレスAと合致するレコードを分岐実績記憶部63から読み出す。そして、次命令アドレス予測部62Bは、読み出したレコードの分岐成功回数63cが分岐失敗回数63dより大きい場合には、分岐が成功する可能性が高いと判断し、分岐先アドレス63bを次命令アドレスとして予測する。また、次命令アドレス予測部62Bは、読み出したレコードの分岐成功回数63cが分岐失敗回数63d以下である場合には、分岐が失敗する可能性が高いと判断し、命令アドレスAの命令に後続する命令のアドレスを次命令アドレスとして予測する。また、次命令アドレス予測部62Bは、命令アドレスAと合致するレコードを分岐実績記憶部63から読みだせなかった場合には、分岐先を予測できないので、命令アドレスAの命令に後続する命令のアドレスを次命令アドレスとして予測する。
続いて、フェッチ処理部32及びデコード処理部33が、予測した次命令アドレスに関するフェッチ処理及びデコード処理を実行する(ステップS104)。ここでは、予測した次命令アドレスを「命令アドレスB」として表すものとする。そして、デコード処理部33は、命令アドレスBの命令に相当する命令エミュレーション関数のアドレスを取得し(ステップS105)、命令アドレスBに関する命令情報を命令実行CPU40に通知する(ステップS106)。
一方、実行命令CPU40では、現命令アドレスA’をフェッチ・デコードCPU30に通知した後、命令アドレス合致判定部43は、前命令のエミュレーションの実行結果から得られる命令アドレスA’が命令アドレスAと合致するか否かを判定する(ステップS107)。そして、命令アドレスA’が命令アドレスAと合致する場合には(ステップS107Yes)、命令アドレス合致判定部43は、前命令が分岐命令等でないと判断し、命令情報を用いたエミュレーション処理を実行させるためにステップS110に移行する。
命令アドレスA’が命令アドレスAと合致しない場合には(ステップS107No)、前命令が分岐命令等であると判断し、フェッチ・デコード処理部44は、命令アドレスA’のフェッチ及びデコード処理を実行する(ステップS108)。そして、フェッチ・デコード処理部44は、命令関数記憶部24に基づいて、命令アドレスA’の命令に相当する命令エミュレーション関数のアドレスを取得し(ステップS109)、命令情報を作成する。
続いて、エミュレーション処理部45は、命令情報に含まれる命令関数アドレス25cのアドレスが示す命令エミュレーション関数を呼び出し(ステップS110)、現命令アドレスA’が示す現命令のエミュレーション処理を実行する(ステップS111)。ここで、現命令が分岐命令の場合には、分岐命令のエミュレーション処理が実行される。
続いて、命令実行CPU40では、命令情報の通知待ちを行い、次命令アドレスBを含む命令情報を取得する。(ステップS112、113)。そして、分岐実績更新部64Bは、現命令アドレスA’の現命令が分岐命令である場合に、現命令の分岐実績を更新する(ステップS114)。具体的には、分岐実績更新部64Bは、現命令アドレスA’の現命令が分岐命令である場合に、現命令のエミュレーションがされた結果に基づいて、分岐が成功したか否かを判定する。そして、分岐実績更新部64Bは、分岐が成功したと判定した場合には、現命令アドレスA’が分岐命令アドレス63aと合致する、分岐実績記憶部63の分岐成功回数63cを1加算する。一方、分岐実績更新部64Bは、分岐が失敗したと判定した場合には、現命令アドレスA’が分岐命令アドレス63aと合致する、分岐実績記憶部63の分岐失敗回数63dを1加算する。
[実施例4の効果]
上記実施例4によれば、分岐命令判定部61は、次命令アドレス判定部34によってデコードされた命令の命令アドレスが命令アドレス通知部42によって通知された現命令アドレスと合致すると判定された場合には、当該命令が分岐命令であるか否かを判定する。そして、次命令アドレス予測部62は、分岐命令判定部61による判定の結果、現命令アドレスの命令が分岐命令である場合には、当該命令に後続する次命令の命令アドレスを予測する。
かかる構成によれば、分岐命令である現命令アドレスの命令のエミュレーション処理が実行されても、エミュレーション処理の実行結果から得られる命令アドレスの命令を先取り的にデコードさせることが可能となる。この結果、現命令アドレスの命令が分岐命令であっても、エミュレーション装置4は、分岐命令に後続している命令を無条件にフェッチする場合に生じるフェッチ及びデコード処理の無駄を軽減できる。さらに、現命令アドレスの命令が分岐命令である場合に、エミュレーション装置4は、分岐命令に後続している命令を無条件にフェッチする場合に生じる命令実行CPU40側でのフェッチ及びデコード処理のオーバヘッドを削減できる。
なお、次命令アドレス予測部62Bは、デコードされた命令が無条件分岐命令である場合には、分岐実績記憶部63を用いないで、デコードによって得られる分岐先アドレスを次命令アドレスとしても良い。これによって、次命令アドレス予測部62Bは、次命令アドレスを確実に求めることができ、無条件分岐命令に後続している命令を無条件にフェッチする場合に生じるフェッチ及びデコード処理の無駄を確実になくせる。
[プログラム等]
また、このエミュレーション装置2〜4は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した命令デコード部31、エミュレーション実行部41等の各機能を搭載することによって実現することができる。
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、フェッチ処理部32とデコード処理部33とを1個の部として統合しても良い。一方、デコード処理部33を、命令のデコードを実行する命令デコード部と命令エミュレーション関数のアドレスを取得する命令エミュレーション関数取得部とに分散しても良い。また、ターゲット記憶部21等の記憶部をエミュレーション装置2の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図13を用いて、図3に示したエミュレーション装置2と同様の機能を有するエミュレーション処理プログラムを実行するコンピュータの一例を説明する。
図13は、エミュレーション処理プログラムを実行するコンピュータを示す図である。図13に示すように、コンピュータ1000は、RAM(Random Access Memory)1010と、キャッシュ1020と、HDD1030と、ROM(Read Only Memory)1040と、CPUa(Central Processing Unit)1050、CPUb1060及びバス1070とを有する。RAM1010、キャッシュ1020、HDD1030、ROM1040、CPUa1050、CPUb1060は、バス1070によって接続されている。
ROM1040には、図3に示したエミュレーション装置2と同様の機能を発揮するエミュレーション処理プログラムが予め記憶されている。具体的には、ROM1040には、フェッチ・デコード処理プログラム1041と、エミュレーション処理プログラム1042とが記憶されている。
そして、CPUa1050は、フェッチ・デコード処理プログラム1041を読み出して実行する。CPUb1060は、エミュレーション処理プログラム1042を読み出して実行する。これにより、図13に示すように、フェッチ・デコード処理プログラム1041は、フェッチ・デコード処理プロセス1051になり、エミュレーション処理プログラム1042は、エミュレーション処理プロセス1061になる。そして、フェッチ・デコード処理プロセス1051及びエミュレーション処理プロセス1061は、ターゲットメモリ情報1031及び命令関数情報1032から読み出した情報等を適宜RAM1010上の自身に割り当てられた領域に展開する。そして、フェッチ・デコード処理プロセス1051及びエミュレーション処理プロセス1061は、この展開したデータ等に基づいて各種データ処理を実行する。なお、フェッチ・デコード処理プロセス1051は、図3に示した命令デコード部31に対応し、エミュレーション処理プロセス1061は、図3に示したエミュレーション実行部41に対応する。
また、HDD1030には、図13に示すようにターゲットメモリ情報1031及び命令関数情報1032が設けられる。ターゲットメモリ情報1031は、例えば、図3に示したターゲットメモリ記憶部21に記憶される各種データ(命令列22及びオペランド23)に対応する。命令関数情報1032は、例えば、図3に示した命令関数記憶部24に記憶されるデータに対応する。
なお、上述した各プログラム1041〜1042については、必ずしもROM1040に記憶させなくても良い。例えば、コンピュータ1000に挿入されるフレキシブルディスク(FD)、CD−ROM、MOディスク、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」にプログラム1041〜1042を記憶させても良い。又は、コンピュータ1000の内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」にプログラム1041〜1042を記憶させても良い。又は、公衆回線、インターネット、LAN、WANなどを介してコンピュータ1000に接続される「他のコンピュータ(又はサーバ)」にプログラム1041〜1042を記憶させても良い。そして、コンピュータ1000は、上述したフレキシブルディスクなどから各プログラムを読み出して実行するようにしても良い。
以上の実施例に係る実施形態に関し、さらに以下の付記を開示する。
(付記1)第1のプロセッサ及び第2のプロセッサを含む情報処理装置であって、
前記第1のプロセッサが、
受信した命令アドレスの次の命令アドレスを算出する算出部と、
算出した命令アドレスと、算出した命令アドレスに基づいて読み出した命令情報とを前記第2のプロセッサに送信する第1の送信部とを含み、
前記第2のプロセッサが、
実行した処理の実行結果に含まれる命令アドレスである第1の命令アドレスを前記第1のプロセッサに送信する第2の送信部と、
前記第1のプロセッサから受信した命令アドレスである第2の命令アドレスが、前記第1の命令アドレスと同じである場合に、前記第1のプロセッサから受信した命令情報に基づく処理を実行し、前記第2の命令アドレスが前記第1の命令アドレスと同じでない場合に、前記第1の命令アドレスに基づいて命令情報を読出し、読み出した命令情報に基づく処理を実行する実行部と、
を含むことを特徴とする情報処理装置。
(付記2)前記命令情報は、前記算出部が算出した前記命令アドレスに示される命令語に対応するエミュレート関数の格納先アドレスであること
を特徴とする付記1に記載の情報処理装置。
(付記3)前記実行部は、
前記第1のプロセッサから受信した前記第2の命令アドレスに関する命令の処理の開始から当該命令に後続する命令の処理の終了までに要する第1の実行時間が、命令アドレスに基づいて命令情報を読み出す処理の第2の実行時間に近似しているか否かを判定する命令実行時間判定部を有し、
前記第2の送信部は、
前記命令実行時間判定部による判定の結果、前記第1の実行時間が、前記第2の実行時間に近似している場合には、当該命令に後続する命令の命令アドレスを前記第1のプロセッサに送信すること
を特徴とする付記1又は付記2に記載の情報処理装置。
(付記4)複数の命令情報を記憶する命令情報記憶部を有し、
前記実行部は、
前記命令情報記憶部に記憶された複数の命令情報を用いて、順次エミュレーションを実行することを特徴とする付記1に記載の情報処理装置。
(付記5)前記第2の送信部によって送信された前記第1の命令アドレスの命令が分岐命令であるか否かを判定する分岐命令判定部と、
前記分岐命令判定部による判定の結果、前記第1の命令アドレスの命令が分岐命令である場合には、当該命令に後続する次の命令の命令アドレスを予測する次命令アドレス予測部と
を有することを特徴とする付記1又は付記2に記載の情報処理装置。
(付記6)第1のプロセッサ及び第2のプロセッサを含むコンピュータに、
受信した命令アドレスの次の命令アドレスを算出し、
算出した命令アドレスと、算出した命令アドレスに基づいて読み出した命令情報とを前記第2のプロセッサに送信し、
実行した処理の実行結果に含まれる命令アドレスである第1の命令アドレスを前記第1のプロセッサに送信し、
前記第1のプロセッサから受信した命令アドレスである第2の命令アドレスが、前記第1の命令アドレスと同じである場合に、前記第1のプロセッサから受信した命令情報に基づく処理を実行し、前記第2の命令アドレスが前記第1の命令アドレスと同じでない場合に、前記第1の命令アドレスに基づいて命令情報を読出し、読み出した命令情報に基づく処理を実行する
処理を実行させることを特徴とするエミュレーション処理プログラム。
(付記7)第1のプロセッサ及び第2のプロセッサを含む情報処理装置にエミュレーション処理を実行させるエミュレーション処理方法であって、
受信した命令アドレスの次の命令アドレスを算出し、
算出した命令アドレスと、算出した命令アドレスに基づいて読み出した命令情報とを前記第2のプロセッサに送信し、
実行した処理の実行結果に含まれる命令アドレスである第1の命令アドレスを前記第1のプロセッサに送信し、
前記第1のプロセッサから受信した命令アドレスである第2の命令アドレスが、前記第1の命令アドレスと同じである場合に、前記第1のプロセッサから受信した命令情報に基づく処理を実行し、前記第2の命令アドレスが前記第1の命令アドレスと同じでない場合に、前記第1の命令アドレスに基づいて命令情報を読出し、読み出した命令情報に基づく処理を実行する
ことを特徴とするエミュレーション処理方法。
1〜4 エミュレーション装置
11 命令デコード部
12 エミュレーション実行部
13 命令アドレス通知部
21 ターゲットメモリ記憶部
22 命令列
23 オペランド
24 命令関数記憶部
25 フェッチ命令情報記憶部
26 命令アドレス記憶部
30 フェッチ・デコードCPU
31、31B 命令デコード部
32 フェッチ処理部
33 デコード処理部
34、34B 次命令アドレス判定部
40 命令実行CPU
41、41A、41B エミュレーション実行部
42、42A 命令アドレス通知部
43 命令アドレス合致判定部
44、44A フェッチ・デコード処理部
45、45A エミュレーション処理部
51A 命令実行時間判定部
61B 分岐命令判定部
62B 次命令アドレス予測部
63 分岐実績記憶部
64B 分岐実績更新部

Claims (6)

  1. 第1のプロセッサ及び第2のプロセッサを含む情報処理装置であって、
    前記第1のプロセッサが、
    受信した命令アドレスの次の命令アドレスを算出する算出部と、
    算出した命令アドレスと、算出した命令アドレスに基づいて読み出した命令情報とを前記第2のプロセッサに送信する第1の送信部とを含み、
    前記第2のプロセッサが、
    実行した処理の実行結果に含まれる命令アドレスである第1の命令アドレスを前記第1のプロセッサに送信する第2の送信部と、
    前記第1のプロセッサから受信した命令アドレスである第2の命令アドレスが、前記第1の命令アドレスと同じである場合に、前記第1のプロセッサから受信した命令情報に基づく処理を実行し、前記第2の命令アドレスが前記第1の命令アドレスと同じでない場合に、前記第1の命令アドレスに基づいて命令情報を読出し、読み出した命令情報に基づく処理を実行する実行部と、
    を含むことを特徴とする情報処理装置。
  2. 前記命令情報は、前記算出部が算出した前記命令アドレスに示される命令語に対応するエミュレート関数の格納先アドレスであること
    を特徴とする請求項1に記載の情報処理装置。
  3. 前記実行部は、
    前記第1のプロセッサから受信した前記第2の命令アドレスに関する命令の処理の開始から当該命令に後続する命令の処理の終了までに要する第1の実行時間が、命令アドレスに基づいて命令情報を読み出す処理の第2の実行時間に近似しているか否かを判定する命令実行時間判定部を有し、
    前記第2の送信部は、
    前記命令実行時間判定部による判定の結果、前記第1の実行時間が、前記第2の実行時間に近似している場合には、当該命令に後続する命令の命令アドレスを前記第1のプロセッサに送信すること
    を特徴とする請求項1又は請求項2に記載の情報処理装置。
  4. 前記第2の送信部によって送信された前記第1の命令アドレスの命令が分岐命令であるか否かを判定する分岐命令判定部と、
    前記分岐命令判定部による判定の結果、前記第1の命令アドレスの命令が分岐命令である場合には、当該命令に後続する次の命令の命令アドレスを予測する次命令アドレス予測部と
    を有することを特徴とする請求項1又は請求項2に記載の情報処理装置。
  5. 第1のプロセッサ及び第2のプロセッサを含むコンピュータに、
    受信した命令アドレスの次の命令アドレスを算出し、
    算出した命令アドレスと、算出した命令アドレスに基づいて読み出した命令情報とを前記第2のプロセッサに送信し、
    実行した処理の実行結果に含まれる命令アドレスである第1の命令アドレスを前記第1のプロセッサに送信し、
    前記第1のプロセッサから受信した命令アドレスである第2の命令アドレスが、前記第1の命令アドレスと同じである場合に、前記第1のプロセッサから受信した命令情報に基づく処理を実行し、前記第2の命令アドレスが前記第1の命令アドレスと同じでない場合に、前記第1の命令アドレスに基づいて命令情報を読出し、読み出した命令情報に基づく処理を実行する
    処理を実行させることを特徴とするエミュレーション処理プログラム。
  6. 第1のプロセッサ及び第2のプロセッサを含む情報処理装置にエミュレーション処理を実行させるエミュレーション処理方法であって、
    受信した命令アドレスの次の命令アドレスを算出し、
    算出した命令アドレスと、算出した命令アドレスに基づいて読み出した命令情報とを前記第2のプロセッサに送信し、
    実行した処理の実行結果に含まれる命令アドレスである第1の命令アドレスを前記第1のプロセッサに送信し、
    前記第1のプロセッサから受信した命令アドレスである第2の命令アドレスが、前記第1の命令アドレスと同じである場合に、前記第1のプロセッサから受信した命令情報に基づく処理を実行し、前記第2の命令アドレスが前記第1の命令アドレスと同じでない場合に、前記第1の命令アドレスに基づいて命令情報を読出し、読み出した命令情報に基づく処理を実行する
    ことを特徴とするエミュレーション処理方法。
JP2010230015A 2010-10-12 2010-10-12 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法 Expired - Fee Related JP5533538B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010230015A JP5533538B2 (ja) 2010-10-12 2010-10-12 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法
US13/253,640 US8984263B2 (en) 2010-10-12 2011-10-05 Information processing device and emulation processing program and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010230015A JP5533538B2 (ja) 2010-10-12 2010-10-12 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法

Publications (2)

Publication Number Publication Date
JP2012083963A JP2012083963A (ja) 2012-04-26
JP5533538B2 true JP5533538B2 (ja) 2014-06-25

Family

ID=45926038

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010230015A Expired - Fee Related JP5533538B2 (ja) 2010-10-12 2010-10-12 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法

Country Status (2)

Country Link
US (1) US8984263B2 (ja)
JP (1) JP5533538B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9256451B2 (en) * 2012-06-29 2016-02-09 Oracle International Corporation Emulation time correction
CN104461468B (zh) * 2014-10-27 2017-10-20 杭州中天微系统有限公司 基于处理器指令快速完成的精确异常维护方法及装置
CN113033789B (zh) * 2019-12-24 2024-03-26 中科寒武纪科技股份有限公司 用于保序的总线系统、集成电路装置、板卡及保序方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4720784A (en) * 1983-10-18 1988-01-19 Thiruvengadam Radhakrishnan Multicomputer network
US5140687A (en) * 1985-10-22 1992-08-18 Texas Instruments Incorporated Data processing apparatus with self-emulation capability
JP2839730B2 (ja) * 1991-02-25 1998-12-16 株式会社東芝 エミュレーション装置及び半導体装置
AU6629894A (en) * 1993-05-07 1994-12-12 Apple Computer, Inc. Method for decoding guest instructions for a host computer
JP3652956B2 (ja) * 2000-04-25 2005-05-25 北陸日本電気ソフトウェア株式会社 エミュレーション装置
US7428485B2 (en) 2001-08-24 2008-09-23 International Business Machines Corporation System for yielding to a processor
US6988261B2 (en) * 2001-08-24 2006-01-17 Sun Microsystems, Inc. Frameworks for generation of Java macro instructions in Java computing environments
JP2004021890A (ja) 2002-06-20 2004-01-22 Pacific Design Kk データ処理装置
JP2004127154A (ja) * 2002-10-07 2004-04-22 Mitsubishi Electric Corp 情報処理装置及び命令エミュレーション装置及び命令エミュレーション処理実行方法
JP2006268487A (ja) * 2005-03-24 2006-10-05 Nec Corp エミュレーション装置及びエミュレーション方法、並びに、エミュレーションプログラム
GB2427045B (en) * 2005-06-06 2007-11-21 Transitive Ltd Method and apparatus for converting program code with access coordination for a shared resource
US7487341B2 (en) * 2006-06-29 2009-02-03 Intel Corporation Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource
JP2010003151A (ja) * 2008-06-20 2010-01-07 Renesas Technology Corp データ処理装置

Also Published As

Publication number Publication date
US20120089822A1 (en) 2012-04-12
JP2012083963A (ja) 2012-04-26
US8984263B2 (en) 2015-03-17

Similar Documents

Publication Publication Date Title
US8977681B2 (en) Pre-fetching data
US8335238B2 (en) Reassembling streaming data across multiple packetized communication channels
US9705977B2 (en) Load balancing for network devices
JP5672199B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
CN105393240A (zh) 具有辅助异步向量处理器的异步处理器的方法和装置
US8266504B2 (en) Dynamic monitoring of ability to reassemble streaming data across multiple channels based on history
CN112286698B (zh) 远程过程调用方法、装置以及远程过程调用执行方法
JP2010272076A (ja) マルチプロセッサシステム
KR20150079429A (ko) 캐시 미시들에 대한 프로세서 읽기 후 쓰기 해저드를 다루기 위한 장치 및 그것의 동작 방법
JP5533538B2 (ja) 情報処理装置、エミュレーション処理プログラム及びエミュレーション処理方法
CN114201219A (zh) 指令调度方法、指令调度装置、处理器及存储介质
US9639370B1 (en) Software instructed dynamic branch history pattern adjustment
US11755534B2 (en) Data caching method and node based on hyper-converged infrastructure
WO2013185660A1 (zh) 一种网络处理器的指令存储装置及该装置的指令存储方法
CN107273092B (zh) 一种优化数据流架构访存延迟的方法及其系统
CN110825442B (zh) 一种指令预取方法及处理器
Faraji et al. Design considerations for GPU‐aware collective communications in MPI
US8327252B2 (en) Data receiving apparatus, data receiving method, and computer-readable recording medium
US8989184B2 (en) Message relay apparatus and method
JP2008047096A (ja) キューイングを行うコンピュータシステム、方法、及びプログラム
JP2009193255A (ja) 集団通信最適化プログラム、集団通信最適化装置および集団通信最適化方法
JP4089506B2 (ja) ファイル共有システム及びサーバー並びにプログラム
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
CN112445587A (zh) 一种任务处理的方法以及任务处理装置
JP3795055B1 (ja) 値予測装置、マルチプロセッサシステムおよび値予測方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140225

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: 20140401

R150 Certificate of patent or registration of utility model

Ref document number: 5533538

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140414

LAPS Cancellation because of no payment of annual fees