![如何确定我的计算机核心使用的是共享内存还是分布式内存?](https://linux22.com/image/135506/%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%E6%88%91%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%A0%B8%E5%BF%83%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E5%85%B1%E4%BA%AB%E5%86%85%E5%AD%98%E8%BF%98%E6%98%AF%E5%88%86%E5%B8%83%E5%BC%8F%E5%86%85%E5%AD%98%EF%BC%9F.png)
我的计算机配备 Intel® Core™ i7-4558U 处理器。它有 2 个核心,但我不知道它们是否使用共享内存或分布式内存。我怎样才能找到答案?
答案1
像您这样的单插槽系统中的内核可以通过共享内存控制器平等地访问内存。他们还共享最外层的缓存(您的情况为 4 MiB)。每个核心都有自己的第 1 层和第 2 层缓存(每个核心分别为 64 KiB 和 256 KiB)。
在 Intel x86 兼容系统上,您只会遇到 NUMA (非统一内存访问)在具有多个插槽的大型系统上(从技术上讲,具有十个或更多核心的高端服务器 CPU 也可以模拟NUMA,但这不会改变它们的真实内存架构)。在此类系统上,每个 CPU 插槽控制一组内存条,如果执行访问的代码运行在不是控制相关内存的 CPU 上,则访问内存需要更长的时间。然而,在大多数 x86 风格的系统中,所有内存仍然是共享的——每个 CPU 都可以访问 RAM 的每个字节。
绝大多数基于 x86 的系统都是共享内存系统,即使它们是 NUMA 系统;分布式内存这是非常不寻常的,在 x86 上您可能只会在超级计算机中遇到它。
要找到所有这些,您需要研究系统的架构,例如通过阅读详细的评论,例如阿南德科技,甚至是英特尔的数据表。它似乎被认为是“常识”,以至于往往不会被提及......