Κεφάλαιο 3 | Ενότητα 4 | Επόμενο | Προηγούμενο | Λεξικό όρων

  Η μικροπρογραμματιζόμενη μονάδα ελέγχου για αριθμητικές και λογικές εντολές

Οι αριθμητικές και λογικές εντολές βρίσκονται στο Σχήμα 3.4.11. Οι δύο πρώτες μικροεντολές αντιστοιχούν στις καταστάσεις που βρίσκονται στην κορυφή του Σχήματος 3.3.6 της ενότητας 3.

Όπως φαίνεται στη μικροεντολή 2 του σχήματος 3.4.10 της προηγούμενης υποενότητας,  η διεύθυνση της επόμενης μικροεντολής καθορίζεται από τον Πίνακα Διευθύνσεων 1. Έτσι αν η εντολή είναι μια αριθμητική και λογική εντολή πρέπει να καταχωρηθεί στον Temp η τιμή του Β ή η απευθείας τιμή (αν ο κωδικός λειτουργίας δηλώνει ότι ο πηγαίος τελεστέος είναι απευθείας δεδομένο). Όπως βλέπουμε από τον Πίνακα διευθύνσεων 1 αν ο κωδικός λειτουργίας της εντολής δηλώνει ότι ο πηγαίος τελεστέος βρίσκεται στον καταχωρητή Β τότε η επόμενη μικροεντολή έχει διεύθυνση 23 και τίτλο (label) "Reg:", ενώ αν ο πηγαίος τελεστέος είναι απευθείας δεδομένο τότε η επόμενη μικροεντολή έχει διεύθυνση 24 και τίτλο (label) "Imm:".

Στο Σχήμα 3.4.11 παρουσιάζεται η σειρά των μικροεντολών για την εκτέλεση αριθμητικών και λογικών εντολών μετά την αποκωδικοποίηση (έχουν προηγηθεί οι μικροεντολές του σχήματος 3.4.10):

Loc. Label Dest ALU S1 S2 C Misc Cond Jump label Σχόλια
23 Reg Temp Pass S2   B     Decode2   Source2=reg
24 Imm Temp Pass S2   Ιmm     Decode3   Source2=imm
25 ADD/I C ADD A Temp     Uncond Write2 ADD
26 SUB/I C SUB A Temp     Uncond Write2 SUB
27 AND/I C AND A Temp     Uncond Write2 AND
28 OR/I C OR A Temp     Uncond Write2 OR
29 XOR/I C XOR A Temp     Uncond Write2 XOR
30 SLL/I C SLL A Temp     Uncond Write2 SLL
31 SRL/I C SRL A Temp     Uncond Write2 SRL
32 SRA/I C SRA A Temp     Uncond Write2 SRA
33 LHI C SLL Temp Constant 16   Uncond Write2 LHI
34 Write2           Rd¬ C Uncond Ifetch Επανεγγραφή και πήγαινε στην επόμενη εντολή

Σχήμα 3.4.11 - Όπως στις δύο πρώτες καταστάσεις του σχήματος 3.3.6 της υποενότητας 2, οι μικροεντολές 23 και 24 φορτώνουν στον Temp έναν πηγαίο τελεστέο και στη συνέχεια δείχνουν στην επόμενη μικροεντολή, που εξαρτάται από τον κωδικό λειτουργίας της εντολής. Η μικροεντολή 23 φορτώνει στον Temp το περιεχόμενο του καταχωρητή Β, ενώ η εντολή 24 φορτώνει στον Temp την απευθείας τιμή.   Αυτό γίνεται ως εξής: ο πηγαίος τελεστεός (Β ή Imm) που βρίσκεται στην αρτηρία S2 περνά στον Temp μέσω της ALU. Η ALU δεν εκτελεί καμία πράξη με τον τελεστέο αυτό απλά τον αφήνει να περάσει (αυτό σημαίνει ο συμβολισμός Pass S2). Για να εξοικονομηθεί χώρος χρησιμοποιείται η ίδια μικροεντολή για τελεστέο που είναι καταχωρητής και για τελεστέο που είναι απευθείας τιμή. Η επόμενη μικροεντολή καθορίζεται από τον Πίνακα Διευθύνσεων 2 και 3 και εξαρτάται από τον κωδικό λειτουργίας της εντολής. Έτσι αν η εντολή είναι μια εντολή πρόσθεσης (ADD) τότε σύμφωνα με τον Πίνακα Διευθύνσεων 2 η επόμενη μικροεντολή έχει διεύθυνση 25 και τίτλο (label) "ADD/I". Ο Temp που βρίσκεται στην αρτηρία S2 και ο Α που βρίσκεται στην αρτηρία S1 περνούν στην ALU και γίνεται πρόσθεση (ADD). Το αποτέλεσμα καταχωρείται στον C όπως φαίνεται στο πεδίο Dest της μικροεντολής. Η επόμενη μικροεντολή (χωρίς κανένα έλεγχο-Uncond) έχει τίτλο (label) "Write2" και διεύθυνση 34. Η μικροεντολή αυτή καταχωρεί το περιεχόμενο του C στον Rd. Η επόμενη μικροεντολή έχει τίτλο "Ifetch" , δηλαδή ανακαλείται η επόμενη εντολή του προγράμματος.

ΔΡΑΣΤΗΡΙΟΤΗΤΑ 3

Να εξηγήσετε τον τρόπο με τον οποίο εκτελούνται οι εντολές στο παρακάτω τμήμα μικροκώδικα.

Loc. Label Dest ALU S1 S2 C Misc Cond Jump label
50 Beq:   SUB A Constant 0   0? Branch
51               Uncond Ifetch
52 Bne:   SUB A Const 0   0? Branch
53 Branch PC ADD PC Imm16     Uncond Ifetch
54 Jump PC ADD PC Imm26     Uncond Ifetch
55 JReg: PC Pass S1 A       Uncond Ifetch
56 JAL: C Pass S1 PC          
57   PC ADD PC Imm26   R31 ¬ C Uncond Ifetch
58 JALR: C Pass S1 PC          
59   PC Pass S1 A     R31¬ C Uncond Ifetch
60 Trap: IAR: Pass S1 PC          
61   PC Pass S2   Imm26        

ΑΠΑΝΤΗΣΗ ΔΡΑΣΤΗΡΙΟΤΗΤΑΣ 3