Data transmission method, electronic equipment, storage medium and program

By using multiple output direction read pointers and wormhole routing flow control methods in on-chip network routing nodes, the unfairness and deadlock problems of packet transmission introduced by multicast data streams are solved, and the fairness of packet transmission is achieved and Low latency, low resource consumption.

CN119248707AInactive Publication Date: 2025-01-03太初(无锡)电子科技有限公司
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
CN202411775174.5
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-12-05
Publication Date
2025-01-03
Estimated Expiration
Not applicable · inactive patent

AI Technical Summary

Technical Problem

In an on-chip network, the introduction of multicast data streams leads to unfair packet transmission and network deadlock problems, which are difficult to effectively solve in the prior art.

Method used

By using multiple output direction reading pointers in the on-chip network routing node, data transmission in each output direction is independently recorded and controlled, the dependence between output directions is eliminated, and the flow control method of wormhole routing is adopted to avoid deadlocks.

Benefits of technology

It realizes fairness in data packet transmission between different transactions in the on-chip network, reduces design complexity and resource consumption, and avoids deadlock problems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119248707A_ABST
    Figure CN119248707A_ABST
Patent Text Reader

Abstract

The embodiment of the invention discloses a data transmission method, electronic equipment, a storage medium and a program, the method is applied to an on-chip network routing node, and the method comprises the following steps: acquiring data read from a data buffer area by a read pointer in a current output direction; wherein the current output direction reading pointer is a reading pointer in output direction reading pointers; the number of the output direction reading pointers is multiple, and each output direction reading pointer is used for reading output data of one output port; and outputting the data read by the reading pointer in the current output direction to a current output port corresponding to the reading pointer in the current output direction for output. According to the technical scheme provided by the embodiment of the invention, the deadlock problem of network-on-chip data transmission can be solved, and the fairness of data packet transmission among different transactions in the network-on-chip is ensured.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present invention relate to the field of communication technology, and in particular, to a data transmission method, device, electronic device, storage medium and program. Background Art

[0002] On-Chip 2D-Mesh Network is a point-to-point communication architecture built inside an integrated circuit (IC). It allows high-bandwidth and low-latency data exchange directly between individual processor cores, memory modules, and other hardware components within the chip without going through a traditional bus structure. This design can improve the parallelism and efficiency of the system because each node can communicate with other nodes independently without being limited by the bandwidth of the external bus. Due to its high bandwidth and low latency characteristics, on-chip 2D-Mesh networks are widely used in high-performance computing, data center accelerators, and IoT devices.

[0003] As the core functions of processors become increasingly powerful, on-chip networks need to support multicast functions, that is, a transmission initiated by the processor will be sent to multiple targets through the network. The introduction of multicast data streams in on-chip networks has put forward higher requirements on how to ensure fairness in the transmission of on-chip network data packets; and after the flow control method uses wormhole routing with lower latency and lower resource consumption, it will easily introduce deadlock in the network. Therefore, after the introduction of multicast in the on-chip network, how to ensure fairness between different transactions in the on-chip network and avoid the occurrence of network deadlock has become a problem that needs to be solved urgently. Summary of the invention

[0004] The embodiments of the present invention provide a data transmission method, device, electronic device, storage medium and program, which can solve the deadlock problem of on-chip network data transmission and ensure the fairness of data packet transmission between different transactions in the on-chip network.

[0005] According to one aspect of the present invention, a data transmission method is provided, which is applied to an on-chip network routing node, and the method comprises: Acquire data read from the data buffer by the current output direction read pointer; wherein the current output direction read pointer is a read pointer in the output direction read pointer; the number of the output direction read pointers is multiple, and each of the output direction read pointers is used to read output data of an output port; Output the data read by the current output direction read pointer to the current output port corresponding to the current output direction read pointer for output; The current output direction read pointer is part or all of the output direction read pointers.

[0006] Optionally, before obtaining the data read by the read pointer in the current output direction from the data buffer, the method further includes: Determining the number of output ports of the on-chip network routing node; Configure the number of output direction read pointers according to the number of output ports of the on-chip network routing node; A data transmission mapping relationship between the output direction read pointer and each of the output ports is established.

[0007] Optionally, obtaining the data read from the data buffer by the read pointer in the current output direction includes: Obtaining the current output direction state of the current output port; When it is determined that the current output direction state of the current output port meets the data output condition, the current output direction read pointer is moved in the data buffer according to the pointer movement direction, and the data in the data buffer is read through the current output direction read pointer.

[0008] Optionally, the data buffer stores data packet flit data of multiple target transactions; the method further includes: Determine the current data packet flits pointed to by the current output direction read pointer in the data buffer, and determine the target transaction to which the current data packet flits belong; When it is determined that the output port of the target transaction does not include the current output port, the current output direction read pointer is directly moved in the pointer movement direction until it is determined that the output port of the target transaction to which the micro-slice data of the current data packet pointed to by the current output direction read pointer belongs includes the current output port.

[0009] Optionally, the number of the current output direction read pointers is multiple, and the data buffer stores data packet flits of multiple target transactions; and obtaining the data read from the data buffer by the current output direction read pointer includes: Determine the current data packet flits pointed to by each current output direction read pointer in the data buffer; When it is determined that the current data packet flits pointed to by each current output direction read pointer belong to the same target transaction, the current data packet flits are read from the data buffer via each current output direction read pointer.

[0010] Optionally, before obtaining the data read by the read pointer in the current output direction from the data buffer, the method further includes: Determining the length of the data buffer according to the number of data packet flits included in each type of transaction to be processed by the on-chip network routing node; The data buffer is requested from a cache resource according to the length of the data buffer.

[0011] Optionally, the on-chip network routing node uses a wormhole routing flow control method to perform routing processing on the data output by the output port.

[0012] According to another aspect of the present invention, there is provided a data transmission device, which is configured in an on-chip network routing node, comprising: A data acquisition module, used for acquiring data read from a data buffer by a current output direction read pointer; wherein the current output direction read pointer is a read pointer in the output direction read pointer; the number of the output direction read pointers is multiple, and each of the output direction read pointers is used for reading output data of an output port; A data output module, used to output the data read by the current output direction read pointer to the current output port corresponding to the current output direction read pointer for output; The current output direction read pointer is part or all of the output direction read pointers.

[0013] According to another aspect of the present invention, an electronic device is provided, the electronic device comprising: at least one processor; and a memory in communication with the at least one processor; wherein, The memory stores a computer program executable by the at least one processor, and the computer program is executed by the at least one processor so that the at least one processor can execute the data transmission method described in any embodiment of the present invention.

[0014] According to another aspect of the present invention, a computer-readable storage medium is provided, wherein the computer-readable storage medium stores computer instructions, and the computer instructions are used to enable a processor to implement the data transmission method described in any embodiment of the present invention when executed.

[0015] According to another aspect of the present invention, a computer program product is provided, including a computer program, wherein when the computer program is executed by a processor, the data transmission method according to any embodiment of the present invention is implemented.

[0016] The embodiment of the present invention obtains the data read from the data buffer by the current output direction read pointer through the on-chip network routing node, so as to output the data read by the current output direction read pointer to the current output port corresponding to the current output direction read pointer for output. Since the on-chip network routing node is configured with multiple output direction read pointers, each output direction read pointer is used to read the output data of an output port, and the current output direction read pointer is part or all of the read pointers in the output direction read pointer, it is realized that multiple output directions of the on-chip network routing node are recorded and controlled separately by using multiple read pointers, the dependency between each output direction is eliminated, the condition restrictions that need to be met by the output are reduced, the design complexity is reduced, and the deadlock problem that may be caused by the timeout mechanism used in the existing on-chip network data transmission is solved, and the fairness of data packet transmission between different transactions in the on-chip network is ensured.

[0017] It should be understood that the contents described in this section are not intended to identify the key or important features of the embodiments of the present invention, nor are they intended to limit the scope of the present invention. Other features of the present invention will become easily understood through the following description. BRIEF DESCRIPTION OF THE DRAWINGS

[0018] In order to more clearly illustrate the technical solutions in the embodiments of the present invention, the accompanying drawings required for use in the description of the embodiments will be briefly introduced below. Obviously, the accompanying drawings in the following description are only some embodiments of the present invention. For ordinary technicians in this field, other accompanying drawings can be obtained based on these accompanying drawings without paying creative work.

[0019] Figure 1 This is a flow chart of a data transmission method provided in Example 1 of the present invention.

[0020] Figure 2 This is a flow chart of a data transmission method provided in Embodiment 2 of the present invention.

[0021] Figure 3 It is a schematic diagram of the effect of an on-chip network routing node reading and transmitting data through a multi-read pointer method provided by the second embodiment of the present invention.

[0022] Figure 4 It is a schematic diagram of the effect of another on-chip network routing node reading and transmitting data through a multi-read pointer method provided by Embodiment 2 of the present invention.

[0023] Figure 5 It is a schematic diagram of the timing effect of an on-chip network routing node processing multiple multicast transactions provided by the second embodiment of the present invention.

[0024] Figure 6 It is a schematic diagram of a data transmission device provided in Embodiment 3 of the present invention.

[0025] Figure 7 A schematic diagram of the structure of an electronic device provided in Embodiment 4 of the present invention. DETAILED DESCRIPTION

[0026] In order to enable those skilled in the art to better understand the scheme of the present invention, the technical scheme in the embodiments of the present invention will be clearly and completely described below in conjunction with the drawings in the embodiments of the present invention. Obviously, the described embodiments are only part of the embodiments of the present invention, not all of the embodiments. Based on the embodiments of the present invention, all other embodiments obtained by ordinary technicians in this field without creative work should fall within the scope of protection of the present invention.

[0027] It should be noted that the terms "include", "have" and any variations thereof are intended to cover non-exclusive inclusions. For example, a process, method, system, product or apparatus comprising a series of steps or units is not necessarily limited to those steps or units explicitly listed, but may include other steps or units not explicitly listed or inherent to these processes, methods, products or apparatus.

[0028] In the field of on-chip networks, unicast transactions are transactions in which data is only transmitted to one output port, and multicast transactions are transactions in which data can be transmitted to multiple output ports. For on-chip network routing nodes (referred to as routing nodes), the traditional multicast flow control method requires that after the routing node receives a multicast transaction, for the output direction of each output port to be output, all output conditions such as the output port is not occupied and the downstream receiver can accommodate it must be met before it can be output. For example, for a multicast transaction that needs to be sent to output port 0 and output port 1, the output condition of output port 0 is met, and the output condition of output port 1 is not met. At this time, if there is a unicast transaction sent to output port 0, then output port 0 will be occupied by unicast. After output port 0 is occupied, for multicast transactions, even if the subsequent output condition of output port 1 is met, the data of the multicast transaction cannot be output because output port 0 is not satisfied. It can be seen from this that in the prior art, unicast only needs to meet the output condition of an output direction in which an output port is not occupied, but multicast transactions need to meet more resource constraints than unicast transactions and are more difficult to output.

[0029] The traditional solution to the unfairness between unicast and multicast transactions in routing nodes is to introduce a timeout mechanism, record the waiting time of each transaction in the routing node, and set a timeout value. Once the waiting time of a transaction exceeds the set timeout value, the timeout transaction will be given high priority. Regardless of whether the transaction can meet the output conditions, the transaction will be given priority to occupy the output port for output, preventing "starvation" and thus ensuring fairness among transactions.

[0030] However, the above-mentioned traditional multicast flow control method of routing nodes will have fairness issues between unicast transactions and multicast transactions, and unicast transactions are always easy to output. Specifically, the traditional timeout mechanism used to solve the fairness problem between things will bring greater design complexity and resource consumption, and is mainly used to solve the unfairness problem caused by other characteristics between unicast transactions (transaction packet length, read and write type, etc.). When the timeout mechanism is used in a multicast scenario, according to the characteristics of the timeout mechanism forcing high priority and the dependence between the output directions of multicast transactions, it will not only fail to solve the fairness problem, but will form data link dependence, causing serious network deadlock problems.

[0031] At the same time, the current mainstream data micro-slice flow control method is wormhole routing, that is, when the downstream routing node can accommodate a data micro-slice, it can be sent without the need for the current node to collect the entire data packet, which is the store-and-forward flow control method, or requiring the downstream routing node to accommodate the entire packet, which is the VCT (virtual cut-through) flow control method. If the wormhole routing flow control method is used in the traditional multicast flow control method scenario, since the wormhole does not consider whether the transaction body can be accommodated before transmission and the dependency between the multicast transaction output directions, data link dependency will also be formed, which will also cause deadlock problems. Therefore, traditional multicast flow control is not compatible with wormhole routing flow control.

[0032] Embodiment 1: Figure 1 This is a flowchart of a data transmission method provided by the first embodiment of the present invention. This embodiment is applicable to the case where data is read and sent from a data buffer of an on-chip network routing node through multiple independent read pointers. The method can be executed by a data transmission device, which can be implemented by software and / or hardware, and can generally be integrated in an on-chip network routing node. The on-chip network routing node can be integrated in an electronic device, which can be a terminal device or a server device. The embodiment of the present invention does not limit the specific device type of the electronic device. Accordingly, Figure 1 As shown, the method includes the following operations: S110, obtaining data read from the data buffer by the current output direction read pointer; wherein the current output direction read pointer is a read pointer among the output direction read pointers; the number of the output direction read pointers is multiple, and each of the output direction read pointers is used to read output data of an output port.

[0033] The output direction read pointer may be a read pointer configured for an on-chip network routing node, which is used to read from a data buffer and send to an output port. The current output direction read pointer may be an output direction read pointer that can currently read data from a data buffer and send to a corresponding output port. The current output direction read pointer is part or all of the output direction read pointers.

[0034] In an embodiment of the present invention, each output port of the on-chip network routing node can be configured with an output direction read pointer, and each output direction read pointer can be used to read the output data of the output direction corresponding to an output port. That is, the data read from the data buffer by an output direction read pointer can only be sent to a corresponding output port for output. The data reading and sending operations between different output direction read pointers are independent of each other and are not affected by each other. Each output direction read pointer can independently complete the data reading and sending process.

[0035] It is understandable that some output direction read pointers may not be able to read and send data due to problems with the output port, and need to be in a paused state, that is, pointing to the current data storage unit of the data buffer, and cannot continue to move and read data. Therefore, before the on-chip network routing node performs data transmission again, it can first determine the output direction read pointer that can currently output data as the current output direction read pointer. After determining the current output direction read pointer, the current output direction read pointer can be instructed to read the data stored in the data storage unit pointed to by the current output direction read pointer from the data buffer.

[0036] Optionally, the data buffer may include multiple data storage units, each of which may store a flits of a data packet. A flits is a basic unit in network communication, used to transmit data in a multi-level interconnected network. Each flits contains specific information, such as addresses and control signals, to guide the transmission and processing of data. In a transaction, flits are used to divide transaction operations so as to more efficiently process and transmit data. The data stored in the data buffer may be multiple flits of a data packet of a multicast transaction, or may be multiple flits of a data packet of a unicast transaction. The embodiment of the present invention does not limit the transaction type to which the data stored in the data buffer belongs.

[0037] S120: Output the data read by the current output direction read pointer to the current output port corresponding to the current output direction read pointer for output.

[0038] The current output port, that is, the current output direction read pointer corresponds to the responsible output port. One current output direction read pointer corresponds to one current output port.

[0039] Optionally, the number of current output direction read pointers may be one or more. That is, there may be one output direction read pointer in the on-chip network routing node that reads data from the data buffer and sends it to the output port that the output direction read pointer is responsible for. Alternatively, there may also be multiple output direction read pointers in the on-chip network routing node that read data from the data buffer at the same time, and each current output direction read pointer may send the read data to the output port that it is responsible for.

[0040] It can be seen that by configuring multiple output direction read pointers for the on-chip network routing node, each output direction read pointer is responsible for the data reading and sending operations of an output port. When the data buffer stores the data of a multicast transaction, it is possible to use multiple read pointers to separately record and control multiple output directions of the same multicast transaction. Since each output port uses an independent output direction read pointer, the dependency between each output port can be eliminated, and there is no need to generate dependencies with other output ports, which reduces the restrictions on the conditions that the output needs to meet. Whether it is a multicast transaction or a unicast transaction, the conditions that the multicast output direction needs to meet are the same as those of the unicast, which solves the problem of uneven resource requirements between unicast and multicast from the source, and does not need to solve the fairness problem through the traditional timeout method, reducing the design complexity and not needing to solve the deadlock problem that may be caused by the timeout mechanism.

[0041] The embodiment of the present invention obtains the data read from the data buffer by the current output direction read pointer through the on-chip network routing node, so as to output the data read by the current output direction read pointer to the current output port corresponding to the current output direction read pointer for output. Since the on-chip network routing node is configured with multiple output direction read pointers, each output direction read pointer is used to read the output data of an output port, and the current output direction read pointer is part or all of the read pointers in the output direction read pointer, it is realized that multiple output directions of the on-chip network routing node are recorded and controlled separately by using multiple read pointers, the dependency between each output direction is eliminated, the condition restrictions that need to be met by the output are reduced, the design complexity is reduced, and the deadlock problem that may be caused by the timeout mechanism used in the existing on-chip network data transmission is solved, and the fairness of data packet transmission between different transactions in the on-chip network is ensured.

[0042] Embodiment 2: Figure 2 is a flow chart of a data transmission method provided by the second embodiment of the present invention. This embodiment is specific based on the above embodiment. In this embodiment, multiple specific optional implementation methods for configuring the output direction read pointer and obtaining the data read by the current output direction read pointer from the data buffer are provided. Figure 2 As shown, the method of this embodiment may include: S210: Determine the number of output ports of the on-chip network routing node.

[0043] S220. Configure the number of output direction read pointers according to the number of output ports of the on-chip network routing node.

[0044] It can be understood that since an output direction read pointer is responsible for data reading and sending operations of an output port, before the on-chip network routing node performs data transmission, the number of output direction read pointers can be first configured according to the number of output ports of the on-chip network routing node.

[0045] S230: Establish a data transmission mapping relationship between the output direction read pointer and each of the output ports.

[0046] Correspondingly, after configuring the number of output direction read pointers, a data transmission mapping relationship between each output direction read pointer and the corresponding output port can be established to clarify the data output direction of each output direction read pointer.

[0047] S240, obtaining data read from the data buffer by the current output direction read pointer.

[0048] The current output direction read pointer is a read pointer among the output direction read pointers; there are multiple output direction read pointers, and each output direction read pointer is used to read output data of an output port.

[0049] S250: Output the data read by the current output direction read pointer to the current output port corresponding to the current output direction read pointer for output.

[0050] In an optional embodiment of the present invention, obtaining the data read by the current output direction read pointer from the data buffer may include: obtaining the current output direction state of the current output port; when it is determined that the current output direction state of the current output port meets the data output condition, moving the current output direction read pointer in the data buffer according to the pointer movement direction, and reading the data in the data buffer through the current output direction read pointer.

[0051] Among them, the current output direction state can be the state of the current output port at the current moment, for example, it can include but is not limited to the state of the output port being occupied or the state of being unoccupied, etc., and the embodiment of the present invention does not limit the state type and state content of the current output direction state. The data output condition can be a condition set for the output port that can output data. Exemplarily, the data output condition can be that the output port is not occupied, etc. Optionally, the data output condition can be a single-dimensional restriction condition, or it can also be a multi-dimensional resource restriction condition, which is not limited by the embodiment of the present invention. The pointer movement direction can be the movement direction of the output direction read pointer in the data buffer. Optionally, the pointer movement directions of each output direction read pointer in the data buffer can be the same.

[0052] In an embodiment of the present invention, the data reading and sending operations of each output direction read pointer are related to the resource restriction conditions of the corresponding output port. That is, the output port corresponding to each output direction read pointer can read and output data from the data buffer if it can meet the resource conditions of this direction. Correspondingly, the on-chip network routing node can make real-time judgments on each output direction read pointer. If the current output direction state of the output port corresponding to an output direction read pointer meets the data output condition, it indicates that the output port can receive and output data to the outside. At this time, the on-chip network routing node can start moving at the current data storage unit in the data buffer according to the preset pointer movement direction for the current output direction read pointer. It can be understood that every time the current output direction read pointer moves to a new data storage unit, the data stored in the data storage unit can be read and sent to the corresponding current output port.

[0053] Figure 3 1 is a schematic diagram of the effect of a network-on-chip routing node reading and transmitting data by means of multiple read pointers provided by the second embodiment of the present invention. Figure 3As shown in the figure, it is a multicast input buffer structure of an on-chip routing node with 2 output ports. The data buffer stores the data of multicast transaction 0 and multicast transaction 1. Each data storage unit can store a flits of a transaction data packet. Among them, pkg0 represents a data packet of multicast transaction 0, and the data buffer stores 5 flits flit0~4 in the data packet. pkg1 represents a data packet of multicast transaction 1, and the data buffer stores 2 flits flit0~1 in the data packet. wptr represents a write pointer. As long as the data stored in the data storage unit in the data buffer is read by all read pointers, the write pointer can rewrite new data to the data storage unit. Assuming that both multicast transactions need to output data to two output ports 0 and 1, since there are two output ports, two read pointers 0_rptr and 1_rptr can be configured. Among them, 0_rptr represents the read pointer of output port 0, and 1_rptr represents the read pointer of output port 1. Assuming that the resource at output port 1 meets the output condition and can be output, that is, the output direction 1 is not blocked, then 1_rptr can traverse each data storage unit of the data buffer in turn according to the pointer movement direction, and perform data reading and sending operations. If the resource at output port 0 does not meet the output condition, that is, when the output direction 0 is blocked, 0_rptr cannot move and needs to stay in the current data storage unit until it is determined that the output direction 0 can output data. It can be seen that 0_rptr and 1_rptr can move asynchronously, 1_rptr can be ahead of 0_rptr, that is, the output direction 1 can be output first, realizing the different directions that the same microchip needs to be sent to, and outputting through multiple read pointers in time-sharing, and there is no dependency between the various output directions.

[0054] In an optional embodiment of the present invention, the data buffer stores data packet micro-slice data of multiple target transactions; the method may also include: determining the current data packet micro-slice data pointed to by the current output direction read pointer in the data buffer, and determining the target transaction to which the current data packet micro-slice data belongs; when it is determined that the output port of the target transaction does not include the current output port, directly moving the current output direction read pointer in the direction of pointer movement until it is determined that the output port of the target transaction to which the current data packet micro-slice data pointed to by the current output direction read pointer includes the current output port.

[0055] The flits of the current data packet may be the flits stored in the current data storage unit pointed to by the current output direction read pointer in the data buffer, and the target transaction may be the transaction to which the flits of the current data packet belong.

[0056] It is understandable that the output port of the data specified by a transaction may be all the output ports included in the on-chip network routing node, or may be part of the output ports included in the on-chip network routing node. When the target transaction to which the current data packet micro-slice data pointed to by the current output direction read pointer belongs does not require output from the current output port corresponding to the current output direction read pointer, that is, when the output port of the target transaction does not include the current output port, the current output direction read pointer may be directly moved in the pointer moving direction to skip the current data packet micro-slice data and point to the next data packet micro-slice data until it is determined that the output port of the target transaction to which the current data packet micro-slice data pointed to by the current output direction read pointer belongs includes the current output port.

[0057] Optionally, a valid control signal may be configured to control the pointer movement operation and data reading operation of all output direction read pointers. Specifically, the number of bits of the valid control signal may be determined according to the number of output direction read pointers, and one output direction read pointer may correspond to one bit in the valid control signal. The valid control signal may indicate whether the corresponding output direction read pointer reads the micro-slice data of the current data packet through the value of the bit.

[0058] In a specific example, Figure 3 As shown, assuming that there are 2 output direction read pointers, the effective control signal can include 2 bits of data, wherein the first bit of data is used to control 0_rptr, and the second bit of data is used to control 1_rptr. Assuming that the value of the effective control signal is 01, it means that 0_rptr can read the current data packet micro-slice data pkg0_flit1 pointed to by the pointer, and send pkg0_flit1 to the 0 output port for output; 1_rptr can not read the current data packet micro-slice data pkg0_flit4 pointed to by the pointer, and directly skip the current data packet micro-slice data pkg0_flit4 if the conditions are met, and point to the next data packet micro-slice data pkg1_flit0.

