ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

沧小海笔记之PCIE协议解析——第一章 PCIE概述(下)

2021-04-12 22:32:26  阅读:355  来源: 互联网

标签:事务 第一章 PCIE PCI RC 小海 数据包 路由


总目录在此哦~

https://blog.csdn.net/z123canghai/article/details/115644744


目录

1.3 PCIE的拓扑结构

1.4 PCIE协议的实现方案

1.4.1 PCIE协议的分层结构

1.4.2 PCIE协议的事务类型

1.4.3 PCIE传输机制

1.4.4 PCIE的路由方案


1.3 PCIE的拓扑结构

         如下图是计算机体系中的PCIE结构拓扑,我们知道电脑主板上有很多东西,例如硬盘、显卡、网卡、USB接口等等,我称之为组件,就是组成电脑的一个又一个的功能设备。如下图就包括了些PCIE协议所支持的各种组件。该拓扑结构的最大特点就是点对点互联,包括了RC(Root Complex)、Switch、Endpoint、PCIE to PCI/PCI-X Bridge这些设备,它们在PCIE所规定的协议下扮演着各自的角色,承担着各自的任务。下面我们就逐个概括性的介绍下这些组件。   

 

1、 Root Complex(RC

         Root Complex在百度百科翻译为“根复合体”,对于我这初学这来说,理解根复合体并不容易,所以还是愿意称之为RC,它的含义就是一个实现CPU与PCIE上组件通信的媒介,CPU要读取某个组件信息,告知RC,其它的均有RC代劳了。可以说是PCIE拓扑结构的中枢机构,是管家,是指挥者。其实协议对RC还有很多的规定且随着处理器不同而不同,本是一个模糊的概念,对于X86处理器RC除了管理PCIE设备还有其它事情要干,但在这里还是应该把它理解为PCIE总线控制器。

2、Endpoints(端点)

         Endpoints称之为端点或者说终点,RC的命令最终要去的地方就是这里。它要对RC的请求进行响应,并接收RC的配置。例如计算机里面的声卡、网卡,还有应用到PCIE的些功能设备,均是端点。

3、switch

         如下图所示是一个Switch组件,它的内部可以视为多个虚拟的PCI到PCI的桥,实现扩展功能。该组件会根据事务类型将数据送到不同的通道。该组件对数据包没有处理的功能只有转发功能。

 

4、PCIE到PCI / PCI-X桥接器

         这个主要是用来兼容PCI组件的,如果有设备是PCI接口,可以通过PCIE-PCI桥来接入系统中去。


1.4 PCIE协议的实现方案

PCIE的实现方案是非常复杂的,我们看协议规范有860页的描述,而且字还那么小,总的来说就是两种传输机制、三层逻辑结构、四种事务类型。在这里只是概述性的说一下。

1、协议相关代码采用分层的方式进行组织的,分为事务层、链路层和物理层,以此实现用户数据的交互;

2、数据类型被分为内存、I/O、配置和消息四类,分别完成不同的功能。

3、数据交换是基于请求与完成(响应)的机制,也分为Non-Posted和Posted两种模式,Posted意思发送数据不需要接收端响应Non-Posted是要求接收端对发送数据进行响应。


1.4.1 PCIE协议的分层结构

         对于复杂的协议,分层是必须要做的事情,无论平时写的业务逻辑,还是像TCP/IP、SRIO等行业内的公用协议,都做了分层。对实现功能有着明确、合理的划分,不仅增加代码的可读性,更有助于提高其可读性,并利于扩展。PCIE或者说PCI协议,也是进行了层级划分,如下图所示,划分为事务层、数据链路层和物理层三层。这些层中的每一层分为两个部分,一部分是发送数据内容,一部分是接收信息。

 

         我们把PCIE协议发送或接收的信息称之为数据包,数据包在事务层形成,并会在其它层添加信息对其进行再次的封装,这些扩展的封装包含了保证数据包在链路中准确传输的必备信息。当数据包到大接收端,会对该封装进行逐层解析,最终到达事务层交由用户应用,如下图所示,是每层对数据封装的示意图。在下文会对每层的工作内容进行概述性的解释。不过在这之前应该说下PCIE的传输机制。

 

1、事务层

事务层是PCIE协议的对外接口层,用户对数据进行组帧和解析是在本层进行,本层产生的数据包称之为事务层数据包,即(Transaction Layer Packets,TLP)。此外事务层还具有基于信用积分的流控功能,支持不同事务类型的不同形式的数据传输。

2、数据链路层

         数据链路层充当事务层和物理层之间的中间阶段,主要职责包括链路管理和数据完整性,包括错误检测和纠正。

         数据链层在传输链路上接收事务层的TLP数据包添加序列号和校验码交给物理层,而且链路层非常尽责,会对事务层交付的数据包进行缓存,如果检测到传输错误会进行重发,直到接收正确或确定链路通信失败。

         链路层还具有链路管理功能,并有相应的数据包,称之为“数据链路层数据包(DLLP)”该数据包是实现两个组件间的数据交换,并没有路由功能,换言之,如果一包数据要跨过大山大河到达接收端,中间经过无数站点,DLLP数据包只在两站之间进行数据交换,主要实现的功能有流量控制、电源管理、应答机制和虚拟通道。

3、物理层

       物理层分为两个部分,一部分是逻辑子层,一部分是电气子层。逻辑子层模块负责与数据链路层的数据交换,会对接收链路层事务进行再次封装,对接收电气子层事务进行解析,并会进行8B/10B编码或者128B/130B编码,进行传递之间的转换和极性反转等工作,电气子层则更多的负责时钟数据恢复、均衡等电气操作。物理层数据包称之为PLP,Physical Layer Packet。


1.4.2 PCIE协议的事务类型

         PCIE协议总共规定了Memory、I/O、配置和消息四种事务类型,其中前三种是从PCI继承过来的,消息是PCIE所扩展的。

1、内存事务

         其实内存事务并不一定是读写内存,而是代表一种大数据量的数据交换方式,PCIE支持内存事务类型的读写以及原子操作(AtomicOp)。

2、I/O事务

         I/O事务是被PCIE嫌弃的一类事务,会逐渐被弃用并被MMIO替代。……

3、配置

         主要是实现设备功能的配置,

4、消息

 


1.4.3 PCIE传输机制

         正如前文所述,数据交换是基于请求与完成(响应)的机制,分为Non-Posted和Posted两种模式,这种分类也是满足不同的需求,例如内存模式进行大量的数据交换,如果每发送一包就要求响应,则会大大降低传输效率,但对于一些事务,为了保证可靠性是必须响应的故有两种模式。对于Non-Posted模式并不是说数据包发送过去就不管不顾了,接收端会在链路层向发送端发送响应信号。

 


1.4.4 PCIE的路由方案

         何为路由,百度说就是按某条线路发送,有时候有些词真的很阻碍我们对些知识的理解,例如路由,再例如学ram时候的中断向量表,对于初学者来说,很让人费解。在我看来路由强调的是发送端和接收端间的通信,与之相对应的是点对点通信。点对点通信不需要考虑拥塞等问题,就是两点间的数据交换,而路由链路就可能很长,中间有很多的中转站,我们要保证数据在中转站不出错,就需要更多的

         PCIE的路由方案有三种,分别是ID路由、地址路由和模糊路由。

1、ID路由

         ID路由即BDF路由方案,即采用Bus Number、Device Number和Function Number来确定目标设备的位置。这是一种兼容PCI的路由方案,主要用于设备的配置、带数据和不带数据的返回数据包。

2、地址路由

         地址路由包括对IO和Memory两种事务类型的路由,在帧头中包含了目的设备的地址信息,处理器会为每个设备分配一段地址信息,这也是数据包传输过程中的标志符。

3、模糊路由

         模糊路由(Implicit Routing,又译为隐式路由)只能用于Message的路由。用来实现电源管理、错误信号、热插拔、虚拟通道等功能,具体也是在下文。


欢迎关注“沧小海的FPGA”微信公众号,回复“PCIE”可获取相关资料,其中包括

1、协议规范的中文翻译

2、相关英文资料

3、PCIE的使用教程

标签:事务,第一章,PCIE,PCI,RC,小海,数据包,路由
来源: https://blog.csdn.net/z123canghai/article/details/115644412

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有