测试测量技术
直播中

白纪龙

7年用户 1305经验值
擅长:连接器 电源/新能源 连接器 模拟技术 连接器 测量仪表 连接器 EMC/EMI设计 连接器 嵌入式技术 连接器 连接器 连接器 连接器 接口/总线/驱动 连接器 处理器/DSP 连接器 光电显示 连接器 控制/MCU 连接器 连接器 连接器 MEMS/传感技术 连接器 电源/新能源 MEMS/传感技术 测量仪表 嵌入式技术 模拟技术 连接器 EMC/EMI设计 光电显示 处理器/DSP 接口/总线/驱动 控制/MCU
私信 关注
[经验]

如何定义虚拟内存?


本文将探讨什么是虚拟内存,它为什么存在,以及它如何工作。
缓存的发明是因为内存访问速度和 CPU 处理能力之间的差异。通过使用硬件缓存,最近从主存储器加载的项目被存储在一个更小的内存中,更接近 CPU,以便在需要的时候可以快速检索它们。因此,缓存解决了速度问题。
但是容量怎么办呢?
在本文中,我们将研究什么是虚拟内存,以及它如何帮助解决 cpu 的容量问题。
内存阶层
现代计算机系统可以同时运行数十甚至数百个不同的应用程序。由于内存是一种有限的资源,因为更多的应用程序消耗它,它的性能会降低,甚至完全停止。这就是虚拟内存的用武之地。图1显示了一个包含缓存、主内存和虚拟内存的内存阶层。
1.png


图1. 内存阶层



如图1所示,存在虚拟内存是为了增加系统的内存容量。这是通过将磁盘驱动器的一部分作为专用内存块分配给任何可能需要它的应用程序来实现的,该内存块“看起来”像主内存。
为了防止磁盘访问降低速度性能,主存充当虚拟内存的全关联缓存,存储最近访问的磁盘位置。因此,通过使用虚拟内存,主内存成为缓存层次结构中的另一层。
虽然这些细节不在本文的讨论范围之内,但应该注意的是,虚拟内存是通过计算机操作系统和处理器内存管理单元(MMU)之间的交互来管理和控制的。
缓存 vs 分页
回想一下,缓存将一个物理内存地址分解为若干字段。这样做是为了标识存储最近访问的数据的缓存条目。对于完全关联的缓存,这些字段是缓存标记和字节偏移量。缓存条目由匹配的标记和包含数据的缓存块组成。
如果没有找到匹配的标记,则称为缓存未匹配。

2.png

图2. 缓存术语


虚拟内存的工作方式类似,但使用了虚拟地址的概念。
虚拟地址由虚拟页码和页面偏移量组成。虚拟地址用于在内存中定位一个称为页帧的项,通常大小为4kb。
页面框架包含页面框架编号和实际数据,简称为页面。
页面偏移量用于访问4kb 页面中的单个单词。如果虚拟地址没有指向物理内存中找到的位置,就会发生页面错误,系统必须将请求的数据发送到磁盘驱动器。当确实发生页面错误时,磁盘上的页面将移动到内存中的页帧。在主内存和磁盘之间移动页面称为分页(或交换)。
3.png

图3. 分页术语

由于虚拟内存用于扩展系统内存的容量,因此需要一个同时考虑磁盘上的位置和主内存中的位置的寻址方案。这就是虚拟地址的用武之地。
虚拟地址跨越磁盘驱动器和主存,导致虚拟地址多于物理内存地址。因此,在访问页中的数据之前,系统必须确定该数据驻留在物理内存还是虚拟内存中。这是通过地址转换完成的。

4.jpg

图4. 虚拟地址映射到虚拟和物理内存

地址转换
如前所述,物理内存充当虚拟内存的完全关联缓存。回想一下,完全关联缓存是一个包含多个条目的单个集合。将每个条目与缓存标记进行比较,以确定匹配项。由于页面大小为4kb,即使是一个小型的虚拟内存系统也需要数千个比较器电路。为了解决这个问题,需要使用页表。
页表
页表是一种数据结构,它将虚拟页号(虚拟地址的一部分)映射到页帧号。
页表包含每个虚拟地址的条目,以及一个有效位,表示该页是否在物理内存中找到。如果页表条目是有效的,那么页帧号将与页偏移量(虚拟地址的另一部分)组合在一起,以构建物理内存地址,即所需数据存储在内存中的位置。图5说明了如何使用页表将虚拟地址转换为物理地址。
5.jpg

使用页表进行地址转换



重要的是要记住,页帧号表示页面存储的位置,而物理地址表示页面中单个单词的位置。如果没有设置页表条目的有效位,则虚拟地址必须映射到存储在磁盘上的页。
页表本身与用于定位的页一起存储在主内存中。因此,使用页表时,对任何页的读写实际上需要两个内存访问。这可能看起来有违直觉,如果不是为了转译后备缓冲器或 TLB,它将导致一个大的性能打击。
转译后备缓冲器
由于页面大小为4kb,因此页面中的数据同时展示了时间和空间局部性。这使得页表条目成为缓存的完美候选者。
即 TLB,是一个小型的全关联缓存,用于存储最近访问的转译后备缓冲器表条目。通过缓存最近使用的页表条目,系统可以放弃进行大量的页表查找,从而避免了两次访问内存的问题。TLB 通常只包含几百个条目,但它的命中率高得令人难以置信(高达99%)。
图6显示了一个包含四个条目的 TLB。

6.jpg

图6. 作为完全关联缓存实现的简化 TLB

总结
本文介绍了虚拟存储器的概念。虚拟存储器是存储系统的扩展,用于扩展系统的容量。
虚拟内存还允许在应用程序或进程之间保护和隔离内存。它由计算机的操作系统和处理器的 MMU 控制和管理。虚拟内存通过分配一部分磁盘空间作为系统内存来工作。
作为虚拟存储内存阶层的延伸,虚拟存储器已经成为计算机整体架构的基本组成部分。在这个日益复杂的世界里,理解虚拟内存可以增强你对计算机的理解。
公众号二维码.png

更多回帖

发帖
×
20
完善资料,
赚取积分