JP2008299833A - 作業遂行速度を向上させる装置および方法 - Google Patents

作業遂行速度を向上させる装置および方法 Download PDF

Info

Publication number
JP2008299833A
JP2008299833A JP2008043716A JP2008043716A JP2008299833A JP 2008299833 A JP2008299833 A JP 2008299833A JP 2008043716 A JP2008043716 A JP 2008043716A JP 2008043716 A JP2008043716 A JP 2008043716A JP 2008299833 A JP2008299833 A JP 2008299833A
Authority
JP
Japan
Prior art keywords
code
native
native code
block
bytecode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008043716A
Other languages
English (en)
Other versions
JP5508681B2 (ja
Inventor
Hyo-Jung Song
孝 晶 宋
K John Lizy
ケー ジョン リジー
Isen Ciji
イセン シズィ
Jung-Pil Choi
正 必 崔
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.)
Samsung Electronics Co Ltd
University of Texas System
Original Assignee
Samsung Electronics Co Ltd
University of Texas System
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 Samsung Electronics Co Ltd, University of Texas System filed Critical Samsung Electronics Co Ltd
Publication of JP2008299833A publication Critical patent/JP2008299833A/ja
Application granted granted Critical
Publication of JP5508681B2 publication Critical patent/JP5508681B2/ja
Active 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 本発明は、作業遂行速度を向上させる装置および方法に関するものであって、バイトコードでのコンパイルとネイティブコードの実行をバイトコード単位で遂行するようにするのではなく、一連のバイトコードであるブロック単位で遂行するようにする作業遂行速度を向上させる装置および方法に関するものである。
【解決手段】 本発明の実施形態による作業遂行速度を向上させる装置はバイトコードを受信する受信部と、上記受信されたバイトコードがブロックの最後のバイトコードであるのか確認する制御部および上記確認結果によって上記ブロックに含まれた少なくとも一つのバイトコードに対するネイティブコードのうち最初のネイティブコードの住所を送信する送信部を含む。
【選択図】図2

Description

