IP Library Granted Patent US 7,664,987
Granted Patent B2
US 7,664,987 · App. 10/851,745 · Granted Feb 16, 2010

Flash memory device with fast reading rate

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 7,664,987
App. No.
10/851,745
Granted
Feb 16, 2010
Kind
B2
Abstract

A method of sending data from a memory to a host, and a data storage device that uses the method. The controller of the data storage device sends the data directly from the memory to a buffer in an interface to the host while simultaneously checking the data for errors. If sufficiently few errors are found, the data are sent from the buffer to the host. Otherwise, the data are corrected, the data in the buffer are replaced with the corrected data, and the corrected data are written to the memory. If the data are stored by segments, the simultaneous sending and checking is effected segmentwise. When a bad segment is found, an error flag is set. When all the data have been sent and checked, or when the buffer is full, if the error flag has not been set, the data in the buffer are sent to the host.

Claims (100)

1. A method of sending data from a memory to a host, comprising the step of:

(a) substantially simultaneously:

(i) sending the data from the memory to an interface with the host; and

(ii) sending the data from the memory to a controller to be checked for errors;

(b) subsequent to said sending of the data from the memory to said interface and to said controller, checking the data for errors, by said controller;

(c) if no errors are found by said checking then sending the data from said interface to the host: and

(d) if errors are found and a number of said errors is less than a predetermined threshold then sending the data from said interface to the host, otherwise if the number of said errors is greater than the predetermined threshold then:

(i) correcting the data, and

(ii) writing said corrected data to the memory.

2. The method of claim 1 , wherein the data are sent directly from the memory to said interface.

3. The method of claim 1 , further comprising the step of:

(e) sending said corrected data from the memory to said interface.

4. The method of claim 3 , wherein said corrected data is sent directly from the memory to said interface.

5. The method of claim 1 , wherein the memory is separate from said interface.

6. A method of sending data from a memory to a host, the data being stored in a plurality of segments of the memory, the method comprising the steps of:

(a) for each segment: substantially simultaneously:

(i) sending the data from said each segment to a buffer; and

(ii) sending the data from said each segment to a controller to be checked for errors;

(b) for said each segment, subsequent to said sending of the data from said each segment to said buffer and to said controller, checking the data from said each segment for errors, by said controller;

(c) for said each segment, if errors are found by said checking and a number of said errors that is found by said checking is at least as great as a predetermined threshold then:

(i) setting an error flag,

(ii) correcting the data that are stored in said each segment, and

(iii) writing said corrected data to said each segment; and

(d) if the error flag has not been set then sending the data from the buffer to the host.

7. The method of claim 6 , wherein the data are sent directly from said each segment to said buffer.

8. The method of claim 6 , wherein said sending of the data from the segments to said buffer is effected until a condition, selected from the group consisting of all the data having been sent to said buffer and said buffer being full, is satisfied.

9. The method of claim 8 , wherein said corrected data are sent directly from the segments to said buffer.

10. The method of claim 6 , further comprising the step of:

(e) before repeating the method operations clearing said error flag.

11. A method of sending data from a memory to a host, the data being stored in the memory along with an error correction code, the method comprising the steps of:

(a) substantially simultaneously:

(i) sending the data without the error correction code from the memory to a buffer, and

(ii) sending the data with the correction code from the memory to a controller;

(b) subsequent to said sending of the data from the memory to said buffer and to said controller, using the error correction code to check the data for errors, by said controller;

(c) if no errors are found by said checking then sending the data from said interface to the host; and

(d) if errors are found and a number of said errors is less than a predetermined threshold then sending the data from said interface to the host, otherwise if the number of said errors is greater than the predetermined threshold then:

(i) correcting the data,

(ii) replacing the data in said buffer with said corrected data, and

(iii) writing said corrected data to the memory.

12. The method of claim 11 , wherein the data are sent directly from the memory to said buffer.

13. The method of claim 11 , wherein said replacing of the data in said buffer with said corrected data is effected by sending said corrected data from the memory to said buffer.

14. The method of claim 13 , wherein said corrected data are sent directly from the memory to said buffer.

15. A method of sending data from a memory to a host, respective portions of the data being stored along with respective error correction codes in each of a plurality of segments of the memory, the method comprising the steps of:

(a) for each segment:

(i) substantially simultaneously:

(A) sending the respective data portion of said each segment without the respective error correction code from said each segment to a buffer, and

(B) sending the respective data portion of said each segment from said each segment to a controller to be checked for errors,

(ii) subsequent to said sending of the respective data portion of said each segment to said buffer and to said controller, using the respective error correction code of said each segment to check the respective data portion of said each segment for errors, by said controller, and

