intel部分桌面级CPU的pcie通道拆分另类低成本实现

写在最前面:以下仅适用于intel平台。本贴并非保姆级教程,更多的是分享这种方案,并希望和大家一起更深入探讨,旨在抛砖引玉。如果你觉得麻烦或者害怕风险,还是买带plx的更合适,现在3.0的也不贵了。本人始终觉得技术应当分享共同交流进步,况且这也不是本人技术,所以我无私分享。但人的精力有限,每个研究成果都应该被尊重。

本人玩diy时间不长,也折腾过网络设备、U盘、魔改等等之类的。前段时间看看自己主板,突然对其中一根pcie3.0 x8的插槽产生了兴趣,觉得能插两根m2的nvme硬盘多是一件美事啊。经过一段时间的学习和研究,找到了一种另类低成本拆分的方案。不一定适合你,但看完应该会对你有所启发。

——————————————————–

关于pcie拆分,也就是pcie lane bifurcation,其实这个功能挺小众的。因为对于普通家用电脑或办公来说,一般就是1块SSD加一块机械,再根据不同需求,装或不装一块显卡,并没有更多的pcie扩展需求。而对于hedt或者服务器平台,pcie通道又足够的多,扩展方便,通道拆分变得没有意义。到了11代,intel大方的多给了4条4.0的通道给m2硬盘,相应的dmi也升级到了4.0,带宽和通道的提升下,就更没理由为之折腾了。

那么还有哪些场合需要拆分显卡的16条通道呢?我个人总结有以下几种:

1是紧凑型all in one。把一个matx甚至itx小主板的16通道拆分8+8或者8+4+4,用来扩展硬盘和网卡;

2是显卡较弱用不完x16乃至x8的通道,手里又有多条m2 nvme协议硬盘要装;

3是像我一样,总想榨干全部性能,不折腾不舒服斯基。

我发现网上很多人认为这一功能实现依靠bios或者主板自带的Asmedia拆分芯片,以至于上某宝买不带plx的拆分卡,卖家都要提醒你bios得支持,或者通过数主板上有几颗Asmedia拆分芯片来判断支持拆分到8+8还是8+4+4,这些都不完全准确。因为很明显pcie lane bifurcation的功能实现靠的是CPU和芯片组。bios也好,拆分芯片也罢只是让你更方便的操作拆分,其原理后面会说。这也是为什么有些主板即使魔改bios刷出拆分功能,最终也不能成功。

先上一些用于支撑的理论知识:

1、pcie通道拆分和plx拆分有什么区别?

pcie通道拆分就像是分蛋糕。有的人分得1/2,有的人分得1/4。优点很明显便宜,信号直接连至cpu,延迟更低。缺点嘛,相比plx来说,你分得1/2,那最多也就是1/2,定死了,另外就是通用性差,不是所有平台都支持。

plx也像分蛋糕,但更像路由器。1条100M的带宽,1个人用是100M,2个人不同时用,都能享受100M。但同时用且应用都一样的话,就每人50M了,分配弹性更强。优缺点和上面相反。

1、pcie通道拆分是谁的功能?

通过查intel产品官网,可以查到cpu或芯片组的这项信息(以i5 7500和Q170芯片组为例,不具有代表性,但所有产品都能查到):
98ed11af09fdf1d95b43b68220d1b54c24cbad39.png@942w_863h_progressive

intel Q170
14076f571ecc117df65cf429f133b68b1b88ddca.png@942w_1086h_progressive

intel i5-7500

可以发现,pcie通道拆分的功能是由cpu和芯片组共同决定的。bios也好拆分芯片也好,都是主板设计时实现拆分功能的手段,不能决定功能的有无,也不是实现拆分功能的唯一方法。

2、哪些cpu和芯片组支持拆分?

通过intel产品官网可以查到你手中的cpu和主板能否拆分。

据我总结,cpu方面:intel 3代酷睿、4到9代赛扬、奔腾、酷睿和至强E3等115x,及10、11代1200等都支持拆分到8+4+4,12代支持拆分到8+8。

