【IT之家学院】从Ryzen 3000说起:可能是东半球最易懂的PCIe科普

2019-06-28 18:30IT之家 - 麦子

月初结束的Computex期间,支持PCIe 4.0标准的产品相继问世,包括各大厂商推出的使用群联PS5016-E16主控的PCIe 4.0 SSD,以及AMD全新Ryzen 3000系列处理器和X570芯片组,各大板卡厂商也纷纷公布X570主板。PCIe 4.0是消费级产品中最新的PCIe标准,相较于现在主流的PCIe 3.0带宽翻倍,×16双向带宽可达到约64GB/s。

如上,AMD发布了支持PCIe 4.0的全系新品,PCIe 5.0规范也已制定完成,打算攒(cuán)机的小伙伴可能比较关注此类报导,也对PCIe有所了解。但PCIe的标准、迭代、带宽、速率、通道数等规格往往很容易搞混,今天咱们来捋一捋PCIe。

本文篇幅较长,内容大致分为以下几部分;

  • PCIe标准的概念及总线标准回顾

  • PCIe主流物理接口

  • PCIe传输速率

  • PCIe物理接口与传输速率的对应关系

  • 兼容性

  • PCIe通道在CPU和主板上的分配

一、PCIe标准的概念及总线标准回顾

1、PCIe和总线

PCIe全称Peripheral Component Interconnect Express,意为“高速串行计算机扩展总线标准”。顾名思义,PCIe是一种总线标准,所以我们要先了解一下什么是总线。

总线(Bus)是计算机组件之间传送信息的公共通信干线,以一种通用的方式为各组件提供数据传送和控制逻辑。命名为“Bus”是因为总线就像公共汽车一样,在主板上按照既定路线来回不停地搬运着数据,数据的最小单位为比特(bit)。我们可以简单理解为固定的通用数据传输线路。

▲蓝色通道即为总线

PCIe就是一种总线标准,规定了总线的控制方式、传输协议、编码方式、硬件接口、规格、带宽和速率等,主要用于CPU、主板(芯片组/南桥/PCH)、扩展设备之间的数据传输。

(注:下文中和总线相关的部分,不再区分主板、芯片组、南桥、PCH)

PCIe是用以取代PCI总线标准而建立的,既然谈到了PCI标准,我们就简单回顾一下总线标准的主要发展历史。

2、ISA

总线的概念最早来自IBM 1981年在PC/XT电脑上使用的系统总线,后被重命名为ISA总线,全称“Industry Standard Architecture”,工业标准体系结构总线。之后8位的ISA被称为XT标准,16位的ISA被称为AT标准;AT标准工作频率为8MHz,最大传输速率为16MB/s。

▲ISA插槽

图自ExplainingComputers

3、MCA

1987年IBM打算用MCA总线取代ISA,MCA全称“Micro Channel Architecture”,意为微通道体系架构体系,为32位,不兼容ISA。虽最终未获得市场认可,但开创了扩展设备“即插即用”的先河,直接启发了后来的PCI标准。

4、EISA

1988年EISA发布,称为“扩展工业标准结构”,Enchanted-ISA。将AT标准扩展到32位,工作频率为约8.33MHz,最大带宽约为33MB/s。

▲EISA扩展卡

图自Wikipedia

5、VLB

1992年,视频电子标准协会(VESA)推出了VESA总线标准,作为ISA的扩充标准,32位。由于这是针对视频传输的局部/本地总线(Local Bus),常被称为VLB。

▲VLB插槽(棕色插槽+黑色插槽)

图自Wikipedia

▲VLB扩展卡

图自Wikipedia

6、PCI

PCI标准同样诞生于1992年,全称“Peripheral Component Interconnect”,意为外设部件互连标准。最早由英特尔发布PCI 1.0标准,后由PCI-SIG(外围部件互连专业组)接管,于次年发布PCI 2.0标准规范。

PCI由ISA发展而来,同样为一种并行总线标准。PCI2.0标准的数据位宽为64位,工作频率为33MHz,传输速率可达264MB/s。

7、AGP

AGP全称Accelerated Graphics Port,加速图形端口,AGP 1.0发布于1996年,基于PCI标准发展来的针对图形加速卡的高速端口(Port)。AGP为点对点传输通道,仅供显卡使用。

AGP采用32位传输,规格分为1×、2×、4×、Pro、8×等,最高传输速率可超过2GB/s达到2133MB/s。由于代际之间工作电压不同,隔代互不兼容。

▲同时搭载ISA、PCI和AGP插槽的主板

图自ExplainingComputers

8、PCI-X

1998年发布的PCI-X标准是PCI的改进版本,总线宽度为64位,通过增加针脚数量来提高带宽,支持共享带宽,PCI-X 2.0最高传输速率可达4.2GB/s,仍为并行传输。

▲PCI-X扩展卡

图自Wikipedia

9、PCIe

时间来到2001年,英特尔公布用以取代PCI和AGP标准的新一代总线标准,命名为“3GIO(3rd Generation I/O)”,后改名为“PCI Express”,简称“PCIe”或“PCI-E”,于2003年正式推出。

(注:下文用“PCIe”表述。)

和上述所有标准不同,PCIe标准采用串行传输。所谓并行传输,指同一时刻传输超过一个bit,串行传输指同一时刻仅传输一个bit。乍看下可能有些违反常识,为何摒弃看起来更快的并行传输而采用串行传输?

是这样的,在数据通道工作频率普遍不高的时代,并行传输的效率高于同频率的串行传输;但随着传输通道工作频率的不断提升、位宽的不断增加,并行传输物理接口就要做得越来越大,也更难以消除通道间的相互影响。这时物理接口可以做到比较小、可以将工作频率提上更高的串行传输自然就“上位”了。

PCIe是目前最主流的总线标准,除了显卡,声卡、网卡、USB/SSD扩展卡等均可通过PCIe完成计算机的内部高速通信。如今市面上的中高端主板几乎所有扩展接口均为PCIe接口,中低端主板上也逐渐难觅PCI接口。

二、PCIe主流物理接口

1、物理接口

先来看一下PCIe的物理接口长什么样。

从PCIe 1.0开始,其规格就分为×1、×2、×4、×8、×12、×16、×32。其中×2仅作为内部规格没有对应的插槽(Slot),×12、×32规格的接口极为罕见不会出现在消费级产品上,所以主流PCIe插槽有×1、×4、×8、×16四种,最常见为×1和×16,至于×4和×8去哪了下文会提到。Mini PCIe(×2)接口现主要出现在笔记本产品上,且一般被无线网卡占用,此处不谈。

▲常见PCIe插槽

▲对应扩展卡针脚

▲PCIe×16显卡

▲PCIe×32插槽

2、规格

PCIe接口分为供电和数据两部分,无论哪种规格的接口供电针脚(Pin)数量均为22个,最高可提供75W的电力。此外,×1、×4、×8、×16全长分别为25mm、39mm、56mm、89mm,数据区针脚数量分别为14、42、76、142个。

三、PCIe传输速率

之前我们提到过,PCIe中的“e”为Express,在此表“快速”之意,所以传输速度上相较于PCI优势明显,这也正是其能取代PCI标准的重要因素之一。

PCIe标准中,用以传输数据的线路称为“通道(Lane)”,×1表示接口有一条PCIe通道,×4表示有4条,以此类推;每条通道速率相等,可以叠加。

这张表列出了PCIe标准不同代际和规格的速率,表达的信息比较多,有些概念理解起来会比较绕,我们一项一项来看,小编尽量表达清楚。

▲PCIe标准速率

  • 第一列RAW BIT RATE代表原生速率,以PCIe 1.0为例,每条Lane的速率为2.5GT/s。

GT/s是用以描述物理层通信协议速率的单位,意为Giga Transmission per second(千兆传输/秒),指每秒完成多少次数据传输,与Gbps(Gb/s)并没有直接对应的换算关系,需要根据具体的物理层通信协议判断。

(注:下文不对“Gbps”“Gb/s”作区分。)

套用在PCIe标准上,因为采用串行传输,所以PCIe 1.0单条通道的数据传输速率为2.5Gb/s。即为,每秒双向最多可传输“2.5G(2.5×十亿)”个bit。

