2024年5月10日发(作者:尚觅风)
--
DrawCall的理解
drawcall是CPU对底层图形绘制接口的调用命令GPU执行渲染操作,渲染流程
采用流水线实现,CPU和GPU并行工作,它们之间通过命令缓冲区连接,CPU向其中发
送渲染命令,GPU接收并执行对应的渲染命令。
这里drawcall影响绘制的原因主要是因为每次绘制时,CPU都需要调用drawcall
而每个drawcall都需要很多准备工作,检测渲染状态、提交渲染数据、提交渲染状态。而
GPU本身具有很强大的计算能力,可以很快就处理完渲染任务。
当DrawCall过多,CPU就会很多额外开销用于准备工作,CPU本身负载,而这时GP
U可能闲置了。
解决DrawCall:过多的DrawCall会造成CPU的性能瓶颈:大量时间消耗在DrawC
all准备工作上。很显然的一个优化方向就是:尽量把小的DrawCall合并到一个大的D
rawCall中,这就是批处理的思想。下面是一些具体实施方案:
1. 合并的网格会在一次渲染任务中进行绘制,他们的渲染数据,渲染状态和shader都
是一样的,因此合并的条件至少是:同材质、同贴图、同shader。最好网格顶点格式也
一致。
2. 尽量避免使用大量小的网格,当确实需要时,进行合并。
3. 避免使用过多的材质,尽量共享材质。
--
--
4. 合并本身有消耗,因此尽量在编辑器下进行合并
5. 确实需要在运行时合并的,将静态的物体和动态的物体分开合并:静态的合并一次
就可以,动态的只要有物体发生变换就要重新合并。
FPS(每秒传输帧数(Frames Per Second))
例如:75Hz的刷新率刷也就是指屏幕一秒内只扫描75次,即75帧/秒。而当刷新率
太低时我们肉眼都能感觉到屏幕的闪烁,不连贯,对图像显示效果和视觉感观产生不好的影
响。在FPS游戏例如CS中也是一样的,游戏里的每一帧就是一幅静止画面,而“FPS”
值越高也就是“刷新率”越高,每秒填充的帧数就越多,那么画面就越流畅。当显卡能提供
的“FPS”值不足以满足游戏的“FPS”时玩家就会感觉丢帧,也就是画面不连贯,以至影
响游戏操作结果。
主频ﻫ主频也叫时钟频率,单位是兆赫(MHz)或千兆赫(GHz),用来表示CPU的运
算、处理数据的速度。通常,主频越高,CPU处理数据的速度就越快。ﻫCPU的主频=外频
×倍频系数。主频和实际的运算速度存在一定的关系,但并不是一个简单的线性关系。 所
以,CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信
号震荡的速度。在Intel的处理器产品中,也可以看到这样的例子:1 GHz Itanium芯
片能够表现得差不多跟2.66 GHz至强(Xeon)/Opteron一样快,或是1.5 GHz Itan
ium 2大约跟4 GHz Xeon/Opteron一样快。CPU的运算速度还要看CPU的流
水线、总线等各方面的性能指标。
外频ﻫ外频是CPU的基准频率,单位是MHz。CPU的外频决定着整块主板的运行速
度。通俗地说,在台式机中,所说的超频,都是超CPU的外频(当然一般情况下,CPU的倍
--
--
频都是被锁住的)相信这点是很好理解的。但对于服务器CPU来讲,超频是绝对不允许的。
前面说到CPU决定着主板的运行速度,两者是同步运行的,如果把服务器CPU超频了,
改变了外频,会产生异步运行,(台式机很多主板都支持异步运行)这样会造成整个服务器
系统的不稳定。
绝大部分电脑系统中外频与主板前端总线不是同步速度的,而外频与前端总线(FSB)频
率又很容易被混为一谈。ﻫﻫ总线频率ﻫAMD 羿龙II X4 955黑盒ﻫ前端总线(FSB)是将C
PU连接到北桥芯片的总线。前端总线(FSB)频率(即总线频率)是直接影响CPU与
内存直接数据交换速度。有一条公式可以计算,即数据带宽=(总线频率×数据位宽)/8,数据
传输最大带宽取决于所有同时传输的数据的宽度和传输频率。比方,支持64位的至强No
cona,前端总线是800MHz,按照公式,它的数据传输最大带宽是6.4GB/秒。ﻫ外频与
前端总线(FSB)频率的区别:前端总线的速度指的是数据传输的速度,外频是CPU与主板
之间同步运行的速度。也就是说,100MHz外频特指数字脉冲信号在每秒钟震荡一亿次;
而100MHz前端总线指的是每秒钟CPU可接受的数据传输量是100MHz×64bit÷8
bit/Byte=800MB/s。ﻫ
倍频系数ﻫ倍频系数是指CPU主频与外频之间的相对比例关系。在相同的外频下,倍频
越高CPU的频率也越高。但实际上,在相同外频的前提下,高倍频的CPU本身意义并不大。
这是因为CPU与系统之间数据传输速度是有限的,一味追求高主频而得到高倍频的CPU
就会出现明显的“瓶颈”效应-CPU从系统中得到数据的极限速度不能够满足CPU运算
的速度。一般除了工程样版的Intel的CPU都是锁了倍频的,少量的如Intel酷睿2核心
的奔腾双核E6500K和一些至尊版的CPU不锁倍频,而AMD之前都没有锁,AMD推出了
黑盒版CPU(即不锁倍频版本,用户可以自由调节倍频,调节倍频的超频方式比调节外频
稳定得多)。ﻫﻫ缓存
--
--
缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常
大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和
硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度
提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。
但是由于CPU芯片面积和成本的因素来考虑,缓存都很小。
L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。内置的
L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组
成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。
一般服务器CPU的L1缓存的容量通常在32-256KB。ﻫL2 Cache(二级缓存)是CPU
的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速度与主频相同,而
外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大
越好,以前家庭用CPU容量最大的是512KB,笔记本电脑中也可以达到2M,而服务器和
工作站上用CPU的L2高速缓存更高,可以达到8M以上。
L3 Cache(三级缓存),分为两种,早期的是外置,内存延迟,同时提升大数据量计
算时处理器的性能。降低内存延迟和提升大数据量计算能力对游戏都很有帮助。而在服务
器领域增加L3缓存在性能方面仍然有显著的提升。比方具有较大L3缓存的配置利用物理
内存会更有效,故它比较慢的磁盘I/O子系统可以处理更多的数据请求。具有较大L3缓存
的处理器提供更有效的文件系统缓存行为及较短消息和处理器队列长度。
--
2024年5月10日发(作者:尚觅风)
--
DrawCall的理解
drawcall是CPU对底层图形绘制接口的调用命令GPU执行渲染操作,渲染流程
采用流水线实现,CPU和GPU并行工作,它们之间通过命令缓冲区连接,CPU向其中发
送渲染命令,GPU接收并执行对应的渲染命令。
这里drawcall影响绘制的原因主要是因为每次绘制时,CPU都需要调用drawcall
而每个drawcall都需要很多准备工作,检测渲染状态、提交渲染数据、提交渲染状态。而
GPU本身具有很强大的计算能力,可以很快就处理完渲染任务。
当DrawCall过多,CPU就会很多额外开销用于准备工作,CPU本身负载,而这时GP
U可能闲置了。
解决DrawCall:过多的DrawCall会造成CPU的性能瓶颈:大量时间消耗在DrawC
all准备工作上。很显然的一个优化方向就是:尽量把小的DrawCall合并到一个大的D
rawCall中,这就是批处理的思想。下面是一些具体实施方案:
1. 合并的网格会在一次渲染任务中进行绘制,他们的渲染数据,渲染状态和shader都
是一样的,因此合并的条件至少是:同材质、同贴图、同shader。最好网格顶点格式也
一致。
2. 尽量避免使用大量小的网格,当确实需要时,进行合并。
3. 避免使用过多的材质,尽量共享材质。
--
--
4. 合并本身有消耗,因此尽量在编辑器下进行合并
5. 确实需要在运行时合并的,将静态的物体和动态的物体分开合并:静态的合并一次
就可以,动态的只要有物体发生变换就要重新合并。
FPS(每秒传输帧数(Frames Per Second))
例如:75Hz的刷新率刷也就是指屏幕一秒内只扫描75次,即75帧/秒。而当刷新率
太低时我们肉眼都能感觉到屏幕的闪烁,不连贯,对图像显示效果和视觉感观产生不好的影
响。在FPS游戏例如CS中也是一样的,游戏里的每一帧就是一幅静止画面,而“FPS”
值越高也就是“刷新率”越高,每秒填充的帧数就越多,那么画面就越流畅。当显卡能提供
的“FPS”值不足以满足游戏的“FPS”时玩家就会感觉丢帧,也就是画面不连贯,以至影
响游戏操作结果。
主频ﻫ主频也叫时钟频率,单位是兆赫(MHz)或千兆赫(GHz),用来表示CPU的运
算、处理数据的速度。通常,主频越高,CPU处理数据的速度就越快。ﻫCPU的主频=外频
×倍频系数。主频和实际的运算速度存在一定的关系,但并不是一个简单的线性关系。 所
以,CPU的主频与CPU实际的运算能力是没有直接关系的,主频表示在CPU内数字脉冲信
号震荡的速度。在Intel的处理器产品中,也可以看到这样的例子:1 GHz Itanium芯
片能够表现得差不多跟2.66 GHz至强(Xeon)/Opteron一样快,或是1.5 GHz Itan
ium 2大约跟4 GHz Xeon/Opteron一样快。CPU的运算速度还要看CPU的流
水线、总线等各方面的性能指标。
外频ﻫ外频是CPU的基准频率,单位是MHz。CPU的外频决定着整块主板的运行速
度。通俗地说,在台式机中,所说的超频,都是超CPU的外频(当然一般情况下,CPU的倍
--
--
频都是被锁住的)相信这点是很好理解的。但对于服务器CPU来讲,超频是绝对不允许的。
前面说到CPU决定着主板的运行速度,两者是同步运行的,如果把服务器CPU超频了,
改变了外频,会产生异步运行,(台式机很多主板都支持异步运行)这样会造成整个服务器
系统的不稳定。
绝大部分电脑系统中外频与主板前端总线不是同步速度的,而外频与前端总线(FSB)频
率又很容易被混为一谈。ﻫﻫ总线频率ﻫAMD 羿龙II X4 955黑盒ﻫ前端总线(FSB)是将C
PU连接到北桥芯片的总线。前端总线(FSB)频率(即总线频率)是直接影响CPU与
内存直接数据交换速度。有一条公式可以计算,即数据带宽=(总线频率×数据位宽)/8,数据
传输最大带宽取决于所有同时传输的数据的宽度和传输频率。比方,支持64位的至强No
cona,前端总线是800MHz,按照公式,它的数据传输最大带宽是6.4GB/秒。ﻫ外频与
前端总线(FSB)频率的区别:前端总线的速度指的是数据传输的速度,外频是CPU与主板
之间同步运行的速度。也就是说,100MHz外频特指数字脉冲信号在每秒钟震荡一亿次;
而100MHz前端总线指的是每秒钟CPU可接受的数据传输量是100MHz×64bit÷8
bit/Byte=800MB/s。ﻫ
倍频系数ﻫ倍频系数是指CPU主频与外频之间的相对比例关系。在相同的外频下,倍频
越高CPU的频率也越高。但实际上,在相同外频的前提下,高倍频的CPU本身意义并不大。
这是因为CPU与系统之间数据传输速度是有限的,一味追求高主频而得到高倍频的CPU
就会出现明显的“瓶颈”效应-CPU从系统中得到数据的极限速度不能够满足CPU运算
的速度。一般除了工程样版的Intel的CPU都是锁了倍频的,少量的如Intel酷睿2核心
的奔腾双核E6500K和一些至尊版的CPU不锁倍频,而AMD之前都没有锁,AMD推出了
黑盒版CPU(即不锁倍频版本,用户可以自由调节倍频,调节倍频的超频方式比调节外频
稳定得多)。ﻫﻫ缓存
--
--
缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常
大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和
硬盘。实际工作时,CPU往往需要重复读取同样的数据块,而缓存容量的增大,可以大幅度
提升CPU内部读取数据的命中率,而不用再到内存或者硬盘上寻找,以此提高系统性能。
但是由于CPU芯片面积和成本的因素来考虑,缓存都很小。
L1 Cache(一级缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。内置的
L1高速缓存的容量和结构对CPU的性能影响较大,不过高速缓冲存储器均由静态RAM组
成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。
一般服务器CPU的L1缓存的容量通常在32-256KB。ﻫL2 Cache(二级缓存)是CPU
的第二层高速缓存,分内部和外部两种芯片。内部的芯片二级缓存运行速度与主频相同,而
外部的二级缓存则只有主频的一半。L2高速缓存容量也会影响CPU的性能,原则是越大
越好,以前家庭用CPU容量最大的是512KB,笔记本电脑中也可以达到2M,而服务器和
工作站上用CPU的L2高速缓存更高,可以达到8M以上。
L3 Cache(三级缓存),分为两种,早期的是外置,内存延迟,同时提升大数据量计
算时处理器的性能。降低内存延迟和提升大数据量计算能力对游戏都很有帮助。而在服务
器领域增加L3缓存在性能方面仍然有显著的提升。比方具有较大L3缓存的配置利用物理
内存会更有效,故它比较慢的磁盘I/O子系统可以处理更多的数据请求。具有较大L3缓存
的处理器提供更有效的文件系统缓存行为及较短消息和处理器队列长度。
--