ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών Διδάσκοντες: Νικόλας Στυλιανίδης Γιώργος Ζάγγουλος Email: nstylianides@gmail.com zaggoulos.george@ucy.ac.cy
Εισαγωγή στους Μικροεπεξεργαστές MIPS-32 (Διάλεξη 1) 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 2
Περίληψη Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32 Αρχείο καταχωρητών και Χάρτης Μνήμης Δομή αρχείου (προγράμματος) Έλεγχος Ροής Κώδικα Οι πρώτες μας εντολές assembly 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 3
Αρχιτεκτονική Μικροεπεξεργαστή (MIPS-32) Κεντρική Μονάδα Επεξεργασίας Καταχωρητές Αριθμητική (Λογική) Μονάδα Ειδικά Κυκλώματα Βοηθητική Μονάδα Επεξεργασίας Καταχωρητές ειδικής χρήσης Μνήμη A24, A46 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 4
Χάρτης Μνήμης (MIPS-32) A21 Στοίβα Δηλώσεις και Δεδομένα Εντολές προγράμματος * Κάθε θέση μνήμης κρατά 8 bits, ενώ κάθε καταχωρητής 32 bits (4 Bytes) 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 5
Προγραμματισμός Μικροεπεξεργαστή Οι μικροεπεξεργαστές συνοδεύονται από ένα σύνολο εντολών το οποίο υποστηρίζουν. Συνήθως υπάρχουν μικροδιαφορές στην σύνταξη μιας εντολής μεταξύ κατασκευαστών αλλά και οικογενειών μικροεπεξεργαστών. Η πιο πάνω γλώσσα είναι γνωστή ως Assembly και στόχο έχει να διευκολύνει τον προγραμματιστή o οποίος δεν χρειάζεται να προγραμματίζει σε κώδικα μηχανής (machine code) η οποίος είναι δυσνόητος. Αυτό επιτυγχάνεται με τη χρήση ενός εργαλείου «assembler» το οποίο μεταφράζει στην ουσία τις εντολές μας σε κώδικα μηχανής (αποτελούμενο από 0 και 1). 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 6
Δομή Αρχείου προσομοίωσης # Στοιχεία προγραμματιστή/κώδικα.data Δηλώσεις (.asciiz,.byte,.word).text main: Αρχικοποιήσεις Εντολές Προγράμματος # Κενή γραμμή για να τρέξει ο κώδικας 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 7
Έλεγχος Ροής Προγράμματος Ο καταχωρητής PC (programme counter) ενεργεί ως δείκτης στη διεύθυνση μνήμης όπου είναι αποθηκευμένη η επόμενη εντολή προς εκτέλεση. (Η τιμή του PC αυξάνει αρχικά πάντοτε κατά 4!) Πως επιτυγάνεται το jump ή το branch στον MIPS-32; Υπολογισμός της νέας διεύθυνσης αναλόγως της εντολής (απόλυτη τιμή ή σχετική τιμή). Αποθήκευση του $pc στον $ra (σε περίπτωση κλήσης συνάρτησης μέσα από το πρόγραμμα) 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 8
Από το Πρόβλημα στη Λύση! Κατά την επίλυση οποιουδήποτε προβλήματος, συνειδητά ή όχι, πάντοτε ακολουθούμε κάποια στάδια μέχρι που να φτάσουμε στην επιθυμητή λύση. Σε προβλήματα προγραμματισμού, συνήθως ακολουθούνται τα εξής στάδια: 1. Κατανόηση του προβλήματος 2. Ανάλυση προβλήματος (είσοδοι, έξοδοι, σταθερές, μεταβλητές) 3. Βήματα προς επίλυση του προβλήματος 4. Συγγραφή κώδικα για το κάθε βήμα 5. Έλεγχος κώδικα βήμα προς βήμα 6. Τελικός έλεγχος κώδικα 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 9
Διάγραμμα Ροής Προγράμματος Flow - Chart Το διάγραμμα ροής είναι πολύ βοηθητικό στην επίλυση ενός προβλήματος αφού μας βοηθά να δούμε και οπτικά την πορεία επίλυσης του προβλήματος και να κατανοήσουμε καλύτερα τον κώδικα που πρέπει να γράψουμε για το κάθε ένα από τα βήματα που πρέπει να ακολουθήσουμε. Η επιλογή του αριθμού των βημάτων εξαρτάται από το ίδιο το πρόβλημα αλλά και από το πόσο αναλυτικό επιθυμούμε εμείς να το σχεδιάσουμε. Πρέπει τουλάχιστο να περιέχει όλους τους ελέγχους (beq/bne/bhi) όπως και τυχόν αλληλεπίδραση με τον χρήστη. Ας σχεδιάσουμε το 2o μας Διάγραμμα Ροής. 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 10
Οι πρώτες μας εντολές Κλήσεις συστήματος (1, 4, 5, 8, 10) Φόρτωση καταχωρητή (li, lb, lw, la,) Μετακίνηση καταχωρητή (move) Αριθμητικές και Λογικές πράξεις (add, sub, or, and, xor, sll, srl) Έλεγχος τιμής (beq, beqz, bne) A44, A49-81 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 11
Μαθησιακοί στόχοι 1ου Εργαστηρίου 1. Αρχιτεκτονική MIPS-32 (CPU, Registers, Memory, Co-proc.) 2. Προσομοιωτής QtSpim (Εγκατάσταση προγράμματος, Φόρτωση και τρέξιμο κώδικα) 3. Assembly Language και Κώδικας Μηχανής (Δομή αρχείου προσομοίωσης και κλήσεις συστήματος) 4. Έλεγχος Ροής Προγράμματος ($pc, $ra) 5. Διάγραμμα Ροής Προγράμματος 6. Εισαγωγή στην assembly 23-Jan-13 HMY213 - Πανεπιστήμιο Κύπρου - Εαρινό Εξάμηνο 2013 Ν.Σ & Γ.Ζ 12