PCIE接口介绍-修改_第1页
PCIE接口介绍-修改_第2页
PCIE接口介绍-修改_第3页
PCIE接口介绍-修改_第4页
PCIE接口介绍-修改_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PCIe接口介绍PCIe接口简介PCIe(Peripheral Component Interconnect Express)总线的诞生与PC(Personal Computer)的蓬勃发展密切相关,是由PCISIG (PCI Special Interest Group,主要是intel)推出的一种局部并行总线标准,主要应用于电脑和服务器的主板上(目前几乎所有的主板都有PCIe的插槽),功能是连接外部设备(如显卡、存储、网卡、声卡、数据采集卡等)。PCI总线规范最早在上世纪九十年代提出,属于单端并行信号的总线,目前已淘汰,被PCIe总线(在2001年发布,采用点对点串行连接)替代。目前PCI

2、e的主流应用是3.0,4.0还没正式推出,但标准已经制定的差不多了。PCI总线使用并行总线结构,在同一条总线上的所有外部设备共享总线带宽,而PCIe总线使用了高速差分总线,并采用端到端的连接方式,因此在每一条PCIe链路中只能连接两个设备。这使得PCIe与PCI总线采用的拓扑结构有所不同。PCIe总线除了在连接方式上与PCI总线不同之外,还使用了一些在网络通信中使用的技术,如支持多种数据路由方式,基于多通路的数据传递方式,和基于报文的数据传送方式,并充分考虑了在数据传送中出现服务质量QoS (Quality of Service)问题。每一个Lane上使用的总线频率与PCIe总线使用的版本相关

3、。PCIe总线规范总线频率单Lane的峰值带宽编码方式1.x1.25GHz2.5GT/s8/10b编码2.x2.5GHz5GT/s8/10b编码3.X4GHz8GT/s128/130b编码如上表所示,不同的PCIe总线规范使用的总线频率并不相同,其使用的数据编码方式也不相同。PCIe总线V1.x和V2.0规范在物理层中使用8/10b编码,即在PCIe链路上的10 bit中含有8 bit的有效数据;而V3.0规范使用128/130b编码方式,即在PCIe链路上的130 bit中含有128 bit的有效数据。实际使用中,PCIe无法一直维持在峰值传输状态,因为编码方式、链路管理消耗、存储时间延迟等

4、原因,一般只有50%60%的效率。PCIe接口原理连接方式PCIe链路使用“端到端的数据传送方式”,发送端和接收端中都含有TX(发送逻辑)和RX(接收逻辑), 其结构如图一。由上图所示,在PCIe总线的物理链路的一个数据通路(Lane)中,由两组差分信号,共4根信号线组成。其中发送端的TX部件与接收端的RX部件使用一组差分信号连接,该链路也被称为发送端的发送链路,也是接收端的接收链路;而发送端的RX部件与接收端的TX部件使用另一组差分信号连接,该链路也被称为发送端的接收链路,也是接收端的发送链路。PCIe链路使用差分信号进行数据传送,一个差分信号由D+和D-两根信号组成,信号接收端通过比较这两

5、个信号的差值,判断发送端发送的是逻辑“1”还是逻辑“0”。PCIe链路可以由多条Lane组成,目前PCIe链路可以支持1、2、4、8、12、16和32个Lane,即×1、×2、×4、×8、×12、×16和×32宽度的PCIe链路。在主板上常见的是PCIe X1、PCIe X4和PCIe X16接口;PCIe的信号线PCIe的接口保证了前向兼容(3.X/2.X/1.X的信号定义一样,只是信号线上的速度和电平不同),主要分为电源、信号传输lane和一些辅助信号。PCIe插槽的pin脚定义如下(灰色背景色的是辅助信号):电源有12

6、V、3.3V和3.3Vaux。其中12V主要给PCIe设备(如显卡)提供更大的供电能力(PCIe 3.0 的插槽最大有150W);PCIe设备使用的主要逻辑模块均使用3.3V供电,对于芯片内部的PCIe模块,大多只需要3.3V;而一些与电源管理相关的逻辑使用3.3Vaux供电。在PCIe设备中,一些特殊的寄存器通常使用3.3Vaux供电,如Sticky Register,此时即使PCIe设备的其他电源被移除,这些与电源管理相关的逻辑状态和这些特殊寄存器的内容也不会发生改变。在PCIe总线中,使用3.3Vaux的主要原因是为了降低功耗和缩短系统恢复时间。因为3.3Vaux在多数情况下并不会被移除

