PIC接口的发展历程

一.PIC的定义

PCI即Peripheral Component Interconnect,中文意思是“外围器件互联”,是由PCISIG (PCI Special Interest Group)推出的一种局部并行总线标准。PCI总线是由ISA(Industy Standard Architecture)总线发展而来的,ISA并行总线有8位和16位两种模式,时钟频率为8MHz,工作频率为33MHz/66MHz。是一种同步的独立于处理器的32位或64位局部总线。从结构上看,PCI是在CPU的供应商和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。从1992年创立规范到如今,PCI总线已成为了计算机的一种标准总线。已成为局部总线的新标准,广泛用于当前高档微机、工作站,以及便携式微机。主要用于连接显示卡、网卡、声卡。PCI总线是32位同步复用总线。其地址和数据线引脚是AD31~AD0。PCI的工作频率为33MHz。

二.PIC总线结构

PCI总线是一种树型结构,并且独立于CPU总线,可以和CPU总线并行操作。PCI总线上可以挂接PCI设备和PCI桥片,PCI总线上只允许有一个PCI主设备,其他的均为PCI 从设备,而且读写操作只能在主从设备之间进行,从设备之间的数据交换需要通过主设备中转。 [1]  PCI总线结构如下图所示。

PCI总线结构

在处理器系统中,含有PCI总线和PCI总线树这两个概念。这两个概念并不相同,在一颗PCI总线树中可能具有多条PCI总线,而具有血缘关系的PCI总线组成一颗PCI总线树。PCI总线由HOST主桥或者PCI桥管理,用来连接各类设备,如声卡、网卡和IDE接口卡等。在一个处理器系统中,可以通过PCI桥扩展PCI总线,并形成具有血缘关系的多级PCI总线,从而形成PCI总线树型结构。在处理器系统中有几个HOST主桥,就有几颗这样的PCI总线树,而每一颗PCI总线树都与一个PCI总线域对应。

与HOST主桥直接连接的PCI总线通常被命名为PCI总线0。考虑到在一个处理器系统中可能有多个主桥。

PCI总线取代了早先的ISA总线。当然与在PCI总线后面出现专门用于显卡的AGP总线,与现在的PCI Express总线相比,功能没有那么强大,但是PCI能从1992用到现在,说明他有许多优点,比如即插即用(Plug and Play)、中断共享等。在这里我们对PCI总线做一个深入的介绍。

从数据宽度上看,PCI总线有32bit、64bit之分,从总线速度上分,有33MHz、66MHz两种。目前流行的是32bit @ 33MHz,而64bit系统正在普及中。改良的PCI系统,PCI-X,最高可以达到64bit @ 133MHz,这样就可以得到超过1GB/s的数据传输速率。如果没有特殊说明,以下的讨论以32bit @ 33MHz为例。

不同于ISA总线,PCI总线的地址总线数据总线分时复用的。这样做的好处是,一方面可以节省接插件的管脚数,另一方面便于实现突发数据传输。在做数据传输时,由一个PCI设备做发起者(主控,Initiator或Master),而另一个PCI设备做目标(从设备,Target或Slave)。总线上的所有时序的产生与控制,都由Master来发起。PCI总线在同一时刻只能供一对设备完成传输,这就要求有一个仲裁机构(Arbiter),来决定在谁有权力拿到总线的主控权。

当PCI总线进行操作时,发起者(Master)先置REQ#,当得到仲裁器(Arbiter)的许可时(GNT#),会将FRAME#置低,并在AD总线上放置Slave地址,同时C/BE#放置命令信号,说明接下来的传输类型。所有PCI总线上设备都需对此地址译码,被选中的设备要置DEVSEL#以声明自己被选中。然后当IRDY#与TRDY#都置低时,可以传输数据。当Master数据传输结束前,将FRAME#置高以标明只剩最后一组数据要传输,并在传完数据后放开IRDY#以释放总线控制权。

这里我们可以看出,PCI总线的传输是很高效的,发出一组地址后,理想状态下可以连续发数据,峰值速率为132MB/s。实际上,目前流行的33M@32bit北桥芯片一般可以做到100MB/s的连续传输。

三.PCI总线特点

(1)传输速率高最大数据传输率为132MB/s,当数据宽度升级到64位,数据传输率可达264MB/s。这是其他总线难以比拟的。它大大缓解了数据I/O瓶颈,使高性能CPU的功能得以充分发挥,适应高速设备数据传输的需要。

