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

Σχετικά έγγραφα
Αρχιτεκτονική Υπολογιστών

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy

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

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Υπολογιστές Ι. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Τεχνολογίες ημιαγωγών. Chapter 2 Instructions: Language of the Computer 1

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Μικροβιολογία & Υγιεινή Τροφίμων

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

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

Ιστορία της μετάφρασης

Εντολές του MIPS (2)

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

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

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 2 Οργάνωση μνήμης Καταχωρητές του MIPS Εντολές του MIPS 1

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Ηλεκτρονικοί Υπολογιστές I

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

ΠΛΕ- 027 Μικροεπεξεργαστές

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

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Μαθηματικά και Φυσική με Υπολογιστές

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Σχεδιασμός Ολοκληρωμένων Κυκλωμάτων VLSI II

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

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

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

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 2. Εντολές : Η γλώσσα του υπολογιστή

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

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

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Ασκήσεις 5: Εντολές Συγκρίσεων και Μεταφοράς Ελέγχου. Μανόλης Γ.Η.

Αναπαράσταση Δεδομένων. ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

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

Υπολογιστές Ι. Άδειες Χρήσης. Πολυδιάστατοι πίνακες. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Ηλεκτρισμός & Μαγνητισμός

Εφαρμοσμένη Στατιστική

Ηλεκτρονικοί Υπολογιστές

Ιστορία της μετάφρασης

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

Βασικοί άξονες Μαθηματικά στην εκπαίδευση:

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

Multi Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Πιθανότητες. Συνδυαστική Ανάλυση Διδάσκων: Επίκουρος Καθηγητής Κωνσταντίνος Μπλέκας

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οδοποιία IΙ. Ενότητα 14: Υπόδειγμα σύνταξης τευχών θέματος Οδοποιίας. Γεώργιος Μίντσης ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Αρχιτεκτονική Υπολογιστών Ασκήσεις Εργαστηρίου

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική Ι. Ενότητα 3 : Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

Εισαγωγή στους Αλγορίθμους

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

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

MIPS functions and procedures

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Υπολογιστές Ι. Άδειες Χρήσης. Μεταβλητές και πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Ενότητα: Δακτύλιοι, Ακέραιες Περιοχές, Σώματα. Διδάσκων: Καθηγητής Μαρμαρίδης Νικόλαος - Θεοδόσιος

Ηλεκτρονικοί Υπολογιστές IV

ΓΕΝΙΚΗ ΚΑΙ ΑΝΟΡΓΑΝΗ ΧΗΜΕΙΑ

Μαθηματικά και Φυσική με Υπολογιστές

Ηλεκτρισμός & Μαγνητισμός

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εκκλησιαστικό Δίκαιο

Προγραμματισμός και Εφαρμογές Υπολογιστών

Διδακτική της Πληροφορικής

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

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

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

Single Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Αρχιτεκτονικό σύνολο εντολών Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Αρχιτεκτονική Υπολογιστών Αρχιτεκτονικό σύνολο εντολών Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Εισαγωγή στη γλώσσα της μηχανής Αρης Ευθυμίου I speak Spanish to God, Italian to women, French to men, and German to my horse, Charles V, King of France

Το σημερινό μάθημα! Εισαγωγή στη γλώσσα του υπολογιστή (MIPS)! Καταχωρητές οι «μεταβλητές» του υπολογιστή! Εντολές αριθμητικών πράξεων! Εντολές μεταφοράς δεδομένων! Τελεσταίοι 2

Γλώσσα assembly! Για να κατευθύνεις το υλικό ενός υπολογιστή, πρέπει να γνωρίζεις τη γλώσσα του! Οι λέξεις της λέγονται εντολές (instruchons)! Το «λεξιλόγιο» ονομάζεται αρχιτεκτονική συνόλου εντολών! Instruchon Set Architecture (ISA)! Διαφορετικοί επεξεργαστές έχουν διαφορετικά ISAs! αλλά με σημαντικές ομοιώτητες: μαθαίνοντας μία ISA, εύκολα μαθαίνεις και άλλες 3

