ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Υ Γιώργος Δημητρίου Μάθημα 6 ο ΠΜΣ Εφαρμοσμένη Πληροφορική
ΕΝΤΟΛΗ ΑΠΛΟΥ ΚΥΚΛΟΥ ΜΗΧΑΝΗΣ Όλες οι φάσεις του κύκλου εντολής στον ίδιο κύκλο μηχανής: Ο χρόνος από την ανάκληση μέχρι την ολοκλήρωση της εκτέλεσης (με πιθανή προσπέλαση στη μνήμη) πρέπει να χωράει σε έναν παλμό ρολογιού. Μπορούμε να έχουμε σύστημα χρονισμού με παλμούς διαφορετικού μήκους; Απλός έλεγχος με συνδυαστικό κύκλωμα.
ΑΞΙΟΛΟΓΗΣΗ - ΠΡΟΒΛΗΜΑΤΑ Το σταθερό μήκος παλμού δημιουργεί ένα μοναδικό μακρύ κύκλο μηχανής. Το μήκος παλμού θα αντιστοιχεί στο μέγιστο μήκος κύκλου εντολής. Το μέγιστο μήκος κύκλου εντολής μπορεί να αντιστοιχεί σε σπάνια εντολή. Ο απλός παλμός δεν επιτρέπει επαναχρησιμοποίηση υπομονάδων στον ίδιο κύκλο εντολής.
ΕΝΤΟΛΗ ΠΟΛΛΑΠΛΩΝ ΚΥΚΛΩΝ ΜΗΧΑΝΗΣ Διαχωρισμός του κύκλου εντολής σε ισόχρονες φάσεις. Κάθε φάση αντιστοιχείται σε διαφορετικό κύκλο μηχανής. Σε κάθε κύκλο μηχανής εκτελούνται μόνο οι συγκεκριμένες μικρολειτουργίες της αντίστοιχης φάσης. Η μονάδα ελέγχου πρέπει να ξέρει κάθε στιγμή ποια φάση εκτελείται και ποια φάση ακολουθεί.
ΚΑΤΑΣΤΑΣΕΙΣ ΚΥΚΛΟΥ ΕΝΤΟΛΗΣ Η σωστή ακολουθία φάσεων του κύκλου εντολής βρίσκεται μέσω μιας ακολουθίας καταστάσεων. Κάθε φάση του κύκλου εντολής αντιστοιχεί σε μια κατάσταση της ΜΕΔ. Ο έλεγχος του κύκλου εντολής γίνεται με τη βοήθεια ενός ακολουθιακού κυκλώματος. Πώς βρίσκουμε την επόμενη κατάσταση; Πώς μεταβαίνουμε σ αυτήν;
ΕΝΔΙΑΜΕΣΗ ΑΠΟΘΗΚΕΥΣΗ ΣΤΗ ΡΟΗ ΠΛΗΡΟΦΟΡΙΑΣ Για τη εύρεση της επόμενης κατάστασης και τη μετάβαση σ αυτήν χρειαζόμαστε το αποτέλεσμα της προηγούμενης φάσης του κύκλου εντολής. Άρα πρέπει να αποθηκεύουμε το αποτέλεσμα κάθε φάσης, για να διατηρείται από έναν κύκλο μηχανής στον επόμενο. Για παράδειγμα: η φάση ανάκλησης φέρνει την εντολή στον Καταχωρητή Εντολής (IR), ο οποίος τη διαθέτει για αποκωδικοποίηση.
ΑΛΜ ΜΟΝΑΔΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ Απλουστευμένη αρχιτεκτονική MIPS ακολουθιακής ΜΕΔ: PCWrite, PCWriteCond MUX IorD PC ΜΔΜ & Μονάδα Μνήμης MUX PCSrc MemRead MemWrite IR DR IRWrite Μονάδα Ελέγχου MUX PCtoReg MUX RegDst RegWrite Φάκελος Καταχωρητών Γενικού Σκοπού MUX MemtoReg A B MUX ALUSrcA MUX ALUSrcB ALUOp C Διακοπή
ΚΥΚΛΟΣ ΕΝΤΟΛΗΣ ΑΛΜ Ανάκληση εντολής: IR = MEM[PC] PC = PC + 1( 4) Aποκωδικοποίηση εντολής: A = REG[IR 25-21 ], B = REG[IR 20-16 ] C = PC + προέκταση(ir 15-0 ) Εκτέλεση εντολής: C = A op B Αποθήκευση αποτελέσματος: REG[IR 15-11 ] = C
ΚΥΚΛΟΣ ΕΝΤΟΛΗΣ ΜΝΗΜΗΣ Ανάκληση και αποκωδικοποίηση εντολής όπως προηγουμένως. Εκτέλεση εντολής: C = A + προέκταση (IR 15-0 ) Προσπέλαση μνήμης: Ανάγνωση: DR = MEM[C] Εγγραφή: MEM[C] = B Αποθήκευση αποτελέσματος: Ανάγνωση: REG[IR 20-16 ] = DR
ΚΥΚΛΟΣ ΕΝΤΟΛΗΣ ΑΛΜΑΤΟΣ Ανάκληση και αποκωδικοποίηση εντολής όπως προηγουμένως. Εκτέλεση εντολής: PC = PC 31-28 IR 25-0 00 (άμεσο άλμα) PC = A (έμμεσο άλμα) if (A cmp B) PC = C (άλμα με συνθήκη)
ΕΠΑΝΑΧΡΗΣΙΜΟΠΟΙΗΣΗ ΥΠΟΜΟΝΑΔΩΝ Μνήμη: Φάση ανάκλησης για ανάγνωση εντολής Φάση προσπέλασης μνήμης για ανάγνωση/εγγραφή δεδομένων ΑΛΜ: Φάση αποκωδικοποίησης για υπολογισμό προορισμού σχετικού άλματος Φάση εκτέλεσης
ΣΧΕΔΙΑΣΗ ΜΟΝΑΔΑΣ ΕΛΕΓΧΟΥ Ορισμός καταστάσεων από τις φάσεις των εντολών. Κάθε τύπος εντολής και διευθυνσιοδότησης δίνει διαφορετική ακολουθία καταστάσεων Σχεδίαση μηχανής καταστάσεων. Καθορισμός των συνθηκών διαδοχής καταστάσεων Καθορισμός των σημάτων ελέγχου για την εκτέλεση των μικρολειτουργιών Σχεδίαση του κυκλώματος ελέγχου.
ΜΗΧΑΝΗ ΚΑΤΑΣΤΑΣΕΩΝ 0 Αρχή MemRead IorD = εντολή IRWrite ALUSrcA = PC ALUSrcB = 4 ALUOp = add PCSrc = ΑΛΜ PCWrite Εντολή Μνήμης ALUSrcA = PC ALUSrcB = προ(ir 15-0 ) ALUOp = add 1 4 Φόρτωση 2 ALUSrcA = Α ALUSrcB = προ(ir 15-0 ) ALUOp = add MemRead IorD = δεδομένα RegWrite MemtoReg = 1 PCtoReg = 0 RegDst = IR 20-16 3 Αποθήκευση MemWrite IorD = δεδομένα 6 ALUSrcA = Α ALUSrcB = Β ALUOp = funct 5 Εντολή ΑΛΜ RegWrite MemtoReg = 0 RegDst = IR 15-11 7 Εντολή Άλματος με Συνθήκη 8 ALUSrcA = Α ALUSrcB = Β ALUOp = sub PCSrc=C PCWriteCond Εντολή Άμεσου Άλματος Εντολή Έμμεσου Άλματος PCSrc = A PCWrite PCSrc=PC 31-28 IR 25-0 00 PCWrite 9 10
ΜΟΝΑΔΑ ΕΛΕΓΧΟΥ Συνδυαστικό Κύκλωμα Σήματα Ελέγχου IR 31-26 Καταχωρητής Κατάστασης
ΜΙΚΡΟΠΡΟΓΡΑΜΜΑΤΙΣΜΕΝΗ ΛΟΓΙΚΗ Καλωδιωμένη λογική για πραγματικές αρχιτεκτονικές: πάνω από 100 εντολές μηχανής πολύπλοκες μέθοδοι διευθυνσιοδότησης χιλιάδες καταστάσεις Τεχνική μικροπρογραμματισμού: αντιστοίχιση ταυτόχρονων μικρολειτουργιών σε μια μικροεντολή ενεργοποίηση με εκτέλεση προγράμματος
ΣΥΝΟΛΙΚΗ ΔΟΜΗ ΜΕ μpc καταχ. εντολών (IR)
ΜΙΚΡΟΠΡΟΓΡΑΜΜΑ Μορφότυπος μικροεντολών Λέξη ελέγχου κωδικοποίηση μικρολειτουργιών Αποθήκευση μικροεντολών Μνήμη ελέγχου Εύρεση επόμενης μικροεντολής Μετρητής μικροπρογράμματος (μpc) άλματα με ή χωρίς συνθήκη
ΜΙΚΡΟΕΝΤΟΛΗ Κωδικοποίηση συνθήκης για όλες τις μικροεντολές (και όλα τα άλματα). Η λέξη ελέγχου μπορεί να έχει μήκος ίσο με το συνολικό αριθμό σημάτων ελέγχου της ΜΕΔ.
ΕΠΟΜΕΝΗ ΜΙΚΡΟΕΝΤΟΛΗ μpc = μpc + 1 Φυσιολογική ροή μικροπρογράμματος Άμεσο άλμα Συνήθως στο τέλος του κύκλου εντολής Άλμα με συνθήκη Συνθήκη από υπομονάδα της ΜΕΔ Άλμα μέσω πίνακα διευθύνσεων Η θέση στον πίνακα ορίζεται συνήθως από τον κωδικό λειτουργίας της εντολής
ΚΩΔΙΚΟΠΟΙΗΣΗ ΣΗΜΑΤΩΝ ΕΛΕΓΧΟΥ Οριζόντια μικροεντολή: κάθε bit ενεργοποιεί ένα σήμα ελέγχου Κάθετη μικροεντολή: η λέξη ελέγχου κωδικοποιεί τα σήματα ελέγχου. Μπορούμε όμως να έχουμε πολλαπλά πεδία κωδικοποίησης: Οι μικρολειτουργίες διαφορετικών πεδίων εκτελούνται ταυτόχρονα. Οι μικρολειτουργίες διαφορετικών κωδικών ενός πεδίου δεν εκτελούνται ταυτόχρονα.
ΠΑΡΑΔΕΙΓΜΑ Μικροκώδικας εντολών MIPS lw, sw, add, sub, beq, j, jr : Ετικέτα Άλμα ΑΛΜ ΑΛΜ1 ΑΛΜ2 ΦΚ ΜΕΜ PC= Fetch: seq add PC 4 readir ΑΛΜ disp add PC προ(ir) <<2 LW: seq add A προ(ir) seq readdr j Fetch writedr SW: seq add A προ(ir) j Fetch write REGΑΛΜ: seq funct Α Β j Fetch writec BEQ: j Fetch sub A B C(Z==1) J: j Fetch (PC IR) <<2 JR: j Fetch A όπου REGΑΛΜ R-type, συμπεριλαμβανομένων των add και sub, με τη λειτουργία να προσδιορίζεται από τον κωδικό τελεστή (συμβολικά: funct ). Ο μικροκώδικας υποθέτει ότι ο PC περιέχει διευθύνσεις σε επίπεδο byte.
ΓΕΝΙΚΕΣ ΠΑΡΑΤΗΡΗΣΕΙΣ 80x86: Συνδυασμός καλωδιωμένης και μικροπρογραμματισμένης λογικής Η μικροπρογραμματισμένη λογική εφαρμόζεται σε πολύπλοκες εντολές και απλοποιεί έτσι τον έλεγχό τους Οι απλές εντολές εκτελούνται πιο γρήγορα Εξομοίωση γλωσσών μηχανής μέσω μικροπρογραμματισμού Ευελιξία προγραμματισμού, όμως χρειαζόμαστε και κώδικα συστήματος