Data transmission methods, transmission channel allocation methods, computing devices and management devices

By allocating target transmission channels to cluster computing devices through CXL storage devices and management units, the problems of slow data transmission speed and high cost between servers are solved, achieving efficient and low-latency data transmission and improving cluster performance.

CN117997900BActive Publication Date: 2025-10-28XFUSION DIGITAL TECH CO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202311786648.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2023-12-22
Publication Date
2025-10-28
Estimated Expiration
2043-12-22

AI Technical Summary

Technical Problem

In a cluster, slow data transmission speeds and high network latency between servers limit the overall performance of the cluster, and traditional network transmission protocols and high-configuration hardware increase data transmission costs.

Method used

Using the target storage space provided by the CXL storage device, the management unit allocates target transmission channels to the computing device to achieve bidirectional or multidirectional data transmission, avoids network transmission, uses the metadata of the storage block to record the transmission status, and supports parallel read and write operations.

Benefits of technology

It improves data transmission efficiency, reduces hardware configuration costs, and enhances the overall performance and data transmission speed of the cluster.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN117997900B_ABST
    Figure CN117997900B_ABST
Patent Text Reader

Abstract

This application discloses a data transmission method, a transmission channel allocation method, a computing device, and a management device, relating to the field of computer technology, which can improve data transmission efficiency and enhance the overall performance of a cluster. The method includes: determining the state of a first storage block based on a receiver identifier recorded in the metadata area of ​​a first storage block in a target storage space; wherein the target storage space is used as a target transmission channel; the first storage block includes a data area for storing data blocks transmitted between computing devices, and the state of the first storage block includes an operable state or an inoperable state; when the state of the first storage block is operable, writing a first data block into the data area of ​​the first storage block, and recording the identifier of the first computing device as the sender identifier and the identifier of the target computing device as the receiver identifier in the metadata area of ​​the first storage block, so that the target computing device reads the first data block from the first storage block according to the receiver identifier.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This application relates to the field of computer technology, and in particular to data transmission methods, transmission channel allocation methods, computing devices and management devices. Background Art

[0002] With the rapid development of technology, the scale of clusters, from big data to artificial intelligence training clusters and high-performance computing clusters, is gradually expanding. As the number of servers in a cluster increases, the speed of data transmission between servers affects the overall performance of the cluster.

[0003] In related technologies, multiple servers in a cluster typically transmit data via network interface cards (NICs) installed on the servers. When servers transmit data via NICs and traditional networks, network transmission protocols need to be used and protocol conversion is required. Since network bandwidth and transmission speed are limited, if the amount of data to be transmitted is large, there will be problems such as slow data transmission speed and high network latency. Therefore, transmitting data via NICs will limit the overall performance of the cluster. Summary of the Invention

[0004] This application provides a data transmission method, a transmission channel allocation method, a computing device, and a management device, which can improve data transmission efficiency and enhance the overall performance of the cluster.

[0005] To achieve the above technical objectives, the embodiments of this application adopt the following technical solutions:

[0006] In a first aspect, embodiments of this application provide a data transmission method applied to a first computing device. The method includes: determining the state of a first storage block based on a receiver identifier recorded in the metadata area of ​​a first storage block of a target storage space; wherein the target storage space is a target transmission channel between the first computing device and a target computing device, the target computing device includes one or more target computing devices, and a CXL storage device including the target storage space is communicatively connected to both the first computing device and the target computing device; the first storage block includes a data area for storing data blocks transmitted between the computing devices, and the state of the first storage block includes an operable state or an inoperable state; when the state of the first storage block is operable, writing a first data block into the data area of ​​the first storage block, and recording the identifier of the first computing device as a sender identifier and the identifier of the target computing device as a receiver identifier in the metadata area of ​​the first storage block, so that the target computing device reads the first data block from the first storage block according to the receiver identifier.

[0007] Understandably, this method provides a data transmission channel through which the first computing device can transmit data with the target computing device. In this method, either the first computing device or the target computing device can flexibly configure the data transmission direction of each storage block in the target storage space, transmitting data to each other. Therefore, in this embodiment, the target transmission channel is a multi-directional data transmission channel, enabling bidirectional data transmission, providing flexibility, improving data transmission efficiency, and enhancing cluster performance.

[0008] In one possible implementation, if the target computing device includes multiple computing devices, the target transmission channel can realize one-to-many data transmission, which is flexible, improves data transmission efficiency, and enhances cluster performance.

[0009] In one possible implementation, the data recorded in the metadata area of ​​the first storage block is the metadata of the first storage block. Based on the sender identifier and receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space, the state of the first storage block is determined, including: obtaining the metadata of the first storage block recorded in the metadata area of ​​the first storage block; when there is no receiver identifier in the metadata of the first storage block, the state of the first storage block is determined to be an operable state.

[0010] Understandably, when the first computing device writes data to the storage block, it records the sender identifier (i.e., the identifier of the first computing device) and the receiver identifier (i.e., the identifier of the target computing device) in the storage block's metadata. After the target computing device reads the data from the storage block, it deletes the identifier of the target computing device (i.e., the receiver identifier) ​​from the storage block's metadata. Therefore, if the receiver identifier exists in the storage block's metadata, it indicates that the storage block has been written to and has not yet been read. If the receiver identifier does not exist in the storage block's metadata, it indicates that the storage block has not been written to or that the written data has been read. Thus, this method can quickly determine whether the storage block is in an operable state by checking whether the storage block's metadata contains a receiver identifier.

[0011] In another possible implementation, the target storage space includes a header field block and multiple storage blocks, the multiple storage blocks including a first storage block. The header field block is used to record metadata of the target storage space, the metadata of the target storage space including: the storage capacity of the multiple storage blocks; if the state of the first storage block is operable, before writing the first data block into the data area of ​​the first storage block, the method further includes: obtaining the storage capacity of the multiple storage blocks from the header field block; dividing the target data into multiple data blocks based on the storage capacity of each storage block; wherein the multiple data blocks include the first data block, and the storage capacity required by the first data block is less than or equal to the storage capacity of the first storage block.

[0012] Understandably, the first computing device divides the target data to be transmitted into multiple data blocks based on the number and capacity of storage blocks, so that each data block can be written into each storage block. The subsequent target computing device can read data blocks from each storage block, realizing the parallel execution of read and write operations and improving data transmission efficiency.

[0013] In another possible implementation, the method further includes: setting an identifier for the first data block; and after writing the first data block into the data area of ​​the first storage block when the first storage block is in an operable state, the method further includes: recording the identifier of the first data block in the metadata area of ​​the first storage block.

[0014] Understandably, if the first computing device divides the target data into multiple data blocks but does not write them to the target storage space in the order of the data blocks, it can identify the multiple data blocks to avoid confusing their order. The target computing device can also, after reading the multiple data blocks, concatenate them into complete target data based on the identifier of each data block.

[0015] In another possible implementation, both the first computing device and the target computing device are connected to a management unit. The management unit manages the storage space of one or more CXL storage devices. Before determining the status of the first storage block based on the sender identifier and receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space, the method further includes: obtaining information about the target transmission channel from the management unit; the information about the target transmission channel includes: the identifier of the first computing device, the identifier of the target computing device, the identifier of the target transmission channel, the address of the target storage space, and the capacity of the target storage space.

[0016] Understandably, the management unit is used to manage the storage space of the CXL storage device. By obtaining the target transmission channel from the management unit, a dedicated data transmission channel can be obtained. This transmission channel has the advantages of high transmission speed, high bandwidth and low latency. Therefore, using this transmission channel can improve data transmission efficiency.

[0017] Secondly, embodiments of this application provide a data transmission method applied to a target computing device. The method includes: determining the state of a first storage block based on a receiver identifier recorded in the metadata region of a first storage block of a target storage space; wherein the target storage space is a target transmission channel allocated to a first computing device and a target computing device, and a CXL storage device including the target storage space is communicatively connected to both the first computing device and the target computing device; the first storage block includes a data region for storing data blocks transmitted between the computing devices, and the state of the first storage block includes an operable state or an inoperable state; when the state of the first storage block is operable, reading a first data block in the data region of the first storage block and deleting the identifier of the target computing device recorded at the receiver identifier in the metadata region of the first storage block.

[0018] It is understood that the target computing device obtains the first data block sent by the first computing device from the first storage block in the target transmission channel, thereby realizing data transmission with the first computing device. This method does not require data transmission through a network, and has the advantages of fast transmission speed, high bandwidth and low latency. In addition, this method does not require high-configuration network cards and switches. Therefore, the method proposed in this application embodiment can reduce hardware configuration costs.

[0019] In one possible implementation, the data recorded in the metadata area of ​​the first storage block is the metadata of the first storage block. Based on the sender identifier and receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space, the state of the first storage block is determined, including: obtaining the metadata of the first storage block recorded in the metadata area of ​​the first storage block; when the receiver identifier of the first storage block is recorded with the identifier of the target computing device, the target computing device determines that the state of the first storage block is an operable state.

[0020] Understandably, when the first computing device writes data to the storage block, it records the sender identifier (i.e., the identifier of the first computing device) and the receiver identifier (i.e., the identifier of the target computing device) in the metadata of the storage block. After the target computing device reads the data in the storage block, it deletes the identifier of the target computing device (i.e., the receiver identifier) ​​from the metadata of the storage block. Therefore, if the receiver identifier exists in the metadata, it indicates that the storage block has been written with data and has not yet been read. If the receiver identifier does not exist in the metadata, it indicates that the storage block has not been written with data or the written data has been read. Therefore, this method can quickly determine whether the storage block is in an operable state by whether there is a receiver identifier in the metadata.

[0021] In another possible implementation, the metadata area of ​​the first storage block records the identifier of the first data block, and the method further includes: when reading the first data block from the data area of ​​the first storage block, obtaining the identifier of the first data block from the metadata area of ​​the first storage block accordingly.

[0022] It is understandable that, since the target data includes multiple data blocks, and the first data block is any one of the multiple data blocks, when the target computing device acquires the data blocks, it can acquire the identifier of the data block and, after acquiring all the multiple data blocks of the target data, concatenate the multiple data blocks into the complete target data based on the identifier of the multiple data blocks.

[0023] In another possible implementation, the method further includes: after obtaining multiple data blocks of the target data and the identifiers of the multiple data blocks, concatenating the multiple data blocks into the target data based on the identifier of each data block.

[0024] It is understandable that the target computing device obtains multiple data blocks in a certain order. In order to avoid obtaining the target data in the correct order, multiple data blocks can be concatenated based on the identifier of each data block.

[0025] In another possible implementation, both the first computing device and the target computing device are connected to a management unit. The management unit manages the storage space of one or more CXL storage devices. Before determining the status of the first storage block based on the sender identifier and receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space, the method further includes: obtaining information about the target transmission channel from the management unit; the information about the target transmission channel includes: the identifier of the first computing device, the identifier of the target computing device, the identifier of the target transmission channel, the address of the target storage space, and the capacity of the target storage space.

[0026] Understandably, the management unit is used to manage the storage space of the CXL storage device. By obtaining the target transmission channel from the management unit, a dedicated data transmission channel can be obtained. This transmission channel has the advantages of high transmission speed, high bandwidth and low latency. Therefore, using this transmission channel can improve data transmission efficiency.