7、,因此当PCIC设备的电源恢复(唤醒)后,该设备不用重新恢复使用3.3Vaux供电的逻辑,从而设备可以很快地恢复到正常工作状状态。PETp015、PETn015和PERp015、PERn015共64根信号线组成32对差分信号,其中16对PETxx信号用于发送链路,另外16对PERxx信号用于接收链路。辅助信号:1、PERST信号:该信号为全局复位信号,由主系统提供,主系统需要为PCIe插槽和PCIe设备提供该复位信号。PCIe设备使用该信号复位内部逻辑。当该信号有效时,PCIe设备将进行复位操作。2、REFCLK+和REFCLK-信号:参考时钟,其频率范围为100MHz±300ppm

8、。当PCIe设备作为Add-In卡连接在PCIe插槽时,可以直接使用PCIe插槽提供的REFCLK+和REFCLK-信号,也可以使用独立的参考时钟,只要这个参考时钟在100MHz±300ppm范围内即可。3、WAKE#信号:当PCIe设备进入休眠状态,主电源已经停止供电时,PCIe设备使用该信号向处理器系统提交唤醒请求,使处理器系统重新为该PCIe设备提供主电源Vcc。在PCIe总线中,WAKE#信号是可选的,因此使用WAKE#信号唤醒PCIe设备的机制也是可选的。值得注意的是产生该信号的硬件逻辑必须使用辅助电源Vaux供电。PCIe设备除了可以使用WAKE#信号实现唤醒功能外,还可

9、以使用Beacon信号实现唤醒功能。与WAKE#信号实现唤醒功能不同,Beacon使用In-band信号,即差分信号D+和D-实现唤醒功能。Beacon信号DC平衡,由一组通过D+和D-信号生成的脉冲信号组成。这些脉冲信号宽度的最小值为2ns,最大值为16us。当PCIe设备准备退出L2状态(该状态为PCIe设备使用的一种低功耗状态)时,可以使用Beacon信号,提交唤醒请求。4、SMCLK和SMDAT信号:SMCLK和SMDAT信号与x86处理器的SMBus(System Mangement Bus)相关。SMBus于1995年由Intel提出,SMBus由SMCLK和SMDAT信号组成。S

10、MBus源于I2C总线,以便于PCI/PCIe设备与处理器系统进行交互。5、JTAG信号:JTAG(Joint Test Action Group)是一种国际标准测试协议,与IEEE 1149.1兼容,主要用于芯片内部测试。目前绝大多数器件都支持JTAG测试标准。JTAG信号由TRST#、TCK、TDI、TDO和TMS信号组成。其中TRST#为复位信号;TCK为时钟信号;TDI和TDO分别与数据输入和数据输出对应;而TMS信号为模式选择。6、PRSNT1#和PRSNT2#信号:PRSNT1#和PRSNT2#信号与PCIe设备的热插拔相关。在基于PCIe总线的Add-in卡中,PRSNT1#和P

11、RSNT2#信号直接相连,而在处理器主板中,PRSNT1#信号接地,而PRSNT2#信号通过上拉电阻接为高。PCIe设备的热插拔结构如下图所示。如上图所示,当Add-In卡没有插入时,处理器主板的PRSNT2#信号由上拉电阻接为高,而当Add-In卡插入时主板的PRSNT2#信号将与PRSNT1#信号通过Add-In卡连通,此时PRSNT2#信号为低。处理器主板的热插拔控制逻辑将捕获这个“低电平”,得知Add-In卡已经插入,从而触发系统软件进行相应地处理。拓扑结构一个PCIe系统的拓扑结构包括四个功能类型根联合体根联合体(root complex)、交换器(switch)、端点(EPendp

12、oint)和桥(图2)。虚线代表着两个PCIe设备间的一个连接,被称为链路。根联合体对整个PCIe建构实施初始化并配置各链路。它通常把中央处理单元 (CPU)与其它三 个功能中的一或多个PCIe交换器、PCIe端点和PCIe到PCI桥 连接起来。 PCIe交换器把数据路由至下游多个PCIe端口,并分别从其中每个端口路由到上游唯一一个根联合体。PCIe交换器也可以灵活地把数据从一个下游端口路由到另一个下游端口(点对点),它消除了传统PCI系统限制性的树状结构。 端点通常位于终端应用内,它负责连接应用与系统内的PCIe网络。端点要求并完成PCIe事务传输。一般来说,系统内的端点比任何其他类型的PC

