儲存器層次結構
cache和主存的關係
實現cache需要解決的問題
cache的對映方式
cache命中率和缺失率
cache的關聯度
下面開始第一節內容,儲存器的層次結構,及cache在層次化結構中的位置。
目前,我們所知道的儲存器有暫存器、sram、dram、硬碟等,列出它們的相關指標:
暫存器:觸發器,速度非常快,訪問延時為1ns。
sram:sram由6個t管組成,通過在位線上寫高低電平寫入sram;靠讀取位線上的電平讀出資料,所以速率很快。但是其由6個t管組成,整合度低,所以容量也就很小。
dram:dram由乙個t管和乙個電容組成,整合度高,容量大。dram是靠寄生電容的電荷儲存資料,靠電容的充電和放電過程實現寫入和讀取動作,我們知道電容的充放電曲線,所以dram讀寫速度比sram要低。
硬盤:讀寫為機械動作,所以速率更低。
我們想要的儲存器為大容量、快速、便宜的儲存器,沒有單獨的一種儲存器能夠滿足要求,所以,提出了一種層次化的儲存結構。
儲存器的層次結構如下:
上圖中的cache位於暫存器和主存之間。
層次化儲存器結構的大概思想為:
資料總是在相鄰兩層之間複製傳送。這裡要強調下,資料傳送是複製傳送,比如將主存中的資料傳送到cache後,主存中的資料仍然存在的,並沒有丟失。
block:最小傳送單位為定長塊,互為副本。
問題: 為什麼這種層次化的結構是有效的呢? 為什麼每次複製傳送乙個block,一大塊資訊,沒有白白浪費頻寬呢?因為程式訪問的區域性性特點,在不久的將來,cpu訪問的是這個block的指令和資料,所以,一次性搬一大塊,可以減少搬運次數,某個時刻都去訪問這個block。
區域性性訪問包含兩點:
時間區域性性(temproal locality)
含義:剛被訪問過的單元不久很可能又被訪問。
做法:讓最近被訪問過的資訊保留在離cpu更近的儲存器中。
例子:迴圈具有時間區域性性。
空間區域性性(spatial locality)
含義:剛被訪問過的單元的鄰近單元很可能被訪問。
做法:將剛被被訪問過的單元的鄰近單元調到離cpu更近的儲存器中。
例子: 迴圈,陣列,具有空間區域性性。
總結:程式的區域性性訪問使得層次化儲存結構非常有效。
那麼,程式為什麼具有區域性性訪問的特性呢?
原因:
資料:連續存放,陣列元素重複、按序訪問。
為什麼引入cache會加快訪存速度?
在cpu和主存之間設定乙個快速小容量的儲存器,其中總是存放最活躍的程式和資料,由於程式訪問的區域性性特徵,大多數情況下,cpu能直接從這個快取記憶體中取得指令和資料,而不必訪問主存。從而加快訪存速度。
我們寫程式的時候,如何來利用cache的特性呢?
下面以乙個雙重迴圈的不同寫法來比較其效能。
快取記憶體儲存器 cache
早期計算機層次結構 cpu暫存器 dram主儲存器和磁碟儲存。由於cpu和主存之間差距逐漸增大,便出現了小的sram快取記憶體儲存器於cpu暫存器檔案和主存之間,稱為l1快取記憶體 一級快取 cpu和主存之間效能差距繼續增大,便在l1快取記憶體和主存間出現了更大的快取記憶體,稱為l2快取記憶體。如圖...
快取記憶體Cache的作用
快取記憶體cache的作用 現在使用的絕大多數cpu都帶有快取記憶體 cache,有的甚至整合了多極快取 而我們選擇主機板時,板上的cache數量也是乙個重要的考慮因素。早期的486整合了4 8k的一級片內cache,而現在的pentium ii至強處理器不僅整合了32k一級片內cache,還將51...
儲存器 cpu快取記憶體1
現代儲存器一共包括以下幾種 暫存器直接和cpu進行互動資料的儲存器 速度最快 與cpu1級快取記憶體互動 cpu 1級快取記憶體 直接嵌在cpu內部,每個cpu獨有的 cpu 2級快取記憶體 在cpu外部,也是每個cpu獨有 cpu 3快取記憶體 所有cpu共享的快取 記憶體與快取記憶體互動 通過c...