Byte-Addressable Per-Thread Reference Counters for Multithreaded Systems

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Traditional reference counting mechanisms are inefficient and prone to errors in tracking references to shared memory locations in multithreaded systems, particularly due to high latency and computational complexity associated with compare-and-swap operations, which limits their scalability in highly parallel programs.

Innovation Solution

A system using byte-addressable per-thread reference counters and a reference tracking data structure with an owner field and an array of atomically addressable entries, where each thread has a unique slot and can increment or decrement its counter only when holding the per-thread counter lock, reducing the need for compare-and-swap operations and improving scalability.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If traditional reference counting mechanisms use compare-and-swap operations to maintain counter coherence, then reference tracking accuracy is improved, but operational latency and computational complexity increase

Engineering Contradiction:
Improvereference tracking accuracyVSAvoidoperational latency
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent segments the reference counter into multiple byte-addressable fields, allowing different threads to access and modify specific bytes independently. This segmentation eliminates the need for atomic compare-and-swap operations on the entire counter, reducing operational latency while maintaining tracking accuracy through fine-grained control.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements per-thread reference counters where each thread has its own dedicated counter instance. This local quality approach allows threads to increment and decrement their own counters without synchronization overhead, significantly reducing computational complexity and latency while preserving reference tracking accuracy through localized management.

Inventive Principle:
Principle #3Local quality

2Device complexity

If traditional reference counting uses shared counters accessed by multiple threads, then reference tracking is simplified, but contention between threads increases and scalability deteriorates

Engineering Contradiction:
Improvereference counting mechanism simplicityVSAvoidconcurrent execution efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent divides the shared reference counter into multiple thread-specific segments, allowing concurrent threads to operate on their own segments without interfering with each other. This segmentation reduces thread contention while maintaining the overall reference counting functionality, improving concurrent execution efficiency without significantly increasing mechanism complexity.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements a self-service reference counting mechanism where each thread independently manages its own reference counter without requiring synchronization with other threads. This self-service approach eliminates contention entirely, allowing maximum concurrent execution efficiency while keeping the mechanism relatively simple through decentralized management.

Inventive Principle:
Principle #25Self-service

3Productivity

If byte-addressable per-thread reference counters are implemented, then concurrency and scalability are improved, but data structure complexity increases

Engineering Contradiction:
Improveconcurrent execution efficiencyVSAvoiddata structure complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent uses segmentation to create a scalable reference counting structure where the counter is divided into byte-addressable fields. While this increases structural complexity, the segmentation enables fine-grained concurrent access that dramatically improves productivity. The modular nature of the segmented structure allows efficient implementation and maintenance despite the increased complexity.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS8677076B2System and method for tracking references to shared objects using byte-addressable per-thread reference counters
Publication Date: 2014.03.18 ORACLE INT CORP
  • US8677076B2 patent drawing
  • US8677076B2 patent drawing
  • US8677076B2 patent drawing

AI summary

The system described herein may track references to a shared object by concurrently executing threads using a reference tracking data structure that includes an owner field and an array of byte-addressable per-thread entries, each including a per-thread reference counter and a per-thread counter lock. Slotted threads assigned to a given array entry may increment or decrement the per-thread reference counter in that entry in response to referencing or dereferencing the shared object. Unslotted threads may increment or decrement a shared unslotted reference counter. A thread may update the data structure and/or examine it to determine whether the number of references to the shared object is zero or non-zero using a blocking-optimistic or a non-blocking mechanism. A checking thread may acquire ownership of the data structure, obtain an instantaneous snapshot of all counters, and return a value indicating whether the number of references to the shared object is zero or non-zero.