13、Ie部件都要多。 桥用于连接PCIe与系统内诸如PCI/PCI-X等其他PCI总线标准;这样的系统同时采用上述各总线 架构。PCIe层次结构PCIe规范定义的协议遵循开放源码促进会(OSI)模型。该模型分为5个基本层,如下图左侧所示。事务层(Transaction层)定义了PCIe总线使用总线事务,其中多数总线事务与PCI总线兼容。这些总线事务可以通过Switch等设备传送到其他PCIe设备或者RC。RC也可以使用这些总线事务访问PCIe设备。事务层接收来自PCIe设备应用层(图中xx层)的数据,并将其封装为TLP(Transaction Layer Packet)后,发向数据链路层。此外事务

14、层还可以从数据链路层中接收数据报文,然后转发至PCIe设备的应用层。在PCIe总线中,事务层传递报文时可以乱序,还可以使用流量控制机制保证PCIe链路的使用效率。 数据链路层(Link层)保证来自发送端事务层的报文可以可靠、完整地发送到接收端的数据链路层。来自事务层的报文在通过数据链路层时,将被添加Sequence Number前缀和CRC后缀。数据链路层使用ACK/NAK协议保证报文的可靠传递。PCIe总线的数据链路层还定义了多种DLLP(Data Link Layer Packet),DLLP产生于数据链路层,终止于数据链路层。值得注意的是,TLP与DLLP并不相同,DLLP并不是由TLP

15、加上Sequence Number前缀和CRC后缀组成的。 物理层(Physical层)是PCIe总线的最底层,将PCIe设备连接在一起。PCIe总线的物理电气特性决定了PCIe链路只能使用端到端的连接方式。在上图的右边,我们对其余层进行了展开,以更准确地显示那些更靠底部的层是如何映射到物理硬件实现的。 如上图所示,物理层分为两个子层:电气和逻辑层。不少公司已经在电气层和逻辑层间定义了一个称为PCI Express(PIPE)的物理接口,并对其加以利用。PIPE接口使设计能参照一个标准接口进行且还能使购自不同厂商的多个部件协同工作。 物理层下的电气子层实现包括收发器、模拟缓冲器、串行/解串行器

16、(SerDes)在内的模拟器件以及10位接口。 物理编码子层(PCS)把每8位数据字节编码/解码为10位代码。这种编码特性不仅能检查有效字符,而且也限制了被发送的“0”和“1”数量上的差异,从而同时在发射器和接收器侧保持了DC均衡,进而大大提高了电磁兼容性(EMC)和电气信号性能。 在物理层内PIPE接口的另一侧包含用以指示链路训练和状态的状态机(LTSSM)、通道间去除偏移、特殊序列检测和生成等功能。 机械层定义了诸如对连接器、卡外形尺寸、卡检测和热插拔等要求的机械环境。在实际物理硬件内,还有另一种分层:从串行引脚层到PIPE接口层统称为物理层(PHY);从PIPE接口到应用的那些层统称为数

17、字控制器。任何给定PCIe链路的端点都必须包括物理层和数字控制器。下图显示了插入到根联合体内的PCIe物理层和控制器。端点使用端点端口控制器,根联合体设备使用根端口控制器。PCIe PHYPCIe的PHY主要有物理编码子层(PCS)和电气子层(Electrical)。物理编码子层(PCS)主要功能是8b10b的编码和解码(实现内嵌时钟,DC平衡)、Rx检测等,属于数字部分,功能属于物理层的逻辑子层的一部分。不同的PCIe协议,编码方式也不同;而电气子层(Electrical)的核心是串行/解串行器(SerDes)。在发送端(TX),将并行数据转变为串行数据,然后以差分的形式发送到物理信道上;在

18、接收端(RX),要将收到的串行差分信号变成并行数据,然后送到上一级的PCS层。PHY上的串行/解串行器(SerDes)是核心电路,属于模拟部分,也是设计难点。因为PCIe信号的速度很高,信号时钟都是几个G(1.0为1.25G,2.0为2.5G,3.0为4G),信号通路上的接插件、PCB走线等因素,会导致信号出现噪音和衰减,导致信号完整性问题的发生;如上图的例子,1.25Gbps和5Gbps数据流的二进制眼图,信号都是采用26英寸(0.66m)长的标准FR4板材传输的。图右侧对应的二进制眼图显示的是在接收端信号的衰减。 1.25Gbps数据流在传输过程中,信号得以相当好地保留;但由于在高于1GH

