Data transmission method, apparatus, device, storage medium, and program product

By establishing Ethernet connections and configuring DVSEC between compute nodes, the management and registration issues between CXL devices were resolved, enabling cross-node CXL device data transmission and memory pooling, thereby improving the memory utilization of the data center network.

CN119854380BActive Publication Date: 2026-04-24CHINA MOBILE (SUZHOU) SOFTWARE TECH CO LTD +1
View PDF 1 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
CHINA MOBILE (SUZHOU) SOFTWARE TECH CO LTD
Filing Date
2024-12-30
Publication Date
2026-04-24

AI Technical Summary

Technical Problem

In existing technologies, the data transmission process between CXL devices does not take into account the management and registration of newly added devices, especially in hot-swappable scenarios where there is a lack of effective management solutions, and it fails to achieve CXL memory pooling between different computing nodes.

Method used

By establishing Ethernet connections between computing nodes, the allocation and management of CXL memory resources are realized using the COE controller and network controller. New devices are registered using hot-add operations, and data transmission is performed by encapsulating and decapsulating CXL packets through network interface cards. DVSEC is configured to notify device attributes.

Benefits of technology

It enables cross-node CXL device data transmission and registration management of newly added devices, improves the utilization of idle memory in data center networks, and has low complexity and broad application prospects.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119854380B_ABST
    Figure CN119854380B_ABST
Patent Text Reader

Abstract

The embodiment of the present application discloses a data transmission method, device, equipment, storage medium and program product, and the method comprises the following steps: receiving first information required for accessing a target CXL device in a second computing node; when a hot adding event of a first CXL device in the first computing node is detected, performing a hot adding operation of the first CXL device; obtaining a first data packet by accessing the first CXL device; and sending the first data packet to the target CXL device of the second computing node according to the first information.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application belongs to the technical field of computer networks, and specifically relates to a data transmission method, apparatus, device, storage medium, and program product. Background Technology

[0002] Among related technologies, Compute Express Link (CXL) is a novel high-speed interconnect technology. CXL enables memory pooling, significantly improving the utilization of idle memory in data center networks and meeting the demands of computing and storage systems. The CXL protocol itself, based on the Peripheral Component Interconnect Express (PCIe) bus, effectively solves compatibility issues between CXL devices and older PCIe devices. However, current technologies only consider data transfer between CXL devices, which is not conducive to managing newly added CXL devices. Summary of the Invention

[0003] To address the problem of hindering the management of newly added CXL devices in related technologies, embodiments of this application propose a data transmission method, apparatus, device, storage medium, and program product.

[0004] This application provides a data transmission method applied in a first computing node, the method comprising:

[0005] Receive the first information required to access the target CXL device in the second computing node;

[0006] When a hot-add event for the first CXL device is detected in the first computing node, the hot-add operation for the first CXL device is executed.

[0007] Obtain the first data packet by accessing the first CXL device;

[0008] Based on the first information, the first data packet is sent to the target CXL device of the second computing node.

[0009] In some embodiments, after performing a hot-add operation on the first CXL device, the method further includes: configuring a designated vendor-specific extended capability (DVSEC) of the first CXL device, and notifying the operating system of the first compute node of the transport attribute information of the first CXL device.

[0010] In some embodiments, configuring the DVSEC of the first CXL device includes: configuring the DVSEC of the first CXL device on the first CXL device and associated devices via sensing software, wherein the associated devices include at least one of a switch and a host bridge.

[0011] In some embodiments, before receiving the first information required to access the target CXL device in the second computing node, the method further includes: establishing a network connection between the first computing node and the second computing node via a first controller, the first controller being configured to obtain Internet Protocol (IP) addresses assigned by a network controller to the first computing node and the second computing node, the network controller being configured to establish a basic network connection with the first computing node and the second computing node.

[0012] In some embodiments, receiving the first information required to access the target CXL device in the second computing node includes: receiving the first information sent by the second computing node through the first controller.

[0013] In some embodiments, sending the first data packet to the target CXL device of the second computing node includes: sending the Ethernet packet to the target CXL device when the first data packet is carried in an Ethernet packet, wherein the Ethernet packet includes a header and body data, the header is used to indicate at least the packet type and unique identifier of the Ethernet packet, and the body data includes at least one frame of payload.

[0014] This application embodiment also provides another data transmission method applied in a second computing node, the method comprising:

[0015] Send the first information required by the target CXL device in the second computing node to the first computing node;

[0016] The first computing node receives a first data packet sent from the first computing node. The first computing node is configured to perform a hot-add operation on the first CXL device when it receives the first information and detects a hot-add event of the first CXL device in the first computing node; obtain the first data packet by accessing the first CXL device; and send the first data packet to the second computing node.

[0017] In some embodiments, receiving the first data packet sent from the first computing node includes: receiving an Ethernet packet sent by the first computing node using its own network interface card (NIC), decapsulating the Ethernet packet to obtain the first data packet;

