Πίσω


3. Βήμα εκτέλεσης της εντολής, υπολογισμού της διεύθυνσης μνήμης ή ολοκλήρωσης της εντολής διακλάδωσης

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

Παρακάτω καθορίζονται οι λειτουργίες που γίνονται ανάλογα με τον τύπο της κάθε εντολής :

Αναφορά στη μνήμη:

ALUoutpu = A + sign-extend (IR[15-0]);

Λειτουργία:Η ALU προσθέτει τους τελεστέους για να σχηματιστεί η διεύθυνση μνήμης. Αυτό απαιτεί το σήμα ALUSrcA να είναι 1, οπότε χρησιμοποιείται η πρώτη έξοδος του αρχείου καταχωρητών σαν πρώτη είσοδος της ALU. Επίσης πρέπει το σήμα ALUSrcB να είναι 10, οπότε χρησιμοποιείται η μονάδα επέκτασης προσήμου σαν τη δεύτερη είσοδο της ALU. Το σήμα ALUOp πρέπει να είναι 00, έτσι ώστε η ALU να εκτελέσει πρόσθεση.


Αριθμητικές και λογικές εντολές (τύπου R):

ALUoutput = A op B ;

Λειτουργία:Η ALU εκτελεί τη λειτουργία που προσδιορίστηκε από τον κωδικό λειτουργίας, στους δύο καταχωρητές που έγινε ανάγνωση στον προηγούμενο κύκλο ρολογιού. Αυτό απαιτεί το σήμα ALUSrcA να είναι 1, και το σήμα ALUSrcB να είναι 00. Με αυτή την ενεργοποίηση των σημάτων, οι έξοδοι του αρχείου καταχωρητών χρησιμοποιούνται σαν είσοδοι της ALU. Το σήμα ALUOp πρέπει να είναι 10, έτσι ώστε ο κωδικός λειτουργίας να καθορίζει την ενεργοποίηση του κατάλληλου σήματος ελέγχου της ALU.


Εντολές διακλάδωσης με συνθήκη:

if (A = = B) PC = Target ;

Λειτουργία:Η ALU συγκρίνει τα περιεχόμενα των δύο καταχωρητών (εάν είναι ίσα), στους οποίους έγινε ανάγνωση στο προηγούμενο βήμα. Η έξοδος του σήματος 0 της ALU καθορίζει πότε θα εκτελεστεί ή όχι η εντολή διακλάδωσης με συνθήκη. Αυτό απαιτεί το σήμα ALUSrcA να είναι 1 και το σήμα ALUSrcB να είναι 00, όπως ακριβώς στις εντολές τύπου R. Τα σήματα ALUOp πρέπει να είναι 01, έτσι ώστε να εκτελείται αφαίρεση, η οποία χρησιμοποιείται για τον έλεγχο της ισότητας. Επίσης χρειάζεται να ενεργοποιηθεί ένα σήμα ελέγχου εγγραφής για την ενημέρωση του απαριθμητή προγράμματος, αν η έξοδος 0 της ALU είναι ενεργοποιημένη. Αυτό θα καθοριστεί αργότερα, όταν προσθέσουμε την μονάδα ελέγχου του απαριθμητή προγράμματος.