ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2 5ο μάθημα:αρχές, ιδιότητες αρχιτεκτονικού συνόλου εντολών (ISA) Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου
Εσωτερική αποθήκευση Κατηγορίες εσωτερικής αποθήκευσης: Στοίβα π.χ. Java vitrual machine τελεσταίοι στις πρώτες θέσεις της στοίβας (implicit naming) Συσωρευτής (accumulator) αποθηκεύει το αποτέλεσμα συχνά είναι και ένας «τελεσταίος πηγής» (source operand) λίγοι επιπλέον καταχωρητές ειδικού σκοπού (extended accumulator, special- purpose register) Καταχωρητές γενικής χρήσης (general purpose registers) π.χ. MIPS αριθμός καταχωρητών για τελεσταίους. χρειάζονται ονόματα Αμεση/έμμεση (explicit/implicit) αναφορά τελεσταίων 2
Προσπέλαση μνήμης register- memory επιτρέπουν προσπέλαση μνήμης ως μέρος της εντολής μερικοί τελεσταίοι μπορεί να είναι στη μνήμη αντί σε καταχωρητές load- store προσπέλαση μνήμης με ξεχωριστές εντολές ονομάζονται και register- register memory- memory όλοι οι τελεσταίοι βρίσκονται στη μνήμη δεν υπάρχουν πλέον τέτοιες αρχιτεκτονικές! 3
Κατηγορίες επεξεργαστών 4
C = A + B Υποθέτουμε A, B, C είναι αποθηκευμένα στη μνήμη 5
Καταχωρητές γενικής χρήσης Οι καταχωρητές είναι γρηγορότεροι από τη μνήμη Οι καταχωρητές προσφέρουν μεγαλύτερη ευελιξία σε σχέση με στοίβα, συσωρευτή π.χ. (A*B) (B*C) (A*D) Στοίβα απαιτεί μία συγκεκριμένη σειρά εκτέλεσης των πράξεων Μπορεί να υπάρχει καλύτερη σειρά εκτέλεσης Οι καταχωρητές μπορούν να κρατούν μεταβλητές αν υπάρχουν αρκετοί Πόσοι καταχωρητές; όσο περισσότεροι, τόσο καλύτερα αλλά, χρειάζονται bits στη κωδικοποίηση κάθε εντολής (log 2 αριθμού καταχωρητών) 6
Αριθμός τελεσταίων μνήμης Παρατήρηση: περισσότεροι τελεσταίοι μνήμης - > λιγότεροι συνολικά τελεσταίοι Εντολές γράφουν αποτέλεσμα «πάνω» σε ένα τελεσταίο πηγής: A <- A + B 7
Τελεσταίοι: σύγκριση 8
Διευθυνσιοδότηση μνήμης Οι περισσότεροι επεξεργαστές μπορούν να χειριστούν απευθείας ένα αριθμό τύπων δεδομένων bytes (8- bit) για χαρακτήρες ASCII half- words (16- bit) για μικρούς ακέραιους, Unicode χαρακτήρες word (32- bit) για ακέραιους, «μισής ακρίβειας» αριθμούς κινητής υποδιαστολής,... double word (64- bit) για μεγάλους ακέραιους, διευθύνσεις μνήμης, αριθμούς κινητής υποδιαστολής,... Η μνήμη ειναι διευθυνσιοδοτημένη σε bytes «Λογικά», μοιάζει με ένα πίνακα από bytes Αλλά μπορεί να διαχειριστεί μεγαλύτερους τύπους δεδομένων «φυσικά» (σε ένα κύκλο) με ποιά σειρά αριθμούνται τα bytes ενός μεγαλύτερου τύπου δεδ.; από τη μικρή μεριά (liole end) ή τη μεγάλη (big end) 9
Endianess bit 31 Big Endian bit 0 bit 31 Little Endian bit 0 4 5 6 7 word 4 0 1 2 3 byte0 byte1 byte2 byte3 7 6 5 4 word 4 3 2 1 0 byte3 byte2 byte1 byte0 figure source: wikipedia, endianess 10
Προβλήματα Endianess Προβληματα παρουσιάζονται όταν μεταφέρονται δεδομένα από το ένα είδος ΗΥ στο άλλο όταν γίνεται προσπέλαση στα επιμέρους bytes μιας λέξης Καλά ορισμένα πρωτόκολλα επικοινωνίας ορίζουν το endianess με το οποίο αναπαριστούν τα δεδομένα 11
Τοποθέτηση στη μνήμη Πού μπορεί να τοποθετηθεί μια λέξη (32 bit); αντίστοιχα για άλλους τύπους δεδομένων Οπουδήποτε, π.χ. από τη διεύθυνση 5 και πάνω Ευθυγραμμισμένα (aligned): σε διευθύνσεις που είναι πολλαπλάσια του μεγέθους της s, σε bytes Πρέπει A mod s = 0 π.χ. για 32- bit λέξεις διευθύνσεις 0, 4, 8,... Γιατί η ευθυγράμμιση είναι σημαντική; «Φυσικά» η μνήμη είναι οργανωμένη σε σειρές κάποιου μεγέθους μη ευθυγραμισμένα δεδομένα απαιτούν 2 προσπελάσεις 12
Alignment network 13
Addressing modes Ο τρόπος προσδιορισμού «θέσης» αντικειμένου προς προσπέλαση Συχνά αναφέρεται σε τρόπους υπολογισμού διευθύνσεων μνήμης Εδώ, ο όρος χρησιμοποιείται και για προσδιορισμό σταθερών και καταχωρητών Για αντικείμενα στη μνήμη, η διεύθυνση που προσδιορίζεται από το addressing mode λέγεται effec ve address Μπορούν να μειώσουν τον αριθμό εντολών, αλλά αυξάνουν την πολυπλοκότητα (CPI) 14
Είδη addressing mode (1/2) 15
Είδη addressing mode (2/2) Υπάρχουν και «addressing modes» που χρησιμοποιούν τον PC π.χ. PC- rela ve (PC+displacement) Χρησιμοποιούνται για εντολές διακλάδωσης, για να προσδιορίσουν τη διεύθυνση στόχο της διακλάδωσης 16
Συχνότητα χρήσης addr. mode Δε φαίνεται Register 50% Ο ρόλος του compiler είναι σημαντικός 17
Μέγεθος displacement Χρησιμοποιείται για διαφορετικά είδη αποθήκευσης: stack, heap, globals 18
Immediate Δύο κύρια είδη: «φόρτωμα» σε καταχωρητή μιας σταθεράς (συχνά σε μέρος του καταχωρητή) τελεσταίος σε πράξη ALU 19
Μέγεθος immediate Integer benchmarks: 20% nega ve, FP: 30% 16 bits αρκετά για ~80% περιπτώσεων, 8 bits για ~50% 20
Μέγεθος/τύπος τελεσταίων Δύο τρόποι (στη θεωρία) καθορισμού μεγέθους: Διαφορετικές εντολές για κάθε τύπο/μέγεθος Ο τύπος κωδικοποιείται μαζί με τα δεδομένα στη πράξη δε χρησιμοποιείται Κινητή υποδιαστολή: πρότυπο IEEE 754 καθορίζει κωδικοποίηση, μεγέθη, στρογγυλοποιήσεις,... Ακέραιοι τύποι: bytes, half- words(16), words, double, quad Με πρόσημο (signed) ή χωρίς (unsigned) Καταχωρητές έχουν το μέγιστο πλάτος σε bits (π.χ. 64) εντολές load/store συμπληρώνουν με 0 ή κάνουν επέκταση προσήμου 21
Κατανομή μεγεθών Η συχνή χρήση 64 bit είναι για διευθύνσεις (δείκτες) οι μετρήσεις έγιναν σε μηχάνημα 64- bit 22
Αναπαράσταση αριθμών Η πιο συνηθισμένη είναι συμπλήρωμα ως προς 2 ή συνηθισμένη απρόσημη αναπαράσταση Μερικές αρχιτεκτονικές υποστηρίζουν BCD binary coded decimal 4 bit για κάθε (δεκαδικό) ψηφίο) Οπως τα string, μόνο που κάθε «χαρακτήρας» είναι 4 bit Χειρότερη πυκνότητα: σε 8bit, μέγιστος BCD 99, μέγιστος bin. 256 Γιατί BCD; Για ομοιόμορφη αναπαράσταση με το δεκαδικό σύστημα Π.χ. (0.1) 10 = (0.000110011) 2 Σε εμπορικές εφαρμογές 23
Είδη εντολών 24
Κατανομή εντολών Μεγάλη ποικιλία, πολλές εξειδικευμένες εντολές Οι πιο συχνές εντολές είναι οι πιο απλές 25
Εντολές ελέγχου ροής Διακλαδώσεις (υπό συνθήκη) Αλματα Κλήση, επιστροφή υπορουτίνας 26
Διεύθυνση προορισμού PC- rela ve: ένας αριθμός εντολών/bytes πρίν ή μετά Ο προορισμός μιας διακλάδωσης (συχνά και άλματος) βρίσκεται κοντά στη διεύθυνση της διακλάδωσης Απαιτεί σχετικά μικρό αριθμό από bit Διευκολύνει code reloca on Ιδιότητα ονομάζεται posi on independence Δυναμικός καθορισμός στόχου Επιστροφή υπορουτίνας, indirect jump (δείκτης σε συνάρτηση, virtual methods, switch/case statements, dynamically shared libraries) Συνήθως χρησιμοποιείται ένας καταχωρητής 27
Branch displacement Το 75% των διακλαδώσεων έχει διεύθυνση «προς τα εμπρός», σε μετέπειτα εντολή 28
Υλοποίηση ελέγχου συνθήκης 29
Συνθήκες Οι περισσότερες συνθήκες είναι απλές συγκρίσεις, συχνά ισότητα με το 0 30
Κλήση υπορουτίνας Κατ ελάχιστο απαιτείται η αποθήκευση της διεύθυνσης επιστροφής σε ειδικό καταχωρητή (link/return register), σε έναν από τους καταχ. γενικού σκοπού, ή στη στοίβα (μνήμη) Σε παλιές αρχιτεκτονικές αποθηκεύαν και τιμές καταχωρητών ή να άλλαζαν το τρέχον σύνολο καταχωρητών (register windows) Caller save ο καλών «σώζει» τις τιμές των καταχωρητών που θα χρειαστεί μετά την επιστροφή από την υπορουτίνα Callee save ο καλούμενος κάνει την αποθήκευση Η σύμβαση είναι μέρος του Applica on Binary Interface (ΑΒΙ) 31
Κωδικοποίηση εντολών Επηρεάζει το μέγεθος κώδικα μέγεθος/κόστος μνήμης (ειδικά σε ενσωματομένους Η/Υ) επιδόσεις κρυφής μνήμης Αλλά και την υλοποίηση πρέπει η αποκωδικοποίηση της εντολής και των τελεσταίων να γίνει γρήγορα Πεδία προσδιορίζουν την πράξη (opcode) και τους τελεσταίους Αν υπάρχουν πολλά addressing mode, υπάρχει ένας address specifier για κάθε τελεσταίο αλλιώς το addressing mode κωδικοποιείται στο opcode 32
Είδη κωδικοποίησης (length) 33
Ο ρόλος του compiler Παλιότερες αρχιτεκτονικές σχεδίαζαν τις εντολές μηχανής με την υπόθεση ότι ο προγραμματισμός γίνεται κυρίως σε assembly δεν γίνεται πλέον εκτός από μικρά τμήματα Λ.Σ. ή βιβλιοθηκών Κύριο μέλημα είναι η σωστή μετάφραση από γλώσσα υψηλού επιπέδου σε γλώσσα μηχανής πάντα επιλέγεται η ορθότητα σε βάρος της ταχύτητας Make the frequent cases fast and the rare case correct Μεγάλη πολυπλοκότητα μεταγλώτιση σε φάσεις Χρόνος μεταγλώτισης είναι σημαντικός οι βελτιστοποιήσεις είναι προεραιτικές 34
Δομή compiler 35
Χρήσιμες ιδιότητες Ομοιομορφία the opera ons, the data types, and the addressing modes should be orthogonal Παροχή αρχέτυπων όχι λύσεων έτοιμες λύσεις ειδικά για κάποια γλώσσα προγραμματισμού δεν είναι χρήσιμες π.χ. εντολές κλήσης υπορουτίνας που αποθηκεύουν και καταχωρητές Απλοποίηση επιλογών αν υπάρχουν πολλαπλές επιλογές, πρέπει να είναι εύκολο να υπολογιστεί ποιά λύση είναι καλύτερη σε κάθε περίπτωση 36