Flow ControlFlow Control即流量控制,這一概念起源于網(wǎng)絡(luò)通信中。PCIe總線采用Flow Control的目的是,保證發(fā)送端的PCIe設(shè)備永遠(yuǎn)不會(huì)發(fā)送接收端的PCIe設(shè)備不能接收的TLP(事務(wù)層包)。也就是說(shuō),發(fā)送端在發(fā)送前可以通過(guò)Flow Control機(jī)制知道接收端能否接收即將發(fā)送的TLP。
在PCI總線中,并沒(méi)有Flow Control這樣的機(jī)制,因此發(fā)送端并不知道當(dāng)前時(shí)刻,接收端能夠接收對(duì)應(yīng)的TLP。因此,發(fā)送端只能先嘗試發(fā)送,期間可能會(huì)被插入多個(gè)等待周期(接收設(shè)備尚未就緒等原因),甚至是重發(fā)(Retries)等。
PCIe Spec規(guī)定,PCIe設(shè)備的每一個(gè)端口(Ports)都必須支持Flow Control機(jī)制,在發(fā)送TLP之前,F(xiàn)low Control必須先檢查接收端口是否有足夠的Buffer空間來(lái)接收這個(gè)TLP。當(dāng)PCIe設(shè)備支持多個(gè)VC(Virtual Channel)時(shí),F(xiàn)low Control機(jī)制可以顯著地提高總線的傳輸效率。
PCIe Spec規(guī)定,每個(gè)PCIe設(shè)備最多支持8個(gè)VC,并且每個(gè)VC的Flow Control Buffer是完全獨(dú)立的。也就是說(shuō),某一個(gè)VC的Flow Control Buffer滿了,并不會(huì)影響其他的VC的通信。
前面的文章中介紹過(guò),F(xiàn)low Control機(jī)制是通過(guò)相鄰兩個(gè)端口(Ports)的數(shù)據(jù)鏈路層之間發(fā)送DLLP(Flow Control DLLPs)來(lái)實(shí)現(xiàn)的。在進(jìn)行初始化的時(shí)候,接收端需要向發(fā)送端報(bào)告(reports)其Buffer的大小,在正常運(yùn)行狀態(tài)(Run-time)時(shí),會(huì)周期性地通過(guò)Flow Control DLLPs來(lái)告知發(fā)送端,接收端的各個(gè)Buffer的大小。
需要注意的是,雖然Flow Control DLLP只在相鄰的數(shù)據(jù)鏈路層之間傳輸,但是相關(guān)的Buffer和計(jì)數(shù)器(FC Counter)確實(shí)存在于事務(wù)層(Transaction Layer)的。如下圖所示:

前面的文章中多次介紹過(guò),TLP一共有三大類:
Posted Transactions(包括Memory Writes和Messages)、Non-Posted Transactions(包括Memory Reads、Configuration Reads and Writes、IO Reads and Writes)以及Completions(包括Read and Write Completion)。并且知道,TLP可以分為兩個(gè)部分,Header和Data部分。Flow Control為了獲得更高的數(shù)據(jù)傳輸效率,將這三類TLP分開(kāi)存放,同時(shí)將Header與Data部分也分開(kāi)存放。因此,一共存在六種不同的Flow Control Buffer類型,如下圖所示:

Flow Control Buffer的存儲(chǔ)單元(Unit)被稱作Flow Control Credits。對(duì)于Header來(lái)說(shuō),Requests TLP每個(gè)unit等于5DW,而Completions TLP每個(gè)unit等于4DW。對(duì)于Data來(lái)說(shuō),每個(gè)unit等于4DW,即Data Buffer是按照16個(gè)字節(jié)對(duì)齊的。對(duì)于各種類型的Buffer的最小值如下表所示:

最大值如下表所示:

注:0 unit表示無(wú)限(Infinite)。
-
總線
+關(guān)注
關(guān)注
10文章
3014瀏覽量
91273 -
PCIe
+關(guān)注
關(guān)注
16文章
1420瀏覽量
87506
原文標(biāo)題:【博文連載】PCIe掃盲——Flow Control基礎(chǔ)(一)
文章出處:【微信號(hào):ChinaAET,微信公眾號(hào):電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
1553b總線的特點(diǎn)和消息傳輸機(jī)制,有什么應(yīng)用?
關(guān)于AHB總線 Master的回復(fù)機(jī)制解析
STM32總線CPU和DMA可以同時(shí)工作嗎?有仲裁機(jī)制嗎?
采用Flow Control機(jī)制的PCIe總線
PCIe總線必須要先完成Flow Control初始化
區(qū)塊鏈機(jī)制設(shè)計(jì),可以解決可信性以及效率問(wèn)題
CET為何而生?CET安全防御機(jī)制解析
W-CDMA電源顯著提高傳輸效率
扒一扒PCIe中的Flow Control
高性能整流器顯著提高服務(wù)器供電效率

Flow Control機(jī)制可以顯著地提高總線的傳輸效率
評(píng)論