CN115904488A - Data transmission method, system, device and equipment - Google Patents

Data transmission method, system, device and equipment Download PDF

Info

Publication number
CN115904488A
CN115904488A CN202110920583.XA CN202110920583A CN115904488A CN 115904488 A CN115904488 A CN 115904488A CN 202110920583 A CN202110920583 A CN 202110920583A CN 115904488 A CN115904488 A CN 115904488A
Authority
CN
China
Prior art keywords
sub
portal
sqe
identification information
metadata
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.)
Pending
Application number
CN202110920583.XA
Other languages
Chinese (zh)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202110920583.XA priority Critical patent/CN115904488A/en
Priority to PCT/CN2022/110865 priority patent/WO2023016407A1/en
Publication of CN115904488A publication Critical patent/CN115904488A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation

Abstract

A data transmission method, a system, a device and equipment are disclosed, wherein the method comprises the following steps: the host sends a first message comprising the first SQE and the identification information of the first sub-portal to the IO device, the IO device receives and analyzes the first message to obtain the identification information of the first SQE and the first sub-portal, and then the IO device obtains the metadata of the first SQE according to the identification information of the first sub-portal. Therefore, the IO device can simultaneously acquire the SQE and the SQE metadata.

Description

Data transmission method, system, device and equipment
Technical Field
The present application relates to the field of computer technologies, and in particular, to a data transmission method, system, device, and apparatus.
Background
Currently, a host generally sends a Submission Queue Element (SQE) sent by an upper layer application to an Input Output (IO) device based on a Submission Queue (SQ) of a portal (portal) (which may also be referred to as a data operation request, such as a read data request or a write data request, and so on), so that the IO device executes a corresponding operation.
In the method, when the host sends the SQE to the IO device, a long instruction including the SQE is first generated, and then a message including the SQE and an address for storing the SQE is generated according to the long instruction to perform a sending operation, currently, the format of the long instruction limits that the long instruction can only provide 64 bytes of space for carrying data sent by the host to the IO device, and the length of the SQE is usually just 64 bytes, as shown in fig. 1, so that the space provided by the long instruction for carrying data is just occupied by the SQE.
However, in some scenarios, the IO device needs to obtain the SQE, as well as the SQE metadata (such as sequence number (sequence) of the SQE, identification of the process sending the SQE, identification of the process receiving the SQE, and the like), and the SQE metadata has a certain length, so that the IO device cannot simultaneously obtain the SQE and the SQE metadata by the above method, and how to provide a method for the IO device to simultaneously obtain the SQE and the SQE metadata becomes an urgent technical problem to be solved.
Disclosure of Invention
The application provides a data transmission method, a system, a device and equipment, which can realize that an IO device can simultaneously acquire SQE and SQE metadata.
In a first aspect, a data transmission method is provided, where the method includes: the method comprises the steps that a host sends a first message to IO equipment, wherein the first message comprises a first SQE and identification information of a first sub-portal, the first sub-portal is used for storing the first SQE, the identification information of the first sub-portal corresponds to metadata of the first SQE, then the IO equipment receives and analyzes the first message to obtain the identification information of the first SQE and the first sub-portal, and the metadata of the first SQE is obtained according to the identification information of the first sub-portal.
According to the scheme, the host does not need to transmit the SQE metadata and the SQE to the IO device, only the message including the SQE and the identification information of the sub-portal used for storing the SQE is sent to the IO device, and after the IO device receives the message, the SQE metadata and the SQE metadata can be acquired simultaneously according to the SQE included in the message and the identification information of the sub-portal.
In a possible implementation manner, before the host sends the first packet to the IO device, the method further includes: the method comprises the steps that a host acquires identification information of a plurality of sub-portals included by a first portal, wherein the first portal belongs to IO equipment; and the host determines a first sub-portal corresponding to the metadata of the first SQE by matching the metadata of the first SQE with the identification information of the first sub-portal.
According to the implementation mode, the host determines the sub-portals corresponding to the SQE metadata by matching the SQE metadata with the identification information of the sub-portals, and then sends the identification information of the sub-portals corresponding to the SQE metadata to the IO device through the message, so that the IO device can acquire the SQE metadata according to the corresponding relationship between the identification information of the sub-portals and the SQE metadata, and thus, the host does not need to transmit the SQE metadata and the SQE to the IO device, but the IO device can acquire the SQE metadata and the SQE metadata at the same time.
In one possible implementation, the identification information of the first sub-portal includes one or more of: a serial number of the first sub-portal, a head address of the first sub-portal, and a tail address of the first sub-portal.
It can be seen that, in the embodiment of the present application, the identification information of the sub-portal may be a plurality of information such as a serial number, a head address, a tail address, and the like, that is, the embodiment of the present application is applicable to IO devices with various identification information of the sub-portal, and can improve the applicability and the commercial value of the present application.
In a possible implementation manner, the first sub-portal includes a plurality of apertures, the metadata of the first SQE includes a first type of data and a second type of data, the identification information of the first sub-portal corresponds to the first type of data, and the identification information of the plurality of apertures corresponds to the second type of data.
In a specific implementation, it is considered that metadata of the first SQE may include two types of data, that is, the first type of data and the second type of data, at this time, the host may determine the first sub-portal by matching the first type of data and identification information of the first sub-portal, determine a plurality of apertures included in the first sub-portal as apertures corresponding to the second type of data, then, when the host sends the first packet to the IO device, the first packet may include the first SQE, the identification information of the first sub-portal, and the identification information of the apertures, and after the IO device receives and analyzes the first packet, the identification information of the first SQE, the identification information of the first sub-portal, and the identification information of the apertures may be obtained, then, the first type of data may be obtained according to the identification information of the first sub-portal, and the second type of data may be obtained according to the identification information of the apertures.
It can be seen that the host does not need to transmit the SQE metadata (i.e., the first type data and the second type data) and the SQE together to the IO device, and only needs to send a message including the SQE, the identifier information of the sub-portal, and the identifier information of the aperture to the IO device, and after receiving the message, the IO device can obtain the SQE metadata and the SQE metadata at the same time according to the SQE, the identifier information of the sub-portal, and the identifier information of the aperture included in the message.
In a possible implementation manner, the obtaining, by the IO device, the metadata of the first SQE according to the identification information of the first sub-portal specifically includes: the IO device acquires the first type data according to the identification information of the first sub-portal, and acquires the second type data according to the identification information of the plurality of apertures.
In one possible implementation, the metadata of the first SQE includes one or more of: the sequence number of the first SQE in the plurality of SQEs, the sequence number of an epoch corresponding to the first SQE, the identifier of the process sending the first SQE, the identifier of the process receiving the first SQE and the priority level of the first SQE, wherein the first SQE belongs to the plurality of SQEs.
According to the implementation mode, the IO device can acquire the sequence numbers of the SQEs, the sequence numbers of epochs corresponding to the SQEs, the identifications of the processes for sending the SQEs, the identifications of the processes for receiving the SQEs, the priority levels of the SQEs and the like while acquiring the SQEs, after acquiring the information, the IO device can sort or perform other operations on the SQEs according to the sequence numbers of the SQEs, the sequence numbers of the epochs corresponding to the SQEs, the identifications of the processes for sending the SQEs, the identifications of the processes for receiving the SQEs, the priority levels of the SQEs and the like, and if the SQEs are lost in the transmission process, the IO device can also determine which specific SQE is the lost SQE.
In addition, the method and the device for obtaining the SQE metadata are suitable for scenes in which the IO device obtains various SQE metadata, requirements of users in different scenes can be met, and applicability and commercial value of the method and the device are improved.
In one possible implementation, the method further includes: and the IO device sorts the SQEs according to the metadata of the SQEs.
In the implementation manner, considering that the IO device may need to sequence the plurality of SQEs sent by the host, the IO device may obtain metadata of the plurality of SQEs, thereby achieving the purpose of sequencing the plurality of SQEs, and it can be understood that, under the condition that the IO device may sequence the plurality of SQEs, if the plurality of SQEs are lost during transmission, the IO device may further determine which of the lost SQEs is specific.
In one possible implementation, the host connects the IO devices over one or more of PCIe, CXL, CCIX.
It can be seen that the embodiment of the application can be applied to the process of data transmission between the IO device and the host which are connected in multiple connection modes, and the applicability and the commercial value of the application are improved.
In a second aspect, the present application provides a data transmission system, comprising: the system comprises a host and an IO device, wherein the host is used for sending a first message to the IO device, the first message comprises a first SQE and identification information of a first sub-portal, the first sub-portal is used for storing the first SQE, and the identification information of the first sub-portal corresponds to metadata of the first SQE; the IO device is used for receiving and analyzing the first message to obtain a first SQE and identification information of the first sub-portal; and the IO device is used for acquiring the metadata of the first SQE according to the identification information of the first sub-portal.
In one possible implementation, the host is further configured to: acquiring identification information of a plurality of sub-portals included in a first portal, wherein the first portal belongs to IO equipment; then, the first sub-portal corresponding to the metadata of the first SQE is determined by matching the metadata of the first SQE with the identification information of the first sub-portal.
In one possible implementation, the identification information of the first sub-portal includes one or more of: a serial number of the first sub-portal, a head address of the first sub-portal, and a tail address of the first sub-portal.
In a possible implementation manner, the first sub-portal includes a plurality of apertures, the metadata of the first SQE includes a first type of data and a second type of data, the identification information of the first sub-portal corresponds to the first type of data, and the identification information of the plurality of apertures corresponds to the second type of data.
In a possible implementation manner, the IO device is specifically configured to: acquiring first type data according to the identification information of the first sub-portal; then, second type data is acquired according to the identification information of the plurality of apertures.
In one possible implementation, the metadata of the first SQE includes one or more of: the sequence number of the first SQE in the plurality of SQEs, the sequence number of an epoch corresponding to the first SQE, the identifier of the process sending the first SQE, the identifier of the process receiving the first SQE, and the priority level of the first SQE.
In one possible implementation manner, the IO device is further configured to: the plurality of SQEs are ordered according to their metadata.
In one possible implementation, the host connects the IO devices through one or more of PCIe, CXL, and CCIX.
In a third aspect, a data transmission method is provided, where the method includes: the IO equipment receives and analyzes a first message sent by the host to obtain a first SQE and identification information of a first sub-portal, the first sub-portal is used for storing the first SQE, and the identification information of the first sub-portal corresponds to metadata of the first SQE; then, according to the identification information of the first sub-portal, metadata of the first SQE is acquired.
In a fourth aspect, a data transmission apparatus is provided, which includes modules for executing the data transmission method of the third aspect.
In a fifth aspect, an IO device is provided, the IO device comprising a processor and a memory; the processor is configured to execute the instructions stored in the memory, so that the IO device implements the method provided in the third aspect.
In a sixth aspect, a computer-readable storage medium is provided, the computer-readable medium storing instructions for implementing the method as provided in the third aspect above.
In a seventh aspect, there is provided a computer program product comprising a computer program which, when read and executed by a computing device, causes the computing device to perform the method as provided in the third aspect above.
Drawings
FIG. 1 is a schematic diagram of a long instruction and SQE illustratively shown in the present application;
FIG. 2 is a schematic diagram of a portal illustratively shown herein;
FIG. 3 is a schematic diagram of a sub-portal exemplary illustrated herein;
FIG. 4 is a schematic diagram of an aperture as exemplary shown herein;
FIG. 5 is a schematic diagram of an epoch as exemplary shown herein;
FIG. 6 is a schematic diagram of an application scenario to which the present application relates;
FIG. 7 is an interaction diagram of a data transmission method provided in the present application;
FIG. 8 is a schematic diagram of a first portal exemplary of the present application;
FIG. 9 is a schematic diagram of another first portal exemplary illustrated herein;
FIG. 10 is a schematic structural diagram of a data transmission device provided in the present application;
fig. 11 is a schematic structural diagram of an IO device provided in the present application.
Detailed Description
In order to facilitate understanding of the embodiments of the present application, concepts, terms, and the like related to the embodiments of the present application will be described below.
(1) SQ is a linear table of (first in first out, FIFO) that stores one or more SQEs, allowing only the insertion of SQEs at one end of the table, and the deletion of SQEs at the other end of the table. SQ is similar to queuing in daily life, with the SQE that enters the queue the earliest leaving.
(2) The portal, as shown in fig. 2, belongs to the IO device, and specifically refers to a storage space of the IO device (for a detailed description of the IO device, see related description of fig. 3) divided by SQ in the memory. The IO device stores an SQE into the SQ, and actually stores the SQE in a portal corresponding to the SQ. The portal has a head address and a tail address, the head address refers to an address where the IO device can start storing the SQE when storing the SQE into the portal, and the tail address refers to an address where the IO device 630 arrives when all storage space in the portal is full when storing the SQE into the portal. Each SQ portal may be a continuous address space in the memory or a discontinuous address space, and this embodiment is not limited.
(3) A sub-portal, a plurality of sub-portals may constitute one portal, as shown in fig. 3, i.e. the portal included in the IO device may be divided into a plurality of sub-portals, each sub-portal being used to store one SQE. In a specific implementation, the size of the address space of each of the plurality of sub-portals included in a portal may be equal, may also be partially equal, or may not be equal at all, and is not limited herein.
(4) The aperture, a plurality of apertures, may constitute one sub-portal, as shown in fig. 4, that is, when the IO device divides the portal into a plurality of sub-portals, each sub-portal of the plurality of sub-portals may also be divided into a plurality of apertures. In a specific implementation, the number of the apertures included in each sub-portal may be the same, or may be partially the same or completely different, and the size of the address space of each aperture in the plurality of apertures included in each sub-portal may be equal, or may be partially equal or completely unequal, which is not limited herein.
(5) An epoch, a plurality of sub-portals may form an epoch, and a plurality of epochs may form a portal, as shown in fig. 5, that is, when the IO device divides the portal into a plurality of sub-portals, the portal may be firstly divided into a plurality of epochs, and then each epoch in the plurality of epochs is divided into a plurality of sub-portals. In a specific implementation, the number of the sub-portals included in each epoch may be the same, or may be partially the same or completely different, and the size of the address space of each sub-portal in the plurality of sub-portals included in each epoch may be equal, or may be partially equal or completely unequal, which is not specifically limited herein.
Under the condition that one portal comprises a plurality of epochs, when the SQE to be stored is stored in the portal by the IO device, firstly selecting a sub-portal in one epoch from the plurality of epochs included in the portal for storage, if vacant sub-portals are available in the selected epoch all the time for storing the SQE to be stored, the IO device always uses the epoch for storing the SQE to be stored, and if no vacant sub-portal is available in the selected epoch for storing the SQE to be stored, the IO device selects a sub-portal in a new epoch from the remaining epochs included in the portal for storage.
The following provides a brief description of an application scenario related to an embodiment of the present application.
The application is applicable to a data (SQE) transmission scenario, and referring to fig. 6, fig. 6 shows a schematic structural diagram of a data transmission system. As shown in fig. 6, the data transmission system according to the present application includes: a host 610, an input output fabric (IO fabric) channel 620, and an IO device 630. The host 610 may be connected to the IO device 630 through the IO interconnection channel 620.
The host 610 may be an arithmetic core and a control core, and is a final execution unit for information processing and program operation. The host 610 includes a processor 611 and a memory 612, where the processor 611 may be a Central Processing Unit (CPU), and may also be other general purpose processors, digital Signal Processors (DSPs), application Specific Integrated Circuits (ASICs), field-programmable gate arrays (FPGAs) or other programmable logic devices, discrete gate or transistor logic devices, discrete hardware components, and so on. A general purpose processor may be a microprocessor or any conventional processor or the like. The processor 611 may also be a chip on chip (SoC) or embedded processor. The processor 611 has functions of processing instructions, performing operations, processing data, and the like. The processor 611 may allocate independent memory resources for a plurality of processes to run the plurality of processes. The memory 612 may be implemented by a Random Access Memory (RAM) or other storage medium. The memory 612 may be used to store program code for a plurality of processes and to store data generated during the operation of a plurality of processes.
The IO interconnect channel 620 is an interconnect mechanism between the host 610 and the IO device 630, for example, peripheral component interconnect express (PCIe), computer express link (CXL), cache coherent interconnect protocol (CCIX) or the like.
IO device 630 is a hardware device that can perform data transfer with host 610. The IO device 630 may be a Network Interface Controller (NIC), a Host Bus Adapter (HBA), a Host Channel Adapter (HCA), an accelerator (accelerator), a Graphics Processing Unit (GPU), or the like. IO device 630 includes memory 631. The memory 631 may be implemented by a RAM or other storage medium.
Various applications, such as a video playing application, a social application, and the like, may be installed on the host 610, and when the applications installed on the host 610 are running, an SQE may be generated, and then the SQE may be sent to the IO device 630 by the processor 611 in the host 610, and the IO device 630 may perform a corresponding operation according to the SQE.
Currently, the host 610 and the IO device 630 generally implement sending and receiving of the SQE based on SQ of the portal, and the process specifically includes:
IO device 630, after creating the portal-based SQ, may send the identification information of the portal to host 610, with host 610 establishing a correspondence of the portal with a particular application. Then, when acquiring the SQE sent by the specific application program, the host 610 first generates a long instruction including the SQE, then generates a packet including the SQE and identification information of a portal corresponding to the specific application program according to the long instruction, and then sends the packet to the IO device 630. The IO device 630 stores the SQE into the SQ based on the portal according to the identification information of the portal corresponding to the specific application program in the message. The identification information of the portal is used to indicate an address for storing the SQE in the IO device 630, and includes, but is not limited to, a combination of one or more of the following: a serial number of the portal, a head address of the portal, a tail address of the portal, etc.
However, the method for SQE transmission between the host 610 and the IO device 630 has a problem that the IO device 630 cannot simultaneously acquire the SQE and the SQE metadata.
The term "simultaneously" in the present application is not limited to the same time, but may mean a time interval shorter than the time interval.
In order to solve the above problem, the present application provides a data transmission method, which may be applied to the data transmission system shown in fig. 6, and the host 610 in the system shown in fig. 6 may obtain the metadata of the SQE and the SQE at the same time by the IO device 630 by using the method without transmitting the metadata of the SQE and the SQE to the IO device 630.
The data transmission method provided by the present application is described in detail below with reference to fig. 7. As shown in fig. 7, the data transmission method of the present embodiment includes the following steps:
s701: host 610 obtains information for the portal included in IO device 630.
The information of the portals included in the IO device 630 includes identification information of each portal in the portals, identification information of epochs included in each portal, identification information of sub-portals included in each portal, identification information of apertures included in each portal, size of address space of each sub-portal, size of address space of each aperture, and the like. Wherein, the identification information of the epoch includes but is not limited to the combination of one or more of the following: the serial number of the epoch, the head address of the epoch, the tail address of the epoch and the like; the identification information of the sub-portal includes, but is not limited to, one or more of the following: the serial number of the sub-portal, the head address of the sub-portal, the tail address of the sub-portal and the like; the identification information of the aperture includes, but is not limited to, a combination of one or more of the following: the serial number of the aperture, the head address of the aperture, the tail address of the aperture and the like.
In one possible implementation, IO device 630 may provide a driver for other devices (e.g., host 610) to obtain information of a portal included in IO device 630, and host 610 may obtain information of a portal included in IO device 630 through the driver provided by IO device 630.
S702: the host 610 obtains the first SQE and metadata of the first SQE.
In general, the host 610 may continuously generate a plurality of SQEs to be sent to the IO device 630, the first SQE may be any one of the plurality of SQEs, in a case that each of the plurality of SQEs has an order number, the metadata of the first SQE may be a sequence number of the SQE, in a case that each of the plurality of SQEs has a priority level, the metadata of the first SQE may be a priority level of the SQE, and the metadata of the first SQE may further be one or more of a sequence number of an epoch to which the first SQE belongs, an identifier of a process that sends the first SQE, an identifier of a process that receives the first SQE, and the like. The priority levels of the SQEs refer to priority levels of the SQEs processed by the IO device 630, and it can be understood that after the IO device 630 stores the SQEs, the SQEs may be sequentially processed according to the priority levels of the SQEs; the sequence number of the epoch to which the first SQE belongs refers to a sequence number of an epoch selected from a plurality of epochs included in the first portal when the host 610 transmits the SQE to the IO device 630 in a case where the first portal includes the plurality of epochs. The first portal refers to a portal selected by the host 610 from portals included in the IO device 630 for storing the first SQE when the first SQE is sent to the IO device 630. The detailed process of the host 610 selecting a portal for storing the first SQE from the portals included in the IO device 630 is shown in S703.
S703: host 610 selects a first portal from the portals included in IO device 630 based on the first SQE.
Generally, the lengths of the SQEs generated by the host 610 are the same, the address spaces of the sub-portals obtained by dividing each portal by the IO device 630 are also the same, and after obtaining the information of the portals included in the IO device 630, the host 610 may select, as the first portal, a portal whose address space size matches the length of the first SQE from the portals included in the IO device 630. The portal with the address space size matched with the length of the first SQE refers to a portal with the address space size of the included sub-portal greater than or equal to the length of the first SQE.
S704: the host 610 determines a first sub-portal from a plurality of sub-portals comprised by the first portal, based on the metadata of the first SQE, the first sub-portal being used to store the first SQE.
In a specific embodiment of the present application, the host 610 may determine the first sub-portal corresponding to the metadata of the first SQE by matching the metadata of the first SQE with the identification information of the first sub-portal, that is, the host 610 may match the metadata of the first SQE with the identification information of the plurality of sub-portals included in the first portal, and determine the sub-portal matching the metadata of the first SQE in the identification information of the plurality of sub-portals as the first sub-portal corresponding to the metadata of the first SQE.
In a specific implementation, only the identification information of one of the plurality of sub-portals may match the metadata of the first SQE, or the identification information of at least two sub-portals may match the metadata of the first SQE, when only the identification information of one of the plurality of sub-portals matches the metadata of the first SQE, the sub-portal is determined as the first sub-portal corresponding to the metadata of the first SQE, and when the identification information of at least two of the plurality of sub-portals matches the metadata of the first SQE, any one of the at least two sub-portals may be determined as the first sub-portal corresponding to the metadata of the first SQE, which is not specifically limited herein.
For the sake of simplicity, in the following embodiments, the identification information of only one of the plurality of sub-portals is described as matching the metadata of the first SQE.
For example, assuming that the SQEs are SQE1, SQE2, … and SQEn, metadata of the SQEs are serial numbers of the SQEs, the sub-portals are sub-portal 1, sub-portal 2, … and sub-portal n, and identification information of the sub-portals is serial numbers of the sub-portals, after the host 610 matches the serial number 1 of the SQE1 with the serial numbers of the sub-portals, it is determined that the serial number 1 of the sub-portal 1 matches the serial number 1 of the SQE1, the host 610 may determine the sub-portal 1 as a first sub-portal corresponding to the serial number 1 of the SQE 1; if the host 610 determines that the sequence number 2 of the sub-portal 2 is matched with the sequence numbers 2 of the SQE2 after the sequence number 2 of the SQE2 is respectively matched with the sequence numbers of the plurality of sub-portals, the host 610 may determine the sub-portal 2 as a first sub-portal corresponding to the sequence number 2 of the SQE 2; …; if the host 610 determines that the sequence number n of the sub-portal n matches the sequence number n of the SQEn after matching the sequence number n of the SQEn with the sequence numbers of the multiple sub-portals, the host 610 may determine the sub-portal n as the first sub-portal corresponding to the sequence number n of the SQEn.
For another example, assuming that the plurality of SQEs are SQE1 and SQE2, the metadata of the plurality of SQEs are sequence numbers of the plurality of SQEs, the plurality of sub-portals are a sub-portal with a head address of d1, a sub-portal with a head address of d2, a sub-portal with a head address of d3, and a sub-portal with a head address of d4, and the identification information of the plurality of sub-portals is a head address of the plurality of sub-portals, after the host 610 matches the sequence number 1 of the SQE1 with the head addresses of the plurality of sub-portals respectively, it is determined that both the head address d1 of the sub-portal with the head address of d1 and the head address d3 of the sub-portal with the head address of d3 match the sequence number 1 of the SQE1, the host 610 may determine any one of the sub-portal with the head address of d1 and the sub-portal with the head address of d3 as the first sub-portal corresponding to the sequence number 1 of the SQE 1; if the host 610 matches the sequence number 2 of the SQE2 with the first addresses of the multiple sub-portals, and then determines that both the first address d2 of the sub-portal with the first address d2 and the first address d4 of the sub-portal with the first address d4 are matched with the sequence number 2 of the SQE2, the host 610 may determine any one of the sub-portal with the first address d2 and the sub-portal with the first address d4 as the first sub-portal corresponding to the sequence number 2 of the SQE2.
It should be noted that the above two examples are only examples, so as to embody the process that the host 610 determines a sub-portal, which matches the metadata of the first SQE, in the identification information of the multiple sub-portals as the first sub-portal, in practical applications, the process that the host 610 determines a sub-portal, which matches the identification information of the multiple sub-portals with the metadata of the first SQE, as the first sub-portal may also be other processes, for example, the metadata of the first SQE is calculated, and the obtained calculation result matches the identification information of the sub-portal, and then the sub-portal is determined as the first sub-portal, which is not limited specifically herein.
S705: the host 610 generates a long instruction including the first SQE, and then generates a first packet including the first SQE and identification information of the first sub-portal according to the long instruction.
S706: the host 610 sends the first packet to the IO device 630, and correspondingly, the IO device 630 receives the first packet sent by the host 610.
S707: the IO device 630 analyzes the first packet to obtain the first SQE and the identification information of the first sub-portal.
S708: the IO device 630 obtains metadata of the first SQE according to the identification information of the first sub-portal.
Continuing to take the first example mentioned in step S704 for determining the first sub-portal from the plurality of sub-portals by the host 610 as an example, assuming that the plurality of messages sent by the host 610 to the IO device 630 are message 1 including sequence numbers 1 of SQE1 and sub-portal 1, message 2 including sequence numbers 2 of SQE2 and sub-portal 2, …, and message n including sequence numbers n of SQEn and sub-portal n, if the IO device 630 receives the message 1 and obtains the sequence numbers 1 of SQE and sub-portal from the message 1 by parsing, the IO device 630 may determine the sequence number of the SQE to be 1 according to the sequence number 1 of the sub-portal; if the IO device 630 receives the message 2 and obtains the SQE and the serial number 2 of the sub-portal by parsing from the message, the IO device 630 may determine that the SQE serial number is 2 according to the serial number 2 of the sub-portal; …; if the IO device 630 receives the message n and obtains the SQE and the serial number n of the child portal through parsing from the message n, the IO device 630 may determine that the serial number of the SQE is n according to the serial number n of the child portal.
Continuing to take the second example mentioned in step S704 as an example, assuming that the multiple messages sent by the host 610 to the IO device 630 are a message 1 including the SQE1 and the first address d1 of the sub-portal and a message 2 including the SQE2 and the first address d2 of the sub-portal, if the IO device 630 receives the message 1 and obtains the SQE and the first address d1 of the sub-portal by parsing from the message 1, the IO device 630 may determine that the sequence number of the SQE is 1 according to the first address d 1; if the IO device 630 receives the message 2 and obtains the SQE and the first address d2 of the sub-portal through parsing from the message 2, the IO device 630 may determine that the sequence number of the SQE is 2 according to the first address d 2.
In a possible implementation manner, if the IO device 630 includes multiple portals, and the multiple portals include sub-portals having the same identification information (e.g., the same sequence number), the first packet sent by the host 610 to the IO device 630 may further include the identification information of the first portal. After receiving and analyzing the first packet, the IO device 630 may first search for the first portal from the multiple portals included in the IO device according to the identification information of the first portal, and then search for the first sub-portal from the multiple sub-portals included in the first portal according to the identification information of the first sub-portal.
It may be understood that, in a case that the metadata of the plurality of SQEs to be transmitted to the IO device 630 by the host 610 are sequence numbers of the plurality of SQEs, through steps S701 to S708, the IO device 630 may determine the sequence numbers of the plurality of SQEs and sort the plurality of SQEs according to the sequence numbers of the plurality of SQEs. If a plurality of SQEs are lost during transmission, the IO device 630 may also determine sequence numbers of the lost SQEs.
As can be seen from the data transmission method shown in fig. 7, the host 610 does not need to transmit the SQE metadata and the SQE together to the IO device 630, and only needs to send a message including the SQE and the identifier information of the child portal used for storing the SQE to the IO device 630, and after receiving the message, the IO device 630 can obtain the SQE metadata and the SQE metadata at the same time according to the message including the SQE and the identifier information of the child portal included in the message.
In one possible implementation manner, the metadata of the first SQE to be sent by the host 610 to the IO device 630 includes first type data and second type data, at this time, the first portal selected by the host 610 from the portals included in the IO device 630 in the step S703 may include an aperture, and then the host 610 may determine, as the first sub-portal, a sub-portal whose identification information corresponds to the first type data among a plurality of sub-portals included in the first portal, and determine, as an aperture corresponding to the second type data, a plurality of apertures included in the first sub-portal, where the identification information of the plurality of apertures included in the first sub-portal corresponds to the second type data. Then, when the host 610 executes step S705, the generated first message may include the first SQE, identification information of the first sub-portal, and identification information of an aperture included by the first sub-portal. The first type data may be a sequence number of the first SQE, and the like, and the second type data may be a sequence number of a plurality of sub SQE blocks into which the first SQE is divided, and the like.
In a specific implementation, only the identification information of one of the plurality of sub-portals may be matched with the first type data, or the identification information of at least two sub-portals may be matched with the first type data, when only the identification information of one of the plurality of sub-portals is matched with the first type data, the sub-portal is determined as the first sub-portal corresponding to the first type data, and when the identification information of at least two of the plurality of sub-portals is matched with the first type data, any one of the at least two sub-portals may be determined as the first sub-portal corresponding to the first type data metadata, which is not specifically limited herein.
After receiving and analyzing the first message to obtain the first SQE, the identification information of the first sub-portal, and the identification information of the aperture included in the first sub-portal, the IO device 630 may obtain the first type data according to the identification information of the first sub-portal, and obtain the second type data according to the identification information of the aperture included in the first sub-portal, thereby achieving simultaneous obtaining of the metadata of the first SQE and the first SQE.
For ease of presentation, in the following embodiments, the description is given taking the example where the identification information of only one of the plurality of sub-portals is matched with the first type data.
For example, assuming that the plurality of SQEs are SQE1 and SQE2, the SQE1 and SQE2 are 150 bytes each, and the limit of 64 bytes is exceeded, the host may divide the SQE into a plurality of sub-SQE blocks, and assuming that the SQE1 is divided into sub-SQE blocks 01, sub-SQE blocks 02, sub-SQE block 03, and the SQE2 is divided into sub-SQE blocks 01 ', sub-SQE blocks 02', and sub-SQE blocks 03 ', each of which has a length of 50 bytes, the metadata of the SQE includes the sequence number of the SQE (i.e., the first type data described above) and the sequence number of the sub-SQE block included in the SQE (i.g., the second type data described above), the plurality of sub-portals are sub-portal 1 and sub-portal 2, the sub-portal 1 includes the aperture 01, the aperture 02 and the aperture 03, and the sub-portal 2 includes the aperture 01', and the identification information of the aperture 03 is the sequence number of the aperture.
If the host 610 matches the sequence number 1 of the SQE1 with the sequence numbers of the multiple sub-portals respectively and then determines that the sequence number 1 of the sub-portal 1 matches with the sequence number 1 of the SQE1, the host 610 may determine the sub-portal 1 as a first sub-portal corresponding to the sequence number 1 of the SQE1, and if the host 610 matches the sequence number 01 of the sub-SQE block 01 with the sequence numbers of the multiple apertures included in the sub-portal 1 and then determines that the sequence number 01 of the aperture 01 matches with the sequence number 01 of the sub-SQE block 01, the host 610 may determine the aperture 01 as a first aperture corresponding to the sequence number 01 of the sub-SQE block 01; if the host 610 determines that the serial number 02 of the aperture 02 is matched with the serial number 02 of the sub SQE block 02 after matching the serial numbers of the plurality of apertures included in the sub door 1 of the serial number 02 of the sub SQE block 02, the host 610 may determine the aperture 02 as a first aperture corresponding to the serial number 02 of the sub SQE block 02; when the host 610 matches the serial numbers of the plurality of apertures included in the sub portal 1 of the serial number 03 of the sub SQE block 03 and then determines that the serial number 03 of the aperture 03 matches the serial number 03 of the sub SQE block 03, the host 610 may determine the aperture 03 as the first aperture corresponding to the serial number 03 of the sub SQE block 03.
Similarly, the host 610 may determine sub-door 2 as the first sub-door corresponding to SQE2, aperture 01 'as the first aperture corresponding to sub-SQE block 01', aperture 02 'as the first aperture corresponding to sub-SQE block 02', and aperture 03 'as the first aperture corresponding to sub-SQE block 03'.
If the plurality of messages sent by the host 610 to the IO device 630 according to the above example are a message 1 including the sub SQE block 01, the serial number 1 of the sub-portal 1, and the serial number 01 of the aperture 01, a message 2 including the sub SQE block 02 in the SQE1, the serial number 1 of the sub-portal 1, and the serial number 02 of the aperture 02, a message 3 including the sub SQE block 03 in the SQE1, the serial number 1 of the sub-portal 1, and the serial number 03 of the aperture 03, a message 4 including the sub SQE block 01 in the SQE2, the serial number 2 of the sub-portal 2, and the serial number 01 'of the aperture 01', a message 5 including the sub SQE block 02 in the SQE2, the serial number 2 of the sub-portal 2, and the serial number 03 'of the aperture 03', and a message 6 including the sub-SQE block 03 in the SQE2, the serial number 2, and the serial number 03 'of the aperture 03', the sub-portal 01 can be determined according to the serial number of the sub-SQE 1, and the serial number of the sub-portal 01 can be determined according to the sequence number of the sub-SQE 1; if the IO device 630 receives the message 2 and obtains the sub SQE block, the serial number 2 of the sub-portal and the serial number 02 of the aperture through parsing from the message 2, the IO device 630 may determine, according to the serial number 1 of the sub-portal, that the SQE block belongs to, to be 1, and may determine, according to the serial number 02 of the aperture, that the serial number of the sub-SQE block is 02; …; if the IO device 630 receives the message 6 and obtains the sub SQE block, the serial number 2 of the sub-portal and the serial number 03 ' of the aperture through parsing from the message 6, the IO device 630 may determine, according to the serial number 2 of the sub-portal, that the SQE block belongs to is 2, and may determine, according to the serial number 03 ' of the aperture, that the serial number of the sub-SQE block is 03 '.
It can be understood that, after receiving the sub SQE block 01, the sub SQE block 02 and the sub SQE block 03 and determining the serial numbers of the three sub SQE blocks, the IO device 630 may combine the sub SQE block 01, the sub SQE block 02 and the sub SQE block 03 according to the serial numbers of the three sub SQE blocks to obtain the SQE1, and after receiving the sub SQE block 01 ', the sub SQE block 02' and the sub SQE block 03 'and determining the serial numbers of the three sub SQE blocks, the IO device 630 may combine the sub SQE block 01', the sub SQE block 02 'and the sub SQE block 03' to obtain the SQE2.
It can be seen from the foregoing embodiment that the host 610 does not need to transmit the metadata of the SQE (i.e., the first type data and the second type data) and the SQE together to the IO device 630, and it only needs to send a message including the identification information of the SQE and the sub-portal and the identification information of the aperture to the IO device 630, and after receiving the message, the IO device 630 can obtain the metadata of the SQE and the SQE simultaneously according to the identification information of the SQE and the sub-portal and the identification information of the aperture included in the message.
In order to facilitate a clearer understanding of the data transmission method provided by the present application, detailed descriptions are provided below with reference to some specific application scenarios.
In application scenario 1, the SQEs transmitted by the host 610 to the IO device 630 have an order, and during the transmission, the SQEs may be out of order, however, the subsequent IO device 630 needs to process the SQEs according to the order of the SQEs. Therefore, in this scenario, the IO device 630 needs to acquire sequence numbers of multiple SQEs.
For example, as shown in fig. 8, it is assumed that the host 610 is to send 32 SQEs to the IO device 630, sequence numbers of the 32 SQEs are 0 to 31, a first portal with a head address D is composed of 4 pages of 4 kilobytes, the first portal includes 32 sub-portals 0 to 31, each sub-portal occupies 512 bytes, and head addresses of the 32 sub-portals are D0 to D31.
Taking the identification information of the multiple sub-portals as the serial numbers of the multiple sub-portals as an example, the host 610 may determine the first sub-portal from the multiple sub-portals with reference to the following correspondence relationship (1):
y 1 =x 1 (1)
wherein, y 1 The sequence number, x, of the first child sub-portal determined from the plurality of child sub-portals for host 610 1 Is the sequence number of the SQE to be transmitted (i.e. the first SQE described above).
When the SQE to be sent is SQE0, the host 610 may determine the sequence number y of the first portlet according to the above relationship (1) 1 =0, i.e. the first sub-portal is sub-portal 0; when the SQE to be sent is SQE1, the host 610 may determine the sequence number y of the first sub-portal according to the above relationship (1) 1 =1, i.e. the first sub-portal is sub-portal 1; …; when the SQE to be sent is SQE31, the host 610 may determine the sequence number y of the first sub-portal according to the above relationship (1) 1 =31, i.e. the first sub-portal is sub-portal 31.
After the host 610 sends, to the IO device 630, 32 messages including the message 0 including the sequence number 0 of the SQE0 and the sub-portal 0, the message 1 including the sequence number 1 of the SQE1 and the sub-portal 1, …, and the message 31 including the sequence number 31 of the SQE31 and the sub-portal 31 according to the determined first sub-portal, the IO device 630 may obtain the sequence number of the SQE analyzed from the message i with reference to the following correspondence (2):
x 2 =y 2 (2)
wherein x is 2 Sequence number y of SQE analyzed from message i for IO device 630 2 Slave message i for IO device 630The serial number of the sub-portal obtained by the analysis in the step (2).
When the IO device 630 obtains the SQE and the sequence number 0 of the child portal through parsing from the message 0, according to the relationship (2), the IO device 630 may determine the sequence number x of the SQE obtained through parsing 2 =0; when the IO device 630 obtains the SQE and the sequence number 1 of the child portal 1 through parsing from the message 1, according to the relationship (2), the IO device 630 may determine the sequence number x of the SQE obtained through parsing 2 =1; …; when the IO device 630 obtains the SQE and the sequence number 31 of the child portal through parsing from the message 31, according to the relationship (2), the IO device 630 may determine the sequence number x of the SQE obtained through parsing 2 =31。
Taking the identification information of the sub-portals as the first addresses of the sub-portals as an example, the host 610 may determine the first sub-portal from the sub-portals by referring to the following correspondence relationship (3):
D 1 =D+x 1 <<w 1 (3)
wherein D is 1 First Address, w, of first child Portal determined from first Portal for host 610 1 Is the bit width corresponding to the address space size of the first sub-portal, for example, assuming that the address space size of the first sub-portal is 512 bytes, 512=2 9 Then w is 1 Is a number of 9, and the number of the main chain is,<<is a left shift operator.
When the SQE to be sent is SQE0, the host 610 may determine the first address D of the first sub-portal according to the above relationship (3) 1 =D+0<<9= D +0 (bytes) = d0, i.e. the first address of sub-portal 0, and thus the determined first sub-portal is sub-portal 0; when the SQE to be sent is SQE1, the host 610 may determine the first address D of the first sub-portal according to the above relationship (3) 1 =D+1<<9= D +512 (bytes) = d1, i.e. the first address of sub-portal 1, so the first determined sub-portal is sub-portal 1; …; when the SQE to be sent is SQE31, the host 610 may determine the first address D of the first sub-portal according to the above relationship (3) 1 =D+31<<9= d +15872 (bytes) = d31, i.e. the first address of sub-portal 31, and therefore, the determined first sub-portal is sub-portal 31.
After the host 610 sends, to the IO device 630, 32 messages including the message 0 including the SQE0 and the first address d0 of the sub-portal 0, the message 1 including the SQE1 and the first address d1 of the sub-portal 1, …, and the message 31 including the SQE31 and the first address d31 of the sub-portal 31 according to the determined first sub-portal, the IO device 630 may obtain, with reference to the following correspondence (4), the sequence number of the SQE obtained by parsing from the message i:
x 2 =(D 1 '-D')>>w 1 ' (4)
wherein D is 1 'is the first address of the child portal obtained by the IO device 630 from the message i through parsing, D' is the first address of the portal to which the first address of the child portal obtained by the IO device 630 from the message i belongs, w 1 ' is the bit width corresponding to the address space size of the sub-portal parsed from the message i by the IO device 630,>>is a right shift operator.
When the IO device 630 obtains the SQE and the first address d0 of the child portal through parsing from the message 0, according to the relationship (4), the IO device 630 may determine the sequence number x of the SQE obtained through parsing 2 =(d0-D)>>9=0 (byte)>>9=0; when the IO device 630 obtains the SQE and the first address d1 of the child portal through parsing from the message 1, according to the relationship (4), the IO device 630 may determine the sequence number x of the SQE obtained through parsing 2 =(d1-D)>>9=512 (byte)>>9=1; …; when the IO device 630 parses the message 31 to obtain the SQE and the first address d31 of the child portal, according to the relationship (4), the IO device 630 may determine the sequence number x of the SQE obtained by parsing 2 =(d31-D)>>9=15872 (byte)>>9=31。
Applying scenario 2, as can be seen from the above, the length of the SQE that the host 610 can send to the IO device 630 is limited, and if the length of the SQE exceeds the limit (for example, exceeds 64 bytes), the host 610 can divide the SQE into a plurality of sequential sub SQE blocks for sending, and then, after receiving the plurality of sub SQE blocks, the IO device 630 can recombine the plurality of sub SQE blocks into the SQE in sequence. Therefore, in this scenario, the IO device 630 needs to obtain sequence numbers of the plurality of SQEs and sequence numbers of sub SQE blocks included in each of the plurality of SQEs, so that the IO device 630 combines the sequence numbers of the plurality of SQEs and the sequence numbers of the sub SQE blocks included in each of the plurality of SQEs to obtain each of the plurality of sub SQEs.
By way of example, suppose that the host 610 is to send 8 SQEs of 160 bytes each to the IO device 630, sequence numbers of the 8 SQEs are 0 to 7, each SQE block is divided into 4 sub SQE blocks, each sub SQE block is 40 bytes in size, sequence numbers of 4 sub SQE blocks included in each SQE block are 0 to 3, a first portal with a head address D is composed of 4 pages of 4 kilobytes, the first portal includes 8 sub-portals 0 to 7, each sub-portal occupies 2048 bytes, head addresses of 8 sub-portals are D0 to D7, each sub-portal is divided into 4 apertures, namely, aperture 0 to aperture 3, each aperture occupies 512 bytes, and head addresses dj0 to dj3 of 4 sub-apertures included in a jth sub-portal of the 8 sub-portals are shown in fig. 9.
Taking the identification information of the plurality of sub-portals as the head addresses of the plurality of sub-portals and the identification information of the plurality of apertures as the head addresses of the plurality of apertures as an example, the host 610 may determine the first sub-portal from the plurality of sub-portals with reference to the correspondence (3), and determine the first aperture from the plurality of apertures included in the first sub-portal with reference to the correspondence (5) as follows:
D 1 =D+x 1 <<w 1 (3)
D 2 =D 1 +x 1 '<<w 2 (5)
wherein D is 2 For the first address, x, of the first aperture determined by the host 610 from the plurality of apertures comprised by the first sub-portal 1 "sequence number of sub SQE block to be transmitted, w 2 Is the bit width corresponding to the size of the address space of the first aperture.
The process of determining the first sub-portal from the multiple sub-portals by the host 610 according to the relationship (3) is described in detail in the scenario 1, and for brevity, the related description in the scenario 1 may be specifically referred to, and is not repeated herein.
Taking the case that the SQE0 is divided into the sub SQE block 0, the sub SQE block 1, the sub SQE block 2, and the sub SQE block 3, and the determined sub portal 0 with the first sub portal as the head address D0, when the sub SQE block to be transmitted is the sub SQE block 0, the host 610 may determine the head address D of the first aperture according to the relationship (5) described above 2 =d0+0<<9= d0+0 (bytes) = d00, i.e. the determined first aperture is the aperture with the head address d 00; when the sub SQE block to be transmitted is the sub SQE block 1, according to the above relationship (5), the host 610 may determine the first address D of the first aperture 2 =d0+1<<9= d0+512 (bytes) = d01, i.e. the determined first aperture is the aperture with the first address d 01; when the sequence number of the sub SQE block to be transmitted is 2, according to the above relationship (5), the host 610 may determine the first address D of the first aperture 2 =d0+2<<9= 11 + 0+1024 (bytes) = d02, i.e. the determined first aperture is the aperture with the head address d 02; when the sub SQE block to be transmitted is the sub SQE block 3, the host 610 may determine the first address D of the first aperture according to the above relationship (5) 2 =d0+2<<9= d0+1536 (bytes) = d03, i.e. the first determined aperture is the aperture with the first address d 03.
After the host 610 sends, to the IO device 630, the message 0 including the sub SQE block 0 in the SQE0, the head address d0 of the sub-portal 0, and the head address d00 of the aperture 0 in the sub-portal 0, the message 1 including the sub SQE block 1 in the SQE0, the head address d0 of the sub-portal 0, and the head address d01 of the aperture 1 in the sub-portal 0, …, and the message 3 including the head address d0 of the sub-portal 0 and the head address d03 of the aperture 3 in the sub-portal 0, to the first sub-portal having the determined head address d0 and the first aperture d00 of the aperture 0, according to the first sub-portal having the determined head address d0 and the first aperture determined from the plurality of apertures included in the first sub-portal, the IO device 630 may obtain, with reference to the correspondence (4), the sequence number of the SQE to which the sub-SQE block obtained by parsing from the message i, and obtain, with reference to the correspondence (6) as follows:
x 2 =(D 1 '-D')>>w 1 ' (4)
x 2 '=(D 2 '-D 2 )>>w 2 ' (6)
wherein D is 2 ' is the sequence number of the sub SQE block parsed from the message i by the IO device 630, D 2 The first address, w, of the aperture parsed from the message i for the IO device 630 2 "is a bit width corresponding to the size of the address space of the aperture parsed from the packet i by the IO device 630.
When the IO device 630 obtains the sub SQE block, the first address d0 of the sub-portal, and the first address d00 of the aperture by parsing from the message 0, according to the relationship (4), the IO device 630 may determine that the sequence number of the SQE to which the sub SQE block obtained by parsing belongs is 0, and according to the relationship (6), the IO device 630 may determine that the sequence number of the sub SQE block obtained by parsing is 0; when the IO device 630 obtains the sub SQE block, the first address d0 of the sub-portal, and the first address d01 of the aperture by parsing from the message 1, according to the relationship (4), the IO device 630 may determine that the sequence number of the SQE to which the sub SQE block obtained by parsing belongs is 0, and according to the relationship (6), the IO device 630 may determine that the sequence number of the sub SQE block obtained by parsing is 1; …; when the IO device 630 obtains the sub SQE block, the first address d0 of the sub-portal, and the first address d03 of the aperture by parsing from the packet 3, according to the relationship (4), the IO device 630 may determine that the sequence number of the SQE to which the sub SQE block obtained by parsing belongs is 0, and according to the relationship (6), the IO device 630 may determine that the sequence number of the sub SQE block obtained by parsing is 3. Then, the IO device 630 may combine the obtained sub SQE block 0, sub SQE block 1, sub SQE block 2, and sub SQE block 3 to obtain SQE0.
Similar to the way the IO device obtains SQE0, the IO device 630 may be combined to obtain SQE1, SQE2, …, SQE7.
The data transmission method provided by the present application is explained in detail above, and based on the same inventive concept, the following continues to describe the data transmission apparatus 1000 and the IO device 1100 provided by the present application.
Referring to fig. 10, fig. 10 is a schematic structural diagram of a data transmission device 1000 provided in the present application, and as shown in fig. 10, the data transmission device 1000 includes: a receiving module 1010, configured to receive and analyze a first message sent by the host 610, to obtain a first SQE and identification information of a first sub-portal, where the first sub-portal is used to store the first SQE, the identification information of the first sub-portal corresponds to metadata of the first SQE, and the first portal belongs to the IO device 630; the processing module 1020 is configured to obtain metadata of the first SQE according to the identification information of the first sub-portal. In one possible implementation, the identification information of the first sub-portal includes one or more of: a serial number of the first sub-portal, a head address of the first sub-portal, and a tail address of the first sub-portal.
In a possible implementation manner, the first sub-portal includes a plurality of apertures, the metadata of the first SQE includes first type data and second type data, the identification information of the first sub-portal corresponds to the first type data, and the identification information of the plurality of apertures included in the first sub-portal corresponds to the second type data.
In a possible implementation manner, the processing module 1020 is specifically configured to: and acquiring first type data according to the identification information of the first sub-portal, and acquiring second type data according to the identification information of a plurality of apertures included in the first sub-portal.
In one possible implementation, the metadata of the first SQE includes one or more of: the sequence number of the first SQE in the plurality of SQEs, the sequence number of an epoch corresponding to the first SQE, the identifier of the process sending the first SQE, the identifier of the process receiving the first SQE and the priority level of the first SQE.
In a possible implementation manner, the processing module 1020 is further configured to: the plurality of SQEs are ordered according to their metadata.
In one possible implementation, the host connects the IO devices over one or more of PCIe, CXL, CCIX.
It should be understood that the data transmission device 1000 according to the embodiment of the present application may be implemented by an ASIC, or a Programmable Logic Device (PLD), which may be a Complex Programmable Logic Device (CPLD), an FPGA, a General Array Logic (GAL), or any combination thereof; the data transmission device 1000 may also be implemented by software, and when implemented by software, each module implementing the data transmission device 1000 is a software module.
Specifically, the data transmission apparatus 1000 may refer to the description in the relevant content in the data transmission method embodiment described in fig. 7, and for the sake of brevity of the description, details are not repeated here.
It should be understood that the data transmission device 1000 is only one example provided by the embodiments of the present application, and the data transmission device 1000 may have more or less components than those shown in fig. 10, may combine two or more components, or may have different configurations of components to implement.
Referring to fig. 11, fig. 11 is a schematic structural diagram of an IO device 1100 provided in the present application, where the IO device 1100 includes: processor 1110, memory 1120, and communication interface 1130, wherein processor 1110, memory 1120, and communication interface 1130 may be interconnected via bus 1140. Wherein, the first and the second end of the pipe are connected with each other,
processor 1110 may read program code (including instructions) stored in memory 1120, and execute the program code stored in memory 1120, so that IO device 1100 performs the steps in the data transmission method provided by the above-described method embodiments.
The processor 1110 may have various specific implementations, for example, the processor 1110 may be a CPU, a Graphics Processing Unit (GPU), and the like, and the processor 1110 may also be a single-core processor or a multi-core processor. The processor 1110 may be a combination of a CPU and a hardware chip. The hardware chip may be an ASIC implementation or a PLD implementation. The aforementioned PLD may be a CPLD, an FPGA, a GAL, or any combination thereof. The processor 1110 may also be implemented solely using logic devices with built-in processing logic, such as an FPGA or a DSP.
The memory 1120 may store program codes as well as program data. Wherein the program code includes: code of the receiving module 1010 and code of the processing module 1020, etc., the program data includes: the first SQE, metadata of the first SQE, identification information of the first sub-portal, identification information of the plurality of apertures, and so on.
In practical applications, the memory 1120 may be a non-volatile memory, such as a read-only memory (ROM), a Programmable ROM (PROM), an Erasable PROM (EPROM), an Electrically Erasable PROM (EEPROM), or a flash memory. The memory 1120 may also be volatile memory, which may be RAM, that acts as external cache memory.
The communication interface 1130 may be a wired interface (e.g., an ethernet interface, a fiber optic interface, other types of interfaces (e.g., infiniBand interface)) or a wireless interface (e.g., a cellular network interface or using a wireless local area network interface) for communicating with other devices or apparatuses. When communication interface 1130 is a wired interface, communication interface 1130 may employ a protocol family over transmission control protocol/internet protocol (TCP/IP), such as a Remote Function Call (RFC) protocol, a Simple Object Access Protocol (SOAP) protocol, a Simple Network Management Protocol (SNMP) protocol, a Common Object Request Broker Architecture (CORBA) protocol, a distributed protocol, and so on.
The bus 1140 may be a PCIe or Extended Industry Standard Architecture (EISA) bus, or the like. The bus 1140 may be divided into an address bus, a data bus, a control bus, and the like. For ease of illustration, only one thick line is shown in FIG. 11, but this is not intended to represent only one bus or type of bus.
It should be understood that the IO device 1100 in the embodiment of the present application may correspond to the IO device 630 for executing S707 and S708 in the method described in fig. 7 in the embodiment of the present application, and operations and/or functions of each module in the IO device 1100 may implement S707 and S708 in the method described in fig. 7, which are not described herein again for brevity.
It should be understood that IO device 1100 is merely one example provided in embodiments of the present application and that IO device 1100 may have more or fewer components than shown in fig. 11, may combine two or more components, or may have a different configuration implementation of components.
The present application further provides a computer-readable storage medium, in which instructions are stored, and when the instructions are executed, part or all of the steps of the data transmission method described in the above embodiments may be implemented.
The present application also provides a computer program product, which when being read and executed by a computer, can implement part or all of the steps of the data transmission method described in the above method embodiments.
In the above embodiments, the descriptions of the respective embodiments have respective emphasis, and for parts that are not described in detail in a certain embodiment, reference may be made to related descriptions of other embodiments.
In the above embodiments, all or part may be implemented by software, hardware, or any combination thereof. When implemented in software, may be implemented in whole or in part in the form of a computer program product. The computer program product includes one or more computer instructions. When loaded and executed on a computer, cause the processes or functions described in accordance with the embodiments of the application to occur, in whole or in part. The computer may be a general purpose computer, a special purpose computer, a network of computers, or other programmable device. The computer instructions may be stored in a computer readable storage medium or transmitted from one computer readable storage medium to another, for example, the computer instructions may be transmitted from one website, computer, server, or data center to another website, computer, server, or data center by wire (e.g., coaxial cable, fiber optic, digital subscriber line) or wirelessly (e.g., infrared, wireless, microwave, etc.). The computer-readable storage medium can be any available medium that can be accessed by a computer or a data storage device, such as a server, a data center, etc., that includes one or more available media. The usable medium may be a magnetic medium (e.g., floppy disk, hard disk, magnetic tape), optical medium, or semiconductor medium, among others.
The foregoing is only illustrative of the present application. Those skilled in the art can conceive of changes or substitutions based on the specific embodiments provided in the present application, and all such changes or substitutions are intended to be included within the scope of the present application.

