Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 1 Κεφάλαιο 2.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 1 Κεφάλαιο 2."— Μεταγράφημα παρουσίασης:

1 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 1 Κεφάλαιο 2

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

3 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 3 Αρχές συνόλου εντολών & παραδείγματα

4 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 4 Εισαγωγή Μεγάλη ποικιλία εναλλακτικών σχεδίων διαθέσιμων στον αρχιτέκτονα ενός συνόλου εντολών. Θα επικεντρωθούμε σε πέντε θέματα: –Ταξινόμηση των εναλλακτικών συνόλων εντολών, δίνοντας ποιοτική αποτίμηση των πλεονεκτημάτων και μειονεκτημάτων διαφόρων προσεγγίσεων –Μερικές μετρήσεις συνόλων εντολών, οι οποίες είναι (κατά ένα μεγάλο βαθμό) ανεξάρτητες από ένα συγκεκριμένο σύνολο εντολών –Την αρχιτεκτονική του συνόλου των εντολών επεξεργαστών που δεν προορίζονται για σταθμούς εργασίας ή εξυπηρετητές αλλά για επεξεργασία σήματος και επξεργασία φωνής και εικόνας –Θέμα των γλωσσών και των μεταφραστών και την σημασία που έχουν στην αρχιτεκτονική του συνόλου των εντολών –Παράδειγμα, πώς αυτές οι ιδέες αντικατοπτρίζονται στο σύνολο εντολών του ΜΙΡS. Θα εξετάσουμε μια μεγάλη ποικιλία αρχιτεκτονικών μετρήσεων.

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

6 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 6 Ταξινόμηση αρχιτεκτονικών συνόλου εντολών Ο τύπος εσωτερικής αποθήκευσης σε έναν επεξεργαστή: η πιο ουσιαστική διαφοροποίηση Οι βασικές επιλογές: –Στοίβα –Συσσωρευτής αύξησης –Σύνολο καταχωρητών Άμεση ή έμμεση ονομασία τελεστέων: –Αρχιτεκτονική στοίβας: οι τελεστέοι βρίσκονται αναμφίβολα στην κορυφή της στοίβας –Αρχιτεκτονική συσσωρευτή: ένας τελεστέος είναι αναμφίβολα ο συσσωρευτής –Αρχιτεκτονικές καταχωρητή γενικού σκοπού: έχουν μόνο άμεσους τελεστέους – είτε καταχωρητές, είτε χώρους μνήμης

7 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 7 Ταξινόμηση αρχιτεκτονικών συνόλου εντολών (2) Στην πραγματικότητα υπάρχουν δύο τύποι υπολογιστών με καταχωρητές: –αρχιτεκτονική καταχωρητή μνήμης: μπορεί να έχει πρόσβαση στην μνήμη σαν κομμάτι οποιασδήποτε εντολής –αρχιτεκτονική φόρτωσης-αποθήκευσης (ή καταχωρητή-καταχωρητή): μπορεί να έχει πρόσβαση στην μνήμη μόνο με εντολές φόρτωσης και αποθήκευσης Αρχιτεκτονική μνήμη-μνήμη: κρατάει όλους τους τελεστέους στη μνήμη – τρίτος τύπος, που δεν συναντάται στους υπολογιστές Παλαιότεροι υπολογιστές: χρησιμοποιούσαν αρχιτεκτονικές του τύπου στοίβας ή καταχωρητή αύξησης Εμφάνιση των υπολογιστών καταχωρητή γενικού σκοπού (GPR) για δύο βασικούς λόγους: –Οι καταχωρητές είναι πιο γρήγοροι από την μνήμη –όπως και άλλοι τύποι αποθήκευσης που είναι εσωτερικοί στον υπολογιστή –Οι καταχωρητές χρησιμοποιούνται πιο εύκολα από τους μεταγλωττιστές και μπορούν να χρησιμοποιηθούν πιο αποτελεσματικά απ’ότι κάποιοι άλλοι τύποι εσωτερικής αποθήκευσης

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

9 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 9 Ο ρόλος των καταχωρητών Μπορούν να χρησιμοποιηθούν για να “κρατήσουν” τις μεταβλητές, μειώνοντας την κίνηση στην μνήμη Πολύ μικρός αριθμός καταχωρητών (πραγματικά) γενικού σκοπού => ανώφελο να προσπαθήσουμε να τοποθετήσουμε μεταβλητές στους καταχωρητές –Ο μεταγλωττιστής θα δεσμεύσει όλους τους αδέσμευτους καταχωρητές για υπολογισμό εκφράσεων Πόσοι καταχωρητές είναι επαρκείς; Φυσικά, η απάντηση εξαρτάται από την αποτελεσματικότητα του μεταγλωττιστή 3 βασικές αρχιτεκτονικές υπολογιστών καταχωρητών γενικού σκοπού: –Καταχωρητή-καταχωρητή –Καταχωρητή-μνήμης –Μνήμης-μνήμης

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

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

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

13 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 13 Διευθυνσιοδότηση μνήμης Η αρχιτεκτονική καθορίζει πώς ερμηνεύονται και ορίζονται οι διευθύνσεις μνήμης –Ανεξάρτητα τύπου αρχιτεκτονικής (καταχωρητή- καταχωρητή κλπ.) Ποιο αντικείμενο πρέπει να προσπελαστεί ως συνάρτηση της διεύθυνσης και του μήκους; –Όλα τα σύνολα εντολών (εκτός από μερικά DSP’s) διευθυνσιοδοτούνται με βάση το byte και παρέχουν προσπέλαση για bytes (8 bits), μισές λέξεις (16 bits), λέξεις (32 bits) και διπλές λέξεις (64 bits)

14 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 14 Διευθυνσιοδότηση μνήμης (2) Υπάρχουν δύο διαφορετικοί τρόποι για να αριθμούμε τα bytes μέσα σε ένα μεγαλύτερο αντικείμενο –Little Endian –Big Endian

15 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 15 Little Endian Βάζει το byte του οποίου η διεύθυνση είναι “x…x00”, στην λιγότερο σημαντική θέση μέσα στην διπλή λέξη Δεν μπορεί να ταιριάξει την κανονική αρίθμιση των λέξεων όταν συγκρίνονται αλφαριθμητικά Τα bytes αριθμούνται:

16 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 16 Big Endian Βάζει το byte του οποίου η διεύθυνση είναι “x…x00”, στην περισσότερο σημαντική θέση μέσα στην διπλή λέξη Τα bytes αριθμούνται:

