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

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

Δημοσ.

@Zaknafein Ανακεφαλαιώνοντας λοιπόν σε θεωρητικό επίπεδο και μιλώντας πάντα για ίδιες αρχιτεκτονικές επεξεργαστή, ένας επεξεργαστής α) 4πύρηνος στα 3,4 Ghz με τεχνολογία hyperthreading είναι ποιο γρήγορος σε σχέση με έναν β) 4πύρηνο στα 3.4Ghz χωρίς hyperthreading. Ένας γ) 6πύρηνος στα 3.4 είναι πιο γρήγορος από τον α). 

Πρακτικά ''συμφέρουν'' επεξεργαστές οι οποίοι χρησιμοποιούν καλύτερα τον κάθε φυσικό πυρήνα τους ξεχωριστά, σωστά; 

 

Για λεπτομέρειες σχετικά με το ΗΤ, ο σύνδεσμος απ΄το ξωτικό είναι πολύ επεξηγηματικός.

 

Η ανακεφαλαίωση σε πολύ γενικές γραμμές και στη θεωρία είναι σωστή. Στην πράξη έχουν παρατηρηθεί φαινόμενα όπου πχ ένας επεξεργαστής 4+4 έχει χαμηλότερη απόδοση από τον ίδιο με 4+0 (ΗΤ απενεργοποιημένο). Επίσης κάποιες εφαρμογές μπορεί να εκμεταλλεύονται τα 4+4 νήματα του α) σε τέτοιο βαθμό που να τον κάνουν γρηγορότερο από τα 6+0 νήματα του γ).

 

Μην ξεχνάς ότι το ΗΤ έχει κάποιους περιορισμούς λόγω των κοινών πόρων, γι'αυτό η ασφαλής, γενικευμένη σύγκριση είναι Χ πυρήνες + ΗΤ με Χ*2 πυρήνες όπου οι 2Χ πυρήνες είναι "καλύτεροι" αλλά με χαμηλότερη ενεργειακή απόδοση.

  • Like 1
  • Απαντ. 38
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Δημοσ.

Δεν καταλαβαίνω που διαφωνείς… Μάλλον τρολάρεις ως συνήθως...

Δεν μπορεί να εκτελέσει ένας πραγματικός πυρήνας 2 νήματα ταυτόχρονα...Σε hyper-threading τον κάθε πραγματικό πυρήνα το λειτουργικό τον βλέπει ως 2 λογικούς πυρήνες, σε κάθε λογικό πάει από ένα νήμα, αλλά ο πραγματικός πυρήνας εκτελεί 1 νήμα, το άλλο είναι standby…

 

Σε 1 πραγματικό πυρήνα δεν μπορούν να τρέξουν ταυτόχρονα 2 νήματα... Σε κάθε κύκλο τρέχει ενα νήμα...

Ένας i7 έχει 4 πραγματικούς αλλά 8 λογικούς πυρήνες,δεν τρέχει όμως 4 νήματα ταυτόχρονα αλλά 8, τρέχει 2 νήματα σε κάθε πραγματικό πυρήνα.

 

Αυτό είναι δικό σου συμπέρασμα, δεν έγραψα κατι τέτοιο...

 

 

ο πραγματικός πυρήνας εκτελεί 1 νήμα, το άλλο είναι standby

δεν μπορούν να τρέξουν ταυτόχρονα 2 νήματα

Δεν είναι συμπέρασμα δικό μου, είναι αυτά που γράφεις εσύ.

Και standby και όχι ταυτόχρονα,ε τη άλλο μπορεί να εννοούσες;;;

 

 

  • Like 2
Δημοσ.

 

Ένας i7 έχει 4 πραγματικούς αλλά 8 λογικούς πυρήνες,δεν τρέχει όμως 4 νήματα ταυτόχρονα αλλά 8, τρέχει 2 νήματα σε κάθε πραγματικό πυρήνα.

 

 

Ταυτόχρονα σου λέω ότι δεν μπορεί, παράλληλα μπορεί…

 

Ταυτόχρονα σημαίνει ότι σε κάθε κύκλο τρέχει ο πραγματικός πυρήνας 2 νήματα, αυτό δεν μπορεί να το κάνει κανένας πυρήνας. Ο κάθε πραγματικος πυρήνας μπορεί σε κάθε κύκλο να τρέξει ένα νήμα… Απλό είναι…

 

Μάλλον εσύ χρειάζεσαι διάβασμα...

Δημοσ.

Ταυτόχρονα σου λέω ότι δεν μπορεί, παράλληλα μπορεί…

 

Ταυτόχρονα σημαίνει ότι σε κάθε κύκλο τρέχει ο πραγματικός πυρήνας 2 νήματα, αυτό δεν μπορεί να το κάνει κανένας πυρήνας. Ο κάθε πραγματικος πυρήνας μπορεί σε κάθε κύκλο να τρέξει ένα νήμα… Απλό είναι…

 

Μάλλον εσύ χρειάζεσαι διάβασμα...

Ξεκόλλα από την γνώση του τι γινόταν μερικές γενιές πριν και διάβασε το λινκ που ανέβασα.

Όταν λέμε ταυτόχρονα εννοούμε ταυτόχρονα.

http://software.intel.com/en-us/articles/performance-insights-to-intel-hyper-threading-technology

figure3.gif

  • Like 2
Δημοσ.

Εγώ συνεχίζω να επιμένω ότι δεν μπορεί κανένας πραγματικός πυρήνας να εκτελέσει 2 νήματα στον ίδιο κύκλο…

 

Για να προχωρήσει η κουβέντα και να μην “παίζουμε την κολοκυθιά”, αφού μπορεί να εκτελέσει 2 νήματα ταυτόχρονα, γιατί έχει 2 λογικούς πυρήνες και δεν έχει μόνο ένα ?

Δημοσ.

Ευχαριστώ τους συμμετέχοντες στο παρόν θέμα. Ξεκαθάρισα (νομίζω) μέσα στο μυαλό μου και κάποια σκοτεινά σημεία. Δεν νομίζω ότι έχει κάποιος δίκαιο ή άδικο. Από ό,τι κατάλαβα, είναι ταυτόχρονη η εκτέλεση 2 νημάτων υπό την έννοια ότι μέσα σε κάθε κύκλο μοιράζονται οι execution units (4 στο σύνολο για τους καινούργιους επεξεργαστές) στα δύο νήματα, γιατί απλούστατα σπάνια είναι εφικτή η εκτέλεση 4 instructions per cycle ταυτόχρονα για το ίδιο thread. Αυτό που ουσιαστικά κάνει το HT (όπως ωραία δείχνει και το γράφιμα της Intel) είναι ότι ενεργοποιεί τις execution units κάθε κύκλου που κανονικά θα περιμένανε οδηγίες για εκτέλεση σε επόμενο κύκλο (sitting idle) και εκτελεί instructions του άλλου νήματος. Για αυτό τον λόγο το ΗΤ δεν σημαίνει διπλάσια απόδοση, αλλά οπωσδήποτε μεγαλύτερη για εφαρμογές που μπορούν να το χρησιμοποιήσουν.

Δημοσ.

Ευχαριστώ τους συμμετέχοντες στο παρόν θέμα. Ξεκαθάρισα (νομίζω) μέσα στο μυαλό μου και κάποια σκοτεινά σημεία. Δεν νομίζω ότι έχει κάποιος δίκαιο ή άδικο. Από ό,τι κατάλαβα, είναι ταυτόχρονη η εκτέλεση 2 νημάτων υπό την έννοια ότι μέσα σε κάθε κύκλο μοιράζονται οι execution units (4 στο σύνολο για τους καινούργιους επεξεργαστές) στα δύο νήματα, γιατί απλούστατα σπάνια είναι εφικτή η εκτέλεση 4 instructions per cycle ταυτόχρονα για το ίδιο thread. Αυτό που ουσιαστικά κάνει το HT (όπως ωραία δείχνει και το γράφιμα της Intel) είναι ότι ενεργοποιεί τις execution units κάθε κύκλου που κανονικά θα περιμένανε οδηγίες για εκτέλεση σε επόμενο κύκλο (sitting idle) και εκτελεί instructions του άλλου νήματος. Για αυτό τον λόγο το ΗΤ δεν σημαίνει διπλάσια απόδοση, αλλά οπωσδήποτε μεγαλύτερη για εφαρμογές που μπορούν να το χρησιμοποιήσουν.

 

Φίλε μου δυστυχώς δεν είναι έτσι, ο εργάτης (πυρήνας) είναι ένας, στο λειτουργικό φαίνονται 2 ψεύτικοι εργάτες, και σε κάθε εργάτη δίνει ένα νήμα, ότι και να γίνει σε κάθε κύκλο ο εργάτης έχει ένα χέρι και πιάνει ένα εργαλείο και κάνει μια δουλειά, δεν μπορεί να κάνει ταυτόχρονα 2 δουλειές. Τα εργαλεία (πόροι), χωρίς τον εργάτη δεν δουλεύουν, άπλα οι 2 ψεύτικοι εργάτες, βοηθάμε τον πραγματικό εργάτη να κάνει την δουλειά του ποιο γρήγορα. Απλό είναι …

 

Αυτό δεν γίνεται σε όλα τα νήματα, πρέπει τα 2 νήματα που τρέχουν στους 2 λογικούς πυρήνες, να προέρχονται από την ίδια εφαρμογή, δηλαδή οι εντολές στα 2 νήματα να είναι γραμμένες, έτσι ώστε να μπορούν να τρέξουν παράλληλα, όχι ταυτόχρονα, με λίγα λόγια να υποστηρίζει η εφαρμογή hyperthreading, αν δεν το υποστηρίζει οι διαφορές είναι ελαχιστες. Επειδή δεν έχουν όλες οι εφαρμογές καλύτερο αποτέλεσμα, το hyper-threading χρησιμοποιείται από συγκεκριμένες εφαρμογές…

 

Αυτά που παρουσιάζει η intel συμβαίνουν στους λογικούς πυρήνες και όχι στους πραγματικούς…

 

Το ίδιο κάνει και η amd αλλά με άλλο τρόπο…

 

Πχ στον 8320, έχει 8 πραγματικούς πυρήνες, αλλά κάθε 2 έχουν κοινά εργαλεία και αποτελούν ένα module, δηλαδή έχει 4 ανεξάρτητα module , οι 8 πραγματικοί πυρήνες φαίνονται στο λειτουργικό ως 8 λογικοί, έτσι ο κάθε πραγματικός πυρήνας μπορεί να εκτελέσει από ένα νήμα, άλλα δυστυχώς έχει κοινά εργαλεία (πόρους) με τον δίπλα πυρήνα που βρίσκονται στο ίδιο module, έτσι όταν και οι 2 θέλουν να χρησιμοποιήσουν το ίδιο εργαλείο, ο ένας χρησιμοποιεί το εργαλείο και ο άλλος περιμένει. Άρα τις περισσότερες φορές τρέχουν 4 νήματα ταυτόχρονα και άλλα 4 είναι σε αναμονή. Και εδώ έχουμε καλύτερη απόδοση σε συγκεκριμένες εφαρμογές…

Δημοσ.

Το γράφημα που δίνει η Intel είναι σαφές. Πράσινα και μαύρα συμβαίνουν ταυτόχρονα, στον ίδιο κύκλο, απλά δεν μπορούν να χρησιμοποιήσουν την ίδια execution unit. Υπάρχουν λιγότερα γκρι κουτάκια που είναι μονάδες που περιμένουν σε idle. 

Δημοσ.

Φίλε μου δυστυχώς δεν είναι έτσι, ο εργάτης (πυρήνας) είναι ένας, στο λειτουργικό φαίνονται 2 ψεύτικοι εργάτες, και σε κάθε εργάτη δίνει ένα νήμα, ότι και να γίνει σε κάθε κύκλο ο εργάτης έχει ένα χέρι και πιάνει ένα εργαλείο και κάνει μια δουλειά, δεν μπορεί να κάνει ταυτόχρονα 2 δουλειές. Τα εργαλεία (πόροι), χωρίς τον εργάτη δεν δουλεύουν, άπλα οι 2 ψεύτικοι εργάτες, βοηθάμε τον πραγματικό εργάτη να κάνει την δουλειά του ποιο γρήγορα. Απλό είναι …

Ο κάθε ένας από του «ψεύτικους» εργάτες παίρνει ένα νήμα, ότι και να γίνει σε κάθε κύκλο ο κάθε «ψεύτικος» εργάτης έχει ένα χέρι και πιάνει ένα εργαλείο και κάνει μια δουλειά, από την στιγμή που δεν χρειάζονται και οι δυο το ίδιο εργαλείο θα κάνουν την δουλειά τους ταυτόχρονα αν χρειαστούν το ίδιο εργαλείο και μόνο τότε θα περιμένει ο ένας τον άλλον.

Ο διάολος είναι στην λεπτομέρεια.

 

Αυτό δεν γίνεται σε όλα τα νήματα, πρέπει τα 2 νήματα που τρέχουν στους 2 λογικούς πυρήνες, να προέρχονται από την ίδια εφαρμογή, δηλαδή οι εντολές στα 2 νήματα να είναι γραμμένες, έτσι ώστε να μπορούν να τρέξουν παράλληλα, όχι ταυτόχρονα, με λίγα λόγια να υποστηρίζει η εφαρμογή hyperthreading, αν δεν το υποστηρίζει οι διαφορές είναι ελαχιστες. Επειδή δεν έχουν όλες οι εφαρμογές καλύτερο αποτέλεσμα, το hyper-threading χρησιμοποιείται από συγκεκριμένες εφαρμογές…

