为什么GPU仍具有光栅器?


14

尽管有进步,现代GPU仍具有固定的光栅化器。高度可定制的,带有可编程的着色器,但是仍然不是完全可编程的。

这是为什么?

为什么GPU不能简单地是具有通用计算单元的大规模并行设备,而光栅化器只是用户提供的用于该设备的软件?

具有固定功能的硬件是否在性能上如此有益,以致于这种方法不可行?


1
“为什么图形处理单元不在通用处理单元中”,您对此有疑问吗?
Andreas

1
@Andreas不,我的问题就是帖子中所说的。当光栅化器可以用软件完成时(实际上它们已经可以用OpenCL或计算着色器完成),为什么光栅化器仍然是硬件的一部分。问题是为什么它并不常见...也许只是性能,我不知道,这就是为什么我要问...
mrpyo

您可以绕过光栅化,并在现代GPU上使用计算单元实现自己的光栅化器,而我实际上知道有人为特定目的而这样做。
JarkkoL

光栅化器将矢量多边形转换为一束我们可以点亮的像素。当我们不再有像素或停止使用矢量几何时,我们将不再需要光栅化器。无论管道的其余部分是什么样子,在一天(或一帧)结束时,都需要像素。光栅化器仅告诉我们给定三角形涉及哪些像素。所有这些都是可编程的-如果您希望光栅化器提供不同的输出,请发送不同的三角形。或者只是将所有内容绘制到计算着色器中的渲染纹理,然后使用与视图对齐的四边形将其着色到屏幕上。
3Dave

Answers:


15

简而言之,性能原因就是为什么它们不可编程。

历史与市场

过去,顶点和片段处理器曾经有单独的内核,以避免过大的FPU设计。例如,您只能在片段着色器代码中执行一些数学运算(因为它们仅与片段着色器最相关)。对于不会最大程度发挥每种核心潜力的应用,这将产生严重的硬件瓶颈。

随着可编程着色器的流行,通用单元被引入。在硬件中实现了越来越多的图形流水线阶段,以帮助扩展。在此期间,GPGPU也变得越来越流行,因此供应商不得不采用其中的某些功能。值得注意的是,尽管GPU的大部分收入仍是视频游戏,所以这不会影响性能。

最终,英特尔决定采用Larrabee架构投资可编程光栅器。该项目本来应该是开创性的,但是性能显然不如预期。它已关闭,并且部分产品已被Xeon Phi处理器处理。值得一提的是,其他供应商尚未实现此功能。

尝试软件光栅化器

已经尝试通过软件进行栅格化,但是它们似乎都与性能有关。

一个显着的努力是一个由Nvidia公司试图在2011年这个文件。该版本是在Larrabee终止时发布的,因此很有可能是对此的回应。无论如何,其中都有一些性能指标,并且大多数都表明性能要比硬件光栅化器慢许多倍。

软件栅格化的技术问题

Nvidia论文面临许多问题。但是,以下是软件光栅化程序的一些最重要的问题:

大部分问题

  • 插值: 硬件实现在专用硬件中生成插值方程。这对于软件渲染器来说很慢,因为它必须在片段着色器中完成。

  • 抗锯齿: 抗锯齿(特别是内存)也存在性能问题。有关子像素样本的信息必须存储在片上存储器中,不足以容纳这些信息。Julien Guertault指出,使用软件可能会使纹理缓存/缓存变慢。MSAA当然存在问题,因为它会使高速缓存(非纹理高速缓存)溢出并从芯片外进入内存。光栅化器压缩存储在该内存中的数据,这也有助于提高性能。

  • 功耗: Simon F指出功耗会更低。该论文确实提到了自定义ALU位于光栅器中(这将减少功耗),这是有道理的,因为过去片段和顶点处理单元曾经具有自定义指令集(也可能有自定义ALU)。当然,这将成为许多系统(例如移动系统)的瓶颈,尽管这不仅影响性能。

摘要

TL; DR:存在太多效率低下的问题,软件渲染无法克服,这些事情加起来。还有许多更大的限制,尤其是在处理VRAM带宽,同步问题和额外的计算时。


我认为,如果框过滤足够,那么您就不需要存储亚像素样本,那么您就可以进行移动平均。
joojaa

2
我怀疑纹理采样和缓存也可能是硬件实现允许性能的区域,否则将无法通过软件实现来实现。
Julien Guertault '16

3
@aces另一个值得一提的是力量。专用硬件通常仅用一小部分电源预算即可完成相同的工作,而且由于电源节流已经成为问题,尤其是在移动设备上,完全可编程将使情况更加恶化。
西蒙F

@JulienGuertault公平的观点,但是我认为这主要适用于MSAA。测试结果似乎表明,当一切都适合片上存储器时,这并不是一个大问题(尽管这可能会对性能产生一些影响)。
2013年

@SimonF我认为这也很重要。我把它包括在答案中。
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.