缓存内存与虚拟内存
缓存内存和虚拟内存的区别在于它们的用途和物理存在。高速缓冲存储器是一种用来提高主存存取时间的存储器。它位于CPU和主内存之间,可以有多个级别的缓存,如L1、L2和L3。用于高速缓存的硬件类型比用于主存的RAM(随机存取存储器)要贵得多,因为高速缓存要快得多。因此,高速缓存的容量非常小。虚拟内存是一种内存管理技术,用于有效地使用RAM(主内存),同时为每个程序提供比实际物理RAM(主内存)容量更大的单独内存空间。这里的硬盘是用来扩展内存的。物理RAM中的项目与硬盘来回传输。
什么是高速缓存(cache memory)?
高速缓存是一种介于CPU(中央处理器)和RAM(随机存取存储器)之间的存储器。缓存的目的是减少CPU从RAM访问内存的时间。高速缓存比RAM快得多。所以缓存上的访问时间远小于RAM上的访问时间。但是用于高速缓存的内存成本远远高于用于RAM的内存成本,因此,缓存的容量非常小。用于高速缓存的内存类型称为SRAM(静态随机存取存储器)。
每当CPU想要访问内存时,它首先检查它所需要的是否驻留在缓存内存中。如果是,它将能够以最小的延迟访问它。如果它不驻留在缓存中,那么请求的内容将从RAM复制到缓存,然后只有CPU从缓存访问它。在这里,当从缓存复制内容时,不仅要将请求的内存地址中的内容,而且要将附近的内容复制到缓存中。因此,下一次发生缓存命中的概率很高,因为大多数计算机程序都会访问附近的数据或上次访问的数据。因此,由于缓存,平均内存延迟减少了。
在CPU中,有三种类型的缓存:用于存储程序指令的指令缓存、用于存储数据项的数据缓存和用于存储内存映射的转换查找缓冲区。对于数据缓存,通常有多级缓存。也就是说,有几个缓存,如L1、L2和L3。一级缓存是最快但最小的最接近CPU的缓存。二级缓存比一级缓存慢,但比一级缓存大,驻留在一级缓存之后。由于这种层次结构,可以以更低的成本获得更好的平均内存访问时间。
什么是虚拟内存(virtual memory)?
虚拟内存是计算机系统中使用的一种内存管理技术。没有硬件称为虚拟内存,但它是一个概念,使用RAM和硬盘为程序提供虚拟地址空间。第一个RAM被分成称为页的块,它们由物理内存地址标识。在硬盘中,保留了一个特殊的部分,在Linux中称为交换,在Windows中称为页文件。当一个程序启动时,它会得到一个比实际物理内存还要大的虚拟地址空间。虚拟内存空间也被分成称为页的块,每个虚拟内存页都可以映射到一个物理页。名为pagetable的表跟踪这个映射。当物理内存空间不足时,所做的是,将某些物理页推送到硬盘中的特定部分。当再次需要将任何页面推送到硬盘时,通过将另一个选定页面从物理内存放入硬盘,将其带到物理内存中。
高速缓存(cache memory)和虚拟内存(virtual memory)的区别
•缓存是一种用于提高主内存访问时间的内存类型。它是一种更快的内存类型,驻留在CPU和RAM之间,以减少平均内存访问延迟。虚拟内存是一种内存管理方法,它是一种让程序获得自己的虚拟内存空间的概念,它甚至比可用的实际物理RAM还要大。
•缓存是一种实际存在的硬件内存。另一方面,没有硬件称为虚拟内存,因为它是一个概念,使用RAM、硬盘、内存管理单元和软件来提供虚拟类型的内存。
•缓存管理完全由硬件完成。虚拟内存由操作系统(软件)管理。
•缓存位于RAM和处理器之间。数据传输包括RAM、高速缓存和处理器。另一方面,虚拟内存涉及RAM和硬盘之间的数据传输。
•缓存的大小很小,如千字节和兆字节。另一方面,虚拟内存的容量巨大,需要千兆字节。
•虚拟内存涉及存储物理内存和虚拟内存之间映射的页表等数据结构。但是这种类型的数据结构对于高速缓存是不必要的。
小结:
缓存内存与虚拟内存
缓存内存用于提高主内存访问时间,而虚拟内存是一种内存管理方法。缓存内存是一个实际的硬件,但没有称为虚拟内存的硬件。RAM、硬盘和各种其他硬件以及操作系统一起产生了一个称为虚拟内存的概念,为每个程序提供大而独立的虚拟内存空间。缓存内存中的内容由硬件管理,而虚拟内存中的内容由操作系统管理。
- Hellisp的缓存进程(CC by-SA 3.0)
- Ehamberg的虚拟内存(CC by-SA 3.0)