GPU结构设计初探

article/2025/10/8 15:49:32

GPU结构设计

1. 框架设计

GPU 即 graphics process unit,图形处理单元,其主要功能在于图形渲染和合成,擅长于浮点运算和三角形生成填充处理;

本部分主要回答:GPU如何实现让自己擅长于图形渲染和合成操作?

1.1 GPU 发展演变

技术的发展大多都有其需求依赖,GPU也是一样:

1962年麻省理工学院的博士伊凡•苏泽兰发表的论文以及他的画板程序奠定了计算机图形学的基础。在随后的近20年里,计算机图形学在不断发展,但是当时的计算机却没有配备专门的图形处理芯片,图形处理任务都是CPU来完成的。

这是需求产生的初始;

1999年8月,NVIDIA公司发布了一款代号为NV10的图形芯片Geforce 256。Geforce 256是图形芯片领域开天辟地的产品,因为它是第一款提出GPU概念的产品。Geforce 256所采用的核心技术有“T&L”硬件、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等。“T&L”硬件的出现,让显示芯片具备了以前只有高端工作站才有的顶点变换能力,同时期的OpenGL和DirectX 7都提供了硬件顶点变换的编程接口。GPU的概念因此而出现

2000年之前出现了早期的GPU产品,即独立用于图形绘制的硬件模块;

即伴随着图形学的发展,对于计算机算力的要求越来越高,而CPU的性能的发展已经到达一个平缓期,无法满足其需求,所以需要单独拉出来一个模块用于满足其算力需求;

提高运算速度的方式主要有如下几个方面:

  1. 单条指令执行速度:提高主频
    1. 到达当前4GHZ 之后再向上增加,伴随着功耗的几何倍增;
  2. 增加运算单元数量(晶体管)
    1. 制程发展,目前已经达到nm级别,达到当前技术的极限;
    2. 改变当前CPU中的晶体管功能,让其善于绘图,即GPU;
    3. 在宏观层面增加,即近些年来的多核发展,以及异构框架设计;

所以伴随着2-2这样一个朴素的思维逻辑(专精),GPU硬件模块被设计出来了;

image-20210214155345559

上述我们描述了GPU是被设计用于专门绘制图形的硬件模块,那么图形绘制相较于曾经的运算而言,有哪些专门的内容?

图形绘制:经过一定运算,将图片转换为数据显示在屏幕上,即计算每个像素需要显示的颜色数值(YUV)

则至少有如下三方面的要求:

  1. 高性能的运算,将图片效果(3D效果)转换为像素点的过程;
  2. 大量的并行计算,对于一定范围的像素,进行相同的运算处理;
  3. 超高访问内存带宽,即刷图的特性要求其吞吐量要高;

基于上述的目标,我们首先来看CPU的设计结构;

1.2 从CPU开始聊起

CPU (Central process unit) 中央处理器,作为计算机系统的运算和控制核心,是信息处理,程序运行的最终执行单元;

从词条介绍就可以看得出来,CPU是运算和控制核心,是程序运行的最终执行单元,CPU面向通用的场景,更关注复杂场景的时延和指令的执行效率,即面对不同的程序,以尽快的速度运行:

  1. 多级流水线

    指令从取值到真正执行的过程划分成多个小步骤,cpu真正开始执行指令序列时,一步压一步的执行,减少其等待时间(比如正常需要4~5cycle,采用流水线则相当于平均1 cycle)

    上述图示为arm7 三级流水线标准结构,arm9和mips均采用5级流水线:

    IF – ID – EX – MEM – WB

  2. 指令级别并行:

    • 超线程,Intel提出的技术,即一个CPU核划分为两个线程,即将其他资源利用起来,避免等待;
    • 超标量,多条流水线并行,空间换时间;
    • 超长指令字,编译优化,一次提取多条不互相依赖的指令进行处理(编译阶段)
  3. 分支预测:

    上述流水线的结构,针对于分支结构会出现效率降低,即在执行下一条指令时,当前判断语句还未执行完成,如果判断出错,则相当于将分支语句中内容执行一遍,此种情况下等待判断完成会导致整个硬件模块先暂停再重新启动,效率极低:

    • 直接执行,成功率在50%,如果出错则绕回重新执行;
    • 分支预测,在进行之前即预测其if or else,现代计算机基本在95%以上,依赖于一定的硬件单元模块;
  4. 乱序执行:

    很显然的一个特性,指令在执行时常常因为一些限制而等待,比如,mem分阶段访问数据不再cache中,则需要从外部存储器获取,至少需要几十个cycle的时间,所以这种情况下可以采用乱序执行的方式,先执行不依赖于外部数据的指令;

image-20210214140601120

这里是一个比较简单的CPU的结构,其中大面积的单元结构是Cache & Prefetch Unit(复杂控制逻辑电路,包括并不限于PFU)而对于GPU来说,执行数据比较单纯,多半是对于像素进行的运算处理,而且是大面积的并行计算,所以砍去其复杂的逻辑电路,转换为计算单元:

image-20210214140036242

从设计思路来说,已经决定了GPU不善于做分支运算,效率极低;

2. 结构设计

了解了上述的设计需求以及设计思想,则具体来看当前GPU的设计:

2.1 MALI系列GPU结构框架描述

这里主要聊ARM MALI系列,首先来看Mali家族的GPU框架(以下资料均来自ARM官网):

image-20210214140531161

上述主要包括Mali家族的四个框架结构:

Utgard:早期结构,vertex 和 fragment 为独立的硬件单元结构;

Midgard:这里学习的主体,通用可编程shader core;

Bifrost、Valhall 这里没有详细了解,可以支持gles 3.2 & vulkan;

2.1.1 Midgard 结构

Top-Level如下图所示:

image-20210214142638934

  • 操作指令进来两个Queue,用于分别管理Geometry 和 Fragment;
  • 数据进来到L2 Cache中,这里应该有MMU的控制单元;
  • Shader core是可变的,根据各个厂商定制,一般来说2~8个,也是实际运算单元存在的位置;
  • Tiler是Mali的一个特殊技术,将Texture划分为小块进行缓存计算,主要是为了减小带宽压力;

详细来看Shader Core:

image-20210214143406774

  • 三级执行单元,在一个cycle内,可以并行 Arithmetric / LSU / Texture
  • ZS Tester 用于做深度计算,剔除不需要显示的部分;
  • Arithmetric 单元模块用来做几何运算部分,即顶点计算、几何连线运算等;
  • L1 Cache 16Kb,可根据厂商要求定制;

对于Arithmetric 单元,该部分与NVIDIA设计不同,仍采用SIMD结构(VLIW):

The Arithmetic pipeline (A-pipe), is a Single Instruction Multiple Data (SIMD) vector processing engine, with arithmetic units that operate on 128-bit quad-word registers. The registers can be accessed as several different data types, for example, as 4xFP32/I32, 8xFP16/I16, or 16xI8. Therefore, a single arithmetic vector operation can process eight mediump values in a single cycle.

Mali结构简单来说就是这个样子了;

2.2 NVIDIA 简易介绍

2.2.1 结构

顶层结构:

image-20210214154617177

放大:

image-20210214154652930

NVIDIA GPU架构发展时间记录:

  • 2008 - Tesla

    Tesla最初是给计算处理单元使用的,应用于早期的CUDA系列显卡芯片中,并不是真正意义上的普通图形处理芯片。

  • 2010 - Fermi

    Fermi是第一个完整的GPU计算架构。首款可支持与共享存储结合纯cache层次的GPU架构,支持ECC的GPU架构。

  • 2012 - Kepler

    Kepler相较于Fermi更快,效率更高,性能更好。

  • 2014 - Maxwell

    其全新的立体像素全局光照 (VXGI) 技术首次让游戏 GPU 能够提供实时的动态全局光照效果。基于 Maxwell 架构的 GTX 980 和 970 GPU 采用了包括多帧采样抗锯齿 (MFAA)、动态超级分辨率 (DSR)、VR Direct 以及超节能设计在内的一系列新技术。

  • 2016 - Pascal

    Pascal 架构将处理器和数据集成在同一个程序包内,以实现更高的计算效率。1080系列、1060系列基于Pascal架构

  • 2017 - Volta

    Volta 配备640 个Tensor 核心,每秒可提供超过100 兆次浮点运算(TFLOPS) 的深度学习效能,比前一代的Pascal 架构快5 倍以上。

  • 2018 - Turing

    Turing 架构配备了名为 RT Core 的专用光线追踪处理器,能够以高达每秒 10 Giga Rays 的速度对光线和声音在 3D 环境中的传播进行加速计算。Turing 架构将实时光线追踪运算加速至上一代 NVIDIA Pascal™ 架构的 25 倍,并能以高出 CPU 30 多倍的速度进行电影效果的最终帧渲染。2060系列、2080系列显卡也是跳过了Volta直接选择了Turing架构。

2.2.2 SIMT

SIMT:单指令多线程,相较于SIMD不需要开发者考虑矢量长度组合,相当于使用一定数量的core用于并行执行,有自己的register;

Wrap 线程束,一般包含32个线程,执行相同指令(不同数据)

  1. wrap有自己的register:
    1. 遇到LSU等待可以直接切换其他wrap
    2. Wrap数量越多则平均等待时间越短,并行执行后忽略等待;
    3. 由于硬件决定Register总数一定,shader程序中使用register多则分配warp的数量就会少,则等待时长会多,导致效率降低,所以shader编程需要做好协调;
  2. pixel处理的天然并行
    1. 分支执行错误则32线程均需要重新来过,所以这里也要求我们尽量少加分支结构;

硬件结构图示如下所示:

image-20210214153920277

3. GPU Pipeline

大家来聊GPU编程时,一般都会提到GPU Pipeline:传统的一条渲染管线是由包括Pixel Shader Unit(像素着色单元)+ ROP(光栅化引擎)+ TMU(纹理贴图单元) 三部分组成的,如下来具体介绍:

image-20210214160425052

整体划分为三个大的阶段:

  • CPU阶段:

    • CPU build后通过图形API 发出drawcall指令,指令会被驱动添加到GPU可以访问的buffer中,即opengl编程常说的context;
    • 经过一段时间或者显式调用flush操作后,会将上述指令发送给到GPU,GPU会在相关queue中处理上述指令;
  • GPU 阶段:

    image-20210214161814799

    细化处理:

    image-20210214161901160

    • vertex shader (可编程):顶点操作,取绘制坐标做视角判断后需要绘制的顶点(3D-2D)
    • 图元处理:可以简单理解为连线;
    • Geometry shader(可编程,非必要):将上述画出来的三角形进行划分;
    • 光栅化:按照屏幕分辨率划分为pixel处理;(锯齿产生于此步骤)
    • fragment shader(可编程):对每个像素进行颜色计算处理
    • 深度、混合、alpha等测试后输出给到framebuffer;

    具象化的话如图:

    image-20210214162449070

4. 编程性能注意事项

基于上述结构限制,GPU编程应注意如下点:、

  • 尽量减少CPU与GPU之间的memory 拷贝动作

    • 减少顶点 三角形数量
    • 减少渲染状态设置和查询
      • 例如:glGetUniformLocation会从GPU内存查询状态,耗费很多时间周期。
      • 避免每帧设置、查询渲染状态,可在初始化时缓存状态。
  • 减少Overrender操作

    • 尽量使用深度测试剔除无效像素
      • 避免Alpha test,alpha blend
      • 开启深度测试
    • 使用裁剪
    • 小物体数量控制
  • shader优化

    • 避免if switch等分支操作
    • 避免for循环操作(实测可以提升30%性能)
    • 减少纹理采样次数

附录

参考网址:

  1. arm 官网介绍:https://developer.arm.com/solutions/graphics-and-gaming/developer-guides/learn-the-basics

  2. 网络总结:https://www.cnblogs.com/timlly/p/11471507.html

  3. CUDA高效编程:https://weread.qq.com/web/reader/e32329e071649d2fe32e06bka87322c014a87ff679a21ea


http://chatgpt.dhexx.cn/article/1Ih9pQNq.shtml

相关文章

大型三维GIS图形工作站

随着GIS应用的深入,人们越来越多地要求从真三维空间来处理问题。在应用要求较为强烈的部门如采矿、地质、石油等领域已率先发展专用的具有部分功能的三维GIS。所以大型三维GIS图形工作站应运而生。 UltraLAB H360/H370系列是一款配备intel第7代高频处理器&#xff0…

怎样配置更完美的图形工作站

现在网上太多计算机“专业人士”,推出各种图形工作站选购方案,似乎采购一台理想的图形工作站,是一件轻松简单事情。客户方面:资金充裕,买个高端的,资金比较紧,买个低端的,找个大品牌…

如何搭建自己的深度学习工作站?

硬件设备,是任何一名深度学习er不可或缺的核心装备。普通玩家都是标准设备,高端玩家都是自己动手搭建合适自己的GPU 工作站甚至GPU集群. 可是,各种主板、CPU、GPU、内存条、外设,那么多品牌种类型号参数,到底该怎么选?…

工作站 桌面 服务器,图形工作站也虚拟化,立即让你的工作站也可以远程访问

在虚拟化的今天,几乎所有的计算机资源都可以虚拟化,如CPU,内存,存储,网络,IO等等,但是我们很少听到图形卡的虚拟化,也就是我们今天提到的GPU虚拟化。 为什么需要GPU?相信不需要说太多…

GPU

一、GPU简介 1.GPU是什么: GPU是图形处理器(Graphics Processing Unit),计算机显卡的处理器. 2.GPU产生背景: 在GPU出世之前,处理2D、3D图像都依赖于CPU,这样会使”日理万机“的CPU更加劳累不…

GPU服务器Ubuntu环境配置教程及各种踩坑

博主的GPU服务器快要过期了,为了让其发挥更多的光和热,博主打算将系统重装,来分别感受下不同系统下的GPU服务器。哈哈哈 博主为了快速运行项目,在购买服务器时选择的是Pytorch 1.9.1 Ubuntu 18.04 ,该系统下会帮我们安…

图灵深度学习工作站介绍

Artificial Intelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一。虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台电脑能产生“自我”的意识。是的,在人类和大…

GPU是什么?有多大的用处?

想必大家最近都听说了GPU的断供的事件,但很多人却不知道GPU是什么?有多大的用处?下面就一起来了解一下吧。 GPU简介: GPU是Graphics Processing Unit的简写,是现代显卡中非常重要的一个部分,其中文名为图…

ShareStation工作站虚拟化,实现工作站共享使用

今年以来,由于挖矿导致显卡涨价,不少玩家成了等等党。公司需要给新报到设计师配置图形工作站,采购成本也暴涨。就拿以前不到3000的RTX3060TI为例,现在市场价格要7000-8000。但是工作不能耽误,等不起啊。经过对比测试&a…

NVIDIA-GPU 驱动程序安装

下面以GeForce RTX 2080TI GPU为例,基于ubuntu18.04进行驱动程序的安装。 1. 下载驱动程序 驱动程序下载链接:官方驱动 | NVIDIA 根据GPU型号,在如下下拉列表中进行选择,然后点击搜索按钮: 2. 安装驱动程序 1&…

工作站压力测试软件,胜任多种工作负载 联想P500工作站评测

【IT168 评测】对于设计师来说,无论是动漫设计还是工程制图,一款运行流畅、性能强大、安静稳定的工作站都是必要的选择。作为工作站市场的领军者,联想不久前推出了全新一代ThinkStation P系列工作站家族,颠覆以往命名,启用以“P”开头的全新命名规则,包括从入门级到旗舰级…

Sharestation 工作站GPU虚拟化,实现共享GPU办公

一 背景分析 今年以来,由于挖矿导致显卡涨价,不少玩家成了等等党。公司需要给新报到设计师配置图形工作站,采购成本也暴涨。就拿以前不到3000的RTX3060TI为例,现在市场价格要7000-8000。但是工作不能耽误,等不起啊。经…

移动工作站Windows10系统深度学习GPU环境搭建:CUDA+cuDNN+Pytorch

文章目录 前言一、查看CUDA版本二、CUDA、cuDNN1.CUDA10.2下载与安装2.cuDNN下载与安装 三、Pytorch安装 前言 CUDA(ComputeUnified Device Architecture)是NVIDIA推出通用并行计算架构,使GPU能够解决复杂的计算问题。 NVIDIA cuDNN是用于深度神经网络的GPU加速库。…

工作站 显卡 测试软件,CineBench R15测试:考验CPU+GPU_工作站移动工作站-中关村在线...

CineBench R15测试:考验CPUGPU能力 CineBench使用的是针对电影电视行业开发的Cinema 4D特效软件引擎,是很有说服力的一套CPU和显卡测试系统。考虑到惠普ZBook Studio G3搭配的是Windows 10 Pro 64操作系统,所以我们也选择了支持64位操作系统的…

在GPU工作站/服务器上运行代码及常用操作

服务器连接 本人所在的实验室服务器是安装了Ubuntu系统的台式机 首先,服务器是支持ssh远程连接的。在你的PC上,打开命令行,即可输入指令连接。(windows平台可以使用Xshell) 输入命令: ssh UserNameServ…

教程:个人深度学习工作站配置指南

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 来源丨https://zhuanlan.zhihu.com/p/336429888 导读 本文记录了组装深度学习工作站过程中的超详细操作流程&#xf…

cpu并行和gpu并行_深度学习GPU工作站/服务器硬件配置方案

引子 市场上用于深度学习训练计算机大致情况如下: (1)服务器/工作站(支持2、4、8块GPU架构):普遍存在噪音大,无法放置于办公环境,必须放到专门的机房,维护成本高,另外数据存储带宽、延迟、容量也不尽如意。 (2)分布式集群架构:性能强大,但是开发成本太高(太贵),是大多…

CST电磁仿真GPU计算工作站、集群最新配置推荐2022

(一)CST Studio Suite2021硬件配置推荐 本方案是2021年第四季度最新针对CST Studio Suite 2021电磁仿真计算软件应用硬件配置,我们提供从单台多GPU工作站、双机直连、多机集群的全部方案,满足CST Studio suite最新技术支持和不同算…

GPU 工作站安装与配置

GPU 工作站配置 GPU型号:GeForce GTX 1080Ti CPU型号: i7 8700 酷睿六核 盒装CPU处理器 主板型号:华硕PRIME Z370-A 主板 第一步 选择合适的系统 这里直接选用Centos 7系统安装系统这部分比较简单就直接省去,下面主要记录安装完…

GPU是什么?GPU有多重要?

前段时间,MD和英伟达相继接到通知要对我国断供高端GPU芯片,很多人不知道GPU到底有什么用?下面IC修真院就带大家来一起了解一下GPU。 首先来了解一下GPU是什么? GPU–图形处理器(Graphics Processing Unit&#xff09…