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 | | |
76 | | === 3.1 DSPIN Packet format === |
| 66 | === 3.1 VCI Address generation === |
| 67 | |
| 68 | On the direct network, the addresses are controlled by the software. |
| 69 | |
| 70 | On the coherence network, the addresses are defined by the hardware with the following policy: |
| 71 | |
| 72 | * 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). |
| 73 | |
| 74 | * 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. |
| 75 | |
| 76 | * 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 |
| 77 | |
| 78 | === 3.2 VCI parameters === |
| 79 | |
| 80 | All Hardware components connected to the direct network or to the coherence network respect the VCI/OCP communication interface. |
| 81 | |
| 82 | The direct network, and the coherence network being ''time-multiplexed'' on the DSPIN infrastructure, have identical VCI parameters : |
| 83 | |
| 84 | || VCI Field || width || |
| 85 | || || || |
| 86 | ||ADDRESS || 40 bits || |
| 87 | ||WDATA , RDATA || 32 bits || |
| 88 | ||PLEN || 8 bits || |
| 89 | ||SRCID, RSRCID || 14 bits || |
| 90 | ||TRDID, RTRDID || 4 bits || |
| 91 | ||PKTID, RPKTID || 4 bits || |
| 92 | ||RERROR || 2 bits || |
| 93 | |
| 94 | The TSAR architecture uses three values for the VCI RERROR field, in order to simplify the VCI/DSPIN wrapper, and to reduce the DSPIN Write Response packet length to one flit : |
| 95 | |
| 96 | || RERROR || code || |
| 97 | || || || |
| 98 | ||READ_OK || 00 || |
| 99 | ||WRITE_OK || 10 || |
| 100 | ||READ_ERROR || 01 || |
| 101 | ||WRITE_ERROR || 11 || |
| 102 | |
| 103 | |
| 104 | === 3.3 DSPIN Packet format === |
| 174 | === 4.1 VCI parameters === |
| 175 | |
| 176 | The external network, that is only transporting cache lines does not use all VCI fields. The |
| 177 | address is coded on 34 bits (it is actually a cache line index), and the data field is 64 bits, |
| 178 | to increase the bandwidth. |
| 179 | |
| 180 | || VCI Field || width || |
| 181 | || || || |
| 182 | ||ADDRESS || 34 bits || |
| 183 | ||WDATA , RDATA || 64 bits || |
| 184 | ||PLEN || unused || |
| 185 | ||SRCID, RSRCID || 10 bits || |
| 186 | ||TRDID, RTRDID || 4 bits || |
| 187 | ||PKTID, RPKTID || unused || |
| 188 | ||RERROR || 1 bit || |