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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

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

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

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

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

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

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

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

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

Αριθμητική Υπολογιστών (Κεφάλαιο 3)

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

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

Chapter 3 Αριθμητική Υπολογιστών

Διαδικασίες ΙI. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 5

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

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

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

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Τρόποι Διευθυνσιοδότησης

-Επεξεργαστής: datapath (δίοδος δεδοµένων) (1) και control (2) -Μνήµη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

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

Παραδείγματα Assembly (Μέρος

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

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

ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

Συναρτήσεις-Διαδικασίες

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών ARM και x86

Αρχιτεκτονική Υπολογιστών. Data. Κείμενο. Βίντεο. Αριθμοί Εικόνες. Ήχοι

Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32. Αρχείο καταχωρητών και Χάρτης Μνήµης

Προτεινόμενες Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213 & Αποτελέσματα

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

με έμφαση στο MIPS R2000

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

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Chapter 3. Αριθμητική Υπολογιστών. Έβδομη (7 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

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

ΠΛΕ- 027 Μικροεπεξεργαστές 5ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση ενός κύκλου

Κεφάλαιο 2 Εντολές Η γλώσσα της Μηχανής (Instructions Language of the Computer)

Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1.

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

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

Οι υπολογιστές στον πραγματικό κόσμο

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Εντολές γλώσσας μηχανής

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control)

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

και η µονάδα ελέγχου (control) O επεξεργαστής: Η δίοδος δεδοµένων (datapath) Εντολές διακλάδωσης (branch beq, bne) I Type Σχεδίαση datapath

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

Δρ. Παναγιώτης Μ. Παπάζογλου Επίκουρος Καθηγητής ΤΕΙ Λαμίας. Διδακτικό βοήθημα γρήγορης μελέτης για τον προγραμματισμό του μικροεπεξεργαστή MIPS 32bit

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

6. Επιστροφή ελέγχου στο σημείο εκκίνησης

Data-Level Parallelism Linking & Loading

ΠΛΕ- 027 Μικροεπεξεργαστές 6ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση με διοχέτευση

Οργάνωση Η/Υ. Γλώσσα Assembly. Τμήμα Εφαρμσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

Επεξεργαστής Υλοποίηση ενός κύκλου μηχανής

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση. Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή

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

ΠΛΕ- 027 Μικροεπεξεργαστές 7ο μάθημα: Αρχιτεκτονική πυρήνα: Πρόβλεψη διακλάδωσης, Εξαιρέσεις

Υποστήριξη διαδικασιών στο υλικό των υπολογιστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

-Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

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

MIPS functions and procedures

Τελική Εξέταση, Απαντήσεις/Λύσεις

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

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

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 8: Μία Απλή Υλοποίηση του MIPS σε Έναν Κύκλο Ρολογιού ανά Εντολή

-Επεξεργαστής: datapath (δίοδος δεδομένων) (1) και control (2) -Μνήμη (3) -Συσκευές Εισόδου (4), Εξόδου (5) (Μεγάλη ποικιλία!!)

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

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

Περιγραφή αρχιτεκτονικής MIPS MIPS assembly (1o και 2o μέρος)

Εργαστήριο 4. Εαρινό Εξάμηνο ΠΡΟΣΟΧΗ: Αρχίστε νωρίς το Εργαστήριο 4. Οι ασκήσεις είναι πιο απαιτητικές από τα προηγούμενα εργαστήρια.

Δομημένος Προγραμματισμός (ΤΛ1006)

Transcript:

ΠΛΕ- 027 Μικροεπεξεργαστές 2ο μάθημα: γλώσσα μηχανής MIPS, προγραμματισμός assembly Αρης Ευθυμίου Πηγές διαφανειών: συνοδευτικές διαφάνειες αγγλικης εκδοσης του βιβλιου

Σύνολο εντολών μηχανής Το λεξιλόγιο εντολών του υπολογιστή InstrucLon Set Architecture ISA καθορίζει την αρχιτεκτονική ενός υπολογιστή επεξεργαστή Κάθε επεξεργαστής (ή οικογένεια επεξεργαστών) έχει το δικό του σετ εντολών Με πολλά κοινά γνωρίσματα: αν γνωρίζει κανείς ένα σε βάθος, μπορεί εύκολα να μάθει άλλα Αρχικοί υπολογιστές (του 40) είχαν πολύ απλά σετ εντολών Ελάχιστες εντολές είναι απόλυτα απαραίτητες Απλοποίηση της υλοποίησης Πολλοί σύγχρονοι υπολογιστές έχουν επίσης απλά σετ εντολών ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 2

Το σύνολο εντολών MIPS Χρησιμοποιείται ως παράδειγμα στο βιβλίο PH Ξεκίνησε από το Stanford αναπτύχθηκε/ αξιοποιήθηκε από την εταιρία MIPS Technologies (www.mips.com) Μεγάλο μερίδιο αγοράς ενσωματωμένων συστημάτων (embedded) consumer electronics, network/storage equipment, cameras, printers, Σχετικά απλό και παρόμοιο με πολλές σύγχρονες ISAs ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 3

Επιτυχημένες ISAs ARM (Advanced RISC Machine) η πιο δημοφιλής αρχιτεκτονική RISC Σχεδόν σε κάθε κινητό τηλέφωνο και σε πολλες άλλες συσκευές Intel IA32 (80x86) είναι μια πολύ δημοφιλής ISA και χρησιμοποιείται σε όλα τα PC Υπάρχουν περίπου 20x περισσότεροι επεξεργαστές ARM από ότι 80x86 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 4

Αριθμητικές πράξεις Πρόσθεση (και αφαίρεση) με 3 τελεστέους (operands) add a, b, c Πρόσθεσε το b με το c και βάλε το αποτέλεσμα στο a Η μεταβλητή του αποτελέσματος λέγεται προορισμός (deslnalon) Οι άλλες δύο λέγονται πηγές (source) Ολες οι αριθμητικές εντολές έχουν αυτή τη μορφή Σχεδιαστική αρχή 1: η απλότητα (simplicity) ευνοεί την ομοιομορφία (regularity) Ομοιομορφία απλοποιεί την υλοποίηση Απλότητα επιτρέπει μεγαλύτερη απόδοση με μικρότερο κόστος ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 5

Παραδείγμα εντολών Οι εντολές MIPS δεν είναι ευέλικτες: Μόνο μια αριθμητική πράξη ανά εντολή Πάντα με 3 τελεστέους Πώς γράφεται η παρακάτω έκφραση σε MIPS; a = b + c + d + e add t1, d, e add t2, c, t1 add a, b, t2 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 6

Αλλες αριθμητικές πράξεις Operation C MIPS Αριστερή ολίσθηση << sll Δεξιά ολίσθηση >> sra Αφαίρεση - sub Πολλαπλασιασµός * mul Διαίρεση / div a << b - - a*2 b a >> b - - a/2 b ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 7

«Λογικές» πράξεις Εντολές για χειρισμό σειρών από bit Operation C MIPS Shift left << sll Shift right >> srl Bitwise AND & and Bitwise OR or Bitwise NOT ~ nor Χρησιμοποιούνται για εξαγωγή- εισαγωγή μεμονομένων bit σε λέξεις 32- b ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 8

Πράξη AND Απομονώνει bits σε μια λέξη χρησιμοποιώντας μια «μάσκα» Απομονώνει κάποια, καθαρίζει τα υπόλοιπα σε 0 Δεν αλλάζει την αρχική «μεταβλητή» and a, b, c c b a 0000 0000 0000 0000 0000 1101 1100 0000 0000 0000 0000 0000 0011 1100 0000 0000 0000 0000 0000 0000 0000 1100 0000 0000 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 9

Πράξη OR Χρησιμοποιείται για να προσθέσει bits σε μια λέξη Θέτει κάποια bit σε 1, αφήνει τα υπόλοιπα ώς έχουν or a, b, c c b a 0000 0000 0000 0000 0000 1101 1100 0000 0000 0000 0000 0000 0011 1100 0000 0000 0000 0000 0000 0000 0011 1101 1100 0000 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 10

Πράξη NOT Αντιστρέφει (invert) bits σε μια λέξη Αλλάζει τα 0 σε 1, και τα 1 σε 0 Ο MIPS δεν έχει NOT αλλά έχει NOR 3- τελεστέων: a NOR b == NOT ( a OR b ) nor a, b, $zero καταχωρητής 0: δίνει πάντα τη τιμή 0 b a 0000 0000 0000 0000 0011 1100 0000 0000 1111 1111 1111 1111 1100 0011 1111 1111 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 11

Αριθμητικό παράδειγμα Κώδικας C: f = (g + h) - (i + j); Αντίστοιχος κώδικας MIPS: add t0, g, h # temp t0 = g + h add t1, i, j # temp t1 = i + j sub f, t0, t1 # f = t0 - t1 Σχόλιο (του συμβολομεταφραστή, assembler) από το # μέχρι το τέλος της γραμμής ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 12

Τελεστέοι Σε προγράμματα υψηλού επιπέδου, τελεστέοι είναι μεταβλητές και σταθερές και κλήσεις συναρτήσεων, που είναι στην ουσία μεταβλητές Σε συμβολική γλώσσα MIPS, υπάρχει περιορισμένος αριθμός άμεσα προσπελάσιμων μεταβλητών (32) που λέγονται καταχωρητές (registers) H μνήμη χρησιμοποιείται για περισσότερες μεταβλητές Ο πρώτος μου υπολογιστής είχε συνολικά 26 μεταβλητές για προγραμματισμό σε BASIC! (Casio PB- 100) Υπάρχουν και σταθερές που είναι κωδικοποιημένες μέσα στην εντολή (περισσότερα σε λίγο) ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 13

Καταχωρητές Ο MIPS έχει 32 32- bit καταχωρητές (register file) Αριθμημένοι από 0 ως 31 Δεδομένο 32- bit λέγεται λέξη (word) Αλλες αρχιτεκτονικές ονομάζουν λέξεις 16 ή 64 bit Σχεδιαστική Αρχή 2: Το μικρότερο είναι ταχύτερο σύγκριση με κύρια μνήμη: εκατομύρια θέσεις αποθήκευσης Συμβολικά ονόματα καταχωρητών $0, $1,, $31, ή $t0, $t1,, $t9 για προσωρινές μεταβλητές $s0, $s1,, $s7 για «αποθηκευμένες» (saved) $zero και άλλα ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 14

Παράδειγμα με καταχωρητές τελεστέους Κώδικας C: f = (g + h) - (i + j); f,, j αντιστοιχούν σε $s0,, $s4 Αντίστοιχος κώδικας MIPS: add $t0, $s1, $s2 add $t1, $s3, $s4 sub $s0, $t0, $t1 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 15

Τελεστέοι από τη μνήμη Η κύρια μνήμη αποθηκεύει σύνθετα δεδομένα (και όσα απλά δεδομένα δεν χωρούν στους καταχωρητές) πίνακες (Arrays), δομές/αντικείμενα (structures/ objects), δυναμικά δεδομένα Αλλά οι εντολές χειρισμού δεδομένων του MIPS δέχονται μόνο καταχωρητές για τελεστέους πρέπει να «φορτώσουμε» (load) τιμές από τη μνήμη σε καταχωρητές και να αποθηκεύσουμε (store) αποτελέσματα πίσω στη μνήμη ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 16

Μοντέλο μνήμης Η αρχιτεκτονική ορίζει και το μοντέλο μνήμης Για το MIPS (και πολλούς άλλους επεξεργαστές): Η μνήμη είναι διευθυνσιοδοτημένη κατά byte Μια διεύθυνση αντιστοιχεί σε ένα 8- bit byte Λέξεις (32- bit) πρέπει να είναι ευθυγραμισμένες (aligned)στη μνήμη Εχουν διεύθυνση πολλαπλάσιο του 4 Ο MIPS είναι Big Endian Το πιο σημαντικό byte βρίσκεται στη χαμηλότερη διεύθυνση της λέξης ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 17

Παράδειγμα με τελεστέους μνήμης Κώδικας C: g = h + A[8]; g: $s1, h: $s2, A πίνακας λέξεων, διεύθυνση βάσης του A: $s3 Αντίστοιχος κώδικας MIPS: θέση 8 απαιτεί απόσταση απο τη αρχική διεύθυνση ίση με 32 4 bytes ανά λέξη lw $t0, 32($s3) add $s1, $s2, $t0 # load word offset base register ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 18

Παράδειγμα με τελεστέους μνήμης Κώδικας C: A[12] = h + A[8]; h: $s2, διεύθυνση βάσης του A: $s3 Αντίστοιχος κώδικας MIPS: lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 48($s3) # load word # store word ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 19

Καταχωρητές και μνήμη Οι καταχωρητές προσπελαύνονται γρηγορότερα από τη μνήμη Πράξεις με δεδομένα στη μνήμη απαιτούν φορτώσεις και αποθηκεύσεις Περισσότερες εντολές στο πρόγραμμα πιο αργό Ο μεταφραστής πρέπει να χρησιμοποιεί καταχωρητές όσο γίνεται περισσότερο Αδειασμα (spill) στη μνήμη για τις λιγότερο χρησιμοποιούμενες μεταβλητές Βελτιστοποίηση χρήσης καταχωρητών είναι σημαντική ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 20

Αμεσοι Τελεστέοι (immediate) Σταθερές τιμές που καθορίζονται από την ίδια την εντολή κωδικοποιούνται μέσα στην εντολή (γι αυτό λέγονται άμεσοι) είναι πάντα ο δεύτερος τελεστέος μόνο έχουν περιορισμένο εύρος τιμών Παράδειγμα: addi $s3, $s3, 4 Δεν υπάρχει αντίστοιχη εντολή αφαίρεσης addi $s2, $s1, -1 Σχεδιαστική αρχή 3: Κάνε τη συνηθισμένη περίπτωση να δουλεύει γρήγορα Μικρές σταθερές χρησιμοποιούνται πολύ Αποφεύγουμε μια επιπλέον εντολή φόρτωσης ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 21

Το μηδέν Ο καταχωρητής 0 του MIPS ($0 ή $zero) είναι πάντα 0 Εγγραφές σε αυτόν αγνοούνται Χρήσιμο για πολλές κοινές πράξεις π.χ. μεταφορά τιμής μεταξύ καταχωρητών add $t2, $s1, $zero ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 22

Σταθερές 32 bit στο MIPS Κάθε εντολή του MIPS κωδικοποιείται σε μία λέξη (32- b) λεπτομέρειες σε λίγο Αρα δεν μπορούμε να έχουμε μεγάλες άμεσες σταθερές πάνω από 16bit σπάνια χρειάζονται μεγάλες σταθερές Τις κατασκευάζουμε χρησιμοποιώντας 2 εντολές ή τις αποθηκεύουμε στη μνήμη και φορτώνουμε με μία lw Load Upper Immediate (lui or Louie ) γράφει 16 bits στα επάνω 16 bits του καταχωρητή προορισμού και μηδενίζει τα υπόλοιπα Για να φορτώσουμε την παρακάτω σταθερά 32- bit στο $s0 0000 0000 0011 1101 0000 1001 0000 0000 two : lui $s0, 61 # 61 = 0000 0000 0011 1101 two ori $s0, $s0, 2304 # 2304 = 0000 1001 0000 0000 two ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 23

Τύποι δεδομένων Οι γλώσσες προγραμματισμού έχουν προκαθορισμένους τύπους δεδομένων π.χ. char, int, unsigned int, float, bool, Παρόμοια η αρχιτεκτονική ορίζει τύπους δεδομένων Ο MIPS υποστηρίζει ακέραιους (προσημασμένους) και απρόσημους (θετικούς) ακέραιους με μέγεθος 32 (word), 16 (half- word), 8 (byte) η υποστήριξη 8, 16 περιορίζεται σε μεταφορά από/προς μνήμη αριθμούς κινητής υποδιαστολής απλής ή διπλής ακρίβειας ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 24

Εντολές με Byte/Halfword Μπορεί να χρησιμοποιήσει κανείς 32b λέξεις και να εξάγει bytes/halfwords με λογικούς τελεστές και μάσκες Ο MIPS διαθέτει εντολές load/store για byte/halfword Επεξεργασία χαρακτήρων χρειάζεται συχνά lb rt, offset(rs) lh rt, offset(rs) Επέκταση προσήμου σε 32 bits στον καταχωρητή rt sb rt, offset(rs) sh rt, offset(rs) Αποθήκευση μόνο του δεξιού (λιγότερο σημαντικού) byte/ halfword ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 25

Επέκταση προσήμου Αναπαράσταση αριθμού με περισσότερα bits διατηρώντας την αριθμητική τιμή Χρήση στις εντολές MIPS addi,lw,sw: επέκταση της άμμεσης τιμής lb, lh: επέκταση του φορτωμένου byte/halfword... Αντιγραφή του bit προσήμου προς τα αριστερά Απρόσημες τιμές: επέκταση με 0 Παραδείγματα: 8- bit σε 16- bit +2: 0000 0010 => 0000 0000 0000 0010 2: 1111 1110 => 1111 1111 1111 1110 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 26

Απρόσημοι ακέραιοι Χρειάζονται χωριστές εντολές για αφαίρεση, σύγκριση subu, addiu, Ο MIPS έχει και απρόσημη πρόσθεση addu οι κανόνες για υπερχείληση είναι διαφορετικοί Για μεταφορές από μνήμη ποσοτήτων μικρότερων της λέξης επίσης έχει σημασία αν ο αριθμός δεν έχει πρόσημο τα bit αριστερά συμπληρώνονται με 0 lbu load byte unsigned lhu load half- word unsigned ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 27

Χαρακτήρες Κωδικοποίηση σε Bytes ASCII: 128 χαρακτήρες 95 χαρακτήρες, 33 ειδικοί χαρακτήρες (αλλαγή γραμμής,...) LaLn- 1: 256 χαρακτήρες ASCII, +96 περισσότεροι χαρακτηρες (τόνοι κτλ) Unicode: Υποστηρίζει τα περισσότερα αλφάβητα του κόσμου και διάφορα σύμβολα Χρησιμοποιείται στη Java, C++ wide characters, UTF- 8, UTF- 16: κωδικοποιήσεις μεταβλητού μήκους Γενικά δεν υποστηρίζονται απ ευθείας σε γλώσσες μηχανής αλλά υπάρχει υποστήριξη για πράξεις με ποσότητες 8, 16 bit ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 28

Υπολογιστικές αποφάσεις Βασισμένο σε προηγούμενους υπολογισμούς, το πρόγραμμα κάνει κάτι διαφορετικό Γλώσσες υψηλού επίπέδου: if- statement παρόμοια και για επαναλλήψεις (αν ισχύει μια συνθήκη επανέλαβε εντολες) Σπάνια συνοδεύεται με εντολές goto και ετικέτες (labels) MIPS: bxx register1,register2,l1 συνεχισε από την εντολή με την ετικέτα L1 αν η τιμή του register1 με την τιμή του register2 έχουν την σχέση που ορίζεται από το XX (ισότητα,...) αλλιώς συνέχισε στην επόμενη εντολή ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 29

Πράξεις υπό συνθήκη Διακλάδοση της ροής προγράμματος σε μια εντολή με ετικέτα αν μια συνθήκη είναι αληθινή αλλιώς η ροή συνέχίζεται με την επόμενη εντολή στη σειρά beq rs, rt, L1 Αν οι τιμές (rs == rt) διακλάδωση στην εντολή με ετικέτα L1; bne rs, rt, L1 Αν οι τιμές (rs!= rt) διακλάδωση στην εντολή με ετικέτα L1; j L1 υποχρεωτική διακλάδοση (άλμα jump) στην εντολή με ετικέτα L1 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 30

Μετάφραση εντολών If Κώδικας C: if (i==j) f = g+h; else f = g-h; f, g, στους καταχωρητές $s0, $s1, Αντίστοιχος κώδικας MIPS: bne $s3, $s4, Else add $s0, $s1, $s2 j Exit Else: sub $s0, $s1, $s2 Exit: ο assembler υπολογίζει τις διευθύνσεις ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 31

Μετάφραση επαναλήψεων Κώδικας C: while (save[i] == k) i += 1; i:$s3, k: $s5, αρχική διεύθυνση save: $s6 Αντίστοιχος κώδικας MIPS: Loop: sll $t1, $s3, 2 add $t1, $t1, $s6 lw $t0, 0($t1) bne $t0, $s5, Exit addi $s3, $s3, 1 j Loop Exit: ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 32

Αλλες πράξεις για συνθήκες Θέτουν το αποτέλεσμα σε 1 αν η συνθήκη ισχύει Αλλιώς το αποτέλεσμα είναι 0 slt rd, rs, rt if (rs < rt) rd = 1; else rd = 0; slti rt, rs, constant if (rs < constant) rt = 1; else rt = 0; Χρησιμοποιείται σε συνδιασμό με τις beq, bne slt $t0, $s1, $s2 # if ($s1 < $s2) bne $t0, $zero, L # branch to L ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 33

Σχεδίαση εντολών διακλάδοσης Γιατί όχι blt, bge, ; Το υλικό για <,, είναι πιο αργό από =, Βάζοντας περισσότερη δουλεία στην εντολή διακλάδοσης αυξάνει το κύκλο ρολογιού που καθυστερεί όλες τις εντολές Οι beq και bne είναι η πιο συνηθισμένες περιπτώσεις Για άλλες συγκρίσεις, χρειάζεται μια επιπλέον εντολή Συμβιβασμός σχεδίασης ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 34

Σύγκριση ακεραίων Η σύγκριση πρέπει να ξέρει αν οι αριθμοί είναι προσημασμένοι ή όχι Σύγκριση προσημασμένων αριθμών: slt, slti Απρόσημοι: sltu, sltui Παράδειγμα: $s0 = 1111 1111 1111 1111 1111 1111 1111 1111 $s1 = 0000 0000 0000 0000 0000 0000 0000 0001 slt $t0, $s0, $s1 # signed 1 < +1 $t0 = 1 sltu $t0, $s0, $s1 # unsigned +4,294,967,295 > +1 $t0 = 0 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 35

Αλλες εντολές διακλάδοσης Εκτός από τις branch και jump ο MIPS έχει άλλες δύο εντολές διακλάδοσης: jal rd, L1 jump and link Η εκτέλεση συνεχίζει από την εντολή με ετικέτα L1 και η διεύθυνση της επόμενης εντολής κρατιέται στον καταχωρητή rd. Χρησιμοποιείται για κλήσεις υπορουτινών jr rs jump register Η εκτέλεση συνεχίζεται από τη διεύθυνση που κρατάει ο καταχωρητής rs ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 36

Μετάφραση Οι περισσότεροι μεταφραστές κρύβουν το κομμάτι της συμβολομετάφρασης ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 37

Assembly και Assembler Η μετατροπή συμβολικών εντολών MIPS (γλώσσα assembly) σε κώδικα μηχανής, γίνεται από τον assembler Υπολογίζει διευθύνσεις (π.χ. για ετικέτες), αντικαθιστά ονόματα καταχωτητών με αριθμούς,... Επιπλέον δέχεται εντολές που δεν υπάρχουν αλλά βοηθούν τον προγραμματιστή Ονομάζονται ψευτοεντολές (pseudo- InstrucHons) ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 38

Οδηγίες Assembler (direclves) Κωδικές «λεξεις» που δίνουν οδηγίες στον συμβολομεταφραστή αλλά δεν παράγουν εντολές μηχανής.text: ό,τι ακολουθεί πρέπει να πάει στο τμήμα κειμένου text segment) το κομμάτι της μνήμης όπου βρίσκεται ο κώδικας.data: ό,τι ακολουθεί τοποθετείται στο τμήμα δεδομένων (user data segment).globl sym: Δηλώνει το όνομα sym ως καθολικό ώστε να μπορεί να αναφερθει και από άλλα αρχεία..asciiz str: Απόθήκευσε τη συμβολοσειρά str στη μνήμη και βάλε το χαρακτήρα \0 στο τέλος (null- terminate).word w1 wn: Αποθηκευσε τις n 32- bit τιμές σε συνεχόμενες θέσεις μνήμης ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 39

