Strided Block Transfer Instruction for Memory Misalignment

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional graphics processing systems burden the central processing unit (CPU) with the task of block data transfers between memory components due to lack of access to translation lookaside buffers and page tables, and misalignment issues caused by different memory pitches.

Innovation Solution

Implementing a strided block transfer instruction that allows the CPU to transfer data blocks between memory components efficiently by determining source and destination memory locations, number of lines, bytes per line, and memory pitches, enabling a single instruction execution and minimizing data transfer misalignment.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the CPU uses a software loop to transfer data line by line between memory components, then the block transfer can be completed, but the CPU workload becomes significant and transfer efficiency is reduced

Engineering Contradiction:
Improveblock transfer efficiencyVSAvoidCPU workload
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The block transfer operation is segmented into multiple independent line transfers, where each line can be transferred independently. The strided block transfer instruction enables the CPU to issue a single instruction that automatically segments and executes multiple line transfers, reducing the need for complex software loops while maintaining flexibility in handling different source and destination memory configurations

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The strided block transfer instruction implements periodic action by automatically repeating the transfer operation for each line of the block. The instruction contains parameters that define the number of lines to transfer and the pitch (stride) for each transfer, allowing the hardware to periodically execute the transfer operation without requiring a software loop to manage each individual line transfer

Inventive Principle:
Principle #19Periodic action

2Adaptability or versatility

If the source memory and destination memory have different pitches, then flexibility in memory configuration is achieved, but misalignment of the transferred block occurs

Engineering Contradiction:
Improvememory configuration flexibilityVSAvoidblock transfer alignment
Core Design Contradiction:
Adaptability or versatilityVSManufacturing precision

Solution Approach 1:

The strided block transfer instruction introduces dynamic adaptability by allowing the pitch (stride) parameter to be independently specified for both source and destination memories. This dynamic parameter adjustment enables the instruction to accommodate different memory configurations and pitch values while maintaining proper alignment through hardware-managed address calculation that automatically compensates for pitch differences

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The instruction changes the approach from fixed alignment to parameter-driven alignment by incorporating pitch parameters that can be independently set for source and destination memories. This parameter change allows the system to adapt to different memory configurations while maintaining precise control over the transfer alignment through hardware that uses these parameters to calculate the correct source and destination addresses for each line transfer

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS8432409B1Strided block transfer instruction
Publication Date: 2013.04.30 MEDIATEK INC
  • US8432409B1 patent drawing
  • US8432409B1 patent drawing
  • US8432409B1 patent drawing

AI summary

A computer readable medium embodies a set of instructions. The set of instructions includes an instruction to manipulate a processor to determine a first value representative of a source memory location of a source storage component, a second value representative of a destination memory location of a destination storage component, a third value representative of a number of lines of a data block to be transferred from the source storage component to the destination storage component, a fourth value representative of a number of bytes to be transferred per line of the data block, a fifth value representative of a byte width of the source storage component and a sixth value representative of a byte width of the destination storage component. The instruction further is to transfer a data block from the source storage component to the destination storage component based on the first, second, third, fourth, fifth and sixth values.