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

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

Download "ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ"

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Μελέτη και σύγκριση βασικών πράξεων βάσεων δεδοµένων σε µονάδες επεξεργασίας γραφικών ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ της Μέντα Βαρβάρας ΑΕΜ 1679 ΕΠΙΒΛΕΠΩΝ Αναστάσιος Γούναρης, Λέκτορας Θεσσαλονίκη, 2011

2 Ευχαριστίες Η µελέτη και υλοποίηση της εργασίας κατέστη δυνατή χάρη στην πολύτιµη βοήθεια και υποστήριξη του καθηγητή Αναστάσιου Γούναρη, τον οποίο ευχαριστώ θερµά για την υποµονή και καθοδήγηση που µου προσέφερε. Επιπροσθέτως, θα ήθελα να ευχαριστήσω το Α.Π.Θ. και το τµήµα Πληροφορικής για το ευρύ φάσµα γνώσεων που µου παρείχε, το οποίο µε βοήθησε στην ανάπτυξη µίας συνολικής εικόνας, κριτικής σκέψης και ικανότητας να εµβαθύνω στον τοµέα που µε ενδιαφέρει περισσότερο. 2

3 Πρόλογος Αντικείµενο της παρούσας εργασίας είναι αφενός µεν η µελέτη και παρουσίαση των βασικών χαρακτηριστικών των σύγχρονων µονάδων επεξεργασίας γραφικών (Graphical Processor Units ) και του προγραµµατιστικού µοντέλου τους, αφετέρου δε η σύγκριση της απόδοσης πράξεων σύνδεσης και οµαδοποίησης, υλοποιηµένες σε σύστηµα βάσεων δεδοµένων έναντι αντίστοιχων πράξεων υλοποιηµένων µε χρήση του πλαισίου mapreduce. Σηµειώνεται, επίσης, ότι κατά την εκτέλεση των προγραµµάτων, υπάρχει επικοινωνία µεταξύ της GPU και της CPU. Πιο συγκεκριµένα, κατά την επικοινωνία αυτή, η εκτέλεση των προγραµµάτων γίνεται εκ περιτροπής µεταξύ των δύο µονάδων επεξεργασίας, µε στόχο την βελτιστοποίηση της απόδοσής τους. 3

4 ΠΕΡΙΕΧΟΜΕΝΑ Κεφάλαιο 1 Εισαγωγή Κεφάλαιο 2 Οι σύγχρονες µονάδες επεξεργασίας γραφικών και το προγραµµατιστικό τους περιβάλλον Ιστορική εξέλιξη Η αρχιτεκτονική των σύγχρονων µονάδων επεξεργασίας γραφικών Το προγραµµατιστικό µοντέλο της CUDA Cuda C - µια επέκταση της C Συναρτήσεις πυρήνα Ιεραρχία νηµάτων Ιεραρχία µνήµης Η καθολική µνήµη Η τοπική µνήµη Η κοινόχρηστη µνήµη Η µνήµη σταθερών Η µνήµη υφής

5 Σύνοψη ειδών µνήµης Το εύρος ζώνης της µνήµης Κεφάλαιο3 Το σύστηµα GDB Οι αρχέτυπες συναρτήσεις Η συνάρτηση map Οι συναρτήσεις scatter και gather Η συνάρτηση prefix scan Η συνάρτηση split Η συνάρτηση sort Οι αλγόριθµοι σύνδεσης Ο αλγόριθµος σύνδεσης µε ταξινόµηση και συγχώνευση Ο αλγόριθµος σύνδεσης µε κατακερµατισµό Σύνοψη Κεφάλαιο4 Το πλαίσιο Map-Reduce σε GPU Οι αρχέτυπες συναρτήσεις map και reduce ιεπαφές εφαρµογών προγραµµατισµού

6 4.3 Ροή λειτουργίας συστήµατος Λεπτοµέρειες υλοποίησης Αλγορίθµου σύνδεσης δύο δρόµων Αλγόριθµος οµαδοποίησης Κεφάλαιο 5 Μετρήσεις - Πειράµατα Πειράµατα των αλγορίθµων του συστήµατος GDB Αλγόριθµος σύνδεσης µε κατακερµατισµό Αλγόριθµος σύνδεσης µε ταξινόµηση και συγχώνευση Αλγόριθµος οµαδοποίησης ιαγράµµατα µεγέθους δεδοµένων ίσο µε 16ΜΒ ιαγράµµατα µεγέθους δεδοµένων ίσο µε 128ΜΒ Πειράµατα των αλγορίθµων του συστήµατος Mars ιαγράµµατα του αλγορίθµου σύνδεσης δύο δρόµων για µέγεθος δεδοµένων 128ΜΒ ιαγράµµατα του αλγορίθµου οµαδοποίησης για µέγεθος δεδοµένων 128ΜΒ Γενικά συµπεράσµατα Κεφάλαιο6 Συµπεράσµατα

7 Παράρτηµα Α: Εγκατάσταση του συστήµατος GDB Παράρτηµα Β: Αλγόριθµος σύνδεσης δύο δρόµων Παράρτηµα Γ: Αλγόριθµος οµαδοποίησης Αναφορές Ευρετήριο

8 Κ ε φ ά λ α ι ο 1 Εισαγωγή Στις µέρες µας, ο τοµέας των µονάδων επεξεργασίας γραφικών γνωρίζει µεγάλη ανάπτυξη και ευρεία χρήση. Μια µονάδα επεξεργασίας γραφικών ή GPU [1] (περιστασιακά ονοµάζεται και οπτική µονάδα επεξεργασίας ή VPU) είναι ένα εξειδικευµένο κύκλωµα σχεδιασµένο για τον άµεσο χειρισµό της µνήµης µε τέτοιο τρόπο, ώστε να επιταχύνει τη δηµιουργία εικόνων που προορίζονται για εµφάνιση στην οθόνη. Οι GPU s χρησιµοποιούνται σε ενσωµατωµένα συστήµατα, κινητά τηλέφωνα, προσωπικούς υπολογιστές, σταθµούς εργασίας, και κονσόλες παιχνιδιών. Οι σύγχρονες GPU s είναι πολύ αποδοτικές στο χειρισµό γραφικών του υπολογιστή. Η ιδιαίτερα παράλληλη δοµή των σύγχρονων GPU s τις καθιστά πιο αποτελεσµατικές από τις γενικού σκοπού CPU s για αλγόριθµους στους οποίους η επεξεργασία µεγάλων συνόλων δεδοµένων γίνεται παράλληλα. Το γεγονός αυτό αποτέλεσε καταλυτικό παράγοντα έµπνευσης της γενικής χρήσης των νοµάδων επεξεργασίας γραφικών από τον Mark Harris το 2002 µε τον όρο GPGPU [1] (General-Purpose computing on Graphics Processing Units, αναφέρεται επίσης ως GPGP ή GP²U). Ωστόσο, η έκρηξη των ερευνών και της χρήσης της GPGPU σηµειώθηκε το 2007 µε την εισαγωγή της αρχιτεκτονική και του προγραµµατιστικό µοντέλο της CUDA (Compute Unified Device Architecture) από την NVIDIA. Να σηµειωθεί ότι η CUDA είναι µία συνεχώς εξελισσόµενη τεχνολογία καθώς συνεχώς αλλάζει ο τρόπος λειτουργίας τους και προστίθενται νέες δυνατότητες χρήσης των GPU. Μέσα σε αυτήν την έκρηξη ερευνών έρχεται να προστεθεί η παρούσα εργασία στην οποία αφού ερευνήθηκε η αρχιτεκτονική και το προγραµµατιστικό µοντέλο της CUDA 2.3, έπειτα µελετήθηκαν και συγκρίθηκαν βασικοί αλγόριθµοι δύο συστηµάτων τα οποίοι χρησιµοποιούν την CUDA. Παρακάτω δίνεται µία µικρή εισαγωγή των αιτιών δηµιουργίας των συστηµάτων αυτών καθώς και σύντοµη περιγραφή τους. Τα τελευταία χρόνια, οι επιχειρήσεις, τα πανεπιστήµια, οι τράπεζες και πολλοί ακόµα οργανισµοί χρησιµοποιούν συστήµατα διαχείρισης βάσεων δεδοµένων. Με τον όρο βάση δεδοµένων εννοείται µία συλλογή από συστηµατικά οργανωµένα και σχετιζόµενα δεδοµένα. Το λογισµικό µέσω του οποίου γίνεται η δηµιουργία, η διαχείριση, η συντήρηση 8

9 και η χρήση µιας ηλεκτρονικής βάσης δεδοµένων[1] ονοµάζεται Σύστηµα ιαχείρισης Βάσης εδοµένων (Σ Β ) γνωστό ως Database Management system (DBMS). Τα συστήµατα διαχείρισης βάσεων δεδοµένων χρησιµοποιούν συνηθισµένες µεθόδους καταλογοποίησης, ανάκτησης, και εκτέλεσης ερωτηµάτων σχετικών µε τα δεδοµένα. Μεταξύ αυτών των µεθόδων βρίσκονται η σύνδεση και η οµαδοποίηση δεδοµένων µε τις οποίες ασχολείται η παρούσα εργασία. Η µέθοδος της σύνδεσης υπολογίζει ένα υποσύνολο του καρτεσιανού γινοµένου, αναλόγως µε την τιµή που έχουν κάποια χαρακτηριστικά των δεδοµένων. Η µέθοδος της οµαδοποίησης, οµαδοποιεί τα δεδοµένα που επιστρέφονται ως απάντηση στα ερωτήµατα του χρήστη. Την τελευταία δεκαετία το πλήθος των δεδο- µένων που αποθηκεύονται στα Σ Β αυξάνεται ραγδαία, µε αποτέλεσµα οι µέθοδοι διαχείρισης τους να έχουν γίνει υπολογιστικά και χρονικά απαιτητικές. Εκτός από τα Σ Β, απαιτητικές εφαρµογές αποτελούν και οι εφαρµογές του διαδικτύου, όπως για παράδειγµα οι µηχανές αναζήτησης. Οι εφαρµογές του διαδικτύου συνήθως εκτελούν εργασίες σχετικές µε την επεξεργασία δεδοµένων, για παράδειγµα καταχώρηση ιστοσελίδων και µέτρηση της συχνότητας επισκεψιµότητας. Λόγω της κρισιµότητας του χρόνου αυτών των καθηκόντων που εκτελούνται σε καθηµερινή βάση και της µεγάλης ποσότητας δεδοµένων, οι υψηλές επιδόσεις είναι ουσιαστικής σηµασίας. Επιπροσθέτως, λόγω της πολυπλοκότητας αυτών των εργασιών και της ετερογένειας των διαθέσιµων υπολογιστικών πόρων, είναι επιθυµητό να προβλεφθεί ένα αφηρηµένο πλαίσιο για να εφαρµόζονται οι υπολογισµοί σωστά, αποτελεσµατικά και εύκολα. Το πλαίσιο Map-Reduce [1] είναι ένα επιτυχηµένο παράδειγµα για την υποστήριξη τέτοιου είδους υπολογισµών. Προτάθηκε από την Google το 2004 για την ευκολία της ανάπτυξης εφαρµογών αναζήτησης ιστοσελίδων σε ένα µεγάλο αριθµό µηχανηµάτων. Το πλαίσιο αυτό παρέχει δύο πρωτόγονες πράξεις: µια συνάρτηση αντιστοίχισης (map) για την επεξεργασία ζευγών τιµής-κλειδιού ως δεδοµένα εισόδου, την δηµιουργία ενδιάµεσων ζευγών κλειδιού-τιµής και µια συνάρτηση µείωσης (reduce) για την συγχώνευση των ενδιάµεσων ζευγαριών που έχουν το ίδιο κλειδί. Παρόλο που το πλαίσιο Map-Reduce υπόσχεται καλύτερη απόδοση σε σχέση µε τα Σ Β, καθώς αυξάνεται συνεχώς ο όγκος των δεδοµένων αλλά και καθώς βελτιώνεται το υλικό µέρος των υπολογιστών γίνεται αναγκαία η περαιτέρω έρευνα σε νέα συστήµατα. Σκοπός της εργασίας είναι η εντριβή µε τον προγραµµατισµό σε µονάδες επεξεργασίας γραφικών, δηλαδή η µελέτη και η ανάλυση της αρχιτεκτονικής των µονάδων επεξεργασίας γραφικών και του προγραµµατιστικού µοντέλου τους. Εκ παραλλήλου, θα προβληθεί η 9

10 παρουσίαση ενός Σ Β και ενός πλαισίου map-reduce τα οποία χρησιµοποιούν τις δυνατότητες των GPU. Τα συστήµατα αυτά ονοµάζονται GDB και MARS αντίστοιχα. Ακόµη θα παρουσιαστεί η υλοποίηση ενός αλγορίθµου σύνδεσης και ενός αλγορίθµου οµαδοποίησης κάνοντας χρήση του πλαισίου MARS. Απώτερος σκοπός της εργασίας είναι η σύγκριση των αλγορίθµων σύνδεσης και οµαδοποίησης οι οποίοι υλοποιούνται στα παραπάνω συστήµατα. Παρακάτω παρουσιάζεται η διαρθρωτική δοµή της εργασίας. Αναλυτικότερα, στο δεύτερο κεφάλαιο θα περιγραφούν τα βασικά χαρακτηριστικά των σύγχρονων µονάδων επεξεργασίας γραφικών και του προγραµµατιστικού τους περιβάλλοντος. Αρχικά, θα γίνει αναδροµή στην εξέλιξη των µονάδων επεξεργασίας γραφικών και της αρχιτεκτονικής των σύγχρονων µονάδων επεξεργασίας γραφικών. Σηµειώνεται εδώ ότι η αρχιτεκτονική που µελετήθηκε και της οποίας τα χαρακτηριστικά της οποία παρουσιάζονται στην παρούσα εργασία, είναι η αρχιτεκτονική καρτών γραφικών GT200. Έπειτα, παρουσιάζονται τα χαρακτηριστικά του προγραµµατιστικού µοντέλου της CUDA C το οποίο από-τελεί µια επέκταση της γλώσσας προγραµµατισµού C. Στο τρίτο κεφάλαιο παρουσιάζεται το σύστηµα GDB. Στην αρχή αναλύονται οι αρχέτυπες συναρτήσεις τις οποίες υλοποιεί. Αµέσως µετά παρουσιάζονται οι βελτιστοποιήσεις µνήµης που έχουν σχεδιαστεί για την αποδοτικότερη λειτουργία του συστήµατος. Στο τέλος του κεφαλαίου παρουσιάζονται οι βασικοί αλγόριθµοι σύνδεσης για το συγκεκριµένο σύστηµα. Στο τέταρτο κεφάλαιο µελετάται η σχεδίαση και η υλοποίηση του πλαισίου Mars. Έπειτα, αναλύονται ορισµένες λεπτοµέρειες της υλοποίησης καθώς και τεχνικές βελτιστοποίησης. Στο πέρας του κεφαλαίου αναλύονται οι αλγόριθµοι σύνδεσης και οµαδοποίησης. Στο πέµπτο κεφάλαιο παρουσιάζεται η σύγκριση των αλγορίθµων. Για την υλοποίηση της σύγκρισης πραγµατοποιήθηκαν πειράµατα τα οποία έχουν εκτελεστεί σε υπολογιστή µε την κάρτα γραφικών NVIDIA GeForce 9600 GT και κεντρική µονάδα επεξεργασίας της Intel διπλού πυρήνα. Για την σύγκριση των αλγορίθµων υπολογίστηκαν τα αριθµητικά περιγραφικά µέτρα της µέσης τιµής και της τυπικής απόκλισης των χρόνων εκτέλεσης των αλγορίθµων για σύνολα δεδοµένων µεγέθους 16MB, 32MB, 64MB και 128MB. Στο πέρας της εργασίας αναφέρονται τα γενικά συµπεράσµατα που προέκυψαν από την διατριβή µου µε το συγκεκριµένο θέµα. Επιπλέον, παρατίθενται ο κώδικας των αλγορίθµων όπου ανέπτυξα, η βιβλιογραφία την οποία συµβουλεύτηκα και ένα ευρετήριο στο οποίο αναλύονται αγγλικές ορολογίες οι οποίες χρησιµοποιούνται παρακάτω. 10

11 Κ ε φ ά λ α ι ο 2 Σύγχρονες µονάδες επεξεργασίας γραφικών και το προγραµµατιστικό τους περιβάλλον Οι γενικού σκοπού υπολογισµοί σε µονάδες επεξεργασίας γραφικών, γνωστές ως GPGPU, αποτελούν µια τεχνική χρήσης της GPU, η οποία συνήθως κάνει υπολογισµούς µόνο για γραφικά υπολογιστών, µε την οποία εκτελούνται υπολογισµοί σε εφαρµογές που παραδοσιακά χειρίζονται από την κεντρική µονάδα επεξεργασίας [1]. Αυτό καθίσταται δυνατό µε την προσθήκη προγραµµατιζόµενων σταδίων και αριθµητική υψηλής ακρίβειας στην αλυσίδα παραγωγής γραφικών, κάτι που επιτρέπει στους προγραµµατιστές να χρησιµοποιούν επεξεργασία ρεύµατος (streaming) σε δεδοµένα που δεν αφορούν τα γραφικά. Επιπλέον, η χρήση πολλαπλών καρτών γραφικών σε έναν υπολογιστή ή σε µεγάλο αριθµό κυκλώµατα γραφικών, δίνει πρόσθετη παραλληλοποίηση στην ήδη παραλληλοποίησιµη διαδικασία της επεξεργασίας γραφικών. 2.1 Ιστορική εξέλιξη των µονάδων επεξεργασίας γραφικών Το πρώτο βήµα για την εξέλιξη των καρτών γραφικών ήταν να αναγνωριστούν οι µελλοντικές δυνατότητες µιας νέας αρχιτεκτονικής επεξεργασίας και το δεύτερο βήµα να αναπτυχθεί µια αγορά προτού αυτές οι δυνατότητες γίνουν πραγµατικότητα και µπορούν να εφαρµοστούν [2]. Έγιναν προσπάθειες για την ανάπτυξη παράλληλων επεξεργαστών στην κλίµακα των κυκλωµάτων στη δεκαετία του 1990, αλλά το αυξηµένο κόστος ανάπτυξης των τρανζίστορ ευνόησε την ανάπτυξη των πιο εκλεπτυσµένων σχεδίων για µονοπύρηνους επεξεργαστές. Η πραγµατική πορεία προς τον προγραµµατισµό σε GPU ξεκίνησε, όχι µε GPU s, αλλά µε µη προγραµµατιζόµενους τρισδιάστατους επιταχυντές γραφικών. Μηχανές απόδοσης τρισδιάστατων γραφικών αναπτύχθηκαν από πολλές εταιρείες ξεκινώντας από τη δεκαετία 11

12 του 1980, αλλά µόλις από τα µέσα της δεκαετίας του 1990, κατέστη δυνατό να ενσωµατωθούν όλα τα απαραίτητα στοιχεία σε ένα και µοναδικό κύκλωµα. Από το 1994 έως το 2001, αυτά τα κυκλώµατα εξελίχθηκαν από την πιο απλή συνάρτηση σχεδίασης pixel στην υλοποίηση της πλήρους αλυσίδας παραγωγής τρισδιάστατων γραφικών. Η σειρά καρτών γραφικών GeForce 3 της NVIDIA το 2001 εισήγαγε την προγραµ- µατιστική τεχνική της σκίασης των pixel στην αγορά. Ο προγραµµατισµός αυτού του κυκλώµατος ήταν πολύ περιορισµένος, αλλά αργότερα τα προϊόντα GeForce έγιναν πιο ευέλικτα και πιο γρήγορα, προσθέτοντας ξεχωριστούς προγραµµατιζόµενους µηχανισµούς για τις κορυφές και την γεωµετρική σκίαση. Αυτή η εξέλιξη κορυφώθηκε µε την δηµιουργία της κάρτας γραφικών GeForce 7800, η οποία φαίνεται στην παρακάτω εικόνα. Εικόνα 2.1 Η GeForce 7800 έχει τρία είδη προγραµµατιζόµενων πυρήνων για διαφορετικά στάδια της αλυσίδας γραφικών. (πηγή: Nvidia) Ο λεγόµενος γενικού σκοπού GPU προγραµµατισµός (GPGPU) εξελίχθηκε ως ένας τρόπος για να εκτελούνται διεργασίες µη σχετικές µε τα γραφικά µε αυτές τις αρχιτεκτονικές βελτιστοποιηµένες για παρουσίαση γραφικών, συνήθως µε την εκτέλεση προσεκτικά γραµµένου κώδικα µε τα δεδοµένα να παρουσιάζονται ως σηµεία ή πληροφορίες υφής και 12

13 την ανάκτηση των αποτελεσµάτων σε ένα µεταγενέστερο στάδιο της αλυσίδας παραγωγής. Ο χειρισµός τριών διαφορετικών προγραµµατιζόµενων µηχανών σε µια αλυσίδα παραγωγής 3D οδήγησε σε απρόβλεπτες δυσκολίες. Αφιερώθηκε µεγάλη προσπάθεια στην εξισορρόπηση της απόδοσης σε κάθε στάδιο. Το 2006, η NVIDIA εισήγαγε την GeForce 8800, η οποία διαθέτει επεξεργαστή τύπου G80 και φαίνεται στην εικόνα 2.2. Αυτός ο σχεδιασµός είχε τον χαρακτηρισµό της «ενοποιηµένης αρχιτεκτονικής σκίασης" µε 128 στοιχεία επεξεργασίας κατανεµηµένα µεταξύ των οκτώ πυρήνων σκίασης. Κάθε πυρήνας σκίασης θα µπορούσε να αναλάβει οποιοδήποτε έργο σκίασης, εξαλείφοντας την ανάγκη για εξισορρόπηση σε κάθε στάδιο µε αποτέλεσµα µεγάλη βελτίωση της συνολικής απόδοσης. Εικόνα 2.2 Η GeForce 8800 εισήγαγε την ενιαία αρχιτεκτονική σκίασης έχοντας ένα µόνο ένα είδος προγραµµατιζόµενου στοιχείου επεξεργασίας που χρησιµοποιείται για πολλούς λόγους. Η GeForce 8800 εισήγαγε επίσης την CUDA, το πρώτο προγραµµατιστικό περιβάλλον για GPU s, βασισµένο στην γλώσσα C. Το όνοµα CUDA αντιστοιχεί στην φράση "Compute Unified Device Architecture". Η CUDA παρουσίασε ένα ευκολότερο και πιο αποτελεσµατικό µοντέλο προγραµµατισµού από τις προηγούµενες προσεγγίσεις στον GPGPU. Για να µεταφέρει τα πλεονεκτήµατα της αρχιτεκτονικής της κάρτας 8800 και της CUDA σε νέες 13

14 αγορές όπως την HPC, η NVIDIA παρουσίασε την σειρά προϊόντων Tesla. Τα τρέχοντα προϊόντα της Tesla χρησιµοποιούν την πιο πρόσφατη αρχιτεκτονική GT200, καθώς και την αρχιτεκτονική Fermi. Στο υπόλοιπο κεφάλαιο αναλύονται οι βασικές αρχές της αρχιτεκτονικής Tesla. 2.2 Η αρχιτεκτονική των σύγχρονων µονάδων επεξεργασίας γραφικών Η αρχιτεκτονική της CUDA είναι χτισµένη γύρω από έναν επεκτάσιµο πίνακα από πολυνηµατικούς πολυεπεξεργαστές ροής (streaming) [3]. Όταν ένα πρόγραµµα της Cuda στην κεντρική µονάδα επεξεργασίας καλεί µια οµάδα νηµάτων πυρήνα, τα µπλοκ της οµάδας απαριθµούνται και κατανέµονται σε επεξεργαστές µε διαθέσιµη ικανότητα εκτέλεσης. Τα νήµατα ενός µπλοκ νηµάτων εκτελούνται παράλληλα σε έναν επεξεργαστή και πολλαπλά µπλοκ νηµάτων µπορούν να εκτελούνται παράλληλα επίσης. Όταν τερµατίσουν την λειτουργία τους, νέα µπλοκ δηµιουργούνται στους επεξεργαστές όπου αυτά λειτουργούσαν. Ένας πολυεπεξεργαστής είναι σχεδιασµένος να εκτελεί εκατοντάδες νήµατα ταυτόχρονα. Για να το πετύχει αυτό, χρησιµοποιεί µια µοναδική αρχιτεκτονική που ονοµάζεται SIMT(Single Instruction, Multiple Thread). Προκειµένου να µεγιστοποιήσει την χρήση των λειτουργικών µονάδων του, αντισταθµίζει τον παραλληλισµό νηµάτων µε τον πολυνηµατισµό του υλικού. Ο πολυεπεξεργαστής δηµιουργεί, διαχειρίζεται, προγραµµατίζει και εκτελεί νήµατα σε οµάδες των 32 παράλληλων νηµάτων που ονοµάζονται στηµόνια (warps). Ξεχωριστά νήµατα που συνθέτουν ένα στηµόνι, ξεκινούν µαζί από την ίδια διεύθυνση προγράµµατος αλλά έχουν διαφορετική διεύθυνση οδηγιών και κατάσταση καταχωρητών, µε αποτέλεσµα να είναι ελεύθερα να διακλαδωθούν και να εκτελεστούν ανεξάρτητα. Ο όρος στηµόνι προκύπτει από το weaving, το πρώτο είδος τεχνολογίας παράλληλων νηµάτων. Ένα ηµιστηµόνιο (half-warp) είναι το πρώτο ή το δεύτερο µισό ενός στηµονίου, ενώ το τεταρτοστηµόνιο (quarter-warp) είναι το πρώτο, το δεύτερο, το τρίτο ή το τέταρτο τέρτατο ενός στηµονίου. Όταν ένας πολυεπεξεργαστής έχει στη διάθεσή του ένα ή περισσότερα µπλοκ νηµάτων για να χρησιµοποιήσει, τότε τα χωρίζει σε στηµόνια τα οποία οργανώνονται από έναν χρονοπρογραµµατιστή (scheduler) για να εκτελεστούν. Ο τρόπος διαχωρισµού είναι 14

