百事通范文网
当前位置 首页 >专题范文 > 公文范文 >

2023年度PCIe基础知识文档【完整版】

发布时间:2023-05-25 14:20:06 来源:网友投稿

下面是小编为大家整理的2022年度PCIe基础知识文档【完整版】,供大家参考。

2022年度PCIe基础知识文档【完整版】

 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(Electro Magnetic Interference)。由于差分信号 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 正在开发过程中,预计在 2010 年发布。不同的 PCIe 总线规范所定义的总线频率和链路编码方式并不相同,如表 4-1 所示。

 表 4-1 PCIe 总线规范与总线频率和编码的关系 PCIe 总线规范 总线频率1[1] 单 Lane 的峰值带宽 编码方式 1.x 1.25GHz 2.5GT/s 8/10b 编码 2.x 2.5GHz 5GT/s 8/10b 编码 3.0 4GHz 8GT/s 128/130b 编码

  如上表所示,不同的 PCIe 总线规范使用的总线频率并不相同,其使用的数据编码方式也不相同。PCIe 总线 V1.x 和 V2.0 规范在物理层中使用 8/10b 编码,即在 PCIe 链路上的 10 bit中含有 8 bit 的有效数据;
而 V3.0 规范使用 128/130b 编码方式,即在 PCIe 链路上的 130 bit中含有 128 bit 的有效数据。

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

 表 4-2 PCIe 总线的峰值带宽 PCIe 总线的数据位宽 ×1 ×2 ×4 ×8 ×12 ×16 ×32 峰值带宽(GT/s) 5 10 20 40 60 80 160 由上表所示,×32 的 PCIe 链路可以提供 160GT/s 的链路带宽,远高于 PCI/PCI-X 总线所能提供的峰值带宽。而即将推出的 PCIe V3.0 规范使用 4GHz 的总线频率,将进一步提高 PCIe链路的峰值带宽。

 在 PCIe 总线中,使用 GT(Gigatransfer)计算 PCIe 链路的峰值带宽。GT 是在 PCIe 链路上传递的峰值带宽,其计算公式为总线频率×数据位宽×2。

 在 PCIe 总线中,影响有效带宽的因素有很多,因而其有效带宽较难计算,这部分内容详见第 8.4.1 节。尽管如此,PCIe 总线提供的有效带宽还是远高于 PCI 总线。PCIe 总线也有其弱点,其中最突出的问题是传送延时。

 PCIe 链路使用串行方式进行数据传送,然而在芯片内部,数据总线仍然是并行的,因此 PCIe链路接口需要进行串并转换,这种串并转换将产生较大的延时。除此之外 PCIe 总线的数据报文需要经过事务层、数据链路层和物理层,这些数据报文在穿越这些层次时,也将带来延时。本书将在第 8.4 节详细讨论 PCIe 总线的延时与带宽之间的联系。

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

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

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

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

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

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

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

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

 在一个处理器系统中,通常采用专用逻辑向 PCIe 插槽提供 REFCLK+和 REFCLK-信号,如图 4-2 所示。其中 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 设备配置空间的 Link Control Register 中,含有一个“Common Clock Configuration”

 位。当该位为 1 时,表示该设备与 PCIe 链路的对端设备使用“同相位”的参考时钟;
