Page prec.
Eléments des répertoires de tables de pages |
Fin de page |
Page suiv.
Divers |
Sur l'iAPX 386, la mémoire cache et son contrôleur sont extérieurs au processeur, mais l'unité de gestion mémoire (unité de segmentation + unité de pagination) est dans le processeur. La mémoire cache considère donc des adresses physiques et non des adresses virtuelles.
En fait il n'existe pas un seul cache, mais un système de plusieurs caches, correspondant à une fragmentation de la mémoire physique. En général, il existe un cache pour 16 Mo de mémoire physique. Une taille raisonnable de mémoire cache est de 64 Ko, ce qui représente 1/256ème du bloc.
Le principe de proximité conduit à considérer la mémoire principale comme un ensemble de blocs dont la taille peut varier en général de 2 à 16 octets. Cela signifie que, lorsqu'un octet particulier est requis par le processeur, ce sont les n octets du bloc qui le contient qui sont chargés simultanément. Dans les deux exemples ci-dessous nous considérerons des blocs de 4 octets. Puisque le cache ne contient qu'une partie des informations stockées dans la mémoire principale, il doit contenir deux sortes d'informations : l'information contenue dans la mémoire elle-même bien sûr, mais aussi l'adresse de la mémoire physique qui contient cette information.
Nous allons étudier trois méthodes d'organisation des caches mémoire : la mémoire cache totalement associative, la mémoire cache à accès direct et une solution intermédiaire, la mémoire cache à accès direct partiellement associative.
Mémoire cache totalement associative
Au total, 22 bits d'adresse sont mémorisés, qui représentent un index. Lorsqu'une adresse physique est nécessaire au processeur, l'index de 22 bits en est extrait et il est recherché par comparaison dans toute la table. S'il est présent, la valeur associée est obtenue immédiatement. S'il est absent, le bloc de 4 octets qui le contient doit être chargé à partir de la mémoire DRAM.
Cette méthode est inapplicable dans la pratique car les recherches séquentielles seraient trop longues (de l'ordre de N/2 comparaisons pour une taille N).
Mémoire cache à accès direct
Supposons par exemple que l'adresse physique 00 01 FF FEh soit nécessaire au processeur. Elle est décomposée en quatre parties :
La lecture dans la mémoire cache de l'adresse de 8 bits correspondant à la clé FFFCh indique que le numéro de bloc (01h) est le bon. La valeur 24682468h est dont immédiatement obtenue.0 0 0 1 F F F E
0000 0000 0000 0001 1111 1111 1111 1110l'octet de gauche 00h, qui indique qu'il s'agit du premier cache mémoire, le numéro 0lh du bloc de 64 Ko qui contient cette adresse (octet 2 de l'adresse), les 14 bits constituant la clé d'accès (valeur de la fonction de hash-code) : 1111 1111 1111 11, qui représentent l'adresse FFFCh du bloc des quatre octets qui correspondent à cette adresse (les deux bits de droite sont absents donc posés à 0), les 2 bits de droite 10 qui indiquent l'octet recherché dans le bloc de 4 octets.
Supposons maintenant que l'adresse 00 01 00 00 09h soit recherchée par le processeur. La valeur de la fonction de hash-code est 00 08h, et le bloc de 64 Ko qui correspond à cette clé dans la mémoire cache a pour numéro 00h, alors que l'octet 2 de l'adresse cherchée est 01h. Cela signifie que l'adresse correspondante n'est pas dans le cache. Elle doit donc être chargée à partir de la mémoire DRAM.
Page préc.
Eléments des répertoires de tables de pages |
Début de page |
Page suiv.
Divers |