剛準備關wikipedia:如果TLB需要兩次內存訪問,那麼TLB比頁表更快?
頁表,通常存儲在主內存中,跟蹤在虛擬的網頁存儲在物理內存中。此方法使用兩個內存訪問(一個用於頁表項,一個用於字節)來訪問一個字節。首先,查找頁表的幀號。其次,帶頁面偏移量的幀號給出實際地址。因此,任何簡單的虛擬內存方案都會使內存訪問時間加倍。因此,TLB用於減少訪問頁表方法中的內存位置所花費的時間。
因此,我很好奇的是爲什麼TLB實際上更快,因爲從我知道它只是一個更小的,精確的頁表副本。
您仍然需要訪問TLB以查找物理地址,然後一旦擁有該物理地址,您仍然需要實際訪問物理地址處的數據,這與查詢頁表一樣。
我只能想到兩個原因的TLB更快:
查找在TLB或頁面表中的地址是不是爲O(n)(我假定這是O(1)如哈希表)。因此,由於TLB要小得多,因此查找速度會更快。在這種情況下,爲什麼不使用散列表而不是TLB?
我錯誤地解釋了TLB是如何工作的,它實際上並沒有進行兩次訪問。
隨時爲任何疑問。 –