MSI-X(三)
从INTx过渡到MSI,可以说是完全两套天壤之别的中断上报架构。一个是带外,一个是带内。而MSI-X则是以MSI为基础发展起来的,很多特性很类似。
类似于网络OSI七层模型,PCIe协议架构上可以分为三个逻辑层次:事务层(Transaction Layer,)、数据链路层(Data Link Layer)和物理层(Physical Layer)。每一层都分为两个部分: 发送和接收,或者称之为outbound和inbound。Device Core是指这个PCIe设备具体功能的实现,比如以太网、显示、加密、HBA等等。
从INTx过渡到MSI,可以说是完全两套天壤之别的中断上报架构。一个是带外,一个是带内。而MSI-X则是以MSI为基础发展起来的,很多特性很类似。
MSI中断本质上是一个memory write,memory write的地址就是设备配置空间的MSI address寄存器的值,memory write的数据就是设备配置空间的MSI data寄存器的值。为什么还需要MSI-X呢?
继续详细讲解MSI-X相关的使用。
ACK/NAK协议中的接收端的一些关键元素介绍。
学习协议是蛮枯燥的一个事情。而学习ACK/NAK就更枯燥,整个ACK/NAK流程比较复杂,发送接收都有较晦涩的逻辑流程。
TLP报文在链路上传输的可靠性,是由ACK/NAK机制来保证的。事实上很多其他协议也有类似的机制
TL层的TLP报文有个ECRC,而DLL层对TLP会加上序列号和LCRC。两个CRC有何不同呢?
数据链路层的报文(DLLP)是由发送端的数据链路层生产,并在接收端被接收端的数据链路层接收,生活的范畴仅在一条链路上。DLLP包括用于Ack/Nak机制、电源管理、流控(Flow Control)以及一些设备厂商自定义的功能。
数据链路层位于事务层和物理层之间,是整个PCIe链路的数据传输的可靠性非常重要的一层,主要功能如下:
阶段性总结