ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών Παρουσίαση Εργαστηρίου 6 Διδάσκων: Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213
Περίληψη Ελάχιστες Προδιαγραφές Πρότζεκτ Χρησιμοποίηση του μετρητή χρόνου Ενεργοποίηση και Διαχείριση σημάτων διακοπής Συνεπεξεργαστής 0 και αρχείο exceptions.s HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 2
Προδιαγραφές Συστήματος 1. Κάθε αρχείο αναλυτικής βαθμολογίας θα αποτελείται από τουλάχιστον 8 μαθήματα, ενώ σε αυτό δεν μπορεί να υπάρχει διπλή εισαγωγή μαθήματος. Μάθημα το οποίο δηλώθηκε για 2η φορά θα εμφανίζεται μόνο μια φορά και θα έχει την πιο πρόσφατη βαθμολογία. 2. Η μορφή του αρχείου θα καθοριστεί από τον κάθε προγραμματιστή και θα πρέπει να δώσετε τουλάχιστο ένα αρχείο (αναλυτικής βαθμολογίας) ως παράδειγμα. 3. Το αρχείο (αναλυτικής βαθμολογίας) θα πρέπει να ονομαστεί grades.txt για να μπορεί να γίνεται ο έλεγχος ευκολότερα και μέσα σε αυτό να υπάρχουν τα ακόλουθα στοιχεία: όνομα και επώνυμο φοιτητή/τριας τριας κωδικός πρόσβασης κωδικός τμήματος αριθμός μαθημάτων με καταχωρημένο βαθμό στο σύστημα HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 3
Προδιαγραφές Συστήματος 4. Το πρόγραμμα πρέπει αρχικά να καλωσορίζει τον χρήστη και να του ζητά να κάνει log-in δίνοντας τον κωδικό πρόσβασης (4 ψηφία με δυνατότητα ελέγχου όλων των χαρακτήρων του πληκτρολογίου). 5. Ο χρήστης θα έχει 3 ευκαιρίες για εισαγωγή του σωστού κωδικού πρόσβασης, αλλά ο σωστός κωδικός πρέπει να εισαχθεί εντός 20 δευτερολέπτων από τη στιγμή που θα ζητηθεί ο κωδικός. Η μέτρηση του χρόνου θα πρέπει απαραίτητα να υλοποιείται με σήμα διακοπής από το πληκτρολόγιο (hardware interrupt). Ο χρόνος που χρειάστηκε ο χρήστης για log-in θα εκτυπώνεται στην οθόνη σε δευτερόλεπτα. 6. Σε περίπτωση που ο χρήστης έχει ξεχάσει τον κωδικό πρόσβασης, το σύστημα θα πρέπει να του δίνει τη δυνατότητα είτε να δεχτεί κάποια υπενθύμιση (αν το επιθυμεί ο χρήστης) είτε να τερματίσει το πρόγραμμα. HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 4
7. Με την εισαγωγή του σωστού κωδικού στο σύστημα, αυτό θα ενημερώνει τον χρήστη για τις επιλογές που έχει (με βάση τις προδιαγραφές που έχουν υλοποιηθεί). Αυτές οι επιλογές θα πρέπει να ξαναεμφανίζονται μετά από την εμφάνιση του αποτελέσματος που ζητήθηκε με την προηγούμενη επιλογή. 8. Στις επιλογές σας πρέπει οπωσδήποτε να συμπεριληφθούν (α) ο μέσος όρος από όλα τα μαθήματα,, (β)( ο μέσος όρος στα μαθήματα του κλάδου (κωδικός ΗΜΥ) και (γ) η δυνατότητα search στην αναλυτική σας βαθμολογία (έστω κάποιου μαθήματος). Οι επιλογές θα γίνονται με το πάτημα ενός διαφορετικού πλήκτρου και θα πρέπει απαραίτητα να υλοποιούνται με σήμα διακοπής από το πληκτρολόγιο (hardware interrupt). Για παράδειγμα, αν ο χρήστης ψάξει για το μάθημα 213, και αυτό βρίσκεται στη λίστα, τότε ανάλογο μήνυμα θα τυπωθεί στην οθόνη με τις πιστωτικές μονάδες και τον βαθμό του μαθήματος. 9. Ο χρόνος μεταξύ της εκτύπωσης του αποτελέσματος και της επόμενης επιλογής από τον χρήστη δεν πρέπει να ξεπερνά τα 30 δευτερόλεπτα. Εάν συμβεί κάτι τέτοιο, τότε το σύστημα θα κλειδώνει και θα αναμένει από τον χρήστη να εισαγάγει και πάλι τον κωδικό πρόσβασης στα επόμενα 20 δευτερόλεπτα. Αν δεν δοθεί ο σωστός κωδικός, το πρόγραμμα θα τερματίζει. HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 5
10. Κατά την υλοποίηση του πρότζεκτ σας, πρέπει να χρησιμοποιηθούν η συνάρτηση ΑΤΟΙ για μετατροπή των χαρακτήρων ASCII σε αριθμούς, καθώς και η υλοποίηση δικιάς σας Στοίβας με τη σωστή πολιτική που πρέπει να ακολουθείται. 11. Η μορφή που θα έχουν τα αρχεία που θα διαβάζει το πρόγραμμα σας, καθώς και όλες οι σχεδιαστικές αποφάσεις που θα πάρετε και οι λεπτομέρειες υλοποίησης, πρέπει να τεκμηριωθούν και να φαίνονται ξεκάθαρα στην αναφορά που θα παραδώσετε. 12. Το πρόγραμμά σας θα πρέπει να είναι απλό, εύχρηστο, και φιλικό προς τον χρήστη και με κάποιο στοιχειώδες interface. Σημειώστε ότι ένα μέρος της βαθμολόγησης θα αφορά και στην όλη παρουσίαση του προγράμματος. Παρόλ αυτά σας προτρέπω να επικεντρωθείτε κατά κύριο λόγο στην τήρηση των προδιαγραφών ορθότητας/λειτουργικότητας λειτουργικότητας. 13. Μετά την εκτύπωση του Μέσου Όρου, το πρόγραμμα θα πρέπει να παρουσιάζει στην οθόνη μήνυμα σχετικό με τον Μέσο Όρο (πχ. ΑΡΙΣΤΑ!!! αν ο μέσος όρος ξεπερνά το 84. HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 6
Μετρητής Χρόνου (Ρολόι) Για τη μέτρηση του χρόνου, απαιτείται να υπάρχει κάποιου είδους χρονομέτρηση. Στην περίπτωση του SPIM υπάρχει ένας μετρητής ($9) ο οποίος αυξάνεται αυτόματα κάθε ένα χρονικό κβάντο (για το SPIM είναι 10 msec) και συγκρίνεται με τον $11. Όταν ο καταχωρητής $9 γίνει ίσος με τον καταχωρητή $11, τότε δημιουργείται ένα hardware interrupt στο πρόγραμμα το οποίο υποχρεώνει τον κώδικα να συνεχίσει τρέχοντας το exceptions file. $9: μετρητής χρόνου (10ms clock cycle) $11: καταχωρητής (compare) σύγκρισης με τoν μετρητή ($9) HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 7
Καταχωρητές Status ($12( $12), Cause ($13( $13) και Exception Programme Counter ($14) mfc0 $t5, $13 # Copy Cause register value to $t5 mtc0 $v0, $12 # Copy $v0's value to Status register HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 8
Ειδικοί καταχωρητές (θέσεις μνήμης) που χρησιμοποιούνται για Interrupts HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 9
Ενεργοποίηση Interrupts 1. Turn on the Interrupt Enable bit at Bit 0 of the Status Register ($12). This bit is the global on/off control for interrupts. 2. Also in the Status Register, turn on the Interrupt Mask bit corresponding to the Receiver (bit 11). This bit permits the CPU to respond to interrupts generated by the keyboard. You can leave this bit turned on throughout your program. If you want to also enable timing interrupts, turn on bit 15 in the Status Register. 3. Turn on the Interrupt Enable bit in the Receiver Control Register (0xFFFF0000). This bit tells the receiver hardware (keyboard) that it should generate interrupts when keypresses occur. HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 10
Διαχείριση ενός Interrupt When an interrupt occurs, the following things are done automatically by the h/w: 1. The Exception Level bit (bit 1) in the Status Register is turned on. While this bit is 1, no further interrupts can occur. This is essential, because we don't want the interrupt handler to be itself interrupted. 2. The Cause register is set to indicate the cause of the interrupt (see Dispatching an interrupt below). 3. The EPC register is set to the current value in the Program Counter. This is the address in the main code where you will be resuming after handling the interrupt. HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 11
Timer and Keyboard Interrupts Καλείστε να συμπληρώσετε τα δύο αρχεία (week6.s και excep_week6.s) αυτής της εβδομάδας, έτσι ώστε να λειτουργεί ορθά η υπολογιστική μηχανή (+, -,, *, / και χ^y). Ο χρήστης, αρχικά με 2 κλήσεις συστήματος (5) εισάγει τους δύο αριθμούς (χ και y). Στη συνέχεια με keyboard interrupt, ο χρήστης θα επιλέγει την πράξη που επιθυμεί να εκτελέσει. Αν ο χρήστης δώσει αριθμούς και δεν επιλέξει την προς εκτέλεση πράξη, τότε με timing interrupt το πρόγραμμα θα τερματίζει (στα 7 δευτερόλεπτα)! HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 12
Αλλαγές στο week6.s Το αρχείο week6.s σας δίνεται σχεδόν έτοιμο. Απομένει εσείς να: 1. Ενεργοποιήσετε το ρολόι και τα σήματα διακοπής που χρειάζεστε. 2. Ελέγξετε το ρολόι και το πλήκτρο που επέλεξε ο χρήστης και να στείλετε το πρόγραμμα να εκτελεστεί το αντίστοιχο μέρος του κώδικα. HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 13
Αλλαγές στο excep_week6.s Το αρχείο excep_week6.s θα αντικαταστήσει το exceptions.s έτσι ώστε να κάνει αυτά που επιθυμείτε και τα οποία περιγράφονται πιο κάτω: Είναι και αυτό έτοιμο, απομένει εσείς να: 1. Ελέγξετε το λόγο που προκλήθηκε το σήμα διακοπής (ρολόι, πληκτρολόγιο, ή κάτι άλλο) 2. Γράψετε τον κώδικα που θέλετε να εκτελείται αναλόγως του interrupt. 3. Προσαρμόσετε τον κώδικα σας για να αδρανοποιεί τα πλήκτρα που δεν χρησιμοποιούνται στην επιλογή πράξης. HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 14
Μαθησιακοί Στόχοι Εργαστήριο 6 1. Χρησιμοποίηση του μετρητή χρόνου 2. Ενεργοποίηση και Διαχείριση σημάτων διακοπής 3. Συνεπεξεργαστής 0 και αρχείο exceptions.s HMY213 - Πανεπιστήμια Κύπρου - Εαρινό Εξάμηνο 2012 Γ Ζ 15