Write request processing method, IO agent module, Slave agent module and computer system

By introducing the cache consistency protocol into the IO proxy module of the computer system, the IO write requests of the IO module are managed based on the cache line, and the problems of improving the transmission network performance and ensuring data consistency are solved, and efficient IO write request processing is achieved.

CN119557248APending Publication Date: 2025-03-04HYGON INFORMATION TECH CO LTD
View PDF 0 Cites 2 Cited by

Patent Information

Application Number
CN202411615045.X
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-11-13
Publication Date
2025-03-04

AI Technical Summary

Technical Problem

In computer systems, how to improve the performance of the transmission network while ensuring data consistency, especially when processing IO write requests of the IO module, ensure data consistency and improvement of the performance of the transmission network.

Method used

By introducing a cache consistency protocol in the IO proxy module, IO write requests of the IO module are managed based on the cache line. The specific steps include obtaining the IO write request, determining the coverage integrity of the cache line write operation, issuing an exclusive permission request, and after obtaining the permission, issuing a complete write data request to write to the cache line.

Benefits of technology

It realizes that while ensuring data consistency, the transmission network releases the order-keeping requirements for IO write requests by the transmission network, improves the performance and utilization of the transmission network, and improves the throughput of the computer system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119557248A_ABST
    Figure CN119557248A_ABST
Patent Text Reader

Abstract

The embodiment of the invention provides a write request processing method, an IO agent module, a Slave agent module and a computer system. The method applied to the IO agent module comprises the steps that an IO write request of an IO module is obtained; determining the cache line coverage integrity corresponding to the cache line write operation of the IO write request; based on the cache line coverage integrity of the cache line write operation, sending an exclusive permission request of a cache line corresponding to the cache line write operation; when the sending sequence of the IO write requests arrives, if the exclusive authority of the cache line corresponding to the cache line write operation of the IO write requests is acquired, sending a complete write data request corresponding to the cache line write operation based on complete write data corresponding to the cache line; the complete write data request is used for requesting to write complete write data in the cache line, and the complete write data at least comprises write data of write operation of the cache line. According to the embodiment of the invention, the order-preserving requirement of the transmission network can be released under the condition that the data consistency is guaranteed, and the performance of the transmission network is improved.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments of the present application relate to the field of computer technology, and specifically to a write request processing method, an IO proxy module, a Slave proxy module, and a computer system. Background Art

[0002] Master and Slave are a communication mode used in computer systems, that is, the functional module that initiates an access request in the computer system is the Master module, and the functional module that responds to the access request of the Master module is the Slave module, wherein the Master module is connected to the transmission network through the corresponding Master proxy module, and the Slave module is connected to the transmission network through the corresponding Slave proxy module; thus, the Master proxy module can send the access request of the Master module to the transmission network, and then the transmission network sends the access request to the Slave proxy module corresponding to the Slave module, and the Slave proxy module schedules the corresponding Slave module to execute the access request.

[0003] Computer systems need to ensure data consistency, that is, concurrent access requests cannot cause data conflicts or data inconsistencies, so that the data read at any time in the computer system is the latest and accurate. In this context, the IO (input and output) module is a functional module for data input and output in the computer system. The IO module has the need to access slave modules such as memory. Among them, the IO write request is an access request for writing data issued by the IO module. How to provide a processing solution for the IO write request of the IO module to improve the performance of the transmission network of the computer system while ensuring data consistency has become a technical problem that technicians in this field urgently need to solve. Summary of the invention

[0004] In view of this, an embodiment of the present application provides a write request processing method, an IO proxy module, a Slave proxy module and a computer system to improve the performance of a transmission network while ensuring data consistency.

[0005] To achieve the above objectives, the embodiments of the present application provide the following technical solutions.

[0006] In a first aspect, an embodiment of the present application provides a write request processing method, which is applied to an IO proxy module, wherein the IO proxy module manages IO write requests of a corresponding IO module with cache lines based on a cache consistency protocol; the method comprises:

[0007] Get the IO write request of the IO module;

[0008] Determine cache line coverage integrity corresponding to the cache line write operation of the IO write request;

[0009] Based on the cache line coverage integrity of the cache line write operation, issuing an exclusive permission request for the cache line corresponding to the cache line write operation to at least obtain the exclusive permission for the cache line;

[0010] When the issuance order of the IO write request arrives, if the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained, then based on the complete write data corresponding to the cache line, a complete write data request corresponding to the cache line write operation is issued; the complete write data request is used to request to write the complete write data in the cache line, and the complete write data at least includes the write data of the cache line write operation.

[0011] In a second aspect, an embodiment of the present application provides a write request processing method, which is applied to a Slave proxy module, and the method includes:

[0012] Obtaining an exclusive permission request sent by the IO proxy module, wherein the exclusive permission request is at least used to request an exclusive permission for a cache line, and the exclusive permission request corresponds to a cache line coverage integrity of a cache line write operation corresponding to the cache line;

[0013] Feedback to the IO proxy module exclusive permission response information corresponding to the exclusive permission request;

[0014] Obtaining a complete write data request corresponding to the cache line write operation sent by an IO proxy module, wherein the complete write data request is used to request writing complete write data corresponding to the cache line into the cache line, and the complete write data at least includes write data of the cache line write operation;

[0015] The corresponding Slave module is scheduled to execute the complete write data request, and the response information of the complete write data request is fed back to the IO agent module.

[0016] In a third aspect, an embodiment of the present application provides an IO proxy module, wherein the IO proxy module connects a corresponding IO module to a transmission network of a computer system, and a protocol layer of the IO proxy module is provided with a cache consistency protocol, so as to manage an IO write request of the corresponding IO module with a cache line based on the cache consistency protocol; wherein the IO proxy module is used to:

[0017] Get the IO write request of the IO module;

[0018] Determine cache line coverage integrity corresponding to the cache line write operation of the IO write request;

[0019] Based on the cache line coverage integrity of the cache line write operation, issuing an exclusive permission request for the cache line corresponding to the cache line write operation to at least obtain the exclusive permission for the cache line;

[0020] When the issuance order of the IO write request arrives, if the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained, then based on the complete write data corresponding to the cache line, a complete write data request corresponding to the cache line write operation is issued; the complete write data request is used to request to write the complete write data in the cache line, and the complete write data at least includes the write data of the cache line write operation.

[0021] In a fourth aspect, an embodiment of the present application provides a Slave proxy module, wherein the Slave proxy module connects a corresponding Slave module to a transmission network of a computer system to manage access requests to the Slave module; wherein the Slave proxy module is used to:

[0022] Obtaining an exclusive permission request sent by the IO proxy module, wherein the exclusive permission request is at least used to request an exclusive permission for a cache line, and the exclusive permission request corresponds to a cache line coverage integrity of a cache line write operation corresponding to the cache line;

[0023] Feedback to the IO proxy module exclusive permission response information corresponding to the exclusive permission request;

[0024] Obtaining a complete write data request corresponding to the cache line write operation sent by an IO proxy module, wherein the complete write data request is used to request writing complete write data corresponding to the cache line into the cache line, and the complete write data at least includes write data of the cache line write operation;

[0025] The corresponding Slave module is scheduled to execute the complete write data request, and the response information of the complete write data request is fed back to the IO agent module.

[0026] In a fifth aspect, an embodiment of the present application provides a computer system comprising multiple functional modules, wherein the functional module that initiates an access request among the multiple functional modules is a Master module, and the functional module that responds to the access request is a Slave module; the Master module comprises an IO module, and the IO module is connected to a transmission network of the computer system through a corresponding IO proxy module; the Slave module is connected to the transmission network through a corresponding Slave proxy module; wherein the IO proxy module is the IO proxy module as described in the third aspect above, and the Slave proxy module is the Slave proxy module as described in the fourth aspect above.

[0027] In the write request processing method provided in the embodiment of the present application, the IO proxy module manages the IO write request of the corresponding IO module with the cache line based on the cache consistency protocol. When the IO proxy module obtains the IO write request of the IO module, the IO proxy module can determine the cache line coverage integrity corresponding to the cache line write operation of the IO write request, and based on the cache line coverage integrity of the cache line write operation, issue an exclusive permission request for the cache line corresponding to the cache line write operation to at least obtain the exclusive permission of the cache line, thereby ensuring that before the IO proxy module performs the write operation on the cache line corresponding to the cache line write operation, all accesses to the cache line by other Master proxy modules will be through the cache line corresponding to the cache line. The query request is fed back to the IO proxy module, and then the IO proxy module can respond to the query request based on the data consistency requirement to ensure that the data access to the cache line by other Master proxy modules is up-to-date and accurate, thereby ensuring data consistency; further, when the order of issuing IO write requests arrives, if the IO proxy module confirms that the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained, then a complete write data request corresponding to the cache line write operation can be issued based on the complete write data corresponding to the cache line to request that the complete write data be written in the cache line, and the complete write data at least includes the write data of the cache line write operation, so as to realize the issuance of the IO write request.

[0028] In the above process, the IO proxy module based on the cache consistency protocol can transfer the order control point (i.e., the order preservation point) of the IO write request to the IO proxy module by obtaining the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request. Therefore, the embodiment of the present application can release the order preservation requirements of the computer system's transmission network for the access request of the IO module, so that the computer system can adapt to the transmission network of any transmission mechanism, reduce the design restrictions of the transmission network, and thus improve the performance of the transmission network, such as improving the utilization rate of the transmission network and the throughput of the computer system. Therefore, the embodiment of the present application can release the order preservation requirements of the computer system's transmission network for IO write requests while ensuring the data consistency of the computer system, thereby improving the performance of the transmission network. BRIEF DESCRIPTION OF THE DRAWINGS

[0029] In order to more clearly illustrate the embodiments of the present application or the technical solutions in the prior art, the drawings required for use in the embodiments or the description of the prior art will be briefly introduced below. Obviously, the drawings described below are only embodiments of the present application. For ordinary technicians in this field, other drawings can be obtained based on the provided drawings without paying any creative work.

[0030] Figure 1 A diagram showing an example of the architecture of a computer system.

[0031] Figure 2The following is an example of performing continuous write operations on the same Slave module.

[0032] Figure 3A This is an example diagram of continuous write operations on different Slave modules.

[0033] Figure 3B This is another example diagram of performing continuous write operations on different Slave modules.

[0034] Figure 4 A flowchart of a write request processing method provided in an embodiment of the present application.

[0035] Figure 5 This is an example diagram of a write request processing method provided in an embodiment of the present application.

[0036] Fig. 6A Another example diagram of the write request processing method provided in an embodiment of the present application.

[0037] Figure 6B Another example diagram of the write request processing method provided in an embodiment of the present application.

[0038] Figure 7 Another example diagram of the write request processing method provided in an embodiment of the present application.

[0039] Figure 8 Yet another example diagram of the write request processing method provided in an embodiment of the present application.

[0040] Fig. 9 Still another example diagram of the write request processing method provided in an embodiment of the present application.

[0041] Fig.10 Another example diagram of the write request processing method provided in an embodiment of the present application. DETAILED DESCRIPTION

[0042] The following will be combined with the drawings in the embodiments of the present application to clearly and completely describe the technical solutions in the embodiments of the present application. Obviously, the described embodiments are only part of the embodiments of the present application, not all of the embodiments. Based on the embodiments in the present application, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of this application.

[0043] A computer system can be provided with a variety of different types of functional modules, such as a core complex, an IO module, and memory, etc. These functional modules have data access requirements, wherein the functional module that initiates the access request is the Master module, and the functional module that responds to the access request is the Slave module. There can be multiple Master modules and multiple Slave modules in a computer system, each Master module is connected to the transmission network through a corresponding Master agent module, and the Master agent module is responsible for managing the access request of the corresponding Master module; each Slave module is connected to the transmission network through a corresponding Slave agent module, and the Slave agent module is responsible for managing the access request from the transmission network and scheduling the corresponding Slave module to execute the access request; that is, in a computer system, the path of the access request is: the Master agent module sends the access request of the corresponding Master module to the transmission network, the transmission network sends the access request from the Master agent module to the Slave agent module, and the Slave agent module schedules the corresponding Slave module to execute the access request; wherein the transmission network is, for example, a bus network of a computer system such as a Data Fabric (data interconnect) bus and an on-chip interconnect bus.

[0044] Computer systems can be designed based on multi-core architecture, heterogeneous architecture, system-on-chip architecture, etc. For ease of understanding, take the multi-core architecture of a computer system as an example. Figure 1 The following is an exemplary diagram showing an architecture of a computer system: Figure 1 As shown, the computer system may include:

[0045] Multiple core clusters 110, where a core cluster is a functional module including multiple computing cores, used to process computing tasks and instruction operations; for example, a computing core may be a processor core, and a core cluster may include multiple processor cores;

[0046] A plurality of core agent modules 111, wherein each core cluster has a corresponding core agent module, and the core cluster is connected to the transmission network through the corresponding core agent module, so as to interact with other functional modules in the computer system;

[0047] Multiple IO modules 120, where the IO module is a functional module for data input and output of the computer system, such as a PCIE (Peripheral Component Interconnect Express) module or other peripheral modules of the computer system;

[0048] Multiple IO agent modules 121, wherein each IO module has a corresponding IO agent module, and the IO module is connected to the transmission network through the corresponding IO agent module, so as to interact with other functional modules in the computer system;

[0049] A plurality of memories 130, the memory is responsible for storing data for the core cluster and the IO module to read and write data, and the memory is, for example, a DDR (Double Data Rate) memory, etc.;

[0050] Multiple memory proxy modules 131, wherein each memory has a corresponding memory proxy module, and the memory is connected to the transmission network through the corresponding memory proxy module, so as to interact with other functional modules in the computer system.

[0051] The architecture of the above computer system involves the interaction between the core cluster and the memory, the interaction between the IO module and the memory, etc.;

[0052] For example, for the interaction between the core cluster and the memory, the core cluster initiates an access request to the memory (such as a read request or a write request), the core agent module corresponding to the core cluster sends the access request to the transmission network (such as a Data Fabric bus), the transmission network sends the access request to the memory agent module corresponding to the accessed memory, and the memory agent module schedules the corresponding memory to execute the access request; in the above process, the Master module can be regarded as the core cluster, the Master agent module can be regarded as the core agent module, the Slave module can be regarded as the memory, and the Slave agent module can be regarded as the memory agent module;

[0053] For example, for the interaction between the IO module and the memory, the IO module initiates an access request to the memory (such as an IO read request and an IO write request), the IO agent module corresponding to the IO module sends the access request to the transmission network (such as a Data Fabric bus), the transmission network passes the access request to the memory agent module corresponding to the accessed memory, and the memory agent module schedules the corresponding memory to execute the access request; in the above process, the Master module can be regarded as an IO module, the Master agent module can be regarded as an IO agent module, the Slave module can be regarded as a memory, and the Slave agent module can be regarded as a memory agent module.

[0054] It can be seen that the functional module that initiates access requests in the computer system is the Master module, including but not limited to the core cluster, IO module, etc.; each Master module is connected to the transmission network through the corresponding Master agent module, and the Master agent module includes but is not limited to the core agent module, IO agent module, etc.; the functional module that responds to access requests in the computer system is the Slave module, including but not limited to memory, etc.; each Slave module is connected to the transmission network through the corresponding Slave agent module, and the Slave agent module includes but is not limited to the memory agent module, etc.

[0055] The computer system needs to maintain data consistency when the Master module concurrently accesses the Slave module, that is, the Master module's concurrent access requests to the Slave module cannot cause data conflicts or inconsistencies, and the data read at any time should be the latest and correct. Specifically, when one or more Master modules access the data of the Slave module at the same time, the computer system needs to ensure that the read and write operations will not cause data conflicts, data overwriting, or reading old data, so that no matter which Master module modifies the data of the Slave module, other Master modules should be able to read the latest and accurate data subsequently.

[0056] The IO module is a functional module for data input and output of the computer system. For the IO write request initiated by the IO module (the write request initiated by the IO module is called the IO write request), it is also necessary to process the IO write request of the IO module while ensuring the data consistency of the computer system. One processing method is to ensure the sequential execution of multiple concurrent IO write requests of the IO module. Specifically, one or more IO modules may concurrently initiate multiple IO write requests to one or more Slave modules (such as memory). At this time, it is necessary to meet the sequential execution of multiple concurrent IO write requests to ensure the data consistency of the computer system.

[0057] From the perspective of the computer system as a whole, the sequential execution of IO write requests is regarded as the global ordering (GO) of IO write requests. The computer system can use a global ordering mechanism to ensure that the early IO write requests are completed first before the subsequent IO write requests can take effect, so as to realize the sequential execution of IO write requests; wherein, the early IO write request is the IO write request initiated first in time, which can also be called the old IO write request; the subsequent IO write request is the IO write request initiated later in time, which can also be called the young IO write request. Specifically, the global ordering mechanism needs to ensure that the old IO write request is executed first, and the young IO write request is visible to other functional modules in the computer system until the old IO write request is completed and synchronized to the computer system. The other functional modules are, for example, other functional modules in the computer system except for the initiation of the young IO write request. For example, if the young IO write request is initiated by a certain IO module, then the other functional modules are other core clusters and corresponding core proxy modules, other IO modules and corresponding IO proxy modules, etc. In other words, the IO write request of the IO module is sent by the IO proxy module to the memory proxy module through the transmission network, and the IO write request from the IO proxy module to the memory proxy module needs to be end-to-end ordered.

[0058] For the global order preservation of IO write requests of IO modules (i.e., the global sequentiality of IO write requests of IO modules), a global order preservation mechanism is to perform order preservation processing of IO write requests in the transmission network of the computer system, wherein the transmission network can be regarded as the transmission layer of the computer system, corresponding to the transmission path from the Master agent module to the Slave agent module.

[0059] To facilitate understanding of the order-preserving processing of IO write requests in the transmission network (transport layer), Figure 2 The following is an example diagram showing a continuous write operation on the same Slave module. Figure 2 The example uses the slave module as the memory and mainly explains the interaction between the IO module, IO proxy module, and memory proxy module. Figure 2 As shown in FIG. 1 , taking 4 consecutive write operations of the IO module on the same memory as an example, the 4 consecutive write operations correspond to 4 consecutive IO write requests, namely IO WriteA1, IOWriteA2, IO WriteA3 and IO WriteA4, wherein IO WriteA1 is an IO write request with a write address of A1, IOWriteA2 is an IO write request with a write address of A2, IO WriteA3 is an IO write request with a write address of A3, and IO WriteA4 is an IO write request with a write address of A4. Figure 2 In the example, write addresses A1, A2, A3, and A4 are located in the same memory;

[0060] The four consecutive IO write requests (IO WriteA1, IO WriteA2, IO WriteA3, and IOWriteA4) initiated by the IO module can be transmitted to the IO proxy module corresponding to the IO module;

[0061] The IO proxy module determines the write data size (Write Size) of each IO write request, that is, the amount of data of each IO write request. For example, the IO proxy module can determine the write data size of IO WriteA1 (expressed as IO WriteSizeA1), the write data size of IOWriteA2 (expressed as IO WriteSizeA2), the write data size of IO WriteA3 (expressed as IOWriteSizeA3), and the write data size of IO WriteA4 (expressed as IO WriteSizeA4);

[0062] Since the transport layer implements the order-preserving processing of IO write requests (e.g., the end-to-end order-preserving corresponding to the IO write requests from the IO proxy module to the memory proxy module), the IO proxy module can directly transmit each IO write request to the transport network (e.g., Data Fabric bus) in order and continuously; for example, the IO proxy module can directly transmit the four IO write requests IO WriteA1, IOWriteA2, IO WriteA3, and IO WriteA4 to the transport network (e.g., Data Fabric bus) in order and continuously;

[0063] Based on the order-preserving processing of the transport layer, the transport network (such as the Data Fabric bus) can enable each IO write request to be transmitted to the memory proxy module in order. For example, the transport network can transmit the four IO write requests, IO WriteA1, IO WriteA2, IOWriteA3, and IO WriteA4, in order to the memory proxy module corresponding to the accessed memory, so that the four IO write requests are delivered to the memory in order and executed in order, thereby ensuring the global order of continuous write operations on the same memory.

[0064] When the memory completes the IO write request, the memory proxy module can feed back TgtRsp (Target Response) information of each IO write request to the IO proxy module through the transmission network to indicate that the memory has completed the execution of the IO write request;

[0065] Based on the TgtRsp information of the IO write request obtained by the IO proxy module, if the IO proxy module obtains the TgtRsp information of a certain IO write request, it can be confirmed that the memory has completed processing the IO write request, and thus the corresponding Rsp (Response) information can be fed back to the IO module; for example, the IO proxy module confirms that the memory has completed executing IO WriteA1, and the RspA1 information can be fed back to the IO module; the IO proxy module confirms that the memory has completed executing IO WriteA2, and the RspA2 information can be fed back to the IO module; the IO proxy module confirms that the memory has completed executing IO WriteA3, and the RspA3 information can be fed back to the IO module; the IO proxy module confirms that the memory has completed executing IO WriteA4, and the RspA4 information can be fed back to the IO module;

[0066] Furthermore, after feeding back Rsp information of any IO write request to the IO module, the IO proxy module may also feed back SrcRsp (Source Response) information to the memory proxy module through the transmission network, indicating that the process of the IO write request has been completed.

[0067] However, there may be limitations in the order-preserving processing of IO write requests of IO modules in the transmission network. For example, although the order-preserving processing of the transmission network can ensure that IO write requests that continuously access the same slave module can be executed in sequence, when faced with continuous IO write requests across multiple slave modules, the transmission network may not be able to guarantee the sequential execution of IO write requests.

[0068] Specifically, the configuration of low-order address interleave will cause continuous write operations to be dispersed to different Slave modules. Taking memory access as an example, low-order address interleave is a memory address interleave configuration method, which disperses continuous memory addresses among multiple memories to improve the parallelism and speed of data access, so that multiple IO write requests for continuous memory addresses will be dispersed to different memories. Under the configuration of low-order address interleave, if the IO module performs continuous write operations on different Slave modules, the order preservation mechanism of the transmission network for IO write requests cannot guarantee the sequential execution of continuous IO write requests initiated by the IO module alone. The reason is that when the transmission network sends IO write requests to the Slave proxy modules corresponding to different Slave modules, the arrival time of the IO write requests may be different due to transmission delays or network congestion. The difference in the arrival time of such IO write requests may cause continuous IO write requests to be executed out of order, thereby destroying the data consistency of the computer system. For example, when the transmission network sends consecutive old IO write requests and young IO write requests to different Slave modules, the young IO write request may arrive at the corresponding Slave proxy module first and be scheduled for execution due to better network conditions, while the old IO write request may arrive at the corresponding Slave proxy module later and be scheduled for execution due to transmission delays or network congestion. The disorder of the order in which IO write requests arrive at different Slave proxy modules will cause the global order to be destroyed, thereby affecting the data consistency of the computer system.

[0069] Based on this, one solution is to introduce a single-shot processing mechanism with Slave as the granularity in the IO proxy module, that is, the IO proxy module uses the Slave module as the granularity, and needs to wait for the previous Slave module to execute all IO write requests before sending the IO write request of the next Slave module to the transmission network; thus, combined with the single-shot processing mechanism with Slave as the granularity of the IO proxy module and the order-preserving processing of IO write requests of the same Slave module by the transmission network, it is ensured that continuous IO write requests across multiple Slave modules can be executed in sequence, thereby maintaining the global sequentiality of IO write requests.

[0070] For ease of understanding, Figure 3A The following is an example diagram showing the continuous write operation on different slave modules. Figure 3A The example uses the slave module as the memory and mainly illustrates the interaction between the IO module, the IO proxy module, and the memory proxy modules corresponding to the multiple memories. The multiple memories involve the first memory and the second memory. The memory proxy module corresponding to the first memory can be Figure 3A The first memory proxy module of the example, the memory proxy module corresponding to the second memory can be Figure 3A The second memory agent module of the example; Figure 3A and Figure 2 Corresponding sections may refer to each other;

[0071] like Figure 3A As shown, based on the configuration of low-order address interleaving, the IO module's four consecutive IO write requests, IO WriteA1, IO WriteA2, IO WriteA3 and IO WriteA4, are directed to the second memory and the first memory, wherein IO WriteA1 and IOWriteA2 are directed to the second memory, and IO WriteA3 and IO WriteA4 are directed to the first memory; Figure 3A In the example, the consecutive write addresses A1, A2, A3 and A4 are scattered in the second memory and the first memory, the write addresses A1 and A2 are located in the second memory, and the write addresses A3 and A4 are located in the first memory;

[0072] The four consecutive IO write requests (IO WriteA1, IO WriteA2, IO WriteA3 and IOWriteA4) initiated by the IO module can be transmitted in sequence to the IO proxy module corresponding to the IO module; the IO proxy module first sends IO WriteA1 and IOWriteA2 to the transmission network (such as Data Fabric bus) in sequence, and the transmission network guarantees the order in which IO WriteA1 and IOWriteA2 arrive at the second memory proxy module, that is, for consecutive IO write requests of the same memory, the transmission network can ensure the sequential execution of the IO write requests;

[0073] For IO WriteA3 and IO WriteA4, the IO proxy module cannot directly send IO WriteA3 and IO WriteA4 to the transmission network. Because if the IO proxy module directly sends IO WriteA3 and IO WriteA4 to the transmission network, due to transmission delay or network congestion of the transmission network, the transmission network cannot guarantee that IO WriteA1 and IOWriteA2 arrive at the second memory proxy module before IO WriteA3 and IO WriteA4 arrive at the first memory proxy module, which may destroy the global sequentiality.

[0074] Therefore, based on the single-shot processing mechanism of the IO proxy module with Slave as the granularity, after sending IOWriteA1 and IO WriteA2, the IO proxy module needs to wait for the TgtRsp information fed back by the second memory proxy module through the transmission network; if the IO proxy module obtains the TgtRsp information of IO WriteA1 fed back by the second memory proxy module, it feeds back the RspA1 information to the IO module; if the IO proxy module obtains the TgtRsp information of IO WriteA2 fed back by the second memory proxy module, it feeds back the RspA2 information to the IO module;

[0075] After the IO proxy module obtains the TgtRsp information of IO WriteA1 and IO WriteA2, the IO proxy module can confirm that the second memory has completed the execution of IO WriteA1 and IO WriteA2, so that based on the single-issue processing mechanism with Slave as the granularity, the Master proxy sends IO WriteA3 and IO WriteA4 to the transmission network (such as Data Fabric bus), and the transmission network guarantees the order in which IO WriteA3 and IO WriteA4 arrive at the first memory proxy module, that is, for continuous IO write requests of the same memory, the transmission network can ensure the sequential execution of IO write requests;

[0076] Furthermore, the IO agent module obtains the TgtRsp information transmitted by the first memory agent module through the transmission network. For example, for the processing of IO WriteA3 and IO WriteA4 by the first memory, the TgtRsp information fed back by the first memory agent module may be, for example, the TgtRsp information of IO WriteA3 and the TgtRsp information of IO WriteA4; further, the IO agent module feeds back the RspA3 information and the RspA4 information to the IO module respectively, to respectively indicate that the processing of IO WriteA3 and IO WriteA4 is completed.

[0077] It can be seen that the order-preserving processing of the transmission network is effective for continuous IO write requests of the same Slave module, but it cannot guarantee the sequential execution of continuous IO write requests across multiple Slave modules. It is necessary to introduce a single-shot processing mechanism with Slave as the granularity in the IO proxy module. Therefore, the order-preserving processing of the transmission network has limitations.

[0078] That is to say, if the IO proxy module does not introduce a single-shot processing mechanism with Slave as the granularity, when the IO proxy module attempts to send multiple consecutive IO write requests to different Slave proxy modules through the transmission network, relying solely on the order-preserving processing of the transmission network may cause sequential errors, resulting in data inconsistency problems in the computer system.

[0079] For ease of understanding, Figure 3A Based on the example, Figure 3B Another example diagram of performing continuous write operations on different Slave modules is shown as an example. Figure 3B This example is given in the case where the IO proxy module does not introduce a single-shot processing mechanism with Slave as the granularity. Figure 3A and Figure 3B As shown, in Figure 3B In the example, the IO proxy module directly transmits the four IO write requests IO WriteA1, IOWriteA2, IO WriteA3, and IO WriteA4 to the transmission network (e.g., Data Fabric bus) in sequence and continuously;

[0080] Since the transmission network may be congested or delayed, the time when IO WriteA1 and IO WriteA2 arrive at the second memory proxy module, and the time when IO WriteA3 and IO WriteA4 arrive at the first memory proxy module may be disordered, resulting in a disorder in the execution order of the actual IO write requests;

[0081] Specific, combined Figure 3B As shown, IO WriteA3 and IO WriteA4 arrive at the first memory proxy module in sequence and are executed by the first memory, so the first memory processes IO WriteA4 and writes new data (i.e., New A4); wherein, as the first memory executes IO WriteA4, the old data (Old A4) is updated to the new data (New A4);

[0082] For IO WriteA1 and IO WriteA2, IO WriteA2 has a transmission delay, and IO WriteA2 arrives at the second memory proxy module later than IO WriteA4 arrives at the first memory proxy module; therefore, when the first memory executes IO WriteA4 and updates Old A4 to New A4, IO WriteA2 may not be executed completely, and may not even reach the second memory proxy module; in this case, if other Master modules and the corresponding Master proxy modules read the Flag data of the write address A4, believe that IO WriteA4 has been successfully completed, and hope to obtain the data written by the preceding IO write request (IOWriteA1 to IO WriteA3) of IO WriteA4, since IO WriteA2 has not been completed, the Master proxy modules corresponding to the other Master modules do not obtain the expected new data of the write address A2 (i.e., New A2) at this time, but the old data of the write address A2 (i.e., Old A2), resulting in an acquisition failure (Fail), that is, the data read in the computer system is not the latest data, and the data consistency of the computer system cannot be met.

[0083] It should be noted that in Figure 3B In the example, New A2 indicates the new data written to address A2. As the second memory executes IO WriteA2, the old data (Old A2) is updated to the new data (New A2). Figure 3B It can be seen from the example that when the Flag data of write address A4 is generated and Old A4 is updated to New A4 (that is, when IO WriteA4 is completed), the second memory has not yet completed IO WriteA2, that is, Old A2 has not yet been updated to New A2, so that during the period from the completion of IO WriteA4 to the completion of IO WriteA2, other Master modules and the corresponding Master proxy modules can read New A4 of write address A4, but the data of write address A2 is still the old data (Old A2), that is, the new data (New A2) written by IOWriteA2 that should have been completed before IO WriteA4 cannot be obtained, resulting in a sequential error and the data consistency of the computer system cannot be met.

[0084] It can be seen that there are limitations in the order-preserving processing of IO write requests of IO modules in the transmission network. The transmission network cannot independently guarantee the sequential execution of continuous IO write requests across multiple Slave modules, and it is necessary to introduce a single-shot processing mechanism with Slave as the granularity in the IO proxy module. At the same time, the order-preserving processing of IO write requests of IO modules in the transmission network will also reduce the flexibility of the transmission network and increase the difficulty of designing the transmission network, resulting in limited performance of the transmission network; specifically, when the order-preserving processing of IO write requests of IO modules is performed in the transmission network, the transmission network can only use the mechanism of sequentially transmitting the IO write requests of IO modules, resulting in a lack of transmission flexibility in the transmission network and limitations in the design of the transmission network.

[0085] Based on this, the embodiments of the present application consider avoiding the order-preserving processing of the transmission network's access requests to the IO module while ensuring the data consistency of the computer system; that is, the solution provided by the embodiments of the present application cancels the order-preserving requirements of the transmission network for access requests to the IO module, thereby freeing up the transmission network of the computer system, allowing the computer system to adapt to the transmission network of any transmission mechanism, reducing the design limitations of the transmission network, and improving the performance of the transmission network.

[0086] As an optional implementation, in order to ensure data consistency of the computer system and improve the performance of the transmission network, the embodiment of the present application considers introducing a cache coherence protocol in the IO proxy module. The IO proxy module can manage the IO write requests of the corresponding IO module with cache lines based on the cache coherence protocol.

[0087] Specifically, the IO proxy module can determine the cache line write operation corresponding to the IO write request initiated by the IO module, and obtain the exclusive permission of the cache line corresponding to the cache line write operation in the Slave module, so that before the IO proxy module issues the IO write request, the access to the cache line by other Master proxy modules will be fed back to the IO proxy module through the query request corresponding to the cache line; thereby, the IO proxy module can respond to the query request based on the data consistency requirement to ensure that before the IO proxy module issues the IO write request, the data access to the cache line by other Master proxy modules is the latest and accurate, thereby ensuring data consistency; further, the IO proxy module can obtain the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request, and when the issuance order of the IO write request arrives, issue a request for the complete write cache line corresponding to the IO write request by completely writing the cache line, thereby realizing the writing of the write data of the IO write request to the Slave module, so as to process the IO write request of the IO module while ensuring data consistency, and release the transmission network of the computer system.

[0088] Based on the above ideas, as an optional implementation, Figure 4 An optional flowchart of a write request processing method provided in an embodiment of the present application is shown as an example. Figure 4 The process mainly illustrates the solution for processing IO write requests of IO modules provided in the embodiment of the present application from the perspective of IO modules, IO proxy modules and Slave proxy modules (such as memory proxy modules). Figure 4 As shown, the process may include the following steps.

[0089] In step S410, the IO module sends an IO write request to the IO proxy module.

[0090] In an optional implementation, the IO module can continuously send multiple IO write requests to the IO proxy module, such as multiple concurrent IO write requests, including but not limited to: multiple concurrent IO write requests for the same Slave module, multiple concurrent IO write requests for different Slave modules (such as multiple IO write requests with consecutive addresses and scattered in different Slave modules), etc.

[0091] In step S411, the IO proxy module obtains the IO write request of the IO module.

[0092] Correspondingly, based on the IO write request sent by the IO module to the IO proxy module, the IO proxy module can obtain the IO write request of the IO module.

