快取記憶體Cache原理之 1 儲存器層次結構

2021-09-24 02:37:00 字數 2003 閱讀 4700

儲存器層次結構

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...