DMA Address Translation Tables for Reusable Memory Descriptors
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
The generation of memory descriptors on the fly during runtime for DMA transfers incurs significant latency, especially in scenarios where data locations are determined dynamically, impacting the execution of applications like object recognition.
Innovation Solution
A DMA engine is equipped with a local address translation table to store address translation information, allowing memory descriptors to be generated once and reused by translating logical addresses to actual addresses at runtime, reducing the need for repeated descriptor generation.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If memory descriptors are generated on the fly during runtime for each DMA transfer, then the data transfer can accommodate dynamic data locations, but the DMA overhead and execution latency increase significantly
Solution Approach 1:
The patent pre-generates memory descriptors with placeholder addresses during compilation or initialization, storing them in a descriptor cache. At runtime, the address translation mechanism replaces placeholder addresses with actual data locations using address translation tables, avoiding the need to generate descriptors from scratch for each transfer. This preliminary preparation significantly reduces runtime overhead while maintaining adaptability to dynamic data locations.
Solution Approach 2:
The patent introduces address translation tables as an intermediary layer between the pre-generated descriptors and actual data locations. The translation mechanism maps placeholder addresses to real data locations without requiring descriptor regeneration, thus reducing DMA overhead while accommodating dynamic data placements caused by memory allocation variability.
2Reliability
If memory descriptors are generated on the fly during runtime, then the latest data locations can be used, but host processing time for descriptor copying increases
Solution Approach 1:
The patent creates a copy of the descriptor cache in the DMA engine's local memory, allowing the host to update address translation tables without repeatedly copying entire descriptor sets. The DMA engine independently accesses the copied descriptors and performs address translation using its local translation tables, significantly reducing host processing time while ensuring accurate data location information is used.
Solution Approach 2:
The address translation table acts as an intermediary that separates descriptor generation from data transfer execution. The host only needs to update translation tables with current data locations, while the DMA engine handles descriptor processing and address resolution independently, thereby maintaining data location accuracy without burdening the host with repeated descriptor copying operations.
3Loss of time
If address translation tables are implemented in the DMA engine, then descriptor reuse is enabled, but the device complexity increases
Solution Approach 1:
The patent integrates address translation table functionality into the existing DMA engine architecture, allowing the same hardware structure to serve both traditional DMA transfer functions and the new address translation feature. The translation tables are implemented as extensions of the DMA engine's existing memory management capabilities, enabling descriptor reuse and reduced overhead without requiring completely separate translation hardware.
Solution Approach 2:
The address translation tables are nested within the DMA engine's existing address management structure. The translation tables store mappings that are seamlessly integrated into the DMA descriptor processing pipeline, allowing the DMA engine to perform address translation as part of its normal operation without adding significant external complexity. The nested structure enables compact implementation within the existing device footprint.
Data Source
AI summary
Techniques to reduce direct memory access (DMA) overhead may include retrieving an address translation descriptor from a descriptor queue of a DMA engine, and updating an address translation table in the DMA engine with address translation information obtained from the location indicated by the address translation descriptor. A set of memory descriptors is then obtained from the descriptor queue. The set of memory descriptors can be processed by determining that the addresses in the set of memory descriptors are to be translated using the address translation table, and performing memory access operations by using the address translation table to translate the addresses in the set of memory descriptors.


