Há mais de uma definição do tamanho do bloco para gravações de memória. Você pode considerar que é:
- a largura da instrução loja (armazenar byte, armazenar palavra,…), normalmente 1, 2, 4, 8 ou 16;
- a largura de uma linha cache , normalmente algo como 16 ou 64 bytes (e diferentes níveis de cache podem ter linhas diferentes larguras);
- a largura do barramento de memória , que não é diretamente observável em software;
- e possivelmente mais alguns sentidos razoáveis.
Nenhum deles está relacionado a um tamanho de página.
O tamanho da página é um atributo de uma página na MMU . A MMU traduz endereços virtuais (usados por programas) em endereços físicos (que designam um local físico na memória). O processo para traduzir um endereço virtual em um endereço físico é algo assim:
- Pesquise o endereço da tabela de descritores de primeiro nível.
- Extraia os bits de maior ordem do endereço virtual e use-os como um índice na tabela de descritores de primeiro nível.
- Decodifique o descritor L1 naquele índice, que produz o endereço de uma tabela de descritores de segundo nível.
- Extraia mais bits do endereço virtual e use-os como um índice na tabela de descritores de segundo nível.
- Decodifique o descritor L2 nesse índice, que produz o endereço do início de uma página. Uma página é uma unidade de memória fisicamente contígua que é descrita por uma entrada na tabela MMU.
- Mascare os bits restantes do endereço virtual com o endereço inicial da página para obter o endereço físico.
Arquiteturas comuns de 32 bits passam por dois níveis de tabela; arquiteturas comuns de 64 bits passam pelo 3. O Linux suporta até 4 níveis.
Algumas arquiteturas de CPU suportam tornar algumas páginas maiores, passando por menos níveis de indireção. Isso torna os acessos mais rápidos e mantém o tamanho das tabelas de páginas baixo, à custa de menos flexibilidade na alocação de memória. O ganho de tempo é mínimo para a maioria dos aplicativos, mas pode ser sentido em alguns aplicativos sensíveis ao desempenho que não se beneficiam da flexibilidade de páginas pequenas, como bancos de dados. Páginas enormes são páginas que passam por níveis menores que a quantidade normal e são correspondentemente maiores.
O software que está usando páginas grandes normalmente os solicita especificamente (por meio de sinalizadores para mmap
, consulte como o tamanho da página é determinado no espaço de endereço virtual? para mais alguns detalhes). Após essa solicitação inicial, não é necessário saber ou se preocupar com o tamanho da página. Em particular, os acessos à memória são tratados pela MMU: o software não está envolvido no momento do acesso.