(2)多总线共存采用PCI总线可在一个系统中让多种总线共存,容纳不同速度的设备一起工作。通过HOST-PCI桥接组件芯片,使CPU总线和PCI总线桥接;通过PCI-ISA/EISA桥接组件芯片,将PCI总线与ISA/EISA总线桥接,构成一个分层次的多总线系统。高速设备从ISA/EISA总线卸下来,移到PCI总线上,低速设备仍可挂在ISA/EISA总线上,继承原有资源,扩大了系统的兼容性。

(3)独立于CPU PCI总线不依附于某一具体处理器,即PCI总线支持多种处理器及将来发展的新处理器,在更改处理器品种时,更换相应的桥接组件即可。

(4)自动识别与配置外设 用户使用方便。

(5)并行操作能力。

PCI总线的主要性能

(1)总线时钟频率33.3MHz/66.6MHz。

(2)总线宽度32位/64位。

(3)最大数据传输率132MB/s(264MB/s)。

(4)支持64位寻址。

(5)适应5V和3.3V电源环境。

四.PIC的历程

五. PICE历程

PCIe的技术基础

在演进到PCIe之后,整个计算机架构的发展可谓走上了快车道。在这一部分,本文将解读PCIe的技术基础以及它为什么能够在10多年之后依旧拥有强大的生命力。

从概念上来说,PCIe总线架构实际上是旧的PCI总线的高速串行替代产品,其最大的差别在于总线的拓扑结构:PCI总线使用的是共享并行总线架构,所有的PCI主机和所有的设备共享一组通用的地址、数据和控制线。PCIe基于点对点的拓扑结构,单独的串行链路将每个设备连接到host(root complex),由于其共享式总线拓扑结构,因此采用的是仲裁方式访问,单个方向上一次只允许一个主设备存在。

在数据传输方面,旧的PCI时钟方案采用的是总线上最慢的设备频率作为基准数据传输频率(不管有多少设备,也不管其他设备的情况如何),因此整体传输效率会被较慢的设备拉低。鉴于此,在传统的PCI-AGP系统中,AGP总线需要单独的控制器才能访问和控制,并和通用的PCI链路彻底隔离。这样显然增加了系统的复杂程度。

相比之下,PCIe改用了全新的任意两个端点的全双工通信,同时对多个端点的并发访问没有限制,系统只需要保留一个或者数个多通路的PCIe控制器,就可以实现对不同带宽需求的设备进行控制。比如显卡需要PCIe x16,SSD需要PCIe x4,声卡需要PCIe x1,这些设备都可以挂接在一个PCIe控制器上,互相之间也不会受到影响。

在总线协议方面,PCIe的通信数据使用了特殊的数据包封装,打包和解包数据以及状态消息流的工作由PCIe的端口事物层处理,不需要CPU的干涉。此外,PCIe总线在链接配对方面存在极高的灵活性。两个设备之间的PCIe链路可以在x1和x32之间自由变动,此时吞吐量将随着链路变动而变动。

在实际工作中,链路之间的通道数量可以在设备初始化期间自动协商连接,可以采用最低链路的设备规格,也可以采用其他规格。举例来说,可以将只支持PCIe x1的设备插入PCIe x4或者x16的插槽中,初始化时将自动设置为最高可相互支持的物理链接通道数。反之,也可以自行配置较少的通道数,这样能够在设备出现坏道或者不可靠通道时提供容错性。

信号方面,PCIe规定了每一个通道中包含两组差分信号对,其中一对差分信号用于接收数据,另外一对差分信号用于发送数据。因此每个PCIe通道都需要4条线缆或者信号迹线。一般来说,人们对这种同时可以收发的信息通道称作“全双工”信息传输通道。每次传输、链路端点之间的两个方向上都会传递8位字节格式的数据包。采用串行信息的优势在于,每个通道的每个方向只有一个差分信号,并且嵌入了时钟信息,这使得整个系统的抗干扰能力大大增强,并且频率极限被提升至千兆赫兹。

PCIe的初始标准定义了七种链路宽度,对应七种不同的物理插槽规格。这七种链路规格的通道数量分别为1组、2组、4组、8组、12组、16组和32组,对应的标识分别采用x1、x2、x4、x8、x12、x16和x32,不同规格的链路也和相应长度的物理插槽规格相匹配。一般来说,x16插槽是最常见的插槽规格,它用于接驳显卡或者万兆网络、超高速SSD等高性能高带宽设备。x32的插槽不太多见,往往用于服务器或者特殊场合。

