PCIe扫盲(五)

在这里插入图片描述

系列文章目录


PCIe扫盲(一)
PCIe扫盲(二)
PCIe扫盲(三)
PCIe扫盲(四)
PCIe扫盲(五)


文章目录

  • 系列文章目录
  • TLP Header详解(一)
    • Byte Enable
    • Data Payload
  • TLP Header详解(二)
    • IO Request
    • Memory Request
    • Configuration Request
  • TLP Header详解(三)
    • Completions
  • TLP Header详解(四)
    • Message
      • INTx Interrupt Messages(中断消息)
      • INTx Message 的使用规则如下:
      • Power Management Messages(电源管理消息)
      • Error Messages(错误消息)
      • Locked Transaction Support
      • Set Slot Power Limit Message
      • Vendor‐Defined Message 0 and 1
      • Ignored Messages
      • Latency Tolerance Reporting Message
      • Optimized Buffer Flush and Fill Messages
  • 转载链接


TLP Header详解(一)

  事务层包(TLP)的一般格式如下图所示:

在这里插入图片描述

   前面的文章介绍过,TLP Header3DW 或者 4DWData Payload1-1024DW,最后的 TLP DigestECRC)是可选的,为 1DW

   TLP Header 在整个 TLP 的位置如下图所示,需要注意的是,TLP Header 的格式和内容都会随着 TLP 的类型和路由方式的改变而改变。

在这里插入图片描述

   TLP 的类型和路由方式由 FmtType 所决定,这在前面关于 TLP 路由的文章中已经详细的介绍过。上图显示的是各种不同格式的 TLP Header 的相同的部分。

   每一个 Field 的作用与意义如下表所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Byte Enable

   下面分别详细地介绍一下 Byte Enable,在 PCIeData Payload 的单位是 DW,也就是说数据大小(地址)需要以 DW 作为对齐。但是很多情况下,数据的大小并不是 DW 的整数倍,因此 PCIe 引入了 Byte Enable 来解决这一问题。使用 Byte Enable 需要遵循一下原则:

  • Byte Enable 为高电平有效,低电平(0)表示 Data Payload 的对应 Byte 将被认为是无效的,即不被 Completer 使用。

  • 如果有效数据小于 1DW,则 Last DW Byte Enable 应全部为 0

  • 如果 Data Payload 大于 1DW,则 First DW Byte Enable 至少有一位是有效的。

  • 如果 Data Payload 大于或等于 3DW,则 First DW Byte EnableLast DW Byte Enable 当中的有效位必须是连续的。即这种情况下,Byte Enable 只能用于调整起始地址和结束地址。

  • 如果 Data Payload 等于 1DW,则 First DW Byte Enable 中的有效位可以是不连续的。

  • 如果 Data Payload 等于 2DW,则 First DW Byte EnableLast DW Byte Enable 中的有效位都可以是不连续的。

  • 写请求中的 DW 等于 1,但是 First DW Byte Enable 中没有任何一位是有效的,也是允许的,但是这样的请求对于 Completer 没有任何作用。

  • 如果读请求 DW 等于 1,但是 First DW Byte Enable 中没有任何一位是有效的,此时 Completer 会返回 1DWData Payload,只是其中的数据都是无效的。这一方式常备用于 Flush Mechanism

   一个简单的 Byte Enable 使用的例子,如下图所示:

在这里插入图片描述

Data Payload

   关于 TLPData Payload 有:

  • Data Payload 的大小由 TLP Header 中的 Length 决定。

  • Data Payload 的数据采用的是 Little Endian,即低字节存放于低地址中。

  • Data Payload 的大小并不是有效的数据的大小,有效数据的大小是由 Data PayloadByte Enable 共同决定的。

  • TLP 类型为 Message 时,Length 一般是保留的(Reserved),除非该 Message 是带有数据的(MsgD)。

  • TLPData Payload 大小不得超过 Max_Payload_Size 的值,该值位于 Device Control Register 中。对于比较大的数据量,因此只能分多次进行发送。对于读请求来说,并没有 Data Payload,也就是说该规则并不适用于读请求。

  • 需要特别注意的是,起始地址和结束地址之间不能够跨越 4KB 的地址边界。

TLP Header详解(二)

   下面用几个具体的例子来讲解 TLP Header 的格式与作用。因为内容较多,所以分为多篇文章分别进行介绍。第一篇(即本文)介绍 IO RequestMemory RequestConfiguration Request 。第二篇文章(即 TLP Header 详解三)介绍 Completion ,第三篇文章(即 TLP Header 详解四)介绍 Message Request

IO Request

   IO RequestTLP Header 的格式如下图所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Memory Request

   Memory RequestTLP Header 的格式如下图所示:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

   注:TLP PrefixID Based OrderingIDO)和 TLP Processing HintsTH)均为 PCIe Spec V2.1 提出的。

Configuration Request

   Configuration RequestTLP Header 的格式如下图所示:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

   补充说明:关于 Byte Enable 的规则和一个简单的例子如下:

在这里插入图片描述

在这里插入图片描述

TLP Header详解(三)

Completions

   CompletionsTLP Header 的格式如下图所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

   这里来解释一下 Completion Status Codes

  • 000b (SC) Successful Completion:表示请求(Request)被正确的处理;

  • 001b (UR) Unsupported Request:表示请求是非法的或者不能被 Completer 所识别的。在 PCIe V1.1 以及之后的版本将这作为 Advisory Non-Fatal Error ;

  • 010b (CRS) Configuration Request Retry StatusCompleter 暂时不能响应的配置请求,需要 Requester 稍后再次尝试;

  • 100b (CA) Completer AbortCompleter 可以响应该请求,但是却发生了其他的错误,该错误是 Uncorrectable Error

   关于 CplD ,需要注意的是:

  • 前面的文章中多次提到,一个读请求可能会对应多个 CplD(因为 4KB 的地址边界问题,以及 RCB 的限制),但是返回的总的数据量应当与请求的数据量保持一致,否则可能会出现 Completion Timeout 的错误;

  • 一个 Completion 只能对应于一个 Request

  • IOConfiguration 读请求由于一直都是 1DW,因此其一直都只对应一个 Completion

  • Completion 中的状态码(Status Codes)为 SC(Successful)之外的状态,则一次传输(事务,Transaction)被终止;

  • 在处理一个请求多个 CplD 时,应当注意 Read Completion BoundaryRCB),RCB 的值可以是 64Bytes 或者 128Bytes

  • BridgeEndpoint 应设计为 RCB 的大小是可以通过软件修改或控制的;

  • 在处理一个请求多个 CplD 时,应注意先发送的时低地址的数据,后发送高地址数据。

   Requester 接受到 Completion 的处理规则:

  • 如果 Requester 接收到的 Completion 与自己之前发送的 Request 不一致,则会报错;

  • Completion 中的状态码不是 SC 或者 CRS 的话,则会报错,并且相关的 Buff 都会被清空;

  • 当任何非配置请求的 Completion 中的状态码为 CRS 时,都会被认为是非法的,并被认为是 Malformed TLP

TLP Header详解(四)

Message

  PCIe 中的 Message 主要是为了替代 PCI 中采用边带信号,这些边带信号的主要功能是中断,错误报告和电源管理等。所有的 Message 请求采用的都是 4DWTLP Header,但是并不是所有的空间都被利用上了,例如有的 Message 就没有使用 Byte8Byte15 的空间。

  Message 请求的 TLP Header 格式如下图所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  上面的表格中提到了,Message 主要有九个类型:

  1. INTx Interrupt Signaling

  2. Power Management

  3. Error Signaling

  4. Locked Transaction Support

  5. Slot Power Limit Support

  6. Vendor‐Defined Messages

  7. Ignored Messages (related to Hot‐Plug support in spec revision 1.1)

  8. Latency Tolerance Reporting (LTR)

  9. Optimized Buffer Flush and Fill (OBFF)

  下面将分别进行介绍一下,

