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

Η μονάδα ελέγχου της ALU

Η μονάδα ελέγχου της ALU έχει τρεις εισόδους ελέγχου. Μόνο πέντε από τους οχτώ πιθανούς συνδυασμούς χρησιμοποιούνται ως είσοδοι ελέγχου. Οι πέντε αυτοί πιθανοί συνδυασμοί φαίνονται στο παρακάτω σχήμα.

Μονάδα ελέγχου της ALU Λειτουργία
000
And
001
Or
010
Add
110
Subtract
111
Set-on-less-than

Ανάλογα με τον τύπο της εντολής, η ALU χρειάζεται να εκτελέσει μία από αυτές τις πέντε λειτουργίες (functions). Για τις εντολές φόρτωσης και αποθήκευσης, θα χρησιμοποιήσουμε την ALU για να υπολογίσουμε την διεύθυνση της μνήμης, επομένως η λειτουργία που απαιτείται είναι η άθροιση(add). Για τις εντολές τύπου R, η ALU πρέπει να εκτελέσει κάποια από τις λειτουργίες (subtract, add, AND, OR, set-on-less-than), ανάλογα με την τιμή του πεδίου function της εντολής (που είναι τα 6 λιγότερα σημαντικά ψηφία της εντολής). Για τον έλεγχο της ισότητας των τελεστέων που βρίσκονται στους δύο καταχωρητές, στις εντολές διακλάδωσης (beq), η ALU πρέπει να κάνει αφαίρεση.

Μπορούμε να δημιουργήσουμε την είσοδο ελέγχου της ALU (που αποτελείται από 3 ψηφία), χρησιμοποιώντας μια μικρή μονάδα ελέγχου που θα έχει ως εισόδους το πεδίο function της εντολής, και ένα πεδίο ελέγχου των 2 ψηφίων το οποίο λέγεται ALUOp. Το ALUOp δηλώνει ότι η λειτουργία που θα εκτελεστεί είναι η add (00) για τις εντολές φόρτωσης και αποθήκευσης, η subtract (01) για τις εντολές διακλάδωσης, ή είναι εντολή τύπου R (10), οπότε η λειτουργία της εντολής είναι κωδικοποιημένη στο πεδίο function (10). Η έξοδος της μονάδας ελέγχου της ALU είναι ένα σήμα με 3 ψηφία που ελέγχει κατ΄ ευθείαν την ALU δημιουργώντας έναν από τους πέντε συνδυασμούς των 3 ψηφίων. Στο σχήμα 3.2.15 φαίνεται πως καθορίζονται οι είσοδοι της μονάδας ελέγχου της ALU, του πεδίου ελέγχου ALUOp (2 ψηφία) και του κωδικοποιημένου πεδίου function (6 ψηφία). Επιπλέον στο σχήμα φαίνεται η σχέση μεταξύ των ψηφίων του ALUOp και του κωδικού λειτουργίας (opcode) της εντολής.

Κωδικός λειτουργίας
εντολής της ALU
ALU0p Λειτουργία εντολής Πεδίο Function Επιθυμητή λειτουργία
της ALU
Είσοδος
LW
00
Load word
XXXXXX
add
010
SW
00
Store word
XXXXXX
add
010
Branch equal
01
Branch equal
XXXXXX
subtract
110
R-type
10
add
100000
add
010
R-type
10
Subtract
100010
subtract
110
R-type
10
AND
100100
and
000
R-type
10
Subtract
100010
subtract
110
R-type
10
OR
100101
or
001
R-type
10
Set-on-less-than
101010
set-on-less-than
111