(iii) if errors are found by said checking and a number of said errors that is found by said checking is at least as great as a predetermined threshold then:

(A) setting an error flag,

(B) correcting the respective data portion of said each segment, and

(C) writing said respective corrected data to said each segment; and

(b) if the error flag has not been set then sending the data from the buffer to the host.

16. The method of claim 15 , wherein the respective data portion of said each segment is sent directly from said each segment to said buffer.

17. The method of claim 15 , wherein said sending of the respective data portion from said each segment to said buffer and said checking of the data for errors are effected until a condition, selected from the group consisting of all the data having been sent to said buffer and said buffer being full, is satisfied.

18. The method of claim 17 , wherein said corrected data is sent directly from the segments to said buffer.

19. A data storage device, comprising:

(a) a memory for storing the data;

(b) at least part of an interface to a host; and

(c) a controller operative:

(i) substantially simultaneously:

(A) to send the data from the memory to the interface, and

(B) to receive the data from the memory to be checked for errors,

(ii) subsequent to receiving the data from the memory, to check the data for errors,

(iii) if no errors are found by said checking then sending the data from said interface to the host: and

(iv) if errors are found and a number of said errors is less than a predetermined threshold then sending the data from said interface to the host otherwise if the number of said errors is greater than the predetermined threshold then:

(A) to correct the data, and

(B) to write said corrected data to said memory.

20. The data storage device of claim 19 , wherein said memory is separate from said interface.

21. A method of sending data from a memory to a host, respective portions of the data being stored along with respective error correction codes in each of a plurality of segments of the memory, the method comprising the steps of:

(a) for each segment: substantially simultaneously:

(i) sending the respective data portion of said each segment without the respective error correction code from said each segment to a buffer, and

(ii) sending the respective data portion of said each segment with the respective correction code from said each segment to a controller to be checked for errors;

(b) for said each segment, subsequent to said sending of the respective data portion of said each segment to said buffer and to said controller, using the respective error correction code of said each segment to check the respective data portion of said each segment for errors, by said controller;

(c) for said each segment, if errors are found by said checking and a number of said errors that is found by said checking is at least as great as a predetermined threshold then:

(i) setting an error flag,

(ii) correcting the respective data portion of said each segment, and

(iii) writing said corrected data to said each segment, and

(d) if the error flag has not been set then sending the data from the buffer to the host.

22. A method of sending data from a memory to a host, the data being stored in the memory along with an error correction code, the method comprising the step of:

(a) substantially simultaneously:

(i) sending the data without the error correction code from the memory to an interface with the host; and

(ii) sending the data with the error correction code from the memory to a controller to be checked for errors;

(b) subsequent to said sending of the data from the memory to said interface and to said controller, checking the data for errors, by said controller;

(c) if no errors are found by said checking then sending the data from said interface to the host; and

(d) if errors are found and a number of said errors is less than a predetermined threshold then sending the data from said interface to the host otherwise if the number of said errors is greater than the predetermined threshold then:

(i) correcting the data, and

(ii) writing said corrected data to the memory.

23. A data storage device, comprising:

(a) a memory for storing the data along with an error correction code;

(b) at least part of an interface to a host; and

(c) a controller operative:

(i) substantially simultaneously:

(A) to send the data without the error correction code from the memory to the interface, and

(B) to receive the data from the memory to be checked for errors,

(ii) subsequent to receiving the data from the memory, to check the data for errors,

(iii) if no errors are found by said checking then sending the data from said interface to the host; and

(iv) if errors are found and a number of said errors is less than a predetermined threshold then sending the data from said interface to the host, otherwise if the number of said errors is greater than the predetermined threshold then:

(A) to correct the data, and

(B) to write said corrected data to said memory.

Assignments (5)
CHANGE OF NAME Recorded Jun 10, 2025
From: WESTERN DIGITAL ISRAEL LTD.
To: SANDISK ISRAEL LTD.
Reel/Frame 071587/0836 →
CHANGE OF NAME Recorded Aug 21, 2020
From: SANDISK IL LTD
To: WESTERN DIGITAL ISRAEL LTD
Reel/Frame 053574/0513 →
CHANGE OF NAME Recorded Nov 21, 2008
From: MSYSTEMS LTD
To: SANDISK IL LTD.
Reel/Frame 021874/0513 →
CHANGE OF NAME Recorded Nov 6, 2008
From: M-SYSTEMS FLASH DISK PIONEERS LTD.
To: MSYSTEMS LTD
Reel/Frame 021811/0857 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 24, 2004
From: BYCHKOV, EYAL; PALEY, SASHA; MEIR, AVRAHAM
To: M-SYSTEMS FLASH DISK PIONEERS LTD.
Reel/Frame 015373/0251 →