论NVIDIA下一代GPU中的ECC内存应用情况
作者: David Kanter 关键字: NVIDIA GPU ECC 内存
GPU计算的潮流
图形显示之外的用于图形计算的GPU市场正在不断增长着,而Nvidia公司的企业战略已经紧紧依赖于这个新兴市场。具体来说,Nvidia正努力把CUDA推向高性能计算(HPC)市场——也就是把图形处理器的强大计算能力和内存带宽,直接转化为计算性能。Nvidia的Tesla产品(为计算而不是显示设计的GPU)已经做了一些宣传推广,但目前其用途还极为有限。至少部分是因为错误检测和纠正(error detection and correction)机制的缺少,GPU集群基本上还不存在。但是我们相信Nvidia的下一个产品版本将会改变这一情况。
HPC对ECC的纠错机制的需要
特别对于HPC世界中典型的重计算负荷的机器——集群服务器来说,ECC已经是基本配置了。所有服务器已经在ECC内存和可靠性、可用性、可维护性(RAS)方面建立了标准(例如ECC缓存功能)。通常,这些RAS特性只是Itanium、PowerPC、SPARC、zArch等专用微处理器家族所特有的,而对作为产业标准的x86服务器在这方面往往落后了一点。没有ECC,建立可靠的集群机简直是不可能事情,因为在DRAM内存里的软错误率太高了——而这一点客户都很清楚。
此外,工艺的改进和半导体设备的按比例缩小趋势导致SRAM、DRAM错误的出现更为普遍。增加密度,提高信号传输率,降低电压,并减少出现单个bit突然成倍增加软错误(SER)风险的情况(这种情况会导致内存数据异常)。不幸的是,半导体的发展都是一些相同的变化——随着时间的推移,价格越来越便宜、速度越来越快。因此他们需要像Nvidia一样,工艺逐步发展至40纳米、28纳米甚至更高。
从历史上看,图形显示世界已不被SER(soft error)所关注——即使由1bit甚至更多bit描述颜色的一个像素不显示了,其实也并不重要。图形应用程序只是不需要和其他系统一样具有相同的容错级别,因为人的眼睛能校正许多错误。随着GPU发展得更为通用,要想跟随CPU的脚步进而提供更强大的功能,错误检测和纠正机制就是实现这一愿景亟待完善的一个方面。例如,GDDR5是包括所有错误检测的第一代图形内存接口(请注意,我们讨论的是GDDR5总线本身,而不是DRAM)。几乎PC机上的每一个高速信令接口都有完整的错误检测和重试机制,例如 PCI-Express、QuickPath(原名CSI)、HyperTransport(HT总线), Fully Buffered DIMM(全缓存模组技术)等。而运行速度达到3.2GT/s的GDDR4仍然没有错误检测机制。
没有ECC和其它形式的错误保护机制,想要做到错误检测唯一的办法是对重要的数值重复计算两次并比对其结果。然而这样处理的话,性能也会减半(虽然有些算法在处理错误的方面很强大)。GPU的主要卖点就是高性能,因此这是个很头疼的问题。双精度运算方面,GT200、GT200b只分别比Nehalem快65%和88%——而采取两次运算方法的话(效率减半)就会比标准CPU的计算速度慢了。
ECC的成本和利润
从工程角度来看,添加对ECC的支持是很自然的事情。ECC要求9组而不是8组DRAM,更多的针脚用来连接额外的DRAM以及内存控制的逻辑电路。这会显著增加生产一个GPU的材料清单,这对价格昂贵利润丰厚的专业级产品Tesla、Quadro来说,根本不是问题。但是它也意味着为Nvidia的GPU增加ECC支持不能提高消费级产品的成本。因为ATI在图形显示产品和Intel早期产品重点控制其售价和利润。
最终把ECC加入到Tesla产品(也很可能是Quadro)会是相当有利的。因为正如以上所说的,它会使得Nvidia在HPC市场上的GPU销售更加成功,同时也会打消部分买家的犹豫。然而把都能运行CUDA的消费级和专业级GPU市场区分开来也会使Nvidia受益。毕竟价格差异足够让消费者考虑放弃Tesla而选择一块Geforce。更重要的是,这会让Tesla和Quadro同ATI、Intel的竞争产品区分开来,进而占据市场优势。
Nvidia的人可不傻,他们在HPC方面有着很强的技术实力和对市场需求的深刻认识(实际上他们甚至已经出版了GPU可靠性探讨的论文)。但是进入一个新的市场不是一步就能达成的——这是个循序渐进的过程,每一代产品都基于前一个产品的成功和反馈。现在,Nvidia已经在HPC领域初步站稳了脚跟,下一步增加ECC内存支持将是很符合逻辑的决策,这将让更多用户考虑使用GPU来满足计算的需要。可能这时候他们正在研究如何对付我们之前提到的GDDR5接口写数据不确定性的问题呢。
ECC内存之外,还可以采取一些更长远的举措。ECC最简单的形式就是SECDED(Single bit Error Correct and Double bit Error Detect),这很可能会在Nvidia的下一代GPU中实现。同样,也有更先进的检测和纠正多bit错误,甚至是整个DRAM坏掉情况的技术。后者可能对Nvidia公司来说更为重要,因为一个DRAM坏掉就意味着需要更换整个产品(不像服务器那样坏掉的内存很容易换掉)。内存系统以外,Nvidia也许正在考虑在芯片内部寄存器和SRAM中使用ECC或者同等的技术,目前这一代GPU中这些空间总共大约有3MB的大小(如果Nvidia放弃使用真正的缓存,其容量将会大幅增长)。但是芯片存储器问题比起目前亟待解决的内存系统可靠性问题来说,都已经算是后话了。
GPU和ECC:时间的问题
我们已经从需求、成本和效益方面列出了Nvidia对GPU增加ECC内存支持的必要性。很明显这是发展的必然,Nvidia的GPU正不不断地朝更像CPU的方向演变着,并且紧紧追随着HPC市场的发展。现在实际上唯一的问题是,Nvidia什么时候增加对ECC的支持——我们最好打赌这将出现在其下一代GPU产品中。