之所以加这么多定语,是因为这个2.5Gb/s并不是我们真正能用到的速率,也就是说我们的设备跑不到这么高的速率。PCIe标准采用的编码方式需要在数据前后各占用一个bit用以识别开始和终止。PCIe 2.0及之前的版本采用8 bit/10 bit的编码方式,即传输8 bit的(有意义的)数据,需要占用10 bit的传输量。编码方式造成的损耗称为编码损耗,PCIe 2.0及之前的编码损耗率为20%,现在主流的PCIe 3.0及之后的版本采用128 bit/130 bit的编码方式,损耗率约为1.5%,几乎可以忽略不计。

了解了编码损耗之后,下面两项指标就容易理解了,仍以PCIe 1.0为例

  • 第二列LINK BW代表链路带宽(Brandwidth),即为实际可用的数据传输带宽。

2.5GT/s根据串行传输的特性换算成2.5Gb/s,算上编码损耗,即为可用的数据传输带宽:

2.5GT/s × 1b/T × 8b/10b = 2Gb/s

  • 第三列是换算为我们比较好理解的单位(b→B):

2Gb/s ÷ 8b/B × 1000M/G = 250MB/s

(注:G=10∧9、M=10∧6)

用第一列数据算上编码损耗,除以10再将单位换位MB/s也是同样的结果。

  • 最后一列TOTAL BW X16代表×16规格下(双向)总带宽/速率。

用单条速率计算即可:

2Gb/s ÷ 8b/B × 16 × 2 = 8GB/s

250MB/s ÷ 1000M/G × 16 × 2 = 8GB/s

表中“~”表示大约,实际略小于表中数据,因编码损耗很小没有计入。

下表中详细展示了PCIe各版本各规格的单向带宽/速率。

▲PCIe标准速率

大家可能都注意到,新版本带宽翻倍是PCIe的优良传统。

▲总线带宽发展史

总结一下,打个比方,每个bit的数据是一辆小车,PCIe总线是车道,每条Lane是一条双向车道,PCIe版本规定了速度上限,由此就很好理解了,不考虑编码损耗的情况下,车道越多,允许的车速越快,通过的数据自然也就越多。

四、PCIe物理接口与传输速率的对应关系

判断接口的速率

看完物理接口和速率,再来看一下他们之间的对应关系。

了解了上述内容,很容易就可以想到,同一版本/代际内,对于插槽:

  • 速率越快,则针脚越多;

  • 针脚越多,则插槽越长;

  • 速率越快,则插槽越长。

对于设备:

  • 速率越快,金手指数量越多,长度越长。

对吗?对。

为什么还要单拎出来?因为对于插槽来说,逆命题不全成立,所以提一下。

对于扩展设备来讲,命题成立,反之亦然。

对于主板上的插槽来讲,有一点要注意,插槽长并不代表针脚多、速率快。

举个例子,下图是一张MSI MEG Z390 Godlike,主板上的PCIe插槽包括一个×1长度插槽和四个×16长度插槽,我们之前已经了解到,×16表示有16条PCIe通道,那个这五个PCIe插槽是否有65条通道?

▲MSI MEG Z390 Godlike

其实并没有,事实很残酷,远远没有,物理上讲只有33(16+4+1+8+4)条,可以同时使用的更少,最多21(16+4+1)条。

如何判断插槽速率呢,最简单的就是看说明书,说明书上会注明每个插槽的速率。

▲MSI MEG Z390 Godlike说明书中PCIe插槽及速率部分

PCH可以理解为南桥/芯片组,下同

我们还可以这样判断,主流平台(Z系列主板及以下,下同)上:

  • 首先,任何×1长度插槽内只有一条通道;

  • 其次,×16长度插槽按照与CPU的距离,离CPU最近的×16长度插槽内,针脚一定是满的,即有16条通道,且是直连CPU的(下文会讲到)。

  • 再次,次远的×16长度插槽中最多有一半的针脚,即为×8速率,8条通道,高端主板可直连CPU;

  • 再次,再远的×16长度插槽中一般为×4速率,4条通道,最多8条,高端主板可直连CPU;

  • 最后,最远的×16长度插槽中一般为×4或×8速率,连接到芯片组;

  • 其他稍低端主板没有这么多×16长度插槽,但判断依据和顺序是一致的。

还有一些方法可以快速判断插槽的速率,我们知道针脚的数量和速率的快慢是对应的,那么大部分主板只要看背面的针脚数量,就可以准确判断通道数和速率了。

▲从主板背部的针脚可以判断PCIe插槽速率

对于背部有金属盖板的主板,仔细观察插槽,也可以看到针脚的多少。

▲主板背部覆盖“装甲”

▲可以观察到针脚的数量

至于分明只有×8或×4的速率,为何要做成×16长度的插槽,第一是为了好看,清一色的×16长度插槽确实比参差不齐的×8/×4要好看;第二就是下面我们要提到的兼容性。结合这两点也可以填上之前的坑,×8/×4长度插槽未能成为主流的原因正是可以通过阉割×16插槽针脚的方式实现,保留×16插槽的长度也可以实现更好的兼容性。

五、兼容性

PCIe标准自面世以来,已经有四代应用于消费级产品,最新的PCIe 5.0规范也已制定完毕,虽然有众多不同的版本和规格,但PCIe标准的兼容性是极好的。

总结来讲,PCIe各版本各规格相互兼容,取最低版本最低规格的速率。

比如:

  • PCIe 3.0的卡插在4.0的槽中可以正常工作在3.0的速率下;

  • PCIe 4.0的卡插在3.0的槽中可以正常工作在3.0的速率下;

  • ×1的卡插在×16的插槽中可以正常工作在×1的速率下;

  • ×16的卡插在×1的插槽中可以正常工作在×1的速率下;

以此类推。

大家对上面几个例子可能有些困扰,前三例比较好理解,最后一例长卡如何插入短槽中呢?

有些PCIe卡槽尾端不封闭,称为“Open-ended Slot”,较高规格的卡便可以插入到较短的插槽中了。

来看具体的例子:

ROG MAXIMUS XI HERO(WiFi)这款主板带有三个×1长度插槽,全部都是尾端不封闭的插槽,以此来增强兼容性的好处就是,个别情况下PCIe插槽数量不够时,可以在短槽内插入长卡,当然只能跑在较低的速率上。

▲开放式端口

总结来讲,PCIe标准的兼容性极好,几乎各版本各规格都可以相互兼容,通道不够时有多少用多少通道富余时用多少取多少

另外提一嘴,PCIe标准允许通过物理方式(贴胶带等)屏蔽高速率扩展卡的针脚,以此来降低速率,当然只有在某些测试时才会用到……

六、PCIe通道在CPU和主板上的分配

1、通道数

上文在讲到如何判断接口和速率时,有提到通道/总线的数量以及是否直连CPU的问题,拎出来单讲是因为明白这一点,对于选择CPU、主板、显卡/SSD等扩展设备的搭配十分重要。

在英特尔和AMD平台上,可供我们用来扩展设备的总线都由两部分组成,分别由CPU和芯片组提供。

这里以英特尔平台为例主流平台上

三代以来,CPU最多提供16条PCIe 3.0通道,Z270及之后的芯片组最多提供24条PCIe 3.0通道,由芯片组扩展出的通道所传输的数据,最终也要交由CPU处理,所以芯片组与CPU之间也有一条总线用以通信,英特尔平台称之为DMI,本质上仍是PCIe通道,版本与芯片组一致,为×4带宽,即通过芯片组扩展的所有设备速率总和上限为PCIe 3.0×4

看个具体的例子,Intel Core i9 9900K + Z390的组合,CPU提供16条PCIe 3.0通道,芯片组提供24条PCIe 3.0通道,芯片组与CPU间通过DMI 3.0×4总线进行通信,速率相当于PCIe 3.0×4。

▲Intel Core i9 9900K最多提供16条PCIe 3.0通道

下图中展示了英特尔平台总线拓扑图,从中可以直观地看出,直连CPU的通道性能要好于连接到芯片组的通道,也可以看出芯片组提供的通道用途十分广泛,包括SATA、USB、M.2在内的众多接口均需要占用PCIe通道,这就涉及到总线的拆分与合并,简单来说就是,这些通道该怎么分。

▲八代酷睿平台总线

2、CPU总线的拆分和芯片组总线的合并

先来看比较好理解的总线合并,仍接上例,芯片组提供的24条PCIe通道均为×1速率,如有接口需要支持PCIe 3.0×4,如M.2硬盘插槽,则将24条×1通道中相邻的4条合并,即可,×8的显卡插槽、USB接口、SATA插槽等同理。

当然,PCIe通道在主板上是“稀缺资源”,对于一些提供丰富接口的主板来说,CPU和芯片组提供的PCIe通道都是不够用的,经常需要不同接口共享带宽,这时就需要根据需求设计方案,按需将通道分配给不同的接口,以及规定通道不够时,哪些接口需要将通道让给其他接口。实现这些功能的元器件称为Switch,一般译为开关或转换器,就是下面的这些。

▲Switch

Switch的逻辑很简单,对芯片组提供的通道,Switch决定将其并到哪个接口,对CPU提供的通道相反,Switch决定将其拆分到哪个插槽。

▲并非所有插槽都同时可用

文字为自变量,符号为因变量

接下来看CPU PCIe通道的拆分,首先需要说明的是,CPU总线拆分仅在英特尔的Z系列主板和AMD的X系列主板上受支持,英特尔的H系列和B系列主板以及AMD的A系列和B系列主板不支持,距离CPU最近的显卡插槽独显×16的带宽,即不支持显卡SLI或CrossFire。以及,需要CPU支持,英特尔官网都查得到。

▲Intel Core i9 9900K支持的PCIe配置

英特尔主流CPU最多提供16条PCIe 3.0通道,我们上面提到过,默认情况下全都分给离CPU最近的×16显卡插槽,但有些主板会提供三个甚至四个×16长度插槽,但CPU提供的PCIe通道只有16条,除去连接到芯片组的,只能拆分。

①MSI Z370 Gaming Pro Carbon

不同主板的拆分策略不同,以MSI Z370 Gaming Pro Carbon为例,主板有三个×16长度插槽,两个PCIe通道直连CPU,最高速率分别为×16和×8,最后一个连接到芯片组,速率为×4。

▲MSI Z370 Gaming Pro Carbon

▲MSI Z370 Gaming Pro Carbon说明书中关于PCIe插槽速率和CPU总线拆分部分

当第一个插槽插卡,第二个插槽不插卡时,第一个插槽可提供×16的速率;

当第二个插槽插卡时,四颗Switch会将后面八条通道切换到第二个插槽,两个插槽均提供×8速率。

②MSI MEG Z390 ACE

更高端一些的主板,会有更多×16长度插槽的通道直连CPU,玩法也更多,以MSI MEG Z390 ACE为例,主板有三个×16长度插槽,通道全部直连CPU,最高分别提供×16、×8、×4速率。

▲MSI MEG Z390 ACE

▲MSI MEG Z390 ACE说明书中关于PCIe插槽速率和CPU总线拆分部分

除上例中的情况外,当第三个插槽也插卡时,另外两颗Switch将后四条通道切换至第三个插槽,三个插槽分别提供×8、×4、×4速率。

③MSI MEG Z390 GODLIKE

再看MSI MEG Z390 GODLIKE,主板有四个×16长度插槽,三个直连CPU,最高速率分别为×16、×4、×8,主板背部有两颗额外的Switch,除与上两例部分情况相同外,当第一个和第三个插槽插卡,第二个插槽不插卡时,通过八颗Switch,将后八条通道切换至第三个插槽,第一个、第三个插槽均提供×8速率,这样的设定应该是出于散热的考虑。

▲MSI MEG Z390 GODLIKE

▲MSI MEG Z390 GODLIKE说明书中关于PCIe插槽速率和CPU总线拆分部分

3、判断方法

最简单的方法,还是看说明书,随产品附带的丢了不要紧,官网都下得到,说明书会详细地介绍每个插槽的PCIe通道直连到哪个芯片、最高速率和带宽共享情况,一目了然,上面我们已经看了很多例子了。

