Transferts mémoire entre CPU et RAM

a marqué ce sujet comme résolu.

Bonjour,

un mot d'un CPU actuel a souvent un taille de 32 ou 64 bits, tandis que, il me semble, les unités adressées de la RAM ont plutôt une taille de byte d'un octet.

Comment se déroule la lecture par le CPU d'une variable de plus d'un octet stocké dans la RAM ? Cela se passe-t-il en plusieurs cycle d'horloge ? Si oui, pourquoi les constructeurs de RAM n'ont-ils pas agrandi les unités de RAM à la taille d'un mot d'un CPU ?

Merci !

+0 -0

Salut.

Les transferts mémoire ont la même taille que le bus, ce qui correspond en général à un mot CPU. C'est pour cette raison que des langages comme C ajoutent du padding entre les membres d'une structure, pour éviter qu'un membre ne chevauche plusieurs mots et ainsi soit toujours chargé en un seul transfert.

Au passage, une lecture depuis la RAM est proche de la centaine de cycles d'un processeur moderne. La RAM est extrêmement lente, c'est pour ça qu'on a ajouté des hiérarchies de caches.

+0 -0

Mais si j'ai bien compris, l'élément pointé par une adresse quelconque fait en général un octet, non ? Ça signifie que si j'accède au contenu de l'adresse 0x0, sur mon bus de données de 32 bits, j'aurais le contenu pointé par les adresses de 0x0 à 0x3, c'est bien ça ?

Merci !

En fait la mémoire est souvent chargée en cache par pages de 4 ko voire 4 mo. Mais peu importe comment c'est géré en interne, tu adresses toujours un octet.

Society

Attention, il ne faut pas confondre les lignes de cache et les pages. Le transfert entre le cache et la RAM se fait par ligne de cache, soit quelques mots CPU (64 octets sur x86).

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte