接口技术【3】PCIe入门简介 -- 初识PCIe

PCIe介绍

PCIe将PCI和PCI-X的并行总线模型转移到了串行总线,但同时还保持跟以前的PCI并行总线兼容。

和其他很多高速串行接口一样,PCIe是双工的,可以同时发送和接收数据。在两个设备之间传输的叫做link链接,由一对或者多对收发线组成,每对收发线被称为lane信道,一个链接允许有1、2、4、8、12、16或者32个信道。一个链接中的信道数叫做链接宽度,链接宽度越高,链接的传输带宽越高,相应要求更大接口空间和更高的功耗。
PCIe link
PCIe lane

串行传输

上一篇说到并行接口的三个主要缺陷导致其速度无法提升:

  1. 从发送到接收的飞行时间必须小于时钟周期
  2. 到达接收端有时钟漂移
  3. 到达接收端有信号漂移

这些缺陷对于串行传输来说都不存在,因为一个时钟周期只传输一个信号,不需要保持同步,因此PCIe可以达到2.5GT/s和5GT/s,甚至之后的8GT/s。用来接收信号的时钟是根据信号流恢复出来的,而不是外接的,因此没有飞行时间和时钟漂移的问题,由于传输的只有一个bit,也就不需要担心信号漂移的问题了。

虽然串行传输能够克服并行传输中的问题,但串行也有自己的问题,不过我们可以通过一系列手段克服相应的问题。

带宽

把高速和多link并列组合,PCIe可以到达很高的带宽。最早的PCIe用8b/10b传输协议来保证平均电压为0,它输入时8bit,输出是相应的10bit,因此2.5GT/s的传输速度意味着0.25GB/s,由于PCIe中的link是双工的,收和发可以同时进行,因此实际速度还要乘2到0.5GB/s。

第二代的PCIe把时钟频率提高到两倍5GT/s之后带宽达到1GB/s;第三代的PCIe把时钟提高到8GT/s,同时把传输协议改成128b/130b,每个link的带宽提高到了2GB/s。
bandwidth

差分信号

每个lane使用两条查分信号线,同时送正和负信号(D+和D-),这么做使接口量变为原来的两倍,但拥有了两项高速信号传输的优势:高信噪比和低信号电压。
diff

差分信号的接收器比较正负信号的电压后确定信号是1还是0。由于正负信号线必须在相邻的接口上,他们的载体也必须设计的非常靠近,能够影响信号传输的因素会同时影响两根信号线,相减以后就抵消了噪声的影响,提高了信噪比。

降低信号电压就很好理解了,原本要D的电压,只要正负电压都是D/2就可以了。

无共同时钟

PCIe link不需要外接一个共同时钟,因为它使用了源同步信号模型,信号的传输方位接收方提供时钟。不过PCIe的link并没有包含一条传输时钟的信号线,时钟信号被包含在了经过8B/10B处理的数据信号流中。这听起来似乎比较难以想象,但确是可以比较方便实现的。
pll

使用一个PLL锁相环把输入信号作为参考时钟输入PLL,和自己产生的时钟信号比较,产生一个负反馈信号来调节自己产生的时钟信号频率和相位,直到两者达到平衡,这时PLL会传出锁定lock信号,而输出的时钟信号就准确的匹配上了传输信号的时钟。PLL会持续跟踪信号来调节时钟,因此温度和电压导致的时钟变化都会被实时跟踪。

PLL恢复时钟需要有信号持续输入,否则它产生的时钟会逐渐漂移离开原来的频率。为了防止这种情况,8b/10b协议会防止连续5个1或者连续5个0的情况发生。

一旦时钟被恢复,它将被用来接收串行信号并转换成并行信号。有一个问题是,可不可以用这个恢复出的时钟来驱动整个接收端,答案是不能,因为一旦信号传输被终止,接收端就彻底没有时钟了,所以接收端还是应该有自己的内部时钟。

Link和Lane

就像上面讲的一样,两个PCIe设备之间的物理连接叫做link,link由一根或者多根lane组成,每个lane包含查分信号输出和接收

扩展性能

使用更多的lane可以提高link的速率,lane的数量可以是1到32中的几种。这种扩展性能使得设计者可以衡量速率和功耗等的平衡

灵活的拓扑结构

和PCI总线不同,PCIe中的link是点对点传输,因为PCIe的link速度足够快。不过这就意味着PCIe需要一种扇出fan-out设备,这是用开关和桥接实现的,如下图所示
bridge
在拓扑结构的顶端是CPU,和PCI的拓扑结构一样是树状结构,没有回路。一些和拓扑结构的定义如下

Root Complex

这部分被称为RC或者Root,作为CPU、存储设备和PCIe设备之间连接的重要部分。它联系了CPU和其他所有设备。

Switches 和 Bridges

Switch提供了扇出和聚合能力,使更多PCIe设备可以接入拓扑结构中。Switch扮演路由的角色,根据数据包的地址决定了数据包要走的路径。

Bridge桥接提供了通往其他总线的接口,比如PCI和PCI-X,甚至其他PCIe总线。

PCIe Endpoints 和 Legacy PCIe Endpoints

PCIe Endpoint是PCIe中的实际设备,可以作为数据交换的发送方或者接收方。它们的特点是,在拓扑结构中处于末端节点,可以有一条下行路径(从Root传出)和上行路径(传到Root)。相比起来,Switch可以有多条下行路径(通向不同Endpoints),却只能有一条上行数据。

软件向上兼容

为了向上兼容PCI和PCI-X,对PCIe设备的配置header和对PCIe桥接的配置遵循PCI中的传统,有一点不同的是,桥接被汇总在Switch和Root中,不过PCI软件系统无法识别这种区别。现在还不详细介绍各个部分的具体含义,只放出示意图看他的header配置
header
在系统看起来,PCIe拓扑结构如下图所示,Root作为结构顶端,在软件中被视为PCI 0,而那些PCIe的接口被视为PCI桥接。它的内部结构不会真的像一个PCI总线,但对于软件来说是这样的。
topology
相应的,为了让Switch兼容PCI系统,它对于软件来说如下图所示。
switch

总结

对于PCIe的结构简介差不多了,下一篇开始介绍PCIe不同设备间的数据传输

  • 9
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sprd指的是Spreadtrum Communications Inc.,是一家位于中国的半导体公司。该公司专注于移动通信和物联网领域,为全球提供芯片解决方案和相关产品。sprd的产品覆盖了从2G到5G的全系列移动通信领域,还包括IoT、车载以及AI等领域,为手机、平板、智能穿戴等各类智能终端设备提供芯片解决方案和系统集成服务。 pcie-startup-syscons 是一个Linux内核模块,主要用于启动PCI Express子系统并初始化PCIe端点。PCIe(startup-syscons)是PCI Express架构的一部分,用于通过PCI Express总线连接设备,支持高速数据传输和低延迟操作。PCIe架构已经成为电脑和服务器上的主流总线架构,因为它的带宽高、响应快,具有良好的可扩展性和兼容性。 在操作系统中,pcie-startup-syscons 模块是自启动的,它会在内核启动时自动加载并初始化硬件设备。该模块的主要作用是启动PCI Express子系统,包括 PCIe端点和 PCIe总线,为用户提供一个稳定的硬件平台。同时,pcie-startup-syscons 还提供了一套API接口,用于管理PCI Express子系统和PCIe总线上接入的设备。 综上所述,sprd是一家专注于移动通信和物联网领域的半导体公司,提供芯片解决方案和相关产品;而pcie-startup-syscons是一个用于启动PCI Express子系统和初始化PCIe端点的Linux内核模块,具有高速数据传输和低延迟操作的优点,在处理器、电脑和服务器中普遍使用。在数字化时代,半导体技术和PCI Express总线架构的重要性越来越凸显,这两个领域的发展也将会给智能终端设备和数字化应用带来更多的机遇和挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值