【精讲】PCIe Quality of Service(QoS)机制

目录

本章概述

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的内容分享。

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《Java虚拟机精讲》是一本介绍Java虚拟机的权威性书籍。该书的作者是豆瓣高分图书《深入理解Java虚拟机:JVM高级特性与最佳实践》的作者陈晓明。 该书共分为12章,全面解析了Java虚拟机的原理、结构、内存管理、垃圾收集、安全性等方面的内容。 首先,该书通过介绍Java虚拟机的历史背景和发展,引出了Java虚拟机在Java程序运行中的重要性以及其作用。 接着,该书详细介绍了Java虚拟机的架构,包括Java虚拟机的运行时数据区域、执行引擎、类加载机制等。 然后,该书详细解析了Java虚拟机的内存管理,包括Java堆、方法区、运行时常量池等各个内存区域的作用、实现原理以及优化技巧。 此外,该书还对Java虚拟机的垃圾收集机制进行深入介绍,包括垃圾收集算法、垃圾收集器的分类和选择原则,并提供了相应的性能调优方法。 另外,该书还涵盖了Java虚拟机的安全性问题,包括如何保证Java程序的安全、如何进行代码审计等内容。 最后,该书还介绍了Java虚拟机的性能调优方法,包括如何进行性能诊断、性能优化等方面的内容。 总之,《Java虚拟机精讲》是一本全面而深入介绍Java虚拟机的书籍,对于想要深入了解Java虚拟机原理、优化Java程序性能的开发者和爱好者来说,是一本不可多得的好书。通过阅读该书,读者可以全面掌握Java虚拟机的工作原理,为编写高性能、稳定的Java程序提供指导。 ### 回答2: 《Java虚拟机精讲》是一本详细讲解Java虚拟机(JVM)原理和内部实现的电子书。这本书系统地介绍了JVM的结构、执行引擎、垃圾回收器、类加载机制等关键组件。 首先,本书对JVM的结构进行了详细讲解。它将JVM分为类加载子系统、执行引擎、内存管理和垃圾回收子系统等几个模块,每个模块都被详细讲解了其内部的工作原理和实现细节。读者可以通过对JVM结构的了解,深入理解JVM的内部运作方式。 其次,本书对JVM的执行引擎进行了深入解析。它介绍了JVM的运行时数据区域、栈帧的结构和数据传递方式等关键概念,帮助读者理解Java字节码的执行过程。 此外,垃圾回收是JVM的重要特性之一,而本书也对JVM的垃圾回收器进行了详细的介绍。它解释了不同类型的垃圾回收器(如Serial、Parallel、CMS、G1等)的原理和适用场景,并且通过一些实例帮助读者理解垃圾回收器的工作过程。 最后,本书还对类加载机制进行了解析。它包括类加载的过程、双亲委派模型、类的初始化和链接等内容,帮助读者深入理解Java类的加载和运行机制。 总之,《Java虚拟机精讲》是一本深入讲解JVM原理和内部实现的电子书。通过阅读本书,读者可以更全面地了解JVM的结构、执行引擎、垃圾回收机制和类加载机制等关键组成部分,为深入理解Java编程和性能优化提供了基础。 ### 回答3: 《Java虚拟机精讲PDF》是一本系统而全面地介绍Java虚拟机的教材。Java虚拟机(JVM)是Java程序在执行过程中所依赖的运行环境,它可以解释和执行Java字节码。此书围绕着JVM的运行机制、内存管理、垃圾回收等方面展开详细的介绍。 首先,该书详细讲解了JVM的执行过程和各个组件的作用。它深入探讨了类加载器、字节码解释器、即时编译器等核心组件,并结合实例进行解释。读者能够学习到JVM执行Java代码的具体流程,了解JVM是如何加载并执行Java类的。 其次,该书重点介绍了JVM的内存管理机制。它详细解释了Java内存模型、堆、栈、方法区等内存结构,以及垃圾回收机制。读者可以了解到Java虚拟机是如何管理和分配内存的,以及如何通过垃圾回收来优化内存的使用。 此外,该书还涵盖了性能调优、多线程并发等高级主题。它介绍了如何通过设置JVM参数来优化应用程序的性能,并提供了一些常见的性能调优技巧。同时,它也介绍了Java多线程编程的基本原理和常用的线程安全机制。 总的来说,《Java虚拟机精讲PDF》是一本对于深入了解和研究Java虚拟机非常有帮助的教材。通过阅读本书,读者可以系统全面地掌握Java虚拟机的原理和实现机制,从而更加高效地进行Java程序的开发和调优。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值