《介绍事务错误、链路流量控制相关的错误、异常的TLP以及内部错误.doc》由会员分享,可在线阅读,更多相关《介绍事务错误、链路流量控制相关的错误、异常的TLP以及内部错误.doc(3页珍藏版)》请在三一文库上搜索。
1、介绍事务错误、链路流量控制相关的错误、异常的TLP以及内部错误这篇文章主要介绍事务(Transaction)错误、链路流量控制(Link Flow Control)相关的错误、异常的TLP(Malformed TLP)以及内部错误(Internal Errors)等。事务(Transaction )错误事务错误主要包括不支持的请求(Unsupported Request)、Completer Abort、非预期的Completion和Completion超时。该错误类型主要通过返回的Completion TLP包头中的Compl. Status告知Requester,如下图所示。不支持的请求(
2、Unsupported Request)主要包括:1. 请求类型不被当前PCIe设备支持2. 消息中使用了不支持或者未定义的消息编码3. 请求的地址空间超出(或者不在)设备的地址空间中4. 针对Completer的IO或者存储映射控制空间(Memory-mapped Control Space)进行的Poisoned写操作(EP=1)5. Root或者Switch的Downstream端口接收到针对其二级总线(Secondary Bus)上的不存在的设备的配置请求(Configuration Request)6. Endpoint接收到Type1型的配置请求7. Completion中使用了保
3、留的Completion状态编码(参考上面的表格)8. 设备(的某个功能,Function)处于D1、D2或者D3hot电源管理状态时,却接收到了除了配置请求和消息之外的内容Completer Abort(CA)主要包括:1. Completer接收的特殊请求,只有在违背其规则的情况下才能对该请求进行响应(返回Completion)2. 因为某些恒定的错误状态(Permanent Error Condition),导致Completer无法响应接收到的请求3. Completer接收到存在访问控制服务错误(Access Control Services Error,ACS Error)的请求4
4、. PCIe-to-PCI桥接收到针对其连接的PCI设备的请求,但是该PCI设备无法处理该请求非预期的Completion主要包括:1. Requester接收到的Completion和其发出的Request不一致Completion超时:所有的PCIe设备都必须支持Completion超时定时器,除非该设备只是用于初始化配置事务的。需要注意的是,PCIe设备必须能够针对多个事务(Transaction)分别计时。PCIe 1.x和2.0的Spec建议超时时间最好设置为10ms至50ms之间,对于一些特殊情况,超时时间最低可设置为30us。PCIe 2.1 Spec开始,增加了第二设备控制寄存
5、器(Device Control Register 2)用于查看和控制超时时间的值。如下图所示:如果,某个请求对应多个Completion,那么除了最后一个Completion,其他的Completion不会造成该请求的定时器停止计时。链路流量控制(Link Flow Control)相关的错误链路流量控制相关的错误主要有:1. 在FC初始化时,链路相邻设备无法完成针对任何一个VC的,最小的FC Credits的交换更新(Advertises)2. 链路相邻设备交换更新(Advertises)的FC Credits超过了最大值(Data Payload最大为2047,Header最大为127)
6、3. 链路相邻设备交换更新时,FC Credits为非零值,且该链路的FC Credits之前已经被初始化为无限值了4. 接收端Buffer溢出,导致数据丢失(可选的,但是如果使能,则认为是Fatal Error)关于Flow Control可以参考之前的文章:http:/blog.chinaaet/justlxy/p/5100053464和http:/blog.chinaaet/justlxy/p/5100053465异常的TLP(MalformedTLP)异常的TLP(Malformed TLP)错误主要有:1. Data Payload超过了最大值(Max Payload Size)2.
7、 数据长度(Data Length)与包头中的长度值不一致3. 存储地址起始位置跨越了4KB边界(Naturally-aligned 4KB Boundary)4. TD(TLP Digest)的值与ECRC是否使用不一致5. 字节使能冲突(Byte Enable Violation)6. 未定义的类型值(Type Field Values)7. Completion违反了RCB(Read Completion Boundary)值8. 针对非配置请求返回的Completion中的状态为配置请求重试状态(Configuration Request Retry Status)9. TC域包含了一个未被分配到当前使能的VC的值(也被称为TC Filtering)10. IO或者配置请求冲突(可选的)11. 中断Emulation消息向下发送(可选的)12. TLP前缀错误(具体请参考PCIe Spec V2.0的2.22.6相关章节)内部错误(Internal Errors)一般指的是Switch等桥设备内部产生的错误