Data-Level Parallelism Linking & Loading

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MIPS functions and procedures

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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ ΙΙ Εργαστήριο 2 ο ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ- ΨΕΥΔΟΕΝΤΟΛΕΣ ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ)

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

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

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

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

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

Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών

Εργαστήριο 3 ΟΡΓΑΝΩΣΗ ΤΗΣ ΚΜΕ. Εισαγωγή

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

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

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

Η γλώσσα προγραμματισμού C

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

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

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

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

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

Χρονισμός και Απόδοση Υπολογιστικών Συστημάτων

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

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

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

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

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

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

Εργαστήριο Αρ. 1. Εισαγωγή στην Αρχιτεκτονική MIPS. Πώς Δημιουργείτε ένα Executable Αρχείο

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 11 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

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

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

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

Αρχιτεκτονική Επεξεργαστών Ψ.Ε.Σ

ιαφάνειες παρουσίασης #6 (β)

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

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

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

Κεντρική Μονάδα Επεξεργασίας (ΚΜΕ) Τμήματα ΚΜΕ (CPU) Ένα τυπικό υπολογιστικό σύστημα σήμερα. Οργάνωση Υπολογιστών (Ι)

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

Περί Προγραμματισμού και Γλωσσών Προγραμματισμού

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

Transcript:

ΗΥ 232 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Διάλεξη 18 Data-Level Parallelism Linking & Loading Νίκος Μπέλλας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων Οργάνωση Η/Y (ECE 232) 1

Παραλληλισμός σε εφαρμογές Πολλά σημαντικά υπολογιστικά προβλήματα έχουν έμφυτη την ιδιότητα του παραλληλισμού Παραλληλισμός πολλαπλών επιπέδων Computer games: Γραφικά, ήχος, AI, μπορούν να γίνουν εντελώς παράλληλα μεταξύ τους Επίσης, κάθε ένα από αυτά τα κομμάτια έχουν εσωτερικά παράλληλους υπολογισμούς Κάθε Pixel στην οθόνη του υπολογιστή μπορεί να υπολογισθεί και να απεικονισθεί εντελώς ανεξάρτητα από τα υπόλοιπα Η κίνηση αντικειμένων που δεν αλληλοεπιδρούν μπορεί να γίνει εντελώς παράλληλα Stereo sound το ίδιο Google queries: Κάθε google search μπορεί να γίνει εντελώς παράλληλα με οποιοδήποτε άλλο Οργάνωση Η/Y (ECE 232) 2

