ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ. Διπλωματικη Εργασια. Γεωργία Ε. Κρόκου

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

Download "ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ. Διπλωματικη Εργασια. Γεωργία Ε. Κρόκου"

Transcript

1 ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ Αλγόριθμοι Επεξεργασιας Εικονας Υψηλης Ευκρεινιας σε Πολυεπεξεργαστικα συστηματα Διπλωματικη Εργασια Γεωργία Ε. Κρόκου Επιβλέποντες Καθηγητές: Μπέλλας Νικόλαος Αναπληρωτής Καθηγητής Π.Θ. Αντωνόπουλος Χρήστος Επίκουρος Καθηγητής Π.Θ. Βόλος, Σεπτέμβριος 2010

2 Στην οικογένειά μου και στους φίλους μου 2

3 Ευχαριστίες Με την περάτωση αυτής της διπλωματικής εργασίας, θα ήθελα να ευχαριστήσω τους επιβλέποντες καθηγητές της εργασίας κ. Μπέλλα Νικόλαο και κ. Αντωνόπουλο Χρήστο, για την πολύτιμη βοήθειά τους στην υλοποίησή της, τις εύστοχες υποδείξεις και τις ουσιαστικές παρεμβάσεις τους, καθώς και για την εμπιστοσύνη που έδειξαν στο πρόσωπό μου σε αυτή τη συνεργασία. Επιπλέον, θα ήθελα να ευχαριστήσω ιδιαίτερα την οικογένεια μου και τους φίλους μου για την υποστήριξή τους και τη βοήθειά τους, καθώς βρίσκονταν πάντα δίπλα μου κατά τη διάρκεια των σπουδών μου αλλά και κατά την εκπόνηση της παρούσας διπλωματικής εργασίας. Κρόκου Γεωργία Βόλος,

4 Περιεχόμενα Κατάλογος Σχημάτων... 6 Περίληψη Εισαγωγή Περιγραφή του προβλήματος και συμβολή της εργασίας Διάρθρωση της Διπλωματικής Εργασίας Resampling Οι έννοιες Upsampling και Downsampling Απλές Μέθοδοι Παρεμβολής Η χρήση του αλγορίθμου Sinc στην παρεμβολή Εισαγωγή στο πρόγραμμα GIMP Το πρόγραμμα GIMP και η διεπαφή με το χρήστη Γενική δομή των εικόνων στο GIMP Ανοίγοντας νέες και υπάρχουσες εικόνες Resampling στο GIMP Γενική επισκόπηση της αρχιτεκτονικής CUDA Τι είναι η αρχιτεκτονική CUDA; Χρησιμοποιώντας την αρχιτεκτονική CUDA Ο παραλληλισμός στον πυρήνα της αρχιτεκτονικής CUDA Η ιεραρχία των νημάτων Η ιεραρχία της μνήμης Memory Bandwidth Global Memory Coales cing σε κάρτες γραφικών με Υπολογιστική Ικανότητα 1.0 και Υλοποίηση της μεθόδου παρεμβολής Lanczos 3 σε CUDA και βελτιστοποίηση Ο παραλληλισμός στον πυρήνα της αρχιτεκτονικής CUDA Υλοποίηση του αλγορίθμου Lanczos 3 στο GIMP Αρχική υλοποίηση του αλγορίθμου Lanczos 3 σε CUDA Τρόπος εγγραφής των δεδομένων στη global μνήμη Τρόπος ανάγνωσης των δεδομένων από τη global μνήμη Εγγραφή εικόνας εξόδου στα tiles Υλοποίηση του αλγορίθμου Lanczos 3 σε CUDA με χρήση της μνήμης texture Αριθμός νημάτων Τρόπος προσπέλασης των δεδομένων στην Texture μνήμη Τρόπος εγγραφής των δεδομένων στη global μνήμη Υλοποίηση του αλγορίθμου Lanczos 3 στην κάρτα γραφικών GeForce GTX Αριθμός νημάτων Τρόπος προσπέλασης των δεδομένων στην Texture μνήμη Τρόπος εγγραφής των δεδομένων στη global μνήμη Υλοποίηση του αλγορίθμου Cubic Splines σε CUDA Υλοποίηση του αλγορίθμου Cubic Splines στο GIMP Αρχική υλοποίηση του αλγορίθμου Cubic Splines σε CUDA Υλοποίηση του αλγορίθμου Cubic Splines σε CUDA με χρήση της μνήμης texture Υλοποίηση του αλγορίθμου Cubic Splines στην κάρτα γραφικών GeForce GTX Απόδοσης της εφαρμογής Απόδωση της υλοποίησης του αλγορίθμου Lanczos Αρχική υλοποίηση στην κάρτα γραφικών Quadro NVS

5 6.1.2 Υλοποίηση με χρήση texture μνήμης Υλοποίηση στην κάρτα γραφικών GeForce GTX Απόδωση της υλοποίησης του αλγορίθμου Cubic Splines Αρχική υλοποίηση στην κάρτα γραφικών Quadro NVS Υλοποίηση με χρήση texture μνήμης Υλοποίηση στην κάρτα γραφικών GeForce GTX Επίλογος Βιβλιογραφία

6 Κατάλογος Σχημάτων Εικόνα 2.1 : Συνάρτηση Sinc.. 12 Εικόνα 2.2: Γραφική παράσταση συνάρτησης Lanczos2(x). 13 Εικόνα 2.3: Γραφική παράσταση συνάρτησης Lanczos3(x) 13 Εικόνα 3.2: Ο διάλογος New Image.. 17 Εικόνα 3.2: Ο διάλογος Open Image Εικόνα 3.2: Ο διάλογος Scale Image Εικόνα 4.1: Εντολές κινητής υποδιαστολής ανά δευτερόλεπτο και εύρος ζώνης για CPU και GPU. 22 Εικόνα 4.2: Grid από μπλοκ νημάτων.. 24 Εικόνα 4.3: Το μοντέλο του hardware.. 26 Εικόνα 4.4: Μοντέλα προσπέλασης της shared μνήμης χωρίς bank conflicts. 29 Εικόνα 4.5: Μοντέλα προσπέλασης της shared μνήμης με bank conflicts.. 30 Εικόνα 6.1.1: Αύξηση του χρόνου εκτέλεσης του αλγορίθμου Lanczos 3 κατά το Upsampling χρησιμοποιώντας την κάρτα γραφικών GeForce GTX Εικόνα 6.1.2: Αύξηση του χρόνου εκτέλεσης του αλγορίθμου Lanczos 3 κατά το Upsampling χρησιμοποιώντας την μόνο τη CPU. 58 Εικόνα 6.1.3: Απόδοση του αλγορίθμου Lanczos 3 κατά το Upsampling χρησιμοποιώντας την κάρτα γραφικών GeForce GTX Εικόνα 6.1.4: Απόδοση του αλγορίθμου Lanczos 3 κατά το Downsampling χρησιμοποιώντας την κάρτα γραφικών GeForce GTX Εικόνα 6.2.1: Αύξηση του χρόνου εκτέλεσης του αλγορίθμου Cubic Splines κατά το Upsampling χρησιμοποιώντας την κάρτα γραφικών GeForce GTX Εικόνα 6.2.2: Αύξηση του χρόνου εκτέλεσης του αλγορίθμου Cubic Splines κατά το Upsampling χρησιμοποιώντας μόνο τη CPU.. 63 Εικόνα 6.2.3: Απόδοση του αλγορίθμου Cubic Splines κατά το Upsampling χρησιμοποιώντας την κάρτα γραφικών GeForce GTX

7 Περίληψη Resampling αποκαλείται η διαδικασία κατά την οποία μεταβάλλεται το μέγεθος, δηλαδή η ανάλυση μίας εικόνας. Συγκεκριμένα, η διαδικασία κατά την οποία αυξάνεται το μέγεθος της εικόνας λέγεται Upsampling, ενώ αντίστοιχα όταν μειώνεται το μέγεθος της εικόνας λέγεται Downsampling. Υπάρχουν διάφοροι αλγόριθμοι για το σκοπό αυτό όπως οι nearest neighbor, bilinear, cubic splines και sinc. Οι διάφοροι αλγόριθμοι διαφέρουν μεταξύ τους σε χρόνο που απαιτούν για την εκτέλεσή τους αλλά και στην ποιότητα της εικόνας εξόδου. Το GIMP είναι ένα δωρεάν πρόγραμμα επεξεργασίας εικόνας που είναι πλέον διαθέσιμο για τα πιο γνωστά και ευρέως χρησιμοποιούμενα λειτουργικά συστήματα, όπως Linux, Mac OS και Windows. Μία από της πολλές λειτουργικότητες του προγράμματος αυτού είναι το scaling, δηλαδή η αλλαγή μεγέθους εικόνας. Για το σκοπό αυτό το GIMP διαθέτει τους αλγορίθμους nearest neighbor, bilinear, cubic splines και sinc. Συγκεκριμένα, επειδή ο αλγόριθμος sinc είναι αόριστος στην έκτασή του, το GIMP χρησιμοποιεί μία προσέγγισή του, έναν αλγόριθμο με περιορισμένο εύρος έκτασης, ώστε να αποτελεί ένα ρεαλιστικό φίλτρο. Ο αλγόριθμος αυτός είναι ο Lanczos 3. Από τους αλγορίθμους όμως που προσφέρει το GIMP για resampling, ο Lanczos 3 αν και προσφέρει το καλύτερο αποτέλεσμα ποιοτικά, ωστόσο είναι και αυτός που απαιτεί το μεγαλύτερο χρόνο εκτέλεσης. Η αρχιτεκτονική CUDA είναι μία γενικού σκοπού παράλληλη αρχιτεκτονική που έχει εισάγει τα τελευταία χρόνια η NVIDIA. Με την αρχιτεκτονική αυτή προσθέθηκαν στις κάρτες γραφικών της NVIDIA χαρακτηριστικά έτσι ώστε να υπερτερούν και στους υπολογισμούς εκτός από τις παραδοσιακές εργασίες των γραφικών. Τα χαρακτηριστικά (όπως περιοχές μνήμης και ο ιδιαίτερα υψηλός παραλληλισμός) είναι προσπελάσιμα από τον προγραμματιστή με ένα σετ από προεκτάσεις των πλέον διαδεδομένων γλωσσών προγραμματισμού, όπως η C. Η παρούσα διπλωματική εργασία παρουσιάζει τον τρόπο με τον οποίο χρησιμοποιήθηκε η αρχιτεκτονική CUDA για την υλοποίηση των αλγορίθμων Lanczos 3 και Cubic Splines ώστε να βελτιστοποιηθεί ο χρόνος εκτέλεσής τους. Παρούσιάζονται τα διάφορα στάδια βελτιστοποίησης που ακολουθήθηκαν και η ανάλυση της χρήσης των πόρων που μας προσφέρει η αρχιτεκτονική CUDA. Η απόδοση του προγράμματος που προτείνει η διπλωματική αυτή εργασία μετά την εφαρμογή του στην κάρτα γραφικών ξεκινάει από 2.5x και μπορεί να ξεπεράσει το 44x ιδιαίτερα όταν η κλίμακα μεγέθυνσης της εικόνας αυξάνεται σημαντικά. 7

8 ΚΕΦΑΛΑΙΟ 1 Εισαγωγή 1.1 Περιγραφή του προβλήματος και συμβολή της εργασίας Resampling αποκαλείται η διαδικασία κατά την οποία μεταβάλλεται το μέγεθος, δηλαδή η ανάλυση μίας εικόνας. Αυτό σημαίνει ότι αλλάζει ο αριθμός των pixels από τα οποία αποτελείται. Συγκεκριμένα, η διαδικασία κατά την οποία αυξάνεται το μέγεθος της εικόνας λέγεται Upsampling, ενώ αντίστοιχα αυτή κατά την οποία μειώνεται το μέγεθος της εικόνας λέγεται Downsampling. Η τεχνική με την οποία επιτυγχάνεται το Upsampling ή το Downsampling αποκαλείται Interpolation (Παρεμβολή). Υπάρχουν διάφοροι αλγόριθμοι παρεμβολής. Στους απλούστερους αλγορίθμους συμπεριλαμβάνονται οι nearest neighbor και bilinear. Κάποιοι από τους αλγορίθμους ωστόσο που χρησιμοποιούνται πιο συχνά από διάφορα προγράμματα είναι οι cubic splines και bicubic καθώς είναι πιο πολύπλοκοι και προσφέρουν καλύτερη εικόνα εξόδου σε σχέση με τους προηγούμενους σε λογικό χρόνο. Οι αλγόριθμοι που υπάρχουν διαφέρουν μεταξύ τους σε χρόνο που απαιτούν για την εκτέλεσή τους αλλά και στην ποιότητα της εικόνας εξόδου. Ένας αλγόριθμος που προσφέρει πολύ καλή ποιότητα στην εικόνα εξόδου ακόμη και για σημαντική μεγέθυνση της εικόνας είναι ο sinc. Ωστόσο, επειδή ο αλγόριθμος sinc είναι αόριστος στην έκτασή του, δε χρησιμοποιείται στην πράξη. Έτσι, χρησιμοποιείται μία προσέγγισή του, ένας αλγόριθμο με περιορισμένο εύρος έκτασης, ώστε να αποτελεί ένα ρεαλιστικό φίλτρο. Ο αλγόριθμος αυτός είναι ο Lanczos. Το GIMP είναι ένα δωρεάν πρόγραμμα επεξεργασίας εικόνας που είναι πλέον διαθέσιμο για τα πιο γνωστά και ευρέως χρησιμοποιούμενα λειτουργικά συστήματα, όπως Linux, Mac OS και Windows. Διαθέτει ποικιλία εργαλεία επεξεργασίας, γεγονός που το καθιστά ικανό τόσο για επαγγελματική όσο και για ερασιυεχνική χρήση. Μία από της πολλές λειτουργικότητες του προγράμματος αυτού είναι το scaling, δηλαδή η αλλαγή μεγέθους εικόνας. Για το σκοπό αυτό το GIMP διαθέτει τους αλγορίθμους nearest neighbor, bilinear, cubic splines και sinc. Συγκεκριμένα, το GIMP για την προσέγγιση του αλγορίθμου sinc, χρησιμοποιεί τον αλγόριθμο Lanczos 3. Από τους αλγορίθμους όμως που προσφέρει το GIMP για resampling, ο Lanczos 3 αν και προσφέρει το καλύτερο αποτέλεσμα ποιοτικά, ωστόσο είναι και αυτός που απαιτεί το μεγαλύτερο χρόνο εκτέλεσης. Το αμέσως καλύτερο αποτέλεσμα ποιοτικά που απαιτεί λιγότερο χρόνο το προσφέρει ο αλγόριθμος cubic splines. Η αρχιτεκτονική CUDA είναι μία γενικού σκοπού παράλληλη αρχιτεκτονική που έχει εισάγει τα 8

9 τελευταία χρόνια η NVIDIA. Η αρχιτεκτονική αυτή συμπεριλάμβανε διάφορα νέα στοιχεία τα οποία σχεδιάστηκαν αυστηρά για υπολογισμούς GPU τα οποία καταργούσαν πολλούς από τους περιορισμούς που εμπόδιζαν τους προηγούμενους επεξεργαστές γραφικών από το να είναι χρήσιμοι για γενικού σκοπού υπολογισμούς. Αυτά τα χαρακτηριστικά της αρχιτεκτονικής CUDA που παρουσιάζονται αναλυτικά στο Κεφάλαιο 4 προστέθηκαν ώστε να δημιουργήσουν μία κάρτα γραφικών η οποία θα υπερτερούσε και στους υπολογισμούς εκτός από τις παραδοσιακές εργασίες των γραφικών. Χρησιμοποιήσαμε λοιπόν την αρχιτεκτονική CUDA για να βελτιστοποιήσουμε το χρόνο εκτέλεσης του αλγορίθμου Lanczos 3 που χρησιμοποιεί το GIMP για resampling. Το ίδιο και για τον αλγόριθμο Cubic Splines. Η κάρτα γραφικών στην οποία έγινε η υλοποίηση των αλγορίθμων την πρώτη φορά είναι η Quadro NVS 290. Στην αρχή κάναμε μία προσαρμογή του κώδικα στη κάρτα γραφικών χρησιμοποιώντας μόνο τη global μνήμη, η οποία είναι μνήμη υψηλής καθυστέρησης και απαιτεί πολλούς κύκλους μηχανής για κάθε ανάγνωση ή εγγραφή σε αυτή. Χρησιμοποιήσαμε φυσικά και πολλαπλά μπλοκ νημάτων ώστε να χρησιμοποιήσουμε τις δυνατότητες παραλληλισμού που μας δίνει η αρχιτεκτονική αυτή. Στη συνέχεια, χρησιμοποιήσαμε την texture μνήμη για αποθήκευση των δεδομένων της εικόνας εισόδου. Η texture είναι μία read-only μνήμη που διαθέτει cache, έτσι χρεωνόμαστε κύκλους μηχανής μόνο σε περίπτωση αστοχίας της cache. Καταφέραμε με αυτό τον τρόπο να βελτιώσουμε σημαντικά την απόδοση των δύο αλγορίθμων. Έπειτα, χρησιμοποιήσαμε μία άλλη κάρτα γραφικών για την εφαρμογή του προγράμματος, την GeForce GTX 480. Με αυτή την κάρτα μπορούμε να πετύχουμε ακόμη μεγαλύτερο παραλληλισμό, άρα και ακόμη καλύτερη απόδοση και στους δύο αλγορίθμους. 1.2 Διάρθρωση της Διπλωματικής Εργασίας Στο Κεφάλαιο 2 παρουσιάζεται η έννοια του resampling καθώς και της παρεμβολής. Επιπλέον, παρουσιάζονται μερικοί από του πιο συνήθεις αλγορίθμους παρεμβολής και συγκρίνονται οι μεταξύ τους επιδώσεις σε χρόνο και ποιότητα. Στο Κεφάλαιο 3 παρουσιάζεται το πρόγραμμα GIMP καθώς και οι αλγόριθμοι που υποστηρίζει το πρόγραμμα αυτό για να εκτελεί το resamplig. Στο κεφάλαιο 4 παρουσιάζεται η αρχιτεκτονική CUDA, οι μέθοδοι που προσφέρονται για επίτευξη του παραλληλισμού καθώς και τα διάφορα κομμάτια μνήμης που προσφέρει η αρχιτεκτονική για βελτιστοποίηση και τα χαρακτηριστικά τους, όπως το bandwidth και οι συνθήκες κάτω από τις οποίες χρησιμοποιούνται με βέλτιστο τρόπο. Στο Κεφάλαιο 5 παρουσιάζεται η υλοποίηση των αλγορίθμων Lanczos 3 και Cubic Splines του προγράμματος GIMP σε αρχιτεκτονική CUDA, καθώς και τα διάφορα στάδια βελτιστοποίησης. Επιπλέον αναλύεται ο τρόπος με τον οποίο χρησιμοποιούνται οι πηγές μνήμης της αρχιτεκτονικής CUDA σε κάθε στάδιο, δηλαδή το μοντέλο που χρησιμοποιείται για την προσπέλαση κάθε μνήμης. Στο Κεφάλαιο 6 παρουσιάζονται τα αποτελέσματα που προέκυψαν σε κάθε στάδιο υλοποίησης και συγκρίνονται αναλυτικά μεταξύ τους. Τέλος, στο Κεφάλαιο 7 παρουσιάζονται τα τελικά συμπεράσματα που προέκυψαν μετά το τέλος της υλοποίησης της παρούσας διπλωματικής εργασίας. 9

10 ΚΕΦΑΛΑΙΟ 2 Resampling 2.1 Οι έννοιες Upsampling και Downsampling Resampling αποκαλείται η διαδικασία κατά την οποία αλλάζουμε τον αριθμό των δειγμάτων, δηλαδή των διακριτών τιμών ενός ψηφιακού σήματος. Πιο συγκεκριμένα, μπορούμε να αυξήσουμε τα δείγματα του σήματος είτε να τα μειώσουμε. Στη διπλωματική αυτή θα ασχοληθούμε με Resampling εικόνων. Όσο αφορά λοιπόν τις εικόνες, resampling αποκαλείται η μαθηματική διεργασία που χρησιμοποιείται για τη δημιουργία μιας καινούριας έκδοσης μιας υπάρχουσας εικόνας, η οποία θα έχει διαφορετικό πλάτος και ύψος από την αρχική εικόνα. Κατά τη διαδικασία λοιπόν αυτή αλλάζει το μέγεθος μίας ψηφιακής εικόνας, δηλαδή αλλάζει ο αριθμός των pixels από τα οποία αυτή αποτελείται. Η διαδικασία κατά την οποία αυξάνουμε το μέθοδος μίας εικόνας αποκαλείται Upsampling. Αυτό σημαίνει ότι αυξάνουμε την ανάλυση της εικόνας, δηλαδή αυξάνουμε τον αριθμό των pixels που περιέχει. Αντίστοιχα, η διαδικασία κατά την οποία μειώνουμε το μέγεθος μίας εικόνας αποκαλείται Downsampling και κατά τη διαδικασία αυτή μειώνουμε την ανάλυση της εικόνας, δηλαδή των αριθμό των pixels που αυτή περιέχει. Κατά το Upsampling μιας εικόνας ο αριθμός των pixels αυξάνεται, όμως η νέα εικόνα δεν περιέχει επιπλέον πληροφορίες και λεπτομέρειες που δεν υπήρχαν στην αρχική εικόνα. Αυτό έχει ως αποτέλεσμα, η εικόνα όσο περισσότερο μεγεθύνεται τόσο περισσότερο θολό να φαίνεται το αποτέλεσμα, καθώς η ποσότητα της πληροφορίας ανά pixel μειώνεται. Κατά το Downsampling μιας εικόνας ο αριθμός των pixels μειώνεται. Αυτό σημαίνει ότι πληροφορία που υπήρχε στην αρχική εικόνα πρέπει να απομακρυνθεί ώστε να μικρύνει η νέα εικόνα. Για το λόγο αυτό όταν μικραίνουμε την ανάλυση μιας εικόνας και έπειτα την αυξάνουμε πάλι, η εικόνα που θα δημιουργήσουμε δε θα είναι ταυτόσημη με την αρχική, καθώς θα έχει χαθεί ένα μέρος της πληροφορίας που αυτή περιείχε. [1] Το Upsampling ή Downsampling μιας εικόνας μπορούν να μας φανούν χρήσιμα σε διάφορες περιπτώσεις όπως: Μείωση του μεγέθους μιας εικόνας ώστε να την αναρτήσουμε σε μια ιστοσελίδα. Πρέπει να σκεφτούμε ότι πολλοί χρήστες του διαδικτύου διαθέτουν σχετικά μικρές οθόνες, στις οποίες δε μπορεί να απεικονιστεί ολόκληρη μια μεγάλη εικόνα. Πολλές οθόνες έχουν ανάλυση 1024x765 ή και ακόμα μικρότερη. [2] Αλλαγή μεγέθους μίας εικόνας που θέλουμε να εκτυπώσουμε ώστε να εκτυπωθεί στο 10

11 μέγεθος που επιθυμούμε. Αλλαγή μεγέθους μίας εικόνας ώστε να τη χρησιμοποιήσουμε ως wallpaper στην οθόνη του υπολογιστή μας ή σε άλλες συσκευές όπως η οθόνη ενός κινητού ή μία ψηφιακή κορνίζα. 2.2 Απλές Μέθοδοι Παρεμβολής Η τεχνική με την οποία επιτυγχάνεται το Upsampling ή το Downsampling αποκαλείται Interpolation (Παρεμβολή). Παρεμβολή είναι ο υπολογισμός ενδιάμεσων τιμών [3]. Συγκεκριμένα, κατά το Upsampling χρησιμοποιούμε την παρεμβολή για τον υπολογισμό της τιμής, δηλαδή του χρώματος, των επιπλέον pixels που δημιουργούνται κατά τη μεγέθυνση της εικόνας. Αυτό σημαίνει ότι χρησιμοποιούμε τα υπάρχοντα pixels της αρχικής εικόνας και με βάση αυτά υπολογίζουμε μία προσέγγιση της τιμής (του χρώματος) των επιπλέον pixels που δημιουργούνται. Αντίστοιχα, κατά το Downsampling υπολογίζουμε το μέσο όρο με βάρη των αρχικών pixels, ώστε να βρούμε την τιμή του κάθε νέου pixels. Στους συμβατικούς και πιο απλούς αλγόριθμους παρεμβολής περιλαμβάνονται οι Nearest Neighbor, Bilinear και Bicubic interpolation. Η παρεμβολή με τη μέθοδο των κοντινότερων γειτόνων (Nearest Neighbor) είναι η απλούστερη από όλους τους προαναφερθέντες αλγορίθμους γιατί απλά το κάθε pixel της τελικής εικόνας παίρνει την τιμή του κοντινότερου pixel της εικόνας εισόδου. Αυτό σημαίνει ότι ο αλγόριθμος λαμβάνει υπόψη του μόνο ένα pixel της εικόνας εισόδου για τον υπολογισμό της τιμής ενός pixel της εικόνας εξόδου. Αυτό λειτουργεί επαρκώς για πολύ απλές ψηφιακές εικόνες, αλλά τα ελαττώματα της εικόνας είναι πολύ φανερά όταν επιχειρούμε να αυξήσουμε τις διαστάσεις της εικόνας. Επομένως, η παρεμβολή με τη μέθοδο των κοντινότερων γειτόνων κάνει κάθε pixel μεγαλύτερο, παράγοντας ως αποτέλεσμα μία εικόνα με φανερά blocks που γενικά είναι ανεπιθύμητο. Η Bilinear παρεμβολή, είναι σχετικά πιο ανεπτυγμένη. Αντί να λαμβάνει υπόψη μόνο ένα pixel της εικόνας εισόδου, ο αλγόριθμος ελέγχει μία περιοχή από pixels μεγέθους 2x2 δηλαδή τα τέσσερα pixels από την εικόνα εισόδου που υπάρχουν σε κάθε κατεύθυνση γύρω από το pixel της εικόνας εξόδου. Η τιμή του κάθε pixel εξόδου αποτελεί το ζυγισμένο μέσο όρο των τεσσάρων αυτών τιμών. Ο αλγόριθμος υπολογίζει ένα βάρος για κάθε ένα από αυτά τα τέσσερα pixels ανάλογα με το πόσο κοντά βρίσκονται στο pixel εξόδου. Το άθροισμα των τεσσάρων βαρών πρέπει να είναι ίσο με ένα. Πολλαπλασιάζει έπειτα κάθε pixel με το σχετικό του βάρος και τα προσθέτει ώστε να βρει την τιμή του pixel εξόδου. Η Bicubic παρεμβολή είναι μία γενίκευση της Bilinear, αλλά αυτή τη φορά θέτει βάρη σε μία περιοχή από 4x4 pixels για να καθορίσει την τιμή ενός pixel εξόδου. Η εικόνα εξόδου γενικά θεωρείται καλύτερη, καθιστώντας τον αλγόριθμο αυτό ως την προκαθορισμένη επιλογή για πολλά προγράμματα. Όπως αναμενόταν, η μέθοδος αυτή παράγει μία καθαρή αλλά σχετικά παραμορφωμένη φωτογραφία όταν οι διαστάσεις αυξάνονται αρκετά. [1] 11

