Πώς περίπου δουλεύουν οι CPU;

The_Steve

Νεοφερμένος

Ο Στέφανος αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 53 μηνύματα.
Πάντα είχα αυτή την απορία. Αν υποθέσουμε ότι έχουμε ένα επεξεργαστή X στα 2000mhz και έναν άλλον Y στα 1000 mhz, και τα υπόλοιπα χαρακτηριστικά είναι τα ίδια, σημαίνει ότι αν ο Χ χρησιμοποιεί το 50% για να εκτελέσει την Α εντολή, τότε ο Y θα χρησιμοποιήσει το 25%;

Γενικά, στην αρχή θα ήθελα να απλά γίνετε για το θέμα, μετά αν αποκτήσει ενδιαφέρον ας πάμε στα πιο βαθιά
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Bill

Επιφανές μέλος

Ο Bill αυτή τη στιγμή δεν είναι συνδεδεμένος. Έχει γράψει 10,408 μηνύματα.
Αρχικά πρέπει να προσδιοριστούν κάποια πραγματάκια.
Κάθε πρόγραμμα είναι τοποθετημένο στην κύρια μνήμη του υπολογιστή με τη μορφή εντολών.(βρίσκονται αποθηκευμένες σε δυαδική μορφή).
Κάθε εντολή μπορεί να καταλαμβάνει μία ή περισσότερες θέσεις μνήμης.Το πόσες θέσεις καταλαμβάνει στη μνήμη προσδιορίζεται από το έυρος ψηφίων που προσφέρει η κάθε μνήμη.
Για παράδειγμα αν έχουμε μνήμη των 32 δυαδικών ψηφίων και η εντολή μας έχει μήκος 64 δυαδικά ψηφία,τότε θα καταλάβει 2 θέσεις στην κύρια μνήμη.

Η επικοινωνία της κύριας μνήμης και επεξεργαστή γίνεται με την αρτηρία διευθύνσεων και δεδομένων.Με την αρτηρία διευθύνσεων o επεξεργαστής αναφέρεται σε θέσεις μνήμης και τα δεδομένα που ζήτηθηκαν μεταφέρονται απο την αρτηρία δεδομένων.Ουσιαστικά ο επεξεργαστής ζητάει δεδομένα δίνοντας τη θέση της μνήμης στην οποία βρίσκονται αυτά.

Επιπλέον ο επεξεργαστής διαθέτει κάποιους καταχωρητές.(registers).Χοντρικά εκεί τοποθετούνται οι εντολές όταν έρχονται στον επεξεργαστή για να εκτελεστούν,καθώς και δεδομένα που χρειαζονται ή παράγονται.

Κατά την εκτέλεση λοιπόν ενός προγράμματος υπάρχει ένας μετρητής(program counter) που μας δείχνει ποια είναι η εντολή που πρόκειται να εκτελεστεί.
-Έτσι λοιπόν,η cpu θα φέρει από την κύρια μνήμη την εντολή που δείχνει αυτός ο μετρητής για να την επεξεργαστεί.
-Αφού φέρει την εντολή θα πρέπει να αλλάξει την τιμή του ώστε να δείξει στην επόμενη εντολή που θα έρθει για επεξεργασία.
-Η εντολή που βρίσκεται αυτή τη στιγμή στην cpu αναλύεται και ελέγχεται αν χρειάζονται επιπλέον δεδομένα από την κύρια μνήμη.Αν χρειάζονται τα φέρνει στους καταχωρητές.
-Η εντολή εκτελείται και τα αποτελέσματα αποθηκεύονται.

Στη συνέχεια ξαναεκτελείται η παραπάνω διαδικασία για την επόμενη εντολή.

Τα παραπάνω είναι πώς γίνεται χοντρικά η όλη διαδικασία.
Τώρα για την εκτέλεση κάθε εντολής απαιτείται καποιος χρόνος.H συχνότητα δείνχει την ταχύτητα εκτέλεσης εντολών.



Πάντα είχα αυτή την απορία. Αν υποθέσουμε ότι έχουμε ένα επεξεργαστή X στα 2000mhz και έναν άλλον Y στα 1000 mhz, και τα υπόλοιπα χαρακτηριστικά είναι τα ίδια, σημαίνει ότι αν ο Χ χρησιμοποιεί το 50% για να εκτελέσει την Α εντολή, τότε ο Y θα χρησιμοποιήσει το 25%;

Όπως είναι ο Χ εκτελεί εντολές με ταχύτητα διπλάσια του Υ.Αν αλλάξει βέβαια ένα χαρακτηριστικό τότε αλλάζουν αρκετά πράγματα.

Ελπίζω να τα γραψα κατανοητά.:P
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

fandago

Διακεκριμένο μέλος

Ο Ә□⌂щяңš αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 40 ετών και μας γράφει απο Αθήνα (Αττική). Έχει γράψει 6,876 μηνύματα.
Τα παραπάνω είναι πώς γίνεται χοντρικά η όλη διαδικασία.
Τώρα για την εκτέλεση κάθε εντολής απαιτείται καποιος χρόνος.H συχνότητα δείνχει την ταχύτητα εκτέλεσης εντολών.

Πολύ ωραία τα είπε ο Bill. :)

Να ξεκαθαρίσω όμως κάτι που μπορεί να παρεξήγησαν κάποιοι. Το ότι η συχνότητα δείχνει την ταχύτητα εκτέλεσης εντολών δεν σημαίνει ότι αν ένα επεξεργαστής τρέχει στα 2Hz (= 2 cycles per second), τότε εκτελούνται 2 εντολές το δευτερόλεπτο. Αυτό γιατί κάθε εντολή έχει συγκεκριμένο χρόνο εκτέλεσης, αφού για παράδειγμα μπορεί να χρειάζεται 4 κύκλους ρολογιού και αν ο επεξεργαστής τρέχει στα 2Hz να θέλει 2 sec για να εκτελεστεί η εντολή.

Επίσης, έτσι γίνεται πιο κατανοητό γιατί χρειάζονται οι παράλληλοι επεξεργαστές (πολλοί πηρύνες, HyperThreading κτλ). Για να εκτελεστεί μια διεργασία (μια εντολή πχ ενός προγράμματος), είναι απαραίτητες πολλές διαφορετικές απλούστερες εντολές, οι οποίες θα πρέπει να περιμένουν η μία την άλλη να εκτελεστεί. Αν όμως η σχεδίαση του προγράμματος έχει γίνει έτσι ώστε κάποιες εντολές να είναι ανεξάρτητες από προηγούμενες, τότε αυτές θα μπορούσαν να μοιραστούν σε μια άλλη επεξεργαστική μονάδα για διεκπεραίωση. Έτσι θα μπορούσαμε να έχουμε πολλές επεξεργαστικές μονάδες (είτε αυτό είναι επεξεργαστές, πυρήνες, ή εικονικοί πηρύνες) να δουλεύουν παράλληλα, εκτελόντας στην διάρκεια λιγότερων κύκλων ρολογιού, περισσότερες εντολές.


Φυσικά η αρχιτεκτονική των σημερινών επεξεργαστών είναι πολυπλοκότερη, αλλά όλα αυτά δίνουν μια ιδέα :)
 

Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.

Χρήστες Βρείτε παρόμοια

  • Τα παρακάτω 0 μέλη και 1 επισκέπτες διαβάζουν μαζί με εσάς αυτό το θέμα:
    Tα παρακάτω 0 μέλη διάβασαν αυτό το θέμα:
  • Φορτώνει...
Top