📜  在缓存中直写和回写(1)

📅  最后修改于: 2023-12-03 15:08:05.857000             🧑  作者: Mango

在缓存中直写和回写

随着计算机技术的不断发展,缓存技术已经变成了现代计算机系统中给力的关键技术之一,它不仅可以提高计算机的性能,还可以节省计算机的能耗。在缓存技术中,直写和回写是两种常见的运作方式,本文将详细介绍这两种方式的区别和具体实现。

直写与回写的区别

写回和写直两种缓存引用方式之间的主要区别在于它们何时将修改后的数据从缓存写回到内存。简而言之,写直方式在每次访问缓存都会立即更新内存,而写回方式则在发生其他数据访问之后才会写回内存。换句话说,写直方式更新实时,但具有较高的延迟和带宽成本,而写回方式更新以更高的速率进行,但在并发访问时可能会导致多个处理器的数据不一致。

直写

缓存直写是指缓存中的修改是立即传播到内存中的。当CPU写入数据时,即存储在cache块中,同时也写入内存中的相应地址。这节省了数据的写回(flush)时间,从而获得更高的性能,但该操作需要更多的带宽。此外,由于每次缓存写操作都需要更新内存,因此写直的缓存用于写入往往具有很高的延迟。写直也会增加系统中写操作的数量,可能会导致缓存一致性问题,但通常采用硬件方式实现缓存一致性并解决此类问题。

回写

缓存回写是指在水平或竖直划分技术中,缓存中的更新被推迟到本地缓存块 (通常是整个块) 被驱逐或替换的那一刻。当执行写操作时,由于缓存数据已经过时,CPU会将数据直接放置在缓存块中。此时,并不会向内存写入数据。只有在该块被驱逐或替换时,内部数据才最终更新回内存。写回方式让多个操作可以在一起更新内存,从而获得更快的性能。 因此,写回的缓存选项通常用于读取操作比写入操作更频繁的应用程序。

如何实现直写和回写

为了实现直写和回写,需要对缓存控制器进行相应的配置和设置。

直写的实现

在现代计算机中,缓存直写通常是通过以下两种方式之一实现的:

  • 基于硬件的缓存直写
  • 基于软件的缓存直写

基于硬件的缓存直写是通过处理器芯片组中专门的缓存控制器实现的。有些缓存控制器可能具有一个特殊的写缓冲区,用于将CPU写入的所有数据先存储到缓存中,然后批量更新到内存中。这个缓冲区使得系统具有更低的延迟和更高的性能,同时也减少了由于缓存和内存数据不一致而引起的问题。缓存一致性方法用于确保多个处理器读取和修改数据时缓存中保存的值与内存中的一致。

基于软件的缓存直写是通过软件来实现的。 常见的方式是通过强制所有的write都执行存储指令,这使得CPU能够直接将数据存储到内存中而无需使用缓存。然而,由于执行写操作的CPU数量可能很大,因此该方法可能会导致系统的性能下降,特别是在高并发的场景下。

回写的实现

缓存回写通常由缓存控制器中的硬件实现。缓存控制器通常具有一个称为写队列的特殊缓冲区,用于存储尚未写入内存的数据块。在写队列满时,数据将被刷新到内存中。这种方法可以通过减少操作系统和应用程序对硬件的干预以及缓存一致性来提高性能。缓存有效性(包括无效、共享、独占、已修改)可以增强其内部一致性属性。

结论

缓存直写和回写是缓存技术中两种重要的实现方式。虽然它们在工作方式和效率方面有所不同,但它们在提高计算机性能和节省能源方面都功不可没。当程序员能够深入理解直写和回写的区别和实现方式,就能够选择和使用更适合自己应用程序的缓存操作方式,从而获得更好的性能。

# 在缓存中直写和回写

随着计算机技术的不断发展,缓存技术已经变成了现代计算机系统中给力的关键技术之一,它不仅可以提高计算机的性能,还可以节省计算机的能耗。在缓存技术中,直写和回写是两种常见的运作方式,本文将详细介绍这两种方式的区别和具体实现。

## 直写与回写的区别

写回和写直两种缓存引用方式之间的主要区别在于它们何时将修改后的数据从缓存写回到内存。简而言之,写直方式在每次访问缓存都会立即更新内存,而写回方式则在发生其他数据访问之后才会写回内存。换句话说,写直方式更新实时,但具有较高的延迟和带宽成本,而写回方式更新以更高的速率进行,但在并发访问时可能会导致多个处理器的数据不一致。

### 直写

缓存直写是指缓存中的修改是立即传播到内存中的。当CPU写入数据时,即存储在cache块中,同时也写入内存中的相应地址。这节省了数据的写回(flush)时间,从而获得更高的性能,但该操作需要更多的带宽。此外,由于每次缓存写操作都需要更新内存,因此写直的缓存用于写入往往具有很高的延迟。写直也会增加系统中写操作的数量,可能会导致缓存一致性问题,但通常采用硬件方式实现缓存一致性并解决此类问题。

### 回写

缓存回写是指在水平或竖直划分技术中,缓存中的更新被推迟到本地缓存块 (通常是整个块) 被驱逐或替换的那一刻。当执行写操作时,由于缓存数据已经过时,CPU会将数据直接放置在缓存块中。此时,并不会向内存写入数据。只有在该块被驱逐或替换时,内部数据才最终更新回内存。写回方式让多个操作可以在一起更新内存,从而获得更快的性能。 因此,写回的缓存选项通常用于读取操作比写入操作更频繁的应用程序。

## 如何实现直写和回写

为了实现直写和回写,需要对缓存控制器进行相应的配置和设置。

### 直写的实现

在现代计算机中,缓存直写通常是通过以下两种方式之一实现的:

- 基于硬件的缓存直写
- 基于软件的缓存直写

基于硬件的缓存直写是通过处理器芯片组中专门的缓存控制器实现的。有些缓存控制器可能具有一个特殊的写缓冲区,用于将CPU写入的所有数据先存储到缓存中,然后批量更新到内存中。这个缓冲区使得系统具有更低的延迟和更高的性能,同时也减少了由于缓存和内存数据不一致而引起的问题。缓存一致性方法用于确保多个处理器读取和修改数据时缓存中保存的值与内存中的一致。

基于软件的缓存直写是通过软件来实现的。 常见的方式是通过强制所有的write都执行存储指令,这使得CPU能够直接将数据存储到内存中而无需使用缓存。然而,由于执行写操作的CPU数量可能很大,因此该方法可能会导致系统的性能下降,特别是在高并发的场景下。

### 回写的实现

缓存回写通常由缓存控制器中的硬件实现。缓存控制器通常具有一个称为写队列的特殊缓冲区,用于存储尚未写入内存的数据块。在写队列满时,数据将被刷新到内存中。这种方法可以通过减少操作系统和应用程序对硬件的干预以及缓存一致性来提高性能。缓存有效性(包括无效、共享、独占、已修改)可以增强其内部一致性属性。

## 结论

缓存直写和回写是缓存技术中两种重要的实现方式。虽然它们在工作方式和效率方面有所不同,但它们在提高计算机性能和节省能源方面都功不可没。当程序员能够深入理解直写和回写的区别和实现方式,就能够选择和使用更适合自己应用程序的缓存操作方式,从而获得更好的性能。