csapp 記憶體層級與快取機制

2021-09-30 00:19:26 字數 2856 閱讀 8708

半導體儲存器

隨機訪問儲存器ram,斷點資訊會丟失。分為兩類:

靜態sram,更快,用作快取記憶體儲存器cache

動態dram,用作主存及圖形系統的幀緩衝區。

1、靜態ram:sram

將每個位儲存在雙穩態(0與1)儲存單元裡

2、動態ram:dram

3、增強的dram

同步動態儲存器sdram

雙倍速率同步動態儲存器ddr sdram

非易失性儲存器

唯讀儲存器(read only memory)rom

prom:可程式設計rom,只能程式設計一次,可以從0寫成1,1寫成0

eprom:可擦寫可程式設計rom

eeprom:電子可擦除prom

可定址範圍為0~2^36-1,即主存位址空間為64gb,主存位址空間位址不等於主存容量。

用來傳輸位址、資料和控制訊號的一組平行的電線。

資料總的訪問時間=定址時間+旋轉延遲+傳輸時間

旋轉延遲:由轉盤轉速決定,一般是7200rpm

傳輸速度:需要讀取的扇區數目。

例:假定每個扇區512位元組, 磁碟轉速為5400 rpm(每分鐘多少轉),聲稱尋道時間(最大尋道時間的一半)為12 ms, 資料傳輸率為4 mb/s, 磁碟控制器開銷為1 ms,不考慮排隊時間,則磁碟響應時間為多少?

= 0+ 1 ms + 12 ms + 0.5 / 5400 rpm + 0.5 kb / 4 mb/s

= 0 + 1 ms + 12 ms + 0.5 / 90 rps + 0.125 / 1024 s

= 1 ms + 12 ms + 5.5 ms + 0.1 ms

= 18.6 ms

區域性性保證了層次化儲存結構的有效性。分為:

時間區域性性:變數被訪問多次

空間區域性性:訪問相鄰元素

不是磁表面儲存器,有快閃儲存器組成的外存系統,與u盤沒區別,但容量更大,儲存效能更好。

快閃儲存器是非易失性儲存器。

讀的操作比寫快很多。最小訪問單元為頁。

位於cpu晶元,由sram組成。在cpu與主存之間設定乙個cache,存放經常使用的程式和資料。

cpu執行指令時產生訪存要求。若cache命中,則無需訪問記憶體讀取資料。否則在cache中找一塊空閒塊,將ad位址處值送到cpu並複製到cache。

cache對映

直接相連:每個主存塊對映到固定cache行。cache行號=主存塊號%cache行數。命中率低(當連續訪問mod值相同的塊時很不理想)。即e=1的組相連

全相連:每個主存塊可對映到任一行

組相連:每個主存塊可對映到固定組的任一行

cache容量

1、求標誌位位數

行數=資料區容量64kb / 塊大小16b = 2^12 , 則行索引位數為12,又塊大小為16b,則偏移位數為4,所以標記位為32-12-12=16位

2、cache容量

v=2^12 * (1+16) /8b + 64 kb

平均訪問時間t

設h是命中率,則平均訪問時間t = htc+ (1 - h)(tc+ tm)

= tc+ (1 - h)tm

tc為cache訪問時間,tm為主存

讀取

具體在從快取中讀取乙個位址時,首先我們通過 set index 確定要在哪個 set 中尋找,確定後利用 tag 和同乙個 set 中的每個 line 進行比對,找到 tag 相同的那個 line,最後再根據 block offset 確定要從 line 的哪個位置讀起(這裡的而 line 和 block 是乙個意思)。如果 tag 不匹配的話,這行會被扔掉並放新的資料進來。

全相連快取記憶體

直接對映快取記憶體

即e=1

乙個tips:定義陣列大小時不要用2的冪,應該多加b位元組。以防對兩個這樣的陣列按下標一次訪問如乘時每次放完xi到快取記憶體儲存器就要再在這個位置放yi

n-路組相連快取記憶體(每組n行)

寫入

在寫入 miss 的時候,同樣有兩種方式:

這四種策略通常的搭配是:

其中第一種可以保證絕對的資料一致性,第二種效率會比較高(通常情況下)。

記憶體快取機制

新聞 或者論壇訪問量都很大.而使用者每次瀏覽新聞或者帖子的時候如果去訪問一次資料庫 會造成速度慢.如果把資料庫一些內容載入到記憶體中,則速度會快很多.一般首頁新聞都是僅幾天更新的 我們可以在利用jms 或者 單獨乙個程序來掃瞄資料庫,將近5天的新聞載入到記憶體.或者限制1000條.map cache...

memcache 記憶體機制與快取原理

如果用 c 語言直接 malloc,free 來向作業系統申請和釋放記憶體時,在不斷的申請和釋放過程中,形成了一些很小的記憶體片斷,無法再利用.這種空閒,但無法利用記憶體的現象,稱為記憶體的碎片化.memcached 用 slab allocator 機制來管理記憶體.slab allocator ...

memcache 記憶體機制與快取原理

如果用 c 語言直接 malloc,free 來向作業系統申請和釋放記憶體時,在不斷的申請和釋放過程中,形成了一些很小的記憶體片斷,無法再利用.這種空閒,但無法利用記憶體的現象,稱為記憶體的碎片化.memcached 用 slab allocator 機制來管理記憶體.slab allocator ...