旁觀緩衝區 (Look aside Buffer)
什麼是旁觀緩衝區?
旁觀緩衝區 (LAB) 是一種用於計算機系統中儲存頻繁訪問資料的快取記憶體。LAB 位於 CPU 和主記憶體之間,充當高速緩衝區以提高系統性能。
LAB 的工作原理是快取主記憶體中 CPU 頻繁訪問的部分資料。當 CPU 請求主記憶體中的資料時,LAB 首先檢查緩衝區中是否存在該資料。如果在 LAB 中找到資料,則立即將其檢索併發送到 CPU,這與從主記憶體中提取資料相比,可以顯著減少訪問時間。
旁觀緩衝區在哪裡使用?
LAB 通常用於主記憶體訪問時間較慢的計算機系統(例如硬碟驅動器)中,以提高系統的整體效能。它也用於虛擬記憶體系統中,在其中儲存頻繁訪問的頁面以減少頁面錯誤並提高效能。
轉換旁觀緩衝區 (TLB)
轉換旁觀緩衝區 (TLB) 是一種特殊的快取型別,可以幫助處理器快速訪問最近使用的資料。它儲存最近訪問的頁表條目,並幫助處理器在給定虛擬地址時快速檢索幀號並形成實際地址。
當處理器在 TLB 中查詢虛擬地址時,它要麼找到頁表條目(稱為 TLB 命中),要麼找不到(稱為 TLB 未命中)。如果是命中,處理器將檢索幀號並形成實際地址。如果是未命中,則在處理頁表時將頁號用作索引。TLB 首先檢查所需頁面是否已存在於主記憶體中。如果不存在,則發出頁面錯誤,並更新 TLB 以包含新的頁面條目。
TLB 比主記憶體更快更小,但比暫存器更便宜更大。它用作高速關聯快取,用於減少有效記憶體訪問時間 (EMAT)。EMAT 使用 TLB 的命中率、記憶體訪問時間和 TLB 訪問時間計算。
在場景 1 中,TLB 找到相關虛擬地址的頁表條目,並返回相應的物理地址供 CPU 訪問主記憶體。這是 TLB 命中。
在場景 2 中,TLB 未找到相關虛擬地址的頁表條目,因此它將頁號傳送到 CPU 以在頁表中查詢。如果頁面不存在於主記憶體中,則會發生頁面錯誤,並且 TLB 將使用新的頁面條目進行更新。這是 TLB 未命中。
區域性性原理
TLB 只包含頻繁訪問頁面的條目
遵循區域性性原理
作業系統轉換旁觀緩衝區
TLB 使用標籤和鍵進行對映
當在 TLB 中找到所需條目時發生 TLB 命中
如果發生 TLB 命中,CPU 可以訪問主記憶體中的實際位置
如果發生 TLB 未命中,CPU 必須訪問主記憶體中的頁表,然後訪問實際幀
TLB 命中率會影響有效訪問時間 (EAT)
可以透過提高 TLB 命中率來降低 EAT
分頁的缺點
頁表大小可能非常大,浪費主記憶體
CPU 從主記憶體讀取單個字需要更多時間
可以透過增加頁面大小來減小頁表大小,但這會導致內部碎片和頁面浪費
多級分頁會增加有效訪問時間
使用儲存在內部的頁表的暫存器可以減少訪問時間,但與頁表大小相比,暫存器價格昂貴且空間小
轉換旁觀命中和未命中的訪問時間
有效訪問時間 (EAT)
TLB 用作高速關聯快取,用於減少有效記憶體訪問時間。
TLB 可以透過減少訪問頁表的時間來降低 EAT
EAT 公式:EAT = P(t + m) + (1 - P)(t + k.m + m)
P = TLB 命中率,t = 訪問 TLB 的時間,m = 訪問主記憶體的時間,k = 單級分頁為 1
提高 TLB 命中率會降低 EAT
多級分頁會增加 EAT
結論
分頁是作業系統中的一種記憶體管理技術,它將記憶體劃分為頁面,並將程序劃分為塊。但是,頁表的大小可能會變得非常大,從而浪費記憶體並增加訪問時間。轉換旁觀緩衝區 (TLB) 充當常用頁表條目的快取記憶體,從而減少頁表的有效訪問時間。TLB 命中率會影響有效訪問時間,提高它會減少訪問時間。TLB 比主記憶體更快更小,但比暫存器更便宜更大。總的來說,TLB 在減少記憶體訪問時間和提高系統性能方面起著至關重要的作用。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP