「アイテム」ごとに2つのアイテムを保管します。値(もちろん)と、増え続ける整数である「時間」。
したがって、データを使用して、1から4が順番にアクセスされたと仮定します。
(1, 1), (2, 2), (3, 3), (4, 4)
アクセス「1」(わかりやすくするために時間でソート、時間= 5)
(2, 2), (3, 3), (4, 4), (1, 5)
アクセス「2」(わかりやすくするために時間でソート、時間= 6)
(3, 3), (4, 4), (1, 5), (2, 6)
見つからない「5」にアクセスすると、キャッシュミスが発生します。「5」を格納する「スペース」を見つけるには、最近使用されていない(LRU)をフラッシュする必要があります。これは「3」を削除することを意味します。時間=7であることに注意してください。
(4, 4), (1, 5), (2, 6), (5, 7)
アクセス「1」(わかりやすくするために時間でソート、時間= 8)
(4, 4), (2, 6), (5, 7), (1, 8)
アクセス「2」(わかりやすくするために時間でソート、時間= 9)
(4, 4), (5, 7), (1, 8), (2, 9)
見つからない「3」にアクセスすると、キャッシュミスが発生します。「3」を格納する「スペース」を見つけるには、最近使用されていない(LRU)をフラッシュする必要があります。これは「4」を削除することを意味します。時間=10であることに注意してください。
(5, 7), (1, 8), (2, 9), (3, 10)
見つからない「4」にアクセスすると、キャッシュミスが発生します。「4」を格納する「スペース」を見つけるには、最近使用されていない(LRU)をフラッシュする必要があります。これは「5」を削除することを意味します。時間=11であることに注意してください。
(1, 8), (2, 9), (3, 10), (4, 11)
見つからない「5」にアクセスすると、キャッシュミスが発生します。「5」を格納する「スペース」を見つけるには、最近使用されていない(LRU)をフラッシュする必要があります。これは「1」を削除することを意味します。時間=12であることに注意してください。
(2, 9), (3, 10), (4, 11), (5, 12)
フラッシュするアイテムがどのように選択されたかがわかり、実際の例がわかったので、配列内でアイテムを移動せずにアイテムをフラッシュするのは、実装する必要があります。
---追加の説明付きで編集---
わかりました。リスト形式で表示するというアイデアからいくつか疑問が生じたようです。配列形式で表示します。
アクセス1、キャッシュミス、空のスロットが利用可能、最初に利用可能なスロットに保存
Value Age
1 1
--- ---
--- ---
--- ---
アクセス2、キャッシュミス、空のスロットが利用可能、最初に利用可能なスロットに保存
Value Age
1 1
2 2
--- ---
--- ---
アクセス3、キャッシュミス、空のスロットが利用可能、最初に利用可能なスロットに保存
Value Age
1 1
2 2
3 3
--- ---
アクセス4、キャッシュミス、空のスロットが利用可能、最初に利用可能なスロットに保存
Value Age
1 1
2 2
3 3
4 4
アクセス1、キャッシュヒット、更新アクセス時間
Value Age
1 5
2 2
3 3
4 4
アクセス2、キャッシュヒット、更新アクセス時間
Value Age
1 5
2 6
3 3
4 4
アクセス5、キャッシュミス、使用可能な空がない、「最近使用されていない」を破棄して置換
Value Age
1 5
2 6
5 7
4 4
アクセス1、キャッシュヒット、更新アクセス時間
Value Age
1 8
2 6
5 7
4 4
アクセス2、キャッシュヒット、更新アクセス時間
Value Age
1 8
2 9
5 7
4 4
アクセス3、キャッシュミス、使用可能な空がない、「最近使用されていない」を破棄して置換
Value Age
1 8
2 9
5 7
3 10
アクセス4、キャッシュミス、使用可能な空がない、「最近使用されていない」を破棄して置換
Value Age
1 8
2 9
4 11
3 10
アクセス5、キャッシュミス、使用可能な空がない、「最近使用されていない」を破棄して置換
Value Age
5 12
2 9
4 11
3 10