前面的一系列文章简要地介绍了PCIe总线的结构、事威尼斯vns12356务层、数据链路层和物理层

当前位置:威尼斯vns12356 > 威尼斯vns12356 > 前面的一系列文章简要地介绍了PCIe总线的结构、事威尼斯vns12356务层、数据链路层和物理层
作者: 威尼斯vns12356|来源: http://www.hjarntorget.net|栏目:威尼斯vns12356

文章关键词:威尼斯vns12356,数据链路层

  前面的一系列文章简要地介绍了PCIe总线的结构、事务层、数据链路层和物理层。下面我们用一个简单地的例子来回顾并总结一下。

  如下图所示,Requester的应用层(软件层)首先向其事务层发送如下信息:32位(或者64位)的Memory地址,事务类型(Transaction Type),数据量(以DW为单位),TC(Traffic Class,即优先级),字节使能(Byte Enable)和属性信息(Attributes)等。

  注:TLP的Header实际上有两种,32位的地址对应的是3DW的Header,64为的地址对应的是4DW的Header。这在后续的文章中会详细介绍。威尼斯vns12356

  当TLP到达数据链路层(Data Link Layer)时候,数据链路层会为其添加上12位的序列号(Sequence Number)和32位的LCRC。并将添加上这些信息之后的TLP(即DLLP)在Replay Buffer中做一个备份,并随后将其发送至物理层。

  接收端PCIe设备(即Completer)的物理层接收到数据之后,依次执行与发送端相反的操作。并从数据中恢复出时钟,然后将恢复出来的DLLP发送至数据链路层。

  当接收端PCIe涉笔(即Completer)的数据链路层正确的接收到了来自Requester的DLLP(包含TLP的)时,随后将其进一步发送至事务层,事务层检查ECRC(可选的),并对TLP进行解析,然后将解析后的信息发送至应用层(软件层)。

  如下图所示,Completer的应用层会根据接受到的信息进行相应的处理,处理完成后会将数据发送至事务层,事务层根据这一信息创建一个新的TLP(即CplD,Completion with data)。并根据先前接收到的TLP中的BDF信息,找到原来的Requester,然后将CplD发送至该Requester。这一发送过程与Requester向Completer发送TLP(Mrd Request)的过程基本是一致的。所以这里就不在重复了。

  注:如果Completer不能够返回有效数据给Requester,或者遇到错误,则其返回的就不是CplD了,而是Cpl(Completion without data),Requester接收到Cpl的TLP之后便会知道发生了错误,其应用层(软件层)会进行相应的处理。

上一篇:没有了

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!