如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
PCIE总线的分层协议介绍PCIE总线的分层协议介绍PCIE总线的分层协议介绍在PCIE总线中信息是以封包的形式传输的,下面为大家介绍一下数据在PCIE设备中是如何封包以及怎样传输的,这里我们将省去路由寻址、流量控制等一些细节,只介绍数据在设备中的传输过程。PCIE总线采用了串行连接方式,并使用数据包(Packet)进行数据传输,采用这种结构有效去除了在PCI总线中存在的一些边带信号,如INTx和PME#等信号。在PCIE总线中,数据报文在接收和发送过程中,需要通过多个层次,包括事务层、数据链路层和物理层,才能完成数据的传输。PCIE总线的层次结构如图1所示。图1PCIE总线的层次结构在PCIE体系结构中,数据报文首先在设备的核心层(DeviceCore)中产生,然后再经过该设备的事务层(TransactionLayer)、数据链路层(DataLinkLayer)和物理层(PhysicalLayer),最终发送出去.而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达DeviceCore.下面将介绍各个层次的功能以及该层数据的封包形态,每个层次从发送端和接收端两个方面来讲:1、事务层(TransactionLayer)事务层是三层协议结构的最高层,数据在这一层组成最基本的数据包,即事务层数据包(TransactionLayerPacket,TLP)。在发送端,当处理器或者其他PCIE设备访问PCIE设备时,事务层接收来自PCIE设备核心层的数据,并将其封装为TLP后,发向数据链路层。在接收端,事务层可以从数据链路层中接收数据报文,然后转发至PCIE设备的核心层。接收部分将入站的TLP保存在虚拟通道缓冲区中,根据TLP中的ECRC字段检查CRC错误。若无误,则删去ECRC字段,将在TLPHeader中得到的信息及数据有效载荷(DataPayload)发送给用户接口。事务层数据包(TLP)主要由一个或多个可选的TLPPrefixes、一个TLPHeader、一个DataPayload和一个可选的TLPDigest组成。TLP的组成如图2所示,每一部分的功能会在下面做简单介绍。图2TLP的组成TLPPrefix由PCIEV2.1总线规范引入,分为LocalTLPPrefix和EP-EPTLPPrefix两类.其中LocalTLPPrefix的主要作用是在PCIE链路的两端传递消息,而EP-EPTLPPrefix的主要作用是在发送设备和接收设备之间传递消息。设置TLPPrefix的主要目的是为了扩展TLP头,并以此支持PCIEV2。1规范的一些新的功能。由于TLPPrefix是可选的,如果我们用不到,TLP中可以省去该字段。TLPHeader是TLP中最重要的标志,不同的TLP其头的定义并不相同。TLP头的大小为3个或4个DW(双字),其中的信息包含了地址、TLP类型、传送数据的长度、请求者/应答者ID、标记、流量类别、字节允许、完成代码和属性等字段。TLPHeader的通用格式(以4DW长度为例)如下图所示.图3TLPHeader通用格式其中第一个DW(Byte0~Byte3)中的各个字段在所有的TLPHeader中定义是一样的,而后面的2-3个DW则因TLP的类型不同而有所差异。至于TLPHeader中每个字段代表的具体意义,以及不同事务类型的TLP中Header的具体形式,大家有兴趣的话可以参考附件文件,里面有详细的介绍。DataPayload,即我们要传输的数据.在一个TLP中,DataPayload的长度视数据长度而定,最小为0,最大为1024DW。DataPayload也可以看做一个可选项,有些TLP并不需要DataPayload,如存储器读请求、配置和I/O写完成TLP并不需要DataPayload;而在存储器写请求、I/O写请求、配置写请求和消息请求的TLP中是带数据的,DataPayload字段要有。TLPDigest是一个可选项,长度为1DW.一个TLP是否需要TLPDigest由TLPHeader中TD字段决定.如果接收设备支持ECRC校验的功能的话,则TLPDigest字段用来放置TLP中的数据校验码ECRC.2、数据链路层(DataLinkLayer)数据链路层(DataLinkLayer)连接事务层和物理层,其主要功能是保证在各链路上发送和接受数据包时的数据完整性。数据链路层使用ACK/NAK协议保证报文的可靠传递(ACK/NAK协议:ACK(Acknowledgement)为确认应答字符,在数据通信中,当接收站确认接收的数据无误后,会发给发送站该类字符;NAK(NegativeAcknowledge)为否定应答字符,当接收站确认数据收到,但是有错误的信息,便会发送该字符,接收站收到NAK字符后,便