JP5093509B2 - Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム - Google Patents

Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム Download PDF

Info

Publication number
JP5093509B2
JP5093509B2 JP2008277098A JP2008277098A JP5093509B2 JP 5093509 B2 JP5093509 B2 JP 5093509B2 JP 2008277098 A JP2008277098 A JP 2008277098A JP 2008277098 A JP2008277098 A JP 2008277098A JP 5093509 B2 JP5093509 B2 JP 5093509B2
Authority
JP
Japan
Prior art keywords
instruction sequence
optimization
cpu
virtual
optimized
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
JP2008277098A
Other languages
English (en)
Other versions
JP2010108086A (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.)
NEC Corp
Original Assignee
NEC Corp
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 Corp filed Critical NEC Corp
Priority to JP2008277098A priority Critical patent/JP5093509B2/ja
Priority to US12/607,479 priority patent/US8355901B2/en
Publication of JP2010108086A publication Critical patent/JP2010108086A/ja
Application granted granted Critical
Publication of JP5093509B2 publication Critical patent/JP5093509B2/ja
Priority to US13/740,469 priority patent/US20130132062A1/en
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

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)
  • Devices For Executing Special Programs (AREA)

Description

本発明は、CPUエミュレーションシステム、CPUエミュレーション方法及びCPUエミュレーションプログラムに関し、特に、マルチプロセッサを用いて、命令列の実行処理を遅延させることなく命令列の最適化処理を行うことが可能なCPUエミュレーションシステム、CPUエミュレーション方法及びCPUエミュレーションプログラムに関する。
CPUエミュレーションシステムとは、物理CPUと異なるISA(Instruction Set Architecture)を持つCPUを、仮想CPUとしてソフトウェア的に実現するシステムである。仮想CPUは、仮想CPUが想定しているISA向けの命令列を読み込み、読み込んだ命令列を物理CPU上で実行可能な命令列に変換した上で、変換済命令列を実行する。
このようなCPUエミュレーションシステムのうち、マルチプロセッサを利用したCPUエミュレーションシステムの一例が、特許文献1に記載されている。
特許文献1では、複数のプロセッサから構成されるCPUエミュレーションシステムにおいて、元命令をプリフェッチする処理と、元命令列の解釈実行する処理と、命令列変換および最適化処理を、それぞれ異なるCPU上で実行する。このように、命令列を実行するCPUと、命令列の最適化を行うCPUを分けることで、命令列の最適化処理が、命令列実行処理の処理スループットに影響しないようにしている。
また、マルチプロセッサを用いた命令列の最適化システムの一例が、特許文献2に記載されている。特許文献2では、1つのCPU上で実行中のプログラムに関してプロファイル情報を収集し、その情報をもとに、別のCPUで実行中に命令列の最適化を行っている。このように、命令列を実行するCPUと、命令列の最適化を行うCPUを分けることで、命令列の最適化処理が、命令列実行処理の処理スループットに影響しないようにしている。
特開2002−312180号公報 特開2004−110824号公報
従来の技術では、CPUの空き時間を有効利用することができなかった。その理由は、命令列の実行処理と命令列の最適化処理が互いの性能スループットに影響を与えないよう、それぞれ別のCPUで実行することを想定しているからである。
そこで、本発明は、上記従来技術の問題点に鑑みて成されたものであり、その目的は、CPUの利用率に応じて、命令列の最適化処理を行うことを可能にすることにある。
本発明のCPUエミュレーションシステムでは、
それぞれ異なる物理CPU上で動作する複数の仮想CPUと、
最適化すべき命令列を選択する命令列選択手段と、
前記仮想CPUの利用率をもとに、選択された命令列の最適化処理を行う前記仮想CPUを選択する仮想CPU選択手段と、
選択された前記仮想CPUで実行する最適化処理の最適化レベルを決定し、選択された前記仮想CPUに対して最適化処理を指示する最適化レベル選択手段と、を有することを特徴とする。
また、本発明の他のCPUエミュレーションシステムでは、
アーキテクチャ変換処理前の変換前命令列と、それを物理CPUで実行可能な形式に変換した命令列である変換済命令列と、変換済命令列に最適化処理を施された最適化済命令列との対応付けを管理する命令列対応管理部と、
それぞれ異なる物理CPU上で動作する複数の仮想CPUと、
最適化すべき命令列を選択する命令列選択手段と、
選択された命令列の最適化処理を複数の前記仮想CPUに指示するにあたり、前記仮想CPUごとに異なる最適化レベルを指示する最適化指示手段と、
前記仮想CPUによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて前記命令列対応管理部に書き込む最適化情報書き込み手段と、を有することを特徴とする。
また、本発明のCPUエミュレーション方法では、
最適化すべき命令列を選択する命令列を選択し、
それぞれ異なる物理CPUで動作する複数の仮想CPUの利用率をもとに、選択された命令列の最適化処理を行う前記仮想CPUを選択し、
選択された前記仮想CPUで実行する最適化処理の最適化レベルを決定し、
選択された前記仮想CPUに対して最適化処理を指示することを特徴とする。
また、本発明の他のCPUエミュレーション方法では、
最適化すべき命令列を選択し、
選択された命令列に関して、複数の仮想CPUに対して、それぞれ異なる最適化レベルで最適化処理をするよう指示し、
前記仮想CPUによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部に書き込むことを特徴とする。
また、本発明のCPUエミュレーションプログラムでは、
最適化すべき命令列を選択する命令列を選択する処理と、
それぞれ異なる物理CPUで動作する複数の仮想CPUの利用率をもとに、選択された命令列の最適化処理を行う前記仮想CPUを選択する処理と、
選択された前記仮想CPUで実行する最適化処理の最適化レベルを決定した上で選択された前記仮想CPUに対して最適化処理を指示する処理をコンピュータに実行させることを特徴とする。
また、本発明の他のCPUエミュレーションプログラムでは、
最適化すべき命令列を選択する処理と、
選択された命令列に関して、複数の仮想CPUに対して、それぞれ異なる最適化レベルで最適化処理をするよう指示する処理と、
前記仮想CPUによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部に書き込む処理をコンピュータに実行させることを特徴とする。
本発明によれば、利用率が高い仮想CPUは、最適化処理を指示されることなく、本来の命令列の変換処理や実行処理を遅延されることなく実行できる。すなわち、エミュレーションされるプログラムの実行時間を短縮することができる。その理由は、仮想CPU利用率にもとづいて最適化処理を行う仮想CPUを選択するよう構成されているためである。
(第1の実施の形態)
次に、本発明の第1の実施の形態について、図面を参照して詳細に説明する。
なお、CPUエミュレーションシステムでは、仮想CPUで想定しているISA向け命令列を読み込み、次に読み込んだ命令列を物理CPU上で実行可能な命令列に変換し、変換済命令列を実行するという処理が主に行われる。本発明は、このうち変換済命令列に対する最適化処理に関するものであるため、以下の説明においても命令列の最適化処理を中心に説明する。
まず、図1を参照すると、本発明の第1の実施の形態は、情報処理装置100において、命令列選択手段101、仮想CPU選択手段102、最適化レベル選択手段103、第1仮想CPU部201、第2仮想CPU部202、変換前命令列管理部301、変換済命令列管理部302、最適化済命令列管理部303から構成される。
変換前命令列管理部301は、仮想CPUが想定しているISA向けの命令列、つまりエミュレーション対象の命令列を管理しておくための記憶領域である。なお、これ以降、このエミュレーション対象の命令列のことを変換前命令列と表記する。
変換済命令列管理部302は、前述した命令列変換処理によって変換された命令列が記憶されている記憶領域である。変換済命令列管理部302は、更に変換済命令列ごとに、命令列変換処理において適用された最適化レベルも管理している。これは、命令列変換処理においても何かしらの最適化処理が施されていることを想定している。なおこれ以降、命令列変換処理によって変換された命令列のことを変換後命令列と表記する。
最適化済命令列管理部303は、最適化処理を施された命令列を保存しておくための記憶領域である。なおこれ以降、最適化処理を施された命令列のことを最適化済命令列と表記する。
命令列選択手段101は、CPUエミュレーションシステム上で次に最適化すべき命令列を選択するものである。仮想CPU選択手段102は、利用率の低い仮想CPUを命令列の最適化処理を行う仮想CPUとして選択するものである。
最適化レベル選択手段103は、選択された仮想CPUで実行する最適化処理の最適化レベルを決定するものである。変換済命令列管理部302を参照することで、選択された命令列が命令列変換処理で適用された最適化レベルを取得し、取得した最適化レベルより高い最適化レベルを選択する。
第1仮想CPU部201及び第2仮想CPU部202は、CPUエミュレーションシステムの提供するCPU機能であり、物理CPU上で実行される。第1仮想CPU部201及び第2仮想CPU部202は、変換前命令列管理部301に記憶されている変換前命令列を読み込み、物理CPU上で実行可能な命令列に変換する。なお、変換された命令列は、変換済命令列として変換済命令列管理部302に保存されており、同じ命令列を再度実行する時に再利用できる。
また、第1仮想CPU部201及び第2仮想CPU部202は、変換済命令列を物理CPU上で実行する。
また、第1仮想CPU部201及び第2仮想CPU部202は、最適化レベル選択手段103からの指示に従い変換済命令列の最適化処理を行う。具体的には、命令列の実行速度を高める、命令列によるメモリ使用量を抑える、キャッシュヒット率を高める、などの目的のために、指示された命令列を解析した上で命令の並び替えもしくは命令の変換が行われる。この最適化処理によって生成される命令列が、最適化済命令列である。なお、第1仮想CPU部201と第2仮想CPU部202は、それぞれ異なる物理CPU上もしくはマルチコアプロセッサにおける異なるCPUコア上で実行される。
次に、図1及び図2のフローチャートを参照して本実施の形態の全体の動作について説明する。
まず、命令列選択手段101が、変換済命令列管理部302に保存されている変換済命令列の中から最適化すべき命令列を選択する(図2のステップA1)。
次に、仮想CPU選択手段102が、第1仮想CPU部201と第2仮想CPU部202をモニタリングし、利用率の低い仮想CPUを、最適化を行う仮想CPUとして選択する(ステップA2)。
次に、最適化レベル選択手段103が、変換済命令列管理部302を参照することで、選択された命令列に適用する最適化レベルを決定し、選択された仮想CPUに対して、選択された命令列と最適化レベルを指示する(ステップA3)。
ここで、もし第1仮想CPU部201が選択された場合(ステップA4)、第1仮想CPU部201が、指示に従い命令列の最適化処理を行う(ステップA5)。
もし、第2仮想CPU部202が選択された場合、第2仮想CPU部202が指示に従い最適化処理を行う(ステップA6)。
本発明の第1の実施の形態によれば、仮想CPU利用率にもとづいて最適化処理を行う仮想CPU部を選択するよう構成されているため、利用率が高い仮想CPU部は、最適化処理を指示されることなく、本来の命令列の変換・実行処理を遅延されることなく実行できる。
(第2の実施の形態)
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
図3を参照すると、本実施の形態は、第1の実施の形態と比べて、単位時間管理部304と最適化処理時間管理部305、時間計算手段104を備える点で異なるが、それ以外の構成は第1の実施の形態と同じである。従って、ここでは構成が異なる点についてのみ説明する。
単位時間管理部304は、特定の時間が単位時間として記憶されている記憶領域である。この単位時間は、パーセンテージ表現された仮想CPUの利用率をもとに、仮想CPUのアイドル時間を計算するために利用される。例えば、単位時間が1秒で第1仮想CPU部201の利用率の90%の時、第1仮想CPU部201は900ミリ秒間利用され、100ミリ秒間アイドル状態であると見なすことができる。
最適化処理時間管理部305には、最適化レベルごとに最適化処理に掛かる時間が記憶されている記憶領域である。例えば、最適化レベルO1は、命令列100バイトごとに10ミリ秒掛かる、最適化レベルO2は、命令列100バイトごとに20ミリ秒掛かる、などの情報が記憶されている。
時間計算手段104は、まず仮想CPU選択手段102において選択された仮想CPUの利用率と単位時間管理部304をもとに、最適化処理のために掛けられる許容時間を計算する。例えば、単位時間が1秒で第1仮想CPU部201の利用率の90%の時、100ミリ秒の間アイドル状態であるため、最適化処理の許容時間として100ミリ秒を算出する。次に、最適化処理時間管理部305を参照することで、指定された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する。
次に、図3と図4のフローチャートを参照して、本実施の形態の全体の動作について詳細に説明する。
まず、命令列選択手段101が、変換済命令列管理部302に保存されている変換済命令列の中から最適化すべき命令列を選択する(図4のステップB1)。
次に、仮想CPU選択手段102が、第1仮想CPU部201と第2仮想CPU部202をモニタリングし、利用率の低い仮想CPUを、最適化を行う仮想CPUとして選択する(ステップB2)。
次に、時間計算手段104が、選択された仮想CPUの利用率と単位時間管理部305をもとに、最適化処理のために掛けられる許容時間を計算する(ステップB3)。
更に、時間計算手段104が、最適化処理時間管理部306を参照することで、指定された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する(ステップB4)。
次に、最適化レベル選択手段103が、算出した許容時間以内に処理が完了する最も高い最適化レベルを決定し、選択された仮想CPUに対して、選択された命令列と最適化レベルを指示する(ステップB5)。
ここで、もし第1仮想CPU部201が選択された場合(ステップB6)、第1仮想CPU部201が、指示に従い命令列の最適化処理を行う(ステップB7)。
もし第2仮想CPU部202が選択された場合、第2仮想CPU部202が指示に従い最適化処理を行う(ステップB8)。
本発明の第2の実施の形態によれば、仮想CPUの利用率のみならず、最適化処理に掛かる時間を考慮して、最適化レベルを決定するよう構成されているため、最適化処理を行うよう選択された仮想CPUにおいて、本来の命令列の変換・実行処理が遅延される可能性をより低く抑えることができる。
(第3の実施の形態)
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。
図5を参照すると、本実施の形態は、第1の実施の形態と比べて、仮想CPU選択手段102と最適化レベル選択手段103を備えず、命令列対応管理部306、最適化指示手段105、最適化情報書き込み手段106を備える点で異なるが、それ以外の構成は第1の実施の形態と同じである。従って、ここでは構成が異なる点についてのみ説明する。
命令列対応管理部306は、仮想CPUが想定している変換前命令列と、それを物理CPUで実行可能な形式に変換した命令列である変換済命令列と、変換済命令列に最適化処理を施して生成された最適化済命令列に関して、変換前命令列に関する識別子をもとに、その命令列に該当する変換済命令列、最適化済命令列を対応付けている記憶領域である。
最適化指示手段105は、選択された命令列の最適化処理を各仮想CPU部に指示するが、各仮想CPU部の利用率をもとに異なる最適化レベルを指示する。最適化レベルの指示の仕方としては、例えば利用率が高い仮想CPU部には低い最適化レベルを指示し、利用率が低い仮想CPU部には高い最適化レベルを指示することができる。これにより、同一の変換済命令列に関して、仮想CPU部ごとに異なる最適化済命令列が生成されることになる。
最適化情報書き込み手段106は、仮想CPU部による最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部306に書き込む。なお最適化処理で選択された最適化レベルに関する情報も同時に書き込む。
次に、図5と図6のフローチャートを用いて、本実施の形態の全体の動作について詳細に説明する。
まず、命令列選択手段101が、変換済命令列管理部302に保存されている変換済命令列の中から最適化すべき命令列を選択する(図6のステップC1)。
次に、最適化指示手段105が、各仮想CPU部に対して、利用率をもとに異なる最適化レベルで選択された変換済命令列の最適化処理を指示する(ステップC2)。
これに従い、第1仮想CPU部201では、指示された変換済命令列と最適化レベルに従い、最適化処理を行う(ステップC3−1)。
最適化処理が終了すると、最適化情報書き込み手段106が、最適化済命令列に関する情報を命令列対応管理部305に書き込む(ステップC4−1)。
また、第2仮想CPU部202でも、指示された変換済命令列と最適化レベルに従い、最適化処理を行う(ステップC3−2)。
最適化処理が終了すると、最適化情報書き込み手段106が、最適化済命令列に関する情報を命令列対応管理部306に書き込む(ステップC4−2)。
本発明の第3の実施の形態によれば、複数の仮想CPU部に対して異なる最適化レベルでの最適化処理を指示し、各仮想CPU部で最適化処理が終わり次第、命令列対応管理部306に最適化済命令列の情報を書き込むよう構成されている。これにより、最適化処理の対象となっている命令列に関して、最適化処理を行っている最中に命令列実行処理を行う必要が生じたとしても、命令列対応管理部306に書き込まれている情報をもとに、その時点で最も最適化レベルが高い命令列を実行処理に用いることができる。
(実施例)
(第1の実施例)
次に、本発明の第1の実施例を、図7を参照して説明する。かかる実施例は、本発明の第1の実施の形態に対応するものである。
図7に示すように、本実施例は、x86コンピュータ700上で動作するARMプロセッサのCPUエミュレーションシステムである。本実施例において、x86コンピュータ700と第1仮想ARMプロセッサ部701、第2仮想ARMプロセッサ部702は、それぞれ本発明の第1の実施の形態における情報処理装置100、第1仮想CPU部201、第2仮想CPU部202に相当する。
また、命令列選択手段101、仮想CPU選択手段102、最適化レベル選択手段103、第1仮想ARMプロセッサ部701は第1物理CPU710上で実行され、第2仮想ARMプロセッサ部702は第2物理CPU720上で実行される。また、変換済命令列管理部302及び最適化済命令列管理部303はメモリ730上に置かれる。また、変換前命令列管理部301はハードディスク740上に置かれる。
このような構成をとったCPUエミュレーションシステムは、第1仮想ARMプロセッサ部701と第2仮想ARMプロセッサ部702において、変換前命令列管理部301に記憶されているARM形式の命令列を読み込み、ARM形式の命令列をx86形式の命令列に変換しながら実行する。
また、変換された命令列は、CPUエミュレーションシステムが管理するメモリの変換済命令列管理部302にキャッシュされる。これはx86に変換された命令列の中にはループ処理などのように何度も繰り返し実行される命令列が存在するためである。
このCPUエミュレーションシステムにおいて、命令列選択手段101が最適化処理を実行するための変換済命令列を選択すると、最適化処理が行われる。例えば、第1仮想ARMプロセッサ部701の利用率が10%で、第2仮想ARMプロセッサ部702の利用率が90%の場合、利用率の低い第1仮想ARMプロセッサ部701で最適化処理を行われる。従って、利用率の高い第2仮想ARMプロセッサ702で最適化処理を行う時に比べて、命令列の変換処理や実行処理を遅延されることなく実行できる。
(第2の実施例)
次に、本発明の第2の実施例を、図8を参照して説明する。かかる実施例は、本発明の第2の実施の形態に対応するものである。
本実施例では、第1の実施例で示したようなCPUエミュレーションシステムの内部で、最適化処理を実行する仮想CPUを選択する方法について詳しく説明する。
まず、図8のような状況を想定する。第1仮想CPU部201の利用率が90%であり、第2仮想CPU部202の利用率が10%であったとする。また、最適化対象の変換済命令列が500バイトであったとする。また、単位時間管理部304(図3参照)に単位時間として100ミリ秒が保存されていたとする。また、最適化処理時間管理部305(図3参照)には、(1)最適化レベルO1の最適化処理時間は、命令列100バイトごとに10ミリ秒掛かるという情報と、(2)最適化レベルO2の最適化処理時間は、命令列100バイトごとに20ミリ秒掛かるという情報が記憶されていたとする。
このような状況のもとで、仮想CPU選択手段102(図3参照)は、最適化処理を実行する仮想CPUとして、利用率の低い第2仮想CPU部202を選択する。
次に、時間計算手段104(図3参照)が、単位時間が100ミリ秒であり第2仮想CPU部202の利用率が10%であるということから、最適化処理のために90ミリ秒が許容時間であると算出する。最適化対象の変換済命令列が500バイトであるので、最適化レベルO1で最適化した場合50ミリ秒掛かり、最適化レベルO2で最適化した場合100ミリ秒掛かることを計算する。
最適化レベル選択手段103は、こうした時間計算手段104による算出結果をもとに、第2仮想CPU部202で最適化レベルO1の最適化処理を実行することを決定し、第2仮想CPU部202に対して処理を依頼する。
ここで、もし最適化対象の変換後命令列が300バイトであれば、最適化レベルO2であっても許容時間内に収まるため、第2仮想CPU部202に対して最適化レベルO2の最適化処理を依頼することになる。
(第3の実施例)
次に、本発明の第3の実施例を、図9及び図10を参照して説明する。かかる実施例は、本発明の第3の実施の形態に対応するものである。
本実施例では、第1の実施例で示したようなCPUエミュレーションシステムの内部で、最適化処理の依頼する方法及び実行時における最適化済命令列を選択する方法について詳しく説明する。
まず、図9のような状況を想定する。第1仮想CPU部201の利用率が10%であり、第2仮想CPU部202の利用率が90%であるとする。また、最適化指示手段105(図5参照)は、変換前命令列αを変換した変換済命令列β(キャッシュ命令列β901)を最適化するにあたり、第1仮想CPU部201に最適化レベルO1で、第2仮想CPU部202に対して最適化レベルO2で最適化するよう指示する。その結果、それぞれの最適化処理が時間T、Tに完了し、それぞれ最適化済命令列γ902、最適化済命令列γ903が生成されたとする。
−Tの間、最適化済命令列の生成はγのみ完了しており、命令列対応管理部306(図5参照)における命令列の対応付けは、図10の(a)のようになっている。ここで、CPUエミュレーションシステムにおいて、命令列αに関する命令列実行処理が行われたとすると、命令列対応管理部306(図5参照)を参照することで、最も最適化レベルが高い最適化済命令列γを実行すれば良いことが分かる。
また、T以降の時間では、最適化済命令列γ2の生成も完了しており、命令列対応管理部305における命令列の対応付けは、図10の(b)のようになっている。ここで、CPUエミュレーションシステムにおいて命令列αに関する命令列実行処理が行われたとすると、命令列対応管理部306(図5参照)を参照することで、最も最適化レベルが高い最適化済命令列γ2を選択すれば良いことが分かる。
なお、以上の実施例では、2つの物理CPUを用いたCPUエミュレーションシステムを想定しているが、3つ以上の物理CPUを用いたCPUエミュレーションシステムであっても良い。また1つ以上のマルチコアCPUを用いたCPUエミュレーションシステムであっても良い。
以上、本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
本発明は、物理CPUと異なるISAを持つCPUをソフトウェア的にエミュレートするCPUエミュレーションシステムにおいて、仮想CPUの処理スループットを極力落とすことなく、キャッシュされている命令列の最適化処理を行うという用途に適用可能である。
本発明の第1の実施の形態の構成を示すブロック図である。 本発明の第1の実施の形態の動作を示すフローチャートである。 本発明の第2の実施の形態の動作を示すブロック図である。 本発明の第2の実施の形態の動作を示すフローチャートである。 本発明の第3の実施の形態の動作を示すブロック図である。 本発明の第3の実施の形態の動作を示すフローチャートである。 本発明の第1の実施例を示すブロック図である。 本発明の第2の実施例における時間計算及び最適化レベル選択の様子を示す図である。 本発明の第3の実施例における最適化済命令列の選択の様子を示す図である。 本発明の第3の実施例における命令列対応管理部を示す図である。
符号の説明
100 情報処理装置
101 命令列選択手段
102 仮想CPU選択手段
103 最適化レベル選択手段
104 時間計算手段
105 最適化指示手段
106 最適化情報書き込み手段
201 第1仮想CPU部
202 第2仮想CPU部
301 変換前命令列管理部
302 変換済命令列管理部
303 最適化済命令列管理部
304 単位時間管理部
305 最適化処理時間管理部
306 命令列対応管理部

