详解GPU的内存带宽与CPU的不同

详解GPU的内存带宽与CPU的不同,第1张

在先前的文章中我们谈到GPU相比CPU有更大的内存带宽,此言不虚,这也是众核GPU有源源不断数据弹药供给,能够发挥强大算力的主要原因。如下表所示(GDDR和HBM都是GPU的显存规格),基本上GPU的内存带宽要比CPU多一个数量级。

但是考虑到GPU运算核心的数量,平均下来显存带宽真的足够富裕吗?参考资料1的《Memory bandwidth》文章提供了很有趣的视角,我们在这里介绍下。MOS 6502发布于1975年,是微型计算机发展史上非常重要的一块芯片。6502一般运行在1M时钟频率,每个时钟可以访问1Byte内存数据,6502的一条指令需要花费3~5个时钟,所以平均下来每条指令大概可以获得4B内存数据。

与此相对照,Intel的Core i7-7700K是一款目前比较主流的桌面CPU,运行频率4.2G,内存带宽大概50GB/s。i7-7700K一共有4个处理核心,所以每个核心大概可以均摊到12.5GB/s的内存带宽,也就是每个时钟可以访问约3B的内存数据。该CPU的IPC(Instruction Per Clock)为1,极优化的代码可以达到的IPC为3,按此计,每条指令可得1B的内存数据,跟老前辈6502相比,已经落后不少。更进一步,现代CPU支持256位长度的SIMD指令,每个时钟最多执行3条指令,类比GPU,我们以32位为一个通道作为单独执行线程,这样每个时钟我们一共有24条指令执行,所以每条指令可以访问0.125B内存数据或者说每8条指令得到1B内存数据。

我们再回过头来看看GPU的情形。以NVidia GeForce GTX 1080Ti为例,内存带宽484GB/s,处理单元工作频率为1.48G,所以对整个GPU来说,每个时钟大概可以访问327B内存数据。这个GPU一共有28个SM(类似CPU的处理核心),每个SM有128个SP,所以总共有3584个SP(类似先前SIMD32位通道)。这样每个SM一个时钟大概可以访问11.7B的内存数据,平均到128个SP,一个SP一个时钟得到0.09B数据,换个好听的说法就是每11条指令可以得到1B内存数据,比CPU的指标还恶劣。

需要再次重申的是,因为设计目标的问题,CPU其实更关注访存延迟指标,所以相形之下,内存带宽的压力对GPU更为显著。这也是为什么我们先前说过的GPU也开始配置多级Cache的原因,除了改善访存延迟,也可以降低内存带宽压力。另外我们在《GPU 历史 之二三事》里也提到Nvidia和AMD都开始拥抱移动GPU常用的TBR(Tile Based Rendering)的绘制技术,内存带宽的压力也应该是重要的驱动因素。而作为软件人员,在设计算法的时候,我们要重视算法的运算强度(见《Roofline模型初步》),要充分利用片上内存包括硬件Cache和软件Cache(Shared Memory),以及注意内存的合并访问(Memory Coalescing)等等来优化内存带宽。

显存带宽=显存工作频率X显存位宽/8,显存位宽(bit)即一个时钟周期传送数据的位数,位数越大,传输效率越高。显存带宽是指GPU与显存之间的数据传输速率,它以字节/秒为单位。

显卡,在进行象素渲染时每一帧需要的数据传输量=水平分辨率X垂直分辨率X(基本渲染数据读写+纹理数据读写)。

如:在1024x768x32的显示模式下=1024x768x(16+32)=38MB,如果帧刷新速度为60帧/秒,则显存带宽要求为38x60=2.3GB/S。

需要注意的是,核芯显卡和传统意义上的集成显卡并不相同。笔记本平台采用的图形解决方案主要有“独立”和“集成”两种,前者拥有单独的图形核心和独立的显存,能够满足复杂庞大的图形处理需求,并提供高效的视频编码应用。

集成显卡则将图形核心以单独芯片的方式集成在主板上,并且动态共享部分系统内存作为显存使用,因此能够提供简单的图形处理能力,以及较为流畅的编码应用。相对于前两者,核芯显卡则将图形核心整合在处理器当中,进一步加强了图形处理的效率。

并把集成显卡中的“处理器+南桥+北桥(图形核心+内存控制+显示输出)”三芯片解决方案精简为“处理器(处理核心+图形核心+内存控制)+主板芯片(显示输出)”的双芯片模式,有效降低了核心组件的整体功耗,更利于延长笔记本的续航时间。

带宽与GPU核心怎么匹配并没有直接的关系。

所有显卡的性能都是GPU能力(核心频率.流处理器.ROPS)和带宽综合作用的结果。

GPU能力表明多边形处理速度,带宽表明数据通道宽度。

44.9G带宽多半是1800GDDR3显存频率和192位宽综合计算的结果,比如G92核心的9600GSO和8800GS。

57.6G的带宽最典型的就是128位的3600显存频率和256位的1800显存频率,比如经典的9800GT 8800GT

单看带宽或者单看GPU都无法完整诠释一张显卡的实际性能。 HD3870有高70多G的带宽,但是因为SP数量有限,核心频率较低, 性能也就和44G带宽的8800GS半斤八两,就是这个道理。 同理HD4670公版带宽只有25.6G,但是因为GPU核心频率很高,再加上RV730核心优化过的320个流处理器,所以效率直逼3850,甚至可以轻松打败ROPS缩水的HD5550

因此,您的提问并不好解答。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/696844.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-03
下一篇2023-08-03

发表评论

登录后才能评论

评论列表(0条)

    保存