Προς το περιεχόμενο

pixel pipelines and stream proccesors


outlaw star

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπέρα στο φόρουμ.μέχρι πριν λίγο καιρό άκουγα στα χαρακτηριστικά των καρτών για τα pixel pipelines τα οποία ξέρω τι είναι.Τώρα όμως βλέπω ότι παντού αναφέρεται ο όρος stream prossecors.Θέλω να ρωτήσω εαν είναι το ίδιο πράγμα.Εάν όχι θα ήθελα κάποιος να μου το εξηγήσει επιγραμματικά αλλιώς εαν βαριέται να μου δώσει ένα link που να το εξηγεί.Ευχαριστώ..:-)

Δημοσ.

Οι 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.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...