17 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 17 Ευθυγράμμιση μνήμης Σε πολλούς υπολογιστές, οι προσπελάσεις σε αντικείμενα μεγαλύτερα του ενός byte πρέπει να ευθυγραμμιστούν Γιατί θα σχεδίαζε κάποιος έναν υπολογιστή με περιορισμούς ευθυγράμμισης; –Μια μη ευθυγραμμισμένη προσπέλαση μνήμης μπορεί να χρειαστεί πολλές αναφορές ευθυγραμμισμένης μνήμης

18 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 18 Μέθοδοι διευθυνσιοδότησης μνήμης Οι μέθοδοι διευθυνσιοδότησης καθορίζουν –θέσεις στη μνήμη –Σταθερές –Καταχωρητές Όταν μια θέση μνήμης χρησιμοποιείται, η τελική διεύθυνση μνήμης που καθορίζεται από τη μέθοδο διευθυνσιοδότησης ονομάζεται πραγματική διεύθυνση (effective address) Υπάρχουν πολλές μέθοδοι διευθυνσιοδότησης (καταχωρητή, άμεση, με εκτόπισμα, με δείκτη, έμμεση, με αυτόματη αύξηση/μείωση, κλιμακούμενη, κλπ.) Υπάρχουν δύο βασικές μέθοδοι διευθυνσιοδότησης: –Άμεση διευθυνσιοδότηση –Διευθυνσιοδότηση εκτόπισης

19 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 19 Χρήση των μεθόδων διευθυνσιοδότησης μνήμης Δείχνει τα αποτελέσματα της μέτρησης των πρότυπων χρησιμότητας των μεθόδων διευθυνσιοδότησης σε τρία προγράμματα στην αρχιτεκτονική VAX Σε αυτά τα προγράμματα σχεδόν όλες οι έμμεσες αναφορές μνήμης χρησιμοποιούν τη μέθοδο εκτόπισης ως βάση. Η μέθοδος εκτόπισης περιλαμβάνει όλα τα μήκη εκτόπισης (8, 16 ή 32bits).

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

21 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 21 Διευθυνσιοδότηση εκτόπισης (2) Οι τιμές εκτόπισης είναι ευρέως κατανεμημένες –Ο άξονας των x είναι ο λογάριθμος της εκτόπισης –Το Ø στον άξονα x δείχνει το ποσοστό εκτοπίσεων με την τιμή Ø –Οι περισσότερες εκτοπίσεις είναι θετικές, αλλά το μεγαλύτερο ποσοστό των μεγάλων εκτοπίσεων (14+ bits) είναι αρνητικές

22 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 22 Άμεση ή επακριβής διευθυνσιοδότηση Ειδικά για διακλαδώσεις, οι άμεσοι μπορούν να χρησιμοποιηθούν σε αριθμητικές πράξεις, σε συγκρίσεις και σε μεταφορές, όπου μια σταθερά ζητείται στον καταχωρητή –Αυτό συμβαίνει για: σταθερές γραμμένες στον κώδικα (τείνουν να είναι μικρές) σταθερές διευθύνσεων (τείνουν να είναι μεγάλες) –Για τη χρήση των άμεσων είναι σημαντικό να ξέρουμε αν πρέπει να υποστηριχθούν για όλες τις λειτουργίες ή μόνο για ένα υποσύνολο.

23 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 23 Άμεση ή επακριβής διευθυνσιοδότηση Τα προγράμματα ακεραίων χρησιμοποιούν άμεσους σε περίπου 1/5 των εντολών Τα προγράμματα κινητής υποδιαστολής χρησιμοποιούν άμεσους σε περίπου 1/6 των εντολών H εντολή φόρτωσης άμεσου βάζει 16 bits σε κάποιο μισό ενός καταχωρητή 32 bit

24 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 24 Διευθυνσιοδότηση για SP: Κυκλική (modulo) διευθυνσιοδότηση Οι DSP έχουν να κάνουν με άπειρες, συνεχείς ροές δεδομένων => συχνά βασίζονται σε κυκλικούς buffers Όταν προστίθενται δεδομένα στον buffer, ένας δείκτης ελέγχεται αν δείχνει στο τέλος του buffer –Αν όχι, ο δείκτης αυξάνεται στην επόμενη διεύθυνση –Αν ναι, ο δείκτης ορίζεται να δείχνει την αρχή του buffer Κυκλικός (modulo) τρόπος διευθυνσιοδότησης: –Καταχωρητές αρχής & τέλους με κάθε καταχωρητή διεύθυνσης –Παραλλαγή: καταχωρητής μήκους buffer Οι DSP απευθύνονται σε ένα μικρό αριθμό αλγορίθμων –Η επόμενη μέθοδος διευθυνσιοδότησης περιλαμβάνεται σε μόνο μία εφαρμογή

25 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 25 Διευθυνσιοδότηση για SP: Αναστροφή bit (bit reversal) Ο FFT ξεκινά ή τελειώνει την επεξεργασία με τα δεδομένα τοποθετημένα σε μια συγκεκριμένη σειρά. Για 8 δεδομένα σε έναν FFT ρίζας 2, ο μετασχηματισμός αναφέρεται πιο κάτω, με τις διευθύνσεις στην παρένθεση να είναι δυαδικές:

26 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 26 Διευθυνσιοδότηση για SP: Αναστροφή bit Λύση για DSP: βασίζεται στην παρατήρηση ότι η καινούργια δυαδική διεύθυνση είναι το αντίστροφο της αρχικής διεύθυνσης (πχ., η διεύθυνση 100 (4) γίνεται 001 (1)). Έτσι πολλοί DSP έχουν ένα δεύτερο τρόπο διευθυνσιοδότησης, αναστροφής bit, στον οποίο το υλικό αντιστρέφει τα χαμηλότερα bit της διεύθυνσης, όπου ο αριθμός των bit που αντιστρέφονται εξαρτάται από το βήμα του αλγορίθμου FFT

27 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 27 Συνοψίζοντας: τι θα περιμέναμε Λόγω της ευρείας χρήσης τους, οι καινούργιες αρχιτεκτονικές να υποστηρίζουν τουλάχιστον τους εξής τρόπους διευθυνσιοδότησης: –Εκτόπιση –Άμεση –Έμμεση μέσω καταχωρητή Το μέγεθος της διεύθυνσης για την διευθυνσιοδότηση εκτόπισης να είναι τουλάχιστον bits Το μέγεθος του άμεσου πεδίου να είναι 8-16 bits

28 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 28 Τύποι & μεγέθη τελεστέων Τύπος τελεστέου (ακέραιου αριθμού ή αριθμού κινητής υποδιαστολής μονής ακρίβειας, ή χαρακτήρα, κ.ο.κ.) δίνει αποτελεσματικά το μέγεθος –Οι κοινοί τύποι τελεστέων περιλαμβάνουν χαρακτήρα (1 byte), μισή λέξη (16 bits), λέξη (32 bits), κινητής υποδιαστολής μονής ακρίβειας (επίσης μια λέξη), και κινητής υποδιαστολής διπλής ακρίβειας (2 λέξεις) Δύο βασικές εναλλακτικές μέθοδοι ορισμού τύπου τελεστέου –Ο τύπος ενός τελεστέου μπορεί να σχεδαστεί κωδικοποιώντας τον στον κωδικό εντολής (αυτή η μέθοδος χρησιμοποιείται πιο συχνά) –Τα δεδομένα μπορούν να περιγραφούν με ετικέτες (tags), οι οποίες ερμηνεύονται από το υλικό

29 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 29 Τύποι & μεγέθη τελεστέων (2) Για τις εφαρμογές επιχειρήσεων, μερικές αρχιτεκτονικές υποστηρίζουν έναν δεκαδικό τύπο – 4 bits χρησιμοποιούνται για να κωδικοποιήσουμε τις τιμές 0-9 και δύο δεκαδικά ψηφία αποθηκεύονται σε κάθε byte. Ένας από τους λόγους που χρησιμοποιούμε δεκαδικούς τελεστέους είναι για να πάρουμε αποτελέσματα που ταιριάζουν απόλυτα σε δεκαδικούς αριθμούς, καθώς κάποια δεκαδικά κλάσματα δεν έχουν ακριβή αναπαράσταση στο δυαδικό. Οι DSP χρειάζονται καταχωρητές συσσώρευσης με μεγαλύτερο πλάτος από το μέγεθος της μνήμης, για να ενισχύσουν την ακρίβεια σε αριθμητική σταθερής υποδιαστολής Παράδειγμα –Το 0,1 είναι ένα απλό δεκαδικό κλάσμα, αλλά στα δυαδικό σύστημα χρειάζεται ένα άπειρο σύνολο επαναλαμβανόμενων ψηφίων: 0,

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

31 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 31 Παράδειγμα θεωρείστε τρία απλά σχήματα των 16 bits: Τι τιμές αντιπροσωπεύουν, αν είναι ακέραιοι συμπληρώματος ως προς 2; Τι τιμές αντιπροσωπεύουν, αν είναι αριθμοί σταθερής υποδιαστολής; Η ακέραια αριθμητική αναπαράσταση ορίζει ότι το ν- ιοστό ψηφίο αριστερά της υποδιαστολής αναπαριστά το 2 ν-1 και το ν-ιοστό ψηφίο δεξία της υποδιαστολής αναπαριστά το 2 -ν

32 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 32 Ακέραιοι Η υποδιαστολή είναι στα δεξιά Οι αριθμοί που αναπαριστάνονται είναι οι 2 14,2 11 και ( ), ή οι 16384, 2048 και 18440

33 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 33 Σταθερή υποδιαστολή Η υποδιαστολή είναι στα δεξιά του ψηφίου προσήμου Οι εκφράσεις αναπαριστούν τους αριθμούς 2 -1, 2 -4 και ( ). Τα κλάσματα είναι ½, 1/16, και ( )/4096, που αναπαριστούν τα 0.5, και Στην περίπτωση ενός αριθμού σταθερής υποδιαστολής σε αναπαράσταση συμπληρώματος ως προς 2, μπορούμε να διαιρέσουμε την ακέραια τιμή με το 2 ν-1 για να φτάσουμε στα ίδια αποτελέσματα: 16384/32768= 1/2 2048/32768= 1/ /32768= 2305/4096

34 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 34 Λειτουργίες & κατηγορίες στο σύνολο εντολών Εμπειρικός κανόνας: οι εντολές που έχουν εκτελεστεί περισσότερο είναι οι απλές λειτουργίες ενός συνόλου εντολών (ισχύει για όλες τις αρχιτεκτονικές) Τύπος τελεστή –Γενικά όλοι οι υπολογιστές παρέχουν ένα ολοκληρωμένο σύνολο λειτουργιών για τις τρεις πρώτες κατηγορίες

35 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 35 Κατηγορίες εντολών στο σύνολο εντολών Αριθμητικές και λογικές: Αριθμητικές και λογικές λειτουργίες ακεραίων- πρόσθεση, αφαίρεση, πολλαπλασιασμός και διαίρεση Μεταφοράς δεδομένων: Φορτώσεις – Αποθηκεύσεις (εντολές μεταφοράς σε υπολογιστές με διευθυνσιοδότηση μνήμης Ελέγχου: Διακλαδώσεις, άλματα, κλήσεις υπο-προγραμμάτων και επιστροφές, παγίδες Συστήματος: Κλήσεις λειτουργικού συστήματος, εντολές διαχείρισης εικονικής μνήμης Κινητής υποδιαστολής: Λειτουργίες κινητής υποδιαστολής – πρόσθεση, πολλαπλασιασμός, διαίρεση, σύγκριση Δεκαδικός: Δεκαδική πρόσθεση, δεκαδικός πολλαπλασιασμός, μετατροπές δεκαδικού σε χαρακτήρα Αλφαριθμητικός: Μεταφορά αλφαριθμητικού, σύγκριση αλφαριθμητικού, αναζήτηση αλφαριθμητικού Γραφικών: Λειτουργίες εικονοστοιχείου και κορυφών, λειτουργίες συμπίεσης/αποσυμπίεσης

36 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 36 Οι πρώτες εντολές 80x86 10 απλές εντολές αποτελούν το 96% των εντολών που εκτελέστηκαν για μια συλλογή προγραμμάτων ακέραιων αριθμών στον διάσημο Intel 80x86

37 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 37 Λειτουργίες για επεξεργασία σήματος και μέσων Η επεξεργασία γραφικών & μέσων κρίνεται από την ανθρώπινη αντίληψη. Αποτέλεσμα: –Οι λειτουργίες κινητής υποδιαστολής για τα γραφικά είναι συνήθως σε απλή (όχι διπλή) ακρίβεια Συχνά με ακρίβεια κάτω από αυτή που απαιτείται από το ΙΕΕΕ 754 –Μπορούμε να χρησιμοποιήσουμε συζευγμένες λειτουργίες Π.χ., ALU 64-bits μπορεί να εκτελέσει 4 παράλληλες προσθέσεις των 16 bits Αυτές οι λειτουργίες ονομάζονται συνήθως μιας εντολής πολλαπλών δεδομένων (SIMD) ή εντολές διανύσματος Οι περισσότερες εφαρμογές γραφικών χρησιμοποιούν λειτουργίες κινητής υποδιαστολής 32 bits. Μερικοί υπολογιστές διπλασιάζουν την μέγιστη απόδοση των λειτουργιών κινητής υποδιαστολής απλής ακρίβειας. Με εντολές τύπου SIMD, τα δύο τμήματα πρέπει να είναι απομονωμένα για να εμποδίσουμε τις λειτουργίες στο ένα μισό να επιδράσουν στο άλλο. –Π.χ., μια τέτοια λειτουργία μπορεί να χρησιμοποιηθεί για τον γραφικό μετασχηματισμό των κορυφών

38 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 38 Λειτουργίες για επεξεργασία σήματος και μέσων Οι DSP παρέχουν λειτουργίες στις 3 πρώτες κατηγορίες εντολών, αλλά με αλλαγές: 1)Λόγω χρήσης σε εφαρμογές πραγματικού χρόνου (real time), δεν υπάρχει η δυνατότητα για εξαίρεση σε αριθμητική υπερχείλιση. Το αποτέλεσμα χρησιμοποιείται πάντα. Γι’αυτό χρησιμοποιείται κορεσμένη αριθμητική: εάν ένα αποτέλεσμα είναι πολύ μεγάλο για να αναπαρασταθεί, “στρογγυλεύεται” στον μεγαλύτερο αριθμό που μπορεί να αναπαρασταθεί (ανάλογα με το πρόσημο του αποτελέσματος). Αντίθετα: σε αριθμητική συμπληρώματος ως προς 2, υπερχείλιση άθροισης θετικών αριθμών μπορεί να καταλήξει σε αρνητική τιμή αποτελέσματος 2)Υπάρχουν διάφοροι τρόποι στρογγυλοποίησης “πλατιών” συσσωρευτών σε στενότερες λέξεις δεδομένων (όπως το ΙΕΕΕ 754 έχει διαφορετικούς τρόπους στρογγυλοποίησης) 3)Οι πυρήνες για τους DSP συσσωρεύουν μια σειρά από γινόμενα, και έτσι έχουν μια εντολή πολλαπλασιασμού – συσσώρευσης (MAC) Το κύριο μέτρο μέτρησης απόδοσης DSP είναι MAC/sec “Φαρδείς” συσσωρευτές χρησιμοποιούνται συνήθως για συσσώρευση δεδομένων & στρογγυλοποίηση όταν τα αποτελέσματα μεταφέρονται στη μνήμη

39 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 39 Η κατανομή εντολών του DSP Ένα στατικό μίγμα εντολών για τον ΤΙ ΤΜS320C540X για ένα σύνολο ρουτινών βιβλιοθήκης –Αυτή η αρχιτεκτονική 16 bits χρησιμοποιεί δύο συσσωρευτές 40 bits Οι σχεδιαστές DSP πιστεύουν ότι οι πολλαπλασιασμοί και οι MAC είναι πιο συχνοί στις δικές τους εφαρμογές απ’ ότι στις εφαρμογές των σταθμών εργασίας

40 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 40 Εντολές ελέγχου ροής Επειδή οι μετρήσεις της συμπεριφοράς διακλάδωσης και αλμάτων είναι σχετικά ανεξάρτητη από άλλες μετρήσεις και εφαρμογές, εξετάζουμε τη χρήση εντολών ελέγχου ροής Δεν υπάρχουν συνεκτικοί όροι για τις εντολές που αλλάζουν την ροή του ελέγχου Στην δεκαετία του 1950 ονομάζονται μεταφορές. Αρχίζοντας από το 1960 άρχισε να χρησιμοποιείται ο όρος διακλάδωση. Αργότερα, οι υπολογιστές έδωσαν καινούργια ονόματα. Μπορούμε να διαχωρίσουμε τέσσερεις τύπους αλλαγής ροής ελέγχου: –Διακλαδώσεις υπό όρους –Άλματα –Κλήση σε υποπρογράμματα –Επιστροφή υποπρογράμματος

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

42 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 42 Τρόποι διευθυνσιοδότησης Η εντολή ελέγχου ροής πρέπει να ορίζεται πάντα Ο πιο συνήθης τρόπος για να ορίζεται ο προορισμός είναι να δίνεται μια μετατόπιση, η οποία προστίθεται στον μετρητή προγράμματος (PC) Για να υλοποιήσουμε επιστροφές και έμμεσα άλματα, όταν ο στόχος δεν είναι γνωστός κατά την διάρκεια της μετάφρασης, χρειάζεται ένας τρόπος διευθυνσιοδότησης διαφορετικός από τον σχετικό ως προς τον PC Αυτά τα έμμεσα άλματα μέσω καταχωρητή είναι χρήσιμα και σε τέσσερεις ακόμα περιπτώσεις: –Εντολές case ή switch –Εικονικές συναρτήσεις ή μέθοδοι (κλήση ρουτινών ανάλογα με τα ορίσματα) –Συναρτήσεις υψηλής τάξεως –Βιβλιοθήκες δυναμικής κοινής χρήσης

43 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 43 Τρόποι διευθυνσιοδότησης Φαίνεται η κατανομή των μετατοπίσεων για διακλαδώσεις ως προς τον PC σε εντολές. Περίπου 75% διακλαδώσεων είναι προς τα εμπρός. Οι πιο συχνές διακλαδώσεις στα προγράμματα ακεραίων είναι σε στόχους που μπορούν να κωδικοποιηθούν σε 4-8 bits –Αυτό σημαίνει ότι μικρά πεδία εκτόπισης είναι συχνά αρκετά για τις διακλαδώσεις –Ο σχεδιαστής μπορεί να κερδίσει πυκνότητα κωδικοποίησης έχοντας μια μικρότερη εντολή με μικρότερη εκτόπιση διακλάδωσης

44 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 44 Επιλογές διακλάδωσης υπό συνθήκη Διακλαδώσεις: οι περισσότερες αλλαγές στην ροή ελέγχου Πως ορίζουμε τον όρο διακλάδωση? Πολύ σημαντικό! Τρεις κύριες τεχνικές σήμερα –Κώδικας συνθήκης –Καταχωρητής συνθήκης –Σύγκριση και διακλάδωση Εμφανείς ιδιότητες των διακλαδώσεων –Μεγάλος αριθμός συγκρίσεων είναι απλές –Μεγάλος αριθμός είναι συγκρίσεις με τον 0 Οι DSP προσθέτουν μια ακόμα δομή βρόχου, η οποία συνήθως ονομάζεται εντολή repeat (επανάληψης) –Επιτρέπει σε μια εντολή ή σε ένα σύνολο εντολών να επαναληφθούν –Μερικοί DSP (πχ., TMS 320C54) χρησιμοποιούν 3 καταχωρητές για μεγαλύτερη απόδοση: (1) αρχική διεύθυνση block, (2) τελική διεύθυνση, και (3) μετρητή επανάληψης. Διευθυνσιοδότηση: αυτόματη αύξηση ή μείωση

