讨论计算机体系结构中的关联映射?

computer architecturecomputer sciencenetwork更新于 2026/1/12 3:37:17

在关联映射函数中,主存中的任何块都可能包含任何缓存块位置。它将主存地址分为两部分——字ID和标签,如图所示。为了检查存储在内存中的块,需要从内存地址中提取标签,并搜索缓存的所有行,以查看该块是否存在。

这种在缓存中搜索块的方法看起来可能很慢,但事实并非如此。缓存的每一行都有自己的比较电路,可以快速分析该块是否包含在该行中。由于所有缓存行都并行执行此比较过程,因此可以快速识别正确的缓存行。

此映射技术旨在解决直接映射中存在的问题,即两个活动内存块可能映射到缓存的同一缓存行。当发生这种情况时,两个内存块都无法留在缓存中,因为它会被竞争内存块快速替换。这会导致一种称为"抖动"的情况。

在"抖动"情况下,缓存中的缓存行会在两个或多个内存块之间来回切换,通常在处理器处理完之前就替换了另一个内存块。可以通过允许内存块映射到缓存的任意缓存行来避免抖动。

有许多替换算法,它们之间没有优先级之分。为了实现最快的操作,每种算法都在硬件中实现。

  • 最近最少使用 (LRU) −这种方法会恢复处理器在最长时间内未读取的块。
  • 先进先出 (FIFO) − 这种方法会恢复缓存中最高的块。
  • 最不常用 (LFU) − 这种方法会恢复由于已加载到缓存中而命中次数较少的块。
  • 随机 − 这种方法会随机选择一个要替换的块。其执行速度略低于 LRU、FIFO 或 LFU。

相关文章