MIPS! Θα χρησιμοποιήσουμε τον MIPS απλός, τυπικός RISC επεξεργαστής όταν δείτε τον x86 θα καταλάβετε! τον χρησιμοποιεί το βασικό σύγγραμμα!! Πού βρίσκεται; στο 75% των Blu- ray disc players σε πολλές ψηφιακές τηλεοράσεις και αποκωδικοποιητές στον file server (NAS) του εργαστηρίου υλικού! Ανήκει πλέον στην Imaginahon technologies γνωστή για τα PowerVR, GPUs 4

Πρόσθεση! Κάθε επεξεργαστής κάνει αριθμητικές πράξεις η πρόσθεση είναι η θεμελιώδης αριθμητική πράξη! Στον MIPS: σχόλιο add a, b, c # a = b + c! δίνει εντολή να προστεθούν οι μεταβλητές b, c και το αποτέλεσμα να εγγραφεί στην μεταβλητή a 5

Σύνταξη εντολών πράξη προορισμός, 1η πηγή, 2η πηγή! Η μορφή των εντολών είναι άκαμπτη (rigid): πάντα μία πράξη, 3 τελεσταίοι (operands) 1ος τελεσταίος είναι ο προορισμός (deshnahon operand) 2ος τελεσταίος είναι η 1η πηγή (1st source operand) 3ος τελεσταίος είναι η 2η πηγή (2nd source operand) η σειρά των πηγών έχει σημασία για πράξεις όπως η αφαίρεση! Γιατί η ακαμψία; η ομοιομορφία απλοποιεί την υλοποίηση 6

Πράξεις με πολλές μεταβλητές! Πώς μπορώ να υπολογίσω f = a+b+c+d; add f, a, b # f = a+b add f, f, c # f = f+c, (a+b+c) add f, f, d # f = f+d, (a+b+c+d)! Με τρείς τελεσταίους υπάρχει ευελιξία για οποιοδήποτε υπολογισμό! Μπορώ να κάνω το ίδιο με 2 τελεσταίους; π.χ.: add a, b # a = a + b! Αν όλες οι εντολές είχαν 4 τελεσταίους, τι κερδίζω; 7