INTx Interrupt Messages(中断消息)

  PCI 2.3 提出了 MSIMessage Signaled Interrupt),但是早期的 PCI 并不支持这一功能,PCIe 为此定义了一种 Virtual Wire 来模拟 PCI 的中断引脚(INTA-INTD)。如下图所示:

在这里插入图片描述

INTx Message 的使用规则如下:

  • They have no data payload and so the Length field is reserved.

  • They’re only issued by Upstream Ports. Checking this rule for received packets is optional but, if checked, violations will be handled as Malformed TLPs.

  • They are required to use the default traffic class TC0. Receivers must check for this and violations will be handled as Malformed TLPs.

  • Components at both ends of the Link must track the current state of the four virtual interrupts. If the logical state of one interrupt changes at the Upstream Port, it must send the appropriate INTx message.

  • INTx signaling is disabled when the Interrupt Disable bit of the Command Register is set = 1 (as would be the case for physical interrupt lines).

  • If any virtual INTx signals are active when the Interrupt Disable bit is set in the device, the Upstream Port must send corresponding Deassert_INTx messages.

  • Switches must track the state of the four INTx signals independently for each Downstream Port and combine the states for the Upstream Port.

  • The Root Complex must track the state of the four INTx lines independently and convert them into system interrupts in an implementation‐specific way.

  • They use the routing type “Local‐Terminate at Receiver” to allow a Switch to remap the designated interrupt pin when. Consequently, the Requester ID in an INTx message may be assigned by the last transmitter.

Power Management Messages(电源管理消息)

在这里插入图片描述

  Power Management Messages 使用规则如下:

  • Power Management Messages don’t have a data payload, so the Length field is reserved.

  • They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

  • PM_Active_State_Nak is sent from a Downstream Port after it observes a request from the Link neighbor to change the Link power state to L1 but it has chosen not to do so (Local ‐ Terminate at Receiver routing).

  • PM_PME is sent upstream by the component requesting a Power Management Event (Implicitly Routed to the Root Complex).

  • PM_Turn_Off is sent downstream to all endpoints (Implicitly Broadcast from the Root Complex routing).

  • PME_TO_Ack is sent upstream by endpoints. For switches with multiple Downstream Ports, this message won’t be forwarded upstream until all Downstream Ports have received it (Gather and Route to the Root Complex routing).

Error Messages(错误消息)

在这里插入图片描述

  Error Message 使用规则如下:

  • They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

  • They don’t have a data payload, so the Length field is reserved.

  • The Root Complex converts Error Messages into system‐specific events.

Locked Transaction Support

在这里插入图片描述

  Unlock Message 使用规则:

  • They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

  • They don’t have a data payload, and the Length field is reserved.

Set Slot Power Limit Message

在这里插入图片描述

  Set_Slot_Power_Limit Message 使用规则:

  • They’re required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

  • The data payload is 1 DW and so the Length field is set to one. Only the lower 10 bits of the 32‐bit data payload are used for slot power scaling; the upper payload bits must be set to zero.

  • This message is sent automatically anytime the Data Link Layer transitions to DL_Up status or if a configuration write to the Slot Capabilities Register occurs while the Data Link Layer is already reporting DL_Up status.

  • If the card in the slot already consumes less power than the power limit specified, it’s allowed to ignore the Message.

Vendor‐Defined Message 0 and 1

在这里插入图片描述

在这里插入图片描述

  厂商自定义 Message 使用规则:

  • A data payload may or may not be included with either type.

  • Messages are distinguished by the Vendor ID field.

  • Attribute bits [2] and [1:0] are not reserved.

  • If the Receiver doesn’t recognize the Message:

    • Type 1 Messages are silently discarded

    • Type 0 Messages are treated as an Unsupported Request error condition

Ignored Messages

在这里插入图片描述

  Hot Plug Message 使用规则:

  • They are driven by a Downstream Port to the card in the slot.

  • The Attention Button Message is driven upstream by a slot device.

Latency Tolerance Reporting Message

在这里插入图片描述
在这里插入图片描述

  LTR Message 使用规则:

  • They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

  • They do not have a data payload, and the Length field is reserved.

