Ring Buffer Atomic Counter Lockless Producer Consumer

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing queue solutions, such as linked lists and ring buffers, face inefficiencies when handling multiple concurrently executing producers and consumers, requiring locks or multiple head/tail pointer pairs to manage simultaneous operations, leading to power consumption and execution time inefficiencies.

Innovation Solution

A method for inputting and outputting data items in a ring buffer using atomic operations with counters, where producers and consumers determine unique positions within the buffer, eliminating the need for locks and allowing for efficient power management and reduced cache line updates.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If locks are used to serialize access to the queue, then queue consistency is maintained, but power consumption increases and execution time is reduced

Engineering Contradiction:
Improvequeue consistencyVSAvoidpower consumption
Core Design Contradiction:
ReliabilityVSUse of energy by moving object

Solution Approach 1:

The patent extracts the locking mechanism from the queue access protocol and replaces it with atomic operations on counters. Each consumer has a dedicated counter that tracks the next available data item, eliminating the need for mutual exclusion locks while maintaining queue consistency through atomic increment and read operations.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent introduces counters as intermediary variables between producers and consumers. Instead of direct access to the queue structure requiring locks, consumers monitor their assigned counter to determine when data is available, and producers update the counter atomically when adding data, serving as a mediator that coordinates access without serialization.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If multiple consumers monitor the same memory position, then queue updates are detected, but all consumers resume execution and arbitration is required

Engineering Contradiction:
Improvequeue update detectionVSAvoidexecution time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent segments the monitoring responsibility among consumers by assigning each consumer a unique counter. Instead of all consumers monitoring the same queue head position, each consumer independently monitors their own counter, which is updated atomically by the producer. This segmentation eliminates the need for consumer arbitration and ensures only the appropriate consumer resumes execution.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary assignment of unique counters to consumers before they begin consuming data. This preliminary action establishes a clear division of monitoring responsibilities, so when data is produced, the counter update automatically identifies which specific consumer should be notified and resume execution, avoiding unnecessary context switches and arbitration overhead.

Inventive Principle:
Principle #10Preliminary action

3Productivity

If multiple head/tail pointer pairs are used for lock-less operation, then simultaneous access is enabled, but device complexity increases

Engineering Contradiction:
Improvesimultaneous access capabilityVSAvoidqueue structure complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent extracts the complexity of managing multiple pointer pairs and replaces it with simple atomic counter operations. Instead of implementing a complex lock-less queue structure with multiple head/tail pointers per consumer, the patent uses a single counter per consumer that is atomically updated, significantly simplifying the data structure while maintaining simultaneous access capability.

Inventive Principle:
Principle #2Taking out (Extraction)

4Reliability

If consumers monitor the head pointer or output index, then queue updates are detected, but cache line updates are frequent and power consumption increases

Engineering Contradiction:
Improvequeue update detectionVSAvoidpower consumption
Core Design Contradiction:
ReliabilityVSLoss of energy

Solution Approach 1:

The patent segments the monitoring targets so that each consumer monitors a unique counter rather than sharing monitoring of the same head pointer or output index. This segmentation ensures that when a producer adds data, only the specific consumer whose counter is updated needs to wake from idle state, reducing the frequency of cache line updates and associated power consumption compared to scenarios where multiple consumers monitor the same memory location.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS20250004959A1Producer, Consumer, System and Methods for Inputting and Outputting Data Items Into and Out from a Ring Buffer
Publication Date: 2025.01.02 TELEFONAKTIEBOLAGET LM ERICSSON (PUBL)
  • US20250004959A1 patent drawing
  • US20250004959A1 patent drawing
  • US20250004959A1 patent drawing

AI summary

The present disclosure relates to a method performed by a producer (105) for inputting data items in a ring buffer (100). The producer (105) performs an atomic operation comprising obtaining a sampled value of an input counter and incrementing the input counter. The producer (105) determines an input position to be the sampled value of the input counter modulo a size of the ring buffer (100). The producer (105) determines if a status of an element (103) located at the input position indicates free or occupied. If the status indicates free, the producer (105) inputs a data item at the input position. After the data item has been inputted, the producer (105) sets the status to occupied. If the status indicates occupied, then the producer repeats the determining if status of the element (103) located at the input position is free or occupied until the status indicates free.