Unified Thread Address Mapping for Parallel Processors

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing parallel thread processors require multiple distinct memory access instructions for different memory spaces, leading to inefficiency in programming due to the need for separate instruction sequences based on memory type.

Innovation Solution

A method for thread address mapping that computes a virtual address from a thread address within a unified address space, allowing a single load or store instruction to access multiple memory spaces, including thread-local, shared, and global memory.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Measurement precision

If multiple distinct memory access instructions are used for different memory spaces (thread-local, shared, global), then memory access precision and control are improved, but device complexity and programming complexity increase

Engineering Contradiction:
Improvememory access precisionVSAvoidinstruction set complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent merges multiple distinct memory access instructions for different memory spaces into a single unified load/store instruction. The instruction uses a unified address space where thread-local, shared, and global memory are mapped to different address ranges. The memory system automatically routes accesses to the appropriate memory space based on the address range, eliminating the need for separate instructions while maintaining precise memory access control.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The unified load/store instruction is designed to be universal and can access all types of memory spaces (thread-local, shared, global) through address mapping. The instruction set is simplified to use a single type of pointer address that can reference any memory space, making the instruction multi-functional while maintaining the ability to precisely control access to different memory regions through address encoding.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Measurement precision

If separate instruction sequences are required for each memory type, then memory access control is improved, but ease of operation and programming efficiency deteriorate

Engineering Contradiction:
Improvememory access controlVSAvoidprogramming efficiency
Core Design Contradiction:
Measurement precisionVSEase of operation

Solution Approach 1:

The patent combines multiple separate instruction sequences into a single unified load/store instruction that can access all memory spaces. Programmers use one instruction type with different address values to access thread-local, shared, or global memory, eliminating the need to learn and maintain separate instruction sequences while preserving precise control over memory access behavior through address range encoding.

Inventive Principle:
Principle #5Merging (Combining)

3Reliability

If multiple distinct memory access instructions are used, then reliability of memory access is improved, but productivity and processing efficiency worsen

Engineering Contradiction:
Improvememory access reliabilityVSAvoidprocessing efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent merges multiple memory access instructions into a single unified instruction that maintains reliable access to all memory spaces through address mapping. The memory system automatically routes accesses to the appropriate memory space based on address ranges, ensuring reliable memory access while improving processing efficiency by reducing instruction decode complexity and enabling more efficient pipeline execution.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS8700877B2Address mapping for a parallel thread processor
Publication Date: 2014.04.15 NVIDIA CORP
  • US8700877B2 patent drawing
  • US8700877B2 patent drawing
  • US8700877B2 patent drawing

AI summary

A method for thread address mapping in a parallel thread processor. The method includes receiving a thread address associated with a first thread in a thread group; computing an effective address based on a location of the thread address within a local window of a thread address space; computing a thread group address in an address space associated with the thread group based on the effective address and a thread identifier associated with a first thread; and computing a virtual address associated with the first thread based on the thread group address and a thread group identifier, where the virtual address is used to access a location in a memory associated with the thread address to load or store data.