| Καθηγητής: | Νεκτάριος Κοζύρης ( nkoziris@cslab.ece.ntua.gr ) |
|---|---|
| Επικοινωνία: | Γεώργιος Τσουκαλάς ( gtsouk@cslab.ece.ntua.gr ) |
| Άτομα: | 1-2 |
Για την προσέγγιση των θεμάτων που θίγουν οι ερωτήσεις αυτές απαιτείται γνώση του ενδότερου χώρου της οργάνωσης και του προγραμματισμού των σύγχρονων υπολογιστών. Από τα επιμέρους στοιχεία του χώρου αυτού θα επιλεγεί ένα σύνολο ως αντικείμενο μελέτης της διπλωματικής εργασίας. Σκοπός της εργασίας είναι γραφτεί ένα μικρό πρόγραμμα που θα αναδεικνύει την ύπαρξη του καθενός καθώς και την επίδρασή του στην επίδοση -- είτε ποιοτικά, είτε ποσοτικά. Τα προγράμματα αυτά θα συγκεντρωθούν σε μια βιβλιοθήκη. Με χρήση της βιβλιοθήκης θα μελετηθούν διαφορετικοί επεξεργαστές και για κάθε έναν θα εξαχθεί ένα αρχιτεκτονικό 'στίγμα' επιδόσεων με βάση τη συμπεριφορά του στα επιμέρους θέματα που αναδεικνύουν τα προγράμματα.
Τα αποτελέσματα της συνολικής μελέτης θα προσφέρουν τη γνώση και την τεχνική ώστε να μπορούν να συζητηθούν ερωτήματα του είδους που παρουσιάστηκαν προηγουμένως.
Ακολουθεί περιγραφή της εργασίας και μία προτεινόμενη διάρθρωση σε φάσεις. Στη συνέχεια παρατίθενται λίστες με απαιτήσεις, αναμενόμενα κέρδη καθώς και ενδεικτικές λίστες με ζητήματα και προγραμματιστικές τεχνικές τα οποία θα μπορούσαν να απασχολήσουν το φοιτητή. Στο τέλος παρατίθεται λίστα με τους διαφορετικούς επεξεργαστές που είναι διαθέσιμοι για μελέτη στο Εργαστήριο Υπολογιστικών Συστημάτων.
Η τεχνολογία των επεξεργαστών των υπολογιστών έχει αφήσει πίσω της την εποχή που η συχνότητα του ρολογιού αποτελούσε τον κυρίαρχο παράγοντα των επιδόσεων. Πλέον η βελτίωση των επιδόσεων διεκδικείται με την εξυπνότερη και πολυπλοκότερη χρήση της εκθετικά αυξανόμενης χωρητικότητας των ολοκληρωμένων κυκλωμάτων. Οι επεξεργαστές και η ιεραρχία της μνήμης αποκτούν περισσότερη λογική, οι επεξεργαστές οργανώνονται σε πολυπύρηνες αρχιτεκτονικές, ενώ οι περιφερειακές συσκευές τους ανταγωνίζονται ουσιωδώς για την πρόσβαση της μνήμης.
Σε αυτό το πολύπλοκο σκηνικό η επίδοση του λογισμικού εξαρτάται από πλήθος σημαντικών παραγόντων που σχετίζονται με την οργάνωση των επεξεργαστών και την υποστήριξή τους από τους μεταγλωττιστές. Είναι χρήσιμο κανείς να αποκτήσει σαφή γνώση του ρόλου των διαφόρων αυτών παραγόντων έτσι ώστε να μπορεί να κρίνει, να επιλέγει και να βελτιστοποιεί λύσεις σε υπολογιστικά προβλήματα, μέσω κατάλληλης επιλογής υλικού και λογισμικού. Δεν μπορεί να πει κανείς ότι όλα τα προβλήματα μπορούν να προσεγγισθούν με ένα απλό μοντέλο. Στην αγορά υπάρχουν πολλά είδη επεξεργαστών με διαφορετικά χαρακτηριστικά -- υπερμεγέθεις περίπλοκοι πυρήνες, πολλαπλοί απλούστεροι πυρήνες, απλοί επεξεργαστές ενσωματωμένων συστημάτων. Επίσης υπάρχουν πολλών ειδών εφαρμογές με διαφορετικές απαιτήσεις -- υπολογιστικές επιστημονικές εφαρμογές, εξυπηρετητές περιεχόμενου, λογισμικό δικτύου, λογισμικό επεξεργασίας πολυμέσων. Σε κάθε περίπτωση όμως, η αξιολόγηση των επιμέρους παραγόντων που επηρεάζουν την επίδοση είναι κρίσιμη για την κατανόηση και την βέλτιστη εκμετάλλευση των διαθέσιμων τεχνολογιών.
Στο πλαίσιo της διπλωματικής του εργασίας ο φοιτητής καλείται να μελετήσει την αρχιτεκτονική σύγχρονων επεξεργαστών και να επινοήσει τρόπους να εκθέσει και να αξιολογήσει τη συμβολή των διαφόρων χαρακτηριστικών τους στην επίδοσή τους. Συγκεντρώνοντας όλα τα προγράμματα που θα αναπτυχθούν, θα δημιουργηθεί μια βιβλιοθήκη και ένα εργαλείο με το οποίο θα μελετηθούν σύγχρονοι επεξεργαστές, ποιοτικά και/ή ποσοτικά, ως προς τα επιμέρους χαρακτηριστικά τους. Καταγράφοντας το στίγμα των επιδόσεων κάθε επεξεργαστή θα καταστρωθεί ένας αρχιτεκτονικός χάρτης που θα αποδίδει εποπτικά τη συμβολή των διαφόρων παραγόντων στον τελικό χρόνο εκτέλεσης των εφαρμογών.
Τα προγράμματα που θα περιέχει η βιβλιοθήκη ενδεικτικά θα μπορούσαν να έχουν ως αντικείμενο:
- Μέτρηση μεγέθους cache, cacheline
- Μέτρηση ρυθμού πρόσβασης στη μνήμη
- Μέτρηση πλήθους γεγονότων στην ιεραρχία μνήμης (cache load / writeback / miss)
- Μέτρηση πλήθους γεγονότων στον επεξεργαστή (Instructions per Clock, Branch mispredictions)
- κ.ά.
Ακολουθεί η προτεινόμενη διάρθρωση σε φάσεις καθώς και ενδεικτικές λίστες με θέματα και τεχνικές που θα μπορούσαν να μελετηθούν κατά τη διάρκεια της εργασίας.
- Πρόγραμμα που θα αναδεικνύει τη συμβολή του στην επίδοση του επεξεργαστή ποιοτικά και αν είναι δυνατόν, ποσοτικά. Ενδεικτικά αναφέρονται προγραμματικές τεχνικές στην πιο κάτω λίστα με τίτλο 'Προγραμματιστικές τεχνικές ...'
- Σχέδιο για την επαλήθευση και επικύρωση των αποτελεσμάτων.
- Τεκμηρίωση για τις παραπάνω εργασίες.
- Σημαντικότητα των διαφόρων αρχιτεκτονικών χαρακτηριστικών.
- Αποτελεσματικότητα των διαφόρων προγραμματιστικών τεχνικών.
- Εξέλιξη των επεξεργαστών και της επίδοσής τους.
- Μελλοντικές εξελίξεις.
- Προγραμματισμός Υπολογιστών
- Γλώσσες προγραμματισμού C / Assembly.
- Οργάνωση Υπολογιστών.
- Πολύ καλή γνώση αρχιτεκτονικής και προγραμματισμού σύγχρονων επεξεργαστών,
- Προγραμματιστικές τεχνικές για την παρακολούθηση της επίδοσης και τη βελτιστοποίηση κώδικα.
- Σε βάθος γνώσεις και γενική εποπτεία σε θέματα οργάνωσης και προγραμματισμού υπολογιστών. Τα ερωτήματα που παρουσιάζονται στην αρχή του παρόντος κειμένου θα μπορούν να συζητηθούν ουσιαστικά.
Μονολεκτικά (και ίσως αδόκιμα) αναφέρονται θέματα που διαμορφώνουν την επίδοση. Ο φοιτητής καλείται να επιλέξει και να μελετήσει όσα από αυτά τα θέματα επιθυμεί ή και από άλλα που θα προτείνει.
- Instruction Decoding Rate
- Instruction Issuing Rate
- Instructions Per Clock (IPC)
- Pipeline Stall
- Branch Misprediction Penalty
- L1 / L2 / Main Memory Latency
- Memory Throughput
- Memory Access Patterns
- Value Forwarding
- Hardware Prefetching
- Software Prefetching
- Special Memory Operations (Write-Combining, UnCachable regions, Streaming)
- Vector Processing
- Instruction Execution Latency
- Instruction Scheduling
- Shared Pipelines
- Shared Cache (MultiCores)
- Shared / Partitioned Execution Resources (SMT)
- Out of Order window size
Μονολεκτικά αναφέρονται τεχνικές που μπορούν να ληφθούν υπόψη στην προσπάθεια της ανάδειξης μέσω προγραμματισμού των υπό μελέτη θεμάτων.
- Loop unrolling
- Vectorizing
- False dependency elimination
- Branch elimination
- Prefetching
- Instruction elimination
- Instruction Scheduling
- 32/64/128 bit processing
- Special purpose instructions
Στο Εργαστήριο αυτή τη στιγμή είναι διαθέσιμοι οι παρακάτω διαφορετικοί επεξεργαστές. Από αυτούς ο φοιτητής καλείται να επιλέξει όσους θέλει για να τους συμπεριλάβει στη μελέτη του.
- AMD Opteron (64-bit, Multicore)
- AMD Athlon XP
- Intel Woodcrest (Core 2 Server, new!)
- Intel Itanium 2
- Intel Pentium IV (Xeon, Hyperthreading, 64-bit)
- Intel Pentium III (Xeon)
- Intel Pentium II
- OLPC (AMD Geode) ($100 laptop -- new!)
- Old UltraSPARCs (RISC)
Σημειώσεις:
- Ο Intel Woodcrest είναι η έκδοση 'server' της καινούριας γενιάς επεξεργαστών της Intel, Core 2. Το εμπορικό του όνομα είναι Xeon 5100.
- To One Laptop Per Child (OLPC, http://www.laptop.org/), είναι ένα project που ξεκίνησε με το Nicholas Negroponte στο M.I.T. με στόχο την παραγωγή ενός φθηνού laptop το οποίο θα μπορεί να χρησιμοποιηθεί για την εκπαίδευση των παιδιών σε φτωχές χώρες. Το εργαστήριο διαθέτει αναπτυξιακά boards τα οποία θα μπορούσαν να μελετηθούν.
- Ενδέχεται στο άμεσο μέλλον να υπάρχει διαθέσιμος και επεξεργαστής IBM Cell. Ο επεξεργστής αυτός θα χρησιμοποιηθεί στο PlayStation 3 ενώ χρησιμοποιείται και σε καινούριους servers της IBM. Η αρχιτεκτονική του είναι καινούρια και ιδιαίτερη για τον χώρο των επεξεργαστών γενικού σκοπού. Θα μπορούσε να αποτελέσει ενδιαφέρον αντικείμενο μελέτης λόγω της διαφορετικότητάς του από τους υπόλοιπους επεξεργαστές της λίστας.
Σύνδεσμοι από το μάθημα 'Προηγμένα Θέματα Οργάνωσης Υπολογιστών'
IBM Cell processor
One Laptop Per Child (OLPC)