12 2.3 Η χρήση του αλγορίθμου Sinc στην παρεμβολή Ωστόσο, υπάρχουν και άλλοι, πιο αποτελεσματικοί ως προς την εμφάνιση της εικόνας εξόδου αλγόριθμοι. Μία τέτοια μέθοδος παρεμβολής που προσφέρει λιγότερο θολό και περισσότερο αληθοφανές αποτέλεσμα είναι η Sinc interpolation. Η συνάρτηση Sinc αποτελεί το ιδανικό χαμηλοπερατό φίλτρο (low-pass filter). Η συνάρτηση όμως αυτή είναι αόριστη στην έκτασή της, αφού εκτείνεται από το - στο + (βλ. Εικόνα 2.1) και για το λόγο αυτό δε χρησιμοποιείται άμεσα στην πράξη. Εικόνα 2.1 : Συνάρτηση Sinc Έτσι για να εφαρμόσουμε τη συνάρτηση αυτή, θέλουμε να περιορίσουμε το εύρος στο οποίο εκτείνεται ώστε να πετύχουμε ένα ρεαλιστικό φίλτρο. Ένας τρόπος να το πετύχουμε αυτό είναι να πολλαπλασιάσουμε τη συνάρτηση Sinc με μία συνάρτηση η οποία θα είναι μη μηδενική μόνο εντός ενός συγκεκριμένου ορίου. Μία τέτοια συνάρτηση αποκαλείται παράθυρο (window). Οι επιλογές σε συναρτήσεις παραθύρων είναι πολλές και πρακτικά κάθε συνάρτηση που ξεκινάει από το μηδέν φτάνει σε μία κορυφή και έπειτα καταλήγει πάλι στο μηδέν θεωρείται συνάρτηση παραθύρου και συνδέεται με κάποιου το όνομα. Αφόυ λοιπόν η συνάρτηση Sinc προσεγγίζει αργά το μηδέν αλλά ποτέ δεν το αγγίζει, πρέπει να την πολλαπλασιάσουμε με μία κατάλληλη συνάρτηση παραθύρου. Μία τέτοια συνάρτηση είναι η 2-lobed Lanczos. Η συνάρτηση αυτή ορίζεται ως εξής: ενώ η η γραφική της παράσταση έχει τη μορφή που φαίνεται στην Εικόνα

13 Εικόνα 2.2: Γραφική παράσταση συνάρτησης Lanczos2(x) Άλλη μία συνάρτηση παραθύρου, με μεγαλύτερο εύρος παραθύρου ώστε να προσεγγίζει ακόμη καλύτερα τη συνάρτηση Sinc είναι η 3-lobed Lanczos και έχει τον παρακάτω ορισμό: ενώ η η γραφική της παράσταση έχει τη μορφή που φαίνεται στην Εικόνα 2.2 [3]. Εικόνα 2.3: Γραφική παράσταση συνάρτησης Lanczos3(x) Η συνάρτηση Lanczos έχει αποδειχτεί πως είναι ιδιαίτερα χρήσιμη για εφαρμογές γραφικών. Ας δούμε όμως λίγο πιο αναλυτικά τη λειτουργία του αλγορίθμου αυτού. Οποιοδήποτε φίλτρο που χρησιμοποιείται για την επεξεργασία σημάτων έχει «taps», τα οποία είναι διακριτές τιμές εισόδου που χρησιμοποιούνται για τον υπολογισμό της κάθε τιμής εξόδου. Όταν ένα φίλτρο βασίζεται σε μία συνάρτηση παραθύρου της μορφής Sinc τότε είναι βολικό να μιλάμε για τον 13

14 αριθμό των «lobes» της συνάρτησης Sinc που χρησιμοποιούνται. X=0 μέχρι X=π είναι ένα lobe, Χ=π μέχρι Χ=2π είναι ένα δεύτερο lobe και Χ=2π μέχρι Χ=3π είναι ένα τρίτο lobe κ.λπ. Επειδή όλες οι παραθυροτές συναρτήσεις της μορφής Sinc είναι συμμετρικές γύρω από το μηδέν, μιλάμε για τον αριθμό των lobes από τη μία πλευρά πέρα του μηδέν. Υπάρχει ίδιος αριθμός lobes από την άλλη πλευρά. Οπότε όταν αναφερόμαστε στη συνάρτηση Lanczos2 εννοούμε τη 2-lobe Lanczoswindowed συνάρτηση της μορφής Sinc. Στην πραγματικότητα υπάρχουν τέσσερα lobes, δύο σε κάθε μεριά πέρα από το μηδέν. Αντίστοιχα, όταν αναφερόμαστε στη συνάρτηση Lanczos3 εννοούμε τη 3-lobe Lanczos-windowed συνάρτηση της μορφής Sinc, η οποία στην πραγματικότητα έχει έξι lobes. Όταν λοιπόν θέλουμε να εφαρμόσουμε τη διεργασία Upsampling σε ένα μονοδιάστατο σήμα με τον αλγόριθμο Lanczos3, για τον υπολογισμό μίας τιμής εξόδου θα χρησιμοποιήσουμε έξι τιμές (δείγματα) του σήματος εισόδου. Όταν όμως αναφερόμαστε σε ένα σήμα δισδιάστατο, όπως μία εικόνα, τότε θα χρειαστούμε συνολικά για τον αλγόριθμο Lanczos 6x6 taps, δηλαδή 6 taps σε κάθε κατεύθυνση. Για τον υπολογισμό οπότε της τιμής ενός pixel της εικόνας εξόδου θα χρησιμοποιήσουμε 6x6 taps δηλαδή 6x6 pixels της εικόνας εισόδου. Ο αλγόριθμος λοιπόν χρησιμοποιεί τριάντα έξι pixels από την εικόνα εισόδου για κάθε pixel της εικόνας εξόδου. Ανεξάρτητα από το μέγεθος της εικόνας εξόδου, ο αριθμός των pixels της εικόνας εισόδου που χρησιμοποιούνται για την εύρεση της τιμής ενός pixel εξόδου είναι πάντα ο ίδιος. Αυτό φυσικά συμβαίνει για κάθε στοιχείο ενός pixel (R, G, B). [4] Κάποιοι έχουν συγκρίνει το φίλτρο Lanczos με άλλα απλούστερα φίλτρα ή άλλες εκδοχές σε μορφή παραθύρου της συνάρτησης sinc, βρίσκοντάς το "το καλύτερα συμβατό" σε σχέση με τα υπόλοιπα φίλτρα που υπάρχουν και χρησιμοποιούνται. Lanczos resampling λοιπόν, είναι μία μέθοδος παρεμβολής που χρησιμοποιείται για τον υπολογισμό νέων τιμών για οποιοδήποτε ψηφιακό σήμα. Η μέθοδος αυτή όπως αναφέραμε προηγουμένος συχνά χρησιμοποιείται και για την αλλαγή της ανάλυσης εικόνων. Στην περίπτωση αυτή η συνάρτηση Lanczos δείχνει ποια pixels της αρχικής εικόνας θα χρησιμοποιηθούν και σε ποια αναλογία για να καθορίσουν την τιμή του κάθε pixel της τελικής εικόνας. [6] 14

15 ΚΕΦΑΛΑΙΟ 3 Εισαγωγή στο πρόγραμμα GIMP 3.1 Το πρόγραμμα GIMP και η διεπαφή με το χρήστη Το GIMP, που σημαίνει GNU Image Manipulation Program, είναι ένα δωρεάν πρόγραμμα επεξεργασίας γραφικών και εικόνας. Μερικές χρήσεις του είναι η δημιουργία γραφικών, η αλλαγή διαστάσεων μιας φωτογραφίας, η διόρθωση του χρωματικού τόνου και της φωτεινότητας, καθώς και η αλλαγή μεταξύ διαφορετικών format εικόνων και πολλές άλλες. Το GIMP μπορεί επίσης να χρησιμοποιηθεί για δημιουργία κινούμενων εικόνων τύπου Gif. Το GIMP ξεκίνησε το 1995 από τον Spencer Kimball και τον Peter Mattis. Αποτελεί πλέον μέρος του GNU Project και διατίθεται με την GNU General Public License. Η εργαλειοθήκη GTK+, που αναπτύχθηκε αρχικά για το πρόγραμμα, έχει βρει χρήση σε πολλές ακόμα εφαρμογές, και αποτελεί σήμερα τη βάση γνωστών περιβαλλόντων εργασίας, όπως τα GNOME και Xfce. [7] Το GIMP διαθέτει ένα βασικό παράθυρο και διάφορα παράθυρα διαλόγων που χρησιμοποιούνται για τα εργαλεία που προσφέρει, για τις παλέτες χρωμάτων και άλλα. Αυτά τα παράθυρα και οι διάλογοι συνιστούν τη διεπαφή του GIMP με το χρήστη. Επειδή το GIMP χρησιμοποιεί πολλαπλά παράθυρα, ο χρήστης καλό θα είναι για τη δική του ευκολία να τοποθετεί τα παράθυρα αυτά σε μία λειτουργική θέση. Για να χτίσει τη διεπαφή του με το χρήστη, το GIMP χρησιμοποιεί το GIMP tool kit (GTK+). Το GTK+ σχεδιάστηκε για να αντικαταστήσει το Motif, ένα toolkit από το οποίο το GIMP ήταν εξαρτημένο. Αρχικά το GTK+ ήταν κομμάτι του πηγαίου κώδικα του GIMP, αλλά πλέον αποτελεί μία αυτόνομη βιβλιοθήκη. Ενώ αρχικά σχεδιάστηκε για να τρέχει σε λειτουργικά συστήματα τύπου Unix, πλέον το GIMP και το GTK+ μπορούν να εγκατασταθούν και στα to Microsoft Windows, Mac OS X και άλλα λειτουργικά συστήματα. Εξαιτίας του μεγέθους των αρχείων από τα οποία αποτελείται το GIMP, Το λειτουργικό σύστημα Ubuntu δε συμπεριλαμβάνει πλέον το GIMP, αλλά παραμένει διαθέσιμο για εγκατάσταση μέσω του package manager. Εικόνα 3.1: Wilber, η μασκότ του Gimp 15

