Hierarchical NoC Routing with Multiple Paths for Inter-Cluster Load Balancing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing Network on Chip (NoC) implementations face challenges in load balancing and congestion management during inter-cluster communications, particularly due to the use of shared boundary bridges and static routing tables that do not adapt to changing network conditions.
Innovation Solution
A method and NoC architecture that utilizes a path ID in conjunction with a cluster ID for dynamic route lookups, employing configurable register circuits to balance load across boundary bridges, thereby optimizing inter-cluster communication.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of manufacture
If static routing tables are used for inter-cluster communication, then routing implementation is simple, but load balancing and congestion management are poor
Solution Approach 1:
The patent implements dynamic routing by maintaining multiple routing tables (primary and secondary) that can be switched based on network conditions. The routing table is updated dynamically using feedback from congestion detection mechanisms, allowing the system to adapt to changing network states while maintaining relatively simple implementation through predefined table structures.
Solution Approach 2:
The system changes routing parameters dynamically by selecting between different routing tables based on congestion levels. When congestion is detected on the primary path, the system switches to the secondary routing table with alternative paths, effectively changing the routing parameters without redesigning the entire routing mechanism.
2Device complexity
If shared boundary bridges are used for inter-cluster communication, then device complexity is reduced, but congestion and load balancing issues arise
Solution Approach 1:
The patent segments the routing paths by maintaining separate primary and secondary routing tables with distinct path options. This segmentation allows traffic to be distributed across multiple paths through the shared boundary bridges, preventing any single path from becoming a congestion bottleneck while keeping the boundary bridge structure itself simple and shared.
Solution Approach 2:
The routing control mechanism acts as an intermediary that monitors congestion levels and dynamically switches between primary and secondary routing tables. This intermediary layer manages the shared boundary bridges by selecting appropriate paths based on real-time network conditions, improving reliability without adding physical complexity to the boundary bridge structure.
3Stability of the object's composition
If deterministic routing is used, then packet ordering and deadlock freedom are maintained, but load balancing across path diversities is not achieved
Solution Approach 1:
The system dynamically selects between deterministic routing tables (primary and secondary) based on network conditions. Each individual routing table maintains deterministic properties for packet ordering and deadlock freedom, while the dynamic switching between tables enables load balancing across path diversities by selecting the less congested table for each communication flow.
Data Source
AI summary
A method for load balancing flows of a Network on Chip (NoC) having a plurality of routers and a plurality of bridges arranged into a plurality of clusters described herein includes receiving packets at the NoC, the packet being associated with a target destination as specified by a cluster identifier and a local identifier. For receipt of each packet, the method includes routing the packet to a destination in the NoC according to the local identifier for the NoC having a same cluster identifier as the cluster identifier associated with the packet, and routing the packet according to a route lookup from referencing the cluster identifier and a path identifier associated with the packet for the NoC having a different cluster identifier from the cluster identifier associated with the packet.


