JP4528307B2 - Dynamic performance monitoring based approach to memory management - Google Patents
Dynamic performance monitoring based approach to memory management Download PDFInfo
- Publication number
- JP4528307B2 JP4528307B2 JP2006542904A JP2006542904A JP4528307B2 JP 4528307 B2 JP4528307 B2 JP 4528307B2 JP 2006542904 A JP2006542904 A JP 2006542904A JP 2006542904 A JP2006542904 A JP 2006542904A JP 4528307 B2 JP4528307 B2 JP 4528307B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- collection
- area
- performance
- heap
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0269—Incremental or concurrent garbage collection, e.g. in real-time systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
- Y10S707/99957—Garbage 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)
Description
本開示は広く、プロセッサベースの1つのシステムにおけるメモリ管理に関し、特に、メモリ管理を最適化するための装置及び技術に関する。 The present disclosure relates generally to memory management in one processor-based system, and more particularly to an apparatus and technique for optimizing memory management.
マイクロプロセッサのスピードとメモリパフォーマンスとの間に、よく知られたパフォーマンスギャップが存在する。マイクロプロセッサのクロックスピードは2、3年毎に倍増する一方で、メモリスピードはほとんど向上しない。1つのマイクロプロセッサは、GHzクロックスピードで動作し得るが、当該マイクロプロセッサによって使用されるランダムアクセスメモリ(RAM)は、少なくとも桁違いに遅いクロックスピードを持つ。消費者は、そのパフォーマンスギャップが、ハードドライブ及びCD−ROMストレージのようなマスストレージメモリに影響するだけでなく、ギャップがRAM及びキャッシュのような高速なメモリにも影響すること直感的に理解し得る。さらに、そのパフォーマンスギャップは、クロックスピードだけでなく、遅延問題及びメモリストールに由来する。 There is a well-known performance gap between microprocessor speed and memory performance. While the microprocessor clock speed doubles every few years, the memory speed is hardly improved. One microprocessor can operate at GHz clock speeds, but the random access memory (RAM) used by the microprocessor has a clock speed that is at least orders of magnitude slower. Consumers intuitively understand that the performance gap not only affects mass storage memory such as hard drives and CD-ROM storage, but also affects high-speed memory such as RAM and cache. obtain. Furthermore, the performance gap stems from delay problems and memory stalls as well as clock speeds.
コンピュータシステムは、パフォーマンスギャップに対処するために複数のメモリレベルを使用する。それぞれのレベルはレジスタにより近く、レジスタに低減された待ち時間を提供する。レベル1メモリは、比較的小さく極めて高速なメモリであり、典型的には、低レベル命令及びデータを記憶するマイクロプロセッサチップ上に設けられる。レベル2キャッシュメモリは、マイクロプロセッサ上にさらに設けられる、1つのより大きいメモリである。さらなる複数のレベルのキャッシュメモリもまた可能である。これらのメモリは、典型的にはRAMより極めて小さいが、極めて高速である。 Computer systems use multiple memory levels to address performance gaps. Each level is closer to the register and provides a reduced latency to the register. Level 1 memory is a relatively small and extremely fast memory and is typically provided on a microprocessor chip that stores low level instructions and data. The level 2 cache memory is one larger memory further provided on the microprocessor. Further multiple levels of cache memory are also possible. These memories are typically much smaller than RAM, but are very fast.
不幸なことに、レベル1及びレベル2キャッシュメモリは、RAMからのメモリを待っている待ち時間問題及びメモリストールに悩まされる。より大きいキャッシュメモリは、例えば、より大きいリード及びライト待ち時間、より大きいデータ・トランスレーション・ルックアサイド・バッファ(DLTB)ミス、及びより大きいキャッシュミス情報を受ける。DTLBは1つのキャッシュに結合され、キャッシュのようなより高レベルのメモリにデータをロケーティングすることを支援するために使用される。 Unfortunately, Level 1 and Level 2 cache memories suffer from latency problems and memory stalls waiting for memory from RAM. The larger cache memory receives, for example, larger read and write latency, larger data translation lookaside buffer (DLTB) misses, and larger cache miss information. DTLB is combined into one cache and used to help locate data in higher level memory such as cache.
メモリパフォーマンスを改善するための種々の技術が開発されている。実例は、データプリフェッチング、マルチスレッディングコード、動的命令スケジューリング、投機的コード実行、及びキャッシュを意識したデータ配置を含む。これらの解決方法はメモリ待ち時間問題に対処しようとする。他の解決方法はメモリ割り当て問題に対処しようとする。例えば、ガーベッジコレクションアルゴリズムは、ヒープ内の使用されていないメモリ領域を回収し、既存のメモリオブジェクトをより効率的な方法で組織化すべくデザインされた。より重要なことに、それらは使用されていないメモリの回収を管理することからプログラマを解放する。 Various techniques have been developed to improve memory performance. Examples include data prefetching, multithreading code, dynamic instruction scheduling, speculative code execution, and cache aware data placement. These solutions attempt to address the memory latency problem. Other solutions attempt to address the memory allocation problem. For example, the garbage collection algorithm was designed to reclaim unused memory areas in the heap and organize existing memory objects in a more efficient manner. More importantly, they free the programmer from managing the collection of unused memory.
いくつかのガーベッジコレクション技術、例えばコピーガーベッジコレクション、マークアンドスウィープガーベッジコレクション、世代別ガーベッジコレクション、及びスライディングコンパクションが存在する。スライディングコンパクションはポピュラーなガーベッジコレクション技術であり、ライブメモリオブジェクトがメモリヒープ内の複数のデッドスペースにわたってリライトされ、アロケーション順序を維持する。その技術は、C#又はJava(登録商標)で記述されたようなオブジェクト指向アプリケーション、サーバベース環境において使用されるいくつかの.Netフレームワーク(ワシントン州レッドモンドのマイクロソフト社によって最初に開発された)のような複数のフレームワークに特に有用である。 There are several garbage collection techniques, such as copy garbage collection, mark and sweep garbage collection, generational garbage collection, and sliding compaction. Sliding compaction is a popular garbage collection technique in which live memory objects are rewritten across multiple dead spaces in the memory heap to maintain the allocation order. The technology includes several .NET applications used in object-oriented applications, server-based environments such as those described in C # or Java. It is particularly useful for multiple frameworks such as the Net framework (originally developed by Microsoft Corporation in Redmond, Washington).
ガーベッジコレクションスキームは、到達不可能な、したがって再利用可能なエリアを求めてメモリヒープ領域を検索する。オブジェクトがアロケートされ得る場所を制限することによってメモリを断片化するガーベッジコレクタは、オブジェクトアロケーション回数に悪影響を与え、より多いDTLBミスをもたらし得る。管理されたヒープ内のライブオブジェクトは互いに近くに運ばれるので、実行中のコードセットをサポートするために必要なDTLBエントリの数は、スライディングコンパクションを用いて低減される。スライディングコンパクションの有用な特性は、オブジェクトがスライディングコンパクションが実行される前に元々配置された空間的順序を撹乱することがなく、したがって空間的順序を維持しつつ、介在するデッドスペースを取り除くことができる。したがって、インプレースな圧縮により空間的局所性が実際に改善される。より少ないDTLBミスによりより少ないCPUストール がもたらされ、コードスピードが高められる。そのうえ、デッドスペースの低減によりキャッシュミスが低減され得る。 The garbage collection scheme searches the memory heap area for areas that are unreachable and therefore reusable. Garbage collectors that fragment memory by limiting where objects can be allocated can adversely affect object allocation times and lead to more DTLB misses. Since live objects in the managed heap are carried close together, the number of DTLB entries required to support the running code set is reduced using sliding compaction. A useful property of sliding compaction is that it does not disturb the spatial order in which the object was originally placed before sliding compaction was performed, thus eliminating intervening dead space while maintaining the spatial order. . Thus, in-place compression actually improves spatial locality. Less DTLB misses result in less CPU stalls and increased code speed. Moreover, cache misses can be reduced by reducing dead space.
そのパフォーマンス上の利点にもかかわらず、スライディングコンパクションは、いくつかの他のガーベッジコレクションルーチンに比較してかなり不経済であり、ガーベッジコレクションの全てのフェーズにおける著しい空間及び時間オーバーヘッドを課す。これらの問題は、巨大なヒープサイズで悪化させられる。インクリメンタルスライディングコンパクション、すなわち与えられたガーベッジコレクションサイクルの間にヒープの一部だけをスライディングすることでさえ、多くのメモリ領域が、管理される前に多くのコレクションサイクルを待たなければならないので、問題のエリアに十分速やかに到達することができない。 Despite its performance advantages, sliding compaction is quite uneconomical compared to some other garbage collection routines and imposes significant space and time overhead in all phases of garbage collection. These problems are exacerbated by the large heap size. Even with incremental sliding compaction, i.e. sliding only a portion of the heap during a given garbage collection cycle, many memory areas must wait for many collection cycles before being managed, which is problematic. The area cannot be reached quickly enough.
結局、メモリ待ち時間及びストールは、現在のメモリ管理技術に重荷を課す。ソフトウェアコードがメモリ管理に費やす時間は、その技術を問わず大きい。問題の多いメモリ領域を特定することはコードが実行される度になされる必要があり、これらの問題の多い領域内のメモリスペースの回収は、大きなヒープについては特に、効率的なコード実装にとって余りに不正確である。 Ultimately, memory latency and stalls place a burden on current memory management technology. Software code spends a lot of time managing memory, regardless of the technology. Identifying problematic memory areas must be done each time code is executed, and reclaiming memory space within these problematic areas is too much for efficient code implementation, especially for large heaps. Inaccurate.
種々の技術が、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プロセッサを含む。当業者は、これらのプロセッサは実例であって、記載された技術が他のプロセッサ上に実装され得ることを理解し得る。 Various techniques are described for optimizing memory management within one processor system. By focusing on the results achieved by memory management, application code execution, i.e., Java and. Mutators in dynamically managed runtime environments such as the Net environment can be improved. The technique may be implemented on a processor or processor architecture capable of monitoring performance by using hardware monitoring. Examples of microprocessors include Pentium (R) 4 (Precise Event Based Sampling) and Itanium (R) processor (Performance Monitoring Unit) available from Intel Corporation of Santa Clara, California. The technology may also be implemented in a dedicated processor environment, examples being input / output (I / O) processors used in storage, networking, and embedded applications. In I / O applications, such as servers, workstations, and storage subsystems, the technology may be implemented to optimize memory management across one device network to optimize code execution and data flow. Examples include an I960® RM / RN / RS I / O processor and an IScale 331 I / O processor built on the XScale® core microarchitecture, both available from Intel. One skilled in the art can appreciate that these processors are illustrative and that the described techniques can be implemented on other processors.
図1は、1つのレベル2キャッシュ104及び1つのレベル1キャッシュ106を有する1つのCPUユニット102を備えるコンピュータシステム100の一例を示す。CPU102は、1つのRAM108及び1つのリードオンリーメモリ(ROM)110に、1つのメモリバス112を介して結合される。図示された例において、メモリバス112は1つのシステムバス114に結合される。代わりに、当該メモリバス112はシステムバスであってよい。当業者は、図示された構成が単なる例を目的としていることを理解するだろう。
FIG. 1 shows an example of a computer system 100 that includes one
CPU102は、全て互いに結合された、1つの独立した演算論理機構、複数のレジスタ、及びコントロールユニットを有してよい。または、示されるように、CPU102は1つの集積化されたマイクロプロセッサであってよい。CPU102は複数のレジスタブロック115を有する。ブロック106は、プロセッサスピードで動作する、1つのデータキャッシュ、1つの実行キャッシュ、及び1つの命令キャッシュを含む。レベル2キャッシュ104は、知られたキャッシュメモリであってよく、クロックサイクル毎にデータを転送する1つのキャッシュインタフェースを含んでよい。レベル2キャッシュは、CPUチップ(ボックス102)上に存在するか単独で存在して1つのCPUバスを介してそこに結合されてよい。
The
CPU101は、1つのデータ変換ルックアサイドバッファ(DTLB)116及び1つの命令変換ルックアサイドバッファ(ITLB)117を有する。 The CPU 101 has one data conversion lookaside buffer (DTLB) 116 and one instruction conversion lookaside buffer (ITLB) 117.
CPU102も、示されるようにCPUチップ上にあるかそこに結合された1つのパフォーマンスモニタリングユニット(PMU)118を有する。複数のオンチップPMUを提供する好適なマイクロプロセッサは、Pentium(登録商標)4及びItanium(登録商標)プロセッサを含む。CPU102は、パフォーマンスをモニタすることができる任意のプロセッサ又はプロセッサアーキテクチャ(例えば、1つの外部PMUを持つもの)を表してよい。
The
システムバス114は、1つのネットワークコントローラ120、1つのディスプレイユニットコントローラ122、1つの入力デバイス124、及び1つのデータストレージ/メモリメディア126、例えば1つのマスストレージデバイスに結合される。バス160に結合された種々のデバイスの例は知られている。図示された例において、バス106は、1つのバスブリッジ130を介して他の1つのバス128に結合される。
The
プロセッサ102上で実行するオペレーティングシステムは、種々のシステムのうちの1つ、例えば、WINDOWS(登録商標)95、98、2000、ME、又はXPのような、ワシントン州レッドモンドのマイクロソフト社から入手可能なWINDOWS(登録商標)ファミリのシステムのうちの1つであってよい。代わりに、オペレーティングシステムは、元々、ニュージャージ州マレーヒルのベル研究所(現ルーセントテクノロジ社ベル研究所)によって開発され、様々なソースから利用可能なUNIX(登録商標)*ファミリのシステムのうちの1つであってよい。さらに他にも、オペレーティングシステムは、LINUXオペレーティングシステムのようなオープンソースシステムであってよい。その上さらに代替のオペレーティングシステムが使用され得ることが理解されるだろう。
The operating system running on
プロセッサ102は、PMU118からのデータに基づいて、メモリ管理コード、例えばガーベッジコレクションを実行する。当該コードは、メモリ回収及び初期のアロケーションの両方のために使用される。多くの異なるガーベッジコレクションルーチンが存在する。例えば、1つの参照カウントガーベッジコレクションプログラムは、特定のメモリ領域(例えばブロック)への参照数の経過を追い、メモリロケーションへの参照が無い場合にメモリ領域を開放する。マークアンドスウィープガーベッジコレクションプログラムは、そのとき動作している複数のスレッドのルートから到達可能な複数のオブジェクトをトレースし、到達可能な複数のオブジェクトをマークする。マークアンドスウィープガーベッジコレクションプログラムは、それから全てのオブジェクトを調べ、マークされていない(すなわち、動作しているスレッドのうちの1つのルートからもはや到達できない)複数のオブジェクトによって使用されるメモリ領域を解放する。コピーガーベッジコレクションプログラムは、利用可能なメモリヒープを2つのセクションすなわち2つの空間に分割して、ある時刻に、到達可能なこれらのオブジェクトを、現在使用中の空間("From Space")から現在使用中でない空間("To Space")に、(アプリケーションスレッドのルートから推移的に)移動する。アプリケーションスレッドは、満杯になるまで、"To Space"内にオブジェクトをアロケートする。このとき、コピーガーベッジコレクションプログラムは、それから2つの空間の役割を逆転することによって、"From Space"を回収する。すなわち、旧"From Space"が新"To Space"になり、旧"To Space"が新"From Space"になる。
The
さらに代替として、世代別ガーベッジコレクションプログラムは、最近のメモリアロケーションの大部分がなされたメモリヒープのセクションにフォーカスする。それは、フォーカスエリア内にある、フォーカスエリア外から到達可能なこれらの複数のオブジェクトを、1つの新たなエリアに移動する。フォーカスエリア外から到達可能な複数のオブジェクトの経過を追うことを目的として、世代別ガーベッジコレクションプログラムは、1つのストアバッファ形式の1つの書き込みバリア及び1つのログを使用してよい。書き込みバリアは、全ての書き込みをチェックして、フォーカスエリア外からの1つのオブジェクトがフォーカスエリア内の1つのオブジェクトを参照しているか否かを決定する。フォーカスエリア外の1つのオブジェクトからフォーカスエリア内の1つのオブジェクトに参照がなされている場合、この参照はログに記録される。ガーベッジコレクションプログラムは、その後メモリ回収及びリアロケーションの時にログを調べ、フォーカスエリア内のどの複数のオブジェクトが新たなエリアに移動させられるべきかを決定する。ログは、1つのカードテーブル又は1つのハッシュテーブル又は1つのシンプルなシーケンシャルバッファとして符号化されることができる。 As a further alternative, generational garbage collection programs focus on sections of the memory heap where most of the recent memory allocations have been made. It moves these objects within the focus area, reachable from outside the focus area, to a new area. For the purpose of keeping track of multiple objects reachable from outside the focus area, a generational garbage collection program may use one write barrier and one log in one store buffer format. The write barrier checks all writes and determines whether one object from outside the focus area refers to one object in the focus area. If a reference is made from one object outside the focus area to one object within the focus area, this reference is recorded in the log. The garbage collection program then examines the log during memory collection and rearlocation to determine which objects in the focus area should be moved to the new area. The log can be encoded as one card table or one hash table or one simple sequential buffer.
他の一例のスライディングコンパクションルーチンは、上で概して説明されたスライディングコンパクションである。さらに、他の知られた技術は、ベルトウェイコレクション、オールデストファーストコレクション、上記の任意の数のガーベッジコレクションルーチンを組み合わせるハイブリッドコレクションを含む。オールデストファーストコレクタは、世代別コレクタの典型のような最新の代わりに、システム内の最も古い複数のオブジェクトのコレクションにフォーカスする。ベルトウェイコレクタは、1つのラウンドロビン法を用いて高デッドレートのエリアを探す。1つが発見された場合、それはコレクション動作をこのエリアにフォーカスする。コレクタは、コンカレント又はインクリメンタルであってよい。コンカレントは、それらがアプリケーションコードと並行的に動作できることを意味する。インクリメンタルは、それらが、各GCサイクルの間にデッドオブジェクトの一部だけを回収することを意味する。 Another example sliding compaction routine is the sliding compaction generally described above. In addition, other known techniques include beltway collections, oldest first collections, and hybrid collections that combine any number of the above garbage collection routines. The oldest first collector focuses on the oldest collection of objects in the system instead of the latest as typical of generational collectors. The beltway collector looks for high dead rate areas using a single round robin method. If one is found, it focuses the collection operation on this area. The collector may be concurrent or incremental. Concurrent means that they can run in parallel with application code. Incremental means that they collect only part of the dead object during each GC cycle.
従来のガーベッジコレクションルーチンと異なり、システム100は、ガーベッジコレクションにフォーカスすべく、PMU118からのデータを信頼する。図2はPMU118をより詳細に示す。PMU118はコントロールロジック150、複数のカウンタ152、及び複数のレジスタ154を有する。PMU118は、コード実行の間にわたって個別のイベントをモニタするオンチップハードウェアであってよい。複数のカウンタ152は、複数のグローバルタイムスタンプカウンタ及びDTLBミスを追跡してDTLBミスをひき起こすメモリ参照を調査する複数のDTLBカウンタのような、メモリパフォーマンスをモニタリングすることができる複数の専用プログラマブルイベントカウンタを含む。専用プログラマブルイベントカウンタは、いずれのDTLB内の複数のイベントだけでなく、レベル1及びレベル2メモリ116及び104内の複数のイベントをモニタしてよい。PMU118は、メモリバス112又はシステムバス114を介して、RAM108及び/又は複数のマスストレージメモリ内の複数のイベントをモニタするよう拡張されてよい。ネットワークシステムにおいて、PMU118は、ネットワークコントローラ120を介して、モニタされたデータを遠隔的に提供してよい。
Unlike conventional garbage collection routines, the system 100 relies on data from the
PMU118は、任意のメモリパフォーマンスイベントをモニタしてよい。イベントの実例は、複数の命令キャッシュミス、複数のデータキャッシュミス、複数のブランチ予測ミス、複数のITLBミス、複数のDTLBミス、データ依存性による複数のストール、及びデータキャッシュライトバックを含む。
モニタされる複数のイベントは、望ましいメモリパフォーマンスイベントをインクリメンタルにモニタするよう複数のカウンタ152をコントロールする複数のイベントレジスタ154によって特定される。レジスタブロック154内のそれぞれのレジスタは、カウンタブロック152内のいくつかのカウンタをコントロールしてよい。実例だけを目的として、32ビットカウンタ並びに32ビット又は64ビットレジスタが、それぞれ使用され得る。
The events to be monitored are identified by a plurality of event registers 154 that control a plurality of
PMU118は、プロセッサ102に関連する全メモリシステムをモニタし、複数のコントロールレジスタ154において特定されたイベントの数をカウントする。イベントは、種々のコード命令の実行において発生することができ、キャッシュ104又はDTLBへの読み込み及び書き込み試行を含む。.Netのような環境のみならず上記のようなオブジェクト指向言語では、複数のストアドオブジェクトは、他の複数のストアドオブジェクトに関連づけられ、他のコードによって使用可能であってよい。関連づけられた複数のストアドオブジェクトは、一時的な局所性を有する。例えば、複数のオブジェクトは、即時継承内のコードによってアクセスされ得る。それによりヒープ内の空間的な局在性を望ましいものにする。PMU118は、メモリマネージャがそのような空間的局在性を実現することをアシストすべく、複数のメモリパフォーマンスイベントをモニタしてよい。PMU118は、異なる複数のメモリイベントが同時にカウントされるよう、複数のイベントを並行してモニタしてよい。
The
複数のPMUは、プロセッサ実装に依存する異なる方法で機能してよいが、一実装例において、PMU118は、データキャッシュ又はDTLBミス並びに命令キャッシュ又はITLBミスのようなイベントをカウントするカウンタを含む。PMU118は、特定のメモリ領域に起因するそのようなミスの数を示す履歴データを記憶するためのメモリバッファを含む。PMU118又は外部コードは、モニタされる複数のメモリ領域のサイズをコントロールしてよい。PMU118によってモニタされるデータは、個々のメモリブロックの大きさの又はより大きい複数のメモリ領域でのパフォーマンスデータであってよい。複数のメモリ領域は、例として大きさが64Kであってよい。
Although multiple PMUs may function in different ways depending on the processor implementation, in one implementation, the
PMU118は、複数のイベントが生じたときに複数のイベントを特定すべくプログラムされてよい。代わりに、PMU118は、一次的にモニタリングに割り込んで、1つのメモリ領域についてのデータ量が1つの閾値に到達した場合に、モニタされたデータを出力するよう設定され得る。閾値はコードによって決定され、例えばモニタされた1つのイベントについてのバッファされた履歴データを、モニタされた他の1つイベントのバッファされた履歴データに対して比較することによって、過去のPMUモニタリング例に基づいて設定されたり、モニタリングしている間に設定されてよい。メモリイベントの閾値を持つメモリ領域を検出すると、PMU118は当該メモリ領域が1つの不良な領域であると判断する。PMU118は、モニタリングに割り込んで、後に続くメモリ管理のために当該メモリ領域についての1つの識別子を出力するようプログラムされてよい。システム100は、他にも、PMU118外のコードを通じて、PMU118からのモニタリングデータに基づいて、1つのメモリ領域が不良領域であると判断してよい。PMU118は、ストップザワールド又はコンカレントなガーベッジコレクションと共に使用されてよい。後者の場合、ガーベッジコレクタがコード、すなわちミューテータの実行と並行して動作することを可能にする。
The
図3は、メモリ管理を通知するためにPMU118を使用するプロセス300の一例を示す。プロセス300は、システム100上に記憶されて実行されるソフトウェアによって実装されてよい。示される例において、プロセス300は、ブロック302−314を参照して説明される、種々のソフトウェアルーチン又はステップを実行する。
FIG. 3 shows an example of a
PMU118は、レベル1キャッシュ106、レベル2キャッシュ104、DTLB116、及びITLB117における複数のメモリオペレーションをモニタして、キャッシュミス又はDTLBミスであるかにかかわらず、それぞれの高い待ち時間ロードミスについての実効アドレスを特定する実効アドレスブロック302に、モニタされた情報を送る。高レイテンシミスは、データがメインメモリ又はRAMからフェッチされることを要求する。キャッシュロードミスした実効アドレスは、キャッシュ内にない1つのメモリオブジェクトである。ブロック302は、ロードミス実効アドレスを、それぞれのメモリ領域についての頻度数を保持するレコードデータブロック304に供給する。カウンタ152又はRAM108又はマスストレージのような他の記憶メディアがブロック304を実装してよい。複数のメモリ領域は、任意の望ましい粒度、例えば64Kを有してよい。ブロック304は、不良領域が特定されてメモリ管理コードが実行されるようにPMU118からの十分なデータサンプルが提供されているか否かを判断する判断ブロック306に制御を渡す。
The
十分なサンプルが取得されていない場合、取得されたPMUサンプルの全数を記憶するインクリメントブロック308に制御が進む。制御は、メモリパフォーマンスデータのさらなるモニタリングのためにPMU118に戻る。十分なデータサンプルが集められたことをブロック306が判断した場合、例えば望ましいサンプルカウント値がブロック308で記憶されている場合、ブロック304からの履歴データが、メモリヒープについて不良領域を特定するブロック310に提供される。ブロック310は、例えば90%の特定されたキャッシュ又はDTLBミスが発生したメモリヒープの(複数の)領域を特定して、当該(複数の)領域を不良としてマークしてよい。ブロック310は、各セクションについて閾ミス位置が集中しているところを決定する前にメモリヒープを複数のセクションに分けることによって、複数の不良領域を特定してよい。不良領域の粒度は、ブロック310によって設定されてよく、元々モニタされたメモリ領域のサイズと同じであってよいし異なってよい。すなわち、1つの不良領域は複数のミス位置を持つ多数のメモリ領域を含んでよい。
If not enough samples have been acquired, control proceeds to an
特定された複数の不良領域は、ヒープ最適化のためにメモリ管理ブロック312に提供される。ブロック312は、上記説明されたいずれかのカーベッジコレクションのような、1以上のガーベッジコレクションルーチンを実行してよい。そのルーチンは、不良領域だけ又は不良及び非不良領域の両方に対して実行されてよい。例えば、メモリ管理ブロック312は、デフォルトのガーベッジコレクションアルゴリズムをメモリヒープの非不良メモリ領域に適用し、スライディングコンパクションを不良領域、すなわち、過度に高いメモリストールを示す領域だけに適用してよい。このように、プロセス300は、第1のメモリ管理ルーチンを1つの不良領域又は複数の不良領域に適用し、異なる第2のメモリ管理ルーチンを1つの非不良領域又は複数の非不良領域に適用する。これらの例のそれぞれにおいて、スライディングコンパクションガーベッジコレクタは、最も問題の多いヒープエリアに導かれる。ここで、どのインフラストラクチャがスライディングコンパクションをサポートするために使用され得るかを説明する。
The identified defective areas are provided to the
ブロック312でのガーベッジコレクションのマークフェーズの間、全てのライブオブジェクトがマークされる。また、後のフェーズのスライディングコンパクションをサポートすることを目的として、コンパクション領域を指すヒープ内の複数のメモリオブジェクト、例えば不良領域も記録される。結果として、スライディングコンパクションの間、全てのコンパクションブロックが処理されて、それらのメモリオブジェクトは互いに密集化される。メモリマネージャ312の実行の後、1つのブロック314はPMUデータコレクションを同期させる。そのような同期化は、PMUデータのさらなるコレクションが現在のヒープ構成に関連するよう行われる。この同期化の一部として以前のサンプルは破棄される。
During the mark phase of garbage collection at
ブロック302、304、306、308、及び310は切り離して説明されたが、それらはPMU118によって実行され得る。
Although
図4は、複数のメモリ領域402−420を形成するメモリヒープ400の一例を示す。メモリ領域の数は、単に例示を目的として提供される。複数のメモリ領域404及び416は、ヒープ400についてある閾数又は割合のロードミスに遭遇したからである。ブロック310によって不良領域(斜線のシェーディングで示される)として特定されている。メモリ領域404の状態の一例が、より詳細に示される。メモリオブジェクト422、424、及び426は、メモリ領域404において、デッドスペース428及び430によって間を開けて配置さる。メモリ領域416は、デッドスペース436によって隔てられた2つのメモリオブジェクト432及び434を有する。両方のメモリオブジェクトは、デッドスペース438によってメモリ領域416の先端から間隔があけられる。
FIG. 4 shows an example of a
不良領域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を参照して説明される種々のソフトウェアルーチン又はステップを実行する。
FIG. 9 shows an example of a
ブロック502は、ミューテータとも呼ばれるアプリケーションコードをCPU102上で実行する。コードの言語例は、C#及びJAVA(登録商標)を含むが、コードはこれらの言語に限定されない。コードは、.Netフレームワーク下で記述されてもよい。コードは、1つのオペレーティングシステム、又はオペレーティングシステム上で実行される1つのアプリケーションであってよい。
Block 502 executes application code, also called a mutator, on
ブロック502は、実行しているコードのために新たな1つのメモリオブジェクトをメモリマネージャがシステム100のヒープにアロケートすることができるか否かを判断する判断ブロック504に制御を渡す。答えがyesであるとブロック504が判断した場合、制御は、追加のコードが実行されるか否かを判断する判断ブロック506に渡される。答えがnoであるとブロック504が判断した場合、最近発見された複数の不良領域の、これらの領域に対する上述のスライディングコンパクション技術を用いたメモリパフォーマンスの最適化に加えて、一定のヒープメモリ回収を実行するブロック508に、制御が渡される。失われたオブジェクトをガーベッジコレクションがアロケートすることができないことをブロック504が判断した場合、ブロック310と同様の、不良領域を特定するブロック508に制御が渡される。ブロック508は、ブロック312と同様のメモリ管理/最適化ブロック510に制御を渡す。
Block 502 passes control to a
上の技術は、キャッシュメモリを最適化することに関連して説明された。その技術は、パフォーマンスモニタがメモリパフォーマンスを計測するメモリストレージのいずれのレベルを最適化するために使用されてよい。さらに、その技術は、周辺デバイス又のような遠隔に格納されたメモリデバイス又はネットワーク又はサーバアプリケーション内のメモリデバイスを最適化すべく使用されてよい。 The above techniques have been described in connection with optimizing cache memory. The technique may be used to optimize any level of memory storage for which the performance monitor measures memory performance. In addition, the technology may be used to optimize memory devices in peripheral devices or remotely stored memory devices or network or server applications.
本発明の教示に従って構築されたいくつかの装置及び技術が本明細書に説明されたが、本特許の適用範囲はそれらに限定されない。それどくろか、本特許は、添付された請求項の範囲内に文言的に又は均等論の下に適正に含まれるその発明の教示の全ての実施形態を含む。 Although several devices and techniques constructed in accordance with the teachings of the present invention have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent includes all embodiments of the teachings of the invention that are properly included within the scope of the appended claims, either literally or under the doctrine of equivalents.
Claims (18)
前記パフォーマンスデータに基づいて、前記複数のメモリ領域のうちの少なくとも1つが不良領域であるか否かを判断する手順と、
前記複数のメモリ領域のうちの少なくとも1つが不良領域である旨の判断に応答して、1つのメモリ管理ルーチンとして1つのガーベッジコレクションルーチンを実行して前記メモリヒープの当該少なくとも1つの不良領域を最適化する手順と
をコンピュータに実行させるためのプログラム。A step of obtaining performance data for one memory heap having a memory region of more than from one performance monitor,
A procedure for determining whether at least one of the plurality of memory areas is a defective area based on the performance data;
In response to determining that at least one of the plurality of memory areas is a defective area, one garbage management routine is executed as one memory management routine to optimize the at least one defective area in the memory heap. A program for causing a computer to execute the procedure to be converted.
請求項1に記載のプログラム。The program of claim 1, wherein the performance data represents at least one memory performance event.
請求項1に記載のプログラム。The program of claim 1, wherein the performance data is selected from the group comprising cache misses, translation lookaside buffer misses, branch prediction misses, data dependent stalls, and data cache writebacks.
請求項1から請求項3のいずれか1つに記載のプログラム。The program according to any one of claims 1 to 3, wherein the performance monitor is one performance monitoring unit (PMU).
少なくとも1つの不良領域に前記メモリ管理ルーチンを実行する手順と、
少なくとも1つの非不良領域にセカンダリメモリ管理ルーチンを実行する手順と
を実行させ、
前記セカンダリメモリ管理ルーチンは前記メモリ管理ルーチンと異なる
請求項1に記載のプログラム。 Before Symbol computer,
Executing the memory management routine on at least one defective area;
To execute a procedure for executing a secondary memory management routine on at least one non-defective region,
The program according to claim 1, wherein the secondary memory management routine is different from the memory management routine.
請求項1から請求項5のいずれか1つに記載のプログラム。The garbage collection routine, reference counting collection, copy collection, generational collection, mark-and-sweep collection, claim from claim 1 selected Beltway collection, oldest first collection, from the group comprising slide compaction or a hybrid collection The program according to any one of 5 above.
前記複数のメモリ領域についての前記パフォーマンスデータを取得する前に、前記複数のメモリ領域のサイズ粒度を定める手順
を実行させる
請求項1から請求項6のいずれか1つに記載のプログラム。 Before Symbol computer,
Before acquiring the performance data for said plurality of memory areas, according the plurality of memory region size granularity <br/> claim 1 procedure Ru is run to determine the in any one of claims 6 Program .
前記コンピュータによって実行された場合に、前記パフォーマンスモニタリングユニットに、
前記パフォーマンスデータの発生数をカウントする手順
を実行させる
請求項1から請求項7のいずれか1つに記載のプログラム。The performance data is obtained from one performance monitoring unit,
When executed by the computer , the performance monitoring unit
The program according to any one of claims 1 to 7, wherein a procedure for counting the number of occurrences of the performance data is executed.
前記パフォーマンスデータの発生数の前記カウントを閾値と比較する手順
を実行させ、
前記カウントが前記閾値を上回る場合に、不良領域が存在すると決定される
請求項8に記載のプログラム。 When executed by the computer , the performance monitoring unit
Executing the procedure of comparing the count of occurrences of the performance data with a threshold;
The program according to claim 8 , wherein when the count exceeds the threshold value, it is determined that a defective area exists.
を前記コンピュータに実行させる
請求項9に記載のプログラム。The pre SL count before comparing with the threshold value, the program according to instructions on how to determine whether the number or more data samples predetermined is obtained <br/> claim 9, Ru is executed on the computer.
を前記コンピュータに実行させる
請求項10に記載のプログラム。 11. The program according to claim 10, which causes the computer to execute a procedure of collecting additional data samples from the memory heap in response to a determination that additional data samples are acquired.
を前記コンピュータに実行させる
請求項1から請求項11のいずれか1つに記載のプログラム。 The program according to any one of claims 11 steps to block in order to a bad area unallocated area claims 1 to be executed by the computer.
前記特定されたロードミスメモリアドレスの頻度数もしくは頻度割合を保持する段階と、
前記複数のメモリ領域のいずれかにおいてロードミスメモリアドレスの前記頻度数もしくは前記頻度割合が閾値に到達したか否かを判断する段階と、
前記複数のメモリ領域の少なくとも1つにおいてロードミスメモリアドレスの前記頻度数もしくは前記頻度割合が前記閾値に到達した旨の判断に応答して前記メモリヒープの前記閾値に到達したメモリ領域を最適化する段階と
を備え、
前記メモリヒープの前記閾値に到達したメモリ領域を最適化する段階は、ロードミスメモリアドレスの前記頻度数もしくは前記頻度割合が前記閾値に到達した前記メモリ領域のうちの少なくとも1つにガーベッジコレクションを実行する段階を有する方法。Identifying a plurality of load miss memory addresses from one memory heap having a plurality of memory areas;
Holding the frequency number or frequency ratio of the identified load miss memory address;
Determining whether the frequency number or the frequency ratio of load miss memory addresses has reached a threshold in any of the plurality of memory regions;
To optimize memory region in which the frequency number or the frequency ratio of load miss memory addresses has reached the threshold value of the memory heap in response to a determination to the effect that has reached the threshold value in at least one of said plurality of memory areas With steps ,
The step of optimizing a memory area that has reached the threshold value of the memory heap performs garbage collection on at least one of the memory areas in which the frequency number or frequency ratio of load miss memory addresses has reached the threshold value. A method comprising the steps of :
請求項13に記載の方法。The step of optimizing the memory area that has reached the threshold value of the memory heap includes the step of blocking the memory area in which the frequency number or the frequency ratio of the load miss memory address has reached the threshold value as an unallocated area. The method of claim 13 comprising :
請求項13または請求項14に記載の方法。The garbage collection is reference counting collection, copy collection, generational collection, mark-and-sweep collection, Beltway collection, oldest first collection, slide compaction or claim 13 or claim is selected from the group including hybrid collection, 14. The method according to 14 .
ロードミスメモリアドレスの前記頻度数もしくは前記頻度割合が前記閾値に到達していない少なくとも1つのメモリ領域に、前記第1メモリ管理ルーチンと異なる第2メモリ管理ルーチンを実行する段階と
をさらに備える請求項13から請求項15のいずれか1つに記載の方法。Executing a first memory management routine on at least one memory area where the frequency number or frequency ratio of load miss memory addresses has reached the threshold;
And executing a second memory management routine different from the first memory management routine on at least one memory area in which the frequency number or the frequency ratio of load miss memory addresses does not reach the threshold. 16. A method according to any one of claims 13 to 15 .
複数の前記不良領域を最適化するための1つのメモリマネージャと
を備え、
前記ハードウェアは、1つのパフォーマンスモニタリングユニットを有し、
前記メモリマネージャは1つのガーベッジコレクタである
システム。Hardware for monitoring the performance of one memory heap and collecting performance data in a plurality of memory areas in the memory heap, wherein any one of the plurality of memory areas is a defective area based on the collected performance data Hardware that can determine whether
And a single memory manager to optimize the defective area of the multiple,
The hardware has one performance monitoring unit,
The memory manager is a garbage collector system.
請求項17に記載のシステム。The garbage collector optimizes one garbage collection selected from the group including reference count collection, copy collection, generation collection, mark and sweep collection, beltway collection, oldest first collection, slide compaction, or hybrid collection. The system of claim 17 , wherein the system is executed.
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 JP2007513437A (en) | 2007-05-24 |
| JP4528307B2 true JP4528307B2 (en) | 2010-08-18 |
Family
ID=34749298
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2006542904A Expired - Fee Related JP4528307B2 (en) | 2003-12-31 | 2004-12-24 | Dynamic performance monitoring based approach to memory management |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US7490117B2 (en) |
| EP (1) | EP1702269B1 (en) |
| JP (1) | JP4528307B2 (en) |
| CN (1) | CN100549982C (en) |
| WO (1) | WO2005066791A1 (en) |
Families Citing this family (42)
| 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 (en) * | 2007-02-05 | 2011-09-07 | 国立大学法人京都大学 | MEMORY MANAGEMENT METHOD, MEMORY MANAGEMENT DEVICE, AND RECORDING MEDIUM CONTAINING MEMORY MANAGEMENT PROGRAM |
| 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 |
| US20090094301A1 (en) * | 2007-10-05 | 2009-04-09 | Microsoft Corporation | Applications of overlooking root information for improving nondeferred reference-counting garbage collection |
| US8103706B2 (en) * | 2007-10-05 | 2012-01-24 | Microsoft Corporation | Nondeferred reference-counting garbage collection using overlooking roots |
| 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 (en) | 2008-10-14 | 2010-04-15 | Giesecke & Devrient Gmbh | Memory management in a portable volume |
| JP5278901B2 (en) * | 2008-10-24 | 2013-09-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | How to estimate frequently occurring events |
| 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 (en) * | 2011-08-19 | 2016-02-10 | 杜比实验室特许公司 | For detecting the method and apparatus of repeat pattern in audio frame sequence |
| WO2012119446A1 (en) * | 2011-09-20 | 2012-09-13 | 华为技术有限公司 | Memory monitoring method and device |
| CN102521049B (en) * | 2011-11-18 | 2013-07-10 | 清华大学 | Method for scheduling internal memory among multiple cores |
| 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 |
| WO2014142949A1 (en) * | 2013-03-15 | 2014-09-18 | 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 |
| EP3113026B1 (en) * | 2015-06-29 | 2019-07-24 | aicas GmbH | Automatic memory management using a memory management unit |
| 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 |
| JP7013360B2 (en) * | 2018-11-06 | 2022-01-31 | 株式会社東芝 | Information processing equipment, information processing methods, and programs |
| KR102477775B1 (en) * | 2020-09-28 | 2022-12-16 | 서울대학교산학협력단 | Garbage collection device having subunit and memory system having the same |
| US20220091961A1 (en) * | 2021-12-03 | 2022-03-24 | Intel Corporation | Programmable performance monitoring unit supporting software-defined performance monitoring events |
| US12510594B2 (en) | 2021-12-10 | 2025-12-30 | Samsung Electronics Co., Ltd. | System and method of monitoring performance of an electronic device |
| 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 |
| CN119883587A (en) * | 2023-10-25 | 2025-04-25 | 华为技术有限公司 | Multithreading scheduling method, server and computer system |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0438540A (en) * | 1990-06-05 | 1992-02-07 | Toshiba Corp | Memory managing system |
| JPH05241936A (en) * | 1992-03-03 | 1993-09-21 | Mitsubishi Electric Corp | Garbage collection processing system and storage device for the system |
| 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 |
| JP3045083B2 (en) * | 1996-10-16 | 2000-05-22 | 日本電気株式会社 | Storage area management device |
| US6732357B1 (en) * | 1997-12-12 | 2004-05-04 | International Business Machines Corporation | Determining and compensating for temporal overhead in trace record generation and processing |
| JPH11184747A (en) * | 1997-12-24 | 1999-07-09 | Fujitsu Ltd | Garbage collection system and recording medium |
| US6622300B1 (en) | 1999-04-21 | 2003-09-16 | Hewlett-Packard Development Company, L.P. | Dynamic optimization of computer programs using code-rewriting kernal module |
| JP2001034487A (en) * | 1999-07-21 | 2001-02-09 | Matsushita Electric Ind Co Ltd | Program execution device, time determination device, and time determination method |
| 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 |
| US6725341B1 (en) * | 2000-06-28 | 2004-04-20 | Intel Corporation | Cache line pre-load and pre-own based on cache coherence speculation |
| US6950837B2 (en) * | 2001-06-19 | 2005-09-27 | Intel Corporation | Method for using non-temporal streaming to improve garbage collection algorithm |
| 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 |
-
2003
- 2003-12-31 US US10/749,425 patent/US7490117B2/en not_active Expired - Fee Related
-
2004
- 2004-12-24 JP JP2006542904A patent/JP4528307B2/en not_active Expired - Fee Related
- 2004-12-24 EP EP04815427.2A patent/EP1702269B1/en not_active Expired - Lifetime
- 2004-12-24 CN CNB2004800391777A patent/CN100549982C/en not_active Expired - Fee Related
- 2004-12-24 WO PCT/US2004/043349 patent/WO2005066791A1/en not_active Ceased
Also Published As
| Publication number | Publication date |
|---|---|
| WO2005066791A1 (en) | 2005-07-21 |
| CN1902598A (en) | 2007-01-24 |
| JP2007513437A (en) | 2007-05-24 |
| US20060143421A1 (en) | 2006-06-29 |
| EP1702269A1 (en) | 2006-09-20 |
| US7490117B2 (en) | 2009-02-10 |
| EP1702269B1 (en) | 2013-09-04 |
| CN100549982C (en) | 2009-10-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4528307B2 (en) | Dynamic performance monitoring based approach to memory management | |
| 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 | |
| US8443341B2 (en) | System for and method of capturing application characteristics data from a computer system and modeling target system | |
| US7373637B2 (en) | Method and apparatus for counting instruction and memory location ranges | |
| CN108475236B (en) | Measuring Address Translation Latency | |
| JP2006092532A (en) | Increasing data locality of recently accessed resource | |
| US7181599B2 (en) | Method and apparatus for autonomic detection of cache “chase tail” conditions and storage of instructions/data in “chase tail” data structure | |
| JP2011507128A (en) | Mechanism for profiling program software running on a processor | |
| US20050155018A1 (en) | Method and apparatus for generating interrupts based on arithmetic combinations of performance counter values | |
| JPH11316711A (en) | Method for estimating statistical value of characteristic of memory system transaction | |
| US7735072B1 (en) | Method and apparatus for profiling computer program execution | |
| CN119847609B (en) | Dynamic instruction conversion memory conflict optimization method based on memory partition | |
| US20030135718A1 (en) | Method and system using hardware assistance for instruction tracing by revealing executed opcode or instruction | |
| US7676511B2 (en) | Method and apparatus for reducing object pre-tenuring overhead in a generational garbage collector | |
| US7350025B2 (en) | System and method for improved collection of software application profile data for performance optimization | |
| US20190384690A1 (en) | Method for estimating memory reuse-distance profile | |
| US8108628B2 (en) | Processor instruction used to perform a matrix test to generate a memory-related trap | |
| WO2013101048A1 (en) | Apparatus and method for providing eventing ip and source data address in a statistical sampling infrastructure | |
| Lin et al. | Dynamic memory management for real-time embedded Java chips | |
| WO2008058292A2 (en) | System for and method of capturing application characteristics from a computer system and modeling target system | |
| US7689782B1 (en) | Processor instruction used to determine whether to perform a memory-related trap | |
| Schmidt | Achieving Optimal Throughput for Persistent Memory with Per-Process Accounting | |
| Konsowa et al. | Dynamic Resources for Multicore Processor using Register File Protection |
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 |