15 πάντα ο ίδιος, δηλαδή κάθε στηµόνι περιέχει νήµατα µε συνεχές και αυξανόµενο αναγνωριστικό, µε το πρώτο νήµα να έχει αναγνωριστικό τον αριθµό 0. Ένα νήµα εκτελεί µία απλή εντολή κάθε φορά, µε αποτέλεσµα η πλήρης αποδοτικότητα να επιτυγχάνεται όταν και τα 32 νήµατα ενός στηµονιού έχουν ίδιο µονοπάτι εκτέλεσης. Αν τα νήµατα του στηµονιού αποκλίνουν από ένα εξαρτώµενο από τα δεδοµένα κλαδί, το στηµόνι εκτελεί σειριακά κάθε µονοπάτι κλαδιών που δηµιουργείται, απενεργοποιώντας όσα νήµατα δεν είναι σε αυτό το µονοπάτι και όταν όλα τα µονοπάτια ολοκληρωθούν τότε τα νήµατα συγκλίνουν ξανά στο ίδιο µονοπάτι εκτέλεσης. Σηµειώνεται ότι η απόκλιση συµβαίνει µόνο µέσα σε ένα στηµόνι, ενώ τα διαφορετικά στηµόνια εκτελούνται ανεξάρτητα. Η αρχιτεκτονική SIMT έχει οµοιότητες µε την SIMD (Single Instruction, Multiple Data), η οποία οργανώνει τα διανύσµατα (vector) δεδοµένων έτσι ώστε µία απλή εντολή να ελέγχει πολλαπλά στοιχεία επεξεργασίας. Μια βασική διαφορά είναι ότι η οργάνωση της SIMD εκθέτει το εύρος της στο λογισµικό, ενώ οι οδηγίες στην SIMT προσδιορίζουν την εκτέλεση και την συµπεριφορά διακλάδωσης ενός νήµατος. Σε αντίθεση µε τους µηχανισµούς της SIMD, η SIMT επιτρέπει στους προγραµµατιστές να γράψουν κώδικα µε παραλληλοποίηση των νηµάτων για ανεξάρτητα, βαθµωτά νήµατα, καθώς και κώδικα για παράλληλα δεδοµένα, που αφορά τα συντονισµένα νήµατα. Για λόγους ορθότητας, ο προγραµµατιστής µπορεί να αγνοήσει ουσιαστικά την SIMT συµπεριφορά των νηµάτων. Ωστόσο, σηµαντική βελτίωση της απόδοσης µπορεί να επιτευχθεί αν εξασφαλιστεί ότι ο κώδικας δεν απαιτεί α- πό τα νήµατα σε ένα στηµόνι να αποκλίνουν. Στην πράξη, αυτό είναι ανάλογο µε το ρόλο των γραµµών της κρυφής µνήµης (cache) σε παραδοσιακό κώδικα, δηλαδή το µέγεθος της γραµµής της κρυφής µνήµης να µπορεί να αγνοηθεί κατά τον σχεδιασµό µε στόχο την ορθότητα, αλλά να λαµβάνεται υπόψη στη δοµή του κώδικα κατά το σχεδιασµό για µέγιστη απόδοση. Οι αρχιτεκτονικές διανυσµάτων, από την άλλη πλευρά, απαιτούν από το λογισµικό να συγχωνευτούν τα φορτία σε διανύσµατα (vectors) και η διαχείριση των αποκλίσεων να γίνεται χειροκίνητα. Εάν µια µη ατοµική εντολή εκτελεστεί από ένα στηµόνι, γράφει στο ίδιο µέρος της καθολικής ή της κοινόχρηστης µνήµης για παραπάνω από ένα νήµατα. Ο αριθµός των σειριακών εγγραφών στην διεύθυνση αυτή ποικίλει ανάλογα µε την υπολογιστική ικανότητα του µηχανήµατος, ενώ το νήµα που θα κάνει την τελευταία εγγραφή είναι απροσδιόριστο. Αφετέρου, αν µια ατοµική οδηγία που εκτελείται από ένα στηµόνι διαβάζει, γράφει και 15

16 τροποποιεί την ίδια διεύθυνση µνήµης της καθολικής µνήµης για πάνω από ένα νήµατα, η σειρά των πράξεων που εκτελούνται σειριακά είναι απροσδιόριστη. 2.3 Το προγραµµατιστικό µοντέλο της CUDA Η CUDA παρουσίασε ένα νέο προγραµµατιστικό περιβάλλον, το οποίο επέτρεπε στους προγραµµατιστές να χρησιµοποιούν τη γλώσσα C σαν µια γλώσσα υψηλού επιπέδου. Επιπλέον, υποστηρίζονται και άλλες γλώσσες και API s όπως η CUDA FORTRAN, OpenCL και DirectCompute. [3] Η εµφάνιση των πολυπύρηνων CPU αλλά και GPU σηµαίνει αυτόµατα ότι τα κυκλώµατα των επεξεργαστών που επικρατούν είναι πλέον τα παράλληλα συστήµατα. Επιπλέον, η δυνατότητα παραλληλισµού τους αυξάνεται σύµφωνα µε τον νόµο του Moore. Αποτελεί λοιπόν πρόκληση η ανάπτυξη παράλληλου λογισµικού το οποίο κλιµακώνει µε διαφάνεια τον παραλληλισµό του για να συµβαδίσει µε τον αυξανόµενο αριθµό πυρήνων, όπως οι εφαρµογές 3D γραφικών. Το προγραµµατιστικό µοντέλο της CUDA είναι σχεδιασµένο για να ξεπεράσει αυτή την πρόκληση, διατηρώντας παράλληλα χαµηλά την δυσκολία εκµάθησης για τους προγραµ- µατιστές που έχουν εξοικειωθεί µε τις βασικές γλώσσες προγραµµατισµού, όπως η C. Στον πυρήνα του µοντέλου υπάρχουν τρεις βασικές αφαιρετικές έννοιες: η ιεραρχία των οµάδων νηµάτων, οι κοινόχρηστες περιοχές µνήµης και όρια για τον συγχρονισµό των νηµάτων. Αυτές οι αφαιρετικές έννοιες παρέχουν εκλεπτυσµένο παραλληλισµό δεδοµένων και νηµάτων, εµφωλευµένο σε έναν κοινό πλαίσιο παραλληλισµού. Οδηγούν τον προγραµ- µατιστή στην κατάτµηση του προβλήµατος σε µικρότερα, τα οποία µπορούν να επιλυθούν ανεξάρτητα και µε παράλληλο τρόπο από οµάδες νηµάτων. Επίσης, κάθε υπο-πρόβληµα µπορεί να χωριστεί σε µικρότερα που µπορούν να λυθούν παράλληλα από όλα τα νήµατα µιας οµάδας. Αυτή η αποσύνθεση των προβληµάτων συντηρεί την γλωσσική εκφραστικότητα επιτρέποντας στα νήµατα να συνεργάζονται όταν λύνουν ένα υπο-πρόβληµα και ταυτόχρονα ενεργοποιεί την αυτόµατη επεκτασιµότητα. Πράγµατι, κάθε οµάδα νηµάτων µπορεί να χρονοπρογραµµατιστεί σε οποιονδήποτε ελεύθερο πυρήνα, µε οποιαδήποτε σειρά, ταυτόχρονα ή και ακολουθιακά, έτσι ώστε ένα µεταγλωττισµένο πρόγραµµα της CUDA να εκτελείται σε οποιοδήποτε αριθµό πυρήνων έτσι ώστε µόνο το σύστηµα κατά την εκτέλεση να γνωρίζει τον αριθµό των φυσικών επεξεργαστών. 16

17 Αυτό το κλιµακωτό µοντέλο προγραµµατισµού επιτρέπει στην CUDA να επεκταθεί σε µια µεγάλη ποικιλία αγορών, απλά αυξάνοντας τον αριθµό των επεξεργαστών και των τµηµάτων µνήµης. 2.4 CUDA C, µία επέκταση της C Κατά την περίοδο εγγραφής της εργασίας υποστηρίζονται δύο διεπαφές για εγγραφή προγραµµάτων CUDA. Αυτές είναι η CUDA C και το CUDA driver API. Μια εφαρµογή συνήθως χρησιµοποιεί ένα από τα δύο, αλλά µπορεί να χρησιµοποιήσει και τα δύο. [3] Η CUDA C παρέχει ένα εύκολο µονοπάτι για τους χρήστες που είναι εξοικειωµένοι µε την γλώσσα C και θέλουν να γράψουν προγράµµατα για GPU. Αποτελείται από ένα µικρό σύνολο επεκτάσεων της C και µια βιβλιοθήκη runtime. Το runtime υλοποιείται στο αρχείο δυναµικής βιβλιοθήκης cudart και δεν υπάρχει κάποια ειδική συνάρτηση που πρέπει να κληθεί για να αρχικοποιηθεί. Ενεργοποιείται την πρώτη φορά που θα κληθεί µια runtime συνάρτηση. Το CUDA driver API είναι ένα χαµηλότερου επιπέδου API της C, το οποίο παρέχει συναρτήσεις για φόρτωµα των συναρτήσεων πυρήνα (kernels), τα οποία θα εξηγηθούν παρακάτω. Η χρήση του είναι πιο δύσκολη όσον αφορά τον προγραµµατισµό και τον έλεγχο, καθώς απαιτείται περισσότερος κώδικα γενικά από ότι στη CUDA C. Ωστόσο, είναι ανεξάρτητο από γλώσσες καθώς χειρίζεται δυαδικό και assembly κώδικα Συναρτήσεις πυρήνα Η CUDA C επεκτείνει την C, επιτρέποντας στον προγραµµατιστή να ορίσει νέες συναρτήσεις της C που ονοµάζονται συναρτήσεις πυρήνα (kernels), οι οποίες όταν καλούνται εκτελούνται Ν φορές παράλληλα από Ν διαφορετικά νήµατα της CUDA. Οι συναρτήσεις τύπου kernel ορίζονται χρησιµοποιώντας το αναγνωριστικό global ή device και το πλήθος των νηµάτων που θα εκτελέσουν την συνάρτηση όταν αυτή κληθεί µε τον τελεστή ρύθµισης των παραµέτρων εκτέλεσης <<< >>>. Κάθε νήµα έχει ένα µοναδικό id, το οποίο είναι γνωστό µέσα στην συνάρτηση-πυρήνα µέσω της µεταβλητής threadidx. 17

18 2.4.2 Ιεραρχία νηµάτων Οι οµάδες νηµάτων είναι οργανωµένες σε µονοδιάστατα ή δισδιάστατα πλέγµατα οµάδων, όπως φαίνεται στην παρακάτω εικόνα. Ο αριθµός των οµάδων στο πλέγµα καθορίζεται συνήθως από το µέγεθος των δεδοµένων που επεξεργάζονται κάθε στιγµή ή από τον αριθµό των επεξεργαστών του συστήµατος. Εικόνα 2.3 Πλέγµα οµάδων νηµάτων (πηγή Nvidia) Ο αριθµός των νηµάτων ανά οµάδα και ο αριθµός οµάδων ανά πλέγµα ορίζονται µε τον τελεστή <<< >>> και είναι τύπου int ή dim3. Κάθε οµάδα µέσα στο πλέγµα µπορεί να αναγνωριστεί µέσω µιας µονοδιάστατης ή δισδιάστατης θέσης, προσπελάσιµης µέσα στον πυρήνα µέσω της µεταβλητής blockdim. Μια οµάδα νηµάτων µεγέθους 16 * 16 (256 νήµατα) είναι µια κοινή επιλογή. Το πλέγµα δηµιουργείται µε τόσες οµάδες ώστε να µπορεί να ανατεθεί ένα νήµα για κάθε στοιχείο µιας δοµής, όπως ένας πίνακας. 18

19 Χάριν ευκολίας, θα ορίσουµε τη µεταβλητή threadidx ως ένα διάνυσµα τριών διαστάσεων το οποίο επιτρέπει τα νήµατα να αναγνωριστούν χρησιµοποιώντας µια µονοδιάστατη, δισδιάστατη ή τρισδιάστατη θέση, σχηµατίζοντας αντίστοιχα µια οµάδα νηµάτων. Αυτή η προσέγγιση παρέχει έναν φυσικό τρόπο πρόκλησης της εκκίνησης υπολογισµών στα στοιχεία δοµών, όπως πίνακες ή διανύσµατα. Η θέση ενός νήµατος και το id του σχετίζονται µεταξύ τους µε άµεσο τρόπο. Για ένα µονοδιάστατο µπλοκ νηµάτων έχουν την ίδια τιµή, ενώ για ένα δισδιάστατο µπλοκ µεγέθους (D x,d y ) το id του νήµατος µε θέση (x,y) είναι (x + y*d x ). Με παρόµοιο τρόπο, σε ένα τρισδιάστατο µπλοκ νηµάτων µεγέθους (D x,d y,d z ), το id του νήµατος µε θέση (x,y,z) είναι (x + y*d x + z*d x *D y ). Υπάρχει όµως κάποιο όριο στον αριθµό των νηµάτων ανά οµάδα, καθώς όλα τα νήµατα της οµάδας αναµένεται να ανατεθούν στον ίδιο πυρήνα ενός επεξεργαστή και πρέπει να διαµοιράζονται τους περιορισµένους πόρους µνήµης που αυτός διαθέτει. Στις σύγχρονες GPU, µια οµάδα νηµάτων µπορεί να περιέχει µέχρι 1024 νήµατα. Παρόλα αυτά, µια συνάρτηση-πυρήνας µπορεί να εκτελεστεί από πολλαπλές οµάδες νηµάτων όµοια σχηµατισµένες, έτσι ώστε ο συνολικός αριθµός των νηµάτων να είναι ίσος µε τον αριθµό των νηµάτων ανά µπλοκ επί τον αριθµό των οµάδων. Οι οµάδες νηµάτων απαιτείται να δουλεύουν ανεξάρτητα. Πρέπει επίσης να µπορούν να εκτελεστούν µε οποιαδήποτε σειρά, παράλληλα ή σειριακά. Η ανεξαρτησία επιτρέπει στις οµάδες νηµάτων να χρονοπρογραµµατίζονται για εκτέλεση µε οποιαδήποτε σειρά και σε όσους πυρήνες του επεξεργαστή θέλουµε. Αντίστοιχα, τα νήµατα σε κάθε οµάδα µπορούν να συνεργάζονται µοιραζόµενα τα δεδοµένα µέσω της διαµοιραζόµενης µνήµης και συγχρονίζοντας την εκτέλεσή τους για να συντονίσουν την πρόσβασή τους στη µνήµη. Για αποδοτική συνεργασία η διαµοιραζόµενη µνήµη αναµένεται να είναι χαµηλής απόκρισης και να είναι κοντά στον πυρήνα του επεξεργαστή, ενώ η συνάρτηση συγχρονισµού αναµένεται να µην είναι ιδιαίτερα απαιτητική σε υπολογισµούς Η ιεραρχία µνήµης Η µονάδα επεξεργασίας γραφικών δεν έχει την δυνατότητα απευθείας ανάγνωσης και εγγραφής στην µνήµη του υπολογιστή. Η προσπέλαση στην µνήµη του υπολογιστή γίνεται µε έµµεσο τρόπο. Τα νήµατα της CUDA µπορεί να έχουν πρόσβαση σε δεδοµένα 19

