美文网首页
第一章 理解高性能程序(6) - 多核

第一章 理解高性能程序(6) - 多核

作者: 耕田者 | 来源:发表于2022-07-09 10:35 被阅读0次

    多核

            功率极限问题最终是可以克服的。冷却是一种方法。或者是降低CPU频率的同时引入可并行工作的处理器核心,增加更多的通用处理器、支持向量处理的单指令多数据(SIMD, Single instruction multiple data),或增加不需要一直供电的器件。通过这些方法,晶体管的密度不会再增加,从而避免芯片过热的问题。

            当一块芯片上有多个CPU核,被称为对称多处理器(SMP, symmetric multiprocessing)CPU,所有的核都能访问在同一块芯片上的各自的数据。相对地,在非一致内存访问(NUMA, non-uniform memory access)系统上,多个物理上独立的CPU拥有他们独有的内部缓存。这些内部缓存对其内部CPU的内存访问速度比外部CPU要快得多。另一个问题是CPU之间的缓存一致性,需要通过复杂的缓存一致性协议解决,对性能也会造成损失,在Qt应用程序的场景,我们通常遇到的是SMP处理器,我们将在本书忽略NUMA系统。

            在多核芯片上,处理资源被分为核心和非核心两种类型。核心资源需要复制一份给其他核心,非核心资源不需要复制,但必须在核心间共享。例如,顶级缓存(如L3, L2视具体处理器而定)是非核心独占的,需要在各个处理器之间共享。

            一个经常遇到的概念超线程(hyper threading)是另一个用于提高CPU并行性从而提升资源利用率的思想。支持超线程的处理器每个物理核有两个逻辑核,每个逻辑核保持其独立的内部状态。处理器的全局状态(如运行、中断、停机)会复制一份给每个逻辑核,计算资源则在逻辑核之间共享。这样设计的意图是可以借用被阻塞的逻辑核的计算资源,从而提高流水线的资源利用率,防止流水线阻塞。操作系统以物理核的方式使用逻辑核,只有以超线程的方式优化才能使整个系统的性能得以提升。

            严格地说,图形处理单元(GPU, graphical processing units)并不是一种多核系统,但处理器通常会与GPU一起集成在主板上,我们也在此提一下GPU。GPU由许多可以做大规模并行计算的非常简单的处理单元组成。通常,GPU用来做图形加速处理,但GPU也能用来做通用计算的加速,比如深度学习应用中的神经网络的训练。在Qt应用场景中,我们通常只使用GPU的图形功能。

    相关文章

      网友评论

          本文标题:第一章 理解高性能程序(6) - 多核

          本文链接:https://www.haomeiwen.com/subject/oyjwbrtx.html