[0093] In an optional implementation, the IO proxy module may set a request queue to store the request information of the acquired IO write requests. For example, the IO proxy module may store the acquired request information of the IO write requests in order in the request queue, that is, the IO proxy module stores the request information of the IO write requests in the request queue according to the order in which the IO write requests are acquired from the IO module, so that the storage order of the request information of the IO write requests in the request queue represents the acquisition order of the IO write requests, that is, the order in which the IO proxy module acquires the IO write requests from the IO module. Further, for the IO proxy module, the issuance order of the IO write requests (that is, the issuance order in which the IO proxy module sends the IO write requests to the transmission network) corresponds to the acquisition order of the IO write requests, so that when the request information of the IO write requests is stored in order in the request queue of the IO proxy module according to the acquisition order of the IO write requests, the storage order of the request information of the IO write requests in the request queue is the issuance order of the IO write requests.

[0094] In an optional implementation, the request queue of the IO proxy module may be set in a buffer inside the IO proxy module, so that the IO proxy module may sequentially buffer the request information of the acquired IO write requests through the request queue in the buffer.

[0095] For example, the request information of the IO write request may include but is not limited to the write data (ie, data content), write address (ie, address of the Slave module where the write data is written), write data size (ie, data size of the write data), etc. of the IO write request.

[0096] In step S412, the IO proxy module determines the cache line coverage integrity corresponding to the cache line write operation of the IO write request.

[0097] In an embodiment of the present application, the IO proxy module has a cache coherence protocol processing capability, and can manage the IO write request of the corresponding IO module with a cache line based on the cache coherence protocol. That is to say, for the IO write request from the IO module, the IO proxy module manages it according to the granularity of the cache line, so that when the IO proxy module obtains the IO write request of the IO module (for example, when the IO proxy module stores the request information of the IO write request to the request queue), the IO proxy module can determine the cache line write operation corresponding to the IO write request, for example, the IO proxy module can parse the request information of the IO write request to determine the cache line write operation corresponding to the IO write request.

[0098] Among them, when the IO proxy module manages the IO write request of the IO module with the cache line, the write data operation of the IO write request can be mapped to the corresponding cache line, so as to obtain the cache line write operation corresponding to the IO write request, that is, the write data of the IO write request is allocated to one or more cache lines, and the data is written with the cache line as the basic operation unit, and then the cache line write operation of the IO write request has corresponding write data, that is, the write data of the cache line write operation is: the data content written by the IO write request in the cache line corresponding to the cache line write operation.

[0099] It should be noted that the IO write request of the IO module refers to the request of the IO module to write data to the address range of the Slave module such as the memory (such as the memory address range), and the address range can be indicated by the write address of the IO write request; the cache line write operation is based on the write address and write data size of the IO write request, and the IO write request is mapped to a specific cache line, and the cache line is used as the basic unit of the write operation. Therefore, the relationship between the IO write request and the cache line write operation is: the IO write request triggers the cache line write operation, and the IO write request may be decomposed into one or more cache line write operations, so that the cache line write operation of the IO write request is used to write the write data of the cache line write operation in the cache line corresponding to the cache line write operation, so as to realize the data writing of the IO write request.

[0100] It should be further explained that the cache line can be a fixed-size data block in the cacheable space of a slave module such as a memory, for example, the cache line size of a cache line can be a fixed size such as 64 bytes, which can be determined according to the cache line size configuration, and the embodiments of the present application are not limited thereto. The data in the cacheable space of a slave module such as a memory can be loaded into the system cache of the computer system (such as the L1 cache, L2 cache, L3 cache, etc. of the core cluster).

[0101] Taking the Slave module as an example, the Cacheable space of the memory is a memory area in the memory that can be used for cache management. The data in this memory area is allowed to be loaded into the processor caches such as the L1 cache, L2 cache, and L3 cache to speed up data access efficiency. Furthermore, in the case where the IO proxy module manages the IO write request of the corresponding IO module with cache lines, the IO proxy module can write the write data of the cache line write operation in the Cacheable space of the Slave module such as the memory through the cache line write operation corresponding to the IO write request, thereby realizing the writing of the write data of the IO write request into the Slave module such as the memory.

[0102] When the IO proxy module determines the cache line write operation corresponding to the IO write request, it needs to determine the cache line coverage integrity of the cache line write operation. The cache line coverage integrity of the cache line write operation refers to the coverage degree of the write data of the cache line write operation in the corresponding cache line. Based on whether the write data of the cache line write operation completely covers the corresponding cache line, the cache line coverage integrity of the cache line write operation is divided into: complete coverage (i.e., complete coverage of the cache line) and partial coverage (i.e., partial coverage of the cache line).

[0103] Among them, complete coverage means that the write data size corresponding to the write data of the cache line write operation is equal to the cache line size, so that the write data of the cache line write operation completely covers all bytes of the corresponding cache line, for example, the write data size corresponding to the write data of the cache line write operation is equal to 64 bytes; in this case, the write data of the cache line write operation can be completely written to the corresponding cache line without reading and merging the existing data of the cache line, because the write data of the cache line write operation covers all bytes of the corresponding cache line, and the existing data of the cache line will be overwritten and updated by the write data of the cache line write operation.

[0104] Partial overwrite means that the write data of the cache line write operation is smaller than the cache line size, so that the write data of the cache line write operation fails to overwrite all bytes of the corresponding cache line, and only overwrites part of the bytes of the corresponding cache line. For example, the write data size corresponding to the write data of the cache line write operation is less than 64 bytes. In this case, the write data of the cache line write operation cannot be completely written into the corresponding cache line, and it is necessary to read the existing data of the corresponding cache line first, and merge the write data of the cache line write operation with the existing data corresponding to the bytes that are not covered in the cache line.

[0105] For ease of explanation, the embodiments of the present application refer to cache line write operations with complete coverage (i.e., complete coverage of the cache line) as complete cache line write operations, and cache line write operations with partial coverage (i.e., partial coverage of the cache line) as partial cache line write operations. Thus, the cache line write operations of the embodiments of the present application are divided into two categories: complete cache line write operations and partial cache line write operations.

[0106] For any IO write request obtained by the IO proxy module, the IO write request may have one or more cache line write operations, and the type of cache line write operation of the IO write request may be a complete cache line write operation, or a partial cache line write operation, or a complete cache line write operation and a partial cache line write operation.

[0107] In an optional implementation, the cache line write operation of the IO write request can be determined based on the write address and write data size of the IO write request, that is, for any IO write request obtained by the IO proxy module, the IO proxy module can determine the cache line write operation of the IO write request based on the write address and write data size of the IO write request. Specifically, based on whether the write address of the IO write request is aligned with the cache line boundary, and the relationship between the write data size of the IO write request and the cache line size, there can be multiple different situations for the cache line write operation of the IO write request.

[0108] For example, when the write address of the IO write request is aligned with the cache line boundary, that is, when the write address (such as the start address) of the IO write request is the same as the start address of a cache line, the cache line write operation of the IO write request includes any of the following:

[0109] If the write data size of the IO write request is equal to the cache line size, the IO write request has a complete cache line write operation;

[0110] If the write data size of the IO write request is smaller than the cache line size, the IO write request has a partial cache line write operation;

[0111] If the write data size of the IO write request is larger than the cache line size, and the write data size of the IO write request is an integer multiple of the cache line size, then the IO write request has a number of complete cache line write operations corresponding to the integer multiple;

[0112] If the write data size of the IO write request is larger than the cache line size, and the write data size of the IO write request is not an integer multiple of the cache line size, the IO write request has at least one complete cache line write operation and one partial cache line write operation.

[0113] For example, when the write address of an IO write request is not aligned with a cache line boundary, the IO write request may write one cache line or span multiple cache lines. Accordingly, the type of cache line write operation of the IO write request may be a partial cache line write operation, or two partial cache line write operations, or a partial cache line write operation and at least one complete cache line write operation, or a partial cache line write operation and at least one complete cache line write operation and a partial cache line write operation. The specific situation can be similarly referred to the previous description and will not be expanded here.

[0114] In step S413, the IO proxy module sends an exclusive permission request for the cache line corresponding to the cache line write operation to the Slave proxy module based on the cache line coverage integrity of the cache line write operation, so as to at least obtain the exclusive permission for the cache line.

[0115] For any IO write request obtained by the IO proxy module, after determining the cache line coverage integrity of the cache line write operation of the IO write request, the embodiment of the present application can send an exclusive permission request for the cache line corresponding to the cache line write operation to the Slave proxy module corresponding to the Slave module targeted by the IO write request (such as the memory proxy module corresponding to the memory targeted by the IO write request) based on the cache line coverage integrity of the cache line write operation, so as to at least request to obtain the exclusive permission for the cache line corresponding to the cache line write operation. Specifically, an IO write request may have at least one cache line write operation, and each cache line write operation of the IO write request can issue a corresponding exclusive permission request for the cache line based on the corresponding cache line coverage integrity, so as to at least obtain the exclusive permission for the corresponding cache line; for example, the exclusive permission for the cache line corresponding to each cache line write operation of the IO write request can be obtained through the corresponding exclusive permission request.

[0116] As an optional implementation, the exclusive permission request may indicate the cache line for which the exclusive permission is requested. For example, the exclusive permission request may carry address information of the cache line to identify the location of the cacheable space of the Slave module such as the memory for the cache line for which the exclusive permission is requested.

[0117] In an optional implementation, for any cache line write operation of any IO write request (which may be a cache line write operation of an IO write request, or any cache line write operation of multiple cache line write operations of an IO write request), based on whether the cache line write operation is a complete cache line write operation or a partial cache line write operation, the IO proxy module can issue different exclusive permission requests to adapt to the specific circumstances of the cache line write operation.

[0118] Specifically, in an optional implementation, if the cache line write operation is a complete cache line write operation, that is, the cache line coverage integrity of the cache line write operation is a complete coverage of the cache line, then the IO proxy module can obtain exclusive permission for the cache line corresponding to the cache line write operation, and does not read the existing data of the cache line, because the existing data of the cache line will be completely overwritten by the write data of the cache line write operation, so there is no need to read the existing data of the cache line. Based on this, if the cache line write operation is a complete cache line write operation, the IO proxy module can send a first exclusive permission request corresponding to the cache line to the Slave proxy module, and the first exclusive permission request is used to request exclusive permission for the cache line, and does not read the existing data of the cache line. For ease of explanation, the embodiment of the present application refers to the exclusive permission request that requests exclusive permission for the cache line but does not read the existing data of the cache line as the first exclusive permission request.

[0119] For example, the first exclusive permission request may be, for example, an LdToXND (Load To Exclusive No Data) request, wherein the LdToXND request is used to load a specific memory address as exclusive access (Exclusive) but without transmitting actual data content (No Data) so as to occupy the specific memory address before performing an exclusive write operation to ensure that the subsequent write operation is exclusive.

[0120] In an optional implementation, if the cache line write operation is a partial cache line write operation, that is, the cache line coverage integrity of the cache line write operation is partial coverage of the cache line, and the write data of the cache line write operation only covers part of the bytes of the cache line, then in order to avoid data conflicts and inconsistencies caused by directly executing partial write operations on the cache line, the IO proxy module needs to obtain exclusive permission for the cache line corresponding to the cache line write operation, and read the existing data of the cache line.

[0121] Specifically, the embodiments of the present application do not support the query response (Response) returning Partial data, that is, it cannot synchronize only a part of the cache line. This is to avoid data conflicts and inconsistencies caused by different Master modules modifying different parts of the same cache line at the same time. For example, when a Master proxy module requests exclusive access to or modification of a cache line of a Slave module, the Slave proxy module corresponding to the Slave module will send a query request to the Master proxy module holding a copy or permission of the cache line; the query Response is a response to the query request, and the Master proxy module holding a copy or permission of the cache line will return the current status of the cache line or mark the cache line as invalid; and if the query Response returns partial data of the cache line (i.e., Partial data), it may cause different Master proxy modules in the computer system to modify different parts of the same cache line of the Slave module in parallel, thereby causing data inconsistency problems. Therefore, the embodiments of the present application do not support the query Response returning Partial data.

[0122] Based on this, when the cache line write operation of the IO write request of the IO module is a partial cache line write operation, the IO proxy module can send a second exclusive permission request corresponding to the cache line to the Slave proxy module, and the second exclusive permission request is used to request exclusive permission for the cache line and read the existing data of the cache line, so that the IO proxy module can have exclusive permission and existing data for the cache line corresponding to the partial cache line write operation, and can safely write the write data of the partial cache line write operation to the portion of the corresponding cache line, and prevent other Master proxy modules from modifying the cache line at the same time to ensure data consistency. For ease of explanation, the embodiment of the present application refers to the exclusive permission request for requesting exclusive permission for the cache line and reading the existing data of the cache line as the second exclusive permission request.

[0123] For example, the second exclusive permission request may be, for example, an LdDataE (Load Data Exclusive) request, which is used to load data from a specific memory address and mark the memory address as exclusive access (Exclusive). Unlike the LdToXND request, the LdDataE request loads and transfers the data content of a specific memory address, while requesting exclusive access to the memory address.

[0124] In step S414, the Slave agent module feeds back exclusive authority response information corresponding to the exclusive authority request to the IO agent module.

[0125] After the Slave proxy module obtains the exclusive permission request for the cache line sent by the IO proxy module, the exclusive permission request obtained by the Slave proxy module is at least used to request exclusive permission for the cache line, and the exclusive permission request corresponds to the cache line overwrite integrity of the cache line write operation corresponding to the cache line, so that the Slave proxy module can process the exclusive permission request, at least authorize the exclusive permission of the cache line to the IO proxy module, and feedback exclusive permission response information corresponding to the exclusive permission request to the IO proxy module, such as TgtRsp information.

[0126] In an optional implementation, if the exclusive permission request obtained by the Slave proxy module is the first exclusive permission request (such as an LdToXND request), since the first exclusive permission request corresponds to a cache line write operation as a complete cache line write operation, the Slave proxy module can authorize the exclusive permission of the cache line indicated by the first exclusive permission request (such as the LdToXND request) to the IO proxy module, and feedback the exclusive permission response information (such as TgtRsp information) corresponding to the first exclusive permission request (such as the LdToXND request) to the IO proxy module. At this time, the exclusive permission response information is only used to inform the IO proxy module that the exclusive permission of the cache line has been successfully obtained, and does not carry the existing data of the cache line.

[0127] In an optional implementation, if the exclusive permission request obtained by the Slave proxy module is a second exclusive permission request (such as an LdDataE request), since the second exclusive permission request corresponds to a cache line write operation as a partial cache line write operation, the Slave proxy module can authorize the exclusive permission of the cache line indicated by the second exclusive permission request (such as the LdDataE request) to the IO proxy module, and feedback the exclusive permission response information (such as TgtRsp information) corresponding to the second exclusive permission request (such as the LdDataE request) to the IO proxy module. At this time, in addition to informing the IO proxy module that the exclusive permission of the cache line has been successfully obtained, the exclusive permission response information also needs to carry the existing data of the cache line, so that the IO proxy module can read the existing data of the cache line, so that the IO proxy module can merge the write data of the partial cache line write operation with the existing data of the corresponding cache line.

[0128] In a further optional implementation, when processing an exclusive permission request, the Slave proxy module may check the current state of the cache line based on the cache line for which exclusive permission is requested as indicated by the exclusive permission request (such as the address information of the cache line carried by the exclusive permission request); if the current state is that the exclusive permission of the cache line is occupied by other Master proxy modules, the Slave proxy module may notify the other Master proxy modules occupying the cache line to release the permission; if the current state is that the exclusive permission of the cache line is not occupied by other Master proxy modules, or the other Master proxy modules occupying the cache line have released the permission, the Slave proxy module may confirm that the IO proxy module can successfully obtain the exclusive permission of the cache line, so that the Slave proxy module may convert the state of the cache line to an exclusive state (Exclusive) and authorize the exclusive permission of the cache line to the IO proxy module. Furthermore, after the exclusive permission of the cache line is authorized to the IO agent module, the Slave agent module can decide whether the exclusive permission response information (such as TgtRsp information) fed back to the IO agent module carries the existing data of the cache line based on whether the exclusive permission request is the first exclusive permission request (such as LdToXND request) or the second exclusive permission request (such as LdDataE request).

[0129] In step S415, the IO proxy module obtains the exclusive permission response information corresponding to the exclusive permission request fed back by the Slave proxy module, to at least confirm that the exclusive permission of the cache line has been obtained.

[0130] Accordingly, based on the exclusive permission response information corresponding to the exclusive permission request sent by the Slave proxy module to the IO proxy module, the IO proxy module can at least confirm that the cache line for which the exclusive permission has been obtained. In an optional implementation, when the IO proxy module obtains the feedback exclusive permission response information, the exclusive permission response information can be matched with the issued exclusive permission request to confirm the cache line for which the exclusive permission has been obtained.

[0131] For example, when the IO proxy module issues an exclusive permission request, the exclusive permission request may carry a request identifier to uniquely identify the exclusive permission request; thus, after the Slave proxy module authorizes the exclusive permission of the cache line to the IO proxy module based on the address information of the cache line synchronously carried by the exclusive permission request, the Slave proxy module may carry the request identifier of the exclusive permission request in the exclusive permission response information corresponding to the exclusive permission request, that is, the exclusive permission response information may bring back the request identifier corresponding to the exclusive permission request, so as to achieve a corresponding match between the exclusive permission request and the exclusive permission response information; and further, the IO proxy module may uniquely match the issued exclusive permission request through the request identifier carried in the exclusive permission response information (for example, matching the issued exclusive permission request with the request identifier carried in the exclusive permission response information in the request table) to confirm the cache line for which the exclusive permission has been obtained.

[0132] In a further optional implementation, if the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained, the IO proxy module can mark the corresponding permission tag information for the IO write request to indicate that the cache line exclusive permission of the cache line write operation of the IO write request has been obtained; for example, for any IO write request, if the IO proxy module confirms that the exclusive permission response information corresponding to the exclusive permission request for the cache line write operation of the IO write request has been returned, the corresponding permission tag information can be marked for the IO write request.

[0133] For example, the IO proxy module may mark the permission marking information of the IO write request in the request queue to indicate the IO write request for which the exclusive permission of the cache line has been obtained in the request queue.

[0134] In a further optional implementation, the IO proxy module may track the state and permissions of the cache line through the table entry. For example, the table entry of the IO proxy module may record the address, state, ongoing operation, etc. of the cache line. When the IO proxy module obtains the exclusive permission response information, the state of the corresponding cache line in the table entry may be set to exclusive.

[0135] In a further optional implementation, for multiple IO write requests obtained by the IO proxy module (for example, multiple concurrent IO write requests), the IO proxy module supports out-of-order acquisition of exclusive permissions corresponding to the multiple IO write requests, that is, the cache line exclusive permissions corresponding to the cache line write operations of the multiple IO write requests can be obtained out of order, without having to obtain the corresponding cache line exclusive permissions in the order in which the IO proxy module obtains the multiple IO write requests. For example, the IO proxy module stores the request information of the IO write requests in the request queue in order according to the order in which the IO write requests are obtained, so that the storage order of the IO write requests in the request queue is the order in which the IO write requests are issued; when the IO write requests are stored in the request queue, the IO proxy module can issue a corresponding exclusive permission request for the cache line based on the cache line overwrite integrity of the cache line write operation of the IO write request, and after obtaining the corresponding exclusive permission response information, confirm that the cache line exclusive permission of the cache line write operation of the IO write request has been obtained; in this case, for multiple IO write requests in the request queue without address conflicts, the cache line exclusive permissions of the multiple IO write requests can support out-of-order acquisition, for example, the exclusive permission response information of the multiple IO write requests may be returned to the IO proxy module out of order, and the IO proxy module supports out-of-order acquisition of exclusive permission response information corresponding to the multiple IO write requests, so as to support out-of-order acquisition of cache line exclusive permissions for the multiple IO write requests.

[0136] It should be noted that, since the IO proxy module obtains the exclusive permission to the cache line corresponding to the cache line write operation of the IO write request, before releasing the exclusive permission of the IO proxy module to the cache line, the access of other Master proxy modules to the cache line will be fed back to the IO proxy module in the form of a query request of the Slave proxy module to the cache line, and then the IO proxy module can respond to the query request based on the data consistency requirement to ensure that before the IO proxy module performs the write operation on the cache line corresponding to the cache line write operation, the data access of other Master proxy modules to the cache line is up-to-date and accurate, thereby ensuring data consistency; that is, the access of other Master proxy modules to the cache line will be in the form of a query request to inquire the IO proxy module that has obtained the exclusive permission to the cache line, so that the IO proxy module can inform the cache line of the current correct and complete data through the query Response, thereby ensuring data consistency.

[0137] Further, if the exclusive permission response information fed back by the Slave proxy module is the exclusive permission response information corresponding to the first exclusive permission request (such as the LdToXND request), then since the cache line write operation corresponding to the cache line that obtains the exclusive permission is a complete cache line write operation, the write data of the cache line write operation will completely cover the cache line. At this time, on the IO proxy module side, the IO proxy module may not perform further processing at the data processing level, but wait for the issuance order of the IO write request to arrive and the exclusive permission of the cache line is still maintained before continuing with subsequent processing. In other words, for the case where the cache line write operation is a complete cache line write operation, the IO proxy module does not need additional data merging, and the write data of the cache line write operation is already the complete write data of the corresponding cache line. The IO proxy module only needs to directly write the write data of the cache line write operation completely into the cache line when the issuance order of the IO write request arrives and the exclusive permission of the cache line is still maintained.

[0138] Furthermore, if the exclusive permission response information fed back by the Slave proxy module is the exclusive permission response information corresponding to the second exclusive permission request (such as the LdDataE request), the IO proxy module can also read the existing data of the cache line based on the exclusive permission response information. At this time, the cache line write operation corresponding to the cache line that obtains the exclusive permission is a partial cache line write operation, and the cache line write operation is to partially write to the cache line. Therefore, the IO proxy module needs to merge the write data of the cache line write operation with the existing data of the cache line at the data processing level, so as to obtain the complete write data of the cache line corresponding to the cache line write operation, that is, the complete write data of the cache line at this time includes the write data of the cache line write operation and the part of the existing data that has not been covered, so that the IO proxy module can write the complete write data of the cache line completely to the cache line when the IO write request arrives in the order in which it is issued and the exclusive permission of the cache line is still maintained.

[0139] In an optional implementation, the IO proxy module may merge the write data of a partial cache line write operation with the existing data of the corresponding cache line in an internal buffer.

[0140] Further, for the case where the cache line write operation is a partial cache line write operation, after reading the existing data of the corresponding cache line, the IO proxy module can write the write data of the cache line write operation into some bytes of the cache line according to the ByteEnable (byte enable) information of the cache line write operation, so as to overwrite some existing data corresponding to the partial bytes, and form the merged data of the cache line as the complete write data corresponding to the cache line. Among them, the ByteEnable of the cache line write operation can indicate the partial bytes written to the corresponding cache line, that is, the ByteEnable information can locate the byte range written to the cache line; thus, when the write data of the cache line write operation is merged with the existing data of the corresponding cache line, the write data of the cache line write operation is written into the partial bytes specified by the ByteEnable information in the corresponding cache line, that is, the ByteEnable information can ensure that when the write data of the partial cache line write operation is merged with the existing data of the corresponding cache line, the write data of the partial cache line write operation can correctly overwrite the corresponding partial bytes in the corresponding cache line, thereby ensuring the accuracy of the data merge and preventing data loss.

[0141] In a further optional implementation, in the case where the cache line write operation is a partial cache line write operation, the IO proxy module cannot discard the ByteEnable information of the cache line write operation, but needs to continue to save the ByteEnable information of the cache line write operation so that the IO proxy module may re-merge the data in the subsequent performance; for example, the IO proxy module may save the ByteEnable information of the partial cache line write operation of the IO write request in the request information of the IO write request in the request queue, or save the ByteEnable information of the partial cache line write operation in the Buffer.

[0142] In step S416, when the issuance order of the IO write request arrives, if the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained, the IO proxy module issues a complete write data request corresponding to the cache line write operation based on the complete write data corresponding to the cache line.

[0143] The IO write requests obtained by the IO proxy module are issued in sequence, for example, the IO write requests are issued in sequence according to the storage order of the IO write requests in the request queue; for any IO write request, when it is the turn of the IO write request to be issued, the IO proxy module can check whether the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained (for example, check whether the request queue is marked with the permission tag information of the IO write request); if it is checked that the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained (for example, detect that the IO write request is marked with the permission tag information), the IO proxy module can issue the IO write request by completely writing the cache line; that is, the IO write request is in the form of a cache line write operation, and the complete write data is written in the cache line corresponding to the cache line write operation of the IO write request, and the complete write data includes the write data of the cache line write operation of the IO write request, so as to realize the writing of the write data of the IO write request into the Slave module. Thus, for any IO write request, when the issuance order of the IO write request arrives, and the exclusive permission of the cache line corresponding to the cache line write operation has been obtained, the IO proxy module can issue a complete write data request corresponding to the cache line write operation of the IO write request based on the complete write data corresponding to the cache line of the cache line write operation of the IO write request, so as to write the complete write data in the cache line corresponding to the cache line write operation of the IO write request through the complete write data request, and the complete write data at least includes the write data of the cache line write operation of the IO write request. Furthermore, when the issuance order of the IO write request arrives, if the IO write request is not marked with the permission tag information, it is necessary to wait until the IO write request obtains the exclusive permission, and then issue the complete write data request corresponding to the cache line write operation based on the complete write data corresponding to the cache line.

[0144] Through the foregoing description, it can be understood that if the cache line write operation of the IO write request is a complete cache line write operation, the complete write data corresponding to the cache line of the cache line write operation is the write data of the cache line write operation, and the complete write data request corresponding to the cache line write operation issued is used to write the write data of the cache line write operation in the cache line corresponding to the cache line write operation. If the cache line write operation of the IO write request is a partial cache line write operation, the complete write data corresponding to the cache line of the cache line write operation is merged data, that is, the merged data after the write data of the cache line write operation is merged with the existing data of the corresponding cache line, and the complete write data request corresponding to the cache line write operation issued is used to write the merged data of the corresponding cache line in the cache line corresponding to the cache line write operation, and the merged data includes the write data of the cache line write operation.

[0145] In an optional implementation, the complete write data request may be, for example, an Evict Data Full request, which is used to completely write data in a cache line.

[0146] In step S417, the Slave agent module feeds back response information of the complete data write request to the IO agent module.

[0147] After obtaining the complete write data request (such as Evict Data Full request) sent by the IO proxy module, the Slave proxy module can process the complete write data request, thereby writing the corresponding complete write data in the cache line indicated by the complete write data request, and feeding back the corresponding response information to the IO proxy module. The complete write data request can carry the address information of the cache line requested to be written, and the complete write data requested to be written; further, the complete write data request can also carry a request identifier to identify the complete write data request.

[0148] In step S418, the IO agent module feeds back response information of the IO write request to the IO module.

[0149] After the IO proxy module obtains the response information of the complete write data request fed back by the Slave proxy module, if it confirms that the complete write data request corresponding to the cache line write operation of the IO write request has been executed (for example, based on the request identifier carried in the response information, matching the completed complete write data request), it can feed back the corresponding response information of the IO write request (such as Rsp information) to the IO module to inform the IO module that the IO write request has been executed.

[0150] Furthermore, when the complete write data request corresponding to the cache line write operation of the IO write request is executed, the IO proxy module can request to release the exclusive permission of the cache line corresponding to the cache line write operation, such as sending a request to release the exclusive permission of the corresponding cache line to the Slave proxy module; or, when the Slave proxy module completes the execution of the complete write data request corresponding to the cache line write operation, it can also actively release the exclusive permission of the corresponding cache line and inform the IO proxy module.

[0151] The interaction between the above-mentioned IO agent module and the Slave agent module can be carried out through a transmission network. The embodiment of the present application does not limit the transmission network, and the computer system can adapt to any transmission network, such as a transmission network configured with any transmission mechanism.

[0152] In the write request processing method provided in the embodiment of the present application, the IO proxy module manages the IO write request of the corresponding IO module with the cache line based on the cache consistency protocol. When the IO proxy module obtains the IO write request of the IO module, the IO proxy module can determine the cache line coverage integrity corresponding to the cache line write operation of the IO write request, and based on the cache line coverage integrity of the cache line write operation, issue an exclusive permission request for the cache line corresponding to the cache line write operation to at least obtain the exclusive permission of the cache line, thereby ensuring that before the IO proxy module performs the write operation on the cache line corresponding to the cache line write operation, all accesses to the cache line by other Master proxy modules will be through the cache line corresponding to the cache line. The query request is fed back to the IO proxy module, and then the IO proxy module can respond to the query request based on the data consistency requirement to ensure that the data access to the cache line by other Master proxy modules is up-to-date and accurate, thereby ensuring data consistency; further, when the order of issuing IO write requests arrives, if the IO proxy module confirms that the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained, then a complete write data request corresponding to the cache line write operation can be issued based on the complete write data corresponding to the cache line to request that the complete write data be written in the cache line, and the complete write data at least includes the write data of the cache line write operation, so as to realize the issuance of the IO write request.

[0153] In the above process, the IO proxy module based on the cache consistency protocol can transfer the order control point (i.e., the order preservation point) of the IO write request to the IO proxy module by obtaining the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request. Therefore, the embodiment of the present application can release the order preservation requirements of the computer system's transmission network for the access request of the IO module, so that the computer system can adapt to the transmission network of any transmission mechanism, reduce the design restrictions of the transmission network, and thus improve the performance of the transmission network, such as improving the utilization rate of the transmission network and the throughput of the computer system. Therefore, the embodiment of the present application can release the order preservation requirements of the computer system's transmission network for IO write requests while ensuring the data consistency of the computer system, thereby improving the performance of the transmission network.

[0154] For further understanding, take the IO module writing to multiple memories as an example. Figure 5 An example diagram of a write request processing method provided by an embodiment of the present application is shown exemplarily. Figure 5 The example is mainly explained from the perspective of interaction between an IO module, an IO proxy module, and a memory proxy module corresponding to a plurality of memories, wherein the plurality of memories involve a first memory and a second memory, the memory proxy module corresponding to the first memory is a first memory proxy module, and the memory proxy module corresponding to the second memory is a second memory proxy module; Figure 5In the example, the IO WriteA1 of the IO module is for the first memory. For the convenience of explanation, IOWriteA1 is called the first IO write request, i.e., the first IO WriteA1, and the first IO WriteA1 has a complete cache line write operation as an example; the IO WriteA2 of the IO module is for the second memory. For the convenience of explanation, IO WriteA2 is called the second IO write request, i.e., the second IO WriteA2, and the second IO WriteA2 has a partial cache line write operation as an example. Figure 5 As shown, the example process of the write request processing method includes the following steps.

[0155] Step S510: The IO module transmits the first IO WriteA1 to the IO proxy module.

[0156] Step S511: The IO proxy module stores the request information of the first IO WriteA1 in the request queue.

[0157] Step S512: If the IO proxy module detects that the cache line write operation of the first IO WriteA1 is a complete cache line write operation, the IO proxy module sends a first LdToXND request to the first memory proxy module to request an exclusive permission request for the first cache line corresponding to the cache line write operation.

[0158] Figure 5 Taking the cache line write operation of the first IO WriteA1 as a complete cache line write operation as an example for explanation, for example, the first IO WriteA1 writes a complete 64-byte cache line, and the cache line corresponding to the cache line write operation of the first IO WriteA1 is called the first cache line; thus, when the IO proxy module detects that the first IO WriteA1 writes a complete cache line, it can trigger the LdToXND request (called the first LdToXND request) corresponding to the cache line write operation of the first IO WriteA1 to request exclusive permission for the first cache line corresponding to the cache line write operation of the first IO WriteA1, and does not read the existing data of the first cache line.

[0159] Step S513: The first memory agent module feeds back first TgtRsp information to the IO agent module.

[0160] After obtaining the first LdToXND request, the first memory agent module may process the first LdToXND request and return corresponding TgtRsp information (referred to as first TgtRsp information) to the IO agent module to inform the IO agent module that the exclusive right to the first cache line has been successfully obtained.

[0161] In an optional implementation, after obtaining the first LdToXND request, the first memory agent module can check the current state of the first cache line based on the address of the first cache line carried by the first LdToXND request (e.g., the starting address); if the current state is that the permission of the first cache line is not occupied by other Master agent modules, or other Master agent modules occupying the first cache line have released the permission, then the first memory agent module can confirm that the IO agent module can successfully obtain the exclusive permission of the first cache line, so that the first memory agent module can convert the state of the first cache line to an exclusive state, and authorize the permission of the first cache line to the IO agent module. Furthermore, the first memory agent module returns the first TgtRsp information to the IO agent module, and the first TgtRsp information does not carry the existing data of the first cache line, but only informs the IO agent module that the exclusive permission of the first cache line has been successfully obtained.

[0162] Step S514: The IO agent module sends the first SrcRsp information to the first memory agent module.

[0163] In an optional implementation, after obtaining the first TgtRsp information fed back by the first memory agent module, the IO agent module can confirm that the IO agent module has obtained exclusive permission to the first cache line by matching the first TgtRsp information and the first LdToXND request, so that the table entry maintained by the IO agent module can record the state of the first cache line as an exclusive state, and set the permission mark information for the corresponding first IO WriteA1 in the request queue.

[0164] Furthermore, the IO agent module may send corresponding SrcRsp information (referred to as first SrcRsp information) to the first memory agent module to inform the first memory agent module that the IO agent module will subsequently prepare to perform a write operation related to the first cache line.

[0165] Step S515: The IO proxy module issues IO write requests based on the order of IO write requests in the request queue. When it is the turn of the first IO WriteA1 to issue, if it is checked that the first IO WriteA1 is set with permission tag information, then based on the write data of the cache line write operation of the first IO WriteA1, a first Evict Data Full request is sent to the first memory proxy module to request that the write data of the cache line write operation be written in the first cache line.

