ΑΡΧΙΤΕΚΤΟΝΙΚΗ Ι
ΦΘΙΝ. 2003-2004
ΑΝΔΡΕΑΣ ΜΟΣΧΟΒΟΣ
ΥΛΟΠΟΙΗΣΗ ΠΟΛΛΑΠΛΩΝ ΚΥΚΛΩΝ.
ΣΤΙΣ ΠΡΟΗΓΟΥΜΕΝΕΣ ΔΙΑΛΕΞΕΙΣ ΕΞΗΓΗΣΑΜΕ ΠΩΣ ΜΠΟΡΟΥΜΕ ΝΑ ΥΛΟΠΟΙΗΣΟΥΜΕ ΕΝΑΝ ΑΠΛΟ ΕΠΕΞΕΡΓΑΣΤΗ ΣΤΟΝ ΟΠΟΙΟ ΚΑΘΕ ΕΝΤΟΛΗ ΠΑΙΡΝΕΙ ΕΝΑΝ (ΑΡΓΟ) ΚΥΚΛΟ ΓΙΑ ΝΑ ΟΛΟΚΛΗΡΩΘΕΙ. ΠΕΡΑ ΑΠΟ ΤΗΝ ΤΑΧΥΤΗΤΑ Η ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΕΝΟΣ ΚΥΚΛΟΥ ΜΑΣ ΠΕΡΙΟΡΙΖΕΙ ΠΟΛΥ ΣΤΟ ΤΙ ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΜΠΟΡΟΥΜΕ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΟΥΜΕ (ΚΑΙ ΠΟΣΑ) ΜΙΑ ΚΑΙ ΠΡΕΠΕΙ ΟΛΕΣ ΟΙ ΑΠΑΡΑΙΤΗΤΕΣ ΛΕΙΤΟΥΡΓΙΕΣ ΝΑ ΛΑΜΒΑΝΟΥΝ ΧΩΡΑ ΤΑΥΤΟΧΡΟΝΑ. ΕΤΣΙ Π.Χ. ΕΠΡΕΠΕ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΟΥΜΕ ΔΥΟ ΜΝΗΜΕΣ ΜΙΑ ΓΙΑ ΕΝΤΟΛΕΣ ΚΑΙ ΜΙΑ ΓΙΑ ΔΕΔΟΜΕΝΑ, ΟΠΩΣ ΚΑΙ ΠΟΛΛΑΠΛΟΥΣ ΑΘΡΟΙΣΤΕΣ, ΕΝΑΝ ΓΙΑ ΤΟ PC=PC+4, ΕΝΑΝ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΗΣ ΔΙΕΥΘΥΝΣΗΣ ΠΡΟΟΡΙΣΜΟΥ ΤΩΝ BRANCHES ΚΑΙ ΕΝΑΝ ΓΕΝΙΚΟΥ ΣΚΟΠΟΥ (ΓΙΑ ΠΡΑΞΕΙΣ ΚΑΙ ΥΠΟΛΟΓΙΣΜΟ ΔΙΕΥΘΥΝΣΕΩΝ ΓΙΑ LOAD KAI STORE).
ΣΕ ΑΥΤΗΝ ΤΗΝ ΕΝΟΤΗΤΑ ΘΑ ΠΑΡΟΥΣΙΑΣΟΥΜΕ ΜΙΑ ΥΛΟΠΟΙΗΣΗ ΣΤΗΝ ΟΠΟΙΑ ΚΑΘΕ ΕΝΤΟΛΗ ΜΠΟΡΕΙ ΝΑ ΧΡΕΙΑΣΤΕΙ ΠΟΛΛΑΠΛΟΥΣ ΚΥΚΛΟΥΣ ΓΙΑ ΝΑ ΕΚΤΕΛΕΣΤΕΙ. Η ΥΛΟΠΟΙΗΣΗ ΑΥΤΗ ΜΑΣ ΕΠΙΤΡΕΠΕΙ ΝΑ ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΟΥΜΕ ΤΟ ΙΔΙΟ ΔΟΜΙΚΟ ΣΤΟΙΧΕΙΟ ΓΙΑ ΔΙΑΦΟΡΕΤΙΚΟΥΣ ΣΚΟΠΟΥΣ ΣΕ ΔΙΑΦΟΡΕΤΙΚΟΥΣ ΚΥΚΛΟΥΣ. Π.Χ. ΜΠΟΡΟΥΜΕ ΝΑ ΕΧΟΥΜΕ ΜΙΑ ΜΟΝΟ ΜΝΗΜΗ ΤΗΝ ΟΠΟΙΑ ΝΑ ΧΡΗΣΙΜΟΠΟΙΟΥΜΕ ΑΡΧΙΚΑ ΓΙΑ ΝΑ ΔΙΑΒΑΖΟΥΜΕ ΤΗΝ ΕΝΤΟΛΗ ΚΑΙ ΣΕ ΕΠΟΜΕΝΟ ΚΥΚΛΟ ΝΑ ΤΗΝ ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΟΥΜΕ ΓΙΑ ΝΑ ΔΙΑΒΑΣΟΥΜΕ Η ΝΑ ΓΡΑΨΟΥΜΕ ΔΕΔΟΜΕΝΑ ΑΠΟ ΑΥΤΗΝ.
ΑΚΟΛΟΥΘΕΙ ΕΝΑ ΑΠΛΟΠΟΙΗΜΕΝΟ ΔΙΑΓΡΑΜΜΑ ΤΗΣ ΥΛΟΠΟΙΗΣΗΣ ΠΟΛΛΑΠΛΩΝ ΚΥΚΛΩΝ ΣΤΟ ΟΠΟΙΟ ΣΗΜΕΙΩΝΟΥΜΕ ΜΕ ΧΡΩΜΑ ΤΟΥΣ ΕΠΙΠΛΕΟΝ ΚΑΤΑΧΩΡΗΤΕΣ ΠΟΥ ΑΠΑΙΤΟΥΝΤΑΙ:

ΣΥΓΚΡΙΝΩΝΤΑΣ ΜΕ ΤΗΝ ΥΛΟΠΟΙΗΣΗ ΕΝΟΣ ΚΥΚΛΟΥ ΜΠΟΡΟΥΜΕ ΝΑ ΠΑΡΑΤΗΡΗΣΟΥΜΕ ΠΩΣ:
1. ΥΠΑΡΧΕΙ ΜΟΝΟ ΜΙΑ ΜΟΝΑΔΑ ΜΝΗΜΗΣ (ΠΟΥ ΕΙΝΑΙ ΚΑΙ ΤΟ ΣΥΝΗΘΕΣ ΓΙΑ ΚΥΡΙΕΣ ΜΝΗΜΕΣ).
2. ΥΠΑΡΧΕΙ ΜΟΝΟ ΜΙΑ ΜΟΝΑΔΑ ΑΡΙΘΜΗΤΙΚΩΝ ΚΑΙ ΛΟΓΙΚΩΝ ΠΡΑΞΕΩΝ (ALU) KAI OXI MIA ALU ΚΑΙ ΔΥΟ ΑΘΡΟΙΣΤΕΣ ΟΠΩΣ ΠΡΙΝ.
3. ΥΠΑΡΧΟΥΝ ΕΠΙΠΛΕΟΝ ΚΑΤΑΧΩΡΗΤΕΣ (ΠΡΟΣΩΡΙΝΟΙ ΚΑΙ ΜΗ ΟΡΑΤΟΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗ) ΟΙ ΟΠΟΙΟΙ ΕΜΦΑΝΙΖΟΝΤΑΙ ΣΤΗΝ ΕΞΟΔΟ ΚΑΘΕ ΠΡΟΥΠΑΡΧΩΝΤΟΣ ΔΟΜΙΚΟΥ ΣΤΟΙΧΕΙΟΥ (ΑΡΧΕΙΟ ΚΑΤΑΧΩΡΗΤΩΝ, ΜΝΗΜΗ ΚΑΙ ALU).
ΣΤΟ ΤΕΛΟΣ ΚΑΘΕ ΚΥΚΛΟΥ ΤΑ ΔΕΔΟΜΕΝΑ ΠΟΥ ΘΑ ΧΡΗΣΙΜΟΠΟΙΗΘΟΥΝ ΚΑΤΑ ΤΟΥΣ ΕΠΟΜΕΝΟΥΣ ΚΥΚΛΟΥΣ ΑΠΟΘΗΚΕΥΟΝΤΑΙ ΣΕ ΚΑΠΟΙΟ ΚΑΤΑΧΩΡΗΤΗ (STATE). ΔΕΔΟΜΕΝΑ ΠΟΥ ΘΑ ΧΡΗΣΙΜΟΠΟΙΗΘΟΥΝ ΑΠΟ ΕΠΟΜΕΝΕΣ ΕΝΤΟΛΕΣ ΠΡΕΠΕΙ ΝΑ ΕΙΝΑΙ ΟΡΑΤΑ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗ ΓΙΑ ΑΥΤΟ ΚΑΙ ΑΠΟΘΗΚΕΥΟΝΤΑΙ ΣΤΑ ΑΝΤΙΣΤΟΙΧΑ ΣΤΟΙΧΕΙΑ (ΑΡΧΕΙΟ ΚΑΤΑΧΩΡΗΤΩΝ, PC ΚΑΙ ΜΝΗΜΗ). ΑΝ ΟΜΩΣ ΤΑ ΔΕΔΟΜΕΝΑ ΑΥΤΑ ΠΡΟΚΕΙΤΑΙ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΘΟΥΝ ΑΠΟ ΤΗΝ ΙΔΙΑ ΤΗΝ ΕΝΤΟΛΗ ΤΟΤΕ ΑΠΟΘΗΚΕΥΟΝΤΑΙ ΣΕ ΕΝΑΝ ΑΠΟ ΤΟΥΣ ΝΕΟΥΣ ΠΡΟΣΩΡΙΝΟΥΣ ΚΑΤΑΧΩΡΗΤΕΣ.
ΧΡΗΣΗ ΠΡΟΣΩΡΙΝΩΝ ΚΑΤΑΧΩΡΗΤΩΝ:
O ΚΑΤΑΧΩΡΗΤΗΣ ΕΝΤΟΛΗΣ (IR = INSTRUCTION REGISTER) ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΓΙΑ ΤΗΝ ΑΠΟΘΗΚΕΥΣΗ ΤΗΣ ΕΝΤΟΛΗΣ ΑΦΟΤΟΥ ΑΥΤΗ ΔΙΑΒΑΣΤΕΙ ΑΠΟ ΤΗ ΜΝΗΜΗ. Ο IR ΑΛΛΑΖΕΙ ΤΙΜΗ ΜΟΝΟ ΜΙΑ ΦΟΡΑ ΓΙΑ ΚΑΘΕ ΕΝΤΟΛΗ ΚΑΙ ΣΤΗΝ ΑΡΧΗ ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΤΗΣ.
Ο ΚΑΤΑΧΩΡΗΤΗΣ ΔΕΔΟΜΕΝΩΝ ΜΝΗΜΗΣ (MDR = MEMORY DATA REGISTER) ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΚΑΤΑ ΤΗΝ ΑΝΑΓΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΑΠΟ ΤΗ ΜΝΗΜΗ ΓΙΑ ΤΗΝ ΠΡΟΣΩΡΙΝΗ ΑΠΟΘΗΚΕΥΣΗ ΤΟΥΣ.
O ΚΑΤΑΧΩΡΗΤΗΣ ΕΞΟΔΟΥ ΤΗΣ ΜΟΝΑΔΑΣ ΑΡΙΘΜΗΤΙΚΩΝ/ΛΟΓΙΚΩΝ ΠΡΑΞΕΩΝ (ALUOUT) ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΓΙΑ ΤΗΝ ΠΡΟΣΩΡΙΝΗ ΑΠΟΘΗΚΕΥΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ (ΑΡΙΘΜΗΤΙΚΩΝ/ΛΟΓΙΚΩΝ ΠΡΑΞΕΩΝ, ΥΠΟΛΟΓΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗΣ ΓΙΑ LOAD KAI STORE, ΣΥΓΚΡΙΣΕΩΝ ΓΙΑ BRANCHES).
ΤΕΛΟΣ ΟΙ ΚΑΤΑΧΩΡΗΤΕΣ Α ΚΑΙ Β ΧΡΗΣΙΜΟΠΟΙΟΥΝΤΑΙ ΓΙΑ ΤΗΝ ΠΡΟΣΩΡΙΝΗ ΑΠΟΘΗΚΕΥΣΗ ΤΩΝ ΤΙΜΩΝ ΚΑΤΑΧΩΡΗΤΩΝ ΜΕΤΑ ΤΗΝ ΑΝΑΓΝΩΣΗ ΤΟΥΣ ΑΠΟ ΤΟ ΑΡΧΕΙΟ ΚΑΤΑΧΩΡΗΤΩΝ.
ΑΠΛΟΠΟΙΗΜΕΝΗ ΕΚΤΕΛΕΣΗ ΜΙΑΣ ΕΝΤΟΛΗΣ LOAD (BHMATA):
ΤΟ ΠΑΡΑΚΑΤΩ ΕΙΝΑΙ ΕΝΑ ΑΠΛΟΠΟΙΗΜΕΝΟ ΔΙΑΓΡΑΜΜΑ ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΜΙΑ ΕΝΤΟΛΗΣ LOAD:

ΕΠΙΓΡΑΜΜΑΤΙΚΑ Η ΕΚΤΕΛΕΣΗ ΑΠΟΤΕΛΕΙΤΑΙ ΑΠΟ 5 ΒΗΜΑΤΑ (ΚΥΚΛΟΥΣ):
1. ΑΝΑΓΝΩΣΗ ΕΝΤΟΛΗΣ ΚΑΙ ΤΟΠΟΘΕΤΗΣΗ ΣΤΟΝ ΚΑΤΑΧΩΡΗΤΗ ΕΝΤΟΛΗΣ (IR = INSTRUCTION REGISTER). EΠΙΣΗΣ PC=PC+4.
2. ANAΓΝΩΣΗ ΔΥΟ ΚΑΤΑΧΩΡΗΤΩΝ ΑΠΟ ΤΟ ΑΡΧΕΙΟ ΚΑΤΑΧΩΡΗΤΩΝ ΚΑΙ ΑΠΟΘΗΚΕΥΣΗ ΣΤΟΥΣ ΠΡΟΣΩΡΙΝΟΥΣ ΚΑΤΑΧΩΡΗΤΕΣ Α ΚΑΙ Β (ΜΟΝΟ Ο A ΜΑΣ ΧΡΕΙΑΖΕΤΑΙ ΓΙΑ ΤΟ LOAD).
3. ΥΠΟΛΟΓΙΣΜΟΣ ΤΗΣ ΔΙΕΥΘΥΝΣΗΣ ΚΑΙ ΑΠΟΘΗΚΕΥΣΗ ΤΟΥ ΑΠΟΤΕΛΕΣΜΑΤΟΣ ΣΤΟΝ ΠΡΟΣΩΡΙΝΟ ΚΑΤΑΧΩΡΗΤΗ ALUOUT.
4. ΑΝΑΓΝΩΣΗ ΑΠΟ ΤΗ ΜΝΗΜΗ ΚΑΙ ΑΠΟΘΗΚΕΥΣΗ ΤΗΣ ΤΙΜΗΣ ΣΤΟΝ ΠΡΟΣΩΡΙΝΟ ΚΑΤΑΧΩΡΗΤΗ MEMORY DATA REGISTER (MDR).
5. ΕΓΓΡΑΦΗ ΣΤΟ ΑΡΧΕΙΟ ΚΑΤΑΧΩΡΗΤΩΝ ΤΗΣ ΤΙΜΗΣ ΤΟΥ MDR.
ΔΙΑΓΡΑΜΜΑ ΥΛΟΠΟΙΗΣΗΣ:
ΑΚΟΛΟΥΘΕΙ ΤΟ ΟΛΟΚΛΗΡΩΜΕΝΟ ΔΙΑΓΡΑΜΜΑ ΤΗΣ ΥΛΟΠΟΙΗΣΗΣ ΤΟΥ DATAPATH:

ΑΣ ΕΞΗΓΗΣΟΥΜΕ ΕΠΙΓΡΑΜΜΑΤΙΚΑ ΤΙΣ ΣΥΝΔΕΣΕΙΣ:
1. ΕΙΣΟΔΟΣ PC: Η ΝΕΑ ΤΙΜΗ ΤΟΥ P ΥΠΟΛΟΓΙΖΕΤΑΙ ΠΑΝΤΑ ΑΠΟ ΤΗΝ ALU ΩΣ PC+4 H ΠΡΟΕΡΧΕΤΑΙ ΑΠΟ ΤΟ ALUOut ΟΠΟΥ ΠΡΩΤΑ ΕΧΕΙ ΥΠΟΛΟΓΙΣΤΕΙ ΤΟ PC+(SE(IMM16) << 2)
2. ΕΞΟΔΟΣ PC: ΟΔΗΓΕΙ ΤΗ ΔΙΕΥΘΥΝΣΗ ΣΤΗ ΜΝΗΜΗ ΓΙΑ ΤΗΝ ΑΝΑΓΝΩΣΗ ΜΙΑΣ ΕΝΤΟΛΗΣ ΚΑΙ ΜΠΟΡΕΙ ΝΑ ΕΙΝΑΙ ΚΑΙ ΤΟ ΠΡΩΤΟ ΟΡΙΣΜΑ ΕΙΣΟΔΟΥ ΣΤΗΝ ALU ΓΙΑ ΤΟΥΣ ΥΠΟΛΟΓΙΣΜΟΥΣ ΤΟΥ (1).
3. ΕΙΣΟΔΟΣ ADDRESS ΤΗΣ ΜΝΗΜΗΣ: EITE TO PC (ΓΙΑ ΑΝΑΓΝΩΣΗ ΕΝΤΟΛΗΣ) ΕΙΤΕ ΤΟ ALUOUT (ΠΟΥ ΘΑ ΠΕΡΙΕΧΕΙ ΜΙΑ ΔΙΕΥΘΥΝΣΗ ΠΟΥ ΥΠΟΛΟΓΙΣΤΗΚΕ ΣΕ ΠΡΟΗΓΟΥΜΕΝΟ ΚΥΚΛΟ).
4. ΕΞΟΔΟΣ MEMDATA: ΟΔΗΓΕΙ ΤΗΝ ΕΙΣΟΔΟ ΤΟΥ ΙR ΩΣΤΕ ΝΑ ΑΠΟΘΗΚΕΥΕΤΑΙ ΕΚΕΙ Η ΝΕΑ ΕΝΤΟΛΗ ΑΦΟΤΟΥ ΕΧΕΙ ΔΙΑΒΑΣΤΕΙ ΑΠΟ ΤΗ ΜΝΗΜΗ. ΕΠΙΣΗΣ ΟΔΗΓΕΙ ΤΟΝ ΚΑΤΑΧΩΡΗΤΗ MDR, ΟΤΑΝ ΧΡΕΙΑΖΕΤΑΙ ΝΑ ΑΠΟΘΗΚΕΥΣΟΥΜΕ ΤΑ ΔΕΔΟΜΕΝΑ ΠΟΥ ΔΙΑΒΑΣΑΜΕ ΑΠΟ ΤΗ ΜΝΗΜΗ (ΕΝΤΟΛΗ STORE).
5. ΕΞΟΔΟΙ ΤΟΥ IR: ΟΔΗΓΟΥΝΤΑΙ ΚΑΤΑΡΧΗΝ ΣΤΟ CONTROL ΩΣΤΕ ΑΥΤΟ ΝΑ ΑΠΟΦΑΣΙΖΕΙ ΠΕΡΙ ΠΟΙΑΣ ΕΝΤΟΛΗΣ ΠΡΟΚΕΙΤΑΙ. ΕΠΙΣΗΣ ΟΔΗΓΟΥΝΤΑΙ ΣΕ ΔΙΑΦΟΡΕΣ ΑΛΛΕΣ ΕΙΣΟΔΟΥΣ ΓΙΑ ΤΟΝ ΠΡΟΣΔΙΟΡΙΣΜΟ ΕΙΤΕ ΚΑΤΑΧΩΡΗΤΩΝ ΕΙΤΕ ΣΤΑΘΕΡΩΝ. ΑΥΤΕΣ ΟΙ ΣΥΝΔΕΣΕΙΣ ΕΞΗΓΟΥΝΤΑΙ ΣΤΗ ΣΥΝΕΧΕΙΑ.
6. READ REGISTER 1: ΠΑΝΤΑ ΤΟ ΠΕΔΙΟ RS TOY KATAΧΩΡΗΤΗ IR.
7. READ REGISTER 2: ΠΑΝΤΑ ΤΟ ΠΕΔΙΟ RT TOY ΚΑΤΑΧΩΡΗΤΗ IR.
8. WRITE REGISTER: EITE TO ΠΕΔΙΟ RT EITE TO ΠΕΔΙΟ RD.
9. WRITE DATA: EITE TO AΠΟΤΕΛΕΣΜΑ ΠΟΥ ΑΠΟΘΗΚΕΥΤΗΚΕ ΣΤΟΝ ΚΑΤΑΧΩΡΗΤΗ ALUOUT ΕΙΤΕ ΤΑ ΔΕΔΟΜΕΝΑ ΠΟΥ ΔΙΑΒΑΣΑΜΕ ΣΕ ΠΡΟΗΓΟΥΜΕΝΟ ΚΥΚΛΟ ΑΠΟ ΤΗ ΜΝΗΜΗ ΚΑΙ ΤΑ ΑΠΟΘΗΚΕΥΣΑΜΕ ΣΤΟΝ MDR.
10.ΕΙΣΟΔΟΙ ΚΑΤΑΧΩΡΗΤΩΝ Α ΚΑΙ Β: ΠΑΝΤΑ Ο ΠΡΩΤΟΣ ΚΑΙ ΔΕΥΤΕΡΟΣ ΚΑΤΑΧΩΡΗΤΗΣ ΑΝΤΙΣΤΟΙΧΑ ΠΟΥ ΔΙΑΒΑΣΑΜΕ ΑΠΟ ΤΟ ΑΡΧΕΙΟ ΚΑΤΑΧΩΡΗΤΩΝ.
11.ΠΡΩΤΗ ΕΙΣΟΔΟΣ ΤΗΣ ALU: EITE TO PC (ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ PC + KATI) EITE O ΠΡΩΤΟΣ ΚΑΤΑΧΩΡΗΤΗΣ (RS).
12.ΔΕΥΤΕΡΗ ΕΙΣΟΔΟΣ ΤΗΣ ALU: ΕΙΤΕ Ο ΔΕΥΤΕΡΟΣ ΚΑΤΑΧΩΡΗΤΗΣ, ΕΙΤΕ ΤΟ 4 ΓΙΑ ΤΟ PC=PC+4, ΕΙΤΕ ΤΟ H ΣΤΑΘΕΡΑ 16ΒΙΤ ΑΠΟ ΤΟ IR (ME EΠΕΚΤΑΣΗ ΠΡΟΣΗΜΟΥ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΩΝ ΔΙΕΥΘΥΝΣΕΩΝ ΤΩΝ LOAD KAI STORE), ΕΙΤΕ Η ΣΤΑΘΕΡΑ ΑΥΤΗ ΜΕ ΟΛΙΣΘΗΣΗ ΠΡΟΣ ΤΑ ΑΡΙΣΤΕΡΑ ΚΑΤΑ 2 ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΟΥ ([PC] + 4) + SE(IMM16) <<2).
13.ΕΞΟΔΟΣ ALU: ΟΔΗΓΕΙ ΤΟ PC ΓΙΑ ΤΗΝ ΑΠΟΘΗΚΕΥΣΗ ΤΗΣ ΝΕΑΣ ΤΟΥ ΤΙΜΗΣ ΚΑΙ ΤΟ ALUOUT ΓΙΑ ΠΡΟΣΩΡΙΝΗ ΑΠΟΘΗΚΕΥΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ Η ΔΙΕΥΘΥΝΣΕΩΝ.
ΔΙΑΓΡΑΜΜΑ ΥΛΟΠΟΙΗΣΗΣ ΜΕ ΤΑ ΣΗΜΑΤΑ ΕΛΕΓΧΟΥ:

ΓΙΑ ΛΟΓΟΥΣ ΑΠΛΟΠΟΙΗΣΗΣ ΟΙ ΚΑΤΑΧΩΡΗΤΕΣ Α ΚΑΙ Β ΦΟΡΤΩΝΟΝΤΑΙ ΚΑΘΕ ΚΥΚΛΟ. ΑΦΟΤΟΥ ΕΧΕΙ ΔΙΑΒΑΣΤΕΙ ΜΙΑ ΝΕΑ ΕΝΤΟΛΗ ΑΠΟ ΤΗ ΜΝΗΜΗ, ΟΙ ΕΙΣΟΔΟΙ READ REGISTER TOY ΑΡΧΕΙΟΥ ΚΑΤΑΧΩΡΗΤΩΝ ΠΑΡΑΜΕΝΟΥΝ ΣΤΑΘΕΡΕΣ ΓΙΑ ΤΗ ΔΙΑΡΚΕΙΑ ΤΗΣ ΕΚΤΕΛΕΣΗΣ ΤΗΣ ΕΝΤΟΛΗΣ, ΟΠΟΤΕ ΤΟ ΙΔΙΟ ΣΤΑΘΕΡΕΣ ΘΑ ΠΑΡΑΜΕΙΝΟΥΝ ΚΑΙ ΟΙ ΤΙΜΕΣ ΤΩΝ ΕΞΟΔΩΝ READ DATA. ΓΙΑ ΠΑΡΟΜΟΙΟΥΣ ΛΟΓΟΥΣ Ο ΚΑΤΑΧΩΡΗΤΗΣ ALUOut ΦΟΡΤΩΝΕΙ ΠΑΝΤΑ ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΣΤΟ ΤΕΛΟΣ ΚΑΘΕ ΚΥΚΛΟΥ. ΕΠΙΣΗΣ ΚΑΙ Ο MDR MΠΟΡΕΙ ΝΑ ΑΛΛΑΖΕΙ ΚΑΘΕ ΚΥΚΛΟ ΟΠΩΣ ΘΑ ΔΟΥΜΕ ΠΑΡΑΚΑΤΩ.
ΑΝ ΒΟΗΘΑ ΣΤΗΝ ΚΑΤΑΝΟΗΣΗ ΘΕΩΡΕΙΣΤΕ ΠΩΣ ΥΠΑΡΧΟΥΝ ΣΗΜΑΤΑ ΕΛΕΓΧΟΥ ΚΑΙ ΓΙΑ ΤΟΥΣ ΤΕΣΣΕΡΙΣ ΑΥΤΟΥΣ ΚΑΤΑΧΩΡΗΤΕΣ ΠΟΥ ΕΝΕΡΓΟΠΟΙΟΥΝΤΑΙ ΩΣΤΕ ΝΑ ΕΠΙΤΡΕΨΟΥΝ ΝΑ ΓΙΝΕΙ ΕΓΓΡΑΦΗ ΣΤΟΝ ΑΝΤΙΣΤΟΙΧΟ ΚΑΤΑΧΩΡΗΤΗ ΟΤΑΝ ΑΥΤΟ ΧΡΕΙΑΖΕΤΑΙ. ΣΤΟ ΤΕΛΟΣ ΘΑ ΔΕΙΤΕ ΟΤΙ ΔΕ ΒΛΑΠΤΕΙ ΑΥΤΑ ΤΑ ΣΗΜΑΤΑ ΝΑ ΕΙΝΑΙ ΠΑΝΤΑ ΕΝΕΡΓΑ.
Η ΜΟΝΑΔΑ ALU CONTROL ΠΑΡΟΥΣΙΑΣΤΗΚΕ ΚΑΤΑ ΤΗΝ ΥΛΟΠΟΙΗΣΗ ΕΝΟΣ ΚΥΚΛΟΥ.
ΤΑ ΥΠΟΛΟΙΠΑ ΣΗΜΑΤΑ ΕΧΟΥΝ ΤΟ ΚΑΘΕΝΑ ΤΗΝ ΑΥΤΟΝΟΗΤΗ ΣΗΜΑΣΙΑ ΤΟΥΣ.
ΤΑ ΒΗΜΑΤΑ ΕΚΤΕΛΕΣΗΣ ΤΩΝ ΕΝΤΟΛΩΝ
1. ΑΝΑΚΤΗΣΗ ΕΝΤΟΛΗΣ (INSTRUCTION FETCH)
[IR] = MEM[ [PC] ]
[PC] = [PC] + 4
ΛΕΙΤΟΥΡΓΙΑ: ΣΤΕΙΛΕ ΤΗΝ ΤΙΜΗ ΤΟΥ PC ΣΤΗ ΔΙΕΥΘΥΝΣΗ ΜΝΗΜΗΣ (IorD=0), ΔΙΑΒΑΣΕ ΑΠΟ ΤΗ ΜΝΗΜΗ (MemRead = 1) ΚΑΙ ΓΡΑΨΕ ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΣΤΟΝ ΚΑΤΑΧΩΡΗΤΗ IR (IRWrite=1).
ΥΠΟΛΟΓΙΣΕ ΤΟ [PC] + 4 (ALUSrcA=0 (ALU ΕΙΣΟΔΟΣ 1=[PC]), ALUSrcB=01 (ALU ΕΙΣΟΔΟΣ 2= 4)), ALUOp=00 (ADD). ΓΡΑΨΕ ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΣΤΟ PC (PCWrite=1, PCSource=0).
ΝΑ ΠΩΣ ΓΙΝΟΝΤΑΙ ΑΥΤΕΣ ΟΙ ΠΡΑΞΕΙΣ (ΣΗΜΕΙΩΜΕΝΕΣ ΜΕ ΜΠΛΕ):

2. ΑΠΟΚΩΔΙΚΟΠΟΙΗΣΗ ΕΝΤΟΛΗΣ ΚΑΙ ΑΝΑΓΝΩΣΗ ΚΑΤΑΧΩΡΗΤΩΝ (DECODE AND REGISTER FETCH)
[A]=[REG[RS]]=[REG[IR[25-21]]] OPOY ME IR[25-21] AΝΑΦΕΡΟΜΑΣΤΕ ΣΤΗΝ 5-ΒΙΤ ΠΟΣΟΤΗΤΑ ΠΟΥ ΣΧΗΜΑΤΙΖΟΥΝ ΤΑ ΒΙΤ 25 ΩΣ ΚΑΙ 21 ΤΟΥ ΚΑΤΑΧΩΡΗΤΗ IR.
[B]=[REG[RT]]=[REG[IR[20-16]]]
[ALUOut]=[PC] + (SIGN-EXTEND(IMM16)) << 2 = [PC] + (SIGN-EXTEND(IR[15-0])) << 2
ΤΟ CONTROL ΤΩΡΑ ΚΟΙΤΑΕΙ ΤΑ ΠΕΡΙΕΧΟΜΕΝΑ ΤΟΥ IR ΓΙΑ ΝΑ ΑΠΟΦΑΣΙΣΕΙ ΤΙ ΒΗΜΑΤΑ ΘΑ ΑΚΟΛΟΥΘΗΣΟΥΝ. ΤΑΥΤΟΧΡΟΝΑ ΔΙΑΒΑΖΟΥΜΕ ΔΥΟ ΚΑΤΑΧΩΡΗΤΕΣ (ΠΟΥ ΜΠΟΡΕΙ ΝΑ ΜΑΣ ΧΡΕΙΑΣΤΟΥΝ) ΚΑΙ ΕΠΙΣΗΣ ΕΠΙ ΤΗ ΕΥΚΑΙΡΙΑ ΥΠΟΛΟΓΙΖΟΥΜΕ ΤΟ [PC] + (SIGN-EXTEND(IMM16) << 2) (ALUSrcA = 1 ΓΙΑ ΤΟ PC KAI ALUSrcB=11 ΓΙΑ ΤΟ SIGN-EXTEND(IMM16) << 2) KAI TO ΓΡΑΦΟΥΜΕ ΣΤΟ ΑLUOut. ΤΟ ΤΕΛΕΥΤΑΙΟ ΑΠΟΤΕΛΕΙ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ (ΘΑ ΜΠΟΡΟΥΣΑΜΕ ΝΑ ΤΟ ΥΠΟΛΟΓΙΣΟΥΜΕ ΚΑΙ ΑΡΓΟΤΕΡΑ). ΜΠΟΡΟΥΜΕ ΟΜΩΣ ΝΑ ΤΟ ΥΠΟΛΟΓΙΣΟΥΜΕ ΚΑΙ ΤΩΡΑ ΩΣΤΕ ΝΑ ΕΙΝΑΙ ΕΤΟΙΜΟ ΑΝ ΜΑΣ ΧΡΕΙΑΣΤΕΙ. ΑΥΤΟ ΘΑ ΣΥΜΒΕΙ ΜΟΝΟ ΑΝ Η ΕΝΤΟΛΗ ΕΙΝΑΙ BEQ ΚΑΙ ΕΦΟΣΟΝ ΠΡΕΠΕΙ ΝΑ ΑΛΛΑΞΕΙ ΤΗ ΡΟΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ. ΓΙΑ ΟΛΕΣ ΤΙΣ ΥΠΟΛΟΙΠΕΣ ΕΝΤΟΛΕΣ ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΑΥΤΟ ΕΙΝΑΙ ΑΧΡΗΣΤΟ ΚΑΙ ΑΠΛΑ ΘΑ ΤΟ ΑΓΝΟΗΣΟΥΜΕ. ΔΕ ΒΛΑΠΤΕΙ ΝΑ ΚΑΝΕΙ ΚΑΝΕΙΣ ΠΑΡΑΠΑΝΩ ΥΠΟΛΟΓΙΣΜΟΥΣ ΕΦΟΣΟΝ ΟΙ ΜΟΝΑΔΕΣ ΕΙΝΑΙ ΔΙΑΘΕΣΙΜΕΣ ΚΑΙ ΔΕ ΧΡΗΣΙΜΟΠΟΙΟΥΝΤΑΙ ΓΙΑ ΚΑΤΙ ΑΛΛΟ.

3. EKTEΛΕΣΗ, ΥΠΟΛΟΓΙΣΜΟΣ ΔΙΕΥΘΥΝΣΗΣ ΜΝΗΜΗΣ Η ΟΛΟΚΛΗΡΩΣΗ BRANCH
ΑΠΟ ΕΔΩ ΚΑΙ ΠΕΡΑ ΤΟ CONTROL ΞΕΡΕΙ ΑΚΡΙΒΩΣ ΠΟΙΑ ΕΙΝΑΙ Η ΕΝΤΟΛΗ ΟΠΟΤΕ ΜΠΟΡΕΙ ΝΑ ΔΙΑΛΕΞΕΙ ΔΙΑΦΟΡΕΤΙΚΑ ΒΗΜΑΤΑ ΒΑΣΕΙ ΤΟΥ ΠΟΙΑ ΕΙΝΑΙ.
3.1 ΓΙΑ ΕΝΤΟΛΕΣ LOAD KAI STORE:
[ALUOut] = [A] + SIGN-EXTEND([IR[15-0]])
ΥΠΟΛΟΓΙΣΜΟΣ ΤΗΣ ΔΙΕΥΘΥΝΣΗΣ ΜΝΗΜΗΣ. ALUSrcA=1 ΓΙΑ ΝΑ ΠΕΡΑΣΕΙ Η ΤΙΜΗ ΑΠΟ ΤΟΝ ΚΑΤΑΧΩΡΗΤΗ Α, ALUSrcB=10 ΓΙΑ ΝΑ ΠΕΡΑΣΕΙ Η ΤΙΜΗ SIGN-EXTEND([IR[15-0]]).

3.2 ΓΙΑ ΕΝΤΟΛΕΣ ΑΡΙΘΜΗΤΙΚΩΝ/ΛΟΓΙΚΩΝ ΠΡΑΞΕΩΝ:
[ALUOut] = [A] op [B]
ΥΠΟΛΟΓΙΣΜΟΣ ΜΙΑΣ ΑΡΙΘΜΗΤΙΚΗΣ Η ΔΥΑΔΙΚΗΣ ΛΟΓΙΚΗΣ ΠΡΑΞΗΣ. ALUSrcA=1, ALUSrcB=00, ALUOp=op.

3.3 ΓΙΑ THN ΒΕQ:
IF ([A] == [B]) [PC] = ALUOut
Η ALU ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΓΙΑ ΤΗ ΣΥΓΚΡΙΣΗ ΤΩΝ Α ΚΑΙ Β (ΚΑΝΟΝΤΑΣ ΜΙΑ ΑΦΑΙΡΕΣΗ, ΟΙ ΔΥΟ ΑΡΙΘΜΟΙ ΕΙΝΑΙ ΙΔΙΟΙ ΑΝ ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΕΙΝΑΙ 0 ΟΠΟΤΕ ΚΑΙ ZERO=1). EXOYME ALUSrcA=1, ALUSrcB=00, ALUOp=SUB, PCWriteCond=1 (H ΕΓΓΡΑΦΗ ΘΑ ΓΙΝΕΙ ΣΤΗΝ ΕΠΟΜΕΝΗ ΑΚΜΗ ΟΠΟΤΕ ΥΠΑΡΧΕΙ ΧΡΟΝΟΣ ΓΙΑ ΝΑ ΥΠΟΛΟΓΙΣΤΕΙ ΣΩΣΤΑ ΤΟ ZERO) KAI PCSource=1 (ΓΙΑ ΝΑ ΠΕΡΑΣΕΙ ΤΟ ALUOut ΠΟΥ ΣΤΟΝ ΠΡΟΗΓΟΥΜΕΝΟ ΚΥΚΛΟ ΑΠΟΘΗΚΕΥΣΕ ΤΟ [PC] + SE(IMM16) << 2.
ΣΕ ΑΥΤΟ ΤΟ ΒΗΜΑ ΟΛΟΚΛΗΡΩΝΕΤΑΙ ΚΑΙ Η ΕΚΤΕΛΕΣΗ ΤΗΣ BEQ.

4. ΠΡΟΣΠΕΛΑΣΗ ΜΝΗΜΗΣ Η ΟΛΟΚΛΗΡΩΣΗ ΤΩΝ ΕΝΤΟΛΩΝ ΑΡΙΘΜΗΤΙΚΩΝ/ΛΟΓΙΚΩΝ ΠΡΑΞΕΩΝ
4.1 ΕΝΤΟΛH LOAD
[MDR] = MEM[[ALUOut]]
O ΚΑΤΑΧΩΡΗΤΗΣ ALUOut ΠΕΡΙΕΧΕΙ ΑΠΟ ΤΟ ΠΡΟΗΓΟΥΜΕΝΟ ΒΗΜΑ ΤΗ ΔΙΕΥΘΥΝΣΗ. ΤΗΝ ΟΔΗΓΟΥΜΕ ΣΤΗ ΕΙΣΟΔΟ ADDRESS ΤΗΣ ΜΝΗΜΗΣ (ΙorD=1) KAI ΔΙΑΒΑΖΟΥΜΕ ΑΠΟ ΤΗ ΜΝΗΜΗ (ΜemRead=1). TO ΑΠΟΤΕΛΕΣΜΑ ΤΟ ΓΡΑΦΟΥΜΕ ΣΤΟΝ ΚΑΤΑΧΩΡΗΤΗ MDR.

4.2 ΕΝΤΟΛH STORE
MEM[[ALUOut]] = [B]
O ΚΑΤΑΧΩΡΗΤΗΣ ALUOut ΠΕΡΙΕΧΕΙ ΑΠΟ ΤΟ ΠΡΟΗΓΟΥΜΕΝΟ ΒΗΜΑ ΤΗ ΔΙΕΥΘΥΝΣΗ. ΤΗΝ ΟΔΗΓΟΥΜΕ ΣΤΗ ΕΙΣΟΔΟ ADDRESS ΤΗΣ ΜΝΗΜΗΣ (ΙorD=1). ΣΤΗΝ ΕΙΣΟΔΟ WRITE DATA THS MNHMH EINAI MONIMΩΣ ΣΥΝΔΕΔΕΜΕΝΗ Η ΕΞΟΔΟΣ ΤΟΥ ΚΑΤΑΧΩΡΗΤΗ Β. ΟΠΟΤΕ ΕΝΕΡΓΟΠΟΙΟΥΜΕ ΤΗΝ ΕΓΓΡΑΦΗ ΣΤΗ ΜΝΗΜΗ (ΜemWrite=1). ΣΕ ΑΥΤΟ ΤΟ ΒΗΜΑ ΟΛΟΚΛΗΡΩΝΕΤΑΙ ΚΑΙ Η ΕΚΤΕΛΕΣΗ ΤΗΣ ΕΝΤΟΛΗΣ STORE.

4.3 ΕΝΤΟΛΕΣ ΑΡΙΘΜΗΤΙΚΩΝ/ΛΟΓΙΚΩΝ ΠΡΑΞΕΩΝ
[REG[[IR[15-11]]] = ALUOut
Ο ΚΑΤΑΧΩΡΗΤΗΣ ALUOut ΠΕΡΙΕΧΕΙ ΤΟ ΑΠΟΤΕΛΕΣΜΑ ΤΗΣ ΠΡΑΞΗΣ ΤΟ ΟΠΟΙΟ ΤΩΡΑ ΓΡΑΦΟΥΜΕ ΣΤΟ ΚΑΤΑΧΩΡΗΤΗ ΠΡΟΟΡΙΣΜΟΥ (MemToReg = 0 ΓΙΑ ΝΑ ΠΕΡΑΣΕΙ ΤΟ ALUOut KAI RegDst=1 ΓΙΑ ΝΑ ΠΕΡΑΣΕΙ Ο R KAI RegWrite ΓΙΑ ΝΑ ΓΙΝΕΙ Η ΕΓΓΡΑΦΗ). ΣΕ ΑΥΤΟ ΤΟ ΒΗΜΑ ΟΛΟΚΛΗΡΩΝΕΤΑΙ ΚΑΙ Η ΕΚΤΕΛΕΣΗ ΤΩΝ ΕΝΤΟΛΩΝ ΑΥΤΗΣ ΤΗΣ ΚΑΤΗΓΟΡΙΑΣ.

5. ΟΛΟΚΛΗΡΩΣΗ LOAD
[REG[[IR[20-16]]] = MDR
ΓΡΑΦΟΥΜΕ ΣΤΟΝ ΚΑΤΑΧΩΡΗΤΗ ΠΡΟΟΡΙΣΜΟΥ (RT) ΤΗΝ ΤΙΜΗ ΠΟΥ ΔΙΑΒΑΣΑΜΕ ΑΠΟ ΤΗ ΜΝΗΜΗ ΚΑΙ ΑΠΟΘΗΚΕΥΣΑΜΕ ΠΡΟΣΩΡΙΝΑ ΣΤΟΝ MDR (RegDst=0 ΓΙΑ ΤΟΝ RΤ ΚΑΙ MemToREG = 1 ΓΙΑ ΤΟΝ MDR). ΣΕ ΑΥΤΟ ΤΟ ΒΗΜΑ ΟΛΟΚΛΗΡΩΝΕΤΑΙ ΚΑΙ Η ΕΚΤΕΛΕΣΗ ΤΗΣ ΕΝΤΟΛΗΣ LOAD.

O ΠΑΡΑΚΑΤΩ ΠΙΝΑΚΑΣ ΣΥΝΟΨΗΖΕΙ ΤΑ ΒΗΜΑΤΑ ΕΚΤΕΛΕΣΗΣ ΟΛΩΝ ΤΩΝ ΚΑΤΗΓΟΡΙΩΝ ΕΝΤΟΛΩΝ:

(R-TYPE = ΑΡΙΘΜΗΤΙΚΕΣ ΚΑΙ ΛΟΓΙΚΕΣ)
ΥΛΟΠΟΙΗΣΗ ΤΟΥ ΕΛΕΓΧΟΥ (CONTROL)
Ο ΕΛΕΓΧΟΣ ΥΛΟΠΟΙΕΙΤΑΙ ΩΣ ΕΝΑ ΑΥΤΟΜΑΤΟ (ΜΗΧΑΝΗ ΚΑΤΑΣΤΑΣΕΩΝ) ΤΟ ΔΙΑΓΡΑΜΜΑ ΤΟΥ ΟΠΟΙΟΥ ΕΙΝΑΙ ΣΕ ΑΠΛΟΠΟΙΜΕΝΗ ΜΟΡΦΗ ΤΟ:

ΤΟ ΛΕΠΤΟΜΕΡΕΣ ΔΙΑΓΡΑΜΜΑ ΚΑΤΑΣΤΑΣΕΩΝ ΕΙΝΑΙ ΤΟ:

ΚΑΘΕ ΚΥΚΛΟΣ ΑΝΤΙΠΡΟΣΩΠΕΥΕΙ ΜΙΑ ΚΑΤΑΣΤΑΣΗ. ΠΡΟΣΟΧΗ ΣΤΟ ΠΑΡΑΠΑΝΩ ΔΙΑΓΡΑΜΜΑ ΕΜΦΑΝΙΖΕΤΑΙ ΚΑΙ Η ΥΛΟΠΟΙΗΣΗ ΜΙΑ ΕΝΤΟΛΗΣ JUMP (J).