Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ: ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών ΑΛΕΞΑΝΔΡΗ ΦΩΚΙΩΝΑ του ΓΕΩΡΓΙΟΥ Αριθμός Μητρώου: 5913 Θέμα «Διαχείριση Κοινών Πόρων σε Πολυπύρηνους Επεξεργαστές» Επιβλέπων Επίκουρος Καθηγητής, Στέφανος Καξίρας Συνεξεταστής Καθηγητής, Αλέξης Μπίρμπας Αριθμός Διπλωματικής Εργασίας: Πάτρα, Ιανουάριος 211 1

2 2

3 ΠΙΣΤΟΠΟΙΗΣΗ Πιστοποιείται ότι η Διπλωματική Εργασία με θέμα «Διαχείριση Κοινών Πόρων σε Πολυπύρηνους Επεξεργαστές» Του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών Αλεξανδρή Φωκίωνα του Γεωργίου Αριθμός Μητρώου: 5913 Παρουσιάστηκε δημόσια και εξετάστηκε στο Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών στις.../../211 Ο Επιβλέπων Ο Διευθυντής του Τομέα ΚΑΞΙΡΑΣ ΧΟΥΣΟΣ ΣΤΕΦΑΝΟΣ, ΕΥΘΥΜΙΟΣ, Επίκουρος Καθηγητής Καθηγητής 3

4 4

5 Αριθμός Διπλωματικής Εργασίας: Θέμα: «Διαχείριση Κοινών Πόρων σε Πολυπύρηνους Επεξεργαστές» Φοιτητής: Αλεξανδρής Φωκίων Επιβλέπων: Καξίρας Στέφανος Περίληψη Οι σύγχρονες τάσεις της Επιστήμης Σχεδιασμού των Υπολογιστικών Συστημάτων έχουν υιοθετήσει την χρήση των Κρυφών Μνημών ή Μνημών Cache, αποβλέποντας στην απόκρυψη της Καθυστέρησης της Κύριας Μνήμης των Συστημάτων (Memory Latency) και την γεφύρωση του χάσματος της απόδοσης του Επεξεργαστή και της Κύριας Μνήμης (Processor Memory Performance Gap). Οι Μνήμες Cache έτσι έχουν αποκτήσει αδιαμφισβήτητα πρωτεύοντα ρόλο στην Ιεραρχία Μνήμης των Ηλεκτρονικών Υπολογιστών. Οι νέες τάσεις Σχεδιασμού ανέδειξαν την Έννοια του Παραλληλισμού σε πρωτεύοντα ρόλο. Αρχικά διερευνήθηκε ο Παραλληλισμός Επιπέδου Εντολών, ωστόσο η αύξηση της Απόδοσης των Υπολογιστών σύντομα έφτασε ένα μέγιστο. Την τελευταία δεκαετία το κέντρο του ενδιαφέροντος των σχεδιαστών έχει και πάλι μετατοπιστεί, καθώς ένας νέος τύπος Επεξεργαστών έχει εισέλθει στο προσκήνιο, οι Πολυπύρηνοι Επεξεργαστές, ή όπως είναι αλλιώς γνωστοί on-chip Multiprocessors (CMP). Αυτές οι εξελίξεις, σε συνδυασμό με την ολοένα αυξανόμενη πολυπλοκότητα της συμπεριφοράς των εκτελούμενων Εφαρμογών, ώθησαν το σχεδιαστικό ενδιαφέρον προς την εκμετάλλευση ενός νεοσύστατου τύπου Παραλληλισμού. Ο Παραλληλισμός Επιπέδου Μνήμης ή Memory Level Parallelism (MLP) αποτελεί τα τελευταία χρόνια, το πλέον ισχυρό μέσο αύξησης της απόδοσης των Υπολογιστικών Συστημάτων και μαζί με τους Πολυπύρηνους Επεξεργαστές θα κυριαρχήσει στο προσκήνιο των εξελίξεων τα επόμενα χρόνια. Σκοπός της παρούσας Διπλωματικής Εργασίας είναι η ανάπτυξη ενός Στατιστικού Πιθανοτικού Μοντέλου για μελέτη και πρόβλεψη των φαινομένων που αναπτύσσονται σε Μνήμες Cache, στις οποίες αποθηκεύονται δεδομένα από εκτελούμενες Εφαρμογές, με έντονο Παραλληλισμό Επιπέδου Μνήμης. Θα οριστεί ένας Εκτιμητής του Φόρτου που επιβάλλεται στο Σύστημα, από φαινόμενα Παραλληλισμού Επιπέδου Μνήμης (MLP). Στην συνέχεια, με βάση το Μοντέλο που αναπτύσσουμε, θα διερευνηθεί ένα ικανοποιητικό σύνολο Εφαρμογών, και θα εξαχθεί μια Εκτίμηση Πρόβλεψη για τον Φόρτο (MLP) του Συστήματος. Εφόσον οι Προβλέψεις μας κριθούν επιτυχής, το Μοντέλο Πρόβλεψης Φόρτου MLP που αναπτύξαμε, μπορεί να αποτελέσει χρήσιμο Εργαλείο στα χέρια των Σχεδιαστών που ασχολούνται με την αύξηση της Απόδοσης των Σύγχρονων Υπολογιστικών Συστημάτων. 5

6 6

7 Πρόλογος Ευχαριστώ θερμά όσους συνέβαλαν στην συγγραφή αυτής της Διπλωματικής Εργασίας. Τον κ. Στέφανο Καξίρα για την φιλικότητα και την συνεργασία του. Τον Παύλο Πετούμενο για την υπομονετική καθοδήγηση, την συνεχή βοήθεια και συμβολή του στην επίλυση προβλημάτων, χωρίς τον οποίο, η εκπόνηση της παρούσας Εργασίας θα ήταν ένα πολύ δυσκολότερο έργο. Πάτρα, 25 Ιανουαρίου 211 7

8 ΠΕΡΙΕΧΟΜΕΝΑ 1) Εισαγωγή...1 2) Θεωρητικό Υπόβαθρο και Εργαλεία ) Μνήμη Cache ) Γενικά και Ιστορική Αναδρομή ) Η Cache στην Ιεραρχία της Μνήμης των Προσωπικών Υπολογιστών ) Αρχές λειτουργίας και Έννοιες ) Λειτουργία και Οργάνωση ) Εσωτερική Οργάνωση, Shared και Multilevel Caches ) Simplescalar ) StatCache ) Εισαγωγή ) Θεωρία και Ορισμοί ) Υλοποίηση ) Παρατηρήσεις ) Πώς θα χρησιμοποιήσουμε το StatCache ) Memory-Level Parallelism ) Σύντομοι Ορισμοί και Εισαγωγή ) MLP, Ορισμός ) Λογικές, Υλοποιήσεις και Προσθήκες Υλικού που ευνοούν τον MLP ) Out-of-Order Επεξεργαστής ) Non-blocking Caches ) Miss Handling Architecture ) Run-ahead Execution ) Κόστος MLP ) Μοντελοποιήσεις Μηχανισμού Πρόβλεψης του Παραλληλισμού Επιπέδου Μνήμης (MLP) ) Σκοπός ) Χρήσιμες Έννοιες Στατιστικής και Θεωρίας Πιθανοτήτων ) Σχετικό Σφάλμα ) Ιστογράμματα ) Επικρατούσα Τιμή ) Συνδυασμοί και Αναδιατάξεις ) Απλή Μοντελοποίηση ) Η βασική Ιδέα ) Βελτιώσεις του Απλού Μοντέλου ) Σύνθετη Μοντελοποίηση ) Η βασική Ιδέα...5 8

9 4.4.2) Α' Βελτίωση του Σύνθετου Μοντέλου Αποδεκτή προσέγγιση του Miss Ratio ) B' Βελτίωση του Σύνθετου Μοντέλου Παράλληλες Εντολές, Αλληλεξαρτήσεις και Πιθανότητες ) Γ' Βελτίωση του Σύνθετου Μοντέλου Βέλτιστος Αριθμός Παράλληλων Εντολών ανά Εφαρμογή ) Αποτελέσματα και Ανάλυση ) Εισαγωγή και Ρυθμίσεις Εξομοίωσης ) Απλό Μοντέλο - Μετρήσεις, Παρατηρήσεις και Συμπεράσματα ) Βελτιώσεις του Απλού Μοντέλου - Μετρήσεις, Παρατηρήσεις και Συμπεράσματα ) Σύνθετη Μοντελοποίηση - Μετρήσεις, Παρατηρήσεις και Συμπεράσματα ) Α' Βελτίωση του Σύνθετου Μοντέλου Miss Ratio ) Αλλαγές (α), (β) και (γ) - Μετρήσεις, Παρατηρήσεις και Συμπεράσματα ) Τελευταία Αλλαγή (δ) - Μετρήσεις, Παρατηρήσεις και Συμπεράσματα ) Β' Βελτίωση του Σύνθετου Μοντέλου Παράλληλες Εντολές και Αλληλεξαρτήσεις - Μετρήσεις, Παρατηρήσεις και Συμπεράσματα ) Γ' Βελτίωση του Σύνθετου Μοντέλου Βέλτιστος Αριθμός Παράλληλων Εντολών - Μετρήσεις, Παρατηρήσεις και Συμπεράσματα ) Ανάλυση και Ειδικές Περιπτώσεις Μετροπρογραμμάτων ) Παρουσίαση Τελικών Αποτελεσμάτων ανά ) Η Περίπτωση του Υβριδικού Μοντέλου ) Η Ειδική Περίπτωση του Facerec ) Δοκιμή Σύνθετο Μοντέλο Πρόβλεψης, μόνο με Loads ) Συμπεράσματα, Μελλοντικές Βελτιώσεις Επεκτάσεις ) Αναφορές και Βιβλιογραφία

10 1) Εισαγωγή Οι σύγχρονες τάσεις της Επιστήμης Σχεδιασμού των Υπολογιστικών Συστημάτων έχουν υιοθετήσει την χρήση των Κρυφών Μνημών ή Μνημών Cache, αποβλέποντας στην απόκρυψη της Καθυστέρησης της Κύριας Μνήμης των Συστημάτων (Memory Latency) και την γεφύρωση του χάσματος της απόδοσης του Επεξεργαστή και της Κύριας Μνήμης (Processor Memory Performance Gap). Οι Μνήμες Cache έτσι έχουν αποκτήσει αδιαμφισβήτητα πρωτεύοντα ρόλο στην Ιεραρχία Μνήμης των Ηλεκτρονικών Υπολογιστών. Επίσης τα τελευταία χρόνια, η περαιτέρω αύξηση της Συχνότητας Λειτουργίας των Επεξεργαστών έχει πάψει να ενδιαφέρει τους σχεδιαστές. Οι νέες τάσεις προσανατολίζονται προς την μείωση της κατανάλωσης Ενέργειας, καθώς και προς την αύξηση των Εκτελούμενων Εντολών ανά Κύκλο του Επεξεργαστή (Instructions per Cycle ή IPC). Για αυτούς τους λόγους, η Έννοια του Παραλληλισμού έχει αποκτήσει μεγάλη σημασία. Αρχικά διερευνήθηκε ο Παραλληλισμός Επιπέδου Εντολών και έφερε στο προσκήνιο τους Superscalar και Out-of-Order Επεξεργαστές. Ωστόσο η αύξηση της Απόδοσης των Υπολογιστών σύντομα έφτασε ένα μέγιστο. Την τελευταία δεκαετία το κέντρο του ενδιαφέροντος των σχεδιαστών έχει και πάλι μετατοπιστεί, καθώς ένας νέος τύπος Επεξεργαστών έχει εισέλθει στο προσκήνιο, οι Πολυπύρηνοι Επεξεργαστές, ή όπως είναι αλλιώς γνωστοί on-chip Multiprocessors (CMP). Αυτές οι εξελίξεις, σε συνδυασμό με την ολοένα αυξανόμενη πολυπλοκότητα της συμπεριφοράς των εκτελούμενων Εφαρμογών και τον μεγάλο φόρτο Δεδομένων που αυτές επιβάλουν στις Μνήμες των Υπολογιστών, ώθησαν το σχεδιαστικό ενδιαφέρον προς την εκμετάλλευση ενός νεοσύστατου τύπου Παραλληλισμού. Ο Παραλληλισμός Επιπέδου Μνήμης ή Memory Level Parallelism (MLP) αποτελεί τα τελευταία χρόνια, το πλέον ισχυρό μέσο αύξησης της απόδοσης των Υπολογιστικών Συστημάτων και μαζί με τους Πολυπύρηνους Επεξεργαστές θα κυριαρχήσει στο προσκήνιο των εξελίξεων τα επόμενα χρόνια. Σκοπός της παρούσας Διπλωματικής Εργασίας είναι η ανάπτυξη ενός Στατιστικού Πιθανοτικού Μοντέλου για μελέτη και πρόβλεψη των φαινομένων που αναπτύσσονται σε Μνήμες Cache, στις οποίες αποθηκεύονται δεδομένα από εκτελούμενες Εφαρμογές, με έντονο Παραλληλισμό Επιπέδου Μνήμης. Θα οριστεί ένας Εκτιμητής του Φόρτου που επιβάλλεται στο Σύστημα, από φαινόμενα Παραλληλισμού Επιπέδου Μνήμης (MLP). Στην συνέχεια, με βάση το Μοντέλο που αναπτύσσουμε, θα διερευνηθεί ένα ικανοποιητικό σύνολο Εφαρμογών, και θα εξαχθεί μια Εκτίμηση Πρόβλεψη για τον Φόρτο (MLP) του Συστήματος. Εφόσον οι Προβλέψεις μας κριθούν επιτυχής, το Μοντέλο Πρόβλεψης Φόρτου MLP που αναπτύξαμε, μπορεί να αποτελέσει χρήσιμο Εργαλείο στα χέρια των Σχεδιαστών που ασχολούνται με την αύξηση της Απόδοσης των Σύγχρονων Υπολογιστικών Συστημάτων. Στο Κεφάλαιο 2 θα αναλύσουμε τα Εργαλεία της έρευνας μας. Παρουσιάζουμε αρχικά τις Μνήμες Cache. Έπειτα από μια σύντομη Ιστορική αναδρομή, εντάσσουμε τις Cache στην Ιεραρχία Μνήμης των Υπολογιστικών Συστημάτων και ορίζουμε κάποιες Βασικές Έννοιες, απαραίτητες στον Αναγνώστη για την βαθύτερη κατανόηση του Αντικειμένου της παρούσας Εργασίας. Στην συνέχεια εμβαθύνουμε και αναφερόμαστε στις θεμελιώδεις Λειτουργίες της Μνήμης Cache και τέλος περιγράφουμε την Εσωτερική Δομή των Σύγχρονων Μνημών Cache. Ακολουθεί μια σύντομη παρουσίαση του Εξομοιωτή Simplescalar [11] [12], που θα χρησιμοποιήσουμε εκτενώς στις έρευνες μας, καθώς και των βασικών Αρχών Λειτουργίας του. Τελικά παρουσιάζουμε και το στατιστικό Μοντέλο StatCache [1] [13] που θα χρησιμοποιήσουμε ως βάση του δικού μας 1

11 Μοντέλου πρόβλεψης και εκτίμησης. Εξηγούμε τις Αρχές Λειτουργίας του Μοντέλου και τον τρόπο με τον οποίο θα το χρησιμοποιήσουμε, ώστε να εξάγουμε τα αποτελέσματα μας. Στο Κεφάλαιο 3 θα ορίσουμε την Έννοια του Παραλληλισμού Επιπέδου Μνήμης. Αρχίζουμε με μια σύντομη αναφορά στον Παραλληλισμό Επιπέδου Εντολής (ILP), για την δημιουργία θεωρητικού υπόβαθρου στον Αναγνώστη. Αμέσως μετά δικαιολογούμε γιατί ο Παραλληλισμός Επιπέδου Εντολής δεν ήταν αρκετός, για περαιτέρω αύξηση της Απόδοσης των Υπολογιστικών Συστημάτων και πως ήρθε ο Παραλληλισμός Επιπέδου Μνήμης (MLP) στο προσκήνιο των τεχνολογικών Εξελίξεων. Έτσι αφού αναφέρουμε με ποιόν τρόπο το ενδιαφέρον των σύγχρονων τάσεων της Τεχνολογίας των Υπολογιστών στράφηκε προς τον Παραλληλισμό Επιπέδου Μνήμης (MLP), τον ορίζουμε και δίνουμε παραδείγματα κατανόησης. Ακολούθως παρουσιάζουμε αρκετές νέες Τεχνικές και Υλοποιήσεις Υλικού (Hardware) που είτε ενισχύουν την εμφάνιση του Παραλληλισμού Επιπέδου Μνήμης (MLP), είτε σε συνδυασμό με τον MLP συνεισφέρουν σημαντικά στην αύξηση της απόδοσης των Υπολογιστικών Συστημάτων. Για παράδειγμα εξοικειώνουμε τον Αναγνώστη με τις σύγχρονες Υλοποιήσεις των Out-of-Order Επεξεργαστών, των Non-blocking Caches και της Miss Handling Architecture. Την πλειοψηφία αυτών των τεχνολογιών χρησιμοποιούμε και εμείς στις Έρευνες που διεξάγαμε για την παρούσα Εργασία. Στο τέλος του Κεφαλαίου, ορίζουμε το Κόστος του Παραλληλισμού Επιπέδου Μνήμης, μια Έννοια μεγάλης σημασίας που θα μας απασχολήσει μέχρι το τέλος αυτής της Έρευνας. Στο Κεφάλαιο 4, αναπτύσσουμε τις Μοντελοποιήσεις που υιοθετήσαμε για την μελέτη του MLP στις Μνήμες Cache και εξηγούμε τις ιδέες μας. Ως εισαγωγή στο Κεφάλαιο, παρουσιάζουμε τις Έννοιες της Στατιστικής και της Θεωρίας των Πιθανοτήτων που θα χρησιμοποιήσουμε καθ'όλη την διάρκεια αυτής της Εργασίας. Συνεχίζουμε με ένα Απλό Μοντέλο Πρόβλεψης του Κόστους MLP, στο οποίο εξηγούμε πως ορίσαμε τον Εκτιμητή ύπαρξης του Παραλληλισμού Επιπέδου Μνήμης και με ποια λογική τον χρησιμοποιήσαμε, ώστε να προβλέψουμε το Κόστος MLP. Τροποποιούμε αυτή την Απλή Μέθοδο, για να δώσει τα βέλτιστα δυνατά αποτελέσματα. Στην συνέχεια εισάγουμε το Σύνθετο Μοντέλο. Εξηγούμε με ποιο τρόπο θα χρησιμοποιήσουμε το Μοντέλο StatCache και επιχειρούμε αρχικά προσέγγιση του Miss Ratio των Εντολών της Εφαρμογής που εξετάζουμε. Προχωρούμε σε ορισμένες βελτιώσεις αυτής της εκδοχής του Μοντέλου και αφού επιτύχουμε στην Πρόβλεψη του Miss Ratio, συνεχίζουμε με τον προσδιορισμό του νέου Σύνθετου Εκτιμητή Παραλληλισμού Επιπέδου Μνήμης και επιχειρούμε την Πρόβλεψη του Κόστους MLP ανά Εντολή. Προβαίνουμε σε κάποιες τελικές διορθώσεις βελτιώσεις της μεθοδολογίας του Μοντέλου μας, ώστε να έρθει στην τελική του μορφή. Στο Κεφάλαιο 5, θα παρουσιάσουμε εν συντομία το Υπολογιστικό Σύστημα που μοντελοποιήσαμε για την διεξαγωγή της έρευνας μας, καθώς και αναλυτικά τα αποτελέσματα της έρευνας καθ'όλη την διάρκειά της, παράλληλα με την συλλογιστική πορεία μας και τις παρατηρήσεις μας. Για κάθε βήμα συγκρίνουμε την Πρόβλεψη μας, με εκείνη του προηγούμενου βήματος και δείχνουμε την βελτίωση που επιτύχαμε. Κάθε φορά αναφέρουμε επίσης για ποιους λόγους πιστεύουμε ότι μπορούμε να επιτύχουμε ακόμα καλύτερη προσέγγιση του Κόστους MLP και εξηγούμε διεξοδικά, με την βοήθεια των Γραφικών παραστάσεων τους συλλογισμούς μας. Στο τέλος παραθέτουμε τα Συμπεράσματα μας και προτείνουμε πιθανές μελλοντικές κατευθύνσεις της παρούσας έρευνας. 11

12 2) Θεωρητικό Υπόβαθρο και Εργαλεία 2.1) Μνήμη Cache Ορισμός: Μνήμη Cache ή Κρυφή Μνήμη ονομάζεται μια μικρή και γρήγορη μνήμη που παρεμβάλλεται ανάμεσα από τον Επεξεργαστή και την Κύρια Μνήμη ενός Υπολογιστικού Συστήματος, για λόγους αύξησης της απόδοσης του ) Γενικά και Ιστορική Αναδρομή Μέχρι τις αρχές της δεκαετίας του 199, οι Επεξεργαστές και οι Μνήμες των υπολογιστών, όσο και ο δίαυλος της μεταξύ τους επικοινωνίας, δούλευαν σε παραπλήσιες ή έστω συγκρίσιμες συχνότητες λειτουργίας. Ωστόσο από το 199 και μετά άρχισε η σημαντική αύξηση της συγκέντρωσης τρανζίστορ στην μοναδιαία τετραγωνική επιφάνεια πυριτίου (διπλασιασμός της πυκνότητας τρανζίστορ ανά τετραγωνική ίντσα, κάθε 12 μήνες, σύμφωνα και με την επιτυχή πρόβλεψη του νόμου του Moore). Παράλληλα ήρθε και η ραγδαία αύξηση της συχνότητας λειτουργίας (ταχύτητας CPU Clock Speed) των επεξεργαστών. Ως αποτέλεσμα οι επιδόσεις των Επεξεργαστών αυξάνονταν με ρυθμό 6% ετησίως, ενώ οι επιδόσεις των Μνημών με μόλις 7% και έτσι προέκυψε το γνωστό σε όλους θεώρημα Processor Memory Performance Gap, ή όπως ονομάζεται αλλιώς, το Επικείμενο Τοίχος Μνήμης (Memory Wall). Εικόνα 1: Processor - Memory Performance Gap Σαν προέκταση του νόμου του Moore, από τις πιο πάνω καμπύλες, προκύπτει ότι η απόσταση των αποδόσεων αυξάνεται με ρυθμό 5% ετησίως. Η αύξηση της απόδοσης των μνημών ήταν εφικτή αλλά αντί-οικονομική λόγω του μεγέθους τους. Το μεγάλο πρόβλημα που δημιουργήθηκε από αυτές τις εξελίξεις, συνοψίζεται στο ότι οι Επεξεργαστές ήταν αναγκασμένοι να περιμένουν (wait state) τις αργές μνήμες να μεταφέρουν τα αναγκαία δεδομένα στους Registers, ώστε οι πρώτοι να συνεχίσουν με την διεξαγωγή των υπολογισμών. Συνεπώς η ταχύτητα υπολογισμών του Επεξεργαστή ήταν καταδικασμένη να μην αξιοποιείται (καθυστέρηση latency) και οι μνήμες επέβαλαν την δική τους ταχύτητα σε ολόκληρο το υπολογιστικό σύστημα (Memory Bottleneck). Η λύση ήρθε με την αλλαγή της ιεραρχίας της μνήμης στους υπολογιστές, και την προσθήκη των Κρυφών Μνημών, ή όπως είναι ευρύτερα γνωστές, Μνήμες Cache. Η λέξη Cache έχει γαλλικές ρίζες και σαν ουσιαστικό της Αγγλικής γλώσσας σημαίνει: α.- μια κρύπτη, κρυψώνα για αποθήκευση αγαθών ή προμηθειών (υπονοείται προνοητικός χαρακτήρας) 12

13 β.- ένα μέρος για απόκρυψη και ασφάλιση πολύτιμων αγαθών ενώ σαν ρήμα σημαίνει : α.- κρύβω β.- αποθηκεύω. Για πρώτη φορά συναντάμε την έννοια Cache, στην δεκαετία του 196, στενά συνυφασμένη με την απαρχή της έννοιας της Εικονικής Μνήμης (Virtual Memory), των τότε Υπολογιστικών Συστημάτων. Η Cache χρησιμοποιούταν, λόγω της μεγαλύτερης ταχύτητας της, στον λίγο - πολύ οικείο ρόλο, της προνοητικής μεταφοράς (prefetching) εντολών ή δεδομένων, ακριβώς πριν αυτά απαιτηθούν από τον Επεξεργαστή. Στην συνέχεια, την εποχή της εμφάνισης των Προσωπικών Υπολογιστών (PC), η έννοια Cache, έχει παρέλθει σε 2η μοίρα. Όταν όμως ο Επεξεργαστής του Intel 8386 έχει πλέον συχνότητα 2MHz και η DRAM Μνήμη παρουσιάζει Καθυστέρηση (latency) της τάξης των 12ns, η Cache έρχεται πάλι στο προσκήνιο. Αρχικά η Cache προσαρμόζονταν στην Motherboard του Υπολογιστή σαν εξωτερική προσθήκη μνήμης, ενώ στον Intel 8486 ενσωματώθηκαν για 1η φορά 8ΚΒ μνήμης Cache απευθείας στον Επεξεργαστή και ονομάστηκε Level 1, ώστε να διαχωριστεί από την εξωτερική Level 2 Cache της Motherboard. Από τον Επεξεργαστή Intel Pentium Pro και μετά, η Cache σχεδιάζεται ενσωματωμένη στο chip του Επεξεργαστή και χρονισμένη στην ίδια συχνότητα με αυτόν. Αν και η αύξηση της συχνότητας των Επεξεργαστών δεν είναι πια, μέχρι και σήμερα, η μέγιστη προτεραιότητα των σχεδιαστών, η σημασία της χρήσης των Μνημών Cache παραμένει μεγάλη. Το 2% έως 4% της επιφάνειας ενός σύγχρονου Επεξεργαστή καλύπτεται από Μνήμες Cache. Τα πιο διαδεδομένα είδη Cache, εκτός από την βασική χρήση τους, είναι η Trace Cache, η Victim Cache, η Burst Mode Cache, η Pseudo-Associative Cache και η ειδικού σκοπού Cache που ονομάζεται Translation Look-aside Buffer (TLB) και χρησιμοποιείται σαν ευρετήριο για τις Εικονικές Διευθύνσεις Μνήμης των σύγχρονων Υπολογιστών. Οι Caches χρησιμοποιούνται επίσης σε διατάξεις όπως οι πολυεπίπεδες Caches (Multilevel) για επιτάχυνση της απόδοσης του Υπολογιστικού Συστήματος και οι Κοινόχρηστες Caches (Shared) για κοινή χρήση δεδομένων μεταξύ των πυρήνων των πολυπύρηνων επεξεργαστών ) Η Cache στην Ιεραρχία Μνήμης των Προσωπικών Υπολογιστών Σε έναν σύγχρονο Προσωπικό Υπολογιστή, τα διάφορα επίπεδα μνήμης οργανώνονται γύρω από τον Επεξεργαστή, σύμφωνα με την διάταξη που φαίνεται στην Εικόνα 2. Η Κύρια Μνήμη (Main Memory) και ο δίαυλος επικοινωνίας (ή FSB / Front Side Bus, όπως είναι ευρύτερα γνωστός) λειτουργούν στην ίδια συχνότητα και δημιουργούν το πρόβλημα της Καθυστέρησης (Latency) στην μεταφορά των δεδομένων προς τον Επεξεργαστή (ή CPU / Central Processing Unit). Για την αντιμετώπιση της Καθυστέρησης και αν είναι δυνατόν, για την απόκρυψη της, επιστρατεύουμε την μικρότερη και ταχύτερη Μνήμη Cache. Εικόνα 2: Οργάνωση μνήμης σε ένα Προσωπικό Υπολογιστή Όσον αφορά τις μνήμες των Υπολογιστών, εξαιτίας των τεχνολογιών υλοποίησης τους, 13

