IP Library Granted Patent US 9,317,362
Granted Patent B2
US 9,317,362 · App. 14/339,407 · Granted Apr 19, 2016

Method and system to improve the performance and/or reliability of a solid-state drive

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 9,317,362
App. No.
14/339,407
Granted
Apr 19, 2016
Kind
B2
Abstract

A method and system to improve the performance and/or reliability of a solid-state drive (SSD). In one embodiment of the invention, the SSD has logic to compress a block of data to be stored in the SSD. If it is not possible to compress the block of data below the threshold, the SSD stores the block of data without any compression. If it is possible to compress the block of data below the threshold, the SSD compresses the block of data and stores the compressed data in the SSD. In one embodiment of the invention, the SSD has logic to dynamically adjust or select the strength of the error correcting code of the data that is stored in the SSD. In another embodiment of the invention, the SSD has logic to provide intra-page XOR protection of the data in the page.

Claims (62)

1. A method comprising:

selecting a selected code word of one of a plurality of code words to be stored in a memory page of a memory module;

executing an exclusive OR (XOR) operation on all the code words except the selected code word to obtain an XOR code word; and

replacing the selected code word with the XOR code word to be stored in the memory page of the memory module.

2. The method of claim 1 , wherein the selected code word is a last code word to be stored in the memory page of the memory module.

3. The method of claim 1 , further comprising:

dynamically adjusting a strength of an Error Correcting Code (ECC) of the plurality of code words to be stored in the memory module based on at least one of a Bit Error Rate (BER) associated with a location in the memory module that is to store data and an erase count of a physical band of the memory module that is to store the data.

4. The method of claim 1 , wherein dynamically adjusting the strength of the ECC of the plurality of code words to be stored in the memory module comprises:

compressing each code word to a compressed codeword; and

determining whether each compressed code word is compressed below a threshold,

wherein the threshold is based on at least one of a size of the compressed code word, and a ratio of a size of each code word to a size of each compressed code word.

5. The method of claim 4 , wherein the dynamically adjusting the strength of the ECC of the plurality of code words to be stored in the memory module comprises:

determining respective ECC check bytes of each compressed code word; and

adding the determined respective ECC check bytes to each compressed code word.

6. The method of claim 4 , wherein dynamically adjusting the strength of the ECC of the plurality of code words to be stored in the memory module comprises:

adding a respective one of a plurality of known data pads to each compressed code word;

determining a respective one of a plurality of ECC check bytes for each compressed code word and the respective one of the plurality of known data pads; and

add the determined respective one of the plurality of ECC check bytes to each compressed code word and each respective one of the plurality of known data pads.

7. The method of claim 6 , wherein a combined size of each known data pad and each compressed codeword is to match a size of each codeword.

8. An apparatus comprising:

a memory module;

a controller to:

select a selected code word of one of a plurality of code words to be stored in a memory page of the memory module;

execute an exclusive OR (XOR) operation on all the code words except the selected code word to obtain an XOR code word; and

replace the selected code word with the XOR code word to be stored in the memory page of the memory module.

9. The apparatus of claim 8 , wherein the selected code word is a last code word to be stored in the memory page of the memory module.

10. The apparatus of claim 8 , wherein the controller is to further:

dynamically adjust a strength of an Error Correcting Code (ECC) of the plurality of code words to be stored in the memory module based on at least one of a Bit Error Rate (BER) associated with a location in the memory module that is to store data and an erase count of a physical band of the memory module that is to store the data.

11. The apparatus of claim 8 , wherein to dynamically adjust the strength of the ECC of the plurality of code words to be stored in the memory module, the controller is to:

compress each code word to a compressed codeword; and

determine whether each compressed code word is compressed below a threshold,

wherein the threshold is based on at least one of a size of the compressed code word, and a ratio of a size of each code word to a size of each compressed code word.

12. The apparatus of claim 11 , wherein to dynamically adjust the strength of the ECC of the plurality of code words to be stored in the memory module, the controller is to:

determine respective ECC check bytes of each compressed code word; and

add the determined respective ECC check bytes to each compressed code word.

13. The apparatus of claim 11 , wherein to dynamically adjust the strength of the ECC of the plurality of code words to be stored in the memory module, the controller is to:

add a respective one of a plurality of known data pads to each compressed code word;

determine a respective one of a plurality of ECC check bytes for each compressed code word and the respective one of the plurality of known data pads; and

add the determined respective one of the plurality of ECC check bytes to each compressed code word and each respective one of the plurality of known data pads.

14. The apparatus of claim 13 , wherein a combined size of each known data pad and each compressed codeword is to match a size of each codeword.

15. A system comprising:

a processor;

a non-transitory storage device having information and instructions to be processed by the processor, comprising:

a memory module;

a controller to:

select a selected code word of one of a plurality of code words to be stored in a memory page of the memory module;

execute an exclusive OR (XOR) operation on all the code words except the selected code word to obtain a XOR code word; and

replace the selected code word with the XOR code word to be stored in the memory page of the memory module.

16. The system of claim 15 , wherein the selected code word is a last code word to be stored in the memory page if the memory module.

17. The system of claim 15 , wherein the controller is to further: dynamically adjust a strength of an Error Correcting Code (ECC) of the plurality of code words to be stored in the memory module based on at least one of a Bit Error Rate (BER) associated with a location in the memory module that is to store data and an erase count of a physical band of the memory module that is to store the data.

18. The system of claim 15 , wherein to dynamically adjust the strength of the ECC of the plurality of code words to be stored in the memory module, the controller is to:

compress each code word to a compressed code word; and

determine whether each compressed code word is compressed below a threshold,

wherein the threshold is based on at least one of a size of the compressed code word, and a ratio of a size of each code word to a size of each compressed code word.

19. The system of claim 18 , wherein to dynamically adjust the strength of the ECC of the plurality of code words to be stored in the memory module, the controller is to:

determine respective ECC check bytes of each compressed code word; and

add the determined respective ECC check bytes to each compressed code word.

20. The system of claim 18 , wherein to dynamically adjust the strength of the ECC of the plurality of code words to be stored in the memory module, the controller is to:

add a respective one of a plurality of known data pads to each compressed code word;

determine a respective one of a plurality of ECC check bytes for each compressed code word and the respective one of the plurality of known data pads; and

add the determined respective one of the plurality of ECC check bytes to each compressed code word and each respective one of the plurality of known data pads.

21. The system of claim 20 , wherein a combined size of each known data pad and each compressed codeword is to match a size of each codeword.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2023
From: INTEL CORPORATION
To: SK HYNIX NAND PRODUCT SOLUTIONS CORP.
Reel/Frame 062437/0329 →