45 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 45 Διακλάδωση υπό συνθήκη Φαίνεται η συχνότητα των διαφορετικών συγκρίσεων που χρησιμοποιούνται στην διακλάδωση υπό συνθήκη –Αυτές οι μετρήσεις περιλαμβάνουν τόσο συγκρίσεις αριθμών κινητής υποδιαστολής όσο και ακεραίων –Μεγαλύτερος αριθμός συγκρίσεων περιλαμβάνουν την “μικρότερο” –Μεγάλος αριθμός συγκρίσεων είναι απλές Μεγάλος αριθμός είναι συγκρίσεις με το 0

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

47 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 47 Κωδικοποιώντας το σύνολο εντολών Η αναπαράσταση των εντολών επηρεάζει –Το μέγεθος του μεταγλωττισμένου προγράμματος –Την υλοποίηση του επεξεργαστή (που πρέπει να τις αποκωδικοποιήσει γρήγορα για να βρει τη λειτουργία και τους τελεστέους τους) Η σημαντική απόφαση εξαρτάται από –Την έκταση των μεθόδων διευθυνσιοδότησης –Τον βαθμό της ανεξαρτησίας μεταξύ των κωδικών εντολής και των μεθόδων Όταν κωδικοποιούμε τις εντολές, ο αριθμός των καταχωρητών και ο αριθμός των μεθόδων διευθυνσιοδότησης έχουν σημαντική επιρροή στο μέγεθος των εντολών, αφού και το πεδίο των μεθόδων διευθυνσιοδότησης και το πεδίο του καταχωρητή μπορεί να εμφανιστούν αρκετές φορές σε μία μόνο εντολή Ο αρχιτέκτονας, όταν κωδικοποιεί το σύνολο εντολών, πρέπει να ισορροπήσει (trade-off) ανάμεσα σε: –Επιθυμία περισσότερων καταχωρητών και μεθόδων διευθυνσιοδότησης –Επιρροή του μεγέθους του πεδίου του καταχωρητή και της μεθόδου διευθυνσιοδότησης στο μέσο μέγεθος εντολών (επομένως στο μέσο μέγεθος του προγράμματος) –Επιθυμία κωδικοποίησης των εντολών σε μήκη που εύκολα θα χειριστούμε σε pipeline

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

49 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 49 Παράδειγμα Παράδειγμα μεταβλητής κωδικοποίησης (μια εντολή 80x86): add EAX, 1000 (EBX) –Ο κώδικας add σημαίνει μια εντολή πρόσθεσης με 2 ακέραιους τελεστέους 32 bits & καταλαμβάνει ένα byte –Το όρισμα της διεύθυνσης στην 80x86 είναι 1 ή 2 bytes, προσδιορίζοντας τον καταχωρητή εκκίνησης/κατάληξης (EAX) και τον τρόπο διευθυνσιοδότησης και τον καταχωρητή αναφοράς (EBX) για τον δεύτερο τελεστέο. Ο συνδυασμός χρειάζεται 1 byte για να ορίσει τους τελεστέους. –Όταν βρισκόμαστε σε κατάσταση 32 bits, το μέγεθος του πεδίου διεύθυνσης είναι είτε 1 είτε 4 byte. Καθώς το 1000 είναι μεγαλύτερο από 2 8, το συνολικό μήκος της εντολής είναι: 1+1+4=6 bytes. –Το μήκος των εντολών 80x86 μεταβάλλεται μεταξύ του 1 και των 17 bytes

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

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

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

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

54 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 54 Η δομή σύγχρονων μεταφραστών Οι βελτιστοποιήσεις που εκτελούνται από σύγχρονους μεταγλωττιστές μπορούν να κατηγοριοποιηθούν σύμφωνα με τον τύπο του μετασχηματισμού, ως εξής: –Οι βελτιστοποιήσεις υψηλού επιπέδου συχνά γίνονται στην πηγή και το αποτέλεσμα τροφοδοτείται σε μετέπειτα περάσματα βελτιστοποίησης –Οι τοπικές βελτιστοποιήσεις βελτιστοποιούν τον κώδικα μέσα στα πλαίσια σειριακού (straight line) κώδικα (βασικών blocks) –Οι γενικές βελτιστοποιήσεις επεκτείνουν τις τοπικές βελτιστοποιήσεις στις διακλαδώσεις και εισάγουν ένα σύνολο μετασχηματισμών που προορίζεται για τη βελτιστοποίηση των βρόχων –Μεταφορά στον καταχωρητή, η οποία συσχετίζει τους καταχωρητές με τους τελεστέους –Αρχιτεκτονικές βελτιστοποιήσεις που προσπαθούν να εκμεταλλευθούν συγκεκριμένα χαρακτηριστικά του επεξεργαστή

55 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 55 Κατανομή στους καταχωρητές Μία από τις πιο σημαντικές βελτιστοποιήσεις, εξαιτίας του κεντρικού ρόλου που έχει τόσο στην επιτάχυνση του κώδικα όσο και στο να κάνει χρήσιμες κάποιες άλλες βελτιστοποιήσεις Οι σύγχρονοι αλγόριθμοι γα κατανομή στους καταχωρητές βασίζονται σε μια τεχνική που ονομάζεται χρωματισμός γράφου. Βασική ιδέα: –φτιάχνουμε έναν γράφο που αναπαριστά τους πιθανούς υποψήφιους τελεστέους για κατανομή σε καταχωρητή –Χρησιμοποιούμε τον γράφο για να κατανείμουμε τους καταχωρητές: χρωματίζουμε τον γράφο με τόσα χρώματα όσα οι καταχωρητές, ώστε 2 συνδεδεμένοι κόμβοι (τελεστέοι) να μην έχουν το ίδιο χρώμα (δηλ. να μην αντισοιχούν στον ίδιο καταχωρητή) –Ο χρωματισμός ενός γράφου είναι πρόβλημα NP-hard –Ο χρωματισμός ενός γράφου γίνεται καλύτερος, όταν υπάρχουν τουλάχιστον 16 καταχωρητές γενικού σκοπού, οι οποίοι να είναι διαθέσιμοι για γενικές κατανομές μεταβλητών ακέραιων αριθμών. Όταν ο αριθμός των καταχωρητών είναι μικρός, ο χρωματισμός δεν γίνεται πολύ καλός.

56 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 56 Επίδραση των βελτιστοποιήσεων στην απόδοση Παραδείγματα βελτιστοποιήσεων –Ολοκλήρωση υποπρογράμματος: αντικατάσταση κλήσης υποπρογράμματος με το σώμα υποπρογράμματος –Κίνηση κώδικα: απομάκρυνση κώδικα από ένα βρόχο που υπολογίζει την ίδια τιμή σε κάθε επανάληψη του βρόχου –Μείωσης δύναμης: Πολλές περιπτώσεις, όπως η αντικατάσταση του πολλαπλασιασμού με μια σταθερά από προσθέσεις και ολισθήσεις. Μερικές φορές είναι δύσκολο να ξεχωρίσουμε κάποιες από τις απλούστερες βελτιστοποιήσεις – τις τοπικές και αυτές που εξαρτώνται από τον επεξεργαστή – από τους μετασχηματισμούς που έχουν γίνει στη δημιουργία του κώδικα

57 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 57 Επίδραση των μεταφραστών στις αποφάσεις του αρχιτέκτονα Η αλληλεπίδραση των μεταγλωττιστών και των γλωσσών υψηλού επιπέδου επηρεάζει σημαντικά το πώς χρησιμοποιούν τα προγράμματα την αρχιτεκτονική ενός συνόλου εντολών Σημαντικά προβλήματα: –Πώς κατανέμονται και διευθυνσιοδοτούνται οι μεταβλητές; –Πόσοι καταχωρητές χρειάζονται για να κατανείμουμε σωστά τις μεταβλητές; Η στοίβα χρησιμοποιείται για την κατανομή τοπικών μεταβλητών. Χρησιμοποιείται για καταγραφή δραστηριοποιήσεων, και όχι για υπολογισμούς Ο χώρος γενικών δεδομένων χρησιμοποιείται για την κατανομή στατικά δηλωμένων αντικειμένων, όπως οι γενικές μεταβλητές και σταθερές Ο σωρός (heap) χρησιμοποιείται για την κατανομή δυναμικών αντικειμένων, τα οποία δεν υπακούουν σε κάποια αρχή στοίβας

58 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 58 Πως ο αρχιτέκτονας βοηθά τον δημιουργό μεταφραστή Οι δημιουργοί των μεταφραστών συχνά δουλεύουν κάτω από την δική τους υπόθεση μιας βασικής αρχής της αρχιτεκτονικής: κάνετε τις συχνές περιπτώσεις γρήγορα, και τις σπάνιες σωστά Παροχή κανονικότητας: τα τρία βασικά συστατικά ενός συνόλου εντολών- οι λειτουργίες, οι τύποι δεδομένων και οι τρόποι διευθυνσιοδότησης- θα πρέπει να είναι ορθογώνια. Δύο όψεις μιας αρχιτεκτονικής λέγεται ότι είναι ορθογώνιες, αν είναι ανεξάρτητες. Παροχή βασικών δομικών στοιχείων και όχι λύσεων: ειδικά χαρακτηριστικά που “ταιριάζουν” σε ένα προϊόν γλώσσας ή σε μια λειτουργία του πυρήνα πολλές φορές είναι αχρησιμοποίητα

59 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 59 Πως ο αρχιτέκτονας βοηθά τον δημιουργό μεταφραστή (συν.) Απλοποίηση της εξισορρόπησης παραμέτρων : μια από τις πιο δύσκολες δουλειές είναι ο προσδιορισμός της αλληλουχίας εντολών που είναι καλύτερη για κάθε τμήμα του κώδικα. Με τις κρυφές μνήμες και την ομοχειρία, η εξισορρόπηση όλων των παραγόντων έχουν γίνει πολύ περίπλοκη. –Παράδειγμα: σε αρχιτεκτονική καταχωρητή-μνήμης, πόσες φορές πρέπει να προσπελαστεί μια μεταβλητή για να συμφέρει να την τοποθετήσουμε σε καταχωρητή? Παροχή εντολών που να δεσμεύουν τις ποσότητες που είναι γνωστές στο χρόνο μετάφρασης ως σταθερές: ένας δημιουργός μεταφραστών μισεί το να ερμηνεύει ένας επεξεργαστής κατά το χρόνο εκτέλεσης μια τιμή που ήταν γνωστή στο χρόνο μετάφρασης

60 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 60 Υποστήριξη μεταφραστών για εντολές πολυμέσων Οι εντολές SIMD είναι λύσεις και όχι βασικά δομικά στοιχεία –Δεν έχουν αρκετούς καταχωρητές –Οι τύποι δεδομένων δεν είναι συμβατοί με τις υπάρχουσες γλώσσες προγραμματισμού Οι εντολές SIMD είναι στην πραγματικότητα μια συνοπτική εκδοχή ενός ιδιαίτερου αρχιτεκτονικού στυλ που έχει την δική του τεχνολογία μεταφραστών Όταν υποστηρίζονται SIMD εντολές, η “κομψότητα” που απουσιάζει από αυτές τις αρχιτεκτονικές περιλαμβάνει τον ορισμό του μήκους του διανύσματος και τους τρόπους διευθυνσιοδότησης της μνήμης. Επιτρέποντας μεταβλητό μέγεθος ανύσματος, τα διανύσματα μπορούν να αλλάζουν χωρίς πρόβλημα ανάμεσα σε διαφορετικό εύρος δεδομένων, απλά αυξάνοντας τον αριθμό των στοιχείων ανά διάνυσμα. –Παράδειγμα: τα διανύσματα θα μπορούσαν να έχουν 32 στοιχεία των 64 bits, 64 στοιχεία των 32 bits, 128 στοιχεία των 16 bits ή 256 στοιχεία των 8 bits. Ο αριθμός των στοιχείων ανά καταχωρητή διανύσματος μπορεί να μεταβάλλεται από γενιά σε γενιά, ενώ παραμένει δυαδικά συμβατός.

61 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 61 Υποστήριξη μεταφραστών για εντολές πολυμέσων (συν.) Ένα πλεονέκτημα των υπολογιστών διανύσματος είναι η απόκρυψη της καθυστέρησης της πρόσβασης στην μνήμη φορτώνοντας πολλά στοιχεία ταυτόχρονα και στη συνέχεια επικαλύπτοντας την εκτέλεση με μεταφορά δεδομένων Για βοήθεια, προστέθηκαν μέθοδοι διευθυνσιοδότησης –βηματική διευθυνσιοδότηση (stride addressing): διαδοχικές προσπελάσεις διαφέρουν κατά σταθερή ποσότητα (μοναδιαία βήμα προσπελαύνει διαδοχικές θέσεις μνήμης) –διευθυνσιοδότηση συγκέντρωσης/διασποράς (gather/scatter addressing): βρίσκουν διευθύνσεις σε άλλους καταχωρητές ανυσμάτων (είναι σαν έμμεση διευθυνσιοδότηση μέσω καταχωρητή για διανυσματικούς υπολογιστές)

62 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 62 Παράδειγμα Συγκρίνουμε έναν διανυσματικό υπολογιστή με τον ΜΜΧ για μετατροπή της απεικόνισης χρώματος των εικονοστοιχείων (pixel) από RGB (κόκκινο, πράσινο, μπλε) σε YUV (φωτεινότητα, χρωματικότητα), όπου κάθε εικονοστοιχείο αναπαριστάται με 3 bytes Η μετατροπή είναι μόλις τρεις γραμμές κώδικα C τοποθετημένες σε έναν βρόχο:

