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

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

Download "ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΑΤΜΗΜΑΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΜΕΤΑΠΤΥΧΙΑΚΩΝ ΣΠΟΥΔΩΝ «ΟΛΟΚΛΗΡΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ ΥΛΙΚΟΥ ΚΑΙ ΛΟΓΙΣΜΙΚΟΥ» Δ.Π.Μ.Σ. Ο.Σ.Υ.Λ. ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ της Μεταπτυχιακής Φοιτήτριας του ΠΜΣ ΟΣΥΛ: ΕΛΙΣΣΑΒΕΤ ΠΑΠΑΔΗΜΑ ΤΟΥ ΕΥΑΓΓΕΛΟΥ ΑΡΙΘΜΟΣ ΜΗΤΡΩΟΥ: _187_ Θέμα: «ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ ΜΕΘΟΔΟΛΟΓΙΑΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΥ ΠΙΝΑΚΑ ΕΠΙ ΔΙΑΝΥΣΜΑ ΣΕ ΜΟΝΟΠΥΡΗΝΕΣ ΚΑΙ ΠΟΛΥΠΥΡΗΝΕΣ ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ» ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΓΚΟΥΤΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ Αριθμός Διπλωματικής: Πάτρα, 29/5/2013_

2 ii

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

4 iv

5 ΠΕΡΙΛΗΨΗ Στην παρούσα διπλωματική εργασία έγινε υλοποίηση και πειραματική αξιολόγηση μιας μεθοδολογίας [1] η οποία έχει αναπτυχθεί στο Εργαστήριο Ολοκληρωμένων Κυκλωμάτων και αφορά τη βελτιστοποίηση του Πολλαπλασιασμού Πίνακα επί Διάνυσμα (ΠΠΔ) σε μονοπύρηνους και πολυπύρηνους επεξεργαστές. Η μεθοδολογία εκμεταλλεύεται το σύνολο των χαρακτηριστικών της αρχιτεκτονικής που χρησιμοποιείται και συγκεκριμένα (α) την ιεραρχία της μνήμης, (β) το μέγεθος της κρυφής μνήμης, (γ) το βαθμό συσχέτισης κάθε επιπέδου της κρυφής μνήμης, (δ) την καθυστέρηση της μνήμης και (ε) το πλήθος των πυρήνων. Είναι η πρώτη φορά που λαμβάνεται υπόψη ο βαθμός συσχέτισης της μνήμης. Σκοπός της μεθοδολογίας είναι η βελτιστοποίηση με βάση όλες τις παραμέτρους μαζί και όχι καθεμία ξεχωριστά. Για να βελτιωθεί η απόδοση προτείνεται διαφορετικός χρονοπρογραμματισμός ανάλογα με το μέγεθος του πίνακα. Για την πειραματική αξιολόγηση χρησιμοποιήθηκαν οι επεξεργαστές γενικού σκοπού Intel Core 2 Duo E6065 και Τ6600, ο Intel i7-3930k και ο ενσωματωμένος επεξεργαστής ειδικού σκοπού Microblaze από το Virtex-5 FPGA (Xilinx). Τα αποτελέσματα συγκρίνονται με την state-of-the-art βιβλιοθήκη ATLAS (Automatically Tuned Linear Algebra Software) και παρουσιάζουν βελτίωση 30%. Από τα πειραματικά αποτελέσματα είναι φανερό ότι η κύρια μνήμη είναι το bottleneck του προβλήματος. Επίσης, η απόδοση βελτιώνεται όταν αλλάζει το layout του πίνακα τόσο σε μονοπύρηνες όσο σε πολυπύρηνες αρχιτεκτονικές. Όσον αφορά τη μέθοδο του tiling τα πειραματικά αποτελέσματα δείχνουν ότι η μείωση των αστοχιών δεν βελτιώνει πάντα την απόδοση γιατί υπάρχει trade-off ανάμεσα στο μέγεθος του tile και στις εντολές διευθυνσιοδότησης. Επίσης, είναι φανερό ότι στις πολυπύρηνες αρχιτεκτονικές δεν υπάρχει γραμμική σχέση της απόδοσης και του πλήθους των πυρήνων που χρησιμοποιούνται. Αυτό οφείλεται στο περιορισμένο εύρος ζώνης της μνήμης. v

6 vi

7 ABSTRACT The subject of this MSc Thesis is the implementation and the experimental evaluation of a methodology [1] that has been developed at the Laboratory of Integrated Circuits and optimizes the Matrix Vector Multiplication (MVM) in single-core and multi-core processors. The methodology fully exploits the characteristics of the architecture. Specifically, it exploits (a) the hierarchy of the memory, (b) the cache size, (c) the cache associativity, (d) the memory latency and (e) the number of the cores. It is the first time that the cache associativity is taken into account. The methodology optimizes all the parameters together as one problem and not separately. A different scheduling is proposed according to the size of the matrix. The general purpose processors Intel Core 2 Duo E6065, Intel Core 2 Duo T6600 and Intel i7-3930k and the embedded processor Virtex-5 Microblaze have been used. The results have been compared with the state-of-the-art library ATLAS (Automatically Tuned Linear Algebra Software) and the performance is improved by 30%. According to the experimental results, it is obvious that the bottleneck is the memory latency. Moreover, the performance is increased when a new way of saving the matrix in the main memory (data array layout) is used in both single-core and multicore architectures. As far as the tiling is concerned, the experimental results indicate that the decrease of the misses does not always improve the performance because there is a trade-off between the tile size and the addressing instructions. According to the experimental results, as far as multicore architectures are concerned, there is no linear relation between the performance and the number of the cores, because of the limited memory bandwidth. vii

8 viii

9 ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ...1 ΚΕΦΑΛΑΙΟ 1: ΑΛΓΟΡΙΘΜΟΣ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΥ ΠΙΝΑΚΑ ΕΠΙ ΔΙΑΝΥΣΜΑ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ Ο αλγόριθμος του Πολλαπλασιασμού Πίνακα επί Διάνυσμα Αρχιτεκτονικές Εκτέλεσης του Πολλαπλασιασμού Πίνακα επί Διάνυσμα Μονάδες Επεξεργασίας Γραφικών Ενσωματωμένοι Επεξεργαστές Επεξεργαστές Γενικού Σκοπού...10 ΚΕΦΑΛΑΙΟ 2: ΥΠΑΡΧΟΥΣΕΣ ΜΕΘΟΔΟΛΟΓΙΕΣ Πολλαπλασιασμός Πίνακα επί Διάνυσμα σε Αρχιτεκτονικές Πολυεπεξεργαστών Πολλαπλασιασμός Πίνακα επί Διάνυσμα σε Μονάδες Επεξεργασίας Γραφικών Πολλαπλασιασμός Πίνακα επί Διάνυσμα σε Αραιούς (Sparse) Πίνακες...19 ΚΕΦΑΛΑΙΟ 3: ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΚΑΙ ΕΡΓΑΛΕΙΑ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΑΝ Αρχιτεκτονικές που χρησιμοποιήθηκαν Desktop PC Intel Core 2 Duo E Desktop PC Intel Core 2 Duo T Desktop PC Intel i7-3930κ(6 πυρήνες) Virtex-5 FPGA Microblaze Embedded Processor (Xilinx FPGA) Εργαλεία που χρησιμοποιήθηκαν SimpleScalar Valgrind...31 ΚΕΦΑΛΑΙΟ 4: ΠΡΟΤΕΙΝΟΜΕΝΗ ΜΕΘΟΔΟΛΟΓΙΑ Ενσωματωμένοι επεξεργαστές Χρονοπρογραμματισμός με χρήση νέου τρόπου αποθήκευσης του πίνακα στην κύρια μνήμη(data array layout) Αξιοποίηση αρχείου καταχωρητών (RF) Αξιοποίηση κρυφής μνήμης δεδομένων L Αξιοποίηση κρυφής μνήμης σεδομένων L ix

10 4.1.2 Χρονοπρογραμματισμός με χρήση του row-wise τρόπου αποθήκευσης του πίνακα στην κύρια μνήμη Μονοπύρηνοι επεξεργαστές γενικού σκοπού Χρονοπρογραμματισμός με χρήση νέου τρόπου αποθήκευσης του πίνακα (data array layout) Αξιοποίηση αρχείου καταχωρητών (RF) Αξιοποίηση συνόλου εντολών (instruction set) της μονάδας SIMD Αξιοποίηση κρυφής μνήμης δεδομένων L1 και L Πολυπύρηνοι επεξεργαστές γενικού σκοπού...53 ΚΕΦΑΛΑΙΟ 5: ΠΕΙΡΑΜΑΤΙΚΗ ΑΞΙΟΛΟΓΗΣΗ Virtex-5 FPGA Microblaze Embedded Processor Intel Core 2 Duo E Intel Core 2 Duo T Intel i7-3930k (6 πυρήνες)...65 ΣΥΜΠΕΡΑΣΜΑΤΑ...71 ΒΙΒΛΙΟΓΡΑΦΙΑ...73 x

11 xi

12 ΕΙΣΑΓΩΓΗ Στην παρούσα διπλωματική εργασία έγινε υλοποίηση και πειραματική αξιολόγηση μιας μεθοδολογίας [1] η οποία έχει αναπτυχθεί στο Εργαστήριο Ολοκληρωμένων Κυκλωμάτων και αφορά τη βελτιστοποίηση του Πολλαπλασιασμού Πίνακα επί Διάνυσμα (ΠΠΔ) σε μονοπύρηνους και πολυπύρηνους επεξεργαστές. Τα παραπάνω έγιναν σε ενσωματωμένους και γενικού σκοπού επεξεργαστές και συγκεκριμένα χρησιμοποιήθηκαν (α) ο ενσωματωμένος επεξεργαστής Microblaze του Virtex 5 FPGA της Xilinx, (β) οι γενικού σκοπού επεξεργαστές Intel Core 2 Duo E6065 και Τ6600 και ο Intel i7-3930k. Η προτεινόμενη μεθοδολογία βασίζεται στην αξιολόγηση όλων των παραμέτρων μαζί και όχι στη βελτιστοποίηση για κάθε παράμετρο ξεχωριστά. Στο πρώτο Κεφάλαιο παρουσιάζεται ο αλγόριθμος του Πολλαπλασιασμού Πίνακα επί Διάνυσμα και γίνεται μια αρχική αναφορά στα προβλήματα που εμφανίζονται κατά τη βελτιστοποίησή του. Επίσης γίνεται μια γενική παρουσίαση των αρχιτεκτονικών στις οποίες υλοποιείται ο αλγόριθμος. Στο δεύτερο Κεφάλαιο παρουσιάζονται προηγούμενες μελέτες που είναι σχετικές με το αντικείμενο της παρούσας διπλωματικής εργασίας. Όσον αφορά στις πολυπύρηνες αρχιτεκτονικές, οι περισσότερες μελέτες αφορούν στη βελτιστοποίηση του αλγορίθμου σε συστάδα επεξεργαστών (clusters) και σε μονάδες επεξεργασίας γραφικών (GPUs) ενώ όσον αφορά στις μονοπύρηνες αρχιτεκτονικές, οι περισσότερες μελέτες αφορούν στον Πολλαπλασιασμό Αραιού Πίνακα επί Διάνυσμα (Sparse ΠΠΔ) και στον Πολλαπλασιασμό Συμμετρικού Πίνακα επί Διάνυσμα (Symmetric ΠΠΔ). Στο τρίτο Κεφάλαιο παρουσιάζονται οι αρχιτεκτονικές και τα εργαλεία που χρησιμοποιήθηκαν. Τα εργαλεία είναι τα SimpleScalar και Valgrind ενώ οι αρχιτεκτονικές είναι οι επεξεργαστές γενικού σκοπού Intel Core 2 Duo E6065 και Τ6600, ο Intel i7-3930k και ο ενσωματωμένος επεξεργαστής ειδικού σκοπού Microblaze από το Virtex-5 FPGA (Xilinx). Στο τέταρτο Κεφάλαιο παρουσιάζεται και αναλύεται η μεθοδολογία βελτιστοποίησης που αξιολογήθηκε πειραματικά. Η ανάπτυξη της μεθοδολογίας αφορά σε μονοπύρηνες και πολυπύρηνες αρχιτεκτονικές επεξεργαστών γενικού σκοπού και ενσωματωμένων επεξεργαστών. Για πρώτη φορά προτείνεται η αξιοποίηση της συσχέτισης της μνήμης για τη βελτιστοποίηση 1

13 του αλγορίθμου. Η μεθοδολογία [1] έχει υποβληθεί προς δημοσίευση στο περιοδικό International Journal of Parallel Processing. Στο πέμπτο Κεφάλαιο παρουσιάζονται τα πειραματικά αποτελέσματα της εφαρμογής της προτεινόμενης μεθοδολογίας στις προαναφερθείσες αρχιτεκτονικές. Τα αποτελέσματα συγκρίνονται με την state-of-the-art βιβλιοθήκη ATLAS (Automatically Tuned Linear Algebra Software) και παρουσιάζουν βελτίωση 30%. Κλείνοντας, στην παράγραφο Συμπεράσματα παρουσιάζονται τα αποτελέσματα της εργασίας. Θα ήθελα να εκφράσω τις ευχαριστίες μου στον Επιβλέποντά μου Ομότιμο Καθηγητή κ. Γκούτη για την υποστήριξη και τη συμπαράστασή του σε όλο το διάστημα των σπουδών μου και ιδιαίτερα στα πλαίσια της διπλωματικής μου εργασίας. Είναι από τους καθηγητές που μας εμπνέουν και ακόμα και σε αυτή τη δύσκολη χρονική περίοδο μας δίνουν ελπίδα. Είναι τιμή μου που δούλεψα μαζί του και τον ευχαριστώ πολύ που μου έδωσε αυτήν την ευκαιρία. Επίσης θα ήθελα να ευχαριστήσω θερμά τον Δρ. Κελεφούρα για τη βοήθεια και την καθοδήγησή του. Η υπομονή του και η καλή του διάθεση με βοήθησαν στην εκπόνηση της παρούσας εργασίας και ο ίδιος αποτέλεσε πηγή γνώσης για μένα. 2

14 ΚΕΦΑΛΑΙΟ 1 Ο ΑΛΓΟΡΙΘΜΟΣ ΤΟΥ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΥ ΠΙΝΑΚΑ ΕΠΙ ΔΙΑΝΥΣΜΑ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ Στην παρούσα διπλωματική εργασία έγινε υλοποίηση και πειραματική αξιολόγηση της μεθοδολογίας [1] για την βελτιστοποίηση του αλγορίθμου Πολλαπλασιασμού Πίνακα επί Διάνυσμα και την πειραματική αξιολόγησή της σε μονοπύρηνες και πολυπύρηνες αρχιτεκτονικές. Η μεθοδολογία εκμεταλλεύεται το σύνολο των χαρακτηριστικών της αρχιτεκτονικής που χρησιμοποιείται. Τα χαρακτηριστικά που αξιολογούνται είναι η ιεραρχία της μνήμης, το μέγεθος της κρυφής μνήμης, ο βαθμός συσχέτισης κάθε επιπέδου της κρυφής μνήμης, η καθυστέρηση της μνήμης και το πλήθος των πυρήνων. Σκοπός της μεθοδολογίας είναι η βελτιστοποίηση με βάση όλες τις παραμέτρους μαζί και όχι καθεμία ξεχωριστά. Τα εργαλεία Valgrind και SimpleScalar χρησιμοποιούνται για την καταμέτρηση των εντολών που εκτελούνται καθώς επίσης και των προσβάσεων στη μνήμη και των misses. Για την πειραματική αξιολόγηση χρησιμοποιούνται (α) ο ενσωματωμένος επεξεργαστής Microblaze του Virtex 5 FPGA της Xilinx και (β) οι γενικού σκοπού επεξεργαστές οι επεξεργαστές Intel Core 2 Duo E6065 και Τ6600 και ο Intel i7-3930k.. Όσον αφορά στους επεξεργαστές γενικού σκοπού, χρησιμοποιείται και η SIMD μονάδα. 1.1 Ο αλγόριθμος του Πολλαπλασιασμού Πίνακα επί Διάνυσμα Η βελτιστοποίησή του αλγορίθμου Πολλαπλασιασμού Πίνακα επί Διάνυσμα (ΠΠΔ) έγκειται στην επιτάγχυνση της εκτέλεσής του. Η πολυπλοκότητα του αλγορίθμου είναι O(MxN) και η 3

15 εκτέλεσή του εξαρτάται πολύ από τη χρησιμοποίηση της ιεραρχικής μνήμης. Όταν πολλαπλασιάζεται ένας πίνακας ΜxN με ένα διάνυσμα, το διάνυσμα θα χρησιμοποιηθεί τόσες φορές όσες είναι οι γραμμές του πίνακα, δηλαδή υπάρχει επαναχρησιμοποίηση του διανύσματος M φορές. Ως εκ τούτου, ο επεξεργαστής καλεί το διάνυσμα X από τη μνήμη Μ φορές. Στη χειρότερη περίπτωση, το διάνυσμα θα πρέπει να διαβαστεί από την κύρια μνήμη M φορές με αποτέλεσμα να καθυστερήσει πολύ η εκτέλεση του αλγορίθμου. Σε κάθε περίπτωση, όταν το διάνυσμα Χ δεν διατηρείται στην κρυφή μνήμη πρώτου επιπέδου L1, τότε οι μετακινήσεις στη μνήμη αυξάνονται και προκαλούν μεγάλη χρονική καθυστέρηση στην εκτέλεση του αλγορίθμου. Για να αξιοποιηθεί πλήρως το διάνυσμα Χ θα πρέπει κάθε στοιχείο του να κρατηθεί σε έναν καταχωρητή και στη συνέχεια να πολλαπλασιαστεί με όλα τα στοιχεία της αντίστοιχης στήλης. Σε αυτήν την περίπτωση το διάνυσμα Χ επαναχρησιμοποιείται πλήρως (πλήρες reuse) αλλά κάθε ενδιάμεσο αποτέλεσμα θα πρέπει να αποθηκευτεί και να διαβαστεί από την μνήμη τόσες φορές όσες είναι οι προσθέσεις δηλαδή τα ενδιάμεσα αποτελέσματα δεν καταναλώνονται όταν παράγονται (ελάχιστο production-consumption). Τότε, μεγιστοποιούνται οι μετακινήσεις του διανύσματος Υ. Ως εκ τούτου, χρειάζεται μια λύση που θα ικανοποιεί και τους δύο περιορισμούς με βέλτιστο τρόπο. Ένας άλλος πολύ σημαντικός παράγοντας που επιβαρύνει χρονικά την εκτέλεση του αλγορίθμου είναι ότι ο πίνακας Α δεν επαναχρησιμοποιείται. Σε αντίθεση, για παράδειγμα, με τον αλγόριθμο του Πολλαπλασιασμού Πίνακα επί Πίνακα (ΠΠΠ), επειδή στον ΠΠΔ ο πίνακας Α δεν επαναχρησιμοποιείται, υπάρχουν λιγότερα περιθώρια για βελτίωση. Συγκεκριμένα, η μόνη βελτίωση που μπορεί να επιτευχθεί είναι μέσω της αξιοποίησης των συνεχόμενων στη θέση μνήμης δεδομένων. Όταν ο επεξεργαστής ζητά ένα δεδομένο από τη μνήμη, τότε αν το δεδομένο δεν βρίσκεται στην κρυφή μνήμη, τότε το μπλοκ της κύριας μνήμης που περιέχει το δεδομένο γράφεται στην κρυφή μνήμη. Η βελτίωση επιτυγχάνεται όταν ο αλγόριθμος είναι γραμμένος κατά τέτοιο τρόπο ώστε να αξιοποιήσει όσο το δυνατόν περισσότερη και αν είναι δυνατόν όλη την πληροφορία που βρίσκεται στο μπλοκ, με σκοπό να το αξιοποιήσει πλήρως και αφού ο πίνακας Α δεν επαναχρησιμοποιείται, να μην το ξαναχρειαστεί και να μην το ξαναζητήσει από την κύρια μνήμη. Αν όμως ο αλγόριθμος διαβάζει ένα δεδομένο από κάθε μπλοκ της κύριας μνήμης κάθε φορά, τότε μεγιστοποιούνται οι μετακινήσεις στη μνήμη. Πρέπει να σημειωθεί ότι τα δεδομένα του πίνακα Α είναι πολύ περισσότερα από τα δεδομένα των διανυσμάτων Χ και Υ και η εγγραφή δεδομένων του πίνακα Α στην κρυφή μνήμη γίνεται πάνω 4

