先决条件–多级缓存组织
高速缓存是一种将数据的副本暂时存储在可快速访问的存储内存中的技术。高速缓存将最近使用的单词存储在小内存中,以提高数据访问的速度。它就像RAM和CPU之间的缓冲区,因此提高了处理器可用数据的速度。
每当处理器想要写一个单词, 它将检查缓存中是否存在要写入数据的地址。如果地址存在于缓存中, 即写命中.
我们可以更新缓存中的值,避免昂贵的主存访问。但这导致了数据不一致的问题。由于高速缓存和主存都有不同的数据,这将导致共享主存的两个或多个设备出现问题(如在多处理器系统中)。
这就是透写和回写出现的地方。
透写:
在透写中,数据同时更新到缓存和内存。该方法简单可靠。当不对缓存进行频繁的写操作(写操作的次数较少)时使用。
它有助于数据恢复(在断电或系统故障的情况下)。数据写入将遇到延迟(延迟), 因为我们必须写入两个位置(内存和缓存)。解决不一致问题。但这质疑在写操作中具有缓存的优势(因为使用缓存的全部目的是避免多次访问主内存)。
回写:
数据仅在高速缓存中更新, 以后再更新到内存中。仅在准备好替换高速缓存行时, 才更新内存中的数据(根据应用程序, 使用Belady的Anomaly, 最近最少使用的算法, FIFO, LIFO和其他方法完成高速缓存行的替换)。
回写也称为延迟写入。
脏位:缓存中的每个块都需要一个位来表示缓存中的数据是否被修改(脏)或未被修改(干净)。如果它是干净的,就不需要将它写入内存。它旨在减少对内存的写操作。缓存失败、系统故障、断电等情况下,修改后的数据将丢失。因为如果丢失了,几乎不可能从缓存中恢复数据。
如果写入发生在缓存中不存在的位置(写未命中), 我们将使用两个选项, 写分配和到处写.
回写:
在写入分配中, 数据从内存加载到缓存中, 然后进行更新。写分配适用于写回和写透两种方式, 但通常与写回配合使用, 因为不必将数据从内存中带到高速缓存中, 然后再更新高速缓存和主内存中的数据。因此, 透写通常与不写分配一起使用。
回写:
此处将数据直接写入/更新到主内存中而不干扰高速缓存。当不立即再次使用数据时, 最好使用它。