ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Σχεδίαση παράλληλων αλγορίθμων ταξινόμησης και ψηφιακών φίλτρων (DSP) με εφαρμογή σε FPGA και CUDA. Αλέξανδρος Κ.

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

Download "ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Σχεδίαση παράλληλων αλγορίθμων ταξινόμησης και ψηφιακών φίλτρων (DSP) με εφαρμογή σε FPGA και CUDA. Αλέξανδρος Κ."

Transcript

1 ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ, ΥΠΟΛΟΓΙΣΤΩΝ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΑΥΤΟΜΑΤΙΣΜΟΥ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Σχεδίαση παράλληλων αλγορίθμων ταξινόμησης και ψηφιακών φίλτρων (DSP) με εφαρμογή σε FPGA και CUDA. Αλέξανδρος Κ. Λουρόπουλος A.M Επιβλέπων: Διονύσιος Ρεΐσης Αναπληρωτής Καθηγητής ΑΘΗΝΑ, ΣΕΠΤΕΜΒΡΙΟΣ 2017

2 Πίνακας Περιεχομένων Πίνακας Περιεχομένων... 1 Ευρετήριο Εικόνων... 4 Ευρετήριο Πινάκων... 5 Περίληψη... 6 Ευχαριστίες... 7 Κεφάλαιο 1: Παράλληλος Προγραμματισμός Εισαγωγή στους Αλγορίθμους και τον Παράλληλο Προγραμματισμό Δυσκολίες του παράλληλου προγραμματισμού... 9 Κεφάλαιο 2: Παράλληλος Προγραμματισμός με CUDA Εισαγωγή στην CUDA Το μοντέλο προγραμματισμού CUDA (CUDA Programming Interface) Κατανομή Μνήμης (Memory Allocation) Πυρήνες (Kernels) Συστοιχίες Νημάτων (Blocks) και Νήματα (Threads) Ιεραρχία Μνήμης (Memory Hierarchy) Συγχρονισμός Νημάτων (Thread Synchronization) Η Αρχιτεκτονική CUDA (CUDA Architecture) Κεφάλαιο 3: Ο Αλγόριθμος Ταξινόμησης Odd Even Transposition Sort Αλγόριθμοι Ταξινόμησης Ο Αλγόριθμος Odd-Even Transposition Sort

3 3.3 Υλοποίηση του Odd-Even Transposition Sort με CUDA Κεφάλαιο 4: Σχεδίαση και Προγραμματισμός FPGA Εισαγωγικές έννοιες για το υλικό (Hardware) Δυαδικό Αριθμητικό Σύστημα (Binary Number System) Αριθμητική Σταθερής Υποδιαστολής (Fixed Point Arithmetic) Άλγεβρα Μπουλ (Boolean Algebra) Λογικές Πύλες (Logic Gates) Εξειδικευμένες πράξεις με χρήση Λογικών Πυλών Τα FPGA Η γλώσσα προγραμματισμού VHDL Ροή Προγραμματισμού FPGA Το Ολοκληρωμένο περιβάλλον Ανάπτυξης (IDE) ISE WebPack Κεφάλαιο 5: Σύστημα ψηφιακής επεξεργασίας σήματος φίλτρο FIR Ψηφιακή Επεξεργασία Σήματος Ψηφιακά Φίλτρα Το FIR φίλτρο Παραγωγή πρωτοτύπου με χρήση Matlab Το εργαλείο Matlab Μελέτη του φίλτρου στο εργαλείο Matlab Υλοποίηση σε FPGA Κεφάλαιο 6: Συμπέρασμα και Μελλοντική Εργασία Γενικό Συμπέρασμα

4 6.1.1 Ταχύτητα Εκτέλεσης Διαφορές στην πολυπλοκότητα Μελλοντική Εργασία Βιβλιογραφία Παράρτημα Even Odd Transposition Sort CPU Source Code CPU Array Class Code CUDA Kernel Code FIR Filter Matlab Generate Wave Matlab Wave Export Create Fir Filter Matlab Fir Filter VHDL System Module VHDL Adder Module VHDL Multiplier Module VHDL Testbench Code VHDL Delta Testbench

5 Ευρετήριο Εικόνων Εικόνα 2-1: Ιεραρχία μνήμης και ροή εργασίας μεταξύ GPU & CPU Εικόνα 2-2: Ιεραρχία Grid, Block, Thread Στον Προγραμματισμό GPU Εικόνα 2-3: Διαφορά GPU & CPU σε χαμηλό επίπεδο Πηγή: NVIDIA Εικόνα 3-1: Διαδικασία Ταξινόμησης Odd-Even Transposition Sort Εικόνα 3-2: Ψευδοκώδικας αλγόριθμου Odd-Even Transposition Sort Εικόνα 3-3: Διάγραμμα Χρόνου Εκτέλεσης CPU, Odd-Even, Thrust Εικόνα 4-1: Διαγραμματική Απεικόνιση Βασικών Λογικών Πυλών Εικόνα 4-2: (α) Συμβολική Παράσταση (β) Πίνακας Αλήθειας (γ) Λογικές Συναρτήσεις (δ) Λογικό Κύκλωμα Ημι-Αθροιστή HA Εικόνα 4-3: (α) Συμβολική Παράσταση (β) Πίνακας Αλήθειας (γ) Λογικές Συναρτήσεις (δ) Λογικό Κύκλωμα Ημι-Αθροιστή HA Εικόνα 4-4: N-Bit Αθροιστής/Αφαιρετής 2-Συμπλήρωμα Εικόνα 4-5: (α) Λογικό Κύκλωμα Πολλαπλασιαστή Multiplier Εικόνα 4-6: (a) Λογικό Κύκλωμα (β) Πίνακας Αλήθειας Delay Flip-Flop Εικόνα 4-7: Σχεδιαστική Μορφή ενός FPGA. Πηγή: (Chu, 2008) Εικόνα 5-1: Συχνοτικές Αποκρίσεις Βασικών Φίλτρων Εικόνα 5-2: Συμβολισμοί Αθροιστή, Πολλαπλασιαστή και Καθυστερητή Εικόνα 5-3: Σχεδιαστική Μορφή Φίλτρου FIR πηγή: (Wikipedia) Εικόνα 5-4: Συμμετρικό Ν-Tap FIR Φίλτρο Εικόνα 5-5: Συντελεστές Χαμηλοπερατού FIR φίλτρου Εικόνα 5-6: Συχνοτική και Κρουστική Απόκριση Χαμηλοπερατού Φίλτρου FIR Εικόνα 5-7: Αποκοπή σήματος υψηλής συχνότητας μέσω φίλτρου FIR στη Matlab Εικόνα 5-8:Δυαδικές τιμές μορφή Q2.14 συντελεστών FIR φίλτρου Εικόνα 5-9: Κρουστική Απόκριση FIR σε FPGA μέσω προσομοίωσης

6 Εικόνα 5-10: RTL του FIR φίλτρου, σχηματική απεικόνιση του Pipeline Εικόνα 5-11: Προσομοίωση εισαγωγής σήματος μέσα από το φίλτρο FIR σε VHDL Εικόνα 5-12: Σήμα μέσα από FPGA και από Matlab Ευρετήριο Πινάκων Πίνακας 1-A: Παράδειγμα παράλληλης επεξεργασίας... 9 Πίνακας 3-A: Χρόνοι Εκτέλεσης CPU, Odd-Even, Thrust Πίνακας 4-A: Παράδειγμα δυαδικού συστήματος αρίθμησης με ή χωρίς bit προσήμου (sign bit) Πίνακας 4-B:Παραδείγματα signed & unsigned λέξεις 4-bit σε διάφορες μορφές Q Πίνακας 4-C: Πίνακας Αλήθειας Βασικών Πράξεων Άλγεβρας Μπουλ Πίνακας 4-D: Πίνακας Αλήθειας Βασικών Λογικών Πυλών

7 Περίληψη Η παρούσα εργασία επικεντρώνεται στη σχεδίαση παράλληλων αλγορίθμων ταξινόμησης και ψηφιακών φίλτρων καθώς και σχεδιάζει την εφαρμογή τους σε FPGA και CUDA. Για τις εφαρμογές σε επίπεδο υλικού, θα χρησιμοποιήσουμε Field Programmable Logic Array (FPGA) συσκευές, οι οποίες μπορούν να ρυθμιστούν δυναμικά με την VHDL, μια γλώσσα περιγραφής υλικού (HDL). Τα FPGA δέχονται είσοδο και παράγουν έξοδο ως bits, επομένως θα επεκταθούμε στον χειρισμό bit και την αριθμητική σταθερής υποδιαστολής έτσι ώστε να μπορούμε να μετατρέπουμε έναν αριθμό από δεκαδικό σε δυαδικό και από δυαδικό σε δεκαδικό για την είσοδο και έξοδο αντίστοιχα. Όσον αφορά τον προγραμματισμό των Μονάδων Επεξεργασίας Γραφικών (Graphics Processing Unit - GPU), θα μελετήσουμε την αρχιτεκτονική της NVIDIA CUDA. Η αρχιτεκτονική CUDA είναι μια υπολογιστική πλατφόρμα και διεπαφή προγραμματισμού εφαρμογών, ανεπτυγμένη με σκοπό την εκμετάλλευση της παράλληλης αρχιτεκτονικής της εν λόγω μονάδας. Το σύστημα ψηφιακής επεξεργασίας δεδομένων που θα εξετασθεί είναι το φίλτρο πεπερασμένου παλμού (Finite Impulse Response - FIR) το οποίο χρησιμοποιείται ως φίλτρο για ψηφιακά σήματα και χαρακτηρίζεται από κρουστική απόκριση πεπερασμένης διάρκειας. Το φίλτρο αυτό χρησιμοποιεί μια σειρά από συντελεστές για τους υπολογισμούς του, καθιστώντας το χαμηλοπερατό, υψιπερατό η ζωνοπερατό. Για τις τεχνικές ταξινόμησης επιλέξαμε τον αλγόριθμο odd-even transposition sort επειδή θεωρείται από τους πιο αποτελεσματικούς όταν πρόκειται για παράλληλες εφαρμογές. Ο αλγόριθμος αυτός ταξινομεί μια λίστα επαναλαμβάνοντας την παρακάτω διαδικασία Ν φορές (Ν είναι ο αριθμός των στοιχείων της λίστας): συγκρίνει όλα τα μονά/ζυγά, σε ένα μονό βρόγχο, η τα ζυγά/μονά, σε ένα ζυγό βρόγχο, ζεύγη των διαδοχικών στοιχείων. Αν ένα ζεύγος δεν ικανοποιεί το κριτήριο σύγκρισης, τα στοιχεία του αλλάζουν θέση μεταξύ τους. Οι δύο αυτές διεργασίες θα εφαρμοστούν σε VHDL και σε CUDA και θα αναλυθούν με βάση την επίδοσή τους σε ταχύτητα. 6

8 Ευχαριστίες Για τη διεκπεραίωση της παρούσας Πτυχιακής Εργασίας, θα ήθελα να ευχαριστήσω τον επιβλέποντα καθηγητή κ. Διονύση Ρεΐση, για τη συνεργασία και την πολύτιμη συμβολή του στην ολοκλήρωση της, καθώς και την οικογένεια μου για την σημαντική υποστήριξη που μου προσέφερε σε όλα τα χρόνια των σπουδών μου. Επίσης οφείλω ένα μεγάλο ευχαριστώ στην Αφροδίτη Νάση, τόσο για την προσωπική υποστήριξη όσο και για την προσφορά της στην βελτίωση της σχολής ως σύνολο. 7

9 Κεφάλαιο 1: Παράλληλος Προγραμματισμός 1.1 Εισαγωγή στους Αλγορίθμους και τον Παράλληλο Προγραμματισμό Στη θεωρία της επιστήμης των υπολογιστών χρησιμοποιείται πολύ συχνά η έννοια του αλγορίθμου. Βάσει ορισμού, ένας αλγόριθμος αποτελεί μια διαδικασία που λαμβάνει δεδομένα ως είσοδο και παράγει δεδομένα ως έξοδο. Αυτό επιτυγχάνεται με μια αλληλουχία ενεργειών που είναι με τέτοιο τρόπο σχεδιασμένη, ούτως ώστε να επεξεργάζεται τα δεδομένα εισόδου και να παράγει την κατάλληλη έξοδο. Ένα απλό παράδειγμα αλγορίθμου θα ήταν η αναζήτηση ενός στοιχείου σε ένα πίνακα και στη περίπτωση που το στοιχείο υπάρχει να τυπώνεται η ένδειξη «true» ενώ σε αντίθετη περίπτωση να τυπώνεται «false». Είναι εμφανές πως στο παράδειγμα αυτό η είσοδος θα είναι ο πίνακας και το ζητούμενο στοιχείο ενώ η έξοδος θα είναι μια από τις προαναφερθέντες ενδείξεις. Εκτός από το να παράγει σωστή έξοδο, ένας αλγόριθμος θα πρέπει να είναι και αποδοτικός όσον αφορά την πολυπλοκότητα του, την ταχύτητα εκτέλεσης καθώς και την ανάγκη του για υπολογιστικούς πόρους (π.χ. χρήση της μνήμης για αποθήκευση των δεδομένων). Όπως θα δούμε σε επόμενο κεφάλαιο για τους αλγορίθμους ταξινόμησης, ένας αλγόριθμος ειδικά σχεδιασμένος για να είναι αποδοτικός υπερτερεί σημαντικά από έναν αλγόριθμο μη-βελτιστοποιημένο για ταχύτητα ακόμα και όταν τρέχει σε ένα υπολογιστικά πιο δυνατό σύστημα. Μέχρι πριν ορισμένες δεκαετίες, τα υπολογιστικά συστήματα μπορούσαν να εκτελέσουν μια μόνο εντολή σε κάθε χτύπο του ρολογιού τους. Η κατάσταση άλλαξε όταν εφευρέθηκαν επεξεργαστές που είχαν παραπάνω από έναν πυρήνες, οπότε διέθεταν πλέον την δυνατότητα να εκτελέσουν ταυτόχρονα τόσες εντολές, όσες και ο αριθμός των πυρήνων που περιέχουν. Με αυτόν τον τρόπο, δημιουργήθηκε η έννοια του παράλληλου προγραμματισμού και αναπτύχθηκαν αλγόριθμοι που εκμεταλλεύονται αυτή τη νέα ικανότητα των πολυπύρηνων επεξεργαστών. Πλέον ο παράλληλος προγραμματισμός έχει εδραιωθεί ως ένα πολύ βασικό κομμάτι της επιστήμης των ηλεκτρονικών υπολογιστών και γεννώνται καθημερινά καινούριοι τρόποι, όπως θα δούμε παρακάτω, με τους οποίους μπορούμε να τον εφαρμόζουμε. Με την έννοια Massive Parallel Processing (MPP) εννοούμε τη δημιουργία διεργασιών και την εφαρμογή τους σε συστήματα που μας επιτρέπουν να επιτύχουμε μια παραλληλοποίηση μεγάλου μεγέθους. Πρόκειται δηλαδή για μια έννοια άμεσα συνυφασμένη με τον παράλληλο προγραμματισμό, με ουσιαστική διαφορά ότι στο MPP μιλάμε πλέον για επίτευξη παράλληλης επεξεργασίας δεδομένων σε μεγάλο βαθμό. Τέτοιου είδους παραλληλοποίηση δεν επιτυγχάνεται από απλές Κεντρικές Μονάδες Επεξεργασίας (CPU) αλλά από συστήματα ειδικά υλοποιημένα για αυτόν τον σκοπό. Για την παρούσα εργασία θα γίνει η μελέτη δύο μεθόδων επίτευξης της παραλληλίας εκ των οποίων η μια είναι η λύση που προσφέρει η εταιρία NVIDIA με τον προγραμματισμό καρτών γραφικών μέσω μιας υψηλού επιπέδου γλώσσας προγραμματισμού βασισμένη στην γλώσσα C. Η άλλη μέθοδος που θα μελετηθεί είναι χαμηλού επιπέδου και χρησιμοποιεί την γλώσσα VHDL για να περιγράψει ολοκληρωμένα κυκλώματα που τρέχουν σε FPGA μηχανήματα. Οι δύο αυτές μέθοδοι θα επεξηγηθούν, ως προς τον τρόπο λειτουργίας τους, αναλυτικά στα επόμενα κεφάλαια. 8