[0027] Thirdly, embodiments of this application provide a transmission channel allocation method applied to a management unit. The management unit is connected to both a first computing device and a target computing device. The target computing device includes one or more target computing devices. The management unit manages the CXL storage space of one or more CXL storage devices. The method includes: allocating target storage space within the CXL storage space to the first computing device and the target computing device based on data transmission requirements between them; connecting the CXL storage device to which the target storage space belongs to both the first computing device and the target computing device, and using the target storage space as a target transmission channel for data transmission between the first computing device and the target computing device; dividing the target storage space into header field blocks and storage blocks; wherein... The header field block is used to record the metadata of the target storage space. The metadata of the target storage space includes: the identifier of the target transmission channel, the storage capacity of the target storage space, and the storage capacity of the storage block. The storage block includes a metadata area and a data area. The metadata area in each storage block is used to record the metadata corresponding to each storage block. The metadata corresponding to each storage block includes: the sender identifier, the receiver identifier, and the data block identifier. The data area is used to store at least a portion of the data blocks in the target data transmitted between computing devices. Information about the target transmission channel is sent to the first computing device and the target computing device. The information about the target transmission channel includes: the identifier of the first computing device, the identifier of the target computing device, the identifier of the target transmission channel, the address of the target storage space, and the capacity of the target storage space.

[0028] It is understood that in the transmission channel allocation method proposed by the management unit in this application embodiment, no sending end and receiving end are set in the target storage space allocated by the management unit. This indicates that the transmission direction of the target storage space is not fixed. After the first computing device or the target computing device obtains the target transmission channel, they can transmit data to each other based on their respective data transmission needs. In addition, if the target computing device includes multiple computing devices, the first computing device can transmit data to multiple computing devices simultaneously through the target transmission channel. Therefore, in this application embodiment, the target transmission channel can be used as a bidirectional data transmission channel or as a one-to-many data transmission channel to realize multidirectional data transmission and improve data transmission efficiency.

[0029] In another possible implementation, there are multiple storage blocks, which are used to enable the first computing device to divide the target data into multiple data blocks based on the storage capacity of the multiple storage blocks.

[0030] Understandably, the management unit divides the target storage space into multiple storage blocks, allowing the first computing device and the target computing device to perform read and write operations in parallel, thereby improving read and write efficiency.

[0031] Fourthly, embodiments of this application provide a computing device, wherein the computing device is applied to various modules of the data transmission method of the first aspect or any possible implementation of the first aspect; or, the computing device is applied to various modules of the data transmission method of the second aspect or any possible implementation of the second aspect.

[0032] Fifthly, embodiments of this application provide a management device, wherein the management device is applied to various modules of the transmission channel allocation method of the third aspect or any possible implementation of the third aspect.

[0033] Sixthly, embodiments of this application provide a computing device including a memory and a processor. The memory and the processor are coupled; the memory is used to store computer program code, which includes computer instructions. When the processor executes the computer instructions, the computing device performs a data transmission method as described in the first aspect and any possible implementation thereof; or, when the processor executes the computer instructions, the computing device performs a data transmission method as described in the second aspect and any possible implementation thereof.

[0034] In a seventh aspect, embodiments of this application provide a management device including a processor. The processor is coupled to a memory; the memory stores computer program code, which includes computer instructions. When the processor executes the computer instructions, it causes the computing device to perform a data transfer method as described in the third aspect and any possible implementation thereof.

[0035] Eighthly, embodiments of this application provide a computer-readable storage medium including computer instructions. These computer instructions, when executed on a computing device, cause the computing device to perform a data transmission method as described in the first aspect and any possible implementation thereof; or, when executed on a computing device, cause the computing device to perform a data transmission method as described in the second aspect and any possible implementation thereof; or, when executed on a management device, cause the management device to perform a transmission channel allocation method as described in the third aspect and any possible implementation thereof.

[0036] Ninthly, embodiments of this application provide a computer program product comprising computer instructions. When the computer instructions are executed on a computing device, they cause the computing device to perform a data transmission method as described in the first aspect and any possible implementation thereof; or, when the computer instructions are executed on a computing device, they cause the computing device to perform a data transmission method as described in the second aspect and any possible implementation thereof; or, when the computer instructions are executed on a management device, they cause the management device to perform a transmission channel allocation method as described in the third aspect and any possible implementation thereof.

[0037] For a detailed description of aspects four to nine and their various implementations in the embodiments of this application, please refer to the detailed descriptions in aspects one, two, or three and their various implementations; and for a detailed description of the beneficial effects of aspects four to nine and their various implementations, please refer to the beneficial effect analyses in aspects one, two, or three and their various implementations, which will not be repeated here.

[0038] These or other aspects of the embodiments of this application will become more apparent in the following description. Attached Figure Description

[0039] Figure 1 A schematic diagram of a system architecture involved in a data transmission method and a transmission channel allocation method provided in the embodiments of this application;

[0040] Figure 2 A schematic diagram of a system architecture involved in another data transmission method and transmission channel allocation method provided in the embodiments of this application;

[0041] Figure 3 A flowchart of a transmission channel allocation method provided in this application embodiment;

[0042] Figure 4 This application provides a schematic diagram of the structure of a target storage space according to an embodiment of the present application;

[0043] Figure 5 A flowchart of a data transmission method provided in this application embodiment;

[0044] Figure 6 A flowchart providing another data transmission method for embodiments of this application;

[0045] Figure 7 A flowchart providing another data transmission method for embodiments of this application;

[0046] Figure 8 A data transmission comparison diagram is provided for an embodiment of this application;

[0047] Figure 9 This is a schematic diagram of the structure of a computing device provided in an embodiment of this application;

[0048] Figure 10 This is a schematic diagram of the structure of another computing device provided in an embodiment of this application;

[0049] Figure 11 A schematic diagram of the structure of a management device provided in an embodiment of this application;

[0050] Figure 12 This is a schematic diagram of the structure of a device provided in an embodiment of this application. Detailed Implementation

[0051] For ease of understanding, the relevant terms used in the embodiments of this application will be briefly introduced below:

[0052] (1) Compute Express Link (CXL) is a new type of high-speed interconnect technology designed to provide higher data throughput and lower latency to meet the needs of modern computing and storage systems.

[0053] (2) CXL storage device: A storage device built on CXL technology, which has the feature of unlimited expansion and can meet the needs of data center resource sharing, memory pooling and efficient computing scheduling.

[0054] Hereinafter, the terms "first," "second," and "third," etc., are used for descriptive purposes only and should not be construed as indicating or implying relative importance or implicitly specifying the number of technical features indicated. Therefore, a feature defined with "first," "second," or "third," etc., may explicitly or implicitly include one or more of that feature.

[0055] In the description of the embodiments in this application, unless otherwise stated, " / " means "or". For example, A / B can mean A or B. "And / or" in this document is merely a description of the relationship between related objects, indicating that three relationships can exist. For example, A and / or B can represent: A existing alone, A and B existing simultaneously, and B existing alone. Furthermore, "at least one" refers to one or more, and "multiple" refers to two or more.

[0056] In related technologies, data transmission between servers in a cluster primarily relies on network interface cards (NICs) installed on the servers, transmitting data over a network. Because data transmission in this method is network-based, it requires the use of network transmission protocols and protocol conversion, a complex process prone to latency. Furthermore, in large clusters with significant data transmission demands, this places demands on the hardware specifications of the NICs, requiring high-configuration switches and high network speeds, thus increasing data transmission costs between servers. Therefore, using NICs for large-scale data transmission suffers from slow data transfer speeds, high network latency, increased data transmission costs, and limitations on overall cluster performance.

[0057] Based on this, this application proposes a data transmission method and a transmission channel allocation method. In this data transmission method, a first computing device can send target data to a target computing device through a target storage space. Specifically, the target storage space is divided into one or more storage blocks. Each storage block includes a metadata area and a data area. After determining that the state of any storage block (e.g., the first storage block) is operable, the first computing device writes the first data block into that storage block. After writing the data into the first storage block, the first computing device writes a sender identifier and a receiver identifier into the metadata area of ​​the first storage block. The target computing device can then read the first data block from the storage block.

[0058] Understandably, this method provides a data transmission channel through which the first computing device can transmit data with the target computing device. In this method, the first computing device or the target computing device can flexibly configure the data transmission direction of each storage block in the target storage space, transmitting data to each other. If the target computing device includes multiple computing devices, the target transmission channel can achieve one-to-many data transmission. Therefore, in this embodiment, the target transmission channel is a multi-directional data transmission channel, capable of bidirectional data transmission or one-to-many data transmission, offering flexibility, improving data transmission efficiency, and enhancing cluster performance.

[0059] In addition, the first computing device and the target computing device realize data transmission through the target storage space provided by the CXL storage device. This method does not require data transmission through a network and has the advantages of fast transmission speed, high bandwidth and low latency. This method also does not require high-configuration network cards and switches. Therefore, the method proposed in this application embodiment can reduce hardware configuration costs.

[0060] The embodiments of this application will now be described in detail with reference to the accompanying drawings.

[0061] Please refer to Figure 1 This diagram illustrates a system architecture related to the data transmission method and transmission channel allocation method provided in the embodiments of this application. Figure 1 As shown, the system architecture may include: multiple computing devices 110, CXL storage devices 120 and CXL connectivity devices 130.

[0062] Multiple computing devices 110 are communicatively connected to CXL storage devices 120 via CXL connection device 130.

[0063] In one implementation, each computing device 110 is connected to the high-speed serial computer expansion bus (Peripheral Component Interconnect Express, PCIe) interface of the CXL storage device 120 via the CXL connection device 130 for communication. Each computing device 110 communicates with the CXL storage device 120 via CXL protocols, such as the input / output protocol (CXL.io), the cache access protocol (CXL.cache), and the memory access protocol (CXL.mem).

[0064] Computing device 110 is a computing device with data processing, logical operation, and storage functions. For example, computing device 110 may include computing devices such as servers, tablets, desktop computers, laptops, notebook computers, computing nodes, or netbooks. The server may be a rack server, blade server, or tower server, among other different types. The server may include one or more computing nodes, each computing node including at least one central processing unit (CPU). When the server includes multiple computing nodes, the multiple CPUs in the multiple computing nodes share a single operating system.

[0065] CXL storage device 120 is used to provide storage space and serve as a data transfer channel between any two computing devices among multiple computing devices 110. The system architecture shown in the embodiments of this application may include one CXL storage device 120, or multiple CXL storage devices 120. The storage space provided by one or more storage devices 120 constitutes CXL storage space, which may also be referred to as a CXL storage pool, and is managed uniformly by a management unit.

[0066] If there are multiple CXL storage devices 120, the multiple storage devices 120 are respectively connected to multiple computing devices 110. Figure 1 The following example illustrates how a CXL storage device 120 is connected to multiple computing devices 110.

[0067] CXL storage device 120 may include CXL controller 121 and memory 122.

[0068] The CXL controller 121 is used to receive requests from any computing device 110 to write data to the storage space provided by the memory 122, or to read data from the storage space provided by the memory 122, so as to realize the function of the storage space of the CXL storage device 120 as a data transmission channel.

[0069] For example, the CXL controller 121 may be a control chip integrated in the CXL storage device 120, which may also be called a CXL memory expander chip, a CXL memory expander controller, or a CXL memory expander pooling chip.

[0070] The memory 122 is the actual physical carrier that provides storage space in the CXL storage device 120, and can provide storage space as a data transmission channel between any two computing devices 110.

[0071] For example, memory 122 may include dual inline memory module (DIMM), dynamic random access memory (DRAM), synchronous dynamic random access memory (SDRAM), solid state disk (SSD), or persistent memory (PMEM).

