計算機組織與結構 - 效能設計

73
計計計計計計計計 - 計計計計 計計計 計計計計(Cache memory) 1

description

計算機組織與結構 - 效能設計. 第四章 快取記憶體 (Cache memory). 電腦記憶體概述. 記憶體 特性 位置 容量 傳送單位 存取方法 效能 製材種類 物理特性 組織. 1 、 依位置分類. 處理器 暫存器 (Register) 內部 主記憶體 (Main memory) 外部 次要記憶體 (Secondary memory). 2 、依容量分類. 字組長度 記憶體組織最 ” 自然 ” 的單位 1 位元組 = 8 位元 16 位元電腦, 1 字組 = 16 位元 32 位元電腦, 1 字組 = 32 位元 - PowerPoint PPT Presentation

Transcript of 計算機組織與結構 - 效能設計

Page 1: 計算機組織與結構 - 效能設計

計算機組織與結構 -效能設計

第四章快取記憶體 (Cache memory)

1

Page 2: 計算機組織與結構 - 效能設計

電腦記憶體概述 記憶體特性

1. 位置2. 容量3. 傳送單位4. 存取方法5. 效能6. 製材種類 7. 物理特性 8. 組織

2

Page 3: 計算機組織與結構 - 效能設計

1 、依位置分類處理器

暫存器 (Register)內部

主記憶體 (Main memory)外部

次要記憶體 (Secondary memory)

3

Page 4: 計算機組織與結構 - 效能設計

2 、依容量分類字組長度

記憶體組織最”自然”的單位 1 位元組 = 8 位元 16 位元電腦, 1 字組 = 16 位元 32 位元電腦, 1 字組 = 32 位元

字組數目 或 位元組數目

4

Page 5: 計算機組織與結構 - 效能設計

3 、依傳送單位分類內部

通常受控於資料匯流排寬度可能是位元組或字組

外部通常使用比字組更大的區塊

5

Page 6: 計算機組織與結構 - 效能設計

4 、依存取方法 (1) 分類循序 (Sequential)

從開頭有順序地往下讀取 存取時間跟上個資料、目前資料位置有關 比如:磁帶

直接 (Direct) 以唯一位址標示各個區塊 直接跳到鄰近區域,再依序搜尋 存取時間跟上個資料、目前資料位置有關 比如:磁碟

6

Page 7: 計算機組織與結構 - 效能設計

依存取方法 (2) 分類隨機 (Random)

唯一連線的定址機制 存取指定位置的時間,與先前存取無關 比如: RAM

關聯 (Associative) 資料能否取出,依據其內容的某些位元,而非位址

存取指定位置的時間,與先前存取無關 比如: cache

7

Page 8: 計算機組織與結構 - 效能設計

5 、依效能分類存取時間 (Access time)

從位址出現到抓取正確資料為止的時間週期時間 (Cycle time)

在下次存取之前,”復原”記憶體所需要的時間 週期時間 = 存取時間 + 復原時間

傳送率 (Transfer rate) 資料進出記憶體的速度

8

Page 9: 計算機組織與結構 - 效能設計

6 、依製材種類分類半導體 (Semiconductor)

RAM磁面物質 (Magnetic)

磁碟 & 磁帶光學材料 (Optical)

CD & DVD磁光 (Magnetic-optical)

MO

9

Page 10: 計算機組織與結構 - 效能設計

7 、依物理特性分類揮發性 / 非揮發性

依靠電力與否(又稱為依電性)!可抹除 / 不可抹除

能否覆寫!

10

Page 11: 計算機組織與結構 - 效能設計

8 、依組織分類集合眾多位元成為字組的方式也就是字組內部位元實際排列的方式通常並不明顯,比如:交錯排列

11

Page 12: 計算機組織與結構 - 效能設計

CPU 內部 暫存器

內部主要記憶體 一或多階快取記憶體 “RAM”

外部次要記憶體 ( 回存裝置 ) 磁碟、光碟 磁帶、 MO

12

記憶體階層

Page 13: 計算機組織與結構 - 效能設計

記憶體階層圖

13

•暫存器•快取記憶體

—L1 快取、 L2 快取•RAM

