目录

本章概述

Traffic Class

Vitual Channels

TC/VC mapping

端口仲裁

示例分享


本章概述

本章主要讲解PCIe 在TLP层的一个特性,Quality of Service(QoS)——服务质量。QoS其实并不是一个陌生的词,在计算机系统中,我们经常接触到,比如网卡的QoS,FC卡的QoS等。本章讲解在PCIe规范中,在TLP层,也有该机制。一个常用的场景如:通过PCIe总线传输视频流,这需要对实时性要求高,提前识别到这些需求,通过调整流量的优先级,来保证视频流数据在PCIe系统中实时被传输。

支持QoS机制需要下面的特性

  • Traffic Classes(TC)
  • Vitual Channels(VC)
  • Port Atbitration
  • Vitual Channels Atbitration

Traffic Class

TC在TLP包头中的位置如下图所示,占3个bit,0~7的范围,可以将TC理解为一个tag,用来选择VC。系统默认使用TC0/VC0.

TC字段表示当前TLP的传送类型,PCIe总线规定了8种传输类型,分别为TC0~TC7,缺省值为TC0,而多数EP中只含有一个VC,因此这些EP在发送TLP时,也仅仅使用TC0,但是有些对实时性要求较高的EP中,含有可以设置TC字段的寄存器。

在Intel的高精度声卡控制器(High Definition Audio Controller)的扩展配置空间中含有一个TCSEL寄存器。系统软件可以设置该寄存器,使声卡控制器发出的TLP使用合适的TC。声卡控制器可以使用TC7传送一些对实时性要求较强的控制信息,而使用TC0传送一般的数据信息。在具体实现中,一个EP也可以将控制TC字段的寄存器放入到设备的BAR空间中,而不必和Intel的高精度声卡控制器相同,存放在PCI配置空间中。

目前许多处理器系统的RC仅支持一个VC通路,此时EP使用不同的TC进行传递数据的意义不大。x86处理器的MCH中一般支持两个VC通路,而多数PowerPC处理器仅支持一个VC通路。PLX公司的多数Switch也仅支持两个VC通路。

有些RC,如MPC8572处理器,也能决定其发出TLP使用的TC。在该处理器的PCIe Outbound窗口寄存器(PEXOWARn)中,含有一个TC字段,通过设置该字段可以确定RC发出的TLP使用的TC字段。不同的TC可以使用PCIe链路中的不同VC,而不同的VC的仲裁级别并不相同。EP或者RC通过调整其发出TLP的TC字段,可以调整TLP使用的VC,从而调整TLP的优先级。

Vitual Channels

虚拟通道,其本质是是一个缓存区(buffer),端口默认支持VC0,最多可支持8个VC(VC0~VC7).我们可以举一个例子来理解VC和TC,PCI端口可以看作是高速收费站的收费口,VC可以看作是不同的收费闸道,假如只有一个闸道口(VC0),那么通过的速度受限于最慢的车辆。假如有多个闸道口,不同车辆在不同的口通行,每个车辆上有一个标识(TC),来标识他在第几个闸道通行。TC与VC之间的映射关系见下面描述。

TC/VC mapping

每个报文里的TC值会保持不变的传递到目的终端,在传输的整个路径中,需要有TC与VC的mapp关系,即报文经过的所有端口都有与TC对应的VC。通过软件来配置PCIe配置空间寄存器来实现TC/VC的maap关系,对应的寄存器如下图所示。TC0和TC1映射到了VC0,TC2/TC3/TC4被映射到了VC3.

映射规则如下

  • 对于同一个链路相连接的两个端口,TC/VC的映射关系必须相同;
  • TC0必须map到VC0上;
  • 除TC0外,其他TC值可以map到其他任何VC上;
  • 一个TC只能map到1个VC上;

基于严格优先级的仲裁方式

8个VC严格按照优先级排序,VC值越大,优先级越高,优先允许高优先级任务通过,这种方式思路清晰,但是存在一个问题,就是如果持续有高优先级任务,会将低优先级的任务饿死(一直不传输低优先级的任务)。

分组仲裁方式

将8个VC分成低优先级组和高优先级组,高优先级组按照严格优先调度策略,低优先级组使用硬件固定仲裁方案加权轮询仲裁方案,可由软件配置选择。

Virtual Channel Arbitration Table(VAT)

通过配置该表来控制VC的优先级,设置访问的寄存器如下

端口仲裁

为什么需要端口仲裁,是因为在switch或RC 中,需要仲裁来自哪个口的数据优先通过,如下如所示:在switch画红圈的上行口要仲裁来自两个下行口的数据通过的优先级。优先调度方式有硬件固定仲裁方案加权轮询仲裁方案、按照端口仲裁表方案。

示例分享

最后我们来看一个例子:

(1)switch的port0发送TLP包,TC/VCmap关系TC0 TC1map到VC0,TC3,5map到VC1;

(2)switch的port1发送TLP包,TC/VCmap关系TC2 TC4map到VC3,TC0map到VC0;

(3)通过TLP的路由信息识别出port0,port1的这些TLP包都是发送到port2端口,

(4)通过新的TC/VCmap映射;

(5)端口仲裁,来自port0和port1的两个TLP包进行端口仲裁。

(6)在port2上通过VC仲裁进行传输。

以上就是TLP层的Qos的内容分享。

【精讲】PCIe Quality of Service(QoS)机制相关推荐

  1. 论文翻译:A Highly Accurate Prediction Algorithm for Unknown Web Service QoS Values

    A Highly Accurate Prediction Algorithm for Unknown Web Service QoS Values 一种用于未知Web服务QoS值的高精度预测算法 Ab ...

  2. Quality of Service 0, 1 2

    来自:http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels Quality of Servi ...

  3. 高薪程序员Java面试题精讲系列汇总

    因CSDN没有分类归纳博客的功能,所以特写本帖汇总<高薪程序员面试题精讲系列>教程,方便大家查阅!希望各位小伙伴可以从我的拙作中掌握Java的高频面试题,也希望各位可以多给予指教!目前本系 ...

  4. 服务质量QoS(Quality of Service)的基础知识

    QoS概述 浅谈QoS--QoS概述 网络抓包工具Wireshark下载安装&使用详细教程 QoS简介 在传统的计算机网络中,网络设备对于数据包的处理方式都是相同的,平等的对待所有的数据流量. ...

  5. QOS是什么?(Quality of Service,服务质量)

    看 单播.广播.组播的区别和特点 时候,看到QOS不知道是什么意思 文章目录 定义 QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服 ...

  6. 【云和恩墨大讲堂】Oracle RAC精讲之心跳机制

    世界上最遥远的距离,不是生与死,而是我们是集群的两个节点,你却听不到我的心跳. 自从云和恩墨大讲堂推出Oracle12.2体系架构图的系列课程,受到广大技术朋友们的关注和支持.本周是系列第四讲,主题: ...

  7. MQTT:QoS服务质量 0,1,2(Quality of Service 0, 1 2)

    原文链接:http://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels 转载链接:http://bl ...

  8. QoS(Quality of Service)服务质量【转自微信公众号开源Linux】

    QoS(Quality of Service)即服务质量.在有限的带宽资源下,QoS为各种业务分配带宽,为业务提供端到端的服务质量保证.例如,语音.视频和重要的数据应用在网络设备中可以通过配置QoS优 ...

  9. 【移动通信】5GC:5G的QoS (Quality of Service) 控制 服务质量管理

    Quality of Service Control QoS QoS框架 QFI Uplink/Downlink 用户平面协议框架 DRB&QoS 映射 5QI与5G QoS特征 QoS框架( ...

最新文章

  1. MATLAB随机模拟
  2. Hbase Solr 二级索引 同步int数据报错com.ngdata.hbaseindexer.parse.ByteArrayValueMappers: Error mapping byte
  3. 为什么阿里飞猪、滴滴、携程都被质疑滥用大数据杀熟?
  4. ADF单位根检验三种形式_质量部来料质量控制:检验程序、检验标准、待检规则、问题处置...
  5. 【华为云技术分享】计算python程序执行时间
  6. 微软 HoloLens 2 的幕后故事
  7. 【硬件】存储的RAID技术详解
  8. WORD中如何进行双行合一
  9. 针对Android智能电视研发的,基于Android的智能电视遥控系统研制
  10. OpenCV教程:超详细的OpenCV入门教程,值得收藏
  11. 高斯消去法(Gauss)的python实现
  12. Excel·VBA考勤打卡记录统计结果
  13. Python 绘制正多边形
  14. 超详细讲解:数据库的备份与数据恢复方法举例与说明(完全备份、差异备份、增量备份)
  15. 系统提供人民币(CNY)美元(USD)英镑(GBP)价值转换
  16. 在计算机病毒组成结构中,计算机病毒的结构中有哪三种机制组成?
  17. (win10家庭版)修改C盘Users目录下文件夹名称
  18. TOJ 3015.Convert Kilometers to Miles
  19. html+css模仿微信主页面
  20. HDLBits学习笔记——状态机(中)

热门文章

  1. NC65主子表单据,删除失败
  2. jQuery事件处理
  3. RNA-seq数据构成原理
  4. java dom4j解析xml 对象_Java XML解析 - 利用DOM4j解析XML
  5. 【Data augmentation in NLP】——1
  6. QQ服务器系统有哪些小功能,腾讯企点服务是什么?有哪些系统功能
  7. 生死存亡之数字炸弹(2.1)
  8. 浅析JaveScript中的Promise对象 暮雨清秋
  9. 内测播客产品“皮艇“,长音频市场能给快手代拍什么样的新故事?
  10. 高德地图控制logo位置及缩放按钮控制