outlaw star Δημοσ. 29 Ιανουαρίου 2008 Δημοσ. 29 Ιανουαρίου 2008 καλησπέρα στο φόρουμ.μέχρι πριν λίγο καιρό άκουγα στα χαρακτηριστικά των καρτών για τα pixel pipelines τα οποία ξέρω τι είναι.Τώρα όμως βλέπω ότι παντού αναφέρεται ο όρος stream prossecors.Θέλω να ρωτήσω εαν είναι το ίδιο πράγμα.Εάν όχι θα ήθελα κάποιος να μου το εξηγήσει επιγραμματικά αλλιώς εαν βαριέται να μου δώσει ένα link που να το εξηγεί.Ευχαριστώ..
Ailuros Δημοσ. 30 Ιανουαρίου 2008 Δημοσ. 30 Ιανουαρίου 2008 Οι GPU με τα χρόνια έγιναν όλο και πιο προγραμματιζόμενες, πράγμα που σημαίνει ότι σταδιακά όπου αφού είχε νόημα αντικαταστάθηκαν μονάδες fixed function με προγραμματιζόμενες. Στο αποκορύφωμα αυτής της προσπάθειας και τον unified shader cores για D3D10 έχουμε τους λεγόμενους stream processors, που απλά μπορούν να εκτελέσουν πολύ περισσότερες παράλληλες εντολές με πολύ μεγαλύτερη επάρκεια. Yπεραπλουστευμένα στις σημερινές κάρτες οι stream processors είναι τα ALUs (arithmetic logic unit) που μπορούν να χειριστούν ταυτόχρονα pixel,vertex & geometry shading. Αν αφαιρέσεις τώρα όλες τις υπόλοιπες μονάδες και κρατήσεις μόνο τα ALUs, έχεις κάτα μια έννοια μια CPU ή αλλιώς έναν επεξεργαστή γενικών καθηκόντων. Για άλλες λειτουργίες όπως φιλτράρισμα υφών πχ εξακολουθεί να υπάρχει fixed function hardware (το οποίο μοιραία κάποια στιγμή θα ελαττωθεί στο μικρότερο δυνατό βαθμό). Τόσο η NVIDIA όσο και η AMD όταν παρουσίασαν G80 & R600 αντίστοιχα είχαν στα whitepapers τους αρκετές γραμμές για τις βελτιώσεις στις αρχιτεκτονικές τους σε σχέση με τις προηγούμενες. Πρώτη η ATI και αργότερα η NVIDIA (από το G80 και μετά) εφάρμοσαν ένα σύστημα σύνδεσης του κάθε "block" από ALUs (cluster) με λογική MIMD (multiple instructions multiple data). Κάθε cluster παραμένει ωστόσο SIMD (single instruction multiple data). Περισσότερα εδώ: http://en.wikipedia.org/wiki/Stream_processing Τέλος να σημειώσω ότι ο όρος "pixel pipeline" ή "pipeline" σκέτο είναι λίγο παρωχημένος για τα δεδομένα από την εποχή του R300. Ποιό σωστά περιέγραφε τότε τις ανάλογες μονάδες ο όρος quad ή SIMD channels. Ιστορικά από την αυγή του D3D9.0 διαμορφώθηκε κάπως έτσι: ΝV30 = 4 SIMD channels/1 quad <---> R300 = 8 SIMD channels/2 quads NV40 = 16 SIMD channels/4 quads <---> R420 = 16 SIMD channels/4 quads G70 = 24 SIMD channels/ 6 quads <---> R520 = 16 SIMD channels/4 quads ..από το D3D10 και επειδή θέλουν να ταλαιπωρούν τον κοινό θνητό το quad το ονόμασαν cluster (υπάρχει φυσικά λόγος): G80 = 8 clusters <---> R600 4 clusters Εδώ τα 2 τμήματα marketing σκαρφίστηκαν να μετράνε τους λεγόμενους stream processors. G80 = 8 clusters * 16 SIMD (2*8) = 128 ALUs scalar MADD (multiply+add) + scalar MUL (multiply) scalar MADD = 2 FLOPs scalar MUL = 1 FLOP 128* 3 FLOPs * 1.35GHz = 518 GFLOPs/s (αν καταφέρνε κανείς να λειτουργήσει στο 100% η μονάδα MUL για general shading). Tις μονάδες SFU (special function units) τις αφήνουμε απόξω). R600 = 4 clusters * 16 SIMD = 64 ALUs Vector4 MADD + scalar MADD Vec4 MADD = 8 FLOPs scalar MADD = 2 FLOPs 64* 10 FLOPs * 0.742GHz = 475 GFLOPs/s (συμπεριλαμβανομένων special function, interpolation etc.) Ο διαχωρισμός σε quads ή clusters εξυπηρετεί κυρίως για την κατανόηση της σύνδεσης με άλλες μονάδες όπως τα ΤΜU arrays. Στις R6x0/RV6x70 κάθε TMU array (4 TMUs) είναι συνδεδεμένο με λογική SIMD με κάθε cluster, άρα 4 cluster = (4*4) 16 TMUs.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.