Private Memory Mode Warp Access Using Scalar Addresses
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing GPU architectures face inefficiencies in loading and storing data for multiple threads due to the need for vector operations and vector address buses, which complicates data addressing for concurrent thread execution.
Innovation Solution
A method and apparatus that utilize scalar memory addresses to efficiently load and store data for multiple threads by generating a scalar memory address based on thread block dimension information and addressing parameters, allowing data to be loaded or stored from consecutive memory addresses using a memory interface and memory unit.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If vector operations and vector address bus are used to load and store data for multiple threads, then data can be addressed for concurrent thread execution, but the device complexity and operation complexity increase
Solution Approach 1:
The patent segments the addressing task by separating the base address generation (scalar operation) from the thread-specific address calculation. The scalar memory address provides the base, while thread identifiers and block dimension information are used to calculate individual thread addresses, dividing the complex vector addressing into manageable scalar components.
Solution Approach 2:
The patent introduces an intermediary addressing mode that acts as a mediator between scalar and vector addressing. The scalar memory address serves as an intermediary base address, which is then combined with thread-specific offsets to generate complete thread addresses, avoiding the need for full vector address bus operations.
2Adaptability or versatility
If vector operations are used to prepare data addresses for multiple threads, then concurrent thread execution is supported, but the productivity and efficiency of data loading decreases
Solution Approach 1:
The system enables self-service addressing where each thread can calculate its own address offset from the scalar base address using its thread identifier and block dimension information. This eliminates the need for centralized vector operation preparation, allowing threads to independently access their data efficiently.
Solution Approach 2:
The scalar memory address is prepared in advance as a base address before thread execution begins. This preliminary action provides a ready-to-use reference point that threads can quickly combine with their individual offsets, eliminating the need for time-consuming vector operations during actual data access.
3Adaptability or versatility
If vector address bus is used for data addressing, then multiple thread data addresses can be generated, but the ease of operation and simplicity of the addressing process deteriorates
Solution Approach 1:
Instead of using complex vector operations to generate multiple addresses simultaneously, the patent inverts the approach by using a single scalar address combined with simple thread-specific calculations. This reversal simplifies the operation from complex parallel vector addressing to simple sequential scalar-based addressing.
Data Source
AI summary
Processors, systems and methods are provided for thread level parallel processing where threads in a warp are concurrently executed. A method may include sending thread block dimension information and addressing parameters stored in scalar registers of a sequencer by the sequencer to a memory port, generating a scalar memory address by the memory port and based on the thread block dimension information and the addressing parameters, and loading K words of data for a warp to a vector register from K consecutive memory addresses starting at the scalar memory address by a memory interface and a memory unit. The scalar memory address may point to a storage location of a piece of data for a first thread of the warp. And K may be a warp size representing a number of threads to be concurrently processed by executing a vector instruction.


