● 串场:缓冲体系
作为GPU大百科全书中唯一出现的非处理性单元,缓冲分布在整个GPU内外,虽然它们并不直接参与任何运算和控制动作,但却担负着提升GPU执行效率的重要使命。
现代GPU的缓冲体系十分庞大,它包含了由体积、延迟及位置决定的4个主要的组成部分,分别是显存(Memory)、纹理缓存(Texture cache)、共享缓存(shared)及寄存器(Register)。显存置于GPU芯片外部,通过GPU内部的显存控制器进行控制和操作。纹理缓存、共享缓存及寄存器则集成在GPU内部,分别供TMU和ALU控制及使用。
GPU缓冲体系
显存作为缓冲材质等大尺寸信息的场合,一直以来都是显卡中最引人注目的性能指标之一。几乎与显卡同时出现的显存在经历了上古时代的EDO-RAM(Extend Data Output DRAM)甚至是FP-DRAM(Fast Page DRAM)向SDRAM的转变之后,其发展进入了GDDR的快车道。目前的中高端显卡多采用GDDR5显存,频率维持在4000MHz~5000MHz的范围内。充足的显存容量和显存带宽,是保证GPU材质性能以及最终渲染性能的重要要素之一。
和显存不同,由于显卡最初的工作并不涉及材质工作,所以纹理缓存的历史远没有显存来的悠久,它是在图形效果发展带来的纹理尺寸迅速增加之后才应需求出现的。诸如mip-mapping以及Generating Lightmaps之类的复杂纹理和操作也被更多的使用在了图形效果的表达过程中,这些操作让TMU获得一套更加快速有效的暂存系统的愿望变的迫切起来,于是纹理缓存便开始充当显存到TMU单元的有效缓冲了。
Shared的出现则要更晚一些。当图形API进化到DirectX 10之后,ALU面对的运算环境发生了本质的变化,大幅增加的运算灵活度要求硬件能够为ALU提供一个方便调用且独立操作的临时暂存空间,于是Shared便应运而生了。Shared只读不可写,它只需要为ALU临时释放结果提供服务即可。Shared的出现对Shader的执行有一定意义,但更多的作用还是在于通用计算及通用计算参与的后效处理领域。
寄存器同显存和cache一样,都是发源于CPU的重要缓冲组成部分。长期以来,寄存器都伴随在运算单元旁边,以最及时的延迟和最大的带宽为运算单元提供着指令寄存空间(IR)、程序计数缓冲(PC)以及累加器(ACC)等多方面的服务。寄存器具备最高的运行速度以及0t延迟的特性,其极高的晶体管成本令其在体系中的总量非常少。
缓冲体系虽然不是直接的运算及控制单元,但它们扮演着通过缓冲数据流来掩盖体系延迟的重要角色。它们并不是歌者,不具备一展歌喉并博得满堂喝彩的能力,但它们穿插在歌者之间的串场却能将演出的气氛很好的维持下去。无论是显存的溢出或者带宽不足、纹理缓冲的拖沓还是Shared的表现不佳,都会给不同图形过程的执行平添更大的延迟。
推荐经销商