中EN
概念页

并行图形架构与排序分类

Parallel Graphics Architectures & Sort Taxonomy

提升图形速度的最佳方式是并行:多个几何单元、光栅化单元和像素处理单元同时工作再合并结果。Amdahl 定律指出串行部分限制总加速比。由于 API 要求按提交顺序处理图元,并行单元之间必须在某处做"模型空间到屏幕空间"的排序,按排序位置分为 sort-first、sort-middle、sort-last fragment、sort-last image 四类,各有负载均衡与带宽取舍。本页还简述光线追踪硬件的共同特征。

Amdahl 定律(23.9 节)

a(s,p)=1s+1−spa(s,p)=\frac{1}{s+\dfrac{1-s}{p}}

ss 为串行比例,pp 为并行部分的最大提升倍数(如从 1 个多处理器加到 4 个,p=4p=4)。例:s=0.1s=0.1、p=20p=20 时 a=1/(0.1+0.9/20)≈6.9a=1/(0.1+0.9/20)\approx6.9,远不到 20;p→∞p\to\infty 时也只有 a=10a=10。并行部分大幅改进后,串行部分就越来越成为限制。

四种排序架构

几何单元和像素单元可能映射到同一组统一 ALU,但仍需理解排序发生在何处。

类型排序位置特点例子
sort-first几何阶段之前屏幕分区,每区由一条完整管线"拥有";图元先粗处理以确定发往哪些区。单机上最少被探索,多屏/多投影大屏中每屏一台计算机Chromium 集群系统
sort-middle几何之后、光栅化之前几何单元平均分配几何,变换后按不重叠瓦片分箱,一个三角形可能进多个瓦片;每对光栅/像素单元有片上瓦片帧缓冲,访问极快;部分架构对不透明几何做逐瓦片 z-prepassARM 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 发布了商用产品。共同特征:

  1. 常用基于 AABB 的包围体层次 (BVH);
  2. 降低光线-盒测试精度以减少硬件复杂度;
  3. 用可编程核心做着色。

Imagination 的光线追踪单元包含光线求交处理器和一致性引擎(把性质相近的光线聚在一起处理以利用局部性),还有专门构建 BVH 的单元。研究方向包括低精度遍历、压缩 BVH 表示和能效。

  1. realtime_rendering_4ed.pdf 第 23 章 Graphics Hardware

相关页面

图形学GPU 架构案例GPU Architecture Case StudiesRTR4 第 23.10 节剖析三种架构:面向移动设备、以能效为先的 sort-middle 分块架构 ARM Mali G71 Bifrost;NVIDIA Pascal(GTX 1080)的 SM/TPC/GPC 层级与介于 sort-middle 和 sort-last fragment 之间的 tiled caching;AMD GCN Vega 的计算单元、异步计算引擎、DSBR 与 HBCC。硬件厂商通过对尚未制造的 GPU 做大量参数化仿真来决定 MP 数量、缓存、光栅引擎、ROP 数等——各种单元数量的原因归根结底是"这样效果最好"。图形学GPU 并行架构GPU Parallel ArchitectureGPU 为吞吐量而设计:芯片大部分面积是成千上万个着色器核心,而不是缓存和控制逻辑。它靠在大量线程组 (warp/wavefront) 之间快速切换来隐藏访存延迟,用 SIMD 让一组线程锁步执行同一条指令。理解占用率和线程分歧,是写出高效着色器的关键。图形学渲染管线Rendering Pipeline渲染管线是实时图形的核心:给定虚拟相机、三维物体、光源等,把场景转换成一张二维图像。RTR4 把它粗分为四个功能阶段:应用、几何处理、光栅化、像素处理,各阶段并行执行,整体速度由最慢的阶段决定。图形学渲染瓶颈定位与性能度量Bottleneck Location & Performance Measurement渲染管线中最慢的阶段(瓶颈)决定整体吞吐量。优化就是"找到瓶颈 → 优化到瓶颈转移 → 重复",并让非瓶颈阶段做到与瓶颈同样多的工作以换取画质。定位靠逐阶段增减负载的实验和性能工具;度量要用毫秒帧时间而不是 FPS。两条箴言:了解你的架构 (KNOW YOUR ARCHITECTURE);测量、测量、再测量。图形学延迟着色Deferred Shading延迟着色先用一遍几何 pass 把所有可见表面的材质参数写入多张渲染目标(G-buffer),再以后处理方式对这些存储值逐光源计算光照,从而把"几何可见性"与"光照"彻底解耦,并把材质与光源分离。它避免了着色的过度绘制、简化了着色器管理、天然适合贴花,但 G-buffer 占用显存和带宽,且难以直接支持透明和 MSAA。本页也覆盖前向渲染下限制光源影响范围的基础手段与"光照预通道 (light prepass)"类混合方案。图形学空间数据结构Spatial Data Structures空间数据结构把几何体按 n 维空间组织起来,通常是层次化的树,使"几何体是否重叠"一类查询从 O(n) 降到大约 O(\log n)。常见类型有包围体层次 (BVH)、BSP 树(轴对齐的 k-d 树与多边形对齐两种)、四叉树/八叉树(含松散八叉树),以及更偏向组织模型关系的场景图。它们是剔除、光线求交、碰撞检测等加速算法的基础。游戏数学光线求交测试Ray Intersection Tests光线求交用于拾取、光线追踪、地面高度查询等。本页给出四类经典测试:光线-球(代数解与带早期拒绝的几何优化解)、光线-盒(平板法与光线斜率法)、光线-三角形(Möller-Trumbore,直接从顶点求重心坐标与距离)、光线-多边形(先求平面交点,再投影到二维做交叉数测试)。共同思路是先做便宜的拒绝测试、推迟除法与开方、必要时降维。游戏开发多线程渲染与任务系统Multithreaded Rendering & Task SystemsCPU 时钟频率约在 2003 年停在 3.4 GHz 附近后,性能来自多核。应用阶段的优化一是让代码与内存访问更缓存友好,二是利用多核:多处理器流水线(时间并行,提高吞吐但增加延迟)、并行处理(空间并行,延迟更低)以及两者结合的任务系统;图形 API 用命令缓冲让多个线程并行录制绘制命令,新一代 API(DirectX 12、Vulkan、Metal)把更多责任交给应用以降低驱动开销。综合帧时间预算与渲染性能Frame Budget & Rendering Performance本页把 wiki 中分散在 RTR4 第 18~23 章的性能知识串成一条线:一帧的时间预算由最慢的管线阶段决定,先用毫秒帧时间度量并定位瓶颈,再按瓶颈所在位置——CPU/驱动、几何、像素、带宽/内存——选用对应手段;最后从 GPU 硬件机制(占用率、HiZ/early-z、压缩、分块架构)理解这些手段为何有效。各结论的细节与出处见所链接的概念页。图形学硬件光线追踪管线Hardware Ray Tracing Pipeline高端 GPU 提供硬件加速的光线追踪,它像 GPU 中独立于光栅管线和计算管线的另一条管线,但能与它们协调同步。场景几何要先组织成两层加速结构(TLAS 实例层与 BLAS 几何层),光线发射后由 any-hit、closest-hit、miss 等着色器处理结果。由于还不够快,GPU 光追通常与光栅化结合成混合渲染:先光栅化 G-buffer,再对镜面、反射和间接光发射光线。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原