《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层(3)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第7章 PCIe总线的数据链路层与物理层(2)

7.1 数据链路层的组成结构

数据链路层使用ACK/NAK协议保证TLP的正确传送。ACK/NAK协议是一种滑动窗口协议(该协议的详细介绍见7.2节)。其中Sequence前缀存放当前TLP的序列号,滑动窗口协议需要使用这个序列号。该序列号可以循环使用,但在同一个时间段内,一条PCIe链路不能含有Sequence前缀相同的多个TLP。而LCRC后缀存放当前TLP的校验和。

PCIe总线的数据链路层使用Replay Buffer(PCIe规范将这个Replay Buffer称为Retry Buffer)和Error Check部件共同保证数据传送的可靠性和完整性。来自事务层的TLP首先暂存在Replay Buffer中,然后发送到目标设备。源设备的数据链路层根据来自目标设备的ACK/NAK DLLP报文决定是重发这些TLP、还是清除保存在Replay Buffer中的TLP。

Replay Buffer的大小决定了事务层可以暂存在数据链路层的报文数。Replay Buffer的容量越大,在PCIe设备发送流水线中容纳的报文就越多,从而也容易保证流水线不会因为发送部件出现underrun中断;但在另一方面,Replay Buffer的容量越大,占用的系统资源也就越多,从而影响PCIe设备的功耗。在一个实际应用中,芯片设计者需要根据PCIe链路的延时确定数据链路层Replay Buffer的大小。

在PCIe设备的数据链路层中,还含有一个Error Check单元(上边提到的Error Check部件)。PCIe设备使用Error Check单元检查接收到的TLP,并决定如何向对端设备进行报文回应。如果TLP被正确接收,PCIe设备将向对端设备发送ACK DLLP(数据链路层为提高PCIe链路的利用率,并不会每成功接收一个TLP后,都发送一个ACK DLLP);如果TLP没有被正确接收,PCIe设备将向对端设备发送NAK DLLP。

除了ACK/NAK DLLP之外,数据链路层还定义了一系列数据链路层报文DLLP,以保证PCIe链路的正常工作。这些DLLP都产生于数据链路层,并终止于数据链路层,并不会传送到事务层。

更多内容请看下回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值