Variable Stride Pattern Processing Device
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing processing devices require significant storage space to explicitly store memory addresses for data transmission and reception, which is inefficient, especially in machine learning applications where data is often arranged in regular patterns.
Innovation Solution
Implementing a processing device with a send and receive engine that uses a variable stride pattern to access memory locations, allowing data to be sent or stored without requiring explicit address values for each item, by updating a pointer based on configuration values that define the stride pattern.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If memory addresses are explicitly stored in compiled code for data transmission, then data can be accurately identified and transmitted, but the storage space in instruction memory is significantly increased
Solution Approach 1:
The patent uses a pointer register to store base address information and a stride value to represent the pattern of memory access. Instead of copying explicit addresses for each data element, the system copies only the base address and stride parameters, which can then generate all necessary addresses through calculation. This reduces the code size while maintaining the ability to accurately identify and transmit data.
Solution Approach 2:
The patent transforms the representation of memory addresses from explicit address values to a parameter-based system using base address and stride values. By changing the parameters from individual addresses to a compact representation (base address + stride), the system achieves both space efficiency and accurate data identification. The stride parameter enables the system to adapt to different data patterns without requiring separate address specifications.
2Measurement precision
If explicit address values are used for each data item, then data locations can be precisely identified, but the code size for data transmission increases
Solution Approach 1:
The system copies only essential parameters (base address and stride) rather than complete address sequences. This copying approach maintains precision because the stride value encodes the pattern information, allowing the system to reconstruct exact addresses when needed while keeping the stored code compact.
Solution Approach 2:
The patent introduces a dynamic address generation mechanism where the effective address is calculated as base address plus the product of stride and iteration count. This dynamic approach allows the system to generate precise addresses on-the-fly during execution, eliminating the need to store all addresses explicitly in the code, thus reducing code size while maintaining address precision.
3Volume of stationary object
If regular patterns in data arrangement are utilized, then storage space can be reduced, but the system must handle variable stride patterns
Solution Approach 1:
The patent implements a dynamic stride pattern system where the stride value can be modified during execution through instructions that update the pointer register. This allows the system to adapt to different data patterns (regular, irregular, nested patterns) while maintaining a compact code representation. The ability to dynamically change stride values provides versatility without requiring separate explicit address codes for each pattern type.
Solution Approach 2:
The base address and stride parameter system serves multiple functions: it handles regular patterns, irregular patterns, nested data structures, and dynamic data arrangements. This universal approach eliminates the need for different addressing modes or separate code paths for different patterns, providing adaptability while keeping the instruction memory compact.
Data Source
AI summary
For certain applications, parts of the application data held in memory of a processing device (e.g. that are produced as a result of operations performed by the execution unit) are arranged in regular repeating patterns in the memory, and therefore, the execution unit may set up a suitable striding pattern for use by a send engine. The send engine accesses the memory at locations in accordance with the configured striding pattern so as to access a plurality of items of data that are arranged together in a regular pattern. In a similar manner as done for sends, the execution may set up a striding pattern for use by a receive engine. The receive engine, upon receiving a plurality of items of data, causes those items of data to be stored at locations in the memory, as determined in accordance with the configured striding pattern.