Claims (20)

1. A method of data transmission, the method comprising:
a host sends a first message to Input and Output (IO) equipment, wherein the first message comprises a first Submission Queue Element (SQE) and identification information of a first sub-portal, the first sub-portal is used for storing the first SQE, and the identification information of the first sub-portal corresponds to metadata of the first SQE;
the IO device receives and analyzes the first message to obtain the first SQE and the identification information of the first sub-portal;
and the IO equipment acquires the metadata of the first SQE according to the identification information of the first sub-portal.
2. The method of claim 1, wherein before the host sends the first packet to the IO device, the method further comprises:
the host acquires identification information of a plurality of sub-portals included in a first portal, wherein the first portal belongs to the IO equipment;
and the host determines a first sub-portal corresponding to the metadata of the first SQE by matching the metadata of the first SQE with the identification information of the first sub-portal.
3. The method of claim 1 or 2, wherein the identification information of the first sub-portal comprises one or more of: a serial number of the first sub-portal, a head address of the first sub-portal, and a tail address of the first sub-portal.
4. The method of any of claims 1 to 3, wherein the first sub-portal comprises a plurality of apertures, wherein the metadata of the first SQE comprises a first type of data and a second type of data, wherein the identification information of the first sub-portal corresponds to the first type of data, and wherein the identification information of the plurality of apertures corresponds to the second type of data.
5. The method according to claim 4, wherein the obtaining, by the IO device, the metadata of the first SQE according to the identification information of the first sub-portal specifically includes:
the IO equipment acquires the first type data according to the identification information of the first sub-portal;
and the IO equipment acquires the second type data according to the identification information of the plurality of apertures.
6. The method of any of claims 1 to 5, wherein the metadata of the first SQE comprises one or more of: the sequence number of the first SQE in a plurality of SQEs, the sequence number of an epoch corresponding to the first SQE, the identifier of a process sending the first SQE, the identifier of a process receiving the first SQE and the priority level of the first SQE, wherein the first SQE belongs to the plurality of SQEs.
7. The method of claim 6, further comprising:
and the IO device sequences the SQEs according to the metadata of the SQEs.
8. The method of any one of claims 1 to 7, wherein the host is connected to the IO device via one or more of peripheral component interconnect express (PCIe), computer fast link (CXL), and cache coherent interconnect protocol (CCIX).
9. A data transmission system, the system comprising:
the system comprises a host and an IO device, wherein the host is used for sending a first message to the IO device, the first message comprises a first SQE and identification information of a first sub-portal, the first sub-portal is used for storing the first SQE, and the identification information of the first sub-portal corresponds to metadata of the first SQE;
the IO device is configured to receive and analyze the first message to obtain the first SQE and the identification information of the first sub-portal;
and the IO device is used for acquiring the metadata of the first SQE according to the identification information of the first sub-portal.
10. The system of claim 9, wherein the host is further configured to:
acquiring identification information of a plurality of sub-portals included in a first portal, wherein the first portal belongs to the IO device;
and determining a first sub-portal corresponding to the metadata of the first SQE by matching the metadata of the first SQE with the identification information of the first sub-portal.
11. The system of claim 9 or 10, wherein the identification information of the first sub-portal comprises one or more of: a serial number of the first sub-portal, a head address of the first sub-portal, and a tail address of the first sub-portal.
12. The system of any of claims 9 to 11, wherein the first sub-portal comprises a plurality of apertures, the metadata of the first SQE comprises a first type of data and a second type of data, the identification information of the first sub-portal corresponds to the first type of data, and the identification information of the plurality of apertures corresponds to the second type of data.
13. The system according to claim 12, wherein the IO device is specifically configured to:
acquiring the first type data according to the identification information of the first sub-portal;
and acquiring the second type data according to the identification information of the plurality of apertures.
14. The system of any of claims 9 to 13, wherein the metadata of the first SQE comprises one or more of: the sequence number of the first SQE in the plurality of SQEs, the sequence number of the epoch corresponding to the first SQE, the identifier of the process sending the first SQE, the identifier of the process receiving the first SQE and the priority level of the first SQE.
15. The system of claim 14, wherein the IO device is further configured to:
sorting the plurality of SQEs according to their metadata.
16. The system of any of claims 9 to 15, wherein the host is connected to the IO device via one or more of PCIe, CXL, and CCIX.
17. A data transmission method is applied to IO equipment, and the method comprises the following steps:
the IO device receives and analyzes a first message sent by a host to obtain a first SQE and identification information of a first sub-portal, wherein the first sub-portal is used for storing the first SQE, and the identification information of the first sub-portal corresponds to metadata of the first SQE;
and the IO equipment acquires the metadata of the first SQE according to the identification information of the first sub-portal.
18. A data transmission apparatus, applied to an IO device, the apparatus comprising:
the receiving module is used for receiving and analyzing a first message sent by the host to obtain a first SQE and identification information of a first sub-portal, wherein the first sub-portal is used for storing the first SQE, and the identification information of the first sub-portal corresponds to metadata of the first SQE;
and the processing module is used for acquiring the metadata of the first SQE according to the identification information of the first sub-portal.
19. A computer-readable storage medium having stored thereon instructions for implementing the method of claim 17.
20. An IO device, comprising a processor and a memory, the memory storing computer instructions, the IO device when executed, the processor executing the computer instructions to implement the method of claim 17.
CN202110920583.XA 2021-08-11 2021-08-11 Data transmission method, system, device and equipment Pending CN115904488A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110920583.XA CN115904488A (en) 2021-08-11 2021-08-11 Data transmission method, system, device and equipment
PCT/CN2022/110865 WO2023016407A1 (en) 2021-08-11 2022-08-08 Data transmission method, system, apparatus, and device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110920583.XA CN115904488A (en) 2021-08-11 2021-08-11 Data transmission method, system, device and equipment

