Translation Lookaside Buffer (TLB)
一般在 Process 中看到的存取的記憶體是 Logical Address,之後透過 TLB cahce 來加快 page 映射 Physical Address
- Logical Address
- 高位 virtual page number
- 低位 就是直接 offset ,比如可以看到 linux
/proc/pid/maps
的0xfff000
後面三個 0 就是這個 offset - n-way set associative:
tag + set index + offset
- Physical Address
- 高位 也就是 frame number 會透過 TLB 下去取得
- 低位直接使用 Logical address 的 offset
- Page Table Entries
Cache
- 在理解上,要有電路平行的感覺
- set-associative
- Cache Set
- 透過 logical address 的 set index 進行對應
- 有多個 Cache Line (cache entries/block)
- tag array : 透過 logical address 的 tag bit 進行對應
- Data array 保存實際上的資料
- Cache Set
Page Table Layout
- PGD Table
- PMD Table
- Page Table entry (PTE Table)
- Data frame (12 bits)
why need five/four level page table?
- 主要是因為對於大的定址空間,保存太大的定址空間,並且實際上 x64 系統並不會使用到所有的記憶體,因此將定址空間表示成稀疏分頁目錄,可以節省空間,但會比較慢一點。
- Five-level page tables [LWN.net]
ref
- Cache的基本原理 - 知乎
- Page Table Management
- cache 有關
Linux Memory Management Page