sta09 Δημοσ. 16 Φεβρουαρίου 2014 Δημοσ. 16 Φεβρουαρίου 2014 Από όσο γνωρίζω σε ένα πυρήνα, 1 Ghz σημαίνει 1.000.000.000 (δις) χτύπους ή κύκλους ή αλλιώς νήματα το δευτερόλεπτο. Σε κάθε νήμα του ρολογιού του συστήματος εκτελείται μια μικρολειτουργία του υπολογιστή. Όταν μιλάμε για περισσότερους από ένα πυρήνες αυτό πώς εξηγείται; Στο παράδειγμα του 4πύρηνου των 3,4Ghz πως συμπεριφέρεται η cpu; Καλώς σας βρήκα στο forum και ευχαριστώ εκ των προτέρων..
NT1G Δημοσ. 16 Φεβρουαρίου 2014 Δημοσ. 16 Φεβρουαρίου 2014 Welcome to the jungle. Νήματα (threads) πάντως δεν είναι.
Johny Q Δημοσ. 16 Φεβρουαρίου 2014 Δημοσ. 16 Φεβρουαρίου 2014 Κάποια προγράμματα είναι σχεδιασμένα να τρέχουν σε περισσότερους από έναν πυρήνες. Σε αυτή την περίπτωση, ο κάθε πυρήνας αναλαμβάνει να τρέξει ένα κομμάτι του κώδικα του προγράμματος. Τα Ghz τα έχεις καταλάβει όπως έγραψες
Ziant Δημοσ. 16 Φεβρουαρίου 2014 Δημοσ. 16 Φεβρουαρίου 2014 Από όσο γνωρίζω σε ένα πυρήνα, 1 Ghz σημαίνει 1.000.000.000 (δις) χτύπους ή κύκλους ή αλλιώς νήματα το δευτερόλεπτο. Σε κάθε νήμα του ρολογιού του συστήματος εκτελείται μια μικρολειτουργία του υπολογιστή. Όταν μιλάμε για περισσότερους από ένα πυρήνες αυτό πώς εξηγείται; Στο παράδειγμα του 4πύρηνου των 3,4Ghz πως συμπεριφέρεται η cpu; Καλώς σας βρήκα στο forum και ευχαριστώ εκ των προτέρων.. Σε κάθε κύκλο ο πυρήνας μπορεί να δουλέψει μόνο ένα νήμα, το κάθε νήμα μπορεί να χρειαστεί πχ χιλιάδες κύκλους, άρα θεωρητικά μπορεί να επεξεργαστεί 1 δις φορές το ίδιο/διαφορετικό νήμα το δευτερόλεπτο (όχι 1 δις νήματα) Όταν ο επεξεργαστής έχει 4 πυρήνες, αν ο κάθε πυρήνας είναι αυτόνομος, δηλαδή έχει όλα τα απαραίτητα εργαλεία για να δουλέψει το κάθε νήμα και αν μπορούν οι 4 πυρήνες να δουλέψουν ταυτόχρονα στα 3,4 ghz, τότε θα έχουμε 4 x 3.4 δις κύκλους = 13,6 δις κύκλους, άρα μπορεί να επεξεργαστεί 13,6 δις φορές το ίδιο/διαφορετικό νήμα (θεωρητικά στην πράξη δεν γίνεται). Για να γίνει αυτό κάποιος πρέπει να δώσει δουλειά στον επεξεργαστή (διεργασία), μέσω ενός λειτουργικού (πχ windows/διεργασίες windows), και ανάλογα αν το προγράμμα + λειτουργικό, μπορούν να εκμεταλλευτούν τα ταυτόχρονα τους 4 πυρήνες, θα έχουμε το ανάλογο αποτέλεσμα. Δηλαδή άσχετα πόσους πυρήνες έχουμε, μπορεί να δουλεύουν οι 2 από κάποιο πρόγραμμα μόνο… Αυτό δεν σημαίνει ότι ένα τετραπύρηνος επεξεργαστής είναι ταχύτερος από 4 επεξεργαστές που έχουν ένα πυρήνα ο καθένας, γιατί οι πυρήνες του τετραπύρηνου έχουν κοινή L3 cache και πολλά άλλα, ενώ αν έχουμε 4 ξεχωριστούς επεξεργαστές είναι τελείως αυτόνομοι. Έτσι στην περίπτωση ενός τετραπύρηνου, έχουμε διαφορετική απόδοση όταν δουλεύει μόνο ο ένας πυρήνας (single thread), από ότι αν δουλεύουν 2 ή 4 ταυτόχρονα, γιατί ο ένας πυρήνας μπορεί να εκμεταλλευτεί όλους τους διαθέσιμους πόρους του επεξεργαστή. Έχουμε τους πραγματικούς πυρήνες, δηλαδή τους πυρήνες που υπάρχουν στον επεξεργαστή και τους λογικούς πυρήνες, δηλαδή τους πυρήνες που βλέπει το λειτουργικό. Σε ένα τετραπύρηνο επεξεργαστή που έχει 4 πραγματικούς πυρήνες το λειτουργικό βλέπει 4 λογικούς πυρήνες. Σε κάθε λογικό πυρήνα το λειτουργικό/πρόγραμμα αναθέτει ένα νήμα και κατά συνέπεια ο πραγματικός πυρήνας εκτελεί το νήμα. Στην περίπτωση που έχουμε ένα intel multi-threading ενώ έχει 4 πραγματικούς πυρήνες, το λειτουργικό βλέπει 8 λογικούς πυρήνες, έτσι αναθέτει 8 νήματα (όταν μπορεί), ένα νήμα σε κάθε λογικό πυρήνα, άλλα ο επεξεργαστής έχει μόνο 4 πραγματικούς πυρήνες, και ο κάθε πραγματικός πυρήνας μπορεί να εκτελέσει μόνο ένα νήμα, έτσι στην ουσία εκτελούνται ταυτόχρονα μόνο 4 νήματα. Στην περίπτωση ενός οκταπυρηνου amd επεξεργαστή, ενώ έχουμε 8 πυρήνες, δεν είναι τελείως αυτόνομοι όπως οι Intel, έτσι ενώ το λειτουργικό βλέπει 8 λογικούς πυρήνες και ο επεξεργαστής έχει 8 πραγματικούς πυρήνες, δεν μπορούν να εκτελεστούν 8 νήματα ταυτόχρονα επειδή ανά 2 πυρήνες έχουν κοινά εργαλεία, δηλαδή κάθε 2 πυρήνες = 1 module, και στην ουσία έχει 4 module = 4 νήματα ανά κύκλο. Πρόγραμμα = μια ή παραπάνω διεργασίες Διεργασία = ένα ή παραπάνω νήματα… 7
sta09 Δημοσ. 16 Φεβρουαρίου 2014 Μέλος Δημοσ. 16 Φεβρουαρίου 2014 Ziant, ευχαριστώ! Επομένως, από τη μία ένας επεξεργαστής με π.χ. τέσσερις πυρήνες χρονισμένους σε 3.4Ghz εκμεταλλεύεται ''καλύτερα'' τους πόρους του σε μικρότερο αριθμό διεργασιών, ενώ από την άλλη ένας επεξεργαστής με > 4 πυρήνες και τα ίδια Ghz λειτουργεί ''καλύτερα'' σε μεγαλύτερο αριθμό διεργασιών. Άρα και η τεχνολογία multithreading της intel καταφέρνει να αξιοποιεί ''καλύτερα'' τους χ πυρήνες της ανεξάρτητα των αριθμών των διεργασιών, σε σχέση με έναν επεξεργαστή με φυσικούς χ*2 πυρήνες.
SR20DET Δημοσ. 16 Φεβρουαρίου 2014 Δημοσ. 16 Φεβρουαρίου 2014 guys, επειδή βλέπω να το κατέχετε το θέμα, να κάνω μια ερώτηση που έχω απορία και εγώ; Σε προγράμματα που εκμεταλλεύονται ολο τον αριθμό των πυρήνων, είναι πιο σημαντική η συχνότητα ή το πλήθος τους; Δηλαδή είναι καλύτερο να έχω 12πυρήνες των 2,4 Ghz ή 6 πυρήνες των 4,8ghz? υπάρχει κάποιος λόγος(αναλογία) που αντιστοιχίζονται αυτά τα δύο;
Zaknafein Δημοσ. 16 Φεβρουαρίου 2014 Δημοσ. 16 Φεβρουαρίου 2014 @sta09 Καλώς ήρθες στο φόρουμ. Η περιγραφή που κάνει ο Ziant δεν είναι απόλυτα σωστή και το συμπέρασμα σου είναι λάθος, γιατί το γενικεύεις. Ένας Core i3 πχ με 2 φυσικούς αλλά 4 λογικούς πυρήνες ελέω hyper-threading δεν είναι καλύτερος από έναν Core i5 με 4 φυσικούς/λογικούς πυρήνες που δεν έχει hyper-threading. Γενικότερα Χ φυσικοί πυρήνες + ΗΤ < Χ*2 φυσικοί πυρήνες, εφόσον μιλάμε για ίδια αρχιτεκτονική πυρήνα. Αν έχουμε ας πούμε ένα πρόγραμμα με 2 διεργασίες/νήματα και έχουμε έναν i3, i5 και i7 επεξεργαστή στην ίδια συχνότητα, δεν θα υπάρχει διαφορά στην απόδοση μεταξύ τους, αφού όλοι θα τρέξουν αυτά τα 2 νήματα στους φυσικούς πυρήνες τους οι οποίοι αφού έχουν ίδια αρχιτεκτονική και συχνότητα, θα πάρουν τον ίδιο χρόνο για να τα εκτελέσουν, ανεξάρτητα αν έχουν κάποιους πυρήνες που "κάθονται". Απ'την άλλη, αν τα νήματα είναι 3 ή 4, ο i3 λογικά θα υστερήσει λίγο έναντι του i5 & i7, ενώ αν αυξήσουμε τα νήματα παραπάνω, θα αρχίσει να εμφανίζεται το προβάδισμα του i7 έναντι του i5 λόγω των παραπάνω λογικών πυρήνων. Τα παραδείγματα είναι υπερ-απλουστευμένα και σκοπίμως αποφεύγω να συγκρίνω διαφορετικές αρχιτεκτονικές, γιατί εκεί μπλέκει το θέμα. @SR20DET Εξαρτάται από τα νήματα και την ισχύ που απαιτεί το καθένα, καθώς και τον βαθμό στον οποίο έχει εφαρμογή ο παραλληλισμός. Γιατί μπορεί να έχει 500 νήματα το πρόγραμμα, αλλά μπορεί τα 498 να περιμένουν τα άλλα 2 να βγάλουν κάποιο αποτέλεσμα... Μόνο σε εντελώς θεωρητικό επίπεδο μπορείς να συγκρίνεις τα γινόμενα (πυρήνες*συχνότητα) για να βγάλεις κάποιο συμπέρασμα, γιατί στην πράξη είναι πολλοί οι παράγοντες που επιρρεάζουν.
sta09 Δημοσ. 17 Φεβρουαρίου 2014 Μέλος Δημοσ. 17 Φεβρουαρίου 2014 @nikos1982 Πέρα απ'τη κόντρα intel vs amd ρωτάω κυρίως για να μάθω τις σχέσεις μεταξύ φυσικών και λογικών πυρήνων και χρονισμού σε έναν επεξεργαστή και επίσης σε ποιες περιπτώσεις γίνεται καλύτερη εκμετάλλευση των πόρων του. @Zaknafein Ειδικότερα λοιπόν, κατά τη διαδικασία του hyperthreading αντιγράφονται οι καταχωρητές του επεξεργαστή στους οποίους αποθηκεύεται η αρχιτεκτονική κατάσταση του (επεξεργαστή) και έτσι ο ένας φυσικός πυρήνας εμφανίζεται ως δύο λογικοί. Οι δύο αυτοί λογικοί πυρήνες μπορούν να εκτελέσουν δύο έστω, διαφορετικές διεργασίες ταυτόχρονα στον ίδιο φυσικό πυρήνα εφόσον ο ένας δεν χρησιμοποιεί τους πόρους του άλλου. Σε αντίθεση με έναν επεξεργαστή ο οποίος δεν διαθέτει hyperthreading τεχνολογία, ο οποίος θα αξιοποιήσει πλήρως τους πόρους του ενός φυσικού του πυρήνα για μία διεργασία και όταν ''στερέψουν'' οι πόροι θα μπει σε λειτουργία ο δεύτερος, μετά ο τρίτος κτλ. Ανακεφαλαιώνοντας λοιπόν σε θεωρητικό επίπεδο και μιλώντας πάντα για ίδιες αρχιτεκτονικές επεξεργαστή, ένας επεξεργαστής α) 4πύρηνος στα 3,4 Ghz με τεχνολογία hyperthreading είναι ποιο γρήγορος σε σχέση με έναν β) 4πύρηνο στα 3.4Ghz χωρίς hyperthreading. Ένας γ) 6πύρηνος στα 3.4 είναι πιο γρήγορος από τον α). Πρακτικά ''συμφέρουν'' επεξεργαστές οι οποίοι χρησιμοποιούν καλύτερα τον κάθε φυσικό πυρήνα τους ξεχωριστά, σωστά;
Ziant Δημοσ. 17 Φεβρουαρίου 2014 Δημοσ. 17 Φεβρουαρίου 2014 (επεξεργασμένο) Οι δύο αυτοί λογικοί πυρήνες μπορούν να εκτελέσουν δύο έστω, διαφορετικές διεργασίες ταυτόχρονα στον ίδιο φυσικό πυρήνα εφόσον ο ένας δεν χρησιμοποιεί τους πόρους του άλλου. Δεν μπορεί να εκτελέσει ένας πραγματικός πυρήνας 2 νήματα ταυτόχρονα...Σε hyper-threading τον κάθε πραγματικό πυρήνα το λειτουργικό τον βλέπει ως 2 λογικούς πυρήνες, σε κάθε λογικό πάει από ένα νήμα, αλλά ο πραγματικός πυρήνας εκτελεί 1 νήμα, το άλλο είναι standby… Δεν είναι τόσο απλά τα πράγματα μην προσπαθείς να τα γενικευσεις... Ανακεφαλαιώνοντας λοιπόν σε θεωρητικό επίπεδο και μιλώντας πάντα για ίδιες αρχιτεκτονικές επεξεργαστή, ένας επεξεργαστής α) 4πύρηνος στα 3,4 Ghz με τεχνολογία hyperthreading είναι ποιο γρήγορος σε σχέση με έναν β) 4πύρηνο στα 3.4Ghz χωρίς hyperthreading. Ένας γ) 6πύρηνος στα 3.4 είναι πιο γρήγορος από τον α). Πρακτικά ''συμφέρουν'' επεξεργαστές οι οποίοι χρησιμοποιούν καλύτερα τον κάθε φυσικό πυρήνα τους ξεχωριστά, σωστά; Έτσι όπως το θέτεις καλύτερος είναι ο γ) μετά ο α) και μετά ο β)… Το θέμα είναι τα προγράμματα/λειτουργικο που θα χρησιμοποιείς, πόσους πυρήνες χρησιμοποιούν ταυτόχρονα. Ακόμα και αν χρησιμοποιούν 6 πυρήνες ταυτόχρονα και έχεις μια εφαρμογή με 6/12 νήματα, δεν θα γίνει η δουλειά x6 φορές γρηγορότερα και αυτός είναι ένας από τους λόγους που οι εφαρμογές δεν χρησιμοποιούν πολλούς πυρήνες. Σε αντίθεση με έναν επεξεργαστή ο οποίος δεν διαθέτει hyperthreading τεχνολογία, ο οποίος θα αξιοποιήσει πλήρως τους πόρους του ενός φυσικού του πυρήνα για μία διεργασία και όταν ''στερέψουν'' οι πόροι θα μπει σε λειτουργία ο δεύτερος, μετά ο τρίτος κτλ. Δεν μπορεί να μπει κανένας πυρήνας μόνος του σε λειτουργία… Το πρόγραμμα αν χρησιμοποιεί ένα πυρήνα, με έναν θα δουλεύει, δεν μπορούν τα windows να δώσουν νήμα από αυτό το πρόγραμμα σε άλλο πυρήνα, δεν υπάρχει τέτοια λειτουργία.Τα windows δεν αθροίζουν νήματα και τα μοιράζουν σε πυρήνες, το κάθε νήμα προέρχεται από συγκεκριμένη διεργασία που δουλεύει με συγκεκριμένο πυρήνα, αυτό που μπορούν να κάνουν τα windows είναι όταν ένας πυρήνας έχει φόρτο εργασίας να δώσουν σε άλλο πυρήνα όλη την εφαρμογή. Επεξ/σία 17 Φεβρουαρίου 2014 από Ziant
TheELF Δημοσ. 17 Φεβρουαρίου 2014 Δημοσ. 17 Φεβρουαρίου 2014 Δεν μπορεί να εκτελέσει ένας πραγματικός πυρήνας 2 νήματα ταυτόχρονα...Σε hyper-threading τον κάθε πραγματικό πυρήνα το λειτουργικό τον βλέπει ως 2 λογικούς πυρήνες, σε κάθε λογικό πάει από ένα νήμα, αλλά ο πραγματικός πυρήνας εκτελεί 1 νήμα, το άλλο είναι standby… Αυτό δεν έχει καμία σχέση με hyperthreading αυτό που περιγράφεις,να σταματάει η εκτέλεση σε ένα νήμα για να τρέξει ένα άλλο, γινόταν μαζικά το 1985 από την amiga. http://en.wikipedia.org/wiki/Computer_multitasking#Preemptive_multitasking Μετά από 30 χρόνια, όσο νάνε, λιγάκι προχωρήσανε τα πράγματα http://software.intel.com/en-us/articles/performance-insights-to-intel-hyper-threading-technology
Ziant Δημοσ. 17 Φεβρουαρίου 2014 Δημοσ. 17 Φεβρουαρίου 2014 Αυτό δεν έχει καμία σχέση με hyperthreading αυτό που περιγράφεις,να σταματάει η εκτέλεση σε ένα νήμα για να τρέξει ένα άλλο, γινόταν μαζικά το 1985 από την amiga. Σε 1 πραγματικό πυρήνα δεν μπορούν να τρέξουν ταυτόχρονα 2 νήματα... Σε κάθε κύκλο τρέχει ενα νήμα...
TheELF Δημοσ. 17 Φεβρουαρίου 2014 Δημοσ. 17 Φεβρουαρίου 2014 Σε 1 πραγματικό πυρήνα δεν μπορούν να τρέξουν ταυτόχρονα 2 νήματα... Σε κάθε κύκλο τρέχει ενα νήμα... Για αυτόν τον λόγο προσθέτουν και τον λογικό πυρήνα... Στο λινκ τα εξηγεί με μεγάλη λεπτομέρεια.
Ziant Δημοσ. 17 Φεβρουαρίου 2014 Δημοσ. 17 Φεβρουαρίου 2014 Για αυτόν τον λόγο προσθέτουν και τον λογικό πυρήνα... Στο λινκ τα εξηγεί με μεγάλη λεπτομέρεια. Δεν καταλαβαίνω που διαφωνείς… Μάλλον τρολάρεις ως συνήθως... Αυτό δεν έχει καμία σχέση με hyperthreading αυτό που περιγράφεις,να σταματάει η εκτέλεση σε ένα νήμα για να τρέξει ένα άλλο, γινόταν μαζικά το 1985 από την amiga. Αυτό είναι δικό σου συμπέρασμα, δεν έγραψα κατι τέτοιο...
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα