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