Routing device and network-on-chip system
Patent Information
- Application Number
- CN202611284409.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2026-08-21
- Publication Date
- 2026-10-23
AI Technical Summary
然而,Mesh网络在设计上通常较为复杂,可能产生循环等待,且局部拥塞会向周围节点扩散
Smart Images

Figure CN122970032A_ABST
Abstract
Description
Technical Field
[0001] The exemplary embodiments disclosed herein generally relate to the field of on-chip network interconnection, and particularly to a routing device and an on-chip network system. Background Technology
[0002] In traditional on-chip network interconnection technologies, crossbar and mesh are two common network topologies. Crossbar, as a centralized interconnection and switching structure, uses a matrix of multiple intersecting nodes to achieve parallel pass-through from any input to any output. Because each node is interconnected with every other node, the crossbar structure typically achieves low forwarding latency in scenarios with a small number of ports. However, as the number of ports increases, the number of connections and intersections in the crossbar structure grows quadratically, posing challenges in terms of area and power consumption in large-scale interconnection scenarios. Mesh, as a distributed two-dimensional network interconnection structure, has nodes arranged in rows and columns, where each node's router is only connected to its neighboring routers, allowing data to be forwarded along multiple paths along rows and columns in the network. However, mesh networks are typically more complex in design, potentially leading to circular waiting, and local congestion can spread to surrounding nodes. In some high-bandwidth, low-latency applications, existing network interconnection solutions still have room for improvement in terms of congestion mitigation capabilities, hardware area optimization, and flexible topology scalability. Summary of the Invention
[0003] In a first aspect of this disclosure, a routing apparatus is provided for routing data packets. The routing apparatus includes: at least one input unit for receiving data from at least one of a plurality of input channels; at least one output unit for outputting data to at least one of a plurality of output channels; and at least one forwarding unit disposed between the at least one input unit and the at least one output unit, configured to: for data received via the at least one input channel, select a target routing path from a plurality of candidate routing paths based on the availability status associated with the plurality of output channels, wherein the target routing path is used to forward the data. Dynamically selecting the target routing path based on the availability status of each output channel, and selecting an uncongested output channel with available capacity to output data, can avoid data concentration on congested paths, reduce congestion and forwarding latency, and improve the throughput and channel utilization of the routing apparatus.
[0004] In some cases, multiple output channels form an output channel group, where each output channel in the output channel group is connected to a different physical channel and is used to forward data to the same target output unit.
[0005] In some cases, the available states include at least one of the following: the connection state of the output channel, the congestion state of the output channel, the priority of the output channel, and the free capacity of at least one buffer located on the candidate routing path.
[0006] In some cases, at least one forwarding unit includes: a plurality of first buffers, corresponding to a plurality of input channels and a plurality of output channels, for buffering data to be output by the forwarding unit to the corresponding output unit; a plurality of row arbitrators, corresponding to a plurality of input channels, for: determining the availability status of a plurality of output channels based on the status of the plurality of first buffers; forwarding data to a target first buffer among the plurality of first buffers based on the availability status of the plurality of output channels; and a plurality of column arbitrators, corresponding to a plurality of output channels, for outputting data in the plurality of first buffers to the corresponding output unit.
[0007] In some cases, the data received from at least one input channel includes routing indication information, and at least one input unit is further configured to: determine a target output unit from at least one output unit based on the routing indication information, wherein the data received from each input channel of at least one input channel shares the target output unit.
[0008] In some cases, multiple line arbitrators are used to: determine a first output channel among multiple output channels associated with a target output unit based on routing indication information, the first output channel being used to output data.
[0009] In some cases, selecting a target routing path from multiple candidate routing paths includes: determining a target first buffer based on the capacity information of multiple first buffers corresponding to multiple output channels, wherein the target output channel corresponding to the target first buffer is in an available state; determining the candidate routing path corresponding to the target output channel as the target routing path; and forwarding the data to the target first buffer.
[0010] In some cases, selecting a target first buffer from a plurality of first buffers includes: determining a first buffer as the target first buffer in response to the first buffer corresponding to the first output channel having free capacity.
[0011] In some cases, selecting a target first buffer from a plurality of first buffers includes: in response to a first buffer corresponding to a first output channel not having free capacity, selecting a target first buffer from a plurality of first buffers based on the state of the plurality of first buffers, the target first buffer having free capacity, the target first buffer corresponding to a second output channel, the second output channel being different from the first output channel.
[0012] In some cases, the column arbitrators in a plurality of column arbitrators are also used to: select a first buffer to be output from at least one first buffer corresponding to the column arbitrator; and forward the data in the first buffer to be output to a target output unit, the target output unit corresponding to a forwarding unit including the column arbitrator.
[0013] In some cases, at least one forwarding unit has a first structure in which multiple input channels are connected to multiple output channels via the forwarding unit.
[0014] In some cases, multiple row arbitrators are also used to: send a query request to each of the multiple first buffers, the query request being used to query the status of the corresponding first buffer; receive status information from each of the multiple first buffers, the status information being used to indicate whether the corresponding first buffer is in a non-empty state; and determine the status of the multiple first buffers based on the status information of the multiple first buffers.
[0015] In some cases, at least one forwarding unit has a second structure in which multiple input channels are connected to a portion of multiple output channels via the forwarding unit.
[0016] In some cases, multiple line arbitrators are also used to: send query requests to a portion of the first buffers corresponding to a portion of the output channels, the query requests being used to query the status of the corresponding first buffers; receive status information from each of the portion of the first buffers, the status information being used to indicate whether the corresponding first buffer is in a non-empty state; and determine the status of the multiple first buffers based on the status information of the portion of the first buffers and the mapping relationship between the multiple input channels and the portion of the output channels.
[0017] In some cases, multiple input channels are connected to some output channels via corresponding forwarding units, and the paths between multiple input channels and other output channels, except for some output channels, are disconnected.
[0018] In some cases, multiple first buffers include partial first buffers corresponding to multiple input channels and partial output channels.
[0019] In some cases, multiple line arbitrators are also used to: determine the mapping relationship between multiple input channels and some output channels in the second mode based on mask information, whereby the mask information indicates the output channels available to the corresponding forwarding unit.
[0020] In some cases, the mask information includes a bitmap, where bits indicate whether the paths between multiple input channels and multiple output channels are connected or disconnected.
[0021] In some cases, the routing device also includes multiple second buffers, corresponding to multiple input channels, for buffering data input to the forwarding unit from the corresponding input unit.
[0022] In some cases, at least one input unit includes multiple input buffers, which correspond to multiple input channels and are used to buffer data received from the corresponding input channels.
[0023] In some cases, at least one output unit includes multiple output arbitrators, which correspond to multiple output channels. The output arbitrators are used to: select a forwarding unit to be output from a forwarding unit corresponding to the output unit based on the state of multiple input buffers of the downstream routing device, wherein at least one input unit of the downstream routing device is coupled to at least one output unit; and forward the data in the forwarding unit to be output to the corresponding input buffer of the downstream routing device through the output channel corresponding to the output arbitrator.
[0024] In some cases, each forwarding unit in at least one forwarding unit corresponds to an input unit and an output unit, and is used to implement cross-forwarding between multiple input channels of an input unit and at least one output channel of multiple output channels of an output unit.
[0025] In a second aspect of this disclosure, a routing method is provided, comprising: receiving data via at least one of a plurality of input channels; acquiring availability status associated with a plurality of output channels; selecting a target routing path from a plurality of routing paths based on the availability status, the target routing path corresponding to a target output channel among the plurality of output channels; and forwarding data via the target routing path. By dynamically selecting unblocked routing paths based on the availability status of the output channels corresponding to the plurality of routing paths, paths can be switched in real time according to the congestion status of the routing paths, avoiding data concentration on congested channels, reducing congestion and forwarding latency, and improving the throughput and channel utilization of the routing device.
[0026] In some cases, the available states include at least one of the following: the connection state of the output channel, the congestion state of the output channel, the priority of the output channel, and the free capacity of at least one buffer located on the candidate routing path.
[0027] In some cases, where the data includes routing indication information, the method further includes determining a target output unit from at least one output unit based on the routing indication information, wherein data received from each input channel corresponding to the at least one output unit shares the target output unit.
[0028] In some cases, the method also includes determining a first output channel among a plurality of output channels associated with a target output unit, based on routing indication information, the first output channel being used to output data.
[0029] In some cases, the method further includes determining a target first buffer based on the capacity information of multiple first buffers corresponding to multiple output channels, wherein the target output channel corresponding to the target first buffer is in an available state; determining the candidate routing path corresponding to the target output channel as the target routing path; and forwarding the data to the target first buffer.
[0030] In some cases, the method further includes identifying the first buffer as the target first buffer in response to the first buffer corresponding to the first output channel having free capacity.
[0031] In some cases, the method further includes, in response to a first buffer corresponding to a first output channel not having free capacity, selecting a target first buffer from a plurality of first buffers based on the states of the plurality of first buffers, the target first buffer having free capacity, the target first buffer corresponding to a second output channel, the second output channel being different from the first output channel.
[0032] In some cases, the data is cached in at least one first buffer before being forwarded, and the method further includes: in response to a selected target routing path, selecting a first buffer to be output from at least one first buffer; and forwarding the data in the first buffer to be output to a target output unit, the target output unit corresponding to the target routing path.
[0033] In a third aspect of this disclosure, an on-chip network system is provided, including a plurality of routing units, wherein each routing unit has a routing means according to any one of the first aspects, adjacent routing units are coupled to each other through one or more channels, and at least one output unit of one routing unit is coupled to at least one input unit of another adjacent routing unit. By coupling multiple routing units having the above-described routing means to each other, efficient data transmission and dynamic forwarding between the multiple routing units can be achieved, thereby alleviating local congestion in the on-chip network and improving the overall communication efficiency, throughput, and scalability of the on-chip network.
[0034] In some cases, multiple routing units are arranged in a two-dimensional array, and each of the multiple routing units is coupled to one or more adjacent routing units through an input channel or an output channel.
[0035] In some cases, multiple output channels of an upstream routing unit and multiple input channels of a downstream routing unit are coupled between two adjacent routing units, and data is forwarded from the upstream direction to the downstream direction in the on-chip network system.
[0036] In some cases, multiple routing units include a first routing unit and a second routing unit, and the number of connection channels between the first routing unit and the second routing unit is greater than the number of connection channels between the second routing units.
[0037] In some cases, the first routing unit is a hotspot node in the on-chip network system, and the amount of data transmitted through the first routing unit is greater than the amount of data transmitted through the second routing unit.
[0038] In a fourth aspect of this disclosure, an electronic device is provided, including an on-chip network system according to a third aspect of this disclosure.
[0039] It should be understood that the content described in this section is not intended to limit the key or essential features of the embodiments of this disclosure, nor is it intended to restrict the scope of this disclosure. Other features of this disclosure will become readily apparent from the following description. Attached Figure Description
[0040] The above and other features, advantages, and aspects of the embodiments of this disclosure will become more apparent from the accompanying drawings and the following detailed description. In the drawings, the same or similar reference numerals denote the same or similar elements, wherein: Figure 1 A schematic block diagram of a network environment according to some scenarios of this disclosure is shown; Figure 2A A schematic diagram of a Crossbar network topology according to some scenarios of this disclosure is shown; Figure 2B A schematic diagram of a Mesh network topology according to some scenarios of this disclosure is shown; Figure 3 A schematic diagram of the overall architecture of a routing device according to some scenarios of this disclosure is shown; Figure 4 A schematic diagram of the internal structure of a forwarding unit according to some scenarios of this disclosure is shown; Figure 5A A schematic diagram of the structure of a forwarding unit in a first mode according to some scenarios of this disclosure is shown; Figure 5B A schematic diagram of the structure of a forwarding unit in second mode according to some scenarios of this disclosure is shown; Figure 6A A schematic diagram of an on-chip network system according to some aspects of this disclosure is shown; Figure 6B A schematic diagram of an on-chip network system with hotspot nodes is shown according to some scenarios of this disclosure; Figure 7A functional block diagram of a routing apparatus according to some scenarios of this disclosure is shown; Figure 8 A flowchart illustrating an example process for data routing based on several scenarios is shown; and Figure 9 A block diagram is shown in which one or more examples of an electronic device can be implemented. Detailed Implementation
[0041] Embodiments of the present disclosure will now be described in more detail with reference to the accompanying drawings. While embodiments of the present disclosure are shown in the drawings, it should be understood that the present disclosure may be implemented in various forms and should not be limited to the embodiments set forth herein. Rather, these embodiments are provided so that the present disclosure will be thorough and complete, and will fully convey the scope of the present disclosure to those skilled in the art.
[0042] The term "comprising" and its variations as used herein signify open inclusion, i.e., "including but not limited to". Unless otherwise stated, the term "or" means "and / or". The term "based on" means "at least partially based on". The terms "one example embodiment" and "one embodiment" mean "at least one example embodiment". The term "another embodiment" means "at least one additional embodiment". The terms "first", "second", etc., may refer to different or the same objects.
[0043] As integrated circuit process nodes continue to shrink, the number of processing cores integrated on a single chip is evolving from multi-core to many-core and even hundreds of cores, leading to an exponential increase in the demand for data communication between various functional modules within the chip. Traditional bus-based interconnect architectures, limited by bandwidth bottlenecks and scalability, can no longer meet the high-throughput, low-latency communication requirements of modern high-performance computing chips, artificial intelligence accelerators, and multi-core processors. Against this backdrop, Network-on-Chip (NoC), as a distributed interconnect architecture based on packet switching, has gradually become the mainstream technology solution in chip design.
[0044] The core design goal of on-chip networks is to achieve efficient data routing between multiple nodes within a limited chip area and power consumption budget, while ensuring system scalability and timing determinism. To achieve this goal, existing technical solutions have proposed various interconnect topologies and routing mechanisms, among which crossbar and mesh are two of the most representative basic architectures.
[0045] Figure 2AA schematic diagram of the Crossbar network topology 200A is shown. The Crossbar employs a centralized, fully interconnected structure, with physical connections between each input port and each output port, and data paths established through crossover point switches. Therefore, data packets can reach their destination without multiple hops, offering advantages such as low forwarding latency, strong timing determinism, and theoretically non-blocking performance. However, the number of connections and crossover points increases quadratically with the number of ports, significantly increasing wiring resources, chip area, and power consumption when there are many routing nodes. Furthermore, adding a new port typically requires expanding the entire crossover matrix, resulting in poor scalability.
[0046] Figure 2B A schematic diagram of a Mesh network topology 200B is shown. Mesh employs a distributed two-dimensional network structure, with routing nodes arranged in rows and columns. Each node is physically connected only to its adjacent nodes, and data packets are forwarded tier by tier along the row or column direction through multiple intermediate nodes. Compared to Crossbar, the number of connections in a Mesh network typically grows linearly with the number of nodes. Adding a new node only requires expanding adjacent connections, thus offering better scalability and supporting multi-path routing. However, multi-level hops increase communication latency with transmission distance; multi-path forwarding can also create circular dependencies, requiring mechanisms such as dimensional order routing and virtual channels to avoid deadlocks. Furthermore, different data flows may compete for the same nodes or channels, easily leading to and spreading local congestion.
[0047] While mesh architecture has achieved breakthroughs in scalability, its inherent multi-hop latency and congestion propagation issues limit its performance in latency-sensitive applications. To balance the low latency of crossbars with the scalability of meshes, some solutions employ a packet interconnection structure. For example, some solutions propose full or high-density connections within a group, with a small number of global channels connecting groups, thereby reducing global cabling and maintaining high bandwidth utilization. Compared to traditional topologies, this solution can reduce the number of global cables by approximately 20% for the same network size. These solutions introduce virtual channels and flow control mechanisms to improve network performance. In these solutions, multiple independent logical channels can be divided on the same physical channel, and each virtual channel can be equipped with an independent buffer. Furthermore, packets of different service types or priorities can be assigned to different virtual channels, thus avoiding the situation where low-priority packets block the forwarding of high-priority packets. Downstream nodes in the routing network signal the availability of their buffer space to upstream nodes. Upstream nodes can only send data packets when they have valid feedback, thus enabling back-pressure control to be proactive and preventing data from being injected into already congested downstream nodes.
[0048] Some implementations propose further improvements to enhance switching efficiency. For example, some schemes configure stash buffers and dedicated storage virtual channels within the routing network. Data can be written to the stash buffer when a packet is at the head of a congested input queue or when it is at the last-level switch before reaching the target output endpoint. Alternatively, data can be written to the stash buffer when a regular virtual channel is congested and cannot continue forwarding, or when a storage virtual channel has an idle path. When the target output port of the routing network has receiving resources, the control logic can schedule the stash data in the stash buffer and transmit it to the output port via the virtual channel. These schemes utilize the surplus available bandwidth within the Crossbar to achieve global shared access to the idle buffer memory of all ports, thus alleviating data stagnation issues in congested scenarios to some extent.
[0049] However, these solutions still have some key problems. For example, the backend implementation of the routing network is limited. Some existing solutions are based on the Crossbar structure, where the number of connections increases quadratically with the number of ports. In large-scale or ultra-large-scale interconnect scenarios, the difficulty of backend routing increases significantly, leading to decreased area utilization, difficulty in routing convergence, and ultimately unacceptable chip costs. Secondly, this architecture has limited congestion mitigation capabilities. The input and output ports of existing solutions use static routing mapping, i.e., fixed-dimensional connection relationships. When congestion occurs on a certain path, the data flow on that path can only be passively blocked or temporarily stored using a temporary buffer, and dynamic path switching is not possible. This fixed mapping and passive waiting mechanism limits the network's ability to adapt to congestion. In addition, the architectures in these solutions also suffer from high resource overhead. The temporary buffer, as an additional storage resource superimposed on the Crossbar architecture, further increases the system's area and power consumption. In situations with strict area and power consumption constraints, such an architecture may not be applicable. Besides, existing solutions also suffer from insufficient scalability and flexibility, and difficulty in solving congestion problems at nodes with concentrated traffic. In existing solutions, once the topology is determined, its port mappings and interconnection patterns are fixed. Key parameters such as bandwidth, number of access points, and routing strategies are difficult to dynamically adapt to system application requirements. Furthermore, the ability to reuse basic units to support compatibility and expansion across various network structures is lacking. In the network topology of existing solutions, some nodes become data transmission hotspots due to a large number of connected nodes, easily forming network bottlenecks. Existing solutions lack a mechanism to dynamically increase the number of channels at hotspot nodes to improve traffic processing capacity without altering the overall network structure.
[0050] In summary, existing on-chip network interconnection technologies urgently need to address the following technical issues: how to achieve dynamic routing to alleviate network congestion (current static routing mapping mechanisms lack dynamic switching capabilities when paths are congested, requiring the design of a routing mechanism that supports adaptive selection based on real-time status across equivalent output dimensions); how to optimize hardware area overhead (while maintaining dynamic routing capabilities, a configurable cross-connect reduction mechanism needs to be designed to address the area and power consumption constraints of large-scale NoCs); how to achieve flexible scalability (a modular, parameterized router basic unit needs to be designed, enabling flexible adjustment of port quantity, bandwidth, and frequency according to system requirements, and compatibility with various network topologies); and how to solve the hotspot and bandwidth balancing problem (a dynamic channel expansion mechanism for hotspot nodes needs to be designed to improve bandwidth processing capacity in hotspot areas without altering the overall network structure).
[0051] In view of this, exemplary embodiments of this disclosure provide a routing apparatus and an on-chip network system. The routing apparatus includes at least one input unit for receiving data from at least one of a plurality of input channels, and at least one output unit for outputting data to at least one of a plurality of output channels. It also includes at least one forwarding unit, each disposed between a corresponding input unit and a corresponding output unit, configured to: for data received via at least one of the input channels, select a target routing path from a plurality of candidate routing paths based on the availability status associated with the plurality of output channels, the target routing path being used to forward the data. Each of the at least one forwarding unit includes a plurality of first buffers, a plurality of row arbiters, and a plurality of column arbiters. The plurality of first buffers correspond to the plurality of input channels and the plurality of output channels, and are used to buffer data to be output by the forwarding unit to the corresponding output unit. The plurality of row arbiters correspond to the plurality of input channels and are used to forward data in a plurality of second buffers to a target first buffer among the plurality of first buffers based on the status of the plurality of first buffers. The plurality of column arbiters correspond to the plurality of output channels and are used to output data in the plurality of first buffers to the corresponding output unit. Each forwarding unit in at least one forwarding unit may also include multiple second buffers, corresponding to multiple input channels, for buffering data input to the forwarding unit from the corresponding input unit.
[0052] Based on this scheme, a dynamic routing topology routing architecture is proposed, which can realize a dynamic selection mechanism for data output channels. By introducing multiple row arbitrators in the forwarding unit, data packets are dynamically forwarded to target first buffers with idle capacity based on the real-time status of multiple first buffers. When a certain output channel is congested, data packets can be redirected to other output channels for forwarding, avoiding the blocking problem under the fixed mapping mechanism of traditional schemes. This effectively reduces the average network communication latency, improves the overall throughput and link utilization, and reduces the backpressure propagation range caused by congestion, thereby improving the global traffic balance of the network.
[0053] The on-chip network system includes multiple routing units, each of which has the routing means described above. Adjacent routing units are coupled to each other through one or more channels, and at least one output unit of one routing unit is coupled to at least one input unit of another adjacent routing unit.
[0054] Based on this solution, modular design of on-chip network systems can be achieved, supporting flexible configuration of parameters such as the number of ports, channel width, and operating frequency. This allows for adaptation to various application scenarios, from small-scale systems to large, complex networks. Using the same routing unit, multiple network topologies can be supported through parameterized configuration and topology reconfiguration, eliminating the need for redesigning for each topology. This reduces the design cycle for adapting to multiple scenarios and improves system scalability.
[0055] An input unit can generally be understood as a processing module in a routing device responsible for receiving data packets from an external network and distributing them to the corresponding forwarding units. For example, an input unit may include multiple input buffers, each corresponding to an input channel, used to buffer data packets received from that input channel. However, it is not limited to this; any module capable of implementing the above-mentioned data reception and buffering functions is applicable.
[0056] An output unit can generally be understood as a processing module in a routing device responsible for receiving data packets from the forwarding unit and outputting the data packets to an external network or downstream routing device through a corresponding output channel. For example, an output unit may include multiple output arbitrators, each corresponding to an output channel. However, this disclosure is not limited to this, and its specific form is not restricted.
[0057] A forwarding unit can generally be understood as a module located between the input and output units, responsible for cross-forwarding data packets from multiple input channels to multiple output channels. For example, each forwarding unit can correspond to one input unit and one output unit, using internal buffers and arbitrators to perform data packet routing and forwarding. However, it is not limited to this; any structure capable of implementing the above-mentioned cross-forwarding function is applicable.
[0058] The second buffer can generally be understood as a buffer queue within the forwarding unit corresponding to the input channel, used to buffer data packets entering the forwarding unit from the corresponding input unit. For example, the second buffer can be implemented as a First-In First-Out (FIFO) queue. However, it is not limited to this, and this disclosure does not restrict its specific implementation.
[0059] The first buffer can generally be understood as a buffer queue at the intersection of the input and output channels within the forwarding unit, used to buffer data packets allocated by the arbitrator and waiting to be output via the corresponding output channel. For example, the first buffer can be implemented as a depth-configurable first-in-first-out (FIFO) queue. However, it is not limited to this, and this disclosure does not restrict its specific implementation.
[0060] A row arbitrator can generally be understood as the arbitration logic within a forwarding unit corresponding to each input channel. It dynamically forwards data packets from a corresponding second buffer to a target first buffer based on the real-time availability of multiple first buffers. For example, the row arbitrator can determine an available output path by querying whether the downstream first buffer is idle. However, this disclosure does not limit its specific arbitration strategy.
[0061] A column arbitrator can generally be understood as the arbitration logic within a forwarding unit corresponding to each output channel. It selects one of multiple first buffers corresponding to that output channel for output and forwards the data packet in the selected first buffer to the corresponding output unit. For example, a column arbitrator can employ various arbitration strategies such as round-robin, priority, or weighted arbitration. However, it is not limited to these, and this disclosure does not impose any restrictions.
[0062] Input and output channels can generally be understood as data transmission paths between a routing device and an external network or adjacent routing devices. In some cases, multiple channels within the same input unit or the same output unit can be considered as routing-equivalent physical channels; that is, from the perspective of network routing, data packets from different input channels of the same input unit can share the same routing destination. However, this disclosure is not limited to this, and does not restrict the specific implementation of the channels.
[0063] Figure 1 A schematic diagram of example environment 100 is shown. (e.g.) Figure 1 As shown, example environment 100 may include electronic device 101, electronic device 102, router 110, base station 105, and network 106.
[0064] exist Figure 1In environment 100, electronic device 101 can establish a connection with base station 105 through a first communication link, and then access remote services via network 106. Base station 105 can be any type of wireless communication base station, including but not limited to: 4G Long Term Evolution (LTE) base station, 5G New Radio (NR) base station, 6G base station, or any combination thereof. Network 106 can be a Public Land Mobile Network (PLMN), the Internet, a corporate intranet, a Local Area Network (LAN), a Wide Area Network (WAN), or any combination thereof.
[0065] Electronic device 101 can also establish a connection with router 110 via a second communication link. Router 110 can be a wired router or a wireless router, providing network access services within a local area network for electronic device 101, and further communicating with external networks through network 106. The communication connection between electronic device 101 and router 110 can be achieved through Wireless Fidelity (WiFi) connection, Bluetooth connection, Near Field Communication (NFC) connection, Ultra-Wideband (UWB) connection, or any combination of the foregoing.
[0066] Electronic device 102 may include a computer device and can establish a connection with router 110 via a third communication link. Electronic device 102 may be any type of mobile terminal, fixed terminal, or portable terminal, including laptop computers, notebook computers, netbook computers, desktop computers, tablet computers, media computers, multimedia tablets, handheld computers, personal digital assistants (PDAs), or any combination thereof. The communication connection between electronic device 102 and router 110 may be established via a wired method (e.g., Ethernet connection) or a wireless method (e.g., WiFi connection).
[0067] exist Figure 1 In example environment 100, electronic device 101 can maintain multiple connections with base station 105 and router 110 simultaneously. In some cases, electronic device 101 can receive services such as notifications, data synchronization, or software updates from the network side through base station 105; at the same time, electronic device 101 can perform local data interaction with electronic device 102 through router 110, such as file transfer, device pairing, configuration synchronization, etc.
[0068] In some cases, electronic device 102 may run an application that supports the management of smart wearable devices. This application can be any suitable type of application for device management, including but not limited to: device management applications in the operating system, smart wearable device companion applications, health data management applications, or other suitable applications. Users can interact with this application through electronic device 102 to perform operations such as configuration management, data viewing, and function settings for electronic device 101.
[0069] Network 106 can be a single physical network, a network cluster of multiple physical networks, or a distributed network system. It can also be a cloud network providing basic cloud computing services such as cloud services, cloud databases, cloud computing, cloud functions, cloud storage, network services, cloud communication, middleware services, domain name services, security services, content delivery networks, and artificial intelligence platforms. Network 106 may include, for example, computing systems / servers, such as mainframes, edge computing nodes, and computing devices in a cloud environment. Network 106 can provide backend services for electronic devices 101 and 102.
[0070] A communication connection can be established between base station 105 and network 106. A communication connection can also be established between router 110 and network 106. The communication connection can be established via wired or wireless means. The communication connection can include, but is not limited to, fiber optic connections, Ethernet connections, mobile network backhaul connections, etc. In some cases, base station 105, router 110, and network 106 can achieve signaling interaction and data transmission through their mutual communication connections.
[0071] The examples described herein can be implemented at router 110. It should be understood that the structure and function of the various elements in environment 100 are described for illustrative purposes only and do not imply any limitation on the scope of the scheme.
[0072] The aforementioned communication solution for smart wearable devices can be applied to various scenarios. In some cases, in a single-device scenario, electronic device 101 can independently access network services through base station 105 or router 110. In a multi-device scenario, router 110 can act as a data interaction node, enabling cross-device data synchronization and interaction with electronic devices 101 and 102, other mobile terminals, smart home devices, etc. In a hybrid connectivity scenario, electronic devices 101 and 102 can simultaneously utilize cellular network connections and WiFi connections, dynamically selecting the optimal communication path based on network quality, power consumption requirements, or service type.
[0073] Figure 3 A schematic diagram of the overall architecture of the routing device 300 according to some scenarios of this disclosure is shown. The following will be combined with... Figure 3 The overall composition of the routing device 300 is described in detail.
[0074] The routing device of this scheme includes at least one input unit for receiving data from at least one input channel among a plurality of input channels, and at least one output unit for outputting data to at least one output channel among a plurality of output channels. The routing device also includes at least one forwarding unit, each disposed between a corresponding input unit in the at least one input unit and a corresponding output unit in the at least one output unit.
[0075] like Figure 3 As shown, the routing device 300 may include multiple input units, such as input unit 310 (labeled INP0) and input unit 315 (labeled INP1). Input units 310 and 315 are used to receive data from multiple input channels, such as... Figure 3 As shown, input units 310 and 315 can each receive data from input channel 0 and / or input channel 1. In some cases, multiple output channels can form an output channel group, where each output channel in the output channel group is connected to a different physical channel and is used to forward data to the same target output unit. In this document, input channels can also be referred to as "input dimensions". Multiple input channels corresponding to the same input unit can form an input group, such as... Figure 3 As shown, input channel 0 and input channel 1 corresponding to input unit 310 form an input group 1, and input channel 0 and input channel 1 corresponding to input unit 315 form an input group 2. Multiple input channels in the same input group can be equivalent to each other.
[0076] In some cases, the routing device 300 may also include multiple output units, such as output unit 330 (labeled OUTP0) and output unit 335 (labeled OUTP1). Output unit 330 and output unit 335 are used to output data to multiple output channels, for example, such as... Figure 3 As shown, output unit 330 and output unit 335 can each output data to output channel 0 and / or output channel 1. In this document, output channel can also be referred to as "output dimension". Multiple output channels corresponding to the same output unit can form an output group, with different output units corresponding to different output channel groups, used to output data packets from the forwarding unit to downstream routing devices or destination nodes through the corresponding output channels. Figure 3 As shown, output channel 0 and output channel 1 corresponding to output unit 330 form an output group 1, and output channel 0 and output channel 1 corresponding to output unit 335 form an output group 2. Multiple output channels in the same output group can be equivalent to each other.
[0077] In this document, "output channel" refers to one or more output channels that can be used to forward data, provided that the target output unit or routing direction constraints of the data are met; "routing path" can include a path from the input channel to the candidate output channel via the forwarding unit, and may further include input-side buffers, output-side buffers, arbitrators, or physical connections on the path. The target routing path is the routing path selected from multiple candidate routing paths based on their availability for the current data forwarding.
[0078] The availability status includes at least one of the following: the connection status of the output channel, the congestion status of the output channel, the priority of the output channel, and the idle capacity of at least one buffer located on the candidate routing path. The availability status related to the output channel can reflect whether the output channel itself can receive or send data, or whether the output-side buffer, such as the Element FIFO corresponding to the output channel, can receive data to be forwarded. For example, the availability status can be determined by one or more of the following: channel enable signal, downstream backpressure signal, buffer remaining capacity, occupancy, queue length, data dwell time, or expected waiting time. The arbitrator can compare the availability of multiple candidate routing paths according to a preset priority, threshold comparison, or round-robin method. Therefore, the availability status is not limited to a binary state of "idle" or "non-empty," but can represent the availability of candidate routing paths, thus providing a more granular selection basis for dynamic routing.
[0079] In some scenarios, when multiple candidate output channels exist, the availability of these channels also includes their priority. This allows for further selection of the target routing path based on the data's service priority and the output priority of each candidate channel. In some cases, for higher-priority data, a corresponding high-priority output channel can be selected for output. For example, for data whose service priority meets preset conditions, a high-priority output channel corresponding to that service priority can be preferentially or consistently selected. When this high-priority output channel does not meet the forwarding conditions, an alternative output channel can be selected based on the availability of other candidate output channels. Thus, while considering congestion avoidance, it is possible to ensure that high-priority services receive priority channel resources, improving service quality and the determinism of service scheduling.
[0080] In some cases, the output priority of an output channel can be preset. For example, a fixed output priority can be set for each output channel during the design phase of the electronic device, or the output priority of each output channel can be configured through registers, configuration files, or control signals. Additionally or alternatively, the output priority can also be dynamically adjusted according to the operating status of the electronic device, service load, quality of service requirements, or network operating status.
[0081] By allowing multiple selectable physical channels within the same output channel group, different forwarding paths can be selected without changing the target output unit of the data, thereby improving the flexibility of routing selection. In routing device 300, an input unit and an output unit constitute a routing path. Data packets enter routing device 300 from the input unit and are output from the corresponding output unit. Different input units and output units form different routing paths. The forwarding of data from the input unit to the output unit is completed by forwarding units, each of which is located between a corresponding input unit and an output unit.
[0082] In some cases, the routing device 300 may also include multiple forwarding units, each located between its corresponding input and output units, and together with the corresponding input and output units, forming a routing path. For example, as... Figure 3 As shown, a forwarding unit 320 can be provided between input unit 310 and output unit 330, a forwarding unit 340 can be provided between input unit 315 and output unit 330, a forwarding unit 350 can be provided between input unit 310 and output unit 335, and a forwarding unit 360 can be provided between input unit 315 and output unit 335. Each forwarding unit can be independent of each other.
[0083] In some cases, each forwarding unit in at least one forwarding unit corresponds to an input unit and an output unit, and is used to implement cross-forwarding between multiple input channels of an input unit and at least one output channel of multiple output channels of an output unit. Taking forwarding unit 320 as an example, the forwarding unit is responsible for forwarding the data received by input unit 310 from input channel 0 and / or input channel 1 to output channel 0 and / or output channel 1 of output unit 330, realizing cross-forwarding between multiple input channels and multiple output channels. Thus, data packets from different input units can reach different output units via different forwarding units.
[0084] In this manner, when the routing device 300 includes n input units and m output units, the total number of forwarding units in the routing device 300 can be n×m, with each forwarding unit responsible for forwarding data packets between a pair of input units and output units. Alternatively or additionally, the organization of the forwarding units can be flexibly adjusted according to system requirements, and this disclosure does not impose any restrictions on this.
[0085] In some cases, each forwarding unit may include multiple second buffers and multiple first buffers, as well as multiple row arbiters and multiple column arbiters. For example, as Figure 3As shown, the forwarding unit 320 may include multiple second buffers 321 (labeled FullMesh First-In-First-Out, FM FIFO), multiple row arbiters 322 (labeled RowArbiter, ROW ARB), multiple first buffers 323 (labeled Element First-In-First-Out, ELMFIFO), and multiple column arbiters 324 (labeled Column Arbiter, COL ARB). The multiple second buffers 321 correspond to multiple input channels and are used to buffer data packets entering the forwarding unit 320 from the input unit 310. For example, as... Figure 3 As shown, the forwarding unit may include two second buffers 321, respectively used to buffer data received from input channel 0 and input channel 1 corresponding to the input unit 310. The line arbitrator 322 corresponds to multiple input channels and is used to dynamically forward data packets to a target first buffer based on the states of multiple first buffers 323. For example, as... Figure 3As shown, the forwarding unit may include two row arbitrators 322, each used to forward data packets to a first buffer based on its state. Before the row arbitrators 322 arbitrate the data forwarding path, the data is buffered in the corresponding second buffer 321. When a row arbitrator selects a target first buffer with available capacity, it forwards the data in the second buffer 321 to that target first buffer. A first buffer 323 corresponds to the intersection of multiple input channels and multiple output channels and is used to buffer data packets waiting to be output. A column arbitrator 324 corresponds to multiple output channels and is used to select one of the multiple first buffers 323 corresponding to that output channel for output. In this document, selecting a buffer with available capacity does not require that the buffer be completely idle; the arbitrator can select it as the target routing path based on its availability status (e.g., connection status, remaining available capacity, queuing time, output channel priority, etc.) meeting forwarding conditions or being superior to other candidate paths. For example, a row arbitrator 322 may select a first buffer 323 as the target first buffer in response to the first buffer 323 having a remaining available capacity greater than a preset threshold capacity or greater than the remaining available capacity of other first buffers. For example, the row arbitrator 322 can select a first buffer as the target first buffer if the queuing time of the data in the first buffer 323 is less than a preset threshold time or less than the queuing time of other first buffers. In some cases, the data to be forwarded may have a priority (e.g., the data may include priority indication information), and the row arbitrator 322 can select the output channel with the corresponding priority from multiple output channels according to the data priority. For example, if the data to be forwarded has a high priority, the row arbitrator 322 can determine that the high-priority output channel is available and select the first buffer 323 corresponding to that high-priority output channel to output the data. Accordingly, in this document, a buffer "without idle capacity" does not require that the buffer's capacity be fully occupied, but can be determined to be blocked based on its availability not meeting the forwarding conditions or being worse than other forwarding paths.
[0086] For example, such as Figure 3 As shown, the forwarding unit 320 may include four column arbitrators 321, corresponding to the paths from the first input channel to the first output channel, from the first input channel to the second output channel, from the second input channel to the first output channel, and from the second input channel to the second output channel, respectively. Each column arbitrator 324 is for the two output channels of the same target output unit. The specific process of the row arbitrator 322 arbitrating the data forwarding path will be referred to below. Figure 4 Further description.
[0087] In some cases, a column arbiter among multiple column arbiters is also used to: select a first buffer to be output from at least one first buffer corresponding to the column arbiter, and forward the data in the first buffer to be output to a target output unit, the target output unit corresponding to a forwarding unit including the column arbiter. For example, as Figure 3 As shown, the column arbitrator 324 selects one of its two corresponding first buffers for output based on downstream routing unit information and routing data. Before the column arbitrator 324 performs arbitration and selects the output, the data is temporarily stored in the first buffer 323 until the column arbitrator 324 selects the data in the first buffer 323 for output.
[0088] In some cases, at least one input unit may include multiple input buffers, each corresponding to a multiple input channel, and these buffers are used to buffer data received from the corresponding input channel. For example, such as Figure 3 As shown, the input unit 310 may include two input buffers 311 (labeled Input FIFO, INP FIFO, INP FIFO), which correspond to two input channels connected to the input unit 310, namely input channel 0 and input channel 1. Each input buffer 311 is used to buffer data packets received from the corresponding input channel. In this way, data packets from different input channels can be buffered and processed independently. Data packets from different input channels can be independently buffered in the input buffers before entering the forwarding unit, which helps to avoid data contention between different input channels. Alternatively or additionally, the input buffers may also adopt other storage structures that can implement data buffering functions, including but not limited to first-in-first-out queues, circular buffers, etc., which are not limited in this disclosure.
[0089] As described above, the routing device 300 receives data packets from upstream via input units. In some cases, the data received by the input units from at least one input channel includes routing indication information. Based on the routing indication information, the input units determine a target output unit from at least one output unit, wherein data received from each input channel of the at least one input channel shares the target output unit.
[0090] For example, routing indication information may include a ROP signal. The data received by input unit 310 may include a Routing Output Port (ROP) signal. The ROP signal can be calculated by the upstream hop routing node based on the destination address and the status of the downstream routing device, indicating the target output unit. Within the same input group, data from all input channels share the same ROP value. Based on the ROP signal, input unit 310 can determine the target output group and target output unit of the input data, thereby selecting the corresponding routing path and the corresponding forwarding unit. For example, based on the ROP signal, the input unit can determine the target output group and corresponding output unit of the input data. For data received from multiple input channels for the same output unit, the input unit will determine the same target output unit for the data received through all input channels. For example, if input unit 310 receives data from input channel 0 and input channel 1, based on the ROP signal carried in the data, input unit 310 determines to route the data to output unit 330 for output, and all data received from input channel 0 and input channel 1 are routed to output unit 330. Once the target output unit is determined, the routing path of the data in the routing device 300 can be determined based on the combination of the input and output units. For example, as Figure 3 As shown, the input unit 310 determines the output unit 330 as the target output unit, and accordingly the input unit 310 sends data to the forwarding unit 320 to forward the data to the output unit 330.
[0091] Before the input unit 310 determines the target output unit 330 and writes the data to the corresponding forwarding unit 320, the multiple input buffers 311 in the input unit 310 can temporarily buffer the data in the corresponding input channel. Until the input unit determines that it needs to send the data to the forwarding unit 320, the input unit can send the data from the input buffers 311 to the multiple second buffers of the forwarding unit 320.
[0092] The ROP signal included in the data received by the input unit only indicates the target output unit, used to direct data to the destination selected by the upstream routing node, and does not directly indicate which specific channel among multiple input and output channels the data will be transmitted through in multiple intermediate routing devices. Within the same input or output group, different input and output channels are equivalent to each other, and data can be transmitted from any channel provided there is no congestion in the routing device. By first determining the target output unit and then selecting the target output channel from its associated candidate output channels, both target routing constraints and dynamic congestion avoidance can be considered.
[0093] In some cases, after the input unit 310 determines the target output unit 330 and writes the data to the corresponding forwarding unit 320, the multiple line arbitrators 322 in the forwarding unit 320 determine to transmit the data through at least one of the multiple output channels. For example, as Figure 3 As shown, input unit 310 writes data into multiple second buffers 321 of forwarding unit 320. The row arbitrators corresponding to the multiple second buffers 321 determine the corresponding output channel based on the ROP signal. For example, data received by input unit 310 through input channel 0 is sent to the second buffer 321 corresponding to input channel 0. The row arbitrator 322 in forwarding unit 320 corresponding to input channel 0 first determines the target output group as output unit 330 based on the ROP signal. Then, the row arbitrator 322 can determine the first output channel based on the state of the buffers corresponding to different output channels of output unit 330, and send the data to the first buffer corresponding to the first output channel. For example, as... Figure 3 As shown, the output channels of the output unit 330 may include output channel 0 and output channel 1, and the row arbitrator 322 may be connected to the first buffer corresponding to output channel 0 and output channel 1, respectively. Based on information such as the state of the first buffer, the row arbitrator 322 may determine to send data to output channel 0 and write the data into the first buffer corresponding to output channel 0.
[0094] Based on this scheme, the row arbitrator 322 can determine whether there is a blockage in the routing path corresponding to the current output channel based on the status of the downstream buffer. If there is a blockage, the row arbitrator can redirect the data to other buffers with free capacity to ensure that the data transmission is not affected by local blockage, realize dynamic routing connection, reduce communication latency, and improve data transmission efficiency.
[0095] The specific implementation of the arbitrator dynamically selecting the routing path based on the state of the first buffer will be discussed in the following section. Figure 4 Further detailed description.
[0096] In some cases, at least one output unit of the routing device includes multiple output arbitrators, which correspond to multiple output channels. For example, such as Figure 3As shown, the output unit 330 may include two output arbitrators 331, corresponding to output channel 0 and output channel 1, respectively. The output arbitrator among the multiple output arbitrators can select the forwarding unit to be output from the forwarding units corresponding to the output unit based on the state of multiple input buffers of the downstream routing device. At least one input unit of the downstream routing device is coupled to at least one output unit. Through the output channel corresponding to the output arbitrator, the output arbitrator can forward the data in the forwarding unit to be output to the input buffer corresponding to the downstream routing device.
[0097] The multiple output arbitrators 331 in output unit 330 can determine which column arbitrator's data should be output to the next routing device. Routing device 300 can be configured in a two-dimensional matrix network, and can transmit data with adjacent routing devices via connections. Multiple input channels of routing device 300 can be connected to multiple output channels of upstream adjacent routing devices, and multiple output channels of routing device 300 can be connected to multiple input channels of downstream adjacent routing devices. A network consisting of multiple routing devices will be referred to below. Figure 6A and Figure 6B Further details are provided. In some cases, the arbitration criterion of the output arbitrator may include whether the input buffer of the downstream routing device has available space. In this way, if the input buffer of the downstream routing device is full, the output arbitrator can suspend sending data packets to that downstream routing device, thereby avoiding data packet loss to some extent through a backpressure mechanism. Additionally or alternatively, the output arbitrator may also employ other arbitration strategies, which are not limited in this disclosure.
[0098] Figure 4 A schematic diagram 400 shows the internal structure of the forwarding unit 410 according to some scenarios of this disclosure. The following will be combined with... Figure 4 The internal data flow path of the forwarding unit 410 is described in detail.
[0099] Figure 4 The forwarding unit 410 shown may correspond to a forwarding unit in the routing device 300. For example, the forwarding unit 410 may correspond to... Figure 3 The forwarding unit 320 is located between the input unit 310 and the output unit 330. For example... Figure 4 As shown, the forwarding unit 410 may include a second buffer 411 corresponding to input channel 0 and a second buffer 412 corresponding to input channel 1. The line arbitrator 421 can forward data from the corresponding input channel to one of multiple output channels based on the load of the first buffer, to implement a dynamic routing architecture. Figure 4As shown, after a data packet enters the forwarding unit 410 from the input unit, it can be written into the corresponding second buffer 411 or second buffer 412 for buffering. In this way, data packets from different input channels can be independently and temporarily stored in their respective corresponding second buffers. In some cases, the forwarding unit 410 may also include a line arbitrator 421 corresponding to input channel 0 and a line arbitrator 422 corresponding to input channel 1. Taking input channel 0 as an example, when the input unit receives data from input channel 0, it can first send the data packet along path A to the second buffer 411 in the forwarding unit 410 corresponding to input channel 0. The line arbitrator 421 corresponding to the second buffer 411 can determine the target first buffer from among the multiple first buffers based on the states of the multiple first buffers.
[0100] In some cases, in response to the first buffer corresponding to the first output channel having idle capacity, the row arbitrator can identify the first buffer as the target first buffer and forward the data to the target first buffer. This bypasses the congested channel, reducing data latency and the extent to which congestion propagates upstream.
[0101] For example, such as Figure 4 As shown, the row arbitrator 421 is used to forward data packets in the second buffer 411 to a target first buffer among a plurality of first buffers. In the example shown in the figure, the forwarding unit 410 may include a first buffer 431 located at the intersection of row 0, column 0 (R0C0), a first buffer 433 located at the intersection of row 0, column 1 (R0C1), a first buffer 432 located at the intersection of row 1, column 0 (R1C0), and a first buffer 434 located at the intersection of row 1, column 1 (R1C1). Thus, data packets from each input channel can be forwarded to the first buffer corresponding to any output channel. The row arbitrator 421 can query the status of the corresponding downstream first buffer to determine whether there is congestion in the first buffer on different routing paths. For example, the row arbitrator 421 may determine that the first buffer 431 corresponding to output channel 0 has free capacity, that is, there is no congestion in the routing path. In this case, the row arbitrator 421 may determine that the first buffer 431 is the target first buffer and forward the data to the first buffer 431.
[0102] For example, such as Figure 4As shown, the line arbitrator 421 can determine that the first buffer 431 corresponding to output channel 0 has free capacity and forward data along path B to the first buffer 431. In this way, if the target output channel is not congested, data packets can be forwarded to the corresponding first buffer along the default path, thereby enabling the forwarding process from the input channel to the output channel to be completed with lower latency. Those skilled in the art will understand that the above-described default path selection method is merely an example and does not constitute a limitation on the technical solution of this disclosure.
[0103] In some cases, the first buffer corresponding to output channel 0 may be full and unable to continue writing newly received data. The line arbitrator can switch forwarding paths dynamically based on whether the first buffer has available space. For example, first buffer 431 may be full and have no free capacity. To prevent data congestion at path B, the line arbitrator can select a target first buffer with free capacity from among multiple first buffers based on their states. The line arbitrator can then forward data to this target first buffer, which corresponds to a second output channel, different from the first output channel.
[0104] For example, the row arbitrator 421 can check the status of the first buffers corresponding to all output channels under the target output unit in real time according to the arbitration strategy. The row arbitrator 421 can send query requests to the first buffers 431 and 433, and determine the availability status of the corresponding first buffers based on the non-empty signals of the first buffers 431 and 433. For example, when the first buffer 431 corresponding to output channel 0 at path B has no free capacity (i.e., it is blocked), the row arbitrator 421 can redirect data to the first buffer 433 with free capacity corresponding to the same output unit. In this way, data can be redirected from the originally blocked path B to the non-blocked path C, thereby bypassing the blocked first buffer 431 and realizing dynamic routing.
[0105] In this case, the arbitrator 421 sends the data in the second buffer 411 to the first buffer 433, thereby switching the data routing path.
[0106] The routing path switching process described above for input channel 0 is only one example of routing selection for a single data packet. The routing path switching scheme described here has bidirectional universality. For example, during subsequent data transmission, if the first buffer 433 becomes blocked while the first buffer 431 becomes idle, subsequent data packets from the same input channel can be redirected by the row arbitrator 421 and written into the first buffer 431, and output by the corresponding column arbitrator.
[0107] In this way, for each incoming data packet, the selection of the data routing path is determined by the row arbitrator based on the current state of the first buffers of each output channel, enabling real-time dynamic routing and selecting the optimal routing path based on the downstream idle state. Here, the roles of multiple first buffers can be interchanged based on their idle state, and there are no fixed paths between different input and output channels. Based on this scheme, balanced utilization of all available output channels in the input and output groups can be achieved, avoiding long-term congestion and bandwidth waste caused by fixed mappings.
[0108] In some cases, the forwarding unit 400 may further include a column arbitrator 441 corresponding to output channel 0 (COL0) and a column arbitrator 442 corresponding to output channel 1 (COL1). The column arbitrator 441 is used to select one of the first buffers 431 and 432 corresponding to output channel 0 for output, forwarding the data packets in the selected first buffer to the corresponding output unit along path C. In this way, multiple data packets from different input channels but destined for the same output channel can be arbitrated by the column arbitrator 441 and then output in an ordered manner.
[0109] Additionally or alternatively, the arbitration strategies of the aforementioned row and column arbitrators may include, but are not limited to, round-robin arbitration, priority arbitration, and weighted fair arbitration. Those skilled in the art will understand that the aforementioned arbitration strategies are merely examples and do not constitute a limitation on the technical solutions disclosed herein.
[0110] In some cases, a column arbiter (e.g., column arbiter 441) can select the first buffer to output from at least one first buffer corresponding to it. For example, column arbiter 441 corresponds to output channel 0, and the first buffers corresponding to column arbiter 441 may include first buffer 431 (R0C0) and first buffer 432 (R1C0). Column arbiter 441 can arbitrate a data packet from first buffer 431 and first buffer 432 for output.
[0111] In some cases, the column arbitrator 441 can forward data packets in the first buffer to be output to the target output unit, which corresponds to a forwarding unit including the column arbitrator 441. In this way, data packets from different input channels but destined for the same output channel can be output to the next-level module in an orderly manner after arbitration by the column arbitrator. Additionally or alternatively, the arbitration strategy of the column arbitrator may include, but is not limited to, polling arbitration, priority arbitration, etc., and this disclosure does not limit this.
[0112] Figure 5A A schematic diagram of a forwarding unit 500A with a first structure according to some embodiments of this disclosure is shown. The following will be combined with... Figure 5A The operation of the forwarding unit under the first structure is described in detail. In this paper, the forwarding unit with the first structure can also be referred to as the forwarding unit in the first mode.
[0113] In some cases, at least one forwarding unit may have a first structure in which multiple input channels are connected to multiple output channels via the forwarding unit. For example, such as Figure 5A As shown, the forwarding unit 510 may have a first structure. In the first structure, multiple input channels are connected to multiple output channels via the forwarding unit 510. Figure 5A As shown, the operating mode under the first structure is the first mode, also known as the full-mesh mode. In this mode, both input channel 0 and input channel 1 can be mapped to either output channel 0 or output channel 1 via the forwarding unit 510. Correspondingly, the forwarding unit 510 may include a second buffer 511, a second buffer 512, a first buffer 531 (corresponding to row 0 and column 0, i.e., input channel 0 and output channel 0, denoted as R0C0), a first buffer 533 (R0C1), a first buffer 534 (R1C0), and a first buffer 535 (R1C1), and all cross paths remain connected.
[0114] In some scenarios, in the first mode, multiple line arbitrators can send query requests to each of the multiple first buffers to inquire about the status of the corresponding first buffer. The multiple line arbitrators can also receive status information from each of the multiple first buffers, indicating whether the corresponding first buffer is in a blocked or idle state. Based on the status information of the multiple first buffers, the multiple line arbitrators can determine the status of the multiple first buffers. Based on the status information of the multiple first buffers, the multiple line arbitrators can determine the forwarding target of the data packets. In this way, in the first mode, data packets from any input channel can be routed to any output channel, facilitating flexible dynamic routing and congestion avoidance.
[0115] For example, such as Figure 5A As shown, the row arbitrator 521 can send query requests to the first buffers 531 and 533 to check if the first buffers have available free capacity. The row arbitrator 521 can receive status information from the first buffers 531 and 533. For example, the query request may include a route allow signal (rt_allow signal). The row arbitrator 521 can request the arbitration result in advance through the rt_allow signal, realizing predictive arbitration. Based on this method, the delay of waiting for the arbitration result can be reduced, improving communication efficiency. In some cases, the rt_allow signal is determined by the availability status of the downstream destination through a FIFO non-empty signal (fifo_empty_n signal). The fifo_empty_n signal, when low, indicates that the corresponding first buffer has no data and is in an idle state.
[0116] In some cases, the forwarding unit with the first structure can be suitable for applications with high bandwidth and flexibility requirements. Since the cross-connections between all input channels and all output channels remain connected, the number of cross-connections in the forwarding unit is the product of the number of input channels and the number of output channels (e.g., m×k), which may result in relatively large hardware area overhead. Alternatively, other structures or methods capable of achieving fully connected routing functions may also be adopted, and this disclosure does not limit this.
[0117] Figure 5B A schematic diagram of a forwarding unit 500B with a second structure according to some embodiments of this disclosure is shown. The following will be combined with... Figure 5B The operation of the forwarding unit under the second structure is described in detail. In this paper, the forwarding unit with the second structure can also be referred to as the forwarding unit in the second mode.
[0118] In some cases, at least one forwarding unit may have a second structure in which multiple input channels are connected to a portion of the output channels among multiple output channels via the forwarding unit. For example, such as Figure 5BAs shown, the forwarding unit 520 can have a second structure. In the second structure, multiple input channels are connected to a portion of the output channels via the forwarding unit 520. In the example shown in the figure, the operating mode under the second structure is the second mode, also known as the diagonal mode, in which each input channel is mapped to only a portion of the output channels. For example, input channel 0 is mapped to output channel 0 via the forwarding unit 520, and input channel 1 is mapped to output channel 1 via the forwarding unit 520. Accordingly, the paths between input channel 0 and output channel 1, and between input channel 1 and output channel 0, can be disconnected. Thus, the first buffer in the forwarding unit 520 can include only the first buffer 531 (R0C0) and the first buffer 535 (R1C1) corresponding to the partial cross-connections, and the number of cross-connections can be reduced accordingly.
[0119] In some scenarios, in the second mode, multiple line arbitrators can send query requests to portions of the first buffers corresponding to certain output channels. The multiple line arbitrators can receive status information from each of the portions of the first buffers, indicating whether the corresponding first buffer is in a non-empty state. Based on the status information of the portions of the first buffers and the mapping relationship between multiple input channels and portions of the output channels, the multiple line arbitrators can determine the status of the multiple first buffers.
[0120] The row arbitrator can determine the forwarding target of data packets based on the state information of a portion of the first buffer and the mapping relationship between multiple input channels and a portion of the output channels. In some cases, when the number of partial output channels is greater than one, the row arbitrator can still dynamically select among the available partial output channels, which helps to retain a certain degree of dynamic routing capability while optimizing area.
[0121] Those skilled in the art will understand that the specific configuration of the second structure is not limited to the diagonal pattern described above. For example, in a scenario with four input channels and four output channels, the forwarding unit can have another structure such that each input channel is mapped to two of the four output channels, reducing the number of cross-connections to half that of the fully connected mode. Additionally or alternatively, the mapping relationship can be flexibly adjusted according to system performance requirements, and this disclosure does not impose any limitations on this. Thus, hardware area and power consumption can be reduced by decreasing cross-connections and corresponding buffer resources.
[0122] In some scenarios, the line arbiter can determine the mapping between multiple input channels and some output channels in the second mode based on mask information. The mask information can indicate the available output channels for the corresponding forwarding unit. For example, the mask information can be provided to the line arbiter via register configuration. The line arbiter determines which output channels are available based on the mask information and sends query requests only to the first buffer corresponding to the available output channels. In this way, the mask information can be used to quickly determine which data paths are disconnected or disabled, helping to reduce unnecessary wiring overhead.
[0123] In some cases, the mask information may include a bitmap. Each bit in the bitmap can indicate whether a path between multiple input channels and multiple output channels is connected or disconnected. For example, a bit value of 1 indicates that the corresponding path is connected, and a bit value of 0 indicates that the corresponding path is disconnected. In this way, by configuring different bitmaps, the number of cross-connections in the forwarding unit can be flexibly controlled. Additionally or alternatively, the mask information may also adopt other data formats that can represent the path connection status, and this disclosure does not limit this.
[0124] In the second structure, some cross-paths and corresponding output-side buffers can be retained during the hardware design or synthesis phase, while the remaining cross-paths and corresponding resources can be omitted in the layout implementation. The mask information used at runtime can correspond to the already fixed physical connection relationships, informing the arbitrator which paths are allowed to participate in status queries and dynamic selection; the mask information does not change the physical existence of the omitted paths. In this way, dynamic routing can continue within a predetermined range of output channels, while simultaneously reducing the number of interconnects, buffers, chip area, and power consumption.
[0125] In some cases, multiple input channels and some output channels are connected via corresponding forwarding units, and the paths between the multiple input channels and the other output channels (excluding some output channels) are disconnected. In some cases, multiple first buffers include partial first buffers corresponding to multiple input channels and some output channels. In some cases, the input channels and some output channels in the second structure have a preset static mapping relationship. The static mapping relationship can limit dynamic selection to the actually existing cross-paths, avoiding sending query or forwarding data to output channels that are not physically connected.
[0126] In some cases, the routing device 300 described above can be used as a routing unit in an on-chip network system. (See reference...) Figure 6A and Figure 6BBased on certain aspects of this disclosure, the following will describe in detail an on-chip network system consisting of multiple routing units.
[0127] Figure 6A A schematic diagram of an on-chip network system 600A according to some aspects of this disclosure is shown. The following will be combined with... Figure 6A The overall architecture of the 600A on-chip network system is described in detail.
[0128] In some cases, the on-chip network system 600A may include multiple routing units 610. In the example shown in the figures, the multiple routing units 610 may include routing unit A, routing unit B, routing unit C, routing unit D, routing unit E, routing unit F, routing unit G, routing unit H, and routing unit I, etc. Each routing unit may have routing means according to any of the above embodiments. Two adjacent routing units may be coupled to each other through one or more channels, and at least one output unit of one routing unit may be coupled to at least one input unit of another adjacent routing unit.
[0129] In this way, multiple routing units 610 can be interconnected through channels between adjacent routing units to form an on-chip network. Data packets can be forwarded from one routing unit to the destination routing unit via one or more intermediate routing units. In some cases, the forwarding units within each routing unit can dynamically select among multiple output channels based on the real-time state of the first buffer, which helps to achieve congestion avoidance and load balancing at the network level.
[0130] In some cases, multiple routing units can be arranged in a two-dimensional array. In the example shown in the attached figure, routing units A through I are arranged in a 3×3 two-dimensional array. Each of the multiple routing units can be coupled to one or more adjacent routing units via an input or output channel. For example, routing unit E can be coupled to routing units B, D, F, and H, respectively.
[0131] In this way, routing units in an on-chip network system can be organized in a two-dimensional array, and data packets can be forwarded hop-by-hop between adjacent routing units along the row or column direction. Alternatively or concurrently, routing units can also be arranged in other topologies, including but not limited to rings, trees, fat trees, etc., which are not limited in this disclosure.
[0132] In some scenarios, multiple output channels of an upstream routing unit can be coupled to multiple input channels of a downstream routing unit between two adjacent routing units. In an on-chip network system, data can be forwarded upstream to downstream. For example, the output channel of routing unit A can be coupled to the input channel of routing unit B, allowing data packets to be forwarded from routing unit A to routing unit B via this output channel.
[0133] In this way, in an on-chip network system, data packets can be forwarded cascadingly between multiple routing units along a predetermined routing direction. In some cases, the routing direction can be dynamically determined at each routing unit based on routing indication information. Alternatively or concurrently, the routing direction can also be determined in other ways, including but not limited to based on address information, based on destination identifiers, etc., and this disclosure does not impose any limitations on this.
[0134] Figure 6B A schematic diagram of an on-chip network system 600B with hotspot nodes according to some scenarios of this disclosure is shown. The following will be combined with... Figure 6B The handling method of hotspot nodes in the 600B on-chip network system is described in detail.
[0135] In some cases, multiple routing units in the on-chip network system 600B may include a first routing unit and a second routing unit. In the example shown in the accompanying drawings, routing unit E in routing unit 620 can serve as the first routing unit, and other routing units (such as routing unit A) can serve as the second routing units. The number of connection channels between the first routing unit (routing unit E) and the second routing units can be greater than the number of connection channels between the second routing units. For example, the number of connection channels between routing unit E and its neighboring routing units can be four, while the number of connection channels between routing unit A and its neighboring routing units can be two.
[0136] In some scenarios, the first routing unit can be a hotspot node in the on-chip network system 600B. At a hotspot node, the amount of data forwarded via this routing unit is typically greater than the amount forwarded via other routing units. By increasing the number of connection channels (i.e., increasing the number of dimensions) for hotspot nodes, the bandwidth processing capacity of the hotspot nodes can be improved, thereby alleviating network congestion to some extent.
[0137] In this way, the on-chip network system can flexibly configure different numbers of channels according to the load of each routing unit, which helps to achieve balanced bandwidth distribution and alleviate hotspot problems. Alternatively, hotspot problems can also be handled in other ways, including but not limited to adjusting routing policies and increasing buffer depth, which are not limited in this disclosure.
[0138] Reference Figure 7 According to some aspects of this disclosure, the overall architecture of the routing device 700 may include: at least one input unit 710 configured to receive data from at least one input channel among a plurality of input channels; at least one output unit 730 configured to output data to at least one output channel among a plurality of output channels; and at least one forwarding unit 720 each disposed between a corresponding input unit among the at least one input unit and a corresponding output unit among the at least one output unit. The forwarding unit 720 may include: a plurality of second buffers 721, corresponding to the plurality of input channels, configured to buffer data input to the forwarding unit from the corresponding input unit; a plurality of first buffers 722, corresponding to the plurality of input channels and the plurality of output channels, configured to buffer data to be output by the forwarding unit to the corresponding output unit; a plurality of row arbitrators 723, corresponding to the plurality of input channels, configured to forward data in the plurality of second buffers to a target first buffer among the plurality of first buffers based on the state of the plurality of first buffers; and a plurality of column arbitrators 724, corresponding to the plurality of output channels, configured to output data in the plurality of first buffers to the corresponding output unit. After a data packet enters the forwarding unit 720 from the input unit 710, it can first be buffered in the second buffer 721. Then, the row arbitrator 723 forwards the data packet to the target first buffer based on the state of the first buffer 722. Finally, the column arbitrator 724 outputs the data packet in the first buffer 722 to the output unit 730. In this way, the routing device 700 can realize multi-level cross-forwarding of data packets from input to output.
[0139] In some cases, at least one input unit 710 is further configured to: determine a target output unit from at least one output unit based on routing indication information, wherein data received from each input channel of at least one input channel shares the target output unit.
[0140] In some cases, the multiple line arbitrators 723 are also configured to: determine a first output channel among multiple output channels associated with the target output unit based on routing indication information, the first output channel being used to output data.
[0141] In some cases, the multiple line arbitrators 723 are also configured to: determine the first buffer as the target first buffer in response to the first buffer corresponding to the first output channel having free capacity; and forward data to the target first buffer.
[0142] In some cases, the multiple line arbitrators 723 are also configured to: in response to a first buffer corresponding to a first output channel not having free capacity, select a target first buffer from the multiple first buffers based on the state of the multiple first buffers, the target first buffer having free capacity; and forward data to the target first buffer, the target first buffer corresponding to a second output channel, the second output channel being different from the first output channel.
[0143] In some cases, the column arbiters in the plurality of column arbiters 724 are further configured to: select a first buffer to be output from at least one first buffer corresponding to the column arbiter; and forward the data in the first buffer to be output to a target output unit, the target output unit corresponding to a forwarding unit including the column arbiter.
[0144] In some cases, at least one forwarding unit 720 is configured in a first mode, which indicates that multiple input channels are mapped to multiple output channels via the forwarding unit.
[0145] In some cases, the multiple row arbitrators 723 are also configured to: send a query request to each of the multiple first buffers, the query request being used to query the status of the corresponding first buffer; receive status information from each of the multiple first buffers, the status information being used to indicate whether the corresponding first buffer is in a non-empty state; and determine the status of the multiple first buffers based on the status information of the multiple first buffers.
[0146] In some cases, at least one forwarding unit 720 is configured in a second mode, which indicates that multiple input channels are mapped via the forwarding unit to a portion of the multiple output channels.
[0147] In some cases, the multiple line arbitrators 723 are also configured to: send a query request to a portion of the first buffers corresponding to a portion of the output channels, the query request being used to query the status of the corresponding first buffer; receive status information from each of the portion of the first buffers, the status information being used to indicate whether the corresponding first buffer is in a non-empty state; and determine the status of the multiple first buffers based on the status information of the portion of the first buffers and the mapping relationship between the multiple input channels and the portion of the output channels.
[0148] In some cases, multiple input channels are connected to some output channels via corresponding forwarding units, and the paths between multiple input channels and other output channels, except for some output channels, are disconnected.
[0149] In some cases, multiple first buffers include partial first buffers corresponding to multiple input channels and partial output channels.
[0150] In some cases, multiple line arbitrators 723 are also configured to: determine the mapping relationship between multiple input channels and some output channels in the second mode based on mask information, wherein the mask information indicates the output channels available to the corresponding forwarding unit.
[0151] In some cases, the mask information includes a bitmap, where bits indicate whether the paths between multiple input channels and multiple output channels are connected or disconnected.
[0152] In some cases, at least one input unit includes multiple input buffers, which correspond to multiple input channels and are used to buffer data received from the corresponding input channels.
[0153] In some cases, at least one output unit includes multiple output arbitrators, which correspond to multiple output channels. The output arbitrators are configured to: select a forwarding unit to be output from a forwarding unit corresponding to the output unit based on the state of multiple input buffers of the downstream routing device, wherein at least one input unit of the downstream routing device is coupled to at least one output unit; and forward the data in the forwarding unit to be output to the corresponding input buffer of the downstream routing device through the output channel corresponding to the output arbitrator.
[0154] In some cases, each forwarding unit in at least one forwarding unit corresponds to an input unit and an output unit, and is used to implement cross-forwarding between multiple input channels of an input unit and at least one output channel of multiple output channels of an output unit.
[0155] In some cases, the routing device 700 can be used as a routing unit in an on-chip network system. The internal structure and working principle of the routing device will be described in detail below first, followed by an embodiment description of an on-chip network system composed of multiple routing units.
[0156] Alternatively or concurrently, the input unit in the aforementioned routing device may be replaced by other modules or structures capable of performing data reception and distribution functions. For example, the input unit may integrate additional data preprocessing logic or support multiple different data interface protocols. Similarly, the output unit may be replaced by other modules or structures capable of performing data output functions, and this disclosure does not impose any limitations on this.
[0157] Alternatively or concurrently, the second and first buffers in the aforementioned forwarding unit may be replaced by other storage structures capable of implementing data caching functions, including but not limited to register files, static random access memory (SRAM), dual-port memory, etc. The row arbitrator and column arbitrator may also be replaced by other logic circuits capable of implementing arbitration functions, including but not limited to token-based arbitrators, residence-time-based arbitrators, etc., and this disclosure does not impose any restrictions in this regard.
[0158] Alternatively or concurrently, the routing units in the aforementioned on-chip network system may be replaced by other devices or modules capable of performing routing functions. The connection methods between routing units are not limited to the aforementioned channel coupling methods, but may also include, but are not limited to, optical interconnection, wireless interconnection, etc. Those skilled in the art will understand that the above alternative solutions are merely examples, and any structure or method capable of achieving the same function is applicable; this disclosure does not impose any limitations on them.
[0159] Figure 8 A flowchart of an example process 800 for data routing based on certain scenarios is shown. Process 800 can be implemented at routing device 300. See below for reference. Figure 8 To describe process 800.
[0160] In box 810, routing device 300 receives data via at least one of a plurality of input channels. An example of this process can be found in the above description. Figures 3 to 5B The example described.
[0161] In box 820, routing device 300 obtains the availability status of multiple output channels. An example of this process can be found in the above text. Figures 3 to 5B The example described.
[0162] In box 830, routing device 300 selects a target routing path from multiple routing paths based on availability, the target routing path corresponding to a target output channel among multiple output channels. An example of this process can be found in the above text. Figures 3 to 5B The example described.
[0163] In box 840, routing device 300 forwards data via the destination routing path. An example of this process can be found in the above text. Figures 3 to 5B The example described.
[0164] As an example, routing device 300 can temporarily store received data in an input-side buffer, and the row arbitrator can query the status of the first buffers corresponding to multiple candidate output channels. When one of the first buffers has idle capacity that meets the forwarding conditions, the row arbitrator can identify that first buffer as the target first buffer and forward the data to the target first buffer; subsequently, the column arbitrator can output the data in the target first buffer via the corresponding output channel. This example is only used to illustrate one implementation of method 800 and does not constitute a limitation.
[0165] The above method enables a dynamic selection mechanism for data output channels. By using the availability status of multiple output channels, data packets can be dynamically forwarded to target routing paths with available capacity. When the output channel corresponding to a certain routing path is congested, data packets can be redirected to other routing paths for forwarding. This avoids the blocking problem under the fixed mapping mechanism of traditional schemes, effectively reduces the average network communication latency, and improves the overall throughput and link utilization.
[0166] In some cases, the availability status acquired by the routing device 300 may include at least one of the following: the connection status of the candidate output channel, the congestion status of the candidate output channel, and the idle capacity of at least one buffer located on the candidate routing path. By combining the channel status and buffer status, the routing device 300 can more accurately determine whether each candidate routing path is suitable for forwarding data, thereby improving the reliability of path selection.
[0167] In some cases, the data received by the routing device 300 may include routing indication information. Based on the routing indication information, the routing device 300 can determine a target output unit from at least one output unit, wherein data received from each of the at least one input channel can share the target output unit. Thus, the target output direction of the data can be determined first, and then dynamic selection can be performed among the multiple output channels corresponding to the target output unit.
[0168] In some scenarios, the routing device 300 can determine a first output channel among multiple output channels associated with the target output unit based on routing indication information. This first output channel is used to output data. By determining the first output channel, a preferred or default forwarding path can be provided for the data, so that data forwarding can be completed quickly when that path is available.
[0169] In some scenarios, the routing device 300 can determine a target first buffer based on the capacity information of multiple first buffers corresponding to multiple output channels, where the target output channel corresponding to the target first buffer is in an available state; determine the candidate routing path corresponding to the target output channel as the target routing path; and forward the data to the target first buffer. By combining the capacity information of the first buffer to select the target routing path, it is possible to avoid writing data to buffers with insufficient available capacity, thereby reducing the risk of congestion.
[0170] In some cases, in response to the first buffer corresponding to the first output channel having idle capacity, the routing device 300 can identify the first buffer as the target first buffer. Thus, when the first output channel is available, the routing device 300 can forward data along the path corresponding to the first output channel, thereby reducing unnecessary path switching and lowering forwarding latency.
[0171] In some cases, in response to the first buffer corresponding to the first output channel not having free capacity, the routing device 300 can select a target first buffer with free capacity from among the multiple first buffers based on the status of the multiple first buffers. The target first buffer may correspond to a second output channel different from the first output channel. Thus, when the first output channel becomes congested, the routing device 300 can redirect data to the second output channel, thereby bypassing local congestion and improving channel utilization.
[0172] In some cases, data can be buffered in at least one first buffer before being forwarded. In response to a selected destination route path, the routing device 300 can select a first buffer from the at least one first buffer to be output to, and forward the data in the first buffer to be output to the destination output unit corresponding to the destination route path. By selecting and scheduling the data in the first buffer before output, data directed to the same output unit can be coordinated, ensuring orderly data output.
[0173] Figure 9 A block diagram of an electronic device 900 in which one or more examples may be implemented is shown. It should be understood that... Figure 9 The electronic device 900 shown is merely exemplary and should not be construed as limiting the functionality and scope of the examples described herein. Figure 9 The illustrated electronic device 900 can be used to implement at least one of the on-chip network system 600A or on-chip network system 600B as discussed above.
[0174] like Figure 9As shown, electronic device 900 is in the form of a general-purpose electronic device. Components of electronic device 900 may include, but are not limited to, one or more processing units or processors 910, memory 920, storage devices 930, one or more communication units 940, one or more input devices 950, and one or more output devices 960. Processor 910 may be a physical or virtual processor and is capable of performing various processes according to programs stored in memory 920. In a multiprocessor system, multiple processors execute computer-executable instructions in parallel to improve the parallel processing capability of electronic device 900.
[0175] Electronic device 900 typically includes multiple computer storage media. Such media can be any accessible media that is accessible to electronic device 900, including but not limited to volatile and non-volatile media, removable and non-removable media. Memory 920 can be volatile memory, such as registers, caches, random access memory (RAM); it can also be non-volatile memory, such as read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), flash memory; or it can be some combination thereof. Storage device 930 can be removable or non-removable media and can include machine-readable media, such as flash drives, disks, or any other media capable of storing information and / or data and accessible within electronic device 900.
[0176] Electronic device 900 may further include additional removable / non-removable, volatile / non-volatile storage media. Although not explicitly stated... Figure 9 As shown, a disk drive for reading from or writing to a removable non-volatile disk and an optical disk drive for reading from or writing to a removable non-volatile optical disk can be provided. In these cases, each drive can be connected to a bus via one or more data media interfaces. Memory 920 may include computer program product 925 having one or more program modules configured to perform various methods or actions of various examples.
[0177] The communication unit 940 enables communication with other electronic devices via a communication medium. Additionally, the functions of the components of the electronic device 900 can be implemented using a single computing machine or multiple computing machines capable of communicating via communication connections. Therefore, the electronic device 900 can operate in a networked environment using logical connections to one or more servers, network computers, or other network nodes.
[0178] Input device 950 can be one or more input devices, such as a touchscreen, mouse, keyboard, stylus, or trackball. Output device 960 can be one or more output devices, such as a monitor, speaker, or printer. Electronic device 900 can also communicate with one or more external devices via communication unit 940 as needed. External devices may include storage devices, display devices, devices that enable user interaction with electronic device 900, or devices that enable electronic device 900 to communicate with one or more other electronic devices. Such communication can be performed via an input / output (I / O) interface.
[0179] The flowcharts and block diagrams in the accompanying figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products under various scenarios. In this respect, each block in a flowchart or block diagram may represent a module, segment, or portion of an instruction, which contains one or more executable instructions for implementing the specified logical function. In some alternative implementations, the functions indicated in the blocks may occur in a different order than indicated in the figures. For example, two consecutive blocks may actually be executed substantially in parallel, and they may sometimes be executed in reverse order, depending on the functions involved. It should also be noted that each block in the block diagrams and / or flowcharts, as well as combinations of blocks, can be implemented using dedicated hardware systems that perform the specified functions or actions, or using a combination of dedicated hardware and computer instructions.
[0180] It should be understood that the features described in the above embodiments can be combined with each other in any manner without conflict. Those skilled in the art can make various modifications and variations to the above embodiments without departing from the spirit and scope of this disclosure. All such modifications and variations should fall within the protection scope defined by the appended claims.
Claims
1. A routing device, the routing device comprising: At least one input unit is used to receive data from at least one of a plurality of input channels; At least one output unit is used to output data to at least one of a plurality of output channels; as well as At least one forwarding unit, disposed between the at least one input unit and the at least one output unit, is configured to: select a target routing path from a plurality of candidate routing paths for forwarding data received via at least one of the input channels, based on the availability status associated with the plurality of output channels.
2. The routing device according to claim 1, wherein the plurality of output channels constitute an output channel group, each output channel in the output channel group is connected to a different physical channel and is used to forward the data to the same target output unit.
3. The routing apparatus according to claim 1, wherein the available state includes at least one of the following: the connection state of the output channel, the congestion state of the output channel, the priority of the output channel, and the free capacity of at least one buffer located on the candidate routing path.
4. The routing apparatus according to claim 1, wherein the at least one forwarding unit comprises: Multiple first buffers, corresponding to the multiple input channels and the multiple output channels, are used to buffer the data that the forwarding unit wants to output to the corresponding output unit; Multiple row arbitrators, corresponding to the multiple input channels, are used for: Based on the states of the plurality of first buffers, determine the availability states of the plurality of output channels. Based on the availability status of the multiple output channels, the data is forwarded to the target first buffer among the multiple first buffers; as well as Multiple column arbiters, corresponding to the multiple output channels, are used to output the data in the multiple first buffers to the corresponding output units.
5. The routing apparatus of claim 4, wherein the data received from the at least one input channel includes routing indication information, and the at least one input unit is further configured to: Based on the routing indication information, a target output unit is determined from the at least one output unit, wherein data received from each input channel of the at least one input channel shares the target output unit.
6. The routing apparatus of claim 5, wherein the plurality of row arbitrators are used for: Based on the routing indication information, a first output channel is determined among a plurality of output channels associated with the target output unit, and the first output channel is used to output the data.
7. The routing apparatus of claim 6, wherein selecting a target routing path from a plurality of candidate routing paths comprises: Based on the capacity information of the multiple first buffers corresponding to the multiple output channels, the target first buffer is determined, and the target output channel corresponding to the target first buffer is in an available state; The candidate routing path corresponding to the target output channel is determined as the target routing path; as well as The data is forwarded to the target first buffer.
8. The routing apparatus of claim 7, wherein selecting the target first buffer from the plurality of first buffers comprises: In response to the first buffer corresponding to the first output channel having free capacity, the first buffer is identified as the target first buffer.
9. The routing apparatus of claim 7, wherein selecting the target first buffer from the plurality of first buffers comprises: In response to the first buffer corresponding to the first output channel not having idle capacity, a target first buffer is selected from the plurality of first buffers based on the state of the plurality of first buffers. The target first buffer has idle capacity and corresponds to the second output channel, which is different from the first output channel.
10. The routing apparatus of claim 4, wherein the column arbitrator of the plurality of column arbitrators is further configured to: Select the first buffer to output from at least one first buffer corresponding to the column arbitrator; and The data in the first buffer to be output is forwarded to the target output unit, which corresponds to the forwarding unit including the column arbitrator.
11. The routing apparatus according to claim 1, wherein the at least one forwarding unit has a first structure, in which the plurality of input channels are connected to the plurality of output channels via the forwarding unit.
12. The routing apparatus of claim 11, wherein the plurality of row arbitrators are further configured to: Send a query request to each of the plurality of first buffers, the query request being used to query the status of the corresponding first buffer; Receive status information from each of the plurality of first buffers, the status information being used to indicate the free capacity of the corresponding first buffer; as well as The states of the plurality of first buffers are determined based on their state information.
13. The routing apparatus according to claim 1, wherein the at least one forwarding unit has a second structure, in which the plurality of input channels are connected to a portion of the plurality of output channels via the forwarding unit.
14. The routing apparatus of claim 13, wherein the plurality of row arbitrators are further configured to: A query request is sent to a portion of the first buffers corresponding to the portion of the output channels among the plurality of first buffers, the query request being used to query the status of the corresponding first buffer; Receive status information from each of the first buffers in the first buffer portion, the status information being used to indicate the free capacity of the corresponding first buffer; as well as The states of the plurality of first buffers are determined based on the state information of the portion of the first buffers and the mapping relationship between the plurality of input channels and the portion of the output channels.
15. The routing apparatus of claim 14, wherein the plurality of input channels are connected to the portion of the output channels via corresponding forwarding units, and the pathways between the plurality of input channels and the other output channels of the plurality of output channels, excluding the portion of the output channels, are disconnected.
16. The routing apparatus of claim 15, wherein the plurality of first buffers includes the portion of the first buffers corresponding to the plurality of input channels and the portion of the output channels.
17. The routing apparatus of claim 14, wherein the plurality of row arbitrators are further configured to: determine, based on mask information, a mapping relationship between the plurality of input channels and the portion of the output channels under the second structure, wherein the mask information indicates the output channels available to the corresponding forwarding unit.
18. The routing apparatus of claim 17, wherein the mask information includes a bitmap, wherein bits in the bitmap indicate whether the pathway between the plurality of input channels and the plurality of output channels is in a connected state or a disconnected state.
19. The routing device according to claim 1, further comprising: Multiple second buffers, corresponding to the multiple input channels, are used to buffer the data input to the forwarding unit from the corresponding input unit.
20. The routing apparatus of claim 1, wherein the input unit of the at least one input unit includes a plurality of input buffers, the plurality of input buffers corresponding to the plurality of input channels, the plurality of input buffers being used to buffer data received from the corresponding input channels.
21. The routing apparatus of claim 1, wherein the output unit of the at least one output unit comprises a plurality of output arbitrators, the plurality of output arbitrators corresponding to the plurality of output channels, and the output arbitrators among the plurality of output arbitrators are used for: Based on the states of multiple input buffers of the downstream routing device, a forwarding unit to be output is selected from forwarding units corresponding to the output unit, wherein at least one input unit of the downstream routing device is coupled to the at least one output unit; and The data in the forwarding unit to be output is forwarded to the corresponding input buffer of the downstream routing device through the output channel corresponding to the output arbitrator.
22. The routing apparatus of claim 1, wherein each of the at least one forwarding unit corresponds to an input unit and an output unit, and is used to implement cross-forwarding between a plurality of input channels of the input unit and at least one output channel of a plurality of output channels of the output unit.
23. A routing method, comprising: Data is received via at least one of multiple input channels; Obtain the availability status of multiple output channels; Based on the available status, a target routing path is selected from multiple routing paths, the target routing path corresponding to a target output channel among the multiple output channels; as well as The data is forwarded via the target routing path.
24. The routing method of claim 23, wherein the available state includes at least one of the following: the connection state of the output channel, the congestion state of the output channel, the priority of the output channel, and the free capacity of at least one buffer located on the candidate routing path.
25. The routing method of claim 23, wherein the data includes routing indication information, and the method further comprises: Based on the routing indication information, a target output unit is determined from at least one output unit, wherein data received from each input channel corresponding to the at least one output unit shares the target output unit.
26. The routing method according to claim 25, further comprising: Based on the routing indication information, a first output channel is determined among a plurality of output channels associated with the target output unit, and the first output channel is used to output the data.
27. The routing method according to claim 26, further comprising: Based on the capacity information of the multiple first buffers corresponding to the multiple output channels, the target first buffer is determined, and the target output channel corresponding to the target first buffer is in an available state; The candidate routing path corresponding to the target output channel is determined as the target routing path; as well as The data is forwarded to the target first buffer.
28. The routing method according to claim 27, further comprising: In response to the first buffer corresponding to the first output channel having free capacity, the first buffer is identified as the target first buffer.
29. The routing method according to claim 27, further comprising: In response to a first buffer corresponding to the first output channel not having free capacity, a target first buffer is selected from the plurality of first buffers based on the state of the plurality of first buffers. The target first buffer has free capacity and corresponds to a second output channel, which is different from the first output channel.
30. The routing method of claim 23, wherein the data is cached in at least one first buffer before being forwarded, the method further comprising: In response to the selection of a target routing path, a first buffer to be output is selected from the at least one first buffer; as well as The data in the first buffer to be output is forwarded to the target output unit, which corresponds to the target routing path.
31. A network-on-a-chip system comprising a plurality of routing units, wherein each of the routing units has a routing means according to any one of claims 1 to 22, two adjacent routing units are coupled to each other through one or more channels, and at least one output unit of one of the routing units is coupled to at least one input unit of the adjacent routing unit.
32. The on-chip network system according to claim 31, wherein the plurality of routing units are arranged in a two-dimensional array, and each of the plurality of routing units is coupled to one or more adjacent routing units through an input channel or an output channel.
33. The on-chip network system of claim 31, wherein a plurality of output channels of an upstream routing unit between two adjacent routing units are coupled to a plurality of input channels of a downstream routing unit, and data is forwarded to the downstream direction via the upstream direction in the on-chip network system.
34. The on-chip network system according to claim 31, wherein the plurality of routing units includes a first routing unit and a second routing unit, and the number of connection channels between the first routing unit and the second routing unit is greater than the number of connection channels between the second routing units.
35. The on-chip network system according to claim 34, wherein the first routing unit is a hotspot node in the on-chip network system, and the amount of data transmitted via the first routing unit is greater than the amount of data transmitted via the second routing unit.
36. An electronic device comprising an on-chip network system according to any one of claims 31 to 35.