[0072] In this embodiment of the application, the number of the above-mentioned memory 122 can be one or more. When there is one memory, the memory can be a DIMM or an SSD. When there are multiple memory 122, all of the multiple memory 122 can be DIMM, or all of the multiple memory 122 can be SSD, or a portion of the multiple memory 122 can be DIMM and a portion can be SSD.

[0073] Of course, in other embodiments, when there is only one memory 122, the memory 122 can also be other types of memory such as SDRAM or PMEM. When there are multiple memories 122, all memories 122 can be other types of memory such as SDRAM or PMEM, or the multiple memories 122 can include at least two of SDRAM, PMEM, DIMM, or SSD. The above flexible implementation and deployment methods can make the CXL storage device 120 compatible with more media types of memory. The embodiments of this application do not limit the media type, number, and deployment method of the memory.

[0074] Generally, since volatile storage media such as DIMM, DRAM or SDRAM have the characteristics of fast data read and write, volatile storage media can be selected as memory 122 in order to improve the speed between computing devices 110.

[0075] CXL connection device 130 provides an expansion interface that allows multiple computing devices 110 to be connected to CXL storage device 120. CXL connection device 130 can be configured independently or integrated into any one of the computing devices 110 or into CXL storage device 120.

[0076] For example, when the CXL connection device 130 is configured independently, it can be a CXL switch, which includes a CXL switching chip; or it can be a multi-head single logic device (MH-SLD) CXL memory expansion card. When the CXL connection device 130 is a multi-head CXL memory expansion card, it can be integrated into the CXL storage device 120, and the multi-head CXL memory expansion card can act as the CXL controller for the CXL storage device 120. The multi-head CXL memory expansion card can be connected to multiple computing devices respectively. When there is only one CXL storage device, the multi-head CXL memory expansion card of that CXL storage device is connected to multiple computing devices respectively. When there are multiple CXL storage devices, the multi-head CXL memory expansion card of each CXL storage device is connected to at least two of the multiple computing devices, and the computing devices connected to each CXL storage device can be the same.

[0077] When the CXL connectivity device 130 is integrated into a computing device, the CXL connectivity device 130 can be a CXL switch, a CXL switch chip, or a multi-head CXL memory expansion card. In addition to its expansion capabilities, the CXL switch also has a processor with processing capabilities, such as the ability to run a fabric manager (FM).

[0078] In some other embodiments, the number of CXL connection devices 130 may be one or more, and multiple CXL connection devices 130 may connect to multiple CXL storage devices 120.

[0079] In some other embodiments, such as Figure 2 As shown, Figure 2 Multiple CXL connection devices 130 are shown connected to multiple CXL storage devices 120 respectively. Figure 2 It also includes 140 management devices, running FM. From Figure 2As can be seen, multiple computing devices 110 are connected to some CXL storage devices 120 via CXL connection devices 130. This application embodiment does not limit the number or connection method of CXL storage devices 120, CXL connection devices 130, and computing devices 110 in the system.

[0080] FM, a process for managing the CXL storage space provided by one or more CXL storage devices 120, can allocate storage space for any two computing devices 110 as a transmission channel. Optionally, FM can also reclaim the transmission channel allocated to the two computing devices 110 after data transfer between them is completed.

[0081] In some implementations, FM divides the storage space used as the transmission channel into header field blocks and storage blocks. The header field blocks record the metadata of the target storage space. Each of the multiple storage blocks has a metadata area and a data area. The metadata area is used to record the metadata of each storage block, and the data area is used to store the data blocks that the computing device needs to transmit. FM enables the first computing device and the target computing device to achieve synchronous reading and writing of data, as well as multi-directional data transmission, through header field blocks and multiple storage blocks.

[0082] In this embodiment, FM can run in the CPU or baseboard management controller (BMC) of any computing device 110, or in the processor of CXL connection device 130. Alternatively, FM can run in the CPU, BMC, or controller of an independent device (e.g., management device 140). This embodiment does not limit the specific running location of FM.

[0083] It should be noted that different computing devices use different names for BMC. For example, some computing devices call it BMC, some call it iLO (integrated lights-out), and others call it integrated Dell remote access controller (iDRAC). Regardless of whether it is called BMC, iLO, or iDRAC, it can be understood as the BMC in the embodiments of this invention.

[0084] In some implementations, if FM runs on any one of the multiple computing devices 110, other computing devices 110 can communicate with the computing device running FM via a network and / or a 485 link (a link using the RS-485 serial bus standard). CXL connection device 130 connects the multiple computing devices 110 and CXL storage device 120 respectively via a bus (e.g., UART, Universal Asynchronous Receiver / Transmitter (UART) Inter-Integrated Circuit (IIC) bus, or System Management Bus (SMBus)).

[0085] In other embodiments, if FM is running in CXL connection device 130, CXL connection device 130 is connected to multiple computing devices 110 and CXL storage devices 120 via a bus (e.g., UART, IIC or SMBUS bus).

[0086] In one application scenario, FM allocates target storage space to the first and target computing devices based on their data transmission requirements, serving as a target transmission channel between these multiple computing devices. FM divides the target storage space into header field blocks and storage blocks, recording metadata about the target storage space in the header field blocks. This metadata includes the identifier of the target transmission channel, the storage capacity of the target storage space, and the storage capacities of the multiple storage blocks. The first computing device divides the target data into multiple data blocks based on the storage capacity of each storage block. During data transmission, the first computing device sequentially writes these data blocks into the multiple storage blocks. After the first computing device writes data, the target computing device begins reading data blocks from the multiple storage blocks. Once the first computing device has written all the target data to the target storage space, and the target computing device has read all the target data, the data transmission between the first and target computing devices is complete.

[0087] The data transmission method and transmission channel allocation method provided in the embodiments of this application are described below:

[0088] The method proposed in this application mainly includes the following two processes:

[0089] In the first process, the transmission channel allocation method proposed in this application embodiment is mainly used to allocate transmission channels to any number of computing devices in a cluster.

[0090] In the second process, the data transmission method proposed in this application embodiment is mainly used for data transmission between multiple computing devices that have obtained a transmission channel.

[0091] The first process is described below; please refer to it. Figure 3 This is a flowchart illustrating a transmission channel allocation method provided in an embodiment of this application. The method is applied to a management unit, for example... Figure 1 The FM shown here, the management unit, and both the first computing device and the target computing device are connected to one or more CXL storage devices. For example... Figure 3 As shown, the method may include S101-S105.

[0092] S101: Based on the data transfer requirements between the first computing device and the target computing device, the management unit allocates the target storage space in the CXL storage space to the first computing device and the target computing device.

[0093] The target computing device includes one or more second computing devices.

[0094] The CXL storage device to which the target storage space belongs is connected to both the first computing device and the target computing device. The target storage space is used as a target transmission channel for data transmission between the first computing device and the target computing device.

[0095] Data transmission requirements refer to the need for data transmission channels. Generally, computing devices in a cluster have data transmission requirements when processing tasks issued by applications in upper-layer clients.

[0096] Data transmission requirements include the identification of multiple computing devices that need to transmit data, and optionally, the capacity of the transmission channel required for data transmission.

[0097] The data transmission requirements between the first computing device and the target computing device may include: the identifier of the first computing device, the identifier of the target computing device, and the capacity of the transmission channel required by the first computing device and the target computing device.

[0098] For example, the first computing device is identified as "computing device 1", the target computing devices are identified as "computing device 2" and "computing device 3", and the capacity of the transmission channel required for the first computing device to transmit data to the target computing device is 10G.

[0099] The identifier of a computing device can be information that identifies the computing device, such as the computing device number, hostname, Internet Protocol (IP) address, or Media Access Control (MAC) address.

[0100] The number of the computing device can be a number uniformly assigned by the management unit to the connected computing device when the computing device is connected to the management unit. Assigning a number to the computing device facilitates the management of the transmission channels of each computing device when allocating transmission channels to the computing device later.

[0101] The capacity of the transmission channel required for data transmission can be a default value set in the management unit, or the capacity of the transmission channel can be determined based on the type of task being processed by the cluster.

[0102] For example, when the cluster processes tasks such as cloud computing, artificial intelligence, or big data, the computing devices need to transmit a large amount of data. The computing devices can estimate the amount of data to be transmitted based on the historical running data of the task and determine the capacity of the transmission channel.

[0103] In one implementation, before the cluster starts running, the management unit receives a data transfer request from a user between a first computing device and a target computing device. Based on this data transfer request, the management unit allocates a target transmission channel to both the first computing device and the target computing device.

[0104] Users can input data transfer requirements between the first computing device and the target computing device through files, command lines, or a human-computer interaction interface connected to the management unit.

[0105] For example, a user sends a form containing data transfer requests between a first computing device and a target computing device to the management device where the management unit is located via any computing device.

[0106] For example, the management device where the management unit is located has an input device, through which the user enters command lines in the operating system of the management device to configure the data transmission requirements between the first computing device and the target computing device.

[0107] For example, the management device where the management unit is located has a human-computer interaction interface, through which the user configures the data transmission requirements between the first computing device and the target computing device.

[0108] In another implementation, the management unit allocates transmission channels to each of the connected computing devices based on the default data transmission requirements of the management unit's system. The connected computing devices include a first computing device and a target computing device, and the allocated transmission channels include a target transmission channel allocated to the first computing device and the target computing device.

[0109] In another implementation, after the cluster starts running, if the first computing device needs to send data to the target computing device, the first computing device sends a data transmission channel establishment request to the management unit. The data transmission channel establishment request includes the data transmission requirements of the first computing device and the target computing device. Based on the data transmission requirements included in the data transmission channel establishment request, the management unit allocates a target transmission channel for the first computing device and the target computing device.

[0110] For example, Table 1 shows the data transmission requirements between the first computing device and the target computing device obtained by the management unit. Table 1 includes: "Identifier of the first computing device", "Identifier of the target computing device", and "Capacity of the transmission channel". The first computing device is the sender in the data transmission, and the target computing device is the receiver.

[0111] Table 1

[0112] Identifier of computing device (sender) Identification of the computing device (receiving end) Transmission channel capacity Computing device 1 Computing device 2, computing device 3 10G

[0113] In practice, if multiple computing devices in a cluster have data transmission needs, the management unit can allocate transmission channels to each computing device based on these needs. This application embodiment uses any number of computing devices in the cluster (a first computing device and a target computing device) as an example for illustration.

[0114] After obtaining the data transmission requirements of the first computing device and the target computing device, the management unit allocates the target storage space in the CXL storage space to the first computing device and the target computing device. The specific process includes: S101a-S101c.

[0115] S101a: The management unit determines the target CXL storage device in the CXL storage space.

[0116] Specifically, the target CXL storage device is one or more CXL storage devices that are connected to both the first computing device and the target computing device.

[0117] In one implementation, the CXL storage space managed by the management unit consists of multiple CXL storage devices, each connected to multiple computing devices in the cluster. The management unit identifies a target CXL storage device from among the multiple CXL storage devices that is connected to a first computing device and a target computing device.

[0118] For example, as shown in Table 2, Table 2 illustrates multiple CXL storage devices managed by the management unit, and the computing devices connected to each CXL storage device. Table 2 includes: "Identifier of CXL storage device" and "Identifier of computing device connected to CXL storage device".

[0119] Table 2

