快取一致性

缓存可以用来提高访问某一特定资源的性能。当同一资源有几个这样的缓存时,如图所示,这可能会导致问题。缓存一致性缓存连贯性指的是确保资源的所有缓存拥有相同的数据,并且缓存中的数据是有意义的(称为数据完整性)的一些方法。缓存一致性是内存一致性的一个特例。

如果一个共同的内存资源有很多缓存,可能会出现问题,因为缓存中的数据可能不再有意义,或者一个缓存中的数据不再与其他缓存相同。一个发生问题的常见情况是多处理系统中CPU的缓存。从图中可以看出,如果上面的客户有一份之前读取的内存块的拷贝,而下面的客户改变了该内存块,那么上面的客户可能会在不知情的情况下留下一个无效的内存缓存,。缓存一致性的存在是为了管理这种冲突并保持缓存和内存之间的一致性。

共享资源的多个缓存Zoom
共享资源的多个缓存

定义

相干性定义了对同一内存位置的读和写的行为。如果满足以下所有条件,缓存是一致的。

  1. 当一个处理器P读取一个位置X时,在向该位置写入后,如果没有其他处理器向该位置写入另一个值,P必须得到它所写入的值。这对于单处理器系统也是如此,它意味着内存能够保持一个写入的值。
  2. 假设有两个处理器,P1和P2,P1写了一个值X1,之后,P2写了一个值X2,如果P1读取这个值,它必须得到P2写的值X2,而不是它写的值X1,如果两者之间没有其他的写入。这意味着内存的视图是连贯的。如果处理器可以在P所做的写之后读取相同的旧值2,那么内存就不是连贯的。
  3. 一次只能向内存中的某个位置写一次。如果有几个写,它们必须一个接一个地发生。换句话说,如果位置X收到两个不同的值A和B,按照这个顺序,由任何两个处理器,处理器永远不能把位置X读成B,然后再读成A。

这些条件的定义是假设读和写的操作是即时的。然而,由于内存延迟和架构的其他方面,这在计算机硬件中不会发生。如果处理器X的写操作是在写操作后很短的时间内进行的,那么处理器Y的读操作可能就不会看到。内存一致性模型定义了一个写入的值何时必须被其他处理器的后续读指令所看到。

缓存一致性机制

  • 基于目录的一致性机制维持着一个缓存块的中央目录。
  • 窥探是指每个高速缓存监控地址行对其高速缓存中的内存位置进行访问的过程。当观察到对一个高速缓存有副本的位置的写操作时,高速缓存控制器就会使它自己对被窥探的内存位置的副本失效。
  • Snarfing是指当第二个主控器修改主存储器中的某个位置时,缓存控制器同时观察地址和数据,试图更新自己的存储器位置的副本。

分布式共享内存系统模仿了这些机制,因此它们可以在松散耦合的系统中维持内存块之间的一致性。

通常研究的两种最常见的一致性类型是Snooping和基于目录的。每一种都有自己的好处和缺点。如果有足够的带宽,窥探协议往往更快,因为所有事务都是所有处理器看到的请求/响应。缺点是,窥探是不可扩展的。每个请求都必须广播给系统中的所有节点。随着系统变大,(逻辑或物理)总线的大小和它提供的带宽必须增长。另一方面,目录往往有较长的延迟(有3跳的请求/转发/响应),但使用的带宽要少得多,因为消息是点对点的,不是广播。由于这个原因,许多较大的系统(大于64个处理器)使用这种类型的缓存一致性。

问题和答案

问:什么是缓存一致性?
答:缓存一致性是指确保一个资源的所有缓存拥有相同的数据,并且缓存中的数据是一致的(数据完整性)。

问:缓存一致性的目的是什么?
答:缓存一致性的目的是管理一个共同内存资源的多个缓存之间的冲突,并保持缓存和内存之间的一致性。

问:没有缓存一致性会有什么后果?
答:没有缓存一致性,缓存中的数据可能不再有意义,或者一个缓存中的数据不再与其他缓存中的数据相同,这可能导致不一致和错误。

问:发生高速缓存一致性问题的常见情况是什么?
答:发生缓存一致性问题的常见情况是多进程系统中CPU的缓存。

问:高速缓存一致性是如何工作的?
答:缓存一致性的工作原理是通过各种方法确保一个资源的所有缓存拥有相同的数据,并且缓存中的数据是一致的。

问:内存一致性是什么意思?
答:内存一致性是指整个共享内存资源的数据一致性。

问:高速缓存一致性如何提高性能?
答:缓存一致性可以通过允许更快、更有效地访问特定资源来提高性能。

AlegsaOnline.com - 2020 / 2023 - License CC3