定义

高速缓存

高速缓存存储器是一种基于芯片的计算机组件,它使从计算机存储器中检索数据更有效。它充当一个临时的存储区域,计算机的处理器可以很容易地从中检索数据。这个临时存储区域,被称为隐藏物,比计算机的主内存源(通常是某种形式的动态随机存取记忆体.

缓存有时被称为CPU(中央处理单元)内存,因为它通常是直接集成到CPU芯片或放置在一个单独的芯片上有一个单独的公共汽车与CPU互连。因此,它更容易被处理器访问,并且能够提高效率,因为它在物理上靠近处理器。

为了接近处理器,高速缓存内存需要比主存小得多。因此,它具有更小的存储空间。它也比主存更贵,因为它是一个更复杂的芯片,能产生更高的性能。

它在尺寸和价格上牺牲了什么,在速度上弥补了什么。高速缓存的运行速度是RAM的10到100倍,响应CPU请求只需要几纳秒。

用于高速缓存的实际硬件的名称是高速静态随机访问内存(静态存储器).计算机主存储器中使用的硬件名称为动态随机存取存储器(DRAM)。

不要将高速缓存存储器与更广泛的术语高速缓存混淆。缓存是可以存在于硬件和软件中的数据的临时存储。高速缓存存储器是指一种特定的硬件组件,它允许计算机在网络的不同级别上创建高速缓存。

高速缓存存储器的类型

高速缓存速度快且价格昂贵。传统上,它被归类为“级别”,用于描述其与微处理器的接近性和可访问性。有三个通用的高速缓存级别:

一级缓存,或主缓存,速度极快但相对较小,通常作为CPU缓存嵌入处理器芯片中。

二级缓存,或二级缓存,通常比一级缓存更大。二级缓存可以嵌入在CPU上,也可以在单独的芯片上或协处理器并且有一个高速的备用系统总线连接缓存和CPU,这样它就不会因为主系统总线上的流量而变慢。

三级(L3)缓存是为提高L1和L2的性能而开发的专用内存。L1或L2可以比L3快很多,尽管L3的速度通常是DRAM的两倍多核处理器,每个核心可以有专用的一级和二级缓存,但它们可以共享一个三级缓存。如果三级缓存引用指令,则通常会将其提升到更高级别的缓存。

在过去,L1、L2和L3缓存是使用处理器和主板组件组合而成的。最近,趋势是在CPU本身上整合所有三个级别的内存缓存。这就是为什么增加缓存大小的主要手段已经开始从收购特定的主板与不同芯片组和总线架构,以购买具有适当数量的集成一级、二级和三级缓存的CPU。

与普遍的看法相反,实现闪存或更动态的RAM (动态随机存取记忆体)在系统上不会增加缓存内存。这可能会令人困惑,因为术语内存缓存(硬盘缓冲)和高速缓存通常可以互换使用。内存缓存,使用DRAM或闪存缓冲器磁盘读取,是为了提高存储I/O,通过缓存数据,经常引用在一个缓冲先于较慢的磁盘或磁带。另一方面,高速缓存内存为CPU提供读缓冲。

高速缓存图
典型高速缓存单元的体系结构和数据流图。

缓存内存映射

缓存配置将继续发展,但缓存内存通常在三种不同的配置下工作:

  • 直接映射缓存有每个精确映射到一个高速缓存内存位置。从概念上讲,直接映射缓存就像表中有三列的行:缓存块包含获取和存储的实际数据,包含获取数据的全部或部分地址的标记,以及国旗显示有效数据位在行项中存在的位。
  • 完全关联缓存映射类似于结构上的直接映射,但允许将内存块映射到任何缓存位置,而不是像直接映射那样映射到预先指定的缓存内存位置。
  • 设置关联缓存映射可以看作是直接映射和完全关联映射之间的折衷,在这种映射中,每个块都映射到缓存位置的一个子集。它有时被称为N路集联想映射,它提供了一个在主存中的位置,可以缓存到L1缓存中的“N”位置。

数据写策略

数据可以使用多种技术写入内存,但涉及高速缓存内存的两种主要技术是:

  • 写完。数据同时写入缓存和主内存。
  • 回写式。数据仅在初始时写入缓存。然后可以将数据写入主存,但这并不需要发生,也不会阻止交互的发生。

数据写入cache的方式影响数据的一致性和效率。例如,当使用透写时,需要进行更多的写操作,这会提前导致延迟。当使用回写时,操作可能更有效率,但主内存和缓存内存之间的数据可能不一致。

计算机确定数据一致性的一种方法是检查内存中的“脏位”。脏位是内存块中包含的一个额外位,用于指示信息是否已被修改。如果数据以活跃的脏位到达处理器的注册文件,这意味着它不是最新的,并且在其他地方有更多的最新版本。这种情况更可能发生在回写场景中,因为数据是异步写入两个存储区域的。

专业化和功能

除了指令缓存和数据缓存之外,其他缓存的设计目的是提供专门的系统功能。根据一些定义,三级缓存的共享设计使其成为专门的缓存。其他定义将指令缓存和数据缓存分开,并将其称为专门的缓存。

翻译查找缓冲区(tlb)也是专门的内存缓存,其功能是记录虚拟地址到物理地址的转换。

还有一些缓存,从技术上讲,根本不是内存缓存。磁盘缓存例如,可以使用DRAM或闪存提供类似于内存缓存处理CPU指令的数据缓存。如果经常从磁盘访问数据,就会缓存到DRAM或基于闪存的硅存储技术中,以提高访问时间和响应速度。

专门的缓存也可用于web浏览器、数据库、网络地址绑定和客户端等应用程序网络文件系统协议的支持。这些类型的缓存可以分布在多个网络主机上,以便为使用它们的应用程序提供更大的可伸缩性或性能。

内存层次结构中的虚拟内存
内存层次结构及其功能的描述

位置

高速缓存存储器提高计算机性能的能力依赖于参考局部性的概念。局部性描述了使系统更可预测的各种情况。高速缓存利用这些情况来创建它可以依赖的内存访问模式。

地方性有几种类型。两个关键的缓存是:

  • 时间位置。这是指在短时间内重复访问相同的资源。
  • 空间位置。这指的是访问彼此相邻的各种数据或资源。

性能

高速缓存之所以重要,是因为它提高了数据检索的效率。它存储程序操作中反复使用的程序指令和数据或CPU下一步可能需要的信息。计算机处理器从高速缓存中获取这一信息比从主存中更快。快速访问这些指令提高了程序的整体速度。

除了提高性能的主要功能外,高速缓存内存也是一种很有价值的资源评价计算机的总体性能。用户可以通过查看缓存的命中率来做到这一点。缓存命中是系统成功地从缓存中检索数据的实例。缓存丢失是指当系统在缓存中寻找数据时,找不到数据,就转而寻找其他地方。在某些情况下,用户可以通过调整缓存内存块的大小(存储的数据单元的大小)来提高命中率。

改进的性能和监控性能的能力不仅仅是为了提高用户的总体便利性。随着技术的进步,人们越来越依赖于关键任务在各种情况下,速度和可靠性变得至关重要。根据具体情况,即使是几毫秒的延迟也可能导致巨大的开支。

内存类型的比较
比较高速缓存存储器与其他存储器类型的图表

缓存与主内存

DRAM用作计算机的主存储器,对从存储器中检索到的数据执行计算。DRAM和高速缓存都是易失性存储器,在电源关闭时会丢失其内容。DRAM安装在主板上,CPU通过总线连接访问。

DRAM的速度通常是一级、二级或三级缓存速度的一半左右,而且成本更低。它提供比闪存、硬盘驱动器更快的数据访问(硬盘驱动器)和磁带存储。它在过去几十年开始使用,用于存储频繁访问的磁盘数据,以提高I/O性能。

DRAM必须每隔几毫秒刷新一次。高速缓存(也是一种随机访问内存)不需要刷新。它直接内置在CPU中,使处理器能够以最快的速度访问内存位置,并为频繁引用的指令和数据提供纳秒级的访问时间。SRAM比一个DRAM,但是因为它是一个更复杂的芯片,它的制造成本也更高。

动态RAM
动态RAM的一个例子。

缓存与虚拟内存

计算机的DRAM数量有限,甚至缓存更少。当一个大程序或多个程序正在运行时,内存就有可能被充分利用。为了弥补物理内存的不足,计算机的操作系统(操作系统)可以创建虚拟内存.

为此,操作系统临时将非活动数据从DRAM转移到磁盘存储。这种方法通过使用DRAM中的活动内存和hdd中的非活动内存来形成容纳应用程序及其数据的连续地址,从而增加虚拟地址空间。虚拟内存允许计算机同时运行较大的程序或多个程序,每个程序的运行就好像它有无限的内存。

为了将虚拟内存复制到物理内存中,操作系统将内存划分为包含一定数量地址的页面文件或交换文件。这些页面存储在磁盘上,当需要时,操作系统将它们从磁盘复制到主内存,并将虚拟内存地址转换为物理地址。这些转换将被处理通过内存管理单元(MMU)。

实现和历史

大型机使用的是早期版本的高速缓存,但随着微型计算机的出现,今天所知的技术开始发展。在早期的PC机上,处理器性能的增长速度远远快于内存性能,内存成为瓶颈,减慢了系统的速度。

在20世纪80年代,有一种观点认为,少量更昂贵、更快的SRAM可以用来改善价格较低、速度较慢的主存的性能。最初,内存缓存是从系统处理器中分离出来的,并不总是包含在芯片组中。早期的pc通常有16kb到128kb的高速缓存内存。

有了486个处理器,英特尔在CPU上增加了8 KB的内存作为一级处理器(L1)记忆。这些系统中使用了多达256KB的外部二级(L2)缓存。在高端奔腾处理器上,外部缓存内存再次翻了一番,达到512 KB。他们还将内部缓存拆分为两个缓存:一个用于指令,另一个用于数据。

1995年推出的基于Intel P6微体系结构的处理器是第一个将二级缓存纳入CPU并使系统的所有缓存都能以相同速度运行的处理器时钟速度随着处理器。在P6之前,CPU外部的L2内存访问的时钟速度要比处理器运行的速度慢得多,从而大大降低了系统性能。

早期的内存缓存控制器使用透写缓存架构,写入缓存的数据也会立即在RAM中更新。这样做最小化了数据丢失,但也降低了操作速度。在后来的基于486的pc中,开发了回写缓存体系结构,其中RAM不会立即更新。相反,数据存储在缓存中,RAM只在特定的时间间隔或在某些数据丢失或旧的情况下更新。

这是最近更新的2020年2月

继续阅读关于高速缓存内存

深入研究固态存储器

搜寻灾难复苏
搜寻资料备份
搜寻汇聚基础设施
接近
Baidu