Data Level Parallelism Έστω ο παρακάτω κώδικας C που προσθέτει δύο πίνακες void array_add(int A[], int B[], int C[], int length) { int i; for (i = 0 ; i < length ; ++ i) { C[i] = A[i] + B[i]; Σε assembly MIPS lw $t0, 0($a0) lw $t1, 0($a1) add $t0, $t1, $t2 sw $t2, 0($a2) Οργάνωση Η/Y (ECE 232) 3

Data Level Parallelism Ένα στοιχείο την φόρα + void array_add(int A[], int B[], int C[], int length) { int i; for (i = 0 ; i < length ; ++ i) { C[i] = A[i] + B[i]; Οργάνωση Η/Y (ECE 232) 4

Data Level Parallelism Ένα στοιχείο την φόρα + void array_add(int A[], int B[], int C[], int length) { int i; for (i = 0 ; i < length ; ++ i) { C[i] = A[i] + B[i]; Οργάνωση Η/Y (ECE 232) 5

Data Level Parallelism Μία εντολή επενεργεί σε πολλαπλά δεδομένα + + + + Single Instruction, Multiple Data (SIMD) void array_add(int A[], int B[], int C[], int length) { int i; for (i = 0 ; i < length ; ++ i) { C[i] = A[i] + B[i]; Οργάνωση Η/Y (ECE 232) 6

Data Level Parallelism Μία εντολή επενεργεί σε πολλαπλά δεδομένα + + + + Single Instruction, Multiple Data (SIMD) void array_add(int A[], int B[], int C[], int length) { int i; for (i = 0 ; i < length ; ++ i) { C[i] = A[i] + B[i]; Οργάνωση Η/Y (ECE 232) 7

Intel SSEx εντολές Αυτή η επέκταση στο x86 ISA προσέθεσε νέους 128-bit καταχωρητές (XMM0 XMM7) Ο κάθε ένας μπορεί να αποθηκεύσει: 4 single precision FP values (SSE) 4 * 32b 2 double precision FP values (SSE2) 2 * 64b 16 byte values (SSE2) 16 * 8b 8 word values (SSE2) 8 * 16b 4 double word values (SSE2) 4 * 32b 1 128-bit integer value (SSE2) 1 * 128b 4.0 (32 bits) 4.0 (32 bits) 3.5 (32 bits) -2.0 (32 bits) + -1.5 (32 bits) 2.0 (32 bits) 1.7 (32 bits) 2.3 (32 bits) 2.5 (32 bits) 6.0 (32 bits) 5.2 (32 bits) 0.3 (32 bits) Οργάνωση Η/Y (ECE 232) 8

SSE εντολές Διανυσματικές εντολές (vector instructions) για πρόσθεση, αφαίρεση, πολλ/μό, διαίρεση, τετραγωνική ρίζα, min, max. Ακέραιοι ή κινητής υποδιαστολής. Οργάνωση Η/Y (ECE 232) 9

X86 SSE code mov = data movement dq = double-quad (128b) a = aligned A + 4*i %eax = A %ebx = B %ecx = C %edx = i movdqa (%eax,%edx,4), %xmm0 # load A[i] to A[i+3] to %xmm0 movdqa (%ebx,%edx,4), %xmm1 # load B[i] to B[i+3] to %xmm1 paddd %xmm0, %xmm1 # CCCC = AAAA + BBBB movdqa %xmm1, (%ecx,%edx,4) # store C[i] to C[i+3] addl $4, %edx # i += 4 (loop control code) p = packed Οργάνωση Η/Y (ECE 232) 10

Παράδειγμα ΙΙ unsigned sum_array(unsigned *array, int length) { int total = 0; for (int i = 0 ; i < length ; ++ i) { total += array[i]; return total; Οργάνωση Η/Y (ECE 232) 11

Παράδειγμα ΙΙ unsigned sum_array2(unsigned *array, int length) { unsigned total, i; unsigned temp[4] = {0, 0, 0, 0; for (i = 0 ; i < length & ~0x3 ; i += 4) { temp[0] += array[i]; temp[1] += array[i+1]; temp[2] += array[i+2]; temp[3] += array[i+3]; total = temp[0] + temp[1] + temp[2] + temp[3]; for ( ; i < length ; ++ i) { total += array[i]; return total; Οργάνωση Η/Y (ECE 232) 12

Linking & Loading Οργάνωση Η/Y (ECE 232) 13

Στάδια μετάφρασης ενός προγράμματος C Στατική σύνδεση Οργάνωση Η/Y (ECE 232) 14

Εργασίες συμβολο-μεταφραστή (Assembler) 1. Μετάφραση ψευδοεντολών Οι περισσότερες εντολές του συμβολο-μεταφραστή έχουν 1-1 αντιστοιχία με εντολές της γλώσσας μηχανής. O συμβολο-μεταφραστήs μετατρέπει τις ψευδοεντολές (pseudoinstructions) σε συνδιασμούς πραγματικών εντολών Οι ψευδοεντολές είναι: Βοηθητικές εντολές οι οποίες αντικαθιστούν γνωστούς συνδυασμούς ή παραλλαγές εντολών της assembly που χρησιμοποιούνται για ειδικούς σκοπούς 32-bit επεκτάσεις των σταθερών 16-bit στις εντολές I-type move $t0, $t1 add $t0, $zero, $t1 blt $t0, $t1, L slt $at, $t0, $t1 bne $at, $zero, L li $s0,0x0123abcd lui $s0, 0x0123 ori $s0,$s0,0xabcd $at (καταχωρητής 1): για χρήση απόκλειστικά από τον συμβολομεταφραστήοργάνωση Η/Y (ECE 232) 15

Εργασίες συμβολο-μεταφραστή 2. Παραγωγή αντικειμενικών υπομονάδων Ο μεταγλωττιστής ή ο συμβολομεταφραστής μετατρέπει το αρχικό πρόγραμμα σε ένα αντικειμενικό αρχείο (object file) Το αντικειμενικό αρχείο περιέχει το πρόγραμμα μεταγλωττισμένο σε εντολές γλώσσας μηχανής επιπλέον πληροφορίες και δεδομένα που χρειάζονται για την εκτέλεση του προγράμματος Οργάνωση Η/Y (ECE 232) 16

Παραγωγή αντικειμενικής υπομονάδας Το αντικειμενικό αρχείο (*.o) περιέχει Επικεφαλίδα (Header): περιγράφει το μέγεθος (σε bytes) και την θέση στην μνήμη των υπόλοιπων τμημάτων του αντικειμενικού αρχείου Τμήμα κειμένου (Text segment): περιλαμβάνει τον κώδικα γλώσσας μηχανής Τμήμα στατικών δεδομένων (Static data segment): Δεδομένα που διαρκούν καθ'όλη τη ζωή του προγράμματος (πχ. static variables)..data,.bss Πληροφορίες επανατοποθέτησης (Relocation info): προσδιορίζουν εντολές και δεδομένα που εξαρτώνται από απόλυτες διευθύνσεις Πίνακας συμβόλων (Symbol table): εξωτερικές αναφορές και συμβολικές αναφορές Πληροφορίες αποσφαλμάτωσης (Debug info): για την αντιστοίχιση με τον πηγαίο κώδικα όταν κάνουμε debugging Οργάνωση Η/Y (ECE 232) 17

Εργασίες προγράμματος σύνδεσης (linker) Σύνδεση αντικειμενικών υπομονάδων και παραγωγή του εκτελέσιμου αρχείου (executable) σε 3 στάδια: 1. Τοποθέτηση τμημάτων κώδικα και δεδομένων συμβολικά στη μνήμη 2. Προσδιορισμός διευθύνσεων ετικετών εντολών και δεδομένων 3. Επιδιόρθωση (patching) εσωτερικών κι εξωτερικών αναφορών (internal and external references) To πρόγραμμα σύνδεσης παράγει ένα εκτελέσιμο αρχείο (executable file) Binary file : σειρά από 0 και 1 Μπορεί να εκτελεσθεί από υπολογιστή Ας δούμε ένα παράδειγμα: Οργάνωση Η/Y (ECE 232) 18

Επανάληψη: Κατανομή μνήμης Κείμενο (Text): κώδικας Στατικά δεδομένα (static data segment): καθολικές μεταβλητές πχ., στατικές μεταβλητές C, πίνακες, συμβολοσειρές $gp : επιτρέπει εύκολη πρόσβαση στο τμήμα Δυναμικά δεδομένα: σωρός (heap) π.χ., malloc στη C, new στη Java Τοπικές ματαβλητές: Στοίβα (Stack) Οργάνωση Η/Y (ECE 232) 19

AA.c: int X; Παράδειγμα σύνδεσης προγραμμάτων A () {. lw $a0, X call B;... AA.o BB.c: int Y; void B () { sw $a1, Y call A;... Θέλουμε να συνδέσουμε (link) τα δύο αντικειμενικά αρχεία (object files AA and BB) Οι εντολές φαίνονται εδώ σε συμβολική μορφή για να κατανοηθούν καλύτερα Στην πραγματικότητα, οι εντολές θα ήταν δυαδικοί αριθμοί BB.o Οργάνωση Η/Y (ECE 232) 20

Παράδειγμα σύνδεσης προγραμμάτων Ο καταχωρητής $gp αρχικοποιείται πάντα με την τιμή 0x10008000 0x10008000 + 0xFFFF8000 = 0x1000 0000 Τελικό εκτελέσιμο αρχείο (executable file) Οργάνωση Η/Y (ECE 232) 21

Φόρτωση προγράμματος (I) Αρχικά το εκτελέσιμο αρχείο βρίσκεται στον σκληρό δίσκο O φορτωτής (loader): 1. Διαβάζει την επικεφαλίδα για να προσδιορίσει το μέγεθος των τμημάτων 2. Δημιουργεί ένα χώρο διευθύνσεων στην κύρια μνήμη αρκετά μεγάλο για εντολές και δεδομένα 3. Αντιγράφει εντολές και αρχικοποιημένα δεδομένα στη μνήμη (ο Loader είναι τμήμα του λειτουργικού συστήματος, Operating System) Οργάνωση Η/Y (ECE 232) 22

Φόρτωση προγράμματος (II) Φόρτωση από το δίσκο στη μνήμη: 4. Αντιγράφει τις παραμέτρους του προγράμματος που δίνει ο χρήστης στη στοίβα (argc, argv) 5. Αρχικοποιεί τους καταχωρητές (συμπεριλαμβανομένων των $sp, $fp, $gp) και θέτει τον $sp στην πρώτη ελεύθερη θέση 6. Μεταπηδά στη ρουτίνα εκκίνησης Η ρουτίνα αντιγράφει τις παραμέτρους στους $a0, και καλεί τη main Όταν η main επιστρέφει, κάνει κλήση συστήματος για έξοδο (exit syscall) Οργάνωση Η/Y (ECE 232) 23