Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4528307B2 - Dynamic performance monitoring based approach to memory management - Google Patents
[go: Go Back, main page]

JP4528307B2 - Dynamic performance monitoring based approach to memory management - Google Patents

Dynamic performance monitoring based approach to memory management Download PDF

Info

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
Application number
JP2006542904A
Other languages
Japanese (ja)
Other versions
JP2007513437A (en
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/en
Application granted granted Critical
Publication of JP4528307B2 publication Critical patent/JP4528307B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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)

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.

メモリパフォーマンスモニタを有する中央演算装置(CPU)及びメモリコントローラのブロック図を示す。1 shows a block diagram of a central processing unit (CPU) having a memory performance monitor and a memory controller.

図1のメモリパフォーマンスモニタをより詳細に示す。Fig. 2 shows the memory performance monitor of Fig. 1 in more detail.

メモリ管理最適化の一例のフロー図を示す。FIG. 5 shows a flow diagram of an example of memory management optimization.

2つの不良な領域を持つメモリヒープを示す。A memory heap with two bad areas is shown.

図4の1つの不良な領域の最適化の一例を示す。FIG. 5 shows an example of optimization of one defective area in FIG.

図4の他の1つの不良な領域の最適化の一例を示す。Fig. 5 shows an example of optimization of another defective area in Fig. 4.

不良な領域の最適化後の図4のメモリヒープを示す。FIG. 5 shows the memory heap of FIG. 4 after optimization of a bad area.

他の1つの不良な領域の最適化後の図4のメモリヒープを示す。FIG. 5 shows the memory heap of FIG. 4 after optimization of another bad area.

コード実行の一例のフロー図を示す。A flow diagram of an example of code execution is shown.

種々の技術が、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 CPU unit 102 having one level 2 cache 104 and one level 1 cache 106. CPU 102 is coupled to one RAM 108 and one read-only memory (ROM) 110 via one memory bus 112. In the illustrated example, the memory bus 112 is coupled to one system bus 114. Alternatively, the memory bus 112 may be a system bus. Those skilled in the art will appreciate that the illustrated configuration is merely an example.

CPU102は、全て互いに結合された、1つの独立した演算論理機構、複数のレジスタ、及びコントロールユニットを有してよい。または、示されるように、CPU102は1つの集積化されたマイクロプロセッサであってよい。CPU102は複数のレジスタブロック115を有する。ブロック106は、プロセッサスピードで動作する、1つのデータキャッシュ、1つの実行キャッシュ、及び1つの命令キャッシュを含む。レベル2キャッシュ104は、知られたキャッシュメモリであってよく、クロックサイクル毎にデータを転送する1つのキャッシュインタフェースを含んでよい。レベル2キャッシュは、CPUチップ(ボックス102)上に存在するか単独で存在して1つのCPUバスを介してそこに結合されてよい。   The CPU 102 may have one independent arithmetic logic mechanism, a plurality of registers, and a control unit, all coupled together. Alternatively, as shown, the CPU 102 may be a single integrated microprocessor. The CPU 102 has a plurality of register blocks 115. Block 106 includes one data cache, one execution cache, and one instruction cache operating at processor speed. Level 2 cache 104 may be a known cache memory and may include one cache interface that transfers data every clock cycle. The level 2 cache may reside on the CPU chip (box 102) or may exist alone and be coupled thereto via a single CPU bus.

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 CPU 102 also has one performance monitoring unit (PMU) 118 that is on or coupled to the CPU chip as shown. Suitable microprocessors that provide a plurality of on-chip PMUs include Pentium® 4 and Itanium® processors. The CPU 102 may represent any processor or processor architecture that can monitor performance (eg, having one external PMU).

システムバス114は、1つのネットワークコントローラ120、1つのディスプレイユニットコントローラ122、1つの入力デバイス124、及び1つのデータストレージ/メモリメディア126、例えば1つのマスストレージデバイスに結合される。バス160に結合された種々のデバイスの例は知られている。図示された例において、バス106は、1つのバスブリッジ130を介して他の1つのバス128に結合される。  The system bus 114 is coupled to one network controller 120, one display unit controller 122, one input device 124, and one data storage / memory medium 126, eg, one mass storage device. Examples of various devices coupled to bus 160 are known. In the illustrated example, the bus 106 is coupled to one other bus 128 via one bus bridge 130.

