Circular FIFO Buffer Scatter Gather DMA Streaming

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computer systems experience latency and inefficient memory utilization due to the need for complete frame storage before processing image data streams, leading to delays in processing and suboptimal memory usage.

Innovation Solution

The implementation of scatter and gather direct memory access (DMA) streaming through a circular first-in, first-out (FIFO) buffer, utilizing producer and consumer DMA engines that manage data credits and pointers to enable concurrent data transfer and processing, allowing for efficient flow control and random access within the buffer.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If the display processor waits for a complete frame to be stored in memory before processing, then data integrity is ensured, but processing latency increases and memory utilization becomes inefficient

Engineering Contradiction:
Improvedata integrityVSAvoidprocessing latency
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The circular FIFO buffer enables preliminary action by allowing the producer DMA engine to continuously write data to the buffer in advance. The buffer pre-stores data chunks so that the display processor can immediately begin processing as soon as data becomes available, without waiting for complete frame storage. This eliminates the idle waiting period while maintaining data integrity through the structured buffer management protocol.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The circular FIFO buffer acts as an intermediary between the producer DMA engine and the display processor. It decouples the data production rate from the processing rate, allowing the producer to write continuously while the processor reads at its own pace. This intermediary buffer resolves the contradiction by enabling the processor to start processing immediately when data arrives, rather than waiting for complete frame storage, thus reducing latency while ensuring data integrity through the buffer's structured access patterns.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Device complexity

If the display processor waits for complete frame storage before processing, then memory access patterns are simplified, but memory utilization efficiency decreases

Engineering Contradiction:
Improvememory access pattern complexityVSAvoidmemory utilization efficiency
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The circular FIFO buffer segments the memory space into fixed-size buffer locations arranged in a circular pattern. Instead of requiring the processor to wait for complete frame storage, the buffer divides data into manageable chunks that can be accessed incrementally. The write pointer and read pointer segment the buffer into produced, consumed, and available regions, enabling efficient memory utilization while maintaining simple access patterns through the structured circular arrangement and pointer-based management.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The circular FIFO buffer introduces dynamics to the memory access system through moving write and read pointers that continuously advance through the buffer. This dynamic pointer mechanism allows the buffer to adapt to varying production and consumption rates, enabling the display processor to access data as soon as it's available rather than waiting for complete frames. The dynamic pointer updates maintain simple access patterns while dramatically improving memory utilization efficiency by keeping the memory actively engaged in data transfer and processing operations.

Inventive Principle:
Principle #15Dynamics

3Productivity

If multiple producer DMA engines transfer data concurrently to the buffer, then data transfer throughput increases, but buffer management complexity increases

Engineering Contradiction:
Improvedata transfer throughputVSAvoidbuffer management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The circular FIFO buffer merges multiple producer DMA engine outputs into a unified buffer structure. Instead of requiring separate buffer management for each producer, the system combines all producer streams into the same circular buffer with a single write pointer that sequentially assigns buffer locations to incoming data from any producer. This merging approach increases data transfer throughput by accommodating multiple concurrent producers while keeping buffer management complexity manageable through the unified pointer-based allocation scheme.

Inventive Principle:
Principle #5Merging (Combining)

4Adaptability or versatility

If the circular FIFO buffer enables random access patterns, then processing flexibility increases, but memory access overhead increases

Engineering Contradiction:
Improveprocessing flexibilityVSAvoidmemory access overhead
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The circular FIFO buffer enables parameter changes in memory access by allowing the read pointer to advance non-sequentially based on processing needs. While the physical buffer structure remains fixed, the logical access pattern becomes flexible as the read pointer can skip ahead or revisit previous locations depending on what the display processor needs to process next. This parameter change in access behavior increases processing flexibility while the underlying circular buffer structure maintains efficient memory access through its contiguous physical layout, minimizing actual memory access overhead.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS20240264963A1Scatter and Gather Streaming Data through a Circular FIFO
Publication Date: 2024.08.08 APPLE INC
  • US20240264963A1 patent drawing
  • US20240264963A1 patent drawing
  • US20240264963A1 patent drawing

AI summary

Systems, apparatuses, and methods for performing scatter and gather direct memory access (DMA) streaming through a circular buffer are described. A system includes a circular buffer, producer DMA engine, and consumer DMA engine. After the producer DMA engine writes or skips over a given data chunk of a first frame to the buffer, the producer DMA engine sends an updated write pointer to the consumer DMA engine indicating that a data credit has been committed to the buffer and that the data credit is ready to be consumed. After the consumer DMA engine reads or skips over the given data chunk of the first frame from the buffer, the consumer DMA engine sends an updated read pointer to the producer DMA engine indicating that the data credit has been consumed and that space has been freed up in the buffer to be reused by the producer DMA engine.