Χρήσιμες ψευτοεντολές move $t0, $t1 add $t0, $zero, $t1 blt $t0, $t1, L slt $at, $t0, $t1 bne $at, $zero, L li $a0, immed[31:0] lui $a0, immed[31:16] ori $a0, $a0, immed[16:0] la $a0, label lui $at,left(str) ori $a0,$at,right(str) Ο καταχωρητής $at (assembler temporary, r1) είναι δεσμευμένος για χρήση από τον assembler ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 40

Προγραμματισμός MIPS Προσομοιωτής MARS περιέχει και editor, assembler Δωρεάν εφαρμογή σε Java από τον Ken Vollmar, Missouri State University h p://courses.missouristate.edu/kenvollmar/mars/ Απλά ένα.jar αρχείο Δουλεύει σε όλα τα ΛΣ με εγκατεστημένη Java Από τερματικό java - jar ~ple027/tools/mars_4_1.jar Θα χρησιμοποιηθεί για την 1 η άσκηση ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 41

Είσοδος- έξοδος ο MARS δίνει δυνατότητες εισόδο- εξόδου μέσω κλήσεων συστήματος με την εντολή syscall πραγματική εντολή MIPS Ετσι μπορούμε να εμφανίζουμε αποτελέσματα στην οθόνη Η λειτουργία της κλήσης καθορίζεται από τα περιεχόμενα του καταχωρητή v0 λεπτομέρειες στο MARS help Σε ένα πραγματικό υπολογιστή οι κλήσεις εκτελούνται από το ΛΣ εδώ τις προσομοιώνει ο MARS και κάνει ό,τι χρειάζεται ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 42

Παράδειγμα στο MARS Πρόγραμμα hexout.s Ζητάει ένα αριθμό (με βάση 10) και εμφανίζει τον αριθμό σε βάση 16 ΠΛΕ 027 Μικροεπεξεργαστές 2011-2012 43