Μέρος Β – Μονάδες Επεξεργαστή

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Ασύγχρονοι Απαριθμητές
Advertisements

Εισαγωγή στις Τεχνολογίες της Πληροφορικής και των Επικοινωνιών
Το υλικο του Υπολογιστη
Αρχιτεκτονική Υπολογιστών Γλώσσες Μηχανής
Σχεδίαση μονάδας ελέγχου επεξεργαστή Αρχιτεκτονική Υπολογιστών 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκτάριος Κοζύρης
ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων
Ημιαγωγοί – Τρανζίστορ – Πύλες - Εξαρτήματα
ΕΝΟΤΗΤΑ 10Η Η ΓΛΩΣΣΑ VHDL: ΑΚΟΛΟΥΘΙΑΚΑ ΚΥΚΛΩΜΑΤΑ
ΕΣ 08: Επεξεργαστές Ψηφιακών Σημάτων © 2006 Nicolas Tsapatsoulis Η Αρχιτεκτονική των Επεξεργαστών Ψ.Ε.Σ Τμήμα Επιστήμη και Τεχνολογίας Τηλεπικοινωνιών.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) Σχεδίαση datapath 4 κατηγορίες εντολών: Αριθμητικές-λογικές.
Λύση: Multicycle υλοποίηση Single-cyle υλοποίηση: Διάρκεια κύκλου ίση με τη μεγαλύτερη εντολή-worst case delay (εδώ η lw) = χαμηλή.
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Η ΕΚΤΕΛΕΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΧΡΗΣΤΗ ΑΠ’ ΤΟΝ Η/Υ ΤΟΜΕΑΣ ΤΕΧΝΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Δ.ΙΕΚ ΠΑΤΡΑΣ.
ΕΝΟΤΗΤΑ 5Η ΣΥΝΔΥΑΣΤΙΚΑ ΚΥΚΛΩΜΑΤΑ ΤΗΣ ΤΥΠΙΚΗΣ ΛΟΓΙΚΗΣ Α΄
ΠΡΟΗΓΜΕΝΑ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ
ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ & ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΩΝ
Μνημη τυχαιας προσπελασης (Random Access Memory - RAM)
συγχρονων ακολουθιακων κυκλωματων
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Συγχρονα Ακολουθιακα Κυκλωματα Flip-Flops Καταχωρητες
Α ΡΧΙΤΕΚΤΟΝΙΚΗ Μ ΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ Υποκεφάλαιο 1.2 (Η κεντρική μονάδα επεξεργασίας CPU08)
Συνδυαστικά Κυκλώματα (Combinational Circuits)
Μικροεπεξεργαστές Λειτουργία - Εξέλιξη
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
1 Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τέταρτο Οι κίνδυνοι της.
ΗΥ-220 Verilog HDL. Τα βασικά.... ΗΥ-220 – Ιάκωβος Μαυροειδής2 Βασική Ροή Σχεδίασης Requirements SimulateRTL Model Gate-level Model Synthesize SimulateTest.
Διαφάνειες παρουσίασης #2
ΗΥ220 Εργαστήριο Ψηφιακών Κυκλωμάτων
Kαταχωρητές και Μετρητές (Registers και Counters)
ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΗΣ.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
ΕΙΣΑΓΩΓΗ ΣΤΗ VHDL ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΕΡΓΑΣΤΗΡΙΑΚΩΝ ΑΣΚΗΣΕΩΝ
Σχεδίαση ψηφιακών συστημάτων Ενότητα 4: Finite State Machines Algorithmic State Machine (ASM) Charts, and VHDL code Ιωάννης Βογιατζής Τμήμα Μηχανικών Πληροφορικής.
Η Κεντρική Μονάδα Συστήματος Εισαγωγή στην Πληροφορκή 1 Η κεντρική μονάδα του συστήματος (base unit ή system unit) αποτελεί τον πυρήνα ενός υπολογιστή.
ΠΑΡΑΔΕΙΓΜΑ: ΤΑ ΕΠΙΠΕΔΑ ΥΛΙΚΟΥ – ΛΟΓΙΣΜΙΚΟΥ ΣΕ ΕΝΑΝ ΥΠΟΛΟΓΙΣΤΗ.
1 Αρχιτεκτονική υπολογιστών Ενότητα 11 : Δομή και Λειτουργία της CPU 1/2 Φώτης Βαρζιώτης Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών 10 ο Μάθημα.
ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ 1 Διάλεξη 12: Διάλεξη 12: Καταχωρητές - Μετρητές Δρ Κώστας Χαϊκάλης.
Αρχιτεκτονική Υπολογιστών DATAPATH & CONTROL. Αρχιτεκτονική Υπολογιστών DATAPATH & CONTROL Για κάθε εντολή υπάρχουν δυο βήματα που πρέπει να γίνουν: –Προσκόμιση.
Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών 9 ο Μάθημα.
11/14/2016Structural VHDL148 Structural VHDL Παράδειγμα Multiplexer Component Component specification Port map command Unconnected outputs Unconnected.
Έβδομο μάθημα Ψηφιακά Ηλεκτρονικά.
Morgan Kaufmann Publishers Ο επεξεργαστής
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Ένατο μάθημα Ψηφιακά Ηλεκτρονικά.

Single-cyle υλοποίηση:
MIPS: Σύνολο εντολών, γλώσσα μηχανής & μεθοδολογία σχεδίασης
αναγκαίο κακό ή δώρο εξ’ ουρανού;
Ψηφιακή Σχεδίαση Εργαστήριο Τετάρτη 9/12/2015.
Η ΑΡΙΘΜΙΤΙΚΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Τ.Ε.Ι. Κρήτης Τμ. Μηχανικών Πληροφορικής Αρχιτεκτονική Υπολογιστών
Εισαγωγή στη VHDL 5/8/2018 Εισαγωγή στη VHDL.
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών A. Βαφειάδης Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Α.Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
SR latch R Q S R Q Q’ Q’ S.
Πίνακες διέγερσης Q(t) Q(t+1) S R X X 0
Χειμερινό εξάμηνο 2017 Πέμπτη διάλεξη
Single-cyle υλοποίηση:
Ένα ακολουθιακό κύκλωμα καθορίζεται από τη χρονική ακολουθία των ΕΙΣΟΔΩΝ, των ΕΞΟΔΩΝ και των ΕΣΩΤΕΡΙΚΩΝ ΚΑΤΑΣΤΑΣΕΩΝ ΣΥΓΧΡΟΝΑ: Οι αλλαγές της κατάστασης.
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
Single-cyle υλοποίηση:
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Single-cyle υλοποίηση:
Single-cyle υλοποίηση:
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
O επεξεργαστής: Η δίοδος δεδομένων (datapath) και η μονάδα ελέγχου (control) 4 κατηγορίες εντολών: Αριθμητικές-λογικές εντολές (add, sub, slt κλπ) –R Type.
Μεταγράφημα παρουσίασης:

Μέρος Β – Μονάδες Επεξεργαστή ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΣΧΕΔΙΑΣΗ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ - VHDL ΥΛΙΚΟ ΚΑΙ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ Ενότητα 6 Γλώσσα Περιγραφής Υλικού VHDL Μέρος Β – Μονάδες Επεξεργαστή Καθηγητής Αντώνης Πασχάλης 2018

Γενικές Γραμμές Αριθμητική και Λογική Μονάδα Μονάδα Ελέγχου

Arithmetic Logic Unit (ALU) Case Study 1 MIPS R2000 Arithmetic Logic Unit (ALU)

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)

Case Study: Arithmetic Logic Unit ALU (II) shamt Bus_A[4:0] Bus_A Bus_B Bus_A Bus_B Bus_B 0 1 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 00 01 10 11 MULTIPLEXER 4 to 1 2 Ov ALUop[3:2] x 32 Mux_out 32 Ne (MSB) ORtree Zero Bus_S

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

Case Study: Arithmetic Logic Unit ALU (IV)

Case Study: Arithmetic Logic Unit ALU (V)

Case Study: Arithmetic Logic Unit ALU (VI)

Case Study: Arithmetic Logic Unit ALU (VII)

Case Study: Arithmetic Logic Unit ALU (VIII)

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 = 23.909 ns (sv-Zero = 22.727 ns)

Case Study: Arithmetic Logic Unit ALU (X) 2nd Design

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 = 22.360 ns (sv-Zero = 23.364 ns) 1st Design 2nd Design Μεγαλύτερο Fanout Μεγαλύτερο Delay

ALU Behavioral Simulations SHIFTER Reset SLLV SLL SRL/SRA

ALU Behavioral Simulations SLTUNT SLT (signed) SLTU (unsigned)

ALU Behavioral Simulations ADDSUB (I) ADD (signed)

ALU Behavioral Simulations ADDSUB (II) ADD (unsigned)

ALU Behavioral Simulations ADDSUB (III) SUB (signed)

ALU Behavioral Simulations ADDSUB (IV) SUB (unsigned)

ALU Behavioral Simulations LOGICU (I) AND

ALU Behavioral Simulations LOGICU (II)

ALU Behavioral Simulations LOGICU (III) XOR

ALU Behavioral Simulations LOGICU (IV) NOR

ALU Post-Route Simulations ADDSUB (I) Behavioral vs Post-Route ADD (signed)

ALU Post-Route Simulations ADDSUB (I) 1st Design vs 2nd Design

Βελτίωση Συχνότητας Λειτουργίας Το σήμα Zero δεν χρησιμοποιείται στις εντολές ολίσθησης

Βελτίωση Συχνότητας Λειτουργίας shamt Bus_A[4:0] Bus_A Bus_B Bus_A Bus_B Bus_B 0 1 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 00 01 10 11 MULTIPLEXER 4 to 1 Ov 2 ALUop[3:2] x 32 Ne (MSB) ORtree Mux_out 32 Bus_S Zero

Βελτίωση Συχνότητας Λειτουργίας 3rd Design

Βελτίωση Συχνότητας Λειτουργίας 3rd Design 2nd Design

Βελτίωση Συχνότητας Λειτουργίας 3rd Design vs 2nd Design (SLLV) Μέγιστη καθυστέρηση διάδοσης περίπου 17.2ns αντί για >20ns 3rd 2nd

Βελτίωση Συχνότητας Λειτουργίας 3rd Design vs 2nd Design (ADD signed) Περίπου 3ns λιγότερη καθυστέρηση διάδοσης σε κάποιες περιπτώσεις 3rd 2nd

Case Study 2 MIPS R2000 Control Unit (CU)

Μονάδα Ελέγχου του MIPS R2000 Για δίοδο δεδομένων πολλών κύκλων, χωρίς να υποστηρίζει παραλληλία σε επίπεδο εκτέλεσης εντολής, η μονάδα ελέγχου : Αποκωδικοποιεί την εντολή που θα εκτελεσθεί με βάση το πεδίο κωδικού λειτουργίας (opcode) της εντολής και το πεδίο λειτουργίας (funct) μόνο για τις εντολές τύπου R Βάζει κατάλληλες τιμές στα αντίστοιχα σήματα ελέγχου, ώστε, για κάθε εντολή, να εκτελούνται παράλληλα μία ή περισσότερες μικρο-λειτουργίες σε κάθε κύκλο ρολογιού Παράγει δύο ειδών σημάτων ελέγχου, που ταξινομούνται σε δύο κατηγορίες Α και Β, αντίστοιχα

Ταξινόμηση των Σημάτων Ελέγχου Κατηγορία Α: Σήματα ελέγχου που έχουν σταθερή τιμή σε όλους τους κύκλους κατά την εκτέλεση της εντολής Τα σήματα αυτά προσδιορίζουν τη μικρο-λειτουργία που θα εκτελέσουν οι λειτουργικές μονάδες της διόδου δεδομένων κατά την εκτέλεση της εντολής (για παράδειγμα, το σήμα ALUop της ALU), καθώς και τη ροή των δεδομένων μέσα στη δίοδο δεδομένων (για παράδειγμα όλα τα σήματα επιλογής των πολυπλεκτών). Τα σήματα αυτά παράγονται με συνδυαστική λογική και παίρνουν σταθερές τιμές 0, 1 ή '-' κατά την εκτέλεση μίας εντολής. Κατηγορία Β: Σήματα ελέγχου που πρέπει να έχουν την τιμή 1 μόνο σε ένα συγκεκριμένο κύκλο κατά την εκτέλεση της εντολής (για θετική λογική) Τα σήματα αυτά επιτρέπουν την εγγραφή, (σήματα write enable) στους καταχωρητές και στις μνήμες του επεξεργαστή Τα σήματα αυτά παράγονται με ακολουθιακή λογική και παίρνουν αποκλειστικά τις τιμές 1 ή 0 που μεταβάλλονται ανάλογα με τον κύκλο ρολογιού κατά την εκτέλεση μίας εντολής.

Μηχανή Καταστάσεων Τύπου Moore Υλοποίηση Μονάδας Ελέγχου επόμενη κατάσταση = F(παρούσα κατάσταση, είσοδος) έξοδος = G(παρούσα κατάσταση) InR, : input pipeline register για συγχρονισμό εισόδων και καταστάσεων (προαιρετικό) Λογική Εξόδου G Έξοδοι: σήματα ελέγχου CLK Είσοδοι: opcode, F, σήματα καταστάσεων ΙnR Λογική Επόμενης Κατάστασης F reset επόμενη κατάσταση Q(t+1) SR παρούσα κατάσταση Q(t) CLK

Μηχανή Καταστάσεων Τύπου Moore Υλοποίηση Μονάδας Ελέγχου Οι είσοδοι, που συνήθως είναι το πεδίο κωδικού λειτουργίας (opcode) και το πεδίο λειτουργίας (F), (μόνο για τις εντολές τύπου R), της εντολής καθώς και σήματα καταστάσεων (προαιρετικά) αποθηκεύονται στον καταχωρητή εισόδων (Input Register - InR) Οι έξοδοι, που είναι τα σήματα ελέγχου της μονάδας ελέγχου, συγχρονίζουν την παράλληλη εκτέλεση των μικρο-λειτουργιών σε μία μικρο-εντολή Σε κάθε κατάσταση αντιστοιχεί αποκλειστικά ένας συνδυασμός τιμών των σημάτων ελέγχου (των εξόδων) της μονάδας ελέγχου που απαιτείται για την εκτέλεση μίας συγκεκριμένης μικρο-εντολής Λογική Επόμενης Κατάστασης: προσδιορίζει την επόμενη κατάσταση NS της μηχανής, που αποθηκεύεται στον καταχωρητή καταστάσεων SR, σαν συνάρτηση της τρέχουσας κατάστασης CS και των εισόδων InR Λογική Εξόδου: προσδιορίζει τις εξόδους της μηχανής (δηλ. τα σήματα ελέγχου) σαν συναρτήσεις αποκλειστικά της τρέχουσας κατάστασης CS

Μηχανή Καταστάσεων Τύπου Mealy Υλοποίηση Μονάδας Ελέγχου επόμενη κατάσταση = F(παρούσα κατάσταση, είσοδος) έξοδος = G(παρούσα κατάσταση, είσοδος) InR, : input pipeline register για συγχρονισμό εισόδων και καταστάσεων (προαιρετικό) Λογική Εξόδου G Έξοδοι: σήματα ελέγχου CLK Είσοδοι: opcode, F, σήματα καταστάσεων ΙnR Λογική Επόμενης Κατάστασης F reset επόμενη κατάσταση Q(t+1) SR παρούσα κατάσταση Q(t) CLK

Μηχανή Καταστάσεων Τύπου Mealy Υλοποίηση Μονάδας Ελέγχου Οι είσοδοι αποθηκεύονται στον καταχωρητή εισόδων (Input Register - InR), όπως και στις μηχανές καταστάσεων τύπου Moore Οι έξοδοι είναι τα σήματα ελέγχου της μονάδας ελέγχου Σε κάθε κατάσταση αντιστοιχούν συγκεκριμένοι συνδυασμοί τιμών των σημάτων ελέγχου (των εξόδων) της μονάδας ελέγχου που απαιτούνται για την εκτέλεση παρόμοιων μικρο-εντολών Σε κάθε κατάσταση οι συγκεκριμένοι συνδυασμοί τιμών των σημάτων ελέγχου διαφοροποιούνται σε πολύ λίγα σήματα ελέγχου Τα διαφοροποιούμενα σήματα ελέγχου εξαρτώνται από την τρέχουσα κατάσταση CS και από τις εισόδους IR, (σήματα τύπου Mealy) Τα μη διαφοροποιούμενα σήματα ελέγχου εξαρτώνται αποκλειστικά από την τρέχουσα κατάσταση CS, (σήματα τύπου Moore) Λογική Επόμενης Κατάστασης: προσδιορίζει την επόμενη κατάσταση NS της μηχανής, που αποθηκεύεται στον καταχωρητή καταστάσεων SR, σαν συνάρτηση της τρέχουσας κατάστασης CS και των εισόδων InR Λογική Εξόδου: προσδιορίζει τις εξόδους της μηχανής (δηλ. τα σήματα ελέγχου) σαν συναρτήσεις της τρέχουσας κατάστασης CS και των εισόδων InR (μόνο για τα σήματα τύπου Mealy)

Σύγκριση Μηχανών Πεπερασμένων Καταστάσεων Τύπου Moore και Mealy Η μηχανή πεπερασμένων καταστάσεων τύπου Mealy είναι πιο γενική από τη μηχανή τύπου Moore Οι μηχανές πεπερασμένων καταστάσεων τύπου Mealy έχουν λιγότερες καταστάσεις και συνήθως πλεονεκτούν σε ταχύτητα και μέγεθος της λογικής επόμενης κατάστασης Οι μηχανές πεπερασμένων καταστάσεων τύπου Moore συνήθως πλεονεκτούν σε ταχύτητα και μέγεθος της λογικής εξόδου Μία μηχανή πεπερασμένων καταστάσεων μπορεί να έχει εξόδους και των δύο τύπων Η απόδοση και το κόστος της μηχανής εξαρτάται από: Το πλήθος των καταστάσεων (περισσότερες στη μηχανή τύπου Moore) Την πολυπλοκότητα των διακλαδώσεων ανά κατάσταση (μεγαλύτερη στη μηχανή τύπου Mealy) Την κωδικοποίηση των καταστάσεων Το μέγεθος του καταχωρητή καταστάσεων Το πλήθος των ψηφίων που αλλάζουν τιμή από κατάσταση σε κατάσταση

Διαδικασία Σχεδίασης Μονάδας Ελέγχου σαν Σύγχρονη Ακολουθιακή Μηχανή Για κάθε εντολή προσδιορίζουμε τις αντίστοιχες μικρο-λειτουργίες που εκτελούνται σε κάθε φάση (ή κύκλο) εκτέλεσης της εντολής Συνεπώς για κάθε εντολή: Προσδιορίζουμε τις τιμές στην είσοδο της μονάδας ελέγχου (opcode, funct), που αντιστοιχούν στη συγκεκριμένη εντολή Προσδιορίζουμε τις τιμές των σημάτων ελέγχου σε κάθε φάση (ή κύκλο) εκτέλεσης της εντολής Ταξινομούμε τα σήματα ελέγχου ανάλογα με τη διάρκεια των τιμών τους κατά την εκτέλεση της εντολής στις δύο κατηγορίες Α και Β Για την παραγωγή των σημάτων της κατηγορίας Α υλοποιούμε συνδυαστική λογική Για την παραγωγή των σημάτων της κατηγορίας Β υλοποιούμε ακολουθιακή λογική (Σύγχρονη Ακολουθιακή Μηχανή) Για την υλοποίηση της Σύγχρονης Ακολουθιακής Μηχανής Προσδιορίζουμε τις διακριτές καταστάσεις Προσδιορίζουμε τις μεταβάσεις ανάμεσα στις διακριτές καταστάσεις με τις αντίστοιχες συνθήκες εισόδου, εάν υπάρχουν

Διαδικασία Σχεδίασης Μονάδας Ελέγχου σαν Σύγχρονη Ακολουθιακή Μηχανή Για κάθε διακριτή κατάσταση προσδιορίζουμε τις τιμές των σημάτων ελέγχου της Κατηγορίας Β που εξαρτώνται από την τρέχουσα κατάσταση και την αντίστοιχη συνθήκη εισόδου (έξοδοι τύπου Mealy) που εξαρτώνται από την τρέχουσα κατάσταση αποκλειστικά (έξοδοι τύπου Moore) Τέλος, σχεδιάζουμε το διάγραμμα καταστάσεων

Διάγραμμα Καταστάσεων (Ι) 1. Α Το διάγραμμα καταστάσεων απαρτίζεται από: Κύκλους που προσδιορίζουν την παρούσα κατάσταση Α Βέλη που προσδιορίζουν τη μετάβαση από την παρούσα κατάσταση Α στην επόμενη κατάσταση Β Οι μεταβάσεις μπορεί να γίνονται χωρίς συνθήκη ή με συνθήκη στην είσοδο Όταν υπάρχει μετάβαση με συνθήκη στην είσοδο, οι τιμές των εισόδων που ικανοποιούν τη συνθήκη γράφονται δίπλα στο βέλος Παραδείγματα: Όταν η επόμενη κατάσταση είναι ίδια με την παρούσα κατάσταση χωρίς συνθήκη εισόδου Όταν η επόμενη κατάσταση είναι ίδια με την παρούσα κατάσταση με συνθήκη εισόδου (π.χ. ΕΝ=0) Όταν η επόμενη κατάσταση είναι διαφορετική από την παρούσα κατάσταση χωρίς συνθήκη εισόδου Όταν η επόμενη κατάσταση είναι διαφορετική από την παρούσα κατάσταση με συνθήκη εισόδου (π.χ. ΕΝ=1) ΕΝ=0 2. Α 3. Α Β 4. Α ΕΝ=1 Β

Διάγραμμα Καταστάσεων (ΙΙ) Το διάγραμμα καταστάσεων απαρτίζεται από: Πλαίσια εντός των οποίων γράφονται οι τιμές των σημάτων στην έξοδο, που εξαρτώνται αποκλειστικά από την παρούσα κατάσταση (έξοδοι τύπου Moore). Τα πλαίσια αυτά συνδέονται με τον κύκλο της αντίστοιχης παρούσας κατάστασης. Πλαίσια εντός των οποίων γράφονται οι τιμές των σημάτων στην έξοδο, που εξαρτώνται από την παρούσα κατάσταση και την αντίστοιχη συνθήκη εισόδου (έξοδοι τύπου Mealy). Τα πλαίσια αυτά συνδέονται με το αντίστοιχο βέλος, δίπλα στις τιμές των εισόδων που ικανοποιούν τη συνθήκη Παραδείγματα: Η έξοδος Χ λαμβάνει την τιμή 1 στην παρούσα κατάσταση Α (έξοδος τύπου Moore) Η έξοδος Υ λαμβάνει την τιμή 1 στην παρούσα κατάσταση Α, όταν η είσοδος ΕΝ είναι 1 (ΕΝ=1) (έξοδος τύπου Mealy) 1. 2. Α Α Χ=1 ΕΝ=1 ΕΝ=1 Β Β Υ=1

Προσδιορισμός Διακριτών Καταστάσεων Κάθε κύκλος (ή φάση) εκτέλεσης μίας εντολής αντιστοιχεί σε μία διακριτή κατάσταση της μονάδας ελέγχου Προσδιορίζουμε τις εισόδους, τις εξόδους, και τις διακριτές καταστάσεις Δύο παρούσες καταστάσεις χαρακτηρίζονται σαν διακριτές μεταξύ τους, εάν : Τουλάχιστον ένα από τα σήματα στην έξοδο, που εξαρτάται αποκλειστικά από την παρούσα κατάσταση, έχει διαφορετική τιμή (παράδειγμα 1), ή/και Έχουν διαφορετική επόμενη κατάσταση που είναι ανεξάρτητη από τις εισόδους (παράδειγμα 2) Οι μη διακριτές καταστάσεις ενοποιούνται σε μία κατάσταση, ώστε να προκύψει ελαχιστοποίηση των καταστάσεων και κατά συνέπεια μείωση του κόστους υλοποίησης 1. 2. Α Α C Χ=1 Χ=1 Χ=1 Β Χ Y Χ=0

Προσδιορισμός Διακριτών Καταστάσεων Η επιλογή λιγότερων διακριτών καταστάσεων που σχετίζονται με σήματα ελέγχου στην έξοδο, που εξαρτώνται από την τρέχουσα κατάσταση και την αντίστοιχη συνθήκη εισόδου (έξοδοι τύπου Mealy), οδηγεί σε ακολουθιακές μηχανές τύπου Mealy που πλεονεκτούν σε ταχύτητα και μέγεθος της λογικής επόμενης κατάστασης Η επιλογή περισσοτέρων διακριτών καταστάσεων έτσι, ώστε οι τιμές των σημάτων ελέγχου στην έξοδο να εξαρτώνται αποκλειστικά από την τρέχουσα κατάσταση (έξοδοι τύπου Moore), οδηγεί σε ακολουθιακές μηχανές τύπου Moore που πλεονεκτούν σε ταχύτητα και μέγεθος της λογικής εξόδου

Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Ρεπερτόριο Εντολών Τύπου 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

Υλοποίηση Απλού Επεξεργαστή Σήματα Ελέγχου Κατηγορίας Α Υλοποίηση Απλού Επεξεργαστή Σήματα Ελέγχου Κατηγορίας Α εντολή πεδίο opcode Sign/Zero’ ALUop DM/ALU’ ADDIU ANDI ORI XORI LW SW 9 12 13 14 35 43 001 001 001 100 001 101 001 110 100 011 101 011 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)

Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Αριθμητική και Λογική Μονάδα (ALU) Bus_A Bus_B Bus_A Bus_B 32 32 32 32 λογική μονάδα 2 αθροιστής ALUop[1:0] 0 1 πολυπλέκτης 2 σε 1 ALUop[2] x 32 32 Bus_S

Δίοδος Δεδομένων Απλού Επεξεργαστή 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

Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Μικρο-Λειτουργίες και Σήματα Ελέγχου 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 πάντα

Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Επίδραση των Σημάτων Ελέγχου Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Επίδραση των Σημάτων Ελέγχου τιμή = 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)

Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (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 πάντα

Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (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 πάντα

Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (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 πάντα

Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (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 πάντα

Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (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 πάντα

Μικρο-Λειτουργίες, Σήματα Ελέγχου και Καταστάσεις (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 πάντα

Διάγραμμα Καταστάσεων 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

Παράδειγμα Υλοποίησης Απλού Επεξεργαστή Υλοποίηση της Μονάδας Ελέγχου σαν 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

Σήματα Ελέγχου Ανά Κατάσταση Τρ. Καταστάσεις Σήματα Ελέγχου control_states 00 01 02 03 04 05 S1 S4b S4a S0 S2a S3 S2b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 Όλα τα σήματα ελέγχου είναι τύπου Moore Οι καταστάσεις S1, S2b και S3 δεν ενεργοποιούν κανένα σήμα ελέγχου, αλλά δεν ενοποιούνται γιατί έχουν διαφορετική επόμενη κατάσταση Το σήμα ελέγχου m01 (Imem_write) δεν ενεργοποιείται

Σήματα Ελέγχου Ανά Κατάσταση Τα σήματα ενεργοποίησης γραψίματος (write enable), εάν είναι ενεργά σε μία συγκεκριμένη κατάσταση, έχουν την τιμή '1', αλλιώς, για τις υπόλοιπες καταστάσεις, έχουν πάντα την τιμή '0' Τα υπόλοιπα σήματα ελέγχου, στην κατάσταση που ελέγχουν την εκτέλεση μίας μικρο-λειτουργίας, έχουν την τιμή '0' ή την τιμή '1', αλλιώς, στις υπόλοιπες καταστάσεις που η συγκεκριμένη μικρο-λειτουργία δεν εκτελείται, έχουν αδιάφορη τιμή '-' (δεν ισχύει στο συγκεκριμένο παράδειγμα) η εκμετάλλευση των αδιάφορων τιμών από το εργαλείο σύνθεσης οδηγεί σε βελτίωση της σύνθεσης (δεν ισχύει στο συγκεκριμένο παράδειγμα)

Υλοποίηση της Μονάδας Ελέγχου (FSM) τις εισόδους CLK, RESET τις εισόδους του FSM: op[5:0] Οι είσοδοι του FSM αποθηκεύονται αρχικά στον καταχωρητή εισόδων (Input Register - InR), όταν αυτό απαιτείται για να επιτευχθεί η σύγχρονη λειτουργία όλων των μονάδων τις εξόδους του FSM, δηλαδή τα σήματα ελέγχου

Υλοποίηση της Μονάδας Ελέγχου (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;

Υλοποίηση της Μονάδας Ελέγχου (FSM) Στη συνέχεια περιγράφουμε την αρχιτεκτονική της μονάδας ελέγχου, που υλοποιείται σαν FSM, χρησιμοποιώντας περιγραφή συμπεριφοράς (behavioral description), και προσδιορίζοντας: τις καταστάσεις (control_states) με τη χρήση ενός τύπου απαρίθμησης (enumeration type) αφήνουμε το εργαλείο σύνθεσης να αποφασίσει για τις τιμές των καταστάσεων τα εσωτερικά σήματα (signals) του FSM current_state next_state τους κωδικούς λειτουργίας σαν σταθερές (constant) constant constant_name: type := value;

Υλοποίηση της Μονάδας Ελέγχου (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";

Υλοποίηση της Μονάδας Ελέγχου (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)

Υλοποίηση της Μονάδας Ελέγχου (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 := "---";

Άλλοι Τρόποι Κωδικοποίησης Καταστάσεων Κωδικοποίηση τύπου Gray για μείωση των μεταβάσεων με στόχο την απλοποίηση και τη μείωση της κατανάλωσης ισχύος Κωδικοποίηση One-Hot για υλοποίηση με FPGAs, όπου υπάρχουν πολλά διαθέσιμα D Flip-Flops control_states control_states S0 000 1 μετ. S0 0000001 S1 001 1 μετ. S1 0000010 S2a 011 1 μετ. S2a 0000100 S2b 101 1 μετ. S2b 0001000 S3 111 1 μετ. S3 0010000 S4a 100 1 ή 2 μετ. S4a 0100000 S4b 010 1 μετ. S4b 1000000

Συνέπειες της Κωδικοποίησης Καταστάσεων Η απόδοση και το κόστος της Μονάδας Ελέγχου (FSM) εξαρτάται από: Το πλήθος των καταστάσεων Την πολυπλοκότητα των διακλαδώσεων ανά κατάσταση Τον αριθμό των ψηφιών που προσδιορίζουν μία κατάσταση Τον αριθμό των μεταβάσεων από κατάσταση σε κατάσταση Απλοί κανόνες που βελτιώνουν την απόδοση και το κόστος Αρχικά, αφήνουμε το εργαλείο σύνθεσης να αποφασίσει για τις τιμές των καταστάσεων και στη συνέχεια ... Η κωδικοποίηση με βάση τις τιμές των σημάτων ελέγχου τύπου Moore είναι αποδοτική ιδίως όταν εκμεταλλευόμαστε αδιάφορες τιμές Η κωδικοποίηση one-hot συνήθως αποδίδει στην υλοποίηση με FPGAs, όταν εφαρμόζεται για 10 μέχρι 30 καταστάσεις περίπου Ασφαλής λειτουργία επιτυγχάνεται όταν κάθε μη επιτρεπτή τρέχουσα κατάσταση έχει σαν επόμενη κατάσταση την κατάσταση S0.

Υλοποίηση της Μονάδας Ελέγχου (FSM) με 2 Processes Ύστερα, περιγράφουμε την αρχιτεκτονική της μονάδας ελέγχου που υλοποιείται σαν FSM, χρησιμοποιώντας περιγραφή συμπεριφοράς (behavioral description), και προσδιορίζοντας: τον καταχωρητή καταστάσεων (state register) με τη χρήση μίας σύγχρονης διεργασίας (process) η εκτέλεση αυτής της διεργασίας εξαρτάται από τα σήματα CLK και RESET η διεργασία αυτή είναι κοινή για όλα τα FSM

Υλοποίηση της Μονάδας Ελέγχου (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;

Υλοποίηση της Μονάδας Ελέγχου (FSM) Τέλος, περιγράφουμε την αρχιτεκτονική της μονάδας ελέγχου που υλοποιείται σαν FSM, χρησιμοποιώντας περιγραφή συμπεριφοράς (behavioral description), και προσδιορίζοντας: τη συνδυαστική λογική που παράγει την επόμενη κατάσταση NS, καθώς και τις εξόδους του FSM (τα σήματα ελέγχου της Μονάδας Ελέγχου), σαν συνάρτηση της τρέχουσας κατάστασης και των εισόδων του FSM (op[5:0]), με τη χρήση μίας ασύγχρονης διεργασίας (process) στην αρχή αυτής της διεργασίας βάζουμε αρχικές τιμές στην επόμενη κατάσταση και σε όλα τα σήματα εξόδου για να εμποδίσουμε την εμφάνιση ανεπιθύμητων latches κατά τη σύνθεση λόγω ελλιπούς ανάθεσης η περιγραφή συμπεριφοράς αυτής της διεργασίας βασίζεται στο διάγραμμα καταστάσεων

Υλοποίηση της Μονάδας Ελέγχου (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';

Διάγραμμα Καταστάσεων reset = 1 S0 Imem_write = 0 IR_write = 1 S1 Ορίζεται στη σύγχρονη διαδικασία op = LW,SW op = ADDIU,ANDI,ORI,XORI S2a S2b

Υλοποίηση της Μονάδας Ελέγχου (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;

Διάγραμμα Καταστάσεων 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

Υλοποίηση της Μονάδας Ελέγχου (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 S3 => 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;

Αποτελέσματα Σύνθεσης της Μονάδας Ελέγχου LUT’s Flip Flop’s Frequency Binary encoding 16 3 290.411 Mhz Gray encoding 14 346.729 Mhz One-hot encoding 18 10 7 363.729 Mhz 440.765 Mhz Automatic S0 Sdc Ασφαλής λειτουργία με επόμενη κατάσταση την κατάσταση S0 ή την κατάσταση don’t care (Sdc) Βέλτιστη λύση: Κωδικοποίηση one-hot με επόμενη κατάσταση την don’t care (Sdc)

Γενικές Συμβουλές για Σωστή Σύνθεση Σηματοδότηση ένα 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