Multicast Copy Ring for Database DMA Filtering Engine

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Database servers executing on multi-core processors face inefficiencies in moving tabular data due to overhead from direct memory access (DMA) operations, as the data is not optimally formatted for DMA engines, and the limited size of memory closer to the core processor leads to frequent interrupts, degrading processor performance.

Innovation Solution

A hardware-accelerated data movement system with multiple data movement engines that transform and move tabular data from main memory to core processors, utilizing internal memories with data/control structures for efficient data manipulation and partitioning, and employing descriptors for optimized data movement and partitioning across core processors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If data is moved from main memory to local memory using traditional DMA operations, then data movement is performed, but frequent interrupts occur degrading processor performance

Engineering Contradiction:
Improvedata movement efficiencyVSAvoidprocessor performance
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system segments data movement operations by organizing data into descriptor-based chunks with specific formats optimized for DMA engines. Each descriptor represents a discrete data movement task that can be processed independently, allowing the system to batch multiple operations and reduce interrupt frequency while maintaining throughput.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Data is pre-formatted into optimal DMA structures before being transferred to local memory. The system performs preliminary organization of tabular data into row-major or column-major formats that match DMA engine expectations, eliminating the need for frequent interrupt-driven reformatting operations during data movement.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If data is formatted for optimal DMA engine operation, then data movement efficiency improves, but data transformation overhead increases

Engineering Contradiction:
ImproveDMA operation efficiencyVSAvoiddata transformation complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system changes data representation parameters by maintaining multiple format versions of tabular data (row-major, column-major, compressed formats) and selecting the appropriate format based on the specific DMA operation requirements. This allows efficient DMA operations without requiring complex real-time transformation logic.

Inventive Principle:
Principle #35Parameter changes

Solution Approach 2:

Instead of transforming data in place, the system creates optimized copies of data in DMA-friendly formats. Descriptor structures contain pointers to pre-formatted data buffers, allowing the DMA engine to operate on copied data while the original data remains intact for other processing operations.

Inventive Principle:
Principle #26Copying

3Loss of time

If local memory size is increased to reduce interrupts, then interrupt frequency decreases, but memory cost and chip area increase

Engineering Contradiction:
Improveinterrupt frequencyVSAvoidlocal memory size
Core Design Contradiction:
Loss of timeVSArea of stationary object

Solution Approach 1:

The system implements continuous data movement operations by chaining multiple DMA transfers together using descriptor rings. When one data buffer is being processed, the next buffer is being prepared, ensuring the DMA engine operates continuously without idle periods or frequent interrupt cycles, thereby reducing interrupt frequency without requiring larger local memory.

Inventive Principle:
Principle #20Continuity of useful action

Solution Approach 2:

The system dynamically allocates and manages data buffers in local memory based on current processing needs. Descriptor structures point to flexible memory regions that can be reused across different operations, maximizing the utilization of limited local memory space while maintaining high throughput through continuous operation.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS10459859B2Multicast copy ring for database direct memory access filtering engine
Publication Date: 2019.10.29 ORACLE INT CORP
  • US10459859B2 patent drawing
  • US10459859B2 patent drawing
  • US10459859B2 patent drawing

AI summary

Techniques provide for hardware accelerated data movement between main memory and an on-chip data movement system that comprises multiple core processors that operate on the tabular data. The tabular data is moved to or from the scratch pad memories of the core processors. While the data is in-flight, the data may be manipulated by data manipulation operations. The data movement system includes multiple data movement engines, each dedicated to moving and transforming tabular data from main memory data to a subset of the core processors. Each data movement engine is coupled to an internal memory that stores data (e.g. a bit vector) that dictates how data manipulation operations are performed on tabular data moved from a main memory to the memories of a core processor, or to and from other memories. The internal memory of each data movement engine is private to the data movement engine. Tabular data is efficiently copied between internal memories of the data movement system via a copy ring that is coupled to the internal memories of the data movement system and/or is coupled to a data movement engine. Also, a data movement engine internally broadcasts data to other data movement engines, which then transfer the data to respective core processors. Partitioning may also be performed by the hardware of the data movement system. Techniques are used to partition data “in flight”. The data movement system also generates a column of row identifiers (RIDs). A row identifier is a number treated as identifying a row or element's position within a column. Row identifiers each identifying a row in column are also generated.