讨论计算机体系结构中的关联映射?
在关联映射函数中,主存储器的任何块都可能包含任何缓存块位置。它将主存储器地址分成两部分 - 字ID和标签,如图所示。要检查存储在内存中的块,会从内存地址中提取标签,并在缓存的所有行中执行搜索以查看块是否存在。
这种在缓存中搜索块的方法看起来可能是一个缓慢的过程,但事实并非如此。缓存的每一行都有其比较电路,可以快速分析该行是否包含该块。由于所有行都并行执行此比较过程,因此可以快速识别正确的行。
这种映射技术旨在解决直接映射中存在的问题,在直接映射中,两个活动内存块可能映射到缓存的同一行。发生这种情况时,不允许任何一个内存块保留在缓存中,因为它会被竞争块迅速替换。这会导致一种称为抖动的状态。
在抖动中,缓存中的一行在两个或多个块之间来回切换,通常在处理器遍历它之前甚至替换一个块。可以通过允许内存块映射到缓存的任何一行来避免抖动。
有许多替换算法,没有一个算法比其他算法具有优先权。为了实现最快的操作,这些算法中的每一个都在硬件中实现。
- 最近最少使用 (LRU) - 这种方法恢复处理器在最长时间内没有读取的块。
- 先进先出 (FIFO) - 这种方法恢复在缓存中最久的块。
- 最不常用 (LFU) - 这种方法恢复命中次数较少的块,因为加载到缓存中。
- 随机 - 这种方法随机选择一个要替换的块。它的执行效率略低于LRU、FIFO或LFU。
广告