Systems, methods, and apparatus for using a submission queue for write buffer utilization
In some aspects, the techniques described herein relate to a method including receiving, from a host device, a first request to write first data to a memory device; adding the first request to a queue on the memory device; determining an availability of a write buffer of the memory device; retrieving the first data from the host device based on the determining and the first request added to the queue; and writing the first data to a write buffer of the memory device. The method may further include returning a completion message to the host device based on writing the first data to the write buffer; and writing the first data from the write buffer of the memory device to storage media. The first request may be an SQE, and the method may further include parsing the SQE and determining that the SQE is a write command.
1 . A method comprising:
receiving, from a host device, a first request to write first data to a memory device;
determining a first availability, based on a size of data in a write buffer, of the write buffer corresponding to a location to write the first data of the memory device;
adding the first request to a queue on the memory device based on determining the first availability;
determining a second availability of the write buffer;
retrieving the first data from the host device based on adding the first request and determining the second availability; and
writing the first data to the write buffer of the memory device.
2 . The method of claim 1 , further comprising:
returning a completion message to the host device based on writing the first data to the write buffer; and
writing the first data from the write buffer of the memory device to storage media.
3 . The method of claim 1 , wherein the first request is a submission queue entry (SQE), and wherein the method further comprises:
parsing the SQE; and
determining that the SQE is a write request.
4 . The method of claim 1 , wherein the first request is a submission queue entry (SQE), and wherein the method further comprises:
parsing a reclaim group (RG) and reclaim unit handle (RUH) from the SQE; and
wherein adding the first request to the queue comprises queueing the SQE in a first in first out (FIFO) queue, wherein the FIFO queue corresponds to the RG and the RUH.
5 . The method of claim 1 , wherein adding the first request to a queue comprises:
determining that the size of the data in the write buffer is above a threshold value; and
adding the first data to the queue.
6 . The method of claim 1 , wherein determining the first availability of the write buffer comprises determining that a size of data in the write buffer is below a threshold value; and writing the first data to the write buffer comprises:
writing the first data from the queue to the write buffer; and
removing the first data from the queue.
7 . The method of claim 1 , wherein the queue comprises a first indicator, wherein the first indicator corresponds to a location in a host memory of the host device, wherein the location in the host memory corresponds to the first data.
8 . The method of claim 1 , further comprising:
receiving, from the host device, a second request to read second data from the memory device; and
retrieving the second data from the memory device; wherein the write buffer is above a threshold value.
9 . The method of claim 1 , further comprising:
receiving, from the host device, a second request to write second data to the memory device; and
adding the second request to the queue on the memory device.
10 . The method of claim 1 , further comprising a second indicator, wherein the second indicator corresponds to a most recent first request.
11 . A device comprising:
a controller, wherein the controller comprises a write buffer, wherein the write buffer corresponds to a location to write first data;
storage media; and
a queue; wherein the controller performs operations comprising:
receiving, from a host device, a first request to write the first data to the storage media;
determining a first availability, based on a size of data in the write buffer, of the write buffer;
adding the first request to the queue based on determining the first availability, wherein the queue is a FIFO queue;
determining a second availability of the write buffer;
retrieving the first data from the host device based on adding the first request and determining the second availability;
writing the first data to the write buffer;
returning a completion message to the host device; and
writing the first data from the write buffer to the storage media.
12 . The device of claim 11 , wherein the first request is a submission queue entry (SQE), the completion message is a completion queue entry, and wherein the controller further performs operations comprising:
parsing the SQE; and
determining that the SQE is a write command.
13 . The device of claim 11 , wherein the first request is a submission queue entry (SQE), and wherein the controller further performs operations comprising:
parsing a reclaim group (RG) and reclaim unit handle (RUH) from the SQE; wherein the queue corresponds to the RG and the RUH.
14 . The device of claim 11 , wherein adding the first request to a queue comprises:
determining that the size of the data in the write buffer is above a threshold value; and
adding the first data to the queue.
15 . The device of claim 11 , wherein determining an availability of a write buffer comprises determining that the size of the data in the write buffer is below a threshold value; and writing the first data to a write buffer comprises:
writing the first data from the queue to the write buffer; and
removing the first data from the queue.
16 . The device of claim 11 , wherein the controller performs operations comprising:
receiving, from the host device, a second request to write second data to the storage media;
adding the second request to the queue,
and wherein writing the first data to the write buffer comprises:
determining that the size of the data in the write buffer is below a threshold value;
writing the first data from the queue to the write buffer; and
writing the second data from the queue to the write buffer.
17 . The device of claim 11 , wherein the queue comprises a first indicator, wherein the first indicator corresponds to a location in a host memory of the host device, wherein the location in the host memory corresponds to the first data.
18 . A system comprising:
a host device; and
a storage device, wherein the storage device comprises:
a controller, wherein the controller comprises a write buffer, wherein the write buffer corresponds to a location to write first data;
storage media; and
a queue; wherein the controller performs operations comprising:
receiving, from the host device, a first request to write the first data to the storage media;
determining a first availability, based on a size of data in the write buffer, of the write buffer;
adding the first request to the queue based on determining the first availability, wherein the queue is a FIFO queue;
determining a second availability of the write buffer;
retrieving the first data from the host device based adding the first request and determining the second availability;
writing the first data to the write buffer;
returning a completion message to the host device; and
writing the first data from the write buffer to the storage media.
19 . The system of claim 18 , wherein adding the first request to a queue comprises:
determining that the size of the data in the write buffer is above a threshold value; and
adding the first data to the queue.
20 . The system of claim 18 , wherein determining an availability of the write buffer comprises determining that the size of the data in the write buffer is below a threshold value; and writing the first data to a write buffer comprises:
writing the first data from the queue to the write buffer; and
removing the first data from the queue.