Communication method and communication apparatus

By obtaining and saving the order-keeping attribute information of the resource space in the PCIe system, determining the transmission path of the access message, solving the problem of order-keeping in the multi-path transmission in the prior art, and achieving efficient message transmission.

WO2025112311A1PCT designated stage expired Publication Date: 2025-06-05HUAWEI TECH CO LTD
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/092843
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-11-27
Filing Date
2024-05-13
Publication Date
2025-06-05

AI Technical Summary

Technical Problem

The message order preservation method in the existing PCIe system only supports single paths, and cannot realize message order preservation transmission in multi-path transmission scenarios.

Method used

The resource space information in the second host is obtained through the first host, including the start address, length information and order-saving attribute information, and save these information to determine the transmission path of the access message, and generate access messages based on the order-saving attribute to realize message order-saving in the multi-path transmission scenario.

Benefits of technology

It realizes the order-maintaining transmission of messages in multi-path transmission scenarios, and improves the flexibility and efficiency of the communication system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024092843_05062025_PF_FP_ABST
    Figure CN2024092843_05062025_PF_FP_ABST
Patent Text Reader

Abstract

A communication method and a communication apparatus. The communication method is applied to a first host, and there are a plurality of transmission paths for transmitting messages between the first host and a second host. The method comprises: a first host acquiring information of a first resource space in a second host, wherein the information of the first resource space comprises a starting address of the first resource space, length information of the first resource space, and order attribute information corresponding to the first resource space; and the first host storing the order attribute information corresponding to the first resource space, and first path information, wherein the first path information is used for indicating a transmission path corresponding to a first access message accessing the first resource space. Thus, when a first host sends an access message to a second host to access a first resource space, order requirements of the access message can be acquired from stored information, thereby realizing ordered transmission of messages in a multi-path transmission scenario.
Need to check novelty before this filing date? Find Prior Art

Description

Communication method and communication device

[0001] This application claims priority to the Chinese patent application filed with the China Patent Office on November 27, 2023, with application number 202311603388.X and application name “Communication Method and Communication Device”, the entire contents of which are incorporated by reference into this application. Technical Field

[0002] The present application relates to the field of computer technology, and in particular to a communication method and a communication device. Background Art

[0003] Peripheral Component Interconnect Express (PCIe) is a high-speed serial computer expansion bus standard used to connect processors and external devices. These external devices are called PCIe devices or simply devices.

[0004] In the current PCIe architecture, communication between any two devices can only be a single-path communication between two interfaces. If the two communicating devices need to achieve order-preserving message transmission, a point-to-point order-preserving mechanism can be used to ensure the order of messages on the transmission path, thereby achieving end-to-end order-preserving.

[0005] However, the current PCIe architecture only supports a single path for message order preservation. Therefore, designing a solution that can achieve message order preservation in multi-path transmission scenarios has become an urgent problem to be solved.

[0006] Summary of the Invention

[0007] The present application provides a communication method to achieve message order preservation in a multi-path transmission scenario.

[0008] In a first aspect, a communication method is provided, applied to a first host. The method can be executed by the first host, or by a circuit or chip configured in the first host, without limitation in this application. For ease of description, the following description uses execution by the first host as an example.

[0009] The communication method includes: a first host obtains information about a first resource space in a second host, the information about the first resource space includes a starting address of the first resource space, length information of the first resource space and order preservation attribute information corresponding to the first resource space, the order preservation attribute information corresponding to the first resource space is used to indicate an order preservation requirement corresponding to a first access message for accessing the first resource space; the first host saves the order preservation attribute information and first path information corresponding to the first resource space, the first path information is used to indicate a transmission path corresponding to a first access message for accessing the first resource space, wherein the transmission path indicated by the first path information is one of multiple transmission paths between the first host and the second host.

[0010] Based on the above technical solution, a first host serves as a source device and a second host serves as a destination device. In a universal bus system, when messages are transmitted between the source and destination devices, the messages can be transmitted via multiple transmission paths. Specifically, in this technical solution, a first resource space (e.g., a memory segment and / or a function entity) on the second host can be made available to the first host through registration. When the first host obtains information related to the first resource space of the second host, in addition to obtaining the size and address information of the first resource space (such as the starting address of the first resource space and the length information of the first resource space), it also obtains the order preservation attribute information corresponding to the first resource space, and saves the information corresponding to the first resource space (such as saving the order preservation attribute information and the first path information corresponding to the first resource space), so that when the first host has the need to send an access message to the second host to access the first resource space, it can obtain the order preservation requirements of the access message for accessing the first resource space and the transmission path of the access message based on the saved information. That is, access messages with the same order preservation requirements can be transmitted through a certain transmission path, while access messages with different order preservation requirements are transmitted through different paths, thereby realizing order-preserving transmission of messages in a multi-path transmission scenario.

[0011] In combination with the first aspect, in certain implementations of the first aspect, the first host saves the order-preserving attribute information and the first path information corresponding to the first resource space, including: the first host configures the information of the first resource space into a decoder table entry, the decoder table entry includes a first entry, and the first entry includes the first path information and the order-preserving attribute information corresponding to the first resource space.

[0012] Based on the above technical solution, the first host can configure the information of the first resource space to the decoder table entry and record the information of the first resource space based on the first entry in the decoder table entry, thereby simplifying the way in which the first host saves the information of the first resource space.

[0013] In combination with the first aspect, in certain implementations of the first aspect, when the first host determines to send a first access message to the second host to access the first resource space, the method includes: the first host queries the decoder table entry to determine the first path information and the order preservation requirement corresponding to the first access message; the first host determines the output port and the first transmission path corresponding to the first access message based on the first path information; wherein, the first transmission path is a transmission path among the multiple transmission paths used to transmit the first access message, and the first transmission path is used to transmit access messages corresponding to the same path information.

[0014] Based on the above technical solution, when the first host determines to send a first access message to the second host to access the first resource space, the first host can obtain the sequence attribute information corresponding to the first access message by checking the decoder table entry to ensure that the first access message is transmitted while meeting the order preservation requirements of the first access message.

[0015] In combination with the first aspect, in certain implementations of the first aspect, the method further includes: the first host generates the first access message based on the first transmission path and the order preservation requirements corresponding to the first access message, wherein the order preservation field of the first access message carries information indicating the order preservation requirements corresponding to the first access message, and the load sharing factor field of the first access message carries information indicating the first transmission path.

[0016] Based on the above technical solution, when the first host generates the first access message, it fills in the relevant domain end of the message according to the sequence attribute information and the first path information corresponding to the first access message obtained by querying the decoder table entry, so that the generated first access message carries information indicating the order preservation attribute and the transmission path information.

[0017] In combination with the first aspect, in some implementations of the first aspect, the routing indication field of the first access message is set to 0, wherein the routing indication field is set to 0 to indicate that a hash routing mechanism is used to determine a transmission path for the first access message.

[0018] In combination with the first aspect, in certain implementations of the first aspect, the first host obtains the order-preserving attribute information corresponding to the first resource space, including: the first host receives the order-preserving attribute information corresponding to the first resource space from the second host; or, the first host determines the order-preserving attribute information corresponding to the resource space based on the purpose of the first resource space.

[0019] Based on the above technical solution, the first host can obtain the order preservation attribute information corresponding to the first resource space by receiving it from the second host. For example, the second host can register the first resource space and provide it to the first host for use. The second host can set different order preservation requirements based on the functions of different resource spaces and provide the corresponding order preservation attribute information to the first host. Alternatively, the first host can determine different order preservation requirements based on the uses of different resource spaces, thereby increasing the flexibility of the solution.