[0059] In an optional embodiment of the present invention, there are multiple current output direction read pointers, and the data buffer stores data packet micro-slice data of multiple target transactions; obtaining the data read from the data buffer by the current output direction read pointer may include: determining the current data packet micro-slice data pointed to by each current output direction read pointer in the data buffer; and when it is determined that the current data packet micro-slice data pointed to by each current output direction read pointer belongs to the same target transaction, reading each current data packet micro-slice data from the data buffer through each current output direction read pointer.

[0060] It should be noted that although the embodiment of the present invention configures multiple output direction read pointers to independently perform data reading and sending operations for each output port, it is necessary to meet the condition that different output direction read pointers cannot read data across transactions, otherwise it will cause a deadlock problem.

[0061] Figure 4 2 is a schematic diagram showing the effect of another on-chip network routing node reading and transmitting data by means of multiple read pointers provided by the second embodiment of the present invention. Figure 4 As shown, it is assumed that there are two data buffers, input buffer 0 and input buffer 1, and each data buffer may include 7 data storage units. pkg0 represents multicast transaction 0. A data packet of this transaction contains 5 flits flit0~4 in input buffer 0. pkg1 represents multicast transaction 1. A data packet of this transaction also contains 5 flits flit0~4. However, due to the limited buffer capacity of input buffer 0, only 2 flits flit0~1 in a data packet of pkg1 are accommodated, and flit2~4 are waiting to be received. Transaction pkg1 from input buffer 0 to output port 0 occupies output port 0. Since the remaining flits of pkg1 have not arrived and pkg1 has not been sent, pkg1 needs to continue to occupy output port 0. The reason why the remaining flits of pkg1 have not arrived is that input buffer 0 is full. The reason why input buffer 0 is full is that the first transaction pkg0 in input buffer 0 needs to be sent to output port 1, but output port 1 is always occupied. The reason why output port 1 is occupied is that the remaining flits of pkg3 in input buffer 1 have not arrived, so it needs to occupy output port 1 all the time. The reason why the remaining flits of pkg3 have not arrived is that input buffer 1 is full. The reason why input buffer 1 is full is that the first transaction pkg2 in input buffer 1 needs to be sent to output port 0, but output port 0 has been occupied by the pkg1 transaction in input buffer 0, thus forming a data link dependency, that is, a deadlock.

[0062] If the above deadlock situation needs to be avoided, it is only necessary to ensure that multiple output direction read pointers of the same transaction do not cross the current transaction, that is, the fast output direction read pointer cannot lead the slow output direction read pointer by one transaction. Accordingly, if the current data packet micro-slice data pointed to by each current output direction read pointer belongs to the same target transaction, each current output direction read pointer can be allowed to read the corresponding current data packet micro-slice data from the data buffer.

[0063] For example, Figure 3As shown, 0_rptr points to the second flits pkg0_flit1 of a data packet of multicast transaction 0, 1_rptr points to the last flits pkg0_flit4 of the data packet of multicast transaction 0, 1_rptr is a fast pointer, and 0_rptr is a fast pointer. According to the pointer movement direction, 1_rptr should point to the first flits pkg1_flit0 of a data packet of multicast transaction 1. However, since 0_rptr is still reading the flits data of multicast transaction 0, 1_rptr can pause and point to pkg0_flit4 at this time. After 0_rptr reads all the flits data of multicast transaction 0, 1_rptr can point to the next flits data pkg1_flit0 of multicast transaction 1. Alternatively, 1_rptr can also jump to point to pkg1_flit0 first, but does not read the data. After 0_rptr reads all the flits data of multicast transaction 0, 1_rptr reads pkg1_flit0.

[0064] In an optional embodiment of the present invention, before obtaining the data read from the data buffer by the current output direction read pointer, it may also include: determining the length of the data buffer according to the number of data packet micro-slices included in each type of transaction to be processed by the on-chip network routing node; and applying for the data buffer from the cache resource according to the length of the data buffer.

[0065] In an embodiment of the present invention, in order to avoid a deadlock caused by a transaction occupying an output port but the tail micro-slice data cannot arrive, the length of the data buffer can also be reasonably configured according to the number of data packet micro-slices included in each type of transaction to be processed by the on-chip network routing node. Specifically, the maximum number of data packet micro-slices included in a transaction to be processed can be determined according to the number of data packet micro-slices included in each type of transaction to be processed by the on-chip network routing node, and the length of the data buffer can be set to the value of the maximum number of data packet micro-slices included in the transaction to be processed, and further the data buffer can be applied from the cache resource according to the determined length of the data buffer. That is, the value of the data buffer can accommodate the length of the entire transaction.

[0066] In an optional embodiment of the present invention, the on-chip network routing node uses a wormhole routing flow control method to perform routing processing on the data output by the output port.

[0067] Since the above-mentioned data transmission method based on multiple read pointers solves the dependency between multiple output directions of multicast transactions without introducing other dependencies, the dependency between read pointers that cannot cross transactions only causes the restricted output direction to be unable to output, and there is no dependency between the output directions, which will not cause deadlock. Therefore, the on-chip network routing node can use the wormhole routing flow control method to route the data output by the output port, and the use of the wormhole flow control method will not cause deadlock problems.

[0068] Although the use of multiple pointers to read data will increase certain circuit resources, multiple pointers can be combined with the flow control method of wormhole routing. Wormhole routing requires a smaller buffer depth for the input buffer. Therefore, overall, compared with the traditional timeout mechanism, the data transmission method proposed in the embodiment of the present invention has the advantages of lower transmission delay and less circuit area and resource occupation.

[0069] Accordingly, in the process of executing the data transmission method, the on-chip network routing node may include but is not limited to the application of the following signals: (1) Read signal (or read enable signal): Each output direction corresponds to a read signal. First, ensure that the data currently executed by the read pointer of the current output direction is not empty. When the data currently to be sent is the head microchip, it is necessary to ensure that this output direction is not one transaction ahead of other output directions, and the output port corresponding to the output direction meets the data output condition or this output direction does not need to send data; when the data currently to be sent is a non-head microchip, the condition is that the output port corresponding to the output direction meets the data output condition or this output direction does not need to send data. When the above conditions are met, the read signal can be enabled.

