PCIe总线实现了一种叫做Quality of Service(QoS)的机制.doc
《PCIe总线实现了一种叫做Quality of Service(QoS)的机制.doc》由会员分享,可在线阅读,更多相关《PCIe总线实现了一种叫做Quality of Service(QoS)的机制.doc(2页珍藏版)》请在三一文库上搜索。
1、PCIe总线实现了一种叫做Quality of Service(QoS)的机制前面的文章中介绍过,为了保证视频、音频等数据得到优先传输,PCIe总线实现了一种叫做Quality of Service(QoS)的机制。QoS可以满足视频、音频等对Latency和实时性(Isochronous)要求比较高(一般不可以被打断)的应用需求。QoS主要通过VC(Virtual Channel)和TC(Traffic Class)来实现。VC的相关寄存器位于PCIe配置空间的扩展部分(PCIe Extended Capability Space),如下图所示:前面的文章中介绍过,每一个VC都有独立的Buf
2、fer,某一个VC Buffer满了并不会影响其他VC的使用。但是只靠VC并不能实现QoS中的优先级的功能,这还需要TC(Traffic Class)的支持。TC的值由TLP Header中的Byte1的bit6:4定义,如下图所示。显然TC值的范围为07,值越大优先级越高,默认为0(优先级最低)。在初始化的时候,PCIe驱动程序会为每一种类型的包分配好合适的TC值(优先级)。如果PCIe驱动程序没有找到PCIe Extended Capability Space,则认为该设备只有一个VC,即VC0。此时再为每一个TLP分配不同的TC值,显然是没有意义的。因此会默认采用TC0/VC0组合,即不
3、支持QoS功能。换一句话说,如果某一个PCIe设备只支持一个VC(VC0),那么就没有QoS什么事了。注:本次连载的博客只是简单地介绍QoS的功能和应用,关于QoS的详细内容,如VC仲裁,端口仲裁,实时性(Isochronous)等相关内容,还请参考PCIe Spec的相关章节。PCIe驱动程序(配置软件)通过修改VC资源控制寄存器(VC Resource Control Register)中的TC/VC Map位来实现TC/VC Mapping。同时通过VC ID位来选择相应的VC。如下图所示:图中的例子,TC0、TC1对应VC0,而TC2TC4对应的是VC3。TC/VC Mapping采用了一种灵活的机制,但是仍然需要注意以下几点: TC/VC Mapping是针对Link两端的端口(Ports)的; TC0会被自动地Map到VC0,且只能Map到VC0; 其他的TC可以被Map到任意的VC上; 一个TC一般最多只能Map到一个VC上; 可以有TC或者VC不被使用。如果Link的两个端口(Ports)中,VC数量不一致,则该Link只能服从VC数量少的端口,如下图所示:PCIe驱动程序可以通过查询扩展配置空间中的Extended VC Count来确定该端口支持的VC数量,如下图所示:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PCIe总线实现了一种叫做Quality of ServiceQoS的机制 PCIe 总线 实现 一种 叫做 Quality Service QoS 机制
链接地址:https://www.31doc.com/p-3270419.html