[0018] After obtaining the first data packet, the method further includes: when the destination address of the first data packet is modified to the address of the target CXL device, or when the device identifier in the first data packet is modified to the device identifier of the target CXL device, routing the first data packet to the target CXL device.

[0019] This application embodiment also provides a data transmission device applied in a first computing node, the device comprising:

[0020] The receiving module is used to receive the first information required to access the target CXL device in the second computing node;

[0021] The first processing module is configured to, upon detecting a hot-add event of a first CXL device in the first computing node, execute a hot-add operation of the first CXL device; obtain a first data packet by accessing the first CXL device; and send the first data packet to the target CXL device of the second computing node according to the first information.

[0022] This application embodiment also provides another data transmission device, applied in a second computing node, the device comprising:

[0023] The sending module is used to send the first information required by the target CXL device in the second computing node to the first computing node;

[0024] The second processing module is configured to receive a first data packet sent from the first computing node. The first computing node is configured to execute a hot-add operation of the first CXL device when it receives the first information and detects a hot-add event of the first CXL device in the first computing node; obtain the first data packet by accessing the first CXL device; and send the first data packet to the second computing node.

[0025] This application also provides an electronic device, which includes a processor and a memory for storing a computer program that can run on the processor; wherein the processor is used to run the computer program to perform any of the above-described data transmission methods.

[0026] This application also provides a computer storage medium storing a computer program thereon, which, when executed by a processor, implements any of the above-described data transmission methods.

[0027] This application also provides a computer program product, including a computer program that, when executed by a processor, implements any of the above-described data transmission methods.

[0028] As can be seen, after receiving the first information required to access the target CXL device in the second computing node, the first computing node can send the newly added first CXL device by performing a hot-add operation, thereby enabling the interaction between the first CXL device of the first computing node and the target CXL device of the second computing node. That is, the embodiments of this application can not only realize the data transmission of CXL devices in cross-machine scenarios, but also realize the registration and management of newly added CXL devices. Attached Figure Description

[0029] Figure 1 This is a flowchart illustrating a data transmission method applied to a first computing node according to an embodiment of this application;

[0030] Figure 2 This is a schematic diagram of the internal hardware structure of the computing node in an embodiment of this application;

[0031] Figure 3 This is a schematic diagram of the data transmission system according to an embodiment of this application;

[0032] Figure 4 A schematic diagram of the message format of a COE message provided in an embodiment of this application;

[0033] Figure 5 This is a flowchart illustrating a data transmission method applied to a second computing node according to an embodiment of this application;

[0034] Figure 6 This is an interactive flowchart of the data transmission method according to an embodiment of this application;

[0035] Figure 7 This is a schematic diagram of the data transmission device applied to the first computing node according to an embodiment of this application;

[0036] Figure 8 This is a schematic diagram of the data transmission device applied to the second computing node according to an embodiment of this application;

[0037] Figure 9 This is a schematic diagram of the composition structure of an electronic device provided in an embodiment of this application. Detailed Implementation

[0038] CXL is a high-speed interconnect standard designed for high-performance computing systems. It is designed to provide low-latency, high-bandwidth, and efficient memory sharing between central processing units (CPUs), graphics processing units (GPUs), and other accelerators. One of CXL's main advantages is that it allows direct memory access between devices, which can significantly reduce the overhead associated with moving data between devices. In related technologies, most solutions only consider accessing CXL devices within a single compute node, while few propose interconnecting CXL devices across different compute nodes in a data center network via Ethernet.

[0039] One technical solution in the related technology proposes a computing node memory expansion system. This solution enables interconnection between a computing node and a memory node at any location, thereby achieving remote memory expansion functionality for the computing node. In this solution, the computing node and the remote memory node are connected via a target interconnection network. The computing node includes a first processor, a first control chip connected to the first processor via a first interface running a memory expansion protocol, and a first communication network card connected to the first control chip. The memory node includes a second control chip, a second communication network card connected to the second control chip, and extended memory; wherein the first and second communication network cards correspond to the target interconnection network.

[0040] The solutions proposed by related technologies have at least the following problems:

[0041] 1) Most related technologies access the memory of remote devices through Remote Direct Memory Access (RDMA), while accessing the memory of remote devices through Compute Express Link Over Ethernet (COE) has lower latency and higher bandwidth than RDMA. Currently, few solutions implement COE access to the memory of remote devices on physical devices.

[0042] 2) The technical solutions of related technologies only consider the access to CXL devices under a single computing node, and do not consider the access to CXL memory between different computing nodes via Ethernet, so as to achieve memory pooling of CXL.

[0043] 3) The technical solutions of related technologies only consider the data transmission process between CXL devices, but lack the registration and management process of CXL devices, including the management of CXL devices in hot-swappable scenarios.

[0044] In view of the technical problems existing in related technologies, this application proposes a technical solution for implementing CXL via Ethernet in a data center network.