Publications (1)

Publication Number Publication Date
CN115904488A true CN115904488A (en) 2023-04-04

Family

ID=85200553

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110920583.XA Pending CN115904488A (en) 2021-08-11 2021-08-11 Data transmission method, system, device and equipment

Country Status (2)

Country Link
CN (1) CN115904488A (en)
WO (1) WO2023016407A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116665727B (en) * 2023-07-26 2023-09-22 成都泛联智存科技有限公司 Write I/O aggregation method, apparatus, storage device and storage medium

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017113960A1 (en) * 2015-12-28 2017-07-06 华为技术有限公司 Data processing method and nvme storage
WO2020000483A1 (en) * 2018-06-30 2020-01-02 华为技术有限公司 Data processing method and storage system
WO2020000485A1 (en) * 2018-06-30 2020-01-02 华为技术有限公司 Nvme-based data writing method, device, and system

Also Published As

Publication number Publication date
WO2023016407A1 (en) 2023-02-16

Similar Documents

Publication Publication Date Title
KR940008104B1 (en) Data representation protocol for communication between different networks
CN112039942A (en) Subscription and publishing method and server
JPH0778112A (en) Network system and communication method for network
CN105511954A (en) Method and device for message processing
EP3291089A1 (en) Data processing method and apparatus
CN110661725A (en) Techniques for reordering network packets on egress
CN113746749A (en) Network connection device
CN114710467B (en) IP address storage method and device and hardware gateway
WO2023016407A1 (en) Data transmission method, system, apparatus, and device
CN113986969A (en) Data processing method and device, electronic equipment and storage medium
CN114338386B (en) Network configuration method and device, electronic equipment and storage medium
CN108494700B (en) Cross-link data transmission method and device, computer equipment and storage medium
CN112422485A (en) Communication method and device of transmission control protocol
CN113490154B (en) Broadcast data transmission method, device, terminal equipment and storage medium
CN115550442A (en) Data packet transmission method and device, electronic equipment and storage medium
CN110928693B (en) Computing equipment and resource allocation method
CN116136790A (en) Task processing method and device
CN107544928B (en) Direct memory access control device and method for operating the same
US7653765B2 (en) Information communication controller interface apparatus and method
CN113157610B (en) Data storage method and device, storage medium and electronic device
CN111935834B (en) Data transmission method, device, computer equipment and storage medium
CN116226027B (en) Data transmission system, method, device, communication equipment and storage medium
CN116260855B (en) Communication method, communication device, electronic equipment and storage medium
CN115996203B (en) Network traffic domain division method, device, equipment and storage medium
CN112597082B (en) Bus data transmission method and electronic equipment

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication