# US 12,602,283 B2 · Flash memory controller and flash memory access method

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

- Number: US 12,602,283 B2
- Document ID: US12602283B2
- Status: Granted
- Kind: B2
- Application number: 18/920,941
- Filed: 2024-10-20
- Published: 2025-10-23
- Granted: 2026-04-14
- Earliest claimed: 2024-04-22
- Assignees: Silicon Motion, Inc.
- Applicants: Silicon Motion Inc.
- Inventors: Duen yih Teng; Mao ruei Li
- Web page: https://patentgrep.com/patent/US12602283B2

## CPC

- G06F 11/1048: {using arrangements adapted for a specific error detection or correction feature}
- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A flash memory controller and a flash memory access method are provided. The flash memory controller comprises a decoder. The decoder is configured to perform a decoding operation based on a N×M base matrix of a LDPC code to decode the read information from a flash memory. The decoder comprises a controller, a variable node (VN) unit, and a check node (CN) unit. The controller is configured to transform the base matrix into a compressed matrix of size N×S, where S is smaller than M. The VN unit and the CN unit are configured to perform message updates between variable nodes and check nodes to generate decoding results that converge to a codeword. During each decoding cycle, the VN unit performs calculations on each column of the compressed matrix.

## Claims

### Claim 1

A flash memory controller for accessing a flash memory, wherein the flash memory controller comprises:
a read-only memory for storing a program code;
a microprocessor for executing the program code to control access to the flash memory; and
a decoder for performing decoding operation based on an N×M base matrix of a low-density parity-check (LDPC) code to decode read information from the flash memory, wherein the decoder comprises:
a controller for transforming the base matrix into a compressed matrix of size N×S, wherein S is less than M, each element in each column of the compressed matrix is associated with a group number, and the elements from the same column of the base matrix are assigned the same group number;
a variable node (VN) unit, coupled to the controller and comprises a plurality of first input terminals;
a check node (CN) unit, coupled to the VN unit, wherein, in an iterative manner, the VN unit updates a plurality of V2C messages to the CN unit and the CN unit updates a plurality of C2V messages to the VN unit in order to finally generate a decoding result;
wherein during each decoding cycle of an iteration, the VN unit receives a column of the compressed matrix through the plurality of first input terminals as input values, the elements of the column of the compressed matrix are ordered according to the group number before being input to the plurality of first input terminals.

### Claim 2 (depends on 1)

The flash memory controller according to claim 1, wherein the VN unit comprises:
a column-sum calculation circuit, comprising a plurality of adders and
a group-selection circuit;
wherein the column-column-sum calculation circuit calculates a plurality of total values based on the input values and the group-selection circuit selects the sum values to generate total value of each group of input values.

### Claim 3 (depends on 2)

The flash memory controller according to claim 2, wherein the plurality of the first input terminals are divided into a plurality of subsets, with each subset being connected to an adder, and the input values on each subset of the first input terminals are associated with the same group number.

### Claim 4 (depends on 1)

The flash memory controller according to claim 1, wherein the controller of the decoder comprises a grouping unit that merges at least two columns of the base matrix according to a grouping strategy, which ensures that each row within the at least two columns of the base matrix contains at most one non-blank element.

### Claim 5 (depends on 4)

The flash memory controller according to claim 4, wherein the grouping strategy further ensures that the number of non-blank elements in the at least two columns of the base matrix is at most N, and the VN unit performs calculation on a column of the compressed matrix to update the V2C messages.

### Claim 6 (depends on 5)

The flash memory controller according to claim 5, wherein the number of the plurality of first input terminals of the VN is N, and the elements in a column of the compressed matrix are entered to the plurality of first input terminals in an order of group number.

### Claim 7 (depends on 4)

The flash memory controller according to claim 4, wherein the grouping strategy further comprises:
the maximum number of non-blank elements in the at least two columns of the base matrix is P, with P being less than N; and
when the number of non-blank elements in a column of the base matrix is greater than P, the column of the base matrix is split to form two columns in the compressed matrix.

