Αρχική σελίδα » πως να » Πότε εκκενώθηκε η προσωρινή μνήμη cache της CPU Επιστροφή στην κύρια μνήμη;

    Πότε εκκενώθηκε η προσωρινή μνήμη cache της CPU Επιστροφή στην κύρια μνήμη;

    Εάν μόλις αρχίσετε να μαθαίνετε πώς οι επεξεργαστές πολλαπλών πυρήνων, η κρυπτογράφηση, η συνεκτικότητα της μνήμης cache και η μνήμη λειτουργούν, ίσως φαίνεται να προκαλεί κάποια σύγχυση. Με αυτό το σκεπτικό, η σημερινή θέση SuperUser Q & A έχει απαντήσεις σε μια ερώτηση περίεργου αναγνώστη.

    Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα που κατευθύνεται από τους ιστότοπους ερωτήσεων & απαντήσεων.

    Το ερώτημα

    Ο αναγνώστης SuperUser CarmeloS θέλει να μάθει πότε η μνήμη cache της CPU ξεπλένεται πίσω στην κύρια μνήμη:

    Εάν έχω CPU με δύο πυρήνες και κάθε πυρήνας έχει τη δική του μνήμη L1, είναι δυνατόν οι Core1 και Core2 να αποθηκεύουν ταυτόχρονα το ίδιο μέρος της μνήμης; Εάν είναι δυνατόν, ποια θα είναι η τιμή της κύριας μνήμης εάν και οι Core1 και Core2 έχουν επεξεργαστεί τις τιμές τους στην προσωρινή μνήμη?

    Όταν η κρυφή μνήμη της CPU ξεπλυθεί στην κεντρική μνήμη?

    Η απάντηση

    Οι συνδρομητές του SuperUser David Schwartz, sleske και Kimberly W έχουν την απάντηση για εμάς. Πρώτα, ο David Schwartz:

    Εάν έχω CPU με δύο πυρήνες και κάθε πυρήνας έχει τη δική του μνήμη L1, είναι δυνατόν οι Core1 και Core2 να αποθηκεύουν ταυτόχρονα το ίδιο μέρος της μνήμης?

    Ναι, η απόδοση θα ήταν τρομερή αν αυτό δεν συνέβαινε. Εξετάστε δύο θέματα που εκτελούν τον ίδιο κώδικα. Θέλετε αυτόν τον κώδικα και στις δύο κρυφές μνήμες L1.

    Εάν είναι δυνατόν, ποια θα είναι η τιμή της κύριας μνήμης εάν και οι Core1 και Core2 έχουν επεξεργαστεί τις τιμές τους στην προσωρινή μνήμη?

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

    Ακολουθούμενη από την απάντηση από το sleske:

    Ναι, έχοντας δύο κρυφές μνήμες caches η ίδια περιοχή μνήμης μπορεί να συμβεί και είναι στην πραγματικότητα ένα πρόβλημα που συμβαίνει πολύ στην πράξη. Υπάρχουν διάφορες λύσεις, για παράδειγμα:

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

    Το πρόβλημα ονομάζεται συνάφεια κρυφής μνήμης και το άρθρο της Wikipedia σχετικά με το θέμα έχει μια καλή επισκόπηση του προβλήματος και πιθανές λύσεις.

    Και η τελική μας απάντηση από την Kimberly W:

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

    Το άλλο πρωτόκολλο είναι write-through. Σε αυτή την περίπτωση, οποιαδήποτε στιγμή το μπλοκ μνήμης είναι γραμμένο σε επίπεδο n, το αντίστοιχο μπλοκ στο επίπεδο n + 1 ενημερώνεται. Είναι παρόμοιο με τη συμπλήρωση μιας φόρμας με χαρτί από άνθρακα κάτω από αυτή. ό, τι γράφετε στην κορυφή αντιγράφεται στο παρακάτω φύλλο. Αυτό είναι πιο αργό, επειδή περιλαμβάνει προφανώς περισσότερες λειτουργίες γραφής, αλλά οι τιμές μεταξύ των προσωρινών αποθηκευτικών δεδομένων είναι πιο συνεπείς. Στο σχήμα εγγραφής, μόνο η μνήμη cache υψηλότερου επιπέδου θα έχει την πιο ενημερωμένη τιμή για ένα συγκεκριμένο μπλοκ μνήμης.


    Έχετε κάτι να προσθέσετε στην εξήγηση; Απενεργοποιήστε τα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους τεχνολογικούς χρήστες Stack Exchange; Δείτε το πλήρες νήμα συζήτησης εδώ.

    Πιστωτική εικόνα: Lemsipmatt (Flickr)