图形学基础概念笔记(一)

本文深入探讨计算机图形学的基本概念,包括图形学的核心任务、研究方向及底层知识背景。详细解析GPU架构,如NVIDIA与AMD的不同策略,显卡储存体系设计,以及GPU如何应对阻塞与实现并行计算。同时,文章介绍了渲染流水线的各阶段工作原理,从顶点着色到片元着色,再到输出合并,涵盖了现代图形渲染技术的精华。

图形学笔记

综述

图形学知识结构

什么是计算机图形学?

“计算的目的是洞察事物的本质,而不是获得数字。” ——Richard Hamming,1962

计算机图形学的核心目标是三个基本任务:表示、交互、绘制。表示是将主、客观世界放入计算机,通过数字对二维、三维对象进行建模与储存。绘制是将计算机中的对象通过直观的人眼易读的图形图像方式表现出来。交互是通过直观的图形图像手段,改善真实用户通过计算机录入、修改、获取数据的体验。

从图形学的核心思想的角度讲,图形学就是和颜色打交道。一切数学模型,一切算法,一切数据结构的最终目的,都是在正确的位置产生正确的颜色,仅此而已。除此之外的网格、模型、几何体、光照,都不是必须的。

计算机图形学的研究方向?

计算机图形学的主要研究对象是点、线、面、体、场的数学构造方法和图形显示,以及其随时间变化的情况,它需要研究以下几方面的内容:

  • 描述复杂物体图形的方法与数学算法,包括曲面、曲线的造型技术,实体造型技术,纹理、云彩、波浪等自然景物的造型和模拟,三维场景的显示如光栅图形成生成算法和线框图、真实感图形的理论和算法。
  • 物体图形描述数据的输入。
  • 几何和图形数据的储存、压缩和解压。
  • 物体图形数据的运算,如基于图形和图像的混合绘制、自然景物仿真、图形用户接口、虚拟现实、动画技术和可视化技术等。
  • 物体图形数据的输出显示,包括图形硬件和图形交互技术。
  • 实时动画和多媒体技术,研究实现高速高精度动画的各种软、硬件方法,开发工具、动画语言以及多媒体接口。
  • 制定与图形应用软件有关的技术标准。

底层知识背景

显卡和GPU

GPU和CPU的区别?

主流CPU(Central Processing Unit,中央处理器)芯片上有四级缓存,消耗了大量晶体管,在运行时需要大量电力;主流GPU(Graphics Processing Unit,图形处理器)芯片最多有两层缓存,且GPU可以利用晶体管上的空间和能耗做成ALU单元,因此GPU比CPU效率高。

CPU重在实时响应,对单任务速度要求高,需要针对延迟优化,所以晶体管数量和能耗都需要用在分支预测、乱序执行、低延迟缓存等控制部分;GPU主要使用于具有极高可预测性和大量相似运算的批处理,以及高延迟、高吞吐的架构运算,对缓存的要求相对很低,顺序运算效率很高,同时相对的乱序处理效率很低。

CPU除了负责浮点和整型运算,还有很多其它的指令集的负载,如多媒体解码和硬件解码,CPU注重单线程性能,保证指令流不中断,需要消耗更多晶体管和能耗用在控制部分,于是CPU分配在浮点运算的功耗会减少;GPU基本只进行浮点运算,设计结构简单,效率更高,GPU注重吞吐率,单指令能驱动更多的计算,相比较GPU消耗在控制的能耗就少得多,因此可以将资源留给浮点运算使用。GPU的浮点运算能力比CPU高10~12倍。

什么是NVIDIA/AMD?

显卡品牌。

NVIDIA公司译为英伟达,其生产的显卡又被称为N卡。AMD译为超微半导体,其生产的显卡又被称为A卡。

N卡奉行大核心战略,GPU内部采用大量1D单元,在执行效率上理论可以达到100%,实际效率也可以维持在90%以上,因为架构执行效率高,灵活性强,所以在实际应用中易发挥应有性能。但是大核心的设计复杂,内部集成的SP数量也不会太多,成本和功耗也会比较高,控制单元在晶体管的消耗上占了更大比例,在相同晶体管数量的情况下,N卡能做的运算单元相对较少。N卡在软件上具有明显优势,包括微软在内的软件商都为N卡开发优化,使得大量工具软件和游戏在N卡环境下有更好的表现。

A卡奉行小核心战略,采用VLIW5或VLIW4的设LI计,分别采用4D+1D的设计和4D设计,可以在较小的晶体管代价和较小的核心面积下装入更多的SPU,以SP的数量取胜。其理论计算能力远超N卡,但实际执行效率并不高,一旦进入GPU的图形信息是1D或3D形式这一的非标准数据形式,A卡的执行效率最低可降至25%至20%。

显卡是个人计算机最基本组成部分之一,用途是将计算机系统所需要的显示信息进行转换以驱动显示器,并向显示器提供逐行或隔行扫描信号,控制显示器的正确显示,其高效的并行计算能力现阶段也用于深度学习等运算。

GPU和显卡有什么关系?

GPU是显卡上的核心处理芯片,显卡上除了GPU,还包括显存、电路板和BIOS固件等。由于GPU在显卡上十分重要,所以时常用GPU代指显卡。

显卡也叫显示适配器,分为独立显卡和集成显卡。独立显卡由GPU、显存和接口电路组成;集成显卡和CPU共用风扇和缓存,没有独立显存,而是使用主板上的内存。

显存是什么?

显卡储存体系的设计哲学是更大的内存带宽而非更低的访问延迟,这也是显存访问的特点:高带宽,高延迟。

显存既可以是物理上的,也可以是逻辑上的。

对集成显卡如Intel HD Graphics来说,GPU使用CPU专门划分出来的一份内存空间,即**UMA(Unified Memory Architecture,一致性储存架构)作为显存,GPU和CPU用不同的虚拟地址对UMA中的同一个物理地址寻址。使用集成显卡时,CPU和GPU共享总线。在渲染时,CPU将顶点等数据存入主存,然后GPU可以通过GART(Graphic Address Remapping Table,显存地址重定位表)**访问UMA。GART的作用是将UMA虚拟地址映射到GPU寻址空间。而由于UMA属于CPU内存范围,CPU可以直接访问它。

对独立显卡来说,GPU可以使用专门的显存条,并使用显存条的物理地址进行寻址,这是最常见的显卡类型。在独立显卡结构中,GPU可以直接从显存中读写信息。而CPU访问显存条中的储存空间时,需要映射一部分GPU储存空间到CPU地址空间,典型大小为256MB或512MB,CPU地址空间的获取一般由API完成。

无论使用哪种显卡,CPU和GPU交流必然要经过总线。独立显卡中CPU与显卡的沟通,是通过异步的**DMA(Direct Memory Access,内存直接访问)**实现的。主机将DMA命令块写入内存,DMA命令块由传输来源的源地址、传输目标地址和传输的字节数组成。CPU将这个命令块的地址写入DMA控制器,然后继续其它工作。随后DMA控制块会直接操纵内存总线,脱离主CPU的帮助下实现传输,将数据提供给显卡驱动。反过来,显卡驱动发送信息给DMA控制器请求线路,DMA控制器于是占用内存总线,并发送所需地址到内存地址总线,然后发送信号到DMA确认线路。当显存收到DMA确认信号时,他就传输数据到内存,并清楚DMA请求信号。每当一次沟通结束,DMA都会触发一次CPU中断。

什么是流处理器SP?

流处理器又称流处理单元,简称**SP单元(Streaming Processor)**或SPU,有些显卡生产商也会将其称作core(核心)。流处理器的数量能直接影响显卡性能。

之前的显卡具有两个重要的运算单元——顶点处理单元和像素处理单元。但自从DirectX10开始,微软引入了流处理器这个概念,顶点处理单元和像素处理单元很快被业界抛弃。流处理器是顶点处理单元和像素处理单元的统一,负责了渲染中的顶点和像素渲染。将顶点处理单元和像素处理单元合并的概念又被称作统一着色器架构(Unified Shader Architecture)

业界之所以抛弃之前的顶点+像素结构而使用SPU架构,是因为传统的顶点和像素分离渲染架构存在严重的资源分配不均的问题,两种单元渲染任务量不同,效率低下。而SP架构是统一结构,不再区分顶点和像素渲染,进行不同渲染任务时都能保证效率。

4D+1D/4D/1D都是什么?

D是维度Dimension的意思,在图形学中的nD指n维浮点向量运算,nD单元指由n个流处理单元整合成的n维浮点向量运算单元

像素坐标XYZW、色彩参数RGBA以及纹理坐标参数STPQ正好都是4维运算,这导致顶点处理单元和像素处理单元都是4D单元,在引入流处理器后,主流的流处理器也是4D单元。

而1D即一维向量,也就是标量。由于流处理器合并了顶点和像素处理单元,图形渲染中标量运算成分开始增多,GPU不再像早年那样只需要处理单纯的4D向量运算了。在这样的背景下,英伟达完全抛弃4D结构,设计了G80这样的1D标量处理器,将矢量运算分解为4次或更多次标量运算,这使N卡的灵活性大幅提升,在任意维度的运算环境下都可以得到满意的性能。

AMD没有放弃4D架构,而是进行了改良,增加了一个标量运算单元,这就是4D+1D矢量标量混合架构,也就是VLIW5(Very Long Instruction Word,超长指令口令)架构,它把需要计算的指令组合成适合4D+1D架构的长指令,比如将一个2D运算和一个3D运算合并为一个4D+1D运算,这样理论上每个统一处理器每个周期都可以进行一次4D运算加一次1D运算,是N卡1D单元运算效率的4~5倍,这种将指令组合的算法被称为co-issue算法。这五个ALU只需要一个发射端口,电路设计更加简单,功效与发热也更容易控制,但缺点就是依赖指令组合,一旦非最优指令组合,这些运算单元中部分维度就只能空转,运算效率将显著降低。

什么是流多处理器SM?

SM(Streaming Multiprocessor,流多重处理器)由多个SP加上共享内存特殊函数单元寄存器多边形引擎指令缓存L1缓存等的组合。

SM中的任务主要由SP承担,SM中SP的数量一般为32个,有时也有16或64个SP组成的SM。进行辅助计算的还有SFU(Special Function Units,特殊数学运算单元),它们用于进行三角函数和指对数等运算。<

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值