Halaman adalah wilayah ruang alamat virtual, dan bingkai halaman adalah wilayah memori fisik. Halaman yang memetakan wilayah memori fisik harus memiliki ukuran yang sama dengan potongan memori fisik itu, jika tidak, tidak ada gunanya.
Mereka juga biasanya harus disejajarkan dengan benar. Jika Anda mencoba memetakan, katakanlah, bingkai halaman 2Mb ke dalam memori virtual, alamat virtual dan alamat fisik keduanya harus selaras 2Mb.
Banyak CPU modern mendukung lebih dari satu ukuran halaman, dan beberapa dapat mendukung ukuran halaman yang berbeda dalam ruang alamat yang sama. Intel x86-64 saat ini, misalnya, mendukung ukuran halaman 4kb, 2Mb, dan 1Gb. Angka-angka ini tidak sewenang-wenang; mereka mewakili ruang alamat yang dicakup oleh "level" yang berbeda di tabel halaman multilevel. Demikian pula, ARM modern mendukung halaman 4kb, 64kb, dan 1Mb, meskipun ARM tidak merujuk ke halaman 1Mb sebagai "halaman" (itu adalah "bagian"). ARMv4 dan ARMv5 mendukung pemisahan halaman lebih jauh menjadi apa yang disebut "subhalaman"; ini tidak lagi tersedia di ARMv7.
Menariknya, ada beberapa hal lain yang seringkali ukurannya sama dengan ukuran halaman. Jelas entri TLB adalah ukuran yang sama dengan halaman atau bingkai, karena secara konseptual merupakan cache untuk entri tabel halaman. Namun, ukuran cache L1 sering ditentukan oleh ukuran halaman juga.
Misalkan cache L1 adalah set-asosiatif (cache yang dipetakan langsung benar-benar hanya set cache asosiatif 1-arah, sehingga Anda dapat menganggap ini sebagai kasus pembatas), maka sering kali lebih mudah untuk membuat satu "set" ukuran halaman fisik. Jadi misalkan ukuran halaman adalah 4kb, dan cache L1 adalah cache set-asosiatif 4-arah, maka ukuran "terbaik" untuk cache L1 adalah 16kb (empat kali 4kb). Lihat apakah Anda dapat berolahraga untuk diri sendiri, ini mungkin masalahnya.