Διδακτικά Βιβλία του Παιδαγωγικού Ινστιτούτου

Αναζήτηση

Βρες
Εμφάνιση

Αρχές λειτουργίας της λανθάνουσας μνήμης

Η λανθάνουσα μνήμη (cache memory) ανήκει στα ανώτερα στρώματα της ιεραρχίας της μνήμης, επειδή χαρακτηρίζεται από τη μεγάλη ταχύτητα προσπέλασης αλλά και το υψηλό κόστος κατασκευής.

Συνήθως υλοποιείται με την τεχνολογία των στατικών μνημών (SRAM), που διαθέτουν τα δύο αυτά χαρακτηριστικά. Επίσης οι στατικές μνήμες έχουν μικρή πυκνότητα αποθήκευσης, ιδιαίτερα σε σχέση με τις δυναμικές μνήμες, που σε συνδυασμό με το υψηλό κόστος τους δεν τις καθιστούν κατάλληλες για τη δημιουργία όλου του χώρου της κύριας μνήμης.

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

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

Για τον σκοπό αυτό η λανθάνουσα μνήμη είναι οργανωμένη σε ενότητες λέξεων, που αναφέρονται και ως γραμμές (cache lines). Κάθε γραμμή της λανθάνουσας μνήμης έχει σταθερό μέγεθος (π.χ. 16 λέξεις) και περιλαμβάνει τα αντίγραφα λέξεων, που είναι γειτονικές στην κύρια μνήμη. Έτσι, μπορούμε να φανταστούμε ότι η κύρια μνήμη χωρίζεται σε αντίστοιχες νοητές ενότητες, μεγέθους όσο μια γραμμή της λανθάνουσας μνήμης. Ορισμένες από τις ενότητες αυτές μπορούν να αντιγραφούν στη λανθάνουσα μνήμη.

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

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

Αυτό συμβαίνει στα σημεία 1,2,3 και 4 του προγράμματος. Μετά από αυτά, όλες οι ενότητες της λανθάνουσας μνήμης είναι κατειλημμένες με περιεχόμενα της κύριας μνήμης. Όταν παρατηρηθεί η επόμενη αποτυχία λανθάνουσας μνήμης (με την εντολή «Read 18», στο σημείο 5), τότε μεταφέρεται η ενότητα 16-31 στη λανθάνουσα μνήμη, αντικαθιστώντας κάποια από τις ήδη αποθηκευμένες ενότητες της. Με ανάλογο τρόπο συνεχίζεται η εκτέλεση του προγράμματος μέχρι την ολοκλήρωσή του.

Όλες οι αναγκαίες λειτουργίες για τη διαχείριση της λανθάνουσας μνήμης γίνονται εντελώς αυτόματα από το υλικό του επεξεργαστή. Οι λειτουργίες αυτές είναι: - ο έλεγχος των περιεχομένων της λανθάνουσας μνήμης· - οι μεταφορές των δεδομένων από την κύρια μνήμη· - οι αντικαταστάσεις των δεδομένων όταν η λανθάνουσα μνήμη είναι πλήρης.

Έτσι δεν προκαλείται αξιόλογη καθυστέρηση στο πρόγραμμα που εκτελείται, γιατί κάτι τέτοιο θα εκμηδένιζε τα πλεονεκτήματα της λανθάνουσας μνήμης.