ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

SXM2转PCIe转接卡设计:NVLink直连与供电散热实战

SXM2转PCIe转接卡设计:NVLink直连与供电散热实战 1. 项目缘起与整体设计思路1.1 为什么要做SXM2转PCIe转接卡手里攒了几块SXM2接口的计算卡想塞进普通ATX机箱里跑推理或者做多卡并行训练结果发现主板上根本没有对应的插槽。SXM2这个接口本身是板载形式的直接焊在服务器主板上通过基板上的走线把NVLink和PCIe信号引出来。普通消费级主板只有标准PCIe x16插槽物理形态和电气定义都对不上。这就是转接卡要解决的核心矛盾把SXM2的板对板连接器转成标准PCIe金手指形态同时保留NVLink直连能力还要把供电和散热这两个硬骨头啃下来。市面上能买到的方案要么只转PCIe不转NVLink要么供电设计过于简陋带一块卡还行带两块卡跑满载直接掉电重启。我前后打了五版板子从最初的两层板到后来的六层板从单纯转接到加入供电监测和温度采集踩了不少坑。这篇文章就把整个设计过程拆开来讲包括信号完整性怎么保证、NVLink走线为什么不能随便拉、供电热管理怎么做才稳。1.2 核心需求拆解与设计目标先明确几个硬指标。第一PCIe Gen3 x16必须跑满不能降速。SXM2接口本身支持到PCIe Gen3部分型号支持Gen4但转接卡走线长度和连接器质量直接决定能不能稳住Gen3。第二NVLink直连要保留两块卡之间通过NVLink桥接通信带宽远高于走PCIe Switch。第三供电要能支撑单卡300W以上的峰值功耗瞬态响应要快。第四散热要覆盖VRM区域和卡本身的热点。设计目标定下来之后方案选型就有了依据。PCB层数至少六层信号层和电源层分开NVLink差分对要走内层并做阻抗控制。供电输入用标准PCIe 8pin或者服务器电源的12V输出经过多相Buck转换到SXM2需要的电压轨。散热方面VRM区域加散热片卡本身用涡轮扇或者暴力扇强制风冷。1.3 方案选型背后的取舍逻辑有人问为什么不直接用PCIe Switch芯片做转接那样还能多卡互联。PCIe Switch方案确实灵活但延迟和成本都上去了而且NVLink直连的带宽优势就没了。SXM2卡之间的NVLink是点对点直连延迟极低做张量并行的时候通信开销小很多。所以最终方案是PCIe部分走直连NVLink部分走板对板连接器直出中间不加任何有源器件。供电方案也纠结过。一开始想用单相Buck简单省事但实测发现单卡满载时电流纹波太大VRM温度直接飙到120度。后来改成四相Buck每相分担电流纹波小了温度也降下来了。这个取舍很关键多相Buck的PCB面积和成本都上去了但稳定性是值得的。2. 核心细节解析与实操要点2.1 SXM2接口的物理与电气特性SXM2连接器是Molex或者TE出的板对板连接器针脚密度很高间距0.5mm左右。信号针脚包括PCIe差分对、NVLink差分对、边带信号、电源和地。电气特性方面PCIe Gen3的差分阻抗要求85欧姆NVLink的差分阻抗要求100欧姆两者不一样走线的时候要分开处理。SXM2的供电针脚分布在连接器两侧12V输入和地针脚数量有限单针载流能力大概1A左右。算一下300W的卡在12V下电流25A需要至少25个电源针脚并联。实际连接器上电源针脚数量够用但PCB上的铜箔厚度要跟上内层用2oz铜外层用1oz铜过孔要多打几个。注意SXM2连接器的插拔寿命有限大概50次左右。调试阶段尽量用延长线或者测试治具别反复插拔板子上的连接器。2.2 NVLink直连的走线规则与阻抗控制NVLink是差分信号每对差分线由两条走线组成走线长度要等长误差控制在5mil以内。差分阻抗100欧姆用六层板的话走线层选在L3或者L4参考平面完整。过孔要尽量少每个过孔都会引入阻抗不连续点。如果必须换层过孔旁边要加地过孔提供回流路径。NVLink的速率很高SXM2上的NVLink 2.0单通道速率25Gbps左右。走线长度超过一定值之后插入损耗会变得明显。实测下来走线长度控制在100mm以内比较稳超过150mm就需要加均衡或者重驱动器。转接卡的尺寸限制了走线长度所以布局的时候要把SXM2连接器和PCIe金手指尽量靠近。2.3 供电热管理的设计要点供电部分的核心是VRM设计。输入12V输出多路电压轨包括核心电压、显存电压、IO电压等。SXM2卡的电压需求跟具体型号有关但一般核心电压在0.8V到1.2V之间电流能到200A以上。多相Buck控制器加DrMOS的方案比较成熟选型的时候注意DrMOS的电流能力和热阻。热管理分两部分VRM区域和卡本身。VRM区域的发热主要来自DrMOS和电感电感选一体成型的损耗小。散热片要覆盖整个VRM区域用导热垫压紧。卡本身的散热靠涡轮扇风道要设计好冷风从一侧进热风从另一侧出别让热风回流。提示VRM布局的时候输入电容尽量靠近DrMOS的输入引脚输出电容靠近电感输出端。电流采样电阻的走线要开尔文连接不然采样精度不够。3. 实操过程与核心环节实现3.1 PCB叠层设计与阻抗计算六层板的叠层方案L1信号L2地L3信号L4电源L5地L6信号。L1和L3走PCIe和NVLink差分对L6走低速边带信号。L2和L5是完整地平面L4是电源平面。板厚1.6mmL1到L2的介质厚度0.2mmL3到L4的介质厚度0.2mm。阻抗计算用Saturn PCB Toolkit或者Polar SI9000。PCIe差分对的目标阻抗85欧姆线宽5mil间距7mil参考L2地平面。NVLink差分对的目标阻抗100欧姆线宽4.5mil间距8mil参考L2地平面。实际打样之后用TDR测一下偏差控制在10%以内。# 用Saturn PCB Toolkit计算差分阻抗的示例参数 # 差分对微带线 # 线宽 W1 5 mil # 线间距 S 7 mil # 介质厚度 H 8 mil # 介电常数 Er 4.2 # 计算结果差分阻抗 ≈ 85.3 欧姆3.2 供电电路参数计算与选型以单卡300W为例12V输入电流25A。选四相Buck每相承担6.25A。DrMOS选额定电流30A以上的型号留足余量。电感选0.47uH饱和电流30A以上。输出电容用470uF的聚合物电容每相两颗再加若干陶瓷电容滤高频。电流采样用5毫欧的采样电阻配合电流检测放大器。采样电阻的功耗是I²R6.25A下是0.195W选2512封装的电阻功率余量够。采样信号走差分线到控制器开尔文连接点要在电阻的焊盘内侧。# 供电参数计算示例 Vin 12.0 # 输入电压 Vout 1.0 # 输出电压 Iout 25.0 # 输出电流 Fsw 500e3 # 开关频率 500kHz L 0.47e-6 # 电感值 0.47uH # 纹波电流计算 ripple_current (Vin - Vout) * Vout / (Vin * Fsw * L) print(f纹波电流: {ripple_current:.2f} A) # 输出电容计算假设允许纹波电压50mV Vripple 0.05 Cout ripple_current / (8 * Fsw * Vripple) print(f输出电容: {Cout*1e6:.2f} uF)3.3 散热方案实测与迭代第一版散热方案只加了小散热片满载跑十分钟VRM温度到110度卡开始降频。第二版换了更大的散热片加了涡轮扇温度降到85度但还是偏高。第三版在VRM散热片和卡之间加了导热垫把热量导到卡的外壳上温度降到75度左右。最终版在PCB背面也加了散热片通过过孔阵列把热量传到背面温度稳定在70度以下。实测数据环境温度25度单卡满载300WVRM温度72度卡核心温度78度NVLink温度65度。连续跑24小时没有降频或者掉卡。散热方案VRM温度核心温度稳定性小散热片110°C85°C降频大散热片涡轮扇85°C80°C偶发降频加导热垫75°C78°C稳定背面加散热片72°C78°C稳定4. 常见问题与排查技巧实录4.1 PCIe链路训练失败排查PCIe链路训练失败是最常见的问题。现象是主板识别不到卡或者识别到了但降速到x1。排查思路先看LTSSM状态用示波器或者协议分析仪抓一下。如果卡在Detect状态说明物理层有问题检查差分对有没有短路或者开路。如果卡在Polling状态说明参考时钟有问题检查100MHz参考时钟有没有送到。常见原因差分对极性接反、参考时钟幅度不够、复位信号时序不对。极性接反的话有些主板能自动纠正有些不能。参考时钟幅度要在400mV到1200mV之间用示波器测一下。复位信号要在电源稳定之后至少100ms再释放。注意PCIe金手指的B面第5和第6脚是JTAG信号如果不用的话可以悬空但不要接地。4.2 NVLink通信异常的定位方法NVLink通信异常的表现是卡间通信带宽低或者直接不通。先确认NVLink的参考时钟有没有SXM2的NVLink参考时钟是独立的频率跟具体版本有关。然后检查差分对的阻抗和损耗用TDR测一下。如果阻抗偏差大检查走线宽度和参考平面。还有一个容易忽略的点NVLink的使能信号。有些卡需要主机通过SMBus或者GPIO使能NVLink转接卡上要把这些信号引出来。如果使能信号没拉高NVLink根本不工作。4.3 供电掉电与过热保护触发供电掉电一般是瞬态响应不够。卡在满载的时候电流变化率很高如果输出电容不够电压会瞬间跌落触发欠压保护。解决办法是加输出电容或者提高开关频率。过热保护触发的话检查VRM散热和电流采样有时候是电流采样不准导致误保护。排查的时候用电子负载模拟卡的负载特性看电压波形。如果跌落超过5%就要加电容或者调整环路补偿。环路补偿的参数可以用网络分析仪测伯德图来调没有网络分析仪的话就试凑先调比例项再调积分项。问题现象可能原因排查方法解决方案识别不到卡物理层故障查差分对通断补焊或换连接器降速到x1参考时钟异常测时钟幅度换时钟源或加缓冲NVLink不通使能信号未拉高查GPIO电平拉高使能信号满载掉电瞬态响应不足测电压波形加输出电容VRM过热散热不足测VRM温度加散热片或风扇4.4 实操心得与避坑清单第一PCB打样之前一定要做信号完整性仿真尤其是NVLink的差分对。仿真能发现阻抗不连续和串扰问题比打样之后改板省时间和钱。第二连接器的焊接温度要控制好SXM2连接器的塑料壳体耐温有限回流焊温度太高会变形。第三调试的时候先用低速卡试确认链路能通再上高速卡。第四供电测试一定要带载空载测不出问题。还有一个坑PCIe金手指的厚度。标准是1.6mm但有些PCB厂做出来是1.5mm或者1.7mm插到插槽里要么太松要么太紧。打样的时候跟厂家确认好公差最好在1.55mm到1.65mm之间。提示调试阶段准备一块好的参考卡遇到问题的时候替换法排查能快速定位是转接卡的问题还是卡本身的问题。5. 设计验证与批量生产考量5.1 功能验证的完整测试流程板子回来之后先目检看有没有虚焊或者短路。然后用万用表测各路电源的对地阻抗确认没有短路。上电之前先不插卡测各路电压是否正常。电压正常之后插卡进系统看lspci能不能识别。识别之后跑带宽测试用CUDA的bandwidthTest或者自己写个简单的拷贝程序。NVLink的测试用nvidia-smi topo -m看拓扑确认NVLink连接状态。然后跑nccl-tests看all-reduce的带宽。如果带宽接近理论值说明NVLink工作正常。稳定性测试跑24小时中间监控温度和电压记录有没有异常。5.2 批量生产时的工艺控制点批量生产的时候PCB厂的选择很重要。六层板带阻抗控制的小厂做不好。要选有阻抗测试报告的厂每批次抽检。连接器的焊接用治具定位保证共面度。回流焊的温区曲线要针对连接器的耐温特性调整峰值温度控制在245度以下。组装完之后每块板子都要过功能测试至少测PCIe链路和供电。NVLink的测试可以抽检因为NVLink的走线在PCB内部焊接不良的概率低。测试治具要能快速插拔提高测试效率。5.3 成本控制与物料选型建议成本大头在PCB和连接器。六层板带阻抗控制的小批量打样大概几百块一片批量的话能降到一百多。SXM2连接器比较贵原厂的几百块一个国产替代的便宜但质量参差不齐。建议连接器用原厂的PCB可以找性价比高的厂。DrMOS和控制器选型的时候别一味追求大电流够用就行。四相Buck用30A的DrMOS成本比用50A的低不少而且PCB面积也小。电感选一体成型的虽然比绕线的贵但损耗小温升低长期看更划算。物料选型建议成本占比备注PCB六层阻抗控制30%选有阻抗报告的厂SXM2连接器原厂40%国产替代需验证DrMOS30A以上15%留足余量电感一体成型10%损耗小电容聚合物陶瓷5%注意耐压6. 后续扩展与个人体会6.1 从单卡到多卡的扩展思路单卡转接卡做稳之后下一步就是多卡。多卡方案有两种一种是做一块大板上面多个SXM2连接器卡间NVLink直连另一种是做多块单卡转接卡通过外部的NVLink桥接器连接。第一种方案集成度高但PCB面积大成本高。第二种方案灵活但NVLink桥接器的信号完整性要处理好。我倾向于第一种方案因为NVLink走线在PCB内部可控性好。多卡板的供电要做均流每块卡的供电独立但输入可以共用。散热方面多卡板的发热量大要用服务器级别的风道设计。6.2 个人实操体会与建议这个项目做下来最大的体会是信号完整性和供电设计不能省。一开始为了省成本PCB层数少走线随便拉结果调试的时候各种问题。后来老老实实做仿真按规则走线一次就打样成功。供电也是多相Buck虽然复杂但稳定性是单相没法比的。还有一点测试的时候要有耐心。PCIe链路训练失败的原因很多一个一个排查别急着换板子。我遇到过一块板子换了三次连接器都没用最后发现是参考时钟的匹配电阻焊错了。所以调试的时候先检查原理图和BOM再动烙铁。提示调试记录要详细每次改了什么结果怎么样都记下来。不然改到最后自己都忘了哪些改过哪些没改。6.3 这个设计还能怎么玩转接卡做出来之后除了跑计算卡还能做很多事。比如把SXM2接口转成OCP NIC的形态做网络加速卡。或者转成M.2接口做高速存储。NVLink直连的特性也可以用来做卡间高速数据交换不一定要跑AI训练做实时信号处理也行。后续我还想试试把供电做成数字可调的用PMBus控制这样不同型号的卡可以自适应电压。散热也可以做成智能调速根据温度自动调风扇转速。这些扩展方向都挺有意思等有时间慢慢折腾。
返回列表