プロセッサ102上で実行するオペレーティングシステムは、種々のシステムのうちの1つ、例えば、WINDOWS(登録商標)95、98、2000、ME、又はXPのような、ワシントン州レッドモンドのマイクロソフト社から入手可能なWINDOWS(登録商標)ファミリのシステムのうちの1つであってよい。代わりに、オペレーティングシステムは、元々、ニュージャージ州マレーヒルのベル研究所(現ルーセントテクノロジ社ベル研究所)によって開発され、様々なソースから利用可能なUNIX(登録商標)*ファミリのシステムのうちの1つであってよい。さらに他にも、オペレーティングシステムは、LINUXオペレーティングシステムのようなオープンソースシステムであってよい。その上さらに代替のオペレーティングシステムが使用され得ることが理解されるだろう。   The operating system running on processor 102 is available from one of a variety of systems, for example, Microsoft Corporation of Redmond, Washington, such as WINDOWS® 95, 98, 2000, ME, or XP. One of the WINDOWS® family of systems. Instead, the operating system was originally developed by Bell Labs (currently Lucent Technology Bell Labs) in Murray Hill, NJ and is one of the UNIX * family of systems available from a variety of sources. May be one. Still further, the operating system may be an open source system such as the LINUX operating system. It will be further appreciated that alternative operating systems may be used.

プロセッサ102は、PMU118からのデータに基づいて、メモリ管理コード、例えばガーベッジコレクションを実行する。当該コードは、メモリ回収及び初期のアロケーションの両方のために使用される。多くの異なるガーベッジコレクションルーチンが存在する。例えば、1つの参照カウントガーベッジコレクションプログラムは、特定のメモリ領域(例えばブロック)への参照数の経過を追い、メモリロケーションへの参照が無い場合にメモリ領域を開放する。マークアンドスウィープガーベッジコレクションプログラムは、そのとき動作している複数のスレッドのルートから到達可能な複数のオブジェクトをトレースし、到達可能な複数のオブジェクトをマークする。マークアンドスウィープガーベッジコレクションプログラムは、それから全てのオブジェクトを調べ、マークされていない(すなわち、動作しているスレッドのうちの1つのルートからもはや到達できない)複数のオブジェクトによって使用されるメモリ領域を解放する。コピーガーベッジコレクションプログラムは、利用可能なメモリヒープを2つのセクションすなわち2つの空間に分割して、ある時刻に、到達可能なこれらのオブジェクトを、現在使用中の空間("From Space")から現在使用中でない空間("To Space")に、(アプリケーションスレッドのルートから推移的に)移動する。アプリケーションスレッドは、満杯になるまで、"To Space"内にオブジェクトをアロケートする。このとき、コピーガーベッジコレクションプログラムは、それから2つの空間の役割を逆転することによって、"From Space"を回収する。すなわち、旧"From Space"が新"To Space"になり、旧"To Space"が新"From Space"になる。   The processor 102 executes memory management code, such as garbage collection, based on the data from the PMU 118. The code is used for both memory recovery and initial allocation. There are many different garbage collection routines. For example, one reference count garbage collection program keeps track of the number of references to a specific memory area (for example, a block) and releases the memory area when there is no reference to a memory location. The mark-and-sweep garbage collection program traces a plurality of objects that can be reached from the roots of a plurality of threads that are currently operating, and marks the plurality of reachable objects. The mark-and-sweep garbage collection program then examines all objects and frees memory space used by multiple objects that are not marked (ie, can no longer be reached from the root of one of the running threads) . The copy garbage collection program divides the available memory heap into two sections, or two spaces, and at some point these reachable objects are currently used from the currently used space ("From Space"). Move to a non-medium space ("To Space") (transitive from the root of the application thread). The application thread allocates an object in “To Space” until it is full. At this time, the copy garbage collection program then retrieves the “From Space” by reversing the roles of the two spaces. That is, the old “From Space” becomes the new “To Space” and the old “To Space” becomes the new “From Space”.

