Υλοποίηση Mικροεπεξεργαστή MIPS -16 Διάδρομος Δεδομένων και Μονάδα Ελέγχου 1
Περίληψη Μνήμη RAM Εκτέλεση εντολών με πολλαπλούς κύκλους Σχεδιασμός Διαδρόμου Δεδομένων (Data Path) Καταχωρητής Εντολών (Instruction Register) Πολυπλέκτης για επιλογή της νέας τιμής του PC Σήματα Ελέγχου και Μονάδα Ελέγχου 2
Μνήμη RAM και Αρχικοποίηση 1. DEPTH = 4096; 2. WIDTH = 16; 3. ADDRESS_RADIX = HEX; 4. DATA_RADIX = HEX; 5. CONTENT 6. BEGIN 7. 0:c060; 8. 1:412d; 9. 2:24c0; 10. 3:7607; 11. [4..19]: 0000; 12. 20:f23a; 13. [21..2FF] : 0000; 14. 300 : 0026 ; 15. 301 : 002a ; 16. [302..fff] : 0000; 17. END ; * Τα περιεχόμενα είναι τυχαία!!! 3
Εκτέλεση Εντολών με πολλαπλούς κύκλους 1. Instruction Fetch step IR = Memory[PC] PC = PC + 1 2. Instruction decode and register fetch step (A and B) Compute the branch target anyway using ALU and save the result in a register. A=IR[11..9], B=IR[8..6] Target= PC + offset 3. Execution, Memory Address computation, or branch completion. ALUoutput = A + offset (Memory Address computation) ALUoutput = A op. B (Instruction R-type operation) if (A==B) PC = Target (branch completion) 4
Εκτέλεση Εντολών με πολλαπλούς κύκλους 4. Memory Access or R-type instruction completion Load and Store instructions access memory and arithmetic operations write their result. memory_data = Memory [ALUoutput] Memory [ALUoutput] = B For R-type instructions: Reg(IR[5..3])=memory_data 5. Write Back Step Write the load data from memory into $rt Reg(IR[8..6]) = memory_data 5
Διάδρομος Δεδομένων (Datapath) PCWriteCond, PCWrite MemRead /Write ALUselB IorD IRWrite RegDest RegWrite ALUselA PC MUX Write TARGET MUX MUX address[11..0] RAM Q[15..0] data[15..0] PCSource INSTRUCTION REGISTER MUX MUX Signextend REGISTER FILE 1 Shift MUX ALU Result [15..0] Op[15..12] Control Unit MemtoReg Datapath is based on Chapter 5 from Computer Organization and Design by D. A. Patterson and J. L. Hennessy 6
Instruction Register Instruction_Register Instruction[15..12] Instruction[11..9] Instruction[8..6] Instruction[5..3] Instruction[2..0] opcode[3..0] rs[2..0] rt[2..0] rd[2..0] shift[2..0] Immediate [5..0] = rd[2..0], shift[2..0] Jump_Address [11..0] = rs[2..0], rt[2..0], rd[2..0], shift[2..0] 7
PC-Source Multiplexer PC 8
Σήματα Ελέγχου (Control Signals) και Μονάδα Ελέγχου (Control Unit) Έπειτα από τον καθορισμό των σημάτων ελέγχου και τις απαιτήσεις τους, μπορεί να σχεδιαστεί η μονάδα ελέγχου για την οποία υπάρχουν διάφοροι τρόποι υλοποίησης. Για τις απαιτήσεις του μαθήματος, η Μονάδα Ελέγχου θα πρέπει να υλοποιηθεί ως μία Μηχανή Πεπερασμένων Καταστάσεων (FSM) με τις λιγότερες δυνατές καταστάσεις. Η ΜΕ μπορεί να σχεδιαστεί στο Quartus με πύλες και flip-flops, ή μεκώδικα VHDL (ευκολότερα και γρηγορότερα). 9
Σχεδιασμός Μονάδας Ελέγχου 1. Καθορισμός των καταστάσεων με βάση τα βήματα που πρέπει να ακολουθηθούν για επίλυση του προβλήματος (βλέπε διαφάνειες 4-5). 2. Ο αριθμός των καταστάσεων καθορίζει και τον αριθμό των στοιχείων μνήμης που απαιτούνται (κ στοιχεία μνήμης μπορούν να περιγράψουν μέχρι και 2^κ καταστάσεις) 3. Καθορίστε όλα τα σήματα εξόδου σε κάθε κατάσταση (ανάλογα με τις τιμές των σημάτων ελέγχου του ΔΔ). 4. Καθορίστε ως σήματα μετάβασης από την παρούσα κατάσταση στην επόμενη τα σήματα εισόδου της ΜΕ (το opcode) 10