14 ισχύει αξιωματικά ο εξής συμβιβασμός: Όσο ταχύτερη είναι μια μνήμη, τόσο πιο μικρή σε χωρητικότητα δεδομένων θα είναι. Φυσικά ισχύει και το αντίστροφο, δηλαδή όσο πιο μεγάλη σε χωρητικότητα είναι μια μνήμη, τόσο πιο αργή θα κατασκευάζεται. Για την υλοποίηση της Κύριας Μνήμης χρησιμοποιούνται παραλλαγές της D-RAM μνήμης. Η D-RAM ή Dynamic-RAM χρησιμοποιεί 1 τρανζίστορ και 1 πυκνωτή για κάθε bit μνήμης. Ο πυκνωτής διατηρεί το φορτίο του, εφόσον η τιμή του bit είναι 1, αλλιώς δεν συγκρατεί φορτίο, εφόσον η τιμή του bit είναι. Το τρανζίστορ διαβάζει το περιεχόμενο του πυκνωτή. Οι μικροί αυτοί πυκνωτές ωστόσο, διατηρούν το φορτίο τους για ελάχιστο χρόνο, εξαιτίας των ρευμάτων διαρροής των πυκνωτών, άρα για να διατηρηθεί η τιμή τους, πρέπει να ανανεώνεται συνεχώς. Αυτός είναι ο λόγος ύπαρξης του Κυκλώματος Ανανέωσης, που διαβάζει και ανανεώνει το περιεχόμενο του κάθε πυκνωτή μερικές εκατοντάδες φορές το δευτερόλεπτο, είτε το αντίστοιχο bit χρησιμοποιείται ή όχι από τον Επεξεργαστή. Για την Cache χρησιμοποιείται S-RAM ή Static-RAM, υλοποίηση η οποία χρησιμοποιεί 4,6 ή περισσότερα τρανζίστορ για την συγκράτηση της τιμής του κάθε bit μνήμης. Όσο το ρεύμα τροφοδοτεί την μνήμη, η τιμή του bit δεν χάνεται ποτέ, και χρειάζεται να ανανεωθεί μόνο όταν γίνει εγγραφή μιας νέας τιμής. Έτσι η S-RAM είναι ταχύτερη και απαιτεί σημαντικά λιγότερη ενέργεια για τη λειτουργία της. Όμως απαιτεί περίπου τετραπλάσια επιφάνεια πυριτίου για την υλοποίηση της από ότι η D-RAM, και αρκετά ακριβότερα στοιχεία κατασκευής ανά bit. Εικόνα 3: Ιεραρχία Μνήμης Η Ιεραρχία Μνήμης που περιγράφουμε φαίνεται και στην Εικόνα 3, όπου όσο πιο κοντά στον Επεξεργαστή τοποθετείται μια μνήμη, τόσο πιο μικρή και γρήγορη φροντίζουμε να είναι. Όταν ο Επεξεργαστής απαιτήσει ένα δεδομένο, το αναζητεί στην Level 1 Cache (L1). Εφόσον δεν το βρει συνεχίζει την αναζήτηση στην Level 2 Cache (L2) και ούτω καθεξής. Αν το ζητούμενο δεδομένο δεν βρεθεί πουθενά στα επίπεδα της Cache, τότε ο Επεξεργαστής διακόπτει προσωρινά τους υπολογισμούς και συνεχίζει την αναζήτηση χαμηλότερα στην ιεραρχία, δηλαδή στην πιο αργή Main Memory. Αν το δεδομένο δεν υπάρχει ούτε και εδώ, τότε ψάχνουμε στα πιο μεγάλα και αργά μέσα αποθήκευσης, τους σκληρούς δίσκους, του Υπολογιστή. Άρα η λειτουργία της Cache, συνοψίζεται στην προσπάθεια να προβλέψει ποια δεδομένα θα χρειαστεί στην συνέχεια ο Επεξεργαστής και να του τα διαθέσει, ώστε να αποφευχθεί η Καθυστέρηση. Τα δεδομένα αυτά, όσο και ποια θα αντικατασταθούν (στην περίπτωση που η Cache έχει γεμίσει) επιλέγονται στρατηγικά 14

15 με έξυπνους αλγόριθμους αντικατάστασης (Replacement algorithms), ώστε οι προσβάσεις του Επεξεργαστή στη μνήμη να είναι όσο ταχύτερες γίνεται ) Αρχές λειτουργίας και Έννοιες Η λειτουργία της Cache, βασίζεται σε ένα γενικό χαρακτηριστικό όλων των Προγραμμάτων, την Τοπικότητα της Αναφοράς (Locality of Reference). Δηλαδή, τα Προγράμματα τείνουν να χρησιμοποιούν, μόνο ένα μικρό τμήμα του χώρου διευθύνσεων της Μνήμης, σε οποιαδήποτε δεδομένη στιγμή της εκτέλεσης τους. Αυτό το μικρό τμήμα διευθύνσεων και τα περιεχόμενά του, είτε πρόκειται για εντολές που εκτελεί το Πρόγραμμα ή για τα δεδομένα που απαιτεί για τους υπολογισμούς του, επιδιώκουμε να βρίσκεται ιεραρχικά κοντά στον Επεξεργαστή ανά πάσα στιγμή. Από την Τοπικότητα της Αναφοράς, προκύπτουν 3 παράγωγες έννοιες, που παίζουν καθοριστικό ρόλο στην διαμόρφωση της λογικής λειτουργίας της Cache : Χρονική Τοπικότητα (Temporal Locality) : Μια διεύθυνση Μνήμης, στην οποία υπήρξε πρόσβαση, είναι πολύ πιθανό να ξαναχρησιμοποιηθεί στο άμεσο μέλλον. Χωρική Τοπικότητα (Spatial Locality) : Αν χρησιμοποιηθεί μια διεύθυνση Μνήμης, τότε είναι πολύ πιθανό να χρησιμοποιηθούν και οι γειτονικές της διευθύνσεις, στο άμεσο μέλλον. Διαδοχικότητα (Sequential Locality) : Είναι πολύ πιθανό ότι η αμέσως επόμενη πρόσβαση μνήμης θα γίνει σε διαδοχική διεύθυνση της θέσης μνήμης που χρησιμοποιείται στην παρούσα πρόσβαση. Σε αυτό το σημείο θα ορίσουμε κάποιους όρους, που θα χρησιμοποιούμε στο εξής. Word : Η ελάχιστη μονάδα δεδομένων. Η Main Memory αποτελείται από 2 n Words, και στην κάθε μια αντιστοιχεί μια διεύθυνση των n bits. Block : Η βασική μονάδα δεδομένων που μπορεί να βρίσκεται αποθηκευμένη σε μια μνήμη. Κάθε Block συνίσταται από Κ Words ( Λέξεις ). Η Main Memory αποτελείται από Μ=2 n /K Blocks. Access (Πρόσβαση) : Η πρόσβαση του Επεξεργαστή σε Μνήμη, προς αναζήτηση ενός Block. Διακρίνουμε δύο είδη Προσβάσεων, την Cache Access και την Main Memory Access. Hit (Ευστοχία) : Η επιτυχής εύρεση του Block που αναζητήθηκε, στην συγκεκριμένη Μνήμη. Hit Ratio (Ποσοστό Ευστοχίας) : (= #Hits / #Accesses) Το ποσοστό των προσβάσεων Μνήμης που βρέθηκαν επιτυχώς. Hit Time (Χρόνος Ευστοχίας) : Ο χρόνος εύρεσης του Block στην Cache, και μεταφοράς του στον Επεξεργαστή. Miss (Αστοχία) : Η αποτυχία εύρεσης του Block που αναζητήθηκε, στην συγκεκριμένη Μνήμη. Τα Misses κατατάσσονται σε 3 διαφορετικά είδη : Cold (Compulsory) Miss (Αναγκαστική Αστοχία) : Όταν ένα Block αναζητηθεί για πρώτη φορά στην Cache, αυτό αναγκαστικά δεν θα υπάρχει και έτσι γίνεται Miss. Capacity Miss (Αστοχία Χωρητικότητας) : Προκαλούνται εξαιτίας του μεγέθους της Cache. Αν η Cache δεν μπορεί να χωρέσει όλα τα Blocks που χρειάζονται κατά την εκτέλεση του Προγράμματος, τότε κάποια Blocks αναγκαστικά θα αντικατασταθούν, αλλά στο μέλλον ίσως χρειαστεί να επαναφερθούν στην Cache. Conflict Miss (Αστοχία Σύγκρουσης) : Προκαλούνται εξαιτίας της λογικής για αντιστοίχιση των θέσεων Μνήμης της Cache με τις θέσεις Μνήμης της Main Memory. Αν περισσότερα από 1 Block αντιστοιχούν στην ίδια θέση Μνήμης της Cache, τότε η ζήτηση του ενός προκαλεί την αντικατάσταση του άλλου. 15

16 Miss Ratio (Ποσοστό Αστοχίας) : (= 1 - Hit Ratio) ή (= #Misses / #Accesses) Το ποσοστό των προσβάσεων Μνήμης που δεν βρέθηκαν στην Cache. Miss Penalty (Ποινή Αστοχίας) : Ο χρόνος που απαιτείται για αναζήτηση του Block στην Cache, για την διαπίστωση του Miss, την αναζήτηση του Block σε κατώτερο επίπεδο Μνήμης, την μεταφορά του στην Cache, και τελικά, την μεταφορά του ζητούμενου δεδομένου στον Επεξεργαστή. Memory Latency (Καθυστέρηση Μνήμης) : Η Καθυστέρηση που υπεισέρχεται όταν πρέπει ο Επεξεργαστής να αναζητήσει ένα Block Μνήμης, είτε στην Cache ή στην Κυρίως Μνήμη. Memory Latency = Hit Time + P(Miss)* Miss Penalty Παρατηρήσεις Στο σημείο αυτό πλέον έχει γίνει ευνόητο ότι Hit Time << Miss Penalty. Στην συνέχεια θα αναφερόμαστε στα Misses ως εξής : Cold Misses και Access Misses ( Capacity + Conflict ). Υπάρχουν τρεις 3 τρόποι να μειωθεί το Memory Latency. α) Μείωση του Miss Ratio β) Μείωση του Miss Penalty γ) Μείωση του Hit Time ) Λειτουργία και Οργάνωση Ο δομικές μονάδες μιας Μνήμης Cache, είναι οι Cache Lines (Γραμμές). Όταν ο Επεξεργαστής ζητήσει να διαβάσει μια Word, τότε το Block της Main Memory που την περιέχει μεταφέρεται ολόκληρο σε μια Cache Line. Κάθε Cache Line αποτελείται, όπως φαίνεται και στην Εικόνα 4, από: Εικόνα 4: Cache Line Tag : Αφού τα Blocks της Μνήμης είναι πολύ περισσότερα από τις Cache Lines, το Tag αποτελεί μοναδικό αναγνωριστικό για το ποιο Block καταλαμβάνει τον χώρο δεδομένων της Γραμμής. Η τιμή του Tag προκύπτει από ένα τμήμα της διεύθυνσης του Block στην Main Memory. Data Block : Τα δεδομένα που αντιγράφονται από την Main Memory. Control Bits : Προστίθενται για βελτιστοποίηση του ελέγχου της Cache και αφορούν την κατάσταση των δεδομένων της Γραμμής. Τα τρία πιο συνηθισμένα είναι τα: Dirty Bit : Δείχνει αν η Γραμμή έχει έγκυρα δεδομένα. Valid Bit : Δείχνει αν τα δεδομένα της Γραμμής έχουν τροποποιηθεί, από την στιγμή που μεταφέρθηκαν στην Cache. Shared Bit : Δείχνει αν υπάρχουν αντίγραφα αυτής της Γραμμής και σε άλλες Caches. 16

17 Εικόνα 5: α) Μνήμη Cache β) Main Memory Ένα έξυπνο κύκλωμα, ο Ελεγκτής Μνήμης Cache, ή όπως είναι γνωστό, Cache Controller, αποφασίζει πότε έχουμε Cache Hit, πότε Cache Miss, εφαρμόζει τους Αλγόριθμους Αντικατάστασης Block και γενικά φέρει εις πέρας όλες τις απαραίτητες ενέργειες και ελέγχους που πρέπει να κάνει η Cache. Υπάρχουν τέσσερα βασικά ζητήματα που καλείται να λύσει μια Cache, κατά τη διάρκεια της λειτουργίας της: Τοποθέτηση : Που μπορεί ένα Block δεδομένων να τοποθετηθεί στην Cache; Αναγνώριση : Πώς ένα Block δεδομένων αναγνωρίζεται, εφόσον βρίσκεται ήδη μέσα στην Cache; Αντικατάσταση : Ποιο Block δεδομένων είναι καλύτερα να αντικατασταθεί, εφόσον συμβεί ένα Cache Miss; Εγγραφή : Τι ακριβώς συμβαίνει όταν γράφουμε ένα δεδομένο στην Cache; Για την επίλυση των ανωτέρω ζητημάτων, από άποψη Υλικού, χρησιμοποιούνται τα Bits Ελέγχου που αναφέραμε νωρίτερα και μικρές υλοποιήσεις, όπως για παράδειγμα Αθροιστές. Τοποθέτηση και Αναγνώριση Όταν ένα νέο Block απαιτείται να εισέλθει στην Cache, το Line στο οποίο θα τοποθετηθεί, προσδιορίζεται από δύο παράγοντες, τη Λογική Αντικατάστασης (Replacement Policy) που υιοθετούμε και το Memory Mapping. H Λογική Αντικατάστασης προσδιορίζει στην ουσία, ποιο Block δεδομένων στην Cache θεωρούμε ότι είναι λιγότερο χρήσιμο, και άρα πιο πιθανό να αντικατασταθεί από ένα νέο απαιτούμενο Block, που αλλιώς δεν χωράει στην Cache. Το Memory Mapping προσδιορίζει με ποια λογική αντιστοιχίζεται το εκάστοτε Block σε μια συγκεκριμένη Cache Line, μέσω διαδικασιών που ονομάζονται Mapping Functions. Η χρήση τους είναι σημαντική, καθώς ελαχιστοποιούν την πιθανότητα να γίνει αναφορά στο άμεσο μέλλον σε ένα Block που μόλις πρόσφατα αντικαταστάθηκε στην Cache. Το Mapping προσδιορίζει μια σημαντική ιδιότητα της Cache, το Associativity (Συσχετιστικότητα). Η σημασία της ιδιότητας αυτής θα ξεκαθαρίσει αμέσως πιο κάτω. Στην συνέχεια θα εξετάσουμε τις 3 βασικές Mapping Functions (Τοποθέτηση) και θα καταλάβουμε παράλληλα πώς ακριβώς εξάγεται το Tag από τη Διεύθυνση Μνήμης του Block (Αναγνώριση). Στο εξής υποθέτουμε διευθύνσεις μνήμης των 32bits. 17

18 Direct Mapping (Άμεση Αντιστοίχηση) Κάθε Memory Block αντιστοιχεί σε ακριβώς μια Cache Line. Εικόνα 6: Direct Mapping Αν, i = ο αριθμός της Cache Line, j = η διεύθυνση του Memory Block και c = το πλήθος των Cache Lines της Cache, τότε η ακριβής αντιστοίχιση βρίσκεται ως εξής : i = j mod c. Η λογική του Direct Mapping ερμηνεύει την Διεύθυνση Μνήμης του Block, ως εξής: Εικόνα 7: Direct Mapped ερμηνεία της Διεύθυνσης Μνήμης Offset : Αν η Cache Line έχει μέγεθος 2 Χ bits, τότε αρκούν Χ bits για να προσδιορίσουν την θέση του κάθε Byte της Γραμμής. Αυτά τα X bits είναι το Offset. Πχ : για 32Bytes Cache Line, το Offset θα είναι 5 bits. Index : Το πλήθος των Cache Lines προσδιορίζεται προφανώς ως εξής : Cache Lines Number = Cache size / Cache Line size Αν η Cache έχει 2 R Cache Lines, τότε αρκούν R bits για να προσδιορίσουν οποιαδήποτε Cache Line. Πχ : για 4Kbytes Cache και 32Bytes Cache Line θα έχουμε 496/32 = 128 Γραμμές. Επειδή 2 7 = 128, το Index θα είναι 7 bits. Tag : Τα υπόλοιπα S = 32-R-X bits, αποτελούν το Tag. Όπως αναφέραμε και πριν, το Tag αποτελεί μοναδικό αναγνωριστικό για το ποιο από τα 2 S Blocks Μνήμης που μπορούν να αποθηκευτούν προσωρινά στην Cache, καταλαμβάνει τον χώρο δεδομένων της Γραμμής. Προφανές είναι πλέον ότι το πλήθος των bits που το προσδιορίζουν εξαρτάται από την φυσική υλοποίηση της Cache. Για κάθε πρόσβαση στην Cache, ελέγχεται το Tag της Cache Line που υποτίθεται ότι περιέχει το ζητούμενο Block. Αφού το Tag είναι μοναδικό για κάθε Block, ο Cache Controller είναι σε θέση να αποφασίσει αν έχουμε Hit ή Miss. Μια Direct Mapped Cache είναι ο απλούστερος τύπος Cache, είναι εύκολο και σχετικά οικονομικό να κατασκευαστεί και προσφέρει μια απλή και γρήγορη διαδικασία απόφασης για Hits ή Misses. Ωστόσο έχει ένα βασικό μειονέκτημα, παρέχει την χειρότερη επίδοση από όλες τις Mapping Functions. Αυτό συμβαίνει εξαιτίας της Τοπικότητας της Αναφοράς, μιας και είναι συνηθισμένο να ζητούνται συνεχόμενα από την Cache, Blocks που αντιστοιχούν στην ίδια Cache Line, έτσι να έχουμε μεγάλη απώλεια χρόνου στην εισαγωγή και αντικατάσταση του κάθε Block. Fully Associative Mapping (Πλήρως Συσχετιστική Αντιστοίχηση) Κάθε Memory Block αντιστοιχεί σε οποιαδήποτε Cache Line. 18

19 Εικόνα 8: Fully Associative Mapping Η Διεύθυνση Μνήμης του Block εδώ, ερμηνεύεται ως εξής: Εικόνα 9: Fully Associative ερμηνεία της Διεύθυνσης Μνήμης Offset : Ο ρόλος του Offset είναι ο ίδιος, όπως τον γνωρίσαμε και στο Direct Mapping. Αν η Cache Line έχει μέγεθος 2 Χ bits, τότε αρκούν Χ bits για να προσδιορίσουν την θέση του κάθε Byte της Γραμμής. Tag : Τα υπόλοιπα S = 32-X bits, αποτελούν το Tag, το οποίο είναι μοναδικό αναγνωριστικό για κάθε ένα από τα 2 S Blocks της Main Memory. Για κάθε πρόσβαση στην Cache, πρέπει να ελεγχθούν τα Tags όλων των Cache Lines. Η Fully Associative Cache υλοποιείται από μια ειδική, γρήγορη αλλά και ακριβή μνήμη την CAM (Content Addressable Memory), η οποία έχει την ιδιότητα να κάνει παράλληλα αναζήτηση σε όλα τα περιεχόμενά της μέσα σε ένα μόλις Κύκλο Ρολογιού. Η πρόσβαση στις CAM γίνεται με βάση το περιεχόμενο, όχι με βάση τη διεύθυνση. Έτσι ο Cache Controller, ελέγχει ταυτόχρονα και άμεσα όλα τα Tags για να βρει την ζητούμενη Cache Line. Αν βρεθεί το Tag, έχουμε Hit. Αν δεν βρεθεί, έχουμε Miss. Το Miss εδώ σημαίνει ότι το ζητούμενο Tag δεν υπάρχει πουθενά στην Cache και πρέπει να φέρουμε το αντίστοιχο Block από την Μνήμη. Αφού ο Controller συμβουλευτεί την ισχύουσα Replacement Policy, αποφασίζει ποια Cache Line θα αντικατασταθεί από το νέο Block. Μια Fully Associative Cache είναι ευέλικτη, έχει πολύ υψηλό Hit Ratio και ξεπερνά όλα τα προβλήματα των Direct Mapped Caches. Ωστόσο την χρησιμοποιούμε πολύ σπάνια, γιατί έχει σημαντικά προβλήματα απόδοσης. Ακόμα και με την χρήση της CAM Memory, η αναζήτηση για Tag σε ολόκληρη την Cache για κάθε πρόσβαση, ανεξαρτήτως αν αυτή θα είναι Hit ή Miss, σε συνδυασμό με την χρήση των Replacement Policies καθιστά τις Fully Associative Caches χρονοβόρες. Επίσης η ίδια η CAM είναι πιο περίπλοκη και ακριβή Μνήμη και τα Tags καταλαμβάνουν περισσότερο χώρο. Set Associative Mapping (Συνολοσυσχετιστική Αντιστοίχηση) Η Cache διαιρείται σε ένα σύνολο από Direct Mapped περιοχές, που ονομάζονται Sets. Κάθε Set αποτελείται από Cache Lines. Έστω ότι έχουμε V Sets και K Cache Lines στο κάθε Set. H Cache τότε ονομάζεται K-Way Associative Cache, βάση του αριθμού των Γραμμών ενός Set. Αν, i = ο αριθμός ενός Set, j = η διεύθυνση του Memory Block και v = το πλήθος των Sets, τότε το ζητούμενο Set, στο οποίο αντιστοιχεί το Block, προσδιορίζεται ως εξής : i = j mod c. Κάθε Memory Block μπορεί να αποθηκευτεί σε οποιαδήποτε από τις Κ Γραμμές του Block, στο οποίο αντιστοιχεί. 19

20 Εικόνα 1: Set Associative Mapping Η Διεύθυνση Μνήμης του Block εδώ, ερμηνεύεται ως εξής: Εικόνα 11: Set Associative ερμηνεία της Διεύθυνσης Μνήμης Offset : Αν η Cache Line έχει μέγεθος 2 Χ bits, τότε αρκούν Χ bits για να προσδιορίσουν την θέση του κάθε Byte της Γραμμής στο Set. Αυτά τα X bits είναι το Offset. Index : Έστω ότι έχουμε την 4KBytes Cache με 32bytes μέγεθος Γραμμής. Έστω ότι είναι 2- way Associative. H Cache θα έχει 128 Γραμμές και 2 Γραμμές για κάθε Set, άρα 64 Sets. Η θέση του κάθε Set προσδιορίζεται από το Index, όπου στην προκειμένη περίπτωση θα έχει μήκος R = 6 bits. Tag : Τα υπόλοιπα S = 32-R-X bits, αποτελούν το Tag. Όπως αναφέραμε και πριν, το Tag αποτελεί μοναδικό αναγνωριστικό για κάθε ένα από τα 2 S Blocks Μνήμης. Για κάθε πρόσβαση στην Cache, πρέπει να ελεγχθούν τα Tags όλων των Κ Cache Lines, που ανήκουν στο Set που αντιστοιχεί το απαιτούμενο Block. Και πάλι χρησιμοποιούνται CAM μνήμες (μικρότερες από τις αντίστοιχες που χρησιμοποιεί μια Fully Associative Cache), ώστε να ελέγξουμε παράλληλα και ταυτόχρονα τα Tags όλων των Γραμμών που μας ενδιαφέρουν. Αν βρεθεί το Tag μέσα στο Set, έχουμε Hit. Αν δεν βρεθεί, έχουμε Miss. Το Miss και πάλι σημαίνει ότι το ζητούμενο Tag δεν υπάρχει στο Set και πρέπει να φέρουμε το αντίστοιχο Block από την Μνήμη. Αφού ο Cache Controller συμβουλευτεί την ισχύουσα Replacement Policy, αποφασίζει ποια Cache Line θα αντικατασταθεί από το νέο Block. Μια Set Associative Cache είναι στην ουσία ένας συμβιβασμός ανάμεσα στην Direct Mapped και στην Fully Associative Cache, που διατηρεί όλα τα θετικά στοιχεία και από τις δύο λογικές. Διατηρεί δηλαδή τον εύκολο έλεγχο της Direct Mapped Cache, έχοντας παράλληλα μεγαλύτερο Hit Ratio από αυτήν, και την ευελιξία της Fully Associative Cache, όντας γρηγορότερη από αυτήν. Στην πραγματικότητα οι Fully Associative Caches δεν χρησιμοποιούνται. To Set Associative Mapping χρησιμοποιείται στον ρόλο των L1 Caches, αφού αυτές είναι μικρότερες και υψηλής απόδοσης, ενώ το Direct Mapped Mapping χρησιμοποιείται στον ρόλο των L2 Caches, που είναι λίγο πιο μεγάλες στο μέγεθος και σχετικά πιο αργές την απόδοση. Έχει επίσης παρατηρηθεί ότι οι 2-Way και 4-Way Set Associative Caches αποτελούν τον βέλτιστο συμβιβασμό μεταξύ του υψηλού Hit Ratio και της γρήγορης ταχύτητας αναζήτησης των δεδομένων. Αντικατάσταση Όπως με συντομία αναφέραμε στο προηγούμενο εδάφιο (Τοποθέτηση και Αναγνώριση), όταν ένα νέο Block εισέρχεται στην Cache, εξαιτίας ενός Miss, τότε πιθανότατα κάποια Γραμμή της Cache θα πρέπει να αντικατασταθεί. Σε μια Direct Mapped Cache δεν έχουμε επιλογή για το που θα τοποθετηθεί το νέο Block, αφού υπάρχει ακριβής αντιστοιχία. Ωστόσο στις Fully Associative και Set Associative Caches υπάρχει επιλογή θέσης, και την απόφαση αναλαμβάνει ο 2

21 Cache Controller, βάσει των Λογικών Αντικατάστασης (Replacement Policies), ή όπως αλλιώς ονομάζονται, Αλγόριθμοι Αντικατάστασης (Replacement Algorithms). Εν συντομία θα εξηγήσουμε τους βασικούς και ευρύτερα διαδεδομένους παραδοσιακούς Αλγόριθμους Αντικατάστασης. Least Recently Used (LRU) : Θα αντικατασταθεί η Cache Line που έχει προσπελαστεί λιγότερο πρόσφατα από όλες τις άλλες, δηλαδή αυτή που έχει μείνει περισσότερο καιρό αχρησιμοποίητη. Πρόκειται για τον αλγόριθμο που χρησιμοποιείται πιο συχνά από κάθε άλλον, καθώς η χρήση του τεκμηριώνεται ισχυρά από την Αρχή της Χρονικής Τοπικότητας. Δηλαδή: ότι έχει να χρησιμοποιηθεί πολύ καιρό, είναι πολύ πιθανό να μη χρησιμοποιηθεί πάλι στο άμεσο μέλλον και ότι χρησιμοποιήθηκε πρόσφατα είναι πολύ πιθανό να ζητηθεί ξανά στο άμεσο μέλλον. First in First out (FIFO) : Θα αντικατασταθεί η Cache Line που αποθηκεύτηκε στην Cache μακρύτερα στο παρελθόν, δηλαδή η πιο παλιά Γραμμή. Είναι ένας απλός και δίκαιος αλγόριθμος ως προς τον χρόνο διαμονής της κάθε Γραμμής στην Cache. Least Frequently Used (LFU) : Θα αντικατασταθεί η Cache Line στην οποία έχουν γίνει οι λιγότερες αναφορές, μέχρι την χρονική στιγμή της αντικατάστασης, ανεξαρτήτως του πότε προσπελάστηκε τελευταία φορά. Η αδυναμία του LFU είναι προφανής, δεν λαμβάνει υπόψη του την Χρονική Τοπικότητα. Random : Επιλέγεται τυχαία μια Cache Line για αντικατάσταση, μέσω κάποιας ψευδοτυχαίας γεννήτριας ή μιας μαθηματικής κατανομής. Είναι ο πιο απλός από όλους τους Αλγόριθμους, αλλά δεν λαμβάνει υπόψη του κανένα από τα μοτίβα (patterns) αλληλουχίας των δεδομένων και των εντολών που εμφανίζουν τα Προγράμματα κατά την εκτέλεση τους. Υπάρχουν ακόμα πολλοί Αλγόριθμοι Αντικατάστασης, με λιγότερη ωστόσο επιτυχία, όπως οι: Most Recently Used (MSU), Last in First out (LIFO), Most Frequently Used (MFU) και ούτω καθεξής. Τα τελευταία χρόνια επίσης εμφανίστηκαν αξιόλογοι Αλγόριθμοι, με σημαντική επιτυχία στην διαχείριση της Cache, τους πιο σημαντικούς από τους οποίους αναφέρουμε επιγραμματικά για όποιον ενδιαφέρεται να εμβαθύνει περαιτέρω: Dynamic Insertion Policy, MLP-Aware Replacement, Shepherd Caching, Instruction-based Reuse Distance Prediction. Εγγραφή Σύμφωνα και με την Εικόνα 12, μια Πρόσβαση στην Cache (Cache Access), οδηγεί σε μια Ανάγνωση (Read) ή μια Εγγραφή (Write). To συντριπτικό ποσοστό των Προσβάσεων στην Cache είναι Αναγνώσεις. Το ζητούμενο Block διαβάζεται ταυτόχρονα με την ανάγνωση και σύγκριση του Tag με την Διεύθυνση. Αν τελικά επρόκειτο για Miss, η τιμή που διαβάστηκε αγνοείται, δεν υπήρξε όφελος, αλλά δεν ούτε και ζημιά από άποψη χρόνου. Αναφέρουμε τις Πολιτικές Ανάγνωσης (Read Policies), οι οποίες είναι: Read Through (Με Διανάγνωση) : Διαβάζεται μια Word απευθείας από την Main Memory στον Επεξεργαστή. No-Read Through (Χωρίς Διανάγνωση) : Διαβάζεται ένα Block από την Main Memory στην Cache, και στην συνέχεια το ζητούμενο δεδομένο από την Cache στον Επεξεργαστή. Εικόνα 12: Cache Access - Memory Access Παρά την εύκολη βελτιστοποίηση της διαδικασίας των Αναγνώσεων, οι Εγγραφές παρουσιάζουν περισσότερη δυσκολία. Πριν μια Γραμμή της Cache αντικατασταθεί πρέπει να γνωρίζει ο 21

