Ας ξεκινήσουμε Τι χρειαζόμαστε για να υλοποιήσουμε έναν επεξεργαστή? Macro-instructions ALU (Assembly level) Register File Micro-instructions Main memory (micro-code) Control signals and microcode (control unit)
Αριθμητική και Λογική Μονάδα (ALU) H καρδιά του data-path Εκτελεί αριθμητικές και λογικές πράξεις, ανάλογα με την τιμή της εισόδου op. 8 8 R S ALU op 3 F Το αποτέλεσμα της πράξης δίνεται ως έξοδος από το F Π.χ., αν op =, τότε θα γίνει η πράξη F = S + R Η αντιστοίχιση κωδικών της εισόδου op σε πράξεις υπάρχει σε μορφή πίνακα στις σημειώσεις του εργαστηρίου.
Κύρια Μνήμη 8 8 CLK Address Data In Data Out : Η τιμή του σήματος αυτού καθορίζει αν θα γίνει εγγραφή ή ανάγνωση στη μνήμη 8 : Memory Address Register (8 bit Καταχωρητής) Διευθυνσιοδοτεί τη μνήμη. Κάθε φορά που θέλουμε να αλλάξουμε διεύθυνση, ενεργοποιούμε το σήμα CLK. Με τον τρόπο αυτό η νέα διεύθυνση κλειδώνεται στον. : Memory Data Register (8 bit Καταχωρητής) Περιέχει τα δεδομένα της θέσης που διευθυνσιοδοτείται από τον.
Ένα στοιχειώδες Σύστημα (Υπεραπλουστευμένο) ΜΟΝΑΔΑ ΕΠΕΞΕΡΓΑΣΙΑΣ Data In data A Port B Port Port B Port A RF A B R S ALU op ALU_op F CLK address Memory MEM_wr RF_wr Υπενθύμιση : Οι δύο βασικές υπομονάδες ενός συστήματος είναι η μονάδα επεξεργασίας και η μονάδα ελέγχου. Στο σχήμα δίνουμε μόνο τη μονάδα επεξεργασίας
Ένα στοιχειώδες Σύστημα (Υπεραπλουστευμένο) A Port B Port Port B Port A Data In RF A B R S ALU op ALU_op F CLK data address Main Memory MEM_wr RF wr Για να καθορίσουμε τη λειτουργία του συστήματος σε μία χρονική στιγμή, θα πρέπει να θέσουμε τιμές σε όλα τα control σήματα.
Παράδειγμα Port B Port A Data In RF A B () R ALU F () ()+() S op data address Main Memory Πρόσθεσε τα περιεχόμενα των καταχωρητών και και γράψε το αποτέλεσμα στον καταχωρητή. Δεν επηρεάζεται καθόλου η διεύθυνση της κύριας μνήμης και τα περιεχόμενά της
Παράδειγμα 2 Port B Port A Data In RF A B () R ALU F () ()+() S op data address Main Memory Πρόσθεσε τα περιεχόμενα των καταχωρητών και. Μην επηρεάσεις το Register File Διευθυνσιοδότησε την κύρια μνήμη με το αποτέλεσμα της πράξης Μην επηρεάσεις το περιεχόμενο της κύριας μνήμης
Σύνθετες Πράξεις Για να μπορέσουμε να εκτελέσουμε μία σύνθετη πράξη, σπάμε την πράξη αυτή σε στοιχειώδεις υποπράξεις. Για κάθε μία από τις στοιχειώδεις πράξεις θα πρέπει να προσδιορίσουμε όλα τα control σήματα (μικροεντολή). Για να εκτελέσουμε τη σύνθετη πράξη, απλώς εισάγουμε τα control σήματα κάθε υποπράξης διαδοχικά.
Παράδειγμα 3 Ζητούμενο : Διευθυνσιοδότησε την Κύρια μνήμη με την τιμή ()+()+() (όπου (Χ)=περιεχόμενο καταχωρητή Χ) Βήμα : ()+() -> () Βήμα 2 : ()+() -> Port B Port A Data In RF A B () R () ALU F () ()+() S op ()+() () address Main Memory
Μικροεντολές και Μακροεντολές Μικροεντολή : Ενα bitstream που καθορίζει πλήρως τη λειτουργία του συστήματος σε μία χρονική στιγμή. Η μικροεντολή περιέχει τις τιμές για όλα τα control σήματα του συστήματος Port B Port A Data In RF A B () R ALU F () ()+() S op address Main Memory Μικροεντολή : Μήκος Μικροεντολής για το απλοϊκό σύστημα : 4 bits (4, 9)
Μικροεντολές και Μακροεντολές Μακροεντολή (επίπεδο assembly): Μία σύνθετη πράξη Μια μακροεντολή αποτελείται από μία αλληλουχία μικροεντολών οι οποίες προσδιορίζουν τις στοιχειώδεις πράξεις που θα πρέπει να εκτελεστούν Παράδειγμα Μακροεντολή : Διευθυνσιοδότησε την Κύρια μνήμη με την τιμή ()+() +() (όπου (Χ)=περιεχόμενο καταχωρητή Χ) Υλοποίηση Μικροεντολή : [ ()+() -> () ] Μικροεντολή 2 : [ ()+() -> ] Μικροπρόγραμμα
Instruction Set Architecture (Assembly) Ορίζουμε Ν μακροεντολές (opcode, έντελα, τρόποι διευθυνσιοδότησης ) : Εντολή, Εντολή2,, ΕντολήΝ Κάθε Εντολή, υλοποιείται μέσω πολλών μικροεντολών Ο προγραμματιστής γράφει τα προγράμματά του χρησιμοποιώντας το ρεπερτόριο εντολών που ορίσαμε. Π.χ. Πρόγραμμα : Εντολή5 Εντολή Εντολή4 Εντολή5 Εντολή4 Μακροπρόγραμμα Το μακροπρόγραμμα βρίσκεται αποθηκευμένο στην Κύρια Μνήμη
Μικρομνήμη Βήμα : ()+() -> () Βήμα 2 : ()+() -> Port B Port A Data In RF A B () R () ALU F () ()+() S () op ()+() address Main Memory μpc μpc Μικρομνήμη
2 Βασικά Σημεία. Ο, ελέγχεται σε επίπεδο μικροπρογράμματος. Είναι δική σας μέριμνα η αύξησή του ώστε να δείχνει στην επόμενη εντολή! Πρακτικά, αυτό επιτυγχάνεται ορίζοντας έναν από τους καταχωρητές του συστήματος ως PC (program counter). Ο PC αυτός δεν έχει καμία σχέση με τον μpc και ορίζεται κατόπιν δικής σας σύμβασης (το σύστημα δεν έχει ιδέα για το ποιος καταχωρητής είναι program counter για το μακροπρόγραμμα) Μικροπρόγραμμα Εντολή 3 Εντολή 2 Εντολή 3 Εντολή 3 Εντολή 2 Εντολή MAPPER μpc LOAD_DIR_SEQ~ Μικροπρόγραμμα 2 Μικροπρόγραμμα 3 Προσοχή!!! PC = μετρητής μάκροπρογράμματος μpc = μετρητής μίκροπρογράμματος
Παράδειγμα Σημείωση : Όταν LOAD_DIR_SEQ~ είναι απενεργοποιημένο (δηλ. ), ο μpc αυξάνεται κατά ένα (σαν κανονικός μετρητής). Όταν το σήμα αυτό είναι ενεργοποιημένο, τότε στον μpc ανατίθεται η έξοδος του MAPPER H H H H 2 H H 6 2 H C H H μpc 8 82 H???? H 8 H H?? H LOAD_DIR_SEQ~ 6 H C H Μικροπρόγραμμα LDA Μικροπρόγραμμα ADD Μικροπρόγραμμα STA Κύρια Μνήμη Mapper Μικρομνήμη
ALU: Απλουστευμένο Διάγραμμα D(:) DDATAE~ PCE~ MDE~ Q Aport(3:) Port A Port B Data In RF I(8:6) A B D Q Z A B I(2:) R S ALU op I(5:3) F I(8:6) CLK data address Main Memory MWE~ SELB Bport(3:) FeedBack Register
ALU : Απλουστευμένο Διάγραμμα D(:) DDATAE~ PCE~ MDE~ Q Aport(3:) Port A Port B Data In RF I(8:6) A B D Q Z A B I(2:) R S ALU op I(5:3) F I(8:6) CLK data address Main Memory MWE~ SELB Bport(3:) FeedBack Register
Οργάνωση Μικροεντολής Η μικροεντολή περιέχει όλα τα πεδία για τα οποία μιλήσαμε μέχρι τώρα Μονάδα Ελέγχου BRA BIN CON I I I APORT BPORT DDATA SH~ SELB MWE~ CLK MSTATUS LDS~ PCE~ CARRYE~MDE~ DDATAE~ (4:) (2:) (2:) (2:) (5:3) (8:6) (3:) (3:) (:) Μονάδα Επεξεργασίας
+ ACC D(:) XX DDATAE~ PCE~ MDE~ Q + () Data In Aport(3:) D Q Z Main A A R XXXX Memory RF ALU F B B S op CLK (DZ) I(5:3) MWE~ I(2:) I(8:6) SH~ = I(8:6) FeedBack Register MSTATUSCLK = Bport(3:) SELB CARRYE~ = Port A Port B data address
ACC+ NOP, Μονάδα Ελέγχου : Σειριακή Εντολή BRA BIN CON I I I APORT BPORT DDATA SH~ SELB MWE~ CLK MSTATUS LDS~ PCE~ CARRYE~MDE~ DDATAE~ (4:) (2:) (2:) (2:) (5:3) (8:6) (3:) (3:) (:) ACC+->NOP, xxxxx xxx xxxx xx
ACC+ NOP, D(:) XX DDATAE~ PCE~ MDE~ Q () + NOP, Data In Aport(3:) D Q Z Main A A R Memory RF ALU F B B S op CLK (ZA) I(5:3) MWE~ I(2:) I(8:6) SH~ = I(8:6) FeedBack Register MSTATUSCLK = Bport(3:) SELB XXXX CARRYE~ = Port A Port B data address
Τέλος