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

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

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

Transcript

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

2 - 2 -

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

4 - 4 -

5 Αριθμός Διπλωματικής Εργασίας: Θέμα: «Τεχνικές μεταγλωττιστών για εφαρμογές πολυμέσων» Φοιτητής: Σπουρλής Γεώργιος Επιβλέπων: Γκούτης Κωνσταντίνος Περίληψη Στη σημερινή εποχή οι μεταγλωττιστές κατέχουν έναν σημαντικό ρόλο στην υψηλή απόδοση των υπολογιστικών συστημάτων είτε επιτραπέζιων, είτε εξυπηρετητών, είτε ενσωματωμένων. Ο λόγος είναι ότι στη σημερινή εποχή όλες σχεδόν οι εφαρμογές γράφονται σε γλώσσες υψηλού επιπέδου και συνεπώς απαιτείται μεταγλώττιση ώστε τα προγράμματα να τρέξουν σε γλωσσά μηχανής. Η ποιότητα του παραγομένου κώδικα που προκύπτει είναι κρίσιμη για την ορθή και γρήγορη εκτέλεση τους για αυτό το λόγω γίνεται σημαντική ερευνά στη συγγραφή μεταγλωττιστών που θα ικανοποιεί τις παραπάνω απαιτήσεις. Αν και σήμερα υπάρχει μέλλον στην ανάπτυξη των μεταγλωττιστών υπάρχει ζήτημα για τα ενσωματωμένα συστήματα. Λόγω του ότι πρέπει να είναι έχουν χαμηλό κόστος,χαμηλή κατανάλωση ισχύος χρησιμοποιούν υποτυπώδεις μεταγλωττιστές. Επειδή όμως τα ενσωματωμένα συστήματα είναι μεγάλος κλάδος των υπολογιστικών συστημάτων με εφαρμογές σε πληθώρα θεμάτων πρέπει οι εφαρμογές αυτές να είναι σωστές και να «τρέχουν» γρήγορα. Αυτό έχει ωθήσει τους προγραμματιστές στην μελέτη των compilers και των μετασχηματισμών που κάνουν και έχει δώσει μια νέα κατεύθυνση στη βελτιστοποίηση προγραμμάτων με το χέρι με χρήση τεχνικών μεταγλωττιστών αλλά και με υψηλοτέρου επιπέδου βελτιστοποιήσεις που δεν γίνονται ακόμα από μεταγλωττιστές. Σκοπός αυτής της εργασίας είναι η μελέτη και βελτιστοποίηση της εφαρμογής για πολυμέσα motion estimation by 4 με στόχο την αύξηση της ταχύτητας εκτέλεσης σε ένα πλήθος αρχιτεκτονικών διατάξεων. Η εξομοίωση των βελτιωμένων προγραμμάτων έδειξε ότι μπορούμε να επιτύχουμε σημαντική μείωση του χρόνου εκτέλεσης ακόμα και σε αρχιτεκτονικές που δεν αξιοποιούν στο μέγιστο δυνατό τις απαιτήσεις που έχουν αυτά

6 - 6 -

7 Πρόλογος Θα ήθελα να ευχαριστήσω όσους συνέβαλαν στη διεκπεραίωση της παρακάτω διπλωματικής εργασίας. Τον κ. Γκούτη Κωνσταντίνο, για την πολύτιμη καθοδήγησή του καθ όλη τη διάρκεια της εργασίας καθώς και τον κ. Κελεφούρα Βασίλειο, για τη συνεχή ενασχόληση και βοήθεια που μου προσέφερε σε κάθε δυσκολία που συνάντησα. Πάτρα, Οκτώβριος

8 Περιεχόμενα Κεφάλαιο 1: Εισαγωγή 11 Κεφάλαιο 2: Μεταγλωττιστές Σκοπός μεταγλωττιστών Δομή και λειτουργία των σύγχρονων μεταγλωττιστών Δέσμευση καταχωρητών Επίδραση των μεταγλωττιστών στην απόδοση και τον τρόπο σχεδιασμού της αρχιτεκτονικής Μεταγλωττιστές και ενσωματωμένα συστήματα Τεχνικές μεταγλωττιστών για παραλληλισμό θεωρία εξαρτήσεων Παραλληλισμός Θεωρία εξαρτήσεων Εξαρτήσεις δεδομένων Θεωρία εξαρτήσεων Εξαρτήσεις ελέγχου Εντοπισμός εξαρτήσεων Τεχνικές μεταγλώττισης για την αποκάλυψη παραλληλισμού μεταξύ εντολών Κλασσικοί μετασχηματισμοί βελτιστοποίησης κώδικα 26 Κεφάλαιο 3: Υπερβαθμωτοί (Superscalar) Επεξεργαστές Εισαγωγή Από τη σειριακή στην παράλληλη έκδοση προγραμμάτων Λειτουργία Superscalar για επεξεργασία υψηλής απόδοσης Αναπαράσταση προγραμμάτων Εξαρτήσεις και παράλληλη εκτέλεση Αρχιτεκτονική τυπικού επεξεργαστή Superscalar Ανάκληση εντολών Πρόβλεψη διακλαδώσεων Αποκωδικοποίηση, μετονομασία, προώθηση εντολών Εκτέλεση εντολών και παράλληλη εκτέλεση Λειτουργίες μνήμης Ανανέωση αρχιτεκτονικής κατάστασης Ο ρόλος των προγραμμάτων στην αύξηση της απόδοσης

9 Κεφάλαιο 4: Ιεραρχία μνήμης Εισαγωγή Γενικά περί κρυφών μνημών(cache) Οργάνωση και λειτουργία κρυφών μνημών Τοποθέτηση μπλοκ στην κρυφή μνήμη Αναγνώριση μπλοκ στην κρυφή μνήμη Αντικατάσταση μπλοκ στην κρυφή μνήμη Στρατηγική εγγραφής Πολυεπίπεδες κρυφές μνήμες Σημασία του μεγέθους του μπλοκ Αύξηση στο επίπεδο της συσχετιστικότητας Βελτιστοποιήσεις μεταγλωττιστή Κύρια μνήμη Τεχνικές για περισσότερο εύρος Τεχνολογία μνήμης.50 Κεφάλαιο 5: Motion Estimation by Εισαγωγή Αρχικός αλγόριθμος Motion Estimation by Μεθοδολογία βελτιστοποίησης εφαρμογής Motion Estimation by ος χρονοπρογραμματισμός Τοποθέτηση μεταβλητών του τωρινού μπλοκ στο register file και χρήση αντιμεταθέσεων μεταξύ μεταβλητών του μπλοκ του προηγούμενου frame ος και 3 ος χρονοπρογραμματισμός Αύξηση του μπλοκ στο προηγούμενο frame κατά μια ή περισσότερες τετράδες για καλύτερη διαχείριση της cache L1 συνδυασμός των δύο μεθόδων ος χρονοπρογραμματισμός Χρήση περισσότερων μπλοκ στο τωρινό frame για αύξηση παραλληλίας και καλύτερη διαχείριση της cache L1 και δέσμευση των μεταβλητών Τεχνικές βελτίωσης Μετασχηματισμοί Compilers...65 Κεφάλαιο 6: Μετρήσεις Σχολιασμός αποτελεσμάτων Συμπεράσματα Εισαγωγή Ο εξομοιωτής Simplescalar Απόδοση Μέγεθος caches Απόδοση Μέγεθος frames

10 6.5 Απόδοση Core L1, L2 Cache accesses/misses Communication bottleneck μεταξύ των επιπέδων μνήμης Απόδοση Associativity caches Συνολικά Loads και Stores Συνολικά instructions.77 Κεφάλαιο 7: Σύνοψη-Συμπεράσματα Κεφάλαιο 8: Βιβλιογραφία

11 1 ΕΙΣΑΓΩΓΗ Η ραγδαία αύξηση της απόδοσης των υπολογιστικών συστημάτων τις τελευταίες δεκαετίες έχει προκαλέσει μεγάλη αύξηση στον αριθμό των τρανζίστορ στο chip. Έχει παρατηρηθεί ότι κάθε 18 μήνες περίπου ο αριθμός των τρανζίστορ ανά chip σχεδόν διπλασιάζεται ενώ προβλέπεται ότι η τάση αυτή θα συνεχιστεί και στο μέλλον. Παράλληλα, λόγω του συνεχώς μειούμενου μεγέθους των τρανζίστορ, οι συχνότητες λειτουργίας της CPU αυξάνονται με σχεδόν ίδιους ρυθμούς. Το φαινόμενο αυτό έχει δημιουργήσει την απαίτηση για τη δημιουργία αποδοτικών multimedia εφαρμογών, εφαρμογών σε ενσωματωμένα συστήματα καθώς και γενικότερων εφαρμογών στην επιστήμη των υπολογιστών. Στην πραγματικότητα στους παραπάνω τομείς η υψηλή απόδοση είναι μία πρακτική απαίτηση(όπως για παράδειγμα η ανάγκη για τη δημιουργία video με κατά το δυνατόν υψηλότερη ανάλυση), και φαίνεται ότι η εξέλιξη των υπολογιστών συμβαδίζει με την απαίτηση αυτή. Η πολυπλοκότητα των σύγχρονων υπολογιστικών συστημάτων όμως, έχει καταστήσει αρκετά δύσκολη τη συγγραφή κώδικα ο οποίος να πετυχαίνει τη βέλτιστη δυνατή απόδοση. Ακόμα και οι απ ευθείας υλοποιήσεις που βασίζονται σε γνωστούς αλγόριθμους οι οποίοι χρησιμοποιούν εξ ορισμού μικρό αριθμό πράξεων πολλές φορές δεν πετυχαίνουν βέλτιστη απόδοση. Στην παρακάτω διπλωματική παρουσιάζεται ένα σύνολο από τεχνικές για τη βελτίωση της απόδοσης για την εφαρμογή «motion estimation by 4» λαμβάνοντας υπόψη κατά βάση τον αριθμό των πράξεων που εκτελεί σε δεδομένα διαστήματα ο αλγόριθμος καθώς και την ιεραρχία των μνημών στις χρησιμοποιούμενες αρχιτεκτονικές. Το κείμενο οργανώνεται με τον ακόλουθο τρόπο. Στο κεφάλαιο 2 παρουσιάζεται η κύρια δομή των μεταγλωττιστών,ο τρόπος λειτουργίας τους καθώς και οι τεχνικές που χρησιμοποιούνται για την αποκάλυψη και εκμετάλλευση του παραλληλισμού. Στο κεφάλαιο 3 παρουσιάζεται η αρχιτεκτονική ενός τυπικού superscalar επεξεργαστή και παρουσιάζεται το εργαλείο εξομοίωσης

12 που χρησιμοποιήσαμε. Στο κεφάλαιο 4 παρουσιάζουμε την ιεραρχία μνήμης στα σύγχρονα υπολογιστικά συστήματα δίνοντας ιδιαίτερη έμφαση στις κρυφές μνήμες και στην κύρια μνήμη. Στο κεφάλαιο 5 κάνουμε μια εισαγωγή στην εφαρμογή που πρόκειται να βελτιστοποιήσουμε το motion estimation by 4 και προτείνουμε 4 χρονοπρογραμματισμούς αναλύοντας τα κριτήρια για την επιλογή τους. Στο κεφαλαίο 6 κάνουμε σύγκριση μεταξύ αρχικού και βέλτιστου χρονοπρογραμματισμού, σε διαφορές αρχιτεκτονικές διατάξεις, μέσω της διαδικασίας εξομοίωσης και των μετρήσεων βγάζοντας χρήσιμα συμπεράσματα. Στο κεφαλαίο 7 παρουσιάζουμε με σύντομο τρόπο τα συμπεράσματα που εξηχθησαν. Τέλος στο κεφάλαιο 8 παρουσιάζεται η βιβλιογραφία που χρησιμοποιήθηκε στα πλαίσια της διπλωματικής

