2015. április 23.
Izsó Tamás Cache/ 1
Izsó Tamás Cache/ 2
cache mérete: 256 byte cache block mérete : 64 byte Direct leképzés:
index eltolás TAG
Egy cache bejegyzés Összesen 4 bejegyzés van.
Egy cache bejegyzés 64 byte-ot tartalmaz valid bit és fizikai cím
felső része Cache index
Output byte Cím
TAG ADAT
Hanyadik byte 6 bit 2 bit n bit
Izsó Tamás Cache/ 3
Adatok: 1, 3, 8, 4, 3, 6, 8, 1 valid Block
0 ?
0 ?
0 ?
0 ?
Izsó Tamás Cache/ 4
Adatok: 1 , 3, 8, 4, 3, 6, 8, 1 valid Block
0 ?
1 1
0 ?
0 ?
Izsó Tamás Cache/ 4
Adatok: 1 , 3 , 8, 4, 3, 6, 8, 1 valid Block
0 ?
1 1
0 ?
1 3
Izsó Tamás Cache/ 4
Adatok: 1 , 3 , 8 , 4, 3, 6, 8, 1 valid Block
1 8
1 1
0 ?
1 3
Izsó Tamás Cache/ 4
Adatok: 1 , 3 , 8 , 4 , 3, 6, 8, 1 valid Block
1 8 4
1 1
0 ?
1 3
Izsó Tamás Cache/ 4
Adatok: 1 , 3 , 8 , 4 , 3 , 6, 8, 1 valid Block
1 8 4
1 1
0 ?
1 3
Izsó Tamás Cache/ 4
Adatok: 1 , 3 , 8 , 4 , 3 , 6 , 8, 1 valid Block
1 8 4
1 1
1 6
1 3
Izsó Tamás Cache/ 4
Adatok: 1 , 3 , 8 , 4 , 3 , 6 , 8 , 1 valid Block
1 8 4 8
1 1
1 6
1 3
Izsó Tamás Cache/ 4
Adatok: 1 , 3 , 8 , 4 , 3 , 6 , 8 , 1 valid Block
1 8 4 8
1 1
1 6
1 3
Izsó Tamás Cache/ 4
cache mérete: 256 byte cache block mérete : 64 byte Teljes asszociatív leképzés:
Output Effective Address
PFN,
Word eltolás
tag data tag data
Byte in Block Permissions
Tag contains
Hit?
One cache block contains multiple words PFN, valid bit,
…
tag data tag data
…
coherence bits
Hit? Hit? Hit?
tag
Izsó Tamás Cache/ 5
Adatok: 1, 3, 8, 4, 3, 6, 8, 1
Valid Block Time
0 ? ?
0 ? ?
0 ? ?
0 ? ?
Izsó Tamás Cache/ 6
Adatok: 1 , 3, 8, 4, 3, 6, 8, 1
Valid Block Time
1 1 1
0 ? ?
0 ? ?
0 ? ?
Izsó Tamás Cache/ 6
Adatok: 1 , 3 , 8, 4, 3, 6, 8, 1
Valid Block Time
1 1 2
1 3 1
0 ? ?
0 ? ?
Izsó Tamás Cache/ 6
Adatok: 1 , 3 , 8 , 4, 3, 6, 8, 1
Valid Block Time
1 1 3
1 3 2
1 8 1
0 ? ?
Izsó Tamás Cache/ 6
Adatok: 1 , 3 , 8 , 4 , 3, 6, 8, 1
Valid Block Time
1 1 4
1 3 3
1 8 2
1 4 1
Izsó Tamás Cache/ 6
Adatok: 1 , 3 , 8 , 4 , 3 , 6, 8, 1
Valid Block Time
1 1 4
1 3 1
1 8 3
1 4 2
Izsó Tamás Cache/ 6
Adatok: 1 , 3 , 8 , 4 , 3 , 6 , 8, 1
Valid Block Time
1 1 6 1
1 3 2
1 8 4
1 4 3
Izsó Tamás Cache/ 6
Adatok: 1 , 3 , 8 , 4 , 3 , 6 , 8 , 1
Valid Block Time
1 1 6 2
1 3 3
1 8 1
1 4 4
Izsó Tamás Cache/ 6
Adatok: 1 , 3 , 8 , 4 , 3 , 6 , 8 , 1
Valid Block Time
1 1 6 3
1 3 4
1 8 2
1 4 1 1
Izsó Tamás Cache/ 6
Adatok: 1, 3, 8, 4, 3, 6, 8, 1
Valid Block Time Valid Block Time
0 ? ? 0 ? ?
0 ? ? 0 ? ?
Izsó Tamás Cache/ 7
Adatok: 1 , 3, 8, 4, 3, 6, 8, 1
Valid Block Time Valid Block Time
0 ? ? 0 ? ?
1 1 1 0 ? ?
Izsó Tamás Cache/ 7
Adatok: 1 , 3 , 8, 4, 3, 6, 8, 1
Valid Block Time Valid Block Time
0 ? ? 0 ? ?
1 1 2 1 3 1
Izsó Tamás Cache/ 7
Adatok: 1 , 3 , 8 , 4, 3, 6, 8, 1
Valid Block Time Valid Block Time
1 8 1 0 ? ?
1 1 2 1 3 1
Izsó Tamás Cache/ 7
Adatok: 1 , 3 , 8 , 4 , 3, 6, 8, 1
Valid Block Time Valid Block Time
1 8 2 1 4 1
1 1 2 1 3 1
Izsó Tamás Cache/ 7
Adatok: 1 , 3 , 8 , 4 , 3 , 6, 8, 1
Valid Block Time Valid Block Time
1 8 2 1 4 1
1 1 2 1 3 1
Izsó Tamás Cache/ 7
Adatok: 1 , 3 , 8 , 4 , 3 , 6 , 8, 1
Valid Block Time Valid Block Time
1 8 6 1 1 4 2
1 1 2 1 3 1
Izsó Tamás Cache/ 7
Adatok: 1 , 3 , 8 , 4 , 3 , 6 , 8 , 1
Valid Block Time Valid Block Time
1 8 6 2 1 4 8 1
1 1 2 1 3 1
Izsó Tamás Cache/ 7
Adatok: 1 , 3 , 8 , 4 , 3 , 6 , 8 , 1
Valid Block Time Valid Block Time
1 8 6 2 1 4 8 1
1 1 1 1 3 2
Izsó Tamás Cache/ 7
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites Eltolás mérete ?
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Eltolás mérete: blokk méretéb ˝ol 26=64→6bit?
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Eltolás mérete: blokk méretéb ˝ol 26=64→6bit? Cache blokkok száma ?
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Eltolás mérete: blokk méretéb ˝ol 26=64→6bit? Cache blokkok száma: 32KByte64byte
= 512
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Eltolás mérete: blokk méretéb ˝ol 26=64→6bit? Cache blokkok száma: 32KByte64byte
= 512
4 utas szervezés az index mérete?
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Eltolás mérete: blokk méretéb ˝ol 26=64→6bit? Cache blokkok száma: 32KByte64byte
= 512
4 utas szervezés az index mérete: 512/4=128=27sor→7bit
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Eltolás mérete: blokk méretéb ˝ol 26=64→6bit? Cache blokkok száma: 32KByte64byte
= 512
4 utas szervezés az index mérete: 512/4=128=27sor→7bit Fizikai cím esetén?
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Eltolás mérete: blokk méretéb ˝ol 26=64→6bit? Cache blokkok száma: 32KByte64byte
= 512
4 utas szervezés az index mérete: 512/4=128=27sor→7bit Fizikai cím esetén: 32−7−6=19bit, egyszerre 4 db 19 bites komparátor dolgozik.
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Eltolás mérete: blokk méretéb ˝ol 26=64→6bit? Cache blokkok száma: 32KByte64byte
= 512
4 utas szervezés az index mérete: 512/4=128=27sor→7bit Fizikai cím esetén: 32−7−6=19bit, egyszerre 4 db 19 bites komparátor dolgozik.
Virtuális tag esetén?
Izsó Tamás Cache/ 8
Cache mérete : 32Kbyte Cache blokkméret : 64 byte Fizikai cím 32 bites
virtuális cím 48 bites
Eltolás mérete: blokk méretéb ˝ol 26=64→6bit? Cache blokkok száma: 32KByte64byte
= 512
4 utas szervezés az index mérete: 512/4=128=27sor→7bit Fizikai cím esetén: 32−7−6=19bit, egyszerre 4 db 19 bites komparátor dolgozik.
Virtuális tag esetén: 48−7−6=35bit, egyszerre 4 db 35 bites komparátor dolgozik.
Izsó Tamás Cache/ 8
Cache blokkméret : 64 byte Fizikai cím 16 bites
Izsó Tamás Cache/ 9
Cache blokkméret : 64 byte Fizikai cím 16 bites
Eltolás mérete?
Izsó Tamás Cache/ 9
Cache blokkméret : 64 byte Fizikai cím 16 bites
Eltolás mérete a blokkméretb ˝ol 64=26azaz 6 bit
Izsó Tamás Cache/ 9
Cache blokkméret : 64 byte Fizikai cím 16 bites
Eltolás mérete a blokkméretb ˝ol 64=26azaz 6 bit Blokkok száma?
Izsó Tamás Cache/ 9
Cache blokkméret : 64 byte Fizikai cím 16 bites
Eltolás mérete a blokkméretb ˝ol 64=26azaz 6 bit Blokkok száma: 512/64=8 azaz 3 bit
Izsó Tamás Cache/ 9
Cache blokkméret : 64 byte Fizikai cím 16 bites
Eltolás mérete a blokkméretb ˝ol 64=26azaz 6 bit Blokkok száma: 512/64=8 azaz 3 bit
Teljes asszociatív esteben:
0 5
6 15
TAG Eltolás
Izsó Tamás Cache/ 9
0 5
6 15
TAG Eltolás
Eltolás alsó 6 bit = x % 64
13 136 490 541 670 74 581 980 eltolás
Izsó Tamás Cache/ 10
13 =
0 5
6 15
0000000000 001101 Eltolás alsó 6 bit = 13 % 64 = 13
13 136 490 541 670 74 581 980
eltolás 13
Izsó Tamás Cache/ 10
136 =
0 5
6 15
0000000010 001000 Eltolás alsó 6 bit = 136 % 64 = 8
13 136 490 541 670 74 581 980
eltolás 13 8
Izsó Tamás Cache/ 10
490 =
0 5
6 15
0000000111 101010 Eltolás alsó 6 bit = 490 % 64 = 42
13 136 490 541 670 74 581 980
eltolás 13 8 42
Izsó Tamás Cache/ 10
541 =
0 5
6 15
0000001000 011101 Eltolás alsó 6 bit = 541 % 64 = 29
13 136 490 541 670 74 581 980
eltolás 13 8 42 29
Izsó Tamás Cache/ 10
670 =
0 5
6 15
0000001010 011110 Eltolás alsó 6 bit = 670 % 64 = 30
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30
Izsó Tamás Cache/ 10
74 =
0 5
6 15
0000000001 001010 Eltolás alsó 6 bit = 74 % 64 = 10
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10
Izsó Tamás Cache/ 10
581 =
0 5
6 15
0000001001 000101 Eltolás alsó 6 bit = 581 % 64 = 5
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5
Izsó Tamás Cache/ 10
980 =
0 5
6 15
0000001111 010100 Eltolás alsó 6 bit = 980 % 64 = 20
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
Izsó Tamás Cache/ 10
5 0 6 15
TAG Eltolás
Fels ˝o 10 bit = x / 64
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag
Izsó Tamás Cache/ 11
13 =
5 0 6 15
0000000000 001101 Fels ˝o 10 bit = 13 / 64 = 0
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0
Izsó Tamás Cache/ 11
136 =
5 0 6 15
0000000010 001000 Fels ˝o 10 bit = 136/ 64 = 2
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2
Izsó Tamás Cache/ 11
490 =
5 0 6 15
0000000111 101010 Fels ˝o 10 bit = 490 / 64 = 7
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7
Izsó Tamás Cache/ 11
541 =
5 0 6 15
0000001000 011101 Fels ˝o 10 bit = 541 / 64 = 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8
Izsó Tamás Cache/ 11
670 =
5 0 6 15
0000001010 011110 Fels ˝o 10 bit = 670 / 64 = 10
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10
Izsó Tamás Cache/ 11
74 =
5 0 6 15
0000000001 001010 Fels ˝o 10 bit = 74/ 64 = 1
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1
Izsó Tamás Cache/ 11
581 =
5 0 6 15
0000001001 000101 Fels ˝o 10 bit = 581 / 64 =9
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9
Izsó Tamás Cache/ 11
980 =
5 0 6 15
0000001111 010100 Fels ˝o 10 bit = 980 / 64 = 15
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
Izsó Tamás Cache/ 11
5 0 6 8 9 15
TAG Inx Eltolás Fels ˝o 7 bit = x / 512
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag
Izsó Tamás Cache/ 12
13 =
5 0 6 8 9 15
0000000 000 001101 Fels ˝o 7 bit = 13 / 512 = 0
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0
Izsó Tamás Cache/ 12
136 =
5 0 6 8 9 15
0000000 010 001000 Fels ˝o 7 bit = 136/ 512=0
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0
Izsó Tamás Cache/ 12
490 =
5 0 6 8 9 15
0000000 111 101010 Fels ˝o 7 bit = 490 / 512 = 0
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0
Izsó Tamás Cache/ 12
541 =
5 0 6 8 9 15
0000001 000 011101 Fels ˝o 7 bit = 541 / 512 = 1
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1
Izsó Tamás Cache/ 12
670 =
5 0 6 8 9 15
0000001 010 011110 Fels ˝o 7 bit = 670 / 512 = 1
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1
Izsó Tamás Cache/ 12
74 =
5 0 6 8 9 15
0000000 001 001010 Fels ˝o 7 bit = 74/ 512 = 0
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0
Izsó Tamás Cache/ 12
581 =
5 0 6 8 9 15
0000001 001 000101 Fels ˝o 7 bit = 581 / 512 =1
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1
Izsó Tamás Cache/ 12
980 =
5 0 6 8 9 15
0000001 111 010100 Fels ˝o 7 bit = 980 / 512 = 1
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
Izsó Tamás Cache/ 12
0 5
6 8 9 15
TAG Inx Eltolás 6-8 bitek = (x / 64) % 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index
Izsó Tamás Cache/ 13
13 =
0 5
6 8 9 15
0000000 000 001101 6-8 bitek = (13 / 64) % 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0
Izsó Tamás Cache/ 13
136 =
0 5
6 8 9 15
0000000 010 001000 6-8 bitek = (136 / 64) % 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2
Izsó Tamás Cache/ 13
490 =
0 5
6 8 9 15
0000000 111 101010 6-8 bitek = (490 / 64) % 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7
Izsó Tamás Cache/ 13
541 =
0 5
6 8 9 15
0000001 000 011101 6-8 bitek = (541 / 64) % 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0
Izsó Tamás Cache/ 13
670 =
0 5
6 8 9 15
0000001 010 011110 6-8 bitek = (670 / 64) % 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2
Izsó Tamás Cache/ 13
74 =
0 5
6 8 9 15
0000000 001 001010 6-8 bitek = (74 / 64) % 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1
Izsó Tamás Cache/ 13
581 =
0 5
6 8 9 15
0000001 001 000101 6-8 bitek = (581 / 64) % 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1
Izsó Tamás Cache/ 13
980 =
0 5
6 8 9 15
0000001 111 010100 6-8 bitek = (980 / 64) % 8
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
Izsó Tamás Cache/ 13
5 0 7 6 8 15
TAG Inx Eltolás Fels ˝o 8 bit = x / 256
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag
Izsó Tamás Cache/ 14
13 =
5 0 7 6 8 15
00000000 00 001101 Fels ˝o 8 bit = 13 / 256
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0
Izsó Tamás Cache/ 14
136 =
5 0 7 6 8 15
00000000 10 001000 Fels ˝o 8 bitek = 136 / 256
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0
Izsó Tamás Cache/ 14
490 =
5 0 7 6 8 15
00000001 11 101010 Fels ˝o 8 bit = 490 / 256
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1
Izsó Tamás Cache/ 14
541 =
5 0 7 6 8 15
00000010 00 011101 Fels ˝o 8 bit = 541 / 256
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2
Izsó Tamás Cache/ 14
670 =
5 0 7 6 8 15
00000010 10 011110 Fels ˝o 8 bit = 670 / 256
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2
Izsó Tamás Cache/ 14
74 =
5 0 7 6 8 15
00000000 01 001010 Fels ˝o 8 bit = 74 / 256
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0
Izsó Tamás Cache/ 14
581 =
5 0 7 6 8 15
00000010 01 000101 Fels ˝o 8 bit = 581 / 256
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2
Izsó Tamás Cache/ 14
980 =
5 0 7 6 8 15
00000011 11 010100 Fels ˝o 8 bit = 980 / 256
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
Izsó Tamás Cache/ 14
0 5
6 7 8 15
TAG Inx Eltolás 6-7 bitek = (x / 64) % 4
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index
Izsó Tamás Cache/ 15
13 =
0 5
6 7 8 15
00000000 00 001101 6-7 bitek = (13 / 64) % 4
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index 0
Izsó Tamás Cache/ 15
136 =
0 5
6 7 8 15
00000000 10 001000 6-7 bitek = (136 / 64) % 4
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index 0 2
Izsó Tamás Cache/ 15
490 =
0 5
6 7 8 15
00000001 11 101010 6-7 bitek = (490 / 64) % 4
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index 0 2 3
Izsó Tamás Cache/ 15
541 =
0 5
6 7 8 15
00000010 00 011101 6-7 bitek = (541 / 64) % 4
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index 0 2 3 0
Izsó Tamás Cache/ 15
670 =
0 5
6 7 8 15
00000010 10 011110 6-7 bitek = (670 / 64) % 4
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index 0 2 3 0 2
Izsó Tamás Cache/ 15
74 =
0 5
6 7 8 15
00000000 01 001010 6-7 bitek = (74 / 64) % 4
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index 0 2 3 0 2 1
Izsó Tamás Cache/ 15
581 =
0 5
6 7 8 15
00000010 01 000101 6-7 bitek = (581 / 64) % 4
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index 0 2 3 0 2 1 1
Izsó Tamás Cache/ 15
980 =
0 5
6 7 8 15
00000011 11 010100 6-7 bitek = (980 / 64) % 4
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index 0 2 3 0 2 1 1 3
Izsó Tamás Cache/ 15
13 136 490 541 670 74 581 980
eltolás 13 8 42 29 30 10 5 20
asszoc. tag 0 2 7 8 10 1 9 15
direkt tag 0 0 0 1 1 0 1 1
direkt index 0 2 7 0 2 1 1 7
2 utas tag 0 0 1 2 2 0 2 3
2 utas index 0 2 3 0 2 1 1 3
Izsó Tamás Cache/ 16
b1. Cache végs ˝o tartalma asszociatív esetben: mind a 8 bejegyzés ki van töltve.
b2. Direkt index esetben:
valid Tag Block tartalom
1 1
1 1
1 1
0 ?
0 ?
0 ?
0 ?
1 1
Izsó Tamás Cache/ 17
b3. 2 utas asszociatív esetben:
valid Tag Block valid Tag Block
tartalom tartalom
index=0 1 0 1 2
index=1 1 0 1 2
index=2 1 0 1 2
index=3 1 1 1 3
Izsó Tamás Cache/ 18
Vegyünk egy 1 kB méret ˝u cache-t 64 byte-os blokkmérettel.
short i n t t [ 3 2 ] [ 3 2 ] ; i n t sum = 0 ;
f o r (i n t i = 0 ; i <32; i ++) f o r (i n t j = 0 ; j <32; j ++)
sum += t [ i ] [ j ] ;
1 Hány cache hibát vált ki a fenti algoritmus? Számolja ki a cache hiba-arányt!
2 Hány cache hibát vált ki a fenti algoritmus, ha megcseréljük a két ciklust? Számolja ki a cache hiba-arányt!
3 Mekkora cache-re lenne szükség, hogy a megcserélt for ciklusokkal is ugyanolyan hiba-arányt kapjunk, mint az eredeti algoritmussal?
Izsó Tamás Cache/ 19
1 32×32 m ˝uveletre 32 cache hiba esik.
32/(32×32) =3.125%
2 16 sor fér be a cache-be. A következ ˝o 16 felülírja az el ˝oz ˝o cache értékeket. Ezért amikor a küls ˝o ciklus fut, megint be kell hozni az adatokat. Cache hiba 100%.
3 2 Kbyte cache esetén a teljes mátrix belefér a cache-be.
Így csak a 32 db cache blokk feltöltésénél adódik cache hiba, azaz 32 cache hiba áll el ˝o.
Izsó Tamás Cache/ 20