[go: up one dir, main page]

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

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

Info

Publication number
JP2000507015A
JP2000507015A JP10517009A JP51700998A JP2000507015A JP 2000507015 A JP2000507015 A JP 2000507015A JP 10517009 A JP10517009 A JP 10517009A JP 51700998 A JP51700998 A JP 51700998A JP 2000507015 A JP2000507015 A JP 2000507015A
Authority
JP
Japan
Prior art keywords
cache memory
stack
core
data
memory device
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
JP10517009A
Other languages
English (en)
Other versions
JP3330378B2 (ja
Inventor
ラツ,ヤイール
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 プログラム言語アクセラレータコア(10)は、固有CPU(16)プロセッサでJavaTMプログラムコードの動作を最適化するために、コンピュータ(20)においてプログラム言語アクセラレータソフトウェア(34)との組み合わせで動作する。インテリジェントスタック(12)は、マッピングされるメモリマップ(50)において複数のメモリ領域(52、54、56および58)を有することによって、固有CPU(16)がどちらのメモリ領域(52、54、56および58)をアドレスするかに依存して特定の動作が実行される。プログラム言語アクセラレータソフトウェア(34)がJavaTMコードを固有CPU(16)の固有コードに翻訳する際、書き込まれたデータがどのように処理されるかに関連する個別の命令を含む必要がないメモリマップ(50)の適切な領域に読み出しおよび書き込み動作を向ける事によって最適化が提供される。

Description

【発明の詳細な説明】 リアルタイムプログラム言語アクセラレータ 技術分野 本発明は、コンピュータ処理の分野に関し、より詳細には、独自のハードウェ アおよびソフトウェアの組合せを用いるコンピュータコードのリアルタイム解釈 および動作に関する。本発明のリアルタイムプログラム言語アクセラレータの主 な現在の使用は、JavaTMコードにおいての実行であり、多様な異なるプロセッサ 上でこのようなコードを高い実行速度で実行できることが望ましい。 技術背景 当該技術において、より高いレベルのコンピュータ言語をほぼリアルタイムで 機械読取可能コードに変換するインタープリタを提供することが公知である。し かし、このようなインタープリタは、プログラムのローディングおよび実行中の 少なくともいくつかの点で実行されるプログラムの動作を遅らせる必要がある。 特に、JavaTMプログラム言語に関しては、「JavaTM Virtual Machine」を含むJa vaTMプログラムを実行するいくつかの利用可能な解決策は、それらのタスクを達 成するために実行が必要なソフトウェアベースのプログラムである。 任意の利用可能なタイプのプロセッサ上でJavaTMコードを実行する方法および /または手段を有することが有益である。また、それが実行するより実際に速く 実行するまたは少なくともJavaTMコードを解釈および実行するプロセス全体を減 速しない、JavaTMコードを処理するいくつかの方法および/または手段を有する ことが有益である。しかし、本発明者の知る限りでは、従来技術においてこのよ うな目的を達成するシステムは存在しない。確かに、JavaTM Virtual machineな どのソフトウェア解決策は、コードの動作を最適化するように試みるが、限界が コードが実行される特定のプロセッサおよびシステムの特徴であった。 発明の開示 よって、本発明の目的は、事実上いかなるタイプのプロセッサにおいても非固 有プログラム言語を容易に実行する方法および手段を提供する事である。 本発明の別の目的は、JavaTMプログラムコードの動作を高速化する方法および 手段を提供することである。 本発明のさらに別の目的は、ハードウェア上で容易に実現される、JavaTMコー ドを翻訳および実行する方法および手段を提供することである。 本発明の別の目的は、コンピュータシステムが非JavaTMコードを実行する能力 を低減しない、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が追加のソフトウェアベースの翻訳または解釈なしにJavaTM プログラムを(標準JavaTMインタープリタまたはJITコンパイラと比較し て)より速い実行モードで実行し得るように標的固有CPU16によってJavaTM オブジェクトコードのリアルタイム解釈および実行することを可能にする。図1 の例において、プログラム言語アクセラレータコア10およびCPUは単一のC PUチップ18上で実施されているが、本明細書中で上述したようにこれは本発 明の必要な局面ではないことに留意されたい。 図2は、内部にプログラム言語アクセラレータ10を有するCPUチップ18 で動作するように構成された典型的なコンピュータの図表の例である。コンピュ ータチップ内のCPUチップ18の接続は、同種の従来のコンピュータ(図示せ ず)と大差はない。データバス22、アドレスバス24および制御バス26は、 適切なデータ経路28にそれぞれ設けられ、CPUチップ18、(RAM)メモ リ30、およびI/Oセクション32と通信する。 データバス22は、固有CPUデータバスである。データバス22の幅は、固 有CPU16の自然データバス幅(8、16、または32ビット)であるべきで ある。プログラム言語アクセラレータコア10におけるインタフェース論理は、 タスクに関する任意のデータ幅を処理する。アドレスバス24は、固有CPUア ドレスバスである。アドレスバス28の幅は、固有CPU16の自然アドレスバ ス幅であるべきである。制御バス26は、クロック、リセット、読取、書き込み 、割り込みライン、バス要求など、いかなるCPUでも見出され得るいくつかの 制御信号、を輸送する。 図2の例は、本発明のプログラム言語アクセラレータコア10が用いられ得 るコンテクストを示すためのみに提供されており、本発明の局面を開示するよう に意図されない。動作中、メモリ30は、固有CPU16(図1)のための要求 された初期化ソフトウェア、(用いられる場合は)オペレーティングシステム、 I/O装置ドライバ、または制御コード、ならびにいかに更なる詳細で議論され る機能を有するプログラム言語アクセラレータソフトウェア34を含む。更に、 メモリ30は必要とされる任意のコンパイルされたJavaTMコード(例えば、特殊 カスタムクラスライブラリ)を含み得る。 エンドユーザアプリケーションに依存して、本発明のプログラム言語アクセラ レータコア10およびプログラム言語アクセラレータソフトウェア34を装備し ているコンピュータ20は、不揮発性メモリに既に存在する任意のJavaTMコード を実行し得るか、またはそれを適用可能なI/O装置(通信ポート、ディスクな ど)を介してロードし得る。 プログラム言語アクセラレータコア10は、JavaTM Virtual Machineがスタッ クベースの機械エミュレーションであり、(図1の固有CPUコア16等の)現 代のCPU上のスタック動作のほとんどが1クロックサイクル以上かかって完了 する事実を利用する。インテリジェントスタック12は、本質的にJavaTM Virtu al Machineスタックのための大きな仮想キャッシュである。DMAコントローラ 14(図1)は、以下に詳細に議論されるように実際のキャッシュの制限された サイズによってスタックオーバーフローまたはアンダーフローが生じる場合にキ ャッシュを一貫して保つ。 図3は、図1に関連して本明細書中に前述されたインテリジェントスタック1 2のより詳細なブロック図である。図3を見ると、インテリジェントスタック1 2が簡単な内部演算論理回路(「ALU」)を有することが分かる。この回路は 、JavaTM Virtual Machineの実現において当業者によく知られたiaddまたはiinc などのスタックの上部(tops)をアップデートする動作と共にJavaTM Virtual Mac hlneの仕様書によって規定されるような定数のプッシュを可能にする。キャッシ ュ38は、インテリジェントスタック内の実際のキャッシュメモリである。スタ ックコントローラ40は、従来のスタック制御装置において見出されるようなス タックポインタ42およびスタックポインタネクスト44を有する。従来のデコ ーダ46がアドレスおよび命令を復号化するために提供され、出力MUX48が 動作に適切なインテリジェントスタック12内のソースから出力を提供する。 インテリジェントスタック12は、スタックとして用いられるように構成され た64×32ビットレジスタファイルである。インテリジェントスタック12は 、固有CPU16メモリアドレススペースにマッピングされたメモリであり、固 有CPU16の速いスタック動作(プッシュ、ポップ)および、レジスタの任意 の1つへのランダムアクセスを可能にする。インテリジェントスタック12は、 自動的なスタックオーバーフロー/アンダーフロー検出のための回路を提供する 。スマートDMAコントローラ14は、異なるタスクの間をシフトする必要があ る 時などにメモリ30に対してまたはメモリ30からインテリジェントスタック1 2の全体のコンテントを読み出したり書き込んだりするように構成されている。 スマートDMAコントローラ14は、また、インテリジェントスタック12から メモリ30への任意の過剰なデータを一時的に格納することによって潜在的なス タックオーバーフローまたはアンダーフローを訂正する。スマートDMAは、ス タックがオーバーフローに近づいた際(プッシュ動作の際)にメインメモリ30 にワードブロックをダンプするか、または、スタックがアンダーフローに近づい た際(ポップ動作の際)にメインメモリからワードブロックをロードする。スマ ートDMAコントローラは、(変数ロードミスの際に)メインメモリ30からの ローカル変数をロードするか、(変数格納ミスの際に)メインメモリ30にロー カル変数を格納するか、コンテクスト切換のために調整されたメインメモリ30 にキャッシュ38の全体をダンプするか、または、コンテクスト切換を実行する ためにメモリ30からキャッシュ38の全体をロードする事ができる。また、ス マートDMAは、必要に応じてキャッシュ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が再起動されるときはいつでも、固有CP U16によって特定の初期化が行われる:ハードウェア装置の設定、(使用され る場合は)オペレーティングシステムの初期化、任意の要求されたスタートアッ ププログラムの実行、等。これらのプログラムは、固有CPU16言語(例えば 、命令セット)に書き込まれ、固有CPU16によって直接実行される。これら は、 JavaTMおよび/またはプログラム言語アクセラレータコア10と全く関係無しに 行われる。また、内部レジスタ動作70の設定において、固有CPUは、プログ ラム言語アクセラレータコア10をアドレスするために取っておかれたメモリレ ジスタを含むメモリレジスタを初期化する。これはユーザがJavaTM Execution E nvironmentを呼び出して起動するときの動作の初期段階である。JavaTM Virtual Machineの初期化中に、JavaTM Virtual Machineはプログラム言語アクセラレー タコア10およびその支持ソフトウェア(プログラム言語アクセラレータソフト ウェア34)の存在を検出し、それら両方を初期化する。この段階で行われる様 々な初期化のうち、最も重要なもののいくつかは(本明細書中にメモリマップ5 0の第2の領域54を関連して説明された)プログラム言語アクセラレータコア 10の様々な構成レジスタ設定である。 次いで、任意の必要な固有プログラムがコンピュータ20によって実行され得 る。これは、プログラム言語アクセラレータコア10による任意の動作を必要と せずに固有CPU16によって直接行われる。(これらの動作は、図5のフロー チャート68に図示されておらず、フローチャート68を正しいコンテクストに 置くためだけにここで述べられる。) (メモリ内に既に存在するか、またはディスクからロードされるあるいは通信 ラインから受信される必要がある)JavaTMのクラスファイルが実行される必要が あるとき、固有CPU16はJVMクラスローダおよびプログラム言語アクセラ レータソフトウェア34を用いて要求されたファイルをロード、準備、翻訳の実 行、および実行をし始める。このプロセスは、後に続くセクションで詳細に説明 されるいくつかのステップから形成される。クラスファイルロード動作72にお いて、JavaTMクラスファイルがロードされる。この部分は、「JavaTM Virtual M achine Specification」に記載されるように標準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−S tackの値で算術演算を開始するために用いられる。スタック上部の値はデー タバス上の値と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において読み出し命令 が適切なロケーションに向けられる。動作82bにおいて、アドレスが(図3の デコーダ46において)複号化される。次いで、動作82cにおいて、キャッシ ュ38(図3)およびTOSポインタから読み出された(ポップされた)値は減 少される。動作82dにおいて、値がデータバス(図2)に送信される。これに より、決定動作82eによって決定されるようにハードウェアスタック(キャッ シュ38)がアンダーフロー状態になる場合(すなわち、キャッシュ38が未使 用の所定レベルに達成した場合)、動作82fにおいて、スマートDMAコント ローラ14が開始され、メモリ30(図2)からキャッシュ38のコンテントの 一部を復元する。 図8の一定のプッシュ動作84を参照に、プログラム言語アクセラレータソフ トウェア34が一定のプッシュ動作に関してJavaTMコードを翻訳し、最適化し た時、およびそのような動作が実行される時期である時、動作84aにおいて書 き込み命令が適切なロケーションに向けられる。動作84bにおいて、アドレス が(図3のデコーダ46によって)複号化される。次いで、動作84cにおいて 、選択された特定のアドレスによって検出された一定値は、そのTOSレジスタ によって示されたロケーションにおいてハードウェアスタック(図3のキャッシ ュ38)に書き込まれ(プッシュされ)、TOSが増加される。ハードウェアス タック(キャッシュ38)が決定動作84dで決定されたようにオーバーフロー に近づいたとき、動作84eにおいて、スマートDMAコントローラ14が開始 され、キャッシュ38のコンテントの一部をメモリ30(図2)に保存する。 図9の算術演算86を参照に、プログラム言語アクセラレータソフトウェア3 4が特定の算術動作に関してJavaTMコードを翻訳し、最適化した時、およびその ような動作が実行される時期である時、動作86aにおいて書き込み命令が適切 なロケーションによって向けられる。その適切なロケーションが一体なんである のかは、本明細書において表4で前に列挙したように、実行される特定の算術演 算によって検出される。動作86bにおいて、アドレスが(図3のデコーダ46 によって)複号化され、対応するデータがデータバス22(図2)からフェッチ される。次いで、動作86cにおいて、選択されたアドレスに対応する算術演算 は、データバス(図2)から書き込まれた値を用いてスタック上部における値上 で実行され、そのTOSレジスタによって示されたロケーションにおいてハード ウェアスタック(図3のキャッシュ38)に結果が書き込まれる。 変数格納動作90(図11)において、プログラム言語アクセラレータソフト ウェア34が変数格納動作に関してJavaTMコードを翻訳し、最適化した時、およ びそのような動作が実行される時期である時、動作90aにおいて、インテリジ ェントスタック12の格納動作に対応する専用メモリロケーションに書き込みが 向けられる。データバス22に書き込まれる値は、格納されるべき必要なローカ ル変数の絶対メモリアドレスであるべきである。動作90bにおいて、アドレス は(図3のデコーダ46によって)複号化される。次いで、(決定動作90cに よって決定されるように)必要な変数がスタックにある場合、変数値がTOSか ら読み出され、必要なアドレスに格納され、スタック上部が減少される。動作 88cで決定されるように必要な変数がスタックにない場合、動作90eにおい てスマートDMAコントローラ14が開始され、スタック上部からの変数値を格 納し、TOSを減少する。決定動作90fによって決定されるようにハードウェ アスタック(キャッシュ38)がアンダーフローに近づいた場合、スマートDM Aコントローラ14が開始され、主要メモリ30からスタックコンテントを復元 する。 変数ロード動作88において(図10)、プログラム言語アクセラレータソフ トウェア34が変数ロード動作に関してJavaTMコードを翻訳し、最適化した時、 およびそのような動作が実行される時期である時、動作88aにおいて、変数格 納動作専用のインテリジェントスタック12の専用メモリロケーションに書き込 みが向けられる。データバス22に書き込まれた値は、格納されるために必要な ローカル変数の絶対メモリアドレスであるべきである。動作88bにおいて、ア ドレスは(図3のデコーダ46によって)複号化される。次いで、(決定動作8 8cによって決定されるように)必要な変数がスタックにある場合、動作88d において変数値はキャッシュ38から読み出され、スタック上部に置かれ、TO Sが増加される。決定動作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が容易に製造され、システム および装置の現存する設計に統合され得、本明細書に記載の利点が提供されるの で、本発明がこの産業に容易に受け入れられることが期待される。これらおよび 他の理由から、本発明の利用性および産業的応用性は、範囲が重要であり期間が 永続的である。 上記の全ては、本発明の利用可能な実施形態の例のほんの一部である。当業者 は、本発明の精神および範囲を逸脱する事なく多くの他の改変および変更が成さ れ得ることが容易に認めるであろう。従って、上述の開示は、制限することを意 図せず、添付の請求の範囲は本発明の範囲の全体を包含するように解釈されるべ きである。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(GH,KE,LS,MW,S D,SZ,UG,ZW),UA(AM,AZ,BY,KG ,KZ,MD,RU,TJ,TM),AL,AM,AT ,AU,AZ,BA,BB,BG,BR,BY,CA, CH,CN,CU,CZ,DE,DK,EE,ES,F I,GB,GE,HU,IL,IS,JP,KE,KG ,KP,KR,KZ,LC,LK,LR,LS,LT, LU,LV,MD,MG,MK,MN,MW,MX,N O,NZ,PL,PT,RO,RU,SD,SE,SG ,SI,SK,TJ,TM,TR,TT,UA,UG, US,UZ,VN

Claims (1)

  1. 【特許請求の範囲】 1.スタック指向の解釈上の言語命令の高速化処理を提供するコンピュータシス テムであって、 固有言語命令を実行する固有処理装置と、 該解釈上の言語命令を該固有言語命令に翻訳し、該固有言語命令のうちの選択 された命令であって関連するアドレス値を発生するトランスレータであって、各 該選択された命令および該対応するアドレス値の各々が対応するコア動作に関連 するトランスレータと、 該処理装置と通信するために結合された処理アクセラレータコアであって、 該アドレス値の対応するものによって示される複数のメモリアドレスロケーシ ョンを有するスタックキャッシュメモリであって、データを格納するための該ロ ケーションが該コア動作の対応するものと関連する、スタックキャッシュメモリ と、 該アドレス値(および該固有処理装置によって提供される読み出し/書き込み 制御信号)に反応し、該キャッシュメモリ装置を往復する該選択された固有言語 命令と関連する該データの書き込みおよび読み出しを制御するように作用するコ ア制御論理と、 該キャッシュメモリ装置の該アドレスロケーションの対応するものからの該デ ータを受け取り、該データを用いてコア動作を実行するために作用する演算論理 回路であって、該コア動作の各々が該対応するアドレスロケーションによって特 定化される、演算論理ユニットと、を含む処理アクセラレータコアと、 を含む、コンピュータシステム。 2.前記トランスレータが前記固有処理装置によって実行される翻訳命令によっ て実現される、請求項1に記載のコンピュータシステム。 3.前記コア制御論理が スタック方法論に従って前記キャッシュメモリ装置を往復する該データの前記 書き込みおよび呼び出しを制御するスタックコントローラと、 前記対応するコア動作を決定する目的で前記アドレス値の各々を復号化するデ コーダと、 を含む、請求項1に記載のコンピュータシステム。 4.主要メモリユニットを更に含み、前記コア制御論理が、前記キャッシュメモ リ装置がスタックオーバーフロー状態に近づいた時に該主要メモリユニットに該 キャッシュメモリ装置からデータをシフトするように作用し、該キャッシュメモ リ装置がスタックアンダーフロー状態に近づいた時に、該主要メモリユニットか ら該キャッシュメモリ装置にデータをロードするように作用するダイレクトメモ リアクセスコントローラを更に含む、請求項1に記載のコンピュータシステム。 5.前記ダイレクトメモリアクセスコントローラが、 Variable Load Missの現象において前記主要メモリユニットから前記キャッシ ュメモリ装置にローカル変数をロードし、 Variable Store missの現象においてローカル変数を主要メモリユニットに格 納し、 コンテクスト切換動作について準備するために該キャッシュメモリ装置から該 主要メモリユニットにデータを転送し、 必要に応じて、該キャッシュメモリ装置に入出力するデータを移動することに よって高速化スレッドコンテクスト切換を実行する、 ように更に作用する、請求項4に記載のコンピュータシステム。 6.前記アドレス値の各々が、 前記キャッシュメモリ装置の複数のメモリスペース領域から選択する複数の選 択領域ビットであって、該領域の各々が前記アドレスロケーションの特定のセッ トを含む複数の選択領域ビットと、 該領域の各々の該アドレスロケーションの各々の特定のものを選択し、実行す 前記動作を決定する、複数の選択ビットと、 を含む、請求項1に記載のコンピュータシステム。 7.前記解釈上の言語がJavaTMである、請求項1に記載のコンピュータシステム 。 8.前記コア動作が算術演算を含む、請求項1に記載のコンピュータシステム。 9.前記コア動作がブール(Boolean)論理動作を含む、請求項1に記載のコン ピュータシステム。 10.スタック指向の解釈上の言語命令の高速化処理を提供する方法であって、 固有言語命令を実行する固有処理装置と、該処理装置と通信するために結合され る処理アクセラレータコアと、該コアが、複数のメモリアドレスロケーションと 、前記キャッシュメモリ装置を往復するデータの書き込みおよび読み出しを制御 するように作用する制御論理と、該キャッシュ装置の該アドレスロケーションの 対応するものからデータを受け取る演算論理回路とを有し、該データを用いてコ ア動作を実行するように作用するスタックキャッシュメモリ装置を含む、処理ア クセラレータコアと、を含むコンピュータシステムにおいて、 解釈上の言語命令を受け取る工程と、 該解釈上の言語命令を該固有言語命令に翻訳する工程と、 該固有言語命令の選択されたものと関連するアドレス値を発生する工程であっ て、該選択された命令の各々および該対応するアドレス値が対応するコア動作に 関連する工程と、 該キャッシュメモリ装置のロケーションを往復するデータを書き込みおよび読 み出しする工程であって、該ロケーションが該アドレス値の対応するもので示さ れ、該データが該コア動作の対応するものと関連する工程と、 該キャッシュ装置の該アドレスロケーションの対応するものから該演算論理回 路に該データを提供し、該データを用いて該コア動作を実行するために該演算論 理回路を用いる工程であって、該コア動作の各々が該対応するアドレスロケーシ ョンによって特定される工程と、 を含む方法。 11.前記翻訳する工程が、前記固有処理装置を用いる実行命令を含む、請求項 10に記載のコンピュータシステム。 12.前記コア論理が、 スタック方法論に従って前記キャッシュメモリ装置を往復するデータの前記書 き込みおよび読み出しを制御するスタックコントローラと、 前記対応するコア動作を決定する目的で前記アドレス値の各々を復号化するデ コーダと、 を含む、請求項10に記載のコンピュータシステム。 13.前記キャッシュメモリ装置がスタックオーバーフロー状態に近づいた時に 該キャッシュメモリ装置から前記コンピュータシステムの主要メモリユニットに データをシフトする工程と、 該キャッシュメモリ装置がスタックアンダーフロー状態に近づいた時に該主要 メモリユニットから該キャッシュメモリ装置にデータをロードする工程と、 を含むダイレクトメモリアクセス制御工程を更に含む、請求項10に記載のコン ピュータシステム。 14.Variable Load Missの現象において前記主要メモリユニットから前記キャ ッシュメモリ装置にローカル変数をロードする工程と、 Variable Store missの現象においてローカル変数を該主要メモリユニットに 格納する工程と、 コンテクスト切換動作について準備するために該キャッシュメモリ装置から該 主要メモリユニットにデータを転送する工程と、 必要に応じて、該キャッシュメモリ装置を出入りするデータを移動することに よって高速化スレッドコンテクスト切換を実行する工程と、 を含む、ダイレクトメモリアクセス制御工程を更に含む、請求項13に記載のコ ンピュータシステム。 15.前記アドレス値の各々が、 前記キャッシュメモリ装置の複数のメモリスペース領域から選択する複数の選 択領域ビットであって、該領域の各々が前記アドレスロケーションの特定のセッ トを含む複数の選択領域ビットと、 該領域の各々の該アドレスロケーションの各々の特定のものを選択し、実行さ れる前記コア動作を決定する複数の選択ビットと、 を含む、請求項10に記載のコンピュータシステム。 16.前記解釈上の言語がJavaTMである、請求項10に記載のコンピュータシス テム。 17.前記コア動作が算術演算を含む、請求項10に記載のコンピュータシステ ム。 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 true JP2000507015A (ja) 2000-06-06
JP3330378B2 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002169696A (ja) * 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置
JP2002215387A (ja) * 2001-01-22 2002-08-02 Mitsubishi Electric Corp 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置

Families Citing this family (51)

* 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
US6332215B1 (en) 1998-12-08 2001-12-18 Nazomi Communications, Inc. Java virtual machine hardware for RISC and CISC processors
US7225436B1 (en) * 1998-12-08 2007-05-29 Nazomi Communications Inc. Java hardware accelerator using microcode engine
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
GB2367653B (en) 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
GB2367654B (en) 2000-10-05 2004-10-27 Advanced Risc Mach Ltd Storing stack operands in registers
KR20020028814A (ko) 2000-10-10 2002-04-17 나조미 커뮤니케이션즈, 인코포레이티드 마이크로코드 엔진을 이용한 자바 하드웨어 가속기
US7039717B2 (en) 2000-11-10 2006-05-02 Nvidia Corporation Internet modem streaming socket method
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
US7379475B2 (en) 2002-01-25 2008-05-27 Nvidia Corporation Communications processor
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
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
GB2376100B (en) * 2001-05-31 2005-03-09 Advanced Risc Mach Ltd Data processing using multiple instruction sets
GB2376099B (en) * 2001-05-31 2005-11-16 Advanced Risc Mach Ltd Program instruction interpretation
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
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
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
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
US7624198B1 (en) 2003-12-19 2009-11-24 Nvidia Corporation Sequence tagging system and method for transport offload engine data lists
US7260631B1 (en) 2003-12-19 2007-08-21 Nvidia Corporation System and method for receiving iSCSI protocol data units
KR100643268B1 (ko) * 2004-01-17 2006-11-10 삼성전자주식회사 자바 가상 머신의 성능을 향상시키는 방법 및 상기 방법에의해 동작되는 시스템
JP4086791B2 (ja) * 2004-01-28 2008-05-14 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラプログラム、動的コンパイラプログラム、再現コンパイラプログラム、再現コンパイラ、コンパイル方法、及び記録媒体
US7249306B2 (en) 2004-02-20 2007-07-24 Nvidia Corporation System and method for generating 128-bit cyclic redundancy check values with 32-bit granularity
US7206872B2 (en) 2004-02-20 2007-04-17 Nvidia Corporation System and method for insertion of markers into a data stream
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
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
WO2025230567A1 (en) * 2024-04-29 2025-11-06 Microchip Technology Incorporated Periodically determining a stack error using a direct memory access call
US12461804B2 (en) 2024-04-29 2025-11-04 Microchip Technology Incorporated Periodically determining a stack error using a direct memory access call

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002169696A (ja) * 2000-12-04 2002-06-14 Mitsubishi Electric Corp データ処理装置
US6820252B2 (en) 2000-12-04 2004-11-16 Renesas Technology Corp. Selective conversion to native code using hardware translator, software translator, and software interpreter
JP2002215387A (ja) * 2001-01-22 2002-08-02 Mitsubishi Electric Corp 命令トランスレータを備えたデータ処理装置およびメモリインタフェース装置

Also Published As

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

Similar Documents

Publication Publication Date Title
JP2000507015A (ja) リアルタイムプログラム言語アクセラレータ
US7080362B2 (en) Java virtual machine hardware for RISC and CISC processors
US7873814B1 (en) Microcode based hardware translator to support a multitude of processors
US6021489A (en) Apparatus and method for sharing a branch prediction unit in a microprocessor implementing a two instruction set architecture
US5953741A (en) Stack cache for stack-based processor and method thereof
US5784638A (en) Computer system supporting control transfers between two architectures
US6230259B1 (en) Transparent extended state save
WO2000034844A9 (en) Java virtual machine hardware for risc and cisc processors
US5617553A (en) Computer system which switches bus protocols and controls the writing of a dirty page bit of an address translation buffer
US7853776B2 (en) Handover between software and hardware accelerator
JP2003515203A (ja) Nベースタイプの演算式の最適化
JPH08278918A (ja) エンディアンタスクを実行するシステム及び方法
US6718539B1 (en) Interrupt handling mechanism in translator from one instruction set to another
CN104346132B (zh) 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机
JPH0916471A (ja) プロセッサ
US6691306B1 (en) Use of limited program space of general purpose processor for unlimited sequence of translated instructions
KR100682635B1 (ko) 동일한 논리 공간을 점유하는 다중 레지스터 파일을 포함하는 마이크로프로세서
JP4035004B2 (ja) 情報処理装置
US6990567B1 (en) 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
JP2000357088A (ja) マイクロプロセッサ及びデータ処理システム
US8769508B2 (en) Virtual machine hardware for RISC and CISC processors
GB2261753A (en) Multi-mode microprocessor with electrical pin for selective re-initiailzation of processor state
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
EP0101718B1 (en) Computer with automatic mapping of memory contents into machine registers
JPH04104350A (ja) マイクロプロセッサ

Legal Events

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