19、z频率速率下,低成本FR4基板和互连材料引入的介电损耗,5Gbps眼图的大小和清晰度已被严重恶化。频率越高,损耗越大;从而导致无法接受的1-0-1-0位流(本质上是交流信号)失真,尽管一系列全“1”或全“0”(本质上是直流信号)能成功传输。解决方案是通过加大相对于低频(DC)信号而言的高频(AC)信号的幅值来提升总体信噪比它是个称为预加重的过程。另一种方法是对较低频率的信号进行去加重。在发射器端采用预加重可为接收端提供干净的眼图从而能使裕度满足规范。PCIe控制器PCIe控制器的功能是,按照PCIe的协议,用硬件电路实现规范定义的事物层、链路层和物理层中的一部分功能(如指示链路训练和状态的状态

20、机(LTSSM)、通道间去除偏移、特殊序列检测和生成等功能);PCIe数据包PCI Express采用数据包在各系统间以及数字接口的各层和PCIe设备间传输数据。应用层发起事务传输,事务传输层把应用请求转换为一个PCIe事务包。数据链路层为该数据包增加一个序列号和链路CRC (LCRC)。数据链路层还确保该双向事务接收正确(下图)。最后,物理层在PCIe链路上传输该事务。PCIe数据包主要有2类:传输数据的事物包(TLP)和管理链路状态的链路包(DLLP);PCIe控制器的物理层控制器的物理层负责与PHY进行接口,并管理用于初始化链路和格式化数据包的许多功能。利用特殊序列来建立物理链路、进入和

21、退出低功耗链路状态等。物理层的接收部分负责: 负责包含多通道链路的通道映射、通道到通道间的去偏移。 数据解扰。 发现数据包并实施去帧化处理。 检测特殊数据包序列,如:TS1、TS2、Skip(跳过)和电气闲置;物理层的发射部分负责: 采用特殊符号插入对数据包进行帧化处理;如用STP或SDP符号标志数据包的开始,用END符号标记数据包结束。 数据加扰。 链路控制初始化、宽度和通道反转协商。 多通道传输控制。 生成跳跃序列以补偿链路两端的时钟PPM差。下面对上面涉及的一些功能做简单的描述:通道映射:使顺序传送数据包在多通道链路上同时发送,从而大大增加了吞吐量。接收器物理层以正确顺序对数据包进行重组

22、(见下图)。数据加扰:加扰解扰的作用是解决EMI的问题:当数据重复传输时,能量就会集中在某一频率上,产生EMI噪声;数据经过加扰后,能把集中的能量分散开,几乎变成白噪声;对数据信息加扰的算法:G(X)=X16+X5+X4+X3+1;链路训练:目的是初始化物理层、端口配置信息、相应的链路状态,并了解链路的拓扑结构,以便PCIe链路两端的设备进行通信。比如将一个x4的PCIe设备接到x16的插槽上,此时必须要通过链路训练,来确定实际链路两端的设备状态。此外,为了PCB走线方便,链路两端的设备使用的lane可以错序或极性反转连接(如下图),也必须通过训练来确定具体的连接方式;为了进行链路训练,需要发

23、送一些特殊的字符序列:TS1和TS2序列、Idle序列、FTS序列、SKIP序列等;TS1和TS2序列,即普通的训练序列(Training Sequence),其中TS1序列的主要作用是检测PCIe链路的配置信息,而TS2序列确认TS1序列的结果,有16个字符组成,具体见PCIe规范(表4-2和表4-3);Idle序列:要进入或退出空闲状态(Idle)所发送的序列;FTS序列:主要目的是使接收端RX能重新获得bitsymbol Lock,发送端TX要发送的FTS序列个数由接收到的TS1/2序列决定,TS1/2序列的第3个字符是需要发送的FTS个数;SKIP序列:作用是进行时钟补偿;因为在接收端

24、RX中,存在2个时钟:1个是通过PLL从报文中恢复的时钟,另一个是本地时钟,这2个时钟并不完全同步。在RX端有个同步FIFO来进行同步,该FIFO的大小固定,2端时钟误差太大FIFO就会溢出。所以每个lane在发送一定长度的字符后,必须要根据FIFO的状态增加或减少发送SKIP序列来补偿2端时钟的误差;在进行链路训练时,使用的是LTSSM状态机,如下图,这里就不深入了;PCIe控制器的数据链路层数据链路层确保可靠的数据交换,负责错误检测和重传、流量控制额度(FCC)的初始化和更新以及电源管理服务。为实现这些功能,数据链路层生成并处理数据链路层数据包(DLLP)。 一旦LTSSM发出物理链路协商

