Γιώργος
Τιμώμενο Μέλος
Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
04-12-10
23:31
Για να απαντήσω, όρισέ μου το "αργός", το "κύκλος" και ειδικά το "καλύτερο".Αφού εσύ αγαπάς το hardware, σου έχω ακόμη μια ερώτηση.
Ένας αργός επεξεργαστής δεν θα ήταν καλύτερο να είναι 64bit και όχι 32bit, αφού στην πρώτη περίπτωση θα μπορούσε να διαχειρίζεται περισσότερα δεδομένα σε έναν κύκλο; (Στο μυαλό μου έχω τους Intel Atom)
- Αργός ως προς τι; Ως προς τον χρόνο που χρειάζεται να εκτελεστεί μία εντολή; (Κύκλος Εντολής)
- Τι κύκλο; Κύκλος εντολής ή μηχανής;
- Καλύτερο: με βάση ποιο κριτήριο; Ειδικά αυτό όρισέ μου.
- Κύκλος μηχανής είναι ο χρόνος που μεσολαβεί μεταξύ δύο "χτυπημάτων" του ρολογιού της CPU. Πχ όταν λέμε CPU @ 2.00 GHz, τότε η συχνότητα του ρολογιού είναι 2 GHz, δηλαδή ο κύκλος μηχανής είναι 0.5 nsec.
- Κύκλος εντολής είναι ο χρόνος που μεσολαβεί για την εκτέλεση μίας εντολής. Συνήθως στους μοντέρνους επεξεργαστές είναι κάποιο ακέραιο πολλαπλάσιο του κύκλου μηχανής, καθώς η ... διαδικασία ολοκλήρωσης μίας εντολής έχει "τεμαχιστεί" σε πολλά υπο-στάδια, τα οποία και διαρκούν έναν κύκλο μηχανής. Π.χ. ένα κύκλο για ανάγνωση εντολής, ένα για εκτέλεση πράξης, ένα για write-back του αποτελέσματος στους registers.
Πάντως κοίτα, εφόσον οι 64-bit επεξεργαστές μπορούν να χειριστούν πολύ μεγαλύτερο data-set, ενδέχεται κάποιες εντολές να χρειαστούν πολύ περισσότερο χρόνο για να εκτελεστούν, λ.χ. εντολές που αφορούν πράξεις κινητής υποδιαστολής. Οπότε θα πρέπει να μου πεις τι εννοείς με το "καλύτερο".
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
04-12-10
21:01
Ούτε εγώ είμαι προγραμματιστής εγώ αγαπώ το hardware.Γιώργο, γιατί κάποια πρόγραμμα αρνούνται να είναι 64bit; Τόσο δύσκολο είναι; Στην ουσία δεν πρέπει να αλλάξουν μόνο το κομμάτι του κώδικα που διαχειρίζεται την ram; Λογικά σε μεγάλο project αυτό μπορεί να είναι απλά μια κλάση όποτε μιλάμε για ακόμη λιγότερο χρόνο.
Ξέρω ότι παρουσιάσω το θέμα πολύ απλοϊκά, ωστόσο δεν προγραμματιστής
Κοίτα, πιστεύω ότι οφείλεται στο ότι ένα κλειστό πρόγραμμα έρχεται για να "κάτσει" σε 32-bit επεξεργαστή. Τι θέλω να πω; Ας το πάρουμε απ' την αρχή. Θα προσπαθήσω κι εγώ να παρουσιάσω το θέμα όσο πιο απλοϊκά γίνεται, επιχειρώντας μια αναλογία με το μαγείρεμα ενός γλυκού (!)
- Ο προγραμματιστής γράφει τον πηγαίο κώδικα ενός προγράμματος. Φανταστείτε σαν να γράφετε εσείς την συνταγή ενός γλυκού.
- Έπειτα, το πρόγραμμα αυτό μεταγλωττίζεται, δηλαδή δίνει τον κώδικα σε ένα δεύτερο πρόγραμμα, το οποίο μετατρέπει τον κώδικα σε γλώσσα μηχανής, που την καταλαβαίνει ο υπολογιστής και όχι ο άνθρωπος. Αντίστοιχα, με το γλυκό, είναι σαν να βάζεις κάτω την συνταγή και να φτιάχνεις το γλυκό.
- Το τελικό πρόγραμμα είναι αυτό που δίνεται, επί πληρωμή, στους χρήστες. Το γλυκό δηλαδή.
Ποιο είναι το πρόβλημα;
- Κατά το φτιάξιμο του γλυκού το έχεις φτιάξει με τέτοιο τρόπο ώστε να αντέχει και εκτός ψυγείου, ωστόσο δεν είναι το ίδιο νόστιμο. Αυτό το κάνεις γιατί υπάρχει κόσμος που μπορεί να μην έχει ψυγείο.
- Θα μπορούσες όμως να το έφτιαχνες με τέτοιο τρόπο ώστε να γίνει πιο νόστιμο, αλλά στην περίπτωση αυτή χρειάζεται ψυγείο.
Γιατί το πρόβλημα αυτό δεν υπάρχει με τα open-source προγράμματα; Γιατί εκεί παίρνεις τον κώδικα και τον μεταγλωττίζεις στο μηχάνημά σου, οπότε το εκτελέσιμο πρόγραμμα που παράγεται μπορεί να παίξει στο 64-bit μηχάνημά σου. Είναι σαν να δίνεις την ίδια την συνταγή στον κόσμο, και να φτιάχνει καθένας το γλυκό ανάλογα με τις ανάγκες του.
-----
Θα μου πεις τώρα, γιατί αρκετές εταιρίες λοιπόν δεν ξαναγράφουν τον κώδικά τους βγάζοντας και 64-bit έκδοση, όπως φερ' ειπείν η Mathworks που έχει βγάλει Matlab και για 32-bit και για 64-bit;
Σίγουρη απάντηση δεν μπορώ να σου δώσω. Αυτό που μπορώ να υποθέσω είναι ότι η ανάπτυξη των προγραμμάτων γίνεται σε γλώσσες υψηλότερου επιπέδου, με λίγα λόγια δεν γίνεται καν αναφορά στο πώς το πρόγραμμα θα κάνει διαχείριση της μνήμης Δηλαδή δεν είναι θέμα του "να αλλάξω τον κώδικα", αλλά μάλλον "να αλλάξω τον μεταγλωττιστή". Κατά την συγγραφή του προγράμματος δηλαδή δεν μπαίνει πουθενά η πληροφορία του hardware, το πρόγραμμα αναπτύσσεται με τέτοιο τρόπο έτσι ώστε να δουλεύει σε όσο το δυνατόν περισσότερα συστήματα.
Με λίγα λόγια, κατά πάσα πιθανότητα είναι θέμα του μεταγλωττιστή που χρησιμοποιεί η εκάστοτε εταιρεία. Μπορεί φερ' ειπείν ο μεταγλωττιστής να μην υποστηρίζει ακόμα μεταγλώττιση για 64-bit συστήματα. Αλλιώς είναι πολύ απλό το θέμα, κάνεις και μία δεύτερη μεταγλώττιση του προγράμματός σου για 64-bit συστήματα.
Για τα παραπάνω δεν υπάρχει πηγή, είναι οι δικές μου σκέψεις και εκτιμήσεις. Ενδέχεται φυσικά να υπάρχουν και παράγοντες που αγνοώ, οπότε οποιαδήποτε παραπάνω πληροφορία είναι ευπρόσδεκτη.
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
Γιώργος
Τιμώμενο Μέλος
Ο Γιώργος αυτή τη στιγμή δεν είναι συνδεδεμένος. Μας γράφει απο Ελβετία (Ευρώπη). Έχει γράψει 30,791 μηνύματα.
04-12-10
19:28
Για να ξεκαθαρίσουμε λίγο το θέμα με το ότι τα 64bit συστήματα καταναλώνουν περισσότερη μνήμη.
Πολύ χοντρικά, αρκετά κλειστά προγράμματα (από εταιρίες, που πρέπει να πληρώσεις) έχουν φτιαχτεί πάνω σε 32bit συστήματα και δεν μπορούν να αξιοποιήσουν πλήρως τα 64bit συστήματα.
Αρκετά όμως freeware και open-source προγράμματα έχουν λάβει υπόψιν τέτοιες περιπτώσεις, οπότε αντί να χρησιμοποιήσουν 2 x 32bit blocks, χρησιμοποιούν 1 x 64bit. Έτσι λοιπόν όχι μόνο δεν αυξάνεται η μνήμη που χρησιμοποιείται, αλλά πολλές φορές μπορεί να μειωθεί κιόλας, γιατί ένα πρόγραμμα μπορεί να εκμεταλλευτεί το γεγονός ότι ένας 64bit επεξεραστής έχει αυξημένο αριθμό καταχωρητών (registers - είναι κάποιου είδους μνήμης που είναι ακριβώς δίπλα στον επεξεργαστή και είναι η γρηγορότερη μνήμη στον Η/Υ σας), με αποτέλεσμα μία πληροφορία να μην χρειαστεί καν να μείνει στην μνήμη, εφόσον υπάρχει στους registers του επεξεργαστή.
Μην ρίχνουμε λοιπόν το φταίξιμο στα 64bit συστήματα, ενώ στην πραγματικότητα φταίει το λειτουργικό ή το πρόγραμμα που είναι ηλίθιο και δεν κάνει καλή διαχείριση πόρων.
Εάν καταναλώνουν "πολύ περισσότερη μνήμη" δεν είναι ότι φταίει το hardware, αλλά είτε το λειτουργικό που το διαχειρίζεται (Windows) είτε το πρόγραμμα που τρέχει.Ισχύει αυτό που λέει ο Morelo και ο Koum αλλά είναι παραπλανητικό γιατί τα windows 7 64 bit καταναλώνουν πολύ περισσότερη μνήμη από ότι τα 32 για τα ίδια πράγματα. Άρα δώρο άδωρο.
Πολύ χοντρικά, αρκετά κλειστά προγράμματα (από εταιρίες, που πρέπει να πληρώσεις) έχουν φτιαχτεί πάνω σε 32bit συστήματα και δεν μπορούν να αξιοποιήσουν πλήρως τα 64bit συστήματα.
- Για να δώσω ένα απλό παράδειγμα, μία πληροφορία μπορεί να είναι πολύ μεγάλη, οπότε σε ένα 32bit σύστημα να πρέπει να "σπάσει" σε δύο blocks των 32bit. Εάν δεν υπάρχει πρόνοια για 64bit συστήματα, πάλι στα 64bits θα χρησιμοποιηθούν 2 blocks των 32bit αντί για 1 των 64bit.
- Λόγω όμως του ότι σε ένα 64bit σύστημα δεν υπάρχουν 32bit blocks αλλά 64 bit blocks, τότε χρησιμοποιούνται 2 x 64bit blocks, τα οποία έχουν μέχρι τη μέση χρήσιμη πληροφορία και έπειτα μηδενικά (λέγεται padding). Έτσι λοιπόν χρησιμοποιείται διπλάσια μνήμη.
Αρκετά όμως freeware και open-source προγράμματα έχουν λάβει υπόψιν τέτοιες περιπτώσεις, οπότε αντί να χρησιμοποιήσουν 2 x 32bit blocks, χρησιμοποιούν 1 x 64bit. Έτσι λοιπόν όχι μόνο δεν αυξάνεται η μνήμη που χρησιμοποιείται, αλλά πολλές φορές μπορεί να μειωθεί κιόλας, γιατί ένα πρόγραμμα μπορεί να εκμεταλλευτεί το γεγονός ότι ένας 64bit επεξεραστής έχει αυξημένο αριθμό καταχωρητών (registers - είναι κάποιου είδους μνήμης που είναι ακριβώς δίπλα στον επεξεργαστή και είναι η γρηγορότερη μνήμη στον Η/Υ σας), με αποτέλεσμα μία πληροφορία να μην χρειαστεί καν να μείνει στην μνήμη, εφόσον υπάρχει στους registers του επεξεργαστή.
Μην ρίχνουμε λοιπόν το φταίξιμο στα 64bit συστήματα, ενώ στην πραγματικότητα φταίει το λειτουργικό ή το πρόγραμμα που είναι ηλίθιο και δεν κάνει καλή διαχείριση πόρων.
Σημείωση: Το μήνυμα αυτό γράφτηκε 13 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.