如今,T&L处理已经不再由GPU内的固定功能单元完成,而是由完全可编程的统一着色器单元来执行。GPU承担了几乎整个图形渲染流程并且开始在更多由CPU执行的传统任务中扮演重要的角色,例如从2003年开始,在诸如蛋白质折叠、SQL 查询、核磁共振成像重建等具备并行运行特性的计算领域内有了GPU的身影。
当时的GPU仍然使用DirectX、OpenGL这样的图形API来完成非图形计算的应用,这被称之为GPGPU。虽然GPGPU证明了GPU在通用计算上有很大潜力,但这要求程序员必须了解这些图形API和GPU体系结构的知识,求解的问题需要采用顶点坐标、纹理、着色器程序等图形术语来描述。虽然后来斯坦福大学提供了Brook这种高级的GPGPU语言,程序员基本上不需要学习图形学上的概念,但Brook实际上还是基于3D API,只是可以使用类似C语言来编写程序,然后经Brook可以转换成OpenGL GLSL和D3D HLSL。因此Brook虽然简化了GPGPU 的学习过程,但是功能上就受到3D API的约束,诸如像可定址的读操作/写操作等基本的编程特性无法支持,导致编程模型受到很大的约束。
2006年,NVIDIA借发布G80的机会,推出名为CUDA的通用计算架构。CUDA由硬件和软件两部分组成。硬件指的是G80及其衍生的硬件架构;软件指的是CUDA C编译器以及围绕硬件架构开发的的各种工具。通过CUDA的扩展工具,程序员可以直接为针对通用用途的大规模并行处理器编写程序,而不是通过图形API给图形处理器编写程序。对于这种先进的编程模型,NVIDIA称之为GPU Computing。
和G80体系结构参照著名物理学家姓氏命名为Tesla一样,NVIDIA下一代DirectX 11 GPU的体系结构也采用了另一位知名物理学Enrico Fermi(恩里科.费米)的姓氏Fermi来命名。在G80架构的基础上,Fermi架构有重大的跃进,主要体现在性能和可编程性方面的扩展。
事实上NV现在是不是技术的成功者也值得探讨。N和A的架构孰优孰劣只能透过实际检验来衡量,事实上如果所有的测试或者游戏都关闭了优化的元素之后,两家厂商的芯片性能其实一直是在伯仲之间。 Fermi的架构看图的确很吸引人,但是NV忘了一样东西,那就是想象可以无限大,但是后却都只能立足于一片小硅片之上。随着GPU功能的复杂化,制程的更新已经明显跟不上,Fermi迟迟不能生产就是好的例子。NV继续坚持大芯片的道路现在看来无疑是错误的。 事实上NV的确很厉害,它拥有一大堆自有标准,例如PhysX和CUDA。它的确一呼百应,一大堆THE WAY游戏就是证明。但是,今天的NV和当初的3dfx何其相似,抱着自有的标准,做着黄粱美梦。事实上,任何的标准都可以有替代品。当年DirectX替代了GLIDE,今天同样Direct Computing和OpenCL可以替代CUDA和PhysX。希望NV还是要踏踏实实做好芯片的研发,不要以为自有标准是万能的。所谓的合作伙伴都是商人,商人是唯利是图的,当年他们可以抛弃3dfx,今天就可以抛弃NV。