值得一提的是,由于PCIe规范的灵活性,人们往往设计智能切换方案来进行插槽链路配置,而不再需要和物理链路规格绑定。举例来说,一个x16的PCIe链路,可以同时面向一个x16规格的物理插槽和一个x4规格的物理插槽。

当x4物理接口没有插入任何设备时,在优先级配置规范的指引下,PCIe链路将全部分配给x16的物理插槽;当x4规格接口插入设备后,PCIe链路可以根据配置需要,分配x12或者x8的链路给原本为x16的物理插槽,新的x4接口可以在不启用和获得x4带宽之间自由选择。

除了上述传输方面的设计外,PCIe在电源方面也作出了加强。根据PCIe规范,PCIe设计了数个专用的+12V和+3.3V引脚,最大可供电能力为75W,这个供电能力已经完全可以满足大部分普通设备的需求了。不过在实际使用中,受制于主板设计、PCB设计以及系统供电等原因,PCIe插槽的供电能力有可能达不到75W,各家厂商也会在相应的产品中予以说明。

显卡所使用的6pin、8pin供电标准也是PCIe规范所定义的。

1.0~3.0时代

PCIe锋芒尽显

初始时代:PCIe 1.0标准小试牛刀

PCIe 1.0a在2003年由PCI-SIG正式推出相关规范。PCIe 1.0a的每通道运行频率为250MHz,相应的数据传输速率为250MB/s,不过更正规的写法被写成2.5GT/s,也就是每秒2.5千兆次传输。这里需要注意的是,PCIe的每通道数据是打包传输的,其中不但包括需要传递的目标数据,还包括校验信息。

PCIe 1.0a实际传输10bit的信息,其中2bit为校验信息,只有8bit为真正有用的信息,其传输带宽开销为20%,因此实际的有效信息传递能力为每通道200MB/s。不过,初始的PCIe 1.0a版本在发布后很快就被更新的PCIe 1.1规范替代。相比之前的1.0a版本,PCIe 1.1版本增加了一些功能和稳定性设计,带宽和关键性指标完全相同,因此一般将其统一归为PCIe 1.x时代。

支持PCIe 1.x规范的首款芯片组为英特尔在2004年6月发布的915P芯片组,支持的处理器为Pentium 4、双核心的Pentium D以及面向顶级玩家的Pentium XE,首款支持PCIe技术的显卡为AMD Radeon 9550的PCIe版本。此时的主板芯片组还尚未停止对PCI接口的支持,PCIe在此时主要用于缓解显卡和CPU之间的通讯带宽不足,而芯片组的其余部分扩展接口或多或少都拥有数个PCI插槽。

首款支持PCIe规范的Radeon 9550显卡,注意其和AGP接口的差别。

从数据上来看,相比AGP x8的2133MB/s的接口带宽,为显卡准备的PCIe 1.x x16的接口单向带宽达到了4GB/s,双向带宽更是高达8GB/s,单向带宽就相比AGP x8基本翻倍。不过,由于当时的显卡本身性能较弱,再加上并非为PCIe高带宽设计等因素,在几乎相同规格的AGP x8接口和PCIe 1.0 x16的性能对比中,PCIe 1.0 X16并没有带来类似于带宽翻倍那样显著的3D性能提升,两者性能差距并不大。

作为初代产品,PCIe在此时展示的是强悍的扩展能力和几乎无尽的潜能。此外,市场上还存在大量AGP接口的GPU芯片,为了满足PCIe设备的需要,ATI和英伟达还设计了不同的桥接芯片来对GPU的数据接口规格进行转换,并引发了一系列市场竞争的故事,比如著名的“有路何必修桥”就是由ATI提出,所谓原生PCIe接口显卡更有优势的市场宣传口号。

英伟达的GeForce 6600GT新版本原生支持PCIe接口,但是为了支持AGP市场,不得不采用双向桥接芯片转换成AGP接口,散热器下方的为桥接芯片。

PCIe 1.x时代持续的时间从本代实际产品上市(英特尔915P,2004年6月)到新一代实际产品上市(PCIe 2.0,英特尔X38,2007年8月)大约持续了3年多,接下来登场的就是长寿命的PCIe 2.0。

PCIe 2.0一统天下