本発明は、作業遂行速度を向上させる装置および方法に関するものであって、さらに詳細にはバイトコードでのコンパイルとネイティブコードの実行をバイトコード単位で遂行するようにするのではなく、一連のバイトコードのブロック単位で遂行するようにする作業遂行速度を向上させる装置および方法に関するものである。
ジャバ(Java)(登録商標)は、作成されたコードをプラットホーム独立的に遂行する客体指向プログラミング言語である。ここで、プラットホームはプログラムが実行されるハードウェアあるいはオペレーティングシステムのようなソフトウェア環境を言う。ジャバで作成されたコードはジャバコンパイラ(Java(登録商標) Compiler)によってバイトコード(Byte Code)にコンパイルされ、バイトコードは多様なハードウェア基盤プラットホームにポーティングされたジャバ仮想マシン(Java(登録商標) Virtual Machine)によって実行される。
バイトコードは、機械語のような命令語として特定プロセッサに局限されない。このようなバイトコードを実行するため、仮想マシンが動作するようになるが、仮想マシンはバイトコードを翻訳し、対応するネイティブコードに変換する。バイトコードは、特定アーキテクチャに局限されないため、バイトコードを実行するジャバ仮想マシンが具備されたアーキテクチャでも実行され得、これにしたがい、二進(binary)バイトコードファイルがプラットホーム独立的に実行され得るものである。
ジャバにおいての主要弱点としては実行速度にある。特定アーキテクチャにコンパイルされたプログラムはバイトコードよって速く実行されるが、これはそのようなプログラムがプロセッサアーキテクチャをまた他のプロセッサアーキテクチャ上でエミュレート(emulate)する必要なく、ハードウェア上で直接実行されるためである。
バイトコードにおいて、プロセッサ上で動作するジャバ仮想マシンはその動作以前にバイトコードをネイティブコードに変換しなければならない。
バイトコードの実行速度を増加させるためのハードウェアあるいはソフトウェア的な多様な技術が試みられている。ジャバ仮想マシンの速度を増加させるため、JIT(Just In Time)あるいはこれよりさらに速いHot Spot JITsのようなソフトウェア技術が利用されることもある。ここで、JITはネイティブプロセッサ命令語を生成することにおいて、コンパイルオーバーヘッドおよびメモリーオーバーヘッドを随伴する。
バイトコードの翻訳速度を向上させるハードウェア的な技術として、プロセッサアーキテクチャを修正したり外部プロセッサを利用する技術が試みられている。
図1は、従来技術によってバイトコードをネイティブコードに変換し、実行する過程を示している。
その動作過程を察し見ると、プロセッサ(CPU)上で動作するソフトウェアルーチンが先にバイトコードをロード(load)し、プロセッサはバイトコードあるいはバイトコードの住所をジャバ翻訳加速機に伝達する(S10)。伝達される対象がバイトコードの住所の場合、該当位置にあるバイトコードが呼び出しされ得る。
そして、バイトコードはバイトコード翻訳機220の内部に具備された状態マシンに入力され、状態マシンはネイティブコードキャッシュを検索し、同一なバイトコードに対し、キャッシュされた翻訳本すなわち、ネイティブコードがあるのかを確認する(S20)。そうして、万一存在すると、キャッシュされた位置の住所がプロセッサに伝達され(S60)、該当位置からコードが実行される(S70)。
一方、翻訳本に対するキャッシュが存在しない場合、状態マシンはルックアップテーブル225を検索する(S30)。バイトコード翻訳ルックアップテーブルは、ネイティブコードのマッピングあるいは変換のため、保存された情報として、バイトコードがルックアップテーブルに存在するのかが確認される(S40)。それで、万一バイトコードが存在しなければ、プロセスは終了され、バイトコードがルックアップテーブルに存在すると、ネイティブコードの翻訳本がネイティブコードキャッシュに複写される(S50)。そして、プロセッサはネイティブコードキャッシュの保存位置中、該当ネイティブコードの住所を伝達された後(S60)、該当位置からネイティブコードによる命令語を実行する(S70)。
最終的に翻訳されたバイトコードに対するネイティブコードが実行されると、次のバイトコードの翻訳開始を担当するソフトウェアあるいはハードウェアルーチンに制御権が移転され、このようなハンドオフ(handoff)は翻訳されたバイトコードの実行の最後段階で遂行される。
しかし、ハンドオフはあるいは他のオーバーヘッドとして、性能の損失を招来するため、ハンドオフの回数を減少させることによってシステムの性能を向上させる発明の登場が要求される。
特許文献1はジャバプログラム実行時に頻繁に使用されるバイトコードをネイティブコードにコンパイルし保存しておき、その後にジャバプログラムを実行するとき該当バイトコードに対するネイティブコード呼び出し実行させることによって、バイトコードをコンパイルしネイティブコードを生成するのに所要される時間を減少させる発明を開示している。
しかし、開示された発明は頻繁に使用されるバイトコードだけをネイティブコードにコンパイルして保存するため、バイトコードの使用頻度によって時間短縮の効率が異なることがある。
したがって、バイトコードの使用頻度と無関係にコンパイル時間を短縮することができる発明の登場が要求される。
大韓民国公開特許第10−2004−0076048号公報
本発明は、バイトコードでのコンパイルとネイティブコードの実行を一連のバイトコードのブロック単位で遂行するようにすることをその目的とする。
本発明の開示は、以上で言及した目的に制限されず、言及されていないさらなる目的は下の記載によって当業者に明確に理解されるものである。
上記目的を達成するため、本発明の実施形態による作業遂行速度を向上させる装置はバイトコードを受信する受信部と、上記受信されたバイトコードがブロックの最後のバイトコードであるのかを確認する制御部、および上記確認結果によって上記ブロックに含まれた少なくとも一つのバイトコードに対するネイティブコード中、最初のネイティブコードの住所を送信する送信部を含む。
本発明の実施形態による作業遂行速度を向上させる方法は、バイトコードを受信する段階と、上記受信されたバイトコードがブロックの最後のバイトコードであるのかを確認する段階、および上記確認結果によって上記ブロックに含まれた少なくとも一つのバイトコードに対するネイティブコード中、最初のネイティブコードの住所を送信する段階を含む。
その他実施形態の具体的な事項は詳細な説明および図面に含まれている。
上記したような、本発明の作業遂行速度を向上させる装置および方法によると、バイトコードでのコンパイルとネイティブコードの実行を一連のバイトコードのブロック単位で遂行することによって作業遂行速度を向上させる長所がある。
本発明の利点および特徴、そして、それらを達成する方法は添付される図面と共に詳細に後述されている実施形態を参照すれば明確になるものである。しかし、本発明は以下で開始される実施形態に限定されるものではなく、互いに異なる多様な形態で具現され得、単に本実施形態は本発明の開示を完全にし、本発明が属する技術分野で通常の知識を有する者に発明の範疇を完全に知らせるため、提供されているものであって、本発明は請求項の範疇によってのみ定義される。明細書全体において、同一参照符号は同一構成要素を示す。
以下、添付された図面を参照し、本発明の望ましい実施形態を詳細に説明する。
図2は、本発明の実施形態による作業遂行速度を向上させる装置を示したブロック図として、作業遂行速度を向上させる装置(以下、加速装置と言う)はプロセッサ100および翻訳加速機200を含み構成され、翻訳加速機200はネイティブコードキャッシュ210およびバイトコード翻訳機220を含み構成される。
プロセッサ100は、翻訳加速機200にバイトコード110を送信し、送信されたバイトコード110に対応するネイティブコード130を受信し、ネイティブコード130による命令語を実行する役割をする。ここで、バイトコード110はプログラミングコードがコンパイルされた機械語のような命令語として、特定プラットホームに局限されないコードを含む。
一方、プロセッサ100はバイトコード110の代わりにバイトコード110の住所を翻訳加速機200に送信することもできるが、バイトコード110の住所が送信された場合にもプロセッサ100は該当バイトコード110に対応するネイティブコード130を受信し、ネイティブコード130による命令語を実行することができる。
ネイティブコード130による命令語を実行するため、プロセッサ100は翻訳加速機200から特定ネイティブコードの住所120を受信し、受信された住所120を始め、以後に存在するネイティブコード130による命令語を実行する。すなわち、プロセッサ100は、一つのバイトコードを送信し、該当バイトコードに対応するネイティブコードを受信するものではなく、複数のバイトコードを送信し、複数のネイティブコードによる命令語を実行するところである。
ここで、プロセッサ100による作業対象であるネイティブコード130は、所定のブロック単位で存在することができるが、ブロックの最後に位置しているネイティブコードには該当ネイティブコードがブロックの最後にあることを示す情報が含み得る。これにしたがい、プロセッサ100は一つのブロックに含まれた一連のネイティブコードによる複数の命令語を実行するようになり、ブロックの最後まで作業を完了した場合、以後ブロックの最初のネイティブコードの住所を受信し、以後ブロックに対する作業を遂行するようになる。
翻訳加速機200は、プロセッサ100からバイトコード110を受信した後、受信されたバイトコード110を含むブロックの最初のネイティブコードの住所120をプロセッサ100に送信する役割をする。
一方、翻訳加速機200は、プロセッサ100からバイトコード110の代わりにバイトコード110の住所を受信することもできるが、この時翻訳加速機200は、該当住所に存在するバイトコードを利用し、ネイティブコードの住所120をプロセッサ100に送信することができる。
バイトコード110を受信し、ネイティブコード130を送信するため、翻訳加速機200にはバイトコード翻訳機220が含み得るが、バイトコード翻訳機220は、状態マシン300およびルックアップテーブル225を含み構成される。
状態マシン300は、プロセッサ100から受信されたバイトコード110がブロックの最後のバイトコードであるのかを確認し、その結果によってネイティブコードの住所120をプロセッサ100に送信する役割をする。
すなわち、受信されたバイトコード110がブロックの最後のバイトコードでない場合、ネイティブコードキャッシュ210に該当バイトコード110に対するネイティブコードを保存し、受信されたバイトコード110がブロックの最後のバイトコードの場合、ブロックの最初のバイトコードに対応するネイティブコードの住所120をプロセッサ100に送信するものである。状態マシン300に対する詳しい説明は図3によって後述することとする。
一方、本発明の実施形態による加速装置はプログラミングコードをコンパイル(compile)してバイトコードに変換し、バイトコードに対応するネイティブコードに翻訳(interpret)した後翻訳されたネイティブコードを実行するが、プログラミングコードにはジャバコードが含み得る。しかし、これは本発明の加速装置がジャバコードに対する作業だけを遂行し得ることを意味するものではなく、コンパイルと翻訳をリアルタイムで遂行するすべての環境で動作し得ることを意味するものとして理解しなければならない。
図3は、図2の装置に含まれた状態マシン300の詳細な構成を示したブロック図であって、状態マシン300は受信部310、インタープリタ320、データ管理部330、制御部340、コード確認部350、ルックアップテーブル検索部360および送信部370を含み構成される。
受信部310は、プロセッサ100からバイトコードを受信する役割をする。また、プロセッサ100がバイトコードの住所を送信した場合、受信部310は、バイトコードの住所を受信することもできる。
コード確認部350は、ネイティブコードキャッシュ210に受信されたバイトコードに対応するネイティブコードが存在するのかを確認する役割をする。ネイティブコードキャッシュ210は速い速度で読みと書きが可能な保存空間であって臨時的にネイティブコードを保存する役割をするが、コード確認部350は、ネイティブコードキャッシュ210に保存された情報中、受信されたバイトコードに対応するネイティブコードが保存されているのかを確認するところである。
ルックアップテーブル検索部360は、ルックアップテーブル225を検索し、受信されたバイトコードが存在するのかを確認する役割をする。ルックアップテーブル225は、バイトコードとネイティブコード間の対応関係が明示されたテーブルであって、ルックアップテーブル検索部360は、ルックアップテーブル225を検索することによって特定バイトコードに対応するネイティブコードの存在可否および保存位置を確認することができるようになる。
インタープリタ320は、受信されたバイトコードをネイティブコードに翻訳する役割をする。コード確認部350の確認結果によってネイティブコードキャッシュ210に該当ネイティブコードが保存されなく、ルックアップテーブル検索部360の検索結果によって受信されたバイトコードに対応するネイティブコードが存在しない場合、インタープリタ320が受信されたバイトコードを分析し、ネイティブコードを生成するものである。
データ管理部330は、ネイティブコードキャッシュ210にネイティブコードを保存する役割をする。すなわち、データ管理部330は、ルックアップテーブル検索部360によって受信されたバイトコードに対応するネイティブコードの位置が確認された場合、該当ネイティブコードをネイティブコードキャッシュ210に保存するか、インタープリタ320によって、ネイティブコードが生成された場合、生成されたネイティブコードをネイティブコードキャッシュ210に保存するところである。
データ管理部330は、制御部340からネイティブコード保存に対する制御命令を受信することによってネイティブコードを保存するが、制御命令を受信した順序によるネイティブコードキャッシュ210の保存空間にネイティブコードを保存することができる。例えば、現在保存対象となるネイティブコードの保存位置は、以前に保存されたネイティブコードに隣接した次の番地の保存空間である。
また、保存可否および保存位置が明示されたインデックステーブルが具備され得るが、インデックステーブルが具備された場合、データ管理部330は、保存対象のネイティブコードをネイティブコードキャッシュ210の任意の位置に保存することができ、ネイティブコードが保存された場合、インデックステーブルを更新することができる。
制御部340は、受信されたバイトコードがブロックの最後のバイトコードであるのかを確認する役割をする。ブロックの最後のバイトコードには該当バイトコードが最後のバイトコードであることを示す情報が含み得るが、制御部340は、これを利用し、受信されたバイトコードがブロックの最後のバイトコードであるのかを確認するところである。例えば、すべてのバイトコードには最後のバイトコード可否を示すフラッグが含み得るものであって、フラッグの値が0であれば、最後のバイトコードではなく、フラッグの値が1であれば、最後のバイトコードと設定され得るものである。
また、制御部340は、受信部310、インタープリタ320、データ管理部330、コード確認部350、ルックアップテーブル検索部360および送信部370の全般的な制御を遂行する。
送信部370は、制御部340の確認結果によってブロックに含まれた少なくとも一つのバイトコードに対するネイティブコード中、最初のネイティブコードの住所をプロセッサ100に送信する役割をする。
ネイティブコードの住所を受信することによって、プロセッサ100は受信されたネイティブコードの住所を始め、該当ブロックに含まれたすべてのネイティブコードによる命令語を実行するようになる。この時、プロセッサ100は、インデックステーブルを参照し、実行対象となるネイティブコードの順序と最後のネイティブコードの位置を確認することもできる。
図4は、本発明の実施形態によってネイティブコードがブロック単位で構成されるものを示した図面である。
前述したように、ネイティブコードキャッシュ210にはネイティブコードが保存されるが、ネイティブコードは図4に図示されたようにブロック単位で保存され得る。すなわち、少なくとも一つ以上のブロック410、420、430各々に少なくとも一つ以上のネイティブコードが含み得る。
受信部310によってバイトコードが受信された場合、コード確認部350およびルックアップテーブル検索部360は、受信されたバイトコードに対応するネイティブコードが存在するのかを確認し、その結果によってインタープリタ320はネイティブコードを生成し、データ管理部330は、別途の保存手段に保存されているネイティブコードあるいは生成されたネイティブコードをネイティブコードキャッシュ210にブロック単位で保存するところである。
そして、制御部340によって受信されたバイトコードがブロックの最後のバイトコードであると確認されると、制御部340は、該当ブロックの最初の位置に存在するネイティブコード(411、421、431)の住所を抽出した後、送信部370をとおし、プロセッサ100に送信する。ここで、ネイティブコードの住所はネイティブコードキャッシュ210上の住所を意味するが、これを受信したプロセッサ100は、該当住所に位置しているネイティブコードを始め、順次的にネイティブコードを抽出し、対応する命令語を実行する。これは、ブロックの最後に存在するネイティブコードによる命令語を実行する時まで進行され、ブロックに含まれたすべての作業が完了されると、受信部310は以後バイトコードを受信するようになる。
図5は、本発明の実施形態によるブロックが分岐命令語を基準として形成されたものであることを示した図面である。
本発明でブロックは命令語の集合として理解され得る。すなわち、ブロックに含まれた一連の命令語が順次に実行されるものである。したがって、コンパイルとインタープリタのハンドオフを減少させるためにはブロックにより多くの数のネイティブコードが含まれていることが望ましいが、実際にブロックは分岐命令語の位置によってその大きさが決定され得る。
例えば、if命令語のような分岐命令語が一つのブロックに含まれた場合、以後作業はランタイム時の状態によって決定され得るため、以後の作業は別途のブロックに含まれるしかないものである。
結局、ブロックの最後に位置しているネイティブコードによる命令語は分岐命令語であり得るものであって、ブロックの分岐が遂行されることによって、少なくとも二以上の分岐されたブロックが形成される。
図5に図示されたように、第1ブロック510の最後に位置しているネイティブコードによる命令語が分岐命令語であるため、分岐点501から第2ブロック(520)と第3ブロック(530)に分岐される。
そして、第2ブロック520および第3ブロック530の最後に位置しているネイティブコードによる命令語が分岐命令語であるため、各分岐点502,503から第4ブロック540と第5ブロック550に分岐され、第6ブロック560と第7ブロック570に分岐されるものである。
以上、分岐点の位置は分岐命令語の位置により決定されるものと説明したが、設定によって任意の位置に分岐点が位置し得ることはもちろんである。
図6は、本発明の実施形態による作業遂行速度を向上させる過程を示したフローチャートである。
作業遂行速度を向上させるため、状態マシン300の受信部310は、まずプロセッサ100からバイトコードあるいはバイトコードの住所を受信する(S610)。
そして、コード確認部350は、受信されたバイトコードに対応するネイティブコードがネイティブコードキャッシュ210に保存されているのかを確認する(S620)。この時、バイトコードの住所が確認された場合、コード確認部350は該当バイトコードを呼び出した後、これを利用し、ネイティブコードの保存可否を確認することもできる。
ネイティブコードが保存されている場合、送信部370はプロセッサ100にネイティブコードの住所すなわち、ネイティブコードが保存されているネイティブコードキャッシュ210上の住所をプロセッサ100に送信する(S690)。
ネイティブコードの住所を受信することによって、プロセッサ100は該当ネイティブコードを始め該当ブロックのすべてのネイティブコードによる命令語を実行する(S700)。
一方、ネイティブコードがネイティブコードキャッシュ210に保存されていない場合、ルックアップテーブル検索部360は、ルックアップテーブル225を検索し(S630)、受信されたバイトコードが存在するのかを確認する(S640)。
そして、ルックアップテーブル225にバイトコードが含まれている場合、制御部340は受信されたバイトコードがブロックの最後のバイトコードであるのかを確認する(S660)。
一方、ルックアップテーブル225にバイトコードが含まれていない場合、制御権がインタープリタ320に移転され、インタープリタ320によって受信されたバイトコードに対応するネイティブコードが生成された後に(S650)制御部340は、該当バイトコードがブロックの最後のバイトコードであるのかを確認する(S660)。
受信されたバイトコードがブロックの最後のバイトコードの場合、送信部370はプロセッサ100に該当バイトコードに対応するネイティブコードの住所をプロセッサ100に送信する(S690)。
一方、受信されたバイトコードがブロックの最後のバイトコードでない場合、データ管理部330は受信されたバイトコードに対応するネイティブコードをネイティブコードキャッシュ210に保存する(S670)。この時、データ管理部330はネイティブコードの保存可否および保存位置が明示されたインデックステーブルを更新することができる。
ネイティブコードがネイティブコードキャッシュ210に保存され、インデックステーブルが更新されることによって、受信部310は、次のバイトコードあるいはバイトコードの住所を受信するようになり(S680)、受信されたバイトコードに対応するネイティブコードの存在可否およびブロックでのバイトコードの位置確認などが反復され、遂行される。
以上添付された図面を参照し、本発明の実施形態を説明したが、本発明が属する技術分野において通常の知識を有する者は本発明がその技術的思想や必須の特徴を変更せず、他の具体的な形態において実施されるということを理解し得るものである。したがって、以上述した実施形態はすべての面で例示的なものであって、限定的ではないことを理解しなければならない。
従来技術によってバイトコードをネイティブコードに変換し、実行する過程を示したフローチャートである。 本発明の実施形態による作業遂行速度を向上させる装置を示したブロック図である。 図2の装置に含まれた状態マシンの詳細な構成を示したブロック図である。 本発明の実施形態によってネイティブコードがブロック単位で構成されるものを示した図である。 本発明の実施形態によるブロックが分岐命令語を基準として形成されたものであることを示した図である。 本発明の実施形態による作業遂行速度を向上させる過程を示したフローチャートである。
符号の説明
100 プロセッサ
200 翻訳加速機
210 ネイティブコードキャッシュ
220 バイトコード翻訳機
300 状態マシン

