CPU和内存的架构 UMA和NUMA

CPU和内存之间的架构分为两种:
1、UMA
UMA全称为 Uniform Memory Access,叫做一致性内存访问

多个CPU通过同一根总线来访问内存。无论多个CPU是访问内存的不同内存单元还是相同的内存单元,同一时刻,只有一个CPU能够访问内存。

CPU之间通过总线串行的访问内存,所以会出现访问瓶颈!
在这里插入图片描述

2、NUMA
Non-Uniform Memory Access ,非一致性内存访问。每个CPU都分配了一块内存,这样的话,多个CPU可以同时并行访问各自的内存,这样的话,读写内存的效率就上来了。

但是当CPU读取其他CPU的内存的时候,需要通过QPI申请访问,是要慢于直接访问本地内存的。

在这里插入图片描述

UMA和NUMA的使用场景

如果一个CPU访问的数据量不大,本地内存就足够的话,那么NUMA的优势就可以发挥出来了,各个CPU可以并发的访问自己的内存。

如果CPU访问的数据量大的话,那么CPU需要频繁的访问其他CPU的内存,QPI的效率是要小于UMA总线的效率。所以NUMA的效率会低于UMA的。

总结

个人电脑大部分采用UMA,服务器采用NUMA。无论是UMA还是NUMA,对于同一块内存,在同一时间只能由一个CPU访问。

### UMA NUMA 架构的区别 #### 定义与基本概念 统一内存访问 (UMA, Uniform Memory Access) 是一种传统的内存管理模型,其中所有的处理器共享同一块全局地址空间的物理内存。这种架构通常用于 SMP(Symmetric Multi-Processing)系统中[^2]。 相比之下,非一致内存访问 (NUMA, Non-Uniform Memory Access) 则是一种更现代的内存管理方式。在这种架构下,每个 CPU 或一组 CPU 都有自己的本地内存,并且可以通过互连模块访问其他节点上的远程内存[^3]。 #### 性能特点 在 UMA 中,由于所有处理器都平等对待整个系统的单一池中的内存资源,因此无论哪个核心发起请求,数据存取延迟都是相同的。然而,在大规模多核环境中,这可能导致严重的瓶颈问题,因为所有操作都需要经过总线或者交叉开关来进行通信资源共享[^1]。 对于 NUMA 来说,虽然存在不同距离级别的存储单元——靠近自己的那部分被称为近端或局部区域;远离当前处理单元的部分则视为远端或外部区段——但由于减少了争用情况的发生频率及其程度,所以整体效率反而更高一些。特别是当应用程序能够很好地绑定到特定计算单元附近的数据集时,可以显著减少跨节点传输的需求并提高吞吐量。 #### 架构图描述 ##### UMA 架构图 在一个典型的 UMA 设计里,你会看到如下布局: - 多个相同地位的CPU连接至中央控制单元; - 所有的这些设备共同享有唯一一块RAM芯片组作为它们工作期间临时保存信息的地方。 ##### NUMA 架构图 而针对NUMA,则呈现出更加复杂但也更为灵活的形式: - 整体被划分为若干相对独立的小型子域(即所谓的Node),每一个这样的区块内部包含了一定数量的核心与其专属配额内的快速缓存/主存装置。 - 不同Nodes间借助专门设计好的高速链路实现必要的交互协作功能。 ```plaintext // 图形化表示可能如下所示: // UMA Architecture Diagram +-------------------+ | CPU | +---------+--------+ | Shared Bus +---------v--------+ | MEMORY | +-------------------+ // NUMA Architecture Diagram Node0 Node1 ... +----------+ +-----------+ ... | CPUs & |-----|CPUs & |------... | Local Mem| QPI |Local Mem | HT ... +----------+ +-----------+ ... ``` 以上就是关于两种主要类型的计算机体系结构之间的对比分析说明文档内容总结完毕!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值