CN110109626B - NVMe SSD command processing method based on FPGA - Google Patents

NVMe SSD command processing method based on FPGA Download PDF

Info

Publication number
CN110109626B
CN110109626B CN201910420004.8A CN201910420004A CN110109626B CN 110109626 B CN110109626 B CN 110109626B CN 201910420004 A CN201910420004 A CN 201910420004A CN 110109626 B CN110109626 B CN 110109626B
Authority
CN
China
Prior art keywords
fpga
command
data packet
jumping
nvme ssd
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
CN201910420004.8A
Other languages
Chinese (zh)
Other versions
CN110109626A (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.)
Harbin Institute of Technology
Original Assignee
Harbin Institute of Technology
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 Harbin Institute of Technology filed Critical Harbin Institute of Technology
Priority to CN201910420004.8A priority Critical patent/CN110109626B/en
Publication of CN110109626A publication Critical patent/CN110109626A/en
Application granted granted Critical
Publication of CN110109626B publication Critical patent/CN110109626B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

An NVMe SSD command processing method based on an FPGA belongs to the technical field of data storage. The method solves the problem that the complexity of the process control state machine is increased along with the increase of commands or the increase of command types of NVMe SSD read-write operation. The invention designs the NVMe SSD command processing flow control module, combines various command execution flows, and can realize all command execution flows by using a simple flow control state machine, thereby being convenient for development and maintenance; and the method optimizes the state quantity and the state transfer condition of the flow control state machine while ensuring the function integrity, reduces the time overhead of the judgment step in the flow control state machine, and improves the development efficiency. The invention can be applied to the technical field of data storage.

Description

