La différence entre le mot adressable et d'octets adressables

quelqu'un Peut m'expliquer quelle est la différence entre Word et Byte adressable? Comment est-il lié à la taille de la mémoire etc.?

21
demandé sur Peter Cordes 2010-04-27 23:39:05

3 réponses

Mémoireadressable. C'est la seule façon dont nous pouvons utiliser mémoire.

En réalité, mémoire n'est byte adressable. Il signifie:

  • adresse binaire toujours a single byte une seule.
  • mota group ofoctets -2, 4,8 selon bus de données size of le CPU.

Pour comprendre l' opération de mémoire entièrement, vous devez être familier avec les divers registres CPU et ports mémoire RAM. Je suppose que vous connaissez leur signification:


  • MAR (registre des adresses de mémoire)
  • MDR ( registre de données de mémoire)
  • PC (compteur de programme, s'inscrire)
  • MBR (mémoire tampon de vous inscrire)

RAM a two types de ports mémoire:

  1. 32-bits/adresses
  2. 8-bit OPCODE.

Supposons que CPU veut lire amot (disons 4octets) de l' adressexyz à partir de. CPU serait de mettre le adresse sur le MAR, envoie un lire la mémoire du signalmémoire contrôleur puce. Sur réception de l' adresse et lire signal,contrôleur de mémoire se connecter bus de données32-bit port et 4 bytes à partir de adressexyz sortirait de la port pour le MDR.

Si le CPU veut aller chercher les l'instruction, il mettrait le adresse sur le PC vous inscrire et envoie un fetch signalcontrôleur de mémoire. Sur réception de l' adresse fetch signal,contrôleur de mémoire se connecter bus de données8bits port et a single octets opcode situé à adresse reçues sortiraient de la RAM dans le CPU MDR.

donc c'est ce que ça veut dire quand on dit un certain s'inscriremémoire adressable ou octets adressables. Maintenant, que se passera - t-il quand vous mettrez, dites decimal 2binary sur le MAR avec l'intention de lire le mot2, et non pas ( byte aucun 2)?

Mot aucun 2 signifie octets4,5,6,732-bit de la machine. réel de la mémoire physiqueoctets adressables une seule. Il y a donc un truc à manier!--43-->mot d'adressage.

Quand MAR est placé sur le adresse de bus, son 32 - bits ne pas la carte sur le 32lignes d'adresse (0-31 respectivement). Au lieu de cela, MARbit 0 connexion à adresse de busline 2, MARbit 1 connexion à adresse de busline 3 et ainsi de suite. La partie supérieure 2 bits MAR sont rejetés car ils ne sont nécessaires que pour adresses des mots2^32 dont aucun n'est légal pour notre 32 bit de la machine.

L'utilisation de ce cartographie, lorsque MAR1,address 4 est mis sur l' bus lorsque MAR2, address 8 est mis sur l' bus et ainsi de suite.

C'est un peu difficile au début pour comprendre. Je l'ai appris à partir d' Andrew Tanenbaumsstructurée organisation informatique.

26
répondu KawaiKx 2018-05-31 13:34:41

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

il suffit de mettre,

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

• Dans le mot d'adressage, tous les octets du premier mot sont situés dans l'adresse 0, et tous les octets du second mot sont situés dans l'adresse 1.

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

2
répondu Maaverik 2016-02-06 04:51:05

Résolution est de la taille d'une unité de mémoire qui a sa propre adresse. C'est aussi le plus petit morceau 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. Si c'est une machine adressable à un mot, il n'y a rien de tel que l'adresse du second octet d'un int. Traiter avec des chaînes (par exemple un tableau comme char str[]) devient gênant, parce que vous stockez encore des caractères emballés ensemble. Modifier juste str[1] signifie Charger le mot qui le contient, effectuer des opérations de changement/et/ou pour appliquer le changement, puis faire un magasin de mots.

notez que ceci est différent d'une machine qui ne permet pas de charger/stocker un mot non aligné (où les 2 bits bas d'une adresse mot doivent être 0). Ces machines ont généralement une instruction de chargement/stockage byte. On parle de machines sans même ça.

les adresses CPU peuvent encore inclure les bits bas, mais exigent qu'ils soient toujours zéro (ou ignorez-les). Cependant, après avoir vérifié qu'ils sont à zéro, le reste du système mémoire pourrait être éliminé, de sorte que le reste du système ne voit que l'adresse du mot, où deux mots adjacents ont une adresse qui diffère de 1 (Pas 4). Cependant, sur un CPU 16 bits où un registre ne peut contenir que 64k d'adresses différentes, vous ne le feriez probablement pas. Chaque adresse CPU séparée ferait référence à 2 octets de mémoire différents, au lieu de rejeter le bit bas. 2B une mémoire adressable par mot vous permettrait d'adresser 128kiB de mémoire, au lieu de 64kiB avec une mémoire adressable par byte.

fait amusant: bras utilisé pour utiliser les 2 bits bas d'une adresse comme un contrôle de mélange pour des charges de mots non alignées. (Mais il y avait toujours des instructions de chargement/stockage.)


Voir aussi:


notez que la mémoire adressable en bits peut exister, mais n'existe pas. Les octets 8 bits sont presque universellement standards maintenant. (Les anciens ordinateurs avaient parfois des octets plus grands, voir la section Histoire de wikipedia Byte article.)

1
répondu Peter Cordes 2016-08-25 01:27:33