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



Σχετικά έγγραφα
ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ << ΜΕΛΕΤΗ ΤΗΣ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ CUDA ΚΑΙ ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΚΑΡΤΩΝ GPU ΤΗΣ NVIDIA >> Αρ. Μητρώου: 04/2519

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ

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

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

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

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

Πληροφορική Ι. Μάθημα 6 ο Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας

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

Chapter 4 (1) Αξιολόγηση και κατανόηση της απόδοσης

Βασίλειος Κοντογιάννης ΠΕ19

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

*Ένας υπολογιστής είναι στην πραγματικότητα ένα σύστημα πολλών μερών που συνεργάζονται μεταξύ τους.

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

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

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

i Όλες οι σύγχρονες ΚΜΕ είναι πολυπλοκότερες!

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

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

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

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

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

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

Chapter 4 ( ή 1 στο βιβλίο σας)

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

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

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

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

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

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

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

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

Δομή Ηλεκτρονικού υπολογιστή

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 1. Αφηρηµένες έννοιες και τεχνολογία υπολογιστών

EM 361: Παράλληλοι Υπολογισμοί

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

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

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

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

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

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

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

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

ΧΡΟΝΙΚΗ ΠΕΡΙΟΔΟΣ Γεωργία Πελέκη, Έλντα Μπάλι Τζαφέρι Τζένη, Αλεξία Παπαδοπούλου, Ντοριλέιν Γκαρσία

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 6 : Εκτέλεση πράξεων, Αρχιτεκτονική Η/Υ. Δρ.

Ηλεκτρονικοί Υπολογιστές Δ Εξάμηνο

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

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

Αρχιτεκτονική Eckert-von Neumann. Πως λειτουργεί η ΚΜΕ; Κεντρική μονάδα επεξεργασίας [3] ΕΠΛ 031: ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Εφαρµογές Πληροφορικής Υπολογιστών. Κεφάλαιο 3 Το υλικό του υπολογιστή

1.4 Τεχνολογικές εξελίξεις στο Υλικό Υπολογιστών

Μάθημα 3: Αρχιτεκτονική Υπολογιστών

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

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

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

Παραλληλισμός σε επίπεδο εντολών

Κεντρική Μονάδα Επεξεργασίας. Επανάληψη: Απόδοση ΚΜΕ. ΚΜΕ ενός κύκλου (single-cycle) Παραλληλισμός σε επίπεδο εντολών. Υπολογιστικό σύστημα

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 10: Επίδοση Επεξεργαστών, CPI. Μανόλης Γ.Η. Κατεβαίνης

Η ΤΑΞΙΝΟΜΗΣΗ ΤΟΥ FLYNN!!! 1 ο ΕΠΑΛ ΡΟΔΟΥ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ!!!! Χατζηνικόλας Κώστας

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων.

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

Το υλικό του υπολογιστή

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

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

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 1 ο

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

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

Εισαγωγή στην Αρχιτεκτονική Η/Υ

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

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α ΤΑΞΗ

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

Φόρμα Σχεδιασμού Διάλεξης (ημ/α:15/10/07, έκδοση:0.1 ) 1. Κωδικός Μαθήματος : 2. Α/Α Διάλεξης : 1 1. Τίτλος : 1. Εισαγωγή στην Αρχιτεκτονική Η/Υ

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

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

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

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

Εισαγωγή στην Δομή, Οργάνωση, Λειτουργία και Αξιολόγηση Υπολογιστών

Αρχιτεκτονικη υπολογιστων

Συστήματα σε Ολοκληρωμένα Κυκλώματα

Προχωρηµένα Θέµατα Αρχιτεκτονικής

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ II. χειμερινό εξάμηνο & εαρινό εξάμηνο (σε κίτρινο υπόβαθρο)

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

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

1.4 Κατάταξη των υπολογιστών

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

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

Υ- 01 Αρχιτεκτονική Υπολογιστών Εισαγωγή

ΜΑΘΗΜΑ 1- MULTIPLE CHOICE

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

Κυκλωμάτων» Χειμερινό εξάμηνο

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο

Λίγα λόγια από το συγγραφέα Εισαγωγή στους υπολογιστές Μονάδες µέτρησης χωρητικότητας Συσκευές εισόδου...

Παράλληλη Επεξεργασία Κεφάλαιο 1 Γιατί Παράλληλος Προγραμματισμός;

Transcript:

ΠΡΟΗΓΜΕΝΕΣ ΑΡΧΙΤΕΚΤΟΝΙΚΕΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΑΡΑΛΛΗΛΑ ΣΥΣΤΗΜΑΤΑ Κων/νος Διαμαντάρας Τμήμα Πληροφορικής ΑΤΕΙ Θεσσαλονίκης Σίνδος 2011

