IP Library Granted Patent US 8,838,937
Granted Patent B1
US 8,838,937 · App. 13/478,706 · Granted Sep 16, 2014

Methods, systems and computer readable medium for writing and reading data

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 8,838,937
App. No.
13/478,706
Granted
Sep 16, 2014
Kind
B1
Abstract

A flash memory controller, a computer readable medium and a method for writing to a flash memory device, the method may include receiving multiple logical pages, each logical page having a logical address; determining to write a logical page into a selected physical page of the flash memory device; calculating a hash value for each logical page of the multiple logical pages in response to (a) a logical address of the logical page and (b) a physical page index, to provide multiple hash values of the multiple logical pages.

Claims (56)

1. A method for writing to a flash memory device, the method comprising:

receiving multiple logical pages, each logical page having a logical address;

determining to write a logical page into a selected physical page of the flash memory device, the selected physical page has a selected physical page address that is represented by a physical page index, a set index and a block index; the physical page index being indicative of an order of the selected physical page within a selected set of physical pages, the selected set of physical pages is being identified by the set index, the block index is indicative of a block of the flash memory device that comprises the selected set of physical pages;

calculating a hash value for each logical page of the multiple logical pages in response to (a) a logical address of the logical page and (b) the physical page index, to provide multiple hash values of the multiple logical pages;

searching for a matching logical page that is associated with a hash value that matches the set index;

writing the matching logical page to the selected physical page and updating a first data structure to be indicative of a mapping between a logical address of the matching logical page and the selected physical address; and

writing a mismatch logical page to the selected physical page, updating the first data structure and the second data structure to be indicative of a mapping between a logical address of the mismatch logical page and the selected physical address, if neither one of the multiple logical pages is associated with a hash value that matches the set index.

2. The method according to claim 1 , wherein the updating of the first data structure and the second data structure comprises writing the physical page index of the selected physical page to the first data structure and writing the set index to the second data structure.

3. The method according to claim 1 , comprising selecting a matching logical page out of a plurality of matching logical pages.

4. The method according to claim 3 , comprising selecting the matching logical page in response to an age of each of the plurality of matching logical pages.

5. The method according to claim 1 , comprising electing the mismatch logical page based upon a distribution of hash values of the multiple logical pages.

6. The method according to claim 5 , comprising selecting the mismatch logical page out of a largest group of logical pages that share a same hash value.

7. The method according to claim 1 , wherein the selected set of physical pages comprises a consecutive sequence of physical pages.

8. The method according to claim 1 , wherein the selected set of physical pages comprises non-consecutive physical pages that are located at a same relative position in sub-blocks of the selected block.

9. The method according to claim 1 , comprising storing the multiple logical pages in a buffer before writing to the selected physical page.

10. The method according to claim 9 , wherein the multiple logical pages fill the buffer.

11. The method according to claim 9 , wherein the multiple logical pages partially fill the buffer.

12. The method according to claim 1 , comprising:

receiving a request to read a requested logical page from the flash memory device, the requested logical page has a requested logical address;

searching the second data structure for a logical address of a mismatch logical page that equals the requested logical address;

retrieving the requested logical page based upon the first and second data structures if it is determined that the second data structure comprises a logical address of a mismatch logical page that equals the requested logical address; and

retrieving the requested logical page based upon the first data structures and not upon the second data structure if it is determined that the second data structure does not comprise a logical address of a mismatch logical page that equals the requested logical address.

13. The method according to claim 12 , comprising calculating a physical address of a physical page that stores the requested logical page based upon (a) the requested logical address, (b) a set index that is stored in the second data structure and is associated with the requested logical address, and (c) a physical page index stored in the first data structure and is associated with the requested logical page address, if it is determined that the second data structure comprises the logical address of the mismatch logical page that equals the requested logical address.

14. The method according to claim 12 , comprising calculating a physical address of a physical page that stores the requested logical page based upon (a) the requested logical address, and (b) a physical page index stored in the first data structure and is associated with the requested logical address, if it is determined that the second data structure does not comprise a logical address of a mismatch logical page that equals the requested logical address.

15. A non-transitory computer readable medium that stores instructions comprising:

receiving multiple logical pages, each logical page having a logical address;

determining to write a logical page into a selected physical page of the flash memory device, the selected physical page has a selected physical page address that is represented by a physical page index, a set index and a block index; the physical page index being indicative of an order of the selected physical page within a selected set of physical pages, the selected set of physical pages is being identified by the set index, the block index is indicative of a block of the flash memory device that comprises the selected set of physical pages;

calculating a hash value for each logical page of the multiple logical pages in response to (a) a logical address of the logical page and (b) the physical page index, to provide multiple hash values of the multiple logical pages;

searching for a matching logical page that is associated with a hash value that matches the set index;

writing the matching logical page to the selected physical page and updating a first data structure to be indicative of a mapping between a logical address of the matching logical page and the selected physical address; and

writing a mismatch logical page to the selected physical page, updating the first data structure and the second data structure to be indicative of a mapping between a logical address of the mismatch logical page and the selected physical address—if neither one of the multiple logical pages is associated with a hash value that matches the set index.

