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


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

Πριν ξεκινήσουμε με τον μικροπρογραμματισμό θα πρέπει να καθορίσουμε από τι μπορεί να αποτελούνται τα πεδία μιας μικροεντολής. Το πρώτο βήμα είναι να δημιουργηθεί μια λίστα με τις πιθανές εισόδους. Στα παρακάτω σχήματα παρουσιάζεται η λίστα αυτή, η οποία περιλαμβάνει τον τελεστέο προορισμού (Destination), τον πηγαίο τελεστέο1 (Source1), τον πηγαίο τελεστέο2 (Source2), το πεδίο που καθορίζει τι πράξη κάνει η ALU, το πεδίο misc και το πεδίο cond.

Destination
(None) 
Temp 
PC 
IAR 
MAR 
MDR 

Σχήμα 3.4.5 - Στον πίνακα αυτό παρουσιάζονται οι πιθανοί τελεστέοι προορισμού μιας μικροεντολής (το πεδίο Destination της μικροεντολής του σχήματος 3.4.2).

Source1/Source2
A/B
Temp
PC
IAR
MAR
MDR
IR(16-bit imm)
IR(26-bit imm)
Constant

Σχήμα 3.4.6 - Στον πίνακα αυτό παρουσιάζονται οι πιθανοί πηγαίοι τελεστέοι μιας μικροεντολής (τα πεδία Source1 και Source2 της μικροεντολής του σχήματος 3.4.2). Το IR(16-bit imm) και το IR(26-bit imm) σημαίνουν ότι ο πηγαίος τελεστέος είναι μια 16-bit ή μια 26-bit αντίστοιχα απευθείας τιμή. Το Constant σημαίνει ότι ο πηγαίος τελεστέος είναι μια σταθερά, στην περίπτωση αυτή στο πεδίο C της μικροεντολής υπάρχει η τιμή της σταθεράς.


ALU
ADD 
SUB 
RSUB 
(reverse subtract)
AND 
OR 
XOR 
SLL 
SRL 
SRA 
Pass S1 
Pass S2 

Σχήμα 3.4.7 - Στον πίνακα αυτό παρουσιάζεται το πεδίο ALU της μικροεντολής του σχήματος 3.4.2. Σε αυτό το πεδίο φαίνεται τι πράξη θα κάνει η ALU. Η πράξη RSUB σημαίνει αντίστροφη αφαίρεση, δηλαδή αντί για την αφαίρεση Α-Β κάνει την αφαίρεση Β-Α. Το Pass S1 και Pass S2 δηλώνουν ότι η ALU  θα αφήσει να περάσουν τα δεδομένα που έρχονται από την αρτηρία  S1 και S2 αντίστοιχα χωρίς να εκτελέσει καμία πράξη σ' αυτά.


Misc
Instr Read                              IR¬ M[PC]
Data Read                             MDR¬ M[MAR]
Write                                    M[MAR]¬ MDR 
AB¬ RF                              Load A&B from
                                                 Reg. File
Rd¬ C                                Write Rd
R31¬ C                              Write R31

Σχήμα 3.4.8 - Στον πίνακα αυτό παρουσιάζεται το πεδίο Misc της μικροεντολής του σχήματος 3.4.2. Στα αριστερά υπάρχει ο συμβολισμός που χρησιμοποιείται στην μικροεντολή και στα δεξιά υπάρχει η εξήγηση του συμβολισμού. Το Instr Read σημαίνει ότι η εντολή διαβάζεται από τη μνήμη. Το Data Read σημαίνει ότι καταχωρούνται τα δεδομένα που έχουν διαβαστεί από τη μνήμη στον MDR (Load). Το Write σημαίνει ότι αποθηκεύεται στη μνήμη το δεδομένο που ήταν καταχωρημένο στον MDR (Store). Το ΑΒ¬RF σημαίνει ότι διαβάζονται οι καταχωρητές από το αρχείο καταχωρητών.


 
 
Cond
---                                             Πήγαινε στην 
                                        επόμενη  μικροντολή
Uncond                                   Πάντα μεταπήδηση
Int?                                     Έλεγχος για διακοπή
Zero?                                 Είναι η έξοδος της
                                             ALU μηδέν;
Mem?                               Έχει ολοκληρωθεί η
                                          πρόσβαση στη μνήμη;
Negative?                        Είναι η έξοδος της ALU 
                                          αρνητική;
Load?                                 Είναι μικροεντολή
                                           φόρτωσης;
Decode1                                 Ο πίνακας
                                        διευθύνσεων 1 καθορίζει
                                        την επόμενη μικροεντολή
Decode2                                Ο πίνακας
                                       διευθύνσεων 2 καθορίζει 
                                         την επόμενη μικροεντολή
Decode3                                  Ο πίνακας
                                       διευθύνσεων 3 καθορίζει 
                                      την επόμενη μικροεντολή

Σχήμα 3.4.9 - Στον πίνακα αυτό παρουσιάζεται το πεδίο cond της μικροεντολής του σχήματος 3.4.2. Στα αριστερά υπάρχει ο συμβολισμός που χρησιμοποιείται στην μικροεντολή και στα δεξιά υπάρχει η εξήγηση του συμβολισμού. Αν δεν υπάρχει τίποτα στο πεδίο cond τότε εκτελείται η επόμενη κατά σειρά μικροεντολή. Το Uncond σημαίνει ότι η επόμενη μικροεντολή θα είναι εκείνη που καθορίζεται στο πεδίο Jump label. Τα Decode1, Decode2, Decode3 δηλώνουν ότι η επόμενη μικροεντολή καθορίζεται από τους πίνακες διευθύνσεων 1,2 και 3 αντίστοιχα. Οι πίνακες αυτοί παρουσιάζονται παρακάτω.


Κωδικός λειτουργίας εντολής (συμβολική αναπαράσταση)
Διεύθυνση
Label
Memory
5
Mem:
Move to special
20
MovI2S:
Move from special
21
MovS2I:
S2=B
23
Reg:
S2=Immediate
24
Imm:
Branch equal zero
50
Beq:
Branch not equal zero
52
Bne:
Jump
54
Jump:
Jump register
55
JReg:
Jump and link
56
JAL:
Jump and link register
58
JALR:
Trap
60
Trap:

Πίνακας Διευθύνσεων 1 - Ο πίνακας αυτός καθορίζει ποια θα είναι η επόμενη μικροεντολή ανάλογα με τον κωδικό λειτουργίας της εντολής. Στην αριστερή στήλη παρουσιάζεται ο κωδικός λειτουργίας της εντολής, στη μεσαία στήλη η διεύθυνση της μικροεντολής που θα εκτελεστεί ανάλογα με τον κωδικό λειτουργίας της εντολής και στη δεξιά στήλη βρίσκεται ο τίτλος (label) της μικροεντολής που θα εκτελεστεί. Έτσι αν για παράδειγμα ο κωδικός λειτουργίας της εντολής δηλώνει ότι η εντολή είναι μια εντολή μεταπήδησης (Jump) τότε η επόμενη μικροεντολή βρίσκεται στη διεύθυνση 54 και έχει τίτλο (label) Jump: .


Κωδικός λειτουργίας εντολής (συμβολική αναπαράσταση)
Διεύθυνση
Label
Load byte
11
LB:
Load byte unsigned
13
LBU:
Load half
15
LH:
Load half unsigned
17
LHU:
Load word
19
LW:
ADD
25
ADD/I:
SUB
26
SUB/I:
AND
27
AND/I:
OR
28
OR/I:
XOR
29
XOR/I:
SLL
30
SLL/I:
SRL
31
SRL/I:
SRA
 32
SRA/I:
LHI
33
LHI:
Set equal
35
SEQ/I:
Set not equal
37
SNE/I:
Set less than
39
SLT/I:
Set greater than or equal
41
SGE/I:
Set greater than
43
SGT/I:
Set less than or equal
45
SLE/I:

Πίνακας Διευθύνσεων 2 και 3 - Ο πίνακας αυτός καθορίζει ποια θα είναι η επόμενη μικροεντολή ανάλογα με τον κωδικό λειτουργίας της εντολής. Στην αριστερή στήλη παρουσιάζεται ο κωδικός λειτουργίας της εντολής, στη μεσαία στήλη η διεύθυνση της μικροεντολής που θα εκτελεστεί ανάλογα με τον κωδικό λειτουργίας της εντολής και στη δεξιά στήλη βρίσκεται ο τίτλος (label) της μικροεντολής που θα εκτελεστεί. Έτσι αν για παράδειγμα ο κωδικός λειτουργίας της εντολής δηλώνει ότι η εντολή είναι μια εντολή πρόσθεσης (ADD) τότε η επόμενη μικροεντολή βρίσκεται στη διεύθυνση 25 και έχει τίτλο (label) ADD/I: .