革命性DX11架构!GTX480/470权威评测
第五章/第三节 Fermi计算架构:恐怖的双精度性能
Fermi是NVIDIA新一代图形架构的开发代号,包括GeForce、Quadro、Tesla在内的三种产品都将基于Fermi架构设计;GF100是该架构第一颗GPU的核心代号;GTX400系列则是NVIDIA第一代DX11显卡,GTX480和GTX470是该系列基于GF100核心的高端显卡产品。基于Fermi架构的计算处理器则被称为Tesla C2050/C2070。
第一款基于Fermi架构的GPU就是GF100,不管是民用级的GeForce还是专业级的Tesla,其GPU核心及架构是完全相同的。此前已经详细介绍了它的图形架构,此处着重介绍并行计算方面的内容。
首先我们来看看Fermi的计算架构与图形架构有何不同呢?原来对于图形架构最重要的光栅化引擎与多形体引擎都不见了,GF100的四块GPC也不再区分,剩下的只有SM、CUDA核心还有缓存。
Fermi的16个SM分布在通用L2缓存的周围。每个SM都是一个垂直的矩形条,包含一块橘色区域(调度和分配)、一块绿色区域(执行单元)和一块淡蓝色区域(寄存器和L1缓存)。
Fermi的流处理器簇已经是第三代了,其改进其实之前在图形架构部分也介绍过,因为这些对于图形渲染或多或少还是有点用的,当然对于科学计算来说简直是革命性的:
首先CUDA内核中的FPU采用了最新的IEEE 754-2008浮点标准,为单精度和双精度算法都提供了FMA指令,FMA在做乘法和加法运算的时候只在最后作一次舍入,不会在执行加法的时候就出现精度损失,FMA的精度比把操作分开执行时更高。
其次,NVIDIA上代的GT200和对手最新的RV870在执行整数型加、乘指令时仅支持24bit精度,因此整数算法需要多指令的模拟序列。而对于Fermi,全新设计的整数ALU支持32位精度,面向所有符合标准编程语言要求的指令。同时,还对该整数ALU进行了优化,使其有效地支持64位及扩展的精度操作。它支持各种指令,包括Boolean(布尔)、shift(位移)、move(数据传输或赋值)、compare(比较)、convert(转换)、bit-field extract(位平面提取)、bit-reverse insert(位反转插入)和population count(计数)。
最最重要的一点,Fermi的双精度运算能力达到了单精度的一半,而上代GT200的双精度能力只有单精度的1/8,对手的RV870是1/5,显而易见此次双精度运算能力的提升是革命性的。
此外,Fermi架构中的双Warp调度器是完全独立的,无需对指令流内的相依性进行检测,在这种双指令发射模型下,Fermi的硬件性能非常接近与理论峰值。