Hybrid DMA Descriptor Blocks for Non-Contiguous Memory Transfer

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing DMA descriptor implementations either limit data transfers due to contiguous memory constraints or incur high memory overhead with linked lists, failing to efficiently manage large data transfers between non-contiguous memory addresses.

Innovation Solution

A hybrid descriptor system using linked lists of descriptor blocks, where each block stores multiple entries in contiguous memory, allowing flexible expansion with reduced memory overhead, enabling efficient data transfers between non-contiguous memory addresses.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If traditional linked lists are used to manage DMA descriptors for non-contiguous memory addresses, then flexibility for accommodating numerous data segments is improved, but memory overhead increases significantly

Engineering Contradiction:
Improveflexibility for accommodating numerous data segmentsVSAvoidmemory overhead
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The descriptor structure is segmented into fixed-size blocks (e.g., 8 entries per block) rather than using individual linked list nodes for each descriptor entry. This segmentation allows multiple descriptors to be packed into contiguous memory blocks, reducing the memory overhead associated with linked list pointers while maintaining the ability to accommodate numerous data segments through block chaining.

Inventive Principle:
Principle #1Segmentation

2Quantity of substance

If contiguous memory blocks are used for descriptor storage, then memory overhead is reduced, but the ability to handle non-contiguous memory addresses is limited

Engineering Contradiction:
Improvememory overheadVSAvoidability to handle non-contiguous memory addresses
Core Design Contradiction:
Quantity of substanceVSAdaptability or versatility

Solution Approach 1:

The solution implements a nested structure where fixed-size descriptor blocks are chained together through next-pointer fields. Each block contains multiple descriptor entries in contiguous memory, and blocks themselves are linked to form a hierarchical structure that can represent non-contiguous memory address spaces while maintaining efficient contiguous storage within each block.

Inventive Principle:
Principle #7Nested doll (Nesting)

3Quantity of substance

If fixed-size descriptor blocks are used instead of linked lists, then memory overhead is reduced by nearly half, but complexity in managing block chains increases

Engineering Contradiction:
Improvememory overheadVSAvoidcomplexity in managing block chains
Core Design Contradiction:
Quantity of substanceVSDevice complexity

Solution Approach 1:

All descriptor blocks are standardized with uniform fixed sizes and identical field structures (descriptor entries followed by a next-pointer). This homogeneity simplifies memory allocation, traversal, and management operations compared to heterogeneous linked list nodes, as the DMA controller can use identical processing logic for all blocks regardless of their position in the chain.

Inventive Principle:
Principle #33Homogeneity

Data Source

PatentUS10169271B1Direct memory access descriptor
Publication Date: 2019.01.01 XILINX INC
  • US10169271B1 patent drawing
  • US10169271B1 patent drawing
  • US10169271B1 patent drawing

AI summary

Methods and systems are disclosed for transferring data using descriptors to reference memory locations at which data is to be written to or read from. Each descriptor references a respective linked list of descriptor blocks. Each of the descriptor blocks includes a contiguous portion of the memory that stores a plurality of addresses, at which data is to be written to or read from. In response to receiving the data transfer request, a set of data is transferred from a first set of addresses specified in a first descriptor to a second set of addresses specified in a second descriptor by traversing the linked lists of descriptor blocks in the first and second descriptors.