半精度浮点数计算,浮点运算

CPU浮点运算与整点运算分别决定其什么方面的性能?

半精度浮点数计算,浮点运算


简单来讲在现代计算机环境下的日常使用中,整点运算性能影响如压缩与解压缩,计算机进程调度,编译器语法分析,计算机电路辅助设计,游戏AI处理类型的操作 。而浮点运算单元主要影响CPU的科学计算性能,如流体力学,量子力学等,而更贴近我们日常能见到的应用就是多媒体相关的应用,如音视频的编解码,图像处理等操作 。ZEN的核心架构图而我们通常在测试CPU时使用如Sandra 2018,Super Pi,wPrime,Fritz Chess Benchmark,WinRAR,7-zip,x264 FHD Benchmark等软件,这些测试软件就能够体现处理器理论整数运算单元和浮点运算单元性能的 。
在具体使用的软件中,如压缩解压软件WinRAR,7-zip,程序员使用的GCC编译器,网络路由的选择,游戏中的AI以及我们日常试用操作系统调度都是整点运算 。而我们在使用lightroom等图像处理软件,语音识别,视频的编解码,以及科学家使用Matlab进行科学计算时都用到了浮点运算能力 。对于玩家最关心的就是这些到底对游戏有什么影响 。
首先CPU承担着整个计算机中的任务进程分配问题,所以如果游戏代码优化不好,进行频繁的Draw Call操作,会非常消耗CPU任务调度资源 。同时现在游戏AI做操作行为判断时,也是使用整点运算单元的 。而现在很多游戏加入了防盗版机制,在运行游戏时频繁的加解密会消耗浮点运算性能 。所以有朋友使用较老的硬件运行新游戏时,会非常影响游戏运行帧率 。
所以整点运算性能和浮点运算性能都反映了CPU处理数据的能力 。但是整点运算性能还反映了控制程序流的的能力 。在计算机中,定点数不一定是整数,而浮点数也不一定是小数 。在计算机中,定点数是指小数点固定的数,而浮点数是指小数点不固定的数 。在计算机中采用IEEE 754标准进行浮点数的存储的,他可以精确的的表示某一个数据 。
在早期浮点运算单元并没有一开始就加入到CPU设计中的 。但是在计算机中,运算单元都是逻辑电路,由浮点数的定义我们可以知道,在早期仅有整点数运算单元而不带有浮点数处理单元的 处理器上,处理浮点数的阶码、尾数的计算以及规格化就成为了很困难的事情,导致早期CPU在科学计算中依旧非常的缓慢 。所以Intel就设计了独立于8086和8088处理器外的8087数学辅助处理器 。
到后来随着计算机不再是科学家的工具,也逐渐进入了公众视野,Intel在80486DX处理器核心内首次集成了浮点运算单元 。Intel 8087协处理器Intel Core i7 7700k处理器的CPU-Z信息早期的Intel x87系列数学运算辅助处理器只是作为一个提高浮点运算速度的处理器,而在现代处理器中,浮点计算功能会通过SIMD(Single Instruction Multiple Data,单指令多数据流)的技术实现并行计算能力 。
在打开CPU-Z后,开支持指令集一栏可以看到,现代处理器带有的SSE指令集就有处理浮点运算的能力 。而在之后的发展中,也逐渐引入了SSE2,SSE3,SSE4,AVX,FMA等更加适用于现代软件开发的拥有强大浮点运算能力的指令集 。那接下来就有问题了,现代处理器加入了很多高度并行化的浮点运算单元,相较以往单纯CPU的浮点运算能力有了非常大的飞跃,但是相对于现代的图形处理器来说,这么些浮点运算能力是不够看的,那为什么不像几十年前一样不在CPU中集成浮点运算单元呢??Nvidia Geforce 256核心照片对于这个问题,首先大家要了解为什么会独立出来图形处理器这种专有硬件的 。
在20世纪90年代,计算机多媒体逐渐开始兴盛起来,在1998年到1999年间,Intel和AMD的CPU中已经拥有了SSE或3DNow!这样的SIMD浮点运算指令集 。但是随着电子游戏的发展,计算机的使用者对于计算机的图形性能有了更高的要求,但是此时的CPU内浮点运算性能并不满足需求,所以在此后图形处理器开始负担更多的浮点运算工作 。

推荐阅读