JP4171496B2 - スタックを用いる演算マシンのための命令フォールディング処理 - Google Patents
スタックを用いる演算マシンのための命令フォールディング処理 Download PDFInfo
- Publication number
- JP4171496B2 JP4171496B2 JP2006051700A JP2006051700A JP4171496B2 JP 4171496 B2 JP4171496 B2 JP 4171496B2 JP 2006051700 A JP2006051700 A JP 2006051700A JP 2006051700 A JP2006051700 A JP 2006051700A JP 4171496 B2 JP4171496 B2 JP 4171496B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- stack
- operand
- cache
- instructions
- 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 - Lifetime
Links
- 238000012545 processing Methods 0.000 title claims description 46
- 238000000034 method Methods 0.000 claims description 210
- 230000008569 process Effects 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 11
- 238000012546 transfer Methods 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 239000000872 buffer Substances 0.000 description 64
- 238000007667 floating Methods 0.000 description 36
- 238000007726 management method Methods 0.000 description 34
- 238000010586 diagram Methods 0.000 description 22
- 238000007792 addition Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 12
- 238000013519 translation Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000005055 memory storage Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 4
- 239000002131 composite material Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000008520 organization Effects 0.000 description 3
- 239000002957 persistent organic pollutant Substances 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 241000700605 Viruses Species 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30134—Register stacks; shift registers
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- 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/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- 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/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/451—Stack data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Description
1.オブジェクト参照
2.渡される引数
3.ローカル変数
4.呼び出しを行ったメソッドコンテキスト
5.オペランドスタック
6.メソッドからの戻り値
である。
I/Oバス及びメモリインタフェースユニット110(図1)はインタフェースユニット110とも称し、ハードウェアプロセッサ100と、実施例においては外部メモリを含み、所望に応じてハードウェアプロセッサ100と同じチップ上のメモリストレージ及びインタフェース或いはその何れかを含み得るメモリ階層を実現する。この実施例においては、I/Oコントローラ111が外部I/Oデバイスに対してインタフェースし、メモリコントローラ112が、外部メモリに対してインタフェースする。ここで、外部メモリとは、ハードウェアプロセッサ100の外部にあるメモリを意味する。しかし、外部メモリは、ハードウェアプロセッサ100と同じチップ上に含められても良く、或いはハードウェアプロセッサ100を含みチップの外部に設けられても良く、又はチップの内外双方に設けられても良い。
命令キャッシュユニット
命令キャッシュユニット(ICU)120(図1)は、命令キャッシュ125から仮想マシン命令をフェッチして、その命令を命令デコードユニット130に供給する。この実施例においては、命令キャッシュヒット時に、命令キャッシュコントローラ121が、1サイクルにおいて、命令キャッシュ125から命令を命令バッファ124に転送し、そこでこの命令は定数実行ユニットIEU(後に完全に説明する)が命令を処理できるようになるまで保持する。これによって、ハードウェアプロセッサ100におけるパイプライン300(図3)のフェッチ段階301と残りの段階とが分離される。命令−バッファタイプの編成をサポートする複雑さを避けることが望ましくないならば、1命令レジスタが大抵の目的に十分である。しかし、後に説明するように、命令のフェッチング、キャッシング、及びバッファリングは、命令フォールディング処理をサポートできるだけの十分な命令バンド幅を提供するべきである。
上述したように、仮想マシン命令はパイプライン300のデコード段302(図3)においてデコードされる。典型的な実施例では、2バイトが、2つの仮想マシン命令に対応することができ、命令バッファ124(図1)からフェッチされる。2バイトは並列にデコードされ、2バイトが2つの仮想マシン命令、例えば、1つの等価な演算にフォールディングされることができる、第1のロードトップスタック命令及び第2のアドトップ2スタックエントリ命令、に対応するか否かを判定される。フォールディングは、2つ或いは3つ以上の仮想マシン命令に対応する1つの等価な演算を供給することである。
2.iload値2
3.iadd
4.istore
これらの命令については図9A〜図9Dを参照しつつ前に説明した。)で説明するように、命令iload及び命令istoreの双方は命令デコーダ1118によりフォールディングされて、命令iaddに対応する加算オペレーションに組み込まれる。命令デコーダ1118のオペレーションは、4つの命令のフォールディング可能なシーケンスを用いて示されているが、当業者は、本発明の適応対象がこの4つの命令に限定されないことは理解されよう。2、3、4、5、或いはそれ以上の命令から成るフォールディング可能なシーケンスが考えられる。例えば、命令istoreに類似した1以上の命令及び命令iloadに類似した2以上の命令がフォールディング可能なシーケンスに含められ得る。
1.デコードされた命令に対応するオペレーション、例えば整数加算を特定するノーマル命令デコード信号n_instr_decが、スイッチ1306の第1の入力端の組に供給される。
図1に示すように、整数実行ユニットIEUは、命令デコードユニット130、整数ユニット142並びにスタック管理ユニット150を含む、浮動小数点関連命令を除く、全ての仮想マシン命令の実行を支配する。浮動小数点関連命令は浮動小数点ユニット142において実行される。
スタック管理ユニット150は情報をストアし、実行ユニット140に対するオペランドを提供する。またスタック管理ユニット150はスタックキャッシュ155のオーバーフロー及びアンダーフロー条件を処理する。
データキャッシュユニット160(DCU)は、データキャッシュ165内のデータに対する全ての要求を管理する。データキャッシュ要求は、ドリブル管理部151或いは実行ユニット140から起こる。データキャッシュ制御部161は、実行ユニット要求に先行して与えられるこれらの要求間の調整をする。ある要求に応じて、データキャッシュ制御部161は、そのデータに対するアドレス、データ並びに制御信号を発生し、データキャッシュ165内のRAMにタグ付けする。データキャッシュヒットに対して、データキャッシュ制御部161はデータRAM出力をリオーダし、その正確なデータを与える。
1つの実施例において、データキャッシュユニット165はメモリ割当てアクセラレータ166を含む。一般に、新しいオブジェクトが生成されるとき、そのオブジェクトに対するフィールドは外部メモリからフェッチされ、データキャッシュ165内にストアされ、それからそのフィールドは0にクリアされる。これがメモリ割当てアクセラレータ166により削除される処理にかかる時間である。新しいオブジェクトが生成されるとき、いかなるフィールドも外部メモリから回収されない。むしろ、メモリ割当てアクセラレータ166は単に、データキャッシュ165内に0の列をストアし、データキャッシュ165のその列をダーティとしてマークする。メモリ割当てアクセラレータ166はライトバックキャッシュについて特に有利である。メモリ割当てアクセラレータ166は、新しいオブジェクトが生成される度に、外部メモリにアクセスすることを削除するので、ハードウエアプロセッサ100のパフォーマンスが向上する。
浮動小数点ユニット(FPU)143は、マイクロコードシーケンサ、入力/出力レジスタを有する入出力部分、浮動小数点加算器、すなわちALU、並びに浮動小数点乗算/除算ユニットを含む。マイクロコードシーケンサは、マイクロコードフロー及びマイクロコード分岐を制御する。入出力部分は入出力データトランザクションを制御し、入力データロードレジスタ及び出力データ非ロードレジスタを与える。またこれらのレジスタは中間結果記憶領域を与える。
付録IのJAVA仮想マシン仕様はハードウエアに依存しないので、仮想マシン命令は特定の汎用タイプのプロセッサ、例えば複雑命令セットコンピュータ(CISC)プロセッサ、或いは限定命令セットコンピュータ(RISC)プロセッサに対して最適化されてない。実際に、ある仮想マシン命令はCISC性を有し、他のものはRISC性を有する。この二重性は演算及びハードウエアプロセッサ100の最適化を複雑にする。
他の特定の機能ユニット及び種々の翻訳ルックアサイドバッファ(TLB)タイプの構造は、ハードウエアプロセッサ100に任意に含まれ、コンスタントプールへのアクセスを加速する。例えば、JAVA仮想マシン仕様は、実行時にオブジェクト内にフィールドをセットする、命令putfield、オペコード181、並びに実行時にオブジェクトからフィールドをフェッチする、命令getfield、オペコード180を定義する。これら両方の命令では、そのオペコードには、インデクスバイト1及びインデクスバイト2が後続する。オペランドスタック423は、命令getfieldの場合のオブジェクトに対する参照のみを除いて、命令putfieldに対する値により後続されるオブジェクトに対する参照を含む。
実行ユニット140内のバウンドチェックユニット147(図1)は、任意のハードウエア回路であり、配列(array)の要素への各アクセスをチェックし、そのアクセスがその配列内の位置に対するものであるか否かを判定する。そのアクセスがその配列内の位置に対するものであるとき、境界チェックユニット147は、実行ユニット140に対して、アクティブ配列境界例外信号を発行する。アクティブ配列境界例外信号に応じて、実行ユニット140は、マイクロコードROM141内にストアされた、その境界外配列アクセス(out of bounds array access)を処理する例外ハンドラの実行を開始する。
Claims (19)
- レジスタストレージに存在するデータを操作するべく動作可能な実行ユニットと、
複数の連続したスタックベースの命令をデコードし、デコードされた前記複数の連続したスタックベースの命令に対応する1個のレジスタベースのオペレーションを前記実行ユニットに実行させるべく動作可能な命令デコーダとを有し、
前記スタックベースの命令は、処理に利用する情報や処理結果をスタックに格納するシステムに適合した命令であり、前記レジスタベースのオペレーションは、処理に利用する情報や処理結果の格納先をレジスタストレージとする操作であることを特徴とする装置。 - 前記1個のレジスタベースのオペレーションが、前記レジスタストレージにおける処理結果の格納位置、及び前記レジスタストレージにおける2以上のソースの格納位置を明示的に特定することを特徴とする請求項1に記載の装置。
- 前記命令デコーダが、前記レジスタストレージの複数のエントリを選択するべく動作可能であり、選択された前記複数のエントリは、デコードされた前記複数の連続したスタックベースの命令によって明示的及び暗示的に標的とされるスタック及びローカル変数の格納位置の部分集合に対応することを特徴とする請求項1に記載の装置。
- 前記レジスタストレージにおけるスタック及びローカル変数の部分をさらに含み、デコードされた前記複数の連続したスタックベースの命令の少なくとも1つが、1つのローカル変数から前記スタックの先頭への情報の転送を行うように定義されていることを特徴とする請求項1に記載の装置。
- 前記装置が、ハードウェアプロセッサと、前記ハードウェアプロセッサで実行可能なコンピュータプログラムを格納した媒体とを有し、
前記命令デコーダが少なくとも部分的に前記媒体上に格納されたコンピュータプログラムにおいて実現されており、
前記命令デコーダが、前記媒体上に格納された命令フォールディングジャストインタイムコンパイラの一部であることを特徴とする請求項1に記載の装置。 - 前記装置が、ハードウェアプロセッサと、前記ハードウェアプロセッサで実行可能なコンピュータプログラムを格納した媒体とを有し、
前記命令デコーダが少なくとも部分的に前記媒体上に格納されたコンピュータプログラムにおいて実現されており、
前記命令デコーダが、仮想マシンを実現する命令フォールディングバイトコードインタプリタの一部であることを特徴とする請求項1に記載の装置。 - 前記命令デコーダが、命令フォールディングハードウェアを含むことを特徴とする請求項1に記載の装置。
- 前記装置が、ハードウェアプロセッサと、前記ハードウェアプロセッサで実行可能なコンピュータプログラムを格納した媒体とを有し、
前記実行ユニットにネイティブなオブジェクトコードを生成するべく前記ハードウェアプロセッサ上で実行可能なジャストインタイムコンパイラが前記媒体上に格納されていることを特徴とする請求項1に記載の装置。 - スタックベースの命令のシーケンスをフェッチする過程と、
複数の連続したスタックベースの命令をデコードする過程と、
デコードされた前記複数の連続したスタックベースの命令に対応する1個のレジスタベースのオペレーションを実行ユニットに実行させる過程とを含み、
前記スタックベースの命令は、処理に利用する情報や処理結果をスタックに格納するシステムに適合した命令であり、前記レジスタベースのオペレーションは、処理に利用する情報や処理結果の格納先をレジスタストレージとする操作であることを特徴とする方法。 - 前記方法は、ハードウェアプロセッサと、前記ハードウェアプロセッサで実行可能なコンピュータプログラムを格納した媒体とを有する装置において実施され、
前記スタックベースの命令のデコードを、前記媒体上に格納されたジャストインタイムコンパイラをハードウェアプロセッサで実行することによって行って、前記実行ユニットを含むプロセッサにネイティブなオブジェクトコードを生成することを特徴とする請求項9に記載の方法。 - 前記方法は、ハードウェアプロセッサと、前記ハードウェアプロセッサで実行可能なコンピュータプログラムを格納した媒体とを有する装置において実施され、
前記スタックベースの命令のデコードを、前記媒体上に格納された命令フォールディングジャストインタイムコンパイラをハードウェアプロセッサで実行することによって行うことを特徴とする請求項9に記載の方法。 - 前記方法は、ハードウェアプロセッサと、前記ハードウェアプロセッサで実行可能なコンピュータプログラムを格納した媒体とを有する装置において実施され、
前記スタックベースの命令のデコードを、前記媒体上に格納された命令フォールディングバイトコードインタプリタをハードウェアプロセッサで実行することによって行うことを特徴とする請求項9に記載の方法。 - 前記スタックベースの命令のデコードを、命令フォールディングハードウェアを用いて行うことを特徴とする請求項9に記載の方法。
- レジスタストレージの複数のエントリを選択する過程であって、前記選択されるエントリは、前記複数のデコードされたスタックベースの命令によって明示的及び暗示的に標的とされるスタック及びローカル変数の格納位置の部分集合に対応する、該過程をさらに有することを特徴とする請求項9に記載の方法。
- コンピュータにおいて実現されるシステムであって、
命令ソースと、
レジスタストレージと、
プロセッサと、
前記命令ソースからスタックベースの命令を受け取り、前記スタックベースの命令の一部である複数の連続した命令群を1個の対応するレジスタベースのオペレーションに変換し、前記プロセッサに、前記レジスタストレージにおけるソースと処理結果の位置に対する明示的な識別子を用いて前記レジスタに存在するデータを操作させる変換手段であって、1個の対応するレジスタベースのオペレーションに変換される前記命令群は、変換の前に、前記変換手段によって検証されて、前記命令ソースから受け取った命令のなかから変換可能なものとして選択される、該変換手段とを有し、
前記スタックベースの命令は、処理に利用する情報や処理結果をスタックに格納するシステムに適合した命令であり、前記レジスタベースのオペレーションは、処理に利用する情報や処理結果の格納先をレジスタストレージとする操作であることを特徴とするシステム。 - 前記変換手段が、前記プロセッサにネイティブなオブジェクトコードを生成するべく前記スタックベースの命令をコンパイルする手段を含むことを特徴とする請求項15に記載のシステム。
- 前記システムが、前記プロセッサで実行可能なコンピュータプログラムを格納した媒体を有し、
前記変換手段が、前記媒体上に格納されたジャストインタイムコンパイラを前記プロセッサで実行することによって命令をフォールディングする手段を含むことを特徴とする請求項15に記載のシステム。 - 前記システムが、前記プロセッサで実行可能なコンピュータプログラムを格納した媒体を有し、
前記変換手段が、前記媒体上に格納されたバイトコードインタプリタを前記プロセッサで実行することによって命令をフォールディングする手段を含むことを特徴とする請求項15に記載のシステム。 - 前記変換手段が、ハードウェアデコーダを用いて命令をフォールディングする手段を含むことを特徴とする請求項15に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US1052796P | 1996-01-24 | 1996-01-24 | |
US64398496A | 1996-05-07 | 1996-05-07 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52705397A Division JP3801643B2 (ja) | 1996-01-24 | 1997-01-23 | スタックを用いる演算マシンのための命令フォールディング処理 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006216069A JP2006216069A (ja) | 2006-08-17 |
JP4171496B2 true JP4171496B2 (ja) | 2008-10-22 |
Family
ID=26681282
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52705397A Expired - Lifetime JP3801643B2 (ja) | 1996-01-24 | 1997-01-23 | スタックを用いる演算マシンのための命令フォールディング処理 |
JP2006051700A Expired - Lifetime JP4171496B2 (ja) | 1996-01-24 | 2006-02-28 | スタックを用いる演算マシンのための命令フォールディング処理 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52705397A Expired - Lifetime JP3801643B2 (ja) | 1996-01-24 | 1997-01-23 | スタックを用いる演算マシンのための命令フォールディング処理 |
Country Status (6)
Country | Link |
---|---|
US (3) | US6026485A (ja) |
EP (1) | EP0976030B1 (ja) |
JP (2) | JP3801643B2 (ja) |
KR (1) | KR100529416B1 (ja) |
DE (1) | DE69738810D1 (ja) |
WO (1) | WO1997027536A1 (ja) |
Families Citing this family (187)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3634379B2 (ja) * | 1996-01-24 | 2005-03-30 | サン・マイクロシステムズ・インコーポレイテッド | スタックキャッシングのための方法及び装置 |
JPH1091443A (ja) * | 1996-05-22 | 1998-04-10 | Seiko Epson Corp | 情報処理回路、マイクロコンピュータ及び電子機器 |
AU731871B2 (en) | 1996-11-04 | 2001-04-05 | Sun Microsystems, Inc. | Method and apparatus for thread synchronization in object-based systems |
EP0941508B1 (en) * | 1997-10-02 | 2007-01-17 | Koninklijke Philips Electronics N.V. | Variable instruction set computer |
EP1019794B1 (en) * | 1997-10-02 | 2008-08-20 | Koninklijke Philips Electronics N.V. | Data processing device for processing virtual machine instructions |
EP0950216B1 (en) * | 1997-10-02 | 2003-11-26 | Koninklijke Philips Electronics N.V. | A processing device for executing virtual machine instructions |
US5933635A (en) * | 1997-10-06 | 1999-08-03 | Sun Microsystems, Inc. | Method and apparatus for dynamically deoptimizing compiled activations |
JPH11296381A (ja) | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | 仮想マシン及びコンパイラ |
US6237086B1 (en) * | 1998-04-22 | 2001-05-22 | Sun Microsystems, Inc. | 1 Method to prevent pipeline stalls in superscalar stack based computing systems |
US6434741B1 (en) | 1998-04-30 | 2002-08-13 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code using emulation |
US6075942A (en) * | 1998-05-04 | 2000-06-13 | Sun Microsystems, Inc. | Encoding machine-specific optimization in generic byte code by using local variables as pseudo-registers |
US6397242B1 (en) | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US6230311B1 (en) * | 1998-06-12 | 2001-05-08 | International Business Machines Corporation | Apparatus and method for disabling methods called on an object |
US7028163B2 (en) * | 1998-06-22 | 2006-04-11 | Samsung Electronics, Co., Ltd. | Apparatus for controlling multi-word stack operations using a multi-bank stack in digital data processors |
US6314445B1 (en) * | 1998-08-03 | 2001-11-06 | International Business Machines Coproration | Native function calling |
US6205578B1 (en) * | 1998-08-14 | 2001-03-20 | Ati International Srl | Interpreter for stack-based languages |
US8631066B2 (en) | 1998-09-10 | 2014-01-14 | Vmware, Inc. | Mechanism for providing virtual machines for use by multiple users |
US6349383B1 (en) * | 1998-09-10 | 2002-02-19 | Ip-First, L.L.C. | System for combining adjacent push/pop stack program instructions into single double push/pop stack microinstuction for execution |
US6289446B1 (en) * | 1998-09-29 | 2001-09-11 | Axis Ab | Exception handling utilizing call instruction with context information |
JP2000122875A (ja) * | 1998-10-19 | 2000-04-28 | Internatl Business Mach Corp <Ibm> | 例外処理方法およびシステム |
US7516453B1 (en) | 1998-10-26 | 2009-04-07 | Vmware, Inc. | Binary translator with precise exception synchronization mechanism |
US6434575B1 (en) * | 1998-11-12 | 2002-08-13 | International Business Machines Corporation | Method of instrumenting garbage collection generating a trace file making a single pass analysis of object heap |
US6233725B1 (en) * | 1998-12-03 | 2001-05-15 | International Business Machines Corporation | Method and apparatus to coordinate and control the simultaneous use of multiple just in time compilers with a java virtual machine |
US6321377B1 (en) * | 1998-12-03 | 2001-11-20 | International Business Machines Corporation | Method and apparatus automatic service of JIT compiler generated errors |
US20050149694A1 (en) * | 1998-12-08 | 2005-07-07 | Mukesh Patel | Java hardware accelerator using microcode engine |
US6332215B1 (en) * | 1998-12-08 | 2001-12-18 | Nazomi Communications, Inc. | Java virtual machine hardware for RISC and CISC processors |
US6826749B2 (en) | 1998-12-08 | 2004-11-30 | Nazomi Communications, Inc. | Java hardware accelerator using thread manager |
US7225436B1 (en) | 1998-12-08 | 2007-05-29 | Nazomi Communications Inc. | Java hardware accelerator using microcode engine |
US6487652B1 (en) * | 1998-12-08 | 2002-11-26 | Sun Microsystems, Inc. | Method and apparatus for speculatively locking objects in an object-based system |
US6415436B1 (en) * | 1998-12-11 | 2002-07-02 | Hewlett-Packard Company | Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler |
TW477936B (en) * | 1998-12-29 | 2002-03-01 | Ind Tech Res Inst | Instruction folding method and device used in a stack machine |
US6327702B1 (en) * | 1998-12-30 | 2001-12-04 | Microsoft Corporation | Generating a compiled language program for an interpretive runtime environment |
US8225002B2 (en) | 1999-01-22 | 2012-07-17 | Network Disk, Inc. | Data storage and data sharing in a network of heterogeneous computers |
US6487630B2 (en) | 1999-02-26 | 2002-11-26 | Intel Corporation | Processor with register stack engine that dynamically spills/fills physical registers to backing store |
FR2790844B1 (fr) * | 1999-03-09 | 2001-05-25 | Gemplus Card Int | Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme |
US6330635B1 (en) * | 1999-04-16 | 2001-12-11 | Intel Corporation | Multiple user interfaces for an integrated flash device |
US6507946B2 (en) * | 1999-06-11 | 2003-01-14 | International Business Machines Corporation | Process and system for Java virtual method invocation |
JP3648100B2 (ja) * | 1999-07-26 | 2005-05-18 | 理想科学工業株式会社 | 丁合装置 |
US6418310B1 (en) * | 1999-08-05 | 2002-07-09 | Ericsson Inc. | Wireless subscriber terminal using java control code |
DE19950249C1 (de) * | 1999-10-18 | 2001-02-01 | Siemens Ag | Elektronisches Gerät mit Softwareschutz |
US7219335B1 (en) * | 1999-12-08 | 2007-05-15 | Intel Corporation | Method and apparatus for stack emulation during binary translation |
WO2001069408A1 (en) * | 2000-03-16 | 2001-09-20 | World Wireless Communications, Inc. | An improved method of connecting devices to the internet |
US6675375B1 (en) * | 2000-04-28 | 2004-01-06 | Sun Microsystems, Inc. | Method and apparatus for optimized multiprocessing in a safe language |
US20020194267A1 (en) * | 2000-06-23 | 2002-12-19 | Daniel Flesner | Portal server that provides modification of user interfaces for access to computer networks |
US6766460B1 (en) | 2000-08-23 | 2004-07-20 | Koninklijke Philips Electronics N.V. | System and method for power management in a Java accelerator environment |
US6782407B1 (en) | 2000-09-26 | 2004-08-24 | Koninklijke Philips Electronics N.V. | System and method for low overhead boundary checking of java arrays |
US6704926B1 (en) * | 2000-09-28 | 2004-03-09 | International Business Machines Corporation | Bimodal Java just-in-time complier |
US7340592B1 (en) | 2000-09-29 | 2008-03-04 | Intel Corporation | Executing a translated block of instructions and branching to correction code when expected top of stack does not match actual top of stack to adjust stack at execution time to continue executing without restarting translating |
GB2367654B (en) * | 2000-10-05 | 2004-10-27 | Advanced Risc Mach Ltd | Storing stack operands in registers |
GB2367653B (en) * | 2000-10-05 | 2004-10-20 | Advanced Risc Mach Ltd | Restarting translated instructions |
US20020069402A1 (en) * | 2000-10-05 | 2002-06-06 | Nevill Edward Colles | Scheduling control within a system having mixed hardware and software based instruction execution |
EP1197847A3 (en) | 2000-10-10 | 2003-05-21 | Nazomi Communications Inc. | Java hardware accelerator using microcode engine |
US6996813B1 (en) * | 2000-10-31 | 2006-02-07 | Sun Microsystems, Inc. | Frameworks for loading and execution of object-based programs |
GB2369464B (en) | 2000-11-27 | 2005-01-05 | Advanced Risc Mach Ltd | A data processing apparatus and method for saving return state |
US7076771B2 (en) | 2000-12-01 | 2006-07-11 | Arm Limited | Instruction interpretation within a data processing system |
JP2002169696A (ja) | 2000-12-04 | 2002-06-14 | Mitsubishi Electric Corp | データ処理装置 |
US6968557B1 (en) * | 2000-12-18 | 2005-11-22 | Stratum8 Corporation | Reducing stack memory resources in a threaded computer system |
US6990567B1 (en) * | 2000-12-22 | 2006-01-24 | Lsi Logic Corporation | Use of internal general purpose registers of a processor as a Java virtual machine top of stack and dynamic allocation of the registers according to stack status |
US7873814B1 (en) | 2000-12-22 | 2011-01-18 | Lsi Corporation | Microcode based hardware translator to support a multitude of processors |
US7284274B1 (en) * | 2001-01-18 | 2007-10-16 | Cigital, Inc. | System and method for identifying and eliminating vulnerabilities in computer software applications |
US7055019B2 (en) * | 2001-02-13 | 2006-05-30 | Ellipsis Digital Systems, Inc. | Matched instruction set processor systems and method, system, and apparatus to efficiently design and implement matched instruction set processor systems by mapping system designs to re-configurable hardware platforms |
US7096466B2 (en) | 2001-03-26 | 2006-08-22 | Sun Microsystems, Inc. | Loading attribute for partial loading of class files into virtual machines |
US7020874B2 (en) * | 2001-03-26 | 2006-03-28 | Sun Microsystems, Inc. | Techniques for loading class files into virtual machines |
US6957428B2 (en) | 2001-03-27 | 2005-10-18 | Sun Microsystems, Inc. | Enhanced virtual machine instructions |
US7543288B2 (en) | 2001-03-27 | 2009-06-02 | Sun Microsystems, Inc. | Reduced instruction set for Java virtual machines |
AU2002307080A1 (en) * | 2001-04-23 | 2002-11-05 | Atmel Corporation | Microprocessor for executing byte compiled java code |
CA2346762A1 (en) * | 2001-05-07 | 2002-11-07 | Ibm Canada Limited-Ibm Canada Limitee | Compiler generation of instruction sequences for unresolved storage devices |
US6804681B2 (en) * | 2001-05-08 | 2004-10-12 | Sun Microsystems, Inc. | Identifying and tracking object references in a java programming environment |
US7065747B2 (en) * | 2001-05-08 | 2006-06-20 | Sun Microsystems, Inc. | Identifying references to objects during bytecode verification |
GB2376099B (en) * | 2001-05-31 | 2005-11-16 | Advanced Risc Mach Ltd | Program instruction interpretation |
GB2376100B (en) * | 2001-05-31 | 2005-03-09 | Advanced Risc Mach Ltd | Data processing using multiple instruction sets |
GB2376098B (en) * | 2001-05-31 | 2004-11-24 | Advanced Risc Mach Ltd | Unhandled operation handling in multiple instruction set systems |
GB2376097B (en) | 2001-05-31 | 2005-04-06 | Advanced Risc Mach Ltd | Configuration control within data processing systems |
US7231460B2 (en) * | 2001-06-04 | 2007-06-12 | Gateway Inc. | System and method for leveraging networked computers to view windows based files on Linux platforms |
DE10127195A1 (de) * | 2001-06-05 | 2002-12-19 | Infineon Technologies Ag | Prozessor mit interner Speicherkonfiguration |
US6934726B2 (en) * | 2001-06-20 | 2005-08-23 | Sun Microsystems, Inc. | Storing and retrieving of field descriptors in Java computing environments |
WO2003014921A1 (en) * | 2001-07-02 | 2003-02-20 | Nazomi Communications, Inc. | Intermediate language accelerator chip |
US20030023958A1 (en) * | 2001-07-17 | 2003-01-30 | Patel Mukesh K. | Intermediate language accelerator chip |
US6832307B2 (en) * | 2001-07-19 | 2004-12-14 | Stmicroelectronics, Inc. | Instruction fetch buffer stack fold decoder for generating foldable instruction status information |
US6988261B2 (en) * | 2001-08-24 | 2006-01-17 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions in Java computing environments |
US7058934B2 (en) * | 2001-08-24 | 2006-06-06 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for instantiating Java objects |
US8769508B2 (en) | 2001-08-24 | 2014-07-01 | Nazomi Communications Inc. | Virtual machine hardware for RISC and CISC processors |
US20030041319A1 (en) * | 2001-08-24 | 2003-02-27 | Sun Microsystems, Inc. | Java bytecode instruction for retrieving string representations of java objects |
US7228533B2 (en) * | 2001-08-24 | 2007-06-05 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for performing programming loops |
US7039904B2 (en) | 2001-08-24 | 2006-05-02 | Sun Microsystems, Inc. | Frameworks for generation of Java macro instructions for storing values into local variables |
US7131121B2 (en) * | 2001-11-14 | 2006-10-31 | Axalto, Inc. | Method and apparatus for linking converted applet files without relocation annotations |
US20040215444A1 (en) * | 2002-03-25 | 2004-10-28 | Patel Mukesh K. | Hardware-translator-based custom method invocation system and method |
US7379860B1 (en) | 2002-03-29 | 2008-05-27 | Cypress Semiconductor Corporation | Method for integrating event-related information and trace information |
US6973644B2 (en) * | 2002-04-12 | 2005-12-06 | The Mathworks, Inc. | Program interpreter |
US6950838B2 (en) * | 2002-04-17 | 2005-09-27 | Sun Microsystems, Inc. | Locating references and roots for in-cache garbage collection |
US6990610B2 (en) * | 2002-05-15 | 2006-01-24 | Hewlett-Packard Development Company, L.P. | Combining commands to form a test command |
US7290080B2 (en) * | 2002-06-27 | 2007-10-30 | Nazomi Communications Inc. | Application processors and memory architecture for wireless applications |
US7131118B2 (en) * | 2002-07-25 | 2006-10-31 | Arm Limited | Write-through caching a JAVA® local variable within a register of a register bank |
EP1387277B1 (en) * | 2002-07-31 | 2009-07-15 | Texas Instruments Incorporated | Write back policy for memory |
EP1387274A3 (en) * | 2002-07-31 | 2004-08-11 | Texas Instruments Incorporated | Memory management for local variables |
EP1387258A3 (en) * | 2002-07-31 | 2008-01-02 | Texas Instruments Incorporated | Processor-processor synchronization |
US9207958B1 (en) | 2002-08-12 | 2015-12-08 | Arm Finance Overseas Limited | Virtual machine coprocessor for accelerating software execution |
US7051322B2 (en) | 2002-12-06 | 2006-05-23 | @Stake, Inc. | Software analysis framework |
US7051324B2 (en) * | 2003-01-16 | 2006-05-23 | International Business Machines Corporation | Externalized classloader information for application servers |
JP3902147B2 (ja) * | 2003-03-04 | 2007-04-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | コンパイラ装置、コンパイル方法、コンパイラプログラム、及び記録媒体 |
GB2399897B (en) * | 2003-03-26 | 2006-02-01 | Advanced Risc Mach Ltd | Memory recycling in computer systems |
GB0315165D0 (en) * | 2003-05-02 | 2003-08-06 | Transitive Ltd | Improved architecture for generating intermediate representations for program code conversion |
GB2411990B (en) * | 2003-05-02 | 2005-11-09 | Transitive Ltd | Improved architecture for generating intermediate representations for program code conversion |
US8719242B2 (en) * | 2003-08-29 | 2014-05-06 | Sap Ag | System and method for a database access statement interceptor |
US7114153B2 (en) * | 2003-09-10 | 2006-09-26 | Qualcomm Inc. | Method and apparatus for continuation-passing in a virtual machine |
US20050066305A1 (en) * | 2003-09-22 | 2005-03-24 | Lisanke Robert John | Method and machine for efficient simulation of digital hardware within a software development environment |
US7523157B2 (en) * | 2003-09-25 | 2009-04-21 | International Business Machines Corporation | Managing a plurality of processors as devices |
US7496917B2 (en) * | 2003-09-25 | 2009-02-24 | International Business Machines Corporation | Virtual devices using a pluarlity of processors |
US7389508B2 (en) * | 2003-09-25 | 2008-06-17 | International Business Machines Corporation | System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment |
US20050071828A1 (en) * | 2003-09-25 | 2005-03-31 | International Business Machines Corporation | System and method for compiling source code for multi-processor environments |
US7516456B2 (en) * | 2003-09-25 | 2009-04-07 | International Business Machines Corporation | Asymmetric heterogeneous multi-threaded operating system |
US7415703B2 (en) * | 2003-09-25 | 2008-08-19 | International Business Machines Corporation | Loading software on a plurality of processors |
US7444632B2 (en) * | 2003-09-25 | 2008-10-28 | International Business Machines Corporation | Balancing computational load across a plurality of processors |
US7478390B2 (en) * | 2003-09-25 | 2009-01-13 | International Business Machines Corporation | Task queue management of virtual devices using a plurality of processors |
US7549145B2 (en) * | 2003-09-25 | 2009-06-16 | International Business Machines Corporation | Processor dedicated code handling in a multi-processor environment |
US20050138340A1 (en) * | 2003-12-22 | 2005-06-23 | Intel Corporation | Method and apparatus to reduce spill and fill overhead in a processor with a register backing store |
GB2412192B (en) * | 2004-03-18 | 2007-08-29 | Advanced Risc Mach Ltd | Function calling mechanism |
US7802080B2 (en) | 2004-03-24 | 2010-09-21 | Arm Limited | Null exception handling |
US7930526B2 (en) | 2004-03-24 | 2011-04-19 | Arm Limited | Compare and branch mechanism |
US7363475B2 (en) * | 2004-04-19 | 2008-04-22 | Via Technologies, Inc. | Managing registers in a processor to emulate a portion of a stack |
US7941807B2 (en) * | 2004-04-30 | 2011-05-10 | International Business Machines Corporation | Transitional resolution in a just in time environment |
US7421539B1 (en) * | 2004-05-18 | 2008-09-02 | Sun Microsystems, Inc. | Method and system for concurrent garbage collection and mutator execution |
US7350059B2 (en) * | 2004-05-21 | 2008-03-25 | Via Technologies, Inc. | Managing stack transfers in a register-based processor |
US7761863B2 (en) * | 2004-06-08 | 2010-07-20 | Covia Labs, Inc. | Method system and data structure for content renditioning adaptation and interoperability segmentation model |
US20050289329A1 (en) * | 2004-06-29 | 2005-12-29 | Dwyer Michael K | Conditional instruction for a single instruction, multiple data execution engine |
EP1622009A1 (en) * | 2004-07-27 | 2006-02-01 | Texas Instruments Incorporated | JSM architecture and systems |
US7506338B2 (en) * | 2004-08-30 | 2009-03-17 | International Business Machines Corporation | Method and apparatus for simplifying the deployment and serviceability of commercial software environments |
KR100597413B1 (ko) * | 2004-09-24 | 2006-07-05 | 삼성전자주식회사 | 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터 |
JP4602047B2 (ja) * | 2004-10-29 | 2010-12-22 | ルネサスエレクトロニクス株式会社 | 情報処理装置 |
JP4486483B2 (ja) * | 2004-11-26 | 2010-06-23 | 古野電気株式会社 | Tdma通信装置 |
US20060200811A1 (en) * | 2005-03-07 | 2006-09-07 | Cheng Stephen M | Method of generating optimised stack code |
US7478224B2 (en) * | 2005-04-15 | 2009-01-13 | Atmel Corporation | Microprocessor access of operand stack as a register file using native instructions |
KR100725393B1 (ko) * | 2005-05-19 | 2007-06-07 | 삼성전자주식회사 | 자바 가상 머신에서 바이트 코드의 수행 시간을 줄이는시스템 및 방법 |
US7669191B1 (en) * | 2005-06-14 | 2010-02-23 | Xilinx, Inc. | Compile-time dispatch of operations on type-safe heterogeneous containers |
US7823151B2 (en) * | 2005-06-15 | 2010-10-26 | Intel Corporation | Method of ensuring the integrity of TLB entries after changing the translation mode of a virtualized operating system without requiring a flush of the TLB |
US7702855B2 (en) * | 2005-08-11 | 2010-04-20 | Cisco Technology, Inc. | Optimizing cached access to stack storage |
US7743370B1 (en) * | 2005-10-17 | 2010-06-22 | Unisys Corporation | System and methods for determination of independence of sub-graphs in a graph-based intermediate representation of program instructions |
US8104034B2 (en) * | 2005-11-30 | 2012-01-24 | Red Hat, Inc. | Purpose domain for in-kernel virtual machine for low overhead startup and low resource usage |
US8429629B2 (en) | 2005-11-30 | 2013-04-23 | Red Hat, Inc. | In-kernel virtual machine for low overhead startup and low resource usage |
US8612970B2 (en) * | 2005-11-30 | 2013-12-17 | Red Hat, Inc. | Purpose domain for low overhead virtual machines |
US7502029B2 (en) * | 2006-01-17 | 2009-03-10 | Silicon Integrated Systems Corp. | Instruction folding mechanism, method for performing the same and pixel processing system employing the same |
US8099724B2 (en) * | 2006-02-28 | 2012-01-17 | Oracle America, Inc. | Fast patch-based method calls |
US20070288909A1 (en) * | 2006-06-07 | 2007-12-13 | Hong Kong Applied Science and Technology Research Institute Company Limited | Hardware JavaTM Bytecode Translator |
US7756911B2 (en) * | 2006-06-09 | 2010-07-13 | International Business Machines Corporation | Method and system for executing a task and medium storing a program therefor |
EP1887462A1 (en) * | 2006-07-26 | 2008-02-13 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device, memory circuit, and machine language program generation device, and method for operating semiconductor device and memory circuit |
DE102006041002B4 (de) * | 2006-08-31 | 2009-01-02 | Infineon Technologies Ag | Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung |
US8613080B2 (en) | 2007-02-16 | 2013-12-17 | Veracode, Inc. | Assessment and analysis of software security flaws in virtual machines |
US7698534B2 (en) * | 2007-02-21 | 2010-04-13 | Arm Limited | Reordering application code to improve processing performance |
DE102007039425A1 (de) * | 2007-08-21 | 2009-02-26 | Beckhoff Automation Gmbh | Steuerknoten und Steuerung |
US7836282B2 (en) * | 2007-12-20 | 2010-11-16 | International Business Machines Corporation | Method and apparatus for performing out of order instruction folding and retirement |
CN101236489B (zh) * | 2008-02-26 | 2011-04-20 | 北京深思洛克软件技术股份有限公司 | 虚拟硬件系统及其指令执行方法、以及虚拟机 |
US8522015B2 (en) * | 2008-06-27 | 2013-08-27 | Microsoft Corporation | Authentication of binaries in memory with proxy code execution |
EP2309458B1 (en) * | 2008-08-07 | 2020-09-02 | Mitsubishi Electric Corporation | Semiconductor integrated circuit device, facility apparatus control device, and apparatus state display device |
US7853827B2 (en) * | 2008-08-29 | 2010-12-14 | International Business Machines Corporation | Isotropic processor |
US10802990B2 (en) * | 2008-10-06 | 2020-10-13 | International Business Machines Corporation | Hardware based mandatory access control |
US8321878B2 (en) * | 2008-10-09 | 2012-11-27 | Microsoft Corporation | Virtualized storage assignment method |
US20100186024A1 (en) * | 2009-01-21 | 2010-07-22 | Telefonaktiebolaget Lm Ericsson (Publ) | System and Method of Invoking Multiple Remote Operations |
US8209523B2 (en) * | 2009-01-22 | 2012-06-26 | Intel Mobile Communications GmbH | Data moving processor |
US8312219B2 (en) * | 2009-03-02 | 2012-11-13 | International Business Machines Corporation | Hybrid caching techniques and garbage collection using hybrid caching techniques |
US7712093B1 (en) | 2009-03-19 | 2010-05-04 | International Business Machines Corporation | Determining intra-procedural object flow using enhanced stackmaps |
US9003377B2 (en) | 2010-01-07 | 2015-04-07 | Microsoft Technology Licensing, Llc | Efficient resumption of co-routines on a linear stack |
EP2482184A1 (en) * | 2011-02-01 | 2012-08-01 | Irdeto B.V. | Adaptive obfuscated virtual machine |
US9396117B2 (en) * | 2012-01-09 | 2016-07-19 | Nvidia Corporation | Instruction cache power reduction |
US9286063B2 (en) | 2012-02-22 | 2016-03-15 | Veracode, Inc. | Methods and systems for providing feedback and suggested programming methods |
US9547358B2 (en) | 2012-04-27 | 2017-01-17 | Nvidia Corporation | Branch prediction power reduction |
US9552032B2 (en) | 2012-04-27 | 2017-01-24 | Nvidia Corporation | Branch prediction power reduction |
WO2013187864A1 (en) * | 2012-06-11 | 2013-12-19 | Empire Technology Development Llc | Modulating dynamic optimizations of a computer program |
US9734059B2 (en) | 2012-11-21 | 2017-08-15 | Advanced Micro Devices, Inc. | Methods and apparatus for data cache way prediction based on classification as stack data |
US9189399B2 (en) | 2012-11-21 | 2015-11-17 | Advanced Micro Devices, Inc. | Stack cache management and coherence techniques |
RU2522019C1 (ru) | 2012-12-25 | 2014-07-10 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ обнаружения угроз в коде, исполняемом виртуальной машиной |
US9886277B2 (en) * | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US8943462B2 (en) * | 2013-06-28 | 2015-01-27 | Sap Se | Type instances |
US10649775B2 (en) * | 2013-07-15 | 2020-05-12 | Texas Instrum Ents Incorporated | Converting a stream of data using a lookaside buffer |
WO2015057846A1 (en) * | 2013-10-15 | 2015-04-23 | Mill Computing, Inc. | Computer processor employing cache memory with pre-byte valid bits |
CN104318135B (zh) * | 2014-10-27 | 2017-04-05 | 中国科学院信息工程研究所 | 一种基于可信执行环境的Java代码安全动态载入方法 |
US9460284B1 (en) * | 2015-06-12 | 2016-10-04 | Bitdefender IPR Management Ltd. | Behavioral malware detection using an interpreter virtual machine |
US10564929B2 (en) * | 2016-09-01 | 2020-02-18 | Wave Computing, Inc. | Communication between dataflow processing units and memories |
US20170123799A1 (en) * | 2015-11-03 | 2017-05-04 | Intel Corporation | Performing folding of immediate data in a processor |
US11036509B2 (en) | 2015-11-03 | 2021-06-15 | Intel Corporation | Enabling removal and reconstruction of flag operations in a processor |
GB2552153B (en) * | 2016-07-08 | 2019-07-24 | Advanced Risc Mach Ltd | An apparatus and method for performing a rearrangement operation |
US10191745B2 (en) * | 2017-03-31 | 2019-01-29 | Intel Corporation | Optimized call-return and binary translation |
US10915320B2 (en) | 2018-12-21 | 2021-02-09 | Intel Corporation | Shift-folding for efficient load coalescing in a binary translation based processor |
US11526357B2 (en) | 2019-01-21 | 2022-12-13 | Rankin Labs, Llc | Systems and methods for controlling machine operations within a multi-dimensional memory space |
WO2020154219A1 (en) * | 2019-01-21 | 2020-07-30 | John Rankin | Systems and methods for controlling machine operations |
KR102263692B1 (ko) * | 2019-12-30 | 2021-06-14 | 충남대학교 산학협력단 | 이더리움 스마트계약 가상머신 바이트코드 보안성 향상 방법 |
US11809839B2 (en) | 2022-01-18 | 2023-11-07 | Robert Lyden | Computer language and code for application development and electronic and optical communication |
CN115686759B (zh) * | 2023-01-04 | 2023-04-07 | 恒丰银行股份有限公司 | 一种计算虚拟机唯一识别码的方法及系统 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3735363A (en) * | 1971-04-07 | 1973-05-22 | Burroughs Corp | Information processing system employing stored microprogrammed processors and access free field memories |
US3889243A (en) * | 1973-10-18 | 1975-06-10 | Ibm | Stack mechanism for a data processor |
JPS5569855A (en) * | 1978-11-20 | 1980-05-26 | Panafacom Ltd | Data processing system |
US4439828A (en) * | 1981-07-27 | 1984-03-27 | International Business Machines Corp. | Instruction substitution mechanism in an instruction handling unit of a data processing system |
US4530049A (en) * | 1982-02-11 | 1985-07-16 | At&T Bell Laboratories | Stack cache with fixed size stack frames |
US5043870A (en) * | 1982-02-24 | 1991-08-27 | At&T Bell Laboratories | Computer with automatic mapping of memory contents into machine registers during program execution |
US4849880A (en) * | 1985-11-18 | 1989-07-18 | John Fluke Mfg. Co., Inc. | Virtual machine programming system |
US4811208A (en) * | 1986-05-16 | 1989-03-07 | Intel Corporation | Stack frame cache on a microprocessor chip |
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
US5187793A (en) * | 1989-01-09 | 1993-02-16 | Intel Corporation | Processor with hierarchal memory and using meta-instructions for software control of loading, unloading and execution of machine instructions stored in the cache |
US4951194A (en) * | 1989-01-23 | 1990-08-21 | Tektronix, Inc. | Method for reducing memory allocations and data copying operations during program calling sequences |
US5107457A (en) * | 1989-04-03 | 1992-04-21 | The Johns Hopkins University | Stack data cache having a stack management hardware with internal and external stack pointers and buffers for handling underflow and overflow stack |
US5359507A (en) * | 1989-04-07 | 1994-10-25 | Mitsubishi Denki Kabushiki Kaisha | Sequence controller |
JP2818249B2 (ja) * | 1990-03-30 | 1998-10-30 | 株式会社東芝 | 電子計算機 |
US5471591A (en) * | 1990-06-29 | 1995-11-28 | Digital Equipment Corporation | Combined write-operand queue and read-after-write dependency scoreboard |
US5448707A (en) * | 1991-10-29 | 1995-09-05 | Intel Corporation | Mechanism to protect data saved on a local register cache during inter-subsystem calls and returns |
US5522051A (en) * | 1992-07-29 | 1996-05-28 | Intel Corporation | Method and apparatus for stack manipulation in a pipelined processor |
US5367650A (en) * | 1992-07-31 | 1994-11-22 | Intel Corporation | Method and apparauts for parallel exchange operation in a pipelined processor |
US5471602A (en) * | 1992-07-31 | 1995-11-28 | Hewlett-Packard Company | System and method of scoreboarding individual cache line segments |
AU6701594A (en) * | 1993-05-07 | 1994-12-12 | Apple Computer, Inc. | Method for decoding sequences of guest instructions for a host computer |
US5499352A (en) * | 1993-09-30 | 1996-03-12 | Intel Corporation | Floating point register alias table FXCH and retirement floating point register array |
US5548776A (en) * | 1993-09-30 | 1996-08-20 | Intel Corporation | N-wide bypass for data dependencies within register alias table |
JPH07114473A (ja) * | 1993-10-19 | 1995-05-02 | Fujitsu Ltd | コンパイラの命令列最適化方法 |
US5604877A (en) * | 1994-01-04 | 1997-02-18 | Intel Corporation | Method and apparatus for resolving return from subroutine instructions in a computer processor |
DE4435183C2 (de) * | 1994-09-30 | 2000-04-20 | Siemens Ag | Verfahren zum Betrieb eines Magnetresonanzgeräts |
US5748964A (en) * | 1994-12-20 | 1998-05-05 | Sun Microsystems, Inc. | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions |
US5600726A (en) * | 1995-04-07 | 1997-02-04 | Gemini Systems, L.L.C. | Method for creating specific purpose rule-based n-bit virtual machines |
US5634118A (en) * | 1995-04-10 | 1997-05-27 | Exponential Technology, Inc. | Splitting a floating-point stack-exchange instruction for merging into surrounding instructions by operand translation |
US5862370A (en) * | 1995-09-27 | 1999-01-19 | Vlsi Technology, Inc. | Data processor system with instruction substitution filter for deimplementing instructions |
US5765035A (en) * | 1995-11-20 | 1998-06-09 | Advanced Micro Devices, Inc. | Recorder buffer capable of detecting dependencies between accesses to a pair of caches |
US5657486A (en) * | 1995-12-07 | 1997-08-12 | Teradyne, Inc. | Automatic test equipment with pipelined sequencer |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
US5761408A (en) * | 1996-01-16 | 1998-06-02 | Parasoft Corporation | Method and system for generating a computer program test suite using dynamic symbolic execution |
-
1997
- 1997-01-23 US US08/786,351 patent/US6026485A/en not_active Expired - Lifetime
- 1997-01-23 WO PCT/US1997/001221 patent/WO1997027536A1/en active IP Right Grant
- 1997-01-23 EP EP97904872A patent/EP0976030B1/en not_active Expired - Lifetime
- 1997-01-23 DE DE69738810T patent/DE69738810D1/de not_active Expired - Lifetime
- 1997-01-23 KR KR1019980705674A patent/KR100529416B1/ko not_active IP Right Cessation
- 1997-01-23 US US08/788,807 patent/US6021469A/en not_active Expired - Lifetime
- 1997-01-23 JP JP52705397A patent/JP3801643B2/ja not_active Expired - Lifetime
- 1997-01-23 US US08/786,955 patent/US6125439A/en not_active Expired - Lifetime
-
2006
- 2006-02-28 JP JP2006051700A patent/JP4171496B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2000515269A (ja) | 2000-11-14 |
JP2006216069A (ja) | 2006-08-17 |
EP0976030B1 (en) | 2008-07-02 |
EP0976030A1 (en) | 2000-02-02 |
DE69738810D1 (de) | 2008-08-14 |
KR19990081956A (ko) | 1999-11-15 |
US6125439A (en) | 2000-09-26 |
US6026485A (en) | 2000-02-15 |
WO1997027536A1 (en) | 1997-07-31 |
KR100529416B1 (ko) | 2006-01-27 |
JP3801643B2 (ja) | 2006-07-26 |
US6021469A (en) | 2000-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4171496B2 (ja) | スタックを用いる演算マシンのための命令フォールディング処理 | |
JP3634379B2 (ja) | スタックキャッシングのための方法及び装置 | |
US5925123A (en) | Processor for executing instruction sets received from a network or from a local memory | |
EP0976050B1 (en) | Processor with array access bounds checking | |
US6148391A (en) | System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses | |
US6038643A (en) | Stack management unit and method for a processor having a stack | |
US5970242A (en) | Replicating code to eliminate a level of indirection during execution of an object oriented computer program | |
US7080362B2 (en) | Java virtual machine hardware for RISC and CISC processors | |
JP4485198B2 (ja) | Javaアクセラレータを備えたプロセッサシステム | |
US6076141A (en) | Look-up switch accelerator and method of operating same | |
US6065108A (en) | Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same | |
US6122638A (en) | Object-oriented processor and method for caching intermediate data in an object-oriented processor | |
KR100618718B1 (ko) | 스택메모리구조에서의캐싱방법및장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080408 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080703 |
|
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: 20080729 |
|
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: 20080808 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110815 Year of fee payment: 3 |
|
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: 20110815 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120815 Year of fee payment: 4 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130815 Year of fee payment: 5 |
|
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 |
|
EXPY | Cancellation because of completion of term |