ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213
Περίληψη Συμβόλαιο Μαθήματος Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32 Αρχείο Kαταχωρητών και Χάρτης Μνήμης Δομή αρχείου (προγράμματος)- Παράδειγμα Έλεγχος Ροής Κώδικα Οι πρώτες μας εντολές assembly- Παραδείγματα 2
Συμβόλαιο Μαθήματος Στόχος Μαθήματος Να προσφέρει εις βάθος κατανόηση στην οργάνωση σύγχρονων υπολογιστών και τον σχεδιασμό μικροεπεξεργαστών, μέσω πρακτικής εμπειρίας. Οι εργαστηριακές ασκήσεις περιλαμβάνουν συμβολικό προγραμματισμό, σχεδιασμό και υλοποίηση απλών μικροεπεξεργαστών με τη χρήση εργαλείων σχεδιασμού σε Η.Υ. (CAD) και προγραμματιζόμενων διατάξεων λογικής. 3
Αναμενόμενα Αποτελέσματα Μαθήματος 1. Εις βάθος κατανόηση, μέσω πρακτικής εξάσκησης, των βασικών αρχών οργάνωσης και σχεδιασμού υπολογιστών. 2. Απόκτηση πρακτικής εμπειρίας στον συμβολικό προγραμματισμό και στη χρήση προσομοιωτών. 3. Απόκτηση πρακτικής εμπειρίας στον σχεδιασμό και την υλοποίηση μικροεπεξεργαστών με χρήση ηλεκτρονικών εργαλείων σχεδιασμού (CAD), γλώσσες υλικού (HDLs) και ολοκληρωμένων προγραμματιζόμενης λογικής. 4. Ικανότητα ομαδικής εργασίας και αποδοτικής επικοινωνίας. 4
Χρήση Ηλεκτρονικού Υπολογιστή Συμβολικός προγραμματισμός σε γλώσσα MIPS*και προσομοίωση με QtSpim 9.1.17 Επίσης, χρήση του λογισμικού Altera Quartus II V13.0SP1 για σχηματική ή/και VHDL περιγραφή σχεδιασμού και προσομοίωση. Τέλος, χρήση της εκπαιδευτικής πλακέτας (Altera FPGA board) για έλεγχο λειτουργικότητας του δικού σας σχεδιασμού (MIPS-16). * Microprocessor without Interlocked Pipeline Stages) is a reduced instruction set computer (RISC) 5
1ο Μέρος Εργαστηρίου Το πρώτο μέρος αφορά την εις βάθος εξάσκηση σε συμβολικό προγραμματισμό και την χρήση του προσομοιωτή QtSpim. Οι εβδομαδιαίες ομαδικές εργασίες θα δίνουν έμφαση σε ξεχωριστά θέματα οργάνωσης υπολογιστών, όπως η υλοποίηση αριθμητικών λειτουργιών, οι τρόποι διευθυνσιοδότησης της μνήμης, αποφάσεις και διακλαδώσεις,η στοίβα προγράμματος, ο αναδρομικός προγραμματισμός, κτλ. Θέματα σε επίπεδο συστήματος, όπως χρονομέτρηση, σήματα διακοπών και λειτουργίες I/O, θα εξεταστούν στο πρώτο project. 6
2ο Μέρος Εργαστηρίου Το 2ο μέρος εστιάζει σε προβλήματα και ασκήσεις σχεδιασμού και οργάνωσης μικροεπεξεργαστών με την χρήση του AlteraQuartus IIγια σχηματική ή/και VHDL περιγραφή σχεδιασμού και προσομοίωση. Οι εβδομαδιαίες ασκήσεις θα δίνουν έμφαση στον σχεδιασμό των βασικών μερών ενός απλού μικροεπεξεργαστή. Το τελικό projectαφορά την ενσωμάτωση των βασικών μερών, την επαλήθευση και την υλοποίηση του μικροεπεξεργαστή σε πλακέτα με ολοκληρωμένα προγραμματιζόμενης λογικής τύπου CPLDκαι FPGA. 7
Αναμενόμενη Εργασία από Φοιτητές Η παρουσία στα εργαστήρια είναι υποχρεωτική. Επιτρέπονται επιπλέον παρακολουθήσεις!!! Τακτική μελέτη του υλικού που ανατίθεται. Δύο Projects, μία ενδιάμεση και μια τελική εξέταση (και οι δύο εξετάσεις θα είναι γραπτές). 8
Αξιολόγηση ΗΜΥ213 4 Διαγωνίσματα (Δευτέρα) 15% 1o Project(Αssembly) Ομαδικό 10% Ενδιάμεση Εξέταση 06 Μαρ. 2017 30% 2o Project(MIPS-16) Ομαδικό 10% Τελική Εξέταση 8-22 Μαΐου 2017 35% Εργασία Βελτίωσης Βαθμού 15% Απαραίτητη προϋπόθεση επιτυχίας στο μάθημα είναι η εξασφάλιση συνολικού βαθμού 50% Ηεργασίαβελτίωσηςβαθμούθαλαμβάνεταιυπόψημόνοεάνοι βαθμολογίες από τις δύο εξετάσεις δίνουν μέσο όρο >40% 9
Πολιτική Κανόνες Μαθήματος Βαθμολογία: Τυχόν ενστάσεις για την βαθμολόγηση εργασίας/εξέτασης θα μπορούν να γίνονται εντός μιας εβδομάδας από την επιστροφή της εργασίας/εξέτασης στους φοιτητές. Ενστάσεις θα γίνονται δεκτές μόνο γραπτώς με ξεκάθαρη περιγραφή του παραπόνου ή της διευκρίνησης που ζητείται. Εκπρόθεσμες Εργασίες: Εκπρόθεσμες εργασίες θα υφίστανται αυτόματη μείωση βαθμολογίας 15% για κάθε επιπρόσθετη μέρα καθυστέρησης πέραν της ημερομηνίας λήξης της προθεσμίας. Εργασίες που θα παραδίδονται με καθυστέρηση πέραν των 3 ημερών δεν θα γίνονται δεκτές. Παρατάσεις θα πρέπει να διευθετούνται πάντοτε τουλάχιστο 24 ώρες πριν από την λήξη της προθεσμίας. 10
Απουσίες: Δικαιολογημένες απουσίες λόγω ασθένειας ή εγκεκριμένου ταξιδιού για ακαδημαϊκούς σκοπούς πρέπει να ακολουθούν την πολιτική απουσιών του πανεπιστημίου. Δεν θα παραχωρούνται παρατάσεις στην παράδοση ασκήσεων ή εναλλακτικές εξετάσεις, εκτός και αν η απουσία σας είναι δικαιολογημένη. Σε περίπτωση προγραμματισμένης απουσίας, πρέπει να επικοινωνήσετε με τον διδάσκοντα πριν την ημερομηνία της απουσίας σας. Ακαδημαϊκή Δεοντολογία: Ενθαρρύνεστε να συνεργάζεστε και να ανταλλάσσετε απόψεις για το υλικό του μαθήματος και όλες τις εργασίες. Ωστόσο, αυτό θα πρέπει να περιορίζεται στη συζήτηση και να μην συνεχίζεται κατά την σύνταξη του κώδικα. Απαγορεύεται αυστηρώς η συγγραφή κώδικα/εργασίας σε συνεργασία με άτομο εκτός ομάδας. Εργασίες οι οποίες έχουν σημαντική αλληλοεπικάλυψη συνιστούν παραβίαση της ακαδημαϊκής δεοντολογίας και θα αναφέρονται στο Συμβούλιο του Τμήματος ή ακόμα και στην Σύγκλητο του Πανεπιστημίου. 11
Αρχιτεκτονική Μικροεπεξεργαστή (MIPS-32) Μνήμη Κεντρική Μονάδα Επεξεργασίας Καταχωρητές Αριθμητική (Λογική) Μονάδα Ειδικά Κυκλώματα A24, A46 Βοηθητική Μονάδα Επεξεργασίας Καταχωρητές ειδικής χρήσης 12
Χάρτης Μνήμης (MIPS-32) Στοίβα Δηλώσεις και Δεδομένα Εντολές προγράμματος A21 13
Προγραμματισμός Μικροεπεξεργαστή Οι μικροεπεξεργαστές συνοδεύονται από ένα σύνολο εντολών το οποίο υποστηρίζουν. Συνήθως υπάρχουν μικροδιαφορές στην σύνταξη μιας εντολής μεταξύ κατασκευαστών αλλά και οικογενειών μικροεπεξεργαστών. Ηπιο πάνω γλώσσα είναι γνωστή ως Assembly και στόχο έχει να διευκολύνει τον προγραμματιστή ο οποίος δεν χρειάζεται να προγραμματίζει σε κώδικα μηχανής (machine code)ο οποίος είναι δυσνόητος. Αυτό επιτυγχάνεται με τη χρήση ενός εργαλείου «assembler» το οποίο αντιστοιχεί στην ουσία τις εντολές μας σε κώδικα μηχανής (αποτελούμενο από 0 και 1). 14
Δομή Αρχείου προσομοίωσης # Στοιχεία προγραμματιστή/κώδικα.data Δηλώσεις (.asciiz,.byte,.word).text main: Αρχικοποιήσεις Εντολές Προγράμματος # Κενή γραμμή για να τρέξει ο κώδικας 15
Έλεγχος Ροής Προγράμματος Ο καταχωρητής PC(programme counter) ενεργεί ως δείκτης στη διεύθυνση μνήμης όπου είναι αποθηκευμένη η επόμενη προς εκτέλεση εντολή. Η τιμή του PCαυξάνει αρχικάπάντοτε κατά 4! Πως επιτυγάνεται το jump ή το branch στον MIPS-32; Υπολογισμός της νέας διεύθυνσης αναλόγως της εντολής (απόλυτη τιμή ή σχετική τιμή). Αποθήκευση του $pc στον $ra (σε περίπτωση κλήσης συνάρτησης μέσα από το πρόγραμμα) 16
Οι πρώτες μας εντολές Κλήσεις συστήματος (1, 4, 5, 8, 10) Φόρτωση καταχωρητή (li, lb, lw, la) Μετακίνηση καταχωρητή (move) Αριθμητικές και Λογικές πράξεις (add, sub, or, and, xor, sll, srl) Συγκρίσεις τιμών(beq, beqz, bne) A44, A49-81 17
Παράδειγμα Πρόσθεσης 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 # syscall to print an integer syscall li $v0, 10 syscall # syscall to exit programme 18 # press enter to keep SPIM HAPPY!
Παραδείγματα εντολών li $t1, 0x10 # Register $t1 = 16 = 10hex lb $t2, 0x12345678 # Reg. $t2=περιεχόμενα μνήμης (0Χ12345678) lw $t2, 0x12345678 #$t2=περιεχόμενα μνήμης (0Χ12345678/9/a/b) la $a0, welcome # Register $a0 = address of welcome message move $t4, $v0 #Register $t4 = Register $v0 add $t3, $zero, $t2 #Register $t3 = Register $t2 + 0 addi $t3, $t4, 1 #Register $t3 = Register $t4 + 1 ori $t3, $t4, 0x12 #Register $t3 = Reg. $t4 OR0001 0010 andi $t5, $t6, 255 #Register $t5 = Reg. $t6 AND1111 1111 19
Παραδείγματα εντολών xor $t6, $t6, $t6 # Register $t6 = Reg. $t6 XORReg. $t6 = 0 sll $t7, $t6, 3 #Register $t7 = Reg. $t6 <<< 3 = $t6 * 8 srl $t5, $t3, 5 #Register $t5 = Reg. $t3 >>> 5 = $t3 / 32 beq $t6, $t5, finals # If Reg $t6 = $t5, PC = address finals bne $t7, $t6, again #If Reg $t7 $t6, PC = address again beqz $t8, exit_now #If Reg $t8 = 0, PC = address exit_now bgt $t6, $t5, loop1 #If Reg $t6 > $t5, PC = address loop1 b step2 j step2 # PC = address step2 (πιο γρήγορη εντολή) # PC = address step2 (χωρίς περιορισμό) 20
Μαθησιακοί στόχοι 1 ης Εβδομάδας 1. Αρχιτεκτονική MIPS-32 (CPU, Registers, Memory, Co-proc.) 2. Προσομοιωτής QtSpim 9.1.17 (Εγκατάσταση προγράμματος, Φόρτωση και τρέξιμο κώδικα) 3. Assembly Languageκαι Κώδικας Μηχανής (Δομή αρχείου προσομοίωσης και κλήσεις συστήματος) 4. Έλεγχος Ροής Προγράμματος ($pc, $ra) 5. Εισαγωγή στην assembly 21