内存与显存的区别与联系
CPU运算所需要的数据及产生的运算结果都会暂存在内存里。围绕在GPU外的是显存颗粒显存和内存功能类似GPU运行所需要的数据及产生的运算结果都会暂存在显存里。最开始显卡生产厂商直接使用内存的DDR标准来生产显存但是随着GPU的发展直接使用DDR的生产标准已经不能满足GPU的需求了于是英伟达联合ATI提出了GDDRGraphics标准为GPU定制的DDR内存。CPU拥有较少核心core但是每个核心都很强大GPU拥有数量较多的核心但是每个核心都相对弱小这就意味着GPU天生适合处理并行任务。e.g.需要给一张图片进行提亮。CPU的处理流程图片存在内存里CPU从第一个像素开始把第一个像素读到CPU里随后对这个像素进行提亮运算算完结束后把运算结果写回到内存里以此为循环直到所有像素点均被CPU处理且写回到内存里。以上CPU处理方式是最原始的处理方式实际CPU会做各种优化但大方向是如此。GPU的处理流程图片存在显存里在开始处理之前GPU的控制器会给每个核心都分配好活儿e.g.1号核心处理第一个像素2号核心处理第二个像素……分配好活儿后开始进行处理所有核心都会在同一时刻去显存里读取自己要处理的那个像素同时读回后同时处理完再同时写回到显存里去。以上CPU处理方式是最原始的处理方式实际CPU会做各种优化但大方向是如此。CPU需要逐项处理数据GPU是并行处理数据根据GPU与CPU处理数据的区别显存的带宽要求是远高于内存带宽的这就是显卡生产厂商放弃DDR标准提出GDDR要求的原因。带宽传输速率*位宽内存的位宽一般是64bit有些主板支持双通道可以组成128bit的位宽。4090的位宽是384bit5090的位宽是512bit。内存条上的频率并不是真正的时钟频率而是2*时钟频率。在GDDR5的生产标准中显卡生产厂商将原始的时钟信号copy了3份出来再对这4个时钟信号进行了1/4周期的偏移随后在每个时钟的上升沿进行一次数据传输这样一个时钟周期内便可进行4次数据传输。随着传输频率的提高现已有GDDR6标准即一个时钟周期内便可进行8次数据传输。还可提高每次数据传输的容量由1bit增到到2bit可传输4档电平00/01/10/11即PAM-4技术。PAM-4技术被用到了GDDR6-X的标准上因此GDDR6-X在GDDR6的基础上double一倍由8倍速提升至16倍速即在一个时钟周期内传输16次二进制数据。PAM-4应用在显存上是一次很激进的尝试故障率高因此在GDDR7上采用了更为保守的PAM-3技术一次可传输3个电平-1/0/1。内存除了应用DDR双沿采样和每年缓慢提升频率外几乎没有什么大的动作不像显存缝宽提升带宽。GPU适合处理每个并行任务之间无关联的情况如果后级任务依赖前级任务的运算结果只能用CPU依次执行任务而单次任务所需要的数据其实是比较少的因此CPU对内存带宽的要求并不高。若需要提升CPU运算的性能只能让单次任务执行的速度加快因此CPU一直需提高的是频率。几年前CPU的频率就已经上了5GHz反观GPU4090满载2.55GHz不到3GHz5090可达到3.5GHz但是与CPU仍有较大差距。注意并不是说频率对GPU不重要而是GPU提升频率带来的收益远不如堆规模堆核心带来的收益大。如果CPU每次运算都需要到内存取数据那么内存的延迟就非常重要了。延迟指的是CPU开始进行访问到实际数据被访问到的时间差若延迟较大这些延迟会在一次次的访问过程中积累起来总耗时就会被拉到很长。内存的延迟一般在50-80ns左右即使是这个水平堆CPU来说仍然是比较慢的。因此最近几年CPU一直都在加L1、L2、L3缓存目的是为了减少对内存的访问。而延迟对GPU来说显得不那么重要GPU是同时去显存里取数据即使延迟较大由于是同时进行的所以体现到最后也不会明显拖慢总的处理速度。显存的延迟普遍在200ns以上。整理来源https://www.bilibili.com/video/BV1SGXsYxESV?spm_id_from333.788.videopod.sectionsvd_sourcece699e10c2cd025a3e401be7205efc2d