Εύρος ζώνης μνήμης (Memory Bandwidth)

Το [label variation=»label-danger»]memory bandwidth[/label] είναι ίσο με το γινόμενο του memory bus width (πλάτος διαύλου μνήμης) επί την χρονισμένη ταχύτητα της μνήμης. Μεγάλο memory bandwidth, σημαίνει αυτόματα και καλύτερη ανταπόκριση τις κάρτας στον χειρισμό ογκωδών texture, μεγαλύτερων αναλύσεων, εξομάλυνση γωνιών (Αnti-Αliasing), ανισοτροπικό φιλτράρισμα (Anisotropic Filtering) αλλά και σχεδόν σε οποιαδήποτε επεξεργασία γραφικών, πολύπλοκη ή μη.

Το μέγεθος και η ταχύτητα της μνήμης δεν παίζουν ιδιαίτερο ρόλο στο bandwidth, διότι μόνο η τιμή του δίνει γρήγορα μια πρώτη εικόνα για την δύναμη της κάρτας γραφικών. Σκεφτείτε ένα σουπερμάρκετ με ανοιχτά μόνο δυο ταμεία και δυο μεγάλες ουρές, εάν διπλασιάζαμε τον αριθμό των ταμείων (όπως θα διπλασιάζαμε το bandwidth) στον ίδιο χρόνο θα διπλασιαζόταν ο αριθμός των πελατών που εξυπηρετούμε και ταυτόχρονα θα ελαττωθεί το μέγεθος των ουρών, εάν συνεχίζαμε και βάζαμε άλλα τέσσερα ταμεία (πλέον θα είχαμε τετραπλασιάσει το bandwidth) κατά πάσα πιθανότητα θα εξαλειφθούν οι ουρές οπότε δεν θα υπάρχει καθυστέρηση στην εξυπηρέτηση των πελατών (οι οποίοι παριστάνουν τα δεδομένα που επεξεργάζονται). Έτσι πρέπει να αντεπεξέρχεται η μνήμη του GPU, και ειδικότερα σε καταστάσεις υψηλού φόρτου, διότι όσο μεγάλο μέγεθος και αν έχει, εάν δεν προλαβαίνει να την διαβάσει, πρακτικά είναι άχρηστη.

Το μέγιστο memory bandwidth της κάρτας γραφικών προκύπτει από τον πολλαπλασιασμό του memory clock με το memory bus width και τον ρυθμό μεταφοράς του τύπου μνήμης (GDDR)

Πλάτος διαύλου μνήμης (Memory Bus Width)

Το bus width αυτή την περίοδο εκτείνεται από [label variation=»label-success»]32 bit[/label] έως [label variation=»label-success»]512 bit[/label]. Η τιμή του μας δείχνει το μέγεθος δεδομένων που μπορεί να μεταφέρει σε κάθε clock cycle (κύκλο ρολογιού). Μεγαλύτερο bus width σημαίνει και μεγαλύτερο “άνοιγμα” για την διέλευση δεδομένων, οπότε και μαζικότερη προσπέλασή τους. Γενικότερες κατηγορίες και ενδεικτικά μοντέλα:

Bus Width

Επίπεδο κάρτας γραφικών

128 bit

Χαμηλών επιδόσεων (HD 7750 ή GTΧ 650)

192 bit

Χαμηλών-Μέτριων επιδόσεων (GTX 660)

256 bit

Μέτριων Επιδόσεων (GTX 760 ή R9 270)

384 bit

Υψηλών Επιδόσεων (GTX 780 ή R9 280)

512 bit

Μέγιστων Επιδόσεων (R9 290)

Ρολόι Μνήμης (Memory Clock)

To memory clock, δηλαδή η ταχύτητα της μνήμης γραφικών, μαζί με το memory bus width, μας δίνουν το memory bandwidth.

Effective clock: είναι η συχνότητα προσπέλασης των δεδομένων της μνήμης.

  • Για μνήμες τύπου [label variation=»label-info»]DDR[/label]        effective clock = memory clock x 2 (ομοίως για GDDR3*,GDDR4)
  • Για μνήμες τύπου [label variation=»label-info»]DDR2[/label]       effective clock = (memory clock x 2) x2
  • Για μνήμες τύπου [label variation=»label-info»]GDDR5[/label]    effective clock = (memory clock x 2) x2

* Όπου G συμβολίζει Graphics

