initial commit for open source NoC IP
This commit is contained in:
99
doc/router_spec.md
Normal file
99
doc/router_spec.md
Normal file
@@ -0,0 +1,99 @@
|
||||
# Router Spec
|
||||
# 1 Routing Algorithm
|
||||
Use XY routing, the routing result is calculated one hop ahead, which is look-ahead routing
|
||||
|
||||
## 1.1 XY Routing
|
||||
Flits firstly go through X axis, then go though Y axis:
|
||||
```
|
||||
1st phase: Assign next address
|
||||
2nd phase: Define new Next-port
|
||||
```
|
||||
## 1.2 Look-ahead Routing
|
||||
|
||||
# 2 Input Port
|
||||
## 2.1 Input VC
|
||||
|
||||
1. Use Fixed VC Assignment with Dynamic VC Allocation (FVADA) [paper](https://sites.pitt.edu/~juy9/papers/Yi-HPCA10.pdf) vc allocation mechanism. The input VCs are associated with the flits' output port.
|
||||
2. XY routing, so some of the output port are not used in some input ports.
|
||||
|
||||
* VC in each input port:
|
||||
|
||||
| input port | input port id | vc id | assigned output port | output port id |
|
||||
| ---------- | ------------- | ----- | -------------------- | -------------- |
|
||||
| N | 0 | 0 | S | 1 |
|
||||
| | | 1 | L | 4 |
|
||||
| S | 1 | 0 | N | 0 |
|
||||
| | | 1 | L | 4 |
|
||||
| E | 2 | 0 | N | 0 |
|
||||
| | | 1 | S | 1 |
|
||||
| | | 2 | W | 3 |
|
||||
| | | 3 | L | 4 |
|
||||
| W | 3 | 0 | N | 0 |
|
||||
| | | 1 | S | 1 |
|
||||
| | | 2 | E | 2 |
|
||||
| | | 3 | L | 4 |
|
||||
| L | 4 | 0 | N | 0 |
|
||||
| | | 1 | S | 1 |
|
||||
| | | 2 | E | 2 |
|
||||
| | | 3 | W | 3 |
|
||||
|
||||
|
||||
# 3 Switch Allocation
|
||||
|
||||
Use two-stage input-port-first allocation.
|
||||
|
||||
## 3.1 Local allocation
|
||||
Use round robin arbition. As XY routing, the local arbiters' input port number are not the same.
|
||||
|
||||
## 3.2 Global allocation
|
||||
|
||||
Use round robin arbition. As XY routing, the global arbiters' input port number are not the same.
|
||||
|
||||
* input output port mapping for each SA global arbiter:
|
||||
|
||||
| output port | global SA arbiter connected input ports | global SA arbiter connected input ports id | next hop input port |
|
||||
| ----------- | --------------------------------------- | ------------------------------------------ | ------------------- |
|
||||
| N | S | 1 | S |
|
||||
| | E | 2 | |
|
||||
| | W | 3 | |
|
||||
| | L | 4 | |
|
||||
| S | N | 0 | N |
|
||||
| | E | 2 | |
|
||||
| | W | 3 | |
|
||||
| | L | 4 | |
|
||||
| E | W | 3 | W |
|
||||
| | L | 4 | |
|
||||
| W | E | 2 | E |
|
||||
| | L | 4 | |
|
||||
| L | N | 0 | - |
|
||||
| | S | 1 | |
|
||||
| | E | 2 | |
|
||||
| | W | 3 | |
|
||||
|
||||
|
||||
|
||||
# 4 QoS
|
||||
|
||||
## 4.1 Common QoS
|
||||
No special vc, all vc head flits ranked by QoS value.
|
||||
* no extra real-time vc;
|
||||
* no bypass arbiter for real-time vc;
|
||||
* all vc involve QoS value compare.
|
||||
|
||||
## 4.2 Common QoS + extra real-time vc QoS
|
||||
Add special vc for highest priority flits, all vc head flits ranked by QoS value.
|
||||
* have extra real-time vc;
|
||||
* no bypass arbiter for real-time vc;
|
||||
* the real-time vc always win the local sa, and the local sa rr point should not be updated
|
||||
* the real-time vc join global sa as common QoS, as it has highest QoS value, it can beat flits with other QoS value;
|
||||
* all vc involve QoS value compare.
|
||||
|
||||
## 4.3 extra real-time vc QoS + bypass switch allocation + no common QoS
|
||||
Add special vc for highest priority flits, other vc head flits have no QoS support.
|
||||
* have extra real-time vc;
|
||||
* have bypass arbiter for real-time vc;
|
||||
* non-highest-priority vc have no QoS support.
|
||||
* the real-time vc bypass local sa, and override common rr arbiter's result;
|
||||
* the real-time vc from all possible inport use a separate rr arbiter at per global sa, and override common rr arbiter's result;
|
||||
|
||||
It can have the same real-time support as 4.2, but may have better timing.
|
||||
Reference in New Issue
Block a user