Vertical ECC for DNN Weight Storage in Non-Volatile Memory

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing memory systems face a trade-off between data integrity and performance due to the use of error correction codes (ECC), where stronger ECC provides greater data integrity but at the cost of lower performance and reduced memory space, especially when storing data sets that can tolerate some level of error, such as Deep Neural Network weights.

Innovation Solution

Implementing a 'vertical' ECC approach, where bits of the same significance are grouped into streams and encoded with varying levels of ECC strength, with more significant bits receiving stronger ECC and lesser significant bits receiving weaker ECC, optimizing ECC overhead while maintaining data accuracy.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If stronger ECC is used to improve data integrity, then error correction capability is improved, but memory performance and storage efficiency deteriorate

Engineering Contradiction:
Improvedata integrityVSAvoidmemory performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies different ECC strengths to different parts of the data based on their significance. More significant bits (MSBs) that require higher accuracy are protected with stronger ECC, while less significant bits (LSBs) that can tolerate more error are protected with weaker ECC. This local differentiation resolves the contradiction by optimizing the balance between data integrity and performance for each bit position rather than applying uniform ECC strength to all data.

Inventive Principle:
Principle #3Local quality

2Reliability

If stronger ECC is used to improve data integrity, then error correction capability is improved, but storage space available for user data deteriorates

Engineering Contradiction:
Improvedata integrityVSAvoidmemory space
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

By applying stronger ECC only to MSBs and weaker ECC to LSBs, the patent reduces the total amount of ECC overhead required compared to uniform strong ECC protection. This local quality approach allows more memory space to be allocated to user data while maintaining appropriate data integrity for each bit's significance level.

Inventive Principle:
Principle #3Local quality

3Reliability

If stronger ECC is used to improve data integrity, then error correction capability is improved, but encoding and decoding complexity increases

Engineering Contradiction:
Improveerror correction capabilityVSAvoidencoding and decoding complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent reduces encoding and decoding complexity by applying weaker ECC algorithms to LSBs that can tolerate more error, rather than using strong ECC for all bits. This local differentiation optimizes the computational resources required for ECC operations while maintaining sufficient data integrity for each bit position's accuracy requirements.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS10691537B2Storing deep neural network weights in non-volatile storage systems using vertical error correction codes
Publication Date: 2020.06.23 SANDISK TECHNOLOGIES LLC
  • US10691537B2 patent drawing
  • US10691537B2 patent drawing
  • US10691537B2 patent drawing

AI summary

Techniques are presented for efficiently storing deep neural network (DNN) weights or similar type data sets in non-volatile memory. For data sets, such as DNN weights, where the elements are multi-bit values, bits of the same level of significance from the elements of the data set are formed into data streams. For example, the most significant bit from each of the data elements are formed into one data stream, the next most significant bit into a second data stream, and so on. The different bit streams are then encoded with differing strengths of error correction code (ECC), with streams corresponding to more significant bits encoded with stronger ECC code than streams corresponding to less significant bits, giving the more significant bits of the data set elements a higher level of protection.