cpu緩存是位於cpu和內存之間的高速緩衝存儲器,由於如今cpu的運算速度遠遠超過了內存的讀寫速度,所以設置cpu緩存來提升cpu的執行效率。目前主流的cpu存在三級緩存L1,L2,L3緩存,其中每一個核cpu專享L1和L2緩存,同一個cpu插槽的核共享L3緩存。
cpu緩存是一種非鏈式的hash map,每一個桶(bucket)一般是64字節,這樣的桶被稱爲緩衝行。java
參考資料:算法
cup緩存定義緩存
CPU緩存(Cache Memory)是位於CPU與內存之間的臨時存儲器,它的容量比內存小的多可是交換速度卻比內存要快得多。高速緩存的出現主要是爲了解決CPU運算速度與內存讀寫速度不匹配的矛盾,由於CPU運算速度要比內存讀寫速度快不少,這樣會使CPU花費很長時間等待數據到來或把數據寫入內存。在緩存中的數據是內存中的一小部分,但這一小部分是短期內CPU即將訪問的,當CPU調用大量數據時,就可先緩存中調用,從而加快讀取速度。fetch
CPU緩存是一種高效的非鏈式結構的hash map,每一個桶(bucket)一般是64個字節。這就是一個「緩存行(cache line)」。緩存行是內存交換的實際單位。例如,主存中地址A會映射到一個給定的緩存行C。htm
若是CPU須要訪問的地址hash後的行尚不在緩存中,那麼緩存中對應位置的緩存行會被清除,以便載入新的行。例如,若是咱們有兩個地址,經過hash算法hash到同一緩存行,那麼新的值會覆蓋老的值。內存
當CPU執行存儲指令(store)時,它會嘗試將數據寫到離CPU最近的L1緩存。若是此時出現緩存未命中,CPU會訪問下一級緩存。此時,不管是英特爾仍是許多其它廠商的CPU都會使用一種稱爲「合併寫(write combining)」的技術。get
其實cache miss的緣由有下面三種:
1. 第一次訪問數據, 在cache中根本不存在這條數據, 因此cache miss, 能夠經過prefetch解決.
2. cache衝突, 須要經過補齊來解決.
3. 就是我示例的這種, cache滿, 通常狀況下咱們須要減小操做的數據大小, 儘可能按數據的物理順序訪問數據.it