ΠΛΕ- 27 Μικροεπεξεργαστές 5ο μάθημα: Αρχιτεκτονική πυρήνα: υλοποίηση ενός κύκλου Αρης Ευθυμίου
Δομή σύγχρονων υπολογιστών Κώδικας μηχανής Αρχιτεκτονικό συνόλο εντολών (InstrucDon Set Architecture ISA) είναι το τυπικό όριο μεταξύ υλικού και λογισμικού Η μικρο- αρχιτεκτονική ορίζει όμως τι είναι πράγματι κατασκευασμένο μια αρχιτεκτονική μπορεί να έχει πολλές διαφορετικές υλοποιήσεις ΠΛΕ 27 Μικροεπεξεργαστές 2-22 2
Μικροαρχιτεκτονική Περιγραφή (μικρο)αρχιτεκτονικής (block diagrams) Υλοποίηση Περιγραφή λογικών κυκλωμάτων ΠΛΕ 27 Μικροεπεξεργαστές 2-22 3
Σχεδιαστικά βήματα. Ανάλυση σετ εντολών περιγραφή μεταφοράς καταχωρητών (register transfer language) απαιτήσεις datapath: καταχωρητές, αριθμητικές πράξεις,... 2. Επιλογή εξαρτημάτων datapath και τρόπου χρονισμού 3. Συναρμολόγηση datapath 4. Ανάλυση υλοποίησης κάθε εντολής Καθορισμός τιμών για τα σήματα ελέγχου στο datapath 5. Κατασκευή της λογικής ελέγχου (control logic) ΠΛΕ 27 Μικροεπεξεργαστές 2-22 4
Υποσύνολο IPS Θα χρησιμοποιήσουμε ένα υποσύνολο των εντολών του IPS Αριθμητικές- λογικές: add, sub, slt, and, or, nor Α- Λ με σταθερές: addi, ori, sld, lui Μεταφορά από/προς μνήμη: lw, sw Διακλάδωση: beq Για άσκηση: bne, j, jal, jr ΠΛΕ 27 Μικροεπεξεργαστές 2-22 5
Περιγραφή RTL Αναλυτική περιγραφή εντολών χρησιμοποιώντας καταχωρητές και πράξεις μεταξύ τους ADD LOAD R[rd] R[rs] + R[rt];! PC PC + 4! R[rt] E[ R[rs] + sign_ext(imm6)];! PC PC + 4! STORE E[ R[rs] + sign_ext(imm6) ] R[rt];! BEQ PC PC + 4! if ( R[rs] == R[rt] ) then! PC PC + 4 + (sign_ext(imm6) << 2) else! PC PC + 4 ΠΛΕ 27 Μικροεπεξεργαστές 2-22 6
Κατάλογος εξαρτημάτων Μνήμη (E) Χρειάζεται για εντολές και δεδομένα 2 θύρες ή 2 μνήμες (στην πραγματικότητα κρυφές μνήμες) Καταχωρητές (R: 32 x 32) Ανάγνωση rs, rt Εγγραφή rt ή rd Καταχωρητής PC δείκτης τρέχουσας/επόμενης εντολής Επέκταση προσήμου (πρόσημο ή μηδέν) Ολισθητής για άμεσες σταθερές Μονάδα αριθμητικών/λογικών πράξεων (AL) αριθμ. εντολές, υπολογισμός διευθύνσεων μνήμης,... Πρόσθεση με 4 για αύξηση του PC γίνεται ταυτόχρονα με αριθμητικές πράξεις Συγκριτής για εντολές διακλάδωσης γίνεται ταυτόχρονα με υπολογισμό διεύθυνσης προορισμού διακλάδωσης ΠΛΕ 27 Μικροεπεξεργαστές 2-22 7
Προσχέδιο datapath PC instrucdon memory rd rs rt registers AL Data memory mux +4 imm. InstrucDon Fetch 2. Decode/ Register Read 3. Execute 4. emory 5. Register Write ΠΛΕ 27 Μικροεπεξεργαστές 2-22 8
Συνδιαστικά εξαρτήματα AL Πρόσθεση, αφαίρεση, σύγκριση (slt), λογικά and, or, nor κύριο εξάρτημα ο αθροιστής alu(aluop, ina, inb, out, zero); Επέκταση προσήμου απλά καλώδια module signextension(in, out); parameter IN = 6; parameter OT = 32; ina inb aluop AL Πολυπλέκτης (muldplexor mux) Ολισθητής απλά καλώδια module shiftleft(in, out); parameter N = 32; parameter SH = 2; out zero? Ι Ι Ι n- AL control ΠΛΕ 27 Μικροεπεξεργαστές 2-22 9. Sel ux log(n) out Function AND OR add subtract set-on-less-than NOR module mux2 (out, in,in, sel); parameter N = ;
Καταχωρητές (ακμοπυροδότητοι) module dff (q, d, clk); parameter N = ; D Clk Q Clk Με έλεγχο φορτώματος D Q module dff_le (q, d, lden, clk); parameter N = ; output reg [N-:] q; Clk lden D lden Clk Q D register D D 2... D n- D Q En Clk ff ff ff... ff Q Q Q 2... Q n- ΠΛΕ 27 Μικροεπεξεργαστές 2-22
Χρονισμός Τα συνδιαστικά κυκλώματα μετατρέπουν τα δεδομένα κατά τη διάρκεια κύκλων ρολογιού Μεταξύ ακμών για ακμοπυροδότητους καταχωρητές Είσοδοι, έξοδοι από/πρός καταχωρητές Η μεγαλύτερη καθυστέρηση ορίζει την ελάχιστη περίοδο ρολογιού ΠΛΕ 27 Μικροεπεξεργαστές 2-22
Register file clk regwrite 32 καταχωρητές στη register File Δύο ταυτόχρονες αναγνώσεις Μία εγγραφή Επιλογή καταχωρητών: rda (αριθμός 5bit) επιλέγει τον καταχωρητή που διαβάζεται στην έξοδο outa rdb επιλέγει καταχωρητή για την outb wrr επιλέγει σε ποιόν καταχωρητή θα γραφτούν τα δεδομένα της εισόδου datain Το ρολόι χειρίζεται μόνο τις εγγραφές Οι αναγνώσεις δουλεύουν σαν συνδιαστικό κύκλωμα στην ουσία πολύπλεξη (x2) μεταξύ των 32 καταχωρητών rda rdb wrr datain Register file 2R+W outa outb ΠΛΕ 27 Μικροεπεξεργαστές 2-22 2
Απλοποιημένη Μνήμη memwrite Address Data In DataOut 32 32 Clk module mem(iaddr, daddr, datain, memread, memwrite, iout, dout, clk); Προσπελάσεις ολοκληρώνονται σε ένα κύκλο Αναγνώσεις γίνονται οποτεδήποτε (συνδιαστικό κλυκλωμα) Εγγραφές γίνονται κατά την ακμή του ρολογιού, αν το σήμα memwrite είναι Δίπορτη (εντολές, δεδομένα) στο μοντέλο Verilog ΠΛΕ 27 Μικροεπεξεργαστές 2-22 3
Συναρμολόγηση, PC datapath clk PC Next Address Logic Προσκόμιση εντολής ανάγνωση μνήμης από τη διεύθυνση που έχει ο PC Υπολογισμός επόμενης τιμής PC: επόμενη εντολή: PC+4! διακλάδωση: (PC+4) + (sign_ext(imm6) << 2)! άλμα: (άσκηση 2) {(PC+4)[3:28], Imm26, 2 b} άλμα σε τιμή καταχωρητή: (άσκηση 2) Address Instruction emory instruction ΠΛΕ 27 Μικροεπεξεργαστές 2-22 4
PC datapath 4 ADD brtakensel jumpsel pc4 nextpc PC pc_r Address ADD branchtakenaddr emory dataout Instruction[3:] branchoffset jumptarget ΠΛΕ 27 Μικροεπεξεργαστές 2-22 5
Πράξεις με καταχωρητές μορφότυπο- R rd <= rs op rt RegWrite instr[25:2] instr[2:6] rda rdb outa rsval Op Zero AL Registers outb rtval Op2 Res aluout instr[5:] wr aluop datain ΠΛΕ 27 Μικροεπεξεργαστές 2-22 6
Πράξεις με σταθερές op rs rt constant or address 6 bits 5 bits 5 bits 6 bits Μορφότυπο Ι rt <= rs op sgnext(constant) RegWrite instr[25:2] instr[2:6] rda rdb outa rsval Op AL Zero instr[5:] RegDstSel destreg wr Registers outb rtval immed opb ALSrcSel Op2 aluop Res aluout datain instr[5:] sgn Ext ΠΛΕ 27 Μικροεπεξεργαστές 2-22 7
Πράξεις load, store Μορφότυπο Ι rt <= em[rs + sgnext(constant)] em[rs + sgnext(constant)] <= rt RegWrite instr[5:] instr[25:2] instr[2:6] RegDstSel destreg rda rdb wr datain Registers outa outb rsval rtval immed opb ALSrcSel Op Op2 AL aluop Zero Res aluout daddr emwrite emory dout instr[5:] sgn Ext datain rfwritedata memout emread resultsel ΠΛΕ 27 Μικροεπεξεργαστές 2-22 8
Λειτουργία, τύπος R παράδειγμα add, rd <= rs + rt 4 ADD branchoffset <<2 pc4 ADD brtakensel branchtakenaddr jumpsel nextpc jumptarget PC A Address emory dataout B Instruction[3:] instr[5:] instr[25:2] instr[2:6] RegDstSel destreg rda rdb wr datain RegWrite Registers outa outb C rsval rtval immed Op opb Op2 AL ALSrcSel aluop Zero Res aluout AL_ADD 4 b D daddr emwrite emory dout instr[5:] sgn Ext datain rfwritedata memout emread resultsel ΠΛΕ 27 Μικροεπεξεργαστές 2-22 9
Χρονισμός ΠΛΕ 27 Μικροεπεξεργαστές 2-22 2
Λειτουργία: load ΠΛΕ 27 Μικροεπεξεργαστές 2-22 2 Registers outa outb wr datain rda rdb Op AL Zero Res Op2 instr[25:2] instr[2:6] instr[5:] rsval rtval aluout aluop RegWrite destreg RegDstSel opb immed ALSrcSel sgn Ext instr[5:] emory dout datain daddr emwrite emread memout rfwritedata resultsel ADD 4 ADD PC branchoffset emory dataout Address Instruction[3:] pc4 branchtakenaddr brtakensel jumpsel jumptarget nextpc <<2 AL_ADD 4 b
Διακλαδώσεις BEQ if ( R[rs] == R[rt] ) then! PC PC + 4 + (sign_ext(imm6) << 2) else! PC PC + 4 Συγκρίσεις χρησιμοποιούν την AL αφαίρεση έξοδος zero σε λογικό όταν rs == rt Κατάλληλη επιλογή του επόμενου PC ΠΛΕ 27 Μικροεπεξεργαστές 2-22 22
Λειτουργία, διακλάδωση Registers outa outb wr datain rda rdb Op AL Zero Res Op2 instr[25:2] instr[2:6] instr[5:] rsval rtval aluout aluop RegWrite destreg RegDstSel opb immed ALSrcSel sgn Ext instr[5:] emory dout datain daddr emwrite emread memout rfwritedata resultsel ADD 4 ADD PC branchoffset emory dataout Address Instruction[3:] pc4 branchtakenaddr brtakensel jumpsel jumptarget nextpc <<2 ΠΛΕ 27 Μικροεπεξεργαστές 2-22 23?? x x AL_SB 4 b
Σήματα ελέγχου datapath brtakensel not taken, taken jumpsel not jump, jump RegDstSel `DST_RT (), `DST_RD () RegWrite no operadon, write ALSrcSel `OPB_RT (), `OPB_I() aluop `AL_ADD, `AL_SB, resultsel alu, memory emwrite no operadon, write emread no operadon, read ΠΛΕ 27 Μικροεπεξεργαστές 2-22 24
Λογική ελέγχου InstrucDon<3:> Inst emory <26:3> <:5> <2:25> <6:2> <:5> <:5> Op Fun Rt Rs Rd Imm6 Control brtakensel jumpsel RegWrite RegDstSel resultsel ALSrcSel aluop emwrite emread DATA PATH ΠΛΕ 27 Μικροεπεξεργαστές 2-22 25
Κατασκευή λογικής ελέγχου (Μεγάλος) πίνακας σειρές: όλες οι εντολές στήλες: όλα τα σήματα ελέγχου Συμπληρώνουμε τις τιμές ή «αδιάφορο σήμα» (x don t care) Πρέπει να βρούμε τη λογική έκφραση κάθε σήματος ελέγχου Εντολές κωδικοποιημένες με αριθμούς στα πεδία opcode (3:26) και funct (6:) αποκωδικοποίηση (decode) ΠΛΕ 27 Μικροεπεξεργαστές 2-22 26
Ειδικά σήματα ελέγχου Κάποια σήματα ελέγχου εξαρτώνται από τις τιμές των δεδομένων στο datapath όπως το brtakensel για εντολές που δεν είναι διακλαδώσεις για διακλαδώσεις που δεν ακολουθούνται για διακλαδώσεις που ακολουθούνται Υλοποίηση: brtakensel = branch & taken branch σήμα που δείχνει ότι η εντολή είναι διακλάδωση taken σήμα από το datapath (εξαρτώμενο από την τιμή zero) ΠΛΕ 27 Μικροεπεξεργαστές 2-22 27
Υλοποίηση σε Verilog Το datapath έχει υλοποιηθεί χρησιμοποιώντας structural verilog δηλαδή χρησιμοποιώντας instances καταχωρητών, AL, Η λογική ελέγχου έχει υλοποιηθεί σε ένα μεγάλο always block εκτός από το σήμα brtakensel που υλοποιείται με ένα condnuous assignment ΠΛΕ 27 Μικροεπεξεργαστές 2-22 28