pcie协议中文.docx
- 文档编号:23179132
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:13
- 大小:25.07KB
pcie协议中文.docx
《pcie协议中文.docx》由会员分享,可在线阅读,更多相关《pcie协议中文.docx(13页珍藏版)》请在冰豆网上搜索。
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字符后,便会重发数据,直到接收站返回ack字符,即数据传输无误)。
在发送设备中,数据链路层从事务层接收tlp,接收时必须遵循流量控制机制。
数据链路层接收到tlp后,生成链路cRc(lcRc)和一个sequencenumber(序列id)并附加到tlp上。
之后在该层中的重放缓冲区中保留该tlp的一个副本并将tlp发往接收设备。
接收设备的数据链路层对收到的tlp进行cRc校验;如果校验无误,则向发送设备返回一个带有序列id的ackdllp,发送设备在接收到ack后,确认该tlp已成功到达接收设备,同时清空重放缓冲区中与该序列id有关的tlp;如果校验有误,接收设备会返回一个带序列id的nakdllp,发送设备将重发缓冲区中与此id相关的tlp。
数据链路层在tlp上添加的序列id和lcRc的字段长度分别为12bit和32bit。
序列id用于将重放缓冲区中保存的出站tlp副本与入站ack/nakdllp联系起来,lcRc则是根据tlp的所有字节和序列id计算的,用于检测数据包的传输是否正确。
在数据链路层中的数据封包如下所示。
序列idtlpprefixestlp
header
2byte
(11:
0bit
有效)
图4数据链路层中的数据封包格式
这里简单介绍一下ack/nakdllp,dllp(datalinklayerpacket)产生于数据链路层,终止于数据链路层,并不会传递到事务层。
dllp总长度为6byte,其类型主要由第一个字节dllptype字段决定,最后两个字节为cRc校验码。
dllp的各种类型在pcie3.0规范中datalinklayerspecification章节中也有详细的介绍,这里只介绍一下ack/nakdllp的格式,如下所示:
dllptype
00000000-ack
00010000-nakReservedacknak_seq_numdatapayloadecRclcRcndw(n为0,1……)3或4dw0----1024dw1dw1dwcRc16bit12bit12bit(同tlp序列id)
图5ack/nakdllp
3、物理层(physicallayer)
物理层作为pcie总线的最底层,负责直接连接pcie设备,它为设备的数据通信提供传送介质。
物理层又可分为两部分:
逻辑物理层和电气物理层。
逻辑物理层包括对数据包(从数据链路层接收的tlp、dllp以及从链路上接收的物理层数据包)进行相关的数字逻辑,电气物理层是连接物理层和链路的模拟接口,由各通道的差分驱动器和差分接收器组成。
在发送设备中,来自数据链路层的tlp和dllp被定时输入到逻辑物理层的发送缓冲区中,物理层在tlp和dllp的前后分别添加一个帧开始和帧结尾字符。
接收设备利用这两个字符检测数据包的开始和结束。
此时,在物理层中tlp的数据封包格式如下。
stp序列idtlpprefixestlp
header
帧开始
1byte2byte(11:
0bit
有效)
图6物理层中的tlp封包格式
在发送端,待数据包处理完成后,物理层通过串/并转换器将数据转换成串行比特流,通过差分驱动器发送出去;在接收端,物理层通过并/串转换器将串行数据转换成字节。
在这里我们需要知道的是在每个byte的传输是以低位(lsb)开始,高位(msb)结束的。
ndw(n为0,1……)3或4dw0----1024dw1dwdatapayloadecRclcRc1dw帧结尾1byteend
下面介绍一下pcie总线中的数据编码方式:
在pcie总线V1.x和V2.0规范中物理层中使用8/10b编码,即在
pcie链路上的
10bit中含有8bit的有效数据。
在8/10bit编码中,将每个byte看成由3bits(高3位,如下图中的hgF)和5bits(低5位,如图中的edcba)两部分组成,编码后这个byte数据则变成jhgfiedcba(需要注意的是,这里的hgfedcba已经和原字节中的hgFedcba不一样了,在附件pciexpressbaser3.0的附录b(symbolencoding)中枚举了一个字节的所有值,及其对应的10bit编码),j和i则是给每部分添加的起始位,其随byte的值而有所不同。
图78/10b编码方式
而在pcieV3.0规范中使用128/130b编码方式,即在pcie链路上的130bit中含有128bit的有效数据。
在128/130b编码方式中,在128bit的开头添加了h0、h1两个同步起始头,h0h1有两种有效的编码:
10和01,其定义了传输的数据负载的类型。
下图是128bit数据从发送端到接收端的编码及接收顺序。
图8128bit数据编码方式
上图中的数据传输只是在×1link的情况下,在多link传输中,数据的传输会有所不同,简单理解的话,可以看成每个byte里的bit是串行传输的,而datapayload(数据负载)里的byte是并行传输的。
对于pcie总线的分层协议介绍就到这里,由于自己只学习了其中的一小部分,所以在上面的内容写的不是很全面,如果有看不明白的地方,可以找我交流,共同学习,或者参考pcie的规范(附件)。
若有错误,还请大家指正。
篇二:
pcie3.0标准学习总结
1
1.介绍
本章介绍了在pciexpress架构和关键概念的概述。
pciexpress是一种为多种类未来计算和通信平台互连而定义的高性能,通用i/o。
关键的pci属性,如它的使用模式,负载存储体系结构,软件接口,维持不变,而它的并行总线实施由一个高度可扩展的,完全串行接口取代。
利用pciexpress利用最新的点到点互连,基于交换机的技术,与分组交换协议,在性能和功能上提高到一个新水平。
pciexpress支持电源管理,服务质量(qos),hot-plug/hot-swap支持,数据完整性,可信的配置质量和错误处理等高级功能。
1.1第三代i/o互连
第三代i/o互连的高级别要求如下:
支持多种细分市场和新兴的应用:
统一桌面,移动,工作站,服务器,通信平台的i/o架构和嵌入式设备
能够提供低成本,高容量的解决方案:
结构在系统级等于或低于pci成本
支持多平台互联用途:
芯片到芯片,板对板连接器或电缆通过
新的机械形式的因素:
易于移动的,pci般的外形和模块化,盒外形
pci兼容的软件模型:
能够使用不需要修改的pci系统配置软件实现枚举和配置pciexpress硬件
能够不需要修改引导现有的操作系统,
能够不需要修改支持现有的任何的i/o设备驱动程序
能够采用pci配置范例配置/启用新的pciexpress功能
性能:
低开销,低延迟的通信带宽和有效载荷应用最大化链路效率
每个针脚高带宽,以减少设备和连接器接口的针脚数
通过聚合lane和信号频率可扩展的性能
高级功能:
理解不同的数据类型和排序规则
电源管理和预算
能够识别电源管理能力通过一个给定的函数
能够过渡到一个功能当进入特定的电源状态
能够接收当前电源状态通知功能
能够产生一个请求,唤醒从主电源断电状态
能够为设备按照相应的平台电源预算策略顺序上电。
支持区分服务的能力,如:
不同的服务质量(qos)
每个qos数据流能有专用的链路资源,提高fabric效率和应用程序级的
头面对队头阻塞的处理效率
能够为每个组件配置fibricqos仲裁策略
能够为每个数据包端到端的qos打上标记
能够创建端到端的同步(基于时间,注入速率控制)解决方案
可信配置支持
能够支持受保护的从可信软件环境到可信配置空间的访问
热插拔和热交换支持
能够支持现有的pci热插拔和热交换解决方案
能够支持原生热插拔和热交换解决方案(没有边带信号需要)
能够为所有形式因素支持统一的软件模型
数据完整性
能够支持所有的交易类型和数据链路链路数据包级别的数据完整性
能够支持终端到终端的高可用性解决方案的数据完整性
错误处理
能够支持pci-级的错误处理
能够支持先进的错误报告和处理,以改善故障隔离和恢复解决方案
独立工艺技术
能够支持在发射器和接收器不同的直流共模电压
易于测试
能够通过简单的连接测试来测试设备电气规范
1.2pciexpress链路
一个链接表示两个组件之间的双-单工通信通道。
最根本的pciexpress链路由两部分组成,低电压,差分驱动信号对:
一对发射线和一对接收线,如图1-1所示。
基本链路属性是:
基本链路-pciexpress链路由两对单向差分线组成,一对发送线和一对接收线作为传
输的实施。
数据时钟嵌入使用的编码方案(见第4章),可以达到非常高的数据速率。
信号传输速率-初始化后,每一个link只能运行在支持的信号水平之一。
对于第一
代的pciexpress技术,只定义了一个信号传输速率,它提供了一个有效的2.5gbit/秒/lane/方向有效带宽。
在未来,数据速率将随着技术的进步继续增加。
lane–一个链接必须支持至少一个lane-每条lane代表一对差分信号对的集合(一
个用于传输,一对用于接收)。
测量带宽,链路聚合可以表示为xn的多车道,其中n可以是任何支持的链路宽度。
一个x8链路代表20千兆/在每个方向的原始带宽秒的总带宽。
本规范描述为x1,x2,x4,x8,x12,x16和x32lane宽度操作。
初始化-在硬件初始化中,每个pciexpress链路创建是在每个链路两端的两个代理协商完成lane宽度和操作频率之后。
与固件或操作系统软件无关。
对称性-每一个link都必须支持在每个方向上对称的lane数量,也就是说,一个
x16链接表明每个方向有16个差分信号对。
1.3.pciexpressFabric拓扑
Fabric是由一个点至点的link,互连一套组件–一个Fabric拓扑结构例子,如图1-2所示。
这个插图说明了单个Fabric实例有一个层次结构-一个根联合体(Rc),多个端点(i/o设备),一个交换开关,和一个pciexpress-pci桥,通过pciexpress连接的所有相互关联的组成。
1.3.1.Rootcomplex根联合体
根联合体(Rc)表示一个i/o层次结构的根,连接cpu/内存子系统的i/o。
正如图1-2所示,一个根联合体可支持一个或多个pciexpress端口。
每个接口定义了一个
单独的层次结构域。
每个层次域可组成一个单一的端点或分层次包含一个或多个开关元件和端点。
根联合体域之间的层次路由点对点对等传输等功能的是可选的,依赖于实现。
例如,
一个实现可能包括一个真实或虚拟交换机内部在根联合体,使能完全点对点对等传输支持在透明的软件方式下。
不像switch规则,当在层次域(除下文所述者)间路由点对点对等传输,根联合体通
常允许将一个包分割成多个小包。
例如,分割具有256字节的有效载荷的单个数据包为两个字节的数据包有效载荷为128字节。
不像switch规则,当在层次域(除下文所述者)间路由点对点对等传输,根联合体通
常允许将一个包分割成多个小包。
例如,分割具有256字节的有效载荷的单个数据包为两个字节的数据包有效载荷为128字节。
由此产生的数据包必须遵照正常的数据包在本规范中形成的规则(例如,max_payload_size,读取完成边界,等等)。
组件设计应注意,将一个包分裂成较小的数据包可能带来负面的效果,特别是所传输寻址的设备是在一个pciexpress到pci/pci-x桥后的情况。
例外:
支持点对点路由Vendor_defined消息的根联合体,为了保留pciexpress到pci
/pci-x桥message转发能力,不允许分割Vendor_defined讯息成小包,除了在128个字节的边界(即分割成较小的数据包,除了最后产生的数据包以外,所有数据包必须是128的整数倍字节的长度)。
参照pciexpress至pci/pci-x的桥接器规范1.0修订版的其他信息。
根联合体必须支持作为一个请求者生成配置请求。
根联合体允许支持作为请求者生成i/o请求。
根联合体不能支持作为一个完成者锁定语义。
根联合体允许支持作为请求者生成锁定请求。
1.3.2.endpoints
端点是指一种类型的功能,可以是自己的名义或以一个独特的非pciexpress设备代表(除主机cpu的pci设备或其他)的请求者或完成者的pciexpress的通信,例如,一个pciexpress附加图形控制器或pciexpress的usb主机控制器。
端点被划分为遗产的pciexpress,或根联合体的集成端点。
1.3.2.1.legacyendpointRules
一个传统端点必须是具有类型为00h配置空间头功能。
一个传统的端点必须作为一个完成者支持配置请求。
一个传统的端点可以作为一个完成者支持i/o请求。
一个传统的端点可以产生i/o请求。
一个传统的端点可以作为完成者支持锁定内存语义,如果是设备的要求,需要传统的
软件支持。
一个传统的端点必须没有发出锁定请求。
1.3.2.2.pciexpressendpointRules一个传统的端点可以实现扩展配置空间的能力,但这种能力可通过软件忽略。
一个传统的端点作为一个内存处理请求人运行是无须能够产生4gb或更大的地址。
一个传统端点必须支持msi或msi-x或两者都支持,当一个中断请求资源被请求。
如果msi生效,传统端点允许支持任何32位或64位的信息的地址msi能力结构的版本。
一个传统端点请求内存资源是允许支持32为地址作为基地址寄存器。
一个传统端点必须出现在由根联合体创建的层次领域之一。
篇三:
pcie总线基础知识
与pci总线不同,pcie
总线使用端到端的连接方式,在一条pcie链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端。
pcie总线除了总线链路外,还具有多个层次,发送端发送数据时将通过这些层次,而接收端接收数据时也使用这些层次。
pcie总线使用的层次结构与网络协议栈较为类似。
4.1.1端到端的数据传递
pcie链路使用“端到端的数据传送方式”,发送端和接收端中都含有tx(发送逻辑)和Rx(接收逻辑),其结构如图4-1所示。
由上图所示,在pcie总线的物理链路的一个数据通路(lane)中,由两组差分信号,共4根信号线组成。
其中发送端的tx部件与接收端的Rx部件使用一组差分信号连接,该链路也被称为发送端的
发送链路,也是接收端的接收链路;而发送端的Rx部件与接收端的tx部件使用另一组差分信号连接,该链路也被称为发送端的接收链路,也是接收端的发送链路。
一个pcie链路可以由多个lane组成。
高速差分信号电气规范要求其发送端串接一个电容,以进行ac耦合。
该电容也被称为ac耦合电容。
pcie链路使用差分信号进行数据传送,一个差分信号由d+和d-两根信号组成,信号接收端通过比较这两个信号的差值,判断发送端发送的是逻辑“1”还是逻辑“0”。
与单端信号相比,差分信号抗干扰的能力更强,因为差分信号在布线时要求“等长”、“等宽”、“贴近”,而且在同层。
因此外部干扰噪声将被“同值”而且“同时”加载到d+和d-两根信号上,其差值在理想情况下为0,对信号的逻辑值产生的影响较小。
因此差分信号可以使用更高的总线频率。
此外使用差分信号能有效抑制电磁干扰emi(electromagneticinterference)。
由于差分信号d+与d-距离很近而且信号幅值相等、极性相反。
这两根线与地线间耦合电磁场的幅值相等,将相互抵消,因此差分信号对外界的电磁干扰较小。
当然差分信号的缺点也是显而易见的,一是差分信号使用两根信号传送一位数据;二是差分信号的布线相对严格一些。
pcie链路可以由多条lane组成,目前pcie链路可以支持1、2、4、8、12、16和32个lane,即×1、×2、×4、×8、×12、×16和×32宽度的pcie链路。
每一个lane上使用的总线频率与pcie总线使用的版本相关。
第1个pcie总线规范为V1.0,之后依次为V1.0a,V1.1,V2.0和V2.1。
目前pcie总线的最新规范为V2.1,而V3.0正在开发过程中,预计在20xx年发布。
不同的pcie总线规范所定义的总线频率和链路编码方式并不相同,如表4-1所示。
表4-1pcie总线规范与总线频率和编码的关系
如上表所示,不同的pcie总线规范使用的总线频率并不相同,其使用的数据编码方式也不相同。
pcie总线V1.x和V2.0规范在物理层中使用8/10b编码,即在pcie链路上的10bit中含有8bit的有效数据;而V3.0规范使用128/130b编码方式,即在pcie链路上的130bit中含有128bit的有效数据。
由上表所示,V3.0规范使用的总线频率虽然只有4ghz,但是其有效带宽是V2.x的两倍。
下文将以V2.x规范为例,说明不同宽度pcie链路所能提供的峰值带宽,如表4-2所示。
表
4-2pcie总线的峰值带宽
由上表所示,×32的pcie链路可以提供160gt/s的链路带宽,远高于pci/pci-x总线所能提供的峰值带宽。
而即将推出的pcieV3.0规范使用4ghz的总线频率,将进一步提高pcie链路的峰值带宽。
在pcie总线中,使用gt(gigatransfer)计算pcie链路的峰值带宽。
gt是在pcie链路上传递的峰值带宽,其计算公式为总线频率×数据位宽×2。
在pcie总线中,影响有效带宽的因素有很多,因而其有效带宽较难计算,这部分内容详见第8.4.1节。
尽管如此,pcie总线提供的有效带宽还是远高于pci总线。
pcie总线也有其弱点,其中最突出的问题是传送延时。
pcie链路使用串行方式进行数据传送,然而在芯片内部,数据总线仍然是并行的,因此pcie链路接口需要进行串并转换,这种串并转换将产生较大的延时。
除此之外pcie总线的数据报文需要经过事务层、数据链路层和物理层,这些数据报文在穿越这些层次时,也将带来延时。
本书将在第8.4节详细讨论pcie总线的延时与带宽之间的联系。
在基于pcie总线
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pcie 协议 中文