CN111352873B - NVMe protocol command processing method and device - Google Patents

NVMe protocol command processing method and device Download PDF

Info

Publication number
CN111352873B
CN111352873B CN202010162892.0A CN202010162892A CN111352873B CN 111352873 B CN111352873 B CN 111352873B CN 202010162892 A CN202010162892 A CN 202010162892A CN 111352873 B CN111352873 B CN 111352873B
Authority
CN
China
Prior art keywords
command
nvme protocol
data transmission
queue
nvme
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010162892.0A
Other languages
Chinese (zh)
Other versions
CN111352873A (en
Inventor
姹ゅ嘲
汤峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Starblaze Technology Co ltd
Original Assignee
Beijing Starblaze Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Starblaze Technology Co ltd filed Critical Beijing Starblaze Technology Co ltd
Priority to CN202010162892.0A priority Critical patent/CN111352873B/en
Publication of CN111352873A publication Critical patent/CN111352873A/en
Application granted granted Critical
Publication of CN111352873B publication Critical patent/CN111352873B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices

Abstract

An NVMe protocol command processing method and device are disclosed. The disclosed embodiment provides a method, a device and a system for processing an NVMe protocol command in a terminal device, wherein in the process of processing the NVMe protocol command, one NVMe protocol command corresponds to one command ID, one command ID corresponds to one cache area, a first controller sends an instruction required for processing the NVMe protocol command to a second controller through a first queue and a third queue, the second controller sends the instruction required for processing the NVMe protocol command to the first controller through a second queue and a fourth queue, and the first controller and the second controller acquire information required for processing the NVMe protocol command from the cache area corresponding to the command ID according to the command ID, so that the NVMe protocol command is processed in the terminal device.

Description

NVMe protocol command processing method and device
Technical Field
The invention relates to the technical field of information processing, in particular to an NVMe protocol command processing method.
Background
Data exchange between the host and the terminal device is performed based on the queue, as shown in fig. 10. The host creates a commit queue and a completion queue, and the host fills commands required for data exchange into the commit queue. The terminal equipment acquires the command from the submission queue, processes the command according to the content of the command, and fills the processing result of the command into the completion queue. The host obtains the processing result of the command from the completion queue, and the command processing is completed.
Currently, when data exchange is implemented between a host and a terminal device according to the above process, a Non-Volatile Memory Express (NVMe) protocol specifies a command for filling the commit queue by the host and an adopted data structure. However, the NVMe protocol does not specify how the terminal device processes the commands specified by the NVMe protocol.
Disclosure of Invention
The invention aims to provide a method, a device and a system for processing an NVMe protocol command, thereby creatively providing an implementation scheme for processing the NVMe protocol command by a terminal device.
Therefore, the technical scheme for solving the technical problem is as follows:
the embodiment of the invention provides an NVMe protocol command processing method, which comprises the following steps:
the method comprises the steps that a first controller receives a high-speed nonvolatile storage NVMe protocol command from a host, and stores the NVMe protocol command to a cache area corresponding to a command identification ID;
the first controller generates, in response to the NVMe protocol command, an NVMe command processing request to populate a first queue, the NVMe command processing request including the command ID;
the first controller acquires a data transmission request from a second queue, the data transmission request comprises the command ID, data transmission information is acquired according to the command ID, the data transmission request and the data transmission information are generated by the second controller processing the NVMe protocol command, the data transmission request is filled into the second queue by the second controller, and the data transmission information is stored into a cache region corresponding to the command ID by the second controller;
the first controller initiates data transmission between the host and the terminal equipment according to the data transmission information;
after the data transmission is finished, the first controller generates a data transmission finishing instruction to fill a third queue, wherein the data transmission finishing instruction comprises the command ID;
the first controller acquires a command processing completion instruction from a fourth queue, the command processing completion instruction comprises the command ID, NVMe protocol command completion information is acquired according to the command ID and sent to a host, the command processing completion instruction and the NVMe protocol command completion information are generated after the second controller judges that the NVMe protocol command processing is completed, the command processing completion instruction is filled into the fourth queue by the second controller, and the NVMe protocol command completion information is stored into a cache area corresponding to the command ID by the second controller.
Optionally, the method further includes:
the first controller acquires a new data transmission request from the second queue, the new data transmission request comprises the command ID, new data transmission information is acquired according to the command ID, the new data transmission request and the new data transmission information are generated by the second controller processing the NVMe protocol command, the new data transmission request is filled into the second queue by the second controller, and the new data transmission information is stored into a cache region corresponding to the command ID by the second controller;
and returning to the step of executing the step that the first controller initiates the data transmission between the host and the terminal equipment according to the new data transmission information.
Optionally, the method further includes:
and after the data transmission is finished, the first controller generates data transmission finishing information, and stores the data transmission finishing information to a cache region corresponding to the command ID, wherein the data transmission finishing information is used for indicating whether the data transmission is correct or not.
Optionally, wherein,
the first queue and the third queue are the same queue;
the second queue and the fourth queue are the same queue.
Optionally, the method further includes:
the first controller assigns the command ID, which corresponds to a buffer area.
Optionally, the method further includes:
and after the first controller sends the NVMe protocol command completion information to the host, releasing the cache area corresponding to the command ID.
Optionally, wherein,
the cache area comprises at least three sub-cache areas, and the three sub-cache areas are respectively used for storing the NVMe protocol command, the data transmission information and the NVMe protocol command completion information.
The embodiment of the invention provides an NVMe protocol command processing method, which comprises the following steps:
the second controller responds to an NVMe command processing request for high-speed nonvolatile storage in the first queue, the NVMe command processing request comprises a command ID, and an NVMe protocol command is acquired according to the command ID, the NVMe command processing request is generated by the first controller in response to the received NVMe protocol command, and the NVMe protocol command is stored to a cache area corresponding to the command ID by the first controller;
the second controller processes the NVMe protocol command to generate a data transmission request and data transmission information, fills the data transmission request into a second queue, wherein the data transmission request comprises the command ID, and stores the data transmission information into a cache region corresponding to the command ID;
the second controller responds to a data transmission completion instruction in a third queue, the data transmission completion instruction comprises the command ID, the NVMe protocol command is obtained according to the command ID, whether the processing of the NVMe protocol command is completed or not is judged, and the data transmission completion instruction is generated after the data transmission between the host and the terminal equipment is completed by the first controller;
when the NVMe protocol command processing is completed, the second controller generates a command processing completion instruction and NVMe protocol command completion information, wherein the command processing completion instruction comprises the command ID, fills the fourth queue with the command processing completion instruction, and stores the NVMe protocol command completion information to a cache area corresponding to the command ID, and the command processing completion instruction is used for indicating the first controller to acquire the NVMe protocol command completion information and send the NVMe protocol command completion information to a host.
Optionally, the method further includes:
according to the NVMe protocol command, the second controller generates a new data transmission request and new data transmission information, the second data transmission request comprises the command ID, the new data transmission request is filled into a second queue, the new data transmission information is stored in a cache region corresponding to the command ID, and the new data transmission command is used for indicating the first controller to initiate data transmission between the host and the terminal equipment according to the new data transmission information;
and returning to execute the step that the second controller responds to a data transmission completion instruction in the third queue, acquiring the NVMe protocol command according to the command ID, and judging whether the NVMe protocol command is processed or not.
Optionally, the method further includes:
the second controller acquires data transmission completion information according to the command ID, wherein the data transmission completion information is generated by the first controller after data transmission is completed and is stored to a cache region corresponding to the command ID by the first controller;
the second controller determines whether the NVMe protocol command is processed or not specifically as follows:
and the second controller judges whether the data transmission corresponding to the NVMe protocol command is completely processed or not according to the data transmission completion information.
Alternatively to this, the first and second parts may,
the first queue and the third queue are the same queue;
the second queue and the fourth queue are the same queue.
The embodiment of the invention provides an NVMe protocol command processing method, which comprises the following steps:
the method comprises the steps that a first controller receives a plurality of high-speed nonvolatile storage NVMe protocol commands from a host, and generates a command ID for each NVMe protocol command, wherein each command ID corresponds to an independent cache area;
the first controller responds to the received multiple NVMe protocol commands, generates an NVMe command processing request for each NVMe protocol command, fills the NVMe command processing requests corresponding to the multiple NVMe protocol commands into the first queue, and each NVMe command processing request comprises a command ID corresponding to the NVMe command processing request;
the second controller responds to the multiple NVMe command processing requests in the first queue, and acquires an NVMe protocol command corresponding to each NVMe command processing request according to the command ID of the NVMe command processing request;
the second controller processes the NVMe protocol commands corresponding to the multiple NVMe command processing requests, generates corresponding data transmission requests and data transmission information for each NVMe command processing request, fills the data transmission requests corresponding to each NVMe command processing request into the second queue, wherein each data transmission request comprises a command ID of the NVMe command processing request corresponding to the data transmission request, and stores the data transmission information corresponding to each NVMe command processing request into a cache area corresponding to the command ID of the NVMe command processing request corresponding to the data transmission information;
the first controller acquires a plurality of data transmission requests from the second queue, and acquires data transmission information corresponding to each data transmission request according to the command ID of the data transmission request;
the first controller initiates data transmission between the host and the terminal equipment according to the data transmission information corresponding to each data transmission request;
after data transmission is completed each time, the first controller generates a data transmission completion instruction corresponding to the data transmission request, the data transmission completion instruction comprises a command ID of the data transmission request corresponding to the data transmission completion instruction, and the data transmission completion instruction is filled into a third queue;
the second controller acquires a plurality of data transmission completion instructions from the third queue, acquires an NVMe protocol command according to the command ID of each data transmission completion instruction, and judges whether the processing of the NVMe protocol command is completed;
the second controller generates a command processing completion instruction and NVMe protocol command completion information for each processed NVMe protocol command, wherein the command processing completion instruction comprises a command ID of the NVMe protocol command corresponding to the command processing completion instruction, fills the command processing completion instruction into the fourth queue, and stores the NVMe protocol command completion information into a cache area corresponding to the command ID of the NVMe protocol command corresponding to the NVMe protocol command completion information;
and the first controller acquires a plurality of command processing completion instructions from the fourth queue, acquires NVMe protocol command completion information according to the command ID of each command processing completion instruction and sends the NVMe protocol command completion information to the host.
An embodiment of the present invention provides a first apparatus for processing an NVMe protocol command, including:
the storage unit is used for receiving a high-speed nonvolatile storage NVMe protocol command from a host and storing the NVMe protocol command to a cache area corresponding to a command identification ID;
a first generating unit, configured to generate, in response to the NVMe protocol command, an NVMe command processing request to fill to a first queue, the NVMe command processing request including the command ID;
an obtaining unit, configured to obtain a data transmission request from a second queue, where the data transmission request includes the command ID, and obtain data transmission information according to the command ID, where the data transmission request and the data transmission information are generated by the second controller processing the NVMe protocol command, the data transmission request is filled into the second queue by the second controller, and the data transmission information is stored in a cache region corresponding to the command ID by the second controller;
the transmission unit is used for initiating data transmission between the host and the terminal equipment according to the data transmission information;
the second generating unit is used for generating a data transmission completion instruction to fill a third queue after data transmission is completed, wherein the data transmission completion instruction comprises the command ID;
a sending unit, configured to obtain a command processing completion instruction from a fourth queue, where the command processing completion instruction includes the command ID, and obtain NVMe protocol command completion information according to the command ID and send the NVMe protocol command completion information to a host, where the command processing completion instruction and the NVMe protocol command completion information are generated after the second controller determines that the NVMe protocol command processing is completed, the command processing completion instruction is filled into the fourth queue by the second controller, and the NVMe protocol command completion information is stored in a cache area corresponding to the command ID by the second controller.
Optionally, wherein,
the obtaining unit is further configured to obtain a new data transmission request from the second queue, where the new data transmission request includes the command ID, and obtain new data transmission information according to the command ID, where the new data transmission request and the new data transmission information are generated by the second controller processing the NVMe protocol command, the new data transmission request is filled into the second queue by the second controller, and the new data transmission information is stored in a cache region corresponding to the command ID by the second controller;
and returning to the transmission unit.
Optionally, the method further includes:
and the third generating unit is used for generating data transmission completion information after the data transmission is completed, storing the data transmission completion information to a cache region corresponding to the command ID, wherein the data transmission completion information is used for indicating whether the data transmission is correct or not.
Optionally, the method further includes:
an allocation unit to allocate the command ID, the command ID corresponding to a buffer area. .
Optionally, the method further includes:
and the releasing unit is used for releasing the cache area corresponding to the command ID after the NVMe protocol command completion information is sent to the host.
An embodiment of the present invention provides a second apparatus for processing an NVMe protocol command, including:
a first obtaining unit, configured to respond to an NVMe command processing request for high-speed nonvolatile storage in a first queue, where the NVMe command processing request includes a command ID, and obtain, according to the command ID, an NVMe protocol command, where the NVMe command processing request is generated by a first controller in response to a received NVMe protocol command, and the NVMe protocol command is stored by the first controller to a cache area corresponding to the command ID;
the first generating unit is used for processing the NVMe protocol command to generate a data transmission request and data transmission information, filling the data transmission request into a second queue, wherein the data transmission request comprises the command ID, and storing the data transmission information into a cache region corresponding to the command ID;
a determining unit, configured to respond to a data transmission completion instruction in a third queue, where the data transmission completion instruction includes the command ID, acquire the NVMe protocol command according to the command ID, and determine whether processing of the NVMe protocol command is completed, where the data transmission completion instruction is generated after data transmission between a host and a terminal device by the first controller is completed;
and a second generating unit, configured to generate a command processing completion instruction and NVMe protocol command completion information when the NVMe protocol command processing is completed, where the command processing completion instruction includes the command ID, fill a fourth queue with the command processing completion instruction, store the NVMe protocol command completion information to a cache area corresponding to the command ID, and the command processing completion instruction is used to instruct the first controller to acquire the NVMe protocol command completion information and send the NVMe protocol command completion information to a host.
Optionally, wherein,
the first generating unit is further configured to generate a new data transmission request and new data transmission information according to the NVMe protocol command, where the second data transmission request includes the command ID, fill the new data transmission request in a second queue, and store the new data transmission information in a cache region corresponding to the command ID, and the new data transmission command is used to instruct the first controller to initiate data transmission between the host and the terminal device according to the new data transmission information;
and returning to the judging unit.
Optionally, the method further includes:
a second obtaining unit, configured to obtain data transmission completion information according to the command ID, where the data transmission completion information is generated by the first controller after data transmission is completed, and the data transmission completion information is stored in a cache area corresponding to the command ID;
the determining unit is specifically configured to: and judging whether the data transmission corresponding to the NVMe protocol command is completely processed or not according to the data transmission completion information.
The embodiment of the invention provides a first device for processing an NVMe protocol command, which comprises the following steps:
a processor, a memory, a Peripheral Component Interconnect Express (PCIe) controller, the memory and the PCIe controller being coupled to the processor, respectively;
the PCIe controller is used for receiving data from the host and sending the data to the host;
the memory is further configured to store instructions, the processor is configured to retrieve the instructions from the memory and execute the instructions, the instructions cause the processor to perform the steps of:
generating an NVMe command processing request to populate a first queue in response to the NVMe protocol command, the NVMe command processing request including the command ID;
acquiring a data transmission request from a second queue, wherein the data transmission request comprises the command ID, acquiring data transmission information according to the command ID, the data transmission request and the data transmission information are generated by the second controller processing the NVMe protocol command, the data transmission request is filled into the second queue by the second controller, and the data transmission information is stored into a cache region corresponding to the command ID by the second controller;
initiating data transmission between the host and the terminal equipment according to the data transmission information;
after the data transmission is finished, generating a data transmission finishing instruction to fill a third queue, wherein the data transmission finishing instruction comprises the command ID;
and acquiring a command processing completion instruction from a fourth queue, wherein the command processing completion instruction comprises the command ID, acquiring NVMe protocol command completion information according to the command ID, and sending the NVMe protocol command completion information to a host, the command processing completion instruction and the NVMe protocol command completion information are generated after the second controller judges that the NVMe protocol command processing is completed, the command processing completion instruction is filled into the fourth queue by the second controller, and the NVMe protocol command completion information is stored into a cache area corresponding to the command ID by the second controller.
Optionally, wherein,
by executing the instruction, the processor is further configured to obtain a new data transmission request from the second queue, where the new data transmission request includes the command ID, and obtain new data transmission information according to the command ID, where the new data transmission request and the new data transmission information are generated by the second controller processing the NVMe protocol command, the new data transmission request is filled into the second queue by the second controller, and the new data transmission information is stored in a cache region corresponding to the command ID by the second controller;
and returning to the step of executing the step that the first controller initiates the data transmission between the host and the terminal equipment according to the new data transmission information.
Optionally, wherein,
and the processor is further used for generating data transmission completion information by the first controller after the data transmission is completed by executing the instruction, storing the data transmission completion information to a cache region corresponding to the command ID, wherein the data transmission completion information is used for indicating whether the data transmission is correct or not.
Optionally, wherein,
the processor is further configured to assign the command ID by executing the instructions, the command ID corresponding to the cache region. .
Optionally, wherein,
by executing the instruction, the processor is further configured to release the cache area corresponding to the command ID after sending the NVMe protocol command completion information to the host.
The embodiment of the invention provides a second device for processing an NVMe protocol command, which comprises the following components:
the processor is connected with the memory;
the memory is configured to store instructions, and the processor is configured to retrieve instructions from the memory and execute the instructions, the instructions causing the processor to perform the steps of:
responding to an NVMe command processing request in a first queue, wherein the NVMe command processing request comprises the command ID, and acquiring an NVMe protocol command according to the command ID, wherein the NVMe command processing request is generated by a first controller in response to the received NVMe protocol command, and the NVMe protocol command is stored to a cache area corresponding to the command ID by the first controller;
processing the NVMe protocol command to generate a data transmission request and data transmission information, filling the data transmission request into a second queue, wherein the data transmission request comprises the command ID, and storing the data transmission information into a cache region corresponding to the command ID;
responding to a data transmission completion instruction in a third queue, wherein the data transmission completion instruction comprises the command ID, acquiring the NVMe protocol command according to the command ID, and judging whether the processing of the NVMe protocol command is completed or not, wherein the data transmission completion instruction is generated by the first controller after the data transmission between the host and the terminal equipment is completed;
and when the NVMe protocol command processing is completed, generating a command processing completion instruction and NVMe protocol command completion information, wherein the command processing completion instruction comprises the command ID, filling the fourth queue with the command processing completion instruction, and storing the NVMe protocol command completion information to a cache area corresponding to the command ID, wherein the command processing completion instruction is used for indicating the first controller to acquire the NVMe protocol command completion information and send the NVMe protocol command completion information to a host.
Optionally, wherein,
by executing the instruction, the processor is further configured to generate a new data transmission request and new data transmission information according to the NVMe protocol command, where the second data transmission request includes the command ID, fill the new data transmission request in a second queue, and store the new data transmission information in a cache region corresponding to the command ID, and the new data transmission command is used to instruct the first controller to initiate data transmission between the host and the terminal device according to the new data transmission information;
and returning and executing a data transmission completion instruction in response to the third queue, acquiring the NVMe protocol command according to the command ID, and judging whether the NVMe protocol command is processed or not.
Optionally, wherein,
the processor is further configured to obtain data transmission completion information according to the command ID by executing the instruction, where the data transmission completion information is generated by the first controller after data transmission is completed and is stored in the cache area corresponding to the command ID by the first controller;
judging whether the NVMe protocol command is processed or not specifically comprises the following steps:
and judging whether the data transmission corresponding to the NVMe protocol command is completely processed or not according to the data transmission completion information.
The embodiment of the invention provides a system for processing NVMe protocol commands, which comprises the following steps:
at least one first device provided in this embodiment of the present invention, and at least one second device provided in this embodiment of the present invention, the processor of the at least one first device and the processor of the at least one second device exchange instructions through the first queue, the second queue, the third queue, and the fourth queue, and the processor of the at least one first device and the processor of the at least one second device exchange data through the buffer area.
The embodiment of the invention provides an NVMe protocol processor, which comprises a first controller, a second controller and a memory;
the first controller and the second controller exchange information through a plurality of queues;
the first controller and the second controller are both accessible to the memory;
the first controller is coupled to a host to receive NVMe protocol commands from the host;
the second controller is coupled to the non-volatile memory to access the non-volatile memory;
the memory comprises a plurality of cache regions, and each cache region corresponds to the same command ID;
the first controller receives a first NVMe protocol command from a host, stores the first NVMe protocol command to a cache area corresponding to a first command ID, and fills the first command ID into a first queue;
the second controller responds to the second command ID received from the first queue, acquires a second NVMe protocol command according to the second command ID, processes the second NVMe protocol command to store first data transmission information to a cache region corresponding to the second command ID, and fills the second command ID into the second queue;
the first controller responds to the third command ID received from the second queue, acquires second data transmission information according to the third command ID, and initiates data transmission between the host and the equipment according to the second data transmission information; populating a third queue with the third command ID in response to completion of the data transfer;
the second controller responds to a fourth command ID received from the third queue, and judges whether the fourth NVMe protocol command is processed or not according to the fourth command ID; when the fourth NVMe protocol command is processed, fourth NVMe protocol command completion information is generated, the fourth NVMe protocol command completion information is stored to a cache area corresponding to the fourth command ID, and the fourth command ID is filled into a fourth queue; and
and the first controller responds to the fifth command ID from the fourth queue, acquires fifth NVMe protocol command completion information according to the fifth command ID and sends the fifth NVMe protocol command completion information to the host.
The embodiment of the invention provides an NVMe protocol command processing method, which comprises the following steps:
responding to an NVMe protocol command from a host to be processed, storing the NVMe protocol command to a cache area corresponding to a first command ID, and filling the first command ID to a first queue;
in response to receiving a second command ID from the second queue, obtaining data transmission information according to the second command ID;
initiating data transmission between the host and the terminal equipment according to the data transmission information;
populating a third queue with the second command ID in response to completion of the data transfer;
and responding to the third command ID received from the fourth queue, acquiring NVMe protocol command completion information according to the third command ID and sending the NVMe protocol command completion information to the host.
Optionally, the method further includes:
releasing the third command ID in response to sending NVMe protocol command completion information to the host.
Optionally, the method further comprises the step of,
applying for a command ID, and if the command ID is successfully applied, acquiring an NVMe protocol command to be processed from the host; and if the application of the command ID fails, reapplying the command ID.
Optionally, wherein
The command ID corresponds to a plurality of cache areas and is respectively used for storing the NVMe protocol command, the data transmission information and the NVMe protocol command completion information; and
acquiring the NVMe protocol command completion information according to the third command ID is to acquire the NVMe protocol command completion information from a cache area corresponding to the third command ID; acquiring data transmission information according to the second command ID is acquiring data transmission information from a cache area corresponding to the second command ID.
The embodiment of the invention provides an NVMe protocol command processing method, which comprises the following steps:
responding to the first command ID received from the first queue, acquiring a first NVMe protocol command according to the first command ID, processing the first NVMe protocol command to store first data transmission information to a cache region corresponding to the first command ID, and filling the first command ID into a second queue;
in response to receiving a second command ID from a third queue, judging whether the second NVMe protocol command is processed completely according to the second command ID; and generating second NVMe protocol command completion information when the second NVMe protocol command processing is completed, storing the second NVMe protocol command completion information to a cache area corresponding to the second command ID, and filling the second command ID into a fourth queue.
Optionally, the second NVMe protocol command completion information follows NVMe protocol and indicates that the second NVMe protocol command processing is complete.
Optionally, wherein
And judging whether the second NVMe protocol command is processed completely, storing second data transmission information to a cache region corresponding to the second command ID when the second NVMe protocol command is not processed completely, and filling the second command ID into a second queue.
Optionally, wherein, in response to receiving the second command ID from the third queue, further comprising: updating the second NVMe protocol command to indicate a processing progress of the second NVMe protocol command.
Optionally, wherein the data transfer information is a DMA descriptor.
Optionally, wherein, in response to receiving the first command ID from the first queue, further comprising:
and storing third data transmission information into a buffer area corresponding to the first command ID, and filling the first command ID into a fifth queue.
The embodiment of the invention provides an NVMe protocol command processing method, which comprises the following steps:
the method comprises the steps that a first controller responds to a first NVMe protocol command from a host to be processed, applies for a command ID and obtains a first command ID, stores the NVMe protocol command to a cache area corresponding to the first command ID, and fills the first command ID into a first queue;
the second controller responds to the first command ID received from the first queue, acquires a first NVMe protocol command according to the first command ID, processes the first NVMe protocol command to store first data transmission information to a cache region corresponding to the first command ID, and fills the first command ID into the second queue;
the first controller responds to the first command ID received from the second queue, acquires data transmission information according to the first command ID, and initiates data transmission between the host and the terminal equipment according to the data transmission information; populating a third queue with the first command ID in response to completion of the data transfer;
the second controller responds to the first command ID from the third queue, and judges whether the first NVMe protocol command is processed or not according to the first command ID; when the first NVMe protocol command processing is completed, generating first NVMe protocol command completion information, storing the first NVMe protocol command completion information to a cache area corresponding to the first command ID, and filling the first command ID into a fourth queue; and
and the first controller responds to the first command ID from the fourth queue, acquires NVMe protocol command completion information according to the first command ID and sends the NVMe protocol command completion information to the host.
Optionally, wherein,
the second controller judges whether the first NVMe protocol command is processed completely, stores second data transmission information to a cache area corresponding to the first command ID when the first NVMe protocol command is not processed completely, and fills the first command ID into a second queue.
Optionally, wherein the second controller, in response to receiving the first command ID from the third queue, further includes: updating the first NVMe protocol command to indicate a processing progress of the first NVMe protocol command.
The embodiment of the invention provides an NVMe protocol command processing method, which comprises the following steps:
the method comprises the steps that a first controller responds to a first NVMe protocol command received from a host, applies for a command ID and obtains a first command ID, the NVMe protocol command is stored in a cache area corresponding to the first command ID, and the first command ID is filled in a first queue;
the second controller responds to the second command ID received from the first queue, acquires a second NVMe protocol command according to the second command ID, processes the second NVMe protocol command to store data transmission information to a cache region corresponding to the second command ID, and fills the second command ID into the second queue;
the first controller responds to the third command ID received from the second queue, acquires data transmission information according to the third command ID, and initiates data transmission between the host and the terminal equipment according to the data transmission information; populating a third queue with the third command ID in response to completion of the data transfer;
the second controller responds to a fourth command ID received from the third queue, and judges whether the fourth NVMe protocol command is processed or not according to the fourth command ID; when the fourth NVMe protocol command is processed, generating NVMe protocol command completion information, storing the NVMe protocol command completion information to a cache area corresponding to the fourth command ID, and filling the fourth command ID into a fourth queue; and
and the first controller responds to the fifth command ID from the fourth queue, acquires NVMe protocol command completion information according to the fifth command ID and sends the NVMe protocol command completion information to the host.
Optionally, wherein,
the second controller judges whether the fourth NVMe protocol command is processed completely, stores second data transmission information to a cache area corresponding to the fourth command ID when the fourth NVMe protocol command is not processed completely, and fills the fourth command ID into a second queue.
Optionally, wherein the second controller, in response to receiving the fourth command ID from the third queue, further includes: updating the fourth NVMe protocol command to indicate a processing progress of the fourth NVMe protocol command.
According to the technical scheme, the invention has the following beneficial effects:
the embodiment of the invention provides a method, a device and a system for processing an NVMe protocol command in terminal equipment.
Drawings
In order to more clearly illustrate the embodiments of the present invention or the technical solutions in the prior art, the drawings used in the description of the embodiments or the prior art will be briefly described below, it is obvious that the drawings in the following description are only some embodiments of the present invention, and for those skilled in the art, other drawings can be obtained according to the drawings without creative efforts.
Fig. 1 is a schematic structural diagram of a terminal device for processing NVMe protocol commands according to an embodiment of the present invention;
fig. 2 is a flowchart of a processing method of an NVMe protocol command according to an embodiment of the present invention;
fig. 3 is a flowchart of another example of a method for processing NVMe protocol commands according to an embodiment of the present invention;
fig. 4 is a schematic diagram illustrating an example of an NVMe protocol command processing method according to an embodiment of the present invention;
fig. 5 is another flowchart of an NVMe protocol command processing method according to an embodiment of the present invention;
fig. 6 is another flowchart of an NVMe protocol command processing method according to an embodiment of the present invention;
fig. 7 is a block diagram of a system for processing NVMe protocol commands according to an embodiment of the present invention;
fig. 8 is a block diagram of a system for processing NVMe protocol commands according to another embodiment of the present invention;
fig. 9 is a schematic structural diagram of a terminal device for processing NVMe protocol commands according to an embodiment of the present invention; and
fig. 10 is a schematic diagram illustrating the prior art in which NVMe protocol commands are exchanged between a host and a device through a queue.
Detailed Description
In order to provide an implementation scheme for processing an NVMe protocol command in a terminal device, embodiments of the present invention provide an NVMe protocol command processing method, an apparatus, and a system, and a preferred embodiment of the present invention is described below with reference to the drawings in the specification.
Example one
Fig. 1 is a schematic structural diagram of a terminal device for processing NVMe protocol commands according to an embodiment of the present invention, where the terminal device in fig. 1 includes a first controller 101 and a second controller 102, and the first controller 101 and the second controller 102 exchange commands through a first queue, a second queue, a third queue, and a fourth queue. The first controller 101 and the second controller 102 access the memory 103 according to the command ID, the memory 103 has a cache area corresponding to the command ID, one NVMe protocol command corresponds to one command ID, that is, one NVMe protocol command exclusively occupies one cache area, and the first controller 101 and the second controller 102 acquire information required for processing the NVMe protocol command from the cache area corresponding to the command ID.
Multiple cache regions are provided in the memory 103, each indicated by a unique command ID, so that the number of cache regions of the memory 103 implies the number of NVMe commands that can be processed in parallel in the terminal device.
By way of example, the terminal device is a solid state drive. The terminal device also comprises a nonvolatile memory and a memory interface for accessing the nonvolatile memory. And the terminal equipment accesses the nonvolatile memory during the processing of the NVMe protocol command and generates a response to the NVMe protocol command according to the access result.
The following describes in detail a processing method of the NVMe protocol command according to the schematic structural diagram of the terminal device shown in fig. 1.
Fig. 2 is a flowchart of a processing method of an NVMe protocol command according to an embodiment of the present invention, where the method includes:
201: the first controller receives an NVMe protocol command from the host and stores the NVMe protocol command to a cache area corresponding to the command ID.
The first controller can be coupled to the host and receive an NVMe doorbell sent by the host, wherein the NVMe doorbell is used for indicating that there are NVMe protocol commands to be processed from the host. After receiving the NVMe doorbell, the first controller allocates a command ID, wherein the command ID corresponds to a cache region and is used for accessing the cache region. The NVMe protocol commands are next retrieved from the host. In one example, the first controller obtains, from the submission queue, the NVMe protocol command sent by the host and stores the NVMe protocol command in the cache region corresponding to the command ID allocated to the NVMe protocol command, so that the NVMe protocol command can be accessed through the command ID. In another example, the first controller initiates a Direct Memory Access (DMA) transfer to request the host to directly send the NVMe command to the cache area corresponding to the command ID for storage.
The command ID may be obtained in a variety of ways. In one example, in response to the first controller receiving the NVMe protocol doorbell, the first controller assigns a command ID to the pending NVMe protocol command, the command ID corresponding to a cache region that is accessible via the command ID. And storing the NVMe protocol command sent by the host to a cache area corresponding to the command ID.
In another example, a corresponding relationship between the command ID and the cache area is preset, when the first controller receives an NVMe protocol doorbell, an unused cache area is allocated to the to-be-processed NVMe protocol command, the command ID corresponding to the cache area is the command ID corresponding to the NVMe protocol command, and the NVMe protocol command is stored in the cache area corresponding to the command ID. In still another example, the address of the cache area is taken as the command ID.
Of course, according to actual needs, other technical solutions may be adopted to allocate the command ID to the NVMe protocol command.
It should be noted that when the first processor receives the NVMe protocol doorbell, if there is no available cache area, the command ID cannot be allocated to the NVMe protocol command to be processed for a while. In this case, the NVMe protocol command is temporarily suspended or processing of the NVMe protocol command is suspended (e.g., the NVMe protocol command is not temporarily acquired from the NVMe submission queue). And when the first processor has an available cache area, successfully allocating a command ID to the NVMe protocol command, and then receiving the NVMe protocol command from the host and processing the command.
202: the first controller generates, in response to the NVMe protocol command, an NVMe command processing request to populate a first queue, the NVMe command processing request including the command ID.
203: and the second controller responds to the NVMe command processing request in the first queue and acquires the NVMe protocol command according to the command ID included in the NVMe command processing request.
204: the second controller processes the NVMe protocol command to generate a data transmission request and data transmission information, fills the data transmission request into a second queue, wherein the data transmission request comprises the command ID, and stores the data transmission information into a cache region corresponding to the command ID.
205: the first controller responds to the data transmission request obtained from the second queue, and obtains data transmission information according to the command ID in the data transmission request.
206: and the first controller initiates data transmission between the host and the terminal equipment according to the data transmission information.
207: after the data transmission is completed, the first controller generates a data transmission completion instruction to fill a third queue, wherein the data transmission completion instruction comprises a command ID included in a data transmission request corresponding to the data transmission.
208: and the second controller responds to the data transmission completion instruction in the third queue, acquires the NVMe protocol command according to the command ID in the data transmission completion instruction, and judges whether the processing of the NVMe protocol command is completed. If the NVMe protocol command is not processed, return to step 204.
The first controller generates an NVMe command processing request for the NVMe protocol command, the NVMe command processing request comprises a command ID, and the NVMe command processing request is sent to the second controller through the first queue. The NVMe command processing request is to instruct the second controller to process the NVMe protocol command.
In response to receiving the NVMe command processing request from the first queue, the second controller acquires an NVMe protocol command from the cache region according to the command ID, processes the NVMe protocol command, and generates a data transmission request and data transmission information required by data transmission between the terminal device and the host. And the second controller sends the data transmission request to the first controller through the second queue and stores the data transmission information into a buffer area corresponding to the command ID.
Wherein the data transmission request includes the command ID for instructing the first controller to initiate data transmission between the terminal device and the host. The data transmission information is information required for data transmission. The data transmission information comprises the memory address of the host address terminal equipment. By way of example, one or more host memory addresses can be obtained from NVMe protocol commands, along with the length of data explicitly or implicitly from each host memory address. The second controller generates data transmission information therefrom. And the second controller allocates the memory of the terminal equipment for data transmission, and takes the memory address of the host and the memory address of the terminal equipment as data transmission information. Optionally, the data transmission information may further include a data transmission length, a data transmission type (such as a Direct Memory Access (DMA) transmission identifier, a data transmission direction), and the like.
The first controller acquires the data transmission request from the second queue, acquires data transmission information from the cache region according to the command ID, and initiates data transmission between the terminal device and the host according to a host address and a memory address of the terminal device in the data transmission information. And after the data transmission is finished, the first controller generates a data transmission finishing instruction to fill the third queue, wherein the data transmission finishing instruction comprises the command ID and is used for informing the second controller that the data transmission request processing is finished.
In an example, optionally, after the data transmission indicated by the data transmission length in the data transmission information is completed, the first controller generates data transmission completion information, where the data transmission completion information is used to inform the second controller whether the data transmission completed currently is correct. The data transmission completion information is also stored in the cache area corresponding to the command ID, and the second controller may access the cache area corresponding to the command ID according to the command ID to acquire the data transmission completion information.
And the second controller acquires the data transmission completion information from the third queue and acquires the NVMe protocol command from the buffer area according to the command ID. The second controller determines whether the NVMe protocol command is processed. For example, the second controller may determine whether the NVMe protocol command is completed according to whether all the data indicated by the NVMe protocol command are transmitted. For another example, the second controller may further obtain data transmission completion information according to the command ID, and determine whether data transmission is correct according to the data transmission completion information, so as to determine whether processing of the NVMe protocol command is completed. Optionally, the second controller further releases the memory of the terminal device allocated for data transmission, so that the part of the memory can be used for other data transmission.
In one example, the NVMe protocol command indicates that data is to be transferred from 4 host memory addresses, but only 1 data transfer is currently completed, and the NVMe protocol command is not processed (step 208, "no"). The second controller generates a new data transfer request and a new data transfer message according to the NVMe protocol command (step 204), the new data transfer request including the command ID. And filling the new data transmission request into the second queue, and storing the new data transmission information into the buffer area corresponding to the command ID.
And the first controller acquires a new data transmission request from the second queue, acquires new data transmission information according to the command ID, and initiates data transmission between the host and the terminal equipment according to the new data transmission information. After the data transmission is completed, the first controller generates a new data transmission completion instruction to fill the third queue, wherein the new data transmission completion instruction comprises the command ID.
And the second controller responds to the new data transmission completion instruction in the third queue, acquires the NVMe protocol command according to the command ID, and judges whether the processing of the NVMe protocol command is completed. If the NVMe protocol command is not processed, the second controller regenerates a new data transmission request and new data transmission information according to the NVMe protocol command, and the steps are repeated in a circulating mode until the NVMe protocol command is processed.
In another example, the NVMe protocol command instructs the terminal device to write 4KB of data starting at host memory a address. And the second controller generates a data transmission request and data transmission information according to the NVMe protocol command, wherein the data transmission length in the data transmission information is 4 KB. The first controller receives the data transmission request, acquires data transmission information from the cache region according to the command ID, initiates data transmission between the terminal device and the host according to the data transmission information, and finishes data transmission through one-time data transmission. And the second controller judges that the NVMe protocol command processing is finished and does not generate a new data transmission request and new data transmission information any more.
In yet another example, the NVMe protocol commands instruct the writing of 4 segments of 4KB data starting at host memory addresses a1, a2, A3, and a4 to the terminal device. The second controller allocates a memory (address B1) for receiving data in the terminal device according to the NVMe protocol command, and generates a data transmission request and data transmission information, wherein the memory address of the host in the data transmission information is A1, the memory address of the terminal device is B1, and the data transmission length is 4 KB. The first controller receives the data transmission request, acquires data transmission information from the cache region according to the command ID, and initiates 4KB data transmission between the terminal device and the host according to the data transmission information. In response to receiving the data transfer complete message from the third queue, the second controller determines that the NVMe protocol command is not processed completely, and regenerates a new data transfer instruction and new data transfer information (to indicate that the host memory address is a2, the terminal device memory address is B2, and the data transfer length is 4 KB). The second controller also marks the processing progress of the NVMe command in a buffer area (16 KB of data is to be transferred, 4KB of data has been completed). And the first controller receives a new data transmission instruction again, acquires new data transmission information from the cache region according to the command ID, initiates second data transmission between the terminal equipment and the host according to the new data transmission information, and so on. The second controller needs to generate 4 data transmission requests and 4 data transmission information, and the first controller needs to initiate data transmission between the host and the terminal device 4 times according to the 4 data transmission information generated by the second controller 4 times.
It should be noted here that, the above example is only for better explaining the technical solution provided by the present invention, so that the reader can understand that the implementation scheme of the NVMe protocol command processing provided by the present invention is not limited to the implementation manner of the above scenario example.
209: when the NVMe protocol command processing is completed, the second controller generates a command processing completion instruction and NVMe protocol command completion information, wherein the command processing completion instruction comprises a command ID corresponding to the NVMe protocol command, fills a fourth queue with the command processing completion instruction, and stores the NVMe protocol command completion information to a cache area corresponding to the command ID.
210: and the first controller acquires a command processing completion instruction from the fourth queue, the command processing completion instruction comprises a command ID, and NVMe protocol command completion information is acquired according to the command ID and is sent to the host.
When the NVMe protocol command processing is completed, the second controller generates a command processing completion instruction and NVMe protocol command completion information. NVMe protocol command completion information is NVMe protocol compliant command completion information that may be populated into the NVMe completion queue as a queue entry. And writing the NVMe protocol command completion information into the cache region by the second controller. And the second controller sends the NVMe protocol command completion instruction to the first controller through the four queues. And the first controller acquires the NVMe protocol command completion information according to the command ID in the command processing completion instruction and sends the NVMe protocol command completion information to the host. Therefore, the terminal equipment can process the NVMe protocol command.
In one example, the first queue, the second queue, the third queue, and the fourth queue are four separate queues. In another example, the first queue and the third queue for the first controller to transmit information to the second controller may be the same queue, and the first controller sends NVMe command processing requests and data transmission completion instructions to the second controller through the first queue (i.e., the third queue) at different stages of processing NVMe protocol commands. Similarly, the second queue and the fourth queue for the second controller to transmit information to the first controller may also be the same queue, and the second controller sends a data transmission request and a command processing completion instruction to the first controller through the second queue (i.e., the fourth queue) at different stages of processing the NVMe protocol command.
In one example, the cache area corresponding to the command ID includes at least three sub-cache areas, and the three sub-cache areas are respectively used for storing the NVMe protocol command, the data transmission information, and the NVMe protocol command completion information.
In another example, the cache region corresponding to the command ID is a larger cache region, and the NVMe protocol command, the data transmission information, and the NVMe protocol command completion information are stored in different sub-cache regions of the cache region respectively. In yet another example, the first controller also generates data transfer complete information after the data transfer is complete. And the buffer area also comprises a sub buffer area used for storing data transmission completion information. The first controller and the second controller can access the cache region corresponding to the command ID according to the command ID.
From the above, the present invention has the following advantages:
in the process of processing the NVMe protocol commands, one NVMe protocol command corresponds to one command ID, one command ID corresponds to one cache area, the first controller sends instructions required for processing the NVMe protocol command to the second controller through the first queue and the third queue, the second controller sends information required for processing the NVMe protocol command to the first controller through the second queue and the fourth queue, and the first controller and the second controller acquire the information required for processing the NVMe protocol command from the cache area corresponding to the command ID according to the command ID. In this way, the process of processing the NVMe protocol command is divided into a plurality of stage tasks, and the first controller and the second controller process each stage task respectively, so that the NVMe protocol command is processed in the terminal equipment, the processing delay of the NVMe command is reduced, and the processing concurrency of the NVMe command is improved.
Example two
Fig. 3 is a flowchart of an NVMe protocol command processing method according to another embodiment of the present invention. In the embodiment of fig. 3, the terminal device processes multiple NVMe commands simultaneously.
301: the first controller receives a plurality of NVMe protocol commands from the host and stores each NVMe protocol command to a cache area corresponding to the command ID.
302: the first controller responds to the received multiple NVMe protocol commands, generates an NVMe command processing request for each NVMe protocol command, fills the NVMe command processing requests corresponding to the multiple NVMe protocol commands into the first queue, and each NVMe command processing request comprises a command ID corresponding to the NVMe command processing request.
The first controller receives a plurality of NVMe protocol commands from the host, and stores each NVMe protocol command to a buffer area allocated to the NVMe protocol command. The first controller also generates an NVMe command processing request for each received NVMe protocol command and fills the first queue. One NVMe protocol command corresponds to one command ID, that is, one NVMe protocol command corresponds to one cache area, and information for processing the NVMe protocol command is stored in the cache area.
In one example, as shown in fig. 4, the first controller receives the first NVMe protocol command, assigns a command ID (shown in fig. 4, the command ID is 13) to the first NVMe protocol command, stores the first NVMe protocol command in the buffer area (command request buffer 13) corresponding to the command ID (shown in fig. 4, the command ID is 13), and generates a first NVMe command processing request (including the command ID 13) for the first NVMe protocol command to fill the first queue. The first controller receives the second NVMe protocol command, assigns a command ID (shown in fig. 4, the command ID is 14) to the second NVMe protocol command, stores the second NVMe protocol command to the buffer area (the command request buffer 14) corresponding to the command ID (shown in fig. 4, the command ID is 14), and generates a second NVMe command processing request (including the command ID 14) for the second NVMe protocol command to fill the first queue. The first controller receives the third NVMe protocol command, assigns a command ID (shown in fig. 4, the command ID is 15) to the third NVMe protocol command, stores the third NVMe protocol command to a cache region (command request buffer 15) corresponding to the command ID (shown in fig. 4, the command ID is 15), and generates a third NVMe command processing request (including the command ID 15) for the third NVMe protocol command to fill the first queue. By analogy, there are multiple NVMe command processing requests in the first queue.
In the embodiment of the invention, the command ID corresponds to the independent storage space of the cache region one by one. In the example shown in fig. 4, the buffer area includes 16 independent memory spaces, and each memory space includes a command request buffer, a command completion buffer, and a data transfer information buffer. The buffer region dedicated to the command ID is addressable by the command ID, as well as the command request buffer, command completion buffer, and data transfer information buffer in the buffer region. The buffer zone shown in fig. 4 can accommodate 16 NVMe protocol commands that are processed simultaneously.
To assign a command ID, the first controller looks for a command ID that is not currently being used. In fig. 4, command IDs numbered 1-15 have been used, while command IDs numbered 16 can be assigned to newly received NVMe protocol commands. Thus, in the case of the above figure, if a new NVMe protocol command is received, the first controller may assign a command ID of number 16 for processing the NVMe protocol command. If no command ID is available, the first controller temporarily suspends processing of the new NVMe protocol command. After NVMe protocol command processing is complete, the command ID assigned to it will be reclaimed and can be assigned to the new NVMe protocol command.
In another example, in response to receiving the NVMe doorbell, the first controller retrieves the available command ID. When the available command ID is available, the NVMe protocol command is acquired from the host, and the acquired available command ID is allocated to the acquired NVMe protocol command. And when the terminal equipment does not have available command ID, suspending the acquisition of the NVMe protocol command from the host. And in yet another example, in response to receiving the NVMe doorbell, the first controller retrieves N available command IDs and N NVMe protocol commands from the host, assigning a command ID to each NVMe protocol command. In this way, the number of data transmission between the host and the terminal equipment is reduced, and the bus bandwidth is fully utilized.
303: the second controller responds to the multiple NVMe command processing requests in the first queue, and acquires the NVMe protocol command corresponding to each NVMe command processing request according to the command ID of the NVMe command processing request.
304: the second controller processes the NVMe protocol commands corresponding to the NVMe command processing requests, generates corresponding data transmission requests and data transmission information for each NVMe command processing request, fills the data transmission requests corresponding to each NVMe command processing request in the second queue, wherein each data transmission request includes a command ID of the NVMe command processing request corresponding to the data transmission request, and stores the data transmission information corresponding to each NVMe command processing request in a cache area corresponding to the command ID of the NVMe command processing request corresponding to the data transmission information.
And the second controller responds to each NVMe command processing request in the first queue, and acquires an NVMe protocol command from the cache area for processing according to the command ID carried by each NVMe command processing request.
In the example shown in fig. 4, the second controller, in response to acquiring the NVMe command processing request including the command ID numbered 9 from the first queue, acquires the NVMe protocol command from the entry numbered 9 of the command request buffer of the buffer area according to the command ID numbered 9, processes the NVMe protocol command to generate the data transfer request and the data transfer information including the command ID numbered 9, fills the data transfer request including the command ID numbered 9 into the second queue, and stores the data transfer information into the entry numbered 9 of the data transfer buffer of the buffer area. The second controller, in response to acquiring the NVMe command processing request including the command ID of number 10 from the first queue, acquires the NVMe protocol command from the entry of number 10 of the command request buffer of the buffer area according to the command ID of the NVMe command processing request, processes the NVMe protocol command to generate a data transfer request and data transfer information including the command ID of number 10, fills the data transfer request into the second queue, and stores the data transfer information into the entry of number 10 of the data transfer buffer of the buffer area. The second controller is further responsive to acquiring an NVMe command processing request including a command ID of 11 from the second queue, acquiring an NVMe protocol command from an entry of 11 of a command request buffer of the buffer area according to the command ID of the NVMe command processing request, processing the NVMe protocol command to generate a data transfer request including the command ID of 11 and data transfer information, populating the second queue with the data transfer request, and storing the data transfer information to the entry of 11 of the data transfer buffer of the buffer area. And by analogy, a plurality of data transmission requests are sequentially arranged in the second queue.
305: and the first controller acquires a plurality of data transmission requests from the second queue and acquires data transmission information corresponding to each data transmission request according to the command ID of each data transmission request.
306: and the first controller initiates data transmission between the host and the terminal equipment according to the data transmission information corresponding to each data transmission request.
307: and after the data transmission is completed each time, the first controller generates a data transmission completion instruction corresponding to the data transmission request, the data transmission completion instruction comprises the command ID of the data transmission request corresponding to the data transmission completion instruction, and the data transmission completion instruction is filled into the third queue.
And the first controller processes the data transmission request in the second queue, and generates a data transmission completion instruction corresponding to the data transmission request to fill the data transmission completion instruction in the third queue after data transmission is completed each time.
In the example shown in fig. 4, the first controller, in response to receiving a data transfer request including the command ID numbered 5 from the second queue, fetches data transfer information from the entry numbered 5 of the data transfer information buffer, and initiates data transfer between the terminal device and the host according to the data transfer information. After the data transmission is completed, the first controller generates a data transmission completion instruction including the command ID numbered 5, and fills the data transmission completion instruction into the third queue. The first controller, in response to receiving a second data transfer request including the command ID numbered 6 from the second queue, fetches data transfer information from the entry numbered 6 of the data transfer information buffer, and initiates data transfer between the terminal device and the host according to the data transfer information. After the data transmission is completed, the first controller generates a data transmission completion instruction including the command ID numbered 6, and fills the data transmission completion instruction into the third queue. And by analogy, a plurality of data transmission completion instructions are sequentially arranged in the third queue. During data transfer, the first controller may process other data transfer requests in the second queue, process command processing completion instructions in the fourth queue, or process a host issued NVMe doorbell.
Optionally, the data transmission completion instruction further indicates whether the corresponding data transmission is successful or not, and/or a reason for the data transmission failure.
308: and the second controller acquires a plurality of data transmission completion instructions from the third queue, acquires the NVMe protocol command according to the command ID of each data transmission completion instruction, and judges whether the processing of the NVMe protocol command is completed. For the non-processed completed NVMe protocol command, return to step 304. For NVMe protocol commands whose processing is complete, step 309 is advanced.
309: and the second controller generates a command processing completion instruction and NVMe protocol command completion information for each processed NVMe protocol command, wherein the command processing completion instruction comprises the command ID of the NVMe protocol command corresponding to the command processing completion instruction, fills the command processing completion instruction into the fourth queue, and stores the NVMe protocol command completion information into the cache area corresponding to the command ID of the NVMe protocol command corresponding to the NVMe protocol command completion information.
In the example shown in fig. 4, in response to obtaining a data transfer completion instruction including a command ID numbered 1 from the third queue, the second controller obtains an NVMe protocol command from an entry numbered 1 of the command request buffer, determines that the NVMe protocol command processing is completed, generates a command processing completion instruction including the command ID numbered 1 and NVMe protocol command completion information, fills the command processing completion instruction into the fourth queue, and stores the NVMe protocol command completion information into an entry numbered 1 of the command completion buffer of the cache region. The second controller responds to a data transmission completion instruction which comprises a command ID with the number of 2 and is obtained from the third queue, an NVMe protocol command is obtained from an entry with the number of 2 of the command request buffer area, when the second controller judges that the NVMe protocol command processing is completed, a command processing completion instruction which comprises the command ID with the number of 1 and NVMe protocol command completion information are generated, the command processing completion instruction is filled into the fourth queue, and the NVMe protocol command completion information is stored in an entry with the number of 2 of the command completion buffer area of the cache area. And by analogy, a plurality of command processing completion instructions are sequentially arranged in the fourth queue.
And after receiving the data transmission completion instruction, if the second controller judges that the processing of the corresponding NVMe protocol command is not completed, generating a data transmission request and data transmission information for continuously processing the NVMe protocol command, inserting the data transmission request into a second queue, and writing the data transmission information into a data transmission information buffer area. And the second controller also records the processing progress of the NVMe protocol command in the command request buffer.
It should be noted that, in the above example, the order of completing the processing of the first NVMe protocol command, the second NVMe protocol command, and the third NVMe protocol command is related to the actual situation, and is not limited to the description of the above scenario example, nor to the fact that the processing of the NVMe protocol command received first is completed first.
Optionally, the data transmission completion instruction further indicates whether the corresponding data transmission is successful or not, and/or a reason for the data transmission failure. And when the second controller finds that the data transmission is failed from the data transmission completion instruction, the second controller regenerates the data transmission request by using the command ID included in the data transmission completion instruction and inserts the data transmission request into the second queue. And initiating data transmission between the host and the terminal device without updating the entry of the data transmission buffer indicated by the command ID to instruct the first controller to use the data transmission information in the entry of the data transmission buffer indicated by the command ID again.
Indicating the success or failure of the data transfer in the data transfer complete instruction increases the size of the data transfer complete instruction and decreases the access performance of the third queue or increases the data width of the third queue. In yet another example, a data transfer completion information buffer is provided in the buffer area. Similar to the data transfer completion information buffer, an entry addressable by the command ID is included in the data transfer completion information buffer to accommodate data transfer completion information indicating whether data transfer was successful and/or the reason for the data transfer failure. The second controller, in response to receiving the data transfer complete instruction, also accesses the data transfer complete information in the data transfer information complete buffer using the command ID included in the data transfer complete instruction to learn the execution result of the data transfer.
310: and the first controller acquires a plurality of command processing completion instructions from the fourth queue, acquires NVMe protocol command completion information according to the command ID of each command processing completion instruction and sends the NVMe protocol command completion information to the host.
In the example shown in fig. 4, the first controller, in response to obtaining a command processing completion instruction including the command ID numbered 1 from the fourth queue, obtains NVMe protocol command completion information from the entry numbered 1 of the command completion buffer and sends it to the host. And release the command ID numbered 1. The first controller, in response to obtaining the command processing completion instruction including the command ID numbered 2 from the fourth queue, will obtain NVMe protocol command completion information from the entry numbered 2 of the command completion buffer and send to the host. And release the command ID numbered 2. And so on.
It should be noted here that, in the embodiment according to the present invention, the procedure of each NVMe protocol command processing is divided into a plurality of stages. That is, at the same time, the first controller receives the NVMe protocol command, the second controller responds to the NVMe command processing request in the first queue (this NVMe command processing request is generated by the first controller from the NVMe protocol command received at the previous time), the first controller retrieves the data transfer request from said second queue (this data transfer request is generated by the second controller at the previous time), the second controller responds to the data transfer completion instruction in the third queue (this data transfer completion instruction is generated by the first controller at the previous time), the first controller retrieves the command processing completion instruction from the fourth queue (this command processing completion instruction is generated by the second controller at the previous time). That is, at the same time, the first controller and the second controller interact through multiple queues while processing multiple NVMe protocol commands in parallel. As shown in fig. 4, 15 NVMe protocol commands are processed in parallel, wherein the NVMe protocol commands corresponding to the command IDs numbered 13-15 are just assigned with command IDs, the NVMe protocol commands corresponding to the command IDs numbered 5-12 are in data transfer, and the NVMe protocol commands corresponding to the command IDs numbered 1-4 have been executed and have not yet transferred NVMe protocol command completion information to the host.
In the second embodiment, the processing efficiency of the NVMe protocol commands can be improved by parallel processing of a plurality of NVMe protocol commands at different processing stages.
EXAMPLE III
Fig. 5 is another flowchart of an NVMe protocol command processing method according to an embodiment of the present invention.
501: the first controller receives an NVMe protocol command from the host and stores the NVMe protocol command to a cache area corresponding to the command identification ID.
502: the first controller generates, in response to the NVMe protocol command, an NVMe command processing request to populate a first queue, the NVMe command processing request including the command ID.
503: the first controller responds to a data transmission request obtained from a second queue, the data transmission request comprises a command ID, data transmission information is obtained according to the command ID, the data transmission request and the data transmission information are generated by the second controller processing the NVMe protocol command, the data transmission request is filled into the second queue by the second controller, and the data transmission information is stored into a cache region corresponding to the command ID by the second controller.
504: and the first controller initiates data transmission between the host and the terminal equipment according to the data transmission information.
505: and after the data transmission is finished, the first controller generates a data transmission finishing instruction to fill a third queue, wherein the data transmission finishing instruction comprises a command ID of a data transmission request corresponding to the data transmission.
506: the first controller responds to a command processing completion instruction obtained from a fourth queue, the command processing completion instruction comprises a command ID, NVMe protocol command completion information is obtained according to the command ID and sent to a host, the command processing completion instruction and the NVMe protocol command completion information are generated after the second controller judges that the NVMe protocol command processing is completed, the command processing completion instruction is filled into the fourth queue by the second controller, and the NVMe protocol command completion information is stored into a cache area corresponding to the command ID by the second controller.
The third embodiment describes an NVMe protocol command processing method using the first controller as an execution subject.
Example four
Fig. 6 is another flowchart of an NVMe protocol command processing method according to an embodiment of the present invention.
601: the second controller responds to an NVMe command processing request in the first queue, the NVMe command processing request comprises the command ID, and an NVMe protocol command is acquired according to the command identification ID, the NVMe command processing request is generated by the first controller in response to the received NVMe protocol command, and the NVMe protocol command is stored to a cache area corresponding to the command ID by the first controller.
602: the second controller processes the NVMe protocol command to generate a data transmission request and data transmission information, fills the data transmission request into a second queue, wherein the data transmission request comprises the command ID, and stores the data transmission information into a cache region corresponding to the command ID.
603: the second controller responds to a data transmission completion instruction in the third queue, the data transmission completion instruction comprises a command ID, the NVMe protocol command is obtained according to the command ID, whether the processing of the NVMe protocol command is completed or not is judged, and the data transmission completion instruction is generated after the data transmission between the host and the terminal equipment is completed by the first controller.
604: when the NVMe protocol command processing is completed, the second controller generates a command processing completion instruction and NVMe protocol command completion information, wherein the command processing completion instruction comprises a command ID corresponding to the NVMe protocol command, the command processing completion instruction fills a fourth queue, the NVMe protocol command completion information is stored in a cache area corresponding to the command ID, and the command processing completion instruction is used for indicating the first controller to acquire the NVMe protocol command completion information and send the NVMe protocol command completion information to a host.
EXAMPLE five
Fig. 7 is a block diagram of a system for processing NVMe protocol commands according to an embodiment of the present invention.
The system for processing the NVMe protocol commands according to the embodiment of the invention comprises a first controller, a second controller, a DRAM (dynamic random access memory) and a PCIe controller. The system is coupled to a host through a PCIe bus. The first controller and the second controller are coupled to the DRAM through a bus.
The host updates the NVMe doorbell register (not shown in fig. 7) through the PCIe controller. The first controller acquires the NVMe protocol command from the NVMe submission queue of the host through the PCIe controller in response to the NVMe doorbell register being updated. The first controller is also capable of initiating a data transfer (e.g., a DMA transfer) between the host and the DRAM through the PCIe controller. A command request buffer, a command completion buffer and a data transfer information buffer are provided in the DRAM. The first controller and the second controller address a command request buffer, a command completion buffer and a data transfer information buffer in the DRAM through the command ID.
Information is exchanged between the first controller and the second controller via a plurality of queues (queue 1, queue 2, queue 3, and queue 4). In the example of fig. 7, the first controller sends messages to the second controller via queue 1 and queue 3, and the second controller receives messages from queue 1 and queue 3. The second controller sends messages to the first controller via queue 2 and queue 4, and the first controller receives messages from queue 2 and queue 4. In the example of FIG. 7, the multiple queues are hardware queues, and the width of the queue entries can accommodate the command ID. In another example, multiple queues are provided in DRAM or SRAM that are maintained by software. In another example, the plurality of queues are replaced by a message exchange network between the first controller and the second controller, and ordering between messages need not be guaranteed.
The first controller may be one or more CPUs and the second controller may be one or more CPUs. The first controller and the second controller are caused to perform their respective functions by executing software or firmware in the CPU.
EXAMPLE six
Fig. 8 is a block diagram of a system for processing NVMe protocol commands according to another embodiment of the present invention.
The system for processing NVMe protocol commands according to the embodiment of fig. 8 includes a first controller, a second controller, SRAM (static random access memory), and PCIe controller. The system is coupled to a host through a PCIe bus. The first controller and the second controller are each coupled to a DRAM. Information is exchanged between the first controller and the second controller via a plurality of queues (queue 1, queue 2, queue 3, and queue 4).
In contrast to the embodiment of fig. 7, in the embodiment of fig. 8, a data transfer information buffer is provided in the SRAM coupled to the first controller, and a command request buffer and a command completion buffer are provided in the SRAM coupled to the second controller. So that the data is stored in a memory closer to the controller using it. According to the command ID, the first controller may address the SRAM coupled to itself and, optionally, the first controller may also address the SRAM coupled to the second controller. According to the command ID, the second controller may address the SRAM coupled to itself, and optionally, the first controller may also address the SRAM coupled to the second controller.
To obtain NVMe protocol commands from the host, in the embodiment of fig. 8, the first controller initiates a data transfer between the host and the SRAM coupled to the second controller, storing the NVMe protocol commands in a command request buffer of the SRAM coupled to the second controller. And to transmit NVMe protocol command completion information to the host, the first controller initiates a data transfer between the host and the SRAM coupled to the second controller, transmitting the NVMe protocol command completion information from a command completion buffer of the SRAM coupled to the second controller to the memory.
Optionally, the second controller generates data transfer information according to the NVMe protocol command, and stores the data transfer information in a data transfer information buffer of the SRAM coupled to the first controller.
The functions performed by the first controller have been described above in connection with fig. 5, and the functions performed by the second controller have been described above in connection with fig. 6. And will not be described in detail herein.
EXAMPLE seven
Referring to fig. 9, the command request buffer and the command completion buffer in the cache area each include 16 entries to support simultaneous processing of 16 NVMe commands. The data transfer information buffer includes 4 groups (indicated by reference numerals "(1)", "(2)", "(3)" and "(4)" in fig. 9), each of which includes 16 entries, so that a plurality of data transfers to one NVMe command can be performed in parallel, thereby reducing the delay of NVMe command processing.
Referring to fig. 9, one of the second controllers, in response to receiving the NVMe command processing request including the command ID number 5 from the first queue, retrieves the NVMe protocol command from the entry number 5 of the command request buffer. One of the second controllers finds from the NVMe protocol commands that 4 data transfers are to be made to process the NVMe protocol commands. One of the second controllers generates four data transfer requests including command IDs numbered 5-1, 5-2, 5-3, and 5-4, respectively, and inserts these data transfers into the second queue. Four data transfer requests, each including a command ID numbered 5-1, 5-2, 5-3, and 5-4, may be in a non-consecutive queue entry in the second queue due to task time sharing processing, the presence of multiple second controllers, or multi-threaded processing, etc.
A command ID numbered 5-1 indicating that corresponding data transfer information is stored in the entry numbered 5 of group (1) of the data transfer buffer; the command ID, numbered 5-2, indicates that the corresponding data transfer information is stored in the entry numbered 5 of group (2) of the data transfer buffer. In this way, the second controller stores the data transfer information of 4 data transfers of the NVMe protocol command corresponding to the command ID No. 5 in 4 entries of the data transfer information buffer, respectively, so that the first controller can process 4 data transfers of the NVMe protocol command corresponding to the command ID No. 5 in parallel. The 4 times data transmission can be processed by one of the first controllers or simultaneously by the first controllers.
In the example shown in FIG. 9, the first controller has processed the data transfer requests that complete the corresponding command IDs numbered 5-1 and 5-2 and placed the corresponding data transfer complete instructions into the third queue.
In the example shown in fig. 9, the second controller may process the NVMe protocol commands by any number of data transfers, and for each NVMe protocol command, the number of data transfers processed in parallel is 4. For example, if the NVMe command corresponding to the command ID number 5 requires 8 transfers, the second controller has inserted four data transfer requests of the command IDs number 5-1, 5-2, 5-3, and 5-4 into the second queue, and after acquiring the data transfer completion instruction corresponding to the command IDs number 5-1 and 5-2 from the third queue, generates a command transfer request (inserted into the second queue) and data transfer information (written into the data transfer buffer) by using the command IDs number 5-1 and/or 5-2 again according to the processing progress of the NVMe command.
The foregoing is only a preferred embodiment of the present invention, and it should be noted that those skilled in the art can make various improvements and modifications without departing from the principle of the present invention, and these improvements and modifications should also be construed as the protection scope of the present invention.

Claims (10)

1. A processing method of an NVMe protocol command is applied to terminal equipment and is characterized by comprising the following steps:
responding to an NVMe protocol command from a host to be processed, storing the NVMe protocol command to a cache area corresponding to a first command ID, and filling the first command ID to a first queue;
in response to receiving a second command ID from the second queue, obtaining data transmission information according to the second command ID; initiating data transmission between the host and the terminal equipment according to the data transmission information;
populating a third queue with the second command ID in response to completion of the data transfer;
responding to a third command ID received from a fourth queue, acquiring NVMe protocol command completion information according to the third command ID and sending the NVMe protocol command completion information to the host;
wherein one NVMe command corresponds to one command ID.
2. The method of claim 1, wherein the method further comprises:
applying for a command ID, and if the command ID is successfully applied, acquiring an NVMe protocol command to be processed from the host; and if the application of the command ID fails, reapplying the command ID.
3. The method of claim 1 or 2,
the command ID corresponds to a plurality of cache areas and is respectively used for storing the NVMe protocol command, the data transmission information and the NVMe protocol command completion information; and
acquiring the NVMe protocol command completion information according to the third command ID is to acquire the NVMe protocol command completion information from a cache area corresponding to the third command ID; acquiring data transmission information according to the second command ID is acquiring data transmission information from a cache area corresponding to the second command ID.
4. A processing method of an NVMe protocol command is applied to terminal equipment and is characterized by comprising the following steps:
responding to the first command ID received from the first queue, acquiring a first NVMe protocol command according to the first command ID, processing the first NVMe protocol command to store first data transmission information to a cache region corresponding to the first command ID, and filling the first command ID into a second queue;
in response to receiving a second command ID from a third queue, judging whether the second NVMe protocol command is processed completely according to the second command ID; when the second NVMe protocol command processing is completed, second NVMe protocol command completion information is generated, the second NVMe protocol command completion information is stored to a cache area corresponding to the second command ID, and the fourth queue is filled with the second command ID;
wherein one NVMe command corresponds to one command ID.
5. The method of claim 4, wherein the method further comprises:
and judging whether the second NVMe protocol command is processed completely, storing second data transmission information to a cache region corresponding to the second command ID when the second NVMe protocol command is not processed completely, and filling the second command ID into a second queue.
6. The method of claim 4 or 5, wherein in response to receiving the second command ID from the third queue, the method further comprises: updating the second NVMe protocol command to indicate a processing progress of the second NVMe protocol command.
7. An NVMe protocol command processing method is characterized by comprising the following steps:
the method comprises the steps that a first controller responds to a first NVMe protocol command from a host to be processed, applies for a command ID and obtains a first command ID, stores the NVMe protocol command to a cache area corresponding to the first command ID, and fills the first command ID into a first queue;
the second controller responds to the first command ID received from the first queue, acquires a first NVMe protocol command according to the first command ID, processes the first NVMe protocol command to store first data transmission information to a cache region corresponding to the first command ID, and fills the first command ID into the second queue;
the first controller responds to the first command ID received from the second queue, acquires data transmission information according to the first command ID, and initiates data transmission between the host and the terminal equipment according to the data transmission information; populating a third queue with the first command ID in response to completion of the data transfer;
the second controller responds to the first command ID from the third queue, and judges whether the first NVMe protocol command is processed or not according to the first command ID; when the first NVMe protocol command processing is completed, generating first NVMe protocol command completion information, storing the first NVMe protocol command completion information to a cache area corresponding to the first command ID, and filling the first command ID into a fourth queue; and
and the first controller responds to the first command ID from the fourth queue, acquires NVMe protocol command completion information according to the first command ID and sends the NVMe protocol command completion information to the host.
8. An NVMe protocol command processing method is characterized by comprising the following steps:
the method comprises the steps that a first controller responds to a first NVMe protocol command received from a host, applies for a command ID and obtains a first command ID, the NVMe protocol command is stored in a cache area corresponding to the first command ID, and the first command ID is filled in a first queue;
the second controller responds to the second command ID received from the first queue, acquires a second NVMe protocol command according to the second command ID, processes the second NVMe protocol command to store data transmission information to a cache region corresponding to the second command ID, and fills the second command ID into the second queue;
the first controller responds to the third command ID received from the second queue, acquires data transmission information according to the third command ID, and initiates data transmission between the host and the terminal equipment according to the data transmission information; populating a third queue with the third command ID in response to completion of the data transfer;
the second controller responds to a fourth command ID received from the third queue, and judges whether the fourth NVMe protocol command is processed or not according to the fourth command ID; when the fourth NVMe protocol command is processed, generating NVMe protocol command completion information, storing the NVMe protocol command completion information to a cache area corresponding to the fourth command ID, and filling the fourth command ID into a fourth queue; and
and the first controller responds to the fifth command ID from the fourth queue, acquires NVMe protocol command completion information according to the fifth command ID and sends the NVMe protocol command completion information to the host.
9. An apparatus for processing NVMe protocol commands, comprising:
the storage unit is used for receiving a high-speed nonvolatile storage NVMe protocol command from a host and storing the NVMe protocol command to a cache area corresponding to a command identification ID;
a first generating unit, configured to generate, in response to the NVMe protocol command, an NVMe command processing request to fill to a first queue, the NVMe command processing request including the command ID;
an obtaining unit, configured to obtain a data transmission request from a second queue, where the data transmission request includes the command ID, and obtain data transmission information according to the command ID, where the data transmission request and the data transmission information are generated by a second controller processing the NVMe protocol command, the data transmission request is filled into the second queue by the second controller, and the data transmission information is stored in a cache region corresponding to the command ID by the second controller;
the transmission unit is used for initiating data transmission between the host and the terminal equipment according to the data transmission information;
the second generating unit is used for generating a data transmission completion instruction to fill a third queue after data transmission is completed, wherein the data transmission completion instruction comprises the command ID;
a sending unit, configured to obtain a command processing completion instruction from a fourth queue, where the command processing completion instruction includes the command ID, and obtain NVMe protocol command completion information according to the command ID and send the NVMe protocol command completion information to a host, where the command processing completion instruction and the NVMe protocol command completion information are generated after the second controller determines that the NVMe protocol command processing is completed, the command processing completion instruction is filled into the fourth queue by the second controller, and the NVMe protocol command completion information is stored in a cache area corresponding to the command ID by the second controller.
10. An NVMe protocol command processing device is applied to terminal equipment and is characterized by comprising the following components:
the device comprises a first module, a second module and a third module, wherein the first module is used for responding to an NVMe protocol command from a host to be processed, storing the NVMe protocol command to a cache area corresponding to a first command ID, and filling the first command ID into a first queue;
a second module, configured to, in response to receiving a second command ID from the second queue, obtain data transmission information according to the second command ID; initiating data transmission between the host and the terminal equipment according to the data transmission information;
a third module for populating a third queue with the second command ID in response to completion of the data transfer; and
the fourth module is used for responding to the third command ID received from the fourth queue, acquiring NVMe protocol command completion information according to the third command ID and sending the NVMe protocol command completion information to the host;
wherein one NVMe command corresponds to one command ID.
CN202010162892.0A 2016-06-30 2016-06-30 NVMe protocol command processing method and device Active CN111352873B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010162892.0A CN111352873B (en) 2016-06-30 2016-06-30 NVMe protocol command processing method and device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010162892.0A CN111352873B (en) 2016-06-30 2016-06-30 NVMe protocol command processing method and device
CN201610505459.6A CN107562669B (en) 2016-06-30 2016-06-30 NVMe protocol command processing method, device and system

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201610505459.6A Division CN107562669B (en) 2016-06-30 2016-06-30 NVMe protocol command processing method, device and system

Publications (2)

Publication Number Publication Date
CN111352873A CN111352873A (en) 2020-06-30
CN111352873B true CN111352873B (en) 2021-10-08

Family

ID=60969339

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610505459.6A Active CN107562669B (en) 2016-06-30 2016-06-30 NVMe protocol command processing method, device and system
CN202010162892.0A Active CN111352873B (en) 2016-06-30 2016-06-30 NVMe protocol command processing method and device

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201610505459.6A Active CN107562669B (en) 2016-06-30 2016-06-30 NVMe protocol command processing method, device and system

Country Status (1)

Country Link
CN (2) CN107562669B (en)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109165105A (en) * 2018-08-17 2019-01-08 郑州云海信息技术有限公司 A kind of host and physical machine system
CN109634875A (en) * 2018-12-12 2019-04-16 深圳忆联信息系统有限公司 Order data method for caching and processing, device, computer equipment and storage medium
CN113472619A (en) * 2018-12-29 2021-10-01 深圳市道通科技股份有限公司 Data transmission method in vehicle communication interface device and vehicle communication interface device
CN110795632B (en) * 2019-10-30 2022-10-04 北京达佳互联信息技术有限公司 State query method and device and electronic equipment
CN110989925A (en) * 2019-10-30 2020-04-10 烽火通信科技股份有限公司 Deployment method and device of distributed storage system
CN113722248B (en) * 2021-07-28 2023-08-22 湖南国科微电子股份有限公司 Command processing method and command processing device

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104283938A (en) * 2013-07-08 2015-01-14 英特尔公司 Techniques to Replicate Data between Storage Servers
CN104407820A (en) * 2014-12-12 2015-03-11 华为技术有限公司 Solid state disk storage system based data processing method, device and system
CN104536701A (en) * 2014-12-23 2015-04-22 记忆科技(深圳)有限公司 Realizing method and system for NVME protocol multi-command queues
CN105068953A (en) * 2014-05-07 2015-11-18 Hgst荷兰公司 System and method for peer-to-peer PCIe storage transfers
CN105589661A (en) * 2014-11-12 2016-05-18 三星电子株式会社 Data Storage Device, Data Processing System And Method Of Operation

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9467512B2 (en) * 2012-01-17 2016-10-11 Intel Corporation Techniques for remote client access to a storage medium coupled with a server
US8966164B1 (en) * 2013-09-27 2015-02-24 Avalanche Technology, Inc. Storage processor managing NVME logically addressed solid state disk array
US9110786B2 (en) * 2013-11-07 2015-08-18 Sandisk Technologies Inc. Read operation prior to retrieval of scatter gather list
US9712619B2 (en) * 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104283938A (en) * 2013-07-08 2015-01-14 英特尔公司 Techniques to Replicate Data between Storage Servers
CN105068953A (en) * 2014-05-07 2015-11-18 Hgst荷兰公司 System and method for peer-to-peer PCIe storage transfers
CN105589661A (en) * 2014-11-12 2016-05-18 三星电子株式会社 Data Storage Device, Data Processing System And Method Of Operation
CN104407820A (en) * 2014-12-12 2015-03-11 华为技术有限公司 Solid state disk storage system based data processing method, device and system
CN104536701A (en) * 2014-12-23 2015-04-22 记忆科技(深圳)有限公司 Realizing method and system for NVME protocol multi-command queues

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
浅谈NVMe的多队列技术和IO调度;tmsi;《https://blog.csdn.net/tmsi/article/details/51248972》;20160426;1-5 *

Also Published As

Publication number Publication date
CN107562669B (en) 2020-04-07
CN111352873A (en) 2020-06-30
CN107562669A (en) 2018-01-09

Similar Documents

Publication Publication Date Title
CN111352873B (en) NVMe protocol command processing method and device
US20210216453A1 (en) Systems and methods for input/output computing resource control
US9229751B2 (en) Apparatus and method for managing virtual memory
US10496427B2 (en) Method for managing memory of virtual machine, physical host, PCIE device and configuration method thereof, and migration management device
US11928493B2 (en) Sharing of FPGA board by multiple virtual machines
JP2006040285A (en) Communication among partitioned devices
JP4224477B2 (en) Communication between partitioned devices
CN107949837B (en) Register file for I/O packet compression
US11474853B2 (en) Storage device operation method and physical server
CN111600972A (en) Configuration method of double-stack address, server and readable storage medium
US8417853B2 (en) Universal serial bus host control methods and universal serial bus host controllers
CN112612623A (en) Method and equipment for managing shared memory
CN115576716A (en) Memory management method based on multiple processes
CN115629882A (en) Method for managing memory in multiple processes
JP2006040286A (en) Communication between partitioned devices
KR102303424B1 (en) Direct memory access control device for at least one processing unit having a random access memory
US8117626B2 (en) Asynchronous remote procedure calling method and computer product in shared-memory multiprocessor
US20230236730A1 (en) Storage device and storage system
TWI629638B (en) Storage device and task execution method thereof, corresponding host and task execution method thereof, and control unit applied therein
CN114691037A (en) System and method for managing unloading card name space and processing input/output request
CN113032307A (en) Integrated device access request processing method and related assembly
WO2024012015A1 (en) Storage system, main control chip, data storage method and data reading method
JPH10283302A (en) Method and system for supplying data to bus connected to plural processors
JP2008097273A (en) Network interface apparatus, network interface control method, information processor, and data transfer method
CN116737469A (en) Method, device, medium and server for isolating data transmission faults

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant