JP2009514043A - 正確なポインタ識別のためのプロセッサアーキテクチャ - Google Patents

正確なポインタ識別のためのプロセッサアーキテクチャ Download PDF

Info

Publication number
JP2009514043A
JP2009514043A JP2006516089A JP2006516089A JP2009514043A JP 2009514043 A JP2009514043 A JP 2009514043A JP 2006516089 A JP2006516089 A JP 2006516089A JP 2006516089 A JP2006516089 A JP 2006516089A JP 2009514043 A JP2009514043 A JP 2009514043A
Authority
JP
Japan
Prior art keywords
pointer
processor
processor architecture
stack
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
JP2006516089A
Other languages
English (en)
Other versions
JP2009514043A5 (ja
JP4763598B2 (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

Abstract

本発明はオブジェクトベースのプロセッサアーキテクチャに関し、メモリ内やプロセッサレジスタ内でポインタやデータを互いに厳密に分離することによって、正確なポインタ識別を行うものである。メモリへのアクセスは、オブジェクトを参照するポインタを介して独占的に実行される。オブジェクトはポインタやデータのための分離したエリアや、2つのエリアの長さを表わすための属性フィールドを含んでいる。ポインタレジスタ内のポインタとオブジェクトのポインタエリア内のポインタの両者は、それらが参照するオブジェクトのアドレスを直接的に含んでいる。提案されるプロセッサアーキテクチャは、ハードウェアにおいて全体的に、或いは部分的に実行される自動ガーベッジコレクションの統合を認める。リアルタイムケーパブルなガーベッジコレクションは、ハードウェアのサポートを通じて特に効果的に実行される。

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 (20)

  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項に係るプロセッサアーキテクチャが実装されたプロセッサ。
  19. 請求項1から16までのいずれか1項に係るプロセッサアーキテクチャが実装されたメインプロセッサ(1)と、自動ガーベッジコレクションを実行し、効率的な同期のために前記メインプロセッサ(1)に密結合するコプロセッサ(2)とを持つデバイス。
  20. 請求項1から17までのいずれか1項に係るプロセッサアーキテクチャの埋め込みシステムのための使用。
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 true JP2009514043A (ja) 2009-04-02
JP2009514043A5 JP2009514043A5 (ja) 2010-12-16
JP4763598B2 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011081790A (ja) * 2009-09-30 2011-04-21 Intel Corp レジスタ拡張を使用した中央処理装置のメタデータの管理およびそのインプリメント

Families Citing this family (15)

* 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
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> マイクロプロセッサを有するディジタル・システム及びそのディジタル・システムを動作させる方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011081790A (ja) * 2009-09-30 2011-04-21 Intel Corp レジスタ拡張を使用した中央処理装置のメタデータの管理およびそのインプリメント

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
JP4763598B2 (ja) 2011-08-31
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

Similar Documents

Publication Publication Date Title
Nethercote et al. How to shadow every byte of memory used by a program
US9952972B2 (en) Iterator register for structured memory
JP4763598B2 (ja) プロセッサおよびデバイス
US5274811A (en) Method for quickly acquiring and using very long traces of mixed system and user memory references
US5560003A (en) System and hardware module for incremental real time garbage collection and memory management
EP0912942B1 (en) Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits
US6651132B1 (en) System and method for emulating the operation of a translation look-aside buffer
Shaw Empirical analysis of a Lisp system
AU2019223883B2 (en) Trace recording by logging influxes to a lower-layer cache based on entries in an upper-layer cache
EP0169005A2 (en) Computer system enabling automatic memory management operations
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
JP2009514043A5 (ja)
US4989137A (en) Computer memory system
EP3756099A1 (en) Logging cache influxes by request to a higher-level cache
CN114667508B (zh) 为加速器取回数据的方法和系统
Mayer The architecture of the Burroughs B5000: 20 years later and still ahead of the times?
CA1160351A (en) Virtual memory terminal
US5283878A (en) Method and apparatus for encoding data types for object identification
Rodchenko et al. Type information elimination from objects on architectures with tagged pointers support
EP0101718B1 (en) Computer with automatic mapping of memory contents into machine registers
Alvarez et al. Main Memory Management on Relational Database Systems
Chubb Linux, Locking and Lots of Processors
Entrup et al. Architecture of the Linux kernel
Coburn Providing fast and safe access to next-generation, non-volatile memories

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