Claims (14)

  1. バイトコードを受信する受信部と、
    上記受信されたバイトコードがブロックの最後のバイトコードであるのかを確認する制御部、および
    上記確認結果によって上記ブロックに含まれた少なくとも一つのバイトコードに対するネイティブコード中、最初のネイティブコードの住所を送信する送信部を含む作業遂行速度を向上させる装置。
  2. 上記ブロックは少なくとも一つ以上の命令語中、分岐命令語の間に含まれた命令語に対するバイトコードを含む、請求項1に記載の作業遂行速度を向上させる装置。
  3. 上記確認結果によってネイティブコードキャッシュに上記受信されたバイトコードに対するネイティブコードを保存するデータ管理部をさらに含む、請求項1に記載の作業遂行速度を向上させる装置。
  4. 上記送信部は、上記ネイティブコードキャッシュに保存されたネイティブコード中、上記ブロックの最初のバイトコードに対応するネイティブコードの住所を送信する、請求項3に記載の作業遂行速度を向上させる装置。
  5. 上記ネイティブコードの住所を受信し、上記ブロックに含まれた少なくとも一つのバイトコードに対するネイティブコードによる作業を遂行するプロセッサをさらに含む、請求項1に記載の作業遂行速度を向上させる装置。
  6. 上記受信されたバイトコードに対応するネイティブコードの存在可否によって上記受信されたバイトコードに対応するネイティブコードを生成するインタープリタをさらに含む、請求項1に記載の作業遂行速度を向上させる装置。
  7. 上記バイトコードはジャバコンパイラによって、コンパイルされたジャバコードを含む、請求項1に記載の作業遂行速度を向上させる装置。
  8. バイトコードを受信する段階と、
    上記受信されたバイトコードがブロックの最後のバイトコードであるのかを確認する段階、および
    上記確認結果によって上記ブロックに含まれた少なくとも一つのバイトコードに対するネイティブコード中、最初のネイティブコードの住所を送信する段階を含む作業遂行速度を向上させる方法。
  9. 上記ブロックは少なくとも一つ以上の命令語中、分岐命令語の間に含まれた命令語に対するバイトコードを含む、請求項8に記載の作業遂行速度を向上させる方法。
  10. 上記確認結果によってネイティブコードキャッシュに上記受信されたバイトコードに対するネイティブコードを保存する段階をさらに含む、請求項8に記載の作業遂行速度を向上させる方法。
  11. 上記送信する段階は上記ネイティブコードキャッシュに保存されたネイティブコード中、上記ブロックの最初のバイトコードに対応するネイティブコードの住所を送信する段階を含む、請求項10に記載の作業遂行速度を向上させる方法。
  12. 上記ネイティブコードの住所を受信し、上記ブロックに含まれた少なくとも一つのバイトコードに対するネイティブコードによる作業を遂行する段階をさらに含む、請求項8に記載の作業遂行速度を向上させる方法。
  13. 上記受信されたバイトコードに対応するネイティブコードの存在可否によって上記受信されたバイトコードに対応するネイティブコードを生成する段階をさらに含む、請求項8に記載の作業遂行速度を向上させる方法。
  14. 上記バイトコードはジャバコンパイラによってコンパイルされたジャバコードを含む、請求項8に記載の作業遂行速度を向上させる方法。
JP2008043716A 2007-06-04 2008-02-26 作業遂行速度を向上させる装置および方法 Active JP5508681B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2007-0054661 2007-06-04
KR1020070054661A KR101407628B1 (ko) 2007-06-04 2007-06-04 작업 수행 속도를 향상시키는 장치 및 방법

Publications (2)

Publication Number Publication Date
JP2008299833A true JP2008299833A (ja) 2008-12-11
JP5508681B2 JP5508681B2 (ja) 2014-06-04

Family

ID=40089750

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008043716A Active JP5508681B2 (ja) 2007-06-04 2008-02-26 作業遂行速度を向上させる装置および方法

Country Status (4)

Country Link
US (1) US9235397B2 (ja)
JP (1) JP5508681B2 (ja)
KR (1) KR101407628B1 (ja)
CN (1) CN101344856B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8286152B2 (en) * 2007-08-22 2012-10-09 International Business Machines Corporation Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast application startup and maximal run-time performance
US9176714B2 (en) * 2007-11-12 2015-11-03 International Business Machines Corporation Re-using legacy libraries in software
US9836316B2 (en) * 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
CN103092618A (zh) * 2013-01-15 2013-05-08 东南大学 基于软件Cache的Dalvik虚拟机JIT加速方法
KR101694291B1 (ko) * 2014-01-28 2017-01-10 한국전자통신연구원 자바 스크립트 엔진 가속 장치 및 방법
CN105589729A (zh) * 2015-12-28 2016-05-18 北京锐安科技有限公司 一种基于嵌入式虚拟机的动态编译的方法及装置
US11188316B2 (en) * 2020-03-09 2021-11-30 International Business Machines Corporation Performance optimization of class instance comparisons
US20210405982A1 (en) * 2020-06-25 2021-12-30 Red Hat, Inc. Bytecode transformations using virtual artifacts
WO2024060232A1 (en) * 2022-09-23 2024-03-28 Intel Corporation Apparatus, device, method, and computer program for executing bytecode

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6410335A (en) * 1987-07-03 1989-01-13 Nec Corp System for shortening compiling time
JP2000267862A (ja) * 1999-03-09 2000-09-29 Hewlett Packard Co <Hp> 資源の消費を最小限にするハイブリッド式ジャストインタイム・コンパイラ
JP2002163116A (ja) * 2000-10-10 2002-06-07 Nazomi Communications Inc マイクロコードエンジンを用いたJava(登録商標)ハードウェアアクセラレータ
JP2003140909A (ja) * 2001-11-07 2003-05-16 Fujitsu Ltd Jitコンパイラを備えた仮想計算機
JP2006323844A (ja) * 2005-05-19 2006-11-30 Samsung Electronics Co Ltd ジャバ仮想マシンでバイトコードの実行時間を短縮するシステム及び方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768593A (en) * 1996-03-22 1998-06-16 Connectix Corporation Dynamic cross-compilation system and method
US7124407B1 (en) * 2000-08-16 2006-10-17 Sun Microsystems, Inc. Method and apparatus for caching native code in a virtual machine interpreter
US6964039B2 (en) 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
US20020156977A1 (en) * 2001-04-23 2002-10-24 Derrick John E. Virtual caching of regenerable data
FR2831969B1 (fr) * 2001-11-08 2004-01-16 Schneider Automation Systeme de telechargement et de telemaintenance d'une carte electronique
US7150012B2 (en) 2002-10-15 2006-12-12 Nokia Corporation Method and apparatus for accelerating program execution in platform-independent virtual machines
AU2002363920A1 (en) * 2002-10-29 2004-05-25 Freescale Semiconductor, Inc. Method and apparatus for selectively optimizing interpreted language code
JP3757235B2 (ja) * 2003-02-18 2006-03-22 株式会社Access ネイティブコンパイル方法、ネイティブコンパイル前処理方法、コンピュータプログラム、サーバ、通信システム、および移動体通信端末装置
KR100597413B1 (ko) * 2004-09-24 2006-07-05 삼성전자주식회사 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터
US20060129990A1 (en) * 2004-12-13 2006-06-15 International Business Machines Corporation System, method, and article of manufacture for determining execution counts associated with a software program of an embedded system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6410335A (en) * 1987-07-03 1989-01-13 Nec Corp System for shortening compiling time
JP2000267862A (ja) * 1999-03-09 2000-09-29 Hewlett Packard Co <Hp> 資源の消費を最小限にするハイブリッド式ジャストインタイム・コンパイラ
JP2002163116A (ja) * 2000-10-10 2002-06-07 Nazomi Communications Inc マイクロコードエンジンを用いたJava(登録商標)ハードウェアアクセラレータ
JP2003140909A (ja) * 2001-11-07 2003-05-16 Fujitsu Ltd Jitコンパイラを備えた仮想計算機
JP2006323844A (ja) * 2005-05-19 2006-11-30 Samsung Electronics Co Ltd ジャバ仮想マシンでバイトコードの実行時間を短縮するシステム及び方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG199800644004; 志村浩也、木村康則: 'Java JITコンパイラの試作' 情報処理学会研究報告 第96巻,第106号, 19961031, pp.37〜42, 社団法人情報処理学会 *
JPN6010041164; 志村浩也、木村康則: 'Java JITコンパイラの試作' 情報処理学会研究報告 第96巻,第106号, 19961031, pp.37〜42, 社団法人情報処理学会 *

Also Published As

Publication number Publication date
JP5508681B2 (ja) 2014-06-04
KR20080106795A (ko) 2008-12-09
CN101344856B (zh) 2014-06-04
US9235397B2 (en) 2016-01-12
KR101407628B1 (ko) 2014-06-13
CN101344856A (zh) 2009-01-14
US20080301653A1 (en) 2008-12-04

Similar Documents

Publication Publication Date Title
JP5508681B2 (ja) 作業遂行速度を向上させる装置および方法
WO2021036174A1 (zh) 部署和执行智能合约的方法及装置
US7069549B2 (en) Multi-threaded fragment patching
US9417857B2 (en) Unifying static and dynamic compiler optimizations in source-code bases
US10055208B2 (en) Extending a virtual machine instruction set architecture
US20050028155A1 (en) Java execution device and Java execution method
JP2001508907A (ja) 仮想マシン命令を実行するための処理装置
KR101407629B1 (ko) 자바 변환 가속 장치 및 방법
US8589143B2 (en) Virtualization apparatus and processing method thereof
US20060070049A1 (en) Java bytecode translation method and Java interpreter performing the same
US10635472B2 (en) Import mechanism for hardware intrinsics
JP2006302272A (ja) ジャバ仮想マシンの命令語実行方法及びその装置
US20140157247A1 (en) Enabling Symbol Resolution of Private Symbols in Legacy Programs and Optimizing Access to the Private Symbols
JP2014002790A (ja) 高速パッチベースメソッドコール
JP2002366367A (ja) プログラム命令解釈
CN114327477A (zh) 智能合约执行方法、装置、电子装置和存储介质
JP4684571B2 (ja) エミュレーションコンピュータ技術を実行する直接命令
US10152307B2 (en) Specifying user defined or translator definitions to use to interpret mnemonics in a computer program
JPH11514119A (ja) 転送可能および転送不可能なプログラム部分を有するプログラムを移送するための方法
JP2005267640A (ja) 機能を呼び出す方法と装置
US20190266084A1 (en) Verifying The Validity of a Transition From a Current Tail Template to a New Tail Template for a Fused Object
US9600252B2 (en) System for dynamic compilation of at least one instruction flow
US6904516B2 (en) Mechanism for enabling efficient execution of an instruction
KR101598819B1 (ko) 타겟 독립적인 디버깅 정보를 이용한 코드 변환 방법과 그를 위한 장치 및 컴퓨터로 읽을 수 있는 기록매체
US20060288338A1 (en) Offset threaded code

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131225

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140123

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140324

R150 Certificate of patent or registration of utility model

Ref document number: 5508681

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250