首页 > 应用 > 人工智能

虚拟内存是什么?如何解决CPU容量问题?

 Stephen St. Michael 2019-09-20

由于内存访问速度与CPU处理能力之间存在差异,因此发明了缓存。通过使用硬件高速缓存,最近从主存储器加载的项目存储在更靠近CPU的较小存储器中,以便在需要时可以快速检索它们。因此,缓存解决了速度问题。但容量怎么样? 在本文中,我们将了解虚拟内存是什么以及它如何帮助解决CPU容量问题。Uja电子头条

 Uja电子头条

内存层次结构 Uja电子头条

 Uja电子头条

现代计算机系统可以同时运行数十个甚至数百个不同的应用程序。由于内存是一种有限的资源,随着越来越多的应用程序消耗它,性能会降低甚至完全停顿。这就是虚拟内存的用武之地。图1显示了一个内存层次结构,包括缓存、主内存和虚拟内存。Uja电子头条

 Uja电子头条

虚拟内存是什么?如何解决CPU容量问题?Uja电子头条

图1.内存层次结构Uja电子头条

 Uja电子头条

如图1所示,存在虚拟内存以增加系统的内存容量。这是通过将磁盘驱动器的一部分分配为专用内存块来实现的,该内存块看起来像主存储器一样,可以用于任何可能需要它的应用程序。Uja电子头条

 Uja电子头条

为了防止磁盘访问降低速度性能,主内存充当虚拟内存的完全关联缓存,存储最近访问的磁盘位置。因此,通过使用虚拟存储器、主存储器成为高速缓存层次结构中的另一层。虽然详细信息超出了本文的范围,但应注意虚拟内存是通过计算机操作系统与处理器内存管理单元(MMU)之间的交互来管理和控制的。 Uja电子头条

 Uja电子头条

缓存与分页Uja电子头条

 Uja电子头条

回想一下,缓存会将物理内存地址分解为多个字段。这样做是为了识别存储最近访问的数据的高速缓存条目。对于完全关联的缓存,这些字段是缓存标记和字节偏移。高速缓存条目由匹配标记和包含数据的高速缓存块组成。如果未找到匹配的标记,则将其称为高速缓存未命中。Uja电子头条

 Uja电子头条

虚拟内存是什么?如何解决CPU容量问题?Uja电子头条

图2.缓存命名法Uja电子头条

 Uja电子头条

虚拟内存的工作原理类似,但使用虚拟地址的概念。虚拟地址由虚拟页码和页面偏移量组成。虚拟地址用于定位内存中称为页面框架的项目,通常为4kB。页面框架包含页面框架编号和实际数据,简称为页面。Uja电子头条

 Uja电子头条

页面偏移用于访问4kB页面内的单个单词。如果虚拟地址未指向物理内存中找到的位置,则会发生页面错误,系统必须转到磁盘驱动器以获取所请求的数据。发生页面错误时,磁盘上的页面将移动到内存中的页面框架。在主存储器和磁盘之间移动页面称为分页(或交换)。Uja电子头条

 Uja电子头条

虚拟内存是什么?如何解决CPU容量问题?Uja电子头条

图3.分页命名法 Uja电子头条

 Uja电子头条

由于虚拟内存用于扩展系统内存的容量,因此需要考虑磁盘上的位置和主内存中的位置的寻址方案。这是虚拟地址的来源。虚拟地址跨越磁盘驱动器和主内存,导致虚拟地址多于物理内存地址。因此,在可以访问页面中的数据之前,系统必须确定该数据是否驻留在物理或虚拟存储器中。这是通过地址转换完成的。Uja电子头条

 Uja电子头条

虚拟内存是什么?如何解决CPU容量问题?Uja电子头条

图4.虚拟地址映射到虚拟和物理内存Uja电子头条

 Uja电子头条

地址转换Uja电子头条

 Uja电子头条

如前所述,物理内存充当虚拟内存的完全关联缓存。回想一下,完全关联的缓存是一个包含多个条目的集合。将每个条目与缓存标记进行比较以进行匹配。对于大小为4kB的页面,即使是小型虚拟存储器系统也需要数千个比较器电路。为了解决这个问题,我们使用了一个页表。 Uja电子头条

 Uja电子头条

页表Uja电子头条

 Uja电子头条

页表是将虚拟页码(虚拟地址的一部分)映射到页帧号的数据结构。页表包含每个虚拟地址的条目以及表示此页面是否在物理内存中找到的有效位。如果页表条目有效,则页面帧号与页面偏移量(虚拟地址的另一部分)组合以构建物理存储器地址,即,期望数据存储在存储器中的位置。图5说明了如何使用页表从虚拟地址转换为物理地址。Uja电子头条

 Uja电子头条

虚拟内存是什么?如何解决CPU容量问题?Uja电子头条

图5.使用页表进行地址转换 Uja电子头条

 Uja电子头条

重要的是要记住,页面框架编号表示页面的存储位置,而物理地址表示页面中单个单词的位置。如果未设置页表条目的有效位,则虚拟地址必须映射到存储在磁盘上的页面。 Uja电子头条

 Uja电子头条

页表本身与用于定位的页面一起存储在主存储器中。因此,通过使用页表,对任何页面的读取或写入实际上需要两次存储器访问。这似乎违反直觉,如果不是翻译后备缓冲区或TLB,它会导致大的性能损失。Uja电子头条

 Uja电子头条

转换检测缓冲区Uja电子头条

 Uja电子头条

由于页面大小为4kB,因此页面内的数据表现出时间和空间位置。这使得页表条目成为缓存的理想选择。转换检测缓冲区或TLB是用于存储最近访问的页表条目的小型完全关联缓存。通过缓存最近使用的页表条目,系统可以放弃进行多次页表查找,从而避免了两次访问内存的问题。TLB通常只包含几百个条目,但它具有令人难以置信的高命中率(高达99%)。图6显示了具有四个条目的TLB。 Uja电子头条

 Uja电子头条

虚拟内存是什么?如何解决CPU容量问题?Uja电子头条

图6.作为完全关联缓存实现的简化TLB Uja电子头条

 Uja电子头条

结论Uja电子头条

 Uja电子头条

本文介绍了虚拟内存的概念。虚拟内存是用于扩展系统容量的内存系统的扩展。虚拟内存还允许在应用程序或进程之间保护和隔离内存。它由计算机的操作系统和处理器的MMU控制和管理。虚拟内存的工作原理是将一部分磁盘空间分配为系统内存的一部分。作为内存层次结构的扩展,虚拟存储器已成为计算机整体架构的基础部分。了解虚拟内存可以在日益复杂的世界中增强你对计算机的理解。Uja电子头条