Πώς υπολογίζετε την ταχύτητα επεξεργαστή σε επεξεργαστές πολλαπλών πυρήνων;
Η εμφάνιση οικονομικών επεξεργαστών πολλαπλών πυρήνων για καταναλωτές θέτει το ερώτημα σε πολλούς χρήστες: πώς υπολογίζετε αποτελεσματικά την πραγματική ταχύτητα ενός συστήματος πολλαπλών πυρήνων; Είναι ένα σύστημα 4-core 3Ghz πραγματικά 12Ghz; Διαβάστε παρακάτω καθώς ερευνούμε.
Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με τον εαυτό μας με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινοτική μονάδα δίσκου των ιστότοπων ερωτήσεων & απαντήσεων.
Το ερώτημα
Ο αναγνώστης SuperUser NReilingh ήταν περίεργος πώς η ταχύτητα του επεξεργαστή για ένα σύστημα πολλαπλών πυρήνων υπολογίζεται στην πραγματικότητα:
Είναι σωστό να πούμε, για παράδειγμα, ότι ένας επεξεργαστής με τέσσερις πυρήνες εκάστου που εκτελείται σε 3GHz είναι στην πραγματικότητα ένας επεξεργαστής που εκτελείται σε 12GHz?
Κάποτε μπήκα σε ένα επιχείρημα "Mac εναντίον υπολογιστή" (το οποίο από την πλευρά του δεν είναι το επίκεντρο αυτού του θέματος ... που ήταν στο γυμνάσιο) με γνωστό που επέμενε ότι οι Mac ήταν διαφημίζονται μόνο ως μηχανές 1Ghz επειδή ήταν διπλές - επεξεργαστές G4 που λειτουργούν κάθε φορά στα 500MHz.
Εκείνη την εποχή ήξερα ότι αυτό το φαινόμενο θα ήταν γεμάτο για λόγους που νομίζω ότι είναι προφανείς στους περισσότερους ανθρώπους, αλλά μόλις είδα ένα σχόλιο σε αυτή την ιστοσελίδα με την επίδραση "6 πυρήνων x 0.2GHz = 1.2Ghz" και αυτό με έκανα να σκεφτώ πάλι για το αν υπάρχει μια πραγματική απάντηση σε αυτό.
Έτσι, αυτό είναι ένα περισσότερο ή λιγότερο φιλοσοφικό / βαθύ τεχνικό ερώτημα σχετικά με τη σημασιολογία του υπολογισμού ταχύτητας ρολογιού. Βλέπω δύο δυνατότητες:
- Κάθε πυρήνας εκτελεί στην πραγματικότητα x υπολογισμούς ανά δευτερόλεπτο, οπότε ο συνολικός αριθμός υπολογισμού είναι x (πυρήνες).
- Η ταχύτητα του ρολογιού είναι μάλλον ένας μετρητής του αριθμού των κύκλων που περνά ο επεξεργαστής μέσα σε ένα δευτερόλεπτο, έτσι ώστε όσο όλοι οι πυρήνες λειτουργούν με την ίδια ταχύτητα, η ταχύτητα κάθε κύκλου ρολογιού παραμένει η ίδια ανεξάρτητα από τον αριθμό των πυρήνων . Με άλλα λόγια, η Hz = (core1Hz + core2Hz + ...) / πυρήνες.
Επομένως, ποιος είναι ο κατάλληλος τρόπος για να δηλώσει τη συνολική ταχύτητα ρολογιού και, το πιο σημαντικό, είναι ακόμη δυνατό να χρησιμοποιηθεί ονοματολογία ταχύτητας ενός πυρήνα σε ένα σύστημα πολλαπλών πυρήνων?
Η απάντηση
Οι συνδρομητές του SuperUser Mokubai βοηθούν να ξεκαθαρίσουν τα πράγματα. Αυτός γράφει:
Ο βασικός λόγος για τον οποίο ο επεξεργαστής τετραπλού πυρήνα 3GHz δεν είναι ποτέ τόσο γρήγορος όσο ένας μονοφωνικός πυρήνας 12 GHz είναι ο τρόπος με τον οποίο λειτουργεί η εργασία που εκτελείται σε αυτόν τον επεξεργαστή, δηλ. Ένα μονόκλωνο ή πολλαπλών σπειρωμάτων. Ο νόμος του Amdahl είναι σημαντικός όταν εξετάζετε τους τύπους εργασιών που εκτελείτε.
Εάν έχετε μια εργασία που είναι εγγενώς γραμμική και πρέπει να γίνει με ακρίβεια βήμα-βήμα όπως (ένα απλά απλό πρόγραμμα)
10: α = α + 1
20: Έγινε 10
Στη συνέχεια, η εργασία εξαρτάται σε μεγάλο βαθμό από το αποτέλεσμα του προηγούμενου περάσματος και δεν μπορεί να τρέξει πολλαπλά αντίγραφα του ίδιου χωρίς να καταστραφεί η τιμή του
'ένα'
καθώς κάθε αντίγραφο θα πάρει την αξία του'ένα'
σε διαφορετικές χρονικές στιγμές και γράφοντας την διαφορετικά. Αυτό περιορίζει την εργασία σε ένα καινούργιο νήμα και έτσι η εργασία μπορεί να εκτελείται μόνο σε έναν ενιαίο πυρήνα ανά πάσα στιγμή, εάν πρόκειται να τρέξει σε πολλαπλούς πυρήνες, τότε θα συμβεί η διαφθορά συγχρονισμού. Αυτό περιορίζει το 1/2 της ισχύος cpu ενός συστήματος διπλού πυρήνα, ή το 1/4 σε ένα σύστημα quad core.Τώρα πάρτε μια εργασία όπως:
10: α = α + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: Έγινε 10
Όλες αυτές οι γραμμές είναι ανεξάρτητες και θα μπορούσαν να χωριστούν σε 4 ξεχωριστά προγράμματα όπως η πρώτη και να τρέξουν ταυτόχρονα, καθένα από τα οποία μπορεί να χρησιμοποιήσει αποτελεσματικά την πλήρη ισχύ ενός από τους πυρήνες χωρίς κανένα πρόβλημα συγχρονισμού, αυτό είναι όπου ο Νόμος του Amdahl έρχεται σε αυτό.
Έτσι, εάν έχετε μια ενιαία εφαρμογή με σπείρωμα που κάνει υπολογισμούς βίαιης δύναμης, ο μόνος επεξεργαστής 12GHz θα κερδίσει τα χέρια κάτω, αν μπορείτε κάπως να κάνετε το έργο χωρισμένο σε ξεχωριστά μέρη και με πολλαπλά σπειρώματα τότε οι 4 πυρήνες θα μπορούσαν να πλησιάσουν, την ίδια απόδοση, σύμφωνα με το νόμο Amdahl.
Το κύριο πράγμα που σας δίνει ένα σύστημα πολλαπλών CPU είναι η ανταπόκριση. Σε ένα ενιαίο κεντρικό μηχάνημα που εργάζεται σκληρά, το σύστημα μπορεί να φαίνεται υποτονικό καθώς οι περισσότερες φορές θα μπορούσαν να χρησιμοποιηθούν από μία εργασία και τα άλλα καθήκοντα τρέχουν μόνο σε σύντομες εκρήξεις μεταξύ της μεγαλύτερης εργασίας, οδηγώντας σε ένα σύστημα που φαίνεται υποτονικό ή τρελό . Σε ένα σύστημα πολλαπλών πυρήνων το βαρύ καθήκον παίρνει έναν πυρήνα και όλα τα άλλα καθήκοντα παίζουν στους άλλους πυρήνες, κάνοντας τις δουλειές τους γρήγορα και αποτελεσματικά.
Το επιχείρημα του "6 πυρήνες x 0.2GHz = 1.2Ghz" είναι σκουπίδια σε κάθε κατάσταση, εκτός από όπου τα καθήκοντα είναι απόλυτα παράλληλα και ανεξάρτητα. Υπάρχει ένας καλός αριθμός εργασιών που είναι ιδιαίτερα παράλληλες, αλλά απαιτούν ακόμα κάποια μορφή συγχρονισμού. Το χειρόφρενο είναι ένα βίντεο trancoder που είναι πολύ καλό για τη χρήση όλων των διαθέσιμων CPU, αλλά απαιτεί μια βασική διαδικασία για να κρατήσει τα άλλα νήματα γεμάτα με δεδομένα και να συλλέξει τα δεδομένα που έχουν γίνει με.
- Κάθε πυρήνας εκτελεί στην πραγματικότητα x υπολογισμούς ανά δευτερόλεπτο, οπότε ο συνολικός αριθμός υπολογισμού είναι x (πυρήνες).
Κάθε πυρήνας είναι ικανός να κάνει υπολογισμούς x ανά δευτερόλεπτο, υποθέτοντας ότι ο φόρτος εργασίας είναι κατάλληλος παράλληλος, σε ένα γραμμικό πρόγραμμα το μόνο που έχετε είναι 1 πυρήνας.
- Η ταχύτητα του ρολογιού είναι μάλλον ένας μετρητής του αριθμού των κύκλων που περνά ο επεξεργαστής μέσα σε ένα δευτερόλεπτο, έτσι ώστε όσο όλοι οι πυρήνες λειτουργούν με την ίδια ταχύτητα, η ταχύτητα κάθε κύκλου ρολογιού παραμένει η ίδια ανεξάρτητα από τον αριθμό των πυρήνων . Με άλλα λόγια, η Hz = (core1Hz + core2Hz + ...) / πυρήνες.
Νομίζω ότι είναι λάθος να σκεφτόμαστε ότι 4 x 3GHz = 12GHz, παραχωρήσαμε τα μαθηματικά έργα, αλλά συγκρίνετε τα μήλα με τα πορτοκάλια και τα ποσά δεν είναι σωστά, τα GHz δεν μπορούν απλά να συνδυαστούν για κάθε κατάσταση. Θα το αλλάξω σε 4 x 3GHz = 4 x 3GHz.
Έχετε κάτι να προσθέσετε στην εξήγηση; Απενεργοποιήστε τα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους τεχνολογικούς χρήστες Stack Exchange; Δείτε το πλήρες νήμα συζήτησης εδώ.