1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα Μνήμης –Αλγόριθμοι Απεικόνισης Cache (συνέχεια) Μέρος: Τρίτο Καθηγητής: Α. Βαφειάδης 2007
2 Α. Βαφειάδης Πλήρως συσχετιστική ( full associative) Βασική αρχή Κάθε block της Κεντρικής Μνήμης τοποθετείται στη πρώτη κενή θέση της cache. Αν η cache είναι γεμάτη τότε τοποθετείται στην κενή θέση που δημιουργεί ο αλγόριθμος αντικατάστασης της cache. Συνάρτηση απεικόνισης : δεν υπάρχει
3 Α. Βαφειάδης Πλήρως συσχετιστική - Διεύθυνση μνήμης Offset : Η διεύθυνση ενός byte μέσα στο block Index : δεν υπάρχει Tag : ετικέτα αναγνώρισης (μέρος της διεύθυνσης) Address length = (s + w) bits =24 bits M. Memory bytes = 2 s+w = 2 24 Block size = line size = 2 w bytes = 4 bytes Number of memory blocks = 2 s+w / s w = 2 S = 2 22 Number of lines in cache (δεν προσδιορίζεται από την διεύθυνση) Size of tag = s bits = 22 bits Tag Offset 22 w = 2 s
4 Α. Βαφειάδης Πλήρως συσχετιστική – Αλγόριθμος προσπέλασης-hit Βήμα 0: Ανάλυση της διεύθυνσης στα πεδία, tag, και w ( ) Βήμα 1-2: Το tag της διεύθυνσης συγκρίνεται με τα tag όλων των γραμμών της cache Βήμα 3: Αν κάποιο tag της cache είναι ίσο με το tag της διεύθυνσης τότε έχουμε cache hit και η γραμμή της cache η οποία έχει το ίδιο tag με αυτό της διεύθυνσης περιέχει την διεύθυνση Βήμα 4: Το πεδίο w (offset ) βοήθα τον εντοπισμό της θέσης μνήμης ( ) μέσα στο block Βήμα 5: Μεταφέρεται έξω από την cache το μέρος του block που έχει διεύθυνση ( )
5 Α. Βαφειάδης
6
7
8
9
10 Α. Βαφειάδης
11 Α. Βαφειάδης Πλήρως συσχετιστική – Αλγόριθμος προσπέλασης-miss Βήμα 0: Ανάλυση της διεύθυνσης στα πεδία, tag, και w ( ) Βήμα 1-2: Το tag της διεύθυνσης συγκρίνεται με τα tag όλων των γραμμών της cache Βήμα 3: Αν κανένα από tag της cache δεν είναι ίσο με το tag της διεύθυνσης τότε έχουμε cache miss Βήμα 4: Ο αλγόριθμος αντικατάστασης αποφασίζει πιο από τα block της cache θα απομακρυνθεί (εστω ότι είναι το block της cache με διεύθυνση 1000) Βήμα 5: Η κ. μνήμη μεταφέρει στη cache και στη line (0100) όλο block με διεύθυνση ( ) Βήμα 6: Το πεδίο w (offset ) βοήθα τον εντοπισμό της θέσης μνήμης ( ) μέσα στο block Βήμα 7: Μεταφέρεται έξω από την cache το μέρος του block που έχει διεύθυνση ( )
12 Α. Βαφειάδης
13 Α. Βαφειάδης
14 Α. Βαφειάδης
15 Α. Βαφειάδης
16 Α. Βαφειάδης
17 Α. Βαφειάδης
18 Α. Βαφειάδης
19 Α. Βαφειάδης Πλήρως Συσχετική – Ανάλυση Διεύθυνση C (Διεύθυνση μνήμης) Tag Offset Tag C E 7
20 Α. Βαφειάδης Πλήρως συσχετιστική - Παράδειγμα C (Διεύθυνση μνήμης) Offset Tag C E 7
21 Α. Βαφειάδης Τμηματικά Συσχετική (Set associative) Βασική αρχή Υπόθεση: Η cache διαιρείται σε v sets των k γραμμών Ένα block τοποθετείται οπουδήποτε μέσα σε ένα set. Σε πoιo set θα τοποθετηθεί το αποφασίζει η συνάρτηση απεικόνισης Συνάρτηση απεικόνισης: (mapping function) αν j η διεύθυνση o ενός block στη κεντρική μνήμη i η διεύθυνση ενός set m το μέγεθος της cache σε γραμμές ( m=v * k) τότε i = j modulo ν Δηλαδή το block της μνήμης με διεύθυνση j θα τοποθετηθεί οπουδήποτε μέσα στο στο i set Μια τέτοια cache ονομάζεται k-way set associative
22 Α. Βαφειάδης Τμηματικά συσχετική 2-δρόμων
23 Α. Βαφειάδης Τμηματικά Συσχετική - Διεύθυνση μνήμης Offset : Η διεύθυνση ενός byte μέσα στο block Set : Η διεύθυνση ενός set Tag : ετικέτα αναγνώρισης (μέρος της διεύθυνσης) Address length = (s + w) bits =24 bits M. Memory bytes = 2 s+w = 2 24 Block size = line size = 2 w bytes = 2 2 = 4 bytes Number of memory blocks = 2 s+w / s w = 2 s Number of lines in set K = 2 (two way) Cache size (bytes) = k*v*4=64 K Cache size (lines) = k*v* = 16K Number of sets v = 8K 2 d = 8K -> d=13 Size of tag = s-d bits = = 9 Tag set Offset 9 d = 13 w = 2 s
24 Α. Βαφειάδης Τμηματικά Συσχετική – Αλγόριθμος Προσπέλασης Βήμα 0: Ανάλυση της διεύθυνσης D στα πεδία, tag, set, w Βήμα 1: Η set διεύθυνση μας οδηγεί σε ένα set, μέσα στις γραμμές (block) του οποίου, ενδεχομένως, να βρίσκεται το περιεχόμενο της διεύθυνση D που αναζητούμε. Βήμα 2: Το tag της διεύθυνσης συγκρίνεται με όλα τα tag των γραμμών του set στην οποία μας οδήγησε η διεύθυνση set Βήμα 3: Αν κάποιο tag είναι ίσο με το tag της διεύθυνσης τότε έχουμε cache hit και η γραμμή της cache η οποία έχει το ίδιο tag με αυτό της διεύθυνσης D περιέχει την διεύθυνση D διαφορετικά έχουμε cache miss η κ. μνήμη μεταφέρει στην cache όλο το block με διεύθυνση (tag, set, 00), στο οποίο βρίσκεται η διεύθυνση D Βήμα 4: Μεταφέρεται έξω από την cache το μέρος του block που έχει διεύθυνση (tag, set, w)
25 Α. Βαφειάδης
26 Α. Βαφειάδης
27 Α. Βαφειάδης Set
28 Α. Βαφειάδης
29 Α. Βαφειάδης
30 Α. Βαφειάδης
31 Α. Βαφειάδης Τμηματικά συσχετική – Ανάλυση Διεύθυνση C (Διεύθυνση μνήμης) Offset tag 0 2 C tag (Διεύθυνση set) 0 C E 7 (Διεύθυνση set)
32 Α. Βαφειάδης Τμηματικά Συσχετική - Παράδειγμα C (Διεύθυνση μνήμης) Offset C tag (Διεύθυνση set) 0 C E 7 (Διεύθυνση set)
33 Α. Βαφειάδης
34 Α. Βαφειάδης
35 Α. Βαφειάδης Set
36 Α. Βαφειάδης
37 Α. Βαφειάδης
38 Α. Βαφειάδης
39 Α. Βαφειάδης
40 Α. Βαφειάδης