Optimized Buffer Flush and Fill Messages

在这里插入图片描述
在这里插入图片描述

  OBFF Message 使用规则:

  • They are required to use the default traffic class TC0. Receivers must check for this and handle violations as Malformed TLPs.

  • They do not have a data payload, and the Length field is reserved.

  • The Requester ID must be set to the Transmitting Port’s ID.

转载链接

  1. TLP Header详解(一)
  2. TLP Header详解(二)
  3. TLP Header详解(三)
  4. TLP Header详解(四)

  
 


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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统编程入门 | 模拟实现 ls -l 命令

模拟实现代码 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <pwd.h> #include <grp.h> #include <time.h> #include <string.h>int main(int argc, char* argv[]) {if (a…

为什么嫁人就要嫁公务员?稳定、收入高、福利好、资源多

在现代社会&#xff0c;择偶不仅仅是感情问题&#xff0c;更涉及到经济、社会地位和未来生活的方方面面。 对于很多女性来说&#xff0c;选择一个稳定、可靠的伴侣至关重要。而公务员作为一个备受尊敬的职业&#xff0c;成为了很多人心目中的理想对象。 那么&#xff0c;为什…

使用密钥文件登陆Linux服务器

假设A服务器为登陆目标,已经运行ssh服务。 B服务器作为登陆发起端。 登陆A服务器,账户S。 运行命令: ssh-keygen -t rsa 此时账户S家目录下会自动创建目录“.ssh”,目录下会有id_rsa和id_rsa.pub两个文件。 id_rsa为私钥,id_rsa.pub为公钥。 id_rsa文件内容下载到B服务…

web基础—dvwa靶场(七)SQL Injection

SQL Injection&#xff08;SQL注入&#xff09; SQL Injection&#xff08;SQL注入&#xff09;&#xff0c;是指攻击者通过注入恶意的SQL命令&#xff0c;破坏SQL查询语句的结构&#xff0c;从而达到执行恶意SQL语句的目的。SQL注入漏洞的危害是巨大的&#xff0c;常常会导致…

勒索软件和四重勒索策略:使用易备数据备份软件进行保护

文章内容&#xff1a; 1. 勒索行为类型 2. 勒索软件的演变&#xff1a;四重勒索 3. 遭遇勒索软件攻击时应遵循的准则 4. 防御勒索攻击的工具 5. 使用易备数据备份软件进行预防和备份 2024 年&#xff0c;勒索软件仍然是全球网络安全面临的最大威胁之一。威胁形势不断演变&#…

win11 下载安装MYSQL 5.7.30(保姆教程)

目录 一、下载安装包 二、安装 三、试一下 四、解决问题 1.如果出现“mysql不是内部或外部命令&#xff0c;也不是可运行的程序” 1.配置环境变量 2.重新打开cmd测试 一、下载安装包 进入下载链接&#xff1a;https://www.mysql.com/why-mysql/windows/https://www.mysq…

00898 互联网软件应用与开发自考复习题

资料来自互联网软件应用与开发大纲 南京航空航天大学 高纲4295和JSP 应用与开发技术(第 3 版) 马建红、李学相 清华大学出版社2019年 第一章 一、选择题 通过Internet发送请求消息和响应消息使用&#xff08;&#xff09;网络协议。 FTP B. TCP/IP C. HTTP D. DNS Web应…

OpenAI 的最强模型 o1 的“护城河”失守?谷歌 DeepMind 早已揭示相同原理

发布不到一周&#xff0c;OpenAI 的最新模型 o1 的“护城河”似乎已经失守。 近日&#xff0c;有人发现谷歌 DeepMind 早在今年 8 月发表的一篇论文&#xff0c;揭示了与 o1 模型极其相似的工作原理。 这项研究指出&#xff0c;在模型推理过程中增加测试时的计算量&#xff0c…

SAP SPROXY 配置

事务码SPROXY 然后找到目标的地址 然后创建新对象即可

基于springboot的在线视频点播系统

