Antkillerfarm Hacking V7.0

GPU体系结构

2022-05-12

GPU体系结构

Intel曾经用自己最强的CPU和NVIDIA的GPU做过性能对比。

两块Xeon 9282(五十六核处理器)的性能是与一块V100非常接近的,但是功率却是V100的两倍多。至于价格方面,据说9282的价格在2.5w-5w美元之间,两块的价格就是5w-10w美元了。

而V100的32GB版的价格约为1w美元(16GB版的大概7000美元),价格差距比能耗差距要大得多。

同等价格的CPU和GPU速度差可能在十倍以上;同等性能的CPU和GPU的价格可能也会接近十倍;

https://www.zhihu.com/question/273812506

CPU和GPU跑深度学习差别有多大?


上图是SGI公司1993年的一款显卡的模块图。可以看出,早期的显卡是一个具有固定流水线的专用芯片,只能处理特定任务,没有多少可编程的能力。

到了2005年左右,这些渲染流水线的功能被统一到一个叫做Shader Processor的可编程单元中。此后,显卡也被称为GPU(Graphics Processing Unit)。

无论是CPU,还是GPU,或者是现在比较火的NPU,一个Processing Unit,一般都是由上图所示的三部分组成:

  • Fetch/Decode。数据的输入/输出单元。

  • ALU(arithmetic and logic unit)。运算单元。

  • Execution Context。寄存器单元。

CPU强调单core的极致性能,因此广泛使用了如下技术:

  • Out-of-order control logic

  • Fancy branch predictor

  • Memory pre-fetcher

GPU不追求单core的性能,因此也没有那些复杂的控制逻辑。这样省下来的电路,可以变成更多的ALU。由于数据处理的局部性,通常可以若干ALU共享一套Fetch/Decode和Ctx。

当然,如果ALU非常多的话,就不能都共享一套了,这时可以采用下图所示的分组共享。

其中的每个组,被称为一个core

有利就有弊,下面看看GPU是如何执行条件语句的。

上图展示了8个ALU并行执行条件语句的过程:

  • 计算每个数据的条件,生成对应的标志。

  • 执行True分支。

  • 执行False分支。

可以看出,GPU对于条件语句的执行时间=True分支执行时间+False分支执行时间。而CPU只需要根据条件,执行一个分支就可以了。显然,GPU对于程序的控制能力,相对CPU简直弱爆了。GPU并不擅长做这些东西。

CPU的SSE、AVX之类的指令集,也借鉴了GPU的设计思想,但是CPU的core数,相对于GPU而言,差了10~1000倍。


VGPR:Vector general purpose register

SGPR:Scalar general purpose register

Two-Level Adaptive Branch Predictor


如今的亚马逊AI/ML总经理Kumar Chellapilla是最早吃到GPU螃蟹的学者。2006年,他使用英伟达的GeForce 7800显卡第一次实现了卷积神经网络(CNN),发现比使用CPU要快4倍。这是已知最早将GPU用于深度学习的尝试。

Programming Model vs Hardware Execution Model

  • Programming Model: how the programmer expresses the code.

Sequential (von Neumann), Data Parallel (SIMD), Dataflow, Multi-threaded (MIMD, SPMD), …

  • Execution Model: how the hardware executes the code underneath.

Out-of-order execution, Vector processor, Array processor, Dataflow processor, Multiprocessor, Multithreaded processor, …

  • Execution Model can be very different from the Programming Model.

von Neumann model implemented by an OoO processor

SPMD model implemented by a SIMD processor (a GPU)

GPU虽然是一个SIMD机器,但是并没有采用SSE、AVX之类的SIMD编程模型,而是SPMD模型。

移动GPU

移动GPU和桌面GPU最核心的差别在于渲染流程不同。目前主流的移动GPU,无论ARM、高通还是Imagination,其GPU都是TBR(Tile Based Rendering)。而桌面GPU,无论NVIDIA、AMD还是Intel,都是Immediate Rendering。

所谓的Immediate Rendering,就是将一个图元(最常见的是三角形),从头到尾走完整个Pipeline,中间没有停止。这种结构,控制简单,容易实现。问题是在做blending的时候需要从存储单元中不断读回之前render的结果,因此在绘制一个大的场景时这个带宽消耗是比较大的。而桌面GPU都是有自身显存的,它不需要通过系统总线从系统的DDR memory中读回数据。所以开销比较小,这是完全可以接受的。

TBR的精髓就是一个Tile一个Tile的渲染。这样只需要给GPU配上一块很小的片上cache(足够装下一两个Tile的内容就行),就能实现高效的blending。移动GPU中有Tiler模块,将整个场景的图元信息(最主要的是位置)都保存下来,并且能在做光栅化时快速的检索出属于这个Tile的图元。

https://www.zhihu.com/question/20720436

移动GPU和桌面GPU的差距有哪些?

https://zhuanlan.zhihu.com/p/654389634

GPU帧缓冲内存:了解瓦片渲染TBR(tile-based rendering)

GPGPU

通用图形处理器(General-purpose computing on graphics processing units,简称GPGPU),是一种利用处理图形任务的图形处理器来计算原本由中央处理器处理的通用计算任务。这些通用计算常常与图形处理没有任何关系。

从市场宣传的角度,如果某家公司的产品定位为GPGPU,那么也就意味着该GPU没有图形能力。

上图展现了GPU和GPGPU之间的差异。

然而通用处理对于图形处理的侵蚀,或者说充分运用AI算力,简化图形专用硬件也是一大趋势。

如上图所示,先进图形标准中,崭新的、更加利用计算功能的mesh shader可以取代从vertex shader到geometry shader的着色器,从而在不减功能的前提下,将图形管线节点数大量减少,并移除一些连接节点的专用硬件。性能还可能因为mesh shader拥有的弹性,而有所提升。

参考

AMD:RDNA

Imagination:PowerVR

Qualcomm:Adreno

ARM:Mali


RDNA是GPU架构,Navi是使用它构建的图形处理器的代号。同样,GCN是架构,而Vega和Polaris是代号。

https://www.expreview.com/68888.html

AMD RDNA显卡架构简析

https://zhuanlan.zhihu.com/p/459812380

AMD RDNA与GCN GPU架构之间的差异:AMD如何赶上NVIDIA


UMD,User Mode Driver。GPU的用户态驱动程序,例如CUDA的UMD是libcuda.so。

KMD,Kernel Mode Driver。GPU的PCIe驱动,例如英伟达GPU的KMD是nvidia.ko。


http://tieba.baidu.com/p/2250616047

史上最全桌面显卡天梯图

https://zhuanlan.zhihu.com/p/365926059

2021超全的显卡挑选指南

https://mp.weixin.qq.com/s/8HIZRhb-KJOtPnQtQ3GQVg

第一代芯片是CPU,第二代是GPU,第三代是什么?

https://mp.weixin.qq.com/s/qkpbKN62YV2f0W5HLnr7Dg

GPU是如何工作的?与CPU、DSP有什么区别?

https://mp.weixin.qq.com/s/Jof-u8oUuLR4v7t3jjXEmA

GPU和线下训练

https://mp.weixin.qq.com/s/HeoVktVtvOK4VgocyxuCXg

摩尔定律已死?GPU会取代CPU的位置吗?

https://mp.weixin.qq.com/s/zTO4UZ3zDLZL0GOjv0YqrQ

GPU加速深度学习

https://mp.weixin.qq.com/s/VysqrYVXG1JiNG86viQ6Xg

学深度学习的你有GPU了吗

https://mp.weixin.qq.com/s/fUl-YjMlfZs9XXZ1W4DFBQ

GPU历史系列(一):故事从20世纪70年代讲起

https://mp.weixin.qq.com/s/QuvpUYNhmf3htl0ea9TT8Q

GPU历史系列(二):改变游戏规则的3Dfx Voodoo

https://mp.weixin.qq.com/s/BisVJ3VDxcUpSMyoGmQicw

GPU历史系列(三):Nvidia一统江湖

https://mp.weixin.qq.com/s/5ahh8EihTefzMmCGSwmwHw

GPU历史系列(四):通用GPU的来临

https://mp.weixin.qq.com/s/iBgTyDiNNTUuuCgWJCyKig

深度报告:GPU产业纵深及国产化替代

https://zhuanlan.zhihu.com/p/463629676

从AI系统角度回顾GPU架构变迁–从Fermi到Ampere

https://zhuanlan.zhihu.com/p/446830540

GPU架构(上)—AI芯片设计入门

https://zhuanlan.zhihu.com/p/446837354

GPU架构(下)—AI芯片设计入门

https://www.cnblogs.com/timlly/p/11471507.html

深入GPU硬件架构及运行机制

https://zhuanlan.zhihu.com/p/576793055

Intel四十年显卡坎坷路

https://zhuanlan.zhihu.com/p/572302589

GPGPU流式多处理器架构之取指译码发射

http://www.cnblogs.com/geniusalex/archive/2008/12/26/1941766.html

CPU GPU设计工作原理

https://mp.weixin.qq.com/s/-Wg1GtVGUxfshJ5d5NDd-Q

聊聊GPU的计算能力上限

https://mp.weixin.qq.com/s/zdr7BfJxVepQL1TCDXQoJA

一文带你了解GPU的前生今世

https://www.zhihu.com/question/22219245

GPU不能完全取代CPU的最大原因是什么?

https://mp.weixin.qq.com/s/tyZXc_hz89SxERjb_c34_w

现代处理器分支预测技术

https://zhuanlan.zhihu.com/p/651179378

GPU内存概念浅析

https://zhuanlan.zhihu.com/p/377073683

GPU虚拟化,算力隔离,和qGPU

计算机体系结构+

VLIW & superscalar

超长指令字(VLIW:Very long instruction word)和超标量(superscalar)都在同一个CPU中,集成了数套运算单元。

超标量用硬件来决定哪些指令可以并行执行,而VLIW采用软件来决定哪些指令并行,通过把指令调度的复杂度交给编译器来降低硬件复杂度。

VLIW的代表是Intel的Itanium处理器。当处理器的执行宽度(execution width),指令执行延迟时间,执行单元个数(function unit)改变时,VLIW需要重新编译程序来适应。但是Superscalar却不需要。

因此,VLIW在GPU中用的比较多。GPU程序并不直接生成GPU指令,而是通过厂商提供的DX/OpenGL库操作GPU。因此这些重新编译程序的任务已经由厂商完成,对于使用者透明。

https://mp.weixin.qq.com/s/OQ3KUAi6HMyOS8k3J_1e6g

关于超长指令集VLIW的一些讨论

https://www.zhihu.com/question/430177243

CPU长指令(VLIW)失败的主要原因是什么,VLIW真的无药可救吗?

参考

https://blog.csdn.net/do2jiang/article/details/4545889

流水线、超流水线、超标量技术对比

https://blog.csdn.net/edonlii/article/details/8755205

单发射与多发射

https://mp.weixin.qq.com/s/FJX9eeRkxS5nJ4XIhRVwkg

从ServerSwitch到SONiC Chassis:数据中心交换机技术的十年探索历程

https://mp.weixin.qq.com/s/MCYocOY2pHHqiLhcE4SXyg

为什么苹果M1芯片这么快?

https://zhuanlan.zhihu.com/p/358167791

Vector的前世今生(1):从辉煌到低谷

https://zhuanlan.zhihu.com/p/368640768

Vector的前世今生(2):ARM SVE简述

https://zhuanlan.zhihu.com/p/594532014

一文搞懂Cortex-A77(ARMv8架构)工作原理

Fork me on GitHub