25、,数据链路层就被启能。在此,各端点的数据链路层利用流量控制 (FC)初始化协议进行链路初始化。使用该协议交互各链路伙伴可用的排队资源的资讯。一旦完成FC初始化,链接就准备好为事务传输层提供可靠的数据传输服务。在TLP传输时,定期流量控制更新继续追踪缓冲区的可用空间以防止溢出。 数据链路层在不可靠(有损耗)的物理链路上提供了可靠的数据传输服务。它是通过验证收到的TLP及使用接收到数据的正确认并在接收失败时重新传送数据来做到这点的。当TLP被发送时,它们被分配给序列号,并采用一个CRC码且把该码发送至物理层以用于串行链路上的传输。接收时,检查CRC和序列号。CRC内的错误或出序的序列号显示发生了传

26、输错误,信号通过给出负确认(NAK)予以响应。接到NAK后,发送器重新传送数据包,该数据包被存储在专为此目的设置的“重传”缓存器内。若CRC序列号检查成功,接收器发出正确认(ACK)。对给定TLP来说,仅当收到ACK时,才对重传缓冲区进行数据刷新。使用此协议,数据链路层可以保证TLP的正确发送。PCIe控制器的事物传输层数据传输层创制出站及接收入站事务传输层数据包(TLP)。TLP包括一个报头、一个可选数据配载以及一个可选的端到端CRC(ECRC)。TLP既可以是请求也可以是对请求(完成)的响应,它永远是4个字节(1个DWORD)的倍数。报头指定事务类型、优先级、地址,路由规则及其他数据包特征

27、。发送事务传输层构建数据包报头、伺机添加ECRC并门控数据包的传输(直到有足够的远程流量控制额度可用)。接收事务传输层检查TLP格式和报头。它也择机检查ECRC。PCIe基本功能和属性吞吐量:流量控制额度 如前所述,PCIe连接的两端采用流量控制额度(FCC)以确保数据不会因缓冲区溢出而丢失。流量 控制额度因而对总有效吞吐量发挥着关键作用。 流量控制额度就是关于接收器缓冲器容量的信息,因而由接收器件发出。链路的发送端只传送接收端有足够空间所能容纳接收的数据包的数量,在数据包发送过程中这些空间在减少。链路的接收端随着其缓冲空间的空出,会接着发布缓冲器容量信息。有用于送出、未送出和完成的流量控制队

28、列,因此,有三类流量控制DLLP。另外还有: Init_FC DLLPs定义各FC类(P、NP、CPL)的初始缓冲空间 ;Update_FC DLLPs用来宣告又有新“额度”;QoS:传输类别和虚拟通道 传输分类和通道虚拟化使系统能为不同应用提供不同的服务质量(QoS)。如在PC中,会给视频流以最高优先级以确保有足够的带宽提供高品质视频,保证其不会被其它应用阻扰。在网络服务器应用中,这种优先级对网络服务提供商的经营来说必不可少,它们必须要能以不同的服务定价提供多种服务水平不同的服务。 通道虚拟化允许多个独立的数据流复用同一条线路。虚拟通道拥有自己的缓冲资源。 传输分类使用传输类标记定义端到端的

29、优先级,任何数据包都会被指配一个针对其它流通的优先级。根联合体为每一传输类分配一个虚拟通道,虽然在数据包路径上的不同点可能会有不同的虚拟通道。灵活的仲裁机制使虚拟通道保有必要的优先级和服务水准。仲裁机制包括:任意(自定义)、循环赛、加权轮循等。RAS:数据完整性 数据完整性是由采用一系列必要和可选的协议特性保证的。所需要的特性有: 物理层检查8b/10b编码/解码以剔除无效字符。 链路层检查数据包CRC(PCRC)检查;数据包序号检查;验证确认/负确认(ACK/NAK)。 事务传输层检查报头和数据包有效性;完成超时。 可选特性无论可选或不可选,任何PCIe IP实际上都该支持的特性有接收器溢出检查、流量控制错误检查、端对端CRC(ECRC)检查、损坏的TLP检查、存储器奇偶校验和数据通路奇偶校验。RAS: 排序/PCI规则 排序衍生自PCI模型,它有两个目标: 为避免系统死锁。PCIe是通过确保一些数据包类型必须要能通过被隔阻的其他类型做到这点 的;因此,有些数据包类型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论