材质单元-架构
著色器核心图表侧边所搭配的是材质单元。ATI 为 R600 选择了 4 个材质单元,每个单元每个周期拥有 8 个材质位址,而其中 4 个位址给双线性用,4 个给 4 个未过滤查询使用。顶点快取可用于顶点存取或其他结构化存取,它也可用在 DX10 游戏中更为流行的置换贴图处理上。
与每个单元搭配的是 20 个材质取样器 (sampler),R600 中总计有 80 个取样器,这些取样器专门捉取对传回资料。根据 ATI 的说法,这不必考虑是浮点或整数资料,每个周期它会传回 4 个过滤的浮点值,也会每周期传回 4 个未过滤浮点或任何其他类型的资料。2400 与 2600 核心功能将维持相同,但由于单元数较少,因此传回数目不会那么多。
和前几代产品相较之下,材质快取较为复杂一些,因为它们已拆开为数个快取。所有 SIMD 阵列只搭配一个统一的 32K L1 快取,而 R500 系例只具备一个 8K 快取 (就每个 SIMD 而言,大了 4 倍)。它是由一个次要的 256K L2 支援 (2600 具有 128K L2,而 2400 则无 L2)。次要快取容许非常大的资料结构,例如大型 (fat) 像素或相当大的材质,目的在于降低用于材质的频宽。
配合材质快取子系统,也存在著顶点快取系统,它称为顶点快取的原因在于这是其主要使用目的之一,但也可用于未过滤材质查询。在资料会被捉取回来的置换贴图、结构化查询阵列与转译为顶点 (render-to-vertex) 阵列的情况下,快取使用相当常见。因为这个快取主要是处理顶点资料,因此称为顶点快取。针对全部的设计用意与目的,这是平行运作的结构化线性快取,有多少资料实际通过这些快取的问题,不一定会比工作必要时的资源可用度来得重要,快取可以仲裁分配到的资源可用度更为重要。就 HD 2400 的例子而言,事实上它是透过材质快取捉取其顶点,硬体会视这些单元为一般资源,并让编译器接收著色器程式码并转换它。这个架构的关键在于编译器转换程式码的好坏,这将决定事情未来的运作方式及你将使用的输送量种类。
在转译为材质等任务中,建立材质并立即使的情况相当常见,但过程中可能会出现问题。材质在使用之前即必须完成绘制的动作。在较旧的处理器 (ATI 与目前 Nvidia) 中,移转到下一命令之前,晶片会先闲置以完成转译材质的动作,同时这也牵涉到效能影响的问题,但 ATI 已在 2000 系列上改变这一点。如先前所提到,自我检查已移到硬体中,因此在进行材质转译时,晶片内横跨材质单元与光栅后端之间会进行一致性检查,驱动程式已不再管这档事,它只是往下传送命令到晶片并填满它。由处理器本身来处理所有单元的同步化。
材质单元-特色
有鉴于处理器内可用的 6 TB 频宽,ATI 想要让 64 像素与 HDR 转译处理成为“第一等公民”。和 X1K 系列相较之下,ATI 决定 8 位元 INT、10 位元 INT、16 位元 INT 与 float16 都一视同仁;X1K 支援未过滤浮点,而过滤是先针对 LOD 运算在著色器内完成。当时的 4 双线性捉取加上实际加权加总,可能需要 6 到 7 个周期来进行。现在 128 位元过滤也完全支援,但针对 128 位元材质则是执行 32x4 的方式,速度也因此减半,因为这是个频宽限制的情况。
每一种格式都支援三线性与各向异性过滤,一如先前驱动程式版本,高品质 AF 模式是预设模式。具备百分比渐近过滤 (percentage closer filtering; PFC) 的深度模板 (depth stencil) 材质也已存在 Nvidia 的硬体中有一段时间了,但在 DX10 中才正式导入,因此 ATI 也将之纳入 600 系列中,这项新功能可换句话说,它会加速软阴影 (soft shadow) 等效果的转译动作。
ATI 也导入一项新标准格式。 那就是 32 位元 HDR 共享指数 (exponent) 材质格式 (9:9:9:5),根据这个格式,RGB 会被标准化 (normalized),并以单一指数用在 RGB 上。材质单元支援高解析度材质 (8192x8192),而且每个周期可执行 2 个材质捉取 (1 过滤与 1 非过滤),并可选择以 4 个未过滤捉取,以取代使用 Fetch4 的 1 个档案捉取。

