Est-ce la taille du bus d'adresse ou la taille du bus de données qui détermine les systèmes «8 bits, 16 bits, 32 bits, 64 bits»?

15

Ma simple compréhension est la suivante.

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

Le bus d'adresse stocke l'emplacement d'un octet de mémoire.

Si un bus d'adresse est de taille 32 bits, cela signifie qu'il peut contenir jusqu'à 2 32 chiffres et qu'il peut donc renvoyer jusqu'à 2 32 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 dans / lire la mémoire. Si j'ai un bus de données de taille 32 bits, cela signifie qu'un maximum de 4 octets peut être écrit / lu dans la mémoire à la fois. Je ne trouve aucune relation entre cette taille et la taille de mémoire maximale possible.

Mais je lis ici que:

Même si la plupart des systèmes sont adressables en 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 est d'où proviennent les 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 plus courant au moment de l'écriture), tout au plus, 32 bits peuvent être déplacés en une seule opération de mémoire.

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

apprenant
la source
" Qu'est-ce qui ne va pas avec ma compréhension? " - Vous essayez de faire correspondre une définition à différentes choses. Le descripteur de taille de bit a été utilisé à différents moments pour différentes choses.
sciure
1
Cela signifie tout ce que le fabricant dit que cela signifie. En général, cela ressemblera à la taille du registre, mais il existe de nombreuses façons de simuler / accélérer cela.
Daniel R Hicks

Réponses:

12

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 différer techniquement de cela (8088 à titre d'exemple) mais c'est si rare que l'auteur de votre citation associe probablement les deux ensemble.

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

Dougvj
la source
2
" la largeur du bus d'adresse physique peut être plus grande " - Surtout avec les processeurs 4 bits et 8 bits!
sciure
D'accord. Mais j'essaie de le comprendre trivialement. Je n'ai pu trouver aucune relation entre la taille du bus de données et la mémoire maximale possible, comme je pourrais l'expliquer avec la taille du bus d'adresse. La réponse semble donc être "PAS LA TAILLE DU BUS D'ADRESSE, mais la TAILLE DU BUS DE DONNÉES" (car elle est généralement aussi grande que les registres du processeur). Suis-je en train de manquer quelque chose?
apprenant
@learner C'est exact, la confusion réside également dans le fait que la taille maximale du pointeur d'un système est la taille des registres du processeur. Dans un espace d'adressage plat comme avec la plupart des systèmes modernes, cela équivaut à être limité par la taille des registres du processeur, d'où les limitations d'adressage comme vous l'avez souligné. Certains processeurs, en particulier les plus anciens, ont utilisé des astuces telles que l'adressage segmenté spécial pour contourner ce problème.
Dougvj
@Dougvj, d'accord, ça devient plus clair. Mais pourquoi ont-ils fait des tailles de bus d'adresses différentes de celles des registres de processeur? Ne serait-il pas plus logique de les garder identiques? Et je ne sais pas où les adresses sont conservées? (le bus d'adresse ou le registre du processeur?) Merci
apprenant
1
@learner C'est exact. Pour résumer: La désignation du système d'exploitation correspond exactement à la taille des registres du processeur. Le bus d'adresse peut être ou non de la même taille que les registres du processeur, ainsi la RAM adressable maximale possible est indépendante de cela. Le processeur en interne, cependant, a presque toujours une sorte de schéma d'adressage impliquant des pointeurs qui sont de la même taille que les registres du processeur.
Dougvj
1

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 20 bits, il ne s'agit donc pas d'une mémoire externe au processeur.

Fiasco Labs
la source
1

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

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

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

Ces groupes de 64 bits d'un seul module DIMM peuvent en effet être subdivisés en 8 octets. C'est assez transparent pour votre CPU. Il peut également casser 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 à partir d'un seul module DIMM ont 8 adresses. La plus faible d'entre elles est toujours un multiple de 8: maintenant, combien d'adresses distinctes le processeur prend-il en charge? Il y a deux réponses communes, au moins en théorie. Certains processeurs prennent en charge 2 32 adresses différentes, certains prennent en charge 2 64 . Cette distinction est la distinction la plus courante entre les systèmes 32 et 64 bits.

En pratique, les systèmes 64 bits prennent aujourd'hui en charge moins de 2 64 octets de RAM. Ce serait inabordable et ne rentrerait pas dans un PC normal de toute façon. Cette mémoire pèserait plusieurs millions de tonnes!

MSalters
la source
Est-ce le registre du processeur où une adresse est conservée, ou est-ce le bus d'adresse? Vous dites "certains processeurs prennent en charge 2 ^ 32 adresses différentes ...". Par quoi sont-ils exactement limités?
apprenant
Typiquement, à la fois les tailles de registre et la MMU (Memory Management Unit, la partie de la CPU qui est directement responsable de la mémoire).
MSalters
0

Les deux en fait.

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

Il est logique 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, le processeur 32 bits possède normalement un bus de données 32 bits pour faciliter le transfert de données depuis et vers celui-ci.

Et il est également logique 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 plus grand pour stocker une adresse mémoire ou le processeur aurait besoin d'un registre spécialisé pour l'adressage mémoire, notez que les anciens processeurs comme l'Intel 8080 étaient 8 bits et avaient un 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 qui utilisent un bus d'adresse plus petit.

h0m3
la source