ΕΠΛ221: Οργάνωση Υπολογιστών και Συμβολικός Προγραμματισμός Κεφ. 4: Ο επεξεργαστής 1. Διάδρομος δεδομένων και μονάδα ελέγχου 2. Pipelining (Αν υπάρχει χρόνος) Θα ξαναπάμε πίσω στο Κεφ.3αργότερα. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 1
Ο επεξεργαστής : Διάδρομος Δεδομένων και Έλεγχος Σε αυτό το κεφάλαιο θα μελετήσουμε την υλοποίηση του διαδρόμου δεδομένων και της μονάδας ελέγχου για το σύνολο εντολών της μηχανής ΜΙPS. Μία υλοποίηση για τις βασικές εντολές του MIPS: - Εντολές μνήμης (memory reference), δηλ. την load word(lw) και store word(sw). - Αριθμητικέςκαιλογικέςεντολές, δηλ. add, sub, and, or και slt. - Εντολή σύγκρισης branch equal(beq) και τέλος - Εντολή jump(j). 32 integer registers Memory (instruction and data) ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 2
Data PC Address Instr. Instr. Memory Register # Register # Register # Registers Data Memory Address Data PC, Data and Instruction Memory Register File:Το αρχείο καταχωρητών είναι μια δομή που περιέχει τη κατάσταση των 32 καταχωρητών του επεξεργαστή σε μια μηχανή. Παρέχει δύο εισόδους για διάβασμα και μια είσοδο για εγγραφή. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 3
Πέντε Στάδια για την εκτέλεση μιας Εντολής (Fetch-Execute Cycle) 1. Προσκόμιση Εντολής (ifetch) 2. Αποκωδικοποίηση, Πρόσβαση στο Αρχείο Καταχωρητών (decode and register read) 3. Eκτέλεση (Execution) -alu,υπολογισμός διεύθυνσης, branch-completion, jump 4. Πρόσβαση στη μνήμη ή R-type πρόσβαση σε καταχωρητές (Memory Access and R-type completion) 5. Εντολές μνήμης-- αποθήκευση σε καταχωρητή (Memory read completion) ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 4
Μια περίληψη της υλοποίησης Ο μετρητής προγράμματος (PC-Program Counter) είναι ένας 32-bit καταχωρητής ο οποίος έχει αποθηκευμένη τη διεύθυνση της επόμενης εντολής που θα εκτελεστεί. Γιακάθεεντολήταπρώταδύοβήματαείναιταίδια: 1. Στέλλεται το PC στη μνήμη που περιέχει τον κώδικα - προσκομίζεται (fetch) ηεντολήαπότημνήμη. 2. Διαβάζεται ένας ή δύο καταχωρητές - χρησιμοποιώντας τα πεδία της εντολής, για να εντοπιστούν οι καταχωρητές που θα διαβαστούν τα δεδομένα τους, - π.χ. για την εντολή load χρειάζεται να διαβαστεί μόνο ένας καταχωρητής αλλά για άλλες εντολές πρέπει να διαβαστούν δύο καταχωρητές. Μετά από αυτά τα βήματα, οι ενέργειες που θα ακολουθήσουν για την ολοκλήρωση της εκτέλεσης της κάθε εντολής εξαρτώνται από τον τύπο της. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 5
Τμήμα του διαδρόμου δεδομένων που χρησιμοποιείται για: προσκόμιση των εντολών από τη μνήμη και την αύξηση του μετρητή προγράμματος(pc) κατά 4 bytes. Add PC Address 4 Instr. Instr. Memory ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 6
Εντολές τύπου R-Αριθμητικές και Λογικές Εντολές Οι αριθμητικές και λογικές εντολές (πχ add, sub και slt) διαβάζουν δύο καταχωρητές, εκτελούν μια λειτουργία και γράφουν το αποτέλεσμα σε ένα καταχωρητή. Για την υλοποίηση της λειτουργίας των εντολών τύπου R χρησιμοποιούμε το αρχείο των καταχωρητών και τη. 5 5 5 reg. 1 reg. 2 32x32 reg. 3 Write reg1 Write data data 1 data 2 control zero result RegWrite a. Registers b. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 7
5bits χρειάζονται για να προσδιορίσουμε έναν από τους 32 καταχωρητές, Τα δεδομένα εισόδου και εξόδου είναι μεγέθους 32 bits Η παίρνει δύο εισόδους μεγέθους 32 bits και παράγει ένα αποτέλεσμα 32-bit. Hελέγχεται από το 3-bit σήμα Διάδρομος δεδομένων για τις εντολές τύπου R. reg. 1 control Instru ction reg. 2 data 1 zero Write reg. Write data data 2 result RegWrite ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 8
Εντολές Μνήμης - load και store Instructions lw $1, offset_value($2) ή sw $1, offset_value($2). Αυτές οι εντολές υπολογίζουν τη διεύθυνση της μνήμης προσθέτοντας την τιμή του καταχωρητή $2 στο 16-bit πεδίο που δίνει τη διεύθυνση της βάσης του πίνακα(offset-value). Λειτουργική μονάδα για προέκταση σήματος (sign-extend) για το 16-bit πεδίο που πρέπει να μετατραπεί σε 32-bit για να μπορέσει να είναι είσοδος στην Διάδρομος δεδομένων για τις εντολές load και store. Instru ction reg. 1 reg. 2 Write reg. data 1 res. Address MemWrite Write data data 2 data RegWrite Write data Mem 16 32 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 9
Εντολή Σύγκρισης - Branch Equal Instruction Για παράδειγμα η εντολή: beq $1, $2, offset έχει τρεις τελεστές: - δύο καταχωρητές που συγκρίνονται για ισότητα - ένα 16-bit offset για υπολογισμό της διεύθυνσης-στόχου (target address) που θα κατευθυνθεί η εκτέλεση του προγράμματος. Η αρχιτεκτονική καθορίζει τη βάση για υπολογισμό της διεύθυνσης της συνθήκης (branch address) ως τη διεύθυνση που ακολουθεί τη συνθήκη (target address). Αφού υπολογίζουμε το PC+4 (η διεύθυνσητηςεπόμενηςεντολής) για τη προσκόμιση της εντολής στο διάδρομο δεδομένων είναι εύκολο να χρησιμοποιήσουμε αυτή τη τιμή ως τη βάση για υπολογισμό της διεύθυνσηςστόχος της συνθήκης (branch target address). ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 10
Επίσης το πεδίο offset μετακινείται 2bitsαριστερά για να είναι word offset. Αυτή η μετακίνηση είναι βοηθητική επειδή αυξάνεται η αποτελεσματικότητα του πεδίου offset κατά ένα παράγοντα του 4. PC + 4 Add Branch target reg. 1 Instru ction reg. 2 Write reg. data 1 zero Write data data 2 shift left by 2 RegWrite 16 32 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 11
Ένα Απλό Σχήμα Υλοποίησης: Δημιουργία ενός μονού διαδρόμου δεδομένων Ο διάδρομος δεδομένων των εντολών τύπου R και ο διάδρομος δεδομένων των εντολών μνήμης είναι σχεδόν οι ίδιοι. Οι μόνες διαφορές είναι : Η δεύτερη είσοδος για την είναι είτε καταχωρητής (R type instructions) είτε sign-extended (memory instructions). H τιμή που γράφεται στο καταχωρητή αποτελέσματος προέρχεται από την ( R type) ήαπότημνήμη (load). ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 12
reg. 1 control Instru ction reg. 2 data 1 zero Write reg. Write data data 2 result R-type and beq RegWrite reg. 1 Instruction reg. 2 Write reg. data 1 res. Address MemWrite lw/sw Write data data 2 data RegWrite Write data Mem 16 32 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 13
Πρέπει να υποστηρίξουμε δύο διαφορετικές πηγές για τη δεύτερη είσοδο της και δύο διαφορετικές πηγές για τα δεδομένα που αποθηκεύονται στο αρχείο των καταχωρητών. Ένας πολυπλέκτης τοποθετείται στην είσοδο της και Ένας πολυπλέκτης για τα δεδομένα εισόδου του αρχείου των καταχωρητών. Instru ction reg. 1 reg. 2 Write reg. data 1 data 2 res. Address MemWrite data Write data RegWrite Write data Mem 16 32 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 14
Συνδυασμός του διάδρομου δεδομένων για τη προσκόμιση της εντολής από τη μνήμη προστίθεται με τον διάδρομο δεδομένων που χειρίζεται τις εντολές μνήμης και τις R-type εντολές. PC Address Instru ction Instruction Memory reg. 1 reg. 2 Write reg. Write data data 1 data 2 RegWrite res. MemWrite Address data Write data Mem 4 Add 16 32 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 15
Διάδρομος δεδομένων για τις βασικές εντολές του MIPS: load/store,, branch (ένα κύκλο ρολογιού.) ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 16
Μονάδα Έλεγχου της Αριθμητικής και Λογικής Μονάδας ( control) H έχει τρεις εισόδους ελέγχου, αλλά μόνο πέντε από τους οκτώ (2 3 ) συνδυασμούς χρησιμοποιούνται control Function Για τις εντολές μνήμης χρησιμοποιούμε Input 000 AND την για υπολογισμό της διεύθυνσης μνήμης εκτελώντας πρόσθεσης. 001 010 110 OR ADD Subtract Για τις εντολές τύπου R η χρειάζεται 111 Set-on-less-than να εκτελέσει μια από τις πέντε πράξεις ανάλογα με την τιμή του 6-bit πεδίου της εντολή (function field). Για την branch equal εντολή η πρέπει να εκτελέσει την πράξη της αφαίρεσης. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 17
Μπορούμε να παράξουμε τα 3-bit ελέγχου της ( control inputs) χρησιμοποιώντας μια μικρή συνδυαστική μονάδα ελέγχου που έχει ως εισόδους το πεδίο function της εντολής και ένα πεδίο ελέγχου 2-bit που θα ονομάζουμε Op. Το Op καθορίζεται από το opcode πεδίο της εντολής και προσδιορίζει τη πράξη που πρέπει να εκτελεστεί, π.χ. > 00 - πρόσθεση για την εντολή load και store, > 01 - αφαίρεση για την εντολή beq, > 10 - λειτουργία που προσδιορίζεται από το πεδίο function της εντολής. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 18
Η παραγωγή των 3-bit ελέγχου της βασίζεται στο 2-bit πεδίο Op και στο 6-bit πεδίο function. Instruction Op Instruction Function Desired control opcode operation code action Input LW 00 load word xxxxxx add 010 SW 00 store word xxxxxx add 010 Branch equal 01 branch equal xxxxxx subtract 110 R-type 10 add 100000 add 010 R-type 10 subtract 100010 subtract 110 R-type 10 AND 100100 and 000 R-type 10 OR 100101 or 001 R-type 10 set-on less-than 101010 set-on-less-than 111 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 19
Ο πίνακας αληθείας για τα 3 bits ελέγχου του F5 F4 F3 F2 F1 F0 Operation OP1 Op0 0 0 x x x x x x 010 x 1 x x x x x x 110 1 x x x 0 0 0 0 010 1 x x x 0 0 1 0 110 1 x x x 0 1 0 0 000 1 x x x 0 1 0 1 001 1 x x x 1 0 1 0 111 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 20
Σχεδιασμός του Κύριου Μέρους της Μονάδας Ελέγχου - R-type 0 rs rt rd shamt funct 31-26 25-21 20-16 15-11 10-6 5-0 - Load & Store 35 or 43 rs rt address 31 26 25-21 20-16 15-0 -Branch 4 rs rt address 31-26 25-21 20-16 15-0 Το opcode bits 31-26 Op[5-0]. rs και rt bits 25-21 και 20-16, αντίστοιχα. Ο καταχωρητής βάσης (base register) 25-21 (rs). Το 16-bit πεδίο offset ( branch equal, load και store) bits 15-0. Ο καταχωρητής προορισμού (Χρήση Πολυπλέκτη) είναι στη θέση 20-16 (rt) για την εντολή load. Για τις εντολές R-type βρίσκεται στη θέση 15-11 bit ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 21
Διάδρομος Δεδομένων με μονάδα έλεγχου Όλοι οι πολυπλέκτες έχουν δύο εισόδους, ο καθένας χρειάζεται μια γραμμή ελέγχου. Στο σχήμα φαίνονται επίσης οι 7 single-bit γραμμές ελέγχου και το 2-bit σήμα ελέγχου Op. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 22
Διάδρομος δεδομένων για τις βασικές εντολές του MIPS: load/store,, branch (ένα κύκλο ρολογιού.) Missing a mux ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 23
ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 24
Signal Effect when deasserted Effect when asserted Mem None Data memory contents at the read address are put on read data output. MemWrite None Data memory contents at address given by write address is replaced by value on write data input. Src RegDst The second operand comes from the second register file output. The register destination number for the Write register comes from the rt field. The second operand is the signextended lower 16-bits of the instruction. The register destination number for the Write register comes from the rd field. RegWrite None The register on the Write register input is written into with the value on the write data input. PCSrc MemtoReg The PC is replaced by the output of the adder that computes the value of PC+4. The value fed to the register write data input comes from the. The PC is replaced by the output of the adder that computes the branch target. The value fed to the register write data input comes from the data memory. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 25
Η είσοδος στη μονάδα ελέγχου είναι το 6-bit opcode της εντολής. Η έξοδος της μονάδας ελέγχου αποτελείται απο: 3 1 bit σήματα (RegDst, AluScr, MemtoReg) που χρησιμοποιούνται για έλεγχο των πολυπλέκτων, PC 4 address Instruction memory Add Instruction [31 0] Instruction [31 26] Instruction [25 21] Instruction [20 16] Instruction [15 11] Instruction [15 0] RegDst Branch Mem MemtoReg Op MemWrite Src RegWrite Instruction [5 0] 16 Sign 32 extend 3 σήματα (RegWrite, Mem, MemWrite) για έλεγχο γραφής και ανάγνωσης στο αρχείο των καταχωρητών και στη μνήμη δεδομένων. ένα 1-bit σήμα που χρησιμοποιείται για καθορισμό του branch (Branch) ένα 2-bits σήμα για την (Op). Μια πύλη AND χρησιμοποιείται για συνδυασμό του σήματος ελέγχου branch με την έξοδο μηδέν του. Control 0 M u x 1 register 1 data 1 register 2 Registers Write data 2 register Write data Shift left 2 0 M u x 1 control Add result Zero result Write data 0 M u x 1 Address Data memory data 1 M u x 0 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 26
Σ αυτό το πίνακα ορίζονται οι τιμές (0,1,Χ) που πρέπει να πάρουν τα σήματα ελέγχου για κάθε πεδίο opcode της εντολής Instruct RegDst Src Mem Reg Mem Mem Branch to Write Write Op1 Op0 Reg R-type 1 0 0 1 0 0 0 1 0 lw 0 1 1 1 1 0 0 0 0 sw x 1 x 0 0 1 0 0 0 beq x 0 x 0 0 0 1 0 1 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 27
Εκτέλεση της εντολής R-type--add $x,$y,$z. 1. Μια εντολή προσκομίζεται από τη μνήμη εντολών το PC αυξάνεται 2. Οι καταχωρητές $y και $z διαβάζονται από το αρχείο των καταχωρητών. Επίσης η κύρια μονάδα ελέγχου υπολογίζει τις τιμές για τις γραμμές ελέγχου. 3. Το λειτουργεί πάνω στα δεδομένα που διαβάστηκαν από το αρχείο των καταχωρητών χρησιμοποιώντας το function code της εντολής, για να επιλέξει την λειτουργία της. 4. Το αποτέλεσμα από την γράφεται στο αρχείο των καταχωρητών χρησιμοποιώντας bits 15-11 από την εντολή για να επιλέξει τον καταχωρητή προορισμού (εξόδου) $x. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 28
0 4 Add Instruction [31 26] Control RegDst Branch Mem MemtoReg Op MemWrite Src RegWrite Shift left 2 Add result M u x 1 PC address Instruction memory Instruction [31 0] Instruction [25 21] Instruction [20 16] Instruction [15 11] 0 M u x 1 register 1 data 1 register 2 Registers Write data 2 register Write data 0 M u x 1 Zero result Address Write data Data memory data 1 M u x 0 Instruction Fetch Instruction [15 0] Register - Control Signals Execute Instruction [5 0] 16 Sign 32 extend control Register Write ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 29
Εκτέλεση της εντολής load-- lw $x,offset($y). 1. Η εντολή προσκομίζεται από τη μνήμη εντολών και αυξάνεται η τιμή του PC. 2. Ο καταχωρητής ($y) διαβάζεται από το αρχείο των καταχωρητών. 3. Η υπολογίζει το άθροισμα της τιμής που διαβάστηκε από το αρχείο των καταχωρητών και την σταθερά (προέκταση 16bits της εντολής). 4. Το άθροισμα από το χρησιμοποιείται ως η διεύθυνση για τη μνήμη των δεδομένων. 5. Τα δεδομένα από τη μονάδα μνήμης γράφονται στο αρχείο του καταχωρητή. Ο καταχωρητής προορισμού δίνεται από τα 20-16 bits της εντολής. Για την εντολή store η κυριότερη διαφορά είναι στο έλεγχο μνήμης όπου πρέπει να προσδιοριστεί έλεγχος γραφής και όχι διαβάσματος. - Η λειτουργία γραφής των δεδομένων της μνήμης στο αρχείο των καταχωρητών δεν θα υπάρχει. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 30
0 4 Add Instruction [31 26] Control RegDst Branch Mem MemtoReg Op MemWrite Src RegWrite Shift left 2 Add result M u x 1 PC address Instruction memory Instruction [31 0] Instruction [25 21] Instruction [20 16] Instruction [15 11] Instruction [15 0] Instruction Fetch Register - Control Signals Address Calculation Memory read Register Write 0 M u x 1 register 1 data 1 register 2 Registers Write data 2 register Write data Instruction [5 0] 16 Sign 32 extend ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 31 0 M u x 1 control Zero result Address Write data Data memory data 1 M u x 0
Εκτέλεση της εντολής branch-on-equal (υπό συνθήκη) beq $x,$y,offset. 1. Η εντολή προσκομίζεται από τη μνήμη εντολών και αυξάνεται η τιμή του PC. 2. Δύο καταχωρητές ($x,$y) διαβάζονται από το αρχείο των καταχωρητών. 3. Η αφαιρεί τις τιμές των δεδομένων που διάβασε από το αρχείο των καταχωρητών. Η τιμή του PC+4 προστίθεται στο σταθερά (sign-extended lower 16 bits της εντολής (offset)), το αποτέλεσμα είναι η διεύθυνση - στόχος του branch. 4. Τo αποτέλεσμα μηδέν από την χρησιμοποιείται για να επιλέξουμε το αποτέλεσμα του αθροιστή που θα αποθηκεύσουμε στο PC. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 32
0 4 Add Instruction [31 26] Control RegDst Branch Mem MemtoReg Op MemWrite Src RegWrite Shift left 2 Add result M u x 1 PC address Instruction memory Instruction [31 0] Instruction [25 21] Instruction [20 16] Instruction [15 11] Instruction [15 0] 0 M u x 1 register 1 data 1 register 2 Registers Write data 2 register Write data Instruction Fetch Register - Control Signals -Compare, ADD Address calculation PC Write Instruction [5 0] 16 Sign 32 extend ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 33 0 M u x 1 control Zero result Address Write data Data memory data 1 M u x 0
Η λειτουργία της μονάδας ελέγχου καθορίζεται πλήρως από το πίνακα. Instruct RegDst Src Mem Reg Mem Mem Branch to Write Write Op1 Op0 Reg R-type 1 0 0 1 0 0 0 1 0 lw 0 1 1 1 1 0 0 0 0 sw x 1 x 0 0 1 0 0 0 beq x 0 x 0 0 0 1 0 1 Κωδικοί εντολών Name Opcode in decimal Op5 Op4 Op3 Op2 Op1 Op0 R-format 0 0 0 0 0 0 0 lw 35 1 0 0 0 1 1 sw 43 1 0 1 0 1 1 beq 4 0 0 0 1 0 0 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 34
Αληθοπίνακας της λειτουργίας της μονάδας ελέγχου Inputs Outputs R-format lw sw beq Jump Op5 0 1 1 0 Op4 0 0 0 0 Op3 0 0 1 0 Op2 0 0 0 1 Op1 0 1 1 0 Op0 0 1 1 0 Regdst 1 0 x X Src 0 1 1 0 MemtoReg 0 1 x X RegWrite 1 1 0 0 Mem 0 1 0 0 MemWrite 0 0 1 0 Branch 0 0 0 1 Op1 1 0 0 0 Op0 0 0 0 1 JUMP 0 0 0 0 1 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 35
Data PC Address Instr. Instr. Memory Register # Register # Register # Registers Data Memory Address Data ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 36
Υλοποίηση της Εντολής Άλμα (jump) Πώς μπορεί να επεκταθεί η υλοποίηση ώστε να περιέχει και την εντολή jump? Πως θα δοθούν (αρχικές) τιμές στις νέες γραμμές ελέγχου? Ηεντολή jump μοιάζει με την εντολή branch, αλλά υπολογίζει διαφορετικά τη διεύθυνση-στόχος PC και εκτελείται πάντα. Όπως στη branch, τα loworder2bits της διεύθυνσης (της jump) είναι πάντοτε 00. Τα υπόλοιπα lower 26 bits από αυτά της 32 bits διεύθυνσης προέρχονται από το 26 bit immediate πεδίο της εντολής. Τα upper 4 bits της διεύθυνσης προέρχονται από το τρέχον PC. Έτσι μπορούμε να υλοποιήσουμε την jump αποθηκεύοντας στο PC την ένωση των: - upper four bits του τρέχον PC (bits 31-28) - τα 26 bits του πεδίου immediate της εντολής jump. - τα bits 00 ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 37
Προσθήκες στο βασικό σχεδιασμό (Σχήμα 5.19) για την υλοποίηση της Εντολής Άλμα (jump) Προσθέτουμε έναν επιπλέον πολυπλέκτη για επιλογή της πηγής για τη καινούργια τιμή του PC που θα είναι είτε PC+4, είτε branch target PC, είτε jump target PC. Προσθέτουμε ένα επιπλέον σήμα ελέγχου χρειάζεται για τον επιπρόσθετο πολυπλέκτη. Το σήμα ελέγχου ονομάζεται Jump που ενεργοποιείτε όταν η εντολή είναι jump, δηλ. όταν το opcode είναι 2. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 38
ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 39
I-type artithmetic? ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 40
Προβλήματα με την υλοποίηση ενός κύκλου Εξ ορισμού ο κύκλος ρολογιού πρέπει να έχει το ίδιο μήκος (μέγεθος) για κάθε εντολή, άρα το CPI θα είναι ίσο με 1. Ο κύκλος ρολογιού καθορίζεται από το μεγαλύτερο πιθανό μονοπάτι στη μηχανή. Αυτό το μονοπάτι είναι σίγουρα η εντολή load που χρησιμοποιεί πέντε λειτουργικές μονάδες στη σειρά: μνήμη εντολών, αρχείο των καταχωρητών,, μνήμη δεδομένων και ξανά το αρχείο καταχωρητών. Αν και το CPI είναι 1, ηαπόδοσητηςυλοποίησηςενόςκύκλουδεν είναι η καλύτερη δυνατή αφού μερικοί τύποι εντολών μπορούσαν να εκτελεστούν σε μικρότερο κύκλου ρολογιού. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 41
Απόδοση της υλοποίησης ενός κύκλου Υπέθεσε ότι ο χρόνος λειτουργίας των κύριων λειτουργικών μονάδων για αυτή την υλοποίηση είναι : - Μονάδα μνήμης: 2ns - Αριθμητική και λογική μονάδα () και αθροιστές (Adders): 2ns - Αρχείο των καταχωρητών (διάβασμα ή γραφή): 1ns Υποθέτοντας ότι οι πολυπλέκτες, η μονάδα ελέγχου, οι προσβάσεις του PC, η μονάδα προέκτασης του πρόσημου και τα καλώδια δεν έχουν καθυστέρηση, ποία από τις ακόλουθες υλοποιήσεις θα είναι πιο γρήγορη και κατά πόσο; 1. Μια υλοποίηση στην οποία κάθε εντολή εκτελείται σε ένα κύκλο ρολογιού καθορισμένου μήκους. 2. Μια υλοποίηση στην οποία κάθε εντολή εκτελείται σε ένα κύκλο ρολογιού χρησιμοποιώντας μεταβλητά μήκος ρολογιού, το οποίο για κάθε εντολή είναι το μικρότερο δυνατό. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 42
Συγκρίνουμε αρχικά τους χρόνους εκτέλεσης του CPU CPU execution time = Instruction count x CPI x Clock cycle time Αφού το CPI πρέπει να είναι 1, απλοποιούμε το τύπο σε, CPU execution time = Instruction count x Clock cycle time Χρειάζεται να βρούμε το Clock cycle time για τις δύο υλοποιήσεις. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 43
Το κρίσιμο μονοπάτι (critical path) για τις διαφορετικές εντολές φαίνεται στον πιο κάτω πίνακα: Instruction Functional units used by the Instruction type type R-format I-fetch Reg-Access Reg-Access Load word I-fetch Reg Memory acces Reg-Access Store word I-fetch Reg Memory access Branch I-fetch Reg Jump I-fetch ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 44
Χρησιμοποιώντας αυτούς τα κρίσιμα μονοπάτια μπορούμε να υπολογίσουμε το απαιτούμενο μέγεθος για κάθε τύπο εντολής : Instruction type Instruction memory Register read Data memory Register write Total R-format 2 1 2 0 1 6 ns Load word 2 1 2 2 1 8 ns Store word 2 1 2 2 7 ns Branch 2 1 2 0 5 ns Jump 2 2 ns Ο κύκλος ρολογιού για τη μηχανή με ένα κύκλο για όλες τις εντολές είναι 8 ns, Για τη μηχανή με μεταβλητό κύκλο θα έχουμε κύκλο 2 ns - 8 ns. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 45
Μπορούμε να βρούμε το μέσο μέγεθος του κύκλου ρολογιού για τη δεύτερη μηχανή χρησιμοποιώντας τις πιο πάνω πληροφορίες και ένα καταμερισμό της συχνότητας εντολών: -24%loads, -12%stores, - 44 %, - 18 % branches - 2 % jumps. Έτσι ο μέσος χρόνος κάθε εντολής με μεταβλητό κύκλο είναι : CPU clock cycle = 8x24% + 7x12% + 6x44% + 5x18% + 2x2% = 6.3 ns. Αφού η υλοποίηση του μεταβλητού κύκλου έχει μικρότερο μέσο κύκλο ρολογιού σημαίνει ότι είναι και γρηγορότερη. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 46
CPU performance variable clock = CPU execution time single clock CPU performance single clock CPU execution time variable clock = IC x CPU clock cycle single clock IC x CPU clock cycle variable clock CPU performance variable clock = CPU clock cycle single clock CPU performance single clock CPU clock cycle variable clock = 8.0 = 1.27 6.3 Hυλοποίηση με μεταβλητό ρολόι θα είναι 1.27 φορές γρηγορότερη. Η υλοποίηση του μεταβλητού κύκλου ρολογιού για κάθε εντολή είναι πολύ δύσκολη και το κόστος πολύ μεγάλο. Χρηση στο παρελθόν για της μηχανές CISC. Η Υλοποίηση της διασωλήνωση γίνεται πάρα πολύ δύσκολη και λιγότερο αποδοτική ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 47
Απόδοση της υλοποίησης ενός κύκλου με Εντολές Κινητής Υποδιαστολής Υποθέστε ότι: πρόσθεση κινητής υποδιαστολής = 8 ns πολλαπλασιασμό κινητής υποδιαστολής = 16 ns Όλοι οι χρόνοι των υπόλοιπων λειτουργικών μονάδων είναι οι ίδιοι με το πιο πάνω παράδειγμα. Χρησιμοποιώντας το καταμερισμό εντολών Loads 31 % Stores 21 % R-format 27 % Branch 5 % Jumps 2 % FP add/sub 7 % FP mul/div 7 % ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 48
Βρείτε την αναλογία της απόδοσης μεταξύ μιας υλοποίησης μεμεταβλητό κύκλο ρολογιού και μιας υλοποίησης με σταθερό κύκλο ρολογιού. ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 49
CPU performance variable clock = CPU clock cycle single clock CPU performance single clock CPU clock cycle variable clock Ο χρόνος κύκλου για ένα κύκλο μηχανής θα είναι ίσος με το μεγαλύτερο χρόνο εντολής που είναι ο πολλαπλασιασμός κινητής υποδιαστολής =2 +1+16+1=20ns. Ο χρόνος για εντολή πρόσθεσης κινητής υποδιαστολής =2+1+8 +1= 12ns. Έτσι ο μέσος όρος του μήκους του ρολογιού θα είναι : CPU clock cycle = 8x0.31+7x0.21+6x0.27+5x0.05+2x0.02+20x0.07+12x0.07 =7ns ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 50
Η βελτίωση στη αποδοτικότητα είναι: CPU performance variable clock = CPU clock cycle single clock CPU performance single clock CPU clock cycle variable clock = 20/7 = 2.9 Μια υλοποίηση με μεταβλητό ρολόι θα μας επέτρεπε να βελτιώσουμε την απόδοση περισσότερο από δύο φορές. Θα δούμε πως γίνετε εφικτό με pipelining ΕΠΛ 221-- Κεφάλαιο 4: Ο επεξεργαστής: ιάδρομος δεδομένων και μονάδα έλεγχου 51