JP4763598B2 - プロセッサおよびデバイス - Google Patents

プロセッサおよびデバイス Download PDF

Info

Publication number
JP4763598B2
JP4763598B2 JP2006516089A JP2006516089A JP4763598B2 JP 4763598 B2 JP4763598 B2 JP 4763598B2 JP 2006516089 A JP2006516089 A JP 2006516089A JP 2006516089 A JP2006516089 A JP 2006516089A JP 4763598 B2 JP4763598 B2 JP 4763598B2
Authority
JP
Japan
Prior art keywords
pointer
processor
data
area
stack
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006516089A
Other languages
English (en)
Other versions
JP2009514043A5 (ja
JP2009514043A (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.)
Universitaet Stuttgart
Original Assignee
Universitaet Stuttgart
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 Universitaet Stuttgart filed Critical Universitaet Stuttgart
Publication of JP2009514043A publication Critical patent/JP2009514043A/ja
Publication of JP2009514043A5 publication Critical patent/JP2009514043A5/ja
Application granted granted Critical
Publication of JP4763598B2 publication Critical patent/JP4763598B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/35Indirect addressing
    • 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/355Indexed addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/17Embedded application

Description

本発明はプロセッサアーキテクチャに関し、メモリへのアクセスがオブジェクトを参照するポインタを介して行われるものに関する。
ソフトウェアの複雑さを管理することは、ソフトウェア開発における最大の要求である。ソフトウェアが、理解可能であって制御可能であるモジュールに分解されて理論的に表わされる場合、高品質で信頼性の高いシステムだけが実行されることとなる。これを達成するために、オブジェクト指向プログラミング言語が何年にもわたって使用されてきた。
オブジェクト指向プログラミング言語の実行における主要な問題はダイナミックメモリ管理である。C++のようないくつかのオブジェクト指向言語は、いまだに、例えばプログラマの責任の下でメモリが要求され、また再び解放されるような、マニュアルメモリ管理に基づいている。しかしながら、このアプローチは、その問題に合わせて調整されるシステムの自然なモデリングがしばしば可能でないという欠点を持つ。これは、メモリ管理がそのシステムの設計の間においても実行されるためである。さらに、メモリのマニュアル解放はプログラムエラーの全クラスの原因である。例えば、メモリエリアに対する参照がいまだ存在しているにもかかわらず、メモリエリアが解放された場合、このことはさらなるプログラムの実行において壊滅的な結果となるかもしれない。すでに解放されたメモリエリアに対していまだ存在しているポインタ(ダングリング参照)によって引き起こされるエラーの連続が多くの要因の機能であって、それゆえほとんど再生不可能であり、辛うじてローカライズできるということは、この場合には特に深刻である。これらの理由のため、Java(登録商標)のような、ほとんどすべての最新のプログラミング言語は、自動ガーベッジコレクションを実行するダイナミックメモリ管理に基づいている。このダイナミックメモリ管理を持つシステムにおいて、メモリエリアはそのプログラムの責任の下で復帰されないかもしれない。その代わりに、メモリエリアがプログラムによってもはや確実に参照されないときには、ガーベッジコレクターが自動的にそのメモリエリアの解放だけを行う。この原則のおかげで、"ダングリング参照"が発生することはない。さらに、プログラマが実際の問題の解決に全力で取り組むために、この技術の使用はプログラマの生産性を上昇させる。最終的に、ダイナミックメモリ管理を持つシステムにおける隠れたプログラムエラーの可能性がマニュアルメモリ管理を持つシステムにおけるものよりも著しく低くなるので、用意されるプログラムが高品質なものとなる。
関連技術
ダイナミックに構築されるメモリエリアの自動解放に関するアルゴリズムは多数存在し、参照カウント、コピー、及びマークスイープコレクションの概念の下の技術として知られている。これらのアルゴリズム概観については「R.ジョーンズ、R.リンズ:"ガーベッジコレクション:自動ダイナミックメモリ管理のためのアルゴリズム"、ジョン・ウィリー&ソンズ、1996年」を参照している
これらのアルゴリズムの単純な実行は、ガーベッジコレクションサイクルの全期間にわたってそのアプリケーションプログラムを中断する。それらは、典型的には、プログラムの実行において長く予測不可能なポーズを引き起こす。それゆえ、それらは、インタラクティブシステムやリアルタイム環境にはふさわしくない。
インクリメンタルでありコンカレントな方法は、当該プログラムの実行をガーベッジコレクションサイクルの間にわたって継続することを許可する。しかしながら、それらは、アプリケーションプログラムとガーベッジコレクターとの間の同期を要求する。しかしながら、ソフトウェアにおけるこの同期のコストは深刻なものである。なぜならば、使用される方法によって、関連するオブジェクトがすでにガーベッジコレクターによって処理されたかどうかを決定するために、各ポインタロード(リードバリア)前又は各ポインタストア(ライトバリア)前のいずれかに、ショートコードシーケンスを組み込まなければならないからである。
多くのインクリメンタルな方法は"リアルタイムケーパブル"として表わされる。なぜならば、ガーベッジコレクターによって引き起こされるポーズはほとんどの場合において短すぎて、ユーザによって登録することはできないからである。しかしながら、ハードなリアルタイムケーパビリティは、そのシステムのレスポンスタイムのコンスタントな上限の保証を要求する。ソフトウェアベースの方法は、典型的には、ルートセット(レジスタ及びスタック)のすべてのポインタの試験やブジェクト全体の処理のような割り込み可能でないオペレーションに依存するので、それらはハードなリアルタイム要求を満たさない。無期限の不可分オペレーションなしで管理するソフトウェア解法が知られているが、時間やメモリを計算するこれらの解法に費やすコストは深刻なものである。
自動ガーベッジコレクションのためのすべての技術の基本的な問題は、ポインタを発見し識別することである。もしもポインタが非ポインタと明確に区別することができなければ、コンサバティブなガーベッジコレクションだけが実行される。このことは、ポインタを表現できる各ビットパターンが、いまだ使用中であるメモリの解放を避けるために、ポインタとして見なされなければならないということを意味する。それゆえ、オブジェクトを移動してポインタをアップデートするようなコンパクト方法はコンサバティブなガーベッジコレクションにおいては使用されない。しかしながら、そのメモリはコンパクト化方法を用いなければ断片化される。
これらの問題を避け、正確なガーベッジコレクションを実行するために、より多くの経費がポインタのサーチ及び識別に使用される。多くのオブジェクト指向言語において、ポインタやオブジェクトは、オブジェクト毎に含まれるタイプデスクリプタを介して識別される。しかしながら、プログラムスタックやプロセスレジスタにおけるポインタを突き止めることは、特にコンパイラを最適化することに関しては、より困難である。スタックポジションや、ポインタを現在含んでいるプロセッサレジスタが特定されるデータ構造を維持することは可能であるが、プログラムが実行されている間にわたってこの種のデータ構造を提供するためのコストはとても高いものである。この理由から、ほとんどのソフトウェアベースの方法では、プログラムスタックやレジスタ内のポインタの位置を表現するコンプライヤによって生成されるテーブルを使用する。ガーベッジコレクションの実行対象である各プログラムポイントで、このタイプのテーブルのセットが準備される。しかしながら、この技術の実施によって、プログラムコードの膨張が深刻なものになってしまう。さらに、停止しているスレッドが、制限された時間内にこのタイプの次のプログラムポイントに届くことを、リアルタイムシステムは保証しなければならない。
それゆえ、多くの問題が、自動ガーベッジコレクションを主としてソフトウェアで使用する現在のシステムを用いて克服されなければならない。これは、とりわけ、ハードウェアが根本的に提供しない機能をソフトウェアがシミュレートするからである。もしも、プロセッサ自身がハードウェアにおいて、全体的に或いは部分的に、自動ガーベッジコレクションを実行すれば、効率性やリアルタイムケーパビリティに関する多くの問題が克服されるであろう。しかしながら、プロセッサがこの目的のためにポインタを識別することができることが絶対に必要である。
以下では、多くの既知のアーキテクチャのうちの2つ、すなわち、正確なポインタ識別及び/又は自動ガーベッジコレクションをサポートする模範的な目的と、本発明の主題が重要であることを記述する。
このように、メモリエリアをアドレス指定するためにダイレクトなポインタに代わってケーパビリティを使用するアーキテクチャが1996年以来知られている。ケーパビリティには、アクセス権限やオブジェクトの識別に関するステートメントが含まれる。それらにはオブジェクトの物理的なアドレスではなく、むしろオブジェクトの位置、大きさ及び属性を表現するデスクリプタへの参照が含まれる。このタイプのアーキテクチャを持つプロセッサの例として、例えば、「H.M.レビィ:ケーパビリティベースのコンピュータシステム、ディジタルプレス、1984年、159〜186ページ」に記述されているような、インテルiAPX432がある。このアーキテクチャにおいて、ケーパビリティは2段階のマッピングプロセスを通して、関連するオブジェクトに関連付けられる。オブジェクトテーブルにおけるユニークなエントリが各オブジェクト毎に存在するが、それはオブジェクトの位置、大きさ及びステータスを表わす。各オブジェクトは2つのエリア、すなわち、データエリアとケーパビリティのためのエリアとから構成される。正確なケーパビリティの識別はこのように行われる。
iAPX432は、レジスタセットの欠落と、ケーパビリティとオブジェクトデスクリプタとを介したオブジェクトの二重の間接的なアドレス指定のために、極めて非効率なものである。さらに、それは自動ガーベッジコレクション自身を実行しない。当該ガーベッジコレクションはソフトウェア内で実行されるべきであり、リアルタイムケーパブルでない。
ダイレクトポインタを識別するための全ての既知の方法は、ポインタと非ポインタとの間を差別化するためにあらゆるメモリワードに特別な識別ビット(タグ)を使用する。この一例としては、米国特許第5,560,003号に記載されたリアルタイムでのインクリメンタルガーベッジコレクションのためのシステム及びハードウェアモジュールがある。これは、2つのメモリバンクと、ガーベッジコレクションを実行する1つのローカルプロセッサとから構成される。各メモリバンクは、それぞれのメモリアクセスに対応するオブジェクトの開始アドレスにアドレスをマップするオブジェクト空間マネージャによってサポートされる。その複雑性のために、このオブジェクト空間マネージャは、類似するチップエリアをメモリとして占有する、分離したASICとして実行される。この種のシステムは大変コストが高くなる。さらに、識別ビットを用いたポインタの識別は、要求されるコンピューティング時間やメモリという形で追加費用が必要になる。
組み込みシステムにおけるソフトウェアの複雑性の連続する増加のため、自動ガーベッジコレクションの利点をこの経済的に重要な分野にさらに使用するために、何年もの間にわたって大きな努力がなされてきた。重要である最大の点は、最新の情報技術のこのエリアで正確に達成されることである。製品のサイクルは連続するイノベーションを通じてますます短くなっているので、現在のオブジェクト指向言語のための組み込みシステムのロバストでリアルタイムケーパブルなプラットフォームの要求は増加する一方である。しかしながら、これらのアプリケーションにとって、自動ガーベッジコレクションは、ほとんどの場合において贅沢であると考えられ、その議論の余地もない利点があるにもかかわらず自動ガーベッジコレクションを持つ余裕はない。
この関連技術から続けると、本発明の目的は、オブジェクトベースのオブジェクト指向プログラムのためのプロセッサアーキテクチャを明確にすることである。それは、費用対効果が高く正確なポインタ識別を可能とし、それゆえにハードウェア内の全部又は一部で実行される、効率的でリアルタイムケーパブルな自動ガーベッジコレクションのためのパスを開くものである。
発明の詳細
目的は、請求項1に係るプロセッサアーキテクチャによって達成される。このプロセッサアーキテクチャの有利な実施態様は従属請求項の主題であって、或いは下記の詳細や模範的な実施態様から参照される。
本特許出願の範囲において、用語ワードは単一のプロセッサ命令を用いて当該メモリからロードできる、或いはメモリ内に格納できるデータユニットとして理解される。ブジェクトは、メモリワードのコヒーレントなセットとして理解され、そのメモリワード中の全てのワードは単一のオブジェクトに排他的に関連付けられている。ポインタは、オブジェクトを参照するワードとして理解される。用語空値はオブジェクトがないことを参照するために使用される、不変に定められたポインタ値表わす。
オブジェクトベースのオブジェクト指向プログラムのための本プロセッサアーキテクチャにおいて、メモリは、オブジェクトを直接参照するポインタを介して排他的にアクセスされる。オブジェクトは、コヒーレントなメモリエリア、例えば重なり合わない2つのオブジェクトによって占有されるメモリエリア、に排他的に格納される。それぞれのオブジェクトにおいて、ポインタはポインタエリアにデータデータエリアに、互いに別々に格納される。さらに、ポインタエリアの長さやデータエリアの長さについての情報が、それぞれのオブジェクトに格納される。この長さ情報は、後述するような属性として参照される。その属性を用いてオブジェクトのサイズを決定したり、オブジェクト内のポインタデータ互いから一意に区切ることが、いつでも可能である。
本プロセッサアーキテクチャは、別々のポインタレジスタデータレジスタセットを提供する。この場合、ポインタレジスタは、オブジェクトを用いるオペレーション、例えばメモリアクセスに排他的に提供され、他のタスクに対しては用いられない。それゆえ、特に、ポインタレジスタには任意の値を書き込ないことや、ポインタレジスタを用い算術演算を実行できないことが保証される。
オブジェクトのポインタエリアやポインタレジスタにおけるポインタは、メモリ内のオブジェクトのアドレスを直接的に含んでいる。
オブジェクトベースプロセッサアーキテクチャを使用して、ポインタと非ポインタ(データ)の厳格な分離がこのように実行され、その結果、識別ビットを必要とせずに正確なポインタ識別ができる。プロセッサレジスタやメモリ内のポインタを識別するためのこの正確な能力、それはハードウェアによって保証されるものであるが、その能力を通して、ハードウェアにおいて全体的に或いは部分的に実行できる自動ガーベッジコレクションが、プロセッサレベルで統合される。この基盤上に、特に効果的に実行される自動ガーベッジコレクションを持つリアルタイムケーパブルなシステムが実行できる。それゆえ、そのプロセッサ上で実行しなければならないソフトウェアは、ガーベッジコレクションアルゴリズムそのもののためにも、プロセッサとガーベッジコレクターとの間で必要な同期のためにも、必要ない。プロセッサは単に、ガーベッジコレクターに対してメモリ帯域幅の一部分を譲るだけにすぎない。
当該アーキテクチャのさらなる利点は、ガーベッジコレクションがコンプライヤ及び/又はランタイムシステムの協力なしで遂行でき、それゆえ特にロバストに実行できることである。
ガーベッジコレクションの実行に対するハードウェア上の努力は、プロセッサ自身に対する努力と比較して比較的低い。この理由から、そのようなプロセッサは、典型的なマイクロプロセッサやマイクロコントローラと同様に、費用対効果を高くして製造される。
本プロセッサアーキテクチャにおいて、ポインタとして識別されるあらゆるワードは、存在するオブジェクトのアドレスを含むか空値かのいずれかであることが、プロセッサによって好ましくは保証される。本好適な実施態様では、それゆえに固定ルール(システムの不変条件)がプロセッサアーキテクチャによって維持される。ここで、固定ルールとは、それぞれのメモリワードやレジスタが、それがポインタであるか否か、さらには、それぞれのポインタ値が空値か、存在するオブジェクトのアドレスを含むかどうかについて、識別することである。これらのシステムの不変条件を維持することにより、システムにおけるポインタの正確な識別が各クロックサイクルで可能である。
好ましくは、生成されるオブジェクトの属性がパラメータとして転送される特別なオブジェクト生成命令によって新たなオブジェクトが生成される。このオブジェクト生成命令は、オブジェクトがアクセスされる前に、空値でポインタエリアの全てのポインタを初期化する。システム不変条件は、このように侵されることはない。
ハードなリアルタイム要求のための改良において、オブジェクト生成命令が割り込み可能に実行される。もしオブジェクト生成命令が割り込まれた場合、不完全に初期化されたオブジェクトは、割り込まれた生成命令が後で再開できるように、生成される。不完全に初期化されたオブジェクトは、プロセッサによって一意に識別される。
好ましくは、プログラムが開始する前にも、リードオンリーメモリエリアの部分として存在するコンスタントなオブジェクトがプロセッサアーキテクチャによってサポートされる。コンスタントなオブジェクトへのポインタは、プロセッサによって一意に識別される。
本プロセッサアーキテクチャにおいて、メモリのエリアは、好ましくは既知の方法でプログラムスタックとして用意される。プログラムスタックは、この目的のためにポインタスタックエリア、データスアックエリアに分けられる。そこでは、それぞれのケースにおいてスタックによって占有されない第1の位置が、それぞれのケースにおいて用意されたデータレジスタ内で管理されるスタックインデックスによって特定される。
もし複数のスタックが使用された場合は、現在非活動のスタックのスタックインデックスが、好ましくは関連するスタックオブジェクト内で属性として格納される。さらに、スタックオブジェクトは、ヒープ内ではなく、むしろオペレーティングシステムによって管理されるスタティックなメモリの中に、スタティックなオブジェクトとして好ましくは格納され、この種のオブジェクトへのポインタ(スタティックなポインタ)は特別な方法で識別される。
プロセッサアーキテクチャの効率的な実行のために、各ポインタレジスタは、ポインタレジスタ中のポインタによって参照されるオブジェクトに属するオブジェクトの属性が格納される属性レジスタを、好ましくは伴っている。本実施態様では、属性をロードするための追加パイプラインステージが提供される。さらに、アクセスを加速するための属性キャッシュが、このパイプラインで好ましくは使用される。
本プロセッサアーキテクチャの実行に関する関連技術によれば、命令及びデータキャッシュ、或いは分岐予測のためのユニットのような、プログラムの実行や典型的な最適化を要求する全てのさらなるパイプラインステージや機能ユニットが実行される。
発明を実行する方法
以下では、本発明に係るプロセッサアーキテクチャの実施態様の一例が説明される。それは、中でも、識別ビット(タグ)を使用することなく正確なポインタ識別を達成するオブジェクトに基づくものであり、一般に適用可能な、効果的に適用され得るRISC命令セットに基づくものであり、実行時間がいくつかのクロックサイクルを超える不可分のオペレーションを要求しないものである。
説明されるプロセッサアーキテクチャは、以下のシステムの不変条件を保証する。すなわち、
1.すべてのメモリワード又はレジスタは、それがポインタを表わすか否かについて識別し得ること、
2.すべてのポインタ値が空値であるか、又は存在するオブジェクトに一意に関連付けられること。
本プロセッサアーキテクチャは、図1に概略的に示されるように、分離したデータレジスタ及びポインタレジスタセットを提供する。右側に示されるデータレジスタは多目的レジスタとして使用され、一方、左側に示されるポインタレジスタはメモリ内のオブジェクトにアクセスするために使用される。Npはポインタレジスタ数を特定し、Ndはデータレジスタ数を特定する。システムの不変条件を満足するために、ポインタレジスタ内に任意の値をライトすること、例えばポインタレジスタ内にデータレジスタの値をコピーしたり、ポインタレジスタを用いて算術的なオペレーションを実行するようなこと、はできないことが保証されなければならない
本プロセッサアーキテクチャのメモリモデルはオブジェクトベースである。各オブジェクトは、互いに厳格に分離されているデータエリアとポインタエリアとから構成される。図2は、オブジェクトのポインタエリア(図の左側)における対応するポインタワードとデータエリア(図の右側)におけるデータワードを持つこの種のオブジェクトの概略構造を示す。データエリアにおけるデータワード数はδ属性(δ≧0)によって記述される。また、ポインタエリアにおけるポインタ数はπ属性(π≧0)によって記述される。オブジェクトが生成されて後ほど変化しない場合、その属性によって記述されるオブジェクトのサイズは固定される。その属性はオブジェクトの一部分であり、分離した属性エリアのその中に格納される。
本プロセッサアーキテクチャのための命令セットの特定部分は、ード及び格納命令を含むポインタ関連の命令だけから構成される。算術命令やプログラムコントロールの命令のような他の命令の実施態様は、記述されるアーキテクチャとは無関係に選択され、本発明の部分ではない。
説明されるアーキテクチャの命令セットは、新しいオブジェクトやこのオブジェクトへのポインタを生成するために用いられる特別なオブジェクト生成命令を持つ。オブジェクト生成命令(オブジェクトの割り当て)は引数として、生成されるオブジェクトのπ及びδ属性の値を受け取り、新たに生成されたオブジェクトへのポインタをポインタレジスタ内に格納する。生成されたオブジェクトのポインタエリア内のそれぞれのポインタ値は、そのオブジェクトへのポインタがプログラムに見えるようになる前に、空値を用いて初期化される。オブジェクトを削除する命令はない。オブジェクトはプロセッサレベル上で自動ガーベッジコレクションによってのみ削除され得る。
ード及び格納命令は、オブジェクト内でのワードへのアクセスのために使用される。プロセッサアーキテクチャは、ポインタ値やデータワードへのアクセスための、異なるロード及び格納命令を提供する。"ロードデータ"及び"格納データ"命令は、オブジェクトのデータエリアとデータレジスタとの間で排他的にデータワードを移動する。"ロードポインタ"及び"格納ポインタ"命令は、オブジェクトのポインタエリアとポインタレジスタとの間で排他的にポインタを移動する。ロード及び格納命令は、オブジェクトへのポインタを含むポインタレジスタを用いて、及び正の整数インデックスを用いてアクセスされるメモリワードを識別する。インデックスを計算するために、従来アーキテクチャのアドレス指定モードに対するものと同じように、例えば、データレジスタ、コンスタントオフセット及びスケーリンクファクターを用いて、異なる"インデキシングモード"が使用される。
オブジェクトへのアクセスにおいて、特定の参照されたオブジェクトの外部ワードへのアクセスが不可能であることを保証するために、範囲のチェックが実行される。このようなアクセスは壊滅的な結果となり、システムの不変条件を侵こととなる。この理由のため、バウンスバイオレーションの場合には、メモリアクセスが終了して、対応する例外的な取り扱いが開始される。同様の理由のため、空値ポインタの参照先を取得しようとする命令は打ち切られる
オブジェクトの属性は2つの"リード属性"命令によって問い合わせされ得る。
データレジスタに関するオペレーションを典型的に実行する複数の"レジスタからレジスタ"への命令に対比して、ポインタ関連の"レジスタからレジスタ"への命令のための2つの命令から成る強く制限されたセットが、本アーキテクチャによって定義される。"コピーポインタ"命令は、あるポインタレジスタの内容を他のポインタレジスタにコピーする。一方、"比較ポインタ"命令は、2つのポインタが同じオブジェクトを参照するか否かをチェックする。
図4は、本プロセッサアーキテクチャによって定義されるポインタ関連の命令の概要を示しており、それらがポインタレジスタをリードするかポインタレジスタをライトするか、或いはポインタレジスタの参照先を取得するどうかによって分類するものである。それぞれの場合においてリードされ、ライトされ、或いは参照先を取得されるレジスタは、ボールド体でプリントされている。
プログラムスタックの体系化されていない、高度にダイナミックな特性のために、これらは、自動ガーベッジコレクションの範囲におけるポインタ識別に関して、最高度の要求の一つを表わす。本プロセッサアーキテクチャにおいて、プログラムスタックは、何らかのオブジェクトのようにデータエリアやポインタエリアを持つスタックオブジェクトとして見なされ、それゆえ2つの分離したスタックとして見なされ得る。ポインタレジスタは、スタックオブジェクトへのポインタを維持するために用意される。スタックインデックスは、対応するエリアを実際のスタックエリアと現在占有されていないエリアとに分けるために、2つのスタックエリアのそれぞれにおいて使用される。スタックインデックスは、本例において、第1の占有されていないメモリ位置に関連する。0のスタックインデックスは空スタックを表わす。2つのスタックインデックスは、データスタックインデックス(dsix)とポインタスタックインデックス(psix)として識別される。これらのインデックスのそれぞれは、この目的のために用意される特別のデータレジスタ内に維持される。
スタックオブジェクトが典型的なオブジェクトように取り扱われる場合、システムは、ポインタが現在占有されているポインタスタックに属するか、又は、ポインタスタックエリアの占有されていない部分に属しているかを、区別しないかもしれない。ポインタスタックエリアにおける各ワードがポインタとして識別されるので、ポインタスタックエリアの未使用エリアがもはや必要とされていないオブジェクトを参照する多くのポインタを含んでいるかもしれない。ガーベッジコレクターは、これらのオブジェクトへのポインタがまだ存在しているので、これらのオブジェクトを解放しないかもしれない。このオブジェクトの可能性のある解決策は、対応するポインタがスタックから取り除かれると同時に、空値で各ポインタ値を上書きすることである。しかしながら、例えばサブプログラムの終わりでスタックフレームのディスアロケーション間の場合のように、特にもし複数のポインタがスタックから取り除かれた場合、このことは不要な経費がかかるという結果をもたらす。
本プロセッサアーキテクチャの有利な実施態様についてここで述べた例として、スタックのダイナミックなサイズを考慮するオブジェクトの達成がそれゆえ選択される。この目的のため、図3に示されるようなスタックオブジェクトは2組の属性によって表現される。一つ目の組の(π,δ)は現在のスタックサイズを特定し、二つ目の組の(Π,Δ)は最大スタックサイズを特定する。この場合において、π属性はポインタスタックインデックスpsixの値に対応し、δ属性はデータスタックインデックスdsixの値に対応する。スタック属性Π及びΔは、ユーザプログラムに見えないシステムレジスタにおいて維持される。πよりも小さなインデックスを持つポインタのみがポインタ識別及びシステムの不変条件に関連するポインタとして見なされる。
スタック内のメモリワードは標準的なロード及び格納命令によってアドレス指定される。標準の算術的な命令を用いスタックインデックスに対応する値を減少することにより、スタックからワードが取り除くことができる。システムの不変条件を維持するために、特別な命令がポインタスタックポインタをプッシュするために提供される。ここで、当該命令は、ポインタスタックエリアの第1の占有されていないメモリ位置上に、割り込みを許さずにポインタを格納し、ポインタスタックインデックスを増加する。これは、ポインタスタックインデックスを増加するために許可される唯一の命令である。
この点について説明されたプロセッサアーキテクチャにおいて、メモリはポインタを介して独占的にアクセスされ、ポインタを生成するための唯一つの可能性は、オブジェクト生成命令を用いて新たなオブジェクトを生成することである。しかしながら、例えばプログラムの開始前であっても、プログラムコードのような部分として存在するコンスタントなデータをアクセスすることもまた可能である。そのようなコンスタントなデータの例が、ブランチテーブルやタイプデスクリプタのようなコンパイラによって生成される、コンスタントにリンクされたリストや構造である。
それゆえに、プロセッサアーキテクチャの有利な実施態様の本例が、コンスタントなオブジェクトを紹介する。コンスタントなオブジェクトは不変のオブジェクトであり、プログラムコードの一部分として、或いはコンスタントなオブジェクトのために用意される特別なエリア内に格納される。特別な"コンスタントなポインタの生成"命令は、コンスタントなオブジェクトへのポインタの生成のために使用され、コンスタントなポインタとして以下のように参照される。コンスタントなポインタを介したメモリアクセスは、リードアクセスに限定され、コンスタントなオブジェクトのポインタエリアはコンスタントなポインタ又は空値ポインタを独占的に含む。コンスタントなオブジェクトは、オブジェクトの特別なタイプを区別するために提供されるφ属性によって、普通のオブジェクトから区別される。
多くのシステムにおいて、分離したプログラムスタックが、ユーザモードやオペレーティングシステムモードのようなオペレーションの異なるタイプのために使用される。さらに、複数のコンカレントな実行スレッドを持つシステム(マルチスレッドシステム)が、それぞれの実行スレッドのための分離したプログラムスタックを要求する。
これらのスタックの全てが典型的にオペレーティングシステムによって管理され、ガーベッジコレクション(ヒープ)によって監視されるメモリエリア内に位置付けられない。
オペレーティングシステムにヒープメモリエリアの外側のメモリエリアを管理させるために、スタティックなオブジェクトが提供される。スタティックなオブジェクトは、オペレーティングシステムモードにおいて独占的に生成され、この目的のために特に提供されたメモリエリア内に配置される。スタティックなオブジェクトはまた、φ属性を介して識別される。スタティックなオブジェクトへのポインタ(スタティックなポインタ)は決してユーザプログラムからは見えない。
システムの不変条件を維持するために、関連するオブジェクト生成命令が終了する前に、新たに生成されたオブジェクトにおける各ポインタが空値で初期化される。それゆえ、オブジェクト生成命令のための実行時間は、少ない時間定数によって制限されない。これはハードなリアルタイムアプリケーションのために認められない。
オブジェクト生成命令割り込み可能なように実行するために、ニシャライズされていない(より正確には、不完全に初期化された)オブジェクトが、述べられたプロセッサアーキテクチャの有利な実施態様に取り入れられる。ニシャライズされていないオブジェクトは、オブジェクト生成命令が完結する前に割り込まれた場合にだけ、生成される。ニシャライズされていないオブジェクトへのポインタは、オペレーティングシステムモードにおいてのみ見ることができ、それは決して参照先が取得されることはない。ニシャライズされていないオブジェクトは、スタティックでコンスタントなオブジェクトのように、φ属性によって識別される。
それゆえに述べられたプロセッサアーキテクチャの模範的な有利な実施態様は、4つの異なるタイプのオブジェクト、すなわち、通常のダイナミックなオブジェクト、ニシャライズされていないダイナミックなオブジェクト、コンスタントなオブジェクト、及びスタティックなオブジェクト、をサポートする。φ属性は、オブジェクトのタイプを区別するために使用され、4つの値(norm,uini,const,stat)の一つを担う。アーキテクチャの実行において、φ属性はオブジェクトへのポインタ内、及び/又は、オブジェクト自身内に格納される。
通常のダイナミックなオブジェクトとニシャライズされていないダイナミックなオブジェクトはヒープメモリエリア内に位置付けられ、スタティックなオブジェクトはスタティックなメモリエリア内に位置付けられ、コンスタントなオブジェクトはプログラムコード及び/又はコンスタントなデータのために提供されるメモリエリア内に位置付けられる。スタティックでニシャライズされていないオブジェクトはオペレーションシステムモードに限定されるので、それらはシステムオブジェクトとして識別される。
自動ガーベッジコレクションの観点からすれば、オブジェクトの4つのタイプは、それらが、コンパクト化を行うガーベッジコレクターよってどのように取り扱われるかによって特徴付けられる。典型的なダイナミックなオブジェクトはポインタが探索され、コンパクト化の間中移動する。スタティックなオブジェクトはポインタが探索されるが、移動はしない。その一方で、ニシャライズされていないオブジェクトはコンパクト化の間中移動するが、正しくないポインタを含んでいるので、ポインタは探索されない。最後に、コンスタントなオブジェクトは、ガーベッジコレクターによるポインタの探索も移動もされない。
以下では、示唆的なプロセッサアーキテクチャの可能性のある実行が、模範的な目的のために説明される。32ビットのワード値がその実行のために仮定される。バイトやハーフワードをデータエリア内アクセス可能にするために、メモリはバイト単位でアドレス指定可能ある。ワードは4つに分割可能にアドレス指定するために一列に並べられる。
メモリ内のオブジェクトの模範的なレイアウトが図5に示される。各オブジェクトは、データエリア、ポインタエリア及び属性エリアから構成される。効率性の理由から、2つのオブジェクト間のパディングエリアがある環境下で要求されるように、オブジェクトは8つに分割可能にアドレス指定するために一列に並べられている。属性エリアは、ユーザプログラムからは見えておらず、オブジェクトのπ及びδ属性を含む。バイト及びハーフワードオペランドのサポートによって、本実行は、π及びδが対応するエリアにおけるワード数の代わりにバイト数を表わしているので、それらの定義をわずかに変える。
πは4の倍数であるので、2ビットがπ属性のために使用されるメモリワード内で非占有のままになっている。これらはφ属性(或いは、その部分)を格納するために使用され、及び/又は、ガーベッジコレクターに使用される。
ポインタは直接的にオブジェクトの物理的なメモリアドレスを含んでいる。オブジェクトは2倍のワードに従って一列に並べられているので、オブジェクトアドレスはポインタワードの29ビットのみを占有する。残りの3ビットはφ属性(或いは、その部分)を格納するために使用され、及び/又は、ガーベッジコレクターによって使用される。
オブジェクトへのアクセス前に、オブジェクトの属性が知られる。これらは、アクセス前に範囲のチェックのために必要であり、図5に係るオブジェクトレイアウトの場合において、データアクセスの場合でのアドレス生成にさらに要求されるからである。
それぞれのオブジェクトアクセス前のメモリからの属性のロードが膨大な経費に結び付くので、図6に概略的に示されるように、複数の属性レジスタが各ポインタレジスタに提供される。もしポインタレジスタが空値でない値を含んでいる場合、対応する属性レジスタは、ポインタレジスタが参照するオブジェクトの属性を含んでいる。このように、ポインタレジスタの参照先を取得するための費用は、通常のアーキテクチャにおけるアドレス生成のための費用と同じくらい少ない。範囲のチェック自身は、アドレス計算に並行して実行されるので、どんなパフォーマンスロスにも結び付かない。
しかしながら、属性レジスタは自身の対価を持っている。すなわち、ポインタがメモリからロードされる場合、関連する属性もまた属性レジスタにロードされる。さらに、メモリ内の属性の位置は、ポインタのロードが終了した場合にだけ知られる。
この問題は、RISCアーキテクチャの場合における典型的なメモリステージの後の追加的なパイプラインステージによって効果的に解決されるであろう。この追加的なステージは属性ステージとして参照され、属性アクセスを実行するために、パフォーマンスロスなしで、ほとんどの場合で属性キャッシュを使用する。属性キャッシュの構成は、典型的なデータキャッシュの構成と類似している。属性キャッシュは、ポインタの最大29ビットによってアドレス指定され、単一のステップにおいてπ及びδ属性のリード又はライトを許可する。データキャッシュからの本質的な差異は、キャッシュラインのサイズである。データキャッシュにおけるキャッシュラインは典型的に8ワードから構成される一方で、属性キャッシュのラインは2ワードの幅を持ち、単一のオブジェクトの属性のみを含んでいる。
図7は実行されるパイプラインの基本的な構成を示す図であり、図8は個々のパイプラインステージへの全てのポインタ関連の命令を示す分解図である。2つの最も複雑な命令の処理が模範的な目的のために図示されている。
1."ポインタロード"命令
パイプラインの実行ステージにおいて、アドレス生成ユニット(AGU)は、ロードされるポインタのメモリアドレスを計算し、それと並行して、アーキテクチャによって規定された、範囲のチェックや空値ポインタテストのようなランタイムテストを実行する。メモリステージでは、計算されたアドレスがオブジェクトキャッシュからポインタをリードするために使用される。そして、ロードされたポインタは、ロードされたポインタが参照するオブジェクトからその属性をロードするために、属性キャッシュをアドレス指定する。最後に、ロードされたポインタはロードされた属性と共にレジスタセット内にライトされる。
2.オブジェクト生成命令
生成されるオブジェクトのサイズは、デコードステージから実行ステージまでを中継する2つのデータオペランドを利用して決定される。実行ステージにおいて、ポインタ生成ユニット(PGU)は新たなオブジェクトへのポインタの生成する責任がある。コンパクト化ガーベッジコレクターの場合において、PGUは、新たなオブジェクトの生成のために使用されるヒープのエリア内で最後に占有したワードを常に参照するアシスタントレジスタの内容にオブジェクトサイズを付加することによって、新たなオブジェクトの開始アドレスを大変簡単に決定する。PGUは、ポインタの初期化を要求するアドレスを生成するAGUによってサポートされる。8ワードのキャッシュラインを持つオブジェクトキャッシュにおいて、8ポインタワードまでが一クロックサイクル内で同時に初期化される。このように、もしオブジェクトの開始アドレスが一クロックサイクル内で計算された場合、及び、もしオブジェクト内の全てのポインタが同じキャッシュラインに属する場合は、オブジェクト生成命令は遅れることなく実行ステージを通過する。もしこれがその場合でなければ、初期化が終了するか割り込みが発生するまで、パイプラインは停止する。最終的に、新たに生成されたオブジェクトの属性が属性キャッシュにライトされ、レジスタセット内にその属性と共にポインタがライトされる。もし割り込まれたオブジェクト生成命令がパイプラインの終端に到達した場合、割り込まれたオブジェクト生成のステータスはシステムレジスタ内にライトされ、不完全に初期化されたオブジェクトは、イニシャライズされていないオブジェクトのφ属性により識別される。割り込まれたプログラムの実行のコンテキスト(命令カウンター、システムレジスタ)が再度回復するとすぐに、初期化が再開される。
提案されたアーキテクチャの機能的な可能性は、機能するプロトタイプに基づいて証明される。このプロトタイプにおいて、ガーベッジコレクターは、メインプロセッサのパイプラインと緊密に連携するマイクロプログラム式コプロセッサとして実行される。プロセッサとコプロセッサとの間の同期は、完全にハードウェア内で実行される。ガーベッジコレクションのためのプロセッサとコプロセッサは、VHDLにおいて表わされ、最新のプログラム可能な論理回路に対して連帯して合成される。さらに、原型的なJava(登録商標)コンプライヤーやアーキテクチャのJava(登録商標)クラシックライブラリーのサブセットの実行がある。
図9は本装置の一例を示す概略図である。ガーベッジコレクターはマイクロプログラム可能なコプロセッサによって本例のように形成される。本発明に係るプロセッサアーキテクチャは、メインプロセッサ1内で実行される。メインプロセッサ1及びコプロセッサ2のために複数の別々のポートを持つメモリコントローラ3は、メインメモリとの接続を実現する。メインプロセッサとコプロセッサとの間の同期は、異なるレベルで発生する。キャッシュコヒーレンスを確保するために必要な場合には、ガーベッジコレクターはフラッシュし、データや属性キャッシュの複数ラインを空にする。プロセッサパイプラインに組み込まれたハードウェアリードバリアは、ガーベッジコレクター内で割り込みを引き起こす。ガーベッジコレクターはまた、マイクロコード内のクリティカルなエリアを保護するために、メインプロセッサ1を停止する。
本発明に係るプロセッサアーキテクチャは、下記図面に関連して模範的な実施態様に基づいてより詳細に記載される。
本プロセッサアーキテクチャのレジスタモデルを示す概略図である。 本プロセッサアーキテクチャのオブジェクトモデルを示す概略図である。 スタックオブジェクトとしてプログラムスタックの実行を概略的に示す図である。 ポインタに関連する命令の分類を持つテーブルを示す図である。 本プロセッサアーキテクチャのためのオブジェクトレイアウトの実行の一例を示す図である。 属性を持つポインタレジスタを示す概略図である。 本プロセッサアーキテクチャのためのパイプラインの実行の一例を示す概略図を示す図である(簡略図示)。 図7に係るパイプラインのステージへのポインタ関連命令の分解を示す概略図である。 本装置の一例を示す概略図である。

Claims (18)

  1. オブジェクトを参照するポインタを介してメモリへのアクセスが行われるプロセッサアーキテクチャが実装されたプロセッサであって、
    前記オブジェクト中で互いに別々に、ポインタがポインタエリアに格納され、データがデータエリアに格納され、
    前記ポインタは、該ポインタが参照する前記オブジェクトのメモリアドレスを含み、生成される前記オブジェクトの前記ポインタエリアの長さと前記データエリアの長さとをパラメータとして受け取り、それらを属性として前記オブジェクト自身に格納する、プロセッサの特別なオブジェクト生成命令により前記オブジェクトは生成され、生成された前記オブジェクトは、オブジェクトのサイズを決定し、オブジェクト内のポインタとデータとを区切るために、前記オブジェクト自身に格納される、前記ポインタエリアの長さ及び前記データエリアの長さを表わす前記属性が与えられており、
    前記プロセッサは、別々のデータレジスタとポインタレジスタとを有するレジスタセットを備え、前記ポインタレジスタは、前記メモリ内のオブジェクトへのアクセスのために用いられることを特徴とするプロセッサ。
  2. いずれのポインタにも、所定の空値又は存在するオブジェクトの前記メモリアドレスのいずれかのみが書き込まれることを特徴とする請求項1に記載のプロセッサ。
  3. データ操作とポインタ操作のための別々の命令を持つ命令セットが用いられることを特徴とする請求項1又は2に記載のプロセッサ。
  4. ポインタのロード操作が、前記オブジェクトの前記ポインタエリアから前記ポインタレジスタにポインタを排他的にロードし、ポインタの格納操作が、前記ポインタレジスタの内容を前記オブジェクトの前記ポインタエリアに排他的に格納し、
    データのロード操作が、データレジスタ内の前記オブジェクトの前記データエリアからデータを排他的にロードし、データの格納操作が、前記オブジェクトの前記データエリア内に前記データレジスタの内容を排他的に格納することを特徴とする請求項1から3までのいずれか1項に記載のプロセッサ。
  5. 前記オブジェクト生成命令を持つ命令セットであって、生成されるオブジェクトにアクセスすることができる前に、生成される該オブジェクトの前記ポインタエリアのすべてのポインタを空値で初期化する命令セットが用いられることを特徴とする請求項1から4までのいずれか1項に記載のプロセッサ。
  6. 前記オブジェクト生成命令が、割り込みとその後の再開が可能であることを特徴とする請求項5に記載のプロセッサ。
  7. 前記オブジェクト生成命令が割り込みがあった場合に、不完全に初期化されたオブジェクトが生成され、該オブジェクトは、完全に初期化されたオブジェクトとは前記プロセッサによって明確に区別されることを特徴とする請求項6に記載のプロセッサ。
  8. 前記プロセッサが、プログラムの実行時に排他的に読み出される別々のメモリエリアにおいて保持されるコンスタントなオブジェクトをサポートし、
    コンスタントなオブジェクトへのポインタが、前記プロセッサによって明確に識別されることを特徴とする請求項1から7までのいずれか1項に記載のプロセッサ。
  9. ポインタスタックエリアとデータスタックエリアに分けられるプログラムスタックであって、前記2つのスタックエリアのそれぞれにおける占有部分の長さがデータレジスタで管理されるスタックインデックスによって示されるプログラムスタックが用いられることを特徴とする請求項1から8までのいずれか1項に記載のプロセッサ。
  10. 前記ポインタスタック上にポインタをプッシュするための命令であって、割り込みを許さずに前記ポインタスタック上に対応するポインタを格納し、また前記ポインタスタックインデックスを増加する命令が用いられることを特徴とする請求項9に記載のプロセッサ。
  11. 前記プロセッサが、オペレーティングシステムによって管理される別々のメモリエリアに保持されるスタティックなオブジェクトをサポートし、
    スタティックなオブジェクトへのポインタが前記プロセッサによって明確に識別されることを特徴とする請求項1から10までのいずれか1項に記載のプロセッサ。
  12. スタティックなオブジェクトが前記プログラムスタックのために使用され、前記オブジェクトに含まれる属性は、前記プログラムスタックが活動していない場合に前記スタックエリアの実際の占有部分の長さを表わすことを特徴とする請求項9に従属する請求項11、又は請求項10に従属する請求項11に記載のプロセッサ。
  13. 属性レジスタがポインタレジスタ毎に割り当てられており、前記ポインタレジスタ中の前記ポインタが参照する前記オブジェクトの属性がその中に記述されていることを特徴とする請求項1から12までのいずれか1項に記載のプロセッサ。
  14. 追加パイプラインステージを持つパイプラインが前記属性をロードするために用いられることを特徴とする請求項13に記載のプロセッサ。
  15. 属性キャッシュが用いられることを特徴とする請求項13又は14に記載のプロセッサ。
  16. RISC命令セットが用いられることを特徴とする請求項1から15までのいずれか1項に記載のプロセッサ。
  17. 前記プロセッサが自動ガーベッジコレクションを実行することを特徴とする請求項1から16までのいずれか1項に記載のプロセッサ。
  18. 請求項1から16までのいずれか1項に係るプロセッサが実装されたメインプロセッサ(1)と、自動ガーベッジコレクションを実行し、効率的な同期のために前記メインプロセッサ(1)に密結合するコプロセッサ(2)とを持つデバイス。
JP2006516089A 2003-07-01 2004-07-01 プロセッサおよびデバイス Expired - Fee Related JP4763598B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10329680A DE10329680A1 (de) 2003-07-01 2003-07-01 Prozessorarchitektur für exakte Zeigeridentifizierung
DE10329680.8 2003-07-01
PCT/EP2004/007175 WO2005003960A2 (de) 2003-07-01 2004-07-01 Prozessorarchitektur für exakte zeigeridentifizierung

Publications (3)

Publication Number Publication Date
JP2009514043A JP2009514043A (ja) 2009-04-02
JP2009514043A5 JP2009514043A5 (ja) 2010-12-16
JP4763598B2 true JP4763598B2 (ja) 2011-08-31

Family

ID=33559786

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006516089A Expired - Fee Related JP4763598B2 (ja) 2003-07-01 2004-07-01 プロセッサおよびデバイス

Country Status (9)

Country Link
US (1) US8473722B2 (ja)
EP (1) EP1639475B1 (ja)
JP (1) JP4763598B2 (ja)
KR (1) KR101116989B1 (ja)
CN (1) CN100517269C (ja)
AT (1) ATE480824T1 (ja)
DE (2) DE10329680A1 (ja)
HK (1) HK1092236A1 (ja)
WO (1) WO2005003960A2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7802148B2 (en) * 2005-02-23 2010-09-21 Broadcom Corporation Self-correcting memory system
DE102008036479A1 (de) * 2008-08-05 2010-02-11 Giesecke & Devrient Gmbh Speicherverwaltung in einem portablen Datenträger
DE102008051576A1 (de) * 2008-10-14 2010-04-15 Giesecke & Devrient Gmbh Speicherverwaltung in einem portablen Datenträger
US8635415B2 (en) * 2009-09-30 2014-01-21 Intel Corporation Managing and implementing metadata in central processing unit using register extensions
US8326886B2 (en) * 2010-01-21 2012-12-04 Microsoft Corporation Per-thread, per-instance data storage
US8577936B2 (en) * 2010-11-29 2013-11-05 International Business Machines Corporation Fixup cache tool for object memory compaction in an information handling system
US20130086359A1 (en) * 2011-09-29 2013-04-04 Qualcomm Incorporated Processor Hardware Pipeline Configured for Single-Instruction Address Extraction and Memory Access Operation
US8972705B2 (en) * 2011-11-16 2015-03-03 Andes Technology Corporation Executing instructions for managing constant pool base register used for accessing constants during subroutine execution
CN103336744B (zh) * 2013-06-20 2015-11-04 华中科技大学 一种固态存储设备的垃圾回收方法及其系统
US10180902B2 (en) 2015-06-30 2019-01-15 International Business Machines Corporation Pauseless location and object handle based garbage collection
US9734053B2 (en) 2015-06-30 2017-08-15 International Business Machines Corporation Garbage collection handler to update object pointers
US9734052B2 (en) 2015-06-30 2017-08-15 International Business Machines Corporation Multi-section garbage collection
US10176093B2 (en) 2015-06-30 2019-01-08 International Business Machines Corporation Pauseless location and object handle based garbage collection
US10042752B2 (en) 2016-05-27 2018-08-07 Hewlett Packard Enterprise Development Lp Object descriptors
US10628306B2 (en) * 2017-02-01 2020-04-21 Microsoft Technology Licensing, Llc Garbage collector
CN113312278B (zh) * 2021-07-29 2021-11-05 常州楠菲微电子有限公司 一种静态可分配共享多队列缓存的装置及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10301836A (ja) * 1997-04-23 1998-11-13 Sun Microsyst Inc 分岐データ構造を使用した厳密なガーベッジ収集を最適化する方法および装置
JPH113269A (ja) * 1997-04-23 1999-01-06 Sun Microsyst Inc スタックの内容をサブスタックに分離することによる正確なガーベイジ・コレクションを補助するシステムと方法
US20010010071A1 (en) * 1997-08-18 2001-07-26 Vlot Marnix C. Stack oriented data processing device
JP2001290644A (ja) * 2000-03-10 2001-10-19 Texas Instr Inc <Ti> マイクロプロセッサを有するディジタル・システム及びそのディジタル・システムを動作させる方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3656178A (en) * 1969-09-15 1972-04-11 Research Corp Data compression and decompression system
JPS5569855A (en) 1978-11-20 1980-05-26 Panafacom Ltd Data processing system
DE3136387C2 (de) * 1981-09-14 1984-11-29 Deutsche Gerätebau GmbH, 4796 Salzkotten Vorrichtung zum Messen von Flüssigkeitsmengen
US5778395A (en) * 1995-10-23 1998-07-07 Stac, Inc. System for backing up files from disk volumes on multiple nodes of a computer network
JPH09297677A (ja) * 1996-05-02 1997-11-18 Fujitsu Ltd 一部のデータ群を消去可能としたfifoバッファ
US5897656A (en) * 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5860092A (en) * 1997-02-14 1999-01-12 Lsi Logic Corporation Apparatus and method for addressing a cache memory in a computer system utilizing cache tag memory with integrated adder and pre-decode circuit
FI102426B (fi) * 1997-03-14 1998-11-30 Nokia Telecommunications Oy Menetelmä muistin toteuttamiseksi
US5946318A (en) * 1997-03-21 1999-08-31 International Business Machines Corporation Method and apparatus for processing and packetizing data from a data stream
US5903900A (en) 1997-04-23 1999-05-11 Sun Microsystems, Inc. Method and apparatus for optimizing exact garbage collection of array nodes in a carded heap
US5920876A (en) * 1997-04-23 1999-07-06 Sun Microsystems, Inc. Performing exact garbage collection using bitmaps that identify pointer values within objects
US6473777B1 (en) 1998-10-30 2002-10-29 National Semiconductor Corporation Method for accelerating java virtual machine bytecode verification, just-in-time compilation and garbage collection by using a dedicated co-processor
US6385113B1 (en) * 1999-04-30 2002-05-07 Madrone Solutions, Inc Method for operating an integrated circuit having a sleep mode
US6751583B1 (en) * 1999-10-29 2004-06-15 Vast Systems Technology Corporation Hardware and software co-simulation including simulating a target processor using binary translation
US6574711B2 (en) * 1999-12-27 2003-06-03 Matsushita Electric Industrial Co., Ltd. Semiconductor integrated circuit
US6804681B2 (en) 2001-05-08 2004-10-12 Sun Microsystems, Inc. Identifying and tracking object references in a java programming environment
US6895579B2 (en) * 2001-07-31 2005-05-17 Intel Corporation Method and apparatus for maintaining exception reporting for register promotion
US20040184470A1 (en) * 2003-03-18 2004-09-23 Airspan Networks Inc. System and method for data routing
US7454555B2 (en) * 2003-06-12 2008-11-18 Rambus Inc. Apparatus and method including a memory device having multiple sets of memory banks with duplicated data emulating a fast access time, fixed latency memory device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10301836A (ja) * 1997-04-23 1998-11-13 Sun Microsyst Inc 分岐データ構造を使用した厳密なガーベッジ収集を最適化する方法および装置
JPH113269A (ja) * 1997-04-23 1999-01-06 Sun Microsyst Inc スタックの内容をサブスタックに分離することによる正確なガーベイジ・コレクションを補助するシステムと方法
US20010010071A1 (en) * 1997-08-18 2001-07-26 Vlot Marnix C. Stack oriented data processing device
JP2001290644A (ja) * 2000-03-10 2001-10-19 Texas Instr Inc <Ti> マイクロプロセッサを有するディジタル・システム及びそのディジタル・システムを動作させる方法

Also Published As

Publication number Publication date
US20080209149A1 (en) 2008-08-28
CN100517269C (zh) 2009-07-22
US8473722B2 (en) 2013-06-25
CN1816802A (zh) 2006-08-09
WO2005003960A2 (de) 2005-01-13
HK1092236A1 (en) 2007-02-02
WO2005003960A3 (de) 2005-09-29
DE10329680A1 (de) 2005-02-10
DE502004011642D1 (de) 2010-10-21
KR20060052771A (ko) 2006-05-19
EP1639475A2 (de) 2006-03-29
EP1639475B1 (de) 2010-09-08
KR101116989B1 (ko) 2012-03-14
ATE480824T1 (de) 2010-09-15
JP2009514043A (ja) 2009-04-02

Similar Documents

Publication Publication Date Title
JP4763598B2 (ja) プロセッサおよびデバイス
US9952972B2 (en) Iterator register for structured memory
US5560003A (en) System and hardware module for incremental real time garbage collection and memory management
US5819304A (en) Random access memory assembly
US5274811A (en) Method for quickly acquiring and using very long traces of mixed system and user memory references
EP0912942B1 (en) Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits
CN101233489B (zh) 自适应进程分派的方法和系统
US7036118B1 (en) System for executing computer programs on a limited-memory computing machine
US20120216015A1 (en) System and method to concurrently execute a plurality of object oriented platform independent programs by utilizing memory accessible by both a processor and a co-processor
US6865736B2 (en) Static cache
JP2009514043A5 (ja)
EP0777177A1 (en) A method for object-oriented programming using dynamic interfaces
EP0169018A2 (en) Computer memory system
CN110325969A (zh) 多阶段垃圾收集器
US20080235460A1 (en) Apparatus and method for information processing enabling fast access to program
Mayer The architecture of the Burroughs B5000: 20 years later and still ahead of the times?
CN103140834A (zh) 用于填充存储器区域的处理器支持
US20100223433A1 (en) Configurable object graph traversal with redirection for garbage collection
EP0101718B1 (en) Computer with automatic mapping of memory contents into machine registers
Yang et al. A RISC-V On-chip Operating System Based on Rust
Entrup et al. Architecture of the Linux kernel
Gurevich The M-Machine operating system
Groote et al. Computer Organization
Goddard Division of labor in embedded systems
van Hamersveld The Design of a Microprocessor with an Object Oriented Architecture

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100510

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100721

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100728

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101029

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20101029

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110413

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110418

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110609

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

Free format text: PAYMENT UNTIL: 20140617

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees