web-dev-qa-db-fra.com

Est-ce que la taille du bus d'adresses ou la taille du bus de données qui déterminent les systèmes "8 bits, 16 bits, 32 bits, 64 bits"?

Ma compréhension simple est la suivante.

La mémoire (RAM) est composée de bits, de groupes de 8 qui forment des octets, chacun pouvant être adressé, et donc une mémoire adressable d'octets.

Address Bus stocke l'emplacement d'un octet de mémoire.

Si un bus d'adresse a une taille de 32 bits, cela signifie qu'il peut contenir jusqu'à 232 chiffres et il peut donc se référer jusqu'à 232 octets de mémoire = 4 Go de mémoire et toute mémoire supérieure à celle-ci est inutile.

Le bus de données est utilisé pour envoyer la valeur à écrire/lire dans la mémoire. Si j'ai un bus de données de taille 32 bits, cela signifie qu'un maximum de 4 octets peuvent être écrits/lus à la fois dans la mémoire. Je ne trouve aucune relation entre cette taille et la taille maximale de la mémoire possible.

Mais je lis ici que:

Même si la plupart des systèmes sont adressables sur des octets, il est logique que le processeur déplace autant de données que possible. Cela se fait par le bus de données, et la taille du bus de données correspond à l'origine des noms système 8 bits, système 16 bits, système 32 bits, système 64 bits, etc. Lorsque le bus de données a une largeur de 8 bits, il peut transférer 8 bits en une seule opération de mémoire. Lorsque le bus de données a une largeur de 32 bits (comme c'est le cas le plus souvent au moment de l'écriture), 32 bits au plus peuvent être déplacés en une seule opération de mémoire.

Cela signifie que c'est la taille du bus de données qui donne le nom à un système d'exploitation, à savoir 8 bits, 16 bits, etc. Quel est le problème avec ma compréhension?

15
learner

Généralement, la taille du bus de données est déterminée par la taille des registres du processeur. C'est souvent la taille des registres du processeur qui détermine le type de système d'exploitation (64 vs 32). Les tailles de bus physiques peuvent techniquement différer de cela (8088 par exemple), mais il est si rare que l'auteur de votre citation associe probablement les deux.

Généralement, la taille du pointeur suit également la taille du registre, mais la largeur du bus d’adresses physiques peut être plus grande (comme avec le 8086 16 bits à 20) ou plus petite (comme avec l’AMD 64 à 48).

12
Dougvj

C'est la taille du registre et la gestion de la mémoire dans le processeur.

En utilisant des astuces, un processeur 16 bits avait un bus d’adresse de 20 bits, ce n’était donc pas une mémoire externe au processeur.

1
Fiasco Labs

Il n'y a pas de système "pur" 32 ou 64 bits, et par conséquent, les termes ne sont que des approximations.

Par exemple. prenez votre déclaration "La mémoire (RAM) est composée de bits, groupes de 8 qui forment des octets, chacun pouvant être adressé" . Ce n'est pas très commun. Les ordinateurs ont leur RAM sur des modules DIMM, d’une largeur de 64 bits. Dans les années 90, vous disposiez de barrettes SIMM d'une largeur de 32 bits.

Dans certains systèmes, les DIMM doivent ou peuvent être appariés ("groupés"/"double canal"), ce qui constituerait un bus de données à 128 bits. Ce concept est antérieur aux processeurs dits "64 bits" d'AMD et d'Intel.

Les groupes de 64 bits d'un seul DIMM peuvent en effet être subdivisés en 8 octets. Cela se fait de manière assez transparente par votre processeur. Il peut également diviser les 64 bits en 4 * 16 bits, 2 * 32 bits ou simplement utiliser les 64 bits comme une seule variable.

La question la plus importante est cependant la largeur d'une adresse. Chaque octet en mémoire a sa propre adresse, mais pas chaque bit. Cela signifie que les 64 bits que vous obtenez d'un seul DIMM ont 8 adresses. Le plus bas d'entre eux est toujours un multiple de 8. Maintenant, combien d'adresses distinctes le processeur prend-il en charge? Il y a deux réponses communes, du moins en théorie. Support de certains processeurs 232 adresses différentes, certaines soutiennent 264. Cette distinction est la distinction la plus courante entre les systèmes 32 et 64 bits.

En pratique, les systèmes 64 bits actuels prennent en charge moins de 264 octets de RAM. Ce serait inabordable, et ne tiendrait pas de toute façon dans un PC normal. Cette mémoire peserait plusieurs millions de tonnes!

1
MSalters

Les deux en fait.

Les bits d'une CPU sont normalement une référence à la taille de ses registres internes. Une CPU à 32 bits a des registres à 32 bits qui peuvent ou non être divisés en morceaux.

Il est judicieux d’avoir un processeur 32 bits avec un bus de données 32 bits, car vous pouvez transférer toutes les données de la mémoire directement vers les registres, mais vous pouvez avoir n’importe quelle taille de bus de données. Ainsi, les processeurs 32 bits ont normalement un bus de données 32 bits pour faciliter le transfert de données de et vers celui-ci.

Il est également judicieux d’avoir un bus d’adresse 32 bits pour deux raisons. Un bus d’adresse plus grand rendrait plus difficile l’adressage indirect, car vous n’auriez pas un registre assez volumineux pour stocker une adresse mémoire ou le CPU aurait besoin d’un registre spécialisé pour l’adressage mémoire. Bus d'adresse 16 bits. Au contraire, un bus d’adresse plus petit que le registre n’est qu’un gaspillage de ressources. Il existe des microcontrôleurs utilisant un bus d'adresses plus petit.

0
h0m3