JP3330378B2 - リアルタイムプログラム言語アクセラレータ - Google Patents

リアルタイムプログラム言語アクセラレータ

Info

Publication number
JP3330378B2
JP3330378B2 JP51700998A JP51700998A JP3330378B2 JP 3330378 B2 JP3330378 B2 JP 3330378B2 JP 51700998 A JP51700998 A JP 51700998A JP 51700998 A JP51700998 A JP 51700998A JP 3330378 B2 JP3330378 B2 JP 3330378B2
Authority
JP
Japan
Prior art keywords
memory device
data
cache memory
core
stack
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP51700998A
Other languages
English (en)
Other versions
JP2000507015A (ja
Inventor
ラツ,ヤイール
Original Assignee
ラツ,ヤイール
パラン,アリック
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 ラツ,ヤイール, パラン,アリック filed Critical ラツ,ヤイール
Publication of JP2000507015A publication Critical patent/JP2000507015A/ja
Application granted granted Critical
Publication of JP3330378B2 publication Critical patent/JP3330378B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent 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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • 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
    • G06F9/45516Runtime code conversion or optimisation
    • G06F9/4552Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM

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)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

【発明の詳細な説明】 技術分野 本発明は、コンピュータ処理の分野に関し、より詳細
には、独自のハードウェアおよびソフトウェアの組合せ
を用いるコンピュータコードのリアルタイム解釈および
動作に関する。本発明のリアルタイムプログラム言語ア
クセラレータの主な現在の使用は、JavaTMコードにおい
ての実行であり、多様な異なるプロセッサ上でこのよう
なコードを高い実行速度で実行できることが望ましい。
技術背景 当該技術において、より高いレベルのコンピュータ言
語をほぼリアルタイムで機械読取可能コードに変換する
インタープリタを提供することが公知である。しかし、
このようなインタープリタは、プログラムのローディン
グおよび実行中の少なくともいつくかの点で実行される
プログラムの動作を遅らせる必要がある。特に、JavaTM
プログラム言語に関しては、「JavaTM Virtual Machin
e」を含むJavaTMプログラムを実行するいくつかの利用
可能な解決策は、それらのタスクを達成するために実行
が必要なソフトウェアベースのプログラムである。
任意の利用可能なタイプのプロセッサ上でJavaTMコー
ドを実行する方法および/または手段を有することが有
益である。また、それが実行するより実際に速く実行す
るまたは少なくともJavaTMコードを解釈および実行する
プロセス全体を減速しない、JavaTMコードを処理するい
くつかの方法および/または手段を有することが有益で
ある。しかし、本発明者の知る限りでは、従来技術にお
いてこのような目的を達成するシステムは存在しない。
確かに、JavaTM Virtual machineなどのソフトウェア解
決策は、コードの動作を最適化するように試みるが、限
界がコードが実行される特定のプロセッサおよびシステ
ムの特徴であった。
発明の開示 よって、本発明の目的は、事実上いかなるタイプのプ
ロセッサにおいても非固有プログラム言語を容易に実行
する方法および手段を提供する事である。
本発明の別の目的は、JavaTMプログラムコードの動作
を高速化する方法および手段を提供することである。
本発明のさらに別の目的は、ハードウェア上で容易に
実現される、JavaTMコードを翻訳および実行する方法お
よび手段を提供することである。
本発明の別の目的は、コンピュータシステムが非Java
TMコードを実行する能力を低減しない、JavaTMコードを
翻訳および実行する方法および手段を提供することであ
る。
簡単に、本発明の好適な実施形態は、CPUチップの一
部として個別のチップ上、または個別のボード上でさえ
実施され得る集積回路「プログラム言語アクセスレータ
コア」である。プログラム言語アクセラレータコアは、
ハードウェアスタックメモリの専用であり、JavaTMコー
ドの実行のために存在またはエミュレートされる必要の
あるスタックメモリを直後提供する。ダイレクトメモリ
アクセス(「DMA」)コントローラも提供され、オーバ
ーフローおよびアンダーフロー条件(または他の特異的
な条件)が生じる際にスタックメモリに対してデータを
シフトする。本発明のソフトウェア部分は、JavaTMコー
ドを機械の固有言語コードに翻訳し、また、特定の機能
を実行するように前もって決められたメモリアドレスを
書き込むなど、必要に応じて本発明に独自の機能を実行
するためにコードを最適化する。この方法において、そ
れ以外ではいつくかのクロックサイクルを要し得る動作
は、単一の(または少なくともより少ない)クロックサ
イクルで実行され得る。
本発明の利点は、JavaTMコードを実行する速度が非常
に増加する事である。
本発明の更なる利点は、JavaTMコードが、本質的に任
意のタイプのプロセッサ上で容易に実行され得ることで
ある。
本発明の更に別の利点は、安価なコンピュータであっ
てもJavaTMコードの実行のために最適化され得るよう
に、本発明が容易および安価に実現され得ることであ
る。
本発明の更に別の利点は、今後入手可能になり得るよ
うな新しいタイプのプロセッサに適応することが困難ま
たは高価ではないことである。
本発明のこれらの、および他の利点は、本発明を実行
するのに現在知られている最良の方法、および本明細書
中に記載およびいくつかの図面に示される好適な実施形
態の産業的利用性を考慮して当業者に明らかになる。
図面の簡単な説明 図1は、本発明によるプログラム言語アクセラレータ
コアを上に有する集積回路のブロック図である。
図2は、本発明により向上されたCPUがコンピュータ
システムにどのように統合されるかの例を示すブロック
図である。
図3は、図1のインテリジェントスタックのより詳細
なブロック図である。
図4は、図1および図3に示されるインテリジェント
スタックのメモリマップである。
図5は、本発明のプロセスの1つの局面のフローチャ
ートである。
図6は、本発明による値プッシュ動作のフローチャー
トである。
図7は、本発明による値ポップ動作のフローチャート
である。
図8は、本発明による定数プッシュ動作のフローチャ
ートである。
図9は、本発明による算術演算のフローチャートであ
る。
図10は、本発明によるローカル変数ロード動作のフロ
ーチャートである。
図11は、本発明によるローカル変数格納動作のフロー
チャートである。
本発明を実行する最良の方法 本発明を実行するために現在知られている最良の方法
は、リアルタイムアクセラレータコアである。本発明の
リアルタイムアクセラレータコアを図1にブロック図と
して示し、その中で全体的な参照符号10で示す。
リアルタイムアクセラレータコア10は、インテリジェ
ントスタック12およびスマートDMAコントローラ14を有
する。リアルタイムアクセラレータコア10は、固有CPU
が追加のソフトウェアベースの翻訳または解釈なしにJa
vaTMプログラムを(標準JavaTMインタープリタまたはJI
Tコンパイラと比較して)より速い実行モードで実行し
得るように標的固有CPU16によってJavaTMオブジェクト
コードのリアルタイム解釈および実行することを可能に
する。図1の例において、プログラム言語アクセラレー
タコア10およびCPUは単一のCPUチップ18上で実施されて
いるが、本明細書中で上述したようにこれは本発明の必
要な局面ではないことに留意されたい。
図2は、内部にプログラム言語アクセラレータ10を有
するCPUチップ18で動作するように構成された典型的な
コンピュータの図表の例である。コンピュータチップ内
のCPUチップ18の接続は、同種の従来のコンピュータ
(図示せず)と大差はない。データバス22、アドレスバ
ス24および制御バス26は、適切なデータ経路28にそれぞ
れ設けられ、CPUチップ18、(RAM)メモリ30、およびI/
Oセクション32と通信する。
データバス22は、固有CPUデータバスである。データ
バス22の幅は、固有CPU16の自然データバス幅(8、1
6、または32ビット)であるべきである。プログラム言
語アクセラレータコア10におけるインターフェース論理
は、タスクに関する任意のデータ幅を処理する。アドレ
スバス24は、固有CPUアドレスバスである。アドレスバ
ス28の幅は、固有CPU16の自然アドレスバス幅であるべ
きである。制御バス26は、クロック、リセット、読取、
書き込み、割り込みライン、バス要求など、いかなるCP
Uでも見出され得るいくつかの制御信号、を輸送する。
図2の例は、本発明のプログラム言語アクセラレータ
コア10が用いられ得るコンテクストを示すためのみに提
供されており、本発明の局面を開示するように意図され
ない。動作中、メモリ30は、固有CPU16(図1)のため
の要求された初期化ソフトウェア、(用いられる場合
は)オペレーティングシステム、I/O装置ドライバ、ま
たは制御コード、ならびにいかに更なる詳細で議論され
る機能を有するプログラム言語アクセラレータソフトウ
ェア34を含む。更に、メモリ30は必要とされる任意のコ
ンパイルされたJavaTMコード(例えば、特殊カスタムク
ラスライブラリ)を含み得る。
エンドユーザアプリケーションに依存して、本発明の
プログラム言語アクセラレータコア10およびプログラム
言語アクセラレータソフトウェア34を装備しているコン
ピュータ20は、不揮発性メモリに既に存在する任意のJa
vaTMコードを実行し得るか、またはそれを適用可能なI/
O装置(通信ポート、ディスクなど)を介してロードし
得る。
プログラム言語アクセラレータコア10は、JavaTM Vir
tual Machineがスタックベースの機械エミュレーション
であり、(図1の固有CPUコア16等の)現代のCPU上のス
タック動作のほとんどが1クロックサイクル以上かかっ
て完了する事実を利用する。インテリジェントスタック
12は、本質的にJavaTM Virtual Machineスタックのため
の大きな仮想キャッシュである。DMAコントローラ14
(図1)は、以下に詳細に議論されるように実際のキャ
ッシュの制限されたサイズによってスタックオーバーフ
ローまたはアンダーフローが生じる場合にキャッシュを
一貫して保つ。
図3は、図1に関連して本明細書中に前述されたイン
テリジェントスタック12のより詳細なブロック図であ
る。図3を見ると、インテリジェントスタック12が簡単
な内部演算論理回路(「ALU」)を有することが分か
る。この回路は、JavaTM Virtual Machineの実現におい
て当業者によく知られたiaddまたはiincなどのスタック
の上部(tops)をアップデートする動作と共にJavaTM V
irtual Machineの仕様書によって規定されるような定数
のプッシュを可能にする。キャッシュ38は、インテリジ
ェントスタック内の実際のキャッシュメモリである。ス
タックコントローラ40は、従来のスタック制御装置にお
いて見出されるようなスタックポインタ42およびスタッ
クポインタネクスト44を有する。従来のデコーダ46がア
ドレスおよび命令を復号化するために提供され、出力MU
X48が動作に適切なインテリジェントスタック12内のソ
ースから出力を提供する。
インテリジェントスタック12は、スタックとして用い
られるように構成された64×32ビットレジスタファイル
である。インテリジェントスタック12は、固有CPU16メ
モリアドレススペースにマッピングされたメモリであ
り、固有CPU16の速いスタック動作(プッシュ、ポッ
プ)および、レジスタの任意の1つへのランダムアクセ
スを可能にする。インテリジェントスタック12は、自動
的なスタックオーバーフロー/アンダーフロー検出のた
めの回路を提供する。スマートDMAコントローラ14は、
異なるタスクの間をシフトする必要がある時などにメモ
リ30に対してまたはメモリ30からインテリジェントスタ
ック12の全体のコンテントを読み出したり書き込んだり
するように構成されている。スマートDMAコントローラ1
4は、また、インテリジェントスタック12からメモリ30
への任意の過剰なデータを一時的に格納することによっ
て潜在的なスタックオーバーフローまたはアンダーフロ
ーを訂正する。スマートDMAは、スタックがオーバーフ
ローに近づいた際(プッシュ動作の際)にメインメモリ
30にワードブロックをダンプするか、または、スタック
がアンダーフローに近づいた際(ポップ動作の際)にメ
インメモリからワードブロックをロードする。スマート
DMAコントローラは、(変数ロードミスの際に)メイン
メモリ30からのローカル変数をロードするか、(変数格
納ミスの際に)メインメモリ30にローカル変数を格納す
るか、コンテクスト切換のために調整されたメインメモ
リ30にキャッシュ38の全体をダンプするか、または、コ
ンテクスト切換を実行するためにメモリ30からキャッシ
ュ38の全体をロードする事ができる。また、スマートDM
Aは、必要に応じてキャッシュ38に対してデータを移動
することによってスレッドコンテクスト切換を高速化す
るために任意に用いられ得る。
本発明のプログラム言語アクセラレータ10は、スマー
トDMAコントローラ14の追加によってプログラム言語ア
クセラレータ10の有用性および機能性を顕著に増加させ
るが、スマートDMAコントローラ14なしで動作させ得る
ことに留意されたい。
JavaTM動作がスタック機械アーキテクチャに基づくこ
とから、プログラム言語アクセラレータソフトウェア34
はJavaTMコードから固有CPUコードへの非常に単純な翻
訳のみを実行することを要求される。翻訳は、好ましく
はJavaTMコードがロードされる際に、支持言語アクセラ
レータソフトウェア34を用いて行われる。本発明による
最適化は、以下により詳細に議論されるように、特定の
メモリアドレスに指示される特定の動作を提供する本発
明の方法を含む方法による翻訳の間に提供される。固有
CPU16は(インテリジェントスタック12によって処理さ
れる)スタック管理に対処する必要がないので、JavaTM
プログラムの非常に高速な実行が可能である。
本発明によれば、データはデータバス22から来て(従
来のスタック動作と同様に)スタックの上部に流れる
か、または、スタックの最高部における値を含む算術演
算を有し、次いでスタックの上部の上の置換またはプッ
シュする。本発明に独自であるのは、動作の全ては用い
られるアドレスによって決定されるということである。
インテリジェントスタック12は、キャッシュ38のアドレ
ススペースの4倍を占有する。すなわち、インテリジェ
ントスタック12における実際のメモリロケーションの全
てを完全にアドレスするのに必要な数よりも4倍のアド
レスがCPUチップ18のメモリにマッピングされる。本発
明の現在知られる最良の実施形態10のキャッシュのサイ
ズは、64ワードであり、この実施形態においてインテリ
ジェントキャッシュ12は256個のロケーションを占有す
る。
図4は、インテリジェントスタック12によって占有さ
れたメモリアドレスの単純なメモリマップ50である。図
4を見ると、メモリマップ50は、第1の領域52、第2の
領域54、第3の領域56、および第4の領域58を有するこ
とが分かる。これらのうち、第1の領域52のみが物理キ
ャッシュ38に直接関連する。メモリマップ50をアドレス
するための完全なアドレス60は、領域52、54、56、また
は58のうちどの領域がアドレスされるか選択するための
2つの選択領域ビット62および、それぞれの領域内の特
殊データロケーションをアドレスするための8ビット選
択バイト64を有する。4つの領域52の各々は、その中に
あるアドレスに対して読み出しまたは書き込みをするこ
とによって実行される異なる動作を可能にするため、プ
ログラム言語アクセラレータ10の上部2つのアドレスビ
ット(選択領域ビット62)はどの領域52、54、56、また
は58がアドレスされたかを決定し、装置の主要動作モー
ドを決定する。
下記の表1は、固有CPU16がメモリマップ50の4つの
領域52、54、56および58の各々をアドレスする際に実行
される動作の全体的な説明を提供する。
簡単に、メモリマップ50の第1の領域52に書き込まれ
た値は、装置のベースアドレスにおいて固有CPU16によ
って直接書き込みまたは読み出され得る。第2の領域54
は、構成および制御レジスタに使用される。第3の領域
56は、プッシュおよびポップ動作のために用いられる。
第4の領域58は、スタックの上部で値を置換する算術演
算に使用される。デコーダ46は、入来アドレス要求を考
察し、それにより動作を自動的に決定する。アドレスと
動作との間の相関関係は、プログラム言語アクセラレー
タソフトウェア34による翻訳中に事前に確立されてい
る。データバスおよびタイミングは、アドレス、読み出
しおよび書き込み信号がクロック上で有効であり、読み
出しデータが後に続くクロックによって予期される包括
的な単一サイクルバスである。
図5は、本発明の方法によるコンピュータ20の一般的
な動作を示すフローチャート68である。コンピュータ20
が再起動されるときはいつでも、固有CPU16によって特
定の初期化が行われる:ハードウェア装置の設定、(使
用される場合は)オペレーティングシステムの初期化、
任意の要求されたスタートアッププログラムの実行、
等。これらのプログラムは、固有CPU16言語(例えば、
命令セット)に書き込まれ、固有CPU16によって直接実
行される。これらは、JavaTMおよび/またはプログラム
言語アクセラレータコア10と全く関係無しに行われる。
また、内部レジスタ動作70の設定において、固有CPU
は、プログラム言語アクセラレータコア10をアドレスす
るために取っておかれたメモリレジスタを含むメモリレ
ジスタを初期化する。これはユーザがJavaTM Execution
Environmentを呼び出して起動するときの動作の初期段
階である。JavaTM Virtual Machineの初期化中に、Java
TM Virtual Machineはプログラム言語アクセラレータコ
ア10およびその支持ソフトウェア(プログラム言語アク
セラレータソフトウェア34)の存在を検出し、それら両
方を初期化する。この段階で行われる様々な初期化のう
ち、最も重要なもののいくつかは(本明細書中にメモり
マップ50の第2の領域54を関連して説明された)プログ
ラム言語アクセラレータコア10の様々な構成レジスタ設
定である。
次いで、任意の必要な固有プログラムがコンピュータ
20によって実行され得る。これは、プログラム言語アク
セラレータコア10による任意の動作を必要とせずに固有
CPU16によって直接行われる。(これらの動作は、図5
のフローチャート68に図示されておらず、フローチャー
ト68を正しいコンテクストに置くためだけにここで述べ
られる。) (メモリ内に既に存在するか、またはディスクからロ
ードされるあるいは通信ラインから受信される必要があ
る)JavaTMのクラスファイルが実行される必要があると
き、固有CPU16はJVMクラスローダおよびプログラム言語
アクセラレータソフトウェア34を用いて要求されたファ
イルをロード、準備、翻訳の実行、および実行をし始め
る。このプロセスは、後に続くセクションで詳細に説明
されるいくつかのステップから形成される。クラスファ
イルロード動作72において、JavaTMクラスファイルがロ
ードされる。この部分は、「JavaTM Virtual Machine S
pecification」に記載されるように標準JavaTM Virtual
Machineコードによって全部が実行される。連結および
照合動作74において、連結、照合、準備および決定は、
JavaTM Virtual Machineリンカーによって従来通り実行
される。この部分も、標準JavaTM Virtual Machineコー
ドによって全部が実行される。
翻訳動作76に続いて、固有CPU16がクラスファイルの
実現コード(例えば、クラスを実現するJavaTM Virtual
Machineバイトコード)を見つけ、固有の命令に翻訳
し、メモリ30における実行領域にロードする。この部分
は、プログラム言語アクセラレータソフトウェア34によ
って全部が行われる。翻訳段階の目的は、(前の段階で
ロードされ、連結された)JavaTMバイトコードを固有CP
Uの命令ストリームに変換し、適切にプログラム言語ア
クセラレータコア10を動作することである。本明細書中
に記載のように、特別のメモリロケーションから/に対
して読み出しまたは書き込むことは、プログラム言語ア
クセラレータコア10の動作の全てを呼び出すため、翻訳
された固有コードは、プログラム言語アクセラレータコ
ア10の様々なメモリ領域から/に対する読み出しおよび
書き込み命令を主に含む。バイトコードを固有コードに
特異的に翻訳することは、プログラム言語アクセラレー
タコア10に付属する固有CPUに依存する。翻訳されたコ
ードは、メモリ30に格納される。一旦クラスファイルが
完全に翻訳されると、オリジナルバイトコードイメージ
が破棄され得、翻訳された固有コードのみが用いられ
る。
一旦ローディングプロセスが完了すると、固有CPU16
は翻訳された固有コードのエントリポイントへの分岐
(ジャンプ)を実行し、クラス初期化コードを実行し始
める。これは、本開示を通して論じられるように、ハー
ドウェアスタックおよび論理専用のプログラム言語アク
セラレータコア10を利用する命令シーケンスを有する固
有プログラムである。これは、図5のフローチャート68
における実行固有コード動作78によって示される。
実行固有コード動作78内で生じる本発明の方法の動作
の更なる詳細は、以下の追加のフローチャートに関連し
て論じられる。これらの動作およびそれぞれのフローチ
ャートは以下の通りである:固有CPU16がインテリジェ
ントスタック12のメモリマップ50の第2の領域54をアド
レスする際に生じる動作に関連する値プッシュ動作80
(図6)および値ポップ動作82(図7)。定数プッシュ
動作84(図8)はまた、固有CPUがインテリジェントス
タック12のメモリマップ50の第2の領域54の選択された
ロケーションをアドレスする際に生じる動作に関連す
る。(JavaTMに精通している者は、等価の「定数ポッ
プ」動作が必要ないことを認識するであろう。) 算術演算84フローチャート(図9)は、メモリマップ
50の第3の領域54の選択された領域がアドレスされた際
にプログラム言語アクセラレータコア10で生じる動作を
説明する。ローカル変数ロード動作88(図10)およびロ
ーカル変数格納動作90(図11)は、これらのそれぞれの
機能を説明し、スマートDMAコントローラ14の動作につ
いて更なる詳細を提供する。
本明細書の前に紹介されたメモリマップ50の4つの領
域52、54、56、および58の異なる機能の論議に再び戻る
と、本発明の現在知られている最良の実施形態におい
て、プログラム言語アクセラレータコア10はそのハード
ウェアインテリジェントスタック12において64ワードを
含むことが思い出される。このアドレススペースは、そ
の中のアドレスに対して読み出しまたは書き込む事によ
って異なる動作が実行されることを可能にする4つの主
要領域52、54、56、および58のそれぞれに分割される。
メモリマップ50の第1の領域52に関して、この領域は、
この領域がメモリマップの唯一の領域であると仮定した
場合、すなわち、メモリマップ50のアドレスとキャッシ
ュ38との間に1対1の相互関係が存在すると仮定した場
合に、当業者がメモリマップ50が振る舞うように期待す
る機能を果たす。メモリマップ50の第1の領域52は、そ
れらがランダムアクセスメモリであるかのように、ハー
ドウェアスタックレジスタ(64−32−ビットレジスタ)
のいずれにも読み出しおよび書き込みアクセスを可能に
するために提供される。
メモリマップ50の第2の領域54に関して、この領域に
おけるレジスタは、プログラム言語アクセラレータコア
10の動作を制御する。これらのレジスタは読み出しおよ
び書き込みアクセスを有する。また、この領域は4つの
特別な書き込み専用eロケーションを含む。書き込み専
用ロケーションの2つは、変数動作に用いられ、後の2
つはコンテクスト切換に用いられる。これらのレジスタ
のアドレス指定は、固有CPU16の低いアドレスビットを
介して行われる。以下の表2はメモリマップ50の第2の
領域54内の適用レジスタのリストである。
メモリマップの第3の領域56に関して、この領域は、
値または定数をスタックにプッシュするために用いら
れ、またスタックから値をポップするために用いられ
る。実行される動作は、プロセッサの低いアドレスビッ
ト(選択バイト62)によって決定される。すなわち、ア
ドレスが実行される動作を決定する。これらの機能は、
下記の表3に列挙されている。当業者は、いくつかの場
合において、固有CPU16によってプログラム言語アクセ
ラレータコア10に提供されるデータの値は、動作が一定
値で実行されているため不適切であることを認識するで
あろう。
メモリマップ50の第4の領域58に関して、この領域
は、Top−Of−Stackの値で算術演算を開始するために用
いられる。スタック上部の値はデータバス上の値とTop
−Of−Stackの現在の値との間の算術演算の結果によっ
て置換される。実行される算術演算は、プロセッサのロ
ーアドレスビッツ(選択バイト62)によって決定され
る。これらの動作の全ては、整数値(32ビット整数)上
で実行される。これらの機能は、以下の表4に列挙され
る。
図6に示す値プッシュ動作80を参照に、プログラム言
語アクセラレータソフトウェア34が値プッシュ動作に関
してJavaTMコードを翻訳し、最適化した時、おいびその
ような動作が実行される時期である時、動作80aにおい
て値がロケーション「プッシュポップ」(表3を参照)
に書き込まれる。動作80bにおいて、アドレスは(図3
のデコーダ46によって)復号化され、値がそのように指
示される。次いで、動作80Cにおいて、データバス(図
2)から書き込まれた値は、そのTOSレジスタによって
指定されたロケーションでハードウェアスタック(図3
のキャッシュ38)に書き込まれ、TOSが増加される。ハ
ードウェアスタック(キャッシュ38)が決定動作80dで
決定されたようにオーバーフローに近づいたとき、動作
80eにおいて、スマートDMAコントローラ14が開始され、
キャッシュ38のコンテントの一部をメモり30(図2)に
保存する。
図7に示す値ポップ動作82を参照に、プログラム言語
アクセラレータソフトウェア34が値ポップ動作に関して
javaTMコードを翻訳し、最適化した時、およびそのよう
な動作が実行される時期である時、動作82aにおいて読
み出し命令が適切なロケーションに向けられる。動作82
bにおいて、アドレスが(図3のデコーダ46において)
複号化される。次いで、動作82cにおいて、キャッシュ3
8(図3)およびTOSポインタから読み出された(ポップ
された)値は減少される。動作82dにおいて、値がデー
タバス(図2)に送信される。これにより、決定動作82
eによって決定されるようにハードウェアスタック(キ
ャッシュ38)がアンダーフロー状態になる場合(すなわ
ち、キャッシュ38が未使用の所定レベルに達成した場
合)、動作82fにおいて、スマートDMAコントローラ14が
開始され、メモリ30(図2)からキャッシュ38のコンテ
ントの一部を復元する。
図8の一定のプッシュ動作84を参照に、プログラム言
語アクセラレータソフトウェア34が一定のプッシュ動作
に関してJavaTMコードを翻訳し、最適化した時、および
そのような動作が実行される時期である時、動作84aに
おいて書き込み命令が適切なロケーションに向けられ
る。動作84bにおいて、アドレスが(図3のデコーダ46
によって)複号化される。次いで、動作84cにおいて、
選択された特定のアドレスによって検出された一定値
は、そのTOSレジスタによって示されたロケーションに
おいてハードウェアスタック(図3のキャッシュ38)に
書き込まれ(プッシュされ)、TOSが増加される。ハー
ドウェアスタック(キャッシュ38)が決定動作84dで決
定されたようにオーバーフローに近づいたとき、動作84
eにおいて、スマートDMAコントローラ14が開始され、キ
ャッシュ38のコンテントの一部をメモリ30(図2)に保
存する。
図9の算術演算86を参照に、プログラム言語アクセラ
レータソフトウェア34が特定の算術動作に関してJavaTM
コードを翻訳し、最適化した時、およびそのような動作
が実行される時期である時、動作86aにおいて書き込み
命令が適切なロケーションによって向けられる。その適
切なロケーションが一体なんであるのかは、本明細書に
おいて表4で前に列挙したように、実行される特定の算
術演算によって検出される。動作86bにおいて、アドレ
スが(図3のデコーダ46によって)複号化され、対応す
るデータがデータバス22(図2)からフェッチされる。
次いで、動作86cにおいて、選択されたアドレスに対応
する算術演算は、データバス(図2)から書き込まれた
値を用いてスタック上部における値上で実行され、その
TOSレジスタによって示されたロケーションにおいてハ
ードウェアスタック(図3のキャッシュ38)に結果が書
き込まれる。
変数格納動作90(図11)において、プログラム言語ア
クセラレータソフトウェア34が変数格納動作に関してJa
vaTMコードを翻訳し、最適化した時、およびそのような
動作が実行される時期である時、動作90aにおいて、イ
ンテリジェントスタック12の格納動作に対応する専用メ
モリロケーションに書き込みが向けられる。データバス
22に書き込まれる値は、格納されるべき必要なローカル
変数の絶対メモリアドレスであるべきである。動作90b
において、アドレスは(図3のデコーダ46によって)複
号化される。次いで、(決定動作90cによって決定され
るように)必要な変数がスタックにある場合、変数値が
TOSから読み出され、必要なアドレスに格納され、スタ
ック上部が減少される。動作88cで決定されるように必
要な変数がスタックにない場合、動作90eにおいてスマ
ートDMAコントローラ14が開始され、スタック上部から
の変数値を格納し、TOSを減少する。決定動作90fによっ
て決定されるようにハードウェアスタック(キャッシュ
38)がアンダーフローに近づいた場合、スマートDMAコ
ントローラ14が開始され、主要メモリ30からスタックコ
ンテントを復元する。
変数ロード動作88において(図10)、プログラム言語
アクセラレータソフトウェア34が変数ロード動作に関し
てJavaTMコードを翻訳し、最適化した時、およびそのよ
うな動作が実行される時期である時、動作88aにおい
て、変数格納動作専用のインテリジェントスタック12の
専用メモリロケーションに書き込みが向けられる。デー
タバス22に書き込まれた値は、格納されるために必要な
ローカル変数の絶対メモリアドレスであるべきである。
動作88bにおいて、アドレスは(図3のデコーダ46によ
って)複号化される。次いで、(決定動作88cによって
決定されるように)必要な変数がスタックにある場合、
動作88dにおいて変数値はキャッシュ38から読み出さ
れ、スタック上部に置かれ、TOSが増加される。決定動
作88cで決定されるように必要な変数がスタックにない
場合、動作88eにおいて、スマートDMAコントローラ14が
開始され、変数値がスタック上部にロードされ、TOSを
増加する。ハードウェアスタック(キャッシュ38)が決
定動作88fに決定されるようにオーバーフローに近づい
た場合、スマートDMAコントローラ14が開始され、ハー
ドウェアスタック(キャッシュ38)から主要メモリ30に
スタックコンテントを転送する。
本発明の価値または範囲を変更することなく本発明に
多様な改変が成され得る。例えば、本発明のプログラム
言語アクセラレータコア10および関連のプログラム言語
アクセラレータソフトウェア34は、本明細書中にJavaTM
プログラム言語と使用するために最適化されるように説
明されたが、関連する原理は、特に、このような言語が
主にスタックベースのシステムと使用されるために開発
され得る場合は、他のプログラム言語と使用することも
等しく適用可能である。
上述したように、他のありそうな改変は、それが現存
システムまたは現存システム設計により容易に加えられ
るようにCPUチップ18から(form)物理的に異なる装置
としてプログラム言語アクセラレータを実現することで
ある。
産業的応用性 本発明のプログラム言語アクセラレータコア10および
関連するプログラム言語アクセラレータソフトウェア34
は、さもなければJavaTM以外の言語で書き込まれるプロ
グラムを実行するために最適化されるプロセッサとの組
み合わせで、JavaTMコードのリアルタイム実行のために
広く使用されるように意図される。
上述を考慮して理解されるように、プログラム言語アク
セラレータコア10は、実行のためにJavaTMコードを固有
CPU16の固有コードに解釈する時、プログラム原語アク
セラレータソフトウェアが、動作がインテリジェントス
タック12によって自動的に達成されるように特定の仮想
メモリアドレスに向けられる特定の動作を引き起こす、
全く新しい概念を用いる。すなわち、インテリジェント
スタック12は、実行されるべき動作がどれであるかを知
り、データがメモリマップに書き込まれるアドレスのみ
に基づいてそれを実行する。これは、この特徴が呼び出
された場合に、動作当たり1からいくつかのクロックサ
イクルを節約する。よって、JavaTMコードの実行の速度
は、コンピュータ20が仮想機械などをバックグラウンド
で実行する負担無しに、大いに向上される。
本発明のプログラム言語アクセラレータコア10が容易
に製造され、システムおよび装置の現存する設計に統合
され得、本明細書に記載の利点が提供されるので、本発
明がこの産業に容易に受け入れられることが期待され
る。これらおよび他の理由から、本発明の利用性および
産業的応用性は、範囲が重要であり期間が永続的であ
る。
上記の全ては、本発明の利用可能な実施形態の例のほ
んの一部である。当業者は、本発明の精神および範囲を
逸脱する事なく多くの他の改変および変更が成され得る
ことが容易に認めるであろう。従って、上述の開示は、
制限することを意図せず、添付の請求の範囲は本発明の
範囲の全体を包含するように解釈されるべきである。
───────────────────────────────────────────────────── フロントページの続き 審査官 金田 利規 (56)参考文献 特開 平4−302329(JP,A) 特開 平1−251248(JP,A) 特開 昭58−103043(JP,A) 特開 昭62−159237(JP,A) 特開 平4−247529(JP,A) 特開 昭62−151938(JP,A) Braian Case,Javaチ ップ登場,組み込み用でポストRISC ねらう,日経エレクトロニクス 第664 号,日経BP社,1996年5月,p.174 −185 (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/45

Claims (18)

    (57)【特許請求の範囲】
  1. 【請求項1】スタック指向の解釈上の言語命令の高速化
    処理を提供するコンピュータシステムであって、 固有言語命令を実行する固有処理ユニットと、 該解釈上の言語命令を該固有言語命令に翻訳し、該固有
    言語命令のうち選択された命令に関連付けられたアドレ
    ス値を生成し、該アドレス値のそれぞれと該解釈上の言
    語命令のうち対応する1つを処理するために必要とされ
    る対応するコア演算との関係を確立するトランスレータ
    と、 該処理ユニットと通信するように結合され、該処理ユニ
    ットから受け取った関連付けられたアドレス値を含む要
    求に応答し、コア演算を実行するように動作可能である
    専用の処理アクセラレータコアと を備え、 該コアは、 該アドレス値のうち対応するものによってアドレス可能
    な複数のメモリアドレス位置を有する専用のハードウェ
    アスタックキャッシュメモリ装置であって、該位置は該
    コア演算のうち対応するものに関連付けられたデータを
    格納するためのものである、専用のハードウェアスタッ
    クキャッシュメモリ装置と、 該アドレス値(および該固有処理装置によって提供され
    る読み出し/書き込み制御信号)に応答し、該キャッシ
    ュメモリ装置への該データの書き込みおよび該キャッシ
    ュメモリ装置からの該データの読み出しを制御するよう
    に動作可能であり、該トランスレータによって確立され
    た該関係に基づいて該アドレス値に対応する該コア演算
    を自動的に決定するようにさらに動作可能である、コア
    制御論理と、 該コア制御論理と通信可能に結合され、該キャッシュメ
    モリ装置の該アドレス位置のうち対応するものから該デ
    ータを受け取り、該データを用いてコア演算を実行する
    ように動作可能である、算術論理ユニットと を含み、これにより、該コアによる演算の実行が該コン
    ピュータシステムによる解釈上の言語命令の高速化処理
    を可能にする、コンピュータシステム。
  2. 【請求項2】前記トランスレータは、前記固有処理ユニ
    ットによって実行される翻訳命令によって実現される、
    請求項1に記載のコンピュータシステム。
  3. 【請求項3】前記コア制御論理は、 スタック方法論に従って前記キャッシュメモリ装置への
    データの書き込みおよび該キャッシュメモリ装置からの
    データの読み出しを制御するスタックコントローラと、 前記対応するコア演算を決定する目的で前記アドレス値
    の各々をデコードするデコーダと を含む、請求項1に記載のコンピュータシステム。
  4. 【請求項4】主要メモリユニットを更に含み、前記コア
    制御論理は、前記キャッシュメモリ装置がスタックオー
    バーフロー状態に近づいた場合には該キャッシュメモリ
    装置から該主要メモリユニットにデータをシフトするよ
    うに動作し、該キャッシュメモリ装置がスタックアンダ
    ーフロー状態に近づいた場合には該主要メモリユニット
    から該キャッシュメモリ装置にデータをロードするよう
    に動作するダイレクトメモリアクセスコントローラを更
    に含む、請求項1に記載のコンピュータシステム。
  5. 【請求項5】前記ダイレクトメモリアクセスコントロー
    ラは、 Variable Load Missの現象において前記主要メモリユニ
    ットから前記キャッシュメモリ装置にローカル変数をロ
    ードし、 Variable Store missの現象においてローカル変数を該
    主要メモリユニットに格納し、 コンテクスト切換動作について準備するために該キャッ
    シュメモリ装置から該主要メモリユニットにデータを転
    送し、 必要に応じて、該キャッシュメモリ装置に入出力するデ
    ータを移動することによって高速化スレッドコンテクス
    ト切換を実行する、 ように更に動作する、請求項4に記載のコンピュータシ
    ステム。
  6. 【請求項6】前記アドレス値の各々は、 前記キャッシュメモリ装置の複数のメモリスペース領域
    から選択するための複数の選択領域ビットであって、該
    領域の各々が前記アドレス位置の特定のセットを含む複
    数の選択領域ビットと、 該領域の各々の該アドレス位置の各々の特定のものを選
    択し、実行すべき前記動作を決定するための複数の選択
    ビットと を含む、請求項1に記載のコンピュータシステム。
  7. 【請求項7】前記解釈上の言語がJavaTMである、請求項
    1に記載のコンピュータシステム。
  8. 【請求項8】前記コア演算が算術演算を含む、請求項1
    に記載のコンピュータシステム。
  9. 【請求項9】前記コア演算がブール(Boolean)論理演
    算を含む、請求項1に記載のコンピュータシステム。
  10. 【請求項10】スタック指向の解釈上の言語命令の高速
    化処理を提供する方法であって、 解釈上の言語命令を受け取るステップと、 該解釈上の言語命令を固有言語命令に翻訳するステップ
    と、 該固有言語命令のうち選択されたものに関連付けられた
    アドレス値を生成するステップであって、該選択された
    命令の各々と該対応するアドレス値とが対応するコア演
    算に関連付けられている、ステップと、 専用の処理アクセラレータコアに含まれる専用のハード
    ウェアスタックキャッシュメモリ装置の位置にデータを
    書き込み、その位置からデータを読み出すステップであ
    って、該位置が該アドレス値のうち対応するものによっ
    て示されており、該データが複数のコア演算のうち対応
    するものに関連付けられている、ステップと、 該キャッシュ装置の該アドレス位置のうち対応するもの
    から該コアに含まれる算術論理ユニットに該データを提
    供し、該算術論理ユニットを用いて該データを用いた該
    コア演算を実行するステップであって、該コア演算の各
    々が該対応するアドレス位置によって特定される、ステ
    ップと を含む方法。
  11. 【請求項11】前記翻訳するステップは、前記固有処理
    ユニットを用いて命令を実行することを含む、請求項10
    に記載の方法。
  12. 【請求項12】スタック方法論に従って前記キャッシュ
    メモリ装置へのデータの書き込みおよび該キャッシュメ
    モリ装置からのデータの読み出しを制御するステップ
    と、 前記対応するコア演算を決定する目的で前記アドレス値
    の各々をデコードするステップと を更に含む、請求項10に記載の方法。
  13. 【請求項13】前記キャッシュメモリ装置がスタックオ
    ーバーフロー状態に近づいた場合には該キャッシュメモ
    リ装置からコンピュータシステムの主要メモリユニット
    にデータをシフトするステップと、 該キャッシュメモリ装置がスタックアンダーフロー状態
    に近づいた場合には該主要メモリユニットから該キャッ
    シュメモリ装置にデータをロードするステップと、 を含むダイレクトメモリアクセス制御ステップを更に含
    む、請求項10に記載の方法。
  14. 【請求項14】Variable Load Missの現象において前記
    主要メモリユニットから前記キャッシュメモリ装置にロ
    ーカル変数をロードするステップと、 Variable Store missの現象においてローカル変数を該
    主要メモリユニットに格納するステップと、 コンテクスト切換動作について準備するために該キャッ
    シュメモリ装置から該主要メモリユニットにデータを転
    送するステップと、 必要に応じて、該キャッシュメモリ装置に入出力するデ
    ータを移動することによって高速化スレッドコンテクス
    ト切換を実行するステップと、 を含むダイレクトメモリアクセス制御ステップを更に含
    む、請求項13に記載の方法。
  15. 【請求項15】前記アドレス値の各々は、 前記キャッシュメモリ装置の複数のメモリスペース領域
    から選択するための複数の選択領域ビットであって、該
    領域の各々が前記アドレス位置の特定のセットを含む複
    数の選択領域ビットと、 該領域の各々の該アドレス位置の各々の特定のものを選
    択し、実行すべき前記動作を決定するための複数の選択
    ビットと を含む、請求項10に記載の方法。
  16. 【請求項16】前記解釈上の言語がJavaTMである、請求
    項10に記載の方法。
  17. 【請求項17】前記コア演算が算術演算を含む、請求項
    10に記載の方法。
  18. 【請求項18】前記コア演算がブール論理演算を含む、
    請求項10に記載の方法。
JP51700998A 1996-11-13 1997-11-13 リアルタイムプログラム言語アクセラレータ Expired - Fee Related JP3330378B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US3068896P 1996-11-13 1996-11-13
US60/030,688 1996-11-13
PCT/US1997/020980 WO1998021655A1 (en) 1996-11-13 1997-11-13 Real time program language accelerator

Publications (2)

Publication Number Publication Date
JP2000507015A JP2000507015A (ja) 2000-06-06
JP3330378B2 true JP3330378B2 (ja) 2002-09-30

Family

ID=21855492

Family Applications (1)

Application Number Title Priority Date Filing Date
JP51700998A Expired - Fee Related JP3330378B2 (ja) 1996-11-13 1997-11-13 リアルタイムプログラム言語アクセラレータ

Country Status (8)

Country Link
US (1) US6606743B1 (ja)
EP (1) EP0938703B1 (ja)
JP (1) JP3330378B2 (ja)
AT (1) ATE244417T1 (ja)
AU (1) AU5507898A (ja)
DE (1) DE69723286T2 (ja)
DK (1) DK0938703T3 (ja)
WO (1) WO1998021655A1 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9098297B2 (en) 1997-05-08 2015-08-04 Nvidia Corporation Hardware accelerator for an object-oriented programming language
JPH11296381A (ja) * 1998-04-08 1999-10-29 Matsushita Electric Ind Co Ltd 仮想マシン及びコンパイラ
US6363472B1 (en) * 1998-09-03 2002-03-26 Telefonaktiebolaget L M Ericsson (Publ) Method and system for minimizing effect of replacing programming languages in telephony systems
US7225436B1 (en) * 1998-12-08 2007-05-29 Nazomi Communications Inc. 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
US6564312B1 (en) * 1999-06-15 2003-05-13 Koninklijke Philips Electronics N.V. Data processor comprising an arithmetic logic unit
US6542989B2 (en) * 1999-06-15 2003-04-01 Koninklijke Philips Electronics N.V. Single instruction having op code and stack control field
GB9921720D0 (en) * 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
WO2001079995A2 (en) * 2000-04-05 2001-10-25 Chicory Systems, Inc. Method for making efficient service calls to a hardware coprocessor using load and/or store instructions
AU5319901A (en) * 2000-04-05 2001-10-23 Chicory Systems Inc Method for making efficient service calls to a hardware coprocessor
US20020069402A1 (en) * 2000-10-05 2002-06-06 Nevill Edward Colles Scheduling control within a system having mixed hardware and software based instruction execution
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
KR20020028814A (ko) 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
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 データ処理装置
JP2002215387A (ja) * 2001-01-22 2002-08-02 Mitsubishi Electric Corp 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置
US7080373B2 (en) * 2001-03-07 2006-07-18 Freescale Semiconductor, Inc. Method and device for creating and using pre-internalized program files
US20030088407A1 (en) * 2001-04-02 2003-05-08 Yi Hu Codec
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
GB2376097B (en) 2001-05-31 2005-04-06 Advanced Risc Mach Ltd Configuration control within data processing systems
GB2376098B (en) * 2001-05-31 2004-11-24 Advanced Risc Mach Ltd Unhandled operation handling in multiple instruction set systems
GB2380003A (en) * 2001-07-03 2003-03-26 Digital Comm Technologies Ltd Method and apparatus for executing stack based programs using a register based processor
GB2377288A (en) * 2001-07-06 2003-01-08 Digital Comm Technologies Ltd Executing branch instructions of a stack based program on a register based processor
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US20040215444A1 (en) * 2002-03-25 2004-10-28 Patel Mukesh K. Hardware-translator-based custom method invocation system and method
US7480856B2 (en) * 2002-05-02 2009-01-20 Intel Corporation System and method for transformation of XML documents using stylesheets
US7131118B2 (en) * 2002-07-25 2006-10-31 Arm Limited Write-through caching a JAVA® local variable within a register of a register bank
EP1387278A3 (en) * 2002-07-31 2005-03-23 Texas Instruments Inc. Methods and apparatuses for managing memory
EP1387252B1 (en) * 2002-07-31 2019-02-13 Texas Instruments Incorporated Instruction prefix to indicate system commands
EP1391821A3 (en) * 2002-07-31 2007-06-06 Texas Instruments Inc. A multi processor computing system having a java stack machine and a risc based processor
US7103881B2 (en) * 2002-12-10 2006-09-05 Intel Corporation Virtual machine to provide compiled code to processing elements embodied on a processor device
GB2399897B (en) * 2003-03-26 2006-02-01 Advanced Risc Mach Ltd Memory recycling in computer systems
US7484118B2 (en) * 2003-12-16 2009-01-27 International Business Machines Corporation Multi nodal computer system and method for handling check stops in the multi nodal computer system
KR100643268B1 (ko) * 2004-01-17 2006-11-10 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
JP4086791B2 (ja) * 2004-01-28 2008-05-14 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラプログラム、動的コンパイラプログラム、再現コンパイラプログラム、再現コンパイラ、コンパイル方法、及び記録媒体
GB2412192B (en) * 2004-03-18 2007-08-29 Advanced Risc Mach Ltd Function calling mechanism
US7930526B2 (en) 2004-03-24 2011-04-19 Arm Limited Compare and branch mechanism
US7802080B2 (en) 2004-03-24 2010-09-21 Arm Limited Null exception handling
US7424596B2 (en) * 2004-03-31 2008-09-09 Intel Corporation Code interpretation using stack state information
US9836316B2 (en) * 2012-09-28 2017-12-05 Intel Corporation Flexible acceleration of code execution
US9405578B2 (en) * 2014-07-11 2016-08-02 Accenture Global Services Limited Intelligent application back stack management
US20190163492A1 (en) * 2017-11-28 2019-05-30 International Business Machines Corporation Employing a stack accelerator for stack-type accesses

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4205370A (en) * 1975-04-16 1980-05-27 Honeywell Information Systems Inc. Trace method and apparatus for use in a data processing system
US4395758A (en) * 1979-12-10 1983-07-26 Digital Equipment Corporation Accelerator processor for a data processing system
US5179734A (en) * 1984-03-02 1993-01-12 Texas Instruments Incorporated Threaded interpretive data processor
JPS616747A (ja) 1984-06-21 1986-01-13 Matsushita Electric Ind Co Ltd メモリ装置
US4674089A (en) * 1985-04-16 1987-06-16 Intel Corporation In-circuit emulator
US4980821A (en) * 1987-03-24 1990-12-25 Harris Corporation Stock-memory-based writable instruction set computer having a single data bus
JPH01251248A (ja) 1988-03-31 1989-10-06 Toshiba Corp スタックデータ構造用キャッシュ制御方式
JPH0259937A (ja) 1988-08-26 1990-02-28 Hitachi Maxell Ltd Icカード
JPH04302329A (ja) 1990-12-26 1992-10-26 Xerox Corp マイクロ処理システム
US5420989A (en) * 1991-06-12 1995-05-30 Cyrix Corporation Coprocessor interface supporting I/O or memory mapped communications
JPH06202877A (ja) 1992-12-28 1994-07-22 Fujitsu Ltd エミュレーション装置
JPH0793233A (ja) 1993-09-20 1995-04-07 Fujitsu Ltd ファームウェア・トレースデータ取得方式
US6038643A (en) * 1996-01-24 2000-03-14 Sun Microsystems, Inc. Stack management unit and method for a processor having a stack
US5937193A (en) * 1996-11-27 1999-08-10 Vlsi Technology, Inc. Circuit arrangement for translating platform-independent instructions for execution on a hardware platform and method thereof
US5889996A (en) * 1996-12-16 1999-03-30 Novell Inc. Accelerator for interpretive environments

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Braian Case,Javaチップ登場,組み込み用でポストRISCねらう,日経エレクトロニクス 第664号,日経BP社,1996年5月,p.174−185

Also Published As

Publication number Publication date
JP2000507015A (ja) 2000-06-06
US6606743B1 (en) 2003-08-12
EP0938703A1 (en) 1999-09-01
ATE244417T1 (de) 2003-07-15
AU5507898A (en) 1998-06-03
DE69723286D1 (de) 2003-08-07
DK0938703T3 (da) 2003-08-18
EP0938703A4 (en) 2001-04-18
WO1998021655A1 (en) 1998-05-22
EP0938703B1 (en) 2003-07-02
DE69723286T2 (de) 2004-05-13

Similar Documents

Publication Publication Date Title
JP3330378B2 (ja) リアルタイムプログラム言語アクセラレータ
US7873814B1 (en) Microcode based hardware translator to support a multitude of processors
US6374353B1 (en) Information processing apparatus method of booting information processing apparatus at a high speed
US6298434B1 (en) Data processing device for processing virtual machine instructions
US6230259B1 (en) Transparent extended state save
EP0476722B1 (en) Data processing system
US5617553A (en) Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer
JPH10187533A (ja) キャッシュシステム、プロセッサ及びプロセッサを動作させる方法
JP2001508907A (ja) 仮想マシン命令を実行するための処理装置
US6718539B1 (en) Interrupt handling mechanism in translator from one instruction set to another
KR20010104687A (ko) 축소 명령 세트 컴퓨터 및 복합 명령 세트 컴퓨터프로세서들을 위한 자바 가상 머신 하드웨어
JPH08278918A (ja) エンディアンタスクを実行するシステム及び方法
JP2003196107A (ja) エミュレートされるコードとネイティブコードとを統合するシステムおよび方法
JP2002169696A (ja) データ処理装置
US5805930A (en) System for FIFO informing the availability of stages to store commands which include data and virtual address sent directly from application programs
JPH09231093A (ja) 2つのアーキテクチャ間でプログラム制御を転送する方法及びシステム
US5696990A (en) Method and apparatus for providing improved flow control for input/output operations in a computer system having a FIFO circuit and an overflow storage area
WO2006112978A2 (en) Microprocessor access of operand stack as a register file using native instructions
US6691306B1 (en) Use of limited program space of general purpose processor for unlimited sequence of translated instructions
JP2002366367A (ja) プログラム命令解釈
US5930495A (en) Method and system for processing a first instruction in a first processing environment in response to intiating processing of a second instruction in a emulation environment
JP2005267640A (ja) 機能を呼び出す方法と装置
JPH0683615A (ja) 命令セットエミュレーションを行う計算機
JPH0668724B2 (ja) シミユレーシヨン方法
JP2000353092A (ja) 情報処理装置及びそのレジスタファイル切替方法

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees