Address-less DMA Descriptor for Host Memory Throughput
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Direct Memory Access (DMA) in host computing systems experiences bottlenecks due to the high communication overhead required for memory descriptors, limiting data throughput and transfer rate, especially in cloud-computing environments where peripheral components use programmable logic devices like FPGAs for custom logic implementations.
Innovation Solution
Implementing a contiguous block of host memory for data transfers in both directions, eliminating the need for memory addresses in host-to-device descriptors and eliminating device-to-host descriptors altogether, and aligning data transfers with natural memory boundaries to reduce communication and complexity.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If traditional memory descriptors with memory addresses are used for DMA transfers, then data transfer accuracy is ensured, but communication overhead increases and data throughput decreases
Solution Approach 1:
The patent extracts and removes the memory address field from the host-to-device memory descriptor, keeping only the essential length information. This extraction reduces the descriptor size and communication overhead while the data movement engine maintains accurate data transfer using its own internal address tracking mechanisms.
Solution Approach 2:
The data movement engine is designed to self-manage memory addressing for host-to-device transfers by maintaining its own internal pointers and counters. It serves itself by tracking the current host memory address and automatically updating it during transfers, eliminating the need for the host system to provide detailed address information in descriptors.
2Productivity
If device-to-host memory descriptors are eliminated, then communication overhead is reduced, but device control over memory transfers is simplified
Solution Approach 1:
The data movement engine self-manages device-to-host transfers by maintaining its own internal pointers and automatically generating memory descriptors when data is ready for transfer. This self-service approach eliminates the need for complex descriptor management protocols while preserving full device control over the transfer process.
3Productivity
If contiguous memory blocks are used for data transfers, then data throughput is improved, but memory allocation complexity increases
Solution Approach 1:
The host system performs preliminary memory allocation by pre-allocating contiguous memory blocks for data transfers before actual data transfer operations begin. This preliminary action ensures that when transfers occur, the memory is already ready and contigous, improving throughput without requiring complex dynamic allocation logic during the transfer process itself.
Data Source
AI summary
To improve data throughput and data transfer rate, a contiguous block of host memory can be allocated for data transfers between the host system and an integrated circuit device such as a peripheral component. By using a contiguous block of memory that acts as a circular buffer, the memory address field of memory descriptors can be eliminated because the host system only need to inform the data movement engine of the length of each data transfer. The data movement engine can maintain pointers to keep track of the memory address in the host memory to read from and write to. After each data transfer, the relevant pointer can be incremented by a value corresponding to the length indicated in the memory descriptor for the transfer. As such, it is not necessary for the host system to provide the data movement engine with the memory address of each transfer.