Claims (19)

  1. それぞれ異なる物理CPU上で動作する複数の仮想CPUと、
    最適化すべき命令列を選択する命令列選択手段と、
    前記仮想CPUの利用率をもとに、選択された命令列の最適化処理を行う前記仮想CPUを選択する仮想CPU選択手段と、
    選択された前記仮想CPUで実行する最適化処理の最適化レベルを決定し、選択された前記仮想CPUに対して最適化処理を指示する最適化レベル選択手段と、
    を有することを特徴とするCPUエミュレーションシステム。
  2. 特定の時間を単位時間として格納している単位時間管理部と、
    最適化レベルごとに最適化処理に掛かる時間を記憶している最適化処理時間管理部と、
    前記仮想CPU選択手段で選択された前記仮想CPUの利用率と、前記単位時間管理部に格納されている単位時間をもとに、最適化処理のために掛けられる許容時間を計算し、更に最適化処理時間管理部を参照することで、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する時間計算手段と、
    を更に有することを特徴とする請求項1に記載のCPUエミュレーションシステム。
  3. 前記最適化処理時間管理部には、最適化レベルごとに、命令列サイズあたりの処理時間が格納されていることを特徴とする請求項2に記載のCPUエミュレーションシステム。
  4. アーキテクチャ変換処理前の変換前命令列と、それを物理CPUで実行可能な形式に変換した命令列である変換済命令列と、変換済命令列に最適化処理を施された最適化済命令列との対応付けを管理する命令列対応管理部と、
    それぞれ異なる物理CPU上で動作する複数の仮想CPUと、
    最適化すべき命令列を選択する命令列選択手段と、
    選択された命令列の最適化処理を複数の前記仮想CPUに指示するにあたり、前記仮想CPUごとに異なる最適化レベルを指示する最適化指示手段と、
    前記仮想CPUによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて前記命令列対応管理部に書き込む最適化情報書き込み手段と、
    を有することを特徴とするCPUエミュレーションシステム。
  5. 命令列実行処理が行われる時に、前記命令列対応管理部を参照することで、最も最適化レベルが高い命令列を選択して実行することを特徴とする請求項4に記載のCPUエミュレーションシステム。
  6. 前記最適化情報書き込み手段が前記最適化済命令列に関する情報を書き込む時に、前記最適化済命令列に適用された最適化レベルに関する情報も書き込むことを特徴とする請求項4または5に記載のCPUエミュレーションシステム。
  7. 前記仮想CPUが、それぞれ異なるCPUコア上で実行されることを特徴とする請求項1から6のいずれか1項に記載のCPUエミュレーションシステム。
  8. 最適化すべき命令列を選択する命令列を選択し、
    それぞれ異なる物理CPUで動作する複数の仮想CPUの利用率をもとに、選択された命令列の最適化処理を行う前記仮想CPUを選択し、
    選択された前記仮想CPUで実行する最適化処理の最適化レベルを決定し、
    選択された前記仮想CPUに対して最適化処理を指示することを特徴とするCPUエミュレーション方法。
  9. 更に、選択された前記仮想CPUの利用率と単位時間をもとに、最適化処理のために掛けられる許容時間を計算し、
    最適化レベルごとに最適化処理に掛かる時間を記憶している最適化処理時間管理部を参照することで、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出することを特徴とする請求項8に記載のCPUエミュレーション方法。
  10. 前記最適化処理時間管理部に格納されている最適化レベルごとの命令列サイズあたりの処理時間をもとに、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出することを特徴とする請求項9に記載のCPUエミュレーション方法。
  11. 最適化すべき命令列を選択し、
    選択された命令列に関して、複数の仮想CPUに対して、それぞれ異なる最適化レベルで最適化処理をするよう指示し、
    前記仮想CPUによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部に書き込むことを特徴とするCPUエミュレーション方法。
  12. 更に、命令列実行処理が行われる時に、前記命令列対応管理部を参照することで、最も最適化レベルが高い命令列を選択して実行することを特徴とする請求項11に記載のCPUエミュレーション方法。
  13. 前記最適化済命令列に関する情報を書き込む時に、前記最適化済命令列に適用された最適化レベルに関する情報も書き込むことを特徴とする請求項11または12に記載のCPUエミュレーション方法。
  14. 最適化すべき命令列を選択する命令列を選択する処理と、
    それぞれ異なる物理CPUで動作する複数の仮想CPUの利用率をもとに、選択された命令列の最適化処理を行う前記仮想CPUを選択する処理と、
    選択された前記仮想CPUで実行する最適化処理の最適化レベルを決定した上で選択された前記仮想CPUに対して最適化処理を指示する処理をコンピュータに実行させることを特徴とするCPUエミュレーションプログラム。
  15. 更に、選択された前記仮想CPUの利用率と単位時間をもとに、最適化処理のために掛けられる許容時間を計算する処理と、
    最適化レベルごとに最適化処理に掛かる時間を記憶している最適化処理時間管理部を参照することで、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する処理をコンピュータに実行させることを特徴とする請求項14に記載のCPUエミュレーションプログラム。
  16. 前記最適化処理時間管理部に格納されている最適化レベルごとの命令列サイズあたりの処理時間をもとに、指示された命令列の最適化処理に掛かる時間を最適化レベルごとに算出する処理をコンピュータに実行させることを特徴とする請求項15に記載のCPUエミュレーションプログラム。
  17. 最適化すべき命令列を選択する処理と、
    選択された命令列に関して、複数の仮想CPUに対して、それぞれ異なる最適化レベルで最適化処理をするよう指示する処理と、
    前記仮想CPUによる最適化処理が終了した時点で、その最適化済命令列に関する情報を、元になった変換済命令列と対応付けて命令列対応管理部に書き込む処理をコンピュータに実行させることを特徴とするCPUエミュレーションプログラム。
  18. 更に、命令列実行処理が行われる時に、前記命令列対応管理部を参照することで、最も最適化レベルが高い命令列を選択して実行する処理をコンピュータに実行させることを特徴とする請求項17に記載のCPUエミュレーションプログラム。
  19. 更に、前記最適化済命令列に関する情報を書き込む時に、前記最適化済命令列に適用された最適化レベルに関する情報も書き込む処理をコンピュータに実行させることを特徴とする請求項17または18に記載のCPUエミュレーションプログラム。
