PCIe扫盲

来源:互联网 发布:最简单的php爬虫 编辑:程序博客网 时间:2024/05/16 08:22

PCIe 扫盲

转自:http://zh.wikipedia.org/wiki/PCI-E

        PCI Express,简称PCI-E,是电脑总线PCI的一种,它沿用了现有的PCI编程概念及通讯标准,但建基于更快的串行通信系统。英特尔是该接口的主要支援者。PCIe仅应用于内部互连。由于PCIe是基于现有的PCI系统,只需修改物理层而无须修改软件就可将现有PCI系统转换为PCIe。PCIe拥有更快的速率,以取代几乎全部现有的内部总线(包括AGP和PCI)。英特尔希望将来能用一个PCIe控制器和所有外部设备交流,取代现有的南桥/北桥方案。

除了这些,PCIe设备能够支援热拔插以及热交换特性,支援的三种电压分别为+3.3V、3.3Vaux以及+12V。考虑到现在显卡功耗的日益增加,PCIe而后在规范中改善了直接从插槽中取电的功率限制,16x的最大提供功率达到了75W[1],比AGP 8X接口有了很大的提升。基本可以满足当时(2004年)中高阶显卡的需求。这一点可以从AGP、PCIe两个不同版本的6600GT显卡上就能明显地看到,后者并不需要外接电源。PCIe只是南桥的扩展总线,它与操作系统无关,所以也保证了它与原有PCI的兼容性,也就是说在很长一段时间内在主板上PCIe接口将和PCI接口共存,这也给用户的升级带来了方便。由此可见,PCIe最大的意义在于它的通用性,不仅可以让它用于南桥和其他设备的连接,也可以延伸到芯片组间的连接,甚至也可以用于连接图形芯片,这样,整个I/O系统重新统一起来,将更进一步简化计算机系统,增加计算机的可移植性和模块化。

历史

         在2001年的春季英特尔开发者论坛(IDF)上Intel公布了取代PCI总线的第三代I/O技术,被称为“3GIO”。该总线的规范由Intel支持的AWG(Arapahoe Work Group)负责制定。2002年4月17日,AWG正式宣布3GIO 1.0规范草稿制定完毕,移交PCI特殊兴趣组织(PCI-SIG)进行审核,2002年7月23日经过审核后正式公布,改名为“PCI Express”,并根据开发蓝图2006年正式推出Spec2.0(2.0规范)。

版本资料传输带宽单向单通道带宽双向16通道带宽原始传输率供电发表日期1.02Gb/s250MB/s8GB/s2.5GT/s2002年7月22日1.0a2Gb/s250MB/s8GB/s2.5GT/s2003年4月15日1.12Gb/s250MB/s8GB/s2.5GT/s77W2005年3月28日2.04Gb/s500MB/s16GB/s5.0GT/s225W2006年12月20日2.14Gb/s500MB/s16GB/s5.0GT/s2009年3月4日3.08Gb/s1GB/s32GB/s8.0GT/s2010年11月10日4.016.0GT/s2014年-2015年

        以2.0为例:5GT/s => 每秒5Gbit的数据总传输率 但编码方式为 8/10 (每10个bit只有8个实际有效资料) 即为 4Gb/s (3.0 编码方式为 128/130)。

PCI Express与其他传输规格比较

        PCIe的规范主要是为了提升电脑内部所有总线的速度,因此带宽有多种不同规格标准,其中PCIe x16是专为显卡所设计的部分。AGP的资料传输效率最高为2.1GB/s,不过对上PCIe x16的8GB/s,很明显的就分出胜负,但8GB/s只有指资料传输的理想值,并不是使用PCIe接口的显卡,就能够有突飞猛进的效能表现,实际的测试数据上并不会有这么大的差异存在。 [4] [5]

传输通道数脚Pin总数主接口区Pin数总 长 度主接口区 长度x1361425 mm7.65 mmx4644239 mm21.65 mmx8987656 mm38.65 mmx1616414289 mm71.65 mm规格总线宽度工作时脉资料速率PCI 2.332 位元33/66 MHz133/266 MB/sPCI-X 1.064 位元66/100/133 MHz533/800/1066 MB/sPCI-X 2.0(DDR)64 位元133 MHz2.1 GB/sPCI-X 2.0(QDR)64 位元133 MHz4.2 GB/sAGP 2X32 位元66 MHz*2=532 MB/sAGP 4X32 位元66 MHz*4=1.0 GB/sAGP 8X32 位元66 MHz*8=2.1 GB/sPCI-E 1.0 X11 位元2.5 GHz500 MB/s(双工,文稿数据)PCI-E 1.0 X22 位元2.5 GHz1 GB/s(双工)PCI-E 1.0 X44 位元2.5 GHz2 GB/s(双工)PCI-E 1.0 X88 位元2.5 GHz4 GB/s(双工)PCI-E 1.0 X1616 位元2.5 GHz8 GB/s(双工)

         计算公式:PCI-E串行总线带宽(MB/s) = 串行总线时钟频率(MHz) * 串行总线位宽(bit/8 = B) * 串行总线管线 * 编码方式 * 每时钟传输几组数据(cycle) 例:双工PCI-E 1.0 X1 带宽=2500*1/8*1*8/10*1*2=500 MB/s

         PCI Express 1.0 总线频率 2500 MHz,这是在 100 MHz 的基准频率通过锁相环振荡器(Phase Lock Loop,PLL)达到的。PCI-E 2.0 总线频率从2.5GHz提高到5GHz,3.0则提高到8GHz,编码方式变成128/130。

 PCI Express的硬件协议

       PCIe的连接是建立在一个双向的序列的(1-bit)点对点连接基础之上,这称之为“传输通道”。与PCI 连接形成鲜明对比的是PCI是基于总线控制,所有设备共同分享的单向32位并行总线。PCIe是一个多层协议,由一个对话层,一个数据交换层和一个物理层构成。物理层又可进一步分为逻辑子层和电气子层。逻辑子层又可分为物理代码子层(PCS)和介质接入控制子层(MAC)。

物理层

         于使用电力方面,每组流水线使用两个单向的低电压差分信号(LVDS)合计达到2.5兆波特。传送及接收不同数据会使用不同的传输通道,每一通道可运作四项资料。两个PCIe设备之间的连接成为“链接”,这形成了1组或更多的传输通道。各个设备最少支援1传输通道(x1)的链接。也可以有2,4,8,16,32个通道的链接。这可以更好的提供双向兼容性。(x2模式将用于内部接口而非插槽模式)PCIe卡能使用在至少与之传输通道相当的插槽上(例如x1接口的卡也能工作在x4或x16的插槽上)。一个支援较多传输通道的插槽可以建立较少的传输通道(例如8个通道的插槽能支援1个通道)。PCIe设备之间的链接将使用两设备中较少通道数的作为标准。一个支援较多通道的设备不能在支援较少通道的插槽上正常工作,例如x4接口的卡不能在x1的插槽上正常工作(插不入),但它能在x4的插槽上只建立1个传输通道(x1)。PCIe卡能在同一数据传输通道内传输包括中断在内的全部控制信息。这也方便了与PCI的兼容。多传输通道上的数据传输采取交叉存取,这意味着连续字节交叉存取在不同的通道上。这一特性被称之为“数据条纹”,需要非常复杂的硬件支援连续数据的同步存取,也对链接的数据吞吐量要求极高。由于数据填充的需求,数据交叉存取不需要缩小数据包。与其它高速数传输协议一样,时钟信息必须嵌入信号中。在物理层上,PCIe采用常见的8B/10B代码方式来确保连续的1和0字符串长度符合标准,这样保证接收端不会误读。编码方案用10位编码比特代替8个未编码比特来传输数据,占用20%的总带宽。到了PCIe 3.0,采用128B/130B代码方式,仅占用1.538%的总带宽。有些协议(如SONET)使用另外的编码结构如“不规则”在数据流中嵌入时钟信息。PCIe的特性也定义了一种“不规则化”的运算方法,但这种方法与SONET完全不同,它的方法主要用来避免数据传输过程中的数据重复而出现数据散射。第一代PCIe采用2.5兆位单信号传输率,PCI-SIG计划在未来版本中增强到5~10兆位。

 数据链接层

       数据链接层采用按序的交换层信息包(Transaction Layer Packets,TLPs),是由交换层生成,按32位循环冗余校验码(CRC,本文中用LCRC)进行数据保护,采用著名的协议(Ack and Nak signaling)的信息包。TLPs能通过LCRC校验和连续性校验的称为Ack(命令正确应答);没有通过校验的称为Nak(没有应答)。没有应答的TLPs或者等待逾时的TLPs会被重新传输。这些内容存储在数据链接层的缓存内。这样可以确保TLPs的传输不受电子噪音干扰。PCIe对于ACK有所规范,在收到TLP封包之后,在一定时间内必须回应ACK,也就是ACK延迟(ACK Latency)的等待时间。因应ACK/NAK流程的需要,必须实作出重新播送缓冲器(Replay Buffer)。

Ack和Nak信号由低层的信息包传送,这些包被称为数据链接层信息包(Data Link Layer Packet,DLLP)。DLLP也用来传送两个互连设备的交换层之间的流控制信息和实现电源管理功能。

交换层

       PCI Express采用分离交换(数据提交和应答在时间上分离),可保证传输通道在目标端设备等待发送回应信息传送其它数据信息。它采用了可信性流控制。这一模式下,一个设备广播它可接收缓存的初始可信信号量。链接另一方的设备会在发送数据时统计每一发送的TLP所占用的可信信号量,直至达到接收端初始可信信号最高值。接收端在处理完毕缓存中的TLP后,它会回送发送端一个比初始值更大的可信信号量。可信信号统计是定制的标准计数器,这一算法的优势,相对于其他算法,如握手传输协议等,在于可信信号的回传反应时间不会影响系统性能,因为如果双方设备的缓存足够大的话,是不会出现达到可信信号最高值的情况,这样发送数据不会停顿。第一代PCIe标称可支援每传输通道单向每秒250兆字节的数据传输率。这一数字是根据物理信号率2500兆波特除以编码率(10位/每字节)计算而得。这意味着一个16通道(x16)的PCIe卡理论上可以达到单向250*16=4000兆字节/秒(3.7G字节/每秒)。实际的传输率要根据数据有效载荷率,即依赖于数据的本身特性,这是由更高层(软件)应用程序和中间协议层决定。PCI Express与其它高速序列连接系统相似,它依赖于传输的鲁棒性(CRC校验和Ack算法)。长时间连续的单向数据传输(如高速存储设备)会造成>95%的PCIe通道数据占用率。这样的传输受益于增加的传输通道,但大多数应用程序如USB或以太网络控制器会把传输内容拆成小的数据包,同时还会强制加上确认信号。这类数据传输由于增加了数据包的解析和强制中断,降低了传输通道的效率。这种效率的降低并非只出现在PCIe上。

原创粉丝点击