NVMe SSD command processing method based on FPGA
Technical Field
The invention belongs to the technical field of data storage, and particularly relates to an NVMe SSD command processing method.
Background
The high-speed data storage equipment is widely applied in the fields of high-speed data acquisition, cloud storage and the like. In order to improve the read-write speed of the storage device, reduce the volume and power consumption of the device and adapt to the development trend of miniaturization and compactness, the portable high-speed storage device can be constructed by using the NVMe SSD emerging in the storage field. The device uses FPGA as a control chip, and can realize continuous writing speed of more than 1 GByte/s.
The key for realizing the function of controlling the NVMe SSD by the FPGA is the design of control software FPGA, and a process control state machine can be written by using Verilog language to realize the NVMe command processing process. According to the content of the NVMe protocol, the NVMe SSD executes the read-write command in eight steps, each step including the transmission of a plurality of PCIe data packets. When the data volume required to be transmitted by the read-write command is large, the more PCIe data packets are transmitted in a corresponding command flow; when NVMe commands to be realized increase or command types increase, the states of the flow control state machine also increase, thereby causing the problems of complexity increase, consumption of FPGA logic resources increase and the like of the flow control state machine.
Disclosure of Invention
The invention aims to solve the problem that the complexity of a process control state machine is increased along with the increase of commands or the increase of command types of NVMe SSD read-write operation.
The technical scheme adopted by the invention for solving the technical problems is as follows: an NVMe SSD command processing method based on an FPGA comprises the following steps:
step A1, after receiving a user command, the FPGA updates a command Submission Queue, sends a register writing request to an NVMe (Non-Volatile Memory host controller interface specification) SSD (solid state disk), updates a command Submission Queue Tail Doorbell register (SQ Tail DB register, sub Queue Tail Doorbell) in the NVMe SSD, and jumps to step A2;
step A2, the FPGA enters a waiting state and judges whether a data packet is received, and when the FPGA receives the data packet, the FPGA jumps to step A3;
step A3, judging whether the received data packet is a memory writing request, if yes, jumping to step A4; otherwise, jumping to step A8;
step A4, judging whether the received data packet is a data writing request; if the data is requested to be written, the FPGA receives the data read from the NVMe SSD, and the step A2 is skipped; otherwise, jumping to step A5;
step A5, judging whether the received data packet is a write command completion queue request, if yes, jumping to step A6; otherwise, jumping to step A12;
step A6, judging whether the command is executed successfully, if so, updating the command completion queue, and jumping to step A7; otherwise, jumping to step A12;
step A7, the FPGA sends a memory writing request to the NVMe SSD, updates a command Completion Queue Head Doorbell register (CQ Head DB register) in the NVMe SSD, and jumps to step A13;
step A8, judging whether the received data packet is a memory reading request, if yes, jumping to step A9; otherwise, jumping to step A12;
step A9, judging whether the received data packet is a read command submission queue request, if so, sending a completion message by the FPGA, returning NVMe command information, and jumping to step A2; otherwise, jumping to step A10;
step A10, judging whether the received data packet is an address list reading request, if so, sending a completion message by the FPGA, returning address list information, and jumping to the step A2; otherwise, jumping to step A11;
step A11, judging whether the received data packet is a data reading request, if so, sending a completion message by the FPGA, returning data to be stored, and jumping to the step A2; otherwise, jumping to step A12;
step A12, error reporting, and jumping to step A13;
and step A13, ending.
The invention has the beneficial effects that: the invention relates to an NVMe SSD command processing method based on FPGA, which designs an NVMe SSD command processing flow control module, combines multiple command execution flows, and can realize all command execution flows by using a simple flow control state machine, thereby being convenient for development and maintenance; and the method optimizes the state quantity and the state transfer condition of the flow control state machine while ensuring the function integrity, reduces the time overhead of the judgment step in the flow control state machine, and improves the development efficiency.
Drawings
FIG. 1 is a flow chart of an NVMe SSD command processing method based on FPGA of the present invention;
FIG. 2 is a command control flow diagram of a prior NVMe SSD;
FIG. 3 is a process flow diagram of a prior NVMe SSD read-write command;
FIG. 4 is a process flow diagram of a prior NVMe SSD acquire State information command;
FIG. 5 is a process flow diagram of a prior NVMe SSD queue management, clear command;
FIG. 6 is a flowchart illustrating the step A4 of determining the corresponding function of the data packet according to the present invention;
FIG. 7 is a flow chart of the present invention updating the command submission queue doorbell register in the NVMe SSD;
FIG. 8 is a flow chart of the present invention updating the command completion queue doorbell register in NVMe SSD;
fig. 9 is a flowchart of the FPGA returning the completion message of the present invention.
Detailed Description
The first embodiment is as follows: as shown in fig. 1, the NVMe SSD command processing method based on FPGA of this embodiment includes the following steps:
step A1, after receiving a user command, the FPGA updates the command submission queue, sends a register writing request to the NVMe SSD, updates a doorbell register at the tail of the command submission queue in the NVMe SSD, and jumps to step A2;
step A2, the FPGA enters a waiting state and judges whether a data packet is received, and when the FPGA receives the data packet, the FPGA jumps to step A3;
step A3, judging whether the received data packet is a memory writing request, if yes, jumping to step A4; otherwise, jumping to step A8;
step A4, judging whether the received data packet is a data writing request; if the data is requested to be written, the FPGA receives the data read from the NVMe SSD, and the step A2 is skipped; otherwise, jumping to step A5;
step A5, judging whether the received data packet is a write command completion queue request, if yes, jumping to step A6; otherwise, jumping to step A12;
step A6, judging whether the command is executed successfully, if so, updating the command completion queue, and jumping to step A7; otherwise, jumping to step A12;
step A7, the FPGA sends a memory writing request to the NVMe SSD, updates a command completion queue head doorbell register in the NVMe SSD, and jumps to step A13;
step A8, judging whether the received data packet is a memory reading request, if yes, jumping to step A9; otherwise, jumping to step A12;
step A9, judging whether the received data packet is a read command submission queue request, if so, sending a completion message by the FPGA, returning NVMe command information, and jumping to step A2; otherwise, jumping to step A10;
step A10, judging whether the received data packet is an address list reading request, if so, sending a completion message by the FPGA, returning address list information, and jumping to the step A2; otherwise, jumping to step A11;
step A11, judging whether the received data packet is a data reading request, if so, sending a completion message by the FPGA, returning data to be stored, and jumping to the step A2; otherwise, jumping to step A12;
step A12, error reporting, and jumping to step A13;
and step A13, ending.
The NVMe SSD command processing flow is jointly participated by an NVMe host (FPGA in the invention) and an NVMe device (NVMe SSD). The FPGA host sends a read-write instruction to the NVMe SSD, sends data to be stored and receives data read from the NVMe SSD. Registers related to NVMe SSD command control include a command queue register in the FPGA and a doorbell register in the NVMe SSD. The command control flow of the NVMe SSD in the existing method is shown in fig. 2.
Step 1, writing a new command into a command Submission Queue (Submission Queue) by a host;
step 2, the host updates a command submission queue Tail Doorbell register (SQ Tail Doorbell) of the equipment and informs the equipment of a new command;
step 3, the device sends a memory reading request to the host, and the host returns a command of a corresponding address in the queue to the device;
step 4, the equipment executes the command;
step 5, the device sends a memory writing request to the host computer, and updates a command Completion Queue (Completion Queue) in the host computer;
step 6, the equipment sends MSI-X interruption to the host computer to remind the host computer to check the command to complete the queue;
step 7, the host judges whether the command is finished according to the status indicator in the command finishing queue;
step 8, the host updates a command completion queue Head Doorbell register (CQ Head Doorbell) of the equipment to inform the equipment of command completion;
step 4 includes processing data transmission processes such as a read address list request, a read data request, and a write data request, and specifically includes the following steps:
(1) the device sends a memory reading request to the host according to the address of the address list defined in the command;
(2) the host returns a completion message containing the address list to the equipment; if the device executes the write command, jumping to the step (3); if the device executes the read command, jumping to the step (5);
(3) the device sends a memory reading request to the host according to the address information in the address list;
(4) the host returns a completion message containing data to be written to the device;
(5) the device sends a memory writing request to the host according to the address information in the address list and sends the read data to the host;
the commands for controlling the NVMe SSD to perform read-write operation by using the FPGA comprise the following steps: queue management command, read-write command, clear command, and command to obtain status information.
The processing flow of the NVMe SSD read-write command is shown in fig. 3, the processing flow of the NVMe SSD obtain status information command is shown in fig. 4, and the processing flow of the NVMe SSD queue management and clear command is shown in fig. 5.
By comprehensively considering the execution flows of the above commands, the following rules can be found in conjunction with the command execution flow framework shown in fig. 2:
1. in the NVMe SSD command processing flow, except the step 4, other command execution flows are the same;
2. in the NVMe SSD command processing flow, the steps 1 and 7 are completed inside the FPGA, and data interaction with the NVMe SSD is not generated;
3. when the steps 2 and 8 are executed, the FPGA serves as the main equipment of the PCIe bus to initiate data transmission, and a doorbell register in the NVMe SSD is configured;
4. when the step 3-5 is executed, the NVMe SSD is used as a main device of a PCIe bus to initiate data transmission, and command queues, memory spaces and the like in the FPGA are accessed;
5. the MSI-X interrupt of step 6 is used to alert the host to check the command completion queue. Since the parallel nature of the FPGA allows it to monitor the command completion queue in real time without affecting the execution of other control flows, the MSI-X interrupt function of the NVMe SSD can be shut down, omitting this step.
In short, the NVMe command control flow can be divided into three parts, namely, FPGA local processing command, FPGA configuration NVMe SSD register, and NVMe SSD initiation of data transmission. According to the above rule, the present invention provides the control flow shown in fig. 1.
In the determining step of the flow shown in fig. 1, the FPGA parses a field used for indicating a "Type" (Format + Type) of a data packet in a received data packet header, and determines whether an operation of the data packet on the memory space is a read or a write; the FPGA analyzes the Address information in the received data packet header to obtain the Address of the memory space to be accessed, and judges the specific function of the data packet according to the function corresponding to the memory space. According to the invention, addresses of memory spaces corresponding to different functions are written into the control register of the NVMe SSD, when the NVMe SSD wants to acquire certain information or realize a certain function, only a data packet containing a corresponding type and an address needs to be sent, and after the FPGA receives a request from the NVMe SSD, the corresponding data packet is returned, so that data interaction between the NVMe SSD and the FPGA can be realized.
The memory space addresses, corresponding functions and addresses of NVMe SSD registers used to store these addresses in the FPGA defined by the present invention are shown in table 1 below:
TABLE 1 addresses and corresponding roles of memory spaces in FPGA
Addresses of memory spaces in FPGA Memory space mapping function
0x08005000~0x08005100 Storage address list
0x00000000~0x00001000 Storage command submission queue
0x00001000~0x00002000 Storage command completion queue
0x01000000~0x07000000 Storing data to be read and written
The second embodiment is as follows: as shown in fig. 6, the first embodiment differs from the first embodiment in that: in step a4, it is determined whether the received data packet is a data writing request, and the specific process is as follows:
b1, the FPGA analyzes the address information from the received data packet header and jumps to the step B2;
b2, judging whether the address information analyzed in the step B1 is in the range of 0x 01000000-0 x07000000, if so, jumping to the step B4, otherwise, jumping to the step B3;
b3, jumping to A5 and ending;
step B4, judging that the function of the data packet received by the FPGA is to write the data read from the NVMe SSD into the FPGA, and jumping to step B5;
and B5, jumping to the step A2 and ending.
The steps A5, A9, A10 and A11 of the present invention are similar to the above judgment process of step A4.
One NVMe SSD corresponds to multiple command queues and doorbell registers. Specifically, one NVMe SSD corresponds to one management command submission queue, one management command completion queue, a plurality of I/O command submission queues, and a plurality of I/O command completion queues. And doorbell registers corresponding to the command queues are arranged in the NVMe SSD and are used for storing head and tail information of the corresponding queues. The register addresses of these doorbell registers in NVMe SSD are shown in table 2 below:
TABLE 2 doorbell register Address in NVMe SSD
Doorbell register variety Address in NVMe SSD
Management command submission queue tail doorbell register 0x28~0x2f
Management command completion queue head doorbell register 0x30~0x37
I/O Command submit queue Tail doorbell register (nth one) 0x1000+4*(2n-2)~0x1003+4*(2n-2)
I/O Command completion queue head doorbell register (nth) 0x1000+4*(2n-1)~0x1003+4*(2n-1)
The third concrete implementation mode: as shown in fig. 7, the first embodiment differs from the first embodiment in that: the specific process of updating the command submission queue tail doorbell register in the NVMe SSD in the step a1 is as follows:
step C1, judging the number of a command Submission Queue (Submission Queue) updated inside the FPGA;
step C2, adding 1 to the value of the tail doorbell register to be updated in the command submission queue updated in the FPGA to obtain the value of the tail doorbell register to be updated;
step C3, determining the address of the tail doorbell register to be updated according to the number of the step C1;
step C4, packing the address obtained in step C3 and the value obtained in step C2, and supplementing the command type (format + type) information, length (length) information, number (Tag) information, and requesting device identification (request ID) information of the data packet header;
step C5, sending PCIe (peripheral component interconnect express) data packet;
and C6, ending.
The fourth concrete implementation mode: as shown in fig. 8, the first embodiment differs from the first embodiment in that: the updating of the command completion queue head doorbell register in the NVMe SSD in step a7 specifically comprises the following steps:
d1, the FPGA analyzes the completion queue identification in the received command completion entry;
d2, determining the address of the doorbell register to be updated according to the resolved completion queue identifier;
d3, the FPGA processes the command to complete the entry, and determines the value of the doorbell register to be updated;
step D4, packing the address and value of the header doorbell register to be updated, and supplementing the command type (format + type) information, length (length) information, number (Tag) information and requesting device identification (request ID) information of the data packet header;
step D5, sending PCIe data packet;
and D6, ending.
The fifth concrete implementation mode: as shown in fig. 9, the first embodiment differs from the first embodiment in that: the FPGA in steps a9, a10 and a11 sends a completion message, and the specific process is as follows:
e1, the FPGA analyzes the address of the received data packet header of the read memory request and records the number field in the current data packet header;
e2, reading data from the memory of the address analyzed in the step E1 by the FPGA;
a step E3 of packetizing the number field of the step E1 and the data read in the step E2 and supplementing command type (format + type) information, length (length) information, number (Tag) information, and requesting device identification (request ID) information of the data packet header;
step E4, sending PCIe data packet;
and E5, ending.
The sixth specific implementation mode: the first difference between the present embodiment and the specific embodiment is: when the FPGA receives a data packet, the FPGA analyzes a field used for expressing the type of the data packet in the received data packet header, and judges whether the operation of the data packet on the memory space is reading or writing; the FPGA analyzes the address information in the received data packet header to obtain a memory space address to be accessed, and the specific function of the data packet is judged according to the function corresponding to the memory space address.
The invention sets a wait state in which the FIFO buffer is scanned. And when a new data packet is read from the FIFO buffer, the FPGA judges the type of the data packet and executes corresponding operation. According to the design, a plurality of command execution flows are combined into a total command execution flow, and the command execution flows can be controlled by using one flow control state machine, so that the development and maintenance are facilitated, and the logic resources in the FPGA are saved. Meanwhile, aiming at the continuous judging steps in the dashed line frame of the figure 1, the if-else if-else statement is used, and the judging processes can be executed within 1 clock cycle (8ns) by means of the parallel characteristic of the FPGA, so that the time overhead generated by the FPGA executing the judging steps is very small, and the speed of the FPGA controlling the NVMe SSD to execute the read-write command is indirectly accelerated. In addition, the MSI-X interruption function is closed by configuring the control register of the NVMe SSD, so that the NVMe SSD cannot send the MSI-X interruption to the FPGA, the design work of related software is further simplified, and the state of waiting and judging the MSI-X interruption in a flow control state machine is omitted.
In order to embody the advantages of the design method proposed by the present invention, the control flows in fig. 3, 4, and 5 and the control flow in fig. 1 are implemented respectively, and other functional modules are omitted in the implementation process to highlight the logic resource consumption situation of the flow control module. The result shows that the traditional flow control scheme occupies 14 triggers and 46 lookup tables, and the scheme provided by the invention only occupies 8 triggers and 16 lookup tables, namely, the scheme provided by the invention saves the resources of the triggers and the lookup tables by 43% and 65% respectively compared with the traditional scheme.
The above-described calculation examples of the present invention are merely to explain the calculation model and the calculation flow of the present invention in detail, and are not intended to limit the embodiments of the present invention. It will be apparent to those skilled in the art that other variations and modifications of the present invention can be made based on the above description, and it is not intended to be exhaustive or to limit the invention to the precise form disclosed, and all such modifications and variations are possible and contemplated as falling within the scope of the invention.