如果为 0,表示该设备与 PCIe 链路的对端设备使用的参考时钟是异步的。

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

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

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

 WAKE#是一个 Open 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 信号,提交唤醒请求。

 4 SMCLK 和 SMDAT 信号 SMCLK 和 SMDAT 信号与 x86 处理器的 SMBus(System Mangement Bus)相关。SMBus 于 1995年由 Intel 提出,SMBus 由 SMCLK 和 SMDAT 信号组成。SMBus 源于 I2C 总线,但是与 I2C总线存在一些差异。

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

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

 SMBus 还支持 Alert Response 机制。当从设备产生一个中断时,并不会立即清除该中断,直到主设备向 0b0001100 地址发出命令。

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

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

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

 描述信息,也是通过 SMBus 获得的。

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

 JTAG 允许多个器件通过 JTAG 接口串联在一起,并形成一个 JTAG 链。目前 FPGA 和 EPLD可以借用 JTAG接口实现在线编程 ISP(In-System Programming)功能。处理器也可以使用 JTAG接口进行系统级调试工作,如设置断点、读取内部寄存器和存储器等一系列操作。除此之外JTAG 接口也可用作“逆向工程”,分析一个产品的实现细节,因此在正式产品中,一般不保留 JTAG 接口。

 6 PRSNT1#和 PRSNT2#信号 PRSNT1#和 PRSNT2#信号与 PCIe 设备的热插拔相关。在基于 PCIe 总线的 Add-in 卡中,PRSNT1#和 PRSNT2#信号直接相连,而在处理器主板中,PRSNT1#信号接地,而 PRSNT2#信号通过上拉电阻接为高。PCIe 设备的热插拔结构如图 4-3 所示。

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

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

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

 如图 4-3 所示,PRSNT1#和 PRSNT2#信号使用的金手指长度是其他信号的一半。因此当 PCIe设备插入插槽时,PRSNT1#和 PRSNT2#信号在其他金手指与 PCIe 插槽完全接触,并经过一段延时后,才能与插槽完全接触;
当 PCIe 设备从 PCIe 插槽中拔出时,这两个信号首先与

 PCIe 插槽断连,再经过一段延时后,其他信号才能与插槽断连。系统软件可以使用这段延时,进行一些热拔插处理。

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

  PCIe 总线的层次组成结构与网络中的层次结构有类似之处,但是 PCIe 总线的各个层次都是使用硬件逻辑实现的。在 PCIe 体系结构中,数据报文首先在设备的核心层(Device Core)中产生,然后再经过该设备的事务层(Transaction Layer)、数据链路层(Data Link Layer)和物理层(Physical Layer),最终发送出去。而接收端的数据也需要通过物理层、数据链路和事务层,并最终到达 Device Core。

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

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

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

 2 数据链路层

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

 PCIe 总线的数据链路层还定义了多种 DLLP(Data Link Layer Packet),DLLP 产生于数据链路层,终止于数据链路层。值得注意的是,TLP 与 DLLP 并不相同,DLLP 并不是由 TLP 加上Sequence Number 前缀和 CRC 后缀组成的。

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

 物理层是 PCIe 体系结构最重要,也是最难以实现的组成部分。PCIe 总线的物理层定义了LTSSM(Link Training and Status State Machine)状态机,PCIe 链路使用该状态机管理链路状态,并进行链路训练、链路恢复和电源管理。

 PCIe 总线的物理层还定义了一些专门的“序列”,有的书籍将物理层这些“序列”称为PLP(Phsical Layer Packer),这些序列用于同步 PCIe 链路,并进行链路管理。值得注意的是 PCIe设备发送 PLP 与发送 TLP 的过程有所不同。对于系统软件而言,物理层几乎不可见,但是系统程序员仍有必要较为深入地理解物理层的工作原理。

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

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

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

 在上图所示的 Switch 中含有 3 个端口,其中一个是上游端口(Upstream Port),而其他两个为下游端口(Downstream Port)。其中上游端口与 RC 或者其他 Switch 的下游端口相连,而下游端口与 EP 或者其他 Switch 的上游端口相连。

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

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

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

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

 处理器系统 1 与处理器系统 2 间的数据交换可以通过 Crosslink 进行。当处理器系统 1(2)访问的PCI总线域的地址空间或者Requester ID不在处理器系统1(2)内时,这些数据将被Crosslink端口接收,并传递到对端处理器系统中。Crosslink 对端接口的 P2P 桥将接收来自另一个处理器域的数据请求,并将其转换为本处理器域的数据请求。

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

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

 使用非透明桥仅解决了两个处理器间数据通路问题,但是不便于 NUMA 结构对外部设备的统一管理。PCIe 总线对此问题的最终解决方法是使用 MR-IOV 技术,该技术要求 Switch 具

 有多个上游端口分别与不同的 RC 互连。目前 PLX 公司已经可以提供具有多个上游端口的Switch,但是尚未实现 MR-IOV 技术涉及的一些与虚拟化相关的技术。

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

推荐访问:PCIe基础知识文档 基础知识 文档 PCIe

相关文章:

Top