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

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

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

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

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

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

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

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

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

Data-Level Parallelism Linking & Loading

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

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

Μετάφραση ενός Προγράμματος Εξαιρέσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός. Κεφ. 2 Εντολές: H γλώσσα μηχανής

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

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

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

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

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

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

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;

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

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

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

Αναδρομή. ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 6. Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

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

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

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

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

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

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

MIPS functions and procedures

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

; Τι περιέχεται στη συσκευασία ενός μικροεπεξεργαστή σήμερα;

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

MIPS Interactive Learning Environment. MILE Simulator. Version 1.0. User's Manual

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

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

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

Εργαστήριο Αρ. 1. Εισαγωγή στην Αρχιτεκτονική MIPS. Πέτρος Παναγή Σελ. 1

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

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

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 13. Διακλαδώσεις. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

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

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Intel x86 ISA. Νίκος Μπέλλας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών ΗΥ

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

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

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

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

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

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

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

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

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

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

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

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

Αρχιτεκτονική x86(-64) 32-bit και 64-bit λειτουργία. Αρχιτεκτονική x86(-64) Αρχιτεκτονική επεξεργαστών x86(-64) Αρχιτεκτονικές Συνόλου Εντολών (ΙΙ)

Κάθε functional unit χρησιμοποιείται μια φορά σε κάθε κύκλο: ανάγκη για πολλαπλό hardware = κόστος υλοποίησης!

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

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

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

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

Απλός επεξεργαστής (Επανάληψη)

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

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

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

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

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

Προηγμένοι Μικροεπεξεργαστές. Έλεγχος Ροής Προγράμματος

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

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

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

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

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

Ιεραρχία Μνήμης. Εικονική μνήμη (virtual memory) Επεκτείνοντας την Ιεραρχία Μνήμης. Εικονική Μνήμη. Μ.Στεφανιδάκης

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΔΙΑΧΕΙΡΙΣΗ ΜΝΗΜΗΣ

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

Transcript:

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy Chapter 2 Εντολές : Η γλώσσα του υπολογιστή (συνέχεια) Διαφάνειες διδασκαλίας από το πρωτότυπο αγγλικό βιβλίο (4 η έκδοση), μετάφραση: Καθ. Εφαρμογών Νικόλαος Πετράκης, Τμήματος Ηλεκτρονικών Μηχανικών του Τ.Ε.Ι. Κρήτης. Τελευταία τροποποίηση: 2016-2017 χειμερινό εξάμηνο.

Διευθυνσιοδότηση σε διακλαδώσεις I-type Οι εντολές διακλάδωσης καθορίζουν (περιέχουν) Opcode, δύο καταχωρητές, διεύθυνση στόχο Οι περισσότεροι στόχοι διακλάδωσης είναι σε κοντινή απόσταση (near) Προς τα εμπρός (forward) ή προς τα πίσω (backward) op rs rt constant or address 6 bits 5 bits 5 bits 16 bits Διευθυνσιοδότηση σχετική ως προς PC (PCrelative addressing) Η διεύθυνση στόχος ισούται με PC + offset 4 Το PC είναι ήδη αυξημένο κατά 4 Chapter 2 Instructions: Language of the Computer 2

Διευθυνσιοδότηση σε άλματα Οι στόχοι των αλμάτων (j and jal) μπορεί να είναι οπουδήποτε στο τμήμα κειμένου J-type Κωδικοποίηση της πλήρους διεύθυνσης στην εντολή op address 6 bits 26 bits Ψευδο-απευθείας διευθυνσιοδότηση άλματος Η διεύθυνση στόχος = PC 31 28 : (address 4) Chapter 2 Instructions: Language of the Computer 3

Παράδειγμα διευθυνσιοδότησης στόχου Ο κώδικας του βρόχου από παλιότερο παράδειγμα while (save[i]!=k) $s3 i++; Θεωρείστε την διεύθυνση στόχο στην θέση 80000 Loop: sll $t1, $s3, 2 80000 0 0 19 9 2 0 add $t1, $t1, $s6 80004 0 9 22 9 0 32 lw $t0, 0($t1) 80008 35 9 8 0 beq $t0, $s5, Exit 80012 4 8 21 2 addi $s3, $s3, 1 80016 8 19 19 1 j Loop 80020 2 20000 Exit: 80024 $s6 $s5 Chapter 2 Instructions: Language of the Computer 4