16 Τα εργαλεία που χρησιμοποιούνται για να διαχειρίζονται εικόνες μπορούν να προσπελαστούν από το toolbox, μέσω των menu και των παραθύρων διαλόγων. Στα εργαλεία συμπεριλαμβάνονται φίλτρα, πινέλα ζωγραφικής, αλλά και μετατροπή του τύπου αποθήκευσης της εικόνας, επιλογή ενός μέρους της εικόνας και πολλά άλλα. [7] 3.2 Γενική δομή των εικόνων στο GIMP Μία εικόνα στο GIMP αποτελεί μία περίπλοκη δομή, η οποία αποτελείται από μία στοίβα επιπέδων και διάφορα άλλα αντικείμενα όπως μία μάσκα επιλογής, ένα σετ καναλιών, ένα σετ μονοπατιών, ένα ιστορικό «undo» κ.λπ. Το πιο βασικό χαρακτηριστικό όμως μιας εικόνας είναι ο τρόπος με τον οποίο απεικονίζεται το χρώμα στην εικόνα. Οι δύο πιο συνηθισμένες και συχνά χρησιμοποιούμενες μέθοδοι είναι οι RGB και grayscale.τα αρχικά της μεθόδου RGB προέρχονται από τις λέξεις red (κόκκινο) green (πράσινο) και blue (μπλε) και δηλώνουν ότι κάθε σημείο μίας εικόνας αναπαριστάται από ένα «κόκκινο» επίπεδο, ένα «πράσινο» επίπεδο και ένα «μπλε» επίπεδο, δημιουργώντας έτσι μία έγχρωμη εικόνα. Κάθε κανάλι χρώματος μπορεί να πάρει 256 διαφορετικές τιμές, υπάρχουν δηλαδή 256 πιθανά επίπεδα έντασης του κάθε χρώματος. Μία εικόνα της μορφής grayscale είναι μία εικόνα που τα χρώματά της αναπαρίστανται στη γκρι κλίμακα. Κάθε σημείο της αναπαριστάται από μία τιμή φωτεινότητας που κυμαίνεται από το 0 (μαύρο) μέχρι το 255 (άσπρο), με τις ενδιάμεσες τιμές να αναπαριστούν διαφορετικά επίπεδα του γκρι χρώματος. Η διαφορά λοιπόν μεταξύ μίας εικόνας που απεικονίζεται στη γκρι κλίμακα και μίας εικόνας RGB είναι ο αριθμός καναλιών χρωμάτων. Μια εικόνα στη γκρι κλίμακα έχει ένα κανάλι χρώματος ενώ μία RGB εικόνα έχει τρία. Στην πραγματικότητα, και οι RGB και οι grayscale εικόνες έχουν ένα επιπρόσθετο κανάλι χρώματος που αποκαλείται κανάλι alpha, το οποίο αντιπροσωπεύει τη διαφάνεια. Όταν η τιμή alpha σε μία δοσμένη περιοχή είναι μηδέν, το συγκεκριμένο επίπεδο εντελώς διαφανές, Δηλαδή μπορούμε να δούμε μέσα από αυτό, και το χρώμα στην περιοχή αυτή εξαρτάται από το τι υπάρχει κάτω από το επίπεδο αυτό. Όταν η τιμή του alpha είναι μέγιστη (255), το επίπεδο είναι εντελώς αδιαφανές και το χρώμα καθορίζεται μόνο από το χρώμα του συγκεκριμένου επιπέδου. Οι ενδιάμεσες τιμές του alpha αντιστοιχούν στους διάφορους βαθμούς διαφάνειας / αδιαφάνειας. Το χρώμα της περιοχής είναι μία αναλογία του χρώματος του επιπέδου και του χρώματος που βρίσκεται κάτω από το επίπεδο αυτό. [8] 3.3 Ανοίγοντας νέες και υπάρχουσες εικόνες Στο GIMP μπορούμε να επεξεργαστούμε εικόνες, όπως για παράδειγμα να τους αλλάξουμε μέγεθος, τις οποίες είτε έχουμε ήδη αποθηκευμένες στον υπολογιστή και θέλουμε να τις ανοίξουμε με το πρόγραμμα αυτό είτε τις δημιουργούμε εμείς ξεκινώντας από μία κενή εικόνα. Παρακάτω βλέπουμε τους τρόπους με τους οποίους μπορούμε να ενεργοποιήσουμε τις δύο αυτές διαδικασίες. 16

17 Χρησιμοποιώντας το διάλογο New Image, μπορούμε να δημιουργήσουμε μία νέα κενή εικόνα και να θέσουμε της ιδιότητές της. Η εικόνα αυτή θα εμφανιστεί σε ένα παράθυρο με όνομα «new image». Μπορούμε να έχουμε παραπάνω από μία εικόνα στις οθόνες μας ταυτόχρονα. Μπορούμε να βρούμε την εντολή δημιουργίας νέας εικόνας είτε μέσω του menubar επιλέγοντας File New, είτε χρησιμοποιώντας τη συντόμευση Ctrl+N από το πληκτρολόγιο. Στην Εικόνα 3.2 βλέπουμε το παράθυρο διαλόγου New Image.[9] Εικόνα 3.2: Ο διάλογος New Image Μπορούμε να θέσουμε το πλάτος και το ύψος που θέλουμε να έχει η νέα εικόνα. Οι προκαθορισμένες μονάδες μέτρησης είναι pixels, αλλά μπορούμε να διαλέξουμε μία άλλη μονάδα της επιλογής μας. Η νέα εικόνα που θα δημιουργήσουμε μπορεί αν είναι στη μορφή της επιλογής μας, δηλαδή σε μoρφή RGB είτε σε μορφή grayscale. Επιπλέον, μπορούμε να ανοίξουμε μία υπάρχουσα εικόνα η οποία είναι αποθηκευμένη στον υπολογιστή μας και την οποία θέλουμε να επεξεργαστούμε. Ο τρόπος με τον οποίο μπορούμε να το πετύχουμε αυτό είναι από το menubar. Επιλέγοντας Open File μπορούμε να ενεργοποιήσουμε το διάλογο «Open Image». Ο διάλογος αυτός φαίνεται στην Εικόνα 3.3. [10] 17

18 Εικόνα 3.3: Ο διάλογος Open Image 3.4 Resampling στο GIMP Η διαδικασία του resampling στο GIMP γίνεται μέσω της εντολής Scale Image. Η εντολή Scale Image αυξάνει ή μειώνει το φυσικό μέγεθος μίας εικόνας αλλάζοντας τον αριθμό των pixels που αυτή περιέχει. Αλλάζει το μέγεθος των περιεχομένων της εικόνας και μεταβάλλει ανάλογα και το μέγεθος του καμβά. Για να ενεργοποιήσουμε την εντολή αυτή επιλέγουμε από το menubar: Image Scale image. Μεταβάλλοντας το μέγεθος μιαs εικόνας ταυτόχρονα αλλάζουμε τον αριθμό των pixels (το μέγεθος της πληροφορίας) που περιέχει η εικόνα, οπότε επιρεάζουμε και το μέγεθος της μνήμης που απαιτεί η εικόνα. Αν αυξήσουμε το μέγεθος μίας εικόνας, το GIMP υπολογίζει την τιμή των επιπλέον pixels με παρεμβολή (interpolation), αλλά δεν προσθέτει κάποια επιπλέον λεπτομέρεια στην εικόνα. Όσο περισσότερο μεγεθύνουμε μία εικόνα, τόσο πιο θολό και παραμορφοποιημένο θα είναι το αποτέλεσμα. Η εμφάνιση μιας μεγεθυμένης εικόνας εξαρτάται από το είδος της παρεμβολής που θα χρησιμοποιήσουμε. Όταν κάνουμε κλικ στην εντολή Scale το κουτί του διαλόγου που εμφανίζεται δείχνει τις διαστάσεις της αρχικής εικόνας σε pixels (βλ. Εικόνα 3.4). Μπορούμε να θέσουμε το πλάτος και το ύψος που θάλουμε να δώσουμε στην εικόνα προσθέτοντας ή αφαιρώντας pixels. Αν η εικόνα του λουκέτου που υπάρχει δίπλα στα κουτιά του πλάτους και του ύψους είναι ενωμένη, τότε το πλάτος και το ύψος θα διατηρήσουν την ίδια αναλογία μεταξύ τους. Αν κάνουμε κλικ πάνω στην εικόνα αυτή και σπάσουμε το λουκέτο, τότε μπρούμε να θέσουμε το νέο ύψος και το νέο πλάτος της εικόνας ανεξάρτητα μεταξύ τους, αλλά στην περίπτωση αυτή το αποτέλεσμα της εικόνας θα διαστρευλωθεί. 18

19 Πίνακας 3.4: Ο διάλογος Scale Image Για να αλλάξουμε το μέγεθος της εικόνας, πρέπει είται να προσθέσουμε είτε να αφαιρέσουμε κάποια pixels. Το είδος της παρεμβολής που θα χρησιμοποιήσουμε για τη διαδικασία αυτή θα καθορίσει την ποιότητα του αποτελέσματος. Το GIMP προσγέρει μία λίστα από επιλογές για τα διαθέσιμα είδη παρεμβολής που μπορεί κάποιος να χρησιμοποιήσει. Οι επιλεογές αυτές είναι: Παρεμβολή None: Δε χρησιμοποιέιται καμία μέθοδος παρεμβολής. Τα πixels απλά μεγεθύνονται ή αφαιρούνται. Αυτή η μέθοδος είναι χαμηλής ποιότητας αλλά πολύ γρήγορη. Linear: Η μέθοδος αυτή είναι σχετικά γρήγορη αλλά ούτε αυτή προσφέρει ικανοποιητικά αποτελέσματα. Cubic: Η μέθοδος αυτή προσφέρει το καλύτερο αποτέλεσμα σε σχέση με τις δύο προηγούμενες μεθόδους αλλά είναι και αρκετά πιο αργή. Sinc (Lanczos 3): Η μέθοδος αυτή θεωρείται ότι προσφέρει το καλύτερο αποτέλεσμα αφού παρέχει φανερά λιγότερο θολό αποτέλεσμα σε σημαντικές αλλάγές μεγέθους αλλά είναι πιο αργή και από τις 3 προηγούμενες μεθόδους. [2] 19

20 ΚΕΦΑΛΑΙΟ 4 Γενική επισκόπηση της αρχιτεκτονικής CUDA. 4.1 Τι είναι η αρχιτεκτονική CUDA; Το Νοέμβριο του 2006 η NVIDIA έβγαλε στην παραγωγή την πρώτη DirectX 10 GPU την GeForce 8800 GTX. Η κάρτα αυτή ήταν η πρώτη κάρτα γραφικών που χτίστηκε με αρχιτεκτονική CUDA. Η αρχιτεκτονική αυτή συμπεριλάμβανε διάφορα νέα στοιχεία τα οποία σχεδιάστηκαν αυστηρά για υπολογισμούς GPU τα οποία καταργούσαν πολλούς από τους περιορισμούς που εμπόδιζαν τους προηγούμενους επεξεργαστές γραφικών από το να είναι χρήσιμοι για γενικού σκοπού υπολογισμούς. Ανόμοια με τις προηγούμενες γενιές καρτών γραφικών που διαχώριζαν τις πηγές υπολογισμού σε κορυφές και σε αποχρώσεις των pixels, η αρχιτεκτονική CUDA περιείχε και ένα κανάλι το οποίο επέτρεπε σε κάθε αριθμητική λογική μονάδα (ALU) πάνω στο chip να χρησιμοποιείται από ένα πρόγραμμα που εκτελεί γενικού σκοπού υπολογισμούς. Επειδή η NVIDIA στόχευε αυτή η νέα οικογένεια επεξεργαστών να χρησιμοποιηθεί για γενικού σκοπού υπολογισμούς, αυτές οι αριθμητικές λογικές μονάδες χτίστηκαν έτσι ώστε να συμμορφώνονται με τις απαιτήσεις της IEEE για μονής ακρίβειας floating-point αριθμούς και σχεδιάστηκαν ώστε να χρησιμοποιούν ένα σετ εντολών στοχευόμενο για γενικούς υπολογισμούς αντί για υπολογισμούς ειδικά για γραφικά. Επιπλέον, οι μονάδες εκτέλεσης στην GPU προσπελάσεις read και write στη μνήμη, όπως και πρόσβαση σε μία cache γνωστή ως shared memory. Όλα αυτά τα χαρακτηριστικά της αρχιτεκτονικής CUDA προστέθηκαν ώστε να δημιουργήσουν μία κάρτα γραφικών η οποία θα υπερτερούσε και στους υπολογισμούς εκτός από τις παραδοσιακές εργασίες των γραφικών. 4.2 Χρησιμοποιώντας την αρχιτεκτονική CUDA Η προσπάθεια της NVIDIA να παρέχει στους καταναλωτές ένα προϊόν για γραφικά αλλά και για υπολογισμούς δε μπορούσε να σταματήσει στην παραγωγή hardware που θα ενσωμάτωνε την αρχιτεκτονική CUDA. Ανεξάρτητα από το πόσα χαρακτηριστικά προστέθηκαν στα chips της NVIDIA, για να διευκολύνουν τους υπολογισμούς, εξακολουθούσε να μην υπάρχει τρόπος να προσπελάσουμε τα χαρακτηριστικά αυτά χωρίς τη χρήση OpenGL ή DirectX. Αυτό δεν απαιτούσε 20

