1 / 64

Pipelining – Βασικές αρχές

Pipelining – Βασικές αρχές. Κ. Διαμαντάρας Α. Βαφειάδης Τμήμα Πληροφορικής ΑΤΕΙ Θεσσαλονίικης 2011. Η βασική ιδέα.

naida-good
Download Presentation

Pipelining – Βασικές αρχές

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Pipelining – Βασικές αρχές Κ. Διαμαντάρας Α. Βαφειάδης Τμήμα Πληροφορικής ΑΤΕΙ Θεσσαλονίικης 2011

  2. Η βασική ιδέα • Η βασική αρχή Pipeline μπορεί να εφαρμοστεί στη Κατασκευή ποδηλάτων. Γενικά μπορεί να εφαρμοστεί σε κάθε διαδικασία που πραγματοποιείται σε φάσεις ανεξάρτητες η μια από την άλλη. • Τα μέρη της διαδικασίας pipeline είναι: • Οι Φάσεις συναρμολόγησης ενός ποδηλάτου • Φάση Α: συγκόλληση του σκελετού • Φάση Β: τοποθέτηση σέλας και τιμονιού • Φάση Γ: τοποθέτηση τροχών • Φάση Δ: τοποθέτηση φρένων και ταχυτήτων • Φάση Ε: τοποθέτηση φώτων, σχάρας, και δυναμό • Οι εργάτες που πραγματοποιούν την συναρμολόγηση • Στο παράδειγμα οι εργάτες είναι πέντε και ο καθένας ασχολείται αποκλειστικά σε μια από τις πέντε φάσεις Κ. Διαμαντάρας – Α. Βαφειάδης

  3. Η βασική ιδέα Χρόνος γεμίσματος της Pipeline Κ. Διαμαντάρας – Α. Βαφειάδης

  4. Επιτάχυνση σε ισόχρονη pipeline • Αν Μ το πλήθος των φάσεων τότε ύστερα από Ν περιόδους θα έχουν ολοκληρωθεί Ν-(Μ-1) ποδήλατα. Στο παράδειγμα Ν-4 ποδήλατα. • Αντίστροφα P ποδήλατα θέλουν P+(M-1) περιόδους για να πραγματοποιηθούν. Στο παράδειγμα σε P+4 περιόδους • Ονομάζουμε επιτάχυνση της Pipeline το λόγο χρόνος παραγωγής P ποδηλάτων με ένα εργάτη ( =50P ) χρόνος παραγωγής P ποδηλάτων με pipeline ( = 4*10 + 10P ) όπου κάθε φάση = 10min Οπότε επιτάχυνση = 50P/(10P+40) = 5/(1+4/P) • Αν P  ∞ τότε επιτάχυνση  5 (Θεωρητική επιτάχυνση) Στο παραπάνω μοντέλο θεωρούμε ότι όλες οι φάσεις είναι ισόχρονες Κ. Διαμαντάρας – Α. Βαφειάδης

  5. Επιτάχυνση σε μη ισόχρονη pipeline • Διάρκεια φάσεων Φάση Α:10min Φάση Β:9min Φάση Γ:7min Φάση Δ:10min Φάση Ε:12min Σύνολο έργου 48 min • Aν F= 12 (Ο χρόνος φάσης του βραδύτερου εργάτη) τότε Επιτάχυνση = (48P) / (12P +4*12) = 4 / (1+4/P) • Αν P  ∞ τότε P  4 (Θεωρητική επιτάχυνση) Κ. Διαμαντάρας – Α. Βαφειάδης

  6. Ποσοστό απασχόλησης σε μη ισόχρονη pipeline Υπάρχουν σχόλια ? Κ. Διαμαντάρας – Α. Βαφειάδης

  7. Συμπεράσματα • Σκοπός της τεχνικής pipelining είναι η επιτάχυνση της εκτέλεσης μιας διαδικασίας με τον τεμαχισμό της σε επί μέρους φάσεις οι οποίες μπορούν να εκτελούνται ταυτόχρονα για ξεχωριστές διαδικασίες • Η επιτάχυνση που επιτυγχάνεται δεν είναι μόνο συνάρτηση του αριθμού των φάσεων αλλά και της εξισορρόπησης μεταξύ των χρόνων εκτέλεσης των διαφόρων φάσεων. • Με άλλα λόγια αν τεμαχίσουμε μια διαδικασία σε 10 επί μέρους φάσεις αυτό δε σημαίνει ότι θα επιτύχουμε επιτάχυνση της διαδικασίας κατά 10 φορές αν δεν έχουμε προηγουμένως φροντίσει οι φάσεις αυτές να απαιτούν τον ίδιο (ή περίπου τον ίδιο) χρόνο εκτέλεσης. Κ. Διαμαντάρας – Α. Βαφειάδης

  8. DLX: έναςυποθετικός υπολογιστής • Απλό σύνολο εντολών αρχιτεκτονικής load/store • Καταχωρητές (Registers) • 32-bit general purpose registers (GPR): R0, R1, ..., R31. R0 = πάντα 0. • 32 floating-point registers (FPR), μπορούν να χρησιμοποιηθούν ως • 32 single precision (32-bit) registers F0,F2,...,F31 ή • 16 double-precision (64-bit) registers. Οικαταχωρητές FPR των 64-bit ονομάζονται F0,F2,...,F15 • Data types • for integer data • 8-bit bytes • 16-bit half words • 32-bit words • for floating point • 32-bit single precision • 64-bit double precision Κ. Διαμαντάρας – Α. Βαφειάδης

  9. O DLX υποθετικός υπολογιστής • Μνήμη: • byte addressable • Big Endianmode • Μήκος διεύθυνσης : 32-bit • 2 addressing modes (immediate καιdisplacement). • Οι αναφορές στη μνήμη είναιload/store μεταξύ μνήμης και GPRs ήFPRs • πρόσβαση στους GPR μπορεί να γίνει σε έναbyte, σε ένα half-word, ή σε έναword Κ. Διαμαντάρας – Α. Βαφειάδης

  10. DLX Addressing ADD R1, R2,#17;Πρόσθεσε στον καταχωρητή R2 τον ;αριθμό 17 (δεκαδικό) και το αποτέλεσμα στον ;R1(άμεση κλήση) LW R1, 120(R2);Φόρτωσε στον καταχωρητή R1 το ;περιεχόμενο της θέσης μνήμης 120+R2 ;(κλήση με μετατόπιση) LW R4, 0(R1);Φόρτωσε στον καταχωρητή R4 το ;περιεχόμενο της θέσης μνήμης R1 ;(έμμεση κλήση) LW R2, 1520(R0);Φόρτωσε στον καταχωρητή R2 το ;περιεχόμενο της θέσης μνήμης 1520, αφού; ο καταχωρητής R0 είναι πάντοτε μηδέν ;(απόλυτη κλήση) Κ. Διαμαντάρας – Α. Βαφειάδης

  11. DLX:Τύποι εντολών I Type (immediate) LW R1, 30(R2)Load word Regs[R1] <-Mem[30+Regs[R2]] LW R1, 1000(R0)Load word Regs[R1] <-Mem[1000+0] SW 500(R4), R3Store wordMem[500+Regs[R4]] <-Regs[R3] SF 40(R3), F0Store floatMem[40+Regs[R3]] <-Regs[F0] JR  R3 Jump registerPC <- Regs[R3] ADDI R1, R2, #3 Add immediate Regs[R1] <- Regs[R2] + 3 BEQZ R4, name Branch equal zero if (Regs[R4]==0) PC <- name; Κ. Διαμαντάρας – Α. Βαφειάδης

  12. DLX: Τύποι εντολών R Type (Register) ADD R1, R2, R3 Add Regs[R1] <- Regs[R2]+Regs[R3] Κ. Διαμαντάρας – Α. Βαφειάδης

  13. DLX: Τύποι εντολών J Type (Jump) J       name Jump PC<-name; Κ. Διαμαντάρας – Α. Βαφειάδης

  14. 31 26 21 16 11 6 0 op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 31 26 21 16 0 immediate op rs rt 6 bits 5 bits 5 bits 16 bits 31 26 0 op target address 6 bits 26 bits The MIPS Instruction Formats • All MIPS instructions are 32 bits long. The three instruction formats: • R-type • I-type • J-type • The different fields are: • op: operation of the instruction • rs, rt, rd: the source and destination register specifiers • shamt: shift amount • funct: selects the variant of the operation in the “op” field • address / immediate: address offset or immediate value • target address: target address of the jump instruction Κ. Διαμαντάρας – Α. Βαφειάδης

  15. Οι φάσειςμιας εντολής • Φάση λήψης εντολής (Instruction Fetch) - (IF) • Φάση αποκωδικοποίησης / ανάγνωσης καταχωρητών (Instruction decode / register fetch) - (ID) • Φάση εκτέλεσης (Execution) - (EX) • Φάση πρόσβασης στη μνήμη / ολοκλήρωση αλμάτων (Memory access) - (MEM) • Φάση εγγραφής καταχωρητών / μνήμης (Write back)- (WB) Κ. Διαμαντάρας – Α. Βαφειάδης

  16. IR  Mem[PC] NPC  PC + 4 Προσθέτουμε το 4 γιατί έχουμε byte addressable memory Φάση λήψης εντολής (Instruction Fetch) Κ. Διαμαντάρας – Α. Βαφειάδης

  17. Φάση αποκωδικοποίησης / ανάγνωσης καταχωρητών(Instruction decode / register fetch) • A Reg[IR(6..10)] • B Reg[IR(11..15)] • Imm  IR(16..31) A,B, ImmΠροσωρινοίκαταχωρητές

  18. Φάση εκτέλεσης (Execution) • Eντολή κλήσης στη μνήμη • ALUOutput  A + Imm LW R1, 120(R2) • Eντολή πράξης μεταξύ καταχωρητών • ALUOutput  A πράξη B Add R1,R2,R3 • Eντολή πράξης μεταξύ καταχωρητή και άμεσου τελεστή • ALUOutput  A πράξη Imm Add r1,r2 #17 • Eντολή άλματος υπό συνθήκη • ALUOutput NPC + Imm • Cond (Aσύγκριση0) BEQZ R4, name • Eντολή άλματος χωρίς συνθήκη • ALUOutput  NPC + IR(6..31) • Cond  True Jump name

  19. Φάση πρόσβασης στη μνήμη / ολοκλήρωση αλμάτων (Memory access) • Εντολή κλήσης στη μνήμη • LMD Mem[ALUOutput] (για load) ή • Mem[ALUOutput]  B (για store) • Εντολή άλματος (με ή χωρίς συνθήκη) • If (Cond) then PC ALUOutput • else PC  NPC PC  B

  20. Φάση εγγραφής καταχωρητών / μνήμης (Write back) • Eντολή πράξης μεταξύ καταχωρητών • Reg[IR(16..20)]  ALUOutput • Eντολή πράξης μεταξύ καταχωρητή και immediate • Reg[IR(11..15)]  ALUOutput • Eντολή load • Reg[IR(11..15)]  LMD Κ. Διαμαντάρας – Α. Βαφειάδης

  21. Η pipeline του DLX L1 data Cache L1 Instr. Cache A,B, Imm: Temporary registers MUX : Multiplexer LMD (load memory data) register Κ. Διαμαντάρας – Α. Βαφειάδης

  22. Η pipeline του DLX Οι φάσεις εκτέλεσης μιας εντολής DLX Κ. Διαμαντάρας – Α. Βαφειάδης

  23. Η ιδανική Pipeline Κ. Διαμαντάρας – Α. Βαφειάδης

  24. Η ιδανική Pipeline Κ. Διαμαντάρας – Α. Βαφειάδης

  25. Παράδειγμα • Κύκλος του ρολογιού = 10nsec • Αριθμητικές πράξεις και τα άλματα = 4 κύκλοι • Εντολές πρόσβασης στη μνήμη = 5 κύκλοι • Αριθμητικές εντολές συχνότητα 40% • Εντολές πρόσβασης στη μνήμη συχνότητα 40% • Άλματα συχνότητα 20% • Πολυπλοκότητα της pipeline 1nsec /κύκλο ρολογιού [ΜΧΕ] χωρίς pipeline = 10nsec  (40%4 + 20%4 + 40%5) = 44nsec [ΜΧΕ] με pipeline = 10 + 1 = 11nsec Επιτάχυνση = [ΜΧΕ] χωρίς pipeline / [ΜΧΕ] με pipeline = 44nsec/11nsec = 4 αντί για την ιδανική τιμή 5. Κ. Διαμαντάρας – Α. Βαφειάδης

  26. Memory Reference (LOAD) LW R1,30(R2) όπου Reg(R2)= 4000 και MEM[4030]=10 • IF • IR  Mem[PC] • NPC  PC + 4 • ID • A Reg[IR(6..10)] Α  Reg(R2) A=4000 • B Reg[IR(11..15)] B  Reg(R1) B = ? • Imm  IR(16..31)Imm = 30 • EX • ALUOutput  A + ImmALUOutput = 4000 + 30 =4030 • MEM • LMD Mem[ALUOutput] LMD = MEM[4030] = 10 • WB • Reg[IR(11..15)]  LMDReg(R1) = 10 Κ. Διαμαντάρας – Α. Βαφειάδης

  27. Memory Reference (STORE) SW 500(R4), R3όπου Reg(R4) = 4000 και Reg(R3) =10 • IF • IR  Mem[PC] • NPC  PC + 4 • ID • A Reg[IR(6..10)] Α  Reg(R4) A = 4000 • B Reg[IR(11..15)] B  Reg(R3) B = 10 • Imm  IR(16..31)Imm = 500 • EX • ALUOutput  A + ImmALUOutput = 4000 + 50 =4500 • MEM • Mem[ALUOutput]  B MEM[4500] = 10 • WB • null Κ. Διαμαντάρας – Α. Βαφειάδης

  28. Register to Register ADD R1,R2,R3 όπου Reg(R2) = 40 και Reg(R3) =10 • IF • IR  Mem[PC] • NPC  PC + 4 • ID • A Reg[IR(6..10)] Α  Reg(R2) A=40 • B Reg[IR(11..15)] B  Reg(R3) B = 10 • Imm  IR(16..31)Imm (16..20) = R1, Imm(21..31)= + • EX • ALUOutput  A + B ALUOutput = 40 + 10 =50 • MEM • null • WB • Reg[IR(16..20)]  ALUOutput Reg(R1) = 50 Κ. Διαμαντάρας – Α. Βαφειάδης

  29. Register to immediate ADDΙ R1,R2, #3 όπου Reg(R2)= 4000 • IF • IR  Mem[PC] • NPC  PC + 4 • ID • A Reg[IR(6..10)] Α  Reg(R2) A=4000 • B Reg[IR(11..15)] B  Reg(R1) B = ? • Imm  IR(16..31)Imm (16..31) = 3 • EX • ALUOutput  A + Imm(16..31) ALUOutput = 4000 + 3 = 4003 • MEM • null • WB • Reg[IR(11..15)]  ALUOutput Reg(R1) = 4003 Κ. Διαμαντάρας – Α. Βαφειάδης

  30. Unconditional Jump J name όπου name = 100 • IF • IR  Mem[PC] • NPC  PC + 4 • ID • A Reg[IR(6..10)] • B Reg[IR(11..15)] • Imm  IR(16..31) • EX • ALUOutput  IR(6..31) ALUOutput = 100 • Cond  true • MEM • If cont then PC  ALUOutput PC 100 (Jump) else PC = NPC PCNPC (next address) • WB • null IR(6..31) = A ## B ## Imm ## σημαίνει ενωση Κ. Διαμαντάρας – Α. Βαφειάδης

  31. Conditional Jump BEQZ R4 , name όπου name = 100 • IF • IR  Mem[PC] • NPC  PC + 4 • ID • A Reg[IR(6..10)] A  Reg(R4) • B Reg[IR(11..15)] • Imm  IR(16..31) • EX • ALUOutput ImmALUOutput = 100 • If A equal 0 then Cond  true else Cond  false • MEM • If Cond then PC  ALUOutput PC  100 (Jump) else PC = NPC PC NPC (next address) • WB • null Κ. Διαμαντάρας – Α. Βαφειάδης

  32. Οικίνδυνοιτης pipeline (pipeline hazards) • οι δομικοί κίνδυνοι(structural hazards) προκύπτουν στις περιπτώσεις όπου το υλικό (hardware) δεν αρκεί για να καλύψει τις ανάγκες όλων των δυνατών συνδυασμών εντολών που μπορούν να προκύψουν στην pipeline. • οι κίνδυνοι των δεδομένων(data hazards) προκύπτουν όταν η εκτέλεση μιας εντολής εξαρτάται από το αποτέλεσμα μιας προηγούμενης εντολής • οι κίνδυνοι ελέγχου(control hazards) προκύπτουν από τις εντολές άλματος οι οποίες αλλάζουν τη ροή του προγράμματος. Κ. Διαμαντάρας – Α. Βαφειάδης

  33. Δομικός κίνδυνος Στον κύκλο 4 η εντολή Loadκαι η εντολή 3 απαιτούν διαδικασία μνήμης (L1 Cache) Μια λύση είναι ο διαχωρισμός της L1 cacheμνήμης σε δύο, την L1 instruction cacheκαιτην L1 data cache Κ. Διαμαντάρας – Α. Βαφειάδης

  34. Η pipeline του DLX L1 Data Cache L1 Instr. Cache A,B, Imm: Temporary registers MUX : Multiplexer LMD (load memory data) register Κ. Διαμαντάρας – Α. Βαφειάδης

  35. Δομικοί κίνδυνοι Η λύση χωρίς την δημιουργία μας δεύτερης cacheείναι η προσθήκη ενός νεκρού κύκλου, ώστε να καθυστερήσει η έναρξη της εντολής 3 Τον κίνδυνο τον προκαλούν οι εντολές Load/store οι οποίες συμμετέχουν με 40% [KAE_ιδανικό] =1 κύκλος [ΚΑΕ_πραγματικό] = 1 + 40% ×1 =1.4 κύκλοι

  36. Κίνδυνοι δεδομένων(Data Hazards) Παράδειγμα 1 Κίνδυνος χρήσης του R1 πριν από την τοποθέτηση της σωστής τιμής από την εντολή Add. Οι κίνδυνοι αφορούν τις εντολές SUB, AND και OR. Γιατί δεν υπάρχει κίνδυνος για την εντολή XOR ? Κ. Διαμαντάρας – Α. Βαφειάδης

  37. Κίνδυνοι δεδομένων και η λύση προώθησης (Forwarding) Λάθος Β Σωστό Β A-B Κ. Διαμαντάρας – Α. Βαφειάδης

  38. H λύση προώθησης (Fοrwarding) Κ. Διαμαντάρας – Α. Βαφειάδης

  39. Κίνδυνοι δεδομένων και η λύση προώθησης (Forwarding) Κ. Διαμαντάρας – Α. Βαφειάδης

  40. Ολική προώθηση 3 1 2 Κ. Διαμαντάρας – Α. Βαφειάδης

  41. Ακόμα ένα παράδειγμα κινδύνου δεδομένων Κ. Διαμαντάρας – Α. Βαφειάδης

  42. Κίνδυνοι δεδομένων – Λύση η προώθηση Κ. Διαμαντάρας – Α. Βαφειάδης

  43. Ταξινόμηση των κινδύνων δεδομένων • Ανάγνωση μετά από εγγραφή (Read-After-Write, RAW). Η εντολή j διαβάζει την τιμή από κάποια πηγή (καταχωρητή ή μνήμη) την οποία εγγράφει η εντολή i. • Εγγραφή μετά από εγγραφή (Write-After-Write, WAW). Η εντολή j γράφει μια τιμή πάνω στον ίδιο καταχωρητή ή μνήμηόπου γράφει και η εντολή i. • Εγγραφή μετά από ανάγνωση (Write-After-Read, WAR). Η εντολή j γράφει μια τιμή πάνω στον ίδιο καταχωρητή ή θέση μνήμης την οποία διαβάζει η εντολή i. Υπόθεση: η εντολή i εκτελείται πριν από την j. Κ. Διαμαντάρας – Α. Βαφειάδης

  44. Λύσεις • Ανάγνωση μετά από εγγραφή (Read-After-Write, RAW) • Λύση η προώθηση Κ. Διαμαντάρας – Α. Βαφειάδης

  45. Λύσεις • Εγγραφή μετά από εγγραφή (Write-After-Write, WAW) • Υπάρχει κίνδυνος μόνο όταν η εγγραφή που κάνει η εντολή i τελειώνει μετά από την εγγραφή που κάνει η εντολή j διότι τότε ο καταχωρητής ή η μνήμη μένουν ενημερωμένοι με την λανθασμένη τιμή. • Δεν υπάρχει κίνδυνος όταν οι έγγραφες διαρκούν ένα κύκλο(DLX) • Σε pipeline όπου οι έγγραφες διαρκούν πολλούς κύκλους η λύση είναι η εισαγωγή νεκρών κύκλων Κ. Διαμαντάρας – Α. Βαφειάδης

  46. WAWχωρίς κανένα πρόβλημα Κ. Διαμαντάρας – Α. Βαφειάδης

  47. WAW σε pipeline με εγγραφή σε ένα κύκλοκαι ΑDD χωρίς κύκλο ΜΕΜ και με εγγραφή – ανάγνωση σε πολλούς κύκλους Νεκροί κύκλοι H εντολή ADD δεν έχει κύκλο MEM Κ. Διαμαντάρας – Α. Βαφειάδης

  48. Λύσεις • Εγγραφή μετά από ανάγνωση (Write-After-Read, WAR) • Υπάρχει κίνδυνος μόνο όταν η εγγραφή που κάνει η εντολή i τελειώνει μετά από την εγγραφή που κάνει η εντολή j διότι τότε ο καταχωρητής ή η μνήμη μένουν ενημερωμένοι με την λανθασμένη τιμή. • Δεν υπάρχει κίνδυνος στη DLX μηχανή γιατί η ανάγνωση τιμών γίνεται στη φάση ID και η εγγραφή στη φάση WB • Σε pipeline όπου οι έγγραφες διαρκούν πολλούς κύκλους λύση είναι η εισαγωγή νεκρών κύκλων Κ. Διαμαντάρας – Α. Βαφειάδης

  49. WAR στη pipeline του DLX WAR σε pipeline με εγγραφή ή ανάγνωση μνήμης σε 3 κύκλους με το δεύτεροκύκλο αφιερωμένο στον υπολογισμό της διεύθυνσης Εισαγωγή ενός νεκρού κύκλου Κ. Διαμαντάρας – Α. Βαφειάδης

  50. Κίνδυνοι που απαιτούν εισαγωγή νεκρών κύκλων(Το πρόβλημα load before arithmetic) Κ. Διαμαντάρας – Α. Βαφειάδης

More Related