13 2 ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ Σε αυτή το κεφάλαιο της θεωρίας θα ασχοληθούμε και θα εξηγήσουμε διάφορα θέματα που έχουν να κάνουν με μεταγλωττιστές. Θα επικεντρωθούμε κυρίως στους μεταγλωττιστές βελτιστοποίησης, θα εξηγήσουμε απλοϊκά τη δομή και τον τρόπο λειτουργίας τους, θα δείξουμε την χρησιμότητα τους και θα παρουσιάσουμε λίγα πράγματα για τους μετασχηματισμούς που κάνουν στις εφαρμογές και τα πλεονεκτήματα που αυτοί προσφέρουν. 2.1 ΣΚΟΠΟΣ ΤΩΝ ΜΕΤΑΓΛΩΤΤΙΣΤΩΝ Οι μεταγλωττιστές (compilers) είναι αναπόσπαστο κομμάτι των υπολογιστικών συστημάτων είτε επιτραπέζιων είτε εξυπηρετητών είτε ενσωματωμένων. Γενικά στη σημερινή εποχή ο περισσότερος προγραμματισμός για τις διάφορες υπολογιστικές εφαρμογές σε πλήθος διαφορετικών θεμάτων εκτός φυσικά από κάποιες εξαιρέσεις γίνεται με τη χρήση γλωσσών υψηλού επιπέδου. Ωστόσο είναι γνωστό ότι τα υπολογιστικά συστήματα όλων των ειδών και όλοι οι επεξεργαστές εκτελούν εντολές που είναι σε μορφή γλώσσας μηχανής. Ο συνδετικός κρίκος που ενώνει τα διαφορετικά επίπεδα γλωσσών είναι ο μεταγλωττιστής. Ουσιαστικά λοιπόν παίρνει τις εντολές σε υψηλό επίπεδο και δημιουργεί τις κατάλληλες δυαδικές ακολουθίες από 0,1 για τον συγκεκριμένο επεξεργαστή που έχουμε στη διάθεση μας κάθε φορά ώστε να υλοποιείται η εφαρμογή που θέλουμε. Είναι προφανές από αυτά που είπαμε ότι η ποιότητα του παραγόμενου κώδικα από τον μεταγλωττιστή είναι μεγάλης σημασίας για την απόδοση του υπολογιστικού συστήματος και ιδιαιτέρως για τα ενσωματωμένα συστήματα στη σημερινή εποχή και συνεπώς η κατανόηση του

14 της τεχνολογίας τους και του τρόπου λειτουργίας τους αποκτά ιδιαίτερο ενδιαφέρον στην σημερινή εποχή που η ανάγκη για υψηλού επιπέδου εφαρμογές είναι ολοένα και μεγαλύτερη. Αν και ο πρώτιστος στόχος των μεταγλωττιστών είναι η ορθότητα δηλαδή το γεγονός ότι όλα τα έγκυρα προγράμματα πρέπει να μεταφραστούν σωστά σε γλώσσα μηχανής (αν δεν ικανοποιείται αυτό τότε δεν μιλάμε προφανώς για μεταγλωττιστές ) είναι φανερό ότι από τα όσα ειπώθηκαν παραπάνω δεν είναι και η μοναδική απαίτηση που υπάρχει. Εξίσου σημαντικός στόχος είναι η δημιουργία όσον το δυνατόν πιο γρήγορου μεταφρασμένου κώδικα (εννοείται ταχύτερου σε εκτέλεση) καθώς και συνόλου άλλων στόχων όπως είναι η γρήγορη μεταγλώττιση η υποστήριξη διόρθωσης η διαλειτουργικότητα μεταξύ των διαφόρων γλωσσών προγραμματισμού ακόμα και η όσο το δυνατόν καλύτερη μεταφορά μεταξύ διαφορετικών συστημάτων. Όλα αυτά είναι σημαντικά θέματα που πρέπει να ληφθούν σοβαρά υπόψη. Ιδιαίτερο ενδιαφέρον θα δοθεί παρακάτω για τους μεταγλωττιστές βελτιστοποίησης. 2.2 ΔΟΜΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΑ ΤΩΝ ΣΥΓΧΡΟΝΩΝ ΜΕΤΑΓΛΩΤΤΙΣΤΩΝ Όπως αναφέρθηκε και παραπάνω οι μεταγλωττιστές ασχολούνται με την μετάφραση του κώδικα από γλώσσα υψηλού επιπέδου σε γλώσσα μηχανής και με την βελτιστοποίηση του για την καλύτερη απόδοση της εφαρμογής. Ο μεταγλωττιστής κάνει τα παραπάνω με διαδοχικά περάσματα και όχι όλα μαζί ένα βήμα καθώς όχι μόνο θα απαιτούνταν πολύς χρόνος για να γίνει κάτι τέτοιο αλλά και διότι ο κίνδυνος σφάλματος θα ήταν μεγάλος και φυσικά η βελτιστοποίηση που θα γινόταν δεν είναι σίγουρο αν θα έδινε το καλύτερο δυνατό αποτέλεσμα σε πεπερασμένο χρονικό διάστημα όπως θα εξηγήσουμε και παρακάτω. Έτσι λοιπόν σε κάθε νέο πέρασμα το υψηλότερο επίπεδο που έχει περισσότερο αφηρημένες αναπαραστάσεις μετασχηματίζεται σε χαμηλότερα επίπεδα αναπαραστάσεων που στο τέλος έχουν ως αποτέλεσμα τον κώδικα σε μορφή μηχανής. Γενικά η πολυπλοκότητα της συγγραφής ενός σωστού μεταγλωττιστή αποτελεί ένα βασικό περιορισμό στο βαθμό της βελτιστοποίησης που μπορεί να επιτευχτεί από αυτόν. Παρόλο που η δομή με τα πολλαπλά περάσματα βοηθούν σημαντικά στην μείωση της πολυπλοκότητας ενός μεταγλωττιστή σημαίνει με τη σειρά του ότι ο μεταγλωττιστής πρέπει να βάλει τους βελτιστοποιητικούς μετασχηματισμούς του σε κάποια σειρά και να προφανώς αυτό σημαίνει ότι κάποιοι εκτελούνται πριν από τους υπόλοιπους. Στο διάγραμμα του μεταγλωττιστή βελτιστοποίησης που θα ακολουθητέε μπορούμε να δούμε ότι κάποιες από τις βελτιστοποιήσεις υψηλού επιπέδου εκτελούνται πολύ πριν γνωστοποιηθούν οι λεπτομέρειες του κώδικα που θα προκύψει. Μετά από μια τέτοια βελτιστοποίηση σαφώς και δεν συμφέρει τον μεταγλωττιστή να γυρίσει πίσω και να ξανακάνει όλα τα βήματα από την αρχή αναιρώντας πιθανότατα τους μετασχηματισμούς. Κάτι τέτοιο θα ήταν απαγορευτικό τόσο για τον χρόνο μεταγλώττισης όσο και για την πολυπλοκότητα. Από αυτό γίνεται σαφές ότι οι μεταγλωττιστές κάνουν υποθέσεις σχετικά με την ικανότητα μετέπειτα βημάτων να αντιμετωπίσουν ορισμένα προβλήματα. Για παράδειγμα συνήθως οι μεταγλωττιστές πρέπει να επιλέξουν ποιες κλίσεις υποπρογραμμάτων να επεκτείνουν με ενσωμάτωση πριν μάθουν το ακριβές μέγεθος του υποπρογράμματος που καλείται. Επιπλέον η διάταξη των μετασχηματισμών αλληλεπιδρά με το σύνολο των εντολών. Ένα παράδειγμα βελτιστοποίησης που δείχνει αυτό ακριβώς το πράγμα είναι αυτό που ονομάζεται καθολική απαλοιφή των κοινών υποεκφράσεων. Σε αυτή την βελτιστοποίηση ο μεταγλωττιστής βρίσκει δυο αντίγραφα κάποιας έκφρασης που υπολογίζουν τις ίδιες τιμές και αποθηκεύει προσωρινά το αποτέλεσμα του πρώτου υπολογισμού. Κατόπιν χρησιμοποιεί την προσωρινή τιμή απαλείφοντας το δεύτερο υπολογισμό της κοινής έκφρασης. Ωστόσο για να είναι σημαντική αυτή η βελτιστοποίηση η προσωρινή τιμή πρέπει να τοποθετείται σε κάποιον καταχωρητή. Σε αντίθετη περίπτωση το κόστος της αποθήκευσης της προσωρινής τιμής στη μνήμη και αργότερα της επαναφοράς της μπορεί να εκμηδενίσει το όφελος που έχουμε από μια

15 επανάληψη του υπολογισμού της έκφρασης. Στην πραγματικότητα υπάρχουν περιπτώσεις στις οποίες η βελτιστοποίηση αυτή κάνει τον κώδικα πιο αργό όταν η προσωρινή τιμή δεν τοποθετείται σε καταχωρητή. Η διάταξη των φάσεων βεβαία περιπλέκει αυτό το πρόβλημα διότι η δέσμευση καταχωρητών γίνεται κατά κύριο λόγο προς το τέλος του περάσματος καθολικής βελτιστοποίησης ακριβώς πριν από την παράγωγη του κώδικα. Επομένως ένας βελτιστοποιητής που εκτελεί αυτή την βελτιστοποίηση πρέπει να υποθέσει ότι η δέσμευση καταχωρητών θα τοποθετήσει την προσωρινή τιμή σε έναν καταχωρητή. Γενικά οι βελτιστοποιήσεις που εκτελούνται από συγχρόνους μεταγλωττιστές μπορούν να κατηγοριοποιηθούν συμφώνα με τον τύπο του μετασχηματισμού ως εξής: Οι βελτιστοποιήσεις υψηλού επιπέδου συχνά γίνονται στον πηγαίο κώδικα με το αποτέλεσμα τους να τροφοδοτεί επόμενα περάσματα βελτιστοποίησης. Οι τοπικές βελτιστοποιήσεις βελτιστοποιούν τον κώδικα μόνο μέσα στα πλαίσια ενός τμήματος κώδικα εντολών σε σειρά. Οι καθολικές βελτιστοποιήσεις επεκτείνουν τις τοπικές βελτιστοποιήσεις πέρα από τις διακλαδώσεις και εισάγουν ένα σύνολο μετασχηματισμών για βελτιστοποίηση βρόγχων. Δέσμευση καταχωρητών η οποία αντιστοιχίζει τους καταχωρητές με τους τελεστές. Οι βελτιστοποιήσεις που εξαρτώνται από τον επεξεργαστή προσπαθούν να εκμεταλλευτούν συγκεκριμένα αρχιτεκτονικά στοιχειά του επεξεργαστή. Σχήμα 2. 1 Μεταγλωττιστής 4 περασμάτων

