La mémoire adressable par un processus ne correspond pas à l'adresse réelle physique, donc lorsqu'une instruction essaye de lire ou d'écrire un octet, il faut d'abords convertir l'adresse logique en adresse physique.
Pour cela, le processeur utilile une TLB (Translation Lookaside Buffer, à 2 niveaux sur i386 il me semble) qui donne l'adresse physique.
Généralement les pages font 4 Ko, les 10 premiers bits de l'adresse donne l'offset dans la première table, on trouve l'adresse de la seconde table. Les 10 bits suivants sont aussi utilisés comme offset dans cette seconde table pour obtenir d'adresse de la page physique. Il reste 12 bits (adressage sur 32 bits) qui donnent l'offset sur la page de 4 Ko (4Ko = 2^12).
Les différents paramêtre des TBL changent selon le mode et le processeur utilisé, mais le principe reste là. Les TLB consomment de la mémoire et demande au processeur d'aller lire pas mal d'information en RAM avant de pouvoir faire l'accès mémoire qui nous intéresse.
En utilisant des pages de 4Mo on gagne une plus grande vitesse d'accès aux informations puisqu'on supprime la dernière étape du TLB (offset sur la page de 24 bits, donc une seule table de TLB à consulter), ça fait des informations en moins à aller lire en RAM avant de pouvoir faire l'accès, ça réduit l'occupation mémoire des TLB (mais quand on fait des pages de 4 Mo, en général on gache quand même pas mal d'espace) et ça polue moins le cache du processeur avec du contenu qui n'est pas intéressant du point de vue du programme. Par contre, il faut que le processus ai besoin du bloc de 4Mo ou d'un multiple.
[^] # Re: Des pages de 4Mb ?
Posté par Sébastien Koechlin . En réponse à la dépêche quand AMD retrouve Intel .... Évalué à 10.
Pour cela, le processeur utilile une TLB (Translation Lookaside Buffer, à 2 niveaux sur i386 il me semble) qui donne l'adresse physique.
Généralement les pages font 4 Ko, les 10 premiers bits de l'adresse donne l'offset dans la première table, on trouve l'adresse de la seconde table. Les 10 bits suivants sont aussi utilisés comme offset dans cette seconde table pour obtenir d'adresse de la page physique. Il reste 12 bits (adressage sur 32 bits) qui donnent l'offset sur la page de 4 Ko (4Ko = 2^12).
Les différents paramêtre des TBL changent selon le mode et le processeur utilisé, mais le principe reste là. Les TLB consomment de la mémoire et demande au processeur d'aller lire pas mal d'information en RAM avant de pouvoir faire l'accès mémoire qui nous intéresse.
En utilisant des pages de 4Mo on gagne une plus grande vitesse d'accès aux informations puisqu'on supprime la dernière étape du TLB (offset sur la page de 24 bits, donc une seule table de TLB à consulter), ça fait des informations en moins à aller lire en RAM avant de pouvoir faire l'accès, ça réduit l'occupation mémoire des TLB (mais quand on fait des pages de 4 Mo, en général on gache quand même pas mal d'espace) et ça polue moins le cache du processeur avec du contenu qui n'est pas intéressant du point de vue du programme. Par contre, il faut que le processus ai besoin du bloc de 4Mo ou d'un multiple.