PCIe總線設(shè)計之初,主要是針對于音頻和視頻傳輸?shù)冗@些對時間要求特別敏感的應(yīng)用的。為了保證這些特殊應(yīng)用的數(shù)據(jù)包能夠得到優(yōu)先發(fā)送,PCIe Spec中為每一個包都分配了一個優(yōu)先級,通過TLP的Header中的3位(即TC,Traffic Class)。
如下圖所示:

TC值越大,表示優(yōu)先級越高,對應(yīng)的包也就會得到優(yōu)先發(fā)送。一般來說,支持QoS(Quality of Service)的PCIe總線系統(tǒng),對于每一個TC值都會有一個獨(dú)立Virtual Channel(VC)與之對應(yīng)。這個Virtual Channel實(shí)際上就是一個Buffer,用于緩存數(shù)據(jù)包。
注:當(dāng)然也有那些只有一個VC Buffer的,此時不管包的TC值如何,都只能緩存在同一個VC Buffer中,自然也就沒有辦法保證按優(yōu)先級傳輸了。這樣的PCIe設(shè)備稱之為不支持QoS的PCIe設(shè)備。
一個簡單的QoS的例子如下圖所示:

圖中左下角的Endpoint(即Isochronous Traffic)的優(yōu)先級比右邊的Endpoint(即Ordinary Traffic)的優(yōu)先級要高。因此,在Switch中,來自左邊的Endpoint的包會得到優(yōu)先傳輸。而Switch的這種判決操作叫做端口仲裁(Port Arbitration)。
默認(rèn)情況下,VC Buffer中的數(shù)據(jù)包是按照包達(dá)到的時間順序,依次放入VC Buffer中的。但是也并不是總是這樣,PCIe總線繼承了PCI/PCI-X總線關(guān)于Transaction-Ordering和Relaxed-Ordering的架構(gòu),但也只是針對相同的TC值才有效。關(guān)于Transaction-Ordering和Relaxed-Ordering,大家可以去參考PCI-X的Spec,這里不再詳細(xì)地介紹。
對于大部分的串行傳輸協(xié)議而言,發(fā)送方能夠有效地將數(shù)據(jù)發(fā)送至接收方的前提是,接收方有足夠的接收Buffer來接收數(shù)據(jù)。在PCI總線中,發(fā)送方在發(fā)送前并不知道接收法是否有足夠的Buffer來接收數(shù)據(jù)(即接收方是否就緒),因此經(jīng)常需要一些Disconnects和Retries的操作,這將會嚴(yán)重地影響到總線的傳輸效率(性能)。
PCIe總線為了解決這一問題,提出了Flow Control的概念,如下圖所示。PCIe總線中要求接收方必須經(jīng)常(在特定時間)向發(fā)送方報告其VC Buffer的使用情況。而報告的方式是,接收方向發(fā)送方發(fā)送Flow Control的DLLP(數(shù)據(jù)鏈路層包),且這種DLLP的收發(fā)是由硬件層面上自動完成的,并不需要人為的干預(yù)。需要注意的是,雖然這一操作旨在數(shù)據(jù)鏈路層之間進(jìn)行,但是這些VC Buffer的使用情況對于應(yīng)用層(軟件層)也是可見的。

采用Flow Control機(jī)制的PCIe總線,相對于PCI總線獲得了更高的總線利用率。雖然增加了Flow Control DLLP,但是這些DLLP對帶寬的占用極小,幾乎對總線利用率沒有什么影響。
-
總線
+關(guān)注
關(guān)注
10文章
3052瀏覽量
91841 -
PCIe
+關(guān)注
關(guān)注
16文章
1471瀏覽量
88867
原文標(biāo)題:【博文連載】PCIe掃盲——PCIe總線事務(wù)層入門(三)
文章出處:【微信號:ChinaAET,微信公眾號:電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
PCIe總線的通信機(jī)制
PCIe總線必須要先完成Flow Control初始化
Flow Control機(jī)制可以顯著地提高總線的傳輸效率
PCIe掃盲—PCIe錯誤檢測機(jī)制的詳細(xì)資料概述
PCIe總線的熱插拔機(jī)制
PCIe錯誤報告的兩種機(jī)制詳解
PCIe 9110IM PCIe總線轉(zhuǎn)CAN設(shè)備手冊
CET為何而生?CET安全防御機(jī)制解析
扒一扒PCIe中的Flow Control
PCIe熱插拔機(jī)制介紹
采用Flow Control機(jī)制的PCIe總線
評論