IP Library Granted Patent US 10,289,317
Granted Patent B2
US 10,289,317 · App. 15/396,548 · Granted May 14, 2019

Memory apparatus and methods thereof for write amplification aware wear leveling

Inventors: Ming-Yu Tai (Irvine, CA); Subhash Balakrishna Pillai (Irvine, CA); Yung-Li Ji (Santa Ana, CA); Haining Liu (Irvine, CA)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F3/0616G06F3/064G06F3/0614G06F3/0659G06F3/0679G06F12/0246G06F2212/1036G06F2212/7202G06F2212/7205G06F2212/7211
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,289,317
App. No.
15/396,548
Granted
May 14, 2019
Kind
B2
Abstract

A method of wear leveling receives a write request. The write request indicates received data to be written to memory blocks. The method detects a system condition. Example system conditions include a random write condition, a garbage collection start condition, and/or a sequential write condition. Based on the system condition, the method determines whether the received data comprises hot data or cold data. Some embodiments use a write amplification value to determine the system condition. If the received data comprises hot data, the method writes the received data to a cold block. If the received data comprises cold data, the method writes the received data to a hot block.

Claims (89)

1. A method of wear leveling, the method comprising:

receiving a write request, the write request comprising received data to be written to memory blocks;

detecting a system condition comprising one or more of a random write condition, a garbage collection start condition, and a sequential write condition;

based on the system condition, determining whether the received data comprises hot data or cold data;

if the received data comprises hot data, writing the received data to a cold block;

if the received data comprises cold data, writing the received data to a hot block;

determining a write amplification value for the system;

detecting a random write condition from the write amplification value indicating that a single write request from a host causes a plurality of write operations; and

detecting a garbage collection condition when the write amplification value for the system is over a value of 2, wherein hot data is frequently updated by a host and cold data is not frequently updated by the host.

2. The method of claim 1 , further comprising:

detecting a sequential write condition such that one write request causes one write operation upon the memory blocks;

determining that the received data for the sequential write comprises hot data.

3. The method of claim 1 , further comprising:

detecting a garbage collection start condition such that few memory blocks are available for writing;

determining that the data from a host comprises hot data;

determining that the data from garbage collection comprises cold data;

writing the hot data to a cold block; and

writing the cold data to a hot block.

4. The method of claim 1 , further comprising:

detecting a random write condition such that the data from garbage collection includes hot data;

writing the hot data to a cold block.

5. The method of claim 1 , the detecting the system condition further comprising:

calculating the write amplification value as a function of an over-provisioning factor, the over-provisioning factor based on a ratio of user accessible memory blocks to total memory blocks.

6. The method of claim 1 , further comprising:

determining an erase count for a set of blocks, wherein:

a hot block comprises a block having a high erase count,

a cold block comprises a block having a low erase count; and

selecting a block for writing based on the erase count, thereby providing wear leveling for the set of blocks by distributing the selecting and writing to each block within the set of blocks, wherein a high erase count is defined as an erase count that is above an average erase count for a set of blocks and a low erase count is defined as below the average erase count for the set of blocks.

7. A method of wear leveling, the method comprising:

receiving a write request, the write request comprising received data to be written to memory blocks;

detecting a system condition comprising one or more of a random write condition, a garbage collection start condition, and a sequential write condition;

based on the system condition, determining whether the received data comprises hot data or cold data;

if the received data comprises hot data, writing the received data to a cold block;

if the received data comprises cold data, writing the received data to a hot block wherein hot is data that is frequently updated by a host and cold is data that is not frequently updated by a host;

comparing a write amplification value to a set of predetermined operating ranges for the write amplification value;

detecting a sequential write condition when the write amplification value is within a first range;

detecting a garbage collection start condition when the write amplification value is within a second range; and

detecting a random write condition when the write amplification value is within a third range.

8. A method of wear leveling, the method comprising:

receiving a write request, the write request comprising received data to be written to memory blocks;

detecting a system condition comprising one or more of a random write condition, a garbage collection start condition, and a sequential write condition;

based on the system condition, determining whether the received data comprises hot data or cold data;

if the received data comprises hot data, writing the received data to a cold block;

if the received data comprises cold data, writing the received data to a hot block wherein hot is data that is frequently updated by a host and cold is data that is not frequently updated by a host;

