Ring Buffer Multiple Head Pointers for Concurrent Dequeuing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The dequeuing operation in ring buffers becomes a scalability bottleneck due to the need for atomic updates of a single head pointer, leading to write contention and limiting parallel processing throughput.

Innovation Solution

Implementing multiple head pointers in a ring buffer to allow concurrent dequeuing operations, where each pointer indicates a different slot, and updating the selected pointer by a fixed increment or randomly to distribute the load and avoid contention.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a single head pointer is used for dequeuing operations in a ring buffer, then the structure is simple and easy to implement, but write contention occurs and scalability is limited

Engineering Contradiction:
Improvering buffer structureVSAvoidparallel processing throughput
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The single head pointer is segmented into multiple head pointers (N pointers), where each processing element can independently access and update its own pointer. This segmentation eliminates write contention by distributing the single update operation across multiple independent pointers, enabling N processing elements to dequeue concurrently without interfering with each other.

Inventive Principle:
Principle #1Segmentation

2Productivity

If multiple processing elements perform concurrent dequeuing operations, then data processing throughput is improved, but write contention on the head pointer becomes a bottleneck

Engineering Contradiction:
Improvedata processing throughputVSAvoidtime spent on atomic update procedures
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The head pointer resource is segmented into N independent pointers, allowing N processing elements to perform dequeuing operations simultaneously without requiring atomic update procedures. Each processing element reads from and updates its own dedicated pointer, eliminating the time loss associated with contention and synchronization.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Each processing element is assigned its own head pointer and independently manages its own dequeuing operations without requiring coordination with other processing elements. This self-service approach eliminates the need for atomic update procedures and inter-process synchronization, significantly reducing time loss.

Inventive Principle:
Principle #25Self-service

3Reliability

If atomic compare-and-swap operations are used for head pointer updates, then thread safety is ensured, but a scalability bottleneck is created due to write contention

Engineering Contradiction:
Improvethread safetyVSAvoidscalability
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The single contested head pointer is segmented into N independent pointers, where each processing element has exclusive access to its own pointer. This segmentation maintains thread safety without requiring atomic compare-and-swap operations, as each pointer is updated independently without contention. The scalability is improved because N processing elements can update their respective pointers in parallel without interfering with each other.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS12566712B2Ring buffer with multiple head pointers
Publication Date: 2026.03.03 ARM LTD
  • US12566712B2 patent drawing
  • US12566712B2 patent drawing
  • US12566712B2 patent drawing

AI summary

Apparatuses and methods of operating such apparatuses are disclosed, where the apparatus provides ring buffer storage to hold queued elements. Multiple head pointers are stored and maintained with respect to the ring buffer, wherein the multiple head pointers have a multiplicity N. When a dequeuing operation is performed with respect to an element queued in the ring buffer, reference is made to a selected head pointer of the multiple head pointers and a slot index value is derived. An element held in a slot corresponding to the slot index value is dequeued and the value of the selected head pointer is increased by N. Support for concurrent dequeuing operations is thus provided, in that write contention for a single head pointer is avoided.