JP2000513464A - スタックキャッシングのための方法及び装置 - Google Patents

スタックキャッシングのための方法及び装置

Info

Publication number
JP2000513464A
JP2000513464A JP09527084A JP52708497A JP2000513464A JP 2000513464 A JP2000513464 A JP 2000513464A JP 09527084 A JP09527084 A JP 09527084A JP 52708497 A JP52708497 A JP 52708497A JP 2000513464 A JP2000513464 A JP 2000513464A
Authority
JP
Japan
Prior art keywords
stack
memory
cache
pointer
data
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
JP09527084A
Other languages
English (en)
Other versions
JP3634379B2 (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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2000513464A publication Critical patent/JP2000513464A/ja
Application granted granted Critical
Publication of JP3634379B2 publication Critical patent/JP3634379B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7846On-chip cache and off-chip main memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing 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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/264Microinstruction selection based on results of processing
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/30181Instruction operation extension or modification
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/451Stack data
    • 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

Abstract

(57)【要約】 本発明は、スタック利用(stack-based)コンピューティングシステムとスタック(400)との間のデータ転送を加速させるために、スタックキャッシュ(155)を含むスタック管理ユニット(150)を提供する。1つの実施例では、スタック管理ユニット(150)は、フィル制御ユニット(694)及びスピル制御ユニット(698)を含む。スタック(400)へのメモリアクセスの大部分がスタック(400)の最上位、或いはその近くで生じるため、ドリブル管理ユニット(151)がスタックキャッシュ(155)内のスタック(400)最上位部分を保持する。特に、スタック利用コンピューティングシステムがスタック(400)にデータをプッシュしているときに、スピル条件が生じる場合には、スピル制御ユニット(698)がスタックキャッシュ(155)の最下位からスタック(400)にデータを転送し、スタック(400)の最上位部はスタックキャッシュ(155)内に残される。スタック利用コンピューティングシステムがスタック(400)からデータをポップしているときに、フィル条件が生じた場合には、フィル管理ユニット(694)がスタック(400)からスタックキャッシュ(155)の最下位部にデータを転送し、スタックキャッシュ(155)内のスタック(400)の最上位部を保持する。一般に、フィル条件は、スタックキャッシュ(155)が空になるときに発生し、スピル条件はスタックキャッシュ(155)が満杯になるときに発生する。

Description

【発明の詳細な説明】 スタックキャッシングのための方法及び装置付録Iの参照 付録IのJAVA仮想マシン仕様書とこの仕様書に添付された付録Aとを含む 本明細書の一部分は、著作権で保護された内容を含んでいる。著作権の所持者は 、米国特許庁に提出され記録された特許文書のファクシミリ伝送による複製に異 議を唱えるものではないが、他の場合については、無断転載を禁ず。発明の背景 発明の分野 本発明は一般にコンピュータシステムに関連し、特に、スタックメモリアーキ テクチャのキャッシングに関連する。背景技術 コンピュータ業界及び通信業界の多くの業界人や組織は、インターネットを、 地球上で最も急成長しているマーケットであると、もてはやしている。1990 年代において、インターネットのユーザの数は指数関数的に増加し、いまだとど まるところを知らない。1995年6月時点でのインターネットに接続している ホストの数は推計6,642,000であり、同年1月の推計値4,852,0 00に対して増加が見られた。ホスト数は年間約75%増加している。ホストの 中には、約120,000のネットワークサーバ、及び27,000以上のWe bサーバが存在していた。Webサーバの数は53日毎に約2倍になっていると みなせる。 1995年7月には、アクティブユーザが100万人以上、USENETニュ ースグループが12,505以上、USENETの購読者が1000万人以上に 達し、インターネットは、様々な情報及びマルチメディアサービスの巨大なマー ケットとなるべく運命付けられた。 加うるに、公共のキャリアネットワークあるいはインターネットに対し、多く の会社及び他のビジネスが、企業ネットワーク、あるいは私的なネットワークの 中でいっそう効率的に情報を共有するための方法としてイントラネットにそれら の内部情報システムを移行しつつある。イントラネットのための基本的なインフ ラはサーバーとデスクトップを結ぶ内部のネットワークである、そしてそれはフ ァイアウォールを通してインターネットに接続してもよく、接続しなくてもよい 。これらのイントラネットは業界で確立している標準的な開放ネットワークプロ トコルに従ってデスクトップにサービスを提供する。イントラネットにより、そ れらを採用している企業は、内部の情報管理の単純化や、ブラウザパラダイムを 用いる内部の通信の改善といった多くの利益が得られる。インターネット技術を 会社の企業インフラ及び旧式なシステムと統合することは、イントラネットを使 用するグループに対する既存の技術投資のてこ入れにもなる。上に論じられてい るように、イントラネットとインターネットは、イントラネットがビジネスの中 での内部的で保全性が高いコミュニケーションのために使われ、インターネット がビジネスにおいて外の世界との連絡、つまり外部取引のために使われており、 このような状況の下で密接に関連し合っている。本明細書においては、用語「ネ ットワーク」はインターネットとイントラネットの両方を含む。しかしながら、 インターネットとイントラネットの区別については、それが適用可能である場合 には、記憶に留めおかれたい。 1990年に、サン・マイクロシステムズ(Sun Microsystems)社 のプログラマーが普遍的なプログラミング言語を書いた。この言語は最終的にJa va プログラミング言語と命名された。(Javaは米国カリフォルニア州 Mountain Viewのサン・マイクロシステムズの商標である。)Java プログラミング言語は 初めにC++プログラミング言語でコード化されることを意図したプログラムの努 力から生まれた。それ故、Java プログラミング言語はC++プログラミング言語 と多くの共通性を持っている。しかしながら、Java プログラミング言語は単純 で、オブジェクト指向で、分散型で、インタプリート型であるが高性能で、強靭 であるが安全で、保全性が高く、ダイナミックで、アーキテクチャによらず、移 植性がある、マルチスレッド型の言語である。 Java プログラミング言語は、多くのハードウェア会社やソフトウェア会社が サン・マイクロシステムズから使用許諾を得たときから、特にインターネット用 のプログラミング言語として出現した。Java プログラミング言語及び環境は、 最近のプログラミングの実行における問題を解決するよう設計されている。Java プログラミング言語では、C++ プログラミング言語における、めったに使われ ず理解されにくく紛らわしい多くの機能を取り除いてある。これらの取り除かれ た機能には、主として、オペレーターに負担をかけ過ぎる機能、多重継承、及び 広範囲の自動強制型変換などがある。Java プログラミング言語は自動ガーベジ コレクション機能を有し、この自動ガーベジコレクションは、Cプログラミング 言語のように割り当てられたメモリ及び開放メモリが必要ではないため、プログ ラミングのタスクが単純化される。Java プログラミング言語は、Cプログラミ ング言語で定義されているポインタの用途を限定し、その代わりに、配列の上下 限が明示的にチェックされる真数配列を持っており、これにより、多くのウイル スといやらしいバグに対する脆弱さなくしている。また、Java プログラミング 言語はオブジェク ティブ−Cインタフェースと特定の例外ハンドラを有している。 また、Java プログラミング言語は、TCP/IP プロトコル(Transmission Contr ol Protocol based on Internet protocol)、HTTP(Hypertext Transfer Protoco l)とFTP(File Transfer Protocol)に容易に対処できるようにするためのルーチ ンの広範囲のライブラリを持っている。Java プログラミング言語はネットワー クで結ばれた分散環境における使用を意図されている。Java プログラミング言 語により、ウイルスがなく、破壊工作から守られたシステムの建設が可能となっ た。また、その認証技術は公開鍵暗号化に基づいている。 多くのスタック利用コンピューティングシステムは、JAVA仮想マシンをイ ンプリメントしたものであり、比較的低速のメモリデバイスを用いて、スタック をストアする。一般に、低速のメモリデバイスに対してキャッシュを加えること により、メモリ要求の大部分が結果的にキャッシュヒットする、すなわち要求さ れたメモリアドレスがキャッシュ内にある場合のみ、全メモリパフォーマンスが 向上する。従来のキャッシュ設計は、ランダムアクセスメモリアーキテクチャに 対して設計されており、スタック利用コンピューティングシステムを用いても良 好な動作をしない。従って、スタック利用メモリアーキテクチャを改善すること を狙いとしたキャッシング方法及びキャッシング装置が望まれる。発明の概要 従って、本発明はスタック利用コンピューティングシステムとスタックとの間 のデータ転送を加速するために、スタックキャッシュを含むスタック管理ユニッ トを提供する。1つの実施例では、1つの実施例では、スタック管理ユニットは 、フィル制御ユニット及びスピル制御ユニットを含む。スタックへのメモリアク セスの大部分がスタックの最上位、或 いはその近くで生じるため、ドリブル管理ユニットがスタックキャッシュ内のス タック最上位部分を保持する。特に、スタック利用コンピューティングシステム がスタックにデータをプッシュしているときに、スピル条件が生じる場合には、 スピル制御ユニットがスタックキャッシュの最下位からスタックにデータを転送 し、スタックの最上位部はスタックキャッシュ内に残される。スタック利用コン ピューティングシステムがスタックからデータをポップしているときに、フィル 条件が生じた場合には、フィル管理ユニットがスタックからスタックキャッシュ の最下位部にデータを転送し、スタックキャッシュ内のスタックの最上位部を保 持する。 スタックキャッシュは、スタックキャッシュメモリ回路、1つ或いは2つ以上 の読出しポート、並びに1つ或いは2つ以上の書込みポートを含む。1つの実施 例では、スタックキャッシュメモリ回路は、循環バッファメモリアーキテクチャ において構成されるレジスタファイルである、循環バッファアーキテクチャの場 合、そのレジスタはモジュロアドレッシングを用いてアドレス指定することがで きる。一般に、OPTOPポインタはスタックキャッシュメモリ回路内の最上位 メモリ位置を定義し、指示するために用いられ、最下位ポインタはスタックキャ ッシュメモリ回路内の最下位メモリ位置を定義し、指示するために用いられる。 データワードがスタックに対して、プッシュ或いはポップされるとき、OPTO Pポインタはそれぞれインクリメント及びデクリメントされる。同様に、データ ワードが、スタックキャッシュメモリ回路とスタックとの間で、スピル或いはフ ィルされるとき、最下位ポインタはそれぞれインクリメント及びデクリメントさ れる。 スタック管理ユニットのいくつかの実施例は、フィル制御ユニット及びスピル 制御ユニットを含む。もしフィル制御ユニットがフィル条件を 検出する場合には、フィル制御ユニットはスタックからスタックキャッシュメモ リ回路にデータを転送する。スタック管理ユニットの1つの実施例では、フィル 条件は、optopポインタが高水位マークより大きい場合に発生する。別の実 施例では、フィル条件はスタックキャッシュメモリ回路内の空きメモリ位置の数 が、低キャッシュ閾値より大きくなる、すなわち使用されるメモリ位置の数が低 キャッシュ閾値より小さい場合に発生する。一般に、低水位マーク及び低キャッ シュ閾値はプログラマブルレジスタにストアされる。空きメモリ位置の数は、モ ジュロ減算器を用いて判定することができる。 スタック管理ユニットの1つの実施例では、スピル条件は、optopポイン タが低水位マークより小さい場合に発生する。別の実施例では、スピル条件は、 スタックキャッシュメモリ回路内の空きメモリ位置の数が、高キャッシュ閾値よ り小さくなる、すなわち使用されるメモリ位置の数が高キャッシュ閾値より大き く場合に発生する。一般に、高水位マーク及び高キャッシュ閾値はプログラマブ ルレジスタにストアされる。空きメモリ位置の数は、モジュロ減算器を用いて判 定することができる。 メソッド呼出しを用いるコンピューティングシステムを用いる本発明の実施例 では、メソッドフレームは2つの異なるメモリ回路にストアされる。第1のメモ リ回路は各メソッド呼出しの実行環境をストアし、第2のメモリ回路はメソッド 呼出しのパラメータ、変数並びにオペランドをストアする。1つの実施例では、 実行環境は、復帰プログラムカウンタ、復帰フレーム、復帰コンスタントプール 、現在メソッドベクトル、並びに現在監視アドレスを含む。いくつかの実施例で は、メモリ回路はスタックであり、従ってここで記載されるスタック管理ユニッ トは、メモリ回路をキャッシュするために用いることができる。図面の簡単な説明 第1図は、仮想マシンハードウェアプロセッサの一実施例のブロック図である 。 第2図は、本発明の一実施例において用いられる仮想マシン命令の生成のため のプロセスフロー図である。 第3図は、第1図のハードウェアプロセッサにおいて実現された命令パイプラ インを示した図である。 第4A図は、スタック構造の論理的編成の一実施例を示した図であり、ここで は各メソッドフレームが、第1図のハードウェアプロセッサが使用するローカル 変数ストレージエリア、環境ストレージエリア、及びオペランドスタックを含む 。 第4B図は、スタック構造の論理的編成の別の実施例を示した図であり、ここ では各メソッドフレームが、ローカル変数ストレージエリア及びスタック上のオ ペランドスタックを含み、メソッドフレームのための環境ストレージエリアが、 個別実行環境スタック上に含められている。 第4C図は、第4B図の実行環境スタック及びスタック用のスタック管理ユニ ットの別の実施例を示した図である。 第4D図は、第1のスタック管理ユニットにおけるローカル変数ルックアサイ ドキャッシュの一実施例を示した図である。 第5図は、第1図のハードウェアプロセッサに対するいくつかの可能なアドオ ンを示した図である。 第6図は、本発明によるスタック管理ユニットの1つの実施例のブロック図を 示す。 第7図は、本発明によるスタックキャッシュの1つの実施例のメモリアーキテ クチャを示す。 第8図は、本発明によるスタックキャッシュの1つの実施例のレジス タ、すなわちの中身を示す。 第9図は本発明によるドリブル管理ユニットの1つの実施例のブロック図を示 す。 第10A図は、本発明によるドリブル管理ユニットの別の実施例のブロック図 を示す。 第10B図は、本発明によるドリブル管理ユニットの別の実施例のブロック図 を示す。 第11図は、本発明によるドリブル管理ユニットのある実施例の一部のブロッ ク図を示す。 第12図は、本発明によるスタックキャッシュの1つの実施例のポインタ発生 回路を示す。 本発明のこれらの、並びに他の機構及び利点は発明の詳細な説明において説明 するように、図面から明らかになるであろう。同様の、或いは類似の機構は、図 面及び発明の詳細な説明を通して同じ参照番号が付される。発明の詳細な説明 第1図に示すのは、プロセッサアーキテクチャに依存しない仮想マシン命令を 直接実行する仮想マシンハードウェアプロセッサ100(以下ハードウェアプロ セッサ100)の一実施例である。仮想マシン命令の実行におけるハードウェア プロセッサ100の性能は、インテルのPENTIUMのマイクロプロセッサやサンマ イクロシステムズULTRASPARC プロセッサのようなハイエンドのCPUよりずっ と優れている(ULTRASPARCはサンマイクロシステムズ社の商標であり、PENTIUM はインテル社の商標である)。ソフトウェア JAVA インタプリタや、JAVA ジャ ストインタイムコンパイラ(just-in-time compiler)で同じ仮想マシンをインタプリートすることは、低コストであって、 電力消費量も低い。この結果、ハードウェアプロセッサ100は、移植性がある アプリケーションに非常に適したものとなる。ハードウェアプロセッサ100は 、他の仮想マシンスタックベースのアーキテクチャや、ガーベジコレクション、 スレッド同期などのような機能を用いてる仮想マシンに対しても似たような利点 をもたらす。 これらの特徴の点から言えば、ハードウェアプロセッサ100に基づいたシス テムは、最も良い全体的な性能について言うのでなければ、ソフトウェアインタ プリタやジャストインタイムコンパイラを含む他の仮想マシン実行環境と比較し て魅力的なコストパフォーマンスを提供する。しかし、本発明は、仮想マシンハ ードウェアプロセッサの実施例に限定されず、本発明の範囲には、JAVA 仮想マ シン命令を特定のハードウェアプロセッサにネイティブなマシン命令にコンパイ ル(バッチかあるいはジャストインタイムコンパイルの何れかで)するソフトウ ェアインタプリタとしてJAVA 仮想マシンをエミュレートするインプリメンテー ションを備えたインプリメンテーションや、或いはJAVA 仮想マシンをマイクロ コードとして実現する、或いは直接チップ上に実現する、又はそれらの組み合わ せとして実現するハードウェアを提供する、適当なスタックベースの、又は非ス タックベースの演算マシンインプリメンテーションも含まれている。 コストパフォーマンスについては、ハードウェアプロセッサ100は、250 キロバイト(Kbytes)〜500キロバイトのメモリストレージが不要であるとい う利点を有している。例えば一般にソフトウェアインタプリタによって必要とさ れるROM或いはRAMが不要である。ハードウェアプロセッサ100のシュミレーシ ョンにより、ハードウェアプロセッサ100が、そのプロセッサ100と同じク ロックレートで同じ仮 想マシン命令を実行するPENTIUM プロセッサ上の様々なアプリケーション上を走 るソフトウェアインタプリタと比較して20倍高速で仮想マシンを実行すること が分かった。別のハードウェアプロセッサ100のシュミレーションにより、ハ ードウェアプロセッサ100は、そのプロセッサ100と同じクロックレートで 、同じ仮想マシン命令を実行するPENTIUM プロセッサ上を走るジャストインタイ ムコンパイラと比較して5倍高速で仮想マシンを実行することが分かった。 ソフトウェア仮想マシン命令インタプリタが必要とするメモリ消費が禁じられ ているような環境の下では、ハードウェアプロセッサ100は有利である。これ らのアプリケーションは、例えばネットワーク機器、携帯電話プロセッサ、及び 他の遠距離通信用集積回路、若しくは埋め込み型プロセッサやポータブルデバイ スのような低電力低コストの他のアプリケーションのためのインターネットチッ プを含む。 本発明はスタック管理ユニット150を含み、スタックキャッシュ155を実 行ユニット140に対するデータ転送を加速するために利用している。スタック 管理ユニット150は第1図に示すように、ハードウエアプロセッサ100の完 全な一部であることができるが、本発明によるスタック管理が任意のスタック利 用コンピューティングシステムで用いることができるようにするため、スタック 管理ユニット150の多くの実施例は、ハードウエアプロセッサに組み込まれて いない。1つの実施例では、スタック管理ユニット150は、スタックキャッシ ュ155、ドリブル管理ユニット151、並びにスタック制御ユニット152を 含む。ハードウエアプロセッサ100がスタック400(第4図(a))上にデ ータをプッシュし、スタックキャッシュ155がほとんど満杯になっているとき 、ドリブル管理ユニット151は、データキャッシュユニット160を介してス タックキャッシュ155の最下位部からスタッ ク400にデータを転送し、その結果スタック400の最上位部はスタックキャ ッシュ155内に残される。ハードウエアプロセッサ100がスタック400か らデータをポップし、スタックキャッシュ155がほとんど空になっているとき 、ドリブル管理ユニット151は、スタック400からスタックキャッシュ15 5の最下位部にデータを転送し、スタック400の最上位部はスタックキャッシ ュ155内に保持される。 本明細書において、仮想マシンとは、現実の演算マシンのように命令セットを 有し、様々なメモリエリアを使用する抽象的な演算マシンである。仮想マシンの 使用は、例えばハードウェアプロセッサ100のような仮想マシンインプリメン テーションにより実行されるプロセッサアーキテクチャに依存しない仮想マシン 命令セットを定義する。各仮想マシン命令は実行される特定のオペレーションを 定める。仮想演算マシンは、仮想マシン命令を生成するのに用いられるコンピュ ータ言語や、仮想マシンの下に位置するインプリメンテーションを理解する必要 がない。理解する必要があるのは仮想マシン命令用の特定のファイルフォーマッ トのみである。好適実施例では、仮想マシン命令はJAVA 仮想マシン命令である 。各JAVA 仮想マシン命令は、情報、オペランド、及び他の必要な情報を特定す る命令をコード化する1又は2以上のバイトを含んでいる。 付録IはJAVA 仮想マシン命令セットを説明したものであり、その全体を本明 細書と一体に参照されたい。但し、使用された特定の仮想マシン命令のセットは 、本発明において不可欠な要素ではない。付録I及びこの明細書における仮想マ シン命令を参照することにより、当業者は特定の仮想マシン命令セットやJAVA 仮想マシン仕様の変更に対して、発明を変更して実施することができよう。 コンピュータプラットフォーム上で実行するJAVA コンパイラの JAVAC(第2図参照)は、JAVA プログラム言語で書かれたアプリケーション20 1を、JAVA 仮想マシン仕様に従って、コンパイル済命令セットを含むコンパイ ル済命令シーケンス203をコード化するアーキテクチャに対して中立なオブジ ェクトファイルフォーマットに変換する。しかしながら、本発明において必要な のは、仮想マシン命令のソースコード及び関連情報のみである。仮想マシン命令 のソース及び関連情報を生成するのに用いられる方法及び技術は本明細書におい て不可欠の要素ではない。 コンパイル済命令シーケンス203は、ハードウェアプロセッサ100上で実 行可能であると共に、例えばソフトウェアインタプリタやジャストインタイムコ ンパイラを用いるJAVA 仮想マシンを実現する任意のコンピュータプラットフォ ーム上で実行可能である。しかし、上述のように、ハードウェアプロセッサ10 0はソフトウェアインプリメンテーションより著しく優れた性能上の利点をもた らす。 この実施例において、ハードウェアプロセッサ100(第1図参照)は、JAVA バイトコードを含む仮想マシン命令を処理する。ハードウェアプロセッサ10 0は、後により完全に説明するように、バイトコードの大部分を直接実行する。 しかし、バイトコードのいくつかの実行は、マイクロコードを介して実現される 。 ハードウェアプロセッサ100によって直接実行される仮想マシン命令を選択 するための1つの戦略について、以下実例を通して説明する。JAVA 仮想マシン 命令の30%は純粋なハードウェア翻訳である。即ち、このようにして実現され る命令には、定数ローディング及び単なるスタックオペレーションが含まれる。 仮想マシン命令の次の50%は、完全にではないが大抵ハードウェアで実行され 、若干のファームウェアによる補助を必要とする命令である。このような命令に は、スタックを利用 するオペレーション及び配列命令が含まれる。JAVA 仮想マシン命令の次の10 %は、ハードウェア上で実現されるがファームウェアによる補助はほとんど不要 な命令である。このような命令には関数呼び出し及び関数復帰命令が含まれる。 JAVA 仮想マシン命令の残りの10%は、ハードウェアではサポートされていな いが、ファームウェアトラップかマイクロコードの何れか、或いはその両方によ ってサポートされている命令である。これらの命令には例外ハンドラのような関 数が含まれる。ここで、ファームウェアとは、ハードウェアプロセッサ100の オペレーションを実行時に制御する、ROMに格納されたマイクロコードを意味す る。 一実施例において、ハードウェアプロセッサ100は、I/Oバス及びメモリイ ンタフェースユニット110、命令キャッシュ125を含む命令キャッシュユニ ット120、命令デコードユニット130、一体に統合(unified)された実行 ユニット140、スタックキャッシュ155を含むスタック管理ユニット150 、データキャッシュ165を含むデータキャッシュユニット160、及びプログ ラムカウンタ及びトラップコントロールロジック170を有する。これらの機能 ユニットのそれぞれについては、後に完全に説明する。 同じく、第1図に示すように、それぞれのユニットがいくつかの要素を含む。 図面において明確に示すため、又注意が発明の内容からそれることを避けるため に、第1図にはユニットの中の要素間の相互接続は示していない。しかし、次の 説明を参照することにより、当業者は、ユニット内の各要素間の、及び様々なユ ニット間の相互接続及びその改変について理解されよう。 第1図に示すユニット群を用いて実現されたパイプライン処理段には、フェッ チ段階、デコード段階、実行段階、及びライトバック段階が含ま れる。必要ならば、メモリアクセスや例外解決のための別の段階がハードウェア プロセッサ100内に設けられる。 第3図は、プロセッサ100の実施例における命令の実行のための4段パイプ ラインを図解したものである。フェッチ段階301においては、仮想マシン命令 がフェッチされ命令バッファ124(第1図)に置かれる。仮想マシン命令は、 (i)命令キャッシュ125からの固定サイズキャッシュラインか、(ii)実 行ユニット140内のマイクロコードROM141の何れか一方からフェッチされ る。 命令のフェッチ(取出し)については、命令tableswitch及びlookupswitchは 別にして、(付録I参照)各仮想マシン命令は1バイトから5バイトの間の長さ を有する。従って、処理の単純化のため、与えられた命令の全てを確実にフェッ チできるようにするために少なくとも40ビットは必要である。 別の形態では、常に所定のバイト数、例えばオペコードで始まる4バイトをフ ェッチする。このバイト数は、JAVA 仮想マシン命令の95%に対して十分なバ イト数である(付録I参照)。3バイト以上のオペランドが必要な命令に対して は、4バイトがフェッチされる場合にはフロントエンドでの別の処理サイクルが 許容されなければならない。この場合、命令の実行は、たとえオペランドの全て の組が利用可能でない段階でも、フェッチされた第1オペランドで開始すること ができる。 デコード段階302(第3図)においては、命令バッファ124(第1図)の 前で仮想マシン命令がデコードされ、可能ならば、先行命令及び後続命令を一体 化する命令フォールディング処理が実行される。スタックキャッシュ155への アクセスは、仮想マシン命令が要求した場合のみ行われる。スタック400(第 4図)の先頭を指定するポインタOPTOPを含むレジスタOPTOPも、デコード段階3 02(第3図)に おいて更新される。 ここで説明の便宜上、レジスタにおける値及びレジスタは、同じ符号を付して 示した。更に、次の議論において、ポインタをストアするためのレジスタの使用 は、一実施例についてのみ説明する。本発明の特定の実施例によれば、ポインタ は、ハードウェアレジスタ、ハードウェアカウンタ、ソフトウェアカウンタ、ソ フトウェアポインタ、又は他の当業者に周知の等価な要素を用いて実現され得る 。選択された特定のインプリメンテーションは、本発明において必要不可欠なも のではなく、その選択の仕方は価格と性能のトレードオフに基づいて通常決めら れるものである。 実行段階303において、仮想マシン命令は、1又は2以上の処理サイクルで 実行される。一般に、実行段階303において、定数ユニット142(第1図) におれるALUは、算術演算を行うか、或いはデータキャッシュユニット(DCU)1 60からのロードやそこへのストアのアドレスを計算するために用いられる。必 要ならば、トラップが優先順位付けされて、実行段階303(第3図)の終わり に行われる。制御フロー命令に対しては、実行段階303において分岐アドレス が、分岐が従属している条件と共に計算される。 キャッシュ段階304はパイプライン処理に含まれない非パイプラインの段階 である。データキャッシュ165(第1図)は、実行段階303(第3図)の間 に必要があればアクセスされる。段階304がパイプライン処理に含まれない理 由は、ハードウェアプロセッサ100がスタックベースのマシンだからである。 従って、ロードに続く命令は、大抵ロード命令によって戻された値に依存してい る。この結果、この実施例においては、このパイプラインはデータキャッシュア クセスのための1サイクルの間保持される。これにより、パイプライン段階が少 なくなり、 パイプラインによって占められて他が使用不可能な領域を他のレジスタやバイパ スのために開放することができる。 ライトバック段階305はパイプラインの最終段階である。段階305におい て、計算されたデータがスタックキャッシュ155にライトバックされる。 ハードウェアプロセッサ100は、この実施例においては、JAVA 仮想マシン スタックベースアーキテクチャ(付録I参照)をサポートするスタック400( 第4A図)を直接的に実現する。スタック400上の64個のエントリは、スタ ック管理ユニット150のスタックキャッシュ155に含められる。スタック4 00のエントリのいくつかは、スタックキャッシュ150に複製され得る。デー タ上のオペレーションは、スタックキャッシュ150を介して実行される。 ハードウェアプロセッサ100のスタック400は、主にメソッド用の情報の リポジトリとして使用される。任意の時点において、ハードウェアプロセッサ1 00は1つのメソッドを実行している。それぞれのメソッドは、メモリ空間、即 ちローカル変数、オペランドスタック、及び実行環境構造の組に対して割り当て られたスタック400上のメソッドフレームを有する。 新たなメソッドフレーム、例えばメソッドフレーム410は、実行段階303 (第3図)におけるメソッド呼び出し時にハードウェアプロセッサ100により 割り当てられ、現在フレーム、即ちその時点で処理されているメソッドのフレー ムとなる。現在フレーム410(第4A図)は、他のメソッドフレームと共に、 様々なメソッド呼び出し状況に応じて、以下の6つのエントリの全て又は一部を 含み得る。その6つのエントリとは即ち、 1.オブジェクト参照 2.渡される引数 3.ローカル変数 4.呼び出しを行ったメソッドコンテキスト 5.オペランドスタック 6.メソッドからの戻り値 である。 第4A図において、オブジェクト参照、渡される引数、及びローカル変数は、 引数及びローカル変数エリア421に含められる。呼び出しを行ったメソッドコ ンテキストは、フレーム状態とも称される実行環境422に含められ、それは更 にメソッド呼び出し命令の隣の仮想マシン命令、例えばJAVA オペコードのアド レスである復帰プログラムカウンタ値431、呼び出しメソッドのフレームの位 置である復帰フレーム432、呼び出しメソッドのコンスタントプールテーブル を指定する復帰コンスタントプールポインタ433、現在メソッドのベクトルテ ーブルである現在メソッドベクトル434、及び現在メソッドのモニタのアドレ スである現在モニタアドレス435を含む。 このオブジェクト参照は、メソッド呼び出しのために標的にされたオブジェク トを表すオブジェクトストレージに対する間接ポインタである。JAVA コンパイ ラ JAVAC(第2図参照)は、このポインタを呼び出し命令が発生する前にオペラ ンドスタック423にプッシュする命令を発生する。このオブジェクト参照は、 メソッドの実行の間にローカル変数ゼロとしてアクセス可能である。間接ポイン タは、スタティックメソッド呼び出しに対して定義されたターゲットオブジェク トが存在しないのでスタティックメソッド呼び出しは利用不可能である。 渡される引数のリストは、呼び出しメソッドから呼び出されたメソッドへ情報 を転送する。オブジェクト参照のように、渡される引数は命令 によって生成されたJAVA コンパイラによりスタック400上にプッシュされ、 ローカル変数によってアクセスされ得る。JAVA コンパイラ JAVAC(第2図参照 )は、現在メソッド410(第4A図)に対する引数のリストをスタティックに 生成し、ハードウエアプロセッサ100はリストから引数の数を求める。非スタ ティックメソッド呼び出しに対するオブジェクト参照がフレーム内に存在すると き、第1引数は、ローカル変数1としてアクセス可能である。スタティックメソ ッド呼び出しに対しては、第1引数がローカル変数ゼロになる。 64ビット引数に対しては、一般の64ビットエントリと同様に、上側の32 ビット、即ち64ビットエントリの最上位32ビットが、スタック400の上側 の位置に置かれる。即ちスタックの最下位にプッシュされる。例えば、64ビッ トエントリがスタック400の先頭にある時、64ビットエントリの最上位32 ビット部分は、スタックの先頭にあり、64ビットエントリの下位32ビット部 分は、スタック400の先頭に隣接するストレージ位置に存在する。 現在メソッド410に対してスタック400(第4A図)上のローカル変数エ リアは割り当てられた一次変数ストレージ空間を表し、メソッド410の呼び出 しの間有効である。JAVA コンパイラ JAVAC(第2図)は、必要なローカル変数 の数をスタティックに決定し、ハードウェアプロセッサ100はそれに従って一 次変数ストレージ空間を割り当てる。 メソッドがハードウェアプロセッサ100上で実行されている間、ローカル変 数は、通常スタックキャッシュ155内に存在し、ポインタVARS(第1図及び第 4A図)からのオフセットとして処理される。このポインタVARSは、ローカル変 数0の位置を指定するポインタである。ローカル変数の値をオペランドスタック 423にロードし、オペラ ンドスタックからローカル変数エリア421に値をストアするための命令が供給 される。 実行環境422における情報には、呼び出しを行うメソッドコンテキストが含 まれる。新たなフレームが現在メソッドのために構築されたとき、ハードウェア プロセッサ100は呼び出しを行うメソッドコンテキストを新たに割り当てられ たフレーム410にプッシュし、後にリターンが行われる前に呼び出しを行うメ ソッドコンテキストを再びストアするためにこの情報を利用する。ポインタFRAM E(第1図及び第4A図参照)は、現在メソッドの実行環境を指定するためのポ インタである。ここに示す実施例においては、レジスタセット144(第1図) のそれぞれのレジスタが32ビットの幅を有する。 オペランドスタック423は現在メソッド内の仮想マシン命令の実行をサポー トするために割り当てられる。プログラムカウンタレジスタPC(第1図)は、次 の命令のアドレス、例えば実行されるオペレーションのオペコードを含む。オペ ランドスタック423(第4A図)上の位置を用いて、命令実行のためのソース ストレージ位置及びターゲットストレージ位置の双方を提供する仮想マシン命令 のオペランドを格納する。オペランドスタック423のサイズは、JAVA コンパ イラ JAVAC(第2図)にスタティックに決定され、ハードウェアプロセッサ10 0はそれに従ってオペランドスタック423用の空間を割り当てる。レジスタOP TOP(第1図及び第4A図)は、オペランドスタック423の先頭を指定するポ インタを保持する。 呼び出されたメソッドは、その実行の結果を呼び出しを行ったスタックの先頭 に戻し、従って呼び出しを行った側は、オペランドスタック参照を有するリター ン値にアクセスできることになる。このリターン値は、オブジェクト参照又は引 数がメソッドの呼び出しの前にプッシュされる 領域に置かれる。 JAVA 仮想マシン上でのシミュレーションの結果により、メソッド呼び出しは 、実行時間の多くの部分を(20〜40%)を占めていることが分かった。仮想 マシン命令の実行を促進するためのこの魅力的な目標が与えられたことにより、 メソッド呼び出しのためのハードウェアサポートは、後に完全に説明するように ハードウェアプロセッサ100に含められる。 新たに呼び出されたメソッドのスタックフレームの始まり、即ち呼び出した側 によって渡される引数及びオブジェクト参照は、オブジェクト参照及び入ってく る引数が呼び出し側のスタックの先頭から来ているため、スタック400上に既 にストアされている。上に説明したように、スタック400上のこれらの項目に 後続して、ローカル変数がロードされ、次いで実行環境がロードされる。 このプロセスをスピードアップするための1つの方法は、ハードウェアプロセ ッサ100がバックグラウンドで実行環境をロードし、それまでに何がロードさ れたかを、例えば単純な1ビットのスコアボードにより示すことである。ハード ウェアプロセッサ100は、例えスタック400が完全にロードされていなくて も、呼び出されたメソッドのバイトコードをできる限り速く実行しようとする。 既にロードされた変数にアクセスがなされる場合、スタック400のロードと実 行がオーバーラップし、そうでない場合には、ハードウェアインターロックが生 じ、ハードウェアプロセッサ100が、ロードされるべき実行環境における変数 を待つ状態となる。 第4B図に示すのはメソッド呼び出しを加速する他の方法である。スタック4 00にメソッドフレーム全体をストアする代わりに、各メソッドフレームの実行 環境が、メソッドフレームのオペランドスタック及び ローカル変数エリアは別にストアされる。従って、この実施例では、スタック4 00Bが改変されたメソッドフレーム、例えばローカル変数エリア421及びオ ペランドスタック423のみを有する改変されたメソッドフレーム410Bを含 むことになる。メソッドフレームの実行環境422は、実行環境メモリ440に ストアされる。実行環境メモリ440実行環境をストアすることにより、スタッ クキャッシュ155におけるデータ量が少なくなる。従って、スタックキャッシ ュ155のサイズを小さくすることができる。更に、実行環境メモリ440及び スタックキャッシュ155は同時にアクセスすることになる。従って、メソッド 呼び出しは、スタック400Bへのデータのロード又はストアと同時並行的に実 行環境のロード又はストアを行うことにより加速できることになる。 スタック管理ユニット150の一実施例では、実行環境メモリ440のメモリ アーキテクチャもスタック式である。改変型メソッドフレームがスタックキャッ シュ155を介してスタック400Bにプッシュされる時、対応する実行環境が 実行環境メモリ440にプッシュされる。例えば、第4B図に示すような改変型 メソッドフレーム0〜2は、スタック400Bにあるので、実行環境(EE)0〜 2はそれぞれ実行環境メモリ回路440にストアされる。 メソッド呼び出しを更に強化するために、実行環境キャッシュを追加して、メ ソッド呼び出しの間実行環境をセーブしたり取り出したりする速度を高めること ができる。後により完全に説明するスタックキャッシュ155、ドリブル管理ユ ニット151、及びスタック400のキャッシングのためのスタックコントロー ルユニット152に対するアーキテクチャも、実行環境メモリ440のキャッシ ングに適用することができる。 第4C図に示すのは、スタック400B及び実行環境メモリ440の双方をサ ポートするように改変されたスタック管理ユニット150の実施例である。詳述 すると、第4C図におけるスタック管理ユニット150の実施例は、実行管理ス タックキャッシュ450、実行環境ドリブル管理ユニット(execution environm ent dribble manager unit)460、及び実行管理スタック制御ユニット470 を加えている。一般に、実行ドリブル管理ユニット460は、スピル(spill) オペレーション又はフィル(fill)オペレーションの間に、実行環境キャッシュ 450と実行環境メモリ440との間で実行環境全体を転送する。I/Oバス及びメモリインタフェースユニット I/Oバス及びメモリインタフェースユニット110(第1図)はインタフェー スユニット110とも称し、ハードウェアプロセッサ100と、実施例において は外部メモリを含み、所望に応じてハードウェアプロセッサ100と同じチップ 上のメモリストレージ及びインタフェース或いはその何れかを含み得るメモリ階 層を実現する。この実施例においては、I/Oコントローラ111が外部I/Oデバイ スに対してインタフェースし、メモリコントローラ112が、外部メモリに対し てインタフェースする。ここで、外部メモリとは、ハードウェアプロセッサ10 0の外部にあるメモリを意味する。しかし、外部メモリは、ハードウェアプロセ ッサ100と同じチップ上に含められても良く、或いはハードウェアプロセッサ 100を含みチップの外部に設けられても良く、又はチップの内外双方に設けら れても良い。 別の実施例では、I/Oデバイスに対するリクエストはメモリコントローラ11 2を通り、メモリコントローラ112はハードウェアプロセッサ100を含むシ ステム全体のアドレスマップを保持する。この実施例 のメモリバス上では、ハードウェアプロセッサ100が唯一のマスタ(master) であり、メモリバスの使用を調整する必要はない。 従って、I/Oバス及びメモリインタフェースユニット110をインタフェース する入出力バスの別の実施例は、PCI、PCMCIA、又は他の標準的なバスに対する 直接のサポートを提供する、サポーティングメモリマップスキームを含む。高速 グラフィックス(w/VIS又は他の技術)は、所望に応じてハードウェアプロセッ サ100と同一のチップ上に含められ得る。 I/Oバス及びメモリインタフェースユニット110は、外部メモリに対する読 み出し及び書き込みリクエストを発生する。詳述すると、インタフェースユニッ ト110は、命令キャッシュ及びデータキャッシュコントローラ121及び16 1を外部メモリに対してインタフェースする。インタフェースユニット110は 、命令キャッシュコントローラ121及びデータキャッシュコントローラ161 からの内部リクエストに対する管理ロジックを含み、これによって外部メモリに アクセスし、リクエストに応じてメモリバス上の外部メモリに対する読み出し又 は書き込みリクエストの何れかを開始するデータキャッシュコントローラ121 からのリクエストは、常に命令キャッシュコントローラ161からのリクエスト に対して高いプライオリティを持つものとして取り扱われる。 インタフェースユニット110は、リクエストしている命令キャッシュコント ローラ121又はデータキャッシュコントローラ161に対して、読み出しサイ クルの間に肯定応答信号を供給し、リクエストしているコントローラがそのデー タをキャッチできるようにする。書き込みサイクルにおいては、インタフェース ユニット110からの肯定応答信号は、フローコントロールのために用いられ、 リクエストしている命令キャッシュコントローラ121又はデータキャッシュコ ントローラ161 は、ペンディングが生じている場合新たなリクエストを発生しない。インタフェ ースユニット110は又、メモリバス上で外部メモリに対して発生されたエラー も取り扱う。 命令キャッシュユニット 命令キャッシュユニット(ICU)120(第1図)は、命令キャッシュ125 から仮想マシン命令をフェッチして、その命令を命令デコードユニット130に 供給する。この実施例においては、命令キャッシュヒット時に、命令キャッシュ コントローラ121が、1サイクルにおいて、命令キャッシュ125から命令を 命令バッファ124に転送し、そこでこの命令は定数実行ユニットIEU(後に完 全に説明する)が命令を処理できるようになるまで保持する。これによって、ハ ードウェアプロセッサ100におけるパイプライン300(第3図)のフェッチ 段階301と残りの段階とが分離される。命令−バッファタイプの編成をサポー トする複雑さを避けることが望ましくないならば、1命令レジスタが大抵の目的 に十分である。しかし、後に説明するように、命令のフェッチング、キャッシン グ、及びバッファリングは、命令フォールディング処理をサポートできるだけの 十分な命令バンド幅を提供するべきである。 ハードウェアプロセッサ100のフロントエンドは、ハードウェアプロセッサ 100の残りの部分から完全に独立している。理想的には、1サイクルあたり1 命令が実行パイプラインに供給される。 この命令は、命令デコードユニット130からの信号に応じてバイトアライナ 回路122により任意の8ビット境界の上に位置あわせされる。従って、ハード ウェアプロセッサ100のフロントエンドは、任意のバイト位置からのフェッチ ングを効果的に取り扱うことができる。同様に、ハードウェアプロセッサ100 はキャッシュ125の複数のキャッシュラインに渡る命令の問題を処理する。こ の場合、オペコードが常に最初 のバイトであるため、オペランドに対するフェッチ支援の余分な処理サイクルを 保養できる。従って、バイトコードのフェッチングと実行との間の非常に単純な 非干渉化が可能となる。 命令キャッシュミスの場合には、命令キャッシュコントローラ121が、I/O バスとメモリインタフェースユニット110にミスとなった命令の外部メモリリ クエストを生成する。命令バッファ124が空であるか、ほとんど空である場合 には、命令キャッシュミスが生じたとき、命令デコードユニット130が機能停 止する。即ちパイプライン300が機能停止する。詳述すると、命令キャッシュ コントローラ121はキャッシュミス時に機能停止信号を発生し、これは命令バ ッファエンピティ信号と共にパイプライン300を機能停止するか否かを決定す るために用いられる。命令キャッシュ125は自己修正コードを受け入れるべく 無効にすることができる。例えば、命令キャッシュコントローラ121が命令キ ャッシュ125における特定のラインを無効にすることができる。 従って、命令キャッシュコントローラ121はフェッチされるべき次の命令を 決定する。即ち命令キャッシュ125におけるアクセスされることが必要な命令 を決定し、命令キャッシュ125におけるデータ及びタグRAMに対するアドレス 、データ、及びコントロール信号を発生する。キャッシュヒット時には、4バイ トのデータが1つの処理サイクルの間に命令キャッシュ125からフェッチされ 、命令バッファ124には最大4バイトを書き込むことができる。 バイトアライナ回路122は、命令キャッシュ RAMからのデータを位置合わせ し、位置合わせされたデータを命令バッファ124に入れる。後に詳細に説明す るように、命令バッファ124における初めの2バイトがデコードされて、仮想 マシン命令の長さが決定される。命令バッフ ァ124はキューにおける有効な命令を追跡し、エントリを更新する。これにつ いては後に詳細に説明する。 命令キャッシュコントローラ121も、データ経路及び命令キャッシュミスを 処理するための制御を提供する。命令キャッシュミスの発生時には、命令キャッ シュコントローラ121は、I/Oバス及びメモリインタフェースユニット110 にキャッシュフィルリクエストを発生する。 外部メモリからデータを受け取ったとき、命令キャッシュコントローラ121 はそのデータを命令キャッシュ125に書き込み、そのデータは又命令バッファ 124にバイパスされる。データは、それが外部メモリから利用可能になるとす ぐに、又キャッシュフィルが終了する前に命令バッファ124にバイパスされる 。 命令キャッシュコントローラ121は、命令バッファ124が一杯になるか、 分岐又はトラップが生ずるまで、連続したデータをフェッチし続ける。一実施例 においては、命令バッファ124は命令バッファ124に8バイト以上の有効エ ントリが存在する場合、一杯になっていると見なされる。従って、一般に8バイ トのデータが命令キャッシュユニット120によってインタフェースユニット1 10に送られたキャッシュフィルリクエストに応じて外部メモリから命令キャッ シュ125に書き込まれる。命令キャッシュミスの処理中に分岐又はトラップが 生じた場合は、ミスの処理が終了した直後にトラップ又は分岐が実行される。 命令キャッシュフィルの発生時にエラーが生じたときには、フォールト表示が 生成され、仮想マシン命令と共に命令バッファ124にストアされる。即ちフォ ールトビットがセットされる。このラインが命令キャッシュ125には書き込ま れない。従って、誤りキャッシュフィルトランザクションはフォールトビットが セットされる点を除いてキャッシュ不可能なトランザクションのような役目を果 たす。この命令がデコード された時、割り込みが実行される。 命令キャッシュコントローラ121もキャッシュ不可能な命令読み出しを提供 する。レジスタセット144内のプロセッサステータスレジスタにおける命令キ ャッシュイネーブル(ICE)ビットが、ロードがキャッシュされ得るか否かを定 めるために用いられる。命令キャッシュイネーブルビットがクリアされた場合に は、命令キャッシュユニット124が全てのロードオペレーションをキャッシュ 不可能なロードとして取り扱う。命令キャッシュコントローラ121は、キャッ シュ不可能な命令のためにインタフェースユニット110にキャッシュ不可能な リクエストを発行する。データがキャッシュ不可能な命令のためにキャッシュフ ィルバス上で利用可能である時、このデータは命令バッファ124にバイパスさ れ、命令キャッシュ125には書き込まれない。 この実施例において、命令キャッシュ125は直接マッピングされる、8バイ トラインサイズのキャッシュである。命令キャッシュ125は1サイクルの遅延 を有する。このキャッシュサイズは0K、1K、2K、4K、8K、及び16K バイトサイズに構成されている。ここでKはキロを意味する。デフォルトサイズ は4Kバイトである。各ラインはそのラインが関係するキャッシュタグエントリ を有する。デフォルトの4Kバイトサイズでは、それぞれのキャッシュタグは、 20ビットのアドレスタグフィールド及び1つの有効ビットを有する。 命令バッファ124は、この実施例においては、12バイトの深さのFIFOバッ ファであって、性能上の理由からフェッチ段階301(第3図)をパイプライン 300の残りの段階から分離している。バッファ124(第1図)におけるそれ ぞれの命令は関連する有効ビット及びエラービットを有する。この有効ビットが セットされている時、その有効ビットに関連する命令は、有効な命令である。エ ラービットがセットされ ている時、そのエラービットが関連する命令のフェッチはエラーの処理であった 。命令バッファ124はデータを命令バッファ124とやり取りする信号を発生 し、命令バッファ124における有効エントリ、即ちセットされた有効ビットを 追跡する命令バッファコントロール回路(図示せず)を有する。 類似した実施例において、所定のサイクルにおいて4バイトを命令バッファ1 24に読み込ませることができる。最大2つの仮想マシン命令を表す最大5バイ トは、所定のサイクルで命令バッファ124から読み出すことができる。別の実 施例では、複数のバイトの仮想マシン命令をフォールディング処理したり、或い は2以上の仮想マシン命令のフォールディングをすることにより、より大きい入 出力のバンド幅が提供される。当業者は、例えば位置あわせロジック、環状バッ ファ等を含む様々な適当な命令バッファの設計を理解されよう。分岐又は割り込 みが生じた時、命令バッファ124における全てのエントリはヌル化され、分岐 /割り込みデータは命令バッファ124の先頭に移動する。 第1図の実施例においては、統合型実行ユニット140が示されている。しか し、他の実施例では、命令デコードユニット120、整数ユニット142、及び スタック管理ユニット150は、1つの整数実行ユニットと考えられ、浮動小数 点実行ユニット143は別のオプションのユニットである。更に別の実施例では 、実行ユニットにおける様々な要素が、他のプロセッサの実行ユニットを用いて 実現され得る。一般に、第1図の様々なユニットに存在する様々な要素は、一実 施例のみの典型的な例である。それぞれのユニットは、図示された要素の全て又 はその一部を用いて実現され得る。設計上の決定は、価格と性能のトレードオフ に基づいて行われる。命令デコードユニット 上述したように、仮想マシン命令はパイプライン300のデコード段302( 第3図)においてデコードされる。典型的な実施例では、2バイトが、2つの仮 想マシン命令に対応することができ、命令バッファ124(第1図)からフェッ チされる。2バイトは並列にデコードされ、2バイトが2つの仮想マシン命令、 例えば、1つの等価な演算にフォールディングされることができる、第1のロー ドトップスタック命令及び第2のアドトップ2スタックエントリ命令、に対応す るか否かを判定される。フォールディングは、2つ或いは3つ以上の仮想マシン 命令に対応する1つの等価な演算を供給することである。 典型的なハードウエアプロセッサ100の実施例では、1バイト第1命令が第 2命令にフォールディングされる。しかしながら、別の実施例は、命令デコーダ の複雑化及び命令バンド幅の増加という損失はあるものの、2つより多い仮想マ シン命令、例えば2〜4仮想マシン命令、並びに多数バイト仮想マシン命令のフ ォールディングを提供する。本発明の譲渡人に譲渡され、代理人整理番号SP2 036にて同じ日に出願された、”INSTRUCTION FOLDING FOR A STACK-BASED MA CHINE”というタイトルの米国特許出願第08/xxx,xxx号(発明者Marc Tremblay and James Michael O'Connor)を参照されたい。これを参照して、全 体をここに組み込んでいる。典型的なプロセッサ100の実施例では、第1バイ トが、第1の仮想マシン命令に対応し、多数バイト命令であるなら、第1及び第 2の命令はフォールディングされない。 付加的な現在オブジェクトローダフォルダ132は、上記の、さらにより詳細 には本発明の譲渡人に譲渡され、代理人整理番号SP2036にて同じ日に出願 された、”INSTRUCTION FOLDING FOR A STACK-BASED MACHINE”というタイトル の米国特許出願第08/xxx,x xx号(発明者Marc Tremblay and James Michael O'Connor)に記載されており 、参照して全体をここに組み込んでいるような、命令フォールディングを、シミ ュレーション結果が特に頻繁に、それゆえ最適化のための所望のターゲットにな るように示される仮想マシン命令シーケンスにおいて利用する。特に、メソッド 呼出し(method invocation)は一般的に、スタックオペランド上の対応するオ ブジェクトに対するオブジェクトリファレンスをロードし、そのオブジェクトか らフィールドをフェッチする。命令フォールディングにより、ほとんど共通の仮 想マシン命令シーケンスが、等価的にフォールディングされた演算を用いて実行 されるようになる。 高速型命令(quick variant)は、仮想マシン命令セットの一部ではなく(付 録Iの第3章を参照されたい)、JAVA仮想マシンインプリメンテーリョンの 外側には現れない。しかしながら、仮想マシンインプリメンテーリョンの内側で は、高速型命令は有効に最適化されいることがわかる(本明細書の不可欠な部分 である、付録Iの付録Aを参照されたい)。非高速−高速翻訳(quick translat or)キャッシュ131において、種々の命令を高速型命令に更新するための書込 みをサポートすることにより、通常の仮想マシン命令は高速仮想マシン命令に変 更され、高速型命令によりもたらされる大きな利点を利用することができる。特 に、より詳細に、本発明の譲渡人に譲渡され、代理人整理番号SP2039にて 同じ日に出願された、NON-QUICK INSTRUCTI0N ACCELERATOR AND METHOD OF IMPL EMENTING SAMEというタイトルの米国特許出願第08/xxx,xxx号(発明 者Mark Tremblay and James Michael O'Connor)に記載されており、参照して全 体をここに組み込んでいように、命令の実行を開始するために必要とされる情報 が初めにアセンブルされているとき、その情報は非高速− 高速翻訳キャッシュ131におけるタグとしてプログラムカウンタPCと共にキ ャッシュ内にストアされ、その命令は高速型命令として識別される。1つの実施 例では、これが自己修飾コード(self-modifying code)を用いて行われる。 その命令の後続呼出しにおいて、命令デコードユニット130は、その命令が 高速型命令として識別され、実際、非高速−高速翻訳キャッシュ131の命令の 実行を開始するために必要とされる情報を回収するということを検出する。非高 速−高速翻訳キャッシュはハードウエアプロセッサ100の付加的な機構である 。 分岐に関しては、ほとんどのインプリメンテーリョンに対して高速分岐分解を 有する非常に短いパイプで十分である。しかしながら適切で簡単な分岐予測機構 、例えば分岐予測回路133を別に導入することができる。分岐予測回路133 に対するインプリメンテーリョンは、オペコードに基づく分岐、オフセットに基 づく分岐、或いは2ビットカウンタ機構に基づく分岐を含む。 JAVA仮想マシン仕様は、実行の際にメソッドを呼出す、命令invokenonvir tual、オペコード183を定義する。そのオペコードには、インデクスバイト1 及びインデクスバイト2が後続する(付録I参照)。オペランドスタック423 は、この命令が実行されるとき、1つのオブジェクトに対する1つのリファレン ス及びいくつかの数の引数(argument)を含む。 インデクスバイト1及び2は、現在クラスのコンスタントプール内にインデク スを発生させるために用いられる。そのインデクスにおけるコンスタントプール 内の項目は、完全なメソッドシグネチャ及びクラスを指示する。シグネチャは付 録Iにおいて定義され、その記載は参照してここに組み込んでいる。 メソッドシグネチャ、すなわち各メソッドに対する、短い、固有の識別子は、 指示されるクラスのメソッドテーブルにおいて探索される。その探索(lookup) の結果は、メソッドのタイプとそのメソッドに対する引数の数を示すメソッドブ ロックである。オブジェクトリファレンス及び引数は、このメソッドのスタック からポップされ、新しいメソッドのローカル変数の初期値になる。その後実行が 新しいメソッドの第1の命令を用いて再開される。実行の際に、命令invokevirt ual、オペコード182及びinvokestatic、オペコード184は、まさに記載さ れた処理と同様の処理を呼出す。各場合に、ポインタがメソッドブロックを探索 するために用いられる。 メソッド引数キャッシュ134は、ハードウエアプロセッサ100の付加的な 機構でもあり、第1の実施例において、タグとなるそのメソッドブロックに対す るポインタと共に、そのメソッドに対する第1の呼出し後に用いるためのメソッ ドのメソッドブロックをストアするために用いられる。命令デコードユニット1 30は、インデクスバイト1及び2を用いてポインタを発生させ、その後ポイン タを用いてキャッシュ134におけるそのポインタに対するメソッドブロックを 回収する。これにより、後続するメソッドの呼出しにおいて、背景内でより迅速 に新たに呼出されるメソッドに対するスタックフレームを構築することができる ようになる。別の実施例は、キャッシュ134内のリファレンスとして、プログ ラムカウンタ或いはメソッド識別子を用いることもある。もしキャッシュミスが あるなら、その命令は通常の形態において実施され、キャッシュ134は適宜更 新される。どのキャッシュエントリが上書きされるかを判定するために用いられ る特定の処理は本発明の本質的面ではない。例えば、ごく最近用いられている判 定基準がインプリメントされることができる。 別の実施例では、メソッド引数キャッシュ134が、タグとなるそのプログラ ムカウンタPCの値と共に、そのメソッドに対する第1の呼出し後に用いるため に、そのメソッドブロックに対するポインタをストアするために用いられる。命 令デコードユニット130は、プログラムカウンタPCの値を用いて、キャッシ ュ134にアクセスする。プログラムカウンタPCの値がキャッシュ134内の タグの1つに等しければ、キャッシュ134は、命令デコードユニット130に 対するそのタグを用いてストアされたポインタを供給する。命令デコードユニッ ト139は、供給されたポインタを用いて、そのメソッドに対するメソッドブロ ックを回収する。これらの2つの実施例から見て、他の別の実施例が当業者には 、明らかになるであろう。 ワイドインデクスフォワーダ136は、ハードウエアプロセッサ100の付加 構成要素であり、命令wideに対する命令フォールディングの特定の具体例である 。ワイドインデクスフォワーダ136は、直後に後続する仮想マシン命令に対す るインデクスオペランドの拡張をエンコードするオペコードを取り扱う。このよ うにして、ワイドインデクスフォワーダ136により、命令デコードユニット1 30は、ローカル変数の数が命令wideに対する別々の実行サイクルを招くことな く、1つバイトインデクスを用いてアドレス指定可能な数を越えるとき、ローカ ル変数記憶装置421内に誘導することができる。 命令デコーダ135、特に命令フォールディング、非高速−高速翻訳キャッシ ュ131,現在オブジェクトローダフォルダ132、分岐予測部133、メソッ ド引数キャッシュ134並びにワイドインデクスフォワーダ136の態様は、こ れらの構成要素がソフトウエアインタプリタ或いはジャストインタイムコンパイ ラの演算を促進するために用いることができるため、ソフトウエアインタプリタ 或いはジャストインタイム コンパイラを利用するインプリメンテーリョンにおいても有用である。そのよう なインプリメンテーリョンでは、一般的に、仮想マシン命令はインタプリタ或い はコンパイラを実行するプロセッサ、すなわち例えばSun社製プロセッサ、D EC社製プロセッサ、Intel社製プロセッサ或いはMotorola社製プ ロセッサの任意の1つ対する命令に翻訳され、その構成要素の演算はそのプロセ ッサ上の実行をサポートするように変更される。仮想マシン命令から他のプロセ ッサ命令への翻訳は、ROM内の翻訳部、或いは単にソフトウエア翻訳部のいず れかを用いて行われる。デュアル命令セットプロセッサのさらなる例としては、 本発明の譲渡人に譲渡され、代理人整理番号SP2042にて同じ日に出願され た、"A PROCESSOR FOR EXECUTING INSTRUTION SETSRECEIVED FROM A NETWORK OR FROM A LOCAL MEMORY"というタイトルの米国特許出願第08/xx,xxx号 (発明者Marc Tremblay and James Michael O'Connor)を参照されたい。 これを参照して、全体をここに組み込んでいる。整数実行ユニット 整数実行ユニットIEUは、命令デコードユニット130、整数ユニット14 2並びにスタック管理ユニット150を含む、浮動小数点関連命令を除く、全て の仮想マシン命令の実行を支配する。浮動小数点関連命令は浮動小数点ユニット 142において実行される。 整数実行ユニットIEUは、命令キャッシュユニット120とフロントエンド にて対話し、浮動小数点命令を実行するための浮動小数点ユニット(FPU)1 43を用いて、最終的にはロード/ストア命令関連命令を実行するためのデータ キャッシュユニット(DCU)160を用いて、命令をフェッチする。また整数 実行ユニットIEUは、マイクロコ ードROMを有し、マイクロコードROMは、整数演算に関連する一定の仮想マ シン命令を実行するような命令を含む。 整数実行ユニットIEUは、スタック400のキャッシュ部分、すなわちスタ ックキャッシュ155を含む。スタックキャッシュ155は、現在メソッド(cu rrent method)に関連するオペランドスタックエントリ及びローカル変数エント リ(local variable entry)、すなわちオペランドスタック423エントリ及び ローカル変数記憶421エントリを迅速に記憶する。スタックキャッシュ155 は、現在の命令に関連する全てのオペランドスタックエントリ及びローカル変数 エントリを十分に記憶することができるが、オペランドスタックエントリ及びロ ーカル変数エントリの数によっては、全てのローカル変数エントリより少ない数 、或いはローカル変数エントリとオペランドスタックエントリの両方の数より少 ない数が、スタックキャッシュ155において表されるかもしれない。同様に付 加的なエントリ、すなわち呼出しメソッド(calling method)に対するオペラン ドスタックエントリ及びローカル変数エントリは、もし空間的に許容されるなら 、スタックキャッシュ155において表されるかもしれない。 スタックキャッシュ155は、64エントリ32ビット幅のレジスタ配列であ り、1つの実施例ではレジスタファイルとして物理的にインプリメントされる。 スタックキャッシュ155は3つの読出しポートを有しており、その内の2つは 整数実行ユニットIEU専用であり、残りの1つはドリブル(dribble)管理ユ ニット151用である。またスタックキャッシュ155は、2つの書込みポート を有し、1つは整数実行ユニットIEU専用であり、もう1つはドリブル管理ユ ニット151用である。 整数ユニット142は、種々のポインタを保持しており、ポインタは、 スタックキャッシュ155内にあるローカル変数のような変数値、並びにオペラ ンドスタック値にアクセスするために用いられる。また整数ユニット142はス タックキャッシュヒットが起こるか否かを検出するためのポインタを保持する。 実行時例外は捕捉され、マイクロコードROM149及び回路170における情 報を用いてインプリメントされる例外ハンドラにより処理される。 整数ユニット142は、算術演算をサポートするための32ビットALUを含 む。ALUによりサポートされる演算は、加算、減算、けた送り(シフト)、論 理積、論理和、排他的論理和、比較、超過(greater than)、未満(less than )並びに読飛ばし(バイパス)を含む。またALUは、別々の比較器が分岐命令 の結果を判定する間に、条件付き分岐のアドレスを判定するための用いられる。 パイプラインを介して手際よく実行される大部分の共通命令セット(most com mon set of instructions)は、ALU命令の集合体である。ALU命令はデコ ード段302内のスタック400の先頭からオペランドを読出し、結果を計算す るための実行段303においてALUを用いる。その結果はライトバック段30 5内のスタック400にライトバックされる。2段階のバイパスがあり、連続A LU演算がスタックキャッシュ155にアクセスしている場合に、必要とされる ことがある。 スタックキャッシュポートは本実施例では32ビット幅であるため、倍精度及 び長データ演算は2サイクルかかる。またシフタはALUの一部として存在する 。もしオペランドがデコード段302内の命令に対して利用できない、すなわち 実行段303の初めにおいて最大であるなら、実行段303前にインターロック がパイプライン段をホールドする。 整数実行ユニットIEUの命令キャッシュユニットインターフェースは有効/ 許容インターフェースであり、そこで命令キャッシュユニット 120は、固定フィールドにおける整数デコードユニット130に、有効ビット と共に命令を引き渡す。命令デコーダ135は、アライナ(aligner)回路12 2がシフトするために何バイト必要とするか、或いは命令デコードユニット13 0がデコード段302において何バイト消費するかをシグナリングすることによ り応答する。また命令キャッシュユニットインタフェースは命令キャッシュユニ ット120に対して、分岐誤り予測(branch mis-predict)条件、並びに実行段 303における分岐アドレスをシグナリングする。また、必要なときには、同様 にトラップが命令キャッシュユニット120に対して指示される。命令キャッシ ュユニット120は、命令デコードユニット130に対していかなる有効データ もアサートしないことにより、整数ユニット142をホールドすることができる 。命令デコードユニット130はバイトアライナ回路122に対してシフト信号 をアサートしないことにより命令キャッシュユニット120をホールドすること ができる。 また整数実行ユニットIEUのデータキャッシュインターフェースは、有効− 許容インターフェースであり、そこでは整数ユニット142が、実行段303に おいて、データキャッシュユニット160内のデータキャッシュコントローラ1 61に対して、例えば非キャッシュ、特殊ストア(special store)等の属性と 共に、ロード或いはストア演算をシグナリングする。データキャッシュユニット 160は、ロード演算中のデータを復帰し、データコントロールユニットホール ド信号を用いて整数ユニット142を制御することができる。データキャッシュ ヒット中に、データキャッシュユニット160は要求データを復帰し、それから パイプラインを解放する。 またストア演算中に整数ユニット142は、実行段303内にアドレスと共に データを供給する。データキャッシュユニット165は、もし データキャッシュユニット165がビジー、すなわちラインフィルであるなら、 キャッシュ段304内のパイプラインをホールドすることができる。 浮動小数点演算は、整数実行ユニットIEUにより専用に処理される。命令デ コーダ135は、浮動小数点ユニット143関連命令をフェッチし、かつデコー ドする。命令デコーダ135は、デコード段302における浮動小数点ユニット 142に対して実行するための浮動小数点演算オペランドを送出する。浮動小数 点ユニット143が浮動小数点演算を実行ビジーの間に、整数ユニット142は パイプラインを停止し、浮動小数点ユニット143が、整数ユニット142に対 して、結果が利用可能であるということをシグナリングするまで待機する。 浮動小数点ユニット143からの浮動小数点実行可能信号は浮動小数点演算の 実行段303が終了したということ示す。浮動小数点実行可能信号に応じて、そ の結果が整数ユニット142によりスタックキャッシュ155内にライトバック される。浮動小数点ユニット143及び整数ユニット142がスタックキャッシ ュ155内に見出されるため、浮動小数点ロード及びストア演算は、整数実行ユ ニットIEUにより完全に処理される。スタック管理ユニット スタック管理ユニット150は情報をストアし、実行ユニット140に対する オペランドを提供する。またスタック管理ユニット150はスタックキャッシュ 155のオーバーフロー及びアンダーフロー条件を処理する。 1つの実施例では、スタック管理ユニット150は、上述のように1つの実施 例では3つの読出しポート、2つの書込みポートであるスタッ クキャッシュ155、実行ユニット140に対するオペランドを回収し、ライト バックレジスタ、すなわちデータキャッシュ165から戻されるデータをスタッ クキャッシュ155内にストアするために用いられる2つの読出しポート及び1 つの書込みポートに必要な制御信号を供給するスタック制御ユニット152、並 びにスタックキャッシュ155においてオーバーフロー或いはアンダーフローが 生じるときはいつでも、スタックキャッシュ155に入るデータ及びスタックキ ャッシュ155から出るデータをメモリ内に投機的にドリブルするドリブル管理 部151を含む。第1図の典型的な実施例では、メモリはデータキャッシュ16 5及びメモリインターフェースユニット110によりインターフェースされる任 意のメモリ記憶装置を含む。一般に、メモリは、キャッシュ、アドレス指定可能 読出し/書込みメモリ記憶装置、第2の記憶装置、等を含む任意の適切なメモリ 階層を含む。またドリブル管理部151は、背景でのドリブル目的に対して専用 に用いられるスタックキャッシュ155の1つの読出しポート及び1つの書込み ポートに対する必要な制御信号を供給する。 ある実施例では、スタックキャッシュ155は、そのスタックがある予測メソ ッドに基づいて増減し、オーバーフロー及びアンダーフローを防ぐことを確実に する循環バッファとして管理される。データキャッシュ165への値及びデータ キャッシュ165からの値の退避及び再生は、ある実施例では、高水位マーク( high-water mark)及び低水位マークを用いてドリブル管理部151により制御 される。 スタック管理ユニット150は、実行ユニット140に、所定のサイクルにお ける2つの32−bitオペランドを供給する。スタック管理ユニット150は 、所定のサイクルにおける1つの32−bit結果をストアすることができる。 ドリブル管理部151は、データキャッシュ165からスタックキャッシュ1 55への、並びにスタックキャッシュ155からデータキャッシュ165へのデ ータを投機的にドリブルすることにより、スタックキャッシュ155のスピル( spill)及びフィル(fill)を処理する。ドリブル管理部151は、パイプライ ンストール信号(pipeline stall signal)を発生させ、スタックオーバーフロ ー条件或いはアンダーフロー条件が検出されるとき、パイプラインをストールす る。またドリブル管理部151はデータキャッシュユニット160に送出される 要求のスタックを保持する。データキャッシュユニット160に対する1つの要 求は32−bit連続ロード或いはストア要求である。 スタックキャッシュ155のハードウエア構成は、長オペランド(長い整数及 び倍精度浮動小数点数)の場合を除き、オペコードに対する暗黙のオペランドフ ェッチにより、オペコードの実行に対する待ち時間が加わらないようにする。ス タックキャッシュ155において維持されるオペランドスタック423(第4A 図)及びローカル変数記憶装置422におけるエントリの数は、ハードウエア/ パフォーマンスのトレードオフを表す。少なくとも数個のオペランドスタック4 23及びローカル変数記憶装置エントリが良好なパフォーマンスを得るために必 要とされる。第1図の典型的な実施例では、少なくともオペランドスタック42 3及び最初の4つのローカル変数記憶装置422エントリの上位の3エントリが スタックキャッシュ155内に好適に表される。 スタックキャッシュ155により供給される1つの重要な機能(第1図)は、 レジスタファイルをエミュレートすることであり、上位2つのレジスタへのアク セスが余分なサイクルを用いずに常に可能である。もし適用な知的機能が、背景 においてメモリから値をロードするために、或いはメモリに値をストアするため に与えられ、従って入ってくる仮想 マシン命令のためにスタックキャッシュ155を準備するなら、小さいハードウ エアスタックでも十分である。 上述のように、スタック400上の全アイテムが(サイズに関係なく)、32 −bitワード内に置かれる。これは、もし数多くの小さなデータアイテムが用 いられるなら、空間を無駄にしてしまうが、比較的簡単に、かつ多くのタギング (tagging)或いはマクシング(muxing)から束縛されずにデータアイテムを保 持できる。従ってスタック400内の1つのエントリは、1つの値を表し、多く のバイトを表さない。長整数及び倍精度浮動小数点数は、2つのエントリを必要 とする。読出し及び書込みポート数を少なくしておくために、2つの長整数或い は2つの倍精度浮動小数点数を読出すために2サイクルが必要となる。 スタックキャッシュ155から出てメモリに入るオペランドスタックをドリブ ル管理部151によりフィル及びスピルするための機構は、いくつかの別の形態 のうちの1つを呈することができる。ある時点において1つのレジスタが、フィ ル或いはスピルされるか、或いはいくつかのレジスタのブロックが同時にフィル 或いはスピルされることができる。1つのスコアボードされたメソッドは、スタ ック管理に対して適切である。その最も簡単な形態では、1つのビットが、スタ ックキャッシュ155内のそのレジスタが現在有効であるか否かを示す。さらに スタックキャッシュ155のいくつかの実施例は、そのレジスタのデータ内容が スタック400に退避されるか否か、すなわちそのレジスタが汚れているか否か を示すために1つのビットを用いる。ある実施例では、高水位マーク/低水位マ ークが、いつエントリがそれぞれ、スタック400に退避される、或いはスタッ ク400から再生されるかを自発的に判定する(第4A図)。別法では、先頭ス タックが、固定された、或いはプログラマブルなエントリ数だけスタックキャッ シュ155の底部401に 近づくとき、ハードウエアがスタック400からスタックキャッシュ155内へ のレジスタのロードを開始する。スタック管理ユニット150及びドリブル管理 部ユニット151の詳細な実施例は、以下に、並びに本発明の譲渡人に譲渡され 、代理人整理番号SP2038にて同じ日に出願された、"METHOD FRAME STORAG E USING MULTIPLE MEMORY CIRCUITS"というタイトルの米国特許出願第08/x xx,xxx号(発明者James Michael O'Connor and Marc Tremblay)に記載さ れており、参照して、全体をここに組み込んでいる。 ある実施例では、スタック管理ユニット150は、付加的なローカル変数ルッ クアサイド(look-aside)キャッシュ153を含む。キャッシュ153は応用時 に最も重要であり、あるメソッドに対するローカル変数及びオペランドスタック 423(第4A図)がスタックキャッシュ155上に配置されない。キャッシュ 153がハードウエアプロセッサ100に含まれないような場合には、ローカル 変数がアクセスされるとき、スタックキャッシュ155においてミスがあり、実 行ユニット140はデータキャッシュユニット160にアクセスし、次々に実行 を遅らせる。対照的に、キャッシュ153を有する場合は、ローカル変数はキャ ッシュ153から回収され、実行に遅れは生じない。 ローカル変数ルックアサイドキャッシュ153のある実施例は、スタック40 0のメソッド0〜2の場合に、第4D図に示される。ロール変数0〜Mは、Mが 整数の場合に、メソッド0に対して、キャッシュ153の面421A_0におい てストアされ、面421A_0はメソッド番号402が0のときアクセスされる 。ローカル変数0〜Nは、Nが整数の場合に、メソッド1に対して、キャッシュ 153の面421A_1においてストアされ、面421A_1はメソッド番号4 02が1のときアクセスされる。ローカル変数0〜Pは、Pが整数の場合に、メ ソッド 1に対して、キャッシュ153の面421A_2においてストアされ、面421 A_2はメソッド番号402が2のときアクセスされる。キャッシュ153の種 々に面は異なるサイズである場合もあるが、一般にそのキャッシュの各面は経験 的に画定される固定サイズを有するということに注意されたい。 新しいメソッド、例えばメソッド2が呼出されるとき、キャッシュ153の新 しい面421A_2がそのメソッドのローカル変数と共にロードされ、ある実施 例ではカウンタであるメソッド番号レジスタ402が、変更、すなわちインクリ メントされ、その新しいメソッドに対するローカル変数を含むキャッシュ153 の面を示す。ローカル変数はキャッシュ153の面内にオーダされ、キャッシュ 153は有効に直接マップ化(direct-mapped)キャッシュとなることに注意さ れたい。従って、ローカル変数が現在メソッドに対して必要とされるとき、その 変数はキャッシュ153の最も新しい面、すなわちメソッド番号402により識 別される面から直接アクセスされる。現在メソッドが、例えばメソッド2に戻る とき、メソッド番号レジスタ402は変更、例えばデクリメントされ、キャッシ ュ153の以前の面421A_1を示す。キャッシュ153は必要とされる広さ 及び深さになることができる。データキャッシュユニット データキャッシュユニット160DCU)は、データキャッシュ165内のデ ータに対する全ての要求を管理する。データキャッシュ要求は、ドリブル管理部 151或いは実行ユニット140から起こる。データキャッシュ制御部161は 、実行ユニット要求に先行して与えられるこれらの要求間の調整をする。ある要 求に応じて、データキャッシュ制御部161は、そのデータに対するアドレス、 データ並びに制御信号を 発生し、データキャッシュ165内のRAMにタグ付けする。データキャッシュ ヒットに対して、データキャッシュ制御部161はデータRAM出力をリオーダ し、その正確なデータを与える。 またデータキャッシュ制御部161は、データキャッシュミスの場合、並びに キャッシュ不可能なロード及びストアの場合に、I/Oバス及びメモリインタフ ェースユニット110に対する要求を発生する。データキャッシュ制御部161 はデータパス及び制御ロジックを与え、キャッシュ不可能要求、並びにキャッシ ュミスを処理するためのデータパス及びデータパス制御機能を処理する。 データキャッシュヒットに対して、データキャッシュユニット160は、ロー ドに対する1サイクル内に、データを実行ユニット140に戻す。またデータキ ャッシュユニット160は、書込みヒットに対して1サイクルかかる。キャッシ ュミスの場合に、データキャッシュユニット160は、要求データが外部メモリ から利用可能になるまで、パイプラインをストールする。キャッシュ不可能ロー ド及びストアに対して、データキャッシュ161はバイパスされ、要求はI/O バス及びメモリインタフェースユニット110に送られる。データキャッシュ1 65に対する非配列化(non-aligned)ロード及びストアはソフトウエアにおい てトラップされる。 データキャッシュ165は、双方向セット連想型、ライトバック、ライトアロ ケート(write allocate)、16−byteラインキャッシュである。キャッシ ュサイズは0,1,2,4,8,16Kbyteサイズに構成可能である。デフ ォルトサイズは8Kbyteである。各ラインはそのラインに関連するキャッシ ュタグストアエントリを有する。キャッシュミス時に、16byteのデータが 外部メモリからキャッシュ165内に書き込まれる。 各データキャッシュタグは、20−bitアドレスタグフィールド、1つの有 功ビット、1つのダーティビットを含む。また各キャッシュタグは、置換えポリ シー(replacement policy)のために用いられる最低使用頻度ビット(least re cently used bit)に関連する。多重キャッシュサイズをサポートするために、 タグフィールドの幅は変更することができる。もしプロセッササービスレジスタ 内のキャッシュイネーブルビットがセットされていないなら、ロード及びストア はデータキャッシュ制御部161により、キャッシュ不可能命令のように扱われ る。 1つの16−byteライトバックバッファが、置換えられるために必要とな るダーティキャッシュラインをライトバックするために与えられる。データキャ ッシュユニット160は、読出し時に4byteの最大値を与えることができ、 データの4byteの最大値は1サイクル内にキャッシュ161に書き込まれる ことができる。診断読出し及び書込みは、キャッシュ上で行うことができる。メモリ割当てアクセラレータ 1つの実施例において、データキャッシュユニット165はメモリ割当てアク セラレータ166を含む。一般に、新しいオブジェクトが生成されるとき、その オブジェクトに対するフィールドは外部メモリからフェッチされ、データキャッ シュ165内にストアされ、それからそのフィールドは0クリアされる。これが メモリ割当てアクセラレータ166により削除される処理にかかる時間である。 新しいオブジェクトが生成されるとき、いかなるフィールドも外部メモリから回 収されない。むしろ、メモリ割当てアクセラレータ166は単に、データキャッ シュ165内に0の列をストアし、データキャッシュ165のその列をダーティ としてマークする。メモリ割当てアクセラレータ166はライトバッ クキャッシュについて特に有利である。メモリ割当てアクセラレータ166は、 新しいオブジェクトが生成される度に、外部メモリにアクセスすることを削除す るので、ハードウエアプロセッサ100のパフォーマンスが向上する。浮動小数点ユニット 浮動小数点ユニット(FPU)143は、マイクロコードシーケンサ、入力/ 出力レジスタを有する入出力部分、浮動小数点加算器、すなわちALU、並びに 浮動小数点乗算/除算ユニットを含む。マイクロコードシーケンサは、マイクロ コードフロー及びマイクロコード分岐を制御する。入出力部分は入出力データト ランザクションを制御し、入力データロードレジスタ及び出力データ非ロードレ ジスタを与える。またこれらのレジスタは中間結果記憶領域を与える。 浮動小数点加算器ALUは、浮動小数点加算、浮動小数点減算並びに変換演算 を実行するために用いられる組み合わせロジックを含む。浮動小数点乗算/除算 ユニットは乗算/除算及び剰余を実行するためのハードウエアを含む。 浮動小数点ユニット143は、32−bitデータパスを有するマイクロコー ド用エンジンとして構成される。このデータパスは、その結果の計算中、何回も 再利用される。倍精度演算は、単精度演算としてのサイクル数のおよそ2倍〜4 倍を必要とする。浮動小数点実行可能信号は、所定の浮動小数点演算の完了に先 行する1サイクルにアサートされる。これにより整数ユニット142は、全くイ ンタフェースサイクルを無駄にせず、浮動小数点ユニット出力レジスタを読出す ことができる。従って、出力データは、浮動小数点実行可能信号がアサートされ た後の1サイクルで読出すために利用することができる。実行ユニットアクセラレータ 付録IのJAVA仮想マシン仕様はハードウエアに依存しないので、仮想マシ ン命令は特定の汎用タイプのプロセッサ、例えば複雑命令セットコンピュータ( CISC)プロセッサ、或いは限定命令セットコンピュータ(RISC)プロセ ッサに対して最適化されてない。実際に、ある仮想マシン命令はCISC性を有 し、他のものはRISC性を有する。この二重性は演算及びハードウエアプロセ ッサ100の最適化を複雑にする。 例えば、JAVA仮想マシン仕様は、従来のスイッチステートメントである、 命令lookupswitchに対するオペコード171を定義する。命令キャッシュユニッ ト120に対するデータストリームは、オペコード171を含み、オペコード1 71によりN方向スイッチステートメントを識別し、3byteの埋込みバイト に0を生じさせる。埋込みバイト数は、第1のオペランドバイトが4の倍数であ るアドレスで開始するように選択される。ここで、データストリームは、特定の 要素、ブロック、素子或いはユニットに提供される情報を包括的に示すために用 いられる。 データストリーム内の埋込みバイトに後続するのは、一連の符号付4byte 量の組である。第1組内の第1のオペランドは、スイッチステートメントに対す るデフォルトオフセットであり、整数キー、或いは現在照合(match)値として 参照される、そのスイッチステートメントの引数が、そのスイッチステートメン ト内のいかなる照合値とも等しくないとき用いられる。第1組内の第2のオペラ ンドは、データストリーム内に後続する組数を定義する。 データストリーム内の各後続するオペランドの組は、照合値である第1のオペ ランド及びオフセットである第2のオペランドを有する。もし 整数キーが照合値の1つに等しいなら、その組のオフセットはそのスイッチステ ートメントのアドレスに加えられ、実行が分岐するアドレスを定義する。逆にも しその整数キーがいかなる照合値にも等しくないなら、第1組のデフォルトオフ セットがそのスイッチステートメントに加えられ、実行が分岐するアドレスを定 義する。この仮想マシン命令の直接の実行が多くのサイクルを必要とする。 ハードウエアプロセッサ100のパフォーマンスを向上させるために、ルック アップスイッチアクセラレータ145がプロセッサ100に含まれる。ルックア ップスイッチアクセラレータ145は、1つ或いは2つ以上のルックアップスイ ッチステートメントに関連する情報をストアする連想メモリを含む。各ルックア ップスイッチステートメント、すなわち各命令lookupswitchの場合、この情報は ルックアップスイッチ識別子値、すなわちルックアップスイッチステートメント に関連するプログラムカウンタ値、複数の照合値並びに対応する複数のジャンプ オフセット値を含む。 ルックアップスイッチアクセラレータ145はハードウエアプロセッサ100 により受信される現在命令が連想メモリ内にストアされるルックアップスイッチ ステートメントに対応するか否かを判定する。ルックアップスイッチアクセラレ ータ145はさらに、その現在命令に関連する現在照合値が、その連想メモリ内 にストアされる照合値の1つに一致するか否かを判定する。ルックアップスイッ チアクセラレータ145は、その現在命令がメモリ内にストアされるルックアッ プスイッチステートメントに対応し、かつ現在照合値がメモリ内にストアされる 照合値の1つに一致するとき、連想メモリからのジャンプオフセット値にアクセ スする。そのアクセスされたジャンプオフセット値は現在照合値に一致する。 ルックアップスイッチアクセラレータ145はさらに、その連想メモリが、現 在ルックアップスイッチステートメントに関連する照合値及びジャンプオフセッ ト値をまだ含んでいないとき、現在ルックアップスイッチステートメントに関連 する照合値及びジャンプオフセット値を回収するための回路を含む。ルックアッ プスイッチアクセラレータ145は、本発明の譲渡人に譲渡され、代理人整理番 号SP2040にて同じ日に出願された、"LOOK-UP SWITCH ACCELERATOR AND ME THOD OF OPERATING SAME"というタイトルの米国特許出願第08/xxx,xx x号(発明者Marc Tremblay and James Michael O'Connor)にさらに詳細に記載 されており、参照して、全体をここに組み込んでいる。 あるオブジェクトのメソッドの実行を開始するための処理において、実行ユニ ット140は、メソッドベクトルにアクセスし、メソッドベクトル内のメソッド ポインタの1つ、すなわち無方向(indirection)の1つのレベルを回収する。 その後実行ユニット140は、アクセスされるメソッドポインタを用いて、対応 するメソッド、すなわち無方向の第2のレベルにアクセスする。 実行ユニット140内の無方向のレベルを減少させるために、各オブジェクト は、そのオブジェクトによりアクセスされるべき各メソッドの専用の複製を与え る。その後実行ユニット140は、無方向の1つのレベルを用いてそのメソッド にアクセスする。すなわち、各メソッドはそのオブジェクトから導出されるポイ ンタにより、直接アクセスされる。これはそのメソッドポインタにより予め導入 されていた無方向のレベルを削除する。無方向のレベルを減少させることにより 、実行ユニット140の演算を加速することができる。実行ユニット140によ り経験された無方向のレベルを減少させることによる実行ユニット140の加速 は、本発明の譲渡人に譲渡され、代理人整理番号SP2043にて同じ 日に出願された、"REPLICATING CODE TO ELIMINATE A LEVEL OF INDIRECTION DU RING EXECUTION OF AN OBJECT ORIENTED COMPUTER PROGRAM"というタイトルの米 国特許出願第08/xxx,xxx号(発明者Marc Tremblay and James Michae l O'Connor)にさらに詳細に記載されており、参照して、全体をここに組み込ん でいる。ゲットフィールド−プットフィールドアクセラレータ 他の特定の機能ユニット及び種々の翻訳ルックアサイドバッファ(TLB)タ イプの構造は、ハードウエアプロセッサ100に任意に含まれ、コンスタントプ ールへのアクセスを加速する。例えば、JAVA仮想マシン仕様は、実行時にオ ブジェクト内にフィールドをセットする、命令putfield、オペコード181、並 びに実行時にオブジェクトからフィールドをフェッチする、命令getfield、オペ コード180を定義する。これら両方の命令では、そのオペコードには、インデ クスバイト1及びインデクスバイト2が後続する。オペランドスタック423は 、命令getfieldの場合のオブジェクトに対する参照のみを除いて、命令putfield に対する値により後続されるオブジェクトに対する参照を含む。 インデクスバイト1及び2は、現在クラスのコンスタントプール内にインデク スを発生させるために用いられる。そのインデクスでのコンスタントプールにお ける項目は、クラス名及びフィールド名に対するフィールド参照である。その項 目は、バイト状態でのフィールド幅及びバイト状態でのフィールドオフセットの 両方を有するフィールドブロックポインタに分解される。 実行ユニット140内の任意のゲットフィールドープットフィールドアクセラ レータ146は、タグとしてフィールドブロックポインタに分 解されたコンスタントプール内の項目を識別するために用いられるインデクスと 共に、命令の最初の呼出し後に用いるために、キャッシュ内に命令getfield及び 命令putfieldに対するフィールドブロックポインタをストアする。引き続いて、 実行ユニット140はインデクスバイト1及び2を用いて、インデクスを発生さ せ、ゲットフィールドープットフィールドアクセラレータ146にインデクスを 供給する。もしそのインデクスがタグとしてストアされたインデクスの1つに一 致する、すなわちヒットであるなら、そのタグに関連するフィールドブロックポ インタは回収され、実行ユニット140により用いられる。逆にもし一致が見出 されなければ、実行ユニット140は、上述の演算を実行する。ゲットフィール ドープットフィールドアクセラレータ146は、上述の迅速な命令翻訳の1つの 実施例において用いられた自己修飾コード(self-modifying code)を用いるこ となくインプリメントされる。 1つの実施例では、ゲットフィールド−プットフィールドアクセラレータ14 6はタグとして機能するインデクスを保持する第1の部分、及びフィールドブロ ックポインタを保持する第2の部分を有する連想メモリを含む。あるインデクス が、入力部分を通して、その連想メモリの第1の部分に加えられる、かつストア されたインデクスの1つに一致するとき、入力インデクスに一致したストアされ たインデクスに関連するフィールドブロックポインタは、その連想メモリの第2 の部分から出力される。境界チェックユニット 実行ユニット140内のバウンドチェックユニット147(第1図)は、任意 のハードウエア回路であり、配列(array)の要素への各アクセスをチェックし 、そのアクセスがその配列内の位置に対するものであ るか否かを判定する。そのアクセスがその配列内の位置に対するものであるとき 、境界チェックユニット147は、実行ユニット140に対して、アクティブ配 列境界例外信号を発行する。アクティブ配列境界例外信号に応じて、実行ユニッ ト140は、マイクロコードROM141内にストアされた、その境界外配列ア クセス(out of bounds array access)を処理する例外ハンドラの実行を開始す る。 1つの実施例では、境界チェックユニット147は、配列に対する配列識別子 、例えばプログラムカウンタ値、並びにその配列に対する最大値及び最小値をス トアされた連想メモリ素子を含む。ある配列がアクセスされる、すなわちその配 列に対する配列識別子が連想メモリ素子に適用されるとき、さらにその配列がそ の連想メモリ素子において表されると仮定するとき、ストアされた最小値は、比 較素子とも呼ばれる、第1の比較器素子に対する第1の入力信号であり、ストア された最大値は、比較素子とも呼ばれる、第2の比較器素子に対する第1の入力 信号である。その第1及び第2の比較器素子に対する第2の入力信号は、配列の 素子のアクセスに関連する値である。 もし配列の素子のアクセスに関連する値が、ストアされた最大値以下で、かつ ストアされた最小値以上であるなら、いずれの比較器素子も出力信号を発生しな い。しかしながら、もしこれらの条件のいずれかが正しくないなら、適切な比較 器素子がアクティブ配列境界例外信号を発生する。境界チェックユニット147 の1つの実施例のさらに詳細な内容は、本発明の譲渡人に譲渡され、代理人整理 番号SP2041にて同じ日に出願された、"PROCESSOR WITH ACCELERATED ARRA Y ACCESS BOUNDS CHECKING"というタイトルの米国特許出願第08/xxx,x xx号(発明者Marc Tremblay,James Michael O'Connor,and William N.Joy)に さらに詳細に記載されており、参照して、全体 をここに組み込んでいる。 JAVA仮想マシン仕様は、一定の命令は一定の例外を引き起こすことを定義 している。この例外条件に対するチェックはインプリメントされ、それらを処理 するためのハードウエア/ソフトウエア機構が、マイクロコードROM149、 並びにプログラムカウンタ及びトラップ制御ロジック170内の情報により、ハ ードウエアプロセッサ100に与えられる。代替の機構は、トラップベクトルス タイル或いは単一のトラップターゲットを有し、スタック上のトラップタイプを プッシュし、専用のトラップハンドラルーチンが適切な動作を画定するような機 構を含む。 ハードウエアプロセッサ100には、いかなる外部キャッシュも必要ではない 。いかなる翻訳ルックアサイドバッファのサポートも必要ではない。 第5図は固有のシステムを形成するためのハードウエアプロセッサ100に対 するいくつかの可能なアドオンを示す。そこに示す任意の8つの機能をサポート する回路、すなわちNTSCエンコーダ501、MPEG502、イーサネット 制御部503、VIS504、ISDN505、I/O制御部506、ATMア センブリ/リアセンブリ507、並びに無線リンク508は、本発明のハードウ エアプロセッサ100と同じチップ内に集積化される。 第6図は、スタック管理ユニット150の1つ実施例のブロック図である。ス タック管理ユニット150はスタック400とハードウエアプロセッサ100と の間で高速バッファとして機能する。ハードウエアプロセッサ100は、スタッ ク管理ユニット150がスタック400であるかのように、スタック管理ユニッ ト150にアクセスする。スタック管理ユニット150は、スタック400とハ ードウエアプロセッサ100との間のデータのスループットを改善する必要性に 応じて、スタック 管理ユニット150とスタック400との間でデータを転送する。第1図の実施 例において、もしハードウエアプロセッサ100がスタック管理ユニット150 においてキャッシュされないデータワードを必要とするなら、データキャッシュ ユニット160は、要求されたデータワードを回収し、その要求されたデータワ ードをスタックキャッシュ155の最上位に配置する。 スタック管理ユニット150はスタックキャッシュメモリ回路610を含む。 スタックキャッシュメモリ回路610は、一般にレジスタファイル或いはSRA Mのような高速メモリ素子である。しかしながら、DRAMのような低速のメモ リ素子を用いてもよい。第6図の実施例では、スタックキャッシュメモリ回路6 10へのアクセスは、スタック制御ユニット152により制御される。書込みポ ート630により、ハードウエアプロセッサ100は、スタックキャッシュメモ リ回路610に対して、データライン635上のデータを書き込むことができる 。読出しポート640及び読出しポート650により、ハードウエアプロセッサ 100は、データライン645及び655上にそれぞれ、スタックキャッシュメ モリ回路610からデータを読み出すことができる。2つの読出しポートは、ス タック利用コンピューティングシステムの多くの演算が、スタック400からの 2つのオペランドを必要とするので、、スループットを向上させるために与えら れる。スタックキャッシュ155の他の実施例は、読出し及び書込みポートを増 減させることもできる。 上述のように、ドリブル管理ユニット151はスタック400(第4図(a) )とスタックキャッシュメモリ回路610との間のデータの転送を制御する。第 1図に示す実施例では、スタック400及びスタックキャッシュメモリ回路61 0間のデータの転送は、データキャッシュユニット160を介して実行される。 ドリブル管理ユニット151は、フ ィル制御ユニット694及びスピル制御ユニット698を含む。ドリブル管理ユ ニット151のいくつかの実施例では、フィル制御ユニット694及びスピル制 御ユニット698は独立に機能する。フィル制御ユニット694はフィル条件が 存在するか否かを判定する。もしフィル条件が存在するなら、フィル制御ユニッ ト694は、書込みポート670を介してデータライン675上で、スタック4 00からスタックキャッシュメモリ回路610までデータワードを転送する。ス ピル制御ユニット698はスピル条件が存在するか否かを判定する。もしスピル 条件が存在するなら、スピル制御ユニット698は、データライン685上で読 出しポート680を介して、スタックキャッシュメモリ回路610からスタック 400までデータワードを転送する。書込みポート670及び読出しポート68 0により、スタック400及びスタックキャッシュメモリ回路610間のデータ 転送は、スタック制御ユニット152により制御される読出し及び書込みを同時 に発生することができる。もしスタックキャッシュメモリ回路610の読出し及 び書込みポート間の競合が重要でないなら、ドリブル管理ユニット151は、ス タック制御ユニット152と、読出し及び書込みポートを共有することができる 。 スタック管理ユニット150はハードウエアプロセッサ100に対してスタッ ク400をバッファリングする状況において記載されるが、スタック管理ユニッ ト150は任意のスタック利用コンピューティングシステムに対するキャッシン グを実行することができる。ハードウエアプロセッサ100の詳細は、本発明で 用いるための1つの可能なスタック利用コンピューティングシステムの例として のみ提供される。従って、当業者は任意のスタック利用コンピューティングシス テムに対する本発明に従って、ここに記載された原理を用いて、スタック管理ユ ニットを設計することができる。 第7図はスタックキャッシュ155の1つの実施例に対するスタックキャッシ ュメモリ回路610のメモリアーキテクチャの概念的なモデルを示す。特に、第 7図の実施例では、スタックキャッシュメモリ回路610は、64データワード をホールディングすることができる循環バッファメモリアーキテクチャにおいて 構成されるレジスタファイルである。他の実施例は、異なる数のデータワードを 含む。循環メモリアーキテクチャにより、スタックキャッシュメモリ回路610 の許容量を超えるデータワードは、以前に用いたレジスタに書き込まれることが できる。もしスタックキャッシュメモリ回路610が、SRAMのような異なる メモリ素子を用いるなら、異なるレジスタが異なるメモリ位置に対応するであろ う。循環バッファにおいてレジスタをアドレス指定するための1つの方法は、ス タックキャッシュメモリ回路610の種々のレジスタに対するモジュロスタック キャッシュサイズ(modulo−SCS)アドレスを含むポインタを用いるこ とである。ここで用いるように、modulo−N演算は、標準MOD N関数 を用いて0〜SCS−1の間の数にマッピングされる標準的な演算の結果を有す る。いくつかの共通なモジュロ演算は以下のように定義される。 Modulo−N addition of X and Y=(X+Y)M OD N Modulo−N subtrsction of X and Y=(X− Y)MOD N Modulo−N increment of X by Y=(X+Y)M OD N Modulo−N decrement of X by Y=(X−Y)M OD N スタックキャッシュメモリ回路610のレジスタのポインタアドレスの1つの 実施例は第7図に示され、スタックキャッシュメモリ回路610外側端部に沿っ て番号0−63を付している。従って第7図の実施例に対して、もし70データ ワード(番号1−70)が、スタックキャッシュメモリ回路610が空のとき、 スタックキャッシュメモリ回路610に書き込まれるなら、データワード1−6 4はそれぞれレジスタ0−63に書き込まれ、データワード65−70は引き続 きレジスタ0−5に書き込まれる。データワード65−70を書き込むのに先立 ち、ドリブル管理ユニット151は、以下に示すように、レジスタ0−5内にあ るデータワード1−6をスタック400に転送する。同様に、データワード70 −65がスタックキャッシュメモリ回路610から読み出されるとき、データワ ード1−6はスタック400から回収され、メモリ位置0−5に配置されること ができる。 スタック上で最も読出し及び書込みが実行されるのが、スタックの最上位であ るので、ポインタOPTOPはスタック400の最上位の位置、すなわち最上位 メモリ位置を含む。スタック管理ユニット150のいくつかの実施例では、ポイ ンタOPTOPは実行ユニット140内のプログラマブルカウンタである。しか しながら、スタック管理ユニット150の他の実施例は、スタック制御ユニット 152内にポインタOPTOPを含む。ポインタOPTOPは、1だけ増加、1 だけ減少、すなわち特定の量だけ変化することが多いので、ポインタOPTOP は、1つの実施例では、プログラマブルアップ/ダウンカウンタである。 スタック管理ユニット150は、スタック400の最上位部分を含むので、ポ インタOPTOPはスタックキャッシュメモリ回路610における最も新しく書 き込まれたデータワードを含むスタックキャッシュメ モリ回路610のレジスタを示す、すなわちポインタOPTOPはトップレジス タとも呼ばれる最も新しく書き込まれたデータワードを含むレジスタを示す。ま たスタック管理ユニット150のいくつかの実施例は、ポインタOPTOPによ り示されるレジスタに先行するレジスタを示すポインタOPTOP1(図示せず )を含む。ポインタOPTOP1は、ハードウエアプロセッサ100における多 くの演算がスタック管理ユニット150からの2つのデーらワードを必要とする ため、スタック管理ユニット150のパフォーマンスを改善する。 ポインタOPTOP及びポインタOPTOP1は、新しいデータワードがスタ ックキャッシュ155に書き込まれたときは必ずインクリメントされる。ポイン タOPTOP及びポインタOPTOP1は、スタックされたデータワード、すな わち既にスタック400内にあるデータワードがスタックキャッシュ155から ポップされたときは必ずデクリメントされる。ハードウエアプロセッサ100の いくつかの実施例は、多数のデータワードを同時に加えり、除いたりすることも あるので、ポインタOPTOP及びOPTOP1は、プログラマブルレジスタと して1つの実施例において、多数のインクリメント及びデクリメントサイクルを 必要とするよりは、新しい値がレジスタ内に書き込まれるように、インプリメン トされる。もしスタックキャッシュ155が、順次アドレス指定を用いて構成さ れるなら、ポインタOPTOP1、ポインタOPTOPから1だけmodulo −SCS減算するmodulo SCS減算器を用いてインプリメントされる。 またスタックキャッシュ155のいくつかに実施例は、ポインタOPTOP2及 びポインタOPTOP3を含むこともある。 データワードはスタックキャッシュメモリ回路610内に循環的にストアされ るので、スタックキャッシュメモリ回路610の最下位部は変 動することができる。従ってスタックキャッシュメモリ回路610の最も多くの 実施例は、ポインタCACHE_BOTTOMを含み、スタックキャッシュメモ リ回路610の最下位のメモリ位置を示す。ポインタCACHE_BOTTOM は一般にドリブル管理ユニット151により保持される。ポインタCACHE_ BOTTOMをインクリメント或いはデクリメントする過程は、スタック管理ユ ニット150の特定の実施例に応じて変化する。ポインタCACHE_BOTT OMは一般に、プログラマブルアップ/ダウンカウンタとしてインプリメントさ れる。 またスタック管理ユニット150いくつかの実施例は、ポインタVARSのよ うな、頻繁にアクセスされるデータワードのメモリ位置を示す、他のポインタを 含む。例えば、ハードウエアプロセッサ100がJAVA仮想マシンをインプリ メントしているなら、全メソッドフレームがスタック管理ユニット150内に配 置される。そのメソッドフレームはしばしば頻繁にアクセスされるローカル変数 を含む。従って、アクティブなメソッドの第1のローカル変数を示すポインタV ARSを有することは、ローカル変数を読出すために必要とされるアクセス時間 を短縮する。ポインタVARS1(図示せず)及びポインタVARS2(図示せ ず)のような他のポインタが、JAVA仮想マシンにおけるアクティブな次の2 つのローカル変数のような他の頻繁に用いられるメモリ位置を示すこともできる 。 スタック管理ユニット150のいくつかの実施例では、これらのポインタはス タック制御ユニット152内に保持される。ハードウエアプロセッサ100を用 いるために適用される実施例では、ポインタVARSは実行ユニット140内の プログラマブルレジスタ内にストアされる。もしスタックキャッシュ155が順 次アドレス指定を用いて構成されるなら、ポインタVARSは、ポインタVAR Sに対して1だけmodu lo−SCS加算するmodulo SCS加算器を用いてインプリメントされ ることもできる。 スタックキャッシュメモリ回路610とスタック400との間をどのデータワ ードが転送されるかを画定するために、スタック管理ユニット150が、有効な データワード及びスタックキャッシュメモリ回路610及びスタック400の両 方においてストアされるデータワードを、一般的にタグ付け、すなわち追跡する 。第8図は、スタック管理ユニット150のいくつかの実施例において用いられ る1つのタグ付け構成を示す。特に第8図はスタックキャッシュメモリ回路61 0からのレジスタ810を示す。実際のデータワードはデータセクション812 にストアされる。有効ビット814及び保管ビット816は、レジスタ810の ステータスを追跡するために用いられる。もし有効ビット814が有効論理ステ ータス、すなわち典型的に論理ハイにあるなら、データセクション812は有効 データワードを含まない。もし保管ビット816が保管論理ステータス、すなわ ち典型的に論理ハイにあるなら、データセクション812に含まれるそのデータ ワードは、スタック400にもストアされる。しかしながら、保管ビット816 が非保管論理ステータス、すなわち典型的に論理ローにあるなら、データセクシ ョン812に含まれるデータワードはスタック400にストアされない。一般に 、スタック管理ユニット150がパワーアップ、すなわちリセットされるなら、 各レジスタの有効ビット814は、無効論理ステータスにセットされ、各レジス タの保管ビット816は非保管論理ステータスにセットされる。 第8図のタグ付け方法を用いて第6図に示される実施例に対して、スタック制 御ユニット152が書込みポート630を介してスタックキャッシュメモリ回路 610のレジスタにデータワードを書き込むとき、そのレジスタの有効ビットは 有効論理ステータスにセットされ、そのレジ スタの保管ビットは非保管論理ステータスにセットされる。ドリブル管理ユニッ ト151が書込みポート670を介してスタックキャッシュメモリ回路610の レジスタにデータワードを転送するとき、そのレジスタの有効ビットは有効論理 ステータスにセットされ、そのレジスタの保管ビットは、そのデータワードが現 在スタック400に保管されているので、保管論理ステータスにセットされる。 ハードウエアプロセッサ100が、読出しポート640或いは読出しポート6 50のいずれかを介してスタックキャッシュメモリ回路610のレジスタからス タックポップ操作を用いて、スタックされたデータワードを読み出すとき、その レジスタの有効ビットは無効論理ステータスにセットされ、そのロケーションの 保管ビットは非保管論理ステータスにセットされる。一般にスタックポップ操作 はポインタOPTOP或いはポインタOPTOP1により示されるレジスタを使 用する。 ハードウエアプロセッサ100が、読出しポート640或いは読出しポート6 50のいずれかを介してスタックキャッシュメモリ回路610のレジスタから非 スタックポップ操作を用いて、スタックされたデータワードを読み出すとき、そ のレジスタの有効ビット及び保管ビットは変更されない。例えば、もしハードウ エアプロセッサ100がJAVA仮想マシンをインプリメントしているなら、ポ インタVARSにより示されるレジスタにおけるスタックキャッシュメモリ回路 610内にストアされるローカル変数は繰り返し用いられることがあり、スタッ クキャッシュ155から除かれるべきではない。ドリブル管理ユニット151が 、読出しポート680を介してスタックキャッシュメモリ回路610からスタッ ク400にデータワードを複写するなら、保管データワードがまだそのレジスタ 内に含まれ、そのレジスタの保管ビットが保管論理ステータスにセットされてい るので、そのレジスタの有効ビットは、有効論 理ステータスのままである。 スタックキャッシュ155は一般にハードウエアプロセッサ100のメモリア ドレス空間より非常に小さいので、スタックキャッシュメモリ回路610にアク セスするために用いられるポインタは一般のメモリアドレスより非常に小さい。 スタックキャッシュ155をハードウエアプロセッサ100のメモリ空間内にマ ップ化するために用いられる特定の技術は変更することができる。ハードウエア プロセッサ100の1つの実施例では、スタックキャッシュメモリ回路610に アクセスするために用いられるポインタは、一般のメモリポインタの下位ビット 、すなわち最下位ビットのみである。例えば、もしスタックキャッシュメモリ回 路610が64レジスタからなるなら、ポインタOPTOP、VARS並びにC ACHE_BOTTOMは6ビット長しか必要としない。もしハードウエアプロ セッサ100が12ビットアドレス空間を有するなら、ポインタOPTOP、V ARS並びにCACHE_BOTTOMは、下位6ビットであることができる。 従ってスタックキャッシュメモリ回路610は固有の上位6ビットの組合わせを 有するアドレス空間の特定のセグメントにマップ化される。 スタックキャッシュ管理ユニットのいくつかの実施例は、純然たるスタック利 用コンピューティングシステムを用いて、そのシステムに対するメモリアドレス 空間がないことがある。そのような状況では、スタックキャッシュ155にアク セスするためのポインタはスタックキャッシュ管理ユニット155の内部にのみ ある。 上述のように、ハードウエアプロセッサ100は本来、スタックの最上位付近 のデータにアクセスする。従って、スタック管理ユニット150は、スタックの 最上位しかキャッシングしないハードウエアプロセッサ100のデータアクセス を改善することができる。ハードウエアプロ セッサ100が、スタックキャッシュメモリ回路610がストアできるデータワ ードより多いデータワードをスタック管理ユニットにプッシュするとき、スタッ クキャッシュメモリ回路610の最下位部付近のデータワードはスタック400 に転送される。ハードウエアプロセッサ100がスタックキャッシュ155から データワードをポップするとき、スタック400からデータワードはスタックキ ャッシュメモリ回路610の最下位部下に複写され、ポインタCACHE_BO TTOMがデクリメントされ、スタックキャッシュメモリ回路610の新しい最 下部を指示する。 スタック400とスタックキャッシュメモリ回路610との間のデータワード の転送するタイミング、並びに転送するデータワード数の画定は変更することが できる。一般に、ドリブル管理ユニット151は、ハードウエアプロセッサがス タックキャッシュメモリ回路610を満杯にするとき、スタックキャッシュメモ リ回路610からスタック400にデータを転送する、すなわちスピル操作する べきである。逆に、ドリブル管理ユニット151は、ハードウエアプロセッサが スタックキャッシュメモリ回路610を空にするとき、スタック400からスタ ックキャッシュメモリ回路610にデータを複写する、すなわちフィル操作する べきである。 第9図はドリブル管理ユニット151の1つの実施例を示し、データをスタッ クキャッシュメモリ回路610からスタック400に転送する際の、すなわちデ ータをスピルする際の判断がスタックキャッシュメモリ回路610内の空きレジ スタの数に基づくことを示す。空きレジスタは、有効データを含まないレジスタ 及びスタック400に既にストアされたデータを含むレジスタ、すなわち保管論 理ステータスにセットされた保管ビット816を有するレジスタを含む。データ をスタック400 からスタックキャッシュメモリ回路610に転送する際の、すなわちデータをフ ィルする際の判断は、使用されているレジスタの数に基づく。使用済レジスタは 、スタックキャッシュメモリ回路610内の有効であるが、非保管データワード を含む。 特に第9図の実施例では、ドリブル管理ユニット151はさらに、スタックキ ャッシュステータス回路910及びプログラマブルアップ/ダウンカウンタであ ることができる、キャッシュボトムレジスタ920を含む。スタックキャッシュ ステータス回路910は、キャッシュボトムレジスタ920及びポインタOPT OPからポインタCACHE BOTTOMを受信し、空きレジスタFREEの 数及び使用済レジスタUSEDの数を判定する。 順次modulo−SCSアドレス指定を用いる循環バッファの場合、第7図 のように、空きレジスタFREEの数は以下のように定義される。 FREE=SCS−(OPTOP−CACHE_BOTTOM+1)MOD S CS ただしSCSはスタックキャッシュ155のサイズである。従って、第7図に示 す特定のポインタ値の場合、以下のように計算して、空きレジスタFREEの数 は34である。 FREE=64−((27−62+1)MOD64)=34 同様に、順次moduloアドレス指定を用いる循環バッファの場合使用済レ ジスタUSEDの数は以下のようになる。 USED=(OPTOP−CACHE_BOTTOM+1)MOD SCS 従って、第7図に示す特定のポインタ値の場合、以下のように計算して、使用済 レジスタUSEDの数は30である。 USED=(27−62+1)MOD64 従って、スタックキャッシュステータス回路910は、modulo SCS 加算器/減算器を用いてインプリメントされることができる。使用済レジスタU SEDの数及び空きレジスタFREEの数は、プログラマブルアップ/ダウンカ ウンタを用いて生成することもできる。例えば、使用済レジスタは、データワー ドがスタックキャッシュ155に加えられるとき必ずインクリメントされること ができ、データワードがスタックキャッシュ155から除かれるとき必ずデクリ メントされることができる。特に、もしポインタOPTOPがある数量だけmo dulo−SCSインクリメントされるなら、使用済レジスタは同じ数量だけイ ンクリメントされる。もしポインタOPTOPがある数量だけmodulo−S CSデクリメントされるなら、使用済レジスタは同じ数量だけデクリメントされ る。しかしながら、もしポインタCACHE_BOTTOMがある数量だけmo dulo−SCSインクリメントされるなら、使用済レジスタは同じ数量だけデ クリメントされる。もしポインタCACHE_BOTTOMがある数量だけmo dulo−SCSデクリメントされるなら、使用済レジスタは同じ数量だけイン クリメントされる。空きレジスタFREEの数は、全レジスタ数から使用済レジ スタUSEDの数を引くことにより生成されることができる。 スピル制御ユニット694(第6及び9図)はキャッシュ高閾値レジスタ93 0及び比較器940を含む。比較器940はキャッシュ高閾値レジスタ内の値を 空きレジスタFREEの数と比較する。もし空きレジスタFREEの数がキャッ シュ高閾値レジスタ930の値よりも小さいなら、比較器940は、スピル論理 レベルに対するスピル信号SPILL、すなわち一般に論理ハイを駆動し、スピ ル条件が存在し、1つ或いはそれ以上のデータワードがスタックキャッシュメモ リ回路610からスタック400に転送されるべき、すなわちスピル操作が実行 されるべ きであることを示す。スピル操作は以下に詳細に記述される。一般にスタック高 閾値レジスタ930はハードウエアプロセッサ100によりプログラム可能であ る。 フィル制御ユニット(第6及び9図)は、キャッシュ低閾値レジスタ950及 び比較器960を含む。比較器960は、キャッシュ低閾値レジスタ950の値 を使用済レジスタUSEDの数と比較する。もし使用済レジスタの数が、キャッ シュ低閾値レジスタ950の値より小さいなら、比較器960はフィル論理レベ ルに対するフィル信号FILL、すなわち一般に論理ハイを駆動し、フィル条件 が存在し、1つ或いはそれ以上のデータワードがスタック400からスタックキ ャッシュメモリ回路610に転送されるべき、すなわちフィル操作が実行される べきであることを示す。フィル操作は以下に詳細に記載される。一般に、キャッ シュ低閾値レジスタ950はハードウエアプロセッサ100によりプログラム可 能である。 もしキャッシュ高閾値レジスタ930及びキャッシュ低閾値レジスタ950の 値が、常に同じであるなら、単一のキャッシュ閾値レジスタを用いることができ る。フィル制御ユニット698は空きレジスタFREEの数を用いるために変更 され、もし空きレジスタの数がキャッシュ低閾値レジスタ950の値より大きい なら、キャッシュ低閾値レジスタ950の値を適当に変更して、フィル論理レベ ルに信号フィルを駆動する。代わって、スピル制御ユニット694は使用済レジ スタの数を用いるために変更されることができる。 第10A図は、ドリブル管理ユニット151の別の実施例を示し、ドリブル管 理ユニット151は高水位マーク/低水位マークを用いて、ヒューリスティック にスピル条件及びフィル条件が存在するタイミングを画定する。スピル制御ユニ ット694は、プログラマブルアップ/ダウ ンカウンタとしてインプリメントされる高水位マークレジスタ1010を含む。 スピル制御ユニット694における比較器1020は、高水位マークレジスタ1 010内の値、すなわち高水位マークとポインタOPTOPとを比較する。もし ポインタOPTOPが高水位マークより大きいなら、比較器1020はスピル論 理レベルにスピル信号SPILLを駆動し、スピル操作が実行されるべきである ことを示す。高水位マークはポインタCACHE_BOTTOMに対応するので 、高水位マークは、ポインタCACHE_BOTTOMがmodulo−SCS インクリメント及びmodulo−SCSデクリメントされるときは必ず、それ ぞれmodulo−SCSインクリメント及びmodulo−SCSデクリメン トされる。 フィル制御ユニット698は、プログラマブルアップ/ダウンカウンタとして インプリメントされる低水位マークレジスタ1010を含む。フィル制御ユニッ ト内の比較器1030は、低水位マークレジスタ1030内の値、すなわち低水 位マークとポインタOPTOPとを比較する。もしポインタOPTOPが低水位 マークより小さいなら、比較器1040はフィル論理レベルにフィル信号FIL Lを駆動し、フィル操作が実行されるべきであることを示す。低水位マークはポ インタCACHE_BOTTOMに対応するので、低水位マークは、ポインタC ACHE_BOTTOMがmodulo−SCSインクリメント及びmodul o−SCSデクリメントされるときは必ず、それぞれmodulo−SCSイン クリメント及びmodulo−SCSデクリメントされる。 第10B図は、高水位マーク及び低水位マークを発生するための別の回路を示 す。キャッシュ高閾値レジスタ930は、一般にプログラマブルカウンタとして インプリメントされ、スタックキャッシュメモリ回路610において保持される べき、空きレジスタの数を含む。そのとき高 水位マークは、modulo−SCS減算器1050を用いて、キャッシュボト ムレジスタ920にストアされるポインタCACHE_BOTTOMから、キャ ッシュ高閾値レジスタ930内の値をmodulo−SCS減算するにより計算 される。 低水位マークはmodulo−SCS加算を実行することにより計算される。 特にキャッシュ低閾値レジスタ950は、スタックキャッシュメモリ回路610 に保持されることが望まれる使用されたデータレジスタの最小数を含むようにプ ログラムされる。低水位マークはそのとき、modulo−SCS加算器106 0を用いて、キャッシュボトムレジスタ920にストアされるポインタCACH E_BOTTOMを、キャッシュ低閾値レジスタ950内の値にmodulo− SCS加算することにより計算される。 上述のように、スピル操作は、スタックキャッシュメモリ回路610からキャ ッシュ400への1つ或いはそれ以上のデータワードの転送である。第1図の実 施例では、その転送はデータキャッシュユニット160を介して生じる。スタッ ク管理ユニット150及びデータキャッシュユニット160間の特定のインタフ ェースは、変更することができる。一般に、スタック管理ユニット150、並び により詳細には、ドリブル管理ユニット151は、スタックキャッシュ155の 最下位部に位置するデータワードを送出し、それが読出しポート680からデー タキャッシュユニット160へのポインタCACHE_BOTTOMにより示さ れる。またポインタCACHE_BOTTOMの値は、データキャッシュユニッ ト160に与えられ、データキャッシュユニット160はデータワードを適切に アドレス指定する。ポインタCACHE_BOTTOMにより示されるレジスタ の保管ビットは保管論理レベルにセットされる。さらにポインタCACHE_B OTTOMは1だけmodulo− SCSインクリメントされる。また他のレジスタは、上述のように、1だけmo dulo−SCSインクリメントされることもある。例えば高水位マークレジス タ1010(第10A図)及び低水位マーク1030は、1だけmodulo− SCSインクリメントされるであろう。ドリブル管理ユニット151のいくつか の実施例は、各スピル操作に対して多数ワードを転送する。これらの実施例の場 合、ポインタCACHE_BOTTOMはスタック400に転送されるワード数 毎にmodulo−SCSインクリメントされる。 保管ビット及び有効ビットを用いる実施例では、第8図に示すように、いくつ かの最適化が可能である。特に、もしポインタCACHE_BOTTOMにより 示されるデータレジスタの保管ビットは、保管論理レベルにあるなら、そのデー タレジスタ内のデータワードは既にスタック400にストアされている。従って 、そのデータレジスタ内のデータワードは、スタック400に複写される必要は ない。しかしながら、ポインタCACHE_BOTTOMはさらに1だけmod ulo−SCSインクリメントされる。 フィル操作はスタック400からスタックキャッシュメモリ回路610にデー タワードを転送する。第1図の実施例では、その転送はデータキャッシュユニッ ト160を介して生じる。スタック管理ユニット150びデータキャッシュユニ ット160間の特定のインタフェースは、変更することができる。一般に、スタ ック管理ユニット150、並びにより詳細には、ドリブル管理ユニット151は 、CACHE_BOTTOMにより指示されるデータレジスタに先行するデータ レジスタが空いている、すなわち保管ビットが保管論理状態にあるか、或いは有 効ビットが無効論理状態にあるかのいずれかであるか否かを判定する。もしポイ ンタCACHE_BOTTOMにより指示されるデータレジスタに先 行するデータレジスタが空いているなら、ドリブル管理ユニット151は、ポイ ンタCACHE_BOTTOMから1だけmodulo−SCS減算した値を有 する要求を送出することにより、スタック400からデータワードを要求する。 そのデータワードがデータキャッシュユニット160から受信されるなら、ポイ ンタCACHE_BOTTOMは1だけmodulo−SCSデクリメントされ 、受信したデータワードは書込みポート670を介して、ポインタCACHE_ BOTTOMにより指示されるデータレジスタに書き込まれる。他のレジスタは 、上述のように、modulo−SCSデクリメントされる。ポインタCACH E_BOTTOMにより指示されるレジスタの保管ビット及び有効ビットはそれ ぞれ、保管論理状態及び有効論理状態にセットされる。ドリブル管理ユニット1 51のいくつかの実施例は、各スピル操作に対して多数のワードを転送する。こ れらの実施例では、ポインタCACHE_BOTTOMは、スタック400に転 送されるワード数だけmodulo−SCSデクリメントされる。 保管ビット及び有効ビットを用いる実施例では、第8図に示すように、いくつ かの最適化が可能である。特に、もしポインタCACHE_BOTTOMにより 指示されるデータレジスタに先行するデータレジスタの保管ビット及び有効ビッ トが、それぞれ保管論理レベル及び有効論理レベルにあるとき、そのレジスタ内 のデータワードは決して上書きされない。従って、そのデータレジスタ内のデー タワードは、スタック400から複写される必要はない。しかしながら、ポイン タCACHE_BOTTOMはさらに1だけmodulo−SCSデクリメント される。 上述のように、スタックキャッシュ155の1つの実施例では、ハードウエア プロセッサ100は書込みポート630、読出しポート649並びに読出しポー ト650を介してスタックキャッシュメモリ回路61 0(第6図)にアクセスする。スタック制御ユニット152はハードウエアプロ セッサ100の要求に基づいて、書込みポート630、読出しポート649並び に読出しポート650に対するポインタを発生する。第11図は、スタックキャ ッシュ155から2つのデータワードを読み出し、かつスタックキャッシュ15 5に1つのデータワードを書き込む典型的な操作に対するポインタを発生する回 路を示す。スタック利用コンピューティングシステムに対する最も共通なスタッ ク操作は、スタックから2つのデータワードをポップすること、並びにスタック の先頭に1つのデータワードをプッシュすることである。従って、第11図の回 路は、ポインタOPTOPの値及びポインタOPTOPから1だけmodulo −SCS減算した値に対する読出しポインタ、並びにポインタOPTOPから1 だけmodulo−SCS減算した現在値に対する書込みポインタを与えること ができるように構成される。マルチプレクサ(NUX)は読出しポートに対する 読出しポインタRP1を駆動する。ハードウエアプロセッサ100により制御さ れる選択ラインRS1は、マルチプレクサ1110がポインタOPTOPと同じ 値、すなわちハードウエアプロセッサ100により与えられるような読出しアド レスR_ADDR1を駆動するか否かを判定する。 マルチプレクサ1120は読出しポート650に対する読出しポインタRP2 を与える。モジュロ加算器1140はポインタOPTOPの値に−1をmodu lo−SCS加算し、マルチプレクサ1120に結果の和を駆動する。ハードウ エアプロ七ッサ100により制御される選択ラインRS2は、マルチプレクサ1 120がモジュロ加算器1140からの値、すなわちハードウエアプロセッサ1 00により与えられるような読出しアドレスR_ADDR2を駆動するか否かを 判定する。 マルチプレクサ1130は書込みポート630に対する書込みポイン タWPを与える。モジュロ加算器1150は、ポインタOPTOPの値に1をm odulo−SCS加算し、マルチプレクサ1130に結果の和を駆動する。ハ ードウエアプロセッサ100により制御される選択ラインWSは、マルチプレク サ1130がmodulo−SCS加算器1140からの値、すなわちハードウ エアプロセッサ100により与えられるような書込みアドレスW_ADDRを駆 動するか否かを判定する。 第12図は、ポインタVARSを用いてスタックキャッシュメモリ回路にアク セスすることができるようにする実施例における、読出しポート640或いは6 50に対する読出しポインタを発生する回路である。マルチプレクサ1260は 、選択信号RSにより画定されるような、入力ポート1261−1267上で受 信されるいくつかの入力値の1つに読出しポインタRを駆動する。選択信号RS は、ハードウエアプロセッサ100により制御される。ポインタOPTOPの値 は、入力ポート1261に駆動される。modulo−SCS加算器1210は 、ポインタOPTOPの値と入力ポート1261に対する−1とのmodulo −SCS和を駆動する。modulo−SCS加算器1210は、ポインタOP TOPの値と入力ポート1263に対する−2とのmodulo−SCS和を駆 動する。ポインタVARSの値は、入力ポート1264に駆動される。modu lo−SCS加算器1230は、ポインタVARSの値と入力ート1265に対 する1とのmodulo−SCS和を駆動する。modulo−SCS加算器1 240は、ポインタVARSの値と入力ポート1266に対する2とのmodu lo−SCS和を駆動する。modulo−SCS加算器1250は、ポインタ VARSの値と入力ポート1263に対する3とのmodulo−SCS和を駆 動する。他の実施例はマルチプレクサ1260の入力ポートに他の値を与えるこ ともある。 従って、本発明の原理によるスタックキャッシュを用いることにより、ドリブ ル管理ユニットは、スタックキャッシュ及びスタック間の転送を効果的に制御す ることができる。特にドリブル管理ユニットは、必要に応じて追加データに対す るメモリ空間を生成するためにスタックキャッシュからデータを転送し、メモリ 空間がスタック管理ユニットを用いてスタック利用コンピューティングシステム にトランスペアレントに利用可能になるようにスタックキャッシュ内にデータを 転送することができる。 上述の本発明の構造及び方法の種々の実施例は本発明の原理を例示するための ものであり、記載された特定の実施例に本発明の範囲を限定しようとするもので はない。この開示の観点により、当業者は他のメモリ回路、レジスタ、カウンタ 、スタック利用コンピューティングシステム、ドリブル管理ユニット、フィル制 御ユニット、スピル制御ユニット、読出しポート、書込みポートを定義すること ができ、本発明の原理に従って、スタックキャッシングの方法或いはシステムを 構築するためにこれらの別の機構を用いることができる。
【手続補正書】特許法第184条の8第1項 【提出日】平成10年1月13日(1998.1.13) 【補正内容】請求の範囲 1. コンピューティングシステムにおけるメソッド呼出しのメソッドフレーム をストアするための方法であって、 第1のメモリスタック内に前記メソッドフレームの実行環境をストアする過程 と、 第2のメモリスタック内に前記メソッドフレームの任意の引数と、前記メソッ ドフレームの任意のローカル変数とをストアする過程と、 前記第2のメモリスタック内に前記メソッドフレームの1つ或いはそれ以上の オペランドをストアする過程と、 ハードウエアプロセッサに接続される第1の読出しポート、前記第2のメモリ スタックに接続される第2の読出しポート、前記ハードウエアプロセッサに接続 される第1の書込みポート、並びに前記第2のメモリスタックに接続される第2 の書込みポートを有する循環バッファスタックキャッシュメモリ内に前記第2の メモリスタックの一部をキャッシュする過程とを有することを特徴とする方法。 2. 前記実行環境が復帰プログラムカウンタからなることを特徴とする請求項 1に記載の方法。 3. 前記実行環境が復帰フレームからなることを特徴とする請求項1に記載の 方法。 4. 前記実行環境が復帰コンスタントプールからなることを特徴とする請求項 1に記載の方法。 5. 前記実行環境が現在メソッドベクトルからなることを特徴とする請求項1 に記載の方法。 6. 前記実行環境が現在モニタアドレスからなることを特徴とする請求項1に 記載の方法。 7. 前記任意のメソッドフレームの前記任意の引数と、前記任意のメ ソッドフレームの前記任意のローカル変数が、前記第2のメモリスタック内の前 記メソッドフレームのローカル変数エリアを形成し、前記ローカル変数エリアが 前記循環バッファスタックキャッシュメモリ内にキャッシュされることを特徴と する請求項1に記載の方法。 8. 前記1つ或いはそれ以上のオペランドが前記第2のメモリスタック内の前 記メソッドフレームのオペランドスタックを形成し、前記ローカル変数エリアが 前記循環バッファスタックキャッシュメモリ内にキャッシュされることを特徴と する請求項7に記載の方法。 9. 前記メソッド呼出しの完了時に前記第1のメモリスタックから前記実行環 境を削除する過程をさらに有することを特徴とする請求項1に記載の方法。 11. 前記第1のメモリスタックが別のスタックキャッシュによりキャッシュ され、前記別のスタックキャッシュが、 複数のメモリ位置と、 前記別のスタックキャッシュの先頭メモリ位置を指示するOPTOPポインタ と、 前記別のスタックキャッシュの最下位メモリ位置を指示するボトムポインタと を有することを特徴とする請求項9に記載の方法。 12. 前記OPTOPポインタにより指示される前記メモリ位置において、前 記別のスタックキャッシュ上の新しい実行環境を書込む過程と、 前記OPTOPポインタをインクリメントする過程と、 スピル条件が存在する場合に、前記別のスタックキャッシュから前記第1のメ モリスタックに第1の実行環境をスピルする過程と、 フィル条件が存在する場合に、前記第1のメモリスタックから前記別のスタッ クキャッシュに第2の実行環境をフィルする過程とをさらに有することを特徴と する請求項11に記載の方法。 13. 前記別のスタックキャッシュから前記第1のメモリスタックに第1の実 行環境をスピルする前記過程が 前記最下位メモリ位置から前記第1のメモリスタックに前記第1の実行環境を 転送する過程と、 前記ボトムポインタをインクリメントする過程とを有することを特徴とする請 求項12に記載の方法。 14. 前記前記別のスタックキャッシュから第1のメモリスタックに第2の実 行環境をフィルする前記過程が、 前記ボトムポインタをデクリメントする過程と、 前記第1のメモリスタックから前記最下位メモリ位置に第2の実行環境を転送 する過程とを有することを特徴とする請求項12に記載の方法。 15. 前記前記別のスタックキャッシュから第1のメモリスタックに第2の実 行環境をフィルする前記過程が、 前記第1のメモリスタックから前記最下位メモリ位置に先行するメモリ位置に 第2の実行環境を転送する過程と、 前記ボトムポインタをデクリメントする過程とを有することを特徴とする請求 項12に記載の方法。 16. 前記OPTOPポインタにより指示される前記メモリ位置において、前 記別のスタックキャッシュから第1のスタックされた実行環境を読み出す過程と 、 前記OPTOPポインタをデクリメントする過程とをさらに有することを特徴 とする請求項12に記載の方法。 17. 前記スピル条件が存在するか否かを判定する過程をさらに有することを 特徴とする請求項12に記載の方法。 18. 前記スピル条件が存在するか否かを判定する前記過程が、 空きメモリ位置の数を計算する過程と、 前記空きメモリ位置の数をキャッシュ高閾値と比較する過程とを有することを 特徴とする請求項17に記載の方法。 19. 前記スピル条件が存在するか否かを判定する前記過程が、 前記OPTOPポインタを高水位マークと比較する過程を有することを特徴と する請求項17に記載の方法。 20. 前記フィル条件が存在するか否かを判定する過程をさらに有することを 特徴とする請求項12に記載の方法。 21. 前記フィル条件が存在するか否かを判定する過程が、 使用済メモリ位置の数を計算する過程と、 前記使用済メモリ位置の数をキャッシュ低閾値と比較する過程とを有すること を特徴とする請求項20に記載の方法。 22. 前記フィル条件が存在するか否かを判定する過程が、 前記OPTOPポインタを低水位マークと比較する過程を有することを特徴と する請求項20に記載の方法。 23. 前記循環バッファスタックキャッシュメモリが、 複数のメモリ位置と、 前記循環バッファスタックキャッシュメモリの先頭メモリ位置を指示するOP TOPポインタと、 前記循環バッファスタックキャッシュメモリの最下位メモリ位置を指示するボ トムポインタとを有することを特徴とする請求項1に記載の方法。 24. 前記第1の書込みポートを介して前記OPTOPポインタにより指示さ れる前記メモリ位置において、前記第2のメモリスタックに対する新しいデータ ワードを書込む過程と、 前記OPTOPポインタをインクリメントする過程と、 スピル条件が存在する場合に、前記第2の読出しポートを介して、前 記循環バッファスタックキャッシュメモリから前記第2のメモリスタックに第1 のデータワードをスピルする過程と、 フィル条件が存在する場合に、前記第2の書込みポートを介して、前記第2の メモリスタックから前記循環バッファスタックキャッシュメモリに第2のデータ ワードをフィルする過程とを有することを特徴とする請求項23に記載の方法。 25. 前記第2の読出しポートを介して前記循環バッファスタックキャッシュ メモリから前記第2のメモリスタックに第1のデータワードをスピルする前記過 程が、 前記最下位メモリ位置から前記第2のメモリスタックに前記第1のデータワー ドを転送する過程と、 前記ボトムポインタをインクリメントする過程とを有することを特徴とする請 求項24に記載の方法。 26. 前記第2の書込みポートを介して前記循環バッファスタックキャッシュ メモリから前記第2のメモリスタックに第2のデータワードをフィルする前記過 程が、 前記ボトムポインタをデクリメントする過程と、 前記第2のメモリスタックから前記最下位メモリ位置に第2のデータワードを 転送する過程とを有することを特徴とする請求項24に記載の方法。 27. 前記第2の書込みポートを介して前記循環バッファスタックキャッシュ メモリから前記第2のメモリスタックに第2のデータワードをフィルする前記過 程が、 前記第2のメモリスタックから前記最下位メモリ位置に先行するメモリ位置に 第2のデータワードを転送する過程と、 前記ボトムポインタをデクリメントする過程とを有することを特徴と する請求項24に記載の方法。 28. 前記第1の読出しポートを介して前記先頭メモリ位置において、前記循 環バッファスタックキャッシュメモリからスタックされたデータワードを読み出 す過程と、 前記OPTOPポインタをデクリメントする過程とをさらに有することを特徴 とする請求項24に記載の方法。 29. 前記第1の読出しポートを介して前記先頭メモリ位置において、前記循 環バッファスタックキャッシュメモリから第1のスタックされたデータワードを 読み出す過程と、 前記OPTOPポインタを2だけデクリメントする過程とをさらに有すること を特徴とする請求項24に記載の方法。 30. 複数のメソッド呼出しを実行することができるプロセッサを含むコンピ ューティングシステムのメモリアーキテクチャであって、前記メモリアーキテク チャが、 各前記メソッド呼出しに対する実行環境をストアするように構成された第1の メモリスタック回路と、 前記メソッド呼出しの任意の引数及び前記メソッド呼出しにより生成される任 意のローカル変数をストアするように構成される第2のメモリスタックと、 循環メモリバッファ回路であって、 前記第2のメモリスタックの一部をストアするように構成される複数のメモ リ位置と、 前記循環メモリバッファ内の先頭メモリ位置を指示するOPTOPポインタ と、 前記循環メモリバッファ内の最下位メモリ位置を指示するボトムポインタと 、 前記循環メモリバッファに接続され、かつ前記プロセッサに接続可能な第1 の読出しポートと、 前記循環メモリバッファに接続され、かつ前記プロセッサに接続可能な第1 の書込みポートと、 前記循環メモリバッファ及び前記第2のメモリスタックに接続される第2の 読出しポートと、 前記循環メモリバッファ及び前記第2のメモリスタックに接続される第2の 書込みポートととを有する、該循環メモリバッファとを有することを特徴とする メモリアーキテクチャ。 33. 前記第1のメモリスタック回路が、 複数のメモリ位置を有する別の循環メモリバッファと、 前記別の循環メモリバッファ内の先頭メモリ位置を指示するフレームポインタ と、 前記別の循環メモリバッファ内の最下位メモリ位置を指示する第2のボトムポ インタと、 前記別の循環メモリバッファに接続される前記第1のスタックメモリ回路の第 1の読出しポートと、 前記別の循環メモリバッファに接続される前記第1のスタックメモリ回路の第 1の書込みポートとをゆすることを特徴とする請求項30に記載のメモリアーキ テクチャ。 34. 前記第1のスタックメモリ回路の前記第1の読出しポートが、前記別の 循環メモリバッファ内の前記先頭メモリ位置からデータを読み出すように構成さ れ、 前記別の循環メモリバッファの前記先頭メモリ位置上にデータを書込むように 構成されることを特徴とする請求項33に記載のメモリアーキテクチャ。 35. 前記第1のスタックメモリ回路の前記第1の書込みポートが前記別の循 環メモリバッファの前記先頭メモリ位置上にデータを書込む場合に、前記フレー ムポインタがインクリメントされることを特徴とする請求項33に記載のメモリ アーキテクチャ。 36. 前記第1のスタックメモリ回路の前記第1の読出しポートが前記別の循 環メモリバッファの前記先頭メモリ位置からデータをポップする場合に、前記フ レームポインタがデクリメントされることを特徴とする請求項33に記載のメモ リアーキテクチャ。 37. 前記第1のスタックメモリ回路の前記第1の読出しポートがまた、前記 別の循環メモリバッファの最下位メモリ位置からデータを読み出すように構成さ れ、 前記第1のスタックメモリ回路の前記第1の書込みポートがまた、前記別の循 環メモリバッファの前記最下位メモリ位置下にデータを書込むように構成される ことを特徴とする請求項34に記載のメモリアーキテクチャ。 38. 前記第1のスタックメモリ回路の前記第1の書込みポートが前記別の循 環バッファの前記最下位メモリ位置下にデータを書込む場合に、前記別の循環バ ッファの前記ボトムポインタがデクリメントされることを特徴とする請求項37 に記載のメモリアーキテクチャ。 39. 前記第1のスタックメモリ回路の前記第1の読出しポートが前記別の循 環バッファの前記最下位メモリ位置からデータを読み出す場合に、前記別の循環 バッファの前記ボトムポインタがインクリメントされることを特徴とする請求項 37に記載のメモリアーキテクチャ。 40. 前記第1のスタックメモリ回路がさらに、 前記別の循環バッファに接続される第2の読出しポートと、 前記別の循環バッファに接続される第2の書込みポートとを有するこ とを特徴とする請求項34に記載のメモリアーキテクチャ。 41. 前記第1のスタックメモリ回路の前記第2の読出しポートが、前記別の 循環メモリバッファの前記最下位メモリ位置からデータを読み出すように構成さ れ、 前記第1のスタックメモリ回路の前記第2の書込みポートが、前記別の循環メ モリバッファの前記最下位メモリ位置下にデータを書込むように構成されること を特徴とする請求項40に記載のメモリアーキテクチャ。 42. 前記第1のスタックメモリ回路の前記第2の書込みポートが前記別の循 環バッファの前記最下位メモリ位置下にデータを書込む場合に、前記別の循環バ ッファの前記ボトムポインタがデクリメントされることを特徴とする請求項41 に記載のメモリアーキテクチャ。 43. 前記第1のスタックメモリ回路の前記第2の読出しポートが前記別の循 環バッファの前記最下位メモリ位置からデータを読み出す場合に、前記別の循環 バッファの前記ボトムポインタがインクリメントされることを特徴とする請求項 41に記載のメモリアーキテクチャ。 44. 前記第1のメモリスタック回路がさらに、 スタックと、 前記スタックをキャッシュするためのスタックキャッシュ管理ユニットとを有 することを特徴とする請求項30に記載のメモリアーキテクチャ。 45. 前記スタックキャッシュ管理ユニットが、 前記第1のメモリスタックに接続されるスタックキャッシュメモリ回路を有す るスタックキャッシュであって、前記スタックキャッシュメモリ回路が複数のメ モリ位置を有する、該スタックキャッシュと、 前記スタックキャッシュメモリ回路内の最下位メモリ位置を指示し、 かつ定義するキャッシュボトムポインタと、 前記スタックキャッシュから前記スタックに、前記最下位メモリ位置にストア される第1の実行環境を転送するために接続されるスピル制御ユニットと、 前記スタックから前記最下位メモリ位置、或いは前記最下位メモリ位置に隣接 するメモリ位置に第2の実行環境を転送するために接続されるフィル制御ユニッ トとを有することを特徴とする請求項44に記載のメモリアーキテクチャ。 46. 前記スタックキャッシュがさらに、 前記第1のスタックメモリ回路と前記スタックとの間に接続される第1の読出 しポートであって、前記スピル制御ユニットが前記第1の読出しポートを制御す る、該第1の読出しポートと、 前記第1のスタックメモリ回路と前記スタックとの間に接続される第1の書込 みポートであって、前記フィル制御ユニットが前記第1の書込みポートを制御す る、該第1の書込みポートとを有することを特徴とする請求項45に記載のメモ リアーキテクチャ。 47. 前記スタックキャッシュメモリ回路の先頭メモリ位置を指示し、かつ定 義するフレームポインタをさらに有することを特徴とする請求項46に記載のメ モリアーキテクチャ。 48. 前記第1の読出しポートが前記先頭メモリ位置からデータを読み出すよ うに構成され、 前記第1の書込みポートが前記先頭メモリ位置上にデータを書込むように構成 されることを特徴とする請求項30に記載のメモリアーキテクチャ。 49. 前記第1の書込みポートが前記先頭メモリ位置上にデータを書込む場合 に、前記OPTOPポインタがインクリメントされることを特 徴とする請求項30に記載のメモリアーキテクチャ。 50. 前記第1の読出しポートが前記先頭メモリ位置からデータをポップする 場合に、前記OPTOPポインタがデクリメントされることを特徴とする請求項 30に記載のメモリアーキテクチャ。 51. 前記循環バッファメモリから前記第2のメモリスタックに、前記最下位 メモリ位置にストアされる第1のデータワードを転送するために接続されるスピ ル制御ユニットであって、前記スピル制御ユニットが前記第2の読出しポートを 制御する、該スピル制御ユニットと、 前記第2のメモリスタックから前記最下位メモリ位置或いは前記最下位メモリ 位置に隣接するメモリ位置に第2のデータワードを転送するために接続されるフ ィル制御ユニットであって、前記フィル制御ユニットが前記第2の書込みポート を制御する、該フィル制御ユニットとをさらに有することを特徴とする請求項3 0に記載のメモリアーキテクチャ。 53. 前記循環バッファメモリ回路がさらに、 前記循環バッファメモリ回路に接続され、前記プロセッサに接続可能な第3の 読出しポートをさらに有することを特徴とする請求項51に記載のメモリアーキ テクチャ。 54. 前記第1の読出しポート、前記第3の読出しポート並びに前記第1の書 込みポートを制御するように構成されるスタック制御ユニットをさらに有するこ とを特徴とする請求項53に記載のメモリアーキテクチャ。 55. 新しいデータワードが前記循環バッファメモリ回路にプッシュされると き、前記OPTOPポインタがインクリメントされ、ポップされたデータワード が前記循環バッファメモリ回路からポップされるとき、前記OPTOPポインタ がデクリメントされることを特徴とする請求項51に記載のメモリアーキテクチ ャ。 56. 前記新しいデータワードが前記第1の書込みポートを介してプッシュさ れ、前記ポップされたデータワードは前記第1の読出しポートを介してポップさ れることを特徴とする請求項55に記載のメモリアーキテクチャ。 57. 前記スピル制御ユニットが前記第1のデータワードを前記循環バッファ メモリに転送するとき、前記ボトムポインタがインクリメントされることを特徴 とする請求項51に記載のメモリアーキテクチャ。 58. 前記フィル制御ユニットが前記第2のデータを前記スタックに転送する とき、前記ボトムポインタがデクリメントされることを特徴とする請求項51に 記載のメモリアーキテクチャ。 59. 前記OPTOPポインタ及び前記ボトムポインタを受信するために接続 されるスタックキャッシュステータス回路であって、前記スタックキャッシュス テータス回路は、前記循環バッファメモリ回路内の空きメモリ位置の数を計算す るように構成される、該スタックキャッシュステータス回路をさらに有すること を特徴とする請求項51に記載のメモリアーキテクチャ。 60. 前記スピル制御ユニットは、前記空きメモリ位置の数がキャッシュ高閾 値より小さい場合にのみ、前記第1のデータワードを転送することを特徴とする 請求項59に記載のメモリアーキテクチャ。 61. 前記スピル制御ユニットが 前記キャッシュ高閾値を含むプログラマブルレジスタと、 前記スタックキャッシュステータス回路及び前記プログラマブルレジスタに接 続される比較器とを有することを特徴とする請求項60に記載のメモリアーキテ クチャ。 62. 前記フィル制御ユニットは、前記空きメモリ位置の数がキャッシュ低閾 値より大きい場合にのみ、前記第2のデータワードを転送する ことを特徴とする請求項59に記載のメモリアーキテクチャ。 63. 前記フィル制御ユニットが 前記キャッシュ低閾値を含むプログラマブルレジスタと、 前記スタックキャッシュステータス回路及び前記プログラマブルレジスタに接 続される比較器とを有することを特徴とする請求項62に記載のメモリアーキテ クチャ。 64. 前記OPTOPポインタ及び前記ボトムポインタに接続されるスタック キャッシュステータス回路であって、前記スタックキャッシュステータス回路は 前記循環バッファメモリ回路内の使用済メモリ位置の数を計算するように構成さ れる、該スタックキャッシュステータス回路をさらに有することを特徴とする請 求項51に記載のメモリアーキテクチャ。 65. 前記使用済メモリ位置の数がキャッシュ低閾値より小さい場合にのみ、 前記フィル制御ユニットが前記第2のデータワードを転送することを特徴とする 請求項64に記載のメモリアーキテクチャ。 66. 前記フィル制御ユニットが 前記キャッシュ低閾値を含むように構成されるプログラマブルレジスタと、 前記スタックキャッシュステータス回路及び前記プログラマブルレジスタに接 続される比較器とを有することを特徴とする請求項65に記載のメモリアーキテ クチャ。 67. 前記OPTOPポインタが高水位マークより大きい場合にのみ、前記ス ピル制御ユニットが前記第1のデータワードを転送することを特徴とする請求項 51に記載のメモリアーキテクチャ。 68. 前記スピル制御ユニットが 前記高水位マークを含むプログラマブルレジスタと、 前記スタックキャッシュステータス回路及び前記プログラマブルレジスタに接 続される比較器とを有することを特徴とする請求項67に記載のメモリアーキテ クチャ。 69. 前記OPTOPポインタが低水位マークより小さい場合にのみ、前記フ ィル制御ユニットが前記第2のデータワードを転送することを特徴とする請求項 51に記載のメモリアーキテクチャ。 70. 前記フィル制御ユニットが 前記低水位マークを含むように構成されるプログラマブルレジスタと、 前記スタックキャッシュステータス回路及び前記プログラマブルレジスタに接 続される比較器とを有することを特徴とする請求項69に記載のメモリアーキテ クチャ。 71. 前記循環メモリバッファ回路内の前記複数のメモリ位置のそれぞれが、 有効ビットと、 保管ビットと、 データセクションとを有することを特徴とする請求項51に記載のメモリアー キテクチャ。 72. 前記第1のデータワードが前記循環バッファメモリ回路に転送される場 合に、前記スピル制御ユニットが前記最下位メモリ位置の前記保管ビットを保管 論理状態にセットすることを特徴とする請求項71に記載のメモリアーキテクチ ャ。 73. 前記第2のデータワードが前記循環バッファメモリ回路に転送される場 合に、前記フィル制御ユニットが前記最下位メモリ位置に先行する前記メモリ位 置の前記有効ビットをセットすることを特徴とする請求項72に記載のメモリア ーキテクチャ。 74. 前記循環バッファメモリ回路がレジスタファイルであることを 特徴とする請求項51に記載のメモリアーキテクチャ。 75. 前記循環バッファメモリ回路内の前記複数のメモリ位置のそれぞれが、 レジスタであることを特徴とする請求項74に記載のメモリアーキテクチャ。 77. 前記第1のデータワード及び前記第2のデータワードが同一であること を特徴とする請求項51に記載のメモリアーキテクチャ。 【図2】【図4】
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 08/647,103 (32)優先日 平成8年5月7日(1996.5.7) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),CN,JP,KR 【要約の続き】 は、フィル管理ユニット(694)がスタック(40 0)からスタックキャッシュ(155)の最下位部にデ ータを転送し、スタックキャッシュ(155)内のスタ ック(400)の最上位部を保持する。一般に、フィル 条件は、スタックキャッシュ(155)が空になるとき に発生し、スピル条件はスタックキャッシュ(155) が満杯になるときに発生する。

