Una página es una región de espacio de direcciones virtuales, y un marco de página es una región de memoria física. Una página que mapea una región de memoria física debe tener el mismo tamaño que esa pieza de memoria física, de lo contrario no tiene sentido.
También suelen estar alineados correctamente. Si intenta asignar, digamos, un marco de página de 2Mb a la memoria virtual, tanto la dirección virtual como la dirección física deben estar alineadas a 2Mb.
Muchas CPU modernas admiten más de un tamaño de página, y algunas pueden admitir diferentes tamaños de página en el mismo espacio de direcciones. Intel x86-64 actual, por ejemplo, admite tamaños de página de 4kb, 2Mb y 1Gb. Estos números no son arbitrarios; representan el espacio de direcciones cubierto por diferentes "niveles" en la tabla de páginas multinivel. Del mismo modo, ARM moderno admite páginas de 4 kb, 64 kb y 1 Mb, aunque ARM no se refiere a las páginas de 1 Mb como "páginas" (son "secciones"). ARMv4 y ARMv5 soportaron la división de páginas en las llamadas "subpáginas"; estos ya no están disponibles en ARMv7.
Curiosamente, hay algunas otras cosas que a menudo son del mismo tamaño que el tamaño de la página. Obviamente, una entrada TLB tiene el mismo tamaño que una página o marco, ya que conceptualmente es un caché para las entradas de la tabla de páginas. Sin embargo, el tamaño de la caché L1 a menudo también está determinado por el tamaño de la página.
Suponga que la caché L1 es asociativa de conjuntos (una caché de mapeo directo es realmente solo una caché asociativa de conjuntos de 1 vía, por lo que puede pensar en esto como un caso límite), entonces a menudo es conveniente hacer que un "conjunto" tenga el tamaño de Una página física. Supongamos que el tamaño de la página es de 4 kb, y la caché L1 es una caché asociativa de 4 vías, entonces el "mejor" tamaño para la caché L1 es 16 kb (que es cuatro veces 4 kb). Vea si puede resolverlo usted mismo, este podría ser el caso.