Διακλάδωση πολύ μακριά (Far Away) Εάν ο στόχος διακλάδωσης είναι πολύ μακριά για να περιγραφεί με μια σχετική απόσταση των 16-bit (offset), ο συμβολομεταφραστής μετασχηματίζει τον κώδικα, από π.χ.: σε: L2_near: beq $s0,$s1, L1_far bne $s0,$s1, L2_near j L1_far Chapter 2 Instructions: Language of the Computer 5

Σύνοψη τρόπων διευθυνσιοδότησης (Άμεση διευθυνσιοδότηση) (Διευθυνσιοδότηση μέσω καταχωρητή) (Διευθυνσιοδότηση βάσης) (Σχετική διευθυνσιοδότηση ως προς PC) (Ψευδο-απευθείας διευθυνσιοδότηση) Chapter 2 Instructions: Language of the Computer 6

Μετάφραση και Εκκίνηση Πολλοί μεταγλωττιστές παράγουν τις υπομονάδες σε γλώσσα μηχανής (object modules) απευθείας Στατική σύνδεση Chapter 2 Instructions: Language of the Computer 7

Ψευδοεντολές συμβολομεταφραστή Οι περισσότερες εντολές της συμβολικής γλώσσας παριστούν εντολές κώδικα μηχανής σε μια αντιστοιχία μία-προς-μία Ψευδοεντολές: αποκυήματα της φαντασίας του συμβολομεταφραστή (assembler) move $t0, $t1 add $t0, $zero, $t1 blt $t2, $t3, L5 slt $at, $t2, $t3 bne $at, $zero, L5 $at (register 1): assembler temporary (είναι δεσμευμένος για τον συμβολομεταφραστή) Chapter 2 Instructions: Language of the Computer 8

Παράγοντας μια υπομονάδα σε γλώσσα μηχανής (object module ή object file) Ο συμβολομεταφραστής (ή ο μεταγλωττιστής) μεταφράζει το πηγαίο πρόγραμμα σε εντολές μηχανής (κώδικα μηχανής στο δυαδικό) Παρέχει πληροφορίες για την δημιουργία ενός ολόκληρου προγράμματος από τα διάφορα μέρη Επικεφαλίδα (header): περιγράφει μέγεθος και θέση των υπόλοιπων τμημάτων του αντικειμενικού αρχείου Τμήμα κειμένου (text segment): μεταφρασμένες εντολές Τμήμα στατικών δεδομένων (static data segment): δεδομένα κατανεμημένα για όλη την διάρκεια ζωής του προγράμματος Πληροφορίες επανατοποθέτησης (relocation info): για περιεχόμενα (εντολές ή δεδομένα) που εξαρτώνται από απόλυτες διευθύνσεις του φορτωμένου προγράμματος Πίνακας συμβόλων (symbol table): υπόλοιπες ετικέτες (global definitions) και εξωτερικές αναφορές Πληροφορίες αποσφαλμάτωσης (debugging info): για την συσχέτιση με τον πηγαίο κώδικα Chapter 2 Instructions: Language of the Computer 9

Συνδέοντας αντικειμενικές υπομονάδες (object modules) Παράγει μια εκτελέσιμη εικόνα (executable image) 1. Συνενώνει τμήματα (merges segments) - τοποθετεί υπομονάδες κώδικα και δεδομένων στην μνήμη 2. Επιλύει ετικέτες δεδομένων και εντολών (καθορισμός των διευθύνσεών τους) 3. Επιδιορθώνει (patch) εσωτερικές και εξωτερικές αναφορές (references) Θα μπορούσε να αφήσει τις εξαρτώμενες από την θέση αναφορές να ταχτοποιηθούν από τον φορτωτή (relocating loader) Αλλά με την εικονική μνήμη, αυτό δεν είναι αναγκαίο Το πρόγραμμα μπορεί να φορτωθεί σε απόλυτη θέση (absolute location) στον χώρο της εικονικής μνήμης (virtual memory space) Chapter 2 Instructions: Language of the Computer 10

Φορτώνοντας ένα πρόγραμμα Το λειτουργικό σύστημα (Λ.Σ.) φορτώνει το εκτελέσιμο αρχείο από τον δίσκο στην μνήμη 1. Διαβάζει την επικεφαλίδα για τον προσδιορισμό του μεγέθους των τμημάτων κειμένου και δεδομένων 2. Δημιουργεί χώρο διευθύνσεων για κείμενο & δεδομένα 2. Αντιγράφει τις εντολές & τα αρχικά δεδομένα στην μνήμη 3. Αντιγράφει τις παραμέτρους (αν υπάρχουν) στην στοίβα 4. Αρχικοποιεί τους καταχωρητές (συμπ. $sp, $fp, $gp) 5. Μεταπηδά σε μια ρουτίνα εκκίνησης, που, αντιγράφει τις παραμέτρους στα $a0, και καλεί την main και όταν η main επιστρέφει, η ρουτίνα εκκίνησης τερματίζει το πρόγραμμα Chapter 2 Instructions: Language of the Computer 11

Δυναμική σύνδεση Συνδέει/φορτώνει διαδικασία βιβλιοθήκης μόνο όταν καλείται Απαιτεί ο κώδικας της διαδικασίας να είναι επανατοποθετούμενος (relocatable) Αποτρέπει το φούσκωμα της εικόνας (του αρχείου) που προκαλείται από την στατική σύνδεση όλων των (μεταβατικά) αναφερόμενων βιβλιοθηκών Αυτόματα τραβάει (picks up) τις νέες εκδόσεις των βιβλιοθηκών Chapter 2 Instructions: Language of the Computer 12

Σύντομο παράδειγμα στην C Επεξηγεί την χρήση εντολών συμβολικής γλώσσας για μια συνάρτηση ταξινόμησης (bubble sort) σε C Διαδικασία-φύλλο Swap (leaf) void swap(int v[], int k) { int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; return; } Το v στον $a0, το k στον $a1 και το temp στο $t0 Chapter 2 Instructions: Language of the Computer 13

Η διαδικασία Swap swap: sll $t1, $a1, 2 # $t1 = k * 4 add $t1, $a0, $t1 # $t1 = v+(k*4) # {address of v[k]} lw $t0, 0($t1) # $t0 (temp) = v[k] lw $t2, 4($t1) # $t2 = v[k+1] sw $t2, 0($t1) # v[k] = $t2 (v[k+1]) sw $t0, 4($t1) # v[k+1] = $t0 (temp) jr $ra # return to calling routine Chapter 2 Instructions: Language of the Computer 14

Η διαδικασία ταξινόμησης στην C Ένθετη διαδικασία (non-leaf) (καλεί την swap) void sort (int v[], int n) { int i, j; for (i = 0; i < n; i++) for (j=i 1; j >= 0 && v[j]>v[j+1];j--) swap(v,j); } Το v στον $a0, το n στον $a1, το i στον $s0 και το j στον $s1 Chapter 2 Instructions: Language of the Computer 15