JP2008277098A 2008-10-28 2008-10-28 Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム Expired - Fee Related JP5093509B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2008277098A JP5093509B2 (ja) 2008-10-28 2008-10-28 Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
US12/607,479 US8355901B2 (en) 2008-10-28 2009-10-28 CPU emulation system, CPU emulation method, and recording medium having a CPU emulation program recorded thereon
US13/740,469 US20130132062A1 (en) 2008-10-28 2013-01-14 Cpu emulation system, cpu emulation method, and recording medium having a cpu emulation program recorded thereon

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008277098A JP5093509B2 (ja) 2008-10-28 2008-10-28 Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム

Publications (2)

Publication Number Publication Date
JP2010108086A JP2010108086A (ja) 2010-05-13
JP5093509B2 true JP5093509B2 (ja) 2012-12-12

Family

ID=42118345

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008277098A Expired - Fee Related JP5093509B2 (ja) 2008-10-28 2008-10-28 Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム

Country Status (2)

Country Link
US (2) US8355901B2 (ja)
JP (1) JP5093509B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9538493B2 (en) 2010-08-23 2017-01-03 Finetrak, Llc Locating a mobile station and applications therefor
CN102364455B (zh) * 2011-10-31 2013-10-23 杭州华三通信技术有限公司 一种级联多核cpu间vcpu均衡分担控制方法及其装置
US9202056B2 (en) * 2013-03-15 2015-12-01 Intel Corporation Inter-processor attestation hardware
KR102033434B1 (ko) 2014-01-28 2019-10-17 한국전자통신연구원 동적 컨텍스트 스위칭 기반 멀티코어 에뮬레이션 장치 및 방법
US10635465B2 (en) * 2015-03-28 2020-04-28 Intel Corporation Apparatuses and methods to prevent execution of a modified instruction
US9335982B1 (en) 2015-04-28 2016-05-10 Microsoft Technology Licensing, Llc Processor emulation using multiple translations
JP6365454B2 (ja) * 2015-08-03 2018-08-01 京セラドキュメントソリューションズ株式会社 画像形成装置
KR102457183B1 (ko) 2016-01-05 2022-10-21 한국전자통신연구원 공유 번역 블록 캐시 기반의 멀티-코어 시뮬레이션 시스템 및 방법
US20190163642A1 (en) 2017-11-27 2019-05-30 Intel Corporation Management of the untranslated to translated code steering logic in a dynamic binary translation based processor

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
JPH05134883A (ja) * 1991-11-08 1993-06-01 Fujitsu Ltd 分散コンパイル処理方式
US5970249A (en) * 1997-10-06 1999-10-19 Sun Microsystems, Inc. Method and apparatus for performing byte-code optimization during pauses
US6164841A (en) * 1998-05-04 2000-12-26 Hewlett-Packard Company Method, apparatus, and product for dynamic software code translation system
JP3605327B2 (ja) * 1999-11-18 2004-12-22 富士通株式会社 プログラム実行装置
JP2002312180A (ja) * 2001-04-11 2002-10-25 Hitachi Ltd 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス
US20030022395A1 (en) * 2001-07-17 2003-01-30 Thoughtbeam, Inc. Structure and method for fabricating an integrated phased array circuit
US7953588B2 (en) * 2002-09-17 2011-05-31 International Business Machines Corporation Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host
US7146607B2 (en) * 2002-09-17 2006-12-05 International Business Machines Corporation Method and system for transparent dynamic optimization in a multiprocessing environment
US9020801B2 (en) * 2003-08-11 2015-04-28 Scalemp Inc. Cluster-based operating system-agnostic virtual computing system
US7898545B1 (en) * 2004-12-14 2011-03-01 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors
US7734895B1 (en) * 2005-04-28 2010-06-08 Massachusetts Institute Of Technology Configuring sets of processor cores for processing instructions
US8429630B2 (en) * 2005-09-15 2013-04-23 Ca, Inc. Globally distributed utility computing cloud
US8108863B2 (en) * 2005-12-30 2012-01-31 Intel Corporation Load balancing for multi-threaded applications via asymmetric power throttling
JP5167589B2 (ja) * 2006-02-13 2013-03-21 富士通株式会社 アプリケーションサーバ装置および仮想マシンプログラム
US7802073B1 (en) * 2006-03-29 2010-09-21 Oracle America, Inc. Virtual core management
US8560591B2 (en) * 2007-04-25 2013-10-15 International Business Machines Corporation Detection of potential need to use a larger data format in performing floating point operations
EP2075696A3 (en) * 2007-05-10 2010-01-27 Texas Instruments Incorporated Interrupt- related circuits, systems and processes

