CHI 协议层 Retry —— CHI(8)
为了防止request transactions将REQ通道堵住,CHI协议提供了一种request retry机制,当Completer无法接收request transaction时,可以发RetryAck响应。
Completer通常在没有资源和没有足够存储空间来存放当前的request transaction时,会对Requests进行retry,如果earlier transactions完成并释放资源了,就可以发送PCrdGrant响应允许二次发送命令。
Requester 发送request,不能有Protocol Credit Type
Completer返回RetryAck响应,同时返回Protocol Credit Type
当Completer可以接收request时,返回PCrdGrant响应
Requester 再次发送request(包含Protocol Credit Type )
其中:
1. Protocol Credit Type取值范围0-F,意义可以由completer自己定义,例如可以表示传输类型
2. PCrdReturn用来传输Protocol Credit Type ,用于通知completer给定的 PCrdType 不再需要分配的资源
3. Request retry不适用于PrefetchTgt,因为没有对PrefetchTgt来说没有相应的响应。
4. 当Completer对request进行retry,它需要记录该笔request的来源,也需要决定和记录Protocol Credit的类型,因为后续PCrdGrand的P-Credit type要和RetryAck中的一致。
当Completer有资源后,它必须发送通过PCrdGrant响应发送P-Credit给Requester。
5. Protocol Credit A credit, or guarantee, from a Completer that it will accept a transaction
PCrdType指示request请求中的credit type类型,具体取值按如下原则:
If AllowRetry = 1,PCrdType 必须为0 ;
If AllowRetry != 1,那么PCrdType值必须等于RetryAck响应中的PCrdType的值
第一次发request时, PCrdType为0,再次发request时, PCrdType为completer返回的值