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

Η δίοδος δεδομένων και η μονάδα ελέγχου της εφαρμογής πολλών κύκλων

Στην υποενότητα αυτή θα αναφερθούμε στην υλοποίηση της διόδου δεδομένων και της μονάδας ελέγχου του υπολογιστή MIPS, όταν η εκτέλεση των εντολών χρειάζεται πολλούς κύκλους ρολογιού για να ολοκληρωθεί. Αρχικά θα τροποποιήσουμε κατάλληλα τη δίοδο δεδομένων και τα σήματα ελέγχου, έτσι ώστε να ανταποκρίνονται στην εφαρμογή πολλών κύκλων. Στη συνέχεια θα εξηγήσουμε τον τρόπο με τον οποίο χωρίζονται οι εντολές σε πολλούς κύκλους ρολογιού. Τέλος θα κατασκευάσουμε τη μονάδα ελέγχου χρησιμοποιώντας τις μηχανές πεπερασμένων καταστάσεων.


Η υλοποίηση πολλών κύκλων

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


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

Μπορείτε να αναφέρετε τους λόγους για τους οποίους η εφαρμογή πολλών κύκλων υπερέχει της εφαρμογής του ενός κύκλου;

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


Το σχήμα 3.2.28 απεικονίζει ένα τμήμα της διόδου δεδομένων της υλοποίησης πολλών κύκλων.

Σχήμα 3.2.28 - Ένα τμήμα της διόδου δεδομένων της εφαρμογής πολλών κύκλων. Στο σχήμα φαίνονται: η μονάδα μνήμης, και η ALU της οποίας διαμοιράζονται οι εντολές και οι δίοδοι δεδομένων οι οποίες συνδέουν τις διαμοιραζόμενες αυτές μονάδες.


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

Να συγκρίνετε το σχήμα 3.2.28 με το σχήμα 3.2.14. Ποιες διαφορές παρατηρείτε σε αυτά τα δύο σχήματα;

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


    Επειδή οι διάφορες λειτουργικές μονάδες διαμοιράζονται για διαφορετικούς λόγους, χρειάζεται να προσθέτουμε πολυπλέκτες και να επεκτείνουμε τους πολυπλέκτες που ήδη υπάρχουν. Αφού η μνήμη χρησιμοποιείται για τις εντολές και τα δεδομένα, για την διεύθυνση της μνήμης χρειαζόμαστε ένα πολυπλέκτη, για να επιλέγει ανάμεσα στον απαριθμητή προγράμματος (για την προσπέλαση των εντολών) και στο αποτέλεσμα της ALU (για την προσπέλαση των δεδομένων).
    Για τον διαμοιρασμό της ALU απαιτείται η εισαγωγή ενός πολυπλέκτη στην πρώτη είσοδο της ALU, η οποία μπορεί να είναι είτε ένας καταχωρητής, είτε ο απαριθμητής προγράμματος. Επίσης χρειάζεται μια τροποποίηση στον πολυπλέκτη στην δεύτερη είσοδο της ALU, έτσι ώστε από δύο να έχει τέσσερις εισόδους. Για την μετατροπή του πολυπλέκτη χρειάζονται δύο επιπλέον είσοδοι: η σταθερά 4 (που χρησιμοποιείται στην αύξηση του απαριθμητή προγράμματος) και το πεδίο offset μετά από επέκταση προσήμου και ολίσθηση (που χρησιμοποιείται στον υπολογισμό του στόχου διακλάδωσης).
    Το σχήμα 3.2.29 απεικονίζει τη δίοδο δεδομένων με τους επιπλέον πολυπλέκτες. Με την είσοδο ενός καταχωρητή και τριών πολυπλεκτών, μπορούμε να μειώσουμε τις μονάδες μνήμης από δύο σε μία και να αφαιρέσουμε δύο αθροιστές. Αφού οι καταχωρητές και οι πολυπλέκτες είναι μικρά κυκλώματα, αυτό μπορεί να αποφέρει σημαντική μείωση στο κόστος κατασκευής.

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


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

Να συμπληρώσετε τις γραμμές ελέγχου στο σχήμα 3.2.29 της διόδου δεδομένων του υπολογιστή MIPS. Να συγκρίνετε το σχήμα που σχεδιάσατε με αυτό που ακολουθεί (σχήμα 3.2.30).
(Υπόδειξη: Τα σήματα ελέγχου είναι: MemRead, MemWrite, ALUSrcA, RegDst, RegWrite, MemtoReg, IorD, IRWrite, ALUSrcB και ALUOp.)

Επειδή η δίοδος δεδομένων του σχήματος 3.2.29 χρειάζεται πολλούς κύκλους ρολογιού ανά εντολή, πρέπει τα σήματα ελέγχου να ενεργοποιούνται με διαφορετικό τρόπο. Θα χρειαστούμε ένα σήμα εγγραφής για κάθε στοιχείο μνήμης: τη μνήμη, τον απαριθμητή προγράμματος, τους καταχωρητές γενικής χρήσης και τον καταχωρητή εντολών, καθώς και ένα σήμα ανάγνωσης (για τη μνήμη). Μπορούμε να χρησιμοποιήσουμε τη μονάδα ελέγχου της ALU από προηγούμενα παραδείγματα (στα σχήματα 3.2.17 και 3.2.18), για τον έλεγχο της ALU. Τέλος καθένας από τους πολυπλέκτες με τις δύο εισόδους χρειάζεται μία γραμμή ελέγχου και οι πολυπλέκτες με τις τέσσερις γραμμές ελέγχου, χρειάζονται δύο γραμμές ελέγχου. Το σχήμα 3.2.30 απεικονίζει τη δίοδο δεδομένων του σχήματος 3.2.29 μαζί με τις γραμμές ελέγχου.

Σχήμα 3.2.30 - Η δίοδος δεδομένων της εφαρμογής πολλών κύκλων με τις γραμμές ελέγχου. Τα σήματα ALUOp και ALUSrcB είναι σήματα ελέγχου των δύο bits, ενώ όλες οι άλλες γραμμές ελέγχου είναι σήματα του ενός bit. Το σήμα MemRead έχει μεταφερθεί στην κορυφή της μονάδας μνήμης για απλοποίηση του σχήματος.


Πριν εξετάσουμε τα βήματα για την εκτέλεση κάθε εντολής, είναι χρήσιμο να δούμε την επίδραση των σημάτων ελέγχου που έχουν προστεθεί, όταν αυτά είναι ή δεν είναι ενεργά (όπως ακριβώς κάναμε και στην εφαρμογή ενός κύκλου στο σχήμα 3.2.21). Αυτό φαίνεται στο σχήμα 3.2.31. Τα σήματα ελέγχου του ενός bit φαίνονται στον πίνακα a του σχήματος, ενώ τα σήματα ελέγχου ALUSrcB και ALUOp των δύο bits φαίνονται στον πίνακα b του σχήματος.

Σήμα ελέγχου Επίδραση όταν
δεν είναι ενεργά
Επίδραση όταν
είναι ενεργά
ΜemRead
Τίποτα
Το περιεχόμενο της μνήμης που βρίσκεται στην διεύθυνση που έχει δοθεί για ανάγνωση, τοποθετείται στην έξοδο ανάγνωσης δεδομένων.
MemWrite
Τίποτα
Το περιεχόμενο της μνήμης που βρίσκεται στην διεύθυνση που έχει δοθεί για εγγραφή, αντικαθίσταται από την τιμή που βρίσκεται στην είσοδο εγγραφής των δεδομένων.
ALUSrcA
Ο πρώτος τελεστέος της ALU είναι ο απαριθμητής προγράμματος. Ο πρώτος τελεστέος της ALU προέρχεται από τον καταχωρητή που δίνεται από το πεδίο rs.
RegDst
Ο αριθμός του καταχωρητή προορισμού στον οποίο θα γίνει η εγγραφή προέρχεται από το πεδίο rt. Ο αριθμός του καταχωρητή προορισμού στον οποίο θα γίνει εγγραφή προέρχεται από το πεδίο rd.
RegWrite
Τίποτα
Στον καταχωρητή που προσδιορίζεται από την τιμή που έχει δοθεί στην είσοδο εγγραφή καταχωρητή, εγγράφεται η τιμή που έχει δοθεί στην είσοδο εγγραφής δεδομένων.
MemtoReg
Η τιμή που δίνεται στην είσοδο εγγραφή καταχωρητή προέρχεται από την ALU. Η τιμή που δίνεται στην είσοδο εγγραφή καταχωρητή προέρχεται από την μνήμη δεδομένων.
IorD
Ο απαριθμητής προγράμματος χρησιμοποιείται για να δώσει την διεύθυνση στην μονάδα μνήμης. Η έξοδος της ALU χρησιμοποιείται για να δώσει την διεύθυνση στην μονάδα μνήμης.
IRWrite
Τίποτα
Η τιμή από την μονάδα μνήμης γράφεται στον καταχωρητή εντολών (Instruction Register-IR).

a. Τα αποτελέσματα των σημάτων ελέγχου του ενός bit.

Σήμα ελέγχου Τιμή σήματος Αποτέλεσμα
ALUSrcB
00
Η δεύτερη είσοδος της ALU προέρχεται από τον καταχωρητή που δίνεται από το πεδίο rt.
01
Η δεύτερη είσοδος της ALU είναι η σταθερά 4.
10
Η δεύτερη είσοδος της ALU είναι τα 16 λιγότερο σημαντικά ψηφία του καταχωρητή εντολών, μετά από επέκταση προσήμου.
11
Η δεύτερη είσοδος της ALU είναι τα 16 λιγότερο σημαντικά ψηφία του καταχωρητή εντολών, μετά από επέκταση προσήμου και ολίσθηση.
ALUOp
00
Η ALU εκτελεί μία πρόσθεση.
01
Η ALU εκτελεί μία αφαίρεση.
10
Το πεδίο function της εντολής καθορίζει την λειτουργία της ALU.

b. Τα αποτελέσματα των σημάτων ελέγχου των δύο bits.

Σχήμα 3.2.31. Τα αποτελέσματα από την ενεργοποίηση του κάθε σήματος ελέγχου. Μόνο οι γραμμές ελέγχου που επηρεάζουν τους πολυπλέκτες επιτελούν κάποια λειτουργία όταν είναι 0. Το παραπάνω σχήμα είναι παρόμοιο με το σχήμα 3.2.21, με τη διαφορά ότι έχουν προστεθεί οι καινούριες γραμμές ελέγχου (ALUSrcA, IorD, IRWrite, και ALUSrcB) και έχουν αφαιρεθεί οι γραμμές ελέγχου που δεν χρησιμοποιούνται πια, ή έχουν αντικατασταθεί (για τις εντολές μεταπήδησης, διακλάδωσης και το ALUSrc).

Για την μείωση του αριθμού των γραμμών ελέγχου που συνδέονται στις λειτουργικές μονάδες, οι σχεδιαστές χρησιμοποιούν διαμοιραζόμενες αρτηρίες. Μια διαμοιραζόμενη αρτηρία είναι μια συλλογή γραμμών οι οποίες συνδέουν πολλές μονάδες μεταξύ τους. Στις περισσότερες περιπτώσεις, περιλαμβάνουν πολλές πηγές οι οποίες τοποθετούν τα δεδομένα στην αρτηρία και μπορούν να διαβαστούν από πολλές λειτουργικές μονάδες. Έτσι, όπως μειώσαμε τις λειτουργικές μονάδες της διόδου δεδομένων, μπορούμε να μειώσουμε των αριθμό των αρτηριών που συνδέονται στις μονάδες, χρησιμοποιώντας διαμοιρασμό των αρτηριών. Για παράδειγμα, εάν υπάρχουν πέντε πηγές προς την είσοδο της ALU, μόνο δύο από αυτές χρειάζονται ανά πάσα στιγμή. Επομένως ένα ζευγάρι αρτηριών μπορεί να χρησιμοποιηθεί για να κρατάει τις τιμές που στέλνονται στην ALU. Αντί να τοποθετήσει έναν μεγάλο πολυπλέκτη στην είσοδο της ALU, ο σχεδιαστής μπορεί να χρησιμοποιήσει μια διαμοιραζόμενη αρτηρία και μετά να εξασφαλίσει ότι μόνο μία από τις πηγές χρησιμοποιεί την αρτηρία.

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

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