Also Published As

Publication number Publication date
JP2010108086A (ja) 2010-05-13
US8355901B2 (en) 2013-01-15
US20130132062A1 (en) 2013-05-23
US20100106479A1 (en) 2010-04-29

Similar Documents

Publication Publication Date Title
JP5093509B2 (ja) Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
JP4520790B2 (ja) 情報処理装置およびソフトウェアプリフェッチ制御方法
JP5776688B2 (ja) 情報処理装置及びタスク切り替え方法
JP2009157684A (ja) 仮想化プログラム、シミュレーション装置、仮想化方法
JP4381459B1 (ja) 情報処理装置、粒度調整方法およびプログラム
WO2018179873A1 (ja) アクセラレータを有する計算機のためのライブラリ、およびアクセラレータ
JP4908363B2 (ja) 情報処理装置、並列処理最適化方法およびプログラム
US20160196156A1 (en) Simulation apparatus, simulation method, and computer product
CN114168202A (zh) 指令调度方法、指令调度装置、处理器及存储介质
US20160026741A1 (en) Calculating device, calculation method, and calculation program
JP2008276547A (ja) プログラム処理方法及び情報処理装置
JP5195408B2 (ja) マルチコアシステム
JP5278538B2 (ja) コンパイルシステム、コンパイル方法およびコンパイルプログラム
US8984263B2 (en) Information processing device and emulation processing program and method
JP5540799B2 (ja) データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置
JP6488962B2 (ja) キャッシュ制御装置、キャッシュ制御方法およびキャッシュ制御プログラム
JP5238876B2 (ja) 情報処理装置及び情報処理方法
US8732721B2 (en) Method for reducing trap overhead when executing a guest in a virtual machine
JP5240200B2 (ja) データ処理装置および方法
JP5440083B2 (ja) シミュレーション装置、方法およびプログラム
WO2018168264A1 (ja) 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
KR101191530B1 (ko) 복수의 이종 코어를 포함하는 멀티코어 프로세서 시스템 및 그 제어 방법
WO2019188171A1 (ja) コード生成方法、コード生成装置
JP5679263B2 (ja) 情報処理装置及びマイクロ命令処理方法
JP2011008617A (ja) マルチスレッド実行装置、オブジェクトプログラムの生成方法、プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110902

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120724

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 5093509

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

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees