Infiniband Host Channel Adapter Hardware Linked List Queue

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Infiniband network nodes face challenges in efficiently managing and processing multiple data units across linked lists, particularly in ensuring data units are stored and transmitted in the correct order while allowing flexibility in processing order across different linked lists.

Innovation Solution

A hardware linked list queue is implemented on a communications adapter that dynamically manages multiple linked lists, allocating new lists as needed and ensuring data units are stored and transmitted based on their index values, allowing for individual management of each linked list and flexible processing order.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a single queue is used to store all data units, then the queue structure is simple, but data units from different linked lists cannot be processed independently and order is lost

Engineering Contradiction:
Improvequeue structureVSAvoiddata processing order
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The patent divides a single queue into multiple independent linked lists, where each linked list stores data units for a specific queue pair. This segmentation allows data units from different queue pairs to be processed independently while maintaining their respective order, resolving the contradiction between queue simplicity and data processing order reliability.

Inventive Principle:
Principle #1Segmentation

2Productivity

If multiple linked lists are implemented to manage different queue pairs, then data units can be processed independently and in-order within each list, but the hardware complexity increases

Engineering Contradiction:
Improvedata processing efficiencyVSAvoidhardware structure
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent merges multiple linked lists into a single hardware linked list queue structure, where different queue pairs share the same physical hardware resources. This combining approach enables independent processing of data units from different queue pairs while avoiding the complexity of implementing separate hardware queues for each queue pair, thus improving productivity without proportionally increasing hardware complexity.

Inventive Principle:
Principle #5Merging (Combining)

3Adaptability or versatility

If data units are stored in a fixed queue structure, then the storage structure is simple, but the system cannot handle dynamic allocation and multiple queue pairs efficiently

Engineering Contradiction:
Improvequeue pair managementVSAvoidstorage structure
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements a dynamic queue structure where linked lists can be created, destroyed, and modified at runtime based on the number and requirements of queue pairs. This dynamic approach allows the system to adapt to varying numbers of queue pairs and data unit sizes without requiring a fixed, complex storage structure, thereby improving adaptability while managing hardware complexity through software-controlled allocation.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS8804752B2Method and system for temporary data unit storage on infiniband host channel adaptor
Publication Date: 2014.08.12 ORACLE INT CORP
  • US8804752B2 patent drawing
  • US8804752B2 patent drawing
  • US8804752B2 patent drawing

AI summary

A method for temporary storage of data units including receiving a first data unit to store in a hardware linked list queue on a communications adapter, reading a first index value from the first data unit, determining that the first index value does match an existing index value of a first linked list, and storing the first data unit in the hardware linked list queue as a member of the first linked list. The method further includes receiving a second data unit, reading a second index value from the second data unit, determining that the second index value does not match any existing index value, allocating space in the hardware linked list queue for a second linked list, and storing the second data unit in the second linked list.