さらに代替として、世代別ガーベッジコレクションプログラムは、最近のメモリアロケーションの大部分がなされたメモリヒープのセクションにフォーカスする。それは、フォーカスエリア内にある、フォーカスエリア外から到達可能なこれらの複数のオブジェクトを、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 PMU 118 to focus on garbage collection. FIG. 2 shows the PMU 118 in more detail. The PMU 118 includes a control logic 150, a plurality of counters 152, and a plurality of registers 154. The PMU 118 may be on-chip hardware that monitors individual events during code execution. Multiple counters 152 are multiple dedicated programmable events that can monitor memory performance, such as multiple DTLB counters that track multiple global timestamp counters and DTLB misses to investigate memory references that cause DTLB misses Includes a counter. The dedicated programmable event counter may monitor multiple events in level 1 and level 2 memories 116 and 104 as well as multiple events in any DTLB. PMU 118 may be extended to monitor multiple events in RAM 108 and / or multiple mass storage memories via memory bus 112 or system bus 114. In a network system, the PMU 118 may provide monitored data remotely via the network controller 120.

PMU118は、任意のメモリパフォーマンスイベントをモニタしてよい。イベントの実例は、複数の命令キャッシュミス、複数のデータキャッシュミス、複数のブランチ予測ミス、複数のITLBミス、複数のDTLBミス、データ依存性による複数のストール、及びデータキャッシュライトバックを含む。   PMU 118 may monitor any memory performance event. Examples of events include multiple instruction cache misses, multiple data cache misses, multiple branch prediction misses, multiple ITLB misses, multiple DTLB misses, multiple stalls due to data dependencies, and data cache writeback.

モニタされる複数のイベントは、望ましいメモリパフォーマンスイベントをインクリメンタルにモニタするよう複数のカウンタ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 counters 152 to incrementally monitor desired memory performance events. Each register in register block 154 may control several counters in counter block 152. For illustrative purposes only, a 32-bit counter as well as a 32-bit or 64-bit register may be used, respectively.

PMU118は、プロセッサ102に関連する全メモリシステムをモニタし、複数のコントロールレジスタ154において特定されたイベントの数をカウントする。イベントは、種々のコード命令の実行において発生することができ、キャッシュ104又はDTLBへの読み込み及び書き込み試行を含む。.Netのような環境のみならず上記のようなオブジェクト指向言語では、複数のストアドオブジェクトは、他の複数のストアドオブジェクトに関連づけられ、他のコードによって使用可能であってよい。関連づけられた複数のストアドオブジェクトは、一時的な局所性を有する。例えば、複数のオブジェクトは、即時継承内のコードによってアクセスされ得る。それによりヒープ内の空間的な局在性を望ましいものにする。PMU118は、メモリマネージャがそのような空間的局在性を実現することをアシストすべく、複数のメモリパフォーマンスイベントをモニタしてよい。PMU118は、異なる複数のメモリイベントが同時にカウントされるよう、複数のイベントを並行してモニタしてよい。   The PMU 118 monitors the overall memory system associated with the processor 102 and counts the number of events specified in the plurality of control registers 154. Events can occur in the execution of various code instructions and include read and write attempts to cache 104 or DTLB. . In an object-oriented language as described above as well as an environment such as Net, a plurality of stored objects may be associated with a plurality of other stored objects and used by other codes. A plurality of associated stored objects have temporary locality. For example, multiple objects can be accessed by code within immediate inheritance. This makes spatial localization within the heap desirable. The PMU 118 may monitor multiple memory performance events to assist the memory manager in achieving such spatial localization. The PMU 118 may monitor multiple events in parallel so that different memory events are counted simultaneously.

複数の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 PMU 118 includes counters that count events such as data cache or DTLB misses as well as instruction cache or ITLB misses. The PMU 118 includes a memory buffer for storing historical data indicating the number of such misses due to a particular memory area. The PMU 118 or external code may control the size of the multiple memory areas being monitored. The data monitored by the PMU 118 may be performance data in multiple memory areas that are the size of individual memory blocks or larger. The plurality of memory areas may have a size of 64K as an example.

