定義:
lmbench:測內存延遲
memory:電腦存儲器。
cache: 是一種又小又快的高速緩衝存儲器。它存在的意義是彌合Memory與CPU之間的速度差距。
TLB:本質就是Cache中的page table。
單路雙路通常是指的線程數。
雙線程的意思就是一個物理CPU虛擬成兩個CPU.有兩個線程同時運行。相對來講性能會有所提升。而且在系統裏顯示CPU是兩個。
、
爲了加快存取速度,在Cache中,會創建一個最近常使用的page構成的table,相當於把page table的一部分內容放入Cache中,減少到內存中讀取page table的效能損耗。和page table不同的是,TLB將 virtual page number 存放在了tag中,data中放的就是physical page number,同樣也會有Dirty、ref、valid bit。TLB相當於page table的子集,如果Virtual address在TLB中hit,在page table中也一定hit。
CPU中有好幾個等級的緩存。通常L1和L2緩存都是每個CPU一個的, L1緩存有分爲L1i和L1d,分別用來存儲指令和數據。L2緩存是不區分指令和數據的。L3緩存多個核心共用一個,通常也不區分指令和數據。 還有一種緩存叫TLB,它主要用來緩存MMU使用的頁表,通常我們講緩存(cache)的時候是不算它的。
L1/L2 Cache都是用SRAM做爲存儲介質,爲什麼說L1比L2快呢?這裏面有三方面的原因:
- 存儲容量不同導致的速度差異
L1的容量通常比L2小,容量大的SRAM訪問時間就越長,同樣製程和設計的情況下,訪問延時與容量的開方大致是成正比的。
- 離CPU遠近導致的速度差異
通常L1 Cache離CPU核心需要數據的地方更近,而L2 Cache則處於邊緩位置,訪問數據時,L2 Cache需要通過更遠的銅線,甚至更多的電路,從而增加了延時。
L1 Cache分爲ICache(指令緩存)和DCache(數據緩存),指令緩存ICache通常是放在CPU核心的指令預取單遠附近的,數據緩存DCache通常是放在CPU核心的load/store單元附近。而L2 Cache是放在CPU pipeline之外的。
爲什麼不把L2 Cache也放在很近的地方呢?由於Cache的容量越大,面積越大,相應的邊長的就越長(假設是正方形的話),總有離核遠的。
(從網上找的資料,如有侵權請聯繫作者刪除)