PCIE协议-2-事务层规范-Virtual Channel (VC) Mechanism

2.5 虚拟通道(VC)机制

虚拟通道(VC)机制提供了对可以在整个结构中传输使用TC(流量类别)标签区分的流量的支持。VC的基础是独立的结构资源(队列/缓冲区及其相关的控制逻辑)。这些资源被用来在具有完全独立的流控制的不同VC之间跨链路移动信息。这对于解决流控制引起的阻塞问题至关重要,其中单个流量可能为系统中的所有流量创建瓶颈。

通过将具有特定TC标签的数据包映射到相应的VC,将流量与VC关联起来。VC和多功能虚拟通道(MFVC)机制允许灵活地将TC映射到VC上。在最简单的形式中,TC可以一对一地映射到VC上。为了允许性能/成本权衡,PCI Express提供了将多个TC映射到单个VC的能力。第2.5.2节涵盖了TC到VC映射的详细信息。

当一个或多个TC与由虚拟通道识别(VC ID)指定的物理VC资源关联时,就会建立一个虚拟通道。这个过程由配置软件控制,如第6.3节、第7.9.1节和第7.9.2节所述。

支持默认的TC0/VC0对之外的TC和VC是可选的。TC0与VC0的关联是固定的,即“硬连线”的,并且必须由所有组件支持。因此,baseline TC/VC设置不需要任何VC特定的硬件或软件配置。为了确保互操作性,不实现可选的虚拟通道能力结构或多功能虚拟通道能力结构的组件必须遵守以下规则:

  • 请求者只能生成带有TC0标签的请求。(请注意,如果请求者使用除TC0之外的TC标签发起请求,那么这些请求可能会被实现扩展VC能力并应用TC过滤的链路另一侧的组件视为格式错误。)
  • 完成者必须接受带有非TC0标签的请求,并且必须保留TC标签。也就是说,它生成的任何完成事务都必须具有与请求标签相同的TC标签。

  • Switch必须将所有TC映射到VC0,并且必须转发所有事务,而不管TC标签是什么。

包含能够生成非TC0标签请求的功能的设备必须实现适当的VC(虚拟通道)或MFVC(多功能虚拟通道)能力结构(如适用),即使它只支持默认的VC。示例功能类型包括端点和根端口。这是为了能够启用超出默认配置的TC到VC的映射。它必须根据VC和MFVC能力结构的软件编程遵循TC/VC映射规则。

图2-45阐述了虚拟通道的概念。从概念上讲,通过VC流动的流量在传输端被复用到一个共同的物理链路资源上,并在接收端被解复用到单独的VC路径上。

在交换机内部,每个虚拟通道都需要专用的物理资源。图2-46从概念上展示了交换机内(如图2-45所示)支持上游方向流量流动所需的VC资源。

多功能设备(MFD)可以实现类似于交换机中的一部分虚拟通道资源,目的是为了管理来自不同功能到设备上游出口端口的上游请求的服务质量(Quality of Service,QoS)。

 2.5.1 虚拟通道识别(VC ID)

PCI Express端口可以支持1到8个虚拟通道 - 每个端口独立配置/管理,因此允许实现根据使用模型特定要求变化每个端口支持的虚拟通道数量。 这些虚拟通道使用VC ID机制唯一标识。

请注意,虽然数据链路层协议(DLLPs)包含用于流量控制计算的VC ID信息,但事务层包(TLPs)则不包含。为了流量控制计算的目的,将TLPs与VC ID关联是在链路的每个端口使用TC到VC映射完成的,如第2.5.2节中讨论的。

所有支持超过VC0的端口必须根据第7.9.1节的定义至少提供一个VC能力结构。多功能设备(MFD)允许实现第7.9.2节中定义的MFVC(多功能虚拟通道)能力结构。对于仅支持默认TC0/VC0配置的端口,提供这些扩展结构是可选的。配置软件负责为链路的两侧端口配置匹配数量的VC。这是通过扫描层次结构并使用与支持多于默认VC0的端口相关联的VC或MFVC能力寄存器来完成的,以建立链路的VC数量。在端口内分配VC ID到VC硬件资源的规则如下:

  • VC ID分配必须在每个端口内唯一 - 相同的VC ID不能分配给同一端口内的不同VC硬件资源。
  • VC ID分配必须在链路两侧的两个端口上相同(在VC数量及其ID方面匹配)。

如果MFD实现了MFVC能力结构,其VC硬件资源与其功能(Functions)的任何VC能力结构相关联的VC硬件资源是不同的。VC ID的唯一性要求(上述第一点)对MFVC和任何VC能力结构仍然单独适用。此外,VC ID跨链路匹配要求(上述第二点)适用于MFVC能力结构,但不适用于功能(Functions)的VC能力结构。

  • VC ID 0被分配并固定给默认VC。

2.5.2 TC到VC映射

每个支持的流量类别(Traffic Class)都必须映射到一个虚拟通道上。TC0到VC0的映射是固定的。除了TC0之外的TC到VC的映射是系统软件特定的。然而,映射算法必须遵守以下规则:

  • 一个或多个TC可以映射到一个VC上。
  • 任何端口或端点功能上,一个TC不能映射到多个VC上。
  • 链路两侧的端口上TC/VC映射必须相同。

表2-41提供了TC到VC映射的示例。

图2-47提供了在几种不同链路配置中TC(流量类别)到VC(虚拟通道)映射的图形说明。有关TC/VC的额外考虑,请参考第6.3节。

2.5.3 VC和TC规则

以下是与TC/VC机制相关的关键规则的总结:

  • 所有设备必须支持通用输入/输出流量类别,即TC0,并且必须实现默认的VC0。
  • 每个虚拟通道(VC)都有独立的流量控制。
  • 不同TC之间不需要排序关系。
  • 不同VC之间不需要排序关系。
  • 交换机的点对点能力适用于交换机支持的所有虚拟通道。
  • 多功能设备(MFD)在不同功能之间的点对点能力适用于MFD支持的所有虚拟通道。
  • 具有未映射到入口端口的任何已启用虚拟通道(VC)的流量类别(TC)的事务被视为畸形事务层数据包(TLP)由接收设备处理。
  • 对于交换机,具有未映射到目标出口端口的任何已启用VC的TC的事务被视为畸形TLP。
  • 对于根端口,具有未映射到目标根复合体(RCRB)的任何已启用VC的TC的事务被视为畸形TLP。
  • 对于具有多功能虚拟通道(MFVC)能力结构的多功能设备(MFD),任何具有未映射到MFVC能力结构中的已启用VC的TC的事务被视为畸形TLP。
  • 交换机必须支持每个端口独立的TC/VC映射配置。
  • 根复合体必须支持每个RCRB、相关根端口和任何RCiEPs独立的TC/VC映射配置。
  • 更多关于VC和TC机制的细节,包括配置、映射和仲裁,请参阅第6.3节。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/838210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android踩坑】重写onClick方法时,显示Method does not override method from its supperclass

问题 重写onClick方法时,显示Method does not override method from its supperclass 解决 在类上加implements View.OnClickListener

用于WB的抗体一定能用来做IHC吗?

首先,我们来了解下抗原表位。由于蛋白可以折叠成三维结构。 所以抗原表位可以分成两种类型: 线性表位 一般指的是由序列上相连接的一些氨基酸残基通过共价键形成的结构,也称为顺序表位,是蛋白质的一级结构,比较稳定&…

【重生之我在学Android】WorkManager (章一)

相关文章 【重生之我在学Android原生】ContentProvider(Java) 【重生之我在学Android原生】Media3 【重生之我在学Android】WorkManager (章一) 前言 官方文档 官方推荐 - 前台服务、后台服务都可以使用WorkManger来实现 案例 语言:JA…

Vue3详细讲解

Vue 3 介绍 文章目录 Vue 3 介绍为什么要学习 vue 3Vue3 动机 和 新特性 Vite 的使用vite介绍为什么选 Vite ?Vite 的基本使用Vue3.0项目介绍vscode插件说明 组合式APIcomposition API vs options API体验 composition APIsetup 函数reactive 函数ref 函数script se…

webpack优化构建体积示例-并行压缩:

uglifyjs-webpack-plugin和terser-webpack-plugin都可以开启多进程并进行压缩来减小构件体积大小。 当在 Webpack 配置中启用 minimize: true 时,构建时间通常会增加,这是因为 Webpack 会在构建过程中添加一个额外的步骤:代码压缩。代码压缩是…

Mysql数据库二进制日志导致磁盘满了处理过程

数据库的二进制日志是数据库管理系统(DBMS)用来记录所有对数据库进行修改的操作的记录。这种日志对于数据库的备份、恢复、复制和审计等操作至关重要。 以MySQL数据库为例,二进制日志(Binary Log)记录了所有更改数据的…

VBA直连SAP RFC 接口实例

引用依赖: VBA 调用 SAP API的RFC函数:RFC_READ_TABLE Sub A() 查询SAP表数据并输出到EXCEL,VBA中不区分大小写(保存后会自动把代码、变量转换大小写)Dim iData As Integer Dim nField As Integer Dim nData As Integer Dim Result As Boolean Dim vRow As Variant MsgBox…

机器人操作系统ROS2学习—控制小海龟运动

将Ubuntu系统和ROS2安装完成后,就可以进行调用小海龟运动了。 一、打开Ubuntu系统后,调用终端窗口。有3 种方法可以打开启动终端: 1、通过快捷键CtrAItT; 2、桌面左下角有个显示应用的菜单,点击后找到终端“Terminal”图标,打…

PCIe协议之-TLP Header详解(二)

✨前言: 在PCIe中,存在几种不同类型的请求,主要包括IO(Request)请求、存储器(Request)请求和配置(Request)请求。这些请求类型允许CPU与连接在PCIe总线上的设备进行通信和控制。 🌟1. IO(Request)请求 定义与作用: IO请求&…

Android ashmem 原理分析

源码基于:Andoird U Kernel-5.10 0. 简介 ashmem 称为匿名共享内存(Anonymous Shared Memory),它以驱动程序的形式实现在内核空间中。它有两个特点: 能否辅助内存管理系统来有效地管理不再使用的内存块(pin / unpin); 通过Bind…

Android Don‘t Press With Parent Button按钮效果代码实现

1、需求效果 在做书签界面的时候,点击listview时候,删除按钮不要反选(图一);点击删除按钮删除按钮要反选(图二 ),效果图如下所示: 2、代码实现 2.1、java package com.eebbk.synstudy.bookmark;import android.co…

Echarts使用

介绍 ECharts 是一个强大的,基于 JavaScript 的开源数据可视化库,适用于创建多种类型的图表,满足广泛的业务需求。它由百度团队开发并维护,后来捐赠给了 Apache 软件基金会,并已在2021年从孵化项目毕业,成…

Java 插入数据到Elasticsearch中进行各种类型文档的内容检索

源码下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1D3yszkTzjwQz0vFRozQl2g?pwdz6kb 提取码&#xff1a;z6kb 实现思路 1.搭建一个新的springboot项目&#xff0c;不会的请看我这篇博客&#xff1a;springboot项目搭建 2.添加maven依赖 <dependency><…

计算机毕业设计源码 | 基于SpringBoot的线上教学系统 答疑辅导网站(附源码)

1&#xff0c;项目介绍 1.1 项目背景 网络问答平台经历了多年的发展&#xff0c;目前处于一个日益成熟的状态。最早的网络问答平台是知乎&#xff0c;知乎的创立者认为有许多信息在互联网上没有被记录和共享&#xff0c;于是他们决定创造一个平台&#xff0c;能够让更多人可以…

【翻译】Processing系列|(四)用 Android Studio 从 0 到 1 进行 Processing 安卓开发

原文链接&#xff1a;Processing for Android Developing with Android Studio 朋友跟我说官方教程里也写了该怎么用 Android Studio 开发&#xff0c;并且亲测可行。这种方式确实能开发出结构更加清晰、额外组件更加少的程序&#xff0c;比上一篇文章中直接克隆 Processing-An…

C# WinForm —— 21 RichTextBox 使用

1. 加载文件到控件中 加载文件时&#xff0c;要设置文件的路径和类型RichTextBoxStreamType&#xff0c;文件类型包含&#xff1a; RichText 0&#xff1a;富文本格式&#xff08;RTF&#xff09;流PlainText 1&#xff1a;纯文本流对象链接和嵌入&#xff08;OLE&#xff…

基于RK3568的鸿蒙通行一体机方案项目

鸿蒙通行一体机方案以鸿蒙版AIoT-3568X人工智能主板为核心平台&#xff0c;搭载OpenHarmony操作系统&#xff0c;使用自研算法和国产芯片&#xff0c;可管可控&#xff0c;并提供身份识别以及其他外设配件生态链支持。 01 项目概述 项目使用场景 鸿蒙版通行一体机方案凭借自主…

win11此电脑右键“属性“选项,无法打开怎么解决?

方法如下&#xff1a; 1. 按【 Win X 】组合键&#xff0c;或【 右键】点击任务栏上的【 Windows开始菜单】&#xff0c;在打开的隐藏菜单项中&#xff0c;选择【 终端管理员】&#xff1b; 2. 用户账户控制窗口&#xff0c;你要允许此应用对你的设备进行更改吗&#xff1f;点…

深入 Go 语言:使用 math/rand 包实现高效随机数生成

深入 Go 语言&#xff1a;使用 math/rand 包实现高效随机数生成 介绍math/rand 包的核心功能设计哲学应用场景 基础使用方法初始化和种子设置设置种子创建私有随机数生成器 基础函数详解生成整数生成特定范围的整数生成浮点数随机置乱数组 进阶技巧随机数的统计属性生成正态分布…

高级炫酷的个人主页or引导页

高级炫酷个人主页 效果图部分代码领取源码下期更新预报 效果图 部分代码 <!DOCTYPE html><html lang"zh-CN"><head><meta charset"utf-8"><meta content"yes" name"apple-mobile-web-app-capable"> &l…