PCIe 2.0规范发布于2007年1月,其规范主要变化在于相比PCIe 1.x,PCIe 2.0的每通道频率翻倍来到了500MHz,相应的传输能力翻倍,达到了500MB/s,也就是5GT/s,不过数据编码依旧使用了8bit/10bit的方式,也就是依旧需要使用20%的校验带宽。即使如此,PCIe 2.0在典型应用比如PCIe x16接口的单向带宽也达到了8GB/s,双向带宽更是达到了16GB/s。

除了带宽暴增外,PCIe 2.0还带来了不少新的技术,包括新增的输入输出虚拟化技术,可以让多台虚拟机共享PCIe设备;PCIe线缆子规范还加入了铜缆连接方案,每条线缆速度都可以达到2.5Gbps,满足高速网络连接的需求;另外还加入了动态链路管理和链路宽度管理以及电源控制等多项功能,继续完善着PCIe的技术和生态体系。

首款使用PCIe 2.0技术的芯片组是英特尔2007年8月发布、面向顶级玩家的X38芯片组,AMD也推出了AMD 790FX与之呼应。首款支持PCIe 2.0技术的显卡是英伟达的GeForce 8800GT,在此之后,AMD的Radeon HD 3800等一大批显卡都加入了PCIe 2.0规范。

英特尔X38芯片组是第一个支持PCIe 2.0的产品

GeForce 8800GT是首款支持PCIe 2.0的显卡

相比PCIe 1.x标准而言,PCIe 2.x的寿命是非常长的,从2007年8月实际产品发布开始,一直到接近4年半后的2012年4月,随着新的处理器上市,PCIe 3.x的实际产品才开始登台亮相,并逐渐替换PCIe 2.x。即使到现在,也有不少市售主板依旧采用PCIe 2.x的设备和接口。

PCIe 2.0技术寿命非常长,目前市场主流的AMD B450芯片组依旧在提供对PCIe 2.0技术的支持。

锋芒尽显:PCIe 3.x时代来临

PCI-SIG在发布PCIe 1.x和PCIe 2.0相关技术标准时都比较顺利,没有遇到太多的技术难题。但是在PCIe 3.0上,PCI-SIG遇到了很多技术难题。PCIe 3.0的预览规格早在2007年就宣布了(恰好是PCIe 2.0发布后没多久),但是实际的首个版本PCIe 3.0规范在三年后的2010年11月18日才推出。

PCIe 3.0遇到的难题主要来自工程实现。PCIe信号在传输中采用的是铜介质,铜介质实际上是有其物理传输频率上限的,目前的技术估计其物理上限大约在12GT/s。在PCIe 3.x规范研发之初,业内有消息称新的PCIe的传输频率会在PCIe 2.x的基础上继续翻倍,来到大约1GHz的水平,传输速率为10GT/s的水平。

不过在当时的技术条件下,人们发现单纯的频率翻倍难以实现,包括相应连接器件的设计和线路布局都面临困难,成本也可能大幅度上升。作为一个普适性的标准而言,这样的情况让人难以接受。不过,最终技术人员采用了巧妙的手段避开了频率翻倍的问题。

PCIe 3.0的最终标准采用的是800MHz的运行频率,其数据传输速率为8GT/s,相比之前的PCIe 2.0提升了60%,并未翻倍。但是在数据校验方面,PCIe 3.0的校验不再采用8bit/10bit的小包校验方式,转而采用了全新算法的128bit/130bit大包校验方式,以及全新的硬件加扰和解码模块等,其校验带宽开销从之前的20%大跌至1.54%,甚至几乎可以忽略,极大地提升了有效数据的传输带宽。这样一来,PCIe 3.0不需要翻倍传输速率就能够达到实际带宽基本翻倍的目的。

不过问题还没有结束,即使是采用8GT/s的数据传输速率,PCI-SIG组织也怀疑当时的技术难以完成。为此,PCIe 3.0规范加入了一些增强信号指令,以及对数据完整性的优化,包括发送器和接收器以及拓扑结构等,再加上重新优化的PLL、数据通道等。但这还不够,PCI-SIG还进行了为期六个月的技术分析,包括现有低成本材料是否能够满足PCIe 3.0高带宽的需求等,好在最终一切顺利。

最终完成的PCIe 3.0标准每通道带宽为985MB/s,在PCIe x16带宽下能够达到15.7GB/s的水平,相比之前的PCIe 2.x基本做到了翻倍。此外,PCIe 3.0标准的更新版本PCIe 3.1在2014年11月发布,加入了包括电源管理、性能优化和功能拓展等多项改变,当然本质的数据传输能力没有变化。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值