2016-12-15 63 views
0

剛準備關wikipedia如果TLB需要兩次內存訪問,那麼TLB比頁表更快?

頁表,通常存儲在主內存中,跟蹤在虛擬的網頁存儲在物理內存中。此方法使用兩個內存訪問(一個用於頁表項,一個用於字節)來訪問一個字節。首先,查找頁表的幀號。其次,帶頁面偏移量的幀號給出實際地址。因此,任何簡單的虛擬內存方案都會使內存訪問時間加倍。因此,TLB用於減少訪問頁表方法中的內存位置所花費的時間。

因此,我很好奇的是爲什麼TLB實際上更快,因爲從我知道它只是一個更小的,精確的頁表副本。

您仍然需要訪問TLB以查找物理地址,然後一旦擁有該物理地址,您仍然需要實際訪問物理地址處的數據,這與查詢頁表一樣。

我只能想到兩個原因的TLB更快:

  • 查找在TLB或頁面表中的地址是不是爲O(n)(我假定這是O(1)如哈希表)。因此,由於TLB要小得多,因此查找速度會更快。在這種情況下,爲什麼不使用散列表而不是TLB?

  • 我錯誤地解釋了TLB是如何工作的,它實際上並沒有進行兩次訪問。

+0

隨時爲任何疑問。 –

回答

3

你是對你的假設,即與TLB方法仍然需要2次訪問。但隨着TLB的做法是更快,因爲:

TLB是由所謂的聯想記憶更快的內存的

通常我們做2個內存訪問物理內存,但與TLB有1次訪問TLB和其他訪問到物理記憶。

聯想記憶是更快,因爲它是內容可尋址存儲器但其昂貴,因爲需要額外的邏輯電路。

您可以閱讀有關內容尋址內存here

1

這取決於具體的實施。通常,TLB是CPU中存在的高速緩存。

您仍然需要訪問TLB以查找物理地址,然後一旦您擁有該物理地址,您仍然需要實際訪問物理地址處的數據,這與查詢頁表一樣。

CPU可以比通過內存總線訪問數據的速度快得多。它正在對兩個不同的地方進行兩次訪問(一個更快,一個更慢)。此外,內存位置也可以緩存在CPU內,在這種情況下,不需要訪問內存總線。