880 likes | 2.06k Views
計算機組織與結構 - 效能設計. 第四章 快取記憶體 (Cache memory). 電腦記憶體概述. 記憶體 特性 位置 容量 傳送單位 存取方法 效能 製材種類 物理特性 組織. 1 、 依位置分類. 處理器 暫存器 (Register) 內部 主記憶體 (Main memory) 外部 次要記憶體 (Secondary memory). 2 、依容量分類. 字組長度 記憶體組織最 ” 自然 ” 的單位 1 位元組 = 8 位元 16 位元電腦, 1 字組 = 16 位元 32 位元電腦, 1 字組 = 32 位元
E N D
計算機組織與結構-效能設計 第四章 快取記憶體 (Cache memory)
電腦記憶體概述 • 記憶體特性 • 位置 • 容量 • 傳送單位 • 存取方法 • 效能 • 製材種類 • 物理特性 • 組織
1、依位置分類 • 處理器 • 暫存器(Register) • 內部 • 主記憶體(Main memory) • 外部 • 次要記憶體(Secondary memory)
2、依容量分類 • 字組長度 • 記憶體組織最”自然”的單位 • 1位元組 = 8 位元 • 16位元電腦,1字組 = 16 位元 • 32位元電腦,1字組 = 32 位元 • 字組數目 • 或 位元組數目
3、依傳送單位分類 • 內部 • 通常受控於資料匯流排寬度 • 可能是位元組或字組 • 外部 • 通常使用比字組更大的區塊
4、依存取方法(1) 分類 • 循序(Sequential) • 從開頭有順序地往下讀取 • 存取時間跟上個資料、目前資料位置有關 • 比如:磁帶 • 直接(Direct) • 以唯一位址標示各個區塊 • 直接跳到鄰近區域,再依序搜尋 • 存取時間跟上個資料、目前資料位置有關 • 比如:磁碟
依存取方法(2)分類 • 隨機 (Random) • 唯一連線的定址機制 • 存取指定位置的時間,與先前存取無關 • 比如:RAM • 關聯(Associative) • 資料能否取出,依據其內容的某些位元,而非位址 • 存取指定位置的時間,與先前存取無關 • 比如:cache
5、依效能分類 • 存取時間(Access time) • 從位址出現到抓取正確資料為止的時間 • 週期時間(Cycle time) • 在下次存取之前,”復原”記憶體所需要的時間 • 週期時間=存取時間+ 復原時間 • 傳送率(Transfer rate) • 資料進出記憶體的速度
6、依製材種類分類 • 半導體(Semiconductor) • RAM • 磁面物質(Magnetic) • 磁碟& 磁帶 • 光學材料(Optical) • CD & DVD • 磁光(Magnetic-optical) • MO
7、依物理特性分類 • 揮發性/非揮發性 • 依靠電力與否(又稱為依電性)! • 可抹除/不可抹除 • 能否覆寫!
8、依組織分類 • 集合眾多位元成為字組的方式 • 也就是 • 字組內部位元實際排列的方式 • 通常並不明顯,比如:交錯排列
記憶體階層 • CPU內部 • 暫存器 • 內部主要記憶體 • 一或多階快取記憶體 • “RAM” • 外部次要記憶體(回存裝置) • 磁碟、光碟 • 磁帶、MO
記憶體階層圖 • 暫存器 • 快取記憶體 • L1 快取、L2快取 • RAM • DRAM、SDRAM • 磁碟 • 磁碟快取、硬碟 • 光碟 • CD-ROM、CD-RW • DVD-ROM、DVD-RW • 磁帶 • MO
評量方式 • 容量多大? • 速度多快? • 價格多貴?
最快速的電腦 • DRAM速度慢 • 一般的主記憶體採用DRAM架構 • SRAM速度快 • 快取記憶體採用SRAM架構 • 當然可以只用SRAM建造電腦,這種電腦將非常快速。而且,這種電腦也不需要快取記憶體 • 如何“快取”快取記憶體?!然而,這種電腦肯定很貴! • 速度:SRAM>DDR-SDRAM>SDRAM>DRAM
區域存取性(Locality) • 指令執行傾向存取其附近的程式記憶體,比如:迴圈,這種局部特性稱為區域存取性,也就是:程式傾向區域存取性。
快取觀念 • CPU 請求某些記憶體位置的內容,先檢查該筆資料是否放在快取記憶體,如果放在快取記憶體, 則快取之(速度快)。 • 反之,如果不在快取記憶體, 則以區塊方式讀取主記憶體內容,並放到快取記憶體內,然後,再從快取記憶體把該資料送到CPU。
快取記憶體原理 • 單階快取:根據區域存取性,放到快取記憶體的指令區塊,很可能再被存取,因而提昇整體存取速率。
三階快取 • 三階快取組織的用法,L2快取速度通常比L1慢、容量則比較大;同樣地,L3快取速度通常比L2慢、容量則比較大。
快取記憶體設計 • 快取設計要素 • 快取位址 • 快取大小 • 映射函數 • 置換演算法 • 寫入策略 • 快取線路大小 • 快取數目
1、快取位址 • 幾乎所有的非嵌入式處理器,以及大部分的嵌入式處理器,都使用虛擬記憶體。 • 虛擬記憶體允許程式以邏輯觀點來定址記憶體,這種使用虛擬記憶體的方式與實體記憶體大小無關。 • 虛擬記憶體是電腦系統內部記憶體管理的一種技術。它使得應用程式認為它擁有連續的可用的內部記憶體(一個連續完整的位址空間),而實際上,它通常是被分隔成多個實體記憶體碎片,還有部分暫時儲存在外部磁碟記憶體上,在需要時進行資料交換。
2、快取大小 • 成本 • 愈多快取記憶體愈貴 • 速度 • 愈多快取記憶體愈快( 但有上限) • 定址變大後,檢查資料相對費時
3、映射(Mapping)函數 • <續上頁範例> • 16K個快取線路 vs 4M個記憶區塊 • 因此需要映射函數 把記憶區塊映射至快取線路 • 通常有三種方法: • 直接映射 • 關聯映射 • 集合關聯映射
範例 4.1 • 先檢視其基本結構,再依序地探討: • 快取記憶體容量為64 KB。 • 主記憶體和快取記憶體之間的資料傳輸,以4 B區塊為單位。相對而言,這表示快取記憶體會有條線路,來選擇4 B區塊。 • 主記憶體容量為16 MB,總共有24個可定址的位元。基於映射需求,可以將主記憶體分割成4 M個4 B區塊。
直接映射(Direct mapping)(1) • 將記憶區塊直接映射到某個固定的快取線路 • 由於記憶區塊遠多於快取線路,因此直接映射關係是多對一的函數 • 記憶區塊由其實際位址決定,總是對號入座,固定地被指派給某個快取線路 • 通常,採用循環分配的方式,將快取線路重複指派給記憶區塊 • 雖然,快取線路可能配置給n個記憶區塊,但依據區域存取性,快取線路仍將提供最可能的記憶區塊。 • 比如:n=4M/16K=256
直接映射(2) • 最簡單的方法:直接將主記憶體內的每個區塊映射到唯一的快取線路,以下表示: i = j modulo m 其中 modulo ( 稱為 “模”) 代表餘數除法 i = 快取線路編號 j = 主記憶體區塊編號 m = 快取線路的總數 v = 集合數量 k = 每個集合之快取線路數量
直接映射(3) 主記憶體前m個區塊的每個主記憶體區塊映射到唯一的快取線。接續後面的m個主記憶體區塊,同樣也以相同方式映射到快取,也就是說,主記憶體區塊Bm映射到快取線L0,區塊Bm+1映射到快取線L1,依此類推…。
24 位元位址 2 位元字組(即4B區塊) 22 位元區塊(8位元標籤+14 位元線路) 如果有多個區塊映射至同一個快取線路,會以不同的標籤(tag)標示 只要比對快取線路和標籤,就可以得知快取內容 標籤將指向主記憶體內某個唯一的區塊 8 14 2 標籤s-r 線路r 字組w 24 位元 直接映射位址格式
直接映射結論 • 位址長度= (s + w) 位元 • 可定址單元總數= 2s+w字組或位元組 • 記憶區塊大小= 快取線路大小= 2w字組或位元組 • 主記憶體區塊總數= 2s+ w/2w = 2s • 快取線路總數= m = 2r • 標籤大小= (s – r) 位元
直接映射快取線路表 • 採用循環分配方式,指派記憶區塊。
直接映射優缺點 • 簡單 • 不貴 • 區塊總是被指派到固定的位置 • 如果程式不斷地輪流存取兩個擁有相同快取線路的區塊,快取記憶體內會持續地交換的這二塊區塊(就是所謂的顛簸thrashing現象),則有非常高的快取失誤,使得擊中率因而降低不少。
關聯映射(Associative mapping) • 關聯映射又稱為完全(fully)關聯映射 • 不管什麼記憶區塊,總是隨意入座、沒有任何限制,可以隨時指派給任何一條快取線路 • 可以把記憶體位址解譯成標籤和字組兩部分 • 標籤將指向主記憶體內某個唯一的區塊 • 快取比較電路會檢查每個快取線路的標籤,檢查看看是否相符! • 快取比較電路相對複雜、昂貴!
標籤 22 位元 字組 2 位元 關聯映射位址格式 • 22位元標籤和32位元資料區塊一起儲存於快取線路 • 比較標籤欄位,可以得知是否已找到資料 • 比如: • 位址標籤資料快取線路 • FFFFFC FFFFFC 24682468 3FFF
關聯對映結論 • 位址長度= (s + w) 位元 • 可定址單元數目= 2s+w字組或位元組 • 記憶區塊= 快取線路= 2w字組或位元組 • 主記憶體區塊數目= 2s+w/2w = 2s • 快取線路數目= 未定 • 標籤大小= s 位元
範例4.2b • 主記憶體位址由22位元的標籤和2位元的字組組成,其中22位元標籤必須和32位元的區塊資料一起儲存在每個快取線路,注意位址的最左邊22位元 ( 最大有效 ) 構成標籤,因此24位元的十六進制位址16339C具有22位元的標號058CE7,這可從二進制位的表示法中清楚地看出:
集合關聯映射 • 集合關聯映射(Set associative mapping)融合直接映射和關聯映射兩者的優點,改良其缺點。 • 集合關聯映射採取 • 非對號入座,而是對號入廳(集合) (類似直接映射) • 隨意分配集合內的位置(快取線路) (類似完全關聯映射)
K向集合關聯映射 • 假設:快取記憶體被分割成v個集合,每個集合內含k條快取線路,因此,總共有vk個快取線路,因此,記憶區塊會被對映到某個固定的集合的任意快取線路上。 • 如果k=2,稱為雙向集合關聯 • 如果k=4,稱為四向集合關聯 • 如果k=8,稱為八向集合關聯
集合關聯映射結論 • 位址長度= (s + w) 位元 • 可定址單元數目= 2s+w 位元組 • 記憶區塊= 快取線路= 2w位元組 • 主記憶體區塊數目= 2d • 集合內快取線路數目= k • 集合數目v = 2d • 快取線路總數= kv = k * 2d • 標籤大小= (s – d) 位元