AMBA CHI總線使用credit流控機(jī)制,包含兩種類(lèi)型的credit。一種是協(xié)議層credit(protocol credit,P-credit),另一種是鏈路層credit(link layer credit,L-credit)。
1. protocol credit
協(xié)議層沒(méi)有明確的機(jī)制來(lái)請(qǐng)求P-credit。只有獲得RetryAck響應(yīng)的事務(wù)暗含請(qǐng)求credit,Retry的事務(wù)流程如下:
請(qǐng)求者發(fā)出一個(gè)沒(méi)有P-credit的請(qǐng)求(即AllowRetry字段為1)。
由于Completer不能接受請(qǐng)求,所以發(fā)出一個(gè)RetryAck響應(yīng),表明事務(wù)未被接受。
Completer返回PCrdGrant給請(qǐng)求者。通常情況下,PCrdGrant在RetryAck響應(yīng)之后的一段時(shí)間才返回。但是,在非典型情況下,可以在RetryAck之前返回PCrdGrant。
請(qǐng)求者收到RetryAck和PCrdGrant之后,有兩種選擇來(lái)結(jié)束retry流程。一種是重新發(fā)送原始請(qǐng)求并帶上credit(即AllowRetry字段為0,事務(wù)一定會(huì)被接受)。另一種是取消請(qǐng)求并退
retry機(jī)制最多支持16種不同的credit類(lèi)型。例如,Completer可以為讀事務(wù)使用一種credit類(lèi)型,為寫(xiě)事務(wù)使用另一種credit類(lèi)型。通過(guò)使用不同的credit類(lèi)型,Completer可以有效地管理其資源。
2. link layer credit
鏈路層credit縮寫(xiě)為L(zhǎng)-credit。要將一個(gè)Flit從發(fā)送方傳送到接收方,發(fā)送方必須獲得L-credit。
每個(gè)通道(REQ、SNP、RSP、DAT)都有一個(gè)LCRDV信號(hào),通過(guò)在單個(gè)時(shí)鐘周期內(nèi)拉高LCRDV信號(hào)將L-Credit從接收方發(fā)送到發(fā)送方。
從發(fā)送方到接收方的每次Flit傳輸消耗1個(gè)L-Credit。接收方可以提供的L-Credit的最小數(shù)量是1,最大是15。接收方必須保證能接受它發(fā)送L-Credit的所有flit。當(dāng)鏈路active時(shí),接收方必須及時(shí)提供L-Credit,而不需要發(fā)送方采取任何行動(dòng)。
REQ通道接口信號(hào)
Credit的信息通常是在每個(gè)CHI節(jié)點(diǎn)內(nèi)部以credit counter計(jì)數(shù)器的形式來(lái)存儲(chǔ)的。
需要注意:L-Credit不能在收到的同一個(gè)周期內(nèi)就使用。
其實(shí),credit機(jī)制相當(dāng)于是一種提前反壓;而AXI總線的ready和valid握手機(jī)制是一種當(dāng)拍就反壓的機(jī)制。對(duì)AXI的ready和valid打拍需要使用Register Slice的方式;而對(duì)CHI的flit和flitv則可以直接用ff打拍。
credit和ready/valid握手最大的一個(gè)區(qū)別是:ready和valid只有在完成握手之后才能發(fā)送/接收下一個(gè), 而credit可以一次性發(fā)送/接收多筆事務(wù)。
因此,基于credit的CHI協(xié)議的流控機(jī)制更靈活,時(shí)序收斂和打拍更容易,適用于高性能、高吞吐量和可擴(kuò)展性的復(fù)雜系統(tǒng)。參考:AMBA CHI Architecture Specification