16 στα υπάρχοντα δεδομένα. Ως εκ τούτου, η ανάγνωση των δεδομένων του πίνακα Α έχει ως αποτέλεσμα να αυξάνονται οι μετακινήσεις των δεδομένων των διανυσμάτων Χ και Υ. Το κατάλληλο scheduling θα πρέπει να λαμβάνει υπόψη τις μετακινήσεις στην μνήμη, την επαναχρησιμοποίηση των δεδομένων και την παραγωγή και κατανάλωση των ενδιάμεσων αποτελεσμάτων. Επίσης, πρέπει να ληφθεί υπόψη ο χρόνος εκτέλεσης των εντολών καθώς και αυτός μεταβάλεται ανάλογα με το scheduling. Για να επιτευχθεί ο βέλτιστος χρόνος εκτέλεσης, θα πρέπει τα χαρακτηριστικά του αλγορίθμου να συνταιριάξουν με την αρχιτεκτονική στην οποία θα εκτελεστεί, πρόκειται δηλαδή για software and hardware matching. Λαμβάνοντας υπόψη τις παραμέτρους του αλγορίθμου και της αρχιτεκτονικής, ο χώρος της διερεύνησης είναι τάξεις μεγέθους μικρότερος και χρειάζεται να διερευνηθεί μόνο ένα μικρό πλήθος πιθανών λύσεων. Όσον αφορά στις πολυπύρηνες αρχιτεκτονικές, πρέπει να σημειωθεί ότι η απόδοση του αλγορίθμου περιορίζεται τόσο από την καθυστέρηση όσο και το εύρος ζώνης της της κύριας μνήμης. Οι state of the art (SOA) βιβλιοθήκες για την γραμμική άλγεβρα, όπως είναι η ATLAS (Automatically Tuned Linear Algebra Software) με την οποία συγκρίνεται και η απόδοση του αλγορίθμου που υλοποιεί την προτεινόμενη μεθοδολογία σε επεξεργαστές γενικού σκοπού, έχουν μεγάλο χώρο δερεύνησης καθώς εξετάζουν πολλά διαφορετικά εκτελέσιμα και επιλέγουν το πιο γρήγορο. Η βιβλιοθήκη ATLAS είναι ένα λογισμικό που παρέχει τη βέλτιστη απόδοση στην αρχιτεκτονική στην οποία καλείται να υλοποιήσει τον αλγόριθμο εφαρμόζοντας εμπειρικές μεθόδους [42]. Τέτοιες βιβλιοθήκες λαμβάνουν υπόψη τις παραμέτρους ξεχωριστά και όχι όλες μαζί, δεν τις αντιμετωπίζουν δηλαδή σαν ένα πρόβλημα. Με αυτόν τον τρόπο όμως παραβλέπονται οι εξαρτήσεις που υπάρχουν. Σε αυτό υπερτερεί η προτεινόμενη μεθοδολογία και επιτυγχάνει 30% βελτίωση σε σχέση με τη SOA βιβλιοθήκη ATLAS. 1.2 Αρχιτεκτονικές Εκτέλεσης του ΠΠΔ Μονάδες Επεξεργασίας Γραφικών Ιδιαίτερα η χρησιμότητα του ΠΠΔ στα γραφικά του υπολογιστή, έχει ως αποτέλεσμα να έχει γίνει πολύ έρευνα σχετικά με τη βελτιστοποίηση του αλγορίθμου σε Μονάδες Επεξεργασίας 5

17 Γραφικών (Graphics Processing Unit, GPU). Η GPU είναι ένα ηλεκτρονικό κύκλωμα σχεδιασμένο έτσι ώστε να επιταγχύνει τη δημιουργία των εικόνων στην οθόνη. Χρησιμοποιείται σε ενσωματωμένα συστήματα, στα κινητά τηλέφωνα, στους προσωπικούς υπολογιστές, σε workstations και σε κονσόλες παιχνιδιών. Διαχειρίζεται τα γραφικά με πολύ αποδοτικό τρόπο γιατί έχει μεγάλο βαθμό παραλληλίας (Εικόνα 1.1). Ως εκ τούτου, οι GPUs είναι πιο αποδοτικές από την κεντρική μονάδα επεξεργασίας (Central Processing Unit, CPU) όταν χρειάζεται να διαχειριστεί μεγάλο όγκο δεδομένων παράλληλα [38]. Από το 2006 έχει εισαχθεί η έννοια του Υπολογισμού Γενικού Σκοπού σε Μονάδες Επεξεργασίας Γραφικών (General-purpose computing on Graphics Processing Units, GPGPUs ή GP 2 Us). Η πλατφόρμα υπολογισμού CUDA (Compute Unified Device Architecture) της Nvidia είναι το πρώτο μοντέλο προγραμματισμού GPU και μέσω αυτής μπορεί ο προγραμματιστής να χρησιμοποιήσει τις δυνατότητες της GPU για να εκτελέσει αλγορίθμους γενικού σκοπού. Αργότερα αναπτύχθηκε από το Khronos Group το πλαίσιο ανάπτυξης λογισμικού OpenCL (Open Computing Language) με το οποίο ο προγραμματιστής μπορεί να δημιουργήσει ένα ενιαίο πρόγραμμα το οποίο να εκτελείται σε ετερογενείς αρχιτεκτονικές, δηλαδή αρχιτεκτονικές που αποτελούνται από CPUs, GPUs, DSPs και άλλους επεξεργαστές. Οι GPUs διαφέρουν από τις CPUs ως προς την παραλληλία. Η αρχιτεκτονική των GPUs είναι τέτοια ώστε να εκτελούν αργά πολλά παράλληλα νήματα ταυτόχρονα με αποτέλεσμα να επιτυγχάνει υψηλό throughput, σε αντίθεση με την αρχιτεκτονική των CPUs που εκτελεί γρήγορα ένα νήμα κάθε φορά [12] [5] [13] [40]. Εικόνα 1.1: Η GPU έχει υψηλότερο βαθμό παραλληλίας από τη CPU. 6

18 Ωστόσο, η παρούσα διπλωματική εργασία δεν έχει στόχο την ανάπτυξη αλγορίθμου σε GPU αλλά την ανάπτυξη αλγορίθμου σε CPU κατά τέτοιον τρόπο ώστε να εκμεταλλεύεται βέλτιστα την αρχιτεκτονική της. Είναι φανερό ότι η μεθοδολογία μπορεί να επεκταθεί και σε GPUs καθώς οι GPUs και οι CPUs παρουσιάζουν κοινά χαρακτηριστικά. Στη παρούσα διπλωματική εργασία χρησιμοποιούνται μονοπύρηνη και πολυπύρηνη αρχιτεκτονική με επεξεργαστές γενικού σκοπού καθώς και μονοπύρηνη αρχιτεκτονική με ενσωματωμένο επεξεργαστή Ενσωματωμένοι Επεξεργαστές Οι ενσωματωμένοι επεξεργαστές, διαφέρουν από τους επεξεργαστές γενικού σκοπού ως προς τα εξής [48]: οι ενσωματωμένοι επεξεργαστές ανήκουν σε συστήματα ειδικού σκοπού οι ενσωματωμένοι επεξεργαστές είναι σχεδιασμένοι έτσι ώστε να εξυπηρετούν τις ανάγκες της εφαρμογής για την οποία χρησιμοποιούνται (πχ. Δίκτυα) οι επεξεργαστές γενικού σκοπού ακολουθούν την αιχμή της τεχνολογίας ενώ οι ενσωματωμένοι επεξεργαστές έχουν πιο απλή σχεδίαση Οι πιο δημοφιλείς ενσωματωμένοι επεξεργαστές είναι οι ARM, PowerPC και MIPS. Στη συνέχεια θα γίνει μια συνοπτική αναφορά σε καθέναν από αυτούς. Οι ενσωματωμένοι επεξεργαστές της ARM διακρίνονται στους ARM Cortex Application Processors που χρησιμοποιούνται σε συσκευές διαδικτύου όπως είναι για παράδειγμα τα Smartphones, τα Netbooks και τα ebook Readers, στους ARM Cortex Real-time Embedded Processors που χρησιμοποιούνται για εφαρμογές πραγματικού χρόνου, όπως είναι για παράδειγμα τα αυτόματα φρένα των αυτοκινήτων (Anti-lock Break System, ABS), στους ARM Cortex Embedded Processors που αποτελούν φθηνή λύση για εφαρμογές ειδικού σκοπού, όπως είναι οι μικροελεγκτές, οι έξυπνοι αισθητήρες και συσκευές μικτού σήματος, και στους ARM Specialist Processors που διακρίνονται στους SecurCore TM που χρησιμοποιούνται για εφαρμογές που απαιτούν υψηλή ασφάλεια και στους FPGA Cores που χρησιμοποιούνται στις FPGA (Fieldprogrammable gate array) συσκευές της Altera [37]. Στη Εικόνα 1.2 φαίνεται η αρχιτεκτονική του επεξεργαστή Cortex A5, που ανήκει στην πρώτη κατηγορία και είναι μικρός, χαμηλού κόστους και χαμηλής κατανάλωσης. 7

19 Εικόνα 1.2: Ο ενσωματωμένος επεξεργαστής ARM Cortex A5. [35] Ο PowerPC (Performance Optimization With Enhanced Risc Performace Computing) είναι ένας επεξεργαστής περιορισμένου συνόλου εντολών που δημιουργήθηκε το 1991 υπό την αιγίδα των εταιρειών Apple, IBM και Motorola (Apple-IBM-Motorola, AIM) [41]. Ενώ αρχικά σχεδιάστηκε ως επεξεργαστής για προσωπικούς υπολογιστές, τελικά εδραιώθηκε ως ενσωματωμένος επεξεργαστής υψηλών αποδόσεων. Οι επεξεργαστές που ανήκουν στην οικογένεια του PowerPC χρησιμοποιούνται σε πλήθος ευρέως σε ελεγκτές του αυτοκινήτου, σε συσκευές δικτύου, στη ρομποτική, για παράδειγμα το ρομπότ ASIMO της HONDA χρησιμοποιεί επεξεργαστή PowerPC [39], και σε FPGA της Xilinx. Χρησιμοποιείται επίσης και σε πλήθος άλλων εφαρμογών. Στην Εικόνα 1.3 φαίνεται η 64bit αρχιτεκτονική του πυρήνα του PowerPC. 8

20 Εικόνα 1.3: Η 64bit αρχιτεκτονική του πυρήνα του PowerPC [39]. Ο επεξεργαστής MIPS (Microprocessor without Interlocked Pipeline Stages) είναι ένας επεξεργαστής περιορισμένου συνόλου εντολών που δημιουργήθηκε το 1985 από την ομάδα του John L. Hennesy στο Πανεπιστήμιο του Στάνφορντ. Χρησιμοποιείται σε πλήθος εφαρμογών όπως είναι τα δίκτυα, οι τηλεπικοινωνίες, τα βιντεοπαιχνίδια και οι κονσόλες για βιντεοπαιχνίδια, οι εκτυπωτές, η ψηφιακή τηλεόραση και οι modem συσκευές. Χρησιμοποιείται επίσης σε FPGA συσκευές για να επιτευχθεί υψηλή απόδοση σε εφαρμογές ειδικού σκοπού. [43] [22] Στις FPGA συσκευές εκτός από hard επεξεργαστής, όπως είναι ο ARM και ο PowerPC που προαναφέρθηκαν, μπορεί να υπάρχει και soft επεξεργαστής, όπως είναι ο Microblaze της Xilinx που χρησιμοποιείται σε FPGA συσκευές της ίδιας εταιρείας. Ενώ η αρχιτεκτονική του hard επεξεργαστή είναι δεδομένη, η αρχιτεκτονική του soft επεξεργαστή αντίθετα εξαρτάται από τον προγραμματιστή. Χρησιμοποιώντας το εργαλείο ανάπτυξης Embedded Development Kit (EDK) της Xilinx, ο προγραμματιστής ορίζει την αρχιτεκτονική του επεξεργαστή που θέλει να χρησιμοποιήσει και γράφει τον κώδικα που θέλει να τρέξει σε αυτόν [11]. 9

21 1.2.3 Επεξεργαστές Γενικού Σκοπού Οι επεξεργαστές γενικού σκοπού, όπως ο Intel Core 2 Duo Ε6550, Τ6600 και i7-3930κ που χρησιμοποιήθηκαν, βρίσκουν εφαρμογή σε πολλά υπολογιστικά συστήματα όπως είναι οι προσωπικοί υπολογιστές. Η βασική προτεραιότητα ενός επεξεργαστή γενικού σκοπού είναι η ταχύτητα υπολογισμού και για αυτό το λόγο στους γενικού σκοπού επεξεργαστές ενσωματώνεται η πιο σύγχρονη τεχνολογία και οι πιο σύγχρονες τεχνικές. Οι σύγχρονοι επεξεργαστές γενικού σκοπού αποτελούνται από περισσότερους από έναν πυρήνες, όπως για παράδειγμα ο i7 που χρησιμοποιήθηκε στα πλαίσια της παρούσας διπλωματικής εργασίας. Το λειτουργικό σύστημα αναλαμβάνει να μοιράζει τα νήματα των διεργασιών στους πυρήνες αλλά η δυνατότητα αυτή δίνεται και στον προγραμματιστή όσον αφορά τη δική του εφαρμογή εφόσον αυτό είναι απαραίτητο. 10

22 ΚΕΦΑΛΑΙΟ 2 ΥΠΑΡΧΟΥΣΕΣ ΜΕΘΟΔΟΛΟΓΙΕΣ Όσον αφορά στη βελτιστοποίηση του αλγορίθμου του Πολλαπλασιασμού Πυκνού Πίνακα επί Διάνυσμα σε μονοπύρηνες αρχιτεκτονικές δεν έχουν δημοσιευτεί μελέτες ενώ όσον αφορά σε πολυπύρηνες αρχιτεκτονικές έχουν γίνει μελέτες αλλά πολύ λίγες. Όσον αφορά στις πολυπύρηνες αρχιτεκτονικές, οι περισσότερες μελέτες αφορούν στη βελτιστοποίηση του αλγορίθμου σε συστάδα επεξεργαστών (clusters) και σε μονάδες επεξεργασίας γραφικών (GPUs) ενώ όσον αφορά στις μονοπύρηνες αρχιτεκτονικές, οι περισσότερες μελέτες αφορούν στον Πολλαπλασιασμό Αραιού Πίνακα επί Διάνυσμα (Αραιού ΠΠΔ) και στον Πολλαπλασιασμό Συμμετρικού Πίνακα επί Διάνυσμα (Συμμετρικού ΠΠΔ). Ο αλγόριθμος του Πολλαπλασιασμού Πίνακα επί Διάνυσμα έχει επίσης υλοποιηθεί σε FPGA χρησιμοποιώντας εσωτερικούς buffers για την αποθήκευση του διανύσματος Υ και της εκάστοτε γραμμής του πίνακα Α, όπως φαίνεται και στην Εικόνα 2.1 [23]. 11

23 Εικόνα 2.1: Υλοποίηση του ΠΠΔ σε FPGA [23] 2.1 Πολλαπλασιασμός Πίνακα επί Διάνυσμα σε αρχιτεκτονικές πολυεπεξεργαστών Μια αποδοτική υλοποίηση του Πολλαπλασιασμού Πίνακα επί Διάνυσμα σε δυαδικό δέντρο (binary tree) (Εικόνα 2.1.1) έχει προταθεί [10]. Κάθε φύλλο του δέντρου συνδέεται σε μία τοπική μνήμη που περιέχει μια στήλη του πίνακα. Η απόδοση του αλγορίθμου είναι καλύτερη από την αντίστοιχη για την περίπτωση πλέγματος δέντρων (mesh of trees) (Εικόνα 2.1.2) και γραμμικής παράταξη (linear array) (Εικόνα 2.1.3). Η γραμμική παράταξη αποτελείται από πανομοιότυπους επεξεργαστές που συνδέονται γραμμικά μεταξύ τους. Σε αυτήν την περίπτωση κάθε επεξεργαστής λαμβάνει μία γραμμή του πίνακα. Εικόνα 2.1.1: Δυαδικό δέντρο [10] 12

24 Εικόνα 2.1.2: Πλέγμα δέντρων [10] Εικόνα 2.1.3: Γραμμική πράταξη [10] Το πλέγμα δέντρων είναι πιο γρήγορη αρχιτεκτονική από την προηγούμενη και αποτελείται από μια τετράγωνη τοποθέτηση των επεξεργαστών όπου κάθε γραμμή και στήλη του πλέγματος συνδέεται με ένα δέντρο. Επίσης εξετάζεται η περίπτωση όπου υπάρχει ένα συγκεκριμένο και μικρό πλήθος επεξεργαστών. Ο αλγόριθμος που αφορά στην γραμμική παράταξη τροποποιείται έτσι ώστε κάθε επεξεργαστής να λαμβάνει ένα συνεχόμενο πλήθος γραμμών και να το επεξεργάζεται ανά τετράγωνο μπλοκ ενώ ο αλγόριθμος που αφορά στο πλέγμα δέντρων τροποποιείται έτσι ώστε να λαμβάνει ένα τετράγωνο υποπίνακα και να τον επεξεργάζεται ανά γραμμή. Ο αλγόριθμος που αφορά στο δυαδικό δέντρο τροποποιείται έτσι ώστε κάθε φύλλο του δυαδικού δέντρου να λαμβάνει ένα σύνολο συνεχόμενων στηλών και να τις επεξεργάζεται ανά γραμμή. Η τελευταία περίπτωση είναι πιο αποδοτική από τις άλλες δύο. Οι τρεις βασικές προσεγγίσεις: προσανατολισμένη ως προς τη γραμμή (row-wise), προσανατολισμένη ως προς τη στήλη (column-wise) και προσανατολισμένη ως προς τετράγωνο μπλοκ (square block-wise) έχουν διερευνηθεί [8] όσον αφορά στη παραλληλοποίηση του Πολλαπλασιασμού Πίνακα επί Διάνυσμα. Σύμφωνα με [25] όσο πιο ισορροπημένη είναι η κατανομή των στοιχείων στους διαθέσιμους επεξεργαστές, τόσο καλύτερη είναι η απόδοση του αλγορίθμου. 13

25 Στην πρώτη περίπτωση (Εικόνα 2.1.4), κάθε διεργασία λαμβάνει μία ή περισσότερες γραμμές του πίνακα Α και ένα αντίγραφο του διανύσματος Χ και υπολογίζει ένα μέρος του διανύσματος Υ. Στη συνέχεια πρέπει κάθε διεργασία να επικοινωνήσει με τις υπόλοιπες διεργασίες για να τις ενημερώσει για το μέρος του διανύσματος Υ το οποίο έχει υπολογίσει έτσι ώστε κάθε διεργασία να έχει ένα ολόκληρο αντίγραφο του διανύσματος Υ. Η διαδικασία αυτή λέγεται all-gather. Ο αλγόριθμος τερματίζει όταν όλες οι διεργασίες έχουν ένα ενημερωμένο αντίγραφο του διανύσματος Υ. Στη δεύτερη περίπτωση (Εικόνα 2.1.5), κάθε διεργασία λαμβάνει μία ή περισσότερες συνεχόμενες στήλες του πίνακα Α και ένα μπλοκ από συνεχόμενα στοιχεία του διανύσματος Χ. Κάθε διεργασία υπολογίζει ενδιάμεσα αποτελέσματα του διανύσματος Υ οπότε στη συνέχεια πρέπει κάθε διεργασία να επικοινωνήσει με τις υπόλοιπες και να ανταλλάξουν πληροφορία έτσι ώστε τελικά η κάθε διεργασία να υπολογίσει ένα στοιχείο του διανύσματος Υ. Στην τρίτη περίπτωση (Εικόνα 2.1.6), κάθε διεργασία λαμβάνει ένα μπλοκ του πίνακα Α και μέσω αναδιανομής λαμβάνουν όλες οι διεργασίες το αντίστοιχο μπλοκ από συνεχόμενα στοιχεία του διανύσματος Χ που χρειάζονται για να υπολογίσουν ενδιάμεσα αποτελέσματα. Στη συνέχεια οι διεργασίες επικοινωνούν μεταξύ τους για να υπολογίσουν τα στοιχεία του διανύσματος Υ. Για την επικοινωνία των διεργασιών έχει προταθεί η υπολοίηση με χρήση του Message Passing Interface (MPI) [24]. Από τη σύγκριση των τριών προσεγγίσεων φαίνεται ότι η τρίτη είναι η πιο αποδοτική. Εικόνα 2.1.4: Προσέγγιση προσανατολισμένη ως προς τη γραμμή (row-wise) [8] 14

26 Εικόνα 2.1.5: Προσέγγιση προσανατολισμένη ως προς τη στήλη (column-wise) [8] Εικόνα 2.1.6: Προσέγγιση προσανατολισμένη ως προς προσανατολισμένη ως προς τετράγωνο μπλοκ (square block-wise) [8] Οι τρεις διαφορετικοί τρόποι προσέγγισης (row-wise, column-wise, square block-wise) έχουν εξεταστεί [20] για την υλοποίηση του αλγορίθμου του Πολλαπλασιασμού Πίνακα επί Διάνυσμα 15