[0120] CXL storage device label The identifier of the computing device to which the CXL storage device is connected. CXL Storage Device 1 Computing device 1, computing device 2, computing device 3, computing device 4 CXL Storage Device 2 Computing device 2, computing device 3, computing device 4 CXL Storage Device 3 Computing device 3, computing device 4

[0121] If the identifier of the first computing device is "Computing Device 1", and the identifiers of the target computing devices include "Computing Device 2" and "Computing Device 3", as can be seen from Table 2 above, the CXL storage device connected to computing device 1, computing device 2 and computing device 3 respectively is "CXL Storage Device 1", then the management unit determines the target CXL storage device as CXL Storage Device 1.

[0122] S101b: The management unit determines the available storage space in the target CXL storage device.

[0123] Available storage space is the unallocated storage space within the target CXL storage device.

[0124] In one implementation, the management unit manages the allocation status of the storage space of the target CXL storage device, which includes allocated storage space and unallocated storage space. Based on the allocation status of the storage space of the target CXL storage device, the management unit determines the available storage space of the target CXL storage device.

[0125] For example, the allocation status of the storage space of the target CXL storage device managed by the management unit is shown in Table 3, which includes: "allocation status", "address" and "storage capacity".

[0126] Table 3

[0127]

[0128] As can be seen from the storage space allocation status of the target CXL storage device shown in Table 3, the address of the unallocated storage space is Addr3 and the storage capacity is 20G. Therefore, the management unit determines that the available storage space is the storage space with the address "Addr3" and the storage capacity "20G".

[0129] S101c: The management unit determines the target storage space to be allocated to the first computing device and the target computing device from the available storage space of the target CXL storage device.

[0130] For example, if the required transmission channel capacity for the first computing device and the target computing device is 10G, the management unit determines the target storage space with address "Addr3-1" and storage capacity "10G" from the available storage space with address "Addr3" and storage capacity "20G" shown in Table 3, and uses it as the target transmission channel for the first computing device and the target computing device. At this time, the unallocated storage space is Addr3-2 with storage capacity of 10G, and the allocation status of the storage space of the target CXL storage device in Table 3 can be updated accordingly to the allocation status of the storage space of the target CXL storage device as shown in Table 4.

[0131] Table 4

[0132]

[0133] S102: The management unit sends information about the target transmission channel to the first computing device and the target computing device respectively.

[0134] The information of the target transmission channel includes: the identifier of the first computing device, the identifier of the target computing device, the identifier of the target transmission channel, the address of the target storage space, and the storage capacity of the target storage space.

[0135] Optionally, the management unit may set an identifier for the target transmission channel before sending the target transmission channel information to the first computing device and the target computing device.

[0136] For example, the management unit sets the identifier for the target transmission channel as channel 1.

[0137] For example, the first computing device is "Computing Device 1", the target computing devices are "Computing Device 2" and "Computing Device 3", and the information of the target transmission channel includes: "Computing Device 1", "Computing Device 2" and "Computing Device 3", the identifier of the target transmission channel "Channel 1", the address of the target storage space "Addr3-1", and the storage capacity of the target storage space "10G". The management unit sends the above-mentioned target transmission channel information to "Computing Device 1", "Computing Device 2", and "Computing Device 3" respectively.

[0138] Optionally, the management unit records the target communication relationship entries corresponding to the target transmission channel in the data transmission channel table. The target communication relationship entries include the identifier of the target transmission channel, the identifier of the first computing device, the identifier of the target computing device, the address of the target storage space, and the storage capacity of the target storage space. The management unit sends the data transmission channel table containing the target transmission channel information to the first computing device and the target computing device respectively.

[0139] For example, the target communication relationship entry includes: the identifier "1" of the target transmission channel, the identifier "Computing Device 1" of the first computing device, the identifier "Computing Device 2" of the target computing device, the address of the target storage space as Addr3-1, and the storage capacity as 10G, as shown in Table 5. The management unit stores the target communication relationship entry in the data transmission channel table.

[0140] Table 5

[0141]

[0142] In Table 5 above, the identifier of one end computing device is generally the identifier of the computing device applying for the transmission channel, and the identifier of the other end computing device is generally the identifier of the computing device receiving data. The computing device receiving data may include multiple computing devices.

[0143] When the management unit manages transmission channels for multiple computing devices, it can manage each transmission channel and its assigned computing device based on the identifier of each transmission channel, avoiding confusion. Furthermore, the first or target computing device can subsequently use the identifier of the target transmission channel for data transmission; details can be found in the second process described later.

[0144] S103: The management unit divides the target storage space into header field blocks and storage blocks.

[0145] The header field block is used to record the metadata of the target storage space. The metadata of the target storage space includes: the storage capacity of the storage block, the identifier of the target transmission channel, and optionally, the storage capacity of the target storage space.

[0146] The number of storage blocks can be one or more. When the number of storage blocks is multiple, the multiple storage blocks are used to enable the first computing device to divide the target data into multiple data blocks based on the storage capacity of the multiple storage blocks.

[0147] A storage block includes a metadata area and a data area. The metadata area in each storage block is used to record the metadata corresponding to each storage block. The metadata includes: sender identifier, receiver identifier, and data block identifier. The data area is used to store at least a portion of the data blocks in the target data transmitted between computing devices.

[0148] The management unit divides the target storage space into multiple storage blocks, enabling the first computing device and the target computing device to perform read and write operations in parallel, thereby improving read and write efficiency.

[0149] The management unit divides the target storage space into header field blocks and storage blocks. The header field blocks record the metadata of the target storage space, while the metadata areas of the storage blocks record the metadata of each storage block. This facilitates separate management of the metadata of the target storage space and each storage block, avoiding metadata confusion and improving management efficiency. Furthermore, for either the primary computing device or the target computing device, metadata can be directly obtained from each storage block, facilitating the retrieval of required metadata and improving data transfer efficiency.

[0150] For example, as shown in Table 6, Table 6 shows multiple fields contained in the header field block, each field being used to record the metadata of the target storage space. Table 6 includes "Sequence Number" and "Metadata of Target Storage Space". Each "Sequence Number" represents a field in the header field block, and each row of "Sequence Number" corresponds to each row of "Metadata of Target Storage Space".

[0151] Table 6

[0152] Serial Number Metadata of the target storage space 1 Identification of the target transmission channel 2 Storage capacity of the target storage space 3 Storage capacity of multiple storage blocks 4 Reserved fields

[0153] The above-mentioned number 3, storage capacity of multiple storage blocks, records the storage capacity of each storage block allocated by the management unit. The storage capacities of multiple storage blocks can be equal or unequal. If the storage capacities of multiple storage blocks are equal, then only one storage capacity value needs to be recorded at number 3. If the storage capacities of multiple storage blocks are unequal, then the storage capacity value of each storage block needs to be recorded separately at number 3.

[0154] For example, the management unit divides the target storage space with a storage capacity of 10G into one 1G header field block and nine 1G storage blocks. Then the storage block recorded at sequence number 3 has a storage capacity of 1G.

[0155] Serial number 4 is a reserved field used for extended functionality.

[0156] In one implementation, the management unit abstracts the target storage space into a logical unit based on the storage capacity of the default storage block, and then divides the logical unit into a header field block and multiple storage blocks.

[0157] For example, the default storage block capacity is 1G, the target storage space is 10G, and the management unit divides the target storage space into one 1G header field block and nine 1G storage blocks.

[0158] For example, the management unit divides the target storage space with a storage capacity of 10G into one 1G header field block, three 1G storage blocks, and two 3G storage blocks. The management unit can assign numbers 1-3 to the three 1G storage blocks and numbers 4 and 5 to the two 3G storage blocks. The sequence number 4 is recorded as 1-1G, 2-1G, 3-1G, 4-3G, and 5-3G.

[0159] S104: The management unit records the metadata of the target storage space in the header field block.

[0160] In one implementation, the management unit records metadata of the target storage space in the header field block.

[0161] For example, if the target transmission channel is identified as "Channel 1", the target storage space has a storage capacity of "10G", and multiple storage blocks each have a storage capacity of 1G, the management unit records "Channel 1" at position "1", "10G" at position "2", and "1G" at position "4" in the header field block, as shown in Table 6. After the management unit records the above information in Table 6, Table 6 is updated to Table 7.

[0162] Table 7

[0163] Serial Number Metadata of the target storage space 1 Target transmission channel identifier: "Channel 1" 2 Target storage capacity: 10GB 3 Storage capacity of multiple storage blocks: "1G" 4 Reserved fields

[0164] S105: The management unit sets up the metadata area and data area in each storage block.

[0165] The metadata area in each storage block is used to record the metadata corresponding to each storage block, while the data area is the space in the storage block for storing data blocks transferred between computing devices.

[0166] The metadata of a storage block includes: the receiver identifier, and optionally also the sender identifier and the data block identifier.

[0167] For example, as shown in Table 8, Table 8 illustrates multiple fields contained in the metadata area of ​​a storage block. Each field is used to record multiple metadata of the corresponding storage block. Table 8 includes: "Sequence Number" and "Metadata of Storage Block". Each "Sequence Number" corresponds to one piece of metadata.

[0168] Table 8

[0169] Serial Number Metadata of storage blocks 1 Sender Identifier 2 Receiver identifier 3 Data block identifier 4 Data block timestamps 5 Valid data length 6 Cyclic redundancy check (CRC) results of data blocks 7 Reserved fields

[0170] In the aforementioned metadata, the sender identifier and receiver identifier in sequence number 1 and sequence number 2 determine the transmission direction of data in each storage block.

[0171] The sender identifier and receiver identifier are written by the computing device that sends the data into the storage block when writing data into the storage block, corresponding to the sender identifier and receiver identifier in the metadata of the storage block.

[0172] The receiver identifier is deleted from the metadata of the storage block by the computing device receiving the data when reading the data in the storage block.

[0173] Number 3, the identifier of the data block, is used to record the identifier of the data blocks stored in this storage block, so that the receiving end can splice multiple received data blocks into complete data based on the identifier.

[0174] Number 4, the timestamp of the data block, is used to record the write time of each data block written by the first computing device.

[0175] In subsequent operation and maintenance, technicians can use the metadata in this sequence number 10 to view the write time of each data block, thereby improving operation and maintenance efficiency.

[0176] Serial number 5, valid data length, records the data length of the data block sent, used to indicate the valid data length to the receiving end, thus improving reading efficiency.

[0177] For example, if the storage capacity of the first storage block is 1G and the effective data length of the first data block is 512M, then when the receiving end performs a read operation on the first storage block, it reads 512M of effective data.

[0178] This number 6 represents the CRC check result of the data block, used to record the check result for each data block.

[0179] The metadata recorded in serial number 6 above is all for determining whether there are errors in the data transmission process, so as to facilitate quick querying of erroneous data blocks in subsequent operation and maintenance processes and improve operation and maintenance efficiency.

[0180] Serial number 7 is a reserved field used for extended functionality.

[0181] The metadata of the storage blocks shown in Table 8 above is recorded in real time by the first computing device or the target computing device during data transmission.

[0182] Optionally, if the storage capacity of each storage block is not equal, the storage capacity of multiple storage blocks in Table 6 can be recorded in the metadata of each storage block.

[0183] For example, such as Figure 4 As shown, Figure 4 The diagram illustrates the header field block and multiple storage blocks of the target storage space. Each storage block includes a metadata area and a data area. The storage capacity of each storage block can be equal, unequal, or partially equal and partially unequal, depending on actual needs. This embodiment does not limit this.

