Wizard架构
今天IMG发布的第一个Wizard GPU,就是GR6500。GR6500是6XT系列的GX6450的一个改进版本,一样具有128个ALU并且增加了IMG的光线追踪单元。从较高的层次来看,GR6500在负责传统像素渲染的硬件上没有任何更新,并且由于我们在上一篇深入分析Rogue架构的文章中已经深入解剖了6XT的架构,我们在这里将专注于解读新的光线追踪单元。
如上两张图:上为Rogue,下为Wizard,可见Wizard是直接在Rogue基础之上增加的光线追踪模块。
Wizard的光线追踪由4个模块完成。
Ray Tracing Data Master(光线追踪数据管理器,RTDM)
Ray Tracing Unit(光线追踪单元,RTU)
Scene HierarchyGenerator(场景层次生成器,SHG)
Frame Accumulation Cache(帧累加缓存,FAC)
这些模块沿着Rogue架构的总线排布,在直接与Unified Shader Cluster(统一着色器簇,USC)阵列连接的情况下,允许它们直接向像素渲染单元传送数据,并且从中获取用于进一步计算的数据。
我们从RTDM开始。这是负责将光线数据送回像素渲染单元的模块。RTU计算光线与交点,RTDM将这些用于确定最终像素分辨率的数据传回像素渲染单元,同时光线的数据被用于计算这些像素值。
同时,RTU是IMG光线追踪单元的核心部分。作为一个固定功能不可编程的硬件,RTU完成了实质上的光线追踪工作。RTU包括两个子模块:Ray Interaction Processor(光线交错处理器,RIP)和Coherency Engine(聚合引擎,CE)。RIP是一组ALU,负责依次追踪驻留的光线,CE负责使光线保持有序和聚合,以更有效率的计算。
特别的是,RTU是一个独立的单元。也就是说,它不依赖于Shader中的ALU的计算资源,让Shader阵列可以专注于传统的像素渲染工作。这意味着增加的光线追踪单元不会影响理论上的像素渲染性能。但是我们可以预见到在实际中,RTU会消耗一定的内存带宽。
最终就是SHG和FAC了。IMG告诉我们,这些模块受到了相当的限制。我们除了知道SHG适用于动态对象更新,以及FAC可以提供对帧缓冲区零散数据的写合并之外,我们对这二者了解甚少。在后面的情况下,这看起来就像是实现一个对于自然混乱的自然光追踪的补偿,不过也使得内存与缓存的高效操作变得困难。