22 Controller αν η Γραμμή έχει τροποποιηθεί. Το Block της Main Memory και η Γραμμή της Cache αποτελούν αρχικά ακριβή αντίγραφα. Αν η Γραμμή δεν έχει τροποποιηθεί δεν είναι απαραίτητο να ενημερώσουμε την Main Memory για καμία αλλαγή. Αντίθετα αν έχει υπάρξει τροποποίηση πρέπει να ενημερώσουμε την Main Memory με μια Εγγραφή. Υποθέτοντας ένα Cache Hit, υπάρχουν δύο κύριες Πολιτικές Εγγραφής (Write Policies): Write Through (Διεγγραφή) : Τα δεδομένα εγγράφονται άμεσα και αυτόματα και στην Γραμμή της Cache και στο Block της Main Memory. Η Πολιτική αυτή είναι εύκολη στην υλοποίηση και διατηρεί πάντα ενημερωμένη την Main Memory. Ωστόσο είναι πιο αργή και απαιτεί μια πρόσβαση στην Main Memory για κάθε Εγγραφή. Write Back (Ετεροχρονισμένη Εγγραφή) : Τα δεδομένα εγγράφονται μόνο στην Γραμμή της Cache. Η τροποποιημένη αυτή Γραμμή εγγράφεται στο αντίστοιχο της Block στην Main Memory μόνο πριν αντικατασταθεί από μια νέα Γραμμή στην Cache. Η Πολιτική αυτή είναι ταχύτατη και απαιτεί τις ελάχιστες προσβάσεις προς την Main Memory, όμως είναι δυσκολότερο να υλοποιηθεί και αφήνει την Main Memory χωρίς ενημέρωση. Υποθέτοντας ένα Cache Miss, υπάρχουν πάλι δύο Πολιτικές Εγγραφής : Write Allocate (Κατανομής Εγγραφής) : Το Block που προκάλεσε το Miss, εισέρχεται στην Cache. Στην συνέχεια ενεργοποιείται μια από τις δύο Πολιτικές Εγγραφής υποθέτοντας ένα Cache Hit. Write No-Allocate (Κατανομή Μη-Εγγραφής) : Το Block που προκάλεσε το Miss, εγγράφεται απευθείας στην Main Memory, χωρίς να εισαχθεί ενδιάμεσα στην Cache. Συνήθως μια Write Through Cache συνδυάζεται με Write No-Allocate Πολιτική και μια Write Back Cache συνδυάζεται με Write Allocate Πολιτική ) Εσωτερική Οργάνωση, Shared και Multilevel Caches Για έναν απλό Επεξεργαστή αρκεί μια μνήμη Cache. Όμως στα Υπολογιστικά Συστήματα χρησιμοποιούμε πολλαπλά επίπεδα Μνημών Cache (Multilevel Caches). Θα παρουσιάσουμε στην συνέχεια τις βασικές αιτίες για αυτή την εξέλιξη, παρατηρώντας παράλληλα πιο αναλυτικά την Οργάνωση των Caches, όπως αυτή φαίνεται στην Εικόνα 13. Εικόνα 13: Εσωτερική Οργάνωση - Multilevel Cache Σύντομα μετά την ευρεία αποδοχή και χρήση της Cache, οι Υπολογιστές και οι Επεξεργαστές έγιναν ακόμα πιο πολύπλοκοι σχεδιαστικά. Άρα το κενό μεταξύ της απόδοσης της Main Memory και των Caches άρχισε πάλι να αυξάνει. Άρα στην Ιεραρχία Μνήμης, η χρήση περισσότερων του ενός επιπέδων Cache, με μικρότερη ταχύτητα αλλά μεγαλύτερο μέγεθος κρίθηκε απαραίτητη για να γεφυρωθεί το χάσμα. Διακρίνουμε σήμερα μέχρι και 3 επίπεδα Cache, με τις αντίστοιχες ονομασίες Level 1 (L1), Level 2 (L2) και Level 3 (L3), όπου η L1 είναι πλησιέστερη 22

23 στον Επεξεργαστή και η L3 η πιο απομακρυσμένη από αυτόν. Άρα ο Επεξεργαστής που αναζητεί ένα Block σε ένα σύγχρονο Υπολογιστικό Σύστημα θα πραγματοποιήσει ένα L1 Access, αν αυτό γίνει Miss, θα καταφύγει σε ένα L2_Access, αν πάλι δεν έχουμε Hit, θα συνεχίσει με ένα L3_Access και αν αποτύχει και εδώ θα αναζητήσει πλέον το δεδομένο στην Main Memory. Κάθε επίπεδο Cache έχει φυσικά τους δικούς του μηχανισμούς αντικατάστασης Blocks και την δική του Οργάνωση. Παρατηρούμε δηλαδή, ότι προσθέτοντας αρκετά επίπεδα Cache μεταξύ της Main Memory και του Επεξεργαστή, έχουμε σίγουρα ένα επίπεδο Cache που λειτουργεί πολύ κοντά στην συχνότητα του Επεξεργαστή. Η ύπαρξη των Multilevel Caches λύνει και το ακόλουθο πρόβλημα. Μια σχετικά μεγάλη Cache, χωρίς επίπεδα θα έχει αυξημένο Hit Ratio, αλλά και μεγαλύτερο Latency, όπως είναι αναμενόμενο, ενώ αντίστροφα, μια μικρή Cache θα έχει μικρό Latency, αλλά αναγκαστικά και μικρό Hit Ratio. Πρέπει λοιπόν να γίνει ένας συμβιβασμός μεταξύ του Hit Ratio και του Latency, ούτως ώστε να βρεθεί το ιδανικό μέγεθος της Cache. Με τα πολλαπλά επίπεδα Cache ωστόσο, δε μας απασχολεί να κάνουμε πια συμβιβασμό, λόγω των διαφορετικών μεγεθών και ταχυτήτων των επιπέδων, αλλά και επειδή εμφανίζεται αύξηση της απόδοσης της Cache με την υιοθέτηση του Πολυεπίπεδου μοντέλου. Η ύπαρξη πολλαπλών Πυρήνων ( Cores ) στους σύγχρονους Επεξεργαστές, καθώς και η ύπαρξη πολλαπλών Νημάτων ( Threads ) σε κάθε Πυρήνα, ενθαρρύνει την Πολυεπίπεδη Οργάνωση των Μνημών Cache. Η L1 Cache γίνεται κοινόχρηστη μεταξύ των Threads, σε κάθε Πυρήνα. Όσον αφορά τους Πυρήνες, έχουν γενικά κοινόχρηστες τις L2 και L3 Caches, ενώ ο κάθε ένας έχει την δική του L1. Οι Κοινόχρηστες Μνήμες Cache, εκτός από την προφανή κοινή διάθεση δεδομένων σε Πυρήνες και Διεργασίες, εξυπηρετούν και άλλους σκοπούς, για παράδειγμα χρησιμοποιούνται στο Πέρασμα Μηνυμάτων και τον Συγχρονισμό μεταξύ των εκτελούμενων Διεργασιών, αλλά και στις υπόλοιπες Ενδοδιεργασιακές Επικοινωνίες (IPCs). Διακρίνουμε τους πιο διαδεδομένους τύπους διάταξης Πολυεπίπεδων Cache σήμερα, οι οποίοι περιέχουν μέχρι και το L2 επίπεδο: Ενώ οι πιο διαδεδομένες μορφές διάταξης των σημερινών Πολυεπίπεδων Cache με L3 επίπεδο είναι οι ακόλουθες: Υπάρχουν αρκετά σημαντικά πλεονεκτήματα από την καθιέρωση και την χρήση των 23

24 Κοινόχρηστων Επιπέδων των Μνημών Cache: Ελαττώνεται η Υπό-χρησιμοποίηση της Cache. Όταν κάποιος Πυρήνας είναι Ανενεργός (Idle), τότε ο άλλος Πυρήνας έχει τον έλεγχο ολόκληρης της Κοινόχρηστης Μνήμης Οι Κοινόχρηστες Cache προσφέρουν γρηγορότερους ρυθμούς ανταλλαγής δεδομένων μεταξύ δύο Πυρήνων, απ'ότι προσφέρει η Κύρια Μνήμη του Συστήματος. Η Συνοχή Μνήμης Cache βελτιστοποιείται με την χρήση Κοινόχρηστων Cache. Ένα Σύστημα Μνήμης είναι Συνεκτικό αν οποιαδήποτε Ανάγνωση ενός αντικειμένου δεδομένων επιστρέφει την πιο πρόσφατα εγγεγραμμένη τιμή αυτού του αντικειμένου δεδομένων. [14] Δηλαδή το πρόβλημα της Συνοχής Μνήμης έγκειται στο ότι η εικόνα της Μνήμης μέσα από την Cache μπορεί να είναι διαφορετική από την εικόνα της Μνήμης που παρουσιάζεται μέσα από την Κύρια Μνήμη. Η κινητικότητα δεδομένων και ο φόρτος στον Κεντρικό Δίαυλο Επικοινωνίας του Συστήματος (FSB) ελαττώνεται χάρη στην σωστή χρήση των Κοινόχρηστων Μνημών. Οι Caches, ως προς τον τύπο των δεδομένων που αποθηκεύουν, χωρίζονται σε : Unified ( Ενοποιημένες ) : Unified ονομάζεται η Cache που αποθηκεύει Δεδομένα και Εντολές, χωρίς διάκριση. Split ( Διαχωρισμένες ) : Split ονομάζεται η Cache που διαχωρίζεται σε 2 μέρη, ένα για να αποθηκεύει τα Δεδομένα και ένα για να αποθηκεύει τις Εντολές. Όπως παρατηρούμε από την Εικόνα 13, έχει επικρατήσει οι μνήμες L2 και L3 να υλοποιούνται ως Unified, ενώ η L1 υλοποιείται ως Split, δηλαδή υπάρχει η L1 data Cache και η L1 Instruction Cache. H χρήση της L1 Split Cache δικαιολογείται απόλυτα, αφού : Έχει παρατηρηθεί ότι οι περιοχές Μνήμης που απαιτούνται για Κώδικα και Δεδομένα είναι πρακτικά ανεξάρτητες μεταξύ τους. Αποθηκεύονται στην L1 Instruction Cache οι ήδη αποκωδικοποιημένες εντολές, καθώς επιταχύνεται έτσι το 2o βήμα του Instruction Pipeline, η Αποκωδικοποίηση (Decode), που είναι χρονοβόρα διαδικασία για τον Επεξεργαστή. Επιτρέπεται ταυτόχρονα η πρόσβαση σε Εντολές και Δεδομένα, άρα αυξάνεται το Bandwidth. Αντίθετα το βασικό πλεονέκτημα της Unified Cache, είναι ότι ευέλικτη και έχει υψηλότερο Hit Ratio, διότι αυτόματα εξισορροπεί και διαχειρίζεται τον φόρτο μεταξύ των Εντολών και των Δεδομένων. Έτσι χρησιμοποιώντας L1 Split Cache αυξάνεται ακόμα περισσότερο η απόδοση του Συστήματος, ειδικά αν αυτό υποστηρίζει Pipelining και Παράλληλη Εκτέλεση Εντολών. Από την άλλη πλευρά, η Unified Cache ενδείκνυται για τα χαμηλότερα επίπεδα της Ιεραρχίας Μνήμης (L2, L3). 24

25 2.2) Simplescalar Στην παρούσα Διπλωματική Εργασία, διερευνούμε πώς μπορούμε με την χρήση του μοντέλου StatCache [1] να προβλέψουμε επιτυχώς την συμπεριφορά ενός Υπολογιστικού Συστήματος, που έχει Επεξεργαστή με Multilevel Cache (L1 και L2), και στο οποίο εμφανίζονται φαινόμενα Παραλληλισμού Επιπέδου Μνήμης (Memory Level Parallelism, MLP). Όσον αφορά το μοντέλο StatCache και το φαινόμενο Παραλληλισμού Επιπέδου Μνήμης, θα αναπτυχθούν εκτενώς στα επόμενα Κεφάλαια. Πώς όμως θα γνωρίζουμε εμείς, ότι τα συμπεράσματα στα οποία θα φτάσουμε, είναι σωστά; Το Simplescalar [11] [12] είναι μια ενοποιημένη ομάδα, πλήρως παραμετροποιήσιμων Εξομοιωτών, για την λεπτομερή λειτουργία της Αρχιτεκτονικής των Υπολογιστών. Περιλαμβάνει επίσης Compilers (Μεταγλωττιστές), Assemblers (Συμβολομεταφραστές), Linkers (Συνδέτες) και Βιβλιοθήκες. Δημοσιεύτηκε για πρώτη φορά το 1996 από τον τότε Διδακτορικό Todd Austin, είναι υλοποιημένο σε γλώσσα προγραμματισμού C και αποτελεί Πρόγραμμα Ανοιχτού Κώδικα (Open- Source) με ελεύθερα δικαιώματα χρήσης προς όλους. Με χρήση του Simplescalar, μπορούμε να παρατηρήσουμε στην πράξη την συμπεριφορά του ακριβούς συστήματος που μας ενδιαφέρει, ώστε να έχουμε ένα μέτρο σύγκρισης για την θεωρία που μελετάμε και τις προτάσεις υποθέσεις στις οποίες καταφεύγουμε κατά την διάρκεια της έρευνάς μας. Το Simplescalar μπορεί να μοντελοποιήσει ένα εικονικό Υπολογιστικό Σύστημα Superscalar Επεξεργαστών και μας δίνει την δυνατότητα να διερευνήσουμε σε βάθος τις διάφορες κατηγορίες Ενδο-διεργασιακών Επικοινωνιών (Inter-process Communications ή IPC). Λόγω της πολυπλοκότητας των σύγχρονων Επεξεργαστών, η αξιολόγηση των επιδόσεων τους θα ήταν πολύ δύσκολη χωρίς την βοήθεια του Simplescalar. Ένας Επεξεργαστής Superscalar Αρχιτεκτονικής είναι υλοποιημένος με χρήση Παραλληλισμού Επιπέδου Εντολών (Instruction Level Parallelism). Οι βασικές κατηγορίες των IPCs είναι το Πέρασμα Μηνυμάτων (Message Passing), ο Συγχρονισμός (Synchronization), οι Κοινόχρηστες Μνήμες (Shared Memory) και οι Απομακρυσμένες Κλήσεις Διαδικασιών (Remote Procedure Calls). Τα αποτελέσματα του Εξομοιωτή Simplescalar, είναι αναλυτικά, και αφορούν ακόμα και τις χαμηλού επιπέδου (low level) λειτουργίες του Υπολογιστικού Συστήματος. Ωστόσο έχει υψηλού επιπέδου (high level) Διεπαφή (Interface) με τον χρήστη και σχεδιασμό ώστε να μεγιστοποιεί την απόδοση του και να είναι εύκολο στην χρήση. Οι διάφοροι Εξομοιωτές της Εφαρμογής, μας επιτρέπουν να επιλέξουμε τον επιθυμητό συμβιβασμό μεταξύ επιδόσεων και λεπτομέρειας των αποτελεσμάτων. Η Αρχιτεκτονική του Simplescalar είναι μια επέκταση της Αρχιτεκτονικής MIPS. Benchmarks (Μετροπρογράμματα - Προγράμματα εξομοίωσης επιδόσεων) μεταγλωττίζονται με χρήση του GCC Compiler σε γλώσσα Assembly, συμβατή με το Simplescalar. Στην συνέχεια με χρήση των Βιβλιοθηκών παράγονται τα Δυαδικά Αρχεία (Binary files) που τελικά οδηγούνται σε έναν από τους διαθέσιμους Εξομοιωτές. Αυτοί είναι οι : Sim-Fast (Ο πιο απλός και γρήγορος Εξομοιωτής) Sim-Safe Sim-Profile Sim-Cache / Sim-Cheetah / Sim-BPred Sim-Outorder (Ο πιο σύνθετος και αργός Εξομοιωτής. Ωστόσο απαιτεί λιγότερο από μία ώρα για την εξαγωγή των αποτελεσμάτων. Εναλλακτικά χρησιμοποιούνται έτοιμες ομάδες μεταγλωττισμένων Προγραμμάτων, γνωστά και ως SPEC (Standard Performance Evaluation Corporation), για τροφοδοσία στους Εξομοιωτές. Τα προγράμματα του SPEC2, αποτελούν αντιπροσωπευτικό σύνολο, των συμπεριφορών σχεδόν του συνόλου των σύγχρονων προγραμμάτων. Εμείς θα χρησιμοποιήσουμε τον Εξομοιωτή Sim-Outorder (Εικόνα 14). Αυτός υποστηρίζει 25

26 ανάθεση και εκτέλεση Εντολών Εκτός Σειράς (Out-of-Order ή ΟοΟ). Ένας OoO Επεξεργαστής είναι Επεξεργαστής υψηλής απόδοσης που αξιοποιεί τους Κύκλους Εντολών (Instructions Cycles) που μένουν αχρησιμοποίητοι από την λογική των In-Order Επεξεργαστών. Ενώ στον Κώδικα του Προγράμματος που εκτελείται οι εντολές διαδέχονται οι μία την άλλη (Program Order), ο Επεξεργαστής τις διαχειρίζεται με Σειρά Δεδομένων (Data Order). Δηλαδή με την σειρά που τα δεδομένα είναι διαθέσιμα στους Registers. Στον χρόνο αναμονής για τα δεδομένα που χρειάζεται μια Εντολή, εκτελούνται επόμενες Εντολές, που έχουν όλα τα δεδομένα τους διαθέσιμα. Τέλος τα αποτελέσματα αναδιατάσσονται στην αρχική τους σειρά και οι Εντολές Αποσύρονται (Commit) από το Παράθυρο Εντολών με In-Order σειρά. Εικόνα 14: Sim-Outorder Pipeline [11] Η λειτουργία ενός ΟοΟ Επεξεργαστή, αλλά και του Sim-Outorder βασίζεται στην ύπαρξη δύο δομικών μονάδων [12], του : Register Update Unit ή RUU : Διαχειρίζεται τον Συγχρονισμό και την Επικοινωνία των Registers. Χρησιμοποιεί έναν κυκλικό Buffer (Ενταμιευτή) Αναδιάταξης (Reorder Buffer), που μετονομάζει αυτόματα τους Registers και φυλάει τα αποτελέσματα των Εντολών που βρίσκονται σε αναμονή. Load-Store Queue ή LSQ : Διαχειρίζεται τον Συγχρονισμό και την Επικοινωνία με την Μνήμη. Αποθηκεύει με την σειρά εκτέλεσης του Προγράμματος όλες τις Φορτώσεις (Loads) και Αποθηκεύσεις (Stores) δεδομένων που αφορούν τις Εντολές και διαπιστώνει τις Αλληλοσυσχετίσεις (Dependencies) τους. To Pipeline του Sim-Outorder, όπως φαίνεται στην Εικόνα 14, υλοποιείται με την συνάρτηση sim_main() και εκτελείται για κάθε Κύκλο Ρολογιού της Εξομοίωσης. Εξετάζουμε συνοπτικά την διαδικασία: Εικόνα 15: H sim_main(); Fetch : ruu_fetch(); Για κάθε Κύκλο Ρολογιού φέρει (fetch) δεδομένα από μια Γραμμή της L1-Instruction Cache, παγώνοντας την διαδικασία εάν ανιχνεύσει Miss, μέχρι αυτό να εξυπηρετηθεί. Τοποθετεί τις Εντολές στο Dispatch. Dispatch : ruu_dispatch(); Μια φορά σε κάθε Κύκλο παίρνει εντολές από το Fetch και αφού τις Αποκωδικοποιήσει και Μετονομάσει κατάλληλα τους Registers, τις τοποθετεί στον Scheduler. Επίσης συνδέει την κάθε Εντολή με την RUU και την LSQ. Scheduler : ruu_issue(); lsq_refresh(); Αυτές οι συναρτήσεις εντοπίζουν τις 26

27 Αλληλοσυσχετίσεις (Dependencies) των Εντολών στην Μνήμη και τους Registers. Σε κάθε Κύκλο εντοπίζουν τις Εντολές των οποίων τα δεδομένα είναι έτοιμα στους Registers. Φροντίζουν να γίνουν τα απαραίτητα Load, για τα υπόλοιπα δεδομένα. Execute : ruu_issue(); Εκτελεί τις Εντολές και φροντίζει για την αποθήκευση των αποτελεσμάτων με Write-back στην L1-Data Cache. Write-back : ruu_writeback(); Σε κάθε Κύκλο ανιχνεύει για Εντολές που η εκτέλεση τους έχει τελειώσει. Όταν τις βρει ακολουθεί προς τα πίσω την αλυσίδα Αλληλοσυσχετίσεων της Εντολής και ενημερώνει με την τιμή του αποτελέσματος τις Εντολές που βρίσκονται σε αναμονή για αυτήν. Σημειώνει επίσης όποια Εντολή είναι έτοιμη για Εκτέλεση. Commit ruu_commit(); Ενημερώνει τις Data Caches ή την Μνήμη με τις τιμές των Εντολών που εξυπηρετήθηκαν από το στάδιο Write-back, με σειρά εκτέλεσης Προγράμματος (Program Order ή In-Order). Το Simplescalar παρέχει την δυνατότητα να δούμε το πλήρες ιστορικό της Εξομοίωσης της εκτέλεσης του Προγράμματος και τα στατιστικά που επιθυμούμε για κάθε εντολή που εκτελέστηκε κατά την διάρκεια της Εξομοίωσης, με την εξαγωγή των Traces (Ίχνη). Αυτά χρησιμοποιούμε για να κάνουμε τους υπολογισμούς μας και να προχωρήσουμε στις απαραίτητες συγκρίσεις. 27

28 2.3) StatCache 2.3.1) Εισαγωγή Το StatCache [1] [13] είναι ένα Πιθανοτικό μοντέλο, μια μέθοδος βασισμένη στην συλλογή χαρακτηριστικών στατιστικών δειγμάτων (που αφορούν τις Μνήμες Cache) από μια εκτελούμενη Εφαρμογή, και μελετά με καινοτομικό τρόπο την Τοπικότητα (Locality) των δεδομένων της Εφαρμογής. Τα χαρακτηριστικά αυτά δείγματα, λέμε ότι αποτελούν το Δαχτυλικό Αποτύπωμα (Fingerprint) της Εφαρμογής. Οι Μνήμες Cache χρησιμοποιούνται για να γεφυρώσουν το χάσμα της Συχνότητας των Επεξεργαστών με τον Χρόνο Πρόσβασης της Κύριας Μνήμης, και έτσι παίζουν σημαντικό ρόλο στις Επιδόσεις των Εφαρμογών. Για την βελτίωση των Επιδόσεων, είναι συνήθως αναγκαίο να μειωθούν τα Cache Misses {2.1.3}. Άρα η μελέτη της συμπεριφοράς των Caches είναι ζωτικής σημασίας στην σύγχρονη εποχή. Διευκρινίζουμε ότι μια Εφαρμογή με καλή Τοπικότητα δεδομένων, ελαχιστοποιεί τα Cache Misses που προκαλεί, διότι τείνει να επαναχρησιμοποιεί τα δεδομένα των Cache Lines της, χωρίς να χρειάζεται να τα αντικαθιστά συχνά. Με μικρό πρόσθετο χρόνο εκτέλεσης, το StatCache παρακολουθεί την Εκτέλεση μιας Εφαρμογής και συλλέγει ικανό αριθμό στατιστικών δειγμάτων, ώστε να προσδιορίσει σημαντικά χαρακτηριστικά της Τοπικότητας της Εφαρμογής και να προσεγγίσει με μεγάλη ακρίβεια το Miss Ratio {2.1.3} της. Η υπολογιστική μέθοδος: Είναι γρήγορη, αντιθέτως με μια πλήρη Εξομοίωση των συνθηκών εκτέλεσης της Εφαρμογής, που απαιτεί σημαντικά περισσότερο χρόνο. Αρκεί η παρατήρηση της Εφαρμογής για μία μόνο εκτέλεση, ώστε να συλλεχθούν τα στατιστικά δείγματα. Είναι συμβατή με Fully Associative Caches. Επιπλέον είναι ανεξάρτητη του μεγέθους της Cache Line, αλλά και του μεγέθους της ίδιας της Μνήμης Cache στην οποία έχει πρόσβαση η Εφαρμογή. Δίνει έμφαση στην μελέτη των Capacity Misses {2.1.3}, που εξάλλου είναι η πλειοψηφία τους. Έτσι χωρίς σημαντική απώλεια πληροφορίας επιταχύνει επιπλέον το μοντέλο. Η υπολογιστική μέθοδος συνοψίζεται στα εξής βήματα: Συλλογή στατιστικών δεδομένων με δειγματοληψία, στον χρόνο εκτέλεσης (Run time) της Εφαρμογής. Μαθηματική επεξεργασία των δεδομένων δειγμάτων, μετά το τέλος της εκτέλεσης της Εφαρμογής. Αυτά τα 2 βήματα θα καλύψουμε εκτενώς στις επόμενες παραγράφους, εξηγώντας και δικαιολογώντας και όσα αναφέραμε στην Εισαγωγή, για την Αρχική Έκδοση του μοντέλου StatCache [13] ) Θεωρία και Ορισμοί Το Δαχτυλικό Αποτύπωμα της Εφαρμογής που εξετάζει το StatCache, τα χαρακτηριστικά στατιστικά δείγματα δηλαδή που συγκεντρώνει, είναι οι Αποστάσεις Επαναχρησιμοποίησης των Προσβάσεων Μνήμης της Εφαρμογής, ή όπως θα αναφερόμαστε σε αυτές στο εξής, Reuse Distances. Θα ορίσουμε την έννοια του Reuse Distance: Μία Εφαρμογή, όπως γνωρίζουμε, διαβάζει και γράφει δεδομένα στην Μνήμη. Οι Διευθύνσεις Μνήμης αυτών των αναγνώσεων και εγγραφών αριθμούνται με αύξουσα σειρά, και ονομάζονται Αναφορές στην Μνήμη (Memory References). Ορισμός : Reuse Distance (Απόσταση Επαναχρησιμοποίησης) μιας Πρόσβασης Μνήμης, ορίζεται ο αριθμός των Αναφορών Μνήμης που μεσολάβησαν μέχρι να ξαναπαρουσιαστεί Πρόσβαση στο ίδιο Δεδομένο (θέση Μνήμης). 28

29 Ο όγκος των Δεδομένων που αφορά το Reuse Distance είναι ίσος με το μέγεθος μιας Cache Line. Εικόνα 16: Reuse Distances Για παράδειγμα (Εικόνα 16), η πρώτη Αναφορά Μνήμης στο δεδομένο Α γίνεται στην θέση 1, ενώ η δεύτερη στην θέση 7. Μεσολάβησαν 5 άλλες Αναφορές Μνήμης, άρα Reuse Distance ή RD A = 5. Συλλογή Reuse Distances με Δειγματοληψία (Sampling) Σε χρόνο εκτέλεσης (run time) το StatCache συλλέγει το Δαχτυλικό Αποτύπωμα της συμπεριφοράς μιας Εφαρμογής, στην μορφή της Κατανομής των Reuse Distances των Προσβάσεων της στην Μνήμη. Εικόνα 17: Κατανομή Reuse Distances / Fingerprints [13] Γενικά όταν η πλειοψηφία των Αναφορών έχουν χαμηλό Reuse Distance, σημαίνει ότι τα δεδομένα εμφανίζουν καλή Τοπικότητα. Κακή Τοπικότητα ωστόσο, δεν σημαίνει απαραίτητα και υψηλά Miss Ratios για την Εφαρμογή, αφού το μέγεθος της Cache ενδέχεται να είναι τέτοιο που να αποτρέπει την πρόκληση των Misses, ακόμα και για αναφορές με μεγάλα Reuse Distances. Για την μελέτη της Τοπικότητας των δεδομένων, μας ενδιαφέρει κυρίως η μορφή της κατανομής, το Αποτύπωμα δηλαδή. Βλέπουμε (Εικόνα 17) ότι η δειγματοληψία του StatCache, με μόλις 1 δείγμα για κάθε 1. Προσβάσεις Μνήμης, στα Προγράμματα Art και Equake του SPEC2 {2.2}, είχε ως αποτέλεσμα μια παραπάνω από ικανοποιητική προσέγγιση της πραγματικής κατανομής των Reuse Distances των Προγραμμάτων, σε ελάχιστο χρόνο. Μαθηματική Επεξεργασία των Δεδομένων Για τον προσδιορισμό της Τοπικότητας των δεδομένων των Εφαρμογών, η εξαγωγή της κατανομής των Reuse Distances αποτελεί το πρώτο βήμα. Το StatCache εξάγει τα γραφήματα του Miss Ratio σε συνάρτηση με το μέγεθος της Cache (working-set graphs). Για να φτάσει από τα ιστογράμματα των Reuse Distances στα Miss Ratios, το StatCache χρησιμοποιεί την ακόλουθη λογική. 29

30 Υποθέτουμε μια Fully Associative Cache με L Cache Lines και Τυχαία Πολιτική Αντικατάστασης (Random replacement Policy) {2.1.4}. Τότε: Η πιθανότητα μια Cache Line να παραμείνει στην Cache μετά από ένα Miss είναι (1 1/L), ενώ μετά από n Misses η ίδια πιθανότητα γίνεται (1-1/L) n. Αν f(n) είναι η πιθανότητα μια Cache Line να ΜΗΝ παραμείνει στην Cache, μετά από n Misses, τότε αυτή θα ισούται με: Ορίζουμε r(i) την πιθανότητα η Αναφορά Μνήμης i να προκαλέσει Miss. Δηλαδή r(i)=p(i=miss). Συμβολίζουμε h την κατανομή των Reuse Distances και h() το πλήθος των Αναφορών που έχουν RD=, h(1)= το πλήθος των αναφορών με RD=1 κ.ο.κ Ορίζουμε R το Miss Ratio και Ν το πλήθος των δειγμάτων που συλλέχθηκαν. Αποδεικνύεται [13] τότε ότι για οποιοδήποτε μέγεθος Μνήμης Cache, η ακόλουθη εξίσωση λυμένη ως προς R, R * N = h(1)f(r) + h(2)f(2r) + h(3)f(3r) +... μας δίνει το Miss Ratio της Εφαρμογής ) Υλοποίηση Η πραγματική εφαρμογή του StatCache, στην αρχική της έκδοση [1] [13], χρειάζεται να κάνει τρία πράγματα: Να επιλέγει τα δείγματα. Να ανιχνεύει την Επαναχρησιμοποίηση. Να μετράει την Απόσταση Επαναχρησιμοποίησης. Εκτός από την Υλοποίηση αυτών των τριών βημάτων, το StatCache χρησιμοποιεί δομές δεδομένων για να αποθηκεύσει τις πληροφορίες της δειγματοληψίας και συναρτήσεις υποστήριξης της βασικής λογικής. Επιλογή Δειγμάτων Αλγόριθμος Δειγματοληψίας Τα δείγματα πρέπει να επιλέγονται με τυχαίο τρόπο. Δηλαδή κάθε Αναφορά στην Μνήμη πρέπει να δειγματοληπτείται μα την ίδια πιθανότητα και τα δείγματα πρέπει να επιλέγονται ανεξάρτητα από παραμέτρους όπως ο χρόνος εκτέλεσης της Εφαρμογής. Το StatCache για να εξασφαλίσει αυτούς τους περιορισμούς χρησιμοποιεί τον ακόλουθο αλγόριθμο. Μία γεννήτρια τυχαίων αριθμών αποφασίζει μετά από πόσες Αναφορές Μνήμης θα ληφθεί το επόμενο δείγμα. Ο Instruction Counter του Υλικού παράγει μια Διακοπή Επεξεργαστή (Trap) Υπερχείλισης μόλις φτάσουμε στο πλήθος Αναφορών (μείον μια μικρή σταθερά που καλύπτει την καθυστέρηση του Επεξεργαστή να ανταποκριθεί στην Διακοπή) που αποφάσισε η τυχαία γεννήτρια. Στην συνέχεια ο Επεξεργαστής λαμβάνει την ειδοποίηση της Διακοπής και συνεχίζει βήμα βήμα την εκτέλεση μέχρι την ακριβή θέση του δείγματος. Ελέγχεται αν η Εντολή δείγμα προκαλεί πρόσβαση στην Μνήμη. Αν ναι, το δείγμα λαμβάνεται, δηλαδή το StatCache υπολογίζει την Διεύθυνση Μνήμης του αντίστοιχου δεδομένου στην Cache και, την δίνει στον Μηχανισμό Παρακολούθησης. Ανίχνευση Επαναχρησιμοποίησης Μηχανισμός Παρακολούθησης Το StatCache για την Ανίχνευση της Επαναχρησιμοποίησης χρησιμοποιεί τον Μηχανισμό Παρακολούθησης του Λειτουργικού Συστήματος. Η ακολουθούμενη διαδικασία είναι η εξής: Μία Cache Line (δείγμα) επιλέγεται από τον Αλγόριθμο Δειγματοληψίας και ο Μηχανισμός Παρακολούθησης θέτει ένα Σημείο Παρακολούθησης (Watch-point) στην Γραμμή αυτή. 3

31 Όταν η Εφαρμογή προσπαθήσει να προσπελάσει την Cache Line, ο Μηχανισμός Παρακολούθησης του Λειτουργικού στέλνει ένα σήμα Διακοπής (Trap) στην Εφαρμογή. Το σήμα της Διακοπής συλλέγεται από το StatCache, που έτσι ανιχνεύει την Επαναχρησιμοποίηση, και το Σημείο Παρακολούθησης αφαιρείται από την Γραμμή της Cache. Μέτρηση Απόστασης Επαναχρησιμοποίησης Το τελευταίο βήμα της διαδικασίας είναι σχετικά απλό. Όταν λαμβάνεται ένα δείγμα, ελέγχεται και η τιμή ενός Μετρητή Αναφοράς του Επεξεργαστή. Όταν ανιχνεύεται η Επαναχρησιμοποίηση, η τιμή του ίδιου Μετρητή ελέγχεται και πάλι. Η Reuse Distance είναι η διαφορά αυτών των δύο τιμών ) Παρατηρήσεις Όπως είναι αναμενόμενο, μια Εφαρμογή δεν παρουσιάζει πάντα σταθερό Miss Ratio. Η λογική του StatCache εφαρμόζεται με την παραδοχή ότι, το Miss Ratio της Εφαρμογής είναι σταθερό. Σε περίπτωση που αυτό δεν ισχύει, η εκτέλεση της Εφαρμογής διαιρείται σε μικρότερα παράθυρα δειγματοληψίας (sampling window), για τη διάρκεια των οποίων το Miss Ratio διατηρείται σταθερό, και υπολογίζεται το Miss Ratio για κάθε παράθυρο. Ο αριθμητικός μέσος όρος των επιμέρους Miss Ratios, μας δίνει τελικά το Miss Ratio της Εφαρμογής που μελετάμε. Είναι δυνατόν, για περισσότερο φιλτράρισμα της συλλεγόμενης πληροφορίας, τα Reuse Distances που συγκεντρώνουμε στην κατανομή h {2.3.2}, να ομαδοποιούνται σε ομάδες τιμών. Οι ομάδες αυτές συμβολίζονται και πάλι ως h1, h2, h3 κοκ, περιέχουν τα αθροίσματα των Προσβάσεων Μνήμης με τα Reuse Distances όλων των τιμών της ομάδας, και ονομάζονται Buckets. Η αρχική έκδοση του StatCache [13] αγνοεί όλα τα Cold Misses {2.1.3}, δηλαδή όλες τις αναφορές στην Μνήμη, που επιχειρούν Πρόσβαση σε δεδομένο για πρώτη φορά. Εξάγει το Miss Ratio, επικεντρώνοντας τους υπολογισμούς του στα Capacity Misses, που αποτελούν τον κύριο όγκο των Cache Misses που προκαλεί μια Εφαρμογή. Ωστόσο οι συγγραφείς [13] αναφέρουν ότι προγράμματα όπως το Equake και το Mcf, από το σετ προγραμμάτων SPEC2 {2.2}, παρουσιάζουν μεγαλύτερα ποσοστά Cold Misses που δεν είναι αμελητέα, και συνεπώς εισάγουν κάποιο σφάλμα στην εκτίμηση του StatCache. H Least Recently Used ή LRU Πολιτική Αντικατάστασης είναι δυνατόν να πάρει την θέση της Random Replacement Πολιτικής στο StatCache, όπως παρατηρούν οι συγγραφείς [13]. Παρά την ύπαρξη διαφορών στα αποτελέσματα του Miss Ratio, αυτές είναι μικρές και εκμηδενίζονται για πολλές Εφαρμογές, όπως το μέγεθος της Cache μεγαλώνει. Η λογική του StatCache, όπως αναφέραμε και νωρίτερα, συνάδει με χρήση Fully Associative Caches. Σαν μοντέλο είναι σαφώς ταχύτερο στην μελέτη της συμπεριφοράς των Μνημών Cache, από ότι οι πλήρεις Εξομοιωτές, με την εκτίμηση του να αποκλίνει ελάχιστα από τις πραγματικές τιμές και την πραγματική μορφή του Αποτυπώματος των Εφαρμογών που εξετάζει. Προσεγγίζει την συμπεριφορά των Εφαρμογών προς παρατήρηση με ένα μόνο πέρασμα αραιής δειγματοληψίας, για αυθαίρετο μέγεθος Cache. Η διαδικασία είναι σχετικά απλή και εύκολα υλοποιήσιμη. Για να φτάσει βέβαια στο τελικό αποτέλεσμα, απαιτούνται επιπρόσθετοι μαθηματικοί υπολογισμοί. Η μικρή αυτή απόκλιση των εκτιμήσεων του μοντέλου, οφείλεται σύμφωνα με τους συγγραφείς [13]: 31

32 Στον ρυθμό δειγματοληψίας. Η κάθε Εφαρμογή που μελετάται από το StatCache μπορεί φυσικά να παρουσιάζει διαφορετικά στοιχεία συμπεριφοράς, και έτσι να της αντιστοιχεί και διαφορετικός ιδανικός ρυθμός δειγματοληψίας. Προτείνεται μέθοδος για την εκτίμηση του ιδανικού ρυθμού δειγματοληψίας ανά εφαρμογή. Στον Αλγόριθμο Δειγματοληψίας, που είναι η μεγαλύτερη πηγή λάθους. Με την σημερινή ταχύτητα εκτέλεσης εντολών των Επεξεργαστών, το ακριβές σταμάτημα του Επεξεργαστή στην σωστή εντολή προς δειγματοληψία, αποδείχθηκε εξαιρετικά δύσκολο. Η βήμα βήμα προσέγγιση της σωστής εντολής, που υιοθετεί το μοντέλο, εισάγει σφάλμα στην διαδικασία ) Πώς θα χρησιμοποιήσουμε το StatCache Η εφαρμογή του StatCache που αναπτύχθηκε [1] περιλαμβάνει: Γραφικό Περιβάλλον Διεπαφής Χρήστη (GUI), για την παρουσίαση όλων των απαραίτητων στατιστικών και γραφικών παραστάσεων. Την Διεργασία Παρακολούθησης (Monitor Process), που περιλαμβάνει όλη τη λογική λειτουργία του StatCache, δηλαδή τον Συλλέκτη Δειγμάτων, το Στατιστικό Μοντέλο και όλο το απαιτούμενο βοηθητικό λογισμικό. Την Διεργασία Στόχο (Target Process), που είναι η Εφαρμογή προς παρατήρηση και επικοινωνεί με την Διεργασία Παρακολούθησης μέσω κοινόχρηστης περιοχής Μνήμης. το αρχικό φουλ εργαλείο και γενικά. Η εφαρμογή του StatCache παρέχει περισσότερα από απλώς απεικόνιση της Τοπικότητας των δεδομένων μιας Εφαρμογής και του υπολογισμού του Miss Ratio της. Παρέχει επιπλέον πληροφορίες ενδιαφέρουσες στον προγραμματιστή, όπως πόσα Misses προκαλούν οι γραμμές του Πηγαίου Κώδικα της Εφαρμογής, αναγνωρίζει τις δομές δεδομένων που προκαλούν κακή χρήση της Cache και παρατηρεί την Επαναχρησιμοποίηση των δεδομένων που υπάρχουν σε Επαναληπτικές δομές (loops). Ωστόσο εμείς δεν θα χρησιμοποιήσουμε αυτή την έκδοση του StatCache. Όπως θα εξηγηθεί αναλυτικά στο Κεφάλαιο 5, χρησιμοποιούμε συνδυαστικά τον Εξομοιωτή Simplescalar {2.2} με μια αφαιρετική μορφή του StatCache, που περιλαμβάνει μια υλοποίηση του στατιστικού ου Μοντέλου σε Γλώσσα Προγραμματισμού C. Από την πραγματική Εξομοίωση, θα συλλέξουμε τα ιστογράμματα των Reuse Distances καθώς και όποια άλλη πληροφορία προκύψει ενδιαφέρουσα για την εξαγωγή των συμπερασμάτων μας. Τις πληροφορίες αυτές θα εισάγουμε στην συνέχεια σε μια σύντομη εκδοχή του StatCache, γραμμένη σε Γλώσσα Προγραμματισμού C, που θα υλοποιεί κυρίως το Στατιστικό Μοντέλο του. Περισσότερα στα Κεφάλαια 4 και 5. 32

33 3) Memory-Level Parallelism 3.1) Σύντομοι Ορισμοί και Εισαγωγή Ορισμός : Instruction-Level Parallelism ή ILP (Παραλληλισμός Επιπέδου Εντολών) Ως ILP ορίζεται η μέτρηση του πλήθους των Λειτουργιών (Operations) που μπορούν να εκτελεστούν παράλληλα σε ένα Πρόγραμμα Υπολογιστή. Τις τελευταίες δύο δεκαετίες ο ILP, υπήρξε στο κέντρο του ενδιαφέροντος της έρευνας της Αρχιτεκτονικής των Υπολογιστών, σαν μέσο καταπολέμησης του Επικείμενου Τοίχους Μνήμης (Memory Wall) {2.1.1}, σε συνδυασμό με την ευρεία χρήση των Μνημών Cache. Οι υλοποιήσεις του ILP χρησιμοποιήθηκαν σαν τρόπος αύξησης της Κίνησης (Throughput) των Λειτουργιών που εκτελούνται από έναν Επεξεργαστή στην Μονάδα του Χρόνου, δηλαδή σε 1 Κύκλο του Επεξεργαστή. Στόχος των σχεδιαστών Επεξεργαστών, αλλά και των Μεταγλωττιστών (Compilers), έγινε η αναγνώριση και η εκμετάλλευση του ILP. Ενώ οι εντολές ενός προγράμματος εκτελούνται Σειριακά (In-Order), ο ILP επιτρέπει την επικάλυψη ή την αναδιάταξη της σειράς εκτέλεσης, αναλόγως με την χρησιμοποιούμενη μέθοδο. Αναφερόμαστε επιγραμματικά στους ευρύτατα γνωστούς και πιο διαδεδομένους τρόπους εκμετάλλευσης του ILP : Instruction Pipelining (Ομοχειρία Εντολών) : Η εκτέλεση μιας Εντολής στον Επεξεργαστή χωρίζεται σε ανεξάρτητα βήματα, με ενδιάμεση αποθήκευση (σε Flip-Flops). Έτσι ο Επεξεργαστής εξυπηρετεί τις Εντολές με τον ρυθμό του πιο αργού βήματος, ρυθμός αρκετά πιο γρήγορος και αποδοτικός από ότι θα είχαμε αν προσπαθούσαμε να εξυπηρετήσουμε όλες τις Εντολές ταυτόχρονα και παράλληλα. Τα βασικά βήματα, συγχρονισμένα από το ρολόι του Επεξεργαστή, είναι τα εξής: Instruction Fetch, Instruction Decode, Execute, Memory Access και Write Back. Superscalar Επεξεργαστές : Είναι οι Επεξεργαστές που δέχονται περισσότερες από μια Εντολές προς εκτέλεση σε κάθε Κύκλο Ρολογιού, υλοποιώντας μια μορφή Παραλληλισμού. Ένας Superscalar Επεξεργαστής υλοποιείται με περισσότερες από μια Δομικές Μονάδες (Functional Units) και είναι Pipelined. Κάθε μια από τις Δομικές Μονάδες περιέχει την δική της ALU (Arithmetic and Logical Unit Αριθμητική και Λογική Μονάδα) και Ολισθητές, Πολλαπλασιαστές κλπ. Οι Εντολές έρχονται σειριακά στον Επεξεργαστή και αφού ελεγχθούν για τυχόν Εξαρτήσεις των Δεδομένων που τις αφορούν (Data Dependencies), ανατίθενται στις διαθέσιμες Δομικές Μονάδες. Εικόνα 18: α) instruction pipeline β) Superscalar pipeline Out-of-Order Επεξεργαστές : Στην ενότητα {2.2} τους καλύψαμε διεξοδικά. Ένας OoO Επεξεργαστής αξιοποιεί τους Κύκλους Εντολών (Instructions Cycles) που μένουν αχρησιμοποίητοι από την λογική των In-Order Επεξεργαστών. Ενώ στον Κώδικα του Προγράμματος που εκτελείται, οι εντολές διαδέχονται οι μία την άλλη (Program Order), ο ΟοΟ Επεξεργαστής τις διαχειρίζεται με Σειρά Δεδομένων (Data Order). Δηλαδή με την σειρά που τα δεδομένα είναι διαθέσιμα στους Registers. Στον χρόνο αναμονής για τα 33

34 δεδομένα που χρειάζεται μια Εντολή, εκτελούνται επόμενες Εντολές, που έχουν όλα τα δεδομένα τους διαθέσιμα. Τέλος τα αποτελέσματα αναδιατάσσονται στην αρχική τους σειρά. Επιπλέον χρησιμοποιούνται ευρέως και οι ακόλουθες τεχνικές : Very Large Instruction Word (VLIW), Register Renaming και Speculative Execution σε συνδυασμό με Branch Prediction. Οι αρχές λειτουργίας αυτών των τεχνικών θεωρούνται σε γενικές γραμμές γνωστές, ωστόσο δεν κρίνουμε σκόπιμο την περαιτέρω ανάπτυξη τους σε αυτή την Διπλωματική Εργασία. Ωστόσο οι σύγχρονες Εφαρμογές τείνουν να έχουν μεγάλες απαιτήσεις Δεδομένων που ξεπερνούν τα μεγέθη των Μνημών Cache και συνεπώς χρειάζονται πολλαπλές προσβάσεις στην Κύρια Μνήμη. Τα Δεδομένα αυτά μάλιστα δεν διακρίνονται από κάποια ομαλότητα, συνήθως έχουν ακανόνιστα μοτίβα επανάληψης και Εξαρτήσεις μεταξύ τους [18]. Αν υποθέσουμε ότι ένα μεγάλο ποσοστό αυτών των Δεδομένων είναι Εντολές (ανεδαφική υπόθεση), ακόμα και τότε, οι βελτιστοποιημένοι Επεξεργαστές για εκμετάλλευση του ILP, θα συναντούσαν πολλά προβλήματα. Από τις λύσεις - βελτιστοποιήσεις που επικράτησαν για αυτό το θέμα, ξεχωρίζουν: Ο Thread-Level Parallelism (TLP - Παραλληλισμός σε Επίπεδο Νήματος), που διακρίνεται σε: Multi-Threading : Ο χρόνος του Επεξεργαστή μοιράζεται μεταξύ των Threads με Πολύπλεξη Χρόνου και κοινή χρήση όλων των Πόρων του. Υλοποιείται σε οποιοδήποτε Επεξεργαστή. Simultaneous Multi-Threading (SMT): Πρόκειται για υλοποίηση Υλικού (Hardware) σε Superscalar Επεξεργαστές και επιτρέπει την ταυτόχρονη εκτέλεση περισσότερων του ενός Νημάτων. Εικόνα 19: on-chip Multiprocessor Οι on-chip Multiprocessors (CMPs). Πρόκειται για τους πλέον διαδεδομένους Πολυπύρηνους Επεξεργαστές, που διαθέτουν από 2 Πυρήνες και πάνω, σε διάφορες διατάξεις. Οι Πυρήνες είναι λιγότερο πολύπλοκοι και πραγματοποιούν αληθινή παράλληλη εκτέλεση Νημάτων. Ξεπερνούν τις δυσκολίες αύξησης της Απόδοσης που αντιμετώπιζαν οι τεχνικές με βάση τον ILP, έχουν σημαντικά λιγότερη κατανάλωση, ειδικά σε σύγκριση με τους πολύπλοκους Out-of-Order Επεξεργαστές και είναι απλούστεροι στην χρήση. Ο συνδυασμός με κάποια μορφή Παραλληλισμού Επιπέδου-Νήματος δεν αποκλείεται. Από την σύντομη ανάλυση που προηγήθηκε, βλέπουμε πως εξαιτίας του συνεχώς αυξανόμενου όγκου των Δεδομένων των σύγχρονων Εφαρμογών, αλλά και λόγω των σύγχρονων τεχνικών και υλοποιήσεων για αύξηση της Απόδοσης των Υπολογιστικών Συστημάτων, εισάγεται ένα νέο είδος Παραλληλισμού, ο Παραλληλισμός Επιπέδου-Μνήμης ή Memory-Level Parallelism (MLP). Όλες οι σύγχρονες τάσεις της Τεχνολογίας των Υπολογιστών δείχνουν ότι [15] [16][17][18][19][2] αν εκμεταλλευτούμε τον MLP αποδοτικά, η απόδοση και συμπεριφορά των Υπολογιστικών Συστημάτων αυξάνεται ικανοποιητικά. Παράλληλα αναπτύσσονται νέες σύγχρονες 34

35 τεχνικές εκμετάλλευσης του MLP που προσανατολίζονται στην επικάλυψη των Cache Misses χρησιμοποιώντας προσωρινά άκυρες (invalid) τιμές των δεδομένων, τιμές από πρόβλεψη (prediction) ή στην προσωρινή απομάκρυνση (buffering-away) των Εντολών που προκάλεσαν Miss και της αλληλουχίας των Εξαρτήσεων (Dependencies) τους. Εξαιτίας αυτών ο υπάρχων Παραλληλισμός Μνήμης αυξάνεται ακόμα περισσότερο. 3.2) MLP, Ορισμός Memory-Level Parallelism ή MLP (Παραλληλισμός Επιπέδου Μνήμης) Ορισμός 1: Ως Στιγμιαίο MLP ορίζεται η μέτρηση του πλήθους των Προσβάσεων Μνήμης που εκκρεμούν προς εξυπηρέτηση (Misses) ανά πάσα στιγμή (ή Κύκλο του Επεξεργαστή). [18] Ορισμός 2: Ως Μέσο MLP, ή απλώς MLP, ορίζεται το Μέσο πλήθος Προσβάσεων Μνήμης που εκκρεμούν, όταν ήδη εκκρεμεί τουλάχιστον άλλη μια Πρόσβαση. Το MLP μπορεί να εξαχθεί από τον μέσο όρο των Στιγμιαίων MLP του προγράμματος. [18] Ορισμός 3: Εναλλακτικά, ως MLP ορίζεται η έννοια της δημιουργίας πολλαπλών Cache Misses προς εξυπηρέτηση παράλληλα. [16] Ας θεωρήσουμε πρώτα μια απλή περίπτωση. Ένα Cache Miss, προκαλεί πρόσβαση στην Κύρια Μνήμη, με συνολική Καθυστέρηση (Memory Latency) 2 Κύκλους Ρολογιού. Αν το Miss συμβεί μετά από 5 Κύκλους υπολογισμών, ο Επεξεργαστής θα παύσει τους Εικόνα 2: Isolated Miss υπολογισμούς και θα περιμένει το δεδομένο που λείπει, μέχρι αυτό να έρθει από την Κύρια Μνήμη. Στην συνέχεια θα συνεχίσει τους υπολογισμούς, με συνολικό κόστος Καθυστέρησης 2 Κύκλους. Ορισμός : Isolated Miss (Μεμονωμένο) Ως Μεμονωμένο ορίζουμε εκείνο το Cache Miss, που δεν συμβαίνει παράλληλα με κάποιο άλλο. Ορισμός : MLP Miss ή Overlapping Miss (Επικαλυπτόμενο) Ως Επικαλυπτόμενο ή MLP ορίζουμε εκείνο το Cache Miss, που συμβαίνει ταυτόχρονα με κάποιο άλλο. Εικόνα 21: MLP Misses Στην Εικόνα 21, παρατηρούμε 2 Misses να συμβαίνουν επικαλυπτόμενα, μετά από 5 και 75 Κύκλους αντίστοιχα. Αν φυσικά ο MLP υποστηρίζεται σαν λογική από τον Επεξεργαστή, τότε τα Misses θα εξυπηρετηθούν παράλληλα. Ο Επεξεργαστής μπορεί να συνεχίσει τους υπολογισμούς του με κόστος Καθυστέρησης μόνο = 225 Κύκλους. Δηλαδή τελικά αντιστοιχούν 225 / 2 = 112,5 Κύκλοι στην Καθυστέρηση του κάθε Miss που εξυπηρετήθηκε παράλληλα, αντί για 2 Κύκλους που είναι κανονικά η Καθυστέρηση του Μεμονωμένου Miss. Αν τα Misses 35

36 αντιμετωπίζονταν ως Isolated, το Κόστος θα ήταν 4 Κύκλοι Ρολογιού. Ακόμα και με αυτό το αφελές ίσως παράδειγμα, παρατηρούμε τα οφέλη που μπορούμε να κερδίσουμε υπολογίζοντας τον Παραλληλισμό Επιπέδου Μνήμης. Αν εξυπηρετούμε παράλληλα τα Misses, μειώνονται στην ουσία οι φορές που πρέπει ο Επεξεργαστής να εισέλθει σε Stall Mode (Καθυστέρηση), περιμένοντας την Κύρια Μνήμη για δεδομένα. Ωστόσο ο Παραλληλισμός σε Επίπεδο Μνήμης που εμφανίζεται στη διάρκεια εκτέλεσης μιας Εφαρμογής δεν είναι ομοιόμορφος. Τα Misses μπορούν να εμφανίζονται είτε ως Μεμονωμένα ή ως Παράλληλα, όπως εξηγήσαμε και με το παραπάνω απλό παράδειγμα, και σχηματίζονται συνήθως σε ακανόνιστα μοτίβα επανάληψης. Ακριβώς αυτή η ανομοιομορφία στην διασπορά των Misses μέσα στον χρόνο εκτέλεσης, είναι που κάνει την εκμετάλλευση του MLP αξιόλογη και ικανή να αυξήσει την απόδοση του Συστήματος.[18] Τα πιο επιζήμια είναι φυσικά τα Μεμονωμένα Misses, καθώς ο Επεξεργαστής αναγκάζεται να περιμένει για μια μόνο μεταφορά δεδομένου. Κάθε Εφαρμογή εμφανίζει χαρακτηριστική συμπεριφορά στην εμφάνιση των Misses και γι'αυτό εκτός από τις λύσεις που, όπως θα δούμε, υιοθετούνται σε επίπεδο Υλικού, ενδείκνυται να χρησιμοποιούμε και εξειδικευμένες Πολιτικές Αντικατάστασης (Replacement Policies). H MLP- Aware Πολιτική [16], για παράδειγμα, προσφέρει μέχρι και 23% βελτίωση στην απόδοση του εκτελούμενου Προγράμματος. Κάνοντας, στην συνέχεια, την βάσιμη υπόθεση ότι, υπάρχει μόνιμη Καθυστέρηση για μια Πρόσβαση στην Κύρια Μνήμη, τότε μπορούμε να υπολογίσουμε το Μέσο MLP από την ακόλουθη εξίσωση [18]: Όπου: Cycles : Οι συνολικοί Κύκλοι εκτέλεσης του Προγράμματος. Cycles perf : Οι απαιτούμενοι Κύκλοι για on-chip Πρόσβαση (δηλαδή στις Caches), εφόσον οι Caches είναι τέλειες. Overlap CM : Η κλασματική επικάλυψη των Κύκλων Εκτέλεσης, με τους off-chip Κύκλους (δηλαδή με τους Κύκλους Πρόσβασης στην Κύρια Μνήμη) NumMisses : Το πλήθος των off-chip Προσβάσεων. MLP : Ο Μέσος Παραλληλισμός Επιπέδου-Μνήμης. Ο πρώτος προσθετέος του τύπου ισούται με τους On-Chip Κύκλους, ενώ ο δεύτερος με τους Off- Chip Κύκλους. Εικόνα 22: Χρονισμός Out-of-Order Επεξεργαστή με MLP και Καθυστέρηση 2 Κύκλους [18] 3.3) Λογικές, Υλοποιήσεις και Προσθήκες Υλικού που ευνοούν τον MLP Διάφορες τεχνικές και υλοποιήσεις Υλικού, όπως οι Non-blocking Caches, η Miss Handling Architecture (ΜΗΑ ή Αρχιτεκτονική Διαχείρισης των Misses), η Out-of-Order Εκτέλεση με μεγάλα Παράθυρα εντολών, η Run-ahead Εκτέλεση και το Prefetching (Προνοητική Μεταφορά), βελτιώνουν την απόδοση των Υπολογιστικών Συστημάτων, ενισχύοντας τον Παραλληλισμό των λειτουργιών της Μνήμης που εμφανίζουν μεγάλη Καθυστέρηση.[18] Σημαντικό ρόλο στην 36

37 ενίσχυση της εμφάνισης MLP στην εκτέλεση ενός Προγράμματος, μπορεί να παίξει και ο Compiler ) Out-of-Order Επεξεργαστής Σε προηγούμενα εδάφια της παρούσας Διπλωματικής Εργασίας καλύψαμε εκτενώς την έννοια του Out-of-Order Επεξεργαστή. Όπως είδαμε ένας OoO Επεξεργαστής ενισχύει τον MLP χάρη στην δυνατότητα του να συνεχίζει να εξυπηρετεί παράλληλα Misses, όσο το Παράθυρο Εντολών του έχει διαθέσιμο χώρο. Παρενθετικά αναφέρουμε ότι η έννοια Παράθυρο Εντολών (Instruction Window) έχει κυρίως εφαρμογή στους Superscalar Επεξεργαστές και αντιπροσωπεύει το πλήθος των Εντολών που μπορούν να εκτελούνται παράλληλα. Ωστόσο ο Out-of-Order Επεξεργαστής έχει ένα πιο Δυναμικό Παράθυρο Εντολών, του οποίου η χωρητικότητα εξαρτάται από το μέγεθος δύο πολύ βασικών δομών του: Register Update Unit ή RUU : Είναι μια FIFO Ουρά που Διαχειρίζεται τον Συγχρονισμό και την Επικοινωνία των Registers. Κάθε καταχώρηση αντιστοιχεί σε μια Εντολή προς εκτέλεση και διατηρεί πληροφορίες όπως τα Tags των θέσεων Μνήμης των τελεστών της πράξης της Εντολής και αρκετά Bits Ελέγχου. Επίσης χρησιμοποιεί έναν κυκλικό Buffer Αναδιάταξης (ROB / Reorder Buffer), που μετονομάζει αυτόματα τους Registers και φυλάει τα αποτελέσματα των Εντολών που βρίσκονται σε αναμονή. O ROB επίσης αποθηκεύει την Σειρά Προγράμματος (Program Order) των Εντολών, ώστε μετά την Out-of-Order εκτέλεση να παρέχει In-Order Απόσυρση (Retirement). Load-Store Queue ή LSQ : Διαχειρίζεται τον Συγχρονισμό και την Επικοινωνία με την Μνήμη. Αποθηκεύει με την σειρά εκτέλεσης του Προγράμματος όλες τις Φορτώσεις (Loads) και Αποθηκεύσεις (Stores) δεδομένων που αφορούν τις Εντολές και διαπιστώνει τις Αλληλοσυσχετίσεις (Dependencies) τους. Οι εντολές εισάγονται στην LSQ της ίδια στιγμή που εισάγονται και στον ROB. Το μέγεθος λοιπόν των ROB και LSQ, δηλαδή το μέγεθος του Δυναμικού Παραθύρου Εντολών του Out-of-Order Επεξεργαστή παίζει κρίσιμο ρόλο στην αύξηση του MLP, αφού όσο αυτές οι δύο δομές έχουν κενές θέσεις, τα νέα Παράλληλα Misses θα συνεχίζουν να εξυπηρετούνται. Η ανεξαρτητοποίηση των μεγεθών του ROB και του Δυναμικού Παραθύρου Εντολών ενδείκνυται και μεγιστοποιεί μάλιστα τον MLP.[18] Επίσης σημαντικό ρόλο παίζουν η Σειριοποίηση των Εντολών, το Prefetching και οι τα λανθασμένα Predictions. [18] Αναφέρουμε τέλος ότι και οι In-Order Επεξεργαστές είναι ικανοί να παράξουν MLP, αλλά σε σημαντικά μικρότερη έκταση από τους Out-of-Order. Μικρά Παράθυρα MLP μπορεί να εμφανιστούν στους In-Order Επεξεργαστές όταν οι μαζικές μεταφορές Δεδομένων του Prefetching αλληλοεπικαλύπτονται ή όταν ο Επεξεργαστής εισέλθει σε Stall Mode (Αναμονής) περιμένοντας να ικανοποιηθεί κάποια Εξάρτηση (Dependency) δεδομένων. [18] 3.3.2) Non-blocking Caches Οι Μνήμες Cache, με βάση το πόσα παράλληλα Misses μπορούν να εξυπηρετούν ταυτόχρονα, διαχωρίζονται σε [17]: Blocking Caches : Δεν δέχονται νέες αιτήσεις κατά την διάρκεια της εξυπηρέτησης ενός Miss. Non-blocking ή Lockup-free Caches : Μπορούν να εξυπηρετούν πολλαπλά Misses παράλληλα. Δηλαδή συνεχίζουν να δέχονται αιτήσεις εξυπηρέτησης όσο ένα ή περισσότερα Misses εξυπηρετούνται σε χαμηλότερα επίπεδα της Ιεραρχίας Μνήμης. Η έννοια της Nonblocking Cache ορίστηκε για πρώτη φορά από τον D. Kroft το 1981 [22], περίπου μία δεκαετία πριν την ευρεία εμπορική τους χρήση. Όπως έχει γίνει κατανοητό μέχρι τώρα, ένας σίγουρος τρόπος αύξησης του MLP ενός Συστήματος, είναι η δυνατότητα υποστήριξης πολλών παράλληλων Misses, στο εν λόγω Σύστημα. Οι Magnus Jahre και Lasse Natvig [17] φθάνουν στο συμπέρασμα ότι, για να είναι σε θέση 37

38 οι Non-blocking Caches να υποστηρίζουν τον σύγχρονο φόρτο του MLP, θα πρέπει να παρέχουν ικανοποιητική ποσότητα παραλληλισμού των Misses, ώστε η εκτέλεση των Εφαρμογών να επιταχύνεται. Λέγοντας ικανοποιητική εννοούν ότι πρέπει η ποσότητα του παραλληλισμού να λαμβάνει υπόψη τον συμβιβασμό (trade-off) μεταξύ της απόδοσης της Εφαρμογής και της πιθανής συμφόρησης στους διαύλους μεταφοράς δεδομένων. Έτσι ορίζεται [23] το μέγεθος, Cache Bandwidth (Εύρος Ζώνης Μνήμης Cache), που σαν έννοια αντιπροσωπεύει ακριβώς τον συμβιβασμό που αναφέραμε σε αυτή την παράγραφο. Η προσέγγιση των Blocking Caches περιορίζει ουσιαστικά την απόδοση, όταν στις σύγχρονες Εφαρμογές, παρατηρείται σημαντικά μεγαλύτερο πλήθος Misses, συγκριτικά με το πλήθος των Hits. Όπως είναι προφανές ο περιορισμός της απόδοσης συμβαίνει, διότι η Cache δεν είναι σε θέση πλέον, με τόσο μεγάλο φόρτο Misses, να αποκρύψει την Καθυστέρηση της Κύριας Μνήμης, επικαλύπτοντας την διάρκεια εξυπηρέτησης τους με άλλες ενέργειες. Υλοποιώντας μια Non-blocking Cache Ν-τρόπων (N-ways) [21], υποστηρίζουμε την εξυπηρέτηση N παράλληλων Misses και ταυτόχρονα αυξάνουμε Ν φορές το Cache Bandwidth. Φυσικά αυτό το είδος Cache δεν είναι χρήσιμο, αν ο Επεξεργαστής του Συστήματος δεν υποστηρίζει την δημιουργία πολλαπλών παράλληλων Misses. Επίσης αυξάνεται η πολυπλοκότητα του Cache Controller και έτσι η ύπαρξη Ν-Miss Handling Registers για την διαχείριση αυτών των N επάλληλων Misses είναι ζωτικής σημασίας για τον μηχανισμό. Τέλος αναφέρουμε ότι μια Nonblocking Cache είναι ευαίσθητη στις Εξαρτήσεις και Αλληλοσυσχετίσεις (Dependencies) των δεδομένων ) Miss Handling Architecture Για να είναι σε θέση το Υπολογιστικό Σύστημα να διαχειρίζεται πολλαπλά Misses, απαιτείται η ύπαρξη μιας δομής Υλικού που θα πάρει τα ηνία της διαχείρισης. Αυτή είναι η Miss Handling Architecture (ΜΗΑ ή Αρχιτεκτονική Διαχείρισης των Misses) και δομικό χαρακτηριστικό της αποτελούν οι Miss Status Holding Registers ή Miss Handling Registers (MSHRs). Το πλήθος των MSHRs αποτελεί καθοριστικό παράγοντα για τον MLP, διότι καθορίζει πόσες εντολές μπορούν να εξυπηρετηθούν παράλληλα από πλευράς του Cache Controller, πριν η Non-blocking Cache διακόψει τις αιτήσεις του Επεξεργαστή για εξυπηρέτηση. Στην Εικόνα 23, φαίνονται 2 συνηθισμένες υλοποιήσεις των MHA, και το εσωτερικό της διάταξης του MSH Register File που περιέχει τους MSHRs. Εικόνα 23: a) b) MHA [19] c) MSHR File [17] To MSH Register File υλοποιείται ιδανικά από μια μικρή Fully Associative Cache, που μπορεί να διαχειρίζεται μέχρι και n παράλληλα Misses. Για να είναι αυτό δυνατό, το MSHR File περιέχει και n Κυκλώματα Συγκριτών (Comparators), έναν Συγκριτή για κάθε MSHR. Ένας MSHR περιέχει τις ακόλουθες πληροφορίες: Την Διεύθυνση Μνήμης που αντιστοιχεί στην Cache Line (Block) του Miss. Πληροφορίες για την Διεύθυνση Μνήμης που είναι αποθηκευμένο το Δεδομένο στην Κύρια 38

39 Μνήμη, και το Offset μέσα στο Memory Block, εφόσον δεν απαιτούνται και τα υπόλοιπα δεδομένα του Block από κάποιο γειτονικά εξυπηρετούμενο Miss. Ένα Valid Bit (Έγκυρο) που αν έχει τιμή 1, δείχνει ότι ο MSHR χρησιμοποιείται στην εξυπηρέτηση ενός Miss και δεν είναι διαθέσιμος. Αν τα Valid Bits όλων των MSHRs είναι 1, τότε η Non-blocking Cache εμποδίζει την περαιτέρω εξυπηρέτηση νέων Misses, μέχρι την απελευθέρωση κάποιου MSHR. H MHA Αρχιτεκτονική λοιπόν, παρέχει δύο σημαντικά πλεονεκτήματα που συνεισφέρουν στην αύξηση της απόδοσης του Συστήματος. Η Cache δεν μπλοκάρει την εξυπηρέτηση νέων Misses, όσο υπάρχει ένας MSHR διαθέσιμος. Μόνο μια αίτηση στέλνεται στο επόμενο επίπεδο Ιεραρχίας Μνήμης, για κάθε Cache Line, ακόμα και αν ο Επεξεργαστής προκαλέσει Misses για περισσότερες από μία θέσης Μνήμης του ίδιου Block. Σύμφωνα με τον Kroft [22], τα Misses που απαιτούν την δέσμευση ενός νέου MSHR, ονομάζονται Primary Misses (Πρωτεύοντα). Από την άλλη πλευρά, Secondary Misses (Δευτερεύοντα) ονομάζονται εκείνα τα Misses που προστίθεται σε έναν ήδη δεσμευμένο MSHR και δεν προκαλούν το μπλοκάρισμα της Cache. Για την εξυπηρέτηση των Secondary Misses υλοποιείται μια λογική από Sub-entries (Υπό-Καταχωρήσεις) στον κάθε MSHR. Δηλαδή τα επιπλέον Misses της ίδιας Cache Line εξυπηρετούνται από τον ίδιο MSHR, που έχει ήδη διατεθεί στην Γραμμή. Η MHA δέχεται προσβάσεις σε τρεις ξεχωριστές περιπτώσεις: Για κάθε L1 Miss ελέγχεται η MHA, ώστε να βρεθεί αν κάποιος MSHR εξυπηρετεί την συγκεκριμένη Cache Line. Κάθε L1 Miss που δεν ικανοποιείται από την προώθηση δεδομένων της MHA, την ενημερώνει κατάλληλα. Κάθε L1 Πρωτεύον Miss, αφού εξυπηρετηθεί, ενημερώνει την MHA να αποδεσμεύσει τον αντίστοιχο MSHR. Συνεπώς απαιτείται μεγαλύτερο Εύρος Ζώνης (Bandwidth) για την αυτές τις επιπρόσθετες επικοινωνίες. Για την βέλτιστη απόδοση, προτείνεται από τις μελέτες [2] και [17], να επιτευχθεί ο MLP που παρέχει η MH-Architecture, με αποδοτικό τρόπο και ως προς το Υλικό (Hardware). Έτσι μελετούν την υλοποίηση μιας Ιεραρχικής MHA, που φαίνεται στην Εικόνα 24. Εικόνα 24: Ιεραρχικά Δομημένη MHA Αφιερώνεται ένα μικρό και γρήγορο Register File από MSHRs σε κάθε Cache του ίδου Ιεραρχικού επιπέδου (L1), και διατίθεται Κοινόχρηστο ένα μεγαλύτερο και πιο αργό MSHR File. Όταν τα 39

40 μικρά Files γεμίζουν μπορούν σε χρησιμοποιήσουν τους MSHRs του Κοινόχρηστου File. Φυσικά χρειάζεται λογική αντιμετώπισης των πιθανών συνθηκών Ανταγωνισμού (Race Conditions) που ίσως δημιουργηθούν στο Κοινόχρηστο File. Ένα πιθανοτικό Φίλτρο (Bloom Filter) φροντίζει για τον περιορισμό των αιτήσεων προς το Κοινόχρηστο File. Επιπρόσθετα οι μελετητές [17][19][2] προτείνουν την αύξηση του πλήθους των MSHRs σε δυνάμεις του 2, για αξιοποίηση όλου του εύρους των Διευθύνσεων που καλύπτουν τα Bits. Πειραματιζόμενοι σε έναν τετραπύρηνο CMP (Εικόνα 19) παρατηρούν ότι : Η μείωση του Cache Blocking αυξάνει την απόδοση του Συστήματος μέχρι ένα σημείο. Υπερβολικά πολλά παράλληλα Misses, μπορούν να προκαλέσουν συμφόρηση σε ένα φυσιολογικού μεγέθους Front-Side Bus. Άρα το ιδανικό πλήθος των MSHRs είναι ένας συμβιβασμός (tradeoff) μεταξύ των δύο αυτών σχεδιαστικών παραγόντων. Φυσικά δεν πρέπει να ξεχνάμε ότι η κάθε Εφαρμογή έχει την δική της χαρακτηριστική συμπεριφορά όσον αφορά την χρήση της Μνήμης, και έτσι διαφορετικό πλήθος MSHRs μπορεί να είναι ιδανικός για κάθε διαφορετικό τύπο Εφαρμογής. Αύξηση πέρα από το ιδανικό πλήθος, στην ουσία, θα μειώσει την απόδοση του Συστήματος. Η βέλτιστη συμπεριφορά της Miss Handling Architecture περιλαμβάνει ελάχιστα μεγαλύτερο πλήθος MSHRs στην L2 Cache από ότι στην L1. Αναφέραμε ότι ιδανικά η MHA υλοποιείται με Fully Associative Caches. Ωστόσο για λόγους οικονομίας προτιμάται η χρήση των Set-Associative. Η υιοθέτηση των Sets αυξάνει τις πιθανότητες μπλοκαρίσματος της Cache, διότι σε περίπτωση που το επόμενο Miss αντιστοιχεί σε γεμάτο Set, η Cache θα μπλοκάρει ακόμα και αν τα υπόλοιπα Set έχουν διαθέσιμους MSHRs. Ωστόσο παρατηρείται ότι μια 8-way Set-Associative Cache προσεγγίζει ικανοποιητικά την απόδοση μιας Fully Associative στο σύνολο σχεδόν των περιπτώσεων, μειώνοντας παράλληλα σημαντικά το κόστος. Αυτό ακριβώς παρατηρούμε στην Εικόνα 25, για: α) έναν Checkpointed Επεξεργαστή, που χρησιμοποιεί τεχνικές όπως Value Prediction και Run-ahead Execution {3.3.4}. β) έναν Επεξεργαστή με σημαντικά Μεγάλο Παράθυρο Εντολών 512 Θέσεων και Reorder Buffer (ROB) 248 Θέσεων. Εικόνα 25: Απόδοση με βάση το Associativity μιας MH-Architecture με 32 MSHRs. [19] 3.3.4) Run-ahead Execution Στην Out-of-Order λογική όταν το Δυναμικό Παράθυρο Εντολών γεμίσει, τότε ο Επεξεργαστής εισέρχεται σε Stall Mode. Με την λογική της Run-ahead Εκτέλεσης όμως, όταν φθάσει αυτή η στιγμή, ο Επεξεργαστής δημιουργεί ένα Σημείο Αναφοράς (Checkpoint) και εισέρχεται σε Run-ahead Execution Mode. Τότε όλα τα Misses που βρίσκονται σε αναμονή για 4

41 εξυπηρέτηση μετατρέπονται σε Prefetches (Προνοητικές Μεταφορές), οι παραπλήσιες Εντολές που παρουσιάζουν Εξαρτήσεις με αυτά τα δεδομένα παρακάμπτονται και οι Αποθηκεύσεις (Stores) δεν ενημερώνουν την Μνήμη με νέες τιμές. Στην συνέχεια αφού οι εκκρεμότητες του Δυναμικού Παραθύρου Εντολών ικανοποιηθούν, τότε ο Επεξεργαστής αδειάζει το Pipeline (Flush), γυρίζει πίσω στο Σημείο Αναφοράς που έθεσε και συνεχίζει σε κανονικό Mode εκτέλεσης. Η τεχνική αυτή αυξάνει τον MLP ενός συστήματος σημαντικά, με τις επιπλέον μεταφορές δεδομένων που προκαλεί. 3.4) Κόστος MLP Ορισμός: Το Κόστος MLP (MLP Cost) είναι Μέτρο του επιπέδου του Παραλληλισμού Επιπέδου Μνήμης, ή εναλλακτικά, Μέτρο του Κόστους σε Κύκλους του Επεξεργαστή (CPU Cycles), ανάλογα με το Επίπεδο του Παραλληλισμού. [16] Το πλήθος των Κύκλων Καθυστέρησης (Latency) που επιβάλει ένα Miss στο Σύστημα προσεγγίζεται από το πλήθος των Κύκλων που το ίδιο Miss περιμένει, ώστε να εξυπηρετηθεί. Όταν παρατηρούνται Παράλληλα Misses τότε οι Κύκλοι Καθυστέρησης διαιρούνται ισότιμα μεταξύ των ταυτόχρονων (concurrent) Misses. Η λογική υπολογισμού του Κόστους, εκμεταλλευόμενη ότι σε κάθε Miss προς εξυπηρέτηση ανατίθεται ένας MSHR, βασίζεται στην Αρχιτεκτονική Διαχείρισης Misses (ΜΗΑ). Αρκεί να προστεθεί ένα πεδίο με την πληροφορία mlp_cost σε κάθε Kαταχωρητή MSHR και να εκτελεσθεί ο ακόλουθος αλγόριθμος υπολογισμού του Κόστους MLP. Εικόνα 26: Αλγόριθμος Υπολογισμού του Κόστους MLP. [16] Εφόσον ο υπολογισμός εκτελείται αλγοριθμικά, το πεδίο mlp_cost είναι φυσικά μια μεταβλητή. Σε επίπεδο Υλικού απαιτούνται επιπλέον τόσοι Αθροιστές (Adders), όσοι είναι και οι MSHRs του Register File. Ωστόσο για λόγους οικονομίας αποδεικνύεται ότι με Αθροιστές πλήθους όσο ένα κλάσμα των συνολικών MSHRs και διαμοιρασμό χρόνου (time sharing) των Αθροιστών σε όλο το Register File, η μέτρηση του Κόστους μεταβάλλεται σε αμελητέα ποσότητα.[16] Ορίζουμε την ποσότητα Ν, ως το πλήθος των Misses από Απαίτηση (demand Misses) που εκκρεμούν στο MSHR File παράλληλα με το Miss που εξετάζουμε. Ως Misses από Απαίτηση (Demand Misses) ορίζονται [16], οι αστοχίες που προκλήθηκαν από Προσβάσεις Εντολών, Φορτώσεων Δεδομένων (Load) και Αποθηκεύσεων Δεδομένων (Store), και συνέβησαν μεταξύ της τελευταίας Μνήμης Cache της Ιεραρχίας και της Κύριας Μνήμης. Βήμα1: Όταν το νέο Miss ανατεθεί σε έναν MSHR, το πεδίο mlp_cost, αρχικοποιείται σε. Βήμα2: Στην συνέχεια, για κάθε Κύκλο εκτέλεσης που η εξυπηρέτηση του Miss συνεχίζει να εκκρεμεί, ο αντίστοιχος Αθροιστής (mlp_cost) αυξάνεται με την ποσότητα 1/Ν. Βήμα3: Όταν το Miss που εκκρεμεί εξυπηρετηθεί, πριν ο αντίστοιχος MSHR αποδεσμευτεί, η τιμή του Αθροιστή αντιπροσωπεύει το συνολικό Κόστος MLP του εξεταζόμενου Miss, και μπορεί να 41

42 εξαχθεί σε μια δομή δεδομένων και χρησιμοποιηθεί αναλόγως. Ανεξαρτήτως από τον τύπο του εκτελούμενου Προγράμματος, παρατηρήθηκε [16] ότι : Το Κόστος MLP παρουσιάζει σημαντική ανομοιομορφία στην κατανομή του, διατηρώντας χαρακτηριστικά στοιχεία από τον τρόπο που το Πρόγραμμα χρησιμοποιεί την Μνήμη. Οι μετρήσεις του μέσου Κόστος MLP δίνουν πάντα σημαντικά λιγότερους Κύκλους, από τους Κύκλους που απαιτεί η εξυπηρέτηση ενός Μεμονωμένου (Isolated) Miss. Άρα θα είναι πάντα προσοδοφόρο να λαμβάνουμε υπόψη μας τον MLP για να αυξήσουμε την απόδοση ενός εκτελούμενου Προγράμματος στο Σύστημα. Την ιδιότητα αυτή παρατηρούμε στο Παράδειγμα πιο κάτω. Παράδειγμα [16] Έστω ότι ένα Μεμονωμένο (Isolated) Miss απαιτεί 444 Κύκλους για την εξυπηρέτηση του, σε Σύστημα με Out-of-Order Επεξεργαστή και Παράθυρο Εντολών 128 Θέσεων. Παρατηρούμε για 14 Προγράμματα του Συνόλου Προγραμμάτων SPEC: Εικόνα 27: Παράδειγμα [16] Στην απεικόνιση των μετρήσεων του κάθε Προγράμματος, η δεξιότερη ομάδα Κόστους MLP των [42, 48+] Κύκλων περιέχει και το ποσοστό των Isolated Misses Που παρατηρήθηκαν. Δύο παρατηρήσεις είναι σημαντικές. Πρώτον ότι με εξαίρεση τα Twolf, Vpr, Facerec και Parser που παρουσιάζουν σχεδόν 5% συγκέντρωση Isolated Misses, τα υπόλοιπα προγράμματα έχουν υψηλά ποσοστά παραλληλισμού. Δεύτερον παρατηρούμε ότι το μέσο MLP Κόστος είναι πράγματι, όπως αναφέραμε και πιο πάνω σημαντικά μικρότερο (σε Κύκλους) από ότι το Κόστος των Isolated Misses. 42

43 4) Μοντελοποιήσεις Μηχανισμού Πρόβλεψης του Παραλληλισμού Επιπέδου Μνήμης (MLP) 4.1) Σκοπός Σκοπός μας είναι να αναπτύξουμε ένα Μοντέλο αναγνώρισης του Παραλληλισμού Επιπέδου Μνήμης (MLP) και επιτυχούς προσέγγισης και πρόβλεψης του Κόστους MLP μιας εκτελούμενης Εφαρμογής. Θέλουμε να αποδείξουμε ότι είναι δυνατή η πρόβλεψη των επιπτώσεων που έχει ο Παραλληλισμός Επιπέδου Μνήμης στις Εφαρμογές, γιατί όπως εξηγήσαμε στην παράγραφο 3.1, αν εκμεταλλευτούμε τον MLP αποδοτικά, η απόδοση και συμπεριφορά των Υπολογιστικών Συστημάτων αυξάνεται ικανοποιητικά. Η σημαντικότερη επίπτωση της ύπαρξης του MLP είναι η επιβολή Κύκλων Καθυστέρησης στο Σύστημα, για το χρονικό διάστημα που ο Επεξεργαστής βρίσκεται σε αναμονή, περιμένοντας να του διαθέσει η Κύρια Μνήμη τα αναγκαία δεδομένα (παράλληλα Misses) για τους υπολογισμούς του. Η Καθυστέρηση που εισάγει ο MLP ωστόσο, είναι μικρότερη από την Καθυστέρηση που θα υπέμενε το Σύστημα, εάν επιχειρούσαμε να εξυπηρετήσουμε όλα τα Misses σειριακά και απομονωμένα. Συνεπώς κρίνουμε σκόπιμο να υιοθετήσουμε σαν χαρακτηριστικό μέτρο του Παραλληλισμού Επιπέδου Μνήμης το Κόστος MLP, όπως το ορίσαμε αυτό στην παράγραφο 3.4, εκφρασμένο σε Κύκλους Καθυστέρησης. Φυσικά επιθυμούμε το Μοντέλο να είναι γενικευμένο και να μπορεί να παράξει αποδεκτά αποτελέσματα για κάθε πιθανή Εφαρμογή. Γνωρίζουμε ότι τα Προγράμματα που εκτελούνται στους Υπολογιστές μας, παρουσιάζουν διαφορετικά χαρακτηριστικά συμπεριφοράς, όσο αφορά τον τρόπο με τον οποίο αυτά διαχειρίζονται τις περιοχές Μνήμης που τους διαθέτουμε. Αυτό, όπως είναι ευνόητο, οφείλεται στις διαφοροποιημένες απαιτήσεις Μνήμης που έχει το κάθε εκτελούμενο Πρόγραμμα. Για να καλύψουμε όλες τις πιθανές συμπεριφορές θα χρησιμοποιήσουμε ένα σύνολο από τα Μετροπρογράμματα (Benchmarks) SPEC2, σαν είσοδο στον Sim-Outorder Εξομοιωτή του Simplescalar, εργαζόμενοι σε περιβάλλον Γραμμής Εντολών Linux. Επιπλέον, για κάθε ένα από τα Μετροπρογράμματα, θα εφαρμόσουμε τις ιδέες μας σε 5 διαφορετικά μεγέθη Μνήμης L2 Cache, 128Kbytes, 256Kbytes, 512Kbytes, 1Mbyte και 2Mbyte. Τα αποτελέσματα των εξομοιώσεων θα τα χρησιμοποιήσουμε με δύο τρόπους: Σαν πηγή πληροφοριών για τα χαρακτηριστικά μεγέθη του Συστήματος που θα χρειαστούμε για τους υπολογισμούς του μοντέλου, οι οποίοι στην συνέχεια θα πας οδηγήσουν στην προσέγγιση του Κόστους MLP. Σαν μέτρο σύγκρισης για την ορθότητα της προσέγγισης μας. Θα υιοθετήσουμε δύο Μοντέλα Προσέγγισης του Κόστους MLP, ένα απλό και ένα σύνθετο. Το απλό μοντέλο δεν περιμένουμε τόσο να μας δώσει ακριβή αποτελέσματα, όσο να μας προϊδεάσει πόσο έγκυρη μπορεί να γίνει η Προσέγγιση μας στο κάθε Πρόγραμμα του συνόλου SPEC2, και να μας φανερώσει επιπλέον παραμέτρους ενδιαφέροντος, που δεν είχαμε λάβει υπόψη μας αρχικά. Στο σύνθετο μοντέλο, ξεφεύγουμε από τις απλοϊκές υποθέσεις μας και προσθέτουμε πολυπλοκότητα, τόσο στο εξομοιούμενο Σύστημα όσο και στον μηχανισμό Προσέγγισης του Κόστους MLP. Χρησιμοποιούμε το Στατιστικό Μοντέλο StatCache, στην πρώτη έκδοση του και το τροποποιούμε ώστε να Προβλέπει το Κόστος MLP. Το StatCache δεν χρησιμοποιεί την διαδικασία Δειγματοληψίας του, και αντί αυτής του τροφοδοτούμε τις μεταβλητές του Συστήματος μας, όπως τις συλλέγουμε από τον Εξομοιωτή Simplescalar. 43

44 4.2) Χρήσιμες Έννοιες Στατιστικής και Θεωρίας Πιθανοτήτων Στην Ενότητα αυτή θα ορίσουμε κάποιες Έννοιες της Στατιστικής και της Θεωρίας των Πιθανοτήτων που θα μας φανούν χρήσιμες στην εξέλιξη της παρούσας Εργασίας. Οι Έννοιες δεν θα ξανά-ορίζονται στο σημείο χρήσης τους, ώστε να διατηρείται συνοχή στην ροή του νοήματος ) Σχετικό Σφάλμα Αναφέραμε ότι θα χρησιμοποιήσουμε τα αποτελέσματα του Εξομοιωτή Simplescalar σαν μέτρο σύγκρισης, για τα δικά μας αποτελέσματα. Η έννοια του Σχετικού Σφάλματος είναι κατάλληλη για το είδος σύγκρισης που θέλουμε να εφαρμόσουμε. Για μια Τιμή Αναφοράς μια Πειραματική Τιμή, το Σχετικό Σφάλμα ως προς την Τιμή Αναφοράς Υπολογίζεται ως εξής : Σχετικό Σφάλμα= Τιμή ΠΕΙΡΑΜΑΤΙΚΗ Τιμή ΑΝΑΦΟΡΑΣ Τιμή ΑΝΑΦΟΡΑΣ. Το Ποσοστιαίο Σχετικό Σφάλμα, υπολογίζεται στην ουσία με τον ίδιο τρόπο: Ποσοστιαίο Σχετικό Σφάλμα= Τιμή ΠΕΙΡΑΜΑΤΙΚΗ Τιμή ΑΝΑΦΟΡΑΣ Τιμή ΑΝΑΦΟΡΑΣ 1. Ένας δεύτερος τρόπος να εκφράσουμε αυτόν τον υπολογισμό είναι ότι, κανονικοποιούμε την Πειραματική μας Τιμή ως προς την Τιμή Αναφοράς. Σε όλα τα ακόλουθα βήματα της έρευνας που θα περιγράψουμε, θα συγκρίνουμε το Κόστος MLP των υπολογισμών μας με το Κόστος MLP που υπολογίζει ο Εξομοιωτής, με την βοήθεια του Ποσοστιαίου Σχετικού Σφάλματος ) Ιστογράμματα Τα Ιστογράμματα είναι οι αναπαραστάσεις της κατανομής ενός μεγέθους ως προς κάποια συγκεκριμένη ιδιότητα του. Ως Συχνότητα ν i μιας μεταβλητής X, ορίζεται ο φυσικός αριθμός που δείχνει πόσες φορές εμφανίζεται η κάθε τιμή x i της εξεταζόμενης X στο σύνολο των παρατηρήσεων μας. Η Αθροιστική Συχνότητα Ν i μιας μεταβλητής X, ορίζεται το πλήθος των παρατηρήσεων που είναι μικρότερες της τιμής x i της εξεταζόμενης μεταβλητής. Ιστόγραμμα Συχνοτήτων είναι η γραφική παράσταση των Συχνοτήτων ενός συνόλου ομαδοποιημένων τιμών. Στον οριζόντιο άξονα σημειώνουμε τα όρια των ομάδων των τιμών, ή όπως αλλιώς ορίζονται, των κλάσεων. Στην συνέχεια κατασκευάζουμε διαδοχικά ορθογώνια, που το κάθε ένα έχει βάση ίση με το πλάτος της κλάσης και τέτοιο ύψος ώστε το εμβαδόν του ορθογωνίου να ισούται με την Συχνότητα της κλάσης αυτής. 44

45 Εικόνα 28: Ιστόγραμμα Συχνοτήτων - Παράδειγμα Η μορφή της κατανομής συχνοτήτων στο Ιστόγραμμα Συχνοτήτων μας δείχνει πως είναι κατανεμημένες οι παρατηρήσεις σε όλη την έκταση του εύρους τους. Ιστόγραμμα Αθροιστικών Συχνοτήτων είναι η γραφική παράσταση των Αθροιστικών Συχνοτήτων ενός συνόλου ομαδοποιημένων τιμών. Κατασκευάζεται με την λογική του Ιστογράμματος Συχνοτήτων, με την διαφορά ότι αναπαριστούμε τις Αθροιστικές Συχνότητες των παρατηρήσεων της μεταβλητής X. Εικόνα 29: Ιστόγραμμα Αθροιστικών Σ. - Παράδειγμα 4.2.3) Επικρατούσα Τιμή Ορισμός : Ως Επικρατούσα ή Αναμενόμενη Τιμή (Expected Value) μιας μη-συμμετρικής κατανομής των τιμών μιας συνεχούς τυχαίας μεταβλητής, ονομάζεται ο μακροπρόθεσμος μέσος όρος των τιμών της. Εναλλακτικά ορίζουμε Επικρατούσα Τιμή ενός συνόλου παρατηρήσεων την παρατήρηση με την μεγαλύτερη Συχνότητα εμφάνισης. Για ομαδοποιημένα δεδομένα σε ισοπλατείς κλάσεις, βρίσκουμε την επικρατούσα κλάση. Η Επικρατούσα Τιμή δεν πρέπει να συγχέεται με την πιο πιθανή τιμή που λαμβάνει η τυχαία μεταβλητή. Στην κατανόηση βοηθά να λάβουμε υπόψη μας τον Νόμο των Μεγάλων Αριθμών. Σε άπειρες ανεξάρτητες επαναλήψεις ενός Πειράματος που προσδιορίζει την τιμή της τυχαίας μεταβλητής, η Επικρατούσα Τιμή είναι η μακροπρόθεσμα μέση τιμή όλων των αποτελεσμάτων των επαναλήψεων του Πειράματος. Εφόσον το πλήθος των επαναλήψεων τείνουν πράγματι στο άπειρο, τότε η Επικρατούσα Τιμή είναι το όριο που τείνει στον Μέσο Όρο του συνόλου τιμών. Ιδιότητες : Είναι δυνατόν να υπολογίσουμε μια Επικρατούσα Τιμή ίση με την Πιθανότητα ύπαρξης ενός Γεγονότος, εάν υπολογίσουμε την Επικρατούσα Τιμή μιας ενδεικτικής συνάρτησης πιθανοτήτων με τιμές από (το Γεγονός δεν συμβαίνει ποτέ) μέχρι και 1 (το Γεγονός συμβαίνει 45

46 πάντα). Αυτή η ιδιότητα χρησιμοποιείται για να μεταφράσουμε τις ιδιότητες των Αναμενόμενων Τιμών σε ιδιότητες Πιθανοτήτων για ένα Γεγονός. Για συμμετρικές κατανομές τιμών, η Επικρατούσα Τιμή ταυτίζεται με τον Μέσο Όρο των τιμών. Υπολογισμός : Για συνεχείς τυχαίες μεταβλητές, η Επικρατούσα Τιμή υπολογίζεται : σε ένα χώρο Πιθανοτήτων Ω, όπου το ολοκλήρωμα συγκλίνει απόλυτα. Εάν μάλιστα η κατανομή της τυχαίας μεταβλητής X διέπεται από κάποια Συνάρτηση Πυκνότητας Πιθανότητας f x τότε η Επικρατούσα Τιμή υπολογίζεται : Για διακριτές τυχαίες μεταβλητές, με Συνάρτηση Πιθανότητας p(x), η Επικρατούσα Τιμή υπολογίζεται : 4.2.4) Συνδυασμοί και Αναδιατάξεις Οι έννοιες Συνδυασμός (Combination) και Αναδιάταξη (Permutation) είναι παραπλήσιες. Όταν επιθυμούμε να επιλέξουμε r στοιχεία από ένα Σύνολο των k στοιχείων, τότε : Συνδυασμός ονομάζεται η συλλογή των r στοιχείων του Συνόλου, χωρίς η σειρά επιλογής να έχει σημασία. Αναδιάταξη ονομάζεται η συλλογή των r στοιχείων του Συνόλου, με έμφαση στην σειρά επιλογής των r στοιχείων. Δηλαδή Αναδιάταξη είναι ένας Συνδυασμός όπου η σειρά των επιλεγμένων στοιχείων παίζει ρόλο. Για τους σκοπούς της παρούσας Εργασίας μας ενδιαφέρει να υπολογίσουμε το πλήθος των δυνατών Συνδυασμών ή Αναδιατάξεων των επιμέρους r στοιχείων που μας ενδιαφέρουν από τα k συνολικά στοιχεία του Συνόλου. Διευκρινίζουμε ότι δεν μας επιτρέπεται να επιλέξουμε το ίδιο στοιχείο του Συνόλου για δεύτερη φορά. Όταν επιλέξουμε ένα στοιχείο, αυτό αφαιρείται από τις δυνατές επιλογές της επόμενης φοράς. (Σε περίπτωση που μας επιτρέπεται να ξανά-επιλέξουμε ένα στοιχείο για δεύτερη φορά οι ακόλουθοι τύποι αλλάζουν.) Πλήθος Αναδιατάξεων r στοιχείων από k : P k,r = k! Για παράδειγμα, αν θέλουμε να βρούμε το πλήθος των Αναδιατάξεων k r! οποιωνδήποτε τριών (3) αριθμών, από ένα σύνολο δέκα (1) αριθμών, τότε υπολογίζουμε : P 1,3 = 1! 1 3! = 1! 7! =1 9 8=72. Άρα υπάρχουν 72 τρόποι να επιλέξουμε οποιουσδήποτε 3 αριθμούς χωρίς επανάληψη, με ακριβή σειρά από ένα Σύνολο 1 αριθμών. Πλήθος Συνδυασμών r στοιχείων από k : k! C k,r = Για παράδειγμα, αν θέλουμε να βρούμε το πλήθος των Συνδυασμών r! k r! οποιωνδήποτε τριών (3) αριθμών, από ένα σύνολο δέκα (1) αριθμών, τότε υπολογίζουμε : 46

47 1! C 1,3 = 3! 1 3! = 1! 3! 7! = = 72 6 =12. Συνεπώς υπάρχουν 12 τρόποι να επιλέξουμε οποιουσδήποτε 3 αριθμούς χωρίς επανάληψη, χωρίς να μας ενδιαφέρει η σειρά επιλογής τους, από ένα Σύνολο 1 αριθμών. Φυσικά για το ίδιο παράδειγμα οι Συνδυασμοί είναι λιγότεροι από τις Αναδιατάξεις. 4.3) Απλή Μοντελοποίηση 4.3.1) Η βασική ιδέα Εξομοιώνουμε Out-of-Order Επεξεργαστή με L1 και L2 Μνήμες Cache και LRU Πολιτική Αντικατάστασης. Θα εξετάσουμε τις Προσβάσεις Μνήμης Ανάγνωσης (Read Accesses) από την L2 Cache προς την Κύρια Μνήμη. Για να αναγνωρίσουμε τα παράλληλα Misses και συνεπώς τον MLP, χρειαζόμαστε ένα σημείο αναφοράς μέσα στην συνεχή ροή των Εντολών προς εξυπηρέτηση. Ως σημείο αναφοράς και εξέτασης των Εντολών ορίζουμε το Παράθυρο Εντολών του Επεξεργαστή σε σταθερό μέγεθος 8 Εντολών (μέγεθος RUU = 8). Εφόσον την ίδια χρονική στιγμή, βρεθούν περισσότερα από ένα Misses μέσα στο Παράθυρο Εντολών, τότε θεωρούμε ότι αυτά συμβαίνουν παράλληλα και έχουμε συνεπώς εμφάνιση Παραλληλισμού Επιπέδου Μνήμης. Καταφεύγουμε επίσης στην υπόθεση εργασίας ότι τα Misses που προκαλούνται από τις Προσβάσεις Μνήμης Ανάγνωσης είναι ισοκατανεμημένα στην χρονική ροή των Εντολών. Τέλος υποθέτουμε ότι κάθε Εντολή του εκτελούμενου Προγράμματος συμπεριφέρεται με τον ίδιο ακριβώς τρόπο και επιβάλλει, εφόσον αστοχήσει την ίδια κατά Μέσο Όρο Καθυστέρηση Κύκλων, με όλες τις υπόλοιπες Εντολές. Άρα θεωρούμε ασφαλές να υπολογίσουμε το Κόστος MLP, όλου του Προγράμματος απευθείας, δεδομένου ότι όλες οι Εντολές συμπεριφέρονται ομοιόμορφα στην Μνήμη. Με βάση τις υποθέσεις μας, θέλουμε να αποφασίσουμε αρχικά εάν εμφανίστηκε Παραλληλισμός Επιπέδου Μνήμης στην Εκτέλεση του κάθε Προγράμματος, και για όλα τα μεγέθη Μνήμης L2 Cache. Αν με τον Εξομοιωτή μας, μετρήσουμε : Ι : Committed Εντολές (θυμηθείτε το Instruction Pipeline του Out-of-Order Εξομοιωτή του Simplescalar στην Εικόνα 14), δηλαδή Ι Εντολές στην έξοδο του Out-of-Order Instruction Pipeline. Μ : Άστοχες Προσβάσεις Μνήμης Ανάγνωσης, δηλαδή M L2 Cache Read Misses. τότε θα έχουμε ένα (ισοκατανεμημένο) L2 Cache Read Miss κάθε Ν εντολές, όπου Ν = Ι / Μ. Δηλαδή, για παράδειγμα, με Ι = 1.. Committed Εντολές και 2. L2 Cache Read Misses, στην ισοκατανεμημένη ροή Εντολών που υποθέτουμε, θα παρατηρούσαμε 1 Miss κάθε 5 Εντολές (αφού Ν = 1.. / 2. = 5). Εικόνα 3: Παράδειγμα Στην ουσία για κάθε Παράθυρο Εντολών με εύρος μεγαλύτερο των 4 Εντολών, θα παρατηρούμε παράλληλα Misses. Ορίζουμε ως Μέτρο Ύπαρξης Παραλληλισμού στην ροή των Εντολών, το μέγεθος MLP, το οποίο περιγράφει πόσα παράλληλα Misses υπάρχουν ταυτόχρονα σε ένα δεδομένο Παράθυρο 47

48 Εντολών, και: MLP ΑΠΛΟ = μέγεθος RUU N = μέγεθος RUU I M Διακρίνουμε την εξής σημασία για τις τιμές του μέτρου: MLP ΑΠΛΟ 1 Σε όλο το μήκος του Παράθυρου Εντολών που εξετάζουμε δεν εντοπίζεται πάνω από 1 Miss, σε κάθε χρονική στιγμή. Συνεπώς υπάρχουν μόνο Isolated Misses. Το Κόστος MLP, σε αυτή την περίπτωση, είναι φυσικά ίσο με την Καθυστέρηση που επιβάλουν τα Μ Isolated Misses, δηλαδή Κόστος MLP =Μ Καθυστέρηση ΜΝΗΜΗΣ. MLP ΑΠΛΟ 1 Στο μήκος του Παραθύρου Εντολών εντοπίζονται περισσότερα του ενός Misses, δηλαδή υπάρχει Παραλληλισμός. Εξηγήσαμε στο Κεφάλαιο 3, ότι τα παράλληλα Misses μοιράζονται κατά Μέσο Όρο ισόποσα την Καθυστέρηση σε Κύκλους που επιβάλλουν στο σύστημα. Δηλαδή Καθυστέρηση MLP = Καθυστέρηση ΜΝΗΜΗΣ / MLP ΑΛΠΟ, πράγμα που σημαίνει ότι κάθε ομάδα από Εντολές πλήθους ίσου με το Μέγεθος RUU, θα εξυπηρετηθεί όταν εξυπηρετηθούν όλα τα Misses που περιέχονται στην ομάδα. Το Κόστος MLP, σε αυτή την περίπτωση, είναι ίσο με την Καθυστέρηση που επιβάλουν τα Μ Παράλληλα Misses, δηλαδή Κόστος MLP =M Καθυστέρηση MLP =M Καθυστέρηση ΜΝΗΜΗΣ / MLP ΑΠΛΟ. Έχοντας βρει τον τρόπο ανίχνευσης του Παραλληλισμού Επιπέδου Εντολών και έχοντας περιγράψει τον υπολογισμό του Κόστους MLP, είμαστε έτοιμοι να το υπολογίσουμε, με τον ακόλουθο απλό αλγόριθμο: MLP = RUU_size / ( I / M); if (MLP <= 1) MLP_cost = M * Memory_Latency; else MLP_cost = M * ( Memory_Latency / MLP); Με ένα Script: Ανακτούμε τις μεταβλητές Ι, Μ, Καθυστέρηση Μνήμης και Μέγεθος RUU από τα αποτελέσματα των Εξομοιώσεων για κάθε. Υπολογίζουμε το MLP και το Κόστος MLP. Ανακτούμε το Κόστος MLP που υπολόγισε η Εξομοίωση. Υπολογίζουμε το Ποσοστιαίο Σχετικό Σφάλμα {4.2.1} ) Βελτιώσεις του Απλού Μοντέλου Για να βελτιώσουμε την προσέγγιση του Κόστους MLP στο Απλό Μοντέλο μας, παρατηρούμε κάποιες αλλαγές που θα μπορούσαμε να κάνουμε στην λογική των υπολογισμών μας. Βελτίωση Α Ακέραιο Πλήθος Misses Όταν υπολογίζουμε το Μέτρο Ύπαρξης Παραλληλισμού MLP, παίρνουμε μια τιμή που περιγράφει πόσα Misses βρίσκονται κατά Μέσο Όρο μέσα στο Παράθυρο Εντολών (RUU), ανά πάσα στιγμή της εκτέλεσης του Προγράμματος. Όμως παρατηρούμε ότι το Μέτρο, ως προϊόν διαιρέσεων είναι πολύ πιθανό να λαμβάνει και δεκαδικές τιμές. Σε ένα κβαντισμένο περιβάλλον όμως, όπως αυτό των Ηλεκτρονικών Υπολογιστών, δεν είναι δυνατόν να υπάρξει δεκαδικό, ή γενικά μη-ακέραιο πλήθος Εντολών. Δεν νοείται να πούμε, για παράδειγμα, υπάρχουν 1,23 Misses κάθε χρονική στιγμή στο Παράθυρο Εντολών. Συνεπώς στρογγυλοποιούμε το Μέτρο MLP με προς τα επάνω στρογγυλοποίηση στην 48

49 επόμενη μονάδα, πριν το χρησιμοποιήσουμε στον υπολογισμό του Κόστους MLP. Βελτίωση Β Υπολογισμός Αρχικών Συνθηκών Εξομοίωσης Για την Δειγματοληψία ή την συλλογή οποιασδήποτε τιμής από ένα Εξομοιούμενο Σύστημα, οφείλουμε να λάβουμε υπόψη μας τις Αρχικές Συνθήκες της Δειγματοληψίας στο Σύστημα αυτό. Διαφορετικά είναι δυνατόν να εισαχθεί σφάλμα της τάξης 15%-2% στις τιμές. Έτσι το Simplescalar φροντίζει να ζεστάνει τις Εξομοιούμενες Caches. Το ζέσταμα, ή αλλιώς Warm-up, παρακάμπτει την οποιαδήποτε συλλογή τιμών, μέχρι να παρέλθει ένας ικανοποιητικός αριθμός Εντολών, και η Δομή Μνήμης που μας ενδιαφέρει να φτάσει σε μια ικανοποιητική Αρχική Κατάσταση για Δειγματοληψία. Για μικρές Δομές, όπως ο Reorder Buffer ή κάποιο Register File αρκεί να παρακαμφθούν μερικές χιλιάδες Εντολές. Για μεγάλες όμως Δομές σαν τις Caches, απαιτούνται πολύ περισσότερες, ώστε να γεμίσει η Μνήμη με σωστά δεδομένα. Στις Εξομοιώσεις μας με το Simplescalar παρατηρήσαμε ότι φέρονται εις πέρας (committed instructions) 3 εκατομμύρια Εντολές για κάθε. Όμως, από αυτές, οι 5 εκατομμύρια Εντολές παρακάμφθηκαν για την σωστή αρχικοποίηση των Δομών Μνήμης και άλλες 5 εκατομμύρια αναλώθηκαν ώστε οι τιμές της Cache να προσαρμοστούν στην ισχύουσα Πολιτική Αντικατάστασης (LRU). Συνεπώς το 1/3 των Εξομοιούμενων Εντολών θα μπορούσε να παραληφθεί από τους υπολογισμούς μας. Αφού η απλή φύση του Μοντέλου και τον υποθέσεων μας δεν αποτελεί πρόβλημα, σταματάμε να ανακτούμε την Μεταβλητή Ι, από τα αποτελέσματα των Εξομοιώσεων, και την θέτουμε για όλα τα Προγράμματα ίση με 2 εκατομμύρια. Επαναπροσδιορίζουμε δηλαδή το ωφέλιμο πλήθος των Εκτελούμενων Εντολών που προκαλούν Προσβάσεις Μνήμης και επηρεάζουν τις Μετρήσεις μας. Μετά τις δύο αυτές τροποποιήσεις στη λογική μας, η διαδικασία που ακολουθούμε φαίνεται από τον ακόλουθο απλό αλγόριθμο: MLP = RUU_size / ( 2.. / M); If (MLP <= 1) MLP_cost = M * Memory_Latency; else MLP_round = round_up_a_unit(mlp); MLP_cost = M * ( Memory_Latency / MLP_round); Με παραλλαγή του προηγούμενου Script: Ανακτούμε τις μεταβλητές Μ, Καθυστέρηση Μνήμης και Μέγεθος RUU από τα αποτελέσματα των Εξομοιώσεων για κάθε. Υπολογίζουμε το MLP, το στρογγυλοποιημένο MLP και το Κόστος MLP. Ανακτούμε το Κόστος MLP που υπολόγισε η Εξομοίωση. Υπολογίζουμε το Ποσοστιαίο Σχετικό Σφάλμα. 4.4) Σύνθετη Μοντελοποίηση Προφανώς το Απλό Μοντέλο δεν απέφερε καλή προσέγγιση του Κόστους MLP, διότι αγνόησε πολλούς παράγοντες τόσο από σχεδιαστικής απόψεως, όσο και από πλευράς λειτουργίας του εξομοιούμενου Υπολογιστικού Συστήματος. Συνεπώς το Απλό Μοντέλο δεν ήταν ρεαλιστικό, αλλά μόνο μια πρώτη επαφή με το πρόβλημα της πρόβλεψης του Κόστους MLP, ενός Προγράμματος. Επίσης μέχρι τώρα χρησιμοποιούσαμε το Simplescalar, μόνο για εξαγωγή μεταβλητών του Συστήματος. Στο εξής, όπως θα δείξουμε στην συνέχεια, θα συλλέξουμε και θα εξάγουμε περισσότερες πληροφορίες από τον Εξομοιωτή και θα τις χρησιμοποιήσουμε ως είσοδο 49

50 στο τροποποιημένο Στατιστικό Μοντέλο του StatCache, για να βελτιώσουμε τα αποτελέσματα μας ) Η βασική ιδέα Και πάλι εξομοιώνουμε Out-of-Order Επεξεργαστή με L1 και L2 Μνήμες Cache και LRU Πολιτική Αντικατάστασης. Εξετάζουμε και πάλι τις Εντολές που προκαλούν Προσβάσεις Μνήμης Ανάγνωσης (Read Accesses) από την L2 Cache προς την Κύρια Μνήμη. Κατανοούμε ότι η υπόθεση πως η κάθε Εντολή της εκτελούμενης Εφαρμογής συμπεριφέρεται κατά Μέσο Όρο όμοια στην Μνήμη, σαν όλες τις υπόλοιπες Εντολές της Εφαρμογής, είναι αβάσιμη. Συνεπώς παύουμε να θεωρούμε τα Misses ισοκατανεμημένα. Στο εξής θεωρούμε ότι η κάθε Εντολή της εκτελούμενης Εφαρμογής διακρίνεται από μοναδική συμπεριφορά, την οποία και επιθυμούμε να προσδιορίσουμε, προκειμένου να προχωρήσουμε σε μια πιο ακριβή εκτίμηση του Κόστους MLP. Ένα καλό μέτρο της συμπεριφοράς μιας Εντολής, όσο αφορά τον τρόπο με τον οποίο αυτή χρησιμοποιεί την Μνήμη, είναι το Miss Ratio της. Συνεπώς σκοπός μας είναι αρχικά, να μπορέσουμε να προσδιορίσουμε επιτυχώς το Miss Ratio της κάθε Εντολής της εκτελούμενης Εφαρμογής, ούτως ώστε να έχουμε μια λεπτομερή εικόνα της Εφαρμογής και συνεπώς μια καλύτερη εκτίμηση του Κόστους MLP. Φυσικά αυτή η προσέγγιση του προβλήματος μας συμφέρει για ένα ακόμα λόγο. Αναφέραμε ότι σκοπεύουμε να προβλέψουμε το Κόστος MLP μιας εφαρμογής με την χρήση του Στατιστικού Μοντέλου StatCache, που είναι ένα εργαλείο πρόβλεψης του Miss Ratio μιας εφαρμογής. Άρα εκτός από το πρώτο βήμα στην εκτίμηση του Κόστους MLP, τα Miss Ratios ανά Εντολή, εξαγόμενα από το Simplescalar είναι και το πρώτο μέτρο σύγκρισης που θα χρησιμοποιήσουμε, για να επιβεβαιώσουμε πως βρισκόμαστε στον σωστό δρόμο. Στον Εξομοιωτή Simplescalar Ο μηχανισμός λειτουργίας του Simplescalar ελέγχει κάθε Πρόσβαση Μνήμης (Access). Αν η Πρόσβαση είναι Ανάγνωση (Read), τότε καλείται ο Δειγματολήπτης (Sampler), με παραμέτρους τα στοιχεία της εν λόγω Πρόσβασης. Στον Δειγματολήπτη διατηρείται μια δυναμική δομή δεδομένων με τα στοιχεία όλων των Εντολών που προκάλεσαν Πρόσβαση. Τα στοιχεία της Πρόσβασης ενημερώνουν την αντίστοιχη θέση της Εντολής στην δυναμική δομή δεδομένων, και υπολογίζεται επίσης η Απόσταση Επαναχρησιμοποίησης (Reuse Distance) της Εντολής. Ο μηχανισμός του Simplescalar, στην συνέχεια, για να εφαρμόσει αφαιρετικότητα στον μεγάλο όγκο δεδομένων που δειγματοληπτούνται, κατατάσσει τις Αποστάσεις Επαναχρησιμοποίησης (RD) σε κβαντισμένες ομάδες, ούτως ώστε η πληροφορία να μπορεί να αναπαρασταθεί ευκολότερα σε ιστογράμματα. Οι κβαντισμένες ομάδες δεδομένων των ιστογραμμάτων ονομάζονται Buckets (Κουβάδες) και είναι δύο ειδών : Γραμμικά (Linear) Buckets : Από την τιμή RD = μέχρι την τιμή RD = Μέγιστο_RD, το εύρος των Αποστάσεων Επαναχρησιμοποίησης, χωρίζεται σε σταθερού Μεγέθους Buckets. Εκθετικά (Exponential) Buckets : Από την τιμή RD = μέχρι την τιμή RD = Μέγιστο_RD, το εύρος των Αποστάσεων Επαναχρησιμοποίησης, χωρίζεται σε Buckets των οποίο το μέγεθος αυξάνεται εκθετικά. Αμέσως μετά ο Δειγματολήπτης περνάει τόσο τις πληροφορίες της Εντολής που ήρθαν από τον μηχανισμό της Cache, όσο και τα δεδομένα που υπολόγισε ο ίδιος, δηλαδή την Απόσταση Επαναχρησιμοποίησης και το Bucket που της αντιστοιχεί, στον Προβλεπτή (Predictor). Ο Προβλεπτής, με την σειρά του, χρησιμοποιεί τα δεδομένα της προηγούμενης Εντολής που του έστειλε ο Δειγματολήπτης, για να συλλέξει στατιστικά σχετικά με την συμπεριφορά του εκτελούμενου Προγράμματος. Τα δεδομένα αυτά συλλέγονται σε μια δισδιάστατη δομή δεδομένων του Προβλεπτή. Η Δομή αυτή αντιπροσωπεύει την Set Associative Μνήμη Cache που χρησιμοποιούμε, και σε κάθε καταχώρηση της φυλάσσονται όλα τα στατιστικά που έχουν 5

51 συλλεχθεί για μια συγκεκριμένη Εντολή της Εφαρμογής. Για να μπορέσουμε αρχικά να εκτιμήσουμε το Miss Ratio για κάθε Εντολή μιας εκτελούμενης εφαρμογής, πρέπει να αναπροσαρμόσουμε τα δεδομένα που συλλέγονται από τον Προβλεπτή. Επαναπροσδιορίζουμε την σχέση του Δειγματολήπτη και του Προβλεπτή. Ο Προβλεπτής πλέον καλείται για κάθε παροντική εντολή που επεξεργάζεται ο Δειγματολήπτης, όχι για κάθε προηγούμενη. Ορίζουμε αυθαίρετα ότι συλλέγουμε Αποστάσεις Επαναχρησιμοποίησης από μέχρι 4Mbyte, για να καλύψουμε κάθε πιθανότητα. 4Mbyte σημαίνει ότι η Μέγιστη Απόσταση Επαναχρησιμοποίησης που μπορούμε να ανιχνεύσουμε θα είναι : Μέγιστο RD= = Τα Cold Misses δεν παρουσιάζουν αποστάσεις επαναχρησιμοποίησης και συνεπώς δεν τα λαμβάνουμε (τουλάχιστον προς το παρόν) υπόψη μας. Για κάθε νέα Εντολή λοιπόν που φτάνει στον Προβλεπτή κάνουμε τις εξής δύο ενέργειες: Συμπληρώνουμε ένα Γενικό Ιστόγραμμα Αποστάσεων Επαναχρησιμοποίησης (RD), κατατάσσοντας την Απόσταση Επαναχρησιμοποίησης στην θέση του Ιστογράμματος που την κατέταξε ο Δειγματολήπτης, χωρίς χρήση των Buckets. Εναλλακτικά μπορούμε να πούμε ότι χρησιμοποιήθηκαν Buckets μεγέθους μιας Απόστασης Επαναχρησιμοποίησης. Το Γενικό Ιστόγραμμα αποθηκεύει RDs που ανήκουν στο σύνολο [, ], δηλαδή στο τέλος της Εξομοίωσης περιέχει, την κατανομή των Αποστάσεων Επαναχρησιμοποίησης όλων των Εντολών της Εφαρμογής. Στην δισδιάστατη Δομή Στατιστικών που διατηρεί ο Προβλεπτής, εμείς προσθέτουμε ένα Ιστόγραμμα για κάθε καταχώρηση της, δηλαδή ένα Ιστόγραμμα για κάθε Εντολή. Εδώ για ελαχιστοποίηση της συλλεγόμενης πληροφορίας κατατάσσουμε τις Αποστάσεις Επαναχρησιμοποίησης σε Εκθετικά Buckets. Για κάθε Εντολή που φθάνει τον Προβλεπτή, ελέγχουμε σε ποιο Bucket της δομής αντιστοιχεί και αυξάνουμε κατά ένα την τιμή του Ιστογράμματος. Άρα τα Ιστογράμματα των Εντολών αποθηκεύουν κβαντισμένα RD που ανήκουν στο σύνολο [, Μέγιστο ΚΒΑΝΤΙΣΜΕΝΟ 1]. Στο Μοντέλο StatCache Αναφέραμε στην παράγραφο {2.3.5} ότι θα χρησιμοποιήσουμε μια αφαιρετική υλοποίηση του στατιστικού Μοντέλου StatCache για την διεξαγωγή των υπολογισμών μας. Το τροποποιημένο StatCache στην αρχική του μορφή δέχεται ως είσοδο το Γενικό Ιστόγραμμα Αποστάσεων Επαναχρησιμοποίησης των Εντολών ενός Προγράμματος, και υπολογίζει το Miss Ratio του Προγράμματος. Η διαδικασία που ακολουθείται είναι η εξής: Από το Ιστόγραμμα, το StatCache αθροίζει τις Συνολικές Προσβάσεις που παρατηρήθηκαν. Στην συνέχεια προσεγγίζεται η πιθανότητα της κάθε Μοναδικής Πρόσβασης Μνήμης να είναι Hit. Δηλαδή υπολογίζεται για ποια Απόσταση Επαναχρησιμοποίησης το πλήθος των Μοναδικών Προσβάσεων που παρατηρήθηκαν είναι μικρότερο από το Μέγεθος μιας Cache Line, συνεπώς αυτές οι Μοναδικές Προσβάσεις χωράνε ακόμα μέσα στην Γραμμή της Cache και άρα αποτελούν Hits. Αφού προσεγγιστεί το πλήθος των Hits, τα Misses υπολογίζονται απλά: Misses=Συνολικές Προσβάσεις Hits. Τέλος υπολογίζεται το Ολικό Miss Ratio της μετρούμενης Εφαρμογής : Misses Miss Ratio=. Συνολικές Προσβάσεις Επαναπροσδιορίζουμε την λειτουργία του StatCache στα δικά μας δεδομένα κάνοντας τις εξής προσθήκες: Αυξάνουμε τα δεδομένα εισόδου. Το StatCache πλέον δέχεται ως είσοδο τις ακόλουθες παραμέτρους και δεδομένα: Το μέγεθος του Ιστογράμματος Αποστάσεων Επαναχρησιμοποίησης για κάθε Εντολή. 51

