Tilelink Spec


Could you please let me know if tilelink supports ordering requirements for the interconnect? I see there is no transaction id field in any channels. Is there any way to ensure ordering of packets when using tilelink as the interconnect?


The TileLink protocol makes no guarantees about message ordering, and allows messages exchanged between any two endpoints to be re-ordered. In order to track the progress of transactions, all messages on every channel contain either source identifiers or sink identifiers. These identifiers are required to be unique while a message is in-flight. Section 5.4 of the specification goes in to some detail about requirements for these inflight identifiers. Particular implementations of the TileLink protocol on specific interconnect fabrics are free to exploit additional ordering guarantees on individual channels in order to improve throughput, but should continue to obey the uniqueness requirement on source and sink ids in order to remain compliant.

Thank you!

Also could you please tell me what is the importance of E channel? I see that it is necessary to have E channel for ‘serialization’ of operations by slave. Is this for a general hand shaking procedure to ensure that the operation is çomplete’.?

Channels B+C+E are only needed when agents cache blocks. The E channel indicates that a cache has received a cache block by sending a GrantAck. Until the GrantAck is received, the cache block cannot be reclaimed.