# US 12,717,525 B2 · Swapping a physical block of a virtual block based on a bit error rate of the physical block

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

- Number: US 12,717,525 B2
- Document ID: US12717525B2
- Status: Granted
- Kind: B2
- Application number: 19/031,473
- Filed: 2025-01-18
- Published: 2025-12-25
- Granted: 2026-08-25
- Earliest claimed: 2024-06-25
- Assignees: Microchip Technology Incorporated
- Applicants: Microchip Technology Incorporated
- Inventors: Saswati Das; Nian Niles Yang; Srinivas Yelisetti
- Web page: https://patentgrep.com/patent/US12717525B2

## CPC

- G06F 3/0665: {at area level, e.g. provisioning of virtual or logical volumes}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/064: {Management of blocks}
- G06F 3/0679: {Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

In some implementations, a controller may select a physical block, of a user data virtual block (VB), for a host write operation or a garbage collection operation. The user physical block previously stored user data. The user physical block has previously been programmed in accordance with triple-level cell (TLC) programming. The controller may determine that an average bit error rate (BER) of the user physical block exceeds an average BER of the VB. The controller may, based on determining that the average BER of the physical block exceeds the average BER of the user VB: swap, for the VB, the user physical block with a system physical block that is allocated for storing system data; swap, for the VB, the user physical block with a reserved physical block; or cause a program time, of the user physical block, to be increased.

## Claims

### Claim 1

A method comprising:
selecting a user virtual block (VB), for a host write operation or a garbage collection operation,
wherein the user VB previously stored user data, and
wherein the user VB has previously been programmed in accordance with triple-level cell (TLC) programming;
determining that an average bit error rate (BER) of a user physical block in the user VB exceeds an average BER of the user VB; and
based on determining that the average BER of the user physical block exceeds the average BER of the user VB:
swapping, for the user VB, the user physical block with a system physical block that is allocated for storing system data;
swapping, for the user VB, the user physical block with a reserved physical block; or
causing a program time, of the user physical block, to be increased.

### Claim 2 (depends on 1)

The method of claim 1, wherein the user physical block, the system physical block, and the reserved physical block are included on a same die.

### Claim 3 (depends on 2)

The method of claim 2, wherein swapping the user physical block with the system physical block comprises:
determining whether a number of program/erase cycles of the user physical block exceeds a number of program/erase cycles of one or more system physical blocks included on the same die,
wherein the one or more system physical blocks include the system physical block; and
swapping the user physical block with the system physical block based on determining whether the number of program/erase cycles of the user physical block exceeds the number of program/erase cycles of the one or more system physical blocks.

### Claim 4 (depends on 3)

The method of claim 3, wherein swapping the user physical block with the reserved physical block comprises:
determining that the number of program/erase cycles of the user physical block does not exceed the number of program/erase cycles of the one or more system physical blocks; and
swapping the user physical block with the reserved physical block based on determining that the number of program/erase cycles of the user physical block does not exceed the number of program/erase cycles of the one or more system physical blocks.

### Claim 5 (depends on 3)

The method of claim 3, wherein causing the program time to be increased comprises:
determining that the number of program/erase cycles of the user physical block does not exceed the number of program/erase cycles of the one or more system physical blocks;
determining that a solid state drive (SSD), associated with the user VB, is associated with a write intensive workload; and
causing the program time to be increased based on:
determining that the number of program/erase cycles of the user physical block does not exceed the number of program/erase cycles of the one or more system physical blocks, and
determining that the SSD is associated with the write intensive workload.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
swapping, for the user VB, the user physical block with the system physical block; and
updating VB information, regarding the user VB, to indicate that the user physical block has been swapped with the system physical block.

### Claim 7 (depends on 6)

The method of claim 6, wherein the system physical block has previously been programmed in accordance with triple-level cell (TLC) programming, and
wherein the method further comprises:
programming the system physical block, using single level cell (SLC) programming after swapping the user physical block with the system physical block.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
swapping, for the user VB, the user physical block with the reserved physical block; and
updating VB information, regarding the user VB, to indicate that the user physical block has been swapped with the reserved physical block.

### Claim 9

A system comprising:
a controller configured to:
select a first physical block, of a virtual block (VB), for a host write operation or a garbage collection operation,
wherein the first physical block previously stored user data;
determine that an average bit error rate (BER) of the first physical block exceeds an average BER of the VB; and
based on determining that the average BER of the first physical block exceeds the average BER of the VB:
swap, for the VB, the first physical block with a second physical block; or
cause a program time, of the first physical block, to be increased.

### Claim 10 (depends on 9)

The system of claim 9, wherein the controller is further configured to:
swap, for the VB, the first physical block with the second physical block; and
update VB information, regarding the VB, to indicate that the first physical block has been swapped with the second physical block.

### Claim 11 (depends on 10)

The system of claim 10, wherein, to update the VB information, the controller is further configured to:
update a bitmap to indicate that the first physical block has been swapped with the second physical block.

### Claim 12 (depends on 9)

The system of claim 9, wherein the controller is further configured to:
cause a program time, of the first physical block, to be increased; and
update VB information, regarding the VB, to indicate that the program time has been increased.

### Claim 13 (depends on 9)

The system of claim 9, wherein the first physical block and the second physical block are included on a same die.

### Claim 14

A non-transitory computer-readable medium storing a set of instructions, the set of instructions comprising:
one or more instructions that, when executed by one or more processors of a controller, cause the controller to:
determine that an average bit error rate (BER) of a user physical block, of a virtual block (VB), exceeds an average BER of the VB; and
based on determining that the average BER of the physical block exceeds the average BER of the VB:
swap, for the VB, the user physical block with a system physical block that is allocated for storing system data;
swap, for the VB, the user physical block with a reserved physical block; or
cause a program time, of the user physical block, to be increased.

### Claim 15 (depends on 14)

The non-transitory computer-readable medium of claim 14, wherein the user physical block, the system physical block, and the reserved physical block are included on a same die.

### Claim 16 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the one or more instructions, that cause the controller to swap the user physical block with the system physical block, further cause the controller to:
determine whether a number of program/erase cycles of the user physical block exceeds a number of program/erase cycles of one or more system physical blocks included on the same die,
wherein the one or more system physical blocks include the system physical block; and
swap the user physical block with the system physical block based on determining whether the number of program/erase cycles of the user physical block exceeds the number of program/erase cycles of the one or more system physical blocks.

### Claim 17 (depends on 16)

The non-transitory computer-readable medium of claim 16, wherein the one or more instructions, that cause the controller to swap the user physical block with the reserved physical block, further cause the controller to:
determine that the number of program/erase cycles of the user physical block does not exceed the number of program/erase cycles of the one or more system physical blocks; and
swap the user physical block with the reserved physical block based on determining that the number of program/erase cycles of the user physical block does not exceed the number of program/erase cycles of the one or more system physical blocks.

### Claim 18 (depends on 16)

The non-transitory computer-readable medium of claim 16, wherein the one or more instructions, that cause the controller to cause the program time to be increased, further cause the controller to:
determine that the number of program/erase cycles of the user physical block does not exceed the number of program/erase cycles of the one or more system physical blocks;
determine that a storage device, associated with the VB, is associated with a write intensive workload; and
cause the program time to be increased based on:
determining that the number of program/erase cycles of the user physical block does not exceed the number of program/erase cycles of the one or more system physical blocks, and
determining that the storage device is associated with the write intensive workload.

### Claim 19 (depends on 14)

The non-transitory computer-readable medium of claim 14, wherein the one or more instructions further cause the controller to:
swap, for the VB, the user physical block with the system physical block; and
update VB information, regarding the VB, to indicate that the user physical block has been swapped with the system physical block.

### Claim 20 (depends on 19)

The non-transitory computer-readable medium of claim 19, wherein the system physical block has previously been programmed in accordance with triple-level cell (TLC) programming, and
wherein the one or more instructions further cause the controller to:
program the system physical block using single level cell (SLC) programming after swapping the user physical block with the system physical block.

### Claim 21 (depends on 14)

The non-transitory computer-readable medium of claim 14, wherein the one or more instructions further cause the controller to:
swap, for the VB, the user physical block with the reserved physical block; and
update VB information, regarding the VB, to indicate that the user physical block has been swapped with the reserved physical block.
