谜一样于GPU的定义,GPU到底是怎么一回事?

神秘的GPU

已经有了一部甚至两部手机,餐厅、酒吧、地铁公交车,以及路上随处可见的低头人士。大家早就看惯了。如果你发现餐桌上没有人低头看手机,你就会起疑心。你去过外星球吗?

手机吸引人们注意力的是它显示的内容。与个人电脑刚出现时文字有限、分辨率低的屏幕相比,现在的智能手机可以达到手掌大小的屏幕。3840×2160的分辨率可以呈现非常丰富的画面元素。

图片[1]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

台式机和智能手机虽然性能差距很大,但一直在互相学习。例如,操作系统界面使用硬件三维加速来提升用户体验:丰富元素的表现力和界面的视觉扩展(如旋转开关),而这些三维硬件加速的实现就是GPU在很多手机和电脑文章中,比如(高通),苹果,还有ARM的Mali。

由于应用的相似性,近年来移动GPU和桌面GPU的发展几乎齐头并进。从理论上讲,如果移动 GPU 放大,它们也可以用于台式机。

图片[2]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

(NV1 推出0)

GPU的全称是Unit,意为图形处理单元。这个概念最早的确认是在1999年英伟达公司发布型号为NV10)的三维芯片时,当时的定义是:

具有每秒超过1000万个三角形的三角形变换能力的三维芯片。

如今,很少有人记得当年提出的 GPU 定义。GPU这个词因为微软7的采用而流行起来。从那时起,微软、ATI(后来的AMD)、英特尔著色器高速缓存是什么,以及几乎整个相关行业和媒体都采用了它,成为了大家。非常熟悉的名词,无论是台式机、服务器、工作站、游戏机,还是移动设备,都已经无处不在。

对比GPU的定义,GPU到底是什么,它是如何实现3D渲染的,以及为什么后来能够胜任非图形计算,知道的人就更少了。本文试图就此作一简要介绍。

GPU是如何实现3D渲染的?

不难理解GPU是如何进行渲染操作的。从宏观上看,可以简化为:

应用程序 -> 几何处理 -> 光栅处理

在图形处理中,应用程序执行的相关操作包括碰撞检测、全局加速算法、动画处理、物理模拟等。

图片[3]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

几何处理是指图元的处理。所谓图元是指点、线、面等几何体。光栅化是指将位置、大小和光照度确定的几何体映射到光栅化后的屏幕空间,如像素等的过程。着色、映射、混合。

在有图形芯片(显卡)之前,几何处理和光栅处理都是由CPU或FPU(浮点单元)和SIMD(单指令多数据)单元辅助的。随着芯片技术的进步,几何处理、光栅处理开始逐渐在专用芯片上实现,然后将这些专用芯片集成为一块,逐渐形成了现在的GPU。移动处理器也经历了 PC 过程。比如高通最早的处理器/7625就没有集成GPU,甚至2D处理都是由CPU来完成的。

图片[4]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

(智能手机和PC一样,经历了无GPU时代)

应用程序将3D渲染或计算所需的数据和指令提交给GPU,GPU进行几何处理和光栅处理。这种处理方法叫做()。

管道可用于将工作拆分为多个处理环节,即所谓的阶段()或功能阶段。这些站本身也可以继续拆分成几个部分,或者可以实现(部分)并行化。.

几何处理阶段需要做什么?

几何处理阶段执行顶点和多边形级别的处理。这一步可以拆解为5站或5步:

• 转换模型和视图 ()

• 顶点着色

•投影

•切

• 屏幕映射

模型和视图转换

模型转换

由于每个模型都有自己的坐标,所以模型在成为屏幕上的图片对象之前,需要变换到多个空间或坐标系中。

模型空间(Model Space,或模型空间)作为对象的坐标称为模型坐标。坐标变换后,模型会处于世界坐标或世界空间(World Space),即模型确定了场景中的方向和位置。

图片[5]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

图片[6]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

我们允许场景中有模型的多个副本(称为引用),并且这些相同大小的引用在同一场景中可以有不同的位置和方向。

视图(或视口)变换

当前实时渲染场景中可以包含很多物体(模型),但只会渲染摄像机(或观察者,即设置的透视图)覆盖的区域。该相机在世界空间中具有位置和朝向。

图片[7]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

为了实现后面的投影和裁剪处理,相机和模型都需要进行视图变换的操作。目的是将相机放置在坐标原点上,使相反方向为Z轴(负方向),Y轴指向上方(上图是从相机正上方向下看,所以Y轴不能给出),X 轴指向右侧。