[0184] Generally, the storage capacity of the multiple storage blocks divided by the management unit is equal, which makes it easier for the management unit to manage multiple storage blocks and also makes it easier for the subsequent first computing device to divide the target data based on the storage capacity of the storage blocks, thereby improving data transmission efficiency.

[0185] The above-mentioned S102 can be executed after S103-S105, or before S103-S105, or can be executed simultaneously. This application embodiment does not limit the execution order of S102 and S103-S105.

[0186] If S102 is executed before S103-S105, the first computing device and the target computing device can obtain the information of the target transmission channel in a timely manner. If S102 is executed after S103-S105, the management unit can send the metadata of the target storage space to both the first computing device and the target computing device when sending the information of the target transmission channel. When the first computing device performs its first data write operation, or when the target computing device performs its first data read operation, it does not need to read the metadata from the metadata block of the target storage space, thus improving data transmission efficiency. If S102 is executed simultaneously with S103-S105, the management unit can improve the management efficiency of the target transmission channel.

[0187] It is understood that in the transmission channel allocation method proposed by the management unit in this application embodiment, no sending end and receiving end are set in the target storage space allocated by the management unit. This indicates that the transmission direction of the target storage space is not fixed. After the first computing device or the target computing device obtains the target transmission channel, they can transmit data to each other based on their respective data transmission needs. In addition, if the target computing device includes multiple computing devices, the first computing device can transmit data to multiple computing devices simultaneously through the target transmission channel. Therefore, in this application embodiment, the target transmission channel can be used as a bidirectional data transmission channel or as a one-to-many data transmission channel to realize multidirectional data transmission and improve data transmission efficiency.

[0188] Optionally, after the first computing device and the target computing device complete the data transmission, the management unit may reclaim the target transmission channel allocated to the first computing device and the target computing device.

[0189] In some implementations, the first computing device or the target computing device sends an instruction message to the management unit, the instruction message indicating that the first computing device and the target computing device have completed data transmission, and the management unit reclaims the target transmission channel.

[0190] Specifically, the management unit deletes the target communication relationship entries recorded in the data transmission channel table and deletes the data stored in the target storage space.

[0191] After the management unit reclaims the target transmission channel, it can send a message to both the first computing device and the target computing device indicating that the target transmission channel has been reclaimed. If the first computing device or the target computing device subsequently needs to transmit data, it can no longer use the target transmission channel and must re-apply for a transmission channel. Therefore, this message reclaiming the target transmission channel can prevent data transmission failures caused by the first computing device or the target computing device reusing the target transmission channel.

[0192] In the optional steps described above, after data transfer between computing devices is completed, the management unit promptly reclaims the allocated transmission channels, i.e., storage space. This storage space can then be reassigned to other computing devices with data transfer needs, improving storage space utilization. Timely reclamation of storage space can reduce the storage capacity configuration of CXL storage devices and lower their operating costs.

[0193] The second process is described below. The second process consists of two parts. The first part is the process of the first computing device sending data, such as... Figure 5 As shown, the first part mainly includes: First, the first computing device determines the state of the first storage block based on the receiver identifier recorded in the metadata area of ​​the target storage space; Second, when the state of the first storage block is operable, the first data block is written into the data area of ​​the first storage block, and the identifier of the first computing device is recorded as the sender identifier and the identifier of the target computing device is recorded as the receiver identifier in the metadata area of ​​the first storage block, so that the target computing device can read the first data block from the first storage block according to the sender identifier and the receiver identifier.

[0194] Please refer to Figure 6 This is a flowchart illustrating a data transmission method provided in an embodiment of this application. The flowchart describes the specific process of the first part, in which the method is applied to a first computing device, such as... Figure 1 Any computing device other than the target computing device in the computing device 110 shown, such as Figure 6 As shown, the method may include S201-S207.

[0195] S201: The first computing device obtains information about the target transmission channel from the management unit.

[0196] In one implementation, when the first computing device needs to send data to the target computing device, it obtains information about the allocated target transmission channel from the management unit.

[0197] In another implementation, the first computing device has received information about the target transmission channel sent by the management unit before it needs to send data to the target computing device.

[0198] For example, the information of the target transmission channel obtained by the first computing device includes: sender identifier: "computing device 1", receiver identifier: "computing device 2" and "computing device 3", target transmission channel identifier "channel 1", target storage space address "Addr3" and target storage space storage capacity "10G".

[0199] Optionally, the first computing device obtains a data transmission channel table containing information about the target transmission channel from the management unit, and the first computing device obtains the information about the target transmission channel from the data transmission channel table.

[0200] S202 (optional): The first computing device obtains the storage capacity of the storage block from the header field block of the target storage space.

[0201] The first computing device determines the address of the transmission channel based on the information of the target transmission channel, and reads the storage capacity of multiple storage blocks in the metadata block from the storage space corresponding to the address of the transmission channel.

[0202] When there is only one storage block, the first computing device obtains the storage capacity of that storage block from the header field block of the target storage space. When there are multiple storage blocks, the first computing device obtains the storage capacity of multiple storage blocks from the header field block of the target storage space.

[0203] In some implementations, if the first computing device reads that the storage capacity of each storage block is equal, the first computing device sends an instruction to the CXL controller to obtain the storage capacity of the multiple storage blocks recorded in the header field block of the target storage space.

[0204] For example, the first computing device is identified as "computing device 1", the target transmission channel is identified as "channel 1", "computing device 1" sends an instruction to the CXL controller to obtain the storage capacity of multiple storage blocks recorded in the header field block of "channel 1", and the CXL controller returns the storage capacity of the multiple storage blocks to "computing device 1" as "1G".

[0205] S203 (optional): The first computing device divides the target data into multiple data blocks based on the storage capacity of each storage block.

[0206] Among them, multiple data blocks include a first data block, and the storage capacity required to store the first data block is less than or equal to the storage capacity of the first storage block.

[0207] For example, if the target data is 10.5G, the first computing device can divide the target data into ten 1G data blocks and one 0.5G data block.

[0208] For example, if the target data is 12G, the first computing device can divide the target data into twelve 1G data blocks.

[0209] In the optional steps described above, after the first computing device divides the target data into multiple data blocks, the first computing device begins to transmit the multiple data blocks respectively. The following S204-S207 describes the process of the first computing device transmitting any one of the multiple data blocks, such as the first data block.

[0210] S204: The first computing device determines the status of the first storage block based on the receiver identification data recorded in the metadata area of ​​the first storage block of the target storage space.

[0211] The first storage block is any one of the multiple storage blocks in the target storage space. The state of the first storage block includes either an operable state or an inoperable state.

[0212] If the first storage block is in an operable state, the first computing device executes S205;

[0213] If the first storage block is in an inoperable state, the first computing device selects the next storage block as the first storage block and repeats S204 until a storage block in the target storage space is determined to be in an operable state.

[0214] The next storage block can be the next storage block adjacent to the address of the first storage block among multiple storage blocks, or it can be any other storage block besides the first storage block among multiple storage blocks. This application does not limit the implementation method for selecting the next storage block.

[0215] For the first computing device, when there is no data stored in the first storage block, or when the stored data has been read by the target computing device, the state of the first storage block is operable, and the first storage block is a writable storage block; when there is data stored in the first storage block, and the data has not yet been read by the target computing device, the state of the first storage block is inoperable, and the first storage block is a non-writable storage block.

[0216] In one implementation, a specific method is proposed for S204, including S204a-S204b:

[0217] S204a: The first computing device obtains the metadata of the first storage block recorded in the metadata area of ​​the first storage block.

[0218] For example, the first computing device obtains the receiver identifier as shown in number 2 of Table 8.

[0219] S204b: When there is no receiver identifier in the metadata of the first storage block, the first computing device determines that the state of the first storage block is operable.

[0220] The absence of a receiver identifier in the metadata of the first storage block can be categorized into two scenarios: first, no data has been written to the first storage block; second, the data in the first storage block has been read by the target computing device. In both of these scenarios, the first computing device can perform write operations on the storage block. Therefore, the first storage block without a receiver identifier in its metadata can be determined to be in an operable state.

[0221] Understandably, when the first computing device writes data to the storage block, it records the sender identifier (i.e., the identifier of the first computing device) and the receiver identifier (i.e., the identifier of the target computing device) in the metadata of the storage block (e.g., S205a). After the target computing device reads the data in the storage block, it deletes the identifier of the target computing device (i.e., the receiver identifier) ​​from the metadata of the storage block (e.g., S305). Therefore, if the metadata of the storage block contains the receiver identifier, it indicates that the storage block has been written with data and has not yet been read. If the metadata of the storage block does not contain the receiver identifier, it indicates that the storage block has not been written with data or the written data has been read. Therefore, this method can quickly determine whether the state of the storage block is operable by whether there is a receiver identifier in the metadata of the storage block.

[0222] S203 above is an optional step. If the storage capacity of multiple storage blocks is equal, the first computing device can execute the above steps S202-S203. If the storage capacity of multiple storage blocks is not equal, the first computing device can first not split the target data, and when executing S204, obtain the storage capacity of the storage block in the header field block of the target storage space, or obtain the storage capacity of the storage block in the metadata of the storage block, and before executing S205, split the corresponding data block (first data block) from the target data.

[0223] For example, the first computing device obtains that the storage capacity of the first storage block is 2G, and the first computing device splits a 2G data block (the first data block) from the target data.

[0224] S205: The first computing device writes the first data block into the data area of ​​the first storage block and updates the metadata in the metadata area of ​​the first storage block so that the target computing device reads the first data block from the first storage block.

[0225] The first data block is at least a portion of the target data that the first computing device needs to send to the target computing device, and the storage capacity required for the first data block is less than or equal to the storage capacity of the first storage block.

[0226] In one implementation, the first computing device sends a write data instruction to the CXL controller, the write data instruction being used to instruct the CXL controller to write a first data block to a first storage block.

[0227] For example, if the first computing device obtains that the number of the first storage block is "2", then the first computing device sends a write data instruction to the CXL controller. The write data instruction includes: writing the first data block into the storage block numbered "2" of "channel 1".

[0228] Correspondingly, the CXL controller records the address of the storage block numbered "2" in "Channel 1", and the CXL controller writes the first data block into the storage space indicated by that address.

[0229] Optionally, based on the working principle of the computing device, when the first computing device writes the first data block to the first storage block, some data in the first data block is cached in the cache space of the processor of the first computing device. Therefore, after each time the first computing device finishes writing the first data block, it performs a cache invalidation operation to ensure that all data in the first data block is written to the first storage block.

[0230] Specifically, the metadata in the metadata area of ​​the first storage block updated by the first computing device includes: S205a-S205c.

[0231] S205a: The first computing device records the identifier of the first computing device and the identifier of the target computing device in the metadata area of ​​the first storage block.

[0232] The identifier of the first computing device is the sender identifier, and the identifier of the target computing device is the receiver identifier.

[0233] For example, the identifier of the first computing device is "computing device 1", and the identifiers of the target computing device include "computing device 2" and "computing device 3". If the first computing device records the identifier of the first computing device and the identifier of the target computing device in the metadata area as shown in Table 8, then Table 8 is updated to Table 9.

[0234] Table 9

[0235] Serial Number Metadata of storage blocks 1 Sender Identifier: Computing Device 1 2 Receiver identifiers: Computing device 2, Computing device 3 3 Data block identifier 4 Data block timestamps 5 Valid data length 6 Cyclic redundancy check (CRC) results of data blocks 7 Reserved fields

