IP Library Granted Patent US 10,997,093
Granted Patent B2
US 10,997,093 · App. 16/251,805 · Granted May 4, 2021

NVME data processing method and NVME device

Inventor: Sheng Chang (Hangzhou, CN)
Assignee: HUAWEI TECHNOLOGIES CO., LTD.
G06F13/1642G06F3/0611G06F3/0659G06F13/16G06F13/18G06F2213/16
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,997,093
App. No.
16/251,805
Granted
May 4, 2021
Kind
B2
Abstract

A Non-Volatile Memory Express (NVMe) data reading/writing method and an NVMe device, where in the method, a transceiver receives an NVMe command from a host into a submission queue (SQ), an SQ control circuit sends the NVMe command in the SQ to an solid state drive (SSD) controller when detecting that the SQ in an SQ cache changes, the SSD controller executes the NVMe command, writes a generated NVMe command response into a completion queue (CQ) using a CQ control circuit, and instructs, by triggering an interrupt, the host to read the CQ such that the host processes the NVMe command response in the CQ. Because both the SQ and the CQ are located in the NVMe device, a central processing unit (CPU) can directly read the NVMe command response in the CQ or directly write the NVMe command into the SQ, thereby further reducing consumption of CPU resources.

Claims (52)

1. A Non-Volatile Memory Express (NVMe) data processing method, the method being performed by an NVMe device, the NVMe device comprising a solid state drive (SSD) controller, a transceiver, a submission queue (SQ) cache and a completion queue (CQ) cache, and the method comprising:

obtaining, by the transceiver, an NVMe command, the SSD controller comprising an SQ control circuit and a CQ control circuit, the SQ cache being configured to store an SQ, the CQ cache being configured to store a CQ, the SQ control circuit being configured to manage the SQ, and the CQ control circuit being configured to manage the CQ;

writing, by the transceiver, the NVMe command into the SQ;

sending, by the SQ control circuit, the NVMe command in the SQ to the SSD controller in response to the SQ control circuit detecting, without using a doorbell mechanism, a change of the SQ in the SQ cache;

executing, by the SSD controller, the NVMe command;

writing, by the SSD controller, a generated NVMe command response into the CQ; and

instructing, by the SSD controller, a host to read the NVMe command response in the CQ.

2. The NVMe data processing method of claim 1 , further comprising managing, by the SQ control circuit, a collision between writing and reading of an NVMe command of a same address, and a priority of writing the NVMe command of the same address being higher than a priority of reading the NVMe command of the same address.

3. The NVMe data processing method of claim 1 , further comprising:

maintaining, by the SQ control circuit, a position of the NVMe command in the SQ; and

instructing, by the SQ control circuit, the SSD controller to read the NVMe command in the SQ.

4. The NVMe data processing method of claim 1 , wherein a capacity of the SQ cache is a quantity of central processing unit (CPU) cores of the host multiplied by an NVMe queue depth multiplied by 64 bytes.

5. The NVMe data processing method of claim 1 , further comprising:

maintaining, by the CQ control circuit, a position of the NVMe command response in the CQ; and

instructing, by the CQ control circuit, the SSD controller to write the NVMe command response into the CQ cache.

6. The NVMe data processing method of claim 1 , wherein the NVMe device further comprises a caching agent circuit, and the method further comprising maintaining, by the caching agent circuit, coherence of a level-three cache of a central processing unit (CPU) in the host.

7. The NVMe data processing method of claim 6 , further comprising:

reading, by the SSD controller, data in the NVMe device based on the NVMe command; and

writing, by the caching agent circuit, the data into a memory of the host by performing a remote storage operation.

8. The NVMe data processing method of claim 1 , wherein a capacity of the CQ cache is a quantity of central processing unit (CPU) cores of the host multiplied by an NVMe queue depth multiplied by 16 bytes.

9. The NVMe data processing method of claim 1 , further comprising managing, by the SQ control circuit, writing and reading of the NVMe command in the SQ cache.

10. The NVMe data processing method of claim 1 , further comprising managing, by the CQ control circuit, writing and reading of the NVMe command response in the CQ cache.

11. A Non-Volatile Memory Express (NVMe) device, comprising:

a submission queue (SQ) cache configured to store an SQ;

a completion queue (CQ) cache configured to store a CQ;

a solid state drive (SSD) controller coupled to the SQ cache and the CQ cache and comprising:

an SQ control circuit configured to manage the SQ; and

a CQ control circuit configured to manage the CQ; and

a transceiver coupled to the SQ cache, the CQ cache, and the SSD controller and configured to:

obtain an NVMe command; and

write the NVMe command into the SQ;

the SQ control circuit being further configured to send the NVMe command in the SQ to the SSD controller in response to the SQ control circuit detecting, without using a doorbell mechanism, a change of the SQ in the SQ cache, and

the SSD controller being configured to:

execute the NVMe command;

write a generated NVMe command response into the CQ; and

instruct a host to read the NVMe command response in the CQ.

12. The NVMe device of claim 11 , wherein the SQ control circuit is further configured to manage a collision between writing and reading of an NVMe commend of a same address, and

a priority of writing the NVMe command of the same address being higher than a priority of reading the NVMe command of the same address.

13. The NVMe device of claim 11 , wherein the SQ control circuit is further configured to:

maintain a position of the NVMe command in the SQ; and

instruct the SSD controller to read the NVMe command in the SQ.

14. The NVMe device of claim 11 , wherein a capacity of the SQ cache is a quantity of central processing unit (CPU) cores of the host multiplied by an NVMe queue depth multiplied by 64 bytes.

15. The NVMe device of claim 11 , wherein the CQ control circuit is further configured to:

maintain a position of the NVMe command response in the CQ; and

instruct the SSD controller to write the NVMe command response into the CQ cache.

16. The NVMe device of claim 11 , further comprising a caching agent circuit coupled to the SSD controller and configured to maintain coherence of a level-three cache of a central processing unit (CPU) in the host.

17. The NVMe device of claim 16 , wherein the SSD controller is further configured to: read data in the NVMe device based on the NVMe command; and

write the data into a memory of the host by performing a remote storage operation.

18. The NVMe device of claim 11 , wherein a capacity of the CQ cache is a quantity of central processing unit (CPU) cores of the host multiplied by an NVMe queue depth multiplied by 16 bytes.

19. The NVMe device of claim 11 , wherein the SQ control circuit is further configured to manage writing and reading of the NVMe command in the SQ cache.

20. The NVMe device of claim 11 , wherein the CQ control circuit is

further configured to manage writing and reading of the NVMe command response in the CQ cache.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 18, 2019
From: CHANG, SHENG
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 048060/0098 →
Priority Claims (1)
CN 201610948309.2 · Oct 26, 2016 · national
Continuity (2)
Continuation PCTCN2017092815 · Jul 13, 2017
Related Publication 20190155760A1 · May 23, 2019
Cited By (3)
US 12,353,747 US 12,536,108 US 12,547,481