pciex几怎么看_怎么检测pcie是否正常

pciex几怎么看_怎么检测pcie是否正常一些PCIE知识整理——PCIe设备层设备之间的信息传输是使用数据包(package)完成的,数据包内不仅有数据,还有其他部分起辅助作用,因为裸奔的数据在链路(Link)上传输容易出错。我们通过介绍数据包,来理解设备层各层的结构和功能。根据起源和终止

一些PCIE知识整理——PCIe设备层   设备之间的信息传输是使用数据包(package)完成的,数据包内不仅有数据,还有其他部分起辅助作用,因为裸奔的数据在链路(Link)上传输容易出错。我们通过介绍数据包,来理解设备层各层的结构和功能。   根据起源和终止,数据包可以分为3类:   事务层数据包(Transaction Layer Package TLP): 起源于发送设备的事务层,终止于接收设备的事务层。   数据链路层数据包(Data Link Layer Package DLLP): 起源于发送设备的数据链路层,终止于接收设备的数据链路层。   物理层数据包(Physical Layer Package PLP): 起源于发送设备的物理层,终止于接收设备的物理层。   事务层数据包(TLP):
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   TLP的装配:
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   软件层/设备核心将装配TLP核心部分所需的信息发送至处理层,这部分是TLP数据包的头(Header)和数据部分,有些数据包没有数据。设备层计算可选的 端到端(end to end)的CRC字段并附加到数据包中,简称ECRC。数据包最终的目标设备要使用ECRC字段来检查TLP头和数据部分中的CRC错误。循环冗余校验Cyclic Redundancy Check, CRC),是一种用于校验通信链路上数字传输准确性的计算方法(通过某种数学运算来建立数据位和校验位的约定关系),在发送端建立这种关系,在接收端检查这种关系,以判断数据在传输过程中是否有出错。接着数据包被发送到数据链路层,数据链路层为数据包添加序列ID(Sequence Number)和LCRC字段,序列ID的作用后面再说。接收设备使用LCRC字段来检查TLP核心部分和序列ID中的CRC错误。接着数据包被发送至物理层,物理层在数据包的开头和结尾各添加一个字节的帧字符。作为数据包开始和结束的标志。然后对数据包进行编码(128/130编码),并使用Link(链路)上的差动通道发送数据包。   对于差动通道:
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   上图表现出PCIe信号的电气特性,对于一个串行通道有一对模拟信号,D+ 和 D- 终端之间的正电压代表逻辑1,D+ 和 D- 终端之间的负电压代表逻辑0。没有电压差意味着驱动器处于高阻态,链路处于电气空闲和低功率状态。   TLP拆解:接收设备接收TLP的比特流,物理层解码收到的TLP,剥除开始和结束帧字段。发送给数据链路层。数据链路层剥除序列ID和LCRC字段,使用LCRC检查TLP核心部分和序列ID中的错误。如果设备为目标设备(TLP目的地),则将数据包发送给处理层。如果接收设备为交换器,此时交换器可以使用ECRC检查TLP头和数据部分中的CRC错误,甚至报告错误。如果无误,交换器将根据数据包头中的地址信息(路由信息),判断地址是否在自己的下游设备地址范围内(可以理解快递站检查该快递是否在自己的管辖小区范围内),如果在便转发,如果不在便拒绝。不管是转发还是拒绝,此时的数据包被拆解,交换器需要重新添加拆解下来的部分。   总结
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   不管是根聚合体RC,还是端点(Endpoint)和交换器,都需要实现三层结构。以根聚合体RC发送数据包给端点1为例,RC给数据穿上衣服形成数据包,防止裸奔出错,发送给交换器端口A。端口A把数据包脱光,看看数据包是去哪的。如果是去交换器的辖区之内,端口A便给数据包穿上新衣服,发送给对应的端口B,端口B不嫌麻烦,把数据包脱光衣服,再穿上新衣服,最后发送给端点1。端点1为目标设备,脱掉数据包的衣服,层层检查。向上转发,直到设备核心。如果数据不是去辖区之内,端口A给数据穿上新衣服,拒绝接收数据包。发到别的地方去。   交换器虽然是完成转发的任务,但是依然需要完成这三层结构,只有这样交换器才能识别数据包中的地址信息,判断数据包是发送到哪个地方的。   数据链路层数据包(Data Link Layer Package DLLP)   DLLP的起源和终止
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   DLLP起源于发送设备的数据链路层,终止于接收设备的数据链路层。当它通过物理层时,物理层也对它起装配/拆解作用。   DLLP的功能:DLLP不同于TLP,主要用于链路管理,包括与ACK/NAK协议相关的TLP确认、电源管理和流控制信息的交换。(后面会介绍)。DLLP在两个直连组价的数据链路层之间传输,不通过交换器,也没有路由信息。数据包较小,只有8个字节(Byte)。如果TLP是从起点出发,经过很多火车站的列车,最终到达目的地,那么DLLP就是在铁路线上相邻两个火车站之间运行的列车。永远不会通过火车站到达别的地方。   DLLP装配   有各种各样的DLLP,包括流控制DLLP,确认TLP接收的确认/否认DLLP(ACK/NAK协议相关),电源管理DLLP。DLLP中的类型字段会标识出DLLP的种类。
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常数据链路层产生DLLP,并添加16比特的CRC,DLLP接收器用它来检查CRC错误。DLLP和16位的CRC被一起发送到物理层。物理层接收数据包并在开头和结尾各加上1个字节的成帧字符。作为开始和结束的标志。对数据包进行编码,并使用Link(链路)上的差动通道发送数据包。   DLLP拆解
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常接收设备物理层接收DLLP,解码接收到的比特流并去除开头结束帧,将数据包发送至数据链路层数据链路层检查CRC错误并去除CRC字段。数据链路层是目的地,不会在向上转发。   物理层数据包(Physical Layer Package PLP)   PLP的起源和终止
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   PLP结构:PLP是一种非常简单的数据包,开始是一个字节的COM字符,后面是定义PLP类型的以及含有其他信息的3个或多个字符。PLP的大小是4字节的整数倍。如下图所示,规范称这种数据包为有序集。
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   与DLLP一样,PLP不含任何路由信息,不会通过交换器进行传播。   PCIe设备层详细介绍
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   设备核心/软件层   设备核心可以是根聚合体(RC)或者例如以太网控制器、USB控制器等Endpoint核心逻辑组成。   发送部分   设备核心逻辑和本地软件一起提供PCIe设备生成TLP所必需的信息,这些信息包括:事务类型(TLP类型)、地址、接收的数据量、数据、接收的TLP流量类别,消息索引和错误情况等。这些信息通过发送接口发送至设备的处理层。   接收部分   设备核心逻辑通过接接口来接收处理层发送的信息。这些信息包括:事务类型(TLP类型)、地址、接收的数据量、数据、接收的TLP流量类别,消息索引和错误情况等。   处理层/事务层   处理层负责生成出栈TLP和接收入栈TLP。
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常处理层支持用于非报告事物的分离事务协议,也就是说,处理层会记录已发送出去的TLP的标记,识别接收的完成TLP的标记,并将二者联系起来。这样便能知道事务是否顺利完成。处理层含有虚拟信道缓冲区(VC 缓冲区),用来存储等待发送的出站TLP以及从链路上接收的入站TLP。与虚拟信道缓冲区相关的流控制能够保证远程的发送端不会发送过多的TLP,因而避免引起接收端虚拟信道缓冲区溢出。并且在TLP发送之前,处理层能根据顺序规则对TLP排序,这和服务质量协议(QoS)相关。   流控制   只有保证在接收设备处理层中虚拟信道缓冲区还有空间接收TLP时,发送设备才可以在链路上发送TLP。保证这一机制的协议称为“流控制”协议。如果发送设备不遵守规则,便可能导致接收设备处理层中虚拟信道缓冲区溢出。
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   上图概述了流控制过程,接收设备定期地发送一种称为流控制数据包(FCx DLLP)的DLLP给发送设备。该DLLP含有流控制信用信息,用来告诉发送器关于接收器虚拟信道缓冲区还有多少可用的空间信息。发送器确定远程接收器虚拟信道缓冲区内还有剩余空间可以接收TLP时,才将TLP发送。   流量类别(TC)和虚拟信道(VC)   TC 是数据包的头(header)内的一个3比特的字段。用来将流量分成8种(TC0 ~ TC7)不同的类别,本地应用软件和系统软件根据性能要求确定某个TLP使用什么样的TC标志。   VC 是物理缓冲区,它通过使用发送和接收虚拟信道缓冲区,提供一种在链路上实现多个独立数据流的方法。PCIe设备可以实现最多8个VC缓冲区(VC0 ~ VC7)。并且必须要实现 VC0,最通用的服务类别。   设备或交换器需要实现TC/VC映射逻辑,通过该逻辑形成对应关系,把给定的TC号的TLP使用特定的VC号的缓冲区通过链路发送出去。多个TC可以对应一个VC,因而可以使用有限数目的VC缓冲区来降低设备成本。系统软件通过配置寄存器设置 TC/VC 的映射。应用软件确定TLP的TC标志以及设置满足性能要求的TC/VC的映射关系。最简单的情况可以将 TC/VC 映射寄存器设置为TC到VC的一对一关系。
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   考虑上图的例子,我们假设端点(Endpoint)发送TLP到交换器,那么图中的发送设备A看做端点(Endpoint)的端口,接收设备B看作交换器的一个下游端口,接收来自端点的TLP。我们将设备A中的TC/VC映射寄存器设置为,TC2 ~ TC0类别的TLP映射到VC0,TC3 ~ TC7类别的TLP映射到VC1。接收设备B中的 TV/VC 映射寄存器也需要配置为与设备A同样的映射方式。在设备A和设备B中,启用了相同编号的VC缓冲区,即 VC0 和 VC1。   如果设备A需要发送一个 TC 标志为7的TLP,和另一个 TC 标志为0的TLP,那么在设备A中,这两个数据包分别被放入 VC1 缓冲区和 VC0 缓冲区。如果我们将 VC1 的优先级设置比 VC0 高,那么仲裁器优先将选择 VC1 缓冲区中的 TC7 TLP转发到链路上。当这些 TLP 到达接收设备B时,TC/VC 映射逻辑解码每个TLP中的TC标志,将 TC7 TLP放入 VC1 缓冲区,将 TC0 的TLP放入 VC0 缓冲区。通过 TC/VC 映射和 优先级的设置。便可以将数据包以不同的优先级传输。这样便可以将一条物理链路(实际的链路),变成两条优先级不同的虚拟链路。而在同一虚拟信道缓冲区内,以相同的优先级,按先后次序流动。   服务质量   服务质量是指在确定的带宽和延迟的情况下,结构以不同的优先级路由不同应用程序数据包的能力。   举个例子,交换器的下游端口上挂载了两个设备,现在它们同时需要向根聚合体(RC)发送TLP,但是交换器带宽有限又有延迟。所以需要在两个不同设备的TLP中设置优先级标志,交换器需要识别这个标志并将优先级高的TLP向上游端口转发。
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常如上图所示,对于摄像机设备和SCSI设备这两个端点(Endpoint),两个设备都需要传送数据到根聚合体(RC),根聚合体再将数据转发至DRAM内。摄像机的数据对带宽要求比较高,如果传送数据慢,显示的图像便会卡顿。SCSI设备对时间要求不高,只要数据准确无误地传送到存储器即可。因此在路由数据包通过PCIe结构,特别是交换器,视频数据的优先级相比SCSI设备的数据更高。假设,通过应用驱动程序和操作系统(软件部分)一起指定视频数据包TLP的TC类别为7,即 TC7,指定SCSI数据包的类别为类别0,即 TC0。这些TC数字嵌入在TLP头中。配置软件使用 TC/VC 映射设备配置寄存器将与 TC0相关的TLP映射到虚拟信道0缓冲区,即VC0,将与 TC7 相关的TLP映射到虚拟信道7缓冲区,即VC7。假设将VC7的优先级设置为比VC0的优先级高,那么交换器在内部仲裁。无论何时要把两个进入的数据包转发至一个上游端口,交换器总是优先选取 VC7数据包。即视频数据包。   流量类别(TC)和虚拟信道(VC)续   下面我们具体分析下交换器内部的仲裁机制,接上面对 流量类别(TC)和虚拟信道(VC) 的介绍。   在上面的介绍中,我们通过对 TC/VC 映射的设置,虚拟出来两条虚拟链路。
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常对于交换器下游端口接收到的 TLP,通过 TC/VC 映射逻辑解码,将映射到 VC0 的对应 TC TLP 放入 VC0 缓冲区。将映射到 VC1 的对应 TC TLP 放入 VC1 缓冲区。对于下游端口1 和下游端口2 接收到的TLP,均放在端口1和端口2 各自的 VC0 和 VC1 缓冲区。属于同一个VC类别,但是属于不同端口的 TLP,也需要做优先级的判断。这便需要进行 端口仲裁 。将端口1中的 VC0 缓冲区的TLP 和 端口2中的 VC0 缓冲区的 TLP 进行优先级的比对。将端口1中的 VC1 缓冲区的TLP 和 端口2中的 VC1 缓冲区的 TLP 进行优先级的比对。 端口仲裁器能实现循环仲裁、加权循环仲裁或者基于时间的可编程循环仲裁方案,可通过配置寄存器来选择。在交换器内部进行完端口仲裁之后,需要再进行 VC仲裁 ,通过已经设置的不同 VC 的优先级,将优先级高的VC对应的TLP发送至上游端口,解决不同VC缓冲区中的 TLP 转发至链路的顺序问题。可通过寄存器配置进行选择。   事务顺序,电源管理,配置寄存器等也与处理层相关,在此暂不做详细介绍。   数据链路层
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   数据链路层对来自处理层数据包的处理   对于设备A,处理层数据包(TLP),从处理层传输至数据链路层,生成链路CRC(LCRC),并添加序列ID附加在TLP上。设备A的数据链路层在重放缓冲区中存放该包装完成的TLP的副本,再传至设备A的物理层,再传至链路发送给设备B。   对于设备B,数据链路层需要检查接收到的 TLP 中的CRC错误。   注:对于处理层数据包,来自于处理层,到达数据链路层时,数据链路层对其进行包装,备份和发送。数据链路层数据包(DLLP),起始于数据链路层,起到两个局部设备间传输信息的作用。上述机制称为 ACK-NAK 协议。   说明ACK-NAK协议的非报告事务
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   如上图所示,讨论请求者与交换器远端完成者之间的存储器读请求之间的步骤。   步骤1a:请求者发送一个存储器读请求 TLP(MRd)。交换器接收 MRd TLP 并利用 TLP 中的LCRC字段检查CRC错误。   步骤1b:如果没有错误,交换器返回一个ACK DLLP给请求者,请求者丢弃其重放缓冲区内的 TLP 副本。   步骤2a: 交换器利用存储器地址进行路由,转发 MRd TLP 至正确的出端口。完成者接收MRd TLP,并利用LCRC检查CRC错误。   步骤2b: 如果没有错误,完成者返回一个ACK DLLP给交换器,交换器丢弃其重放缓冲区内的 TLP 副本。   步骤3a: 交换器利用 TLP 中的ECRC检查CRC错误,如果没有错误,当完成者请求到数据,它将返回一个带数据的完成TLP (CplD)。交换器接收CplD TLP,并利用LCRC检查 CRC错误。   步骤3b:如果没有检查到错误,交换器返回一个ACK DLLP给完成者,完成者清除其重放缓冲区内的CplD TLP的副本。   步骤4a: 完成者解码 CplD TLP中的路由信息,发送给请求者,请求者接收 CplD,并利用LCRC来检查 CplD TLP中的CRC错误。   步骤4b:如果没有错误,请求者返回一个ACK DLLP给交换器,交换器清除其重放缓冲区内的 CplD TLP副本。请求者利用ECRC检查 CplD中的CRC错误,确定CplD中是否有错误。如果没有错误,请求者将CplD中的标记与原存储器读请求TLP中的标记相匹配,接收数据。   说明ACK-NAK协议的报告事务   对于报告事务,不需要返回完成数据包CplD。以请求者与完成者之间的存储器写请求为例。
pciex几怎么看_怎么检测pcie是否正常
pciex几怎么看_怎么检测pcie是否正常   步骤a1:请求者发送一个携带数据的存储器写请求TLP(MWr)。交换器接收 MWr TLP 并利用该TLP中的LCRC字段检查CRC错误。   步骤b1:如果没有错误,交换器返回ACK DLLP给请求者,请求者丢弃其重放缓冲区中该TLP的副本。   步骤a2:交换器利用存储器地址进行路由,转发 MWr TLP到正确的端口,完成者接收 MWr TLP,利用LCRC检查接收 MWr TLP中的CRC错误。   步骤b2:如果没有错误,完成者返回ACK DLLP给交换器,交换器丢弃其重放缓冲区中该TLP的副本。完成者利用 MWr TLP中的可选摘要字段检查CRC错误,假设没有错误,完成者接收数据,没有与该事务相关的完成数据包。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/68946.html

(0)
上一篇 2024年 8月 8日
下一篇 2024年 8月 8日

相关推荐

关注微信