2013-05-18 5 views
0

Je tente d'en apprendre davantage sur l'alignement de la mémoire, sans beaucoup de succès, certes. J'utilise l'article this d'IBM.Granularité de l'accès à la mémoire à double octet

Quelqu'un peut-il s'il vous plaît me expliquer ce que cet extrait signifie de la section de granularité d'accès mémoire double octet:

Cependant, notez ce qui se passe lors de la lecture de l'adresse 1. Parce que l'adresse ne tombe pas uniformément sur la limite d'accès de la mémoire du processeur, le processeur a un travail supplémentaire à faire. Une telle adresse est connue comme une adresse non alignée. Comme l'adresse 1 n'est pas alignée, un processeur avec une granularité de deux octets doit effectuer un accès mémoire supplémentaire, ce qui ralentit l'opération.

Pourquoi un autre accès mémoire est-il dans l'ordre? Qu'est-ce que cela signifie par limite d'accès à la mémoire et même sur la limite d'accès à la mémoire?

J'ai une connaissance TRÈS limitée sur la CPU, comme je l'ai seulement fait avec la programmation de niveau supérieur (Objective-C et C++). Toute aide est grandement appréciée!

Merci!

+0

Avez-vous lu la partie précédente de l'article, où il décrit "granularité d'accès mémoire", avec un diagramme montrant comment le processeur accède à la mémoire? – Barmar

+0

Oui, mais je ne comprends pas pourquoi cela prendrait un autre appel. – foobar5512

Répondre

2

L'exemple décrit ce qui se passe lorsque vous essayez de lire un bloc de 4 octets consécutifs sur un processeur avec une granularité d'accès à deux octets. Sur ce type de CPU, la mémoire est accessible par paires d'octets, en commençant toujours par un octet pair.

Si vous essayez de lire le bloc en commençant par l'octet 0, il doit effectuer 2 lectures: octets 0-1 et octets 2-3.

Si vous essayez de lire le bloc commençant par l'octet 1, il doit effectuer 3 lectures: octets 0-1 (pour obtenir l'octet 1), octets 2-3 et octets 4-5 (pour obtenir l'octet 4) .

granularité d'accès mémoire est le nombre d'octets, il accède à la fois, et une limite d'accès mémoire est l'endroit où chacun de ces groupes d'octets commence. Les groupes d'octets sont toujours adressés à des multiples pairs de la granularité - si la granularité est à double octet, ils commencent sur des adresses paires, si la granularité quad-byte est multiple de 4.

Par analogie, considérons un immeuble d'appartements de 4 unités à chaque étage. Les unités 0-3 sont sur le plancher 0, les unités 4-7 sont sur le plancher 1, etc. Si vous voulez glisser un flyer sous les portes des unités 0-3, vous devez seulement aller à un étage. Mais si vous voulez glisser un dépliant sous 1-4, vous devez aller à 2 étages: étage 0 pour 1-3, étage 2 pour l'unité 4.

+0

Y at-il une raison pour laquelle il ne peut pas simplement commencer à 1. Par exemple, 1-2, 2-3. Ne serait-ce pas aussi 4 octets? Merci! – foobar5512

+0

Parce que ce n'est pas comment fonctionne l'accès à la mémoire. Le matériel est conçu pour accéder à la mémoire dans des segments spécifiques. – Barmar

+0

Oh, d'accord ... Merci pour votre aide! – foobar5512

Questions connexes