[0070] (2) Empty signal: Each output direction corresponds to an empty signal, and an empty signal is configured globally. For an empty signal of an output direction, it is enabled when the data in the output direction is empty, that is, all data in the data buffer is full, and the read pointer in this direction has not read any data. For a global empty signal, it is a vacuum when all output directions are empty.

[0071] (3) Full signal: Each output direction corresponds to a full signal, and a full signal is configured globally. For an output direction, if the write pointer fills the cache and the read pointer does not read data, the full signal is enabled. For the global full signal, any output direction is full, which is true full.

[0072] (4) Not full signal: used to indicate that the write pointer can write data. That is, as long as there is a not full signal, the write pointer can write data.

[0073] (5) Credit release signal: used to indicate that the external sender can send data to the on-chip network routing node. The read signal is generated in this direction and this direction is the slowest pointer generation among all directions.

[0074] (6) Valid control signal: It can send a signal to the output direction to inform the output direction that there is data to be output. At the same time, it can confirm which direction the current data will be output to, which is equivalent to indicating which data the read pointer can read and which data to skip. One read pointer corresponds to one bit in a valid control signal, and one valid control signal corresponds to all read pointers. The number of bits of the valid control signal is the same as the number of read pointers and the number of output ports.

[0075] Figure 5 FIG. 1 is a schematic diagram of the timing effect of an on-chip network routing node processing multiple multicast transactions provided by the second embodiment of the present invention. In a specific example, Figure 5 As shown in FIG. 1 , a timing diagram corresponding to a two-beat multicast transaction and a one-beat multicast transaction is written, both transactions are sent to output port 4 and output port 0, and there is a case where the transmission is not successful. Among them, beat refers to the number of microslices, that is, a two-beat multicast transaction means that a data packet of the transaction includes 2 microslices. Figure 5 In the example, 5´b represents 5 bits of binary data, and 3´h represents 3 bits of hexadecimal data.

[0076] Specifically, for the 4 output direction of output port 4, in the 3rd clock cycle, the first transaction's head flit is sent successfully, the successful sending flag i_grant[4] signal is pulled high, and i_ren_4 is pulled high. In the 4th clock cycle, the tail flit is not sent successfully; in the 5th clock cycle, the tail flit is sent successfully, and i_ren_4 is pulled high; in the 6th clock cycle, the second single-beat transaction is sent successfully.

[0077] For the 0 output direction of output port 0, in the 3rd clock cycle, the head microchip of the first transaction is sent successfully, the sending success flag i_grant[0] signal is pulled high, and i_ren_0 is pulled high; in the 4th clock cycle, the tail microchip is sent successfully, and i_ren_0 is pulled high; in the 5th clock cycle, the 0 output direction pointer has jumped to the packet header of the next single-beat packet transaction, and the 4 output direction pointer is still in the first transaction. According to the principle that different pointers cannot cross transactions, the data o_data[0] corresponding to the 0 output direction pointer cannot be output, and the read signal cannot be generated; in the 6th clock cycle, the second transaction is sent successfully.

[0078] In the above process, it can be seen that the read pointer r_rptr_4 and the read pointer r_rptr_0 can change asynchronously to complete the normal output of the multicast transaction. The credit release signal will be generated according to the read pointer that moves the slowest.

[0079] The above technical solution uses multiple read pointers to separately record and control multiple output directions of the same multicast transaction. At the same time, the wormhole routing flow control method is adopted in the multi-read pointer scenario to reduce latency, area and resource consumption. In the multi-pointer scenario, stipulating that pointers cannot cross transactions can effectively solve the possible deadlock problem. Furthermore, by setting a method for generating related signals (such as read signals, empty signals, valid control signals and credit release signals) after buffering multiple read pointers, the data reading and sending operations of each read pointer can be realized in an orderly manner. The above technical solution can solve the deadlock problem that may be caused by the timeout mechanism used in the existing on-chip network data transmission, and ensure the fairness of data packet transmission between different transactions in the on-chip network.

[0080] In the technical solution of the present disclosure, the collection, storage, use, processing, transmission, provision and disclosure of user personal information are in compliance with the relevant laws and regulations and do not violate public order and good morals.

[0081] It should be noted that any arrangement and combination of the technical features in the above embodiments also falls within the protection scope of the present invention.

[0082] Embodiment three: Figure 6 is a schematic diagram of a data transmission device provided in Embodiment 3 of the present invention, wherein the data transmission device is configured in an on-chip network routing node, such as Figure 6 As shown, the device includes: a data acquisition module 310 and a data output module 320, wherein: The data acquisition module 310 is used to acquire data read from the data buffer by the current output direction read pointer; wherein the current output direction read pointer is a read pointer in the output direction read pointer; the number of the output direction read pointers is multiple, and each of the output direction read pointers is used to read the output data of an output port; A data output module 320, configured to output the data read by the current output direction read pointer to a current output port corresponding to the current output direction read pointer for output; The current output direction read pointer is part or all of the output direction read pointers.

[0083] The embodiment of the present invention obtains the data read from the data buffer by the current output direction read pointer through the on-chip network routing node, so as to output the data read by the current output direction read pointer to the current output port corresponding to the current output direction read pointer for output. Since the on-chip network routing node is configured with multiple output direction read pointers, each output direction read pointer is used to read the output data of an output port, and the current output direction read pointer is part or all of the read pointers in the output direction read pointer, it is realized that multiple output directions of the on-chip network routing node are recorded and controlled separately by using multiple read pointers, the dependency between each output direction is eliminated, the condition restrictions that need to be met by the output are reduced, the design complexity is reduced, and the deadlock problem that may be caused by the timeout mechanism used in the existing on-chip network data transmission is solved, and the fairness of data packet transmission between different transactions in the on-chip network is ensured.

[0084] Optionally, the above-mentioned device also includes a read pointer configuration module, which is used to: determine the number of output ports of the on-chip network routing node; configure the number of output direction read pointers according to the number of output ports of the on-chip network routing node; and establish a data transmission mapping relationship between the output direction read pointer and each of the output ports.

