Για να επιτευχθεί μεγαλύτερο εύρος ζώνης χρησιμοποιούνται τράπεζες μνήμης με εναλλασσόμενες σειριακές προσβάσεις. Μια γενίκευση της μεθόδου εναλλαγής είναι να επιτρέπονται πολλαπλές ανεξάρτητες προσβάσεις όπου πολλαπλοί ελεγκτές μνήμης θα επιτρέπουν στις τράπεζες να λειτουργούν ανεξάρτητα. Μ'έναν ελεγκτή μνήμης οι τράπεζες μπορούν να μοιράζονται τις γραμμές διευθύνσεων και έτσι η καθεμιά μπορεί να χρησιμοποιεί την πληροφορία που βρίσκεται στην αρτηρία μνήμης. Κάθε τράπεζα χρειάζεται ξεχωριστές γραμμές διευθυνσιοδότησης και πιθανόν άλλη αρτηρία δεδομένων. Για παράδειγμα μια συσκευή Εισόδου/Εξόδου μπορεί να χρησιμοποιήσει έναν ελεγκτή και μία τράπεζα, η ανάγνωση της κρυφής μνήμης να χρησιμοποιήσει έναν άλλον και η εγγραφή της έναν τρίτο ταυτόχρονα. Τέτοια σχεδίαση έχει νόημα να γίνει μόνο με τράπεζες μνήμης διαφορετικά οι πολλαπλές αναγνώσεις θα εξυπηρετούνται από μια μνήμη και θα έχουν μόνο μικρό όφελος από αυτή τη δυνατότητα. Όπως βλέπουμε ο όρος τράπεζα μνήμης έχει δύο διαφορετικούς ορισμούς. Γι' αυτό χρησιμοποιούμε τον όρο υπέρ-τράπεζα εννοώντας όλη την ενεργή μνήμη κατά τη μεταφορά ενός block και τον όρο τράπεζα για το μέρος της υπέρ-μνήμης που είναι εναλλασσόμενης λέξης. Το σχήμα 4.1.7, δείχνει την σχέση αυτή.
Aποφυγή των συγκρούσεων των τραπεζών μνήμης
Όταν το σύστημα μνήμης είναι σχεδιασμένο να υποστηρίζει πολλαπλές ανεξάρτητες αιτήσεις (όπως στην περίπτωση των συσκευών Εισόδου/Εξόδου που έχουν απευθείας πρόσβαση στη μνήμη και μπορούν να γράφουν και να διαβάζουν δεδομένα από μη συνεχόμενες διευθύνσεις) η αποδοτικότητα του συστήματος εξαρτάται από την συχνότητα που οι ανεξάρτητες αιτήσεις πηγαίνουν σε διαφορετικές τράπεζες.
Η σειριακή προσπέλαση δεδομένων, όπως επίσης και οι προσβάσεις που οι διευθύνσεις διαφέρουν κατά περιττό αριθμό δουλεύουν καλά με την κλασσική εναλλασσόμενη μνήμη. Το πρόβλημα υπάρχει όταν η διαφορά των διευθύνσεων είναι άρτιος αριθμός γιατί τότε τα δεδομένα είναι πολύ πιθανόν να βρίσκονται στην ίδια τράπεζα. Μία λύση που προτάθηκε ήταν να μειωθεί το ποσοστό αυτό με την αύξηση του αριθμού των τραπεζών. Το πρόβλημα με αυτή τη λύση είναι ότι οι αναφορές στα δεδομένα της μνήμης δεν είναι τυχαίες και μπορούν να πάνε στην ίδια τράπεζα ανεξάρτητα από τον αριθμό των τραπεζών που υπάρχουν.
Παράδειγμα
Για παράδειγμα υποθέτουμε ότι έχουμε 128 τράπεζες μνήμης και εκτελούμε τον παρακάτω κώδικα:
Με τον κώδικα αυτό διαβάζουμε όλα τα στοιχεία του πίνακα κατά στήλες, δηλαδή κατά σειρά x[0,0] , x[1,0] , x[2,0] κ.ο.κ. Τα στοιχεία αυτά όμως επειδή το 512 που είναι ο αριθμός των στηλών είναι άρτιο πολλαπλάσιο του 128 (που είναι ο αριθμός των τραπεζών), τα στοιχεία κάθε στήλης θα είναι στην ίδια τράπεζα. Πιο ειδικά, τα στοιχεία της στήλης 0 θα βρίσκονται στην τράπεζα 0, της στήλης 1 στην τράπεζα 1 κ.ο.κ. Έτσι το σύστημα θα κολλάει σε αποτυχίες της κρυφής μνήμης άσχετα με το πόσο πολύπλοκη ή σύγχρονη είναι η ΚΜΕ ή το σύστημα μνήμης.
Για την επίλυση του προβλήματος υπάρχουν λύσεις με λογισμικό αλλά και λύσεις με υλικό. Ο μεταγλωττιστής θα μπορούσε να κάνει βελτιστοποίηση της εναλλαγής του βρόχου για να αποφύγει το πρόβλημα ή πιο απλά να επεκτείνει το μέγεθος του πίνακα ώστε αυτό να μην είναι δύναμη του 2 έτσι ώστε οι παραπάνω διευθύνσεις να πάνε σε διαφορετικές τράπεζες.
Η αντιστοίχηση των διευθύνσεων σε μία θέση της τράπεζας μνήμης γίνεται με τις εξής εξισώσεις των τύπων 1,2:
Η λύση μέσω υλικού που δόθηκε για την μείωση των συγκρούσεων των τραπεζών μνήμης είναι ο περιορισμός το πλήθος των τραπεζών να είναι πρώτος αριθμός. Τέτοιοι αριθμοί απαιτούν συνήθως πολύπλοκους υπολογισμούς για να βρεθεί το υπόλοιπο και το πηλίκο αλλά υπάρχουν αρκετά σχήματα για να γίνει αυτός ο υπολογισμός γρήγορα. Σ' αυτή την περίπτωση η διαίρεση αντικαθίσταται από τον εξής υπολογισμό:
Εφόσον ο αριθμός των λέξεων στην τράπεζα μνήμης είναι συνήθως δύναμη του 2 έχουμε αντικαταστήσει τη διαίρεση με την επιλογή του bit.
Τα 3 στοιχεία μνήμης στα αριστερά του σχήματος 4.1.8, απαιτούν μια διαίρεση για την διευθυνσιοδότηση της λέξης μέσα στο στοιχείο ενώ η νέα αντιστοίχηση απαιτεί μόνο το υπόλοιπο μιας δύναμης του 2.
Παράδειγμα
Για τη διεύθυνση 5 έχουμε:
Αριθμός τράπεζας = 5 MOD 3 = 2
Διεύθυνση μέσα στην τράπεζα = 5 / 3 = 1
'Aρα η διεύθυνση 5 αντιστοιχίζεται στην διεύθυνση 1 της τράπεζας (στοιχείου) 2.
Αριθμός τράπεζας = 5 MOD 3 = 2
Διεύθυνση μέσα στην τράπεζα = 5 ΜΟD 8 = 5
'Aρα η διεύθυνση 5 αντιστοιχεί στην διεύθυνση 5 της τράπεζας (στοιχείου) 2.
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 8
Με ποιον τρόπο αποφεύγονται οι συγκρούσεις των τραπεζών μνήμης; Να συγκρίνετε την απάντησή σας με την παράγραφο που μόλις διαβάσατε: «Αποφυγή των συγκρούσεων των τραπεζών μνήμης».
ΔΡΑΣΤΗΡΙΟΤΗΤΑ 9
|
|