We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi All,
In CHI, there is a allowrerty field in req transcation. I am a bit confused. CHI uses credit flow, so when RN sends req to HN/SN, it means that RN has enough credit to send. So, why need allowrerty ?
Thank you!
This relates to the differences between a Link Credit and a Protocol Credit.
Link credits guarantee acceptance in the link layer, but that does not guarantee that the destination will have space to accept the request.
For example, from the RN to HN there might be multiple intermediate components such as register stages to routing components. The link credits say the flit can be passed between and accepted by each of these intermediate components, but the HN might not have any tracker space once the REQ flit arrives. In this case, it can give a Retry instead of allowing this request to block.
When the HN gives a Retry, it must eventually give a Protocol Credit to the RN to allow the request to be retried. The Protocol Credit guarantees that this Request will be accepted at the HN when it is retried.
So effectively Protocol Credits guarantee acceptance at the destination, but in order to get to the destination, the flit requires link credits to traverse the network.