—DRAM 、 SDRAM•磁碟

—磁碟快取、硬碟•光碟

—CD-ROM 、 CD-RW—DVD-ROM 、 DVD-RW

•磁帶•MO

Page 14: 計算機組織與結構 - 效能設計

評量方式容量多大 ?速度多快 ?價格多貴 ?

14

Page 15: 計算機組織與結構 - 效能設計

最快速的電腦 DRAM 速度慢

一般的主記憶體採用 DRAM 架構 SRAM 速度快

快取記憶體採用 SRAM 架構 當然可以只用 SRAM 建造電腦,這種電腦將非常快速。而且,這種電腦也不需要快取記憶體

如何“快取”快取記憶體 ? !然而,這種電腦肯定很貴!

速度: SRAM>DDR-SDRAM>SDRAM>DRAM15

Page 16: 計算機組織與結構 - 效能設計

區域存取性 (Locality)指令執行傾向存取其附近的程式記憶體,比如:迴圈,這種局部特性稱為區域存取性,也就是:程式傾向區域存取性。

16

Page 17: 計算機組織與結構 - 效能設計

CPU 請求某些記憶體位置的內容,先檢查該筆資料是否放在快取記憶體,如果放在快取記憶體 , 則快取之 ( 速度快 ) 。

反之,如果不在快取記憶體 , 則以區塊方式讀取主記憶體內容,並放到快取記憶體內,然後,再從快取記憶體把該資料送到CPU 。

17

快取觀念

Page 18: 計算機組織與結構 - 效能設計

兩階記憶體的效能表現

18

Page 19: 計算機組織與結構 - 效能設計

快取記憶體原理 單階快取 : 根據區域存取性,放到快取記憶體的指令區塊,很可能再被存取,因而提昇整體存取速率。

19

Page 20: 計算機組織與結構 - 效能設計

三階快取

20

三階快取組織的用法, L2 快取速度通常比 L1 慢、容量則比較大;同樣地, L3 快取速度通常比 L2慢、容量則比較大。

Page 21: 計算機組織與結構 - 效能設計

典型快取結構

21

Page 22: 計算機組織與結構 - 效能設計

快取記憶體設計

22

快取設計要素1. 快取位址2. 快取大小3. 映射函數 4. 置換演算法5. 寫入策略6. 快取線路大小7. 快取數目

Page 23: 計算機組織與結構 - 效能設計

1、快取位址幾乎所有的非嵌入式處理器,以及大部分的嵌入式處理器,都使用虛擬記憶體。

虛擬記憶體允許程式以邏輯觀點來定址記憶體,這種使用虛擬記憶體的方式與實體記憶體大小無關。

虛擬記憶體是電腦系統內部記憶體管理的一種技術。它使得應用程式認為它擁有連續的可用的內部記憶體 ( 一個連續完整的位址空間 ) ,而實際上,它通常是被分隔成多個實體記憶體碎片,還有部分暫時儲存在外部磁碟記憶體上,在需要時進行資料交換。

23

Page 24: 計算機組織與結構 - 效能設計

邏輯快取

24

Page 25: 計算機組織與結構 - 效能設計

實體快取

25

Page 26: 計算機組織與結構 - 效能設計

2、快取大小成本

愈多快取記憶體愈貴速度

愈多快取記憶體愈快 ( 但有上限 ) 定址變大後,檢查資料相對費時

26

Page 27: 計算機組織與結構 - 效能設計

3、映射 (Mapping)函數 <續上頁範例 >

16K 個快取線路 vs 4M 個記憶區塊因此需要映射函數 把記憶區塊映射至快取線路通常有三種方法:

直接映射 關聯映射 集合關聯映射

27

Page 28: 計算機組織與結構 - 效能設計

範例 4.1先檢視其基本結構,再依序地探討:快取記憶體容量為 64 KB 。主記憶體和快取記憶體之間的資料傳輸,

以 4 B 區塊為單位。相對而言,這表示快取記憶體會有條線路,來選擇 4 B 區塊。

主記憶體容量為 16 MB ,總共有 24 個可定址的位元。基於映射需求,可以將主記憶體分割成 4 M 個 4 B 區塊。

28

Page 29: 計算機組織與結構 - 效能設計

將記憶區塊直接映射到某個固定的快取線路 由於記憶區塊遠多於快取線路,因此直接映射關係是多對一的函數

記憶區塊由其實際位址決定,總是對號入座,固定地被指派給某個快取線路

通常,採用循環分配的方式,將快取線路重複指派給記憶區塊

雖然,快取線路可能配置給 n 個記憶區塊,但依據區域存取性,快取線路仍將提供最可能的記憶區塊。 比如: n=4M/16K=256

29

直接映射 (Direct mapping)(1)

Page 30: 計算機組織與結構 - 效能設計

直接映射 (2)

最簡單的方法:直接將主記憶體內的每個區塊映射到唯一的快取線路,以下表示:

i = j modulo m

其中 modulo ( 稱為 “模” ) 代表餘數除法i = 快取線路編號j = 主記憶體區塊編號m = 快取線路的總數v = 集合數量k = 每個集合之快取線路數量

30

Page 31: 計算機組織與結構 - 效能設計

直接映射 (3)

31

主記憶體前 m 個區塊的每個主記憶體區塊映射到唯一的快取線。接續後面的 m 個主記憶體區塊,同樣也以相同方式映射到快取,也就是說,主記憶體區塊 Bm映射到快取線 L0 ,區塊 Bm+1映射到快取線 L1 ,依此類推…。

Page 32: 計算機組織與結構 - 效能設計

直接映射快取記憶體組織

32

Page 33: 計算機組織與結構 - 效能設計

直接映射位址格式

33

24 位元位址 2 位元字組 ( 即 4B 區塊 ) 22 位元區塊 (8 位元標籤 +14 位元線路 ) 如果有多個區塊映射至同一個快取線路,會以不同的

標籤 (tag) 標示 只要比對快取線路和標籤,就可以得知快取內容 標籤將指向主記憶體內某個唯一的區塊

標籤 s-r 線路 r 字組 w

8 14 2

24 位元

Page 34: 計算機組織與結構 - 效能設計

直接映射結論位址長度 = (s + w) 位元可定址單元總數 = 2s+w 字組或位元組記憶區塊大小 = 快取線路大小 = 2w字組或位元組

主記憶體區塊總數 = 2s+ w/2w = 2s

快取線路總數 = m = 2r

標籤大小 = (s – r) 位元

34

Page 35: 計算機組織與結構 - 效能設計

直接映射快取線路表

35

採用循環分配方式,指派記憶區塊。

快取線路 指派的主記憶體區塊

0 0, m, 2m, …, 2s-m

1 1, m+1, 2m+1, …, 2s-m+1

… …

m-1 m-1, 2m-1, 3m-1, …, 2s-1

Page 36: 計算機組織與結構 - 效能設計

直接映射範例

36

Page 37: 計算機組織與結構 - 效能設計

直接映射優缺點簡單不貴區塊總是被指派到固定的位置如果程式不斷地輪流存取兩個擁有相同快取線路的區塊,快取記憶體內會持續地交換的這二塊區塊(就是所謂的顛簸 thrashing

現象),則有非常高的快取失誤,使得擊中率因而降低不少。

37

Page 38: 計算機組織與結構 - 效能設計

關聯映射又稱為完全 (fully) 關聯映射 不管什麼記憶區塊,總是隨意入座、沒有任何限制,可以隨時指派給任何一條快取線路

可以把記憶體位址解譯成標籤和字組兩部分 標籤將指向主記憶體內某個唯一的區塊 快取比較電路會檢查每個快取線路的標籤,檢查看看是否相符!

快取比較電路相對複雜、昂貴!

38

關聯映射 (Associative mapping)

Page 39: 計算機組織與結構 - 效能設計

關聯映射情形

39

Page 40: 計算機組織與結構 - 效能設計

完全關聯映射快取組織

40

Page 41: 計算機組織與結構 - 效能設計

關聯映射位址格式

22 位元標籤和 32 位元資料區塊一起儲存於快取線路

比較標籤欄位,可以得知是否已找到資料 比如:

位址 標籤 資料 快取線路

FFFFFC FFFFFC 24682468 3FFF41

標籤 22 位元 字組 2 位元

Page 42: 計算機組織與結構 - 效能設計

關聯對映結論位址長度 = (s + w) 位元可定址單元數目 = 2s+w字組或位元組記憶區塊 = 快取線路 = 2w字組或位元組主記憶體區塊數目 = 2s+w/2w = 2s

快取線路數目 = 未定標籤大小 = s 位元

42

Page 43: 計算機組織與結構 - 效能設計

完全關聯映射範例 4.2b

43

Page 44: 計算機組織與結構 - 效能設計

範例 4.2b 主記憶體位址由 22 位元的標籤和 2 位元的字組組成,其中

22 位元標籤必須和 32 位元的區塊資料一起儲存在每個快取線路,注意位址的最左邊 22 位元 ( 最大有效 ) 構成標籤,因此 24 位元的十六進制位址 16339C具有 22 位元的標號 058CE7 ,這可從二進制位的表示法中清楚地看出:

44

記憶體位址 0001 0110 0011 0011 1001 1100 二進位

1 6 3 3 9 C 十六進位

標籤 ( 最左邊 22 位元 )

00 0101 1000 1100 1110 0111 二進位

0 5 8 C E 7 十六進位

Page 45: 計算機組織與結構 - 效能設計

集合關聯映射 (Set associative mapping)融合直接映射和關聯映射兩者的優點,改良其缺點。

集合關聯映射採取 非對號入座,而是對號入廳 ( 集合 )

( 類似直接映射 ) 隨意分配集合內的位置 ( 快取線路 )

( 類似完全關聯映射 )

45

集合關聯映射

Page 46: 計算機組織與結構 - 效能設計

K 向集合關聯映射假設:快取記憶體被分割成 v 個集合,每個集合內含 k條快取線路,因此,總共有 vk 個快取線路,因此,記憶區塊會被對映到某個固定的集合的任意快取線路上。

如果 k=2 ,稱為雙向集合關聯 如果 k=4 ,稱為四向集合關聯 如果 k=8 ,稱為八向集合關聯

46

Page 47: 計算機組織與結構 - 效能設計

v 個關聯映射快取

47

Page 48: 計算機組織與結構 - 效能設計

k 個直接映射快取

48

Page 49: 計算機組織與結構 - 效能設計

k 向集合關聯快取組織

49

Page 50: 計算機組織與結構 - 效能設計

集合關聯映射結論位址長度 = (s + w) 位元可定址單元數目 = 2s+w 位元組記憶區塊 = 快取線路 = 2w 位元組主記憶體區塊數目 = 2d

集合內快取線路數目 = k集合數目 v = 2d

快取線路總數 = kv = k * 2d

標籤大小 = (s – d) 位元50

Page 51: 計算機組織與結構 - 效能設計

範例 4.2c

51

Page 52: 計算機組織與結構 - 效能設計

範例 4.2c 上圖顯示每個集合兩條快取線路的集合關聯映射,也就是所謂的雙向 (two-way) 集合關聯映射, 13 位元的集合碼可指出唯一的集合,同時也指出主記憶體的區塊號碼,即modulo ,因而決定區塊所映射到的快取線路,因此主記憶體區塊 000000, 008000, ……, FF8000等映射到快取記憶體集合 0 ,任何一塊區塊都能載入到集合二條快取線路的其中一條。

請注意,沒有任何二塊映射至相同快取集合的區塊,會有相同的標籤號碼,為了順利讀取作業, 13 位元集合碼通常用來決定該檢查那兩條快取線路集合,而該集合內的二條快取線路,將會與欲存取位址的標籤號碼作比對檢查。

52

Page 53: 計算機組織與結構 - 效能設計

4、置換演算法 (1) :直接映射無法選擇,也不必選擇每個區塊總是對映到某條固定的快取線路置換演算法

總是把舊區塊刪掉,加入新區塊

53

Page 54: 計算機組織與結構 - 效能設計

置換演算法最好使用硬體建構,以求高速 LRU ( 近來無用法 )

哪一個區塊最近沒用過,置換之! FIFO ( 先進先出法 )

把在快取內最久的區塊,置換之! LFU( 最罕使用法 )

把在快取內最少使用的區塊,置換之! 隨機置換法

亂數隨意選擇,置換之!54

置換演算法 (2): 完全關聯和集合關聯

Page 55: 計算機組織與結構 - 效能設計

5 、寫入策略 更新主記憶體,覆寫相關的快取區塊 通常有兩種寫入策略:

寫透策略 寫回策略

問題在於: 多重處理器各自擁有其快取記憶體 I/O 裝置也可能直接定址主記憶體

以上這兩種情況可能使快取無法一致性。此即,快取一致性 (Cache coherent)問題!

55

Page 56: 計算機組織與結構 - 效能設計

寫透策略寫透動作會把資料同時寫入快取記憶體和主記憶體兩者。

防止發生快取一致性的方法 在多重 CPU 下,監督主記憶體流量,一旦發現有寫透動作,則必須設法更新其它快取記憶體的複本資料

然而,這導致更大的資料流量拖慢整個寫入作業

56

Page 57: 計算機組織與結構 - 效能設計

寫回策略避免不必要的交通流量,通常只寫入快取記憶體,而不立刻更新主記憶體。

更換快取線路之前,才會把快取記憶體內容,寫入主記憶體。 更新快取的動作會設定 Update 位元。 當快取線路即將被置換之前,而且 Update 位元也被設定,則該區塊才須寫回主記憶體。

其它快取可能無法同步地更新這個資料 I/O模組要進行存取,最好也能經由快取記憶體經驗顯示:筆記型電腦的寫入記憶體動作佔所有記憶體存取 15%

57

Page 58: 計算機組織與結構 - 效能設計

6、快取線路大小每當取出一塊資料區塊,載入到快取記憶體後,則不只是想要的字組會被取出,鄰近的字組也會一併地取出。

根據區域存取原則,這些鄰近的字組極有可能在稍後也會被存取。所以當區塊由非常小增大時,快取擊中率一開始會增加,然而雖然區塊增大,會載入較多有用的資料到快取記憶體,但是隨著區塊變得非常大時,快取擊中率將開始降低。

58

Page 59: 計算機組織與結構 - 效能設計

區塊影響 區塊變大,導致快取記憶體所能容納的區塊數減少,由於區塊擷取動作會覆蓋快取記憶體內較舊的內容,如果區塊太少的話,則可能在短時間內,就會覆寫剛剛所擷取的資料。

區塊變大,則額外所加入的字組會離所要求的字組愈遠,因為區域存取觀念,愈遠愈比較不會被使用。

59

Page 60: 計算機組織與結構 - 效能設計

7、快取數目早期只有一個快取記憶體,近來,多個快取記憶體已經成為常態。

通常注意兩個層面: 快取記憶體的階層數

L1( 第一階 ) 快取 L2( 第二階 ) 快取

整合型 / 分離型快取 整合型:同時負責指令快取與資料快取 分離型:指令快取與資料快取分開快取

60

Page 61: 計算機組織與結構 - 效能設計

晶片內建快取記憶體晶片內建快取記憶體 (on-chip cache) 減少處理器在外部匯流排的活動,因而加快執行時間,提昇整體系統的效能表現。

換句話說,一旦所需要的指令或資料,可以在晶片內建快取中找到時,就會取消對外部匯流排的存取動作,由於處理器晶片內部的資料路徑較短 ( 相對外部匯流長度 ) ,因此晶片內建快取記憶體的存取速度將會比零等待 (zero-wait) 狀態的匯流排週期還要快。

61

Page 62: 計算機組織與結構 - 效能設計

L2 快取記憶體 對於晶片外的 L2 快取記憶體而言,許多設計並不使用系統匯流排,來當作處理器和 L2 快取的資料路徑,而是另外再加一個獨立分開的資料路徑,來降低原有系統匯流排的負擔。

其次,為了縮減處理器的組件,許多處理器甚至於會把 L2 快取併入處理器晶片內部,以便改善效能。

62

Page 63: 計算機組織與結構 - 效能設計

二階快取之整體擊中率

63

虛線為 16KB 的 L1 快取實線為 8KB 的 L1快取

Page 64: 計算機組織與結構 - 效能設計

80386 :無晶片內建快取記憶體 80486 : 8KB 快取、 16B 快取線路、四向集合關聯 Pentium系列:兩個 L1 快取 ( 一個資料快取一個指令快取 )

Pentium II : 512KB L2 快取、 128B 快取線路、八向集合關聯

Pentium III :可加入外部 L3 快取 Pentium 4 :

16KB L1 快取、 64B 快取線路、四向集合關聯 L2 和 L3 快取採用 128B 快取線、八向集合關聯映射。 L3 快取移入晶片內部 64

Pentium 4 快取 ( 記憶體 ) 組織

Page 65: 計算機組織與結構 - 效能設計

Pentium 4 方塊圖 (簡化圖 )

65

Page 66: 計算機組織與結構 - 效能設計

Pentium 4 核心主元件擷取 /解碼單元

擷取 L2 快取的指令解碼微運算儲存於 L1 指令快取內

非順序執行邏輯 排列微運算 受於於資料相依性和資源運用情況 可能推估執行

66

Page 67: 計算機組織與結構 - 效能設計

Pentium 4 核心主元件 執行單元

執行微運算擷取 L1 快取的資料 結果存入暫存器

記憶子系統 L2 快取系統匯流排 快取失誤,則存取主記憶體和 I/O 資源

67

Page 68: 計算機組織與結構 - 效能設計

Pentium 4 設計 Pentium 指令太長、太複雜。但是, Pentium 4 指令能在

L1 指令快取之前,解碼成類似 RISC 的精簡微運算碼 固定微運算碼,有利於超純量管線和排程 使用排程技術和管線技術來強化效能

L1 資料快取可以採用寫回技術,也可規劃成寫透技術,通常受控於控制暫存器的兩個位元 CD = cache disable( 快取禁能 ) NW = not write through( 非寫透 )

還有兩個指令可以控制資料快取 INVD 可以清除內部快取 WBINVD會寫回 -清除內部快取

68

Page 69: 計算機組織與結構 - 效能設計

核心 類型 快取 (KB)快取線(字組 )

關聯 位置寫入緩衝 (字組 )

ARM720T 整合 8 4 4向 邏輯 8

ARM920T 分離 16/16 D/I 864向 邏輯 16

ARM926EJ-S 分離 4-128/4-128 D/I 8 4向 邏輯 16

ARM1022E 分離 16/16 D/I 864向 邏輯 16

ARM1026EJ-S 分離 4-128/4-128 D/I 8 4向 邏輯 8

Intel StrongARM

分離 16/16 D/I 432向 邏輯 32

Intel Xscale 分離 32/32 D/I 832向 邏輯 32

ARM 1136JF-S 分離 4-64/4-64 D/I 8 4向 實體 32 69

ARM 快取組織

Page 70: 計算機組織與結構 - 效能設計

寫入緩衝 ARM 快取結構最引人注意的設計:就是使用

FIFO ( first-in-first-out )寫入緩衝,來強化記憶體寫入效能。

寫入緩衝被放置於快取和主記憶體之間,內含位址和資料字組。

相對於快取容量而言,寫入緩衝很小,可容納四組獨立位址。雖然也可以對分頁做局部禁能,但典型來看,寫入緩衝對所有主記憶體都是致能的。

70

Page 71: 計算機組織與結構 - 效能設計

ARM 快取和寫入緩衝組織

71

Page 72: 計算機組織與結構 - 效能設計

寫入緩衝運作方式 當處理器執行寫入程序時,寫入緩衝會以處理器時脈速度高速處理資料,此時處理器仍可持續執行其它動作,寫回程序開始把寫入的資料從快取轉移到寫入緩衝,然後寫入緩衝平行地執行外部寫入程序。

如果寫入緩衝滿了,處理器會暫停,等到寫入緩衝空出足夠的空間,才繼續執行。當處理器執行非寫入程序時,寫入緩衝繼續寫回主記憶體,直到寫入緩衝完全空下為止。

72

Page 73: 計算機組織與結構 - 效能設計

本章結束李鴻鵬老師整理