Transactional Memory Ring Buffer Priority Management

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Network processor integrated circuits face challenges in efficiently managing packet traffic and buffer operations, particularly in handling full or empty buffer rings, which affects throughput and processing efficiency.

Innovation Solution

A transactional memory system with a command/push/pull (CPP) bus interface, including a ring buffer control circuit and memory unit, that uses head and tail pointers to manage buffer operations, supports 'put into ring,' 'get from ring,' 'put into ring with low priority,' and 'get from one of a set of rings' commands, ensuring efficient buffer management and error handling.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional buffer management is used in network processors, then buffer operations can be performed, but overflow and underflow errors occur when rings are full or empty, reducing throughput and processing efficiency

Engineering Contradiction:
Improvebuffer operation reliabilityVSAvoidthroughput
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent implements preliminary checks of ring buffer status (full/empty conditions) before executing put/get operations. The system proactively identifies and handles potential overflow/underflow conditions by returning error codes before the actual operations occur, preventing data loss and ensuring reliable buffer management while maintaining processing throughput.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If priority-based buffer management is implemented, then critical operations can be handled efficiently, but system complexity increases with multiple priority levels and scheduling mechanisms

Engineering Contradiction:
Improveoperation efficiencyVSAvoidbuffer management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent applies different priority handling to different ring buffers individually rather than implementing a complex global priority scheduling system. Each ring buffer can be configured with its own priority level (high or low), allowing critical buffers to be serviced first while keeping the overall system architecture simple and manageable.

Inventive Principle:
Principle #3Local quality

3Reliability

If ring buffer status is continuously monitored to prevent overflow/underflow, then operational reliability improves, but additional control logic and processing overhead increase system complexity

Engineering Contradiction:
Improvebuffer status managementVSAvoidcontrol logic complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The ring buffer management system performs self-monitoring of its own status (head/tail pointer positions, full/empty conditions) and automatically handles error conditions by returning appropriate error codes. This self-service approach ensures reliable buffer management without requiring complex external control logic or additional monitoring hardware.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9280297B1Transactional memory that supports a put with low priority ring command
Publication Date: 2016.03.08 NETRONOME SYSTEMS INC
  • US9280297B1 patent drawing
  • US9280297B1 patent drawing
  • US9280297B1 patent drawing

AI summary

A transactional memory (TM) includes a control circuit pipeline and an associated memory unit. The memory unit stores a plurality of rings. The pipeline maintains, for each ring, a head pointer and a tail pointer. A ring operation stage of the pipeline maintains the pointers as values are put onto and are taken off the rings. A put command causes the TM to put a value into a ring, provided the ring is not full. A get command causes the TM to take a value off a ring, provided the ring is not empty. A put with low priority command causes the TM to put a value into a ring, provided the ring has at least a predetermined amount of free buffer space. A get from a set of rings command causes the TM to get a value from the highest priority non-empty ring (of a specified set of rings).