Flash Memory Boot Information Distribution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional flash memory initialization methods fail to reliably retrieve boot up information when bad blocks are present, leading to device operation failures, as they are not adaptable to various types of flash memories with different block and page configurations.

Innovation Solution

A method that generates randomly distributed candidate row addresses by setting seeds and using random functions to write boot up information across multiple blocks and pages, ensuring it can be retrieved even if some blocks become bad, using a controller with ROM and a processing circuit to execute this process.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If boot up information is stored in fixed pages in one or more blocks, then the storage structure is simple and easy to implement, but the system fails when the particular block becomes a bad block

Engineering Contradiction:
Improveease of implementationVSAvoidreliability of boot up information retrieval
Core Design Contradiction:
Ease of manufactureVSReliability

Solution Approach 1:

The boot up information is segmented into multiple copies distributed across different blocks and pages rather than stored in a single location. The initialization device generates multiple candidate row addresses spanning multiple blocks, and writes boot up information to several of these locations. This segmentation ensures that if one block becomes bad, the information can still be retrieved from other blocks.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system changes the parameter of storage location from fixed to variable/random. Instead of using a predetermined fixed page location, the invention uses randomly generated candidate row addresses across multiple blocks. This parameter change allows the system to adapt to different flash memory configurations and avoids single-point failures.

Inventive Principle:
Principle #35Parameter changes

2Speed

If the controller checks boot up information in only 8 consecutive blocks, then the checking process is fast and efficient, but the system cannot retrieve boot up information if these blocks are bad blocks

Engineering Contradiction:
Improvespeed of boot up information retrievalVSAvoidreliability of boot up information retrieval
Core Design Contradiction:
SpeedVSReliability

Solution Approach 1:

The initialization device performs preliminary action by pre-generating multiple candidate row addresses across many blocks before the controller needs to retrieve boot up information. These candidate addresses are stored in the flash memory, so when the controller needs to retrieve boot up information, it can quickly check multiple pre-prepared locations rather than searching sequentially through blocks.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system transitions from a static fixed-location storage approach to a dynamic random distribution approach. The candidate row addresses are randomly generated across multiple blocks, allowing the system to adapt to different flash memory states and configurations while maintaining fast retrieval through the pre-generated address list.

Inventive Principle:
Principle #15Dynamics

3Reliability

If boot up information is stored in randomly distributed pages across more blocks, then the reliability of retrieval is improved, but the complexity of the storage scheme increases

Engineering Contradiction:
Improvereliability of boot up information retrievalVSAvoidcomplexity of initialization scheme
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The initialization device performs self-service by automatically generating the random candidate row addresses and distributing boot up information across multiple blocks without requiring manual configuration. The system uses a random number generator to create the distribution pattern, eliminating the need for complex manual planning while achieving high reliability.

Inventive Principle:
Principle #25Self-service

4Adaptability or versatility

If the conventional method is applied to flash memories with different block and page configurations, then the method should be versatile, but it fails when the flash memory has more pages per block than the method was designed for

Engineering Contradiction:
Improveadaptability to different flash memory typesVSAvoidreliability of boot up information retrieval
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The initialization scheme achieves universality by generating candidate row addresses that can span multiple blocks regardless of the specific flash memory configuration. The random distribution approach and multi-block strategy work effectively whether flash memory has 128 pages per block, 4096 pages per block, or any other configuration, making the solution universally applicable.

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

Data Source

PatentUS11288181B2Flash memory initialization scheme for writing boot up information into selected pages averagely and randomly distributed over more pages and correspondingly method for reading boot up information from selected pages
Publication Date: 2022.03.29 SILICON MOTION INC
  • US11288181B2 patent drawing
  • US11288181B2 patent drawing
  • US11288181B2 patent drawing

AI summary

A method used by a flash memory initialization device for writing boot up information into a memory device including a controller and a flash memory includes: generating the boot up information; generating N block indices by calling a random function based on a first seed; generating M page indices for each of the N block indices; combining the M page indices with each of the N block indices to generate M×N candidate row addresses; and writing the boot up information from the flash memory initialization device into the flash memory by controlling the controller to write the boot up information into M pages belonging to at least one block sequentially based on the M×N candidate row addresses.