ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ MHXNIKOI Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Γ. Τσιατούχας ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ
Εκτέλεση Προγραµµάτων 1. Ο υπολογιστής εκτελεί λίπρογράµµατα που συνθέτονται από εντολές σε γλώσσα µηχανής. 2. Ένα πρόγραµµα προς εκτέλεση είναι αποθηκευµένο στην κύρια µνήµη σεσυνεχόµενες θέσεις. 3. Η έχει έναν καταχωρητή ειδικού σκοπού που µας λέει σε ποια θέση µνήµης βρίσκεται η επόµενη εντολή. Ονοµάζεται µετρητής προγράµµατος (program g counter ). ) 4. Υπάρχει επίσης και ένας δεύτερος καταχωρητής ειδικού σκοπού στον οποίο κρατείται η τρέχουσα ρχ εντολή που εκτελείται. Ονοµάζεταιµ καταχωρητής εντολής (instruction register ). 5. Άλλοι πιθανοί καταχωρητές ειδικού σκοπού: α) ) καταχωρητής δεδοµένων (data register DR), β) καταχωρητής διευθύνσεων (address register R), γ) συσσωρευτής (accumulator ). 2
Εκτέλεση Εντολών Ο υπολογιστής ακολουθεί την επόµενη ατέρµονη διαδικασία: 1. Προσκόµιση (fetch) της εντολής από τη µνήµη (τη διεύθυνση µνήµης την οποία υποδεικνύει ο µετρητής προγράµµατος ) στον καταχωρητή εντολών. 2. Μεταβολή του ώστε να δείχνει στην επόµενη θέση εντολής στη µνήµη. 3. Αποκωδικοποίηση (decode) της εντολής ώστε να ενεργοποιηθούν τα κατάλληλα σήµατα ελέγχου. 4. Προσκόµιση δεδοµένων (τελούµενων operands) που ενδεχόµενα χρειάζεται η εντολή από την κύρια µνήµη ή τους καταχωρητές. 5. Εκτέλεση (execute) της εντολής. 6. Αποθήκευση (store) αποτελέσµατος. 7. Επιστροφή στο 1 ο βήµα για την εκτέλεση της επόµενης εντολής. 3
Αντικείµενο της Άσκησης Υλοποιείστε, χρησιμοποιώντας τη γλώσσα Java ή, εικονική μηχανή για τη μηχανή von Neumann που περιγράφεται στις διαφάνειες που ακολουθούν. 1. Η εικονική μηχανή θα πρέπει να συνοδεύεται από κατάλληλο περιβάλλον διεπαφής με το χρήστη για την εισαγωγή των προγραμμάτων και των τελούμενων στην κύρια μνήμη μήμηκαθώς και της αρχικής τιμής του μετρητή προγράμματος. Τα προγράμματα μπορούν να εισάγονται είτε στη συμβολική γλώσσα είτε στη γλώσσα μηχανής του συστήματος (ελεύθερη επιλογή). 2. Επίσης θα πρέπει να σχεδιαστεί κατάλληλο περιβάλλον για την παρουσίαση σε κάθε κύκλο ρολογιού κατά την εκτέλεση ενός προγράμματος α) των περιεχομένων όλων των καταχωρητών,, β) των περιεχομένων της χρησιμοποιούμενης μ ης μνήμης μήμης (όπου αποθηκεύονται τα τελούμενα ενός προγράμματος) γ) των τιμών στους τρείς διαύλους της μηχανής και δ) των τιμών των σημάτων ελέγχου της μονάδας ελέγχου. 3. Η εικονική μηχανή θα χρησιμοποιηθεί για την εκτέλεση προγραμμάτων γραμμένων σε συμβολική γλώσσα ή γλώσσα μηχανής, τα οποία θα προσδιοριστούν σε μεταγενέστερη φάση. 4
Τυπική Μηχανή von Neumann Έλεγχος -EN 16 Σήµατα Ελ λέγχου F0 F1 F2 Υπολογισµός LU Συσσωρευτής -EN DR-EN -OE MX-SL R-EN 0 1 R-OE DR-OE Εσωτερικός () DR-DI DR-EN R DR ιευθύνσεων ME-S ME-OE ME-RW (ddress us) () (Data us) () εδοµένων Κωδικός ιεύθυνση Μή ς (Opcode) Εντολή ή 8192 (2 13 ) εδοµένα 5
Start Ακολουθία ουθα Μικρολειτουργιών ουργ ctive? R RED M +1 DR(OP) Fetch ycle Stop = ccumulator R = Memory address register DR = Memory data register DR(OP) = Opcode field of DR DR(DR) = ddress field of DR = Instruction register = Program ounter M = Main memory SHIFT RSHIFT 111 Execute ycle OMP? 110 LOD? STORE? DD? ND? JUMP? JUMPZ? 000 001 010 011 100 101 R DR(DR) R DR(DR) R DR(DR) R DR(DR) = 0? RED M DR RED M RED M DR WRITE M + DR ^ DR DR(DR) DR(DR) 6
Απλό Πρόγραµµα προς Εκτέλεση Συµβολική Γλώσσα Γλώσσα Μηχανής Λειτουργία LOD ΗΕΧ 000 0001 Φόρτωση του πρώτου 16 bits τελούµενου από τη θέση µνήµης Α στον. DD ΗΕΧ 010 0010 Κωδικός Εντολής (Opcode) ιεύθυνση ς (Memory ddress) Φόρτωση του δεύτερου τελούµενου από τη θέση µνήµης Β στον DR. Πρόσθεσή του µε το τελούµενο στον και εγγραφή του αποτελέσµατος στον. STORE ΗΕΧ 001 0011 Μεταφορά και αποθήκευση του αποτελέσµατος από τον στη θέση µνήµης. 7
Προσκόµιση ση και Εκτέλεση LOD Start ctive? R Stop SHIFT RSHIFT RED M +1 DR(OP) Fetch ycle RED M DR M 111 Execute ycle OMP? 110 LOD? STORE? DD? ND? JUMP? JUMPZ? 000 001 010 011 100 101 R DR(DR) R DR(DR) R DR(DR) R DR(DR) = 0? RED M DR RED M RED M DR WRITE M + DR ^ DR DR(DR) DR(DR) 8
Προσκόµιση-Αποκωδικοποίηση ση οωδ ο οησηlod Έλεγχος µατα Ελέγ γχου Εκτέλεση LU 0001 000 Σή R DR 0001 000 0001 LOD DD STORE 8192 DT DT 9
Εκτέλεση LOD 1/2 Έλεγχος Εκτέλεση µατα LU Σή 0010 000 R DR 0001 000 0001 10 LOD DD STORE 8192 DT DT
Εκτέλεση LOD 2/2 Έλεγχος Εκτέλεση µατα LU 0 Σή 0010 000 R DR 0001 0 11 LOD DD STORE 8192 DT DT
Προσκόµιση ση και Εκτέλεση DD Start ctive? R Stop SHIFT RSHIFT RED M +1 DR(OP) Fetch ycle 111 Execute ycle OMP? 110 LOD? STORE? DD? ND? JUMP? JUMPZ? 000 001 010 011 100 101 R DR(DR) R DR(DR) R DR(DR) R DR(DR) = 0? RED M DR RED M RED M DR WRITE M + DR ^ DR DR(DR) DR(DR) 12
Προσκόµιση-Αποκωδικοποίηση ση οωδ ο οηση DD Έλεγχος µατα Ελέγ γχου Εκτέλεση LU 0010 010 Σή 0 R DR 0010 010 0010 LOD DD STORE 8192 DT DT 13
Εκτέλεση DD 1/3 Έλεγχος Εκτέλεση µατα LU 0 Σή 0011 010 R DR 0010 010 0010 14 LOD DD STORE 8192 DT DT
Εκτέλεση DD 2/3 Έλεγχος Εκτέλεση µατα LU 0 Σή 0011 010 R DR 0010 000000 15 LOD DD STORE 8192 DT DT
Εκτέλεση DD 3/3 Έλεγχος Εκτέλεση µατα LU 1 Σή 0011 010 R DR 0010 000000 16 LOD DD STORE 8192 DT DT
Προσκόµιση ση και Εκτέλεση STORE Start ctive? R Stop SHIFT RSHIFT RED M +1 DR(OP) Fetch ycle WRITE M M DR 111 Execute ycle OMP? 110 LOD? STORE? DD? ND? JUMP? JUMPZ? 000 001 010 011 100 101 R DR(DR) R DR(DR) R DR(DR) R DR(DR) = 0? RED M DR RED M RED M DR WRITE M + DR ^ DR DR(DR) DR(DR) 17
Προσκόµιση-Αποκωδικοποίηση ση οωδ ο οηση STORE Έλεγχος µατα Ελέγ γχου Εκτέλεση LU 0011 001 Σή 1 R DR 0011 001 0011 LOD DD STORE 8192 DT DT 18
Εκτέλεση STORE 1/2 Έλεγχος Εκτέλεση µατα LU 1 Σή 0100 001 R DR 0011 001 0011 19 LOD DD STORE 8192 DT DT
Εκτέλεση STORE 2/2 Έλεγχος Εκτέλεση µατα LU 1 Σή 0100 001 R DR 0011 1 20 LOD DD STORE 8192 DT DT RESULT