[0085] Optionally, the data acquisition module 310 is also used to: obtain the current output direction state of the current output port; when it is determined that the current output direction state of the current output port meets the data output condition, move the current output direction read pointer in the data buffer according to the pointer movement direction, and read the data in the data buffer through the current output direction read pointer.

[0086] Optionally, the data buffer stores data packet micro-slice data of multiple target transactions; the data acquisition module 310 is also used to: determine the current data packet micro-slice data pointed to by the current output direction read pointer in the data buffer, and determine the target transaction to which the current data packet micro-slice data belongs; when it is determined that the output port of the target transaction does not include the current output port, directly move the current output direction read pointer in the direction of pointer movement until it is determined that the output port of the target transaction to which the current data packet micro-slice data pointed to by the current output direction read pointer includes the current output port.

[0087] Optionally, there are multiple current output direction read pointers, and the data buffer stores data packet micro-slice data of multiple target transactions; the data acquisition module 310 is also used to: determine the current data packet micro-slice data pointed to by each current output direction read pointer in the data buffer; when it is determined that the current data packet micro-slice data pointed to by each current output direction read pointer belongs to the same target transaction, read each current data packet micro-slice data from the data buffer through each current output direction read pointer.

[0088] Optionally, the above-mentioned device also includes a data buffer application module, which is used to: determine the length of the data buffer according to the number of data packet micro-slices included in each type of transaction to be processed by the on-chip network routing node; and apply for the data buffer from the cache resources according to the length of the data buffer.

[0089] Optionally, the on-chip network routing node uses a wormhole routing flow control method to perform routing processing on the data output by the output port.

[0090] The above data transmission device can execute the data transmission method provided by any embodiment of the present invention, and has the corresponding functional modules and beneficial effects of the execution method. For technical details not described in detail in this embodiment, please refer to the data transmission method provided by any embodiment of the present invention.

[0091] Since the data transmission device described above is a device that can execute the data transmission method in the embodiment of the present invention, based on the data transmission method described in the embodiment of the present invention, a person skilled in the art can understand the specific implementation of the data transmission device in the embodiment and its various variations, so how the data transmission device implements the data transmission method in the embodiment of the present invention is not described in detail here. As long as a person skilled in the art implements the device used in the data transmission method in the embodiment of the present invention, it belongs to the scope of protection of this application.

[0092] Embodiment 4: Figure 7 A schematic diagram of the structure of an electronic device 10 that can be used to implement an embodiment of the present invention is shown. The electronic device is intended to represent various forms of digital computers, such as laptop computers, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframe computers, and other suitable computers. The electronic device can also represent various forms of mobile devices, such as personal digital processing, cellular phones, smart phones, wearable devices (such as helmets, glasses, watches, etc.) and other similar computing devices. The components shown herein, their connections and relationships, and their functions are merely examples and are not intended to limit the implementation of the present invention described and / or required herein.

[0093] like Figure 7 As shown, the electronic device 10 includes at least one processor 11, and a memory connected to the at least one processor 11, such as a read-only memory (ROM) 12, a random access memory (RAM) 13, etc., wherein the memory stores a computer program that can be executed by at least one processor, and the processor 11 can perform various appropriate actions and processes according to the computer program stored in the read-only memory (ROM) 12 or the computer program loaded from the storage unit 18 to the random access memory (RAM) 13. In the RAM 13, various programs and data required for the operation of the electronic device 10 can also be stored. The processor 11, the ROM 12, and the RAM 13 are connected to each other through a bus 14. The input / output (I / O) interface 15 is also connected to the bus 14.

[0094] A number of components in the electronic device 10 are connected to the I / O interface 15, including: an input unit 16, such as a keyboard, a mouse, etc.; an output unit 17, such as various types of displays, speakers, etc.; a storage unit 18, such as a disk, an optical disk, etc.; and a communication unit 19, such as a network card, a modem, a wireless communication transceiver, etc. The communication unit 19 allows the electronic device 10 to exchange information / data with other devices through a computer network such as the Internet and / or various telecommunication networks.

[0095] The processor 11 may be a variety of general and / or special processing components with processing and computing capabilities. Some examples of the processor 11 include, but are not limited to, a central processing unit (CPU), a graphics processing unit (GPU), various special artificial intelligence (AI) computing chips, various processors running machine learning model algorithms, a digital signal processor (DSP), and any appropriate processor, controller, microcontroller, etc. The processor 11 performs the various methods and processes described above, such as a data transmission method.

[0096] Optionally, the data transmission method is applied to an on-chip network routing node, and the method may include: Acquire data read from the data buffer by the current output direction read pointer; wherein the current output direction read pointer is a read pointer in the output direction read pointer; the number of the output direction read pointers is multiple, and each of the output direction read pointers is used to read output data of an output port; The data read by the current output direction read pointer is output to the current output port corresponding to the current output direction read pointer for output.

[0097] In some embodiments, the data transmission method may be implemented as a computer program, which is tangibly contained in a computer-readable storage medium, such as a storage unit 18. In some embodiments, part or all of the computer program may be loaded and / or installed on the electronic device 10 via the ROM 12 and / or the communication unit 19. When the computer program is loaded into the RAM 13 and executed by the processor 11, one or more steps of the data transmission method described above may be performed. Alternatively, in other embodiments, the processor 11 may be configured to perform the data transmission method in any other appropriate manner (e.g., by means of firmware).

[0098] Various implementations of the systems and techniques described above herein can be implemented in digital electronic circuit systems, integrated circuit systems, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on chips (SOCs), load programmable logic devices (CPLDs), computer hardware, firmware, software, and / or combinations thereof. These various implementations can include: being implemented in one or more computer programs that can be executed and / or interpreted on a programmable system including at least one programmable processor, which can be a special purpose or general purpose programmable processor that can receive data and instructions from a storage system, at least one input device, and at least one output device, and transmit data and instructions to the storage system, the at least one input device, and the at least one output device.

