IP Library Granted Patent US 9,817,749
Granted Patent B2
US 9,817,749 · App. 14/096,979 · Granted Nov 14, 2017

Apparatus and method of offloading processing from a data storage device to a host 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 9,817,749
App. No.
14/096,979
Granted
Nov 14, 2017
Kind
B2
Abstract

A storage device includes non-volatile memory and a controller. A method performed in the data storage device includes sending an instruction to a host device to cause the host device to perform one or more specified computations. The method further includes receiving a response from the host device. The response is based on execution of the one or more specified computations.

Claims (75)

1. A method comprising:

in a data storage device including a controller and a non-volatile memory, performing:

determining an instruction identifier based on a condition detected by the controller and based on a condition-to-identifier mapping that maps the condition to the instruction identifier;

sending an instruction based on the instruction identifier to a host device to cause the host device to perform one or more specified computations at a processor of the host device;

receiving a response from the processor, wherein the response:

includes output data and an operation identifier, and

is based on performance of the one or more specified computations; and

performing an operation based on the instruction identifier and based on a mapping of the operation identifier to the operation.

2. The method of claim 1 , wherein:

the instruction identifier indicates the one or more specified computations, and

the operation identifier indicates one or more specified operations, the one or more specified operations to be performed by the controller using one or more data structures that store the condition-to-identifier mapping.

3. The method of claim 1 , further comprising:

sending, from the data storage device, data to be used by the host device during performance of the one or more specified computations, and

processing the response at the data storage device by accessing a data structure that includes an identifier-to-operation mapping that maps the operation identifier to the operation.

4. The method of claim 1 , wherein:

the condition corresponds to an error correction code failure that is determined to be uncorrectable by an error correction coding (ECC) engine of the data storage device, and

the one or more specified computations are associated with heroics performed subsequent to the error correction code failure.

5. The method of claim 4 , wherein the instruction includes error data associated with one or more soft reads performed on the non-volatile memory in response to the error correction code failure.

6. The method of claim 1 , wherein:

the one or more specified computations are associated with wear leveling of the non-volatile memory, and

the instruction includes parameter data associated with the non-volatile memory.

7. The method of claim 1 , wherein:

the one or more specified computations are associated with generating extended parity bits, and

the response includes the extended parity bits to be stored at the non-volatile memory.

8. The method of claim 1 , wherein:

the one or more specified computations are associated with a scrambling operation, and

the response includes scrambled data to be stored at the non-volatile memory.

9. The method of claim 1 , wherein the operation identifier indicates one or more of:

a parameter to be set at the data storage device;

an operation to be performed by the data storage device; or

a manner in which the data storage device is to process output data, wherein the output data is associated with the instruction identifier or the one or more specified computations.

10. The method of claim 1 , wherein the non-volatile memory comprises a resistive random-access memory (ReRAM) or a multi-layer flash memory.

11. The method of claim 1 , further comprising retrieving the instruction identifier from a memory of the data storage device based on the response.

12. The method of claim 1 , wherein:

the instruction identifier includes an op-code or a procedure call corresponding to the instruction, and

sending the instruction to the host device includes sending the op-code or the procedure call to the host device.

13. The method of claim 1 , wherein the condition-to-identifier mapping includes a data structure that maps:

a first condition associated with an error correction coding (ECC) failure to a first op-code or first procedure call,

a second condition associated with a reliability measurement to a second op-code or second procedure call, and

a third condition associated with wear leveling to a third op-code or third procedure call.

14. A data storage device comprising:

a non-volatile memory including a condition-to-identifier mapping that maps a detected condition to an instruction identifier; and

a controller coupled to the non-volatile memory, wherein the controller is configured to:

send an instruction to a host device to cause the host device to perform at least one specified computation at a processor of the host device, the instruction determined based on the instruction identifier,

receive a response from the host device, wherein the response:

includes output data and an operation identifier, and

is based on performance of the at least one specified computation; and

perform an operation based on the instruction identifier and based on a mapping of the operation identifier to the operation.

15. The data storage device of claim 14 , wherein the controller:

includes an instruction identifier engine that is configured to select an instruction op-code or procedure call based on the condition-to-identifier mapping, the instruction including the instruction op-code or the procedure call, and

is further configured to process the response based on the output data and the mapping.

16. The data storage device of claim 15 , wherein the instruction op-code or procedure call has a length of one byte.

17. The data storage device of claim 14 , wherein the instruction includes data to be used by the host device during performance of the at least one specified computation.

18. The data storage device of claim 14 , wherein:

the response includes output data associated with the instruction identifier, and

the controller is further configured to process the output data based on the instruction identifier and based on the operation identifier.

19. The data storage device of claim 14 , wherein:

the non-volatile memory comprises a flash memory and further includes a driver, the driver defining multiple computations that are capable of being performed by the host device, and

the controller is further configured to provide the driver to the host device.

20. The data storage device of claim 14 , wherein the operation identifier indicates one or more of:

a parameter to be set at the data storage device;

an operation to be performed by the data storage device; or

a manner in which the data storage device is to process the output data, the output data associated with the instruction identifier or the at least one specified computation.

21. The data storage device of claim 14 , wherein the operation identifier indicates one or more specified operations, the one or more specified operations to be performed by the controller using one or more data structures that store the a condition-to-identifier mapping.

22. An apparatus comprising:

means for storing data, the means for storing data including a condition-to-identifier mapping that maps a detected condition to an instruction identifier; and

means for controlling the means for storing data, the means for controlling configured to:

send an instruction to means for processing to cause the means for processing to perform at least one specified computation, the instruction determined based on the instruction identifier;

receive a response from the means for processing, wherein the response:

includes output data and an operation identifier, and

is based on performance of the at least one specified computation; and

perform an operation based on the instruction identifier and based on a mapping of the operation identifier to the operation.

23. The apparatus of claim 22 , wherein the means for controlling is further configured to:

select an instruction op-code or procedure call based on the condition-to-identifier mapping; and

process the response based on the output data and the mapping.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2025
From: SANDISK TECHNOLOGIES, INC.
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 070778/0175 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 4, 2013
From: D'ABREU, MANUEL ANTONIO; PANTELAKIS, DIMITRIS C.
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 031717/0396 →