Claims (1)

  1. 【特許請求の範囲】 1. コンピューティングシステムにおけるメソッド呼出しのメソッドフレーム をストアするための方法であって、 第1のメモリ回路内に前記メソッドフレームの実行環境をストアする過程と、 第2のメモリ回路内に、前記メソッドフレームの1つ或いはそれ以上のパラメ ータ、1つ或いはそれ以上の変数、並びに1つ或いはそれ以上のオペランドをス トアする過程とを有することを特徴とする方法。 2. 前記実行環境が復帰プログラムカウンタからなることを特徴とする請求項 1に記載の方法。 3. 前記実行環境が復帰フレームからなることを特徴とする請求項1に記載の 方法。 4. 前記実行環境が復帰コンスタントプールからなることを特徴とする請求項 1に記載の方法。 5. 前記実行環境が現在メソッドベクトルからなることを特徴とする請求項1 に記載の方法。 6. 前記実行環境が現在監視アドレスからなることを特徴とする請求項1に記 載の方法。 7. 前記1つ或いはそれ以上のパラメータ及び前記1つ或いはそれ以上の変数 が前記メソッドフレームのローカル変数エリアを構成することを特徴とする請求 項1に記載の方法。 8. 前記1つ或いはそれ以上のオペランドが前記メソッドフレームのオペラン ドスタックを構成することを特徴とする請求項7に記載の方法、 9. 前記メソッド呼出しの完了時に前記第1のメモリ回路から前記実行環境を 除く過程をさらに有することを特徴とする請求項1に記載の方 法。 10. 前記第1のメモリ回路がスタックであることを特徴とする請求項1に記 載の方法。 11. 前記第2のメモリ回路がスタックであることを特徴とする請求項1に記 載の方法。 12. 前記スタックがスタックキャッシュによりキャッシュされており、また 前記スタックキャッシュが、 複数のメモリ位置を有するスタックキャッシュと、 前記スタックキャッシュの先頭メモリ位置に指示されるフレームポインタと、 前記スタックキャッシュの最下部メモリ位置に指示される最下位ポインタとを 有することを特徴とする請求項10に記載の方法。 13. 前記フレームメモリ位置に前記スタックにおける新しい実行環境を書込 む過程と、 前記フレームポインタをインクリメントする過程と、 もしスピル条件が存在するなら、前記スタックキャッシュから前記スタックに 第1の実行環境をスピルする過程と、 もしフィル条件が存在するなら、前記スタックキャッシュから前記スタックに 第2の実行環境をフィルする過程とを有することをさらなる特徴とする請求項1 2に記載の方法。 14. 前記スタックキャッシュから前記スタックに第1の実行環境をスピリン グする前記過程が、 前記最下位メモリ位置から前記スタックに前記第1の実行環境を転送する過程 と、 前記最下位ポインタをインクリメントする過程とを有することを特徴とする請 求項13に記載の方法。 15. 前記スタックキャッシュから前記スタックに第2の実行環境をフィリン グする前記過程が、 前記最下位ポインタをデクリメントする過程と、 前記スタックから前記最下位メモリ位置に第2の実行環境を転送する過程とを 有することを特徴とする請求項13に記載の方法。 16. 前記スタックキャッシュから前記スタックに第2の実行環境をフィリン グする前記過程が、 前記スタックから前記最下位メモリ位置に先行するメモリ位置に第2の実行環 境を転送する過程と、 前記最下位ポインタをデクリメントする過程とを有することを特徴とする請求 項13に記載の方法。 17. 前記先頭メモリ位置において前記スタックキャッシュから第1のスタッ クされた実行環境を読み出す過程と、 前記フレームポインタをデクリメントする過程とをさらに有することを特徴と する請求項13に記載の方法。 18. 前記スピル条件が存在するか否かを判定する過程をさらに有することを 特徴とする請求項13に記載の方法。 19. 前記スピル条件が存在するか否かを判定する前記過程が、 空きメモリ位置の数を計算する過程と、 前記空きメモリ位置の数と高キャッシュ閾値とを比較する過程とを有すること を特徴とする請求項18に記載の方法。 20. 前記スピル条件が存在するか否かを判定する過程が、 前記OPTOPポインタと高水位マークとを比較する過程を有することを特徴 とする請求項18に記載の方法。 21. 前記フィル条件が存在するか否かを判定する過程をさらに有することを 特徴とする請求項13に記載の方法。 22. 前記フィル条件が存在するか否かを判定する過程が、 使用済メモリ位置の数を計算する過程と、 前記使用済メモリ位置の数と低キャッシュ閾値とを比較する過程とを有するこ とを特徴とする請求項21に記載の方法。 23. 前記フィル条件が存在するか否かを判定する過程が、 前記OPTOPポインタと低水位マークとを比較する過程とを有することを特 徴とする請求項21に記載の方法。 24. 前記スタックがスタックキャッシュにキャッシュされ、前記スタックキ ャッシュが、 複数のメモリ位置を有するスタックキャッシュと、 前記スタックキャッシュの先頭メモリ位置において指示されるOPTOPポイ ンタと、 前記スタックキャッシュの最下位メモリ位置において指示される最下位ポイン タとを有することを特徴とする請求項11に記載の方法。 25. 前記OPTOPメモリ位置において、前記スタックに対する新しいデー タワードを書込む過程と、 前記OPTOPポインタをインクリメントする過程と、 スピル条件が存在する場合に、前記スタックキャッシュから前記スタックに第 1のデータワードをスピルする過程と、 フィル条件が存在する場合に、前記スタックから前記スタックキャッシュに第 2のデータワードをフィルする過程とをさらに有することを特徴とする請求項2 4に記載の方法。 26. 前記スタックキャッシュから前記スタックに第1のデータワードをスピ ルする前記過程が、 前記最下位メモリ位置から前記スタックに前記第1のデータワードを転送する 過程と、 前記最下位ポインタをインクリメントする過程とを有することを特徴とする請 求項25に記載の方法。 27. 前記スタックキャッシュから前記スタックに第2のデータワードをフィ ルする前記過程が、 前記最下位ポインタをデクリメントする過程と、 前記スタックから前記最下位メモリ位置に第2のデータワードを転送する過程 とを有することを特徴とする請求項25に記載の方法。 28. 前記スタックキャッシュから前記スタックに第2のデータワードをフィ ルする前記過程が、 前記スタックから前記最下位メモリ位置に先行するメモリ位置に第2のデータ ワードを転送する過程と、 前記最下位ポインタをデクリメントする過程とを有することを特徴とする請求 項25に記載の方法。 29. 前記先頭メモリ位置において前記スタックからスタックされたデータワ ードを読み出す過程と、 前記OPTOPポインタをデクリメントする過程とをさらに有することを特徴 とする請求項25に記載の方法。 30. 前記先頭メモリ位置において前記スタックキャッシュから第1のスタッ クされたデータワードを読み出す過程と、 前記先頭メモリに先行するメモリ位置において、前記スタックキャッシュから スタックされたデータワードを読み出す過程と、 前記OPTOPポインタを2だけデクリメントする過程とをさらに有すること を特徴とする請求項25に記載の方法。 31. 複数のメソッド呼出しを実行することができるコンピューティングシス テムのメモリアーキテクチャであって、前記メモリアーキテクチャが、 各前記メソッド呼出しに対する実行環境をストアするために構成される第1の メモリ回路と、 各前記メソッド呼出しのパラメータ、変数並びにオペランドをストアするため に構成される第2のメモリ回路とを有することを特徴とするメモリアーキテクチ ャ。 32. 前記第1のメモリ回路がスタックであることを特徴とする請求項31に 記載のメモリアーキテクチャ。 33. 前記第2のメモリ回路がスタックであることを特徴とする請求項31に 記載のメモリアーキテクチャ。 34. 前記第1のメモリ回路が、 複数のメモリ位置を有する循環メモリバッファと、 前記循環メモリバッファにおいて先頭メモリ位置を指示するフレームポインタ と、 前記循環メモリバッファにおいて最下位メモリ位置を指示する最下位ポインタ と、 前記循環メモリバッファに接続される第1の読出しポートと、 前記循環メモリバッファに接続される第1の書込みポートとを有することを特 徴とする請求項31に記載のメモリアーキテクチャ。 35. 前記第1の読出しポートが前記先頭メモリ位置からデータを読み出すた めに構成され、 前記第1の書込みポートが前記先頭メモリ位置にデータを書込むために構成さ れることを特徴とする請求項34に記載のメモリアーキテクチャ。 36. 前記第1の書込みポートが前記先頭メモリ位置にデータを書込む場合、 前記フレームポインタがインクリメントされることを特徴とする請求項34に記 載のメモリアーキテクチャ。 37. 前記第1の読出しポートが前記先頭メモリ位置からデータをポップする 場合に、前記フレームポインタがデクリメントされることを特徴とする請求項3 4に記載のメモリアーキテクチャ。 38. 前記第1の読出しポートが前記最下位メモリ位置からデータを読み出す ためにも構成され、 前記第1の書込みポートが前記最下位メモリ位置下にデータを書込むためにも 構成されることを特徴とする請求項35に記載のメモリアーキテクチャ。 39. 前記第1の書込みポートが前記最下位メモリ位置下にデータを書込む場 合に、前記最下位ポインタがデクリメントされることを特徴とする請求項38に 記載のメモリアーキテクチャ。 40. 前記第1の読出しポートが前記最下位メモリ位置からデータを読み出す 場合に、前記最下位ポインタがインクリメントされることを特徴とする請求項3 8に記載のメモリアーキテクチャ。 41. 前記循環メモリバッファに接続される第2の読出しポートと、 前記循環バッファに接続される第2の書込みポートとをさらに有することを特 徴とする請求項35に記載のメモリアーキテクチャ。 42. 前記第2の読出しポートが前記最下位メモリ位置からデータを読み出す ために構成され、 前記第2の書込みポートが前記最下位メモリ位置にデータを書込むために構成 されることを特徴とする請求項41に記載のメモリアーキテクチャ。 43. 前記第2の書込みポートが前記最下位メモリ位置にデータを書込む場合 、前記最下位ポインタがデクリメントされることを特徴とする請求項42に記載 のメモリアーキテクチャ。 44. 前記第2の読出しポートが前記最下位メモリ位置からデータを 読み出す場合に、前記最下位ポインタがインクリメントされることを特徴とする 請求項42に記載のメモリアーキテクチャ。 45. 前記第1のメモリ回路が、 スタックと、 前記スタックをキャッシュするためにスタックキャッシュ管理ユニットとを有 することを特徴とする請求項42に記載のメモリアーキテクチャ。 46. 前記スタックキャッシュ管理ユニットが、 前記スタックに接続され、複数のメモリ位置を有するスタックキャッシュメモ リ回路を備えるスタックキャッシュと、 前記スタックキャッシュメモリ回路内の最下位メモリ位置を指示し、かつ定義 するキャッシュ最下位ポインタと、 前記スタックキャッシュから前記スタックに、前記最下位メモリ位置にストア される第1の実行環境を転送するために接続されるスピル制御ユニットと、 前記スタックから、前記最下位メモリ位置或いは前記最下位メモリ位置に隣接 するメモリ位置に第2の実行環境を転送するために接続されるフィル制御ユニッ トとを有することを特徴とする請求項45に記載のメモリアーキテクチャ。 47. 前記スタックキャッシュがさらに、 第1の読出しポートであって、前記スタックキャッシュメモリ回路及び前記ス タック間に接続され、前記スピル制御ユニットが前記第1の読出しポートを制御 する、該第1の読出しポートと、 第1の書込みポートであって、前記スタックキャッシュメモリ回路及び前記ス タック間に接続され、前記フィル制御ユニットが前記第1の書込みポートを制御 する、該第1の書込みポートとを有することを特徴と する請求項46に記載のメモリアーキテクチャ。 48. 前記スタックキャッシュメモリ回路の先頭メモリ位置を指示し、かつ定 義するフレームポインタをさらに有することを特徴とする請求項47に記載のメ モリアーキテクチャ。 49. 前記第2のメモリ回路が、 複数のメモリ位置を有する循環メモリバッファと、 前記循環メモリバッファにおいて先頭メモリ位置を指示するフレームポインタ と、 前記循環メモリバッファにおいて最下位メモリ位置を指示する最下位 ポインタと、 前記循環メモリバッファに接続される第1の読出しポートと、 前記循環メモリバッファに接続される第1の書込みポートとを有することを特 徴とする請求項32に記載のメモリアーキテクチャ。 50. 前記第1の読出しポートが前記先頭メモリ位置からデータを読み出すた めに構成され、 前記第1の書込みポートが前記先頭メモリ位置にデータを書込むために構成さ れることを特徴とする請求項49に記載のメモリアーキテクチャ。 51. 前記第1の書込みポートが前記先頭メモリ位置にデータを書込む場合、 前記OPTOPポインタがインクリメントされることを特徴とする請求項49に 記載のメモリアーキテクチャ。 52. 前記第1の読出しポートが前記先頭メモリ位置からデータをポップする 場合に、前記OPTOPポインタがデクリメントされることを特徴とする請求項 49に記載のメモリアーキテクチャ。 53. 前記第2のメモリ回路が、 スタックと、 前記スタックをキャッシュするためにスタックキャッシュ管理ユニットとを有 することを特徴とする請求項32に記載のメモリアーキテクチャ。 54. 前記スタックキャッシュ管理ユニットが、 前記スタックに接続され、複数のメモリ位置を有するスタックキャッシュメモ リ回路を備えるスタックキャッシュと、 前記スタックキャッシュメモリ回路内の最下位メモリ位置を指示し、かつ定義 するキャッシュ最下位ポインタと、 前記スタックキャッシュから前記スタックに、前記最下位メモリ位置にストア される第1のデータワードを転送するために接続されるスピル制御ユニットと、 前記スタックから、前記最下位メモリ位置或いは前記最下位メモリ位置に隣接 するメモリ位置に第2のデータワードを転送するために接続されるフィル制御ユ ニットとを有することを特徴とする請求項53に記載のメモリアーキテクチャ。 55. 前記スタックキャッシュがさらに 第1の読出しポートであって、前記スタックキャッシュメモリ回路及び前記ス タック間に接続され、前記スピル制御ユニットが前記第1の読出しポートを制御 する、該第1の読出しポートと、 第1の書込みポートであって、前記スタックキャッシュメモリ回路及び前記ス タック間に接続され、前記フィル制御ユニットが前記第1の書込みポートを制御 する、該第1の書込みポートとを有することを特徴とする請求項54に記載のメ モリアーキテクチャ。 56. 前記スタックキャッシュメモリ回路の先頭メモリ位置を指示し、かつ定 義するOPTOPポインタをさらに有することを特徴とする請求項55に記載の メモリアーキテクチャ。 57. メモリアーキテクチャであって、 スタックと、 前記スタックに接続され、複数のメモリ位置を有するスタックキャッシュメモ リ回路を備えるスタックキャッシュと、 前記スタックキャッシュメモリ回路内の最下位メモリ位置を指示し、かつ定義 するキャッシュ最下位ポインタと、 前記スタックキャッシュから前記スタックに、前記最下位メモリ位置にストア される第1のデータワードを転送するために接続されるスピル制御ユニットと、 前記スタックから、前記最下位メモリ位置或いは前記最下位メモリ位置に隣接 するメモリ位置に第2のデータワードを転送するために接続されるフィル制御ユ ニットとを有することを特徴とするメモリアーキテクチャ。 58. 前記スタックキャッシュがさらに 第1の読出しポートであって、前記スタックキャッシュメモリ回路及び前記ス タック間に接続され、前記スピル制御ユニットが前記第1の読出しポートを制御 する、該第1の読出しポートと、 第1の書込みポートであって、前記スタックキャッシュメモリ回路及び前記ス タック間に接続され、前記フィル制御ユニットが前記第1の書込みポートを制御 する、該第1の書込みポートとを有することを特徴とする請求項57に記載のメ モリアーキテクチャ。 59. 前記スタックキャッシュメモリ回路の先頭メモリ位置を指示し、かつ定 義するOPTOPポインタをさらに有することを特徴とする請求項58に記載の メモリアーキテクチャ。 60. 前記スタックキャッシュがさらに 前記スタックキャッシュメモリ回路に接続される第2の読出しポート と、 前記スタックキャッシュメモリ回路に接続される第3の読出しポートと、 前記スタックキャッシュメモリ回路に接続される第2の書込みポートとを有す ることを特徴とする請求項58に記載のメモリアーキテクチャ。 61. 前記第2の読出しポート、前記第3の読出しポート並びに前記第2の書 込みポートを制御するために構成されるスタック制御ユニットをさらに有するこ とを特徴とする請求項60に記載のメモリアーキテクチャ。 62. 前記OPTOPポインタは、新しいデータワードが前記スタックキャッ シュメモリ回路にプッシュされるときインクリメントされ、前記OPTOPポイ ンタは、ポップされたデータワードが前記スタックキャッシュメモリ回路からポ ップされるときデクリメントされることを特徴する請求項59に記載のメモリア ーキテクチャ。 63. 前記新しいデータワードが前記第1の書込みポートを介してプッシュさ れ、前記ポップされたデータワードが前記第1の読出しポートを介してポップさ れることを特徴とする請求項62に記載のメモリアーキテクチャ。 64. 前記キャッシュ最下位ポインタが、前記スピル制御ユニットが前記第1 のデータを前記スタックに転送するときインクリメントされることを特徴とする 請求項57に記載のメモリアーキテクチャ。 65. 前記キャッシュ最下位ポインタが、前記フィル制御ユニットが前記第2 のデータを前記スタックに転送するときデクリメントされることを特徴とする請 求項57に記載のメモリアーキテクチャ。 66. 前記OPTOPポインタ及び前記キャッシュ最下位ポインタを受信する ために接続され、前記スタックキャッシュメモリ回路内の空き メモリ位置の数を計算するために構成されるスタックキャッシュステータス回路 をさらに有することを特徴とする請求項59に記載のメモリアーキテクチャ。 67. 前記スピル制御ユニットが、前記空きメモリ位置の数がキャッシュ高閾 値より小さい場合にのみ、前記第1のデータワードを転送することを特徴とする 請求項66に記載のメモリアーキテクチャ。 68. 前記スピル制御ユニットが、 前記キャッシュ高閾値を含むプログラマブルレジスタと、 前記スタックキャッシュステータス回路と前記プログラマブルレジスタとに接 続される比較器とを有することを特徴とする請求項67に記載のメモリアーキテ クチャ。 69. 前記フィル制御ユニットが、前記空きメモリ位置の数がキャッシュ低閾 値より大きい場合にのみ、前記第2のデータワードを転送することを特徴とする 請求項66に記載のメモリアーキテクチャ。 70. 前記フィル制御ユニットが、 前記キャッシュ低閾値を含むプログラマブルレジスタと、 前記スタックキャッシュステータス回路と前記プログラマブルレジスタとに接 続される比較器とを有することを特徴とする請求項69に記載のメモリアーキテ クチャ。 71. 前記OPTOPポインタ及び前記キャッシュ最下位ポインタを受信する ために接続され、前記スタックキャッシュメモリ回路内の使用済メモリ位置の数 を計算するために構成されるスタックキャッシュステータス回路をさらに有する ことを特徴とする請求項59に記載のメモリアーキテクチャ。 72. 前記フィル制御ユニットが、前記使用済メモリ位置の数がキャッシュ低 閾値より小さい場合にのみ、前記第2のデータワードを転送す ることを特徴とする請求項71に記載のメモリアーキテクチャ。 73. 前記フィル制御ユニットが、 前記キャッシュ低閾値を含むために構成されるプログラマブルレジスタと、 前記スタックキャッシュステータス回路と前記プログラマブルレジスタとに接 続される比較器とを有することを特徴とする請求項72に記載のメモリアーキテ クチャ。 74. 前記スピル制御ユニットが、前記OPTOPポインタが高水位マークよ り大きい場合にのみ、前記第1のデータワードを転送することを特徴とする請求 項59に記載のメモリアーキテクチャ。 75. 前記スピル制御ユニットが、 前記高水位マークを含むプログラマブルレジスタと、 前記スタックキャッシュステータス回路と前記プログラマブルレジスタとに接 続される比較器とを有することを特徴とする請求項74に記載のメモリアーキテ クチャ。 76. 前記フィル制御ユニットが、前記OPTOPポインタが低水位マークよ り小さい場合にのみ、前記第2のデータワードを転送することを特徴とする請求 項59に記載のメモリアーキテクチャ。 77. 前記スピル制御ユニットが、 前記低水位マークを含むために構成されるプログラマブルレジスタと、 前記スタックキャッシュステータス回路と前記プログラマブルレジスタとに接 続される比較器とを有することを特徴とする請求項76に記載のメモリアーキテ クチャ。 78. 各前記メモリ位置が、 有効ビットと、 保管ビットと、 データセクションとを有することを特徴とする請求項57に記載のメモリアー キテクチャ。 79. 前記スピル制御ユニットが、前記第1のデータワードが前記スタックに 転送される場合に、前記最下位メモリ位置の前記保管ビットを保管論理状態にセ ットすることを特徴とする請求項78に記載のメモリアーキテクチャ。 80. 前記フィル制御ユニットが、前記第2のデータワードが前記スタックに 転送される場合に、前記最下位メモリ位置に先行する前記メモリ位置の前記有効 ビットをセットすることを特徴とする請求項78に記載のメモリアーキテクチャ 。 81. 前記スタックキャッシュメモリ回路がレジスタファイルであることを特 徴とする請求項57に記載のメモリアーキテクチャ。 82. 各前記メモリ位置がレジスタであることを特徴とする請求項81に記載 のメモリアーキテクチャ。 83. 前記スタックキャッシュメモリ回路が循環バッファとして構成されるこ とを特徴とする請求項57に記載のメモリアーキテクチャ。 84. 前記第1のデータワード及び前記第2のデータワードが同じであること を特徴とする請求項57に記載のメモリアーキテクチャ。 85. 複数のメソッド呼出しを実行することができるコンピューティングシス テムに用いられることを特徴とする請求項57に記載のメモリアーキテクチャ。 86. 各前記メソッド呼出しに対する実行環境をストアするために構成される メモリ回路をさらに有し、 前記スタックが各前記メソッドのパラメータ、変数並びにオペランドをストア するために構成されることを特徴とする請求項85に記載のメモリアーキテクチ ャ。 87. 前記第1のメモリ回路が実行環境スタックであることを特徴とする請求 項86に記載のメモリアーキテクチャ。 88. 実行環境スタックキャッシュであって、前記実行環境スタックに接続さ れる実行環境スタックキャッシュメモリ回路を有し、前記実行環境スタックキャ ッシュメモリ回路が複数の実行環境メモリ位置を有する、該実行環境スタックキ ャッシュと、 前記実行環境スタックキャッシュメモリ回路内の実行環境最下位メモリ位置を 指示し、かつ定義する実行環境キャッシュ最下位ポインタと、 前記実行環境スタックキャッシュから前記実行環境スタックに、前記実行環境 最下位メモリ位置内にストアされる第1の実行環境を転送するために接続される 実行環境スピル制御ユニットと、 前記実行環境スタックから前記実行環境最下位メモリ位置或いは前記実行環境 最下位メモリ位置に隣接する実行環境メモリ位置に実行環境を転送するために接 続される実行環境フィル制御ユニットとを有することを特徴とする請求項87に 記載のメモリアーキテクチャ。
