2010-04-22 239 views
4

我試圖讓我的頭圍繞這個(好的,tbh在考試前一個晚上抱怨:)但我無法弄清楚(也沒有在網上找到一個很好的高級概述)這個:操作系統 - TLB

「頁表項可以映射到多個TLB項..如果例如每頁表項mappped兩個TLB項,這是知道的2路組相聯TLB」

我問題是,爲什麼我們想要多次映射這個?我們當然希望在TLB中擁有最大數量的可能條目,重複會浪費空間嗎?我錯過了什麼?

非常感謝

回答

7

這並不意味着你會同樣進入兩個地裝載到表中 - 這意味着一個特定的條目可以被加載到表中的兩個地方要麼。您只能將條目映射到表中某個位置的替代方法是直接映射的TLB。

如果要從內存的一部分複製到另一部分,並且(通過CPU使用的任何直接映射方案),直接映射的TLB的主要缺點必須映射到相同在TLB現貨。在這種情況下,您最終每次都會重新加載TLB條目,因此TLB幾乎沒有任何好處。通過使用雙向組關聯TLB,可以保證任何兩個條目可以同時在TLB中,因此(例如)從A點移動到B點的塊不會毀掉您的一天 - 但是如果您從兩個區域讀取數據,將它們合併,並將結果寫入第三個數據結果中(如果所有三個使用的翻譯將映射到同一組TLB條目)。

具有多路TLB(像任何其他多路高速緩存)的缺點是,你不能直接計算位置可能保持在給定時間的特定條目 - 你基本上橫跨找到的方式搜索正確的入口。對於雙向,這很少是一個問題 - 但四種方式通常是有用的限制; 8路組關聯(TLBs |高速緩存)根本不常見,部分原因是因爲在8個可能位置搜索數據開始變得過度。

隨着時間的推移,在緩存或tlb中使用的方法數量往往會增加。內存和處理器之間的速度差異不斷上升。差分越大,CPU可以使用的循環次數越多,並且在單個存儲器時鐘週期內(或者指定數量的存儲器時鐘週期,即使它不止一次)仍然會產生結果。

+0

謝謝傑瑞,那真是太棒了 - 現在一切都合情合理! – stabGreeol 2010-04-22 22:45:46