Dynamic Bank Address Mapping for Multi-Bank Memory

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

In single-instruction multiple-thread (SIMT) processing environments, bank conflicts occur when parallel threads access multi-bank memory, leading to reduced performance as accesses to addresses mapped to the same bank must be completed in separate clock cycles.

Innovation Solution

A system and method that supports dynamic bank address mapping by allowing different bank bit-widths for each memory access, enabling per-thread addresses to be dynamically mapped based on a received bank mode, thereby avoiding bank conflicts by changing the address to bank mapping each clock cycle.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a fixed bank address mapping is used for all memory accesses, then the hardware structure is simple, but bank conflicts occur when multiple threads access the same bank simultaneously

Engineering Contradiction:
Improvehardware structureVSAvoidmemory access performance
Core Design Contradiction:
Device complexityVSProductivity

Solution Approach 1:

The patent implements dynamic bank address mapping by allowing the bank mode to change on each clock cycle. The address generation unit dynamically remaps per-thread addresses to banks based on the current bank mode, transforming the static mapping into a dynamic one that adapts to different memory access patterns and avoids bank conflicts without requiring complex hardware changes

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent changes the bank mode parameter on each clock cycle to redefine how addresses map to banks. By varying the bank mode parameter dynamically, the system can reconfigure the address-to-bank mapping relationship, allowing legacy applications to run efficiently on contemporary hardware with different bank configurations without permanent hardware modifications

Inventive Principle:
Principle #35Parameter changes

2Productivity

If different bank bit-widths are supported for different applications, then application performance is optimized, but the address mapping mechanism becomes more complex

Engineering Contradiction:
Improveapplication performanceVSAvoidaddress mapping mechanism
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The address generation unit is designed to handle multiple bank modes (32-bit, 64-bit, 128-bit) through a single unified mechanism. The same address generation unit dynamically adapts its behavior based on the bank mode parameter, eliminating the need for separate dedicated mapping mechanisms for different bit-widths and maintaining hardware simplicity while supporting diverse application requirements

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

3Adaptability or versatility

If legacy application programs are executed on contemporary processors with larger bank sizes, then backward compatibility is maintained, but performance degradation occurs due to bank conflicts

Engineering Contradiction:
Improvebackward compatibilityVSAvoidexecution performance
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The system dynamically adjusts the bank mode parameter for each memory access based on the application's requirements. When executing legacy applications, the bank mode is set to match the original 32-bit bank configuration, preserving the application's optimized access patterns. For contemporary applications requiring 64-bit or 128-bit banks, the mode is updated accordingly, allowing the same hardware to adapt to different application needs without performance loss

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS9262174B2Dynamic bank mode addressing for memory access
Publication Date: 2016.02.16 NVIDIA CORP
  • US9262174B2 patent drawing
  • US9262174B2 patent drawing
  • US9262174B2 patent drawing

AI summary

One embodiment sets forth a technique for dynamically mapping addresses to banks of a multi-bank memory based on a bank mode. Application programs may be configured to perform read and write a memory accessing different numbers of bits per bank, e.g., 32-bits per bank, 64-bits per bank, or 128-bits per bank. On each clock cycle an access request may be received from one of the application programs and per processing thread addresses of the access request are dynamically mapped based on the bank mode to produce a set of bank addresses. The bank addresses are then used to access the multi-bank memory. Allowing different bank mappings enables each application program to avoid bank conflicts when the memory is accesses compared with using a single bank mapping for all accesses.