[0045] The embodiments of this application will be further described in detail below with reference to the accompanying drawings and examples. It should be understood that the embodiments provided herein are merely illustrative of the embodiments of this application and are not intended to limit the embodiments of this application. Furthermore, the embodiments provided below are some embodiments for implementing this application, and not all embodiments for implementing this application. Unless otherwise specified, the technical solutions described in the embodiments of this application can be implemented in any combination.

[0046] It should be noted that, in the embodiments of this application, the terms "comprising," "including," or any other variations thereof are intended to cover non-exclusive inclusion, such that a method or apparatus that includes a list of elements includes not only the elements expressly described, but also other elements not expressly listed, or elements inherent to implementing the method or apparatus. Without further limitations, an element defined by the phrase "comprising a..." does not exclude the presence of other related elements (e.g., steps in the method or units in the apparatus, such as portions of circuitry, processors, programs, or software, etc.) in the method or apparatus that includes that element.

[0047] The data transmission method provided in this application includes a series of steps, but the data transmission method provided in this application is not limited to the steps described. Similarly, the data transmission device provided in this application includes a series of modules, but the device provided in this application is not limited to the modules explicitly described, and may also include modules that need to be set up for obtaining relevant information or processing based on information.

[0048] This application provides a data transmission method applied to a first computing node. Figure 1 This is a flowchart illustrating a data transmission method applied to a first computing node according to an embodiment of this application, as shown below. Figure 1 As shown, the process includes:

[0049] Step 101: Receive the first information required to access the target CXL device in the second computing node.

[0050] For example, the first information may be information such as the Base Address Register (BAR) space and device status. In this embodiment, the first computing node and the second computing node may be any two computing nodes in the data transmission system. Before executing step 101, each computing node in the data transmission system may execute an initialization process to complete the enumeration of the agent module and network interface card (NIC) within the computing node, reserving resources for the subsequent addition of CXL devices. Here, the agent module can be referred to as COE-agent. Each computing node contains a COE-agent and a NIC. The COE-agent is responsible for managing and maintaining the mapping relationship between the physical addresses of the CXL devices in this computing node and the physical addresses of the CXL devices in other computing nodes. The NIC is responsible for encapsulating CXL packets into Ethernet packets and decapsulating Ethernet packets into CXL packets. The Ethernet packets obtained by encapsulating CXL packets can be referred to as COE packets.

[0051] For example, refer to Figure 2 Each computing node within the data transmission system may include a CPU, memory, hard disk, and NIC. Depending on the actual function of the computing node, other hardware may also be configured within it, which will not be elaborated upon here. For example, each computing node's NIC can communicate with other devices based on its Media Access Control (MAC) address and IP address. The Transmission Control Protocol (TCP) messages sent by each computing node through the NIC may include a header and a payload.

[0052] In some embodiments, the first computing node may be denoted as computing node A, and the second computing node may be denoted as computing node B, as shown below. Figure 3 Each of compute nodes A, B, and C contains a COE-agent and a NIC. The CXL device in compute node A is CXL device A, the target CXL device in compute node B is CXL device B, and the CXL device in compute node C is CXL device C. For example, in compute nodes A, B, and C, the CXL device for each compute node can be obtained by performing a hot-add operation. Understandably, before performing step 101, a connection needs to be established between the first compute node and the second compute node.

[0053] In some embodiments of this application, before receiving the first information required to access the target CXL device in the second computing node, the first computing node may also establish a network connection between the first computing node and the second computing node through the first controller. The first controller is used to obtain the IP addresses assigned by the network controller to the first computing node and the second computing node, and the network controller is used to establish a basic network connection with the first computing node and the second computing node.

[0054] Reference Figure 3 The COE controller is the first controller described above. The NICs of compute node A, compute node B, and compute node C can form a communication connection with the network controller. The network controller forms a communication connection with the first controller, and the network controller can synchronize the IP addresses allocated to each compute node to the COE controller.

[0055] As can be seen, the first controller can obtain the IP addresses assigned to the first computing node and the second computing node, thereby reliably establishing a basic network connection with the first computing node and the second computing node, which is beneficial for subsequent communication between the first computing node and the second computing node.

[0056] In some embodiments of this application, receiving the first information required to access the target CXL device in the second computing node includes: receiving the first information sent by the second computing node through the first controller. Therefore, the second computing node can reliably receive information through the first controller.

[0057] Step 102: When a hot-add event for the first CXL device is detected in the first computing node, perform a hot-add operation for the first CXL device.

[0058] In this embodiment, after receiving the first information, the first computing node can initiate a hot-add process for a CXL device. For example, in a CXL device hot-add process, a user can hot-insert a first CXL device into an empty PCIe slot. The first CXL device can be a CXL memory device, etc. When the first CXL device is hot-inserted into an empty PCIe slot, a PCIe hot-plug interrupt is generated, and the downstream port of the root port with hot-plug capability detects the hot-add event. At this time, all subsequent events on that slot will be ignored until the event is processed. After detecting the hot-add event, the bus driver performs a standard PCIe hot-add operation, powers on the slot, re-enumerates the bus of the slot, and configures the device's configuration space.