16 2.3 ΔΕΣΜΕΥΣΗ ΚΑΤΑΧΩΡΗΤΩΝ Εξαιτίας του κεντρικού ρόλου που έχει η δέσμευση καταχωρητών τόσο στην επιτάχυνση του κώδικα όσο και στο να κάνει χρήσιμες κάποιες άλλες βελτιστοποιήσεις είναι μια από τις σημαντικότερες βελτιστοποιήσεις αν όχι η σημαντικότερη για αυτό τον λόγο αξίζει να ασχοληθούμε λίγο με τον τρόπο που οι μεταγλωττιστές προσπαθούν να δεσμεύσουν με τον πιο κατάλληλο τρόπο τους καταχωρητές. Υπάρχουν λοιπόν σύγχρονοι αλγόριθμοι δέσμευσης καταχωρητών και η υλοποίηση της δέσμευσης βασίζεται σε μια τεχνική η οποία ονομάζεται χρωματισμός γραφήματος. Η βασική ιδέα της τεχνικής είναι η κατασκευή ενός γραφήματος που να αναπαριστά τους πιθανούς υποψηφίους για τοποθέτηση σε καταχωρείτε και η επακόλουθη χρήση του γραφήματος αυτού για την δέσμευση των καταχωριστών. Σε γενικές γραμμές το πρόβλημα χρωματισμού γραφήματος είναι πώς να χρησιμοποιήσουμε ένα περιορισμένο σύνολο από χρώματα έτσι ώστε σε ένα γράφημα εξαρτήσεων να μην υπάρχουν δυο γειτονικοί κόμβοι με το ίδιο χρώμα. Ο βασικός στόχος σε αυτήν την προσέγγιση είναι η δέσμευση καταχωρητών για ενεργές μεταβλητές σε βαθμό 100%. Γενικά το πρόβλημα του χρωματισμού γράφων μπορεί να πάρει εκθετικό χρόνο σαν συνάρτηση του μεγέθους του γραφήματος (NP-complete). Παρόλα αυτά υπάρχουν ευριστικοί αλγόριθμοι που στην πράξη δουλεύουν αρκετά καλά παράγοντας πολύ καλές δεσμεύσεις και τρέχουν σε σχεδόν γραμμικό χρόνο. Ο χρωματισμός αποδίδει καλυτέρα όταν έχουμε τουλάχιστον 16 καταχωρητές γενικού σκοπού οι οποίοι να είναι ελεύθεροι για καθολική δέσμευση για ακέραιες μεταβλητές καθώς και επιπρόσθετοι καταχωρητές για μεταβλητές κινητής υποδιαστολής. Γενικά όσο περισσότεροι οι καταχωρητές τόσο καλύτερη απόδοση θα έχουμε σε διαφορετική περίπτωση οι ευριστικοί αλγόριθμοι που χρωματίζουν το γράφημα ενδέχεται να αποτύχουν. 2.4 ΕΠΙΔΡΑΣΗ ΤΩΝ ΜΕΤΑΓΛΩΤΤΙΣΤΩΝ ΣΤΗΝ ΑΠΟΔΟΣΗ ΚΑΙ ΣΤΟΝ ΤΡΟΠΟ ΣΧΕΔΙΑΣΜΟΥ ΤΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Γενικά βάση των διαφόρων βελτιστοποιήσεων που κάνουν οι μεταγλωττιστές από τις απλούστερες μέχρι τις πιο σύνθετες τα βελτιστοποιημένα προγράμματα που προκύπτουν μπορεί εκτελούν 25% με 90% λιγότερες εντολές από τα μη βελτιστοποιημένα προγράμματα που αυτό με τη σειρά του σημαίνει πολύ μεγάλη διαφορά σε εκτέλεση. Αυτό σημαίνει ότι δεν πρέπει να είναι αποκομμένος ο σχεδιαστής της αρχιτεκτονικής του συστήματος από τον τρόπο μεταγλώττισης των προγραμμάτων που θα τρέξουν στην συγκεκριμένη αρχιτεκτονική που αυτός σχεδιάζει. Πρέπει αρχικά να έχει υπόψη του το πώς αλληλεπιδρούν οι μεταγλωττιστές με τις γλώσσες υψηλού επιπέδου δηλαδή το πως τα προγράμματα χρησιμοποιούν μια αρχιτεκτονική συνόλου εντολών. Κάποια κρίσιμα ερωτήματα είναι το πώς τοποθετούνται και πως διευθυνσιοδοτούνται οι μεταβλητές, πόσοι καταχωρητές χρειάζονται για μια ικανοποιητική αντιστοίχηση με τις μεταβλητές. Οι σύγχρονες γλώσσες υψηλού επιπέδου τοποθετούν τα δεδομένα τους : α) στη στοίβα που χρησιμοποιείται για τοπικές μεταβλητές και όχι για υπολογισμό εκφράσεων β) στο χώρο καθολικών δεδομένων που χρησιμοποιείται όπως φαίνεται για καθολικές μεταβλητές η γενικότερα δομές και σταθερές γ) τον σωρό που χρησιμοποιείται για τοποθέτηση δυναμικών αντικειμένων κυρίως. Έτσι η δέσμευση μεταβλητών είναι αποτελεσματικότερη για αντικείμενα τοποθετημένα στη στοίβα και σχεδόν αδύνατη για αντικείμενα του σωρού που απαιτούν δείκτες για την προσπέλαση τους. Έχοντας λοιπόν υπόψη τους οι αρχιτέκτονες του κάθε φορά συστήματος τα παραπάνω καθώς και τη δομή των μεταγλωττιστών και άλλων γνώσεων που σχετίζονται με αυτούς πρέπει ειδικά στη σημερινή εποχή να βοηθούν την μεταγλώττιση μέσα από τη δική τους σχεδίαση. Σήμερα τα

17 προγράμματα είναι πολύ πολύπλοκα και αυτό οφείλεται τόσο στο μέγεθος τους όσο και στις αλληλεπιδράσεις τους σε καθολικό επίπεδο ενώ από την άλλη οι μεταγλωττιστές αποφασίζουν για το πια αλληλουχία εντολών είναι καλύτερη για να εκτελεστεί κάθε φορά σταδιακά και όχι συνολικά. Γενικά και στους μεταγλωττιστές ισχύει η λογική του : κάνετε τις συχνότερες περιπτώσεις γρήγορες και τις σπανιότερες απλές με την διαφορά όμως ότι όλες πρέπει να γίνονται σωστά. Έτσι αυτό που μπορούν να κάνουν οι αρχιτέκτονες έτσι ώστε να βοηθηθεί ένας μεταγλωττιστής στην δουλειά του είναι : Α) Η παροχή ομοιομορφίας Αυτό σημαίνει ότι οι λειτουργίες,οι τύποι δεδομένων οι μέθοδοι διευθυνσιοδότησης θα πρέπει να είναι ορθογώνια. Δυο πλευρές αρχιτεκτονικής λέγεται ότι είναι ορθογώνιες αν είναι ανεξάρτητες μεταξύ τους. Για παράδειγμα οι λειτουργίες και οι μέθοδοι διευθυνσιοδότησης είναι ορθογώνιοι αν για κάθε λειτουργία στην οποία μπορεί να εφαρμοστεί μια μέθοδος διευθυνσιοδότησης, μπορούν να εφαρμοστούν όλες οι μέθοδοι διευθυνσιοδότησης. Αυτή η ομοιομορφία βοηθάει στην απλοποίηση της παραγωγής κώδικα και είναι ιδιαίτερα σημαντική όταν η απόφαση σχετικά με το ποιος κώδικας θα παραχθεί κατανέμεται σε δυο περάσματα του μεταγλωττιστή. Β) Παροχή βασικών δομικών στοιχείων και όχι ειδικών λύσεων Ειδικά χαρακτηριστικά τα οποία ταιριάζουν σε κάποια γλωσσική δομή η σε κάποιο συγκεκριμένο πυρήνα πολλές φορές μένουν αχρησιμοποίητα. Προσπάθειες τέτοιας υποστήριξης μπορεί να επιτύχουν μόνο για τη συγκεκριμένη γλώσσα αλλά μπορεί και να κάνουν περισσότερα η λιγότερα από αυτά που απαιτούνται για μια σωστή και αποτελεσματική υλοποίηση της γλώσσας. Γ) Η υλοποίηση των αντιπάλων τάσεων μεταξύ των εναλλακτικών - Μια από τις πιο δύσκολες εργασίες του μεταγλωττιστή είναι να διακρίνει ποια ακολουθία εντολών θα είναι η καλύτερη για το κάθε τμήμα του κώδικα που προκύπτει. Παλιότερα χρησιμοποιούνταν ως μέτρα αξιολόγησης ο αριθμός των εντολών αλλά και το συνολικό μέγεθος του κώδικα και η αλήθεια είναι ότι ήταν καλά μέτρα αξιολόγησης αλλά αυτό δεν ισχύει στις μέρες μας. Πέρα από τους λόγους που αναφέρθηκαν νωρίτερα σημαντική ευθύνη έχουν και οι σύγχρονες τεχνικές σχεδίασης που χρησιμοποιούνται και που επιβάλλουν την χρήση κρυφών μνημών ( cache ) αλλά και η διοχέτευση ( pipeline ). Έτσι οτιδήποτε μπορεί να κάνει ένας σχεδιαστής αρχιτεκτονικής για να βοηθήσει τον μεταγλωττιστή ώστε να καταλάβει το κόστος των εναλλακτικών ακολουθιών εντολών θα βοηθούσε στην παραγωγή του κώδικα και στην μεγαλύτερη απόδοση του. Ένα κλασικό παράδειγμα που αποτελεί ένας από τους πιο δύσκολους συμβιβασμούς το συναντάμε σε μια αρχιτεκτονική καταχωρητή-μνήμης στο να βρούμε πόσες φορές θα πρέπει να γίνεται αναφορά σε μια μεταβλητή πριν αποφασίσουμε ότι είναι φθηνότερο να φορτωθεί σε έναν καταχωρητή. Αυτό το οριακό σημείο είναι δύσκολο να υπολογιστεί και στην πραγματικότητα μπορεί να ποικίλει μεταξύ μοντέλων της ίδιας αρχιτεκτονικής. Δ) Παροχή εντολών που δεσμεύουν τις τιμές που είναι γνωστές στο χρόνο μεταγλώττισης ως σταθερές Είναι πραγματικά ενοχλητικό το γεγονός ότι μπορεί κάποιος επεξεργαστής να υπολογίζει κατά τον χρόνο εκτέλεσης μια τιμή που ήταν γνωστή κατά τον χρόνο μεταγλώττισης. 2.5 ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Από όσα προηγήθηκαν παραπάνω μπορούμε να καταλάβουμε το ποσό μεγάλη σημασία έχουν οι μεταγλωττιστές για την παραγωγή αποδοτικού κώδικα και ποσό πλέον η τεχνολογία τους και ο τρόπος λειτουργίας δεν πρέπει να είναι αποκομμένος από το μυαλό του σχεδιαστή αρχιτεκτονικής συστημάτων έτσι ώστε να βοηθά όσο μπορεί για την διευκόλυνση του μεταγλωττιστή και

