Jump to content

Τί ρόλο παίζουν οι εντολές στις επιδόσεις ενός επεξεργαστή


Recommended Posts

Απλό ερώτημα που μετά από αρκετό ψάξιμο δεν έχω δει να απαντιέται κάπου με εκτενή τρόπο.

Τί αντίκτυπο επιδόσεων έχουν τα νέα πακέτα εντολών σε έναν επεξεργαστή σε σχέση με τους προκατόχους τους?

π.χ. SSE-SSE2-SSE3-SSE4.1/4.2/4.3

:hmm:

Link to comment
Share on other sites

Από την εμπειρία μου σαν απλός χρήστης (...τι είπα ρε ο π%^στ(ς...:sarcastic:) θα έλεγα ότι για κάθε ένα-δυο νέα set εντολών, βλέπεις κάποια διάφορα στις καθημερινές εφαρμογές.

Στα παιχνίδια, η διαφορά δεν είναι εύκολα αντιληπτή, γιατί κάθε νέο set πάει σε νέο πυρήνα, οπότε και η σύγκριση δεν είναι αξιόπιστη.

Το όλο θέμα συνοψίζεται στο τι εφαρμογές δουλεύεις και αν αυτές έχουν υποστήριξή στις νέες εντολές.

Σε bench θα γίνεται εμφανές σε σύγκριση νέων με παλιών εκδόσεων.

Link to comment
Share on other sites

To set εντολών αφορά κυρίως αυτούς που φτιάχνουν τους linkers, δηλαδή τα εργαλεία με τα οποία χτίζονται στην ουσία οι υπόλοιπες εφαρμογές και όσους χρησιμοποιούν assembly σε σημεία του κώδικά τους τα οποία είναι time critical ή πρέπει να επιτυγχάνουν την μέγιστη ταχύτητα εκτέλεσης...

Σε κάθε ανανέωση του σετ εντολών προστίθενται κάποιες καινούργιες οι οποίες έχουν σκοπό το κερδίσουν μερικούς ή αρκετούς κύκλους του επεξεργαστή... για παράδειγμα, απλουστευμένα, όταν θέλεις να προσθέσεις δυο 64bit αριθμούς και το σετ εντολών έχει μόνο πρόσθεση για 32bit, άσχετα με το αν είναι 32 ή 64bit επεξεργαστής, τότε θα χρειαστεί πολλαπλάσιους κύκλους ώστε να κάνει την πράξη... επομένως σε ένα καινούργιο σετ εντολών που υποστηρίζεται πλέον η πρόσθεση δυο 64bit αριθμών, η πράξη αυτή θα κάνει μόνο ένα κύκλο...

Στην ουσία μια εντολή ενός σετ είναι ένα τμήμα στο die από καταχωρητές και λογικές πύλες, που ότι μπαίνει στην είσοδο του κυκλώματος, βγαίνει στην έξοδο τροποποιημένο ανάλογα με την συνδεσμολογία των πυλών αυτών... για να εκτελεστεί τώρα η εντολή μπορεί να χρειάζονται περισσότεροι του ενός κύκλου ρολογιού, λόγο του ότι θα πρέπει να περάσει από πολλά στάδια... κύκλος ρολογιού είναι τα MHz δηλ του επεξεργαστή, οπότε ένας 3GHz επεξεργαστής έχει 3*10^9 κύκλους, που αλλιώς το λένε και heartbeat... οπότε καινούργιες εντολές μπορεί να κάνουν ακόμα και την ίδια λειτουργία με μια προηγούμενη, αλλά σε λιγότερους κύκλους ρολογιού...

το θέμα τώρα είναι ότι για να περάσουν αυτές οι αλλαγές σε παλιά software και να κερδίσεις την ταχύτητα που σου προφσφέρουν, θα πρέπει τα εργαλεία ανάπτυξης με τα οποία φτιάχνουν τις εφαρμογές να υποστηρίζουν τις εντολές αυτές και κατά το linking να αποφασίζουν πότε να τις χρησιμοποιήσουν... αυτή η αλλαγή περνάει αργά σε χρόνο στα γνωστά frameworks προγραμματισμού, αλλά πολύ γρήγορα σε μηχανές παιχνιδιών, οι οποίες έχουν μεγάλα μέρη του κώδικά τους σε assembly ώστε να κερδίζουν όσο γίνεται περισσότερο σε ταχύτητα... φυσικά οποιοσδήποτε μπορεί να τις χρησιμοποιήσει και όταν γράφει κώδικα σε μια πιο υψηλού επιπέδου γλώσσα, αλλά γενικά είναι θέμα υποστήριξης, γι'αυτό και η Intel βγάζει σε κάθε αλλαγή και δικούς της compilers/linkers για C++ σε x86 που υποστηρίζουν τις νέες εντολές του σετ...

Τι κερδίζουμε εμείς...? Στην ουσία μόνο οι εφαρμογές που είναι αποκλειστικά εξαρτώμενες από την συχνότητα ρολογιού μπορούν να ωφεληθούν, όπως επεξεργασία video, ήχου, παιχνίδια και προγράμματα που πραγματοποιούν μαθηματικές πράξεις... ότι είναι event driven δεν πέφτει στην κατηγορία αυτή... και επίσης γι' αυτό τον λόγο θα πρέπει κάποια στιγμή το φορτίο αυτό να το αναλάβει κάποιος μαθηματικός συνεπεξεργαστής, ή κάτι σαν τα cuda και το αντίστοιχο της ati, γιατί θα ελευθερώσουν τον επεξεργαστή από ανούσια χαμαλοδουλειά... η amd το πάει καλά καθώς λέει ότι είναι σκοπός της στο μέλλον, όσο για το αποτέλεσμα, θα δείξει...

Εδιτ: τέτοιο post στις 2.30 το πρωί... faq... αλλά μόλις τελείωσα δουλειά από τις 6.30 που έχω σηκωθεί και είμαι στην τσίτα...

Edited by Jaco
Link to comment
Share on other sites

To set εντολών αφορά κυρίως αυτούς που φτιάχνουν τους linkers, δηλαδή τα εργαλεία με τα οποία χτίζονται στην ουσία οι υπόλοιπες εφαρμογές και όσους χρησιμοποιούν assembly σε σημεία του κώδικά τους τα οποία είναι time critical ή πρέπει να επιτυγχάνουν την μέγιστη ταχύτητα εκτέλεσης...

Σε κάθε ανανέωση του σετ εντολών προστίθενται κάποιες καινούργιες οι οποίες έχουν σκοπό το κερδίσουν μερικούς ή αρκετούς κύκλους του επεξεργαστή... για παράδειγμα, απλουστευμένα, όταν θέλεις να προσθέσεις δυο 64bit αριθμούς και το σετ εντολών έχει μόνο πρόσθεση για 32bit, άσχετα με το αν είναι 32 ή 64bit επεξεργαστής, τότε θα χρειαστεί πολλαπλάσιους κύκλους ώστε να κάνει την πράξη... επομένως σε ένα καινούργιο σετ εντολών που υποστηρίζεται πλέον η πρόσθεση δυο 64bit αριθμών, η πράξη αυτή θα κάνει μόνο ένα κύκλο...

Στην ουσία μια εντολή ενός σετ είναι ένα τμήμα στο die από καταχωρητές και λογικές πύλες, που ότι μπαίνει στην είσοδο του κυκλώματος, βγαίνει στην έξοδο τροποποιημένο ανάλογα με την συνδεσμολογία των πυλών αυτών... για να εκτελεστεί τώρα η εντολή μπορεί να χρειάζονται περισσότεροι του ενός κύκλου ρολογιού, λόγο του ότι θα πρέπει να περάσει από πολλά στάδια... κύκλος ρολογιού είναι τα MHz δηλ του επεξεργαστή, οπότε ένας 3GHz επεξεργαστής έχει 3*10^9 κύκλους, που αλλιώς το λένε και heartbeat... οπότε καινούργιες εντολές μπορεί να κάνουν ακόμα και την ίδια λειτουργία με μια προηγούμενη, αλλά σε λιγότερους κύκλους ρολογιού...

το θέμα τώρα είναι ότι για να περάσουν αυτές οι αλλαγές σε παλιά software και να κερδίσεις την ταχύτητα που σου προφσφέρουν, θα πρέπει τα εργαλεία ανάπτυξης με τα οποία φτιάχνουν τις εφαρμογές να υποστηρίζουν τις εντολές αυτές και κατά το linking να αποφασίζουν πότε να τις χρησιμοποιήσουν... αυτή η αλλαγή περνάει αργά σε χρόνο στα γνωστά frameworks προγραμματισμού, αλλά πολύ γρήγορα σε μηχανές παιχνιδιών, οι οποίες έχουν μεγάλα μέρη του κώδικά τους σε assembly ώστε να κερδίζουν όσο γίνεται περισσότερο σε ταχύτητα... φυσικά οποιοσδήποτε μπορεί να τις χρησιμοποιήσει και όταν γράφει κώδικα σε μια πιο υψηλού επιπέδου γλώσσα, αλλά γενικά είναι θέμα υποστήριξης, γι'αυτό και η Intel βγάζει σε κάθε αλλαγή και δικούς της compilers/linkers για C++ σε x86 που υποστηρίζουν τις νέες εντολές του σετ...

Τι κερδίζουμε εμείς...? Στην ουσία μόνο οι εφαρμογές που είναι αποκλειστικά εξαρτώμενες από την συχνότητα ρολογιού μπορούν να ωφεληθούν, όπως επεξεργασία video, ήχου, παιχνίδια και προγράμματα που πραγματοποιούν μαθηματικές πράξεις... ότι είναι event driven δεν πέφτει στην κατηγορία αυτή... και επίσης γι' αυτό τον λόγο θα πρέπει κάποια στιγμή το φορτίο αυτό να το αναλάβει κάποιος μαθηματικός συνεπεξεργαστής, ή κάτι σαν τα cuda και το αντίστοιχο της ati, γιατί θα ελευθερώσουν τον επεξεργαστή από ανούσια χαμαλοδουλειά... η amd το πάει καλά καθώς λέει ότι είναι σκοπός της στο μέλλον, όσο για το αποτέλεσμα, θα δείξει...

Εδιτ: τέτοιο post στις 2.30 το πρωί... faq... αλλά μόλις τελείωσα δουλειά από τις 6.30 που έχω σηκωθεί και είμαι στην τσίτα...

δηλαδη; :p:) :tw:

Link to comment
Share on other sites

ουρτ ρε...

[κλίμα ημερών]

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

[/κλίμα ημερών]

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.