21 απλά να συνεχίσουν οι καταναλωτές να «μεταμφιέζουν» τους υπολογισμούς σε προβλήματα γραφικών, αλλά εξακολουθούσαν να πρέπει να γράφουν τους υπολογισμούς σε μία γλώσσα προορισμένη για γραφικά όπως η GLSL ή η HLSL. Για να αγγίξει ο μέγιστο δυνατά αριθμό από developers, η NVIDIA πρόσθεσε στη γλώσσα C ένα αριθμό από λέξεις κλειδιά έτσι ώστε να συμπεριληφθούν σε αυτή κάποια από τα ειδικά χαρακτηριστικά της αρχιτεκτονικής CUDA. Λίγους μήνες αργότερα η NVIDIA έβγαλε στη δημοσιότητα ένα compiler για αυτή τη γλώσσα, τον CUDA C. Με αυτόν, η CUDA C έγινε η πρώτη γλώσσα ειδικά σχεδιασμένη από εταιρία Καρτών Γραφικών, που διευκολύνει τους υπολογισμούς γενικού σκοπού στις κάρτες γραφικών. Έτσι πλέον οι χρήστες δε χρειάζεται να έχουν την οποιαδήποτε γνώση από τις διεπαφές προγραμματισμού γραφικών OpenGL ή DirectX, ούτε απαιτείται να αναγκάσουν το πρόγραμμά τους να μοιάζει με εργασία γραφικών. [11] Οδηγούμενη από τις ακόρεστες απαιτήσεις της αγοράς για εφαρμογές αληθινού χρόνου (realtime), υψηλής ανάλυσης τρισδιάστατα γραφικά, η GPU έχει εξελιχθεί σε έναν υψηλού παραλληλισμού, πολυνηματικό, πολυπύρηνο επεξεργαστή με τεράστια υπολογιστική ιπποδύναμη και πολύ υψηλό εύρος ζώνης μνήμης (memory bandwidth), όπως φαίνεται και στην Εικόνα

22 Εικόνα 4.1: Εντολές κινητής υποδιαστολής ανά δευτερόλεπτο και εύρος ζώνης για CPU και GPU 4.3 Ο παραλληλισμός στον πυρήνα της αρχιτεκτονικής CUDA Στον πυρήνα της CUDA υπάρχουν τρία επίπεδα αφαίρεσης μία ιεραρχία από ένα σύνολο νημάτων, κοινόχρηστοι χώροι μνήμης από τα νήματα και barrier για το συγχρονισμό των νημάτων που προσφέρονται στον προγραμματιστή ως ένα σετ με προεκτάσεις μίας γλώσσας. 22

23 προγραμματισμού. Αυτές οι αφαιρέσεις παρέχουν έναν υψηλής ποιότητας παραλληλισμό δεδομένων και παραλληλισμό νημάτων, ο οποίος είναι εμφωλευμένος σε έναν κοινό παραλληλισμό εργασιών και δεδομένων. Έτσι οδηγούν τον προγραμματιστή να χωρίσει το πρόβλημα σε υποπροβλήματα τα οποία μπορούν να λυθούν ανεξάρτητα μεταξύ τους άρα και παράλληλα και έπειτα σε μεγαλύτερα τελικά κομμάτια τα οποία μπορούν να λυθούν συνεργατικά παράλληλα. Μία τέτοια διάσπαση διατηρεί την εκφραστικότητα της γλώσσας με το να επιτρέπει στα νήματα να συνεργάζονται όταν λύνουν κάθε υποπρόβλημα και ταυτόχρονα καθιστά δυνατή την κλιμακωτή διαφάνεια καθώς κάθε υποπρόβλημα μπορεί να δρομολογηθεί έτσι ώστε να λυθεί σε οποιονδήποτε από τους διαθέσιμους πυρήνες επεξεργαστών. Για το λόγο αυτό, ένα μεταφρασμένο πρόγραμμα CUDA μπορεί να εκτελεστεί σε έναν οποιοδήποτε αριθμό από πυρήνες επεξεργαστών και μόνο το runtime system χρειάζεται να ξέρει τον αριθμό αυτό. Η αρχιτεκτονική CUDA και το σχετικό λογισμικό αναπτύχθηκαν με διάφορους στόχους: Να παρέχουν ένα μικρό σετ από προεκτάσεις σε κάποιες καθιερωμένες γλώσσες προγραμματισμού όπως η C που θα καθιστά δυνατή την άμεση υλοποίηση των παράλληλων αλγορίθμων. Με την CUDA και τη C για CUDA, οι προγραμματιστές μπορούν να επικεντρωθούν στη διαδικασία παραλληλισμού του αλγορίθμου αντί να ξοδεύουν χρόνο στην υλοποίησή του. Να υποστηρίζουν ετερογενείς υπολογισμούς όπου οι εφαρμογές χρησιμοποιούν και τη CPU και τη GPU. Τα σειριακά κομμάτια των αλγορίθμων θα εκτελούνται στον κεντρικό επεξεργαστή (CPU) και τα παράλληλα κομμάτια θα εκτελούνται στην κάρτα γραφικών (GPU). Οπότε η CUDA μπορεί εύκολα να εφαρμοστεί σε υπάρχουσες εφαρμογές. Η CPU και η GPU είναι ξεχωριστές συσκευές που έχουν το δικό τους χώρο μνήμης. Η διαμόρφωση αυτή επιτρέπει επιπλέον τους ταυτόχρονους υπολογισμούς στις συσκευές αυτές χωρίς ανταγωνισμό για τις πηγές μνήμης. Οι κάρτες γραφικών που διαθέτουν αρχιτεκτονική CUDA έχουν εκατοντάδες πυρήνες οι οποίοι μπορούν συγκεντρωτικά να εκτελούν χιλιάδες νήματα υπολογισμών. Κάθε πυρήνας διαθέτει κοινόχρηστες πηγές, συμπεριλαμβανομένων των καταχωρητών και περιοχών μνήμης. 4.4 Η ιεραρχία των νημάτων Η C for CUDA εκτείνει τη C επιτρέποντας στον προγραμματιστή να ορίσει συναρτήσεις C, που αποκαλούνται kernels, οι οποίοι όταν καλούνται εκτελούνται Ν φορές παράλληλα, από Ν διαφορετικά νήματα, σαν να καλούνται μόνο μία φορά όπως στις συνηθισμένες συναρτήσεις της C. Τα νήματα οργανώνονται σε μονοδιάστατα, δισδιάστατα ή τρισδιάστατα μπλοκ από νήματα. Αυτό παρέχει ένα φυσικό τρόπο να υλοποιηθούν οι υπολογισμοί κατά μήκος των στοιχείων σε μία δομή όπως ένας πίνακας, ένα διάνυσμα ή ένα πεδίο. Τα νήματα ενός μπλοκ μπορούν να συνεργαστούν μεταξύ τους μοιράζοντας δεδομένα μέσω κάποιας κοινόχρηστης μνήμης η οποία ονομάζεται shared memory και να συγχρονίζουν την εκτέλεσή τους με συντονισμένες προσπελάσεις μνήμης. Ο αριθμός των νημάτων ανά μπλοκ περιορίζεται από τις πηγές μνήμης ενός επεξεργαστή πυρήνα. Στις τωρινές κάρτες γραφικών, ένα μπλοκ από νήματα μπορεί συνήθως να περιέχει μέχρι 512 νήματα. 23

24 Ωστόσο, μία συνάρτηση πυρήνα (kernel) μπορεί να εκτελεστεί από πολλαπλά ίσου μεγέθους μπλοκ νημάτων, έτσι ώστε ο συνολικός αριθμός νημάτων να είναι ίσος με τον αριθμό των νημάτων ανά μπλοκ επί τον αριθμό των μπλοκ. Αυτά τα πολλαπλά μπλοκ νημάτων οργανώνονται σε μονοδιάστατο, δισδιάστατο ή τρισδιάστατο grid (πλέγμα) από μπλοκ νημάτων (βλ. Εικόνα 4.2). Ο αριθμός των μπλοκ νημάτων σε ένα grid τυπικά ορίζεται με βάση το μέγεθος των δεδομένων που είναι προς επεξεργασία αντί για τον αριθμό των επεξεργαστών σε ένα σύστημα, ο οποίος μπορεί να γίνει ιδιαίτερα μεγάλος. Εικόνα 4.2: Grid από μπλοκ νημάτων 24

25 4.5 Η ιεραρχία της μνήμης Τα CUDA νήματα μπορούν να προσπελαύνουν δεδομένα από διάφορους χώρους μνήμης κατά τη διάρκεια της εκτέλεσής τους. Κάθε νήμα έχει μία ιδιωτική μνήμη η οποία ονομάζεται local memory. Κάθε μπλοκ νημάτων έχει μία μνήμη που είναι ορατή από όλα τα νήματα του μπλοκ και έχει τον ίδιο χρόνο ζωής με το μπλοκ. Η μνήμη αυτή ονομάζεται shared memory. Τέλος όλα τα νήματα σε ένα grid έχουν πρόσβαση στη μνήμη που ονομάζεται global memory. Υπάρχουν επιπλέον δύο read-only κομμάτια μνήμης που είναι προσπελάσιμα από όλα τα νήματα: η constant και η texture μνήμη. Η global, η constant και η texture μνήμη είναι βέλτιστες για διαφορετικές χρήσεις της μνήμης. Το προγραμματιστικό μοντέλο της CUDA υποθέτει ένα σύστημα που αποτελείται από το χώρο στον οποίο τρέχει ο κώδικας που εκτελείται στη CPU και ονομάζεται host και το χώρο στον οποίο τρέχει ο κώδικας που εκτελείται στη GPU και ονομάζεται device, κάθε ένας από τους οποίους έχει τη δική του ξεχωριστή μνήμη. Οι kernes μπορούν να ενεργούν μόνο στη device μνήμη, οπότε παρέχονται συναρτήσεις για δέσμευση, αποδέσμευση και αντιγραφή της device μνήμης, όπως και για μεταφορά δεδομένων μεταξύ της host και της device μνήμης. Η device μνήμη μπορεί να δεσμευθεί είτε ως γραμμική μνήμη (linear memory) είτε ως CUDA arrays. Οι CUDA arrays είναι αδιαφανή κομμάτια μνήμης τα οποία είναι βέλτιστα για την αποθήκευση των textures. Η texture μνήμη είναι μία χαμηλής καθυστέρησης μνήμη που είναι πολύ γρηγορότερη από τη global μνήμη. Η CUDA υποστηρίζει ένα κομμάτι υλικού (hardware) που το χρησιμοποιεί η κάρτα γραφικών για τα γραφικά ώστε να προσπελαύνουν τη μνήμη αυτή. Το διάβασμα δεδομένων από την texture μνήμη αντί από την global μνήμη μπορεί να επιφέρει διάφορα οφέλη στη απόδοση. Η texture μνήμη είναι μία read-only μνήμη η οποία είναι προσπελάσιμη από όλα τα νήματα και μπορεί να διαβαστεί χρησιμοποιώντας CUDA arrays. Οι CUDA arrays μπορούν να είναι μονοδιάστατοι, δισδιάστατοι ή τρισδιάστατοι και μπορούν να διαβαστούν μόνο από τους kernels μέσω των texture αναφορών. Όπως φαίνεται στην Εικόνα 4.3, κάθε multiprocessor έχει μνήμη από κάθε έναν από τους επόμενους τέσσερις τύπους: Ένα σετ από 32-bit καταχωρητές ανά επεξεργαστή, Μία cache δεδομένων ή shared memory η οποία μοιράζεται από όλους τους πυρήνες επεξεργαστών Μία read-only cache, την constant cache η οποία μοιράζεται από όλους τους επεξεργαστές και επιταχύνει προσπελάσεις για διάβασμα από την costant μνήμη, η οποία είναι μία read-only περιοχή που βρίσκεται στη device μνήμη, Μία read-only cache, την texture cache η οποία μοιράζεται από όλους τους επεξεργαστές και επιταχύνει προσπελάσεις για διάβασμα από την texture μνήμη, η οποία είναι μία read-only περιοχή που βρίσκεται στη device μνήμη, Η local και η global μνήμη είναι περιοχές στις οποίες μπορούμε και να γράψουμε και να διαβάσουμε, βρίσκονται στη device μνήμη αλλά δεν έχουν cache. Ο αριθμός των ενεργών μπλοκ ανά επεξεργαστή εξαρτάται από το πόσους καταχωρητές ανά νήμα και πόση shared μνήμη ανά μπλοκ απαιτείται για μία συνάρτηση πυρήνα, αφού οι καταχωρητές των επεξεργαστών και η shared μνήμη χωρίζεται ανάμεσα σε όλα τα νήματα των ενεργών μπλοκ. Εάν δεν υπάρχουν διαθέσιμοι αρκετοί καταχωρητές ή shared μνήμη ανά επεξεργαστή ώστε να επεξεργαστούν τουλάχιστον ένα μπλοκ, τότε η κλήση της συνάρτησης πυρήνα θα αποτύχει. 25

26 Εικόνα 4.3: Το μοντέλο του hardware Memory Bandwidth Το αποτελεσματικό εύρος ζώνης κάθε κομματιού μνήμης εξαρτάται σημαντικά από το μοντέλο που χρησιμοποιούμε για να προσπελάσουμε τα δεδομένα. Αφού η device μνήμη είναι πολύ υψηλότερης καθυστέρησης και χαμηλότερου εύρους ζώνης από την on-chip μνήμη, οι προσπελάσεις από τη device μνήμη θα πρέπει να μειωθούν. Ένα τυπικό προγραμματιστικό μοντέλο είναι να τοποθετούμε τα δεδομένα που έρχονται από τη device μνήμη στη shared. Με άλλα λόγια, για κάθε μπλοκ νημάτων: 26

27 Φορτώνουμε τα δεδομένα από τη device στη shared memory, Συγχρονίζουμε όλα τα νήματα του μπλοκ μεταξύ τους έτσι ώστε κάθε νήμα να μπορεί ασφαλώς να διαβάσει τις περιοχές τις shared μνήμης οι οποίες εγγράφηκαν από άλλα νήματα του ίδιου μποκ, Επεξεργαζόμαστε τις πληροφορίες στη shared memory, Συγχρονίζουμε ξανά αν είναι απαραίτητο για να σιγουρευτούμε ότι η shared memory έχει ενημερωθεί με τα αποτελέσματα, Γράφουμε να αποτελέσματα πίσω στη device memory Global Memory Το κομμάτι της global μνήμης δεν έχει cache, οπότε είναι ακόμη πιο σημαντικό να ακολουθήσουμε το σωστό μοντέλο πρόσβασης για να πάρουμε το μέγιστι εύρος ζώνης, ειδικά έχοντας υπόψη το πόσο ακριβές είναι οι προσπελάσεις στη device memory. Το εύρος ζώνης της global μνήμης χρησιμοποιείται πιο αποτελεσματικά όταν ταυτόχρονες προσπελάσεις μνήμης από όλα τα νήματα σε ένα μισό warp (κατά τη διάρκεια της εκτέλεσης μιας εντολής ανάγνωσης ή εγγραφής) μπορούν να είναι ενωμένες (coalesced) σε μία μονή μεταφορά μνήμης των 32, 64, ή 128 bytes Coalescing σε κάρτες γραφικών με Υπολογιστική Ικανότητα 1.0 και 1.1 Η προσπέλαση της global μνήμης από όλα τα νήματα ενός μισού warp είναι ενωμένη (coalesced) σε μία ή δύο μεταφορές μνήμης αν ικανοποιεί τις ακόλουθες συνθήκες: Τα νήματα πρέπει να προσπελαύνουν Είτε λέξεις των 4 bytes, που έχουν ως αποτέλεσμα μία μεταφορά μνήμης των 64 byte, Είτε λέξεις των 8 bytes, που έχουν ως αποτέλεσμα μία μεταφορά μνήμης των 128 byte, Είτε λέξεις των 16 bytes, που έχουν ως αποτέλεσμα μία μεταφορά μνήμης των 128 byte, Όλες οι 16 λέξεις πρέπει να βρίσκονται στο ίδιο κομμάτι μεγέθους ίσου με το μέγεθος της μνήμης που μεταφέρεται (ή δύο φορές το μέγεθος της μνήμης που μεταφέρουμε όταν προσπελαύμνουμε λέξεις των 16 byte) Τα νήματα πρέπει να μεταφέρουν τις λέξεις στη σειρά: Τα κ-οστό νήμα στο μισό warp πρέπει να προσπελαύνει την κ-οστή λέξη. Αν ένα μισό warp δεν ικανοποιεί όλες τις παραπάνω απαιτήσεις, τότε μία ξεχωριστή μεταφορά μνήμης χρησιμοποιείται για κάθε νήμα και η απόδοση μειώνεται Coalescing σε κάρτες γραφικών με Υπολογιστική Ικανότητα 1.2 και Υψηλότερη Οι προσπελάσεις στη global μνήμη από όλα τα νήματα ενός μίσού warp είναι ενωμένες (coalesced) σε μία μονή μεταφορά μνήμης εφόσον οι λέξεις που προσπελαύνονται από όλα τα νήματα βρίσκονται στο ίδιο κομμάτι μεγέθους ίσο με: 32 bytes αν όλα τα νήματα προσπελαύνουν λέξεις μεγέθους 1 byte, 64 bytes αν όλα τα νήματα προσπελαύνουν λέξεις μεγέθους 2-byte, 27

28 128 bytes αν όλα τα νήματα προσπελαύνουν λέξεις μεγέθους 8-byte. Η ένωση (coalescing) επιτυγχάνεται για οποιοδήποτε σύνολο από διευθύνσεις ζητείται από το μισό warp, συμπεριλαμβανομένων συνόλων όπου πολλαπλά νήματα προσπελαύνουν την ίδια διεύθυνση. Αυτό έρχεται σε αντίθεση με τις κάρτες γραφικών χαμηλότερης υπολογιστικής δυνατότητας (compute capability) όπου τα νήματα χρειάζεται να προσπελαύνουν τις λέξεις σειριακά. Σε διευθύνσεις λέξεων του μισού warp που ανήκουν σε n διαφορετικά κομμάτια, χρειάζονται n μεταφορές μνήμης (μία για κάθε κομμάτι), ενώ οι κάρτες χαμηλότερης υπολογιστικής συνατότητας θα απαιτούσαν 16 μεταφορές εφόσον το n είναι μεγαλύτερο της μονάδας. Συγκεκριμένα, αν τα νήματα προσπελαύνουν λέξεις των 16 byte, απαιτούνται τουλάχιστον δύο μεταφορές μνήμης Local Memory Όπως και το κομμάτι της global μνήμης, ομοίως και η local μνήμη δεν έχει cache, άρα οι προσπελάσεις μνήμης στη local περιοχή είναι το ίδιο ακριβές με τις προσπελάσεις στη global περιοχή μνήμης. Οι προσπελάσεις ωστόσο στη local μνήμη είναι πάντα ενωμένες (coalesced) αφού είναι εξ ορισμού ανά νήμα Shared Memory Επειδή είναι on-chip, η shared μνήμη είναι πολύ γρηγορότερη από τη local και τη global μνήμη. Συγκεκριμένα για όλα τα νήματα ενός warp, η προσπέλαση της μνήμης shared είναι το ίδιο γρήγορη με την προσπέλαση ενός καταχωρητή εφόσον δεν υπάρχουν bank conflicts μεταξύ των νημάτων, όπως θα περιγραφούν στη συνέχεια. Για να επιτευχθεί υψηλό εύρος ζώνης, η shared μνήμη διαιρείται σε ισομεγέθεις υπομονάδες μνήμης, οι οποίες αποκαλούνται called banks και μπορούν να προσπελαστούν ταυτόχρονα. Έτσι κάθε αίτημα εγγραφής ή ανάγνωσης που αποτελείται από n διευθύνσεις που ανήκουν σε n διαφορετικές banks μπορούν να εξυπηρετηθούν ταυτόχρονα can be serviced simultaneously, αποδίδοντας ένα αποτελεσματικό εύρος ζώνης το οποίο είναι n φορές υψηλότερο από το εύρος ζώνης μίας υπομονάδας. Ωστόσο, αν δύο διευθύνσεις ενός αιτήματος μνήμης ανήκουν στην ίδια bank, τότε λέμε ότι υπάρχει bank conflict και η προσπέλαση πρέπει να γίνει σειριακά. Το hardware διαχωρίζει ένα αίτημα μνήμης με bank conflicts σε όσα ξεχωριστά, χωρίς συγκρούσεις αιτήματα είναι απαραίτητο, μειώνοντας με τον τρόπο αυτό το εύρος ζώνης κατά ένα παράγοντα ίσο με τον αριθμό των ξεχωριστών αιτημάτων μνήμης. Στην περίπτωση της shared μνήμης, οι banks είναι οργανωμένες έτσι ώστε διαδοχικές λέξεις των 32 bit ανατίθενται σε διαδοχικές banks και κάθε bank έχει εύρος ζώνης ίσο με 32 bits ανά δύο κύκλους ρολογιού. Για κάρτες με υπολογιστική δυνατότητα 1.x, το μέγεθος του warp είναι 32 και ο αριθμός των banks είναι 16. Ένα αίτημα για προσπέλαση στη shared μνήμη για ένα warp χωρίζεται σε ένα αίτημα για το πρώτο μισό του warp και ένα αίτημα για το δεύτερο μισό του warp. Ως συνέπεια, δε μπορεί να υπάρξει bank conflict ανάμεσα σε ένα νήμα που ανήκει στο πρώτο μισό warp και ένα νήμα που ανήκει στο δεύτερο μισό του ίδιου warp. 28

29 Εικόνα 4.4: Μοντέλα προσπέλασης της shared μνήμης χωρίς bank conflicts Αριστερά: Γραμμική προσπέλαση με βήμα 32 bits. Δεξιά: Τυχαίος συνδυασμός. 29

30 Εικόνα 4.5: Μοντέλα προσπέλασης της shared μνήμης με bank conflicts Texture Memory Τα texture κομμάτια μνήμης μπορούν να μπουν σε μία cache, την texture cache. Έτσι μία προσπέλαση της texture μνήμης κοστίζει όσο μία ανάγνωση από τη device μνήμη μόνο σε περίπτωση αστοχίας της cache, αλλιώς κοστίζει όσο ένα διάβασμα από την texture cache. Η texture cache είναι βέλτιστη για δισδιάστατες περιοχές μνήμης, έτσι ώστε τα νήματα που 30

31 ανήκουν στο ίδιο warp (32 νήματα) που διαβάζουν διευθύνσεις της texture μνήμης οι οποίες βρίσκονται κοντά μεταξύ τους θα πετύχουν καλύτερη απόδοση Constant Memory Μία ακόμη read-only μνήμη που είναι προσπελάσιμη από όλα τα νήματα είναι η constant μνήμη. Η μνήμη αυτή έχει επίσης μία cache έτσι ώστε ένα διάβασμα από την constant μνήμη να κοστίζει όσο ένα διάβασμα από τη device μνήμη μόνο σε περίπτωση αστοχίας της cache, αλλιώς κοστίζει όσο ένα διάβασμα από την constant cache. Για όλα τα νήματα ενός μισού warp (16 νήματα), το να διαβάσουν από την constant cache είναι το ίδιο γρήγορο όπως αν διάβαζαν από έναν καταχωρητή εφόσον όλα τα νήματα διαβάζουν την ίδια θέση μνήμης Registers (Καταχωρητές) Γενικά, η προσπέλαση ενός καταχωρητή δεν προσθέτει κανέναν επιπλέον κύκλο ρολογιού ανά εντολή, αλλά καθυστέρηση μπορεί να εμφανιστεί εξαιτίας εξαρτήσεων αναγνώσεων μετά από εγγραφές και bank conflicts στη μνήμη των καταχωρητών. Οι καθυστερήσεις που εισάγονται από εξαρτήσεις αναγνώσεων μετά από εγγραφές μπορούν να αγνοηθούν καθώς υπάρχουν τουλάχιστον 192 ενεργά νήματα ανά επεξεργαστή για να τις κρύψουν. Ο μεταφραστής και ο χρονοδρομολογητής νημάτων, οργανώνουν τις εντολές όσο πιο ευνοϊκά γίνεται ώστε να αποφευχθούν τα bank conflicts στη μνήμη των καταχωρητών. Πετυχαίνουν βέλτιστο αποτέλεσμα όταν ο αριθμός των νημάτων ανά μπλοκ είναι πολλαπλάσιο του 64. [12] Page-Locked Host Memory Το σύστημα επιπλέον παρέχει συναρτήσεις για τη δέσμευση και αποδέσμευση μίας μνήμης που ονομάζεται free page-locked (γνωστή επίσης και ως pinned) host μνήμη. Η χρήση της μνήμης αυτής προσφέρει διάφορα πλεονεκτήματα: Το εύρος ζώνης μεταξύ μνήμης host και device είναι μεγαλύτερο εάν έχει δεσμευθεί σαν as page-locked. Οι αντιγραφές μεταξύ της page-locked host μνήμης and device μνήμης μπορούν να πραγματοποιηθούν ταυτόχρονα με την εκτέλεση συναρτήσεων πυρήνα (kernels) για κάποιες κάρτες γραφικών, όπως θα δούμε και στη συνέχεια. Σε κάποιες κάρτες γραφικών, η page-locked host μνήμη μπορεί να γίνει map στο χώρο διευθύνσεων της device μνήμης, εξαλείφοντας έτσι την ανάγκη για αντιγραφή στη device ή από τη device μνήμη. Παρ όλα αυτά, η page-locked host μνήμη είναι μία σπάνια πηγή, οπότε οι δεσμεύσεις θα αρχίσουν να αποτυγχάνουν πολύ νωρίτερα από τις δεσμεύσεις στην pageable μνήμη. Επιπροσθέτως, μειώνοντας την ποσότητα της φυσικής μνήμης που έχει διαθέσιμη το λειτουργικό σύστημα για paging, με τη δέσμευση μεγάλου μέρους από την page-locked μνήμη, μειώνουμε την απόδοση όλου του συστήματος Ασύγχρονη Παράλληλη Εκτέλεση Για να διευκολύνουν την παράλληλη εκτέλεση μεταξύ host και device, κάποιες συναρτήσεις είναι ασύγχρονες. Ο έλεγχος επιστρέφεται στο νήμα του host πριν να έχει ολοκληρωθεί η αιτούμενη 31

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

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

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