18 ταυτόχρονα τον εαυτό του ώστε να μην σπαταλήσει χρόνο για την δημιουργία εξειδικευμένων μορφών αρχιτεκτονικής που στην πράξη μπορεί να μην έχει κανένα όφελος η μπορεί και να φέρει αποτελέσματα αντίθετα από τα αναμενόμενα. Τα θέματα αυτά είναι ιδιαίτερα κρίσιμα για τα ενσωματωμένα συστήματα τα οποία πολλές φορές έχουν ειδικές αρχιτεκτονικές καθώς χρησιμοποιούνται μόνο για λίγες εφαρμογές και πρέπει να είναι τέλεια δομημένα για αυτές ώστε να μπορούν να αποδώσουν το καλύτερο δυνατό ποσό μάλλον στην σημερινή εποχή που η αγορά των ενσωματωμένων συστημάτων και των επεξεργαστών που χρησιμοποιούνται σε αυτά είναι πολύ μεγαλύτερη από την αντίστοιχη αγορά των PC s και γενικότερα των υπολογιστικών συστημάτων γενικού σκοπού. Τα ενσωματωμένα συστήματα λοιπόν προορίζονται για συγκεκριμένες εφαρμογές το καθένα από αυτά, και το ποσό καλά είναι σχεδιασμένη είναι αυτή είναι κρίσιμο θέμα για την επιτυχία του συστήματος ολοκλήρου ειδικά επειδή τα ενσωματωμένα πρέπει να συνδυάζουν την υψηλή απόδοση, το χαμηλό κόστος τη χαμηλή κατανάλωση ισχύος και φυσικά τις μικρές διαστάσεις οι μεταγλωττιστές που χρησιμοποιούν δεν είναι και οι πιο αποδοτικοί σε θέματα βελτιστοποιήσεων. Για αυτόν τον λόγο οι σχεδιαστές του λογισμικού πρέπει να είναι πλήρως εξοικειωμένοι με θέματα βελτιστοποίησης κώδικα σαν αυτά που προσφέρουν οι μεταγλωττιστές έτσι ώστε κάθε φορά να αυξάνουν την απόδοση του κώδικα στο σημείο που θα τον έφταναν οι καλοί μεταγλωττιστές. Πέρα όμως από αυτό δίνουν και μια επιπλέον ώθηση στους σχεδιαστές λογισμικού ώστε να βελτιστοποιούν ακόμα περισσότερο τις εφαρμογές που φτιάχνουν σε ανώτερο επίπεδο από ότι θα το έκαναν οι μεταγλωττιστές έχοντας όμως πάντα υπόψη τους τη βελτιστοποίηση από την οπτική του μεταγλωττιστή για αυτό το λόγο και οι τεχνικές βελτιστοποίησης μεταγλωττιστών αποτελούν ένα ισχυρό εργαλείο των σχεδιαστών στη σημερινή εποχή. 2.6 ΤΕΧΝΙΚΕΣ ΜΕΤΑΓΛΩΤΤΙΣΤΩΝ ΓΙΑ ΠΑΡΑΛΛΗΛΙΣΜΟ ΘΕΩΡΙΑ ΕΞΑΡΤΗΣΕΩΝ Στην ενότητα αυτή θα διαπιστώσουμε με πιο τρόπο μπορούν οι μεταγλωττιστές να αυξήσουν τον παραλληλισμό κατά την εκτέλεση ενός προγράμματος και επιπρόσθετα θα εξετάσουμε το θέμα των εξαρτήσεων. Θα τις κατηγοριοποιήσουμε δίνοντας παραδείγματα και θα δούμε πως μπορούμε να τις εντοπίσουμε ΠΑΡΑΛΛΗΛΙΣΜΟΣ Ένα από τα πιο σημαντικά θέματα για την μεγαλύτερη δυνατή απόδοση των εφαρμογών σε οποιοδήποτε σύστημα είναι ο παραλληλισμός εντολών δηλαδή η δυνατότητα περισσότερες από μια εντολές να εκτελούνται ταυτόχρονα στον επεξεργαστή έτσι ώστε με αυτόν τον τρόπο να μειώνεται ο συνολικός χρόνος εκτέλεσης. Φυσικά αυτό προϋποθέτει από την αρχιτεκτονική ότι κάτι τέτοιο μπορεί να γίνει. Για παράδειγμα το να μπορούμε να κάνουμε 4 προσθέσεις σε κάθε κύκλο ρολογιού προϋποθέτει ότι υπάρχουν τουλάχιστον 4 αθροιστές οι οποίοι μπορούν να χρησιμοποιηθούν κάθε φορά για τις ανάγκες της εφαρμογής. Το όφελος το οποίο προκύπτει από τον παραλληλισμό όπως μπορεί να γίνει αντιληπτό μπορεί να είναι παρά πολύ σημαντικό και για αυτό τον λόγω οπού είναι δυνατό πρέπει να το εκμεταλλευόμαστε στο έπακρον. Φυσικά και τα πράγματα δεν είναι τόσο απλά όσο φαίνονται και ακόμα και αν έχουμε τους πόρους σε υλικό για να εκμεταλλευτούμε τον παραλληλισμό αυτό δεν είναι πάντα εφικτό. Ο λόγος για τον οποίο δεν μπορούμε να εκμεταλλευτούμε πάντα τον παραλληλισμό είναι οι διάφορες εξαρτήσεις μεταξύ των εντολών του προγράμματος που τρέχουμε κάθε φορά που οφείλονται τόσο λόγω των δεδομένων που είναι κοινά σε διαφορές εντολές όσο και των ελέγχων που υπάρχουν σε κάθε πρόγραμμα και πολλές φορές δεν μπορούμε από πριν να γνωρίζουμε το τι θα μας δώσουν ως απάντηση. Παρακάτω λοιπόν θα ασχοληθούμε με τις εξαρτήσεις δεδομένων σε πρώτη φάση

19 2.6.2 ΘΕΩΡΙΑ ΕΞΑΡΤΗΣΕΩΝ-ΕΞΑΡΤΗΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Γενικά οι διάφορες εξαρτήσεις που μπορούν να προκύψουν μπορεί να είναι είτε λόγω εξαρτήσεων στα δεδομένα είτε λόγω εξαρτήσεων ελέγχου. Σε αυτό το σημείο θα δείξουμε τις δυνατές εξαρτήσεις που οφείλονται σε δεδομένα με αποτέλεσμα την μείωση του παραλληλισμού και συνεπώς της ταχύτητας εκτέλεσης της εφαρμογής. Αρχικά λέμε ότι μια εντολή i εξαρτάται από μια άλλη j όταν δεν μπορεί να εκτελεστεί α) γιατί περιμένει το αποτέλεσμα από την εκτέλεση της εντολής j η β) γιατί εξαρτάται στα δεδομένα της από την εκτέλεση της εντολής k που με την σειρά της εξαρτάται από την εντολή j. Η δεύτερη κατάσταση απλά δηλώνει ότι μια εντολή εξαρτάται από μια άλλη όχι μονό κατευθείαν όπως στην πρώτη περίπτωση αλλά από την ύπαρξη μιας αλυσίδας εξαρτήσεων του πρώτου τύπου μεταξύ των 2 εντολών. Το χειρότερο βέβαια είναι ότι αυτή η εξάρτηση μπορεί να είναι τόσο μακριά όσο ολόκληρο το πρόγραμμα. Το παράδειγμα που ακολουθεί είναι ενδεικτικό της εξάρτησης εντολών των 2 τύπων που περιγράψαμε. τύπου. Πρώτος τύπος Δεύτερος τύπος S1: x=100; S1: x=100; S2: y=200; S2: y=x+200; S3: z=x+y; S3: z=y+300; Παρατηρούμε λοιπόν όπως είπαμε και παραπάνω ότι η εντολή S3 στην πρώτη περίπτωση δεν γίνεται να εκτελεστεί πριν εκτελεστούν οι δυο προηγούμενες εντολές διαφορετικά το αποτέλεσμα που θα λάβουμε δεν θα είναι το επιθυμητό. Στην δεύτερη περίπτωση είναι εμφανές η εξάρτηση του z από το x μεσολαβώντας στο ενδιάμεσο και η μεταβλητή y. Γενικά υπάρχουν 3 διαφορετικές κατηγορίες εξαρτήσεων οι οποίες διακρίνονται ανάλογα με το είδος τους σε true dependences, anti-dependences, output-dependences. Αυτές λοιπόν τις εξαρτήσεις θα αναλύσουμε παρακάτω. True dependences Αυτή η εξάρτηση υπάρχει όταν η πρώτη εντολή γραφεί σε μια θέση μνήμης την οποία και διαβάζει μια επόμενη εντολή. Πρόκειται για την πιο συνηθισμένη μορφή εξάρτησης την οποία βεβαία συναντάμε και με το όνομα RAW (Read-after-Write). S1: X= S2: =X Είναι εμφανές το πρόβλημα που προκύπτει αν δεν ικανοποιηθεί αυτή η εξάρτηση η εντολή που ακολουθεί διαβάζει την παλιά τιμή πριν προλάβει αυτή να ανανεωθεί μέσω της προηγουμένης εντολής που δεν εκτελείται. Anti-dependences Αυτή η εξάρτηση υπάρχει όταν η πρώτη εντολή διαβάζει από μια θέση μνήμης στην οποία γραφεί η επόμενη εντολή. Την εξάρτηση αυτή συναντάμε και με την ονομασία WAR (Write-after-Read). S1:..=X S2: X= Εάν τώρα η εξάρτηση αυτή δεν τηρηθεί και γίνει πρώτα η εγγραφή τότε η πρώτη εντολή θα λάβει την νέα τιμή και όχι την παλιά όπως πρέπει κανονικά. Η αλήθεια είναι πάντως ότι αυτή η εξάρτηση δεν παρουσιάζεται παρά πολύ συχνά

20 Output dependence Αυτή η εξάρτηση υπάρχει όταν δυο εντολές θέλουν να γράψουν διαδοχικά στην ίδια θέση μνήμης. Η εξάρτηση αυτή συναντιέται και με το όνομα WAW (Write-after-Write). Δεν είναι τόσο συχνή όσο η RAW. S1: X=.. S2: X=.. Το πρόβλημα αν δεν ικανοποιηθεί αυτή η εξάρτηση είναι ότι καταλήγουμε τελικά στον προορισμό να μην έχουμε την τελική τιμή που πρέπει αλλά μια προηγουμένη. Loop dependences Οι εξαρτήσεις που παρουσιάσαμε παραπάνω είναι οι βασικές που αφορούν σε straight line κώδικα. Όμως η πραγματικότητα δείχνει ότι το μεγαλύτερο μέρος του χρόνου εκτέλεσης σε ένα οποιοδήποτε πρόγραμμα έχει να κάνει με εντολές που βρίσκονται μέσα σε βρόγχους. Είναι σκόπιμο λοιπόν να δούμε τις εξαρτήσεις μέσα στους βρόχους. Οι χαρακτηρισμοί που δώσαμε παραπάνω για τους straight line κώδικες ισχύουν και εδώ αλλά επιπλέον προστίθενται 2 ακόμη χαρακτηρισμοί τους οποίους και θα αναλύσουμε στη συνέχεια. Οι 2 επιπλέον χαρακτηρισμοί είναι τα loop-carried και τα loop independent dependences. A) Loop-carried Αυτή η εξάρτηση υπάρχει εάν οι προσβάσεις δεδομένων σε μετέπειτα επαναλήψεις εξαρτώνται από τιμές δεδομένων που παρήχθησαν σε προηγούμενες επαναλήψεις. Θα δώσουμε 2 παραδείγματα για να γίνει πιο κατανοητό το θέμα. Παράδειγμα 1 Παράδειγμα 2 for (I=0;I<N;I++) { for (I=0;I<N;I++) { S1: A(I)=B(I); S1: A(I)=A(I-2)+D(I); S2: C(I)+A(I-1)+D(I); } } Στο παράδειγμα 1 παρατηρούμε ότι στην εντολή S2 διαβάζουμε την τιμή Α(Ι-1) που έχει γραφτεί από την προηγουμένη εντολή στην προηγουμένη επανάληψη του βρόχου. Στο παράδειγμα 2 αντίστοιχα παρατηρούμε ότι στην εντολή S1 διαβάζουμε την τιμή A(Ι-2) η οποία έχει γραφτεί πριν από 2 επαναλήψεις του βρόχου από την ίδια την εντολή S1. Υπάρχουν συνεπώς εξαρτήσεις μεταξύ των επαναλήψεων του βρόχου. Β) Loop-independent Dependences Το παράδειγμα που θα θέσουμε παρακάτω παρουσιάζει ένα loop-independent dependence. Παρατηρούμε δηλαδή ότι κάθε φορά διαβάζουμε και γράφουμε στο A(Ι) με αποτέλεσμα να υπάρχει εξάρτηση μόνο μεταξύ δεδομένων του ίδιου iteration του loop. Δηλαδή δεν υπάρχει εξάρτηση μεταξύ διαφορετικών επαναλήψεων του βρόχου. Παράδειγμα 3 for (I=0;I<N;I++) { S1: A(I)=A(I)+B(I); }

21 2.6.3 ΘΕΩΡΙΑ ΕΞΑΡΤΗΣΕΩΝ-ΕΞΑΡΤΗΣΕΙΣ ΕΛΕΓΧΟΥ Ένας άλλος τύπος εξάρτησης είναι η εξάρτηση ελέγχου (control dependence). Μια εξάρτηση ελέγχου καθορίζει τη διάταξη μιας εντολής έστω S1 σχετικά με μια εντολή διακλάδωσης έτσι ώστε η εντολή S1 να εκτελείται με τη σωστή σειρά προγράμματος και μόνον όταν πρέπει. Υπάρχουν λοιπόν στα περισσότερα προγράμματα αρκετές εντολές που έχουν εξάρτηση ελέγχου με κάποιο σύνολο διακλαδώσεων και γενικά αυτές οι εξαρτήσεις ελέγχου πρέπει να διατηρούνται για να διατηρήσουμε τη σειρά και τη συνοχή του προγράμματος. Ένα από τα απλούστερα παραδείγματα εξάρτησης ελέγχου είναι η εξάρτηση των εντολών στο τμήμα then μιας εντολής if στη διακλάδωση. Ας δούμε το παρακάτω αποσπάσιμα κώδικα : if p1 { S1; }; if p2 { S2; }; Το S1 είναι ελεγκτικά εξαρτημένη από το p1 και ομοίως το S2 από το p2 αλλά όχι από το p1. Γενικά υπάρχουν κυρίως δυο περιορισμοί που επιβάλλονται από τις εξαρτήσεις ελέγχου. 1. Μια εντολή που είναι ελεγκτικά εξαρτημένη από μια διακλάδωση δεν μπορεί να μετακινηθεί σε κάποια θέση πριν από την διακλάδωση γιατί με αυτόν τον τρόπο η εκτέλεση της δεν ελέγχεται πλέον από τη διακλάδωση. Για παράδειγμα, δεν μπορούμε να πάρουμε μια εντολή από το τμήμα then ενός if then else και να την μετακινήσουμε πριν από τον έλεγχο συνθήκης if. 2. Μια εντολή που δεν είναι ελεγκτικά εξαρτημένη από μια διακλάδωση δεν μπορεί να μετακινηθεί μετά τη διακλάδωση διότι η εκτέλεση της ελέγχεται από τη διακλάδωση. Για παράδειγμα δεν μπορούμε να πάρουμε μια εντολή πριν από το if και να την μετακινήσουμε μέσα στο τμήμα του then. Αν και η διατήρηση της εξάρτησης ελέγχου είναι ένας χρήσιμος και αρκετά απλός τρόπος για να διατηρηθεί η σειρά του προγράμματος η εξάρτηση ελέγχου αυτή καθ αυτή δεν είναι ο βασικός περιορισμός της απόδοσης. Μπορεί να είμαστε πρόθυμοι να εκτελέσουμε εντολές οι οποίες δεν θα έπρεπε να έχουν εκτελεστεί ακόμη, παραβιάζοντας έτσι τις εξαρτήσεις ελέγχου, εάν μπορούμε να το κάνουμε χωρίς να επηρεάσουμε την ορθότητα του προγράμματος. Η εξάρτηση ελέγχου δεν είναι η σημαντική ιδιότητα πρέπει να διατηρηθεί. Αντί αυτής οι δυο σημαντικές ιδιότητες για την ορθότητα του προγράμματος και οι οποίες φυσιολογικά διατηρούνται με την διατήρηση της εξάρτησης δεδομένων και ελέγχου είναι η συμπεριφορά εξαιρέσεων και η ροή δεδομένων. Η διατήρηση της συμπεριφοράς εξαιρέσεων σημαίνει ότι οποιεσδήποτε αλλαγές στη διάταξη της εκτέλεσης εντολών δεν πρέπει να αλλάζουν τον τρόπο με τον οποίο οι εξαιρέσεις παρουσιάζονται στο πρόγραμμα. Συχνά αυτό διευρύνεται ώστε να σημαίνει ότι η αναδιάταξη εκτέλεσης εντολών δεν πρέπει να προκαλεί νέες εξαιρέσεις στο πρόγραμμα. Η δεύτερη ιδιότητα που διατηρείται με την ικανοποίηση των εξαρτήσεων δεδομένων και ελέγχου είναι η ροή δεδομένων. Η ροή δεδομένων αφορά την πραγματική ροή τιμών δεδομένων μεταξύ εντολών οι οποίες παράγουν αποτελέσματα και εκείνων οι οποίες τα καταναλίσκουν. Οι διακλαδώσεις κάνουν τη ροή δεδομένων δυναμική εφόσον επιτρέπουν στην πηγή δεδομένων μιας δοθείσης εντολής να προέλθει από πολλά σημεία. Με άλλα λόγια δεν είναι αρκετό απλώς να διατηρήσουμε τις εξαρτήσεις δεδομένων διότι μια εντολή μπορεί να εξαρτάται στα δεδομένα από πολλές προηγούμενες. Η σειρά του προγράμματος είναι αυτή που καθορίζει ποιος προκάτοχος πραγματικά θα αποδώσει μια τιμή δεδομένων σε μια εντολή. Η σειρά του προγράμματος εξασφαλίζεται με τη διατήρηση των εξαρτήσεων ελέγχου

22 2.6.4 ΕΝΤΟΠΙΣΜΟΣ ΕΞΑΡΤΗΣΕΩΝ Ο εντοπισμός εξαρτήσεων σε ένα πρόγραμμα είναι μια σημαντική διαδικασία αποτελούμενη από 3 μέρη: 1) καλός χρονοπρογραμματισμός κώδικα 2) καθορισμό των βρόχων που ενδέχεται να περιέχουν παραλληλισμό και τέλος 3) εξάλειψη εξαρτήσεων των ονομάτων (χρησιμοποίηση του ίδιου καταχωρητή σε θέση μνήμης που ονομάζεται ακόμα αν και δεν υπάρχει ροή δεδομένων μεταξύ των εντολών που σχετίζονται με αυτό το όνομα εδώ ανήκουν τα anti-dependence και τα output dependence). Η ανάλυση εξαρτήσεων είναι πολύπλοκη λόγω της αναφοράς μέσω πινάκων και δεικτών σε γλώσσες προγραμματισμού όπως η C, C++, η λόγω παραμέτρων αναφοράς στη γλώσσα FORTRAN. Θα εξηγήσουμε τώρα πως εντοπίζει ο μεταγλωττιστής τις εξαρτήσεις. Σχεδόν όλοι οι αλγόριθμοι ανάλυσης εξαρτήσεων κάνουν επεξεργασία με την υπόθεση ότι οι δείκτες των πινάκων είναι γραμμικοί. Ένας δείκτης του μονοδιάστατου πίνακα είναι γραμμικός εάν μπορεί να πάρει την μορφή a*i + b, όπου a και b είναι σταθερές και i είναι η μεταβλητή-δείκτης του βρόχου. Ο δείκτης ενός πολυδιάστατου πίνακα είναι γραμμικός εάν ο δείκτης σε κάθε διάσταση είναι γραμμικός. Οι αναφορές «αραιών» πινάκων οι οποίες έχουν τυπικά τη μορφή x [y[i]] είναι ένα από τα βασικά παραδείγματα των μη γραμμικών αναφορών. Ο καθορισμός ύπαρξης εξάρτησης μεταξύ δυο αναφορών στον ίδιο πίνακα σε ένα βρόχο και ο καθορισμός δυο γραμμικών συναρτήσεων που μπορούν να πάρουν την ιδία τιμή για διαφορετικούς δείκτες μεταξύ των ορίων του βρόχου είναι ισοδύναμοι. Παραδείγματος χάρη ας υποθέσουμε ότι υποθηκεύσει σε ένα στοιχειό του πίνακα με τιμή δείκτη a*i+b και ότι έχουμε φορτώσει από τον ίδιο πίνακα με τιμή δείκτη c*i+d όπου i είναι η μεταβλητή-δείκτης του βρόχου που κυμαίνεται από το m στο n. Υπάρχει εξάρτηση αν υπάρχουν δυο συνθήκες. 1. Υπάρχουν δυο δείκτες επαναλήψεων ο j και ο k, βρισκόμενοι και οι δυο στα όρια του βρόχου for. Δηλαδή m=j=n, m=k=n. 2. Ο βρόχος αποθηκεύει σε ένα στοιχειό πίνακα καθοριζόμενο από a*j+b και αργότερα διαβάζει από το ίδιο στοιχειό του πίνακα, όταν καθορίζεται από c*k+d. Δηλαδή a*j+b=c*k+d. Σε γενικές γραμμές δεν μπορούμε να καθορίσουμε εάν υπάρχει εξάρτηση κατά τη διάρκεια της μεταγλώττισης. Παραδείγματος χάρη οι τιμές των a,b,c,d μπορεί να μην είναι γνωστές (θα μπορούσαν να είναι τιμές άλλων πινάκων) πράγμα που καθιστά αδύνατον να πούμε ότι υπάρχει εξάρτηση. Σε άλλες περιπτώσεις, ο έλεγχος εξαρτήσεων μπορεί να είναι πολύ δαπανηρός αλλά πραγματοποιήσιμος κατά τη διάρκεια της μεταγλώττισης. Παραδείγματος χάρη οι προσβάσεις μπορεί να εξαρτώνται από τους δείκτες των επαναλήψεων των πολλαπλών φωλιασμένων βρόχων. Πολλά προγράμματα όμως περιέχουν απλούς δείκτες όπου τα a,b,c,d είναι όλες σταθερές. Για αυτές τις περιπτώσεις είναι δυνατό να διεξάγουμε ελέγχους για εξάρτησης τη στιγμή της μεταγλώττισης. Ο έλεγχος του Μέγιστου Κοινού Διαιρέτη για παράδειγμα είναι ένας απλός και επαρκής έλεγχος για την απουσία εξάρτησης. Βασίζεται στην εξής παρατήρηση: εάν υπάρχει εξάρτηση loop-carried τότε ο ΜΚΔ (c,a) πρέπει να μπορεί να διαιρέσει τα (d-b). Πάντως ο έλεγχος του ΜΚΔ αρκεί για να μας εγγυηθεί ότι δεν υπάρχει εξάρτηση. Όμως υπάρχουν περιπτώσεις όπου ο έλεγχος αυτός επιτυγχάνει χωρίς να υπάρχει εξάρτηση. Αυτό μπορεί να προκύψει για παράδειγμα επειδή ο έλεγχος του ΜΚΔ δεν λαμβάνει υπόψη του τα όρια του βρόχου. Σε γενικές γραμμές ο καθορισμός της ύπαρξης εξάρτησης είναι NP-complete. Στην πράξη όμως πολλές συνηθισμένες περιπτώσεις μπορούν να αναλυθούν επακριβώς με χαμηλό κόστος

23 Πρόσφατες προσεγγίσεις οι οποίες χρησιμοποιούν μια ιεραρχία ελέγχων αυξανομένων σε γενικότητα και κόστος έχουν αποδειχθεί ότι είναι ακριβείς και αποτελεσματικές. Πέραν του εντοπισμού της εξάρτησης ένας μεταγλωττιστής επιθυμεί να κατηγοριοποιήσει τον τύπο της εξάρτησης. Αυτή η κατηγοριοποίηση επιτρέπει σε έναν μεταγλωττιστή να αναγνωρίσει τις εξαρτήσεις των ονομάτων και να τις εξαλείψει κατά τη διάρκεια της μεταγλώττισης μέσω της μετονομασίας και της αντιγραφής. Η ανάλυση των εξαρτήσεων είναι κρίσιμη τεχνική για την αξιοποίηση του παραλληλισμού. Στο επίπεδο των εντολών παράγει πληροφορίες που είναι αναγκαίες για την αντιμετάθεση αναφορών στη μνήμη κατά τον χρονοπρογραμματισμό. Επίσης αποτελεί και βασικό εργαλείο για τον εντοπισμό του παραλληλισμού επιπέδου βρόχου. Η αποτελεσματική μεταγλώττιση των προγραμμάτων είτε σε ανυσματικούς επεξεργαστές είτε σε πολυεπεξεργαστές εξαρτάται κυρία από την ανάλυση αυτή. Το κύριο μειονέκτημα της ανάλυσης των εξαρτήσεων είναι ότι εφαρμόζεται μόνο σε περιορισμένη ομάδα περιπτώσεων δηλαδή μεταξύ αναφορών εντός μιας φώλευσης βρόχου και με τη χρήση γραμμικών συναρτήσεων του δείκτη. Για αυτό υπάρχει ένας μεγάλος αριθμός περιπτώσεων όπου η ανάλυση εξαρτήσεων βάσει πινάκων αδυνατεί να μας πει αυτό που επιθυμούμε. 2.7 ΤΕΧΝΙΚΕΣ ΜΕΤΑΓΛΩΤΤΙΣΗΣ ΓΙΑ ΤΗΝ ΑΠΟΚΑΛΥΨΗ ΠΑΡΑΛΛΗΛΙΣΜΟΥ ΜΕΤΑΞΥ ΕΝΤΟΛΩΝ Για να κρατηθεί μια αλυσίδα ομοχειρίας γεμάτη πρέπει να αξιοποιηθεί ο παραλληλισμός μεταξύ των επιπέδων εντολών βρίσκοντας αλληλουχίες μη συσχετιζόμενων εντολών οι οποίες μπορούν να επικαλύπτονται στην ομοχειρία. Για να αποφευχθεί η ανάσχεση της ομοχειρίας πρέπει μια εξαρτωμένη εντολή να απέχει από την εντολή πηγής με μια απόσταση (σε κύκλους ρολογιού) ίση προς την καθυστέρηση ομοχειρίας της εντολής αυτής. Η δυνατότητα του μεταγλωττιστή να αξιοποιήσει αυτό το χρονοπρογραμματισμό εξαρτάται και από το ποσό του παραλληλισμού επιπέδου εντολών που διαθέτει το πρόγραμμα και από τις καθυστερήσεις των λειτουργικών μονάδων στην ομοχειρία. Ακολουθούν διαφορές τεχνικές που θα βοηθήσουν στην αποκάλυψη παραλληλισμού μεταξύ εντολών. Α) Αναδίπλωση βρόχου Η αναδίπλωση του βρόχου (loop unrolling) είναι μια απλή μέθοδος για να αυξήσουμε τον αριθμό των εντολών επεξεργασίας αναλογικά με τον αριθμό των εντολών διακλάδωσης και τις επιπρόσθετες εντολές. Η αναδίπλωση απλά αντιγραφεί το σώμα του βρόχου πολλές φορές προσαρμόζοντας τον κώδικα τερματισμού του βρόχου. Η αναδίπλωση του βρόχου μπορεί επίσης να χρησιμοποιηθεί για να βελτιωθεί η διάταξη του κώδικα. Επειδή απαλείφει κάποιες εντολές διακλάδωσης η αναδίπλωση επιτρέπει τον χρονοπρογραμματισμό εντολών από διαφορετικές επαναλήψεις. Σε αυτήν την περίπτωση μπορούμε να εξαλείψουμε την ανάσχεση της χρήσης δεδομένων χρησιμοποιώντας και άλλες ανεξάρτητες εντολές μέσα στο σώμα του βρόχου. Εάν απλά αντιγράφαμε τις εντολές όταν αναδιπλώναμε τον βρόχο η πολλαπλή χρήση των ίδιων καταχωρητών μας αποτρέπει από τον αποτελεσματικό χρονοπρογραμματισμό του βρόχου. Για αυτό τον λόγο θέλουμε να χρησιμοποιήσουμε διαφορετικούς καταχωρητές για κάθε επανάληψη αυξάνοντας την απαιτούμενη χρήση καταχωρητών. Σε πραγματικά προγράμματα δεν γνωρίζουμε συνήθως το ανώτατο μέγεθος του βρόχου. Έστω ότι είναι το σημείο n και θέλουμε να φτιάξουμε k αντίγραφα του σώματος του βρόχου. Αντί για έναν μόνο αναδιπλωμένο βρόχο παράγουμε ένα ζευγάρι από διπλούς διαδοχικούς βρόχους. Το πρώτο ζευγάρι εκτελεί (n mod k ) φορές και έχει το σώμα του αρχικού βρόχου. Το δεύτερο ζευγάρι είναι το αναδιπλωμένο σώμα το οποίο περιτριγυρίζεται από έναν εξωτερικό βρόχο που επαναλαμβάνεται

24 (n/k) φορές. Για μεγάλες τιμές του n ο περισσότερος χρόνος εκτέλεσης θα καταναλωθεί στο σώμα του αναδιπλωμένου βρόχου. Το όφελος που έχουμε από το χρονοπρογραμματισμό του αναδιπλωμένου βρόχου είναι μεγάλο διότι αποκαλύπτει περισσότερους υπολογισμούς οι οποίοι μπορούν να χρονοπρογραμματιστούν για να εξαλειφθούν οι ανασχέσεις. Βέβαια αυτή η τεχνική έχει και κάποιους περιορισμούς. Αυτοί είναι : α) η μείωση του κέρδους στις εντολές ανακύκλωσης, β) περιορισμός στο μέγεθος του κώδικα καθώς μεγαλύτεροι βρόχοι όταν αναδιπλώνονται πιάνουν περισσότερο χώρο στην μνήμη και αν αυτή είναι περιορισμένη έχουμε πρόβλημα γ) η πιθανή έλλειψη καταχωρητών που προκαλείται από την επιθετική αναδίπλωση των καταχωρητών και τον χρονοπρογραμματισμό. Β) Software Pipelining Το software pipelining είναι μια τεχνική αναδιοργάνωσης βρόχων έτσι ώστε κάθε επανάληψη του κώδικα software pipelining να γίνεται από εντολές που επιλέγονται από διαφορετικές επαναλήψεις του αρχικού βρόχου. Επιλέγοντας εντολές από διαφορετικές επαναλήψεις οι εξαρτημένοι υπολογισμοί ξεχωρίζουν ο ένας από τον άλλο από ένα ολόκληρο σώμα αυξάνοντας τη δυνατότητα του αναδιπλωμένου βρόχου να διαταχθεί χωρίς ανάσχεση. Ένας βρόχος λογισμικού με pipelining αναμιγνύει εντολές από διαφορετικές επαναλήψεις χωρίς να αναδιπλώνει το βρόχο. Ένας βρόχος λογισμικού θα μπορούσε να περιέχει μια εντολή load μια εντολή add και μια εντολή store κάθε εντολή μπορεί να προέρχεται από διαφορετική επανάληψη. Υπάρχει επίσης κάποιος κώδικας εκκίνησης ο οποίος είναι αναγκαίος πριν την εκκίνηση του βρόχου όπως και κάποιος κώδικας εκκαθάρισης ο οποίος είναι αναγκαίος μετά την ολοκλήρωση του βρόχου. Η διαχείριση των καταχωρητών σε βρόχους λογισμικού με pipelining μπορεί να είναι περιπλοκή. Σε ορισμένες περιπτώσεις ίσως χρειαστεί να αυξήσουμε τον αριθμό των επαναλήψεων μεταξύ της ανάθεσης της εντολής και τη στιγμή χρήσης του αποτελέσματος. Αυτή η αύξηση απαιτείται όταν υπάρχει μικρός αριθμός εντολών στο σώμα του βρόχου και όταν οι καθυστερήσεις είναι μεγάλες. Σε αυτές τις περιπτώσεις είναι αναγκαίος ο συνδυασμός των τεχνικών software pipelining και αναδίπλωσης βρόχου τεχνική που αναλύθηκε προηγουμένως. Μπορούμε να σκεφτούμε την τεχνική του software pipelining σαν συμβολική αναδίπλωση. Στην πραγματικότητα κάποιοι από τους αλγορίθμους του software pipelining χρησιμοποιούν αλγορίθμους αναδίπλωσης βρόχου για να εξακριβώσουν πως μπορεί να επιτευχθεί pipelining λογισμικού στο βρόχο. Το κύριο πλεονέκτημα του software pipelining έναντι της απλής αναδίπλωσης βρόχου είναι ότι το software pipelining καταναλώνει λιγότερο χώρο στον κώδικα. Το software pipelining μειώνει το χρόνο και η αναδίπλωση κώδικα πέρα του ότι παράγουν καλυτέρα χρονοπρογραμματισμένο εσωτερικό βρόχο μειώνουν έναν διαφορετικό τύπο επιπρόσθετου κόστους. Η αναδίπλωση του βρόχου μειώνει το επιπρόσθετο κόστος του βρόχου, την εντολή διακλάδωσης και τον κώδικα ενημέρωσης του μετρητή. Το software pipelining μειώνει τον χρόνο κατά τον οποίο ο βρόχος δεν εκτελείται με την μέγιστη ταχύτητα σε μια μόνο φορά στην εκκίνηση και στον τερματισμό του βρόχου. Αν αναδιπλώσουμε ένα βρόχο ο οποίος εκτελεί 100 επαναλήψεις σε σταθερά διαστήματα ας πούμε 4 πληρώνουμε το επιπρόσθετο κόστος 100/4 = 25 φορές κάθε φορά που γίνεται εκκίνηση του αναδιπλωμένου εσωτερικού βρόχου. Πάντως σε κάθε περίπτωση επειδή αυτές οι δυο τεχνικές καταπολεμούν δυο διαφορετικούς τύπους επιπρόσθετου κόστους μπορούμε να επιτύχουμε καλύτερη απόδοση συνδυάζοντας και τις δυο τεχνικές. Στην πράξη η μεταγλώττιση που χρησιμοποιεί software pipelining είναι αρκετά δύσκολη για αρκετούς λόγους: Πολλοί βρόχοι απαιτούν σημαντική μετατροπή πριν χρησιμοποιηθεί η τεχνική software pipelining. Οι διελκυστίνδες (trades-offs) σε βρόχους pipelining λογισμικού μεταξύ του επιπρόσθετου κόστους και της αποδοτικότητας είναι πολύπλοκες και το θέμα της διαχείρισης καταχωρητών αυξάνει σημαντικά την πολυπλοκότητα. Ορισμένοι εμπορικοί επεξεργαστές έχουν αρκετό επιπρόσθετο υλικό για την υποστήριξη του software pipelining. Αν και αυτό το υλικό μπορεί να κάνει αποτελεσματικότερη την εφαρμογή του software pipelining δεν ελαττώνει την ανάγκη χρήσης ενός πολύπλοκου μεταγλωττιστή η την ανάγκη λήψης δύσκολων αποφάσεων για την καλύτερη μεταγλώττιση του βρόχου

25 Σχήμα 2. 2 Ομόχειρος βρόχος λογισμικού Γ) Ο χρονοπρογραμματισμός ίχνους Η τεχνική του χρονοπρογραμματισμού ίχνους (trace scheduling) είναι χρήσιμη σε επεξεργαστές που υποστηρίζουν μεγάλο αριθμό εκδόσεων ανά κύκλο στους οποίους η εκτέλεση υπό συνθήκη είναι ακατάλληλη η δεν υποστηρίζεται και η απλή αναδίπλωση του βρόχου μπορεί να μην αρκεί από μόνη της για να αποκαλύψει παραλληλισμό μεταξύ εντολών για να κρατηθεί απασχολημένος ο επεξεργαστής. Η τεχνική χρονοπρογραμματισμού ίχνους αποτελεί έναν τρόπο οργάνωσης της διαδικασίας μετακίνησης καθολικού κώδικα με σκοπό την απλοποίηση της αναδιάταξης του κώδικα υπομένοντας το κόστος από την πιθανή μετακίνηση του κώδικα στα λιγότερα συχνά μονοπάτια. Επειδή μπορεί να επιφέρει σημαντικό επιπρόσθετο κόστος στο λιγότερο συχνό μονοπάτι, χρησιμοποιείται κατά τον καλύτερο τρόπο στο σημείο που οι πληροφορίες συμπεριφοράς δείχνουν σημαντικές διαφορές στη συχνότητα των διαφορετικών μονοπατιών καθώς και εκεί που οι πληροφορίες συμπεριφοράς είναι κατά πολύ ενδεικτικές της συμπεριφοράς του προγράμματος ανεξάρτητα από την είσοδο των δεδομένων. Φυσικά αυτό μειώνει την αποτελεσματική εφαρμογή της σε ορισμένες κατηγορίες προγραμμάτων. Υπάρχουν δυο βήματα στον χρονοπρογραμματισμό ίχνους. Με το πρώτο βήμα αυτό της επιλογής ίχνους γίνεται προσπάθεια εύρεσης μιας πιθανής ακολουθίας βασικών ακολουθιών οι λειτουργίες των οποίων θα τοποθετηθούν μαζί σε ένα μικρότερο αριθμό εντολών. Η ακολουθία αυτή ονομάζεται ίχνος. Η αναδίπλωση του βρόχου χρησιμοποιείται για να παραχθούν μακριά ίχνη αφού υπάρχει μεγάλη πιθανότητα οι διακλαδώσεις των βρόχων να είναι επιτυχείς. Επιπροσθέτως με τη χρήση της στατικής πρόβλεψης διακλάδωσης άλλες διακλαδώσεις υπό συνθήκη επιλέγονται ως επιτυχείς η ανεπιτυχείς έτσι ώστε η ακολουθία ίχνους που παράγεται να είναι γραμμική από τη συγκόλληση πολλών βασικών ακολουθιών. Από τη στιγμή που επιλεχθεί ένα ίχνος η δεύτερη διαδικασία της συμπίεσης ίχνους (trace compaction) προσπαθεί να συμπιέσει το ίχνος σε μικρότερο αριθμό φαρδιών εντολών. Η διαδικασία αποτελεί το χρονοπρογραμματισμό του κώδικα. Ως εκ τούτου προσπαθεί να μετακινήσει όσο νωρίτερα μπορεί τις λειτουργίες σε μια ακολουθία ίχνους συγκεντρώνοντας τις εντολές σε όσο το δυνατόν λιγότερες φαρδιές εντολές. Το πλεονέκτημα της προσέγγισης του χρονοπρογραμματισμού ίχνους είναι ότι απλοποιεί τις αποφάσεις που σχετίζονται με την καθολική μετακίνηση κώδικα. Ειδικότερα βλέπουμε τις διακλαδώσεις ως υπερπηδήσεις μέσα η έξω από την επιλεγμένη ακολουθία ίχνους η οποία θεωρείται ως το πιο πιθανό μονοπάτι. Όταν ο κώδικας μετακινείται πέρα από τέτοια σημεία εισόδου και εξόδου της ακολουθίας ίχνους συχνά χρειάζεται ένας επιπρόσθετος κώδικας διόρθωσης

26 στο σημείο εισόδου η εξόδου. Η κύρια υπόθεση είναι ότι η ακολουθία ίχνους είναι τόσο περισσότερο πιθανή από κάθε άλλη εναλλακτική ακολουθία ώστε το κόστος του κώδικα επιδιόρθωσης δεν χρειάζεται να αποτελεί αποφασιστικό παράγοντα: Αν μια εντολή μπορεί να μετακινηθεί κάνοντας γρηγορότερη με αυτόν τον τρόπο την κύρια ακολουθία ίχνους τότε μετακινείται. Αν και ο χρονοπρογραμματισμός ίχνους έχει εφαρμοστεί με επιτυχία σε επιστημονικούς κώδικες με τους πολυσύχναστους βρόχους του και επακριβή δεδομένα συμπεριφοράς παραμένει αμφίβολο εάν αυτή η προσέγγιση είναι κατάλληλη για πιο πολύπλοκα προγράμματα η για προγράμματα με λιγότερο πολυσύχναστους βρόχους. Σε τέτοια προγράμματα το σημαντικό επιπρόσθετο κόστος του κώδικα αποκατάστασης μπορεί να καταστήσει τον χρονοπρογραμματισμό ίχνους μη ελκυστικό ή να κάνει την αποτελεσματική χρήση του εξαιρετικά πολύπλοκη για τον μεταγλωττιστή. 2.8 ΚΛΑΣΣΙΚΟΙ ΜΕΤΑΣΧΗΜΑΤΙΣΜΟΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗΣ ΚΩΔΙΚΑ Παρακάτω θα παρουσιάσουμε μερικούς απλούς μετασχηματισμούς που μπορούμε να κάνουμε έτσι ώστε να βελτιστοποιήσουμε την απόδοση του προγράμματος που τρέχουμε κάθε φορά. Αρκετοί από αυτούς τους μετασχηματισμούς είναι συνήθεις στους μεταγλωττιστές. Loop interchange Με αυτόν τον μετασχηματισμό όταν έχω πολλαπλούς φωλιασμένους βρόχους αλλάζω τη σειρά με την οποία αυτοί εκτελούνται αν μπορώ φυσικά λόγω των εξαρτήσεων που πιθανώς υπάρχουν ή δημιουργούνται. do j =1,n do i=1,n do i=1,n do j=1,n t[i]=t[i]+a[i,j] => t[i]=t[i]+a[i,j] end do end do end do end do Αλλάζοντας τη σειρά με την οποία εκτελούνται οι βρόχοι αυξάνω σε πολύ μεγάλο βαθμό την επαναχρησιμοποίηση για κάθε ένα στοιχειό του πίνακα όπως φαίνεται και στο παράδειγμα καθώς στην αρχική περίπτωση υπολογίζω συνεχώς ενδιάμεσα αποτελέσματα και δεν έχω καθόλου επαναχρησιμοποίηση. Επιπλέον αυτός ο μετασχηματισμός μας βοηθά σε περίπτωση που έχουμε ένα πίνακα στην μνήμη και δεν προσπελαύνουμε τα δεδομένα του όπως αυτά έχουν γραφτεί με τη σειρά κάτι το οποίο είναι αρκετά δυσάρεστο καθώς σε αυτήν την περίπτωση αναγκαζόμαστε να καλέσουμε πολύ περισσότερες σειρές από την μνήμη και ειδικά αν ο πίνακας είναι πολύ μεγάλος ακόμα και ολόκληρες σελίδες. Scalar expansion- Scalar replacement Στην περίπτωση του scalar expansion αντικαθιστώ σε ένα βρόχο μια μεταβλητή με έναν πίνακα όταν υπάρχουν loop carried dependences λόγω αυτής της μεταβλητής. Κάνοντας τώρα αυτήν την αντικατάσταση διαγραφώ αυτές τις εξαρτήσεις και μπορώ να παραλληλίσω το βρόχο. Αυτό φαίνεται στο παρακάτω παράδειγμα

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 11 ο Γεννήτορας Τελικού Κώδικα Ο γεννήτορας τελικού κώδικα είναι το πιο κρίσιμο τμήμα του μεταγλωττιστή και αντιμετωπίζει πολύπλοκα προβλήματα Βέλτιστη χρήση της αρχιτεκτονικής

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

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

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

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

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

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

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

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 10 η : Βελτιστοποιήσεις Τοπικότητας και Παραλληλισμού: Εξαρτήσεις και Μετασχηματισμοί Βρόχων Επεξεργασία Πινάκων Παραλληλισμός επιπέδου βρόχου Λόγω παραλληλισμού δεδομένων Επιτυγχάνεται

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

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

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές Βελτιστοποίηση Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη, 15780

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

Θέματα Μεταγλωττιστών

Θέματα Μεταγλωττιστών Γιώργος Δημητρίου Ενότητα 9 η : Θέματα Δρομολόγησης Εντολών ILP Παραλληλισμός επιπέδου εντολής Εξαρτήσεις δεδομένων Εξαρτήσεις ελέγχου (διαδικασιακές) Με διαθέσιμους πόρους, οι εντολές μπορούν να εκτελεστούν

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

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

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

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

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

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

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

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές Βελτιστοποίηση Βελτιστοποίηση (i) Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη,

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

ΑΕΠΠ Ερωτήσεις θεωρίας

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

FORTRAN και Αντικειμενοστραφής Προγραμματισμός FORTRAN και Αντικειμενοστραφής Προγραμματισμός Παραδόσεις Μαθήματος 2016 Δρ Γ Παπαλάμπρου Επίκουρος Καθηγητής ΕΜΠ georgepapalambrou@lmentuagr Εργαστήριο Ναυτικής Μηχανολογίας (Κτίριο Λ) Σχολή Ναυπηγών

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

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

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

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

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών 44 Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν τα βήματα που ακολουθούνται κατά την ανάπτυξη μιας εφαρμογής.

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 12 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 12 ο Βελτιστοποίηση Μετασχηματισμός κώδικα σε άλλον πιο αποδοτικό Ασφάλεια βελτιστοποίησης Ορθότητα μετασχηματισμών! Πολυπλοκότητα μετασχηματισμών Εντοπισμός πιθανά προβληματικού

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

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά.

Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. AeppAcademy.com facebook.com/aeppacademy Γεια. Σου προτείνω να τυπώσεις τις επόμενες τέσσερις σελίδες σε ένα φύλο διπλής όψης και να τις έχεις μαζί σου για εύκολη αναφορά. Καλή Ανάγνωση & Καλή Επιτυχία

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

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

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

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

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

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

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

Κατακερματισμός (Hashing)

Κατακερματισμός (Hashing) Κατακερματισμός (Hashing) O κατακερματισμός είναι μια τεχνική οργάνωσης ενός αρχείου. Είναι αρκετά δημοφιλής μέθοδος για την οργάνωση αρχείων Βάσεων Δεδομένων, καθώς βοηθάει σημαντικά στην γρήγορη αναζήτηση

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

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

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

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

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

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

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

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

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

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

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα Ενότητες βιβλίου: 6.4, 6.7 Ώρες διδασκαλίας: 1 Τεχνικές σχεδίασης προγραμμάτων Στο βιβλίο γίνεται αναφορά σε μία τεχνική για την ανάπτυξη

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

Δυναμική Θεώρηση και Συγχρονισμός των εξαρτήσεων των δεδομένων. Αλεξάνδρα Παπανδρεάδη (ΑΜ 362)

Δυναμική Θεώρηση και Συγχρονισμός των εξαρτήσεων των δεδομένων. Αλεξάνδρα Παπανδρεάδη (ΑΜ 362) Δυναμική Θεώρηση και Συγχρονισμός των εξαρτήσεων των δεδομένων Αλεξάνδρα Παπανδρεάδη (ΑΜ 362) Το πρόβλημα Ιδανικά:! Θεώρηση εξαρτήσεων με εικασία! Κερδίζουμε όταν είμαστε σωστοί! Έχουμε ποινή όταν έχουμε

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

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

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

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

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω:

Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: Επιλέξτε Σωστό ή Λάθος για καθένα από τα παρακάτω: 1ο ΓΕΛ Καστοριάς Βασικές Έννοιες Αλγορίθμων Δομή Ακολουθίας (κεφ. 2 και 7 σχολικού βιβλίου) 1. Οι μεταβλητές αντιστοιχίζονται από τον μεταγλωττιστή κάθε

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

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

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

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

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

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

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

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

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

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

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

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

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή.

4. Συντακτικό μιας γλώσσας είναι το σύνολο των κανόνων που ορίζει τις μορφές με τις οποίες μια λέξη είναι αποδεκτή. ΑΕσΠΠ-Κεφ6. Εισαγωγή στον προγραμματισμό 1 ΣΩΣΤΟ ΛΑΘΟΣ 1. Οι γλώσσες προγραμματισμού αναπτυχθήκαν με σκοπό την επικοινωνία ανθρώπου μηχανής. 2. Αλγόριθμος = Πρόγραμμα + Δομές Δεδομένων 3. Ένα πρόγραμμα

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι Θέματα Απόδοσης Αλγορίθμων 1 Η Ανάγκη για Δομές Δεδομένων Οι δομές δεδομένων οργανώνουν τα δεδομένα πιο αποδοτικά προγράμματα Πιο ισχυροί υπολογιστές πιο σύνθετες εφαρμογές Οι πιο σύνθετες εφαρμογές απαιτούν

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

Ενδεικτικές Ερωτήσεις Θεωρίας

