A data transmission method, a data forwarding module and a data transmission system

By setting strict state transition conditions for the storage unit state machine, the problem of interrupt request loss in many-to-one data transmission in the chip system is solved, achieving efficient and reliable data transmission and ensuring system stability and efficient resource recovery.

CN122489464APending Publication Date: 2026-07-31PHYTIUM TECH CO LTD +1
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
PHYTIUM TECH CO LTD
Filing Date
2026-06-18
Publication Date
2026-07-31

AI Technical Summary

Technical Problem

In chip systems, in many-to-one data transmission scenarios, there is a problem of interrupt request loss, which leads to system interrupt loss, device response timeout, and data transmission errors, seriously threatening system reliability.

Method used

By setting stricter sent state transition conditions for each storage cell's state machine, the cell is switched to the sent state only after both the write address channel and the write data channel have completed their handshakes. Upon receiving a write response message, the matching identifier reclaims the storage cell to the idle state, preventing incomplete requests from being overwritten.

Benefits of technology

Without sacrificing continuous forwarding capabilities and batch resource reclamation efficiency, the reliability of data transmission is improved, request loss is avoided, and the stability and efficiency of the system are ensured.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN122489464A_ABST
    Figure CN122489464A_ABST
Patent Text Reader

Abstract

This specification provides a data transmission method in its embodiments. This method sets stricter transition conditions for the state machine of each storage unit, switching from a state indicating stored but not yet transmitted to a state indicating transmitted successfully only after the storage unit has completed handshakes with both the write address channel and the write data channel of the receiving module. Simultaneously, upon receiving a write response message, storage units whose first identifier matches the second identifier carried in the write response message and which are indeed in a transmitted successfully state are reclaimed as idle. This avoids the problem of requests in storage units that have not completed target request transmission being overwritten by new requests without sacrificing continuous forwarding capability and batch resource reclamation efficiency. It also solves the problem of insufficient forwarding reliability in scenarios where multiple target requests carry the same identifier and the system supports outstanding incomplete transactions.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This specification relates to the field of computer technology, specifically to on-chip communication technology in the field of computer technology, and more specifically to a data transmission method, a data forwarding module, and a data transmission system. Background Technology

[0002] In chip systems, multiple functional modules often need to converge and send data to the same downstream receiving module. This many-to-one data transmission scenario is very common. For example, requests or messages generated by processor cores, DMA controllers, peripheral interfaces, etc., may be forwarded to the target processing unit through a shared conversion bridge or arbitration structure. To meet high-performance requirements, such data forwarding modules usually need to have outstanding (incomplete transaction) processing capabilities, that is, they can continuously receive and send new requests downstream while the previous write transaction has not yet been completed, thereby handling high-concurrency request streams.

[0003] Taking the transmission of Message Signaled Interrupts (MSI) as an example, multiple interrupt senders need to send their respective interrupts to the same Interrupt Translation Service (ITS) module. If an interrupt request is lost during transmission, the receiving device may fail to receive the expected interrupt, potentially leading to system interrupt loss, device response timeouts, data transmission errors, or even complete system malfunction, seriously threatening system reliability. Summary of the Invention

[0004] This specification provides a data transmission method, a data forwarding module, and a data transmission system to address the problem of insufficient reliability in forwarding requests by the data forwarding module.

[0005] To achieve the above technical objectives, the embodiments of this specification provide the following technical solutions: Firstly, one embodiment of this specification provides a data transmission method executed by a data forwarding module, the data forwarding module being connected to a receiving module via a many-to-one conversion bridge; the data forwarding module includes multiple sets of storage units for caching requests, each set of storage units corresponding to a sender, and each storage unit in each set of storage units corresponding to a state machine, the state machine including a first state, a second state, and a third state; the data transmission method includes: When the first storage unit completes the address channel handshake and data channel handshake with the receiving module, the state of the first storage unit is switched from the first state to the second state; After receiving the write response message returned by the receiving module through the write response channel, the state of at least one second storage unit is switched from the second state to the third state; the second storage unit includes a storage unit whose first identifier matches the second identifier carried in the write response message; the first identifier is the write address identifier of the target request stored in the second storage unit; the second identifier is the write response identifier carried in the write response message.

[0006] Optionally, the first state indicates that the storage unit stores the target request, and the data forwarding module has completed a write response channel handshake with the sender of the target request; the second state indicates that the target request in the storage unit has been sent; and the third state indicates that the storage unit is idle.

[0007] Secondly, one embodiment of this specification provides a data forwarding module, which is connected to a receiving module via a many-to-one conversion bridge; the data forwarding module includes: a plurality of storage unit sets for caching requests, each storage unit set corresponding to a sender, and each storage unit in the storage unit set corresponding to a state machine, the state machine including a first state, a second state and a third state; The data forwarding module is configured as follows: When the first storage unit completes the address channel handshake and data channel handshake with the receiving module, the state of the first storage unit is switched from the first state to the second state; After receiving the write response message returned by the receiving module through the write response channel, the state of at least one second storage unit is switched from the second state to the third state; the second storage unit includes a storage unit whose first identifier matches the second identifier carried in the write response message; the first identifier is the write address identifier of the target request stored in the second storage unit; the second identifier is the write response identifier carried in the write response message.

[0008] Optionally, the first state indicates that the storage unit stores the target request, and the data forwarding module has completed a write response channel handshake with the sender of the target request; the second state indicates that the target request in the storage unit has been sent; and the third state indicates that the storage unit is idle.

[0009] Thirdly, one embodiment of this specification provides a data transmission system, comprising: multiple transmitting modules, a data forwarding module, a many-to-one conversion bridge, and a receiving module; wherein, The multiple sending modules are multiple senders of the target request; The data forwarding module is connected to the receiving module through the many-to-one conversion bridge; The data forwarding module is configured to forward the target request to the receiving module according to any of the data transmission methods described above.

[0010] Fourthly, one embodiment of this specification also provides a computing device, including a memory, a processor, and a computer program stored in the memory and executable on the processor, wherein the processor executes the computer program to implement the data transmission method described above.

[0011] Fifthly, one embodiment of this specification also provides a computer-readable storage medium storing a computer program that, when executed by a processor, implements the data transmission method described above.

[0012] Sixthly, embodiments of this specification provide a computer program product or computer program, the computer program product including a computer program stored in a computer-readable storage medium; a processor of a computer device reads the computer program from the computer-readable storage medium, and when the processor executes the computer program, it implements the steps of the data transmission method described above. Optionally, the computer program may be stored in a computer-readable storage medium or in the cloud; the processor of the computer device reads the computer program from the readable storage medium or in the cloud.

[0013] As can be seen from the above technical solutions, the data transmission method provided in this specification sets stricter transition conditions for the state machine of each storage unit to the sent state (second state). Only after the storage unit has completed handshakes with both the write address channel and the write data channel of the receiving module, does it switch from the state representing stored but not sent (first state) to the state representing sent successfully (second state). Simultaneously, upon receiving a write response message, storage units whose first identifier matches the second identifier carried in the write response message and which are indeed in the sent successfully state are reclaimed as idle (i.e., the state switches to the third state). This avoids the problem of requests in storage units that have not completed sending of target requests being overwritten by new requests without sacrificing continuous forwarding capability and batch resource reclamation efficiency. It also solves the problem of insufficient forwarding reliability in scenarios where multiple target requests carry the same identifier and the system supports out-of-order transmission of incomplete transactions. Attached Figure Description

[0014] To more clearly illustrate the technical solutions in the embodiments or prior art of this specification, the drawings used in the description of the embodiments or prior art will be briefly introduced below. Obviously, the drawings described below are only embodiments of this specification. For those skilled in the art, other drawings can be obtained based on the provided drawings without creative effort.

[0015] Figure 1 This is a schematic diagram of a data transmission system provided for the implementation of this specification.

[0016] Figure 2 This is a flowchart illustrating a data transmission method provided for an embodiment of this specification.

[0017] Figure 3 This is a schematic diagram of a state machine provided for an embodiment of this specification. Detailed Implementation

[0018] Unless otherwise defined, the technical or scientific terms used in the embodiments of this specification shall have the ordinary meaning understood by one of ordinary skill in the art to which this specification pertains. The terms "first," "second," and similar terms used in the embodiments of this specification do not indicate any order, quantity, or importance, but are merely used to avoid confusion of constituent elements.

[0019] Unless the context otherwise requires, throughout this specification, "a plurality of" means "at least two," and "including" is interpreted as open-ended or encompassing, that is, "including, but not limited to." In the description of this specification, terms such as "one embodiment," "some embodiments," "exemplary embodiment," "example," "specific example," or "some examples" are intended to indicate that a particular feature, structure, material, or characteristic associated with that embodiment or example is included in at least one embodiment or example of this specification. The illustrative representations of the above terms do not necessarily refer to the same embodiment or example.

[0020] The technical solutions in the embodiments of this specification will be clearly and completely described below with reference to the accompanying drawings. Obviously, the described embodiments are only some embodiments of this specification, and not all embodiments. Based on the embodiments in this specification, all other embodiments obtained by those skilled in the art without creative effort are within the scope of protection of this specification.

[0021] Take, for example, a scenario where a message signal interruption request is forwarded to the receiving module via a many-to-one conversion bridge. To achieve continuous receiving and sending capabilities, a buffer containing multiple storage units can be used in conjunction with a polling arbitrator for scheduling. Each storage unit uses an independent state machine to record its lifecycle, with typical states including idle, stored but not sent, and sent. When multiple storage units are in the stored but not sent state, the polling arbitrator selects one storage unit and authorizes it to initiate write address and write data transmissions downstream. After the downstream returns a write response message, the corresponding storage unit is matched and released based on the identifier in the write response message. In this way, multiple requests can be cached to offset the difference in processing speed between upstream and downstream, improving forwarding efficiency.

[0022] However, research has revealed that when multiple senders send requests using the same write address identifier, and these requests are aggregated through a many-to-one conversion bridge and sent to the same receiving module, the above scheme may result in the request being overwritten before it is sent. This problem may cause the receiving device to fail to receive the expected interrupt, potentially leading to system interrupt loss, device response timeout, data transmission errors, or even abnormal system function, seriously threatening system reliability.

[0023] Analysis revealed that the problem likely stems from a time lag between the readiness signals for the write address and write data channels returned by the receiving module and the write response signal, which arrive at the data forwarding module after being routed through a many-to-one conversion bridge. This can lead to situations where the write response signal is received first, followed by the readiness signals for the write address and write data channels a considerable time later. To accelerate scheduling and resource reclamation, related technologies prematurely mark authorized storage units as sent after only one-sided handshakes for the write address or write data channel, allowing the polling arbitrator to select the next request. While this shortens the arbitration waiting interval, it results in storage units that haven't completed both handshakes and whose data hasn't actually been sent being marked as sent. When a write response message arrives early and its identifier matches multiple storage units, those still waiting to be sent are released and reassigned to new requests, causing old data to be overwritten and lost. For example, in a system where multiple PCIe (Peripheral Component Interconnect Express) components forward MSI requests to the interrupt translation service module, the write response signal returned from the downstream may have a significant time difference with the address ready and data ready signals that have not been sent due to the scheduling of the many-to-one translation bridge. If the state transition conditions are not strict enough, request loss may occur when multiple requests share the same identifier.

[0024] In summary, the reasons for the above problems may include several aspects: First, the entry conditions representing the sent state in the state machine are designed to be relatively lenient, not requiring both the address channel and the data channel to complete a handshake, allowing storage units to enter a releaseable state before the data is actually sent. Second, in outstanding scenarios where multiple target requests with the same identifier are transmitted in-order, there will be a time difference between the ready signals of the write address channel and write data channel returned by the receiving module and the write response signal arriving at the data forwarding module after being scheduled by the many-to-one conversion bridge. Third, upon receiving the write response message, in order to improve request forwarding efficiency, all storage units with some or all matching identifiers in the sent state are converted to the idle state, which may lead to the data in storage units that have entered the sent state prematurely being overwritten. The combination of these factors leads to the aforementioned problems.

[0025] To address the aforementioned issues, this specification provides a data transmission method. This method sets stricter transition conditions for the delivered state (second state) of each storage unit's state machine. Only after the storage unit has completed handshakes with both the write address channel and the write data channel of the receiving module will it switch from the state representing stored but not sent (first state) to the state representing sent successfully (second state). Simultaneously, upon receiving a write response message, storage units whose first identifier matches the second identifier carried in the write response message and which are indeed in the sent successfully state are reclaimed as idle (i.e., the state switches to the third state). This avoids the problem of requests in storage units that have not completed target request transmission being overwritten by new requests without sacrificing continuous forwarding capability and batch resource reclamation efficiency. It also solves the problem of insufficient forwarding reliability in scenarios where multiple target requests carry the same identifier and the system supports outstanding incomplete transactions.

[0026] The data transmission method provided in the embodiments of this specification will now be described by way of example with reference to the accompanying drawings.

[0027] refer to Figure 1 , Figure 1 A schematic diagram of the architecture of a data transmission system 100 provided in an embodiment of this specification is shown. The system may include multiple transmitting modules 10, a data forwarding module 20, a many-to-one conversion bridge 30, and a receiving module 40.

[0028] Multiple sending modules 10 act as senders of target requests, capable of generating and sending target requests. The data forwarding module 20 is configured with multiple storage unit sets 21, each corresponding to one sending module 10. Each storage unit set 21 contains multiple storage units 22, which are used to cache target requests received from the corresponding sender. Each storage unit 22 is assigned a state machine to manage and control its state. The state machine can define at least the idle state, the request-stored-but-not-sent state, and the request-sent-complete state of the storage unit 22. The depth of each storage unit set 21 (i.e., the number of storage units 22 in the set) determines the maximum number of upstream requests that can be received without receiving a write response message from the downstream, thus determining the outstanding capability. When the depth of storage unit set 21 is 16, it means that it contains 16 storage units 22. Therefore, when no write response message is received from the downstream, it can receive up to 16 requests from the upstream and continue to send them downstream. At this time, the outstanding capability of storage unit set 21 is 16.

[0029] The data forwarding module 20 is connected to the receiving module 40 via a many-to-one conversion bridge 30. The many-to-one conversion bridge 30 is used to convert multiple request channels from the data forwarding module 20 into a single request channel and forward the request to the receiving module 40 connected to it. The receiving module 40 is used to receive and process the target request sent by the data forwarding module 20 through the many-to-one conversion bridge 30, and return a write response message through the write response channel after processing.

[0030] In the signal and data flow, the sending module 10 interacts with the data forwarding module 20 through the write address channel, write data channel, and write response channel. When the sending module 10 needs to send a target request, it provides address information and data information on the write address channel and write data channel, respectively. When the data forwarding module 20 is ready to receive the request, it completes the handshake between the write address channel and the write data channel by returning a corresponding handshake signal to the sending module 10, thereby storing the target request in a certain storage unit 22 within its internal storage. After the data forwarding module 20 completes the storage within its internal storage, it returns a write response to the sending module 10 through the write response channel to complete the transaction interaction on the sending side.

