2021 年 9 月 1 日,距离新一轮 AI 浪潮启动还有 15 个月。NVIDIA 当时的股价大约是今天的 1%,所以还在很努力地寻找 GPU 的各种应用场景,比如:数字币。
在这天,NVIDIA 发布了一张专门用于数字币挖矿的显卡 CMP 170HX。这张卡的核心基本就是 A100。但 NVIDIA 为确保其只能用于挖矿,对 FP32、TF32 等挖矿用不上的算力进行了大幅度削减。比如 A100 的 TF32 是 156 TFLOPS,但 CMP 170HX 则只有 15 TFLOPS。另外 PCIe 带宽等也被大幅削弱了。
更令人发指的是,CMP 170HX 本质上是英伟达把那些未能通过 A100 标准测试的瑕疵芯片再砍一刀后进行废物利用的产品,所以 CMP 170HX 其实物理上就有 80G 的显存,但 NVIDIA 通过固件限制只用了其中 10G。
这些年硬件社区一直在想办法突破 NVIDIA 的限制。最近,终于有人完成了最后一跳,把 CMP 170HX 被锁定的性能解放了:FP32 算力提升 31 倍,FP64 算力提升 60 倍,TF32 算力提升 15 倍,10 GB 显存变成 80 GB,PCIe 从 Gen1 × 4 变成 Gen2 × 16。
虽然 NVIDIA 的限制是在固件里做的,但破解并不是通过修改固件实现的。NVIDIA 显卡内有独立的处理器专门用来验证固件的数字签名。就算有人能搞清楚固件的格式,修改后的固件也无法在显卡里加载运行。
在整个破解中,只有把 PCIe 位宽从 ×4 变成 ×16 需要手工补焊 24 颗 100nF 的电容,其余都是通过利用固件漏洞。
CMP 170HX 的固件里有一段接收 DMA 数据的函数,在处理数据时没有限制用户输入的长度,存在缓冲区溢出漏洞。虽然 NVIDIA 的固件也用了类似于 Stack Cookie 的缓冲区溢出保护机制,但问题是 NVIDIA 的编译工具链犯了一个低级错误:把 Stack Cookie 放在了可写全局数据段的顶部,这就导致了通过溢出不仅可以覆盖返回地址,进一步也可以改写 Stack Cookie,所以 Stack Cookie 的保护也就被绕过了。
同时,研究者利用固件自身的代码构造 ROP Chain,获得了 LEVEL2 特权,然后通过修改影子寄存器中的显存限制位、算力限制位、链路限制位,实现了释放显存、解锁算力等破解操作。
影子寄存器相当于显卡的配置中心,位于一块独立的电力供应区域。所以,完成破解后,只要不拔服务器电源,那么无论是操作系统重启还是对显卡进行功能级复位,破解都会一直生效。
最终破解后实现的性能虽然比 A100 还是略差些,但已经完全可以用于 AI 推理了。
目前二手市场 A100 要几万元,而 CMP 170HX 只要几千元。不过估计 CMP 170HX 很快会涨价,然后大家也会对“知识就是金钱”这句话有更深刻的理解。
doi.org/10.5281/zenodo.20916111