不想看说明书也可以判断,上文中已经讲了判断是否直连CPU和插槽速率的方法,此外,根据Switch的数量和位置,便可以判断出通道分配情况:

  • 周围有Switch的×16长度插槽,和其下面一个×16长度插槽,PCIe通道都是直连CPU的;

  • 一般一颗Switch可控制两条通道,将末尾的通道切换至下一个插槽。

▲MSI MEG Z390 ACE

  • 一些主板上会标注出哪些插槽直连CPU,以及大部分主板上直连CPU的插槽,用料要比连接芯片组的插槽好一些。

▲主板标注插槽直连CPU

  • 想要查看总线的使用情况,可以使用AIDA64或GPU-Z等软件查看,或者在BIOS/UEFI查看。

▲AIDA64中查看总线使用情况

▲GPU-Z中查看显卡使用的总线接口

4、一些共享带宽建议

当然,并不是每个人都需要将所有PCIe通道都留给显卡,事实上绝大多数显卡远不能吃满PCIe 3.0×16的带宽,包括NVIDIA RTX 2080 Ti,Techpowerup游戏测试数据显示NVIDIA RTX 2080Ti工作在PCIe 3.0×16下平均仅比工作在×8下提升2%~3%,性能差距非常小,且分辨率越高差距越小。

▲4K分辨率下性能相对表现

灰色表示未吃满PCIe 3.0×8

图自Techpowerup

所以CPU直连总线的拆分除了显卡SLI或CF外,还可以用来扩展网卡、PCIe SSD等,更充分地利用直连CPU的通道。毕竟2080 Ti也只有2%~3%的性能损耗,分出来的×8带宽扩展出两块直连CPU的NVMe SSD岂不美哉。

▲PCIe 3.0×4 SSD

▲M.2 to PCIe×16转接卡

(4×M.2 PCIe×4 to PCIe×16)

少数主板上也会有走直连CPU通道的M.2插槽,当然在Z系列主板上,要和临近的PCIe插槽共享带宽,也就是要和第一个×16长度插槽抢带宽。

一般走直连CPU通道的M.2插槽会标注不支持SATA,走连接芯片组通道的M.2插槽会标注支持SATA。

▲左为直连CPU,右为连接到芯片组

图自PCEVA

精打细算如何分配CPU和芯片组提供的PCIe通道当然只是主流平台要考虑的事,发烧平台就要阔气得多,Intel Core i9-9980XE可以提供44条直连PCIe通道,AMD Ryzen Threadripper 2990WX可提供64条直连PCIe通道。

▲Intel Core i9 9980XE可提供44条PCIe 3.0通道

▲AMD Ryzen Threadripper 2990WX可提供64条PCIe 3.0通道

写在最后

想体验PCIe 4.0产品的A饭们再过十几天就可以出手了,5.0的规范已经完成,6.0的制定也已上路。看起来新标准更新得很快,其实“全靠友商衬托”,PCIe 3.0标准2010年便已面世,相关产品至今也已服役超过8年时间,4.0的“难产”让5.0显得特别迅速。

▲PCIe 6.0标准提上日程,带宽翻倍

目前绝大多数产品都不能吃满PCIe 3.0带宽,AMD确认老主板不给用PCIe 4.0,加之英特尔对PCIe 4.0的态度,有观点认为未来的新产品中,会出现两代标准长期共存的局面。就目前而言,想尽快体验新标准的产品还是要YES起来。

不过也正像英特尔所言,当下新的标准对大多数显卡的提升效果甚微,支持PCIe 4.0的SSD新品也鲜有能跑到5GBps的,和理论速度还有一定差距,所以如果你并不急着拥抱PCIe 4.0,不妨等等。

如果大家有哪些更好的见解或有问题需要解答,可以在评论区或极客圈讨论交流。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。

文章价值:
人打分
有价值还可以无价值
置顶评论
    热门评论
      全部评论
      一大波评论正在路上
        取消发送
        软媒旗下人气应用

        如点击保存海报无效,请长按图片进行保存分享