[0166] The IO proxy module can issue IO write requests in sequence based on the order of IO write requests stored in the request queue. When it is the turn of the first IO WriteA1 to be issued, the IO proxy module can confirm that the IO proxy module has obtained the exclusive permission for the first cache line written by the first IO WriteA1 based on the permission tag information of the first IO WriteA1 set in the request queue. Therefore, the IO proxy module can send a corresponding EvictData Full request (referred to as the first Evict Data Full request) to the first memory proxy module based on the write data of the cache line write operation of the first IO WriteA1 (that is, the write data of the first IOWriteA1 at this time, corresponding to the complete write data of the first cache line), so as to request to write the write data of the cache line write operation of the first IOWriteA1 in the first cache line.

[0167] Step S516: The first memory agent module feeds back first TgtRsp information to the IO agent module.

[0168] After the first memory agent module obtains the first Evict Data Full request, since the exclusive right of the first cache line is obtained by the IO agent module that issued the first Evict Data Full request, the first memory agent module allows the execution of the first Evict Data Full request, thereby scheduling the first memory to execute the first Evict Data Full request to write the corresponding write data in the first cache line indicated by the first Evict Data Full request. Furthermore, the first memory agent module feeds back the corresponding TgtRsp information (referred to as the first TgtRsp information) to the IO agent module to indicate that the execution of the first Evict Data Full request is completed.

[0169] Step S517: The IO proxy module feeds back the first Rsp information to the IO module.

[0170] Step S518: The IO agent module sends the first SrcRsp information to the first memory agent module.

[0171] After receiving the first TgtRsp information, the IO agent module confirms that the execution of the first Evict Data Full request is complete, and then it can feedback the corresponding Rsp information (called the first Rsp information) to the IO module to indicate that the first IO WriteA1 has completed writing data; further, the IO agent module feedbacks the corresponding first SrcRsp information to the first memory agent module, indicating that the relevant process of the first IOWriteA1 has been completed.

[0172] Figure 5 The processing procedure for the second IO WriteA2 is further illustrated as follows.

[0173] Step S520: The IO module transmits the second IO WriteA2 to the IO proxy module.

[0174] Step S521: The IO proxy module stores the request information of the second IO WriteA2 in the request queue.

[0175] Step S522: If the IO proxy module detects that the cache line write operation of the second IO WriteA2 is a partial cache line write operation, the IO proxy module sends a second LdDataE request to the second memory proxy module to request an exclusive permission request for the second cache line corresponding to the cache line write operation and read the existing data of the second cache line.

[0176] Figure 5 Take the cache line write operation of the second IO WriteA2 as a partial cache line write operation as an example for explanation. For example, the second IO WriteA2 writes partial bytes in a 64-byte cache line, and the cache line corresponding to the cache line write operation of the second IO WriteA2 is called the second cache line; thus, when the IO proxy module detects that the second IO WriteA2 writes a partial cache line, it can trigger the LdDataE request corresponding to the cache line write operation of the second IO WriteA2 (the LdDataE request for the second IO WriteA2 is called the second LdDataE request) to request exclusive permission for the second cache line corresponding to the cache line write operation of the second IO WriteA2, and read the existing data of the second cache line.

[0177] Step S523: The second memory agent module feeds back the second TgtRsp information to the IO agent module.

[0178] After obtaining the second LdDataE request, the second memory agent module can process the second LdDataE request, authorize the exclusive permission of the second cache line requested by the second LdDataE request to the IO agent module, and feed back the data of the second cache line to the IO agent module through the corresponding TgtRsp information (referred to as the second TgtRsp information), so as to inform the IO agent module through the second TgtRsp information that the exclusive permission of the requested second cache line has been successfully obtained, and enable the IO agent module to obtain the existing data of the second cache line through the second TgtRsp information.

[0179] Step S524: The IO proxy module merges the write data of the cache line write operation of the second IO WriteA2 with the existing data of the second cache line to obtain the merged data of the second cache line as the complete write data.

[0180] After obtaining the second TgtRsp information, the IO proxy module can parse out the existing data of the second cache line fed back by the second memory proxy module, and merge the write data of the cache line write operation of the second IO WriteA2 (that is, the write data of the second IO WriteA2 at this time) with the existing data of the second cache line to obtain the merged data of the second cache line as the complete write data of the second cache line. For example, the IO proxy module can merge the write data of the cache line write operation with the existing data of the second cache line in the internal Buffer based on the ByteEnable information of the cache line write operation of the second IO WriteA2, and the write data of the cache line write operation covers part of the bytes in the second cache line indicated by the ByteEnable information.

[0181] Further, the IO proxy module may set the state of the second cache line to an exclusive state in the table entry, and set permission marking information for the second IO WriteA2 in the request queue.

[0182] Step S525: The IO agent module sends the second SrcRsp information to the second memory agent module.

[0183] Step S526, the IO proxy module issues IO write requests based on the order of IO write requests in the request queue, and when it is the turn to issue the second IO WriteA2, if it is checked that the second IO WriteA2 is set with permission tag information, then based on the complete write data of the second cache line, a second Evict Data Full request is sent to the second memory proxy module to request to write the complete write data of the second cache line in the second cache line.

[0184] That is to say, based on the data merging of the second cache line, the second IO WriteA2 is issued in the form of an Evict Data Full request (referred to as a second EvictData Full request) corresponding to the merged data of the second cache line (i.e., the complete write data of the second cache line), so as to write the merged data containing the write data of the second IO WriteA2 in the second cache line to realize the execution of the second IO WriteA2.

[0185] Step S527: The second memory agent module feeds back the second TgtRsp information to the IO agent module.

[0186] After the second memory agent module obtains the second Evict Data Full request, since the exclusive right of the second cache line is obtained by the IO agent module that issued the second Evict Data Full request, the second memory agent module allows the execution of the second Evict Data Full request, thereby scheduling the second memory to execute the second Evict Data Full request. Furthermore, the second memory agent module feeds back the corresponding TgtRsp information (referred to as the second TgtRsp information) to the IO agent module to indicate that the execution of the second Evict Data Full request is completed.

[0187] Step S528: The IO proxy module feeds back the second Rsp information to the IO module.

[0188] Step S529: The IO agent module sends the second SrcRsp information to the second memory agent module.

[0189] After receiving the second TgtRsp information, the IO agent module feeds back corresponding Rsp information (referred to as second Rsp information) to the IO module, and the IO agent module feeds back corresponding second SrcRsp information to the second memory agent module, indicating that the process related to the second IOWriteA2 has been completed.

[0190] The interaction between the above-mentioned IO agent module and the first memory agent module and the second memory agent module can be carried out through a transmission network. The embodiment of the present application does not limit the transmission network, and the computer system can adapt to any transmission network, such as a transmission network configured with any transmission mechanism.

[0191] In a further optional implementation, after the IO agent module obtains the exclusive permission for the cache line corresponding to the cache line write operation of the IO write request, before issuing the complete write data request (such as Evict Data Full request) corresponding to the cache line write operation, it may also receive a query request for the cache line from the Slave agent module. The query request is triggered by the access to the cache line by other Master agent modules, that is, a query conflict occurs before Evict Data Full. Specifically, after the IO proxy module obtains the exclusive permission of the cache line and before issuing the corresponding Evict Data Full request, the Slave proxy module will check the status of the cache line to the IO proxy module through a query operation based on the access request of other Master proxy modules to the cache line. At this time, the IO proxy module will receive the query request of the Slave proxy module; in order to simplify the protocol processing, the embodiment of the present application supports the IO proxy module to set the status of the cache line to Invalid through the query Response to release the exclusive permission of the cache line, and at the same time reset the process of the IO proxy module to obtain the exclusive permission of the cache line to avoid cache line permission conflicts between different modules, ensuring that write operations can be executed in the correct order and maintain data consistency.

[0192] That is to say, for Figure 4 In an example process, after the IO proxy module obtains the exclusive permission for the cache line and before issuing the complete write data request corresponding to the cache line write operation, if a query request for the cache line is obtained, the IO proxy module issues a corresponding query response to release the exclusive permission for the cache line; and the IO proxy module needs to return to step S413, that is, return to the cache line coverage integrity based on the cache line write operation, and issue an exclusive permission request for the cache line corresponding to the cache line write operation to at least obtain the exclusive permission for the cache line.

[0193] For ease of understanding, Figure 5 For example, the IO proxy module obtains the exclusive permission of the first cache line corresponding to the first IO WriteA1, and obtains the query request of the first cache line before issuing the first Evict Data Full request. Fig. 6A Another example diagram of the write request processing method provided by the embodiment of the present application is shown as an example. To simplify the description, Fig. 6A and Figure 5 The relevant contents may be referred to accordingly. Specifically, after the IO proxy module obtains the exclusive permission for the first cache line and before issuing the first Evict Data Full request, Fig. 6A The example process includes the following steps.

[0194] Step S610: The first memory agent module receives an LdDataE request for the first cache line sent by other Master agent modules.

[0195] Other Master agent modules, such as other IO agent modules or other core cluster agent modules, can send an LdDataE request for the first cache line to the first memory agent module to request exclusive rights and existing data of the first cache line. The time when the first memory agent module receives the LdDataE request for the first cache line from other Master agent modules is later than the time when the first memory agent module authorizes the exclusive rights of the first cache line to the IO agent module, and earlier than the time when the first memory agent module receives the first Evict Data Full request.

[0196] Step S611: The first memory agent module sends a first query request corresponding to the first cache line to the IO agent module.

[0197] Since the IO proxy module has obtained the exclusive right to the first cache line through the first LdToXND request, when the first memory proxy module receives the LdDataE request from other Master proxy modules regarding the first cache line, the first memory proxy module cannot directly provide the exclusive right to the first cache line to other Master proxy modules and return the existing data. Based on this, the first memory proxy module can initiate a query request (referred to as the first query request) corresponding to the first cache line to the IO proxy module to query the status of the first cache line and request the IO proxy module to release the exclusive right to the first cache line.

[0198] Step S612: The IO agent module sends a first inquiry response to the first memory agent module.

[0199] When the IO agent module obtains the first query request, the IO agent module has not yet issued the first Evict Data Full request, for example, it is not yet the turn of the first IO WriteA1 to be issued, so the IO agent module has not yet issued the first Evict Data Full request; at this time, the IO agent module can respond to the first query request corresponding to the first cache line, and set the state of the first cache line to Invalid state, indicating that the IO agent module gives up the exclusive right to the first cache line; thus, the IO agent module can send a query response (referred to as a first query response) corresponding to the first query request to the first memory agent module, the query response, for example, query RspToTgt (Query Response To Target) information, and the first query response indicates that the state of the first cache line is Invalid state.

[0200] That is to say, after the IO proxy module obtains the exclusive permission for the cache line and before issuing the complete write data request corresponding to the cache line write operation, if it obtains a query request for the cache line, the IO proxy module will issue a corresponding query response to notify that the status of the cache line is Invalid, and the IO proxy module has released the exclusive permission for the cache line.

[0201] Furthermore, since the IO proxy module obtains the query request for the cache line before Evict Data Full is performed on the cache line, the IO proxy module may not return the complete write data of the cache line to the Slave proxy module when making a query response. For example, the query response does not carry the data of the cache line. At this time, the query response is only a response that the status of the cache line is invalid, rather than a data response.

[0202] It can be seen that due to the LdDataE requests of other Master agent modules for cache lines and the query requests of Slave agent modules for cache lines, the IO agent module can give up the exclusive permission of the cache lines to ensure that before the IO agent module issues the Evict Data Full request, the IO write requests of other Master agent modules for cache lines can be executed in the correct order to maintain the data consistency of the computer system.

[0203] Step S613: The first memory agent module sends TgtRsp information to other Master agent modules.

[0204] After obtaining the first query response sent by the IO agent module, the first memory agent module can confirm that the IO agent module has released the exclusive permission of the first cache line, so that the first memory agent module can process the access requests of other master agent modules, such as granting the exclusive permission of the first cache line to other master agent modules, and sending corresponding TgtRsp information to other master agent modules; because the request initiated by other master agent modules to the first memory agent module is an LdDataE request, the TgtRsp information sent by the first memory agent module to other master agent modules also carries the existing data of the first cache line.

[0205] Step S614: Other Master agent modules send SrcRsp information to the first memory agent module.

[0206] After other Master agent modules obtain the TgtRsp information of the first memory agent module, it indicates that other Master agent modules have obtained the exclusive right and existing data of the first cache line, so other Master agent modules can send corresponding SrcRsp information to the first memory agent module.

[0207] Step S615: The IO agent module resends the first LdToXND request to the first memory agent module.

[0208] Since the IO proxy module's exclusive permission for the first cache line is interrupted, the IO proxy module needs to re-initiate the first LdToXND request, that is, resend the first LdToXND request to the first memory proxy module to request exclusive permission for the first cache line without reading the existing data in the first cache line.

[0209] Specifically, after the IO proxy module obtains the first query request, the state of the first cache line in the table entry of the IO proxy module is set from exclusive to Invalid, that is, the exclusive permission of the first cache line in the table entry is queried Invalid. Since the first Evict Data Full request of the IO proxy module has not yet been issued, the IO proxy module needs to perform a write operation on the first cache line to ensure that the first Evict Data Full request can be correctly executed. Therefore, after the first cache line is set to an invalid state (for example, after the state of the first cache line in the table entry is set to Invalid), the IO proxy module can trigger the operation of re-obtaining the exclusive permission of the first cache line, and then the IO proxy module can resend the first LdToXND request to the first memory proxy module, that is, the operation of the IO proxy module to obtain the exclusive permission of the first cache line is reset due to the query request.

[0210] That is to say, after the IO proxy module obtains the exclusive permission of the cache line and before issuing the complete write data request corresponding to the cache line write operation, if it obtains a query request for the cache line, the IO proxy module will release the exclusive permission of the cache line due to the access of other Master proxy modules to the cache line, and the IO proxy module will re-acquire the exclusive permission of the cache line.

[0211] Step S616: The first memory agent module feeds back first TgtRsp information to the IO agent module.

[0212] After receiving the first LdToXND request, the first memory agent module may re-grant the exclusive permission of the first cache line to the IO agent module, and re-feed back the first TgtRsp information.

[0213] In response to the IO agent module's request for exclusive permission for the cache line, the Slave agent module can re-grant the IO agent module exclusive permission for the cache line in any of the following situations:

[0214] Other Master proxy modules have completed the operation of the cache line; the purpose of the query request is to let the IO proxy module release the control of the cache line so that other Master proxy modules can access or modify the data of the cache line; when the Slave proxy module receives the response that other Master proxy modules have completed the operation on the cache line, the other Master proxy modules will release the permissions of the cache line, so that the Slave proxy module can re-grant the exclusive permissions of the cache line to the IO proxy module.

[0215] The cache line is in an ownerless state. After other Master agent modules complete the operation of the cache line, the cache line is not further held by the exclusive permission. Then the Slave agent module can re-grant the exclusive permission of the cache line to the IO agent module.

[0216] Step S617: The IO agent module sends the first SrcRsp information to the first memory agent module.

[0217] Fig. 6A The subsequent process of the example continues to Figure 5 The stage where the IO agent module of the example issues the first Evict Data Full request is not expanded here. For related content, please refer to Figure 5 Description of the example section.

[0218] It should be noted that Fig. 6A The cache line write operation of the first IO WriteA1 is a complete cache line write operation. When the cache line write operation of the IO write request is a partial cache line write operation, the Evict Data Full pre-query conflict of the second IO WriteA2 is taken as an example. Figure 6B Another example diagram of the write request processing method provided by the embodiment of the present application is exemplarily shown. Fig. 6A and Figure 6B The difference is that in the case of partial cache line write operations, the IO proxy module needs to reset the exclusive permission to obtain the cache line and reset the process of merging data. Figure 5 and Figure 6B As shown, Figure 6B The example process includes the following steps.

[0219] Step S620: The second memory agent module receives the LdDataE request for the second cache line sent by other Master agent modules.

[0220] Step S621: The second memory agent module sends a second query request corresponding to the second cache line to the IO agent module.

[0221] Since the IO agent module has obtained exclusive permission for the second cache line through the second LdDataE request, when the second memory agent module receives the LdDataE request for the second cache line from other Master agent modules, the second memory agent module needs to query the IO agent module for the status of the second cache line and request the IO agent module to release the exclusive permission.

[0222] Step S622: The IO agent module sends a second inquiry response to the second memory agent module.

[0223] When the IO agent module obtains the second query request, the IO agent module has not yet issued the second Evict Data Full request, for example, the request queue is not currently in the order of issuing the second IO WriteA2, so the IO agent module has not yet issued the second Evict Data Full request; at this time, the IO agent module can respond to the second query request and set the state of the second cache line to Invalid, indicating that the IO agent module gives up the exclusive right to the second cache line; for example, the IO agent module sets the state of the second cache line in the table entry from exclusive to Invalid. Thus, the IO agent module can send a second query response to the second memory agent module, the second query response indicates that the state of the second cache line is Invalid, and the second query response is not used as a data response.

[0224] Step S623: The second memory agent module sends TgtRsp information to other Master agent modules.

[0225] After obtaining the second query response sent by the IO agent module, the second memory agent module can confirm that the IO agent module has released the exclusive permission of the second cache line, so that the second memory agent module can grant the exclusive permission of the second cache line to other Master agent modules and send corresponding TgtRsp information to other Master agent modules; since the request initiated by other Master agent modules to the second memory agent module is an LdDataE request, the TgtRsp information also carries the existing data of the second cache line.

[0226] Step S624: The other module Master agent module sends SrcRsp information to the second memory agent module.

[0227] Step S625: The IO agent module resends the second LdDataE request to the second memory agent module.

[0228] The IO proxy module can trigger the operation of reacquiring the exclusive permission of the second cache line, and then the IO proxy module can resend the second LdDataE request to the second memory proxy module. Since the cache line write operation of the second IO WriteA2 is a partial cache line write operation, the corresponding exclusive permission request is an LdDataE request. In other words, the operation of the IO proxy module to obtain the exclusive permission and existing data of the second cache line is reset due to the query request of the second cache line.

[0229] Step S626: The second memory agent module feeds back the second TgtRsp information to the IO agent module.

[0230] Step S627: The IO proxy module merges the write data of the cache line write operation of the second IO WriteA2 with the existing data of the second cache line to obtain merged data of the second cache line.

[0231] Step S628: The IO agent module sends the second SrcRsp information to the second memory agent module.

[0232] Figure 6B The subsequent process of the example continues to Figure 5 The stage where the IO agent module of the example issues the second Evict Data Full request is not expanded here. For related content, please refer to Figure 5 Relevant description of the example section. It can be seen that when the cache line write operation corresponding to the query request is a partial cache line write operation, the IO proxy module not only reacquires the exclusive permission of the cache line, but also re-merges the write data of the cache line write operation with the existing data of the cache line. For example, at this time, it is necessary to use the saved ByteEnable information to re-merge the data.

[0233] In a further optional implementation, if a query conflict occurs before Evict Data Full, the IO proxy module needs to check the status of the IO write request based on the address match and mark the IO write request as interrupted. Specifically, the request Buffer of the IO proxy module temporarily stores the unfinished IO write requests, and each IO write request includes a corresponding write address. When the exclusive permission of the cache line corresponding to the IO write request is interrupted by the query and the exclusive permission is lost, causing the progress of the IO write request to be forced to be interrupted, the IO proxy module needs to temporarily save the status of the IO write request and mark it as interrupted. Furthermore, after regaining the exclusive permission of the cache line, the IO proxy module will match the cache line that regained the exclusive permission with the IO write request in the request Buffer to ensure that the processing of the corresponding IO write request can be resumed after the exclusive permission of the cache line is restored.

[0234] In a more specific optional implementation, the request buffer of the IO proxy module buffering the IO write request and the MPQ (Memory Proxy Queue) of the memory proxy module can have the same address matching logic, that is, the request buffer of the IO proxy module needs to add the same address matching processing as the MPQ of the memory proxy module, wherein the MPQ of the memory proxy module is a queue for processing and managing memory requests, and is used to temporarily store and schedule memory access requests. Thus, when the IO proxy module receives the query request corresponding to the cache line, the IO proxy module can set the state of the cache line of the corresponding address to an invalid state in the table entry; and based on the address matching mechanism, that is, the address matching logic of the request buffer of the IO proxy module (the same as the MPQ of the memory proxy module), the IO proxy module can realize the mutual query of the write address of the IO write request and the state of the corresponding cache line, so that when the state of the cache line corresponding to the IO write request becomes invalid, the state of the IO write request is marked as an interrupt state, and when the state of the cache line corresponding to the IO write request is restored to an exclusive state, the corresponding IO write request is resumed to continue processing.

[0235] That is to say, when a query conflict occurs before Evict Data Full, for the received query request, the IO agent module sets the status of the cache line corresponding to the query request to an invalid status in the table entry, and checks whether there is an unfinished corresponding IO write request in the request Buffer according to the address matching mechanism; if there is an unfinished corresponding IO write request, the IO agent module can set the status of the corresponding IO write request to an interrupted status; then, after regaining the exclusive permission of the cache line, the IO agent module can restore the status of the cache line to an exclusive status in the table entry, and according to the address matching mechanism, resume the continued processing of the corresponding IO write request, that is, when the issuance order of the IO write request arrives, the cache line exclusive permission of the cache line write operation based on the IO write request has been obtained, and a complete write data request corresponding to the cache line write operation can be issued.

[0236] It should be further explained that after the IO proxy module obtains the exclusive permission for the complete cache line and before issuing the Evict Data Full request, at any time, as long as the IO proxy module obtains the query request for the cache line, it needs to set the state of the cache line to Invalid and reset the process of obtaining the exclusive permission for the cache line. Specifically, the following situations may occur:

[0237] After the IO proxy module obtains the exclusive permission of the cache line, before issuing the Evict Data Full request, if no query request of the cache line is received, the IO proxy module can maintain the exclusive permission of the cache line until the Evict Data Full request is issued. At this time, the IO proxy module does not need to re-acquire the exclusive permission of the cache line;

[0238] The IO proxy module may need to reacquire the exclusive permission of the cache line before issuing an Evict Data Full request; after the IO proxy module obtains the exclusive permission of the cache line, before issuing an Evict Data Full request, if it receives a query request for the cache line, the IO proxy module needs to reset the acquisition process of the exclusive permission of the cache line; after the IO proxy module reacquires the exclusive permission of the cache line, until the Evict Data Full request is issued, the IO proxy module does not receive a query request for the cache line again, and the IO proxy module can maintain the exclusive permission of the cache line until the Evict Data Full request is issued;

[0239] The IO proxy module may need to reacquire the exclusive permission of the cache line multiple times before issuing the Evict Data Full request; for example, after the IO proxy module resets the process of obtaining the exclusive permission of the cache line once, before issuing the Evict Data Full request, it receives a query request for the cache line again, then the IO proxy module needs to reset the process of obtaining the exclusive permission of the cache line again; the above process may be repeated multiple times before the IO proxy module issues the Evict Data Full request, that is, the IO proxy module needs to reacquire the exclusive permission of the cache line multiple times.

[0240] That is to say, before issuing the Evict Data Full request, each time the IO agent module receives a query request for a cache line, the exclusive permission obtained by the IO agent module for the cache line will be invalidated. The IO agent module needs to reset the process of obtaining the exclusive permission for the cache line to regain the exclusive permission for the cache line until the Evict Data Full request is issued.

[0241] In a further optional implementation, after the IO agent module issues a complete write data request (such as an Evict Data Full request) corresponding to a cache line write operation, it may also obtain a query request from the Slave agent module regarding the cache line. The query request is triggered by other Master agent modules' access to the cache line, i.e., a query conflict occurs after Evict Data Full. Specifically, after the IO proxy module issues a complete write data request (e.g., an Evict Data Full request), before receiving the response information corresponding to the complete write data request (e.g., an Evict Data Full request) from the Slave proxy module, the IO proxy module may obtain a query request for the cache line sent by the Slave proxy module, wherein the time when the Slave proxy module issues the query request is earlier than the time when the complete write data request (e.g., an Evict Data Full request) reaches the Slave proxy module, but later than the time when the IO proxy module issues the complete write data request (e.g., an Evict Data Full request); in this case, the IO proxy module can issue a corresponding query response to release the exclusive right to the cache line, and the query response carries the complete write data of the cache line, so that the Slave proxy module can feedback the complete write data written by the IO proxy module in the cache line when responding to other Master proxy modules, thereby ensuring the data consistency of the computer system;

[0242] Since the time when the complete write data request (such as Evict Data Full request) arrives at the Slave agent module is later than the time when the Slave agent module sends the query request, the complete write data request (such as Evict Data Full request) is interrupted by the query. Therefore, when the IO agent module subsequently obtains the response information (such as TgtRsp information) of the Slave agent module in response to the query, the IO agent module can send a response information carrying a Cancel (clear) mark (such as SrcRsp information carrying a Cancel mark) to the Slave agent module to clear the cache line write operation corresponding to the complete write data request (such as Evict Data Full request). This is because the complete write data of the complete write data request (such as Evict Data Full request) is already carried in the query response returned to the Slave agent module, so there is no need to perform repeated data operations.

[0243] It should be noted that, for the query conflict after Evict Data Full, since the IO agent module has issued a complete write data request (such as an Evict Data Full request), the IO agent module has carried the complete write data required to be written by the complete write data request (such as an Evict Data Full request) in the query response. Therefore, when the IO agent module performs a query response in the form of a data response, it has indirectly completed the writing of the complete write data of the cache line. Therefore, the IO agent module does not need to re-acquire the exclusive permission of the cache line, and subsequently, based on the TgtRsp information of the Slave agent module, it can instruct the Slave agent module to clear the corresponding cache write operation.

[0244] For ease of understanding, Figure 5 After the IO proxy module of the example issues the first Evict Data Full request, it obtains the query request of the first cache line as an example. Figure 7 Another example diagram of the write request processing method provided by the embodiment of the present application is exemplarily shown. To simplify the description, Figure 7 and Figure 5 The relevant content can be referred to accordingly. Specifically, after the IO agent module issues the first Evict Data Full request, Figure 7 The example process includes the following steps.

[0245] Step S710: The first memory agent module sends a first query request corresponding to the first cache line to the IO agent module.

[0246] After the IO agent module issues the first Evict Data Full request and before the first Evict Data Full request reaches the first memory agent module, the first memory agent module receives the LdDataE request of the first cache line from other master agent modules. Thus, the other master agent modules issue the LdDataE request of the first cache line to the first memory agent module, triggering the first inquiry request, wherein the time when the LdDataE request of the first cache line issued by other master agent modules reaches the first memory agent module is later than the time when the IO agent module issues the first Evict Data Full request and earlier than the time when the first Evict Data Full request reaches the first memory agent module, and thus, since the IO agent module has not received the first EvictData Full request when receiving the LdDataE request of the first cache line from other master agent modules, the first memory agent module sends the first inquiry request corresponding to the first cache line to the IO agent module, that is, the time when the first memory agent module issues the first inquiry request is earlier than the time when the first Evict Data Full request reaches the first memory agent module, but later than the time when the IO agent module issues the first Evict Data Full request.

[0247] Step S711: The IO agent module sends a first query response to the first memory agent module, and carries the complete write data of the first cache line.

[0248] When the IO agent module issues the first Evict Data Full request, the data of the first cache line is marked as globally visible. Before the first memory agent module responds to the first Evict Data Full request, other Master agent modules initiate access requests to the first cache line, requesting to read or modify the data of the first cache line, causing the IO agent module to obtain the first query request of the first memory agent module for the first cache line. At this time, since the data of the first cache line is globally visible, the IO agent module (the IO agent module can be regarded as the IO request port of the IO module) must respond to the first query request, carry the complete write data of the first cache line in the first query response, and feed it back to the first memory agent module. In other words, at this time, the first query response is both a status response and a data response of the cache line. The IO agent module needs to indicate through the first query response that the exclusive permission of the first cache line has been released, and carry the complete write data of the first cache line to ensure the data consistency of the computer system.

[0249] Furthermore, since the IO agent module identifies that the first Evict Data Full request in the Victim phase is queried, it is necessary to subsequently notify the first memory agent module to mark the Victim transaction corresponding to the first Evict Data Full request as Cancel (clear).

[0250] Step S712: The first memory agent module sends TgtRsp information to other Master agent modules.

[0251] After obtaining the first query response sent by the IO proxy module, the first memory proxy module can confirm that the IO proxy module has released the exclusive permission of the first cache line, so that the first memory proxy module can grant the exclusive permission of the first cache line to other Master proxy modules and send corresponding TgtRsp information to other Master proxy modules; because the request initiated by other Master proxy modules to the first memory proxy module is an LdDataE request, and the first query response also carries the complete write data of the first cache line, the TgtRsp information sent by the first memory proxy module to other Master proxy modules also carries the complete write data of the first cache line, that is, the write data result of the first Evict Data Full request of the IO proxy module for the first cache line, thereby ensuring the sequentiality of IO write requests and further ensuring the data consistency of the computer system.

[0252] Step S713: Other Master agent modules send SrcRsp information to the first memory agent module.

[0253] Step S714: The first memory agent module feeds back first TgtRsp information to the IO agent module.

[0254] The first inquiry response is used as a data response. After completing the operations of other Master agent modules, the first memory agent module can feedback the first TgtRsp information corresponding to the first cache line to the IO agent module.

[0255] Step S715: The IO agent module sends the first Rsp information to the IO module.

[0256] Step S716: The IO agent module sends a first SrcRsp message to the first memory agent module, and the first SrcRsp message carries a Cancel mark to clear the cache line write operation corresponding to the first Evict Data Full request.

[0257] After the first Evict Data Full request is interrupted by the query, the IO agent module needs to send a SrcRsp message carrying a Cancel mark (i.e., the first SrcRsp message carrying a Cancel mark) to the first memory agent module after receiving the first TgtRsp message fed back by the first memory agent module, so as to notify the first memory agent module to cancel the original Victim operation of the first Evict Data Full request, thereby ensuring that the Victim transaction of the first Evict Data Full request is canceled after being interrupted by the query (because the complete write data of the first Evict Data Full request is already carried in the first query response returned to the first memory agent module), so as to avoid repeated or unnecessary data operations.

[0258] It should be noted that in the case of a query conflict after Evict Data Full, the above steps involve the management and matching of IO write requests, so the request queue (REQ queue) must have the function of matching the cache line address, especially when the Victim operation phase is interrupted by a query, the IO proxy module needs to match the corresponding Victim transaction in the REQ queue to correctly handle the query conflict. Furthermore, since Victim transactions require special processing when there is a query conflict, and the entire process from obtaining exclusive rights to confirming TgtRsp information needs to be tracked in the request queue, in order to meet high bandwidth requirements, the depth of the request queue (REQ queue) needs to be increased.

[0259] In an optional implementation, from the perspective of the Slave proxy module, after the Slave proxy module feeds back the exclusive permission response information corresponding to the exclusive permission request to the IO proxy module, and before obtaining the complete write data request corresponding to the cache line write operation sent by the IO proxy module, if the Slave proxy module obtains the access request for the cache line from other Master proxy modules, it sends a cache line query request to the IO proxy module; then, the Slave proxy module obtains the corresponding query response fed back by the IO proxy module, and processes the access requests from other Master proxy modules. At this time, there are two cases:

[0260] In case 1, if the IO proxy module has not issued a complete write data request when it obtains the query request, the query response indicates that the exclusive permission of the cache line has been released and does not carry data; at this time, the Slave proxy module processes the access requests of other Master proxy modules, such as granting the exclusive permission of the cache line to other Master proxy modules and feeding back the existing data, and the Slave proxy module will receive the exclusive permission request for the cache line corresponding to the cache line write operation resent by the IO proxy module, and then the Slave proxy module can re-grant the exclusive permission of the cache line to the IO proxy module, and re-feed back the exclusive permission response information to the IO proxy module;

[0261] In the second case, if the IO agent module has issued a complete write data request when it obtains the query request, the query response indicates that the exclusive permission of the cache line has been released and carries the complete write data corresponding to the cache line; at this time, the Slave agent module can process the access requests of other Master agent modules based on the complete write data corresponding to the cache line fed back by the query response, and feed back the response information for the query response to the IO agent module, and then receive the response information sent by the IO agent module carrying the clear mark to clear the cache line write operation corresponding to the complete write data request.

[0262] In a further optional implementation, the IO write requests obtained by the IO proxy module from the IO module may contain multiple IO write requests with conflicting addresses, i.e., multiple IO write requests with the same cache line corresponding to the cache write operation. Based on this, the IO proxy module needs to introduce a conflict detection mechanism for the cache line address. For the IO write requests obtained by the IO proxy module, the IO proxy module needs to perform address matching on the IO write requests to detect whether there is a preceding IO write request that writes to the same cache line that has not been processed. For example, in the request queue, the IO write requests stored in the request queue are address matched to detect whether there is a preceding IO write request that writes to the same cache line that has not been processed. If there are multiple IO write requests that write to the same cache line, i.e., the cache line addresses of the cache line write operations of the multiple IO write requests are the same, then it is considered that there are multiple IO write requests with conflicting addresses. Thus, for multiple IO write requests with conflicting addresses, the IO proxy module needs to mark the subsequent IO write requests as blocked in the order in which the IO write requests are obtained, and the subsequent IO write requests can only be processed until the preceding IO write request is processed, so that the multiple IO write requests with conflicting addresses can be processed in order. For example, for multiple IO write requests with conflicting addresses, the exclusive permission of the cache line corresponding to the preceding IO write request is obtained first, and when the issuance order of the preceding IO write request arrives, a complete write data request corresponding to the cache line write operation of the preceding IO write request is issued. After the complete write data request corresponding to the cache line write operation of the preceding IO write request is executed, the subsequent IO write request can obtain the exclusive permission of the corresponding cache line, and so on.

[0263] For ease of understanding, Figure 8 Another example diagram of a write request processing method provided by an embodiment of the present application is exemplarily shown. Figure 8 The relevant content of the example can be referred to the previous description, and the details will not be further expanded. Figure 8 In the example, IOWriteA10 and IO WriteA11 are IO write requests with address conflicts, that is, the cache line addresses of IO WriteA10 and IO WriteA11 are the same, and both cache line write operations are complete cache line write operations as an example.