[0059] Step 103: Obtain the first data packet by accessing the first CXL device.

[0060] For example, the first data packet may be a data packet representing control plane configuration information or a data packet representing actual user data. In a real-world scenario, the data packet representing control plane configuration information is usually sent to the second computing node first, and then the data packet representing actual user data is sent to the second computing node.

[0061] Step 104: Based on the first information, send the first data packet to the target CXL device of the second computing node.

[0062] In some embodiments of this application, the first data packet may be a Transport Layer Packet (TLP) data packet, and the first computing node may send the first data packet to its NIC. The NIC of the first computing node may encapsulate the first data packet into an Ethernet message and then send the Ethernet message to the second computing node.

[0063] Accordingly, when the first data packet is carried on an Ethernet message, the Ethernet message is sent to the target CXL device. The Ethernet message includes a header and body data. The header at least indicates the message type and unique identifier of the Ethernet message, and the body data includes at least one frame of payload. It can be seen that the network interface card (NIC) device of the first computing node can reliably transmit the first data packet to the second computing node.

[0064] Here, after receiving the Ethernet packet, the network card device of the second computing node can decapsulate the Ethernet packet to obtain the first data packet. Then, when the destination address of the first data packet is modified to the address of the target CXL device, or when the device identifier in the first data packet is modified to the device identifier of the target CXL device, the first data packet is routed to the target CXL device.

[0065] For example, the device identifier can be BDF (Bus, Device, Function) or other identifiers.

[0066] For example, the Ethernet packet obtained by encapsulating the first data packet is a COE packet, as shown in the reference. Figure 4COE messages can be transmitted over Ethernet using the payload of TCP messages. The COE message header can include a Flag field, a Packet Number field, and a Reserved (Rsvd) field. The Flag field occupies one byte; the first three bits record the message type, such as whether it is a probe message, a control plane packet, or a data plane packet, and whether space is reserved. The last five bits of the Flag field are reserved. The Packet Number field occupies four bytes and is a unique identifier for a COE message; the Packet Number increments in size. The Reserved field occupies one byte and can reserve space for subsequent operations.

[0067] The main data of a COE message may include one or more frames, as shown in the reference. Figure 4 Frame1 to FrameN represent N frames, where N is an integer greater than or equal to 1. Each frame in the body data of a COE message may include a frame header indicating the frame type and a payload of the frame. For example, the frame type may be a stream frame, an ACK frame, etc.

[0068] In practical applications, steps 101 to 104 can be implemented based on a processor, which can be at least one of the following: Application Specific Integrated Circuit (ASIC), Digital Signal Processor (DSP), Digital Signal Processing Device (DSPD), Programmable Logic Device (PLD), Field Programmable Gate Array (FPGA), CPU, controller, microcontroller, and microprocessor.

[0069] As can be seen, after receiving the first information required to access the target CXL device in the second computing node, the first computing node can send the newly added first CXL device by performing a hot-add operation, thereby enabling the interaction between the first CXL device of the first computing node and the target CXL device of the second computing node. That is, the embodiments of this application can not only realize the data transmission of CXL devices in cross-machine scenarios, but also realize the registration and management of newly added CXL devices.

[0070] In some embodiments of this application, after performing a hot-add operation on the first CXL device, the first computing node can also configure the DVSEC of the first CXL device and notify the operating system of the first computing node of the transmission attribute information of the first CXL device.

[0071] For example, the transmission attribute information of the first CXL device may be transmission delay and bandwidth.

[0072] It can be seen that by configuring the DVSEC of the first CXL device and notifying the first CXL device of its transmission attribute information, the first computing node can complete the preparatory work related to the information transmission process with the first CXL device, which is conducive to the subsequent data interaction between the first CXL device and other CXL devices.

[0073] In some embodiments of this application, the process of configuring the DVSEC of the first CXL device described above includes: configuring the DVSEC of the first CXL device on the first CXL device and the associated device through sensing software, wherein the associated device includes at least one of a switch and a host bridge.

[0074] It can be seen that when the DVSEC of the first CXL device is configured on the first CXL device and the associated device, the first CXL device can reliably achieve data transmission through the associated device.

[0075] In one example, CXL-aware software (e.g., a CXL bus driver or device driver in the operating system) can detect the CXL DVSEC functionality of the first compute node and ensure that the host-managed device memory (HDM) is active. The memory can be initialized by hardware, firmware on the adapter, or the device driver. The CXL-aware software can then configure the CXL DVSEC architecture on devices, switches, and host bridges (e.g., GPF DVSEC, HDM decoders). If the first CXL device is memory, the CXL-aware software notifies the operating system memory manager of the latency and bandwidth of the new memory. The memory manager processes the request and adds the new memory to its allocation pool.

[0076] Figure 5 This is a flowchart illustrating a data transmission method applied to a second computing node according to an embodiment of this application, as shown below. Figure 5 As shown, the process includes:

[0077] Step 501: Send the first information required by the target CXL device in the second computing node to the first computing node.

[0078] Step 502: Receive a first data packet sent from the first computing node. The first computing node is used to perform a hot-add operation on the first CXL device when it receives the first information and detects a hot-add event of the first CXL device in the first computing node; obtain the first data packet by accessing the first CXL device; and send the first data packet to the second computing node.

[0079] In practical applications, steps 501 to 502 can be implemented based on a processor, which can be at least one of ASIC, DSP, DSPD, PLD, FPGA, CPU, controller, microcontroller, and microprocessor.

[0080] As can be seen, after receiving the first information required to access the target CXL device in the second computing node, the first computing node can send the newly added first CXL device by performing a hot-add operation, thereby enabling the interaction between the first CXL device of the first computing node and the target CXL device of the second computing node. That is, the embodiments of this application can not only realize the data transmission of CXL devices in cross-machine scenarios, but also realize the registration and management of newly added CXL devices.

[0081] In some embodiments of this application, the second computing node receives a first data packet sent by the first computing node, including: using its own network interface card (NIC) to receive an Ethernet packet sent by the first computing node, decapsulating the Ethernet packet to obtain the first data packet;

[0082] After obtaining the first data packet, the method further includes: when the destination address of the first data packet is modified to the address of the target CXL device, or when the device identifier in the first data packet is modified to the device identifier of the target CXL device, routing the first data packet to the target CXL device.

[0083] This application proposes a method for implementing fast computing links via Ethernet in data center networks. First, a COE-based network transmission model is proposed for data center networks. In this model, the COE controller allocates CXL memory resources, and the network controller broadcasts CXL resources and allocates resources at the Ethernet layer. After hot-inserting CXL memory into a computing node, the CXL memory is first enumerated on the current computing node, and then sends the information required to access the current CXL device (such as BAR space and device status information) to the COE controller via TCP protocol. The COE controller can then allocate the resources. The technical solution of this application, while having low complexity and ease of implementation, can effectively improve the utilization rate of idle memory in data center networks and has broad application prospects.

[0084] Figure 6This is an interactive flowchart of the data transmission method according to an embodiment of this application, such as... Figure 6 As shown, the process includes:

[0085] Step S1: The CXL device completes local initialization.

[0086] One implementation of this step is as follows: CXL device B completes enumeration and initialization on compute node B, and CXL device C completes enumeration and initialization on compute node C. Each compute node binds the initialized CXL device to its root port and sends the information required to access the local CXL device to its COE-proxy.

[0087] Step S2: Each computing node completes the basic network connection.

[0088] One implementation of this step is as follows: Each of compute nodes A, B, and C establishes a basic network connection with the COE controller and the network controller, respectively. The network controller assigns IP addresses to compute nodes A, B, and C through protocols such as Dynamic Host Configuration Protocol (DHCP), and synchronizes the IP addresses assigned to each compute node to the COE controller.

[0089] Step S3: Each compute node sends its local configuration information to the COE controller.

[0090] One implementation of this step is as follows: compute nodes B and C establish TCP connections with the COE controller respectively. In compute nodes B and C, the COE agent sends the information required to access the local CXL device to the COE controller through the NIC.

[0091] Step S4: The COE controller manages and allocates resources for each compute node.

[0092] One implementation of this step is as follows: The COE controller receives information sent by the COE-agent of compute node B, or, after receiving information sent by the COE-agent of compute node C, saves the received information locally, announces the first information required to access CXL device B to the COE-agent of compute node A via TCP protocol, and binds the CXL memory in compute node B to compute node A. Compute node B updates and announces its own resources, and compute node A and compute node B establish a network connection. For example, the compute node COE-agent can complete the mapping from the physical address of the local CXL device to the physical address of the peer CXL device, and the mapping from the local BDF (Bus, Device, Function) to the BDF of compute node A.

[0093] Step S5: Compute node A performs hot-addition of the first CXL device.

[0094] Step S6: Compute node A completes the assembly and forwarding of COE messages.

[0095] One implementation of this step is as follows: The CPU of compute node A accesses the newly added first CXL device on the local end and obtains the TLP data packet; the COE-agent reads the configuration space of the TLP data packet, identifies the destination memory address of the TLP data packet as the newly added first CXL device on the local end, forwards the TLP data packet to the local NIC, the NIC encapsulates the TLP data packet into a COE message, and sends the COE message to compute node B.

[0096] Step S7: Compute node B completes the reception of the COE message.

