Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
1
Μέρος Β – Μονάδες Επεξεργαστή
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΥΛΙΚΟ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ενότητα 6 Γλώσσα Περιγραφής Υλικού VHDL Μέρος Β – Μονάδες Επεξεργαστή Καθηγητής Αντώνης Πασχάλης 2018
2
Γενικές Γραμμές Αριθμητική και Λογική Μονάδα Μονάδα Ελέγχου
3
Arithmetic Logic Unit (ALU)
Case Study 1 MIPS R2000 Arithmetic Logic Unit (ALU)
5
Case Study: Arithmetic Logic Unit ALU (I)
shamt 5 Bus_A Zero,Ne,Ov 32 ALU 32 Bus_S Bus_B 32 4 sv ALUop Bus_A, Bus_B, Bus_S : οι 2 είσοδοι και η έξοδος της ALU μεγέθους 32 ψηφίων shamt : η αρτηρία μεγέθους 5 ψηφίων που προσδιορίζει το σταθερό αριθμό ολισθήσεων ALUop : το σήμα ελέγχου μεγέθους 4 ψηφίων που επιλέγει την πράξη sv : το σήμα ελέγχου που μας πληροφορεί ότι ο αριθμός των ολισθήσεων είναι μεταβλητή Zero : το σήμα κατάστασης που μας πληροφορεί ότι η έξοδος της ALU (Bus_S) είναι 0 Ne : το σήμα κατάστασης που μας πληροφορεί ότι η έξοδος της ALU (Bus_S) είναι < 0 Ov : το σήμα κατάστασης που μας πληροφορεί ότι προέκυψε υπερχείλιση στην ADDSUB)
6
Case Study: Arithmetic Logic Unit ALU (II)
shamt Bus_A[4:0] Bus_A Bus_B Bus_A Bus_B Bus_B mux x 5 sv 32 Ne (MSB) 32 32 32 32 shamt_in 5 SHIFTER SLTUNT ADDSUB LOGICU 2 ALUop[1:0] Sh_out SLT_out A_out L_out MULTIPLEXER 4 to 1 2 Ov ALUop[3:2] x 32 Mux_out 32 Ne (MSB) ORtree Zero Bus_S
7
Case Study: Arithmetic Logic Unit ALU (III)
ALUop[1] = 0: left ALUop[1] = 1: right ALUop[0] = 0: logic ALUop[0] = 1: arithmetic ALUop[3:2] = 00 SHIFTER SLTUNT ALUop[3:2] = 01 ALUop[1] = 0: ADD ALUop[1] = 1: SUB ALUop[0] = 0: signed ALUop[0] = 1: unsigned ADDSUB ALUop[3:2] = 10 ALUop[1:0] = 00: AND ALUop[1:0] = 01: OR ALUop[1:0] = 10: XOR ALUop[1:0] = 11: NOR LOGICU ALUop[3:2] = 11 MUX4to1
9
Case Study: Arithmetic Logic Unit ALU (IV)
10
Case Study: Arithmetic Logic Unit ALU (V)
11
Case Study: Arithmetic Logic Unit ALU (VI)
12
Case Study: Arithmetic Logic Unit ALU (VII)
13
Case Study: Arithmetic Logic Unit ALU (VIII)
14
Case Study: Arithmetic Logic Unit ALU (IX)
1st Design 2 Αθροιστές και 2 Αφαιρέτες 5 32-bit MUX4to1 (SHIFTER, ADDSUB, SLTUNT, LOGICU, MUX4to1) 1-bit Mux4to1 για το σήμα ov 3 Barrel Shifters (LL, LR, AR) 1-bit XOR για το σήμα ov 32-bit XOR (LOGICU) Post-PAR Static Timing Report Max delay: Bus_A(0)-Zero = ns (sv-Zero = ns)
15
Case Study: Arithmetic Logic Unit ALU (X)
2nd Design
16
Case Study: Arithmetic Logic Unit ALU (XI)
2nd Design Μόνο ένας Αθροιστής-Αφαιρέτης 3 32-bit MUX4to1 (SHIFTER, LOGICU, MUX4to1) 3 Barrel Shifters (LL, LR, AR) 1-bit XOR για το σήμα ov 32-bit XOR (LOGICU) Post-PAR Static Timing Report Max delay: Bus_A(0)-Zero = ns (sv-Zero = ns) 1st Design 2nd Design Μεγαλύτερο Fanout Μεγαλύτερο Delay
17
ALU Behavioral Simulations SHIFTER
Reset SLLV SLL SRL/SRA
18
ALU Behavioral Simulations SLTUNT
SLT (signed) SLTU (unsigned)
19
ALU Behavioral Simulations ADDSUB (I)
ADD (signed)
20
ALU Behavioral Simulations ADDSUB (II)
ADD (unsigned)
21
ALU Behavioral Simulations ADDSUB (III)
SUB (signed)
22
ALU Behavioral Simulations ADDSUB (IV)
SUB (unsigned)
23
ALU Behavioral Simulations LOGICU (I)
AND
24
ALU Behavioral Simulations LOGICU (II)
25
ALU Behavioral Simulations LOGICU (III)
XOR
26
ALU Behavioral Simulations LOGICU (IV)
NOR
27
ALU Post-Route Simulations ADDSUB (I) Behavioral vs Post-Route
ADD (signed)
28
ALU Post-Route Simulations ADDSUB (I) 1st Design vs 2nd Design
29
Βελτίωση Συχνότητας Λειτουργίας
Το σήμα Zero δεν χρησιμοποιείται στις εντολές ολίσθησης
30
Βελτίωση Συχνότητας Λειτουργίας
shamt Bus_A[4:0] Bus_A Bus_B Bus_A Bus_B Bus_B mux x 5 sv 32 Ne (MSB) 32 32 32 32 shamt_in 5 SHIFTER SLTUNT ADDSUB LOGICU 2 ALUop[1:0] Sh_out SLT_out A_out L_out MULTIPLEXER 4 to 1 Ov 2 ALUop[3:2] x 32 Ne (MSB) ORtree Mux_out 32 Bus_S Zero
31
Βελτίωση Συχνότητας Λειτουργίας
3rd Design
32
Βελτίωση Συχνότητας Λειτουργίας
3rd Design 2nd Design
33
Βελτίωση Συχνότητας Λειτουργίας 3rd Design vs 2nd Design (SLLV)
Μέγιστη καθυστέρηση διάδοσης περίπου 17.2ns αντί για >20ns 3rd 2nd
34
Βελτίωση Συχνότητας Λειτουργίας 3rd Design vs 2nd Design (ADD signed)
Περίπου 3ns λιγότερη καθυστέρηση διάδοσης σε κάποιες περιπτώσεις 3rd 2nd
35
Case Study 2 MIPS R2000 Control Unit (CU)
37
Μονάδα Ελέγχου του MIPS R2000
Για δίοδο δεδομένων πολλών κύκλων, χωρίς να υποστηρίζει παραλληλία σε επίπεδο εκτέλεσης εντολής, η μονάδα ελέγχου : Αποκωδικοποιεί την εντολή που θα εκτελεσθεί με βάση το πεδίο κωδικού λειτουργίας (opcode) της εντολής και το πεδίο λειτουργίας (funct) μόνο για τις εντολές τύπου R Βάζει κατάλληλες τιμές στα αντίστοιχα σήματα ελέγχου, ώστε, για κάθε εντολή, να εκτελούνται παράλληλα μία ή περισσότερες μικρο-λειτουργίες σε κάθε κύκλο ρολογιού Παράγει δύο ειδών σημάτων ελέγχου, που ταξινομούνται σε δύο κατηγορίες Α και Β, αντίστοιχα
38
Ταξινόμηση των Σημάτων Ελέγχου
Κατηγορία Α: Σήματα ελέγχου που έχουν σταθερή τιμή σε όλους τους κύκλους κατά την εκτέλεση της εντολής Τα σήματα αυτά προσδιορίζουν τη μικρο-λειτουργία που θα εκτελέσουν οι λειτουργικές μονάδες της διόδου δεδομένων κατά την εκτέλεση της εντολής (για παράδειγμα, το σήμα ALUop της ALU), καθώς και τη ροή των δεδομένων μέσα στη δίοδο δεδομένων (για παράδειγμα όλα τα σήματα επιλογής των πολυπλεκτών). Τα σήματα αυτά παράγονται με συνδυαστική λογική και παίρνουν σταθερές τιμές 0, 1 ή '-' κατά την εκτέλεση μίας εντολής. Κατηγορία Β: Σήματα ελέγχου που πρέπει να έχουν την τιμή 1 μόνο σε ένα συγκεκριμένο κύκλο κατά την εκτέλεση της εντολής (για θετική λογική) Τα σήματα αυτά επιτρέπουν την εγγραφή, (σήματα write enable) στους καταχωρητές και στις μνήμες του επεξεργαστή Τα σήματα αυτά παράγονται με ακολουθιακή λογική και παίρνουν αποκλειστικά τις τιμές 1 ή 0 που μεταβάλλονται ανάλογα με τον κύκλο ρολογιού κατά την εκτέλεση μίας εντολής.
39
Μηχανή Καταστάσεων Τύπου Moore Υλοποίηση Μονάδας Ελέγχου
επόμενη κατάσταση = F(παρούσα κατάσταση, είσοδος) έξοδος = G(παρούσα κατάσταση) InR, : input pipeline register για συγχρονισμό εισόδων και καταστάσεων (προαιρετικό) Λογική Εξόδου G Έξοδοι: σήματα ελέγχου CLK Είσοδοι: opcode, F, σήματα καταστάσεων ΙnR Λογική Επόμενης Κατάστασης F reset επόμενη κατάσταση Q(t+1) SR παρούσα κατάσταση Q(t) CLK
40
Μηχανή Καταστάσεων Τύπου Moore Υλοποίηση Μονάδας Ελέγχου
Οι είσοδοι, που συνήθως είναι το πεδίο κωδικού λειτουργίας (opcode) και το πεδίο λειτουργίας (F), (μόνο για τις εντολές τύπου R), της εντολής καθώς και σήματα καταστάσεων (προαιρετικά) αποθηκεύονται στον καταχωρητή εισόδων (Input Register - InR) Οι έξοδοι, που είναι τα σήματα ελέγχου της μονάδας ελέγχου, συγχρονίζουν την παράλληλη εκτέλεση των μικρο-λειτουργιών σε μία μικρο-εντολή Σε κάθε κατάσταση αντιστοιχεί αποκλειστικά ένας συνδυασμός τιμών των σημάτων ελέγχου (των εξόδων) της μονάδας ελέγχου που απαιτείται για την εκτέλεση μίας συγκεκριμένης μικρο-εντολής Λογική Επόμενης Κατάστασης: προσδιορίζει την επόμενη κατάσταση NS της μηχανής, που αποθηκεύεται στον καταχωρητή καταστάσεων SR, σαν συνάρτηση της τρέχουσας κατάστασης CS και των εισόδων InR Λογική Εξόδου: προσδιορίζει τις εξόδους της μηχανής (δηλ. τα σήματα ελέγχου) σαν συναρτήσεις αποκλειστικά της τρέχουσας κατάστασης CS
41
Μηχανή Καταστάσεων Τύπου Mealy Υλοποίηση Μονάδας Ελέγχου
επόμενη κατάσταση = F(παρούσα κατάσταση, είσοδος) έξοδος = G(παρούσα κατάσταση, είσοδος) InR, : input pipeline register για συγχρονισμό εισόδων και καταστάσεων (προαιρετικό) Λογική Εξόδου G Έξοδοι: σήματα ελέγχου CLK Είσοδοι: opcode, F, σήματα καταστάσεων ΙnR Λογική Επόμενης Κατάστασης F reset επόμενη κατάσταση Q(t+1) SR παρούσα κατάσταση Q(t) CLK
42
Μηχανή Καταστάσεων Τύπου Mealy Υλοποίηση Μονάδας Ελέγχου
Οι είσοδοι αποθηκεύονται στον καταχωρητή εισόδων (Input Register - InR), όπως και στις μηχανές καταστάσεων τύπου Moore Οι έξοδοι είναι τα σήματα ελέγχου της μονάδας ελέγχου Σε κάθε κατάσταση αντιστοιχούν συγκεκριμένοι συνδυασμοί τιμών των σημάτων ελέγχου (των εξόδων) της μονάδας ελέγχου που απαιτούνται για την εκτέλεση παρόμοιων μικρο-εντολών Σε κάθε κατάσταση οι συγκεκριμένοι συνδυασμοί τιμών των σημάτων ελέγχου διαφοροποιούνται σε πολύ λίγα σήματα ελέγχου Τα διαφοροποιούμενα σήματα ελέγχου εξαρτώνται από την τρέχουσα κατάσταση CS και από τις εισόδους IR, (σήματα τύπου Mealy) Τα μη διαφοροποιούμενα σήματα ελέγχου εξαρτώνται αποκλειστικά από την τρέχουσα κατάσταση CS, (σήματα τύπου Moore) Λογική Επόμενης Κατάστασης: προσδιορίζει την επόμενη κατάσταση NS της μηχανής, που αποθηκεύεται στον καταχωρητή καταστάσεων SR, σαν συνάρτηση της τρέχουσας κατάστασης CS και των εισόδων InR Λογική Εξόδου: προσδιορίζει τις εξόδους της μηχανής (δηλ. τα σήματα ελέγχου) σαν συναρτήσεις της τρέχουσας κατάστασης CS και των εισόδων InR (μόνο για τα σήματα τύπου Mealy)
43
Σύγκριση Μηχανών Πεπερασμένων Καταστάσεων Τύπου Moore και Mealy
Η μηχανή πεπερασμένων καταστάσεων τύπου Mealy είναι πιο γενική από τη μηχανή τύπου Moore Οι μηχανές πεπερασμένων καταστάσεων τύπου Mealy έχουν λιγότερες καταστάσεις και συνήθως πλεονεκτούν σε ταχύτητα και μέγεθος της λογικής επόμενης κατάστασης Οι μηχανές πεπερασμένων καταστάσεων τύπου Moore συνήθως πλεονεκτούν σε ταχύτητα και μέγεθος της λογικής εξόδου Μία μηχανή πεπερασμένων καταστάσεων μπορεί να έχει εξόδους και των δύο τύπων Η απόδοση και το κόστος της μηχανής εξαρτάται από: Το πλήθος των καταστάσεων (περισσότερες στη μηχανή τύπου Moore) Την πολυπλοκότητα των διακλαδώσεων ανά κατάσταση (μεγαλύτερη στη μηχανή τύπου Mealy) Την κωδικοποίηση των καταστάσεων Το μέγεθος του καταχωρητή καταστάσεων Το πλήθος των ψηφίων που αλλάζουν τιμή από κατάσταση σε κατάσταση
45
Διαδικασία Σχεδίασης Μονάδας Ελέγχου σαν Σύγχρονη Ακολουθιακή Μηχανή
Για κάθε εντολή προσδιορίζουμε τις αντίστοιχες μικρο-λειτουργίες που εκτελούνται σε κάθε φάση (ή κύκλο) εκτέλεσης της εντολής Συνεπώς για κάθε εντολή: Προσδιορίζουμε τις τιμές στην είσοδο της μονάδας ελέγχου (opcode, funct), που αντιστοιχούν στη συγκεκριμένη εντολή Προσδιορίζουμε τις τιμές των σημάτων ελέγχου σε κάθε φάση (ή κύκλο) εκτέλεσης της εντολής Ταξινομούμε τα σήματα ελέγχου ανάλογα με τη διάρκεια των τιμών τους κατά την εκτέλεση της εντολής στις δύο κατηγορίες Α και Β Για την παραγωγή των σημάτων της κατηγορίας Α υλοποιούμε συνδυαστική λογική Για την παραγωγή των σημάτων της κατηγορίας Β υλοποιούμε ακολουθιακή λογική (Σύγχρονη Ακολουθιακή Μηχανή) Για την υλοποίηση της Σύγχρονης Ακολουθιακής Μηχανής Προσδιορίζουμε τις διακριτές καταστάσεις Προσδιορίζουμε τις μεταβάσεις ανάμεσα στις διακριτές καταστάσεις με τις αντίστοιχες συνθήκες εισόδου, εάν υπάρχουν
46
Διαδικασία Σχεδίασης Μονάδας Ελέγχου σαν Σύγχρονη Ακολουθιακή Μηχανή
Για κάθε διακριτή κατάσταση προσδιορίζουμε τις τιμές των σημάτων ελέγχου της Κατηγορίας Β που εξαρτώνται από την τρέχουσα κατάσταση και την αντίστοιχη συνθήκη εισόδου (έξοδοι τύπου Mealy) που εξαρτώνται από την τρέχουσα κατάσταση αποκλειστικά (έξοδοι τύπου Moore) Τέλος, σχεδιάζουμε το διάγραμμα καταστάσεων
47
Διάγραμμα Καταστάσεων (Ι)
1. Α Το διάγραμμα καταστάσεων απαρτίζεται από: Κύκλους που προσδιορίζουν την παρούσα κατάσταση Α Βέλη που προσδιορίζουν τη μετάβαση από την παρούσα κατάσταση Α στην επόμενη κατάσταση Β Οι μεταβάσεις μπορεί να γίνονται χωρίς συνθήκη ή με συνθήκη στην είσοδο Όταν υπάρχει μετάβαση με συνθήκη στην είσοδο, οι τιμές των εισόδων που ικανοποιούν τη συνθήκη γράφονται δίπλα στο βέλος Παραδείγματα: Όταν η επόμενη κατάσταση είναι ίδια με την παρούσα κατάσταση χωρίς συνθήκη εισόδου Όταν η επόμενη κατάσταση είναι ίδια με την παρούσα κατάσταση με συνθήκη εισόδου (π.χ. ΕΝ=0) Όταν η επόμενη κατάσταση είναι διαφορετική από την παρούσα κατάσταση χωρίς συνθήκη εισόδου Όταν η επόμενη κατάσταση είναι διαφορετική από την παρούσα κατάσταση με συνθήκη εισόδου (π.χ. ΕΝ=1) ΕΝ=0 2. Α 3. Α Β 4. Α ΕΝ=1 Β
48
Διάγραμμα Καταστάσεων (ΙΙ)
Το διάγραμμα καταστάσεων απαρτίζεται από: Πλαίσια εντός των οποίων γράφονται οι τιμές των σημάτων στην έξοδο, που εξαρτώνται αποκλειστικά από την παρούσα κατάσταση (έξοδοι τύπου Moore). Τα πλαίσια αυτά συνδέονται με τον κύκλο της αντίστοιχης παρούσας κατάστασης. Πλαίσια εντός των οποίων γράφονται οι τιμές των σημάτων στην έξοδο, που εξαρτώνται από την παρούσα κατάσταση και την αντίστοιχη συνθήκη εισόδου (έξοδοι τύπου Mealy). Τα πλαίσια αυτά συνδέονται με το αντίστοιχο βέλος, δίπλα στις τιμές των εισόδων που ικανοποιούν τη συνθήκη Παραδείγματα: Η έξοδος Χ λαμβάνει την τιμή 1 στην παρούσα κατάσταση Α (έξοδος τύπου Moore) Η έξοδος Υ λαμβάνει την τιμή 1 στην παρούσα κατάσταση Α, όταν η είσοδος ΕΝ είναι 1 (ΕΝ=1) (έξοδος τύπου Mealy) 1. 2. Α Α Χ=1 ΕΝ=1 ΕΝ=1 Β Β Υ=1
49
Προσδιορισμός Διακριτών Καταστάσεων
Κάθε κύκλος (ή φάση) εκτέλεσης μίας εντολής αντιστοιχεί σε μία διακριτή κατάσταση της μονάδας ελέγχου Προσδιορίζουμε τις εισόδους, τις εξόδους, και τις διακριτές καταστάσεις Δύο παρούσες καταστάσεις χαρακτηρίζονται σαν διακριτές μεταξύ τους, εάν : Τουλάχιστον ένα από τα σήματα στην έξοδο, που εξαρτάται αποκλειστικά από την παρούσα κατάσταση, έχει διαφορετική τιμή (παράδειγμα 1), ή/και Έχουν διαφορετική επόμενη κατάσταση που είναι ανεξάρτητη από τις εισόδους (παράδειγμα 2) Οι μη διακριτές καταστάσεις ενοποιούνται σε μία κατάσταση, ώστε να προκύψει ελαχιστοποίηση των καταστάσεων και κατά συνέπεια μείωση του κόστους υλοποίησης 1. 2. Α Α C Χ=1 Χ=1 Χ=1 Β Χ Y Χ=0
50
Προσδιορισμός Διακριτών Καταστάσεων
Η επιλογή λιγότερων διακριτών καταστάσεων που σχετίζονται με σήματα ελέγχου στην έξοδο, που εξαρτώνται από την τρέχουσα κατάσταση και την αντίστοιχη συνθήκη εισόδου (έξοδοι τύπου Mealy), οδηγεί σε ακολουθιακές μηχανές τύπου Mealy που πλεονεκτούν σε ταχύτητα και μέγεθος της λογικής επόμενης κατάστασης Η επιλογή περισσοτέρων διακριτών καταστάσεων έτσι, ώστε οι τιμές των σημάτων ελέγχου στην έξοδο να εξαρτώνται αποκλειστικά από την τρέχουσα κατάσταση (έξοδοι τύπου Moore), οδηγεί σε ακολουθιακές μηχανές τύπου Moore που πλεονεκτούν σε ταχύτητα και μέγεθος της λογικής εξόδου
51
Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Ρεπερτόριο Εντολών Τύπου Immediate
LW rt, immediate(rs) SW rt, immediate(rs) ADDIU rt, rs, immediate ANDI rt, rs, immediate ORI rt, rs, immediate XORI rt, rs, immediate opcode rs rt immediate - offset 26 21 16 = 32 Bits 31 16 Bits 5 Bits 6 Bits
52
Υλοποίηση Απλού Επεξεργαστή Σήματα Ελέγχου Κατηγορίας Α
Υλοποίηση Απλού Επεξεργαστή Σήματα Ελέγχου Κατηγορίας Α εντολή πεδίο opcode Sign/Zero’ ALUop DM/ALU’ ADDIU ANDI ORI XORI LW SW 9 12 13 14 35 43 1 001 100 101 110 011 1 Τα σήματα ελέγχου Sign/Zero’, ALUop[2:0] και DM/ALU’ παράγονται απευθείας από το πεδίο opcode op[5:0] του καταχωρητή IR χωρίς τη μεσολάβηση της μονάδας ελέγχου. Sign/Zero’ = ΝΟΤ op[2] Επιλέγει επέκταση πρόσημου (=1) ή μηδενός (=0) στη μονάδα επέκτασης ALUop[2] = op[2] Επιλέγει έξοδο από αθροιστή (=0) ή λογική μονάδα (=1) της ALU ALUop[1:0] = op[1:0] Επιλέγει λειτουργία της λογικής μονάδας (=00 AND, =01 OR, =10 XOR) DM/ALU’ = op[5] Επιλέγει πηγή για εγγραφή στο αρχείο καταχωρητών από Dmem (=1) ή ALU (=0)
53
Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Αριθμητική και Λογική Μονάδα (ALU)
Bus_A Bus_B Bus_A Bus_B 32 32 32 32 λογική μονάδα 2 αθροιστής ALUop[1:0] πολυπλέκτης 2 σε 1 ALUop[2] x 32 32 Bus_S
54
Δίοδος Δεδομένων Απλού Επεξεργαστή
PC_write PC 4 32 INC NPC 32 Reg_write Imem_write 3 ALUop rs, rt 32 A 32 DM/ALU’ Imem cache REG FILE 32 32 ALU S mux 1 Bus_W 32 32 B MAR 32 32 MAR_write I Dmem cache imm EXT S/Z 32 32 32 IR MDR in MDR out 32 IR_write Sign/Zero’ Dmem_write
55
Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Μικρο-Λειτουργίες και Σήματα Ελέγχου
IR <= Imem[PC] NPC <= PC + 4 Imem_write = 0 IR_write = 1 Προσκόμιση εντολής Υπολογισμός PC+4 1 Αποκωδικοποίηση εντολής A <= reg[rs] B <= reg[rt] I <=sign/zero_extend[imm] 2 Sign/Ζero’ = 1/0 Διάβασμα καταχωρητών & Επέκταση Εκτέλεση πράξεων MAR <= A + I S <= A +/and/or/xor I MDR_in <= B ALUop[2:0] = Βλέπε σήματα ελέγχου ALU MAR_write = 1/0 3 Υπολoγισμός διευθύνσεων MDR_out <= Dmem[MAR] Dmem[MAR] <= MDR_in Προσπέλαση μνήμης δεδομένων Dmem_write = 1/0 4 Εγγραφή καταχωρητή Reg_write = 1/0 DM/ALU’ = 1/0/x PC_write = 1 reg[rt] <= S/MDR_out PC <= NPC 5 Επιλογή διεύθυνσης εντολής που θα εκτελεσθεί Imem_en = Dmem_en = 1 πάντα
56
Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Επίδραση των Σημάτων Ελέγχου
Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Επίδραση των Σημάτων Ελέγχου τιμή = 0 τιμή = 1 Imem_write Imem_en IR_write Διάβασμα από Imem Απενεργοποίηση Imem Τίποτα Εγγραφή στην Imem Ενεργοποίηση Imem Εγγραφή στον IR 1 2 Sign/Ζero’ = NOT op[2] Επέκταση μηδενός Επέκταση πρόσημου 3 MAR_write Τίποτα Εγγραφή στον MAR Dmem_write Dmem_en Διάβασμα από Dmem Απενεργοποίηση Dmem Εγγραφή στην Dmem Ενεργοποίηση Dmem 4 Reg_write DM/ALU’ = op[5] PC_write Τίποτα Bus_W = S Εγγραφή στο Reg. File Bus_W = MDR_out Εγγραφή στον PC 5 ALUop[2] = op[2] Logic/Arithmetic' (ALU) ALUop[1:0] = op[1:0] = 00 (AND), 01 (OR), 10 (XOR)
57
Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (LW)
Προσκόμιση εντολής Υπολογισμός PC+4 IR <= Imem[PC] NPC <= PC + 4 Imem_write = 0 IR_write = 1 S0 S1 Αποκωδικοποίηση εντολής A <= reg[rs] I <=sign_extend[imm] Sign/Ζero’ = 1 Διάβασμα καταχωρητών & Επέκταση Εκτέλεση πράξεων MAR <= A + I ALUop[2:0] = 011 MAR_write = 1 S2a Υπολoγισμός διευθύνσεων S3 Προσπέλαση μνήμης δεδομένων MDR_out <= Dmem[MAR] Dmem_write = 0 Dmem_write = 0 Εγγραφή καταχωρητή reg[rt] <= MDR_out PC <= NPC S4a Reg_write = 1 DM/ALU’ = 1 PC_write = 1 Επιλογή διεύθυνσης εντολής που θα εκτελεσθεί Imem_en = Dmem_en = 1 πάντα
58
Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (SW)
Προσκόμιση εντολής Υπολογισμός PC+4 IR <= Imem[PC] NPC <= PC + 4 Imem_write = 0 IR_write = 1 S0 Αποκωδικοποίηση εντολής S1 A <= reg[rs] B <= reg[rt] I <=sign_extend[imm] Sign/Ζero’ = 1 Διάβασμα καταχωρητών & Επέκταση Εκτέλεση πράξεων MAR <= A + I MDR_in <= B ALUop[2:0] = 011 MAR_write = 1 S2a Υπολoγισμός διευθύνσεων Προσπέλαση μνήμης δεδομένων Dmem[MAR] <= MDR_in Dmem_write = 1 PC <= NPC S4b Reg_write = 0 DM/ALU’ = 1 PC_write = 1 Επιλογή διεύθυνσης εντολής που θα εκτελεσθεί Imem_en = Dmem_en = 1 πάντα
59
Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (ADDIU)
Προσκόμιση εντολής Υπολογισμός PC+4 IR <= Imem[PC] NPC <= PC + 4 Imem_write = 0 IR_write = 1 S0 Αποκωδικοποίηση εντολής A <= reg[rs] I <=sign_extend[imm] S1 Sign/Ζero’ = 1 Διάβασμα καταχωρητών & Επέκταση Εκτέλεση πράξεων S <= A + I ALUop[2:0] = 001 MAR_write = 0 S2b Εγγραφή καταχωρητή reg[rt] <= S PC <= NPC Dmem_write = 0 Επιλογή διεύθυνσης εντολής που θα εκτελεσθεί S4a Reg_write = 1 DM/ALU’ = 0 PC_write = 1 Imem_en = Dmem_en = 1 πάντα
60
Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (ANDI)
Προσκόμιση εντολής Υπολογισμός PC+4 IR <= Imem[PC] NPC <= PC + 4 Imem_write = 0 IR_write = 1 S0 Αποκωδικοποίηση εντολής A <= reg[rs] I <=zero_extend[imm] S1 Sign/Ζero’ = 0 Διάβασμα καταχωρητών & Επέκταση Εκτέλεση πράξεων S <= A and I ALUop[2:0] = 100 MAR_write = 0 S2b Εγγραφή καταχωρητή reg[rt] <= S PC <= NPC Dmem_write = 0 Επιλογή διεύθυνσης εντολής που θα εκτελεσθεί S4a Reg_write = 1 DM/ALU’ = 0 PC_write = 1 Imem_en = Dmem_en = 1 πάντα
61
Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (ORI)
Προσκόμιση εντολής Υπολογισμός PC+4 IR <= Imem[PC] NPC <= PC + 4 Imem_write = 0 IR_write = 1 S0 Αποκωδικοποίηση εντολής A <= reg[rs] I <=zero_extend[imm] S1 Sign/Ζero’ = 0 Διάβασμα καταχωρητών & Επέκταση Εκτέλεση πράξεων S <= A or I ALUop[2:0] = 101 MAR_write = 0 S2b Εγγραφή καταχωρητή reg[rt] <= S PC <= NPC Dmem_write = 0 Επιλογή διεύθυνσης εντολής που θα εκτελεσθεί S4a Reg_write = 1 DM/ALU’ = 0 PC_write = 1 Imem_en = Dmem_en = 1 πάντα
62
Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (XORI)
Προσκόμιση εντολής Υπολογισμός PC+4 IR <= Imem[PC] NPC <= PC + 4 Imem_write = 0 IR_write = 1 S0 Αποκωδικοποίηση εντολής A <= reg[rs] I <=zero_extend[imm] S1 Sign/Ζero’ = 0 Διάβασμα καταχωρητών & Επέκταση Εκτέλεση πράξεων S <= A xor I ALUop[2:0] = 110 MAR_write = 0 S2b Εγγραφή καταχωρητή reg[rt] <= S PC <= NPC Dmem_write = 0 Επιλογή διεύθυνσης εντολής που θα εκτελεσθεί S4a Reg_write = 1 DM/ALU’ = 0 PC_write = 1 Imem_en = Dmem_en = 1 πάντα
63
Διάγραμμα Καταστάσεων
reset = 1 S0 Imem_write = 0 IR_write = 1 S1 op = LW,SW op = ADDIU,ANDI,ORI,XORI S2a S2b MAR_write = 1 MAR_write = 0 op = LW op = SW S3 S4b Dmem_write = 0 Dmem_write = 0 Reg_write = 1 PC_write = 1 Dmem_write = 1 Reg_write = 0 PC_write = 1 S4a
64
Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Υλοποίηση της Μονάδας Ελέγχου σαν FSM
control σήματα ελέγχου τύπου Moore FSM 6 m00: PC_write op[5:0] m01: Imem_write m02: IR_write CLK m03: MAR_write m04: Dmem_write RESET m05: Reg_write ADDIU ANDI ORI XORI LW SW 9 12 13 14 35 43 εντολή op[5:0] 001001 001100 001101 001110 100011 101011
65
Σήματα Ελέγχου Ανά Κατάσταση
Τρ. Καταστάσεις Σήματα Ελέγχου control_states S1 S4b S4a S0 S2a S3 S2b Όλα τα σήματα ελέγχου είναι τύπου Moore Οι καταστάσεις S1, S2b και S3 δεν ενεργοποιούν κανένα σήμα ελέγχου, αλλά δεν ενοποιούνται γιατί έχουν διαφορετική επόμενη κατάσταση Το σήμα ελέγχου m01 (Imem_write) δεν ενεργοποιείται
66
Σήματα Ελέγχου Ανά Κατάσταση
Τα σήματα ενεργοποίησης γραψίματος (write enable), εάν είναι ενεργά σε μία συγκεκριμένη κατάσταση, έχουν την τιμή '1', αλλιώς, για τις υπόλοιπες καταστάσεις, έχουν πάντα την τιμή '0' Τα υπόλοιπα σήματα ελέγχου, στην κατάσταση που ελέγχουν την εκτέλεση μίας μικρο-λειτουργίας, έχουν την τιμή '0' ή την τιμή '1', αλλιώς, στις υπόλοιπες καταστάσεις που η συγκεκριμένη μικρο-λειτουργία δεν εκτελείται, έχουν αδιάφορη τιμή '-' (δεν ισχύει στο συγκεκριμένο παράδειγμα) η εκμετάλλευση των αδιάφορων τιμών από το εργαλείο σύνθεσης οδηγεί σε βελτίωση της σύνθεσης (δεν ισχύει στο συγκεκριμένο παράδειγμα)
67
Υλοποίηση της Μονάδας Ελέγχου (FSM)
τις εισόδους CLK, RESET τις εισόδους του FSM: op[5:0] Οι είσοδοι του FSM αποθηκεύονται αρχικά στον καταχωρητή εισόδων (Input Register - InR), όταν αυτό απαιτείται για να επιτευχθεί η σύγχρονη λειτουργία όλων των μονάδων τις εξόδους του FSM, δηλαδή τα σήματα ελέγχου
68
Υλοποίηση της Μονάδας Ελέγχου (FSM)
library IEEE; use IEEE.std_logic_1164.all; entity control is port ( clk: in STD_LOGIC; reset: in STD_LOGIC; -- FSM inputs from Input Register op: in STD_LOGIC_VECTOR (5 downto 0); --FSM outputs - control signals PC_write: out STD_LOGIC; Imem_write: out STD_LOGIC; IR_write: out STD_LOGIC; MAR_write: out STD_LOGIC; Dmem_write: out STD_LOGIC; Reg_write: out STD_LOGIC ); end control;
69
Υλοποίηση της Μονάδας Ελέγχου (FSM)
Στη συνέχεια περιγράφουμε την αρχιτεκτονική της μονάδας ελέγχου, που υλοποιείται σαν FSM, χρησιμοποιώντας περιγραφή συμπεριφοράς (behavioral description), και προσδιορίζοντας: τις καταστάσεις (control_states) με τη χρήση ενός τύπου απαρίθμησης (enumeration type) αφήνουμε το εργαλείο σύνθεσης να αποφασίσει για τις τιμές των καταστάσεων τα εσωτερικά σήματα (signals) του FSM current_state next_state τους κωδικούς λειτουργίας σαν σταθερές (constant) constant constant_name: type := value;
70
Υλοποίηση της Μονάδας Ελέγχου (FSM)
architecture control_arch of control is -- state definition type control_states is (S0, S1, S2a, S2b, S3, S4a, S4b); -- internal signals signal current_state, next_state: control_states; -- opcode definition as constants - FSM inputs constant lw : std_logic_vector (5 downto 0) := "100011"; constant sw : std_logic_vector (5 downto 0) := "101011"; constant addiu : std_logic_vector (5 downto 0) := "001001"; constant andi : std_logic_vector (5 downto 0) := "001100"; constant ori : std_logic_vector (5 downto 0) := "001101"; constant xori : std_logic_vector (5 downto 0) := "001110";
71
Υλοποίηση της Μονάδας Ελέγχου (FSM)
Eάν επιθυμούμε να κωδικοποιήσουμε με συγκεκριμένες τιμές τις καταστάσεις χρησιμοποιούμε έναν υποτύπο (subtype) και σταθερές (constant), αντί ενός τύπου απαρίθμησης Δίπλα φαίνεται η δυαδική κωδικοποίηση control_states S0 000 S1 001 S2a 010 S2b 011 S3 100 S4a 101 S4b 110 Μπορούμε επίσης να δώσουμε και κατάλληλες οδηγείες στο XST (XST properties > HDL options)
72
Υλοποίηση της Μονάδας Ελέγχου (FSM)
-- state encoding in binary code by the user subtype control_states is std_logic_vector (2 downto 0); constant S0 : control_states := "000"; constant S1 : control_states := "001"; constant S2a : control_states := "010"; constant S2b : control_states := "011"; constant S3 : control_states := "100"; constant S4a : control_states := "101"; constant S4b : control_states := "110"; Για να πετύχουμε τη μέγιστη δυνατή απλοποίηση ορίζουμε και την κατάσταση don´t care (Sdc) constant Sdc : control_states := "---";
73
Άλλοι Τρόποι Κωδικοποίησης Καταστάσεων
Κωδικοποίηση τύπου Gray για μείωση των μεταβάσεων με στόχο την απλοποίηση και τη μείωση της κατανάλωσης ισχύος Κωδικοποίηση One-Hot για υλοποίηση με FPGAs, όπου υπάρχουν πολλά διαθέσιμα D Flip-Flops control_states control_states S0 000 1 μετ. S0 S1 001 1 μετ. S1 S2a 011 1 μετ. S2a S2b 101 1 μετ. S2b S3 111 1 μετ. S3 S4a 100 1 ή 2 μετ. S4a S4b 010 1 μετ. S4b
74
Συνέπειες της Κωδικοποίησης Καταστάσεων
Η απόδοση και το κόστος της Μονάδας Ελέγχου (FSM) εξαρτάται από: Το πλήθος των καταστάσεων Την πολυπλοκότητα των διακλαδώσεων ανά κατάσταση Τον αριθμό των ψηφιών που προσδιορίζουν μία κατάσταση Τον αριθμό των μεταβάσεων από κατάσταση σε κατάσταση Απλοί κανόνες που βελτιώνουν την απόδοση και το κόστος Αρχικά, αφήνουμε το εργαλείο σύνθεσης να αποφασίσει για τις τιμές των καταστάσεων και στη συνέχεια ... Η κωδικοποίηση με βάση τις τιμές των σημάτων ελέγχου τύπου Moore είναι αποδοτική ιδίως όταν εκμεταλλευόμαστε αδιάφορες τιμές Η κωδικοποίηση one-hot συνήθως αποδίδει στην υλοποίηση με FPGAs, όταν εφαρμόζεται για 10 μέχρι 30 καταστάσεις περίπου Ασφαλής λειτουργία επιτυγχάνεται όταν κάθε μη επιτρεπτή τρέχουσα κατάσταση έχει σαν επόμενη κατάσταση την κατάσταση S0.
75
Υλοποίηση της Μονάδας Ελέγχου (FSM)
με 2 Processes Ύστερα, περιγράφουμε την αρχιτεκτονική της μονάδας ελέγχου που υλοποιείται σαν FSM, χρησιμοποιώντας περιγραφή συμπεριφοράς (behavioral description), και προσδιορίζοντας: τον καταχωρητή καταστάσεων (state register) με τη χρήση μίας σύγχρονης διεργασίας (process) η εκτέλεση αυτής της διεργασίας εξαρτάται από τα σήματα CLK και RESET η διεργασία αυτή είναι κοινή για όλα τα FSM
76
Υλοποίηση της Μονάδας Ελέγχου (FSM)
begin -- Common process for all FSMs to create state register SYNCH: process (clk, reset) -- initialization with active high reset if (reset = '1') then current_state <= S0; -- positive edge triggered register elsif CLK'event and clk ='1' then current_state <= next_state; end if; end process SYNCH;
77
Υλοποίηση της Μονάδας Ελέγχου (FSM)
Τέλος, περιγράφουμε την αρχιτεκτονική της μονάδας ελέγχου που υλοποιείται σαν FSM, χρησιμοποιώντας περιγραφή συμπεριφοράς (behavioral description), και προσδιορίζοντας: τη συνδυαστική λογική που παράγει την επόμενη κατάσταση NS, καθώς και τις εξόδους του FSM (τα σήματα ελέγχου της Μονάδας Ελέγχου), σαν συνάρτηση της τρέχουσας κατάστασης και των εισόδων του FSM (op[5:0]), με τη χρήση μίας ασύγχρονης διεργασίας (process) στην αρχή αυτής της διεργασίας βάζουμε αρχικές τιμές στην επόμενη κατάσταση και σε όλα τα σήματα εξόδου για να εμποδίσουμε την εμφάνιση ανεπιθύμητων latches κατά τη σύνθεση λόγω ελλιπούς ανάθεσης η περιγραφή συμπεριφοράς αυτής της διεργασίας βασίζεται στο διάγραμμα καταστάσεων
78
Υλοποίηση της Μονάδας Ελέγχου (FSM)
-- Process to create next state logic and output logic ASYNCH_LOGIC: process (current_state, op) begin -- FSM next state and output initialization next_state <= S0; PC_write <= '0'; Imem_write <= '0'; IR_write <= '0'; MAR_write <= '0'; Dmem_write <= '0'; Reg_write <= '0';
79
Διάγραμμα Καταστάσεων
reset = 1 S0 Imem_write = 0 IR_write = 1 S1 Ορίζεται στη σύγχρονη διαδικασία op = LW,SW op = ADDIU,ANDI,ORI,XORI S2a S2b
80
Υλοποίηση της Μονάδας Ελέγχου (FSM)
-- all outputs are input independent case current_state is -- next state is input independent when S0 => IR_write <='1'; next_state <= S1; -- next state is input dependent when S1 => case op is when lw => next_state <= S2a; when sw => next_state <= S2a; when addiu => next_state <= S2b; when andi => next_state <= S2b; when ori => next_state <= S2b; when xori => next_state <= S2b; -- fail-safe behavior when others => next_state <= S0; -- or Sdc; end case;
81
Διάγραμμα Καταστάσεων
S0 S2a S2b MAR_write = 1 MAR_write = 0 op = LW op = SW S3 S4b Dmem_write = 0 Dmem_write = 0 Reg_write = 1 PC_write = 1 Dmem_write = 1 Reg_write = 0 PC_write = 1 S4a
82
Υλοποίηση της Μονάδας Ελέγχου (FSM)
-- next state is input dependent when S2a => MAR_write <='1'; case op is when lw => next_state <= S3; when sw => next_state <= S4b; -- fail-safe behavior when others => next_state <= S0; -- or Sdc; end case; -- next states are input independent when S2b => next_state <= S4a; when S => next_state <= S4a; when S4a => reg_write <= '1'; PC_write <= '1'; next_state <= S0; when S4b => Dmem_write <= '1'; when others => next_state <= S0; -- or Sdc; end process;
83
Αποτελέσματα Σύνθεσης της Μονάδας Ελέγχου
LUT’s Flip Flop’s Frequency Binary encoding 16 3 Mhz Gray encoding 14 Mhz One-hot encoding 18 10 7 Mhz Mhz Automatic S0 Sdc Ασφαλής λειτουργία με επόμενη κατάσταση την κατάσταση S0 ή την κατάσταση don’t care (Sdc) Βέλτιστη λύση: Κωδικοποίηση one-hot με επόμενη κατάσταση την don’t care (Sdc)
84
Γενικές Συμβουλές για Σωστή Σύνθεση
Σηματοδότηση ένα tri-state enable σήμα ανά οντότητα, εκτός από την περίπτωση της οντότητας των αρτηριών ένα clock σήμα ανά οντότητα ένα reset (preset) σήμα ανά οντότητα Όλα τα port signals να είναι τύπου std_logic και std_logic_vector Όλα τα port signals να είναι in ή out H πιο ψηλά στην ιεραρχία οντότητα μπορεί να έχει port signals που να είναι αμφίδρομα (inout) Δημιουργήστε ξεχωριστή οντότητα για τις αρτηρίες που ελέγχονται από tri-state enable σήματα Ελέγξτε εάν η προγραμματιζόμενη λογική υποστηρίζει tri-state buffers, αλλιώς χρησιμοποιήστε λογική για muxs
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.