Γενικότερα για την ευκολία αναγνώρισης των χαρακτηριστικών μιας κάρτας με μνήμη GDDR5 (όπου χρησιμοποιούν πλέον οι περισσότερες σύγχρονες)

  • Εάν η συχνότητα κυμαίνεται μεταξύ [label variation=»label-success»]1000Mhz[/label] και [label variation=»label-success»]1750MΗz[/label] τότε έχουμε το memory clock όπως έχει.
  • Εάν η συχνότητα κυμαίνεται μεταξύ [label variation=»label-success»]2000Mhz[/label] και [label variation=»label-success»]3500MHz[/label] τότε έχουμε το memory clock επί 2 (λόγω DDR) για να βρούμε το effective clock διπλασιάζουμε αυτήν την τιμή.
  • Εάν η συχνότητα ξεπερνάει συχνότητες της τάξεως των [label variation=»label-success»]4000ΜHz[/label] τότε έχουμε το effective clock. To [label variation=»label-success»]GDDR5[/label] χαρακτηρίζεται quad-pumped δηλαδή σε ένα clock cycle περνάνε 4 bits αντί του DDR που περνάνε 2 (dual-pumped).

Ρολόι Πυρήνα (Core Clock)

Η συχνότητα που τρέχει ο [label variation=»label-danger»]GPU[/label] (Graphics Processing Unit – Μονάδα Επεξεργασίας Γραφικών). Υψηλότερες συχνότητες προσφέρουν και ταχύτερους υπολογισμούς.

Pixel Fill Rate: Είναι ο συνολικός αριθμός των pixel που μπορεί να αποδώσει η κάρτα γραφικών στην οθόνη κάθε δευτερόλεπτο. Το clock μαζί με τα ROPs μας δίνουν το Pixel Fill Rate.

Texture Fill Rate: Είναι ο συνολικός αριθμός των textured pixels (texels) που μπορεί να αποδώσει η κάρτα γραφικών στην οθόνη κάθε δευτερόλεπτο. Για την δημιουργία 3D Σκηνών χρειάζεται τα texture να σχεδιαστούν πάνω στα πλέγματα των πολυγώνων. Αυτό το ονομάζουμε και texture mapping, το οποίο γίνεται με την βοήθεια των TMUs (texture mapping units) To υπολογίζουμε πολλαπλασιάζοντας το Core Clock επί τα texture units.

Raster Operations Pipelines (ROPs)

Τα [label variation=»label-danger»]ROPs[/label] μεταφέρουν δεδομένα-pixel στην τοπική μνήμη και το buffer (ενδιάμεση μνήμη). Επεξεργάζονται δεδομένα όπως ΑΑ, συμπίεση χρωμάτων και τελικά τα γράφουν στο buffer της εξόδου. Η ταχύτητα που γίνεται αυτό είναι το Fill Rate. Πλέον όμως, αν και είναι σημαντικά, οι επιδόσεις τους δεν έχουν κάποιον ιδιαίτερο αντίκτυπο.

Texture Mapping Unit (TMU)

Τα [label variation=»label-danger»]TMUs[/label] ή αλλιώς texture units αποτελούν ένα παράρτημα των GPU το οποίο μπορεί να ρυθμίζει το σχήμα ενός bitmap και να το τοποθετεί σε ένα αυθαίρετο σημείο ενός 3D αντικειμένου ως texture. Η δουλειά τους είναι η ανάλυση μιας σκηνής σε γεωμετρικά σχήματα, ώστε να τοποθετήσουν texture πάνω σε αυτά (texels) τα οποία θα είναι έτοιμα για προβολή στην οθόνη.

Τύπος Μνήμης (Memory Type)

[label variation=»label-danger»]DDR[/label] είναι η συντομογραφία για [label variation=»label-danger»]Double Data Rate[/label] (Διπλή Ταχύτητα Δεδομένων). Τα τσιπάκια μνήμης λειτουργούν σε συγκεκριμένα clock cycles. Οι SDR (Single Data Rate – Μονή Ταχύτητα Δεδομένων) μπορούν να προσπελάσουν μια τιμή ανά clock. Οπότε 1 MHz SDR έχει μέγιστη προσπέλαση δεδομένων με ρυθμό ενός εκατομμυρίου προσπελάσεων ανά δευτερόλεπτο.

Όποτε μία μνήμη [label variation=»label-danger»]DDR[/label] έχει μέγιστο ρυθμό προσπελάσεων δύό εκατομμύρια ανά δευτερόλεπτο. Άρα η DDR2 και GDDR5 έχουν τετραπλάσιο ρυθμό προσπέλασης αφού είναι quad-pumped.

Πίνακας Σύγκρισης DDR

Bus Width

Τύπος Μνήμης

Memory Clock

Ρυθμός Μεταφοράς (bit/s)

Ρυθμός Μεταφοράς (byte/s)

64-bit