[0264] like Figure 8 As shown, the IO proxy module obtains IO WriteA10, initiates a LdToXND (A10) request to the Slave proxy module, and applies for the exclusive permission of the cache line corresponding to IO WriteA10; the Slave proxy module returns TgtRsp (A10) information to confirm that the exclusive permission of the cache line corresponding to IO WriteA10 has been granted to the IO proxy module; after the IO proxy module confirms the exclusive permission of the cache line corresponding to IOWriteA10, the IO proxy module returns SrcRsp (A10) information to the Slave proxy module;

[0265] Before returning the SrcRsp(A10) information and issuing the Evict Data Full(A10) request, the IO proxy module obtains the IO WriteA11 sent by the IO module. The IO proxy module detects and finds that the cache line address of IO WriteA11 is the same as that of the previous IO WriteA10, and because the IO proxy module is still processing IO WriteA10, the IO proxy module triggers an address conflict of the IO write request and marks the subsequent IO WriteA11 as a blocked state (for example, marking IOWriteA11 as a blocked state in the request queue), so as to wait until the previous IO WriteA10 is completed before processing the subsequent IOWriteA11. That is, by blocking IO WriteA11, the IO proxy module can ensure the sequentiality of multiple IO write requests with address conflicts, avoid concurrent modifications to the same cache line, and prevent data inconsistency problems.

[0266] Thus, the IO agent module issues an Evict Data Full (A10) request corresponding to IO WriteA10, indicating that the data of the cache line can be written and is globally visible; after the Slave agent module confirms that the Evict Data Full (A10) request is executed, it feeds back TgtRsp (A10) information to the IO agent module, and then the IO agent module feeds back Rsp (A10) information to the IO module, and feeds back SrcRsp (A10) information to the Slave agent module, indicating that the write operation of IO WriteA10 has been completed;

[0267] After the preceding IO WriteA10 is processed, the IO proxy module unblocks the IO WriteA11 with the address conflict and issues a LdToXND(A11) request corresponding to IO WriteA11 to request exclusive access to the cache line. The subsequent processing of IOWriteA11 can be similarly described in the previous section and Figure 8 The information with the suffix (A11) will not be expanded here.

[0268] It can be seen that the IO proxy module can ensure the sequential execution of write operations on the same cache line through blocking and queuing. For multiple IO write requests with address conflicts, the subsequent IO write requests will be unblocked and obtain processing rights only after the previous IO write request is completed. Furthermore, in order to meet the sequential requirements of multiple IO write requests with address conflicts, the request queue of the proxy module needs to have sufficient depth to accommodate blocked IO write requests, thereby ensuring bandwidth utilization and maximizing performance.

[0269] As an optional implementation, when the IO module initiates multiple IO write requests, the IO proxy module can store the IO write requests in sequence in the request queue, and try to obtain exclusive permissions for the cache lines corresponding to the IO write requests; in the absence of address conflicts, the exclusive permissions for the cache lines of multiple IO write requests can be obtained out of order, that is, the exclusive permission request is to pre-occupy the cache line, and the actual data writing has not occurred at this time. Therefore, the exclusive permission requests for the cache lines corresponding to the multiple IO write requests can be sent out of order, as long as the IO proxy module executes the write operation of the cache line (that is, issues an Evict Data Full request) in the order of the IO write requests after obtaining the exclusive permission for the cache line. The embodiment of the present application allows out-of-order processing of exclusive permission requests to speed up the permission acquisition process, avoid delays caused by sequential waiting, and improve parallelism.

[0270] Furthermore, read operations of the same request stream can be processed out of order. Specifically, for multiple read operations of the same request stream, there is no strict dependency between them, because read operations do not change the data, so strict order is not required; that is, read operations do not modify the data in the cache line, so they do not cause data consistency problems. Therefore, allowing read operations to be processed out of order helps speed up data reading and increase the parallelism of the transmission network, thereby improving overall performance.

[0271] Furthermore, the cache line write operation corresponding to the Evict Data Full request is a Victim write operation, which evicts (Victim) the complete write data of the cache line and writes it to the memory, making it visible to other Master proxy modules. Therefore, the Evict Data Full requests corresponding to the Victim write operation need to be issued in sequence, that is, in the order in which the corresponding IO write requests are issued, especially for multiple consecutive IO write requests, to ensure that the order of the data finally written is consistent.

[0272] When the order of issuing IO write requests arrives, an Evict Data Full request needs to be issued accordingly. At this time, if the exclusive permission of the cache line is lost or the exclusive permission is not obtained, the associated subsequent IO write requests need to be blocked until the exclusive permission of the cache line of the current IO write request is successfully obtained; that is, when the order of issuing IO write requests arrives, if the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request is discarded or not obtained, the associated subsequent IO write requests need to be blocked until the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request is successfully obtained and the corresponding complete write data request is issued.

[0273] For example, when it is the turn of a certain IO write request to be issued, if the corresponding cache line fails to successfully obtain exclusive permission (for example, it is invalidated by the query operation, etc.), the Evict Data Full request corresponding to the IO write request cannot complete the Victim write operation; in order to ensure sequentiality, the IO proxy module needs to block the processing of subsequent IO write requests in the same request stream, that is, suspend the processing of subsequent IO write requests in the same request stream until the previous IO write request in the same request stream successfully obtains the exclusive permission of the corresponding cache line and completes the execution of the Evict Data Full request, and then resumes the processing of subsequent IO write requests in the same request stream. Among them, the IO write requests in the same request stream are related, and there are sequential requirements, such as the IO write requests in the same request stream are multiple consecutive IO write requests (for example, multiple IO write requests with consecutive addresses). In this way, the IO proxy module can use the blocking mechanism to ensure that when a certain Victim write operation is not completed, the subsequent Victim write operation for the same request stream will not overwrite the previous data, thereby avoiding data order confusion.

[0274] For example, take multiple consecutive IO write requests as an example. Fig. 9 Another exemplary diagram of the write request processing method provided by the embodiment of the present application is shown as an example. Fig. 9 The relevant content of the example can be referred to the previous description, and the details will not be further expanded.

[0275] like Fig. 9 As shown, the IO module sends multiple consecutive IO WriteA1, IO WriteA2, IOWriteA3, and IO WriteA4 to the IO proxy module, and each IO write request corresponds to writing a cache line, namely CLA1, CLA2, CLA3, and CLA4, wherein IO WriteA1 and A2 are for the first memory, and IO WriteA3 and A4 are for the second memory; the IO proxy module can store IO WriteA1, IO WriteA2, IO WriteA3, and IO WriteA4 in the request queue; the above multiple consecutive IO write requests belong to the same request stream, are related to each other, and data needs to be written in sequence;

[0276] Thus, the IO proxy module sends a LdDataE(A1) request corresponding to IO WriteA1 and a LdToXND(A2) request corresponding to IO WriteA2 to the first memory proxy module. Here, IO WriteA1 writes part of CLA1 and IO WriteA2 writes the whole of CLA2 as an example; the IO proxy module sends a LdToXND(A3) request corresponding to IO WriteA3 and a LdDataE(A4) request corresponding to IO WriteA4 to the second memory proxy module. Here, IO WriteA3 writes all of CLA3 and IOWriteA4 writes part of CLA4 as an example;

[0277] Accordingly, the first memory agent module feeds back TgtRsp(A1) information and TgtRsp(A2) information to the IO agent module to respond to the LdDataE(A1) request and the LdToXND(A2) request respectively, and then the IO agent module feeds back the corresponding SrcRsp(A1) information and SrcRsp(A2) information to the first memory agent module;

[0278] Similarly, the second memory agent module feeds back TgtRsp(A3) information and TgtRsp(A4) information to the IO agent module to respond to the LdToXND(A3) request and the LdDataE(A4) request respectively, and then the IO agent module feeds back the corresponding SrcRsp(A3) information and SrcRsp(A4) information to the second memory agent module;

[0279] In the operation of obtaining exclusive rights, the IO proxy module does not require a strict order. The IO proxy module can issue the above-mentioned exclusive right requests corresponding to IO WriteA1, IO WriteA2, IO WriteA3, and IO WriteA4 simultaneously or out of order; accordingly, the response information corresponding to the above-mentioned exclusive right requests, namely, TgtRsp(A1) information, TgtRsp(A2) information, TgtRsp(A3) information, and TgtRsp(A4) information can be returned to the IO proxy module in a disorderly order.

[0280] When the IO proxy module issues an Evict Data Full request, it needs to proceed in the order in which the IO write requests are issued, that is, the IO proxy module issues Evict Data Full requests in sequence, marks the data of the cache line as globally visible, and enters the Victim write phase; for example, the IO proxy module issues Evict Data Full requests (A1), Evict Data Full requests (A2), Evict Data Full requests (A3), and Evict Data Full requests (A4) in sequence; when a certain EvictData Full request needs to be issued, if the exclusive permission of the cache line corresponding to the Evict Data Full request is lost (for example, it is invalidated by query), the IO proxy module needs to suspend the processing of subsequent IO write requests in the request flow until the cache line corresponding to the Evict DataFull request regains the exclusive permission;

[0281] Furthermore, after each Evict Data Full request is executed, the IO agent module receives corresponding TgtRsp information, such as TgtRsp(A1) information, TgtRsp(A2) information, TgtRsp(A3) information, and TgtRsp(A4) information, and the IO agent module sends corresponding SrcRsp information, such as SrcRsp(A1) information, SrcRsp(A2) information, SrcRsp(A3) information, and SrcRsp(A4) information.

[0282] In a further example, to facilitate the description of the global order of the solution provided in the embodiment of the present application, Fig.10 Another exemplary diagram of the write request processing method provided in the embodiment of the present application is shown as an example. Fig.10 The relevant content of the example can be referred to the previous description, and the details will not be further expanded.

[0283] like Fig.10 As shown in FIG. 1 , the IO module sends IO WriteA1 and IO WriteA2 to the IO proxy module. For example, if both IOWriteA1 and IO WriteA2 write the entire cache line, although IO WriteA2 arrives at the IO proxy module later than IO WriteA1, because the exclusive right to obtain the cache line can be performed out of order, IO WriteA2 may complete the acquisition of the exclusive right to the cache line first. For example, Fig. 9In the example, although the LdToXND(A1) request corresponding to IO WriteA1 is issued before the LdToXND(A2) request corresponding to IO WriteA2, since IO WriteA1 is for the second memory and IO WriteA2 is for the first memory, the transmission network has a delay and disorder processing mechanism on the transmission path between the first memory agent module and the second memory agent module, which may cause IO WriteA2 to complete the acquisition of the exclusive right of the cache line earlier than IO WriteA1, that is, TgtRsp(A2) information is returned to the IO agent module earlier than TgtRsp(A1), and accordingly, the IO agent module sends SrcRsp(A2) information earlier than SrcRsp(A1);

[0284] After the IO proxy module obtains the exclusive permission of the cache lines of IO WriteA1 and IO WriteA2, it must issue the Evict Data Full (A1) request of IO WriteA1 and the Evict Data Full (A2) request of IO WriteA2 in sequence, that is, the Evict Data Full (A1) request is issued first, and the Evict Data Full (A2) request is issued later; that is, the Victim write operation must strictly follow the order to ensure the global consistency of the write data and flags. Although the global visibility of IOWriteA1 and IO WriteA2 may be out of order on the transmission path, the Evict Data Full (A1) request of IO WriteA1 and the Evict Data Full (A2) request of IOWriteA2 must be issued in sequence;

[0285] Due to the influence of transmission path delay, the Evict Data Full (A2) request is executed first, thereby completing the global visible state first, that is, the data written by the Evict Data Full (A2) request is visible earlier than the data written by the Evict Data Full (A1) request; at this time, other Master agent modules may detect that the Flag of IO WriteA2 has been updated, and try to read the data of IO WriteA1 associated with it, so that other Master agent modules initiate LdDataE (A1) requests to try to access the data of the cache line written by IO WriteA1, and then the second memory agent module can feedback the corresponding query (A1) request to the IO agent module; because the IO agent module has issued the Evict Data Full (A1) request at this time, the IO agent module will carry the complete write data of the cache line written by IO WriteA1 in the corresponding query response information, that is, the query RspToTgt_Data information; after the complete write data of the cache line written by IO WriteA1 is returned to the second memory agent module through the query response, the IO agent module no longer needs to execute the Evict Data Full(A1) requests the originally scheduled Victim write operation, so that after receiving the TgtRsp(A1) information fed back by the second memory agent module, the IO agent module can send a SrcRsp(A1) information carrying a Cancel mark, that is, SrcRsp_Cancel(A1) information to the second memory agent module to notify the second memory agent module to cancel the Victim write operation requested by Evict Data Full(A1), thereby avoiding repeated writing and optimizing the bandwidth of the computer system, while ensuring that the complete write data of the cache line written by IO WriteA1 is correctly obtained to ensure global consistency.

[0286] The embodiment of the present application introduces a cache consistency protocol at the protocol layer of the IO proxy module, and implements the order-preserving processing of IO write requests through a corresponding write request processing scheme, thereby transferring the order control of data writing from the transport layer to the protocol layer of the IO proxy module, reducing the requirements for the order-preserving design of the transmission network, so that the transmission network of a computer system such as a multi-core processor does not have to bear strict order control tasks, thereby releasing the design restrictions of the transmission network of the computer system, allowing the design of the transmission network to be more flexible and support more diverse transmission schemes. Therefore, the embodiment of the present application can improve the performance of the transmission network while ensuring the data consistency of the computer system.

[0287] In a further optional implementation, the embodiment of the present application further provides an IO proxy module, the IO proxy module connects the corresponding IO module to the transmission network of the computer system, and in the embodiment of the present application, the protocol layer of the IO proxy module is provided with a cache consistency protocol, so as to manage the IO write request of the corresponding IO module with a cache line based on the cache consistency protocol; wherein the IO proxy module is used to:

[0288] Get the IO write request of the IO module;

[0289] Determine cache line coverage integrity corresponding to the cache line write operation of the IO write request;

[0290] Based on the cache line coverage integrity of the cache line write operation, issuing an exclusive permission request for the cache line corresponding to the cache line write operation to at least obtain the exclusive permission for the cache line;

[0291] When the issuance order of the IO write request arrives, if the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained, then based on the complete write data corresponding to the cache line, a complete write data request corresponding to the cache line write operation is issued; the complete write data request is used to request to write the complete write data in the cache line, and the complete write data at least includes the write data of the cache line write operation.

[0292] The IO proxy module can be configured to execute the method steps performed by the IO proxy module in the write request processing method provided in the embodiment of the present application. The relevant content can be referred to the previous description and will not be expanded here.

[0293] In a further optional implementation, the embodiment of the present application further provides a slave proxy module, which connects the corresponding slave module to the transmission network of the computer system to manage access requests to the slave module; wherein the slave proxy module is used to:

[0294] Obtaining an exclusive permission request sent by the IO proxy module, wherein the exclusive permission request is at least used to request an exclusive permission for a cache line, and the exclusive permission request corresponds to a cache line coverage integrity of a cache line write operation corresponding to the cache line;

[0295] Feedback to the IO proxy module exclusive permission response information corresponding to the exclusive permission request;

[0296] Obtaining a complete write data request corresponding to the cache line write operation sent by an IO proxy module, wherein the complete write data request is used to request writing complete write data corresponding to the cache line into the cache line, and the complete write data at least includes write data of the cache line write operation;

[0297] The corresponding Slave module is scheduled to execute the complete write data request, and the response information of the complete write data request is fed back to the IO agent module.

[0298] The slave proxy module can be configured to execute the method steps performed by the slave proxy module in the write request processing method provided in the embodiment of the present application. The relevant content can be referred to the previous description and will not be expanded here.

[0299] In a further optional implementation, the embodiment of the present application further provides a computer system, including multiple functional modules, wherein the functional module that initiates the access request is a Master module, and the functional module that responds to the access request is a Slave module; for example, the architecture of the computer system can be combined with Figure 1 As shown; wherein, the Master module includes an IO module, and the IO module is connected to the transmission network of the computer system through the corresponding IO agent module; the Slave module is connected to the transmission network through the corresponding Slave agent module; the IO agent module is the IO agent module provided above in the embodiment of the present application, and the Slave agent module is the Slave agent module provided above in the embodiment of the present application.

[0300] The above describes multiple implementation schemes provided by the embodiments of the present application. The various optional methods introduced in each implementation scheme can be combined and cross-referenced with each other without conflict, thereby extending a variety of possible implementation schemes, which can all be considered as implementation schemes disclosed and open in the embodiments of the present application.

[0301] Although the embodiments of the present application are disclosed above, the present application is not limited thereto. Any person skilled in the art may make various changes and modifications without departing from the spirit and scope of the present application. Therefore, the scope of protection of the present application shall be subject to the scope defined by the claims.

Claims