Σχήμα 3.2.15 - Ο παραπάνω πίνακας δείχνει τον τρόπο με τον οποίο δημιουργούνται τα ψηφία ελέγχου της ALU ανάλογα με τα ψηφία ελέγχου του πεδίου ALUOp και την κωδικοποίηση του πεδίου function για τις εντολές τύπου R. Ο κωδικός λειτουργίας εντολής που βρίσκεται στην πρώτη στήλη (opcode), καθορίζει τα ψηφία του ALUOp. Παρατηρούμε πως όταν ο κωδικός του ALUOp είναι 00 ή 01, τα πεδία της εξόδου δεν εξαρτώνται από τον κωδικό του πεδίου function. Σ΄ αυτή την περίπτωση λέμε πως η τιμή του κωδικού του πεδίου function είναι αδιάφορη (don't care), επομένως οι τιμές αυτές συμβολίζονται με XXXXXX. Όταν η τιμή του ALUOp είναι 10, τότε ο κωδικός του function χρησιμοποιείται για να καθορίσει την είσοδο της μονάδας ελέγχου της ALU.


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

Να απλοποιήσετε περισσότερο τον πίνακα του σχήματος 3.2.16, χρησιμοποιώντας περισσότερους αδιάφορους όρους. Να συγκρίνετε την απάντησή σας με το σχήμα που ακολουθεί (σχήμα 3.2.16).

Υπάρχουν αρκετοί διαφορετικοί τρόποι με τους οποίους μπορούμε να σχεδιάσουμε το κύκλωμα που παρέχει τα 3 ψηφία ελέγχου της ALU από το πεδίο ALUOp (2 ψηφία) και τον κωδικό του πεδίου function (6 ψηφία). Επειδή μόνο μερικές από τις 64 πιθανές τιμές του πεδίου function μας ενδιαφέρουν και το πεδίο function χρησιμοποιείται μόνο όταν τα ψηφία του ALUOp έχουν την τιμή 10, μπορούμε να χρησιμοποιήσουμε λογικά κυκλώματα τα οποία θα αναγνωρίζουν ένα υποσύνολο των πιθανών τιμών και έτσι θα παίρνουμε σωστά τα ψηφία ελέγχου της ALU. Για να κατασκευάσουμε αυτά τα λογικά κυκλώματα θα σχεδιάσουμε ένα πίνακα αληθείας για τους συνδυασμούς του κωδικού του πεδίου function που μας ενδιαφέρουν και τα ψηφία του ALUOp. Ο πίνακας του σχήματος 3.2.16 απεικονίζει τον τρόπο με τον οποίο καθορίζονται τα ψηφία της ALU ανάλογα με τα πεδία στην είσοδο. Αφού ο πίνακας αληθείας είναι πολύ μεγάλος (28=256 τιμές) και η μονάδα ελέγχου της ALU δεν χρησιμοποιείται για τους περισσότερους από αυτούς τους συνδυασμούς, στον πίνακα αληθείας φαίνονται μόνο οι τιμές που χρειάζεται η μονάδα ελέγχου της ALU.

ALUop Κωδικός του πεδίου Function Λειτουργία
ALUop1
ALUop0
F5
F4
F3
F2
F1
F0
0
0
X
X
X
X
X
X
010
X
1
X
X
X
X
X
X
110
1
X
X
X
0
0
0
0
010
1
X
X
X
0
0
1
0
110
1
X
X
X
0
1
0
0
000
1
X
X
X
0
1
0
1
001
1
X
X
X
1
0
1
0
111

Σχήμα 3.2.16 - Ο πίνακας αληθείας για τα 3 ψηφία της μονάδας ελέγχου της ALU συναρτήσει του ALUOp και του κωδικού του πεδίου function. Τα ψηφία του ALUOp ονομάζονται ALUOp1 και ALUOp2. Στο σχήμα απεικονίζονται μόνο οι τιμές που δεν είναι όλες 0 στη μονάδα ελέγχου της ALU, μαζί με κάποιες τιμές που είναι αδιάφορες. Για παράδειγμα, η ALUOp δεν χρησιμοποιεί την κωδικοποίηση 11, έτσι ο πίνακας αληθείας περιέχει τις τιμές 1Χ και Χ1, αντί για 10 και 01. Επίσης όταν χρησιμοποιείται ο κωδικός του πεδίου function, τα δύο πρώτα ψηφία (F5 και F4) αυτού του πεδίου είναι πάντα 10 και οι τιμές 00, 01, 11 είναι αδιάφορες (don't care terms), και τις έχουμε αντικαταστήσει με ΧΧ στον πίνακα αληθείας.

Επειδή σε μερικές περιπτώσεις δεν ενδιαφερόμαστε για κάποιες από τις τιμές στις εισόδους, και θέλουμε οι πίνακες να είναι μικροί, δεν περιλαμβάνουμε στους πίνακες τις αδιάφορες τιμές. Μια τέτοια τιμή απεικονίζεται στους πίνακες με Χ και δηλώνει πως η έξοδος είναι αληθής, ανεξάρτητα από την τιμή της αντίστοιχης εισόδου. Για παράδειγμα, όταν τα ψηφία του ALUOp είναι 00, όπως στην πρώτη γραμμή του σχήματος 3.2.16, τα ψηφία της μονάδας ελέγχου της ALU είναι 010, ανεξάρτητα από τον κωδικό function. Σ΄ αυτή την περίπτωση οι τιμές του κωδικού function θα είναι αδιάφορες σ΄ αυτή την γραμμή του πίνακα αληθείας.

Αφού κατασκευάσαμε τον πίνακα αληθείας μπορούμε να τον βελτιώσουμε και να τον υλοποιήσουμε με πύλες.

Το κύκλωμα που υλοποιεί τα τρία ψηφία της μονάδας ελέγχου της ALU έχει τρεις ξεχωριστές εξόδους, (Operation2, Operation1 και Operation0), η κάθε μία από τις οποίες αντιστοιχεί σε κάποιο από τα 3 ψηφία της μονάδας ελέγχου της ALU. Η λογική συνάρτηση για κάθε έξοδο σχεδιάζεται αν συνδυάσουμε τους πίνακες αληθείας οι οποίοι καθορίζουν την συγκεκριμένη έξοδο. Για παράδειγμα το λιγότερο σημαντικό ψηφίο της μονάδας ελέγχου της ALU (Operation0), καθορίζεται από τα τις δύο τελευταίες τιμές του πίνακα αληθείας του σχήματος 3.2.16. Έτσι ο πίνακας αληθείας για το Operation0 θα έχει αυτές τις δύο τιμές. Επιπλέον αν κοιτάξουμε τους πίνακες αληθείας για κάθε έξοδο ξεχωριστά, μπορούμε να ελαχιστοποιήσουμε τα λογικά κυκλώματα που χρειάζονται εκμεταλλευόμενοι τις ομοιότητες ανάμεσα στους όρους που σχετίζονται με κάθε μία από τις εξόδους. Το σχήμα 3.2.17 δείχνει τους πίνακες αληθείας για κάθε ένα από τα 3 ψηφία της μονάδας ελέγχου της ALU.

ALUop Τα 6 ψηφία του πεδίου Function
ALUop1
ALUop0
F5
F4
F3
F2
F1
F0
X
1
X
X
X
X
X
X
1
X
X
X
X
X
1
X

a. Ο πίνακας αληθείας για Operation2=1. Αυτός ο πίνακας αντιστοιχεί στο αριστερό ψηφίο του πεδίου Operation του σχήματος 3.2.16.

ALUop Τα 6 ψηφία του πεδίου Function
ALUop1
ALUop0
F5
F4
F3
F2
F1
F0
0
X
X
X
X
X
X
X
X
X
X
X
X
0
X
X

b. Ο πίνακας αληθείας για Operation1=1.

ALUop Τα 6 ψηφία του πεδίου Function
ALUop1
ALUop0
F5
F4
F3
F2
F1
F0
1
X
X
X
X
X
X
1
1
X
X
X
1
X
X
X

c. Ο πίνακας αληθείας για Operation0=1.

Σχήμα 3.2.17 - Οι πίνακες αληθείας για τα 3 ψηφία της μονάδας ελέγχου της ALU. Μόνο οι τιμές για τις οποίες η έξοδος είναι 1 φαίνονται στα παραπάνω σχήματα. Τα ονόματα των σημάτων που αντιστοιχούν στον κωδικό λειτουργίας των 3 ψηφίων που υποστηρίζονται από την ALU είναι τα: Operation2, Operation1 και Operation0. Έτσι οι πίνακες αληθείας δείχνουν τους συνδυασμούς στις εισόδους για τους οποίους η ALU πρέπει να είναι 010, 001, 110 ή 111 (οι κωδικοί 011, 100 και 101 δεν χρησιμοποιούνται). Όταν το πεδίο ALUOp δεν ισούται με 10 δεν μας ενδιαφέρει η τιμή του κωδικού του πεδίου function και το συμβολίζουμε με Χ στους πίνακες αληθείας.

Στo σχήμα 3.2.17 έχουμε εκμεταλλευτεί το γεγονός της κοινής δομής σε κάθε πίνακα αληθείας και έχουμε ενσωματώσει επιπλέον αδιάφορες τιμές. Για παράδειγμα οι πέντε γραμμές στον πίνακα αληθείας του σχήματος 3.2.16 που ορίζουν το Operation1 έχουν μειωθεί σε μόνο δύο γραμμές στο σχήμα 3.2.17. Ένα πρόγραμμα υλοποίησης για ελαχιστοποίηση των λογικών κυκλωμάτων, θα χρησιμοποιήσει τις αδιάφορες τιμές για να μειώσει τον αριθμό των πυλών και τον αριθμό των εισόδων σε κάθε πύλη, σε μία λογική πύλη που θα πραγματοποιεί τους παραπάνω πίνακες αληθείας.

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

Να σχεδιάσετε το κύκλωμα της μονάδας ελέγχου της ALU χρησιμοποιώντας λογικές πύλες. Να συγκρίνετε το κύκλωμα που σχεδιάσατε, με αυτό του σχήματος που ακολουθεί (σχήμα 3.2.18).
(Υπόδειξη: Να χρησιμοποιήσετε τους πίνακες του σχήματος 3.2.17).

Από τον απλοποιημένο πίνακα αληθείας του σχήματος 3.2.17, μπορούμε να σχεδιάσουμε το λογικό κύκλωμα του σχήματος 3.2.18, το οποίο είναι το κύκλωμα της μονάδας ελέγχου της ALU. Ένα παράδειγμα για τον τρόπο με τον οποίο οι λογικές πύλες κατασκευάζονται από τους πίνακες αληθείας φαίνεται στη λεζάντα του σχήματος 3.2.18.

Σχήμα 3.2.18 - Το κύκλωμα της μονάδας ελέγχου της ALU από το οποίο παίρνουμε τα 3 ψηφία ελέγχου της ALU. Μόνο 4 από τα 6 ψηφία του κωδικού function χρειάζονται στην είσοδο, αφού τα δύο σημαντικότερα ψηφία είναι πάντα αδιάφορα. Ας εξετάσουμε πως φτιάχνουμε το παραπάνω κύκλωμα από τον πίνακα αληθείας του σχήματος 3.2.17. Έστω η έξοδος Operation2 η οποία προκύπτει από τις δύο γραμμές του πίνακα αληθείας για το Operation2. Η δεύτερη γραμμή είναι μια λειτουργία ΚΑΙ που αποτελείται από δύο όρους (F1=1 και ALUOp1=1). Η πρώτη πύλη ΚΑΙ με τις δύο εισόδους ανταποκρίνεται σε αυτόν τον όρο. Ο άλλος όρος για να είναι το Operation2 ενεργό, είναι το ALUOp0. Αυτοί οι δύο όροι συνδέονται με μία πύλη Ή της οποίας η έξοδος είναι το Operation2. Οι έξοδοι Operation0 και Operation1 δημιουργούνται με παρόμοιο τρόπο από τον πίνακα αληθείας.

Το κύκλωμα της μονάδας ελέγχου της ALU μπορεί να κατασκευαστεί εύκολα επειδή έχουμε μόνο τρεις εξόδους, και επειδή μπορούμε να παραλείψουμε πολλούς από τους πιθανούς συνδυασμούς στην είσοδο. Εάν έπρεπε να μετασχηματίσουμε όλους τους κωδικούς function σε σήματα ελέγχου της ALU, τότε αυτή η απλή μέθοδος δεν θα μπορούσε να χρησιμοποιηθεί για την κατασκευή του κυκλώματος της μονάδας ελέγχου της ALU. Τότε θα έπρεπε να χρησιμοποιήσουμε έναν αποκωδικοποιητή, μια μνήμη, ή έναν σύνθετο πίνακα από λογικές πύλες.

Σε γενικές γραμμές, μία λογική εξίσωση και μία απεικόνιση του πίνακα αληθείας μιας λογικής συνάρτησης σχετίζονται μεταξύ τους. Έτσι όταν ένας πίνακας αληθείας καθορίζει μόνο τις εισόδους που το αποτέλεσμα στην έξοδο είναι μη μηδενικό, τότε ο πίνακας δεν περιγράφει ολοκληρωμένα την λογική συνάρτηση. Ένας ολοκληρωμένος πίνακας αληθείας απεικονίζει όλες τις αδιάφορες τιμές. Για παράδειγμα η κωδικοποίηση 11 για το ALUOp πάντα έχει στην έξοδο αδιάφορη τιμή. Έτσι ένας ολοκληρωμένος πίνακας αληθείας έχει ΧΧΧ στο τμήμα της εξόδου για όλες τις τιμές που το πεδίο ALUOp έχει τιμή 11. Αυτές οι αδιάφορες τιμές μας επιτρέπουν να αντικαθιστούμε τις τιμές 10 και 01 του πεδίου ALUOp με 1Χ και Χ1 αντίστοιχα. Η προσθήκη των αδιάφορων τιμών και η ελαχιστοποίηση των κυκλωμάτων είναι πολύπλοκες διαδικασίες και πολύ εύκολα μπορούν να γίνουν λάθη, επομένως τις αφήνουμε σε κάποιο πρόγραμμα να τις εκτελέσει.