PMU118は、複数のイベントが生じたときに複数のイベントを特定すべくプログラムされてよい。代わりに、PMU118は、一次的にモニタリングに割り込んで、1つのメモリ領域についてのデータ量が1つの閾値に到達した場合に、モニタされたデータを出力するよう設定され得る。閾値はコードによって決定され、例えばモニタされた1つのイベントについてのバッファされた履歴データを、モニタされた他の1つイベントのバッファされた履歴データに対して比較することによって、過去のPMUモニタリング例に基づいて設定されたり、モニタリングしている間に設定されてよい。メモリイベントの閾値を持つメモリ領域を検出すると、PMU118は当該メモリ領域が1つの不良な領域であると判断する。PMU118は、モニタリングに割り込んで、後に続くメモリ管理のために当該メモリ領域についての1つの識別子を出力するようプログラムされてよい。システム100は、他にも、PMU118外のコードを通じて、PMU118からのモニタリングデータに基づいて、1つのメモリ領域が不良領域であると判断してよい。PMU118は、ストップザワールド又はコンカレントなガーベッジコレクションと共に使用されてよい。後者の場合、ガーベッジコレクタがコード、すなわちミューテータの実行と並行して動作することを可能にする。   The PMU 118 may be programmed to identify multiple events when multiple events occur. Instead, the PMU 118 may be set to output monitoring data when it temporarily interrupts monitoring and the amount of data for one memory area reaches one threshold. The threshold is determined by the code, eg past PMU monitoring examples by comparing the buffered historical data for one monitored event against the buffered historical data of another monitored event. It may be set based on or while monitoring. When a memory area having a memory event threshold is detected, the PMU 118 determines that the memory area is one defective area. The PMU 118 may be programmed to interrupt monitoring and output one identifier for the memory area for subsequent memory management. In addition, the system 100 may determine that one memory area is a defective area based on monitoring data from the PMU 118 through a code outside the PMU 118. The PMU 118 may be used with stop-the-world or concurrent garbage collection. The latter case allows the garbage collector to operate in parallel with the execution of the code, ie the mutator.

図3は、メモリ管理を通知するためにPMU118を使用するプロセス300の一例を示す。プロセス300は、システム100上に記憶されて実行されるソフトウェアによって実装されてよい。示される例において、プロセス300は、ブロック302−314を参照して説明される、種々のソフトウェアルーチン又はステップを実行する。   FIG. 3 shows an example of a process 300 that uses the PMU 118 to notify memory management. Process 300 may be implemented by software stored and executed on system 100. In the example shown, process 300 performs various software routines or steps described with reference to blocks 302-314.

PMU118は、レベル1キャッシュ106、レベル2キャッシュ104、DTLB116、及びITLB117における複数のメモリオペレーションをモニタして、キャッシュミス又はDTLBミスであるかにかかわらず、それぞれの高い待ち時間ロードミスについての実効アドレスを特定する実効アドレスブロック302に、モニタされた情報を送る。高レイテンシミスは、データがメインメモリ又はRAMからフェッチされることを要求する。キャッシュロードミスした実効アドレスは、キャッシュ内にない1つのメモリオブジェクトである。ブロック302は、ロードミス実効アドレスを、それぞれのメモリ領域についての頻度数を保持するレコードデータブロック304に供給する。カウンタ152又はRAM108又はマスストレージのような他の記憶メディアがブロック304を実装してよい。複数のメモリ領域は、任意の望ましい粒度、例えば64Kを有してよい。ブロック304は、不良領域が特定されてメモリ管理コードが実行されるようにPMU118からの十分なデータサンプルが提供されているか否かを判断する判断ブロック306に制御を渡す。   The PMU 118 monitors multiple memory operations in the level 1 cache 106, level 2 cache 104, DTLB 116, and ITLB 117 and determines the effective address for each high latency load miss, whether it is a cache miss or a DTLB miss. The monitored information is sent to the effective address block 302 that identifies High latency misses require data to be fetched from main memory or RAM. A cache load miss effective address is one memory object not in the cache. Block 302 provides the load miss effective address to record data block 304 which holds the frequency number for each memory area. A counter 152 or RAM 108 or other storage media such as mass storage may implement block 304. The plurality of memory areas may have any desired granularity, for example 64K. Block 304 passes control to a decision block 306 that determines whether sufficient data samples from the PMU 118 are provided so that a bad area is identified and the memory management code is executed.