顶点着色

所谓着色是指确定光对材料的影响的操作。这种操作可能在几何阶段对模型顶点进行,也可能在光栅阶段对每个像素进行,即所谓的顶点着色和像素着色。

图片[8]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

在顶点着色过程中,每个顶点都需要存储一些相关的材质数据,例如顶点位置、法线、颜色以及与着色计算相关的任何其他数字信息。

顶点着色的计算结果(可以是颜色、矢量、纹理坐标和任何其他着色数据)将发送到光栅化阶段进行插值处理。

投影

完成着色处理后,渲染系统会将视觉体转换成一个单位立方体(unit-cube),位于(-1, -1, -1)到(1, 1, 1))在,这个立方体被称为规则的观察体(view),一般使用两种投影方法:平行投影和透视投影。

前者主要用于CAD等软件,后者常用于游戏或虚拟现实中,因为它模拟了我们人类的视觉体验:

图片[9]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

上图分别展示了6s Plus在平行投影和透视投影中的屏幕效果。

三角作物

只有视觉体中的图元才会被传送到在屏幕上绘制这些图元的光栅阶段。在裁剪动作过程中,如果图元的顶点落在视觉体之外,它将能够被裁剪。视体积外的部分被切断,并在视体积与图元相交的地方生成新的顶点,而位于立方体外的旧图元则被丢弃。

图片[10]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

屏幕映射

上一裁剪步骤后位于视觉体中的图元将被转移到屏幕映射阶段,此时的坐标信息仍然是三维的。图元的X、Y坐标转化为屏幕坐标系,屏幕坐标加上Z轴坐标称为窗口坐标。

图片[11]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

我们假设场景要渲染到具有最小角坐标(x1,y1))和最大角坐标(x2,y2))的窗口中,即x1

现在,新的x轴和y轴坐标为屏幕坐标,对应的屏幕像素位置不再是之前的投影处理后立方体使用的投影坐标系。

光栅处理阶段应该做什么?

在获得变换和投影的顶点及其关联的着色信息后,光栅化阶段的目的是计算和设置对象覆盖区域的像素颜色。这个过程称为光栅化或扫描转换,是将二维坐标中包含深度(Z轴)信息和各种相关着色信息的顶点转换为屏幕上的像素。

图片[12]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

这个处理阶段一般可以分为4个工位:

1、三角设置

2、三角形遍历

3、像素着色

4、输出合并

三角设置

在这一步中,将进行三角形曲面的微分以及对三角形曲面数据的其他计算。计算出的数据将用于几何阶段生成的各种着色数据的扫描转换和插值处理。在GPU上,这一步将使用固定的硬件功能单元来实现。

三角形遍历

该步骤用于判断像素的中心是否被三角形覆盖。如果像素被三角形覆盖,则会生成相应的片段()。

查找三角形内部的样本或像素通常称为三角形遍历或扫描转换。

每个三角形对应的片段的属性是从三角形的三个顶点的数据中插值出来的,例如片段的深度值和几何阶段的着色数据。

像素着色

所有的逐像素着色计算都在这一步进行,使用的输入数据是之前插值的着色数据。发送到下一站的像素着色的计算结果可以是一个颜色值,也可以是多个颜色值。

与使用固定硬件功能单元的三角形设置和三角形遍历不同,像素着色现在由可编程 GPU 内核执行。

像素着色依赖的众多技术中最重要的是纹理(),所谓纹理就是将一张或多张图片“粘贴”到一个对象上。

输出合并

这一步的操作主要是将上一步产生的颜色信息进行合并,形成最终的输出像素颜色。

用于存储像素颜色信息的缓冲区称为颜色缓冲区。一般以红、绿、蓝三种颜色元素的形式存储。此外,还有一个深度缓冲区,用于存储像素对应的深度信息值(通常使用Z-)。

图片[13]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

在 GPU 中实现此步骤的功能单元有多种名称,例如 ROP,或 Back-End。

本阶段根据深度缓存中存储的深度信息(depth或Z-)判断是否更新颜色缓存中的颜色值。

例如当前像素的计算深度值(例如0.1)小于深度缓冲区中对应像素的值(例如0.2)),表示当前像素的三角形颜色缓冲区中存储的像素对应的三角形离“相机”更近,所以GPU会计算图元的颜色并更新新计算的颜色值和深度value 给颜色缓冲区和深度缓冲区,否则不会更新当前像素的缓存。

整个场景渲染完成后,颜色缓冲区存储了从相机视角看到的可见图元的颜色值。

这种处理的好处是三角形可以按任意顺序渲染,但如果图元或三角形部分透明,则必须按照三角形层次结构从远到近渲染。这是Z-的主要缺点之一。

除了颜色缓冲区和深度缓冲区之外著色器高速缓存是什么,像素还使用通道或缓冲区技术来过滤和捕获片段()信息。

通常与颜色一起存储在颜色缓冲区中的 Alpha 通道 (Alpha) 包含每个像素的相对不透明度值。在执行深度测试之前,开发人员可以对传入的片段执行称为 Alpha 测试的操作。如果片段的alpha值测试(一般是等于或大于等简单操作)为“false”,则后续对该像素的处理操作将被省略。此操作通常用于确保完全透明的片段不会影响 Z-。

此外,可能还有一种技术叫做蜡板缓存()。作为离屏缓冲区,一般用于存储渲染图元的位置。通常用于处理一些特殊效果,比如在蜡板缓冲区中存储一个“实心”圆,然后再配合其他操作,可以控制叠加图元的颜色值,仅在其定位时显示在这个实心圆圈中,相当于一个面具。

图片[14]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

这些缓冲区统称为帧缓冲区,但一般来说,帧缓冲区特指颜色缓冲区和深度缓冲区。由于图片的渲染需要时间,为了保证图元在显示器或显示屏上显示时已经渲染完毕,人们引入了双缓冲技术。渲染被称为后台缓冲区(back),它被称为渲染的完成。作为前缓冲(front),后缓冲完成渲染后,立即变为前缓冲,前缓冲切换为后缓冲,以此类推。

片段()和像素(pixel)有什么区别?

上面我们提到了片段和像素。像素相对容易理解。严格来说,一个像素对应屏幕上的一个点。它具有屏幕位置的 x 和 y 坐标以及颜色的红色、绿色和蓝色 (RGB) 值。(像素没有 Alpha 通道值)。图形管道所做的就是为输入基元计算屏幕上像素的颜色。

那么,这部电影呢?

三角形遍历和输出合并之间计算出的栅格数据是,它们是像素的前驱,是在遍历过程中从顶点插值出来的。除了像素的 x 和 y 坐标外,片段还有表示深度的 z 坐标和顶点的属性信息(颜色、片段法线、纹理坐标)。

图片[15]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

如前所述,深度坐标记录了图元的相对距离。在深度测试期间被遮挡(或在 alpha 测试中透明)的图元将在输出合并阶段被丢弃。

术语片段是或者是大多数实时图形渲染文档中的一个概念,而 D3D 没有这么严格的区分。片段和像素统称为像素。

我们这里讨论的是以实时三角形渲染为例。除此之外,还有其他的3D渲染管线形式,比如(微多边形)和体素(voxel)渲染。

目前的GPU管线也是按照这个图形管线设计的。一段时间以来,出于成本效益的考虑,GPU的每个功能单元都用专用电路来实现。

但是,在新的GPU中,可编程部分(如顶点程序、片段程序)在指令集上是统一的,所以它们都使用相同的计算单元来运行。

认识到必须使用固定功能的硬件单元来实现主三角设置、遍历和输出合并单元。Intel曾尝试在GPU项目中使用通用单元称为GPU,但最终的结果是没什么,至少说明现阶段或未来很长一段时间可见,实现三角形设置的最合理方式/遍历和输出合并是使用固定功能的硬件单元。

图片[16]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

(英特尔)

实际上,GPU 不仅仅是上面讨论的三维处理和计算单元。广义的GPU还应该包括视频编解码单元、扫描输出单元、总线单元和存储单元。移动 GPU 现在与 CPU、基带和外围单元集成。集成到同一芯片中。这样的芯片称为SoC(片上系统)。SoC 并非手机独有。在此之前的单片机(如洗衣机等,一般几块钱)其实就是SoC。一种实现方式。

GPU在移动应用中的作用

GPU原本是为3D游戏加速而设计的,所以自然最擅长3D游戏加速。现在安卓和iOS上有很多3D游戏大作,比如:劳拉围棋、FIFA系列、真人快打X、格斗、:崛起、超杀等。

图片[17]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

除了游戏渲染加速,智能手机的操作系统界面还使用了GPU硬件加速,比如菜单弹出、桌面翻译等。与使用三维加速的桌面操作系统相比,手机操作系统受制于小屏幕空间,因此三维加速体验带来的空间感拓展更是不可或缺。从.0系统开始,很多用户都觉得系统流畅度有了很大的提升,因为在系统层面推出了GPU硬件加速。

通用计算加速原本是一项针对非移动应用的技术,但随着智能手机的快速发展,很多开发者已经利用GPU的通用计算能力进行了一些有意义的加速。

比如苹果手机上有一个叫极拍的APP,它利用苹果手机的GPU对摄像头拍摄的视频进行实时降噪处理,可以实现苹果手机的夜间视频到单反相机的夜间视频拍摄效果,非常实用有意义。

另一个典型的例子是高通骁龙处理器。ATI是第一家推动通用计算加速的GPU厂商,200 GPU就是从ATI项目衍生出来的。至此,高通骁龙820上的530已经能够辅助全景照片合成,帮助“认知计算平台”识别物体。

图片[18]-谜一样于GPU的定义,GPU到底是怎么一回事?-4747i站长资讯

(《认知计算平台》演示)

GPU在这三个方面的作用直接影响着我们手机的日常应用。很多手机媒体整天口述的使用体验,其实都离不开GPU。

在接下来的《移动图形芯片的故事(二)IMR和TBR/TBDR之间的爱恨情仇》中,让我们一起来看看手机中最常见的GPU品牌的特点。,以及这些功能能给我们的体验带来什么样的改变。

GPU常用术语解析

在下一篇文章中,SIMD、Core、GPU中的线程、统一着色器、纹理单元,这些常见的GPU术语对于一般读者来说是相当陌生或容易混淆的,所以我先来分析一下。

SIMD:

数据,单指令多数据流。目前所有的GPU在基本功能单元层面都属于SIMD(业界也接受提出的SIMT-单指令多线程),一般为16通道SIMD或32通道SIMD。

“核心”或核心:

目前在 GPU 行业或 GPU 营销中被严重滥用的术语。它用于指代 SIMD 的一个 Lane(计算通道)上的一组单元,其中可能有一个单周期的 32 位 FMA(乘积和融合操作)算子。,一个双周期64位FMA运算单元等GPU厂商把GPU中SIMD Lanes的数量加起来就可以声明有多少核了。

这种说法是否属于误传还很难说,因为目前还没有法律文件规定什么样的收藏才是核心。

但是对于计算机科学来说,微架构中内核的常规观点是它必须有一个PC(程序计算器,它是一个寄存器,一般指向内核要执行的下一条指令的地址)。

在这种情况下,一个GPU核心显然不能是SIMD单元中的一个Lane,它的级别至少要高一级。

因此,GPU上相对严格的“内核”概念单元应该对应类似于AMD GCN的Unite、中国的SMM、6/7的USC等的单元集,其中这个级别的单元集称为Unit(计算unit,缩写为CU,AMD的GCN微架构也用了Unit这个名词,正好对应Unit),里面有GPU厂商的营销术语“”或“c​​ore”,缩写为PE。

GPU 中的线程:

目前的GPU都采用多级线程技术。根据硬件开发者提供的文档,SIMD里对应的那个叫(这里叫work-item)。您可以将其视为图形渲染期间屏幕上的工作项。Pixel),是最小的线程单元;

下一级线程单元称为子组,称为warp或warp,AMD称之为,属于GPU执行调度的最小硬件线程单元。往上是(称为块)和(称为网格,由几个或块组成)。

对应的GPU硬件关系是Unit。同时,Unit运行一个,Grid对应一个GPU(分区,如果设备或加速器允许,一个设备可以分成几个分区使用)。

你可以把米粒比作work-item,每一口饭都当作一个子组,一碗米饭当作一个,一个电饭锅当作(对不起,我的比喻可能不太恰当) .

统一着色器

DX10之后,由于几何和像素指令格式相同,几何和像素处理可以在同一个单元上执行。此后,桌面GPU采用了统一的着色器设计,以确保着色器的利用率得到提高。

纹理单元

纹理单元或纹理映射单元是GPU中计算纹理坐标和获取纹理样本的单元。在绘制对象时,每个纹理单元执行一个纹理采样动作,对于不同的绘制对象,每个采样动作可以改变所使用的纹理。纹理单元的性能指标一般用/s表示,表示每秒的纹理操作次数。不同的纹理格式、不同的纹理过滤算法、硬件实现、内存带宽都会对这个指标产生影响。纹理单元通常绑定到几个着色器。返回搜狐查看更多

文章来源:https://www.sohu.com/a/82751333_119711

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享