作者:ibless
来源:CSDN
原文:https://blog.csdn.net/ibless/article/details/80114009 

其实 很早之前对这一块有了解 比较多的的是 

CCNUMA 高速缓存一致性的 非一致性内存访问

需要在CPU之间架设高速缓存通路 这样才能提高相应的性能

AMD 最新的处理器架构 采取的CX 其实同一个物理插座上面的核 访问内存的延迟也不一样. 会出现掉速的现象. 

通常,在业界存在两种主要类型的并行体系结构:共享内存体系结构(Shared Memory Architecture)和分布式内存体系结构(Distributed Memory Architecture)。而共享内存结构有两种类型:统一内存访问(UMA)和非同一内存访问(NUMA),有些博客中多一种只用高速缓存的存储器架构(Cache-Only Memory Architecture,简称COMA)。目前,三大商用服务器架构又分为SMP(对称多处理架构)、NUMA(非同一内存访问架构)、MMP(大规模并行处理架构)。本文先讲述UMA和NUMA,接下来的博客会陆续讲述SMP、MMP和NUMA的特点以及区别。
   因为UMA和NUMA都是共享内存共享内存架构的并行体系机构,所以它们有一个相同点就是内存共享。共享内存,简单来说就是多个CPU可以访问系统中所有的内存。下图是共享内存的模型:

图1 共享内存架构

图2 分布式内存架构
  接下来,我们先说一下UMA,在UMA中,内存访问时间取决于是哪个处理器发出的请求,或者哪个内存芯片包含传输的数据。下面是一张示意图:

在UMA中,所有的处理器平等的访问内存,因此CPU对内存的存取在速度上等是没有差异的,这也是称为统一内存访问的原因。各处理器与内存单元通过互联总线进行连接,各个CPU之间没有主从关系,其实SMP架构可以说成是UMA的。
  下面我们来说一下NUMA架构,下图是NUMA架构的一个示例:

从上面的图中,我们可以看到一台计算机有多个Node(节点),每个节点中有多个Core(核),上图中是4个核,在每个节点内部都有自己的内存,称之为本地内存。与本地内存相对的是远端内存,对于Node0来说,Node1、Node2、Node3中的内存都是远端内存。在节点中,CPU与内存之间通过片内总线进行连接。各个节点之间通过互联模块(Crossbar Switch)进行连接。需要注意的是,NUMA节点中CPU对节点内部内存与节点外部内存的访问是有差异的。依旧是一个CPU对本地内存和远端内存的访问时间是不同的,一般来说,CPU对本地内存的时间要比远端内存的访问速度快1.3--5倍。这也就是称为NUMA(非统一内存访问)的原因。NUMA既然属于共享内存架构,也就是每个CPU都可以访问系统中所有的内存,只不过访问这些内存的速度或方式是有差异的。一般来说,NUMA节点之间是相互连接的,这个有一个Node Distance的概念,也就是节点与节点之间的距离是不同的。下图是一个获取Node Distance的截图:

参考:
https://en.wikipedia.org/wiki/Uniform_memory_access
https://en.wikipedia.org/wiki/Non-uniform_memory_access
http://cs.nyu.edu/~lerner/spring10/projects/NUMA.pdf
---------------------

[转帖]NUMA的更多相关文章

  1. [转帖]NUMA架构的CPU -- 你真的用好了么?

    NUMA架构的CPU -- 你真的用好了么? 本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于 ...

  2. 【转帖】深挖NUMA

    深挖NUMA http://www.litrin.net/2017/10/31/深挖numa/ 首先列出本站之前相关的几篇帖子: Linux的NUMA机制 NUMA对性能的影响 cgroup的cpus ...

  3. 【转帖】Linux的NUMA机制

    Linux的NUMA机制 http://www.litrin.net/2014/06/18/linux的numa机制/ NUMA(Non-Uniform Memory Access)字面直译为“非一致 ...

  4. NUMA架构的CPU -- 你真的用好了么?

    本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) ...

  5. [转帖] sqlserver CAL 授权模式下 只能够有20个core的使用问题

    http://www.cnblogs.com/diabloxl/p/3623640.html?utm_source=tuicool&utm_medium=referral 公司这边性能组老师进 ...

  6. 【ZT】NUMA架构的CPU -- 你真的用好了么?

    本文从NUMA的介绍引出常见的NUMA使用中的陷阱,继而讨论对于NUMA系统的优化方法和一些值得关注的方向. 文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) ...

  7. SMP、NUMA、MPP(Teradata)体系结构介绍

    从系统架构来看,目前的商用服务器大体可以分为三类,即对称多处理器结构 (SMP : Symmetric Multi-Processor) ,非一致存储访问结构 (NUMA : Non-Uniform ...

  8. 如何知道SQL Server机器上有多少个NUMA节点

    如何知道SQL Server机器上有多少个NUMA节点 文章出处: How can you tell how many NUMA nodes your SQL Server has? http://i ...

  9. 我有几个NUMA节点

    在SQL Server交流会,经常被问到的一个问题,SQL Server在几个NUMA节点上运行.因此,在今天的文章里,我想向你展示下几个方法和技术,找出你的SQL Server有几个NUMA节点. ...

随机推荐

  1. 【漫画解读】HDFS存储原理

    根据Maneesh Varshney的漫画改编,以简洁易懂的漫画形式讲解HDFS存储机制与运行原理,非常适合Hadoop/HDFS初学者理解. 一.角色出演 如上图所示,HDFS存储相关角色与功能如下 ...

  2. ueditor百度编辑器中,多图上传后,图片顺序乱掉的处理方法

    上传后,图片的顺序和预期的不一致,需要修改ueditor的源码. 一.找到editor/dialogs/attachment/attachment.js文件 1.将_this.fileList.pus ...

  3. 16.ajax_case03

    # 抓取非小号的图表接口 # https://www.feixiaohao.com/currencies/raiden-network-token/ import requests import js ...

  4. 文件IO模型

    In case of kernel-space network drivers, all three regions are mapped to kernel space, and any acces ...

  5. 并发控制--Concurrency control--乐观、悲观及方法

    In information technology and computer science, especially in the fields of computer programming, op ...

  6. Android面试题目整理与解说(二)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/bz419927089/article/details/31386787 1.Dalvik和标准Jav ...

  7. 安装 Kivy

    Kivy 是基于Python编程语言的一种用于开发跨平台GUI客户端程序的框架.可以打包成iOS.Android.Windows.OSX等多种平台.目前已经实现一次编码,到处运行的目的. Kivy框架 ...

  8. 水题:P2799 国王的魔镜

    思路:简单模拟即可.判断一下是不是回文,是回文看长度是不是偶数.是偶数的话,说明又可能是回文.依次这样处理.但是只要长度为奇数则一定是原来的长度直接输出即可. #include<iostream ...

  9. 【vue】vue +element 搭建项目,$createElement使用

    语法: 它有三个参数 第一个:html标签名 第二个:配置的数据对象 第三个:内容 应用1:自定义弹窗 html: <el-button type="text" @click ...

  10. 获取数值型数组中大于60的元素个数,给数值型数组中不足60分的加20分。(数组,for循环,if条件判断语句)

    package com.Summer_0420.cn; /** * @author Summer * 获取数值型数组中大于60的元素个数 * 给数值型数组中不足60分的加20分 */ public c ...