10 Ας προσπαθήσουμε όμως να δούμε τα πλεονεκτήματα του παράλληλου προγραμματισμού με ένα απλό παράδειγμα. Έστω ότι μας δίνεται η λίστα Α με αριθμούς και θέλουμε να προσθέσουμε σε κάθε στοιχείο τον αριθμό 5 για να προκύψει η λίστα Β. Σημειώνουμε δε ότι η παρακάτω διαδικασία αποτελεί μια απλοποίηση του τρόπου που κάνει τους υπολογισμούς του μια κεντρική μονάδα επεξεργασίας. i A[i] B[i] Πίνακας 1-A: Παράδειγμα παράλληλης επεξεργασίας Ένας επεξεργαστής που αποτελείται από έναν πυρήνα, θα υπολόγιζε ένα στοιχείο κάθε φορά που θα χτύπαγε το ρολόι του. Άρα λοιπόν μετά από 8 χτυπήματα θα καταλήγαμε στην λίστα Β. Είναι εύκολο να καταλάβουμε πως ένας διπύρηνος επεξεργαστής θα ήταν σε θέση να υπολογίζει δύο στοιχεία σε κάθε χτύπημα του ρολογιού του. Άρα αν υποθέσουμε ότι οι δύο επεξεργαστές είναι χρονισμένοι στην ίδια συχνότητα καταλήγουμε στο συμπέρασμα ότι ο διπύρηνος επεξεργαστής θα χρειαστεί τον μισό χρόνο να υπολογίσει την λίστα Β. Το κέρδος σε χρόνο πολλαπλασιάζεται όσο αυξάνουμε τους υπολογιστικούς πυρήνες του επεξεργαστή και μπορούμε να αναφέρουμε πως στη χρονική στιγμή που γράφεται αυτή η εργασία ένας μέσος επεξεργαστής περιέχει 2-8 πυρήνες που μπορούν να εκτελούν ο καθένας δύο εντολές με μια διαδικασία που λέγεται hyper threading, η οποία είναι εκτός βλέψης του κειμένου, ενώ οι υπέρ-υπολογιστές θα μπορούν σύντομα να περιέχουν ακόμα και 72 πυρήνες. Φαινομενικά η δυνατότητα για παράλληλη επεξεργασία δεδομένων μοιάζει ήδη τεράστια όμως θα δούμε παρακάτω πως μερικές διεργασίες που αποτελούν συνήθως επιστημονικές εφαρμογές χρειάζονται ακόμα περισσότερη δύναμη. Ακόμα και στο παράδειγμα μας αν αυξήσουμε τα στοιχεία της λίστας σε εκατοντάδες χιλιάδες, γεγονός που εμφανίζεται πολύ συχνά σε επιστημονικά δεδομένα, ακόμα και ο επεξεργαστής με τους 72 πυρήνες θα χρειαστεί σημαντικό χρόνο για να παράξει τα πρέποντα αποτελέσματα. Για αυτό, χρησιμοποιούμε τα συστήματα που αναφέραμε προηγουμένως για να επιτύχουμε ακόμα μεγαλύτερο παραλληλισμό. 1.2 Δυσκολίες του παράλληλου προγραμματισμού Εκ πρώτης όψεως ο παράλληλος προγραμματισμός φαίνεται να περιέχει μόνο προτερήματα αφού θα μπορούσαμε να υποθέσουμε πως απλώς αυξάνοντας τις υπολογιστικές μονάδες ενός συστήματος θα είχαμε αυτόματα και μεγαλύτερη απόδοση. Κάτι τέτοιο όμως στην πράξη δεν ισχύει διότι δεν είναι δυνατόν να αναπτυχθούν αλγόριθμοι ικανοί να λύσουν όλα τα προβλήματα με παράλληλο τρόπο. Επιστρέφοντας στο προηγούμενο παράδειγμα (Πίνακας 1-A) θα σχεδιάσουμε έναν αλγόριθμο του οποίου η τιμή ενός στοιχείο είναι η τιμή του προηγούμενου συν τον αριθμό 5. Οι αλγόριθμοι αυτοί απεικονίζονται στα παρακάτω σχήματα. 9

11 Sequencial-Add (A) 1 for j = 0 to A.length 2 A[j] = A[j j = j + 1 Parallel-Add (A) 1 define CORENUM // The number of cores on the system 2 for j = 0 to A.length 3 A[j] = A[j j = j + CORENUM Ο πρώτος αλγόριθμος βλέπουμε ότι δεν εκμεταλλεύεται την ύπαρξη πολλαπλών πυρήνων στο σύστημα συνεπώς δεν είναι βελτιστοποιημένος. Αντιθέτως, ο δεύτερος αλγόριθμος έχει σχεδιαστεί με τέτοιο τρόπο, ώστε να ευρίσκεται ο αριθμός των υπολογιστικών πυρήνων και ο κάθε πυρήνας να υπολογίζει ένα στοιχείο τη φορά. Στη συνέχεια θα προσπερνάει κάποια στοιχεία, αφού αυτά θα έχουν υπολογιστεί από άλλους πυρήνες και θα πηγαίνει στο επόμενο που του αναλογεί. Οπότε αν υποθέταμε ότι έχουμε ένα σύστημα με βαθμό παραλληλοποίησης 2 ο πρώτος πυρήνας θα υπολόγιζε, δεδομένου ότι η αρίθμηση στους υπολογιστές ξεκινάει από το μηδέν, κάθε ζυγό στοιχείο ενώ ο δεύτερος πυρήνας κάθε μονό. Η παραλληλοποίηση αλγορίθμων ξεκινάει και γίνεται δύσκολη όταν ο υπολογισμός κάποιου δεδομένου απαιτεί να έχει συμβεί πρώτα ο υπολογισμός κάποιου άλλου δεδομένου. Το φαινόμενο αυτό στην αγγλική βιβλιογραφία ονομάζεται «race conditions». Ένας αλγόριθμος για να θεωρηθεί σωστός θα πρέπει, εκτός από την επίδοση του και τη βελτιστοποίηση των πόρων που χρειάζεται, να είναι και ντετερμινιστικός. Είναι απαραίτητο δηλαδή η συμπεριφορά του να παραμένει αναλλοίωτη κάθε φορά που τρέχει και για συγκεκριμένη είσοδο να παράγει συνεχώς την ίδια έξοδο. Σε ένα παράλληλο σύστημα όμως δεν μπορούμε να ελέγξουμε ποια υπολογιστική μονάδα θα τελειώσει πρώτη τους υπολογισμούς της. Μπορεί ο πρώτος πυρήνας του υπολογιστή να τρέχει κάποιο άλλο πρόγραμμα εκείνη τη στιγμή ή ο χρονοδρομολογητής (Scheduler) να σταματήσει το τρέξιμο του αλγόριθμου σε κάποιον πυρήνα γιατί πρέπει να τρέξει κάποια άλλη εργασία στο παρασκήνιο (background job). Στην πραγματικότητα αυτός ο ντετερμινιστικός αγώνας συμβαίνει όταν δύο λογικά παράλληλες εντολές χρησιμοποιούν την ίδια περιοχή μνήμης και τουλάχιστον μια από τις δύο γράφει κάτι πάνω σε αυτήν. Άρα λοιπόν, αν ο 2 ος πυρήνας απαιτεί κάποιο δεδομένο του 1 ου τότε ή έξοδος του αλγόριθμου θα είναι λανθασμένη αφού θα έχει λάβει υπόψιν του μη υπολογισμένα δεδομένα. Για να μπορέσουμε να αντιμετωπίσουμε αυτό το πρόβλημα θα πρέπει ο αλγόριθμος να μπορεί να αναμένει την ολοκλήρωση των υπολογισμών της άλλης υπολογιστικής μονάδας για να ξεκινήσει τους δικούς της υπολογισμούς. Αυτή η τεχνική χρησιμοποιείται συχνά, όμως όταν χρησιμοποιηθεί πολύ, ο αλγόριθμος παύει πλέον να είναι παράλληλος οπότε πρέπει πάντα να εντοπίζεται η χρυσή τομή του τί μπορεί και τί αξίζει να παραλληλοποιηθεί. 10

12 Για να δούμε τα παραπάνω στην πράξη επιστρέφουμε στο παράδειγμα μας. Τώρα θα τροποποιήσουμε τον αλγόριθμο επειδή θέλουμε ο υπολογισμός του Ν στοιχείου να προσθέτει το Ν-1 στοιχείο με τον αριθμό 5 αφού αυτό έχει πρώτα υπολογιστεί. Επίσης πρέπει να αρχικοποιήσουμε το πρώτο στοιχείο έτσι ώστε να μην πάρουμε κάποια τυχαία μεταβλητή από τη μνήμη που θα έχει παραχωρηθεί για το στοιχείο αυτό. Επίσης μεταβάλλουμε τον βρόχο επανάληψης για να μην προσπαθήσει ο αλγόριθμος να υπολογίσει στοιχεία που να βρίσκονται εκτός των ορίων του πίνακα. Άρα όταν οι πυρήνες 1 και 2 θα βρίσκονται στην εκτέλεση της εντολής 3 στα στοιχεία Α[1] και Α[2] αντίστοιχα, θα πρέπει πρώτα να υπολογίσει ο πυρήνας 1 το στοιχείο Α[1] για να μπορέσει ο πυρήνας 2 να διαβάσει από τη μνήμη την καινούρια τιμή του. Σε περίπτωση που ο πυρήνας 2 φτάσει πιο γρήγορα σε αυτή την εντολή τότε θα οδηγηθούμε σε λάθος αποτέλεσμα. Άρα καταλήγουμε στο συμπέρασμα πως ο παραπάνω τροποποιημένος αλγόριθμος δεν μπορεί να ωφεληθεί από τον παράλληλο προγραμματισμό. Sequencial-Add (A) 1 Α[0] = 5 2 for j = 1 to A.length 3 A[j] = A[j-1] j = j + 1 Parallel-Add (A) 1 Α[0] = 5 2 define CORENUM // The number of cores on the system 3 for j = 1 to A.length 4 A[j] = A[j] j = j + CORENUM 11

13 Κεφάλαιο 2: Παράλληλος Προγραμματισμός με CUDA 2.1 Εισαγωγή στην CUDA Ο πρώτος τρόπος επίτευξης της παραλληλοποίησης των διεργασιών που θα εξετάσουμε στο παρόν κείμενο θα είναι μέσω της πλατφόρμας CUDA. Η πλατφόρμα αυτή αναπτύχθηκε από την εταιρία NVIDIA και έχει ως στόχο την εκμετάλλευση της παράλληλης φύσης μιας κάρτας γραφικών. Σε επίπεδο προγραμματισμού, χρησιμοποιεί έναν compiler (μεταγλωττιστή) που λέγεται CUDA C/C++ και στην ουσία πρόκειται για μια σειρά από εντολές, επιπρόσθετες στον compiler της γλώσσας C/C++. Οι εντολές αυτές, που προσφέρονται από την CUDA C/C++, επιτρέπουν την εύκολη πρόσβαση σε πόρους της κάρτας γραφικών. Τέτοιο πόροι είναι οι διαφόρων ειδών μνήμες της κάρτας αλλά και οι αριθμητικές και λογικές μονάδες της. Τα παραπάνω έχουν ως αποτέλεσμα η κάρτα γραφικών να μπορεί πλέον να εκτελεί εντολές γενικού σκοπού και όχι απλώς παραγωγή γραφικών στοιχείων (pixels). Ο προγραμματισμός μονάδων επεξεργασίας γραφικών βρίσκει μεγάλη εφαρμογή σε προγράμματα στα οποία οι ανάγκες για παράλληλη επεξεργασία δεδομένων είναι μεγάλη. Αυτό μπορεί να οφείλεται στην ύπαρξη μεγάλων βάσεων δεδομένων η στην ύπαρξη πολλαπλών υπολογισμών. Τέτοιες εφαρμογές είναι συνήθως επιστημονικής φύσεως με προσομοιώσεις ρευστών αλλά ακόμα και εφαρμογές ιατρικής. 2.2 Το μοντέλο προγραμματισμού CUDA (CUDA Programming Interface) Γενικά, μπορούμε να θεωρήσουμε ως κύρια συστατικά ενός υπολογιστή την κεντρική μονάδα επεξεργασίας (CPU) και την μνήμη τυχαίας πρόσβασης (RAM). Πάνω σε αυτά θα προσθέσουμε την μονάδα επεξεργασίας γραφικών (GPU) και για όσο αφορά την πλατφόρμα CUDA θα θεωρούμε την CPU μαζί με την RAM ως οικοδεσπότη (HOST) ενώ την κάρτα γραφικών θα την ονομάσουμε συσκευή (DEVICE). Με αυτόν τον τρόπο γίνεται πιο εύκολο να σχηματίσουμε μια εικόνα για το πώς συνδέονται οι δύο περιοχές όταν προγραμματίζουμε με την πλατφόρμα CUDA. Ο προγραμματισμός μιας κάρτας γραφικών με την πλατφόρμα CUDA βασίζεται στα εξής βασικά βήματα, τα οποία φαίνονται και στο παρακάτω σχήμα: 1. Μεταφορά των δεδομένων από την κεντρική μονάδα επεξεργασίας (CPU) Host προς την γενική (global) μνήμη της μονάδας επεξεργασίας γραφικών (GPU) Device. 2. Στη συνέχεια γίνεται επεξεργασία των δεδομένων μέσω της εκτέλεσης ενός πυρήνα (Kernel). 3. Η διαδικασία τελειώνει με την μεταφορά των υπολογισμένων, τελικών δεδομένων από τη global μνήμη της GPU ως προς την κεντρική μνήμη RAM του υπολογιστή έτσι ώστε να καταστεί δυνατό να αξιοποιήσουμε τα εν λόγω δεδομένα. 12

14 Τα παραπάνω βήματα αποτελούν απλοποίηση της διαδικασίας προγραμματισμού μιας GPU με την πλατφόρμα CUDA. Όπως θα δούμε παρακάτω υπάρχουν και άλλα βήματα ανάμεσα σε αυτά που αναφέραμε τα οποία τροποποιούν την ροή της εργασίας που ακολουθείται για την επίτευξη της διεργασίας. Εικόνα 2-1: Ιεραρχία μνήμης και ροή εργασίας μεταξύ GPU & CPU Κατανομή Μνήμης (Memory Allocation) Όπως αναφέραμε προηγουμένως, στο 1 ο βήμα θα πρέπει, προτού μπορούμε να κάνουμε οποιοδήποτε υπολογισμό στα δεδομένα μας, η κάρτα γραφικών να έχει πρόσβαση σε αυτά τα δεδομένα. Η κάρτα γραφικών όμως δε μπορεί σε καμία περίπτωση να διαβάσει και να γράψει δεδομένα τα οποία βρίσκονται στην κεντρική μνήμη RAM του υπολογιστή. Ως εκ τούτου πρέπει να υπάρχει ένας τρόπος μεταφοράς των δεδομένων από την μνήμη του υπολογιστή προς τη μνήμη της κάρτας γραφικών. Αυτό επιτυγχάνεται αρχικά με την δέσμευση της απαιτούμενης μνήμης (memory allocation) στην κάρτα γραφικών με την εντολή cudamalloc. Στη συνέχεια πρέπει να αντιγράψουμε τα δεδομένα μας σε αυτό το χώρο μνήμης που δεσμεύσαμε. Για αυτό το σκοπό χρησιμοποιούμε την εντολή cudamemcpy. Στο τέλος του προγράμματος οφείλουμε να καλέσουμε την εντολή cudafree, όπως ακριβώς θα κάναμε και σε ένα απλό πρόγραμμα γραμμένο στη γλώσσα C ή C++, έτσι ώστε να ελευθερώσουμε την μνήμη που δεσμεύσαμε και να αποφύγουμε διαρροές μνήμης Πυρήνες (Kernels) Ο πυρήνας (Kernel) στον οποίο αναφερθήκαμε προηγουμένως είναι στην ουσία μια συνάρτηση που καλείται μέσα από το πρόγραμμα με έναν ειδικό τρόπο που ανήκει στην CUDA C/C++. Αυτή η συνάρτηση τελικά τρέχει στην μονάδα γραφικών GPU. Παρακάτω φαίνεται ένα παράδειγμα κλήσης ενός πυρήνα (Kernel Call). Στην αρχή έχει τεθεί το όνομα του Kernel, δηλαδή της συνάρτησης που θα κληθεί, ενώ στο τέλος είναι οι μεταβλητές, που περάσαμε στην μνήμη της κάρτας, οι οποίες θα περαστούν μέσα στη συνάρτηση αυτή. 13

15 Παρατηρούμε όμως και δύο αριθμούς ανάμεσα στα <<<(N+255)/256,256>>>. Οι αριθμοί αυτοί υποδηλώνουν τον αριθμό των συστοιχιών (Blocks) στο πρώτο μέρος και τα νήματα (Threads) στο δεύτερο που θα δημιουργηθούν για την υλοποίηση αυτής της συνάρτησης Συστοιχίες Νημάτων (Blocks) και Νήματα (Threads) Όπως είδαμε προηγουμένως, ένας Kernel περιέχει δύο αριθμούς που ακόμα δεν έχουν εξηγηθεί. Αυτοί οι δύο αριθμοί καταδεικνύουν, κατά κάποιο τρόπο, τον αριθμό των φορών που θα τρέξει αυτή η συνάρτηση που καλείται. Θεωρούμε λοιπόν την κάθε μοναδική συνάρτηση, άρα την κάθε υπολογιστική μονάδα, ως ένα νήμα (thread), και ως συστοιχίες νημάτων (blocks) τον τρόπο οργάνωσης αυτών των νημάτων. Οι συστοιχίες αυτές μπορούν να πάρουν μονοδιάστατη, δισδιάστατη, ακόμα και τρισδιάστατη μορφή όπως φαίνεται στο παρακάτω σχήμα, ενώ η κάθε συστοιχία μπορεί να περιέχει έως και 1024 νήματα στις σύγχρονες κάρτες γραφικών. Αντιθέτως, ο συνολικός αριθμών συστοιχιών που μπορεί ένας προγραμματιστής να δημιουργήσει δεν μπορεί να ξεπερνά τον αριθμό , δηλαδή Εικόνα 2-2: Ιεραρχία Grid, Block, Thread Στον Προγραμματισμό GPU Επομένως, ένα block περιέχει πολλά threads όπου το καθένα μπορεί και τρέχει αυτόνομα τον κώδικα της συνάρτησης που καλεί ο kernel αρκεί να έχει οριστεί σωστά ο αριθμός των blocks και threads που δημιουργούνται. Η παραλληλοποίηση τις διεργασίας συμβαίνει μέσα στα threads. Η CUDA παρέχει εντολές που μας επιτρέπουν να εντοπίζουμε σε ποιο block και thread βρισκόμαστε. Παρακάτω φαίνεται ένα τέτοιο παράδειγμα που μπορούμε να δούμε πως γίνεται η αρίθμηση σε ένα μονοδιάστατο block που περιέχει 128 threads. Αυτές οι εντολές είναι οι threadidx και blockidx οι οποίες ταυτοποιούν τα thread και block σε μονοδιάστατο, δισδιάστατο η και τρισδιάστατο επίπεδο. Επίσης, η εντολή blockdim μας δίνει τον αριθμό των threads που υπάρχουν μέσα σε ένα block στην κάθε διάσταση. Για να οριστεί μια συνάρτηση ως kernel αρκεί να την ορίσουμε ως global. 14

16 2.2.4 Ιεραρχία Μνήμης (Memory Hierarchy) Στο σχήμα βλέπουμε επιπλέον μνήμες εκτός της global memory. Η πιο βασική από αυτές θα μπορούσαμε να πούμε πως είναι η κοινή μνήμη (shared memory). Η shared memory έχει το χαρακτηριστικό ότι είναι κοινή για όλα τα threads που υπάρχουν μέσα σε ένα block. Επιπροσθέτως, λόγο του ότι βρίσκεται πιο κοντά στην επεξεργαστική μονάδα, ο χρόνος απόκρισης της είναι κατά πολύ καλύτερος από αυτόν της global memory. Εκτός από την shared memory, το κάθε thread μπορεί να έχει έναν δικό του καταχωρητή (register) και υπάρχει και η constant memory, η οποία δίνει στο πρόγραμμα μόνο τη δυνατότητα να διαβάσει από αυτή. Δηλαδή, από τη στιγμή που θα μεταφερθούν τα δεδομένα δεν μπορούν να τροποποιηθούν. Οι σχέσεις μεταξύ των μνημών και των block, thread φαίνονται στο σχήμα που είδαμε προηγουμένως Συγχρονισμός Νημάτων (Thread Synchronization) Στον παράλληλο προγραμματισμό, όπως είπαμε προηγουμένως, δεν μπορούμε να έχουμε έλεγχο του χρόνου που θα τρέξει η κάθε εντολή αν τρέχει σε διαφορετικές υπολογιστικές μονάδες. Το thread ως υπολογιστική μονάδα θα έχει συνεπώς τα ίδια χαρακτηριστικά. Από τη στιγμή που η global memory είναι κοινή για όλα τα threads και η shared memory κοινή για τα threads που υπάρχουν μέσα σε ένα block, θα πρέπει να υπάρχει ένας μηχανισμός έτσι ώστε να εξασφαλίζει τη σωστή προσπέλαση στα δεδομένα και να διατηρείται η αιτιότητα. Ο μηχανισμός αυτός έρχεται στη μορφή της εντολής syncthreads η οποία καλείται από τον kernel και συγχρονίζει τα threads μέσα σε ένα block. Έτσι λοιπόν, αν είχαμε ένα thread το οποίο μετέβαλλε την τιμή μιας μεταβλητής στην shared memory και θέλαμε τα υπόλοιπα threads να χρησιμοποιήσουν αυτή τη μεταβλητή θα έπρεπε να χρησιμοποιήσουμε την εντολή αμέσως μετά την μεταβολή της μεταβλητής. 15

17 1 //Ο kernel κώδικας που τρέχει στην κάρτα γραφικών 2 global void example(int *a) { 3 //ταυτοποίηση του thread 4 int i = threadid.x + blockid.x*blockdim.x; 5 //προσοχή για να μην βγούμε εκτός ορίων του πίνακα a 6 if (i<n) { 7 a[i] = 2*a[i]; int main() { 11 #define N 1000; 12 int a[n], *dev_a; 13 //δεσμεύση μνήμης για τον δείκτη dev_a στην κάρτα γραφικών 14 cudamalloc((void **)&dev_a, N*sizeof(int)); 15 for (int i = 0; i<n; ++i) { 16 a[i] = 2*i; //Αντιγραφή του πίνακα i από τον Host στο Device 19 cudamemcpy(dev_a, N*sizeof(int), cudamemcpyhosttodevice); 20 //Κλήση του kernel 21 add<<<n, 1>>>(dev_a); 22 //Αντιγραφή του πίνακα από το Device στον Host 23 cudamemcpy(a, dev_a, N*sizeof(int), cudamemcpydevicetohost); 24 //Αποδέσμευση της μνήμης της κάρτας γραφικών 25 cudafree(dev_a); 26 return 0; 27 Στον παραπάνω κώδικα απεικονίζεται ένα απλό πρόγραμμα που μεταβάλλει παράλληλα έναν πίνακα για την πλατφόρμα CUDA και χρησιμοποιεί τις εντολές που ορίσαμε προηγουμένως. 2.3 Η Αρχιτεκτονική CUDA (CUDA Architecture) Προηγουμένως, δημιουργήσαμε φαινομενικά ένα τυχαίο αριθμό blocks και threads. Στην πραγματικότητα όμως υπάρχει κάποια λογική πίσω από αυτά τα νούμερα. Αρχικά, για τον αριθμό των block η συνάρτηση αυτή δουλεύει όπως η γνωστή εντολή της γλώσσας C ceil και στρογγυλοποιεί τον αριθμό αυτόν προς τα πάνω. Από την άλλη μεριά, γιατί δημιουργήσαμε συγκεκριμένα 256 threads; Για να απαντήσουμε αυτήν την ερώτηση πρέπει να αναλύσουμε λίγο τον τρόπο που δουλεύει σε χαμηλό επίπεδο η αρχιτεκτονική της CUDA. Σε αντίθεση με έναν επεξεργαστή CPU ο οποίος είναι πολύπλοκος στην υλοποίηση του και είναι βελτιστοποιημένος στο να εκτελεί πολλές, και με μεγάλο εύρος τύπων, εντολές σε μικρό χρονικό διάστημα, μια κάρτα γραφικών είναι βελτιστοποιημένη για την επίτευξη συγκεκριμένων εντολών και δεν 16

18 περιέχει χαρακτηριστικά όπως branch prediction 1. Στο σχήμα φαίνεται αυτή η διαφορά των GPU και CPU και βλέπουμε πως μια GPU έχει πολύ μεγάλο αριθμό από αριθμητικών και λογικών μονάδων (ALU) εφόσον στοχεύει στις καλές επιδόσεις σε ταχύτητα ενώ η κρυφή μνήμη (cache) είναι κοινή σε αυτές τις μονάδες. Επίσης, ενώ οι πυρήνες ενός επεξεργαστή μπορούν να τρέξουν διαφορετικά προγράμματα ο καθένας, μια κάρτα γραφικών μπορεί να τρέχει μόνο ένα πρόγραμμα στις πολλές υπολογιστικές μονάδες της. Εικόνα 2-3: Διαφορά GPU & CPU σε χαμηλό επίπεδο Πηγή: NVIDIA Μια κάρτα γραφικών απαρτίζεται από έναν αριθμό πολυνηματικών επεξεργαστών που ονομάζονται streaming multiprocessors (SM) και βασίζεται στην αρχιτεκτονική SIMT (Single Instruction Multiple Thread). Ο κάθε επεξεργαστής αυτός είναι σχεδιασμένος ούτως ώστε να εκτελεί εκατοντάδες threads ταυτόχρονα. Αυτό επιτυγχάνεται μέσω ενός μηχανισμού, του warp scheduler, ο οποίος δημιουργεί, διαχειρίζεται, χρονοπρογραμματίζει και εκτελεί threads σε ομάδες των 32 threads. Αυτά τα threads ξεκινούν να τρέχουν σαν να αποτελούν ένα thread και στην πορεία, ανάλογα με την μοναδικότητα του thread, δηλαδή ανάλογα με το ποιες εντολές ελέγχου ροής θα ακολουθήσει, διακλαδώνονται και ξεφεύγουν από την κοινή ροή του warp. Άρα ένα warp περιέχει 32 threads και για αυτό το λόγο είναι καλή πρακτική όταν δημιουργούμε έναν kernel να εκτελούμε αριθμό threads μέσα σε ένα block πολλαπλάσιο του Branch Prediction είναι ένας μηχανισμός που προσπαθεί να προβλέψει το αποτέλεσμα ελέγχων ροής (if-then statements). Συναντάται συνήθως στου επεξεργαστές γενικού καθήκοντος CPU. 17

19 Κεφάλαιο 3: Ο Αλγόριθμος Ταξινόμησης Odd Even Transposition Sort 3.1 Αλγόριθμοι Ταξινόμησης Οι αλγόριθμοι ταξινόμησης περιγράφουν διαδικασίες οι οποίες ορίζουν τη σειρά με την οποία θα είναι διατεταγμένα τα στοιχεία ενός συνόλου. Τέτοια σύνολα μπορεί να είναι πίνακες που να περιέχουν αριθμητικά στοιχεία ή ακόμα και στοιχεία χαρακτήρων, ενώ η ταξινόμηση γίνεται με αύξουσα, φθίνουσα καθώς και με αλφαβητική σειρά. Συνεχίζοντας τον ορισμό των αλγόριθμων που δώσαμε στο Κεφάλαιο 1, οι αλγόριθμοι ταξινόμησης δέχονται ως είσοδο το σύνολο των στοιχείων, π.χ. έναν πίνακα, ενώ παράγουν ως έξοδο το ίδιο σύνολο με τη διαφορά ότι πλέον είναι τροποποιημένο με κάποιον από τους προαναφερθέντες τρόπους. 3.2 Ο Αλγόριθμος Odd-Even Transposition Sort Ο αλγόριθμος Odd-Even transposition Sort είναι ένας αλγόριθμος ο οποίος αναπτύχθηκε με σκοπό τη χρήση του σε παράλληλους επεξεργαστές. Θα μπορούσε κανείς να ισχυριστεί ότι στην σύλληψη του θυμίζει τον αλγόριθμο ταξινόμησης φυσαλίδας (Bubble Sort) μιας και μοιράζονται αρκετά χαρακτηριστικά. Παρακάτω αναλύεται η διαδικασία που ακολουθεί ο αλγόριθμος Odd-Even για να ταξινομήσει έναν πίνακα: 1) Συγκρίνει όλα τα Μονά/Ζυγά στοιχεία ενός πίνακα. Αν είναι σε λάθος σειρά, τα μεταθέτει μεταξύ τους. 2) Συγκρίνει όλα τα Ζυγά/Μονά στοιχεία του ίδιου πίνακα. Αν είναι σε λάθος σειρά, τα μεταθέτει μεταξύ τους. 3) Επαναλαμβάνει τα προηγούμενα βήματα Ν/2 φορές, όπου Ν το μέγεθος του πίνακα που ταξινομείται. Η παραπάνω διαδικασία ισχύει αν και μόνο αν ο πίνακας που ζητείται να ταξινομηθεί περιέχει ζυγό αριθμό από στοιχεία. Σε περίπτωση που ο πίνακας περιέχει μονό αριθμό πλήθους στοιχείων τότε η διαδικασία τροποποιείται ως εξής: 1) Συγκρίνει όλα τα Μονά/Ζυγά στοιχεία ενός πίνακα. Αν είναι σε λάθος σειρά, τα μεταθέτει μεταξύ τους. 2) Συγκρίνει όλα τα παρακείμενα Μονά/Ζυγά στοιχεία του ίδιου πίνακα. Αν είναι σε λάθος σειρά, τα μεταθέτει μεταξύ τους. 3) Επαναλαμβάνει τα προηγούμενα βήματα Ν/2 φορές, όπου Ν το μέγεθος του πίνακα που ταξινομείται. 18

20 Στην παρακάτω εικόνα φαίνεται μια σχηματοποίηση της διαδικασίας που μόλις περιγράψαμε για κάποιον τυχαίο πίνακα με 4 συνολικά στοιχεία: Εικόνα 3-1: Διαδικασία Ταξινόμησης Odd-Even Transposition Sort 19

21 Παρακάτω φαίνεται ένας ψευδοκώδικας του αλγόριθμου ο οποίος είναι ενός thread, δηλαδή όχι παράλληλος, για εύκολη κατανόηση της διαδικασίας. function oddevensort(list) { function swap( list, i, j ){ var temp = list[i]; list[i] = list[j]; list[j] = temp; var sorted = false; while(!sorted) sorted = true; for(var i = 1; i < list.length-1; i += 2) if(list[i] > list[i+1]) swap(list, i, i+1); sorted = false; for(var i = 0; i < list.length-1; i += 2) if(list[i] > list[i+1]) swap(list, i, i+1); sorted = false; Εικόνα 3-2: Ψευδοκώδικας αλγόριθμου Odd-Even Transposition Sort 3.3 Υλοποίηση του Odd-Even Transposition Sort με CUDA Για να πετύχουμε την παραλληλοποίηση του παραπάνω αλγόριθμου, θα πρέπει σε κάθε βήμα του υπολογισμού να έχουμε μια υπολογιστική μονάδα η οποία να ελέγχει την κάθε δυάδα στοιχείων. Σε αυτό θα μας βοηθήσει η πλατφόρμα CUDA η οποία με τον κώδικα του παραρτήματος Kernel θα λάβει έναν πίνακα τον οποίο θα ταξινομήσει με τον αλγόριθμο Odd-Even. Στην υλοποίηση CUDA, εφαρμόσαμε τον αλγόριθμο και σε CPU μονής υπολογιστικής μονάδας καθώς και σε μια ειδική βιβλιοθήκη της CUDA ειδικά κατασκευασμένη για ταξινόμηση πινάκων. Η βιβλιοθήκη αυτή λέγεται Thrust. Στη συνέχεια, για να βγάλουμε συμπεράσματα, κατασκευάσαμε τον κώδικα με τέτοιο τρόπο έτσι ώστε να υλοποιεί τους αλγόριθμους ταξινόμησης σε κάποιο μικρό πίνακα και στη συνέχεια να μεγαλώνει εκθετικά. Για την υλοποίηση Cuda επιλέξαμε δυναμική κατασκευή των block, βάση του μεγέθους του πίνακα, με χρήση 128 threads σε κάθε ένα από αυτά. Οι υλοποιήσεις CUDA τρέχουν σε κάρτα γραφικών GeForce GTX 960 με 2GB Device Memory ενώ ο host CPU είναι ο AMD Phenom 2 4GHz. 20

22 Η παραπάνω διαδικασία έγινε για πίνακες δύο ειδών. Ο πρώτος πίνακας αποτελείται από στοιχεία με αύξουσα σειρά με σκοπό τη μελέτη του αλγόριθμου στην χειρότερη δυνατή κατάσταση πίνακα (Worst Case Scenario) ενώ ο δεύτερος πίνακας περιέχει στοιχεία τα οποία έχουν παραχθεί τυχαία από τη βιβλιοθήκη rand. Στους παρακάτω πίνακες φαίνονται τελικά οι χρόνοι εκτέλεσης των αλγόριθμων για ένα τυχαίο σενάριο με Ν στοιχεία πίνακα και για το χειρότερο δυνατό σενάριο. Runtime (ns) Odd-Even Transposition Sort Worst Case Performance O(n 2 ) Runtime (ns) Odd-Even Transposition Sort Average Case Performance O(n 2 ) N CPU CUDA THRUST N CPU CUDA THRUST Πίνακας 3-A: Χρόνοι Εκτέλεσης CPU, Odd-Even, Thrust 21

23 Time (ns) Time (ns) Επίσης δίνονται και τα παρακάτω διαγράμματα των χρόνων εκτέλεσης για τα δύο αυτά σενάρια Runtime Odd-Even Transposition Sort Worst Case Performance O(n 2 ) Sample Size (N) cpu cuda thrust Poly. (cpu) Poly. (cuda) Poly. (thrust) Runtime Odd-Even Transposition Sort Average Case Performance O(n 2 ) Sample Size (N) cpu cuda thrust Poly. (cpu) Poly. (cuda) Poly. (thrust) Εικόνα 3-3: Διάγραμμα Χρόνου Εκτέλεσης CPU, Odd-Even, Thrust 22

24 Από τα παραπάνω διαγράμματα προκύπτουν τα ακόλουθα συμπεράσματα: 1) Η πιο αργή υλοποίηση του αλγορίθμου συνέβη για τον κεντρικό επεξεργαστή CPU όπως και ήταν αναμενόμενο από τη θεωρία. 2) Η αμέσως γρηγορότερη υλοποίηση ήταν της CUDA με τον αλγόριθμο Odd-Even που μελετάει η παρούσα εργασία. 3) Η πιο γρήγορη μέθοδος ήταν με χρήση της εξειδικευμένης βιβλιοθήκης Thrust. 4) Το όφελος που έχει μια εφαρμογή από την παράλληλη επεξεργασία είναι ευθέως ανάλογο του μεγέθους του προβλήματος που ζητείται να λυθεί. Αρχικά, η υλοποίηση η υλοποίηση με CPU είναι η πιο αργή από όλες τις μέθοδος και συγκεκριμένα είναι, όταν το μέγεθος του προβλήματος είναι σημαντικό, κατά μέσο όρο 2.16 φορές μεγαλύτερη από τον αλγόριθμο Odd-Even και 11 φορές από την βιβλιοθήκη Thrust. Επίσης, ο αλγόριθμος Odd-Even που σχεδιάσαμε δεν είναι όσο αποδοτικός όσο η βιβλιοθήκη Thrust. Αυτό συμβαίνει για δύο κύριους λόγους. 1) Λόγου του γεγονότος ότι ο αλγόριθμος Odd-Even απαιτεί την συνεχή χρήση των γειτονικών στοιχείων ενός πίνακα δεν ήταν δυνατόν να χρησιμοποιηθεί η shared memory δυνατότητα της CUDA. Αυτό έχει σαν αποτέλεσμα την μειωμένη απόδοση σε σχέση με την Thrust. 2) Η Βιβλιοθήκη Thrust είναι ανεπτυγμένη μετά από πολλά χρόνια ανάπτυξης και ανθρώπινο δυναμικό με συνέπεια τη βελτιστοποίηση της διαδικασίας ταξινόμησης ή ακόμα και χρήσης αλγορίθμων πιο αποδοτικών από τον Odd Even Transposition Sort. Το τελικό συμπέρασμα μελέτης του αλγόριθμου Odd Even Transposition Sort είναι πως παρόλο που είναι ένα καλό βήμα με στόχο την παραλληλοποίηση της διαδικασίας της ταξινόμησης, δεν είναι και το τελικό. Πάντα θα υπάρχουν περιθώρια βελτίωσης των αλγορίθμων μέσα από καλύτερη σχεδίαση ή χρήση περισσότερο βέλτιστων πόρων ενός συστήματος. 23

25 Κεφάλαιο 4: Σχεδίαση και Προγραμματισμός FPGA 4.1 Εισαγωγικές έννοιες για το υλικό (Hardware) Δυαδικό Αριθμητικό Σύστημα (Binary Number System) Προτού ξεκινήσουμε να αναλύουμε την τεχνική παράλληλου προγραμματισμού μέσω FPGA πρέπει να διερευνήσουμε το πως δουλεύουν γενικώς τα υπολογιστικά συστήματα. Στη ουσία πρέπει να καταλάβουμε πως γίνεται ένα μηχάνημα να μπορεί να πραγματοποιήσει τέτοιους αριθμητικούς υπολογισμούς, συστήματα ροής αποφάσεων και άλλα συστήματα ελέγχου ενώ στην πραγματικότητα το μόνο που εμπλέκεται στην διαδικασία είναι ρεύμα. Το παν στη θεωρία υπολογιστών είναι το επονομαζόμενο δυαδικό σύστημα, που απαρτίζεται από τις κωδικές λέξεις μηδέν «0» και ένα «1». Στα κυκλώματα που περιγράφουν ένα υπολογιστικό σύστημα, αυτά τα δύο νούμερα μεταφράζονται σε δύο διαφορετικές στάθμες τάσης ρεύματος που περνάει μέσα από το εκάστοτε κύκλωμα. Αυτές οι δύο στάθμες μπορούν να είναι οποιεσδήποτε αρκεί να είναι διακρίσιμες μεταξύ τους. Για παράδειγμα, θα μπορούσαμε να θέσουμε για το μηδέν, τάση 0 Volt ενώ για το ένα, τάση 1 Volt ή να χρησιμοποιήσουμε τάση 3 και 5 Volt για τα μηδέν και ένα αντίστοιχα. Με αυτόν τον τρόπο, θα μπορούσαμε να φτιάξουμε ένα ON-OFF κύκλωμα, που λειτουργεί όπως ένας διακόπτης. Μέχρι στιγμής, για το σκοπό απεικόνισης αριθμών, μπορούμε να μετρήσουμε μέχρι το ένα αφού έχουμε μόνο αυτές τις δύο καταστάσεις. Πως θα μπορέσουμε όμως να μετρήσουμε μεγαλύτερους αριθμούς; Παρατηρούμε πως πριν ορίσαμε τα μηδέν και ένα ως κωδικές λέξεις και όχι ως αριθμούς. Συνεχίζουμε το συλλογισμό μας θεωρώντας αυτή τη κωδική λέξη ως ένα bit. Άρα ένα bit μπορεί να πάρει ενδεχομένως δύο τιμές, την μηδέν και την ένα. Για να μπορέσουμε να φτάσουμε αριθμούς μεγαλύτερους του ένα θα πρέπει να χρησιμοποιήσουμε δύο bit στη σειρά. Παίρνουμε για παράδειγμα την κωδική λέξη 10. Το μηδέν θα είναι το μηδενικό bit ενώ το 1 το πρώτο bit. Αν είχαμε περισσότερα bits θα αυξάναμε τον αναγνωριστικό αριθμό του bit όσο πηγαίναμε προς τα αριστερά. Ας υποθέσουμε τώρα πως μας δίνεται η κωδική λέξη 110. Για να υπολογίσουμε το αριθμό που προκύπτει από αυτήν την κωδική λέξη θα την υπολογίζουμε με τη εξής φόρμουλα. N 1 Α = B n 2 n n=0 (3.1) Όπου Α ο αριθμός που θέλουμε να υπολογίσουμε, n ο αριθμός της θέσης του bit, B n η κατάσταση του bit (0 ή 1) και N ο συνολικός αριθμός των bit που απαρτίζουν την λέξη. Άρα λοιπόν στην κωδική λέξη 110 θα έχουμε: Α = = = 6 (3.2) 24

26 Σε αυτό το σημείο η πρώτη σκέψη που διαμορφώνεται είναι τι θα συνέβαινε αν ο αριθμός που θέλουμε να απεικονίσουμε είναι αρνητικός. Σε αυτή τη περίπτωση θα έπρεπε να έχουμε μια ένδειξη στην κωδική λέξη που να υποδεικνύει ότι ο αριθμός θα είναι αρνητικός. Ένας τρόπος για να επιτευχθεί αυτός είναι με το 2-Συμπλήρωμα το οποίο θεωρεί το πρώτο στη σειρά bit μιας λέξης ως το bit προσήμου, το επονομαζόμενο sign bit. Ένας αριθμός που έχει sign bit ονομάζεται signed ενώ για μια κωδική λέξη χωρίς bit προσήμου ονομάζεται unsigned. Για αρνητικό αριθμό, αυτό το bit θα είναι ένα ενώ για θετικό το πρώτο bit θα είναι μηδέν. Εκτός αυτού, όταν έχουμε αρνητικό αριθμό, δηλαδή πρώτο bit ένα, τα υπόλοιπα bit είναι αντεστραμμένα και στον υπολογισμό με την εξίσωση (3.1) θα θεωρούμε το μηδέν ως ένα και το ένα ως μηδέν. Ο παρακάτω πίνακας βοηθάει στην κατανόηση αυτής της τεχνικής απεικόνισης αρνητικού αριθμού 3bit. Bit Word Unsigned Signed Πίνακας 4-A: Παράδειγμα δυαδικού συστήματος αρίθμησης με ή χωρίς bit προσήμου (sign bit) Παρατηρούμε ότι από τη στιγμή που μπορούμε πλέον να αναπαραστήσουμε αρνητικούς αριθμούς, μειώθηκε το εύρος του μέγιστου, κατά απόλυτη τιμή, αριθμού που μπορούμε να αναπαραστήσουμε. Σε αυτό το σημείο καλό είναι να αναφέρουμε πως όλα αυτά δεν είναι κάτι που καταλαβαίνει ο υπολογιστής αλλά είναι μια σύμβαση η αλλιώς νοητή θεωρία του πως μεταφράζουμε τα bit που όπως είπαμε είναι ρεύμα, σε χρήσιμα για εμάς δεδομένα. Είναι στην ευθύνη του σχεδιαστή του κάθε κυκλώματος να κάνει πράξεις μεταξύ bits τα οποία ακολουθούν την ίδια αριθμητική έτσι ώστε να αποφευχθούν τυχόν σφάλματα Αριθμητική Σταθερής Υποδιαστολής (Fixed Point Arithmetic) Εκτός από αρνητικούς αριθμούς, πρέπει να βρεθεί και ένας τρόπος να απεικονιστεί ένας δεκαδικός αριθμός. Τη λύση σε αυτό το πρόβλημα δίνει η αριθμητική σταθερής υποδιαστολής. Η τεχνική αυτή αποτελεί πάλι μια νοητή σύμβαση, κατανοητή δηλαδή μόνο από τον άνθρωπο που σχεδιάζει ένα κύκλωμα και όχι από το κύκλωμα κάθε αυτό. Ας υποθέσουμε ότι έχουμε την κωδική λέξη « » και χρησιμοποιούμε unsigned αριθμούς, τότε αυτή η λέξη των 8bit, αν ακολουθούσαμε την προηγούμενη φόρμουλα, θα βλέπαμε ότι αντιστοιχεί στον αριθμό «82». Βάζουμε τώρα μια νοητή τελεία μέσα στην κωδική λέξη και είναι πλέον « ». Τα bits που θα βρίσκονται αριστερά της τελείας θα είναι τα ακέραια ψηφία ενώ τα bit προς τα δεξιά είναι τα δεκαδικά ψηφία. Ο συμβολισμός αυτού του τρόπου γραφής γίνεται με το Qm. n όπου m είναι ο αριθμός των ακέραιων ψηφίων και n ο αριθμός των δεκαδικών. Στο παράδειγμα έχουμε αριθμό Q6.2. Για κάθε αριθμό στη μορφή Qm. n θα ισχύουν τα παρακάτω: 1. Το πεδίο ορισμού για signed αριθμό, θα είναι [ 2 m 1, 2 m 1 2 n ] 2. Το πεδίο ορισμού για unsigned αριθμό, θα είναι [0, 2 m 2 n ] Για την μετατροπή από δεκαδικό αριθμό (float) σε Q χρησιμοποιείται η εξής φόρμουλα: 25

27 1. Πολλαπλασιάζουμε τον αριθμό με 2 n 2. Στρογγυλοποιούμε προς τον πιο κοντινό ακέραιο. 3. Βρίσκουμε την αντιστοιχία αυτού του ακεραίου στη μορφή Q με χρήση της εξίσωσης (3.1) Αντιθέτως, για να μεταφερθούμε από μορφή Q σε δεκαδικό αριθμό θα: 1. Υπολογίσουμε τον ακέραιο με χρήση της εξίσωσης (3.1) 2. Πολλαπλασιάσουμε με 2 n Για το παράδειγμα με την λέξη « » με χρήση της παραπάνω μεθοδολογίας και της εξίσωσης (3.1) = = = 20.5 (3.3) Πέρα από την παραπάνω μέθοδο, μπορούμε να κάνουμε την μετατροπή και με την εξής καινούρια φόρμουλα: m 1 n Α = Μ i 2 i + Ν i 2 i i=0 i= 1 (3.4) Όπου Μ η κατάσταση των bit στη μεριά των ακεραίων ενώ Ν η κατάσταση των bit στη μεριά των δεκαδικών. Οπότε στο παράδειγμα με την λέξη « » θα έχουμε τον αριθμό: Α = = = 20.5 (3.5) Με παρόμοια λογική μετατρέπουμε τον αριθμό σε μορφή Q6.2 με χρήση της μεθοδολογίας που εξηγήσαμε προηγουμένως. W = = = 83 B = W = (3.6) Στην μεταφορά από δεκαδικό αριθμό σε μορφή Q παρατηρούμε ότι πριν κάνουμε τη μετατροπή από το δεκαδικό σύστημα στο δυαδικό πραγματοποιήσαμε μια στρογγυλοποίηση. Αυτό συνέβη γιατί όπως είπαμε προηγουμένως οι αριθμοί που περιέχουν δεκαδικά ψηφία δεν μπορούν να αναπαρασταθούν στο δυαδικό σύστημα. Έτσι λοιπόν χάσαμε κάποια από την ακρίβεια του αριθμού που θέλουμε να μετατρέψουμε. Αν επαναλάβουμε την διαδικασία για να μετατρέψουμε το « » σε δεκαδικό θα βρούμε ότι Α = οπότε βγάζουμε πλέον το συμπέρασμα ότι ο αριθμός των bit προς τα δεξιά μιας λέξης Qm. n μας δίνει στην ουσία την ακρίβεια που μπορεί να αναπαραστήσει αυτός ο συμβολισμός. Σε περίπτωση που είχαμε άπειρα fractional bits και μηδέν integer bits θα μπορούσαμε θεωρητικά να έχουμε άπειρη ακρίβεια και να φτάσουμε πολύ κοντά στο 1 όπως φαίνεται στην εξίσωση (3.7). Κάτι τέτοιο όμως θα ήταν αδύνατο για ένα υπολογιστή ή ολοκληρωμένο κύκλωμα οπότε θεωρούμε πως με fractional bits έχουμε επαρκή ακρίβεια όταν πρόκειται για υπολογισμούς με δεκαδικά νούμερα. Q. = = = (3.7) 26

