Σχεδίαση υψηλών επιδόσεων pipelining παράλληλη επεξεργασία Γιώργος Δημητρακόπουλος Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Φθινόπωρο 2008 ΗΥ220 1
Περιεχόμενα μαθήματος Ρυθμός εκτέλεσης εργασιών (throughput) Καθυστέρηση ολοκλήρωσης μίας εργασίας (latency) Άυξηση απόδοσης Παράλληλες εργασίες pipeline parallel processing Σωστή τοποθέτηση pipeline καταχωρητών Φθινόπωρο 2008 ΗΥ220 2
Πόση δουλειά εκτελούμε Εκτελούμε μία εργασία κάθε Tc (ως εργασία ορίζουμε τη λειτουργία της συνδυαστικής λογική CL) Πως μπορούμε να μειώσουμε την καθυστέρηση; Πως θα μπορούσαμε στον ίδιο χρόνο να ολοκληρώνουμε περισσότερες εργασίες; CLK CLK Q1 C L D2 (a) R1 R2 T c CLK Q1 D2 (b) T c t pcq + t pd + t setup Φθινόπωρο 2008 ΗΥ220 3
Απάντηση Εκτελώντας εργασίες παράλληλα Πολλαπλασιάζοντας τις μονάδες μας επιτρέποντας να εκτελούν πολλές εργασίες στον ίδιο χρόνο Παράλληλη επεξεργασία Χωρίζοντας την εργασία σε πολλά επιμέρους στάδια και εκτελώντας κάθενα από τα μικρά στάδια παράλληλα Η δουλεία προχωραεί σαν γραμμή συναρμολόγησης εργοστασίου (Την ώρα που μπαίνουν οι πόρτες σε ένα αυτοκίνητο, εκείνη τη στιγμή μπαίνουν οι ρόδες σε αυτό που είχε βγει από το εργοστάσιο λίγο πιο πρίν κοκ...) Pipelining Φθινόπωρο 2008 ΗΥ220 4
Παράδειγμα Η εργασία που θέλουμε να εκτελέσουμε είναι να ψήσουμε ΠΟΛΛΑ κουλουράκια Χρειαζόμαστε 5 λεπτά για να πλάσουμε όσα χωράνε στο ταψί και 15 λεπτά για να τα ψήσουμε Αν τα κάναμε το ένα μετά το άλλο σειριακά θα βγάζαμε ένα ταψί κουλουράκια κάθε 20λεπτά Το πρώτο στο λεπτό 20 το δεύτερο στο 40 κ.ο.κ... Πως θα το κάνουμε πιο γρήγορα? Πρέπει να κάνουμε κάποιες δουλείες παράλληλα Φθινόπωρο 2008 ΗΥ220 5
Παράλληλες εργασίας Λύση 1η: Αποφασίζουμε να χρησιμοποιήσουμε τις ικανότητες και το φούρνο ενός φίλου Στον ίδιο χρόνο θα έχουμε διπλάσιο αριθμό από κουλουράκια εφόσον θα έχουμε 2 ταψιά έτοιμα κάθε 20 λεπτά first tray 0 5 10 15 20 25 30 35 40 45 50 Spatial Parallelism Tray 1 Tray 2 Tray 3 Tray 4 Ben 1 Ben 1 Alyssa 1 Alyssa 1 Ben 2 Ben 2 Alyssa 2 Alyssa 2 Time Roll Bake Legend Φθινόπωρο 2008 ΗΥ220 6
Pipeline Λύση 2η: Αποφασίζουμε να αγοράσουμε ένα δεύτερο ταψί και να μην ενοχλήσουμε κανένα φίλο μας Την ώρα που το ένα ταψί είναι στο φούρνο εμείς δεν καθόμαστε αλλά γεμίζουμε το άλλο με το νέο σετ από κουλουράκια Έτσι την ώρα που θα ετοιμαστεί το πρώτο ταψί εμείς χωρίς καθυστέρηση ρίχνουμε στο φούρνο το δεύτερο το οποίο θα είναι έτοιμο στο 35ο λεπτό (στο 20ο μπήκε + 15 λεπτά το ψήσιμο) αντί στο 40ο. Το επόμενο θα είναι έτοιμο στο 50ο λεπτό Σε κάθε περίπτωση εμείς δεν περιμένουμε και αρχίζουμε να πλάθουμε για να γεμίσουμε το νέο ταψί μόλις βγει κάποιο από το φούρνο first tray 0 5 10 15 20 25 30 35 40 45 50 Temporal Parallelism Tray 1 Tray 2 Tray 3 Ben 1 Ben 1 Ben 2 Ben 2 Ben 3 Ben 3 Time Φθινόπωρο 2008 ΗΥ220 7
Latency Throughput ορισμοί Throughput ενός συστήματος είναι ο αριθμός των εργασιών που ένα σύστημα μπορεί να διεκπεραιώσει στη μονάδα τού χρόνου. Για παράδειγμα αν έχουμε ένα πολλαπλασιαστή ο οποίος εκτελεί ένα πολλαπλασιασμό κάθε 10 nsec τότε λέμε πως το throughput του πολλαπλασιαστή είναι 100 Megaλειτουργίες το δευτερόλεπτο (ΜΟps). Latency ενός συστήματος είναι ο χρόνος που απαιτείται ώστε το σύστημα να ολοκληρώσει μία εργασία. Για παράδειγμα στον πολλαπλασιαστή ένας πολλαπλασιασμός ολοκληρώνεται μετά από 10nsec από τη στιγμή που οι είσοδοι στον πολλαπλασιαστή έχουν σταθεροποιηθεί. Επομένως το latency του πολλαπλασιασμού είναι 10nsec. Φθινόπωρο 2008 ΗΥ220 8
Latency throughput ψησίματος Ψήνουμε τα κουλουράκια μόνοι μας Latency: 20 λεπτά για το κάθε ταψί (χρόνος προετοιμασίας + ψησίματος) Τhroughput: 1 ταψί κάθε 20 λεπτά. Αν το ταψί είχε 50 κουλουράκια τότε ο ρυθμός παραγωγής είναι 150 κουλουράκια την ώρα ή περίπου 0,042 κουλουράκια το δευτερόλεπτο Χρησιμοποιούμε δύο φούρνους και δύο ταψιά (παράλληλη επεξεργασία) Latency: 20 λεπτά για το κάθε ταψί (χρόνος προετοιμασίας + ψησίματος) Τhroughput: 2 ταξιά κάθε 20 λεπτά. Αν το ταψί είχε 50 κουλουράκια τότε ο ρυθμός παραγωγής είναι 300 κουλουράκια την ώρα ή περίπου 0,084 κουλουράκια το δευτερόλεπτο Χρησιμοποιούμε 2 ταψιά και 1 φούρνο ενώ επικαλύπτουμε χρονικά την προετοιμασία με το ψήσιμο Latency: 20 λεπτά για το κάθε ταψί (χρόνος προετοιμασίας + ψησίματος0) Throughput: (αφού βγάλουμε το πρώτο ταψί)1 ταψί κάθε 15 λεπτά. Αν το ταψί είχε 50 κουλουράκια τότε ο ρυθμός παραγωγής είναι 200 κουλουράκια την ώρα ή περίπου 0,055 κουλουράκια το δευτερόλεπτο Φθινόπωρο 2008 ΗΥ220 9
Latency throughput ψησίματος Ψήνουμε τα κουλουράκια μόνοι μας Latency: 20 λεπτά για το κάθε ταψί (χρόνος προετοιμασίας + ψησίματος) Τhroughput: 1 ταψί κάθε 20 λεπτά. Αν το ταψί είχε 50 κουλουράκια τότε ο ρυθμός παραγωγής είναι 150 κουλουράκια την ώρα ή περίπου 0,042 κουλουράκια το δευτερόλεπτο Χρησιμοποιούμε δύο φούρνους και δύο ταψιά (παράλληλη επεξεργασία) Latency: 20 λεπτά για το κάθε ταψί (χρόνος προετοιμασίας + ψησίματος) Τhroughput: 2 ταξιά κάθε 20 λεπτά. Αν το ταψί είχε 50 κουλουράκια τότε ο ρυθμός παραγωγής είναι 300 κουλουράκια την ώρα ή περίπου 0,084 κουλουράκια το δευτερόλεπτο Χρησιμοποιούμε 2 ταψιά και 1 φούρνο ενώ επικαλύπτουμε χρονικά την προετοιμασία με το ψήσιμο Latency: 20 λεπτά για το κάθε ταψί (χρόνος προετοιμασίας + ψησίματος0) Throughput: (αφού βγάλουμε το πρώτο latency)1 ταψί κάθε 15 λεπτά. Αν το ταψί είχε 50 κουλουράκια τότε ο ρυθμός παραγωγής είναι 200 κουλουράκια την ώρα ή περίπου 0,055 κουλουράκια το δευτερόλεπτο Φθινόπωρο 2008 ΗΥ220 10
Αρχικό κύκλωμα a[n] x[i] = a[i]*b[i] + c[i]+1 Tc b[n] c[n] Input Regs +1 + Η περίοδος Τc ανάλογη της καθυστέρησης ενός πολλαπλασιαστή και ενός αθροιστή + επιβάρυνση από καταχωρητές Τc > Tdcq + Tmult + Tadd + Tsetup x[n] Output Reg Input Regs Output Reg a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7] c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7] Latency = Tc Throughput = 1/Tc Πως μπορούμε να βελτιώσουμε τα χαρακτηριστικά του κυκλώματος pipelining parallel processing Φθινόπωρο 2008 ΗΥ220 11
Pipelined λύση T A B C D pipeline καταχωρητές T/4 T/4 T/4 T/4 A B C D Χώρισε την εργασία που εκτελείτε σε επιμέρους μικρότερες υπο-εργασίες Κάθε υπο-εργασία περιμένουμε να χρειάζεται αρκετά λιγότερο χρόνο από τη συνολική εργασία. Στην ιδανική περίπτωση αν η συνολική εργασία απαιτούσε Τ μονάδες χρόνου θα θέλαμε κάθε υποεργασία (έστω Ν στο σύνολο) να απαιτεί Τ/Ν μονάδες χρόνου Διαχώρισε τις υπο-εργασίες με pipeline καταχωρητές. Κάθε τέτοιος καταχωρητής μεταξύ δύο υπο-εργασιών Α και Β αποθηκεύει το αποτέλεσμα του Α και το τροφοδοτεί στον επόμενο κύκλο στο Β. Έτσι την ώρα που μια δουλειά ολοκληρώνεται στο στάδιο Β η επόμενη επεξεργάζεται στο στάδιο Α. Η δουλειά των υπο-εργασιών επικαλύπτεται χρονικά Στην ιδανική περίπτωση το latency δεν αλλάζει αφού τώρα απαιτούνται N κύκλοι για ολοκληρωθεί η συνολική εργασία ενώ η διάρκεια του κάθε κύκλου αρκεί να είναι Τ/Ν όσο η καθυστέρηση της κάθε υπο-εργασίας. Το throughput έχει γίνει N φορές καλύτερο γιατί λόγω της επικάλυψης των υποεργασιών Φθινόπωρο 2008 ΗΥ220 12
Ροή δεδομένων στο pipeline t t+1 t+2 t+3 t+4 t+5 t+6 Είσοδος 1 A B C D Είσοδος 2 A B C D Είσοδος 3 A B C D Είσοδος 4 A B C D Επικαλύπτουμε χρονικά τη λειτουργία των 4 υπο-εργασιών σε 4 διαφορετικές εισόδους Στο κύκλο t+3 το στάδιο D επεξεργάζεται την είσοδο 1, το στάδιο C την είσοδο 2, το στάδιο B την είσοδο 3 και το στάδιο A την είσοδο 4 Από τον κύκλο t+4 και μετά βλέπουμε να ολοκληρώνεται η επεξεργασία μίας νέας εισόδου κάθε κύκλο ρολογιού Λόγω των pipeline καταχωρητών ο νέος κύκλος ίσος με Τ/4 Τhroughput = 1 εργασία κάθε T/4 δηλαδή 4/T εργασίες στη μονάδα του χρόνου Φθινόπωρο 2008 ΗΥ220 13
Παράδειγμα pipeline a[n] b[n] Tc Αρχική εκδοχή c[n] +1 Pipeline καταχωρητές + Output Reg a[0], b[0], c[0] a[1], b[1], c[1] a[2], b[2], c[2] a[3], b[3], c[3] x[0] x[1] x[2] x[3] ~Tc/2 Pipelined εκδοχή Λόγω των pipeline καταχωρητών η μικρότερη περίοδος ρολογιού ελαττώθηκε σε TdcQ + Tmult + Tsetup ~ Tc(old)/2 Την ώρα που ο αθροιστής υπολογίζει το x[1] ο πολλαπλασιαστής και ο αυξήτης του προηγούμενου σταδίου υπολογίζουν τα α[2]*b[2] και c[2]+1 Επικάλυψη των λειτουργιών στο χρόνο a[0] a[1] a[2] a[3] a[0]*b[0] a[1]*b[1] a[2]*b[2] a[3]*b[3] c[0]+1 c[1]+1 c[2]+1 c[3]+1 x[0] x[1] x[2] x[3] Φθινόπωρο 2008 ΗΥ220 14
Επιβάρυνση από τους επιπλέον καταχωρητές a[n] ΤMULT = 5 ns TADD = 2 ns TINC = 1 ns b[n] c[n] +1 + Output Reg TSETUP= 0.4 ns TDCQ = 0.3ns Pipeline καταχωρητές To χειρότερο μονοπάτι στο πρώτο στάδιο ΤCYCLE > TDCQ + TMULT + TSETUP = 0.3 + 5 + 0.4 = 5.7 ns Επιβάρυνση καταχωρητών = Χρόνος λόγω καταχωρητών / Συνολικός χρόνος = 0.7 ns / 5.7 = 12% Στην αρχική εκδοχή (χωρίς pipeline καταχωρητές) Συνολικός χρόνος = 7.7 ns (TDCQ + TMULT + ΤADD +TSETUP ) Επιβάρυνση καταχωρητών εισόδου/εξόδου = 0.7/7.7 = 9% H προσθήκη επιπλέον σταδίων καταχωρητών δεν είναι πάντα δωρεάν Φθινόπωρο 2008 ΗΥ220 15
Τοποθέτηση pipeline καταχωρητών X i A A(X i ) C C( A(X i ), B(X i, Y i ) ) C( A(X i-1 ), B(X i-1, Y i-1 ) ) B Αρχικό κύκλωμα Y i B(X i, Y i ) A(X i ) A(X i-1 ) C( A(X i-1 ), B(X i, Y i-1 ) ) X i A C ΛΑΘΟΣ!!! Y i Y i-1 B Είσοδοι που ανήκουν σε διαφορετικούς κύκλους μπλέκονται B(X i, Y i-1 ) Αφελής τοποθέτηση καταχωρητών Φθινόπωρο 2008 ΗΥ220 16
Τοποθέτηση καταχωρητών: Πού είναι το λάθος; X i A C 2 καταχωρητές 1 καταχωρητή 2 καταχωρητές Y i B Διαφορετικά μονοπάτια συναντούν διαφορετικό πλήθος από καταχωρητές στη διαδρομή τους προς την έξοδο Μια σωστά pipelined λύση αυτό πρέπει να το απαγορεύει Φθινόπωρο 2008 ΗΥ220 17
Ορθή τοποθέτηση pipeline καταχωρητών Ζωγραφίστε το κύκλωμα σας επίπεδο-προς-επίπεδο Aν θέλετε να διαχωρίσετε με pipeline καταχωρητές τα επίπεδα k και k-1 τότε τοποθετήστε καταχωρητές σε ΟΛΕΣ τις γραμμές που πηγαίνουν μπροστά (από το επίπεδο k-1 στο k) Στο τέλος όλα τα μονοπάτια από οποιαδήποτε είσοδο σε οποιαδήποτε έξοδο πρέπει να διέρχονται από το ίδιο πλήθος καταχωρητών Σκοπός σας πάντα πρέπει να είναι η απομόνωση του κομματιού με τη μεγαλύτερη καθυστέρηση Oι μπλε γραμμές δείχνουν τα σωστά σημεία για την τοποθέτηση pipeline καταχωρητών Φθινόπωρο 2008 ΗΥ220 18
Παραδείγματα X i A 5ns C 4ns X i A 5ns C 4ns Y i B 3ns Y i B 3ns Worst case delay = 7ns + FF-overhead Latency=2 cycles Throughput= 1/7ns Worst case delay = 7ns + FF-overhead Latency=2 cycles Throughput= 1/7ns X i A 5ns C 4ns X i A 5ns C 4ns Y i B 3ns Y i B 3ns Worst case delay = 8ns + FF-overhead Latency=2 cycles Throughput= 1/8ns Worst case delay = 5ns + FF-overhead Latency=3 cycles Throughput= 1/5ns Φθινόπωρο 2008 ΗΥ220 19
Περαιτέρω βελτίωση της απόδοσης X i A 5ns C 4ns Y i B 3ns Διάσπαση της συνδιαστικής λογικής σε επιμέρους pipeline σταδια Προσοχή!!! Μπορεί να χρειάζονται και επιπλέον καταχωρητές σε άλλους κόμβους ώστε να εξισσοροπηθεί η καθυστέρηση από την είσοδο προς την έξοδος Οταν αυτό δε μπορεί να συμβεί...επικάλυψη λειτουργιών με χρήση παράλληλων μονάδων Φθινόπωρο 2008 ΗΥ220 20
Παράλληλες μονάδες με χρονική επικάλυψη Μπορούμε να «εξομοιώσουμε» την pipelined λειτουργία ενός αργού κυκλώματος. Αν για παράδειγμα η χειρότερη καθυστέρηση για μια συνδιαστική λογική είναι T και εμείς θέλουμε όλο το κύκλωμα να λειτουργεί σε Τ/2 μπορούμε να το πετύχουμε χωρίς να την σπασουμε σε pipeline στάδια. Χρησιμοποιούμε δύο αντίγραφα της ίδιας μονάδας και λειτουργούμε το καθένα διαδοχικά κάθε δύο κύκλους ρολογιού (2 x T/2 = T). Έτσι προλαβαίνει να ολοκληρώσει την εργασία της και εμείς παίρνουμε μία έξοδο κάθε Τ/2 (τη μία απο τη μία μονάδα και την άλλη από τη δεύτερη μονάδα) X i T nsec R1 1 R0 T nsec 0 Enable Clock Φθινόπωρο 2008 ΗΥ220 21
Παράλληλες μονάδες με χρονική επικάλυψη - παράδειγμα H πάνω και η κάτω μονάδα ενεργοποιούνται στις μονές και στις ζυγές ακμές του ρολογιού εναλλάξ Στην έξοδος ένα αποτέλεσμα κάθε Τ/2 nsec (θεωρώντας τα flip-flop ιδανικά) παρ ότι κάθε μονάδα απαιτεί Τ nsec για να ολοκληρώσει τον υπολογισμό Συμπεριφορά ίδια με αυτή του pipeline Clock Enable R1 R0 Enable X i T/2 nsec R1 [0] Clock T nsec R1 1 R0 T nsec 0 T nsec R1 [1] R0 [-1] R0 [0] R0 [1] R1 [-1] R0 [-1] R1 [0] R0 [0] R1 [1] Φθινόπωρο 2008 ΗΥ220 22
Περίληψη Η βελτίωση της απόδοσης (Throughput) απαιτεί το χωρισμό του κυκλώματος σε pipeline στάδια Χώρισε το πρόβλημα σε υπο-προβλήματα. Αντιμετώπισε τη λύση του καθενός σαν τη γραμμή παραγωγής ενός εργοστασίου. Το αποτέλεσμα κάθε υπο-μονάδας περνάει στην επόμενη ενώ συνεχώς καταφθάνουν νέα εξαρτήματα Η χρονική επικάλυψη των υπο-προβλημάτων βελτιώνει το throughput H υλοποίηση του pipeline απαιτεί τη χρήση επιπλέον καταχωρητών Η τοποθέτηση τους απαιτεί προσοχή ώστε όλα τα μονοπάτια από την είσοδο στην έξοδο να διέρχονται από τον ίδιο αριθμό από καταχωρητές Η λειτουργία του pipeline μπορεί να προσομοιωθεί με τη χρήση παράλληλων μονάδων που λειτουργούν ενναλακτικά Φθινόπωρο 2008 ΗΥ220 23