16. The non-transitory computer readable medium according to claim 15 , wherein the updating of the first data structure and the second data structure comprises writing the physical page index of the selected physical page to the first data structure and writing the set index to the second data structure.

17. The non-transitory computer readable medium according to claim 15 that stores instructions for selecting a matching logical page out of a plurality of matching logical pages.

18. The non-transitory computer readable medium according to claim 17 that stores instructions for comprising selecting the matching logical page in response to an age of each of the plurality of matching logical pages.

19. The non-transitory computer readable medium according to claim 15 that stores instructions for electing the mismatch logical page based upon a distribution of hash values of the multiple logical pages.

20. The non-transitory computer readable medium according to claim 19 that stores instructions for selecting the mismatch logical page out of a largest group of logical pages that share a same hash value.

21. The non-transitory computer readable medium according to claim 15 , wherein the selected set of physical pages comprises a consecutive sequence of physical pages.

22. The non-transitory computer readable medium according to claim 15 , wherein the selected set of physical pages comprises non-consecutive physical pages that are located at a same relative position in sub-blocks of the selected block.

23. The non-transitory computer readable medium according to claim 15 that stores instructions for storing the multiple logical pages in a buffer before writing to the selected physical page.

24. The non-transitory computer readable medium according to claim 23 , wherein the multiple logical pages fill the buffer.

25. The non-transitory computer readable medium according to claim 23 wherein the multiple logical pages partially fill the buffer.

26. The non-transitory computer readable medium according to claim 15 , that stores instructions comprising:

receiving a request to read a requested logical page from the flash memory device, the requested logical page has a requested logical address;

searching the second data structure for a logical address of a mismatch logical page that equals the requested logical address;

retrieving the requested logical page based upon the first and second data structures if it is determined that the second data structure comprises a logical address of a mismatch logical page that equals the requested logical address; and

retrieving the requested logical page based upon the first data structures and not upon the second data structure if it is determined that the second data structure does not comprise a logical address of a mismatch logical page that equals the requested logical address.

27. The non-transitory computer readable medium according to claim 26 that stores instructions for calculating a physical address of a physical page that stores the requested logical page based upon (a) the requested logical address, (b) a set index that is stored in the second data structure and is associated with the requested logical address, and (c) a physical page index stored in the first data structure and is associated with the requested logical page address, if it is determined that the second data structure comprises the logical address of the mismatch logical page that equals the requested logical address.

28. The non-transitory computer readable medium according to claim 26 , that stores instructions for calculating a physical address of a physical page that stores the requested logical page based upon (a) the requested logical address, and (b) a physical page index stored in the first data structure and is associated with the requested logical address, if it is determined that the second data structure does not comprise a logical address of a mismatch logical page that equals the requested logical address.

29. A flash memory controller, comprising:

a buffer arranged to receive and store multiple logical pages, each logical page having a logical address;

a write circuit arranged to determine to write a logical page into a selected physical page of a flash memory device that is coupled to the flash memory controller, the selected physical page has a selected physical page address that is represented by a physical page index, a set index and a block index; the physical page index being indicative of an order of the selected physical page within a selected set of physical pages, the selected set of physical pages is being identified by the set index, the block index is indicative of a block of the flash memory device that comprises the selected set of physical pages;

a hash circuit arranged to calculate a hash value for each logical page of the multiple logical pages in response to (a) a logical address of the logical page and (b) the physical page index, to provide multiple hash values of the multiple logical pages;

a search circuit arranged to search for a matching logical page that is associated with a hash value that matches the set index;

wherein the write circuit is arranged to

write the matching logical page to the selected physical page and updating a first data structure to be indicative of a mapping between a logical address of the matching logical page and the selected physical address; and

write a mismatch logical page to the selected physical page, updating the first data structure and the second data structure to be indicative of a mapping between a logical address of the mismatch logical page and the selected physical address—if neither one of the multiple logical pages is associated with a hash value that matches the set index.

Assignments (9)
MERGER Recorded Mar 3, 2023
From: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED; BROADCOM INTERNATIONAL PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 062952/0850 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 14, 2020
From: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
To: BROADCOM INTERNATIONAL PTE. LTD.
Reel/Frame 053771/0901 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
RELEASE OF SECURITY INTEREST Recorded Jan 11, 2017
From: KREOS CAPITAL IV (EXPERT FUND) LIMITED
To: DENSBITS TECHNOLOGIES LTD.
Reel/Frame 041339/0921 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2016
From: DENSBITS TECHNOLOGIES LTD.
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 037622/0224 →
SECURITY INTEREST Recorded Mar 18, 2015
From: DENSBITS TECHNOLOGIES LTD.
To: KREOS CAPITAL IV (EXPERT FUND) LIMITED
Reel/Frame 035222/0547 →
SECURITY INTEREST Recorded Jul 30, 2014
From: DENSBITS TECHNOLOGIES LTD.
To: KREOS CAPITAL IV (EXPERT FUND) LIMITED
Reel/Frame 033444/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 2, 2012
From: KATZ, MICHAEL; WEINGARTEN, HANAN
To: DENSBITS TECHNOLOGIES LTD.
Reel/Frame 029389/0492 →