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

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

MIPS functions and procedures

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ορισµός της Στοίβας Περίληψη H λειτουργία της Στοίβας (γενικά, αλλά και στο QtSpim pim) Η χρησιµότητα της Στοίβας στους Μικροεπεξεργαστές Κλήση συνάρτ

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;

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

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

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

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

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

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

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

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

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

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

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

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

Φροντιστήριο. Παραγωγή τελικού κώδικα. Παραγωγή τελικού κώδικα

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

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

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

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

Εισαγωγή εκτελέσιμου κώδικα σε διεργασίες

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

Α. Δίνονται οι. (i) στη. πρέπει να. πιο. (ii) $a0. $s0 θα πρέπει να. αποθήκευση. αυξάνει τον. f: sub sll add sub jr. h: addi sw sw.

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

Προγραμματισμός Ι (ΗΥ120)

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

Data-Level Parallelism Linking & Loading

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

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

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

Ερωτήσεις θεωρίας MY. Μέρος Α. Υλικό.

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

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

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

Δομημένος Προγραμματισμός

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

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

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

Στοιχεία από Assembly Γιώργος Μανής

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

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

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

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

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

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

Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ. Άσκηση 2 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ;

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

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

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

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

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

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

EPL475:Εργαστήριο 5, GDB

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

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

Transcript:

Βήματα στην εκτέλεση μιας διαδικασίας (procedure) 1. Τοποθέτηση παραμέτρων 2. Μεταβίβαση ελέγχου στη διαδικασία 3. Λήψη πόρων αποθήκευσης 4. Εκτέλεση επιθυμητής εργασίας 5. Τοποθέτηση αποτελέσματος σε θέση προσβάσιμη από καλούν πρόγραμμα (caller) 6. Επιστροφή ελέγχου στο σημείο εκκίνησης 1

Κλήση διεργασιών: Σύμβαση κατανομής καταχωρητών $a0-$a3: τέσσερις καταχωρητές ορίσματος (argument regs) $v0-$v1: δύο καταχωρητές τιμής (value regs) $ra: καταχωρητής διεύθυνσης επιστροφής (return address reg) 2

Άλμα και σύνδεση (jump and link) : Μετρητής προγράμματος (program counter) Κρατάει τη διεύθυνση της εντολής που εκτελείται jal ΔιεύθυνσηΔιαδικασίας $ra +4 ΔιεύθυνσηΔιαδικασίας Γιαναεπιστρέχουμεκαλούμε jr $ra 3

Άλμα και σύνδεση (jump and link) - Σύνοψη 1. Ο caller τοποθετεί τιμές παραμέτρων στους $a0-$a3 2. Καλεί jal X για να μεταπηδήσει στη διαδικασία X (callee) 3. Εκτελεί υπολογισμούς 4. Τοποθετεί αποτελέσματα στους $v0 - $v1 5. Επιστρέφει με jr $ra 4

Χρήση πολλών καταχωρητών σε διαδικασίες; Τι γίνεται αν έχουμε >4 ορίσματα ή/και >2 αποτελέσματα; Χρησιμοποιούμε στοίβα (stack) Last-In-First-Out push, pop μικραίνει μνήμη υψηλές διευθύνσεις $sp μεγαλώνει χαμηλές διευθύνσεις 5

Παράδειγμα int leaf_example(int g, int h, int i, int j) { int f; g, h, i, j αντιστοιχίζονται στους $a0, $a1, $a2, $a3 f αντιστ. $s0 } f = (g+h) (i+j); return f; 6

Παράδειγμα int leaf_example(int g, int h, int i, int j) { int f; } f = (g+h) (i+j); return f; Σκονάκι g:$a0, h:$a1, i:$a2, j:$a3, f:$s0 leaf_example: addi $sp,$sp,-12 sw $t1, 8($sp) #σώζουμε $t1 sw $t0, 4($sp) #σώζουμε $t0 sw $s0, 0($sp) #σώζουμε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 # f=(g+h) (i+j); sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαν. $s0 lw $t0, 4($sp) #επαν. $t0 lw $t1, 8($sp) #επαν. $t1 addi $sp, $sp, 12 jr $ra # πίσω στον caller 7

leaf_example: addi $sp,$sp,-12 sw $t1, 8($sp) #σώζουμε $t1 sw $t0, 4($sp) #σώζουμε $t0 sw $s0, 0($sp) #σώζουμε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 # f=(g+h) (i+j); sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαν. $s0 lw $t0, 4($sp) #επαν. $t0 lw $t1, 8($sp) #επαν. $t1 addi $sp, $sp, 12 jr $ra # πίσω στον caller 8

leaf_example: addi $sp,$sp,-12 sw $t1, 8($sp) #σώζουμε $t1 sw $t0, 4($sp) #σώζουμε $t0 sw $s0, 0($sp) #σώζουμε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαν. $s0 lw $t0, 4($sp) #επαν. $t0 lw $t1, 8($sp) #επαν. $t1 addi $sp, $sp, 12 jr $ra # πίσω στον caller Σύμβαση: ΔΕ ΣΩΖΟΥΜΕ $t0-$t9 Έτσι έχουμε: leaf_example: addi $sp,$sp,-4 sw $s0, 0($sp) #σώζουμε $s0 add $t0, $a0, $a1 add $t1, $a2, $a3 sub $s0, $t0, $t1 add $v0, $s0, $zero lw $s0, 0($sp) #επαν. $s0 addi $sp, $sp, 4 jr $ra # πίσω στον caller 9