[0236] During this process, the first computing device records the sender identifier and receiver identifier in the metadata area of ​​the storage block, thereby indicating the transmission direction of the data stored in the storage block. The subsequent target computing device can read the corresponding data based on the sender identifier and receiver identifier in the metadata area, and thus complete the data transmission.

[0237] S205b: The first computing device sets an identifier for the first data block.

[0238] For example, the first computing device sets the identifier of the first data block as "data block 2".

[0239] In one embodiment, after the first computing device divides the target data into multiple data blocks in S203, it sets an identifier for each data block, including the identifier of the first data block.

[0240] For example, the first computing device divides the target data into ten data blocks, and assigns each data block an identifier as "data block 1", "data block 2", "data block 3", ..., "data block 10", where the first data block is "data block 2" among the multiple data blocks.

[0241] The first computing device may set an identifier for each data block in S203, or it may set an identifier for each data block after writing the data block to the storage block in S205. This application does not limit when to set an identifier for the data block.

[0242] S205c: The first computing device records the identifier of the first data block in the metadata area of ​​the first storage block.

[0243] For example, the first computing device sets the identifier of the first data block as "data block 2". The first computing device records the identifier of the first data block in the position corresponding to the serial number "3" in the metadata area shown in Table 9. Then Table 9 is updated to Table 10.

[0244] Table 10

[0245] Serial Number Metadata of storage blocks 1 Sender Identifier: Computing Device 1 2 Receiver identifiers: Computing device 2, Computing device 3 3 Data block identifier: Data block 2 4 Data block timestamps 5 Valid data length 6 Cyclic redundancy check (CRC) results of data blocks 7 Reserved fields

[0246] The steps S205b-S205c described above are optional. If the first computing device divides the target data into multiple data blocks but does not write them to the target storage space in the order of the data blocks, steps S205b-S205c can be used to identify the multiple data blocks and avoid confusing the order of the data blocks. The target computing device can also, after reading multiple data blocks, concatenate the multiple data blocks into complete target data based on the identifier of each data block.

[0247] The first computing device may execute S205a first, or S205b-S205c first, or they may execute simultaneously. In this embodiment, the execution order of S205a and S205b-S205c is not limited.

[0248] S206: The first computing device determines whether multiple data blocks of the target data have all been written to the target storage space.

[0249] If not, it indicates that there are still data blocks that have not been written to the target storage space. After the first computing device obtains the next data block, it executes S204.

[0250] If so, it indicates that all target data has been written to the target storage space, and S207 is executed.

[0251] In one implementation, if the first computing device divides the target data into multiple data blocks and writes them into the target storage space in the order of the data blocks, then the next data block is the next data block adjacent to the first data block.

[0252] For example, if the first computing device divides the target data into "data block 1", "data block 2", "data block 3"... "data block 10", the first computing device writes the data blocks sequentially into the target storage space in the order from "data block 1" to "data block 10". If the first data block is "data block 2", then the next data block is "data block 3".

[0253] In this case, if the first data block is "data block 10", then the first computing device determines that multiple data blocks are written to the target storage space.

[0254] In another implementation, if the first computing device divides the target data into multiple data blocks but does not write the data blocks into the target storage space in the order they appear, then the next data block is any one of the multiple data blocks in the target data that has not yet been written into the target storage space.

[0255] For example, if the first computing device divides the target data into "data block 1", "data block 2", "data block 3"... "data block 10", and the first computing device does not write the data blocks into the target storage space in the order of their occurrence, if "data block 1" and "data block 2" have already been written into the target storage space, then the next data block is any one of the data blocks from "data block 3" to "data block 10".

[0256] In this case, if all data blocks from “data block 1” to “data block 10” are written to the target storage space, the first computing device determines that multiple data blocks have been written to the target storage space.

[0257] S207 (optional): The first computing device records an indication flag indicating that the target data transmission is complete.

[0258] The target data transmission completion indicator is used to indicate that the target computing device ends the read operation on the target storage space after acquiring the target data.

[0259] The indication flag indicating that the target data has been sent can be a string, a number, or a predefined message, such as "finished". The indication flag indicating that the target data has been sent can be recorded in a reserved field in the metadata area of ​​the storage block where the last data block is located.

[0260] In one implementation, since the target computing device may include multiple computing devices and the target transmission channel is a multidirectional transmission channel, any two computing devices among the first computing device and the target computing device can transmit data to each other. Therefore, when the first computing device records the indication flag indicating that the target data transmission is complete in the reserved field of the metadata area of ​​the storage block where the last data block is located, it can also record the total amount of target data, the sender identifier, and the receiver identifier.

[0261] For example, the first computing device is identified as "computing device 1", the target computing devices are identified as "computing device 2" and "computing device 3", and the total amount of the target data is 1G. If the target data sent by "computing device 1" to "computing device 2" has been transmitted, "computing device 1" can record "finished" in the reserved field of the metadata area of ​​the storage block where the last data block is located.

[0262] The following is the second part of the second process, which describes the process of the target computing device reading data. Please refer to it. Figure 7 This is a flowchart illustrating a data transmission method provided in an embodiment of this application. The method is applied to a target computing device, such as... Figure 1 Any one or more computing devices other than the first computing device in the computing device 110 shown, such as Figure 7 As shown, the method may include: S301-S308.

[0263] S301: The target computing device obtains information about the target transmission channel from the management unit.

[0264] In one implementation, the target computing device receives information about the target transmission channel sent by the management unit.

[0265] Optionally, the target computing device receives a data transmission channel table containing information about the target transmission channel sent by the management unit, and the target computing device obtains the information about the target transmission channel from the data transmission channel table.

[0266] For example, the information of the target transmission channel obtained by the target computing device includes: "Computing Device 1", "Computing Device 2" and "Computing Device 3", the identifier of the target transmission channel "Channel 1", the address of the target storage space "Addr3-1" and the storage capacity of the target storage space "10G".

[0267] After obtaining the information of the target transmission channel, the target computing device can perform a read operation on the target storage space under the instruction of the first computing device or the CXL controller. Alternatively, the target computing device can periodically check whether there is data sent to the target computing device in the target storage space, and if so, perform a read operation on the target storage space.

[0268] The following S302-S306 describe the process by which the target computing device performs a read operation on any storage block in the target storage space, such as the first storage block.

[0269] S302: The target computing device determines the status of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space.

[0270] The first storage block is any one of the multiple storage blocks in the target storage space. The state of the first storage block includes either an operable state or an inoperable state.

[0271] If the first storage block is in an operable state, the target computing device executes S303;

[0272] If the first storage block is in an inoperable state, the target computing device selects the next storage block as the first storage block and repeats S302 until a storage block in the target storage space is determined to be in an operable state.

[0273] The next storage block can be the next storage block adjacent to the address of the first storage block among multiple storage blocks, or it can be any other storage block besides the first storage block among multiple storage blocks. This application does not limit the implementation method for selecting the next storage block.

[0274] For the target computing device, when the first storage block contains data that is to be sent to the target computing device, the state of the first storage block is operable, and the first storage block is a readable storage block. When the first storage block does not contain any data, or when the first storage block contains data that is not to be sent to the target computing device, the first storage block is inoperable, and the first storage block is an unreadable storage block.

[0275] In one implementation, a specific method for S302 is proposed, including S302a-S302b:

[0276] S302a: The target computing device obtains the metadata of the first storage block recorded in the metadata area of ​​the first storage block.

[0277] For example, the target computing device obtains the receiver identifier as shown in number 2 of Table 8.

[0278] S302b: When the target computing device's identifier is recorded in the receiver identifier field of the metadata of the first storage block, the target computing device determines that the first storage block is in an operable state.

[0279] The metadata of the first storage block contains the identifier of the target computing device in the receiver identifier field, indicating that data has been written into the first storage block and that writing this data is the identifier sent to the target computing device.

[0280] For example, if the target computing device is "computing device 2", the receiver identifier obtained by the target computing device from the metadata area of ​​the first storage block includes "computing device 2", indicating that the receiver of the data in the first storage block includes the target computing device. At this time, the target computing device determines that the first storage block is in an operable state, and the target computing device can perform read operations on the first storage block.

[0281] Understandably, when the first computing device writes data to the storage block, it records the sender identifier (i.e., the identifier of the first computing device) and the receiver identifier (i.e., the identifier of the target computing device) in the metadata of the storage block (e.g., S205a). After the target computing device reads the data in the storage block, it deletes the identifier of the target computing device (i.e., the receiver identifier) ​​from the metadata of the storage block (e.g., S305). Therefore, if the receiver identifier exists in the metadata, it indicates that the storage block has been written with data and has not yet been read. If the receiver identifier does not exist in the metadata, it indicates that the storage block has not been written with data or the written data has been read. Therefore, this method can quickly determine whether the storage block is in an operable state by whether there is a receiver identifier in the metadata.

[0282] S303: The target computing device reads the first data block in the data area of ​​the first storage block.

[0283] The first data block is the data stored in the first storage block, which is a portion of the target data sent by the first computing device to the target computing device.

[0284] In one implementation, the target computing device sends a read data instruction to the CXL controller, the read data instruction being used to instruct the CXL controller to read a first data block from a first storage block.

[0285] For example, if the target computing device obtains that the number of the first storage block is "2", then the target computing device sends a read data instruction to the CXL controller. The read data instruction includes: reading data from the storage block numbered "2" of "channel 1".

[0286] Correspondingly, the CXL controller records the address of the storage block numbered "2" in "Channel 1". The CXL controller reads the first data block from the storage space indicated by the address and sends it to the target computing device.

[0287] S304: When the target computing device reads the first data block from the data area of ​​the first storage block, it obtains the identifier of the first data block from the metadata area of ​​the first storage block.

[0288] The identifier of the first data block is stored in the metadata area of ​​the first storage block, such as at number 3 in Table 8.

[0289] For example, the identifier of the first data block is "data block 2". When the target computing device obtains the first data block, it obtains the identifier "data block 2" of the first data block.

[0290] It is understandable that, since the target data includes multiple data blocks, and the first data block is any one of the multiple data blocks, when the target computing device acquires the data blocks, it can acquire the identifier of the data block and, after acquiring all the multiple data blocks of the target data, concatenate the multiple data blocks into the complete target data based on the identifier of the multiple data blocks.

[0291] S305: The target computing device deletes the identifier of the target computing device recorded in the metadata area of ​​the first storage block.

[0292] When the first storage block is in an operable state, the metadata area of ​​the first storage block records the identifier of the first computing device and the identifier of the target computing device. The identifier of the first computing device is the sender identifier, and the identifier of the target computing device is the receiver identifier.

[0293] For example, the target computing device is identified as “Computing Device 2”. As shown in Table 10, the target computing device identifiers recorded in the metadata area of ​​the first storage block include “Computing Device 2” and “Computing Device 3”. If the target computing device deletes “Computing Device 2” from the metadata area, then Table 10 is updated to Table 11.

[0294] Table 11

[0295] Serial Number Metadata of storage blocks 1 Sender Identifier: Computing Device 1 2 Receiver identifier: Computing device 3 3 Data block identifier: Data block 2 4 Data block timestamps 5 Valid data length 6 Cyclic redundancy check (CRC) results of data blocks 7 Reserved fields

[0296] As can be seen from Table 11, the receiver identifier also includes "Computing Device 3". After "Computing Device 3" finishes reading the data in the first storage block, there will be no identifier at this receiver identifier.