[0099] Computer programs for implementing the methods of the present invention may be written in any combination of one or more programming languages. These computer programs may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device, so that when the computer program is executed by the processor, the functions / operations specified in the flow chart and / or block diagram are implemented. The computer program may be executed entirely on the machine, partially on the machine, partially on the machine and partially on a remote machine as a stand-alone software package, or entirely on a remote machine or server.

[0100] In the context of the present invention, a computer-readable storage medium may be a tangible medium that may contain or store a computer program for use by or in conjunction with an instruction execution system, device, or equipment. A computer-readable storage medium may include, but is not limited to, electronic, magnetic, optical, electromagnetic, infrared, or semiconductor systems, devices, or equipment, or any suitable combination of the foregoing. Alternatively, a computer-readable storage medium may be a machine-readable signal medium. A more specific example of a machine-readable storage medium may include an electrical connection based on one or more lines, a portable computer disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

[0101] To provide interaction with a user, the systems and techniques described herein may be implemented on an electronic device having: a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user; and a keyboard and pointing device (e.g., a mouse or trackball) through which the user can provide input to the electronic device. Other types of devices may also be used to provide interaction with the user; for example, the feedback provided to the user may be any form of sensory feedback (e.g., visual feedback, auditory feedback, or tactile feedback); and input from the user may be received in any form (including acoustic input, voice input, or tactile input).

[0102] The systems and techniques described herein may be implemented in a computing system that includes backend components (e.g., as a data server), or a computing system that includes middleware components (e.g., an application server), or a computing system that includes frontend components (e.g., a user computer with a graphical user interface or a web browser through which a user can interact with implementations of the systems and techniques described herein), or a computing system that includes any combination of such backend components, middleware components, or frontend components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include: a local area network (LAN), a wide area network (WAN), a blockchain network, and the Internet.

[0103] A computing system may include a client and a server. The client and the server are generally remote from each other and usually interact through a communication network. The client and server relationship is generated by computer programs running on the corresponding computers and having a client-server relationship with each other. The server may be a cloud server, also known as a cloud computing server or cloud host, which is a host product in the cloud computing service system to solve the defects of difficult management and weak business scalability in traditional physical hosts and VPS services.

[0104] It should be understood that the various forms of processes shown above can be used to reorder, add or delete steps. For example, the steps recorded in this disclosure can be executed in parallel, sequentially or in different orders, as long as the desired results of the technical solutions disclosed in this disclosure can be achieved, and this document does not limit this.

[0105] The above specific implementations do not constitute a limitation on the protection scope of the present disclosure. It should be understood by those skilled in the art that various modifications, combinations, sub-combinations and substitutions can be made according to design requirements and other factors. Any modification, equivalent substitution and improvement made within the spirit and principle of the present disclosure shall be included in the protection scope of the present disclosure.

Claims

1. A data transmission method, characterized in that: Applied to a network-on-chip routing node, the method comprises: Acquire data read from the data buffer by the current output direction read pointer; wherein the current output direction read pointer is a read pointer in the output direction read pointer; the number of the output direction read pointers is multiple, and each of the output direction read pointers is used to read output data of an output port; Output the data read by the current output direction read pointer to the current output port corresponding to the current output direction read pointer for output; The current output direction read pointer is part or all of the output direction read pointers.

2. The data transmission method according to claim 1, characterized in that: Before obtaining the data read from the data buffer by the read pointer in the current output direction, the method further includes: Determining the number of output ports of the on-chip network routing node; Configure the number of output direction read pointers according to the number of output ports of the on-chip network routing node; A data transmission mapping relationship between the output direction read pointer and each of the output ports is established.

3. The data transmission method according to claim 1, characterized in that: The step of obtaining the data read from the data buffer by the current output direction read pointer includes: Obtaining the current output direction state of the current output port; When it is determined that the current output direction state of the current output port meets the data output condition, the current output direction read pointer is moved in the data buffer according to the pointer movement direction, and the data in the data buffer is read through the current output direction read pointer.

4. The data transmission method according to claim 1, characterized in that: The data buffer stores data packet micro-slice data of multiple target transactions; the method also includes: Determine the current data packet flits pointed to by the current output direction read pointer in the data buffer, and determine the target transaction to which the current data packet flits belong; When it is determined that the output port of the target transaction does not include the current output port, the current output direction read pointer is directly moved in the pointer movement direction until it is determined that the output port of the target transaction to which the micro-slice data of the current data packet pointed to by the current output direction read pointer belongs includes the current output port.

5. The data transmission method according to claim 1, characterized in that: The data buffer stores data packet flit data of multiple target transactions; the step of obtaining the data read from the data buffer by the current output direction read pointer includes: Determine the current data packet flits pointed to by each current output direction read pointer in the data buffer; When it is determined that the current data packet flits pointed to by each current output direction read pointer belong to the same target transaction, the current data packet flits are read from the data buffer via each current output direction read pointer.

6. The data transmission method according to claim 1, characterized in that: Before obtaining the data read from the data buffer by the read pointer in the current output direction, the method further includes: Determining the length of the data buffer according to the number of data packet flits included in each type of transaction to be processed by the on-chip network routing node; The data buffer is requested from a cache resource according to the length of the data buffer.

7. The data transmission method according to any one of claims 1 to 6, characterized in that: The on-chip network routing node uses a wormhole routing flow control method to perform routing processing on the data output by the output port.

8. An electronic device, characterized in that: The electronic device comprises: at least one processor; and a memory in communication with the at least one processor; wherein, The memory stores a computer program executed by the at least one processor, and the computer program is executed by the at least one processor so that the at least one processor can execute the data transmission method according to any one of claims 1 to 7.

9. A computer-readable storage medium, characterized in that: The computer-readable storage medium stores computer instructions, and the computer instructions are used to enable a processor to implement the data transmission method according to any one of claims 1 to 7 when executed.

10. A computer program product comprising a computer program / instructions, wherein: When the computer program / instructions are executed by a processor, the data transmission method according to any one of claims 1 to 7 is implemented.

Citation Information

Patent Citations

  • Output buffer system of on-chip network router

    CN102821046A

  • Acceleration operation device and method, integrated circuit chip, calculation device and board card

    CN114661345A

  • Multicasting using a wormhole routing switching element

    US6542502B1