- 博客(28)
- 收藏
- 关注
原创 PCIe prefix总结
这周研究了一下spec中关于prefix的部分,在此做一个总结,欢迎大家指正补充。,以便所有供应商定义的前缀都可以使用两种供应商定义的本地。,该出端口会返回一笔完成状态为不支持请求的完成的消息;例如,链路的每一端可以使用不同的编码传输相同的前缀。,则为出现错误,按照畸形包处理,接收端口上报错误;这样的配置不必是对称的。若某元素开启了组播功能,复制到每一个组播组的。还没写完,发现总结的文档没带回来,后面补上。下图为Type编码及对应的prefix类型。对于一些其路由作用的元素,若某出端口开启了。
2024-08-30 20:15:04 1254
原创 PCIe学习笔记(27)
•对于支持DPC的RP扩展的根端口,根端口可以跟踪某些Non-Posted Request,当DPC被触发时,为每个跟踪的请求合成一个完成。跟踪的Non-Posted Request集是特定于实现的,但强烈建议跟踪由主机处理器指令(例如,“读”、“写”、“加载”、“存储”或对应于AtomicOp的指令)生成的所有Non-Posted Request。◦这是一个与端口关联的(虚拟)桥的函数相关的报告错误(见6.2节),并且必须作为不支持的请求报告。对于根端口,报告此错误是可选的。否则,适用以下规则。
2024-08-22 19:58:44 681
原创 PCIe学习笔记(26)
当PCIe链路上的一个设备发送错误信号时,DPC机制允许系统采取相应的措施来隔离故障设备,以限制错误的传播范围,确保其他设备继续正常工作。当PCIe设备发生错误时,AER会检测和报告错误的详细信息,而DPC则可以根据这些错误信息采取相应的措施,例如隔离故障设备,以维护整个PCIe系统的稳定性和可靠性。注意:一个有多个完成的内存读请求,只有当所有的完成都被请求者收到才被认为是完成的。配置请求例外(见下文)。无论所报告的错误的严重程度如何,所报告的错误必须作为不可纠正的错误处理,而不是可咨询的非致命错误。
2024-08-21 20:01:37 718
原创 PCIe学习笔记(25)
数据完整性PCI Express的基本数据可靠性机制包含在数据链路层(data Link Layer)中,它使用32位的LCRC (CRC)码逐链路检测TLP中的错误,并采用逐链路重传机制进行错误恢复。TLP是一个数据和事务控制单元,由位于PCI Express域“边缘”的数据源(如Endpoint或Root Complex)创建,可能通过中间组件(即交换机)路由,并由最终的PCI Express接收者使用。当TLP经过Switch时,Switch可能需要改变一些控制字段。
2024-08-20 19:52:09 858
原创 Pcie学习笔记(24)
注:流量控制是事务层的一个功能,因此,在接口上传输的以下类型的信息不与流量控制积分相关联:LCRC、分组分帧符号、其他特殊符号和数据链路层到数据链路层之间的通信包。如果执行此检查的接收方确定违反了此规则,则该违反是流量控制协议错误(FCPE)。▪如果选中,这是一个与接收端口相关的报告错误(见6.2节)。如果执行此检查的接收方确定违反了此规则,则该违反是流量控制协议错误(FCPE)。如果实现此检查的组件确定违反了此规则,则该违反是流控制协议错误(FCPE)如果选中,这是一个与接收端口相关的报告错误。
2024-08-19 19:34:55 761
原创 PCIe学习笔记(23)
•如果一个MFD实现了一个MFVC能力结构,那么它的VC硬件资源与与它的功能的任何VC能力结构相关联的VC硬件资源是不同的。包含能够生成带有TC标签而不是TC0的请求的功能的设备必须实现合适的VC或MFVC能力结构(如适用),即使它只支持默认的VC。(请注意,如果请求者发起的请求带有TC0以外的TC标签,则该请求可能会被链路另一端实现扩展VC功能并应用TC过滤的组件视为畸形请求。•对于具有MFVC能力结构的mfd,任何未映射到MFVC能力结构中启用的VC的TC事务都被视为畸形TLP。为了权衡性能和成本,
2024-08-16 20:23:40 1175
原创 PCIe学习笔记(22)
换句话说,无论位置A和B在数据块中的位置如何,请求者可能在位置B中观察到更新的值,而在位置A中观察到旧的值。A5b:在PCI Express到PCI/PCI-X桥接器中,如果PCI/PCI-X总线段以传统PCI模式运行,对于PCI Express到PCI方向的事务,为了避免死锁,转发请求必须能够通过完成事务。如果设置了RO,则允许完成事务通过转发请求。作为更新粒度的一个例子,如果主机CPU向主机内存写入一个四字(QW),那么从主机内存读取该QW的请求程序可能会看到QW的一部分更新了,而另一部分包含旧值。
2024-08-14 19:43:32 1005
原创 PCIe学习笔记(21)
▪对于包含设备功能配置空间头的Vendor ID字段的两个字节的配置读取请求,RC必须通过返回Vendor ID字段的读取数据值0001h和请求中包含的任何其他字节的所有' 1 '来完成对主机的请求。RC的实现可以选择限制配置请求/ CRS完成状态循环的数量,然后再确定请求的目标有问题并采取适当的行动,例如,将发送给主机的请求作为失败的事务完成。当设备接收到与该设备发出的任何未完成请求的事务ID不匹配的完成时,该完成称为“意外完成”(Unexpected Completion,UC)
2024-08-13 20:30:35 1176
原创 PCIe学习笔记(20)
接收tlp处理(Handling of Received TLPs)本节描述了当接收到的TLP从接收数据链路层传送到接收事务层,并且在数据链路层已经验证了接收到的TLP的完整性后,如何处理所有接收到的TLP•保留字段中的值必须被接收方忽略。•如果Fmt字段中的值表明至少存在一个TLP前缀:◦通过检查后续DW的第一个字节的Fmt字段来检测头部中是否存在额外的TLP前缀,直到Fmt字段与TLP前缀不匹配。◦按照TLP前缀处理规则(2.2.10)处理所有收到的TLP前缀。
2024-08-09 20:50:40 1224
原创 PCIe学习笔记(19)
TLP Prefix(前缀)规则以下规则适用于任何包含TLP Prefix的TLP:•对于任何TLP, TLP第0字节的Fmt[2:0]字段值为100b表示存在TLP Prefix, Type[4]位表示TLP Prefix的类型。◦Type[4]位的值为0b表示存在Local TLP Prefix◦Type[4]位的值为1b表示存在End-End TLP Prefix的第1到第3字节的格式由其TLP Prefix类型定义。•包含TLP前缀的TLP必须有一个底层的TLP报头。
2024-08-08 20:05:34 1240
原创 PCIe学习笔记(18)
◦示例:MFD接收到一个读取请求,该请求不针对与设备的任何功能相关的任何资源-设备生成一个带有UR状态的Completion,并在Completer ID的Function Number字段中设置一个全0的值。•在某些情况下,具有UR状态的Completion可以由MFD生成,而无需将Completion与设备内的特定功能相关联-在这种情况下,功能号字段是保留的。否则LN位必须为Clear。◦这是一个TLP形成错误,包括更多或更少的数据比指定的长度字段,并由此产生的TLP是一个畸形的TLP。
2024-08-07 19:41:24 1120
原创 PCIe学习笔记(17)
OBFF 只是提供一个建议时间,PCIe 设备可以忽略 OBFF 信息,在它想要发请求的任意时刻发送请求(这样就导致功耗比较大,所以最好还是按照 OBFF 的建议来做)。只有在 WAKE# 引脚不能用的时候,再去选择发送消息(message)的方式。必须包含TLP报头第8到15字节的64位PTM Master Time字段和包含32位Propagation Delay字段的1 DW数据负载。•PTM对话框被定义为由PTM请求和相应的PTM响应或PTM响应消息组成的匹配的消息对。
2024-08-06 21:48:22 925
原创 PCIe学习笔记(16)
是 RC 发出的广播消息,用以给多层级平台中的 Function 传递 Routing ID 外的额外信息,以在多层级系统中确定唯一标识某个 Function。为此,采用在 Routing ID 上添加额外信息的方式来产生唯一的 ID,在庞大的系统中唯一标识一个 Function。(PCIe I/O 互连的树形拓扑结构称为 PCIe 的 Hierarchy,或称层级、层次(不是事务层、数据链路层的“层”)。层次ID消息是带有有效载荷(MsgD)的pci - sig定义的VDM(供应商定义的类型1消息)。
2024-08-05 20:18:55 588
原创 PCIe学习笔记(15)
对于系统固件和操作系统来说,无需再为每种可能的设备类型和场景预设复杂的超时逻辑,而是可以根据设备提供的DRS信息做出决策,简化了驱动程序和系统软件的设计与实现。与其他pci - sig定义的vdm不同,FRS Message的形成遵循以下规则:表2-29和图2-32给出了FRS Message的定义。FRS消息是pci - sig定义的VDM(供应商定义的类型1消息),没有有效负载。:不同设备可能具有不同的初始化时间和复杂度,DRS允许系统根据每个设备的实际需求调整等待时间,避免了过早或过晚的操作尝试。
2024-08-02 19:57:44 1441
原创 PCIe学习笔记(14)
消息Vendor_Defined Messages允许扩展PCI Express消息传递功能,既可以作为PCI Express规范的一般扩展,也可以作为特定于供应商的扩展。此处定义与这些消息关联的规则。数量有限,PCIE协议定义了VDM (Vendor Defined Message),以此来扩展Message种类。•Vendor_Defined消息(见表2-25)使用图2-28所示的报头格式。◦请求者ID是具体实现的。强烈建议Requester ID字段包含与Requester关联的值。
2024-08-01 19:59:37 1081
原创 PCIe学习笔记(13)
专门用于在系统平面上集成的PCI Express组件(例如,系统板)和组件集成在一个适配器为目标的整个适配器的功耗低于最低功率极限为适配器指定形式因素(如规范中定义相应的形式)被允许硬线槽中的所有0的值功率极限规模和槽功率极限价值领域注册设备的功能,而不需要复制Set_Slot_Power_Limit消息有效负载为登记。数据有效载荷的byte3的bit[7:0]、byte2的bit[7:0]以及byte1的bit[7:2]必须由发送器设置为零,并由接收器忽略。消息的发起者由消息头的请求者ID标识。
2024-07-31 20:32:58 1168
原创 PCIe学习笔记(12)
•当INTx虚拟线的局部逻辑状态改变上游端口,端口必须沟通这一状态变化到下游端口的另一边相同的链接使用适当的Assert_INTx或Deassert_INTx消息。Assert_INTx/Deassert_INTx消息对为每个指定为A, B, C和D的遗留PCI中断构成了四条“虚拟线”。◦如果这导致任何上游INTx虚拟线的撤销,适当的Deassert_INTx消息(s)必须由上游端口发送。注意:重复的Assert_INTx/Deassert_INTx消息没有效果,但不是错误。以下规则适用于所有消息请求。
2024-07-30 19:46:00 813
原创 PCIe学习笔记(11)
在发送带有TPH的TLP时,用到了TLP头标中的TH、PH及ST三个字段,其中TH及PH字段仅用于TPH请求事务,TH=1时PH有效。•不支持 TPH Completer 或 Routing capability 的 Function,在收到设置了 TH 位的事务时,必须忽略 TH 位,并以与未设置 TH 位的相同事务类型的请求相同的方式处理 Request。扩展了TPH字段,为Steeting Tag(转向标签,ST)字段提供了额外的位,此时,对于提供TPH的请求,TH位必须设置。
2024-07-29 20:18:17 1110
原创 PCIe学习笔记(10)
对于 TH 位为1的 Memory Read Requests 和 AtomicOp Requests,报头中Last DW BE[3:0] 和 First DW BE[3:0] 字段的字节位置将被调整为。◦如果对AtomicOp CAS请求执行4-KB边界检查,该检查必须理解TLP长度值是基于两个操作数的大小,而对内存空间的访问是基于一个操作数的大小。•除了所有内存请求、I/O请求和配置请求的报头字段和ID路由字段外,配置请求还包含以下附加字段(如图2-20所示)。接下来是针对每种请求类型的附加规则。
2024-07-26 20:18:41 985
原创 PCIe学习笔记(9)
当数据包穿越fabric时,此信息被用于每个Link和每个Switch元素中,以做出有关流量的适当服务的决策。如果 Completer 已启用 IDO,建议 Completer 为所有完成设置 IDO,除非有特殊原因。注意,属性是允许在处理流量时进行优化的提示。系统软件负责确定 TC 标签和 TC/VC 映射,以提供符合目标平台要求的差异化服务。当确定一个TLP是否是畸形报文时,接收方不能考虑IDO位的值。不适用于配置请求,I/O请求,消息信号中断的内存请求和消息请求。(特别允许的情况除外),必须清零。
2024-07-25 20:16:26 527
原创 PCIe学习笔记(8)
请求者被允许在向它认为合适的完成者发送10位标签请求时使用标签字段的所有10位,尽管请求者仍然被允许向其他完成者发送较小的标签请求。对于non-posted类型的请求,在未收到目标设备的完成报文之前,TLP的发送端需要保存这个TransactionID(Tag字段),此时设备的Tag字段不能再次被使用,直到一次数据传输结束,即数据发送端收齐与该TLP对应的所有报文。▪如果一个请求者发送一个10位的标签请求给一个缺乏10位补全能力的补全者,返回的补全者将有一个标签[9:8]等于00b的标签。
2024-07-24 20:22:52 810
原创 PCIe学习笔记(7)
zero-length”的引入是为了实现“读刷新”操作,该操作的主要目的是为了保证之前的存储器写请求报文,到达最终的目的地,与“zero-length”对应的读完成包文中不含有任何数据负载 ,从而提高了PCIe链路的利用率。这些检查是独立可选的。•所有长度为2dw (1qw)的非QW对齐内存请求和长度为3dw或以上的内存请求必须只启用与请求的第一个DW和最后一个DW之间的数据连续的字节。•对于所有长度为1dw的请求,允许在First DW BE字段中启用非连续字节(已启用的字节由未启用的字节分隔)。
2024-07-23 20:17:23 981
原创 PCIe学习笔记(6)
◦大端序示例:对于一个64位(8字节)的Swap Request,目标位置为100h,目标内存为大端序格式,头后的第一个字节写入位置107h,第二个字节写入位置106h,以此类推,最后一个字节写入位置100h。◦小端序示例:对于一个64位(8字节)的交换请求,目标位置100h,目标内存为小端序格式,头后的第一个字节写入位置100h,第二个字节写入位置101h,依此类推,最后一个字节写入位置107h。不能超过由接收设备控制寄存器的Max_Payload_Size字段中的值指定的长度。,该字段作为DW的整数。
2024-07-22 20:34:36 492
原创 PCIe学习笔记(5)
由于PCIe采用端到端的传输方式,每一个链路仅挂载一个设备,Device数量为1,Device Number恒为0,采用5-bit宽的Device Number没有意义;基于以上原因,PCIe Gen3提供了一种ARI机制,取消了Device Number字段,合并到Function Number字段中,这样Routing ID便变成了8-bit Bus Number + 8-bit Function Number的格式,最多支持的Bus数量不变,支持的Function数量增大到256个。
2024-07-19 21:17:37 779
原创 PCIe学习笔记(4)
•TLP提示(TH) - 1b 表示在TLP报头中存在TLP处理提示(TPH)和可选的TPH TLP前缀(如果存在)-位于第1字节的第0位。◦一个TLP的TD位值与观察到的大小不对应(考虑数据负载,如果存在)是一个畸形的TLP。除了允许的Fmt[2:0]和Type[4:0]字段值,所有其他编码是保留的。•Type[4:0] - TLP类型-字节0的比特数[4:0]•Fmt[2:0] - TLP格式-字节0的比特数[7:5]-字节2的[1:0]位与字节3的[7:0]位连接。
2024-07-18 20:22:37 653
原创 PCIe学习笔记(3)
事务由请求和完成组成,它们使用数据包进行通信。下图显示了TLP的高级序列化视图,包括一个或多个可选的TLP前缀、一个TLP报头、一个数据负载(对于某些类型的数据包)和一个可选的TLP摘要。TLP的详细视图如下图所示。TLP前缀、TLP报头和TLP摘要的详细布局在该版本协议是用左边较低的数字字节绘制的,而不是像传统上在其他PCI规范中描述的那样在右边。报头布局针对串行互连的性能进行了优化,这是由首先传输时间最关键的信息的要求驱动的。
2024-07-17 21:35:28 298
原创 PCIe学习笔记(2)
今天很忙,但既然开始了,或多或少得写点。该图为PCIe层次结构示意图。事务层的主要职责是tlp的组装和拆卸。tlp用于通信事务,例如读写,以及某些类型的事件。事务层还负责管理tlp的基于信用的流量控制。每个需要响应包的请求包都被实现为拆分事务。每个数据包都有一个唯一的标识符,使响应数据包能够定向到正确的发起者。数据包格式根据事务的类型内存、I/O、配置和消息)支持不同形式的寻址(地址路由、IO路由以及隐式路由。
2024-07-16 21:59:00 905
原创 PCIe学习记录
首先,GT/s用于指一秒钟内在Lane方向上传输的编码比特数。下图为各版本PCIe数据速率、调制方式、编码方式、有效传输速率的对比。Lane:一条链路必须至少支持一个Lane,每个Lane代表一组差分信号对一对用于发送,一对用于接收。为了扩展带宽,一条链路可以聚合用xN表示的多个lane,其中N可以是任何支持的链路宽度。以2.5 GT/s数据速率运行的x8链路在每个方向上的原始带宽总计为20gb /s。(通常x1x2x4x8x16 Lane。
2024-07-15 21:05:32 574
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人