一,cpu緩存架構
1.level-1 data cache: 一級數據緩存
2.level-1 inst cache: 一級指令緩存
3.MMU: 內存管理單元
4.TLB(translation lookaside buffer): 轉換後援緩存
5.level-2 cache:二級緩存
6.level-3 cache:三級緩存
二.處理器讀取數據過程
- CPU根據虛擬地址嘗試從一級緩存(存放的是虛擬地址的索引)中讀取數據;
- 如果一級緩存中查找不到,則需向MMU請求數據;
- MMU從TLB中查找虛擬地址的緩存(換言之,
TLB
是負責改進虛擬地址到物理地址轉換速度、存放虛擬地址的緩存); - 如果TLB中存在該虛擬地址的緩存,則MMU將該虛擬地址轉化爲物理地址,如果地址轉換失敗,則發生缺頁(圖中的
fault
分支),由內核進行處理,見上文所述;如果地址轉換成功,則從二級緩存(存放的是物理地址的索引)中讀取;如果二級緩存中也沒有,則需要從三級緩存甚至物理內存中請求; - 如果TLB中不存在該虛擬地址的緩存,則MMU從物理內存中的轉換表(
translation tables
,也稱爲頁表page tables
)中獲取,同時存入TLB;(注意,這個操作是硬件實現的,可以由MMU通過硬件直接從物理內存中讀取); - 跳到第4步。