
访问:
阿里云福利专用云服务器ECS低至102元/年

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的计算和标准化变得非常困难,导致早期的CPU在科学计算中仍然非常慢. 因此,英特尔设计了独立于8086和8088处理器的8087数学辅助处理器. 后来,随着计算机不再成为科学家的工具并逐渐进入公众视野,英特尔首次在80486DX处理器的内核中集成了浮点单元.

英特尔8087协处理器


Intel Core i7 7700k处理器的CPU-Z信息
早期的Intel x87系列数学辅助处理器仅用作增加浮点计算速度的处理器. 在现代处理器中,浮点计算功能将传递SIMD(单指令多数据,单指令多数据流). )实现并行计算功能的技术. 打开CPU-Z后,您可以看到现代处理器的SSE指令集具有处理浮点运算的能力. 在随后的开发中,逐步引入了SSE2,SSE3,SSE4,AVX,FMA等具有强大浮点计算功能的指令集,这些指令集更适合现代软件开发.
然后将出现问题. 现代处理器增加了许多高度并行化的浮点运算单元. 与以前的纯CPU的浮点算术功能相比,它有了很大的飞跃,但与现代显卡相比,就设备而言,这样的浮点算术功能还不够,所以为什么不集成浮点数呢?像几十年前的CPU中的算术单元? ?

Nvidia Geforce 256核心照片

对于此问题,我们必须首先了解为什么图形处理器是独立的硬件. 在1990年代,计算机多媒体逐渐开始蓬勃发展. 在1998年至1999年之间,英特尔和AMD CPU已经具有SSE或3DNow!这样的SIMD浮点运算指令集. 但是,随着电子游戏的发展,计算机用户对计算机的图形性能提出了更高的要求,但是此时CPU中的浮点计算性能不能满足需求,因此图形处理器开始承担更多的浮点运算. 点操作.

Nvidia CUDA核心工作流程
但是,当图形处理器的用户看到如此高性能的浮点算术处理器时,他们正在考虑如何使此类设备除了图形计算外还具有浮点计算性能. 借助GPGPU(通用GPU)概念的逐渐兴起以及图形卡上统一渲染架构的出现,这种计算方法真正成为了现实. Nvidia于2007年正式发布了CUDA并行计算平台. 后来,通用计算API(应用程序编程接口)如openCL也出现了.
这时,我们突然发现GPU抢占了CPU的浮点计算任务,但是为什么CPU并没有取消浮点计算单元,但其浮点计算性能却越来越强呢? ?


AMD推土机架构
实际上,并非没有人想到过这种情况,而是他们已经使用AMD的推土机架构产品来做到这一点. 该体系结构放弃了由一组整数算术单元和浮点算术单元组成的先前内核. 相反,两个内核共享一个浮点算术单元以形成一个簇. AMD将这种架构称为CMT,也称为集群多线程技术,随后将相对优于Intel的GPU内核集成到CPU中,从而产生了APU处理器. AMD还为此目的建立了HSA基金会. 为了解决CPU和GPU内存统一寻址的问题,它还提出了hUMA技术并将其用于Sony的PS4游戏机.

Sony Playstation 4主机,CPU和GPU共享8GB GDDR5内存
那么,为什么制造商做了很多事情却仍然不能用大型GPU代替CPU中的浮点单元?计算精度是关键. CPU中的浮点算术单元已准备好进行更高精度的浮点运算. 例如,最新的Intel处理器中的AVX指令集可以处理512位扩展数据,从而大大提高了计算准确性和速度. GPU中的处理器是设计用于高度并行计算的相对简单的内核. 这些内核中的每一个都是SIMD处理器,但是可以处理的数据的准确性受到限制. Nvidia和AMD图形处理器均支持该功能. 大部分数据准确性都是单精度和双精度浮点计算(FP32和FP64),即使随着机器学习,深度学习和神经网络的普及,最新的图形处理器甚至还支持半精度浮点运算. 点计算(FP16). 其次,由于与CPU中的浮点运算单元相比计算精度不高,因此这些处理器中没有用于数据检查和数据补偿的内置运算单元. 因此,对于使用GPU进行科学计算的人们,他们需要在编程阶段避免此类问题. 同时,CPU和GPU在设计上有很大不同. CPU的浮点单元数量很少,但是单个浮点单元提供的性能非常强. GPU是由大量SIMD单元构建的浮点计算功能. 在设计CPU时,还必须设计大量的多级缓存以提高CPU的计算速度. 对于这些SIMD处理单元,GPU通常只有一个很小的内置缓存,同时会提供大量的内存(视频内存).
因此,根据以上分析,我们可以得出结论,尽管GPU具有更强大的浮点计算性能,但它仅限于其计算单元的设计和统一内存体系结构的设计. 它仍然不能完全替换CPU中的浮点数. 点计算核心. CPU中的整个点算术单元负责诸如压缩和解压缩,编译器编译,网络路由和程序流控制之类的任务. 同时,其浮点运算核心仍在处理图像处理,科学计算和其他需要更高精确度计算的任务. 任务.
访问权限:
京东商城
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-294786-1.html
以后打美日是鱼
抢来
抛出这个观点