服务器 频道

全新视觉盛宴 Fermi架构Quadro显卡横评

  Fermi是第一个支持并行线程处理(PTX)2.0指令集的体系架构。PTX是一个底层的虚拟机和ISA架构,来支持并行运算。在程序安装的时候,PTX指令就会被GPU的驱动程序翻译为机器码。
PTX最主要的目标:

  提供跨多卡GPU的稳定的ISA指令

  在编译的时候使得程序达到GPU最高的性能

  提供系统无关的ISA指令,可供C,C++,Fortran或者其他语言使用

  提供代码分布式的ISA架构给应用程序和中间件开发者

  提供通用的ISA架构,来支持不同平台上的代码的优化和转译

  使得开发lib和高性能的kernel函数更加的简便

  提供scalable的编程模式,可以使得程序支持不同数目cores的GPU

  PTX 2.0 有一些很多新的特性,使得GPU在有更高的可编程性,更精确,和提供更高的性能。这些包括:完整支持IEEE 32bit 的单精度浮点数,统一的寻址支持变量和指针,新的指令来支持OpenCL和DirectCompute。最终刚要的是,PTX 2.0对完整支持C++做了特殊的设置——统一寻址完整支持C++。

PTX2.0ISA与统一空间寻址

  Fermi和PTX2.0ISA实现了统一寻址空间,可以统一寻址3种不同的内存地址(线程私有变量,block的共享内存和全局内存)来进行存/取操作。在PTX1.0中,存/取指令需要指定在这三种地址中那一个进行寻址,程序可以在编译的时候就知道在特定的那个地址进行寻址。这样就很难完全满足C和C++的指针在编译的时候指向不确定地址,而只有在运行的时候才知道确切地址的情况。

  通过PTX2.0的统一寻址空间,让三种地址空间通过唯一的连继续的地址空间进行寻址。单一的寻址空间进行统一的存/取指令操作在这样的地址空间上,代替了在三种空间上都要进行不同存/取的方法。40bit位宽的可以支持TB的寻址空间,ISA架构可以提供64bit的位宽寻址空间,为将来的扩展提供支持。

  统一地址空间的实现,可以让Fermi真正完全的支持C++编程。在C++中,所有的变量和函数都在一个object中,通过指针进行访问。PTX2.0就可以通过统一指针管理方式找到任何内存上的目标,Fermi提供的硬件寻址方式可以自动的把指针映射到正确的物理地址。

  Fermi和PTX2.0ISA同样提供C++虚函数的支持,函数指针的支持,新建和删除操作动态分配目标和回收资源。C++的异常操作try和catch同样被支持。

  block组织的grid,同步,同一个block里面共享内存,全局内存,还有院子操作。Fermi第三代支持CUDA的架构,很自然很好的优化支持了这些API。更特别的,Fermi利用标准的转换方式,从硬件上支持OpenCL和DirectCompute的接口指令,可以让图形计算和通用计算很简单的操作在相同的数据上。PTX 2.0 ISA同样增加了对DirectCompute的指令population count,append和bit‐reverse。

0
相关文章