CPU架构之---SMP、NUMA

一、缩略词:

缩略词全称含义
SMPSymmetric Multi processing对称多处理器(UMA)
NUMA(Non-Uniform Memory Access)非一致性内存访问
UMAUniform Memory Architecture一致性内存访问

二、SMP简述和框架

2.1 smp简述

        SMP(Symmetric Multiprocessing,对称多处理)是一种计算机体系结构,用于多处理器系统。在 SMP 系统中,每个处理器都可以执行相同的任务,并且每个处理器都可以访问相同的内存和 I/O 总线。这使得每个处理器都能够独立地执行任务,而无需太多的协调或通信。

关键特点包括:

  • CPU和CPU以及CPU和内存都是通过一条总线连接起来

  • CPU都是平等的,没有主从关系

  • 所有的硬件资源都是共享的,即每个CPU都能访问到任何内存、外设等

  • 内存是统一结构和统一寻址的(UMA, Uniform Memory Architecture)

  • SMP服务器CPU利用率最好的情况是2至4个CPU,因为所有的处理器都通过一条总线连接起来,因此随着处理器的增加,系统总线成为了系统瓶颈

2.2 smp框架

三、NUMA简述和框架

3.1 NUMA简述

        NUMA的诞生是为了解决SMP架构下不断增多的CPU Core导致的性能问题,NUMA调整了CPU和内存的布局和访问关系。

        NUMA(Non-Uniform Memory Access,非一致性存储访问)是一种多处理器系统架构,其中每个处理器核心可以访问其本地内存以及其他处理器核心的远程内存。在 NUMA 系统中,内存访问时间取决于访问数据的位置,因为不同处理器核心访问本地内存和远程内存的延迟可能不同。

关键特点包括:

  1. 内存访问区域:系统中的内存被划分为多个区域,每个处理器核心可以更快地访问其本地内存,但对于其他处理器核心的内存访问速度可能会较慢。

  2. 本地性:NUMA 架构鼓励程序在其数据访问模式中保持本地性,即尽可能地访问本地内存,以减少远程内存访问所带来的性能开销。

  3. 可扩展性:NUMA 系统通常用于大型多处理器系统,因为它可以提供更好的可扩展性,同时降低了总线和内存访问的竞争。

  4. 在NUMA架构中,将CPU划分到多个NUMA Node中,每个Node有自己独立的内存空间和PCIE总线系统。各个CPU间通过QPI总线进行互通。

3.2  numa框架

3.4 典型应用

   3.3 NUMA架构的CPU和内存分布  

        3.3.1 NUMA架构CPU分布

  • Socket:表示一颗物理 CPU 的封装(物理 CPU 插槽),简称插槽。Socket表示可以看得到的真实的CPU核 。

  • Core:物理 CPU 封装内的独立的一组程序执行的硬件单元,比如寄存器,计算单元等,Core表示的是在同一个物理核内逻辑层面的核。同一个物理CPU的多个Core,有自己独立的L1和L2 Cache,共享L3 Cache。

  • Thread:使用超线程技术虚拟出来的逻辑 Core,需要 CPU 支持(这里需要用到cpu虚拟化技术,下面会讲这块)。为了便于区分,逻辑 Core 一般被写作 Processor。在具有 Intel 超线程技术的处理器上,每个内核可以具有两个逻辑处理器,这两个逻辑处理器共享大多数内核资源(如内存缓存和功能单元)。此类逻辑处理器通常称为 Thread 。

  • Node:即NUMA Node,包含有若干个 CPU Core 的组。

 3.3.2 NUMA架构memory分布

可以使用numactl -H命令查看

四、如何判断系统是NUMA还是SMP架构

         通过lscpu命令来查询。

它们最重要的区别在于内存是否绑定在各个物理CPU上,以及CPU如何访问内存。

NUMA 最大的特点是引入了node和distance的概念,node内部有多个CPU,以及绑定的内存。每个node的CPU和内存一般是相等。

4.1 numa架构

 lscpu
Architecture: x86_64
CPU op-mode(s): 64-bit
Byte Order: Little Endian
CPU(s): 128
On-line CPU(s) list: 0-127
Thread(s) per core: 2
Core(s) per socket: 32
Socket(s): 2
NUMA node(s): 4

