GPU 维修学院显卡维修 · 从零到精通
0 / 0

MATS / MODS 显存测试完全指南

L426 分钟L4显存核心技能

为什么 MATS 是 L4 的入场券

没有 MATS,"显存坏了"就只是一个猜测。有了 MATS,它就是一份诊断报告。

MATS 能告诉你:

  • 显存有没有错
  • 错了多少个(严重程度)
  • 具体是哪个 bank / row / column / bit 出错
  • 结合映射表 → 具体是哪一颗颗粒

一、MATS 是什么

MATS(Memory Artifact Testing System)是 NVIDIA 内部使用的显存测试工具,后来在维修社区流传。MODS 是社区改进版,支持更多核心型号和更详细的输出。

特性MATSMODS
支持范围较老的核心覆盖更广,GP104/GP102/TU116/GA104 等
输出详细度基础更详细,含更多地址信息
运行环境DOSDOS
是否需要特定版本是是(按核心选版本)

为什么必须在 DOS 下运行? 因为它需要直接访问显存物理地址,绕过操作系统和驱动的抽象层。Windows 下做不到这一点。

二、准备工作

硬件

① 一个 U 盘(做成 DOS 启动盘)
② 一台能工作的电脑(用核显或其他显卡出图)
③ 目标显卡插在主板上(可以用 PCIe 延长线,便于操作)
④ 因为目标卡不显示,必须用另一张卡出图

软件

① DOS 启动盘(Rufus + FreeDOS,或用现成的维修 U 盘镜像)
② 对应你显卡核心的 MATS/MODS 版本
   ⚠️ 版本必须匹配核心!不同核心需要不同的 MATS 版本
③ 版本通常在维修社区按核心分类提供

制作启动盘

① 用 Rufus 把 U 盘做成 FreeDOS 启动盘
② 把 MATS 程序文件拷入 U 盘根目录
③ 记录你的显卡在系统里的 PCI 位置(通常是 01:00.0,即 bus 1)

MATS 版本与核心的对应是硬性要求。用错版本会:

  • 直接报错无法运行
  • 或者运行了但读不到显存,给出无意义的结果

正确做法:先确认你的核心型号(GPU-Z 或芯片丝印),再去维修社区找对应版本的 MATS。

三、运行 MATS

基本命令

mats -e 10          &rem 测试 10 遍(-e = extended/endless,遍数)
mats -e 30          &rem 测试 30 遍,更严格
mats --help         &rem 查看所有参数
mats -n 0           &rem 测试第 0 号 GPU

关键参数

参数含义
-e N测试 N 遍
-n N指定测试哪块 GPU(多卡时用)
-b N指定起始地址
-m N指定显存大小
-s N指定测试模式

具体参数以你使用的版本为准(不同版本参数略有不同)。

四、读懂 MATS 输出

无错误的情况

MATS version X.XX
...
Test passed. No errors found.

含义:显存在当前测试条件下没有错误 → 显存基本是好的。

有错误的情况

典型输出(格式因版本而异):

Error: 0x00000000  Bank 03  Row 0x1A2B  Col 0x038  Bit 21
Error: 0x00000000  Bank 03  Row 0x1A2B  Col 0x039  Bit 21
Error: 0x00000000  Bank 03  Row 0x1A2C  Col 0x038  Bit 21
...
Total errors: 128

关键信息:

字段含义用途
Bit出错的数据位(0~31 或更多)最重要:定位到具体颗粒
Bank显存内部的 bank 编号缩小地址范围
Row / Col行地址 / 列地址定位具体存储单元
错误数量错误总数判断严重程度
错误分布集中在少数 bit 还是分散判断是颗粒问题还是通路问题

五、从 bit 到具体颗粒

原理

一颗 32bit 的 GDDR6 颗粒,负责 32 个数据位。但并不是简单地"第 1 颗负责 bit 0-31"——实际映射关系取决于:

  • 核心的显存控制器设计
  • PCB 的走线方式(bit 可能交错分配到多颗颗粒)
  • 显存是单面还是双面

三种定位方法

方法 1:查映射表(最快)

维修社区整理了主流型号的 "bit ↔ 颗粒位置" 映射表。查到型号 → 查出错的 bit → 得到颗粒编号。

方法 2:实物对照(推荐给新手)