[0020] In combination with the first aspect, in certain implementations of the first aspect, the method further includes: the first host obtains information about the second resource space in the second host, the information about the second resource space includes the starting address of the second resource space, the length information of the second resource space and the order preservation attribute information corresponding to the second resource space, the order preservation attribute information corresponding to the second resource space is used to indicate the order preservation requirements corresponding to the second access message for accessing the second resource space; the first host saves the order preservation attribute information and second path information corresponding to the second resource space, the second path information is used to indicate the transmission path corresponding to the second access message for accessing the second resource space, wherein the second path information is different from the first path information, and the order preservation attribute information corresponding to the second resource space is different from the order preservation attribute information corresponding to the first resource space.

[0021] Based on the above technical solution, the first host can obtain information about different resource spaces on the second host. In addition, access messages corresponding to resource spaces with different order preservation requirements can be transmitted through different paths, thereby achieving order-preserving message transmission while ensuring multi-path transmission.

[0022] In combination with the first aspect, in certain implementations of the first aspect, the first host saves the order-preserving attribute information and the second path information corresponding to the second resource space, including: the first host configures the information of the second resource space into the decoder table entry, the decoder table entry includes a second entry, and the second entry includes the second path information and the order-preserving attribute information corresponding to the second resource space.

[0023] In combination with the first aspect, in certain implementations of the first aspect, the order preservation requirements corresponding to the first access message include any one of the following: strongly ordered (SO), no order preservation required (NO), or relaxed ordering (RO). Among them, strong order preservation indicates that the first access message is an order preservation message, which needs to be transmitted in an order preservation manner and depends on the transmission results of other messages for transmission, such as the first access message and the previous message identified as RO have order preservation requirements. No order preservation required indicates that the first access message has no order preservation requirements and does not need to rely on the transmission results of other messages for transmission; flexible order preservation indicates that there are order preservation requirements between the first access message and subsequent messages identified as SO, such as the message identified as SO cannot be transmitted earlier than the message identified as RO.

[0024] In a second aspect, a communication method is provided, applied to a second host. The method can be executed by the second host, or by a circuit or chip configured in the second host, without limitation in this application. For ease of description, the following description uses execution by the second host as an example.

[0025] The communication method includes: a second host receives a first access message from a first host, the first access message is used to access a first resource space in the second host, an order preservation field of the first access message carries information indicating an order preservation requirement corresponding to the first access message, and a load sharing factor field of the access message carries information indicating a first transmission path; the second host determines the order preservation requirement of the first access message based on the order preservation field of the first access message; wherein the second host receives the same physical port as at least one access message transmitted on the first transmission path, and the first access message is one of the at least one access message.

[0026] The technical effects of the method shown in the above second aspect and its possible design can refer to the technical effects in the first aspect and its possible design.

[0027] In a third aspect, a communication device is provided, which includes: a storage module for storing programs; a processing module for executing the programs stored in the storage module. When the programs stored in the storage module are executed, the processing module is used to execute the methods provided in the above aspects.

[0028] In a fourth aspect, a computer-readable storage medium is provided, which stores program code for execution by a device, wherein the program code includes code for executing the methods provided in the above aspects.

[0029] In a fifth aspect, a computer program product comprising instructions is provided. When the computer program product is run on a computer, the computer is used to execute the methods provided in the above aspects.

[0030] In a sixth aspect, a chip is provided, which includes a processing module and a communication interface. The processing module reads instructions stored in a memory through the communication interface to execute the methods provided in the above aspects.

[0031] Optionally, as an implementation method, the chip may further include a storage module, in which instructions are stored. The processing module is used to execute the instructions stored on the storage module. When the instructions are executed, the processing module is used to execute the methods provided in the above aspects.

[0032] In a seventh aspect, a chip is provided, comprising a first host for executing the method provided in the first aspect and a second host for executing the method provided in the second aspect.

[0033] In an eighth aspect, a computer system is provided, which includes the chip shown in the seventh aspect.

[0034] In a ninth aspect, a terminal device is provided, the terminal device including the chip described in the seventh aspect. For example, the terminal device includes but is not limited to a mobile phone, a vehicle, and other terminals.

[0035] In a tenth aspect, a communication system is provided, comprising a first host for executing the method provided in the first aspect and a second host for executing the method provided in the second aspect. BRIEF DESCRIPTION OF THE DRAWINGS

[0036] FIG1 is a schematic diagram of the structure of a computer device provided in an embodiment of the present application.

[0037] FIG2 is a schematic diagram of a data center provided in an embodiment of the present application.

[0038] FIG3 is a schematic diagram of a universal bus protocol message format provided in an embodiment of the present application.

[0039] FIG4 is a schematic diagram of supporting multi-path transmission in a universal bus protocol system provided by an embodiment of the present application.

[0040] FIG5 is a schematic diagram of a PCIe system provided in an embodiment of the present application.

[0041] FIG6 is a schematic flow chart of a communication method provided in this application.

[0042] FIG7 is a schematic diagram of a resource registration provided by this application.

[0043] FIG8 is a schematic diagram of a method for determining the order-preserving attribute of resource space provided by the present application.

[0044] FIG9 is a schematic diagram of the data structure of an entry provided by this application.

[0045] FIG10 is a schematic diagram of a message format provided by this application.

[0046] FIG11 shows a schematic structural diagram of a communication device 1100 provided in an embodiment of the present application.

[0047] FIG12 shows a schematic structural diagram of a chip system 1200 provided in an embodiment of the present application.

[0048] FIG13 schematically shows a conceptual partial view of a computer program product provided by an embodiment of the present application. DETAILED DESCRIPTION

[0049] In order to facilitate understanding of the embodiments of the present application, the following explanations are made.

[0050] First, "at least one" shown in the present application refers to one or more, and "multiple" refers to two or more. In addition, in the embodiments of the present application, "first", "second" and various digital numbers (for example, "#1", "#2", etc.) are only for the convenience of description and are not used to limit the scope of the embodiments of the present application. The size of the sequence number of each process below does not mean the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application. It should be understood that the objects described in this way can be interchanged where appropriate, so as to be able to describe solutions other than the embodiments of the present application. In addition, in the embodiments of the present application, words such as "S610" are only for the convenience of description and are not used to limit the order of execution of steps.

[0051] Second, in the embodiments of this application, words such as "exemplary" or "for example" are used to indicate examples, illustrations, or explanations. Any embodiment or design described in this application as "exemplary" or "for example" should not be construed as being preferred or advantageous over other embodiments or designs. Rather, the use of words such as "exemplary" or "for example" is intended to present the relevant concepts in a concrete manner.

[0052] Third, the term "storage" used in the embodiments of the present application may refer to storage in one or more memories. The one or more memories may be provided separately or integrated into an encoder or decoder, a processor, or a communication device. The one or more memories may also be partially provided separately and partially integrated into a decoder, a processor, or a communication device. The type of memory may be any form of storage medium, and this application is not limited thereto.

[0053] Fourth, the term “comprising” (also referred to as “includes,” “including,” “comprises,” and / or “comprising”) involved in the embodiments of the present application, when used in this specification, specifies the presence of stated features, integers, steps, operations, elements, and / or parts, but does not exclude the presence or addition of one or more other features, integers, steps, operations, elements, parts, and / or groups thereof.

