ΑΡΧΙΤΕΚΤΟΝΙΚΗ
ΥΠΟΛΟΓΙΣΤΩΝ Ι
ΦΘ. ΕΞΑΜΗΝΟ 2004
Ανδρέας
Μόσχοβος
moshovos at di uoa gr
Τελική
Βαθμολογία Μαθήματος:
Μπορείτε
να τη βρείτε εδώ. Η κατάθεση
των βαθμών στη
γραμματεία θα
γίνει στις 1/6/2005. Αν
θέλετε να μην
παραδώσω βαθμό
σας παρακαλώ
στείλτε μου μήνυμα
στο moshovos@di.uoa.gr με
θέμα Κ15. Γράψτε
τον ΑΜ σας και
το ονοματεπώνυμο
σας. Αν εντοπίσετε
κάποιο λάθος (1)
μην πανικοβάλεστε
και (2) στείλτε
μου μήνυμα άμεσως.
Θα απαντήσω σε όλα
τα μηνύματα
που έχω λάβει μέχρι
και τις 31/5/2005. Αν έχετε
παραδώσει
κάποια εργασία
και δεν έχει
καταχωρηθεί ο
βαθμός σας στείλτε
μου μήνυμα και
συμπεριλάβετε:
(1) AM και ονοματεπώνυμο,
(2) το αρχείο
επιβεβαίωσης λήψης
του συστήματος
και (3) την εργασία.
ΠΡΟΣΟΧΗ: Η κατάσταση
αυτή δεν περιέχει
διορθώσεις
σχετικές με
μηνύματα που έχω
λάβει και στα
οποία δεν έχω
ακόμα απαντήσει.
Οι διορθώσεις
αυτές θα γίνουν
το πολύ μέχρι
την 29/5/2005.
Ζητώ
συγνώμη για
την καθυστέρηση.
Η αξιολόγηση
των εργασιών
και στη συνέχεια
η συλλογή των
βαθμών αποδείχτηκε
πολύ πιο χρονοβόρα
από όσο θα ήθελα.
ΕΝΔΕΙΚΤΙΚΕΣ
ΕΡΩΤΗΣΕΙΣ ΓΙΑ
ΤΗΝ ΤΕΛΙΚΗ
ΕΞΕΤΑΣΗ
Διαλέξεις: Τρίτη
19:00-21:00 και Πέμπτη15:00-17:00
στην αίθουσα Α.
Ωρες Γραφειου:
Τρίτη 18:00-19:00.
Αξιολόγηση:
(1) Αν Ασκήσεις >= 5.0
και Τελική
Εξέταση >= 5.0 τότε
Τελικός Βαθμός
= Ασκήσεις χ 0.3 +
Τελική Εξέταση
χ 0.7
(2) Σε
οποιαδήποτε
άλλη περίπτωση
δεν είναι
δυνατό να
επιτύχετε στο
μάθημα.
Ασκήσεις: Το
μάθημα δεν
έχει
υποχρεωτικά
εργαστήρια. Έχει
όμως
υποχρεωτικές
ασκήσεις. Στην
πλειοψηφία
τους οι
ασκήσεις αυτές
θα αφορούν
προγραμματισμό
σε γλώσσα μηχανής
για την
αρχιτεκτονική MIPS I. Θα
χρησιμοποιήσουμε
τον
προσομοιωτή
της αρχιτεκτονικής
MIPS, SPIM (ελαφρά
τροποποιημένο).
Ο προσομοιωτής
τρέχει κάτω
απο Microsoft Windows (υπάρχει και
κώδικας για
δοκιμάσετε να
τον χρησιμοποιήσετε
κάτω απο Linux αλλά θα πρέπει
να βρείτε
μόνοι σας πως
και αν γίνεται
αυτό). Ο
προσομοιωτής
βρίσκεται
εγκαταστημένος
στα PC του
εργαστηρίου
στο:
\\xena\appl\PCSpim
Μπορείτε να
τον εγκαταστήσετε
σε μηχάνημα Windows.
Οδηγίες
Εγκατάστασης: Πρόκειτα
για αρχείο .zip. Μέσα του
υπάρχουν δύο
φάκελλοι. Από
τον "uoa-Nov2003/PCSpim Files" εκτελέστε το
"setup.exe".
Αφού
ολοκληρωθεί η
εγκατάσταση
αντιγράψτε το uoa-Nov2003/pcspim.exe στο c:\Program Files\PCSpim (ή
όπου
εγκαταστήσατε
το πρόγραμμα).
Σύντομα θα
υπάρχξουν
επιπλέον
πληροφορίες
για τη χρήση του
προγράμματος PCSpim. Προς
στιγμήν
υπάρχει
διαθέσιμος ο οδηγός χρήσης
στα αγγλικά
και για την
έκδοση που
τρέχει σε UNIX
μηχανήματα.
Παρότι το PCSim έχει
διαφορετικό
τρόπο χρήσης,
οι δυνατότητες
του είναι η
ίδιες με αυτές
της έκδοσης
που
περιγράφεται.
Ο κώδικας για
τον
προσομοιωτή SPIM με τις
αλλαγές που
υλοποιήσαμε
βρίσκεται εδώ.
Ο κώδικας θα
σας είναι
χρήσιμος μόνο
αν θέλετε να τρέξετε
το SPIM κάτω από κάποιο
άλλο
λειτουργικό
(π.χ. linux).
ΔΙΑΛΕΞΕΙΣ/ΣΗΜΕΙΩΣΕΙΣ:
Σε
τακτά χρονικά
διαστήματα εδώ
θα βρίσκετε
τις χειρόγραφες
σημειωσεις των
διαλέξεων. Αυτές
αποτελούν και
την κύρια
διδακτική ύλη
του μαθήματος.
Βοηθητικά:
1. Αρχιτεκτονική
Υπολογιστών Ι,
Γρηγοριάδου
Μαρία κ
Πασχάλης
Αντώνης (θα σας
δωθεί απο το
τμήμα - και
στους φοιτητές ΕΠΕΑΕΚ).
2. "Computer Organization: The
Hardware/Software Interface", Patterson & Hennessy, 2nd Ed., Morgan
Kaufmann Publishers.
ΣΗΜΕΙΩΣΕΙΣ:
001. Γιατί
χρησιμοποιούμε
Ψηφιακά
Συστήματα; Τι
κάνει ένας
Υπολογιστής;
Αναπαράσταση
δεδομένων.(.zip)
Βοηθητικές
ασκήσεις σε
αριθμητικά
συστήματα χωρίς
λύσεις / μέ λύσεις.
002. Μνήμη.
Πρώτο
Παράδειγμα
γλώσσας
μηχανής MIPS.
Αποθηκευμένο
Πρόγραμμα και
εκτέλεση του. (.zip)
Παράδειγμα
σχεδιασμού των
εξωτερικών
συνδέσεων μιας
μνήμης για την
αρχιτεκτονική MIPS (pdf).
Βοηθητικές
ασκήσεις για
τις εντολές lw/sw.
003. Αποθηκευμένο
Πρόγραμμα και
εκτέλεση του
(συνέχεια). Εντολές
ελέγχου ροής
προγράμματος.
Λογικές πράξεις
και δημιουργία
32-bit
σταθερών. (.zip)
Αυτός ο
ψευτοκώδικας C
υλοποιεί τη
συμπεριφορά
του
επεξεργαστή MIPS για το
υποσύνολο
των
εντολών που
είχαμε
συζητήσει στις
διαλέξεις μέχρι
και την
Δευτέρα 25
Νοεμβρίου.
Αν
γνωρίζετε
αρκετά καλά τη C ίσως ο
κώδικας να σας
βοηθήσει. Αν
όχι τότε
αγνοήστε τον
προς στιγμήν.
Προσοχή:
ο κώδικας
αυτός δε μπορεί
να μετατραπεί
σε πρόγραμμα
μέσω κάποιου compiler της C για
δύο λόγους.
(1) Ο
πίνακας Mem
είναι 4Gbytes και
δε "χωράει"
στους
περισσότερους
τωρινούς υπολογιστές.
(2) Ο
κώδικας σε
ορισμένα
σημεία
χρησιμοποιεί
διαφορετικό
συντακτικό από
αυτό της C.
004. Γλώσσα
προγραμματισμού
Assembly και
η χρήση της
στον
προσομοιωτή SPIM (html)
004.1 Παράδειγμα
υλοποίησης της
δομής do-while της
C (.s). (Πέμπτη 21,
Οκτ. 2004)
004.2 Χρήση
του SPIM (html) (Παρασκευή
22, Οκτ. 2004)
005. Υλοποίηση
της δομής switch της
γλώσσας C σε κώδικα
μηχανής MIPS (html).
005.1 Παράδειγμα
αναζήτησης σε
δυαδικό δένδρο
(υλοποίηση και
δομων struct και pointers) (.s) Τρίτη 26,
Οκτ. 2004
Παραδείγματα
που μπορουν να
χρησιμοποιηθουν
απευθειας με
το SPIM:
a =
b + c
switch(p) (0<=p<=7)
006. Υπορουτίνες
σε γλωσσα
μηχανής. (.zip) Παρακαλώ
αγνοήστε προς
στιγμήν τη
σελίδα στην οποία
αναφερόμαστε
σε ρουτίνες
που
επιστρέφουν
πολύπλοκους
τύπους
δεδομένων (struct). Θα γίνουν
διορθώσεις.
Παραδείγματα
(αρχεία C και
η αντίστοιχη
υλοποίηση σε assembly).
Στην
περίπτωση που
θέλετε να
πειραματιστείτε
με προγράμματα
C και πως
αυτά
υλοποιούνται
σε assembly:
Το
αρχείο
αυτό
περιέχει τον gcc compiler που
παράγει κώδικα
MIPS
(ο κώδικας δε
μπορεί να
χρησιμοποιηθεί
απευθείας στο SPIM).
Ο
compiler ονομάζεται
testcc1.exe και μπορείτε
να τον
εκτελέσετε ως
εξής:
testcc1.exe -O1 -fomit-frame-pointer arxeio.c
και
αυτός παράγει
το αρχείο arxeio.s.
Προσοχή πρόκειται
μόνο για το C compiler
οπότε δέχεται
μόνο "καθαρή" C (χωρίς
#include, #define και
τις
υπόλοιπες
μακροεντολές
και παράγει μόνο
assembly αρχεία). Η assembly
που βγάζει
περιέχει
πολλές
ψευτοεντολές
που δεν υλοποιούνται
στο
SPIM. Μπορείτε
απλά να τις
αγνοήσετε. Το .exe
έχει παραχθεί
στο περιβάλλον
CYGWIN (www.cygwin.com)
και μπορεί να
μη μπορείτε να
το
εκτελέσετε
αν δεν το έχετε
εγκατεστημένο.
Δοκιμάστε
να
τοποθετήσετε
τη δυναμική
βιβλιοθήκη cygwin1.dll
που σας
δίνεται μαζί
με το testcc1.exe
ώστε να
αποφύγετε
να
εγκαταστήσετε
το cygwin.
Στο
μάθημα θα
μιλήσουμε για
επιθέσεις
τύπου stack/buffer overrun
που μπορούν να
γίνουν
κατανοητές σε
επίπεδο assembly. Για
περισσότερες
πληροφορίες
μπορείτε
να
διαβάσετε αυτό
το κείμενο.
Το κείμενο
αυτό υποθέτει
τη γνώση assembly x86. Παρόλα
αυτά είναι
δυνατό να το
παρακολουθήσει
κανείς αγνοώντας
τις
λεπτομέρειες
για
το x86. Οφείλω
να σημειώσω
πως
οποιαδήποτε
προσπάθεια επίθεσης
σε υπολογιστκά
συστήματα
είναι πολύ πιθανό
να είναι
παράνομη.
007. Συσκευές
εισόδου/εξόδου
. (.zip)
παράδειγματα:
ανάγνωση
δεκαεξαδικού
και εκτύπωση
στο δεκαδικο
(μόνο κεφαλαία,
αγνοεί άλλους
χαρακτηρες και
κρατά μόνο τα
τελευταια 32 bit)
ανάγνωση
και εκτύπωση
χαρακτήρων
008. Διακοπές (interrupts/exception) (html).
παράδειγμα
απο τις
σημειωσεις.
προσομοίωση
εντολής που δεν
υλοποιείται σε
hardware
μέσω interrupts (μονο
αν σας
ενδιαφέρει δεν
θα το
καλύψουμε στο
μάθημα)
009. Εντολές
Ολίσθησης,
δυαδικής
λογικής και
πολλαπλασιασμού/διαίρεσης
(html).
010. Γενικές
παρατηρήσεις
για
αρχιτεκτονικές
συνόλου
εντολών και η
αρχιτεκτονική
εντολών Χ86 (html).
011. Υλοποίηση
Επεξεργαστή
ενός κύκλου (html).
012. Υλοποίηση
Επεξεργαστή
πολλαπλών
κύκλων (datapath) (html).
013. Υλοποίηση
Επεξεργαστή
πολλαπλών
κύκλων (ΕΛΕΓΧΟΣ
- CONTROL) (html).
014. κρυφες
μνημες (απο το
συνοδευτικό
σύγγραμμα (pdf 4.2Mb).
EΡΓΑΣΙΕΣ
ΕΓΓΡΑΦΗ/ΔΗΜΙΟΥΡΓΙΑ
ΧΡΗΣΤΗ ΓΙΑ ΤΗΝ
ΠΑΡΑΔΟΣΗ ΕΡΓΑΣΙΩΝ
Η παράδοση των
εργασιών θα
γίνεται
ηλεκτρονικά
μέσω αυτής της
ιστοσελίδας.
Πρώτα πρέπει
να δώσετε τα
στοιχεία σας
και να σας παραχωρηθεί
ένας κωδικός
χρήστη και
παρασύνθημα.
ΔΗΜΙΟΥΡΓΙΑ
ΧΡΗΣΤΗ /
ΕΓΓΡΑΦΗ. <--
ΠΡΩΤΑ ΚΑΝΤΕ
ΑΥΤΟ
Θα σας σταλεί
ένα e-mail με τα
απαραίτητα
στοιχεία. Φροντίστε
να μην το
΄χάσετε. Αν κάτι πάει
στραβά
προσπαθήστε
ξανά. Η
αναγνώριση
χρήση γίνεται
με το
συνδυασμό
(κωδικός,
παρασύνθημα,
Αριθμός
Μητρώου).
001. ΕΙΣΑΓΩΓΗ
ΣΤΗ ΓΛΩΣΣΑ
ΜΗΧΑΝΗΣ ΚΑΙ
ΣΤΗ ΧΡΗΣΗ ΤΟΥ
ΠΡΟΣΟΜΟΙΩΤΗ SPIM.
Η
ΠΑΡΑΔΟΣΗ
ΓΙΝΕΤΑΙ ΜΕΣΩ ΑΥΤΗΣ ΤΗΣ
ΣΕΛΙΔΑΣ ΚΑΙ
ΑΦΟΤΟΥ ΕΧΕΤΕ
ΑΠΟΚΤΗΣEI ΚΩΔΙΚΟ ΟΠΩΣ
ΠΕΡΙΓΡΑΦΟΥΜΕ
ΠΑΡΑΠΑΝΩ.
Αν
θέλετε να
διορθώσετε
κάτι απλά
επαναλάβετε την
όλη διαδικασία
μέσω της
προηγούμενης
σελίδας. ΠΡΟΣΟΧΗ:
τελικά στα
αρχεία μένει
μόνο ότι δώσατε
την τελευταία
φορά.
002. ΔΟΜΕΣ
ΔΕΔΟΜΕΝΩΝ ΚΑΙ
ΣΥΝΘΕΤΟΙ
ΑΛΓΟΡΙΘΜΟΙ
Η
ΠΑΡΑΔΟΣΗ
ΓΙΝΕΤΑΙ ΜΕΣΩ ΑΥΤΗΣ ΤΗΣ
ΣΕΛΙΔΑΣ ΚΑΙ
ΑΦΟΤΟΥ ΕΧΕΤΕ
ΑΠΟΚΤΗΣEI ΚΩΔΙΚΟ ΟΠΩΣ
ΠΕΡΙΓΡΑΦΟΥΜΕ
ΠΑΡΑΠΑΝΩ.
Αν
θέλετε να
διορθώσετε
κάτι απλά
επαναλάβετε την
όλη διαδικασία
μέσω της
προηγούμενης σελίδας.
ΠΡΟΣΟΧΗ:
τελικά στα
αρχεία μένει
μόνο ότι
δώσατε την
τελευταία
φορά.
ΕΝΔΕΙΚΤΙΚΗ
ΑΠΑΝΤΗΣΗ
003. ΡΟΥΤΙΝΕΣ
Η
ΠΑΡΑΔΟΣΗ
ΓΙΝΕΤΑΙ ΜΕΣΩ ΑΥΤΗΣ ΤΗΣ
ΣΕΛΙΔΑΣ ΚΑΙ
ΑΦΟΤΟΥ ΕΧΕΤΕ
ΑΠΟΚΤΗΣEI ΚΩΔΙΚΟ ΟΠΩΣ
ΠΕΡΙΓΡΑΦΟΥΜΕ
ΠΑΡΑΠΑΝΩ.
Αν
θέλετε να
διορθώσετε
κάτι απλά
επαναλάβετε την
όλη διαδικασία
μέσω της
προηγούμενης
σελίδας. ΠΡΟΣΟΧΗ:
τελικά στα
αρχεία μένει
μόνο ότι
δώσατε την
τελευταία
φορά.
ΕΝΔΕΙΚΤΙΚΗ
ΑΠΑΝΤΗΣΗ
004. ΡΟΥΤΙΝΕΣ
Η
ΠΑΡΑΔΟΣΗ
ΓΙΝΕΤΑΙ ΜΕΣΩ ΑΥΤΗΣ ΤΗΣ
ΣΕΛΙΔΑΣ ΚΑΙ
ΑΦΟΤΟΥ ΕΧΕΤΕ
ΑΠΟΚΤΗΣEI ΚΩΔΙΚΟ ΟΠΩΣ
ΠΕΡΙΓΡΑΦΟΥΜΕ
ΠΑΡΑΠΑΝΩ.
Αν
θέλετε να
διορθώσετε
κάτι απλά
επαναλάβετε την
όλη διαδικασία
μέσω της
προηγούμενης
σελίδας. ΠΡΟΣΟΧΗ:
τελικά στα
αρχεία μένει
μόνο ότι
δώσατε την
τελευταία
φορά.
005. ΠΡΟΣΟΜΟΙΩΣΗ
ΛΕΙΤΟΥΡΓΙΑΣ
Η
ΠΑΡΑΔΟΣΗ
ΓΙΝΕΤΑΙ ΜΕΣΩ ΑΥΤΗΣ ΤΗΣ
ΣΕΛΙΔΑΣ ΚΑΙ
ΑΦΟΤΟΥ ΕΧΕΤΕ
ΑΠΟΚΤΗΣEI ΚΩΔΙΚΟ ΟΠΩΣ
ΠΕΡΙΓΡΑΦΟΥΜΕ
ΠΑΡΑΠΑΝΩ.
Αν
θέλετε να
διορθώσετε
κάτι απλά
επαναλάβετε την
όλη διαδικασία
μέσω της
προηγούμενης
σελίδας. ΠΡΟΣΟΧΗ:
τελικά στα
αρχεία μένει
μόνο ότι
δώσατε την
τελευταία
φορά.
ενδεικτικά
οι εργασίες
του 2003.
001.
Εισαγωγή
στην γλωσσα
μηχανης και
τον προσομοιωτή
SPIM.
002. Ρουτίνες.
003. Προσομοίωση
μιας υποθετικής
αρχιτεκτονικής
που είναι
παρόμοια με
ενα μικρό
υποσύνολο του MIPS.