27 σε πολυπύρηνες αρχιτεκτονικές χρησιμοποιώντας το OpenMP. Ωστόσο, δεν έχουν μεθοδολογία για να κρίνουν ποιος τρόπος είναι καλός και ποιος όχι, οπότε έχουν ψάξει όλους τους δυνατούς τρόπους. Η μεθοδολογία [1] δίνει θεωρητική λύση χωρίς να ψάχνει σε πολλές λύσεις. Κάθε διεργασία αναλαμβάνει τον υπολογισμό του αντίστοιχου υποπίνακα, ανάλογα με την προσέγγιση. Πέρα από το κόστος υπολογισμού υπάρχει και το κόστος της επικοινωνίας καθώς δύο ή περισσότερα νήματα έχουν πρόσβαση στην ίδια θέση μνήμης. Έχει δειχθεί ότι η columnwise προσέγγιση είναι η λιγότερο αποδοτική. Προτείνεται επίσης ένα μοντέλο πρόβλεψης της απόδοσης του αλγορίθμου που λαμβάνει υπόψη τις προσβάσεις στη μνήμη για κάθε μέγεθος πίνακα, πλήθος επεξεργαστών και για διαφορετικά χαρακτηριστικά του επεξεργαστή. Μια από τις πιο σημαντικές παράλληλες αρχιτεκτονικές είναι αυτή της συστάδας συμμετρικών πολυεπεξεργαστών (clusters of symmetric multiprocessors, SMP-clusters). Η αρχιτεκτονική αυτή αποτελείται από κόμβους που μοιράζονται κοινή μνήμη (shared memory nodes), αποτελούνται από πολλαπλούς επεξεργαστές και συνδέονται μεταξύ τους πολύ γρήγορα. Για το σχεδιασμό αποδοτικών αλγορίθμων έχει προταθεί [25] η χρήση του μοντέλου κnuma (κ-non- Uniform Memory Access) σύμφωνα με το οποίο ο συνολικά βέλτιστος αλγόριθμος επιτυγχάνεται αναπτύσσοντας βέλτιστους αλγορίθμους για κάθε επίπεδο της αρχιτεκτονικής χωριστά. Γενικά υπάρχουν δύο προσεγγίσεις για τα SMP-clusters, η μία αφορά στη χρήση μόνο MPI αγνοώντας τη κοινή μνήμη των κόμβων και η άλλη αφορά στη θεώρηση ότι υπάρχει μια γενικευμένη κοινή μνήμη και αγνοεί την ύπαρξη δικτύου. Προτείνεται λοιπόν η εκμετάλλευση της κοινής μνήμης στους κόμβους και η χρήση MPI για την επικοινωνία μεταξύ τους. Ειδικότερα όσον αφορά στον Πολλαπλασιασμό Πίνακα επί Διάνυσμα, διερευνάται η κατανομή των δεδομένων στους κόμβους. Η καλύτερη απόδοση επιτυγχάνεται με οριζόντιο διαμερισμό του πίνακα Α στους κόμβους, στη συνέχεια με μπλοκ και τέλος με κατακόρυφο διαμερισμό του πίνακα Α. Αν όμως υπάρχε περιορισμός στη διαθέσιμη μνήμη στους κόμβους τότε τα αποτελέσματα αυτά αντιστρέφονται. Ο συνδυασμός (Hybrid) του MPI όσον αφορά στην κατανεμημένη μνήμη και του OpenMP όσον αφορά στη κοινή μνήμη για την υλοποίηση του αλγορίθμου του Πολλαπλασιασμού Πίνακα επί Διάνυσμα σε παράλληλες αρχιτεκτονικές έχει προταθεί [29]. Η σημασία του συνδυασμού του OpenMP με το MPI επισημαίνεται [7] και προτείνεται η βιβλιοθήκη MultiCore SUPort 16

28 (MCSup) OpenMP για τον από κοινού εντοπισμό των νημάτων με τη μνήμη που χρησιμοποιούν, έτσι ώστε να αποφευχθεί η απομακρυσμένη πρόσβαση της μνήμης. Η απόδοση του αλγορίθμου του Πολλαπλασιασμού Αραιού Πίνακα επί Διάνυσμα περιορίζεται από τη χρονική επιβάρυνση που προκαλεί η επικοινωνία στις πολυπύρηνες αρχιτεκτονικές που χρησιμοποιούν το πρότυπο MPI [26]. Επειδή ο χρόνος που απαιτείται για την επικοινωνία είναι μεγαλύτερος από τον χρόνο που απαιτείται για τον υπολογισμό, προτείνεται η χρήση ενός ξεχωριστού νήματος για την επικοινωνία. Όσον αφορά στον αλγόριθμο του Πολλαπλασιασμού Συμμετρικού Αραιού Πίνακα επί Διάνυσμα, ένας νέος πολυνηματικός αλγόριθμος έχει προταθεί [9], ο οποίος επιτυγχάνει μείωση του απαιτούμενου εύρους ζώνης κατά 50%. Ο αλγόριθμος αυτός αφενός εκμεταλλεύεται τη συμμετρία των στοιχείων, αφετέρου αντιμετωπίζει τις συνθήκες ανταγωνισμού (race conditions) που προκύπτουν. Η απόδοση του αλγορίθμου του Πολλαπλασιασμού Αραιού Πίνακα επί Διάνυσμα στις σύγχρονες πολυπύρηνες αρχιτεκτονικές περιορίζεται από το εύρος ζώνης της μνήμης. Ως εκ τούτου, η χρήση πολλών νημάτων σε υψηλής συχνότητας επεξεργαστές μπορεί να μην επιφέρει την αναμενόμενη απόδοση αλλά αντίθετα να οδηγήσει σε κατανάλωση ενέργειας. Ένα μοντέλο πρόβλεψης της απόδοσης του αλγορίθμου σε σχέση με την κατανάλωση έχει προταθεί [16] έτσι ώστε ο αλγόριθμος να εκτελείται με το καλύτερο δυνατό τρόπο όσον αφορά αυτό το trade-off. 2.2 Πολλαπλασιασμός Πίνακα επί Διάνυσμα σε Μονάδες Επεξεργασίας Γραφικών Έχει δειχθεί [27] ότι υψηλή απόδοση του αλγορίθμου Πολλαπλασιασμού Πίνακα επί Διάνυσμα επιτυγχάνεται με πλήρη αξιοποίηση της fine-grained παραλληλίας των πολυπύρηνων GPUs. Για αυτό το λόγο έχει αναπτυχθεί ένας αυτο-ρυθμιζόμενος αυστηρά παράλληλος και ευέλικτος πυρήνας στον οποίο τα νήματα δουλεύουν μαζί όχι μόνο μέσα στα όρια ενός μπλοκ αλλά επίσης και ανάμεσα στα μπλοκ. Ανάλογα με το μέγεθος του πίνακα επιλέγονται περισσότερα νήματα ανά γραμμή (βέλτιστο για ψηλούς και αδύνατους πίνακες), περισσότερες γραμμές ανά νήμα (βέλτιστο για πολύ ψηλούς πίνακες) ή περισσότερα νήματα και περισσότερες στήλες (βέλτιστο για φαρδείς και παχείς πίνακες). 17

29 Η αλγόριθμος του Πολλαπλασιασμού Συμμετρικού Πίνακα επί Διάνυσμα έχει βελτιστοποιηθεί [21] για υλοποίηση σε GPUs και συμπεριλαμβάνεται στη βιβλιοθήκη MAGMA. Η βελτιστοποίηση του αλγορίθμου επιτυγχάνεται χρησιμοποιώντας την τεχνική του αποκλεισμού (blocking) και την τεχνική της συγχωνευμένης πρόσβασης στη μνήμη (Coalesced Memory Access). Σύμφωνα με το blocking, τα δεδομένα χωρίζονται σε μπλοκ έτσι ώστε να χωρούν σε ένα συγκεκριμένο επίπεδο της μνήμης και να μπορούν να επαναχρησιμοποιηθούν για να εκτελεστούν οι υπολογισμοί στους οποίους συμμετέχουν. Σύμφωνα με την Coalesced Memory Access, πρέπει να υπάρχει ένα μοτίβο πρόσβασης στη μνήμη έτσι ώστε να αξιοποιηθεί όσο το δυνατόν περισσότερο το διαθέσιμο εύρος ζώνης. Αυτό το μοτίβο βασίζεται στην παραλληλία και στην κατάλληλη ευθυγράμμιση των δεδομένων. Όταν τα δεδομένα δεν χωρούν σε ένα επίπεδο μνήμης, προτείνεται η τεχνική του επαναληπτικού αποκλεισμού (recursive blocking), το οποίο μοιάζει με το tiling με το οποίο ασχολείται η παρούσα εργασία. Επειδή ο αλγόριθμος του Πολλαπλασιασμού Συμμετρικού Πίνακα επί Διάνυσμα είναι πολύ κρίσιμος όσον αφορά στη γραμμική άλγεβρα, έχει γίνει πολύ έρευνα για την περαιτέρω (περισσότερο από τη MAGMA) βελτιστοποίησή του σε GPU αρχιτεκτονικές. Ο πυρήνας του αλγορίθμου περιορίζεται από το διαθέσιμο εύρος ζώνης της μνήμης. Επειδή η πρόσβαση στη μνήμη δεν γίνεται με τακτικό τρόπο λόγω της συμμετρίας του πίνακα, προτείνεται [2] ένας νέος τρόπος σχεδιασμού του πυρήνα. Ο σχεδιασμός των πυρήνων των GPUs γίνεται βάση δύο στρατηγικών. Η πρώτη αφορά στο πώς κατανέμονται τα μπλοκ στους SMs (per-block strategy) και η δεύτερη στο πώς ένα μπλοκ υφίσταται επεξεργασία μέσα στον SM (per-element strategy). Ο νέος σχεδιασμός ακολουθεί την πρώτη στρατηγική όπως και η βιβλιοθήκη MAGMA αλλά οργανώνει τις προσβάσεις στη μνήμη με πιο αποδοτικό τρόπο. Οι βασικές αρχές της νέας σχεδίασης είναι πρώτον, ο διαχωρισμός των διαγωνίων μπλοκ από τα μη διαγώνια και η ανάληψη του υπολογισμού τους από διαφορετικούς πυρήνες, δεύτερον, χρησιμοποιείται η τεχνική της προανάκλησης δεδομένων και τρίτον, χρησιμοποιούνται περισσότεροι καταχωρητές έτσι ώστε να μην αποθηκεύονται όλα τα μερικά γινόμενα στην κοινή μνήμη παρά μόνο εκείνα τα ολικά μερικά γινόμενα που προκύπτουν από το υπολογισμό ενός μπλοκ. Η υλοποίηση του αλγορίθμου του Πολλαπλασιασμού Αραιού Πίνακα επί Διάνυσμα σε GPU πρέπει να βασιστεί στη μείωση των ακανόνιστων προσβάσεων στη μνήμη για το διάνυσμα Χ, στην ομοιόμορφη κατανομή των δεδομένων στα νήματα, στη βελτίωση της ανάγνωσης του 18

30 πίνακα Α, στη μείωση της επιβάρυνσης που προκαλείται από την επιπλέον πληροφορία που απαιτείται για κάθε στοιχείο του πίνακα και στη δομή των δεδομένων [19]. Η χρήση των GPU έχει αποδειχθεί πολύ ευεργετική στην επιτάχυνση των υπολογιστικών πυρήνων της γραμμικής άλγεβρας πυκνών πινάκων. Πολλές αριθμητικές βιβλιοθήκες υψηλής αποδοτικότητας όπως CUBLAS, MAGMA, και CULA παρέχουν BLAS και LAPACK υλοποιήσεις στην GPU καθώς και υβριδικούς υπολογισμούς που με τη συμμετοχή και των δύο, CPU και GPU. Οι GPU συνήθως επιτυγχάνουν καλύτερη απόδοση από τις CPU για λειτουργίες υψηλής υπολογιστικής ισχύος, ειδικά για εκείνες που χαρακτηρίζονται από ένα συνηθισμένο πρότυπο πρόσβασης δεδομένων. Mια βελτιωμένη υλοποίηση του πυρήνα για τον πολλαπλασιασμό πίνακα επί διάνυσμα σε GPU έχει προταθεί [3]. Η στρατηγική σε επίπεδο μπλοκ είναι απλή και άμεση. Ο πίνακας εισόδου διαιρείται σε τετραγωνικά μπλοκ. Κάθε νήμα είναι υπεύθυνο για την επεξεργασία ενός αριθμού στοιχείων. Το μειονέκτημα αυτής της μεθοδολογίας είναι η εντατική χρησιμοποίηση των καταχωρητών, η οποία μπορεί να οδηγήσει σε χαμηλή χωρητικότητα. Ένα τελικό σχόλιο στην προτεινόμενη μεθοδολογία είναι ότι το τελικό αποτέλεσμα ενός στοιχείου στον τελικό πίνακα δεν ανήκει σε ένα νήμα. Τα νήματα χρησιμοποιούν κοινή μνήμη για να υπολογίσουν το τελικό αποτέλεσμα μέσω μιας απλής αφαιρετικής λειτουργίας. 2.3 Πολλαπλασιασμός Πίνακα επί Διάνυσμα σε Αραιούς (Sparse) Πίνακες Όσον αφορά στον αλγόριθμο του Πολλαπλασιασμού Αραιού Πίνακα επί Διάνυσμα, ορισμένοι τρόποι βελτιστοποίησης έχουν προταθεί [15]. Όσον αφορά στην πολυνηματική περίπτωση, η επίδραση του κοινού datapath από την κύρια μνήμη στα διαφορετικά στοιχεία επεξεργασίας (κοινό bus ή κοινός ελεγκτής μνήμης), η επίδραση της κοινής κρυφής μνήμης, και τα πλεονεκτήματα που μπορούν να παράσχουν οι δυνατότητες του NUMA στον πυρήνα έχουν εξεταστεί. Το κυρίαρχο πρόβλημα του πυρήνα Αραιού ΠΠΔ στις σύγχρονες αρχιτεκτονικές είναι το περιορισμένο εύρος ζώνης της μνήμης (bottleneck). Για αυτό το λόγο, οποιαδήποτε βελτιστοποίηση του πυρήνα πρέπει πρώτα να εστιάσει στο να ελαχιστοποιήσει την κυκλοφορία στην μνήμη. Αφότου αντιμετωπιστεί αυτό το πρόβλημα τότε το υπολογιστικό κομμάτι του πυρήνα μπορεί να γίνει σημαντικό και περαιτέρω βελτιστοποίηση με στόχο την μείωση των 19

31 υπολογισμών θα μπορούσε να αυξήσει την απόδοση. Οι σύγχρονοι μικροεπεξεργαστές δεν πάσχουν από το ακανόνιστες και έμμεσες αναφορές στο διάνυσμα εισόδου. Παρ όλα αυτά, αυτά τα χαρακτηριστικά του αλγορίθμου θα μπορούσαν ακόμα να δημιουργήσουν ένα περιορισμό στην απόδοση, αλλά για ένα συγκεκριμένο αριθμό πινάκων με σχεδόν τυχαία κατανομή μη μηδενικών στοιχείων. Ένα επιπρόσθετο πρόβλημα του πυρήνα, αλλά όχι κυρίαρχο, είναι η παρουσία πολλών πολύ μικρών γραμμών και σε αυτήν την περίπτωση η επιβάρυνση του βρόχου θα κυριαρχήσει του υπολογιστικού κομματιού του πυρήνα. Διάφορες στρατηγικές βελτιστοποίησης του αλγορίθμου Πολλαπλασιασμού Αραιού Πίνακα επί Διάνυσμα έχουν προταθεί [14]. Όσον αφορά στην υλοποίηση του αλγορίθμου σε πολυπύρηνες αρχιτεκτονικές, η μείωση της απαιτούμενης μνήμης έχει προταθεί [32]. Από προεπιλογή τα στοιχεία του πίνακα αντιπροσωπεύονται από αριθμούς κινητής υποδιαστολής διπλής ακρίβειας και ακέραιοι χρησιμοποιούνται για τα δεδομένα ευρετηρίου. Εάν η μήτρα έχει λιγότερο από 2 16 σειρές και στήλες, μικροί ακέραιοι αριθμοί είναι ικανοποιητικοί για τη διευθυνσιοδότηση. Έτσι κόβεται η μνήμη για τα στοιχεία του ευρετηρίου κατά το ήμισυ. Αριθμοί κινητής υποδιαστολής μονής ακρίβειας μπορούν να μειώσουν σημαντικά τη χρήση της μνήμης, αν η εφαρμογή επιτρέπει ανακριβείς υπολογισμούς. Για παράδειγμα, κατώτερη ακρίβεια είναι ικανοποιητική για την προετοιμασία μητρών, οι οποίες βοηθούν στη διαμόρφωση του συστήματος. Δεν κάνουμε την πραγματική αριθμητική μαζί τους [17]. Η κωδικοποίηση των δεδομένων έχει προταθεί [18] για τη μείωση της απαιτούμενης μνήμης. Βασικά η ιδέα συνίσταται στην μικρή αλλαγή της μορφής CSR (Compressed Sparse Row) για τη μείωση της μνήμης. Τα Δέλτα αποθηκεύονται αντί των δεικτών στήλης. Οι αποστάσεις μεταξύ ενός μη-μηδενικού και του επόμενου σε μια σειρά είναι μικρότεροι αριθμοί από ότι οι δείκτες. Συνεπώς τα Δέλτα αποθηκεύονται στο μικρότερο δυνατό αριθμό bytes. Οι εγγραφές εφαρμόζονται σε έναν πίνακα, ο οποίος κωδικοποιεί μονάδες Δέλτα. Οι δείκτες αποκωδικοποιούνται γρήγορα, γιατί ο πίνακας παραμένει στην κρυφή μνήμη. Οι μονάδες αντιπροσωπεύουν για κάθε τμήμα το μέγεθος των Δέλτα, τον αριθμό των μη-μηδενικών, το όφσετ του πρώτου μη-μηδενικού στοιχείου στη μονάδα και τα Δέλτα για τα επόμενα στοιχεία. Συνήθως τα τμήματα είναι οι σειρές, αλλά εάν μια σειρά περιέχει μια μεγάλη μερίδα μημηδενικών, το τμήμα είναι ένα μέρος της σειράς. Το αποθηκευτικό μέγεθος των Δέλτα μπορεί να ποικίλει από τμήμα σε τμήμα. Εάν τα Δέλτα ενός τμήματος είναι όλα εντός του 256, ένα μοναδικό byte είναι αρκετό για την κωδικοποίηση. Ως εκ τούτου η συμπίεση των δεικτών μιας 20

32 στήλης επιτυγχάνεται μέσω μικρότερων ακεραίων για τα Δέλτα από πλευράς μεγέθους και μήκους. Mια κωδικοποίηση των Δέλτα προσανατολισμένη ως προς τα byte έχει προταθεί [31]. Για τη DCSR μορφή τους, αντικαθιστούν τους πίνακες ευρετηρίου με μια λίστα από (εντολές, ορίσματα) ζεύγη. Τρία ζεύγη συσκευάζονται μαζί σε μια λέξη. Τρεις εντολές κωδικοποιούνται μαζί σε ένα byte, ενώ τα άλλα τρία bytes της λέξης είναι τα ορίσματα, αντιστοίχως τα Δέλτα. Χρησιμοποιούνται έξι διαφορετικοί κωδικοί εντολών. Οι μισοί από τους κωδικούς χρησιμοποιούνται για να κωδικοποιήσουν 2,3 ή 4 από τα γειτονικά μη-μηδενικά και αποθηκεύουν μοναχά το όφσετ του πρώτου μη-μηδενικού. Αυτό σημαίνει ότι αυτή η μορφή βελτίωσης είναι κατάλληλη για αραιές μήτρες με πολλές γειτονικές καταχωρήσεις. Ο σχεδιασμός επιτρέπει Δέλτα με διαφορετικά μήκη σε σειρές bytes. Μια καθορισμένη εντολή υποδεικνύει, πότε ένα ή περισσότερα bytes θα πρέπει να ερμηνεύονται σαν ορίσματα. Ακόμα μια άλλη εντολή υποδεικνύει μια νέα γραμμή, ενώ μια εντολή κωδικοποιεί ένα μόνο ευρετήριο. Πέρα από τη βασική ιδέα, συχνά σετ εντολών κώδικα από 6 οδηγίες εμφανίζονται σα συντομογραφία από μια ειδική μοναδική εντολή. Συνολικά η κωδικοποίηση Δέλτα πρέπει να επεξεργαστεί περισσότερες οδηγίες, αλλά οι απαιτήσεις μνήμης μειώνονται. Ο τελευταίος παράγοντας μειώνει το χρόνο λειτουργίας, στην περίπτωση μιας επαναληπτικής επίλυσης. Η προ-επεξεργασία χρειάζεται ένα μόνο πέρασμα μέσα από τη μήτρα (σε CSR μορφή) για να την κωδικοποιήσει. Εάν κάνουμε Δέλτα κωδικοποίηση και χρησιμοποιήσουμε αυτή τη διάταξη μια φορά, τότε δε θα είχε νόημα. Ο απλός λόγος είναι ότι, όταν μετακινούμαστε μέσα από τα στοιχεία και τα προ-επεξεργαζόμαστε, θα μπορούσαμε να έχουμε κάνει τον πολλαπλασιασμό ταυτόχρονα. Μήτρες με πολλές κοινές τιμές αποδίδουν καλύτερα, μόνο αν οι διακριτές τιμές καταλαμβάνουν μνήμη. Μια επέκταση στην CSR έχει προταθεί [18]. Η λεγόμενη «τιμή ευρετηρίασης» έχει επίσης πίνακες για τους δείκτες των γραμμών και των στηλών όπως με τη μορφή CSR. Αντί για σημεία κινητής υποδιαστολής, ο πίνακας τιμών διατηρεί δείκτες, που δείχνουν τις πραγματικές αξίες. Η νέα τιμή του πίνακα συγκεντρώνει διαφορετικά σημεία κινητής υποδιαστολής. Η μέθοδος απαιτεί πρόσθετη έμμεση αντιμετώπιση για την αποκωδικοποίηση των τιμών. Οι τιμές των δεικτών αναπαρίστανται από τον μικρότερο δυνατό αριθμό bytes. Η περικοπή του πίνακα τιμών πρέπει να υπερισχύσει της μνήμης που χρειάζεται για την ευρετηρίαση, κατά συνέπεια το μήκος του νέου πίνακα τιμών θα πρέπει να είναι μικρότερο από το ήμισυ του πίνακα 21

33 προέλευσης. Η CPU έχει ακόμα περισσότερα να επεξεργαστεί, αλλά εξακολουθεί να είναι μακριά από τον κορεσμό. Και πάλι η βελτίωση της απόδοσης επιτυγχάνεται με τη μείωση της απαιτούμενης μνήμης και είναι εφαρμόσιμη σε περίπτωση επαναληπτικής επίλυσης. Η πολυπλοκότητα της διαδικασίας συμπίεσης είναι γραμμική σχετικά ως προς τον αριθμό των μημηδενικών κάνοντας χρήση ενός πίνακα κατακερματισμού. Λαμβάνοντας υπόψη μια ορισμένη μορφή αποθήκευσης, οι σειρές διατάσσονται και ομαδοποιούνται με βάση την ομοιότητα των μηκών. Ο συνδυασμός της ομαδοποίησης δεδομένων και της αναδιάταξης μητρών ξεπερνά μερικώς τα μειονεκτήματα των CSR και ITPACK με την ελαχιστοποίηση της απόκλισης στήλης. Τα μπλοκ επεξεργάζονται μεμονωμένα. Αν ο κώδικας εκτελείται παράλληλα, πρέπει να δίνεται προσοχή στo διάνυσμα x. Επειδή ο x είναι μόνο για ανάγνωση, θα πρέπει να διατηρείται σε μια κοινή κρυφή μνήμη όλων των πυρήνων ή να αντιγράφεται εάν ο υπολογισμός έχει ένα διανεμημένο στυλ. Ο αλγόριθμο εξόρυξης με βάση τα χαρακτηριστικά έχει προταθεί (FEBA) [4]. Σχεδιάστηκε για να χρησιμοποιηθεί αποτελεσματικά μια μηχανή διανυσμάτων. Αυτό σημαίνει πως ενεργοποιεί το SIMD δηλαδή μια απλή εντολή διεξάγεται σε πολλαπλά δεδομένα σε μια χρονική στιγμή. Επομένως, η σχεδίαση του αλγόριθμου εξαναγκάζει το να γίνει το SIMD. Ο FEBA εξάγει σχεδόν πυκνά ορθογώνια μπλοκ, ύστερα σχεδόν πυκνές διαγώνιους και τρίτον σειρές που έχουν απομείνει με πολλά μη-μηδενικά. Στη συνέχεια, όλες οι δομές δεδομένων που υποβάλλονται σε επεξεργασία μεμονωμένα με τα συσχετιζόμενα στοιχεία των x και y διανυσμάτων. Τα μπλοκ που πλησιάζουν λαμβάνονται από κατώφλια. Αυτό σημαίνει πως η πυκνότητα των μημηδενικών στοιχείων πρέπει να είναι πάνω από μια ορισμένη αναλογία σε ένα μπλοκ. Ένα ορθογώνιο των τιμών των δεδομένων προσδιορίζεται κατά τα κατώφλια των σειρών και των στηλών. Οι δείκτες για τις εξαχθείσες σειρές και στήλες αποθηκεύονται μαζί με το εξαχθέν μπλοκ και αργότερα απευθύνονται στα σχετικά στοιχεία των διανυσμάτων. Το μέγεθος του μπλοκ επιλέγεται από το ποσό των καταχωρητών της μηχανής στόχου. Η εξόρυξη και η επεξεργασία σχεδόν πυκνών διαγώνιων λειτουργεί όπως πριν. Οι διαγώνιοι επιλέγονται, αν έχουν ένα ορισμένο ποσοστό μη-μηδενικών των συμπεριλαμβανομένων στοιχείων και υφίστανται επεξεργασία με τα αντίστοιχα μέρη των διανυσμάτων προέλευσης και προορισμού. Η εναπομείνασα μήτρα αποθηκεύεται πρώτη στο σύστημα ITPACK. Στη συνέχεια οι σειρές διατάσσονται κατά μειούμενο αριθμό μη-μηδενικών. Ύστερα κάποιες γραμμές αφαιρούνται, συγκεκριμένα αυτές που ο αριθμός των μη-μηδενικών τους είναι πάνω από ένα καθορισμένο 22

34 κατώφλι. Για κάθε γραμμή που αφαιρείται ένας πίνακας ευρετηρίου και ένας πίνακας τιμών δημιουργείται. Γραμμές με παρόμοιο μήκος αποτελούν ένα μπλοκ το οποίο αποθηκεύεται σε ένα ζεύγος μητρών AC και ΑΚ. Ως αποτέλεσμα έχουμε πολλά ζεύγη μητρών, τα οποία επεξεργάζονται μεμονωμένα. Ως εκ τούτου, αυτό το τροποποιημένο ITPACK σύστημα έχει ένα μειωμένο αριθμό μηδενικών στοιχείων. Συνολικά, τα πειράματα έδειξαν πως ο FEBA αποδίδει καλύτερα από τη CSR και την ITPACK μορφή αποθήκευσης. Τα αποτελέσματα μπορούν να εξηγηθούν εύκολα. Το ITPACK χρειάζεται περισσότερη μνήμη για μηδενικά στοιχεία και η CSR οδηγεί σε ακανόνιστες προσπελάσεις μνήμης. Η εξαγωγή χαρακτηριστικών χρειάζεται ένα σταθερό αριθμό περασμάτων για την προ-επεξεργασία, το καθένα στην σειρά των εναπομεινάντων μη-μηδενικών στοιχείων. Γι αυτό και εφαρμόζεται για επαναληπτικές επιλύσεις. Ο συντονισμός σε ζώνη χαμηλού επιπέδου ζώνη έρχεται συχνά με δυνατότητες βελτιστοποίησης στη διαδικασία μεταγλώττισης. Σε γενικές γραμμές, αυτό σημαίνει την ανακατάταξη ή την ομαδοποίηση οδηγιών, έτσι ώστε η εκτέλεση του πυρήνα να είναι γρηγορότερη. Ο συντονισμός σε χαμηλού επιπέδου ρύθμιση εφαρμόζεται ανεξάρτητα από βελτιωμένες δομές δεδομένων. Η μεταγλώττιση μητρών αφορά κυρίως τον έλεγχο της ροής και θέματα κρυφής μνήμης, όχι με τη χρήση του εύρους ζώνης της μνήμης [31]. Καλύτερη χρήση της κρυφής μνήμης και καλύτερη διαχείριση των προσπελάσεων μνήμης είναι οι παράγοντες, οι οποίοι βελτιώνουν την απόδοση. Η επέκταση-και-συμφόρηση ή η επέκταση βρόχων αναφέρεται στην τεχνική, όπου οι βρόχοι διανέμονται και οι οδηγίες από το κυρίως μέρος του βρόχου είναι σαφώς δηλωμένες τόσες φορές όσες και οι επαναλήψεις πριν. Ο μετασχηματισμένος κώδικας είναι περισσότερο ευέλικτος. Το μοντέλο σωληνωμένης εκτέλεσης μπορεί να αξιοποιηθεί καλύτερα, αν εξαφανιστούν οι εξαρτημένοι κλάδοι. Ως εκ τούτου οι παύσεις στη σωλήνωση έχουν καθυστέρηση. Σε συστήματα πολλαπλών πυρήνων, οι οδηγίες μπορούν να διανεμηθούν καλύτερα μεταξύ των πυρήνων. Μικρές μήτρες, οι οποίες εφαρμόζουν στην κρυφή μνήμη, έδειξαν σημαντικές βελτιώσεις στην απόδοση λόγω της επέκτασης βρόχων. Μεγαλύτερες μήτρες οδηγούν σε μειωμένες βελτιώσεις, λόγω των αστοχιών της κρυφής μνήμης και των επακόλουθων προσπελάσεων μνήμης. Εκτός από το σχετικό μέγεθος εισόδου στην κρυφή μνήμη, ο αριθμός των οδηγιών του επεκτεινόμενου βρόχου επηρεάζει την απόδοση. Ένας βρόχος μικρού μήκους προκαλεί περισσότερους κλάδους μεταξύ των επαναλήψεων και επιβραδύνει το σύστημα. Αυτό καθιστά την επέκταση-και- 23

35 συμφόρηση σχετικά αποτελεσματική, αν υπάρχει ένα επαρκής αριθμός επαναλήψεων [30]. Η δομή της μήτρας και ο μέσος αριθμός των μη-μηδενικών ανά σειρά μήτρας υποδεικνύει το επίπεδο της επέκτασης. Το επίπεδο αναφέρεται στον αριθμό των επαναλήψεων που μετασχηματίζονται. Βασικά, η επέκταση μπορεί να εφαρμοστεί είτε στις γραμμές είτε στις στήλες και εξαρτάται από τη μορφή αποθήκευσης. Για παράδειγμα, μια μήτρα δίνεται σε ομαδοποιημένη CSR μορφή και έχει 4,8 ή 12 μη-μηδενικά ανά σειρά. Λόγω μετασχηματισμών 4 συνεχόμενα μπλοκ οδηγιών μπορούν να αποσυνδεθούν από τον εσωτερικό βρόχο. Πέρα από αυτό, η ομαδοποιημένη CSR επιτρέπει επίσης την επέκταση εξωτερικού βρόχου. Η προανάκληση δεδομένων [data prefetch] περιγράφει το γεγονός, πως τα δεδομένα φορτώνονται στην κρυφή μνήμη πριν χρησιμοποιηθούν στην πραγματικότητα. Η φόρτωση δεδομένων από την κύρια μνήμη είναι πιο ακριβής απ την πρόσβαση στην κρυφή μνήμη. Έτσι η προανάκληση κρύβει μια λανθάνουσα κατάσταση. Εάν μια μονάδα έχει μια αστοχία κρυφής μνήμης, τότε η επόμενη μονάδα θα προσπαθήσει να διαβάσει δεδομένα από την ίδια γραμμή κρυφής μνήμης και θα έχει επίσης μια αστοχία. [28]. Η βασική ιδέα είναι η εξής: Για να μειωθούν οι κυρώσεις από τις αστοχίες, τα δεδομένα φορτώνονται στην κρυφή μνήμη σε τακτική βάση. Για παράδειγμα, μια γραμμή κρυφής μνήμης περιέχει 32 διπλές λέξεις από τιμές δεδομένων της μήτρας, οπότε μετά από κάθε 32 η λειτουργία σε στοιχεία της μήτρας η επόμενη γραμμή κρυφής μνήμης προανακαλείται. Δεδομένου ότι η CSR μορφή χρησιμοποιείται για τον Αραιοό ΠΠΔ εδώ, η επανάληψη των φορτώσεων των γραμμών της κρυφής μνήμης μπορούν μόνο να προσεγγιστούν. Η ιδέα υλοποιείται σε γλώσσα μηχανής και τροποποιεί την έξοδο του μεταγλωττιστή. Ο εσωτερικός βρόχος επεκτείνεται, εάν η σειρά είναι αρκετά μακριά. Μια οδηγία προανάκλησης τοποθετείται πριν από τον πρώτο πολλαπλασιασμό και θα εκτελεστεί πρόσθεση. Αυτή η οδηγία φορτώνει το επόμενο τμήμα δεδομένων της μήτρας. Μετά από κάθε 16 επεκταμένες οδηγίες μια επιπρόσθετη οδηγία γεμίζει τις γραμμές της κρυφής μνήμης με νέα δεδομένα ευρετηρίασης. Πρέπει να σημειωθεί ότι η επιτάχυνση μέσω της προανάκλησης επιτυγχάνεται μόνο αν η αρχιτεκτονική έχει πολλαπλές μονάδες φόρτωσης/αποθήκευσης. Το «μπλοκάρισμα» κρυφής μνήμης (cache blocking) είναι μια τεχνική, όπου τα δεδομένα μοιράζονται σε κομμάτια και κάθε ένα από αυτά φορτώνεται χωριστά μονομιάς σε ένα μπλοκ από γραμμές κρυφής μνήμης. Είναι σχεδιασμένο για να μειώσει τις αστοχίες της κρυφής μνήμης 24

36 και εξαναγκάζει χρονική και χωρική τοπικότητα. Έχει προταθεί [32] η εφαρμογή της τεχνικής αυτής στα διανύσματα προέλευσης και προορισμού, ενώ έχει επίσης προταθεί [4] ο διαμοιρασμός των δεδομένων της μήτρας σε λωρίδες. Στην τελευταία περίπτωση μόνο η χωρική τοπικότητα επιτυγχάνεται. Ωστόσο, είναι κατάλληλο, εάν το σύνολο της μήτρας ή των διανυσμάτων είναι πολύ μεγάλα για να διατηρούνται στην κρυφή μνήμη, διότι αυτό του παρέχει χρονική τοπικότητα. Το μέγεθος του μπλοκ της κρυφής μνήμης καθορίζει πόσα στοιχεία περιέχει. Για τα δεδομένα των μητρών, διαφορετικοί αριθμοί γραμμών και στηλών εκτείνονται. Για παράδειγμα, η μήτρα κομματιάζεται σε κάθετες λωρίδες και κάθε λωρίδα περιέχει τον αριθμό των στηλών που χωρούν σε ένα μπλοκ κρυφής μνήμης. Οι οδηγίες ομαδοποιούνται μαζί και υφίστανται ταυτόχρονα περαιτέρω επεξεργασία, εάν ο επεξεργαστής μπορεί να χειριστεί πολλαπλά δεδομένα απλής εντολής (SIMD). Για παράδειγμα, επεκτάσεις συνεχούς ροής (SSE) διευκολύνουν στον υπολογισμό δύο πράξεων σημείου κινητής υποδιαστολής σε ένα μόνο βήμα, επειδή απευθύνεται σε ένα καθορισμένο καταχωρητή 128-bit. Ως εκ τούτου δύο γειτονικά μη-μηδενικά επεξεργάζονται μαζί και μόνο ένα ευρετήριο συντεταγμένων είναι απαραίτητο ανά ζεύγος τιμών, αντίστοιχα ανά μπλοκ. [32] Το μέγεθος του μπλοκ εξαρτάται από τον αριθμό των οδηγιών οι οποίες μπορούν να εκτελεστούν μια φορά. Το μέγεθος του μπλοκ για την ομαδοποίηση καταχωρητών σε μπλοκ είναι σχετικά μικρό σε σύγκριση με τα δεδομένα που ομαδοποιούνται. Ένα άλλο πλεονέκτημα είναι, σύμφωνα με τον Τολέδο ότι «τα στοιχεία του x φορτώνονται μια φορά και χρησιμοποιούνται κ φορές όταν η μήτρα είναι ομαδοποιημένη σε μπλοκ. [28]. Το πλεονέκτημα της τεχνικής αυτής εξαρτάται από τη δομή της μήτρας. Η γενική μεταγλώττιση θα πρέπει να μπορεί να δικαιολογηθεί ούτως ή άλλως. Η εξάλειψη των μετατροπών ακεραίων σε δείκτες έχει προταθεί [28]. Ας υποθέσουμε ότι έχουμε πάρει τη CSR μορφή για τον υπολογισμό. Στη συνέχεια για την πρόσβαση στα στοιχεία του διανύσματος προέλευσης χρειάζονται κάποιες οδηγίες για τη θέση. Αυτός ο δείκτης υπολογισμού υπερφορτώνει την αριθμητική λογική μονάδα (ALU), αν χρησιμοποιείται ήδη για τη φόρτωση των οδηγιών. Ένα έξυπνος μεταγλωττιστής μπορεί να λύσει το πρόβλημα, ο οποίος αναγνωρίζει ότι οι ακέραιοι μπορούν να μετατραπούν σε δείκτες και παράγει έναν προσωρινό πίνακα δεικτών ή αντικαθιστά τους ακεραίους με δείκτες. Η εξάλειψη αυτών των μετατροπών ωφελεί κυρίως της μηχανές RISC, οι οποίες έχουν μια κοινή λειτουργική μονάδα και για τους υπολογισμούς διεύθυνσης και για τις μετατοπίσεις. 25

37 26

38 ΚΕΦΑΛΑΙΟ 3 ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΚΑΙ ΕΡΓΑΛΕΙΑ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΘΗΚΑΝ Η υλοποίηση και η πειραματική αξιολόγηση του [1] έγινε σε μονοπύρηνες και πολυπύρηνες αρχιτεκτονικές. Συγκεκριμένα χρησιμοποιήθηκαν οι επεξεργαστές γενικού σκοπού Intel Core 2 Duo E6065 και Τ6600 και ο Intel i7-3930k και ο ενσωματωμένος επεξεργαστής ειδικού σκοπού Microblaze από το Virtex-5 FPGA (Xilinx). Τα εργαλεία που χρησιμοποιήθηκαν για τη θεωρητική ανάλυση και για την καταμέτρηση των μετακινήσεων στη μνήμη και των εντολών είναι τα SimpleScalar και Valgrind αντίστοιχα. 3.1 Αρχιτεκτονικές που χρησιμοποιήθηκαν Desktop PC Intel Core 2 Duo E6550 Χρησιμοποιήθηκε ο προσωπικός υπολογιστής με επεξεργαστή Intel Core 2 Duo E6550 [34]. Ο επεξεργαστής είναι 32bit, διπύρηνος στα 2.33GHz. Η ιεραρχική μνήμη αποτελείται από δύο επίπεδα, το δεύτερο επίπεδο της κρυφής μνήμης L2 είναι ενιαία κρυφή μνήμη εντολών και δεδομένων και έχει μέγεθος 4MB ενώ το πρώτο επίπεδο της κρυφής μνήμης έχει ξεχωριστή κρυφή μνήμη εντολών L1 εντολών και ξεχωριστή κρυφή μνήμη δεδομένων L1 δεδομένων και η καθεμία από αυτές έχει μέγεθος 32kB. Κάθε πυρήνας έχει δική του L1 ενώ και οι δύο μοιράζονται την L2. Η ιεραρχία της μνήμης φαίνεται στο Σχ Τόσο η L1 έχει βαθμό συσχέτισης 8 ενώ η L2 βαθμό συσχέτισης 16. Ο επεξεργαστής υποστηρίζει τη τεχνολογία SIMD 27

39 (Single Instruction Multiple Data) χάρη στην οποία ο επεξεργαστής μπορεί να εκτελέσει την ίδια εντολή σε περισσότερα δεδομένα ταυτόχρονα. Προσφέρει δηλαδή τη δυνατότητα παραλληλίας. Ο συγκεκριμένος επεξεργαστής υποστηρίζει το σύνολο εντολών SSE (Streaming SIMD Extension). Σε αρχιτεκτονικές 32bit το πλήθος των ΧΜΜ καταχωρητών είναι 8 [47]. Ο επεξεργαστής έχει 8 ΧΜΜ καταχωρητές (ΧΜΜ0 ΧΜΜ15) μήκους 128bit. Η αξιοποίηση του συνόλου εντολών πρέπει να γίνει από τον προγραμματιστή καθώς οι περισσότεροι μεταγλωττιστές δεν παράγουν εντολές SIMD κατά τη διαδικασία της μεταγλώττισης του C κώδικα. Η αξιοποίηση του συνόλου εντολών πρέπει να γίνει από τον προγραμματιστή καθώς οι περισσότεροι μεταγλωττιστές δεν παράγουν εντολές SIMD κατά τη διαδικασία της μεταγλώττισης του C κώδικα Desktop PC Intel Core 2 Duo T6600 Χρησιμοποιήθηκε ο προσωπικός υπολογιστής με επεξεργαστή Intel Core 2 Duo T6600 [35]. Ο επεξεργαστής είναι 64bit, διπύρηνος στα 2.2GHz. Η ιεραρχική μνήμη αποτελείται από δύο επίπεδα, το δεύτερο επίπεδο της κρυφής μνήμης L2 είναι ενιαία κρυφή μνήμη εντολών και δεδομένων και έχει μέγεθος 2MB ενώ το πρώτο επίπεδο της κρυφής μνήμης έχει ξεχωριστή κρυφή μνήμη εντολών L1 εντολών και ξεχωριστή κρυφή μνήμη δεδομένων L1 δεδομένων και η καθεμία από αυτές έχει μέγεθος 32kB. Κάθε πυρήνας έχει δική του L1 ενώ και οι δύο μοιράζονται την L2. Η ιεραρχία της μνήμης είναι όπως στο Σχ Τόσο η L1 όσο και η L2 έχουν βαθμό συσχέτισης 8. Ο επεξεργαστής υποστηρίζει τη τεχνολογία SIMD (Single Instruction Multiple Data). Ο συγκεκριμένος επεξεργαστής υποστηρίζει το σύνολο εντολών SSE (Streaming SIMD Extension) και έχει 16 ΧΜΜ καταχωρητές επειδή η αρχιτεκτονική του είναι 64bit (ΧΜΜ0 ΧΜΜ15). Κάθε καταχωρητής έχει μήκος 128bit. Η αξιοποίηση του συνόλου εντολών πρέπει να γίνει από τον προγραμματιστή καθώς οι περισσότεροι μεταγλωττιστές δεν παράγουν εντολές SIMD κατά τη διαδικασία της μεταγλώττισης του C κώδικα. 28

40 Σχ. 3.1: Ιεραρχία μνήμης στο PC Intel Core 2 Duo Desktop PC Intel i7-3930κ (6 πυρήνες) Χρησιμοποιήθηκε ο προσωπικός υπολογιστής με επεξεργαστή Intel Core i7-3930k [36]. Ο επεξεργαστής είναι 64bit στα 3.2GHz με έξι πυρήνες. Η ιεραρχική μνήμη αποτελείται από τρία επίπεδα κρυφής μνήμης: ξεχωριστή μνήμη εντολών L1 εντολών και ξεχωριστή μνήμη δεδομένων L1 δεδομένων 32kB με βαθμό συσχέτισης 8, ενοποιημένη κρυφή μνήμη εντολών και δεδομένων L2 256kB με βαθμό συσχέτισης 8 και ενοποιημένη κρυφή μνήμη εντολών και δεδομένων L kB με βαθμό συσχέτισης 16. Κάθε πυρήνας διαθέτει τη δική του L1 και L2, ενώ όλοι οι πυρήνες μοιράζονται την L3. Η ιεραρχία της μνήμης φαίνεται στο Σχ Ο επεξεργαστής υποστηρίζει τη τεχνολογία SIMD και συγκεκριμένα υποστηρίζει το σύνολο εντολών AVX (Advanced Vector Extensions) [46]. Έχει 16 ΥΜΜ καταχωρητές επειδή η αρχιτεκτονική του είναι 64bit (ΥΜΜ0 ΥΜΜ15). Κάθε καταχωρητής έχει μήκος 256bit. Σε αρχιτεκτονικές 32bit το αντίστοιχο πλήθος 256bit καταχωρητών είναι 8. Σχ. 3.2: Ιεραρχία μνήμης στο PC Intel i7 29

41 3.1.4 Virtex-5 FPGA Microblaze Embedded Processor (Xilinx FPGA) Όπως προαναφέρθηκε, στις FPGA συσκευές εκτός από hard επεξεργαστής μπορεί να υπάρχει και soft επεξεργαστής, όπως είναι ο Microblaze της Xilinx που χρησιμοποιείται στοvirtex-5 FPGA της ίδιας εταιρείας που χρησιμοποιήθηκε στα πλαίσια της παρούσας διπλωματικής εργασίας. Χρησιμοποιήθηκε το εργαλείο ανάπτυξης Embedded Development Kit (EDK) της Xilinx για να οριστεί η αρχιτεκτονική του επεξεργαστή και για να γραφτεί ο κώδικας. Συγκεκριμένα το EDK αποτελείται από δύο ξεχωριστά περιβάλλοντα, το XPS (Xilinx Platform Studio) με το οποίο ο χρήστης ορίζει τις προδιαγραφές του υλικού του συστήματος και το SDK (Software Development Kit). Το XPS μετατρέπει τις προδιαγραφές σε συνθέσιμη RTL (Register Transfer Level) περιγραφή (Verilog ή VHDL). Το SDK διαχειρίζεται το λογισμικό που εκτελείται στο ενσωματωμένο σύστημα. Δίνει στο χρήστη τη δυνατότητα να γράψει τον κώδικα της εφαρμογής που θα τρέξει στο ενσωματωμένο σύστημα, να τον μεταγλωττίσει και να τον εκσφαλματώσει. [45] Στα πλαίσια της παρούσας διπλωματικής εργασίας, ο μικροεπεξεργαστής προγραμματίστηκε ώστε να έχει κρυφή μνήμη L1=16kB. Η εσωτερική μνήμη δεν χρησιμοποιήθηκε. 3.2 Εργαλεία που χρησιμοποιήθηκαν SimpleScalar Για την εξομοίωση του προβλήματος και τη θεωρητική μελέτη του, χρησιμοποιήθηκε ο εξομοιωτής SimpleScalar v4.0. Πρόκειται για έναν εξοιμοιωτή αρχιτεκτονικής με τον οποίο μπορούν να προβλεφθούν τα αποτελέσματα μιας διαδικασίας που υλοποιείται πάνω σε μια συγκεκριμένη αρχιτεκτονική [6]. Είναι λογισμικό ανοιχτού κώδικα και αναπτύχθηκε το 1992 στα πλαίσια του Multiscalar project υπό τη καθοδήγηση του Gurindar Sohi στο Πανεπιστήμιο του Ουινσκόνσιν. Ο εξομοιωτής είναι γραμμένος σε C κώδικα. Η λειτουργία του βασίζεται στη μοντελοποίηση του υπολογιστικού συστήματος βάσει των προδιαγραφών που του δίνει ο χρήστης. Ως εκ τούτου, παράγει το εικονικό υπολογιστικό σύστημα που περιλαμβάνει τον επεξεργαστή, την κρυφή μνήμη και την ιεραρχία της μνήμης. Με τη χρήση του εξομοιωτή, ο χρήστης μπορεί να δημιουργήσει μοντέλα διαφόρων συστημάτων και να εξομοιώσει πραγματικά 30

42 προγράμματα που «τρέχουν» σε αυτά. Στα πλαίσια της παρούσας διπλωματικής εργασίας, το εργαλείο χρησιμοποιήθηκε για τη θεωρητική μελέτη της μεθοδολογίας βελτιστοποίησης του αλγορίθμου Valgrind Το εργαλείο Valgrind χρησιμοποιείται για την εκσφαλμάτωση και την παρουσίαση των χαρακτηριστικών ενός προγράμματος σε περιβάλλον Linux. Ανιχνεύει αυτόματα τα σφάλματα που αφορούν στη πρόσβαση στη μνήμη ή στα νήματα. Επίσης με την παρουσίαση των λεπτομερών χαρακτηριστικών ενός προγράμματος βοηθάει το χρήστη στο να ανιχνεύσει τα bottlenecks του προγράμματος και να το βελτιώσει με σκοπό την επιτάγχυνση της εκτέλεσής του. Το εργαλείο αυτό διατίθεται δωρεάν, είναι ανοιχτού κώδικα και ελεύθερο λογισμικό. Μπορεί να τρέξει σε οποιοδήποτε περιβάλλον Linux και είναι εύχρηστο. Το μόνο που χρειάζεται είναι ο χρήστης να εισάγει τα κατάλληλα προθέματα στη γραμμή εντολών. Το Valgrind έχει ευρεία απήχηση και χρησιμοποιείται επίσης σε προγράμματα μεγάλης κλίμακας. Βρίσκει εφαρμογή σε προγράμματα γραμμένα σε κάθε γλώσσα. Ωστόσο, τα εργαλεία του Valgrind έχουν σχεδιαστεί κυρίως για προγράμματα γραμμένα σε C/C++ επειδή εκείνα τείνουν να εμφανίζουν τα περισσότερα σφάλματα. Προσφέρει επίσης τη δυνατότητα για εκσφαλμάτωση και παρουσίαση των χαρακτηριστικών ενός συστήματος που είναι γραμμένο όχι μόνο σε μία γλώσσα προγραμματισμού αλλά σε ένα σύνολο γλωσσών. ΤοValgrind έχει χρησιμοποιηθεί σε προγράμματα που έχουν γραφτεί μερικώς ή εξ ολοκλήρου σε C, C++, Java, Perl, Python, assembly code, Fortran, Ada και πολλές άλλες. Ο χρήστης μπορεί να χρησιμοποιήσει το Valgrind ακόμη και για προγράμματα για τα οποία δεν έχει τον πηγαίο κώδικα. Το εργαλείο αυτό είναι επεκτάσιμο και μάλιστα πολλά πανεπιστήμια έχουν πειραματιστεί στην ανάπτυξη νέων εργαλείων ανάλυσης προγραμμάτων χρησιμοποιώντας το. Το μόνο μειονέκτημα του Valgrind είναι ότι καθυστερεί την εκτέλεση του προγράμματος από 5 έως 100 φορές. Δεδομένου όμως ότι δεν χρειάζεται κανείς να χρησιμοποιεί το εργαλείο σε κάθε εκτέλεση του προγράμματος, μια τέτοια καθυστέρηση δεν προκαλεί μεγάλο πρόβλημα. Εξάλλου, η καθυστέρηση που προκαλεί είναι παρόμοια με αυτήν που προκαλούν συνήθως τα εργαλεία εκσφαλμάτωσης και παρουσίασης των χαρακτηριστικών του προγράμματος [44]. Στα πλαίσια της παρούσας διπλωματικής χρησιμοποιήθηκε το εργαλείο Valgrind για την καταμέτρηση των 31

43 εντολών και των προσβάσεων στη μνήμη δεδομένων L1 και στη μνήμη L2 κατά τη διάρκεια εκτέλεσης του αλγορίθμου. Επίσης καταμετρήθηκε ο ρυθμός αστοχιών στη μνήμη δεδομένων L1 και στη μνήμη L2. 32

44 ΚΕΦΑΛΑΙΟ 4 ΠΡΟΤΕΙΝΟΜΕΝΗ ΜΕΘΟΔΟΛΟΓΙΑ Στο παρόν κεφάλαιο περιγράφεται η μεθοδολογία [1] που ακολουθείται για τη βελτιστοποίηση του αλγορίθμου Πολλαπλασιασμού Πίνακα επί Διάνυσμα. Όπως έχει ήδη αναφερθεί, η βελτιστοποίηση στηρίζεται στην αξιολόγηση όλων μαζί των παραμέτρων από τις οποίες εξαρτάται η ταχύτητα εκτέλεσης του αλγορίθμου κι όχι καθεμίας ξεχωριστά. Η παραγωγή και κατανάλωση των ενδιάμεσων αποτελεσμάτων, η επαναχρησιμοποίηση των δεδομένων και η παραλληλοποίηση του αλγορίθμου εξετάζονται ως προς τους περιορισμούς της αρχιτεκτονικής και ποιο συγκεκριμένα το πλήθος των πυρήνων, τα επίπεδα της ιεραρχικής μνήμης, το μέγεθος και το βαθμό συσχέτισης της μνήμης κάθε επιπέδου, το πλήθος και το μήκος των καταχωρητών, την καθυστέρηση της μνήμης και την καθυστέρηση των εντολών. Το πρόβλημα χωρίζεται σε υποπροβλήματα ανάλογα με το μέγεθος του προβλήματος και των μνημών. 4.1 Ενσωματωμένοι επεξεργαστές Ο χρόνος εκτέλεσης του αλγορίθμου Πολλαπλασιασμού Πίνακα επί Διάνυσμα σε ενσωματωμένους επεξεργαστές εξαρτάται από το χρόνο που χρειάζονται τα δεδομένα για να μεταφερθούν από και προς τη μνήμη (Tdata), το χρόνο που χρειάζεται για να εκτελεστούν οι αριθμητικοί υπολογισμοί του αλγορίθμου, δηλαδή οι πολλαπλασιασμοί και οι προσθέσεις (Tmatrix-operations) και ο χρόνος που χρειάζεται για τις εντολές διευθυνσιοδότησης (Taddressing), όπως φαίνεται και στην παρακάτω εξίσωση: T total = ma (T data, T matrix operations + T addressing ) [4.1] 33

45 Σε περίπτωση που οι εντολές διευθυνσιοδότησης και οι οι μεταφορά των δεδομένων από και προς τη μνήμη γίνεται παράλληλα, η εξίσωση 4.13 αλλάζει στην 4.14: T total = ma (T data, T matrix operations, T addressing ) [4.2] Στα πλαίσια της παρούσας διπλωματικής εργασίας, ο πίνακας Α είναι τετράγωνος MxM. Ως εκ τούτου, ο χρόνος που χρειάζεται για να εκτελεστούν οι αριθμητικές πράξεις του αλγορίθμου δίνεται στην εξίσωση 4.3 ενώ αν υπάρχει ξεχωριστή μονάδα πολλαπλασιασμού και ξεχωριστή μονάδα πρόσθεσης τότε δίνεται από την εξίσωση 4.4, καθώς ο πολλαπλασιασμός απαιτεί περισσότερο χρόνο από την πρόσθεση: T matrix operations = Mu lat (M M) + Add lat (M M M) [4.3] T matrix operations = Mu lat (M M) [4.4] Χρονοπρογραμματισμός με χρήση νέου τρόπου αποθήκευσης του πίνακα (data array layout) Όταν ο επεξεργαστής καλεί ένα δεδομένο από τη μνήμη, τότε μεταφέρεται από τη μνήμη στον επεξεργαστή ένα μπλοκ δεδομένων σταθερού μεγέθους, το οποίο ονομάζεται cache line. Ο πίνακας Α που είναι αποθηκευμένος στη μνήμη διαβάζεται row-wise και από κάθε γραμμή χρησιμοποιείται κάθε φορά ένα στοιχείο για να πολλαπλασιαστεί με το αντίστοιχο στοιχείο του διανύσματος Χ. Οπότε στη χειρότερη περίπτωση χρησιμοποιείται κάθε φορά ένα στοιχείο από κάθε cache line. Αν για παράδειγμα η cache line έχει μήκος 16bytes και τα δεδομένα είναι τύπου float (4 bytes), τότε ο πίνακας μπορεί να έρθει έως και τέσσερις φορές από την κύρια μνήμη. Για να μειωθούν οι μετακινήσεις στη μνήμη προτείνεται η αλλαγή του layout του Α έτσι ώστε ο πίνακας Α να έρθει μία φορά από τη μνήμη. Αυτό σημαίνει ότι ο πίνακας Α πρέπει να αποθηκευτεί εκ νέου στη μνήμη με αναδιατεταγμένα τα στοιχεία του, όπως φαίνεται στη Σχ. 4.1, έτσι ώστε τα στοιχεία του πίνακα Α να είναι αποθηκευμένα στη μνήμη με τη σειρά που καλούνται από τον επεξεργαστή. Ωστόσο η αλλαγή αυτή είναι χρονοβόρα και έχει νόημα μόνο σε συστήματα πραγματικού χρόνου, όταν δηλαδή ο πίνακας Α δεν είναι γνωστός εκ των προτέρων αλλά εισάγεται στη μνήμη τη στιγμή που χρειάζεται να γίνει η επεξεργασία του. Τότε 34

46 η αλλαγή του layout του πίνακα Α προκαλεί μικρή χρονική επιβάρυνση σε σχέση με την εισαγωγή του πίνακα. Επίσης χρησιμοποιείται σε περιπτώσεις που ο πίνακας Α χρησιμοποιείται για πολλούς πολλαπλασιασμούς και θα μπορούσε επίσης να υλοποιηθεί σε υλικό ειδικού σκοπού. Εικόνα 4.1: Η αλλαγή του layout του πίνακα Α για Μ= Αξιοποίηση αρχείου καταχωρητών (RF) Η πιο απλή υλοποίηση του αλγορίθμου Πολλαπλασιασμού Πίνακα επί Διάνυσμα δεν επαναχρησιμοποιεί καθόλου το διάνυσμα Χ αλλά εμφανίζει μέγιστη παραγωγή και κατανάλωση ενδιάμεσων αποτελεσμάτων. Σύμφωνα με αυτήν την υλοποίηση κάθε γραμμή του πίνακα Α πολλαπλασιάζεται με το διάνυσμα Χ και υπολογίζεται ένα στοιχείο του διανύσματος Υ και η διαδικασία επαναλαμβάνεται για όλες τις γραμμές του πίνακα μέχρι να υπολογιστούν όλα τα στοιχεία του διανύσματος Υ. Αυτή η υλοποίηση (scheduling) μεγιστοποιεί τις μετακινήσεις των δεδομένων στη μνήμη διότι στη χειρότερη περίπτωση το διάνυσμα Χ πρέπει να έρθει από τη μνήμη Μ φορές. Το διάνυσμα Υ και ο πίνακας Α θα έρθουν από τη μνήμη μία φορά. Ως εκ τούτου, οι μετακινήσεις στο χαμηλότερο επίπεδο της κρυφής μνήμης δίνονται από τους τύπους 4.5α, 4.5β: L1 loads = M 2 + M 2 L1 stores = M [4.5α] [4.5β] όπου L1 loads, L1 stores είναι το πλήθος των εντολών load και store αντίστοιχα στην L1. 35

47 Για να μειωθούν οι μετακινήσεις στη μνήμη χρειάζεται κατάλληλο scheduling που θα αξιοποιεί τους καταχωρητές του επεξεργαστή (Register File, RF). Τότε ο πίνακας Α και τα διανύσματα Χ και Υ χωρίζονται σε μέρη, tiles. Σύμφωνα με το προτεινόμενο scheduling, στα πλαίσια ενός tile, στο RF βρίσκονται ένα στοιχείο του διανύσματος Χ, k0 στοιχεία του διανύσματος Υ και ένα στοιχείο του πίνακα Α. Κάθε στοιχείο του πίνακα Α έρχεται προσωρινά στο RF, πολλαπλασιάζεται με το στοιχείο του διανύσματος Χ και το αποτέλεσμα αθροίζεται με το προηγούμενο και παραμένει στον καταχωρητή του αντίστοιχου στοιχείου του διανύσματος Υ. Όταν ολοκληρωθούν οι πράξεις μέσα σε ένα tile, τότε το tile του πίνακα Α ολισθαίνει δεξιά ενώ το tile του διανύσματος Χ ολισθαίνει προς τα κάτω. Όταν ολοκληρωθούν οι πράξεις στις k0 πρώτες γραμμές του πίνακα Α τότε το tile του διανύσματος Υ ολισθαίνει προς τα κάτω, το tile του πίνακα Α μεταφέρεται στην αρχή των επόμενων k0 γραμμών και το tile του διανύσματος Χ μεταφέρεται πάλι στην αρχή του διανύσματος Χ. Το προτεινόμενο scheduling φαίνεται στο Σχ. 4.2: Σχ. 4.2: Το προτεινόμενο scheduling στο RF. Σύμφωνα με τα παραπάνω, πρέπει να ισχύει: 36

48 (FP_RF ( p))&(int_rf addr_variab es) [4.6] όπου FL_RF είναι το πλήθος των καταχωρητών κινήτης υποδιαστολής (floating point registers), INT_RF είναι το πλήθος των καταχωρητών ακεραίων, addr_variables είναι το πλήθος των μεταβλητών που χρειάζονται για τη διευθυνσιοδότηση και k0 είναι το μέγεθος του tile. Η παράμετρος p όσον αφορά στο παραπάνω scheduling είναι ίση με 1 και δείχνει ότι χρειάζεται ένας καταχωρητής για να αποθηκεύεται το στοιχείο του πίνακα Α κάθε φορά. Ωστόσο, αν η αρχιτεκτονική υποστηρίζει την παράλληλη εκτέλεση p πράξεων τότε χρειάζονται επιπλέον p καταχωρητές για τον πίνακα Α. Αν για παράδειγμα μπορούν να εκτελούνται δύο πολλαπλασιασμοί ταυτόχρονα, τότε χρειάζονται δύο καταχωρητές για τον πίνακα Α ώστε τα δύο στοιχεία του να πολλαπλασιαστούν με το στοιχείο του διανύσματος Χ παράλληλα. Για βέλτιστη αξιοποίηση του RF επιλέγεται το μέγιστο k0 με βάση τον περιορισμό της εξίσωσης 4.6. Είναι φανερό ότι ενώ η παραγωγή και κατανάλωση ενδιάμεσων αποτελεσμάτων είναι πλήρης, το διάνυσμα Χ δεν επαναχρησιμοποιείται πλήρως αλλά χρειάζεται να έρχεται από τη μνήμη Μ/k0 φορές. Ως εκ τούτου, οι μετακινήσεις στο χαμηλότερο επίπεδο κρυφής μνήμης δίνονται από τον παρακάτω τύπο: L1 loads = M 2 + M2 k0 L1 stores = M [4.7α] [4.7β] Συγκρίνοντας τους τύπους 4.7α,β με τους τύπους 4.5α,β είναι φανερή η μείωση των μετακινήσεων χάρη στην αξιοποίηση του RF. Έστω αρχιτεκτονική με ένα επίπεδο κρυφής μνήμης. Τότε, ο χρόνος που χρειάζεται για τη μεταφορά των δεδομένων από και προς τη μνήμη, Tdata, δίνεται από τον παρακάτω τύπο: Tdata = max ( L1r L1loads+L1s L1stores, MMr MM oads + MMs MMstores L1 ports line L1 k0 line L1 k0 ) [4.8] όπου L1r, L1s και MMr, MMs είναι η καθυστέρηση (latency) των εντολών load/store για την κρυφή μνήμη δεδομένων L1 και για την κύρια μνήμη, αντίστοιχα, L1 loads, L1 stores και MM loads, MM stores είναι το πλήθος των εντολών load και store αντίστοιχα στην κρυφή μνήμη L1 και στην 37

49 κύρια μνήμη αντίστοιχα, linel1 είναι το πλήθος των στοιχείων της cache line και L1ports είναι το πλήθος των θυρών ανάγνωσης και εγγραφής της κρυφής μνήμης L1. Η καθυστέρηση MMr δεν είναι σταθερός αριθμός γιατί εξαρτάται από το πλήθος των διαφορετικών σελίδων της κύριας μνήμης οι οποίες διαβάζονται. Όσον αφορά τις εγγραφές στην κύρια μνήμη, k 0 line L1 cache lines της κρυφής μνήμης L1 γράφονται στην κύρια μνήμη για κάθε k0 στοιχεία. Η εξίσωση 4.4 ισχύει για την περίπτωση που δεν υπάρχει προανάκληση δεδομένων. Για αρχιτεκτονικές όπου οι εντολές ανάγνωσης και εγγραφής εκτελούνται παράλληλα, η εξίσωση 4.4 αλλάζει ελαφρώς. Αν όλες οι k0 γραμμές του πίνακα Α και το διάνυσμα Χ χωρούν στην κρυφή μνήμη L1, δηλαδή ισχύει η παρακάτω σχέση: (( 0 + 1) M dtype < L1 [4.9] όπου dtype είναι ο τύπος των δεδομένων, τότε το παραπάνω scheduling αλλάζει την εξίσωση 4.8 στην εξίσωση 4.10: k0 ) Tdata = max ( L1r (M2 + Μ2 L1 ports + L1s M L1 ports, MMr (M 2 + M) + MMs M line L1 k0 k0 line L1 [4.10] Αξιοποίηση κρυφής μνήμης δεδομένων L1 Αν δεν ισχύει η εξίσωση 4.5, τότε δεν χωρούν όλες οι k0 γραμμές του πίνακα Α και το διάνυσμα Χ στην κρυφή μνήμη L1. Ως εκ τούτου, το διάνυσμα Χ δεν παραμένει στην κρυφή μνήμη L1 γιατί τα δεδομένα του πίνακα Α που διαβάζονται από το υψηλότερο επίπεδο μνήμης γράφονται πάνω στα υπάρχοντα δεδομένα μέσα στην L1 άρα και πάνω στα δεδομένα του διανύσματος Χ. Οπότε το διάνυσμα Χ χρειάζεται να έρθει M/k0 φορές από το αμέσως υψηλότερο επίπεδο της κρυφής μνήμης (ή την κύρια μνήμη, ανάλογα την αρχιτεκτονική). Οπότε οι μετακινήσεις στο αμέσως επόμενο επίπεδο της κρυφής μνήμης διαμορφώνονται ως εξής: L2 loads = M + M 2 + M2 k0 L2 stores = M [4.11α] [4.11β] 38

50 Για να μειωθούν οι μετακινήσεις στο αμέσως υψηλότερο επίπεδο της κρυφής μνήμης προτείνεται η αξιοποίηση της κρυφής μνήμης εφαρμόζοντας tiling μεγέθους Τ1 στην L1 (Σχ. 4.3). Σύμφωνα με το προτεινόμενο scheduling, στα πλαίσια ενός tile, στην κρυφή μνήμη L1 βρίσκονται Τ1 στοιχεία καθεμίας από τις k0 γραμμές, τα T1 αντίστοιχα στοιχεία του διανύσματος Χ και τα αντίστοιχα k0 στοιχεία του διανύσματος Υ. Μόλις ολοκληρωθούν οι πράξεις μέσα στο tile, τότε το tile του πίνακα Α ολισθαίνει και το tile του διανύσματος Υ ολισθαίνει προς τα κάτω. Όταν ολοκληρωθούν οι πρώτες Τ1 στήλες, τότε το tile του πίνακα Α μεταφέρεται στην αρχή των επόμενων Τ1 στηλών, το tile του διανύσματος Χ μεταφέρεται στα επόμενα Τ1 στοιχεία και το tile του διανύσματος Υ μεταφέρεται στην αρχή του διανύσματος Υ. Σχ. 4.3: Το προτεινόμενο scheduling στην L1. Ο στόχος του tiling είναι το διάνυσμα Χ να παραμείνει στην κρυφή μνήμη L1 μέχρι να επαναχρησιμοποιηθεί πλήρως. Για να γίνει αυτό, πρέπει να αξιοποιηθεί ο βαθμός συσχέτισης της μνήμης. Προτείνεται το διάνυσμα Χ και ο πίνακας Α να γράφονται σε διαφορετικούς τρόπους της μνήμης. Συγκεκριμένα προτείνεται να διατίθενται k τρόποι της μνήμης για το διάνυσμα Χ και οι υπόλοιποι να διατίθενται για τον πίνακα Α, όπου k είναι το πλήθος των data cache lines που βρίσκονται στο ίδιο tile του Χ και έχουν την ίδια διεύθυνση στην κρυφή μνήμη L1. Πρέπει 39

51 δηλαδή να ισχύουν οι παρακάτω περιορισμοί: L1 (assoc L1 k 1) assoc L1 0 T1 dtype L1 (assoc L1 k) assoc L1 [4.12] = ( T1 dtype L1 ) assoc L1 2 assoc L1 [4.13] όπου assoc L1 και L1 είναι ο βαθμός συσχέτισης και το μέγεθος της κρυφής μνήμης L1 και dtype είναι ο τύπος των δεδομένων. Προς το παρόν θεωρείται ότι assoc L1 > 1. Χρησιμοποιώντας το παραπάνω tiling κι επειδή έχει γίνει αλλαγή του layout του πίνακα Α, τα στοιχεία του πίνακα Α δεν θα γραφτούν πάνω στο διάνυσμα Χ. Αυτό οφείλεται στο γεγονός ότι τα στοιχεία του tile του πίνακα Α είναι γραμμένα σε συνεχόμενες θέσεις μνήμης στην κύρια μνήμη και στο μέγεθος των tiles του πίνακα Α, (assoc L1 ) L1, και του διανύσματος Χ, L1, οπότε τα assoc L1 assoc L1 στοιχεία του πίνακα Α και του διανύσματος Χ γράφονται σε διαφορετικούς τρόπους στη μνήμη και δεν υπάρχει conflict. Χάρη στο παραπάνω scheduling, το διάνυσμα Χ θα επαναχρησιμοποιηθεί πλήρως και οι μετακινήσεις του στο αμέσως υψηλότερο επίπεδο μνήμης μειώνονται. Συγκεκριμένα, για αρχιτεκτονική με ένα επίπεδο κρυφής μνήμης οι μετακινήσεις διαμορφώνονται ως εξής: L1 Loads = Μ2 + T1 M2 + Μ2 k0 L1 Loads = Μ2 T1 MM loads = Μ2 T1 + M2 + M MM stores = Μ2 T1 [4.14α] [4.14β] [4.14γ] [4.14δ] Τότε, ο χρόνος που χρειάζεται για τη μεταφορά των δεδομένων από και προς τη μνήμη, Tdata, δίνεται από τον παρακάτω τύπο: Tdata = max ( L1r (M2 T1 +M2 + M2 L1 ports k0 ) + L1r M 2 T1, MMr ( M2 + L1 ports line L1 T1 M2 + M) + MMs M2 T1 k0 line L1 k0 ) [4.15] 40

52 Αν το μέγεθος του tile k0 είναι δεδομένο, τότε το μέγεθος του tile T1 επιλέγεται έτσι ώστε να ικανοποιεί τις εξισώσεις 4.12 και Ωστόσο, υπάρχει εξάρτηση ανάμεσα σε αυτά τα δύο μεγέθη καθώς όσο μειώνονται οι προσβάσεις στην κύρια μνήμη τόσο αυξάνονται οι προσβάσεις στην κρυφή μνήμη L1, δηλαδή, οι προσβάσεις στην κύρια μνήμη ελαχιστοποιούνται όταν μεγιστοποιείται το μέγεθος Τ1, σύμφωνα με τις εξισώσεις 4.12 και 4.13, ενώ οι προσβάσεις στην L1 ελαχιστοποιούνται όταν μεγιστοποιείται το μέγεθος k0 σύμφωνα με την εξίσωση 4.6. Αυτό οφείλεται στο ότι όταν μειώνονται οι αστοχίες σε ένα επίπεδο μνήμης, αυξάνονται οι προσβάσεις στην αμέσως υψηλότερο επίπεδο μνήμης. Υπάρχει δηλαδή trade-off ανάμεσα στα μεγέθη k0 και Τ1 και λόγω αυτού, δεν μπορεί να υπάρξει λύση που να βελτιστοποιεί πλήρως και τα δύο αυτά προβλήματα. Η προτεινόμενη μεθοδολογία βελτιστοποιεί τα δύο προβλήματα μαζί σαν ένα πρόβλημα και όχι ξεχωριστά. Τα μεγέθη k0 και Τ1 υπολογίζονται θεωρητικά βάσει της ιεραρχίας της μνήμης σύμφωνα με την εξίσωση Συνήθως η κύρια μνήμη είναι πολύ πιο αργή από την κρυφή μνήμη L1 (MMr > 100 και L1r = 1). Επιλέγονται μόνο τα ζεύγη k0-t1 για τα οποία ο χρόνος Tdata είναι μικρός, σύμφωνα με την εξίσωση 4.15 και με δοκιμές επιλέγεται εκείνο που ελαχιστοποιεί τον χρόνο Tdata. Το tile στην κρυφή μνήμη L1 επιλέγεται να είναι όσο το δυνατόν μεγαλύτερο κατά τον x άξονα επειδή έτσι μεγιστοποιείται η παραγωγή και κατανάλωση ενδιάμεσων αποτελεσμάτων, χρειάζεται λιγότερες εντολές διευθυνσιοδότησης και αυξάνεται η επαναχρησιμοποίηση του διανύσματος Χ (επειδή έχει αλλάξει το layout του πίνακα) Αξιοποίηση κρυφής μνήμης δεδομένων L2 Αν υπάρχει και δεύτερο επίπεδο κρυφής μνήμης L2, τότε αν τα k0 επί Τ1 στοιχεία του tile του πίνακα Α, τα k1 στοιχεία του διανύσματος Χ και τα k0 στοιχεία του διανύσματος Υ δεν χωρούν στην L2, όταν δηλαδή ισχύει η εξίσωση 4.16, τότε αυξάνονται οι μετακινήσεις στην κύρια μνήμη επειδή το διάνυσμα Υ δεν παραμένει στην L2. Μ + Μ Τ1 + Τ1 > L2 dtype [4.16] Σε αυτήν την περίπτωση, οι μετακινήσεις στην κύρια μνήμη διαμορφώνονται ως εξής: 41

53 MM loads = Μ2 T1 + M2 + M MM stores = Μ2 T1 [4.17α] [4.17β] Για να μειωθούν οι μετακινήσεις, πρέπει να γίνει tiling στην κρυφή μνήμη L2 έτσι ώστε η L2 να περιέχει τα στοιχεία του διανύσματος Υ μέχρι να επαναχρησιμοποιηθούν πλήρως. Σε αυτό το σημείο πρέπει να σημειωθεί ότι στη γενική περίπτωση επιλέγεται tile k 2y για το διάνυσμα Υ, k 2x για το διάνυσμα Χ και k 2y x k 2x για τον πίνακα Α. Το προτεινόμενο scheduling παρουσιάζεται στο Σχ. 4.4α. Μέχρι να υπολογιστούν τα στοιχεία του πρώτου tile του διανύσματος Υ, το tile του πίνακα Α ολισθαίνει δεξιά και το tile του διανύσματος Χ ολισθαίνει προς τα κάτω. Στη συνέχεια, το tile του πίνακα Α και του διανύσματος Υ μεταφέρεται στην αρχή των επόμενων k 2y γραμμών και το tile του διανύσματος Χ μεταφέρεται πάλι στην αρχή του διανύσματος Χ. Όσον αφορά στο μέγεθος του tile, θα πρέπει να ισχύει η παρακάτω εξίσωση: L2 (assoc L2 3) assoc L2 < dtype 2y 2x L2 (assoc L2 2) assoc L2 [4.18] όπου assoc L2 είναι ο βαθμός συσχέτισης της κρυφής μνήμης L2. Με αυτόν τον περιορισμό, διατίθεται ένας τρόπος της μνήμης για το tile του διανύσματος Χ, ένας τρόπος της μνήμης για το tile του διανύσματος Υ και οι υπόλοιποι assoc L2-2 τρόποι διατίθενται για το tile του πίνακα Α. Ως εκ τούτου και δεδομένου ότι τα στοιχεία του πίνακα Α είναι γραμμένα σε διαδοχικές θέσεις μνήμης, το tile του διανύσματος Χ και το tile του διανύσματος Υ παραμένουν στην κρυφή μνήμη L2. Το διάνυσμα Χ έρχεται μία φορά από την κύρια μνήμη ενώ το διάνυσμα Υ έρχεται Μ/k 2x φορές από την κύρια μνήμη. Οι μετακινήσεις στην κύρια μνήμη ελαχιστοποιούνται όταν k 2x =M αλλά τότε αυξάνονται οι μετακινήσεις στην L2 επειδή k 2y μειώνεται. Οι τιμές των k 2x και k 2y υπολογίζονται θεωρητικά βάσει της καθυστέρησης της μνήμης της αρχιτεκτονικής στην οποία υλοποιείται ο αλγόριθμος Πολλαπλασιασμού Πίνακα επί Διάνυσμα. Επειδή συνήθως οι μετακινήσεις στην κύρια μνήμη απαιτούν πολύ περισσότερο χρόνο σε σχέση με τις μετακινήσεις στην L2 επιλέγεται k 2x =M. Στο εξής θα συμβολίζεται Τ2 το tiling στην L2 και Τ1 το tiling στην L1. (Σχ. 4.4β). Η εφαρμογή tiling στην L2 χωρίς tiling στην L1 δεν έχει νόημα. Σε αυτήν την περίπτωση έρχονται στην L2 ένα τμήμα του διανύσματος Υ, ένα σύνολο γραμμών k0 του πίνακα 42

54 Α και όλο το διάνυσμα Χ. Επειδή όμως δεν εφαρμόζεται tiling στην L1, το διάνυσμα Χ χρειάζεται να έρθει M/k0 φορές από την L2. Οπότε δεν μειώνονται οι μετακινήσεις στη μνήμη αλλά αντίθετα η απόδοση επιβαρύνεται από τις εντολές διευθυνσιοδότησης. Σχ. 4.4α: Tiling στην L2. 43

55 Σχ. 4.4β: Tiling στην L2 με k 2x =M. Σύμφωνα με το scheduling του Σχ.τος 4.4β πρέπει να ισχύει: Τ2 + Τ2 Τ1 + Τ1 < L2 dtype [4.19] Θεωρούμε ότι Τ1 Τ1 Τ2 όποτε ισχύει η σχέση: Τ2 Τ1 L2 dtype assoc L2 1 assoc L2 [4.20] Στη γενική περίπτωση (Σχ. 4.4α) τα μεγέθη k 2y, k 2x, Τ1 και k0 επιλέγονται έτσι ώστε να βελτιστοποιούν την αξιοποίηση του RF, της L1 και της L2 μαζί σαν ένα πρόβλημα και όχι ξεχωριστά, διότι υπάρχει εξάρτηση μεταξύ τους. Ο χρόνος που χρειάζεται για τη μεταφορά των δεδομένων από και προς τη μνήμη, Tdata, δίνεται 44

56 από τον παρακάτω τύπο: Tdata = max ( L1r L1loads+L1s L1stores k0 MMs MM stores line L2 k0 L2r, L2 L1 ports line loads + L2s L2 k0 stores line L1 L1 k0, MMr line L2 MM loads + ) [4.21] όπου L2r και L2s είναι η καθυστέρηση (latency) των εντολών load/store για την κρυφή μνήμη δεδομένων L2. Στη περίπτωση που modulo(k0,line L2 ) 0 τότε το πλήθος των εγγραφών στη μνήμη είναι ελαφρώς διαφορετικό επειδή εξαρτάται από την τιμή αυτή modulo(k0,line L2 ). Οι μετακινήσεις στη μνήμη διαμορφώνονται ως εξής: L1 loads = Μ2 + T1 M2 + Μ2 k0 L1 stores = Μ2 T1 L2 loads = Μ2 k 2y + M 2 + Μ2 k 2x L2 stores = Μ2 k 2x MM loads = M + M 2 + M MM stores = M [4.22α] [4.22β] [4.22γ] [4.22δ] [4.22ε] [4.22στ] Οπότε η εξίσωση 4.21 μετατρέπεται στην 4.23: Tdata = max ( L1r (Μ2 Τ1 +Μ2 k0 +M2 )+L1s Μ2 Τ1 M + M 2 ) + Μ2 MMs k2x k0 line L2 k0 L1 ports, L2r ( Μ2 + Μ2 + M 2 ) + L2s line L1 k 2x k 2y M 2 k2x k0 line L1 k0, MMr line L2 ( Μ2 k 2x + ) [4.23] Συνήθως MMr > 100, 3 L2r 7 και L1r = 1. Επιλέγονται μόνο οι ομάδες τιμών (k0, T1, k 2y, k 2x) για τις οποίες ο χρόνος Tdata είναι μικρός, σύμφωνα με την εξίσωση 4.19 και χρησιμοποιώντας αριθμητικές μεθόδους επιλέγεται εκείνη η ομάδα τιμών που ελαχιστοποιεί τον χρόνο Tdata. 45

57 Όσον αφορά στο χρόνο που απαιτείται για την εκτέλεση των εντολών διευθυνσιοδότησης, αυτός είναι αντιστρόφως ανάλογος με το μέγεθος του tile και ανάλογος με τα επίπεδα του tiling. Δηλαδή ενώ το tiling μειώνει το χρόνο εκτέλεσης του αλγορίθμου επειδή μειώνει τις μετακινήσεις στη μνήμη, αυξάνει το χρόνο εκτέλεσης λόγω των εντολών διευθυνσιοδότησης. Ενώ μπορεί να βρεθεί η ελάχιστη τιμή για καθεμία από αυτές τις παραμέτρους, επειδή όπως περιγράφεται παραπάνω η μία είναι αντιστρόφως ανάλογη της άλλης, δεν υπάρχει scheduling που να βελτιστοποιεί και τις δύο. Επειδή ο χρόνος που χρειάζονται τα δεδομένα για να μεταφερθούν από και προς τη μνήμη μπορεί να υπολογιστεί θεωρητικά ενώ ο χρόνος που απαιτείται για τη διευθυνσιοδότηση όχι, διότι εξαρτάται από τον μεταγλωττιστή και τον unroll factor, προτείνεται η διερεύνηση ενός συνόλου πιθανών λύσεων υπό την προϋπόθεση ότι ο χρόνος που χρειάζονται τα δεδομένα παραμένει μικρός για όλες τις λύσεις. Επίσης όσον αφορά στην αξιοποίηση της ιεραρχικής μνήμης, όπως αναφέρθηκε και παραπάνω, υπάρχει trade-off ανάμεσα στην αξιοποίηση της κρυφής μνήμης L1 και στην αξιοποίηση της κρυφής μνήμης L2. Ως εκ τούτου, μπορεί η μέθοδος του tiling να μην βελτιώσει την απόδοση σε κάποιες περιπτώσεις επειδή η επιβάρυνση από το χρόνο που χρειάζονται οι εντολές διευθυνσιοδότησης μπορεί να μην αντισταθμίζεται από τη μείωση των μετακινήσεων στην κύρια μνήμη. Επιπλέον, η μέθοδος του tiling προσθέτει αριθμητικές πράξεις για την υλοποίηση των βρόχων, γεγονός που οδηγεί σε περαιτέρω μείωση της απόδοσης. Στον παρακάτω πίνακα φαίνονται οι μετακινήσεις των δεδομένων για κάθε περίπτωση: Ένα επίπεδο κρυφής μνήμης (L1) < Χωρίς βελτιστοποίηση: Υ A X L1 Μ Μ 2 Μ 2 DDR Μ Μ 2 Μ 2 ( ) < Αξιοποίηση RF: L1 Μ Μ 2 Μ 2 /k0 DDR Μ Μ 2 Μ 2 /k0 46

58 ( ) < Αξιοποίηση RF και L1: L1 Μ/Τ1 Μ 2 Μ 2 /k0 DDR Μ/Τ1 Μ 2 Μ Δύο επίπεδα κρυφής μνήμης (L2) < Χωρίς βελτιστοποίηση: L1 Μ Μ 2 Μ 2 L2 Μ Μ 2 Μ 2 DDR Μ Μ 2 Μ 2 ( ) < Αξιοποίηση RF: L1 Μ Μ 2 Μ 2 /k0 L2 Μ Μ 2 Μ 2 /k0 DDR Μ Μ 2 Μ 2 ( ) < Αξιοποίηση RF και L1: L1 Μ 2 /T1 Μ 2 Μ 2 /k0 L2 Μ 2 /T1 Μ 2 Μ DDR Μ 2 /T1 Μ 2 Μ ( ) < Αξιοποίηση RF, L1 και L2: L1 Μ 2 /T1 Μ 2 Μ 2 /k0 L2 Μ 2 /k 2x Μ 2 Μ 2 /k 2y DDR Μ 2 /k 2x Μ 2 Μ 47

59 4.1.2 Χρονοπρογραμματισμός με χρήση του row-wise τρόπου αποθήκευσης του πίνακα στην κύρια μνήμη Αν ( 0 + 1) M dtype < L1 τότε η αξιοποίηση του RF γίνεται όπως περιγράφηκε παραπάνω. Ωστόσο, αν η διάσταση του πίνακα Α είναι δύναμη του 2, ( 0 + 1) M dtype > L1 και τότε οι αστοχίες στη μνήμη αυξάνονται επειδή κάποιες από τις k0 cache lines του πίνακα Α θα γραφτούν σε ίδιες θέσεις μνήμης γιατί έχουν το ίδιο cache modulo. Ιδιαίτερα αν > assoc L1, τότε αυξάνονται οι μετακινήσεις στα υψηλότερα επίπεδα μνήμης. Προτείνεται η μέθοδος του padding, δηλαδή προστίθενται επιπλέον δεδομένα στο τέλος του πίνακα για να αλλάξει η διάσταση Μ και να γίνει Μ+1 ώστε να μην είναι πλέον δύναμη του 2. Στην περίπτωση του row-wise layout του πίνακα Α, η εξίσωση 4.2 δεν ισχύει πλέον επειδή τα στοιχεία του πίνακα Α που έρχονται στην κρυφή μνήμη δεν ανήκουν σε συνεχόμενες θέσεις μνήμης της κύριας μνήμης, οπότε δεν θα γραφτούν και σε συνεχόμενες θέσεις μνήμης της κρυφής μνήμης και οι cache lines του πίνακα Α θα εμφανίσουν conflicts με τις cache lines του διανύσματος Χ. Ως εκ τούτου, ο πίνακας Α θα διώχνει το διάνυσμα Χ από την κρυφή μνήμη και θα αυξάνονται οι μετακινήσεις. Για να μειωθούν οι μετακινήσεις στη μνήμη, προτείνεται να χρησιμοποιείται ένας τρόπος της L1 για την αποθήκευση του διανύσματος Χ και καθένας από τους άλλους τρόπους της L1 να χρησιμοποιείται για την αποθήκευση κάθε μίας γραμμής του πίνακα Α, οπότε πρέπει να ισχύει: 0 assoc 1 [4.24] όπου assoc > 1. Συνήθως, το μέγεθος k0 σε αυτήν την περίπτωση είναι μικρότερο από οτι στην περίπτωση αλλαγής του layout του πίνακα Α. Ως εκ τούτου σε αυτήν την περίπτωση γίνονται περισσότερες μετακινήσεις στη μνήμη. Το μέγεθος του tile T1 ορίζεται έτσι ώστε το tile του διανύσματος Χ να χωράει σε ένα τρόπο της L1, δηλαδή πρέπει να ισχύει η παρακάτω εξίσωση: dtype T1 L1 assoc L1 [4.25] Τα ζεύγη (k0,t1) που πετυχαίνουν μικρές τιμές του Tdata και ικανοποιούν τις παραπάνω εξισώσεις επιλέγονται. Είναι η πρώτη φορά που το μέγεθος της κρυφής μνήμης, ο βαθμός 48

60 συσχέτισής της και η αλλαγή του layout του πίνακα Α αντιμετωπίζονται ως ένα πρόβλημα και όχι ξεχωριστά. Όσον αφορά στην αξιοποίηση της κρυφής μνήμης L2, εφαρμόζεται tiling όπως στην περίπτωση αλλαγής layout του πίνακα Α. Επειδή όμως σε αυτήν την περίπτωση τα δεδομένα δεν είναι γραμμένα σε συνεχόμενες θέσεις μνήμης στην κύρια μνήμη, γίνονται περισσότερες αστοχίες στη μνήμη. Για να αποφευχθεί αυτό, επιλέγεται το μέγεθος k 2x του tile να είναι ίσο με Μ. Τότε, το tile του πίνακα Α περιέχει ολόκληρες γραμμές οπότε τα στοιχεία είναι γραμμένα σε συνεχόμενες θέσεις μνήμης και μειώνονται οι αστοχίες. Στους ενσωματωμένους επεξεργαστές μπορεί η κρυφή μνήμη να είναι Direct Mapped. Τότε κάθε θέση μνήμης της DDR μνήμης μπορεί να αποθηκευτεί μόνο σε μία θέση της L2 μνήμης. Ως εκ τούτου, αυξάνονται τα conflicts. Ειδικά αν η διάσταση Μ του πίνακα Α είναι δύναμη του 2, τότε πολλαπλασιάζονται τα misses. Σε αυτήν την περίπτωση χρησιμοποιείται η μέθοδος padding. Η τεχνική του tiling σε αυτήν την περίπτωση δεν έχει νόημα γιατί δεν υπάρχει αποδοτικός τρόπος να παραμείνουν δεδομένα στην κρυφή μνήμη εξαιτίας του cache modulo effect. 4.2 Μονοπύρηνοι επεξεργαστές γενικού σκοπού Οι περισσότεροι επεξεργαστές γενικού σκοπού διαθέτουν μονάδα εκτέλεσης μίας πράξης σε περισσότερα από ένα δεδομένα. Η μονάδα ονομάζεται Single Input Multiple Data (SIMD). Για να αξιοποιηθούν αποτελεσματικά οι δυνατότητες που προσφέρει η SIMD μονάδα, πρέπει να ληφθεί υπόψη το σύνολο εντολών της και να επιλεγούν οι πλέον κατάλληλες εντολές με κριτήριο τη latency και το throughput. Επίσης, πρέπει να ληφθεί υπόψη όχι μόνο το πλήθος αλλά και το μέγεθος των καταχωρητών της μονάδας. Μια άλλη διαφοροποίηση της αρχιτεκτονικής των σύγχρονων επεξεργαστών γενικού σκοπού από τους ενσωματωμένους επεξεργαστές είναι ότι οι μνήμες εκτελούν προανάκληση δεδομένων. Τέλος, οι περισσότεροι σύγχρονοι επεξεργαστές γενικού σκοπού διαθέτουν περισσότερους από έναν πυρήνες και για αυτό το λόγο σε αυτήν την ενότητα εξετάζονται και οι πολυπύρηνες αρχιτεκτονικές. Ο χρόνος που απαιτείται για την εκτέλεση του αλγορίθμου σε τέτοιες αρχιτεκτονικές για τη γενική περίπτωση που εφαρμόζεται tiling δίνεται από την παρακάτω σχέση: T total = max (T data, T matrix operations + c M T1, T addressing) [4.26] 49

61 όπου c είναι το σύνολο της καθυστέρησης που εισάγεται από τις εντολές του συνόλου εντολών SSE / AVX Χρονοπρογραμματισμός με χρήση νέου τρόπου αποθήκευσης του πίνακα (data array layout) Κάθε XMM καταχωρητής έχει μήκος 128 bits οπότε χρησιμοποιώντας το σύνολο εντολών SSE σε κάθε ΧΜΜ καταχωρητή καταχωρούνται ταυτόχρονα τέσσερα δεδομένα τύπου float (4 bytes). Αν για παράδειγμα η cache line της L1 έχει μήκος 16 bytes, τότε η SIMD μονάδα επεξεργάζεται όλα τα στοιχεία μίας cache line χωρίς να χρειάζεται να έρθει πολλές φορές από τη μνήμη. Αντίστοιχα επειδή κάθε YMM καταχωρητής έχει μήκος 256 bits, σε κάθε ΥΜΜ καταχωρητή καταχωρούνται ταυτόχρονα οκτώ δεδομένα τύπου float. Το μήκος του καταχωρητή πρέπει να ληφθεί υπόψη όταν αλλάζει το layout του πίνακα (Σχ. 4.5). Και στην περίπτωση των επεξεργαστών γενικού σκοπού, όπως και στην περίπτωση των ενσωματωμένων επεξεργαστών, η αλλαγή του layout του πίνακα έχει νόημα μόνο σε συστήματα πραγματικού χρόνου. Σχ. 4.5: Αλλαγή του layout του πίνακα Α όταν χρησιμοποιούνται 4 ΧΜΜ καταχωρητές Αξιοποίηση αρχείου καταχωρητών (RF) Το πλήθος των XMM/YMM καταχωρητών αποτελεί το RF. Οπως και στην περίπτωση των 50

62 ενσωματωμένων επεξεργαστών επιλέγονται k0 καταχωρητές έτσι ώστε RFs = Η διαφορά από την περίπτωση των ενσωματωμένων επεξεργαστών είναι ότι τώρα έχει αυξηθεί η παραλληλία χάρη στο μέγεθος των XMM/YMM καταχωρητών. Οπότε τώρα αντί να πολλαπλασιάζονται k0 στοιχεία από k0 γραμμές του πίνακα A με ένα στοιχείο του διανύσματος Χ, πολλαπλασιάζονται 4 x k0 ή 8 x k0 στοιχεία από k0 γραμμές του πίνακα Α με 4 ή 8 στοιχεία του διανύσματος Χ, στην περίπτωση των XMM ή ΥΜΜ καταχωρητών αντίστοιχα, στην περίπτωση που τα δεδομένα είναι τύπου float. Αντίστοιχα αποτελέσματα προκύπτουν και για τους υπόλοιπους τύπους δεδομένων. Σχ. 4.6α: Αξιοποίηση του συνόλου εντολών SSE. 51

63 Σχ. 4.6β: Αξιοποίηση του συνόλου εντολών AVX. 52

64 4.2.3 Αξιοποίηση συνόλου εντολών (instruction set) της μονάδας SIMD Το σύνολο εντολών της μονάδας SIMD προσφέρει εναλλακτικές ως προς το πώς μπορεί να γραφτεί ο αλγόριθμος. Συγκεκριμένα, όσον αφορά στην Streaming SIMD Extension (SSE) επέκταση του συνόλου εντολών, χρησιμοποιώντας τις εντολές _ mm _unpacklo/hi _ps και _mm _shuffle _ps, που έχουν μικρό χρόνο εκτέλεσης, μειώνονται οι εντολές πρόσθεσης _mm _hadd _ps που χρησιμοποιούνται και έχουν μεγάλο χρόνο εκτέλεσης. Στο Σχ. 4.6α φαίνεται πως διαμορφώνονται οι εντολές διευθυνσιοδότησης με βέλτιστο τρόπο και πως γίνεται η εφαρμογή των εντολών πάνω στα δεδομένα. Ομοίως, όσον αφορά στην Advanced Vector Extensions (AVX) επέκταση του συνόλου εντολών, χρησιμοποιούνται οι αντίστοιχες εντολές _ mm256 _unpacklo/hi _ps και _mm256 _shuffle _ps σε συνδυασμό με τις _mm256 _permute2f128 _ps και _mm256 _blend _ps (Σχ. 4.6β). Σε αυτό το σημείο πρέπει να σημειωθεί ότι η AVX επέκταση του συνόλου εντολών δεν βελτιώνει την ταχύτητα εκτέλεσης του αλγορίθμου περισσότερο από ότι την βελτιώνει η SSE επέκταση του συνόλου εντολών, διότι μόνο οι αριθμητικές πράξεις εκτελούνται με διπλάσια ταχύτητα Αξιοποίηση κρυφής μνήμης δεδομένων L1 και L2 Η κρυφή μνήμη αξιοποιείται όπως και στην περίπτωση των ενσωματωμένων επεξεργαστών. Επειδή όμως στους περισσότερους επεξεργαστές γενικού σκοπού η προσκόμιση ενός μπλοκ από την κύρια μνήμη στην κρυφή μνήμη γίνεται εκ των προτέρων (prefetch), μειώνονται τα misses ούτως ή άλλως. Οπότε το tiling δεν προκαλεί τόσο μεγάλη βελτίωση όσο στους ενσωματωμένους επεξεργαστές. Μία ακόμη διαφορά είναι ότι στους επεξεργαστές γενικού σκοπού που χρησιμοποιείται η μονάδα SIMD, το tiling αυξάνει τις πράξεις διευθυνσιοδότησης. Υπάρχει λοιπόν trade-off ανάμεσα στις μετακινήσεις στην L1 και στο πλήθος των πράξεων που εκτελούνται. Μεγάλο μέγεθος του tile T1 έχει ως αποτέλεσμα μείωση των πράξεων αλλά αύξηση των μετακινήσεων στην L Πολυπύρηνοι επεξεργαστές γενικού σκοπού Στους επεξεργαστές γενικού σκοπού πολλών πυρήνων, αν δεν παρέμβει ο προγραμματιστής, το 53

65 λειτουργικό σύστημα αναλαμβάνει να διαμοιράσει τα νήματα στους πυρήνες ώστε να εκτελεστεί η πολυνηματική διεργασία ή οι πολυνηματικές διεργασίες. Σε αντίθετη περίπτωση, ο προγραμματιστής ορίζει σε ποιον επεξεργαστή θα εκτελεστεί κάθε νήμα, θέτοντας κατάλληλα τη σημαία ανάθεσης νήματος σε CPU (CPU thread affinity flag). Για να αξιοποιηθεί η ύπαρξη πολλών πυρήνων, προτείνεται να χωριστεί το πρόβλημα ΠΠΔ σε επιμέρους προβλήματα, τα οποία θα εκτελούνται παράλληλα σε διαφορετικό πυρήνα το καθένα και δεν θα επικοινωνούν μεταξύ τους, δηλαδή δεν θα ανταλλάσουν πληροφορία. Ως εκ τούτου, κάθε υποπρόβλημα αποτελεί ένα νήμα και ο προγραμματιστής ορίζει σε ποιο πυρήνα θα εκτελεστεί. Αυτή η προσέγγιση προτείνεται για συστήματα SMP (Symmetric Multi-Processor), όπως αυτά που φαίνονται στα Σχ. 4.8 και 4.9. Δεν χρησιμοποιείται το πρότυπο MPI (Message Passing Interface) καθώς οι επεξεργαστές δεν χρειάζεται να ανταλλάσουν πληροφορία. Ο προγραμματιστής έχει προκαθορίσει ποιο τμήμα των υπολογισμών θα αναλάβει κάθε επεξεργαστής και ως εκ τούτου, ο κώδικας ορίζει πότε θα τερματίσει ο αλγόριθμος, όταν δηλαδή θα έχουν εκτελεστεί όλα τα νήματα. Ο χωρισμός του προβλήματος σε υποπροβλήματα γίνεται ως εξής: κάθε υποπρόβλημα αποτελεί ένα νήμα και κάθε νήμα εκτελείται σε διαφορετικό πυρήνα. Ο πίνακας Α χωρίζεται σε ισόποσα μέρη ανάλογα με το πλήθος των πυρήνων που χρησιμοποιούνται. Προτείνεται ο διαχωρισμός του πίνακα ανά σύνολο γραμμών (Σχ. 4.7α) σύμφωνα με τον οποίο κάθε πυρήνας υπολογίζει ένα υποσύνολο των στοιχείων του διανύσματος Υ, χρησιμοποιώντας το αντίστοιχο υποσύνολο γραμμών του πίνακα Α και όλα τα στοιχεία του διανύσματος Χ. Τα νήματα εκτελούνται παράλληλα και υπολογίζουν τα τελικά και όχι τα ενδιάμεσα αποτελέσματα, οπότε μετά την εκτέλεση των νημάτων δεν χρειάζονται επιπλέον υπολογισμοί ούτε χρειάζεται τα νήματα να επικοινωνήσουν μεταξύ τους. Ο διαχωρισμός του πίνακα ανά σύνολο στηλών (Σχ. 4.7β) δεν είναι αποδοτικός, διότι κάθε πυρήνας υπολογίζει ενδιάμεσα αποτελέσματα του διανύσματος Υ, οπότε πρέπει στη συνέχεια οι πυρήνες να επικοινωνήσουν μεταξύ τους και να ανταλλάξουν πληροφορία ώστε να υπολογιστούν τα τελικά αποτελέσματα ή να αποθηκεύσουν τα ενδιάμεσα αποτελέσματα στη μνήμη και στη συνέχεια, όταν έχουν ολοκληρωθεί όλα τα νήματα, να τα καλέσει το πρόγραμμα από τη μνήμη και να υπολογίσει τα τελικά απότελέσματα. Είναι φανερό ότι η απόδοση επιβαρύνεται καθώς είτε οι προσβάσεις και ο απαιτούμενος χώρος στην κύρια μνήμη αυξάνονται είτε υπάρχει το κόστος της επικοινωνίας μεταξύ των πυρήνων. 54

66 Σχ. 4.7α: Ο πίνακας Α χωρίζεται σε Ν ισόποσα μέρη ανά σύνολο γραμμών (προτεινόμενος τρόπος) Σχ. 4.7β: Ο πίνακας Α χωρίζεται σε Ν ισόποσα μέρη ανά σύνολο στηλών. Η απόδοση του αλγορίθμου εξαρτάται μόνο από το χρόνο εκτέλεσης κάθε νήματος και τη μεταφορά των δεδομένων από και προς τη μνήμη. Η κρίσιμη παράμετρος όμως είναι η καθυστέρηση της μνήμης γιατί ο χρόνος που απαιτείται για τη μεταφορά των δεδομένων από και προς τη μνήμη είναι πολύ μεγαλύτερος από το χρόνο που χρειάζεται για τον εκτέλεση των πράξεων στον επεξεργαστή. Επειδή ο πίνακας Α δεν επαναχρησιμοποιείται, η αξιοποίηση της κρυφής μνήμης έγγειται στην ελαχιστοποίηση των μετακινήσεων των διανυσμάτων Χ και Υ και δεν μπορεί να αντισταθμίσει την καθυστέρηση της κύριας μνήμης. Όσον αφορά στην αξιοποίηση της πολυπύρηνης αρχιτεκτονικής, είναι φανερό ότι αφού δεν υπάρχει κόστος 55

67 επικοινωνίας των πυρήνων, η εκτέλεση του αλγορίθμου επιταχύνεται όσο αυξάνονται οι πυρήνες που χρησιμοποιούνται. Ωστόσο, υπάρχει ένα όριο στο όφελος αξιοποίησης των πυρήνων και αυτό οφείλεται στο περιορισμένο εύρος ζώνης της κύριας μνήμης. Η καθυστέρηση της μνήμης δεν μειώνεται από την προανάκληση δεδομένων (prefetch) διότι το εύρος ζώνης της μνήμης δεν είναι αρκετά μεγάλο ώστε να μπορούν να προανακληθούν οι επόμενες γραμμές του πίνακα Α που θα χρησιμοποιηθούν από τους πυρήνες. Ως εκ τούτου, η μονάδα SIMD μένει ανενεργή μέχρι να προσκομιστούν από τη μνήμη τα επόμενα δεδομένα του πίνακα Α που θα χρησιμοποιηθούν. Για όλους τους παραπάνω λόγους, το bottleneck της σχεδίασης είναι η καθυστέρηση της κύριας μνήμης και το περιορισμένο εύρος ζώνης της. Σε αυτό το σημείο πρέπει να σημειωθεί ότι ο διαχωρισμός του προβλήματος σε επιμέρους προβλήματα, η αρχικοποίηση των νημάτων και ο συγχρονισμός τους απαιτούν χρόνο, ο οποίος είναι συγκρίσιμος με το χρόνο εκτέλεσης των νημάτων και μειώνει την απόδοση του αλγορίθμου. Στην περίπτωση των επεξεργαστών γενικού σκοπού με πολλούς πυρήνες, η ιεραρχία της κρυφής μνήμης έχει πολλές εναλλακτικές. Έστω κρυφή μνήμη τριών επιπέδων. Οι πιο πιθανές περιπτώσεις είναι είτε κάθε πυρήνας να έχει δική του L1 και να μοιράζεται την L2 και L3 με τους υπόλοιπους πυρήνες (Σχ. 4.8) είτε κάθε πυρήνας να έχει δική του L1 και L2 και να μοιράζεται μόνο την L3 (Σχ. 4.9). Στην πρώτη περίπτωση, επειδή όλοι οι πυρήνες καλούν τα στοιχεία του διανύσματος Χ πολλές φορές κι επειδή η κοινή κρυφή μνήμη είναι αρκετά μεγάλη ώστε το διάνυσμα Χ να είναι μικρότερο από ένα τρόπο της κοινής κρυφής μνήμης, τότε λόγω της πολιτικής αντικατάστασης πλαισίων της κρυφής μνήμης, σύμφωνα με την οποία αντικαθίστανται τα πλαίσια των οποίων τα δεδομένα δεν έχουν χρησιμοποιηθεί πρόσφατα, Least Recently Used (LRU), το διάνυσμα Χ παραμένει στην κοινή κρυφή μνήμη L2. Επίσης, λόγω του οριζόντιου διαμοιρασμού του πίνακα στους πυρήνες, τα στοιχεία του διανύσματος Υ μετακινούνται μία φορά στην κύρια μνήμη, ομοίως και τα στοιχεία του πίνακα Α επειδή δεν επαναχρησιμοποιούνται. Για τους παραπάνω λόγους και επειδή η L3 είναι πολύ μεγάλη οπότε τα διανύσματα Χ και Υ παραμένουν σε αυτήν, δεν χρειάζεται tiling για να βελτιστοποιηθεί η απόδοση του αλγορίθμου Πολλαπλασιασμού Πίνακα επί Διάνυσμα. 56

68 Σχ. 4.8: Κάθε πυρήνας να έχει δική του L1 και να μοιράζεται την L2 με τους υπόλοιπους πυρήνες, έστω διπύρηνος επεξεργαστής. Σχ. 4.9: Κάθε πυρήνας να έχει δική του L1 και L2 και μοιράζεται την L3 με τους υπόλοιπους πυρήνες, έστω διπύρηνος επεξεργαστής. Στην περίπτωση που κάθε πυρήνας έχει δική του L1 και L2 και μοιράζεται μόνο την L3, η απόδοση βελτιστοποιείται όταν το διάνυσμα Χ χωράει σε έναν τρόπο της κρυφής μνήμης L2. Πρέπει δηλαδή να ισχύει η παρακάτω εξίσωση: L2 (assoc L2 k 0 ) assoc L2 M dtype [4.23] όπου assoc είναι ο βαθμός συσχέτισης της μνήμης, k0 το πλήθος των YMM καταχωρητών που χρησιμοποιούνται, Μ είναι το πλήθος των στοιχείων μίας γραμμής του πίνακα Α και dtype ο τύπος των δεδομένων (πχ float). Στην παραπάνω εξίσωση έχει ληφθεί υπόψη ότι 57

69 χρησιμοποιούνται k0 καταχωρητές για την αποθήκευση των ενδιάμεσων αποτελεσμάτων και ένας καταχωρητής για την αποθήκευση των στοιχείων του διανύσματος Χ που επαναχρησιμοποιούνται. Χρησιμοποιείται δηλαδή το παρακάτω scheduling (Σχ. 4.10): Σχ. 4.10: Το scheduling στην περίπτωση του πολυπύρηνου επεξεργαστή. Όπως φαίνεται και στην εικόνα, κάθε επεξεργαστής αναλαμβάνει να επεξεργαστεί ένα σύνολο γραμμών και να υπολογίσει ένα μέρος του διανύσματος Υ (ροζ φόντο). Κάθε φορά στην κρυφή μνήμη L2 έρχεται ένα υποσύνολο γραμμών και όλο το διάνυσμα Χ και εφόσον το διάνυσμα Χ χωράει σε έναν τρόπο της L2, τότε παραμένει σε αυτήν. Για να γίνει αυτό, επιλέγονται τόσες γραμμές όσοι είναι οι υπόλοιποι τρόποι της L2 (κίτρινο πλαίσιο) και σχηματίζεται ένα μπλοκ που κινείται προς τα κάτω (βελάκι 2). Για κάθε γραμμή δεσμεύεται ένας καταχωρητής στον οποίο θα αποθηκεύονται τα ενδιάμεσα αποτελέσματα μέχρι να υπολογιστεί το αντίστοιχο στοιχείο του Υ οπότε συνολικά χρησιμοποιούνται k0=assoc-1 ΥΜΜ καταχωρητές για τα ενδιάμεσα αποτελέσματα. Ως εκ τούτου, κάθε γραμμή του μπλοκ αντιστοιχεί σε έναν τρόπο της κρυφής μνήμης L2, όπως εξηγείται πιο μετά. Ανάλογα με τον τύπο των δεδομένων χωράει διαφορετικό πλήθος δεδομένων σε κάθε ΥΜΜ καταχωρητή, για παράδειγμα για float δεδομένα κάθε ΥΜΜ καταχωρητής χωράει 8 δεδομένα. Οπότε, κάθε γραμμή χωρίζεται περαιτέρω σε υποσύνολα των 8 στοιχείων (μπλε φόντο) σχηματίζεται ένα μπλοκ που κινείται προς τα δεξιά (βελάκι 1) και πολλαπλασιάζεται με το αντίστοιχο υποσύνολο των στοιχείων του διανύσματος Χ 58

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

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

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

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Γ ) Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών

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

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

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

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

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

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

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

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Γ ) Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Κώδικας μηχανής (E) Ο επεξεργαστής μπορεί να εκτελέσει το αρχιτεκτονικό σύνολο εντολών (instruction set architecture) Οι

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

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

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

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

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

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

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

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 3 : Μια άποψη του κορυφαίου επιπέδου λειτουργίας και διασύνδεσης του υπολογιστή Καρβούνης Ευάγγελος Η έννοια

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

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

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

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

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

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

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

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής

Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Μία μέθοδος προσομοίωσης ψηφιακών κυκλωμάτων Εξελικτικής Υπολογιστικής Βασισμένο σε μια εργασία των Καζαρλή, Καλόμοιρου, Μαστοροκώστα, Μπαλουκτσή, Καλαϊτζή, Βαλαή, Πετρίδη Εισαγωγή Η Εξελικτική Υπολογιστική

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

ΠΕΡΙΕΧΟΜΕΝΑ. 1.1. Υλικό και Λογισμικό.. 1 1.2 Αρχιτεκτονική Υπολογιστών.. 3 1.3 Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6

ΠΕΡΙΕΧΟΜΕΝΑ. 1.1. Υλικό και Λογισμικό.. 1 1.2 Αρχιτεκτονική Υπολογιστών.. 3 1.3 Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή στην Δομή, Οργάνωση, Λειτουργία και Αξιολόγηση Υπολογιστών 1.1. Υλικό και Λογισμικό.. 1 1.2 Αρχιτεκτονική Υπολογιστών.. 3 1.3 Δομή, Οργάνωση και Λειτουργία Υπολογιστών 6 1.3.1 Δομή

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

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

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

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

EM 361: Παράλληλοι Υπολογισμοί

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Αρχιτεκτονική Υπολογιστών Άσκηση 6: Ασκήσεις Εξαμήνου Μέρος Β Νοέμβριος 2016 Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση ενός

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

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

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Παράλληλα Συστήματα. Γιώργος Δημητρίου. Ενότητα 3 η : Παράλληλη Επεξεργασία. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Ενότητα 3 η : Παράλληλη Επεξεργασία Παράλληλες Αρχιτεκτονικές Παράλληλο σύστημα είναι ένα σύνολο από επεξεργαστικά στοιχεία (processing elements) τα οποία: συνεργάζονται για γρήγορη επίλυση

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

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

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

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

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Συστήματα Παράλληλης

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

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

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Συστήματα σε Ολοκληρωμένα Κυκλώματα Συστήματα σε Ολοκληρωμένα Κυκλώματα Κεφάλαιο 4: Αρχιτεκτονική των Embedded Μικροεπεξεργαστών Διδάσκων: Καθηγητής Οδυσσέας Κουφοπαύλου Τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών ΕΙΣΑΓΩΓΗ Παρουσιάζεται

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

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

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

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

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ.

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Προσομοίωση μεγάλης κλίμακας γραμμικών κυκλωμάτων σε παράλληλες πλατφόρμες Ειδικό Θέμα Ιωαννίδης Κ. Σταύρος Αριθμός Ειδικού Μητρώου:

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

