
第一代GPU(1999年以前):部分功能从CPU分离,实现硬件加速
GE(Geometry Engine)为代表,只能起到3D图像处理的加速作用,不具有软件编程特性
第二代GPU(1999年-2002年):进一步硬件加速和有限的编程性
1999年NVIDIA GeForce 256将T&L(Transform and Lighting)等功能从 CPU分离出来,实现了快速变换
2001年NVIDIA和ATI分别推出的GeForce3和Radeon 8500,图形硬件的流水线被定义为流处理器,出现了顶点级可编程性,同时像素级也具有有限的编程性,但GPU的编程性比较有限
第三代GPU(2002年以后):方便的编程环境(如CUDA)
2002年ATI发布的Radeon 9700和2003年NVIDIA GeForce FX的推出
2006年NVIDIA与ATI分别为推出了CUDA(Computer Unified Device Architecture,统一计算架构)编程环境和CTM(Close To the Metal)编程环境
随着GPU可编程性不断增强,特别是CUDA 等编程环境的出现,使GPU通用计算编程的复杂性大幅度降低。 由于可编程性、功能、性能不断提升和完善,GPU已演化为一个新型可编程高性能并行计算资源。 全面开启GPU面向通用计算的新时代已到来。
基于流处理器阵列的主流GPU结构
以NVIDIA的GeForce8800GTX和ATI的HD 2900为代表 GeForce 8800GTX包含了128个流处理器,HD 2900包含了 320个流处理器。这些流处理器可以支持浮点运算、分支处理、流水线、SIMD(Single Instruction Multiple Data,单指令流多数据流)等技术。
基于通用计算核心的GPU结构
Intel Larrabee核心是一组基于x86指令集的CPU核, CPU核拓展了x86指令集,并包含大量向量处理操作和若干专门的标量指令,同时还支持子例程以及缺页中断。
前者相对于后者具有更高的聚合计算性能,而后者则在可编程性上具有更大的优势。