ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ι
ΦΘ. ΕΞΑΜΗΝΟ 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.