Platform Technology
หน่�วยความจำาแคชCache memory
เน่��อหา
Introduction to cache memoryHit rate/Miss rateWrite PolicyReplacement algorithmMapping function
WHAT IS CACHE MEMORY A high speed memory closely connected to the
processor
ProcessorM ain
m em oryC ache
MULTILEVEL CACHEProcessor
M ainm em ory
C acheL2
C acheL1
Processor
M ainm em ory
C acheL2
C acheL1
ทำ��ไมต้�อง CACHE MEMORY?
หน่�วยคว�มจำ��หลั�กทำ��ง�น่ได้�ช้��ม�กเม��อเทำ�ยบก�บซี�พี�ย� ก�อปป ! ค��ใน่หน่�วยคว�มจำ��หลั�กม�ใส่�ใน่แคช้ก�อน่แลั�วค�อยให�
ซี�พี�ย�อ��งถึ&งหน่�วยคว�มจำ��แคช้ด้�วยคว�มเร็(วส่�ง โปร็แกร็มส่�วน่ใหญ่�เม��อใช้�หน่�วยคว�มจำ��ต้��แหน่�งหน่&�งแลั�ว ม�ก
จำะอ��น่ค��หน่�วยคว�มจำ��ต้��แหน่�งน่�!น่ๆ อ�กหลั�ยๆ คร็�!ง (locality of reference)
LOCALITY OF REFERENCE :EXAMPLE
void main (void){
int table[1024];for (i= 0; i<100000; i++)
k = i % 26;c = table[k]printf(“%d”,c);
}
น่.ย�มต้��งๆ ของ CACHE
Hit : โพีร็เซีส่เซีอร็0พีบข�อม�ลัใน่แคช้ Miss : โพีร็เซีส่เซีอร็0ไม�พีบข�อม�ลัใน่แคช้ Hit rate
จำ��น่วน่คร็�!งทำ��พีบข�อม�ลัใน่แคช้จำ��น่วน่ก�ร็แอกเซีส่หน่�วยคว�มจำ��แคช้
ทำ�!งหมด้
WRITE POLICYWrite back
เข�ยน่ข�อม�ลัลังใน่แคช้เทำ��น่�!น่ แลั�วค�อยไปเข�ยน่ลังหน่�วยคว�มจำ��หลั�กหลั�งยกเลั.กก�ร็ใช้�แคช้บลั�อกน่�!น่ๆ
ปร็ะส่.ทำธิ.ภ�พีส่�ง - ไม�เหม�ะก�บร็ะบบม�ลัต้.โพีร็เซีส่เซีอร็0
Write throughทำ4กคร็�!งทำ��เข�ยน่ข�อม�ลัใน่แคช้ ให�เข�ยน่ข�อม�ลัลังใน่
หน่�วยคว�มจำ��หลั�กด้�วยปร็ะส่.ทำธิ.ภ�พีต้���กว�� แต้�ส่�ม�ร็ถึใช้�ก�บร็ะบบม�ลัต้.
โพีร็เซีส่เซีอร็0ได้�
MULTIPROCESSOR
C ache
P rocesso r1
C ache
P rocesso r1
M a inm em ory
UNIFIED VS SEPARATED CACHE
Unified cache Keeping both program and data More simple and higher hit rate
Separate cache Keeps program in code cache Keeps data in data cache Suitable for Von-Neuman architecture
UNIFIED CACHE
ProcessorM ain
m em oryC ache
SEPARATED CACHE
ProcessorM ain
m em ory
codecache
datacache
VON-NEUMANN ARCHITECTURE AND CACHE
F etch D ecode E xecute W rite
F etch D ecode E xecute W rite
F etch D ecode E xecute W rite
F etch D ecode E xecute W rite
F etch D ecode E xecute W rite
1 c lock 1 c lock 1 c lock 1 c lock 1 c lock 1 c lock 1 c lock 1 c lock
PENTIUM PRO CACHE
REPLACEMENT ALGORITHM
แคช้ม�ขน่�ด้เลั(ก เม��อเทำ�ยบก�บหน่�วยคว�มจำ��หลั�ก ต้�องเอ�ของเก��ออกจำ�กแคช้เพี��อใส่�ข�อม�ลัทำ��ต้�องก�ร็ Least Recently used (LRU) Least Frequently Used (LFU) First-in-First-Out (FIFO)
CACHE MAPPING
Direct mapping Fully associative mapping Set associative mapping
DIRECT MAPPING
ง��ยต้�อก�ร็ส่ร็��ง ใช้�จำ��น่วน่บ.ต้ของ tag field น่�อย บลั�อก 0 , 128, 256, … , 3968 ไม�ส่�ม�ร็ถึอย��ใน่หน่�วย
คว�มจำ��พีร็�อมๆ ก�น่ได้�
DIRECT MAPPING
blo
ck0
blo
ck1
blo
ck1
27
blo
ck1
28
blo
ck1
29
blo
ck2
55
blo
ck2
56
blo
ck2
57
blo
ck3
83
blo
ck3
96
8
blo
ck3
96
9
blo
ck4
09
5
Ma
in m
em
ory
G roup0 G roup1 G roup2 G roup31
blo
ck 0
blo
ck 1
blo
ck 1
27
ca
ch
e
tag
tag
tag
tag b lock word
5 7 4
DIRECT MAPPING
blo
ck0
blo
ck1
blo
ck1
27
blo
ck1
28
blo
ck1
29
blo
ck2
55
blo
ck2
56
blo
ck2
57
blo
ck3
83
blo
ck3
96
8
blo
ck3
96
9
blo
ck4
09
5
Ma
in m
em
ory
G roup0 G roup1 G roup2 G roup31
blo
ck 1
28
blo
ck 3
96
9
blo
ck 3
83
ca
ch
e
1 31 2
tag b lock word
5 7 4
blo
ck2
58
blo
ck1
26
blo
ck 2
58
2
DIRECT MAPPING
blo
ck0
blo
ck1
blo
ck1
27
blo
ck1
28
blo
ck1
29
blo
ck2
55
blo
ck2
56
blo
ck2
57
blo
ck3
83
blo
ck3
96
8
blo
ck3
96
9
blo
ck4
09
5
Ma
in m
em
ory
G roup0 G roup1 G roup2 G roup31
blo
ck 1
28
blo
ck 3
96
9
blo
ck 4
09
5
ca
ch
e
1 31
31
tag b lock word
5 7 4
blo
ck2
58
blo
ck1
26
blo
ck 2
58
2
FULLY ASSOCIATIVE MAPPING
หน่�วยคว�มจำ��บลั�อกใด้ๆ ก(ต้�มส่�ม�ร็ถึอย��ใน่แคช้ต้��แหน่�งใด้ก(ได้�
ส่.!น่เปลั�องจำ��น่วน่เกทำใน่ก�ร็ส่ร็��งส่�งม�ก จำ��น่วน่บ.ต้ทำ��ต้�องก�ร็ใน่ tag field ม�จำ��น่วน่ม�ก
FULLY ASSOCIATIVE MAPPINGb
lock
0
blo
ck1
blo
ck4
09
5
Ma
in m
em
ory
ca
ch
e
tag
tag
tag
tag word
12 4
blo
ck2
blo
ck3
blo
ck4
09
3
blo
ck4
09
4
blo
ck 0
blo
ck i
blo
ck 1
27
blo
ck i
FULLY ASSOCIATIVE MAPPINGb
lock
0
blo
ck1
blo
ck4
09
5
Ma
in m
em
ory
ca
ch
e
2 i
40
93
tag word
12 4
blo
ck2
blo
ck3
blo
ck4
09
3
blo
ck4
09
4
blo
ck 2
blo
ck i
blo
ck 4
09
3
blo
ck i
SET-ASSOCIATIVE MAPPING
จำ�บข�อด้�ของ Fully-associative แลัะ Direct mapped ม�ร็วมก�น่
ส่�ม�ร็ถึออกแบบให�ม�หลั�ย way ทำ��ส่�ม�ร็ถึเก(บข�อม�ลั
2-WAY SET ASSOCIATIVE MAPPED
blo
ck0
blo
ck1
blo
ck6
3
blo
ck6
4
blo
ck6
5
blo
ck1
27
blo
ck1
28
blo
ck1
29
blo
ck2
55
blo
ck4
03
2
blo
ck4
03
3
blo
ck4
09
5
Ma
in m
em
ory
G roup0 G roup1 G roup2 G roup63
block 1
block 3
block 127
tag
tag
tag
tag set word
6 6 4
block 0
block 2
block 126
cache
tag
tag
tag
set0
set1
set63
2-WAY SET ASSOCIATIVE MAPPED
blo
ck0
blo
ck1
blo
ck6
3
blo
ck6
4
blo
ck6
5
blo
ck1
27
blo
ck1
28
blo
ck1
29
blo
ck2
55
blo
ck4
03
2
blo
ck4
03
3
blo
ck4
09
5
Ma
in m
em
ory
G roup0 G roup1 G roup2 G roup63
block 129
block 127
63
2
1
tag set word
6 6 4
block 64
block 65
block 63
cache
1
1
0
set0
set1
set63
block 4032
4-WAY SET ASSOCIATIVE MAPPEDb
lock
0
blo
ck1
blo
ck3
1b
lock
32
blo
ck3
3
blo
ck6
3
blo
ck6
4
blo
ck6
5
blo
ck9
5
blo
ck4
06
4
blo
ck4
06
5
blo
ck4
09
5
Ma
in m
em
ory
G roup0 G roup1 G roup2 G roup128
b lock 3
b lock 7
b lock 127
tag
tag
tag
tag set word
7 5 4
b lock 2
b lock 6
b lock 126
cache
tag
tag
tag
set0
set1
set31
b lock 1
b lock 5
b lock 125
tag
tag
tag
b lock 0
b lock 4
b lock 124
cache
tag
tag
tag
4-WAY SET ASSOCIATIVE MAPPEDb
lock
0
blo
ck1
blo
ck3
1
blo
ck3
2
blo
ck3
3
blo
ck6
3
blo
ck6
4
blo
ck6
5
blo
ck9
5
blo
ck4
06
4
blo
ck4
06
5
blo
ck4
09
5
Ma
in m
em
ory
G roup0 G roup1 G roup2 G roup127
block 4064
block i
b lock 95
127
tag
2
block 64
block 4065
block 4095
cache
2
127
127
set0
set1
set31
block 32
block 33
block 31
1
1
0
block 0
block 1
block 63
cache
0
0
1
tag set word
7 5 4
PROCESSOR CACHE COMPARISON
C
AC
HE
OF
INTEL
CELE
RO
N
CACHE OF INTEL CELERON
C
AC
HE
OF
AM
DATH
LON
CACHE OF AMD ATHLON
HOMEWORK จำงออกแบบหน่�วยคว�มจำ��แคช้ของโพีร็เซีส่เซีอร็0ทำ��ส่�ม�ร็ถึ
อ��งหน่�วยคว�มจำ��ได้� 64 ก.โลัไบต้0 โด้ยก��หน่ด้ให�หน่�วยคว�มจำ��แคช้ม�ขน่�ด้ 512 ไบต้0
จำงออกแบบหน่�วยคว�มจำ��แคช้ใน่ร็�ปแบบต้�อไปน่�! Direct mapped Fully associative 2-way set associative 4-way set associative