Question

Je suis nouveau à la programmation et viens d'un milieu non-CS (pas de diplôme officiel). Je programme la plupart du temps Winforms en C #.

Je suis confus au sujet de 32 bits et 64 bits .... Je veux dire, ont entendu parler de 32 bits OS, processeur 32 bits et sur la base duquel un programme peut avoir la mémoire maximale. Comment cela affecte la vitesse d'un programme. Il y a beaucoup plus de questions qui continuent d'affluer à l'esprit.

J'ai essayé de passer par quelques livres Organisation informatique et architecture. Mais, que ce soit je suis trop stupide pour comprendre ce qui est écrit là-dedans ou les auteurs supposer que le lecteur a une certaine expérience CS.

Quelqu'un peut-il me expliquer ces choses dans un anglais simple plaine ou me pointer vers quelque chose qui fait que.

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 plus encore .... Je veux savoir pourquoi toutes ces choses.

BOUNTY : Les réponses ci-dessous sont vraiment bon .... esp un par Martin. Mais, je suis à la recherche d'une explication approfondie, mais en anglais simple plaine.

Était-ce utile?

La solution

Il a vraiment tout se résume à des fils.

Dans les circuits numériques, seuls 0 et de 1 (généralement basse tension et haute tension) peuvent être transmises d'un élément (CPU) à un autre élément (puce de mémoire). Si je n'ai que 1 fil, je ne peux envoyer un 1 ou un 0 sur le fil par cycle d'horloge. Cela signifie que je ne peux répondre à 2 octets (en supposant l'octet d'adressage, et que les adresses entières sont transmises en seulement 1 cycle pour la vitesse!).

Si j'ai 2 fils, je peux répondre à 4 octets. Parce que je peux envoyer: (0, 0), (0, 1), (1, 0), ou (1, 1) sur les deux fils. Donc, fondamentalement, il est 2 à la puissance de nombre de fils.

Donc, si j'ai 32 fils, je peux répondre à 4 Go, et si j'ai 64 fils, je peux répondre à beaucoup plus.

Il y a d'autres trucs que les ingénieurs peuvent faire pour répondre à un espace d'adressage plus grand que les fils permettent. Par exemple. diviser l'adresse en deux parties et l'envoi d'une moitié du premier cycle et la seconde moitié du cycle suivant. Mais cela signifie que votre interface mémoire sera moitié aussi vite.

Edité mes commentaires en ici (non édité);) Et ce qui en fait un wiki si quelqu'un a quelque chose d'intéressant à ajouter ainsi

.

Comme d'autres commentaires ont mentionné, 2 ^ 32 (2 à la puissance 32) = 4294967296, qui est de 4 Go. Et 2 ^ 64 est 18.446.744.073.709.551.616. Pour creuser plus loin (et vous avez probablement lu cela dans Hennesey & Patterson) processeurs contient des registres qu'il utilise comme « espace de travail » pour stocker les résultats de ses calculs. Une CPU ne sait que faire des calculs simples et sait comment déplacer des données. Bien entendu, la taille de ces registres sont de la même largeur en bits que les « # -bits » de l'architecture, il est, donc un des registres de CPU 32 bits sera 32 bits de large, et les registres de CPU 64 bits sera 64 bits large.

Il y aura des exceptions à cette quand il vient à virgule flottante (pour gérer la double précision) ou d'autres instructions SIMD (instruction unique, plusieurs commandes de données). Les charges de CPU et enregistre les données vers et depuis la mémoire principale (RAM). Etant donné que le processeur utilise aussi ces registres pour calculer des adresses de mémoire (physiques et virtuels), la quantité de mémoire qu'il peut traiter est également la même que la largeur de ses registres. Il y a quelques processeurs qui gère le calcul d'adresses avec registres étendus spéciaux, mais ceux que je qualifierais « après pensées » ajoutés après les ingénieurs se rendent compte qu'ils avaient besoin.

