Communication method, computing device, and computing system
By configuring multiple IO Die and network addresses on the computing nodes, and using EID for multi-path transmission and load balancing, the memory bandwidth matching problem between computing nodes is solved, and efficient multi-IO Die port communication is achieved, meeting the high bandwidth requirements.
Patent Information
- Application Number
- PCT/CN2024/116261
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-01-12
- Filing Date
- 2024-09-02
- Publication Date
- 2025-07-17
AI Technical Summary
In high-performance computing systems, the memory bandwidth requirements between computing nodes are difficult to match, and the prior art is difficult to effectively utilize multiple IO Die and port links to meet the bandwidth requirements of applications.
By configuring multiple IO Dies on the computing node, each IO Dies allocates a network address and EID, using the two-layer identification design of EID and network address, it supports multi-path transmission and load balancing, and realizes parallel communication of multiple IO Die ports.
It improves the communication bandwidth between computing nodes, meets the high bandwidth requirements, simplifies the communication object migration process, and improves the processing efficiency and flexibility of communication object identification.
Smart Images

Figure CN2024116261_17072025_PF_FP_ABST
Abstract
Description
Communication method, computing device, and computing system
[0001] This application claims priority to the Chinese patent application filed with the China Patent Office on January 12, 2024, with application number 202410053846.5 and application name “Communication Method, Computing Device and Computing System”, 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, a computing device, and a computing system. Background Art
[0003] The primary performance bottleneck of high-performance computing systems is memory bandwidth. Applications' demand for extreme computing power is driving the memory bandwidth of each compute node from tens of gigabytes per second (GB / s) in the double data rate (DDR) era to hundreds of GB / s or even terabytes per second (TB / s) in the high-bandwidth memory (HBM) era. For example, an artificial intelligence (AI) task can be deployed and run in parallel on a system with up to thousands of compute nodes. With extremely high data access requirements between compute nodes, the interconnection bandwidth specifications between nodes must match the memory bandwidth within the compute nodes.
[0004] Specifically, a computing node is generally composed of a system on a chip (SoC) and memory. The SoC can be, but is not limited to, a central processing unit (CPU), a neural processing unit (NPU), or a graphics processing unit (GPU), and the memory can be DDR and / or HBM. SoC chips can improve interconnection bandwidth specifications by supporting more interconnection port links. However, if this exceeds the chip design or manufacturing requirements, it needs to be implemented by integrating one or more input and output dies (IO Dies). Therefore, how to utilize one or more IO Dies and multiple port links to meet the bandwidth requirements of applications has become an urgent problem to be solved.
[0005] Summary of the Invention
[0006] The present application provides a communication method, in order to meet the bandwidth requirements of an application by utilizing one or more IO Dies.
[0007] In a first aspect, a communication method is provided, which is applied to a first physical node. The method can be executed by the first physical node, or can also be executed by a circuit or chip configured in the first physical node, and this application does not limit this. For ease of description, the following description takes the execution of the first physical node as an example. The first physical node includes a first processing unit and a first IO Die. The first processing unit is used to create a first computing instance, and the first IO Die is used to create a first communication entity instance for the first computing instance.
[0008] The communication method includes: a first IO Die receives a first operation instruction, where the first operation instruction is used to instruct access to the memory of a second computing instance in a second physical node; the second physical node includes a second processing unit and a second IO Die; the second processing unit is used to create a second computing instance; and the second IO Die is used to create a second communication entity instance for the second computing instance. The identifier of the first communication entity instance is a first entity identifier (EID); the first IO Die includes at least one first port, each of which corresponds to at least one first network address; the identifier of the second communication entity instance is a second EID; the second IO Die includes at least one second port, each of which corresponds to at least one second network address; the second IO Die corresponds to a third network address; and the first IO Die corresponds to a fourth network address; the at least one first port and the at least one second port are connected to at least one switching plane; the first IO Die generates at least one first message according to the first operation instruction; the at least one first message is sent to the second physical node via the at least one switching plane; the first EID, the at least one first network address, the second EID, the at least one second network address, the third network address, and the fourth network address are used to determine a transmission path for the at least one first message.
[0009] Based on the above technical solution, the first physical node serves as the source device and the second physical node serves as the target device. In some bus systems, when a message is transmitted between the source device and the target device, the message can be transmitted through multiple transmission paths. Specifically, in this technical solution, a physical node includes at least one IO Die, each IO Die includes at least one port, each port is assigned a network address (NA), the network addresses of multiple ports of the same IO Die can be different or the same, and each IO Die on a physical node can be assigned a network address, and the port network address and the IO Die network address are uniformly addressed, that is, the network address is defined as two levels, port and IO Die, and is uniformly addressed within an address space. In addition, the IO Die provides a corresponding communication entity instance for the communication object of this physical node (such as a computing / device function instance, each computing / device function instance is a communication object when communicating), and each communication entity instance is assigned an EID, which can uniquely represent the corresponding communication object, that is, the EID can be used as a communication object identifier. Through the two-layer identification design of EID and network address (such as IO Die network address and port network address on IO Die), the communication objects on at least one physical node can be uniformly identified as peer communication objects based on EID. The network address represents the location of the physical node in the interconnected network, thereby supporting the use of multiple IO Die ports between physical nodes (including host and device nodes) to expand the communication bandwidth.
[0010] In addition, single-stream multi-path transmission of messages is supported. For example, the data of an access transaction (such as a memory read or write operation) can be divided into at least one message, and multiple messages can be transmitted in parallel on multiple port links.
[0011] In combination with the first aspect, in certain implementations of the first aspect, the first physical node further includes a third IO Die, the third IO Die corresponds to the fourth network address, the third IO Die is used to create a third communication entity instance for the first computing instance, the identifier of the third communication entity instance is the first EID, the third IO Die includes at least one third port, and the at least one third port corresponds to at least one fifth network address respectively. The method further includes: the third IO Die receives a second operation instruction, and the second operation instruction is used to instruct access to the memory of the second computing instance; the third IO Die generates at least one second message according to the second operation instruction, the at least one third port is connected to the at least one switching plane, and the at least one second message is sent to the second physical node through the at least one switching plane, and the first EID, the at least one first network address, the second EID, the at least one second network address, the at least one fifth network address, the third network address and the fourth network address are used to determine the transmission path of the at least one second message and the at least one first message.
[0012] Based on the above technical solution, if the same physical node includes multiple IO Dies, the network addresses of multiple IO Dies of the same physical node can be the same, and the network addresses of multiple ports of different IO Dies are different. Therefore, the multi-IO Die technology supports any physical nodes to obtain ultra-large bandwidth by stacking IO Dies and port numbers.
[0013] In addition, multiple communication entity instances on different IO Dies on a physical node are configured with the same EID. This can be understood as the aggregation of these different communication entity instances into a virtual communication entity instance. A virtual communication entity instance can be bound to a communication object and can communicate using multiple IO Dies and multiple ports in parallel. In other words, multiple communication objects on a physical node can share a single network address for communication, and a communication object can communicate using multiple network addresses on the physical node, thereby increasing communication bandwidth.
[0014] In combination with the first aspect, in some implementations of the first aspect, the first physical node also includes a scheduling module, and the method further includes: the scheduling module splits the operation instruction into the first operation instruction and the second operation instruction; the scheduling module sends the first operation instruction to the first IO Die, and sends the second operation instruction to the third IO Die.
[0015] Based on the above technical solution, if the same physical node includes multiple IO Dies, a scheduler module can be deployed on the sending physical node to split an operation instruction into multiple instructions and distribute them to multiple IO Dies for parallel execution, thereby improving processing efficiency.
[0016] In combination with the first aspect, in certain implementations of the first aspect, the second physical node also includes a fourth IO Die, the fourth IO Die corresponds to the third network address, the fourth IO Die is used to create a fourth communication entity instance for the second computing instance, the identifier of the fourth communication entity instance is the second EID, the fourth IO Die includes at least one fourth port, the at least one fourth port corresponds to at least one sixth network address respectively, the at least one fourth port is connected to the at least one switching plane, the first EID, the at least one first network address, the second EID, the at least one second network address, the at least one fifth network address, the at least one sixth network address, the third network address and the fourth network address are used to determine the transmission path of the message.
[0017] In combination with the first aspect, in certain implementations of the first aspect, the first IO Die is configured with a destination table and a first routing table, the destination table includes a first destination table entry, the first destination table entry includes the second EID and the third network address corresponding to the second EID, the first routing table includes a first default routing table entry, the first default routing table entry indicates at least one first port of the first IO Die, the third IO Die is configured with the destination table and a third routing table, the third routing table includes a third default routing table entry, and the third default routing table entry indicates at least one third port of the third IO Die.
[0018] Based on the above technical solution, a destination table and a routing table are configured on each IO Die of the sending end to support the transmission of the message.
[0019] In combination with the first aspect, in some implementations of the first aspect, if the at least one switching plane includes multiple switching planes, and the first physical node cannot transmit a message to the second physical node through the first switching plane among the multiple switching planes, then the first routing table also includes a first routing table entry, the first routing table entry includes the third network address and the first port corresponding to the third network address, and the third routing table also includes a third routing table entry, the third routing table entry includes the third network address and the third port corresponding to the third network address, wherein the first port corresponding to the third network address is a port of at least one first port of the first IO Die that can be used to transmit a message to the second physical node through a switching plane other than the first switching plane among the multiple switching planes, and the third port corresponding to the third network address is a port of at least one third port of the third IO Die that can be used to transmit a message to the second physical node through a switching plane other than the first switching plane among the multiple switching planes.
[0020] Based on the above technical solution, when a switching plane cannot support message transmission, routing table entries can be designed to allow messages to be transmitted from a switching plane that supports message transmission, thereby avoiding message transmission failure.
[0021] In combination with the first aspect, in certain implementations of the first aspect, the identifier of the destination communication entity instance of the first operation instruction is the second EID, and the method further includes: the first IO Die and the third IO Die query the destination table based on the second EID to determine that the destination network address is the third network address; the first IO Die queries the routing table based on the third network address to determine at least one first port for sending the at least one first message, and the third IO Die queries the third routing table based on the third network address to determine at least one third port for sending the at least one second message.
[0022] Based on the above technical solution, each message on the link carries the communication object identifier and memory operation instruction information. The receiving end IO Die does not need to rely on other message information of the operation instruction to which the message belongs when processing each message.
[0023] In combination with the first aspect, in some implementations of the first aspect, the method further includes: the first IO Die determines, based on a load condition of the at least one first port, to transmit the at least one first message from some or all of the at least one first port, and the third IO Die determines, based on a load condition of the at least one third port, to transmit the at least one second message from some or all of the at least one third port.
[0024] Based on the above technical solution, the sending end IO Die slices the memory operation instruction according to the number of local ports for load balancing.
[0025] In combination with the first aspect, in certain implementations of the first aspect, when the second computing instance is migrated to a third physical node, the first destination table entry is updated to a second destination table entry, and the second destination table entry includes the second EID and the seventh network address corresponding to the second EID, and the seventh network address is the network address assigned to the IO Die on the third physical node.
[0026] Based on this technical solution, the communication object identifier is hierarchically decoupled from the network address. The communication object identifier represents the communication object, and the location of the communication object can be moved between different physical nodes, and the communication object identifier moves with it. When the communication object moves to another physical node, only the corresponding destination table entry needs to be updated on the relevant physical node, simplifying the message transmission process.
[0027] In combination with the first aspect, in certain implementations of the first aspect, the first IO Die is configured with a destination table and a first routing table, the destination table including a first destination table entry, the first destination table entry including the second EID and at least one second network address corresponding to the second EID, the first routing table including at least one second routing table entry, the at least one second routing table entry corresponding to at least one second port of the second IO Die and / or at least one fourth port of the fourth IO Die, each second routing table entry including the second network address of the corresponding second port and / or the sixth network address of the fourth port and an identifier of one or more first ports of the at least one first port; the third IO Die is configured with the destination table and a third routing table, the third routing table including at least one fourth routing table entry, the at least one fourth routing table entry corresponding to at least one second port of the second IO Die and / or at least one fourth port of the fourth IO Die, each fourth routing table entry including the second network address of the corresponding second port and / or the sixth network address of the fourth port and an identifier of one or more third ports of the at least one third port.
[0028] Based on the above technical solution, a destination table and a routing table are configured on each IO Die of the sending end to support the transmission of the message.
[0029] In combination with the first aspect, in certain implementations of the first aspect, the identifier of the destination communication entity instance of the first operation instruction and the second operation instruction is the second EID, and the method further includes: the first IO Die and the third IO Die query the destination table based on the second EID to determine that the destination network address is the second network address of at least one second port of the second IO Die and / or the sixth network address of at least one fourth port of the fourth IO Die; the first IO Die queries the first routing table based on the second network address of the at least one second port and / or the sixth network address of the at least one fourth port to determine at least one first port to send the at least one first message, and the third IO Die queries the third routing table based on the second network address of the at least one second port and / or the sixth network address of the at least one fourth port to determine at least one third port to send the at least one second message.
[0030] Based on the above technical solution, each message on the link carries the communication object identifier and memory operation instruction information. The receiving end IO Die does not need to rely on other message information of the operation instruction to which the message belongs when processing each message.
[0031] In combination with the first aspect, in certain implementations of the first aspect, the method further includes: the first IO Die and the third IO Die determining, based on the number of second network addresses and / or the number of sixth network addresses in the destination table, to transmit the message from some or all of the at least one second port of the second IO Die and / or the at least one fourth port of the fourth IO Die. Further, the first IO Die determines, based on the load condition of the at least one first port, to transmit the at least one first message from some or all of the at least one first port, and the third IO Die determines, based on the load condition of the at least one third port, to transmit the at least one second message from some or all of the at least one third port.
[0032] Based on the above technical solution, the sending end IO Die slices the memory operation instruction for load balancing according to the number of local ports or the number of network addresses in the destination table.
[0033] In combination with the first aspect, in certain implementations of the first aspect, when the second computing instance is migrated to a third physical node, the first destination table entry is updated to a second destination table entry, and the second network address and / or sixth network address of each of the second routing table entry and the fourth routing table entry are updated to the network address assigned to the port of the IO Die of the third physical node, and the second destination table entry includes the second EID and the eighth network address corresponding to the second EID, and the eighth network address is the network address assigned to the port of the IO Die on the third physical node.
[0034] Based on the above technical solution, when a communication object is migrated to another physical node, it is only necessary to update the corresponding destination table entry on the relevant physical node, thereby simplifying the message transmission process.
[0035] In a second aspect, a communication method is provided, which is applied to a second physical node. The method can be executed by the second physical node, or can also be executed by a circuit or chip configured in the second physical node, which is not limited in this application. For ease of description, the following description uses the execution of the second physical node as an example. The second physical node includes a second processing unit and a second IO Die. The second processing unit is used to create a second computing instance, and the second IO Die is used to create a second communication entity instance for the second computing instance.
[0036] The communication method includes: the second IO Die receives at least one first message from a first physical node, the at least one first message is used to access the memory of the second computing instance, the first physical node includes a first processing unit and a first input / output bare die IO Die, the first processing unit is used to create a first computing instance, and the first IO Die is used to create a first communication entity instance for the first computing instance, wherein the identifier of the first communication entity instance is a first entity identifier EID, the first IO Die includes at least one first port, the at least one first port corresponds to at least one first network address, the identifier of the second communication entity instance is a second EID, the second IO Die includes at least one second port, the at least one second port corresponds to at least one second network address, the second IO Die corresponds to a third network address, and the first IO Die corresponds to a fourth network address, the at least one first port and the at least one second port are connected to at least one switching plane, the second IO Die responds to the at least one first message and accesses the memory of the second computing instance, and one or more of the first EID, the at least one first network address, the second EID, the at least one second network address, the third network address, and the fourth network address are used to determine a transmission path for the at least one first message.
[0037] In combination with the second aspect, in certain implementations of the second aspect, the first physical node also includes a third IO Die, the third IO Die corresponds to the fourth network address, the third IO Die is used to create a third communication entity instance for the first computing instance, the identifier of the third communication entity instance is the first EID, the third IO Die includes at least one third port, and the at least one third port corresponds to at least one fifth network address respectively. The method also includes: the second IO Die receives at least one second message from the first physical node, the at least one second message is used to access the memory of the second computing instance, and the first EID, the at least one first network address, the second EID, the at least one second network address, the at least one fifth network address, the third network address and the fourth network address are used to determine the transmission path of the at least one second message and the at least one first message.
[0038] In combination with the second aspect, in certain implementations of the second aspect, the second physical node also includes a fourth IO Die, the fourth IO Die corresponds to the third network address, the fourth IO Die is used to create a fourth communication entity instance for the second computing instance, the identifier of the fourth communication entity instance is the second EID, the fourth IO Die includes at least one fourth port, the at least one fourth port corresponds to at least one sixth network address respectively, the at least one fourth port is connected to the at least one switching plane, the first EID, the at least one first network address, the second EID, the at least one second network address, the at least one fifth network address, the at least one sixth network address, the third network address and the fourth network address are used to determine the transmission path of the message.
[0039] In combination with the second aspect, in certain implementations of the second aspect, the second computing instance is configured with a first page table, the second IO Die and the fourth IO Die are configured with page table entries, the page table entries include a first page table entry entry, and the first page table entry entry includes the second EID and the starting address of the first page table corresponding to the second EID.
[0040] Based on the above technical solution, each communication object has a page table entry on the receiving end's IO Die, and the page table entries of multiple IO Dies point to the same page table. The receiving end IO Die uses the destination communication object identifier as the memory page table entry index. The receiving end allows multiple memory page table entries, and multiple memory page table entries can correspond to the same memory page table. The receiving end IO Die can use the information carried in the received message to search the memory page table entry and the memory page table, obtain the local memory address, and perform read and write operations.
[0041] In combination with the second aspect, in certain implementations of the second aspect, the identifier of the destination communication entity instance of the at least one first message and the at least one second message is the second EID, and the second IO Die and the fourth IO Die respond to the at least one first message and the at least one second message to access the memory of the second computing instance, including: the second IO Die and the fourth IO Die query the page table entry based on the identifier of the destination communication entity instance of the at least one first message and the at least one second message to determine the starting address of the first page table; the second IO Die and the fourth IO Die query the first page table based on the starting address of the first page table to determine the physical address of the accessed memory space, and use the physical address to initiate a memory read or write operation.
[0042] 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.
[0043] In a third aspect, a communication method is provided, which is applied to a first physical node. The method can be executed by the first physical node, or can also be executed by a circuit or chip configured in the first physical node, and this application does not limit this. For ease of description, the following description is taken as an example of execution by the first physical node. The first physical node includes a first processing unit and multiple first IO Dies. The first processing unit is used to create a first computing instance, and the multiple IO Dies are used to create multiple first communication entity instances for the first computing instance.
[0044] The communication method includes: the multiple first IO Dies respectively receive an operation instruction, the operation instruction is used to instruct access to the memory of a second computing instance in a second physical node, the second physical node includes a second processing unit and multiple second IO Dies, the second processing unit is used to create a second computing instance, and the multiple second IO Dies are respectively used to create multiple second communication entity instances for the second computing instance, wherein the identifiers of the multiple first communication entity instances are all first entity identifiers EIDs, the multiple first IO Dies include multiple first ports, the multiple first ports respectively correspond to multiple first network addresses, the identifiers of the multiple second communication entity instances are all second EIDs, the multiple second IO Dies include multiple second ports, the multiple second ports respectively correspond to multiple second network addresses, the network addresses of the multiple second IO Dies are all third network addresses, the network addresses of the multiple first IO Dies are all fourth network addresses, the multiple first ports and the multiple second ports are connected to at least one switching plane, and the multiple first IO Die generates multiple first messages according to the received operation instructions, and the multiple first messages are sent to the second physical node via the at least one switching plane. The first EID, the multiple first network addresses, the second EID, the multiple second network addresses, the third network address and the fourth network address are used to determine the transmission path of the at least one first message.
[0045] Based on the above technical solution, the first physical node serves as the source device and the second physical node serves as the target device. In some bus systems, when a message is transmitted between the source device and the target device, the message can be transmitted through multiple transmission paths. Specifically, in this technical solution, a physical node includes at least two IO Dies, each IO Die includes at least one port, each port is assigned a network address (NA), and the network addresses of multiple ports of the same IO Die can be different or the same. Moreover, each IO Die on a physical node can be assigned a network address, and the network addresses of multiple IO Dies on the same physical node are the same. The port network address and the IO Die network address are uniformly addressed, that is, the network address is defined as two levels, port and IO Die, and is uniformly addressed within one address space.
[0046] In addition, IO Die provides a corresponding communication entity instance for the communication object of this physical node (such as a computing / device function instance, each computing / device function instance is a communication object when communicating). Each communication entity instance is assigned an EID, which can uniquely represent the corresponding communication object, that is, the EID can be used as a communication object identifier. Multiple communication entity instances on different IO Dies on a physical node are configured with the same EID. It can be understood that different communication entity instances are aggregated into a virtual communication entity instance. A virtual communication entity instance can be bound to a communication object for use, and a virtual communication entity instance can use multiple IO Die ports in parallel for communication.
[0047] In combination with the third aspect, in certain implementations of the third aspect, each of the first IO Die is configured with a destination table and a routing table, the destination table includes a first destination table entry, the first destination table entry includes the second EID and the third network address corresponding to the second EID, the routing table includes a default routing table entry, and the default routing table entry indicates at least one first port of each of the first IO Die.
[0048] In combination with the third aspect, in certain implementations of the third aspect, if the at least one switching plane includes multiple switching planes, and the first physical node cannot transmit messages to the second physical node through the first switching plane among the multiple switching planes, then the routing table also includes a first routing table entry, and the first routing table entry includes the third network address and the port corresponding to the third network address, wherein the port corresponding to the third network address is a port in at least one first port of each of the first IO Die that can be used to transmit messages to the second physical node through a switching plane other than the first switching plane among the multiple switching planes.
[0049] In combination with the third aspect, in certain implementations of the third aspect, the identifier of the destination communication entity instance of the first operation instruction is the second EID, and the method further includes: each of the first IO Die queries the destination table based on the second EID to determine that the destination network address is the third network address; each of the first IO Die queries the routing table based on the third network address to determine at least one first port for sending the at least one first message.
[0050] In combination with the third aspect, in some implementations of the third aspect, the method further includes: each of the first IO Dies determines, based on a load condition of the at least one first port, to transmit the at least one first message from some or all of the at least one first port.
[0051] In combination with the third aspect, in certain implementations of the third aspect, when the second computing instance is migrated to a third physical node, the first destination table entry is updated to a second destination table entry, and the second destination table entry includes the second EID and the seventh network address corresponding to the second EID, and the seventh network address is the network address assigned to the IO Die on the third physical node.
[0052] In combination with the third aspect, in certain implementations of the third aspect, each of the first IO Die is configured with a destination table and a routing table, the destination table includes a first destination table entry, the first destination table entry includes the second EID and at least one second network address corresponding to the second EID, the routing table includes at least one second routing table entry, the at least one second routing table entry corresponds to at least one second port of the second IO Die respectively, and each second routing table entry includes the second network address of the corresponding second port and the identifier of one or more first ports among the at least one first port.
[0053] In combination with the third aspect, in certain implementations of the third aspect, the identifier of the destination communication entity instance of the first operation instruction is the second EID, and the method further includes: each of the first IO Dies queries the destination table based on the second EID to determine that the destination network address is the second network address of at least one second port of the second IO Die; each of the first IO Die queries the routing table based on the at least one second network address to determine at least one first port for sending the at least one first message.
[0054] In combination with the third aspect, in certain implementations of the third aspect, the method further includes: each of the first IO Dies determines, based on the number of second network addresses in the destination table, to transmit the at least one message from some or all of the at least one first port of the first IO Die; and each of the first IO Dies determines, based on the load condition of the at least one first port, to transmit the at least one first message from some or all of the at least one first port.
[0055] In combination with the third aspect, in certain implementations of the third aspect, when the second computing instance is migrated to a third physical node, the first destination table entry is updated to a second destination table entry, and the second network address of the second port of each second routing table entry in the at least one second routing table entry is updated to the network address assigned to the port of the IO Die of the third physical node, and the second destination table entry includes the second EID and the eighth network address corresponding to the second EID, and the eighth network address is the network address assigned to the port of the IO Die on the third physical node.
[0056] The technical effects of the method shown in the third aspect and its possible design above can refer to the technical effects in the first aspect and its possible design.
[0057] In a fourth aspect, a communication method is provided, which is applied to a second physical node. The method can be executed by the second physical node, or can also be executed by a circuit or chip configured in the second physical node, and this application does not limit this. For ease of description, the following description takes the execution of the second physical node as an example. The second physical node includes a second processing unit and multiple second IO Dies. The second processing unit is used to create a second computing instance, and the multiple second IO Dies are respectively used to create multiple second communication entity instances for the second computing instance.
[0058] The communication method includes: the multiple second IO Dies respectively receive at least one first message from the first physical node, the at least one first message is used to access the memory of the second computing instance, the first physical node includes a first processing unit and multiple first IO Dies, the first processing unit is used to create a first computing instance, and the multiple first IO Dies are respectively used to create multiple first communication entity instances for the first computing instance, wherein the identifiers of the first communication entity instances are all first entity identifiers EIDs, the multiple first IO Dies include multiple first ports, the multiple first ports correspond to multiple first network addresses respectively, the identifiers of the multiple second communication entity instances are all second EIDs, the multiple second IO Dies include multiple second ports, the multiple second ports correspond to multiple second network addresses respectively, the network addresses of the multiple second IO Dies are all third network addresses, the network addresses of the multiple first IO Dies are all fourth network addresses, the multiple first ports and the multiple second ports are connected to at least one switching plane, and the multiple second IO Die responds to the at least one first message and accesses the memory of the second computing instance, and the first EID, the multiple first network addresses, the second EID, the multiple second network addresses, the third network address and the fourth network address are used to determine the transmission path of the at least one first message.
[0059] In combination with the fourth aspect, in certain implementations of the fourth aspect, the second computing instance is configured with a first page table, each second IO Die is configured with a page table entry, the page table entry includes a first page table entry entry, and the first page table entry entry includes the second EID and the starting address of the first page table corresponding to the second EID.
[0060] In combination with the fourth aspect, in certain implementations of the fourth aspect, the identifier of the destination communication entity instance of the at least one first message is the second EID, and each second IO Die responds to the at least one first message to access the memory of the second computing instance, including: each second IO Die queries the page table entry based on the identifier of the destination communication entity instance of the at least one first message to determine the starting address of the first page table; each second IO Die queries the first page table based on the starting address of the first page table to determine the physical address of the accessed memory space, and uses the physical address to initiate a memory read or write operation.
[0061] The technical effects of the method shown in the above fourth aspect and its possible design can refer to the technical effects in the third aspect and its possible design.
[0062] In a fifth aspect, a computing 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.
[0063] In a sixth aspect, a computer-readable storage medium is provided, which stores a program code for execution by a device, wherein the program code includes a program for executing the methods provided in the above aspects.
[0064] In a seventh aspect, a computer program product comprising instructions is provided, which, when run on a computer, enables the computer to execute the methods provided in the above aspects.
[0065] In an eighth 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.
[0066] 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.
[0067] In a ninth aspect, a chip is provided, which is used to execute the methods provided in the above aspects.
[0068] In a tenth aspect, a computer system is provided, which includes the chip shown in the ninth aspect.
[0069] In an eleventh aspect, a terminal device is provided, the terminal device including the chip of the ninth aspect. For example, the terminal device includes but is not limited to a mobile phone, a vehicle, and other terminals.
[0070] In a twelfth aspect, a computing system is provided, comprising a first physical node for executing the method provided in the first aspect and a second physical node for executing the method provided in the second aspect.
[0071] In a thirteenth aspect, a computing system is provided, comprising a first physical node for executing the method provided in the third aspect and a second physical node for executing the method provided in the fourth aspect. BRIEF DESCRIPTION OF THE DRAWINGS
[0072] FIG1 is a schematic diagram of the structure of a computer device provided in an embodiment of the present application.
[0073] FIG2 is a schematic diagram of a data center provided in an embodiment of the present application.
[0074] Figure 3 (a) to (c) are schematic diagrams of scenarios of host and device interconnection provided by an embodiment of the present application.
[0075] Figure 4 (a) and (b) are schematic diagrams of the physical node morphology provided in an embodiment of the present application.
[0076] FIG5 is a schematic flow chart of a communication method provided in this application.
[0077] FIG6 is a schematic diagram of communication between a first physical node and a second physical node provided in the present application.
[0078] FIG7 is a schematic diagram of another communication between a first physical node and a second physical node provided in the present application.
[0079] FIG8 is a schematic diagram of another communication between a first physical node and a second physical node provided in the present application.
[0080] FIG9 is a schematic diagram of the aggregation of communication entity instances provided in this application.
[0081] FIG10 is a schematic diagram of another communication between a first physical node and a second physical node provided in the present application.
[0082] FIG11 shows a schematic structural diagram of a computing device 1100 provided in an embodiment of the present application.
[0083] FIG12 shows a schematic structural diagram of a chip system 1200 provided in an embodiment of the present application.
[0084] FIG13 schematically shows a conceptual partial view of a computer program product provided by an embodiment of the present application. DETAILED DESCRIPTION
[0085] In order to facilitate understanding of the embodiments of the present application, the following explanations are made.
[0086] 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 interchangeable under appropriate circumstances 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 "S510" are only for the convenience of description and are not used to limit the order of execution of steps.
[0087] 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.
[0088] Third, the term "storage" used in the embodiments of this 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 computing device. The one or more memories may also be partially provided separately and partially integrated into a decoder, a processor, or a computing device. The type of memory may be any form of storage medium, and this application is not limited thereto.
[0089] 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.
[0090] 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].”
[0091] 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.
[0092] 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.
[0093] The technical solutions in the embodiments of the present application will be described below with reference to the accompanying drawings.
[0094] 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.
[0095] 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.
[0096] 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).
[0097] 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.
[0098] 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).
[0099] 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.
[0100] 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.
[0101] 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.
[0102] 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).
[0103] 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.
[0104] 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.
[0105] 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.
[0106] 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.
[0107] 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.
[0108] For example, the communication method provided in the embodiments of the present application can also be applied to a server cluster communicating across networks as shown in FIG2 , such as the data center shown in FIG2 . The internal structure of the switch, host, or device shown in FIG2 is as shown in FIG1 above.
[0109] 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.
[0110] The above briefly introduces the scenarios in which the present application can be applied in combination with Figures 1 and 2. In order to facilitate understanding of the embodiments of the present application, some basic concepts involved in the present application are briefly explained.
[0111] 1. IO Die: A computing node generally consists of a system on a chip (SoC) and memory. The SoC can be, but is not limited to, a central processing unit (CPU), a neural processing unit (NPU), or a graphics processing unit (GPU), and the memory can be DDR and / or HBM. SoC chips that support more interconnection port links can improve the interconnection bandwidth specification, but if it exceeds the chip design or manufacturing requirements, it needs to be implemented by integrating multiple input and output dies (IO Dies). Each SoC contains multiple IO Dies (input and output dies), and each IO Die may have one or more ports designed by different manufacturers. The IO Die can be a die integrated into the SoC, a die in a chiplet chipset, or an independent chip in the system. This application does not impose any restrictions on the specific form of the IO Die.
[0112] In this application, a physical node (such as a host or device) includes at least one IO Die, each IO Die includes at least one port, each port is assigned a network address (NA), and the network addresses of multiple ports of the same IO Die can be different or the same.
[0113] 2. Asymmetric interconnection: Mainly used to connect multiple hosts and devices. Asymmetry refers to the unequal number of ports on the device and host sides, with the host side having more ports. For example, a single IO Die (single or multiple ports per IO Die) on the device side and multiple IO Dies on the host side allow multiple devices to share the host node's high bandwidth when accessing the host node's memory.
[0114] To facilitate understanding, the scenario of asymmetric interconnection is briefly introduced with reference to FIG3 (a).
[0115] As shown in Figure 3(a), an asymmetric interconnection scenario includes multiple hosts (e.g., physical nodes #11 and #12 shown in Figure 3(a)) and multiple devices (e.g., physical nodes #21, #22, and #23 shown in Figure 3(a)). One or more ports of a physical node are connected to one or more switching planes (e.g., switching plane #1 shown in Figure 3(a)). Each switching plane can be composed of one or more switches, and the sender can reach the receiver's IO Die through any switching plane. As can be seen from Figure 3(a), the host side includes multiple IO Dies (e.g., IO Die #11 and #12 shown in Figure 3(a)), while the device side has a single IO Die (e.g., IO Die #21 shown in Figure 3(a)).
[0116] 3. Single-plane symmetrical interconnect: This is primarily used to connect multiple physical nodes. Symmetry refers to the equal number of ports on the device and host sides. For example, both the device and host can have multiple I / O dies (each with a single or multiple ports), or, as another example, both the device and host can have a single I / O die (each with a single or multiple ports). All ports are connected to the same switching plane, allowing physical nodes to directly access the memory of other nodes using high bandwidth.
[0117] For ease of understanding, a scenario of single-plane symmetrical interconnection is briefly introduced with reference to FIG3(b).
[0118] As shown in Figure 3(b), a single-plane symmetrical interconnection scenario includes multiple physical nodes (e.g., physical node #1 and physical node #2 shown in Figure 3(b)). One or more ports of a physical node are connected to one (e.g., switching plane #1 shown in Figure 3(b)), and the sender reaches the receiver's IO Die through the switching plane. It can be seen from Figure 3(b) that a physical node includes multiple IO Dies (e.g., IO Die #1 and IO Die #2 on physical node #1, and IO Die #1 and IO Die #2 on physical node #2, as shown in Figure 3(b)).
[0119] 4. Multi-plane symmetrical interconnection: This is primarily used to connect multiple physical nodes, with equal port numbers on the device and host sides. For example, both the device and host can have multiple IO dies (single or multiple ports per die), or, for another example, both the device and host can have single IO dies (single or multiple ports per IO die). Multiple ports or port groups are connected to different switching planes, allowing physical nodes to directly access the memory of other nodes using high bandwidth.
[0120] For ease of understanding, a scenario of multi-plane symmetrical interconnection is briefly introduced with reference to FIG3(c).
[0121] As shown in Figure 3(c), the multi-plane symmetrical interconnection scenario includes multiple physical nodes (e.g., physical node #1 and physical node #2 shown in Figure 3(c)). One or more ports of the physical node are connected to multiple (e.g., switching plane #1 and switching plane #2 shown in Figure 3(c)). The sender can reach the receiver IO Die through any switching plane. As can be seen from Figure 3(c), the physical node includes multiple IO Dies (e.g., IO Die #1 and IO Die #2 on physical node #1, and IO Die #1 and IO Die #2 on physical node #2 shown in Figure 3(c)).
[0122] 5. Single IO Die: This indicates that each physical node has only one IO Die, which has at least one port. Each physical node has at least one compute function instance or device function instance. For ease of description, compute function instances or device function instances are collectively referred to as compute instances. A compute instance can be understood as a communication object, meaning that each physical node has at least one communication object. An IO Die creates a communication entity instance for each communication object.
[0123] Specifically, each port of an IO Die is assigned a network address, which represents the location of the port of a physical node in the interconnected network. Additionally, each IO Die can also be assigned a network address, which represents the location of the IO Die of a physical node in the interconnected network. Each communication entity instance is assigned an identity (e.g., an Entity Identifier (EID)), which uniquely represents the corresponding communication object.
[0124] For ease of understanding, the physical node morphology scenario of a single IO Die is briefly introduced in conjunction with Figure 4 (a).
[0125] As shown in Figure 4 (a), the physical node includes an IO Die (e.g., IO Die #1 shown in Figure 4 (a)), and the IO Die has at least one port (e.g., port #1 and port #2 shown in Figure 4 (a)). The physical node includes at least one computing instance (e.g., computing instance #1 and computing instance #2 shown in Figure 4 (a)). Computing instance #1 is understood as communication object #1, and IO Die creates communication entity instance #1 for communication object #1. The identity identifier of communication entity instance #1 is EID #1. Computing instance #2 is understood as communication object #2, and IO Die creates communication entity instance #2 for communication object #2. The identity identifier of communication entity instance #2 is EID #2.
[0126] Specifically, each port of IO Die is assigned a network address (such as the network address #A of port #1 and the network address #B of port #2 shown in Figure 4 (a)), and IO Die can also be assigned a network address (such as the network address #C of IO Die #1 shown in Figure 4 (a)).
[0127] The physical node shown in (a) in Figure 4 can receive messages with destination network addresses of network address #A and network address #C from port #1, and can receive messages with destination network addresses of network address #B and network address #C from port #2. That is, messages with destination network addresses of port network addresses can only be received from the corresponding ports, and messages with destination network addresses of IO Die network addresses can be received from all its ports.
[0128] 6. Multiple IO Dies: This indicates that each physical node has at least two IO Dies, each with at least one port. Each physical node has at least one compute instance or device function instance. For ease of description, compute function instances or device function instances are collectively referred to as compute instances. A compute instance can be understood as a communication object, meaning that each physical node has at least one communication object. An IO Die creates a communication entity instance for each communication object.
[0129] Communication entity instances located on two IO Dies can be aggregated into a virtual communication entity instance (eg, represented by the same EID) and used by a communication object.
[0130] Specifically, each port of an IO Die is assigned a network address, which represents the location of the port of a physical node in the interconnected network. Additionally, each IO Die can also be assigned a network address, which represents the location of the IO Die of a physical node in the interconnected network. Each communication entity instance is assigned an identity (e.g., EID), which uniquely identifies the corresponding communication object.
[0131] For ease of understanding, the physical node morphology scenario of a single IO Die is briefly introduced in conjunction with Figure 4 (b).
[0132] As shown in FIG4(b), the physical node includes multiple IO Dies (e.g., IO Die#1 and IO Die#2 shown in FIG4(b)), and each IO Die has at least one port (e.g., port #1 and port #2 of IO Die#1, and port #3 and port #4 of IO Die#2 shown in FIG4(b)). The physical node includes at least one computing instance (e.g., computing instance #1, computing instance #2, and computing instance #3 shown in FIG4(b)). Computing instance #1 is understood as communication object #1, and IO Die#1 and IO Die#2 respectively create communication entity instance #1 for communication object #1, and the identity identifier of communication entity instance #1 is EID#1. Computing instance #2 is understood as communication object #2, and IO Die#1 creates communication entity instance #2 for communication object #2, and the identity identifier of communication entity instance #2 is EID#2. Compute instance #3 is considered communication object #3. IO Die #2 creates communication entity instance #3 for communication object #3. The identity of communication entity instance #3 is EID #3. Communication entity instance #1 on IO Die #1 and communication entity instance #2 on IO Die #2 can be aggregated into a virtual communication entity instance, which is used by a compute instance #1.
[0133] Specifically, each port of IO Die is assigned a network address (such as network address #A of port #1 of IO Die#1, network address #B of port #2 of IO Die#1, network address #C of port #3 of IO Die#2, and network address #D of port #4 of IO Die#2 as shown in Figure 4 (b)). IO Die can also be assigned a network address (such as network address #E of IO Die#1 and network address #F of IO Die#2 as shown in Figure 4 (b)).
[0134] Network address #A and network address #B shown in Figure 4(b) can be the same or different, network address #C and network address #D can be the same or different, and network address #E and network address #F can be the same or different. Each communication entity instance is assigned an identity that uniquely identifies the corresponding communication object.
[0135] The physical node shown in (b) of Figure 4 can receive messages with destination network addresses of network address #A and network address #E from port #1 of IO Die#1, can receive messages with destination network addresses of network address #B and network address #E from port #2 of IO Die#1, can receive messages with destination network addresses of network address #C and network address #F from port #3 of IO Die#2, and can receive messages with destination network addresses of network address #D and network address #F from port #4 of IO Die#2, that is, messages with destination network addresses of port network addresses can only be received from the corresponding port, and messages with destination network addresses of IO Die network addresses can be received from all its ports.
[0136] The above briefly introduces the applicable scenarios of the communication method provided by this application and the basic concepts involved in this application. The basic concepts also introduce the concepts related to IO Dies. How to effectively utilize the physical bandwidth of one or more IO Dies and one or more port links to meet the needs of the application has become a challenge.
[0137] The present application proposes a communication method and apparatus, which aims to meet the bandwidth requirements of an application by utilizing one or more IO Dies and one or more port links. The communication method provided by the present application will be described in detail below with reference to the accompanying drawings.
[0138] 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, can be applied to multiple hosts, multiple device resource pools, or super nodes interconnected using a bus system.
[0139] 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.
[0140] FIG5 is a schematic flow chart of a communication method provided by the present application, which is applied to a scenario in which communication is performed between a first physical node and a second physical node, wherein the first physical node and the second physical node can be hosts, device resource pools, or super nodes interconnected by a bus system.
[0141] In the embodiment shown in Figure 5, the second physical node can serve as a receiving end (or called a target device (target)), and the first physical node can serve as a sending end (or called an initiator device (initiator)). For the receiving end, the receiving end is the local device, and the sending end is the remote device. The command received by the receiving end from the sending end is called a remote command.
[0142] Exemplarily, the above-mentioned first physical node can be a physical machine or a virtual machine. If the first physical node is a virtual machine, the steps executed by the first physical node can be executed by the virtual machine; similarly, the second physical node can be a physical machine or a virtual machine. If the second physical node is a virtual machine, the steps executed by the second physical node can be executed by the virtual machine.
[0143] Specifically, the first physical node includes a first processing unit and at least one IO Die. The first processing unit includes at least one processor or device function core Die. The first processing unit is used to create a computing function instance or a device function instance. For example, the first processing unit is used to create at least one computing instance, and the at least one IO Die is used to create a communication entity instance for the computing instance.
[0144] For example, the first physical node includes a first processing unit and a first IO Die. The first processing unit is used to create a first computing instance. The first IO Die is used to create a first communication entity instance for the first computing instance. The identifier of the first communication entity instance is a first EID. The first IO Die includes at least one first port. The at least one first port corresponds to at least one first network address. The first IO Die corresponds to a fourth network address. Furthermore, the first physical node also includes a third IO Die. The third IO Die corresponds to a fourth network address. The third IO Die is used to create a third communication entity instance for the first computing instance. The identifier of the third communication entity instance is the first EID. The third IO Die includes at least one third port. The at least one third port corresponds to at least one fifth network address.
[0145] For example, the first physical node includes a first processing unit and multiple first IO Dies, the first processing unit is used to create a first computing instance, the multiple IO Dies are used to create multiple first communication entity instances, the identifiers of the multiple first communication entity instances are all first entity identifiers EID, the multiple first IO Dies include multiple first ports, the multiple first ports correspond to multiple first network addresses respectively, and the network addresses of the multiple first IO Dies are all fourth network addresses. Each of the multiple first IO Dies includes at least one first port, and each first port is assigned a first network address, that is, at least one first port corresponds to at least one first network address one-to-one, and the first network addresses corresponding to different first ports are the same or different (for example, the first network addresses corresponding to the first ports of the same first IO Die can be the same).
[0146] Specifically, the second physical node includes a second processing unit and at least one IO Die. The second processing unit includes at least one processor or device function core Die. The second processing unit is used to create a computing function instance or a device function instance. For example, the second processing unit is used to create a computing instance, and the at least one IO Die is used to create a communication entity instance for the computing instance.
[0147] For example, the second physical node includes a second processing unit and a second IO Die, the second processing unit is used to create a second computing instance, the second IO Die is used to create a second communication entity instance for the second computing instance, the identifier of the second communication entity instance is a second EID, the second IO Die includes at least one second port, the at least one second port corresponds to at least one second network address, and the second IO Die corresponds to a third network address; further, the second physical node also includes a fourth IO Die, the fourth IO Die corresponds to the third network address, the fourth IO Die is used to create a fourth communication entity instance for the second computing instance, the identifier of the fourth communication entity instance is the second EID, the fourth IO Die includes at least one fourth port, and the at least one fourth port corresponds to at least one sixth network address.
[0148] For example, the second physical node includes a second processing unit and multiple second IO Dies. The second processing unit is used to create a second computing instance. The multiple second IO Dies are respectively used to create multiple second communication entity instances for the second computing instance. The identifiers of the multiple second communication entity instances are all second EIDs. The multiple second IO Dies include multiple second ports. The multiple second ports correspond to multiple second network addresses respectively. The network addresses of the multiple second IO Dies are all third network addresses. Each of the multiple second IO Dies includes at least one second port. Each second port is assigned a second network address, that is, at least one second port corresponds to at least one second network address in a one-to-one correspondence. The second network addresses corresponding to different second ports are the same or different (for example, the second network addresses corresponding to the second ports of the same second IO Die can be the same).
[0149] Exemplarily, a first network address of a first port is different from a second network address of a second port.
[0150] For example, a first IO Die includes a first port #1 and a first port #2, the network address of the first port #1 is the first network address #1, and the network address of the first port #2 is the first network address #2; a second IO Die includes a second port #1 and a second port #2, the network address of the second port #1 is the second network address #1, and the network address of the second port #2 is the second network address #2. The first network address #1 and the first network address #2 may be the same or different, the second network address #1 and the second network address #2 may be the same or different, the first network address #1 and the second network address #1 or the second network address #2 may be different, and the first network address #2 and the second network address #1 or the second network address #2 may be different.
[0151] In this embodiment, the physical node includes at least one computing / device function instance (such as the computing instance mentioned above, the computing instance can also be called a computing function instance or a device function instance, without any limitation on the name), and each computing instance is a communication object when communicating. The communication object refers to the functional entity that uses the communication function in the system, including but not limited to the host, virtual machine, container, process, device, or service, etc.
[0152] The method shown in FIG5 includes the following steps:
[0153] S510: At least one IO Die of a first physical node receives an operation instruction.
[0154] Specifically, the operation instruction is used to instruct access to the memory of the computing instance in the second physical node. For example, the operation instruction instructs reading or writing the memory of at least one computing instance.
[0155] As a possible implementation manner, the first physical node includes a first IO Die, and the first IO Die receives the first operation instruction.
[0156] In this implementation, the first physical node can be understood as a single IO Die physical node.
[0157] As another possible implementation, the first physical node includes a first IO Die and a third IO Die, the first IO Die receives a first operation instruction, and the third IO Die receives a second operation instruction.
[0158] In this implementation, the first physical node can be understood as a multi-IO Die physical node. Optionally, the first physical node also includes a scheduling module that splits the operation instruction into a first operation instruction and a second operation instruction, sends the first operation instruction to the first IO Die, and sends the second operation instruction to the third IO Die.
[0159] As another possible implementation, the first physical node includes multiple first IO Dies, and each of the multiple first IO Dies receives the first operation instruction.
[0160] In this implementation, the first physical node can be understood as a multi-IO Die physical node. Optionally, the first physical node further includes a scheduling module that splits the operation instruction into multiple first operation instructions and sends the multiple first operation instructions to multiple first IO Dies respectively.
[0161] For example, the first physical node includes the first IO Die #1, the first IO Die #2, and the first IO Die #3. The scheduling module splits the operation instruction into the first operation instruction #1, the first operation instruction #2, and the first operation instruction #3. The first operation instruction #1 is sent to the first IO Die #1, the first operation instruction #2 is sent to the first IO Die #2, and the first operation instruction #3 is sent to the first IO Die #3.
[0162] S520: At least one IO Die of the first physical node generates at least one message.
[0163] Specifically, at least one IO Die of the first physical node generates at least one message according to the operation instruction, and the at least one message is sent to at least one second port via at least one first port and at least one switching plane.
[0164] As a possible implementation manner, the first physical node includes a first IO Die, and the first IO Die generates at least one first message according to a first operation instruction.
[0165] Exemplarily, the first IO Die of the first physical node slices the first operation instruction according to information of the first operation instruction to generate at least one slice, and each slice generates a corresponding first message.
[0166] If the first operation instruction is a direct memory access (DMA) operation instruction, the information of the first operation instruction includes but is not limited to: an identifier of the destination communication entity instance, an operation code, an IO memory address, and a length.
[0167] If the first operation instruction is a load or store operation instruction, the information of the first operation instruction includes but is not limited to: an operation code, a memory address (e.g., a hard physical address (HPA)), a length, etc. When the first operation instruction is a load / store operation instruction, the first IO Die of the first physical node first searches the decoding table to find the identifier of the destination communication entity instance and the IO memory address according to the memory address.
[0168] As another possible implementation, the first physical node includes a first IO Die and a third IO Die, the first IO Die generates at least one first message according to a first operation instruction, and the third IO Die generates at least one second message according to a second operation instruction.
[0169] In this implementation, the descriptions related to the first operation instruction and the second operation instruction can refer to the description of the first operation instruction mentioned above, and will not be repeated here.
[0170] Furthermore, at least one IO Die of the first physical node sends the generated at least one message to part or all of the at least one second port of the second physical node, and the method flow shown in FIG5 further includes:
[0171] S530: At least one IO Die of the first physical node sends at least one message to the second physical node.
[0172] Specifically, at least one first IO Die of the first physical node is sent to part or all of the at least one first port via at least one switching plane through part or all of the at least one second port.
[0173] It should be understood that in order to successfully send at least one message to the second physical node, the management function entity (or system administrator) in this embodiment performs the following configuration:
[0174] 1) Configuration on the first physical node.
[0175] As a possible implementation, if the first physical node and the second physical node are in the form of a single IO Die, for example, the first physical node includes at least one IO Die, including: the first physical node includes a first IO Die #1, and the second physical node includes at least one IO Die, including: the second physical node includes a second IO Die #1.
[0176] In this implementation, a first communication entity instance #1 can be created for the first computing instance #1 on the first IO Die #1, and a first EID can be assigned to the first communication entity instance #1. Furthermore, a destination table and a routing table are configured for the first IO Die #1, and the destination table includes a first destination table entry.
[0177] Optionally, the first destination table entry includes the second EID of the second communication entity instance #1 and the third network address of the second IO Die #1 corresponding to the second EID.
[0178] Optionally, the first destination table entry includes the second EID of the second communication entity instance #1 and the second network address of at least one second port of the second IO Die #1 corresponding to the second EID.
[0179] Optionally, the routing table includes a default routing table entry, and the default routing table entry indicates at least one first port.
[0180] Optionally, the routing table includes at least one second routing table entry, the at least one second routing table entry corresponds to at least one second port, and each second routing table entry includes the second network address of the corresponding second port and the identifier of one or more first ports of the at least one first port.
[0181] For example, the third network address of the second IO Die #1 of the second physical node is third network address #1, the at least one first port included in the first IO Die #1 includes the first port #1 and the first port #2, and the at least one second port included in the second IO Die #1 includes the second port #1 and the second port #2. Furthermore, the first port #1 and the first port #2, as well as the second port #1 and the second port #2, can be connected to one or more switching planes, so that the sending end can reach the receiving end IO Die through any switching plane. The default routing table entry then indicates the first port #1 and the first port #2, and the at least one second routing table entry includes the second routing table entry #1 and the second routing table entry #2. The second routing table entry #1 includes the second network address of the second port #1 and the identifier of the first port #1 corresponding to the second port #1, and the second routing table entry #2 includes the second network address of the second port #2 and the identifier of the first port #2 corresponding to the second port #2.
[0182] As another possible implementation, if the first physical node and the second physical node are in the form of multiple IO Dies, for example, the first physical node includes at least one IO Die, including: the first physical node includes a first IO Die #1 and a first IO Die #2, and the second physical node includes at least one IO Die, including: the second physical node includes a second IO Die #1 and a second IO Die #2.
[0183] In this implementation, a first communication entity instance #1 can be created for the first computing instance #1 on the first IO Die #1, and a first EID can be assigned to the first communication entity instance; a first communication entity instance #2 can be created for the first computing instance #1 on the first IO Die #2, and a first EID can be assigned to the first communication entity instance #2.
[0184] Furthermore, a destination table and a routing table are configured for the first IO Die #1 and the first IO Die #2, and the destination table includes a first destination table entry. For example, a first destination table #1 and a first routing table #1 are configured for the first IO Die #1, and the first destination table #1 includes the first destination table entry #1. A first destination table #2 and a first routing table #2 are configured for the first IO Die #2, and the first destination table #2 includes the first destination table entry #2.
[0185] Optionally, the first destination table entry #1 and the first destination table entry #2 include the second EID of the second communication entity instance #1 and the second communication entity instance #2 in the second physical node and the third network address of the second IO Die #1 and the second IO Die #2 corresponding to the second EID.
[0186] Optionally, the first destination table entry #1 and the first destination table entry #2 include the second EID of the second communication entity instance #1 and the second communication entity instance #2 in the second physical node and the network address of at least one second port of the second IO Die #1 corresponding to the second EID, and the network address of at least one second port of the second IO Die #2.
[0187] Optionally, the first routing table #1 includes a first default routing table entry #1, which indicates at least one first port of the first IO Die #1; the first routing table #2 includes a first default routing table entry #2, which indicates at least one first port of the first IO Die #2.
[0188] Optionally, the first routing table #1 includes at least one second routing table entry #1, at least one second routing table entry #1 corresponds to at least one second port, each second routing table entry #1 includes the second network address of the corresponding second port and the identifier of one or more first ports among at least one first port; the first routing table #2 includes at least one second routing table entry #2, at least one second routing table entry #2 corresponds to at least one second port, each second routing table entry #2 includes the network address of the corresponding second port and the identifier of one or more first ports among at least one first port.
[0189] For example, the at least one IO Die included in the first physical node includes: the first physical node includes a first IO Die and a third IO Die, and the at least one IO Die included in the second physical node includes: the second physical node includes a second IO Die and a fourth IO Die.
[0190] In this implementation, a first communication entity instance can be created for the first computing instance 1 on the first IO Die, and a first EID can be assigned to the first communication entity instance; a third communication entity instance can be created for the first computing instance on the third IO Die, and a first EID can be assigned to the third communication entity instance.
[0191] Furthermore, a destination table and a routing table are configured for the first IO Die and the third IO Die, and the destination table includes the first destination table entry. For example, a destination table and a first routing table are configured for the first IO Die, and the destination table includes the first destination table entry, and a destination table #2 and a third routing table are configured for the third IO Die.
[0192] Optionally, the first destination table entry includes the second EID and third network addresses of the second IO Die and the fourth IO Die corresponding to the second EID.
[0193] Optionally, the first destination table entry includes a second network address of at least one second port of a second IO Die corresponding to the second EID, and / or a sixth network address of at least one fourth port of a fourth IO Die corresponding to the second EID.
[0194] Optionally, the first routing table includes a default routing table entry, and the default routing table entry indicates at least one first port.
[0195] Optionally, the first routing table includes at least one second routing table entry, the at least one second routing table entry corresponds to at least one second port and / or at least one fourth port, each second routing table entry includes the second network address of the corresponding second port and / or the sixth network address of at least one fourth port, and the identifier of one or more first ports among at least one first port.
[0196] Optionally, the third routing table includes a default routing table entry, and the default routing table entry indicates at least one third port.
[0197] Optionally, the third routing table includes at least one fourth routing table entry, and the at least one fourth routing table entry corresponds to at least one second port and / or at least one fourth port, respectively. Each fourth routing table entry includes the second network address of the corresponding second port and / or the sixth network address of at least one fourth port, and the identifier of one or more third ports of at least one third port.
[0198] For ease of description, in the following description, if the first physical node and / or the second physical node is in the form of multiple IO Dies, the multiple IO Dies on the first physical node are multiple first IO Dies, and the multiple IO Dies on the second physical node are multiple second IO Dies.
[0199] Optionally, if the second physical node fails, the second communication entity instance is migrated to the third physical node, and the configuration on the first physical node needs to be updated accordingly.
[0200] For example, when the destination table configured for each IO Die on the first physical node includes a first destination table entry and the routing table includes a default routing table entry, the first destination table entry is updated to a second destination table entry, the second destination table entry includes a second EID and a seventh network address corresponding to the second EID, the seventh network address is the network address assigned to the IO Die on the third physical node, and the default routing table entry does not need to be updated.
[0201] For another example, in the case where the destination table configured for each IO Die on the first physical node includes a first destination table entry, the routing table includes at least one routing table entry, and each routing table entry indicates the network address of the port of the opposite IO Die, the first destination table entry is updated to a second destination table entry, the second destination table entry includes a second EID and a seventh network address corresponding to the second EID, and the seventh network address is the network address assigned to the IO Die on the third physical node. The network address of the port indicated by each routing table entry in the at least one routing table entry (e.g., the second routing table entry and / or the fourth routing table entry described above) (e.g., the network address of the port of at least one IO Die on the second physical node, such as the second network address of the second port and / or the sixth network address of the fourth port) is updated to the network address assigned to the port of the IO Die of the third physical node.
[0202] Exemplarily, when the routing table includes a default routing table entry, a certain IO Die on the first physical node sends at least one message including:
[0203] The IO Die on the first physical node queries the destination table based on the identifier of the destination communication entity instance of the operation instruction (e.g., the second EID) to determine that the destination network address is the network address of at least one IO Die on the second physical node (e.g., the third network address), and the IO Die on the first physical node queries the default routing table entry in the routing table based on the destination network address to determine the port for sending the message.
[0204] In this implementation, the first IO Die can determine, based on the load condition of the at least one first port, to transmit the at least one first message from some or all of the at least one first port to achieve load balancing; and / or the third IO Die can determine, based on the load condition of the at least one third port, to transmit the at least one second message from some or all of the at least one third port to achieve load balancing. That is, each IO Die can determine a message transmission path based on the load condition of its own port.
[0205] Exemplarily, when the routing table includes at least one second routing table entry, an IO Die on the first physical node sends at least one message including:
[0206] The IO Die on the first physical node queries the destination table based on the identifier of the destination communication entity instance of the operation instruction (e.g., the second EID) to determine that the destination network address is the network address of the port of at least one IO Die on the second physical node (e.g., the second network address of at least one second port and / or the sixth network address of at least one fourth port). The IO Die on the first physical node queries at least one second routing table entry in the routing table based on the network address of the port of at least one IO Die to determine the port to send the message.
[0207] In this implementation, the first IO Die may determine to transmit a message from some or all of the at least one port (e.g., at least one second port and / or at least one fourth port) of at least one IO Die on the second physical node based on the number of network addresses of the ports of at least one IO Die on the second physical node in the destination table (e.g., the number of second network addresses and / or the number of sixth network addresses), and the first IO Die may determine to transmit at least one first message from some or all of the at least one first port based on the load condition of the at least one first port to achieve load balancing; and / or the third IO Die may determine to transmit a message from some or all of the at least one port (e.g., at least one second port and / or at least one fourth port) of at least one IO Die on the second physical node based on the number of network addresses of the ports of at least one IO Die on the second physical node in the destination table (e.g., the number of second network addresses and / or the number of sixth network addresses), and the third IO Die may determine to transmit the at least one second message from some or all of the at least one third port based on the load condition of the at least one third port to achieve load balancing. That is, each IO Die can determine the message transmission path based on the number of destination network addresses and the load of its own port. For example, if there are two destination network addresses (such as C or D), the first IO Die performs slicing processing to generate at least one slice, and assigns the slice to destination network address C or D. It uses the slice's destination network address to query the routing table to obtain at least one first port, and selects the first port based on the load of the at least one first port.
[0208] 2) Configuration on the second physical node.
[0209] As a possible implementation, if the first physical node and the second physical node are in the form of a single IO Die, for example, the first physical node includes at least one IO Die, including: the first physical node includes a first IO Die #1, and the second physical node includes at least one IO Die, including: the second physical node includes a second IO Die #1.
[0210] In this implementation, a second communication entity instance #1 can be created for the second computing instance #1 on the second IO Die #1, and a second EID can be assigned to the second communication entity instance #1. Furthermore, a first page table is established for the second computing instance #1, and a page table entry is configured for the second IO Die #1. The page table entry includes a first page table entry, and the first page table entry includes the second EID and the memory address of the first page table corresponding to the second EID.
[0211] As another possible implementation, if the first physical node and the second physical node are in the form of multiple IO Dies, for example, the first physical node includes at least one IO Die, including: the first physical node includes a first IO Die #1 and a first IO Die #2, and the second physical node includes at least one IO Die, including: the second physical node includes a second IO Die #1 and a second IO Die #2.
[0212] In this implementation, a second communication entity instance #1 can be created for the second computing instance #1 on the second IO Die #1, and a second EID can be assigned to the second communication entity instance #1. A second communication entity instance #2 can be created for the second computing instance #2 on the second IO Die #2, and a second EID can be assigned to the second communication entity instance #2. Furthermore, a first page table is established for the second computing instance #1, and page table entries are configured for the second IO Die #1 and the second IO Die #2. The page table entries include a first page table entry, and the first page table entry includes a memory address of the first page table corresponding to the second EID and the second EID.
[0213] After receiving the message, the IO Die of the second physical node takes the destination communication object identifier in the message to look up the page table entry, obtains the memory address of the first page table, continues to look up the first page table to obtain the physical address of the memory space to be accessed, and uses the physical address to initiate memory read and write operations.
[0214] 3) Configuration on the switching plane.
[0215] The at least one first port and the at least one second port are connected to at least one switching plane.
[0216] Optionally, at least one first port and at least one second port are connected to a switching plane #1, and the switching plane #1 is configured with routing table entries pointing to the network address of at least one first port, the network address of at least one second port, the network address of at least one first IO Die, and the network address of at least one second IO Die.
[0217] Optionally, at least one first port and at least one second port are connected to multiple switching planes, and each switching plane #1 in the multiple switching planes is configured with a routing table entry pointing to the network addresses of part or all of the first ports of the at least one first port, the network addresses of part or all of the second ports of the at least one second port, the network address of at least one first IO Die, and the network address of at least one second IO Die.
[0218] For example, a first IO Die includes a first port #1 and a first port #2, the network address of the first port #1 is the first network address #1, the network address of the first port #2 is the first network address #2, and the network address of the first IO Die is the fourth network address #1; a second IO Die includes a second port #1 and a second port #2, the network address of the second port #1 is the second network address #1, the network address of the second port #2 is the second network address #2, and the network address of the second IO Die is the third network address #1. The first port #1, the first port #2, the second port #1, and the second port #2 are connected to a switching plane #1, and the switching plane #1 is configured with routing table entries pointing to the first network address #1, the first network address #2, the second network address #1, the second network address #2, the fourth network address #1, and the third network address #1.
[0219] For another example, the first port #1 and the second port #2 are connected to the switching plane #1, the first port #2 and the second port #1 are connected to the switching plane #2, the switching plane #1 is configured with routing table entries pointing to the first network address #1, the second network address #2, the fourth network address #1, and the third network address #1, and the switching plane #2 is configured with routing table entries pointing to the first network address #2, the second network address #1, the fourth network address #1, and the third network address #1.
[0220] In the communication method shown in Figure 5, a two-layer identification design of EID and network address (such as IO Die network address and port network address on IO Die) is used to uniformly identify the communication objects on at least one physical node as peer communication objects based on EID. The network address represents the position of the physical node in the interconnected network, thereby supporting the use of at least one IO Die to expand the communication bandwidth between physical nodes (including host and device nodes).
[0221] As an example and not a limitation, the communication method shown in Figure 5 can be applied in a computing system including multiple physical nodes (or hosts, devices, etc.), for example, in a computing system including a first physical node and a second physical node, wherein the first physical node in the computing system is used to implement the function of the first physical node in the communication method shown in Figure 5, and the second physical node in the computing system is used to implement the function of the second physical node in the communication method shown in Figure 5. The computing system can also be understood as a computing cluster.
[0222] For example, the first physical node and the second physical node are in a single IO Die form, the first physical node includes a first IO Die, and the second physical node includes a second IO Die. The first IO Die in the first physical node is used to receive a first operation instruction and, based on the first operation instruction, generate at least one first message, and send the at least one first message to the second physical node through the port of the first physical node and the switching plane. The second IO Die of the second physical node is used to receive the at least one first message and, in response to the at least one first message, access the memory of the second computing instance of the second physical node.
[0223] For another example, the first physical node and the second physical node are in a multi-IO Die form, the first physical node includes a first IO Die and a third IO Die, and the second physical node includes a second IO Die and a fourth IO Die. The first IO Die in the first physical node is used to receive a first operation instruction and, based on the first operation instruction, generate at least one first message, and send the at least one first message to the second physical node through the port of the first physical node via the switching plane; the third IO Die in the first physical node is used to receive a second operation instruction and, based on the second operation instruction, generate at least one second message, and send the at least one second message to the second physical node through the port of the first physical node via the switching plane. The second IO Die and the fourth IO Die of the second physical node are used to receive the at least one first message and the at least one second message, and access the memory of the second computing instance of the second physical node in response to the at least one first message and the at least one second message.
[0224] It should be understood that the description of the multiple physical nodes in the computing system can refer to the description of the first physical node and the second physical node in the communication method shown in FIG5 above, and will not be repeated here. In addition, the configuration of the multiple physical nodes and the configuration of the switching plane in the computing system can also refer to the description of the configuration of the physical nodes and the configuration of the switching plane in the communication method shown in FIG5 above, and will not be repeated here.
[0225] To facilitate understanding of the communication method shown in FIG5 , the following describes how to utilize at least one IO Die in this application to meet the bandwidth requirements of the application with reference to specific examples:
[0226] Example 1: The first physical node and the second physical node are physical nodes in a single IO Die form.
[0227] As shown in Figure 6, the first physical node is physical node #1, and the second physical node is physical node #2. Physical node #1 includes compute instance α, and physical node #2 includes compute instance β. The system administrator creates a communication entity instance EID 5 for compute instance α on the IO Die of physical node #1, and a communication entity instance EID 9 for compute instance β on the IO Die of physical node #2. The network address of physical node #1's IO Die is E, and it includes port 1 (port 1) and port 2. The network address of port 1 is A, and the network address of port 2 is B. The network address of physical node #2's IO Die is F, and it includes port 1 and port 2. The network address of port 1 is C, and the network address of port 2 is D. Physical node #1 acts as a transmitter, and physical node #2 acts as a receiver. One or more ports of physical node #1 and physical node #2 are connected to one or more switching planes. Each switching plane can be composed of one or more switches. The transmitter can reach the receiver's IO Die through any switching plane.
[0228] The system administrator generates a destination table entry pointing to EID 9 for the IO Die of physical node #1 and generates a default routing table entry.
[0229] As shown in Table 1 and Table 2 below:
[0230] Table 1: Purpose table
[0231] Table 2: Routing table
[0232] The system administrator creates a page table β for the computing instance β on physical node #2 and generates a page table entry pointing to EID 9 for the IO Die of physical node #2, as shown in Table 3 below:
[0233] Table 3: Page table entries
[0234] The system administrator generates routing table entries for the switches in the switching plane, pointing to network addresses A, B, C, D, E, and F. For example, as shown in Figure 7, one or more ports of physical node #1 and physical node #2 are connected to a switching plane #1. The system administrator generates routing table entries for the switches in switching plane #1, pointing to network addresses A, B, C, D, E, and F. Alternatively, when one or more ports of physical node #1 and physical node #2 are connected to multiple switching planes, the sender can reach the receiver IO Die through any switching plane. The system administrator generates routing table entries for the switches in each switching plane, pointing to the corresponding network addresses. This is not further explained here.
[0235] For example, taking the case where communication entity instance EID 5 initiates a memory read / write operation to communication entity instance EID 9, after the IO Die of physical node #1 receives the operation instruction information (if it is a DMA operation, the operation instruction information includes but is not limited to the destination communication object identifier, operation code, IO memory address, and length; if it is a load / store operation, the operation instruction information includes the operation code, HPA memory address, and length, and the IO Die first searches the decoding table to find the destination communication object identifier and IO memory address according to the HPA), it uses the destination communication entity instance identifier EID 9 to search the destination table and obtain the destination network address F. The IO Die of physical node #1 uses the network address F to search the routing table and hits the default routing entry, obtaining the output port list port 1 and port 2.
[0236] Furthermore, the IO Die of physical node #1 performs slicing processing according to the operation instruction information to generate at least one slice, and sends different slices from the selected port 1 or 2 according to the load balancing strategy. A message is generated for each slice and sent to the link. The destination network address of the message carries F, and the source network address of the message carries the network address A or B corresponding to the sending port.
[0237] For example, the message format is shown in Table 4:
[0238] After receiving the message, the switch searches the routing table based on the destination network address carried in the message and forwards it to the IO Die of physical node #2. After receiving the message, the IO Die of physical node #2 obtains the destination communication entity instance identifier (EID 9) contained in the message. Based on EID 9, it searches the page table entry and obtains the memory address corresponding to page table β. It then searches page table β to obtain the physical address of the memory space to be accessed and uses the physical address to initiate a memory read or write operation.
[0239] Optionally, in the scenario shown in Figure 6, if the communication entity instance EID 9 is migrated from physical node #2 to physical node #3, and the network address of the IO Die of physical node #3 is J, the system administrator needs to refresh the destination table entry in physical node #1 and update the dstNA of EID 9 to the IO Die network address J of physical node #3.
[0240] In addition, it should be noted that Figure 6 shows that one or more ports of physical node #1 and physical node #2 are connected to one or more switching planes, and the sender can reach the receiver IO Die through any switching plane. If one or more ports of physical node #1 and physical node #2 are connected to multiple switching planes, but the sender cannot reach the receiver IO Die through one (or more) switching planes, as shown in Figure 7, the sender cannot reach the receiver IO Die through switching plane #1.
[0241] In the scenario shown in Figure 7, the difference from the scenario shown in Figure 6 is that the IO Die of physical node #1 needs to support more routing table entries. Using network address F to query the routing table to hit the corresponding routing entry, there are more possibilities to obtain the output port. As shown in Table 5 below:
[0242] Table 5: Routing table
[0243] Example 2: The first physical node and the second physical node are physical nodes in a multi-IO Die form.
[0244] As shown in Figure 8 , the first physical node is physical node #1, and the second physical node is physical node #2. Physical node #1 includes compute instance α, and physical node #1 includes compute instance β. The system administrator creates a communication entity instance EID 5 for compute instance α on IO Die #1 of physical node #1, and also creates a communication entity instance EID 5 for compute instance α on IO Die #2 of physical node #1. A communication entity instance EID 9 is created for compute instance β on IO Die #1 of physical node #2, and also creates a communication entity instance EID 9 for compute instance β on IO Die #2 of physical node #2.
[0245] Specifically, the communication entity instance EID 5 located on IO Die#1 of physical node #1 and the communication entity instance EID 5 on IO Die#2 of physical node #1 are aggregated into a virtual communication entity instance EID 5 and presented to the computing instance α for use; the communication entity instance EID 9 located on IO Die#1 of physical node #2 and the communication entity instance EID 9 on IO Die#2 of physical node #2 are aggregated into a virtual communication entity instance EID 9 and presented to the computing instance β for use.
[0246] It should be noted that when physical node #1 aggregates multiple communication entity instances EID 5 located on at least two IO Dies into a virtual communication entity instance EID 5, it needs to use an additional scheduling (scheduler) module to implement it. As shown in Figure 9, the scheduler module is responsible for splitting a memory read and write operation instruction into multiple operation instructions (for example, splitting the read and write operations on a continuous address space into multiple read and write operations on a smaller continuous address space), and distributing the split multiple operation instructions to different IO Dies for execution.
[0247] The above-mentioned Scheduler module can be a functional module integrated in a certain IO Die, or a functional module independent of multiple IO Dies.
[0248] The network addresses of IO Die #1 and IO Die #2 of physical node #1 are X. IO Die #1 of physical node #1 includes port 1 (port 1) and port 2, with the network address of port 1 being A and the network address of port 2 being B. IO Die #2 of physical node #1 includes port 1 (port 1) and port 2, with the network address of port 1 being C and the network address of port 2 being D. The network addresses of IO Die #1 and IO Die #2 of physical node #2 are Y. IO Die #1 of physical node #2 includes port 1 and port 2, with the network address of port 1 being E and the network address of port 2 being F. IO Die #2 of physical node #2 includes port 1 and port 2, with the network address of port 1 being G and the network address of port 2 being H. Physical node #1 acts as a transmitter and physical node #2 acts as a receiver. One or more ports of physical node #1 and physical node #2 are connected to one or more switching planes. Each switching plane can be composed of one or more switches. The transmitter can reach the receiver's IO Die through any switching plane.
[0249] Furthermore, the system administrator creates a destination table entry for IO Die #1 of physical node #1 pointing to EID 9 and a default routing table entry. Additionally, the system administrator creates a destination table entry for IO Die #2 of physical node #1 pointing to EID 9 and a default routing table entry, as shown in Tables 1 and 2 above.
[0250] The system administrator creates a page table β for the computing instance β on physical node #2, and generates a page table entry pointing to EID 9 for IO Die #1 and IO Die #2 of physical node #2, as shown in Table 3 above.
[0251] The system administrator generates routing table entries pointing to network addresses D, E, X, and Y for the switches in switching plane 1, routing table entries pointing to network addresses C, F, X, and Y for the switches in switching plane 2, routing table entries pointing to network addresses B, G, X, and Y for the switches in switching plane 3, and routing table entries pointing to network addresses A, H, X, and Y for the switches in switching plane 4.
[0252] For example, taking the example of communication entity instance EID 5 initiating a memory read and write operation to communication entity instance EID 9, after IO Die #1 and IO Die #2 of physical node #1 receive the operation instruction information (if it is a DMA operation, the operation instruction information includes but is not limited to the destination communication object identifier, operation code, IO memory address, and length; if it is a load / store operation, the operation instruction information includes the operation code, HPA memory address, and length, and the IO Die first searches the decoding table to find the destination communication object identifier and IO memory address according to the HPA), they use the destination communication entity instance identifier EID 9 to search the destination table and obtain the destination network address Y.
[0253] IO Die #1 of physical node #1 uses network address Y to query the routing table and hits the default route entry, obtaining the outbound port list of ports 1 and 2. IO Die #1 of physical node #1 slices the data according to the operation instruction information, generating at least one slice. Based on the load balancing strategy, different slices are sent from the selected port 1 or 2. A corresponding message is generated for each slice and sent to the link. The destination network address of the message carries Y, and the source network address of the message carries A or B corresponding to the sending port.
[0254] IO Die #2 of physical node #1 performs slicing processing based on the operation instruction information, generating at least one slice. Different slices are sent from the selected port 1 or 2 according to the load balancing strategy. A message is generated for each slice and sent to the link. The destination network address of the message carries Y, and the source network address of the message carries C or D corresponding to the sending port.
[0255] The switch forwards the message by searching its routing table based on the destination network address carried in the message, routing it to IO Die #1 or IO Die #2 of physical node #2. After receiving the message, IO Die #1 or IO Die #2 of physical node #2 obtains the destination communication entity instance identifier (EID 9) contained in the message. Based on EID 9, it searches the page table entry to obtain the memory address corresponding to page table β. It then searches page table β to obtain the physical address of the memory space to be accessed, and uses the physical address to initiate a memory read or write operation.
[0256] Optionally, in the scenario shown in Figure 8, if the communication entity instance EID 9 is migrated from physical node #2 to physical node #3, and the network address of the IO Die of the physical node #3 is Z, the system administrator needs to refresh the destination table entry in the physical node #1 and update the dstNA of EID 9 to the IO Die network address Z of the physical node #3.
[0257] In addition, it should be noted that Figure 8 shows that one or more ports of physical node #1 and physical node #2 are connected to one or more switching planes, and the sender can reach the receiver IO Die through any switching plane. If one or more ports of physical node #1 and physical node #2 are connected to multiple switching planes, but the sender cannot reach the receiver IO Die through one (or more) switching planes, as shown in Figure 10, the sender cannot reach the receiver IO Die through switching plane #2 and switching plane #4.
[0258] The scenario shown in Figure 10 differs from the scenario shown in Figure 7 in that IO Die #1 and IO Die #2 of physical node #1 need to support more routing table entries. Using network address F to query the routing table and find the corresponding routing entry increases the possibility of obtaining an egress port, as shown in Table 5.
[0259] Example 3: The first physical node and the second physical node are physical nodes in a single IO Die form.
[0260] As shown in Figure 6, the first physical node is physical node #1, and the second physical node is physical node #2. Physical node #1 includes compute instance α, and physical node #2 includes compute instance β. The system administrator creates a communication entity instance EID 5 for compute instance α on the IO Die of physical node #1, and a communication entity instance EID 9 for compute instance β on the IO Die of physical node #2. The network address of the IO Die of physical node #1 is E, and the IO Die of physical node #1 includes port 1 (port 1) and port 2 (port 1 has a network address A, and port 2 has a network address B). The network address of the IO Die of physical node #2 is F, and the IO Die of physical node #2 includes port 1 (port 1) and port 2 (port 1 has a network address C, and port 2 has a network address D). Physical node #1 acts as a transmitter, and physical node #2 acts as a receiver. One or more ports of physical node #1 and physical node #2 are connected to one or more switching planes. Each switching plane can be composed of one or more switches. The transmitter can reach the receiver's IO Die through any switching plane.
[0261] The system administrator generates a destination table entry for the IO Die of physical node #1 pointing to EID 9, and generates two routing table entries with destinations of network addresses C and D, as shown in Table 1b and Table 2b below:
[0262] Table 1b: Purpose table
[0263] Table 2b: Routing Table
[0264] The system administrator creates a page table β for the computing instance β on physical node #2, and generates a page table entry pointing to EID 9 for the IO Die of physical node #2, as shown in Table 3 above.
[0265] The system administrator generates routing table entries pointing to network addresses B and C for the switches in switching plane 1, and generates routing table entries pointing to network addresses A and D for the switches in switching plane 2.
[0266] For example, taking the communication entity instance EID 5 initiating a memory read and write operation to the communication entity instance EID 9 as an example, after the IO Die of physical node #1 receives the operation instruction information (if it is a DMA operation, the operation instruction information includes but is not limited to the destination communication object identifier, operation code, IO memory address, and length; if it is a load / store operation, the operation instruction information includes the operation code, HPA memory address, length, and the IO Die first searches the decoding table to find the destination communication object identifier and IO memory address according to the HPA), it uses the destination communication entity instance identifier EID 9 to search the destination table and obtains two destination network addresses, namely C and D.
[0267] The IO Die of physical node #1 is sliced according to the operation instruction information to generate at least one slice. The destination network address C or D is assigned to each slice according to the load balancing strategy. The destination network address of the slice is used to query the routing table to obtain the output port / output port list (if it is an output port list, one of the output ports in the list is selected according to the load balancing strategy). The network address of the output port is used as the source network address of the slice. A message is generated for each slice and sent to the link. The destination network address of the message carries D or C, and the source network address of the message carries the network address A or B corresponding to the sending port.
[0268] For example, the message format is shown in Table 4b:
[0269] The switch forwards the message by searching the routing table based on the destination network address carried in the message, routing the message to the IO Die of physical node #2. After receiving the message, the IO Die of physical node #2 uses the destination communication object identifier EID 9 in the message to look up the page table entry, obtains the destination communication entity instance identifier EID 9 in the message, and then searches the page table entry based on EID 9 to obtain the memory address of the corresponding page table β. It then continues to search page table β to obtain the physical address of the memory space to be accessed, and uses the physical address to initiate memory read and write operations.
[0270] Optionally, in the scenario shown in Figure 6, if the communication entity instance EID 9 is migrated from physical node #2 to physical node #3, and the network address of the IO Die port of physical node #3 is E, F, the system administrator needs to refresh the destination table entry in physical node #1, update the dstNA list of EID 9 to the network address E, F of the port of physical node 3, and add the routing table entry corresponding to E, F.
[0271] Example 4: The first physical node and the second physical node are physical nodes in a multi-IO Die form.
[0272] As shown in Figure 8 , the first physical node is physical node #1, and the second physical node is physical node #2. Physical node #1 includes compute instance α, and physical node #1 includes compute instance β. The system administrator creates a communication entity instance EID 5 for compute instance α on IO Die #1 of physical node #1, and also creates a communication entity instance EID 5 for compute instance α on IO Die #2 of physical node #1. A communication entity instance EID 9 is created for compute instance β on IO Die #1 of physical node #2, and also creates a communication entity instance EID 9 for compute instance β on IO Die #2 of physical node #2.
[0273] Specifically, the communication entity instance EID 5 located on IO Die#1 of physical node #1 and the communication entity instance EID 5 on IO Die#2 of physical node #1 are aggregated into a virtual communication entity instance EID 5 and presented to the computing instance α for use; the communication entity instance EID 9 located on IO Die#1 of physical node #2 and the communication entity instance EID 9 on IO Die#2 of physical node #2 are aggregated into a virtual communication entity instance EID 9 and presented to the computing instance β for use.
[0274] It should be noted that when physical node #1 aggregates multiple communication entity instances EID 5 located on at least two IO Dies into a virtual communication entity instance EID 5, it needs to use an additional scheduling (scheduler) module to implement it. As shown in Figure 9, the scheduler module is responsible for splitting a memory read and write operation instruction into multiple operation instructions (for example, splitting the read and write operations on a continuous address space into multiple read and write operations on a smaller continuous address space), and distributing the split multiple operation instructions to different IO Dies for execution.
[0275] The above-mentioned Scheduler module can be a functional module integrated in a certain IO Die, or a functional module independent of multiple IO Dies.
[0276] IO Die #1 of physical node #1 includes port 1 (port 1) and port 2, with the network address of port 1 being A and the network address of port 2 being B. IO Die #2 of physical node #1 includes port 1 (port 1) and port 2, with the network address of port 1 being C and the network address of port 2 being D. IO Die #1 of physical node #2 includes port 1 and port 2, with the network address of port 1 being E and the network address of port 2 being F. IO Die #2 of physical node #2 includes port 1 and port 2, with the network address of port 1 being G and the network address of port 2 being H. Physical node #1 acts as a transmitter and physical node #2 acts as a receiver. One or more ports of physical node #1 and physical node #2 are connected to one or more switching planes. Each switching plane can be composed of one or more switches. The transmitter can reach the receiver's IO Die through any switching plane.
[0277] It should be noted that in Examples 3 and 4, the network address carried in the message is the network address of the port, so in Examples 3 and 4, IO Die does not need to be configured with a network address.
[0278] Furthermore, the system administrator generates a destination table entry for IO Die #1 of physical node #1 pointing to EID 9, and two routing table entries with destinations of network addresses G and H. Furthermore, the system administrator generates a destination table entry for IO Die #2 of physical node #1 pointing to EID 9, and two routing table entries with destinations of network addresses E and F. This is similar to Table 1b and Table 2b above and will not be repeated here.
[0279] The system administrator creates a page table β for the computing instance β on physical node #2, and generates a page table entry pointing to EID 9 for IO Die #1 and IO Die #2 of physical node #2, as shown in Table 3 above.
[0280] The system administrator generates routing table entries pointing to network addresses D and E for the switches in switching plane 1, routing table entries pointing to network addresses C and F for the switches in switching plane 2, routing table entries pointing to network addresses B and G for the switches in switching plane 3, and routing table entries pointing to network addresses A and H for the switches in switching plane 4.
[0281] For example, taking the communication entity instance EID 5 initiating a memory read and write operation to the communication entity instance EID 9 as an example, after the IO Die #1 and IO Die #2 of the physical node #1 receive the operation instruction information (if it is a DMA operation, the operation instruction information includes but is not limited to the destination communication object identifier, operation code, IO memory address, and length; if it is a load / store operation, the operation instruction information includes the operation code, HPA memory address, length, and the IO Die first searches the decoding table to find the destination communication object identifier and IO memory address according to the HPA), they use the destination communication entity instance identifier EID 9 to search the destination table respectively, and obtain two destination network addresses, namely G and H, E and F.
[0282] IO Die #1 and IO Die #2 of physical node #1 perform slicing processing according to the operation instruction information respectively, generating at least one slice, assigning a destination network address G or H, E or F to each slice according to the load balancing strategy, using the destination network address of the slice to look up the routing table to obtain the output port / output port list (if it is an output port list, select an output port in the list according to the load balancing strategy), using the network address of the output port as the source network address of the slice, and generating a message for each slice and sending it to the link.
[0283] The switch forwards the message by searching its routing table based on the destination network address carried in the message, routing it to IO Die #1 or IO Die #2 of physical node #2. After receiving the message, IO Die #1 or IO Die #2 of physical node #2 obtains the destination communication entity instance identifier (EID 9) contained in the message. Based on EID 9, it searches the page table entry to obtain the memory address corresponding to page table β. It then searches page table β to obtain the physical address of the memory space to be accessed, and uses the physical address to initiate a memory read or write operation.
[0284] Optionally, in the scenario shown in Figure 8, if the communication entity instance EID 9 is migrated from physical node #2 to physical node #3, and the network address of the IO Die port of physical node #3 is I, J, K, L, then the system administrator needs to refresh the destination table entry in physical node #1, update the dstNA list of EID 9 to the network address I, J, K, L of the port of physical node 3, and add the routing table entry corresponding to I, J, K, L.
[0285] It should be understood that the specific example shown in FIG5 of the embodiment of the present application is only to help those skilled in the art better understand the embodiment of the present application, and does not limit the scope of the embodiment 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 embodiment of the present application.
[0286] 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.
[0287] 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.
[0288] The computing device provided in the embodiments 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.
[0289] In an embodiment of the present application, the first physical node or the second physical node can be divided into functional modules according to the above method example. For example, each functional module can be divided corresponding to each function, or two or more functions can be integrated into one processing module. The above-mentioned 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 functional division. There may be other division methods in actual implementation. The following is an example of dividing each functional module corresponding to each function.
[0290] FIG11 shows a schematic structural diagram of a computing device 1000 provided in an embodiment of the present application.
[0291] In one example, the computing device 1100 may be applied to the first physical node, and the computing device 1100 may be used to execute the above communication method, for example, to execute the method shown in FIG5 . Specifically, the computing device 1100 may include a transceiver unit 1110 and a processing unit 1120 .
[0292] The transceiver unit 1010 is configured to receive a first operation instruction, the first operation instruction being used to instruct access to the memory of a second computing instance in a second physical node, the second physical node including a second processing unit and a second IO Die, the second processing unit being used to create a second computing instance, the second IO Die being used to create a second communication entity instance for the second computing instance, wherein the identifier of the first communication entity instance is a first entity identifier (EID), the first IO Die including at least one first port, the at least one first port corresponding to at least one first network address, the identifier of the second communication entity instance being a second EID, the second IO Die including at least one second port, the at least one second port corresponding to at least one second network address, the second IO Die corresponding to a third network address, the first IO Die corresponding to a fourth network address, the at least one first port and the at least one second port being connected to at least one switching plane. The processing unit 1120 is configured to generate at least one first message according to the first operation instruction, the at least one first message being sent to the second physical node via the at least one switching plane, the first EID, the at least one first network address, the second EID, the at least one second network address, the third network address, and the fourth network address being used to determine a transmission path for the at least one first message.
[0293] As an example, in conjunction with FIG5 , the transceiver unit 1010 may be configured to execute S510 and S520 , and the processing unit 1020 may be configured to execute S510 and S520 .
[0294] 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.
[0295] In another example, the computing device 1100 may be applied to the second physical node, and the computing device 1100 may be used to execute the above-mentioned communication method, for example, to execute the method shown in FIG5 .
[0296] The transceiver unit 1010 is configured to receive at least one first message from a first physical node, the at least one first message being used to access the memory of the second computing instance. The first physical node includes a first processing unit and a first input / output die (IO Die). The first processing unit is configured to create a first computing instance, and the first IO Die is configured to create a first communication entity instance for the first computing instance. The first communication entity instance is identified by a first entity identifier (EID). The first IO Die includes at least one first port, each of which corresponds to at least one first network address. The second communication entity instance is identified by a second EID. The second IO Die includes at least one second port, each of which corresponds to at least one second network address. The second IO Die corresponds to a third network address, and the first IO Die corresponds to a fourth network address. The at least one first port and the at least one second port are connected to at least one switching plane. The processing unit 1120 is configured to access the memory of the second computing instance in response to the at least one first message. One or more of the first EID, the at least one first network address, the second EID, the at least one second network address, the third network address, and the fourth network address are used to determine a transmission path for the at least one first message.
[0297] As an example, in conjunction with FIG5 , the transceiver unit 1010 may be configured to execute S530 .
[0298] 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.
[0299] 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).
[0300] 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).
[0301] 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 computing device can execute 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.
[0302] Another embodiment of the present application further provides a computer-readable storage medium having instructions stored therein. When the instructions are executed on a computing device, the computing device executes the steps performed by the computing device in the method flow shown in the above method embodiment. In some embodiments, the disclosed method may 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.
[0303] 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.
[0304] 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. 5 . Thus, for example, one or more features of S510-S540 in FIG. 5 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.
[0305] 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.
[0306] 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.
[0307] 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.
[0308] 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 .
[0309] 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.
[0310] 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.
[0311] 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.
[0312] 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.
[0313] 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.
[0314] 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.
[0315] 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, Applied to a first physical node, the first physical node includes a first processing unit and a first input / output die (IO Die). The first processing unit is used to create a first computing instance, and the first IO Die is used to create a first communication entity instance for the first computing instance. The method includes: The first IO Die receives a first operation instruction for indicating accessing the memory of a second computing instance in a second physical node. The second physical node includes a second processing unit and a second IO Die. The second processing unit is used to create a second computing instance, and the second IO Die is used to create a second communication entity instance for the second computing instance. Wherein, the identifier of the first communication entity instance is a first entity identifier (EID). The first IO Die includes at least one first port, and the at least one first port corresponds to at least one first network address respectively. The identifier of the second communication entity instance is a second EID. The second IO Die includes at least one second port, and the at least one second port corresponds to at least one second network address respectively. The second IO Die corresponds to a third network address, and the first IO Die corresponds to a fourth network address. The at least one first port and the at least one second port are connected to at least one switching plane. The first IO Die generates at least one first message according to the first operation instruction. The at least one first message is sent to the second physical node via the at least one switching plane. The first EID, the at least one first network address, the second EID, the at least one second network address, the third network address, and the fourth network address are used to determine the transmission path of the at least one first message.
2. The method according to claim 1, wherein The first physical node further includes a third IO Die corresponding to the fourth network address. The third IO Die is used to create a third communication entity instance for the first computing instance, and the identifier of the third communication entity instance is the first EID. The third IO Die includes at least one third port, and the at least one third port corresponds to at least one fifth network address respectively. The method further includes: The third IO Die receives a second operation instruction for indicating accessing the memory of the second computing instance. The third IO Die generates at least one second message according to the second operation instruction. The at least one third port is connected to the at least one switching plane. The at least one second message is sent to the second physical node through the at least one switching plane. The first EID, the at least one first network address, the second EID, the at least one second network address, the at least one fifth network address, the third network address, and the fourth network address are used to determine the transmission paths of the at least one second message and the at least one first message.
3. The method according to claim 2, wherein The first physical node further includes a scheduling module, and the method further includes: The scheduling module splits the operation instruction into the first operation instruction and the second operation instruction; The scheduling module sends the first operation instruction to the first IO Die, and sends the second operation instruction to the third IO Die.
4. The method according to any one of claims 1 to 3, characterized in that The second physical node further includes a fourth IO Die, the fourth IO Die corresponds to the third network address, the fourth IO Die is used to create a fourth communication entity instance for the second computing instance, the identifier of the fourth communication entity instance is the second EID, the fourth IO Die includes at least one fourth port, the at least one fourth port respectively corresponds to at least one sixth network address, and the at least one fourth port is connected to the at least one switching plane. The first EID, the at least one first network address, the second EID, the at least one second network address, the at least one fifth network address, the at least one sixth network address, the third network address and the fourth network address are used to determine the transmission path of the message.
5. The method according to claim 2, wherein The first IO Die is configured with a destination table and a first routing table. The destination table includes a first destination table entry, and the first destination table entry includes the second EID and the third network address corresponding to the second EID. The first routing table includes a first default routing table entry, and the first default routing table entry indicates at least one first port of the first IO Die. The third IO Die is configured with the destination table and a third routing table. The third routing table includes a third default routing table entry, and the third default routing table entry indicates at least one third port of the third IO Die.
6. The method according to claim 5, wherein If the at least one switching plane includes multiple switching planes, and the first physical node cannot transmit a message to the second physical node through the first switching plane among the multiple switching planes, the first routing table further includes a first routing table entry, the first routing table entry includes the third network address and the first port corresponding to the third network address, the third routing table further includes a third routing table entry, and the third routing table entry includes the third network address and the third port corresponding to the third network address. Wherein, the first port corresponding to the third network address is the port among at least one first port of the first IO Die that can be used to transmit a message to the second physical node through the switching planes other than the first switching plane among the multiple switching planes. The third port corresponding to the third network address is the port among at least one third port of the third IO Die that can be used to transmit a message to the second physical node through the switching planes other than the first switching plane among the multiple switching planes.
7. The method according to claim 5 or 6, characterized in that, The identifier of the destination communication entity instance of the first operation instruction is the second EID, and the method further includes: The first IO Die and the third IO Die query the destination table based on the second EID to determine that the destination network address is the third network address; The first IO Die queries the first routing table based on the third network address to determine at least one first port for sending the at least one first packet, and The third IO Die queries the third routing table based on the third network address to determine at least one third port for sending the at least one second packet.
8. The method according to claim 7, wherein The method further includes: The first IO Die determines to transmit the at least one first packet from some or all of the at least one first ports according to the load conditions of the at least one first port, and The third IO Die determines to transmit the at least one second packet from some or all of the at least one third ports according to the load conditions of the at least one third port.
9. The method according to any one of claims 5 to 8, characterized in that, In the case where the second computing instance migrates to the third physical node, the first destination table entry is updated to a second destination table entry, and the second destination table entry includes the second EID and the seventh network address corresponding to the second EID, and the seventh network address is the network address assigned to the IO Die on the third physical node.
10. The method according to claim 4, wherein The first IO Die is configured with a destination table and a first routing table. The destination table includes a first destination table entry, and the first destination table entry includes the second EID and at least one second network address and / or the at least one sixth network address corresponding to the second EID. The first routing table includes at least one second routing table entry, and the at least one second routing table entry corresponds to at least one second port of the second IO Die and / or at least one fourth port of the fourth IO Die respectively. Each second routing table entry includes the second network address of the corresponding second port and / or the sixth network address of the fourth port and the identifier of one or more first ports among the at least one first port; The third IO Die is configured with the destination table and a third routing table. The third routing table includes at least one fourth routing table entry, and the at least one fourth routing table entry corresponds to at least one second port of the second IO Die and / or at least one fourth port of the fourth IO Die respectively. Each fourth routing table entry includes the second network address of the corresponding second port and / or the sixth network address of the fourth port and the identifier of one or more third ports among the at least one third port.
11. The method according to claim 10, wherein The identifiers of the destination communication entity instances of the first operation instruction and the second operation instruction are the second EID. The method further includes: The first IO Die and the third IO Die query the destination table based on the second EID to determine that the destination network address is the second network address of at least one second port of the second IO Die and / or the sixth network address of at least one fourth port of the fourth IO Die; The first I / O Die queries the first routing table based on the second network address of the at least one second port and / or the sixth network address of the at least one fourth port to determine at least one first port for sending the at least one first packet, and the third I / O Die queries the third routing table based on the second network address of the at least one second port and / or the sixth network address of the at least one fourth port to determine at least one third port for sending the at least one second packet.
12. The method according to claim 11, characterized in that, The method further includes: The first I / O Die and the third I / O Die determine to transmit packets from some or all of the ports of the at least one second port of the second I / O Die and / or the at least one fourth port of the fourth I / O Die according to the quantity of the second network addresses and / or the quantity of the sixth network addresses in the destination table; The first I / O Die determines to transmit the at least one first packet from some or all of the at least one first port according to the load condition of the at least one first port, and the third I / O Die determines to transmit the at least one second packet from some or all of the at least one third port according to the load condition of the at least one third port.
13. The method according to any one of claims 10 to 12, characterized in that, In the case where the second computing instance migrates to the third physical node, the first destination table entry is updated to a second destination table entry, and the second network address and / or the sixth network address of each of the second routing table entry and the fourth routing table entry is updated to the network address assigned to the port of the I / O Die of the third physical node. The second destination table entry includes the second EID and the eighth network address corresponding to the second EID, and the eighth network address is the network address assigned to the port of the I / O Die on the third physical node.
14. A communication method, characterized in that, Applied to a second physical node, the second physical node includes a second processing unit and a second input / output die (I / O Die). The second processing unit is used to create a second computing instance, and the second I / O Die is used to create a second communication entity instance for the second computing instance. The method includes: The second I / O Die receives at least one first packet from the first physical node. The at least one first packet is used to access the memory of the second computing instance. The first physical node includes a first processing unit and a first input / output die (I / O Die). The first processing unit is used to create a first computing instance, and the first I / O Die is used to create a first communication entity instance for the first computing instance. Among them, the identifier of the first communication entity instance is the first entity identifier EID. The first IO Die includes at least one first port, and each of the at least one first ports corresponds to at least one first network address. The identifier of the second communication entity instance is the second EID. The second IO Die includes at least one second port, and each of the at least one second ports corresponds to at least one second network address. The second IO Die corresponds to a third network address, and the first IO Die corresponds to a fourth network address. The at least one first port and the at least one second port are connected to at least one switching plane. The second IO Die responds to the at least one first message and accesses the memory of the second computing instance. One or more of the first EID, the at least one first network address, the second EID, the at least one second network address, the third network address, and the fourth network address are used to determine the transmission path of the at least one first message.
15. The method according to claim 14, characterized in that, The first physical node further includes a third IO Die. The third IO Die corresponds to the fourth network address. The third IO Die is used to create a third communication entity instance for the first computing instance. The identifier of the third communication entity instance is the first EID. The third IO Die includes at least one third port, and each of the at least one third ports corresponds to at least one fifth network address. The method further includes: The second IO Die receives at least one second message from the first physical node. The at least one second message is used to access the memory of the second computing instance. The first EID, the at least one first network address, the second EID, the at least one second network address, the at least one fifth network address, the third network address, and the fourth network address are used to determine the transmission paths of the at least one second message and the at least one first message.
16. The method according to claim 14 or 15, characterized in that, The second physical node further includes a fourth IO Die. The fourth IO Die corresponds to the third network address. The fourth IO Die is used to create a fourth communication entity instance for the second computing instance. The identifier of the fourth communication entity instance is the second EID. The fourth IO Die includes at least one fourth port, and each of the at least one fourth ports corresponds to at least one sixth network address. The at least one fourth port is connected to the at least one switching plane. The first EID, the at least one first network address, the second EID, the at least one second network address, the at least one fifth network address, the at least one sixth network address, the third network address, and the fourth network address are used to determine the transmission path of the message.
17. The method according to claim 16, wherein The second computing instance is configured with a first page table. The second IO Die and the fourth IO Die are configured with page table entries, and the page table entries include a first page table entry item. The first page table entry item includes the second EID and the starting address of the first page table corresponding to the second EID.
18. The method according to claim 17, wherein The identifier of the destination communication entity instance of the at least one first message and the at least one second message is the second EID. The second IO Die and the fourth IO Die respond to the at least one first message and the at least one second message and access the memory of the second computing instance, including: The second IO Die and the fourth IO Die query the page table entry based on the identifier of the destination communication entity instance of the at least one first message and the at least one second message to determine the starting address of the first page table; The second IO Die and the fourth IO Die query the first page table based on the starting address of the first page table to determine the physical address of the accessed memory space, and initiate a memory read or write operation using the physical address.
19. A communication method, characterized in that, Applied to a computing system including a first physical node and a second physical node. The first physical node includes a first processing unit and a first input / output die (IO Die). The first processing unit is used to create a first computing instance, and the first IO Die is used to create a first communication entity instance for the first computing instance. The second physical node includes a second processing unit and a second IO Die. The second processing unit is used to create a second computing instance, and the second IO Die is used to create a second communication entity instance for the second computing instance. The identifier of the first communication entity instance is the first entity identifier (EID). The first IO Die includes at least one first port, and the at least one first port respectively corresponds to at least one first network address. The identifier of the second communication entity instance is the second EID. The second IO Die includes at least one second port, and the at least one second port respectively corresponds to at least one second network address. The second IO Die corresponds to a third network address, and the first IO Die corresponds to a fourth network address. The at least one first port and the at least one second port are connected to at least one switching plane. The method includes: The first IO Die receives a first operation instruction, and the first operation instruction is used to indicate accessing the memory of the second computing instance in the second physical node; The first IO Die generates at least one first message according to the first operation instruction, and the at least one first message is sent to the second physical node via the at least one switching plane. The first EID, the at least one first network address, the second EID, the at least one second network address, the third network address, and the fourth network address are used to determine the transmission path of the at least one first message; The second IO Die receives at least one first message from the first physical node, and the at least one first message is used to access the memory of the second computing instance; The second IO Die accesses the memory of the second computing instance in response to the at least one first message.
20. A computing system, characterized in that, Comprising a first physical node and a second physical node, the first physical node implements the method according to any one of claims 1 to 13, and the second physical node implements the method according to any one of claims 14 to 18.
21. A computing device, characterized in that, Comprising: A processor for reading instructions stored in a memory, and when the processor executes the instructions, causing the computing device to implement the method according to any one of claims 1 to 13; or causing the computing device to implement the method according to any one of claims 14 to 18.
22. A computer program product, characterized in that, The computer program product includes computer program code, and when the computer program code runs on a computer, the method according to any one of claims 1 to 13 is executed; or when the computer program code runs on a computer, the method according to any one of claims 14 to 18 is executed.
23. A computer-readable storage medium, characterized in that, Including a computer program, when it runs on a computer system, causing a processing module in the computer system to execute the method according to any one of claims 1 to 13; or when it runs on a computer system, causing a processing module in the computer system to execute the method according to any one of claims 14 to 18.
Citation Information
Patent Citations
Communication method, computing device and computing system
CN120321285A
Techniques for aggregating hardware routing resources in a multi-packet processor networking system
CN104954270A
Multi-chip structure
CN106469720A
Multipath discovery in switched ethernet networks
US20110032825A1