DDR

1000MHz

128Gbit/s

16 GB/s

64-bit

DDR2

1000MHz

256Gbit/s

32 GB/s

64-bit

GDDR3

1000MHz

128Gbit/s

16 GB/s

64-bit

GDDR4

1000MHz

128Gbit/s

16 GB/s

64-bit

GDDR5

1000MHz

256Gbit/s

32 GB/s

Shaders

Vertex Processors (Vertex Shader Units)

Οι συγκεκριμένοι επεξεργαστές έχουν σχεδιαστεί για να επηρεάζουν shader που ασχολούνται μόνο με κορυφές, το οποίο σημαίνει πιο περίπλοκα και πολυάριθμα 3D αντικείμενα για κάθε σκηνή. Ωστόσο δεν επηρεάζουν ιδιαίτερα την ολική επίδοση.

[symple_spacing size=»15px»]

Pixel Processors (Pixel Shader Units)

Οτιδήποτε περίπλοκα εφέ και γραφικά απεικονίζονται στην οθόνη έχουν δημιουργηθεί από αυτά τα shaders. Συμφέρει μεγαλύτερος αριθμός pixel shader αντί για core clock διότι μικρή άνοδος στα shaders ισοδυναμεί με μεγάλη άνοδο στην ταχύτητα υπολογισμού, αντίθετα με το core clock.

[symple_spacing size=»15px»]

Geometry Shaders

Είναι υπεύθυνοι για την τροποποίηση των γραφικών με σκοπό να γίνουν ανάγλυφα και με καθορισμένο βάθος, ώστε να δείχνουν πιο ρεαλιστικά, την ρύθμιση της εστίασης των αντικείμενων και πολλά εξειδικευμένα γραφικά όπως tessellation, real-time render και ambient occlusion.

3D API (Διεπαφή προγραμματισμού εφαρμογών)

Αυτά που χρησιμοποιούνται είναι το [label variation=»label-danger»]DirectX[/label] και το [label variation=»label-danger»]OpenGL[/label]. Πιο διαδεδομένο όμως και αποδοτικό είναι το DirectX, και συγκεκριμένα αυτήν την περίοδο η τελευταία έκδοση του DirectX 11 η όποια προσφέρει καλύτερη ποιότητα γραφικών από τους προκάτοχους του και με λιγότερες απαιτήσεις.

RAMDAC (Random Access Memory Digital-to-Analog Converter)

Το [label variation=»label-danger»]RAMDAC[/label] δεν κάνει τίποτα παραπάνω από το να μετατρέπει ψηφιακό σε αναλογικό σήμα. Σύμφωνα με αυτό βρίσκεις την μέγιστη συχνότητα λειτουργίας της κάρτας γραφικών. Αλλά με την επικράτηση του ψηφιακού σήματος το RAMDAC πλέον θεωρείται δεδομένο.

Διεπαφή Διαύλου (Bus Interface)

Βασικό χαρακτηριστικό του είναι η συμβατότητα της κάρτας γραφικών με την μητρική. Όμως παίζει μεγάλο ρόλο και στην απόδοση, διότι μεγαλύτερο και πιο σύγχρονο interface αυξάνει το περιθώριο μεταφοράς δεδομένων. Ο αριθμός στο “x” συμβολίζει τον αριθμό των διαθέσιμων lanes (πιο απλά αυτό που περιορίζει το memory bandwidth) το x4 έχει 4 lanes, το x8 έχει 8 lanes κ.ο.κ

[label variation=»label-warning»]PCI Express 1.0/1.1[/label]: Αν και πλέον ξεπερασμένη γενιά. Ένα απλό PCIe 1.0 x1 lane έχει δυνατότητα μεταφοράς 2,5 Gigatransfers per second (GT/s).

[label variation=»label-warning»]PCI Express 2.0/2.1[/label]: Το PCIe 2.0 επικρατεί ακόμα και τώρα ενώ νεότερες γενιές όπως 2.1 και 3.0 είναι backwards-compatible. Ένα απλό PCIe 2.0 x1 lane έχει δυνατότητα μεταφοράς μέχρι και 5 GT/s.

[label variation=»label-warning»]PCI Express 3.0/3.1[/label]: Το PCIe 3.0 φανερά πιο αναβαθμισμένο και ποιο γρήγορο με δυνατότητα μεταφοράς στο ένα lane του μέχρι και 8 GT/s, έκανε την άφιξη του το 2011, και σταδιακά άλλα αργά θα αντικαταστήσει το PCIe 2.0. Έχει βελτιωμένο σύστημα κωδικοποίησης το οποίο μείωσε στο 1.54% από το 20% της απώλεια απόδοσής του PCIe.

[label variation=»label-warning»]PCI Express 4.0[/label]: To PCIe 4.0 αναμένεται τέλη 2015 ενώ ανακοινώθηκε η ταχύτητα μεταφοράς σε ένα lane της τάξεως των 16 GT/s.

*Τα GT/s εκφράζονταν σε μεταφορές ανά δευτερόλεπτο αντί για bits/δευτερόλεπτο, διότι περιέχουν και τα δυαδικά ψηφία τα οποία δεν προσφέρουν επιπλέον απόδοση. Προτού το PCIe 3.0 ίσχυε Gbits/s= 0.8 x GT/s, ενώ μετά Gbits/s= 0.9846 x GT/s

Ρυθμός Μεταφοράς Δεδομένων PCI Express

Γενιά

Lanes

Ρυθμός Μεταφοράς (GT/s)

Bandwidth

1.0/1.1

x1

2,5 GT/s

0,25 GB/s

2,00 Gbit/s

x8

20 GT/s

2,00 GB/s

16,00 Gbit/s

x16

40 GT/s

4,00 GB/s

32,00 Gbit/s

2.0/2.1

x1

5 GT/s

0,50 GB/s

4,00 Gbit/s

x8

40 GT/s

4,00 GB/s

32,00 Gbit/s

x16

80 GT/s

8,00 GB/s

64,00 Gbit/s

3.0/3.1

x1

8 GT/s

0,985 GB/s

7,88 Gbit/s

x8

64 GT/s

7,88 GB/s

63,04 Gbit/s

x16

128 GT/s

15,76 GB/s

126,08 Gbit/s

4.0

x1

16 GT/s

1,97 GB/s

15,76 Gbit/s

x8

128 GT/s

15,76 GB/s

126,08 Gbit/s

x16

256 GT/s

31,52 GB/s

252,16 Gbit/s

[symple_spacing size=»15px»]

Ένα λάθος που συνηθίζεται είναι η σύγκριση graphics memory bandwidth με PCIe bandwidth. Είναι σαν να συγκρίνεις μήλα με πορτοκάλια, το memory bandwidth έχει να κάνει με την ταχύτητα μνήμης στην κάρτα γραφικών ενώ το PCIe με την ταχύτητα επικοινωνίας με την μητρική. Στην πράξη PCIe 2.0 x16 μπορεί να σηκώσει HD 7990 ή GTX Titan Z (δύο τέρατα με bandwidth πάνω από 0,5 TB/s) χωρίς απώλεια επιδόσεων. Αυτό που θα μπορούσε να εμποδίζει την λειτουργία στις μέγιστες επιδόσεις τις είναι ο CPU ή και σε ορισμένες περιπτώσεις οι μνήμες.

Cuda cores/Stream processors

Αποτελούν ένα σύμπλεγμα μικροεπεξεργαστών, (προγραμματισμένοι σε γλώσσα [label variation=»label-danger»]CUDA[/label] για αυτούς τι Nvidia) που βρίσκεται μέσα στην κάρτα. Χρησιμοποιούνται για διάφορες υπολογιστικές διαδικασίες όπως render, πολυάριθμους ταυτόχρονους υπολογισμούς και ανάθεση συγκεκριμένων διεργασιών. Τα CUDA cores και Stream Processors προκύπτουν από τον αριθμό των Cores, επί τις μονάδες SIMDs (Single instruction, multiple data), επί το άθροισμα των mul-add (των αριθμητικών και λογικών μονάδων (ALU – Arithmetic Logic Unit) που μπορούν να κάνουν σε ένα clock cycle πρόσθεση και πολλαπλασιασμό ταυτόχρονα) και mul (πολλαπλασιασμού), επί το Core Clock.

[symple_spacing size=»15px»]

Συνδεσμολογία:

VGA (Video Graphics Array)

Μεταφέρει αναλογικό σήμα από την κάρτα κατευθείαν στην έξοδο.

[symple_spacing size=»15px»]

DVI (Digital Visual Interface)

Μεταφέρει ασυμπίεστα ψηφιακά δεδομένα στην έξοδο, Χωρίζεται σε DVI-D (μόνο ψηφιακού), DVI-A (μόνο αναλογικό) DVI- I (ψηφιακό και αναλογικό).

Περιορίζεται σε ανάλυση 1920×1080 @ 60 Hz,για μεγαλύτερες χρησιμοποιήσετε Dual Link DVI

[symple_spacing size=»15px»]

HDMI

Μεταφέρει ασυμπίεστα ψηφιακά δεδομένα και συμπιεσμένο ή ασυμπίεστο ήχο. Το HDMI 2.0 υποστηρίζει αναλύσεις μέχρι και 4096×2160@60fps

[symple_spacing size=»15px»]

Displayport

Μεταφέρει εικόνα, ήχο και άλλες μορφές δεδομένων, Αποτελεί μια ταχύτατη και αξιόπιστη συνδεσιμότητα αφού η έκδοση 1.3 υποστηρίζει ταχύτητες της τάξεως των 32 Gbit/s και 8Κ αναλύσεις, ή και 4Κ 3D streams από ένα μόνο καλώδιο.

Single/Double precision compute power

(Μονή/Διπλή ακριβής υπολογιστική ισχύς)

Ένα αρκετά απατηλό μέτρο σύγκρισης, διότι αντιπροσωπεύει πόσες πράξεις κινητής υποδιαστολής ανά δευτερόλεπτο μπορούν να πραγματοποιηθούν (FLoating-point Operations Per Seconds). [label variation=»label-danger»]GPU[/label] με υψηλότερα FLOPS μπορεί να υστερούν σε γενική ή συγκεκριμένη απόδοση από άλλους με μικρότερα επειδή έτσι είναι βαθμολογημένοι βασισμένα σε θεωρητικές ταχύτητες. Εάν έχουμε έναν επεξεργαστή με 10 FLOPS, τότε θα λειτουργεί στα 10 GHz οπότε θα μπορούσε να έχει 10 πυρήνες στα 1 GHz ή 2 πυρήνες στα 5 GΗz ή 4 πυρήνες στα 2.5 GHz κτλ. Εδώ για κάθε περίπτωσή ενώ τα FLOPS είναι ίδια άμα χρησιμοποιούμε εφαρμογές που δεν μπορούν να αξιοποιήσουν πολλούς πυρήνες τότε θα έχουμε διαφορετικά αποτελέσματα αφού επιπλέον πυρήνες θα είναι σε αναμονή. Οι Single είναι σε μορφή [label variation=»label-success»]32bit[/label], ενώ οι Double σε [label variation=»label-success»]64bit[/label] αποτελούνται από την διπλάσια ψηφιολέξη και θα πρέπει να υποστηρίζονται από την κάρτα γραφικών. Για το Double Precision computer power τα πράματα είναι λιγάκι ασαφή. Συναρτήσει του Single όσο περισσότερο μνήμη γραφικών διατίθεται, τόσο περισσότερα FLOPS θα αναπαράγει (χωρίς να επικρατεί πάντα μια σταθερή αναλογία single/double), διότι πλέον το πλήθος τον δεδομένων είναι τόσο κολοσσιαίο που απαιτούνται αρκετά GB μνήμης

[label variation=»label-danger»]Pixel Fill Rate[/label] = ROPs x Core Clock

[label variation=»label-danger»]Texture Fill Rate[/label] = Tetxture Units x Core Clock

[label variation=»label-danger»]Single Precision computer power[/label] (FLOPS) = Core Clock x Cores x SIMDs x (mul_add units x 2 + mul units)

[label variation=»label-danger»]Cores[/label] x [label variation=»label-danger»]SIMDs[/label] = Stream Processors = CUDA Cores

Για τις περισσότερες κάρτες γραφικών του εμπορίου για κοινή χρήση και gaming τα mul_add units=1 και mul units=0, οι τιμές αυτές αλλάζουν αρκετά σε επαγγελματικά μοντέλα για render, σουίτες υπολογισμών κ.α. Οπότε έχουμε

[label variation=»label-danger»]Nvidia[/label]: Single Precision computer power (FLOPS) = Core Clock x CUDA Cores x 2 ή

[label variation=»label-danger»]AMD[/label]: Single Precision computer power (FLOPS) = Core Clock x Stream Processors x 2

Για να βγουν τα αποτελέσματα σε GFLOPS τότε να είναι το Core Clock se GHz, για ΜFLOPS σε ΜHz και για FLOPS σε Hz.

[label variation=»label-danger»]Effective Clock[/label] = Memory Clock x DDR

[label variation=»label-danger»]Graphics Memory Bandwidth[/label] = Effective Clock x Memory Bus Width      (bit/s)

[label variation=»label-danger»]Graphics Memory Bandwidth[/label] = Effective Clock x Memory Bus Width / 8 (byte/s)

Για να βγουν τα αποτελέσματα σε Gbit/s ή GB/s, τότε να είναι το Memory Clock se GHz, για Μbit/s ή MB/s σε ΜHz και για bits/s bytes/s σε Hz.

  • Johnnakos

    πολυ ωραιο αρθρο δικε μου