● 不一样的cache
作为uncore部分改动的起点,我们首先要面对的是全新加入的cache体系。
在传统的RV体系中,缓存的改进力度一直都比较小。R600时代引入的GDS直到今天仍然是AMD GPU构架中最重要的临时缓冲资源,尽管RV770开始AMD引入了LDS作为GDS的补充,但对于LDS的开发长期以来一直进展缓慢,甚至很多程序员至今还在抱怨自己都无法“看到”LDS的存在,更不要说应用了。
Graphics Core Next CU细节
shared作为一种延迟完全透明的只读缓冲体系,相比于可操作且延迟黑箱化的cache有着众多的局限性。除了对编程有很高要求之外,其对游戏以及大部分图形过程的助益都非常的小。有实验证明,大幅改进并扩容的GT200的shared memory,对3Dmark Vantage所带来的提升仅约为3%。相比单纯的shared,cache的优势在于更加灵活,它不仅能充当寄存器溢出缓冲,为特殊程序提供透明延迟的缓存,还可以为其他单元如Texture等的高速缓存,加快对应单元的操作速度。
在Graphics Core Next中,AMD终于为其构架添加了2级unifield cache,从图中我们可以看到,L1直接包含在CU单元之中并同Vector ALU直连,每4组Vector ALU团簇分享16K Data cache,L2 cache位于CU之外且并未与Vector ALU进行直连。
尽管从大方向上看,Graphics Core Next借鉴了费米构架的cache体系的许多经验,但其细节与费米存在不小的差异。首先,Graphics Core Next的cache连接方式与费米不同,ALU并不能直接访问L2。其次,在Graphics Core Next体系中,cache的作用仅仅是单纯的cache,并未与GDS和LDS发生任何关系,这与费米的L1 cache与shared memory根据程序需要机动分配大小的做法完全不同。第三,目前的Graphics Core Next体系中并未包含Tex cache,AMD选择将L2 Data cache直接向TMU开放。
cache体系的出现,极大地缓解了传统RV构架外围资源紧缺的现状,它不仅改善了整个体系寄存器溢出缓冲的环境,更为程序员提供了大量可用资源,为更加灵活的shader提供了先决条件。