# US 11,307,991 B2 · Apparatus and method and computer program product for generating a storage mapping table

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

- Number: US 11,307,991 B2
- Document ID: US11307991B2
- Status: Granted
- Kind: B2
- Application number: 17/085,068
- Filed: 2020-10-30
- Published: 2021-02-18
- Granted: 2022-04-19
- Earliest claimed: 2018-06-25
- Assignees: Silicon Motion, Inc.
- Applicants: Silicon Motion, Inc.
- Inventors: Jiyun-Wei Lin
- Web page: https://patentgrep.com/patent/US11307991B2

## CPC

- G06F 12/10: Address translation
- G06F 12/0246: {in block erasable memory, e.g. flash memory}
- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 2212/1024: Latency reduction
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/7201: Logical to physical mapping or translation of blocks or pages
- G06F 2213/28: DMA
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The invention introduces an apparatus for generating a storage mapping table at least including a direct memory access controller for reading first physical location (PL) address corresponding to a logical location of the storage mapping table; an expanding circuit for obtaining the first PL address and expanding the first PL address into second PL address by appending data bits that originally provide different information from a physical address of the flash memory unit to the first PL address; and a controller for transmitting the second PL address without transmitting the first PL address stored in the flash memory unit to a host.

## Claims

### Claim 1

An apparatus for generating a storage mapping table of a flash memory device, comprising:
a direct memory access (DMA) controller arranged operably read a first physical location (PL) address from a flash memory unit, wherein the first PL address corresponds to a logical location of the storage mapping table, wherein the first PL address is represented in a first number of bytes and the storage mapping table records information indicating which location in the flash memory unit that data of each logical location is physically stored in;
an expanding circuit coupled to the DMA controller, arranged operably to obtain the first PL address read from the flash memory unit and expand the first PL address read from the flash memory unit into a second PL address being represented in a second number of bytes by appending data bits that originally provide different information from a physical address of the flash memory unit to the first PL address, wherein the second number of bytes is greater than the first number of bytes; and
a controller coupled to the expanding circuit and arranged to operably transmit the second PL address to a host without transmitting the first PL address stored in the flash memory unit to the host.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the expanding circuit is arranged operably to generate the second PL address by appending padding data to the first PL address.

### Claim 3 (depends on 2)

The apparatus of claim 2, wherein expanding circuit comprises:
a pad register arranged operably to latch a dummy value; and
a PL register coupled to an output of the DMA controller and arranged operably to latch the first PL address,
wherein the controller is arranged operably to obtain the dummy value and the first PL address and assemble the dummy value and the first PL address to form the second PL address.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the expanding circuit is arranged operably to generate third PL address by appending padding data to the first PL address and generate the second PL address by performing a scrambling algorithm for applying scrambling code on the third PL address.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein the expanding circuit is arranged operably to generate third PL address by performing a scrambling algorithm for applying scrambling code on the first PL address and generate the second PL address by appending padding data to the third PL address.

### Claim 6 (depends on 1)

The apparatus of claim 1, wherein the expanding circuit is arranged operably to generate a parity byte according to the first PL address and append the parity byte to the first PL address to form the second PL address with an odd parity or an even parity.

### Claim 7 (depends on 6)

The apparatus of claim 6, wherein the expanding circuit comprises:
a parity generator coupled to an output of the DMA controller and arranged operably to generate the parity byte according to the first PL address;
a parity register coupled to the parity generator and arranged operably to latch the parity byte; and
a PL register coupled to the output of the DMA controller and arranged operably to latch the first PL address,
wherein the controller is arranged operably to obtain the parity byte and the first PL address and assemble the parity byte and the first PL address to form the second PL address with the odd parity or the even parity.

### Claim 8 (depends on 7)

The apparatus of claim 7, wherein the parity generator is arranged operably to determine an amount of bits being “1” of the first PL address, output the parity byte including an even number of bits being “1” when the amount is odd and output the parity byte including an odd number of bits being “1” when the amount is even.

### Claim 9 (depends on 7)

The apparatus of claim 7, wherein the parity generator is arranged operably to determine an amount of bits being “1” of the first PL address, output the parity byte including an odd number of bits being “1” when the amount is odd and output the parity byte including an even number of bits being “1” when the amount is even.