Μπερδεύεις τα μίλα με τα αχλάδια και τα ονομάζεις μπανάνες....

Αυτό που περιγράφεις είναι το Parallel_computing και δεν έχει άμεση σχέση με το hyperthreading που απλά σε αφήνει να τρέξεις δυο νήματα ταυτόχρονα, το αν θα τρέχουν και παράλληλα έτσι ώστε να δώσουν και καλύτερο αποτέλεσμα σε ένα πρόγραμμα,είναι άλλο ζήτημα.

Το μόνο που χρειάζεται το hyper για να δουλέψει είναι ένα λειτουργικό που το υποστηρίζει και το να είναι προγραμματισμένα τα προγράμματα και τα παιχνίδια με νήματα,κάτι που συμβαίνει από 2006 κατά κόρον.

 

Αυτά που παρουσιάζει η intel συμβαίνουν στους λογικούς πυρήνες και όχι στους πραγματικούς…

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

 

Σόρρυ αλλά, 0 στα 3 .

 

Ακόμα και στην amd στέκι το πρώτο παράδειγμα,

«από την στιγμή που δεν χρειάζονται και οι δυο (λογική πυρήνες)το ίδιο εργαλείο θα κάνουν την δουλειά τους ταυτόχρονα»

  • Like 1
Δημοσ.

Ο κάθε ένας από του «ψεύτικους» εργάτες παίρνει ένα νήμα, ότι και να γίνει σε κάθε κύκλο ο κάθε «ψεύτικος» εργάτης έχει ένα χέρι και πιάνει ένα εργαλείο και κάνει μια δουλειά, από την στιγμή που δεν χρειάζονται και οι δυο το ίδιο εργαλείο θα κάνουν την δουλειά τους ταυτόχρονα αν χρειαστούν το ίδιο εργαλείο και μόνο τότε θα περιμένει ο ένας τον άλλον.

 

+1. Αυτό κατάλαβα κι εγώ.

Δημοσ.

Με άπλα λόγια να τα καταλαβαίνουν όλοι, και ας κάνεις εσύ ότι δεν καταλαβαίνεις… :P

 

Το λειτουργικό δεν έχει καμία νοημοσύνη, ο τρόπος που λειτούργει είναι “αρχαίος”, ένα κομμάτι του λειτουργικού αφορά την “αρχή λειτουργιάς του υπολογιστή”, ονομάζεται πυρήνας του λειτουργικού (καμία σχέση με τους πυρήνες που συζητάμε), και δεν μπορεί κάνεις να επέμβει/να αλλάξει κάτι. Έτσι βλέπουμε καινούργια λειτουργικά που στηρίζονται στον πυρήνα κάποιου άλλου λειτουργικού στην x αρχιτεκτονική, γιατί δεν μπορούν να αλλάξουν κάτι από εκεί και κάτω, και αν αλλάξουν κάτι μπορεί να επηρεάσει την αρχή λειτουργίας του υπολογιστή .

 

Δεν είμαστε στο 1990, που δεν είχε ακόμα οριστεί, τι είναι pc, τι λειτουργικό θα έχει, κατά πόσο θα είναι συμβατό με τα τότε IBM κτλ.  Αυτή την στιγμή ξέρουμε τι είναι pc, τρέχει x86 λειτουργικό κτλ Έτσι η κάθε intel/amd κτλ, ότι hardware κατασκευάζει πρέπει να είναι συμβατό με το λειτουργικό, δηλαδή να τηρεί του βασικούς κανόνες αρχής λειτουργίας του υπολογιστή. Αυτό που μπορεί να κάνει η κάθε Intel , είναι να πει ότι ο τάδε επεξεργαστής θέλει την τάδε μητρική, να εκδώσει μια οδηγία για το λειτουργικό κτλ αλλά δεν μπορεί να παρέμβει στην αρχή λειτουργίας του υπολογιστή.

 

Ο λογικός πυρήνας για ποιο λόγο υπάρχει ? Υπάρχει γιατί το λειτουργικό δεν ξέρει τι είναι πραγματικός πυρήνας ξέρει μόνο τι είναι λογικός πυρήνας, έτσι για κάθε πραγματικό πυρήνα το λειτουργικό βλέπει ένα λογικό πυρήνα. Βάση της αρχής λειτουργίας του υπολογιστή/λειτουργικού/επεξεργαστή, ο κάθε λογικός πυρήνας αναλαμβάνει να εκτελέσει ένα νήμα. Γιατί μόνο ένα νήμα ? Γιατί μόνο ένα νήμα μπορεί ο πραγματικός πυρήνας να εκτελέσει ανά κύκλο (hz).

 

Αφού καταλάβαμε τα παραπάνω που είπα, πάμε στην πατέντες της intel/amd. Επειδή η Intel δεν μπορεί να αλλάξει την αρχή λειτουργίας του υπολογιστή/λειτουργικού για να αυξήσει την παραγωγικότητα του επεξεργαστή κάνει πατέντες/κοροιδευει το λειτουργικό. Αντί να αντιστοιχεί σε κάθε πραγματικό πυρήνα ένα λογικό, με το hyper-threading κοροϊδεύει το λειτουργικό και του παρουσιάζει 2 λογικούς πυρήνες για κάθε ένα πραγματικό.

 

Γιατί το κάνει αυτό ? Γιατί δεν μπορεί να κάνει κάτι άλλο. Δεν μπορεί να αλλάξει κάτι, δουλεύουν όλα με αρχαίο τρόπο. Μπορεί να βελτιώσει τους επεξεργαστές που παράγει, να έχουν καλύτερη απόδοση, να καίνε λιγότερο ρεύμα κτλ, δεν μπορεί να αλλάξει την αρχή λειτουργίας του επεξεργαστή, μπορεί μόνο να την βελτιώσει. Το άλλο που μπορεί να κάνει, είναι να παράγει επεξεργαστές με περισσότερους πραγματικούς αυτονόμους πυρήνες, δηλαδή να βγάλει 8πυρηνους, 12 πύρηνους κτλ, άλλα το πρόβλημα είναι ότι οι παραπάνω πυρήνες δεν επιταχύνουν της εφαρμογές, γιατί οι προγραμματιστές δεν υποστηρίζουν τους παραπάνω πυρήνες. Γιατί δεν τους υποστηρίζουν ? γιατί δεν βελτιώνουν την απόδοση όλων των εφαρμογών, και ανάλογα την εφαρμογή, για να υποστηρίξει παραπάνω πυρήνες πρέπει να γραφτεί από ένα σημείο και μετά από την αρχή. Δεν κάθεται ο προγραμματιστής να γραφεί 2 χρόνια μια εφαρμογή “από την αρχή”, για να υποστηρίξει παραπάνω πυρήνες, πχ από ένα πυρήνα σε τέσσερις, και να δει ότι η παραπάνω απόδοση της εφαρμογής είναι x1.2 και όχι x4. Έτσι υπάρχει αδιέξοδο, και γιαυτό δεν βλέπουμε επεξεργαστές με παραπάνω πυρήνες.

 

Ο πραγματικός εργάτης είναι ένας (πραγματικός πυρήνας), όσο και να κοροϊδέψει η intel το λειτουργικό και να παρουσιάζει 2/4/6/12 λογικούς πυρήνες, το μόνο που καταφέρνει είναι το λειτουργικό, να στέλνει διαφορετικά νήματα ταυτόχρονα στον κάθε λογικό πυρήνα. Το ότι στέλνει ένα νήμα στον λογικό πυρήνα, αυτό δεν σημαίνει ότι το νήμα εκτελείτε, άπλα το στέλνει. Αν του στείλει 1000 νήματα από χίλιους λογικούς πυρήνες, ένα θα δουλεύει ανά κύκλο από τον πραγματικό πυρήνα.

 

Δεν υπάρχουν μαγικά χέρια όπως αναφέρθηκε, χέρια έχει μόνο ο πυρήνας για να πιάσει το κάθε εργαλείο και να κάνει μια λειτουργία ανά κύκλο, δεν μπορεί ο δεύτερος (ψεύτικος) λογικός πυρήνας να πιάσει κανένα εργαλείο, γιατί είναι ψεύτικος/φανταστικος κτλ.

 

Ο πραγματικός εργάτης θα είναι πάντα ένας, και μόνο αυτός μπορεί να κάνει μια δουλειά, και άσε την intel και την κάθε Intel, να παρουσιάζει ότι διάγραμμα θέλει…

 

Η intel θέλει να παραμυθιάζει το λειτουργικό (χωρίς νοημοσύνη), εμείς είμαστε όντα με νοημοσύνη, μην αφήνεται κανένα να σας παραμυθιάζει…

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

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