为什么Intel的CPU提供的PCI-E通道数量那么少?

@李响

一句话结论:主流平台是因为成本,服务器平台是因为要考虑多路系统,所以不能无限增加CPU插槽的触点数量。

增加PCI-E通道很简单,起码在主流平台上并不是什么难事,只要Intel愿意付出成本代价。就拿9900K和2700X对比一下好了:

9900K是16x PCIe,4x DMI(等同PCIe),CPU接口是LGA1151。

2700X是16x + 4x + 4x PCIe,除了16x用于显卡外,4x用于芯片组,4x用于存储(表现为2x NVMe+SATA×2,或者4x NVMe ),还有USB3×4和SATA×2。CPU接口是AM4,代价则是针脚数量从AM3的941增加到1331。

Intel的产品线还有28/44x PCIe的Core X和Xeon-W(3175X这个变态除外),除了PCIe通道增加外,还增加了双内存通道总计4内存通道。代价则是使用LGA2066插槽,触点数量增加了900多个。

再往上一级是Xeon-W 3175X和Xeon可扩展,内存通道增加到6通道,Xeon可扩展有用于多路CPU间互联的UPI通道(最多3根,没找到UPI具体细节,但UPI的前代QPI单通道相当于20x PCIe[1]),单个CPU的PCIe通道数没有增加,但是用于双路及以上系统的至强,除了其中一路需要保留4x DMI以外,其它CPU可以把4x DMI配置为PCIe,总计48x PCIe。代价是使用LGA3647插槽,触点数量增加1500+。

看看使用这几种接口的CPU的对比:

所以增加PCIe通道真的是分分钟的事情,只要增加触点就好。然而随之而来的问题是CPU封装体积的增大,插槽成本的提高,主板布线难度提升等等。在动手解决这些问题之前,必须考虑的一个问题就是:值不值得,或者说需要不需要这么做?

主流平台除了显卡需要16x之外还有什么设备对PCIe通道渴求呢?其实不算少,NVMe固态硬盘,万兆网卡,雷电接口设备,磁盘阵列卡之类的高速设备都需要。现在Intel的方案是通过ICH提供最多24x PCIe通道(Z370/Z390),不过因为都需要通过4x DMI连接CPU,所以这24x PCIe只能配置为x1/x2/x4三种组合而不能配置为x8/x16。同时,这些设备共享等同4x PCIe通道的4x DMI通道提供的带宽。这样似乎会造成数据堵塞?的确是这样。

然而一个能放100辆车的车库不会把出口修成100辆车宽,能让两辆车同时一进一出就足够了——虽然会偶尔发生堵塞需要排队。同样的道理,以现在的应用环境,主流平台上这些设备很少会争抢带宽,4根DMI通道足够了——当然也难免会出现堵塞的时候。毕竟4x DMI/PCIe可以提供3.69GB/s的理论带宽,实测中4x的NVMe固态持续读写速度也有超过3.5GB/s的。也就是说一个Win10 ISO大概一秒钟就传输完了,一般的家用、商用日常需要传输这么大数据发生的几率是比较罕见的。

你说你有好多高速设备,而且这些设备需要经常和CPU/内存交换数据,导致数据堵塞的情况频繁出现?要是主流平台就能满足要处理这么多数据的客户,HEDT平台卖给谁?

那么同样是主流平台,为什么AMD就那么大方呢?我的看法是因为AMD穷。Zen出来之前,CPU被Intel压制了有将近十年了,显卡也不争气,不得不连GF都卖掉了。AMD也造不出比单核性能比Intel更强的CPU,只能以核心数取胜。四核的Zen卖不出i5的价格,8核的Zen卖得比i7贵一点点很多人就觉得可以接受了不是?

然鹅单个8核良品率又低,只能造良品率高点的四核,两个胶水粘一起的样纸…因为穷,不合格的Die挑一挑还有些能屏蔽一个核心剩三个好的,别浪费了,粘一起当六核卖。

当然,胶水归胶水,性能还是要的,为了两个CCX互联性能,搞了个Infinity Fabric出来。既然搞了,就什么都往上堆了,内存控制器、IO Hub一股脑全连进来。说点题外话,IF跟内存一个频率,两个CCX交互全看它,这是锐龙用高频内存性能提升很明显的重要原因。下图中,UClk/LClk/MemClk分别为内存控制器时钟频率、IF工作频率和内存工作频率,这三个频率是一致的。

还是因为穷,一个方案要到处用。不是所有场合都可以再连一块南桥的,起码现在便携本就接受不了这样的方案,需要一块SoC全搞定。既然轻薄本方案需要集成南桥,桌面平台也只能集成进来了。上面8核锐龙图中的IO Hub就是南桥,前面提到的16x+4x+4x PCIe 3(事实上这还是被阉割的,一对CCX的完整版是可以提供16x+16x共32x PCIe)、SATA×2,、USB 3.0×4都是由IO Hub提供。当然,这个IO Hub提供的扩展能力对桌面平台来说就有点不够了,再拿块N年前的南桥改改,木有PCIe 3最多只有PCIe 2.0 x8,SATA接口也没几个,制程还是55nm的——即使是HEDT平台的X399,你猜猜这货的成本有多高?

最后说一下服务器平台。线程撕裂者和EPYC是共用接口(物理兼容,但线程撕裂者用的TR4,和EPYC用的SP3有针脚定义不同,不能混用),提供了总计128根PCIe通道,其中64根用于双路CPU之间互联,整个平台还是128根。代价是虽然已经使用了4094个触点的SP3插槽,但扩展能力只能支持两路。也许是AMD也没指望买得起四路系统的用户选择EPYC吧?


[1]:Intel QuickPath Interconnect – Wikipedia

[2]:Anandtech: The Intel Xeon W-3175X Review: 28 Unlocked Cores, $2999

[3]:英特尔® 产品规格对比

[4]:Intel® Z390 Chipset 133293

[5]:Zen – Microarchitectures – AMD – WikiChip

[6]:Anandtech: Chipsets and Motherboards – The AMD Zen and Ryzen 7 Review: A Deep Dive on 1800X, 1700X and 1700


2019/4/21更新:补充一下,网上很多说法说核显占用了4根PCI-E通道,这个说法是完全错误的。包括本问题下也有其它回答使用了这个说法。Intel的核显从SandyBridge开始就一直是直接连接在环形总线(Ring Bus)上,和包含PCI-E通道控制器、内存控制器在内的系统代理(System Agent)以及各个核心、L3缓存同为环形总线上的节点。

在整体架构图上很容易看出来:

CPU-Z的截图显示也表明核显并未使用PCI-E总线:

架构图来源:The Ring Bus & System Agent – Intel’s Sandy Bridge Architecture Exposed

顺道再说一句。Zen的CCX互联、内存控制器、IO Hub都连接在Infinity Fabric上,和Intel的环形总线算是异曲同工。然而IF的数据宽度是16Byte,使用2666Hz内存的时候带宽是42GB/s,Ring Bus数据宽度是32Byte,工作频率为4GHz的时候带宽是128GB/s。这是为什么内存频率对Zen性能影响比Coffee Lake明显得多的原因。

来源:知乎 www.zhihu.com

作者:木头龙

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载

此问题还有 12 个回答,查看全部。
延伸阅读:
为什么Intel的CPU提供的PCI-E通道数量那么少?
cpu的PCI-E通道的数量由什么决定?