[0297] It is understood that the target computing device may include multiple computing devices. After each target computing device reads data from the storage block, it deletes its identifier from the metadata area, indicating that it has read the data from the storage block. If multiple target computing devices have read data from the storage block, the metadata area of ​​the storage block will not contain the receiver identifier. Subsequently, when the first computing device performs cyclic writing of data to the storage block, it can determine whether the storage block is writable (operable) based on whether the metadata area of ​​the storage block contains the receiver identifier.

[0298] S306: The target computing device determines whether the acquisition of target data has been completed.

[0299] If not, it indicates that the target computing device has not yet acquired all the data blocks in the target data, so the next storage block is used as the first storage block, and S302 is executed again;

[0300] If so, it indicates that the target computing device has acquired all data blocks in the target data, and then S307 is executed.

[0301] In one implementation, the target computing device obtains an indication flag indicating that the target data transmission is complete in the header field block, and the total amount of data sent by the sender recorded in the header field block is equal to the total amount of data received by the receiver. At this time, the target computing device determines that it has obtained complete target data.

[0302] S307 (optional): The target computing device records an indication mark indicating that the target data has been acquired.

[0303] The indicator flag indicating that the target data has been acquired is used to indicate that the first computing device and the target computing device have completed the data transmission.

[0304] The indicator that the target data has been acquired can be a string, a number, or a predefined message, such as "accepted". The indicator that the target data has been acquired can be recorded in a reserved field in the metadata area of ​​the storage block where the last data block is located.

[0305] In one implementation, since the target computing device may include multiple computing devices and the target transmission channel is a multidirectional transmission channel, any two computing devices among the first computing device and the target computing device can transmit data to each other. Therefore, when the target computing device records the indication flag of the acquired target data in the reserved field of the metadata area of ​​the storage block where the last data block is located, it can also record the total amount of target data, the sender identifier, and the receiver identifier.

[0306] For example, the first computing device is identified as “computing device 1”, the target computing device is identified as “computing device 2” and “computing device 3”, the total amount of the target data is 1G, if “computing device 2” has acquired the target data, then “computing device 2” can record “accepted” in the reserved field of the metadata area of ​​the storage block where the last data block is located.

[0307] S308: After obtaining multiple data blocks and their identifiers, the target computing device concatenates the multiple data blocks into the target data based on the identifier of each data block.

[0308] For example, the multiple data blocks obtained by the target computing device are identified as “data block 1”, “data block 2”, “data block 3”...“data block 10”. Based on the identifiers of these multiple data blocks, the target computing device concatenates these multiple data blocks into target data in the order of “data block 1” to “data block 10”.

[0309] In the data transmission method proposed in this application embodiment, if the target storage space includes multiple storage blocks, the first computing device divides the target data to be transmitted into multiple data blocks and writes the multiple data blocks into the multiple storage blocks of the target storage space. The target computing device reads the multiple data blocks from the multiple data blocks of the target storage space. The read operation of the target computing device can start after the first computing device finishes writing the first data block. Therefore, the method proposed in this application embodiment can realize the parallel execution of read and write operations, thereby improving the data transmission efficiency.

[0310] In one example, if Figure 8 As shown, Figure 8 A comparative diagram showing the data writing methods. Figure 8 The horizontal axis represents time. Figure 8 The upper part describes a data transmission method that divides the target storage space into a metadata block and a storage block. When the first computing device fills the target storage space, the target computing device reads data from the target storage space. After the target computing device finishes reading the data, the first computing device repeats the write operation on the target storage space. Figure 8The lower half describes a data transmission method that divides the target storage space into metadata blocks and multiple storage blocks. The target storage space is divided into 6 storage blocks. When the first computing device fills the storage block numbered 1, the target computing device begins to read from the storage block numbered 1. When the first computing device fills all the storage blocks (1-6) of the target storage space, the first computing device then writes to the 6 storage blocks in sequence, while the target computing device reads from the data blocks in sequence. As can be seen from the comparison above and below, dividing the target storage space into multiple storage blocks enables the parallel execution of read and write operations, improving data transmission efficiency.

[0311] The foregoing primarily describes the solutions provided by the embodiments of this application from a methodological perspective. To achieve the aforementioned functions, it includes corresponding hardware structures and / or software modules for executing each function. Those skilled in the art should readily recognize that, in conjunction with the units and algorithm steps of the various examples described in the embodiments disclosed herein, this application can be implemented in hardware or a combination of hardware and computer software. Whether a function is executed in hardware or by computer software driving hardware depends on the specific application and design constraints of the technical solution. Those skilled in the art may use different methods to implement the described functions for each specific application, but such implementation should not be considered beyond the scope of this application.

[0312] This application also provides a computing device 200. For example... Figure 9 The diagram shown is a structural schematic of a computing device 200 provided in an embodiment of this application.

[0313] The computing device 200 includes: a determining unit 201, configured to determine the state of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space; wherein the target storage space is a target transmission channel between the first computing device and the target computing device, and the CXL storage device including the target storage space is communicatively connected to both the first computing device and the target computing device; the first storage block includes a data area for storing data blocks transmitted between the computing devices, and the state of the first storage block includes an operable state or an inoperable state; and a writing unit 202, configured to, when the state of the first storage block is operable, write the first data block into the data area of ​​the first storage block, and record the identifier of the first computing device as the sender identifier and the identifier of the target computing device as the receiver identifier in the metadata area of ​​the first storage block, so that the target computing device reads the first data block from the first storage block according to the receiver identifier.

[0314] In some implementations, the data recorded in the metadata area of ​​the first storage block is the metadata of the first storage block. The determining unit 201 is specifically used to obtain the metadata of the first storage block recorded in the metadata area of ​​the first storage block; when there is no receiver identifier in the metadata of the first storage block, the state of the first storage block is determined to be an operable state.

[0315] In some implementations, the target storage space includes a header field block and multiple storage blocks, the multiple storage blocks including a first storage block, the header field block being used to record metadata of the target storage space, the metadata of the target storage space including: the storage capacity of the multiple storage blocks; the computing device 200 further includes an acquisition unit 203, used to acquire the storage capacity of the multiple storage blocks from the header field block; wherein, the storage capacity of each storage block is equal; the computing device 200 further includes a partitioning unit 204, used to divide the target data into multiple data blocks based on the storage capacity of each storage block; wherein, the multiple data blocks include a first data block, the storage capacity required by the first data block is less than or equal to the storage capacity of the first storage block.

[0316] In some implementations, the writing unit 202 is further configured to set an identifier for the first data block; and, when the first storage block is in an operable state, after writing the first data block into the data area of ​​the first storage block, record the identifier of the first data block in the metadata area of ​​the first storage block.

[0317] In some implementations, both the first computing device and the target computing device are connected to a management unit. The management unit is used to manage the storage space of one or more CXL storage devices. Before determining the status of the first storage block based on the sender identifier and receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space, the acquisition unit 203 is further used to acquire information about the target transmission channel from the management unit. The information about the target transmission channel includes: the identifier of the first computing device, the identifier of the target computing device, the identifier of the target transmission channel, the address of the target storage space, and the capacity of the target storage space.

[0318] This application also provides a computing device 300. For example... Figure 10 The diagram shown is a structural schematic of a computing device 300 provided in an embodiment of this application.

[0319] The computing device 300 includes: a determining unit 301, used to determine the state of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space; wherein the target storage space is a target transmission channel allocated to the first computing device and the target computing device, and the CXL storage device including the target storage space is communicatively connected to both the first computing device and the target computing device; the first storage block includes a data area for storing data blocks transmitted between the computing devices, and the state of the first storage block includes an operable state or an inoperable state; and a reading unit 302, used to read the first data block in the data area of ​​the first storage block and delete the identifier of the target computing device recorded at the receiver identifier in the metadata area of ​​the first storage block when the state of the first storage block is operable.

[0320] In some implementations, the data recorded in the metadata area of ​​the first storage block is the metadata of the first storage block. The determining unit 301 is specifically used to obtain the metadata of the first storage block recorded in the metadata area of ​​the first storage block; when the identifier of the target computing device is recorded at the receiver identifier in the metadata of the first storage block, the target computing device determines that the state of the first storage block is an operable state.

[0321] In some implementations, the metadata area of ​​the first storage block records the identifier of the first data block, and the computing device 300 further includes an acquisition unit 303, which is used to acquire the identifier of the first data block from the metadata area of ​​the first storage block when reading the first data block from the data area of ​​the first storage block.

[0322] In some embodiments, the computing device 300 further includes a splicing unit 304, which, after acquiring multiple data blocks of target data and the identifiers of the multiple data blocks, splices the multiple data blocks into target data based on the identifier of each data block.

[0323] In some implementations, both the first computing device and the target computing device are connected to a management unit. The management unit is used to manage the storage space of one or more CXL storage devices. Before determining the status of the first storage block based on the sender identifier and receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space, the acquisition unit 303 is further used to acquire information about the target transmission channel from the management unit. The information about the target transmission channel includes: the identifier of the first computing device, the identifier of the target computing device, the identifier of the target transmission channel, the address of the target storage space, and the capacity of the target storage space.

[0324] This application also provides a management device 400. For example... Figure 11 The diagram shown is a structural schematic of a management device 400 provided in an embodiment of this application.

[0325] The management device 400 includes: an allocation unit 401, used to allocate target storage space in the CXL storage space to the first computing device and the target computing device based on the data transmission requirements between the first computing device and the target computing device; the CXL storage device to which the target storage space belongs is connected to both the first computing device and the target computing device, and the target storage space serves as the target transmission channel for data transmission between the first computing device and the target computing device; and a partitioning unit 402, used to divide the target storage space into header field blocks and storage blocks; wherein the header field blocks are used to record the metadata of the target storage space, and the metadata of the target storage space includes: the identifier of the target transmission channel, the target... The storage capacity of the target storage space and the storage capacity of the storage block; the storage block includes a metadata area and a data area. The metadata area in each storage block is used to record the metadata corresponding to each storage block. The metadata corresponding to each storage block includes: sender identifier, receiver identifier, and data block identifier; the data area is used to store at least a portion of the data blocks in the target data transmitted between computing devices; the sending unit 403 is used to send information of the target transmission channel to the first computing device and the target computing device; the information of the target transmission channel includes: the identifier of the first computing device, the identifier of the target computing device, the identifier of the target transmission channel, the address of the target storage space, and the capacity of the target storage space.

[0326] In some implementations, there are multiple storage blocks, which are used to enable the first computing device to divide the target data into multiple data blocks based on the storage capacity of the multiple storage blocks.

[0327] Of course, the computing device 200, computing device 300 and management device 400 provided in this application embodiment include, but are not limited to, the above-described modules.

[0328] Figure 12 This is a schematic diagram of the structure of a device 500 provided in the embodiments of this application, such as a computing device or management device. The device 500 can be a computing device such as a server, tablet computer, desktop computer, laptop computer, notebook computer, and netbook. Figure 12 As shown, the device 500 includes a processor 501, a memory 502, and a network interface 503.

[0329] The processor 501 includes one or more CPUs. The CPU can be a single-core CPU or a multi-core CPU.

[0330] The memory 502 includes, but is not limited to, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM), flash memory, or optical memory.

[0331] In some embodiments, the processor 501 implements the data transmission method or transmission channel allocation method provided in the embodiments of this application by reading instructions stored in the memory 502; alternatively, the processor 501 implements the data transmission method or transmission channel allocation method provided in the embodiments of this application by internally stored instructions. When the processor 501 implements the method in the above embodiments by reading instructions stored in the memory 502, the memory 502 stores instructions for implementing the data transmission method or transmission channel allocation method provided in the embodiments of this application.

