Hierarchical Memory for CNN Data Reuse

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current convolutional neural networks face inefficiencies in memory access and reuse due to repeated data rotation near the multiply accumulate layer, leading to suboptimal memory usage and access times.

Innovation Solution

Implementing a hierarchical memory structure by partitioning memory into sections, stripes, and tiles, and utilizing a multi-level memory hierarchy that stores data components linearly in different address directions to minimize random access memory usage and maximize data reuse.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If data is repeatedly addressed and stored near the multiply accumulate layer, then data can be reused, but memory access latency increases and memory usage becomes inefficient

Engineering Contradiction:
Improvedata reuse efficiencyVSAvoidmemory access latency
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent segments the memory hierarchy into multiple levels (L1 cache, L2 cache, main memory) with different access characteristics. Each level is optimized for specific access patterns, allowing frequent data reuse at lower levels while maintaining overall system performance.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements a nested memory hierarchy where smaller, faster memory structures are contained within larger, slower ones. The L1 cache is nested within the L2 cache structure, which is nested within main memory, creating concentric layers of memory with varying access speeds and capacities.

Inventive Principle:
Principle #7Nested doll (Nesting)

2Productivity

If a multi-level memory hierarchy is implemented, then data access patterns are optimized, but device complexity increases

Engineering Contradiction:
Improvememory access efficiencyVSAvoidmemory hierarchy structure
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent implements dynamic memory management where the system can adaptively select which memory level to access based on data reuse patterns and access frequency. The memory hierarchy dynamically adjusts its behavior to optimize performance without requiring complex manual intervention.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The patent introduces intermediary buffer structures between different memory levels that automatically manage data transfer and caching. These intermediaries handle the complexity of coordinating multiple memory levels, allowing the system to access data efficiently without direct complex interactions between memory components.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Loss of time

If data is stored and reused locally, then memory access latency is reduced, but the memory structure becomes more complex

Engineering Contradiction:
Improvememory access timeVSAvoidmemory organization structure
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The patent applies local quality optimization by creating localized cache structures (L1 cache) that are specifically optimized for frequently accessed data near the multiply accumulate layer. Different parts of the memory hierarchy have different qualities optimized for their specific access patterns, allowing local performance optimization without requiring the entire memory system to be complex.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS11367498B2Multi-level memory hierarchy
Publication Date: 2022.06.21 BLACK SESAME TECH INC
  • US11367498B2 patent drawing
  • US11367498B2 patent drawing
  • US11367498B2 patent drawing

AI summary

A method of hierarchical structuring a multi-level memory in a convolutional neural network, includes partitioning a memory into a plurality of sections, partitioning the plurality of sections into a plurality of stripes, utilizing input data from the plurality of stripes in a MAC array, outputting an intermediate result from the MAC array to at least one of the plurality of stripes of a result buffer, looping back the intermediate result from the at least one of the plurality of stripes of the result buffer to at least one of the plurality of stripes of an input data buffer and outputting a final result from the at least one of the plurality of stripes of the result buffer to at least one of the plurality of stripes of an output buffer.