Λιβανός Γιώργος Εξάμηνο 2017Β

Λιβανός Γιώργος Εξάμηνο 2017Β Λιβανός Γιώργος Εξάμηνο 2017Β Υπολογιστικό σύστημα Υλικό (hardware) Λογισμικό (Software) Ολοκληρωμένα κυκλώματα, δίσκοι, οθόνη, κλπ. Λογισμικό συστήματος Προγράμματα εφαρμογών Χρειάζονται ένα συντονιστή!!!

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

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 8: Λειτουργικά Συστήματα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

Α.Τ.Ε.Ι. Ηρακλείου Ψηφιακή Επεξεργασία Εικόνας ιδάσκων: Βασίλειος Γαργανουράκης. Ανθρώπινη Όραση - Χρωµατικά Μοντέλα

Α.Τ.Ε.Ι. Ηρακλείου Ψηφιακή Επεξεργασία Εικόνας ιδάσκων: Βασίλειος Γαργανουράκης. Ανθρώπινη Όραση - Χρωµατικά Μοντέλα Ανθρώπινη Όραση - Χρωµατικά Μοντέλα 1 Τι απαιτείται για την όραση Φωτισµός: κάποια πηγή φωτός Αντικείµενα: που θα ανακλούν (ή διαθλούν) το φως Μάτι: σύλληψη του φωτός σαν εικόνα Τρόποι µετάδοσης φωτός

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

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα

1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα 1 ο Εργαστήριο Συντεταγμένες, Χρώματα, Σχήματα 1. Σύστημα Συντεταγμένων Το σύστημα συντεταγμένων που έχουμε συνηθίσει από το σχολείο τοποθετούσε το σημείο (0,0) στο σημείο τομής των δυο αξόνων Χ και Υ.

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

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

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

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

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

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

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

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

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

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

2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ

2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ 2.0 ΒΑΣΙΚΕΣ ΓΝΩΣΕΙΣ-ΟΡΟΛΟΓΙΕΣ Η σάρωση ενός εγγράφου εισάγει στον υπολογιστή μια εικόνα, ενώ η εκτύπωση μεταφέρει στο χαρτί μια εικόνα από αυτόν. Για να αντιληφθούμε επομένως τα χαρακτηριστικά των σαρωτών

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

Αρχιτεκτονική Μνήμης

Αρχιτεκτονική Μνήμης ΕΣ 08 Επεξεργαστές Ψηφιακών Σημάτων Αρχιτεκτονική Μνήμης Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήμιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapters 3 & 4 Lapsley [2002]: Chapter

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

Οδηγίες σχεδίασης στο περιβάλλον Blender

Οδηγίες σχεδίασης στο περιβάλλον Blender Οδηγίες σχεδίασης στο περιβάλλον Blender Στον πραγματικό κόσμο, αντιλαμβανόμαστε τα αντικείμενα σε τρεις κατευθύνσεις ή διαστάσεις. Τυπικά λέμε ότι διαθέτουν ύψος, πλάτος και βάθος. Όταν θέλουμε να αναπαραστήσουμε

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

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής

7.Α.1 Παρουσιάσεις. 7.Α.2 Περιγραφή περιεχομένων της εφαρμογής Μάθημα 7ο Πολυμέσα 7.Α.1 Παρουσιάσεις Οι παρουσιάσεις είναι μια εφαρμογή που χρησιμεύει στην παρουσίαση των εργασιών μας. Αποτελούν μια συνοπτική μορφή των εργασιών μας. Μέσω δημιουργίας διαφανειών, μορφοποιήσεων

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΙΚΟΝΑΣ

ΠΡΟΓΡΑΜΜΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΙΚΟΝΑΣ ΠΡΟΓΡΑΜΜΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΙΚΟΝΑΣ ΠΡΟΓΡΑΜΜΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΙΚΟΝΑΣ Το Gimp είναι η πιο γνωστή εφαρμογή επεξεργασίας εικόνας που διατίθεται εντελώς δωρεάν ως λογισμικό ανοιχτού κώδικα. http://www.gimp.org Λήψη

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

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

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

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

Κεφάλαιο 4: Λογισμικό Συστήματος

Κεφάλαιο 4: Λογισμικό Συστήματος Κεφάλαιο 4: Λογισμικό Συστήματος Ερωτήσεις 1. Να αναφέρετε συνοπτικά τις κατηγορίες στις οποίες διακρίνεται το λογισμικό συστήματος. Σε ποια ευρύτερη κατηγορία εντάσσεται αυτό; Το λογισμικό συστήματος

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

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

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

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

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

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

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

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ http://leitourgika-systhmata-epal-b.ggia.info/ Σύγχρονο Λειτουργικό Σύστημα - ΛΣ Λειτουργικό Σύστημα:

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

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

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

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

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε)

Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, μνήμης και Ε/Ε) Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2015-16 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή

Τι είναι ένα λειτουργικό σύστημα (ΛΣ); Μια άλλη απεικόνιση. Το Λειτουργικό Σύστημα ως μέρος του υπολογιστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2014-15 Λειτουργικά Συστήματα (διαχείριση επεξεργαστή, και Ε/Ε) http://di.ionio.gr/~mistral/tp/csintro/ Μ.Στεφανιδάκης Τι είναι

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

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

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

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

Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) Εργασία Εξαμήνου

Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) Εργασία Εξαμήνου Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) Εργασία Εξαμήνου ΟΜΑΔΑ: Ιωαννίδης Σταύρος ΑΕΜ: 755 Ντελής Γιώργος ΑΕΜ: 726 Επιλογή της Εργασίας Για την εργασία μας επιλέξαμε την βελτιστοποίηση της

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

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε. Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε. 5.1 Το ρολόι Κάθε μία από αυτές τις λειτουργίες της Κ.Μ.Ε. διαρκεί ένα μικρό χρονικό διάστημα. Για το συγχρονισμό των λειτουργιών αυτών, είναι απαραίτητο κάποιο ρολόι.

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

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

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

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

Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering)

Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering) Υφή Η διαδικασία Παραγωγής Συνθετικής Εικόνας (Rendering) Θέσεις αντικειμένων και φωτεινών πηγών Θέση παρατηρητή 3D Μοντέλα 3Δ Μετασχ/σμοί Μοντέλου 3Δ Μετασχ/σμός Παρατήρησης Απομάκρυνση Πίσω Επιφανειών

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

Οδηγός Photoshop Μαρία Zάππα Κασαπίδη Interactive Education 22/7/2016

Οδηγός Photoshop Μαρία Zάππα Κασαπίδη Interactive Education 22/7/2016 Οδηγός Photoshop Μαρία Zάππα Κασαπίδη Interactive Education 22/7/2016 1 ΤΙ ΕΙΝΑΙ ΤΟ PHOTOSHOP Tο Photoshop είναι ένα λογισμικό που χρησιμοποιείται για την επεξεργασία ψηφιακών εικόνων, είτε πρόκειται για

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

ΛΟΓΙΣΜΙΚΟ (software)

ΛΟΓΙΣΜΙΚΟ (software) ΛΟΓΙΣΜΙΚΟ (software) Το Λογισµικό του Ηλεκτρονικού Υπολογιστή Περιεχόµενα Ορισµός Λογισµικού Κατηγορίες Λογισµικό Συστήµατος Λογισµικό Εφαρµογών Το λογισµικό είναι: Το λογισµικό Το σύνολο των προγραµµάτων

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

Το υλικό του υπολογιστή

Το υλικό του υπολογιστή Το υλικό του υπολογιστή Ερωτήσεις 1. Τι αντιλαμβάνεστε με τον όρο υλικό; Το υλικό(hardware) αποτελείται από το σύνολο των ηλεκτρονικών τμημάτων που συνθέτουν το υπολογιστικό σύστημα, δηλαδή από τα ηλεκτρονικά

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

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας Περιεχόμενα Κεφάλαιο 1 Microsoft Excel 2010... 7 Κεφάλαιο 2 Η δομή ενός φύλλου εργασίας... 19 Κεφάλαιο 3 ημιουργία νέου βιβλίου εργασίας και καταχώριση δεδομένων... 24 Κεφάλαιο 4 Συμβουλές για την καταχώριση

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

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

Απεικόνιση Υφής. Μέρος Α Υφή σε Πολύγωνα

Απεικόνιση Υφής. Μέρος Α Υφή σε Πολύγωνα Απεικόνιση Γραφικά ΥφήςΥπολογιστών Απεικόνιση Υφής Μέρος Α Υφή σε Πολύγωνα Γ. Γ. Παπαϊωάννου, - 2008 Τι Είναι η Υφή; Η υφή είναι η χωρική διαμόρφωση των ποιοτικών χαρακτηριστικών της επιφάνειας ενός αντικειμένου,

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

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

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

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

Τυπικές χρήσεις της Matlab

Τυπικές χρήσεις της Matlab Matlab Μάθημα 1 Τι είναι η Matlab Ολοκληρωμένο Περιβάλλον Περιβάλλον ανάπτυξης Διερμηνευμένη γλώσσα Υψηλή επίδοση Ευρύτητα εφαρμογών Ευκολία διατύπωσης Cross platform (Wintel, Unix, Mac) Τυπικές χρήσεις

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

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

Ενότητα 1η. Εισαγωγή στην Πληροφορική Ενότητα 1η Εισαγωγή στην Πληροφορική 1.1 Τι είναι Πληροφορική Ένας σύντομος ορισμός για το τι είναι πληροφορική είναι ο παρακάτω: όλα εκείνα που χρειάζεται κανείς για να παράγει, να οργανώνει και να διαχειρίζεται

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

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

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

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

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

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

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

Αρχιτεκτονική Μνήµης

Αρχιτεκτονική Μνήµης ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Αρχιτεκτονική Μνήµης Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapters 3 & 4 Lapsley [2002]: Chapter

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

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System)

Λειτουργικά Συστήματα Κεφάλαιο 2 Οργάνωση Συστήματος Αρχείων 2.1 Διαχείριση Αρχείων και Σύστημα Αρχείων(File System) ..8 Κατανομή των αρχείων σε συσκευές Ακολουθείται κάποια λογική στην αποθήκευση των αρχείων:.αρχεία που χρησιμοποιούνται συχνά τοποθετούνται στους σκληρούς δίσκους που έχουν μεγάλη ταχύτητα πρόσβασης..αν

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

Επεξεργασία Χαρτογραφικής Εικόνας

Επεξεργασία Χαρτογραφικής Εικόνας Επεξεργασία Χαρτογραφικής Εικόνας ιδάσκων: Αναγνωστόπουλος Χρήστος Βασικά στοιχεία εικονοστοιχείου (pixel) Φυσική λειτουργία όρασης Χηµική και ψηφιακή σύλληψη (Κλασσικές και ψηφιακές φωτογραφικές µηχανές)

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

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ 1. Τι εννοούμε με τον όρο υπολογιστικό σύστημα και τι με τον όρο μικροϋπολογιστικό σύστημα; Υπολογιστικό

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

GIMP. Κάππας Κωνσταντίνος Ματθές Δημήτριος

GIMP. Κάππας Κωνσταντίνος Ματθές Δημήτριος GIMP Κάππας Κωνσταντίνος Ματθές Δημήτριος Τι είναι το GIMP; Το GIMP ή αλλιώς "GNU Image Manipulation Program" είναι ένα λογισμικό ανοικτού κώδικα για την επεξεργασία εικόνων και φωτογραφιών. Διατίθεται

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

Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) 3η Εργαστηριακή Άσκηση

Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) 3η Εργαστηριακή Άσκηση Προγραμματισμός Συστημάτων Υψηλών Επιδόσεων (ΗΥ421) 3η Εργαστηριακή Άσκηση ΟΝΟΜΑ: Ιωαννίδης Σταύρος ΑΕΜ: 755 Αποτελέσματα devicequery Profiling με το Vtune Το profiling έδειξε πως οι πιο αργές συναρτήσεις

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

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

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

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

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

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

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

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

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

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

