我试图了解缓存是如何工作的。我正在研究一个问题,以便更好地理解这个概念:
给定2路组关联高速缓存,其中块长度为1个字,总长度为16个字,长度为32位,最初为空,并使用最近最少使用的替换策略。显示以下地址是否命中并列出缓存的最终内容。
地址:
- 00010001
- 01101011
- 00111111
- 01001000
- 00011001
- 01000010
- 10001001
- 00000000
- 01001000
- 00011100
- 00110000
- 11111100
- 00111010
醇>
首先,根据给定的信息,在我看来,将按以下顺序存在2个偏移位,3个设置位和3个标记位(T =标记,S =设置,O =偏移):TTTSSSOO
示例(地址1):
Tag = 000(0),Set = 100(4),Offset = 01(1)
现在,假设这是正确的,当查找上述地址时,会发生以下 :
- Miss,存储在第4组,第0块
- Miss,存储在第2组,第0块
- Miss,存储在第7组,第0块
- Miss,存储在第2组,第1区
- Miss,存储在第6组,第0块
- Miss,存储在第0组,第0块
- 小姐,存储在第2组,第0区(第0组是LRU,现在第1组变为LRU)
- 小姐,存储在第0组,第1区
- 点击第2组,第1栏
- 小姐,存储在第7组,第1区
- Miss,存储在第6组,第1区
- Miss,存储在第7组,第0块(第0组是LRU,现在第1组变为LRU)
- 小姐,存储在第6组,第0区(第0组是LRU,现在第1组变为LRU)
醇>
缓存的最终内容应如下所示:
设置0:01000010,00000000
设置1:空,空
设置2:10001001,0100001000
设置3:空,空
设置4:00010001,空
设置5:空,空
设置6:00111010,00110000
Set 7:11111100,00011100
我正处于非常困难的时期,所以希望有人可以告诉我,如果我走在正确的轨道上。如果这些看起来不错,我想尝试相同的练习,但有不同的地址进行进一步练习,以确保我已经得到它。
EDIT1:新地址。
- 000_100_01
- 000_010_01
- 000_001_10
- 000_001_01
- 001_010_11
- 000_001_00
- 000_010_11
- 000_010_01
- 001_110_00
- 000_100_11
- 000_000_01
- 000_101_11
- 011_010_11
醇>
哪个应该:
- 小姐,存储在第4组第0块
中- 小姐,存储在第2组第0块
中- 小姐,存储在第1组第0块
中- Miss,存储在第1组第1区,第0区变为LRU
- Miss,存储在第2组第1区,第0区变为LRU
- Miss,存储在第1组第0块,第1组变为LRU
- Miss,存储在第2组第0块,第1组变为LRU
- 点击,设置2块0成为LRU
- 小姐,存储在第6组第0块
中- 小姐,存储在第4组第1块
中- 小姐,存储在第0组0
中- 小姐,存储在第5组第0块
中- Miss,存储在第2组第0块,第1组变为LRU
醇>