http://www.cslab.ece.ntua.gr/diplom/

http://www.cslab.ece.ntua.gr/diplom/ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ KΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr/ ιπλωµατική

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

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα Ιεραρχία Μνήμης Υπολογιστή Εξωτερική Μνήμη Εσωτερική Μνήμη Κρυφή Μνήμη (Cache) μεγαλύτερη χωρητικότητα Καταχωρητές (Registers) Κεντρική Μονάδα (CPU) μεγαλύτερη ταχύτητα Πολλές σημαντικές εφαρμογές διαχειρίζονται

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

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής Κεφάλαιο 4 ο Ο Προσωπικός Υπολογιστής Μάθημα 4.3 Ο Επεξεργαστής - Εισαγωγή - Συχνότητα λειτουργίας - Εύρος διαδρόμου δεδομένων - Εύρος διαδρόμου διευθύνσεων - Εύρος καταχωρητών Όταν ολοκληρώσεις το μάθημα

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

Εισαγωγή στην Επιστήμη των Υπολογιστών

Εισαγωγή στην Επιστήμη των Υπολογιστών Εισαγωγή στην Επιστήμη των Υπολογιστών Ενότητα 3: Χειρισμός δεδομένων, 2ΔΩ Τμήμα: Αγροτικής Οικονομίας & Ανάπτυξης Διδάσκων: Θεόδωρος Τσιλιγκιρίδης Μαθησιακοί Στόχοι Η Ενότητα 3 διαπραγματεύεται θέματα

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

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

Αρχιτεκτονική Υπολογιστών Αρχιτεκτονική Υπολογιστών Παραλληλισμός Βασικές Πηγές: Αρχιτεκτονική Υπολογιστών: μια Δομημένη Προσέγγιση, Α. Tanenbaum, Vrije Universiteit, Amsterdam. Computer Architecture and Engineering, K. Asanovic,

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

; Γιατί είναι ταχύτερη η λήψη και αποκωδικοποίηση των εντολών σταθερού μήκους;

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

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

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

Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας Μάθημα 4: Κεντρική Μονάδα Επεξεργασίας 4.1 Γενικά Ο υπολογιστής επεξεργάζεται δεδομένα ακολουθώντας βήμα βήμα, τις εντολές ενός προγράμματος. Το τμήμα του υπολογιστή, που εκτελεί τις εντολές και συντονίζει

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

Εισαγωγή στην Πληροφορική

Εισαγωγή στην Πληροφορική Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή στην Πληροφορική 1 Γενικές πληροφορίες Εισαγωγή στην Πληροφορική ιδασκαλία: Παναγιώτης Χατζηδούκας Email:

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

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 1 : Οργάνωση και Αρχιτεκτονική υπολογιστών Καρβούνης Ευάγγελος Εισαγωγή Τεράστια ποικιλία προϊόντων ως προς

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

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Α Γενικού Λυκείου Κεφάλαιο 1 1.1 Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Ιδιαίτερη θέση έχουν οι Υπολογιστικές συσκευές. Μηχανισμός

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

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

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

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Άσκηση 5: Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. Άσκηση 5: Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr Συστήματα Παράλληλης

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

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α' ΛΥΚΕΙΟΥ ΕΝΟΤΗΤΑ 1η ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ 1. Τι ονομάζουμε υλικό και τι λογισμικό ενός υπολογιστικού συστήματος; 2. Τι είναι α) η μητρική πλακέτα ( motherboard), β) η κεντρική μονάδα

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

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

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

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

Εισαγωγή στην Αρχιτεκτονική Η/Υ

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

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

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Πληροφορική Ι Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ Δρ. Γκόγκος Χρήστος Εκτέλεση προγραμμάτων Πρόγραμμα: Ένα σύνολο από εντολές.

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

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 11-12 : Δομή και Λειτουργία της CPU Ευάγγελος Καρβούνης Παρασκευή, 22/01/2016 2 Οργάνωση της CPU Η CPU πρέπει:

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

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

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

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

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

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

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

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

Λειτουργικά Συστήματα Η/Υ Λειτουργικά Συστήματα Η/Υ Κεφάλαιο 7 «Διαχείριση Μνήμης» Διδάσκων: Δ. Λιαροκάπης Διαφάνειες: Π. Χατζηδούκας 1 Κύρια Μνήμη 1. Εισαγωγή 2. Βασική διαχείριση μνήμης 3. Μνήμη και πολυπρογραμματισμός 4. Τμηματοποίηση

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

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος

Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος ΕΣ 08 Επεξεργαστές Ψηφιακών Σημάτων Εισαγωγή στα Συστήματα Ψηφιακής Επεξεργασίας Σήματος Κλήμης Νταλιάνης Λέκτορας Π.Δ.407/80 Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου Αρχιτεκτονική

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Άσκηση 6: Ασκήσεις Χειμερινού Εξαμήνου 2017-2018 (μέρος Β ) Στην άσκηση αυτή θα μελετήσουμε την εκτέλεση

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

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

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

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

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 1 : Οργάνωση και Αρχιτεκτονική υπολογιστών Φώτης Βαρζιώτης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα Τμήμα Μηχανικών

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

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

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

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

Chapter 4 ( ή 1 στο βιβλίο σας)

Chapter 4 ( ή 1 στο βιβλίο σας) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 4 ( ή 1 στο βιβλίο σας) Αξιολόγηση και κατανόηση της απόδοσης Δέκατη (10 η ) δίωρη διάλεξη. Διαφάνειες διδασκαλίας από

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

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

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

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

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

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

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

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου ΚΕΦΑΛΑΙΟ 1 Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου Υπολογιστικά συστήματα σχεδιάστηκαν για να καλύψουν συγκεκριμένες ανάγκες σε συγκεκριμένη χρονική στιγμή και βοηθούν στη συνολική πρόοδο της τεχνολογίας Φουκαράκη

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 201 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

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

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4 Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφάλαιο 7.4 Ε/Ε Οδηγούμενη από Διακοπές Το πρόβλημα με την προγραμματιζόμενη Ε/Ε είναι ότι ο επεξεργαστής πρέπει να περιμένει ώστε η μονάδα Ε/Ε που τον ενδιαφέρει

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

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Τεχνολογία Πολυμέσων. Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Τεχνολογία Πολυμέσων Ενότητα # 3: Συστήματα πολυμέσων Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - UNIX Μάθημα: Λειτουργικά Συστήματα Συστήματα Αρχείων Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης (clam@unipi.gr) Δρ. Α. Γαλάνη (agalani@unipi.gr) Λειτουργικά Συστήματα 1 Αρχεία με Χαρτογράφηση

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

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων

ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων ΚΕΦΑΛΑΙΟ 2: Χειρισµός εδοµένων 2.1 Αρχιτεκτονική Υπολογιστών 2.1 Αρχιτεκτονική Υπολογιστών 2.2 Γλώσσα Μηχανής 2.3 Εκτέλεση προγράµµατος 2.4 Αριθµητικές και λογικές εντολές 2.5 Επικοινωνία µε άλλες συσκευές

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

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Β ) Λειτουργικό Σύστημα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

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

Αρχιτεκτονικη υπολογιστων

Αρχιτεκτονικη υπολογιστων ΤΕΙ Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονικη υπολογιστων Τζαγκαράκης Χαράλαμπος hatzagarak@cs.teicrete.gr Εισαγωγη: ο επεξεργαστης και η γλωσσα του Eπεξεργαστής: MIPS Microprocessor Without Interlocked

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 11/10/07 Τμήμα θεωρίας: Α.Μ. 8, 9 Κάθε Πέμπτη, 11πμ-2μμ, ΑΜΦ23. Διδάσκων: Ντίνος Φερεντίνος Γραφείο 118 email: kpf3@cornell.edu Μάθημα: Θεωρία + προαιρετικό

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

Εισαγωγή Συμβόλαιο Μαθήματος

Εισαγωγή Συμβόλαιο Μαθήματος ΗΜΥ 212 Οργάνωση Υπολογιστών και Μικροεπεξεγραστές Εαρινό Εξάμηνο 2007 Συμβόλαιο Μαθήματος 1 Γενικές Πληροφορίες Διαλέξεις: Διδάσκων: Βοηθός Μαθήματος: Δευτέρα και Πέμπτη, 16:30 18:00 μ.μ. Πανεπιστημιούπολη,

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

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

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

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

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

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

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

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου;

Α Ν Α Λ Τ Η Α Λ Γ Ο Ρ Ι Θ Μ Ω Ν Κ Ε Υ Α Λ Α Ι Ο 5. Πως υπολογίζεται ο χρόνος εκτέλεσης ενός αλγορίθμου; 5.1 Επίδοση αλγορίθμων Μέχρι τώρα έχουμε γνωρίσει διάφορους αλγόριθμους (αναζήτησης, ταξινόμησης, κ.α.). Στο σημείο αυτό θα παρουσιάσουμε ένα τρόπο εκτίμησης της επίδοσης (performance) η της αποδοτικότητας

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

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

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

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

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

ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΔΙΕΝΕΡΓΕΙΑ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΜΕΛΕΤΩΝ ΠΛΟΣΚΑΣ ΝΙΚΟΛΑΟΣ Α.Μ. 123/04 ΕΠΙΒΛΕΠΩΝ: ΣΑΜΑΡΑΣ ΝΙΚΟΛΑΟΣ ΘΕΣΣΑΛΟΝΙΚΗ, ΙΟΥΝΙΟΣ 2007 Περιεχόμενα

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

Στοιχεία από την αρχιτεκτονική των μικροϋπολογιστών

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

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

Συστήματα σε Ολοκληρωμένα Κυκλώματα

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

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

Θέματα Διπλωματικών Εργασιών

Θέματα Διπλωματικών Εργασιών Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. & Μηχ. Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Εργαστήριο Μικροϋπολογιστών & Ψηφιακών Συστημάτων Τηλ.: 210 772-2500, Γραμμ.: 210 772-3548,

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

Υλικό Υπολογιστών (Hardware) ΜΥΥ-106 Εισαγωγή στους Η/Υ και Πληροφορική

Υλικό Υπολογιστών (Hardware) ΜΥΥ-106 Εισαγωγή στους Η/Υ και Πληροφορική Υλικό Υπολογιστών (Hardware) ΜΥΥ-106 Εισαγωγή στους Η/Υ και Πληροφορική Κύρια μέρη υπολογιστή Υπάρχουν διάφορα είδη υπολογιστών προσωπικοί (επιτραπέζιοι, φορητοί,...), ενσωματωμένοι, εξυπηρετητές (servers)

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

Εντολές γλώσσας μηχανής

Εντολές γλώσσας μηχανής Εντολές γλώσσας μηχανής Στον υπολογιστή MIPS η εντολή πρόσθεσε τα περιεχόμενα των καταχωρητών 17 και 20 και τοποθέτησε το αποτέλεσμα στον καταχωρητή 9 έχει την μορφή: 00000010001101000100100000100000 Πεδία

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

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

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία Λειτουργικά Συστήματα Ι Καθηγήτρια Παπαδάκη Αναστασία 2013 1 Ηλεκτρονικός Υπολογιστής αποτελείται: 1. Από Υλικό Hardware (CPUs, RAM, Δίσκοι), & 2. Λογισμικό - Software Και μπορεί να εκτελέσει διάφορες

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ. ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ ΜΑΘΗΜΑ 4 ο ΟΡΓΑΝΩΣΗ ΤΗΣ ΜΝΗΜΗΣ ΠΕΡΙΦΕΡΕΙΑΚΗ ΜΝΗΜΗ ΧΕΙΜΩΝΑΣ 2009 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ 1 Γενική οργάνωση του υπολογιστή Ο καταχωρητής δεδομένων της μνήμης (memory data register

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη μιας προσαρμοστικής πολιτικής αντικατάστασης αρχείων, με χρήση

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

Δομές Δεδομένων και Αλγόριθμοι

Δομές Δεδομένων και Αλγόριθμοι Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας

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

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή Αριθμός bit δίαυλου δεδομένων (Data Bus) Αριθμός bit δίαυλου διευθύνσεων (Address Bus) Μέγιστη συχνότητα λειτουργίας (Clock Frequency) Τύποι εντολών Αριθμητική

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

Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

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

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

ΑΣΚΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΓΙΑ ΤΗ ΘΕΩΡΙΑ

ΑΣΚΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΓΙΑ ΤΗ ΘΕΩΡΙΑ ΑΣΚΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΓΙΑ ΤΗ ΘΕΩΡΙΑ Άσκηση 1 Ένας επεξεργαστής (ΚΜΕ) υποστηρίζει 371 εντολές. Πόσα bit θα πρέπει να είναι ο καταχωρητής εντολής (ελάχιστη τιμή); (α) 4 bit (β) 16 bit (γ) 1 bit (δ)

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Τμήμα Πληροφορικής Άσκηση : Λυμένες Ασκήσεις Έστω ένα σύστημα μνήμης, στο οποίο έχουμε προσθέσει μια κρυφή μνήμη θυμάτων 6 θέσεων

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

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

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

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

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ Απαντήσεις στις ερωτήσεις του βιβλίου ΚΕΦΑΛΑΙΟ 3 1. 2. Από ποια στοιχεία αποτελείται το κεντρικό μέρος ενός υπολογιστή και ποια η λειτουργία καθενός; Κεντρική Μονάδα επεξεργασίας

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

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί Χαρμανδάρης Βαγγέλης, Τμήμα Εφαρμοσμένων Μαθηματικών Πανεπιστήμιο Κρήτης, Εαρινό Εξάμηνο 2013/14 Κεφάλαιο 3: Θεωρία Παράλληλου Προγραμματισμού

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

ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΛΛΗΛΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ 9o εξάμηνο ΗΜΜΥ, ακαδημαϊκό έτος

ΣΥΣΤΗΜΑΤΑ ΠΑΡΑΛΛΗΛΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ 9o εξάμηνο ΗΜΜΥ, ακαδημαϊκό έτος ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΞΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ http://www.cslab.ece.ntua.gr ΣΥΣΤΗΜΑΤΑ

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

Επιστημονικοί Υπολογισμοί (ή Υπολογιστική Επιστήμη)

Επιστημονικοί Υπολογισμοί (ή Υπολογιστική Επιστήμη) Επιστημονικοί Υπολογισμοί (ή Υπολογιστική Επιστήμη) Ασχολoύνται με την κατασκευή μαθηματικών μοντέλων και με τεχνικές ποσοτικής ανάλυσης και τη χρήση υπολογιστών για την ανάλυση και την επίλυση επιστημονικών

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

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο

«Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο ΤΕΙ Δυτικής Ελλάδας Τμήμα Μηχανικών Πληροφορικής ΤΕ Εργαστήριο Σχεδίασης Ψηφιακών Ολοκληρωμένων Κυκλωμάτων και Συστημάτων «Σχεδιασμός Ψηφιακών Συστημάτων σε FPGA» Εαρινό εξάμηνο 2016-2017 Διάλεξη 5 η :

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

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

ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Άριστος Πασιάς 1 ΗΛΕΚΤΡΟΝΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Η ΔΟΜΗ ΤΟΥ ΗΛΕΚΤΡΟΝΙΚΟΥ ΥΠΟΛΟΓΙΣΤΗ Άριστος Πασιάς Σεπτέμβριος 2017 2 Στόχοι: Στο τέλος αυτού του μαθήματος ο μαθητή πρέπει: Να μπορεί να αναφέρει τα κύρια χαρακτηριστικά

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