Πίσω

Παράδειγμα 1o

  Δίνεται μια σειρά από διευθύνσεις λέξεων κύριας μνήμης 1, 4, 8, 5, 20, 17, 19, 56, 9, 11, 4,43, 5, 6, 9, 17, σε μία κύρια μνήμη η οποία έχει μέγεθος 64 λέξεων. Θεωρώντας μια κρυφή μνήμη άμεσης αντιστοίχησης με 16 μπλοκ μιας λέξης, τα οποία είναι αρχικά άδεια, χαρακτηρίστε κάθε αναφορά στη λίστα ως επιτυχία ή αποτυχία της κρυφής μνήμης και δείξτε το τελικό περιεχόμενο της κρυφής μνήμης.

Aπάντηση

Αρχικά αναπαριστούμε τις διευθύνσεις της κύριας μνήμης με δυαδικούς αριθμούς των 6 bit, δεδομένου ότι το μέγεθος της κύρια μνήμης είναι 64 λέξεις:

Μια διεύθυνση X δείχνει στο μπλοκ ( X mod 16 ) της κρυφής μνήμης, όπου 16=24 είναι ο αριθμός των μπλοκ στην κρυφή μνήμη. Συνεπώς, τα 4 τελευταία ψηφία κάθε διεύθυνσης ορίζουν σε ποιο μπλοκ της κρυφής μνήμης αναφέρονται και αποτελούν το πεδίο του δείκτη (index field). Για παράδειγμα, η διεύθυνση0100112 (η διεύθυνση 19 της κύριας μνήμης) αντιστοιχεί στο μπλοκ (0100112) mod 16 = (19 mod 16) =00112 (η διεύθυνση 3 της κρυφής μνήμης).

Όσον αφορά το πεδίο ετικέτας (tag field), αυτό ορίζεται από τα 2 αριστερότερα ψηφία της διεύθυνσης. Συγκεκριμένα, στο προηγούμενο παράδειγμα το πεδίο ετικέτας είναι το 01.

Τέλος, ένας τρόπος για να γνωρίζουμε εάν ένα μπλοκ κρυφής μνήμης περιέχει ή όχι έγκυρες πληροφορίες, δηλαδή τα περιεχόμενά του ανήκουν στο πρόγραμμα που εκτελείται, είναι να προσθέσουμε ένα ψηφίο εγκυρότητας (Valid bit).

Έτσι, λοιπόν, οι καταστάσεις της κρυφής μνήμης, με τη σειρά των διευθύνσεων της άσκησης, είναι οι εξής:

Ο Πίνακας Α δείχνει την αρχική κατάσταση της κρυφής μνήμης, ενώ ο Πίνακας Β δείχνει την κατάσταση της κρυφής μνήμης μετά τη διαδοχική αναφορά των διευθύνσεων 1, 4, 8, 5 κατά τις οποίες έχουμε αποτυχία, αφού η κρυφή μνήμη είναι άδεια. Σειρά έχει η διεύθυνση 0101002 (η διεύθυνση 20 της κύριας μνήμης) κατά την οποία έχουμε και πάλι αποτυχία κρυφής μνήμης, με τη διαφορά ότι τα δεδομένα Mem(010100) της συγκεκριμένης διεύθυνσης πρέπει να αντικαταστήσουν τα δεδομένα Mem(000100) που βρίσκονται στο μπλοκ 0100 της κρυφής μνήμης και ταυτόχρονα να ενημερώσουν το πεδίο ετικέτας που τώρα γίνεται 01. Έτσι η κατάσταση της κρυφής μνήμης είναι η ακόλουθη (βλέπε πίνακα Γ΄):

To bit έχει τεθεί, άρα το μπλοκ έχει έγκυρη πληροφορία

Ακολουθούν οι διευθύνσεις τις κύριας μνήμης 17, 19, 56, 9, 11 στις οποίες έχουμε αποτυχίες κρυφής μνήμης. Πιο συγκεκριμένα τα δεδομένα Mem(010001) της διεύθυνσης 17 αντικαθιστούν τα ήδη υπάρχοντα Mem(000001) στο μπλοκ 00012 της κρυφής μνήμης, ενώ τα Mem(111000) της διεύθυνσης 56 αντικαθιστούν τα Mem(001001) της διεύθυνσης 8 στο μπλοκ 1000, ενώ ταυτόχρονα γίνεται ενημέρωση του πεδίου ετικέτας. Μετά την 11 έρχεται η διεύθυνση 4 κατά την οποία έχουμε αποτυχία, τα δεδομένα της οποίας Mem(000100) αντικαθιστούν τα Mem(010100) της διεύθυνσης 20 στο μπλοκ 01002. Ακολουθεί η διεύθυνση 43, κατά την οποία έχουμε αποτυχία, τα δεδομένα της οποίας Mem(101011) αντικαθιστούν τα Mem(001011) της διεύθυνσης 11 στο μπλοκ 10112. Τέλος, έχουμε διαδοχικά τις διευθύνσεις 5 (επιτυχία), 6 (αποτυχία), 9 (επιτυχία), 17 (επιτυχία). Συνεπώς, η τελική κατάσταση της κρυφής μνήμης είναι η ακόλουθη:

  Γενικά, θεωρώντας μία διεύθυνση κύριας μνήμης με μέγεθος 32 Bits (4 Bytes) (MIPS υπολογιστής), μια άμεσης αντιστοίχισης κρυφή μνήμη με μέγεθος 2n λέξεις και με μπλοκ μιας λέξης τότε απαιτούνται:

  1. 2 bits για το πεδίο μετατόπισης
  2. n bits για το πεδίο δείκτη
  3. 32-(n+2) bits απομένουν για την ετικέτα.
Ο συνολικός αριθμός των bits σε μια άμεσης αντιστοίχισης κρυφή μνήμη είναι : 2n x ( μέγεθος μπλοκ + μέγεθος ετικέτας + μέγεθος πεδίου εγκυρότητας)

Αφού το μπλοκ έχει μέγεθος 1 λέξη (32 bits) και μέγεθος διεύθυνσης 32 bits, ο αριθμός των bits στην κρυφή μνήμη είναι

2n x ( 32 + ( 32 - n - 2) + 1 ) =2n x ( 63 - n ).

Αν έχω μία κρυφή μνήμη με 64 Kbytes δεδομένα, τότε 64 Kbytes είναι 16 Κwords δηλαδή 214 words (214λέξεις). Αρα, το συνολικό μέγεθος της κρυφής μνήμης είναι:

214 x ( 32 + ( 32 -14 - 2) + 1 ) = 214 x 49 = 784 x 210 = 784 Kbits = 98 KB.


Η παραπάνω κρυφή μνήμη έχει 210 ή 1024 λέξεις και μέγεθος μπλοκ 1 λέξη. Για το δείκτη χρησιμοποιούνται 10 bits, ενώ μένουν 32 - 10 - 2=20 bits για την ετικέτα. Αν η ετικέτα και τα 20 αριστερά bits της διεύθυνσης είναι ίσα και το bit εγκυρότητας έχει τεθεί 1 ή Yes, τότε έχουμε επιτυχία. Σε διαφορετική περίπτωση έχουμε αποτυχία κρυφής μνήμης.  Ένδειξη τέλους Παραδείγματος στον Εντοπισμό