① 看 PCB 上显存颗粒的位置(编号 U1~U8 或类似)
② 用"排除法"验证:
   a. 把怀疑的两颗颗粒互换位置
   b. 重跑 MATS
   c. 报错的 bit 跟着走 → 是颗粒坏
   d. 报错的 bit 位置不变 → 是走线/焊点坏

方法 3:局部加热/加压测试

① 用热风枪低温(80~100℃)局部加热某颗颗粒
② 观察 MATS 错误数量是否变化
③ 错误数量剧增 → 该颗粒有虚焊(热膨胀让它更松)
④ 错误数量减少 → 该颗粒也有问题(热让接触变好)

"互换测试"是最可靠的定位方法,因为不依赖任何映射表。
代价是:需要拆焊两颗颗粒(有风险),所以适合已经确定要换颗粒的情况。

六、错误模式的解读(重要)

错误模式可能原因处理
单一 bit 大量错误该 bit 对应的颗粒或走线有问题定位到颗粒,检查虚焊 → 换颗粒
多个 bit 同时出错(同一颗粒范围)该颗粒整体不良换该颗粒
所有 bit 都出错显存供电问题 / 核心显存控制器问题先查 MSVDD 和 VPP 电压
错误数量随温度升高剧增虚焊(热膨胀导致接触不良)补焊或换颗粒
错误数量随机、无规律供电纹波大 / 时序不稳查输出电容、降频测试
低频无错,高频才错颗粒老化(时序余量不足)降频可用,但需换颗粒根治
特定 Bank/Row 范围出错该地址区域的存储单元坏换对应颗粒

真实案例:MATS 定位到具体颗粒

现象:RTX 3060 Ti 花屏,固定位置的竖线。

MATS 输出(1 遍):

Bit 24: 342 errors
Bit 25: 339 errors
Bit 26: 12 errors
Total: 693 errors

分析:

  • 错误集中在 bit 24、25(连续两位)
  • 连续 bit 通常属于同一颗颗粒
  • 查映射表 → bit 24-31 属于 U4 位置的颗粒

处理:

  1. 目视 U4 颗粒:焊点有轻微的环形裂纹(显微镜下)。
  2. 先尝试补焊(热风枪局部加热让它重熔)→ 重跑 MATS:仍有 300+ 错误。
  3. 说明颗粒本身已损坏,需更换。
  4. 拆下 U4(BGA 拆焊)→ 植球/换新颗粒 → 回焊。
  5. 重跑 MATS 20 遍:无错误。
  6. FurMark 1 小时 + 3DMark 稳定。

结论:MATS 的价值在于"把 8 颗颗粒的可能性缩小到 1 颗"。

七、没有 MATS 时的替代方案

工具能力局限
OCCT VRAM 测试Windows 下运行,报错误数量不报具体位置
TestMem5 / VMT辅助验证同样不报位置
逐颗量测法量每颗颗粒的供电和信号只能发现明显故障
互换测试不依赖工具,直接定位需要拆焊,有风险
降频测试判断是否为时序余量问题只能定性

八、实测流程模板

【准备】
□ 确认核心型号:____________
□ 下载匹配的 MATS 版本:____________
□ 制作 DOS 启动 U 盘
□ 显卡插主板,用另一张卡出图(或用核显)
□ 记录 PCI 位置:____________

【测试】
□ 运行 mats -e 10
□ 记录错误数量和 bit 分布
□ 如果错误很多 → 用 -e 1 快速迭代(每次修改后快速验证)

【定位】
□ 分析错误 bit → 查映射表
□ 确定目标颗粒编号:____________

【修复】
□ 先尝试补焊(虚焊比颗粒坏更常见且成本低)
□ 重测 MATS
□ 补焊无效 → 换颗粒
□ 换后重测 MATS(-e 30 更严格)

【验证】
□ MATS 无错误
□ FurMark 30 分钟
□ 3DMark 跑分接近基准
□ 温度正常

MATS 的局限要清楚:

  1. MATS 测的是显存,不测核心、供电、显示引擎。
  2. MATS 通过不代表显卡完全没问题(可能供电在高负载下才暴露)。
  3. MATS 报错不一定非要换颗粒:虚焊、供电不稳、时序问题都可能报错。
  4. 先用最低成本的手段验证(补焊、降频、查供电),再考虑换颗粒。