A l'heure actuelle 64 bits est tout à fait beaucoup pour répondre mémoire physique. La plupart des processeurs 64 bits omettra pas mal de fils en matière de câblage la CPU à la mémoire en raison de l'aspect pratique. Il ne sera pas judicieux d'utiliser des biens immobiliers précieux carte mère pour courir les fils qui aura toujours des 0. Sans parler afin d'avoir la quantité maximum de RAM avec la densité DIMM d'aujourd'hui, il faudrait 4 milliards de slots DIMM:)

Autre que la plus grande quantité de mémoire, les processeurs 64 bits offrent calcul plus rapide pour les nombres entiers de plus de 2 ^ 32. Auparavant, les programmeurs (ou des compilateurs, qui est également programmé par les programmeurs;) auraient pour simuler ayant un registre de 64 bits en prenant deux registres de 32 bits et de manipuler des situations de dépassement de capacité. Mais sur les processeurs 64 bits, il serait géré par le CPU lui-même.

L'inconvénient est que le CPU 64 bits (avec tout équivalent) consomme plus d'énergie que la CPU 32 bits seulement en raison de (environ) deux fois la quantité de circuits nécessaires. Cependant, en réalité, vous ne serez jamais comparaison égale, car les processeurs les plus récents seront fabriqués dans les nouveaux procédés de silicium qui ont moins de fuites d'énergie, vous permettent de caser plus circuit de la même taille de la puce, etc. Mais consommeraient deux fois plus architectures 64 bits Mémoire. Ce qui était autrefois considéré comme « laid » de longueur d'instruction x86 variable est en fait un avantage aujourd'hui par rapport aux architectures qui utilise une taille d'instruction fixe.

Autres conseils

Essayons de répondre à cette question en regardant personnes contre ordinateurs ; nous espérons que cela va faire la lumière sur les choses pour vous:

Les choses à garder à l'esprit

  • Aussi étonnant qu'ils sont, les ordinateurs sont très, très stupide.

Mémoire

  • Les gens ont la mémoire (à l'exception, sans doute, des maris et des politiciens.) Les gens stockent des informations dans leur mémoire pour une utilisation ultérieure.
    • Avec une question (par exemple, « Quel est votre numéro de téléphone? ») Une personne est en mesure de récupérer des informations à donner une réponse (par exemple, « 867-5309 »)
  • Tous les ordinateurs modernes ont de la mémoire, et de stocker des informations dans leur mémoire pour une utilisation ultérieure.
    • Parce que les ordinateurs sont muets, ils ne peuvent répondre à une question très précise pour récupérer des informations: « Quelle est la valeur à X dans la mémoire »
      • Dans la question ci-dessus, X est connu comme adresse , qui peut aussi être appelé pointeur .

Nous avons donc ici une différence fondamentale entre les personnes et les ordinateurs: Pour rappeler les informations de la mémoire, les ordinateurs doivent donner une adresse , alors que les gens ne le font pas. (Eh bien dans un sens, on pourrait dire « votre numéro de téléphone » est une adresse car elle donne des informations différentes que « votre anniversaire », mais c'est une autre conversation.)

Chiffres

  • Les gens utilisent le système de nombre décimal . Cela signifie que pour chaque chiffre dans un nombre décimal, le chiffre peut être l'un de 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9. Les gens ont dix Options par chiffre .
  • Tous les ordinateurs modernes utilisent système binaire . 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é bit , abréviation de b inaire dig il .

Adresses

  • Chaque adresse dans un ordinateur est un nombre binaire.
  • Chaque adresse dans un ordinateur a un nombre maximum de chiffres (ou bits) qu'il peut avoir. Ceci est principalement parce que le matériel de l'ordinateur est rigide (également connu sous le nom fixe ) et doit savoir à l'avance que l'adresse ne sera si longtemps.
  • Des termes comme « 32 bits » et « 64 bits » parlent de l'adresse la plus longue pour laquelle un ordinateur peut stocker et récupérer des informations. En anglais « 32 bits » dans ce sens signifie « Cet ordinateur attend des instructions sur sa mémoire pour avoir des adresses pas plus de 32 chiffres binaires longs. »
    • Comme vous pouvez l'imaginer, les plus de bits d'un ordinateur peut gérer plus l'adresse, il peut regarder et donc plus la mémoire peut gérer à un moment donné.

32 bits v. 64 bits d'adressage

  • Pour un inflexible (fixe) nombre de chiffres (par exemple 2 chiffres décimaux) les numéros possibles que vous pouvez représenter est appelée Gamme (par exemple 00 à 99, ou 100 numéros uniques). L'ajout d'un chiffre décimal supplémentaire multiplie l'intervalle de 10 (par exemple trois chiffres décimaux -> 000 à 999, ou 1000 numéros uniques).
  • Ceci est valable pour les ordinateurs, aussi, mais parce qu'ils sont binaire machines au lieu de décimal machines, en ajoutant un chiffre binaire supplémentaire ( bit ) seulement augmente la plage d'un facteur 2 .

    Adressages:
    • 1-bit d'adressage vous permet de parler de 2 adresses uniques (0 et 1).
    • 2 bits d'adressage vous permet de parler de 4 adresses uniques (00, 01, 10 et 11).
    • 3 bits d'adressage vous permet de parler de 8 adresses uniques (000, 001, 010, 011, 100, 101, 110 et 111).
    • et après un long moment ... adressage 32 bits vous permet de parler de 4.294.967.296 adresses uniques.
    • et après un même plus en ... adressage 64 bits vous permet de parler 18.446.744.073.709.551.616 adresses uniques. C'est un LOT de la mémoire!

Implications

Ce que tout cela signifie qu'un ordinateur 64 bits peut stocker et récupérer beaucoup plus d'informations qu'un ordinateur 32 bits. Pour la plupart des utilisateurs, cela ne signifie vraiment pas beaucoup parce que les choses comme la navigation sur le web, vérification du courrier électronique et de jouer Solitaire travailler confortablement dans les limites de l'adressage 32 bits. Lorsque la prestation 64 bits va vraiment briller est dans les zones où vous avez beaucoup de données, l'ordinateur devra désabonnement à travers. traitement du signal numérique, la photographie gigapixels et les jeux 3D avancés sont tous les domaines où leurs quantités massives de traitement de données constateraient un grand coup de pouce 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, ils peuvent accéder à beaucoup plus. Processeurs plus anciens prennent uniquement en charge le mode 32 bits.

Les systèmes d'exploitation ont choisi d'utiliser les processeurs dans l'un des modes suivants: lors de l'installation, le choix est fait de savoir si pour faire fonctionner le processeur en mode 32 bits, soit en mode 64 bits. Bien que le processeur puisse continuer à fonctionner en mode 64 bits, le passage de 32 bits à 64 bits, il faudrait une réinstallation du système. Les anciens systèmes prennent en charge que le mode 32 bits.

Les applications peuvent également être écrits (ou compilés pour) 32 bits ou 64 bits. Compatibilité ici est plus délicate, comme le processeur, lorsqu'il est exécuté en mode 64 bits, peut prendre en charge encore les applications 32 bits comme une fonction d'émulation. Ainsi, sur un système d'exploitation 64 bits, vous pouvez exécuter soit des applications ou des applications 64 bits 32 bits. Sur un système d'exploitation 32 bits, vous pouvez exécuter uniquement les applications 32 bits.

Encore une fois, la taille est chosing principalement une question de quantité de mémoire principale que vous souhaitez accéder. les applications 32 bits sont souvent limités à 2 Go sur de nombreux systèmes, car le système a besoin d'un espace d'adressage pour lui-même.

D'un point de vue de la performance (vitesse), il n'y a pas de différence significative. les applications 64 bits peuvent être plus lent, car ils utilisent des pointeurs 64 bits, ils ont donc besoin de plus accès à la mémoire pour une opération donnée. En même temps, ils peuvent aussi être un peu plus rapide, car ils peuvent fonctionner comme une instruction, alors que doivent les imiter avec plusieurs instructions processeurs 32 bits des opérations entières 64 bits. Cependant, ces opérations entières 64 bits sont assez rares.

On peut aussi se demander quel est le coût de l'exécution d'une application 32 bits sur un processeur 64 bits: sur les processeurs AMD64 et Intel64, ce mode d'émulation est la plupart du temps dans le matériel, donc il n'y a pas de perte réelle de la performance sur l'exécution du 32 l'application native -bit. Ce chiffre est nettement différent sur Itanium, où les applications 32 bits (x86) sont émulés très mal.

Laissez-moi vous raconter l'histoire de Binville, une petite ville au milieu de nulle part. Binville avait une route qui y mène. Toute personne soit à venir ou de quitter Binville devait conduire sur cette route. Mais comme vous approchiez la ville, il y avait une fourchette. Vous pouvez soit aller à gauche ou aller à droite.

En fait, toutes les routes avaient une fourchette en elle, à l'exception des routes menant aux maisons elles-mêmes. Ces routes ont fini tout simplement à la maison. Aucun des routes avaient des noms; ils ne ont pas besoin de noms grâce à un ingénieux système d'adressage créé par la Commission de planification 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 suffit à a) identifier de manière unique chaque maison (il n'y a pas des répétitions) et b) vous dire comment y arriver. Il est facile de se déplacer en ville, vous voyez. Chaque fourchette est marqué par un zéro ou un, que la Commission de planification appelle l'intersection Tracer Binville, ou bit pour faire court. Comme vous l'approche de la première fourche, regardez le premier bit de l'adresse. Si c'est un zéro, allez à gauche; si elle est un, allez à droite. Ensuite, regardez le deuxième chiffre quand vous arrivez à la seconde fourche, aller à gauche ou à droite, selon le cas.

Disons que vous voulez visiter votre ami qui vit à Binville. Elle dit qu'elle vit dans la maison 10. Lorsque vous arrivez à la première fourche Binville, aller à droite (1). Puis à la seconde fourche, prendre à gauche (0). Vous y êtes!

Binville existait comme ça depuis plusieurs années mais le mot a commencé à se déplacer de son cadre idyllique, grand système de parc, et les soins de santé généreux. (Après tout, si vous n'avez pas à dépenser de l'argent sur les panneaux de signalisation, vous pouvez l'utiliser sur de meilleures choses.) Mais il y avait un problème. Avec seulement deux bits, le système d'adressage a été limité à quatre maisons!

Ainsi, la Commission de planification mis en place la tête et est venu avec un plan: ils ajouteraient un peu à chaque adresse, doublant ainsi le nombre de maisons. Pour mettre en œuvre le plan, ils construiraient une nouvelle fourche à la lisière de la ville et tout le monde obtiendraient 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 simplement ajouté un zéro à l'avant de leur adresse? Le nouveau bit représente la nouvelle intersection qui a été construit. Lorsque le nombre de bits est augmentée par un, le nombre d'adresses double. Les citoyens ont toujours su la taille maximale de leur ville: tout ce qu'ils avaient à faire était calculer la valeur de deux à la puissance du nombre de bits. Avec trois bits, ils pourraient avoir 2 3 = 8 maisons.

Quelques années ont passé et Binville a été rempli de nouveau à pleine capacité. Plus de gens voulaient se déplacer, donc un autre morceau a été ajouté (avec l'intersection nécessaire), doublant la taille de la ville à seize maisons. Puis un autre peu, et un autre, et un autre ... Les adresses de Binville étaient bientôt à seize bits, capable d'accueillir jusqu'à 2 16 (16384) maisons, mais il ne suffit pas. Les gens ont continué à venir et à venir!

Ainsi, la Commission de planification a décidé de résoudre le problème une fois pour toutes: ils sautaient tout le chemin à trente-deux bits. Avec suffisamment d'adresses pour plus de quatre milliards foyers (2 32 ), sûrement ce serait suffisant!

Et il était ... pendant environ vingt-cinq ans, quand Binville ne fut plus une petite ville au milieu de nulle part. Il était maintenant une grande métropole. En fait, il était en train de devenir aussi grand que toute une nation avec des milliards d'habitants. Mais les parcs étaient toujours agréable et tout le monde avait grand soin de la santé, de sorte que la population ne cesse de croître.

Face à la population sans cesse croissante, la Commission de planification a mis une fois de plus uni leurs efforts et a proposé une autre expansion de la ville. Cette fois-ci utiliserait 64 bits. Savez-vous combien de maisons pourraient tenir dans les limites de la ville Binville maintenant? C'est vrai: 18, 446.744.073.709.551.616. Ce nombre est si grand, nous pourrions remplissons environ deux milliards terres et donner à chacun leur propre adresse.

En utilisant 64 bits é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 fait. Pire encore, certains citoyens n'avaient pas encore mis à jour leurs adresses à utiliser le nouveau format 64 bits, ils ont été contraints à une section murée hors de la ville réservée spécifiquement pour ceux qui utilisent encore les adresses 32 bits. Mais c'était OK: les personnes qui utilisent 32 bits ont eu accès à plus que suffisant de la ville pour répondre à leurs besoins. Ils ne se sentaient pas le besoin de changer tout de suite.

Est-ce que 64 bits suffisant? Qui sait à ce moment, mais les citoyens de Binville attendent l'annonce d'adresses de 128 bits ...

La réponse de Martin est la plupart du temps correct et détaillé.

Je pensais que je voudrais juste mentionner que toutes les limites de la mémoire sont par application de mémoire virtuelle limites, pas de limites pour la mémoire physique de l'ordinateur. En fait, il est possible de travailler avec plus de 4 Go de mémoire en application unique, même dans les systèmes 32 bits, il faut juste plus de travail, car il ne peut pas tous être accessibles à l'aide des pointeurs à un moment donné. texte lien

Une autre chose qui n'a pas été mentionné est que la différence entre le processeur classique x86 et x86-64 est non seulement dans la taille du pointeur, mais aussi dans le jeu d'instructions. Alors que les pointeurs sont plus grandes et consomment plus de mémoire (8 octets au lieu de 4), il est compensé par jeu de registres plus grand (15 registres généraux au lieu de 8, IIRC), de sorte que la performance peut effectivement être mieux pour le code qui fonctionne de calcul.

La réponse de Martin est excellent. Il suffit d'ajouter quelques points supplémentaires ... puisque vous mentionnez .NET, vous devez noter que la CLI / JIT a quelques différences entre x86 et x64, avec différentes (Optimisations queue appel, par exemple), et un comportement subtil différent des avancées des choses comme volatile. Tout cela peut avoir un impact sur votre code.

De plus, pas tout le code fonctionne sur x64. Tout ce qui utilise DirectX ou certaines fonctions COM peuvent lutter. Pas vraiment un performances fonction, mais important de savoir.

(j'ai enlevé « DirectX » - je pourrais parler ... il des déchets, mais simplement: vous devez vérifier que tout ce que vous dépendez est stable sur votre plate-forme cible)

Pensez à une mémoire de l'ordinateur générique comme une carte de bingo massive avec des milliards de carrés. Pour faire face à une case individuelle sur la carte il existe un système pour marquer chaque rangée et colonne B-5, I-12, O-52..etc.

S'il y a des carrés assez sur la carte par la suite, vous manquerez de lettres de sorte que vous devrez commencer à réutiliser plusieurs lettres et écrire un plus grand nombre de continuer à être en mesure de répondre de manière unique chaque carré.

Avant de vous le savez l'annonceur est jaillissant nombre fâcheusement énormes et les combinaisons de lettres pour vous faire savoir que la place pour marquer sur votre carte de 10 milliards carré. BAZC500000, IAAA12000000, OAAAAAA523111221

Le nombre de bits de l'ordinateur indique la limite de la complexité des lettres et des chiffres pour répondre à toute place spécifique.

32 bits signifie que si la carte est tout plus grand que 2 ^ 32 places l'ordinateur ne dispose pas de suffisamment de fils et Transisters pour lui permettre de répondre de manière unique physiquement une place spécifique requise pour lire une valeur ou écrire une nouvelle valeur à la spécifiée emplacement de mémoire.

ordinateurs 64 bits peuvent adresser individuellement un 2 ^ 64 massifs carrés .. mais de le faire chaque carré a besoin de beaucoup plus de lettres et de chiffres pour vous assurer que chaque carré a sa propre adresse unique. Voilà pourquoi les ordinateurs 64 bits ont 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 numéro 1112222 .. ce qui se passe quand il y a plus de 9.999.999 personnes qui veulent leur propre numéro de telelphone? Vous ajoutez des indicatifs régionaux et codes 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 d'IPv4 imminente de son même problème .. adresses IPv4 sont 32 bits qui signifie qu'il n'y a que 2 ^ 32 (~ 4 milliards) IP unique adresses possibles et il y a beaucoup plus de gens que aujourd'hui en vie .

Il y a les frais généraux dans tous les régimes dont j'ai parlé (ordinateurs, numéros de téléphone, les adresses IPv4) où certaines parties sont réservées à des fins d'organisation si l'espace utile est beaucoup moins.

La promesse de performance pour le monde 64 bits est qu'au lieu d'envoyer 4 octets à la fois (ABCD) un ordinateur 64 bits peut envoyer 8 octets à la fois (ABCDEFGH) pour que l'alphabet est transféré entre les différentes zones de mémoire jusqu'à deux fois plus vite qu'un ordinateur 32 bits. Il est bénéficient également de certaines applications qui fonctionnent tout simplement plus rapide quand ils ont plus de mémoire qu'ils peuvent utiliser.

Dans les processeurs de bureau du monde réel 64 bits par intel et al ne sont pas vraiment vrai processeurs 64 bits et sont encore limités à 32 bits pour plusieurs types d'opérations de sorte que dans le monde réel les performances entre 32 bits et 64 applications -bit est marginal. mode 64 bits vous donne plus de registres de matériel pour travailler avec qui n'améliore les performances, mais plus de mémoire sur adressage d'un processeur 64 bits « faux » peut aussi nuire à la performance dans certains domaines, de sorte que son ususally un lavage. Dans l'avenir, nous allons voir plus d'améliorations de performances lorsque les processeurs de bureau deviennent entièrement 64 bits.

Je ne pense pas que je l'ai vu une grande partie du mot « registre » dans les réponses précédentes. Un ordinateur numérique est un groupe de registres, avec une logique de calcul et de mémoire pour stocker des données et des programmes.

Mais d'abord ... les ordinateurs numériques 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 utilisés commutateurs électromécaniques; les ordinateurs modernes utilisent des transistors, car ils sont plus petits et plus rapides. Beaucoup plus petit, et beaucoup plus vite.

A l'intérieur du CPU, les commutateurs sont regroupés dans les registres d'une longueur finie, et les opérations sont généralement effectuées sur des registres entiers: Par exemple, ajoutez ce registre à cela, et ainsi de suite. Comme on peut s'y attendre, un processeur 32 bits dispose de registres 32 bits. Je simplifie, mais garder avec moi.

Il est logique d'organiser la mémoire de l'ordinateur comme une série d'emplacements « », chacun en maintenant le même nombre de bits comme un registre du processeur: par exemple, la charge de ce registre à partir de cet emplacement de mémoire. En fait, si l'on pense de la mémoire comme octets , qui est juste une fraction commode d'un registre et nous MIGH charger un registre d'une série d'emplacements de mémoire (1, 2, 4, 8).

transistors deviennent plus petits, une logique supplémentaire pour l'arithmétique plus complexe peut être mis en oeuvre dans l'espace limité d'une puce d'ordinateur. CPU immobilier est toujours à une prime.

Mais avec des améliorations dans la fabrication de puces, plus de transistors peuvent être fiable faites sur des puces légèrement plus grandes. Les registres peuvent être plus longs et les chemins entre eux peut être plus large.

Lorsque les registres qui contiennent les adresses des emplacements de mémoire sont plus, ils traitent de plus grandes mémoires et les données peuvent être manipulées en gros morceaux. En combinaison avec la logique arithmétique plus complexe, les choses se font plus rapidement.

Et est-ce pas ce que nous sommes tous après?

pour expliquer pourquoi le mode 32 bits ne peut accéder à 4 Go de RAM:

espace mémoire accessible maximum = 2 n octets où n est la longueur de mot de l'architecture. Ainsi, dans une architecture 32 bits, l'espace de mémoire maximale est accessible 2 32 = 4294967296 = 4 Go de RAM.

64 architecture de bit serait en mesure d'accéder à 2 64 = beaucoup de mémoire.

Juste remarqué commentaires Tchens aller à ce sujet. Quoi qu'il en soit, sans fond CS, oui livres d'organisation informatique et l'architecture vont être difficiles à comprendre au mieux.

  • Le processeur utilise en base 2 pour mémoriser des numéros. Base 2 a probablement été choisi parce qu'il est le « simple » de toutes les bases. Par exemple la table de multiplication de base 2 ne dispose que de 4 cellules tandis que la base table de multiplication « 10 » a un 100 cellules
  • Avant 2003, les processeurs PC communs étaient seulement "capable 32 bits".
    • Cela signifie que les opérations numériques natifs étaient des numéros 32 bits du processeur.
    • Vous pouvez toujours effectuer des opérations numériques pour un plus grand nombre, mais ceux devrait être effectué par des programmes exécutés par le processeur, et ne pas être les « actions primitives » (commandes dans la machine de langue) pris en charge par le processeur comme ceux 32 -bit-entiers (à l'époque)
    • 32 bits ont été choisis parce que les ingénieurs CPU sont friands des puissances de 2, et 16 bits ne suffisaient pas
  • Pourquoi ne suffisait pas 16 bits? Avec 16 bits, vous pouvez représenter des nombres entiers dans la gamme de 0-65535
    • 65535 = 1111111111111111 en binaire (= 2 0 2 1 2 2 ... + 2 15 = 2 16 -1)
    • 65535 ne suffit pas car, par exemple, un logiciel de gestion de l'hôpital doit pouvoir compter plus de 65535 patients
    • Habituellement, les gens considèrent la taille de la mémoire de l'ordinateur lors de l'examen de la taille de ses entiers devraient être. 65535 est certainement pas assez. Les ordinateurs ont beaucoup plus de RAM que cela, et il n'a pas d'importance si vous comptez dans « Octets » ou bits
  • 32 bits a été considéré comme suffisant pour un certain temps. En 2003, AMD a lancé le premier 64-bit compatible processeur "x86" . Intel bientôt suivi.
  • En fait, 16 bits a été considéré comme assez longtemps il y a.
  • Il est pratique courante pour beaucoup de matériel et logiciel pour être rétrocompatible. Dans ce cas, cela signifie que les CPU compatibles 64 bits peut également exécuter tous les logiciels les processeurs compatibles 32 bits peut.
    • La rétrocompatibilité est Tâcher d'une stratégie commerciale. Plus d'utilisateurs voudront passer à la meilleur processeur si elle peut faire tout ce que le précédent pouvait.
    • Dans les processeurs rétrocompatibilité signifie que les nouvelles actions les supports CPU sont ajoutés à la précédente langage machine. Par exemple, la langue précédente machine peut avait une spécification comme « tous les opcodes à partir de 1111 sont réservés pour une utilisation future »
    • En théorie, ce type de compatibilité descendante CPU n'avait été nécessaire que tous les logiciels aurait pu vient d'être recompilé à la nouvelle et non en langage machine compatible. Cependant ce n'est pas le cas en raison des stratégies d'entreprise et les systèmes politiques ou économiques. Dans un monde Utopic « open source », compatibilité descendante des langues de la machine ne serait probablement pas une préoccupation.
  • La compatibilité descendante de x86-64 (les courants de langage machine de processeurs 64 bits) se présente sous la forme d'un « mode de compatibilité ». Cela signifie que tout programme souhaitant utiliser les nouvelles fonctionnalités de cpu doit notifier à l'unité centrale de traitement (par le système d'exploitation) qu'il devrait fonctionner en « mode 64 bits ». Et il pourrait utiliser pour de grandes nouvelles capacités 64 bits CPU.
  • Par conséquent, pour un programme d'utiliser les capacités 64 bits de la CPU: La CPU, le système d'exploitation, et le programme, tous ont à « support 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 probablement peu probable que les processeurs à venir se déplacera plus à 128 bits. Mais s'ils le font, c'est certainement assez pour tout ce que je peux imaginer, et donc une transition de 256 bits ne sera pas nécessaire.

J'espère que cette aide.

Il convient de noter que certaines applications (par exemple. Encodage / décodage et rendu multimédia) un gain important (2x) amélioration des performances lors de l'écriture d'utiliser pleinement 64 bits.

Voir 32 bits par rapport à des repères 64 bits pour Ubuntu et Windows Vista

Pour personne non CS. 64bit fonctionnera mieux pour les calculs (toutes sortes de), il sera bon aussi vous permettra d'avoir plus de RAM.

Aussi, si vous avez RAM limitée (par exemple dans VPS ou une petite-RAM serveur dédié) -. Choisir 32 bits, services, il mangera moins de RAM

Ceci 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 lieux pour stocker les données et tous les programmes fonctionnent en manipulant ces choses. Assemblée opère directement sur eux (et donc pourquoi les gens sont souvent heureux de programmer dans l'assemblage).

32 bits: un ensemble de base de registres peut contenir 32 bits ofinformation. des moyens 64 bits, sans surprise, 64 bits d'informations.

Pourquoi cela peut-il faire plus rapidement des programmes? Parce que vous pouvez le faire plus rapidement des opérations plus importantes. Il ne fera certains types de programmes plus rapidement, par la voie. Jeux, en général, peuvent tirer avantage d'optimiser par processeur , en raison de leurs opérations mathématiques lourds (et donc enregistrer l'utilisation).

Mais d'une manière amusante, comme mentionné Tchen, leur sont beaucoup d'autres « choses » qui vous permettent d'effectuer des opérations plus importantes de toute façon. SSE, SSE2, etc., aura registres 64 bits et registres 128 bits, même sur un système binaire » '32.

La plus grande capacité à adresser la mémoire parle directement à l'augmentation de la taille du registre de base, sur la base (je pense) du système d'adressage mémoire spécifique de Windows.

L'espoir qui aide un peu. d'autres affiches sont beaucoup plus précis que moi, je suis juste essayer d'expliquer très simplement (il aide que je connais très peu:)

J'ai une merveilleuse réponse à cette question, mais il ne convient pas à tous au sein de ce bloc de réponse .... La réponse simple est que pour votre programme pour obtenir un octet de mémoire, il a besoin d'une adresse. Dans les processeurs 32 bits, l'adresse de mémoire de chaque octet est stocké dans un entier de 32 bits (unsigned), qui en tant que valeur maximale de 4 Go. Lorsque vous utilisez un processeur 64 bits, l'adresse de mémoire est un nombre entier de 64 bits, ce qui donne environ 1,84467441 x 10 ^ 19 adresses de mémoire possibles. Cela devrait suffire si vous êtes nouveau à la programmation. Vous devriez vraiment se concentrer davantage sur l'apprentissage comment programmer, 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.

Réponse simple à expliquer plage de mémoire adressable avec processeurs 32 bits est:

Lets supposons que vous avez seulement trois numéros de chiffres autorisés à construire nombre maximal si u peut aller est jusqu'à 999. Gamme de nombres est (0-999). Vous avez seulement 1000 numéros à utiliser.

Mais si u sont autorisés à avoir 6 numéros de chiffres alors le nombre maximum que vous pouvez construire est 999999. gamme est maintenant (0-999999). Alors maintenant, u ont 1 million de numéros avec vous à utiliser.

De même plus de bits que vous êtes autorisés à avoir dans un processeur, plus grand ensemble d'adresses (numéros dans l'exemple précédent), vous pouvez construire et éventuellement utiliser pour stocker des données, etc ..

rien de plus simple que cela serait intéressant de lire!

-AD.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top