28 Με συνδυασμό της αριθμητικής σταθερής υποδιαστολής και του sign bit για απεικόνιση αρνητικών αριθμών μπορούμε να φτιάξουμε το παρακάτω πίνακα που για μια λέξη 4-bit με ένα bit προσήμου θα μας δίνει τον αντίστοιχο αριθμό που αντιστοιχεί για signed και unsigned και σε διάφορες μορφές Q. Bit Word Q3.0 Unsigned Q3.0 Signed Q2.1 Unsigned Q2.1 Signed Q1.2 Unsigned Q1.2 Signed Πίνακας 4-B:Παραδείγματα signed & unsigned λέξεις 4-bit σε διάφορες μορφές Q Σε αυτό το σημείο πρέπει να αναφέρουμε πως υπάρχει και άλλος τρόπος για να απεικονίσει κανείς έναν αρνητικό αριθμό ο οποίος είναι με την αριθμητική με κυμαινόμενο σημείο (floating point arithmetic). Σε αντίθεση με την αριθμητική κινητής υποδιαστολής, η αριθμητική με κυμαινόμενο σημείο απαιτεί την ύπαρξη ειδικών μονάδων υπολογισμού της, το λεγόμενο floating point unit (FPU), για να χρησιμοποιηθεί. Συνεπώς δεν είναι προτιμητέα, όταν η υλοποίηση μιας εφαρμογής θέλουμε να είναι λειτουργική σε όσο το δυνατόν περισσότερα συστήματα. Εκτός αυτής της απαίτησης, η αριθμητική με κυμαινόμενο σημείο είναι πιο απαιτητική υπολογιστικά και με μικρότερη ακρίβεια από την αριθμητική κινητής υποδιαστολής. Για τους λόγους αυτούς, στη υλοποίηση του φίλτρου που θα εξετάσουμε στο Κεφάλαιο 5 θα χρησιμοποιήσουμε αριθμητική κινητής υποδιαστολής οπότε δεν θα αναλύσουμε περαιτέρω την άλλη μέθοδο Άλγεβρα Μπουλ (Boolean Algebra) Η άλγεβρα Μπουλ είναι ένας τομέας των μαθηματικών και της μαθηματικής λογικής η οποία ασχολείται με τιμές αλήθειας που μπορούν πάρουν είτε την τιμή «Αληθές» (True) είτε την «Ψευδές» (False). Στους υπολογιστές η άλγεβρα Μπουλ είναι πολύ χρήσιμη αν αναλογιστούμε ότι το «1» και το «0» μπορεί να μεταφραστεί σε «True» και «False» αντίστοιχα. Στην άλγεβρα Μπουλ, θεωρώντας μεταβλητές x και y, υπάρχουν οι εξής βασικές πράξεις: 1. Η σύζευξη ΚΑΙ (AND) που συμβολίζεται με ( ) ή με τον συμβολισμό του πολλαπλασιασμού ( ). Το αποτέλεσμα αυτής της πράξης θα είναι «True» αν και μόνο αν x = y = True 2. Η διάζευξη Η (OR) που συμβολίζεται με ( ) ή με τον συμβολισμό της πρόσθεσης (+) με αποτέλεσμα «True» όταν ένα από τα δύο η και τα δύο x, y είναι «True» 27

29 3. Η άρνηση ΟΧΙ (ΝΟΤ), συμβολίζεται με ( ) ή με ( x ) και αντιστρέφει την είσοδο που παίρνει. Δηλαδή αν x = True x = False. Με τις βασικές αυτές πράξεις μπορούμε να φτιάξουμε τον πίνακα αληθείας, που είναι ένας πίνακας που παρουσιάζει το αποτέλεσμα των πράξεων μιας συνάρτησης που αποτελείται από πράξεις Μπουλ για κάθε πιθανή τιμή της εισόδου. x y x + y x y x x Πίνακας 4-C: Πίνακας Αλήθειας Βασικών Πράξεων Άλγεβρας Μπουλ Λογικές Πύλες (Logic Gates) Με την ίδια λογική της άλγεβρας Μπουλ μπορούμε να ορίσουμε ορισμένα φυσικά κυκλώματα τα οποία θα πραγματοποιούν αυτές τις λογικές πράξεις. Παρακάτω φαίνεται ένας πίνακας με αυτά τα κυκλώματα όπως αποτυπώνονται σε ένα διάγραμμα κυκλώματος. Εικόνα 4-1: Διαγραμματική Απεικόνιση Βασικών Λογικών Πυλών 28

30 Παρατηρούμε την ύπαρξη ορισμένων ακόμα συμβόλων και πυλών. Οι πύλες αυτές επεξηγούνται παρακάτω: 1. NAND: Η άρνηση του αποτελέσματος μιας AND πύλης 2. NOR: Η άρνηση του αποτελέσματος μιας OR πύλης 3. XOR/EOR: Δίνει αποτέλεσμα «True» αν και μόνο αν μία από τις δύο εισόδους είναι «True», όχι όταν είναι και οι δύο 4. XNOR/ENOR: Η άρνηση μιας XOR πύλης. Τελικά, για όλες τις πύλες αυτές σχεδιάζουμε τους πίνακες αληθείας. Α Β AND NAND OR NOR XOR XNOR Α Α Πίνακας 4-D: Πίνακας Αλήθειας Βασικών Λογικών Πυλών Εξειδικευμένες πράξεις με χρήση Λογικών Πυλών Με χρήση όλων των παραπάνω είμαστε πλέον έτοιμοι να κατασκευάσουμε κυκλώματα πυλών τα οποία θα πραγματοποιούν πολύπλοκες πλέον πράξεις σε μεμονωμένα bit αλλά και σε συστοιχίες από bit. Γενικά μπορούμε να φτιάξουμε οποιαδήποτε πράξη όμως στη παρούσα εργασία θα επικεντρωθούμε στα κυκλώματα τα οποία θα μας φανούν χρήσιμα στην υλοποίηση ενός φίλτρου για ψηφιακή επεξεργασία δεδομένων. I. Ο Ημι-Αθροιστής (Half-Adder) Ο Ημι-Αθροιστής (Half-Adder) είναι ένα κύκλωμα το οποίο πραγματοποιεί προσθέσεις δύο δυαδικών ψηφίων με έξοδο το άθροισμά τους S και το κρατούμενο C της επόμενης τάξης. Εικόνα 4-2: (α) Συμβολική Παράσταση (β) Πίνακας Αλήθειας (γ) Λογικές Συναρτήσεις (δ) Λογικό Κύκλωμα Ημι-Αθροιστή HA 29

31 II. Ο Πλήρης Αθροιστής (Full-Adder) Ο Πλήρης αθροιστής είναι συνδυαστικό κύκλωμα ενός Ημι-Αθροιστή μαζί με τρεις ακόμα πύλες, όπως φαίνεται στο σχήμα. Το κύκλωμα αυτό εκτελεί την πρόσθεση τριών δυαδικών ψηφίων με το C i 1 να είναι το κρατούμενο που ενδέχεται να έχει παραχθεί από προηγούμενη άθροιση. Όπως ο Half-Adder, και ο Full-Adder δίνει στην έξοδο το άθροισμα S i και κρατούμενο C i. Εικόνα 4-3: (α) Συμβολική Παράσταση (β) Πίνακας Αλήθειας (γ) Λογικές Συναρτήσεις (δ) Λογικό Κύκλωμα Ημι-Αθροιστή HA III. Ο Αθροιστής (Adder) Με συνδυασμό των κυκλωμάτων Half-Adder και Full-Adder είναι δυνατόν να κατασκευάσουμε αθροιστές πολυψήφιων N-Bit αριθμών. Στην πραγματικότητα, τοποθετούμε πρώτα έναν Half-Adder εφόσον το πρώτο ψηφίο δεν θα έχει κάποιο κρατούμενο από κάποια προηγούμενη πράξη. Αν για κάποια περίπτωση μας παρέχονται μόνο Full Adders (FA) τότε ο Αθροιστής μπορεί να υλοποιηθεί μόνο με εκείνους αρκεί να έχουμε σταθερή είσοδο, στον μηδενικό FA, κατάστασης μηδέν «False». Επιπροσθέτως, με πρόσθεση 30

32 μερικών πυλών ακόμη, όπως φαίνεται στο σχήμα, είναι δυνατό να κατασκευαστεί αθροιστής που να δουλεύει και για αρνητικούς αριθμούς στο 2-Συμπλήρωμα. Εικόνα 4-4: N-Bit Αθροιστής/Αφαιρετής 2-Συμπλήρωμα IV. Ο Πολλαπλασιαστής (Multiplier) Όπως ακριβώς υποδηλώνει και το όνομα, ένας πολλαπλασιαστής κατασκευάζεται με χρήση αθροιστών με σκοπό να πολλαπλασιάσει δύο δυαδικά ψηφία. Στο σχήμα φαίνεται μια τέτοια υλοποίηση. Εικόνα 4-5: (α) Λογικό Κύκλωμα Πολλαπλασιαστή Multiplier 31

33 V. Το Μνημονικό Στοιχείο Καθυστέρησης (D Flip-Flop) Το Delay Flip-Flop, η αλλιώς το Φλιπ-Φλοπ Καθυστέρησης έχει ως χαρακτηριστικό ότι η έξοδος του θα ακολουθεί την είσοδο με μια χρονοκαθυστέρηση ίση με την περίοδο του ρολογιού που θα έχουμε εισάγει στο σύστημα. Το Στοιχείο αυτό είναι πολύ σημαντικό όταν πρόκειται για υλοποιήσεις που χρησιμοποιούν τεχνική pipeline 2 για επίτευξη καλών επιδόσεων στην ταχύτητα εκτέλεσης. Τα συστήματα ψηφιακής επεξεργασίας σήματος χρησιμοποιούν κατά κόρον αυτό το στοιχείο όπως θα δούμε στο επόμενο κεφάλαιο. Εικόνα 4-6: (a) Λογικό Κύκλωμα (β) Πίνακας Αλήθειας Delay Flip-Flop 2 Με τον όρο Pipeline εννοούμε την τοποθέτηση ενός συνόλου από στοιχεία (π.χ. πύλες) μιας επεξεργασίας δεδομένων σε σειρά, έτσι ώστε η έξοδος από ένα στοιχείο να αποτελεί είσοδο για το επόμενο στοιχείο στη σειρά. Με αυτόν τον τρόπο επιτυγχάνεται η παραλληλοποίηση μιας διεργασίας στο πεδίο του Υλικού (Hardware). 32

34 4.2 Τα FPGA Με τον όρο FPGA εννοούμε μηχανήματα που περιέχουν κυκλωματικά στοιχεία, τα οποία όμως τα διέπει το χαρακτηριστικό ότι μπορούν να διαμορφωθούν δυναμικά με χρήση μιας ειδικής γλώσσας προγραμματισμού. Ο όρος FPGA είναι τα αρχικά για Field Programmable Gate Array, που στα ελληνικά μεταφράζεται ως Συστοιχία Επιτόπια Προγραμματιζόμενων Πυλών. Έχει ονομαστεί έτσι επειδή, όπως είπαμε προηγουμένως, μπορεί να προγραμματιστεί στο πεδίο, δηλαδή επιτόπου και περιέχει ένα πολύ μεγάλο αριθμό τυποποιημένων λογικών κελιών και προγραμματιζόμενων διακοπτών. Εκτός από αυτά, ένα FPGA συνήθως περιέχει και άλλα ψηφιακά εξαρτήματα όπως απαριθμητές και καταχωρητές μνήμης. Εικόνα 4-7: Σχεδιαστική Μορφή ενός FPGA. Πηγή: (Chu, 2008) Για να εκμεταλλευτούμε λοιπόν όλους τους πόρους και τις δυνατότητες που παρέχουν τα FPGA πρέπει να χρησιμοποιήσουμε μια γλώσσα περιγραφής υλικού (hardware description language HDL), η οποία θα προκαλέσει, μετά από κατέβασμα του κώδικα στο FPGA, την ενεργοποίηση των λειτουργιών αυτών και θα προγραμματίσει τα λογικά κελιά ενώ θα πραγματοποιήσει τις απαραίτητες διασυνδέσεις με προγραμματισμό των διακοπτών στο FPGA. Αυτό, έχει σαν αποτέλεσμα το FPGA να λειτουργήσει και να δημιουργήσει ένα σύστημα ίδιο με αυτό που έχουμε περιγράψει με την γλώσσα περιγραφής. Οι πιο γνωστές γλώσσες περιγραφής υλικού τη στιγμή της συγγραφής της εργασίας είναι η Verilog και η VHDL. Για την μελέτη του φίλτρου θα χρησιμοποιηθεί η VHDL η οποία επιλέχθηκε λόγο προτίμησης αφού οι επιδόσεις τους είναι παρόμοιες. Εφαρμογές που τρέχουν σε ένα FPGA έχουν ως βασικό προτέρημα την επίδοση τους σε ταχύτητα. Είναι εμφανές πως από τη στιγμή που προγραμματίζουμε ένα FPGA να εκτελεί έναν αλγόριθμο μέσω ενός κυκλώματος βρισκόμαστε πλέον όσο πιο κοντά στο υλικό μπορούμε. Δηλαδή, οι εντολές μας μεταφράζονται κατά κάποιο τρόπο σε ρεύμα σε αντίθεση με μια γλώσσα προγραμματισμού υψηλού 33

35 επιπέδου η οποία πρέπει να περάσει από πολλές μεταφράσεις, παρουσιάζοντας το επονομαζόμενο Overhead 3, μέχρι να καταλήξει σε γλώσσα μηχανής και στη συνέχεια ρεύμα. Τέλος, υπάρχει και άλλη μια λειτουργία των FPGA η οποία είναι η παραγωγή πρωτότυπων για τις εφαρμογές. Δηλαδή ένας οργανισμός που αναπτύσσει ένα καινούριο προϊόν μπορεί να φτιάχνει το πρωτότυπο σε FPGA για εξοικονόμηση χρημάτων αφού δεν θα χρειάζεται να τυπώνει, κάθε φορά που υπάρχει αλλαγή στην σχεδίαση, ένα καινούριο κύκλωμα.. Έτσι λοιπόν, μόλις τελειώσει η σχεδίαση και ανάπτυξη του συστήματος, το τελικό σχέδιο πηγαίνει για μαζικό τύπωμα σε κυκλώματα χαμηλού κόστους για διανομή στην αγορά. 4.3 Η γλώσσα προγραμματισμού VHDL Όπως αναφέραμε προηγουμένως, για να προγραμματίσουμε ένα FPGA χρειαζόμαστε μια γλώσσα περιγραφής υλικού. Η VHDL (VHSIC Hardware Description Language) είναι μια τέτοια γλώσσα. Αυτή η γλώσσα χρησιμοποιείται για να περιγράψει ψηφιακά σήματα και την τοπολογία ενός κυκλώματος, μέσω λογικών πυλών, που θα σχηματίσει σε ένα FPGA. Την περιγραφή αυτή η VHDL μπορεί να την κάνει με δύο τρόπους: I. Βάση της Συμπεριφοράς ενός Συστήματος (Behavioral), όπου ο προγραμματισμός γίνεται με χρήση ροών ελέγχου Δηλαδή ο προγραμματισμός γίνεται με χρήση ροών ελέγχου (IF-Then Statements) II. Βάση της Δομής ενός Συστήματος (Structural), δηλαδή θα έχουμε απλώς ένωση στοιχείων μεταξύ τους μέσω σημάτων. Συνήθως ο προγραμματισμός με κάποια HDL χρησιμοποιεί έναν γραμμικό συνδυασμό αυτών των δύο μεθόδων για ευκολία και καλύτερη οργάνωση του κώδικα. 4.4 Ροή Προγραμματισμού FPGA Όταν προγραμματίζουμε ένα FPGA πρέπει απαραίτητα να περάσουμε από τα εξής βήματα: I. Σχεδιασμός του Συστήματος μέσω της γλώσσας HDL II. Παραγωγή ενός Testbench για την προσομοίωση του συστήματος σε επίπεδο RTL To Testbench γράφεται πάλι σε VHDL και περιγράφει τον τρόπο που θα εξεταστεί το σύστημα που κατασκευάσαμε. Εδώ μπορούμε να θέσουμε αρχικές συνθήκες και να προσομοιώσουμε κάποια αληθινή κατάσταση, όπως για παράδειγμα να εξετάσουμε διαφορετικές συχνότητες ρολογιού. 3 Με τον όρο Overhead εννοείται η επιπρόσθετη κατανάλωση υπολογιστικών πόρων, σε επεξεργαστική ισχύ, σε μνήμη, ή και άλλους πόρους που χρειάζεται για την επίτευξη μιας διεργασίας. 34

