# US 11,307,766 B2 · Apparatus and method and computer program product for programming flash administration tables

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,307,766 B2
- Document ID: US11307766B2
- Status: Granted
- Kind: B2
- Application number: 17/026,632
- Filed: 2020-09-21
- Published: 2021-09-30
- Granted: 2022-04-19
- Earliest claimed: 2020-03-25
- Assignees: Silicon Motion, Inc.
- Applicants: Silicon Motion, Inc.
- Inventors: Kuan-Yu Ke
- Web page: https://patentgrep.com/patent/US11307766B2

## CPC

- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0655: {Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 2212/1016: Performance improvement
- G06F 2212/1056: Simplification
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The invention relates to an apparatus, a method, and a non-transitory computer program product for programming flash administration tables. The non-transitory computer program product includes program code to: periodically determine whether user data that has been programmed into a current block of a flash module satisfies a random-write condition; and update a record of a host-to-flash (H2F) sub-table according to content of a flash-to-host (F2H) table for the current block when user data that has been programmed into the current block of the flash module satisfies the random-write condition.

## Claims

### Claim 1

A non-transitory computer-readable storage medium for programming flash administration tables when executed by a processing unit of a flash controller, the non-transitory computer-readable storage medium comprising program code to:
determine whether user data that has been programmed into a current block of a flash module satisfies a random-write condition each time a predefined number of host pages of user data that has been programmed into the current block; and
update a record of a host-to-flash (H2F) sub-table according to content of a flash-to-host (F2H) table for the current block when user data that has been programmed into the current block of the flash module satisfies the random-write condition,
wherein the random-write condition means that a quantity of to-be-updated H2F sub-tables associated with user data that has been programmed into the current block of the flash module exceeds a threshold, and the threshold is set by an equation:
TH2=TH1/n,
TH2 represents the threshold, TH1 represents the predefined number, and n represents an integer lower than TH1.

### Claim 2 (depends on 1)

The non-transitory computer-readable storage medium of claim 1, wherein the threshold is an integer lower than the predefined number.

### Claim 3 (depends on 1)

The non-transitory computer-readable storage medium of claim 1, wherein n represents an integer ranging from 2 to 5.

### Claim 4 (depends on 1)

The non-transitory computer-readable storage medium of claim 1, wherein a procedure for updating the record of the H2F sub-table comprises:
searching content of a high-level mapping table for a physical address of the H2F sub-table;
reading the H2F sub-table from the physical address of the flash module;
updating the record of the H2F sub-table according to the content of the F2H table for the current block; and
programming the updated H2F sub-table into the flash module.

### Claim 5

A method for programming flash administration tables, performed by a flash controller, comprising:
determining whether user data that has been programmed into a current block of a flash module satisfies a random-write condition each time a predefined number of host pages of user data that has been programmed into the current block; and
updating a record of a host-to-flash (H2F) sub-table according to content of a flash-to-host (F2H) table for the current block when user data that has been programmed into the current block of the flash module satisfies the random-write condition,
wherein the random-write condition means that a quantity of to-be-updated H2F sub-tables associated with user data that has been programmed into the current block of the flash module exceeds a threshold, and the threshold is set by an equation:
TH2=TH1/n,
TH2 represents the threshold, TH1 represents the predefined number, and n represents an integer lower than TH1.

### Claim 6 (depends on 5)

The method of claim 5, wherein the threshold is an integer lower than the predefined number.

### Claim 7

An apparatus for programming flash administration tables, comprising:
a flash interface, coupled to a flash module; and
a processing unit, coupled to the flash interface, arranged operably to determine whether user data that has been programmed into a current block of the flash module satisfies a random-write condition each time a predefined number of host pages of user data that has been programmed into the current block; and drive the flash interface to update a record of a host-to-flash (H2F) sub-table according to content of a flash-to-host (F2H) table for the current block when user data that has been programmed into the current block of the flash module satisfies the random-write condition,
wherein the random-write condition means that a quantity of to-be-updated H2F sub-tables associated with user data that has been programmed into the current block of the flash module exceeds a threshold, and the threshold is set by an equation:
TH2=TH1/n,
TH2 represents the threshold, TH1 represents the predefined number, and n represents an integer lower than TH1.

### Claim 8 (depends on 7)

The apparatus of claim 7, comprising:
a random access memory (RAM), coupled to the processing unit, arranged operably to store the F2H table for the current block.

### Claim 9 (depends on 7)

The apparatus of claim 7, wherein the threshold is an integer lower than the predefined number.

### Claim 10 (depends on 7)

The apparatus of claim 7, wherein n represents an integer ranging from 2 to 5.

### Claim 11 (depends on 7)

The apparatus of claim 7, wherein the processing unit is arranged operably to search content of a high-level mapping table for a physical address of the H2F sub-table; drive the flash interface to read the H2F sub-table from the physical address of the flash module; update the record of the H2F sub-table according to the content of the F2H table for the current block; and drive the flash interface to program the updated H2F sub-table into the flash module.
