GPU Parallel Garbage Collection Card Root Address Computation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing garbage collection mechanisms in computing systems often result in unacceptable pause times and cache utilization issues due to their time-consuming nature and reliance on cache space, especially when performed concurrently with application execution.

Innovation Solution

A system and method utilizing a special processing unit (SPU) with a SIMD parallel architecture, such as a GPU, to perform garbage collection tasks independently of the CPU, allowing for parallel computation of card root addresses without incurring a garbage collection pause, thereby improving overall system performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a garbage collection algorithm is executed on the entire memory, then all unreachable data objects are identified and removed, but the pause time becomes unacceptably long

Engineering Contradiction:
Improvegarbage collection completenessVSAvoidgarbage collection pause time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent divides the memory heap into multiple generations (young generation and old generation) and further segments each generation into cards. The garbage collection algorithm is applied selectively to specific generations and cards rather than the entire memory, reducing pause time while maintaining completeness through multi-generation tracking of reachable objects.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs garbage collection on a portion of memory (specific generations and cards) rather than the entire memory space. By using card marking to identify only the relevant portions containing reachable objects, the algorithm achieves sufficient garbage collection with reduced pause time, applying partial action to the most critical memory regions.

Inventive Principle:
Principle #16Partial or excessive action

2Productivity

If a garbage collection algorithm is run concurrently with application execution, then system productivity is maintained, but the garbage collection pause time becomes unacceptable

Engineering Contradiction:
Improveapplication execution continuityVSAvoidgarbage collection pause time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent performs preliminary actions during application execution by marking cards that contain reachable objects in the old generation. This pre-marking allows the actual garbage collection to proceed quickly with minimal pause time, as the work of identifying reachable objects is done in advance during normal application operation.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent enables continuous application execution by implementing concurrent marking operations that proceed alongside application code execution. The garbage collection process is broken into phases that can overlap with application running, maintaining productivity while minimizing disruptive pauses through continuous useful action in both application and collector threads.

Inventive Principle:
Principle #20Continuity of useful action

3Speed

If cache space is utilized during garbage collection execution, then the algorithm can access data faster, but useful information is evicted and must be re-fetched

Engineering Contradiction:
Improvegarbage collection execution speedVSAvoiduseful information eviction
Core Design Contradiction:
SpeedVSLoss of information

Solution Approach 1:

The patent applies garbage collection processing locally to specific cards and generations rather than globally across all memory. By confining the algorithm's scope to marked cards only, it accesses and processes only the necessary data locally, avoiding cache pollution from unrelated data and preventing eviction of useful information from other parts of the memory hierarchy.

Inventive Principle:
Principle #3Local quality

4Reliability

If the number and size of addresses for pre-processing increase, then more reachable data objects can be located, but the address computation time increases and reduces the benefit of generational garbage collection

Engineering Contradiction:
Improvereachable object identification accuracyVSAvoidaddress computation time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the address computation task by dividing memory into cards and using card marking to identify only those cards containing reachable objects. This segmentation reduces the number of addresses that need to be computed and processed, as the algorithm only needs to examine marked cards rather than scanning the entire memory space, thereby reducing address computation time while maintaining identification accuracy.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS8327109B2GPU support for garbage collection
Publication Date: 2012.12.04 ADVANCED MICRO DEVICES INC
  • US8327109B2 patent drawing
  • US8327109B2 patent drawing
  • US8327109B2 patent drawing

AI summary

A system and method for efficient garbage collection. A general-purpose central processing unit (CPU) partitions an allocated heap according to a generational garbage collection technique. The generations are partitioned into fixed size cards. The CPU marks indications of qualified dirty cards during application execution since the last garbage collection. When the CPU detects a next garbage collection start condition is satisfied, the CPU sends a notification to a special processing unit (SPU) corresponding to a determination of one or more card root addresses, each card root address corresponding to one of said marked indications. The SPU has a single instruction multiple data (SIMD) parallel architecture and may be a graphics processing unit (GPU). The SPU may utilize the parallel architecture of its SIMD core to simultaneously compute multiple card root addresses. Following, the SPU sends these addresses to the CPU to be used in a garbage collection algorithm.