IP Library Granted Patent US 10,114,675
Granted Patent B2
US 10,114,675 · App. 14/675,235 · Granted Oct 30, 2018

Apparatus and method of managing shared resources in achieving IO virtualization in a storage device

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,114,675
App. No.
14/675,235
Granted
Oct 30, 2018
Kind
B2
Abstract

A technique for sharing resources in a data storage device. The data storage device receives a command associated with a non-volatile semiconductor memory device from a host system, the command including a virtual function identifier and a transaction identifier. The data storage device identifies, via a virtual function mapping unit that is included within a controller and that maintains a function mapping table which stores programmable values that associate virtual functions with portions of shared resources of the controller, a portion of a shared resource of the controller based on the virtual function identifier and the transaction identifier. The data storage device accesses the identified portion of the shared resource based on the received command.

Claims (53)

1. A data storage device comprising:

a non-volatile semiconductor memory device; and

a controller for the non-volatile semiconductor memory device, the controller including a virtual function mapping unit that maintains a function mapping table which stores values that are programmable by a host system to which the data storage device is connected and associate virtual functions with portions of shared resources of the controller, the controller configured to:

receive a command from the host system to read data from or write data in the non-volatile semiconductor memory device, the command including a virtual function identifier and a transaction identifier;

identify, via the virtual function mapping unit, a portion of a shared resource of the controller based on the virtual function identifier and the transaction identifier, wherein the portion of the shared resource comprises a time-slice of a shared processing resource; and

access the identified portion of the shared resource based on the received command.

2. The data storage device of claim 1 , wherein:

the controller is further configured to modify the programmable values of the function mapping table in response to a command from the host system to change the manner in which the shared resource is divided between virtual functions.

3. The data storage device of claim 1 , wherein:

the portion of the shared resource comprises a transaction data entry within a partition of a partitionable resource.

4. The data storage device of claim 3 , wherein:

the virtual function mapping unit is configured to identify the portion of the shared resource by:

providing the virtual function identifier to the function mapping table to obtain a partition identifier associated with a partition of the partitionable resource,

determining a base address within the partitionable resource, and

determining an address of the transaction data entry by adding the transaction identifier to the base address.

5. The data storage device of claim 1 , wherein:

the controller is further configured to switch to processing data associated with a different virtual function than the virtual function associated with the virtual function identifier after determining that a timeout has occurred.

6. The data storage device of claim 5 , wherein:

the controller is further configured to erase data associated with the virtual function associated with the virtual function identifier upon determining that a timeout has occurred a threshold number of times.

7. The data storage device of claim 1 , wherein the host system has multiple virtual machines running therein and the virtual function identifier is associated with only a single virtual machine executing in the host system.

8. The data storage device of claim 1 , wherein the controller includes registers, queues, and buffers and the shared resources include said registers, said queues, and said buffers.

9. A method comprising:

receiving a command from a host system to read data from or write data in a non-volatile semiconductor memory device, the command including a virtual function identifier and a transaction identifier;

identifying, via a virtual function mapping unit that is included within a controller for the non-volatile semiconductor memory device and that maintains a function mapping table which stores values that are programmable by the host system and associate virtual functions with portions of shared resources of the controller, a portion of a shared resource of the controller based on the virtual function identifier and the transaction identifier, wherein the portion of the shared resource comprises a time-slice of a shared processing resource; and

accessing the identified portion of the shared resource based on the received command.

10. The method of claim 9 , further comprising:

modifying the programmable values of the function mapping table in response to a command from the host system to change the manner in which the shared resource is divided between virtual functions.

11. The method of claim 9 , wherein:

the portion of the shared resource comprises a transaction data entry within a partition of a partitionable resource.

12. The method of claim 11 , further comprising:

identifying, via the virtual function mapping unit, the portion of the shared resource, by:

providing the virtual function identifier to the function mapping table to obtain a partition identifier associated with a partition of the partitionable resource,

determining a base address within the partitionable resource, and

determining an address of the transaction data entry by adding the transaction identifier to the base address.

13. The method of claim 9 , further comprising:

switching to processing data associated with a different virtual function than the virtual function associated with the virtual function identifier after determining that a timeout has occurred.

14. The method of claim 13 , further comprising:

erasing data associated with the virtual function associated with the virtual function identifier upon determining that a timeout has occurred a threshold number of times.

15. The method of claim 9 , wherein the host system has multiple virtual machines running therein and the virtual function identifier is associated with only a single virtual machine executing in the host system.

16. The method of claim 9 , wherein the controller includes registers, queues, and buffers and the shared resources include said registers, said queues, and said buffers.

17. A non-transitory computer-readable medium storing instructions that, when executed by a processor, cause the processor to perform a method comprising:

receiving a command from a host system to read data from or write data in a non-volatile semiconductor memory device, the command including a virtual function identifier and a transaction identifier;

identifying, via a virtual function mapping unit that is included within a controller for the non-volatile semiconductor memory device and that maintains a function mapping table which stores values that are programmable by the host system and associate virtual functions with portions of shared resources of the controller, a portion of a shared resource of the controller based on the virtual function identifier and the transaction identifier, wherein the portion of the shared resource comprises a time-slice of a shared processing resource; and

accessing the identified portion of the shared resource based on the received command.

18. The non-transitory computer-readable medium of claim 17 , wherein the method further comprising:

modifying the programmable values of the function mapping table in response to a command from the host system to change the manner in which the shared resource is divided between virtual functions.

19. The non-transitory computer-readable medium of claim 17 , wherein:

the portion of the shared resource comprises a transaction data entry within a partition of a partitionable resource.

20. The non-transitory computer-readable medium of claim 19 , wherein the method further comprises:

identifying, via the virtual function mapping unit, the portion of the shared resource, by:

providing the virtual function identifier to the function mapping table to obtain a partition identifier associated with a partition of the partitionable resource,

determining a base address within the partitionable resource, and

determining an address of the transaction data entry by adding the transaction identifier to the base address.

Assignments (6)
MERGER Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: K.K. PANGEA
Reel/Frame 055659/0471 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: TOSHIBA MEMORY CORPORATION
To: KIOXIA CORPORATION
Reel/Frame 055669/0001 →
CHANGE OF NAME AND ADDRESS Recorded Jan 22, 2021
From: K.K. PANGEA
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 055669/0401 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 14, 2017
From: KABUSHIKI KAISHA TOSHIBA
To: TOSHIBA MEMORY CORPORATION
Reel/Frame 043194/0647 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2015
From: DING, ZHIMIN; LAI, DISHI; NAOYUKI, KAI
To: TOSHIBA AMERICA ELECTRONIC COMPONENTS, INC.
Reel/Frame 035303/0922 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2015
From: TOSHIBA AMERICA ELECTRONIC COMPONENTS, INC.
To: KABUSHIKI KAISHA TOSHIBA
Reel/Frame 035303/0952 →