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

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

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

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

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

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

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

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

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

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

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

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

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

MIPS functions and procedures

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

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

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

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

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

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

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

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

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

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

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

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

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

Data-Level Parallelism Linking & Loading

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 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

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

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

Ενδεικτική περιγραφή μαθήματος

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

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

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

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

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

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

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

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ

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

Περιεχόμενα. Πρόλογος... 17

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

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

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

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

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

Chapter 3. Αριθμητική Υπολογιστών. (συνέχεια)

Εισαγωγή στον Προγραμματισμό

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

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

Μνήμη Διευθύνσεις Δείκτες. Προγραμματισμός II 1

{ int a = 5; { int b = 7; a = b + 3;

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

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

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

Transcript:

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

Ακόμα ένα απλό παράδειγμα διαδικασίας τύπου φύλλο (leaf procedure ) σε C, μαζί με την main(). int sum (int x, int y) { int z; z = x + y; return z; } main () { int a = 5, b = 7, c; c = sum (a, b); } Υποθέστε ότι η z είναι στον $s5, βέβαια η συνάρτηση θα μπορούσε να ήταν και : int sum (int x, int y) { return x + y; } Υποθέστε ότι η a είναι στον $s0, ότι η b είναι στον $s1 και ότι η c είναι στον $s2. Chapter 2 Instructions: Language of the Computer 2

και ο κώδικας σε MIPS add &s2, $v0, $zero # λήψη αποτελέσματος j Main # άλμα στην Main Sum: addi $sp, $sp, -4 # τοποθέτηση στην sw $s5, 0($sp) # στοίβα add $v0, $t0, $s5, $a0, $a1 # z <- x + y add $v0, $zero, $t0 $s5 # μετ. αποτελέσματος lw, $s5, 0($sp) # επαναφορά $s5 και addi $sp, $sp, 4 # στοίβας jr $ra # επιστροφή Main: addi $s0, $zero, 5 # αρχικοποίηση a<-5 addi $s1, $zero, 7 # αρχικοποίηση b<-7 add &a0, $s0, $zero # μεταφορά στους add &a1, $s1, $zero # καταχ. ορισμάτων jal Sum # κλήση συνάρτησης Chapter 2 Instructions: Language of the Computer 3

Ένθετες διαδικασίες (Non-Leaf) Διαδικασίες που καλούν άλλες διαδικασίες Για φωλιασμένες κλήσεις, ο καλών, πριν από την κλήση, πρέπει να αποθηκεύει στην στοίβα: Την διεύθυνση επιστροφής του ($ra), και Όποιο όρισμα ($a0 - $a3) ή προσωρινό δεδομένο ($t0 - $t9) χρειάζεται μετά την κλήση. Τα επαναφέρει από την στοίβα μετά την κλήση Ο καλούμενος, πρέπει να αποθηκεύει στην στοίβα: Όποιους αποθηκευμένους καταχωρητές ($s0 - $s7) χρησιμοποιεί ο ίδιος. Ο δείκτης στοίβας ($sp) ρυθμίζεται διαρκώς. Chapter 2 Instructions: Language of the Computer 4

Παράδειγμα ένθετης διαδικασίας Κώδικας σε C: int fact (int n) { if (n < 1) } return 1; else return n * fact(n - 1); Το όρισμα βρίσκεται στον $a0 Το αποτέλεσμα θα τοποθετηθεί στον $v0 Chapter 2 Instructions: Language of the Computer 5

Non-Leaf Procedure Example Κώδικας MIPS: fact: addi $sp, $sp, -8 # Προετοιμασία στοίβας sw $ra, 4($sp) # Αποθήκευση διεύθ. επιστρ. sw $a0, 0($sp) # Αποθήκευση ορίσματος slti $t0, $a0, 1 # έλεγχος για n < 1, και αν beq $t0, $zero, L1 # δεν ισχύει, άλμα στο L1 addi $v0, $zero, 1 # εάν ναι, αποτέλεσμα 1 addi $sp, $sp, 8 # αποκατάσταση στοίβας jr $ra # και επιστροφή L1: addi $a0, $a0, -1 # αλλιώς μείωσε κατά 1 το n jal fact # αναδρομική κλήση lw $a0, 0($sp) # Επαναφορά του αρχικού n lw $ra, 4($sp) # και της διεύθ. επιστροφής addi $sp, $sp, 8 # Αποκατάσταση στοίβας mul $v0, $a0, $v0 # Πολλαπλασιασμός jr $ra # και επιστροφή Chapter 2 Instructions: Language of the Computer 6

Κατανομή χώρου στην στοίβα Τοπικά δεδομένα τοποθετημένα από τον καλούμενο π.χ. αυτόματες (τοπικές) μεταβλητές της C Πλαίσιο Διαδικασίας (procedure frame) ή εγγραφή ενεργοποίησης (activation record) Χρησιμοποιείται από κάποιους μεταγλωττιστές για ευκολότερη διαχείριση των αποθηκευμένων δεδομένων στην στοίβα Chapter 2 Instructions: Language of the Computer 7

Κατανομή μνήμης του MIPS Τμήμα κειμένου (text segment): κώδικας μηχανής Τμήμα στατικών δεδομένων (static data): καθολικές μεταβλητές π.χ. στατικές μεταβλητές στην C, πίνακες (arrays) και συμβολοσειρές (strings) Το $gp αρχικοποιείται σε μια τιμή που διευκολύνει την προσπέλαση των δεδομένων με 16μπιτες σχετικές αποστάσεις (±offsets) Δυναμικά δεδομένα (dynamic data): σωρός (heap) π.χ. στην C, κατανομή χώρου με malloc() και ελευθέρωση με free() Στοίβα (stack):αυτόμ. μεταβλητές Chapter 2 Instructions: Language of the Computer 8

Χαρακτήρες (Character Data) Σύνολα χαρακτήρων στα 8 bit (1 Byte) ASCII Latin-1 Unicode: στα 32-bit Χρησιμοποιείται στις: Java, C++, Python, Συμπεριλαμβάνει τα αλφάβητα των περισσότερων ανθρώπινων γλωσσών, συν σύμβολα UTF-8, UTF-16: κωδικοποιήσεις μεταβλητού μήκους Chapter 2 Instructions: Language of the Computer 9

Πράξεις με bytes και ημιλέξεις Μπορούν να χρησιμοποιηθούν πράξεις ανά bit Η φόρτωση/αποθήκευση byte/halfword στον MIPS Συχνή περίπτωση στην επεξεργασία συμβολοσειρών lb rt, offset(rs) lh rt, offset(rs) Με επέκταση πρόσημου στα 32 bit του rt lbu rt, offset(rs) lhu rt, offset(rs) Με επέκταση του μηδενός στα 32 bit του rt sb rt, offset(rs) sh rt, offset(rs) Αποθηκεύει μόνο το δεξιότερο byte/halfword Chapter 2 Instructions: Language of the Computer 10

Παράδειγμα με συμβολοσειρές Κώδικας σε C (αντιγραφή του y στο χ): void strcpy (char x[], char y[]) { int i; i = 0; while ((x[i]=y[i])!='\0') i += 1; } return; Οι διευθύνσεις των x, y είναι στους $a0, $a1 και του i στο $s0 Chapter 2 Instructions: Language of the Computer 11

Παράδειγμα με συμβολοσειρές Κώδικας MIPS: strcpy: addi $sp, $sp, -4 # προετοίμασε την στοίβα sw $s0, 0($sp) # αποθήκευσε τον $s0 add $s0, $zero, $zero # i = 0 L1: add $t1, $s0, $a1 # η διευθ.του y[i] στο $t1 lbu $t2, 0($t1) # $t2 = y[i] add $t3, $s0, $a0 # η διευθ.του x[i] στο $t3 sb $t2, 0($t3) # x[i] = y[i] beq $t2, $zero, L2 # έξοδος αν y[i] == 0 addi $s0, $s0, 1 # i = i + 1 j L1 # επόμενη επανάληψη βρόχου L2: lw $s0, 0($sp) # αποκατάσταση του $s0 addi $sp, $sp, 4 # αποκατάσταση της στοίβας jr $ra # και επιστροφή Chapter 2 Instructions: Language of the Computer 12

Σταθερές στα 32-bit Οι περισσότερες σταθερές είναι μικρές 16-bit άμεσα (immediate) είναι αρκετά Για την περίπτωση σταθερών στα 32 bit lui rt, constant Αντιγράφει μια σταθερά 16-bit στα 16 αριστερότερα δυαδικά ψηφία του rt load upper immediate Επαναφέρει τα 16 δεξιότερα bit του rt στο 0 lui $s0, 61 0000 0000 0011 1101 0000 0000 0000 0000 ori $s0, $s0, 2304 0000 0000 0011 1101 0000 1001 0000 0000 Chapter 2 Instructions: Language of the Computer 13