Μάθημα 4ο. Προγράμματα

Μάθημα 4ο. Προγράμματα Μάθημα 4ο Προγράμματα Σελίδα 47 από 106 4.1 Εγκατάσταση προγραμμάτων Όπως έχουμε πει στο πρώτο μάθημα (Σημειώσεις 1ου Μαθήματος 1.3.3.Β σελ. 12) τα προγράμματα ή αλλιώς εφαρμογές αποτελούν μέρος του λογισμικού

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

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

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

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

Κατανεμημένα Συστήματα

Κατανεμημένα Συστήματα Κατανεμημένα Συστήματα Σημειώσεις εργαστηρίου Lab#7 - Διεργασίες, Nήματα, Πολυνημάτωση στη Python Νεβράντζας Βάιος-Γερμανός Λάρισα, Φεβρουάριος 2013 Lab#7 - Διεργασιές, Νη ματα, Πολυνημα τωση στη Python,

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

DIP_06 Συμπίεση εικόνας - JPEG. ΤΕΙ Κρήτης

DIP_06 Συμπίεση εικόνας - JPEG. ΤΕΙ Κρήτης DIP_06 Συμπίεση εικόνας - JPEG ΤΕΙ Κρήτης Συμπίεση εικόνας Το μέγεθος μιας εικόνας είναι πολύ μεγάλο π.χ. Εικόνα μεγέθους Α4 δημιουργημένη από ένα σαρωτή με 300 pixels ανά ίντσα και με χρήση του RGB μοντέλου

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

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

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

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

9. Συστολικές Συστοιχίες Επεξεργαστών

9. Συστολικές Συστοιχίες Επεξεργαστών Κεφάλαιο 9: Συστολικές συστοιχίες επεξεργαστών 208 9. Συστολικές Συστοιχίες Επεξεργαστών Οι συστολικές συστοιχίες επεξεργαστών είναι επεξεργαστές ειδικού σκοπού οι οποίοι είναι συνήθως προσκολλημένοι σε

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

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ» Περιεχόμενα Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»... 2 Καταχωρητές... 3 Αριθμητική-λογική μονάδα... 3 Μονάδα μνήμης... 4 Μονάδα Εισόδου - Εξόδου... 5 Μονάδα ελέγχου... 5 Ρεπερτόριο Εντολών «ΑΒΑΚΑ»... 6 Φάση

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

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Page 1 Χρήστης Εφαρμογή Λειτουργικό Σύστημα Υλικό Γνωστά Λειτουργικά

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

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

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

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

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

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

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

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Λειτουργικά Συστήματα. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016 Κεφάλαιο 2: Σύστημα Αρχείων Τα προγράμματα που εκτελούνται

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

ΑΣΚΗΣΗ 2 ΒΑΣΙΚΑ ΚΑΙ ΣΥΝΘΕΤΑ ΣΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ - ΕΙΚΟΝΑΣ

ΑΣΚΗΣΗ 2 ΒΑΣΙΚΑ ΚΑΙ ΣΥΝΘΕΤΑ ΣΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ - ΕΙΚΟΝΑΣ ΑΣΚΗΣΗ 2 ΒΑΣΙΚΑ ΚΑΙ ΣΥΝΘΕΤΑ ΣΗΜΑΤΑ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ - ΕΙΚΟΝΑΣ Αντικείμενο: Κατανόηση και αναπαράσταση των βασικών σημάτων δύο διαστάσεων και απεικόνισης αυτών σε εικόνα. Δημιουργία και επεξεργασία των διαφόρων

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

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ Η/Υ ΜΕΡΛΙΑΟΥΝΤΑΣ ΣΤΕΦΑΝΟΣ, ΠΕ19 ΚΕΦΑΛΑΙΟ 3 Αλγόριθμοι 3. Αλγόριθμοι 2 3. Αλγόριθμοι 3.1 Η έννοια του αλγορίθμου 3.2 Χαρακτηριστικά αλγορίθμου 3.3 Ανάλυση αλγορίθμων

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

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

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

Τιμή Τιμή. σκορ. ζωές

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

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

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

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

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

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΗΠΕΙΡΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. Εργαστήριο Επεξεργασία Εικόνας & Βίντεο 1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή Νικόλαος Γιαννακέας Άρτα 2018 1 Εισαγωγή Το Matlab

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

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

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

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

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

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

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

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Χ. Βέργος Καθηγητής

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ Χ. Βέργος Καθηγητής ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013 2014 Χ. Βέργος Καθηγητής ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Σκοπός της φετινής εργασίας εξαμήνου είναι η σχεδίαση ενός Συστήματος Απεικόνισης Χαρακτήρων

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

Προγραμματισμός Ι (HY120)

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY20) # μνήμη & μεταβλητές πρόγραμμα & εκτέλεση Ψηφιακά δεδομένα, μνήμη, μεταβλητές 2 Δυαδικός κόσμος Οι υπολογιστές είναι δυαδικές μηχανές Όλη η πληροφορία (δεδομένα και κώδικας) κωδικοποιείται

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

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

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

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

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

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

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

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1 ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1 ΒΑΣΙΚΟΙ ΧΕΙΡΙΣΜΟΙ ΕΙΚΟΝΑΣ Αντικείμενο: Εισαγωγή στις βασικές αρχές της ψηφιακής επεξεργασίας εικόνας χρησιμοποιώντας το MATLAB και το πακέτο Επεξεργασίας Εικόνας. Περιγραφή και αναπαράσταση

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Εξετάσεις Προσομοίωσης 06/04/2015 Θέμα Α Α1. Να γράψετε στο τετράδιο σας τον αριθμό κάθε πρότασης και δίπλα τη λέξη ΣΩΣΤΟ, αν είναι σωστή και ΛΑΘΟΣ αν

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

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

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

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

ΔΙΑΡΘΡΩΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ

ΔΙΑΡΘΡΩΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΑΡΧΙΜΗΔΗΣ ΕΝΙΣΧΥΣΗ ΕΡΕΥΝΗΤΙΚΩΝ ΟΜΑΔΩΝ ΣΤΑ ΤΕΙ 2.2.2.3ζ ΔΙΑΡΘΡΩΣΗ ΠΕΡΙΕΧΟΜΕΝΟΥ ΕΓΧΡΩΜΩΝ ΕΓΓΡΑΦΩΝ Εγχειρίδιο χρήσης λογισμικού ΕΠΙΣΤΗΜΟΝΙΚΟΣ ΥΠΕΥΘΥΝΟΣ: ΣΤΡΟΥΘΟΠΟΥΛΟΣ ΧΑΡΑΛΑΜΠΟΣ ΣΕΡΡΕΣ, ΜΑΙΟΣ 2007 ΠΕΡΙΕΧΟΜΕΝΑ

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

Κεφάλαιο 8. Αριθμητική Λογική μονάδα

Κεφάλαιο 8. Αριθμητική Λογική μονάδα Κεφάλαιο 8 Αριθμητική Λογική μονάδα 8.1 Εισαγωγή Στη μηχανική υπολογιστών η αριθμητική/λογική μονάδα (ALU) είναι ένα ψηφιακό κύκλωμα το οποίο εκτελεί αριθμητικούς και λογικούς υπολογισμούς. Η ALU είναι

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

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ

ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΥΠΟΛΟΓΙΣΤΩΝ (E-CAD) ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2016 2017 Χ. Βέργος Καθηγητής ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ Σκοπός της φετινής εργασίας εξαμήνου είναι η σχεδίαση ενός Συστήματος Απεικόνισης Χαρακτήρων

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

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

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

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

Εργαστήριο Γραφικών. Βοηθητικό Υλικό για την εκπόνηση των εργασιών Αφορά την 1 η Εργαστηριακή Άσκηση

Εργαστήριο Γραφικών. Βοηθητικό Υλικό για την εκπόνηση των εργασιών Αφορά την 1 η Εργαστηριακή Άσκηση 1 Εργαστήριο Γραφικών Βοηθητικό Υλικό για την εκπόνηση των εργασιών Αφορά την 1 η Εργαστηριακή Άσκηση Μέρος B Σπύρος Συρμακέσης Καθηγητής syrma@teimes.gr Εύη Φαλιάγκα Δρ. Μηχανικός Η/Υ efaliaga@teimes.gr

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

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΩΤΑΠΑΝΤΗΣΕΙΣ Κεφάλαιο 1: Υλικό Υπολογιστών (Hardware) 1.1: Το υπολογιστικό σύστημα ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 1. Τι αντιλαμβάνεστε με τον όρο υλικό (hardware); [σελ. 8] Τα φυσικά μέρη που μπορούμε να δούμε και να αγγίξουμε

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

Εφαρμογές Πληροφορικής

Εφαρμογές Πληροφορικής Εφαρμογές Πληροφορικής Κεφάλαιο 11 Πολυμέσα ΜΕΡΟΣ Α 1. Υπερκείμενο Ποιός είναι ο κόμβος, ποιός ο σύνδεσμος και ποιά η θερμή λέξη; 1 2. Υπερμέσα Χαρακτηριστικά Κόμβος (Node) Αποτελεί τη βάση πληροφοριών

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

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Αρχιτεκτονική Eckert-von Neumann εισόδου μεταφορά δεδομένων από έξω προς τον Η/Υ εξόδου μεταφορά δεδομένων από τον Η/Υ προς τα έξω ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Κύκλος Μηχανής κεντρικός έλεγχος/πράξεις

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

Εισαγωγή στο περιβάλλον Code::Blocks

Εισαγωγή στο περιβάλλον Code::Blocks Εισαγωγή στο περιβάλλον Code::Blocks Στο παρόν εγχειρίδιο παρουσιάζεται η διαδικασία ανάπτυξης, μεταγλώττισης και εκτέλεσης ενός προγράμματος C στο περιβάλλον του Code::Blocks. Η διαδικασία αυτή παρουσιάζεται

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

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

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

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

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

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

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

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή Κεφάλαιο 3 Το υλικό του υπολογιστή Εισαγωγή Τµήµατα του Η/Υ καιοργάνωση Μονάδα Κεντρικής Μνήµης Κεντρική Μονάδα Επεξεργασίας (CPU) Μονάδα Εισόδου Εξόδου ίαυλοι Επικοινωνίας Εναλλακτικές αρχιτεκτονικές

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5 ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 5 22 Σεπτεµβρίου, 2006 Γεώργιος Έλληνας Επίκουρος Καθηγητής ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΑ ΘΕΜΑΤΑ

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

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19

Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών. Κοντογιάννης Βασίλειος ΠΕ19 Ενότητα 3 - Θέματα Εφαρμοσμένης Επιστήμης Υπολογιστών 3.1.1 Λογισμικό και Υπολογιστικό Σύστημα Τι είναι το υλικό ενός υπολογιστικού συστήματος; Το σύνολο των ηλεκτρονικών και μηχανικών μερών του που έχουν

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

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

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

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

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

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

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

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Απόδοση των οδηγών αποθηκευτικών µέσων Μέσος χρόνος πρόσβασης (Average Access Time) Ταχύτητα µεταφοράς δεδοµένων (Data-Transfer

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

Υλοποίηση ενός προγραμματιστικού κελύφους εργασίας

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

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

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης Αρης Ευθυμίου Λειτουργία μνήμης Η μνήμη είναι ένας πίνακας αποθήκευσης Οταν διαβάζουμε μια θέση, περιμένουμε να πάρουμε την τελευταία τιμή που έχει

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

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

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

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

Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών

Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών Παράλληλος προγραμματισμός σε επεξεργαστές γραφικών Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Νοέμβριος 2010 Περιεχόμενα...1 Σύντομη Ιστορική Αναδρομή...2

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

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

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

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

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

Λειτουργικά Συστήματα 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Λειτουργικά Συστήματα Ενότητα 9 : Ιδεατή Μνήμη 1/2 Δημήτριος Λιαροκάπης 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής

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

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

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

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

Α. Θα καλεί υποπρόγραμμα INPUT που θα διαβάζει τις τιμές του πίνακα MAP.

Α. Θα καλεί υποπρόγραμμα INPUT που θα διαβάζει τις τιμές του πίνακα MAP. Διαγώνισμα νάπτυξης Εφαρμογών Γ Λυκείου Θέμα Το GIS είναι ένα υπολογιστικό σύστημα το οποίο χρησιμοποιείται για την συλλογή, αποθήκευση και ανάλυση δεδομένων και πληροφοριών με γεωγραφική διάσταση. Ένα

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