IP Library Granted Patent US 10,380,014
Granted Patent B2
US 10,380,014 · App. 15/489,632 · Granted Aug 13, 2019

Address translation for a non-volatile memory storage device

Inventors: Radoslav Danilak (Cupertino, CA); Amit Bothra (San Jose, CA); Arvind Pruthi (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
G06F12/0246G06F2212/7201
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,380,014
App. No.
15/489,632
Granted
Aug 13, 2019
Kind
B2
Abstract

Techniques are described for accessing data from a storage device. In one example, the storage device may include a storage medium comprising non-volatile memory, a network connection, and one or more processing entities. The one or more processors may be configured to receive a request from the network connection at the non-volatile memory storage device for accessing data associated with a file system object, the request comprising a virtual address offset, a file object identifier and a size of the data access, perform, at a flash translation layer of a storage device software stack executing on the one or more processing entities of the storage device, a translation from the virtual address offset to a physical address for the data stored on the non-volatile memory, using the virtual address offset and the file object identifier, and access the data from the physical address from the storage medium.

Claims (35)

1. A non-volatile memory storage device comprising:

a storage medium comprising a non-volatile memory;

a network connection for receiving data read and write requests to the storage medium;

a processing entity comprising a flash translation layer, the flash translation layer configured to:

receive an access request from the network connection at the non-volatile memory storage device for accessing data associated with a file system object, the access request comprising a virtual address offset, a file object identifier and a size of data of the access request;

perform, at the flash translation layer of a storage device software stack executing on the processing entity of the non-volatile memory storage device, a translation from the virtual address offset to a physical address of the data of the access request stored on the non-volatile memory using the virtual address offset and the file object identifier; and

access the data from the physical address from the storage medium, wherein the data of the access request associated with the file system object is modified by the flash translation layer by writing to a log-structured file of a log-structured file system of the non-volatile memory, and the translation from the virtual address offset to the physical address for the data of the access request stored on the non-volatile memory is based at least in part on global wear leveling performed by the flash translation layer.

2. The non-volatile memory storage device of claim 1 , wherein the file system object is provided a virtual block space for accessing data from the non-volatile memory storage device that is independent of virtual block spaces assigned to other file system objects, wherein each virtual block space provides the file system object an exclusive view of an address space.

3. The non-volatile memory storage device of claim 1 , wherein the data associated with the file system object is accessed for performing a modify operation followed by performing a write operation to the virtual address offset associated with the file system object.

4. The non-volatile memory storage device of claim 3 , wherein the modify operation for the data or a portion of the data is performed by the flash translation layer by using a log structured write only once between receiving the access request for modifying the data or the portion of the data from the network connection for modifying the data or the portion of the data received from the network connection and completing the write operation to the physical address of the non-volatile memory.

5. The non-volatile memory storage device of claim 1 , wherein the global wear leveling changes the virtual address offset to a different physical address than the physical address generated by the flash translation layer as a result of the translation from the virtual address offset to the physical address of the data stored on the non-volatile memory to reduce wear caused by repeated data accesses to a same physical location on the non-volatile memory.

6. The non-volatile memory storage device of claim 1 , wherein the flash translation layer further performs block allocation for storing and accessing data from the non-volatile memory.

7. The non-volatile memory storage device of claim 1 , wherein garbage collection for using a log structured file system is performed only in the flash translation layer.

8. The non-volatile memory storage device of claim 1 , wherein the flash translation layer performs reads and writes to the non-volatile memory using the log-structured file system.

9. The non-volatile memory storage device of claim 1 , wherein the virtual address offset is provided by the access request from the network connection using a network file sharing protocol.

10. The non-volatile memory storage device of claim 1 , wherein the virtual address offset is provided by the access request from if provided by a layer higher than a file system layer of the storage device software stack.

11. The non-volatile memory storage device of claim 1 , wherein only a single address translation is performed in the storage device software stack executing on the processing entity of the non-volatile memory storage device between receiving the access request for the data at the flash translation layer of the storage device software stack and accessing the data of the access request at the non-volatile memory.

12. A system, comprising:

means for receiving an access request from a network connection at a non-volatile memory storage device for accessing data associated with a file system object, the access request comprising a virtual address offset, a file object identifier and a size of data of the access request;

means for performing, at a flash translation layer of a storage device software stack, a translation from the virtual address offset to a physical address of the data of the access request stored on a non-volatile memory using the virtual address offset and the file object identifier; and

means for accessing the data from the physical address of the data of the access request stored on the non-volatile memory, wherein the data of the access request associated with the file system object is modified by the flash translation layer by writing to a log-structured file of a log-structured file system of the non-volatile memory, and the translation from the virtual address offset to the physical address for the data of the access request stored on the non-volatile memory is based at least in part on global wear leveling performed by the flash translation layer.

13. The system of claim 12 , wherein the file system object is provided a virtual block space for accessing data from the non-volatile memory storage device that is independent of virtual block spaces assigned to other file system objects.

14. The system of claim 12 , wherein the global wear leveling changes the virtual address offset to a different physical address than the physical address generated by the flash translation layer as a result of the translation from the virtual address offset to the physical address of the data stored on the non-volatile memory to reduce wear caused by repeated data accesses to a same physical location on the non-volatile memory.

15. The system of claim 12 , wherein the flash translation layer receives the virtual address offset for the access request through the network connection using a network file sharing protocol.

16. The system of claim 12 , wherein only a single address translation is performed in the storage device software stack executing on the non-volatile memory storage device between receiving the access request for accessing the data at the flash translation layer of the storage device software stack and accessing the non-volatile memory.

17. A method, comprising:

receiving, from a network connection, an access request, at a flash translation layer of a software stack executing on a non-volatile memory storage device for accessing data associated with a file system object, the access request comprising a virtual address offset, a file object identifier and a size of data of the access request, wherein the flash translation layer manages a non-volatile memory;

performing, by the flash translation layer, a translation from the virtual address offset to a physical address for the data of the access request stored on the non-volatile memory using the virtual address offset and the file object identifier; and

accessing the data of the access request stored on the non-volatile memory, wherein the data of the access request associated with the file system object is modified by the flash translation layer by writing to a log-structured file of a log-structured file system of the non-volatile memory, and the translation from the virtual address offset to the physical address for the data of the access request stored on the non-volatile memory is based at least in part on global wear leveling performed by the flash translation layer.

18. The method of claim 17 , wherein the global wear leveling changes the virtual address offset to a different physical address than the physical address generated by the flash translation layer as a result of the translation from the virtual address offset to the physical address of the data stored on the non-volatile memory to reduce wear caused by repeated data accesses to a same physical location on the non-volatile memory.

19. The method of claim 17 , wherein the flash translation layer receives the virtual address offset for the data of the access request from a network via the network connection using a network file sharing protocol.

20. A non-transitory computer readable storage medium, the non-transitory computer readable storage medium comprising instructions, which when executed by a processor, cause the processor to:

receive an access request from a network connection at a non-volatile memory storage device for accessing data associated with a file system object, the access request comprising a virtual address offset, a file object identifier and a size of data of the access request;

perform, at a flash translation layer of a storage device software stack, a translation from the virtual address offset to a physical address of the data of the access request stored on a non-volatile memory using the virtual address offset and the file object identifier; and

access the data from the physical address of the data of the access request stored on the non-volatile memory, wherein the data of the access request associated with the file system object is modified by the flash translation layer by writing to a log-structured file of a log-structured file system of the non-volatile memory, and the translation from the virtual address offset to the physical address for the data of the access request stored on the non-volatile memory is based at least in part on global wear leveling performed by the flash translation layer.

Assignments (13)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
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 →
CHANGE OF ENTITY Recorded Jan 22, 2019
From: SKYERA, INC.
To: SKYERA, LLC
Reel/Frame 048109/0634 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2019
From: DANILAK, RADOSLAV; BOTHRA, AMIT; PRUTHI, ARVIND
To: SKYERA, INC.
Reel/Frame 047961/0229 →
CHANGE OF NAME Recorded Jan 10, 2019
From: SKYERA, INC.
To: SKYERA, LLC
Reel/Frame 048175/0811 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2018
From: SKYERA, LLC
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046726/0328 →
Continuity (3)
Continuation 14460216 · Aug 14, 2014
Provisional Application 61865889 · Aug 14, 2013
Related Publication 20170351605A1 · Dec 7, 2017