Claims (6)

1. An NVMe SSD command processing method based on an FPGA is characterized by comprising the following steps:
step A1, after receiving a user command, the FPGA updates the command submission queue, sends a register writing request to the NVMe SSD, updates a doorbell register at the tail of the command submission queue in the NVMe SSD, and jumps to step A2;
step A2, the FPGA enters a waiting state and judges whether a data packet is received, and when the FPGA receives the data packet, the FPGA jumps to step A3;
step A3, judging whether the received data packet is a memory writing request, if yes, jumping to step A4; otherwise, jumping to step A8;
step A4, judging whether the received data packet is a data writing request; if the data is requested to be written, the FPGA receives the data read from the NVMe SSD, and the step A2 is skipped; otherwise, jumping to step A5;
step A5, judging whether the received data packet is a write command completion queue request, if yes, jumping to step A6; otherwise, jumping to step A12;
step A6, judging whether the command is executed successfully, if so, updating the command completion queue, and jumping to step A7; otherwise, jumping to step A12;
step A7, the FPGA sends a memory writing request to the NVMe SSD, updates a command completion queue head doorbell register in the NVMe SSD, and jumps to step A13;
step A8, judging whether the received data packet is a memory reading request, if yes, jumping to step A9; otherwise, jumping to step A12;
step A9, judging whether the received data packet is a read command submission queue request, if so, sending a completion message by the FPGA, returning NVMe command information, and jumping to step A2; otherwise, jumping to step A10;
step A10, judging whether the received data packet is an address list reading request, if so, sending a completion message by the FPGA, returning address list information, and jumping to the step A2; otherwise, jumping to step A11;
step A11, judging whether the received data packet is a data reading request, if so, sending a completion message by the FPGA, returning data to be stored, and jumping to the step A2; otherwise, jumping to step A12;
step A12, error reporting, and jumping to step A13;
and step A13, ending.
2. The method for processing the NVMe SSD command based on the FPGA of claim 1, wherein the step a4 judges whether the received packet is a request for writing data, and the specific process is as follows:
b1, the FPGA analyzes the address information from the received data packet header and jumps to the step B2;
b2, judging whether the address information analyzed in the step B1 is in the range of 0x 01000000-0 x07000000, if so, jumping to the step B4, otherwise, jumping to the step B3;
b3, jumping to A5 and ending;
step B4, judging that the function of the data packet received by the FPGA is to write the data read from the NVMe SSD into the FPGA, and jumping to step B5;
and B5, jumping to the step A2 and ending.
3. The method for processing the NVMe SSD command based on the FPGA of claim 1, wherein the step A1 comprises the specific steps of updating a command submission queue tail doorbell register in the NVMe SSD:
step C1, judging the number of the command submission queue updated in the FPGA;
step C2, adding 1 to the value of the tail doorbell register to be updated in the command submission queue updated in the FPGA to obtain the value of the tail doorbell register to be updated;
step C3, determining the address of the tail doorbell register to be updated according to the number of the step C1;
step C4, packaging the address obtained in step C3 and the value obtained in step C2, and supplementing the command type information, length information, number information and requesting device identification information of the data packet header;
step C5, PCIe data packet is sent;
and C6, ending.
4. The method for processing the NVMe SSD command based on the FPGA of claim 1, wherein the step A7 comprises the following specific steps of updating a command completion queue head doorbell register in the NVMe SSD:
d1, the FPGA analyzes the completion queue identification in the received command completion entry;
d2, determining the address of the doorbell register to be updated according to the resolved completion queue identifier;
d3, the FPGA processes the command to complete the entry, and determines the value of the doorbell register to be updated;
step D4, packing the address and value of the head doorbell register to be updated, and supplementing the command type information, length information, number information and request equipment identification information of the data packet head;
step D5, sending PCIe data packet;
and D6, ending.
5. The NVMe SSD command processing method based on FPGA according to claim 1, wherein the FPGA in the steps A9, A10 and A11 sends a completion message, and the specific process is as follows:
e1, the FPGA analyzes the address of the received data packet header of the read memory request and records the number field in the current data packet header;
e2, reading data from the memory of the address analyzed in the step E1 by the FPGA;
step E3, packaging the number field of step E1 and the data read in step E2, and supplementing the command type information, length information, number information and requesting device identification information of the data packet header;
step E4, sending PCIe data packet;
and E5, ending.
6. The NVMe SSD command processing method based on the FPGA according to claim 1, wherein when the FPGA receives a data packet, the FPGA analyzes a field used for indicating the type of the data packet in the received data packet header, and determines whether the operation of the data packet on the memory space is read or written; the FPGA analyzes the address information in the received data packet header to obtain a memory space address to be accessed, and the specific function of the data packet is judged according to the function corresponding to the memory space address.
CN201910420004.8A 2019-05-20 2019-05-20 NVMe SSD command processing method based on FPGA Active CN110109626B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910420004.8A CN110109626B (en) 2019-05-20 2019-05-20 NVMe SSD command processing method based on FPGA

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910420004.8A CN110109626B (en) 2019-05-20 2019-05-20 NVMe SSD command processing method based on FPGA

Publications (2)

Publication Number Publication Date
CN110109626A CN110109626A (en) 2019-08-09
CN110109626B true CN110109626B (en) 2022-01-25

Family

ID=67491133

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910420004.8A Active CN110109626B (en) 2019-05-20 2019-05-20 NVMe SSD command processing method based on FPGA

Country Status (1)

Country Link
CN (1) CN110109626B (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111124959B (en) * 2019-12-12 2021-08-27 北京计算机技术及应用研究所 Hardware unloading method for processing NVMe protocol management command
CN111221476B (en) * 2020-01-08 2022-03-29 深圳忆联信息系统有限公司 Front-end command processing method and device for improving SSD performance, computer equipment and storage medium
CN111966303B (en) * 2020-09-02 2024-03-19 深圳大普微电子科技有限公司 Data processing method, system, equipment and readable storage medium
CN112256601B (en) * 2020-10-19 2023-04-21 苏州凌云光工业智能技术有限公司 Data access control method, embedded storage system and embedded equipment
CN112732176B (en) * 2020-12-28 2022-10-04 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) SSD (solid State disk) access method and device based on FPGA (field programmable Gate array), storage system and storage medium
KR20220118004A (en) * 2021-02-18 2022-08-25 에스케이하이닉스 주식회사 Memory system and operating method of memory system
CN115586867B (en) * 2022-09-27 2023-08-22 中科驭数(北京)科技有限公司 NVMe controller

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107799151A (en) * 2016-09-02 2018-03-13 阿里巴巴集团控股有限公司 Solid-state disk SSD and high availability PCIe SSD method and system
CN107977164A (en) * 2016-10-24 2018-05-01 三星电子株式会社 Produce the storage device adaptively interrupted and its operating method
CN107992436A (en) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 A kind of NVMe data read-write methods and NVMe equipment
CN109117092A (en) * 2015-10-10 2019-01-01 北京忆芯科技有限公司 NVMe protocol processor and its processing method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838852B2 (en) * 2015-04-17 2020-11-17 Samsung Electronics Co., Ltd. System and method to extend NVME queues to user space

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117092A (en) * 2015-10-10 2019-01-01 北京忆芯科技有限公司 NVMe protocol processor and its processing method
CN107799151A (en) * 2016-09-02 2018-03-13 阿里巴巴集团控股有限公司 Solid-state disk SSD and high availability PCIe SSD method and system
CN107977164A (en) * 2016-10-24 2018-05-01 三星电子株式会社 Produce the storage device adaptively interrupted and its operating method
CN107992436A (en) * 2016-10-26 2018-05-04 杭州华为数字技术有限公司 A kind of NVMe data read-write methods and NVMe equipment

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FastPath: Towards Wire-speed NVMe SSDs;Athanasios Stratikopoulos等;《2018 28th International Conference on Field Programmable Logic and Applications》;20181206;第170-177页 *
基于FPGA的NVMe接口设计;陈思扬;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20170315;I137-237 *

