Memory Portion Balancer Shuffling Addresses for Cache Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

The speed difference between processors and memories in computers leads to inefficiencies, causing systems to appear frozen and limiting the growth of features and applications, as existing memory-access acceleration schemes fail to perform effectively when code behaves unexpectedly, resulting in underutilization of cache and multibank memory resources.

Innovation Solution

The implementation of a memory portion balancer that shuffles memory addresses based on bit ratios to balance access across multiple cache sets or memory banks, ensuring more equal distribution and utilization, thereby enhancing memory-access acceleration and overall computing performance.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If code naturally distributes requests evenly across memory portions, then memory access efficiency is improved, but this natural distribution does not occur in practice leading to performance degradation

Engineering Contradiction:
Improvememory access efficiencyVSAvoidnatural code distribution
Core Design Contradiction:
ProductivityVSEase of operation

Solution Approach 1:

The patent introduces a memory portion balancer as an intermediary component between the processor and memory system. This balancer intercepts memory requests, analyzes their distribution pattern, and actively redistributes them across memory portions (cache sets or memory banks) to achieve balanced access. The intermediary resolves the contradiction by not relying on natural code distribution but rather actively managing and balancing the distribution through hardware intervention.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Speed

If faster processor operates independently without waiting for memory, then processing speed is improved, but the speed difference causes the processor to wait and appear frozen

Engineering Contradiction:
Improveprocessor operating speedVSAvoidprocessor waiting time
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The memory portion balancer enables continuous useful action by preventing processor stalls. Through balanced memory access distribution, it ensures that memory requests are efficiently handled across multiple memory portions, reducing wait times and keeping the processor continuously productive. This resolves the speed mismatch by making memory access more predictable and efficient, allowing the fast processor to maintain its pace without frequent waiting.

Inventive Principle:
Principle #20Continuity of useful action

3Productivity

If existing memory-access acceleration schemes are used, then some performance improvement is achieved, but they fail when code behaves unexpectedly resulting in underutilization of cache and multibank memory

Engineering Contradiction:
Improvememory-access accelerationVSAvoidhandling unexpected code behavior
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The patent implements dynamic memory access balancing that adapts to different code execution patterns. The memory portion balancer monitors access patterns and dynamically adjusts the distribution strategy in real-time, rather than relying on fixed or static schemes. This dynamic approach allows the system to handle unexpected code behavior effectively, maintaining high memory utilization regardless of how the code accesses memory, thus resolving the contradiction between acceleration performance and adaptability.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS11797439B2Balancing memory-portion accesses
Publication Date: 2023.10.24 MICRON TECHNOLOGY INC
  • US11797439B2 patent drawing
  • US11797439B2 patent drawing
  • US11797439B2 patent drawing

AI summary

Described apparatuses and methods balance memory-portion accessing. Some memory architectures are designed to accelerate memory accesses using schemes that may be at least partially dependent on memory access requests being distributed roughly equally across multiple memory portions of a memory. Examples of such memory portions include cache sets of cache memories and memory banks of multibank memories. Some code, however, may execute in a manner that concentrates memory accesses in a subset of the total memory portions, which can reduce memory responsiveness in these memory types. To account for such behaviors, described techniques can shuffle memory addresses based on a shuffle map to produce shuffled memory addresses. The shuffle map can be determined based on a count of the occurrences of a reference bit value at bit positions of the memory addresses. Using the shuffled memory address for memory requests can substantially balance the accesses across the memory portions.