### Claim 10 (depends on 6)

The apparatus of claim 6, wherein the expanding circuit comprises:
a parity register coupled to an output of the DMA controller and arranged operably to latch the first PL address as a parity byte; and
a PL register coupled to the output of the DMA controller and arranged operably to latch the first PL address,
wherein the controller is arranged operably to obtain the parity byte and the first PL address and assemble the parity byte and the first PL address to form the second PL address with an even parity.

### Claim 11 (depends on 1)

The apparatus of claim 1, wherein the expanding circuit is arranged operably to generate a parity byte according to the first PL address, generate a third PL address by appending the parity byte to the first PL address and generate the second PL address by performing a scrambling algorithm for applying scrambling code on the third PL address.

### Claim 12 (depends on 1)

The apparatus of claim 1, wherein the expanding circuit is arranged operably to generate a parity byte according to the first PL address, generate a third PL address by performing a scrambling algorithm for applying scrambling code on the first PL address and generate the second PL address by appending the parity byte to the third PL address.

### Claim 13 (depends on 1)

The apparatus of claim 1, comprising: a processing unit coupled to the flash memory unit, arranged operably to maintain the content of the storage mapping table of the flash memory unit to indicate which location in the flash memory unit that data of each logical location is physically stored in.

### Claim 14

A non-transitory computer program product for generating a storage mapping table of a flash memory device when executed by a processing unit, the non-transitory computer program product comprising program code to:
receive a read request comprising a logical location for the storage mapping table;
read a first physical location (PL) address from a flash memory unit, wherein the first PL address corresponds to the logical location, wherein the first PL address is represented in a first number of bytes;
store the first PL address in a data buffer; and
output the first PL address to an expanding circuit,
wherein the expanding circuit is coupled to a Direct Memory Access (DMA) controller and is arranged to operably obtain the first PL address read from the flash memory unit and expand the first PL address read from the flash memory unit into a second PL address being represented in a second number of bytes by appending data bits that originally provide different information from a physical address of the flash memory unit to the first PL address, thereby enabling a controller to reply to a host with the second PL address other than the first PL address stored in the flash memory unit,
wherein the second number of bytes is greater than the first number of bytes,
wherein the storage mapping table records information indicating which location in the flash memory unit that data of each logical location is physically stored in.

### Claim 15 (depends on 14)

The non-transitory computer program product of claim 14, comprising program code to:
drive a flash memory controller to read the first PL address corresponding to the logical location from the flash memory unit and store the first PL address in the data buffer.

### Claim 16 (depends on 14)

The non-transitory computer program product of claim 14, comprising program code to:
drive a direct memory access (DMA) controller to output the first PL address of the data buffer to the expanding circuit.

### Claim 17 (depends on 14)

The non-transitory computer program product of claim 14, wherein the expanding circuit is arranged operably to generate the second PL address by appending padding data to the first PL address.

### Claim 18 (depends on 14)

The non-transitory computer program product of claim 14, wherein the expanding circuit is arranged operably to generate a parity byte according to the first PL address and append the parity byte to the first PL address to generate the second PL address with an odd parity or an even parity.

### Claim 19

A method for generating a storage mapping table of a flash memory device, performed by a processing unit, comprising:
receiving a read request comprising a logical location for the storage mapping table;
reading a first physical location (PL) address from a flash memory unit, wherein the first PL address corresponds to the logical location, wherein the first PL address is represented in a first number of bytes;
storing the first PL address in a data buffer; and
outputting the first PL address to an expanding circuit,
wherein the expanding circuit is coupled to Direct Memory Access (DMA) controller and is arranged to operably obtain the first PL address read from the flash memory unit, expand the first PL address read from the flash memory unit into a second PL address being represented in a second number of bytes by appending data bits that originally provide different information from a physical address of the flash memory unit to the first PL address, and output the second PL address to a controller, thereby enabling the controller to reply to a host with the second PL address other than the first PL address stored in the flash memory unit,
wherein the second number of bytes is greater than the first number of bytes,
wherein the storage mapping table records information indicating which location in the flash memory unit that data of each logical location is physically stored in.

### Claim 20 (depends on 19)

The method of claim 19, wherein the processing unit maintains the content of the storage mapping table to indicate which location in the flash memory unit that data of each logical location is physically stored in.
