DDMA Controller Out-of-Order Scatter Gather List Processing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Semiconductor storage devices face inefficiencies in processing read commands due to the rapid consumption of local memory space and increased latency when handling atypical Scatter Gather List (SGL) data descriptors, which blocks the processing of typical data tags and slows down overall transfer rates.
Innovation Solution
A semiconductor storage device with a DDMA controller that pre-fetches and processes data tags by segregating them into lists based on descriptor thresholds, allowing typical data tags to be processed out of order while atypical data tags are processed in order, preventing memory overflow and maintaining efficient buffer utilization.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If the system pre-fetches and stores all descriptors for atypical SGL data tags in local memory, then the data transfer can be processed efficiently, but the available local memory space is quickly consumed and processing latency increases
Solution Approach 1:
The patent segments data tags into two distinct categories: typical data tags with a limited number of descriptors and atypical data tags with a large number of descriptors. This segmentation allows the system to apply different processing strategies to each category, preventing memory exhaustion while maintaining efficient processing for the majority of typical cases.
Solution Approach 2:
The patent extracts atypical data tags from the main processing stream and handles them separately through in-order processing. By removing these outlier cases from the out-of-order processing path, the system prevents them from consuming excessive memory resources and blocking typical data tag processing.
2Device complexity
If the system processes atypical SGL data tags using the same out-of-order processing as typical tags, then processing simplicity is maintained, but the overall transfer rate is slowed down due to buffer inefficiency
Solution Approach 1:
The patent divides the processing logic into two separate paths: out-of-order processing for typical data tags and in-order processing for atypical data tags. This segmentation allows each path to be optimized for its specific workload, maintaining simplicity for typical cases while preventing performance degradation from atypical cases.
Solution Approach 2:
The patent extracts atypical data tags from the out-of-order processing stream and processes them separately in-order. This extraction removes the performance-blocking element from the main processing path, ensuring that typical data tags continue to be processed at high speed without being held up by atypical cases.
3Speed
If the system uses pre-fetching for all data tags, then read command processing speed increases, but atypical SGL data tags cause memory space exhaustion and processing blocks
Solution Approach 1:
The patent segments data tags into typical and atypical categories based on the number of descriptors. This segmentation enables the system to apply pre-fetching selectively to typical data tags where it provides performance benefits, while avoiding pre-fetching for atypical data tags that would cause memory exhaustion and processing instability.
Data Source
AI summary
A semiconductor storage device includes a controller including a data direct memory access (DDMA) controller. The controller receives a plurality of read commands segmented into data transfer descriptors associated with data tags from a host device and directs a plurality of the data transfer descriptors to the DDMA controller. The DDMA controller pre-fetches one or more descriptors from the host device associated with one or more of the plurality of data tags, a first data tag having an associated number of descriptors corresponding to contiguous blocks of memory. The DDMA controller determines if the associated number of descriptors satisfies a threshold, and, if it does not, moves the first data tag to a first list, when at a head of the first list moves the first data tag to a second list, and when at a head of the second list, transmits the data associated with the first data tag.


