In-Memory Convolution Accelerator for CNN Data Movement Reduction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Convolutions in convolutional neural networks (CNNs) require significant computer resources and data movement, making them computationally intensive and costly.

Innovation Solution

In-memory computing is used to perform convolutions by storing kernel matrix elements in memory cells, allowing input vectors to be applied in parallel to these cells for simultaneous computation of output matrix elements, reducing data movement and resource requirements.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of energy

If traditional von Neumann architecture is used for convolution computation, then computational flexibility is maintained, but data movement between memory and processor increases significantly

Engineering Contradiction:
Improveenergy consumptionVSAvoidarchitecture complexity
Core Design Contradiction:
Loss of energyVSDevice complexity

Solution Approach 1:

The patent merges memory and computation functions into a single integrated structure. Memory cells store kernel weights and simultaneously perform analog multiplication with input signals, eliminating the need for separate memory and processing units. This integration directly reduces data movement and energy consumption while accepting increased device structural complexity.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent replaces digital mechanical computation (sequential data movement and processing) with analog electrical computation. Electrical currents flow directly through memory cells to perform multiplication and accumulation operations, substituting the mechanical von Neumann data movement cycle with continuous electrical signal processing.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

2Productivity

If kernel matrix elements are stored in separate memory locations, then data organization is simplified, but the amount of data movement required for convolution increases

Engineering Contradiction:
Improvecomputation speedVSAvoiddata movement volume
Core Design Contradiction:
ProductivityVSQuantity of substance

Solution Approach 1:

The patent transitions from one-dimensional sequential data access to two-dimensional spatial parallel processing. Multiple kernel elements are arranged in a memory array where each cell can be accessed simultaneously through word lines and bit lines, enabling parallel computation across multiple data points and dramatically increasing productivity while reducing total data movement.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Solution Approach 2:

The patent performs preliminary organization of kernel data in the memory array before computation begins. Kernel weights are pre-positioned in specific memory locations corresponding to their spatial relationships in the convolution operation, allowing input signals to be applied once and have all necessary multiplications performed simultaneously without subsequent data shuffling.

Inventive Principle:
Principle #10Preliminary action

3Loss of time

If multiple input vectors are processed sequentially, then computation accuracy is maintained, but processing time increases

Engineering Contradiction:
Improveprocessing timeVSAvoidcomputation accuracy
Core Design Contradiction:
Loss of timeVSMeasurement precision

Solution Approach 1:

The patent enables continuous parallel processing of multiple input vectors through the analog nature of the memory array. While digital systems must complete one vector before starting the next, the analog memory array can receive and process multiple input vectors simultaneously through continuous electrical signal flow, dramatically reducing processing time while maintaining accuracy through the inherent linearity of analog computation.

Inventive Principle:
Principle #20Continuity of useful action

Applied Scientific Principles

This section explains which scientific principles are used to turn an abstract innovation direction into a practical engineering solution.

Function Achieved in This Case

This approach significantly decreases the computational resources and data movement needed for convolutions, enhancing operational speed and reducing power consumption.

Implementation Method 1

In-memory computing is an approach in which memory cells, organized in an in-memory computing device, can be used for both computation and storage. The weights for sum-of-products functions, for example, can be stored in memory cells of the in-memory computing device. The electrical characteristics of the memory cells of the array effectuate the sum-of-products function.

Methodology Applied
Scientific EffectIn-memory computation:

Implementation Method 2

The weights for sum-of-products functions, for example, can be stored in memory cells of the in-memory computing device. The electrical characteristics of the memory cells of the array effectuate the sum-of-products function.

Methodology Applied
Scientific EffectSum-of-products computation:

Data Source

PatentUS11562229B2Convolution accelerator using in-memory computation
Publication Date: 2023.01.24 MACRONIX INTERNATIONAL CO LTD
  • US11562229B2 patent drawing
  • US11562229B2 patent drawing
  • US11562229B2 patent drawing

AI summary

A method for accelerating a convolution of a kernel matrix over an input matrix for computation of an output matrix using in-memory computation involves storing in different sets of cells, in an array of cells, respective combinations of elements of the kernel matrix or of multiple kernel matrices. To perform the convolution, a sequence of input vectors from an input matrix is applied to the array. Each of the input vectors is applied to the different sets of cells in parallel for computation during the same time interval. The outputs from each of the different sets of cells generated in response to each input vector are sensed to produce a set of data representing the contributions of that input vector to multiple elements of an output matrix. The sets of data generated across the input matrix are used to produce the output matrix.