上面开启了超线程, NUMA node(s) 为 4,而 Socket(s) 为 2,这意味着每个物理的 CPU 插槽内包含了两个 NUMA 节点。这种设计可以提供更多的内存通道和更大的内存容量,以支持更多的处理器核心和更高的性能。可以这样计算:128 =  32 * 2 * 2。

4.2 SMP架构

SMP架构在嵌入式系统中也经常见到,比如一些移动手机嵌入式终端设备。如下图可以看到 "Socket(s)" 的值为 2,而 "NUMA node(s)" 并未在 lscpu 的输出中显示,这表明系统不是 NUMA 架构,而是采用对称多处理器架构。

lscpu
Architecture: arm64
CPU op-mode(s):  64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 2

可以看到此处没有超线程,每个core都有一个硬线程。此处的线程并不是我们操作系统中的进程、线程。每个核心只能同时执行一个线程,操作系统可以管理多个进程和线程,并通过时间片轮转的方式使得多个进程和线程能够在这些核心上运行

五、SMP和NUMA架构下的多系统应用

          随着soc技术不断更新迭代,以及科技应用多元化发展,芯片的集成度越来越强大。我们经常能看到一芯多系统的芯片。

        对于SMP: armv8架构支持type-1虚拟化,可以对cpu进行虚拟化,虚拟化后,就可以跑多个os系统,比如vcpu1跑linux, vcpu2跑rtos等。

        对于NUMA:由于每个core有自己独立的内存,包括cache等。不需要虚拟化,即可跑多os系统。比如node1跑linux,node2跑rtos等。

六、NUMA编程注意

        NUMA架构显著的特点就是CPU访问本地内存快,访问远程内存慢。所以我们在NUMA架构下编写程序,要扬长避短,多核多线程编程中,我们要尽可能的利用CPU Core的亲和性,将线程绑定到对应的CPU上,并且该线程从该CPU对应的本地内存上去申请内存,这样才能最大限度发挥NUMA架构的优势,达到比较好的处理性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

随动系统同步性问题(跟随给定和跟随反馈的区别)

1、运动控制比例随动 运动控制比例随动系统_正运动随动系统-CSDN博客文章浏览阅读1.4k次,点赞2次,收藏5次。PLC如何测量采集编码器的位置数据,不清楚的可以参看我的另一篇博文:三菱FX3U PLC高速计数器应用(附代码)_RXXW_Dor的博客-CSDN博客本文主要以三菱FX3U系列的高速…

vue2创建项目的两种方式,配置路由vue-router,引入element-ui

提示:vue2依赖node版本8.0以上 文章目录 前言一、创建项目基于vue-cli二、创建项目基于vue/cli三、对吧两种创建方式四、安装Element ui并引入五、配置路由跳转四、效果五、参考文档总结 前言 使用vue/cli脚手架vue create创建 使用vue-cli脚手架vue init webpack创…

使用Redis实现用户最近浏览记录

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Redis是一个key-va…

使用ROCm的HIP API向量加法程序

一、向量加法程序 Radeon Open Compute (ROCm) 是一个开源平台,用于加速高性能计算 (HPC) 和机器学习应用程序。它支持包括GPUs在内的多种硬件,并提供HIP (Heterogeneous-compute Interface for Portability) 作为CUDA代码的便捷转换工具。为了提供一个…

[spring] rest api security

[spring] rest api security 之前的 rest api CRUD 都没有实现验证(authentication)和授权(Authorization),这里使用 Spring security 进行补全 spring security 是一个非常灵活、可延伸的实现方式,比较简…

C语言 | Leetcode C语言题解之第19题删除链表的倒数第N个结点

题目: 题解: struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {struct ListNode* dummy malloc(sizeof(struct ListNode));dummy->val 0, dummy->next head;struct ListNode* first head;struct ListNode* second dummy;f…

安装 Kali NetHunter (完整版、精简版、非root版)、实战指南、ARM设备武器化指南、andrax、安卓渗透drozer

From:https://www.kali.org/docs/nethunter/ NetHunter 实战指南:https://www.vuln.cn/6430 乌云 存档:https://www.vuln.cn/wooyundrops 1、Kali NetHunter Kali NetHunter 简介 Net(网络),hunter&#x…

uniapp开发h5端使用video播放mp4格式视频黑屏,但有音频播放解决方案

mp4格式视频有一些谷歌播放视频黑屏,搜狗浏览器可以正常播放 可能和视频的编码格式有关,谷歌只支持h.264编码格式的视频播放 将mp4编码格式修改为h.264即可 转换方法: 如果是自己手动上传文件可以手动转换 如果是后端接口调取的地址就需…

【亲测】国内如何支付Overleaf?Overleaf如何升级标准版专业版?Overleaf升级保姆级教程

0. 【必看】开通步骤简述 升级Overleaf的步骤简要总结如下: 使用虚拟信用卡平台WildCard开通虚拟信用卡(从链接进入可以优惠15元人民币哦)。开卡后,进入WIldcard找到卡片信息进入Overleaf绑定卡片并支付,完成支付后就…

南京观海微电子----快速判断出三极管的好坏

三极管其作用是把微弱信号放大成幅度值较大的信号。可分为硅NPN和锗PNP两种三极管。它有三个极,即基极B,集电极C,发射极E。 我们判断测量三极管时有一个最简易的方法,就是把所有三极管看成两个二极管组成。 可以把NPN管看着两个…

Typora导入功能使用详细

一、 pandoc安装(导入需要的插件) 1. 首次安装完typora,是没法导入的,需要安装pandoc,首先我们先在文件夹里面新建一个Typora文件,然后再找到导入功能点击就可以弹出安装的地址了 2. 点击文件可以找到导入…

毅速:3D打印技术助推压铸模效率飞跃

压铸模,作为压铸件成型的核心工具,其重要性不言而喻。如今,随着3D打印技术的崛起,压铸模的制造迎来了前所未有的革新,特别是在随形水路设计方面的应用,更是让制造效率实现了质的飞跃。 在传统压铸模制造中&…

springboot3整合consul实现服务注册和配置管理快速入门

服务注册: 配置管理: 注册中心的比较: 在微服务的世界中,服务注册是必不可少的。现在比较流行的也就是Consul和Nacos,Zookeeper没有管理界面,一般不建议使用,而Eureka已经处于停更&#xff0…

论文复现 MSE 均方误差 MAR 平均绝对值误差

1、均方误差(L2损失) 均方误差(MSE)是最常用的回归损失函数,计算方法是求预测值与真实值之间距离的平方和,公式如下: 2、平均绝对值误差(L1损失) 平均绝对误差(MAE)是另…

Python学习笔记13 - 元组

什么是元组 元组的创建方式 为什么要将元组设计为不可变序列? 元组的遍历

【leetcode面试经典150题】49. 合并区间(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主,题解使用C语言。(若有使用其他语言的同学也可了解题解思路,本质上语法内容一致&…

2023年蓝桥杯——日期统计

目录 题目链接:1.日期统计 - 蓝桥云课 (lanqiao.cn) 题目描述 思路 代码思路 定义数据结构: 处理每一个月: 检查日期序列在num100中是否存在: 计数匹配的日期数: 输出结果: 代码实现 总结 题目链…

【JS】数组交换位置

公式 arr.splice(oldIndex, delCount, ...arr.splice(newIndex, delCount, arr[oldIndex])) arr - 操作的数组delCount - 删除的数组个数oldIndex - 交换位置的数组下标1newIndex - 交换位置的数组下标2...arr - 提取数组里的元素 splice删除元素时,返回一个数组&a…

如何在Linux部署MeterSphere并实现公网访问进行远程测试工作

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

L1 【哈工大_操作系统】什么是操作系统

从本期开始,笔者将出一系列哈工大的《操作系统》课堂要点笔记,该课程应该算得上是国内最好的操作系统课程之一,也是哈工大CS课程含金量最高的课程之一。尤其是对于想学习国外课程《MIT 6.S081》《MIT 6.828》又基础不足的同学, 特…