Una pagina è una regione di spazio di indirizzi virtuale e una cornice di pagina è una regione di memoria fisica. Una pagina che mappa una regione di memoria fisica deve avere le stesse dimensioni di quella parte di memoria fisica, altrimenti non ha senso.
Inoltre, in genere devono essere allineati correttamente. Se provi a mappare, diciamo, un frame di pagina da 2 Mb nella memoria virtuale, sia l'indirizzo virtuale che l'indirizzo fisico devono essere entrambi allineati a 2 Mb.
Molte CPU moderne supportano più di una dimensione di pagina e alcune possono supportare dimensioni di pagina diverse nello stesso spazio di indirizzi. L'attuale Intel x86-64, ad esempio, supporta dimensioni di pagina 4kb, 2Mb e 1Gb. Questi numeri non sono arbitrari; rappresentano lo spazio degli indirizzi coperto da diversi "livelli" nella tabella delle pagine multilivello. Allo stesso modo, ARM moderno supporta pagine da 4kb, 64kb e 1Mb, sebbene ARM non si riferisca alle pagine da 1Mb come "pagine" (sono "sezioni"). ARMv4 e ARMv5 supportano ulteriormente la suddivisione delle pagine in cosiddette "sottopagine"; questi non sono più disponibili in ARMv7.
È interessante notare che ci sono alcune altre cose che hanno spesso le stesse dimensioni della dimensione della pagina. Ovviamente una voce TLB ha le stesse dimensioni di una pagina o di un frame, poiché è concettualmente una cache per le voci della tabella delle pagine. Tuttavia, la dimensione della cache L1 è spesso determinata anche dalla dimensione della pagina.
Supponiamo che la cache L1 sia set-associativa (una cache a mappatura diretta è in realtà solo una cache associativa set a 1 via, quindi puoi pensare a questo come un caso limitante), quindi è spesso conveniente fare un "set" delle dimensioni di una pagina fisica. Supponiamo quindi che la dimensione della pagina sia 4kb e che la cache L1 sia una cache associativa set a 4 vie, quindi la dimensione "migliore" per la cache L1 è 16kb (che è quattro volte 4kb). Vedi se riesci ad allenarti da solo, questo potrebbe essere il caso.