[0054] Fifth, the phrase “if” used in the embodiments of the present application may be interpreted as meaning “when” or “upon” or “in response to determining” or “in response to detecting.” Similarly, depending on the context, the phrase “if it is determined that…” or “if [the stated condition or event] is detected” may be interpreted as meaning “upon determining…” or “in response to determining…” or “upon detecting [the stated condition or event]” or “in response to detecting [the stated condition or event].”

[0055] Sixth, the terms used in the description of the various examples in the embodiments of the present application are intended only to describe specific examples and are not intended to be limiting. As used in the description of the various examples and in the appended claims, the number forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise.

[0056] Seventh, the term "and / or" in this document simply describes an association between related objects, indicating that three possible relationships exist. For example, "A and / or B" can mean: A exists alone, A and B exist simultaneously, or B exists alone. Furthermore, the character " / " in this document generally indicates that the related objects are in an "or" relationship.

[0057] The technical solutions in the embodiments of the present application will be described below with reference to the accompanying drawings.

[0058] This application involves a processor in a computer system accessing the configuration space of an external device. The computer system can be a server or a terminal. Terminals include, but are not limited to, user systems such as desktop computers, laptops, and smartphones. For ease of understanding, the following describes the structure of the computer system.

[0059] 1 , the computer system includes a processor 101, an input / output device (I / O device) 102, a memory 103, a cache 104, a memory management unit (MMU) 105, an input / output memory management unit (IOMMU) 106, an external memory 107, and a bus 108.

[0060] The processor 101 includes at least one core. This core is also called a computing engine. Each core can independently execute tasks. When the processor 101 includes multiple cores, tasks from applications can be divided, allowing the application to fully utilize multiple cores and execute more tasks within a specific time period. In this embodiment, the processor 101 can be a main processor, such as a central processing unit (CPU).

[0061] Input / output devices 102 refer to hardware devices capable of inputting and / or outputting data. Input / output devices 102 can be categorized as input devices and output devices. Input devices may include devices such as a mouse, keyboard, joystick, stylus, and microphone, while output devices may include devices such as a display and speakers.

[0062] Memory 103, also known as internal memory or main memory, is used to temporarily store computational data in processor 101. Furthermore, memory 103 is also used to temporarily store data exchanged with external memory 107. Memory 103 can typically be implemented using storage media such as dynamic random access memory (DRAM) or static random access memory (SRAM).

[0063] Cache 104 (in this embodiment, processor cache, such as a CPU cache) is used to reduce the average time required for processor 101 to access memory 103. Referring to Figure 1 , in the pyramid storage system, cache 104 is located in the second layer from the top, just below the processor 101 registers (not shown in Figure 1 ) and above memory 103 (which is located in the third layer from the top). Typically, the capacity of cache 104 is much smaller than that of memory 103, but its access speed can approach the frequency of processor 101.

[0064] The memory management unit 105 is a computer hardware component for processing data access requests. Specifically, the memory management unit 105 is configured to map virtual addresses (VAs) in data access requests. The memory management unit 105 can intercept data access requests issued by the core of the processor 101 and map (or translate) the virtual addresses in the data access requests into physical addresses (PAs) to facilitate access to the memory 103 based on the PAs.

[0065] The I / O memory management unit 106 is essentially a memory management unit. Similar to how the memory management unit 105 maps virtual addresses visible to the processor 101 to physical addresses, the I / O memory management unit 106 is used to map virtual addresses (also called device addresses or I / O addresses) visible to input and output devices 102 to physical addresses.

[0066] The external memory 107 is also called external memory or auxiliary memory, and is usually used to persist data. For example, the external memory 107 can persist the calculation data in the storage processor 101. Even if the power supply is abnormal, the data written to the external memory 107 can still be saved, avoiding data loss. In specific implementation, the external memory 107 includes at least one non-volatile memory 1071. When the external memory includes multiple non-volatile memories, these multiple non-volatile memories can be of the same type or different types. For example, in the example of Figure 1, the external memory 107 can include two types of non-volatile memories, such as storage class memory (SCM) and solid state drive (SSD).

[0067] Bus 108 is used to connect the various functional components of the computer system. Bus 108 is a common communication trunk that transmits information between the various functional components of the computer system. Bus 108 can be a transmission line formed by wires. Depending on the connection objects, bus 108 can be divided into internal buses and external buses.

[0068] The internal bus uses an internal bus protocol to transmit information. The internal bus protocol includes a bus protocol for accessing the memory space of the computer system. The external bus uses an external bus protocol to transmit information. The external bus protocol includes a bus protocol for accessing the external memory space of the computer system. The memory space refers to the address space of the internal memory, and the external memory space refers to the address space of the external memory.

[0069] In some embodiments, the internal bus protocol includes, but is not limited to, a peripheral component interconnect (PCI) bus, a peripheral component interconnect (PCI Express, PCIe) protocol, an Intel™ Quick Path Interconnect (QPI) protocol, and a unified bus protocol. The external bus protocol includes, but is not limited to, a small computer system interface (SCSI) protocol or a serial attached SCSI (SAS) protocol.

[0070] It should be noted that the computer system shown in FIG1 is illustrated by taking the external memory 107 as the remote external memory. As shown in FIG1 , the external memory 107 includes a network card 1072. The network card 1072 may be, for example, a smart NIC network interface card (i.e., a network adapter card). The external memory 107 is connected to the network through the network card 1072, and is then connected to other components of the computer system 101 through the network. The network may be a wired communication network, such as an optical fiber communication network, or a wireless communication network, such as a wireless local area network (WLAN) or a fifth generation (5G) mobile communication network.

[0071] In some possible implementations, the computer system's external memory 107 may also be local external memory, and other components of the computer system, such as the processor 101, may be connected to the local external memory via a bus 108. In other possible implementations, the computer system may include both remote external memory and local external memory. In addition, the embodiments of the present application may be applicable to centralized storage or distributed storage scenarios, which are not limited in this embodiment.

[0072] For example, the method for accessing the configuration space registers of the bus device provided in the embodiments of the present application can also be applied to the server cluster communicating across the network shown in FIG2 , such as the data center shown in FIG2 . The internal structure of the switch or server shown in FIG2 is as shown in FIG1 above.

[0073] In addition, the internal bus protocols supported by the computer systems involved in this application include a universal bus protocol, which enables transport layer connections to be established between computer systems. The universal bus protocol, which may also be referred to as the Lingqu bus protocol or unified bus protocol, is a bus protocol standard. This application does not limit the name of the universal bus protocol.

[0074] The Universal Bus Protocol breaks down existing protocol barriers, eliminating unnecessary intermediate conversion overhead to achieve extremely low latency. The Universal Bus Protocol defines independent transaction layers (TA) and transport layers (TP). Transport layers are connected, but transaction layers are not. For hosts, there is no connection between the transaction layers, but there is a connection between the transport layers. Therefore, all transactions between either host are carried over the transport layer. The Universal Bus Protocol consists of both the transport layer and the transaction layer. The transport layer is responsible for retransmitting lost packets to ensure reliable transmission, while the transaction layer handles its own distinct transactions. The transport layer receives packets from the network, strips off the transport layer header, and forwards them to the transaction layer.

[0075] The universal bus protocol message format is shown in Figure 3. Specifically, the field definitions in the universal bus protocol message format are shown in Table 1 below:

[0076] Table 1

[0077] Specifically, the interface between the transaction layer of the universal bus protocol and the application is called Jetty. Application messages can be sent to any destination through a Jetty, and messages can also be received from any source through a Jetty. A Jetty that can only send is defined as Jetty for send (JFS), while a Jetty that can only receive is defined as Jetty for receive (JFR).