[0097] One implementation of this step is as follows: After the COE message arrives at the NIC of compute node B, the NIC of compute node B decapsulates the message. If the decapsulated data packet is a data packet representing actual user data (i.e., a data packet for memory read / write), then the COE-proxy translates the destination address of the data packet into the address of CXL device B. If the decapsulated data packet is a data packet representing control plane configuration information, then the COE-proxy translates the BDF in the message into the BDF of the local CXL device B, and finally routes the message to CXL device B.

[0098] CXL technology features high-speed transmission and low latency. In this embodiment, utilizing CXL technology to access the memory of other nodes can effectively improve the memory utilization of each computing node. This embodiment proposes a CXL device registration method in a cross-machine scenario, which can realize CXL device information notification, addition, and deletion. Specifically for a data center scenario, this embodiment proposes a method for computing nodes to access the CXL memory of other computing nodes via Ethernet and CXL.

[0099] This application embodiment can allocate CXL memory resources through a COE controller and broadcast CXL resources and allocate resources at the Ethernet layer through a network controller. This application embodiment uses the TCP protocol to announce local CXL device information, which offers high security and allows for real-time announcement of device status.

[0100] The technical solutions of this application differ from related technologies in at least the following ways: 1) The transmission entities are different. In related technologies, the transmission entities are computing nodes and memory nodes, while in this application, the transmission entity is a computing node. 2) The transmission content is different. Related technologies do not define the data frame format in detail, while this application designs a data frame format for transmission between network cards. 3) The data packet processing flow before transmission is different. In related technologies, packets are encapsulated and decapsulated on the control chip, and the network card does not have encapsulation and decapsulation functions. In this application, CXL packets can be encapsulated and decapsulated on the NIC.

[0101] Those skilled in the art will understand that, in the above-described method of the specific implementation, the order in which each step is written does not imply a strict execution order and does not constitute any limitation on the implementation process. The specific execution order of each step should be determined by its function and possible internal logic.

[0102] Figure 7 This is a schematic diagram of the data transmission device applied to the first computing node according to an embodiment of this application, as shown below. Figure 7 As shown, the device includes:

[0103] The receiving module 701 is used to receive the first information required to access the target fast computing link CXL device in the second computing node;

[0104] The first processing module 702 is configured to, when a hot-add event of a first CXL device is detected in the first computing node, perform a hot-add operation of the first CXL device; obtain a first data packet by accessing the first CXL device; and send the first data packet to the target CXL device of the second computing node according to the first information.

[0105] In some embodiments, the first processing module 702 is further configured to configure the DVSEC of the first CXL device after performing a hot-add operation on the first CXL device, and notify the operating system of the first computing node of the transport attribute information of the first CXL device.

[0106] In some embodiments, the first processing module 702 is configured to configure the DVSEC of the first CXL device, including: configuring the DVSEC of the first CXL device on the first CXL device and associated devices through sensing software, wherein the associated devices include at least one of a switch and a host bridge.

[0107] In some embodiments, the receiving module 701 is further configured to establish a network connection between the first computing node and the second computing node via a first controller before receiving the first information required to access the target CXL device in the second computing node. The first controller is configured to obtain the Internet Protocol IP addresses assigned by the network controller to the first computing node and the second computing node, and the network controller is configured to establish a basic network connection with the first computing node and the second computing node.

[0108] In some embodiments, the receiving module 701 is configured to receive first information required to access a target CXL device in a second computing node, including receiving the first information sent by the second computing node through the first controller.

[0109] In some embodiments, the first processing module 702 is configured to send the first data packet to a target CXL device of the second computing node, including: sending the Ethernet packet to the target CXL device when the first data packet is carried in an Ethernet packet, wherein the Ethernet packet includes a header and body data, the header is used to indicate at least the packet type and unique identifier of the Ethernet packet, and the body data includes at least one frame of payload.

[0110] In practical applications, the receiving module 701 and the first processing module 702 can be implemented based on a processor and a communication device.

[0111] Figure 8 This is a schematic diagram of the data transmission device applied to the second computing node according to an embodiment of this application, as shown below. Figure 8 As shown, the device includes:

[0112] The sending module 801 is used to send the first information required by the target CXL device in the second computing node to the first computing node;

[0113] The second processing module 802 is configured to receive a first data packet sent from the first computing node. The first computing node is configured to execute a hot-add operation of the first CXL device when it receives the first information and detects a hot-add event of the first CXL device in the first computing node; obtain the first data packet by accessing the first CXL device; and send the first data packet to the second computing node.

[0114] In some embodiments, the second processing module 802 is configured to receive a first data packet sent from the first computing node, including: receiving an Ethernet packet sent by the first computing node using its own network interface card (NIC), decapsulating the Ethernet packet to obtain the first data packet;

[0115] The second processing module 802 is further configured to, after obtaining the first data packet, route the first data packet to the target CXL device when modifying the destination address of the first data packet to the address of the target CXL device, or when modifying the device identifier in the first data packet to the device identifier of the target CXL device.

