Processeur, système d'exploitation: 32 bits, 64 bits
je suis nouveau dans la programmation et je viens d'une formation non-CS (pas de diplôme formel). Je programme principalement winforms en utilisant C#.
je suis confus au sujet de 32 bits et 64 bits.... Je veux dire, j'ai entendu parler d'OS 32 bits, processeur 32 bits et basé sur lequel un programme peut avoir un maximum de mémoire. Comment il affecte la vitesse d'un programme. Il y a beaucoup plus de questions qui viennent à l'esprit.
j'ai essayé de passer par un Ordinateur Livres d'organisation et D'Architecture. Mais, soit je suis trop bête pour comprendre ce qui est écrit là-dedans ou les rédacteurs supposent que le lecteur a une certaine expérience CS.
Quelqu'un peut-il m'expliquer ces choses dans un anglais simple ou me montrer quelque chose qui fait cela.
EDIT: j'ai lu des choses comme en mode 32 bits, ils peuvent accéder jusqu'à 4 Go de mémoire; en mode 64 bits, ils peuvent accéder à beaucoup de choses plus....Je veux savoir POURQUOI toutes ces choses.
BOUNTY : les Réponses ci-dessous sont vraiment bonnes....esp one DE Martin. Mais, je suis à la recherche d'une explication complète, mais en anglais simple et simple.
15 réponses
tout se résume à des fils.
dans les circuits numériques, seuls les 0 et les 1 (généralement basse tension et haute tension) peuvent être transmis d'un élément (CPU) à un autre élément (puce mémoire). Si je n'ai qu'un fil, Je ne peux envoyer qu'un 1 ou un 0 par cycle d'horloge. Cela signifie que je ne peux adresser que 2 octets (en supposant une adresse byte, et que les adresses entières sont transmises en seulement 1 cycle pour la vitesse!).
si j'ai 2 fils, je peux adresser 4 octets. Parce que je peux envoyer: (0, 0), (0, 1), (1, 0), ou (1, 1) sur les deux fils. Donc en gros c'est 2 à la puissance de # of wires.
donc si j'ai 32 fils, je peux adresser 4 Go, et si j'ai 64 fils, je peux adresser beaucoup plus.
il y a d'autres trucs que les ingénieurs peuvent faire pour adresser un plus grand espace d'adresse que les fils permettent. Par exemple: en divisant l'adresse en deux parties et en envoyant la moitié dans le premier cycle et le seconde moitié du cycle suivant. Mais cela signifie que votre interface mémoire sera à moitié aussi rapide.
Édité mes commentaires ici (non modifiée) ;) Et en faire un wiki si quelqu'un a quelque chose d'intéressant à ajouter.
comme d'autres commentaires l'ont mentionné, 2^32 (2 à la puissance de 32) = 4294967296, soit 4 Go. Et 2^64 est de 18.446.744.073.709.551.616. Pour creuser plus loin (et vous avez probablement lu ceci dans Hennesey & Patterson) les processeurs contiennent des registres qu'il utilise comme "espace de travail" pour stocker les résultats de ses calculs. Un CPU sait seulement faire de l'arithmétique simple et sait déplacer des données. Naturellement, la taille de ces registres est la même largeur en bits que les "#-bits" de l'architecture, donc les registres D'un CPU 32 bits seront 32 bits de large, et les registres d'un CPU 64 bits seront 64 bits de large.
il y aura des exceptions à cela quand il s'agit de point flottant (pour gérer la double précision) ou autre SIMD instructions (instruction unique, commandes de données multiples). Le CPU charge et sauve les données de et vers la mémoire principale (la mémoire vive). Puisque le CPU utilise aussi ces registres pour calculer les adresses mémoire (physiques et virtuelles), la quantité de mémoire qu'il peut traiter est aussi la même que la largeur de ses registres. Il y a quelques CPU qui gèrent le calcul d'adresses avec des registres étendus spéciaux, mais ceux que j'appellerais "après pensées" ajoutés après que les ingénieurs se rendent compte qu'ils en ont besoin.
en ce moment, 64 bits, c'est beaucoup pour s'adresser à la vraie mémoire physique. La plupart des CPU 64 bits vont omettre pas mal de fils quand il s'agit de brancher le CPU à la mémoire en raison de l'aspect pratique. Ça n'a pas de sens d'utiliser une précieuse carte mère pour faire tourner des fils qui auront toujours des 0. Sans compter que pour avoir la quantité maximale de RAM avec la densité actuelle de DIMM exigerait 4 milliards de fentes de dimm :)
autre que la quantité accrue de mémoire, 64 bits les processeurs offrent des calculs plus rapides pour des nombres entiers supérieurs à 2^32. Auparavant, les programmeurs (ou compilateurs, eux aussi programmés par des programmeurs) devaient simuler un registre 64 bits en prenant deux registres 32 bits et en gérant les situations de débordement. Mais sur les processeurs 64 bits, elle serait gérée par le processeur lui-même.
l'inconvénient est qu'un CPU 64-bits (avec tout égal) consommerait plus de puissance qu'un CPU 32-bits juste en raison de (approximativement) deux fois la montant de circuits nécessaires. Cependant, en réalité, vous n'obtiendrez jamais la comparaison égale parce que les nouveaux CPU seront fabriqués dans de nouveaux processus de silicium qui ont moins de fuites de puissance, vous permettent de cram plus de circuit dans la même taille de matrice, etc. Mais les architectures 64 bits consommeraient deux fois plus de mémoire. Ce qui était autrefois considéré comme "laid" de la longueur d'instruction variable de x86 est en fait un avantage maintenant par rapport aux architectures qui utilisent une taille d'instruction fixe.
essayons de répondre à cette question en regardant personnes versus ordinateurs ; espérons que cela vous éclairera sur les choses:
choses à garder à l'esprit
- aussi étonnants qu'ils soient, les ordinateurs sont très, très bêtes.
mémoire
- les gens ont de la mémoire (à l'exception, peut-être, des maris et politicien.) Les gens stockent l'information dans leur mémoire pour une utilisation ultérieure.
- avec une question (E. g, " Quel Est votre numéro de téléphone?") une personne est capable d'extraire des informations pour donner une réponse (par exemple, "867-5309")
- tous les ordinateurs modernes ont de la mémoire, et stocker l'information dans leur mémoire pour une utilisation ultérieure.
- parce que les ordinateurs sont muets, on ne peut leur poser qu'une question très spécifique pour obtenir de l'information.: "Quelle est la valeur de X dans votre mémoire?"
- dans la question ci-dessus, X est connu comme une adresse , qui peut également être appelé un pointeur .
- parce que les ordinateurs sont muets, on ne peut leur poser qu'une question très spécifique pour obtenir de l'information.: "Quelle est la valeur de X dans votre mémoire?"
donc ici, nous avons une différence fondamentale entre les gens et les ordinateurs: pour se rappeler l'information de la mémoire, les ordinateurs doivent être donnés une address , while people do not. (En un sens, on pourrait dire que "votre numéro de téléphone "est une adresse parce qu'elle donne des informations différentes de" votre anniversaire", mais c'est une autre conversation.)
nombres
- les Gens utilisent le nombre décimal système . Cela signifie que pour chaque chiffre dans un nombre décimal, le chiffre peut être l'un des 0, 1, 2, 3, 4, 5, 6, 7, 8, ou 9. Les gens ont dix options par chiffre.
- tous les ordinateurs modernes utilisent le système de nombres binaires . Cela signifie que pour chaque chiffre dans un nombre binaire, le chiffre ne peut être 1 ou 0. Les ordinateurs ont deux options par chiffre.
- dans le jargon informatique, un seul chiffre binaire est appelé un bit , abréviation de b inary dig il .
adresses
- chaque adresse d'un ordinateur est un nombre binaire.
- chaque adresse dans un ordinateur a un nombre maximum de chiffres (ou bits) qu'il peut avoir. Cela est principalement dû au fait que le matériel de l'ordinateur est inflexible (également connu sous le nom fixe ) et doit savoir à l'avance qu'une adresse ne sera si longtemps.
- des Termes comme "32-bit" et "64 bits" parlons de la plus longue adresse pour qu'un ordinateur peut stocker et récupérer des informations. En anglais "32 bits", en ce sens, "l'ordinateur attend des instructions au sujet de son mémoire à l'adresse de pas plus de 32 chiffres binaires de long."
- comme vous pouvez l'imaginer, plus un ordinateur peut traiter de bits, plus l'adresse qu'il peut regarder vers le haut et donc plus de mémoire, il peut gérer à un moment donné.
32 bits v. l'Adressage 64 bits
- pour un nombre rigide (fixe) de chiffres (par exemple 2 chiffres décimaux), les nombres possibles que vous pouvez représenter est appelé gamme (par exemple 00 à 99, ou 100 nombres uniques). L'ajout d'un chiffre décimal additionnel multiplie l'intervalle par 10 (p. ex. 3 chiffres décimaux -> 000 à 999, ou 1000 numéros uniques).
-
Cela s'applique également aux ordinateurs, mais parce qu'ils sont binaire machines au lieu de décimal machines, en ajoutant un chiffre binaire supplémentaire ( bit ) ne fait qu'augmenter la gamme d'un facteur de 2 .
L'Adressage Des Plages:- l'adressage 1-bit vous permet de parler de 2 adresses uniques (0 et 1).
- 2 bits d'adressage permet de vous parler de 4 adresses uniques (00, 01, 10 et 11).
- 3-bit addressing vous permet de parler de 8 adresses uniques(000, 001, 010, 011, 100, 101, 110, et 111).
- et après un long moment... 32-bit addressing vous permet de parler de 4,294,967,296 adresses uniques.
- et après un encore plus longtemps tandis que... 64-bit addressing vous permet de parler de 18,446,744,073,709,551,616 unique adresse. C'est un BEAUCOUP de mémoire!
Implications
ce que cela signifie, c'est qu'un ordinateur 64 bits peut stocker et récupérer beaucoup plus d'information qu'un ordinateur 32 bits. Pour la plupart des utilisateurs, cela ne signifie pas vraiment beaucoup parce que les choses comme la navigation sur le web, la vérification d'e-mail et la lecture de Solitaire Tout fonctionne confortablement dans le limites de l'adressage 32 bits. Là où le 64-bit avantage va vraiment briller est dans les domaines où vous avez beaucoup de données que l'ordinateur devra baratter à travers. Le traitement de signal numérique, la photographie gigapixel et les jeux 3D avancés sont autant de domaines où leur énorme quantité de traitement de données connaîtrait un grand essor dans un environnement 64 bits.
de nombreux processeurs modernes peuvent fonctionner en deux modes: le mode 32 bits et le mode 64 bits. En mode 32 bits, ils peuvent accéder jusqu'à 4 go de mémoire; en mode 64 bits, il peut accéder à beaucoup plus. Les processeurs plus anciens ne prennent en charge que le mode 32 bits.
Les systèmes D'exploitationont choisi d'utiliser les processeurs dans l'un de ces modes: au moment de l'installation, on a le choix entre le mode 32 bits ou le mode 64 bits. Même si le processeur peut continuer à fonctionner en mode 64 bits, passer de 32 bits à 64 bits nécessiterait une réinstallation du système. Les anciens systèmes ne prennent en charge que le mode 32 bits.
Les Applicationspeuvent également être écrites (ou compilées) en mode 32 bits ou 64 bits. La compatibilité est ici plus délicate, car le processeur, lorsqu'il est exécuté en mode 64 bits, peut encore prendre en charge des applications 32 bits en tant que fonctionnalité d'émulation. Ainsi, sur un système d'exploitation 64 bits, vous pouvez exécuter soit des applications 32 bits, soit des applications 64 bits. Sur un système d'exploitation 32 bits, vous pouvez ne lancez que des applications 32 bits.
encore une fois, choisir la taille est principalement une question de quantité de mémoire principale que vous voulez accéder. Les applications 32 bits sont souvent limitées à 2 Go sur de nombreux systèmes, car le système a besoin d'un certain espace d'adresse pour lui-même.
du point de vue de la performance (vitesse), il n'y a pas de différence significative. Les applications 64 bits peuvent être un peu plus lentes parce qu'elles utilisent des pointeurs 64 bits, donc elles ont besoin de plus d'accès mémoire pour une donnée opération. En même temps, ils peuvent aussi être un peu plus rapides, puisqu'ils peuvent effectuer des opérations entières 64 bits comme une instruction, alors que les processeurs 32 bits doivent les émuler avec des instructions multiples. Cependant, ces opérations de 64 bits entiers sont assez rares.
on peut aussi se demander quel est le coût d'exécution d'une application 32 bits sur un processeur 64 bits: sur les processeurs AMD64 et Intel64, ce mode d'émulation est principalement en matériel, donc il n'y a pas de perte de performance réelle sur l'exécution de l'application de 32 bits nativement. Ceci est significativement différent sur Itanium, où les applications 32 bits (x86) sont très mal émulées.
Laissez-moi vous raconter l'histoire de Binville, une petite ville au milieu de nulle part. Binville avait une route qui mène à elle. Chaque personne venant ou quittant Binville devait conduire sur cette route. Mais en approchant de la ville, il y avait une bifurcation. Vous pouvez soit aller à gauche ou à aller à droite.
En fait, chaque route a eu une fourchette, sauf pour les routes menant aux logements. Ces routes se sont simplement terminées à la maison. Aucun des routes avaient des noms; ils ne l'ont pas besoin de noms grâce à un ingénieux système d'adressage créé par la Commission de planification de Binville. Voici une carte de Binville, montrant les routes et les maisons:
------- [] 00
/
------
/ \
/ ------- [] 01
-----
\ ------- [] 10
\ /
------
\
------- [] 11
comme vous pouvez le voir, chaque maison a une adresse à deux chiffres. Cette adresse seule est suffisante pour A) identifier chaque maison (il n'y a pas de répétition) et b) vous dire comment y aller. Il est facile à obtenir autour de la ville, à vous de voir. Chaque fourche est étiquetée avec un zéro ou un, que la Commission de planification appelle le Traceur d'Intersection de Binville, ou bit pour faire court. En approchant de la première bifurcation, regardez la première partie de l'adresse. Si c'est un zéro, allez à gauche; si il est un, aller à droite. Ensuite, regardez le deuxième chiffre lorsque vous arrivez à la deuxième fourche, aller à gauche ou à droite selon le cas.
disons que vous voulez rendre visite à votre ami qui vit à Binville. Elle dit qu'elle vit dans la maison 10. Quand vous arrivez à la première fourche de Binville, allez à droite (1). Puis à la deuxième bifurcation, à gauche (0). Vous y êtes!
Binville a existé ainsi pendant plusieurs années, mais la rumeur a commencé à circuler au sujet de son cadre idyllique, grand système de parc, et des soins de santé généreux. (Après tout, si vous n'avez pas à dépenser de l'argent sur les plaques de rue, vous pouvez l'utiliser sur de meilleures choses.) Mais il y a un problème. Avec seulement deux bits, le schéma d'adressage était limité à quatre maisons!
ainsi la Commission de planification a rassemblé leurs têtes et a élaboré un plan: ils ajoutez un peu à chaque adresse, doublant ainsi le nombre de maisons. Pour mettre en œuvre le plan, ils construiraient une nouvelle fourche au bord de la ville et tout le monde obtiendrait de nouvelles adresses. Voici la nouvelle carte, montrant la nouvelle fourche menant à la ville et la nouvelle partie de Binville:
------- [] 000
/
------
/ \
/ ------- [] 001
----- Old Binville
/ \ ------- [] 010
/ \ /
/ ------
/ \
/ ------- [] 011
--
\ ------- 100
\ /
\ ------
\ / \
\ / ------- [] 101
----- New Binville (some homes not built yet)
\ ------- 110
\ /
------
\
------- 111
avez-vous remarqué que tout le monde dans la partie originale de Binville a simplement ajouté un zéro à l'avant de leur adresse? Le nouveau bit représente la nouvelle intersection qui a été construite. Lorsque l' nombre de bits est augmenté d'une unité, le nombre d'adresses en double. Les citoyens toujours su que la taille maximale de leur ville: tout ce qu'ils avaient à faire était de calculer la valeur de deux à la puissance du nombre de bits. Avec trois cents, ils auraient pu 2 3 = 8 des maisons.
quelques années passèrent et Binville fut de nouveau rempli à pleine capacité. Plus de gens ont voulu emménager, donc un autre morceau a été ajouté( avec l'intersection requise), doublant le la taille de la ville, à seize maisons. Puis une autre et une autre et une autre... Les adresses de Binville ont été bientôt à seize bits, capable d'accueillir jusqu'à 2 16 (16,384) des maisons, mais pas assez. Les gens continuaient d'affluer!
ainsi la Commission de planification a décidé de résoudre le problème une fois pour toutes: ils sauteraient tout le chemin à trente-deux bits. Avec des adresses suffisantes pour plus de quatre milliards de maisons (2 32 ), sûrement que ce serait suffisant!
et ça l'était... pour environ vingt-cinq ans, lorsque Binville n'était plus une petite ville au milieu de nulle part. C'était maintenant une grande métropole. En fait, il devenait aussi grand qu'un pays entier avec des milliards d'habitants. Mais les parcs étaient encore beaux et tout le monde avait de grands soins de santé, de sorte que la population a continué à croître.
face à la population toujours croissante, la Commission de planification a une fois de plus se réunit et propose une autre expansion de la ville. Cette fois, ils utiliseraient 64 bits. Savez-vous combien de maisons pourraient entrer dans les limites de la ville de Binville? C'est vrai: 18,446,744,073,709,551,616. Ce nombre est si grand que nous pourrions peupler environ deux milliards de terres et donner à chacun sa propre adresse.
utilisant 64 bits n'était pas une panacée pour tous leurs problèmes d'adressage. Les adresses prennent deux fois plus d'espace pour écrire que les anciennes adresses 32 bits. Pire, certains les citoyens n'avaient pas encore mis à jour leurs adresses pour utiliser le nouveau format 64 bits, de sorte qu'ils ont été forcés dans une section fermée de la ville réservée spécifiquement pour ceux qui utilisent encore des adresses 32 bits. Mais C'était OK: les gens qui utilisaient 32 bits avaient accès à plus qu'assez de la ville pour répondre à leurs besoins. Ils ne ressentaient pas encore le besoin de changer.
est-ce que 64 bits suffiront? Qui sait à ce moment-ci, mais les citoyens de Binville attendent l'annonce de 128-bit adresse...
la réponse de Martin est généralement correcte et détaillée.
j'ai pensé que je voudrais juste mentionner que toutes les limites de mémoire sont mémoire virtuelle par application limites, pas des limites pour la mémoire physique réelle dans l'ordinateur. En fait, il est possible de travailler avec plus de 4 Go de mémoire en une seule application, même dans les systèmes 32 bits, cela demande juste plus de travail, car tout ne peut pas être accessible en utilisant des pointeurs à la fois. texte du lien
une autre chose qui n'a pas été mentionnée est que la différence entre le processeur x86 traditionnel et x86-64 n'est pas seulement dans la taille du pointeur, mais aussi dans le jeu d'instructions. Tandis que les pointeurs sont plus grands et consomment plus de mémoire (8 bytes au lieu de 4) il est compensé par plus grand jeu de registre (15 general purpose registers au lieu de 8, iirc), de sorte que la performance peut effectivement être meilleure pour le code qui fait du travail computationnel.
la réponse de Martin est excellente. Juste pour ajouter quelques points supplémentaires... puisque vous mentionnez. Net, vous devriez noter que le CLI / JIT a quelques différences entre x86 et x64, avec différentes optimisations (tail-call, par exemple), et certains comportements subtils différents de choses avancées comme volatile
. Ceci peut avoir un impact sur votre code.
de plus, tous les codes ne fonctionnent pas sur x64. Tout ce qui utilise DirectX ou certaines fonctionnalités COM peut-être du mal. Pas vraiment un performance caractéristique, mais important à savoir.
(J'ai supprimé" DirectX " - je parle peut-être n'importe quoi là-bas... mais tout simplement: vous devez vérifier que tout ce dont vous dépendez est stable sur votre plate-forme cible)
pensez à une mémoire informatique générique comme une carte de bingo massive avec des milliards de carrés. Pour aborder n'importe quel carré individuel sur le conseil il y a un schéma pour étiqueter chaque ligne et la colonne B-5, I-12, O-52..etc.
s'il y a assez de carrés sur la carte éventuellement, vous serez à court de lettres donc vous aurez besoin de commencer à réutiliser plus de lettres et d'écrire de plus grands nombres pour continuer à être en mesure d'adresser de façon unique chaque carré.
avant que vous ne le sachiez l'annonceur crache des chiffres énormes et des combinaisons de lettres pour vous faire savoir quel carré marquer sur votre carte de 10 milliards de carrés. BAZC500000, IAAA12000000, OAAAAAA523111221
Le nombre de bits de l'ordinateur spécifie la limite de la complexité des lettres et des nombres à l'adresse spécifique carré.
32 bits signifie que si la carte est plus grande que 2^32 carrés l'ordinateur n'a pas assez de fils et de transistors pour lui permettre de adresse physique unique tout carré spécifique requis pour lire une valeur ou écrire une nouvelle valeur à l'emplacement mémoire spécifié.
les ordinateurs 64 bits peuvent adresser individuellement un massif 2^64 carrés.. mais pour ce faire chaque carré a besoin de beaucoup plus de lettres et de nombres assurez-vous que chaque place a sa propre adresse unique. C'est pourquoi les ordinateurs 64 bits besoin de plus de mémoire.
D'autres exemples courants de limites d'adressage sont les numéros de téléphone locaux. Ils sont ususally 7 chiffres 111-2222 ou reformaté comme un certain nombre 1,112,222 .. que se passe-t-il lorsqu'il y a plus de 9 999 999 personnes qui veulent leur propre numéro de téléphone? Vous ajoutez des codes régionaux et des codes de pays et votre numéro de téléphone passe de 7 chiffres à 10 à 11 prendre plus d'espace.
si vous êtes familier avec la pénurie imminente IPv4 son le même problème.. Les adresses IPv4 sont 32 bits, ce qui signifie qu'il n'y a que 2^32 (~4 milliards) adresses IP uniques possibles et il y en a beaucoup plus les gens que la vie aujourd'hui.
il y a des frais généraux dans tous les schémas que j'ai mentionnés (ordinateurs, numéros de téléphone, adresses IPv4) où certaines parties sont réservées à des fins organisationnelles de sorte que l'espace utilisable est beaucoup moins.
la promesse de performance pour le monde 64 bits est que, au lieu d'envoyer 4 octets à la fois (ABCD) un ordinateur 64 bits peut envoyer 8 octets à la fois (ABCDEFGH) de sorte que l'alphabet est transféré entre différentes zones de mémoire jusqu'à deux fois aussi rapide qu'un ordinateur 32 bits. Il y a aussi des avantages pour certaines applications qui fonctionnent plus rapidement quand ils ont plus de mémoire qu'ils peuvent utiliser.
dans le monde réel les processeurs 64 bits par intel et al ne sont pas vraiment des processeurs 64 bits et sont encore limités à 32 bits pour plusieurs types d'opérations donc dans le monde réel la performance entre les applications 32 bits et 64 bits est marginale. Le mode 64 bits vous donne plus de registres de matériel à travailler, ce qui améliore performance, mais plus de mémoire sur un" faux " processeur 64 bits peut également nuire à la performance dans certains domaines donc son ususally un lavage. À l'avenir, nous verrons de plus en plus d'améliorations de la performance lorsque les processeurs de bureau deviendront entièrement 64 bits.
Je ne pense pas que j'ai vu beaucoup du mot 'enregistrer' dans les réponses précédentes. Un ordinateur numérique est un ensemble de registres, avec logique pour l'arithmétique et la mémoire pour stocker des données et des programmes.
mais d'abord ... numériques, les ordinateurs utilisent une représentation binaire des nombres, parce que les chiffres binaires (bits) 0 et 1 sont facilement représentés par les deux états (on/off) d'un commutateur. Les premiers ordinateurs utilisaient des interrupteurs électromécaniques; les ordinateurs modernes utilisent des transistors parce que ils sont plus petits et plus rapides. Beaucoup plus petite, et beaucoup plus vite.
à l'intérieur du CPU, les commutateurs sont regroupés dans des registres de longueur limitée, et les opérations sont généralement effectuées sur des registres entiers: par exemple, ajouter ce registre à cela, et ainsi de suite. Comme vous pouvez vous y attendre, un processeur 32 bits a des registres de 32 bits. Je simplifie, mais garder avec moi.
il est logique d'organiser mémoire d'ordinateur comme une série de "emplacements", chacun contenant le même nombre de bits qu'un registre CPU: par exemple, charger ce registre à partir de cet emplacement de mémoire. En fait, si nous pensons à la mémoire comme octets , c'est juste une fraction commode d'un registre et nous pourrions charger un registre à partir d'une série d'emplacements de mémoire(1, 2, 4, 8).
comme les transistors deviennent plus petits, logique supplémentaire pour l'arithmétique plus complexe peut être mis en œuvre dans l'espace limité d'un puce d'ordinateur. CPU immobilier est toujours à un supplément.
mais avec des améliorations dans la fabrication des puces, plus de transistors peuvent être fabriqués de manière fiable sur des puces un peu plus grandes. Les registres peuvent être plus longs et les chemins entre eux peuvent être plus larges.
lorsque les registres qui contiennent les adresses des emplacements de mémoire sont plus longs, ils traitent de plus grandes mémoires et les données peuvent être manipulées en plus grands morceaux. En combinaison avec le plus logique arithmétique complexe, les choses se font plus vite.
et n'est-ce pas ce que nous sommes tous après?
pour expliquer pourquoi le mode 32 bits ne peut accéder qu'à 4 Go de mémoire vive:
accessible Maximum d'espace mémoire = 2 n octets où n est la longueur de mot de l'architecture. Ainsi, dans une architecture 32 bits, l'espace mémoire accessible maximum est 2 32 = 4294967296 = 4 Go de RAM.
architecture 64 bits serait capable d'accéder à 2 64 = beaucoup de mémoire.
vient de remarquer Tchens de commentaires là-dessus. Quoi qu'il en soit, sans une formation en CS, Oui l'organisation informatique et les livres d'architecture vont être difficiles à comprendre au mieux.
il est intéressant de noter que certaines applications(par exemple l'encodage/décodage multimédia et le rendu) gagnent une augmentation significative des performances(2x) lorsqu'elles sont écrites pour utiliser pleinement 64 bits.
Voir 32 bits et 64 bits des repères pour la Ubuntu et Windows Vista
Pour les non CS personne. 64bit fonctionnera mieux pour les calculs (toutes sortes de) il sera bon aussi il vous permettra d'avoir plus de RAM.
aussi si vous avez une RAM limitée (dans VPS par exemple ou un petit serveur dédié à la RAM)-choisissez 32 bits, les services mangeront moins de RAM.
- le processeur utilise la base-2 pour stocker les numéros. La Base 2 a probablement été choisie parce qu'elle est la plus "simple" de toutes les bases: par exemple, la table de multiplication de base-2 n'a que 4 cellules alors que la table de multiplication de base "10" a 100 cellules.
- avant 2003, les processeurs PC courants n'étaient capables que de"32 bits".
- cela signifie que les opérations numériques natives du processeur étaient pour des nombres 32 bits.
- Vous pouvez toujours le faire opérations numériques pour des nombres plus grands, mais celles-ci devraient être effectuées par des programmes exécutés par le processeur, et ne pas être les "actions primitives" (commandes en langage machine) supportées par le processeur comme ceux pour 32-bit-entiers (à l'époque)
- 32 bits ont été choisis parce que les ingénieurs CPU aiment les puissances de 2, et 16 bits n'étaient pas assez
- pourquoi 16 bits n'étaient pas assez? Avec 16 bits vous pouvez représenter des entiers dans la gamme de 0-65535
- 65535 =
1111111111111111
en binaire (= 2 0 +2 1 +2 2 ...+2 15 = 2 16 -1) - 65535 n'est pas suffisant car, par exemple, un logiciel de gestion hospitalière doit pouvoir compter plus de 65535 patients
- habituellement, les gens considèrent la taille de la mémoire de l'ordinateur quand discuter de la taille de ses entiers devrait être. 65535 n'est certainement pas suffisant. Les ordinateurs ont beaucoup plus de RAM que cela, et cela n'a pas d'importance si vous comptez dans" Bytes "ou bits
- 65535 =
- 32 bits a été considéré comme suffisant pour un certain temps. en 2003, AMD introduit le premier" x86 "processeur . Les renseignements ont vite suivi.
- en fait 16 bit a été considéré comme assez un il y a longtemps .
- il est pratique courante que beaucoup de matériel et de logiciels soient rétrocompatibles. Dans ce cas, cela signifie que les CPU capables de 64 bits peuvent également exécuter tous les logiciels que les CPU capables de 32 bits peuvent exécuter.
- la rétrocompatibilité est considérée comme une stratégie commerciale. Plus d'utilisateurs voudront mettre à jour vers le meilleur processeur si elle peut également faire tout ce que le précédent pourrait.
- dans la compatibilité ascendante CPUs signifie que les nouvelles actions Les supports CPU sont ajoutés au langage machine précédent. Par exemple, le langage machine précédent peut avoir une spécification comme "tous les codes op commençant par
1111
sont réservés pour une utilisation future" - en théorie, ce genre de calcul à rebours du CPU n'aurait pas été nécessaire puisque tous les logiciels auraient pu être recompilés dans le nouveau langage machine non compatible. Cependant, ce n'est pas le cas en raison des stratégies d'entreprise et des systèmes politiques ou économiques. Dans un monde utopique "open source", une rétrocompatibilité des langages machine ne serait probablement pas un problème.
- la calculabilité à rebours de x86-64 (le langage courant des CPU à 64 bits) se présente sous la forme d'un"mode de compatibilité". Cela signifie que tout programme souhaitant utiliser les nouvelles capacités cpu doit notifier le CPU (VIA L'OS) qu'il doit s'exécuter en "mode 64 bits". Et puis il pourrait utiliser à la grande nouvelle CPU 64-bit capacité.
- par conséquent, pour qu'un programme utilise les capacités 64 bits du CPU: le CPU, le système D'exploitation et le programme, tous doivent"prendre en charge les 64 bits".
- 64-bits est suffisant pour donner à chaque personne dans le monde plusieurs numéros uniques. Il est probablement assez grand pour la plupart des efforts informatiques actuels. Il est peu probable que les CPU se déplacent vers 128 bits. Mais s'ils le font, c'est certainement suffisant pour tout ce que je peux imaginer, et donc un La transition 256 bits ne sera pas nécessaire.
j'espère que cette aide.
C'est une explication très simple, étant donné que tout ce qui précède est assez détaillé.
32 bits se réfère aux registres. Les registres sont des endroits pour stocker des données, et tous les programmes fonctionnent en manipulant ces choses. Assembly fonctionne directement sur eux (et donc pourquoi les gens sont souvent excités à programmer en assemblée).
32 bits signifie que l'ensemble de base des registres peut contenir 32 bits d'information. 64 bits signifie, sans surprise, 64 bits d'information.
pourquoi cela peut-il rendre les programmes plus rapides? Parce que vous pouvez faire de grandes opérations plus rapidement. Il ne fera que certains types de programmes plus rapides, soit dit en passant. Les jeux, en général , peuvent tirer un grand avantage de l'optimisation par processeur , en raison de leurs opérations mathématiques lourdes (et donc enregistrer l'utilisation).
mais de façon amusante, comme tchen l'a mentionné, il y a beaucoup d'autres 'choses' qui vous permettent d'effectuer de plus grandes opérations de toute façon. SSE, SSE2, etc, aura Registres 64 bits et 128 bits, même sur un système' 32 bits'.
la capacité accrue d'adresser la mémoire parle directement à l'augmentation de la taille de base du registre, basé sur (j'imagine) Windows spécifique de la mémoire-système d'adressage.
Espère que ça aide un peu. d'autres posters sont beaucoup plus précis que moi, j'essaie juste d'expliquer très simplement (ça aide que je sache très peu:)
j'ai une réponse merveilleuse à cette question, mais elle ne convient pas à tous dans ce bloc de réponses.... La réponse simple est que pour que votre programme obtienne un octet hors de la mémoire, il a besoin d'une adresse. Dans les CPUs 32-bit, l'adresse mémoire de chaque octet est stockée dans un entier 32-bit (non signé), qui comme une valeur maximale de 4 Go. Lorsque vous utilisez un processeur 64 bits, l'adresse mémoire est un entier 64 bits, ce qui vous donne environ 1.84467441 × 10^19 adresses mémoire possibles. Cela devrait vraiment suffit si vous êtes nouveau à la programmation. Vous devriez vraiment vous concentrer davantage sur l'apprentissage de la programmation, que sur le fonctionnement interne de votre processeur, et pourquoi vous ne pouvez pas accéder à plus de 4 Go de RAM sur votre CPU 32 bits.
la réponse Simple pour expliquer la plage de mémoire adressable avec les processeurs 32 bits est:
laisse supposer que vous avez seulement des nombres à 3 chiffres permis de construire donc le nombre maximum u peut aller jusqu'à est 999. Plage de numéros (0 à 999). Vous n'avez que 1000 numéros à utiliser.
mais si u est autorisé à avoir des nombres à 6 chiffres alors le nombre maximum que vous pouvez construire est 999999. Maintenant la portée est (0-999999). Donc maintenant vous avez 1 million de numéros avec vous à utiliser.
de même plus de bits que vous êtes autorisé à avoir dans un processeur, plus grand ensemble d'adresses(nombres dans l'exemple précédent) vous pouvez construire et éventuellement utiliser pour stocker des données, etc..
rien de plus simple que ceci serait intéressant à lire!
- AD.