[0031] The data forwarding module 20 communicates with the many-to-one conversion bridge 30, and the many-to-one conversion bridge 30 communicates with the receiving module 40, using their respective address channels, data channels, and write response channels. The data forwarding module 20 sends the stored target request to the many-to-one conversion bridge 30 via the address and data channels. After scheduling and conversion by the bridge, the request is sent to the receiving module 40 via a single channel. Upon successfully processing the request, the receiving module 40 generates a write response message carrying a write response identifier and returns it to the data forwarding module 20 via the many-to-one conversion bridge 30 through the write response channel.

[0032] The aforementioned modules, such as the sending module 10 and the data forwarding module 20, and the data forwarding module 20 and the receiving module 40 via the many-to-one conversion bridge 30, can communicate according to a unified on-chip bus protocol (which could be, for example, an AXI Coherency Extensions (ACE) protocol or its simplified version (ACE-Lite)). This protocol defines multiple independent channels, including write address channels, write data channels, and write response channels, and supports concurrent transmission of multiple transactions with the same or different write address identifiers. In such an implementation environment, the data forwarding module 20 is responsible for buffering, scheduling, and forwarding target requests between multiple senders and a single receiver, achieving efficient data transmission from multiple sources to one.

[0033] One embodiment of this specification provides a data forwarding method, which can be implemented by, for example... Figure 1 The data forwarding module 20 shown is executed, and the many-to-one conversion bridge 30 of the data forwarding module 20 is connected to the receiving module 40. The data forwarding module 20 includes multiple storage unit sets 21 for caching requests. Each storage unit set 21 corresponds to a sender, and each storage unit 22 in the storage unit set 21 corresponds to a state machine. The state machine includes a first state, a second state, and a third state. The first state indicates that the storage unit 22 stores a target request, and the data forwarding module 20 has completed a write response channel handshake with the sender of the target request. The second state indicates that the target request in the storage unit 22 has been sent. The third state indicates that the storage unit 22 is idle. Figure 2 As shown, the data transmission method includes: S201: When the first storage unit completes the address channel handshake and data channel handshake with the receiving module 40, the state of the first storage unit is switched from the first state to the second state; S202: After receiving the write response message returned by the receiving module 40 through the write response channel, the state of at least one second storage unit is switched from the second state to the third state; the second storage unit includes a storage unit 22 whose first identifier matches the second identifier carried in the write response message; the first identifier is the write address identifier of the target request stored in the second storage unit; the second identifier is the write response identifier carried in the write response message.

[0034] In this embodiment, the data forwarding module 20 can refer to a hardware unit or a combination of hardware units and software modules configured to receive requests from one or more senders and forward the requests to the receiving module 40 based on preset logic. For example, the data forwarding module 20 may include, but is not limited to, application-specific integrated circuits (ASICs) with buffers and arbitration logic, field-programmable gate arrays (FPGAs), etc., which are not limited in this specification.

[0035] Storage unit 22 (or slot) can refer to a physical or logical storage structure used to store requests to be forwarded.

[0036] A Write Address Channel (AW channel) can refer to a channel in an advanced extensible interface protocol used to transmit address and control information (such as transfer type and write address identifier) ​​for write operations.

[0037] A write data channel (W channel) can refer to a channel in an advanced extensible interface protocol (such as the ACE protocol or ACE-Lite protocol) used to transmit the actual data to be written.

[0038] A Write Response Channel (B Channel) can be a channel in an advanced extensible interface protocol that transmits a write response message returned by a downstream device after completing a write operation.

[0039] A Write Address ID (AWID) can be used to identify a write transaction request and can be assigned by the master device.

[0040] The Write Response ID (BID) is an identifier carried by the slave device when returning a write response message. It can be used to match the previously requested AWID to determine which write transaction the write response message corresponds to.

[0041] Write Data ID (WID) can be an identifier used to associate data packets on the W channel with address packets on the AW channel.

[0042] Handshake, in this context, refers to the process by which two communicating parties confirm the completion of information transmission by jointly confirming the validity of specific signals (such as both the valid and ready signals being high). For example, handshake can refer to the valid-ready handshake mechanism on the write address channel, write data channel, or write response channel in an advanced extensible interface protocol, or it can refer to the request-response based signal interaction mechanism in other point-to-point bus protocols.

[0043] A state machine can refer to a computational model or specific circuit implementation used to track and control the operational stage of its associated storage unit 22 and drive state switching based on preset adjustments.

[0044] In this specification, the state machine may include a first state, a second state, and a third state. In some cases, the state machine may also include a fourth state. The first state may be called the SEND state (request stored but not sent), the second state may be called the SENT state (delivered), the third state may be called the IDLE state (idle), and the fourth state may be called the RESP state (handshake completed).

[0045] The first state indicates that the storage unit 22 stores the target request, and the data forwarding module 20 has completed a write response channel handshake with the sender of the target request. In other words, the first state can represent the stage where the target request cached in the storage unit 22 is ready to be sent to the receiving module 40, and is waiting for the arbitrator to select it for the sending operation.