[0116] In practical applications, the sending module 801 and the second processing module 802 can be implemented based on a processor and a communication device.

[0117] It should be noted that the description of the above device embodiments is similar to the description of the above method embodiments, and has similar beneficial effects. For technical details not disclosed in the device embodiments of this application, please refer to the description of the method embodiments of this application for understanding.

[0118] It should be noted that, in the embodiments of this application, if the above methods are implemented as software functional modules and sold or used as independent products, they can also be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the embodiments of this application, or the part that contributes to the prior art, can be embodied in the form of a software product. This computer software product is stored in a storage medium and includes several instructions to cause a computer device (which may be a terminal, server, etc.) to execute all or part of the methods described in the various embodiments of this application. The aforementioned storage medium includes various media capable of storing program code, such as USB flash drives, portable hard drives, read-only memory (ROM), magnetic disks, or optical disks. Thus, the embodiments of this application are not limited to any specific hardware and software combination.

[0119] Correspondingly, this application embodiment further provides a computer program product, the computer program product including computer executable instructions, which are used to implement any of the data transmission methods provided in this application embodiment.

[0120] Accordingly, this application embodiment further provides a computer storage medium storing computer-executable instructions, which are used to implement any of the data transmission methods provided in the above embodiments.

[0121] This application also provides an electronic device. Figure 9 This is a schematic diagram of the composition structure of an electronic device provided in an embodiment of this application, such as... Figure 9 As shown, the electronic device 90 may include:

[0122] Memory 901 is used to store executable instructions;

[0123] The processor 902 is used to implement any of the above-described data transmission methods when executing executable instructions stored in the memory 901.

[0124] The processor 902 mentioned above can be at least one of ASIC, DSP, DSPD, PLD, FPGA, CPU, controller, microcontroller, and microprocessor.

[0125] The aforementioned computer-readable storage medium and memory 902 may be a read-only memory (ROM), a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a magnetic random access memory (FRAM), a flash memory, a magnetic surface memory, an optical disc, or a compact disc read-only memory (CD-ROM), etc.; or it may be various terminals that include one or any combination of the above-mentioned memories, such as mobile phones, computers, tablet devices, personal digital assistants, etc.

[0126] In some embodiments, the functions or modules of the apparatus provided in this application can be used to perform the methods described in the above method embodiments. The specific implementation can be referred to the description of the above method embodiments, and for the sake of brevity, it will not be repeated here.

[0127] The description of the various embodiments above tends to emphasize the differences between the various embodiments. The similarities or similarities between them can be referred to, and for the sake of brevity, they will not be repeated here.

[0128] The methods disclosed in the various method embodiments provided in this application can be arbitrarily combined to obtain new method embodiments without conflict.

[0129] The features disclosed in the various product embodiments provided in this application can be arbitrarily combined without conflict to obtain new product embodiments.

[0130] The features disclosed in the various method or device embodiments provided in this application can be arbitrarily combined without conflict to obtain new method or device embodiments.

[0131] Through the above description of the embodiments, those skilled in the art can clearly understand that the methods of the above embodiments can be implemented by means of software plus necessary general-purpose hardware platforms. Of course, they can also be implemented by hardware, but in many cases the former is a better implementation method. Based on this understanding, the technical solution of this application, in essence, or the part that contributes to the prior art, can be embodied in the form of a software product. This computer software product is stored in a storage medium (such as ROM / RAM, magnetic disk, optical disk) and includes several instructions to cause a terminal (which may be a mobile phone, computer, server, air conditioner, or network device, etc.) to execute the methods described in the various embodiments of this application.

[0132] The embodiments of this application have been described above with reference to the accompanying drawings. However, this application is not limited to the specific embodiments described above. The specific embodiments described above are merely illustrative and not restrictive. Those skilled in the art can make many other forms under the guidance of this application without departing from the spirit and scope of the claims. All of these forms are within the protection scope of this application.

Claims

1. A data transmission method, characterized in that, Applied to the first computing node, the method includes: Receive the first information required to access the target fast computing link CXL device in the second computing node; When a hot-add event for a first CXL device is detected in the first computing node, a hot-add operation for the first CXL device is executed; wherein, the first CXL device includes a CXL memory device, and the hot-add operation includes configuring the configuration space of the first CXL device; Obtain the first data packet by accessing the first CXL device; Based on the first information, the first data packet is sent to the target CXL device of the second computing node; The step of sending the first data packet to the target CXL device of the second computing node includes: sending the Ethernet packet to the target CXL device while carrying the first data packet in an Ethernet packet, wherein the Ethernet packet includes a header and body data, the header is used to indicate at least the packet type and unique identifier of the Ethernet packet, and the body data includes at least one frame of payload; wherein the Ethernet packet obtained by encapsulating the first data packet is a COE packet, and the header of the COE packet includes a flag field, a data packet sequence number field, and a reserved field.

