Memory Controller Prefetching for Sequential Read Latency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing SSDs using NAND flash memory face inefficiencies in handling sequential read commands, as they separately process each command, leading to increased read time from the NAND flash memory and inefficient data transfer.

Innovation Solution

The memory device employs a thread management system with an extension thread, allowing for the storage of data in a volatile buffer and sequential transfer of consecutive LBAs, reducing the need for repeated reads from the NAND flash memory by managing read commands through a command and data buffer management system.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If each read command is processed separately by reading directly from NAND flash memory, then the system maintains simple command processing logic, but the read time increases and data transfer efficiency decreases

Engineering Contradiction:
Improvedata transfer efficiencyVSAvoidread time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The patent applies preliminary action by prefetching data from NAND flash memory into a buffer memory before it is actually requested. When sequential read commands are received, the system reads ahead and stores data in the buffer in advance, so that subsequent read operations can be served from the buffer rather than from the slower NAND flash memory, thereby reducing read time and improving data transfer efficiency.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces a buffer memory as an intermediary between the NAND flash memory and the host system. This buffer acts as a mediator that caches frequently accessed data, allowing the system to serve read requests from the fast buffer memory rather than repeatedly accessing the slower NAND flash memory, thus improving productivity and reducing loss of time.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If data is cached in volatile buffer memory for sequential read commands, then read performance improves, but the device complexity increases due to additional buffer management requirements

Engineering Contradiction:
Improveread performanceVSAvoidbuffer management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the memory system into distinct functional components: NAND flash memory for permanent storage, volatile buffer memory for caching, and a command management unit for coordinating operations. This segmentation allows each component to be optimized independently and managed through clear interfaces, reducing the overall complexity despite the added functionality.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The buffer memory serves multiple functions: it acts as a cache for sequential reads, a temporary storage for data transfer, and a mechanism for handling read-ahead operations. This multi-functionality justifies the added complexity by providing multiple performance benefits from a single added component.

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

Data Source

PatentUS9823852B2Memory system with nonvolatile memory
Publication Date: 2017.11.21 KIOXIA CORP
  • US9823852B2 patent drawing
  • US9823852B2 patent drawing
  • US9823852B2 patent drawing

AI summary

A memory device includes a nonvolatile memory unit a volatile memory unit, and a memory controller. When the memory controller receives a first read command designating a first address range of the nonvolatile memory from a host, the memory controller reads data of a second address range that includes and is longer than the first address range from the nonvolatile memory unit, stores the data of the second address range in the volatile memory unit, and then transfers the data of the first address range from the volatile memory unit to the host. When the memory controller receives a second read command designating a third address range that follows the first address range and is within the second address range, after receiving the first read command, the memory controller transfers corresponding data that has been already stored in the volatile memory unit to the host.