十分なサンプルが取得されていない場合、取得されたPMUサンプルの全数を記憶するインクリメントブロック308に制御が進む。制御は、メモリパフォーマンスデータのさらなるモニタリングのためにPMU118に戻る。十分なデータサンプルが集められたことをブロック306が判断した場合、例えば望ましいサンプルカウント値がブロック308で記憶されている場合、ブロック304からの履歴データが、メモリヒープについて不良領域を特定するブロック310に提供される。ブロック310は、例えば90%の特定されたキャッシュ又はDTLBミスが発生したメモリヒープの(複数の)領域を特定して、当該(複数の)領域を不良としてマークしてよい。ブロック310は、各セクションについて閾ミス位置が集中しているところを決定する前にメモリヒープを複数のセクションに分けることによって、複数の不良領域を特定してよい。不良領域の粒度は、ブロック310によって設定されてよく、元々モニタされたメモリ領域のサイズと同じであってよいし異なってよい。すなわち、1つの不良領域は複数のミス位置を持つ多数のメモリ領域を含んでよい。   If not enough samples have been acquired, control proceeds to an increment block 308 that stores the total number of acquired PMU samples. Control returns to the PMU 118 for further monitoring of memory performance data. If block 306 determines that enough data samples have been collected, for example if the desired sample count value is stored in block 308, the historical data from block 304 identifies a bad area for the memory heap block 310. Provided to. Block 310 may identify the region (s) of the memory heap where, for example, 90% of the identified cache or DTLB miss occurred, and mark the region (s) as bad. Block 310 may identify multiple bad regions by dividing the memory heap into multiple sections before determining where the threshold miss locations are concentrated for each section. The granularity of the bad area may be set by block 310 and may be the same as or different from the size of the originally monitored memory area. That is, one defective area may include a large number of memory areas having a plurality of miss positions.

特定された複数の不良領域は、ヒープ最適化のためにメモリ管理ブロック312に提供される。ブロック312は、上記説明されたいずれかのカーベッジコレクションのような、1以上のガーベッジコレクションルーチンを実行してよい。そのルーチンは、不良領域だけ又は不良及び非不良領域の両方に対して実行されてよい。例えば、メモリ管理ブロック312は、デフォルトのガーベッジコレクションアルゴリズムをメモリヒープの非不良メモリ領域に適用し、スライディングコンパクションを不良領域、すなわち、過度に高いメモリストールを示す領域だけに適用してよい。このように、プロセス300は、第1のメモリ管理ルーチンを1つの不良領域又は複数の不良領域に適用し、異なる第2のメモリ管理ルーチンを1つの非不良領域又は複数の非不良領域に適用する。これらの例のそれぞれにおいて、スライディングコンパクションガーベッジコレクタは、最も問題の多いヒープエリアに導かれる。ここで、どのインフラストラクチャがスライディングコンパクションをサポートするために使用され得るかを説明する。   The identified defective areas are provided to the memory management block 312 for heap optimization. Block 312 may execute one or more garbage collection routines, such as any of the garbage collections described above. The routine may be performed only on bad areas or on both bad and non-bad areas. For example, the memory management block 312 may apply a default garbage collection algorithm to non-bad memory areas of the memory heap and apply sliding compaction only to bad areas, i.e. areas that exhibit excessively high memory stalls. In this manner, the process 300 applies the first memory management routine to one defective area or a plurality of defective areas, and applies a different second memory management routine to one non-defective area or a plurality of non-defective areas. . In each of these examples, the sliding compaction garbage collector is directed to the most problematic heap area. Here we describe which infrastructure can be used to support sliding compaction.