Κεφάλαιο 1: Εισαγωγή 2 1 Εισαγωγή στη μοντέρνα αρχιτεκτονική των υπολογιστών 11 Ιστορία των εξελίξεων στην ανάπτυξη των υπολογιστών Η εξέλιξη στην τεχνολογία των υπολογιστών υπήρξε ραγδαία τις τελευταίες δεκαετίες Το 1945 δεν υπήρχαν υπολογιστές με δυνατότητα αποθήκευσης προγραμμάτων Σήμερα με λίγες εκατοντάδες ευρώ μπορεί να αγοράσει κανείς υπολογιστές που έχουν καλύτερη απόδοση, περισσότερη μνήμη, και μεγαλύτερη χωρητικότητα δίσκου από έναν υπολογιστή που κόστιζε πολλά εκατοντάδες εκατομμύρια το 1980 Στην αρχή τις δεκαετίας του 1970 έκαναν την εμφάνισή τους τα πρώτα ολοκληρωμένα κυκλώματα Τη δεκαετία εκείνη η επίδοση των υπολογιστών βελτιωνόταν με ρυθμό περίπου 25% με 30% κάθε χρόνο και οι υπολογιστές που κυριαρχούσαν στην αγορά ήταν μεγάλοι σε μέγεθος και σε κόστος (τα λεγόμενα mainframes και οι mini-computers) Το 1971 έκανε την εμφάνισή του o πρώτος μικροεπεξεργαστής μέσα σε ένα chip: ο επεξεργαστής 4004 της Intel ο οποίος διέθετε 2300 τρανζίστορς ενώ είχε ταχύτητα ρολογιού 740 khz, εύρος διαύλου bus 4 bits και επίδοση 70 χιλιάδες εντολές το δευτερόλεπτο (0,07 MIPS) Από την αρχή της ιστορίας των υπολογιστών η βάση εξέλιξης της αρχιτεκτονικής τους στηριζόταν σε τρεις βασικές αρχές: Στο pipelining, το οποίο επέτρεπε την ταυτόχρονη εκτέλεση πολλαπλών εντολών, έστω και σε διαφορετικές φάσεις η κάθε μια, από μια μόνο κεντρική επεξεργαστική μονάδα Στον παραλληλισμό, ο οποίος με χρήση πολλών επεξεργαστικών μονάδων επιτρέπει την ταυτόχρονη εκτέλεση πολλαπλών εντολών και Στην αρχή της τοπικότητας των κλήσεων που καθιστά ανταποδοτική την χρήση της κρυφής μνήμης (cache) και της εικονικής μνήμης (virtual memory) Παρά τις τρεις παραπάνω βασικές αρχές που εξελίσσονται με το χρόνο, το βασικό αρχιτεκτονικό μοντέλο παραμένει σταθερό από την δεκαετία του 1950 Πρόκειται για το μοντέλο Von Neumann (Σχήμα 1) που αποτελείται από τέσσερα βασικά δομικά στοιχεία: Την Κεντρική Μονάδα Επεξεργασίας (Central Processing Unit CPU) που περιέχει την Αριθμητική-Λογική Μονάδα (Arithmetic-Logic Unit ALU) για την εκτέλεση αριθμητικών και λογικών πράξεων, τους Καταχωρητές (Registers) για την ταχεία αποθήκευση και ανάκτηση των μεταβλητών που χρησιμοποιούνται στις πράξεις, τη Μονάδα Ελέγχου (Control Unit) που μεταφράζει τις εντολές σε εσωτερικά σήματα και τις εκτελεί, και τον Μετρητή Προγράμματος (Program Counter) που δείχνει στη διεύθυνση μνήμης της επόμενης εντολής που πρόκειται να εκτελεστεί Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 3 Τη μνήμη για την αποθήκευση εντολών και δεδομένων Η υλοποιείται σήμερα σα μια ιεραρχία υποσυστημάτων με διαφορετικές ταχύτητες προσπέλασης (κύρια μνήμη και διάφορα επίπεδα κρυφής μνήμης cache) Οι συσκευές Εισόδου και Εξόδου (Input/Output I/O) όπως σκληροί δίσκοι, πληκτρολόγια, ποντίκια, οθόνες, κάρτες δικτύου, κλπ Μνήμη Κεντρική Μονάδα Επεξεργασίας Μονάδα Ελέγχου ALU Είσοδος / Έξοδος Συσκευή Εισόδου 1 Συσκευή Εισόδου Ν Ιεραρχία Μνήμης Καταχωρητές Μετρητής Προγράμματος Συσκευή Εξόδου 1 Δίαυλος (Bus) μνήμης Δίαυλος (Bus) I/O Συσκευή Εξόδου Μ Σχήμα 1: Το αρχιτεκτονικό μοντέλο Von Neumann (διασκευασμένο από Jean Loup Baer Microprocessor Arhitecture, Cambridge University Press) Σύμφωνα με το μοντέλο Von Neumann ο κύκλος εκτέλεσης μιας εντολής αποτελείται από 4 φάσεις: 1 Τη φάση προσκόμισης της επόμενης εντολής (fetch cycle) 2 Τη φάση αποκωδικοποίησης της εντολής (decode cycle) 3 Τη φάση εκτέλεσης (execution cycle) 4 Ενημέρωση του Μετρητή Προγράμματος (program counter) και επιστροφή στο βήμα 1 Φυσικά όλες οι φάσεις αυτές έχουν βελτιστοποιηθεί όλα αυτά τα χρόνια αλλά το βασικό σχήμα εκτέλεσης μιας εντολής παραμένει το ίδιο 111 Τεχνολογικές εξελίξεις Ταυτόχρονα με την εξέλιξη της αρχιτεκτονικής υπήρξε και αλματώδης εξέλιξη της τεχνολογίας των ολοκληρωμένων κυκλωμάτων Μέχρι περίπου το 2006 η εξέλιξή της έγινε πάνω σε δύο βασικούς άξονες: Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 4 (α) στην αύξηση της πυκνότητας των τρανζίστορ και (β) στην βελτίωση του συνόλου των εντολών που εκτελεί ο επεξεργαστής Στα πλαίσια του πρώτου άξονα υπήρξε αλματώδης εξέλιξη της τεχνολογίας ολοκληρωμένων κυκλωμάτων Η αρχική τεχνολογία Ολοκληρωμένων Κυκλωμάτων Μικρής Κλίμακας (Small Scale Integration - SSI) με μερικές χιλιάδες τρανζίστορς ανά chip, έδωσε διαδοχικά τη θέση της στις τεχνολογίες Ολοκληρωμένων Κυκλωμάτων Μεσαίας Κλίμακας (Medium Scale Integration - MSI), με 10000 έως 100000 τρανζίστορς ανά chip (1975 1982) Μεγάλης Κλίμακας (Large Scale Integration - LSI), με 100000 έως 1000000 τρανζίστορς ανά chip (1982 1988), και Πολύ Μεγάλης Κλίμακας (Very Large Scale Integration (VLSI) με 1000000 έως 1000000000 τρανζίστορς ανά chip (1988 σήμερα) Στο Σχήμα 2 φαίνεται η εξέλιξη του πλήθους των τρανζίστορ ανά chip στην οικογένεια των επεξεργαστών της Intel Το γράφημα ωστόσο χαρακτηρίζει ολόκληρη την βιομηχανία των επεξεργαστών Παρατηρήστε ότι ο άξονας y είναι σε λογαριθμική κλίμακα Βλέπουμε ότι η πυκνότητα αυξάνεται εκθετικά με το χρόνο και διπλασιάζεται περίπου κάθε 2 χρόνια Αυτή η εξέλιξη είναι γνωστή και ως Νόμος του Moore 1 Η πυκνότητα των τρανζίστορ, φυσικά, σχετίζεται και με το μέγεθος των τρανζίστορ το οποίο συνεχώς μικραίνει Όπως βλέπουμε στο Σχήμα 3, το μέγεθος αυτό ξεκίνησε περίπου στα 10 μm (=10-8 m) το 1971 και βρίσκεται σήμερα περίπου στα 30 nm (=3 10-11 m) 1 Το 1965 ο Gordon Moore συνιδρυτής της Intel προέβλεψε ότι το πλήθος των τρανζίστορ σε ένα συγκεκριμένο εμβαδόν πυριτίου θα διπλασιαζόταν κάθε δύο χρόνια Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 5 Σχήμα 2: Η εξέλιξη της πυκνότητας των τρανζίστορ σε ένα chip στην οικογένεια επεξεργαστών της Intel Ταυτόχρονα με την σμίκρυνση των τρανζίστορ παρατηρείται και αύξηση της συχνότητας του ρολογιού του επεξεργαστή (clock frequency) Αυτό φαίνεται καθαρά στο Σχήμα 4 Παρατηρούμε ωστόσο ότι από το 2006 περίπου και μετά η ταχύτητα του ρολογιού δεν αυξάνεται δραματικά και μάλλον παραμένει στάσιμη, λίγο πάνω από το όριο των 3 GHz Αυτή είναι μια πολύ σημαντική παρατήρηση με την οποία θα ασχοληθούμε περισσότερο παρακάτω Μέχρι το 2006 ο δεύτερος άξονας ανάπτυξης της τεχνολογίας ήταν η βελτίωση του συνόλου των εντολών και της εκτέλεσής τους από τους επεξεργαστές Στις αρχές τις δεκαετίας του '80 έγινε σαφές ότι πρέπει να δοθεί έμφαση στο σχεδιασμό του συνόλου των εντολών που υλοποιεί ένας υπολογιστής (Instruction Set) Έκανε την εμφάνισή της η τεχνολογία RISC (Reduced Instruction Set) η οποία αποτέλεσε ουσιαστική επανάσταση στον τομέα της αρχιτεκτονικής Οι υπολογιστές RISC που έκαναν την εμφάνισή τους από το '85 και μετά παρουσιάζουν μια βελτίωση της απόδοσης κατά 50% ετησίως H Intel που παραδοσιακά ακολουθούσε την τακτική των πολύπλοκών εντολών, σε αντίθεση δηλαδή με το RISC, αναγκάστηκε να μετατρέψει εσωτερικά τις εντολές των επεξεργαστών x86 σε απλοποιημένες εντολές τύπου RISC ώστε να ανταπεξέλθει στον ανταγωνισμό Ωστόσο με την δραματική αύξηση του πλήθους των τρανζίστορ στον επεξεραστή, στα τέλη της δεκαετίας του 1990, το κόστος για την επεξεργασία πολύπλοκων εντολών έγινε αμελητέο και έτσι η ιδέα του RISC εγκαταλήφθηκε σταδιακά Κ Διαμαντάρας

Μέγεθος Τρανζίστορ (nm) Κεφάλαιο 1: Εισαγωγή 6 10000 1000 100 10 1971 1976 1981 1986 1991 1996 2001 2006 2011 Σχήμα 3: Εξέλιξη του μεγέθους των τρανζίστορ στην οικογένεια επεξεργαστών της Intel Με την αύξηση του πλήθους των τρανζίστορ έγινε επίσης εφικτή η προσθήκη μεγαλύτερης λειτουργικότητας στον επεξεργαστή: προστέθηκε καλωδιωμένη λογική για την υλοποίηση περισσότερων ή πιο πολύπλοκων λειτουργιών όπως η πρόβλεψη αλμάτων, η βελτίωση της pipeline, η εκτέλεση εντολών εκτός σειράς, κλπ Προστέθηκε επίσης περισσότερη κρυφή μνήμη cache στον επεξεργαστή ενώ μειώθηκε το κόστος και βελτιώθηκε η αξιοπιστία Στα μέσα της δεκαετίας του 2000 έγινε αντιληπτό ότι όλες αυτές οι τεχνολογικές καινοτομίες, είτε αφορούσαν την τεχνολογία του υλικού είτε αφορούσαν την βελτιστοποίηση της εκτέλεσης των εντολών, είχαν φθάσει σε κάποιο όριο Κατ αρχήν έγινε εμφανές ότι το πλήθος των τρανζίστορ που μπορούν να τοποθετηθούν σε ένα chip δεν μπορεί να αυξάνει απεριόριστα ενώ η ενέργεια που καταναλίσκεται από ένα επεξεργαστή άρχισε πλέον να αποτελεί σημαντικό παράγοντα της σχεδίασης του επεξεργαστή Δύο ακόμη εμπόδια στην αύξηση της ταχύτητας εκτέλεσης των προγραμμάτων ήταν η μικρή αύξηση της ταχύτητας της μνήμης (συγκριτικά με την αύξηση της ταχύτητας του επεξεργαστή), και το γεγονός ότι η εκμετάλευση τεχνικών όπως το pipelining, για την ταχύτερη εκτέλεση εντολών από ένα επεξεργαστή έφτασαν επίσης στα όριά τους με μικρές δυνατότητες περαιτέρω βελτίωσης Κ Διαμαντάρας

CPU Clock (MHz) Κεφάλαιο 1: Εισαγωγή 7 10000 1000 100 10 1 0,1 1971 1976 1981 1986 1991 1996 2001 2006 2011 Σχήμα 4: Εξέλιξη της ταχύτητας του ρολογιού στους επεξεργαστές της οικογένειας Intel από το 1971 έως σήμερα Αρχικά η IBM και η Sun και κατόπιν η Intel το 2004 δήλωναν ότι ο δρόμος για την βελτίωση της επίδοσης των υπολογιστών δεν είναι η αύξηση της ταχύτητας ενός επεξεργαστή και η εκμετάλλευση του παραλληλισμού σε επίπεδο εντολών (Instruction Level Parallelism ILP) αλλά η χρήση πολλαπλών επεξεργαστών (ή πυρήνων cores) οι οποίοι θα εκμεταλλεύονται τον παραλληλισμό εκτελώντας ταυτόχρονα πολλαπλά νήματα (Thread Level Parallelism TLP) Σήμερα κυριαρχούν πλέον οι πολυπύρηνοι επεξεργαστές που είναι στην ουσία παράλληλοι αφού αποτελούνται από μικρότερους επεξεργαστές Οι πολυπύρηνοι επεξεργαστές διαθέτουν από 2 έως 12 πυρήνες και η εσωτερική τους αρχιτεκτονική προσομοιάζει πολύ στην αρχιτεκτονική παλαιότερων παράλληλων συστημάτων με κυρίαρχο μοντέλο αυτό του πολυ-επεξεργαστή που θα μελετήσουμε στα επόμενα κεφάλαια Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 8 12 Κατάταξη των διαφόρων υπολογιστικών αρχιτεκτονικών 121 Ταξινόμηση κατά Flynn Καθώς οι υπολογιστές εκτελούν εντολές πάνω σε δεδομένα το πλήθος των εντολών και των δεδομένων που μπορεί να διαχειριστεί ένας υπολογιστής σε μια δεδομένη χρονική στιγμή αποτελεί βασικό χαρακτηριστικό του υπολογιστή αυτού Η ταξινόμηση των υπολογιστών ανάλογα με το πόσες διαφορετικές ακολουθίες εντολών (instruction streams) εκτελούνται ταυτόχρονα σε πόσες ακολουθίες δεδομένων (data streams) προτάθηκε το 1972 ο Michael Flynn και έχει κυριαρχήσει σήμερα Το Σχήμα 5 δείχνει το μοντέλο υπολογισμού για κάθε τύπο Έτσι οι υπολογιστές ανήκουν σε μια από τις παρακάτω τέσσερεις κατηγορίες: 1 SISD (Single Instruction stream - Single Data stream) Ο υπολογιστής τύπου SISD εκτελεί μια μόνο εντολή κάθε χρονική στιγμή σε ένα δεδομένο Όπως φαίνεται και στο Σχήμα 5α το μοντέλο αυτό είναι ο κλασσικός επεξεργαστής (πχ ο Pentium IV) Υπάρχει μια μονάδα ελέγχου (CU) η οποία δέχεται εντολές και εξυπηρετεί την είσοδο και την έξοδο Η εντολή που δίνεται από τη μονάδα ελέγχου πηγαίνει στην μονάδα επεξεργασίας (PU) όπου και εκτελείται Η μονάδα επεξεργασίας χρησιμοποιεί δεδομένα από τη μνήμη (MU) η οποία παρέχει επίσης εντολές στην μονάδα ελέγχου 2 SIMD (Single Instruction stream - Multiple Data stream) Στον υπολογιστή τύπου SIMD (βλ Σχήμα 5β) υπάρχουν πολλές επεξεργαστικές μονάδες που λέγονται και επεξεργαστικά στοιχεία (PE) τα οποία όμως εκτελούν την ίδια εντολή Η εντολή προέρχεται από τη μοναδική μονάδα ελέγχου (CU) που υπάρχει στο σύστημα Κάθε επεξεργαστική μονάδα έχει κάποια τοπική μνήμη (LM) απ' όπου αντλεί τα δεδομένα πάνω στα οποία θα εκτελεστεί η εν λόγω εντολή Ένας υπολογιστής τύπου SIMD είναι συνήθως προσκολλημένος σε ένα κύριο υπολογιστή (πχ ένα Unix Workstation, ένα PC, κλπ) ο οποίος στέλνει εντολές για να εκτελεστούν από τον SIMD υπολογιστή Έτσι οι υπολογιστές αυτού του τύπου είναι αρκετά απλοί στο λογισμικό αφού δεν υπάρχει πχ λειτουργικό σύστημα, σπανίως χειρίζονται την είσοδο και την έξοδο (κάτι που είναι δουλειά του κεντρικού υπολογιστή), κλπ Συνήθως οι υπολογιστές αυτοί είναι κάποιου είδους επιταχυντές, δηλαδή είναι ειδικευμένοι να εκτελούν γρήγορα κάποιες ειδικές λειτουργίες που χρειάζονται σε κάποιες ειδικές εφαρμογές Για παράδειγμα κάποιοι αλγόριθμοι επεξεργασίας εικόνας, όπως η συνέλιξη ή ο μετασχηματισμός Fourier μπορούν να υλοποιηθούν εύκολα σε τέτοιου είδους υπολογιστή Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 9 I/O IS IS DS CU PU M H o s t IS CU IS PU 1 DS 1 M 1 PU N DS N M N H o s t (α) Μοντέλο SISD (μονο-επεξεργαστής) (β) Μοντέλο SIMD (με κατανεμημένη μνήμη) DS IS 1 Μ ν ή μ η IS 1 IS 2 IS N IS 1 CU 1 PU 1 IS 2 CU 2 PU 2 CU N IS N PU N DS DS I/O 1 I/O Ν IS 1 DS 1 CU 1 PU 1 CU Ν IS Ν PU Ν DS Ν Μ ν ή μ η DS I/O (γ) Μοντέλο MISD (pipeline) IS Ν (δ 1 ) Μοντέλο MIΜD (με κοινή μνήμη) IS 1 I/O 1 I/O Ν IS 1 DS 1 CU 1 PU 1 CU Ν IS Ν PU Ν DS Ν M 1 M Ν Δ ί κ τ υ ο IS Ν (δ 2 ) Μοντέλο MIΜD (με κατανεμημένη μνήμη) Σχήμα 5 Η ταξινόμηση των υπολογιστών κατά τον Flynn (CU=Control Unit, PU=Processing Unit, M=Μνήμη, IS=Instruction Stream, DS=Data Stream, I/O=Input/Ouput) 3 MISD (Multiple Instruction stream - Single Data stream) Το μοντέλο αυτό (Σχήμα 5γ) προσομοιάζει τη λειτουργία pipeline: υπάρχει μια σειρά από επεξεργαστικές μονάδες όπου η κάθε μια έχει τον δικό της ελεγκτή και επομένως εκτελεί εν γένει Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 10 διαφορετική εντολή από τις άλλες Η διαφορά από το μοντέλο MIMD είναι ότι η ακολουθία δεδομένων είναι μια Τα δεδομένα πηγάζουν από την κύρια μνήμη, όπου τα επεξεργάζεται η πρώτη μονάδα επεξεργασίας, το αποτέλεσμα της πράξης παραδίδεται στη μονάδα 2, αυτή κατόπιν παραδίδει στη μονάδα 3, κοκ 4 MIMD (Multiple Instruction stream - Multiple Data stream) Στο Σχήμα 5δ 1 και Σχήμα 5δ 2 φαίνεται η διάταξη ενός υπολογιστή τύπου MIMD Εδώ υπάρχουν πολλές μονάδες ελέγχου οι οποίες εν γένει εκδίδουν διαφορετικές εντολές και υπάρχουν πολλές μονάδες επεξεργασίας (μια για κάθε μονάδα ελέγχου) Οι επεξεργαστικές μονάδες είτε επικοινωνούν μέσα από μια κοινή μνήμη (Σχήμα 5δ 1 ) είτε διαθέτουν τοπικές μνήμες (Σχήμα 5δ 2 ) οπότε επικοινωνούν μεταξύ τους μέσω κάποιου δικτύου διασύνδεσης Έτσι το μοντέλο αυτό μοιάζει με πολλούς υπολογιστές οι οποίοι λειτουργούν εν μέρει ανεξάρτητα μεταξύ τους αλλά συνεργάζονται για τη λύση του ίδιου προβλήματος μέσω κάποιου δικτύου επικοινωνίας Τα μοντέλα SIMD και MIMD είναι τα βασικά παράλληλα μοντέλα Το μοντέλο MISD δεν έχει μέχρι στιγμής υλοποιηθεί στην πράξη ως αυτόνομος και ολοκληρωμένος υπολογιστής Στην αρχή της ιστορίας των παράλληλων υπολογιστών το μοντέλο SIMD μελετήθηκε πιο εκτενώς γιατί είναι και το απλούστερο Δεν υπάρχει υπολογιστής στο εμπόριο ο οποίος να ακολουθεί αυτό το μοντέλο Η φιλοσοφία του pipeline ωστόσο που κυριαρχεί στο MISD χρησιμοποιείται, και μάλιστα πολύ συχνά, σε συγκεκριμένες υπομονάδες μέσα σε επεξεργαστές Έτσι έχουμε, πχ το pipeline εντολών, το pipeline της μονάδας κινητής υποδιαστολής (Floating Point Unit), κλπ Οι επεξεργαστές τύπου MIMD είναι οι πιο γενικού σκοπού και μπορούν να σταθούν μόνοι τους σαν αυτόνομοι υπολογιστές σε αντίθεση με τους υπολογιστές τύπου SIMD οι οποίοι πρέπει να είναι συνδεδεμένοι με κάποιο κεντρικό υπολογιστή Στο μοντέλο MIMD εντάσσονται και τα clusters καθώς αποτελούνται ουσιαστικά από πολλές μονάδες τύπου SISD συνδεδεμένες στο δίκτυο Το μοντέλο MIMD έχει πολύ αναπτυχθεί τα τελευταία χρόνια κυρίως για δύο λόγους: (α) Οι μηχανές MIMD προσφέρουν ευελιξία, δηλαδή μπορούν είτε να χρησιμοποιηθούν σαν υπολογιστές ενός χρήστη όπου δίνεται η δυνατότητα επιτάχυνσης των εφαρμογών είτε σαν πολυπρογραμματιζόμενες μηχανές όπου εκτελούνται πολλές εργασίες (tasks) ταυτόχρονα (β) Οι μηχανές MIMD μπορούν να χτιστούν χρησιμοποιώντας κοινούς επεξεργαστές όπως o Intel Pentium Οι περισσότεροι παράλληλοι υπολογιστές τύπου MIMD που υπάρχουν στην αγορά σήμερα χρησιμοποιούν τέτοιου τύπου επεξεργαστές Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 11 Επεξεργαστής Επεξεργαστής Επεξεργαστής Επεξεργαστής Ένα ή περισσότερα επίπεδα cache Ένα ή περισσότερα επίπεδα cache Ένα ή περισσότερα επίπεδα cache Ένα ή περισσότερα επίπεδα cache Bus Κοινή Μνήμη I/O Σχήμα 6: Η δομή ενός πολυεπεξεργαστή με κοινή μνήμη 13 Πολυεπεξεργαστές και Πολυυπολογιστές Ο τύπος υπολογισμού MIMD είναι το πιο σημαντικό υπολογιστικό μοντέλο παράλληλης επεξεργασίας Για το λόγο αυτό θα το μελετήσουμε πιο αναλυτικά σε αυτό το εδάφιο Οι μηχανές MIMD ταξινομούνται βασικά σε δύο αρχιτεκτονικές κλάσεις με βάση την οργάνωση της μνήμης Έτσι έχουμε (α) τους υπολογιστές με κοινή μνήμη (shared memory) οι οποίοι καλούνται και πολυεπεξεργαστές (multiprocessors) και (β) τους υπολογιστές με κατανεμημένη μνήμη (distributed memory) οι οποίοι καλούνται και πολυυπολογιστές (multicomputers) Το Σχήμα 6 δείχνει τη βασική δομή ενός πολυεπεξεργαστή με κεντρική μνήμη η οποία είναι κοινή και την μοιράζονται όλοι οι επεξεργαστές Το μοντέλο αυτό συνήθως αποτελείται από λίγους επεξεργαστές (το πολύ 16) και είναι ένα από τα πιο διαδεδομένα μοντέλα παράλληλων επεξεργαστών Συνήθως ένα δίκτυο τύπου bus συνδέει τους επεξεργαστές με τη μνήμη, αλλά και μεταξύ τους Είναι δυνατόν, ωστόσο, να χρησιμοποιηθεί και κάποιος άλλος τύπος δικτύου όπως πολλαπλά bus ή διακόπτης crossbar Για οποιαδήποτε διεύθυνση μνήμης η διαδικασία προσπέλασης της μνήμης είναι ίδια: ο επεξεργαστής κάνει αίτηση στο bus για εγγραφή ή για ανάγνωση και αναμένει την ολοκλήρωση της εργασίας από τη μνήμη Γενικά, ο χρόνος απόκρισης της μνήμης θα είναι κατά μέσο όρο ο ίδιος άσχετα από την ακριβή διεύθυνση του δεδομένου Επειδή όλοι οι επεξεργαστές έχουν ομοιόμορφη πρόσβαση σε όλες τις διευθύνσεις της μνήμης αυτό το στυλ της αρχιτεκτονικής καλείται και μοντέλο Ομοιόμορφης Προσπέλασης Μνήμης (Uniform Memory Access UMA) Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 12 Επεξεργαστής Επεξεργαστής Επεξεργαστής Επεξεργαστής Ένα ή περισσότερα επίπεδα cache Ένα ή περισσότερα επίπεδα cache Ένα ή περισσότερα επίπεδα cache Ένα ή περισσότερα επίπεδα cache Μνήμη I/O Μνήμη I/O Μνήμη I/O Μνήμη I/O Δίκτυο Σχήμα 7: Η δομή ενός πολυυπολογιστή με κατανεμημένη μνήμη Στο Σχήμα 7 φαίνεται το βασικό μοντέλο ενός πολυυπολογιστή με χωρικά κατανεμημένη μνήμη Κάθε επεξεργαστής έχει δική του φυσική μνήμη και δική του είσοδο και έξοδο, ενώ οι επεξεργαστές συνδέονται μεταξύ τους χρησιμοποιώντας ένα δίκτυο διασύνδεσης (interconnection network) η τοπολογία του οποίου είναι ένα από τα κεντρικά αντικείμενα έρευνας στην τεχνολογία των παράλληλων αρχιτεκτονικών Η χωρική κατανομή της μνήμης ανάμεσα στους επεξεργαστές έχει δύο βασικά πλεονεκτήματα: (α) αυξάνει τον όγκο των δεδομένων που μπορούν να προσπελαστούν σε ένα συγκεκριμένο χρονικό διάστημα Ο όγκος αυτός καλείται bandwidth και μετράται σε bits/sec Για παράδειγμα, αν είχαμε μια κεντρική μνήμη με χρόνο πρόσβασης 10ns και data bus των 32 bit τότε η μνήμη αυτή μπορεί να αποδώσει 32 bits δεδομένων ανά 10ns έχει δηλαδή bandwidth 32/(1010-9 ) = 3,2 Gbits/sec Αν αυτή η μνήμη εξυπηρετεί N επεξεργαστές τότε όλοι οι επεξεργαστές μαζί εξυπηρετούνται από το bandwidth των 3,2 Gbits/sec Αν όμως η μνήμη αυτή κοπεί σε κομμάτια και κάθε επεξεργαστής έχει το δικό του τοπικό κομμάτι τότε κάθε ένας μπορεί να εξυπηρετηθεί με 3,2 Gbits/sec και έτσι να πολλαπλασιαστεί N φορές συνολικά ο όγκος πληροφορίας που μπορεί να προσπελαστεί (β) Μειώνεται ο χρόνος προσπέλασης στην μνήμη αφού δεν χρειάζεται πλέον διαιτησία για να χειριστούμε την περίπτωση που δύο επεξεργαστές προσπαθούν ταυτόχρονα να προσπελάσουν την ίδια μνήμη όπως μπορεί να συμβεί στο μοντέλο της κοινής μνήμης Το βασικό μειονέκτημα του μοντέλου της χωρικά κατανεμημένης μνήμης είναι ότι επιβαρύνεται η επικοινωνία μεταξύ των επεξεργαστών αφού δεν μπορούν να ανταλλάξουν δεδομένα μέσα από την κοινή μνήμη Έτσι οι επεξεργαστές αναγκάζονται να ανταλλάσσουν μηνύματα μέσα από το δίκτυο διασύνδεσης Το δίκτυο εκτός από την πολυπλοκότητα που έχει προσθέτει και κάποιο χρόνο καθυστέρησης στην επικοινωνία αφού το μήνυμα κάνει κάποιο χρόνο για να πάει από τον αποστολέα στον δέκτη Επί πλέον Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 13 υπάρχει περίπτωση σε πολλές τοπολογίες δικτύων το μήνυμα να καθυστερήσει και λόγω πυκνής κυκλοφορίας στο δίκτυο Η χωρική κατανομή της μνήμης δε σημαίνει ότι οπωσδήποτε υπάρχει και λογική κατανομή της Η μνήμη λέγεται λογικά κατανεμημένη αν ο κάθε επεξεργαστής μπορεί μόνο να εκδόσει διευθύνσεις που προσπελαύνουν τη δική του τοπική μνήμη Αν όλες οι τοπικές μνήμες μαζί δημιουργούν ένα ενιαίο χώρο διευθύνσεων που μπορεί να προσπελαστεί από όλους τους επεξεργαστές τότε έχουμε μια λογικά κοινή μνήμη έστω και αν οι τοπικές μνήμες είναι κατανεμημένες στο χώρο Έτσι υπάρχουν γενικά δύο παραλλαγές στο μοντέλο του πολυυπολογιστή Στο μοντέλο της καθαρά κατανεμημένης μνήμης κάθε τοπική μνήμη έχει δικό της χώρο διευθύνσεων ο οποίος δεν είναι προσπελάσιμος από τους άλλους επεξεργαστές Έτσι αν κάποιος επεξεργαστής Α χρειαστεί δεδομένα από την μνήμη ενός άλλου επεξεργαστή Β τότε πρέπει να του στείλει μήνυμα Το μοντέλο αυτό επικοινωνίας καλείται μοντέλο ανταλλαγής μηνυμάτων (message passing) O επεξεργαστής Β πρέπει να διακόψει αυτό που κάνει εκείνη τη στιγμή (interrupt) έτσι ώστε να απαντήσει στο μήνυμα που του έστειλε ο Α Στο μοντέλο της Κοινής Κατανεμημένης Μνήμης (Distributed Shared Memory DSM) οι μνήμες είναι μεν χωρικά κατανεμημένες αλλά αποτελούν ένα ενιαίο χώρο διευθύνσεων Έτσι ένας επεξεργαστής Α μπορεί να ζητήσει μια διεύθυνση που βρίσκεται στην τοπική μνήμη ενός άλλου επεξεργαστή Β Αντί όμως να στείλει μήνυμα ο Α στον Β και να τον διακόψει, στέλνει μήνυμα στη μνήμη του Β η οποία διαθέτει μια «έξυπνη» μονάδα διαχείρισης μνήμης με υλικό κατάλληλο για αποστολή και λήψη μηνυμάτων Σε αντίθεση με τους πολυεπεξεργαστές κοινής μνήμης οι πολυυπολογιστές DSM καλούνται μηχανές Μη-Ομοιόμορφης Προσπέλασης Μνήμης (Non-Uniform Memory Access NUMA) Ο λόγος είναι ότι τώρα, αν και ο χώρος διευθύνσεων είναι ενιαίος, θα έχει διαφορετικό χρόνο προσπέλασης μια κλήση που θα εξυπηρετηθεί από την τοπική μνήμη και θα έχει διαφορετικό (μεγαλύτερο) χρόνο μια κλήση που θα εξυπηρετηθεί από μια απομακρυσμένη μνήμη Όταν ένας πολυυπολογιστής έχει κοινό λογικό χώρο μνήμης για όλους τους επεξεργαστές τότε από απόψεως προγραμματισμού δεν διαφέρει από έναν πολυεπεξεργαστή με κοινή μνήμη Η μόνη διαφορά είναι ότι αυτή η μνήμη δεν είναι τοποθετημένη στον ίδιο χώρο (πχ σε μια πλακέτα) αλλά βρίσκεται κομμένη σε κομμάτια που βρίσκονται κοντά σε κάθε επεξεργαστή Όπως προείπαμε, σε ένα πολυεπεξεργαστή κοινής μνήμης (UMA) μπορούμε είτε να χρησιμοποιήσουμε το δίκτυο bus, το οποίο είναι και η συνήθης επιλογή, είτε, σπανιώτερα, κάποιο άλλο δίκτυο που να προσφέρει συμμετρική προσπέλαση στη μνήμη Στην περίπτωση που σε ένα πολυεπεξεργαστή UMA χρησιμοποιείται κάποιο άλλο δίκτυο εκτός Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 14 από το bus, το πλεονέκτημα είναι η δυνατότητα χρήσης περισσότερων επεξεργαστών απ ότι αν είχαμε bus Το μειονέκτημα φυσικά είναι ο αυξημένος χρόνος προσπέλασης της μνήμης 14 Αξιολόγηση της απόδοσης μιας αρχιτεκτονικής Τι εννοούμε όταν λέμε ότι ένας υπολογιστής είναι ταχύτερος από έναν άλλο; Ένας απλός χρήστης θέλει να βελτιώσει την απόκριση του συστήματος ή αλλιώς το χρόνο εκτέλεσης των προγραμμάτων του Ένας διαχειριστής ενός web server ενδιαφέρεται να βελτιώσει τον αριθμό των συναλλαγών (transactions) που μπορούν να εκτελεστούν ανά δευτερόλεπτο (throughput) Ένας gamer πιθανώς να ενδιαφέρεται για γρηγορότερα γραφικά Δεν υπάρχει ένα ενιαίο κριτήριο απόδοσης μιας υπολογιστικής μηχανής, πόσο μάλιστα όταν η μηχανή αυτή αποτελείται από αρκετά διακριτά τμήματα (CPU, μνήμη, κάρτα γραφικών, δίσκος, δίκτυο, κλπ) όπου το καθένα μπορεί να έχει διαφορετική απόδοση Και πράγματι υπάρχουν 141 Η επίδοση της CPU Ένα από τα πιο συνηθισμένα κριτήρια απόδοσης είναι ο χρόνος εκτέλεσης ενός προγράμματος στην κεντρική μονάδα επεξεργασίας (χρόνος CPU) Συνήθως με το χρόνο CPU εννοούμε τον καθαρό χρόνο που σπατάλησε η CPU στην εκτέλεση του προγράμματος (user time) Πέρα από αυτόν τον χρόνο ο συνολικός χρόνος εκτέλεσης ενός προγράμματος (elapsed time ή response time) περιλαμβάνει το χρόνο που σπαταλάει το λειτουργικό σύστημα στην δημιουργία της διεργασίας (δέσμευση μνήμης και άλλων πόρων του συστήματος ώστε να δημιουργηθεί η διεργασία και να τρέξει το πρόγραμμα) στη διαχείριση του πολυπρογραμματισμού (διακοπές χρονιστή) στο χρόνο Εισόδου / Εξόδου, κλπ [Συνολικός Χρόνος] = [Χρόνος CPU] + [Χρόνος Συστήματος] Ο χρόνος συστήματος αφορά το λειτουργικό σύστημα και δεν θα μας απασχολήσει περισσότερο εδώ Εκεί που θα δώσουμε βαρύτητα είναι στο χρόνο της CPU και θα αξιολογούμε την απόδοση ενός υπολογιστή με βάση αυτό το κριτήριο Έτσι θα λέμε ότι ένας υπολογιστής X είναι n φορές ταχύτερος από έναν άλλο υπολογιστή Y αν [Χρόνος CPU] Υ / [Χρόνος CPU] Χ = n Υπάρχει σχέση αντίστροφης αναλογίας μεταξύ Χρόνου CPU και απόδοσης: όσο πιο μικρός είναι ο Χρόνος CPU τόσο πιο μεγάλη είναι η απόδοση του συστήματος και αντίστροφα Για λόγους πρακτικούς μπορούμε να ορίσουμε το αντίστροφο του [Χρόνου CPU] ως [Απόδοση] [Απόδοση] = 1 / [Χρόνος CPU] οπότε βρίσκουμε πόσες φορές είναι γρηγορότερος ο Χ από τον Υ διαιρώντας την απόδοση του Χ με την απόδοση του Υ: [Απόδοση] X / [Απόδοση] Y = [Χρόνος CPU] Υ / [Χρόνος CPU] Χ = n Ο χρόνος CPU στην εκτέλεση ενός προγράμματος μπορεί να υπολογιστεί από τον εξής τύπο Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 15 [Χρόνος CPU] = [ΠΕ] [MXE] ΠΕ = Πλήθος Εντολών (Instuction Count IC) MXE = Μέσος Χρόνος Εκτέλεσης Εντολής Προφανώς όσο περισσότερες είναι οι εντολές τόσο περισσότερος είναι και ο χρόνος της CPU Ομοίως όσο περισσότερος είναι ο μέσος χρόνος εκτέλεσης μιας εντολής Ο μέσος χρόνος εκτέλεσης μιας εντολής με τη σειρά του εξαρτάται από το περίοδο του κύκλου του ρολογιού (= διάρκεια του κύκλου μηχανής) και το πλήθος των κύκλων ανά εντολή: [ΜΧΕ] = [ΠΡ] [ΚΑΕ] ΠΡ = Περίοδος κύκλου Ρολογιού (Clock Period CP) ΚΑΕ = πλήθος Κύκλων Ανά Εντολή (Cycles Per Instruction CPI) Οπότε αντικαθιστώντας στον τύπο του Χρόνου CPU παίρνουμε τον τελικό τύπο: [Χρόνος CPU] = [ΠΕ] [ΠΡ] [ΚΑΕ] (1) Όπως φαίνεται ο χρόνος CPU για την εκτέλεση ενός προγράμματος εξαρτάται από τρία βασικά συστατικά, τον αριθμό των εντολών, τον αριθμό των κύκλων μηχανής ανά εντολή, και την περίοδο του ρολογιού Οι τρεις αυτοί παράγοντες είναι ανεξάρτητοι μεταξύ τους και μπορούν να βελτιωθούν ξεχωριστά χωρίς ο ένας να επηρεάζει τον άλλο: Το πλήθος εντολών (ΠΕ) εξαρτάται από την τεχνολογία των μεταφραστών και από το σύνολο εντολών του επεξεργαστή Το σύνολο των εντολών απασχολεί ιδιαίτερα την αρχιτεκτονική καθώς καθορίζει την πολυπλοκότητα του επεξεργαστή Το πλήθος κύκλων ανά εντολή (ΚΑΕ) εξαρτάται από την οργάνωση της αρχιτεκτονικής και από το σύνολο των εντολών του επεξεργαστή Ο δείκτης αυτός αφορά κατ εξοχήν την αρχιτεκτονική του επεξεργαστή Σε επόμενα κεφάλαια θα δούμε πώς μπορεί να μειωθεί το πλήθος κύκλων ανά εντολή είτε με χρήση pipelining, είτε με χρήση παραλληλισμού είτε με άλλες τεχνικές Η περίοδος του ρολογιού (ΠΡ) εξαρτάται κυρίως από την τεχνολογία υλικού και αφορά σε μικρό βαθμό την αρχιτεκτονική Γενίκευση του τύπου Στην πράξη έχουμε διάφορους τύπους εντολών με διάφορους κύκλους μηχανής ανά εντολή Αν ονομάσουμε ΚΑΕ 1 τους κύκλους μηχανής ανά εντολή τύπου 1, ΚΑΕ 2 τους κύκλους μηχανής ανά εντολή τύπου 2,, ΚΑΕ Ν τους κύκλους μηχανής ανά εντολή τύπου Ν, και ΠΕ 1 το πλήθος των εντολών τύπου 1, ΠΕ 2 το πλήθος των εντολών τύπου 2,, ΠΕ Ν το πλήθος των εντολών τύπου Ν, τότε ο χρόνος εκτέλεσης CPU θα είναι [Χρόνος CPU] = ( [ΠΕ 1 ] [ΚΑΕ 1 ] N i=1 ) [ΠΡ] (2) Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 16 142 Μετροπρογράμματα - Benchmarks Η απόδοση ενός υπολογιστή, όπως είδαμε, είναι αντιστρόφως ανάλογη του χρόνου που σπαταλάει η CPU στην εκτέλεση ενός προγράμματος Όμως πάνω σε ποιο πρόγραμμα ή προγράμματα θα συγκρίνουμε την επίδοση των υπολογιστών; Αυτό εξαρτάται από τις εφαρμογές που έχουμε στο μυαλό μας Επειδή οι επιδόσεις των υπολογιστών διαφέρουν ανάλογα με το είδος των πράξεων (ακέραιες πράξεις / πράξεις κινητής υποδιαστολής) και το είδος της εφαρμογής (μαθηματική επεξεργασία, γραφικά, κλπ) έχουν προταθεί κάποια σύνολα με αντιπροσωπευτικά προγράμματα για κάθε περίπτωση Τα προγράμματα αυτά λέγονται μετροπρογράμματα (benchmarks) καθώς χρησιμοποιούνται για την μέτρηση της απόδοσης Τα προγράμματα που χρησιμοποιούνται συνήθως είναι τεσσάρων κατηγοριών Πραγματικά προγράμματα, πχ μεταφραστές, επεξεργαστές κειμένου, εργαλεία CAD, κλπ Πυρήνες προγραμμάτων, δηλαδή μικρά αποσπάσματα κώδικα που χρησιμοποιούνται συχνά από πολλά προγράμματα Οι πυρήνες Livermore Loops και Linpack είναι τα πιο γνωστά παραδείγματα Μικρά προγραμματάκια, πχ Quicksort Συνθετικά benchmarks, πχ τα Whetstone και Dhrystone, τα οποία έχουν την ίδια φιλοσοφία με τους πυρήνες και προσπαθούν να προσομοιώσουν το μίγμα των εντολών που παρουσιάζονται σε μεγάλες εφαρμογές Τα τελευταία χρόνια ο οργανισμός SPEC (wwwspecorg) προσπαθεί να τυποποιήσει τα μετροπρογράμματα και να τα ομαδοποιήσει έτσι ώστε να μπορούν να χρησιμοποιηθούν στην αξιολόγηση υπολογιστών ανάλογα με τη χρήση τους Έτσι υπάρχει διαφορετική ομάδα μετροπρογραμμάτων για την αξιολόγηση της CPU, των γραφικών, της ταχύτητας παράλληλης εκτέλεσης ενός cluster, της ταχύτητας ενός server, κλπ Ειδικά για την CPU η πιο πρόσφατη ομάδα μετροπρογραμμάτων λέγεται SPEC2006 και αποτελείται από δύο υπο-ομάδες: Την υπο-μάδα CINT2006 με μετροπρογράμματα που αξιολογούν την απόδοση της CPU σε ακέραιες πράξεις (βλπίνακας 1) και Την υπο-μάδα CFP2006 με μετροπρογράμματα που αξιολογούν την απόδοση της CPU σε πράξεις κινητής υποδιαστολής (βλ Πίνακας 2) Κάθε ομάδα ή υπο-ομάδα αποτελείται από ένα μίγμα προγράμματων τα περισσότερα των οποίων είναι πραγματικές εφαρμογές Τα μετροπρογράμματα SPEC δεν ορίζουν επακριβώς μόνο τις εφαρμογές που θα χρησιμοποιηθούν αλλά και τους μεταφραστές και τα FLAGS που θα χρησιμοποιηθούν για να γίνει compilation Κάποια λιγότερο αξιόπιστα κριτήρια επίδοσης που όμως χρησιμοποιούνται συχνά κυρίως από τους κατασκευαστές υπολογιστών είναι ο αριθμός εντολών ανά δευτερόλεπτο και ο αριθμός πράξεων κινητής υποδιαστολής ανά δευτερόλεπτο Οι εντολές ανά δευτερόλεπτο συνήθως μετρούνται σε εκατομμύρια ή δισεκατομμύρια οπότε έχουμε Mega-Instructions- Per-Second: MIPS ή Giga-Instructions-Per-Second: GIPS Ομοίως, ο αριθμός πράξεων κινητής υποδιαστολής ανά δευτερόλεπτο επίσης μετριέται σε εκατομμύρια ή δισεκατομμύρια, οπότε έχουμε Mega-Floating-Point-Operations-Per-Second: MFLOPS ή Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 17 GFLOPS Το κριτήριο MIPS δεν είναι αξιόπιστο γιατί εξαρτάται τόσο από το σύνολο των εντολών όσο και από το πρόγραμμα που εκτελείται ενώ δεν μετράει πραγματικό χρόνο εκτέλεσης ενός προγράμματος Το κριτήριο MFLOPS εξαρτάται από την συγκεκριμένη μηχανή και από το πρόγραμμα Το σύνολο των πράξεων κινητής υποδιαστολής που μπορεί να εκτελέσει ένας επεξεργαστής διαφέρει από υπολογιστή σε υπολογιστή, πχ ο CRAY C90 δεν έχει την εντολή divide ενώ ο Intel Pentium έχει divide, square root, sin, και cos Έτσι ο CRAY C90 χρειάζεται πολλές πράξεις για να εξομοιώσει τη διαίρεση, ή την τετραγωνική ρίζα ενώ ο Intel Pentium χρειάζεται μια μόνο πράξη και παρ' όλο που ο πρώτος υπολογιστής μπορεί να έχει καλύτερη επίδοση σε MFLOPS από τον δεύτερο, στην πραγματικότητα χρειάζεται περισσότερο χρόνο για να εκτελέσει μια απλή διαίρεση Για τους παραπάνω λόγους τόσο τα MIPS/GIPS όσο και τα MFLOPS/GFLOPS έχουν χάσει αρκετή δημοτικότητα και δεν χρησιμοποιούνται πλέον τόσο συχνά Πίνακας 1: Η υπο-ομάδα μετροπρογραμμάτων CINT2006 για την αξιολόγηση της απόδοσης CPU σε ακέραιες πράξεις (http://wwwspecorg/cpu2006/cint2006/) Μετροπρόγραμμα Γλώσσα Πεδίο εφαρμογής 400perlbench C Γλώσσα προγραμματισμού 401bzip2 C Συμπίεση δεδομένων 403gcc C C Compiler 429mcf C Συνδυαστική 445gobmk C Τεχνητή Νοημοσύνη: Go 456hmmer C Αναζήτηση ακολουθίας γονιδίων 458sjeng C Τεχνητή Νοημοσύνη: σκάκι 462libquantum C Φυσική / Κβαντική Υπολογιστική 464h264ref C Συμπίεση βίντεο 471omnetpp C++ Εξομοίωση διακριτών γεγονότων 473astar C++ Αλγόριθμοι βέλτιστης διαδρομής 483xalancbmk C++ Επεξεργασία XML Πίνακας 2: Η υπο-ομάδα μετροπρογραμμάτων CFP2006 για την αξιολόγηση της απόδοσης CPU σε πράξεις κινητής υποδιαστολής (http://wwwspecorg/cpu2006/cfp2006/) Μετροπρόγραμμα Γλώσσα Πεδίο εφαρμογής 410bwaves Fortran Υδροδυναμική 416gamess Fortran Κβαντική χημεία 433milc C Φυσική / Κβαντική χρωμοδυναμική 434zeusmp Fortran Φυσική / Υδροδυναμική 435gromacs C, Fortran Βιοχημεία / Μοριακή δυναμική Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 18 436cactusADM C, Fortran Φυσική / Γενική Σχετικότητα 437leslie3d Fortran Υδροδυναμική 444namd C++ Βιοχημεία / Μοριακή δυναμική 447dealII C++ Ανάλυση πεπερασμένων στοιχείων 450soplex C++ Γραμμικός προγραμματισμός 453povray C++ Επεξεργασία εικόνας Ray-tracing 454calculix C, Fortran Στατική μηχανική 459GemsFDTD Fortran Υπολογιστικός ηλεκτρομαγνητισμός 465tonto Fortran Κβαντική χημεία 470lbm C Υδροδυναμική 481wrf C, Fortran Πρόγνωση καιρού 482sphinx3 C Αναγνώριση ομιλίας Ο Πίνακας 3 δείχνει τα χαρακτηριστικά ταχύτητας ορισμένων σύγχρονων συστημάτων υπολογιστών με Πίνακας 3: Χαρακτηριστικά ορισμένων από τα πιο πρόσφατους και ταχύτερα συστήματα του εμπορίου Κατασκευαστής Σύστημα NEC Corporation Express5800/R110d-1E, Intel Xeon E3-1270 Fujitsu PRIMERGY TX100 S, Intel Xeon E3-1240 SGI SGI Rackable C2005-TY3, Intel Xeon X5687 Dell Inc PowerEdge R510, Intel Xeon E5640 E4 Computer E-Rack 8248, AMD Engineering SpA Opteron 6174 ASUSTeK ASUSTek M4A89GTD Computer Inc PRO, AMD Phenom II X6 1090T Συχνότητα ρολογιού (GHz) Πυρήνες ανά chip πλήθος chip Επιδόσεις SPEC2006 340 4 1 499 CINT 607 CFP 330 4 1 479 CINT 593 CFP 360 4 2 493 CINT 670 CFP 266 4 2 345 CINT 395 CFP 220 4 12 216 CINT 320 6 1 261 CINT 325 CFP Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 19 15 Ο νόμος του Amdahl Βασικός πυλώνας της σύγχρονης αρχιτεκτονικής υπολογιστών είναι η παράλληλη επεξεργασία καθώς, όπως είδαμε, έχει κυριαρχήσει η χρήση πολλαπλών πυρήνων μέσα σε ένα επεξεργαστή Μια από τις πιο διαδεδομένες αλλά εσφαλμένες αντιλήψεις στο χώρο του παράλληλου προγραμματισμού είναι ότι μπορούμε να επιτύχουμε απεριόριστη επιτάχυνση ενός οποιουδήποτε αλγορίθμου αν προσθέτουμε απεριόριστα νέους επεξεργαστές στη μηχανή μας Με άλλα λόγια η αντίληψη αυτή λέει ότι υπάρχει κάποια γραμμική σχέση μεταξύ αριθμού επεξεργαστών N και επιτάχυνσης Ε Στην ιδανική αυτή περίπτωση μιλάμε για τέλεια επεκτασιμότητα (scalability) της παράλληλης αρχιτεκτονικής Φυσικά στην πράξη, η πιο πάνω αντίληψη απέχει πάρα πολύ από την πραγματικότητα Ακόμα και αν αγνοήσουμε (α) την επιβάρυνση στο χρόνο εκτέλεσης ενός παράλληλου προγράμματος από το χρόνο που σπαταλάται στην επικοινωνία μεταξύ των επεξεργαστών (β) το γεγονός ότι είναι γενικά δύσκολο να τεμαχιστεί ένας αλγόριθμος σε N ισοδύναμα παράλληλα κομμάτια υπάρχει και ένα άλλο βασικό πρόβλημα που περιγράφεται από το λεγόμενο νόμο του Amdahl: Ένας οποιοσδήποτε αλγόριθμος περιέχει πάντα ένα ποσοστό κώδικα s το οποίο δεν παραλληλίζεται Ας κάνουμε την απλουστευτική παραδοχή ότι το υπόλοιπο ποσοστό του κώδικα (1 s) μπορεί να παραλληλιστεί τέλεια υπό ιδανικές συνθήκες και ας υποθέσουμε ότι ο αλγόριθμος απαιτεί σε μια σειριακή μηχανή χρόνο T για να εκτελεστεί Αν έχουμε Ν επεξεργαστές στην παράλληλη μηχανή τότε το παραλληλίσιμο τμήμα του κώδικα θα εκτελεστεί σε χρόνο (1 s)τ/n ενώ το σειριακό (μη παραλληλίσιμο) τμήμα του κώδικα θα πάρει χρόνο st Άρα ο συνολικός χρόνος εκτέλεσης του αλγορίθμου στην παράλληλη μηχανή με N επεξεργαστές είναι T παρ = [s+(1 s)/n]t ενώ ο αντίστοιχος χρόνος εκτέλεσης στη σειριακή μηχανή είναι οπότε και η συνολική επιτάχυνση είναι T σειρ =T [Επιτάχυνση] = [Τ σειρ ] / [Τ παρ ] = N/[1+(N 1)s] Σύμφωνα με τους απλούς συλλογισμούς του Amdahl η μέγιστη επιτάχυνση που μπορούμε να πετύχουμε ακόμη και με άπειρους επεξεργαστές (N = ) είναι 1/s Έτσι για παράδειγμα, αν το 10% του κώδικά μας δεν παραλληλίζεται (s = 01) τότε η μέγιστη Κ Διαμαντάρας

Κεφάλαιο 1: Εισαγωγή 20 επιτάχυνση που μπορούμε να πετύχουμε είναι 1/s = 10 ακόμα κι αν χρησιμοποιήσουμε πχ N = 1000 επεξεργαστές Παράδειγμα Για να γίνει πιο κατανοητή η αρχή του Amdahl ας δούμε ένα παράδειγμα Έστω ότι θέλουμε να εκτελέσουμε τον παρακάτω κώδικα (Ε1:) a = b+2 (Ε2:) c = a*b (Ε3:) d = a-5 σε μια παράλληλη μηχανή Ο κώδικάς μας περιγράφεται από ένα γράφο που καλείται Γράφος Εξάρτησης ή Γράφος Προήγησης και ο οποίος φαίνεται παρακάτω Ε2 b 2 + a Ε1 * - 5 Ε3 c d Ο γράφος αυτός μας δείχνει σχηματικά ποιες πράξεις πρέπει λογικά να έπονται κάποιων άλλων πράξεων για τον απλούστατο λόγο ότι χρησιμοποιούν τα αποτελέσματα των πράξεων αυτών Έτσι για παράδειγμα, η εντολή Ε2 (δηλ c=a*b) πρέπει να έπεται της Ε1 (δηλ a=b+2) η οποία παράγει το αποτέλεσμα a το οποίο χρησιμοποιεί η Ε1 Προφανώς, η Ε1 πρέπει να περιμένει πρώτα να παραχθεί το αποτέλεσμα a και μετά να το χρησιμοποιήσει Ομοίως και η εντολή Ε3 (d=a-5) πρέπει να έπεται της Ε1 Έτσι ακόμα κι αν έχουμε άπειρους επεξεργαστές στην παράλληλη μας μηχανή ποτέ δε θα μπορέσουμε να εκτελέσουμε αυτές τις δύο πράξεις ταυτόχρονα (παράλληλα) Κοιτάζοντας το γράφο εξάρτησης και υποθέτοντας ότι ο κάθε ο κάθε κόμβος του γράφου αντιστοιχεί σε μια πράξη που χρειάζεται χρόνο Δ για να εκτελεστεί τότε μπορούμε να βρούμε ακριβώς το ποσοστό s του μη-παραλληλίσιμου κώδικα που χρησιμοποιεί ο νόμος του Amdahl: είναι ο λόγος του μέγιστου μονοπατιού του γράφου προς τον αριθμό των κόμβων του γράφου Στη συγκεκριμένη περίπτωση του μέγιστο μονοπάτι έχει μήκος 2 ενώ ο γράφος περιέχει συνολικά 3 κόμβους Έτσι έχουμε s=2/3 και άρα ο αλγόριθμος δεν μπορεί να παραλληλιστεί με επιτάχυνση μεγαλύτερη από 1/s = 3/2 = 15 Κ Διαμαντάρας