detecting a random write condition from a write amplification value over 8 indicating that a single write request from the host causes a plurality of write operations.

9. A non-transitory computer readable medium comprising sets of instructions thereon which when executed by a processor, the instructions perform the steps of one or more processes for wear leveling, the sets of instructions comprising instructions for:

receiving a write request, the write request comprising received data to be written to memory blocks;

detecting a condition comprising one or more of: a random write condition, a garbage collection start condition, and a sequential write condition;

based on the condition, determining whether the received data comprises hot data or cold data;

if the received data comprises hot data, writing the received data to a cold block;

if the received data comprises cold data, writing the received data to a hot block determining a write amplification value for a system;

detecting a random write condition from the write amplification value indicating that a single write request from a host causes a plurality of write operations; and

detecting a garbage collection condition when the write amplification value for the system is over a value of 2 wherein hot is data that is frequently updated by a host and cold is data that is not frequently updated by a host.

10. The non-transitory computer readable medium of claim 9 , the sets of instructions further comprising instructions for:

detecting a sequential write condition such that one write request causes one write operation upon the memory blocks;

determining that the received data for the sequential write comprises hot data.

11. The non-transitory computer readable medium of claim 9 , the sets of instructions further comprising instructions for:

detecting a garbage collection start condition such that few memory blocks are available for writing;

determining that the data from the host comprises hot data;

determining that the data from garbage collection comprises cold data;

writing the hot data to a cold block; and

writing the cold data to a hot block.

12. The non-transitory computer readable medium of claim 9 , the sets of instructions further comprising instructions for:

detecting a random write condition such that the data from garbage collection includes hot data;

writing the hot data to a cold block.

13. The non-transitory computer readable medium of claim 9 , the sets of instructions further comprising instructions for:

calculating the write amplification value as a function of an over-provisioning factor, the over-provisioning factor based on a ratio of user accessible memory blocks to total memory blocks.

14. The non-transitory computer readable medium of claim 9 , the sets of instructions further comprising instructions for:

determining an erase count for a set of blocks, wherein:

a hot block comprises a block having a high erase count,

a cold block comprises a block having a low erase count; and

selecting a block for writing based on the erase count, thereby providing wear leveling for the set of blocks by distributing the selecting and writing to each block within the set of blocks wherein a high erase count is defined as an erase count that is above an average erase count for a set of blocks and a low erase count is defined as below the average erase count for the set of blocks.

15. A non-transitory computer readable medium comprising sets of instructions thereon which when executed by a processor, the instructions perform the steps of one or more processes for wear leveling, the sets of instructions comprising instructions for:

receiving a write request, the write request comprising received data to be written to memory blocks;

detecting a condition comprising one or more of: a random write condition, a garbage collection start condition, and a sequential write condition;

based on the condition, determining whether the received data comprises hot data or cold data;

if the received data comprises hot data, writing the received data to a cold block;

if the received data comprises cold data, writing the received data to a hot block wherein hot is data that is frequently updated by a host and cold is data that is not frequently updated by a host, the sets of instructions further comprising instructions for:

comparing a write amplification value to a set of predetermined operating ranges for the write amplification value;

detecting a sequential write condition when the write amplification value is within a first range;

detecting a garbage collection start condition when the write amplification value is within a second range; and

detecting a random write condition when the write amplification value is within a third range.

16. A non-transitory computer readable medium comprising sets of instructions thereon which when executed by a processor, the instructions perform the steps of one or more processes for wear leveling, the sets of instructions comprising instructions for:

receiving a write request, the write request comprising received data to be written to memory blocks;

detecting a condition comprising one or more of: a random write condition, a garbage collection start condition, and a sequential write condition;

based on the condition, determining whether the received data comprises hot data or cold data;

if the received data comprises hot data, writing the received data to a cold block;

if the received data comprises cold data, writing the received data to a hot block wherein hot is data that is frequently updated by a host and cold is data that is not frequently updated by a host, the sets of instructions further comprising instructions for:

detecting a random write condition from a high write amplification value indicating that a single write request causes a plurality of write operations.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: TAI, MING-YU; LIU, HAINING; JI, YUNG-LI; PILLAI, SUBHASH BALAKRISHNA
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 041151/0017 →
Continuity (1)
Related Publication 20180188980A1 · Jul 5, 2018
Cited By (1)
US 12,498,872