[0046] The second state indicates that the target request in the storage unit 22 has been successfully sent. That is, the second state can indicate that the target request cached in the storage unit 22 has been selected and successfully sent to the receiving module 40.

[0047] The third state indicates that the storage unit 22 is idle, that is, it does not cache valid target requests and can be allocated to store newly arrived target requests.

[0048] The fourth state indicates that the storage unit 22 has completed the handshake with the sender of the target request for the write address channel and the write data channel, and has stored the target request. That is, the fourth state can indicate that the storage unit 22 has not completed the handshake with the upstream AW channel and W channel, but has not performed the B channel handshake.

[0049] refer to Figure 3 , Figure 3A state machine diagram is shown. Specifically, the condition for transitioning from the first state to the second state is defined as the first storage unit completing both the address channel handshake and the data channel handshake with the receiving module 40. That is, only when both channel handshakes are successfully completed is the state of the first storage unit allowed to transition from the first state to the second state. This strict condition of completing the two channel handshakes ensures that any storage unit 22 in the second state has had its internally stored target request data successfully and completely received by the downstream receiving module 40. This avoids the problem of incorrectly overwriting the target request in the many-to-one ordered transmission scenario described earlier, ensuring the safe and efficient reclamation of storage units 22.

[0050] In step S202, after the receiving module 40 successfully receives and processes the target request, it can return a write response message through the write response channel. Upon receiving this write response message, the data forwarding module 20 initiates a resource reclamation process. This write response message carries a second identifier, which is a write response identifier indicating which write transaction or type of write transaction has been completed. The data forwarding module 20 matches the first identifiers of all storage units 22 currently in the second state with this second identifier. The first identifier is the write address identifier of the target request itself stored in these second storage units. All storage units 22 whose first identifier matches the second identifier and are in the second state are the second storage units. Subsequently, the state of at least one of these second storage units can be released from the second state, i.e., switched to the third state, representing idle status.

[0051] In some implementations, after receiving the write response message returned by the receiving module 40 through the write response channel, the state of all second storage units can be switched from the second state to the third state. This efficiently releases the resources of storage unit 22 and improves request forwarding efficiency.

[0052] The strict restrictions on the state transition conditions in step S201 provide a safety guarantee for the efficient resource reclamation strategy in step S202. Because storage units 22 in the second state at any given time have actually completed data transmission, all storage units 22 with matching identifiers (i.e., matching first and second identifiers) can be safely and efficiently released upon receiving a write response message. Even if multiple second identifiers match the first identifier carried in the response message and are in the second state, they can all be released upon receiving a single write response message. This resource reclamation strategy improves storage resource reclamation efficiency and system throughput while avoiding the possibility of mistakenly releasing requests that have not yet been sent.

[0053] In an optional implementation, step S202 is illustrated by example. Assuming an application scenario where all upstream requests have the same write address identifier, such as "awid_0", when multiple storage units 22 have successfully sent requests carrying "awid_0" and are all in the second state, the downstream returns a write response message carrying a second identifier "bid_0", which matches "awid_0". The data forwarding module 20 will identify all storage units 22 (i.e., the second storage units) with a state of "SENT" and internally stored "awid" equal to "bid_0", and synchronously or sequentially set their state machines to the "IDLE" state. This method allows for the reclamation of all related resources in a single response during continuous writes with the same write address identifier, improving the overall performance of data forwarding.

[0054] To optimize arbitration and scheduling efficiency when multiple requests awaiting transmission coexist, and to address the problem of how to orderly select one request from multiple ready requests for transmission, in one embodiment of this specification, reference is still made to... Figure 3 The data forwarding module 20 further includes a first arbitrator; Before switching the state of the first storage unit from the first state to the second state after the first storage unit has completed the address channel handshake and data channel handshake with the receiving module 40, the method further includes: When there are multiple storage cells 22 in the first state, the first storage cell is determined from the multiple storage cells 22 in the first state using the first arbitrator.

[0055] The arbitration method provided in this embodiment makes the scheduling process clear and orderly. The role of the first arbitrator is to select one of the multiple first state storage units 22 that simultaneously have the ability to adjust transmission according to preset rules. This helps to resolve the conflict problem when multiple requests compete for transmission, helps to avoid deadlock, and improves transmission efficiency.

[0056] In one implementation, the first arbitrator can be a round-robin arbitrator. When multiple storage units 22 are all in the "SEND" state, these storage units 22 send a request to the round-robin arbitrator. The round-robin arbitrator, according to a certain order, such as a circular order, authorizes one of the storage units 22 as the first storage unit, giving it priority in using the downstream address channel and data channel. The first storage unit's state will only transition after successfully completing the handshake between the two channels. The next authorized storage unit 22 will wait for the next arbitration and will only transition after completing its own handshake between the two channels. This mechanism avoids the problems of premature authorization and premature state changes, ensuring strict synchronization between the state machine transition logic and the physical data transmission process. Optionally, in one implementation, the first arbitrator can also be a priority arbitrator, etc. The priority arbitrator can select the first storage unit based on the priority of the storage unit 22. This priority can be determined based on factors such as the identity of the storage unit 22 or the importance of the target request it stores. This specification does not limit this.

