前面的文章中介紹過,為了保證視頻、音頻等數(shù)據(jù)得到優(yōu)先傳輸,PCIe總線實(shí)現(xiàn)了一種叫做Quality of Service(QoS)的機(jī)制。QoS可以滿足視頻、音頻等對Latency和實(shí)時性(Isochronous)要求比較高(一般不可以被打斷)的應(yīng)用需求。QoS主要通過VC(Virtual Channel)和TC(Traffic Class)來實(shí)現(xiàn)。
VC的相關(guān)寄存器位于PCIe配置空間的擴(kuò)展部分(PCIe Extended Capability Space),如下圖所示:
前面的文章中介紹過,每一個VC都有獨(dú)立的Buffer,某一個VC Buffer滿了并不會影響其他VC的使用。但是只靠VC并不能實(shí)現(xiàn)QoS中的優(yōu)先級的功能,這還需要TC(Traffic Class)的支持。TC的值由TLP Header中的Byte1的bit[6:4]定義,如下圖所示。顯然TC值的范圍為0~7,值越大優(yōu)先級越高,默認(rèn)為0(優(yōu)先級最低)。在初始化的時候,PCIe驅(qū)動程序會為每一種類型的包分配好合適的TC值(優(yōu)先級)。
如果PCIe驅(qū)動程序沒有找到PCIe Extended Capability Space,則認(rèn)為該設(shè)備只有一個VC,即VC0。此時再為每一個TLP分配不同的TC值,顯然是沒有意義的。因此會默認(rèn)采用TC0/VC0組合,即不支持QoS功能。換一句話說,如果某一個PCIe設(shè)備只支持一個VC(VC0),那么就沒有QoS什么事了。
注:本次連載的博客只是簡單地介紹QoS的功能和應(yīng)用,關(guān)于QoS的詳細(xì)內(nèi)容,如VC仲裁,端口仲裁,實(shí)時性(Isochronous)等相關(guān)內(nèi)容,還請參考PCIe Spec的相關(guān)章節(jié)。
PCIe驅(qū)動程序(配置軟件)通過修改VC資源控制寄存器(VC Resource Control Register)中的TC/VC Map位來實(shí)現(xiàn)TC/VC Mapping。同時通過VC ID位來選擇相應(yīng)的VC。如下圖所示:
圖中的例子,TC0、TC1對應(yīng)VC0,而TC2~TC4對應(yīng)的是VC3。
TC/VC Mapping采用了一種靈活的機(jī)制,但是仍然需要注意以下幾點(diǎn):
· TC/VC Mapping是針對Link兩端的端口(Ports)的;
· TC0會被自動地Map到VC0,且只能Map到VC0;
· 其他的TC可以被Map到任意的VC上;
· 一個TC一般最多只能Map到一個VC上;
· 可以有TC或者VC不被使用。
如果Link的兩個端口(Ports)中,VC數(shù)量不一致,則該Link只能服從VC數(shù)量少的端口,如下圖所示:
PCIe驅(qū)動程序可以通過查詢擴(kuò)展配置空間中的Extended VC Count來確定該端口支持的VC數(shù)量,如下圖所示:
-
寄存器
+關(guān)注
關(guān)注
31文章
5270瀏覽量
119646 -
總線
+關(guān)注
關(guān)注
10文章
2848瀏覽量
87840 -
PCIe
+關(guān)注
關(guān)注
15文章
1174瀏覽量
82251
原文標(biāo)題:【博文連載】PCIe掃盲——Quality of Service簡介
文章出處:【微信號:ChinaAET,微信公眾號:電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論