63 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 63 Παράδειγμα (2) Ένας ανυσματικός υπολογιστής εύρους 64 bits μπορεί να υπολογίσει 8 εικονοστοιχεία ταυτόχρονα. Ένας υπολογιστής διανύσματος για πολυμέσα με βηματικές διευθύνσεις χρειάζεται: –Τρεις φορτώσεις διανύσματος (για να πάρει RGB) –Τρεις πολλαπλασιασμούς διανύσματος (για να μετατρέψει το R) –Έξι συνδυασμούς πολλαπλασιασμού/πρόσθεσης (για να μετατρέψει το G και το B) –Τρεις ολισθήσεις διανύσματος (για να διαιρέσει με το ) –Δύο προσθέσεις διανύσματος (για να προσθέσει το 128) –Τρεις αποθηκεύσεις διανύσματος (για να αποθηκεύσει το YUV)

64 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 64 Παράδειγμα (3) Το σύνολο είναι 20 εντολές για να εκτελέσουν 20 πράξεις στον προηγούμενο κώδικα C, ώστε να μετατρέψουν 8 εικονοστοιχεία Αντίθετα, ο δικτυακός τόπος της Intel δείχνει ότι μια ρουτίνα βιβλιοθήκης για να κάνει την ίδια μετατροπή σε 8 εικονοστοιχεία χρειάζεται 116 εντολές ΜΜΧ και 6 εντολές 80x86 (Intel 2001) Η αύξηση των εντολών κατά ένα παράγοντα 6 οφείλεται στον μεγάλο αριθμό εντολών που χρειάζονται για την φόρτωση και αποσυμπίεση των εικονοστοιχείων RGB και την συμπίεση και αποθήκευση των εικονοστοιχείων YUV, καθώς δεν υπάρχει βηματική πρόσβαση στην μνήμη

65 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 65 Αρχιτεκτονική MIPS64 MIPS: απλή, κατανοητή αρχιτεκτονική –Πολλά versions Η αρχιτεκτονική του συνόλου εντολών του MIPS (64 bits) δίνει έμφαση: –Σε ένα απλό σύνολο εντολών φόρτωσης – αποθήκευσης –Στο σχεδιασμό για την αποτελεσματικότητα της ομοχειρίας, περιλαμβάνοντας μια σταθερή κωδικοποίηση του συνόλου εντολών –Στην αποτελεσματικότητα, ως στόχο του μεταφραστή Ο MIPS64 έχει 32 καταχωρητές γενικής χρήσης 64 bit (GPR), που ονομάζονται R0, R1, …, R31. Οι GPR είναι γνωστοί και ως καταχωρητές ακεραίων. Υπάρχει ένα σύνολο από 32 καταχωρητές κινητής υποδιαστολής (FPR) που ονομάζονται F0, F1, …, F31, οι οποίοι μπορούν να αποθηκεύσουν 32 τιμές απλής ακρίβειας (32 bits) ή 32 τιμές διπλής ακρίβειας (64 bits). Η τιμή του R0 είναι παντα 0. Επίσης, υπάρχουν εντολές για την μετακίνηση μεταξύ FPR και ενός GPR.

66 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 66 MIPS: Τύποι δεδομένων & διευθυνσιοδότηση Οι τύποι δεδομένων είναι bytes (8 bits), μισές λέξεις (16 bits), λέξεις (32 bits) και διπλές λέξεις (64-bits) για ακέραια δεδομένα και 32 bits απλής ακρίβειας και 64 bits διπλής ακρίβειας για δεδομένα κινητής υποδιαστολής. Οι λειτουργίες του MIPS χρησιμοποιούν ακέραιους αριθμούς των 64 bits και αριθμούς κινητής υποδιαστολής των 32 ή των 64 bits. Τα bytes, οι μισές λέξεις και οι λέξεις φορτώνονται στους καταχωρητές γενικού σκοπού είτε με μηδενικά είτε με το bit προσήμου που έχει αντιγραφεί πιστά για να γεμίσει τα 64 bits του GPR. Μνήμη προσπελάσιμη σε byte (διεύθυνση 64 bits) –Bit επιλογής Big-Endian/Little-Endian Οι μόνοι τρόποι διευθυνσιοδότησης είναι 2: –Άμεση: με πεδίο 16 bits –Εκτόπιση: με πεδίο 16 bits Άλλοι τρόποι υλοποιούνται χρησιμοποιώντας τους παραπάνω: –Έμμεση: ως εκτόπιση με πεδίο = 0 –Απόλυτη: χρησιμοποιεί τον καταχωρητή 0 ως καταχωρητή βάσης

67 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 67 MIPS: Τύποι εντολών Αφού ο MIPS έχει μόνο δυο τρόπους διευθυνσιοδότησης, αυτοί μπορούν να κωδικοποιηθούν μέσα στην εντολή Όλες οι εντολές είναι των 32 bits με ένα κώδικα εντολής των 6 bits Οι διατάξεις εντολών για το MIPS είναι απλές, ενώ διαθέτουν πεδία των 16 bits για εκτόπιση διεύθυνσης, άμεσες σταθερές ή διευθύνσεις διακλαδώσεων σχετικών ως προς τον PC

68 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 68 MIPS: Λειτουργίες Ο MIPS υποστηρίζει τη λίστα απλών λειτουργιών 4 μεγάλες κατηγορίες εντολών –φορτώσεις και οι αποθηκεύσεις –λειτουργίες ALU –διακλαδώσεις και τα άλματα –λειτουργίες κινητής υποδιαστολής Οποιοσδήποτε καταχωρητής γενικού σκοπού ή κινητής υποδιαστολής μπορεί να φορτωθεί ή να αποθηκευτεί, εκτός του R0. Οι αριθμοί κινητής υποδιαστολής απλής ακρίβειας καταλαμβάνουν μισό καταχωρητή κινητής υποδιαστολής. Οι μετατροπές μεταξύ απλής και διπλής ακρίβειας γίνονται ρητά.

69 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 69 MIPS: Εντολές ελέγχου ροής Ο MIPS έχει εντολές σύγκρισης, που συγκρίνουν δύο καταχωρητές για να δουν αν ο πρώτος είναι μικρότερος από τον δεύτερο (εάν η συνθήκη ισχύει, ο καταχωρητής προορισμού γίνεται 1, αλλιώς γίνεται 0) Ο έλεγχος γίνεται μέσα από ένα σύνολο αλμάτων και διακλαδώσεων Υπάρχουν δύο τύποι άλματος –Το απλό άλμα –Το άλμα και σύνδεση, αυτό τοποθετεί τη διεύθυνση προορισμού Όλες οι διακλαδώσεις είναι υπό συνθήκη –Με έλεγχο εάν ένας καταχωρητής είναι αρνητικός –Με έλεγχο για ισότητα μεταξύ δύο καταχωρητών, κλπ.

