Packet Memory Collision Avoidance via State Machine Coordination
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In data centers and computing clusters, concurrent packet enqueue and dequeue operations often result in collisions when accessing shared memory, leading to delays due to the need for arbitration, which increases communication processing time.
Innovation Solution
The method involves using enqueue and dequeue state machines that communicate with each other to detect potential collisions, with the enqueue process pausing if a collision is detected and the dequeue process selecting an alternative queue pair if a collision occurs, thereby eliminating the need for an arbiter and allowing simultaneous access to shared memory.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If an arbiter is used to arbitrate memory access between enqueue and dequeue processes, then collision avoidance is achieved, but communication processing time increases due to arbitration delays
Solution Approach 1:
The patent extracts the arbiter component from the system entirely. Instead of using traditional arbitration mechanisms to manage memory access conflicts, the invention implements a collision detection and avoidance protocol where the enqueue and dequeue processes directly coordinate with each other through status register checks, eliminating the arbitration overhead and associated delays.
Solution Approach 2:
The enqueue and dequeue processes serve themselves by independently detecting potential collisions through status register checks and self-regulating their access patterns. The dequeue process checks the enqueue status register before accessing memory, and the enqueue process checks the dequeue status register, allowing both processes to autonomously avoid collisions without external arbitration.
2Reliability
If every memory access is arbitrated, then access conflicts are resolved, but processing efficiency decreases due to arbitration overhead
Solution Approach 1:
The patent implements preliminary collision detection by checking status registers before actual memory access operations. The dequeue process checks the enqueue status register to determine if the enqueue process is active before attempting to access the same memory location, and vice versa. This preliminary check prevents collisions before they occur, eliminating the need for arbitration during the actual access operation.
3Speed
If concurrent access to shared memory is allowed without arbitration, then processing speed increases, but collisions occur when both processes target the same memory area
Solution Approach 1:
The patent implements a feedback mechanism where the enqueue and dequeue processes continuously monitor each other's status through dedicated status registers. The enqueue process writes its activity status to a status register that the dequeue process reads, and vice versa. This feedback loop allows both processes to adapt their behavior in real-time, proceeding with concurrent access when safe and pausing when collision risk is detected, thus maintaining both speed and reliability.
Data Source
AI summary
A method and apparatus for enqueuing and dequeuing packets to and from a shared packet memory, while avoiding collisions. An enqueue process or state machine enqueues packets for a communication connection (e.g., channel, queue pair, flow). A dequeue process or state machine operating in parallel dequeues packets and forwards them (e.g., to an InfiniBand node). Packets are stored in the shared packet memory, and status/control information is stored in a control memory that is updated for each packet enqueue and packet dequeue. Prior to updating the packet and/or control memory, each process interfaces with the other to determine if the other process is active and/or to identify the other process' current communication connection. If the enqueue process detects a collision, it pauses (e.g., for a predetermined number of clock cycles). If the dequeue process detects a collision, it selects a different communication connection to dequeue.


