Flash Memory Parity Code Distribution for Storage Efficiency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional flash memory controllers inefficiently utilize memory space by dedicating one-eighth of a data block for parity check codes, reducing the effective storage capacity and user experience due to high error rates during programming failures, word line opens, or word line shorts.

Innovation Solution

Implementing a RAID-like error correction code encoding operation in a flash memory apparatus, which classifies data into groups, generates parity check codes, and performs internal copy operations to store these codes efficiently across multiple storage blocks, allowing for error correction during programming failures and physical errors.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If conventional flash memory controllers program parity check codes into dedicated pages, then error correction capability is improved, but memory space utilization deteriorates

Engineering Contradiction:
Improveerror correction capabilityVSAvoidmemory space utilization
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The patent merges the functions of data storage and parity check code storage by allowing parity check codes to be programmed into data pages alongside actual data. This combination approach eliminates the need for separate dedicated parity pages, thereby improving memory space utilization while maintaining error correction capability through the integrated RAID-like encoding scheme

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

Data pages are designed to serve multiple functions simultaneously: storing both user data and parity check codes. This multi-functionality allows the same memory space to provide both data storage capacity and error correction functionality, resolving the contradiction between reliability and space utilization

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

2Reliability

If one eighth of memory space is allocated for parity check codes, then error correction capability is improved, but effective storage capacity deteriorates

Engineering Contradiction:
Improveerror correction capabilityVSAvoideffective storage capacity
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

Instead of allocating a fixed one-eighth portion of memory for parity check codes, the patent implements a partial action approach where parity check codes are distributed throughout data pages based on actual error correction needs. This selective allocation provides error correction capability only where necessary, maximizing effective storage capacity while maintaining reliability

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The patent changes the parameter of parity check code allocation from a fixed ratio (one-eighth) to a flexible, dynamic distribution scheme. By modifying how parity codes are positioned and allocated within memory pages, the system achieves both error correction capability and maximized effective storage capacity

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10025662B2Flash memory apparatus and storage management method for flash memory
Publication Date: 2018.07.17 SILICON MOTION INC
  • US10025662B2 patent drawing
  • US10025662B2 patent drawing
  • US10025662B2 patent drawing

AI summary

A method used in a flash memory module having a plurality of storage blocks is disclosed. Each storage block can be used as a first block or a second block wherein a cell of the first block is arranged for storing data of 1 bit and a cell of the second block is arranged for storing data of at least 2 bits. The method includes: classifying data to be programmed into a plurality of groups of data; executing error code encoding to generate a corresponding parity check code to store the groups of data and the corresponding parity check code to at least one block of first blocks; and after completing storing the groups of data, performing an internal copy operation upon the groups of data and the corresponding parity check code from the at least one block of the first blocks to at least one second block.