当前位置: 首页 > 科技观察

图-高性能服务器的CPU是怎么布局的?

时间:2023-03-14 12:33:07 科技观察

今天和大家聊聊——服务器的多处理器架构是什么意思?试想一下,如果一个高性能的服务器有4个CPU,64g的内存,还有一些总线、IO等资源,这些资源在服务器内部是怎么安排的呢?本文不会从逻辑电路、芯片设计、cpu历史等角度进行讲解,水平有限,实战为先。通过本文,您将了解以下内容:物理内核和逻辑内核处理器架构:SMP、NUMA、MPP1。物理核心与逻辑核心说到CPU,大家首先想到的可能是这样的:图1Intel代号CooperLake的XeonPlatinum9200处理器该系列CPU的物理封装长宽分别为76.0×72.5mm,它也是英特尔历史上最大的处理器。CPU内部是什么样子的?CPU内部封装了一个或多个物理内核。物理核心具有独立的各级缓存和电路结构。只有一个物理核心的是单核CPU,具有多个物理核心的是多核CPU。图24核CPU内部结构图对于相同处理器规格的服务器,物理核心总数的计算方法为:物理核心数=CPU总数*单CPU物理核心数图3多CPU和多物理内核的简化图Hyper-Threading是Intel于2002年发布的一项技术,全称Hyper-Threading,缩写为HT技术。主流、业界对HT的评价不一,但官方并没有放弃超线程技术。简单来说,HT技术可以让处理器中的一个物理内核像两个物理内核一样工作,从而提高系统的整体性能,但肯定不能真的像两个物理内核那样,否则就违反了物理定律,就意味着在某些技术的帮助下,可以更好地利用物理内核的性能。对于相同处理器规格的服务器,逻辑核心总数的计算方法为:开启HT:逻辑核心数=物理核心数=CPU总数*单CPU物理核心数*2DisableHT:逻辑核心数=物理核心数=CPU总数*单CPU物理核心数。掌握了CPU、物理核心和逻辑核心的关系后,就可以找台服务器查看相关配置,试一试了。图4CPU&PhysicalCore&LogicalCoreDiagram2.多处理器架构当CPU过多时,需要考虑如何设计,于是出现了几种不同的多处理器架构。目前服务器大致可以分为三类:对称多处理器结构SMP非统一存储访问结构NUMA海量并行处理结构MPP对我们来说应该多用SMP和NUMA,少接触MPP。2.1SMP对称多处理器结构SMP是SymmetricMulti-Processor的缩写。对称多处理器结构是指多个CPU对称且平等,共享相同的物理内存/IO等资源,所以SMP结构属于一致内存访问结构UMA。图5SMPArchitectureSchematicDiagram在共享模式下,所有CPU均等使用资源。模式简单,CPU数量少时效率很好,但优势也可能成为障碍。想象一个场景,我们为了提高SMP模式下服务器的处理能力,横向扩展CPU的数量,这些CPU通过同一条总线访问内存。随着CPU数量的增加,同一内存地址的访问冲突会明显增加,间接造成CPU资源的浪费。相关实验证明,一个SMP服务器最好的情况是2-4个CPU。图6SMPexpansion-efficiencycurve2.2NUMAnon-uniformmemoryaccessstructure上面提到的SMP架构是uniformmemoryaccessstructureUMA,还有Non-UniformMemoryAccessarchitecture,所以NUMA结构和SMP的区别很明显架构是对等内存访问是否一致。NUMA架构的服务器有多个CPU模块,每个CPU模块由多个CPU组成。每个CPU模块都有独立的本地内存、I/O和其他资源。CPU模块可以称为节点。图7NUMA架构CPU模块内部结构节点可以通过互连模块交换数据,所以每个CPU模块仍然可以访问整个系统的内存,但此时内存分为本地和外部,访问速度自然就慢了.不一样。访问CPU模块的本地内存将比访问其他CPU模块的内存快得多。在明确了这种架构带来的内存访问差异之后,我们在实际开发应用程序时需要尽量减少不同CPU模块之间的信息交互。图8整体NUMA架构图NUMA技术也有缺陷,因为访问远程内存的延迟比本地内存长很多,当CPU数量增加时,系统性能不能线性增加,换句话说,CPU数量翻倍CPU无法获得1倍的性能提升,因此仍然存在缩放限制区域。2.3MPPMassiveParallelProcessing结构MPP是MassiveParallelProcessing的缩写。MPP是另一种系统扩展方式。它由多个SMP服务器通过一定的节点互连网络连接起来,完成同一个任务。横向可以看成一个SMPScale。在MPP结构中,多个SMP服务器是一个完全共享(ShareNothing)的结构,因此扩展能力最好。典型的刀片服务器是刀片服务器。有文章说MPP架构和MapReduce模式很像。多个SMP服务器节点通过Internet实现,目前没有统一的数据通信协议,这部分交互协议用户是无法感知的。MPP架构有点像刀片服务器。每个切片都是独立的,切片之间通过特定的协议直接交互。Figure9MPPArchitectureDiagram3Summary本文内容不多,先阐述一些关于CPU&物理核心&逻辑核心的常识,然后针对多处理器服务器的三种常见架构,每种架构都有不同的具体和使用场景,建议关注NUMA。水文篇,先到??这里吧,谢谢阅读。