文未可获取一份本项目的java源码和数据库参考。 国外研究现状&#xff1a; 与传统媒体不同的是&#xff0c;新媒体在理念和应用上都采用了新颖的媒介或媒体。新媒体是指应用在数字技术、在传统媒体基础上改造、或者更新换代而来的媒介或媒体。新兴媒体与传统媒体在理念和应用…

大数据产业核心环节有哪些?哪里可以找到完整的大数据产业分析?

▶大数据产业前景开阔 大数据产业正站在数字化时代前沿&#xff0c;预计在未来几年将实现显著增长和扩展。目前&#xff0c;中国大数据产业规模在2021年已达到1.3万亿元&#xff0c;并在2022年增长至1.6万亿元&#xff0c;预计到2025年将突破3万亿元大关&#xff0c;年均复合增…

客户文章 | DAP-seq助力揭示MYC2转录因子调控银杏萜内酯生物合成的分子机制

银杏萜内酯是银杏中重要的天然药用活性成分&#xff0c;具有抗血栓、抗炎、治疗心脑血管疾病和预防阿尔茨海默病等药理活性&#xff0c;也是血小板活化因子的强拮抗剂。萜内酯在银杏中的含量极低&#xff0c;难以满足医药行业的需求&#xff0c;限制了银杏产业的发展和临床应用…

用友U8二次开发工具KK-FULL-*****-EFWeb使用方法

1、安装: 下一步&#xff0c;下一步即可。弹出黑框不要关闭&#xff0c;让其自动执行并关闭。 2、服务配置&#xff1a; 输入服务器IP地址&#xff0c;选择U8数据源&#xff0c;输入U8用户名及账号&#xff0c;U8登录日期勾选系统日期。测试参数有效性&#xff0c;提示测试通过…

月入10000+,蓝海项目!少儿英语赛道

一、项目原理 少儿英语赛道的话&#xff0c;我们主要通过英语小短文&#xff0c;来让孩子学习英语&#xff0c;虽然现在有很多英语的课程&#xff0c;但针对少儿的英语是比较少的&#xff0c;所以这个赛道还是很吃香的。 整体流程也简单&#xff0c;先用AI写出故事&#xff0…

Android15之源码分支qpr、dp、beta、r1含义(二百三十二)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

SpringBoot基础实战系列(二)springboot解析json与HttpMessageConverter

SpringBoot解析Json格式数据 ResponseBody 注&#xff1a;该注解表示前端请求后端controller&#xff0c;后端响应请求返回 json 格式数据前端&#xff0c;实质就是将java对象序列化 1.创建Controller 注&#xff1a;springboot默认就已经支持返回json格式数据&#xff0c;只需…

多智能体强化学习示例

程序功能 这段代码实现了一个多智能体强化学习环境&#xff0c;其中两个智能体在5x5的网格上移动&#xff1a; 智能体目标&#xff1a; Agent 1 从 (0, 0) 出发&#xff0c;目标是 (4, 4)。 Agent 2 从 (4, 4) 出发&#xff0c;目标是 (0, 0)。 动作空间&#xff1a;每个智能体…

2023年全国研究生数学建模竞赛华为杯C题大规模创新类竞赛评审方案研究求解全过程文档及程序

2023年全国研究生数学建模竞赛华为杯 C题 大规模创新类竞赛评审方案研究 原题再现&#xff1a; 现在创新类竞赛很多&#xff0c;其中规模较大的竞赛&#xff0c;一般采用两阶段&#xff08;网评、现场评审&#xff09;或三阶段&#xff08;网评、现场评审和答辩&#xff09;评…

数据库加密算法

功能简介 对数据库字段进行加密,如下图: 一、yml配置 注意: MD5_32 MD5_16 BASE64 AES SM2 SM3 SM4 需要 password(14位 ,26位, 32 位) 就行 非对称算法如:SM2,RSA, 需要配置 密码:password 公钥:publicKey 私钥:privateKey yml: # 数据加密 mybatis-encry…

【Linux】从内核认识信号

一、阻塞信号 1 .信号的一些其他相关概念 实际执行信号的处理动作称为信号递达(Delivery) 信号从产生到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作. 注…