2012-05-01 71 views
0

我已經給出了一個分配,我需要使用Java來模擬關聯緩存。 我們給了一組字節地址,我們需要找出每個地址是一個命中還是未命中。 緩存由32塊,每塊爲8個字節關聯緩存

所以方案是這樣的:

  • 來自地址計算組地址(組地址是由每個的大小分割的地址塊在高速緩存中,例如組地址爲地址950將8分之950)
  • 使用整個組的地址作爲標籤
  • 掃描整個高速緩存,看看標籤已經在高速緩存
  • 如果標籤被找到,記錄一打
  • 如果沒有找到標記,記錄小姐,標籤存儲在第一可用塊
  • 如果沒有可用的空間,從緩存中刪除最近最少使用(LRU)塊
  • 更新緩存,以便存儲新標籤(如果有未命中)並記住這個塊是最近使用的最新的。
  • 將有效位設置爲true,將標記存儲在塊中,記住最初使用的是哪個地址。

我遇到的問題是做最近最少使用位。我們要求實現LRU的方法是保持塊從最近使用到最近最少使用,並且當我們需要替換塊時,我們從最後刪除舊塊,並將新塊添加到開始。然後,當我們得到一擊時,我們將命中移動到緩存的開頭。

+0

什麼,具體來說,是這樣的問題? –

+0

如何實現一種模擬LRU模式的方法 –

+0

[你將如何在Java 6中實現LRU緩存?](http://stackoverflow.com/questions/221525/how-would-you-implement-an -ru-cache-in-java-6) –

回答

0

您可以通過鏈接列表實現此目的。當然,你需要想辦法快速查找列表......