20Aug

Όταν η κρυφή μνήμη CPU ξεπλύνεται πίσω στην κύρια μνήμη;

click fraud protection

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

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

Η ερώτηση

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

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

Πότε είναι η κρυφή μνήμη της CPU ξεπλυμένη πίσω στην κύρια μνήμη;

Οι απαντήσεις

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

instagram viewer

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

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

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

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

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

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

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

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

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

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

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

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

: Lemsipmatt( Flickr)