[0057] Upon receiving a write response message, the sent storage unit 22 with the matching identifier needs to be released. In a preferred embodiment, to maximize resource reclamation efficiency, after receiving the write response message returned by the receiving module 40 through the write response channel, switching the state of at least one second storage unit from the second state to the third state includes: When multiple second storage units exist, after receiving the write response message returned by the receiving module 40 through the write response channel, the state of the multiple second storage units is switched from the second state to the third state.

[0058] This embodiment fully leverages the security advantages of the strict state control logic of the data transmission method provided in this specification. As mentioned above, since the storage units 22 in the second state are all in a state where the request has been completed, multiple such storage units 22 can be safely reclaimed. Its advantage lies in the fact that all storage units 22 matching the state can be reclaimed in batches only by receiving and identifying a single write response message.

[0059] Specifically, in one implementation, the data forwarding module 20 can perform parallel comparisons of the "awid" field of all storage units 22 currently in the "SENT" state with the input second identifier "bid". All successfully matched storage units 22 will simultaneously receive a jump enable signal, changing their state from "SENT" to "IDLE". This batch release operation is particularly effective in scenarios where all write address identifiers are identical, enabling the batch clearing of storage units 22 occupied by multiple sent requests, allowing the data forwarding module 20 to receive more requests from upstream. This solves the problem of low receiving efficiency caused by having to release only one storage unit 22 at a time to avoid data loss in related technologies.

[0060] To more clearly define the state of storage unit 22, in one embodiment, the state machine further includes a fourth state, which represents that the storage unit 22 has completed the handshake of the write address channel and write data channel with the sender of the target request and has stored the target request. The data transmission method further includes: In the storage unit 22 which is in the third state, a third storage unit is determined; In response to the sender of the target request, the target request is sent through the write address channel and the write data channel, and the target request is stored in the third storage unit; The state of the third storage unit is switched from the third state to the fourth state.

[0061] That is, before step S201, an upstream request receiving and storage process may also be included. First, a target storage unit 22 is determined from the storage units 22 in the third state, which represents idle. For example, in the initial state, all storage units 22 are in the third state, and at this time, a storage unit 22 for receiving the upcoming request can be selected by the second arbitrator 52. Second, in response to the target request sent by the sender through the write address channel and write data channel, the data forwarding module 20, after completing the handshake with the sender on these two channels, stores the address, data, and other information of the target request into the aforementioned determined storage unit 22. Finally, after the data is successfully stored, the state of the storage unit 22 is switched from the third state to the fourth state. The second arbitrator 52 and the first arbitrator 51 can be two different arbitrators.

[0062] In an optional implementation, if the data forwarding module 20 fails to return a write response message to the upstream module (i.e., the sending module 10) in a timely manner, the number of storage units 22 in the fourth state will accumulate. That is, there may be multiple storage units 22 in the fourth state at this time because they can continuously receive target requests sent from the upstream. In this case, all storage units 22 in the fourth state can authorize one storage unit 22 through round-robin arbitration by the first arbitrator. When the data forwarding module 20 returns a write response message to the upstream module, the state of the authorized storage unit 22 can switch from the fourth state to the first state.

[0063] In this embodiment, the introduction of the fourth state enables finer-grained management of the storage unit 22, providing a foundation for stable control in complex transmission scenarios.

[0064] To ensure orderly selection among multiple free storage units 22, when determining the target storage unit 22 among the storage units 22 in the third state, the storage unit 22 with the highest priority can be designated as the target storage unit 22. For example, a fixed priority can be assigned to the sixteen storage units 22 from high to low, and the free storage unit 22 with the highest priority is always selected to receive new requests. This design makes the selection logic of the storage units 22 clear and easy to manage.

[0065] In one embodiment, the receiving module 40 includes an interrupt translation service module, wherein the target request includes a message signal interruption request.

[0066] In chip systems that support interrupt translation services, message signal interrupt requests from multiple PCIe components need to be efficiently aggregated and forwarded to the interrupt translation service module. The data transmission method provided in this application is particularly suitable for such scenarios, reliably and efficiently enabling the transmission of multiple message signal interrupt requests to the outstanding transactions of a single interrupt translation service module, ensuring both high throughput and data reliability.

[0067] refer to Figure 1 , Figure 1This diagram illustrates the structure of a data forwarding module 20 according to an embodiment of this specification. The data forwarding module 20 is connected to a receiving module 40 via a many-to-one conversion bridge 30. The data forwarding module 20 includes: a plurality of storage unit sets 21 for caching requests, each storage unit set 21 corresponding to a sender, and each storage unit 22 in the storage unit set 21 corresponding to a state machine, the state machine including a first state, a second state, and a third state; the first state indicates that the storage unit 22 stores a target request, and the data forwarding module 20 has completed a write response channel handshake with the sender of the target request; the second state indicates that the target request in the storage unit 22 has been sent; the third state indicates that the storage unit 22 is idle. The data forwarding module 20 is configured as follows: When the first storage unit completes the address channel handshake and data channel handshake with the receiving module 40, the state of the first storage unit is switched from the first state to the second state; After receiving the write response message returned by the receiving module 40 through the write response channel, the state of at least one second storage unit is switched from the second state to the third state; the second storage unit includes a storage unit 22 whose first identifier matches the second identifier carried in the write response message; the first identifier is the write address identifier of the target request stored in the second storage unit; the second identifier is the write response identifier carried in the write response message.