### Claim 8 (depends on 7)

The flash memory controller according to claim 7, wherein the VN unit further contains registers to store the total value of the plurality of first input terminals of the VN unit in the previous decoding cycle, and the VN unit adds the total value of the plurality of first input terminals of the VN unit in the current decoding cycle with the values of the registers to obtain the total value of two neighboring columns in the compressed matrix.

### Claim 9 (depends on 7)

The flash memory controller according to claim 7, wherein the number of the plurality of first input terminals of the VN is P, and elements in a column of the compressed matrix are entered to the plurality of first input terminals in an order of group.

### Claim 10 (depends on 1)

The flash memory controller according to claim 1, wherein the decoder further comprises a C2V unit coupled between the VN unit and the CN unit to update the C2V messages for the VN unit.

### Claim 11

A flash memory access method, applied in a memory controller, comprising:
receiving read information from a flash memory;
decoding, through a decoder in the memory controller, the read information in accordance with a low-density parity-check (LDPC) code base matrix of size N×M;
transforming the base matrix into a compressed matrix of size N×S, wherein S is less than M;
grouping elements in each column of the compressed matrix so that each element in each column of the compressed matrix is associated with a group number and the elements from the same column of the base matrix are assigned the same group number;
updating a plurality of V2C messages and C2V messages, through a variable node (VN) unit and a check node (CN) unit of the memory controller, wherein, for each decoding cycle, elements in a column of the compressed matrix are entered as input values to a plurality of first input terminals of the VN unit in an order of group number.

### Claim 12 (depends on 11)

The flash memory access method according to claim 11, wherein the VN unit comprises a column summation circuit containing a plurality of adders and a group-selection circuit, and the method further comprises: the column-column-sum calculation circuit calculates a plurality of total values based on the input values and the group-selection circuit selects the total values to generate total value of each group of input values.

### Claim 13

The flash memory access method according to 12, wherein the plurality of the first input terminals are divided into a plurality of subsets, with each subset being connected to an adder, and the input values on each subset of the first input terminals are associated with the same group number.

### Claim 14 (depends on 11)

The flash memory access method according to claim 11, wherein the transforming the base matrix into a compressed matrix of size N×S comprises merging at least two columns of the base matrix according to a grouping strategy, which ensures that each row within the at least two columns of the base matrix contains at most one non-blank element.

### Claim 15 (depends on 14)

The flash memory access method according to claim 14, wherein the grouping strategy further ensures that the number of non-blank elements in the at least two columns of the base matrix is at most N, and the VN unit performs calculation on a column of the compressed matrix to update the V2C messages.

### Claim 16 (depends on 15)

The flash memory access method according to claim 15, wherein the number of the plurality of first input terminals of the VN is N, and the elements in a column of the compressed matrix are entered to the plurality of first input terminals in an order of group number.

### Claim 17 (depends on 14)

The flash memory access method according to claim 14, wherein the grouping strategy further comprises:
the maximum number of non-blank elements in the at least two columns of the base matrix is P, with P being less than N; and
when the number of non-blank elements in a column of the base matrix is greater than P, the column of the base matrix is split to form two columns in the compressed matrix.

### Claim 18 (depends on 17)

The flash memory access method according to claim 17, wherein the VN unit further contains registers to store the total value of the plurality of first input terminals of the VN unit in the previous decoding cycle, and the VN unit adds the total value of the plurality of first input terminals of the VN unit in the current decoding cycle with the values of the registers to obtain the total value of two neighboring columns in the compressed matrix.

### Claim 19 (depends on 17)

The flash memory access method according to claim 17, wherein the number of the plurality of first input terminals of the VN is P, and elements in a column of the compressed matrix are entered to the plurality of first input terminals in an order of group.

### Claim 20 (depends on 11)

The flash memory access method according to claim 11, wherein the decoder further comprises a C2V unit coupled between the VN unit and the CN unit to update the C2V messages for the VN unit.