Το σώμα της διαδικασίας move $s2, $a0 # save $a0 into $s2 move $s3, $a1 # save $a1 into $s3 move $s0, $zero # i = 0 for1tst: slt $t0, $s0, $s3 # $t0 = 0 if $s0 $s3 (i n) beq $t0, $zero, exit1 # go to exit1 if $s0 $s3 (i n) addi $s1, $s0, 1 # j = i 1 for2tst: slti $t0, $s1, 0 # $t0 = 1 if $s1 < 0 (j < 0) bne $t0, $zero, exit2 # go to exit2 if $s1 < 0 (j < 0) sll $t1, $s1, 2 # $t1 = j * 4 add $t2, $s2, $t1 # $t2 = v + (j * 4) lw $t3, 0($t2) # $t3 = v[j] lw $t4, 4($t2) # $t4 = v[j + 1] slt $t0, $t4, $t3 # $t0 = 0 if $t4 $t3 beq $t0, $zero, exit2 # go to exit2 if $t4 $t3 move $a0, $s2 # 1st param of swap is v (old $a0) move $a1, $s1 # 2nd param of swap is j jal swap # call swap procedure addi $s1, $s1, 1 # j = 1 j for2tst # jump to test of inner loop exit2: addi $s0, $s0, 1 # i += 1 j for1tst # jump to test of outer loop Move params Outer loop Inner loop Pass params & call Inner loop Outer loop Chapter 2 Instructions: Language of the Computer 16

Όλη η διαδικασία sort: addi $sp, $sp, 20 # make room on stack for 5 registers sw $ra, 16($sp) # save $ra on stack sw $s3, 12($sp) # save $s3 on stack sw $s2, 8($sp) # save $s2 on stack sw $s1, 4($sp) # save $s1 on stack sw $s0, 0($sp) # save $s0 on stack # procedure body exit1: lw $s0, 0($sp) # restore $s0 from stack lw $s1, 4($sp) # restore $s1 from stack lw $s2, 8($sp) # restore $s2 from stack lw $s3, 12($sp) # restore $s3 from stack lw $ra, 16($sp) # restore $ra from stack addi $sp, $sp, 20 # restore stack pointer jr $ra # return to calling routine Chapter 2 Instructions: Language of the Computer 17

Πλάνες (Fallacies) Ισχυρές εντολές Υψηλότερες επιδόσεις Απαιτούνται λιγότερες εντολές Αλλά πολύπλοκες εντολές υλοποιούνται δυσκολότερα Μπορεί να προκαλέσουν αργοπορία σε όλες τις εντολές, ακόμα και στις απλές Οι μεταγλωττιστές είναι καλοί στο να φτιάχνουν γρήγορο κώδικα από απλές εντολές Χρησιμοποίησε συμβολική γλώσσα για υψηλή επίδοση Αλλά οι μοντέρνοι μεταγλωττιστές είναι καλύτεροι όταν συνεργάζονται με μοντέρνους επεξεργαστές Περισσότερες γραμμές κώδικα περισσότερα λάθη και μικρότερη παραγωγικότητα Chapter 2 Instructions: Language of the Computer 18

Πλάνες (Fallacies) Συμβατότητα προς τα πίσω το σετ των εντολών δεν αλλάζει Αλλά προστίθενται περισσότερες εντολές Πλήθος συνόλου εντολών x86 instruction set Chapter 2 Instructions: Language of the Computer 19

Παγίδες (Pitfalls) Διαδοχικές λέξεις δεν βρίσκονται σε διαδοχικές διευθύνσεις Αυξάνουμε κατά 4, και όχι κατά 1! Η διατήρηση ενός δείκτη διεύθυνσης (pointer) που δείχνει μια αυτόματη (τοπική) μεταβλητή μετά την επιστροφή της διαδικασίας π.χ., επιστροφή ενός δείκτη διεύθυνσης διά μέσου ενός ορίσματος Ο δείκτης διεύθυνσης καθίσταται άκυρος όταν δείχνει στοιχεία που έχουν αποσυρθεί από την στοίβα Chapter 2 Instructions: Language of the Computer 20

Συμπερασματικά σχόλια Αρχές σχεδίασης 1. Η απλότητα ευνοεί την κανονικότητα 2. Το μικρότερο είναι γρηγορότερο 3. Κάνε την συχνή περίπτωση γρήγορη 4. Καλή σχεδίαση απαιτεί καλούς συμβιβασμούς Επίπεδα λογισμικού/υλικού Μεταγλωττιστής, συμβολομεταφραστής, υλικό MIPS: τυπική σχεδίαση RISC αρχιτεκτονικής (RISC ISAs = Reduced Instruction Set Computer Instruction Set Architectures) Chapter 2 Instructions: Language of the Computer 21