Ένθετες διαδικασίες leaf procedures (διαδικασίες φύλλα): δεν καλούν άλλες διαδικασίες Δεν είναι όλες οι διαδικασίες, διαδικασίες φύλλα (καλά θα ήταν ) Πολλές διαδικασίες καλούν άλλες διαδικασίες, ακόμα και τον εαυτό τους! π.χ. int foo(int a){... f=bar(a*2);... } ή int foo(int a){... f=foo(a-1);... } 10

Αναδρομική διαδικασία παραγοντικού fact: addi $sp,$sp,-8 int fact (int n){ sw $ra,4($sp) #διεύθ. επιστροφής if(n<1) return(1); sw $a0,0($sp) #όρισμα n else return(n*fact(n-1)); slti $t0,$a0,1 } beq $t0,$zero,l1 addi $v0,$zero,1 addi $sp,$sp,8 jr $ra L1: addi $a0,$a0,-1 jal fact lw $a0,0($sp) lw $ra,4($sp) addi $sp,$sp,8 mul $v0,$a0,$v0 jr $ra 11

Εκτέλεση: Έστω ότι καλούμε fact(3) και περιμένουμε να μας επιστρέψει το αποτέλεσμα στον καταχωρητή $v0 fact: addi $sp,$sp,-8 sw $ra,4($sp) #διεύθ. επιστροφής sw $a0,0($sp) #όρισμα n slti $t0,$a0,1 beq $t0,$zero,l1 addi $v0,$zero,1 addi $sp,$sp,8 jr $ra L1: : m addi $a0,$a0,-1 jal fact d: lw $a0,0($sp) $sp: $ra: l d lw $ra,4($sp) addi $sp,$sp,8 $v0: 126 mul $v0,$a0,$v0 $a0: 32 01 jr $ra $t0: βλ. m+4 m+8 l-8 l-16 l-24 l-32 m+8 01 finish $sp $sp $sp $sp $sp l l-4 l-8 l-12 l-16 l-20 l-24 l-28 l-32 l-36 l-40 m+8 m+4 m Μνήμη m+8 3 d 2 d 1 d 0... jal fact addi $a0,$zero,3 12 high low

Αναδρομική διαδικασία παραγοντικού int fact (int n){ if(n<1) return(1); else return(n*fact(n-1)); } Εκτός ύλης!!!! #include <stdio.h> int attribute ((regparm(3)))fact(register int n); int main(void){ printf("%d\n", fact(10));} ----------------------------------------------- #gcc c fact.s #gcc caller.c fact.o o exec #./exec x86 Assembly 1..globl fact 2. fact: 3. pushl %ebx 4. movl %eax, %ebx 5. decl %eax 6. jz.l4 7. call fact 8. imull %ebx, %eax 9..L3: 10. popl %ebx 11. ret 12..L4: 13. movl $1, %eax 14. jmp.l3 13

Πληροφορίες που διατηρούνται/δε διατηρούνται κατά τη κλήση μιας διαδικασίας Διατηρούνται Δε διατηρούνται Αποθηκευμένοι (saved) καταχωρητές: $s0 - $s7 Προσωρινοί καταχωρητές: $t0 - $t9 Καταχωρητής δείκτη στοίβας (stack pointer): $sp Καταχωρητές ορίσματος: $a0 - $a3 Καταχωρητής διεύθυνσης επιστροφής (return address): $ra Στοίβα επάνω (higher addresses) από το δείκτη στοίβας Καταχωρητές τιμής επιστροφής (return value): $v0 - $v1 Στοίβα κάτω (lower addresses) από το δείκτη στοίβας 14

Η επικοινωνία με τους ανθρώπους Οι υπολογιστές «καταβροχθίζουν» αριθμούς Επεξεργασία κειμένου και άλλες εφαρμογές όμως θέλουν χαρακτήρες (chars). Κώδικας ASCII (American Standard Code for Information Interchange) Ένας χαρακτήρας = 1 byte = 8 bits Οι λειτουργίες σε chars είναι πολύ συχνές- ο MIPS παρέχει εντολές για μεταφορά bytes. lb $t0, 0($s1) # ανάγνωση ενός byte load byte sb $t1, 0($s2) # αποθήκευση ενός byte store byte H lb φορτώνει ένα byte στα λιγότερο σημαντικά bits ενός καταχωρητή. Η sb αποθηκεύει το λιγότερο σημαντικό byte στη μνήμη. 15

Η επικοινωνία με τους ανθρώπους Αντιγραφή συμβολοσειράς (string) void strcpy(char x[], char y[]){ int i; i = 0; while((x[i] = y[i])!= \0 ) /* αντιγραφή και έλεγχος του byte */ i+=1; } Πώς είναι η assembly MIPS του παραπάνω κώδικα C; 16

Η επικοινωνία με τους ανθρώπους void strcpy(char x[], char y[]){ int i; i = 0; while((x[i] = y[i])!= \0 ) i+=1; } Base address x: $a0 Base address y: $a1 i αντιστ. στον $s0 strcpy: addi $sp,$sp,-4 #χώρος για να sw $s0, 0($sp) #σωθεί ο $s0 add $s0,$zero,$zero # i 0 L1: add $t1,$s0,$a1 #$t1 i+x lb $t2,0($t1) #$t2 M[i+x] add $t2,$s0,$a0 #$t2 i+y sb $t2,0($t3) #$t2 M[i+y] beq $t2,$zero,l2 #είναι $t2==0? addi $s0,$s0,1 # i += 1 j L1 L2: lw $s0, 0($sp) #ανάκτησε τον $s0 addi $sp,$sp,4 #διόρθωσε στοίβα jr $ra #πίσω στον καλούντα 17