36 III. Παραγωγή Σύνθεσης και Εφαρμογής (Synthesis and Implementation) Το βήμα αυτό συνήθως καλείται και σύνθεση λογικής. Εδώ η HDL θα κατασκευάσει γενερικά βασικά εξαρτήματα για να περιγράψει το σύστημα που εμείς έχουμε προγραμματίσει προηγουμένως. IV. Κατέβασμα της Σύνθεσης στο FPGA Στο τελικό στάδιο ο κώδικας κατεβαίνει πάνω στο FPGA και πλέον αυτό είναι έτοιμο να υλοποιήσει το σύστημα που περιγράψαμε αρκεί να του έχουμε και ένα ρολόι να το προχωράει στον χρόνο. 4.5 Το Ολοκληρωμένο περιβάλλον Ανάπτυξης (IDE) ISE WebPack Για την ανάπτυξη της εφαρμογής του ψηφιακού φίλτρου θα χρησιμοποιήσουμε το Ολοκληρωμένο περιβάλλον Ανάπτυξης ISE WebPack το οποίο παρέχει όλες τις λειτουργίες που χρειαζόμαστε ως προγραμματιστές FPGA. Αναλαμβάνει δηλαδή έναν επεξεργαστή κειμένου για την γραφή του κώδικα, μια σχηματική απεικόνιση του κυκλώματος σε RTL που έχουμε φτιάξει καθώς και το περιβάλλον προσομοίωσης. Επίσης, υποστηρίζει την σύνθεση της εφαρμογής για διάφορα είδη FPGA, δίνοντας πολύτιμες πληροφορίες, σχετικά με τις επιδόσεις, για τη συνδεσμολογία που επέτυχε. Τέλος, είναι σε θέση να κατεβάσει την προηγούμενη σύνθεση σε κάποιο FPGA που υποστηρίζεται. 35

37 Κεφάλαιο 5: Σύστημα ψηφιακής επεξεργασίας σήματος φίλτρο FIR 5.1 Ψηφιακή Επεξεργασία Σήματος Ψηφιακά Φίλτρα Τα ψηφιακά φίλτρα είναι συστήματα που χρησιμοποιούνται για την επεξεργασία ψηφιακών δεδομένων. Είναι κομμάτι των DSP (Digital Signal Processing) και λειτουργούν εκτελώντας μαθηματικές πράξεις σε διακριτά σήματα που είναι προϊόντα δειγματοληψίας, μιας διαδικασίας μετατροπής ενός σήματος από το πεδίο συνεχούς χρόνου στο πεδίο των διακριτών τιμών. Ένα χαρακτηριστικό των ψηφιακών φίλτρων είναι η συνάρτηση μεταφοράς, η οποία περιγράφει την απόκριση του φίλτρου για οποιαδήποτε είσοδο. Η συνάρτηση μεταφοράς για ένα αιτιατό, γραμμικό και χρονικά αμετάβλητο φίλτρο δίδεται, στο πεδίο του Ζ, μέσω μετασχηματισμού Ζ 4 από τη σχέση: H(z) = Υ(z) Χ(z) H(ejω ) = Α(e jω )e jαω 5.1 Όπου α R και A(e jω ) πραγματική συνάρτηση του ω. Στο πεδίο του διακριτού χρόνου αυτή η σχέση γίνεται: y(n) = h(n) x(n) = h(k)x(n k) k= 5.2 Όπου (*) η πράξη της συνέλιξης, δηλαδή η μαθηματική πράξη: + + f(n) g(n) = f(m)g(n m) = f(n m)g(m) m= m= 5.3 Ένα άλλο βασικό χαρακτηριστικό ενός ψηφιακού φίλτρου είναι η κρουστική απόκριση. Η απόκριση αυτή περιγράφει το πως θα συμπεριφερθεί το φίλτρο, εάν του δώσουμε για είσοδο την κρουστική συνάρτηση δέλτα του kroenecker. 4 Ο Μετασχηματισμός Ζ είναι ένα μαθηματικό εργαλείο το οποίο μετατρέπει ένα διακριτό σήμα από τιμές πραγματικές και μιγαδικές τιμές στο πεδίο της συχνότητας με μιγαδικούς αριθμούς. Το αντίστοιχο μαθηματικό εργαλείο για συνεχής τιμές είναι ο Μετασχηματισμός Laplace. 36

38 δ(n x) = { 1, n = x 0, n x 5.4 Όπου x είναι ο παράγοντας μετατόπισης της συνάρτησης και n το στοιχείο του χρόνου. Η απόκριση αυτή είναι πολύ σημαντική για τη σχεδίαση των ψηφιακών φίλτρων γιατί μπορεί να μας δώσεις πληροφορίες για τα χαρακτηριστικά του φίλτρου χωρίς να δούμε τα επιμέρους τμήματα από τα οποία είναι κατασκευασμένο. Η κύρια χρήση των ψηφιακών φίλτρων είναι η αποκοπή διαφόρων συχνοτήτων ή ακόμα και μεγάλων ευρών συχνοτήτων που περνούν μέσα από κάποιο κανάλι επικοινωνίας. Το πιο απλό παράδειγμα χρήσης ενός ψηφιακού φίλτρου θα ήταν το τηλεπικοινωνιακό κανάλι το οποίο μεταφέρει ένα φωνητικό σήμα και πρέπει κάπως να αναπαραχθεί. Το φίλτρο θα απέκοπτε τις την πληροφορία που υπάρχει από το σήμα του μεταφορικού μέσου ενώ θα άφηνε μόνο το πληροφοριακό σήμα της φωνής να οδηγηθεί σε κάποιο ηχείο. Με χρήση των παραπάνω μαθηματικών εργαλείων μπορούμε να ορίσουμε τα τριών ειδών βασικά φίλτρα: 1) Χαμηλοπερατό Φίλτρο (Low-Pass Filter - LPF) Πρόκειται για το φίλτρο το οποίο αποκόπτει όλες τις συχνότητες πάνω από μια συχνότητα που έχουμε ορίσει, την επονομαζόμενη συχνότητα αποκοπής f cutoff. 2) Υψιπερατό Φίλτρο (High-Pass Filter HPF) Παρόμοιο με το Χαμηλοπερατό με μόνη διαφορά ότι αποκόπτει τις συχνότητες κάτω από την συχνότητα αποκοπής f cutoff. 3) Ζωνοπερατό Φίλτρο (Band-Pass Filter BPF) Το φίλτρο αυτό έχει το χαρακτηριστικό ότι μπορεί να αποκόπτει ένα εύρος συχνότητας αποκόπτοντας όλες τις υπόλοιπες συχνότητες. Εικόνα 5-1: Συχνοτικές Αποκρίσεις Βασικών Φίλτρων 37

39 Τα τμήματα που το πλάτος της απόκρισης συχνότητας είναι ίσο με 1, καλούνται Ζώνη Διέλευσης, ενώ τα τμήματα στα οποία το πλάτος είναι «0» καλούνται Ζώνη Αποκοπής. Όπως είπαμε προηγουμένως, οι οριακές συχνότητες που σημειώνουν τα άκρα της ζώνης διέλευσης και αποκοπής καλούνται Συχνότητες Αποκοπής (Cutoff Frequency). Τα βασικά δομικά στοιχεία που απαιτούνται για τον προσδιορισμό της εξόδου ενός ψηφιακού δικτυώματος για κάποια χρονική στιγμή n είναι τα εξής, μαζί με τους συμβολισμούς τους σε ένα διάγραμμα βαθμίδας (Block Diagram): 1) Αθροιστές (Adder) 2) Πολλαπλασιαστές (Multipliers) 3) Καθυστερητές (Delays) Εικόνα 5-2: Συμβολισμοί Αθροιστή, Πολλαπλασιαστή και Καθυστερητή Η σχεδίαση και υλοποίηση ψηφιακών φίλτρων είναι μια πολύπλοκη διαδικασία παρόλο που είναι εύκολο να κατανοηθούν και να υπολογιστούν. Επίσης, λόγω του γεγονότος ότι η διαδικασία ψηφιακής επεξεργασίας δεδομένων και η υλοποίηση ψηφιακών φίλτρων απαιτούν μεγάλο όγκο υπολογισμών καθώς και πολύ καλές επιδόσεις σε ταχύτητα, τα συστήματα αυτά είναι κατάλληλοι υποψήφιοι για παράλληλο προγραμματισμό. Υπάρχουν δύο ειδών φίλτρα, τα φίλτρα ανάδρασης και μη ανάδρασης. Συγκεκριμένα, τα φίλτρα ανάδρασης συνήθως αναφέρονται ως Φίλτρα Άπειρης Κρουστικής Απόκρισης (Infinite Impulse Response Filter IIR) ενώ τα μη ανάδρασης ως Φίλτρα Πεπερασμένης Κρουστικής Απόκρισης (Finite Impulse Response Filter -FIR). Η εργασία αυτή θα μελετήσει την σχεδιαστική σύλληψη ενός παράλληλου FIR φίλτρου. 38

40 5.1.2 Το FIR φίλτρο Το φίλτρο FIR (Finite Impulse Response), η αλλιώς Φίλτρο Πεπερασμένης Κρουστικής Απόκρισης, είναι ένα από τα δύο βασικά ψηφιακά φίλτρα που χρησιμοποιούνται στην ψηφιακή επεξεργασία σήματος. Ο πιο συνηθισμένος τρόπος υλοποίησης ενός τέτοιου φίλτρου είναι η ευθεία μορφή στην οποία χρησιμοποιείται μια διακλαδιζόμενη γραμμή καθυστέρησης (Tapped Delay Line) όπως φαίνεται στο παρακάτω σχήμα. Εικόνα 5-3: Σχεδιαστική Μορφή Φίλτρου FIR πηγή: (Wikipedia) Η συνάρτηση μεταφοράς του παραπάνω φίλτρου θα είναι πολυώνυμο του z 1 και θα δίνεται από τη σχέση: N Η(z) = h(n)z n n=0 5.5 Και η έξοδος του, για κάποια είσοδο x(n): N y(n) = h(k)x(n k) k=0 5.5 Για κάθε τιμή του n, ο υπολογισμός του αθροίσματος αυτού απαιτεί (N + 1) πολλαπλασιασμούς και N προσθέσεις. Στο παραπάνω σχήμα φαίνεται ένα υλοποίηση FIR φίλτρου με ευθεία μορφή στην οποία χρησιμοποιείται μια διακλαδιζόμενη γραμμή καθυστέρησης (Tapped Delay Line). Το Ν το ονομάζουμε αριθμό των Taps, οπότε όταν μας ζητείται ένα Ν-tap FIR φίλτρο τότε θέλουμε να φτιάξουμε ένα φίλτρο σαν το παραπάνω το οποίο θα έχει Ν στοιχεία καθυστέρησης. 39

41 Οι αριθμοί που πολλαπλασιάζονται με τις τιμές τις εισόδου ονομάζονται συντελεστές του φίλτρου (Coefficients) και είναι αυτοί οι οποίοι ορίζουν τον τύπο του φίλτρου. Συνήθως οι τιμές αυτές είναι συμμετρικές για [0, Ν 1] και 2 [Ν, Ν] οπότε μπορούμε να βελτιστοποιήσουμε το σχεδιασμό του φίλτρου 2 υλοποιώντας το όπως στο παρακάτω σχήμα: Εικόνα 5-4: Συμμετρικό Ν-Tap FIR Φίλτρο 5.2 Παραγωγή πρωτοτύπου με χρήση Matlab Το εργαλείο Matlab To λογισμικό MATLAB (MATrix LABoratory) είναι ένα σύγχρονο ολοκληρωμένο μαθηματικό πακέτο. Έχει αναπτυχθεί από τη MathWorks ( η οποία το ενημερώνει σε τακτά διαστήματα είτε με νέες εκδόσεις του πακέτου (versions), είτε με νέες εργαλειοθήκες (toolboxes). Αποτελεί ένα διαδραστικό περιβάλλον αριθμητικών υπολογισμών και κατασκευής γραφημάτων. Επιπλέον παρέχει τη δυνατότητα προγραμματισμού στη δική του γλώσσα προγραμματισμού (τη γλώσσα Matlab) καθώς και τη διαχείριση προγραμμάτων γραμμένων σε άλλες γλώσσες προγραμματισμού (C, C++, Java, Fortran, Python). Το MATLAB είναι σχεδιασμένο για την αριθμητική επίλυση προβλημάτων σε αριθμητική πεπερασμένης ακρίβειας (finite-precision arithmetic), δηλαδή βρίσκει μια προσεγγιστική και όχι την ακριβή λύση ενός προβλήματος. Η βασική ιδιότητα του πακέτου MATLAB είναι οι υπολογισμοί με πίνακες. Έχει μεγάλες γραφικές δυνατότητες, ευκολία και ταχύτητα υλοποίησης αλγορίθμων και πολλές έτοιμες συναρτήσεις που υλοποιούνται κυρίως μέσω των εργαλειοθηκών που διαθέτει. Χρησιμοποιείται επίσης για ανάλυση δεδομένων καθώς και σε εφαρμογές από διάφορες θεματικές περιοχές (στατιστική ανάλυση, θεωρία ελέγχου, επεξεργασία σήματος, κ.ά.). 40

42 Το Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών διανέμει δωρεάν στα μέλη του το λογισμικό MATLAB μέσω του Υπολογιστικού Κέντρου του ( Η πιο πρόσφατη έκδοση είναι η R2017a (03/2017) την οποία και θα χρησιμοποιήσουμε Μελέτη του φίλτρου στο εργαλείο Matlab Το εργαλείο Matlab θα χρησιμοποιηθεί για το σκοπό της σχεδίασης του φίλτρου, την κατασκευή μιας πρωτότυπης εφαρμογής του αλλά και ως ένα περιβάλλον μετατροπής αριθμών από το δεκαδικό σύστημα αριθμητικής στο δυαδικό χρησιμοποιώντας αριθμητική κινητής υποδιαστολής. Έτσι λοιπόν, μέσα από το περιβάλλον Matlab θα δημιουργήσουμε ένα υποθετικό σήμα πληροφορίας το οποίο θα είναι γραμμικός συνδυασμός δύο σημάτων διαφορετικών συχνοτήτων. Αφού το μετατρέψουμε σε ψηφιακό θα το περάσουμε μέσα από την προσομοίωση με το FPGA. Η διαδικασία ξεκινάει κατασκευάζοντας το σήμα πληροφορίας. Για την ενέργεια αυτή χρησιμοποιήσαμε το script createwave που φαίνεται στο παράρτημα. Το script αυτό, εκτός του ότι δημιούργησε στο περιβάλλον εργασίας τα απαραίτητα δεδομένα, θα μας οπτικοποιήσει τα αποτελέσματα αυτά. Όπως βλέπουμε παρακάτω, το σήμα Α είναι ένα σήμα χαμηλής συχνότητας, το σήμα Β είναι σήμα υψηλής συχνότητας και το τρίτο σήμα είναι ο γραμμικός συνδυασμός των σημάτων Α και Β. Όλα τα σήματα αυτά ανήκουν στο διακριτό πεδίο του χρόνου και έχουν δειγματοληφθεί με συχνότητα δειγματοληψίας 2kHz. Το επόμενο βήμα της διαδικασίας μελέτης περιλαμβάνει την κατασκευή των συντελεστών του φίλτρου. Για την εργασία αυτήν επιλέχθηκε να μελετηθεί ένα χαμηλοπερατό φίλτρο, δηλαδή ένα φίλτρο το οποίο θα αποκόπτει όλες τις συχνότητες ενός σήματος που θα είναι μεγαλύτερες από μια συχνότητα αποκοπής. Η Matlab περιλαμβάνει στα χαρακτηριστικά της ένα εργαλείο το οποίο μπορεί να κατασκευάσει ένα τέτοιο φίλτρο. Για να φτιάξουμε λοιπόν το φίλτρο θα καλέσουμε το script makefir του παραρτήματος. 41

43 ID Coeff(i) ID Coeff(i) ID Coeff(i) ID Coeff(i) e Εικόνα 5-5: Συντελεστές Χαμηλοπερατού FIR φίλτρου Το συγκεκριμένο script λαμβάνει ως είσοδο τον αριθμό των taps (αριθμός πολλαπλασιασμών στο φίλτρο), τη συχνότητα δειγματοληψίας και την ζητούμενη συχνότητα αποκοπής και παράγει ως έξοδο έναν πίνακα με τους συντελεστές που μας ενδιαφέρουν. Επίσης, είναι δυνατόν να οπτικοποιήσει μερικά από τα χαρακτηριστικά, όπως για παράδειγμα την συχνοτική απόκριση και την κρουστική απόκριση, του φίλτρου που κατασκεύασε όπως φαίνεται στο παρακάτω σχήμα. Στη συνέχεια από τη στιγμή που έχουμε το σήμα που θέλουμε να επεξεργαστούμε και το φίλτρο που κάνει αυτήν την επεξεργασία μένει μόνο να εφαρμόσουμε το σήμα στο φίλτρο. Για να γίνει το παραπάνω, θα πρέπει να μετατρέψουμε τα δεδομένα μας σε αριθμούς κινητής υποδιαστολής. Το αποτέλεσμα αυτό το επιτυγχάνει ένα άλλο εργαλείο της Matlab που λέγεται fi και λαμβάνει ως είσοδο μια τιμή ή ένα πίνακα από τη τιμές και τα μετατρέπει σε αντικείμενα fi που περιέχουν αριθμούς κινητής υποδιαστολής. Το εργαλείο αυτό μπορεί και να γράψει τους αριθμούς που μετέτρεψε στο δυαδικό σύστημα αλλά και σε άλλες μορφές συστήματος που όμως δεν μας απασχολούν για αυτήν την εργασία. 42

44 Εικόνα 5-6: Συχνοτική και Κρουστική Απόκριση Χαμηλοπερατού Φίλτρου FIR Στο παράρτημα υπάρχει το script firfixed το οποίο δέχεται έναν πίνακα από συντελεστές καθώς και ένα σήμα ενώ παράλληλα εφαρμόζει τις πράξεις φιλτραρίσματος που ορίσαμε προηγουμένως. Παρατηρούμε επίσης ότι χρησιμοποιεί και το εργαλείο fi για παραγωγή αριθμών κινητής υποδιαστολής 43

45 οπότε στην ουσία αυτό το script περιγράφει πλήρως το φίλτρο FIR που θέλουμε. Στην παρακάτω εικόνα μπορούμε να κάνουμε ορισμένες παρατηρήσεις: 1) Το σήμα ξεκινάει να είναι εμφανές μετά το 64 ο στοιχείο. Αυτό συμβαίνει γιατί όπως είδαμε προηγουμένως, ένα φίλτρο FIR χρησιμοποιεί τεχνική pipeline και ως εκ τούτου για να μπορέσει να παράξει έξοδο χρειάζεται πληροφορίες από τις προηγούμενες τιμές του. Έτσι λοιπόν, μέχρι το 65 ο στοιχείο δεν θα μπορούσαμε να βγάλουμε αποτέλεσμα γιατί θα επιχειρούσαν οι πράξεις να υπολογίσουν στοιχεία εκτός του πίνακα. 2) Το φίλτρο δούλεψε όπως ήταν αναμενόμενο αφού το σήμα Β έχει αποκοπεί πλήρως από την έξοδο του. Εικόνα 5-7: Αποκοπή σήματος υψηλής συχνότητας μέσω φίλτρου FIR στη Matlab 5.3 Υλοποίηση σε FPGA Η παραπάνω υλοποίηση στην πλατφόρμα Matlab δεν αποτελεί κάτι άλλο παρά μια πρωτότυπη και εύκολη εφαρμογή του φίλτρου σε ένα εύχρηστο περιβάλλον. Για να μπορέσει το φίλτρο αυτό να χρησιμοποιηθεί σε συστήματα με μεγάλες απαιτήσεις απόδοσης ή ακόμα και σε συστήματα πραγματικού χρόνου, πρέπει να εφαρμοστεί σε κάποια πλατφόρμα όπως είναι τα FPGA. Συνεχίζουμε για λίγο να χρησιμοποιούμε την Matlab για να εξάγουμε τις τιμές των συντελεστών του φίλτρου έτσι ώστε να τις εισάγουμε ως δυαδικά σήματα με την γλώσσα VHDL. Επίσης θα 44

46 χρησιμοποιήσουμε το script exportwave για να εξάγουμε τις δυαδικές τιμές του σήματος Α + Β έτσι ώστε να το χρησιμοποιήσουμε ως είσοδο στο Testbench του φίλτρου. ID Binary Coeff(i) ID Binary Coeff(i) ID Binary Coeff(i) ID Binary Coeff(i) ID Binary Coeff(i) Εικόνα 5-8:Δυαδικές τιμές μορφή Q2.14 συντελεστών FIR φίλτρου Όπως φαίνεται στο παράρτημα, με την VHDL περιγράφουμε τα εξαρτήματα που διέπουν αλλά και την συμπεριφορά που θα έχει το φίλτρο. Παρατηρούμε ότι το φίλτρο περιέχει: 1) Είσοδο 16 bit 2) Είσοδο Ρολογιού (Clock) 3) Διακόπτη Enable 4) Διακόπτη RST για να μηδενίσει όλες τις τιμές των καταχωρητών (registers) και να το φέρει σε μια μηδενική, καθαρή κατάσταση. 5) Έξοδο 16 bit των βασικών ψηφίων 6) Έξοδο 16 bit της παραπάνω ακρίβειας λόγο των πολλαπλασιασμών Στην διεργασία process του εξαρτήματος FirSymmetric έχουμε περιγράψει τους καταχωρητές που θα χρησιμοποιεί το φίλτρο. Αυτός ο κώδικας θα μεταφραστεί σε πύλες που θα εφαρμόζουν τα D Flip Flop που αναλύσαμε στο προηγούμενο κεφάλαιο για να επιτύχουν την καθυστέρηση του σήματος. Στο εξάρτημα FirSymmetric υπάρχει και η συνδεσμολογία των εξαρτημάτων των πολλαπλασιαστών και των αθροιστών που χρειάζονται για την περιγραφή του φίλτρου FIR. Στην ουσία, έχουμε περιγράψει τις διασυνδέσεις των καλωδίων που χρειάζονται για να κατασκευαστεί αυτό το φίλτρο. Κατά τη συγγραφή της εργασίας, δεν υπήρχε πρόσβαση σε κάποιο μηχάνημα FPGA για μέτρηση της επίδοσης του συστήματος. Παρόλα αυτά, με το εργαλείο ISE μπορούμε να κάνουμε synthesize το σύστημα για κάποιο μηχάνημα που θέλουμε να στοχεύσουμε και εκείνο θα μας δώσει πληροφορίες για το αν ο κώδικας που γράψαμε «χωράει» να περιγραφεί με τις πύλες που διαθέτει το εν λόγο σύστημα. Επίσης, το εργαλείο ISE μας δίνει πληροφορίες για το τί «Ρολόι» πέτυχε η εφαρμογή. Δηλαδή η εκτίμηση αυτή, υποδηλώνει ότι για κάποια είσοδο ρολογιού μεγαλύτερης ή ίσης συχνότητας με αυτή που αναφέρει, το σύστημα θα ανταποκριθεί στις προδιαγραφές που ορίσαμε. Μέσω της διαδικασίας του Synthesize το εργαλείο ISE ανέφερε ότι πέτυχε ρολόι 3.047ns που μεταφράζεται σε συχνότητα 45

47 MHz. Κάτι τέτοιο αποδεικνύει ότι όντως οι υλοποιήσεις με FPGA είναι πάρα πολύ γρήγορες και ενδείκνυνται για εφαρμογές πραγματικού χρόνου όπως είναι τα ψηφιακά φίλτρα. Για να δούμε ότι το φίλτρο ανταποκρίνεται όπως πρέπει και ότι ο κώδικας μας είναι σωστά γραμμένος πρέπει να δούμε την κρουστική απόκριση του. Για αυτό, κατασκευάζουμε ένα Testbench όπως φαίνεται στο παράρτημα deltabench το οποίο θα περνά μέσα στο φίλτρο την τιμή το οποίο στην αριθμητική κινητής υποδιαστολής αντιπροσωπεύει τον αριθμό ένα. Έτσι, θα περιμένουμε ότι το φίλτρο θα αποκριθεί σε αυτή την έξοδο και θα παράξει ως έξοδο τους συντελεστές του φίλτρου. Πράγματι λοιπόν, με εφαρμογή αυτού του Testbench η έξοδος που δίνει το φίλτρο αυτό είναι οι συντελεστές που έχουμε κάνει hard-code στον κώδικα FirSymmetric του παραρτήματος. 46

48 Εικόνα 5-9: Κρουστική Απόκριση FIR σε FPGA μέσω προσομοίωσης 47

49 Εικόνα 5-10: RTL του FIR φίλτρου, σχηματική απεικόνιση του Pipeline 48

50 Στην προηγούμενη εικόνα, φαίνεται η RTL του φίλτρου. Σε αυτό το σχήμα μπορούμε εύκολα να παρατηρήσουμε την τεχνική pipeline που χρησιμοποιήσαμε. Βλέπουμε δηλαδή πώς από την είσοδο που παίρνει την τωρινή τιμή του σήματος υπάρχουν 63 καταχωρητές (registers) που δρουν ως καθυστερητές και κρατάνε στη μνήμη τους τις προηγούμενες τιμές για τους υπολογισμούς του φίλτρου. Το δεύτερο Testbench που θα τρέξουμε τώρα, θα είναι το Testbench που στο παράρτημα ονομάζεται Testbench Code. Το συγκεκριμένο Testbench αποτελείται από τα εξής process: 1) Εφαρμόζει στην είσοδο το απαραίτητο για την λειτουργία ρολόι (clock) 2) Διαβάζει ένα αρχείο με τις δυαδικές τιμές του σήματος Α + Β που εξήχθησαν προηγουμένως από την Matlab 3) Καταγράφει τις δυαδικές τιμές της εξόδου του φίλτρου σε ένα αρχείο για περεταίρω μελέτη από τη Matlab Εικόνα 5-11: Προσομοίωση εισαγωγής σήματος μέσα από το φίλτρο FIR σε VHDL Τελικά, θα πάρουμε αυτό το αρχείο που παράχθηκε από τον κώδικα Testbench Code και θα γυρίσουμε στο περιβάλλον Matlab. Εκεί κάνουμε την αντίστροφη διαδικασία μετατροπής από δυαδικό αριθμό σε Q2.16 format σε δεκαδικό. Συγκρίνουμε τα δύο αποτελέσματα στο παρακάτω σχήμα. Όπως ήταν αναμενόμενο, το υψίσυχνο σήμα έχει αποκοπεί πλήρως από την έξοδο. 49

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

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

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

"My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch

My Binary Logic Ένας προσομοιωτής λογικών πυλών στο Scratch "My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch Καραγιάννη Ελένη 1, Καραγιαννάκη Μαρία-Ελένη 2, Βασιλειάδης Αθανάσιος 3, Κωστουλίδης Αναστάσιος-Συμεών 4, Μουτεβελίδης Ιωάννης-Παναγιώτης 5,

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

Πληροφορική 2. Αλγόριθμοι

Πληροφορική 2. Αλγόριθμοι Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται

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

9 ο Μαθητικό Συνέδριο Πληροφορικής Κεντρικής Μακεδονίας. "My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch

9 ο Μαθητικό Συνέδριο Πληροφορικής Κεντρικής Μακεδονίας. My Binary Logic Ένας προσομοιωτής λογικών πυλών στο Scratch 9 ο Μαθητικό Συνέδριο Πληροφορικής Κεντρικής Μακεδονίας Θεσσαλονίκη, 25-28 Απριλίου 2017, ΝΟΗΣΙΣ "My Binary Logic" Ένας προσομοιωτής λογικών πυλών στο Scratch Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής

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

Κεφάλαιο 4 : Λογική και Κυκλώματα

Κεφάλαιο 4 : Λογική και Κυκλώματα Κεφάλαιο 4 : Λογική και Κυκλώματα Σύνοψη Τα κυκλώματα που διαθέτουν διακόπτες ροής ηλεκτρικού φορτίου, χρησιμοποιούνται σε διατάξεις που αναπαράγουν λογικές διαδικασίες για τη λήψη αποφάσεων. Στην ενότητα

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

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών

ΠΛΗ10 Κεφάλαιο 2. ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών ΠΛH10 Εισαγωγή στην Πληροφορική: Τόμος Α Κεφάλαιο: 2 2.3 : Αριθμητική περιοχή της ALU 2.5: Κυκλώματα Υπολογιστών Στόχοι Μαθήματος: Να γνωρίσετε τις βασικές αρχές αριθμητικής των Η/Υ. Ποια είναι τα κυκλώματα

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

Πράξεις με δυαδικούς αριθμούς

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

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

ΒΑΣΙΚΕΣ ΑΡΧΕΣ ΨΗΦΙΑΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ. Κεφάλαιο 3

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

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

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

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

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

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

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

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

Δύο είναι οι κύριες αιτίες που μπορούμε να πάρουμε από τον υπολογιστή λανθασμένα αποτελέσματα εξαιτίας των σφαλμάτων στρογγυλοποίησης:

Δύο είναι οι κύριες αιτίες που μπορούμε να πάρουμε από τον υπολογιστή λανθασμένα αποτελέσματα εξαιτίας των σφαλμάτων στρογγυλοποίησης: Ορολογία bit (binary digit): δυαδικό ψηφίο. Τα δυαδικά ψηφία είναι το 0 και το 1 1 byte = 8 bits word: η θεμελιώδης μονάδα σύμφωνα με την οποία εκπροσωπούνται οι πληροφορίες στον υπολογιστή. Αποτελείται

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

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

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

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

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

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

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Κεφάλαιο 3

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

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

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

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

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

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

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

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

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit!

! Εάν ο αριθμός διαθέτει περισσότερα bits, χρησιμοποιούμε μεγαλύτερες δυνάμεις του 2. ! Προσοχή στη θέση του περισσότερο σημαντικού bit! Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 25-6 Πράξεις με δυαδικούς αριθμούς (αριθμητικές ) http://di.ionio.gr/~mistral/tp/csintro/ Αριθμοί Πράξεις με δυαδικούς αριθμούς

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ

ΠΕΡΙΕΧΟΜΕΝΑ. Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος...9 ΚΕΦ. 1. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ - ΚΩΔΙΚΕΣ 1.1 Εισαγωγή...11 1.2 Τα κύρια αριθμητικά Συστήματα...12 1.3 Μετατροπή αριθμών μεταξύ των αριθμητικών συστημάτων...13 1.3.1 Μετατροπή ακέραιων

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

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

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

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

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ. ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ Πληροφορική I "Προγραμματισμός" B. Φερεντίνος

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ ΣΗΜΜΥ, 5 Ο ΕΞΑΜΗΝΟ http://www.cslab.ece.ntua.gr/courses/comparch 1 ΑΡΙΘΜΟΙ Decimal Eύκολο για τον άνθρωπο Ιδιαίτερα για την εκτέλεση αριθμητικών πράξεων

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

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

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

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

Δυαδικό Σύστημα Αρίθμησης

Δυαδικό Σύστημα Αρίθμησης Δυαδικό Σύστημα Αρίθμησης Το δυαδικό σύστημα αρίθμησης χρησιμοποιεί δύο ψηφία. Το 0 και το 1. Τα ψηφία ενός αριθμού στο δυαδικό σύστημα αρίθμησης αντιστοιχίζονται σε δυνάμεις του 2. Μονάδες, δυάδες, τετράδες,

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

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07 Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή

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

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

ΑΡΙΘΜΗΤΙΚΗ ΓΙΑ ΥΠΟΛΟΓΙΣΤΕΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΑΡΙΘΜΗΤΙΚΗ ΓΙΑ ΥΠΟΛΟΓΙΣΤΕΣ ΣΗΜΜΥ, 5 Ο ΕΞΑΜΗΝΟ http://www.cslab.ece.ntua.gr/courses/comparch t / / h 1 ΑΡΙΘΜΟΙ Decimal Eύκολο για τον άνθρωπο Ιδιαίτερα για την εκτέλεση αριθμητικών

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

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών - Μηχανικών Υπολογιστών. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Νεκτάριος Κοζύρης ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ

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

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

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων

K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων K15 Ψηφιακή Λογική Σχεδίαση 7-8: Ανάλυση και σύνθεση συνδυαστικών λογικών κυκλωμάτων Γιάννης Λιαπέρδος TEI Πελοποννήσου Σχολή Τεχνολογικών Εφαρμογών Τμήμα Μηχανικών Πληροφορικής ΤΕ Η έννοια του συνδυαστικού

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

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

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

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

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

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

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

