【发布时间】:2020-05-28 00:26:46
【问题描述】:
我需要一个用于 4 路关联缓存的 LRU 算法,每组有额外的 5 位来指示应该驱逐哪一行。
-------------------------------------
Set x: | line_0 | line_1 | line_2 | line_3 |
-------------------------------------
-----------------------------------------
| bit_4 | bit_3 | bit_2 | bit_1 | bit_0 |
-----------------------------------------
起初,我试图将我的问题分解为更小的问题。 只有两行,我会同时触发与当前使用的行相对应的位,将其他行设置为 0。
受害者将是位设置为 0 的线路(前提是该设置已满)。
我想我可以在 4 路缓存中使用它,这些缓存具有位 bit_4、bit_3、bit_1、bit_0 对应于 line_0、line_1、line_2、line_3 和中间位表示最近使用哪一侧。很快我意识到它不够精确。 IE。在序列line_0、line_2、line_3、line_1 之后,位将是:10101,这表明左侧最近被引用(这是真的)但这并不一定意味着那一侧'最近最少被引用。
我将非常感谢任何提示。
【问题讨论】:
-
非常感谢您的帮助,此应用程序提供了出色的缓存模拟,但不一定能解决我的问题。我确实理解它是如何工作的,但我似乎不知道如何使用 5 位来指示最近最少使用的行。