"三张特斯拉 M40 插到华硕 X99 上,开机直接黑屏,风扇转一下就停,这状态就差没把'BIOS 里有个开关你没开'写在脸上了。"
这不是段子,是很多玩 Tesla M40 的人真实遇到的第一道坎。我也是在二手平台收了三张卡之后,才在无数次重启、刷 BIOS、换插槽、查供电之后,确认了罪魁祸首就是主板 BIOS 里那个叫Above 4G Decoding的选项。这名字听起来像给超频玩家准备的冷门功能,实际对 Tesla M40 这种大显存计算卡来说,它就是总闸,不开的话,卡连正常工作都谈不上,更不用说多卡协同。
这篇文章我把整个事情讲透:为什么 M40 必须开这个选项、华硕 X99 上该去哪里开、开了之后还要配套调什么,以及设置完终于点亮之后,最常见的几种故障和排查链路。内容适合手里有华硕 X99 系列主板,正打算上 Tesla M40 单卡或多卡跑计算的人参考,也适合在 BIOS 设置上踩了坑、想搞明白底层原因的朋友。
1. 为什么大家集体卡在 "Above 4G Decoding" 这个选项上
1.1 Tesla M40 的 24GB 显存正好撞上 4GB 寻址天花板
要理解这个选项,得先理解 PCIe 设备是怎么被系统"看见"的。显卡插进主板之后,CPU 和操作系统需要通过一段内存映射地址空间来访问显存和显卡寄存器,这段映射空间在 PCIe 体系里叫 BAR(Base Address Register)。简单说,显存有多大,申请映射的地址空间就得有多大,否则驱动就只能看到显存的"一小部分窗口"。
老的主板 BIOS 默认情况下,把 PCIe 设备的地址映射限制在 4GB 以内,也就是物理内存地址空间的前 4GB 范围。这在十年前完全够用,因为当年的显卡显存普遍只有 512MB、1GB、2GB,映射几条 BAR 绰绰有余。
但 Tesla M40 不一样,它一块卡就是24GB GDDR5 显存。24GB 的显存空间需要一个大得吓人的 BAR 映射请求,直接越过了 4GB 这条线。如果 BIOS 不允许设备在 4GB 以上的地址空间做映射,卡就没办法被系统完整识别。这时候你看到的现象非常迷惑:BIOS 里偶尔能认到卡、设备管理器里能看到未知设备、驱动装到一半报错、甚至直接开不了机,哪一步出了问题都像显卡坏了。
1.2 多卡叠加时 BAR 空间不够会发生什么
单卡 24GB 已经顶破天花板了,多卡就更夸张。三张 M40 就是 72GB 显存,加上每张卡自身的寄存器映射、MMIO 空间,总需求远超 4GB。即便单卡状态下某些主板的兼容性比较好,还能勉强进系统,一旦把第二张、第三张卡插上去,BIOS 的地址分配逻辑直接爆炸。
实际工作中的表现分几种:
- 开机自检卡在 PCIe 设备枚举阶段,屏幕没任何输出,键盘灯也不亮。
- 系统能进,但设备管理器里每张卡都带黄色感叹号,错误码 43。
- 三张卡只认出一张或两张,剩下的在 PCIe 链路枚举阶段就被跳过。
- 认出了全部卡,但 nvidia-smi 里显存显示为 0 MiB 或者只有 12288 MiB 之类的一半数值。
- 更隐蔽的情况:系统能识别,驱动能装,一跑计算就崩或者系统直接重启,因为驱动访问了错误地址,触发总线错误。
我第一次插三张 M40 的时候,情况比上面列的最惨案例还惨。华硕 X99 开机自检直接停在 VGA 灯亮的位置,连 BIOS 画面都出不来。当时我第一反应是供电不够,换了一个更大功率的电源,无解;又怀疑是卡的生产版本冲突,把所有卡单独插一遍,都能亮,但只要插两张以上就完蛋。最后翻国外论坛看到一个帖子反复强调 "Above 4G Decoding 必须开",才把方向转到 BIOS。
1.3 这个开关到底是什么,为什么它叫"关键选项"
Above 4G Decoding 的中文含义是"允许在 4GB 以上地址空间进行解码"。把它开启之后,BIOS 就会启用 64 位 PCIe 地址映射,把大块显存的 BAR 分配到物理地址 4GB 以上的高位空间,而不是全部挤在低 4GB 区域。
拿生活场景类比,就像一个老小区,每栋楼统一用一个容量有限的信箱,以前大家快递少,够用。后来有人开始网购大件家具,一个快递柜根本塞不下;打开 Above 4G Decoding 就相当于在小区里另建了一排"大件快递区",每个快递都有一个清晰的编号地址,送货员按号放件,居民按号取件,一切恢复正常。
所以这个选项对 Tesla M40 不是性能优化项,不是可开可不开的进阶功能,而是能不能正常工作的基础开关。谁要是告诉你"开不开无所谓",那八成是没真正在 X99 平台多卡环境下跑过 M40。这也是为什么大量二手 M40 买家翻车之后,第一个被指认的 BIOS 选项就是它。
2. 华硕 X99 BIOS 里的完整设置路径与配套选项
2.1 找到开关:不同 BIOS 版本下的菜单路径
华硕 X99 的开机进 BIOS 方式和其他华硕主板没区别:开机时反复按Delete 键,少数情况下按F2。如果第一次没进去,不用慌,重启再来一次,华硕主板进 BIOS 的响应窗口在开机前两三秒。
进去之后看到的可能是简易模式(EZ Mode),直接按F7切换到高级模式,所有设置项才露出来。然后按下面路径找:
Advanced → PCI Subsystem Settings → Above 4G Decoding → Enabled这个路径在华硕 X99-A、X99-DELUXE、X99-E WS 等主流型号上基本一致。但有些版本的 BIOS 菜单分类不太一样,如果在 "PCI Subsystem Settings" 里没找到,去下面两个位置翻:
Advanced → North Bridge Configuration → Above 4G DecodingAdvanced → System Agent Configuration → Above 4G Decoding
有一个细节容易被忽略:不同 BIOS 版本里这个选项的名称可能不一样。老版 BIOS 可能写作 "Memory Mapped I/O above 4GB",意思完全相同,只是翻译或命名风格不同。如果你找了半天都找不到关键词,先确认自己是不是没开高级模式,再看 BIOS 版本是不是太老(版本问题的排查在第四章展开)。
设置完成后,按F10保存并退出,确认保存提示后重启。这个操作一定要确认,有的人改了选项就直接断电重启,结果 BIOS 设置没写入,重启后又是一模一样的黑屏,白白浪费时间。
2.2 一起调好的联动项:PCIe 链路速度与 SR-IOV
Above 4G Decoding 开了之后,别急着进系统,还有几个和它经常一起出现、一起影响多卡稳定性的选项建议一并设置清楚。
第一个是 PCIe 链路速度。华硕 X99 的 BIOS 里,PCIe x16 插槽的链路速度默认是 Auto,也就是让主板和显卡自动协商运行在 Gen3(PCIe 3.0)还是更低的感情档位。多卡环境下自动协商偶尔会出问题,尤其是二手卡、转接卡、延长线一起上阵的时候,链路协商不稳定的情况不少。手动把这些插槽的 Link Speed 锁定到Gen3是更稳妥的做法;如果发现锁定 Gen3 后不稳定(表现为开机识别慢、跑负载掉卡),再降级到Gen2测试,Gen2 带宽对 M40 这种计算卡的实际计算性能影响很小,但稳定性提升明显。
第二个是 SR-IOV。这个选项在 PCIe 设置子菜单里,全称是 Single Root I/O Virtualization。如果你后续有虚拟化直通、或者想把 M40 切分成多个虚拟 GPU 使用的需求,建议顺手开启。不开它不影响当前直通,但开了之后系统里会出现更多虚拟功能设备,某些虚拟化平台配置起来更灵活。如果完全没虚拟化需求,保持默认关闭即可,开着也不会带来什么性能收益。
第三个是 "Re-Size BAR Support"。很多人在搜 Above 4G Decoding 的时候会连带搜到这个词,注意区分:Resizable BAR 和 Above 4G Decoding 是两回事。Above 4G Decoding 解决的是 PCIe 设备能否在 4GB 以上地址空间映射 BAR 的问题,Resizable BAR 则是允许系统在运行时动态调整显卡的 BAR 大小,让 CPU 一次能访问全部显存。Tesla M40 属于 Maxwell 架构专业卡,官方驱动对 Resizable BAR 的支持并不完整,所以在 X99 上折腾 M40 的时候,不用太纠结 Resizable BAR 开不开,关键是 Above 4G Decoding 必须开。
2.3 启动模式的选择:CSM 与 UEFI 哪种更稳
设置好 Above 4G Decoding 之后,还有一个容易让人反复横跳的选项:CSM(Compatibility Support Module)。
Tesla M40 是一张没有显示输出接口的计算卡,它不负责输出画面,这块工作必须由主板的核显或另一张亮机卡来承担。而 CSM 选项控制的是 BIOS 以传统方式还是 UEFI 方式引导操作系统,同时也影响 PCIe 设备在启动阶段的枚举行为。
不同批次、不同 vBIOS 版本的 M40 对 CSM 的敏感度不一样。我见过两种完全相反的情况:一种必须开 CSM,否则开机阶段 M40 无法被正确枚举;另一种必须关 CSM,开了 CSM 后系统启动变慢、偶尔卡死在开机 Logo。我自己的调试顺序是:
先把 Above 4G Decoding 设为 Enabled,启动模式保持默认,看系统能不能进。如果一切正常就不用动 CSM;如果启动阶段异常,再进 BIOS 尝试开启 CSM,或者关闭 CSM 切到纯 UEFI 模式,测试两种状态下哪套组合更稳定。
需要说明的是,M40 本身支持 UEFI Option ROM,理想状态下用纯 UEFI 启动没问题。但为了省事,很多人会保留一张便宜的亮机卡插在 PCIe 或核显上,这时候 CSM 的设置对亮机卡和计算卡的兼容性都有影响。最省心的组合通常是把 CSM 设为 Enabled、操作系统以 UEFI 方式安装,这个组合在我接触过的三套 X99 上都很稳。
3. 多卡配置别只盯着 BIOS:通道、供电、散热一个都跑不掉
3.1 华硕 X99 各主板的 PCIe 通道分配差异
BIOS 设置只是入场券,多卡能稳定干活,硬件层面的通道分配、供电、散热才是长期运行的根基。先把 PCIe 通道分配这件事说清楚,因为它决定你把卡插在哪几个插槽上。
X99 平台的 PCIe 通道数量取决于 CPU。Haswell-E 和 Broadwell-E 系列里,像 5960X、6950X 这类旗舰提供 40 条 PCIe 通道,5820K 则只有 28 条,这个差距直接影响多卡插槽的带宽分配。
在 40 通道 CPU 下,华硕 X99-DELUXE 或 X99-A 通常可以做到:
- 第一张卡运行在 x16
- 第二张卡运行在 x16
- 第三张卡运行在 x8
对于 Tesla M40 来说,x8 的 PCIe 3.0 带宽在跑大模型推理和训练时还是够用的,性能折损不明显。但如果用的是 28 通道的 5820K,三卡配置就比较尴尬,某些插卡组合会直接让第三张卡掉到 x4 甚至 x2,这对计算卡来说带宽瓶颈就太严重了。
我的建议是:玩多卡 X99,优先上 40 通道的 CPU。如果你手里的 U 是 28 通道版本,那就老老实实插两张卡,或者接受第三张卡跑在低带宽下的现实。这个瓶颈是 CPU 引脚层面锁定的,改 BIOS 也变不出来。
另外要说一下华硕 X99-E WS 这个特殊型号。它通过主板上集成的 PLX 交换机芯片把 PCIe 通道做了扩展,多卡带宽分配比普通 X99 更灵活。如果你打算长期稳定跑四张卡,X99-E WS 是华硕 X99 家族里的最优解,但它的 BIOS 设置逻辑也更复杂,Above 4G Decoding 必须开,PLX 芯片相关的 Power Management 选项可能要单独调整,否则低负载时卡会莫名其妙掉链路。这个型号我没法用三言两语说完,建议到手后直接更新最新 BIOS,很多 PLX 相关的问题官方已经修了。
3.2 电源供电与线材的实测建议
Tesla M40 的单卡最大功耗在250W 左右,供电接口是双 8-pin(部分版本是 8+6 pin)。三张卡满载就是 750W,加上 CPU、主板、风扇、硬盘这些,系统的瞬时功耗轻松超过 1100W。
所以第一道关是电源功率。别省这个钱,建议直接上1300W 以上的金牌或白金电源。有人觉得三卡 750W,买个 1000W 电源余量应该够了,但实际跑起来,AI 训练那种高负载场景的瞬时峰值电流远超标称,电源过载保护一旦触发就是整机断电,所有训练任务白跑。
第二道关是供电线材。每张卡尽量用独立的 PCIe 供电线从电源引出,不要用"一拖二"转接线串接两张卡。很多人忽略这一点,因为 M40 在桌面环境经常用的是转接线,但一拖二线材的额定电流在两张卡高负载时可能不够,线材发热后接触电阻增大,轻则降频,重则断电。
我一个朋友的翻车经历特别典型:两张 M40 用一条一拖二 8-pin 线供电,跑推理任务十多分钟必重启一次,换了很多驱动都没解决,最后把线材改成独立双线,问题立刻消失。这种坑在实践里非常普遍,排查起来又特别费时间。所以装机时线材规划要一步到位,别在供电上省任何东西。
第三道关是开机时序。Tesla M40 没有自己的电源开关,完全跟随主板电源时序。如果开机瞬间因为供电不足或短路保护被触发,主板直接拒绝上电是有可能的。所以每一次插拔卡之后,检查 8-pin 供电有没有卡扣到位、PCIe 插槽有没有插到底,这两个动作养成习惯,能省下大量排查时间。
3.3 被动散热卡在机箱里的续命方案
Tesla M40 是被动散热设计,整卡靠一块均热板把热量传导到散热鳍片,然后完全依赖机箱风道把热带走。这不是"有一个风扇吹一下就行"那么简单,多卡贴脸安装的时候,卡与卡之间的缝隙几乎不透风,第二张卡和第三张卡的散热条件会明显恶化。
我自己实测过一组数据:两张 M40 紧挨着插入相邻插槽,满载跑 20 分钟,靠里面那张卡的温度会到 88-92℃,直接触发降频。把两张卡隔开一个插槽位,同样负载下温度能压回 70-75℃。所以多卡优先错开插槽位置,哪怕因此让某张卡跑在 x8(只要不是 x4)也值得。
如果实在没有条件拉开距离,可以考虑下面几招:
- 在卡的正上方加装一个 12025 甚至 12038 的高风压风扇,直接往散热鳍片吹。风扇支架可以用几根扎带固定在机箱侧板或硬盘位,粗糙但有效。
- 打开机箱侧板,用一个大风扇对着卡的方向鼓风。这是最快的临时方案,长期跑不建议,积灰太严重。
- 使用涡轮改造套件,把整卡改成涡轮抽风结构。这类套件价格不便宜且安装有一定风险,适合预算充足、长期满载跑的人。
- 用软件限制功耗墙或风扇策略间接控制温度。M40 的功耗可以通过
nvidia-smi -pl 200这类命令设定上限,牺牲一点点性能换温度稳定,偶尔应急能用。
顺带说一句,安装驱动之后建议第一时间在nvidia-smi里盯一下每张卡的温度和功耗曲线。如果某张卡的传感器读数为 N/A,小心,这通常是卡已经处于掉链路或驱动异常状态,别急着重新拔插,先把日志和dmesg拉出来看,后面第四章继续讲。
4. 设置完不等于搞定:验证方法与四种典型故障的排查链路
4.1 用 nvidia-smi 和 lspci 确认卡的真实状态
一切设置完成后,怎么确认 Above 4G Decoding 真的生效了?最简单粗暴的方法是看系统能不能完整识别每张卡的显存。
Linux 系统下,安装好 NVIDIA 驱动后,在终端输入:
nvidia-smi正常状态下,每张 Tesla M40 会显示24576MiB的显存。如果看到0 MiB、12288 MiB或者其他不完整的容量,基本可以判定 BAR 映射不正常,Above 4G Decoding 可能没真正生效,或者主板没把地址空间正确分配给对应插槽。
再用lspci看一眼卡在系统里的链路状态:
lspci -v | grep -A 20 -i nvidia重点看 LnkCap 和 LnkSta 两行,确认链路协商到的速度是 8 GT/s(即 PCIe 3.0)而不是 5 GT/s(即 PCIe 2.0)。如果协商速度偏低,回到 BIOS 把链路速度手动锁定到 Gen3 再测。
Windows 系统下更简单,设备管理器里 N 卡对应的设备如果带"此设备找不到足够的可用资源"之类的错误,或 NVIDIA 控制面板里"已禁用"灰块,基本都是资源分配问题。GPU-Z 可以看 Bus Interface 和 Memory Usage,正常显示 24GB 就没问题。
4.2 故障一:开启后依然黑屏
这是最常见的挫败场景:你已经找到 Above 4G Decoding 并设为 Enabled,保存重启之后,屏幕还是黑着。别急着怀疑设置没生效,按照下面顺序排查。
第一步,确认视频输出走的是哪张卡。M40 没有输出接口,如果你把显示器接到了 M40 上,那是永远不会有画面的。必须使用核显或另一张亮机卡的视频输出口。开机后如果看到主板自检画面,但进入系统后黑屏,那往往是显卡驱动或显示输出策略问题,不是 M40 的锅。
第二步,确认 BIOS 设置是否保存。华硕主板修改设置后需要 F10 保存并退出,有些人改完选项直接重启,设置丢失。检查方法很简单:重新进 BIOS,看 Above 4G Decoding 是否仍然显示 Enabled。如果显示 Disabled,说明上次没有保存成功。
第三步,尝试切换 CSM 状态。前面提到不同 vBIOS 版本的 M40 对 CSM 敏感度不同。如果当前是 Enabled,改 Disabled 再试;如果当前是 Disabled,改 Enabled 再试。这个步骤能解决大量"什么都对但就是黑屏"的怪异问题。
第四步,最小化硬件。拔掉所有多余 PCIe 设备,只保留一张 M40 和一块亮机卡,再开机。如果最小化配置能进系统,再逐一插回其他卡,定位是哪张卡或哪个插槽导致问题。这个过程耗时但非常有效,我处理过的绝大多数多卡问题最后都能在"最小化配置逐一加回"这一步收敛。
4.3 故障二:显存只显示一半或系统报错 43
显存显示一半,这是个非常经典的 BAR 空间映射问题特征。只显示 12288 MiB、4096 MiB 或 0 MiB,都说明驱动只能访问到部分显存地址,缺失的部分被 BIOS 丢掉了。
这类问题我处理过几个案例,多数情况下原因是设置成了 Enabled 但系统里仍然有设备占用了低 4GB 地址空间,导致 M40 的 BAR 无法完整分配。处理思路:
- 确认 Above 4G Decoding 在 BIOS 里确实生效,重启进系统后再跑一次
nvidia-smi。 - 检查主板 PCIe 插槽周边是否插了其他占用地址空间的设备,比如某些 NVMe 转接卡、声卡、网卡。临时拔掉它们,看看 M40 是否恢复正常。
- 尝试更换 M40 所在的 PCIe 插槽,有时候是主板把地址空间分配给了错误的位置。
- 检查 Windows 系统下的 "资源" 冲突:设备管理器里显示资源冲突的禁用设备,在系统层面调整 BAR 位置有时也能解决。
Windows 下设备错误码 43 则是一个大杂烩症状,很多原因都会导致 43。但针对 Tesla M40,绝大多数原因是驱动和卡之间无法完成完整的资源握手。建议顺序:先重装最新版 NVIDIA 驱动(Windows 下用 R475 或更新的专业驱动分支),同时把 Windows 快速启动关掉,再重启。如果还不行,就回到 BIOS 里把 Above 4G Decoding 关闭再开启一次,强制主板重新做一次地址分配。千万别忘了,M40 本身就是无显示输出的计算卡,驱动装不上或报 43 时,别把它和普通游戏卡的处理方式混为一谈,很多排错步骤是没有意义的。
4.4 故障三:多卡中间某张卡时不时掉线
三张卡同时跑起来,过一段时间发现 nvidia-smi 只剩两张卡了,或者某张卡报"没有在总线上找到",这种掉线问题比黑屏更折磨人。
按频率从高到低排查:
- 温度过高。M40 被动散热,卡间距过小风扇不够,温度冲上 90℃ 后可能会触发 bus 掉线。用
nvidia-smi -q -d TEMPERATURE查看每张卡的当前温度,如果某张卡明显偏高,先处理散热,别去折腾 BIOS。 - 供电瞬断。高负载时全卡功耗拉升,电源或线材扛不住会瞬间掉压,最直接的表现是其中一张或多张卡从总线上消失。建议用独立供电线并检查电源的健康度。
- PCIe 链路协商不稳定。把 BIOS 里 PCIe 链路速度从 Gen3 手动改到 Gen2,稳定跑一段时间对比。计算任务对 Gen2 带宽的敏感度通常不高,但掉卡问题往往因此消失。
- 供电接口松脱。M40 的 8-pin 供电接口没有卡扣锁紧?插一下,听到咔哒声再确认。
掉线问题往往是硬件环境综合作用的结果,单抓一个环节解决不了,但按上面顺序排查,多数情况下能在几个小时内收敛。
4.5 故障四:BIOS 里压根找不到这个选项
华硕 X99 早期的 BIOS 版本(比如 2014-2015 年发布的 1.x 版本)里,Above 4G Decoding 要么不存在,要么以 "Memory Mapped I/O above 4GB" 这种老名字藏在某个角落。如果你按键 F7 之后翻遍整个高级菜单都找不到,最大的嫌疑是 BIOS 版本太老。
解决办法是更新 BIOS。华硕 X99 主板普遍支持 USB BIOS Flashback 功能,可以在不进入 BIOS、不接 CPU 的情况下直接刷写。具体步骤不复杂:找个 U 盘格式化为 FAT32,去华硕官网下载对应主板型号的最新 BIOS 文件,把文件重命名为该型号规定的文件名(不同型号规则不同,主板说明书里有写),插到标有 BIOS 字样的 USB 接口,按住主板上的 Flashback 按钮几秒,指示灯闪烁过程就是刷写过程。全程千万别断电。
更新到最新 BIOS 之后,Above 4G Decoding 选项基本都会出现。顺带一提,新 BIOS 对内存兼容性和 PCIe 设备枚举也有优化,多卡环境下的稳定性通常比老版本更好。
最后分享一个我自己的使用习惯:每次改动 BIOS 设置之后,我都会在纸上记下改了哪个选项、改成了什么、当时系统是什么状态。听起来很土,但多卡配置的排错过程往往横跨好几天,中间穿插各种拆机、换卡、换电源的步骤,没有记录的话,你很容易忘记上一次到底是什么状态、哪次改动起效了,然后重复踩同一个坑。玩 X99 配 Tesla M40 这件事,本身就是个高密度踩坑和排错的过程,把每一步都留下痕迹,比什么都重要。