web-dev-qa-db-fra.com

Différence entre Word adressable et octet adressable

Quelqu'un peut-il expliquer quelle est la différence entre Word et Byte adressable? Quel est le lien avec la taille de la mémoire, etc.?

22
leon

nités de mémoire sont adressables . C'est la seule façon d'utiliser la mémoire .

En réalité, la mémoire est seulement octet adressable. Ça veut dire:

  • Une adresse binaire pointe toujours vers a single octet uniquement.
  • Un mot est simplement a group of octets - 2, 4, 8 en fonction du bus de données size of le CPU.

Pour bien comprendre les opération mémoire, vous devez être familier avec les différents registres du [~ # ~] processeur [~ # ~] et du ports mémoire du [~ # ~] bélier [~ # ~] . Je suppose que vous connaissez leur signification:


  • [~ # ~] mars [~ # ~] ( registre d'adresses mémoire )
  • [~ # ~] mdr [~ # ~] ( registre de données de mémoire )
  • [~ # ~] pc [~ # ~] ( registre de compteur de programme )
  • [~ # ~] mbr [~ # ~] ( registre de mémoire tampon )

[~ # ~] ram [~ # ~] a two types de ports mémoire :

  1. 32-bits pour données / adresses
  2. 8-bit pour [~ # ~] opcode [~ # ~] .

Supposons que [~ # ~] cpu [~ # ~] veuille lire a Word (dites 4 octets ) à partir de l'adresse xyz en avant . Le CPU mettrait l'adresse le [~ # ~] mar [~ # ~] , envoie un signal de lecture de mémoire à la puce de contrôleur de mémoire . A la réception de adresse et signal de lecture , le contrôleur de mémoire connecterait le bus de données à 32-bit port et 4 bytes à partir de l'adresse xyz sortirait du port au [~ # ~] mdr [~ # ~] .

Si [~ # ~] cpu [~ # ~] veut récupérer l'instruction suivante , il mettrait l'adresse sur le registre PC et envoie un signal d'extraction au contrôleur de mémoire . Lors de la réception de l'adresse et de la récupération du signal , le contrôleur de mémoire connecterait le bus de données à 8- port de bits et a single octet long opcode situé à l'adresse reçu coulerait du bélier [~ # ~] [~ # ~] dans le [~ # ~] cpu [~ # ~] [~ # ~] mdr [~ # ~] .

Voilà donc ce que cela signifie lorsque nous disons qu'un certain registre est adressable en mémoire ou octet adressable . Maintenant, que se passera-t-il lorsque vous mettrez, dites decimal 2 dans binary le [~ # ~] mar [~ # ~] avec l'intention de lire le Word 2, pas ( octet non 2)?

Word non 2 signifie octets 4, 5, 6, 7 pour 32-bit machine. Dans la mémoire physique réelle est octet adressable uniquement. Il y a donc une astuce pour gérer l'adressage de mots .

Lorsque [~ # ~] mars [~ # ~] est placé sur le bus d'adresse , son 32- les bits ne sont pas mappés sur le 32 lignes d'adresse (0-31 respectivement). Au lieu de cela, [~ # ~] mar [~ # ~] bit 0 est câblé au bus d'adresse line 2, [~ # ~] mars [~ # ~] bit 1 est câblé au bus d'adresse line 3 etc. La partie supérieure 2 bits de [~ # ~] mars [~ # ~] sont supprimés car ils ne sont nécessaires que pour Word adresses ci-dessus 2^32 dont aucun n'est légal pour nos 32 bit machine.
En utilisant ce mappage, lorsque [~ # ~] mar [~ # ~] est 1, address 4 est placé sur le bus , lorsque [~ # ~] mars [~ # ~] est 2, address 8 est placé sur le bus et ainsi de suite.

C'est un peu difficile au début à comprendre. Je l'ai appris de Andrew Tanenbaums s structuré organisation informatique.

31
KawaiKx

Cette image devrait être facile à comprendre: http://i.stack.imgur.com/rpB7N.png

Tout simplement,

• Dans le schéma d'adressage d'octets, le premier mot commence à l'adresse 0 et le deuxième mot commence à l'adresse 4.

? Dans le schéma d'adressage Word, tous les octets du premier mot sont situés à l'adresse 0 et tous les octets du deuxième mot sont situés à l'adresse 1.

Les avantages de l'adressabilité des octets sont évidents lorsque nous considérons les applications qui traitent les données un octet à la fois. L'accès à un seul octet dans un système adressable en octets ne nécessite que l'émission d'une seule adresse. Dans un système adressable Word à 16 bits, il est nécessaire de calculer d'abord l'adresse du mot contenant l'octet, d'extraire ce mot, puis d'extraire l'octet du mot à deux octets. Bien que les processus d'extraction d'octets soient bien compris, ils sont moins efficaces que l'accès direct à l'octet. Pour cette raison, de nombreuses machines modernes sont adressables en octets.

8
Maaverik

L'adressabilité est la taille d'une unité de mémoire qui a sa propre adresse. C'est également le plus petit bloc de mémoire que vous pouvez modifier sans affecter ses voisins.

Par exemple: une machine où les octets sont les 8 bits normaux et la taille du mot = 4 octets. S'il s'agit d'une machine adressable par mot, il n'y a rien de tel que l'adresse du deuxième octet d'un int. Traiter les chaînes (par exemple, un tableau comme char str[]) devient gênant, car vous stockez toujours des caractères regroupés. Modifier simplement str[1] signifie charger le mot qui le contient, effectuer des opérations de décalage/et/ou pour appliquer la modification, puis effectuer un magasin Word.

Notez que ceci est différent d'une machine qui n'autorise pas le chargement/stockage de mots non alignés (où les 2 bits bas d'une adresse Word doivent être 0). Ces machines ont généralement une instruction de chargement/stockage d'octets. Nous parlons de machines sans même cela.

Les adresses CPU peuvent en fait toujours inclure les bits faibles, mais nécessitent qu'elles soient toujours égales à zéro (ou les ignorer). Cependant, après avoir vérifié qu'ils sont nuls, le pourrait être ignoré, de sorte que le reste du système de mémoire ne voit que l'adresse Word, où deux mots adjacents ont une adresse qui diffère de 1 (pas 4). Cependant, sur un processeur 16 bits où un registre ne peut contenir que 64 000 adresses différentes, vous ne feriez probablement pas cela. Chaque adresse CPU distincte ferait référence à 2 octets de mémoire différents, au lieu de supprimer le bit faible. 2 Mo de mémoire adressable par mot vous permettrait d'adresser 128 Ko de mémoire, au lieu de seulement 64 Ko avec une mémoire adressable en octets.

Fait amusant: ARM utilisé pour utiliser les 2 bits bas d'une adresse comme contrôle aléatoire pour les charges Word non alignées. (Mais il y avait toujours des instructions de chargement/stockage d'octets.)


Voir également:


Notez que la mémoire adressable par bit peut exister, mais pas. Les octets 8 bits sont désormais presque universellement standard. (Les anciens ordinateurs avaient parfois des octets plus gros, voir la section historique de article Byte de wikipedia .)

2
Peter Cordes