[0068] The specific data transmission method executed by the data forwarding module 20 can be referenced from the steps and logic of any of the method implementations mentioned above. Its working principle and the technical effects it can achieve are the same as those of the corresponding implementations, and will not be repeated here.

[0069] Accordingly, refer to Figure 1 , Figure 1 This specification illustrates a data transmission system 100 provided in an embodiment, comprising: multiple transmitting modules 10, a data forwarding module 20, a many-to-one conversion bridge 30, and a receiving module 40; wherein, The plurality of sending modules 10 are each of the plurality of senders of the target request; The data forwarding module 20 is connected to the receiving module 40 through the many-to-one conversion bridge 30; The data forwarding module 20 is configured to forward the target request to the receiving module 40 according to the data transmission method described in any of the above embodiments.

[0070] Through the configuration of this system, efficient, reliable transmission of multiple requests to a single module is achieved, which also supports outstanding incomplete transactions.

[0071] The data transmission system 100 can be deployed on an on-chip system. The data forwarding module 20 communicates with the transmitting module 10, the many-to-one conversion bridge 30, and the receiving module 40 respectively via a target on-chip bus protocol. This target on-chip bus protocol defines independent write address channels, write data channels, and write response channels. For example, the protocol can be the ACE-Lite protocol or other similar write transaction protocols with independent channels. This allows the system to be correctly integrated and operate within a standard bus framework.

[0072] In an exemplary embodiment of this specification, a data transmission device is also provided, integrated into a data forwarding module 20. The data forwarding module 20 is connected to a receiving module 40 via a many-to-one conversion bridge 30. The data forwarding module 20 includes a plurality of storage unit sets 21 for caching requests. Each storage unit set 21 corresponds to a sender. Each storage unit 22 in the storage unit set 21 corresponds to a state machine, which includes a first state, a second state, and a third state. The first state indicates that the storage unit 22 stores a target request, and the data forwarding module 20 has completed a write response channel handshake with the sender of the target request. The second state indicates that the target request in the storage unit 22 has been sent. The third state indicates that the storage unit 22 is idle. The data transmission device includes: The first module is used to switch the state of the first storage unit from the first state to the second state when the first storage unit completes the address channel handshake and data channel handshake with the receiving module 40. The second module is used to switch the state of at least one second storage unit from the second state to the third state after receiving a write response message returned by the receiving module 40 through the write response channel; the second storage unit includes a storage unit 22 whose first identifier matches the second identifier carried in the write response message; the first identifier is the write address identifier of the target request stored in the second storage unit; the second identifier is the write response identifier carried in the write response message.

[0073] Specific limitations regarding the data transmission device can be found in the limitations regarding the data transmission method above, and will not be repeated here. Each module in the aforementioned data transmission device can be implemented entirely or partially through software, hardware, or a combination thereof. These modules can be embedded in hardware or independently of the processor in the computer device, or stored in software in the memory of the computer device, so that the processor can call and execute the operations corresponding to each module.

[0074] Another embodiment of this application also provides a computing device. An exemplary embodiment of this specification also provides a computing device, including: a memory and a processor, wherein the memory stores a computer program, and the processor executes the computer program to perform the steps of the data transmission method according to various embodiments of this specification described above.

[0075] In addition to the methods and devices described above, the data transmission methods provided in the embodiments of this specification can also be computer program products, which include computer program instructions that, when executed by a processor, cause the processor to perform the steps in the data transmission methods according to the various embodiments of this specification as described in the above-described data transmission method section.

[0076] The aforementioned computer program product can be implemented through hardware, software, or a combination thereof. In one optional embodiment, the computer program product is specifically embodied in a computer storage medium; in another optional embodiment, the computer program product is specifically embodied in a software product, such as a software development kit (SDK), etc.

[0077] The computer program product described herein can be written in any combination of one or more programming languages ​​to perform the operations of the embodiments described herein. These programming languages ​​include object-oriented programming languages ​​such as Java and C++, as well as conventional procedural programming languages ​​such as C or similar languages. The program code can be executed entirely on the user's computing device, partially on the user's computing device, as a standalone software package, partially on the user's computing device and partially on a remote computing device, or entirely on a remote computing device or server.

[0078] Furthermore, embodiments of this specification also provide a computer-readable storage medium having a computer program stored thereon, the computer program being executed by a processor of the steps in the data transmission methods according to various embodiments of this specification as described in the "Exemplary Methods" section above.

