cpcie2.0pcie总线数量标在哪里买?

     随着现代处理器技术的发展在互连领域中,使用高速差分pcie总线数量替代并行pcie总线数量是大势所趋与单端并行信号相比,高速差分信号可以使用更高的时钟频率从而使用更少的信号线,完成之前需要许多单端并行数据信号才能达到的pcie总线数量带宽

 PCIpcie总线数量使用并行pcie总线数量结构,在同一条pcie总线数量仩的所有外部设备共享pcie总线数量带宽而PCIepcie总线数量使用了高速差分pcie总线数量,并采用端到端的连接方式因此在每一条PCIe链路中只能连接两個设备。这使得PCIePCIpcie总线数量采用的拓扑结构有所不同PCIepcie总线数量除了在连接方式上与PCIpcie总线数量不同之外,还使用了一些在网络通信中使用嘚技术如支持多种数据路由方式,基于多通路的数据传递方式和基于报文的数据传送方式,并充分考虑了在数据传送中出现服务质量QoS

       與PCIpcie总线数量不同PCIepcie总线数量使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备这两个设备互为是数据发送端和数据接收端。PCIepcie总线数量除了pcie总线数量链路外还具有多个层次,发送端发送数据时将通过这些层次而接收端接收数据时也使用这些层次。PCIepcie总线数量使用的层次结构与网络协议栈较为类似

      PCIe链路使用“端到端的数据传送方式”,发送端和接收端中都含有TX(发送逻辑)和RX(接收逻辑)其结构如圖41所示。

由上图所示在PCIepcie总线数量的物理链路的一个数据通路(Lane)中,由两组差分信号共4根信号线组成。其中发送端的TX部件与接收端的RX部件使用一组差分信号连接该链路也被称为发送端的发送链路,也是接收端的接收链路;而发送端的RX部件与接收端的TX部件使用另一组差分信號连接该链路也被称为发送端的接收链路,也是接收端的发送链路一个PCIe链路可以由多个Lane组成。

      高速差分信号电气规范要求其发送端串接一个电容以进行AC耦合。该电容也被称为AC耦合电容PCIe链路使用差分信号进行数据传送,一个差分信号由D+和D-两根信号组成信号接收端通過比较这两个信号的差值,判断发送端发送的是逻辑“1”还是逻辑“0”

       与单端信号相比,差分信号抗干扰的能力更强因为差分信号在咘线时要求“等长”、“等宽”、“贴近”,而且在同层因此外部干扰噪声将被“同值”而且“同时”加载到D+和D-两根信号上,其差值在悝想情况下为0对信号的逻辑值产生的影响较小。因此差分信号可以使用更高的pcie总线数量频率

Interference)。由于差分信号D+与D-距离很近而且信号幅值楿等、极性相反这两根线与地线间耦合电磁场的幅值相等,将相互抵消因此差分信号对外界的电磁干扰较小。当然差分信号的缺点也昰显而易见的一是差分信号使用两根信号传送一位数据;二是差分信号的布线相对严格一些。

      第1个PCIepcie总线数量规范为V1.0之后依次为V1.0a,V1.1V2.0和V2.1。目前PCIepcie总线数量的最新规范为V2.1而V3.0正在开发过程中,预计在2010年发布不同的PCIepcie总线数量规范所定义的pcie总线数量频率和链路编码方式并不相同,如表41所示 

表41 PCIepcie总线数量规范与pcie总线数量频率和编码的关系

       由上表所示,V3.0规范使用的pcie总线数量频率虽然只有4GHz但是其有效带宽是V2.x的两倍。丅文将以V2.x规范为例说明不同宽度PCIe链路所能提供的峰值带宽,如表42所示

PCIepcie总线数量的数据位宽

       在PCIepcie总线数量中,影响有效带宽的因素有很多因而其有效带宽较难计算。尽管如此PCIepcie总线数量提供的有效带宽还是远高于PCIpcie总线数量。PCIepcie总线数量也有其弱点其中最突出的问题是传送延时。

       PCIe链路使用串行方式进行数据传送然而在芯片内部,数据pcie总线数量仍然是并行的因此PCIe链路接口需要进行串并转换,这种串并转换將产生较大的延时除此之外PCIepcie总线数量的数据报文需要经过事务层、数据链路层和物理层,这些数据报文在穿越这些层次时也将带来延時。 

在基于PCIepcie总线数量的设备中×1的PCIe链路最为常见,而×12的PCIe链路极少出现×4和×8的PCIe设备也不多见。Intel通常在ICH中集成了多个×1的PCIe链路用来连接低速外设而在MCH中集成了一个×16的PCIe链路用于连接显卡控制器。而PowerPC处理器通常能够支持×8、×4、×2和×1的PCIe链路

       PCIepcie总线数量物理链路间的数據传送使用基于时钟的同步传送机制,但是在物理链路上并没有时钟线PCIepcie总线数量的接收端含有时钟恢复模块CDR(Clock Data Recovery),CDR将从接收报文中提取接收時钟从而进行同步数据传递。

      值得注意的是在一个PCIe设备中除了需要从报文中提取时钟外,还使用了REFCLK+和REFCLK-信号对作为本地参考时钟这个信号对的描述见下文。

        PCIe设备使用两种电源信号供电分别是Vcc与Vaux,其额定电压为3.3V其中Vcc为主电源,PCIe设备使用的主要逻辑模块均使用Vcc供电而┅些与电源管理相关的逻辑使用Vaux供电。在PCIe设备中一些特殊的寄存器通常使用Vaux供电,如Sticky Register此时即使PCIe设备的Vcc被移除,这些与电源管理相关的邏辑状态和这些特殊寄存器的内容也不会发生改变

       在PCIepcie总线数量中,使用Vaux的主要原因是为了降低功耗和缩短系统恢复时间因为Vaux在多数情況下并不会被移除,因此当PCIe设备的Vcc恢复后该设备不用重新恢复使用Vaux供电的逻辑,从而设备可以很快地恢复到正常工作状状态

 PCIe链路的最夶宽度为×32,但是在实际应用中×32的链路宽度极少使用。在一个处理器系统中一般提供×16的PCIe插槽,并使用PETp0~15、PETn0~15和PERp0~15、PERn0~15共64根信号线组成32对差汾信号其中16对PETxx信号用于发送链路,另外16对PERxx信号用于接收链路除此之外PCIepcie总线数量还使用了下列辅助信号。

        该信号为全局复位信号由处悝器系统提供,处理器系统需要为PCIe插槽和PCIe设备提供该复位信号PCIe设备使用该信号复位内部逻辑。当该信号有效时PCIe设备将进行复位操作。PCIepcie總线数量定义了多种复位方式其中Cold Reset和Warm Reset这两种复位方式的实现与该信号有关,详见第1.5节

        在一个处理器系统中,可能含有许多PCIe设备这些設备可以作为Add-In卡与PCIe插槽连接,也可以作为内置模块与处理器系统提供的PCIe链路直接相连,而不需要经过PCIe插槽PCIe设备与PCIe插槽都具有REFCLK+和REFCLK-信号,其中PCIe插槽使用这组信号与处理器系统同步

        在一个处理器系统中,通常采用专用逻辑向PCIe插槽提供REFCLK+和REFCLK-信号如图42所示。其中100Mhz的时钟源由晶振提供并经过一个“一推多”的差分时钟驱动器生成多个同相位的时钟源,与PCIe插槽一一对应连接

 PCIe插槽需要使用参考时钟,其频率范围为100MHz±300ppm处理器系统需要为每一个PCIe插槽、MCH、ICH和Switch提供参考时钟。而且要求在一个处理器系统中时钟驱动器产生的参考时钟信号到每一个PCIe插槽(MCH、ICH囷Swith)的距离差在15英寸之内。通常信号的传播速度接近光速约为6英寸/ns,由此可见不同PCIe插槽间REFCLK+和REFCLK-信号的传送延时差约为2.5ns。

 当PCIe设备作为Add-In卡连接茬PCIe插槽时可以直接使用PCIe插槽提供的REFCLK+和REFCLK-信号,也可以使用独立的参考时钟只要这个参考时钟在100MHz±300ppm范围内即可。内置的PCIe设备与Add-In卡在处理REFCLK+和REFCLK-信号时使用的方法类似但是PCIe设备可以使用独立的参考时钟,而不使用REFCLK+和REFCLK-信号

       在PCIe设备中,“Common Clock Configuration”位的缺省值为0此时PCIe设备使用的参考时钟與对端设备没有任何联系,PCIe链路两端设备使用的参考时钟可以异步设置这个异步时钟设置方法对于使用PCIe链路进行远程连接时尤为重要。

       茬一个处理器系统中如果使用PCIe链路进行机箱到机箱间的互连,因为参考时钟可以异步设置机箱到机箱之间进行数据传送时仅需要差分信号线即可,而不需要参考时钟从而极大降低了连接难度。

        当PCIe设备进入休眠状态主电源已经停止供电时,PCIe设备使用该信号向处理器系統提交唤醒请求使处理器系统重新为该PCIe设备提供主电源Vcc。在PCIepcie总线数量中WAKE#信号是可选的,因此使用WAKE#信号唤醒PCIe设备的机制也是可选的值嘚注意的是产生该信号的硬件逻辑必须使用辅助电源Vaux供电。

Drain信号一个处理器的所有PCIe设备可以将WAKE#信号进行线与后,统一发送给处理器系统嘚电源控制器当某个PCIe设备需要被唤醒时,该设备首先置WAKE#信号有效然后在经过一段延时之后,处理器系统开始为该设备提供主电源Vcc并使用PERST#信号对该设备进行复位操作。此时WAKE#信号需要始终保持为低当主电源Vcc上电完成之后,PERST#信号也将置为无效并结束复位WAKE#信号也将随之置為无效,结束整个唤醒过程

PCIe设备除了可以使用WAKE#信号实现唤醒功能外,还可以使用Beacon信号实现唤醒功能与WAKE#信号实现唤醒功能不同,Beacon使用In-band信號即差分信号D+和D-实现唤醒功能。Beacon信号DC平衡由一组通过D+和D-信号生成的脉冲信号组成。这些脉冲信号宽度的最小值为2ns最大值为16us。当PCIe设备准备退出L2状态(该状态为PCIe设备使用的一种低功耗状态)时可以使用Beacon信号,提交唤醒请求

      SMBus的最高pcie总线数量频率为100KHz,而I2Cpcie总线数量可以支持400KHz和2MHz的pcie總线数量频率此外SMBus上的从设备具有超时功能,当从设备发现主设备发出的时钟信号保持低电平超过35ms时将引发从设备的超时复位。在正瑺情况下SMBus的主设备使用的pcie总线数量频率最低为10KHz,以避免从设备在正常使用过程中出现超时

      在SMbus中,如果主设备需要复位从设备时可以使用这种超时机制。而I2Cpcie总线数量只能使用硬件信号才能实现这种复位操作在I2Cpcie总线数量中,如果从设备出现错误时单纯通过主设备是无法复位从设备的。 

       上文所述的SMBus和I2Cpcie总线数量的区别还是局限于物理层和链路层上实际上SMBus还含有网络层。SMBus还在网络层上定义了11种pcie总线数量协議用来实现报文传递。

        SMBus在x86处理器系统中得到了大规模普及其主要作用是管理处理器系统的外部设备,并收集外设的运行信息特别是┅些与智能电源管理相关的信息。PCI和PCIe插槽也为SMBus预留了接口以便于PCI/PCIe设备与处理器系统进行交互。

        在Linux系统中SMBus得到了广泛的应用,ACPI也为SMBus定义叻一系列命令用于智能电池、电池充电器与处理器系统之间的通信。在Windows操作系统中有关外部设备的描述信息,也是通过SMBus获得的

1149.1兼容,主要用于芯片内部测试目前绝大多数器件都支持JTAG测试标准。JTAG信号由TRST#、TCK、TDI、TDO和TMS信号组成其中TRST#为复位信号;TCK为时钟信号;TDI和TDO分别与数据輸入和数据输出对应;而TMS信号为模式选择。

Programming)功能处理器也可以使用JTAG接口进行系统级调试工作,如设置断点、读取内部寄存器和存储器等┅系列操作除此之外JTAG接口也可用作“逆向工程”,分析一个产品的实现细节因此在正式产品中,一般不保留JTAG接口

如上图所示,当Add-In卡沒有插入时处理器主板的PRSNT2#信号由上拉电阻接为高,而当Add-In卡插入时主板的PRSNT2#信号将与PRSNT1#信号通过Add-In卡连通此时PRSNT2#信号为低。处理器主板的热插拔控制逻辑将捕获这个“低电平”得知Add-In卡已经插入,从而触发系统软件进行相应地处理

        Add-In卡拔出的工作机制与插入类似。当Add-in卡连接在处理器主板时处理器主板的PRSNT2#信号为低,当Add-In卡拔出后处理器主板的PRSNT2#信号为高。处理器主板的热插拔控制逻辑将捕获这个“高电平”得知Add-In卡巳经被拔出,从而触发系统软件进行相应地处理

       不同的处理器系统处理PCIe设备热拔插的过程并不相同,在一个实际的处理器系统中热拔插设备的实现也远比图43中的示例复杂得多。值得注意的是在实现热拔插功能时,Add-in Card需要使用“长短针”结构

 如图43所示,PRSNT1#和PRSNT2#信号使用的金掱指长度是其他信号的一半因此当PCIe设备插入插槽时,PRSNT1#和PRSNT2#信号在其他金手指与PCIe插槽完全接触并经过一段延时后,才能与插槽完全接触;當PCIe设备从PCIe插槽中拔出时这两个信号首先与PCIe插槽断连,再经过一段延时后其他信号才能与插槽断连。系统软件可以使用这段延时进行┅些热拔插处理。

        PCIepcie总线数量采用了串行连接方式并使用数据包(Packet)进行数据传输,采用这种结构有效去除了在PCIpcie总线数量中存在的一些边带信號如INTx和PME#等信号。在PCIepcie总线数量中数据报文在接收和发送过程中,需要通过多个层次包括事务层、数据链路层和物理层。PCIepcie总线数量的层佽结构如图44所示

Layer),最终发送出去而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达Device Core

        事务层定义了PCIepcie总线数量使用pcie总線数量事务,其中多数pcie总线数量事务与PCIpcie总线数量兼容这些pcie总线数量事务可以通过Switch等设备传送到其他PCIe设备或者RC。RC也可以使用这些pcie总线数量倳务访问PCIe设备 

       事务层接收来自PCIe设备核心层的数据,并将其封装为TLP(Transaction Layer Packet)后发向数据链路层。此外事务层还可以从数据链路层中接收数据报文然后转发至PCIe设备的核心层。

        事务层的一个重要工作是处理PCIepcie总线数量的“序”在PCIepcie总线数量中,“序”的概念非常重要也较难理解。在PCIepcie總线数量中事务层传递报文时可以乱序,这为PCIe设备的设计制造了不小的麻烦事务层还使用流量控制机制保证PCIe链路的使用效率。有关事務层的详细说明见第6章

        数据链路层保证来自发送端事务层的报文可以可靠、完整地发送到接收端的数据链路层。来自事务层的报文在通過数据链路层时将被添加Sequence Number前缀和CRC后缀。数据链路层使用ACK/NAK协议保证报文的可靠传递

        物理层是PCIepcie总线数量的最底层,将PCIe设备连接在一起PCIepcie总線数量的物理电气特性决定了PCIe链路只能使用端到端的连接方式。PCIepcie总线数量的物理层为PCIe设备间的数据通信提供传送介质为数据传送提供可靠的物理环境。

Packer)这些序列用于同步PCIe链路,并进行链路管理值得注意的是PCIe设备发送PLP与发送TLP的过程有所不同。对于系统软件而言物理层幾乎不可见,但是系统程序员仍有必要较为深入地理解物理层的工作原理

1.4 数据链路的扩展

        PCIe链路使用端到端的数据传送方式。在一条PCIe链路Φ这两个端口是完全对等的,分别连接发送与接收设备而且一个PCIe链路的一端只能连接一个发送设备或者接收设备。因此PCIe链路必须使用Switch擴展PCIe链路后才能连接多个设备。使用Switch进行链路扩展的实例如图45所示

在PCIepcie总线数量中,Switch[2]是一个特殊的设备该设备由1个上游端口和2~n个下游端口组成。PCIepcie总线数量规定在一个Switch中可以与RC直接或者间接相连[3]的端口为上游端口,在PCIepcie总线数量中RC的位置一般在上方,这也是上游端口这個称呼的由来在Switch中除了上游端口外,其他所有端口都被称为下游端口下游端口一般与EP相连,或者连接下一级Switch继续扩展PCIe链路其中与上遊端口相连的PCIe链路被称为上游链路,与下游端口相连的PCIe链路被称为下游链路

       上游链路和下游链路是一个相对的概念。如上图所示Switch与EP2连接的PCIe链路,对于EP2而言是上游链路而对Switch而言是下游链路。

        在Switch中还有两个与端口相关的概念,分别是Egress端口和Ingress端口这两个端口与通过Switch的数據流向有关。其中Egress端口指发送端口即数据离开Switch使用的端口;Ingress端口指接收端口即数据进入Switch使用的端口。

Egress端口和Ingress端口与上下游端口没有对应關系在Switch中,上下游端口可以作为Egress端口也可以作为Ingress端口。如图45所示RC对EP3的内部寄存器进行写操作时,Switch的上游端口为Ingress端口而下游端口为Egress端口;当EP3对主存储器进行DMA写操作时,该Switch的上游端口为Egress端口而下游端口为Ingress端口。

        PCIepcie总线数量还规定了一种特殊的Switch连接方式即Crosslink连接模式。支歭这种模式的Switch其上游端口可以与其他Switch的上游端口连接,其下游端口可以与其他Switch的下游端口连接

PCIepcie总线数量提供CrossLink连接模式的主要目的是为叻解决不同处理器系统之间的互连,如图46所示使用CrossLink连接模式时,虽然从物理结构上看一个Switch的上/下游端口与另一个Switch的上/下游端口直接相連,但是这个PCIe链路经过训练后仍然是一个端口作为上游端口,而另一个作为下游端口

ID不在处理器系统1(2)内时,这些数据将被Crosslink端口接收並传递到对端处理器系统中。Crosslink对端接口的P2P桥将接收来自另一个处理器域的数据请求并将其转换为本处理器域的数据请求。

 使用Crosslink方式连接兩个拓扑结构完全相同的处理器系统时仍然有不足之处。假设图46中的处理器系统1和2的RC使用的ID号都为0而主存储器都是从0x开始编址时。当處理器1读取EP2的某段PCIpcie总线数量空间时EP2将使用ID路由方式,将完成报文传送给ID号为0的PCI设备此时是处理器2的RC而不是处理器1的RC收到EP2的数据。因为處理器1和2的RC使用的ID号都为0EP2不能区分这两个RC。

       由上所述使用Crosslink方式并不能完全解决两个处理器系统的互连问题,因此在有些Switch中支持非透明橋结构这种结构与PCIpcie总线数量非透明桥的实现机制类似,本章对此不做进一步说明

 使用非透明桥仅解决了两个处理器间数据通路问题,泹是不便于NUMA结构对外部设备的统一管理PCIepcie总线数量对此问题的最终解决方法是使用MR-IOV技术,该技术要求Switch具有多个上游端口分别与不同的RC互连目前PLX公司已经可以提供具有多个上游端口的Switch,但是尚未实现MR-IOV技术涉及的一些与虚拟化相关的技术

        即便MR-IOV技术可以合理解决多个处理器间嘚数据访问和对PCIe设备的配置管理,使用PCIepcie总线数量进行两个或者多个处理器系统间的数据传递仍然是一个不小问题因为PCIepcie总线数量的传送延時仍然是制约其在大规模处理器系统互连中应用的重要因素。

我要回帖

更多关于 pcie总线数量 的文章

 

随机推荐