3 votes

Pourquoi la quantité de mémoire vive utilisable par un ordinateur est-elle limitée par le pr

J'ai récemment réfléchi au fait que les processeurs 32 bits ne peuvent prendre en charge qu'un maximum de 4 Go de mémoire, et je n'arrivais pas à comprendre pourquoi le nombre de bits d'un processeur limite sa mémoire. Je comprends, comme le disent d'autres questions ici, qu'un nombre binaire de 32 chiffres ne peut adresser que 4 Go. Mais pourquoi un ordinateur ne peut-il pas utiliser deux variables pour référencer la mémoire, et "agir" efficacement comme s'il avait 64 bits (un peu comme les processeurs 32 bits peuvent utiliser des entiers 64 bits) ?

Est-ce possible et cela réduirait-il les performances ? Si cela réduisait les performances, que se passerait-il si le système d'exploitation utilisait les "fausses" références mémoire 64 bits avec certains programmes, plutôt que sur l'ensemble du système ?

3voto

Shannon Severance Points 896

Pourquoi la quantité de RAM utilisable par un ordinateur est-elle limitée par les bits du processeur ? Ce n'est pas le cas. Historiquement, cela n'a pas été le cas avec des exemples où la taille de l'adresse était plus grande ou plus petite que le "bitness" du CPU.

Regardez les processeurs 8 bits comme le 6502 et le Z80 qui adressaient 64KiB. Le 8086 16 bits adressait 20 bits et le 80286 16 bits 24 bits.

D'un autre côté, le Motorola 68000 32 bits avait un adressage 32 bits, mais n'utilisait que 24 bits pour les fils, ce qui le limitait à 16MiB. C'est l'approche des puces x64 que je connais, elles n'utilisent pas 64 lignes vers le monde extérieur.

Lorsque les architectures 32 bits ont été mises en place, 4 Gigaoctets de mémoire étaient pratiquement incompréhensibles. Le site 80386 a été introduit en 1985. En 1996, Microsoft publie MS-DOS 3.2, qui limite toujours la taille maximale d'une partition de disque dur à 32MiB. Très peu de gens pensaient à des disques durs en GiB, sans parler de la mémoire. SPARC a été introduit en 1987. PowerPC 601 en 1992, nous nous rapprochons aujourd'hui des disques durs de 1 Go, si ce n'est déjà fait. Les stations de travail Unix pouvaient avoir deux chiffres de MiB de RAM. Le besoin de plus de 4GiB était encore loin. L'ajout de matériel et la complexité de la prise en charge d'adresses supérieures à 32 bits n'en valaient pas la peine.

Une fois qu'une architecture est établie et utilisée, il n'est pas facile de modifier les éléments fondamentaux, comme la taille de l'adresse. On peut en rajouter, comme le PAE sur le x86, ou contrôleurs de mémoire externes sur un 6502.

Modifié pour ajouter Et l'inverse s'est également produit. Le site IBM 360 Le CRAY-2, introduit en 1964, était une machine de 32 bits avec un adressage de 24 bits. Le CRAY-2, introduit en 1985, était une machine de 64 bits avec un adressage de 32 bits. (Si je lis cette brochure correctement, voir "Architecture et conception" à partir de la page 6). Notez que le CRAY-2 semble être adressable par mot de 64 bits, donc l'adressage 32 bits donnerait un espace d'adressage de 8 * 4 Gi ou 32 GiB.

Une autre note

J'ai parlé de l'espace d'adressage. Le titre de la question porte sur la RAM. La RAM, en l'absence d'un contrôleur de mémoire externe qui remappe la mémoire, va être limitée par le nombre de fils de la ligne d'adresse provenant du CPU. Certains processeurs avaient moins de lignes d'adresses que de bits dans leur espace d'adressage. Un exemple célèbre est celui du Motorola 68000 qui avait un espace d'adressage de 32 bits avec seulement 24 lignes d'adresse . Un autre exemple est celui d'Intel 80386SX Encore une fois, 32 bits d'adressage et 24 lignes d'adresse.

1voto

Loren Pechtel Points 2489

Le processeur est conçu pour utiliser une variable pour le pointeur d'instruction et une variable pour le pointeur de pile. Tout le code est écrit en supposant cela, si vous commencez à jouer avec deux variables, vous casserez tous les morceaux de code existants.

Ce que vous pouvez faire, c'est changer dont 4 Go de mémoire que vous utilisez à un moment donné. C'est le PAE dont parle TOOGAM. Tout programme serait toujours limité à 4 Go, à moins qu'il ne fasse des pieds et des mains pour accéder à la mémoire supplémentaire (et aucun programmeur d'applications ne ferait cela de nos jours - si vous faites quelque chose qui nécessite plus de 4 Go, vous avez une tâche suffisamment importante pour pouvoir dicter les conditions à l'utilisateur) : 64 bits ou je ne fonctionne pas) et vous introduisez des maux de tête avec les communications interprocessus. Partager un morceau de données pures est bien, partager un morceau de données contenant un pointeur causera des problèmes parce que le pointeur pointera au mauvais endroit dans l'espace d'adressage du second programme. C'est la cause des maux de tête du pilote que TOOGAM mentionne.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X