结论:显卡的显存(GDDR6)存在物理损坏,已由 Memtest_vulkan 实测确认。不是超频、不是驱动、也不是游戏的问题。缺陷位置固定,并且在持续恶化。
判断分两步走。第一步看事件日志中的故障形状:36 个 SM 在 5 毫秒内同时报错,这排除了“某个计算单元坏了”这个最常见的猜测,把范围锁死在所有计算单元共享的资源上。第二步用显存测试直接验证:595 次报错全部集中在 8 GB 显存里约 1.7 MB 的一小片区域。
RTX 2070 的 TU106 核心有 36 个 SM,分布在 3 个 GPC 中,每个 GPC 含 6 个 TPC、每 TPC 2 个 SM。日志里报错的坐标,一个都没落下。
左边是对照,右边是实况。如果是一颗 SM 物理损坏,报错坐标会像左图那样固定在同一处、反复出现。实际记录是右图:36 个 SM 在 5 毫秒内全部报出同一种错误。没有任何一个单元是单独的故障源——出问题的是它们共享的东西。
错误原文是 Graphics SM Warp Exception … Illegal Instruction Encoding,字面意思是 SM 从内存里取到了不合法的指令编码——也就是数据在到达 SM 之前就已经损坏了。共享这一数据通路的,正是显存、L2 缓存与指令供给。
18:26:19.679 nvlddmkm 13 \Device\Video3 Graphics SM Warp Exception on (GPC 0, TPC 0, SM 0): Illegal Instruction Encoding Graphics SM Global Exception on (GPC 0, TPC 0, SM 0): Multiple Warp Errors Graphics Exception: ESR 0x504730=0xa0009 0x504734=0x4 0x504728=0x6c12b72 0x50472c=0x174 18:26:19.684 nvlddmkm 13 \Device\Video3 Graphics SM Warp Exception on (GPC 2, TPC 5, SM 1): Illegal Instruction Encoding Graphics SM Global Exception on (GPC 2, TPC 5, SM 1): Multiple Warp Errors — 同一秒内共 108 条 ID 13 — 36 × Illegal Instruction Encoding 36 × Multiple Warp Errors 36 个不同的 (GPC, TPC, SM) 坐标
2026-09-18 20:13 对显存做的遍历测试,跑了约 1,608 次迭代。健康显卡的结果必须是 0 错误——任何一个非零都代表硬件缺陷。
把 595 次报错的地址按 64 KB 窗口统计。缺陷核心稳定在 0xD00D0000 附近,向两侧平滑衰减成一座钟形。这是物理损坏的空间特征:若问题出在供电或时序,错误会随机散布在全部 8 GB 显存上;集中成一个尖峰,说明是特定位置的存储单元失效。
| 地址窗口 | 报错事件数 |
|---|
INITIAL_READ 494 次、NEXT_RE_READ 101 次。没有一次是“放久了才丢”或“反复读才出错”——数据在写入完成后的第一次校验就已经不对了。这不是时序余量不足,是这些单元根本存不住数据。
child exited for no reason, code 71 非正常结束。
显存损坏会静默返回错误结果——不报错,但算出来的数据是错的。渲染、跑模型、以及任何结果重要的计算,在这块卡修好之前都不要用它做。游戏崩溃反而是最“友好”的表现形式,因为它至少让你知道了。
当天 15:02 起,显卡开始反复超时并自行恢复。注意每次恢复之间的间隔:从最初的几十分钟,压缩到最后十几分钟一次。
09-18 当天 15:00–19:30 的驱动超时记录。18:26 的那一次与其它都不同:它之前先爆出 108 条 SM 异常,是全天唯一一次触及计算单元的故障。
| 时间 | 事件 | 来源 |
|---|---|---|
| 15:02:55 | TDR 超时并恢复 | nvlddmkm 153 |
| 15:05:49 | TDR 超时并恢复 | nvlddmkm 153 |
| 15:30:22 | TDR 超时并恢复 | nvlddmkm 153 |
| 17:29:41 | TDR 超时并恢复 | nvlddmkm 153 |
| 17:52:59 | TDR 超时并恢复 | nvlddmkm 153 |
| 17:56:07 | TDR 超时并恢复 | nvlddmkm 153 |
| 18:26:19 | SM 异常爆发(108 条) | nvlddmkm 13 |
| 18:40:48 | TDR 超时并恢复 | nvlddmkm 153 |
| 18:54:12 | GPU 错误(未触发 TDR) | nvlddmkm 153 |
| 19:09:46 | TDR 超时并恢复 | nvlddmkm 153 |
圆点大小 = 当天的 TDR 次数。4 月到 8 月几乎一片空白,只有 5 月 6 日和 6 月 5 日各一次零星记录;9 月 16 日突然升到 5 次,9 月 18 日 9 次。这不是“一直有点小毛病”,而是最近两天才开始的急性劣化。
| 日期 | TDR 次数 | nvlddmkm 错误数 | 备注 |
|---|
下面每一条,都是日志里有明确反证、可以划掉的猜测。
17:59 已把 MSI Afterburner 的配置清空([Startup] 段全为空值,核心与显存偏移均为 0)。清空之后故障反而更严重——18:26 的大爆发发生在清空之后。降回默认没好,就不是超频的问题。
09-16 12:40 与 09-18 17:40 各重装过一次驱动(含一次重启)。两次之后 TDR 都照旧发生。重装无效,排除驱动安装损坏。
诊断已经确认,所以这不是一份“排查清单”,而是“一块显存损坏的卡该怎么处理”。按优先级排列。
显存损坏会静默返回错误结果——不报错,但算出来的数据是错的。渲染、跑模型、以及任何你依赖其输出的活,在这块卡修好之前都换机器做。游戏可以继续玩,因为崩了你至少知道。
Afterburner 里把 Memory Clock 拉到 −800 MHz 上下。硬性读回失败通常降频也救不回来,但降低频率有时能让边缘单元勉强工作,作为应急值得一试。这只是续命,不是修复。
RTX 2070 是 2018 年的卡,官方保修基本已过。但如果这张卡是二手购入、或带店保,先问清楚——在保的话直接走保修,比什么都省事。
这是唯一能真正修好的办法:更换损坏的显存颗粒。带着结论去——“0xD00A0000–0xD0150000 区间读回校验失败,595 次报错”——对方能直接定位到故障区域,不必从头排查。显存维修在维修市场是常规项目,先问价再决定。
八年的卡,如果维修报价接近半张新卡,直接换更划算。这时候连着预算和需求一起考虑,比修一张 2018 年的卡更有意义。
修不了已损坏的单元,但能减缓其余部分继续劣化。顺带一提:nvidia-smi 读不到 2070 的显存温度,要看显存结温得用 HWiNFO64,别被核心温度骗了。
日志中还有 4 次蓝屏记录:0xD1 ×2、0x9C ×2、0xA ×1。其中 0x9C 是 MACHINE_CHECK_EXCEPTION,属于 CPU / 总线级的硬件机器检查异常,和本次显卡故障无关,但性质上值得单独留意。
相关线索:你的内存是 Corsair CM4X16GC4000Z18K2(DDR4-4000 套条),当前跑在 3600 MT/s,而 i7-9700KF 官方只支持到 2666——这属于超频。建议用 TestMem5 跑一轮,排除内存因素。
TdrDelay 被改成了 8 秒注册表 HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers 下的 TdrDelay 当前为 0x8,而 Windows 默认是 2 秒。这个值通常是在跟显卡不稳打交道时被调大的,它只是让 GPU 卡死更久才尝试恢复,并不解决任何问题,而且会让你在游戏里多冻结几秒。排查完成后建议改回默认。
| 项目 | 值 |
|---|---|
| 日志来源 | Windows 系统日志(System 通道),40,378 条事件 |
| 覆盖区间 | 2026-04-28 → 2026-09-18 |
| 显示设备 | PCI\VEN_10DE&DEV_1F02&SUBSYS_8C9D1462&REV_A1 |
| 显存容量 | 8,192 MiB GDDR6 |
| 功率上限 | 175 W(默认,未被拉高) |
| WHEA-Logger 事件 | 0 条 |
| 显存测试 | Memtest_vulkan · 2026-09-18 20:13 开始 |
| 测试结果 | 595 次报错 · 累计错误计数 11,832 |
| 错误模式 | INITIAL_READ × 494 · NEXT_RE_READ × 101 |
| 日期 | Event 13 SM 异常 | Event 153 GPU 错误 | Display 4101 TDR 恢复 |
|---|---|---|---|
| 2026-05-06 | 0 | 1 | 0 |
| 2026-06-05 | 0 | 2 | 1 |
| 2026-09-16 | 0 | 13 | 5 |
| 2026-09-18 | 108 | 32 | 9 |
| 时间 | 代码 | 转储文件 |
|---|---|---|
| 2026-06-08 15:37 | 0x000000D1 | 060826-11546-01.dmp |
| 2026-06-13 14:07 | 0x000000D1 | 061326-12515-01.dmp |
| 2026-06-18 17:31 | 0x0000009C | 061826-11640-01.dmp |
| 2026-07-02 12:20 | 0x0000009C | 070226-11500-01.dmp |
| 2026-07-11 12:07 | 0x0000000A | 071126-11500-01.dmp |