2. ΑΡΙΘΜΗΤΙΚΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. 2.1 Αριθμητικά συστήματα

2. ΑΡΙΘΜΗΤΙΚΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ. 2.1 Αριθμητικά συστήματα 2. ΑΡΙΘΜΗΤΙΚΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ 2.1 Αριθμητικά συστήματα Κάθε πραγματικός αριθμός χ μπορεί να παρασταθεί σε ένα αριθμητικό σύστημα με βάση β>1 με μια δυναμοσειρά της μορφής, -οο * = ± Σ ψ β " (2 1) η - ν

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

Πρόβλημα 29 / σελίδα 28

Πρόβλημα 29 / σελίδα 28 Πρόβλημα 29 / σελίδα 28 Πρόβλημα 30 / σελίδα 28 Αντιμετάθεση / σελίδα 10 Να γράψετε αλγόριθμο, οποίος θα διαβάζει τα περιεχόμενα δύο μεταβλητών Α και Β, στη συνέχεια να αντιμεταθέτει τα περιεχόμενά τους

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

24-Μαρ-2009 ΗΜΥ Φίλτρα απόκρισης πεπερασμένου παλμού (FIR)

24-Μαρ-2009 ΗΜΥ Φίλτρα απόκρισης πεπερασμένου παλμού (FIR) 4-Μαρ-009 ΗΜΥ 49 5. Φίλτρα απόκρισης πεπερασμένου παλμού FIR 5. FIR Φίλτρα Ειδικά θέματα σχεδιασμού FIR: Half-bad FIR 4-Μαρ-009 Σχεδόν οι μισοί συντελεστές 0 μείωση υπολογιστικού κόστους κατά. Ιδιαίτερα

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

Κεφάλαιο 2 Η έννοια και η παράσταση της πληροφορίας στον ΗΥ. Εφ. Πληροφορικής Κεφ. 2 Καραμαούνας Πολύκαρπος 1

Κεφάλαιο 2 Η έννοια και η παράσταση της πληροφορίας στον ΗΥ. Εφ. Πληροφορικής Κεφ. 2 Καραμαούνας Πολύκαρπος 1 Κεφάλαιο 2 Η έννοια και η παράσταση της πληροφορίας στον ΗΥ Καραμαούνας Πολύκαρπος 1 2.1Η έννοια της πληροφορίας Δεδομένα Πληροφορία Καραμαούνας Πολύκαρπος 2 2.2 ΗΥ Το βασικό εργαλείο επεξεργασίας και

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

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

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

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

σύνθεση και απλοποίησή τους θεωρήµατα της άλγεβρας Boole, αξιώµατα του Huntington, κλπ.

σύνθεση και απλοποίησή τους θεωρήµατα της άλγεβρας Boole, αξιώµατα του Huntington, κλπ. Εισαγωγή Εργαστήριο 2 ΛΟΓΙΚΑ ΚΥΚΛΩΜΑΤΑ Σκοπός του εργαστηρίου είναι να κατανοήσουµε τον τρόπο µε τον οποίο εκφράζεται η ψηφιακή λογική υλοποιώντας ασκήσεις απλά και σύνθετα λογικά κυκλώµατα (χρήση του

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

a -j a 5 a 4 a 3 a 2 a 1 a 0, a -1 a -2 a -3

a -j a 5 a 4 a 3 a 2 a 1 a 0, a -1 a -2 a -3 ΑΣΚΗΣΗ 5 ΑΘΡΟΙΣΤΕΣ - ΑΦΑΙΡΕΤΕΣ 5.1. ΣΚΟΠΟΣ Η πραγματοποίηση της αριθμητικής πρόσθεσης και αφαίρεσης με λογικά κυκλώματα. 5.2. ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ: Κάθε σύστημα αρίθμησης χαρακτηρίζεται

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

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

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

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

Γ2.1 Στοιχεία Αρχιτεκτονικής. Γ Λυκείου Κατεύθυνσης

Γ2.1 Στοιχεία Αρχιτεκτονικής. Γ Λυκείου Κατεύθυνσης Γ2.1 Στοιχεία Αρχιτεκτονικής Γ Λυκείου Κατεύθυνσης Ορισμός άλγεβρας Boole Η άλγεβρα Boole ορίζεται, ως μία αλγεβρική δομή A, όπου: (α) Το Α είναι ένα σύνολο στοιχείων που περιέχει δύο τουλάχιστον στοιχεία

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30

ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 2. ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ...30 ΠΕΡΙΕΧΟΜΕΝΑ ΜΕΡΟΣ Α : ΘΕΜΑΤΑ ΒΑΣΗΣ 1. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ...11 1.1 Τι είναι Πληροφορική;...11 1.1.1 Τι είναι η Πληροφορική;...12 1.1.2 Τι είναι ο Υπολογιστής;...14 1.1.3 Τι είναι το Υλικό και το

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

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

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

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

Εισαγωγή στην επιστήμη των υπολογιστών. Πράξεις με μπιτ

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

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

Η κανονική μορφή της συνάρτησης που υλοποιείται με τον προηγούμενο πίνακα αληθείας σε μορφή ελαχιστόρων είναι η Q = [A].

Η κανονική μορφή της συνάρτησης που υλοποιείται με τον προηγούμενο πίνακα αληθείας σε μορφή ελαχιστόρων είναι η Q = [A]. Κανονική μορφή συνάρτησης λογικής 5. Η κανονική μορφή μιας λογικής συνάρτησης (ΛΣ) ως άθροισμα ελαχιστόρων, από τον πίνακα αληθείας προκύπτει ως εξής: ) Παράγουμε ένα [A] όρων από την κάθε σειρά για την

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

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

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

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

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές 12 ο Μάθημα Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ E-mail: leo@mail.ntua.gr URL: http://users.ntua.gr/leo 1 GROUP I A Λ ΤΡΙΤΗ PC-Lab GROUP IΙ Μ Ω ΠΑΡΑΣΚΕΥΗ Central Κέντρο

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

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

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ΗΜΥ 00 Εισαγωγή στην Τεχνολογία Στέλιος Τιμοθέου ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΑ ΘΕΜΑΤΑ ΜΑΣ ΣΗΜΕΡΑ Δυαδική λογική Πύλες AND, OR, NOT, NAND,

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ 1) Πότε χρησιμοποιείται η δομή επανάληψης

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

Δύο είναι οι κύριες αιτίες που μπορούμε να πάρουμε από τον υπολογιστή λανθασμένα αποτελέσματα εξαιτίας των σφαλμάτων στρογγυλοποίησης:

Δύο είναι οι κύριες αιτίες που μπορούμε να πάρουμε από τον υπολογιστή λανθασμένα αποτελέσματα εξαιτίας των σφαλμάτων στρογγυλοποίησης: Ορολογία bit (binary digit): δυαδικό ψηφίο. Τα δυαδικά ψηφία είναι το 0 και το 1 1 byte = 8 bits word: η θεμελιώδης μονάδα σύμφωνα με την οποία εκπροσωπούνται οι πληροφορίες στον υπολογιστή. Αποτελείται

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Φεβρουάριος/Μάρτιος 2013 v. 0.1 Master-mind: κανόνες παιχνιδιού Στο master mind χρειάζεται να παράγονται κάθε φορά 4 τυχαία σύμβολα από ένα πλήθος 6 διαφορετικών

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006 Μάθημα : Ψηφιακά Ηλεκτρονικά Τεχνολογία ΙΙ, Θεωρητικής Κατεύθυνσης Ημερομηνία

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

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

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

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

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

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

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

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

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

Λογικός Σχεδιασµός και Σχεδιασµός Η/Υ. ΗΜΥ-210: Εαρινό Εξάµηνο Σκοπός του µαθήµατος. Ψηφιακά Συστήµατα. Περίληψη. Εύρος Τάσης (Voltage(

Λογικός Σχεδιασµός και Σχεδιασµός Η/Υ. ΗΜΥ-210: Εαρινό Εξάµηνο Σκοπός του µαθήµατος. Ψηφιακά Συστήµατα. Περίληψη. Εύρος Τάσης (Voltage( ΗΜΥ-210: Λογικός Σχεδιασµός Εαρινό Εξάµηνο 2005 Σκοπός του µαθήµατος Λογικός Σχεδιασµός και Σχεδιασµός Η/Υ Κεφάλαιο 1: Υπολογιστές και Πληροφορία (1.1-1.2) Βασικές έννοιες & εργαλεία που χρησιµοποιούνται

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ 2 Ο ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΠΟΣΤΟΛΙΑ ΠΑΓΓΕ Υπολογιστής Συνοπτικό λεξικό Οξφόρδης -> «ηλεκτρονική υπολογιστική μηχανή»

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή

Κεφάλαιο 2. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας. Περιεχόμενα. 2.1 Αριθμητικά Συστήματα. Εισαγωγή Κεφάλαιο. Συστήματα Αρίθμησης και Αναπαράσταση Πληροφορίας Περιεχόμενα. Αριθμητικά συστήματα. Μετατροπή αριθμών από ένα σύστημα σε άλλο.3 Πράξεις στο δυαδικό σύστημα.4 Πράξεις στο δεκαεξαδικό σύστημα.5

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κ. Δεμέστιχας Εργαστήριο Πληροφορικής Γεωπονικό Πανεπιστήμιο Αθηνών Επικοινωνία μέσω e-mail: cdemest@aua.gr, cdemest@cn.ntua.gr 1 5. ΑΛΓΕΒΡΑ BOOLE ΛΟΓΙΚΗ ΣΧΕΔΙΑΣΗ ΜΕΡΟΣ Β 2 Επαναληπτική

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

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή

6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή 6 η Θεµατική Ενότητα : Σχεδίαση Συστηµάτων σε Επίπεδο Καταχωρητή Εισαγωγή Η σχεδίαση ενός ψηφιακού συστήµατος ως ακολουθιακή µηχανή είναι εξαιρετικά δύσκολη Τµηµατοποίηση σε υποσυστήµατα µε δοµικές µονάδες:

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

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

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

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

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

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

ΑΣΚΗΣΗ 9. Tα Flip-Flop

ΑΣΚΗΣΗ 9. Tα Flip-Flop ΑΣΚΗΣΗ 9 Tα Flip-Flop 9.1. ΣΚΟΠΟΣ Η κατανόηση της λειτουργίας των στοιχείων μνήμης των ψηφιακών κυκλωμάτων. Τα δομικά στοιχεία μνήμης είναι οι μανδαλωτές (latches) και τα Flip-Flop. 9.2. ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

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

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Υπολογιστές και Δεδομένα Κεφάλαιο 3ο Αναπαράσταση Αριθμών www.di.uoa.gr/~organosi 1 Δεκαδικό και Δυαδικό Δεκαδικό σύστημα 2 3 Δεκαδικό και Δυαδικό Δυαδικό Σύστημα

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

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017 Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017 Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα καταστάσεων,

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

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Βασικές Έννοιες Προγραμματισμού. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Βασικές Έννοιες Προγραμματισμού Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD Αριθμητικά συστήματα Υπάρχουν 10 τύποι ανθρώπων: Αυτοί

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

Πράξεις με δυαδικούς αριθμούς

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

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

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Αναπαράσταση Αριθμών

Τμήμα Οικιακής Οικονομίας και Οικολογίας. Αναπαράσταση Αριθμών Αναπαράσταση Αριθμών Δεκαδικό και Δυαδικό Δεκαδικό σύστημα Δεκαδικό και Δυαδικό Μετατροπή Για τη μετατροπή ενός αριθμού από το δυαδικό σύστημα στο δεκαδικό, πολλαπλασιάζουμε κάθε δυαδικό ψηφίο του αριθμού

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

Αριθμητική Ανάλυση & Εφαρμογές

Αριθμητική Ανάλυση & Εφαρμογές Αριθμητική Ανάλυση & Εφαρμογές Διδάσκων: Δημήτριος Ι. Φωτιάδης Τμήμα Μηχανικών Επιστήμης Υλικών Ιωάννινα 2017-2018 Υπολογισμοί και Σφάλματα Παράσταση Πραγματικών Αριθμών Συστήματα Αριθμών Παράσταση Ακέραιου

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

Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level)

Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level) Επίπεδο Ψηφιακής Λογικής (The Digital Logic Level) Απαντήσεις 1. Η παραγγελία είναι σάντουιτς ή ένα σουβλάκι και τηγανητές πατάτες η οποία μπορεί να αναλυθεί ως σάντουιτς ή (σουβλάκι και τηγανητές πατάτες)

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

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

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

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

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

ΗΜΜΥ 100 Εισαγωγή στην Τεχνολογία University of Cyprus ptical Diagnostics ΗΜΜΥ 100 Εισαγωγή στην Τεχνολογία Διάλεξη 14 60 MB RAM κι όμως με ξέχασες! Ομαδική Εργασία 4 Η Στόχοι και Διαδικασία Καθορίστε Τον σκοπό και τους στόχους Τη διαδικασία

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

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

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

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

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

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

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

Θέματα Προγραμματισμού Η/Υ

Θέματα Προγραμματισμού Η/Υ Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 1: Εισαγωγή Θεματική Ενότητα: Εισαγωγή στον Προγραμματισμό ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της; 1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες (μορφές) της; Η δομή επανάληψης χρησιμοποιείται όταν μια σειρά εντολών πρέπει να εκτελεστεί σε ένα σύνολο περιπτώσεων, που έχουν κάτι

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Κ. Δεμέστιχας Εργαστήριο Πληροφορικής Γεωπονικό Πανεπιστήμιο Αθηνών Επικοινωνία μέσω e-mail: cdemest@aua.gr, cdemest@cn.ntua.gr 3. ΑΡΙΘΜΗΤΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ ΜΕΡΟΣ Β Παράσταση Προσημασμένων

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

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

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

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

Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL

Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL 3.1 Εισαγωγή στα FLIP FLOP 3.1.1 Θεωρητικό Υπόβαθρο Τα σύγχρονα ακολουθιακά κυκλώματα με τα οποία θα ασχοληθούμε στο εργαστήριο των Ψηφιακών συστημάτων

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

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Αναπαράσταση Δεδομένων ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική Αναπαράσταση δεδομένων Κατάλληλη συμβολική αναπαράσταση δεδομένων, για απλοποίηση βασικών πράξεων, όπως πρόσθεση Πόσο εύκολο είναι

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

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

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

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

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

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ ΑΣΠΑΙΤΕ ΤΜΗΜΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΗΛΕΚΤΡΟΛΟΓΙΑΣ & ΗΛΕΚΤΡΟΝΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ & μ-υπολογιστων ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΕΙΡΙΑΚΗ ΠΡΟΣΘΕΣΗ Θεωρητικό Μέρος Οι σειριακές λειτουργίες είναι πιο

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

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

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

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

Βασική δοµή και Λειτουργία Υπολογιστή

Βασική δοµή και Λειτουργία Υπολογιστή Βασική δοµή και Λειτουργία Υπολογιστή Η τεχνολογία των Η/Υ έχει βασιστεί στη λειτουργία του ανθρώπινου οργανισµού. Οπως ο άνθρωπος πέρνει εξωτερικά ερεθίσµατα από το περιβάλλον τα επεξεργάζεται και αντιδρά

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

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

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

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

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΧΗΜΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΙΚΟ ΚΕΝΤΡΟ Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού Μάθημα 9ο Aντώνης Σπυρόπουλος Σφάλματα στρογγυλοποίησης

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012 ΘΕΜΑ Α Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις: 1. Κάθε βρόγχος που υλοποιείται με την εντολή Για μπορεί να

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

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

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

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

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

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

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

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

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

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

Ελίνα Μακρή

Ελίνα Μακρή Ελίνα Μακρή elmak@unipi.gr Μετατροπή Αριθμητικών Συστημάτων Πράξεις στα Αριθμητικά Συστήματα Σχεδίαση Ψηφιακών Κυκλωμάτων με Logism Άλγεβρα Boole Λογικές Πύλες (AND, OR, NOT, NAND, XOR) Flip Flops (D,

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

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΑΡΑΓΚΙΑΟΥΡΗΣ ΝΙΚΟΛΑΟΣ

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

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

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα επαναληπτικής εξέτασης 2016 Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα καταστάσεων,

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

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2016 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2016 ΤΕΧΝΟΛΟΓΙΑ (ΙΙ) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΠΡΑΚΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Τεχνολογία και

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

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

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

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