Κεφάλαιο 4 | Ενότητα 2 | Ερωτήσεις επισκόπησης | Επόμενο| Λεξικό όρων

Η κρυφή μνήμη

Θεωρητικό πλαίσιο λειτουργίας

Κατά τη διάρκεια εκτέλεσης ενός τμήματος προγράμματος οι διαδοχικές προσβάσεις που γίνονται στην κύρια μνήμη πραγματοποιούνται μέσα από ένα μικρό σύνολο γειτονικών διευθύνσεων.

Αυτό συμβαίνει για δύο λόγους

  1. Η αποθήκευση των εντολών ενός προγράμματος γίνεται σε διαδοχικές θέσεις της κύριας μνήμης άρα η επόμενη εντολή που θα εκτελεστεί βρίσκεται συνήθως στην επόμενη θέση μνήμης. Το ίδιο συμβαίνει και με τα δεδομένα των προγραμμάτων τα οποία και αυτά, τοποθετούνται σε διαδοχικές θέσεις μνήμης.

  2. Κατά την εκτέλεση βρόχων (loops) οι εντολές που περιλαμβάνονται στο σώμα του βρόχου εκτελούνται διαδοχικά πολλές φορές. Άρα γίνεται επαναλαμβανόμενη πρόσβαση του επεξεργαστή στις ίδιες θέσεις μνήμης που περιέχουν τις εντολές του βρόχου.

Η διαπίστωση ότι οι περισσότερες από τις διαδοχικές αναφορές στη μνήμη γίνονται μέσα από ένα σύνολο γειτονικών διευθύνσεων ονομάζεται αρχή της τοπικότητας της αναφοράς ή απλά αρχή της τοπικότητας και διακρίνεται σε δύο τύπους τη τοπικότητα χρόνου και τη τοπικότητα χώρου.

 Τοπικότητα χρόνου

Αν ένα πρόγραμμα έχει αναφερθεί σε μια διεύθυνση μνήμης, τότε υπάρχει μεγάλη πιθανότητα να αναφερθεί σε σύντομο χρονικό διάστημα στην ίδια διεύθυνση. Αυτό συμβαίνει στην περίπτωση ενός βρόχου.

Τοπικότητα χώρου

Αν ένα πρόγραμμα έχει αναφερθεί σε μια διεύθυνση μνήμης, τότε υπάρχει μεγάλη πιθανότητα να αναφερθεί σύντομα σε γειτονικές διευθύνσεις. Αυτό συμβαίνει λόγω της αποθήκευσης των εντολών και των δεδομένων ενός προγράμματος σε διαδοχικές θέσεις μνήμης.

Αξιοποίηση της αρχής της τοπικότητας από την κρυφή μνήμη

Όταν γίνει αίτηση του επεξεργαστή για ανάγνωση ή εγγραφή σε μια διεύθυνση της κύριας μνήμης και τo περιεχόμενο αυτής της θέσης δεν υπάρχει στην κρυφή μνήμη, τότε στην κρυφή μνήμη δεν μεταφέρεται μόνο το περιεχόμενο αυτής της διεύθυνσης αλλά και τα δεδομένα που περιέχονται σε γειτονικές διευθύνσεις της. Με τον τρόπο αυτό η επόμενη αίτηση του επεξεργαστή σε μια διεύθυνση της κύριας μνήμης είναι πολύ πιθανόν να εξυπηρετηθεί από την κρυφή μνήμη γιατί το περιεχόμενο της ζητούμενης διεύθυνσης θα βρεθεί στην κρυφή μνήμη. Το κέρδος στην περίπτωση αυτή είναι η ταχύτερη διεκπεραίωση της εντολής γιατί η κρυφή μνήμη είναι πολύ ταχύτερη από την κύρια μνήμη.

Στην κρυφή μνήμη εκτός από το byte και τη λέξη (word) τα δεδομένα είναι οργανωμένα σε μπλοκ ή γραμμές της κρυφής μνήμης (cache blocks ή cache lines). Το μέγεθος ενός μπλοκ μπορεί να είναι από 8 μέχρι 64 bytes. Ανάλογα με το είδος της εντολής που εκτελεί ο επεξεργαστής μπορεί να γίνει πρόσβαση του επεξεργαστή σε ποσότητα δεδομένων ίση με ένα byte, με μια λέξη ή με ένα μπλοκ. Η μεταφορά όμως των δεδομένων μεταξύ κύριας και κρυφής μνήμης γίνεται μόνο σε μπλοκ. Για το λόγο αυτό μπορούμε να αναφερόμαστε σε μπλοκ της κύριας μνήμης θεωρώντας ότι και η κύρια μνήμη είναι οργανωμένη σε νοητά μπλοκ αντίστοιχου μεγέθους με αυτά της κρυφής μνήμης.

Λόγω της αρχής της τοπικότητας εάν το μέγεθος του μπλοκ της κρυφής μνήμης δεν αποτελείται από αρκετά byteς τότε είναι σαν να μην υπάρχει κρυφή μνήμη.

Κρυφή μνήμη δεδομένων - εντολών: O επεξεργαστής χρησιμοποιεί δεδομένα και εντολές. Μία κρυφή μνήμη που περιέχει και δεδομένα και εντολές θα προκαλούσε προβλήματα συνωστισμού στην μεταφορά των στοιχείων της προς τον επεξεργαστή. Για παράδειγμα ένας επεξεργαστής που χρησιμοποιεί την τεχνική σωλήνωσης μπορεί να διαβάζει μια εντολή από τη μνήμη και ταυτόχρονα να διαβάζει ή να γράφει δεδομένα μιας άλλης εντολής που βρίσκεται στη σωλήνωση. Η κρυφή μνήμη προκειμένου να αντιμετωπίσει τον κατασκευαστικό κίνδυνο. Η λύση είναι ο διαχωρισμός της κρυφής μνήμης σε κρυφή μνήμη εντολών και σε κρυφή μνήμη δεδομένων. Η ΚΜΕ γνωρίζει πότε αναφέρεται σε μία διεύθυνση δεδομένων και πότε σε μία διεύθυνση εντολών και μπορεί να χρησιμοποιήσει ξεχωριστές θύρες για κάθε αναφορά της.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 1

* Να εξηγήσετε τι είναι η τοπικότητα της αναφοράς και με ποιο τρόπο αξιοποιείται από την κρυφή μνήμη;
* Να απαριθμήσετε τους τύπους της τοπικότητας της αναφοράς και να εξηγήσετε τη διαφορά ανάμεσα στους τύπους αυτούς. Να συγκρίνετε τις απαντήσεις σας με την παράγραφο που μόλις διαβάσατε και έχει τίτλο: «Θεωρητικό πλαίσιο λειτουργίας».


ΔΡΑΣΤΗΡΙΟΤΗΤΑ 2

Θυμάστε σε ποιο επίπεδο της ιεραρχίας της μνήμης βρίσκεται η κρυφή μνήμη; Αν δυσκολεύεστε να απαντήσετε στην ερώτηση αυτή, κρίνεται σκόπιμο να ανατρέξετε στο σχήμα 4.1.1 της 1ης ενότητας του κεφαλαίου αυτού.


Η θέση της κρυφής μνήμης

Η κρυφή μνήμη αντιστοιχεί στο δεύτερο επίπεδο της ιεραρχίας μνήμης. Η κρυφή μνήμη τοποθετείται ανάμεσα στην κύρια μνήμη και τον επεξεργαστή (σχήμα 4.2.1), ενώ στους σημερινούς επεξεργαστές βρίσκεται στην κάρτα του επεξεργαστή (σχήμα 4.2.2). Η κρυφή μνήμη κατασκευάζεται από προηγμένα ολοκληρωμένα κυκλώματα, για να εξασφαλίζει μικρούς χρόνους πρόσβασης. Για το λόγο αυτό έχει αυξημένο κόστος.

Σχήμα 4.2.1 - Θέση κρυφής μνήμης:Η κρυφή μνήμη που εξυπηρετεί τον επεξεργαστή τοποθετείται ανάμεσα στην κύρια μνήμη και τον επεξεργαστή

Σχήμα 4.2.2 - Η κρυφή μνήμη στους σύγχρονους επεξεργαστές βρίσκεται στην κάρτα της ΚΜΕ


Η κρυφή μνήμη δεν τοποθετείται μόνο ανάμεσα στον επεξεργαστή και την κύρια μνήμη αλλά και ανάμεσα στην κύρια και δευτερεύουσα μνήμη. Έτσι όλοι οι σύγχρονοι σκληροί δίσκοι (και άλλες περιφερειακές συσκευές) διαθέτουν κρυφή μνήμη.

Στα περισσότερα συστήματα υπολογιστών η κρυφή μνήμη είναι οργανωμένη σε μία πολυεπίπεδη διαβάθμιση. Πιο συγκεκριμένα, υπάρχουν δύο επίπεδα κρυφής μνήμης:

  • το 1ο επίπεδο κρυφής μνήμης (Level 1 cache ή L1) ή εσωτερική κρυφή μνήμη ή πρωταρχική κρυφή μνήμη: (συνήθως) βρίσκεται μέσα στην κάρτα του επεξεργαστή και έχει την ίδια ταχύτητα με αυτόν.
  • το 2ο επίπεδο κρυφής μνήμης (Level 2 cache ή L2) ή εξωτερική κρυφή μνήμη ή δευτερεύουσα κρυφή μνήμη: (συνήθως) βρίσκεται στη μητρική πλακέτα του συστήματος (motherboard) ή σε ειδική κάρτα.

Η εξωτερική κρυφή μνήμη έχει συνήθως πολύ μεγαλύτερη χωρητικότητα από την εσωτερική. Για παράδειγμα ένα σύστημα υπολογιστή μπορεί να περιέχει 256 ΚΒ εσωτερικής κρυφής μνήμης και 256 MΒ εξωτερικής (χίλιες φορές μεγαλύτερη).

Σε ορισμένες υλοποιήσεις υπολογιστών έχει χρησιμοποιηθεί επιπλέον κρυφή μνήμη τρίτου επιπέδου (L3).