JP2008545179A - 複数の経路最適化を備える関数レベルジャストインタイム変換エンジン - Google Patents
複数の経路最適化を備える関数レベルジャストインタイム変換エンジン Download PDFInfo
- Publication number
- JP2008545179A JP2008545179A JP2008511153A JP2008511153A JP2008545179A JP 2008545179 A JP2008545179 A JP 2008545179A JP 2008511153 A JP2008511153 A JP 2008511153A JP 2008511153 A JP2008511153 A JP 2008511153A JP 2008545179 A JP2008545179 A JP 2008545179A
- Authority
- JP
- Japan
- Prior art keywords
- cpu type
- computer
- instructions
- executable code
- code
- 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
Links
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 29
- 238000005457 optimization Methods 0.000 title claims abstract description 23
- 230000006870 function Effects 0.000 claims abstract description 84
- 238000000034 method Methods 0.000 claims description 47
- 238000003860 storage Methods 0.000 description 27
- 238000004891 communication Methods 0.000 description 25
- 230000008569 process Effects 0.000 description 14
- 238000012545 processing Methods 0.000 description 11
- 238000013459 approach Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006855 networking Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 101150019148 Slc7a3 gene Proteins 0.000 description 2
- 238000007792 addition Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 229920001690 polydopamine Polymers 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 244000025352 Artocarpus heterophyllus Species 0.000 description 1
- 244000035744 Hura crepitans Species 0.000 description 1
- 241000233805 Phoenix Species 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009429 electrical wiring Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
本発明は、命令コードレベルというよりもむしろソースコードの関数レベルにおいてコードを変換するシステム及び方法を提供する。本発明のソフトウェアエミュレータは、命令というよりもむしろ、ソースストリームからx86関数全体を取り込み、関数全体をターゲットプロセッサの等価な関数に変換し、ソースストリームに戻す前に一度にその関数全体を実行し、そうすることによって文脈切り替えを低減させる。また、ソフトウェアエミュレータが一度にソースコード関数文脈全体を参照するので、ソフトウェアエミュレータは、コード変換を最適化することができる。例えば、ソフトウェアエミュレータは、一連のx86命令を効率的なPPC等価物に変換することを決定することができる。そのような最適化の多くは、より堅固なエミュレートされたバイナリをもたらす。
コンピュータは、汎用中央処理装置(CPU)、または特定のシステム命令を実行するように設計された「プロセッサ」を含む。同様のアーキテクチャまたは設計仕様を有する一群のプロセッサは、同じプロセッサファミリの1つとみなすことができる。プロセッサファミリの例には、アリゾナ州フェニックス在のモトローラ社によって製造されているモトローラ680X0プロセッサファミリ、カリフォルニア州サニーベール在のインテル社によって製造されているインテル80X86プロセッサファミリ、並びにIBM社およびモトローラ社によって製造され、カリフォルニア州クパチーノ在のアップル社によって製造されたコンピュータで使用されているパワーPCプロセッサファミリが含まれる。一群のプロセッサは、同様のアーキテクチャおよび設計仕様により、同じファミリ内にあるとすることができ、プロセッサは、クロック速度やその他の性能パラメータにより、ファミリ内で大きく異なる。
本発明は、レガシーゲームシステムプラットフォーム(legacy game system platform)の最新版であるホストゲームシステムプラットフォーム上で、Xボックスのようなレガシーゲームシステムプラットフォームを仮想化するためのソフトウェアエミュレータを使用するシステムの機能に関する。ソフトウェアエミュレータは、ホストゲームシステムプラットフォームが、シームレスな方法でレガシーゲームを実行することを可能にする。上述したように、本発明は、関数レベルでコードを変換し、変換を仮想化して、コード変換効率を向上させるジャストインタイム変換エンジンを有するソフトウェアエミュレータを提供する。本発明の技術を、図2〜4を参照して以下に説明する。
・レガシーXボックスゲームシステムのx86コードの、PPCコードまたはネイティブなホストXボックスゲームシステムのその他のプロセッサコードへのジャストインタイムバイナリ変換を提供するジャストインタイム(JIT)バイナリトランスレータ(translator)102
・複製されたx86Xボックスカーネル106および変換されていないタイトルコードストア108内のほとんどのレガシーXボックス環境、並びに格納されたタイトルリソースおよび状態ストア内のレガシータイトル環境を再作成するレガシーXボックス仮想マシン(VM)104
・ネイティブなホストXボックスゲームシステムのオペレーティングシステムとVM104との間のやりとり(communication)を可能にし、ディスパッチャ112および変換されたコードキャッシュ114をホストし、VM状態116を追跡(track)する共有メモリ88
・XボックスVM104で使用するために、ネイティブなXボックスカーネル122上で、デバイスエミュレーション120を使用して、レガシーXボックスゲームを実行しているネイティブなホストXボックスシステムのハードウェアデバイスをエミュレートするXボックス例外ハンドラ118
A.整数の加算
int add(int i, intj) : prolog
{ : mov eax, i
return (i+j); : add eax,j
} : epilog
B.整数の乗算
int multiply(int i, intj) : prolog
{ : mov eax, i
return (i*j); : imul eax,j
} : epilog
C.整数 i,j についてのj+(i*j)の計算
int multiplyadd(int i, intj) : prolog
{ : pushj
: push i
return add(multiply(i j), j); : call multiply
: push eax
: pushj
: call add
} : epilog
以下の例は、関数が完了したとみなされる前に決定(resolution)を必要とする未解決の(outstanding)条件分岐を示す。
{ : prolog
if (operation == ADD) : cmp operation,ADD
{ : jnz NotAdd
return (i+j); : mov eax,i
: add eax,j
: ret
} : NotAdd:
else if (operation == SUBTRACT) : cmp operation,SUBTRACT
{ : jnz NotSubtract
return (i-j); : mov eax,i
: sub eaxj
: ret
} : NotSubtract:
else if (operation == MULTIPLY) : cmp operation,MULTIPLY
{ : jnz NotMultiply
return (i*j); : mov eax,i
: imul eax,j
: ret
} : NotMultiply:
else if (operation == DIVIDE) : cmp operation,DIVIDE
{ : jnz NotDivide
return (i/j); : mov eax,i
: idiv eax j
: ret
} : NotDivide:
} : epilog
jump to routine to calculate value of j
return value of j
i=j*k
本発明の例示的実施形態は、Xボックスゲームシステムアーキテクチャに関連して実装することができるが、本発明は、コンピュータネットワークの一部として、または分散コンピューティング環境内で使用することができる、任意の適切なホストコンピュータ、若しくはその他のクライアントまたはサーバデバイスに関連して実装することができることは、当業者には理解できるだろう。この点において、本発明は、本発明によるゲストOSを仮想化することに関連して使用することができる、複数のメモリまたは記憶装置、並びに複数のアプリケーションおよび複数の記憶装置またはボリュームにわたって生じるプロセスを有するコンピュータシステムまたはコンピュータ環境にも適している。本発明は、リモートまたはローカルストレージを有する、ネットワーク化された環境または分散コンピューティング環境で使用することができるサーバコンピュータおよびクライアントコンピュータを有する環境に適用することができる。本発明は、プログラミング言語機能、ならびに、リモートまたはローカルサービスに関連する情報を生成し、受信し、送信する割込み及び実行機能を有する、スタンドアロンコンピューティングデバイスにも適用することができる。
図5Bおよび以下の説明は、本発明を実装することができる適切なホストコンピューティング環境の簡単な概要説明を提供することを目的とする。一方、ハンドヘルド、ポータブルおよびその他のコンピューティングデバイス、ポータブルおよび固定ゲームデバイス、並びに全ての種類のコンピューティングオブジェクトが、本発明に関連する使用を意図されていることが理解されるべきである。汎用コンピュータが以下に説明されるが、これは一例に過ぎず、本発明は、ネットワーク/バス相互運用および相互通信を有するシンクライアントに実装することもできる。したがって、本発明は、とても小さいまたは最小限のクライアントリソースに実装されるネットワーク化ホストサービス(networked hosted service)の環境内に実装することができる。それは例えば、家電製品内に配置されたオブジェクトのような、クライアントデバイスが、単にネットワーク/バスに対するインターフェースとしての役割を果たすに過ぎないネットワーク化環境である。基本的には、本発明による仮想化技術の動作には、データが格納される、若しくは、データが抽出され、他のコンピュータに転送されるところが、望ましいまたは適切な環境である。
Claims (20)
- 第1のCPUタイプのコンピュータ実行可能コードを、第2のCPUタイプのコンピュータ実行可能コードへ変換する方法であって、
前記第1のCPUタイプの前記コンピュータ実行可能コードのストリームを解析して、前記第1のCPUタイプの前記コンピュータ実行可能コード内の関数に対応する、前記第1のCPUタイプの前記コンピュータ実行可能コードの前記ストリーム内のCPUコード命令のシーケンスを識別するステップと、
前記関数に対応する前記ストリーム内のCPUコード命令の前記シーケンスから、第2のCPUタイプの前記実行可能コードのシーケンスを生成するステップと
を備えることを特徴とする方法。 - 前記第1のCPUタイプはx86であり、前記第2のCPUタイプはパワーPCであることを特徴とする請求項1に記載の方法。
- 前記解析するステップは、コンパイラに、前記第1のCPUタイプの前記コンピュータ実行可能コードの前記ストリーム内の関数の最初に始まる、前記第1のCPUタイプの命令のリストを作成するように指示するステップと、関数命令の最後に到達し、前記第1のCPUタイプの命令の前記リスト内に未解決の条件分岐がない場合に、前記第1のCPUタイプの前記コンピュータ実行可能命令の前記ストリーム内のある地点で、前記第1のCPUタイプの命令の前記リストを終了させるステップとを備えることを特徴とする請求項1に記載の方法。
- 命令の前記リストを分析して、最適化を見いだすステップと、前記生成するステップの前に、前記最適化を実行するステップとをさらに備えることを特徴とする請求項3に記載の方法。
- 前記第2のCPUタイプの実行可能コードの前記生成されたシーケンスを分析して、最適化を見いだすステップと、前記最適化を実行するステップとをさらに備えることを特徴とする請求項4に記載の方法。
- 前記第2のCPUタイプの前記実行可能コードの前記シーケンスをコンパイルし、格納するステップと、前記コンパイルされたシーケンスが格納されるメモリアドレスを、前記第1のCPUタイプの前記関数の前記最初のメモリアドレスに関連付けるステップとをさらに備えることを特徴とする請求項3に記載の方法。
- 第1のCPUタイプのコンピュータ実行可能コードを、第2のCPUタイプのコンピュータ実行可能コードに変換するバイナリ変換システムであって、
前記第1のCPUタイプの前記コンピュータ実行可能コードのストリームを解析して、前記第1のCPUタイプの前記コンピュータ実行可能コード内の関数に対応する、前記第1のCPUタイプの前記コンピュータ実行可能コードの前記ストリーム内のCPUコード命令のシーケンスを識別するパーサと、
前記関数に対応する前記ストリーム内のCPUコード命令の前記シーケンスから、前記第2のCPUタイプの前記実行可能コードのシーケンスを生成するコードジェネレータと
を備えることを特徴とするバイナリ変換システム。 - 前記第1のCPUタイプはx86であり、前記第2のCPUタイプはパワーPCであることを特徴とする請求項7に記載のバイナリ変換システム。
- 前記パーサは、前記第1のCPUタイプの前記コンピュータ実行可能コードの前記ストリーム内の関数の最初に始まる、前記第1のCPUタイプの命令のリストを作成し、関数命令の最後に到達し、前記第1のCPUタイプの命令の前記リスト内に未解決の条件分岐がない場合に、前記第1のCPUタイプの前記コンピュータ実行可能コードの前記ストリーム内のある地点で、前記第1のCPUタイプの命令の前記リストを終了させることを特徴とする請求項7に記載のバイナリ変換システム。
- 命令の前記リストを分析して、最適化を見いだし、前記コードジェネレータに命令の前記リストを提供する前に、前記最適化を実行するオプティマイザをさらに備えることを特徴とする請求項9に記載のバイナリ変換システム。
- 前記第2のCPUタイプの実行可能コードの前記生成されたシーケンスを分析して、最適化を見いだし、前記最適化を実行する第2のオプティマイザをさらに備えることを特徴とする請求項10に記載のバイナリ変換システム。
- 前記第2のCPUタイプの前記実行可能コードの前記シーケンスをコンパイルし、格納するコンパイラをさらに備えることを特徴とする請求項9に記載のバイナリ変換システム。
- 前記コンパイルされたシーケンスが格納されるメモリアドレスと、前記第1のCPUタイプの前記関数の前記最初のメモリアドレスとを格納するテーブルをさらに備え、該テーブルは、前記メモリアドレスを互いに関連付けることを特徴とする請求項12に記載のバイナリ変換システム。
- ホストコンピュータシステムに挿入されると、第1のCPUタイプのコンピュータ実行可能コードを第2のCPUタイプのコンピュータ実行可能コードに変換するバイナリ変換システムを作り出すコンピュータ読取り可能媒体であって、
前記第1のCPUタイプの前記コンピュータ実行可能コードのストリームを解析して、前記第1のCPUタイプの前記コンピュータ実行可能コード内の関数に対応する、前記第1のCPUタイプの前記コンピュータ実行可能コード前記ストリーム内のCPUコード命令のシーケンスを識別するパーサソフトウェアと、
前記関数に対応する前記ストリーム内のCPUコード命令の前記シーケンスから、前記第2のCPUタイプの前記実行可能コードのシーケンスを生成するコードジェネレータソフトウェアと
を備えることを特徴とするコンピュータ読取り可能媒体。 - 前記第1のCPUタイプはx86であり、前記第2のCPUタイプはパワーPCであることを特徴とする請求項14に記載のコンピュータ読取り可能媒体。
- 前記パーサソフトウェアは、前記第1のCPUタイプの前記コンピュータ実行可能コードの前記ストリーム内の関数の最初に始まる、前記第1のCPUタイプの命令のリストを作成し、関数命令の最後に到達し、前記第1のCPUタイプの命令の前記リスト内に未解決の条件分岐がない場合に、前記第1のCPUタイプの前記コンピュータ実行可能コードの前記ストリーム内のある地点で、前記第1のCPUタイプの命令の前記リストを終了させることを特徴とする請求項14に記載のコンピュータ読取り可能媒体。
- 命令の前記リストを分析して、最適化を見いだし、前記コードジェネレータソフトウェアに命令の前記リストを提供する前に、前記最適化を実行するオプティマイザソフトウェアをさらに備えることを特徴とする請求項16に記載のコンピュータ読取り可能媒体。
- 前記第2のCPUタイプの実行可能コードの前記生成されたシーケンスを分析して、最適化を見いだし、前記最適化を実行することを特徴とする請求項17に記載のコンピュータ読取り可能媒体。
- 前記第2のCPUタイプの前記実行可能コードの前記シーケンスをコンパイルし、格納するコンパイラをさらに備えることを特徴とする請求項16に記載のコンピュータ読取り可能媒体。
- 前記コンパイルされたシーケンスが格納されるメモリアドレスと、前記第1のCPUタイプの前記関数の前記最初のメモリアドレスとを格納するテーブルをさらに備え、該テーブルは、前記メモリアドレスを互いに関連付けることを特徴とする請求項19に記載のコンピュータ読取り可能媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/128,699 | 2005-05-12 | ||
US11/128,699 US20070006178A1 (en) | 2005-05-12 | 2005-05-12 | Function-level just-in-time translation engine with multiple pass optimization |
PCT/US2006/016274 WO2006124242A2 (en) | 2005-05-12 | 2006-04-28 | Function-level just-in-time translation engine with multiple pass optimization |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008545179A true JP2008545179A (ja) | 2008-12-11 |
JP5139975B2 JP5139975B2 (ja) | 2013-02-06 |
Family
ID=37431763
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008511153A Expired - Fee Related JP5139975B2 (ja) | 2005-05-12 | 2006-04-28 | 複数の経路最適化を備える関数レベルジャストインタイム変換エンジン |
Country Status (6)
Country | Link |
---|---|
US (1) | US20070006178A1 (ja) |
EP (1) | EP1869852A4 (ja) |
JP (1) | JP5139975B2 (ja) |
KR (1) | KR101293868B1 (ja) |
CN (1) | CN101517536B (ja) |
WO (1) | WO2006124242A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015525922A (ja) * | 2012-08-08 | 2015-09-07 | インテル コーポレイション | バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング |
JP2023021045A (ja) * | 2021-07-28 | 2023-02-09 | ソニー・インタラクティブエンタテインメント エルエルシー | レガシーゲーム用aotコンパイラ |
Families Citing this family (67)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2397665A (en) * | 2003-01-27 | 2004-07-28 | Hewlett Packard Co | Operating system data management |
US20060259896A1 (en) * | 2005-05-16 | 2006-11-16 | Microsoft Corporation | Maintaining reproducibility across multiple software builds |
US8423824B2 (en) | 2005-08-29 | 2013-04-16 | The Invention Science Fund I, Llc | Power sparing synchronous apparatus |
US7739524B2 (en) * | 2005-08-29 | 2010-06-15 | The Invention Science Fund I, Inc | Power consumption management |
US8209524B2 (en) * | 2005-08-29 | 2012-06-26 | The Invention Science Fund I, Llc | Cross-architecture optimization |
US8516300B2 (en) | 2005-08-29 | 2013-08-20 | The Invention Science Fund I, Llc | Multi-votage synchronous systems |
US7627739B2 (en) * | 2005-08-29 | 2009-12-01 | Searete, Llc | Optimization of a hardware resource shared by a multiprocessor |
US7493516B2 (en) * | 2005-08-29 | 2009-02-17 | Searete Llc | Hardware-error tolerant computing |
US7877584B2 (en) * | 2005-08-29 | 2011-01-25 | The Invention Science Fund I, Llc | Predictive processor resource management |
US8255745B2 (en) * | 2005-08-29 | 2012-08-28 | The Invention Science Fund I, Llc | Hardware-error tolerant computing |
US20070050608A1 (en) * | 2005-08-29 | 2007-03-01 | Searete Llc, A Limited Liability Corporatin Of The State Of Delaware | Hardware-generated and historically-based execution optimization |
US7647487B2 (en) * | 2005-08-29 | 2010-01-12 | Searete, Llc | Instruction-associated processor resource optimization |
US7779213B2 (en) * | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US7725693B2 (en) * | 2005-08-29 | 2010-05-25 | Searete, Llc | Execution optimization using a processor resource management policy saved in an association with an instruction group |
US8214191B2 (en) * | 2005-08-29 | 2012-07-03 | The Invention Science Fund I, Llc | Cross-architecture execution optimization |
US8181004B2 (en) * | 2005-08-29 | 2012-05-15 | The Invention Science Fund I, Llc | Selecting a resource management policy for a resource available to a processor |
US7774558B2 (en) * | 2005-08-29 | 2010-08-10 | The Invention Science Fund I, Inc | Multiprocessor resource optimization |
US7653834B2 (en) * | 2005-08-29 | 2010-01-26 | Searete, Llc | Power sparing synchronous apparatus |
US8108201B2 (en) * | 2005-11-17 | 2012-01-31 | International Business Machines Corporation | Method for emulating a native device on a host computer system |
US20070234307A1 (en) * | 2006-03-06 | 2007-10-04 | Chi-Keung Luk | Methods and apparatus to inline conditional software instrumentation |
US8413125B2 (en) * | 2007-01-26 | 2013-04-02 | Oracle International Corporation | Asynchronous dynamic compilation based on multi-session profiling to produce shared native code |
JP2008276735A (ja) * | 2007-04-03 | 2008-11-13 | Toshiba Corp | プログラムコード変換装置及びプログラムコード変換方法 |
US20080250231A1 (en) * | 2007-04-03 | 2008-10-09 | Kabushiki Kaisha Toshiba | Program code conversion apparatus, program code conversion method and recording medium |
CN101295265A (zh) * | 2007-04-25 | 2008-10-29 | 国际商业机器公司 | 全系统isa仿真系统及其识别进程的方法 |
CN101689106B (zh) * | 2007-06-12 | 2013-10-09 | 松下电器产业株式会社 | 多处理器控制装置、多处理器控制方法以及多处理器控制电路 |
US8782618B1 (en) * | 2008-01-08 | 2014-07-15 | The Mathworks, Inc. | Instrument based processing |
US8886675B2 (en) * | 2008-01-23 | 2014-11-11 | Sap Se | Method and system for managing data clusters |
US7979260B1 (en) * | 2008-03-31 | 2011-07-12 | Symantec Corporation | Simulating PXE booting for virtualized machines |
US8117346B2 (en) * | 2008-10-03 | 2012-02-14 | Microsoft Corporation | Configuration space virtualization |
US20100188412A1 (en) * | 2009-01-28 | 2010-07-29 | Microsoft Corporation | Content based cache for graphics resource management |
US8711159B2 (en) * | 2009-02-23 | 2014-04-29 | Microsoft Corporation | VGPU: a real time GPU emulator |
US8327358B2 (en) * | 2009-12-10 | 2012-12-04 | Empire Technology Development Llc | Hypervisor driver management in virtual machine environments |
US8683451B1 (en) * | 2010-04-30 | 2014-03-25 | The United States Of America As Represented By The Secretary Of The Navy | System and method for translating software code |
US8479176B2 (en) * | 2010-06-14 | 2013-07-02 | Intel Corporation | Register mapping techniques for efficient dynamic binary translation |
US9053053B2 (en) * | 2010-11-29 | 2015-06-09 | International Business Machines Corporation | Efficiently determining identical pieces of memory used by virtual machines |
US9201678B2 (en) | 2010-11-29 | 2015-12-01 | International Business Machines Corporation | Placing a virtual machine on a target hypervisor |
EP2668565B1 (en) | 2011-01-27 | 2019-11-06 | Intel Corporation | Guest instruction to native instruction range based mapping using a conversion look aside buffer of a processor |
WO2012103245A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines Inc. | Guest instruction block with near branching and far branching sequence construction to native instruction block |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103373A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Variable caching structure for managing physical storage |
WO2012103359A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
WO2012103253A2 (en) * | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
US8468600B1 (en) * | 2011-03-04 | 2013-06-18 | Adobe Systems Incorporated | Handling instruction received from a sandboxed thread of execution |
US8984478B2 (en) | 2011-10-03 | 2015-03-17 | Cisco Technology, Inc. | Reorganization of virtualized computer programs |
JP5961971B2 (ja) * | 2011-10-12 | 2016-08-03 | 富士通株式会社 | シミュレーション装置,方法,およびプログラム |
CN103186414A (zh) * | 2011-12-27 | 2013-07-03 | 联想(北京)有限公司 | 一种程序执行方法、程序管理器和虚拟机 |
US10437591B2 (en) * | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
US9110723B2 (en) * | 2013-03-13 | 2015-08-18 | Intel Corporation | Multi-core binary translation task processing |
EP2972798B1 (en) | 2013-03-15 | 2020-06-17 | Intel Corporation | Method and apparatus for guest return address stack emulation supporting speculation |
US9525586B2 (en) * | 2013-03-15 | 2016-12-20 | Intel Corporation | QoS based binary translation and application streaming |
WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
CN103365665A (zh) * | 2013-07-25 | 2013-10-23 | 成都品果科技有限公司 | 一种基于虚拟指令的应用程序移植方法 |
US10120681B2 (en) | 2014-03-14 | 2018-11-06 | International Business Machines Corporation | Compare and delay instructions |
US9558032B2 (en) | 2014-03-14 | 2017-01-31 | International Business Machines Corporation | Conditional instruction end operation |
US9454370B2 (en) * | 2014-03-14 | 2016-09-27 | International Business Machines Corporation | Conditional transaction end instruction |
US10311227B2 (en) * | 2014-09-30 | 2019-06-04 | Apple Inc. | Obfuscation of an address space layout randomization mapping in a data processing system |
US10311228B2 (en) | 2014-09-30 | 2019-06-04 | Apple Inc. | Using a fine-grained address space layout randomization to mitigate potential security exploits |
WO2016162720A1 (en) * | 2015-04-10 | 2016-10-13 | Google Inc. | Binary translation into native client |
KR102023668B1 (ko) * | 2015-04-10 | 2019-09-20 | 구글 엘엘씨 | 공유된 객체 레벨에 대한 이진 트랜슬레이션 |
US9335982B1 (en) | 2015-04-28 | 2016-05-10 | Microsoft Technology Licensing, Llc | Processor emulation using multiple translations |
FR3036206B1 (fr) * | 2015-05-11 | 2017-06-09 | Thales Sa | Procede de reutilisation de moyens certifies de mise en oeuvre d'une fonction embarquee notamment a bord d'un aeronef |
US9786026B2 (en) | 2015-06-15 | 2017-10-10 | Microsoft Technology Licensing, Llc | Asynchronous translation of computer program resources in graphics processing unit emulation |
US9881351B2 (en) | 2015-06-15 | 2018-01-30 | Microsoft Technology Licensing, Llc | Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation |
EP3235549A1 (en) * | 2016-04-21 | 2017-10-25 | KooJoo Ltd | Gameplay trigger detection |
US10133655B1 (en) | 2017-06-12 | 2018-11-20 | Sony Interactive Entertainment Inc. | Emulation of target system using JIT compiler and bypassing translation of selected target code blocks |
US11487565B2 (en) * | 2020-10-29 | 2022-11-01 | Hewlett Packard Enterprise Development Lp | Instances of just-in-time (JIT) compilation of code using different compilation settings |
US11900104B2 (en) | 2021-10-26 | 2024-02-13 | Vfunction, Inc. | Method and system for identifying and removing dead codes from a computer program |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS51853A (ja) * | 1974-06-21 | 1976-01-07 | Hitachi Ltd | Deetashorishisutemuno meireigoseisochi |
JPS6314240A (ja) * | 1986-07-07 | 1988-01-21 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | コンピュータ・プログラムの変換方法 |
JPH09212370A (ja) * | 1996-01-25 | 1997-08-15 | Internatl Business Mach Corp <Ibm> | ゲスト命令をエミュレートするプロセッサの性能改善方法及びシステム |
JPH11175349A (ja) * | 1997-11-11 | 1999-07-02 | Internatl Business Mach Corp <Ibm> | データ列生成方法及び装置、変換方法、及びコンピュータ |
JP2003196107A (ja) * | 2001-11-29 | 2003-07-11 | Hewlett Packard Co <Hp> | エミュレートされるコードとネイティブコードとを統合するシステムおよび方法 |
JP2004280795A (ja) * | 2003-03-13 | 2004-10-07 | Northrop Grumman Corp | エクストリームパイプライン及び最適化再配列技術 |
WO2005008478A2 (en) * | 2003-07-15 | 2005-01-27 | Transitive Limited | Method and apparatus for performing native binding |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4456954A (en) * | 1981-06-15 | 1984-06-26 | International Business Machines Corporation | Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations |
US4974159A (en) * | 1988-09-13 | 1990-11-27 | Microsoft Corporation | Method of transferring control in a multitasking computer system |
US5437033A (en) * | 1990-11-16 | 1995-07-25 | Hitachi, Ltd. | System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode |
US5507030A (en) * | 1991-03-07 | 1996-04-09 | Digitial Equipment Corporation | Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses |
US5307504A (en) * | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events |
US5781750A (en) * | 1994-01-11 | 1998-07-14 | Exponential Technology, Inc. | Dual-instruction-set architecture CPU with hidden software emulation mode |
US5842017A (en) * | 1996-01-29 | 1998-11-24 | Digital Equipment Corporation | Method and apparatus for forming a translation unit |
US6330691B1 (en) * | 1996-02-23 | 2001-12-11 | Institute For The Development Of Emerging Architectures Llc | Use of dynamic translation to provide breakpoints in non-writeable object code |
US6282657B1 (en) * | 1997-09-16 | 2001-08-28 | Safenet, Inc. | Kernel mode protection |
US6397242B1 (en) * | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US6496847B1 (en) * | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US6704925B1 (en) * | 1998-09-10 | 2004-03-09 | Vmware, Inc. | Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache |
US6732220B2 (en) * | 1999-02-17 | 2004-05-04 | Elbrus International | Method for emulating hardware features of a foreign architecture in a host operating system environment |
US6321314B1 (en) * | 1999-06-09 | 2001-11-20 | Ati International S.R.L. | Method and apparatus for restricting memory access |
US6802056B1 (en) * | 1999-06-30 | 2004-10-05 | Microsoft Corporation | Translation and transformation of heterogeneous programs |
US6868387B1 (en) * | 2000-06-23 | 2005-03-15 | Abb Vetco Gray, Inc. | Automated notification of part revisions for outside suppliers |
US6651132B1 (en) * | 2000-07-17 | 2003-11-18 | Microsoft Corporation | System and method for emulating the operation of a translation look-aside buffer |
JP2002041305A (ja) * | 2000-07-26 | 2002-02-08 | Hitachi Ltd | 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム |
US7085705B2 (en) * | 2000-12-21 | 2006-08-01 | Microsoft Corporation | System and method for the logical substitution of processor control in an emulated computing environment |
US7035963B2 (en) * | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
US6643759B2 (en) * | 2001-03-30 | 2003-11-04 | Mips Technologies, Inc. | Mechanism to extend computer memory protection schemes |
US7191440B2 (en) * | 2001-08-15 | 2007-03-13 | Intel Corporation | Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor |
US7103529B2 (en) * | 2001-09-27 | 2006-09-05 | Intel Corporation | Method for providing system integrity and legacy environment emulation |
US7213240B2 (en) * | 2001-10-05 | 2007-05-01 | Sun Microsystems, Inc. | Platform-independent selective ahead-of-time compilation |
US20030088860A1 (en) * | 2001-11-02 | 2003-05-08 | Fu-Hwa Wang | Compiler annotation for binary translation tools |
US7124273B2 (en) * | 2002-02-25 | 2006-10-17 | Intel Corporation | Method and apparatus for translating guest physical addresses in a virtual machine environment |
US7127548B2 (en) * | 2002-04-16 | 2006-10-24 | Intel Corporation | Control register access virtualization performance improvement in the virtual-machine architecture |
US7296267B2 (en) * | 2002-07-12 | 2007-11-13 | Intel Corporation | System and method for binding virtual machines to hardware contexts |
US20040083467A1 (en) * | 2002-10-29 | 2004-04-29 | Sharp Laboratories Of America, Inc. | System and method for executing intermediate code |
US7318141B2 (en) * | 2002-12-17 | 2008-01-08 | Intel Corporation | Methods and systems to control virtual machines |
US7100154B2 (en) * | 2003-01-16 | 2006-08-29 | International Business Machines Corporation | Dynamic compiler apparatus and method that stores and uses persistent execution statistics |
US7162617B2 (en) * | 2003-02-14 | 2007-01-09 | Fine Arc Incorporated | Data processor with changeable architecture |
US7111145B1 (en) * | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US7543284B2 (en) * | 2003-04-22 | 2009-06-02 | Transitive Limited | Partial dead code elimination optimizations for program code conversion |
US7299460B2 (en) * | 2003-05-29 | 2007-11-20 | Nec Corporation | Method and computer program for converting an assembly language program for one processor to another |
US7421698B2 (en) * | 2003-12-22 | 2008-09-02 | Sun Microsystems, Inc. | System and method for dynamically and persistently tracking incremental profiling data in a process cloning application environment |
US7565631B1 (en) * | 2004-07-02 | 2009-07-21 | Northwestern University | Method and system for translating software binaries and assembly code onto hardware |
US7213125B2 (en) * | 2004-07-31 | 2007-05-01 | Hewlett-Packard Development Company, L.P. | Method for patching virtually aliased pages by a virtual-machine monitor |
US7752030B2 (en) * | 2004-08-03 | 2010-07-06 | Intel Corporation | Virtualization as emulation support |
US7624384B2 (en) * | 2004-11-30 | 2009-11-24 | Intel Corporation | Apparatus, system, and method of dynamic binary translation with translation reuse |
US7496495B2 (en) * | 2005-05-12 | 2009-02-24 | Microsoft Corporation | Virtual operating system device communication relying on memory access violations |
US20070016895A1 (en) * | 2005-07-15 | 2007-01-18 | Microsoft Corporation | Selective omission of endian translation to enhance emulator performance |
-
2005
- 2005-05-12 US US11/128,699 patent/US20070006178A1/en not_active Abandoned
-
2006
- 2006-04-28 WO PCT/US2006/016274 patent/WO2006124242A2/en active Application Filing
- 2006-04-28 KR KR1020077025725A patent/KR101293868B1/ko active IP Right Grant
- 2006-04-28 CN CN200680016250.8A patent/CN101517536B/zh not_active Expired - Fee Related
- 2006-04-28 JP JP2008511153A patent/JP5139975B2/ja not_active Expired - Fee Related
- 2006-04-28 EP EP06751795A patent/EP1869852A4/en not_active Ceased
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS51853A (ja) * | 1974-06-21 | 1976-01-07 | Hitachi Ltd | Deetashorishisutemuno meireigoseisochi |
JPS6314240A (ja) * | 1986-07-07 | 1988-01-21 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | コンピュータ・プログラムの変換方法 |
JPH09212370A (ja) * | 1996-01-25 | 1997-08-15 | Internatl Business Mach Corp <Ibm> | ゲスト命令をエミュレートするプロセッサの性能改善方法及びシステム |
JPH11175349A (ja) * | 1997-11-11 | 1999-07-02 | Internatl Business Mach Corp <Ibm> | データ列生成方法及び装置、変換方法、及びコンピュータ |
JP2003196107A (ja) * | 2001-11-29 | 2003-07-11 | Hewlett Packard Co <Hp> | エミュレートされるコードとネイティブコードとを統合するシステムおよび方法 |
JP2004280795A (ja) * | 2003-03-13 | 2004-10-07 | Northrop Grumman Corp | エクストリームパイプライン及び最適化再配列技術 |
WO2005008478A2 (en) * | 2003-07-15 | 2005-01-27 | Transitive Limited | Method and apparatus for performing native binding |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015525922A (ja) * | 2012-08-08 | 2015-09-07 | インテル コーポレイション | バーチャルファンクションを無効にするコールのためのサポートを含むisaブリッジング |
JP2023021045A (ja) * | 2021-07-28 | 2023-02-09 | ソニー・インタラクティブエンタテインメント エルエルシー | レガシーゲーム用aotコンパイラ |
JP7436579B2 (ja) | 2021-07-28 | 2024-02-21 | ソニー・インタラクティブエンタテインメント エルエルシー | レガシーゲーム用aotコンパイラ |
Also Published As
Publication number | Publication date |
---|---|
KR101293868B1 (ko) | 2013-08-07 |
CN101517536A (zh) | 2009-08-26 |
EP1869852A2 (en) | 2007-12-26 |
JP5139975B2 (ja) | 2013-02-06 |
US20070006178A1 (en) | 2007-01-04 |
CN101517536B (zh) | 2015-08-19 |
KR20080000638A (ko) | 2008-01-02 |
WO2006124242A3 (en) | 2009-05-14 |
EP1869852A4 (en) | 2010-07-21 |
WO2006124242A2 (en) | 2006-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5139975B2 (ja) | 複数の経路最適化を備える関数レベルジャストインタイム変換エンジン | |
US7496495B2 (en) | Virtual operating system device communication relying on memory access violations | |
CN108762815B (zh) | 一种基于非虚拟化体系架构的Android运行环境实现方法 | |
Smith et al. | The architecture of virtual machines | |
Heiser et al. | The OKL4 Microvisor: Convergence point of microkernels and hypervisors | |
EP1209564B1 (en) | Kernel emulator for non-native program modules | |
Chiueh et al. | A survey on virtualization technologies | |
US20070016895A1 (en) | Selective omission of endian translation to enhance emulator performance | |
EP3350696B1 (en) | Overriding a migrated method of an updated type | |
US20180074843A1 (en) | System, method, and computer program product for linking devices for coordinated operation | |
Donovan et al. | PNaCl: Portable native client executables | |
EP2076863A2 (en) | Virtualization for diversified tamper resistance | |
US7069412B2 (en) | Method of using a plurality of virtual memory spaces for providing efficient binary compatibility between a plurality of source architectures and a single target architecture | |
JP2005507114A (ja) | ネイティブおよび非ネイティブの共有データ構造の間でのデータ整列 | |
CN117369993A (zh) | 在Linux环境下兼容运行不同业务系统的方法及信创服务器 | |
Murray et al. | Privilege separation made easy: trusting small libraries not big processes | |
Okafor et al. | Eliminating the operating system via the bare machine computing paradigm | |
US9081646B2 (en) | Building packages of functionally different programs from source code of a single program | |
Wen et al. | WasmAndroid: a cross-platform runtime for native programming languages on Android (WIP paper) | |
Rogers et al. | JikesNODE and PearColator: A Jikes RVM operating system and legacy code execution environment | |
Smith et al. | Introduction to virtual Machines | |
Singh et al. | Getting Started with WSL | |
Tijms | Binary translation: Classification of emulators | |
Ramlot | Optimising memory usage of Kubernetes operators | |
CN114860382A (zh) | 数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090323 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20111212 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120106 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120406 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120706 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121005 |
|
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: 20121102 |
|
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: 20121116 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20151122 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |