Υλοποίηση Βιβλιοθήκης Προγραμμάτων για την Μελέτη Επιδόσεων Σύγχρονων Επεξεργαστών

Καθηγητής: Νεκτάριος Κοζύρης ( 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. Η αρχιτεκτονική του είναι καινούρια και ιδιαίτερη για τον χώρο των επεξεργαστών γενικού σκοπού. Θα μπορούσε να αποτελέσει ενδιαφέρον αντικείμενο μελέτης λόγω της διαφορετικότητάς του από τους υπόλοιπους επεξεργαστές της λίστας.

Σχετικοί Σύνδεσμοι