70 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 70 MIPS: Εντολές ελέγχου ροής Τυπικές εντολές ελέγχου ροής στον MIPS. Όλες οι εντολές ελέγχου είναι σχετικές ως προς τον PC, εκτός από τα άλματα σε κάποια διεύθυνση που βρίσκεται σε καταχωρητή Όλες οι εντολές είναι 32 bits

71 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 71 MIPS: Εντολές κινητής υποδιαστολής Οι εντολές κινητής υποδιαστολής διαχειρίζονται τους καταχωρητές κινητής υποδιαστολής και υποδεικνύουν το αν η λειτουργία που πρόκειται να εκτελεστεί είναι απλής (MOV.S) ή διπλής ακρίβειας (MOV.D) Οι λειτουργίες MFCI και MTCI μετακινούν δεδομένα μεταξύ ενός καταχωρητή κινητής υποδιαστολής απλής ακρίβειας και ενός καταχωρητή ακέραιων αριθμών Οι λειτουργίες κινητής υποδιαστολής είναι η πρόσθεση, η αφαίρεση, ο πολλαπλασιασμός και η διαίρεση –Η κατάληξη D χρησιμοποιείται για την διπλή ακρίβεια και η κατάληξη S για την απλή ακρίβεια (π.χ., ADD.D, ADD.S, SUB.D, SUB.S MUL.D, MUL.S, DIV.D, DIV.S)

72 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 72 Trimedia 32 H CPU Trimedia TM32 είναι ένα χαρακτηριστικό παράδειγμα ενσωματωμένου επεξεργαστή πολυμέσων –Οι εφαρμογές πολυμέσων έχουν σημαντικό παραλληλισμό στην επεξεργασία των δεδομένων Ιδιαίτερα χαρακτηριστικά –Υπάρχουν πολλοί περισσότεροι καταχωρητές: 128 καταχωρητές 32 bits, που περιέχουν δεδομένα είτε ακεραίων είτε κινητής υποδιαστολής –κατατμημένες εντολές ALU και SIMD που επιτρέπουν υπολογισμούς σε πολλαπλές εκφάνσεις στενότερων δεδομένων –Αριθμητική συμπληρώματος ως προς 2 & κορεσμένη αριθμητική –Αρχιτεκτονική VLIW (Very Large Instruction Word).

73 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 73 Trimedia 32 (συν.) Αρχιτεκτονική VLIW (Very Large Instruction Word). –Eπιτρέπει στον προγραμματιστή να ορίσει πέντε ανεξάρτητες λειτουργίες που εκδίδονται την ίδια στιγμή –Εάν δεν υπάρχουν πέντε ανεξάρτητες εντολές που να μπορέσει ο μεταφραστής να συν-δρομολογήσει, αυτό σημαίνει ότι οι υπόλοιπες είναι εξαρτημένες Η CPU Trimedia ΤΜ32 έχει μεγαλύτερες λέξεις εντολών και συχνά περιλαμβάνουν ΝΟP –οι εντολές συμπιέζονται στην μνήμη & αποκωδικοποιούνται στο κανονικό τους μέγεθος όταν φορτώνονται στην κρυφή μνήμη Το κόστος σε μέγεθος κώδικα αυτών των εντολών VLIW είναι ένας παράγοντας 2 ή 3 παραπάνω από τις εντολές MIPS ακόμα και μετά την συμπίεση

74 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 74 Κατάλογος λειτουργιών Κατάλογος λειτουργιών και αριθμός διαφορετικών εκφάνσεων στη CPU Trimedia TM32 –Ο αριθμός των λειτουργιών είναι υψηλός σε σχέση με άλλες αρχιτεκτονικές –Οι διακλαδώσεις καθυστερούν κατά τρεις θέσεις

75 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 75 Συμπερασματικά σχόλια Δεκαετία 1960: οι αρχιτεκτονικές στοίβας έγιναν δημοφιλείς. Αντιμετωπίζονταν ως ένας καλός συνδυασμός για τις γλώσσες υψηλού επιπέδου – και πιθανότατα ήταν, αν λάβουμε υπόψη μας την τεχνολογία των μεταφραστών εκείνης της εποχής Δεκαετία 1970: το κύριο μέλημα των αρχιτεκτόνων ήταν η μείωση του κόστους του λογισμικού Δεκαετία 1980: η έμφαση στην απόδοση του επεξεργαστή έδειξε μια τάση επιστροφής προς πιο απλές αρχιτεκτονικές, που βασιζόταν κυρίως σε επεξεργαστές του στυλ φόρτωσης – αποθήκευσης Δεκαετία 1990: το μέγεθος της διεύθυνσης διπλασιάζεται, γίνεται βελτιστοποίηση των διακλαδώσεων υπό συνθήκη, βελτιστοποίηση της απόδοσης της κρυφής μνήμη μέσω της προμεταφοράς, υποστήριξη για πολυμέσα, γρηγορότερες πράξεις κινητής υποδιαστολής

76 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 76 Ιστορική ανασκόπηση & αναφορές Ο πρώτος υπολογιστής καταχωρητή γενικού τύπου ήταν ο Pegasus, που κατασκευάστηκε από την Ferranti Ltd το Ο Pegasus είχε 8 καταχωρητές γενικού σκοπού, με τον R0 να είναι πάντα 0. Οι μεταφορές των μπλόκ φόρτωναν τους 8 καταχωρητές από τη μνήμη. Αρχιτεκτονικές στοίβας Ορισμός της αρχιτεκτονικής υπολογιστών Αρχιτεκτονικές υπολογιστών γλώσσας υψηλού επιπέδου Υπολογιστές περιορισμένου συνόλου εντολών Μια σύντομη ιστορία των επεξεργαστών υηφιακού σήματος Υποστήριξη πολυμέσων σε σύνολα εντολών υπολογιστών σταθμών εργασίας

77 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 77 Αναλογία MIPS M2000 & VAX 8700 Φαίνεται η αναλογία του αριθμού εντολών που εκτελέστηκαν, η αναλογία των CPI και η αναλογία της απόδοσης, μετρημένη σε κύκλους ρολογιού Οι χρόνοι των κύκλων ρολογιού θεωρούνται ίδιοι Ο MIPS εκτελεί περίπου διπλάσιες εντολές από τον VAX


Κατέβασμα ppt "ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ - Δ. Σερπάνος 1 Κεφάλαιο 2."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google