ブロック312でのガーベッジコレクションのマークフェーズの間、全てのライブオブジェクトがマークされる。また、後のフェーズのスライディングコンパクションをサポートすることを目的として、コンパクション領域を指すヒープ内の複数のメモリオブジェクト、例えば不良領域も記録される。結果として、スライディングコンパクションの間、全てのコンパクションブロックが処理されて、それらのメモリオブジェクトは互いに密集化される。メモリマネージャ312の実行の後、1つのブロック314はPMUデータコレクションを同期させる。そのような同期化は、PMUデータのさらなるコレクションが現在のヒープ構成に関連するよう行われる。この同期化の一部として以前のサンプルは破棄される。   During the mark phase of garbage collection at block 312, all live objects are marked. In addition, a plurality of memory objects in the heap pointing to the compaction area, for example, a defective area, are also recorded for the purpose of supporting sliding compaction in a later phase. As a result, during sliding compaction, all compaction blocks are processed, and their memory objects are packed together. After execution of the memory manager 312, one block 314 synchronizes the PMU data collection. Such synchronization is done so that further collections of PMU data are related to the current heap configuration. As part of this synchronization, previous samples are discarded.

ブロック302、304、306、308、及び310は切り離して説明されたが、それらはPMU118によって実行され得る。   Although blocks 302, 304, 306, 308, and 310 have been described separately, they can be performed by PMU 118.

図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 memory heap 400 that forms a plurality of memory areas 402-420. The number of memory areas is provided for illustrative purposes only. This is because the memory areas 404 and 416 have encountered a certain threshold number or percentage of load misses for the heap 400. Identified as a bad area (indicated by shaded shading) by block 310. An example of the state of the memory area 404 is shown in more detail. Memory objects 422, 424, and 426 are spaced apart by dead spaces 428 and 430 in memory area 404. The memory area 416 has two memory objects 432 and 434 separated by a dead space 436. Both memory objects are spaced from the tip of memory area 416 by dead space 438.

不良領域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''に示されるように、不良領域はメモリストレージから一時的にブロックされてよい。   Bad regions 404 and 416 are identified as those of block 312 that perform garbage collection on those regions only without affecting regions 402, 406, 408, 410, 412, 414, 418, and 420. FIG. 5 shows the resulting optimized memory area 404 ′ after sliding compaction has been performed. FIG. 6 shows the resulting optimized memory area 416 ′ after sliding compaction has been performed. The resulting memory heap 400 (FIG. 7) shows that all memory areas are optimized (ie, there is no diagonal shading). Although sliding compaction has been described, other garbage collection routines may be performed on the bad areas 404 and 416. Selective and deliberate application of sliding compaction only to such bad areas to improve subsequent memory performance is thus achieved. Alternatively, garbage collection may be performed throughout the heap 400 with or without a unique garbage collection routine (eg, sliding compaction) performed for specific bad areas 404 and 416. Further, in an alternative embodiment, the defective area may be temporarily blocked from memory storage, as shown in block areas 404 "and 416" of FIG.

図9は、システム100においてコードを実行するプロセス500の一例を示す。プロセス500は、システム100において記憶されて実行されるソフトウェアによって実装されてよい。示された例において、プロセス500は、ブロック502−510を参照して説明される種々のソフトウェアルーチン又はステップを実行する。   FIG. 9 shows an example of a process 500 for executing code in the system 100. Process 500 may be implemented by software stored and executed in system 100. In the illustrated example, process 500 performs various software routines or steps described with reference to blocks 502-510.

ブロック502は、ミューテータとも呼ばれるアプリケーションコードをCPU102上で実行する。コードの言語例は、C#及びJAVA(登録商標)を含むが、コードはこれらの言語に限定されない。コードは、.Netフレームワーク下で記述されてもよい。コードは、1つのオペレーティングシステム、又はオペレーティングシステム上で実行される1つのアプリケーションであってよい。   Block 502 executes application code, also called a mutator, on CPU 102. Examples of the language of the code include C # and JAVA (registered trademark), but the code is not limited to these languages. The code is. It may be described under the Net framework. The code may be an operating system or an application that runs on the operating system.

