Register Addressing with Base-Plus-Immediate for Scalable Data Transfer
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing data transfer instructions in register storage lack flexibility to handle scalable data storage sizes and efficient loop unrolling, particularly for processing 2D arrays, leading to performance bottlenecks in applications like machine learning and matrix operations.
Innovation Solution
Implement data transfer instructions using a base register identifier and an immediate value to dynamically select target portions of register storage, enabling scalable code and loop unrolling, with support for 2D array operations and variable data element sizes.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If data transfer instructions use fixed register addressing modes, then instruction encoding is simple, but flexibility to handle scalable data storage sizes and loop unrolling is limited
Solution Approach 1:
The register addressing information is segmented into multiple components: a base register identifier and an immediate value. This segmentation allows the addressing mode to be extended for scalable data storage sizes while maintaining a relatively simple instruction encoding structure, as each component serves a specific function in the addressing calculation.
Solution Approach 2:
The patent introduces a new dimension to register addressing by combining base register identification with immediate value offsetting. This dimensional expansion enables the addressing mechanism to handle scalable data storage sizes and supports loop unrolling capabilities, transforming a simple fixed addressing mode into a more versatile system.
2Productivity
If data transfer instructions use base register and immediate value addressing, then loop unrolling and parallelism are improved, but instruction decoding and processing complexity increases
Solution Approach 1:
The base register and immediate value are prepared and combined in advance during the instruction decoding phase to generate the final register identifier. This preliminary action enables the processing circuitry to execute loop unrolling operations more efficiently, as the addressing information is ready before the data transfer operation begins, reducing runtime complexity.
Solution Approach 2:
The immediate value acts as an intermediary element that bridges the base register identifier and the final target register. This intermediary mechanism simplifies the overall decoding process by providing a straightforward addition operation to generate the target address, making the instruction processing more manageable despite the enhanced capabilities.
3Adaptability or versatility
If register addressing information includes base register identifier and immediate value, then adaptability for varying array sizes is improved, but the number of instruction bits required increases
Solution Approach 1:
Different portions of the instruction are allocated different qualities of precision: the base register identifier uses a fixed number of bits for register selection, while the immediate value uses a variable number of bits depending on the required offset magnitude. This local quality differentiation allows the instruction to adapt to varying array sizes without uniformly increasing the entire instruction length.
Solution Approach 2:
The patent employs parameter changes in the immediate value field to accommodate different array sizes. By varying the immediate value parameter based on the specific addressing requirements, the system achieves adaptability for varying array sizes while minimizing the overall instruction bit length through efficient parameter utilization.
Data Source
Figure 1
Figure 2A~2B
Figure 2C
AI summary
A data transfer instruction is provided which specifies register addressing information for identifying a target portion of the register storage. In response to the data transfer instruction, instruction decoding circuitry 30 controls processing circuitry to perform a data transfer operation to transfer data to or from the target portion of the register storage. The register addressing information includes at least: a base register identifier identifying a base register of the register storage for storing a base value; and an immediate value specified in an encoding of the data transfer instruction, the immediate value representing a value to be added to the base value to provide an index value for selecting the target portion of the register storage. This can be useful to provide an instruction set architecture which supports code that is scalable to variable data structure sizes, and which supports loop unrolling.