芯片组方面,几乎Z系列、Q系列,X系列和至强C系列全部支持。本文研究的也是这些平台。

我手里有一块爱国嘉的H110TN-e,因为主板只有pciex4,没法研究官网明确标注不支持拆分的H、B系列芯片组能不能实现。我用这种办法给它拆到x8了,但没法后续验证。感兴趣的可以自行研究。
ca00e55560dab62b30c3f6957d372d0fa936902e.jpg@942w_296h_progressive

H110TN-e也能拆,但是能不能分,就不知道了

3、pcie拆分到底靠什么实现?

其实这个功能一点都不神秘。intel官方的产品datasheet明确给出了pcie通道分配的方式。就是根据cpu引脚定义中的cfg[6]和cfg[5]的GTL电平组合决定分配方式,cfg[2]决定通道顺倒序。拿6代skylake的cpu举例:
c2048deee3bf6d5a3693671c289a5f74a2c97eba.png@942w_293h_progressive
所以,只需手动控制cfg[6]和cfg[5]电平就能配置出不同的组合方式。cfg[2]是pcie lane reversal,即通道整体翻转,合理利用可以配置出8+4+4或者4+4+8。最简单的办法,就是通过引脚图,将相应引脚短接跳线至GND。

个人推测bios手动拆分也好,Asmedia芯片自动拆分也罢,最终都是操作这些引脚实现。这也是为什么有些主板强刷魔改bios也不能拆分,这就像是给你的设备外表装个开关,但是里面没有接线,你按了有毛用啊。

4、这种办法是否安全可靠?

从datasheet可以找到这张表:
2865b8fd4dc7bed89277e92eb95a0311eea685eb.png@942w_317h_progressive
可以看出这3个引脚都是通过 3 kΩ的内部上拉电阻连接至VccIO。GTL电平是1.2V,跳线短接后通过电流仅0.4mA。我个人实测大概一周,没有发现任何问题。主板冒烟cpuBoom更是无稽之谈。当然了,DIY需要胆大细心,还有一定风险承受能力。你不敢玩那我也没有办法了。

============分割线============

废话了这么多,终于到了实战环节。如果你有需求上面又看不太懂,那直接看下面即可。

第一步:跳线拆分,把x16拆分成你需要的8+8或者8+4+4

拿我的C232主板(联想OEM主板,华擎E3C232D4U同款)和E3-1280V6来说,只需将cpu如下跳线,就能把原本x16的通道拆成8+4+4。
d744334c463ef81a4b6da328ee4ca1867bfbefd8.jpg@942w_888h_progressive

这种跳线可拆分至8+4+4

要注意这种胶带是需要有胶的那一面导电的,也就是短接的是cpu。某宝搜导电胶带,9块9包邮买一卷能用一辈子。
2358e7aa39c37282b973345c14e968d53a6cae19.jpg@942w_846h_progressive

这是另一款cpu(i5 9400f),这种可拆分至4+4+8(注意不是8+4+4),请无视上面的魔改贴

其它cpu,只需根据intel官方提供的cpu datasheet,找到cfg[6:5:2]三个引脚的位置,根据自己情况跳线即可。

另外要注意VSS针脚旁边就是VCC,可千万别剪长了,粘斜了!VSS和VCC连上了真会烧主板!

第二步:解决第2个和第3个设备的参考时钟问题,找到合适自己的拆分卡

这部分其实挺难的。某宝上的拆分卡五花八门,适合你自己的还真不一定能找到。如果有特别需求,可能要自己画板设计。目前网上现成的卡,有这么几种:

1是广达等服务器的专用拆分卡。这种卡没有时钟复用芯片,只能和他家的主板配套使用,因为另一到两路的参考时钟信号线通过pcie的预留引脚连至主板,时钟是由主板提供的。这也是为什么即使你主板bios支持拆分,你也没法买这种拆分卡用。
29325c13ad6bbdbb34c09c18d46264b769af92e7.png@596w_564h_progressive

图片借用,侵删

2是拆分卡集成了1颗扇出型时钟发生器,可以接收主板插槽提供的一路时钟信号,并拓展成2路或更多路供设备用。最常见的有pi6c20400b和sl28pcie14两种芯片,实例产品五花八门,各式各样:
90e3c0cb2f9becf78373b67f5092f3d4b0d7b92b.jpg@942w_756h_progressive

某鱼极多,最便宜28包邮

68b0ef9b4f0a5a658efd815cf6389984104e6ad7.jpg@942w_942h_progressive

这款和上面唯一区别就是PCB颜色

035ab8a54f956d35283b89343b5d2e9f67c4ccb1.jpg@942w_854h_progressive

上面的变形款,好像用料更足一些

4c00959f20764e85b7187bfa496e8f82f9ec188a.jpg@942w_842h_progressive

以上四种全部采用sl28pcie14时钟发生器

还有这种:
92127bc286a985189b5e72d7a46ae74bb8665a87.jpg@942w_942h_progressive
23bdf27838f7652ead9f6848c6a92d7a31626c43.jpg@942w_942h_progressive
当然,实际还有更多。

3就是带plx的拆分卡了。通用性极强,价格嘛你懂得。(好像现在不是那么贵了)

就我而言,研究这些东西并没花多久,但拆分卡真就找了将近一个月。因为我主板本身就有自动拆分8+8功能,所以将第二个8拆成4+4来接两块m2硬盘,只需找到普通双m2转pciex8即可。但即便如此,各种各样的m2转pcie卡我还是买了好多张,因为大多数卡都有WHEA-logger 报17警告的问题,而且是1秒几十条记录的刷屏,用倒是不影响,但是真的搞心态:
71758f4592fd308e40af9d8f00e98870a721820e.jpg@942w_435h_progressive
感觉就是时钟发生器和主板的兼容问题,因为有的卡就算拆分无关,只接一块硬盘插在连到PCH的x4接口上,仍然有大量WHEA17警告。但是插到单位的h310c主板上,问题完全不存在。或者在bios里把pcie版本调到1.0,问题也消失不见。直到找到这种卡,问题才得以解决:
03de88e33c1072196c58cf3f2de61b0810bf208d.jpg@942w_942h_progressive

并非广告。这种卡最贵且没有贵的道理,如非必要勿选

当然如果你和我的情况一样,不妨也从便宜的卡开始试,因为这张卡太贵了。而最便宜的有些卡,小黄鱼上才卖28包邮。我有理由相信是我主板兼容性不怎么好,但我就这一台能研究的电脑,其它的需要你们自行研究了。

最后拆分成功了,就是下图这样:
7afdc5c40d1697a05cd76b4ee1e869a751105bad.png@942w_486h_progressive
上一张两盘对拷的图:
3fcf594b6ccbf62d7711dbaf1bee475c6826981f.png@942w_398h_progressive
哈哈速度并不理想,我的主板也不支持pcie vroc,不然弄两块970 pro组raid0,可以算作最强的pcie4.0x4nvme硬盘了。算了暂时不折腾了。为了这个研究,又淘了一块N手sm960和N多张拆分卡做实验,钱包又要哭啦!!!

============分割线============

最后,上几张115x引脚图,如果没有你需要,请至intel官网下载datasheet自行查询。
7f6b0da90f7b53fc46c2216e135d7b1cd395aced.png@942w_942h_progressive

6~9代S、H平台1151

87c542b9332e8b4f721ae99ec990c87341d28d5c.jpg@942w_878h_progressive

2~3代1155,借图侵删
962273df66917d04eaacc4e93d15f25154a07698.png@942w_924h_progressive

1150引脚定义,配合下图使用

fb4aff9e4b4b8c957c4c8b9125332df49c932825.png@942w_902h_progressive1150引脚定义,配合上图使用

发表回复