IP Library Granted Patent US 10,452,558
Granted Patent B2
US 10,452,558 · App. 16/153,561 · Granted Oct 22, 2019

Address range mapping for storage devices

Inventors: Igor Genshaft (Bat Yam, IL); Marina Frid (Jerusalem, IL)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F12/1018G06F12/0246G06F12/0864G06F12/0891G06F12/109G06F2212/1016G06F2212/657G06F2212/7201G06F2212/7207
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,452,558
App. No.
16/153,561
Granted
Oct 22, 2019
Kind
B2
Abstract

Apparatuses, systems, methods, and computer program products are disclosed for address range mapping for memory devices. A system includes a set of non-volatile memory elements accessible using a set of physical addresses and a controller for the set of non-volatile memory elements. A controller is configured to maintain a hierarchical data structure for mapping logical addresses to a set of physical addresses. A hierarchical data structure comprises a plurality of levels with hashed mappings of ranges of logical addresses at range sizes selected based on a relative position of an associated level within the plurality of levels. A controller is configured to receive an I/O request for data of at least one logical address. A controller is configured to satisfy an I/O request using a hashed mapping having a largest available range size to map at least one logical address of the I/O request to one or more physical addresses.

Claims (42)

1. A system comprising:

a set of non-volatile memory elements accessible using a set of physical addresses; and

a controller for the set of non-volatile memory elements, the controller configured to:

maintain a hierarchical data structure for mapping logical addresses to the set of physical addresses, the hierarchical data structure comprising a plurality of levels with hashed mappings of ranges of the logical addresses at range sizes selected based on a relative position of an associated level within the plurality of levels;

receive an input/output (I/O) request for data of at least one logical address of the logical addresses; and

satisfy the I/O request using a hashed mapping of the hashed mappings to map the at least one logical address of the I/O request to one or more of the physical addresses, the hashed mapping having a largest available range size for the at least one logical address of the I/O request.

2. The system of claim 1 , wherein the hashed mappings are each determined based on a logical address, a range size of the range sizes, and a physical address associated with the logical address.

3. The system of claim 2 , wherein the controller is configured to locate the hashed mapping having the largest available range size for the at least one logical address of the I/O request by checking one or more of the plurality of levels of the hierarchical data structure starting at a level with a largest range size and proceeding successively to levels with smaller range sizes until a hashed mapping for a range including the at least one logical address of the I/O request is located.

4. The system of claim 3 , wherein the controller is configured to check a level of the plurality of levels by determining whether a physical address entry exists within the level for a hash of an index associated with the at least one logical address of the I/O request.

5. The system of claim 4 , wherein the controller is configured to determine the index for the at least one logical address of the I/O request within the level by rounding a division of the logical address by a range size for the level to a nearest integer less than the division.

6. The system of claim 5 , wherein the controller is configured to map the at least one logical address of the I/O request to the one of the physical addresses by:

determining a physical address associated with the hashed mapping having the largest available range size;

determining a difference between the at least one logical address of the I/O request and the index multiplied by the range size of the hashed mapping having the largest available range size; and

adding the determined difference to the determined physical address to determine the one of the physical addresses.

7. The system of claim 1 , wherein the I/O request comprises a read request and the controller is further configured to read data from the one or more of the physical addresses to satisfy the read request.

8. The system of claim 1 , wherein the I/O request comprises a write request and the controller is further configured to:

invalidate the hashed mapping;

select a level of the plurality of levels with a range size that is less than or equal to a size of the at least one logical address; and

store a new hashed mapping for the at least one logical address in the selected level.

9. The system of claim 8 , wherein the controller is further configured to store a second hashed mapping for a remainder portion of the at least one logical address in a different level of the plurality of levels with a smaller range size than the range size of the selected level in response to the range size of the level being less than the size of the at least one logical address.

10. The system of claim 8 , wherein the controller is further configured to store remainder information that describes a remainder portion of the at least one logical address in the selected level in response to the range size of the level being less than the size of the at least one logical address.

11. The system of claim 1 , wherein the hierarchical data structure comprises an update layer mapping the logical addresses of new write requests to the set of physical addresses.

12. An apparatus comprising:

means for maintaining a hierarchical data structure comprising a plurality of levels for mapping logical addresses to physical addresses of a non-volatile memory, each level of the plurality of levels comprising a hash table with entries comprising physical addresses, different levels of the plurality of levels associated with different sized ranges of the logical addresses; and

means for hashing an index determined based on a logical address of an input/output (I/O) request and one of the different sized ranges for a level of the plurality of levels to check the level for one of the entries associated with the logical address.

13. The apparatus of claim 12 , further comprising means for determining a mapping between a logical address of the logical addresses and a physical address of the physical addresses by identifying a highest level in the plurality of levels that comprises the one of the entries associated with the logical address, the one of the entries comprising the physical address of the physical addresses.

14. The apparatus of claim 13 , further comprising means for satisfying the I/O request using the determined mapping.

15. A method comprising:

determining an index for a logical address of an input/output (I/O) request in a first level of a hierarchical address mapping structure based on the logical address and a range size for the first level of the hierarchical address mapping structure;

checking the first level for a physical address associated with the index;

determining a different index for the logical address in a different level of the hierarchical address mapping structure in response to the first level comprising no physical address associated with the index; and

executing the I/O request using a physical address associated with the different index in the different level.

16. The method of claim 15 , wherein the I/O request comprises a read request and executing the I/O request comprises reading data from the physical address associated with the different index in the different level.

17. The method of claim 15 , wherein the I/O request comprises a write request and executing the I/O request comprises:

invalidating data from the physical address associated with the different index in the different level;

writing data of the write request to a second physical address;

adding the second physical address to one of the levels of the hierarchical address mapping structure at an index determined based on the logical address and a range size of the one of the levels of the hierarchical address mapping structure.

18. The method of claim 17 , further comprising adding a third physical address for the write request to a different one of the levels of the hierarchical address mapping structure in response to a size associated with the write request being larger than the range size of the one of the levels of the hierarchical address mapping structure, a range size of the different one of the levels being smaller than the range size of the one of the levels.

19. The method of claim 15 , wherein determining the index comprises rounding a division of the logical address by the range size for the first level to a nearest integer less than the division of the logical address by the range size and determining the different index comprises rounding a division of the logical address by a different range size for the different level to a nearest integer less than the division of the logical address by the different range size.

20. The method of claim 15 , wherein executing the I/O request using the physical address associated with the different index in the different level comprises:

determining a difference between the logical address and a product of the different index multiplied by a different range size of the different level; and

adding the determined difference to the physical address associated with the different index and using a resulting offset physical address for the I/O request.

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 Jan 30, 2019
From: GENSHAFT, IGOR; FRID, MARINA
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 048189/0569 →
Cited By (1)
US 12,242,386