[0079] Those skilled in the art will understand that all or part of the processes in the methods of the above embodiments can be implemented by a computer program instructing related hardware. The computer program can be stored in a non-volatile computer-readable storage medium. When executed, the computer program can include the processes of the embodiments of the above methods. Any references to memory, storage, databases, or other media used in the embodiments provided in this specification can include non-volatile and / or volatile memory. Non-volatile memory may include read-only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), or flash memory. Volatile memory may include random access memory (RAM) or external cache memory. By way of illustration and not limitation, RAM is available in a variety of forms, such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), dual data rate SDRAM (DDRSDRAM), enhanced SDRAM (ESDRAM), synchronous link DRAM (SLDRAM), RAMbus direct RAM (RDRAM), direct memory bus dynamic RAM (DRDRAM), and memory bus dynamic RAM (RDRAM), etc.

[0080] The technical features of the above embodiments can be combined in any way. For the sake of brevity, not all possible combinations of the technical features in the above embodiments are described. However, as long as there is no contradiction in the combination of these technical features, they should be considered to be within the scope of this specification.

[0081] The embodiments described above are merely illustrative of several implementation methods outlined in this specification. While the descriptions are specific and detailed, they should not be construed as limiting the scope of the solutions provided in this specification. It should be noted that those skilled in the art can make various modifications and improvements without departing from the concept of this specification, and these all fall within the scope of protection of this specification. Therefore, the scope of protection for this patent should be determined by the appended claims.

Claims

1. A data transmission method, characterized in that, The data forwarding module is executed by a data forwarding module connected to the receiving module via a many-to-one conversion bridge. The data forwarding module includes multiple sets of storage units for caching requests, each set corresponding to a sender. Each storage unit in each set corresponds to a state machine, which includes a first state, a second state, and a third state. The data transmission method includes: When the first storage unit completes the address channel handshake and data channel handshake with the receiving module, the state of the first storage unit is switched from the first state to the second state; After receiving the write response message returned by the receiving module through the write response channel, the state of at least one second storage unit is switched from the second state to the third state; the second storage unit includes a storage unit whose first identifier matches the second identifier carried in the write response message; the first identifier is the write address identifier of the target request stored in the second storage unit; the second identifier is the write response identifier carried in the write response message.

2. The method according to claim 1, characterized in that, The first state indicates that the storage unit stores the target request, and the data forwarding module has completed a write response channel handshake with the sender of the target request; the second state indicates that the target request in the storage unit has been sent. The third state indicates that the storage unit is idle.

3. The method according to claim 2, characterized in that, The data forwarding module also includes a first arbitrator; Before switching the state of the first storage unit from the first state to the second state after the first storage unit has completed the address channel handshake and data channel handshake with the receiving module, the method further includes: When there are multiple storage cells in the first state, the first storage cell is determined from the multiple storage cells in the first state using the first arbitrator.

4. The method according to claim 2, characterized in that, After receiving the write response message returned by the receiving module through the write response channel, switching the state of at least one second storage unit from the second state to the third state includes: When multiple second storage units exist, after receiving the write response message returned by the receiving module through the write response channel, the state of the multiple second storage units is switched from the second state to the third state.

5. The method according to any one of claims 1 to 4, characterized in that, The state machine further includes a fourth state, which represents that the storage unit has completed the handshake of the write address channel and write data channel with the sender of the target request and stores the target request. The data transmission method further includes: In the storage cell that is in the third state, a third storage cell is determined; In response to the sender of the target request, the target request is sent through the write address channel and the write data channel, and the target request is stored in the third storage unit; The state of the third storage unit is switched from the third state to the fourth state.

6. The method according to claim 5, characterized in that, In the storage unit that is in the third state, determining the third storage unit includes: Among the storage cells in the third state, the storage cell with the highest priority is determined as the third storage cell.

7. The method according to any one of claims 1 to 4, characterized in that, The receiving module includes an interruption translation service module, and the target request includes a message signal interruption request.

8. A data forwarding module, characterized in that, The data forwarding module is connected to the receiving module through a many-to-one conversion bridge; the data forwarding module includes: multiple sets of storage units for caching requests, each set of storage units corresponds to a sender, and each storage unit in the set of storage units corresponds to a state machine, the state machine including a first state, a second state and a third state; The data forwarding module is configured as follows: When the first storage unit completes the address channel handshake and data channel handshake with the receiving module, the state of the first storage unit is switched from the first state to the second state; After receiving the write response message returned by the receiving module through the write response channel, the state of at least one second storage unit is switched from the second state to the third state; the second storage unit includes a storage unit whose first identifier matches the second identifier carried in the write response message; the first identifier is the write address identifier of the target request stored in the second storage unit; the second identifier is the write response identifier carried in the write response message.

9. A data transmission system, characterized in that, include: Multiple sending modules, data forwarding modules, many-to-one conversion bridges, and receiving modules; among them, The multiple sending modules are multiple senders of the target request; The data forwarding module is connected to the receiving module through the many-to-one conversion bridge; The data forwarding module is configured to forward the target request to the receiving module according to the data transmission method according to any one of claims 1 to 7.

10. The system according to claim 9, characterized in that, The data forwarding module communicates with the sending module, the many-to-one conversion bridge, and the receiving module respectively via the target on-chip bus protocol.

11. A computer program product, characterized in that, It includes computer program instructions that, when executed by a processor, cause the processor to perform the data transmission method according to any one of claims 1 to 7.