2. The method according to claim 1, characterized in that, After performing the hot-add operation on the first CXL device, the method further includes: configuring the specified vendor-specific extension capability DVSEC of the first CXL device, and notifying the operating system of the first compute node of the transport attribute information of the first CXL device.

3. The method according to claim 2, characterized in that, Configuring the DVSEC of the first CXL device includes: configuring the DVSEC of the first CXL device on the first CXL device and associated devices through sensing software, wherein the associated devices include at least one of a switch and a host bridge.

4. The method according to any one of claims 1 to 3, characterized in that, Before receiving the first information required to access the target CXL device in the second computing node, the method further includes: establishing a network connection between the first computing node and the second computing node through a first controller, wherein the first controller is configured to obtain Internet Protocol IP addresses assigned by a network controller to the first computing node and the second computing node, and the network controller is configured to establish a basic network connection with the first computing node and the second computing node.

5. The method according to claim 4, characterized in that, The first information required to receive access to the target CXL device in the second computing node includes: Receive the first information sent by the second computing node through the first controller.

6. A data transmission method, characterized in that, When applied to a second computing node, the method includes: Send the first information required by the target fast computing link CXL device in the second computing node to the first computing node; The first computing node receives a first data packet from the first computing node. Upon receiving the first information and detecting a hot-add event for a first CXL device in the first computing node, the first computing node performs a hot-add operation on the first CXL device. The first CXL device includes a CXL memory device, and the hot-add operation includes configuring the configuration space of the first CXL device. The first data packet is obtained by accessing the first CXL device. The first data packet is then sent to the second computing node. Receiving the first data packet sent from the first computing node includes: using its own network interface card (NIC) device to receive the Ethernet packet sent by the first computing node, decapsulating the Ethernet packet to obtain the first data packet; wherein the Ethernet packet includes a header and body data, the header is used to indicate at least the packet type and unique identifier of the Ethernet packet, and the body data includes at least one frame of payload; wherein the Ethernet packet obtained by encapsulating the first data packet is a COE packet, and the header of the COE packet includes a flag field, a data packet sequence number field, and a reserved field.

7. The method according to claim 6, characterized in that, After obtaining the first data packet, the method further includes: when the destination address of the first data packet is modified to the address of the target CXL device, or when the device identifier in the first data packet is modified to the device identifier of the target CXL device, routing the first data packet to the target CXL device.

8. A data transmission device, characterized in that, The device, applied in a first computing node, includes: The receiving module is used to receive the first information required to access the target fast computing link CXL device in the second computing node; A first processing module is configured to execute a hot-add operation of the first CXL device when a hot-add event of a first CXL device is detected in the first computing node; wherein the first CXL device includes a CXL memory device, and the hot-add operation includes configuring the configuration space of the first CXL device; obtaining a first data packet by accessing the first CXL device; and sending the first data packet to the target CXL device of the second computing node according to the first information. The first processing module is further configured to send the Ethernet packet to the target CXL device when the first data packet is carried in an Ethernet packet, wherein the Ethernet packet includes a header and body data, the header is used to indicate at least the packet type and unique identifier of the Ethernet packet, and the body data includes at least one frame of payload; wherein the Ethernet packet obtained by encapsulating the first data packet is a COE packet, and the header of the COE packet includes a flag field, a data packet sequence number field, and a reserved field.

9. A data transmission device, characterized in that, The device, used in a second computing node, includes: The sending module is used to send the first information required by the target fast computing link CXL device in the second computing node to the first computing node; The second processing module is configured to receive a first data packet sent from the first computing node. The first computing node is configured to execute a hot-add operation on the first CXL device upon receiving the first information and detecting a hot-add event of a first CXL device in the first computing node. The first CXL device includes a CXL memory device, and the hot-add operation includes configuring the configuration space of the first CXL device; obtaining the first data packet by accessing the first CXL device; and sending the first data packet to the second computing node. The second processing module is further configured to receive Ethernet packets sent by the first computing node using its own network interface card (NIC), and decapsulate the Ethernet packets to obtain the first data packet; wherein the Ethernet packet includes a header and body data, the header is used to indicate at least the packet type and unique identifier of the Ethernet packet, and the body data includes at least one frame of payload; wherein the Ethernet packet obtained by encapsulating the first data packet is a COE packet, and the header of the COE packet includes a flag field, a data packet sequence number field, and a reserved field.

10. An electronic device, characterized in that, The electronic device includes a processor and a memory for storing computer programs capable of running on the processor; wherein, The processor is used to run the computer program to perform the method according to any one of claims 1 to 7.

11. A computer storage medium having a computer program stored thereon, characterized in that, When executed by a processor, the computer program implements the method described in any one of claims 1 to 7.

12. A computer program product, comprising a computer program, characterized in that, When the computer program is executed by a processor, it implements the method of any one of claims 1 to 7.

Citation Information

Patent Citations

  • Unlocking computing resources for decomposable data centers

    US11601377B1