Also Published As

Publication number Publication date
CN110109626A (en) 2019-08-09

Similar Documents

Publication Publication Date Title
CN110109626B (en) NVMe SSD command processing method based on FPGA
WO2018076793A1 (en) Nvme device, and methods for reading and writing nvme data
US9467511B2 (en) Techniques for use of vendor defined messages to execute a command to access a storage device
US8001298B2 (en) Providing extended measurement data in an I/O processing system
US7899944B2 (en) Open exchange limiting in an I/O processing system
CN106569736B (en) NVMe protocol processors and its processing method
CN101727414B (en) Technique for communicating interrupts in a computer system
CN109558344B (en) DMA transmission method and DMA controller suitable for network transmission
CN106951388A (en) A kind of DMA data transfer method and system based on PCIe
US20240106754A1 (en) Load Balancing Method for Multi-Thread Forwarding and Related Apparatus
CN104731635A (en) Virtual machine access control method and virtual machine access control system
WO2023201987A1 (en) Request processing method and apparatus, and device and medium
KR20210021202A (en) Computing system for reducing latency between serially connected electronic devices
CN115904259B (en) Processing method and related device of nonvolatile memory standard NVMe instruction
CN116954675A (en) Used ring table updating method and module, back-end equipment, medium, equipment and chip
CN114995882B (en) Heterogeneous structure system systematic processing method
CN106909523B (en) Large-scale data transmission method and system
CN116166581A (en) Queue type DMA controller circuit for PCIE bus and data transmission method
CN110134629B (en) NVMe SSD PCIe data packet analysis method based on FPGA
CN111831227A (en) NVME protocol command acceleration processing system
CN112711442A (en) Host command writing method, device and system and readable storage medium
CN116601616A (en) Data processing device, method and related equipment
CN112732176B (en) SSD (solid State disk) access method and device based on FPGA (field programmable Gate array), storage system and storage medium
CN104750639A (en) Enhanced DMA controller based on AMBA bus
US20240143392A1 (en) Task scheduling method, chip, and electronic device

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