IP Library Granted Patent US 9,513,869
Granted Patent B2
US 9,513,869 · App. 14/466,515 · Granted Dec 6, 2016

Doorbell-less endpoint-initiated protocol for storage devices

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,513,869
App. No.
14/466,515
Granted
Dec 6, 2016
Kind
B2
Abstract

The present disclosure relates to methods and systems for performing operations in a communications protocol. An example method can include submitting, from a device, a request for a queue entry representing a command from a host comprising a request for data stored at a device memory location; receiving the command from the host; and executing the command. An example method can also include selecting a bit string representing whether a requested data stream has been received, and storing the bit string into a memory buffer portion to mark the buffer portion. The method can include receiving, into the memory buffer, the stream. The method can include retrieving contents of the buffer portion, and determining whether the contents contain the bit string. If so, the method can include determining that portions of the stream have not been received. Otherwise, the method can include determining that the stream has been received.

Claims (43)

1. A method of performing operations in a communications protocol, the method comprising:

submitting, from a target, a command request for an entry in a queue, wherein the entry in the queue represents a command inserted into the queue by a host;

receiving, by the target responsive to the command request, the entry in the queue, wherein the received entry in the queue comprises the command inserted into the queue by the host, and wherein the command comprises a request for data stored at the target; and

executing the command to provide the requested data from the target, responsive to the received entry in the queue.

2. The method of claim 1 , wherein submitting the command request for the entry comprises submitting the command request without receiving, from the host, a command availability signal prior to submitting the command request, and wherein the command availability signal indicates that the host has inserted the command into the queue for processing by the target.

3. The method of claim 2 , further comprising processing a completion of the entry in the queue without writing a completion entry to a completion queue on the host and without generating an interrupt.

4. The method of claim 2 , further comprising:

determining a time for submitting a subsequent command request, based on predicting an arrival time of a subsequent command into the queue; and

submitting, from the target at the determined time, a subsequent command request for a subsequent entry in the queue on the host without receiving, from the host, a subsequent command availability signal prior to submitting the subsequent command request.

5. The method of claim 4 ,

wherein predicting the arrival time of the subsequent command into the queue is based on predicting a latency of time elapsed between submitting the command request for the entry in the queue and receiving the requested entry in the queue; and

wherein submitting the subsequent command request is interleaved with providing the requested data from the target.

6. The method of claim 1 , further comprising:

receiving, from the host, a command availability signal, wherein the command availability signal indicates that the host has inserted an initial command into the queue for processing by the target;

submitting, from the target responsive to the command availability signal, an initial command request for an initial entry in the queue, wherein the initial entry in the queue represents the initial command inserted into the queue by the host;

receiving, from the host responsive to the initial command request, the initial entry in the queue, wherein the received initial entry in the queue includes the initial command inserted into the queue by the host, and wherein the initial command includes an initial request for data stored at an initial device memory location;

executing the initial command to provide the requested initial data from the target, responsive to the received entry in the queue; and

receiving, from the host, a command to switch a communication mode based on a pre-determined measure of input/output operations per second (IOPS), wherein the communication mode causes the target to submit a subsequent command request for a subsequent entry in the queue without receiving, from the host, a subsequent command availability signal.

7. The method of claim 1 , wherein the operations in the communication protocol comprise read operations.

8. The method of claim 1 , wherein the communication protocol includes commands with command formats compatible with the Non-Volatile Memory Express standard.

9. A system for performing operations in a communications protocol, the system comprising:

a host in communication with a memory; and

an interface, between the host and a target, for transmitting a requested data stream;

wherein the target is configured to:

submit to the memory a command request for an entry in a queue, wherein the entry in the queue represents a command inserted into the queue by the host;

receive, responsive to the command request, the entry in the queue, wherein the received entry in the queue comprises the command inserted into the queue by the host, and wherein the command comprises a request for data stored at the target; and

execute the command to provide the requested data from the target, responsive to the received entry in the queue.

10. The system of claim 9 , wherein the target is configured to submit the command request for the entry by submitting the command request without receiving, from the host, a command availability signal prior to submitting the command request, and wherein the command availability signal indicates that the host has inserted the command into the queue for processing by the target.

11. The system of claim 10 , wherein the target is further configured to process a completion of the entry in the queue without writing a completion entry to a completion queue on the host and without generating an interrupt.

12. The system of claim 10 , the target is further configured to:

determine a time for submitting a subsequent command request, based on predicting an arrival time of a subsequent command into the queue; and

submit at the determined time, a subsequent command request for a subsequent entry in the queue on the host without receiving, from the host, a subsequent command availability signal prior to submitting the subsequent command request.

13. The system of claim 12 ,

wherein predicting the arrival time of the subsequent command into the queue is based on predicting a latency of time elapsed between submitting the command request for the entry in the queue and receiving the requested entry in the queue; and

wherein the target is configured to submit the subsequent command request interleaved with providing the requested data from the target.

14. The system of claim 9 , wherein the target is further configured to:

receive from the host, a command availability signal, wherein the command availability signal indicates that the host has inserted an initial command into the queue for processing by the target;

submit, responsive to the command availability signal, an initial command request for an initial entry in the queue, wherein the initial entry in the queue represents the initial command inserted into the queue by the host;

receive, from the host responsive to the initial command request, the initial entry in the queue, wherein the received initial entry in the queue includes the initial command inserted into the queue by the host, and wherein the initial command includes an initial request for data stored at an initial device memory location;

execute the initial command to provide the requested initial data from the target, responsive to the received entry in the queue; and

receive, from the host, a command to switch a communication mode based on a pre-determined measure of input/output operations per second (IOPS), wherein the communication mode causes the target to submit a subsequent command request for a subsequent entry in the queue without receiving, from the host, a subsequent command availability signal.

15. The system of claim 9 , wherein the operations in the communication protocol comprise read operations.

16. The system of claim 9 , wherein the communication protocol includes commands with command formats compatible with the Non-Volatile Memory Express standard.

Assignments (9)
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 Dec 6, 2016
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 040829/0516 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2014
From: BANDIC, ZVONIMIR Z.; CHU, FRANK R.; GUYOT, CYRIL; MATEESCU, ROBERT; VUCINIC, DEJAN; WANG, QINGBO
To: HGST NETHERLANDS B.V.
Reel/Frame 034080/0688 →