Data Link Layer
数据链路层位于事务层和物理层之间,是整个PCIe链路的数据传输的可靠性非常重要的一层,主要功能如下:
- 生产数据链路层的报文,即DLLP(Data Link Layer Packet)。
- 为每一个TLP报文添加序列号,即Sequence Number。
- 发送DLLP报文前,添加CRC校验,即LCRC。接收对端发来的DLLP时,检测LCRC是否正确。
- 基于ACK/NAK机制,对错误的报文(序列号异常或者LCRC错误)进行重传。确保在link链路上可靠的传递TLP报文。
- 链路流控报文及流控处理。
- 链路电源管理报文
注意:事务层的TLP报文传输的路径是从Requester设备到Completer设备,这两个设备可能直接连接,也可能是两者之间含有Switch,甚至几个Switch。而数据链路层的DLLP报文传输的路径是链路(Link),是两个端口(Port)之间。TLP的报文在经过每一条链路时,都会有添加序列号、添加CRC,打包成DLLP发送的过程。而事务层TLP其实是不感知这个过程的。
图中,黄色区域是DLLP的范围,且是独立的几个链路。红色的线表示了TLP的传输路径。