Ενδεικτικές Ερωτήσεις Θεωρίας Ενδεικτικές Ερωτήσεις Θεωρίας Κεφάλαιο 2 1. Τι καλούμε αλγόριθμο; 2. Ποια κριτήρια πρέπει οπωσδήποτε να ικανοποιεί ένας αλγόριθμος; 3. Πώς ονομάζεται μια διαδικασία που δεν περατώνεται μετά από συγκεκριμένο

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

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

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

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

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4)

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4) Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4) Στην ενότητα αυτή θα μελετηθούν τα εξής θέματα: Η διαδικαστική γλώσσα προγραμματισμού WHILE Τριάδες Hoare Μερική και Ολική Ορθότητα Προγραμμάτων Κανόνες

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

8 FORTRAN 77/90/95/2003

8 FORTRAN 77/90/95/2003 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: Εισαγωγή... 17 1.1. Ανασκόπηση της ιστορίας των υπολογιστών... 18 1.2. Πληροφορία και δεδομένα... 24 1.3. Ο Υπολογιστής... 26 1.4. Δομή και λειτουργία του υπολογιστή... 28 1.5.

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

1. Οργάνωση της CPU 2. Εκτέλεση εντολών 3. Παραλληλία στο επίπεδο των εντολών 4. Γραμμές διοχέτευσης 5. Παραλληλία στο επίπεδο των επεξεργαστών

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 1 ο Γλώσσα - Μετάφραση Γλώσσα προγραμματισμού = Αναπαράσταση αλγορίθμων Ευκολία χρήσης Ακρίβεια και πληρότητα περιγραφής, όχι διφορούμενη! Μία περιγραφή για όλες τις μηχανές Μετάφραση

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

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

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

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ. 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 Δομή

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

ΘΕΜΑ PROJECT COMPILER FLAGS ΤΡΑΧΑΝΗΣ ΔΗΜΗΤΡΗΣ 6108 ΤΡΑΧΑΝΗΣ ΓΕΩΡΓΙΟΣ 5789

ΘΕΜΑ PROJECT COMPILER FLAGS ΤΡΑΧΑΝΗΣ ΔΗΜΗΤΡΗΣ 6108 ΤΡΑΧΑΝΗΣ ΓΕΩΡΓΙΟΣ 5789 ΘΕΜΑ PROJECT COMPILER FLAGS ΤΡΑΧΑΝΗΣ ΔΗΜΗΤΡΗΣ 6108 ΤΡΑΧΑΝΗΣ ΓΕΩΡΓΙΟΣ 5789 Γενικά Οι compilers προσφέρουν μία σειρά από τεχνικές βελτιστοποίησης Στόχοι: Αύξηση ταχύτητας εκτέλεσης Μείωση μεγέθους Εφικτές

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1. Να

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν

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

Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών

Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών Ασκήσεις στα Προηγμένα Θέματα Αρχιτεκτονικής Υπολογιστών ακ. έτος 2006-2007 Νεκτάριος Κοζύρης Νίκος Αναστόπουλος {nkoziris,anastop}@cslab.ece.ntua.gr Άσκηση 1: pipelining Εξετάζουμε την εκτέλεση του παρακάτω

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

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

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

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

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

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 6ο μάθημα: χρονοπρογραμματισμός, αλγόριθμος Tomasulo, εικασία Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου InstrucDon- Level

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

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

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

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

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

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

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

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

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

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

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

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Εισαγωγή ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ Όπως για όλες τις επιστήμες, έτσι και για την επιστήμη της Πληροφορικής, ο τελικός στόχος της είναι η επίλυση προβλημάτων. Λύνονται όμως όλα τα προβλήματα;

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

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: ΑΕσΠΠ 1 / 8 I. ΑΛΓΟΡΙΘΜΟΣ 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι: i. Είσοδος : χρήση μιας μεταβλητής που δεν έχει πάρει προηγουμένως τιμή. ii. Έξοδος : ο αλγόριθμος δεν εμφανίζει

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

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ 5.1 Εισαγωγή στους αλγορίθμους 5.1.1 Εισαγωγή και ορισμοί Αλγόριθμος (algorithm) είναι ένα πεπερασμένο σύνολο εντολών οι οποίες εκτελούν κάποιο ιδιαίτερο έργο. Κάθε αλγόριθμος

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

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

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

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

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

ΟΜΑΔΕΣ ΕΝΤΟΛΩΝ: ΙΔΙΟΤΗΤΕΣ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ ΟΜΑΔΕΣ ΕΝΤΟΛΩΝ: ΙΔΙΟΤΗΤΕΣ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ 1. Εισαγωγή Η λειτουργία της CPU καθορίζεται από τις εντολές που εκτελεί, και που ονομάζονται εντολές μηχανής (machine instructions) ή εντολές υπολογιστή (computer

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

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ

2η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ακ. έτος , 5ο Εξάμηνο Σχολή ΗΜ&ΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ε Ρ Γ Α Σ Τ ΗΡ ΙΟ Υ ΠΟΛΟΓΙΣ Τ Ι Κ Ω Ν Σ Υ Σ Τ ΗΜΑΤΩΝ w w w. c s l ab.

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης

Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης Υ- 01 Αρχιτεκτονική Υπολογιστών Back- end: χρονοπρογραμματισμός, εντολές προσπέλασης μνήμης Αρης Ευθυμίου Το σημερινό μάθημα Execu9on scheduling wake- up and select specula9ve wake- up Εκτέλεση εντολών

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

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

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

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

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

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο Γιώργος Δημητρίου Μάθημα 9 ο Ενδιάμεσος Κώδικας Απεικόνιση ανάμεσα στον αρχικό και στον τελικό κώδικα Γραμμικές αναπαραστάσεις: Ενδιάμεσος κώδικας πλησιέστερα στον τελικό ευκολότερη παραγωγή τελικού κώδικα

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

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου

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

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα

8 Τεχνικός Εφαρμογών Πληροφορικής με Πολυμέσα Περιεχόμενα Πρόλογος... 9 Κεφάλαιο 1: Δομή και λειτουργία του υπολογιστή... 11 Κεφάλαιο 2: Χρήση Λ.Σ. DOS και Windows... 19 Κεφάλαιο 3: Δίκτυα Υπολογιστών και Επικοινωνίας... 27 Κεφάλαιο 4: Unix... 37

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

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

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

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

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

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

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

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

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

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας, Μικροεπεξεργαστές Σημειώσεις Μαθήματος 2013-14 Υπεύθυνος: Δρ Άρης Παπακώστας, Η γλώσσα assembly είναι μια γλώσσα προγραμματισμού χαμηλού επιπέδου για συγκεκριμένους υπολογιστές ή άλλη προγραμματιζόμενη

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

Ζητήµατα Απόδοσης. Ιεραρχία Μνήµης. Αναγκαιότητα για Ιεραρχία Μνήµης. Processor-DRAM Gap (latency) Ε-85: Ειδικά Θέµατα Λογισµικού

Ζητήµατα Απόδοσης. Ιεραρχία Μνήµης. Αναγκαιότητα για Ιεραρχία Μνήµης. Processor-DRAM Gap (latency) Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «Ιεραρχία Μνήµης και Τεχνικές Βελτιστοποίησης» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) Ζητήµατα Απόδοσης

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

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης ΚΕΦΑΛΑΙΟ 1ο 3ο 1. Συμπληρώστε τα κενά με τη λέξη που λείπει. α. Ένα πρόβλημα το χωρίζουμε σε άλλα απλούστερα, όταν είναι ή όταν έχει τρόπο επίλυσης. β. Η επίλυση ενός προβλήματος προϋποθέτει την του. γ.

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού

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

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός Δομές Ακολουθίας- Επιλογής - Επανάληψης Δομημένος Προγραμματισμός 1 Βασικές Έννοιες αλγορίθμων Σταθερές Μεταβλητές Εκφράσεις Πράξεις Εντολές 2 Βασικές Έννοιες Αλγορίθμων Σταθερά: Μια ποσότητα που έχει

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

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά Υπολογιστικά & Διακριτά Μαθηματικά Ενότητα 1: Εισαγωγή- Χαρακτηριστικά Παραδείγματα Αλγορίθμων Στεφανίδης Γεώργιος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

ILP (integer linear programming) βασιζόμενη εξαρτώμενη από τους πόρους μεταγλώττιση

ILP (integer linear programming) βασιζόμενη εξαρτώμενη από τους πόρους μεταγλώττιση ILP (integer linear programming) βασιζόμενη εξαρτώμενη από τους πόρους μεταγλώττιση Γιατί χρησιμοποιείται μοντελοποίηση των περιορισμών με ακεραίους? Υπάρχουν ήδη εργαλεία για τον υπολογισμό και την χρήση

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Καθηγητής Πληροφορικής ΠΕ19 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6 ο : ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ Η έννοια του προγράμματος

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

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

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420)

Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Ανάπτυξη & Σχεδίαση Λογισμικού (ΗΥ420) Διάλεξη 8: Σχεδίαση Συστήματος Σχεδίαση Συστήματος 2 Διεργασία μετατροπής του προβλήματος σε λύση. Από το Τί στο Πώς. Σχέδιο: Λεπτομερής περιγραφή της λύσης. Λύση:

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

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

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

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

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

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

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

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

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

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

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1 Κατακερματισμός 4/3/2009 Μ.Χατζόπουλος 1 H ιδέα που βρίσκεται πίσω από την τεχνική του κατακερματισμού είναι να δίνεται μια συνάρτησης h, που λέγεται συνάρτηση κατακερματισμού ή παραγωγής τυχαίων τιμών

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

Μαθησιακές δυσκολίες ΙΙ. Παλαιγεωργίου Γιώργος Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών Τηλεπικοινωνιών και Δικτύων, Πανεπιστήμιο Θεσσαλίας

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

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

Διδακτική της Πληροφορικής ΙΙ

Διδακτική της Πληροφορικής ΙΙ Διδακτική της Πληροφορικής ΙΙ Ομάδα Γ Βότσης Ευστάθιος Γιαζιτσής Παντελής Σπαής Αλέξανδρος Τάτσης Γεώργιος Προβλήματα που αντιμετωπίζουν οι αρχάριοι προγραμματιστές Εισαγωγή Προβλήματα Δυσκολίες Διδακτικό

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

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

Αρχιτεκτονική Υπολογιστών Γιώργος Δημητρίου Ενότητα 1 η : Βασικές Αρχές Αρχιτεκτονικής Η/Υ Σύγχρονοι Μικροεπεξεργαστές Intel 6-core i7 (Gulftown) 2010, >1 billion transistors Απόδοση Μικροεπεξεργαστών V Μετρήσεις με μετροπρογράμματα

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

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

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

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada

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

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

Αρχιτεκτονική Υπολογιστών Γιώργος Δημητρίου Ενότητα 7 η : Στατική Δρομολόγηση Εντολών (Επεξεργαστές VLIW) Εκμετάλλευση ILP Περιορισμοί στη δυναμική δρομολόγηση εντολών: Μέγεθος παραθύρου εντολών Αριθμός φυσικών καταχωρητών Αποτυχία

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

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

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα Βάσεις

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

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

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

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

Εργαστήριο Εισαγωγής στη Σχεδίαση Συστημάτων VLSI

Εργαστήριο Εισαγωγής στη Σχεδίαση Συστημάτων VLSI Ε.Μ.Π. - ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΕΙΣΑΓΩΓΗ ΣΤΗ ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΩΝ VLSI

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

3. Προσομοίωση ενός Συστήματος Αναμονής.

3. Προσομοίωση ενός Συστήματος Αναμονής. 3. Προσομοίωση ενός Συστήματος Αναμονής. 3.1. Διατύπωση του Προβλήματος. Τα συστήματα αναμονής (queueing systems), βρίσκονται πίσω από τα περισσότερα μοντέλα μελέτης της απόδοσης υπολογιστικών συστημάτων,

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

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1

Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων,

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

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

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

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

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