通常,如果您要购买一台新计算机,则可以根据预期的工作量确定要购买的处理器。游戏中的性能往往由单核速度决定,而视频编辑等应用程序则由单核数目决定。
就市场上可用的产品而言,所有CPU似乎都具有大致相同的速度,主要区别在于更多的线程或更多的内核。
例如:
那么,为什么我们看到这种增加内核的模式,而所有内核都具有相同的时钟速度?
为什么我们没有具有不同时钟速度的变体?例如,两个“大”核心和许多小核心。
例如,为了代替例如在4.0 GHz下的四个核心(即最大4x4 GHz〜16 GHz),CPU的两个内核在4.0 GHz下运行,而四个核在2 GHz(即2x4.0 GHz)下运行呢? + 4x2.0 GHz〜16 GHz(最大值)。第二种选择在单线程工作负载上是否会同样出色,而在多线程工作负载上可能会更好?
我问这个问题是一个一般性的问题,而不是专门针对我上面列出的那些CPU或任何特定的一个特定工作负载。我只是好奇为什么这种模式是这样。
这被称为异构多处理(HMP),并被移动设备广泛采用。在实现big.LITTLE的基于ARM的设备中,处理器包含具有不同性能和功耗配置文件的内核,例如,某些内核运行速度快,但消耗大量功率(更快的体系结构和/或更高的时钟),而其他内核节能高效,但速度较慢(较慢的架构和/或较低的时钟)。这很有用,因为一旦超过某个点,功耗就会随着性能的提高而成比例地增加。这里的想法是在需要时获得性能,而在不需要时获得电池寿命。
在台式机平台上,功耗几乎不是问题,因此这不是真正必要的。大多数应用程序期望每个内核具有相似的性能特征,并且HMP系统的调度过程比传统SMP系统的调度要复杂得多。(Windows 10从技术上说支持HMP,但它主要用于使用ARM big.LITTLE的移动设备。)
另外,当今大多数台式机和笔记本电脑处理器的散热或电气性能均不受限于某些内核甚至在短脉冲时间内需要比其他内核运行得更快的程度。从根本上讲,我们可以快速完成单个内核,因此用较慢的内核替换某些内核将不会使其余内核运行得更快。
虽然有一些台式机处理器具有一个或两个内核,它们的运行速度比其他内核要快,但是此功能当前仅限于某些非常高端的Intel处理器(如Turbo Boost Max Technology 3.0),并且仅在性能上有所提升对于那些可以运行得更快的内核。
虽然当然可以设计既有大型,快速内核,又有较小,较慢的内核的传统x86处理器,以针对线程密集的工作负载进行优化,但这将为处理器设计增加相当大的复杂性,并且应用程序不太可能正确地支持它。
假设有一个具有两个快速Kaby Lake(第七代Core)内核和八个慢速Goldmont(Atom)内核的处理器。您总共有10个内核,并且针对此类处理器进行了优化的高线程工作负载可能会比普通的四核Kaby Lake处理器获得更高的性能和效率。但是,不同类型的内核具有完全不同的性能水平,慢速内核甚至不支持快速内核支持的某些指令,例如AVX。(ARM通过要求big和LITTLE内核都支持相同的指令来避免此问题。)
同样,大多数基于Windows的多线程应用程序都假定每个内核都具有相同或几乎相同的性能水平,并且可以执行相同的指令,因此这种不对称可能导致性能不理想,甚至在崩溃时崩溃。它使用慢速内核不支持的指令。尽管英特尔可以修改慢速内核以添加高级指令支持,以便所有内核都可以执行所有指令,但这无法解决异构处理器的软件支持问题。
与您在问题中所考虑的更接近的另一种应用程序设计方法将使用GPU来加速应用程序的高度并行部分。可以使用诸如OpenCL和CUDA之类的API来完成。对于单芯片解决方案,AMD在其APU中促进了对GPU加速的硬件支持,该APU将传统CPU和高性能集成GPU与异构系统体系结构结合在同一芯片上,尽管这在外部并没有太多的应用。一些专门的应用程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句