IP Library Granted Patent US 9,021,178
Granted Patent B2
US 9,021,178 · App. 13/099,316 · Granted Apr 28, 2015

High performance path for command processing

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,021,178
App. No.
13/099,316
Granted
Apr 28, 2015
Kind
B2
Abstract

Embodiments of solid-state storage system are provided herein which reduce processing delays for performance-sensitive commands. These performance-sensitive commands are typically read-write commands which can be transferred to the storage media by a high performance path to optimize responsiveness to the host. This high performance path can be enabled and disabled to prevent conflicts with commands processed via a low performance path.

Claims (37)

1. A non-volatile memory storage system, comprising:

a non-volatile storage array;

an interface to a host system, the interface configured to receive a command from the host system; and

a processor configured to process the command, the processor including:

a high performance path, including a pre-allocated memory buffer, capable of submitting a plurality of parallel command accesses to the storage array, the high performance path configured to reduce command processing delay, and

a low performance path capable of submitting a plurality of sequenced command accesses to the storage array, the low performance path including a set of buffers for storing data corresponding to the plurality of sequenced commands,

wherein the processor is configured to perform a first determination, the first determination comprising a determination of whether the command is suitable for processing with the high performance path,

wherein the processor is further configured to perform a second determination, the second determination comprising a determination of whether a subsequent command received by the interface is to be processed with the low performance path,

wherein the second determination is based at least in part on the first determination, and

wherein the processor is further configured to, in response to determining that the command is not suitable for processing with the high performance path, disable the high performance path until a threshold number of commands are successfully processed via the low performance path.

2. The non-volatile memory storage system of claim 1 , wherein only one of the high performance path and the low performance path is processing a command at a single time.

3. The non-volatile memory storage system of claim 2 , wherein a read or write command designating less than or equal to 256 sectors of data and with a high performance command tag is determined to be suitable for processing with the high performance path.

4. The non-volatile memory storage system of claim 2 , wherein the low performance path is further capable of processing at least one of system commands, security commands, and power management commands.

5. The non-volatile memory storage system of claim 1 , wherein the determination of whether the command is suitable for processing with the high performance path is based on at least one of the command's type, the command's size, and a command priority tag.

6. The non-volatile memory storage system of claim 1 , wherein the non-volatile storage array comprises solid-state memory.

7. The non-volatile memory storage system of claim 1 , wherein the command is a SATA or SAS command including a command queuing tag and a performance bit.

8. The non-volatile memory storage system of claim 1 , wherein the threshold number of commands is one command.

9. The non-volatile memory storage system of claim 1 , wherein the interface comprises a queue for receiving a plurality of commands and the processor is further configured to concurrently determine eligibility for the high performance path for the plurality of commands in the queue.

10. The non-volatile memory storage system of claim 1 , wherein the processor is further configured to perform a command validation on the command when the command is processed via the low performance path.

11. The non-volatile memory storage system of claim 10 , wherein the command comprises one of a system command, a security command, and a power management command.

12. The non-volatile memory storage system of claim 1 , wherein the processor is further configured to determine, in response to determining that the command is not suitable for processing with the high performance path, whether to perform a command validation on the subsequent command after the command is processed.

13. The non-volatile memory storage system of claim 12 , wherein the determination of whether to perform the command validation on the subsequent command is based at least in part on a command type of the command.

14. A method of command handling performed by a solid-state storage system, comprising:

receiving, from a host, a command for a non-volatile media array;

performing a first determination, the first determination comprising a determination of eligibility of the command for a high performance path, the high performance path configured to submit a plurality of parallel commands for execution on the media array;

when the command is determined to be eligible for the high performance path:

providing the command to a pre-allocated buffer associated with the high performance path; and

processing the command via the high performance path; when the command is determined to be not eligible for the high performance path:

processing the command via a low performance path;

storing data corresponding to data associated with the command at a set of buffers associated with the low performance path;

disabling the high performance path after processing the command via the low performance path; and

enabling the high performance path after successfully processing a threshold number of commands via the low performance path; and

performing a second determination, the second determination comprising a determination of whether a subsequent command received from the host is to be processed via the low performance path, wherein the second determination is based at least in part on the first determination.

15. The method of claim 14 , wherein the eligibility of the command for a high performance path is determined in part by at least one of the command's type, priority tag, and size.

16. The method of claim 15 , wherein the command eligible for the high performance path includes a read or write command under a threshold size.

17. The method of claim 16 , wherein the threshold size is 256 sectors.

18. The method of claim 14 , further comprising disabling the low performance path while the high performance path is processing a command.

Assignments (6)
RELEASE OF SECURITY INTEREST AT REEL 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 19, 2011
From: GUDA, CHANDRA M.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 026312/0565 →