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.?
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:
a single
octet uniquement.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:
[~ # ~] ram [~ # ~] a two
types de ports mémoire :
32-bits
pour données / adresses 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.
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.
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 .)