US20020194210A1 - Method for using non-temporal stores to improve garbage collection algorithm - Google Patents

Method for using non-temporal stores to improve garbage collection algorithm Download PDF

Info

Publication number
US20020194210A1
US20020194210A1 US09/885,745 US88574501A US2002194210A1 US 20020194210 A1 US20020194210 A1 US 20020194210A1 US 88574501 A US88574501 A US 88574501A US 2002194210 A1 US2002194210 A1 US 2002194210A1
Authority
US
United States
Prior art keywords
contents
data object
data
cache
copied
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US09/885,745
Other versions
US6950837B2 (en
Inventor
Sreenivas Subramoney
Richard Hudson
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
Priority to US09/885,745 priority Critical patent/US6950837B2/en
Assigned to INTEL CORPORATION reassignment INTEL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: HUDSON, RICHARD L., SUBRAMONEY, SREENIVAS
Priority to CNB028097939A priority patent/CN1237451C/en
Priority to PCT/US2002/017960 priority patent/WO2002103527A2/en
Priority to AU2002312374A priority patent/AU2002312374A1/en
Priority to DE10296957T priority patent/DE10296957T5/en
Publication of US20020194210A1 publication Critical patent/US20020194210A1/en
Priority to HK04108154A priority patent/HK1067418A1/en
Publication of US6950837B2 publication Critical patent/US6950837B2/en
Application granted granted Critical
Adjusted expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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

Definitions

  • This invention relates generally to memory management in run-time environments, and more specifically to a garbage collection algorithm that uses non-temporal stores to reduce garbage collection time.
  • the random access memory (RAM) of a computing system is a fixed size resource; currently a RAM size of 32 megabytes (Mb) is typical.
  • the RAM must be managed properly to maintain system performance.
  • memory management is handled by the system.
  • Memory management includes a process known as “garbage collection”. Garbage collection is a process with the aim of being as unobtrusive as possible in recycling memory.
  • Garbage collection is a process with the aim of being as unobtrusive as possible in recycling memory.
  • garbage collection process taxes the central processing unit (CPU) and degrades system performance as perceived by the application. It is, therefore, highly desirable to reduce the time taken to reclaim unused portions of memory.
  • Typical computing systems have a cache memory between the CPU and main memory.
  • the cache is small, typically 2 Mb or less, compared to main memory, that is typically 128 Mb.
  • the cache is used to store, and provide fast access to data from the most recently used memory locations. The data is brought to cache with the expectation that it may be accessed again soon. Garbage collection takes place in main memory, but because most programs operate under the assumption that recently accessed data may be accessed again soon, the processing of garbage collection takes place in the cache as described below.
  • a popular garbage collection algorithm for use in run-time environments is the moving garbage collection algorithm (MGCA).
  • the MGCA examines a memory block that may typically be from 1 Mb to 4 gigabytes (Gb) in size.
  • the MGCA determines which memory data from the block is in use (live data) and which is garbage.
  • live data memory data from the block is in use
  • garbage garbage.
  • MGCAs move all live data to new consecutive memory locations. This compacts the live data into a smaller space than when it was co-located with the garbage. Once the live data is copied to new locations the entire block can be reclaimed and reallocated.
  • a typical MGCA has three phases: mark, repoint, and copy.
  • mark phase the live objects, those to be moved to a new memory location, are determined. At this point new memory locations for the data objects are determined.
  • repoint phase the live objects are examined and their references are changed so that they refer to new memory locations.
  • copy phase the contents of each live object are copied to the new memory location.
  • FIG. 1 is an illustration of an exemplary computing system for implementing the moving garbage collector of the present invention.
  • FIGS. 2A and 2B describe the use of the non-temporal streaming stores feature of the CPU to reduce the time required for garbage collection.
  • Non-temporal stores are a CPU feature that allows the copy of data objects within main memory with no interference or pollution of the cache memory.
  • the live objects copied to new memory locations will not be accessed in the near future and therefore need not be copied through the cache. If implemented, this avoids copy operations and avoids taxing the hardware.
  • the algorithm of the present invention uses the fact that live data objects will be stored to consecutive new memory locations in order to perform streaming copy procedures. Since each copy procedure has an associated CPU overhead, the process of streaming the copies reduces the degradation of system performance and thus reduces the overall time for garbage collection.
  • FIG. 1 is a diagram illustrating an exemplary computing system 100 for implementing the MGCA of the present invention.
  • System 100 can represent a general-purpose computer, portable computer, or other like device.
  • the components of computing system 100 are exemplary in which one or more components can be omitted or added.
  • one or more memory devices can be utilized for computing system 100 .
  • computing system 100 includes a central processing unit 102 and a signal processor 103 coupled to a display circuit 105 , main memory 104 , static memory 106 , and mass storage device 107 via bus 101 .
  • Computing system 100 can also be coupled to a display 121 , keypad input 122 , cursor control 123 , hard copy device 124 , input/output (I/O) devices 125 , and audio/speech device 126 via bus 101 .
  • I/O input/output
  • Bus 101 is a standard system bus for communicating information and signals.
  • CPU 102 and signal processor 103 are processing units for computing system 100 .
  • CPU 102 or signal processor 103 or both can be used to process information and/or signals for computing system 100 .
  • CPU 102 includes a control unit 131 , an arithmetic logic unit (ALU) 132 , and several registers 133 , which are used to process information and signals.
  • Signal processor 103 can also include similar components as CPU 102 .
  • Main memory 104 can be, e.g., a random access memory (RAM) or some other dynamic storage device, for storing information or instructions (program code), which are used by CPU 102 or signal processor 103 .
  • Main memory 104 may store temporary variables or other intermediate information during execution of instructions by CPU 102 or signal processor 103 .
  • Static memory 106 can be, e.g., a read only memory (ROM) and/or other static storage devices, for storing information or instructions, which can also be used by CPU 102 or signal processor 103 .
  • Mass storage device 107 can be, e.g., a hard or floppy disk drive or optical disk drive, for storing information or instructions for computing system 100 .
  • Display 121 can be, e.g., a cathode ray tube (CRT) or liquid crystal display (LCD). Display device 121 displays information or graphics to a user.
  • Computing system 100 can interface with display 121 via display circuit 105 .
  • Keypad input 122 is an alphanumeric input device with an analog to digital converter.
  • Cursor control 123 can be, e.g., a mouse, a trackball, or cursor direction keys, for controlling movement of an object on display 121 .
  • Hard copy device 124 can be, e.g., a laser printer, for printing information on paper, film, or some other like medium.
  • a number of input/output devices 125 can be coupled to computing system 100 .
  • the automated process of garbage collection in accordance with the present invention can be implemented by hardware and/or software contained within computing system 100 .
  • CPU 102 or signal processor 103 can execute code or instructions stored in a machine-readable medium, e.g., main memory 104 .
  • the machine-readable medium may include a mechanism that provides (i.e., stores and/or transmits) information in a form readable by a machine such as computer or digital processing device.
  • a machine-readable medium may include a read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices.
  • the code or instructions may be represented by carrier-wave signals, infrared signals, digital signals, and by other like signals.
  • a typical MGCA includes a copy phase in which live objects are copied to new memory locations.
  • An embodiment of the present invention uses non-temporal streaming stores (NTSS) to complete the copy phase of garbage collection.
  • NTSS non-temporal streaming stores
  • the use of NTSS allows the completion of the copy phase in less time, resulting in faster garbage collection.
  • FIG. 2A describes the use of the non-temporal stores feature of the CPU to reduce the time required for garbage collection.
  • data objects are shown as A through 0 .
  • data objects A, B, C, and D are a root set of data (i.e., references within the CPU registers, for example). Then A, B, C, D, and all reachable (associated) data objects are considered live and will be moved.
  • the arrows are references that indicate an association between the data objects.
  • All transitive closure live objects are determined at the mark phase of the MGCA. In one embodiment the mark phase may result in the creation of a mark stack as shown at 205 .
  • data objects G and I are not included in the mark stack as they are not part of the root set nor are they reachable directly or transitively from members of the root set.
  • each data object is determined to be live, new memory addresses are allocated.
  • a new memory location is determined for the data object because it is known that the data object must persist across the garbage collection.
  • FIG. 2B for each live data object referenced in the mark stack, a new memory location is allocated and designated.
  • the mark stack is shown as 205 B and a corresponding array of references to new memory locations is shown as 210 B.
  • the references for each data object are changed. This is the repoint phase.
  • data object A references data objects J and K.
  • the new reference for A will be A′ and A′ will reference J′ and K′.
  • data object A the actual bits of data
  • A′ the new memory location referenced as A′.
  • data object A is copied to the new memory location referenced as A′ and then the data objects associated with A (i.e. J and K) are updated.
  • the CPU in connection with the memory controller, executes a non-temporal store causing a copy of A to the A′ memory location without interference or pollution of the cache memory.
  • the use of NTS reduces the time necessary for garbage collection because it reduces the amount of data that is needlessly copied to the cache only to be deleted after some time.
  • the algorithm of the present invention also uses write combining (streaming copies) to reduce the time required for garbage collection.
  • the data objects referenced in mark stack 205 B will be copied to new memory locations as referenced in mark stack 210 B.
  • data objects A, B, and C will be copied to new locations as referenced by A′, B′, and C′.
  • the algorithm of the present invention is designed such that all live objects are copied to consecutive new memory locations i.e., A′, B′, and C′, for example, are consecutive locations.
  • This allows use of the CPU's write combine (streaming copy) feature to copy several data objects asynchronously and transparently. Since each copy procedure has an associated CPU overhead, the process of streaming the copies reduces the degradation of system performance and thus reduces the time for garbage collection.
  • the amount that can be copied is, of course, platform specific and dependent upon prevailing memory bus conditions.

Abstract

An improved moving garbage collection algorithm is described. The algorithm allows efficient use of non-temporal stores to reduce the required time for garbage collection. Non-temporal stores (or copies) are a CPU feature that allows the copy of data objects within main memory with no interference or pollution of the cache memory. The live objects copied to new memory locations will not be accessed again in the near future and therefore need not be copied to cache. This avoids copy operations and avoids taxing the CPU with cache determinations. In a preferred embodiment, the algorithm of the present invention exploits the fact that live data objects will be stored to consecutive new memory locations in order to perform streaming copies. Since each copy procedure has an associated CPU overhead, the process of streaming the copies reduces the degradation of system performance and thus reduces the time for garbage collection.

Description

    FIELD OF THE INVENTION
  • This invention relates generally to memory management in run-time environments, and more specifically to a garbage collection algorithm that uses non-temporal stores to reduce garbage collection time. [0001]
  • BACKGROUND OF THE INVENTION
  • The random access memory (RAM) of a computing system is a fixed size resource; currently a RAM size of 32 megabytes (Mb) is typical. The RAM must be managed properly to maintain system performance. In run-time environments such as Java or Microsoft CLI, memory management is handled by the system. Memory management includes a process known as “garbage collection”. Garbage collection is a process with the aim of being as unobtrusive as possible in recycling memory. When a computer program is running it allocates and uses portions of memory on an ongoing basis. At some point the program may no longer need to use a particular portion of memory, e.g., the memory was allocated for a particular purpose that is no longer relevant. The portions that are no longer being used (garbage) are identified (collected) so that they can be reclaimed for future allocation. The garbage collection process taxes the central processing unit (CPU) and degrades system performance as perceived by the application. It is, therefore, highly desirable to reduce the time taken to reclaim unused portions of memory. [0002]
  • Typical computing systems have a cache memory between the CPU and main memory. The cache is small, typically 2 Mb or less, compared to main memory, that is typically 128 Mb. The cache is used to store, and provide fast access to data from the most recently used memory locations. The data is brought to cache with the expectation that it may be accessed again soon. Garbage collection takes place in main memory, but because most programs operate under the assumption that recently accessed data may be accessed again soon, the processing of garbage collection takes place in the cache as described below. [0003]
  • A popular garbage collection algorithm for use in run-time environments is the moving garbage collection algorithm (MGCA). The MGCA examines a memory block that may typically be from 1 Mb to 4 gigabytes (Gb) in size. The MGCA determines which memory data from the block is in use (live data) and which is garbage. As the name implies, MGCAs move all live data to new consecutive memory locations. This compacts the live data into a smaller space than when it was co-located with the garbage. Once the live data is copied to new locations the entire block can be reclaimed and reallocated. [0004]
  • A typical MGCA has three phases: mark, repoint, and copy. In the mark phase the live objects, those to be moved to a new memory location, are determined. At this point new memory locations for the data objects are determined. In the repoint phase the live objects are examined and their references are changed so that they refer to new memory locations. In the copy phase, the contents of each live object are copied to the new memory location. [0005]
  • In many programs when data is accessed, for example to be copied, the data is brought into cache memory. As described above, the cache provides quick access to frequently used memory, and it is assumed that recently accessed data may need to be accessed again soon. If the data is not used again soon it is then deleted from the cache. This process, based on temporal access patterns, frequently results in data being stored to cache only to be deleted when it is not accessed soon. This process taxes the cache memory in determining which data may be deleted from cache and also in having to actually delete it and possibly write back changed data to main memory. [0006]
  • When a live data object is copied to the new memory location, the data copied to the new memory location will not need to be accessed in the future. Therefore, copying the data to the cache in expectation of the data being accessed soon needlessly taxes CPU/cache resources. [0007]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The present invention is illustrated by way of example and not intended to be limited by the figures of the accompanying drawings in which like references indicate similar elements and in which: [0008]
  • FIG. 1 is an illustration of an exemplary computing system for implementing the moving garbage collector of the present invention; and [0009]
  • FIGS. 2A and 2B describe the use of the non-temporal streaming stores feature of the CPU to reduce the time required for garbage collection. [0010]
  • DETAILED DESCRIPTION
  • An improved moving garbage collection algorithm is described. The algorithm allows efficient use of non-temporal stores to reduce the required time for garbage collection. Non-temporal stores (or copies) are a CPU feature that allows the copy of data objects within main memory with no interference or pollution of the cache memory. The live objects copied to new memory locations will not be accessed in the near future and therefore need not be copied through the cache. If implemented, this avoids copy operations and avoids taxing the hardware. The algorithm of the present invention uses the fact that live data objects will be stored to consecutive new memory locations in order to perform streaming copy procedures. Since each copy procedure has an associated CPU overhead, the process of streaming the copies reduces the degradation of system performance and thus reduces the overall time for garbage collection. [0011]
  • FIG. 1 is a diagram illustrating an [0012] exemplary computing system 100 for implementing the MGCA of the present invention. The use of non-temporal copy features and streaming copies for more efficient garbage collection described herein can be implemented and utilized within computing system 100. System 100 can represent a general-purpose computer, portable computer, or other like device. The components of computing system 100 are exemplary in which one or more components can be omitted or added. For example, one or more memory devices can be utilized for computing system 100.
  • Referring to FIG. 1, [0013] computing system 100 includes a central processing unit 102 and a signal processor 103 coupled to a display circuit 105, main memory 104, static memory 106, and mass storage device 107 via bus 101. Computing system 100 can also be coupled to a display 121, keypad input 122, cursor control 123, hard copy device 124, input/output (I/O) devices 125, and audio/speech device 126 via bus 101.
  • [0014] Bus 101 is a standard system bus for communicating information and signals. CPU 102 and signal processor 103 are processing units for computing system 100. CPU 102 or signal processor 103 or both can be used to process information and/or signals for computing system 100. CPU 102 includes a control unit 131, an arithmetic logic unit (ALU) 132, and several registers 133, which are used to process information and signals. Signal processor 103 can also include similar components as CPU 102.
  • [0015] Main memory 104 can be, e.g., a random access memory (RAM) or some other dynamic storage device, for storing information or instructions (program code), which are used by CPU 102 or signal processor 103. Main memory 104 may store temporary variables or other intermediate information during execution of instructions by CPU 102 or signal processor 103. Static memory 106, can be, e.g., a read only memory (ROM) and/or other static storage devices, for storing information or instructions, which can also be used by CPU 102 or signal processor 103. Mass storage device 107 can be, e.g., a hard or floppy disk drive or optical disk drive, for storing information or instructions for computing system 100.
  • [0016] Display 121 can be, e.g., a cathode ray tube (CRT) or liquid crystal display (LCD). Display device 121 displays information or graphics to a user. Computing system 100 can interface with display 121 via display circuit 105. Keypad input 122 is an alphanumeric input device with an analog to digital converter. Cursor control 123 can be, e.g., a mouse, a trackball, or cursor direction keys, for controlling movement of an object on display 121. Hard copy device 124 can be, e.g., a laser printer, for printing information on paper, film, or some other like medium. A number of input/output devices 125 can be coupled to computing system 100.
  • The automated process of garbage collection in accordance with the present invention can be implemented by hardware and/or software contained within [0017] computing system 100. For example, CPU 102 or signal processor 103 can execute code or instructions stored in a machine-readable medium, e.g., main memory 104.
  • The machine-readable medium may include a mechanism that provides (i.e., stores and/or transmits) information in a form readable by a machine such as computer or digital processing device. For example, a machine-readable medium may include a read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices. The code or instructions may be represented by carrier-wave signals, infrared signals, digital signals, and by other like signals. [0018]
  • As described above, a typical MGCA includes a copy phase in which live objects are copied to new memory locations. An embodiment of the present invention uses non-temporal streaming stores (NTSS) to complete the copy phase of garbage collection. The use of NTSS allows the completion of the copy phase in less time, resulting in faster garbage collection. FIG. 2A describes the use of the non-temporal stores feature of the CPU to reduce the time required for garbage collection. [0019]
  • In FIG. 2A data objects are shown as A through [0020] 0. For example, data objects A, B, C, and D, are a root set of data (i.e., references within the CPU registers, for example). Then A, B, C, D, and all reachable (associated) data objects are considered live and will be moved. The arrows are references that indicate an association between the data objects. All transitive closure live objects are determined at the mark phase of the MGCA. In one embodiment the mark phase may result in the creation of a mark stack as shown at 205. As shown in FIG. 2A, data objects G and I are not included in the mark stack as they are not part of the root set nor are they reachable directly or transitively from members of the root set.
  • As each data object is determined to be live, new memory addresses are allocated. At the time a data object is added to the mark stack, a new memory location is determined for the data object because it is known that the data object must persist across the garbage collection. For example, as shown in FIG. 2B, for each live data object referenced in the mark stack, a new memory location is allocated and designated. The mark stack is shown as [0021] 205B and a corresponding array of references to new memory locations is shown as 210B. At this point the references for each data object are changed. This is the repoint phase. For example, data object A references data objects J and K. The new reference for A will be A′ and A′ will reference J′ and K′.
  • In the copy phase, the actual contents of data object A (the actual bits of data) will be copied to the new memory location referenced as A′. This includes the portion of data object A that references associated data. This portion may have already been updated, that is references to J and K have been changed to reference J′ and K′ respectively. In an alternative embodiment data object A is copied to the new memory location referenced as A′ and then the data objects associated with A (i.e. J and K) are updated. [0022]
  • After data object A is copied to A′, A′ need not be accessed again. The component of garbage collection in regard to data object A is complete. The MGCA simply moves on to the next data object referenced in the mark stack and continues updating and moving. In the copy phase of the MGCA, the data object being copied (e.g., data object A) is brought into the cache. There is no need to copy the contents of A′ to cache, however, because that data object (i.e., A′) will not be accessed in the near future. The algorithm of the present invention, included as Appendix A, uses non-temporal stores (NTSs) to copy the data objects directly to the designated new location in memory. The CPU, in connection with the memory controller, executes a non-temporal store causing a copy of A to the A′ memory location without interference or pollution of the cache memory. The use of NTS reduces the time necessary for garbage collection because it reduces the amount of data that is needlessly copied to the cache only to be deleted after some time. [0023]
  • The algorithm of the present invention also uses write combining (streaming copies) to reduce the time required for garbage collection. As shown in FIG. 2B, the data objects referenced in [0024] mark stack 205B will be copied to new memory locations as referenced in mark stack 210B. For example, data objects A, B, and C will be copied to new locations as referenced by A′, B′, and C′. The algorithm of the present invention is designed such that all live objects are copied to consecutive new memory locations i.e., A′, B′, and C′, for example, are consecutive locations. This allows use of the CPU's write combine (streaming copy) feature to copy several data objects asynchronously and transparently. Since each copy procedure has an associated CPU overhead, the process of streaming the copies reduces the degradation of system performance and thus reduces the time for garbage collection. The amount that can be copied is, of course, platform specific and dependent upon prevailing memory bus conditions.
  • In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense. [0025]

Claims (21)

What is claimed is:
1. A method comprising:
accessing a reference array, the reference array referencing at least one data object, the at least one data object having a contents stored in memory;
determining a new memory location for the contents of each of the at least one data object; and
copying the contents of the at least one data object to the new memory location such that upon copying the contents of the new memory location, the data does not also get stored to a cache memory.
2. The method of claim 1 wherein the contents of consecutively referenced data objects are copied to consecutive memory locations.
3. The method of claim 2 wherein copying further includes copying the contents of the at least one data object around the cache using a write combine operation.
4. The method of claim 3 implemented upon a computing system having a central processing unit wherein an amount of data copied depends upon central processing unit parameters.
5. The method of claim 4 wherein the computing system operates in a dynamic runtime environment.
6. The method of claim 5 wherein the run-time environment is selected from the group consisting of JAVA and CLI.
7. The method of claim 6 implemented as the copy phase of a moving garbage collection algorithm.
8. A machine-readable medium that provides executable instructions, which when executed by a processor, cause the processor to perform a method, the method comprising:
accessing a reference array, the reference array referencing at least one data object, the at least one data object having a contents stored in memory;
determining a new memory location for the contents of each of the at least one data object; and
copying the contents of the at least one data object to the new memory location such that upon copying the contents of the new memory location is not stored to a cache memory.
9. The machine-readable medium of claim 8 wherein the contents of consecutively referenced data objects are copied to consecutive memory locations.
10. The machine-readable medium of claim 9 wherein copying further includes copying the contents of the at least one data object around the cache by exploiting the write combine feature of the non-temporal streaming store operation.
11. The machine-readable medium of claim 10 implemented upon a computing system having a central processing unit wherein an amount of data copied depends upon central processing unit parameters.
12. The machine-readable medium of claim 11 wherein the computing system operates in a dynamic run-time environment.
13. The machine-readable medium of claim 12 wherein the run-time environment is selected from the group consisting of JAVA and CLI.
14. The machine-readable medium of claim 13 implemented as the copy phase of a moving garbage collection algorithm.
15. An apparatus comprising:
a register to hold a reference array, the reference array referencing at least one data object, the at least one data object having a contents;
a memory region to hold the contents of the at least one data object; and
a central processing unit to determine a new memory location for the contents of each of the at least one data object, the contents of the at least one data object copied to the new memory location such that upon copying the contents to the new memory location, the data is not stored to a cache memory.
16. The apparatus of claim 15 wherein the contents of consecutively referenced data objects are copied around the cache to consecutive memory locations.
17. The apparatus of claim 16 wherein copying further includes copying the contents of the at least one data objected around the cache by exploiting the write combine feature of the non-temporal streaming store operation.
18. The apparatus of claim 17 implemented upon a computing system having a central processing unit wherein an amount of data copied depends upon central processing unit parameters.
19. The apparatus of claim 18 wherein the computing system operates in a dynamic run-time environment.
20. The apparatus of claim 19 wherein the run-time environment is selected from the group consisting of JAVA and CLI.
21. The apparatus of claim 20 implemented as the copy phase of a moving garbage collection algorithm.
US09/885,745 2001-06-19 2001-06-19 Method for using non-temporal streaming to improve garbage collection algorithm Expired - Fee Related US6950837B2 (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
US09/885,745 US6950837B2 (en) 2001-06-19 2001-06-19 Method for using non-temporal streaming to improve garbage collection algorithm
DE10296957T DE10296957T5 (en) 2001-06-19 2002-06-06 A method of using non-temporal streaming storage operations to improve an algorithm for collecting worthless data
PCT/US2002/017960 WO2002103527A2 (en) 2001-06-19 2002-06-06 A method for using non-temporal streaming stores to improve garbage collection algorithm
AU2002312374A AU2002312374A1 (en) 2001-06-19 2002-06-06 A method for using non-temporal streaming stores to improve garbage collection algorithm
CNB028097939A CN1237451C (en) 2001-06-19 2002-06-06 Method for using non-temporal steaming stores to improve garage collection algorithm
HK04108154A HK1067418A1 (en) 2001-06-19 2004-10-19 A method for using non-temporal streaming stores to improve garbage collection algorithm

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/885,745 US6950837B2 (en) 2001-06-19 2001-06-19 Method for using non-temporal streaming to improve garbage collection algorithm

Publications (2)

Publication Number Publication Date
US20020194210A1 true US20020194210A1 (en) 2002-12-19
US6950837B2 US6950837B2 (en) 2005-09-27

Family

ID=25387598

Family Applications (1)

Application Number Title Priority Date Filing Date
US09/885,745 Expired - Fee Related US6950837B2 (en) 2001-06-19 2001-06-19 Method for using non-temporal streaming to improve garbage collection algorithm

Country Status (6)

Country Link
US (1) US6950837B2 (en)
CN (1) CN1237451C (en)
AU (1) AU2002312374A1 (en)
DE (1) DE10296957T5 (en)
HK (1) HK1067418A1 (en)
WO (1) WO2002103527A2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198088A1 (en) * 2004-03-03 2005-09-08 Sreenivas Subramoney Method and system for improving the concurrency and parallelism of mark-sweep-compact garbage collection
US20090319720A1 (en) * 2008-06-20 2009-12-24 Seagate Technology Llc System and method of garbage collection in a memory device
US20100223429A1 (en) * 2009-03-02 2010-09-02 International Business Machines Corporation Hybrid Caching Techniques and Garbage Collection Using Hybrid Caching Techniques
CN102262591A (en) * 2010-05-31 2011-11-30 国际商业机器公司 Garbage collection method and system for memory copy system
US8793437B2 (en) 2007-04-18 2014-07-29 Samsung Electronics Co., Ltd. Cache memory system using temporal locality information and a data storage method
US8838888B2 (en) 2012-03-19 2014-09-16 International Business Machines Corporation Conditional write processing for a cache structure of a coupling facility
WO2015112864A1 (en) * 2014-01-27 2015-07-30 Western Digital Technologies, Inc. Garbage collection and data relocation for data storage system

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
JP5008845B2 (en) * 2005-09-01 2012-08-22 株式会社日立製作所 Storage system, storage apparatus and control method thereof
US20070118579A1 (en) * 2005-11-21 2007-05-24 Hudson Richard L Dynamic consistency between multiple versions of objects managed by a garbage collector using transactional memory support
US7506132B2 (en) 2005-12-22 2009-03-17 International Business Machines Corporation Validity of address ranges used in semi-synchronous memory copy operations
US7454585B2 (en) 2005-12-22 2008-11-18 International Business Machines Corporation Efficient and flexible memory copy operation
US7484062B2 (en) * 2005-12-22 2009-01-27 International Business Machines Corporation Cache injection semi-synchronous memory copy operation
TWI438633B (en) * 2007-11-29 2014-05-21 Ibm Garbage collection method of memory management, computer program product thereof, and apparatus thereof
US8407444B2 (en) * 2009-12-23 2013-03-26 International Business Machines Corporation Hardware off-load garbage collection acceleration for languages with finalizers
US8943108B2 (en) * 2009-12-23 2015-01-27 International Business Machines Corporation Hardware off-load memory garbage collection acceleration
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
PL3113026T3 (en) * 2015-06-29 2020-03-31 Aicas Gmbh Automatic memory management using a memory management unit
US10572181B2 (en) * 2017-02-01 2020-02-25 Microsoft Technology Licensing, Llc Multiple stage garbage collector
US11068390B2 (en) * 2019-02-01 2021-07-20 EMC IP Holding Company LLC Scalable garbage collection for deduplicated storage
US11580015B2 (en) * 2019-05-03 2023-02-14 EMC IP Holding Company LLC Garbage collection for a deduplicated cloud tier using functions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6249844B1 (en) * 1998-11-13 2001-06-19 International Business Machines Corporation Identifying, processing and caching object fragments in a web environment
US6334171B1 (en) * 1999-04-15 2001-12-25 Intel Corporation Write-combining device for uncacheable stores
US6356270B2 (en) * 1998-03-31 2002-03-12 Intel Corporation Efficient utilization of write-combining buffers
US6421689B1 (en) * 1998-06-30 2002-07-16 Oracle Corporation Moderately conservative, mostly copying 2 space garbage collector in the nursery of a generational memory manager

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02213960A (en) 1989-02-14 1990-08-27 Hitachi Ltd Cache memory
DE3912996A1 (en) 1989-04-20 1990-10-25 Asea Brown Boveri Region with low carrier lifetime in semiconductor devices - uses interstitial diffusion of foreign atoms then generation of vacancies into which atoms diffuse
JPH04170650A (en) * 1990-11-05 1992-06-18 Oki Electric Ind Co Ltd Data processor
US6205520B1 (en) 1998-03-31 2001-03-20 Intel Corporation Method and apparatus for implementing non-temporal stores

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6356270B2 (en) * 1998-03-31 2002-03-12 Intel Corporation Efficient utilization of write-combining buffers
US6421689B1 (en) * 1998-06-30 2002-07-16 Oracle Corporation Moderately conservative, mostly copying 2 space garbage collector in the nursery of a generational memory manager
US6249844B1 (en) * 1998-11-13 2001-06-19 International Business Machines Corporation Identifying, processing and caching object fragments in a web environment
US6334171B1 (en) * 1999-04-15 2001-12-25 Intel Corporation Write-combining device for uncacheable stores

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050198088A1 (en) * 2004-03-03 2005-09-08 Sreenivas Subramoney Method and system for improving the concurrency and parallelism of mark-sweep-compact garbage collection
US8793437B2 (en) 2007-04-18 2014-07-29 Samsung Electronics Co., Ltd. Cache memory system using temporal locality information and a data storage method
US20090319720A1 (en) * 2008-06-20 2009-12-24 Seagate Technology Llc System and method of garbage collection in a memory device
US20100223429A1 (en) * 2009-03-02 2010-09-02 International Business Machines Corporation Hybrid Caching Techniques and Garbage Collection Using Hybrid Caching Techniques
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US8738859B2 (en) 2009-03-02 2014-05-27 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
CN102262591A (en) * 2010-05-31 2011-11-30 国际商业机器公司 Garbage collection method and system for memory copy system
US8838888B2 (en) 2012-03-19 2014-09-16 International Business Machines Corporation Conditional write processing for a cache structure of a coupling facility
US8935471B2 (en) 2012-03-19 2015-01-13 International Business Machines Corporation Conditional write processing for a cache structure of a coupling facility
WO2015112864A1 (en) * 2014-01-27 2015-07-30 Western Digital Technologies, Inc. Garbage collection and data relocation for data storage system
US9501393B2 (en) 2014-01-27 2016-11-22 Western Digital Technologies, Inc. Data storage system garbage collection based on at least one attribute
US10282130B2 (en) 2014-01-27 2019-05-07 Western Digital Technologies, Inc. Coherency of data in data relocation

Also Published As

Publication number Publication date
HK1067418A1 (en) 2005-04-08
CN1237451C (en) 2006-01-18
WO2002103527A3 (en) 2003-03-06
AU2002312374A1 (en) 2003-01-02
WO2002103527A2 (en) 2002-12-27
CN1509435A (en) 2004-06-30
US6950837B2 (en) 2005-09-27
DE10296957T5 (en) 2004-09-16

Similar Documents

Publication Publication Date Title
US6950837B2 (en) Method for using non-temporal streaming to improve garbage collection algorithm
US6662274B2 (en) Method for using cache prefetch feature to improve garbage collection algorithm
US9858183B2 (en) Determining a benefit of reducing memory footprint of a Java application
US7707232B2 (en) Implementation for collecting unmanaged memory
US7310718B1 (en) Method for enabling comprehensive profiling of garbage-collected memory systems
US6125434A (en) Dynamic memory reclamation without compiler or linker assistance
EP0993634B1 (en) Method and apparatus for managing hashed objects
US20060253498A1 (en) Method and apparatus for reclaiming memory from a heap
US20050268067A1 (en) Method and apparatus for memory-mapped input/output
US6493730B1 (en) Efficient object faulting with generational garbage collection
US6701520B1 (en) Preventing garbage collection of objects in object oriented computer programming languages
US6681306B1 (en) Method and apparatus for increasing scavenging garbage collection effectiveness
US20060253503A1 (en) Method and apparatus for aging a versioned heap system
US8131955B2 (en) Ephemeral garbage collection using a tracking mechanism on a card table to determine marked bundles
US20060161913A1 (en) Method and apparatus for marking code for data versioning
US7395386B2 (en) Method and apparatus for data versioning and recovery using delta content save and restore management
US6772296B1 (en) Method and apparatus facilitating automatic persistence in asymmetric storage
US7080354B2 (en) Method for implementing dynamic type checking
US6799253B1 (en) Stochastic scratchpad storage management technique
US20090228537A1 (en) Object Allocation System and Method
US11474832B2 (en) Intelligently determining a virtual machine configuration during runtime based on garbage collection characteristics
US20070067358A1 (en) Method and apparatus for restoring versionable objects
US6829686B2 (en) Method and apparatus for bag-to-set, buffering remembered set
US7653793B1 (en) Use of memory protection to implement replicating collection in an incremental, copying garbage collector
CN114051610A (en) Arena-based memory management

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTEL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SUBRAMONEY, SREENIVAS;HUDSON, RICHARD L.;REEL/FRAME:012266/0098;SIGNING DATES FROM 20010928 TO 20011003

FPAY Fee payment

Year of fee payment: 4

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20130927