[0078] FIG4 is a schematic diagram of a universal bus protocol system supporting multi-path transmission provided in an embodiment of the present application.

[0079] As shown in FIG4 , the universal bus protocol system involved in this application supports multipathing, including source multiports (such as port #0, port #1, port #2, and port #3 in host A as shown in FIG4 ), destination multiports (such as port #0, port #1, port #2, and port #3 in host B as shown in FIG4 ), and network multipathing (such as path #1, path #2, ..., path #n as shown in FIG4 ). Host A can be understood as a source device, host B can be understood as a destination device, and host A can send messages to host B via multipathing.

[0080] Optionally, host A and / or host B may also include a processor (PU) (such as a central processing unit (CPU)), a controller and a system on chip (NOC), etc. This application does not impose any restrictions on the hardware or software systems included in the host. You can refer to the introduction of the host in the current related technology, and this application will not go into details.

[0081] For example, in the universal bus protocol system shown in FIG4 , messages can be transmitted between two devices through source multi-ports or destination multi-ports, as well as network multi-paths, in order to improve communication bandwidth.

[0082] The above text briefly introduces the scenarios in which the present application can be applied and the internal logic units of the host involved in combination with Figures 1 to 4. In order to facilitate understanding of the embodiments of the present application, some basic concepts involved in the present application are briefly explained.

[0083] 1. Message order preservation: Messages are sent and / or received in a certain order to achieve message order preservation. For example, in the current PCIe architecture, when the CPU accesses the memory of different attributes of peripherals through access messages (such as store instructions and load instructions), different order preservation methods can be used to achieve message order preservation.

[0084] Exemplarily, memory attributes are divided into two categories:

[0085] Device memory: includes the input and output (IO) memory space of device registers.

[0086] Normal memory: includes memory spaces such as static random access memory (SRAM) and dynamic random access memory (DRAM).

[0087] When accessing device memory, message ordering is typically achieved using endpoint ordering. When accessing normal memory, message ordering is typically achieved using request ordering. Endpoint ordering preserves the order of multiple messages to the same endpoint, while request ordering preserves the order of multiple messages to the same address.

[0088] For ease of understanding, FIG5 is briefly described to illustrate how message order preservation is achieved in communication between two devices in the current PCIe system.

[0089] As shown in Figure 5, PCIe networking has a tree-like structure, consisting of a PCIe root complex (RC), a switch device, and a PCIe endpoint (EP). The PCIe RC manages communication between the CPU and other devices, the switch expands a single PCIe interface into multiple ones, and the PCIe EP is a device without data forwarding capabilities.

[0090] It should be understood that Figure 5 is merely an example and does not limit the scope of protection of this application. It is merely an example of how to implement message order preservation in a scenario where different devices in a PCIe network communicate with each other. For example, in the scenario shown in Figure 5, the CPU issues three store requests, and there is no order preservation relationship between these three store requests. However, after receiving the first store request, the PCIe RC will reply with a Comp response, indicating that the current request has arrived and that the execution order of the commands must be consistent with the reception order. Therefore, the three messages need to be marked as SO, which requires strong order execution.

[0091] In the current PCIe system, message order preservation has the following characteristics:

[0092] 1) Only a single path is supported. In the current PCIe ordering mechanism, a point-to-point ordering mechanism is used to ensure the order of the entire message transmission path, thereby achieving end-to-end ordering.

[0093] 2) Even when multiple bars are allocated to the PCIe RC on the PCIe EP side, memory map I / O (MMIO) accesses still follow the same path and adhere to the same order-preserving mechanism.

[0094] 3) In current PCIe system designs, logic implementations are strictly enforced. When load / store instructions issued by the xPU are connected to the PCIe link, the default order attribute is "SO".

[0095] 2. Order-preserving messages: As can be seen from the above, order-preserving messages are targeted at messages that require order-preserving. In this application, messages that require order-preserving are referred to as order-preserving messages, while messages that do not require order-preserving are referred to as non-order-preserving messages. For example, messages that require order-preserving include, but are not limited to, messages that are sent dependent on the reception of other messages. For example, if message #1 can only be sent if message #2 is successfully received, then message #1 is an order-preserving message. Similarly, messages that do not require order-preserving include, but are not limited to, messages that are sent regardless of the reception of other messages.

[0096] 3. Transport group (TPG): At least one TPG can be established between the source (initiator) device and the target (target) device at the transport layer. Each TPG contains multiple transport links (transport ports, TPs). When the source device sends a message to the target device, the load balancing can be carried out among the multiple TPs within the TPG, and different messages can be transmitted through different network paths.

[0097] 4. Resource Registration: In a universal bus system, memory segments and / or function entities (FEs) on a target device can be registered and made available to the source device. Memory segments and / or function entities are the units by which the target device divides its own resources, representing device resources with a certain degree of isolation. For example, a memory segment is a continuous virtual address (VA) space, each corresponding to a section of physical memory. The target device creates and registers a memory segment, and the source device applies to use the target device's memory segment.

[0098] Exemplarily, after obtaining the memory segment information, the source device maps the unified bus address (UBA) of the memory segment to the local process VA space to obtain a mapped address (mVA).

[0099] It should be understood that the resource registration process of the target device is not limited in this application. For example, the source device and the target device can complete the resource application registration through an in-band exchange mechanism or an out-of-band exchange mechanism.

[0100] The above text briefly introduces the applicable scenarios of the communication method provided by this application in conjunction with Figure 2, as well as the basic concepts involved in this application. The basic concepts also introduce the message order preservation method in the current PCIe system design. As mentioned above, the message order preservation method in the current PCIe system design only supports a single path and does not have multi-path capabilities, and cannot provide a larger interactive bandwidth. In other words, this message order preservation method is not applicable to the universal bus protocol system shown in Figure 4, because the universal bus protocol system shown in Figure 4 supports multi-path transmission.

[0101] In addition, as shown above, the message order preservation characteristics in the PCIe system design indicate that load / store instructions access the network in a fixed "SO" order, resulting in low execution efficiency on the receiving side. Furthermore, for flows that do not have an order relationship, since they use the same physical link, order association is introduced, reducing interaction efficiency.

[0102] The present application provides a communication method for achieving message order preservation in a multipath transmission scenario. The multipath transmission scenario includes, but is not limited to, multipath transmission supported by a universal bus protocol system as shown in FIG4 , or other supported multipath transmission systems (e.g., a PCIe system capable of supporting multipath transmission).

[0103] It should be understood that the communication method provided in the embodiments of the present application can be applied to a computer system, for example, the cross-network communication system shown in FIG. 2 .

[0104] It should also be understood that the embodiments shown below do not specifically limit the specific structure of the execution subject of the method provided in the embodiments of the present application. As long as the method provided in the embodiments of the present application can be implemented by running a program that records the code of the method provided in the embodiments of the present application, it is sufficient. For example, the execution subject of the method provided in the embodiments of the present application can be a device, or a functional module in the device that can call and execute the program.

[0105] FIG6 is a schematic flow chart of a communication method provided by the present application, which is applied to a scenario in which a first host and a second host communicate with each other, such as the scenario shown in FIG2 .

[0106] In the embodiment shown in Figure 6, the first host can serve as a sending end (or called a source device (initiator)), and the second host can serve as a receiving end (or called a target device (target)). For the receiving end, the receiving end is a local device and the sending end is a remote device. For the sending end, the sending end is a local device and the receiving end is a remote device.

[0107] Exemplarily, the above-mentioned first host can be a physical machine or a virtual machine. If the first host is a virtual machine, the steps executed by the first host can be executed by the virtual machine; similarly, the second host can be a physical machine or a virtual machine. If the second host is a virtual machine, the steps executed by the second host can be executed by the virtual machine.

[0108] Specifically, the method shown in FIG6 includes the following steps:

[0109] S610: A first host obtains information about a first resource space in a second host.

[0110] In this embodiment, the first host is a sender of messages, such as a device that sends load and / or store instructions. The second host is a receiver of messages, such as a device that receives load and / or store instructions.

[0111] For example, in this embodiment, the first host can be understood as a device that uses resource space, and the second host can be a device that provides resource space for the first host to use. For example, the first host can be a user host in a universal bus system, and the second host can be a home device in the universal bus system; for another example, the first host and the second host can be home devices in the universal bus system, or the first host and the second host can be user hosts in the universal bus system; for another example, the first host and the second host can be other devices in the universal bus system, which is not limited in this embodiment. Among them, the second host can provide its own resources to the first host for use, for example, the second host provides FE or memory segment level resources to the first host for use, so that the first host can use other device resources in the universal bus system.

[0112] For ease of understanding, the following describes in detail with reference to FIG. 7 how the second host provides its own resources to the first host, and how the first host enables the use of the resources of the second host.

[0113] As shown in Figure 7, the universal bus system includes a first host (i.e., user host), a second host (i.e., base device), and a function management (FM) device. The first host is a device that uses the resources of the second host, the second host provides available resources to the first host, and the FM device implements management functions in the system. For example, the FM device can scan for at least one base device in the system.

[0114] For example, after the FM device discovers the second host through scanning, it brings the second host under management, and the FM device can register the resources of the second host (such as FE resources or memory segments, etc.) with the first host. The first host can create a driver to drive the second host (such as the device driver of the first host as shown in Figure 7) so that the first host can use the resources of the second host.

[0115] It should be understood that the way in which the second host provides its own resources to the first host for use shown in Figure 7 above is only an example and does not constitute any limitation on the scope of protection of this application. The second host can also register its own resources to the first host in other ways so that the first host can use the resources of the second host. This is not limited in this embodiment.

[0116] Illustratively, in this embodiment, the first host may obtain information about the resource space in the second host according to the communication address of the second host and the description information of the second host specified by the FM device.

[0117] Specifically, the information of the first resource space includes the starting address of the first resource space, the length information of the first resource space and the order preservation attribute information corresponding to the first resource space. The order preservation attribute information corresponding to the first resource space is used to indicate the order preservation requirements corresponding to the first access message for accessing the first resource space.

[0118] It should be understood that the first host can obtain information about at least one resource space in the second host, and the above-mentioned first resource space is any one of the at least one resource space, and the information of the first resource space includes the starting address of the first resource space and the length of the first resource space. The order preservation requirement corresponding to the first resource space is indicated by the order preservation attribute information corresponding to the first resource space, and the order preservation requirement corresponding to the first resource space can be understood as the order preservation requirement of the access message for accessing the first resource space. For example, the first host can also obtain information about the second resource space in the second host, and the information of the second resource space includes the starting address of the second resource space, the length information of the second resource space, and the order preservation attribute information corresponding to the second resource space. The order preservation attribute information corresponding to the second resource space is used to indicate the order preservation requirement corresponding to the second access message for accessing the second resource space.

[0119] As a possible implementation, the order-preserving attribute information corresponding to different resource spaces is provided by the second host, for example, the order-preserving attribute information corresponding to the resource space included in the information of at least one resource space acquired by the first host.

[0120] In this implementation, the order-preserving attribute information corresponding to different resource spaces is determined by the second host. For example, the second host can determine the order-preserving attribute information corresponding to the resource space based on the function of the resource space and provide the corresponding order-preserving attribute information to the first host during the resource space registration process.

[0121] For ease of understanding, FIG8 is used to illustrate how the second host determines the order-preserving attribute information of different resource spaces.

[0122] As shown in FIG8 , the second host has multiple FE resources for use. The resource spaces corresponding to one or more FEs are determined for different purposes during functional design. For example, the resource spaces corresponding to some FEs are used for configuration; the resource spaces corresponding to some FEs are used for interrupt information; the resource spaces corresponding to some FEs are used as command queues for issuing commands; the resource spaces corresponding to some FEs are used as doorbells for command queues; the resource spaces corresponding to some FEs are used for data storage, and so on.

[0123] The resource spaces corresponding to different FEs can have different order attributes. For example, the resource space corresponding to a command queue used for issuing commands or a FE used for data storage can have RO / NO order attributes. Another example is that the resource space corresponding to a FE used as a doorbell can have SO order attributes. The resource spaces corresponding to different FEs may or may not have order preservation requirements. For example, there may be no order requirement between resource spaces of different FEs.

[0124] As another possible implementation manner, the order-preserving attribute information corresponding to different resource spaces is determined by the first host.

[0125] In this implementation, when the second host provides different resource spaces for the first host to use, it does not provide the preservation attribute information corresponding to the different resource spaces. The first host can determine the order preservation attributes of the different resource spaces according to their actual uses.

[0126] For example, the second host provides resource space #1 and resource space #2 to the first host. The first host decides that resource space #1 is used to store data and resource space #2 is used to receive interrupt instructions. The first host then determines that the storage attribute information corresponding to resource space #1 is information indicating that it does not need to be saved, and the storage attribute information corresponding to resource space #2 is information indicating that it needs to be strongly saved.

[0127] Furthermore, in this embodiment, the first host obtains the information of the resource space in the second host, and after determining the order-preserving attribute information corresponding to different resource spaces, the order-preserving attribute information corresponding to the resource space and the path information corresponding to the resource space can be saved. For example, the information of different resource spaces can be configured into the universal bus decoder (UB decoder) table entry of the first host, and the table entry is used to determine the routing path of the message; for example, the order-preserving attribute information corresponding to the resource space and the path information corresponding to the resource space can be saved in the storage space, or recorded in other ways. This embodiment does not impose any restrictions on this.

[0128] For ease of understanding, this embodiment takes the configuration of the order preservation attribute information corresponding to the resource space and the path information corresponding to the resource space into the universal bus decoder (UB decoder) table entry as an example for explanation. The method flow shown in FIG6 further includes:

[0129] S620: The first host configures a decoder table entry.

[0130] For ease of description, the following description uses the example of a first host configuring information about a first resource space into a decoder table entry. The first resource space can be any resource space from at least one resource space provided by the second host. The first host configures information about the first resource space into a decoder table entry, which includes a first entry. The first entry includes path information (hereinafter referred to as first path information) corresponding to a first access message for accessing the first resource space and order-preserving attribute information corresponding to the first resource space.

[0131] For example, the first host obtains information about multiple resource spaces in the second host, wherein the order-preserving attributes corresponding to the multiple resource spaces may be different.

[0132] In this embodiment, the first resource space corresponds to the first entry in the table, wherein the data structure of an entry in the table is shown in FIG9 , including UBA, transport group number (TPG Number), path information or order ID, order attribute information or order type, destination entity ID (DstEID), token ID (TokenID) and token value (TokenValue).

[0133] For example, the meaning of each field in the entry is shown in Table 2 below:

[0134] Table 2

[0135] The flow of the current access address space involved in Table 2 includes at least one message of the current access address space, that is, one or more access messages accessing the same address space are called "flow of the access address space".

[0136] It should be understood that the main function of the above decoder is to support the first host to query the UBA of the message and the conversion information of part of the message fields according to the hard physical address (HPA) of the message.

[0137] Exemplarily, the first host queries the decoder to obtain the following information:

[0138] TPG: Indicates the TPG that transmits the current message. The TPG maintains multiple reachable sending ports / paths between the source and destination.

[0139] Order ID: Used to indicate the Order ID of the flow currently accessing the address space. The Order ID is used to select a unique egress port / path from multiple reachable sending ports / paths within the TPG. This Order ID is filled in the message as the load balancing (LB) field, which can enable the HASH routing mechanism, thereby ensuring that the message reaches the receiving side through a unique path.

[0140] Order Type: Indicates the order type of the flow currently accessing the address space, such as NO, RO, or SO. This field is directly used by the controller to fill the "ODR" field in the message.

[0141] It should be understood that the first host can obtain information about at least one resource space in the second host and configure the information about the at least one resource space to the universal bus decoder of the first host, where the aforementioned first resource space is any one of the at least one resource space. For example, with respect to the information about the second resource space in the second host obtained by the first host, the first host configures the information about the second resource space to a decoder table entry, where the decoder table entry includes a second entry, and the second entry includes path information corresponding to a second access message indicating access to the second resource space and order-preserving attribute information corresponding to the second resource space.

[0142] As an example and not a limitation, the path information corresponding to the above-mentioned second access message (which can be simply referred to as the second path information) is different from the path information corresponding to the first access message, and the order-preserving attribute information corresponding to the second resource space is different from the order-preserving attribute information corresponding to the first resource space, that is, in this embodiment, different access messages with order-preserving requirements can be transmitted through different paths, thereby ensuring order-preserving transmission of messages in a multi-path transmission scenario.

[0143] After the above table entry configuration is completed, if the first host initiates an access to the second host in order to access the first resource space provided by the second host to the first host, the first host can query the decoder table entry to obtain the order preservation requirements that the first access message must meet, and generate the first access message based on the information obtained by querying the decoder table entry (such as order preservation attribute information, transmission path information, etc.). The method flow shown in Figure 6 also includes:

[0144] S630: The first host generates a first access message.

[0145] Specifically, when the first host group sends the first access message, it fills in the relevant fields of the sent data packet and selects the sending path according to the searched sequence attribute information.

[0146] For example, the format of the first access message is shown in FIG10 , including but not limited to a routing mode field and an LB field, wherein the meanings of RM and LB are shown in Table 3 below:

[0147] Table 3

[0148] It should be noted that the first access message also includes other information, which in this embodiment mainly involves the RM field and the LB field in the message. For other fields, reference can be made to the relevant description of the message format in the current universal bus protocol, which will not be repeated here.

[0149] Specifically, the RM field in the message header may be defined as shown in Table 4 below:

[0150] Table 4

[0151] Optionally, if the RM domain indicates that the transmission path selection method for the current first access message is a flow-based hash method, the first host and the intermediate switch can perform hash routing based on the tuple. For example, in a flow-based hash, the first host and the intermediate switch can select one or more field segments of the message header for hash routing, such as the five-tuple {srcIP, dstIP, protocol, transport layer source port, transport layer destination port} in the IP message format; for a compressed message format, {srcCNA, dstCNA, LB} can be used for hashing. Hash routing can also select parameter information of the message in the network device to participate in the hash calculation (such as the ingress port number of the switch, etc.).

[0152] Furthermore, the TAH of the first access message also includes an ODR field, wherein the ODR field definition may be as shown in Table 5 below:

[0153] Table 5

[0154] Exemplarily, after the first host composes the first access message, it can send the first access message to the second host through the multi-path network (such as the network shown in FIG. 4 ). The method flow shown in FIG. 6 further includes:

[0155] S640: The first host sends a first access message to the second host.

[0156] Specifically, the switch determines a path among multiple paths for transmitting the first access message based on the RM field in the first access message. Further, after receiving the first access message, the second host can determine the order preservation requirement of the first access message based on the "ODR" field in the first access message.

[0157] In the communication method of Figure 6, during the resource registration phase, it is identified that messages accessing certain resource spaces have no ordering requirements and can be executed out of order, or that messages accessing certain resource spaces have order-preserving requirements. This means that the order-preserving requirements between messages accessing different resource spaces can be known in advance. Furthermore, relevant information is configured in the decoder table entry. When an access request is sent, the corresponding order-preserving attributes can be obtained by querying the relevant information in the decoder table entry. These attributes are then used to populate the relevant message fields. This allows for the use of multiple paths in order-preserving scenarios.

[0158] To facilitate understanding, the following describes how to implement order-preserving transmission of messages in a multipath scenario in the communication method shown in FIG6 with reference to specific examples.

[0159] Example 1:

[0160] Step 1: The load / store operation issued by the xPU of the first host reaches the unified bus controller in the first host via the internal bus;

[0161] Step 2: The universal bus controller determines that the load / store operation needs to be sent to the second host via the universal bus link;

[0162] Step 3: The universal bus controller initiates a table lookup request to the decoder table entry;

[0163] Step 4: Perform an internal table lookup based on the HPA to obtain the corresponding information, which includes the UBA, Order ID, Order Type, and other information provided by the second host when registering the resource space;

[0164] Step 5: After querying the decoder table entry for the destination communication object information, the universal bus controller queries the internal routing table to obtain multiple accessible "egress ports / paths". The universal bus controller uses the "Order ID" as the routing input for these multiple accessible "egress ports / paths" and routes messages with the same "Order ID" to the same "egress port / path".

[0165] Step 6: The universal bus controller assembles the packet, fills the "order type" obtained by querying the decoder table entry into the "ODR" of the message, fills the "Order ID" into the "LB" of the message, sets the "bit 0 of RM" in the message to 0, and fills other information (for example, UBA, DstEID, TokenID, .....) into the corresponding positions of the message.

[0166] Step 7: When the message is transmitted to the switch, the switch detects that "bit 0 of RM is set to 0" in the message and uses the hash routing mechanism. For the compressed message format, {srcCNA, dstCNA, LB} can be hashed. Therefore, the same {srcCNA, dstCNA, LB} can reach the second host through a determined path.

[0167] Step 8: For the second host, the load / store messages corresponding to the same Order ID sent by the same source device are received from the same physical port, and the second host performs sequence processing according to the "ODR" in the message.

[0168] It should be understood that the specific examples shown in Figures 5 to 10 of the embodiments of the present application are intended only to help those skilled in the art better understand the embodiments of the present application, and do not limit the scope of the embodiments of the present application. It should also be understood that the order of the sequence numbers of the above-mentioned processes does not necessarily indicate the order of execution. The execution order of each process should be determined by its function and internal logic, and should not constitute any limitation on the implementation process of the embodiments of the present application.

[0169] It should also be understood that in the various embodiments of the present application, unless otherwise specified or there is a logical conflict, the terms and / or descriptions between different embodiments are consistent and can be referenced to each other, and the technical features in different embodiments can be combined to form new embodiments according to their internal logical relationships.

[0170] The above mainly introduces the solution provided by the embodiment of the present application from the perspective of 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 appreciate 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 a hardware or computer software driven hardware manner 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 be beyond the scope of this application.

[0171] The communication device provided in the embodiment of the present application is described in detail below with reference to Figures 11 to 13. It should be understood that the description of the device embodiment corresponds to the description of the method embodiment. Therefore, for matters not described in detail, reference can be made to the method embodiment above. For the sake of brevity, some contents are not repeated here.

[0172] In the embodiment of the present application, the functional modules of the first host or the second host can be divided 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 modules 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 functional division. There may be other division methods in actual implementation. The following is an example of dividing each functional module according to each function.

[0173] FIG11 shows a schematic structural diagram of a communication device 1000 provided in an embodiment of the present application.

[0174] In one example, the communication device 1100 may be applied to a first host, and the communication device 1100 may be used to execute the above communication method, for example, the method shown in FIG6 . Specifically, the communication device 1100 may include a transceiver unit 1110 and a processing unit 1120 .

[0175] The transceiver unit 1110 is configured to obtain information about a first resource space in a second host, the information about the first resource space including a starting address of the first resource space, length information of the first resource space, and order-preserving attribute information corresponding to the first resource space, the order-preserving attribute information corresponding to the first resource space being used to indicate an order-preserving requirement corresponding to a first access message for accessing the first resource space. The processing unit 1120 is configured to configure the information about the first resource space into a decoder table entry, the decoder table entry including a first entry, the first entry including path information indicating a first access message for accessing the first resource space and order-preserving attribute information corresponding to the first resource space, wherein a plurality of transmission paths are provided between the first host and the second host.

[0176] As an example, in conjunction with FIG6 , the transceiver unit 1010 may be configured to execute S610 and S640 , and the processing unit 1020 may be configured to execute S620 and S630 .

[0177] It should be noted that the device shown in FIG. 11 can also be used to execute the method steps involved in the embodiment variations shown in the aforementioned figures, which will not be described in detail here.

[0178] In another example, the communication device 1100 may be applied to a second host, and the communication device 1100 may be used to execute the above-mentioned communication method, for example, to execute the method shown in FIG5 .

[0179] Transceiver unit 1010 is configured to receive, as a second host, a first access message from a first host, the first access message being used to access a first resource space in the second host, the order preservation field of the first access message carrying information indicating the order preservation requirement corresponding to the first access message, and the load sharing factor field of the access message carrying information indicating a first transmission path. Processing unit 1120 is configured to determine the order preservation requirement of the first access message based on the order preservation field of the first access message; wherein the physical port receiving at least one access message transmitted on the first transmission path is the same, and the first access message is one of the at least one access message.

[0180] As an example, in conjunction with FIG6 , the transceiver unit 1010 may be configured to execute S610 and S640 .

[0181] It should be noted that the device shown in FIG. 11 can also be used to execute the method steps involved in the embodiment variations shown in the aforementioned figures, which will not be described in detail here.

[0182] The embodiment of the present application further provides a chip system 1200, as shown in FIG12 , which includes at least one processor and at least one interface circuit. As an example, when the chip system 1200 includes one processor and one interface circuit, the one processor may be the processor 1210 shown in the solid-line box in FIG12 (or the processor 1210 shown in the dashed-line box), and the one interface circuit may be the interface circuit 1220 shown in the solid-line box in FIG12 (or the interface circuit 1220 shown in the dashed-line box).

[0183] When the chip system 1200 includes two processors and two interface circuits, the two processors include the processor 1210 shown in the solid line frame and the processor 1210 shown in the dotted line frame in Figure 12, and the two interface circuits include the interface circuit 1220 shown in the solid line frame and the interface circuit 1220 shown in the dotted line frame in Figure 12. This is not limited. The processor 1210 and the interface circuit 1220 can be interconnected via a line. For example, the interface circuit 1220 can be used to receive signals (such as instructions stored in a memory, etc.). For another example, the interface circuit 1220 can be used to send signals to other devices (such as the processor 1210).

[0184] For example, the interface circuit 1220 can read instructions stored in the memory and send the instructions to the processor 1210. When the instructions are executed by the processor 1210, the communication device can perform the various steps in the above embodiment. Of course, the chip system 1200 can also include other discrete components, which are not specifically limited in this embodiment of the application.

[0185] Another embodiment of the present application further provides a computer-readable storage medium having instructions stored therein. When the instructions are executed on a communication device, the communication device executes the steps performed by the communication device in the method flow shown in the above method embodiment. In some embodiments, the disclosed method can be implemented as computer program instructions encoded in a machine-readable format on a computer-readable storage medium or on other non-transitory media or articles.

[0186] FIG13 schematically shows a conceptual partial view of a computer program product provided by an embodiment of the present application, where the computer program product includes a computer program for executing a computer process on a computer device.

[0187] In one embodiment, a computer program product is provided using a signal-bearing medium 1300. The signal-bearing medium 1300 may include one or more program instructions that, when executed by one or more processors, may provide the functionality or portions of the functionality described above with respect to FIG. 6 . Thus, for example, one or more features of S610-S640 in FIG. 6 may be provided by one or more instructions associated with the signal-bearing medium 1300. Furthermore, the program instructions in FIG. 13 also depict example instructions.

[0188] In some examples, the signal-bearing medium 1300 may include a computer-readable medium 1301, such as, but not limited to, a hard drive, a compact disk (CD), a digital video disk (DVD), a digital tape, a memory, a read-only memory (ROM), or a random access memory (RAM), and the like.

[0189] In some implementations, signal bearing medium 1300 may include computer recordable medium 1302 such as, but not limited to, memory, read / write (R / W) CD, R / W DVD, and the like.

[0190] In some embodiments, the signal-bearing medium 1300 may include a communication medium 1303, such as, but not limited to, a digital and / or analog communication medium (e.g., fiber optic cable, waveguide, wired communication link, wireless communication link, etc.). The signal-bearing medium 1300 may be communicated by a wireless form of the communication medium 1303. The one or more program instructions may be, for example, computer-executable instructions or logic-implemented instructions.

[0191] In some examples, various operations, functions, or actions are provided in response to one or more program instructions via computer-readable media 1301 , computer-recordable media 1302 , and / or communication media 1303 .

[0192] Should be understood that the arrangement described here is only for the purpose of example. Thus, those skilled in the art will understand that other arrangements and other elements (such as, machines, interfaces, functions, sequences, and functional groups, etc.) can be used instead, and some elements can be omitted altogether according to the desired result. In addition, many of the described elements can be implemented as discrete or distributed components or in any appropriate combination and position in conjunction with the functional entities implemented by other components.

[0193] Those skilled in the art will appreciate that the units and algorithm steps of each example described in conjunction with the embodiments disclosed herein can be implemented in electronic hardware, or a combination of computer software and electronic hardware. Whether these functions are performed in hardware or software 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 beyond the scope of this application.

[0194] Those skilled in the art will clearly understand that, for the convenience and brevity of description, the specific working processes of the systems, devices and units described above can refer to the corresponding processes in the aforementioned method embodiments and will not be repeated here.

[0195] In the several embodiments provided in this 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 merely schematic. For example, the division of the units is merely a logical function division. In actual implementation, there may be other division methods, 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 through some interfaces, indirect coupling or communication connection of devices or units, which can be electrical, mechanical or other forms.

[0196] The units described as separate components may or may not be physically separate, and the components shown as units may or may not be physical units, that is, they may be located in one place or distributed across multiple network units. Some or all of these units may be selected to achieve the purpose of this embodiment according to actual needs.

[0197] 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.

[0198] If the functions are implemented in the form of software functional units and sold or used as independent products, they can be stored in a computer-readable storage medium. Based on this understanding, the technical solution of the present application, or the part that contributes to the prior art, or the part of the technical solution, can be embodied in the form of a software product. The computer software product is stored in a storage medium and includes several instructions for enabling a computer device (which can be a personal computer, a server, or a network device, etc.) to execute all or part of the steps of the method described in each embodiment of the present application. The aforementioned storage medium includes various media that can store program codes, such as a USB flash drive, a mobile hard disk, a read-only memory (ROM), a random access memory (RAM), a magnetic disk, or an optical disk.

[0199] The above description is merely a specific embodiment of the present application, but the scope of protection of the present application is not limited thereto. Any changes or substitutions that can be easily conceived by a person skilled in the art within the technical scope disclosed in this application should be included in the scope of protection of this application. Therefore, the scope of protection of this application should be based on the scope of protection of the claims.

Claims

1. A communication method, characterized in that: The method comprises: The first host obtains information about a first resource space in the second host, where the information about the first resource space includes a starting address of the first resource space, length information of the first resource space, and order preservation attribute information corresponding to the first resource space, where the order preservation attribute information corresponding to the first resource space is used to indicate an order preservation requirement corresponding to a first access message for accessing the first resource space; The first host stores order preservation attribute information and first path information corresponding to the first resource space, where the first path information is used to indicate a transmission path corresponding to a first access message for accessing the first resource space. The transmission path indicated by the first path information is one of multiple transmission paths between the first host and the second host.

2. The method according to claim 1, characterized in that The first host saves the order preservation attribute information and the first path information corresponding to the first resource space, including: The first host configures information of the first resource space into a decoder table entry, where the decoder table entry includes a first entry, and the first entry includes the first path information and order preservation attribute information corresponding to the first resource space.

3. The method according to claim 2, characterized in that When the first host determines to send a first access message to the second host to access the first resource space, the method includes: The first host queries the decoder table entry to determine the first path information and the order preservation requirement corresponding to the first access message; The first host determines, according to the first path information, an output port and a first transmission path corresponding to the first access message; The first transmission path is a transmission path among the multiple transmission paths used to transmit the first access message, and the first transmission path is used to transmit access messages corresponding to the same path information.

4. The method according to claim 3, characterized in that The method further comprises: The first host generates the first access message according to the first transmission path and the order preservation requirement corresponding to the first access message, The order preservation field of the first access message carries information indicating the order preservation requirement corresponding to the first access message, and the load sharing factor field of the first access message carries information indicating the first transmission path.

5. The method according to claim 4, characterized in that The routing indication field of the first access message is set to 0, The routing indication field is set to 0 to indicate that a hash routing mechanism is used to determine a transmission path for the first access message.

6. The method according to any one of claims 1 to 5, characterized in that The first host obtains the order preservation attribute information corresponding to the first resource space, including: The first host receives the order-preserving attribute information corresponding to the first resource space from the second host; or, The first host determines the order-preserving attribute information corresponding to the resource space according to the purpose of the first resource space.

7. The method according to any one of claims 1 to 6, characterized in that The method further comprises: The first host obtains information about a second resource space in the second host, where the information about the second resource space includes a starting address of the second resource space, length information of the second resource space, and order preservation attribute information corresponding to the second resource space, where the order preservation attribute information corresponding to the second resource space is used to indicate an order preservation requirement corresponding to a second access message for accessing the second resource space; The first host stores order preservation attribute information and second path information corresponding to the second resource space, where the second path information is used to indicate a transmission path corresponding to a second access message for accessing the second resource space. The second path information is different from the first path information, and the order-preserving attribute information corresponding to the second resource space is different from the order-preserving attribute information corresponding to the first resource space.

8. The method according to claim 7, characterized in that The first host stores the order preservation attribute information and the second path information corresponding to the second resource space, including: The first host configures the information of the second resource space into a decoder table entry, where the decoder table entry includes a second entry, and the second entry includes the second path information and order preservation attribute information corresponding to the second resource space.

9. The method according to any one of claims 1 to 8, characterized in that The order preservation requirement corresponding to the first access message includes any one of the following: Strong order preservation SO, no order preservation required NO, or flexible order preservation RO.

10. A communication method, characterized in that: The method comprises: The second host receives a first access message from the first host, wherein the first access message is used to access a first resource in the second host. In the source space, the order preservation field of the first access message carries information indicating an order preservation requirement corresponding to the first access message, and the load sharing factor field of the access message carries information indicating a first transmission path; The second host determines the order preservation requirement of the first access message according to the order preservation field of the first access message; The second host has the same physical port for receiving at least one access message transmitted on the first transmission path, and the first access message is one of the at least one access message.

11. A communication method, characterized in that: include: The first host obtains information about a first resource space in the second host, where the information about the first resource space includes a starting address of the first resource space, length information of the first resource space, and order preservation attribute information corresponding to the first resource space, where the order preservation attribute information corresponding to the first resource space is used to indicate an order preservation requirement corresponding to a first access message for accessing the first resource space; The first host stores order preservation attribute information and first path information corresponding to the first resource space, where the first path information is used to indicate a transmission path corresponding to a first access message for accessing the first resource space. The second host receives a first access message from the first host, where the first access message is used to access a first resource space in the second host, an order preservation field of the first access message carries information indicating an order preservation requirement corresponding to the first access message, and a load sharing factor field of the access message carries information indicating a first transmission path; The second host determines the order preservation requirement of the first access message according to the order preservation field of the first access message; The second host has the same physical port for receiving at least one access message transmitted on the first transmission path, and the first access message is one of the at least one access message.

12. A communication system, characterized in that: comprising a first host and at least one second host, The first host is used to obtain information about a first resource space in a second host, where the information about the first resource space includes a starting address of the first resource space, length information of the first resource space, and order preservation attribute information corresponding to the first resource space, where the order preservation attribute information corresponding to the first resource space is used to indicate an order preservation requirement corresponding to a first access message for accessing the first resource space; The first host is used to store order preservation attribute information and first path information corresponding to the first resource space, where the first path information is used to indicate a transmission path corresponding to a first access message for accessing the first resource space, The second host is used to receive a first access message from the first host, where the first access message is used to access a first resource space in the second host, the order preservation field of the first access message carries information indicating an order preservation requirement corresponding to the first access message, and the load sharing factor field of the access message carries information indicating a first transmission path; The second host determines the order preservation requirement of the first access message according to the order preservation field of the first access message; The second host has the same physical port for receiving at least one access message transmitted on the first transmission path, and the first access message is one of the at least one access message.

13. A communication device, characterized in that: include: A processor, configured to read instructions stored in a memory, wherein when the processor executes the instructions, the communication device implements the method described in any one of claims 1 to 10; or, the communication device implements the method described in claim 11.

14. A computer program product, characterized in that The computer program product comprises a computer program code, and when the computer program code is run on a computer, the method of any one of claims 1 to 10 is executed; or when the computer program code is run on a computer, the method of claim 11 is executed.

15. A computer-readable storage medium, characterized in that: Comprising a computer program, which, when running on a computer system, causes a processing module in the computer system to execute the method as claimed in any one of claims 1 to 10; or, when running on a computer system, causes a processing module in the computer system to execute the method as claimed in claim 11.

Citation Information

Patent Citations

  • Communication method and communication device

    CN120045496A

  • Method and device for message processing

    CN105511954A

  • Read-write method of message exit information and forwarding engine

    CN106713144A

  • DDR4 access control method, device and network equipment

    CN116303159A

  • Installing virtual machines within different communication pathways to access protected resources

    US20160381028A1