Πίσω

Παράδειγμα

  Δίνεται ο ακόλουθος κώδικας:

SW 512 (R0), R3    ; M[ 512 ] R3 (δείκτης κρυφής μνήμης 0)
LW R1, 1024 (R0)    ; R1 M[ 1024 ] (δείκτης κρυφής μνήμης 0)
LW R2, 512 (R0)    ; R2 M[ 512 ] (δείκτης κρυφής μνήμης 0)

  Εάν διαθέτουμε μία κρυφή μνήμη άμεσης αντιστοίχησης με διεγγραφή που αντιστοιχεί τις διευθύνσεις 512 και 1024 στο ίδιο μπλοκ και έναν καταχωρητή εγγραφής 4 λέξεων, τότε η τιμή του καταχωρητή R2 θα ισούται πάντοτε με τη τιμή του R3;

Aπάντηση

  Εάν ακολουθήσουμε την προσπέλαση στη κρυφή μνήμη, γίνεται φανερός ο κίνδυνος. Μετά την αποθήκευση τα δεδομένα του καταχωρητή R3 τοποθετούνται στον καταχωρητή εγγραφής. Η επόμενη φόρτωση χρησιμοποιεί τον ίδιο δείκτη και είναι αποτυχία. Η φόρτωση της 2ης εντολής προσπαθεί να θέσει την τιμή της θέσης 512 στον καταχωρητή R2, γεγονός που καταλήγει σε αποτυχία, στην περίπτωση που ο καταχωρητής εγγραφής δεν έχει ολοκληρώσει την εγγραφή της διεύθυνσης 512 στη μνήμη. Οπότε η ανάγνωση της διεύθυνσης 512 θα θέσει την παλιά, λανθασμένη τιμή στο μπλοκ της κρυφής μνήμης και στη συνέχεια στον καταχωρητή R2. Χωρίς τις απαραίτητες προφυλάξεις, το περιεχόμενο του R3 δεν θα είναι ίσο με εκείνο του R2.Τέλος παραδείγματος