JP52708497A 1996-01-24 1997-01-23 スタックキャッシングのための方法及び装置 Expired - Lifetime JP3634379B2 (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US1052796P 1996-01-24 1996-01-24
US64225396A 1996-05-02 1996-05-02
US08/642,253 1996-05-02
US64710396A 1996-05-07 1996-05-07
US60/010,527 1996-05-07
US08/647,103 1996-05-07
PCT/US1997/001303 WO1997027539A1 (en) 1996-01-24 1997-01-23 Methods and apparatuses for stack caching

Publications (2)

Publication Number Publication Date
JP2000513464A true JP2000513464A (ja) 2000-10-10
JP3634379B2 JP3634379B2 (ja) 2005-03-30

Family

ID=27359254

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52708497A Expired - Lifetime JP3634379B2 (ja) 1996-01-24 1997-01-23 スタックキャッシングのための方法及び装置

Country Status (6)

Country Link
US (5) US6532531B1 (ja)
EP (1) EP0976034B1 (ja)
JP (1) JP3634379B2 (ja)
KR (1) KR100584964B1 (ja)
DE (1) DE69734399D1 (ja)
WO (1) WO1997027539A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004511041A (ja) * 2000-10-05 2004-04-08 エイアールエム リミテッド 変換した命令の再始動
JP4833499B2 (ja) * 2000-10-05 2011-12-07 エイアールエム リミテッド レジスタ内へのスタックオペランドの格納

Families Citing this family (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3634379B2 (ja) * 1996-01-24 2005-03-30 サン・マイクロシステムズ・インコーポレイテッド スタックキャッシングのための方法及び装置
EP0825506B1 (en) 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
US6263401B1 (en) * 1997-09-30 2001-07-17 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for transferring data between a register stack and a memory resource
AU2158900A (en) 1998-11-25 2000-06-19 Sun Microsystems, Inc. A method for enabling comprehensive profiling of garbage-collected memory 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
JP3355602B2 (ja) * 1999-01-27 2002-12-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 多次元配列オブジェクトの処理方法及び装置
US8346971B2 (en) 1999-05-04 2013-01-01 At&T Intellectual Property I, Lp Data transfer, synchronising applications, and low latency networks
WO2000070531A2 (en) 1999-05-17 2000-11-23 The Foxboro Company Methods and apparatus for control configuration
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6788980B1 (en) 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US6665793B1 (en) * 1999-12-28 2003-12-16 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for managing access to out-of-frame Registers
KR20010076328A (ko) * 2000-01-19 2001-08-11 이정태 티씨피/아이피를 하드웨어적으로 처리하는 장치 및 그동작방법
EP1197847A3 (en) 2000-10-10 2003-05-21 Nazomi Communications Inc. Java hardware accelerator using microcode engine
WO2002045385A2 (en) * 2000-11-20 2002-06-06 Zucotto Wireless, Inc. Methods and devices for caching method frame segments in a low-power stack-based processor
US8769508B2 (en) 2001-08-24 2014-07-01 Nazomi Communications Inc. Virtual machine hardware for RISC and CISC processors
US6772292B2 (en) * 2002-06-04 2004-08-03 Isaak Garber Two area stack
US7228532B1 (en) * 2002-06-26 2007-06-05 Sun Microsystems, Inc. Method and apparatus to facilitate code verification and garbage collection in a platform-independent virtual machine
EP1387274A3 (en) * 2002-07-31 2004-08-11 Texas Instruments Incorporated Memory management for local variables
EP1387249B1 (en) * 2002-07-31 2019-03-13 Texas Instruments Incorporated RISC processor having a stack and register architecture
GB0220282D0 (en) * 2002-08-31 2002-10-09 Ibm Improved just in time compilation of java software methods
US7367022B2 (en) * 2002-09-05 2008-04-29 Intel Corporation Methods and apparatus for optimizing the operating speed and size of a computer program
US7801120B2 (en) * 2003-01-13 2010-09-21 Emulex Design & Manufacturing Corporation Method and system for efficient queue management
US7139877B2 (en) * 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing speculative load operation from a stack memory cache
US7136990B2 (en) * 2003-01-16 2006-11-14 Ip-First, Llc. Fast POP operation from RAM cache using cache row value stack
US7191291B2 (en) * 2003-01-16 2007-03-13 Ip-First, Llc Microprocessor with variable latency stack cache
US7139876B2 (en) * 2003-01-16 2006-11-21 Ip-First, Llc Microprocessor and apparatus for performing fast speculative pop operation from a stack memory cache
US7694301B1 (en) * 2003-06-27 2010-04-06 Nathan Laredo Method and system for supporting input/output for 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
US7496917B2 (en) * 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
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
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
US7478390B2 (en) * 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US20050071828A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for compiling source code for multi-processor environments
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7523157B2 (en) * 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7549145B2 (en) * 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7257665B2 (en) * 2003-09-29 2007-08-14 Intel Corporation Branch-aware FIFO for interprocessor data sharing
US20050071606A1 (en) * 2003-09-30 2005-03-31 Roman Talyansky Device, system and method of allocating spill cells in binary instrumentation using one free register
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
FR2864411B1 (fr) * 2003-12-23 2006-03-03 Cit Alcatel Terminal avec des moyens de protection contre le dysfonctionnement de certaines applications java
AT413739B (de) * 2004-02-09 2006-05-15 Ge Jenbacher Gmbh & Co Ohg Verfahren zum regeln einer brennkraftmaschine
DE102004025418A1 (de) * 2004-05-24 2005-12-22 Infineon Technologies Ag Controller mit einer Decodiereinrichtung
DE102004025419A1 (de) * 2004-05-24 2005-12-22 Infineon Technologies Ag Controller und Verfahren zum Verarbeiten von Befehlen
US7278122B2 (en) * 2004-06-24 2007-10-02 Ftl Systems, Inc. Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization
US20060095675A1 (en) * 2004-08-23 2006-05-04 Rongzhen Yang Three stage hybrid stack model
WO2006031551A2 (en) 2004-09-10 2006-03-23 Cavium Networks Selective replication of data structure
US7941585B2 (en) * 2004-09-10 2011-05-10 Cavium Networks, Inc. Local scratchpad and data caching system
US7594081B2 (en) 2004-09-10 2009-09-22 Cavium Networks, Inc. Direct access to low-latency memory
US7526502B2 (en) * 2004-09-10 2009-04-28 Microsoft Corporation Dynamic call site binding
US7314491B2 (en) * 2004-12-29 2008-01-01 Bull Hn Information Systems Inc. Encapsulation of large native operating system functions as enhancements of the instruction set in an emulated central processor system
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 삼성전자주식회사 자바 가상 머신에서 바이트 코드의 수행 시간을 줄이는시스템 및 방법
US7676796B2 (en) * 2005-09-29 2010-03-09 Intel Corporation Device, system and method for maintaining a pre-defined number of free registers within an instrumented program
US8024551B2 (en) 2005-10-26 2011-09-20 Analog Devices, Inc. Pipelined digital signal processor
US8285972B2 (en) 2005-10-26 2012-10-09 Analog Devices, Inc. Lookup table addressing system and method
US7728744B2 (en) * 2005-10-26 2010-06-01 Analog Devices, Inc. Variable length decoder system and method
US7454572B2 (en) * 2005-11-08 2008-11-18 Mediatek Inc. Stack caching systems and methods with an active swapping mechanism
JP4732874B2 (ja) * 2005-11-28 2011-07-27 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
US7366842B1 (en) * 2005-12-15 2008-04-29 Nvidia Corporation Creating permanent storage on the fly within existing buffers
WO2007076629A1 (en) * 2005-12-30 2007-07-12 Intel Corporation Type checking for object-oriented programming languages
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
DE102006041002B4 (de) * 2006-08-31 2009-01-02 Infineon Technologies Ag Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung
GB2442495B (en) * 2006-10-02 2009-04-01 Transitive Ltd Method and apparatus for handling dynamically linked function cells with respect to program code conversion
US8301990B2 (en) * 2007-09-27 2012-10-30 Analog Devices, Inc. Programmable compute unit with internal register and bit FIFO for executing Viterbi code
DE102007051345A1 (de) * 2007-10-26 2009-04-30 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Explosivstoffladung
WO2009155483A1 (en) 2008-06-20 2009-12-23 Invensys Systems, Inc. Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US8453114B2 (en) * 2008-12-24 2013-05-28 Microsoft Corporation Implicit iteration of keyed array symbol
EP2400778B1 (en) * 2009-02-23 2019-02-13 Mitsubishi Electric Corporation Wireless communication system, wireless communication device, and wireless communication method
US10453130B2 (en) 2009-03-18 2019-10-22 Bgc Partners, Inc. Electronic exchange system using messages related to events and actions on an exchange
US10380689B2 (en) * 2009-03-06 2019-08-13 Bgc Partners, Inc. Method and apparatus for exchange-based condition processing
KR101493076B1 (ko) 2009-04-07 2015-02-12 삼성전자 주식회사 버퍼 오버플로우 관리를 통한 바이러스 코드 실행방지장치 및 그 방법
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
US9268945B2 (en) * 2010-03-19 2016-02-23 Contrast Security, Llc Detection of vulnerabilities in computer systems
US9189271B2 (en) 2011-09-13 2015-11-17 Empire Technology Development, Llc Operation transfer from an origin virtual machine to a destination virtual machine while continue the execution of the operation on the origin virtual machine
US20130086359A1 (en) * 2011-09-29 2013-04-04 Qualcomm Incorporated Processor Hardware Pipeline Configured for Single-Instruction Address Extraction and Memory Access Operation
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US20130091331A1 (en) * 2011-10-11 2013-04-11 Iulian Moraru Methods, apparatus, and articles of manufacture to manage memory
US9069587B2 (en) * 2011-10-31 2015-06-30 Stec, Inc. System and method to cache hypervisor data
JP5779077B2 (ja) * 2011-11-22 2015-09-16 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation プログラムの生成を支援する装置及び方法
US8990788B2 (en) 2012-03-09 2015-03-24 Empire Technology Development Llc Compilation of code in a data center
US9471344B1 (en) * 2012-03-27 2016-10-18 Marvell International Ltd. Hardware support for processing virtual machine instructions
US9383448B2 (en) 2012-07-05 2016-07-05 Deca System Co., Ltd. Golf GPS device with automatic hole recognition and playing hole selection
US9575755B2 (en) 2012-08-03 2017-02-21 International Business Machines Corporation Vector processing in an active memory device
US9569211B2 (en) 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9632777B2 (en) 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9003160B2 (en) 2012-08-03 2015-04-07 International Business Machines Corporation Active buffered memory
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
US9298395B2 (en) 2012-10-22 2016-03-29 Globalfoundries Inc. Memory system connector
US8972782B2 (en) 2012-11-09 2015-03-03 International Business Machines Corporation Exposed-pipeline processing element with rollback
US9189399B2 (en) 2012-11-21 2015-11-17 Advanced Micro Devices, Inc. Stack cache management and coherence techniques
US20140143498A1 (en) * 2012-11-21 2014-05-22 Advanced Micro Devices, Inc. Methods and apparatus for filtering stack data within a cache memory hierarchy
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
US9032157B2 (en) * 2012-12-11 2015-05-12 International Business Machines Corporation Virtual machine failover
US9069701B2 (en) * 2012-12-11 2015-06-30 International Business Machines Corporation Virtual machine failover
US9292292B2 (en) * 2013-06-20 2016-03-22 Advanced Micro Devices, Inc. Stack access tracking
US8943462B2 (en) * 2013-06-28 2015-01-27 Sap Se Type instances
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US20150186168A1 (en) * 2013-12-30 2015-07-02 Unisys Corporation Dedicating processing resources to just-in-time compilers and instruction processors in a dynamic translator
JP6371855B2 (ja) 2014-03-26 2018-08-08 インテル・コーポレーション プロセッサ、方法、システム、プログラム、及び非一時的機械可読記憶媒体
US9513805B2 (en) * 2014-04-15 2016-12-06 International Business Machines Corporation Page table including data fetch width indicator
US11755202B2 (en) 2015-01-20 2023-09-12 Ultrata, Llc Managing meta-data in an object memory fabric
WO2016118615A1 (en) 2015-01-20 2016-07-28 Ultrata Llc Object memory data flow instruction execution
US9672351B2 (en) * 2015-02-02 2017-06-06 Qualcomm Incorporated Authenticated control stacks
US11327779B2 (en) * 2015-03-25 2022-05-10 Vmware, Inc. Parallelized virtual machine configuration
US9971542B2 (en) 2015-06-09 2018-05-15 Ultrata, Llc Infinite memory fabric streams and APIs
US10698628B2 (en) 2015-06-09 2020-06-30 Ultrata, Llc Infinite memory fabric hardware implementation with memory
US9886210B2 (en) 2015-06-09 2018-02-06 Ultrata, Llc Infinite memory fabric hardware implementation with router
CN105183433B (zh) * 2015-08-24 2018-02-06 上海兆芯集成电路有限公司 指令合并方法以及具有多数据通道的装置
US9705620B2 (en) * 2015-09-18 2017-07-11 Qualcomm Incorporated Synchronization of endpoints using tunable latency
US10241676B2 (en) 2015-12-08 2019-03-26 Ultrata, Llc Memory fabric software implementation
US10235063B2 (en) 2015-12-08 2019-03-19 Ultrata, Llc Memory fabric operations and coherency using fault tolerant objects
WO2017100281A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc Memory fabric software implementation
WO2017100288A1 (en) 2015-12-08 2017-06-15 Ultrata, Llc. Memory fabric operations and coherency using fault tolerant objects
US10908910B2 (en) * 2018-07-27 2021-02-02 Oracle International Corporation Lazy copying of runtime-managed stack frames
US11106463B2 (en) 2019-05-24 2021-08-31 Texas Instruments Incorporated System and method for addressing data in memory
US10942852B1 (en) 2019-09-12 2021-03-09 Advanced New Technologies Co., Ltd. Log-structured storage systems
SG11202002588RA (en) 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
SG11202002732TA (en) 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
WO2019228575A2 (en) 2019-09-12 2019-12-05 Alibaba Group Holding Limited Log-structured storage systems
WO2019228571A2 (en) 2019-09-12 2019-12-05 Alibaba Group Holding Limited Log-structured storage systems
SG11202002363QA (en) 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
EP3673376B1 (en) 2019-09-12 2022-11-30 Advanced New Technologies Co., Ltd. Log-structured storage systems
SG11202002027TA (en) * 2019-09-12 2020-04-29 Alibaba Group Holding Ltd Log-structured storage systems
WO2019228568A2 (en) 2019-09-12 2019-12-05 Alibaba Group Holding Limited Log-structured storage systems
CN113326020A (zh) * 2020-02-28 2021-08-31 北京百度网讯科技有限公司 缓存器件、缓存器、系统、数据处理方法、装置及介质
US11809839B2 (en) 2022-01-18 2023-11-07 Robert Lyden Computer language and code for application development and electronic and optical communication

Family Cites Families (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3878513A (en) 1972-02-08 1975-04-15 Burroughs Corp Data processing method and apparatus using occupancy indications to reserve storage space for a stack
US3810117A (en) 1972-10-20 1974-05-07 Ibm Stack mechanism for a data processor
GB1441816A (en) 1973-07-18 1976-07-07 Int Computers Ltd Electronic digital data processing systems
US3889243A (en) 1973-10-18 1975-06-10 Ibm Stack mechanism for a data processor
JPS5474651A (en) 1977-11-28 1979-06-14 Toshiba Corp Stack control system
US4354232A (en) 1977-12-16 1982-10-12 Honeywell Information Systems Inc. Cache memory command buffer circuit
US4325118A (en) 1980-03-03 1982-04-13 Western Digital Corporation Instruction fetch circuitry for computers
US4524416A (en) 1980-04-15 1985-06-18 Honeywell Information Systems Inc. Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system
US4375678A (en) 1980-08-25 1983-03-01 Sperry Corporation Redundant memory arrangement providing simultaneous access
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
US4600986A (en) 1984-04-02 1986-07-15 Sperry Corporation Pipelined split stack with high performance interleaved decode
US4674032A (en) 1984-04-02 1987-06-16 Unisys Corporation High-performance pipelined stack with over-write protection
JPS6133546A (ja) 1984-07-25 1986-02-17 Nec Corp 情報処理装置
US4761733A (en) 1985-03-11 1988-08-02 Celerity Computing Direct-execution microprogrammable microprocessor system
DE3689595T2 (de) 1985-04-08 1994-05-19 Hitachi Ltd Datenverarbeitungssystem.
US4849880A (en) * 1985-11-18 1989-07-18 John Fluke Mfg. Co., Inc. Virtual machine programming system
JP2826309B2 (ja) 1985-11-20 1998-11-18 日本電気株式会社 情報処理装置
JPH0687221B2 (ja) 1986-04-02 1994-11-02 日本電気株式会社 情報処理装置
JP2545789B2 (ja) 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
US4811208A (en) 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
JPS63242243A (ja) 1987-03-31 1988-10-07 株式会社東芝 超音波ドプラ診断装置
US5115500A (en) 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
US5210874A (en) 1988-03-22 1993-05-11 Digital Equipment Corporation Cross-domain call system in a capability based digital data processing system
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
US5142635A (en) 1989-04-07 1992-08-25 Intel Corporation Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer
US5093777A (en) 1989-06-12 1992-03-03 Bull Hn Information Systems Inc. Method and apparatus for predicting address of a subsequent cache request upon analyzing address patterns stored in separate miss stack
US5157777A (en) * 1989-12-22 1992-10-20 Intel Corporation Synchronous communication between execution environments in a data processing system employing an object-oriented memory protection mechanism
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
JP3027627B2 (ja) 1991-02-25 2000-04-04 松下電工株式会社 プログラマブルコントローラの演算プロセッサ
US5701417A (en) 1991-03-27 1997-12-23 Microstar Laboratories Method and apparatus for providing initial instructions through a communications interface in a multiple computer system
JP3204323B2 (ja) 1991-07-05 2001-09-04 エヌイーシーマイクロシステム株式会社 キャッシュメモリ内蔵マイクロプロセッサ
US5634027A (en) 1991-11-20 1997-05-27 Kabushiki Kaisha Toshiba Cache memory system for multiple processors with collectively arranged cache tag memories
US5274818A (en) * 1992-02-03 1993-12-28 Thinking Machines Corporation System and method for compiling a fine-grained array based source program onto a course-grained hardware
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5522051A (en) * 1992-07-29 1996-05-28 Intel Corporation Method and apparatus for stack manipulation in a pipelined processor
US5471602A (en) * 1992-07-31 1995-11-28 Hewlett-Packard Company System and method of scoreboarding individual cache line segments
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
AU4804493A (en) * 1992-08-07 1994-03-03 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
DE4306031C2 (de) * 1993-02-26 1995-11-02 Siemens Ag Verfahren zum ferngesteuerten Administrieren von Kommunikationssystemen
JPH0793216A (ja) 1993-09-27 1995-04-07 Hitachi Ltd キャッシュ記憶制御装置
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 コンパイラの命令列最適化方法
US5481684A (en) 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
EP0676691A3 (en) 1994-04-06 1996-12-11 Hewlett Packard Co Device for saving and restoring registers in a digital computer.
US5485572A (en) 1994-04-26 1996-01-16 Unisys Corporation Response stack state validation check
US5481693A (en) 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5598546A (en) 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
US5636362A (en) 1994-09-28 1997-06-03 Intel Corporation Programmable high watermark in stack frame cache using second region as a storage if first region is full and an event having a predetermined minimum priority
DE4435183C2 (de) * 1994-09-30 2000-04-20 Siemens Ag Verfahren zum Betrieb eines Magnetresonanzgeräts
US6496922B1 (en) 1994-10-31 2002-12-17 Sun Microsystems, Inc. Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5630066A (en) 1994-12-20 1997-05-13 Sun Microsystems, Inc. System and method for locating object view and platform independent object
US5638525A (en) 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
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
US6076155A (en) 1995-10-24 2000-06-13 S3 Incorporated Shared register architecture for a dual-instruction-set CPU to facilitate data exchange between the instruction sets
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
US5687336A (en) 1996-01-11 1997-11-11 Exponential Technology, Inc. Stack push/pop tracking and pairing in a pipelined processor
US5784553A (en) 1996-01-16 1998-07-21 Parasoft Corporation Method and system for generating a computer program test suite using dynamic symbolic execution of JAVA programs
US5761408A (en) * 1996-01-16 1998-06-02 Parasoft Corporation Method and system for generating a computer program test suite using dynamic symbolic execution
JP3634379B2 (ja) 1996-01-24 2005-03-30 サン・マイクロシステムズ・インコーポレイテッド スタックキャッシングのための方法及び装置
EP0976030B1 (en) * 1996-01-24 2008-07-02 Sun Microsystems, Inc. Instruction folding for a stack-based machine
EP0976029A2 (en) 1996-01-24 2000-02-02 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
US6151703A (en) * 1996-05-20 2000-11-21 Inprise Corporation Development system with methods for just-in-time compilation of programs
US6711667B1 (en) * 1996-06-28 2004-03-23 Legerity, Inc. Microprocessor configured to translate instructions from one instruction set to another, and to store the translated instructions
US5953741A (en) * 1996-11-27 1999-09-14 Vlsi Technology, Inc. Stack cache for stack-based processor and method thereof
US5903761A (en) * 1997-10-31 1999-05-11 Preemptive Solutions, Inc. Method of reducing the number of instructions in a program code sequence
US6205578B1 (en) * 1998-08-14 2001-03-20 Ati International Srl Interpreter for stack-based languages
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
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
US6338160B1 (en) * 1998-12-08 2002-01-08 Nazomi Communications, Inc. Constant pool reference resolution method
US6826749B2 (en) * 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
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
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
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
US6832307B2 (en) * 2001-07-19 2004-12-14 Stmicroelectronics, Inc. Instruction fetch buffer stack fold decoder for generating foldable instruction status information

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004511041A (ja) * 2000-10-05 2004-04-08 エイアールエム リミテッド 変換した命令の再始動
JP4833499B2 (ja) * 2000-10-05 2011-12-07 エイアールエム リミテッド レジスタ内へのスタックオペランドの格納

Also Published As

Publication number Publication date
US6532531B1 (en) 2003-03-11
US6961843B2 (en) 2005-11-01
KR20050052529A (ko) 2005-06-02
WO1997027539A1 (en) 1997-07-31
US20030115238A1 (en) 2003-06-19
JP3634379B2 (ja) 2005-03-30
US20050267996A1 (en) 2005-12-01
DE69734399D1 (de) 2006-03-02
US20070277021A1 (en) 2007-11-29
US20030200351A1 (en) 2003-10-23
US6950923B2 (en) 2005-09-27
EP0976034A1 (en) 2000-02-02
EP0976034B1 (en) 2005-10-19
KR100584964B1 (ko) 2006-05-29

Similar Documents

Publication Publication Date Title
JP2000513464A (ja) スタックキャッシングのための方法及び装置
US6038643A (en) Stack management unit and method for a processor having a stack
US5925123A (en) Processor for executing instruction sets received from a network or from a local memory
JP4171496B2 (ja) スタックを用いる演算マシンのための命令フォールディング処理
US6148391A (en) System for simultaneously accessing one or more stack elements by multiple functional units using real stack addresses
EP0976050B1 (en) Processor with array access bounds checking
US5970242A (en) Replicating code to eliminate a level of indirection during execution of an object oriented computer program
US6065108A (en) Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same
US6076141A (en) Look-up switch accelerator and method of operating same
EP0752644A2 (en) Memory management unit incorporating prefetch control
US7069415B2 (en) System and method to automatically stack and unstack Java local variables
US7203797B2 (en) Memory management of local variables
JP2005011353A (ja) プロセッサにおけるスタックをベースとするメモリの利用の管理
US20040078550A1 (en) Multi-processor computing system having a JAVA stack machine and a RISC-based processor
KR100618718B1 (ko) 스택메모리구조에서의캐싱방법및장치

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040831

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041022

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041224

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

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090107

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100107

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110107

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110107

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120107

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130107

Year of fee payment: 8

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130107

Year of fee payment: 8

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

Year of fee payment: 8

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