| 62 | | === 3.1 VCI encoding of the various transaction types on the direct network === |
| 63 | | |
| 64 | | There is 5 transaction types (READ, WRITE, LL, SC, CAS) on the direct network, and there is four sub-types for READ transactions. |
| 65 | | Both the VCI CMD field and the VCI PKTID fields are used for the transaction type encoding. When a given initiator can send several simultaneous |
| 66 | | transaction with the same type (such as several WRITE simultaneous WRITE transactions), the VCI TRDID field is used. |
| 67 | | |
| | 62 | === 3.1 VCI encoding of the various transaction types on the direct network === |
| | 63 | |
| | 64 | There are 5 transaction types ('''READ''', '''WRITE''', '''LL''', '''SC''', '''CAS''') on the direct network, and there are four sub-typVCI '''CMD''' field and the VCI '''PKTID''' fields are used for the transaction type encoding. When a given initiator can send several se (such as several simultaneous '''WRITE''' transactions), the VCI '''TRDID''' field is used. |
| | 65 | |
| | 66 | Possible values for the VCI '''CMD''' field are : |
| | 67 | |
| | 68 | || encoding (2 bits) || value || |
| | 69 | || || || |
| | 70 | || 00 || CMD_NOP / CMD_STORE_COND || |
| | 71 | || 01 || CMD_READ || |
| | 72 | || 10 || CMD_WRITE || |
| | 73 | || 11 || CMD_LOCKED_READ || |
| | 74 | |
| | 75 | The '''PKTID''' field in TSAR is 4 bits long. Only 8 types of transaction are used : the MSB is ignored (reserved for future use). A sper each '''PKTID''' value, as described in the table below : |
| | 76 | |
| | 77 | || encoding (4 bits) || '''PKTID''' value || '''CMD''' value || |
| | 78 | || || || || |
| | 79 | || X000 || TYPE_READ_DATA_UNC || CMD_READ || |
| | 80 | || X001 || TYPE_READ_DATA_MISS || CMD_READ || |
| | 81 | || X010 || TYPE_READ_INS_UNC || CMD_READ || |
| | 82 | || X011 || TYPE_READ_INS_MISS || CMD_READ || |
| | 83 | || X100 || TYPE_WRITE || CMD_WRITE || |
| | 84 | || X101 || TYPE_CAS || CMD_NOP || |
| | 85 | || X110 || TYPE_LL || CMD_LOCKED_READ || |
| | 86 | || X111 || TYPE_SC || CMD_STORE_COND || |
| | 87 | |
| | 88 | Remarks on the '''PKTID''' field encoding : |
| | 89 | * for a TYPE_READ, bit 0 is set (resp. not set) for a miss (resp. uncached) request |
| | 90 | * for a TYPE_READ, bit 1 is set (resp. not set) for an instruction (resp. data) request |
| | 91 | * bit 2 can be used to check for a TYPE_READ (bit 2 = 0) |
| | 92 | |
| | 93 | ==== 3.1.1 VCI READ transaction ==== |
| | 94 | |
| | 95 | A VCI '''READ''' command packet contains one flit. |
| | 96 | * The VCI '''CMD''' field must be set to CMD_READ. |
| | 97 | * The VCI '''TRDID''' field is not used by the L1 cache. It is used by I/O controlers with multi channel DMA capabilities to transmit t |
| | 98 | * The VCI '''PKTID''' field can be any of the 4 TYPE_READ_* of the previous table. |
| | 99 | |
| | 100 | A VCI '''READ''' response packet returns either |
| | 101 | * A single flit containing the uncached data in the '''RDATA''' field (for a '''PKTID''' = TYPE_READ_*_UNC). |
| | 102 | * up to 16 flits containing one word per flit in the '''RDATA''' field (for a '''PKTID''' = TYPE_READ_*_MISS). |
| | 103 | |
| | 104 | ==== 3.1.2 VCI WRITE transaction ==== |
| | 105 | |
| | 106 | A VCI '''WRITE''' command packet contains from 1 to 16 flits within the same cache line. |
| | 107 | * The VCI '''CMD''' field must be set to CMD_WRITE. |
| | 108 | * The VCI '''TRDID''' field is used by the L1 cache to index its write buffer (4 write buffer slots of 4 words each). It is used by I/Olities to transmit the channel index. |
| | 109 | * The VCI '''PKTID''' field must be TYPE_WRITE. |
| | 110 | |
| | 111 | A VCI '''WRITE''' response packet always returns a single flit with a 0 value in the '''RDATA''' field. |
| | 112 | |
| | 113 | ==== 3.1.3 VCI LL (Linked Load) transaction ==== |
| | 114 | |
| | 115 | A VCI '''LL (Linked Load)''' command packet contains a single flit. |
| | 116 | ('''N.B.''': this request is only sent by a L1 cache and can only target a memory cache) |
| | 117 | * The VCI '''CMD''' field must be set to CMD_LOCKED_READ. |
| | 118 | * The VCI '''TRDID''' field is not used by the L1 cache. |
| | 119 | * The VCI '''PKTID''' field must be TYPE_LL. |
| | 120 | |
| | 121 | A VCI '''LL (Linked Load)''' response packet contains 2 flits : |
| | 122 | * The first flit contains in the '''RDATA''' field a signature returned by the memory cache for this LL reservation. |
| | 123 | * The second flit contains in the '''RDATA''' field the data that has been read in the memory cache. |
| | 124 | |
| | 125 | ==== 3.1.4 VCI SC (Store Conditional) transaction ==== |
| | 126 | |
| | 127 | A VCI '''SC (Store Conditionnal)''' command packet contains 2 flits. |
| | 128 | ('''N.B.''': this request is only sent by a L1 cache and can only target a memory cache) |
| | 129 | * The VCI '''CMD''' field must be set to CMD_STORE_COND. |
| | 130 | * The VCI '''TRDID''' field is not used by the L1 cache. |
| | 131 | * The VCI '''PKTID''' field must be TYPE_SC. |
| | 132 | * The first flit contains in the '''WDATA''' field the signature obtained with the last LL operation at this address. |
| | 133 | * The second flit contains in the '''WDATA''' field the data to be written. |
| | 134 | |
| | 135 | A VCI '''SC (Store Conditional)''' response packet contains 1 flit. |
| | 136 | * The '''RDATA''' field contains 0 (resp. 1) to indicate an SC success (resp. failure). |
| | 137 | |
| | 138 | ==== 3.1.5 VCI CAS (Compare & Swap) transaction ==== |
| | 139 | |
| | 140 | A VCI '''CAS (Compare & Swap)''' command packet contains 2 flits. |
| | 141 | ('''N.B.''': this request is only sent by a L1 cache and can only target a memory cache) |
| | 142 | * The VCI '''CMD''' field must be set to CMD_NOP. |
| | 143 | * The VCI '''TRDID''' field is not used by the L1 cache. |
| | 144 | * The VCI '''PKTID''' field must be TYPE_CAS. |
| | 145 | * The first flit contains in the '''WDATA''' field the old value of the data to be overwritten. |
| | 146 | * The second flit contains in the '''WDATA''' field the new value to be written. |
| | 147 | |
| | 148 | A VCI '''CAS (Compare & Swap)''' response packet contains 1 flit. |
| | 149 | * The '''RDATA''' field contains 0 (resp. 1) to indicate a CAS success (resp. failure). |