并行图形架构与排序分类
Parallel Graphics Architectures & Sort Taxonomy
提升图形速度的最佳方式是并行:多个几何单元、光栅化单元和像素处理单元同时工作再合并结果。Amdahl 定律指出串行部分限制总加速比。由于 API 要求按提交顺序处理图元,并行单元之间必须在某处做"模型空间到屏幕空间"的排序,按排序位置分为 sort-first、sort-middle、sort-last fragment、sort-last image 四类,各有负载均衡与带宽取舍。本页还简述光线追踪硬件的共同特征。
Amdahl 定律(23.9 节)
为串行比例, 为并行部分的最大提升倍数(如从 1 个多处理器加到 4 个,)。例:、 时 ,远不到 20; 时也只有 。并行部分大幅改进后,串行部分就越来越成为限制。
四种排序架构
几何单元和像素单元可能映射到同一组统一 ALU,但仍需理解排序发生在何处。
| 类型 | 排序位置 | 特点 | 例子 |
|---|---|---|---|
| sort-first | 几何阶段之前 | 屏幕分区,每区由一条完整管线"拥有";图元先粗处理以确定发往哪些区。单机上最少被探索,多屏/多投影大屏中每屏一台计算机 | Chromium 集群系统 |
| sort-middle | 几何之后、光栅化之前 | 几何单元平均分配几何,变换后按不重叠瓦片分箱,一个三角形可能进多个瓦片;每对光栅/像素单元有片上瓦片帧缓冲,访问极快;部分架构对不透明几何做逐瓦片 z-prepass | ARM Mali(分块架构) |
| sort-last fragment | 光栅化之后、像素处理之前 | 片元只发往一个像素单元,无重叠,最优;但一个光栅单元处理大三角形而另一个处理小三角形时会失衡 | AMD GCN |
| sort-last image | 像素处理之后 | 一组独立管线各自渲染带深度的图像,最后按 z 合成;无法完整实现 OpenGL/DirectX(要求按顺序渲染);管线末端带宽巨大,当前架构都不采用 | PixelFlow(还采用延迟着色) |
flowchart LR
A["应用"] --> S1{sort-first}
S1 --> G["几何 G"]
G --> S2{sort-middle}
S2 --> R["光栅 R"]
R --> S3{sort-last fragment}
S3 --> P["像素 P"]
P --> S4{sort-last image}
S4 --> D["显示"]如上图,四个菱形是排序可能发生的四个位置。
补充:
- sort-last image 用于大型拼接显示时,节点间要传输大量图像和深度数据;Roth 与 Reiners 用各处理器结果的屏幕与深度包围范围优化传输与合成;透明物体难以分开合成,通常发给所有节点。
- Eldridge 等的 Pomegranate 是 sort-everywhere 架构:在 G 与 R、R 与 P、P 与显示之间都插入排序阶段,用点对点高速网络实现,仿真显示增加管线时性能近线性增长。
负载均衡与通信
图形系统是多处理系统,有两个经典问题:负载均衡与通信。管线中多处插入 FIFO 队列以免某部分停顿,例如几何与光栅之间的 FIFO 可缓冲三角形,以防光栅单元因巨大三角形跟不上。总线带宽过低或使用不当会成为瓶颈,所以要设计应用的渲染系统使瓶颈不落在总线上(如主机到图形硬件的总线)。
光线追踪硬件(23.11 节)
研究始于 Schmittler 等(2002,遍历与求交,着色为固定功能),Woop 等加入可编程着色。Imagination、LG、三星都提出过实时光线追踪硬件,撰写时只有 Imagination 发布了商用产品。共同特征:
- 常用基于 AABB 的包围体层次 (BVH);
- 降低光线-盒测试精度以减少硬件复杂度;
- 用可编程核心做着色。
Imagination 的光线追踪单元包含光线求交处理器和一致性引擎(把性质相近的光线聚在一起处理以利用局部性),还有专门构建 BVH 的单元。研究方向包括低精度遍历、压缩 BVH 表示和能效。
出处
- realtime_rendering_4ed.pdf 第 23 章 Graphics Hardware