快取記憶體Cache的對映方式

2021-10-06 21:43:46 字數 1160 閱讀 5471

一:直接對映

簡單來說,就是整個cache,對映到主存中,是乙個主存塊組(n個連續主存塊為一組)

ps:這裡說的位址已經是實體地址,不是程式中的邏輯位址,可參考cpu訪問位址的過程

主存組號:主存塊號從0開始,順序,每n塊為一組,從第0組開始

cache行數:表示在cache塊的第幾行資料,也表示在主存塊組中的第幾塊

而乙個主存塊可能包含多個字,塊內位址則表示要取塊內的第幾字

來乙個例子幫助理解:

(1)主存位址空間:1gb=2^30b

則主存位址為20位,才夠訪問這麼多的位址空間

記憶體塊大小為128b=2^7b,以位元組編址(編址的最小單元是位元組)

則塊內位址為低7位

64kb/128b=2^16b / 2^7b= 2^9

cache有2^9行

cache行數佔中間9位

30-7-9=14

則主存組號佔高14位

(2)直接對映則無需控制位

全寫方式下,無需修改位(若資料有更改則在cache中修改同時修改對應主存資料)

但是仍需要標誌位和有效位

標誌位:對應主存組號

有效位:有效位為0表示該cache行存的資料是無效的,會做缺失處理

則cache總容量:

2^9x(128x8+14+1)=519.5k位

上面說的主存各個數字的劃分,劃分的是位址

而是標記,資料

標記位可能有控制位,修改位,有效位,標誌位

資料則是取決於計算機的字長,一字大小

二:全相聯對映

直接用比較多位的標記位來直接對映主存塊號(這裡主存塊不分組,就是從0開始到第幾塊)

三:組相聯對映

這裡是將主存塊和cache行都進行了分組(n個cache行分到一組)

然後,每個主存塊可以對映到乙個cache組內的任意行

ps:替換時不是像直接對映那樣整個cache去替換,而是要用哪塊替換哪塊

位址劃分的「標記」指的是主存組號

根據cahce組號找到對應cache組和當前主存塊組內的對應主存塊

用當前主存塊,逐行比較組內的各cache行,若命中則命中

若無則做cache缺失處理

快取記憶體Cache的作用

快取記憶體cache的作用 現在使用的絕大多數cpu都帶有快取記憶體 cache,有的甚至整合了多極快取 而我們選擇主機板時,板上的cache數量也是乙個重要的考慮因素。早期的486整合了4 8k的一級片內cache,而現在的pentium ii至強處理器不僅整合了32k一級片內cache,還將51...

快取記憶體儲存器 cache

早期計算機層次結構 cpu暫存器 dram主儲存器和磁碟儲存。由於cpu和主存之間差距逐漸增大,便出現了小的sram快取記憶體儲存器於cpu暫存器檔案和主存之間,稱為l1快取記憶體 一級快取 cpu和主存之間效能差距繼續增大,便在l1快取記憶體和主存間出現了更大的快取記憶體,稱為l2快取記憶體。如圖...

linux DNS快取記憶體

配置名稱伺服器 本機ip 172.25.254.117 1 安裝 bind 軟體包 yum install y bind2 編輯 etc named.conf listen on port 53 開啟埠 allow query 允許訪問 forwarders 如果伺服器沒有這個位址就去訪問250 3...