Information acquisition notification method, system and computing device
By introducing intermediate devices between devices and using the CXL protocol for direct physical link communication, the problem of low communication efficiency based on network notification method is solved, and more efficient data transmission is achieved.
Patent Information
- Application Number
- CN202311118671.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2023-08-31
- Publication Date
- 2025-03-04
- Estimated Expiration
- 2043-08-31
AI Technical Summary
When communicating based on network notification, the communication efficiency between devices is low, mainly due to the long communication path of the network link, resulting in a large delay in information transmission.
By introducing an intermediate device, direct physical link communication is performed using the Computation Quick Link (CXL) protocol, the intermediate device receives a request from the first device and sends a notification request to the second device to trigger the second device to obtain information in the storage device.
By reducing communication paths, this method improves data transmission efficiency between devices, reduces transmission delay, and improves communication efficiency.
Smart Images

Figure CN117376419B_ABST
Abstract
Description
Technical Field
[0001] The embodiments of the present application relate to the field of computers, and in particular, to an information acquisition notification method, system and computing device. Background Art
[0002] With the continuous development of compute express link (CXL) technology, CXL technology has realized the function of multiple devices sharing the storage space of type 3 CXL devices (such as storage devices) (referred to as CXL shared memory pool).
[0003] A common communication method based on CXL shared memory pool includes: a first device stores first information to be sent to a second device in the CXL shared memory pool, then the first device sends a notification of obtaining the first information to the second device through a network link between the first device and the second device, and the second device obtains the first information from the CXL shared memory pool in response to the notification. This communication method can be referred to as: a method based on network notification.
[0004] However, in the process of communicating based on network notification, the first device needs to establish a network link with the second device; since the path for transmitting information through the network link includes the network of communication software and switches, the communication path of the network link is longer, so that the transmission delay of the information to be transmitted on the network link is larger, resulting in lower communication efficiency between the first device and the second device. Summary of the invention
[0005] The embodiments of the present application provide an information acquisition notification method, system and computing device, which can improve the communication efficiency between devices.
[0006] To achieve the above objectives, the present application provides the following technical solutions:
[0007] In a first aspect, an embodiment of the present application provides an information acquisition notification method, which is applied to an intermediate device, which is respectively connected to a first device and a second device based on a computationally fast link (CXL) protocol, and the method includes: receiving a first request from a first device; the first request includes a second device identifier; wherein the second device identifier is used to indicate a second device to obtain first information from a storage device; the first information is information stored in a storage device by the first device to be sent to a second device, and the first device and the second device share a storage device based on the CXL protocol; in response to the first request, a second request is sent to the second device; the second request is used to trigger the second device to obtain an identifier of the first information from the intermediate device or to obtain the first information from the above-mentioned storage device; the identifier of the first information is used to indicate the first information stored in the storage device.
[0008] The communication method provided by the embodiment of the present application includes: an intermediate device receives a first request from a first device, the first request includes an identification of a second device; then, the intermediate device sends a second request to the second device in response to the first request; so that the second device obtains the first information to be sent to the second device stored in the storage device by the first device based on the second request, thereby realizing communication between the first device and the second device. Wherein, the intermediate device is respectively connected to the first device and the second device based on the CXL protocol, so when the intermediate device receives the first request from the first device, it does not need to establish a network connection with the first device, but directly receives the first request through the CXL communication link between the intermediate device and the first device; similarly, when the intermediate device sends the second request to the second device, it also directly sends the second request through the CXL communication link between the intermediate device and the second device; because the CXL communication link is a physical link, the transmission path of the CXL communication link is shorter (that is, the transmission path does not include communication software and switch network), so that the data transmission efficiency is higher, thereby improving the communication efficiency of the first device and the second device.
[0009] In a possible implementation manner, the notification request is an interrupt request.
[0010] In one possible implementation, before sending the second request to the second device indicated by the second device identifier, the method also includes: receiving a third request from the above-mentioned second device; the third request is used to indicate a notification method for sending an interrupt request to the second device; the above-mentioned sending of the second request to the second device indicated by the second device identifier includes: sending the second request to the second device indicated by the second device identifier according to the above-mentioned notification method.
[0011] In a possible implementation, the first request further includes an identifier of the first information; after receiving the first request from the first device, the method further includes: storing the identifier of the first information in a first storage space.
[0012] In a possible implementation manner, storing the identifier of the first information in the first storage space includes: if there is available storage space in the first storage space, storing the identifier of the first information in the first storage space.
[0013] In one possible implementation, when there is no available storage space in the above-mentioned first storage space, feedback information is sent to the first device; the feedback information is used to indicate that storage of the identifier of the first information has failed; a first device identifier indicating the first device is stored in the second storage space; it is determined whether there is available storage space in the first storage space; when there is available storage space in the above-mentioned first storage space, the first device identifier is obtained from the second storage space; a fourth request is sent to the first device according to the above-mentioned first device identifier; the fourth request is used to instruct the first device to resend the identifier of the first information that failed to be stored.
[0014] In a possible implementation manner, the method further includes: after determining that the second device obtains the first information from the storage device, deleting the first information identifier.
[0015] After determining that the second device has obtained the first information from the storage device, the intermediate device deletes the first information identifier, thereby reducing the occupation of the first storage space by invalid data, thereby improving the utilization rate of the first storage space.
[0016] In one possible implementation, the first request also includes a first device identifier. Before sending the second request to the second device indicated by the second device identifier, the method also includes: determining whether the first device and the second device have communication authority based on the first device identifier and the second device identifier; sending the second request to the second device indicated by the second device identifier includes: sending the second request to the second device indicated by the second device identifier when the first device and the second device have communication authority.
[0017] The embodiment of the present application performs authentication by determining whether the first device and the second device belong to the same communication group. When the first device and the second device belong to the same communication group, the authentication is successful; when the first device and the second device do not belong to the same communication group, the authentication fails. In the case of successful authentication, the intermediate device allows the first device and the second device to communicate, and in the case of failed authentication, the intermediate device blocks the communication between the first device and the second device; thereby avoiding the problem of unauthorized devices frequently communicating with the second device and occupying the communication resources of the second device, thereby improving the utilization rate of the communication resources of the second device.
[0018] In one possible implementation, determining whether the first device and the second device have communication authority based on the first device identifier and the second device identifier includes: determining whether the first device and the second device belong to the same communication group based on the first device identifier, the second device identifier and pre-stored communication group information; and determining that the first device and the second device have communication authority when the first device and the second device belong to the same communication group.
[0019] In a possible implementation, when there are multiple identifiers of the first information, the multiple identifiers of the first information are stored in chronological order based on the reception time of the identifiers of the first information.
[0020] In a second aspect, an embodiment of the present application provides an information acquisition notification method, which is applied to a second device, the second device is connected to an intermediate device based on a computationally fast link (CXL) protocol, and the intermediate device is connected to the second device based on the CXL protocol. The method includes: the second device responds to a second request sent by the intermediate device, and obtains an identifier of the first information from the intermediate device through a connection based on the CXL protocol; the identifier of the first information is an identifier of the first information stored in a storage device by the first device, and the first information is information to be sent by the first device to the second device; the first device and the second device share storage space in the above-mentioned storage device; the second device obtains the first information indicated by the identifier of the above-mentioned first information from the storage device.
[0021] In the embodiment of the present application, the second device obtains the identifier of the first information from the intermediate device through a connection based on the CXL protocol, and then the second device obtains the first information indicated by the identifier of the first information from the storage device, thereby realizing communication between the second device and the intermediate device; in this process, the second device obtains the identifier of the first information from the intermediate device through a connection based on the CXL protocol, and does not need to establish a network connection with the intermediate device, thereby improving the communication efficiency between the second device and the intermediate device.
[0022] In a possible implementation, when there are multiple identifiers of first information in the intermediate device, the identifier of the first information obtained from the intermediate device is the identifier of the first information with the longest storage time among the multiple identifiers of first information stored in the intermediate device.
[0023] In a third aspect, an embodiment of the present application provides an information acquisition notification method, which is applied to a first device, and an intermediate device is connected to the first device and the second device respectively based on the Compute Quick Link (CXL) protocol, and the first device and the second device share a storage space in a storage device. The method includes: the first device stores first information in the storage device, and the first information is information to be sent by the first device to the second device; the first device sends a first request to the intermediate device through a connection based on the CXL protocol, and the first request includes a second device identifier; wherein the second device identifier is used to indicate the second device to obtain the first information from the storage device; the first information is information stored in the storage device by the first device to be sent to the second device.
[0024] In a fourth aspect, an embodiment of the present application provides a computing device, which includes: a receiving unit and a sending unit. The receiving unit is used to receive a first request from a first device; the first request includes a second device identifier; wherein the second device identifier is used to indicate a second device to obtain first information from a storage device; the first information is information stored in a storage device by the first device to be sent to a second device, and the first device and the second device share the storage device based on a CXL protocol; the sending unit is used to send a second request to the second device in response to the first request; the second request is used to trigger the second device to obtain an identifier of the first information from an intermediate device or obtain the first information from a storage device; the identifier of the first information is used to indicate the first information stored in the storage device.
[0025] In a possible implementation, the second request is an interrupt request.
[0026] In one possible implementation, the receiving unit is also used to receive a third request from the second device; the third request is used to indicate a notification method for sending an interrupt request to the second device; and the sending unit is specifically used to send a second request to the second device indicated by the second device identifier according to the notification method.
[0027] In a possible implementation, the computing device further includes: a storage unit; the storage unit is used to store the identifier of the first information in the first storage space.
[0028] In a possible implementation manner, the storage unit is specifically configured to store the identifier of the first information in the first storage space when there is available storage space in the first storage space.
[0029] In one possible implementation, the computing device also includes: a processing unit; the sending unit is also used to send feedback information to the first device when there is no available storage space in the first storage space; the feedback information is used to indicate that the storage of the identifier of the first information has failed; the storage unit is also used to store the first device identifier indicating the first device in the second storage space; the processing unit is used to determine whether there is available storage space in the first storage space; the receiving unit is used to obtain the first device identifier from the second storage space when there is available storage space in the first storage space; the sending unit is used to send a fourth request to the first device according to the first device identifier; the fourth request is used to instruct the first device to resend the identifier of the first information that failed to be stored.
[0030] In a possible implementation manner, the processing unit is configured to delete the first information identifier after determining that the second device obtains the first information from the storage device.
[0031] In one possible implementation, the processing unit is used to determine whether the first device and the second device have communication authority based on the first device identifier and the second device identifier; the sending unit is used to send a second request to the second device indicated by the second device identifier if the first device and the second device have communication authority.
[0032] In one possible implementation, the processing unit is specifically used to determine whether the first device and the second device belong to the same communication group based on the first device identifier, the second device identifier and pre-stored communication group information; the processing unit is also specifically used to determine whether the first device and the second device have communication permissions when the first device and the second device belong to the same communication group.
[0033] In a possible implementation, the storage unit is used to store the identifiers of the multiple first information in chronological order based on the reception time of the identifiers of the first information when there are multiple identifiers of the first information.
[0034] In a fifth aspect, an embodiment of the present application provides a computing device, comprising: a first receiving unit and a second receiving unit, the first receiving unit being used to obtain an identifier of first information from the intermediate device through a connection based on the CXL protocol in response to a second request sent by the intermediate device; the identifier of the first information is an identifier of the first information stored by the first device in a storage device, and the first information is information to be sent by the first device to the second device; the first device and the second device share storage space in the storage device; the second receiving unit is also used to obtain the first information indicated by the identifier of the first information from the storage device.
[0035] In a sixth aspect, an embodiment of the present application provides a communication system, which includes: a first device, a second device, a storage device and an intermediate device, wherein the intermediate device communicates with the first device and the second device based on the CXL protocol respectively; the intermediate device receives a first request from the first device; the first request includes a second device identifier; wherein the second device identifier is used to indicate the second device to obtain first information from the storage device; the first information is information stored in the storage device by the first device to be sent to the second device, and the first device and the second device share the storage device based on the CXL protocol; the intermediate device sends a second request to the second device in response to the first request; the second request is used to trigger the second device to obtain an identifier of the first information from the intermediate device or to obtain the first information from the storage device; the identifier of the first information is used to indicate the first information stored in the storage device.
[0036] In one possible implementation, when the second request is used to trigger the second device to obtain an identifier of the first information from the intermediate device, the second device obtains the identifier of the first information from the intermediate device in response to the second request; the second device obtains the first information from the storage device based on the identifier of the first information; or, when the second request is used to trigger the second device to obtain the first information from the storage device, the second device obtains the first information from the storage device.
[0037] In a possible implementation, the first device stores the first information in a storage device; and the first device sends a first request to the intermediate device.
[0038] In the seventh aspect, an embodiment of the present application provides a computing device, comprising a memory and a processor, wherein the memory is coupled to the processor; the memory is used to store computer program code, wherein the computer program code comprises computer instructions; when the computer instructions are executed by the processor, the computing device executes the method described in the first aspect or the second aspect and any one of their possible implementations.
[0039] In an eighth aspect, an embodiment of the present application provides a computer-readable storage medium on which computer instructions are stored. When the computer instructions are executed on a computing device, the computing device executes the method described in any one of the above-mentioned first aspect or second aspect and their possible implementation methods.
[0040] In a ninth aspect, an embodiment of the present application provides a computer program product, which, when executed on a computer, enables the computer to execute the method described in any one of the first aspect or the second aspect and any possible implementation methods thereof.
[0041] It should be understood that the beneficial effects achieved by the technical solutions of the third to ninth aspects of the embodiments of the present application and the corresponding possible implementation methods can be referred to the technical effects of the first or second aspect and their corresponding possible implementation methods mentioned above, and will not be repeated here. BRIEF DESCRIPTION OF THE DRAWINGS
[0042] Figure 1 A schematic diagram of a communication system provided in an embodiment of the present application;
[0043] Figure 2 A schematic diagram of the hardware structure of a computing device provided in an embodiment of the present application;
[0044] Figure 3 A flowchart of an information acquisition notification method provided in an embodiment of the present application;
[0045] Figure 4 A flowchart of another information acquisition notification method provided in an embodiment of the present application;
[0046] Figure 5 A schematic diagram of a storage device provided in an embodiment of the present application;
[0047] Figure 6 A schematic diagram of a method for storing information provided in an embodiment of the present application;
[0048] Figure 7 A flowchart of another information acquisition notification method provided in an embodiment of the present application;
[0049] Figure 8 A flowchart of another information acquisition notification method provided in an embodiment of the present application;
[0050] Fig. 9 A schematic diagram of the structure of a computing device provided in an embodiment of the present application;
[0051] Fig.10 A schematic diagram of the structure of another computing device provided in an embodiment of the present application;
[0052] Fig.11 A schematic diagram of the structure of another computing device provided in an embodiment of the present application. DETAILED DESCRIPTION
[0053] The term "and / or" in this article is merely a description of the association relationship of associated objects, indicating that three relationships may exist. For example, A and / or B can mean: A exists alone, A and B exist at the same time, and B exists alone.
[0054] The terms "first" and "second" in the description and claims of the embodiments of the present application are used to distinguish different objects rather than to describe a specific order of the objects. For example, a first device and a second device are used to distinguish different devices rather than to describe a specific order of the devices.
[0055] In the embodiments of the present application, words such as "exemplary" or "for example" are used to indicate examples, illustrations or descriptions. Any embodiment or design described as "exemplary" or "for example" in the embodiments of the present application should not be interpreted as being more preferred or more advantageous than other embodiments or designs. Specifically, the use of words such as "exemplary" or "for example" is intended to present related concepts in a specific way.
[0056] In the description of the embodiments of the present application, unless otherwise specified, the meaning of "plurality" refers to two or more than two. For example, multiple first identifiers refers to two or more first identifiers.
[0057] First, some concepts involved in an information acquisition notification method, system, and computing device provided in an embodiment of the present application are explained as follows:
[0058] CXL: It is a new type of high-speed interconnect technology. Its physical link layer is compatible with the peripheral component interconnect express (PCIe) standard. CXL defines three transport layer protocols: CXL.io, CXL.cache and CXL.mem. Among them, CXL.io provides a non-cache consistent access interface for io devices; CXL.cache mainly provides the ability to quickly access the host memory by maintaining the cache consistency on the device side; CXL.mem protocol defines the communication interface between the CPU and the memory. In the CXL 3.0 specification, multiple hosts are supported to share the same memory space in the storage device.
[0059] Interrupt request: used to instruct the receiving device to pause the running program and switch to the program that handles the new task. After processing the new task, it returns to the originally paused program to continue running.
[0060] The communication method provided in the embodiment of the present application can be applied to a scenario where multiple devices communicate based on a shared storage space (eg, CXL shared memory pool) in a type 3 CXL device. In the embodiment of the present application, the type 3 CXL device can also be a storage device.
[0061] In one example, the scenario is as follows: device A and device B both cache data A in their respective memories; when device A updates cached data A to data B, in order to ensure data consistency, device A needs to notify device B to update cached data A to data B.
[0062] In another example, the scenario may be: after one device completes reading and writing data in the CXL shared memory pool, it may need to notify the other device to perform certain operations. For example, device X as a data producer notifies device Y as a data consumer to receive data, or device Y as a data consumer notifies device X as a data producer to produce data. In this scenario, device X and device Y can communicate based on the CXL shared memory pool.
[0063] like Figure 1 The communication system shown includes: a first device 101, a second device 102, a storage device 103 and an intermediate device 104. The first device 101 and the second device 102 share the storage space (i.e., CXL shared memory pool) in the storage device 103 based on the CXL protocol. The intermediate device 104 is connected to the first device 101 and the second device 102 based on the CXL protocol.
[0064] It should be noted that the above-mentioned intermediate device can be connected to the first device 101 and the second device 102 based on the CXL.io protocol, or can be connected to the first device 101 and the second device 102 based on the CXL.mem protocol. When the intermediate device is connected to the first device 101 and the second device 102 based on the CXL.io protocol, the intermediate device provides a communication interface to the first device 101 and the second device 102 based on the CXL.io protocol, and the intermediate device communicates with the first device 101 and the second device 102 based on the communication interface. When the intermediate device is connected to the first device 101 and the second device 102 based on the CXL.mem protocol, the intermediate device provides a virtual device physical address (DPA) to the first device 101 and the second device 102 based on the CXL.mem protocol, and the intermediate device communicates with the first device 101 and the second device 102 based on the virtual DPA.
[0065] The first device 101 can serve as a data sending end, or an event sending end, and store information to be sent to (or described as to be sent to) a data receiving end (or an event receiving end) in the above-mentioned storage device 103. The first device 101 can also send the identifier of the information to be sent to the data receiving end to the intermediate device 104. The intermediate device 104 notifies the data receiving end to obtain the identifier, thereby triggering the data receiving end to obtain the information indicated by the identifier from the storage device 103 based on the identifier, thereby realizing communication between the data sending end and the data receiving end.
[0066] For example, the data receiving end is the second device 102. The first device 101 can store the information to be sent to the second device 102 (hereinafter referred to as the first information) in the storage device 103. In addition, the first device 101 can send the identifier of the first information to the intermediate device 104. After receiving the identifier, the intermediate device 104 notifies the second device 102 to obtain the identifier of the first information. After the second device 102 obtains the identifier, it obtains the first information indicated by the identifier from the storage device 103, thereby realizing communication between the first device 101 and the second device 102.
[0067] The first device 101 may be a specific device or a general term for devices that need to send information to the second device 102 . The embodiment of the present application does not limit the specific form of the first device 101 .
[0068] It should be noted that the first device 101 communicates (or interacts) with the storage device 103 or the intermediate device 104 based on the CXL protocol. Similarly, the second device 102 communicates with the storage device 103 or the intermediate device 104 based on the CXL protocol; the embodiments of this application will not be described in detail later. It is understandable that the intermediate device 104 can be a shared CXL device that provides an event notification service for devices that share the CXL shared memory pool, and the event notification service includes the above-mentioned service of notifying the second device 102 of the identification of obtaining the first information.
[0069] Exemplarily, any device in the first device 101 and the second device 102 may be a computing device with processing and transceiver capabilities, such as a tower server, a high-density server, a cabinet server, and a blade server. The storage device 103 is an electronic device (such as a server) that complies with the CXL protocol and has a large storage space. The intermediate device 104 is a computing device that complies with the CXL protocol and has processing capabilities.
[0070] Optionally, the storage device 103 and the intermediate device 104 may be integrated devices or apparatuses, or may be independent devices or apparatuses. The present application embodiment is described by taking the storage device 103 and the intermediate device 104 as independent computing devices as an example, and will not be described in detail later.
[0071] It should be noted that the above system may include multiple groups of devices that need to interact with each other. The embodiment of the present application only takes a pair of devices that need to interact with each other, such as the first device 101 and the second device 102, as an example for explanation, and will not be repeated later.
[0072] For example, Figure 2 It is a schematic diagram of a computing device hardware structure of the first device 101, the second device 102, the storage device 103 or the intermediate device 104. The computing device may specifically be a blade server, a high-density server, a rack server or other types of servers.
[0073] The hardware part of the computing device includes a processor, such as a central processing unit (CPU), an out-of-band controller, and a memory. The processor is electrically connected to the out-of-band controller and the memory, respectively.
[0074] It should be noted that the computing device also runs software, which includes an out-of-band management module and an operating system (OS).
[0075] Among them, Figure 2As shown, the out-of-band management module runs on the out-of-band controller, and the OS runs on the CPU. The out-of-band management module can be a management unit of a non-business module. For example, the out-of-band management module can remotely maintain and manage the computing device through a dedicated data channel. The out-of-band management module is completely independent of the operating system of the computing device.
[0076] Exemplarily, the out-of-band management module may include a computing device baseboard management controller (BMC), a system management module (SMM), etc. It should be noted that the embodiment of the present application does not limit the specific form of the out-of-band management module, and the above is only an exemplary description.
[0077] Among them, the memory, also known as the internal storage, is installed in the memory slot on the motherboard of the computing device, and the memory communicates with the memory controller through a memory channel.
[0078] It should be noted that the system architecture and application scenarios described in the embodiments of the present application are intended to more clearly illustrate the technical solutions of the embodiments of the present application, and do not constitute a limitation on the technical solutions provided in the embodiments of the present application. Ordinary technicians in this field can know that with the evolution of the system architecture and the emergence of new business scenarios, the technical solutions provided in the embodiments of the present application are also applicable to similar technical problems.
[0079] The present application embodiment provides a method for obtaining information notification, such as Figure 3 As shown, the method may include S110 - S120 .
[0080] S110. The intermediate device receives a first request from the first device.
[0081] The intermediate device communicates with the first device based on the CXL protocol; that is, the intermediate device receives the first request from the CXL communication link between the intermediate device and the first device.
[0082] The above-mentioned first request includes: a second device identifier, wherein the second device identifier is used to indicate a second device that obtains first information from a storage device; the first information is information stored in the storage device by the first device to be sent to the second device; that is, the first information is information to be received by the second device.
[0083] The first device and the second device share a storage space in the storage device based on the CXL protocol (referred to as: shared storage space).
[0084] The intermediate device executes the following S120 in response to the first request.
[0085] S120. The intermediate device sends a second request to the second device.
[0086] It should be noted that the intermediate device communicates with the second device based on the CXL protocol; that is, the intermediate device sends the second request to the second device based on the CXL communication link between the intermediate device and the second device.
[0087] In one implementation, the second request is used to trigger the second device to obtain an identifier of the first information from the intermediate device, and the identifier of the first information is used to indicate the first information stored in the storage device; that is, the second request is used to trigger the second device to obtain the first information from the storage device based on the identifier of the first information stored in the intermediate device; the specific implementation process is described in Example 1 below.
[0088] In another implementation, the second request is used to trigger the second device to directly obtain the first information from the storage device; the specific implementation process is described in the following embodiment 2.
[0089] The communication method provided by the embodiment of the present application includes: an intermediate device receives a first request from a first device, the first request includes an identification of a second device; then, the intermediate device sends a second request to the second device in response to the first request; so that the second device obtains the first information to be sent to the second device stored in the storage device by the first device based on the second request, thereby realizing communication between the first device and the second device. Wherein, the intermediate device is respectively connected to the first device and the second device based on the CXL protocol, so when the intermediate device receives the first request from the first device, it does not need to establish a network connection with the first device, but directly receives the first request through the CXL communication link between the intermediate device and the first device; similarly, when the intermediate device sends the second request to the second device, it also directly sends the second request through the CXL communication link between the intermediate device and the second device; because the CXL communication link is a physical link, the transmission path of the CXL communication link is shorter (that is, the transmission path does not include communication software and switch network), so that the data transmission efficiency is higher, thereby improving the communication efficiency of the first device and the second device.
[0090] Example 1
[0091] An information acquisition notification method provided by an embodiment of the present application is as follows: Figure 4 As shown, the method may include S210 - S270 .
[0092] S210: The first device sends first information to the storage device.
[0093] The first information is information to be sent (or needs to be sent) by the first device to the second device. In other words, the first information is information to be received by the second device.
[0094] It should be noted that the first device is Figure 1 The first device 101 in the storage device is Figure 1 The storage device 103 in the second device is Figure 1 For the convenience of description, in the embodiment of the present application, the first device 101 is referred to as the first device, the storage device 103 is referred to as the storage device, and the second device 102 is referred to as the second device, which will not be described in detail later.
[0095] The first device and the second device share a storage space in the storage device based on the CXL protocol (referred to as: shared storage space). That is, the first device and the storage device are connected based on the CXL protocol, and then the first device sends the first information to the storage device. The specific implementation includes: the first device sends the first information to the storage device through the CXL communication link between the first device and the storage device; wherein the shared storage space includes: the storage space in the memory of the storage device.
[0096] S220: The storage device stores the first information.
[0097] In a first implementation, the specific implementation of S220 includes: the storage device receives the first information from the CXL communication link between the storage device and the first device; and stores the first information in a storage space A in the shared storage space. The storage space A is a storage space for storing information (such as the first information) sent by the first device.
[0098] It should be noted that in the above implementation, the storage device (such as: the processor in the storage device) divides the shared storage space thereon into multiple storage spaces, and any one of the multiple storage spaces is used to store information sent by the device corresponding to the storage space. For example, the storage space can correspond to the device identifier, and different storage spaces correspond to different device identifiers.
[0099] For example, Figure 5 The shared storage space of the storage device shown is divided into N parts, which specifically include: storage space 1 to storage space N. Storage space 1 is used to store information sent by device 1, storage space 2 is used to store information sent by device 2, and so on, storage space N is used to store information sent by device N. Assume that: device 1 is the above-mentioned first device, and device 2 is the above-mentioned second device. At this time, after the storage device receives the first information sent by the first device and the second information sent by the second device, the storage device stores the first information in storage space 1 and stores the second information in storage space 2.
[0100] In a second implementation, the specific implementation of S220 includes: the storage device receives the first information from the CXL communication link between the storage device and the first device; and stores the first information in a target storage space in the shared storage space. The target storage space is used to store information sent by communication devices (such as the first device and the second device), that is, the storage device stores all information sent by all communication devices in the target storage space.
[0101] It should be noted that the above S210-S220 is a specific implementation method in which the first device stores the first information in the storage device.
[0102] S230: The intermediate device receives a first request from the first device.
[0103] The first request includes an identifier of the first information and a second device identifier. The second device identifier is used to indicate a second device to obtain the first information from the storage device; that is, the second device identifier is an identifier of the device to which the first information is to be sent.
[0104] The identifier of the first information (hereinafter referred to as the first identifier) is the identifier of the first information stored by the first device in the storage device. The first identifier may be the storage address of the first information in the shared storage space, or the ID of the first information, or the index of the first information. The specific embodiment of the present application does not limit the specific content of the first identifier.
[0105] It should be noted that the above intermediate equipment is Figure 1 For the convenience of description, the intermediate device 104 in the embodiment of the present application is referred to as the intermediate device for short, and will not be described in detail later.
[0106] The intermediate device is connected to the first device based on the CXL protocol, that is, the intermediate device receives the first request sent by the first device through the CXL communication link between the intermediate device and the first device.
[0107] S240. The intermediate device stores the first identifier.
[0108] The implementation of S240 is as follows: the intermediate device stores the first identifier in the first storage space; wherein the first storage space is a partial storage space of the intermediate device, that is, the intermediate device includes the first storage space. The first storage space is used to store the identifier of the information to be sent to the second device, that is, the first storage space is used to store the identifier of the information to be received by the second device.
[0109] For example: when device A sends identification A of the second device's to-be-received information A to the intermediate device, the intermediate device stores identification A in the first storage space; when device B sends identification B of the second device's to-be-received information B to the intermediate device, the intermediate device stores identification B in the first storage space.
[0110] For the specific implementation of the above S240, please refer to the following S241-S247, which will not be repeated here.
[0111] S250: The intermediate device sends a second request to the second device.
[0112] The second request (notification request) is used to trigger the second device to obtain the first identifier from the intermediate device; that is, the notification request is used to instruct the second device to execute the following S260.
[0113] The intermediate device is connected to the second device based on the CXL protocol, that is, the intermediate device sends the second request to the second device through the CXL communication link between the intermediate device and the second device.
[0114] The second request is an interrupt request, which is specifically used to trigger the second device to obtain the first identifier from the intermediate device in an interrupt manner. Specifically, the interrupt request is used to trigger the second device to pause the currently executing task (such as task A) and switch to the task of obtaining the first identifier from the intermediate device; after the second device obtains the first identifier (that is, the task of obtaining the first identifier is completed), the second device continues to execute the originally suspended task A.
[0115] It should be understood that the above interrupt request may be a message signal interrupt (MSI) interrupt request. The sending method (referred to as: target notification method) of the intermediate device to send the MSI interrupt request to the second device includes: the intermediate device writes a specific message to a specific location of the second device; so that after the second device detects that the specific message is written to the specific location, the second device actively interrupts.
[0116] The above-mentioned target notification method can be that the second device is registered in the intermediate device; it can also be that the intermediate device obtains it from the second device before sending a notification request to the second device; specifically, the embodiment of the present application does not limit the specific implementation of the intermediate device obtaining the target notification method of the second device.
[0117] In one implementation, the specific implementation of the second device registering the target notification method in the intermediate device includes: the intermediate device receives a third request (registration request) from the second device including the target notification method, wherein the target notification method is used to describe a method of sending an interrupt request to the second device, such as: the intermediate device writes the target data to the storage space x in the second device to trigger the second device to actively interrupt (i.e.: the second device detects that the target data is written to the storage space x, and the second device actively interrupts), and then the intermediate device stores the target notification method. Subsequently, when the intermediate device sends a second request to the second device via a connection based on the CXL protocol, the intermediate device first obtains the target notification method from the first storage space, and then the intermediate device sends the second request to the second device via a connection based on the CXL protocol in the target notification method.
[0118] S260: The second device obtains the first identifier from the intermediate device.
[0119] The specific implementation of the above S260 includes: the second device reads the first identifier from the first storage space of the intermediate device through the CXL communication link between the second device and the intermediate device.
[0120] Optionally, when there are multiple first identifiers in the first storage space, the first identifier obtained by the second device from the intermediate device is the first identifier with the longest storage time among the multiple first identifiers; for example, the multiple first identifiers in the first storage space are arranged in descending order of storage time, and the second device reads the first first identifier in the first storage space.
[0121] S270: The second device obtains first information indicated by the first identifier from the storage device.
[0122] The specific implementation of the above S270 includes: the second device reads the first information indicated by the first identifier from the storage space A in the shared storage space.
[0123] It should be noted that the above-mentioned storage space A is consistent with the storage space A in S220. For the specific description of the storage space A in S270, please refer to the relevant description of the storage space A in S220, which will not be repeated here.
[0124] Exemplarily, the first device stores information 1 in a storage device, and the information 1 is information to be sent by the first device to the second device. Then, the first device sends the identifier of the information 1 (i.e., identifier 1) to the intermediate device. After receiving the identifier 1, the intermediate device sends a second request to the second device, and the second device obtains the identifier 1 from the intermediate device in response to the second request. Finally, the second device obtains the information 1 indicated by the identifier 1 from the storage device, thereby realizing communication between the first device and the second device.
[0125] Optionally, in one implementation, after the second device obtains the first information indicated by the first identifier, the method further includes: the second device notifies the intermediate device to delete the first identifier from the first storage space, so that the intermediate device deletes the first identifier. In another implementation, after the second device obtains the first identifier from the intermediate device, the intermediate device actively deletes the first identifier stored in the first storage space; thereby reducing the occupation of the first storage space by invalid data, and thus improving the utilization rate of the first storage space.
[0126] In the communication method provided by the embodiment of the present application, the first device stores the first information to be sent to the second device in a shared storage space between the first device and the second device; then, after the intermediate device receives a first request including an identifier of the first information (i.e., the first identifier) and a second device identifier from the first device, the intermediate device sends a second request to the second device indicated by the second device identifier to trigger the second device to obtain the first identifier from the intermediate device; so that after obtaining the first identifier, the second device obtains the first information indicated by the first identifier from the shared storage space, thereby realizing communication between the first device and the second device. Among them, the intermediate device is connected to the first device and the second device based on the CXL protocol respectively, so when the intermediate device receives the first request from the first device, it does not need to establish a network connection with the first device, but directly receives the first request through the CXL communication link between the intermediate device and the first device; similarly, when the intermediate device sends a second request to the second device for instructing the second device to obtain the first identifier from the intermediate device, the second request is also sent directly through the CXL communication link between the intermediate device and the second device; because the CXL communication link is a physical link, the transmission path of the CXL communication link is shorter (that is, the transmission path does not include communication software and switch network), so that data transmission efficiency is higher, thereby improving the communication efficiency of the first device and the second device.
[0127] In one implementation, the specific implementation of S240 is as follows: Figure 6 As shown, including: S241-S247.
[0128] S241: The intermediate device determines whether there is available storage space in the first storage space.
[0129] The first storage space is part of the storage space of the intermediate device, that is, the shared storage space includes the first storage space. The first storage space is used to store the identification of information to be sent to the second device, that is, the first storage space is used to store the identification of information to be received by the second device.
[0130] The available storage space is a storage space in the first storage space where no data is stored, that is, the available storage space is a free storage space in the first storage space.
[0131] It should be noted that a specific implementation of the above S241 may be that a processor of the intermediate device actively obtains the available storage space of the first storage space from the memory of the intermediate device.
[0132] When there is available storage space in the first storage space, the intermediate device executes the following S242.
[0133] When there is no available storage space in the first storage space, the intermediate device executes the following S243-S247.
[0134] S242: The intermediate device stores the first identifier in the first storage space.
[0135] The specific implementation of the above S242 includes: the intermediate device stores the first identifier in the available storage space in the first storage space.
[0136] It should be noted that, when there are multiple first identifiers in the first storage space, the intermediate device maintains the order of the multiple first identifiers through pointers. For example: when the multiple first identifiers are arranged from large to small according to the storage time, the head pointer points to the first identifier with the largest storage time among the multiple first identifiers, and the tail pointer points to the first identifier with the smallest storage time among the multiple first identifiers. Subsequently, after the second device receives the second request sent by the intermediate device, the second device obtains the first identifier pointed to by the head pointer. Such a storage method allows the second device to read the first identifier with the largest storage time in the first storage space when the first storage space includes multiple first identifiers.
[0137] Optionally, the first storage space may also be part of the shared storage space of the storage device. In this case, when the intermediate device determines that there is available storage space in the first storage space, the intermediate device writes the first identifier into the first storage space of the storage device.
[0138] It should be understood that, in the case where there are multiple first identifiers in the first storage space, the multiple first identifiers are stored in the order of the time when the intermediate device or storage device receives the multiple first identifiers, specifically including: maintaining the order of the multiple first identifiers through pointers. For example, after the intermediate device writes the first identifier A into the first storage space, the tail pointer is controlled to point to the first identifier A; subsequently, when the second device reads the first identifier in the first storage space, it reads the first identifier pointed to by the head pointer in the first storage space; so that the second device can read the first identifier with the largest storage time in the first storage space.
[0139] S243: The intermediate device stores the first device identifier in the second storage space.
[0140] The first device identifier is used to indicate the first device that sends the first request to the intermediate device.
[0141] The second storage space is part of the storage space of the storage device, and the second storage space is used to store the identification of the sending device, which is the device that sends the identification of the information to be received by the second device (such as the first identification).
[0142] It should be understood that, since the first identifier is sent by the first device, when there is no available storage space in the first storage space, the intermediate device stores the first device identifier in the second storage space.
[0143] It should be noted that the identifiers of any two devices stored in the second storage space are different; that is, when the intermediate device stores the first device identifier in the second storage space, it is necessary to first query whether the first device identifier exists in the second storage space. When the first device identifier exists in the second storage space, the intermediate device does not store the first device identifier in the second storage space; when the first device identifier does not exist in the second storage space, the intermediate device stores the second device identifier in the first storage space.
[0144] S244. The intermediate device sends feedback information to the first device.
[0145] The above feedback information is used to indicate feedback information that the first identification fails to store.
[0146] The specific implementation of the above S244 includes: the intermediate device sends the above feedback information to the first device through the CXL communication link between the intermediate device and the first device.
[0147] Optionally, after receiving the above feedback information, the first device marks the first identifier as an identifier of storage failure in the first storage space, and stores the first identifier.
[0148] It should be noted that the intermediate device may first execute the above S243 and then execute the above S244; the intermediate device may also first execute the above S244 and then execute the above S243. Specifically, the embodiment of the present application does not limit the order in which the intermediate device executes S243 and S244.
[0149] S245: The intermediate device monitors whether there is available storage space in the first storage space.
[0150] It should be noted that the implementation method of the above S245 is similar to the implementation method of S241. For the specific description of S245, please refer to the above description of S241, which will not be repeated here.
[0151] Subsequently, when there is available storage space in the first storage space, the intermediate device executes S246 - S247 .
[0152] S246: The intermediate device obtains the first device identifier from the second storage space.
[0153] The specific implementation of the above S246 includes: the processor of the intermediate device reads the first device identifier from the second storage space.
[0154] S247: The intermediate device sends a fourth request to the first device according to the first device identifier.
[0155] The fourth request is used to instruct the first device to resend an identifier of storage failure (eg, the first identifier).
[0156] The specific implementation of S247 includes: the intermediate device sends the fourth request to the first device through the CXL communication link between the intermediate device and the first device.
[0157] After receiving the fourth request, the first device sends the locally stored first identifier indicating storage failure in the first storage space to the intermediate device.
[0158] It should be understood that after receiving the first identifier retransmitted by the first device, the intermediate device executes the above S241 again until the first identifier is successfully stored in the first storage space.
[0159] It should be noted that, when there are identifiers of multiple devices in the second storage space, the intermediate device needs to obtain the identifier of each device and send a retransmission notification to each device.
[0160] Example 2
[0161] Another information acquisition notification method provided by the embodiment of the present application is as follows: Figure 7 As shown, the method may include S310 - S350 .
[0162] S310: A first device sends first information to a storage device.
[0163] It should be noted that the implementation method of the above S310 is consistent with the implementation method of S210. For the specific description of S310, please refer to the above related description of S210, which will not be repeated here.
[0164] S320: The storage device stores the first information.
[0165] In a first implementation, the specific implementation of S320 includes: the storage device receives the first information from the CXL communication link between the storage device and the first device; and stores the first information in a storage space B in the shared storage space. The storage space B is a storage space for storing information to be sent to the second device, that is, the storage space B is used to store the information to be received by the second device.
[0166] It should be noted that the storage space B is a storage space agreed upon by the first device and the second device for storing the to-be-received information of the second device. When the second device needs to obtain the to-be-received message subsequently, it directly obtains it from the storage space B.
[0167] In a second implementation, the specific implementation of S320 includes: the storage device stores the first information in a storage space C in a shared storage space. The storage space C is used to store information sent by communication devices (such as the first device and the second device), that is, the storage device stores all information sent by the communication devices in the storage space C. Then, the storage device stores the identifier of the first information (referred to as the first identifier) in the first storage space of the storage device; the first storage space is a storage space for storing the identifier of the information to be received by the second device.
[0168] It should be noted that the above-mentioned first storage space is a storage space agreed upon by the first device and the second device for storing the identification of the information to be received by the second device. When the second device needs to obtain the identification of the information to be received subsequently, it directly obtains it from the first storage space.
[0169] It should be understood that the implementation method of the above storage device storing the first identifier in the first storage space is similar to S240. For the specific description of the storage device storing the first identifier in the first storage space, reference can be made to the above description of S240, which will not be repeated here.
[0170] S330: The intermediate device receives a first request from the first device.
[0171] The first request includes: a second device identifier, wherein the second device identifier is used to indicate a second device from which the first information is to be obtained.
[0172] It should be noted that the implementation method of the above S330 is similar to that of S230. For the specific description of S330, please refer to the above related description of S230, which will not be repeated here.
[0173] S340: The intermediate device sends a second request to the second device.
[0174] The second request is used to instruct the second device to execute the following S350.
[0175] It should be noted that the implementation method of the above S340 is similar to that of S250. For the specific description of S340, please refer to the above related description of S250, which will not be repeated here.
[0176] S350: The second device obtains first information from the storage device.
[0177] In the case where S320 stores the first information in the first implementation manner, a specific implementation manner of the above S350 includes: the second device directly reads the first information from the storage space B.
[0178] It should be noted that the above-mentioned storage space B is the same storage space as the storage space B in S320. For the specific description of the storage space B in S350, please refer to the relevant description of the storage space B in S320, which will not be repeated here.
[0179] In the case where S320 stores the first information in the second implementation manner, the specific implementation manner of the above S350 includes: the second device reads the first identifier from the first storage space of the storage device, and then the second device reads the first information indicated by the first identifier from the storage space C.
[0180] In the above embodiment, the intermediate device is respectively connected to the first device and the second device based on the CXL protocol, so when the intermediate device receives the first request from the first device, it does not need to establish a network connection with the first device, but directly receives the first request through the CXL communication link between the intermediate device and the first device; similarly, when the intermediate device sends a second request to the second device for instructing the second device to obtain the first identifier from the intermediate device, the second request is also sent directly through the CXL communication link between the intermediate device and the second device; because the CXL communication link is a physical link, the transmission path of the CXL communication link is shorter (that is, the transmission path does not include communication software and a switch network), so that data transmission efficiency is higher, thereby improving the communication efficiency between the first device and the second device.
[0181] In one embodiment, in combination Figure 4 ,like Figure 8 As shown, before executing the above S250 or the above S340, the intermediate device further includes: S410.
[0182] S410: The intermediate device performs authentication.
[0183] The above authentication is used to determine whether the first device and the second device have the communication authority, wherein, when the first device and the second device belong to the same communication group, the intermediate device determines that the first device and the second device have the communication authority, that is, the authentication is successful, and the intermediate device executes S250. When the first device and the second device do not belong to the same communication group, the intermediate device determines that the first device and the second device do not have the communication authority, that is, the authentication fails, and the intermediate device executes the end action to end the current process, that is, the intermediate device does not execute S250.
[0184] In one possible implementation, the intermediate device stores at least one member information, the at least one member information corresponds to at least one communication group, and the member information corresponding to a communication group includes the identification of the device belonging to the communication group. In another possible implementation, the intermediate device stores at least one communication group identification, wherein the communication group identification (which may also be called authentication information) may be a group key / group password or a group ID.
[0185] In another possible implementation, the intermediate device may store the at least one member information and the identifier of the at least one communication group (also referred to as communication group information). The at least one member information and the identifier of the at least one communication group correspond one to one. The member information may also be referred to as a member configuration table or a group member configuration table. In a possible implementation, the member information or the member configuration table may include both the group key and the group ID.
[0186] For example, take the example that the intermediate device stores at least one member information and at least one communication group identifier. As shown in Table 1 below, device 1, device 2 and device 3 belong to a communication group A, such as the identifier of the communication group is the id of communication group A, and device 4 and device 5 belong to a communication group B, such as the identifier of the communication group is the id of communication group B. Then, the member information and communication group identifiers stored in the intermediate device can be as shown in Table 1 below, where the member information (the identifier of device 1, such as identifier 1, the identifier of device 2, such as identifier 2, and the identifier of device 3, such as identifier 3) corresponds to the id of communication group A, and the member information (the identifier of device 4, such as identifier 4, and the identifier of device 5, such as identifier 5) corresponds to the id of communication group B.
[0187] Table 1
[0188] Communication group ID Member Information The ID of communication group A Logo 1, Logo 2, Logo 3 The ID of communication group B Logo 4, Logo 5
[0189] In one implementation, when the intermediate device stores at least one identification of a communication group, the specific implementation of S410 includes: S1.
[0190] S1. The intermediate device performs authentication according to the second identifier and the third identifier.
[0191] The second identifier is an identifier of the communication group to which the first device belongs (eg, a group key or a group ID), and the third identifier is an identifier of the communication group to which the second device belongs.
[0192] When the second identifier is the same as the third identifier, the first device and the second device belong to the same communication group, and the above authentication is successful.
[0193] When the second identifier is different from the third identifier, the first device and the second device do not belong to the same communication group, and the above authentication fails.
[0194] Exemplarily, it is assumed that at least one of the above-mentioned communication groups includes: communication group A and communication group B. Among them, communication group A includes device 1, device 2 and device 3, that is, the identifier of the communication group where device 1, device 2 and device 3 are located is the id of communication group A, such as id1. Communication group B includes: device 4 and device 5, that is, the identifier of the communication group where device 4 and device 5 are located is the id of communication group B, such as id2. Assuming that the second identifier and the third identifier are both id1, then, at this time, the first device and the second device belong to the same communication group, and the authentication is successful. Assuming that the second identifier is id1 and the third identifier is id2, since the second identifier and the third identifier are different, that is, the first device and the second device are no longer in the same communication group, the authentication fails.
[0195] In another implementation, the above-mentioned authentication of the first device includes: S2.
[0196] S2. The intermediate device performs authentication according to the first device identifier, the second device identifier, and at least one member information included in the intermediate device.
[0197] The specific implementation of the above S2 is: when the first device identifier and the second device identifier are included in the member information corresponding to the same communication group, the authentication is successful; when the first device identifier and the second device identifier are not included in the member information corresponding to the same communication group, the authentication fails; that is, when there is member information that includes both the first device identifier and the second device identifier in the at least one member information, the above authentication is successful; when there is no member information that includes both the first device identifier and the second device identifier in the at least one member information, the above authentication fails.
[0198] Exemplarily, assume that the first device is identified as "Identifier 1", the second device is identified as "Identifier 2", and at least one member information included in the intermediate device is as shown in Table 1 above; then, at this time, the member information corresponding to the communication group A in Table 1 includes both: "Identifier 1" and "Identifier 2"; that is: the first device and the second device both belong to communication group A; so the intermediate device authentication is successful.
[0199] As another example, assume that the first device is identified as "Identifier 1", the second device is identified as "Identifier 4", and at least one member information included in the intermediate device is as shown in Table 1 above; then, at this time, there is no member information in Table 1 that includes both "Identifier 1" and "Identifier 4", that is, the first device and the second device do not belong to the same communication group, so the authentication of the intermediate device fails.
[0200] It should be noted that at least one member information in the intermediate device can be obtained by multiple devices registering in the intermediate device; it can also be pre-configured in the intermediate device by a user or a management device, and the management device is a device other than the first device, the second device, the storage device and the intermediate device; specifically, the embodiment of the present application does not limit the method for obtaining at least one communication group in the intermediate device.
[0201] In one implementation, the method for registering a communication group in an intermediate device includes: the intermediate device receives an authentication request from at least one device, the authentication request is used to request to join a communication group, the authentication request includes a key corresponding to the communication group, and when the intermediate device passes the key verification, the identifier of the device is added to the member information corresponding to the communication group. This avoids the problem of malicious devices joining the communication group and frequently sending notification requests to devices in the group through the intermediate device, thereby improving the security of communication between devices.
[0202] For example, device A sends an authentication request to the intermediate device, and the authentication request includes key A; after receiving the authentication request, the intermediate device determines whether there is a communication group whose key is key A (referred to as: communication group A) in the communication group corresponding to at least one member information stored locally; when communication group A exists, the intermediate device adds the identification of device A to the member information corresponding to communication group A.
[0203] It should be noted that the above-mentioned key can be created by a management device and then released to at least one device through a secure channel; it can also be created by an intermediate device, and then the intermediate device sends the key to the management device or the associated device actively reads the key from the intermediate device, and then the management device sends it to the at least one device according to the business type of at least one device; the specific embodiment of the present application does not limit the subject of creating and joining the key.
[0204] The embodiment of the present application performs authentication by determining whether the first device and the second device belong to the same communication group. When the first device and the second device belong to the same communication group, the authentication is successful; when the first device and the second device do not belong to the same communication group, the authentication fails. In the case of successful authentication, the intermediate device allows the first device and the second device to communicate, and in the case of failed authentication, the intermediate device blocks the communication between the first device and the second device; thereby avoiding the problem of unauthorized devices frequently communicating with the second device and occupying the communication resources of the second device, thereby improving the utilization rate of the communication resources of the second device.
[0205] The above mainly introduces the solution provided by the embodiment of the present application from the perspective of the method. In order to realize the above functions, it includes hardware structures and / or software modules corresponding to the execution of each function. Those skilled in the art should easily realize that, in combination with the units and algorithm steps of each example described in the embodiments disclosed herein, the present application can be implemented in the form of hardware or a combination of hardware and computer software. Whether a function is executed in the form of hardware or computer software driving hardware depends on the specific application and design constraints of the technical solution. Professional and technical personnel can use different methods to implement the described functions for each specific application, but such implementation should not be considered to exceed the scope of the present application.
[0206] The embodiment of the present application can divide the computing device corresponding to the intermediate device into functional modules according to the above method example. For example, each functional module can be divided according to each function, or two or more functions can be integrated into one processing module. The above integrated module can be implemented in the form of hardware or in the form of software functional modules. It should be noted that the division of modules in the embodiment of the present application is schematic and is only a logical function division. There may be other division methods in actual implementation.
[0207] In the case of dividing each functional module into corresponding functional modules, Fig. 9 A possible structural diagram of the computing device 700 involved in the above embodiment is shown. Fig. 9 As shown, the computing device 700 includes: a receiving unit 701 and a sending unit 702 .
[0208] The receiving unit 701 is configured to receive a first request from a first device; for example, to execute step S110 in the above method embodiment.
[0209] The sending unit 702 is used to send a second request to the second device; for example, execute step 120 in the above method embodiment.
[0210] Optionally, the receiving unit 701 is further used to receive a third request from the second device, where the third request is used to indicate a notification method of sending an interrupt request to the second device;
[0211] The sending unit 702 is specifically configured to send a second request to the second device indicated by the second device identifier according to the notification manner.
[0212] Optionally, the computing device 700 further includes: a storage unit 703 .
[0213] The storage unit 703 is used to store the identifier of the first information in the first storage space.
[0214] Optionally, the storage unit 703 is specifically configured to store the first identifier in the first storage space when there is available storage space in the first storage space; for example, executing step S242 in the above method embodiment.
[0215] Optionally, the storage unit 703 is further configured to store the identifier of the first information in the first storage space when there is no available storage space in the first storage space; for example, executing step S242 in the above method embodiment.
[0216] Optionally, the computing device 700 also includes: a processing unit 704 .
[0217] The sending unit 702 is further configured to send feedback information to the first device; for example, executing step S244 in the above method embodiment.
[0218] The storage unit 703 is used to store the first device identification indicating the first device in the second storage space; for example, execute step S243 in the above method embodiment.
[0219] The processing unit 704 is used to determine whether there is available storage space in the first storage space; for example, executing step S245 in the above method embodiment.
[0220] The receiving unit 701 is used to obtain the first device identification from the second storage space when there is available storage space in the first storage space; for example, executing step S246 in the above method embodiment.
[0221] The sending unit 702 is further configured to send a fourth request to the first device according to the first device identifier; for example, executing step S247 in the above method embodiment.
[0222] Optionally, the processing unit 704 is configured to delete the first device identifier after determining that the second device obtains the first information from the storage device.
[0223] Optionally, the processing unit 704 is specifically configured to determine whether the first device and the second device have communication authority based on the first device identifier and the second device identifier.
[0224] The sending unit 702 is used to send a second request to the second device indicated by the second device identifier when the first device and the second device have communication authority.
[0225] Optionally, the processing unit 704 is specifically configured to determine whether the first device and the second device belong to the same communication group based on the first device identifier, the second device identifier and pre-stored communication group information;
[0226] The processing unit 704 is further specifically configured to determine, when the first device and the second device belong to the same communication group, whether the first device and the second device have the communication authority.
[0227] Optionally, the storage unit 703 is further configured to store the identifiers of the multiple first information in chronological order based on the reception time of the identifiers of the first information when there are multiple identifiers of the first information.
[0228] For the detailed description of the above optional methods, please refer to the above method embodiments, which will not be repeated here. In addition, the explanation of any computing device 700 provided above and the description of the beneficial effects can refer to the above corresponding method embodiments, which will not be repeated here.
[0229] In other embodiments, the above-mentioned intermediate device can be understood as a core hardware module for implementing the above-mentioned process. The intermediate device may include a setting interface, an event sending interface, and an event acquisition interface. The storage device of the intermediate device, such as an internal memory, is used to store the above-mentioned group member configuration table and the host situation table (including: the identifier of the event receiver, the identifier of the information to be received by each event receiver, and the target notification method for each event reception return). Among them, the above-mentioned setting interface, event sending interface and event can be a physical interface or a virtual interface, and the specific embodiments of the present application do not limit them.
[0230] Wherein, in the case where the key of the communication group, or group key, is configured by the associated device, the management device can create a group key for each communication group through the setting interface. Each device (such as the first device and the second device mentioned above) can use the group key as a credential and use the setting interface to join the communication group. Each device (such as the first device and the second device mentioned above) can also use the setting interface to register its desired target notification method with the intermediate device, that is, to declare its method of expecting to receive asynchronous event notifications (such as interrupts) through the setting interface.
[0231] Among them, the host situation table registers the method of receiving asynchronous event notifications expected by each device (such as the second device). The same device may need two asynchronous event notifications: one for receiving notifications from the communication party (such as the first device), and the other for receiving notifications from the intermediate device. These notifications can be reflected in the registration in the intermediate device for the intermediate device to communicate with the second device and the second device with the first device. The host situation table can also include a corresponding device, such as a list of event description information to be received by the second device, and use the head pointer and tail pointer to maintain the state of this event description information list. The event description information list may include the identifier of the information to be received by the second device, such as the first identifier. In the case where the event description information list is full, the host situation table can also set a waiting bitmap to provide asynchronous event notification support for the device that expects to send event notifications, such as the identifier of the device that failed to store the identifier in the waiting bitmap. When this list becomes non-full, the intermediate device can notify the corresponding device in the waiting bitmap to "try the event sending request that was not successful before", that is, "retransmit the identifier of the storage failure" in the above embodiment.
[0232] The event sender, such as the first device, can request the intermediate device to record the identifier of the information to be sent to the event receiver, such as the first identifier, at the end of the event description information list of the event receiver through the event sending interface, and send an event notification to the event receiver, such as the second device. Specifically, when there is free space in the event description information list corresponding to the event receiver, the intermediate device will perform the action expected by the event sender, that is, record the first identifier at the end of the event description information list of the event receiver. Otherwise, the intermediate device can add the identifier of the event sender, such as the identifier of the first device, to the waiting bitmap (the position recorded in the waiting bitmap can correspond to its serial number in the group member configuration table), and indicate to the event sender that the event sending failed.
[0233] After receiving the event notification, the event receiver, such as the second device, can obtain the description information of the first unprocessed event through the event acquisition interface, that is, obtain the first first identifier, that is, the first identifier with the longest storage time.
[0234] It should be noted that, in this embodiment, only a simple introduction is given to the implementation of the solution. For the specific implementation process, reference may be made to the specific descriptions in the above other embodiments, which will not be described in detail here.
[0235] The embodiment of the present application can divide the computing device 800 corresponding to the second device into functional modules according to the above method example. For example, each functional module can be divided according to each function, or two or more functions can be integrated into one processing module. The above integrated module can be implemented in the form of hardware or in the form of software functional modules. It should be noted that the division of modules in the embodiment of the present application is schematic and is only a logical function division. There may be other division methods in actual implementation.
[0236] In the case of dividing each functional module into corresponding functional modules, Fig.10 A possible structural diagram of the computing device 800 involved in the above embodiment is shown. Fig.10 As shown, the computing device 800 includes: a first receiving unit 801 and a second receiving unit 802 .
[0237] The first receiving unit 801 is used to obtain a first identifier from the intermediate device in response to the second request sent by the intermediate device; for example, execute step S260 in the above method embodiment.
[0238] The second receiving unit 802 is used to obtain the first information indicated by the first identifier from the storage device; for example, execute step S270 in the above method embodiment.
[0239] The various modules of the computing device 800 may also be used to execute other actions in the method embodiment. All relevant contents of the steps involved in the method embodiment may be referred to the functional description of the corresponding functional modules and will not be repeated here.
[0240] The embodiment of the present application can divide the computing device 900 corresponding to the first device into functional modules according to the above method example. For example, each functional module can be divided according to each function, or two or more functions can be integrated into one processing module. The above integrated module can be implemented in the form of hardware or in the form of software functional modules. It should be noted that the division of modules in the embodiment of the present application is schematic and is only a logical function division. There may be other division methods in actual implementation.
[0241] In the case of dividing each functional module into corresponding functional modules, Fig.11 A possible structural diagram of the computing device 900 involved in the above embodiment is shown. Fig.11 As shown, the computing device 900 includes: a storage unit 901 and a sending unit 902 .
[0242] The storage unit 901 is used to store the first information in a storage device; for example, to execute steps S210-S220 in the above method embodiment.
[0243] The sending unit 902 is used to send the first request to the intermediate device to the second device; for example, execute step S230 in the above method embodiment.
[0244] The various modules of the computing device 800 may also be used to execute other actions in the method embodiment. All relevant contents of the steps involved in the method embodiment may be referred to the functional description of the corresponding functional modules and will not be repeated here.
[0245] An embodiment of the present application provides a communication system, which includes: a first device, a second device, a storage device and an intermediate device, the first device and the second device share the storage space of the storage device, and the intermediate device is respectively connected to the first device and the second device based on the Compute Fast Link (CXL) protocol; the first device is used to store first information in the storage device, and the first information is information to be sent by the first device to the second device; the intermediate device is used to receive a first identifier from the first device through a connection based on the CXL protocol, and send a notification request to the second device through a connection based on the CXL protocol; the first identifier is an identifier of the first information; the second device is used to obtain the first identifier from the intermediate device in response to the notification request; the second device is also used to obtain the first information indicated by the first identifier from the storage device.
[0246] The embodiment of the present application also provides a computing device, including a memory and a processor, wherein the memory is coupled to the processor; the memory is used to store computer program code, wherein the computer program code includes computer instructions; when the computer instructions are executed by the processor, the server executes the above Figure 3 , Figure 4 , Figure 6 , Figure 8 , Fig. 9 Any method performed by an intermediate device or a second device.
[0247] An embodiment of the present application also provides a computer-readable storage medium on which computer instructions are stored. When the computer instructions are executed on a computing device, the computing device executes any method executed by the above-mentioned intermediate device or the second server.
[0248] For the explanation of the relevant contents and description of the beneficial effects of any of the above-mentioned computer-readable storage media, reference may be made to the above-mentioned corresponding embodiments, which will not be repeated here.
[0249] An embodiment of the present application provides a computer program product, which, when executed on a computer, enables the computer to execute any one of the methods described above executed by the intermediate device or the second device.
[0250] In the above embodiments, it can be implemented in whole or in part by software, hardware, firmware or any combination thereof. When implemented using a software program, it can be implemented in whole or in part in the form of a computer program product. The computer program product includes one or more computer instructions. When the computer instruction is loaded and executed on a computer, the process or function in accordance with the embodiment of the present application is generated in whole or in part. The computer can be a general-purpose computer, a special-purpose computer, a computer network or other programmable device. The computer instruction can be stored in a computer-readable storage medium, or transmitted from one computer-readable storage medium to another computer-readable storage medium. For example, the computer instruction can be transmitted from a website site, computer, server or data center by wired (e.g., coaxial cable, optical fiber, digital subscriber line (digital subscriber line, DSL)) mode or wireless (e.g., infrared, wireless, microwave, etc.) mode to another website site, computer, server or data center. The computer-readable storage medium can be any available medium that a computer can access or a data storage device such as a server, data center, etc. that includes one or more available media integrated. The available medium may be a magnetic medium (eg, a floppy disk, a magnetic disk, a magnetic tape), an optical medium (eg, a digital video disc (DVD)), or a semiconductor medium (eg, a solid state drive (SSD)), etc.
[0251] Through the description of the above implementation methods, technicians in the relevant field can clearly understand that for the convenience and simplicity of description, only the division of the above functional modules is used as an example. In actual applications, the above functions can be assigned to different functional modules as needed, that is, the internal structure of the device is divided into different functional modules to complete all or part of the functions described above. The specific working process of the system, device and unit described above can refer to the corresponding process in the aforementioned method embodiment, and will not be repeated here.
[0252] In the several embodiments provided in the present application, it should be understood that the disclosed systems, devices and methods can be implemented in other ways. For example, the device embodiments described above are only schematic. For example, the division of the modules or units is only a logical function division. There may be other division methods in actual implementation, such as multiple units or components can be combined or integrated into another system, or some features can be ignored or not executed. Another point is that the mutual coupling or direct coupling or communication connection shown or discussed can be an indirect coupling or communication connection through some interfaces, devices or units, which can be electrical, mechanical or other forms.
[0253] The units described as separate components may or may not be physically separated, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed on multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of this embodiment.
[0254] In addition, each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated into one unit. The above-mentioned integrated unit may be implemented in the form of hardware or in the form of software functional units.
[0255] If the integrated unit is implemented in the form of a software functional unit and sold or used as an independent product, it can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application can be essentially or partly embodied in the form of a software product that contributes to the prior art, or all or part of the technical solution. The computer software product is stored in a storage medium, including several instructions for a computer device (which can be a personal computer, server, or network device, etc.) or a processor to perform all or part of the steps of the method described in each embodiment of the present application. The aforementioned storage medium includes: flash memory, mobile hard disk, read-only memory, random access memory, disk or optical disk, and other media that can store program codes.
[0256] The above is only a specific implementation of the present application, but the protection scope of the present application is not limited thereto. Any changes or substitutions within the technical scope disclosed in the present application should be included in the protection scope of the present application. Therefore, the protection scope of the present application should be based on the protection scope of the claims.
Claims
1. A method for obtaining information, characterized in that: Applied to an intermediate device, the intermediate device communicates with a first device and a second device respectively based on a computing fast link (CXL) protocol, the method comprising: A first request from the first device is received; the first request includes a second device identifier; wherein, The second device identifier is used to indicate the second device to obtain the first information from the storage device; the first information is information stored by the first device in the storage device to be sent to the second device, and the first device and the second device share the storage device based on the CXL protocol; In response to the first request, a second request is sent to the second device; the second request is used to trigger the second device to obtain an identifier of the first information from the intermediate device or to obtain the first information from the storage device; the identifier of the first information is used to indicate the first information stored in the storage device.
2. The method according to claim 1, characterized in that: The second request is an interrupt request.
3. The method according to claim 2, characterized in that Before sending the second request to the second device indicated by the second device identifier, the method further includes: receiving a third request from the second device; the third request is used to indicate a notification method for sending the interrupt request to the second device; The sending a second request to the second device indicated by the second device identifier includes: A second request is sent to the second device indicated by the second device identifier according to the notification method.
4. The method according to any one of claims 1 to 3, characterized in that: The first request also includes an identification of the first information; After receiving the first request from the first device, the method further includes: The identifier of the first information is stored in a first storage space.
5. The method according to claim 4, characterized in that The storing the identifier of the first information in the first storage space comprises: When there is available storage space in the first storage space, the identifier of the first information is stored in the first storage space.
6. The method according to claim 5, characterized in that The method further comprises: In the case that there is no available storage space in the first storage space, sending feedback information to the first device; the feedback information is used to indicate that the identification storage of the first information fails; storing a first device identifier indicating the first device in a second storage space; Determining whether there is available storage space in the first storage space; If there is available storage space in the first storage space, acquiring the first device identifier from the second storage space; A fourth request is sent to the first device according to the first device identifier; the fourth request is used to instruct the first device to resend the identifier of the first information that failed to be stored.
7. The method according to any one of claims 1 to 6, characterized in that: The method further comprises: After determining that the second device obtains the first information from the storage device, the first information identifier is deleted.
8. The method according to any one of claims 1 to 7, characterized in that: The first request also includes a first device identifier. Before sending the second request to the second device indicated by the second device identifier, the method further includes: Determining whether the first device and the second device have communication authority based on the first device identifier and the second device identifier; The sending a second request to the second device indicated by the second device identifier includes: In a case where the first device and the second device have communication authority, the second request is sent to the second device indicated by the second device identifier.
9. The method according to claim 8, characterized in that Determining whether the first device and the second device have communication authority based on the first device identifier and the second device identifier includes: Determining whether the first device and the second device belong to the same communication group based on the first device identifier, the second device identifier, and pre-stored communication group information; In the case that the first device and the second device belong to the same communication group, it is determined that the first device and the second device have communication authority.
10. The method according to any one of claims 1 to 9, characterized in that: The method further comprises: In the case that there are multiple identifiers of the first information, the multiple identifiers of the first information are stored in chronological order based on the reception time of the identifiers of the first information.
11. A computing device, characterized in that: The invention comprises a memory and a processor, wherein the memory is coupled to the processor; the memory is used to store computer program instructions; When the computer instructions are executed by the processor, the intermediate device is caused to perform the method according to any one of claims 1 to 10.
12. An information acquisition notification system, characterized in that: The system comprises: a first device, a second device and an intermediate device; wherein the intermediate device communicates with the first device and the second device respectively based on the CXL protocol; The intermediate device receives a first request from the first device; the first request includes a second device identifier; wherein, The second device identifier is used to indicate a second device to obtain the first information from the storage device; the first information is information stored by the first device in the storage device to be sent to the second device, and the first device and the second device share the storage device based on the CXL protocol; The intermediate device sends a second request to the second device in response to the first request; the second request is used to trigger the second device to obtain an identifier of the first information from the intermediate device or to obtain the first information from the storage device; the identifier of the first information is used to indicate the first information stored in the storage device.
13. The system according to claim 12, characterized in that In a case where the second request is used to trigger the second device to obtain the identifier of the first information from the intermediate device, the second device obtains the identifier of the first information from the intermediate device in response to the second request; The second device obtains the first information from the storage device based on the identifier of the first information; or, In a case where the second request is used to trigger the second device to obtain the first information from the storage device, the second device obtains the first information from the storage device.
14. The system according to claim 12 or 13, characterized in that The first device stores first information in the storage device; The first device sends the first request to the intermediate device.
Citation Information
Patent Citations
Communication establishment method and system
CN116074230A
Data processing method and related device
CN116483259A