20 από διάφορα σηµεία της µνήµης κατά την εκτέλεσή τους όπως φαίνεται στο παρακάτω σχήµα. Εικόνα 2.4 Ιεραρχία µνηµών (πηγή: Nvidia) Κάθε νήµα έχει την δική του ιδιωτική τοπική µνήµη που ονοµάζεται τοπική µνήµη, ενώ κάθε οµάδα νηµάτων έχει διαµοιραζόµενη µνήµη, κοινή για όλα τα νήµατά της. Όλα τα νήµατα έχουν πρόσβαση στην ίδια µνήµη, η οποία ονοµάζεται καθολική µνήµη. Υπάρχουν δύο επιπλέον περιοχές µνήµης διαθέσιµες µόνο για ανάγνωση και προσπελάσιµες από όλα τα νήµατα: η µνήµη σταθερών και η µνήµη υφής. Η καθολική, η µνήµη σταθερών και η µνήµη υφής είναι βέλτιστες για διαφορετικές χρήσεις της µνήµης. Επίσης, η µνήµη υφής προσφέρει διαφορετικές µορφές διευθυνσιοδότησης, καθώς και φιλτράρισµα δεδοµένων για ορισµένες µορφές αυτών. Οι διευθύνσεις µνήµης των 20

21 παραπάνω ειδών µνήµης παραµένουν σταθερές κατά τη διάρκεια των κλήσεων των συναρτήσεων πυρήνα. Τέλος, στην ιεραρχία των µνηµών πρέπει να αναφερθούν και οι καταχωρητές. Κάθε πολυεπεξεργαστής διαθέτει ένα σύνολο 32 καταχωρητών που είναι µοιρασµένοι στα στηµόνια, καθώς και µια µνήµη cache παράλληλων δεδοµένων ή ένα τµήµα κοινόχρηστης µνήµης που διαµοιράζεται στα µπλοκ νηµάτων. Ο αριθµός των µπλοκ και των στηµονίων που µπορούν να βρίσκονται και να επεξεργάζονται µαζί στον πολυεπεξεργαστή για έναν δεδοµένο πυρήνα εξαρτάται από τον αριθµό των καταχωρητών και το µέγεθος της κοινόχρηστης µνήµης που χρησιµοποιεί ο πυρήνας, καθώς και από τον αντίστοιχο αριθµό αυτών των µεγεθών που είναι διαθέσιµα στον πολυεπεξεργαστή. Υπάρχει όµως ένας µέγιστος αριθµός για τα µπλοκ και τα στηµόνια που µπορεί να έχει ένας πολυεπεξεργαστής Η καθολική µνήµη Η καθολική µνήµη βρίσκεται ενσωµατωµένη στην µνήµη της GPU (device memory), η οποία γίνεται προσβάσιµη µέσω συναλλαγών µεγέθους 32, 64 ή 128 byte δεδοµένων. Οι συναλλαγές αυτές πρέπει να είναι ευθυγραµµισµένες µε φυσικό τρόπο, καθώς µόνο τα τµήµατα της µνήµης αντίστοιχου µεγέθους που είναι ευθυγραµµισµένα σύµφωνα µε το µέγεθός τους, δηλαδή η διεύθυνση της πρώτης θέσης είναι πολλαπλάσιο του µεγέθους, µπορούν να διαβαστούν ή να γραφούν. Όταν ένα στηµόνι εκτελεί µια εντολή που δηλώνει πρόσβαση στην καθολική µνήµη, συγχωνεύει τις προσβάσεις µνήµης των νηµάτων που βρίσκονται µέσα σε αυτό σε µια ή περισσότερες συναλλαγές µνήµης, ανάλογα µε το µέγεθος της λέξης που επιλέγει κάθε νήµα και την κατανοµή των διευθύνσεων µνήµης στα νήµατα. Γενικότερα, όσο περισσότερες συναλλαγές είναι απαραίτητες, τόσο περισσότερες αχρησιµοποίητες λέξεις µεταφέρονται επιπλέον, πέραν εκείνων όπου είχαν πρόσβαση τα νήµατα. Αυτό έχει ως αποτέλεσµα την ανάλογη µείωση της απόδοσης της εκτέλεσης της εντολής που δηµιούργησε τις συναλλαγές. Πρακτικά, ο αριθµός των συναλλαγών που απαιτούνται και η τελική επιρροή στην απόδοση ποικίλει ανάλογα µε την υπολογιστική ικανότητα της κάρτας γραφικών. 21

22 Εποµένως, για την µεγιστοποίηση της απόδοσης της καθολικής µνήµης είναι απαραίτητο να µεγιστοποιηθεί η συγχώνευση πρόσβασης, µε τους ακόλουθους τρόπους: ακολουθώντας τις βέλτιστες µεθόδους πρόσβασης σε αυτήν, χρησιµοποιώντας µόνο τους τύπους δεδοµένων που πληρούν τις προϋποθέσεις του µεγέθους (1, 2, 4, 8, 16 bytes) και της ευθυγράµµισης, συµπληρώνοντας τα δεδοµένα όποτε χρειάζεται, όπως στην περίπτωση πρόσβασης σε δισδιάστατο πίνακα Τοπική µνήµη Ο χώρος διευθύνσεων της τοπικής µνήµης βρίσκεται και αυτός στην µνήµη της µονάδας επεξεργασίας γραφικών (device memory). Εποµένως, η πρόσβαση στην τοπική µνήµη έχει εξίσου υψηλό χρόνο καθυστέρησης και χαµηλό εύρος ζώνης µε εκείνην στην καθολική µνήµη, ενώ υπόκειται στις ίδιες απαιτήσεις για συγχώνευση των προσβάσεων σε αυτήν. Παρ όλα αυτά, η τοπική µνήµη είναι οργανωµένη έτσι ώστε οι συνεχόµενες λέξεις των 32 bit να είναι προσβάσιµες από νήµατα µε συνεχόµενο αναγνωριστικό ID. Με αυτόν τον τρόπο, η πρόσβαση είναι πλήρως συγχρονισµένη, όσο όλα τα νήµατα ενός στηµονίου έχουν πρόσβαση στην ίδια θέση µνήµης. Η πρόσβαση στην τοπική µνήµη συµβαίνει µόνο για µερικές αυτόµατες µεταβλητές. Οι αυτόµατες µεταβλητές που είναι πιθανότερο να αποθηκεύσει ο µεταγλωττιστής στην τοπική µνήµη είναι οι πίνακες για τους οποίους δεν µπορεί να διευκρινιστεί ότι είναι αρχειοθετηµένες µε κάποια σταθερή ποσότητα, οι δοµές µεγάλου µεγέθους ή πίνακες που θα κατανάλωναν υπερβολικά µεγάλη µνήµη στους καταχωρητές και οποιαδήποτε µεταβλητή χρειαστεί, εφόσον ο πυρήνας χρησιµοποιεί περισσότερους καταχωρητές από όσους είναι διαθέσιµοι Η κοινόχρηστη µνήµη Ο χώρος που ανήκει στην κοινόχρηστη µνήµη βρίσκεται πάνω στο κύκλωµα της κάρτας γραφικών, µε αποτέλεσµα να είναι πολύ γρηγορότερη από την καθολική και την τοπική µνήµη. Στην πραγµατικότητα, για όλα τα νήµατα ενός στηµονιού, η πρόσβαση στην 22

23 κοινόχρηστη µνήµη είναι γρήγορη µε την προϋπόθεση ότι δεν υπάρχουν συγκρούσεις πρόσβασης στα ίδια κοµµάτια µνήµης, που ονοµάζονται banks, µεταξύ των νηµάτων, κάτι που θα εξηγηθεί αµέσως παρακάτω. Με στόχο το υψηλό εύρος ζώνης, η κοινόχρηστη µνήµη χωρίζεται µε φυσικό τρόπο σε τµήµατα µνήµης ίσου µεγέθους(4 bytes), που ονοµάζονται banks και στα οποία υπάρχει δυνατότητα συγχρονισµένης πρόσβασης. Οποιαδήποτε ανάγνωση ή εγγραφή στη µνήµη αποτελείται από n διευθύνσεις µνήµης που βρίσκονται σε n διαφορετικά banks µπορούν να εκτελεστούν ταυτόχρονα, προσφέροντας ένα συνολικό εύρος ζώνης που είναι n φορές υψηλότερο από το αντίστοιχο εύρος ζώνης ενός µόνο τµήµατος µνήµης. Από την άλλη µεριά όµως, εάν δύο διευθύνσεις ενός αιτήµατος πρόσβασης στην κοινόχρηστη µνήµη βρίσκονται στο ίδιο bank, τότε δηµιουργείται διένεξη και η πρόσβαση πρέπει να γίνει σειριακά. Το υλικό µέρος διαχωρίζει το αντίστοιχο αίτηµα πρόσβασης σε όσα περισσότερα ξεχωριστά αιτήµατα που δεν προκαλούν διένεξη είναι δυνατόν, µειώνοντας έτσι την απόδοση κατά έναν παράγοντα ίσο µε τον αριθµό των αιτηµάτων αυτών. Για να επιτευχθεί µέγιστη απόδοση, είναι σηµαντικό να γίνει αντιληπτό το πώς οι διευθύνσεις µνήµης αντιστοιχίζονται στα banks, ώστε να οργανωθούν τα αιτήµατα πρόσβασης έτσι ώστε να µειωθούν οι διενέξεις Η µνήµη σταθερών Ο χώρος της µνήµης σταθερών βρίσκεται επίσης εντός της µνήµης της κάρτας γραφικών. Ένα αίτηµα πρόσβασης για κάποιο στηµόνι χωρίζεται αρχικά σε δύο ξεχωριστά αιτήµατα, ένα κάθε µισό του στηµονιού τα οποία ικανοποιούνται ανεξάρτητα. Έπειτα, κάθε αίτηµα χωρίζεται σε όσο περισσότερα αιτήµατα γίνεται, µε στόχο να υπάρχουν διαφορετικές διευθύνσεις µνήµης στο αρχικό αίτηµα, µειώνοντας έτσι την απόδοση κατά έναν παράγοντα ίσο µε τον αριθµό των διαφορετικών αιτηµάτων. Τα αιτήµατα που προκύπτουν, εξυπηρετούνται µε απόδοση ίση µε εκείνη της µνήµης της µονάδας επεξεργασίας γραφικών, είτε ίση µε την απόδοση της µνήµης cache της µνήµης σταθερών. 23

24 Η µνήµη υφής και επιφανειών Ο χώρος διευθύνσεων της µνήµης υφής και επιφανειών βρίσκεται και αυτή µέσα στην µνήµη της κάρτας γραφικών και κρύβονται στην αντίστοιχη texture cache. Αυτό έχει ως αποτέλεσµα, µια ανάγνωση και επιστροφή µια υφής ή επιφάνειας να κοστίζει όσο µια ανάγνωση από την µνήµη της κάρτας µόνο στην περίπτωση που αποτύχει να την βρει στην cache. ιαφορετικά, κοστίζει απλά όσο η ανάγνωση από την texture cache. Αυτή η µνήµη cache είναι βελτιστοποιηµένη για την δισδιάστατη χωρική τοπικότητα, µε αποτέλεσµα τα νήµατα του ίδιου στηµονιού που διαβάζουν διευθύνσεις της µνήµης υφής που βρίσκονται κοντά να επιτυγχάνουν την µέγιστη απόδοση. Επίσης, είναι σχεδιασµένη να χειρίζεται ρεύµατα δεδοµένων που έχουν σταθερό χρόνο καθυστέρησης. Η ανάγνωση της µνήµης της κάρτας γραφικών µέσω της πρόσβασης στην µνήµη υφής παρέχει κάποια οφέλη σε σχέση µε την αντίστοιχη χρήση της καθολικής µνήµης ή της µνήµης σταθερών. Αν οι αναγνώσεις µνήµης δεν ακολουθούν τα πρότυπα πρόσβασης που ακολουθούν οι αναγνώσεις της µνήµης σταθερών ή της καθολικής, τότε µπορεί να επιτευχθεί καλή απόδοση, υψηλότερο εύρος ζώνης µε την προϋπόθεση ότι ισχύει η τοπικότητα στις αναγνώσεις στη µνήµη υφής. Επιπροσθέτως, οι υπολογισµοί διευθύνσεων γίνονται εκτός του πυρήνα από αφοσιωµένες µονάδες. Επίσης, τα οµαδοποιηµένα δεδοµένα µπορεί να διανεµηθούν σε ξεχωριστές µεταβλητές σε µια µόνο λειτουργία. Τέλος, τα δεδοµένα εισόδου που αντιστοιχούν σε ακεραίους των 8 ή 16 bits µπορούν προαιρετικά να µετατραπούν σε δεκαδικούς αριθµούς των 32 bits και εύρος [-1.0, 1.0] ή [0.0, 1.0] Σύνοψη ειδών µνήµης Στο σηµείο αυτό αξίζει να παρατεθεί µια περίληψη των χαρακτηριστικών των διάφορων ειδών µνήµης της GPU και τα βασικά συµπεράσµατα που προκύπτουν, καθώς αποτελούν τον ακρογωνιαίο λίθο της φιλοσοφίας της CUDA και του τρόπου προγραµµατισµού στις µονάδες επεξεργασίας γραφικών. 24

25 1. Στην καθολική µνήµη έχουν πρόσβαση ανάγνωσης και εγγραφής όλα τα νήµατα. 2. Στην τοπική µνήµη έχει πρόσβαση ανάγνωσης και εγγραφής µόνο το νήµα στο οποίο αυτή είναι ορισµένη και έχει διάρκεια ζωής όσο εκείνο. 3. Στην κοινόχρηστη µνήµη έχουν πρόσβαση ανάγνωσης και εγγραφής µόνο τα νήµατα του block στο οποίο αυτή ορίζεται, ενώ έχει διάρκεια ζωής όσο και το block. 4. Στην µνήµη σταθερών έχουν πρόσβαση ανάγνωσης όλα τα νήµατα. 5. Στην µνήµη υφής έχουν πρόσβαση ανάγνωσης όλα τα νήµατα. Η καθολική µνήµη είναι η βασική µνήµη που χρησιµοποιείται, καθώς αποτελεί τον µοναδικό τρόπο να περάσουν τα δεδοµένα στην κάρτα γραφικών και να επιστρέψουν πίσω στο σύστηµα. Οι προσβάσεις σε αυτή πρέπει να είναι ευθυγραµµισµένες στο όριο των 32, 64 ή 128 byte από την αρχή της µνήµης και γραµµικές. Αν δεν επιτευχθεί αυτό, ένας τρόπος είναι να διαβάσουν όλα τα νήµατα στην αρχή την καθολική µνήµη µε συνεχή τρόπο και να τα αποθηκεύουν τα δεδοµένα στην κοινόχρηστη µνήµη. Αν δεν υπάρχει δυνατότητα σωστού χειρισµού των δεδοµένων και µέσω της κοινόχρηστης µνήµης τότε µπορεί να γίνει χρήση της µνήµης υφής. Η µνήµη καταχωρητών πρέπει να χρησιµοποιείται µε όριο για να µην δηµιουργηθούν προβλήµατα στην πληρότητα, αλλά δεν πρέπει να περιορίζεται πολύ για να αποφευχθεί το spilling στην αργή τοπική µνήµη. Η µνήµη constant πρέπει να χρησιµοποιείται όταν όλα τα νήµατα πρόκειται να διαβάσουν την ίδια θέση στην µνήµη. Ορισµένα χαρακτηριστικά των µνηµών που περιγράφηκαν παρατίθενται συνοπτικά στον πίνακα της παρακάτω εικόνας. 25

26 Μνήµη Τοποθεσία Χρήση τοπικής µνήµης Πρόσβαση Καθολική Off-chip ΟΧΙ Ανάγνωση/ εγγραφή Τοπική Off-chip ΟΧΙ Ανάγνωση/ εγγραφή Κοινόχρηστη On-chip Ν/Α Ανάγνωση/ εγγραφή Σταθερών Off-chip ΝΑΙ Μόνο ανάγνωση Υφής On-chip ΝΑΙ Μόνο ανάγνωση Έκταση πρόσβασης Όλα τα νήµατα Ένα νήµα Όλα τα νήµατα µιας οµάδας Όλα τα νήµατα Όλα τα νήµατα Πίνακας 2.1 Τύποι µνηµών και χαρακτηριστικά [4] Το εύρος ζώνης της µνήµης Το αποτελεσµατικό εύρος ζώνης κάθε κοµµατιού µνήµης εξαρτάται σηµαντικά από το µοντέλο που χρησιµοποιείται για να προσπελαστούν τα δεδοµένα. [3] Αφού η µνήµη της GPU είναι πολύ υψηλότερης καθυστέρησης και χαµηλότερου εύρους ζώνης από την ενσωµατωµένη µνήµη, οι προσπελάσεις από τη µνήµη της GPU θα πρέπει να µειωθούν. Ένας τυπικός προγραµµατιστικός τρόπος που επιλέγεται είναι να τοποθετούνται τα δεδοµένα που έρχονται από τη µνήµη της GPU στη κοινόχρηστη shared. Με άλλα λόγια, για κάθε µπλοκ νηµάτων πρέπει: να φορτωθούν τα δεδοµένα από τη µνήµη της GPU στη κοινόχρηστη µνήµη να συγχρονιστούν όλα τα νήµατα του µπλοκ µεταξύ τους έτσι ώστε κάθε νήµα να µπορεί ασφαλώς να διαβάσει τις περιοχές της κοινόχρηστης µνήµης οι οποίες εγγράφηκαν από άλλα νήµατα του ίδιου µπλοκ, να επεξεργαστούν οι πληροφορίες της κοινόχρηστης µνήµης, 26

27 να συγχρονίζονται ξανά, αν είναι απαραίτητο, έτσι ώστε να ενηµερωθούν τα αποτελέσµατα, να γράφονται να αποτελέσµατα πίσω στη device memory. Το κοµµάτι της καθολικής µνήµης δεν έχει κρυφή µνήµη, οπότε είναι ακόµη πιο σηµαντικό να ακολουθείται το σωστό µοντέλο πρόσβασης για να λαµβάνεται το µέγιστο εύρος ζώνης, ειδικά έχοντας υπόψη το πόσο ακριβές είναι οι προσπελάσεις στη µνήµη της GPU. Το εύρος ζώνης της καθολικής µνήµης χρησιµοποιείται πιο αποτελεσµατικά όταν ταυτόχρονες προσπελάσεις µνήµης από όλα τα νήµατα σε µισό στηµόνι (κατά τη διάρκεια της εκτέλεσης µιας εντολής ανάγνωσης ή εγγραφής) µπορούν να είναι ενωµένες (coalesced) σε µία µονή µεταφορά µνήµης των 32, 64, ή 128 bytes. Για να επιτευχθεί υψηλό εύρος ζώνης στην κοινόχρηστη µνήµη, διαιρείται σε ισοµεγέθεις υποµονάδες µνήµης, οι οποίες αποκαλούνται banks και µπορούν να προσπελαστούν ταυτόχρονα. Έτσι κάθε αίτηµα εγγραφής ή ανάγνωσης που αποτελείται από n διευθύνσεις που ανήκουν σε n διαφορετικά banks µπορούν να εξυπηρετηθούν ταυτόχρονα, αποδίδοντας ένα αποτελεσµατικό εύρος ζώνης το οποίο είναι n φορές υψηλότερο από το εύρος ζώνης µίας υποµονάδας. Ωστόσο, αν δύο διευθύνσεις ενός αιτήµατος µνήµης ανήκουν στην ίδια bank, τότε υπάρχει bank conflict και η προσπέλαση πρέπει να γίνει σειριακά. Το υλικό διαχωρίζει ένα αίτηµα µνήµης µε bank conflicts σε όσα ξεχωριστά, χωρίς συγκρούσεις, αιτήµατα είναι απαραίτητο, µειώνοντας µε τον τρόπο αυτό το εύρος ζώνης κατά ένα παράγοντα ίσο µε τον αριθµό των ξεχωριστών αιτηµάτων µνήµης. Στην περίπτωση της κοινόχρηστης µνήµης, τα banks είναι οργανωµένα έτσι ώστε διαδοχικές λέξεις των 32 bit να ανατίθενται σε διαδοχικα banks και κάθε bank έχει εύρος ζώνης ίσο µε 32 bits ανά δύο κύκλους ρολογιού. Για κάρτες µε υπολογιστική δυνατότητα 1.x, το µέγεθος του στηµονίου είναι 32 και ο αριθµός των banks είναι 16. Ένα αίτηµα για προσπέλαση στη κοινόχρηστη µνήµη για ένα στηµόνι χωρίζεται σε ένα αίτηµα για το πρώτο µισό του στηµονίου και ένα αίτηµα για το δεύτερο µισό του στηµονίου. Ως συνέπεια, δε µπορεί να υπάρξει bank conflict ανάµεσα σε ένα νήµα που ανήκει στο πρώτο µισό του στηµονίου και ένα νήµα που ανήκει στο δεύτερο µισό του ίδιου στηµονίου. 27

28 Κ ε φ ά λ α ι ο 3 Το σύστηµα βάσεων δεδοµένων GDB Σ αυτό το κεφάλαιο παρουσιάζεται η ανάλυση και υλοποίηση του συστήµατος GDB(GPU DataBase). Το GDB αποτελεί ένα σύστηµα βάσεων δεδοµένων το οποίο σχεδιάστηκε και υλοποιήθηκε από τους Bingsheng He, Ke Yang, Rui Fang, Mian Lu, Naga K. Govindaraju, Qiong Luo και Pedro V. Sander για να εκτελείται στις σύγχρονες µονάδες επεξεργασίας γραφικών [5]. Τα πιο πρόσφατα χαρακτηριστικά της GPU περιλαµβάνουν υποστήριξη για εγγραφή σε τυχαίες θέσεις µνήµης, αποδοτική επικοινωνία επεξεργαστών και ένα προγραµµατιστικό µοντέλο για προγραµµατισµό γενικού σκοπού. Χρησιµοποιώντας αυτά τα νέα χαρακτηριστικά, σχεδίασαν ένα σύνολο αρχέτυπων συναρτήσεων για παράλληλη επεξεργασία δεδοµένων, όπως η split και η sort και χρησιµοποιούνται για την υλοποίηση αλγορίθµων σύνδεσης και οµαδοποίησης. Οι συναρτήσεις αυτές χρησιµοποιούν τον υψηλό παραλληλισµό και το υψηλό εύρος ζώνης µνήµης της GPU, καθώς επίσης και τους παράλληλους υπολογισµούς και τις βελτιστοποιήσεις της µνήµης για να µειώσουν αποδοτικά τις χρονικές καθυστερήσεις στην µνήµη. 3.1 Αρχέτυπες συναρτήσεις Οι ερευνητές οι οποίοι ασχολήθηκαν µε την ανάπτυξη του GDB, δίνοντας βάση το αρχιτεκτονικό µοντέλο της GPU, εντόπισαν τρεις βασικές τεχνικές προκλήσεις στην εφαρ- µογή των αλγορίθµων. Η πρώτη ήταν η αποδοτική χρήση των υπολογιστικών πόρων και του εύρους ζώνης της µνήµης της GPU, καθώς και η χρήση παράλληλων υπολογισµών για να καλυφθεί η χρονική καθυστέρηση της µνήµης. Η συγκεκριµένη πρόκληση είναι καθοριστική επειδή η πράξη της σύνδεσης είναι ευαίσθητη στα δεδοµένα και στην υπολογιστική ικανότητα. Εποµένως, έπρεπε να εξεταστούν ειδικοί αλγόριθµοι σύνδεσης και να αναπτυχθούν κοινές δοµές που να βελτιώνουν τον παραλληλισµό δεδοµένων. 28

29 Η δεύτερη πρόκληση ήταν ο αποδοτικός χειρισµός των διενέξεων που συµβαίνουν κατά την ταυτόχρονη ανάγνωση ή εγγραφή. Εξαιτίας της µη ύπαρξης λειτουργιών που υποστηρίζονται από το υλικό για τον χειρισµό διενέξεων, υπάρχει ανάγκη για ανάπτυξη ενός ανάλογου αποδοτικού µηχανισµού που να υποστηρίζεται από τις GPU. Η τρίτη πρόκληση ήταν ο χειρισµός των data skews στις GPU. Όπως σε κάθε παράλληλη αρχιτεκτονική, τα data skews πρέπει να διαχειριστούν αποδοτικά για να εξισορροπήσουν τον φόρτο µεταξύ των επεξεργαστών µε στόχο την αύξηση της συνολικής απόδοσης του συστήµατος. Για την αντιµετώπιση των προκλήσεων επιλέχτηκαν οι λεγόµενες αρχέτυπες συναρτήσεις για να χρησιµοποιηθούν στις πράξεις της σύνδεσης στις GPU, καθώς εκµεταλλεύονται σε µεγάλο βαθµό τα χαρακτηριστικά του υλικού των GPU. Οι συναρτήσεις που δηµιούργησαν είναι η συνάρτηση map, η scatter, η gather, η prefix scan, η split και η συνάρτηση sort. Οι συναρτήσεις αυτές έχουν τα χαµηλό κόστος συγχρονισµού που οδηγεί σε µέγιστες επιδόσεις, είναι επεκτάσιµες σε εκατοντάδες επεξεργαστές και εφαρµόζονται σε πολλές πράξεις σχεσιακών ερωτηµάτων Η συνάρτηση Map Η συνάρτηση είναι παρόµοια µε το σκανάρισµα µιας βάσης δεδοµένων και ορίζεται όπως φαίνεται στον πίνακα 3.1. ΕΙΣΟ ΟΣ R in [1,,n], µια συνάρτηση fcn ΕΞΟ ΟΣ R out [1,,n] ΣΥΝΑΡΤΗΣΗ R out [1,,n] = fcn( R in [1,,n] ) Πίνακας 3.1 Για την υλοποίηση χρησιµοποιούνται πολλαπλές οµάδες νηµάτων και κάθε οµάδα αναλαµβάνει να επεξεργαστεί ένα κοµµάτι της σχέσης. 29

30 3.1.2 Οι συναρτήσεις scatter και gather Η συνάρτηση scatter εκτελεί εγγραφές κατά θέση στην σχέση, όπως για παράδειγµα µε χρήση κατακερµατισµού. Τα χαρακτηριστικά της φαίνονται στον πίνακα 3.2, µε τον πίνακα L να ορίζει την ξεχωριστή θέση µνήµης όπου θα γράψει κάθε πλειάδα R in. ΕΙΣΟ ΟΣ R in [1,,n], L[1,,n] ΕΞΟ ΟΣ R out [1,,n] ΣΥΝΑΡΤΗΣΗ R out [1,,n] = R in [L[i]], i=1,,n Πίνακας 3.2 Η συνάρτηση gather εκτελεί αντίστοιχα τις αναγνώσεις από µια σχέση και µπορεί να χρησιµοποιηθεί για να βρει και να φέρει µια πλειάδα αν ξέρει το record id της, καθώς και για εύρεση σε πίνακα κατακερµατισµού. Έχει τα ίδια χαρακτηριστικά µε την συνάρτηση scatter τα οποία φαίνονται στον παραπάνω πίνακα, µε τη διαφορά ότι ο πίνακας L αφορά µια θέση ανάγνωσης κάθε πλειάδας αντί για εγγραφή. Γενικότερα, οι πλειάδες στην σχέση που προκύπτει ως έξοδος µπορεί να είναι ένα υπερσύνολο ή και υποσύνολο της σχέσης εισόδου στις δύο αυτές συναρτήσεις. Για απλότητα, οι ορισµοί που αναφέρονται εδώ έχουν ως υπόθεση ότι οι πλειάδες εξόδου είναι όµοιο σύνολο µε εκείνες της εισόδου Η συνάρτηση prefix scan Η συνάρτηση αυτή εφαρµόζει έναν δυαδικό τελεστή στην σχέση εισόδου µεγέθους n και παράγει µια σχέση στην έξοδο, επίσης µεγέθους n. Ο ορισµός αυτός φαίνεται καλύτερα στον πίνακα 3.3. ΕΙΣΟ ΟΣ ΕΞΟ ΟΣ ΣΥΝΑΡΤΗΣΗ R in [1,,n], ο δυαδικός τελεστής xor R out [1,,n] R out [1,,n] = xor j<i R in [j] Πίνακας

31 Ένα παράδειγµα χρήσης είναι ο υπολογισµός του προθεµατικού αθροίσµατος, µια σηµαντική λειτουργία στις παράλληλες βάσεις δεδοµένων. εδοµένης µιας σχέσης εισόδου R in, η τιµή κάθε στοιχείου του πίνακα εξόδου R out προκύπτει από το άθροισµα των τιµών R in [1] έως R in [i-1] (R out [1]=0) Η συνάρτηση split Η αρχέτυπη αυτή συνάρτηση, όπως υποδεικνύει το όνοµά της, διαχωρίζει µια σχέση σε έναν αριθµό διακριτών τµηµάτων σύµφωνα µε µια συνάρτηση κατάτµησης και τα αποτελέσµατα αποθηκεύονται στην σχέση εξόδου. Χρησιµοποιείται συνήθως για την κατάτµηση πινάκων κατακερµατισµού. εδοµένου του µεγέθους κατάτµησης F, η λειτουργία της περιγράφεται περιληπτικά στον πίνακα 3.4. ΕΙΣΟ ΟΣ ΕΞΟ ΟΣ ΣΥΝΑΡΤΗΣΗ R in [1,,n], func(r in [i])ε[1,,f], i=1,,n R out [1,,n] R out [i]=r in [i] &&func(r out [i])<func(r out [j]), i<j Πίνακας 3.4 Η βασική υλοποίηση είναι ότι κάθε νήµα επεξεργάζεται ένα κοµµάτι της σχέσης εισόδου και τοποθετεί τις πλειάδες εξόδου στα αντίστοιχα τµήµατα. Ένα µεγάλο θέµα είναι οι διενέξεις εγγραφών από τα συγχρονισµένα νήµατα, τα οποία προσπαθούν να προσπελάσουν το ίδιο τµήµα κάποιας σχέσης. Έτσι, δηµιουργήθηκε µια λύση λογισµικού και αναπτύχθηκε ένας αλγόριθµος χωρίς κλείδωµα. Η βασική ιδέα είναι ότι, προτού γίνει η εγγραφή του αποτελέσµατος, χρησιµοποιούνται ιστογράµµατα για να υπολογιστούν οι θέσεις εγγραφής για κάθε νήµα. Έτσι, κάθε νήµα θα γνωρίζει ακριβώς την θέση εγγραφής του και θα αποφεύγονται οι διενέξεις. Ο αλγόριθµος αυτός είναι µερικώς εµπνευσµένος από τον παράλληλο αλγόριθµο ριζικής ταξινόµησης (radix sort), που χρησιµοποιεί ιστογράµµατα στην εφαρµογή του. Η βασική διαφορά είναι ότι τα ιστογράµµατα εδώ είναι ενσωµατωµένα στην αρχέτυπη συνάρτηση και όχι ξεχωριστά. Συγκεκριµένα, ο αλγόριθµος split χρησιµοποιεί το 31

32 ιστόγραµµα για να υπολογίσει την θέση εγγραφής για κάθε πλειάδα, η οποία βρίσκεται αποθηκευµένη στον πίνακα L και αντιστοιχεί το αποτέλεσµα στη θέση του πίνακα R out ανάλογα µε τον πίνακα L. Στις παραµέτρους περιέχονται ο συνολικός αριθµός των νηµάτων, ο αριθµός κατάτµησης F, το ιστόγραµµα κάθε νήµατος thist µε thist[t][p] να αντιστοιχεί στον αριθµό των πλειάδων που επεξεργάζεται το νήµα t και ανήκουν στο κοµµάτι p της σχέσης εισόδου (1<p<F), ο πίνακας µετατόπισης νηµάτων toffset όπου η θέση toffset[t][p] περιέχει την αρχική θέση για τις πλειάδες εξόδου του νήµατος t που ανήκουν στο τµήµα p και ο πίνακας L, ο οποίος περιέχει τις αρχικές θέσεις εγγραφής των πλειάδων εξόδου κάθε τµήµατος για το κάθε νήµα. Η αρχική θέση του κοµµατιού p για το νήµα t είναι L[(p-1) * #thread + t]. Τα βήµατα του αλγορίθµου έχουν ως εξής: 1)Κάθε νήµα κατασκευάζει το ιστόγραµµά του. 2)Κάθε νήµα γράφει το ιστόγραµµά του στον πίνακα L, έτσι ώστε L[(p-1) * #thread + t] = thist[t][p]. 3)Υπολογισµός του προθεµατικού αθροίσµατος στον L, µε το αποτέλεσµα να αποθηκεύεται επίσης στον L. 4) Κάθε νήµα ανανεώνει την µετατόπισή του έτσι ώστε toffset[t][p] = L[(p-* #thread + t]. 5) Κάθε νήµα εγγράφει τις πλειάδες του στον πίνακα R out βασισµένο στην µετατόπισή του. Τα πέντε αυτά βήµατα του αλγορίθµου εφαρµόζονται χρησιµοποιώντας τις προαναλυθήσες αρχέτυπες συναρτήσεις. Στο πρώτο βήµα χρησιµοποιείται η συνάρτηση map, στο τρίτο βήµα η συνάρτηση prefix scan, στο τέταρτο η συνάρτηση gather και στα άλλα δύο η συνάρτηση scatter Η συνάρτηση sort Η συνάρτηση αυτή χρησιµοποιείται σε αρκετούς τελεστές, όπως η πράξη της σύνδεσης και της πρόσµιξης. Η βασική λειτουργία αποτυπώνεται στον πίνακα

33 ΕΙΣΟ ΟΣ ΕΞΟ ΟΣ ΣΥΝΑΡΤΗΣΗ R in [1,,n] R out [1,,n] R out [i] = R in [i] µε R out [i]<r out [j], i<j Πίνακας 3.5 Έχουν υλοποιηθεί δύο αλγόριθµοι ταξινόµησης βασισµένοι σε συγκρίσεις, ο bitonic sort και ο quicksort. Ο πρώτος αλγόριθµος χρησιµοποιεί το δίκτυο bitonic sorting που είναι βασισµένο στην GPU, επειδή οι ανεξάρτητες ανταλλαγές των στοιχείων σε αυτόν τον αλγόριθµο αντιστοιχίζονται πολύ καλά στην πολυνηµατική αρχιτεκτονική της GPU. Παρ όλα αυτά, η πολυπλοκότητά του είναι Ο(Νlog 2 N), όπου Ν ο αριθµός των πλειάδων. Αντίθετα, ο αλγόριθµος quicksort έχει πολυπλοκότητα Ο(NlogN) και µε τη χρήση της αρχέτυπης συνάρτησης διαχωρισµού, µπορεί να υλοποιηθεί σε GPU. Οι δύο αλγόριθµοι παρουσιάζονται αναλυτικότερα παρακάτω. Ο αλγόριθµος bitonic sort συγχωνεύει τις bitonic ακολουθίες σε διάφορα στάδια. Μια τέτοια ακολουθία είναι µονοτονική και είναι είτε αύξουσα είτε φθίνουσα. οσµένης µιας σχέσης R in, ο αλγόριθµος έχει log 2 R in στάδια και το στάδιο x έχει x βήµατα (1<x<log 2 R in ). Στο βήµα i, ο αλγόριθµος κατασκευάζει ακολουθίες µεγέθους 2 i. Έτσι, µετά από log 2 R στάδια, η σχέση R είναι ταξινοµηµένη. Κάθε βήµα του αλγορίθµου εφαρµόζει την συνάρτηση map στην σχέση εισόδου και την συνάρτηση scatter για να εµφανίσει τα αποτελέσµατα. Ο αλγόριθµος quicksort έχει χαµηλότερη πολυπλοκότητα και επιπλέον χρησιµοποιεί την αποδοτική αρχέτυπη συνάρτηση split. Εκτελείται σε δύο βήµατα, µε το πρώτο να χρησιµοποιεί την συνάρτηση για να χωρίσει την σχέση εισόδου σε κοµµάτια, δεδοµένου ενός συνόλου αριθµών pivots τα οποία επιλέγονται τυχαία. Η διαδικασία διαχωρισµού εκτελείται αναδροµικά έως ότου κάθε κοµµάτι είναι µικρότερο από κάποιο προκαθορισµένο κατώφλι µεγέθους. Έπειτα, εφαρµόζεται ο αλγόριθµος bitonic sort, ο οποίος προτιµάται από τον αλγόριθµο insertion sort επειδή µπορεί να δουλέψει αποκλειστικά στην τοπική µνήµη και οι υπολογισµοί του ταιριάζουν στην παράλληλη εκτέλεση της GPU. 33

34 3.2 Αλγόριθµοι σύνδεσης Στο σηµείο αυτό θα αναλυθούν οι αλγόριθµοι συνδέσεων (joins) και πιο συγκεκριµένα ο αλγόριθµος σύνδεσης µε συγχώνευση και ταξινόµηση (sort merge join)και ο αλγόριθµος σύνδεσης µε κατακερµατισµό (hash join). Εφόσον οι αλγόριθµοι στις GPU είναι όµοιοι µε αυτούς στις CPU, η έρευνα τους εστιάστηκε στις διαφορές στην υλοποίηση και συγκεκριµένα στην χρήση των αρχέτυπων συναρτήσεων. Ειδικότερα, ο αλγόριθµος ταξινόµησης και συγχώνευσης χρησιµοποιεί την ταξινόµηση και στις δύο σχέσεις και στη συνέχεια εφαρµόζει την συνάρτηση map στην ταξινοµηµένη σχέση (πίνακας), ενώ ο αλγόριθµος σύνδεσης µε κατακερµατισµό χρησιµοποιεί την αρχέτυπη συνάρτηση διαχωρισµού και στις δύο σχέσεις. Το αποτέλεσµα που προκύπτει σαν έξοδος από κάθε αλγόριθµο σύνδεσης χρησιµοποιεί τις αρχέτυπες συναρτήσεις prefix scan και scatter Ο αλγόριθµος σύνδεσης µε ταξινόµηση και συγχώνευση. Ο αλγόριθµος αυτός είναι παρόµοιος µε τον παραδοσιακό αλγόριθµο ταξινόµησης και συγχώνευσης. Αρχικά ταξινοµούµε τις δύο σχέσεις R,S, δηλαδή τους δύο πίνακες µε τα δεδοµένα εισόδου, και στη συνέχεια συγχωνεύουµε τις σχέσεις που προκύπτουν. Το βήµα της συγχώνευσης γίνεται παράλληλα µε στόχο την πλήρη αξιοποίηση της υπολογιστικής δυνατότητας της GPU. Η βασική ιδέα είναι να εφαρµοστεί η συγχώνευση σε ένα κοµµάτι της µιας σχέσης και στο κοµµάτι της άλλης που του αντιστοιχεί, ανεξάρτητα. Αυτό γίνεται σε τρία βήµατα. Στο πρώτο, χωρίζουµε την µικρότερη σχέση S σε Q κοµµάτια, όπου Q = S / M. Το µέγεθος του κάθε κοµµατιού, εκτός από το τελευταίο, θα είναι ίσο µε Μ bytes για να χωράει ολόκληρο στην τοπική µνήµη. Στο δεύτερο βήµα, χρησιµοποιούµε τις τιµές-κλειδιά της πρώτης και της τελευταίας πλειάδας κάθε κοµµατιού της σχέσης S για να εντοπίσουµε την αρχή και το τέλος των αντίστοιχων κοµµατιών της σχέσης R. Τέλος, στο τρίτο βήµα συγχωνεύουµε τα κοµµάτια της S µε τα αντίστοιχα της R παράλληλα. Κάθε οµάδα νηµάτων ασχολείται µε ένα ζεύγος κοµµατιών. Κατά την διαδικασία της συγχώνευσης, το κοµµάτι της σχέσης S φορτώνεται αρχικά στην τοπική 34

35 µνήµη και στη συνέχεια οι πλειάδες της σχέσης R χρησιµοποιούνται για να βρεθούν τα αντίστοιχα αποτελέσµατα. Συγκεκριµένα, κάθε νήµα διαβάζει µια πλειάδα της R και κάνει αναζήτηση στο κοµµάτι της S για το ζευγάρι της Ο αλγόριθµος σύνδεσης µε κατακερµατισµό Ο αλγόριθµος αναπτύχθηκε υλοποιώντας µια παράλληλη εκδοχή του radix αλγορίθµου µε κατακερµατισµό. Η radix κατάτµηση γίνεται µε χρήση της πρωτόγονης συνάρτησης διαχωρισµού split και ο αλγόριθµος εκτελείται σε δύο βήµατα. Το πρώτο βήµα είναι η κατάτµηση. ιαχωρίζουµε τις σχέσεις R και S σε ίσο αριθµό τµηµάτων, χρησιµοποιώντας log 2 ( S /M) radix bits ώστε τα περισσότερα τµήµατα της S να χωράνε στην τοπική µνήµη. Η σύνδεση των R και S αποσυντίθεται σε πολλαπλές µικρότερες συνδέσεις σε τµήµατα της R και τα αντίστοιχα της S. Στο δεύτερο βήµα γίνεται η ταυτοποίηση ή αλλιώς το ταίριασµα. Επιλέγεται το µικρότερο τµήµα της R και της S, καθώς το ένα θα φορτωθεί στην κύρια µνήµη ως το εσωτερικό τµήµα και το άλλο ως το εξωτερικό κοµµάτι. Κάθε πλειάδα από το εξωτερικό τµήµα εφαρµόζει µία ακολουθιακή αναζήτηση ή µια δυαδική στο εσωτερικό κοµµάτι για να βρει το ζευγάρι του. Εάν χρησιµοποιηθεί δυαδική αναζήτηση θα πρέπει προηγουµένως να χρησιµοποιήσουµε την συνάρτηση ταξινόµησης bitonic sort για να ταξινοµήσουµε το εσωτερικό κοµµάτι. 3.3 Σύνοψη Το σύστηµα GDB αποτελεί ένα Σ Β σχεδιασµένο για να χρησιµοποιεί την GPU µε στόχο την καλύτερη απόδοση. Στα πλαίσια της παρούσας εργασίας θα χρησιµοποιηθούν οι αλγόριθµοι σύνδεσης µε κατακερµατισµό, σύνδεσης ταξινόµησης και συγχώνευσης και ο αλγόριθµος οµαδοποίησης. Το σύστηµα GDB σχεδιάστηκε έτσι ώστε να λαµβάνει υπόψη βελτιστοποιήσεις όσον αφορά την µνήµη της GPU. Ωστόσο στα πλαίσια αυτής της εργασίας δεν χρησιµοποιήθηκε ο σχεδιασµός αυτός καθώς θέλαµε να δούµε την συµπεριφορά των αλγορίθµων σε σχέση µε το πλήθος των µπλοκ και το πλήθος των νηµάτων. Περισσότερες πληροφορίες σχετικά µε τους υπόλοιπους αλγορίθµους του συστήµατος GDB, καθώς και των βελτιστοποιήσεων βρίσκονται στην αντίστοιχη εργασία [5]. 35

36 Κ ε φ ά λ α ι ο 4 Το πλαίσιο Map-Reduce σε GPU Το πλαίσιο Map-Reduce αποτελεί ένα προγραµµατιστικό µοντέλο και µια υλοποίηση σχεδιασµένη για την επεξεργασία και την παραγωγή µεγάλων συνόλων δεδοµένων. Αναπτύχθηκε αρχικά στην Google, από τους Jeffrey Dean και Sanjay Ghemawat. Το κίνητρό τους προήλθε από το µεγάλο πλήθος υπολογισµών που πραγµατοποιούνταν καθηµερινά από τη Google, οι οποίοι περιελάµβαναν µεγάλο αριθµό δεδοµένων εισόδου. Στα πλαίσια της παρούσας εργασίας χρησιµοποιήθηκε ένα πλαίσιο Map-Reduce το οποίο είναι επνευσµένο από το αντίστοιχο πλαίσιο Map-Reduce της Google, αλλά έχει σχεδιαστεί και υλοποιηθεί έτσι ώστε να αξιοποιεί τις επεξεργαστικές δυνατότητες της GPU. Το πλαίσιο αυτό ονοµάζεται Mars και παρουσιάστηκε από τους Bingsheng He, Wenbin Fang, Qiong Luo, Naga K. Govindaraju και Tuyong Wang [6]. 4.1 Οι αρχέτυπες συναρτήσεις Map και Reduce Το πλαίσιο Map-Reduce βασίζεται σε δύο αρχέτυπες συναρτήσεις, την Map και την Reduce. Αυτές ορίζονται όπως παρακάτω: Map : (k1,v1) (k2,v2)*. Reduce : (k2,v2*) (k2,v3)*. Η συνάρτηση του Map παίρνει ως είσοδο ένα ζεύγος κλειδιού/τιµής(k1,v1) και παράγει ως έξοδο µια λίστα µε ενδιάµεσα ζεύγη κλειδιών/τιµής (k2,v2). Η συνάρτηση του Reduce στη συνέχεια, παίρνει όλες τις τιµές που αφορούν το ίδιο κλειδί κάθε φορά και παράγει µια λίστα µε ζεύγη κλειδιών/τιµών. Η παράλληλη εκτέλεσή τους επιτυγχάνεται µέσω του συστήµατος κατά την εφαρµογή τους. 36

37 Ο παρακάτω ψευδοκώδικας αποτελεί ένα παράδειγµα εφαρµογής ενός προγράµµατος µε χρήση του Map-Reduce. Το πρόγραµµα µετράει τις εµφανίσεις της κάθε λέξης µέσα σε µια συλλογή εγγράφων. Σε αυτό το παράδειγµα, οι συναρτήσεις Map και Reduce υλοποιούνται µε τη χρήση 2 ενσωµατωµένων API's, τα Emit, EmitIntermediate, που βγάζουν τα τελικά και ενδιάµεσα αποτελέσµατα των συναρτήσεων αντίστοιχα. Map(void *doc) { } for each word w in doc EmitIntermediate(w, 1); Reduce(void* word, Iterator values) { } int result = 0; for each v in values result += v; Emit(word, result); //output word and its count Το Map-Reduce έχει εφαρµοστεί σε πολλά πεδία έρευνας, όπως η εξόρυξη δεδοµένων, µηχανική µάθηση και βιοπληροφορική. Επιπλέον, αρκετές υλοποιήσεις και επεκτάσεις έχουν προταθεί. Το Hadoop είναι µια υλοποίηση ανοιχτού λογισµικού, παρόµοια µε αυτήν της Google, από το Apache Software Foundation. Οι σχεδιαστές του Mars εστίασαν στον παραλληλισµό σε πολλαπλές CPU ή σε µία πολυπύρηνη CPU. Αφού η GPU είναι ένας συνεπεξεργαστής της CPU, το πλαίσιο αυτό συµπληρώνει τα ήδη υπάρχοντα. Σε αντίθεση µε άλλα, το πλαίσιο είναι χωρίς κλείδωµα χώρου και είναι επεκτάσιµο σε εκατοντάδες επεξεργαστές πάνω σε GPU s. 37

38 4.2 ιεπαφές εφαρµογών προγραµµατισµού (API s) Το πλαίσιο Map-Reduce παρέχει στον χρήστη ένα µικρό σύνολο από διεπαφές. Υπάρχουν δύο είδη διεπαφών, οι διεπαφές συστήµατος και οι διεπαφές χρήστη, µε την πρώτη κατηγορία να αφορά τις διεπαφές που παρέχει έτοιµες το σύστηµα, ενώ την δεύτερη αφορά εκείνες που υλοποιούν οι χρήστες. Το Mars έχει τα παρακάτω API s που ανήκουν σε αυτήν την κατηγορία, τα οποία υλοποιήθηκαν µε C/C++. Χρησιµοποιείται ο τύπος δεδοµένων void*, ώστε ο προγραµµατιστής να µπορεί να χειριστεί συµβολοσειρές και άλλες πολυπλοκότερες δοµές δεδοµένων µε ευκολία. //MAP_COUNT counts result size of the map function. void MAP_COUNT(void *key, void *val, int keysize, int valsize); //The map function voidmap(void *key, void* val, int keysize, int valsize); // counts result size of the reduce function. void REDUCE_COUNT(void* key, void* vals, int keysize, int valcount); //The reduce function void REDUCE(void* key, void* vals, int keysize, int valcount); Αντίστοιχα, υπάρχουν και για την πρώτη κατηγορία, τα παρακάτω έτοιµα API s. //Emit the key size and the value size in MAP_COUNT. void EMIT_INTERMEDIATE_COUNT(int keysize, int valsize); //Emit an intermediate result in MAP. void EMIT_INTERMEDIATE(void* key, void* val, int keysize, int valsize); 38

39 //Emit the key size and the value size in REDUCE_COUNT. void EMIT_COUNT(int keysize, int valsize); //Emit a final result in REDUCE. void EMIT(void *key, void* val, int keysize, int valsize); Η βασική διαφορά του Mars από τα πλαίσια σε CPU είναι ότι χρειάζονται δύο διεπαφές για να επιτευχθεί η λειτουργικότητα ενός αντίστοιχου σε CPU. Η πρώτη για να µετρήσει το µέγεθος των δεδοµένων που προκύπτουν ως αποτέλεσµα και η δεύτερη για να παρουσιάσει αυτά τα αποτελέσµατα. Αυτό συµβαίνει επειδή οι GPU s δεν υποστηρίζουν ατοµικές πράξεις. Ο ψευδοκώδικας που ακολουθεί δείχνει την χρήση του Map στο παράδειγµα εφαρµογής µέτρησης λέξεων σε ένα έγγραφο. Αντί για την συνολική επεξεργασία του εγγράφου, κάθε διεργασία επεξεργάζεται µια γραµµή του. Για κάθε λέξη, η συνάρτηση EMIT_INTERMIDIATE_COUNT παράγει ένα ζεύγος αριθµών, µε το µέγεθος της λέξης και το µέγεθος ενός ακεραίου σε bytes. Αντίστοιχα, η συνάρτηση EMIT_INTERMIDIATE παράγει τα ενδιάµεσα αποτελέσµατα, δηλαδή ένα ζεύγος µε την λέξη και τον αριθµό 1. //key is a line in the document. //val is the line ID MAP_COUNT(key, val, keysize, valsize){ for each word w in key EMIT_INTERMIDIATE_COUNT(w.length, sizeof(int)); } MAP (key, val, keysize, valsize) { } for each word w in key EMIT_INTERMIDIATE (w, 1); 39

40 4.3 Ροή λειτουργίας συστήµατος Όπως έχει αναφερθεί, το Mars έχει δύο στάδια: την συνάρτηση Map και την συνάρτηση Reduce. Πριν ξεκινήσει κάθε στάδιο, το σύστηµα αρχικοποιεί τις ρυθµίσεις των νηµάτων, δηλαδή πόσες οµάδες νηµάτων θα χρησιµοποιηθούν και πόσα νήµατα θα έχει η καθεµιά. Η επισκόπηση της λειτουργίας του αποτυπώνεται στην παρακάτω εικόνα. Εικόνα 4.1 Ροή λειτουργίας Mars Στο στάδιο του Map, η συνάρτηση διαχωρισµού split διαιρεί τα ζεύγη κλειδιού-τιµής σε πολλαπλά κοµµάτια, έτσι ώστε κάθε κοµµάτι να αντιστοιχεί σε ένα νήµα. Άρα, πετυχαίνεται η εξισορρόπηση φόρτου ανάµεσα στα νήµατα. Όταν ολοκληρωθεί το στάδιο αυτό, τα ενδιάµεσα ζεύγη ταξινοµούνται µε τρόπο ώστε τα ζεύγη µε το ίδιο κλειδί να αποθηκευτούν σε συνεχόµενες θέσεις. Στο στάδιο του Reduce, η συνάρτηση διαχωρισµού διαιρεί τα ενδιάµεσα ζεύγη που προέκυψαν σε κοµµάτια ίδιου µεγέθους, όσα και ο αριθµός των νηµάτων. Τα ζευγάρια µε ίδιο κλειδί τοποθετούνται στο ίδιο κοµµάτι. Το νήµα µε το µεγαλύτερο id νήµατος αναλαµβάνει τα ζεύγη µε το µεγαλύτερο κλειδί, εξασφαλίζοντας ότι η έξοδος θα είναι ταξινοµηµένη ως προς το κλειδί. Τα νήµατα σε αυτό το στάδιο είναι συνήθως ισορροπηµένα σε φόρτο. Η δυναµική εξισορρόπηση φόρτου δεν είναι εφαρµόσιµη, επειδή οι σύγχρονες GPU δεν υποστηρίζουν δυναµικό χρονοπρογραµµατισµό νηµάτων. Στο τελευταίο βήµα, η έξοδος που παράγει κάθε νήµα αποθηκεύεται σε έναν ενιαίο buffer. 40

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

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

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

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

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

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

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

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

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

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων ΠΕΡΙΕΧΟΜΕΝΑ Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων Εισαγωγή Η χρήση των μεταβλητών με δείκτες στην άλγεβρα είναι ένας ιδιαίτερα

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

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

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

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

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

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

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

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

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

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

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

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

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

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 5. Απλή Ταξινόμηση 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 11/11/2016 Εισαγωγή Η

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

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

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

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

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

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

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

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου

J-GANNO. Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β, Φεβ.1998) Χάρης Γεωργίου J-GANNO ΓΕΝΙΚΕΥΜΕΝΟ ΠΑΚΕΤΟ ΥΛΟΠΟΙΗΣΗΣ ΤΕΧΝΗΤΩΝ ΝΕΥΡΩΝΙΚΩΝ ΙΚΤΥΩΝ ΣΤΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ JAVA Σύντοµη αναφορά στους κύριους στόχους σχεδίασης και τα βασικά χαρακτηριστικά του πακέτου (προέκδοση 0.9Β,

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

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

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

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

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) Συσκευές αποθήκευσης Ένας υπολογιστής προκειµένου να αποθηκεύσει δεδοµένα χρησιµοποιεί δύο τρόπους αποθήκευσης: Την Κύρια Μνήµη Τις συσκευές µόνιµης αποθήκευσης (δευτερεύουσα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήµιο Θεσσαλίας

Πανεπιστήµιο Θεσσαλίας Πανεπιστήµιο Θεσσαλίας Τµήµα Πληροφορικής Ενότητα 8η: Συσκευές Ε/Ε - Αρτηρίες Άσκηση 1: Υπολογίστε το µέσο χρόνο ανάγνωσης ενός τµήµατος των 512 bytes σε µια µονάδα σκληρού δίσκου µε ταχύτητα περιστροφής

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3. Σελιδοποίηση μνήμης 4. Τμηματοποίηση χώρου διευθύνσεων

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

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

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

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

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

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος Πανεπιστήµιο Κρήτης, Τµήµα Επιστήµης Υπολογιστών 6 εκεµβρίου 2008 ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος 2008-09 Παναγιώτα Φατούρου Προγραµµατιστική Εργασία 3 ο Μέρος Ηµεροµηνία Παράδοσης:

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

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

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

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

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

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

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

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

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

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

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

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

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος εδοµένα οµές δεδοµένων και αλγόριθµοι Τα δεδοµένα είναι ακατέργαστα γεγονότα. Η συλλογή των ακατέργαστων δεδοµένων και ο συσχετισµός τους δίνει ως αποτέλεσµα την πληροφορία. Η µέτρηση, η κωδικοποίηση,

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

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

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

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

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης

Περιεχόμενα. Δομές δεδομένων. Τεχνικές σχεδίασης αλγορίθμων. Εισαγωγή στον προγραμματισμό. Υποπρογράμματα. Επαναληπτικά κριτήρια αξιολόγησης Περιεχόμενα Δομές δεδομένων 37. Δομές δεδομένων (θεωρητικά στοιχεία)...11 38. Εισαγωγή στους μονοδιάστατους πίνακες...16 39. Βασικές επεξεργασίες στους μονοδιάστατους πίνακες...25 40. Ασκήσεις στους μονοδιάστατους

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

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

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

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

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ Εαρινό Εξάμηνο 2016-2017 Υποχρεωτική εργασία Τα τελευταία χρόνια, λόγω της τεράστιας αύξησης της ποσότητας της πληροφορίας που έχουμε

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

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

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

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

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

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

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

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

Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών Παράλληλος Προγραμματισμός σε Επεξεργαστές Γραφικών Συστήματα Παράλληλης Επεξεργασίας 9ο εξάμηνο, ΣΗΜΜΥ Εργαστήριο Υπολογιστικών Συστημάτων (CSLab) Δεκέμβριος 2015 Περιεχόμενα 2 01 / 2014 Προγραμματισμός

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Εισαγωγή Η τακτοποίηση των δεδομένων με ιδιαίτερη σειρά είναι πολύ σημαντική λειτουργία που ονομάζεται

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΙΣ Β ΣΕ Ε Σ Ι ΟΜΕΝ

ΕΙΣΑΓΩΓΗ ΣΤΙΣ Β ΣΕ Ε Σ Ι ΟΜΕΝ ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ Βασικές Έννοιες - εδοµένα { Νίκος, Μιχάλης, Μαρία, Θάλασσα, Αυτοκίνητο }, αριθµοί, π.χ. {1, 2, 3, 5, 78}, συµβολοσειρές (strings) π.χ. { Κώστας, 5621, ΤΡ 882, 6&5 #1, +

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

Κεφάλαιο 5. Κεφ. 5 Λειτουργικά Συστήματα 1

Κεφάλαιο 5. Κεφ. 5 Λειτουργικά Συστήματα 1 Λειτουργικά Συστήματα Κεφάλαιο 5 Κεφ. 5 Λειτουργικά Συστήματα 1 Διαχείριση Κεντρικής Μνήμης Στην Κεντρική (κύρια) Μνήμη του Η/Υ αποθηκεύονται ανα πάσα στιγμή όλα τα προγράμματα που εκτελούνται στην ΚΜΕ

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

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

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

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

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

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

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

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: Σελίδα 1 από 11 Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για: την επικοινωνία, µε τα υπόλοιπα ολοκληρωµένα κυκλώµατα του υπολογιστικού συστήµατος. την παροχή τροφοδοσίας

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

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

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

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

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

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

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

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

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

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

Ε-85: Ειδικά Θέµατα Λογισµικού

Ε-85: Ειδικά Θέµατα Λογισµικού Ε-85: Ειδικά Θέµατα Λογισµικού Προγραµµατισµός Συστηµάτων Υψηλών Επιδόσεων Χειµερινό Εξάµηνο 2009-10 «ιεργασίες και Νήµατα» Παναγιώτης Χατζηδούκας (Π.Δ. 407/80) E-85: Ε.Θ.Λ: Προγραµµατισµός Συστηµάτων

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

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

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ ΜΑΘΗΜΑ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΑΚΑ. ΕΤΟΣ 2012-13 Ι ΑΣΚΟΝΤΕΣ Ιωάννης Βασιλείου Καθηγητής, Τοµέας Τεχνολογίας

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

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

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

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

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

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

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

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Κατακερματισμός 1 Αποθήκευση εδομένων (σύνοψη) Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο Παραδοσιακά, μία σχέση (πίνακας/στιγμιότυπο) αποθηκεύεται σε ένα αρχείο Αρχείο δεδομένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική 2. Δομές δεδομένων και αρχείων

Πληροφορική 2. Δομές δεδομένων και αρχείων Πληροφορική 2 Δομές δεδομένων και αρχείων 1 2 Δομή Δεδομένων (data structure) Δομή δεδομένων είναι μια συλλογή δεδομένων που έχουν μεταξύ τους μια συγκεκριμένη σχέση Παραδείγματα δομών δεδομένων Πίνακες

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

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

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

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

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

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

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

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

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

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

Παράλληλη Επεξεργασία Εργαστηριακή Ασκηση Εαρινού Εξαµήνου 2008

Παράλληλη Επεξεργασία Εργαστηριακή Ασκηση Εαρινού Εξαµήνου 2008 Παράλληλη Επεξεργασία Εργαστηριακή Ασκηση Εαρινού Εξαµήνου 2008 Αντικείµενο της εργαστηριακής άσκησης για το 2008 αποτελεί το πρόβληµα της εύρεσης της κατανοµής ϑερµότητας ενός αντικειµένου σε σταθερή

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

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

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

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

Σχεδιασµός βασισµένος σε συνιστώσες

Σχεδιασµός βασισµένος σε συνιστώσες Σχεδιασµός βασισµένος σε συνιστώσες 1 Ενδεικτικά περιεχόµενα του κεφαλαίου Ποια είναι τα "άτοµα", από τα οποία κατασκευάζονται οι υπηρεσίες; Πώς οργανώνουµε τις συνιστώσες σε ένα αρµονικό σύνολο; Τι είναι

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

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

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

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

ΚΕΦΑΛΑΙΟ 1 ΥΛΙΚΟ ΥΠΟΛΟΓΙΣΤΩΝ

ΚΕΦΑΛΑΙΟ 1 ΥΛΙΚΟ ΥΠΟΛΟΓΙΣΤΩΝ 1.1 Το Υπολογιστικό Σύστηµα ΚΕΦΑΛΑΙΟ 1 ΥΛΙΚΟ ΥΠΟΛΟΓΙΣΤΩΝ Από τον υπολογιστή των Αντικυθήρων µέχρι τα αυτοκίνητα χωρίς οδηγό Κατηγορίες µε βάση το µέγεθος και τη χρήση: Υπερυπολογιστές (supercomputers)

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

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

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

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

Παραλληλισµός Εντολών (Pipelining)

Παραλληλισµός Εντολών (Pipelining) ΕΣ 08 Επεξεργαστές Ψηφιακών Σηµάτων Παραλληλισµός Εντολών (Pipelining) Τµήµα Επιστήµη και Τεχνολογίας Τηλεπικοινωνιών Πανεπιστήµιο Πελοποννήσου Βιβλιογραφία Ενότητας Kuo [2005]: Chapter 3: Section 3.4,

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

Κεφ.11: Ευρετήρια και Κατακερματισμός

Κεφ.11: Ευρετήρια και Κατακερματισμός Κεφ.11: Ευρετήρια και Κατακερματισμός Database System Concepts, 6 th Ed. See www.db-book.com for conditions on re-use Κεφ. 11: Ευρετήρια-Βασική θεωρία Μηχανισμοί ευρετηρίου χρησιμοποιούνται για την επιτάχυνση

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

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

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

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

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

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

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

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

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

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων Σ Β Βάση εδομένων Η ομή ενός ΣΒ Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 1 Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 2 Εισαγωγή Εισαγωγή ΜΕΡΟΣ 1 (Χρήση Σ Β ) Γενική

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

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

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

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

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

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

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

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

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

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

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή

ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή ΕΝΟΤΗΤΑ 2 η ΙΑΧΕΙΡΙΣΗ ΡΟΗΣ ΕΡΓΑΣΙΑΣ (WORKFLOW MANAGEMENT) 2.1 Εισαγωγή Οι σηµερινές δραστηριότητες των επιχειρήσεων δηµιουργούν την ανάγκη για όσο το δυνατό µεγαλύτερη υποστήριξη από τα πληροφοριακά τους

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

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη

Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη Τεχνικές ταξινόµησης αποτελεσµάτων µηχανών αναζήτησης µε βάση την ιστορία του χρήστη Όνοµα: Νικολαΐδης Αντώνιος Επιβλέπων: Τ. Σελλής Περίληψη ιπλωµατικής Εργασίας Συνεπιβλέποντες: Θ. αλαµάγκας, Γ. Γιαννόπουλος

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Τελικό επαναληπτικό διαγώνισμα Επιμέλεια: Δρεμούσης Παντελής

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

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

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

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

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

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

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Εισαγωγή ΣΔΒΔ Σύνολο από προγράµµατα για τη διαχείριση της ΒΔ Αρχεία ευρετηρίου Κατάλογος ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ Αρχεία δεδοµένων συστήµατος Σύστηµα Βάσεων Δεδοµένων (ΣΒΔ)

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

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο Κατακερµατισµός 1 Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο 1. Αρχεία Σωρού 2. Ταξινοµηµένα Αρχεία Φυσική διάταξη των εγγραφών

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

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

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

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

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

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

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

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

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

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

All Pairs Shortest Path

All Pairs Shortest Path All Pairs Shortest Path χρησιμοποιώντας Κυπριώτη Αικατερίνη 6960 Μόσχογλου Στυλιανός 6978 20 Ιανουαρίου 2012 Περιεχόμενα 1 Πρόλογος 3 2 Ο σειριακός APSP 3 3 Η παραλληλοποίηση με 5 3.1 Το προγραμματιστικό

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

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

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

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Επεξεργασία Ερωτήσεων Αρχεία ευρετηρίου Κατάλογος συστήματος Αρχεία δεδομένων ΒΑΣΗ Ε ΟΜΕΝΩΝ Σύστημα Βάσεων εδομένων (ΣΒ ) Βάσεις Δεδομένων 2007-2008

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