为硬件保留的内存

为硬件保留的内存

有人能解释一下为什么一定量的内存总是为硬件保留吗?这与内存寻址有何关系?

图片-Windows资源监视器

答案1

很大程度上取决于这是一个 32 位还是 64 位操作系统。

对于 64 位操作系统,硬件保留内存的最大用户通常是视频系统。出于经济原因,许多视频系统没有或只有很少的内存,而是依靠系统内存来满足其需求。这在笔记本电脑中尤其常见。在 Windows 启动之前,BIOS 会保留这些内存供视频使用。

以上所有情况都适用于 32 位操作系统,但还有一个额外的因素。32 位操作系统具有固定的 4 GB 物理地址空间。RAM 是此地址空间的最大用户,但并非唯一用户。出于性能原因,此空间的很大一部分用于内存映射 IO。这允许 CPU 通过读取和写入硬件设备(与内存相同)来快速与硬件设备通信。通常,这需要大约 500 MB 或更多的地址空间。还有其他方法可用,但对于视频等高性能设备来说,它们太慢了。

内存映射 IO 出现在与 RAM 相同的地址空间中。这带来了一个问题。您无法在 4 GB 的地址空间中拥有 4 GB 的 RAM 和 500 MB 以上的内存映射设备。它根本装不下。因此,用于内存映射设备的任何空间都无法供 RAM 使用。通常会损失大约 500 到 750 MB,但具体数量取决于硬件。

64 位操作系统具有以 TB 为单位的物理地址空间,因此有足够的空间用于 RAM 和内存映射 IO。

答案2

why some amount of memory always reserved for hardware?

因为这是当代个人计算机架构的一部分,称为“PCI”,外围组件互连该架构最初是在 20 世纪 90 年代初开发的,目的是提高 PC 附加设备的配置和性能,并提供即插即用功能(消除繁琐的显式配置过程并自动分配外围资源)

每个外围设备都需要与 CPU 通信的手段来来回回传输数据。因此,PCI 架构提供了传统的 I/O 访问空间(X86 架构中一种过时的外围通信形式,现在使用得越来越少),以及内存映射空间,后者提供了更快的访问和数据交换。显然,如果将某个通信窗口映射到公共内存空间,它将被排除在常规 RAM 的地址区域之外。虽然这种资源分配方案很灵活,但对于如何解码和映射这个空间,存在一些架构限制(我相信在操作系统级别也是如此),因此上部内存的某些部分是“保留”的。

相关内容