[0332] Network interface 503 is a type of device that includes a transmitter and a receiver for communicating with other devices or communication networks. It can be a wired interface (port), such as a fiber distributed data interface (FDDI) or a gigabit Ethernet interface (GE). Alternatively, network interface 503 can be a wireless interface. It should be understood that network interface 503 includes multiple physical ports and is used for communication, etc.

[0333] In some implementations, device 500 also includes bus 504, through which processor 501, memory 502, and network interface 503 are typically interconnected, or in other ways.

[0334] In actual implementation, the determining unit 201, writing unit 202, acquiring unit 203, and dividing unit 204; or the determining unit 301, reading unit 302, acquiring unit 303, and splicing unit 304; or the allocating unit 401, dividing unit 402, and sending unit 403, can be implemented by the processor calling computer program code in memory. The specific execution process can be found in the description of the method section above, and will not be repeated here.

[0335] Another embodiment of this application provides a computing device including a memory and a processor. The memory and the processor are coupled; the memory stores computer program code, which includes computer instructions. When the processor executes the computer instructions, it causes the computing device to perform the various steps of the data transmission method shown in the above-described method embodiments.

[0336] This application provides a computing device including a memory and at least one processor connected to the memory. The memory is used to store computer program code, which includes computer instructions. When the computer instructions are executed by the at least one processor, the computing device performs the various steps of the data transmission method shown in the above-described method embodiments.

[0337] Another embodiment of this application also provides a management device, including a processor coupled to a memory for storing programs or instructions. When the program or instructions are executed by the processor, the management device performs the various steps of the transmission channel allocation method shown in the above-described method embodiments.

[0338] Another embodiment of this application provides a computer-readable storage medium storing computer instructions that, when executed on a computing device, cause the computing device to perform each step of the data transmission method flow shown in the above method embodiment; or, when executed on a management device, cause the management device to perform each step of the transmission channel allocation method flow shown in the above method embodiment.

[0339] Another embodiment of this application also provides another chip system applied to a computing device. The chip system includes one or more interface circuits and one or more processors. The interface circuits and processors are interconnected via lines. The interface circuits are used to receive signals from the memory of the computing device and send signals to the processor, the signals including computer instructions stored in the memory. When the processor of the computing device executes the computer instructions, the computing device performs each step of the data transmission method flow shown in the above-described method embodiments.

[0340] Another embodiment of this application provides a chip system applied to a management device. The chip system includes one or more interface circuits and one or more processors. The interface circuits and processors are interconnected via lines. The interface circuits are used to receive signals from the memory of the management device and send signals to the processors, the signals including computer instructions stored in the memory. When the processor of the management device executes the computer instructions, the management device performs each step of the transmission channel allocation method flow shown in the above-described method embodiment.

[0341] In another embodiment of this application, another computer program product is also provided, which includes computer instructions that, when executed on a computing device, cause the computing device to perform each step of the data transmission method flow shown in the above method embodiments.

[0342] In another embodiment of this application, a computer program product is also provided, which includes computer instructions that, when executed on a management device, cause the management device to perform each step of the transmission channel allocation method flow shown in the above method embodiment.

[0343] The above embodiments can be implemented, in whole or in part, by software, hardware, firmware, or any combination thereof. When implemented using software programs, the above embodiments can be implemented, in whole or in part, as a computer program product. This computer program product includes one or more computer instructions. When these computer instructions are loaded and executed on a computer, all or part of the flow or function according to the embodiments of this application is generated. The computer can be a general-purpose computer, a special-purpose computer, a computer network, a server, or other programmable device. The computer instructions can be stored in a computer-readable storage medium or transmitted from one computer-readable storage medium to another. For example, computer instructions can be transmitted from one website, computer, server, or data center to another via wired (e.g., coaxial cable, fiber optic, digital subscriber line (DSL)) or wireless (e.g., infrared, wireless, microwave, etc.) means. The computer-readable storage medium can be any available medium accessible to a computer or a data storage device containing one or more servers, data centers, etc., that can be integrated with the medium. The available media can be magnetic media (e.g., floppy disks, hard disks, magnetic tapes), optical media (e.g., DVDs), or semiconductor media (e.g., solid-state disks, SSDs).

[0344] The above description is merely a specific embodiment of this application. Any variations or substitutions conceived by those skilled in the art based on the specific embodiments provided in this application should be covered within the protection scope of this application.

Claims

1. A data transmission method, characterized in that, The method includes: applying a first computing device in a cluster, the cluster further including a target computing device, the target computing device comprising multiple computing devices; the method includes: The state of the first storage block is determined based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space; wherein, the target storage space is the target transmission channel between the first computing device and the target computing device, including a Compute Interconnect Protocol (CXL) storage device of the target storage space that is communicatively connected to both the first computing device and the target computing device, and the CXL storage device is a device independent of the first computing device and the target computing device; the first storage block includes a data area for storing data blocks transmitted between computing devices, and the state of the first storage block includes an operable state or an inoperable state, wherein the operable state is a writable state; wherein, determining the state of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space includes: when the receiver identifier is not present in the metadata of the first storage block, the state of the first storage block is determined to be the operable state; When the state of the first storage block is the operable state, the first data block is written into the data area of ​​the first storage block, and the identifier of the first computing device is recorded as the sender identifier and the identifier of the target computing device is recorded as the receiver identifier in the metadata area of ​​the first storage block, so that the target computing device reads the first data block from the first storage block according to the receiver identifier; Both the first computing device and the target computing device are connected to a management unit, which manages the storage space of one or more CXL storage devices. Before determining the status of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space, the method further includes: The information of the target transmission channel is obtained from the management unit; the information of the target transmission channel includes the address of the target storage space allocated by the management unit to the first computing device and the target computing device based on the data transmission requirements between the first computing device and the target computing device; the data transmission requirements include the capacity of the transmission channel required between the first computing device and the target computing device.

2. The method according to claim 1, characterized in that, The data recorded in the metadata area of ​​the first storage block is the metadata of the first storage block. The determination of the state of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space further includes: Obtain the metadata of the first storage block recorded in the metadata area of ​​the first storage block.

3. The method according to claim 1 or 2, characterized in that, The target storage space includes a header field block and multiple storage blocks, the multiple storage blocks including the first storage block, the header field block being used to record metadata of the target storage space, the metadata of the target storage space including: the storage capacity of the multiple storage blocks; before writing the first data block into the data area of ​​the first storage block when the state of the first storage block is the operable state, the method further includes: Obtain the storage capacity of the plurality of storage blocks from the header field block; Based on the storage capacity of each storage block, the target data is divided into multiple data blocks; wherein, the multiple data blocks include the first data block, and the storage capacity required by the first data block is less than or equal to the storage capacity of the first storage block.

4. The method according to claim 1 or 2, characterized in that, The method further includes: Set an identifier for the first data block; When the first storage block is in the operable state, after writing the first data block into the data area of ​​the first storage block, the method further includes: The identifier of the first data block is recorded in the metadata area of ​​the first storage block.

5. The method according to claim 1 or 2, characterized in that, The information of the target transmission channel also includes: the identifier of the first computing device, the identifier of the target computing device, the identifier of the target transmission channel, and the capacity of the target storage space.

6. A data transmission method, characterized in that, The method is applied to target computing devices in a cluster, wherein there are multiple target computing devices, and the cluster further includes a first computing device. The state of the first storage block is determined based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space; wherein, the target storage space is a target transmission channel allocated to the first computing device and the target computing device, including a Compute Interconnect Protocol (CXL) storage device of the target storage space that is communicatively connected to both the first computing device and the target computing device, and the CXL storage device is a device independent of the first computing device and the target computing device; the first storage block includes a data area for storing data blocks transmitted between computing devices, and the state of the first storage block includes an operable state or an inoperable state, wherein the operable state is a readable state; wherein, determining the state of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space includes: when the identifier of the target computing device is recorded at the receiver identifier in the metadata of the first storage block, the target computing device determines the state of the first storage block as the operable state; When the state of the first storage block is the operable state, read the first data block in the data area of ​​the first storage block, and delete the identifier of the target computing device recorded at the receiver identifier in the metadata area of ​​the first storage block; Both the first computing device and the target computing device are connected to a management unit, which manages the storage space of one or more CXL storage devices. Before determining the status of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space, the method further includes: The information of the target transmission channel is obtained from the management unit; the information of the target transmission channel includes the address of the target storage space allocated by the management unit to the first computing device and the target computing device based on the data transmission requirements between the first computing device and the target computing device; the data transmission requirements include the capacity of the transmission channel required between the first computing device and the target computing device.

7. The method according to claim 6, characterized in that, The data recorded in the metadata area of ​​the first storage block is the metadata of the first storage block. The determination of the state of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space further includes: Obtain the metadata of the first storage block recorded in the metadata area of ​​the first storage block.

8. A method for allocating transmission channels, characterized in that, The method is applied to a management unit connected to both a first computing device and a target computing device in the cluster. The management unit manages the CXL storage space of one or more CXL storage devices, and the target computing device includes multiple computing devices. Based on the data transmission requirements between the first computing device and the target computing device, a target storage space in the CXL storage space is allocated to the first computing device and the target computing device; the data transmission requirements include the capacity of the transmission channel required between the first computing device and the target computing device; the CXL storage device to which the target storage space belongs is connected to both the first computing device and the target computing device, and the CXL storage device is a device independent of the first computing device and the target computing device; the target storage space is used as a target transmission channel for data transmission between the first computing device and the target computing device. The target storage space is divided into header field blocks and storage blocks. The header field blocks record metadata about the target storage space, including the identifier of the target transmission channel, the storage capacity of the target storage space, and the storage capacity of the storage blocks. Each storage block includes a metadata area and a data area. The metadata area in each storage block records metadata corresponding to that storage block, including the sender identifier, receiver identifier, and data block identifier. The data area stores at least a portion of the data blocks from the target data transmitted between computing devices. The target transmission channel information is sent to the first computing device and the target computing device; the target transmission channel information includes: the identifier of the first computing device, the identifier of the target computing device, the identifier of the target transmission channel, the address of the target storage space, and the capacity of the target storage space; The first computing device is configured to: determine the state of the first storage block based on a receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space; the first storage block includes a data area for storing data blocks transmitted between computing devices, and the state of the first storage block includes an operable state or an inoperable state, wherein the operable state is a writable state; and when the state of the first storage block is the operable state, write the first data block from the data block into the data area of ​​the first storage block, and record the identifier of the first computing device as a sender identifier and the identifier of the target computing device as a receiver identifier in the metadata area of ​​the first storage block, so that the target computing device reads the first data block from the first storage block according to the receiver identifier; wherein determining the state of the first storage block based on the receiver identifier recorded in the metadata area of ​​the first storage block of the target storage space includes: when the metadata of the first storage block does not contain the receiver identifier, determining the state of the first storage block as the operable state.

9. A computing device, characterized in that, The device includes a memory and at least one processor connected to the memory, the memory being used to store computer program code, the computer program code including computer instructions, which, when executed by the at least one processor, cause the computing device to perform the method as described in any one of claims 1 to 7.

10. A management device, characterized in that, The device includes a processor coupled to a memory for storing programs or instructions that, when executed by the processor, cause the management device to perform the method of claim 8.

Citation Information

Patent Citations

  • Computing device and request processing method

    CN115858434A