C/C++教程

CPU和内存的架构 UMA和NUMA

本文主要是介绍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访问。

这篇关于CPU和内存的架构 UMA和NUMA的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!