JP2007513437A - メモリ管理に対する動的なパフォーマンスモニタリングベースのアプローチ - Google Patents

メモリ管理に対する動的なパフォーマンスモニタリングベースのアプローチ Download PDF

Info

Publication number
JP2007513437A
JP2007513437A JP2006542904A JP2006542904A JP2007513437A JP 2007513437 A JP2007513437 A JP 2007513437A JP 2006542904 A JP2006542904 A JP 2006542904A JP 2006542904 A JP2006542904 A JP 2006542904A JP 2007513437 A JP2007513437 A JP 2007513437A
Authority
JP
Japan
Prior art keywords
memory
collection
performance
product
area
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
JP2006542904A
Other languages
English (en)
Other versions
JP4528307B2 (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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2007513437A publication Critical patent/JP2007513437A/ja
Application granted granted Critical
Publication of JP4528307B2 publication Critical patent/JP4528307B2/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • 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
    • 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
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System (AREA)

Abstract

1つのプロセッサシステムにおけるメモリ管理を最適化するための技術が記載される。その技術は、1チップパフォーマンスモニタリングを含む複数のプロセッサ上及び1つの外部パフォーマンスモニタが1つのプロセッサに結合されたシステム上に実装され得る。1つのパフォーマンスモニタリングユニット(PMU)を含むプロセッサが例である。PMUは、トランスレーション・ルックアサイド・バッファ(TLB)ミスにおけるデータだけでなく、リード及びライトキャッシュミスにおけるデータを記憶してよい。PMUからのデータは、1つのメモリヒープ内のいずれのメモリ領域が不良なメモリ領域、すなわち多くのメモリ問題又はストールを示す領域であるかを決定する。不良なメモリ領域が見つかると、ガーベッジコレクションルーチンのようなメモリマネージャは、ヒープ内のオブジェクトのレイアウトを改善することによってミューテータパフォーマンスだけでなくメモリパフォーマンスを効果的に最適化する。このようにして、メモリマネージメントルーチンは、動的及びリアルタイムなメモリパフォーマンスデータに基づいてフォーカスされ得る。

Description

本開示は広く、プロセッサベースの1つのシステムにおけるメモリ管理に関し、特に、メモリ管理を最適化するための装置及び技術に関する。
マイクロプロセッサのスピードとメモリパフォーマンスとの間に、よく知られたパフォーマンスギャップが存在する。マイクロプロセッサのクロックスピードは2、3年毎に倍増する一方で、メモリスピードはほとんど向上しない。1つのマイクロプロセッサは、GHzクロックスピードで動作し得るが、当該マイクロプロセッサによって使用されるランダムアクセスメモリ(RAM)は、少なくとも桁違いに遅いクロックスピードを持つ。消費者は、そのパフォーマンスギャップが、ハードドライブ及びCD−ROMストレージのようなマスストレージメモリに影響するだけでなく、ギャップがRAM及びキャッシュのような高速なメモリにも影響すること直感的に理解し得る。さらに、そのパフォーマンスギャップは、クロックスピードだけでなく、遅延問題及びメモリストールに由来する。
コンピュータシステムは、パフォーマンスギャップに対処するために複数のメモリレベルを使用する。それぞれのレベルはレジスタにより近く、レジスタに低減された待ち時間を提供する。レベル1メモリは、比較的小さく極めて高速なメモリであり、典型的には、低レベル命令及びデータを記憶するマイクロプロセッサチップ上に設けられる。レベル2キャッシュメモリは、マイクロプロセッサ上にさらに設けられる、1つのより大きいメモリである。さらなる複数のレベルのキャッシュメモリもまた可能である。これらのメモリは、典型的にはRAMより極めて小さいが、極めて高速である。
不幸なことに、レベル1及びレベル2キャッシュメモリは、RAMからのメモリを待っている待ち時間問題及びメモリストールに悩まされる。より大きいキャッシュメモリは、例えば、より大きいリード及びライト待ち時間、より大きいデータ・トランスレーション・ルックアサイド・バッファ(DLTB)ミス、及びより大きいキャッシュミス情報を受ける。DTLBは1つのキャッシュに結合され、キャッシュのようなより高レベルのメモリにデータをロケーティングすることを支援するために使用される。
メモリパフォーマンスを改善するための種々の技術が開発されている。実例は、データプリフェッチング、マルチスレッディングコード、動的命令スケジューリング、投機的コード実行、及びキャッシュを意識したデータ配置を含む。これらの解決方法はメモリ待ち時間問題に対処しようとする。他の解決方法はメモリ割り当て問題に対処しようとする。例えば、ガーベッジコレクションアルゴリズムは、ヒープ内の使用されていないメモリ領域を回収し、既存のメモリオブジェクトをより効率的な方法で組織化すべくデザインされた。より重要なことに、それらは使用されていないメモリの回収を管理することからプログラマを解放する。
いくつかのガーベッジコレクション技術、例えばコピーガーベッジコレクション、マークアンドスウィープガーベッジコレクション、世代別ガーベッジコレクション、及びスライディングコンパクションが存在する。スライディングコンパクションはポピュラーなガーベッジコレクション技術であり、ライブメモリオブジェクトがメモリヒープ内の複数のデッドスペースにわたってリライトされ、アロケーション順序を維持する。その技術は、C#又はJava(登録商標)で記述されたようなオブジェクト指向アプリケーション、サーバベース環境において使用されるいくつかの.Netフレームワーク(ワシントン州レッドモンドのマイクロソフト社によって最初に開発された)のような複数のフレームワークに特に有用である。
ガーベッジコレクションスキームは、到達不可能な、したがって再利用可能なエリアを求めてメモリヒープ領域を検索する。オブジェクトがアロケートされ得る場所を制限することによってメモリを断片化するガーベッジコレクタは、オブジェクトアロケーション回数に悪影響を与え、より多いDTLBミスをもたらし得る。管理されたヒープ内のライブオブジェクトは互いに近くに運ばれるので、実行中のコードセットをサポートするために必要なDTLBエントリの数は、スライディングコンパクションを用いて低減される。スライディングコンパクションの有用な特性は、オブジェクトがスライディングコンパクションが実行される前に元々配置された空間的順序を撹乱することがなく、したがって空間的順序を維持しつつ、介在するデッドスペースを取り除くことができる。したがって、インプレースな圧縮により空間的局所性が実際に改善される。より少ないDTLBミスによりより少ないCPUストール がもたらされ、コードスピードが高められる。そのうえ、デッドスペースの低減によりキャッシュミスが低減され得る。
そのパフォーマンス上の利点にもかかわらず、スライディングコンパクションは、いくつかの他のガーベッジコレクションルーチンに比較してかなり不経済であり、ガーベッジコレクションの全てのフェーズにおける著しい空間及び時間オーバーヘッドを課す。これらの問題は、巨大なヒープサイズで悪化させられる。インクリメンタルスライディングコンパクション、すなわち与えられたガーベッジコレクションサイクルの間にヒープの一部だけをスライディングすることでさえ、多くのメモリ領域が、管理される前に多くのコレクションサイクルを待たなければならないので、問題のエリアに十分速やかに到達することができない。
結局、メモリ待ち時間及びストールは、現在のメモリ管理技術に重荷を課す。ソフトウェアコードがメモリ管理に費やす時間は、その技術を問わず大きい。問題の多いメモリ領域を特定することはコードが実行される度になされる必要があり、これらの問題の多い領域内のメモリスペースの回収は、大きなヒープについては特に、効率的なコード実装にとって余りに不正確である。
メモリパフォーマンスモニタを有する中央演算装置(CPU)及びメモリコントローラのブロック図を示す。
図1のメモリパフォーマンスモニタをより詳細に示す。
メモリ管理最適化の一例のフロー図を示す。
2つの不良な領域を持つメモリヒープを示す。
図4の1つの不良な領域の最適化の一例を示す。
図4の他の1つの不良な領域の最適化の一例を示す。
不良な領域の最適化後の図4のメモリヒープを示す。
他の1つの不良な領域の最適化後の図4のメモリヒープを示す。
コード実行の一例のフロー図を示す。
種々の技術が、1つのプロセッサシステム内のメモリ管理を最適化するために記載される。メモリ管理によって成し遂げられる成果に焦点をあてることによって、アプリケーションコードの実行、すなわち、プロセッサシステム上で実行するJava(登録商標)及び.Net環境のような動的に管理されたランタイム環境におけるミューテータが改善され得る。その技術は、プロセッサ、又はハードウェアモニタリングを用いることによってパフォーマンスをモニタリングすることが可能なプロセッサアーキテクチャ上に実装されてよい。マイクロプロセッサの実例は、カリフォルニア州サンタクララのインテル社から入手可能なPentium(登録商標)4(Precise Event Based Sampling)及びItanium(登録商標)プロセッサ(Performance Monitoring Unit)を含む。その技術は専用プロセッサ環境にも実装されてよく、ストレージ、ネットワーキング、及び組み込み用途で使用される入力/出力(I/O)プロセッサが例である。I/O用途、例えば、サーバ、ワークステーション、及びストレージサブシステムにおいて、その技術は、コード実行及びデータフローを最適化すべく1つのデバイスネットワークにわたるメモリ管理を最適化するよう実現されてよい。実例は、共にインテル社から入手可能な、i960(登録商標)RM/RN/RS I/Oプロセッサ及びXScale(登録商標)コアマイクロアーキテクチャで構築されたIOP331 I/Oプロセッサを含む。当業者は、これらのプロセッサは実例であって、記載された技術が他のプロセッサ上に実装され得ることを理解し得る。
図1は、1つのレベル2キャッシュ104及び1つのレベル1キャッシュ106を有する1つのCPUユニット102を備えるコンピュータシステム100の一例を示す。CPU102は、1つのRAM108及び1つのリードオンリーメモリ(ROM)110に、1つのメモリバス112を介して結合される。図示された例において、メモリバス112は1つのシステムバス114に結合される。代わりに、当該メモリバス112はシステムバスであってよい。当業者は、図示された構成が単なる例を目的としていることを理解するだろう。
CPU102は、全て互いに結合された、1つの独立した演算論理機構、複数のレジスタ、及びコントロールユニットを有してよい。または、示されるように、CPU102は1つの集積化されたマイクロプロセッサであってよい。CPU102は複数のレジスタブロック115を有する。ブロック106は、プロセッサスピードで動作する、1つのデータキャッシュ、1つの実行キャッシュ、及び1つの命令キャッシュを含む。レベル2キャッシュ104は、知られたキャッシュメモリであってよく、クロックサイクル毎にデータを転送する1つのキャッシュインタフェースを含んでよい。レベル2キャッシュは、CPUチップ(ボックス102)上に存在するか単独で存在して1つのCPUバスを介してそこに結合されてよい。
CPU101は、1つのデータ変換ルックアサイドバッファ(DTLB)116及び1つの命令変換ルックアサイドバッファ(ITLB)117を有する。
CPU102も、示されるようにCPUチップ上にあるかそこに結合された1つのパフォーマンスモニタリングユニット(PMU)118を有する。複数のオンチップPMUを提供する好適なマイクロプロセッサは、Pentium(登録商標)4及びItanium(登録商標)プロセッサを含む。CPU102は、パフォーマンスをモニタすることができる任意のプロセッサ又はプロセッサアーキテクチャ(例えば、1つの外部PMUを持つもの)を表してよい。
システムバス114は、1つのネットワークコントローラ120、1つのディスプレイユニットコントローラ122、1つの入力デバイス124、及び1つのデータストレージ/メモリメディア126、例えば1つのマスストレージデバイスに結合される。バス160に結合された種々のデバイスの例は知られている。図示された例において、バス106は、1つのバスブリッジ130を介して他の1つのバス128に結合される。
プロセッサ102上で実行するオペレーティングシステムは、種々のシステムのうちの1つ、例えば、WINDOWS(登録商標)95、98、2000、ME、又はXPのような、ワシントン州レッドモンドのマイクロソフト社から入手可能なWINDOWS(登録商標)ファミリのシステムのうちの1つであってよい。代わりに、オペレーティングシステムは、元々、ニュージャージ州マレーヒルのベル研究所(現ルーセントテクノロジ社ベル研究所)によって開発され、様々なソースから利用可能なUNIX(登録商標)*ファミリのシステムのうちの1つであってよい。さらに他にも、オペレーティングシステムは、LINUXオペレーティングシステムのようなオープンソースシステムであってよい。その上さらに代替のオペレーティングシステムが使用され得ることが理解されるだろう。
プロセッサ102は、PMU118からのデータに基づいて、メモリ管理コード、例えばガーベッジコレクションを実行する。当該コードは、メモリ回収及び初期のアロケーションの両方のために使用される。多くの異なるガーベッジコレクションルーチンが存在する。例えば、1つの参照カウントガーベッジコレクションプログラムは、特定のメモリ領域(例えばブロック)への参照数の経過を追い、メモリロケーションへの参照が無い場合にメモリ領域を開放する。マークアンドスウィープガーベッジコレクションプログラムは、そのとき動作している複数のスレッドのルートから到達可能な複数のオブジェクトをトレースし、到達可能な複数のオブジェクトをマークする。マークアンドスウィープガーベッジコレクションプログラムは、それから全てのオブジェクトを調べ、マークされていない(すなわち、動作しているスレッドのうちの1つのルートからもはや到達できない)複数のオブジェクトによって使用されるメモリ領域を解放する。コピーガーベッジコレクションプログラムは、利用可能なメモリヒープを2つのセクションすなわち2つの空間に分割して、ある時刻に、到達可能なこれらのオブジェクトを、現在使用中の空間("From Space")から現在使用中でない空間("To Space")に、(アプリケーションスレッドのルートから推移的に)移動する。アプリケーションスレッドは、満杯になるまで、"To Space"内にオブジェクトをアロケートする。このとき、コピーガーベッジコレクションプログラムは、それから2つの空間の役割を逆転することによって、"From Space"を回収する。すなわち、旧"From Space"が新"To Space"になり、旧"To Space"が新"From Space"になる。
さらに代替として、世代別ガーベッジコレクションプログラムは、最近のメモリアロケーションの大部分がなされたメモリヒープのセクションにフォーカスする。それは、フォーカスエリア内にある、フォーカスエリア外から到達可能なこれらの複数のオブジェクトを、1つの新たなエリアに移動する。フォーカスエリア外から到達可能な複数のオブジェクトの経過を追うことを目的として、世代別ガーベッジコレクションプログラムは、1つのストアバッファ形式の1つの書き込みバリア及び1つのログを使用してよい。書き込みバリアは、全ての書き込みをチェックして、フォーカスエリア外からの1つのオブジェクトがフォーカスエリア内の1つのオブジェクトを参照しているか否かを決定する。フォーカスエリア外の1つのオブジェクトからフォーカスエリア内の1つのオブジェクトに参照がなされている場合、この参照はログに記録される。ガーベッジコレクションプログラムは、その後メモリ回収及びリアロケーションの時にログを調べ、フォーカスエリア内のどの複数のオブジェクトが新たなエリアに移動させられるべきかを決定する。ログは、1つのカードテーブル又は1つのハッシュテーブル又は1つのシンプルなシーケンシャルバッファとして符号化されることができる。
他の一例のスライディングコンパクションルーチンは、上で概して説明されたスライディングコンパクションである。さらに、他の知られた技術は、ベルトウェイコレクション、オールデストファーストコレクション、上記の任意の数のガーベッジコレクションルーチンを組み合わせるハイブリッドコレクションを含む。オールデストファーストコレクタは、世代別コレクタの典型のような最新の代わりに、システム内の最も古い複数のオブジェクトのコレクションにフォーカスする。ベルトウェイコレクタは、1つのラウンドロビン法を用いて高デッドレートのエリアを探す。1つが発見された場合、それはコレクション動作をこのエリアにフォーカスする。コレクタは、コンカレント又はインクリメンタルであってよい。コンカレントは、それらがアプリケーションコードと並行的に動作できることを意味する。インクリメンタルは、それらが、各GCサイクルの間にデッドオブジェクトの一部だけを回収することを意味する。
従来のガーベッジコレクションルーチンと異なり、システム100は、ガーベッジコレクションにフォーカスすべく、PMU118からのデータを信頼する。図2はPMU118をより詳細に示す。PMU118はコントロールロジック150、複数のカウンタ152、及び複数のレジスタ154を有する。PMU118は、コード実行の間にわたって個別のイベントをモニタするオンチップハードウェアであってよい。複数のカウンタ152は、複数のグローバルタイムスタンプカウンタ及びDTLBミスを追跡してDTLBミスをひき起こすメモリ参照を調査する複数のDTLBカウンタのような、メモリパフォーマンスをモニタリングすることができる複数の専用プログラマブルイベントカウンタを含む。専用プログラマブルイベントカウンタは、いずれのDTLB内の複数のイベントだけでなく、レベル1及びレベル2メモリ116及び104内の複数のイベントをモニタしてよい。PMU118は、メモリバス112又はシステムバス114を介して、RAM108及び/又は複数のマスストレージメモリ内の複数のイベントをモニタするよう拡張されてよい。ネットワークシステムにおいて、PMU118は、ネットワークコントローラ120を介して、モニタされたデータを遠隔的に提供してよい。
PMU118は、任意のメモリパフォーマンスイベントをモニタしてよい。イベントの実例は、複数の命令キャッシュミス、複数のデータキャッシュミス、複数のブランチ予測ミス、複数のITLBミス、複数のDTLBミス、データ依存性による複数のストール、及びデータキャッシュライトバックを含む。
モニタされる複数のイベントは、望ましいメモリパフォーマンスイベントをインクリメンタルにモニタするよう複数のカウンタ152をコントロールする複数のイベントレジスタ154によって特定される。レジスタブロック154内のそれぞれのレジスタは、カウンタブロック152内のいくつかのカウンタをコントロールしてよい。実例だけを目的として、32ビットカウンタ並びに32ビット又は64ビットレジスタが、それぞれ使用され得る。
PMU118は、プロセッサ102に関連する全メモリシステムをモニタし、複数のコントロールレジスタ154において特定されたイベントの数をカウントする。イベントは、種々のコード命令の実行において発生することができ、キャッシュ104又はDTLBへの読み込み及び書き込み試行を含む。.Netのような環境のみならず上記のようなオブジェクト指向言語では、複数のストアドオブジェクトは、他の複数のストアドオブジェクトに関連づけられ、他のコードによって使用可能であってよい。関連づけられた複数のストアドオブジェクトは、一時的な局所性を有する。例えば、複数のオブジェクトは、即時継承内のコードによってアクセスされ得る。それによりヒープ内の空間的な局在性を望ましいものにする。PMU118は、メモリマネージャがそのような空間的局在性を実現することをアシストすべく、複数のメモリパフォーマンスイベントをモニタしてよい。PMU118は、異なる複数のメモリイベントが同時にカウントされるよう、複数のイベントを並行してモニタしてよい。
複数のPMUは、プロセッサ実装に依存する異なる方法で機能してよいが、一実装例において、PMU118は、データキャッシュ又はDTLBミス並びに命令キャッシュ又はITLBミスのようなイベントをカウントするカウンタを含む。PMU118は、特定のメモリ領域に起因するそのようなミスの数を示す履歴データを記憶するためのメモリバッファを含む。PMU118又は外部コードは、モニタされる複数のメモリ領域のサイズをコントロールしてよい。PMU118によってモニタされるデータは、個々のメモリブロックの大きさの又はより大きい複数のメモリ領域でのパフォーマンスデータであってよい。複数のメモリ領域は、例として大きさが64Kであってよい。
PMU118は、複数のイベントが生じたときに複数のイベントを特定すべくプログラムされてよい。代わりに、PMU118は、一次的にモニタリングに割り込んで、1つのメモリ領域についてのデータ量が1つの閾値に到達した場合に、モニタされたデータを出力するよう設定され得る。閾値はコードによって決定され、例えばモニタされた1つのイベントについてのバッファされた履歴データを、モニタされた他の1つイベントのバッファされた履歴データに対して比較することによって、過去のPMUモニタリング例に基づいて設定されたり、モニタリングしている間に設定されてよい。メモリイベントの閾値を持つメモリ領域を検出すると、PMU118は当該メモリ領域が1つの不良な領域であると判断する。PMU118は、モニタリングに割り込んで、後に続くメモリ管理のために当該メモリ領域についての1つの識別子を出力するようプログラムされてよい。システム100は、他にも、PMU118外のコードを通じて、PMU118からのモニタリングデータに基づいて、1つのメモリ領域が不良領域であると判断してよい。PMU118は、ストップザワールド又はコンカレントなガーベッジコレクションと共に使用されてよい。後者の場合、ガーベッジコレクタがコード、すなわちミューテータの実行と並行して動作することを可能にする。
図3は、メモリ管理を通知するためにPMU118を使用するプロセス300の一例を示す。プロセス300は、システム100上に記憶されて実行されるソフトウェアによって実装されてよい。示される例において、プロセス300は、ブロック302−314を参照して説明される、種々のソフトウェアルーチン又はステップを実行する。
PMU118は、レベル1キャッシュ106、レベル2キャッシュ104、DTLB116、及びITLB117における複数のメモリオペレーションをモニタして、キャッシュミス又はDTLBミスであるかにかかわらず、それぞれの高い待ち時間ロードミスについての実効アドレスを特定する実効アドレスブロック302に、モニタされた情報を送る。高レイテンシミスは、データがメインメモリ又はRAMからフェッチされることを要求する。キャッシュロードミスした実効アドレスは、キャッシュ内にない1つのメモリオブジェクトである。ブロック302は、ロードミス実効アドレスを、それぞれのメモリ領域についての頻度数を保持するレコードデータブロック304に供給する。カウンタ152又はRAM108又はマスストレージのような他の記憶メディアがブロック304を実装してよい。複数のメモリ領域は、任意の望ましい粒度、例えば64Kを有してよい。ブロック304は、不良領域が特定されてメモリ管理コードが実行されるようにPMU118からの十分なデータサンプルが提供されているか否かを判断する判断ブロック306に制御を渡す。
十分なサンプルが取得されていない場合、取得されたPMUサンプルの全数を記憶するインクリメントブロック308に制御が進む。制御は、メモリパフォーマンスデータのさらなるモニタリングのためにPMU118に戻る。十分なデータサンプルが集められたことをブロック306が判断した場合、例えば望ましいサンプルカウント値がブロック308で記憶されている場合、ブロック304からの履歴データが、メモリヒープについて不良領域を特定するブロック310に提供される。ブロック310は、例えば90%の特定されたキャッシュ又はDTLBミスが発生したメモリヒープの(複数の)領域を特定して、当該(複数の)領域を不良としてマークしてよい。ブロック310は、各セクションについて閾ミス位置が集中しているところを決定する前にメモリヒープを複数のセクションに分けることによって、複数の不良領域を特定してよい。不良領域の粒度は、ブロック310によって設定されてよく、元々モニタされたメモリ領域のサイズと同じであってよいし異なってよい。すなわち、1つの不良領域は複数のミス位置を持つ多数のメモリ領域を含んでよい。
特定された複数の不良領域は、ヒープ最適化のためにメモリ管理ブロック312に提供される。ブロック312は、上記説明されたいずれかのカーベッジコレクションのような、1以上のガーベッジコレクションルーチンを実行してよい。そのルーチンは、不良領域だけ又は不良及び非不良領域の両方に対して実行されてよい。例えば、メモリ管理ブロック312は、デフォルトのガーベッジコレクションアルゴリズムをメモリヒープの非不良メモリ領域に適用し、スライディングコンパクションを不良領域、すなわち、過度に高いメモリストールを示す領域だけに適用してよい。このように、プロセス300は、第1のメモリ管理ルーチンを1つの不良領域又は複数の不良領域に適用し、異なる第2のメモリ管理ルーチンを1つの非不良領域又は複数の非不良領域に適用する。これらの例のそれぞれにおいて、スライディングコンパクションガーベッジコレクタは、最も問題の多いヒープエリアに導かれる。ここで、どのインフラストラクチャがスライディングコンパクションをサポートするために使用され得るかを説明する。
ブロック312でのガーベッジコレクションのマークフェーズの間、全てのライブオブジェクトがマークされる。また、後のフェーズのスライディングコンパクションをサポートすることを目的として、コンパクション領域を指すヒープ内の複数のメモリオブジェクト、例えば不良領域も記録される。結果として、スライディングコンパクションの間、全てのコンパクションブロックが処理されて、それらのメモリオブジェクトは互いに密集化される。メモリマネージャ312の実行の後、1つのブロック314はPMUデータコレクションを同期させる。そのような同期化は、PMUデータのさらなるコレクションが現在のヒープ構成に関連するよう行われる。この同期化の一部として以前のサンプルは破棄される。
ブロック302、304、306、308、及び310は切り離して説明されたが、それらはPMU118によって実行され得る。
図4は、複数のメモリ領域402−420を形成するメモリヒープ400の一例を示す。メモリ領域の数は、単に例示を目的として提供される。複数のメモリ領域404及び416は、ヒープ400についてある閾数又は割合のロードミスに遭遇したからである。ブロック310によって不良領域(斜線のシェーディングで示される)として特定されている。メモリ領域404の状態の一例が、より詳細に示される。メモリオブジェクト422、424、及び426は、メモリ領域404において、デッドスペース428及び430によって間を開けて配置さる。メモリ領域416は、デッドスペース436によって隔てられた2つのメモリオブジェクト432及び434を有する。両方のメモリオブジェクトは、デッドスペース438によってメモリ領域416の先端から間隔があけられる。
不良領域404及び416は、それらの領域だけに、領域402、406、408、410、412、414、418、及び420に影響を及ぼすことなくガーベッジコレクションを実行するブロック312のものと特定される。図5は、スライディングコンパクションが実行された後の、結果として得られる最適化されたメモリ領域404'を示す。図6は、スライディングコンパクションが実行された後の、結果として得られる最適化されたメモリ領域416'を示す。結果として得られるメモリヒープ400(図7)は、全てのメモリ領域が最適化されていることを示す(すなわち、斜線シェーディングがない)。スライディングコンパクションが説明されたが、他のガーベッジコレクションルーチンが不良領域404及び416に対して実行されてよい。後に続くメモリパフォーマンスを改善するためのそのような不良領域だけに対するスライディングコンパクションの選択的及び意図的な適用が、このようにして達成される。代わりに、特定の不良領域404及び416に対して実行される独特のガーベッジコレクションルーチン(例えばスライディングコンパクション)とともに又はなしで、ガーベッジコレクションがヒープ400の全体にわたって実行されてよい。さらに、代替の実施形態において、図8のブロック領域404''及び416''に示されるように、不良領域はメモリストレージから一時的にブロックされてよい。
図9は、システム100においてコードを実行するプロセス500の一例を示す。プロセス500は、システム100において記憶されて実行されるソフトウェアによって実装されてよい。示された例において、プロセス500は、ブロック502−510を参照して説明される種々のソフトウェアルーチン又はステップを実行する。
ブロック502は、ミューテータとも呼ばれるアプリケーションコードをCPU102上で実行する。コードの言語例は、C#及びJAVA(登録商標)を含むが、コードはこれらの言語に限定されない。コードは、.Netフレームワーク下で記述されてもよい。コードは、1つのオペレーティングシステム、又はオペレーティングシステム上で実行される1つのアプリケーションであってよい。
ブロック502は、実行しているコードのために新たな1つのメモリオブジェクトをメモリマネージャがシステム100のヒープにアロケートすることができるか否かを判断する判断ブロック504に制御を渡す。答えがyesであるとブロック504が判断した場合、制御は、追加のコードが実行されるか否かを判断する判断ブロック506に渡される。答えがnoであるとブロック504が判断した場合、最近発見された複数の不良領域の、これらの領域に対する上述のスライディングコンパクション技術を用いたメモリパフォーマンスの最適化に加えて、一定のヒープメモリ回収を実行するブロック508に、制御が渡される。失われたオブジェクトをガーベッジコレクションがアロケートすることができないことをブロック504が判断した場合、ブロック310と同様の、不良領域を特定するブロック508に制御が渡される。ブロック508は、ブロック312と同様のメモリ管理/最適化ブロック510に制御を渡す。
上の技術は、キャッシュメモリを最適化することに関連して説明された。その技術は、パフォーマンスモニタがメモリパフォーマンスを計測するメモリストレージのいずれのレベルを最適化するために使用されてよい。さらに、その技術は、周辺デバイス又のような遠隔に格納されたメモリデバイス又はネットワーク又はサーバアプリケーション内のメモリデバイスを最適化すべく使用されてよい。
本発明の教示に従って構築されたいくつかの装置及び技術が本明細書に説明されたが、本特許の適用範囲はそれらに限定されない。それどくろか、本特許は、添付された請求項の範囲内に文言的に又は均等論の下に適正に含まれるその発明の教示の全ての実施形態を含む。

Claims (21)

  1. 記憶された複数の命令を有する装置可読メディアを備える製品であって、前記複数の命令は、装置によって実行された場合に、前記装置に、
    複数のメモリ領域を有する1つのメモリヒープについてのパフォーマンスデータを1つのパフォーマンスモニタから取得する手順と、
    前記パフォーマンスデータに基づいて、前記複数のメモリ領域のうちの少なくとも1つが不良領域であるか否かを判断する手順と、
    前記複数のメモリ領域のうちの少なくとも1つが不良領域である旨の判断に応答して、1つのメモリ管理ルーチンを実行して前記メモリヒープの当該領域を最適化する手順と
    を実行させる製品。
  2. 前記パフォーマンスデータは、少なくとも1つのメモリパフォーマンスイベントを表す
    請求項1に記載の製品。
  3. 前記パフォーマンスデータは、キャッシュミス、トランスレーション・ルックアサイド・バッファ・ミス、ブランチ予測ミス、データ依存によるストール、及びデータキャッシュライトバックを含むグループから選択される
    請求項1に記載の製品。
  4. 前記パフォーマンスモニタは1つのパフォーマンスモニタリングユニット(PMU)である
    請求項1に記載の製品。
  5. 前記装置によって実行された場合に、前記装置に、
    少なくとも1つの不良領域に前記メモリ管理ルーチンを実行する手順と、
    少なくとも1つの非不良領域にセカンダリメモリ管理ルーチンを実行する手順と
    を実行させる複数の命令をさらに有し、
    前記セカンダリメモリ管理ルーチンは前記メモリ管理ルーチンと異なる
    請求項1に記載の製品。
  6. 前記装置によって実行された場合に、前記装置に、
    少なくとも1つの不良領域に1つのガーベッジコレクションルーチンを実行する手順
    を実行させる複数の命令をさらに有する
    請求項1に記載の製品。
  7. 前記ガーベッジコレクションルーチンは、参照カウントコレクション、コピーコレクション、世代別コレクション、マークアンドスウィープコレクション、ベルトウェイコレクション、オールデストファーストコレクション、スライドコンパクション、又はハイブリッドコレクションを含むグループから選択される
    請求項6に記載の製品。
  8. 前記装置によって実行された場合に、前記装置に、
    前記メモリ領域についての前記パフォーマンスデータを取得する前に、前記メモリ領域のサイズ粒度を定める手順
    を実行させる複数の命令をさらに有する
    請求項1に記載の製品。
  9. 前記パフォーマンスデータは1つのパフォーマンスモニタリングユニットから取得され、
    前記製品は、
    前記装置によって実行された場合に、前記パフォーマンスモニタリングユニットに、
    前記パフォーマンスデータの発生数をカウントする手順
    を実行させる複数の命令をさらに有する
    請求項1に記載の製品。
  10. 前記装置によって実行された場合に、前記パフォーマンスモニタリングユニットに、
    前記パフォーマンスデータの発生数の前記カウントを閾値と比較する手順
    を実行させる複数の命令をさらに有し、
    前記カウントが前記閾値を上回る場合に、不良領域が存在すると決定される
    請求項9に記載の製品。
  11. 前記装置によって実行された場合に、前記装置に、
    前記カウントを前記閾値と比較する前に、十分な数のデータサンプルが取得されたか否かを判断する手順
    を実行させる複数の命令をさらに有する
    請求項10に記載の製品。
  12. 前記装置によって実行された場合に、前記装置に、
    追加のデータサンプルが取得される旨の判断に応答して、追加のデータサンプルを前記メモリヒープから集める手順
    を実行させる複数の命令をさらに有する
    請求項10に記載の製品。
  13. 前記装置によって実行された場合に、前記装置に、
    不良領域をメモリストレージからブロックする手順
    を実行させる複数の命令をさらに有する
    請求項1に記載の製品。
  14. 複数のメモリ領域を有する1つのメモリヒープから複数のロードミスメモリアドレスを特定する段階と、
    前記特定されたロードミスメモリアドレスの頻度数を保持する段階と、
    前記複数のメモリ領域のいずれかがロードミスメモリアドレスの閾値を含むか否かを判断する段階と、
    前記複数のメモリ領域の少なくとも1つがロードミスメモリアドレスの閾値を含む旨の判断に応答して前記メモリヒープを最適化する段階と
    を備える方法。
  15. 前記メモリヒープを最適化する段階は、ロードミスメモリアドレスの前記閾値を含む前記メモリ領域をブロックする段階を有する
    請求項14に記載の方法。
  16. 前記メモリヒープを最適化する段階は、ロードミスメモリアドレスの前記閾値を含む前記メモリ領域のうちの少なくとも1つにガーベッジコレクションを実行する段階を有する
    請求項14に記載の方法。
  17. 前記ガーベッジコレクション最適化は、参照カウントコレクション、コピーコレクション、世代別コレクション、マークアンドスウィープコレクション、ベルトウェイコレクション、オールデストファーストコレクション、スライドコンパクション、又はハイブリッドコレクションを含むグループから選択される
    請求項16に記載の方法。
  18. ロードミスメモリアドレスの前記閾値を含む少なくとも1つのメモリ領域に第1メモリ管理ルーチンを実行する段階と、
    ロードミスメモリアドレスの前記閾値を含まない少なくとも1つのメモリ領域に、前記第1メモリ管理ルーチンと異なる第2メモリ管理ルーチンを実行する段階と
    をさらに備える請求項14に記載の方法。
  19. 1つのメモリヒープのパフォーマンスをモニタし、前記メモリヒープ内の複数のメモリ領域におけるパフォーマンスデータを集めるハードウェアであって、前記集められたパフォーマンスデータに基づいて、前記複数のメモリ領域のいずれが不良領域であるかを判断することができるハードウェアと、
    前記複数の不良領域を最適化するための1つのメモリマネージャと
    を備えるシステム。
  20. 前記ハードウェアは、1つのパフォーマンスモニタリングユニットを有し、
    前記メモリマネージャは1つのガーベッジコレクタである
    請求項19に記載のシステム。
  21. 前記ガーベッジコレクタは、参照カウントコレクション、コピーコレクション、世代別コレクション、マークアンドスウィープコレクション、ベルトウェイコレクション、オールデストファーストコレクション、スライドコンパクション、又はハイブリッドコレクションを含むグループから選択される1つのガーベッジコレクション最適化を実行する
    請求項20に記載のシステム。
JP2006542904A 2003-12-31 2004-12-24 メモリ管理に対する動的なパフォーマンスモニタリングベースのアプローチ Expired - Fee Related JP4528307B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/749,425 US7490117B2 (en) 2003-12-31 2003-12-31 Dynamic performance monitoring-based approach to memory management
PCT/US2004/043349 WO2005066791A1 (en) 2003-12-31 2004-12-24 Dynamic performance monitoring-based approach to memory management

Publications (2)

Publication Number Publication Date
JP2007513437A true JP2007513437A (ja) 2007-05-24
JP4528307B2 JP4528307B2 (ja) 2010-08-18

Family

ID=34749298

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006542904A Expired - Fee Related JP4528307B2 (ja) 2003-12-31 2004-12-24 メモリ管理に対する動的なパフォーマンスモニタリングベースのアプローチ

Country Status (5)

Country Link
US (1) US7490117B2 (ja)
EP (1) EP1702269B1 (ja)
JP (1) JP4528307B2 (ja)
CN (1) CN100549982C (ja)
WO (1) WO2005066791A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010102525A (ja) * 2008-10-24 2010-05-06 Internatl Business Mach Corp <Ibm> 頻繁に発生するイベントを推定する方法
JP2018525724A (ja) * 2015-06-29 2018-09-06 アイキャス ゲゼルシャフト ミット ベシュレンクテル ハフツングaicas GmbH メモリ管理装置を用いた自動メモリ管理
JP2020077075A (ja) * 2018-11-06 2020-05-21 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
KR20220043947A (ko) * 2020-09-28 2022-04-06 서울대학교산학협력단 서브 유닛을 갖는 가비지 컬렉션 장치 및 이를 포함하는 메모리 시스템

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7636745B1 (en) * 2004-03-12 2009-12-22 Sun Microsystems, Inc. Concurrent-marking-initiation heuristic
US7769974B2 (en) * 2004-09-10 2010-08-03 Microsoft Corporation Increasing data locality of recently accessed resources
US7200522B2 (en) * 2005-01-27 2007-04-03 International Business Machines Corporation Method, apparatus, and computer program product in a performance monitor for sampling all performance events generated by a processor
US8713524B2 (en) * 2005-04-06 2014-04-29 Microsoft Corporation Memory management configuration
US8701095B2 (en) * 2005-07-25 2014-04-15 Microsoft Corporation Add/remove memory pressure per object
US7434002B1 (en) * 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
US7581064B1 (en) 2006-04-24 2009-08-25 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP4769946B2 (ja) * 2007-02-05 2011-09-07 国立大学法人京都大学 メモリ管理方法、メモリ管理装置、及びメモリ管理プログラムが記録されている記録媒体
US8886887B2 (en) * 2007-03-15 2014-11-11 International Business Machines Corporation Uniform external and internal interfaces for delinquent memory operations to facilitate cache optimization
US7685182B2 (en) * 2007-05-08 2010-03-23 Microsoft Corporation Interleaved garbage collections
US8122439B2 (en) * 2007-08-09 2012-02-21 International Business Machines Corporation Method and computer program product for dynamically and precisely discovering deliquent memory operations
US8103706B2 (en) * 2007-10-05 2012-01-24 Microsoft Corporation Nondeferred reference-counting garbage collection using overlooking roots
US20090094301A1 (en) * 2007-10-05 2009-04-09 Microsoft Corporation Applications of overlooking root information for improving nondeferred reference-counting garbage collection
US8656411B2 (en) 2008-03-05 2014-02-18 Intel Corporation Technique for monitoring activity within an integrated circuit
TW201017421A (en) * 2008-09-24 2010-05-01 Panasonic Corp Cache memory, memory system and control method therefor
DE102008051576A1 (de) 2008-10-14 2010-04-15 Giesecke & Devrient Gmbh Speicherverwaltung in einem portablen Datenträger
US20100185703A1 (en) * 2009-01-14 2010-07-22 Tatu Ylonen Oy Ltd Lock-free hash table based write barrier buffer for large memory multiprocessor garbage collectors
US8396904B2 (en) * 2009-01-20 2013-03-12 Clausal Computing Oy Utilizing information from garbage collector in serialization of large cyclic data structures
US8280866B2 (en) 2010-04-12 2012-10-02 Clausal Computing Oy Monitoring writes using thread-local write barrier buffers and soft synchronization
CN102956238B (zh) * 2011-08-19 2016-02-10 杜比实验室特许公司 用于在音频帧序列中检测重复模式的方法及设备
WO2012119446A1 (zh) * 2011-09-20 2012-09-13 华为技术有限公司 一种内存监控方法及装置
CN102521049B (zh) * 2011-11-18 2013-07-10 清华大学 多核间内存调度方法
US20140229715A1 (en) * 2011-12-29 2014-08-14 Laura A. Knauth Apparatus and method for providing eventing ip and source data address in a statistical sampling infrastructure
US8898376B2 (en) 2012-06-04 2014-11-25 Fusion-Io, Inc. Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
US9021172B2 (en) * 2012-07-06 2015-04-28 Arm Limited Data processing apparatus and method and method for generating performance monitoring interrupt signal based on first event counter and second event counter
US8966431B2 (en) 2012-11-21 2015-02-24 International Business Machines Corporation Semiconductor timing improvement
US9043773B2 (en) * 2013-03-15 2015-05-26 Intel Corporation Identification and management of unsafe optimizations
CA2848683C (en) 2014-04-10 2022-07-05 Ibm Canada Limited - Ibm Canada Limitee Working set adjustment in a managed environment
US9747204B2 (en) 2015-12-17 2017-08-29 International Business Machines Corporation Multi-section garbage collection system including shared performance monitor register
US10248327B2 (en) * 2016-04-01 2019-04-02 SK Hynix Inc. Throttling for a memory system using a GC/HOST ratio and operating method thereof
US10346306B2 (en) * 2016-04-02 2019-07-09 Intel Corporation Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions
US10740230B2 (en) * 2016-10-20 2020-08-11 International Business Machines Corporation Heap contraction for increasing memory density in cloud environment
US10628306B2 (en) * 2017-02-01 2020-04-21 Microsoft Technology Licensing, Llc Garbage collector
US10374628B2 (en) * 2017-04-05 2019-08-06 International Business Machines Corporation In-place data compression with small working memory
US20220091961A1 (en) * 2021-12-03 2022-03-24 Intel Corporation Programmable performance monitoring unit supporting software-defined performance monitoring events
US11948018B2 (en) 2021-12-16 2024-04-02 International Business Machines Corporation Methods and systems for dynamic reconfiguring of hardware performance monitoring unit (PMU) events

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0438540A (ja) * 1990-06-05 1992-02-07 Toshiba Corp メモリ管理方式
JPH05241936A (ja) * 1992-03-03 1993-09-21 Mitsubishi Electric Corp ガーベッジコレクション処理方式及びその記憶装置
JPH10124382A (ja) * 1996-10-16 1998-05-15 Nec Corp 記憶領域管理装置
JPH11184747A (ja) * 1997-12-24 1999-07-09 Fujitsu Ltd ガベージコレクションシステムおよび記録媒体
JP2001034487A (ja) * 1999-07-21 2001-02-09 Matsushita Electric Ind Co Ltd プログラム実行装置、時決定装置及び時決定方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799324A (en) * 1996-05-10 1998-08-25 International Business Machines Corporation System and method for management of persistent data in a log-structured disk array
US6732357B1 (en) * 1997-12-12 2004-05-04 International Business Machines Corporation Determining and compensating for temporal overhead in trace record generation and processing
US6622300B1 (en) 1999-04-21 2003-09-16 Hewlett-Packard Development Company, L.P. Dynamic optimization of computer programs using code-rewriting kernal module
US6629170B1 (en) 1999-11-08 2003-09-30 International Business Machines Corporation Method and apparatus for a byte lane selectable performance monitor bus
US6393522B1 (en) 2000-01-27 2002-05-21 Ati International Srl Method and apparatus for cache memory management
US7174354B2 (en) * 2002-07-31 2007-02-06 Bea Systems, Inc. System and method for garbage collection in a computer system, which uses reinforcement learning to adjust the allocation of memory space, calculate a reward, and use the reward to determine further actions to be taken on the memory space

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0438540A (ja) * 1990-06-05 1992-02-07 Toshiba Corp メモリ管理方式
JPH05241936A (ja) * 1992-03-03 1993-09-21 Mitsubishi Electric Corp ガーベッジコレクション処理方式及びその記憶装置
JPH10124382A (ja) * 1996-10-16 1998-05-15 Nec Corp 記憶領域管理装置
JPH11184747A (ja) * 1997-12-24 1999-07-09 Fujitsu Ltd ガベージコレクションシステムおよび記録媒体
JP2001034487A (ja) * 1999-07-21 2001-02-09 Matsushita Electric Ind Co Ltd プログラム実行装置、時決定装置及び時決定方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010102525A (ja) * 2008-10-24 2010-05-06 Internatl Business Mach Corp <Ibm> 頻繁に発生するイベントを推定する方法
JP2018525724A (ja) * 2015-06-29 2018-09-06 アイキャス ゲゼルシャフト ミット ベシュレンクテル ハフツングaicas GmbH メモリ管理装置を用いた自動メモリ管理
US11176031B2 (en) 2015-06-29 2021-11-16 Aicas Gmbh Automatic memory management using a memory management unit
JP2020077075A (ja) * 2018-11-06 2020-05-21 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
JP7013360B2 (ja) 2018-11-06 2022-01-31 株式会社東芝 情報処理装置、情報処理方法、およびプログラム
KR20220043947A (ko) * 2020-09-28 2022-04-06 서울대학교산학협력단 서브 유닛을 갖는 가비지 컬렉션 장치 및 이를 포함하는 메모리 시스템
KR102477775B1 (ko) 2020-09-28 2022-12-16 서울대학교산학협력단 서브 유닛을 갖는 가비지 컬렉션 장치 및 이를 포함하는 메모리 시스템

Also Published As

Publication number Publication date
EP1702269A1 (en) 2006-09-20
JP4528307B2 (ja) 2010-08-18
EP1702269B1 (en) 2013-09-04
CN100549982C (zh) 2009-10-14
WO2005066791A1 (en) 2005-07-21
CN1902598A (zh) 2007-01-24
US7490117B2 (en) 2009-02-10
US20060143421A1 (en) 2006-06-29

Similar Documents

Publication Publication Date Title
JP4528307B2 (ja) メモリ管理に対する動的なパフォーマンスモニタリングベースのアプローチ
Ebrahimi et al. Techniques for bandwidth-efficient prefetching of linked data structures in hybrid prefetching systems
US8191049B2 (en) Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7496908B2 (en) Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7114036B2 (en) Method and apparatus for autonomically moving cache entries to dedicated storage when false cache line sharing is detected
US8443341B2 (en) System for and method of capturing application characteristics data from a computer system and modeling target system
US7392370B2 (en) Method and apparatus for autonomically initiating measurement of secondary metrics based on hardware counter values for primary metrics
US5930807A (en) Apparatus and method for fast filtering read and write barrier operations in garbage collection system
US7093081B2 (en) Method and apparatus for identifying false cache line sharing
US10140216B2 (en) Measuring address translation latency
US7181599B2 (en) Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure
JP2006092532A (ja) 最近アクセスしたリソースのデータ局所性の増加
US20080235495A1 (en) Method and Apparatus for Counting Instruction and Memory Location Ranges
US20050155022A1 (en) Method and apparatus for counting instruction execution and data accesses to identify hot spots
US20050120337A1 (en) Memory trace buffer
US20050155018A1 (en) Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values
US7735072B1 (en) Method and apparatus for profiling computer program execution
US7676511B2 (en) Method and apparatus for reducing object pre-tenuring overhead in a generational garbage collector
Sair et al. A decoupled predictor-directed stream prefetching architecture
McCloskey et al. Staccato: A parallel and concurrent real-time compacting garbage collector for multiprocessors
US8108628B2 (en) Processor instruction used to perform a matrix test to generate a memory-related trap
WO2008058292A2 (en) System for and method of capturing application characteristics from a computer system and modeling target system
이효정 An Efficient Garbage Collection in Java Virtual Machine via Swap I/O Optimization
Konsowa et al. Dynamic Resources for Multicore Processor using Register File Protection
Shidal Exploiting the Weak Generational Hypothesis for Write Reduction and Object Recycling

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091020

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100119

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100219

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100226

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100319

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100419

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

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

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

Free format text: PAYMENT UNTIL: 20130611

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