1. A write request processing method, characterized in that: Applied to an IO proxy module, the IO proxy module manages IO write requests of a corresponding IO module with cache lines based on a cache consistency protocol; the method comprises: Get the IO write request of the IO module; Determine cache line coverage integrity corresponding to the cache line write operation of the IO write request; Based on the cache line coverage integrity of the cache line write operation, issuing an exclusive permission request for the cache line corresponding to the cache line write operation to at least obtain the exclusive permission for the cache line; When the issuance order of the IO write request arrives, if the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained, then based on the complete write data corresponding to the cache line, a complete write data request corresponding to the cache line write operation is issued; the complete write data request is used to request to write the complete write data in the cache line, and the complete write data at least includes the write data of the cache line write operation.

2. The method according to claim 1, characterized in that The cache line write operation is divided into a complete cache line write operation and a partial cache line write operation, wherein the cache line coverage integrity of the complete cache line write operation is a complete coverage of the cache line, and the cache line coverage integrity of the partial cache line write operation is a partial coverage of the cache line.

3. The method according to claim 2, characterized in that The issuing of an exclusive permission request for a cache line corresponding to the cache line write operation based on the cache line coverage integrity of the cache line write operation to at least obtain the exclusive permission for the cache line includes: If the cache line write operation is a complete cache line write operation, issuing a first exclusive permission request corresponding to the cache line, wherein the first exclusive permission request is used to request an exclusive permission for the cache line, and does not read existing data in the cache line; The complete write data corresponding to the cache line is: the write data of the write operation of the cache line.

4. The method according to claim 2, characterized in that: The issuing of an exclusive permission request for a cache line corresponding to the cache line write operation based on the cache line coverage integrity of the cache line write operation to at least obtain the exclusive permission for the cache line includes: If the cache line write operation is a partial cache line write operation, a second exclusive permission request corresponding to the cache line is issued, where the second exclusive permission request is used to request exclusive permission for the cache line and read existing data in the cache line.

5. The method according to claim 4, characterized in that After reading the existing data in the cache line, the method further includes: The write data of the cache line write operation is merged with the existing data of the cache line to obtain the merged data of the cache line as the complete write data corresponding to the cache line.

6. The method according to claim 5, characterized in that The step of merging the write data of the cache line write operation with the existing data of the cache line to obtain the merged data of the cache line as the complete write data corresponding to the cache line includes: According to the byte enable information of the cache line write operation, write the write data of the cache line write operation into part of the bytes of the cache line to overwrite part of the existing data corresponding to the part of the bytes, thereby forming merged data of the cache line as complete write data corresponding to the cache line; wherein the byte enable information indicates the part of the bytes; The method further comprises: The byte enable information is saved.

7. The method according to claim 2, characterized in that Determining the cache line coverage integrity corresponding to the cache line write operation of the IO write request includes: If the write data size corresponding to the write data of the cache line write operation is equal to the cache line size, determining that the cache line write operation is a complete cache line write operation; If the write data size corresponding to the write data of the cache line write operation is smaller than the cache line size, it is determined that the cache line write operation is a partial cache line write operation.

8. The method according to claim 7, characterized in that The IO write request has one or more cache line write operations, and the cache line write operations of the IO write request are determined based on a write address and a write data size of the IO write request.

9. The method according to claim 8, characterized in that When the write address of the IO write request is aligned with a cache line boundary, the cache line write operation of the IO write request includes any one of the following: If the write data size of the IO write request is equal to the cache line size, the IO write request has a complete cache line write operation; If the write data size of the IO write request is smaller than the cache line size, the IO write request has a partial cache line write operation; If the write data size of the IO write request is larger than the cache line size, and the write data size of the IO write request is an integer multiple of the cache line size, then the IO write request has a number of complete cache line write operations corresponding to the integer multiple; If the write data size of the IO write request is larger than the cache line size, and the write data size of the IO write request is not an integer multiple of the cache line size, the IO write request has at least one complete cache line write operation and one partial cache line write operation.

10. The method according to claim 1, characterized in that Also includes: After obtaining the exclusive permission of the cache line corresponding to the cache line write operation, marking the corresponding permission marking information for the IO write request; The method further comprises: When the issuing order of the IO write request arrives, checking whether the IO write request is marked with permission marking information; If the IO write request is marked with permission marking information, the step of issuing a complete write data request corresponding to the cache line write operation based on the complete write data corresponding to the cache line is entered; If the IO write request is not marked with permission marking information, the step of issuing a complete write data request corresponding to the cache line write operation based on the complete write data corresponding to the cache line is entered while waiting for the IO write request to obtain the exclusive permission.

11. The method according to claim 1, characterized in that: The order in which the IO write requests are issued corresponds to the order in which the IO write requests are obtained, and for multiple IO write requests without address conflicts, the multiple IO write requests support out-of-order acquisition of the exclusive right; the method further includes: The request information of the obtained IO write requests is stored in the request queue in sequence; wherein the storage order of the IO write requests in the request queue is the issuance order, and the request queue is also marked with permission tag information of the IO write requests, and the permission tag information of the IO write requests indicates that the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained.

12. The method according to any one of claims 1 to 11, characterized in that: Also includes: After obtaining the exclusive right of the cache line and before issuing a complete write data request corresponding to the cache line write operation, if a query request for the cache line is obtained, issuing a corresponding query response to release the exclusive right of the cache line; And, returning to the cache line coverage integrity based on the cache line write operation, issuing an exclusive permission request for the cache line corresponding to the cache line write operation, so as to at least obtain the exclusive permission for the cache line.

13. The method according to claim 12, characterized in that Also includes: When a query request for a cache line is obtained, the state of the cache line corresponding to the query request is set to an invalid state, and a check is made based on the address matching mechanism to see whether there is an uncompleted corresponding IO write request; If there is a corresponding IO write request that has not been completed, the state of the corresponding IO write request is set to an interrupt state; And, after regaining the exclusive permission of the cache line, restoring the state of the cache line to the exclusive state, and resuming the continued processing of the corresponding IO write request according to the address matching mechanism; The address matching mechanism is a request buffer for buffering IO write requests by the IO proxy module, and has the same address matching logic as the memory proxy queue of the memory proxy module.

14. The method according to any one of claims 1 to 11, characterized in that: Also includes: After issuing a complete write data request corresponding to the cache line write operation and before receiving the corresponding response information, if a query request for the cache line is obtained, a corresponding query response is issued to release the exclusive right of the cache line, and the query response carries the complete write data of the cache line; When the response information for the inquiry response is received, a response information carrying a clearing mark is sent to indicate clearing the cache line write operation corresponding to the complete write data request.

15. The method according to any one of claims 1 to 11, characterized in that: Also includes: If there are multiple IO write requests with address conflicts, subsequent IO write requests are marked as blocked in the order in which the IO write requests are obtained until the preceding IO write request is processed, so that the multiple IO write requests with address conflicts are processed in order; wherein, the multiple IO write requests with address conflicts are multiple IO write requests with the same cache line address.

16. The method according to any one of claims 1 to 11, characterized in that: Also includes: When the issuance order of the IO write request arrives, if the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request is discarded or not obtained, the subsequent IO write requests associated with the IO write request are blocked until the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request is successfully obtained and the complete write data request is issued.

17. A write request processing method, characterized in that: Applied to the Slave agent module, the method includes: Obtaining an exclusive permission request sent by the IO proxy module, wherein the exclusive permission request is at least used to request an exclusive permission for a cache line, and the exclusive permission request corresponds to a cache line coverage integrity of a cache line write operation corresponding to the cache line; Feedback to the IO proxy module exclusive permission response information corresponding to the exclusive permission request; Obtaining a complete write data request corresponding to the cache line write operation sent by an IO proxy module, wherein the complete write data request is used to request writing complete write data corresponding to the cache line into the cache line, and the complete write data at least includes write data of the cache line write operation; The corresponding Slave module is scheduled to execute the complete write data request, and the response information of the complete write data request is fed back to the IO agent module.

18. The method according to claim 17, characterized in that The obtaining of an exclusive permission request sent by the IO proxy module, wherein the exclusive permission request is at least used to request an exclusive permission for a cache line, and the exclusive permission request corresponds to a cache line coverage integrity of a cache line write operation corresponding to the cache line, including: Obtaining a first exclusive permission request sent by the IO proxy module, wherein the first exclusive permission request is used to request exclusive permission for the cache line without reading existing data in the cache line, and the first exclusive permission request corresponds to the cache line write operation being a complete cache line write operation; The exclusive permission response information corresponding to the exclusive permission request fed back to the IO proxy module includes: After the exclusive permission of the cache line is granted to the IO proxy module, exclusive permission response information corresponding to the first exclusive permission request is fed back to the IO proxy module to inform the IO proxy module that the exclusive permission of the cache line has been successfully obtained, and the exclusive permission response information does not carry the existing data of the cache line; The complete write data corresponding to the cache line is: the write data of the write operation of the cache line.

19. The method according to claim 17, characterized in that The obtaining of an exclusive permission request sent by the IO proxy module, wherein the exclusive permission request is at least used to request an exclusive permission for a cache line, and the exclusive permission request corresponds to a cache line coverage integrity of a cache line write operation corresponding to the cache line, including: Obtaining a second exclusive permission request sent by the IO proxy module, where the second exclusive permission request is used to request exclusive permission for the cache line and read existing data in the cache line, and the second exclusive permission request corresponds to the cache line write operation being a partial cache line write operation; The exclusive permission response information corresponding to the exclusive permission request fed back to the IO proxy module includes: After granting the exclusive permission of the cache line to the IO proxy module, feeding back exclusive permission response information corresponding to the second exclusive permission request to the IO proxy module, wherein the exclusive permission response information carries the existing data of the cache line; The complete write data corresponding to the cache line is: merged data after the write data of the cache line write operation is merged with the existing data of the cache line.

20. The method according to any one of claims 17 to 19, characterized in that: Also includes: After feeding back the exclusive permission response information corresponding to the exclusive permission request to the IO proxy module and before obtaining the complete write data request corresponding to the cache line write operation sent by the IO proxy module, if an access request to the cache line from other Master proxy modules is obtained, a query request for the cache line is sent to the IO proxy module; Obtaining a corresponding inquiry response fed back by the IO proxy module, wherein if the IO proxy module has not issued the complete write data request when obtaining the inquiry request, the inquiry response indicates that the exclusive right of the cache line has been released and does not carry data; Processing the access request of the other Master proxy modules; And, receiving the exclusive permission request for the cache line corresponding to the cache line write operation resent by the IO proxy module, re-granting the exclusive permission of the cache line to the IO proxy module, and re-feeding back the exclusive permission response information to the IO proxy module.

21. The method according to any one of claims 17 to 19, characterized in that: Also includes: After the IO proxy module issues a complete write data request corresponding to the cache line write operation and before obtaining the complete write data request corresponding to the cache line write operation sent by the IO proxy module, if an access request to the cache line from other Master proxy modules is obtained, a query request for the cache line is sent to the IO proxy module; Obtaining a corresponding inquiry response fed back by the IO proxy module, wherein if the IO proxy module has issued the complete write data request when obtaining the inquiry request, the inquiry response indicates that the exclusive right of the cache line has been released and carries the complete write data corresponding to the cache line; Based on the complete write data corresponding to the cache line, process the access request of the other Master proxy module; And, after feeding back the response information for the inquiry response to the IO proxy module, receiving the response information carrying the clearing mark sent by the IO proxy module to clear the cache line write operation corresponding to the complete write data request.

22. An IO proxy module, characterized in that: The IO proxy module connects the corresponding IO module to the transmission network of the computer system, and the protocol layer of the IO proxy module is provided with a cache consistency protocol, so as to manage the IO write request of the corresponding IO module with a cache line based on the cache consistency protocol; wherein, the IO proxy module is used to: Get the IO write request of the IO module; Determine cache line coverage integrity corresponding to the cache line write operation of the IO write request; Based on the cache line coverage integrity of the cache line write operation, issuing an exclusive permission request for the cache line corresponding to the cache line write operation to at least obtain the exclusive permission for the cache line; When the issuance order of the IO write request arrives, if the exclusive permission of the cache line corresponding to the cache line write operation of the IO write request has been obtained, then based on the complete write data corresponding to the cache line, a complete write data request corresponding to the cache line write operation is issued; the complete write data request is used to request to write the complete write data in the cache line, and the complete write data at least includes the write data of the cache line write operation.

23. The IO proxy module according to claim 22, characterized in that: The IO proxy module is used to issue an exclusive permission request for a cache line corresponding to the cache line write operation based on the cache line coverage integrity of the cache line write operation to at least obtain the exclusive permission for the cache line, including: If the cache line write operation is a complete cache line write operation, issuing a first exclusive permission request corresponding to the cache line, wherein the first exclusive permission request is used to request an exclusive permission for the cache line, and does not read existing data in the cache line; If the cache line write operation is a partial cache line write operation, issuing a second exclusive permission request corresponding to the cache line, wherein the second exclusive permission request is used to request an exclusive permission for the cache line and read existing data of the cache line; Among them, the cache line write operation is divided into a complete cache line write operation and a partial cache line write operation. The cache line coverage integrity of the complete cache line write operation is a complete coverage of the cache line, and the cache line coverage integrity of the partial cache line write operation is a partial coverage of the cache line.

24. The IO proxy module according to claim 22 or 23, characterized in that: The IO agent module is also used for: After obtaining the exclusive right of the cache line and before issuing a complete write data request corresponding to the cache line write operation, if a query request for the cache line is obtained, issuing a corresponding query response to release the exclusive right of the cache line; And, returning to the cache line coverage integrity based on the cache line write operation, issuing an exclusive permission request for the cache line corresponding to the cache line write operation, so as to at least obtain the exclusive permission for the cache line; and / or, After issuing a complete write data request corresponding to the cache line write operation and before receiving the corresponding response information, if a query request for the cache line is obtained, a corresponding query response is issued to release the exclusive right of the cache line, and the query response carries the complete write data of the cache line; And, when receiving the response information for the inquiry response, sending the response information carrying the clearing mark to indicate clearing the cache line write operation corresponding to the complete write data request.

25. A Slave agent module, characterized in that: The Slave proxy module connects the corresponding Slave module to the transmission network of the computer system to manage access requests to the Slave module; wherein the Slave proxy module is used to: Obtaining an exclusive permission request sent by the IO proxy module, wherein the exclusive permission request is at least used to request exclusive permission for a cache line, and the exclusive permission request corresponds to a cache line coverage integrity of a cache line write operation corresponding to the cache line; Feedback to the IO proxy module exclusive permission response information corresponding to the exclusive permission request; Obtaining a complete write data request corresponding to the cache line write operation sent by an IO proxy module, wherein the complete write data request is used to request writing complete write data corresponding to the cache line into the cache line, and the complete write data at least includes write data of the cache line write operation; The corresponding Slave module is scheduled to execute the complete write data request, and the response information of the complete write data request is fed back to the IO agent module.

26. The Slave agent module according to claim 25, characterized in that: The Slave agent module is also used to: After feeding back the exclusive permission response information corresponding to the exclusive permission request to the IO proxy module and before obtaining the complete write data request corresponding to the cache line write operation sent by the IO proxy module, if an access request to the cache line from other Master proxy modules is obtained, a query request for the cache line is sent to the IO proxy module; Obtaining a corresponding inquiry response fed back by the IO proxy module, wherein if the IO proxy module has not issued the complete write data request when obtaining the inquiry request, the inquiry response indicates that the exclusive right of the cache line has been released and does not carry data; Processing the access request of the other Master proxy modules; And, receiving the exclusive permission request for the cache line corresponding to the cache line write operation resent by the IO proxy module, re-granting the exclusive permission of the cache line to the IO proxy module, and re-feeding back the exclusive permission response information to the IO proxy module.

27. The Slave agent module according to claim 25, characterized in that: The Slave agent module is also used to: After the IO proxy module issues a complete write data request corresponding to the cache line write operation and before obtaining the complete write data request corresponding to the cache line write operation sent by the IO proxy module, if an access request to the cache line from other Master proxy modules is obtained, a query request for the cache line is sent to the IO proxy module; Obtaining a corresponding inquiry response fed back by the IO proxy module, wherein if the IO proxy module has issued the complete write data request when obtaining the inquiry request, the inquiry response indicates that the exclusive right of the cache line has been released and carries the complete write data corresponding to the cache line; Based on the complete write data corresponding to the cache line, process the access request of the other Master proxy module; And, after feeding back the response information for the inquiry response to the IO proxy module, receiving the response information carrying the clearing mark sent by the IO proxy module to clear the cache line write operation corresponding to the complete write data request.

28. A computer system, characterized in that: It comprises a plurality of functional modules, wherein the functional module that initiates an access request is a Master module, and the functional module that responds to the access request is a Slave module; the Master module comprises an IO module, and the IO module is connected to a transmission network of a computer system through a corresponding IO proxy module; the Slave module is connected to the transmission network through a corresponding Slave proxy module; wherein the IO proxy module is the IO proxy module as described in any one of claims 22 to 24, and the Slave proxy module is the Slave proxy module as described in any one of claims 25 to 27.

Citation Information

Cited By

  • Write request processing method, IO proxy module, slave proxy module, and computer system

    EP4773579A1

  • Write request processing method, IO proxy module, slave proxy module, and computer system

    WO2026102876A1