19 | | * '''X_INDEX''' is the cluster X-coordinate. |
20 | | * '''Y_INDEX'' is the cluster Y-coordinate. |
21 | | * '''LOCAL_INDEX''' is the local index inside the cluster. |
| 19 | * '''X_ID''' is the cluster X-coordinate. |
| 20 | * '''Y_ID'' is the cluster Y-coordinate. |
| 21 | * '''L_ID''' is the local index inside the cluster. |
| 22 | |
| 23 | The X_ID, Y_ID and L_ID are coded on NX, NY, NL bits respectively. |
| 24 | NX, NY and NL are global parameters for the TSAR architecture, but NX & NY cannot be larger than 5 (no more than 1024 clusters), and NL cannot be larger than 4 |
| 25 | (no more than 16 VCI hardware components per cluster). |
| 26 | |
| 27 | In order to simplify the hardware implementation of the memory coherence protocol, the L_ID values are standardized for the memory cache and for the L1 caches : |
| 28 | |
| 29 | |
| 30 | ||COMPONENT ||LOCAL_INDEX|| |
| 31 | || || || |
| 32 | ||memory cache ||0000|| |
| 33 | ||Processor 1 (L1 cache) ||0001|| |
| 34 | ||Processor 2 (L1 cache) ||0011|| |
| 35 | ||Processor 3 (L1 cache) ||0101|| |
| 36 | ||Processor 4 (L1 cache) ||0111|| |
| 37 | |
| 38 | === 2.1 Target identification === |
| 39 | |
| 40 | The target identification is required to route a command packet. For both the direct and coherence networks, |
| 41 | a VCI target is identified by the (NX + NY + NLADR) most significant bits of the VCI ADDRESS field : |
| 42 | |
| 43 | || X (NX bits) || Y (NY bits) || LADR (NLADR bits) || OFFSET (40 - NX - NY - NL bits) || |
| 44 | |
| 45 | * According to the NUMA characteristics of the TSAR architecture, there is no transcoding of the X & Y fields, that directly define the target cluster coordinates (X_INDEX, Y_INDEX). |
| 46 | * The network decodes the LADR field to obtain the target LOCAL_INDEX, using a local routing table (implemented as a wired decoder in each local interconnect controller). The local routing tables and the number of bits NLADR to be decoded depend on the cluster. |
| 47 | |
| 48 | === 2.2 Initiator identification === |
| 49 | |
| 50 | The initiator identification is required to route a response packet. For both the direct and coherence networks, |
| 51 | a VCI initiator is identified by the VCI RSRCID field (NX + NY + NL bits) : |
| 52 | |
| 53 | || X_ID (NX bits) || Y_ID (NY bits) || L_ID (NL bits) || |
| 54 | |
| 55 | Therefore, the total SRCID width cannot be larger than 14 bits. |
| 56 | |
| 57 | === 2.3 VCI Address generation on the coherence network === |
| 58 | |
| 59 | This general indexing policy simplifies the VCI address generation on the coherence network : |
| 60 | |
| 61 | * In a '''multicast''' command packet from a memory cache controller to a L1 cache controller, the address is obtained by copying the target L1 cache SRCID in the MSB bits of the VCI ADDRESS (left aligned) : The L1 cache L_ID is actually used as the LADR address field. UPDATE/INVAL requests are distinguished by the bit ADDRESS[2] (0 for INVAL, 1 for UPDATE). |
| 62 | |
| 63 | * In a '''cleanup''' command packet from a L1 cache controller to a memory cache controller, the address is obtained by copying the (NX + NY) MSB bits of the line address in the VCI ADDRESS field (left aligned). The 0 value for the LADR address field is used to select the memory cache. |
| 64 | |
| 65 | * In a '''broadcast_invalidate''' command packet, the ADDRESS[1:0] bits must be equal to 0x3. The 20 bits ADDRESS[21:2] will be used in a future extension of the DSPIN network to define the bounding box of a limited broadcast |
| 66 | |
| 67 | == 3. Direct Network & Coherence Network == |
| 68 | |
| 69 | These two networks are implemented as two independent virtual networks, in the framework of the DSPIN network on chip general infrastructure : |
| 70 | |
| 71 | * The '''local interconnect''' is implemented as two physically independent local rings, and the coherence ring supports a broadcast service for single flit VCI commands. |
| 72 | Note : These two physically independant rings will be implemented later as one single physical ring supporting two virtual networks. |
| 73 | |
| 74 | * The '''global interconnect''' is implemented as one DSPIN network, supporting two virtual sub-networks, and the coherence sub-network supports a broadcast service for single flit VCI commands. |
| 75 | |
| 76 | === 3.1 DSPIN Packet format === |
| 77 | |
| 78 | The VCI command & response packets are translated (actually serialized) to a more convenient DSPIN network format by appropriate wrappers located between the VCI initiator & target components and the DSPIN network. The DSPIN command packet width is 40 bits, and the DSPIN response packet width is 33 bits. The DSPIN interconnexion network use only the following information to route both the command and response packets to the proper destination (to a VCI target for a command packet, to a VCI initiator for a response packet) : |
| 79 | * For both command and response packets, the MSB bit is the EOP flag (End of Packet). |
| 80 | * For a command packet, the LSB bit of the first flit (called BC) define a special broadcast command packet. |
| 81 | * For a non broadcast packet (BC = 0), the first flit contains a 38 bits ADDRESS field that is actually an aligned 32 bits word address, and the (NX+NY+NL) MSB bits of this ADDRESS field are used to route the packet to the proper destination. |
| 82 | * For a broadcast packet (BC = 1), the first flit contains the XMIN, XMAX, YMIN, YMAX fiels (5 bits each), that will be used by the network to limit the broadcast. |
| 83 | |
| 84 | ==== 3.1.1 DSPIN Read Command packet format ==== |
| 85 | |
| 86 | A single flit VCI Read Command packet (including the LL packets) is translated to a 2 flits DSPIN Read Command packet : |
| 87 | |
| 88 | ==== 3.1.2 DSPIN write Command packet format ==== |
| 89 | |
| 90 | A N flits VCI Write Command packet (including SC packets) is translated to a N+2 flits DSPIN Write Command packet : |
| 91 | |
| 92 | |
| 93 | ==== 3.1.3 DSPIN Broadcast Command packet format ==== |
| 94 | |
| 95 | The single flit VCI Write Broadcast is translated to a 2 flits DSPIN Broadcast Command packet. |
| 96 | The X_ID and Y_ID fields are the source cluster coordinates. The XMIN,XMAX, YMIN, YMAX fields can be used by the network to limit the broadcast. |
| 97 | |
| 98 | 6.3.1.4 DSPIN Read Response packet format |
| 99 | A N flits VCI Read Response packet is translated to a N+1 flits DSPIN Read Response packet : |