我注意到在 64 位 Windows 和 Ubuntu 上,有少量内存甚至没有报告给操作系统。例如:根据 BIOS,我的机器中有 16GiB(16384MiB)内存,但 Ubuntu 报告我的总内存为“16043MB”。我在运行 Windows 或 Linux 的多个带有 AMD 或 Intel 芯片组的系统上都看到了这种情况,‘缺失’内存的数量各不相同。
这两个数字加起来都不等于实际安装的物理内存量,那么这些内存是用来做什么的呢?是否有一些内存是为与显卡或其他设备通信而保留的?如果是,如何使用?还有什么东西可以使用这些内存,又是如何使用的?为什么操作系统中看不到实际的内存量?作为硬件设计师,我可以在哪里阅读更多关于这方面的信息?
当我尝试研究这个问题时,我发现人们对他们的 32 位操作系统无法识别所有 4GiB 内存升级感到困惑。
答案1
如果您有某种集成图形芯片组 (iGPU),它很可能会保留一些系统内存,作为使用专用视频内存 (VRAM) 的替代方案。
故事是这样的:AMD 加速处理单元 (APU) 和英特尔高清显卡本质上是显卡的精简版,与 CPU 安装在同一个封装中。近年来,AMD 和英特尔都开始将这些 iGPU 推广到几乎所有出售的台式机处理器中。从历史上看,这些芯片位于主板上,但他们开始将它们移到 CPU 中。您仍然可以购买没有它们的处理器,但现在绝大多数处理器都有它们,即使在配备更强大的专用显卡的系统上也是如此。
如果您为 iGPU 安装了驱动程序,那么操作系统很可能在技术上能够使用它。但是,为了使用它,它需要保留一些系统内存来存储图形数据(纹理、帧缓冲区等)。这是因为 iGPU 没有自己的专用 VRAM,因为处理器芯片上没有足够的空间来容纳它。好吧,通常;英特尔“Iris Pro”图形芯片包含 128 MB 的 eMMC;但我离题了……
另一方面,如果仅有的您的系统具有的图形芯片组是iGPU,那么您当然别无选择,只能接受部分系统内存将被该 iGPU 使用,否则您将根本没有图形显示。
对于某些 iGPU,您可以在 BIOS 中配置为 iGPU 保留多少 RAM,通常从最少 64 MB 到最多 1 GB,但具体数字会有所不同。
理论上,iGPU 并不是唯一可以为特殊用途保留部分系统 RAM 的系统组件,但它肯定是最常见的。我还听说过一些专用显卡使用系统 RAM 和 VRAM 的混合体,这意味着显卡本身内置的 VRAM 较少,但驱动程序还要求留出一定数量的系统 RAM 来补充 VRAM 作为图形数据的额外空间。
如果您想要了解详细信息,请查找“统一内存架构”(不要将其与类似术语 NUMA 混淆,NUMA 用于区分普通系统和分布式系统),或查找 Intel 的 GMA 或 HD Graphics 芯片组的开放硬件规范。由于这些芯片组的 Linux 图形驱动程序是开源的,因此您可以通过获取规范文档或阅读 Mesa 或 Linux DRM(直接渲染管理器)源代码来深入了解。这里 你去- 玩得开心。