服务器 频道

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

 

Fermi图形渲染架构分析(二)

  双指令发送单元

  Fermi的每一个SM都有两个指令发送单元,可以同时让两个warp相互独立的并发运行。Fermi的Dualwarp调度机制可以同时并发调度两个warp的一条指令分别在16个一组的CUDAcores上进行计算,或者在16个存/取单元运行,或者4个SFU上运行。Fermi的调度器并不需要在指令流之间进行附属检查。利用如此优美的双发射调度机制,使得Fermi可以让硬件的计算能力达到极致。

Fermi图形渲染架构分析(二)

  非常多的指令可以进行双发射,例如两条整数运算指令,两条浮点数运行指令,或者混合的整数,浮点,存 取,和SFU特殊处理指令都可以被并发执行。单精度和双精度的指令一样可以并发执行。

  容量为64KB的共享内存与L1缓存

  在核心上的共享内存对可编程性和运行效率都是强有力的支持。共享内存可以让同在一个block的线程之间进行协作,并且可以重复利用在片上的内存,来减少片外内存访问的开销。共享内存在很多高性能CUDA应用程序中都起到了关键的作用。

  G80和GT200的每一个SM都有16KB的共享内存。在Fermi的架构中,每一个SM都有64KB的共享内存,这些内存可以被配置成48KB的共享内存和16KB的L1缓存,或者配置成为16KB的共享内存和48KB的L1缓存。

  对于已经使用共享内存的程序来说,可以提供3倍的共享内存的支持,尤其是那些由于带宽引起的问题。对一些已经使用了共享内存作为缓存的应用程序来说,代码可以简化为直接使用系统硬件提供的缓存,同时还可以使用16KB的共享内存来使线程进行交互。最好的情况就是一些原本就没有使用共享内存的程序,直接利用L1缓存,可以使得CUDA程序运行需要更少的时间,得到更高的性能。
 

0
相关文章