ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32 Αρχείο Kαταχωρητών και Χάρτης Μνήμης Δομή αρχείου (προγράμματος) - Παράδειγμα Έλεγχος Ροής Κώδικα Οι πρώτες μας εντολές assembly- Παραδείγματα 2
Αρχιτεκτονική Μικροεπεξεργαστή (MIPS-32) Μνήμη Κεντρική Μονάδα Επεξεργασίας Καταχωρητές Αριθμητική (Λογική) Μονάδα Ειδικά Κυκλώματα A24, A46 Βοηθητική Μονάδα Επεξεργασίας Καταχωρητές ειδικής χρήσης 3
Χάρτης Μνήμης (MIPS-32) Στοίβα Δηλώσεις και Δεδομένα Εντολές προγράμματος A21 4
Προγραμματισμός Μικροεπεξεργαστή Οι μικροεπεξεργαστές συνοδεύονται από ένα σύνολο εντολών το οποίο υποστηρίζουν. Συνήθως υπάρχουν μικροδιαφορές στην σύνταξη μιας εντολής μεταξύ κατασκευαστών αλλά και οικογενειών μικροεπεξεργαστών. Ηπιο πάνω γλώσσα είναι γνωστή ως Assembly και στόχο έχει να διευκολύνει τον προγραμματιστή oοποίος δεν χρειάζεται να προγραμματίζει σε κώδικα μηχανής (machine code)η οποίος είναι δυσνόητος.αυτό επιτυγχάνεται με τη χρήση ενός εργαλείου «assembler»το οποίο μεταφράζει στην ουσία τις εντολές μας σε κώδικα μηχανής (αποτελούμενο από 0 και 1). 5
Δομή Αρχείου προσομοίωσης # Στοιχεία προγραμματιστή/κώδικα.data Δηλώσεις (.asciiz,.byte,.word).text main: Αρχικοποιήσεις Εντολές Προγράμματος # Κενή γραμμή για να τρέξει ο κώδικας 6
Έλεγχος Ροής Προγράμματος Ο καταχωρητής PC (programme counter) ενεργεί ως δείκτης στη διεύθυνση μνήμης όπου είναι αποθηκευμένη η επόμενη προς εκτέλεση εντολή. Η τιμή του PCαυξάνει αρχικάπάντοτε κατά 4! Πως επιτυγάνεται το jump ή το branch στον MIPS-32; Υπολογισμός της νέας διεύθυνσης αναλόγως της εντολής (απόλυτη τιμή ή σχετική τιμή). Αποθήκευση του $pc στον $ra (σε περίπτωση κλήσης συνάρτησης μέσα από το πρόγραμμα) 7
Οι πρώτες μας εντολές Κλήσεις συστήματος (1, 4, 5, 8, 10) Φόρτωση καταχωρητή(li, lb, lw, la,) Μετακίνηση καταχωρητή(move) Αριθμητικές και Λογικές πράξεις (add, sub, or, and, xor, sll, srl) Συγκρίσεις τιμών(beq, beqz, bne) A44, A49-81 8
Παράδειγμα Πρόσθεσης 2 Καταχωρητών και Εκτύπωσης # your details with a description of the code.data result_is:.asciiz The result is:\n.text main: li $t1, 10 # load t1 with 10 li $t2, 7 # load t2 with 7 add $t3, $t1, $t2 # t3= t1 +t2 li $v0, 4 la $a0, result_is # syscall to print string syscall li $v0, 1 move $a0, $t3 # syscallto print an integer syscall li $v0, 10 syscall # syscall to exit programme 9 # press enter to keep SPIM HAPPY!
Παραδείγματα εντολών li $t1, 0x10 #... lb $t2, 0x12345678 #... lw $t2, 0x12345678 #... la $a0, welcome #... move $t4, $v0 #... add $t3, $zero, $t2 #... addi $t3, $4, 1 #... ori $t3, $t4, 0x12 #... andi $t5, $t6, 255 #... 10
Παραδείγματα εντολών xor $t6, $t6, $t6 #... sll $t7, $t6, 3 #... srl $t5, $t3, 5 #... beq $t6, $t5, finals #... bne $t7, $t6, again #... beqz $t8, exit_now #... bgt $t6, $t5, loop1 #... b step2 #... j step2 #... 11
Μαθησιακοί στόχοι 1 ης Εβδομάδας 1. Αρχιτεκτονική MIPS-32 (CPU, Registers, Memory, Co-proc.) 2. Προσοµοιωτής QtSpim (Εγκατάσταση προγράµµατος, Φόρτωση και τρέξιµο κώδικα) 3. Assembly Languageκαι Κώδικας Μηχανής ( οµή αρχείου προσοµοίωσης και κλήσεις συστήµατος) 4. Έλεγχος Ροής Προγράµµατος ($pc, $ra) 5. Εισαγωγή στην assembly 12
Αξιολόγηση ΗΜΥ213 3 Ασκήσεις Ατομικές 15% 1o Project(Αssembly) Ομαδικό 15% 2o Project(MIPS-16) Ομαδικό 15% Ενδιάμεση Εξέταση 12 Μαρ. 2015 25% Τελική Εξέταση Μαΐος 2015 30% Εργασία Βελτίωσης Βαθμού 15% Απαραίτητη προϋπόθεση επιτυχίας στο µάθηµα είναι η εξασφάλιση συνολικού βαθµού 50% Ηεργασίαβελτίωσηςβαθµούθαλαµβάνεταιυπόψηµόνοεάνοι βαθµολογίες από τις δύο εξετάσεις δίνουν µέσο όρο >40% 13