Τελεσταίοι (operands)! Οι εντολές κάνουν πράξεις με δεδομένα αποθηκευμένα σε μεταβλητές οι τελεσταίοι - operands! Στην assembly χρησιμοποιούνται κυρίως οι καταχωρητές (registers) μικρές μνήμες μέσα στον επεξεργαστή Οι περισσότερες εντολές έχουν μόνο καταχωρητές ως τελεσταίους! Γιατί; εξαιρετικά γρήγοροι (Αρχή #3: τοπικότητα αναφορών) 8

Καταχωρητές στον MIPS! Προκαθορισμένος αριθμός καταχωρητών κατασκευασμένοι στο υλικό. Δεν αλλάζουν!! Ο MIPS έχει 32 καταχωρητές Αρχή σχεδίασης: το μικρό είναι γρήγορο! Στον MIPS του μαθήματος, κάθε καταχωρητής έχει «πλάτος» 32 bit 32bit ονομάζονται «λέξη» (word) το βασικό μέγεθος με το οποίο γίνονται πράξεις 9

Καταχωρητές! Για να αναφερθούμε σε έναν καταχωρητή χρειάζεται είτε ο αριθμός του, από 0 ώς 31 είτε το όνομά του! Στη γλώσσα assembly του MIPS αναφορές σε καταχωρητή γίνονται δίνοντας το σύμβολο $ και μετά το όνομα (ή τον αριθμό) για να ξεχωρίζουν από τους απλούς αριθμούς! Παράδειγμα: add $8, $2, $3 10

Ονόματα καταχωρητών! Προτιμώνται από τους απλούς αριθμούς! Υπάρχουν κάποιες συμβάσεις στη χρήση των καταχωρητών που αποτυπώνονται στα ονόματά τους! Για την ώρα: $t0 - $t9 προσωρινές τιμές (temporary) $s0 - $s7 11

Παράδειγμα! Γράψτε πρόγραμμα σε assembly που υπολογίζει f = (g + h) (i + j)! Αντιστοιχία μεταβλητών- καταχωρητών g s0, h s1, i s2, j s3, f s4 add $t0, $s0, $s1 add $t1, $s2, $s3 sub $s4, $t0, $t1! Νέα αριθμητική εντολή: sub αφαίρεση 12

Σταθερές! Αγγλικό όρος (ειδικά για assembly): immediate άμεσα διαθέσιμες τιμές δεν χρειάζεται καν ανάγνωση καταχωρητή! Σταθερές χρησιμοποιούνται πολύ συχνά σε προγράμματα! MIPS: εντολές με μία σταθερά αντί για καταχωρητή δεν είναι απαραίτητες. μπορούν να υλοποιηθούν με εντολές! π.χ. για υπολογισμό 0: sub $t0, $t0, $t0 τόσο συχνές που αξίζει να έχουν δική τους εντολή αρχή: «κάνε γρήγορη τη συχνή περίπτωση» αλλιώς θα χρειαζόταν τουλάχιστον 2 εντολές addi $t0, $t0, 1 # t0 = t0 + 1 13

Σταθερές! Δεν υπάρχει subi. Γιατί; μπορεί να γίνει εύκολα με την addi. π.χ. addi $t0, $t0, - 1 οι εντολές είναι «πολύτιμες»! Η σταθερά είναι πάντα ο δεύτερος τελεσταίος πηγής! Σε γλώσσα assembly μπορούμε να χρησιμοποιήσουμε δεκαεξαδική αναπαράσταση ή ακόμα και χαρακτήρες addi $t0, $t0, 0x10 addi $t0, $t0, a 14

Καταχωρητής μηδέν! Η τιμή μηδέν είναι εξαιρετικά χρήσιμη/συχνή! Ο MIPS καλωδιώνει τον καταχωρητή μηδέν ($0, $zero) στην τιμή 0 ανάγνωση πάντα 0, εγγραφές δεν τον επηρεάζουν! Αντιγραφή καταχωρητή add $s0, $s1, $zero # s0 = s1! Το παρακάτω δεν κάνει τίποτα! add $zero, $s1, $t1 μερικές φορές χρειάζεται! Ονομάζεται noop (no operahon) 15

Υπερχείλιση! Οι υπολογιστές χρησιμοποιούν αριθμητική με σταθερό «μήκος» bit όταν το αποτέλεσμα δεν μπορεί να παρασταθεί με τον διαθέσιμο αριθμό bits, συμβαίνει υπερχείλιση (overflow)! Κάποιες γλώσσες προγραμματισμού την αγνοούν (C), ενώ άλλες την ανιχνεύουν και διακόπτουν το πρόγραμμα! Ο MIPS έχει 2 είδη αριθμητικών εντολών για τις δύο περιπτώσεις 16

Υπερχείλιση στον MIPS! Εντολές που προκαλούν λάθος αν γίνει υπερχείλιση: add addi sub! Εντολές που δέν προκαλούν λάθος (u unsigned): addu addiu subu! Ο compiler της κάθε γλώσσας επιλέγει το είδος εντολής που χρειάζεται 17

Προσπέλαση μνήμης! Οι καταχωρητές δεν αρκούν είναι λίγοι πίνακες (array), αντικείμενα (object),...! Τα περισσότερα δεδομένα είναι αποθηκευμένα στη μνήμη! Αλλά ο MIPS εκτελούν πράξεις μόνο με καταχωρητές και άλλοι RISC επεξεργαστές! Εντολές μεταφοράς από/προς τη μνήμη Αγγλικός data transfer instruchons 18

Μεταφορά δεδομένων! Δύο είδη από τη μνήμη σε καταχωρητή: φόρτωμα load από καταχωρητή στη μνήμη: αποθήκευση store! Δύο πληροφορίες χρειάζονται το όνομα/αριθμός του καταχωρητή η διεύθυνση της μνήμης 19

Σχηματισμός διεύθυνσης! Στον MIPS η διεύθυνση μνήμης υπολογίζεται από έναν καταχωρητή (η τιμή του ονομάζεται base address) μία σταθερά (ονομάζεται offset) η διεύθυνση (όνομα effechve address) είναι το άθροισμα των τιμών των παραπάνω! Συμβολισμός: σταθερά (όνομα καταχωρητή) π.χ. 8($s3)! Δεν μπορούν να χρησιμοποιηθούν 2 καταχωρητές μπορεί να γίνει με επιπλέον εντολές μόνο 20

Σύνταξη εντολών μεταφοράς πράξη 1ος καταχ., σταθερά(καταχ. βάσης)! Πράξη: lw (load word) ανάγνωση λέξης 32b από τη μνήμη sw (store word) εγγραφή λέξης 32b από τη μνήμη! 1ος καταχωρητής για load, εκεί θα αποθηκευτεί η τιμή για store, από εκεί θα διαβαστεί η τιμή διαφορετική σημασία ανάλογα με την εντολή!! Παράδειγμα: lw $s0, 0xc($t1) # s0 = Mem[$t1+12] 21

Διευθύνσεις μνήμης! Η μνήμη θεωρείται ότι είναι ένας τεράστιος πίνακας! Ο MIPS εσωτερικά δουλεύει με λέξεις (word) 32 bit! Aλλά χρειαζόμαστε τη δυνατότητα να διαβάζουμε/ γράφουμε bytes (8bit) για «μικρά» δεδομένα: χαρακτήρες, boolean,! Συμπεράσματα οι διευθύνσεις μνήμης είναι σε bytes! αλλιώς: κάθε byte της μνήμης έχει ξεχωριστή διεύθυνση υπάρχει δυνατότητα απευθείας προσπέλασης και για bytes και για λέξεις 22

Μνήμη: προσπέλαση λέξης! Ποιά είναι η διεύθυνση μιας λέξης στη μνήμη; η διεύθυνση του πρώτου byte της λέξης! Εστω μία λέξη στη διεύθυνση Α. Ποιά είναι η διεύθυνση της επόμενης λέξης; A + 4 όχι Α + 1! Πολύ συνηθισμένο λάθος. 23

Μνήμη: ευθυγράμμιση! Μπορώ να βάζω λέξεις σε όποια διεύθυνση μνήμης θέλω; σε μερικούς υπολογιστές, ναί! Στον MIPS, όχι πρέπει να είναι ευθυγραμμισμένες (aligned) οι διευθύνσεις πρέπει να είναι πολλαπλάσιες του 4 0 1 2 3 24

Υπολογισμός διεύθυνσης! Μετάφραστε σε assembly g = h + a[8] g - $s1, h - $s2, a[] array λέξεων με βάση (a[0]) στον $s3! Χρειάζεται χωριστή εντολή για μεταφορά από μνήμη! Ποιό είναι το offset; 8 (θέση πίνακα) 4 (bytes ανά θέση) = 32ten Το a[8] βρίσκεται στη θέση $s3 + 32! Απάντηση: lw $t0, 32($s3) # $t0 = a[8] add $s1, $s2, $t0 25

Δείκτες μνήμης! Πολύ συχνά χρησιμοποιούμε καταχωρητές που «δείχνουν» σε διευθύνσεις μνήμης λέγονται δείκτες, pointers! Στο προηγούμενο παράδειγμα, αν η εντολή ήταν σε loop g = g + a[i] δεν μπορούμε να χρησιμοποιήσουμε σταθερά γιατί το offset μεταβάλεται add $t1, $s3, $zero # $t1 points to a[0] addi $t1, $t1, 4 # $t1 points to next # element of a[] lw $s0, 0($t1) # Note offset is 0 26

Δείκτες και δεδομένα! Ενας καταχωρητής κρατά οποιαδήποτε τιμή 32 bit μπορεί να είναι δείκτης στη μνήμη μπορεί να είναι ο αριθμός των φοιτητών στην τάξη! Και στις δύο περιπτώσεις έχουν νόημα αριθμητικές πράξεις διαφορετικό νόημα βέβαια!! Αλλά προσοχή: μη κάνετε προσπέλαση μνήμης χρησιμοποιώντας ως δείκτη καταχωρητή που περιέχει δεδομένα! Ο s0 πρέπει να είναι δείκτης: lw $t0, 0($s0) δεν υπάρχει κάτι (π.χ. Java interpreter) να πιάσει το λάθος 27

Μεταφορά byte! Aποθήκευση ενός byte στη μνήμη. π.χ. sb $t0, 12($s1) # Mem[$s1+12] = $t0 Αλλά ο $t0 είναι 32 bit. Τι μεταφέρεται; Τα 8 λιγότερο σημαντικά bits του $t0! Φόρτωση byte σε καταχωρητή τι κάνουμε με τα 24 περισσότερο σημαντικά bits;! Δύο παραλλαγές για φόρτωση: lb, επέκταση προσήμου (sign- extension) στα 24 msb! χρήσιμο όταν το byte είναι αριθμός με πρόσημο lbu, συμπλήρωση με μηδενικά (zero- fill)! load byte unsigned 28

Επέκταση προσήμου ssssssss ssssssss ssssssss sxxxxxxx! Το πιο σημαντικό bit του byte (s)! αντιγράφεται προς τα αριστερά μέχρι να γεμίσει η λέξη 29

Ετικέτες, οδηγίες assembler! Στον προγραμματισμό σε assembly αναφερόμαστε σε δεδομένα (και εντολές) χρησιμοποιώντας ετικέτες (labels) αντί για διευθύνσεις βοήθημα για εμάς, η μηχανή χρησιμοποιεί μόνο διευθύνσεις! Επίσης για βοηθητικές δουλειές όπως να βάλουμε τιμές σε θέσεις μνήμης, δίνουμε οδηγίες (direchves)! Βλ. εργαστήριο 1 direchve number:.word 0 labels next: addi $t1, $t1, 8 30

Ψευτοεντολή la! Οταν θέλουμε να δώσουμε τη διεύθυνση κάποιου δεδομένου σε ένα καταχωρητή πρέπει να μετατρέψουμε την ετικέτα σε διεύθυνση! la $reg, label η ετικέτα δίνεται χωρίς το :! Αυτή είναι μια ψευτοεντολή (pseudo- instruchon) μετατρέπεται σε 1-2 πραγματικές εντολές δυστυχώς ονομάζεται load address, αλλά δεν μεταφέρεται τίποτα από τη μνήμη! Υπάρχουν πολλές ψευτοεντολές MIPS γενικά απαγορεύεται να χρησιμοποιηθούν στο εργαστήριο εκτός της la 31

Σύνοψη MIPS! Αριθμητικές εντολές, εντολές μεταφοράς δεδομένων add, sub, addu, subu, addi, addiu, lw, sw, lb, lbu, sb! Τελεσταίοι καταχωρητές, σταθερές (immediates), μνήμη! Διευθυνσιοδότηση μνήμης ευθυγράμμιση υπολογισμός offset! Δείκτες μνήμης! Ετικέτες, οδηγίες assembler! Ψευτοεντολή la 32

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1307.

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Επίκουρος Καθηγητής Αριστείδης Ευθυμίου. «Αρχιτεκτονική Υπολογιστών. Αρχιτεκτονικό σύνολο εντολών». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1307.

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/.