ブロック502は、実行しているコードのために新たな1つのメモリオブジェクトをメモリマネージャがシステム100のヒープにアロケートすることができるか否かを判断する判断ブロック504に制御を渡す。答えがyesであるとブロック504が判断した場合、制御は、追加のコードが実行されるか否かを判断する判断ブロック506に渡される。答えがnoであるとブロック504が判断した場合、最近発見された複数の不良領域の、これらの領域に対する上述のスライディングコンパクション技術を用いたメモリパフォーマンスの最適化に加えて、一定のヒープメモリ回収を実行するブロック508に、制御が渡される。失われたオブジェクトをガーベッジコレクションがアロケートすることができないことをブロック504が判断した場合、ブロック310と同様の、不良領域を特定するブロック508に制御が渡される。ブロック508は、ブロック312と同様のメモリ管理/最適化ブロック510に制御を渡す。   Block 502 passes control to a decision block 504 that determines whether the memory manager can allocate a new memory object to the heap of the system 100 for the code being executed. If block 504 determines that the answer is yes, control is passed to decision block 506 which determines whether additional code is executed. If block 504 determines that the answer is no, in addition to optimizing memory performance using the above-described sliding compaction techniques for those recently discovered defective areas, these heap memory recoveries Control is passed to block 508 for execution. If block 504 determines that garbage collection cannot allocate the lost object, control is passed to block 508, which identifies a bad area, similar to block 310. Block 508 passes control to a memory management / optimization block 510 similar to block 312.

上の技術は、キャッシュメモリを最適化することに関連して説明された。その技術は、パフォーマンスモニタがメモリパフォーマンスを計測するメモリストレージのいずれのレベルを最適化するために使用されてよい。さらに、その技術は、周辺デバイス又のような遠隔に格納されたメモリデバイス又はネットワーク又はサーバアプリケーション内のメモリデバイスを最適化すべく使用されてよい。   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つのメモリ管理ルーチンとして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つのメモリパフォーマンスイベントを表す
請求項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つのパフォーマンスモニタリングユニット(PMU)である
請求項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つのパフォーマンスモニタリングユニットから取得され、
前記コンピュータによって実行された場合に、前記パフォーマンスモニタリングユニットに、
前記パフォーマンスデータの発生数をカウントする手順
を実行させる
請求項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.
前記コンピュータによって実行された場合に、前記パフォーマンスモニタリングユニットに、
前記パフォーマンスデータの発生数の前記カウントを閾値と比較する手順
を実行させ、
前記カウントが前記閾値を上回る場合に、不良領域が存在すると決定される
請求項に記載のプログラム
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.
記カウントを前記閾値と比較する前に、予め定められた以上のデータサンプルが取得されたか否かを判断する手順
前記コンピュータに実行させ
請求項に記載のプログラム
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つにおいてロードミスメモリアドレスの前記頻度数もしくは前記頻度割合が前記閾値に到達した旨の判断に応答して前記メモリヒープの前記閾値に到達したメモリ領域を最適化する段階と
を備え
前記メモリヒープの前記閾値に到達したメモリ領域を最適化する段階は、ロードミスメモリアドレスの前記頻度数もしくは前記頻度割合が前記閾値に到達した前記メモリ領域のうちの少なくとも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メモリ管理ルーチンを実行する段階と、
ロードミスメモリアドレスの前記頻度数もしくは前記頻度割合が前記閾値に到達していない少なくとも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つのパフォーマンスモニタリングユニットを有し、
前記メモリマネージャは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.
前記ガーベッジコレクタは、参照カウントコレクション、コピーコレクション、世代別コレクション、マークアンドスウィープコレクション、ベルトウェイコレクション、オールデストファーストコレクション、スライドコンパクション、又はハイブリッドコレクションを含むグループから選択される1つのガーベッジコレクション最適化を実行する
請求項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.
JP2006542904A 2003-12-31 2004-12-24 Dynamic performance monitoring based approach to memory management Expired - Fee Related JP4528307B2 (en)

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)

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

* Cited by examiner, † Cited by third party
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

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