52 Χρησιμεύει για να δεσμεύσουμε το σωστό χώρο Μνήμης. Το μέγεθος της Cache, επάνω στην οποία εξομοιώθηκε η Εφαρμογή. Απαιτείται σαν παράμετρος στον υπολογισμό του Ολικού Miss Ratio της Εφαρμογής. Το Γενικό Ιστόγραμμα RD της Εφαρμογής. Δεσμεύεται χώρος για την Αποθήκευση και την χρήση του στους υπολογισμούς. Τα Ιστογράμματα RD ανά Εντολή της Εφαρμογής. Δεσμεύεται δισδιάστατη Δομή που αποθηκεύει τα μονοδιάστατα Ιστογράμματα ανά Εντολή, για όλες τις Εντολές που συλλέχθηκαν από τον Δειγματολήπτη του Εξομοιωτή. Διατηρούμε την προηγούμενη λογική του StatCache για υπολογισμό του Ολικού Miss Ratio. Δημιουργούμε μια Δομή Στατιστικών Δεδομένων, στην οποία αποθηκεύουμε τα αποτελέσματα των υπολογισμών μας για κάθε Εντολή ξεχωριστά. Στην συνέχεια κάνουμε τους εξής υπολογισμούς: Θέλουμε να βρούμε πάλι, μέχρι ποια Απόσταση Επαναχρησιμοποίησης οι Προσβάσεις Μνήμης χωράνε στην Μνήμη Cache, δηλαδή να προσεγγίσουμε τα Hits της κάθε Πρόσβασης Μνήμης που προκαλείται από κάποια Εντολή. Τα δεδομένα όμως είναι κβαντισμένα σε Buckets. Αναλόγως με το μέγεθος της Cache και το Ακριβές Όριο των Hits του Ολικού Miss Ratio, υπολογίζουμε το Κβαντισμένο Όριο κάτω από το οποίο έχουμε Hits. Όριο ΚΒΑΝΤΙΣΜΕΝΟ = Όριο ΑΚΡΙΒΕΣ 1 /Μέγεθος Bucket. Το Όριο ΚΒΑΝΤΙΣΜΕΝΟ μας δείχνει μέχρι ποιο Bucket έχουμε Hits. Το Όριο ΑΚΡΙΒΕΣ μας δείχνει μέχρι ακριβώς ποια Απόσταση Επαναχρησιμοποίησης έχουμε Hits. Συλλέγουμε το Σύνολο των Προσβάσεων για κάθε Εντολή, από το Ιστόγραμμα RD της, με την βοήθεια ενός Αθροιστή. Για κάθε Εντολή, διανύουμε ολόκληρο το RD Ιστόγραμμα της, ανιχνεύουμε το πλήθος των Αποστάσεων Επαναχρησιμοποίησης που συγκαταλέγουμε στα Hits με βάση το Κβαντισμένο Όριο και αυξάνουμε έναν Αθροιστή. Δηλαδή, πιο αναλυτικά, αθροίζουμε ως Hits : Όλες τις Προσβάσεις που έχουν RD Όριο ΚΒΑΝΤΙΣΜΕΝΟ, σε όποιο Bucket και αν έχουν καταταχθεί αυτές οι Προσβάσεις. Ένα ποσοστό των Προσβάσεων που έχουν RD Όριο ΚΒΑΝΤΙΣΜΕΝΟ. Τις Προσβάσεις αυτές είμαστε αναγκασμένοι να τις υπολογίσουμε υπό μορφή ποσοστού λόγω της ύπαρξης των Buckets. Ας δούμε ένα απλό παράδειγμα για να κατανοήσουμε καλύτερα. Παράδειγμα Έστω ότι το Μέγεθος Bucket = 1Kbyte = 124 και το Ακριβές Όριο είναι 13. Τότε θα αθροίσουμε ως Hits, όλα τα Accesses του [Bucket] (με RD από έως 123) και εκείνο το ποσοστό των Accesses του 2 ου [Bucket1] που αντιστοιχούν στο = 7 RDs 7 που περισσεύουν από το πρώτο Bucket. Τα των Accesses του 2ου Bucket θα 124 υπολογιστούν σαν Hits. Αυτή η προσέγγιση γίνεται υποθέτοντας ομοιόμορφη κατανομή των RDs στα Buckets και εξαιτίας του ότι δεν γνωρίζουμε το ακριβές πλήθος των Accesses που αντιστοιχούν σε κάθε RD, ακριβώς λόγω της ομαδοποίησης σε Buckets. Η προσέγγιση αυτή υπολογίζεται εύκολα με το Υπόλοιπο Ακέραιας Διαίρεσης, Modulo. Συνεπώς αθροίζουμε τα Hits ως εξής: Hits= Accesses RD Όριο ΚΒΑΝΤ. Κλιμάκωση Accesses RD=Όριο ΚΒΑΝΤ. και ορίζουμε το ποσοστό Κλιμάκωση (Scaling) ως εξής: Κλιμάκωση= Όριο ΑΚΡΙΒΕΣ 1 mod Μέγεθος Bucket. Η Κλιμάκωση είναι εμφανίζει σαφή Μέγεθος Bucket αναλογία με το Μέγεθος του Bucket. 52

53 Στην συνέχεια, για κάθε Εντολή, υπολογίζουμε τα Misses : Misses ΕΝΤΟΛΗΣ = Accesses ΕΝΤΟΛΗΣ HIts ΕΝΤΟΛΗΣ. Τέλος για κάθε Εντολή Υπολογίζουμε το Miss Ratio : Miss Ratio ΕΝΤΟΛΗΣ = Misses ΕΝΤΟΛΗΣ και αποθηκεύουμε το αποτέλεσμα στην Δομή Accesses ΕΝΤΟΛΗΣ Στατιστικών Δεδομένων, στην θέση της αντίστοιχης Εντολής. Εναλλακτικά και ισοδύναμα υπολογίζουμε ως εξής: Hits ΕΝΤΟΛΗΣ Miss Ratio ΕΝΤΟΛΗΣ =1. Accesses ΕΝΤΟΛΗΣ χωρίς να χρειαστεί να βρούμε τα Misses ) Α' Βελτίωση του Σύνθετου Μοντέλου Αποδεκτή προσέγγιση του Miss Ratio Όπως αναφέραμε στην αρχή της Ενότητας {4.4}, θα προσπαθήσουμε να προσεγγίσουμε αρχικά το Miss Ratio ανά Εντολή της εκτελούμενης Εφαρμογής, πριν προχωρήσουμε στον υπολογισμό του Κόστους MLP. Το Σύνθετο Μοντέλο που εισάγαμε στην Ενότητα {4.4.1} έχει απόκλιση μεγαλύτερη από την επιτρεπτή στις τιμές του Miss Ratio (ας μην ξεχνάμε ότι και το StatCache ως μοντέλο πρόβλεψης δεν είναι τέλειο, εισάγει κάποιο αποδεκτά μικρό σφάλμα στους υπολογισμούς μας). Δεδομένου ότι θα χρησιμοποιήσουμε το Miss Ratio ανά Εντολή για τον υπολογισμό του Κόστους MLP, επιθυμούμε η προσέγγιση μας στο Miss Ratio να είναι όσο πιο σωστή γίνεται. Για αυτό το λόγο θα προσπαθήσουμε να κάνουμε το Σύνθετο Μοντέλο πιο ρεαλιστικό στις υποθέσεις του. Εξετάζουμε τις πηγές λάθους που ενδεχομένως υπάρχουν: α) Cold Misses Θα ήταν, πιστεύουμε, παράληψη να μην υπολογίσουμε τα Cold Misses στο Miss Ratio μιας Εφαρμογής, ειδικά όταν αυτή ενδέχεται να εμφανίζει υψηλά ποσοστά Cold Misses. Θυμίζουμε ότι κάθε Εφαρμογή παρουσιάζει διαφορετική συμπεριφορά απέναντι στην Μνήμη. Στον Εξομοιωτή Simplescalar Όπως αναφέραμε, στον Δειγματολήπτη διατηρείται μια δυναμική δομή δεδομένων με τα στοιχεία όλων των Εντολών που προκάλεσαν Πρόσβαση. Για κάθε νέα Εντολή, ελέγχουμε αν η Δομή περιέχει κάποια καταχώρηση για την παρούσα Εντολή. Αν η Εντολή υπάρχει ήδη, συνεχίζουμε την διαδικασία όπως πριν και ενημερώνουμε τον Προβλεπτή με τα στοιχεία της Πρόσβασης. Σε περίπτωση όμως που η Εντολή δεν υπάρχει στην Δομή, αρχικοποιούμε την θέση της και αυξάνουμε τον αντίστοιχο Αθροιστή, ο οποίος μετρά τα Cold Misses που προκλήθηκαν από την συγκεκριμένη Εντολή. Έτσι ο Προβλεπτής ενημερώνεται από τον Δειγματολήπτη με τις πληροφορίες της Εντολής που ήρθαν από τον μηχανισμό της Cache, την Απόσταση Επαναχρησιμοποίησης, το Bucket που της αντιστοιχεί και το πλήθος των Cold Misses. Στον Προβλεπτή αλλάζουμε λίγο την δομή των Ιστογραμμάτων RD, προσθέτοντας τους μια επιπλέον θέση μετά την μέγιστη Απόσταση Επαναχρησιμοποίησης. Δηλαδή: Το Γενικό Ιστόγραμμα δεν έχει πια μέγεθος 4*124*124 1 (θυμηθείτε, υπάρχει και RD=), αλλά έχει 4*124*124 θέσεις και στην τελευταία θέση αποθηκεύουμε τα Cold Misses της Εφαρμογής. Ομοίως τα Ιστογράμματα ανά Εντολή έχουν πλέον μέγεθος Μέγιστο ΚΒΑΝΤΙΣΜΕΝΟ 1, και στην τελευταία αυτή θέση αποθηκεύουμε τα Cold Misses της κάθε Εντολής. Στο Μοντέλο StatCache 53

54 Προσθέτουμε λογική στο StatCache ώστε να : Αναγνωρίζει τα μεγαλύτερα κατά μια θέση Ιστογράμματα, και τα Cold Misses στην τελευταία θέση τους. Υπολογίζει το Ολικό Miss Ratio της Εφαρμογής λαμβάνοντας υπόψη τα Ολικά Cold Misses, ως εξής: Miss Ratio ΟΛΙΚΟ = Misses Misses ΟΛΙΚΑ COLD. Accesses ΟΛΙΚΑ Misses COLD Υπολογίζει το Miss Ratio για κάθε Εντολή με τον ίδιο τρόπο όπως και πριν, μόνο που φροντίζουμε στο βήμα που συλλέγουμε το Σύνολο των Προσβάσεων για κάθε Εντολή, από το Ιστόγραμμα RD της, να υπολογίσουμε και την τελευταία θέση που περιέχει τα Cold Misses της Εντολής. Άρα και πάλι Miss Ratio ΕΝΤΟΛΗΣ =1. Hits ΕΝΤΟΛΗΣ Accesses ΕΝΤΟΛΗΣ. β) StatCache και Associativity Το Μοντέλο StatCache μας δίνει τα πιο έμπιστα αποτελέσματα εφόσον το χρησιμοποιήσουμε σε συνδυασμό με Fully Associative Μνήμες Cache [13]. Εμείς ωστόσο, χρησιμοποιούμε Set-Associative Caches σε όλες τις εξομοιώσεις μας με το Simplescalar. Για μικρό αριθμό Sets: Δεν μπορούμε φυσικά να προσεγγίσουμε την συμπεριφορά μιας Fully Associative Cache. Ο Μέσος Όρος των αποτελεσμάτων μας ενδέχεται να προσεγγίζει την πραγματική τιμή, αλλά αν εξετάσουμε τα νούμερα για κάθε Set ξεχωριστά, τότε θα διακρίνουμε σημαντικά μεγάλο λάθος. Για να εξαλείψουμε αυτή την πηγή λάθους αυξάνουμε το Associativity των Caches που εξομοιώνουμε από 16-Way Associative σε 64-Way Associative, ώστε να προσεγγίσουμε τις ιδανικές συνθήκες μοντελοποίησης του StatCache, για τα καλύτερα δυνατά αποτελέσματα. γ) Κλιμάκωση και Buckets Άλλη μια σημαντική πηγή λάθους είναι η ανομοιομορφία των Αποστάσεων Επαναχρησιμοποίησης, στο πως αυτές κατανέμονται στα Buckets. Το λάθος μπορεί να εισάγεται είτε εξαιτίας της συμπεριφοράς της ίδιας της εφαρμογής ή επειδή εμείς δεν ερμηνεύουμε σωστά την κατανομή των RDs. Δεδομένου ότι δεν είναι δυνατόν να αλλάξουμε την συμπεριφορά των εξομοιούμενων Εφαρμογών, θα επικεντρωθούμε στην δεύτερη πιθανότητα, για να βελτιώσουμε λίγο την εκτίμηση του StatCache. Τα RDs δεν κατανέμονται ομοιόμορφα στα Buckets συνεπώς, όταν εμείς χρησιμοποιούμε την απόλυτα αναλογική Κλιμάκωση (Scaling), για να ερμηνεύσουμε πόσα Accesses του Bucket που περιέχει το Όριο HITS είναι Hits, αφήνουμε περιθώριο λάθους. Θα ορίσουμε μία νέα Κλιμάκωση που δεν θα είναι ανάλογη με το Μέγεθος του Bucket, αλλά με το Μέγεθος του Γενικού Ιστογράμματος, σε μια προσπάθεια να προσεγγίσουμε καλύτερα την κατανομή των RDs. Χρησιμοποιούμε ένα δεύτερο Γενικό Ιστόγραμμα, με την διαφορά ότι αυτό το Ιστόγραμμα είναι Αθροιστικό {4.2.2} και περιέχει σε κάθε θέση του όλες τις Προσβάσεις Μνήμης που παρουσίασαν RDs μικρότερα ή ίσα από αυτό της παρούσας θέσης του Ιστογράμματος. Τότε, αν συμβολίσουμε το Γενικό Αθροιστικό Ιστόγραμμα με την λέξη Αθροιστικό : Ο συμβολισμός Αθροιστικό[Όριο ΑΚΡΙΒΕΣ ] σημαίνει : το πλήθος των Προσβάσεων Μνήμης που έχουν RD μικρότερο ή ίσο από την τιμή Όριο ΑΚΡΙΒΕΣ. Ο συμβολισμός Αθροιστικό[Όριο ΚΒΑΝΤΙΣΜΕΝΟ Μέγεθος BUCKET ] σημαίνει : το πλήθος των Προσβάσεων Μνήμης που έχουν RD μικρότερο ή ίσο από την οριακά μέγιστη τιμή του Bucket που περιέχει αμιγώς Hits. και ούτω καθεξής... Καταλήγουμε τελικά να ορίσουμε τη νέα ακριβέστερη Κλιμάκωση ως : 54

55 Αθροιστ[Όριο Κλιμάκωση ΝΕΑ = ΑΚΡΙΒΕΣ ] Αθροιστ[Όριο ΚΒΑΝΤ Μέγεθος BUCKET ] Αθροιστ [ Όριο ΚΒΑΝΤ 1 Μέγεθος BUCKET ] Αθροιστ [Όριο ΚΒΑΝΤ Μέγεθος BUCKET ] εφόσον φυσικά ο παρονομαστής δεν δίνει τιμή. Στην περίπτωση του μηδενικού παρονομαστή θέτουμε Κλιμάκωση ΝΕΑ =1.. Παράδειγμα Κατανόησης Με το ίδιο παράδειγμα που εξηγήσαμε την Κλιμάκωση θα επιχειρήσουμε να δείξουμε την σημασία της νέας Κλιμάκωσης. Έστω ότι έχουμε Μέγεθος Bucket = 1Kbyte = 124 και Ακριβές Όριο 13. Τότε θα αθροίσουμε ως Hits, όλα τα Accesses του [Bucket] (με RD από έως 123) και εκείνο το ποσοστό των Accesses του 2ου [Bucket1] που υποδεικνύει η νέα Κλιμάκωση. Τότε Αθροιστ [13] Αθροιστ [1 124] Αθροιστ [13] Αθροιστ [124 ] Κλιμάκωση ΝΕΑ = = Αθροιστ [ ] Αθροιστ[1 124] Αθροιστ [248] Αθροιστ [124 ] και όλα εξαρτώνται από την Αθροιστική συγκέντρωση των Προσβάσεων Μνήμης ενδιάμεσα από αυτά τα διαστήματα Αποστάσεων Επαναχρησιμοποίησης. Με το Σύνθετο Μοντέλο στην Α' βελτιωμένη έκδοση του, προσεγγίσαμε επιτυχώς το Miss Ratio των Μετροπρογραμμάτων SPEC2. Ενώ σε σχέση με τα αποτελέσματα του Απλού Μοντέλου {4.3} η βελτίωση είναι προφανής, δεν είμαστε ακόμα ικανοποιημένοι. Υπάρχουν ακόμη μια αλλαγή που μπορεί να μας δώσει τα βέλτιστα νούμερα για το Miss Ratio. δ) Γραμμικά Buckets H εκτίμηση του StatCache για το Miss Ratio επηρεάζει άμεσα το Κόστος MLP που προβλέπουμε, όπως θα διαπιστώσουμε αναλυτικά στην επόμενη ενότητα, παρατηρώντας τον τύπο υπολογισμού του MLP ΣΥΝΘΕΤΟ {4.4.3}. Όμως το StatCache αποδίδει ιδανικά με Fully Associative Caches. Random Replacement Πολιτική Αντικατάστασης. Αναφέραμε την αλλαγή σε 64 Way Associative Caches για την προσέγγιση της Fully Associative Cache. Ωστόσο χρησιμοποιούμε LRU Πολιτική Αντικατάστασης. Με την Random Replacement Πολιτική ενδείκνυται η χρήση των Εκθετικών Buckets, που χρησιμοποιούμε κ εμείς ως τώρα. Τα Εκθετικά Buckets παρέχουν: πολλά και μικρά Buckets για τις μικρές Αποστάσεις Επαναχρησιμοποίησης. λίγα και μεγάλα Buckets για τις μεγάλες Αποστάσεις Επαναχρησιμοποίησης. Η διαρρύθμιση αυτή βολεύει, καθώς ο Random Replacement παρέχει ομοιόμορφη πιθανότητα αντικατάστασης για όλες τις Αποστάσεις Επαναχρησιμοποίησης. Με την LRU Πολιτική ορίζονται σταθερά Όρια, που είναι υποπολλαπλάσια του πλήθους των Γραμμών της Cache L. Όποια Απόσταση Επαναχρησιμοποίησης είναι μικρότερη από το Όριο, δηλαδή η μοναδική Πρόσβαση χωράει στην Γραμμή της Cache, θεωρείται από το StatCache ως Hit, ενώ αν η Απόσταση Επαναχρησιμοποίησης είναι μεγαλύτερη από το Όριο, η Πρόσβαση θεωρείται από το StatCache ως Miss. Για την LRU προτιμάμε τα Γραμμικά (Linear) Buckets επειδή: Για μικρές Αποστάσεις Επαναχρησιμοποίησης (RDs) με LRU Πολιτική, οι Εκθετικοί Buckets δεν μπορούν να λειτουργήσουν. Τα πολλά και μικρά Εκθετικά Buckets δεν μπορούν να διαχειριστούν τις RDs. Για μεγαλύτερα RDs με LRU Πολιτική, οι τιμές βρίσκονται ακριβώς γύρω από τα Όρια των λίγων και μεγάλων Εκθετικών Buckets με αποτέλεσμα, το StatCache να μην μπορεί να εκτιμήσει τα αντίστοιχα Miss Ratios. Όπως είπαμε το Όριο στην LRU είναι υποπολλαπλάσιο του L και οι Γραμμικοί Buckets βολεύουν γιατί δίνουν ομοιόμορφου μεγέθους Buckets για όλο το εύρος των Αποστάσεων 55

56 Επαναχρησιμοποίησης. Από εδώ και στο εξής υιοθετούμε την χρήση των Γραμμικών Buckets. Ορίζουμε στον κώδικα του Simplescalar το σταθερό Μέγεθος Γραμμικού Bucket : Μέγιστο RD Μέγεθος Bucket= Πλήθος Buckets = =248. {4.4.1} 248 Η βελτίωση των αποτελεσμάτων για το Miss Ratio, με τις βελτιώσεις διορθώσεις που περιγράφουμε σε αυτή την παράγραφο και την υπόλοιπη διαδικασία υπολογισμού ίδια όπως περιγράφεται στις προηγούμενες παραγράφους, είναι μεγάλη. Εκτιμούμε ότι σε αυτό το σημείο, έχουμε επιτύχει την βέλτιστη δυνατή προσέγγιση του Miss Ratio με το StatCache ) Β' Βελτίωση του Σύνθετου Μοντέλου Παράλληλες Εντολές, Αλληλεξαρτήσεις και Πιθανότητες Έχοντας προσεγγίζει το Miss Ratio ανά Εντολή του εξομοιούμενου Προγράμματος, παρατηρούμε πλέον τις Εντολές σαν οντότητες με διαφορετική συμπεριφορά. Για να προχωρήσουμε στον υπολογισμό του Κόστους MLP, θέλουμε : να προσδιορίσουμε πότε θα θεωρούμε ότι δύο Εντολές (που προκαλούν Read Accesses) εκτελούνται παράλληλα. Να επιχειρήσουμε μια πρώτη προσέγγιση στις Αλληλεξαρτήσεις (Dependencies) μεταξύ των παράλληλων Εντολών. Δεδομένου ότι εξετάζουμε κάθε Εντολή ξεχωριστά, με βάση την συμπεριφορά της Εφαρμογής, μπορούμε να περιμένουμε πώς κάποιες Εντολές θα συναντιούνται παράλληλα πιο συχνά από κάποιες άλλες. Αυτή είναι φυσικά μια πληροφορία που μας ενδιαφέρει, προκειμένου να μοντελοποιήσουμε λεπτομερώς την συμπεριφορά των Εντολών της Εφαρμογής. Παρατηρούμε στην Εικόνα 29, ένα παράδειγμα δομής ενός Out-of-Order επεξεργαστή. Οι νέες Εντολές προς εκτέλεση φθάνουν στην Instruction Queue, μια FIFO λίστα, που εξυπηρετεί τις Εντολές με σειρά προτεραιότητας άφιξης, αμέσως μόλις υπάρξει διαθέσιμη Μονάδα Εξυπηρέτησης (Reservation Station). Ακριβώς όπως περιγράψαμε στην Παράγραφο {3.3.1} οι Εντολές Φόρτωσης (Loads) και Αποθήκευσης (Stores) εξυπηρετούνται από την Load-Store Queue (LSQ), και εξαιτίας της Out-of-Order Λογικής οι εν λόγω Εντολές αναδιατάσσονται προς εξυπηρέτηση στον Reorder Buffer (ROB) του Register Update Unit (RUU). 56

57 Εικόνα 31: Πχ. δομής OoO Επεξεργαστή [24- κεφ.2] Θυμηθείτε, μας ενδιαφέρουν Εντολές που προκαλούν Προσβάσεις Μνήμης Ανάγνωσης (Read Accesses) από την L2 Cache προς την Κύρια Μνήμη. Έχοντας πει αυτά και παρατηρώντας το σχήμα, έχει γίνει προφανές ότι οι Εντολές στον ROB εξυπηρετούνται με διαφορετική σειρά από αυτή της άφιξης τους. Συνεπώς χρειαζόμαστε μια επιπλέον Δομή Υλικού που θα ανιχνεύει πότε στον χρόνο κάποιες Εντολές είναι παράλληλες μεταξύ τους, ποιες είναι αυτές και πως επηρεάζονται μεταξύ τους. Ενσωματώνουμε την Δομή αυτή συλλογής πληροφοριών για τις Εντολές, καθώς και την λογική λειτουργίας της, στον Εξομοιωτή Simplescalar. Θεωρούμε ότι κάθε δύο γειτονικά Misses είναι δύο γεγονότα ανεξάρτητα μεταξύ τους. Δηλαδή η εμφάνιση του ενός δεν προϋποθέτει την προηγούμενη ή ακόλουθη εμφάνιση του άλλου. Προς το παρόν συλλέγουμε μόνο την χρονική ακολουθία και συσχέτιση της εμφάνισης των Προσβάσεων Μνήμης. Αυτές οι Προσβάσεις είναι πιθανώς Misses, αλλά την στιγμή που τα δεδομένα συλλέγονται δεν το γνωρίζουμε. Στον Εξομοιωτή Simplescalar Υλοποιούμε μια Δυναμική FIFO Ουρά με την μορφή Διπλά Διασυνδεδεμένης Λίστας (Doubly Linked List) στον Δειγματολήπτη (Sampler), η οποία ανιχνεύει τον παραλληλισμό των Εντολών που προκαλούν L2 Προσβάσεις Ανάγνωσης. Η Ουρά έχει ανώτερο όριο μεγέθους τις 4 θέσεις, μέγεθος ίσο με αυτό του LSQ που εξομοιώνουμε, δηλαδή Μέγεθος ΟΥΡΑΣ =Μέγεθος LSQ =4. Για κάθε καταχώρηση της Ουράς (δηλαδή για κάθε Εντολή) αποθηκεύουμε σε ένα Πίνακα, τον Πίνακα_Εντολών, τις 15 Εντολές που παρατηρούνται παράλληλα με την Εντολή της καταχώρησης της Ουράς, ανά πάσα στιγμή. Τονίζουμε ότι οι 15 παράλληλες Εντολές που συλλέγουμε για κάθε Δειγματοληπτούμενη Εντολή, δεν είναι παρά πιθανά παράλληλα Misses, ας μην ξεχνάμε ότι δειγματοληπτούμε προσβάσεις Μνήμης. Στην συνέχεια θα παρουσιάσουμε τη λογική λειτουργίας της Ουράς μας με αλγοριθμική σειρά: Βήμα: Αρχικοποιούμε την Ουρά, στην αρχή της Εξομοίωσης, μαζί με την αρχικοποίηση όλων των υπόλοιπων δομών. Βήμα1: Για κάθε Εντολή που φτάνει στον Δειγματολήπτη, ελέγχουμε τον Δείκτη Θέσης της Ουράς. Εάν βρίσκεται στην τελευταία θέση (Tail), η Ουρά έχει γεμίσει. Τότε : 57

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 7ο μάθημα: Κρυφές μνήμες (cache) - εισαγωγή Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου Σύστημα μνήμης! Η μνήμη είναι σημαντικό

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Κρυφές Μνήμες. (οργάνωση, λειτουργία και απόδοση) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κρυφές Μνήμες (οργάνωση, λειτουργία και απόδοση) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Ιεραρχία συχνά και το

Διαβάστε περισσότερα

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες

Ιεραρχία Μνήμης. Ιεραρχία μνήμης και τοπικότητα. Σκοπός της Ιεραρχίας Μνήμης. Κρυφές Μνήμες Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Κρυφές Μνήμες (οργάνωση, λειτουργία και απόδοση) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Για βελτίωση της απόδοσης

Διαβάστε περισσότερα

Διάλεξη 15 Απόδοση της Ιεραρχίας Μνήμης Βελτιστοποίηση της απόδοσης

Διάλεξη 15 Απόδοση της Ιεραρχίας Μνήμης Βελτιστοποίηση της απόδοσης ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 5 Απόδοση της Ιεραρχίας Μνήμης Βελτιστοποίηση της απόδοσης Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πόσο μεγάλη είναι μια μνήμη cache;

Διαβάστε περισσότερα

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή

ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή ΠΛΕ- 027 Μικροεπεξεργαστές 9ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Κρυφές μνήμες εισαγωγή Αρης Ευθυμίου Σύστημα μνήμης Η μνήμη είναι σημαντικό κομμάτι ενός υπολογιστή Επηρεάζει κόστος, ταχύτητα, κατανάλωση

Διαβάστε περισσότερα

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy)

Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy) Κεφάλαιο 7 Ιεραρχία Μνήμης (Memory Hierarchy) 1 Συστήματα Μνήμης Η οργάνωση του συστήματος μνήμης επηρεάζει τη λειτουργία και απόδοση ενός μικροεπεξεργαστή: Διαχείριση μνήμης και περιφερειακών (Ι/Ο) απότολειτουργικόσύστημα

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr ΑΡΧΙΤΕΚΤΟΝΙΚΗ

Διαβάστε περισσότερα

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 8. Χειμερινό Εξάμηνο

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 8. Χειμερινό Εξάμηνο Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering Οργάνωση και Σχεδίαση Η/Y (HY232) Εργαστήριο 8 Χειμερινό Εξάμηνο 2016-2017 1. Προσομοίωση λειτουργίας ιεραρχίας

Διαβάστε περισσότερα

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης i Στα σύγχρονα

Διαβάστε περισσότερα

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών

Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Οργάνωση Υπολογιστών Επιπλέον διδακτικό υλικό κρυφών μνημών: set-associative caches, πολιτικές αντικατάστασης, χειρισμός εγγραφών Μανόλης Γ.Η. Κατεβαίνης Τμήμα Επιστήμης

Διαβάστε περισσότερα

Τεχνολογίες Κύριας Μνήμης

Τεχνολογίες Κύριας Μνήμης Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κύρια Μνήμη

Διαβάστε περισσότερα

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση

Κεφάλαιο 5. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 2. Σημείωση Κεφάλαιο 5 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ -. Σερπάνος 1 Σημείωση Οι παρούσες διαφάνειες παρέχονται ως συμπλήρωμα διδασκαλίας για το μάθημα «Αρχιτεκτονική Υπολογιστών» του Τμήματος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας

Διαβάστε περισσότερα

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Κρυφές μνήμες

Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Κρυφές μνήμες Υ- 01 Αρχιτεκτονική Υπολογιστών Υπόβαθρο: Κρυφές μνήμες Αρης Ευθυμίου Το σημερινό μάθημα Κρυφές μνήμες (cache memory) Βασική οργάνωση, παράμετροι: γραμμές, συσχετιστικότητα, συνολική χωρητικότητα Επίδοση:

Διαβάστε περισσότερα

Processor-Memory (DRAM) ιαφορά επίδοσης

Processor-Memory (DRAM) ιαφορά επίδοσης Processor-Memory (DRAM) ιαφορά επίδοσης µproc 6%/yr 98 98 982 983 984 985 986 987 988 989 99 99 992 993 994 995 996 997 998 999 2 2 22 23 24 25 Performance Processor-Memory Performance Gap: (grows 5% /

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 11: Κρυφή Μνήμη Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http://arch.icte.uowm.gr/mdasyg

Διαβάστε περισσότερα

Αρχιτεκτονική υπολογιστών

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 4 : Κρυφή Μνήμη Καρβούνης Ευάγγελος Δευτέρα, 30/11/2015 Χαρακτηριστικά Θέση Χωρητικότητα Μονάδα Μεταφοράς

Διαβάστε περισσότερα

Ασκήσεις Caches

Ασκήσεις Caches Ασκήσεις Caches 1 Άσκηση 1η Θεωρήστε ένα σύστημα μνήμης με μία cache: 4-way set associative μεγέθους 256ΚΒ, με cache line 8 λέξεων. Χαρακτηριστικά συστήματος μνήμης: μέγεθος της λέξης είναι 32 bits. 1

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Υποσύστημα μνήμης Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Άσκηση 1η. Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ,

Άσκηση 1η. Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ, Ασκήσεις Caches Άσκηση 1η Θεωρήστε ένα σύστημα μνήμης με μία cache: 4 way set associative μεγέθους 256ΚΒ, με cache line 8 λέξεων. Χαρακτηριστικά συστήματος μνήμης: μέγεθος της λέξης είναι 32 bits. 1 byte

Διαβάστε περισσότερα

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (2 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Ταχύτητα εκτέλεσης Χρόνος εκτέλεσης = (αριθμός εντολών που εκτελούνται) Τί έχει σημασία: Χ (χρόνος εκτέλεσης εντολής) Αριθμός

Διαβάστε περισσότερα

Ασκήσεις Caches

Ασκήσεις Caches Ασκήσεις Caches 1 Άσκηση 1η Θεωρήστε ένα σύστημα μνήμης με μία cache: 4-way set associative μεγέθους 256ΚΒ, με cache line 8 λέξεων. Χαρακτηριστικά συστήματος μνήμης: μέγεθος της λέξης είναι 32 bits. 1

Διαβάστε περισσότερα

Ασκήσεις Caches. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Ασκήσεις Caches. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης Αρχιτεκτονική Υπολογιστών 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: 2014-2015 Νεκ. Κοζύρης nkoziris@cslab.ece.ntua.gr Ασκήσεις Caches http://www.cslab.ece.ntua.gr/courses/comparch/ Άδεια Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC

Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Συστήματα μνήμης και υποστήριξη μεταφραστή για MPSoC Πλεονεκτήματα MPSoC Είναι ευκολότερο να σχεδιαστούν πολλαπλοί πυρήνες επεξεργαστών από τον σχεδιασμό ενός ισχυρότερου και πολύ πιο σύνθετου μονού επεξεργαστή.

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 11: Κρυφή Μνήμη Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http://arch.icte.uowm.gr/mdasyg

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΤΕΛΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΟΡΓΑΝΩΣΗ ΣΤΟΥΣ Η/Y (ΗΥ232) Τετάρτη, 21 Δεκεμβρίου 2016 ΔΙΑΡΚΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ 3 ΩΡΕΣ Για πλήρη

Διαβάστε περισσότερα

Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήμη (Virtual Μemory) ΗΥ 431 Αρχιτεκτονική Παραλλήλων Συστημάτων Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Απλό πείραμα int *data = malloc((1

Διαβάστε περισσότερα

Η ιεραρχία της μνήμης

Η ιεραρχία της μνήμης Η ιεραρχία της μνήμης Οι περιορισμοί στο σχεδιασμό της μνήμης συνοψίζονται σε τρεις ερωτήσεις : 1) Πόση 2) Πόσο γρήγορη 3) Πόσο ακριβή Ερωτήματα-Απαντήσεις Ερώτημα πόση μνήμη. Είναι ανοικτό. Αν υπάρχει

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών

Αρχιτεκτονική Υπολογιστών ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Υποσύστημα μνήμης Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Processor-Memory (DRAM) ιαφορά επίδοσης

Processor-Memory (DRAM) ιαφορά επίδοσης Processor-Memory (DRAM) ιαφορά επίδοσης µproc 6%/yr 98 98 982 983 984 985 986 987 988 989 99 99 992 993 994 995 996 997 998 999 2 2 22 23 24 25 Performance Processor-Memory Performance Gap: (grows 5% /

Διαβάστε περισσότερα

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache)

SMPcache. Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) SMPcache Ένα εργαλείο για προσομοίωση-οπτικοποίηση κρυφής μνήμης (Cache) 1. Βασικές ρυθμίσεις του συστήματος: δημιουργία μια δικής μας σύνθεσης συστήματος. Το SMPcache είναι ένα εργαλείο με το οποίο μπορούμε

Διαβάστε περισσότερα

ΕΠΛ 605: ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2018 ΕΡΓΑΣΙΑ 3 (13/10/2018) Ηµεροµηνία Παράδοσης δεύτερου µέρους: 18/10/2018

ΕΠΛ 605: ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2018 ΕΡΓΑΣΙΑ 3 (13/10/2018) Ηµεροµηνία Παράδοσης δεύτερου µέρους: 18/10/2018 ΕΠΛ 605: ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2018 ΕΡΓΑΣΙΑ 3 (13/10/2018) Ηµεροµηνία Παράδοσης δεύτερου µέρους: 18/10/2018 Ηµεροµηνία Παράδοσης πρώτου µέρους: 25/10/2018 Θα πρέπει να παραδώσετε

Διαβάστε περισσότερα

Processor-Memory (DRAM) Διαφορά επίδοσης

Processor-Memory (DRAM) Διαφορά επίδοσης Performance Processor-Memory (DRAM) Διαφορά επίδοσης 98 98 982 983 984 985 986 987 988 989 99 99 992 993 994 995 996 997 998 999 2 2 22 23 24 25 µproc 6%/yr Processor-Memory Performance Gap: (grows 5%

Διαβάστε περισσότερα

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ Γιώργος Δημητρίου Μάθημα 8 ο ΠΜΣ Εφαρμοσμένη Πληροφορική ΜΟΝΑΔΑ ΜΝΗΜΗΣ Επαρκής χωρητικότητα αποθήκευσης Αποδεκτό μέσο επίπεδο απόδοσης Χαμηλό μέσο κόστος ανά ψηφίο Ιεραρχία μνήμης

Διαβάστε περισσότερα

ΠΛΕ- 027 Μικροεπεξεργαστές

ΠΛΕ- 027 Μικροεπεξεργαστές ΠΛΕ- 027 Μικροεπεξεργαστές 10ο μάθημα: Αρχιτεκτονική συστήματος μνήμης: Εικονική μνήμη, σχεδίαση αποδοτικής κρυφής μνήμης, προγραμματισμός για κρυφή μνήμη Αρης Ευθυμίου Εικονική μνήμη ως cache Η κύρια

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών

Οργάνωση Υπολογιστών Οργάνωση Υπολογιστών Επιμέλεια: Γεώργιος Θεοδωρίδης, Επίκουρος Καθηγητής Ανδρέας Εμερετλής, Υποψήφιος Διδάκτορας Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών 1 Άδειες Χρήσης Το παρόν υλικό

Διαβάστε περισσότερα

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Οργάνωση Υπολογιστών Εργαστήριο 11: Κρυφές Μνήμες και η Επίδοσή τους Μανόλης Γ.Η. Κατεβαίνης Τμήμα Επιστήμης Υπολογιστών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Λογιστικής Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Μάθημα 8 Κεντρική Μονάδα Επεξεργασίας και Μνήμη 1 Αρχιτεκτονική του Ηλεκτρονικού Υπολογιστή Μονάδες Εισόδου Κεντρική

Διαβάστε περισσότερα

Cach O p i timisati tions

Cach O p i timisati tions Cache Optimisations i 1 Διαφορά Επίδοσης Processor-Memory Performance Gap: (grows 50% / year) 2 SRAM vs DRAM 1-transistor DRAM cell 6-transistor SRAM cell 3 Intel 45nm 6T SRAM cell 4 Ιεραρχία Μνήμης Πρέπει

Διαβάστε περισσότερα

Προχωρηµένα Θέµατα Αρχιτεκτονικής

Προχωρηµένα Θέµατα Αρχιτεκτονικής Προχωρηµένα Θέµατα Αρχιτεκτονικής Memory Hierarchy Design. Λιούπης Ιεραρχία Μνήµης Τα προγράµµατα απαιτούν όλο και περισσότερη και πιο γρήγορη µνήµη Γρήγορη και µεγάλη µνήµη -> ακριβή Αυτό οδηγεί σε ιεραρχία

Διαβάστε περισσότερα

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Λειτουργικά Συστήματα Ι. Διδάσκων: Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

Διαβάστε περισσότερα

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής ρχιτεκτονική Υπολογιστών 2016-17 Εικονική Μνήμη (και ο ρόλος της στην ιεραρχία μνήμης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Δευτερεύουσα μνήμη

Διαβάστε περισσότερα

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 5. Μεγάλη και γρήγορη: Αξιοποίηση της ιεραρχίας της µνήµης

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 5. Μεγάλη και γρήγορη: Αξιοποίηση της ιεραρχίας της µνήµης Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση Κεφάλαιο 5 Μεγάλη και γρήγορη: Αξιοποίηση της ιεραρχίας της µνήµης Ασκήσεις Η αρίθµηση των ασκήσεων είναι από την 4 η έκδοση

Διαβάστε περισσότερα

Τεχνολογία μνημών Ημιαγωγικές μνήμες Μνήμες που προσπελαύνονται με διευθύνσεις:

Τεχνολογία μνημών Ημιαγωγικές μνήμες Μνήμες που προσπελαύνονται με διευθύνσεις: Σύστημα μνήμης Ο κύριος σκοπός στο σχεδιασμό ενός συστήματος μνήμης είναι να προσφέρουμε επαρκή χωρητικότητα αποθήκευσης διατηρώντας ένα αποδεκτό επίπεδο μέσης απόδοσης και επίσης χαμηλό μέσο κόστος ανά

Διαβάστε περισσότερα

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ Η Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit -CPU) ή απλούστερα επεξεργαστής αποτελεί το μέρος του υλικού που εκτελεί τις εντολές ενός προγράμματος υπολογιστή

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Εικονική Μνήμη. (και ο ρόλος της στην ιεραρχία μνήμης) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2011-12 Εικονική (και ο ρόλος της στην ιεραρχία μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης Ιεραρχία η νέα τάση: [2011]

Διαβάστε περισσότερα

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της

Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της Ενότητα 2: Η κρυφή µνήµη και η λειτουργία της Στην ενότητα αυτή θα αναφερθούµε εκτενέστερα στη λειτουργία και την οργάνωση της κρυφής µνήµης. Θα προσδιορίσουµε τις βασικές λειτουργίες που σχετίζονται µε

Διαβάστε περισσότερα

Οργάνωση Ιεραρχίας Μνήμης - Caches

Οργάνωση Ιεραρχίας Μνήμης - Caches Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης Οργάνωση Ιεραρχίας Μνήμης - Caches Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή

Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή 1 Είναι το «μυαλό» του υπολογιστή μας. Αυτός κάνει όλους τους υπολογισμούς και τις πράξεις. Έχει δική του ενσωματωμένη μνήμη, τη λεγόμενη κρυφή μνήμη(cache). Η cache είναι πολύ σημαντική, πολύ γρήγορη,

Διαβάστε περισσότερα

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ

3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ntua.gr 3 η ΑΣΚΗΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ

Διαβάστε περισσότερα

Εικονική Μνήμη (Virtual Μemory)

Εικονική Μνήμη (Virtual Μemory) ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 16 Εικονική Μνήμη (Virtual Μemory) Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Απλό πείραμα int *data = malloc((1

Διαβάστε περισσότερα

Εικονική Μνήμη (virtual memory)

Εικονική Μνήμη (virtual memory) Εικονική Μνήμη (virtual memory) Πολλά προγράμματα εκτελούνται ταυτόχρονα σε ένα υπολογιστή Η συνολική μνήμη που απαιτείται είναι μεγαλύτερη από το μέγεθος της RAM Αρχή τοπικότητας (η μνήμη χρησιμοποιείται

Διαβάστε περισσότερα

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw. ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΡ ΙΟ ΥΠΟΛΟΟ ΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua. gr ΑΡΧΙΤΕΚΤΟΝΙΚΗ

Διαβάστε περισσότερα

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

*Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους. Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους. *Τα φυσικά μέρη που μπορούμε να δούμε και να αγγίξουμε ονομάζονται συνολικά υλικό (hardware). * * υπερυπολογιστές

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ και ΥΠΟΛΟΓΙΣΤΩΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ, 5 ο εξάµηνο ΦΕΒΡΟΥΑΡΙΟΣ 2006 ΘΕΜΑΤΑ ΚΑΙ ΛΥΣΕΙΣ

Διαβάστε περισσότερα

Διπλωματική Εργασία της φοιτήτριας του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

Διπλωματική Εργασία της φοιτήτριας του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΗΛΕΚΤΡΟΝΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Διπλωματική Εργασία της φοιτήτριας του Τμήματος Ηλεκτρολόγων

Διαβάστε περισσότερα

(advanced_ca, ακ. έτος Cache Optimisations

(advanced_ca, ακ. έτος Cache Optimisations Cache Optimisations Διαφορά Επίδοσης Processor-Memory Performance Gap: (grows 50% / year) Ιεραρχία Μνήμης Πρέπει να μειώσουμε το processor-memory performance gap Η προσπέλαση δεδομένων (code & data) δεν

Διαβάστε περισσότερα

Δομή Ηλεκτρονικού υπολογιστή

Δομή Ηλεκτρονικού υπολογιστή Δομή Ηλεκτρονικού υπολογιστή Η κλασσική δομή του μοντέλου που πρότεινε το 1948 ο Von Neumann Κεντρική Μονάδα Επεξεργασίας Είσοδος Αποθήκη Αποθήκη - Έξοδος Εντολών Δεδομένων Κλασσικό μοντέλο Von Neumann

Διαβάστε περισσότερα

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM).

Υπάρχουν δύο τύποι μνήμης, η μνήμη τυχαίας προσπέλασης (Random Access Memory RAM) και η μνήμη ανάγνωσης-μόνο (Read-Only Memory ROM). Μνήμες Ένα από τα βασικά πλεονεκτήματα των ψηφιακών συστημάτων σε σχέση με τα αναλογικά, είναι η ευκολία αποθήκευσης μεγάλων ποσοτήτων πληροφοριών, είτε προσωρινά είτε μόνιμα Οι πληροφορίες αποθηκεύονται

Διαβάστε περισσότερα

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι. Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ. Επ. Καθ. Κ. Λαμπρινουδάκης ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ Διδάσκων: Επ. Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 ΕΙΣΑΓΩΓΗ Μνήμη : Πόρος ζωτικής σημασίας του οποίου η διαχείριση απαιτεί ιδιαίτερη

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ε Ρ Γ ΑΣ Τ ΗΡ ΙΟ Υ ΠΟΛΟΓΙΣ Τ ΙΚΩΝ Σ Υ Σ Τ ΗΜΑΤΩΝ w w w. c s l ab.ece.ntua.gr

Διαβάστε περισσότερα

Υ- 07 Παράλληλα Συστήματα Αρχιτεκτονική σύγχρονων πυρήνων επεξεργαστών

Υ- 07 Παράλληλα Συστήματα Αρχιτεκτονική σύγχρονων πυρήνων επεξεργαστών Υ- 07 Παράλληλα Συστήματα Αρχιτεκτονική σύγχρονων πυρήνων επεξεργαστών Αρης Ευθυμίου Διαδικαστικά Ιστοσελίδα μαθήματος: h:p://www.cs.uoi.gr/~plmy07/ Διαφάνειες μαθημάτων, κτλ 2 Γρήγορη εκτέλεση σειριακού

Διαβάστε περισσότερα

Υ- 01 Αρχιτεκτονική Υπολογιστών Ιεραρχία μνήμης: προχωρημένα θέματα

Υ- 01 Αρχιτεκτονική Υπολογιστών Ιεραρχία μνήμης: προχωρημένα θέματα Υ- 01 Αρχιτεκτονική Υπολογιστών Ιεραρχία μνήμης: προχωρημένα θέματα Αρης Ευθυμίου Το σημερινό μάθημα Εικονική μνήμη και κρυφές μνήμες Physical/Virtual indexing Σκοπός: μείωση hit Ome Τεχνικές σχετικές

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ

ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Τα τμήματα ενός ηλεκτρονικού υπολογιστή είναι: 1. Επεξεργαστής 2. Μνήμη RAM και ROM 3. Κάρτα γραφικών 4. Μητρική Πλακέτα 5. Σκληρός Δίσκος 6. DVD / Blue Ray 7. Τροφοδοτικό

Διαβάστε περισσότερα

Διαφορές single-processor αρχιτεκτονικών και SoCs

Διαφορές single-processor αρχιτεκτονικών και SoCs 13.1 Τα συστήματα και η επικοινωνία μεταξύ τους γίνονται όλο και περισσότερο πολύπλοκα. Δεν μπορούν να περιγραφούνε επαρκώς στο επίπεδο RTL καθώς αυτή η διαδικασία γίνεται πλέον αρκετά χρονοβόρα. Για αυτό

Διαβάστε περισσότερα

ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ

ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ ΣΤΑΤΙΚΕΣ ΚΑΙ ΔΥΝΑΜΙΚΕΣ ΜΝΗΜΕΣ ΤΥΧΑΙΑΣ ΠΡΟΣΠΕΛΑΣΗΣ (Static and Dynamic RAMs). ΔΙΑΡΘΡΩΣΗ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΘΕΜΑΤΙΚΕΣ ΕΝΟΤΗΤΕΣ ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΗΜΙΑΓΩΓΙΚΩΝ ΜΝΗΜΩΝ. ΒΑΣΙΚΗ ΛΕΙΤΟΥΡΓΙΑ RAM CMOS. ΤΥΠΟΙ ΚΥΤΤΑΡΩΝ ΑΡΧΕΣ

Διαβάστε περισσότερα

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ

ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ ΠΑΡΑΛΛΗΛΗ ΕΠΕΞΕΡΓΑΣΙΑ ΜΝΗΜΗ Πρωτόκολλα Συνέπειας Μνήµης σε Πολυεπεξεργαστικά Υπολογιστικά Συστήµατα ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΥΨΗΛΩΝ ΕΠΙ

Διαβάστε περισσότερα

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής) ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α Γενικού Λυκείου (Μάθημα Επιλογής) Σύγχρονα Υπολογιστικά Συστήματα τους υπερυπολογιστές (supercomputers) που χρησιμοποιούν ερευνητικά εργαστήρια τα μεγάλα συστήματα (mainframes)

Διαβάστε περισσότερα

Υ- 01 Αρχιτεκτονική Υπολογιστών Front- end: Προσκόμιση, αποκωδικοποίηση, μετονομασία καταχωρητών

Υ- 01 Αρχιτεκτονική Υπολογιστών Front- end: Προσκόμιση, αποκωδικοποίηση, μετονομασία καταχωρητών Υ- 01 Αρχιτεκτονική Υπολογιστών Front- end: Προσκόμιση, αποκωδικοποίηση, μετονομασία καταχωρητών Αρης Ευθυμίου Το σημερινό μάθημα Προσκόμιση (fetch) πολλαπλές εντολές ανά κύκλο Μετονομασία καταχωρητών

Διαβάστε περισσότερα

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems)

Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Ενσωµατωµένα Υπολογιστικά Συστήµατα (Embedded Computer Systems) Μαθηµα 2 ηµήτρης Λιούπης 1 Intel SA-1110 µc StrongARM core. System-on-Chip. Εξέλιξη των SA-110 και SA-1100. 2 ARM cores ARM: IP (intellectual

Διαβάστε περισσότερα

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

Μάθημα 3: Αρχιτεκτονική Υπολογιστών Μάθημα 3: Αρχιτεκτονική Υπολογιστών 3.1 Περιφερειακές μονάδες και τμήμα επεξεργασίας Στην καθημερινή μας ζωή ερχόμαστε συνέχεια σε επαφή με υπολογιστές. Ο υπολογιστής είναι μια συσκευή που επεξεργάζεται

Διαβάστε περισσότερα

Αρχιτεκτονική Υπολογιστών II 16-2-2012. Ενδεικτικές απαντήσεις στα θέματα των εξετάσεων

Αρχιτεκτονική Υπολογιστών II 16-2-2012. Ενδεικτικές απαντήσεις στα θέματα των εξετάσεων Αρχιτεκτονική Υπολογιστών II 6 --0 Ενδεικτικές απαντήσεις στα θέματα των εξετάσεων Θέμα. Τι γνωρίζετε για την τοπικότητα των αναφορών και ποιών μονάδων του υπολογιστή ή τεχνικών η απόδοση εξαρτάται από

Διαβάστε περισσότερα

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ: ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Ονοματεπώνυμο: ΑΜ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ (τμήμα Μ - Ω) Κανονική εξεταστική Φεβρουαρίου

Διαβάστε περισσότερα

Λειτουργικά Συστήματα Η/Υ

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 8 «Ιδεατή Μνήμη» Διδάσκων: Δ. Λιαροκαπης Διαφάνειες: Π. Χατζηδούκας Ιδεατή Μνήμη Οργάνωση. Εισαγωγή. Ιδεατές και πραγματικές διευθύνσεις. Λογική οργάνωση. Τμηματοποίηση

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I MIPS Η MIPS (Microprocessor without Interlocked Pipeline Stages) είναι μία αρχιτεκτονική συνόλου εντολών (ISA) γλώσσας μηχανής που αναπτύχθηκε από την εταιρεία

Διαβάστε περισσότερα

Μάθημα 8: Διαχείριση Μνήμης

Μάθημα 8: Διαχείριση Μνήμης Μάθημα 8: Διαχείριση Μνήμης 8.1 Κύρια και δευτερεύουσα μνήμη Κάθε μονάδα ενός υπολογιστή που χρησιμεύει για τη μόνιμη ή προσωρινή αποθήκευση δεδομένων ανήκει στην μνήμη (memory) του υπολογιστή. Οι μνήμες

Διαβάστε περισσότερα

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Υ Ενότητα 1η: Εισαγωγή στην Οργάνωση Η/Υ Άσκηση 1: Αναλύστε τη διαδοχική εκτέλεση των παρακάτω εντολών MIPS με βάση τις

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr ΠΡΟΗΓΜΕΝΑ ΘΕΜΑΤΑ

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών (ΙI)

Οργάνωση Υπολογιστών (ΙI) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (ΙI) (κύρια και κρυφή μνήμη) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό

Διαβάστε περισσότερα

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 10ο μάθημα: Ορια παραλληλίας επιπέδου εντολής και πολυνηματικοί επεξεργαστές Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου Ορια

Διαβάστε περισσότερα

Chapter 4 (1) Αξιολόγηση και κατανόηση της απόδοσης

Chapter 4 (1) Αξιολόγηση και κατανόηση της απόδοσης Chapter 4 (1) Αξιολόγηση και κατανόηση της απόδοσης Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης, Τμήματος Ηλεκτρονικών Μηχανικών του

Διαβάστε περισσότερα

Πολυπύρηνοι επεξεργαστές Multicore processors

Πολυπύρηνοι επεξεργαστές Multicore processors Πολυπύρηνοι επεξεργαστές Multicore processors 1 Μετάβαση στους πολυπύρηνους(1) Απόδοση των µονοεπεξεργαστών 25% ετήσια βελτίωση της απόδοσης από το 1978 έως το 1986 Κυρίως από την εξέλιξη της τεχνολογίας

Διαβάστε περισσότερα

Είδη των Cache Misses: 3C s

Είδη των Cache Misses: 3C s Είδη των Cache Misses: 3C s 1 Compulsory: Συμβαίνουν κατά την πρώτη πρόσβαση σε ένα block. Το block πρέπει να κληθεί από χαμηλότερα επίπεδα μνήμης και να τοποθετηθεί στην cache (αποκαλούνται και cold start

Διαβάστε περισσότερα

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Μάθημα 4.5 Η Μνήμη - Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς: Να αναφέρεις τα κυριότερα είδη μνήμης

Διαβάστε περισσότερα

Λειτουργικά Συστήματα (Λ/Σ)

Λειτουργικά Συστήματα (Λ/Σ) Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Μνήμης Βασίλης Σακκάς 6/12/2013 1 Διαχείριση Μνήμης 1 Το τμήμα του Λ/Σ που διαχειρίζεται τη μνήμη λέγεται Διαχειριστής Μνήμης (Memory manager). Καθήκον του είναι

Διαβάστε περισσότερα

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας

Μάθημα 3.2: Κεντρική Μονάδα Επεξεργασίας Κεφάλαιο 3 ο Αρχιτεκτονική Υπολογιστών Μάθημα 3.: Κεντρική Μονάδα Επεξεργασίας Όταν ολοκληρώσεις το κεφάλαιο θα μπορείς: Να σχεδιάζεις την εσωτερική δομή της ΚΜΕ και να εξηγείς τη λειτουργία των επιμέρους

Διαβάστε περισσότερα

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης.

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Νεκτάριος Κοζύρης Εικονική Μνήμη Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης

Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών Διάλεξη 14 Εισαγωγή στην Ιεραρχία Μνήμης Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων 1 H Μικρο-αρχιτεκτονική μας 4 1 0 PCSrc IF/ID Control ID/EX

Διαβάστε περισσότερα

Κεφάλαιο 3. Διδακτικοί Στόχοι

Κεφάλαιο 3. Διδακτικοί Στόχοι Κεφάλαιο 3 Σε ένα υπολογιστικό σύστημα η Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) εκτελεί τις εντολές που βρίσκονται στην κύρια μνήμη του. Οι εντολές αυτές ανήκουν σε προγράμματα τα οποία, όταν εκτελούνται,

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Διπλωματικές

Διαβάστε περισσότερα

Οργάνωση Υπολογιστών (IΙI)

Οργάνωση Υπολογιστών (IΙI) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Οργάνωση Υπολογιστών (IΙI) (συσκευές εισόδου-εξόδου) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Ένα τυπικό

Διαβάστε περισσότερα

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI)

Κύρια μνήμη. Μοντέλο λειτουργίας μνήμης. Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (ΙI) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 015-16 Οργάνωση Υπολογιστών (ΙI) (κύρια και ) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Ένα τυπικό υπολογιστικό

Διαβάστε περισσότερα

Αρχιτεκτονική-ΙI Ενότητα 4 :

Αρχιτεκτονική-ΙI Ενότητα 4 : ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Αρχιτεκτονική-ΙI Ενότητα 4 : Μνήμες Ιωάννης Έλληνας Τμήμα Η/ΥΣ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ (Τμήματα Υπολογιστή) ΕΚΠΑΙΔΕΥΤΗΣ:ΠΟΖΟΥΚΙΔΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ ΤΜΗΜΑΤΑ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Κάθε ηλεκτρονικός υπολογιστής αποτελείται

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr ΠΡΟΗΓΜΕΝΑ ΘΕΜΑΤΑ

Διαβάστε περισσότερα

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης)

Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών Απόδοση ΚΜΕ. (Μέτρηση και τεχνικές βελτίωσης απόδοσης) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο

i Throughput: Ο ρυθμός ολοκλήρωσης έργου σε συγκεκριμένο χρόνο Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 6-7 Απόδοση ΚΜΕ (Μέτρηση και τεχνικές βελτίωσης απόδοσης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κεντρική Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

ΔΙΑΛΕΞΕΙΣ 6-7: ΚΡΥΦΗ ΜΝΗΜΗ (Cache)

ΔΙΑΛΕΞΕΙΣ 6-7: ΚΡΥΦΗ ΜΝΗΜΗ (Cache) ΗΜΥ 312 -- ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΑΛΕΞΕΙΣ 6-7: ΚΡΥΦΗ ΜΝΗΜΗ (Cache) Διδάσκων: Χάρης Θεοχαρίδης, ΗΜΜΥ ttheocharides@ucy.ac.cy [Προσαρμογή από Computer Architecture, Hennessy & Patterson,

Διαβάστε περισσότερα

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access) Μελετώντας το μάθημα θα μπορείς να ξέρεις τη λειτουργία του Polling να ξέρεις

Διαβάστε περισσότερα

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών

Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών της Πολυτεχνικής Σχολής του Πανεπιστημίου Πατρών ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ: ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΗΛΕΚΤΡΟΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Διπλωματική Εργασία του φοιτητή του Τμήματος Ηλεκτρολόγων

Διαβάστε περισσότερα