|
Gerenciamento
de Memória
A MMU (memory
management unit)
- controla o acesso de memória externa
- responsável pela tradução do endereço virtual para o endereço físico
- assim como a checagem de permissão de acesso.
O controle
detalhado do sistema e obtido através das tabelas de tradução armazenada
na memória em estruturas de cache, denominado de TLBs (Translation
Lookaside Buffers).
Ao ser gerado
um acesso a memória pelo processador ARM, a MMU procura o endereço virtual
de acesso na TLB. Caso a TLB não contenha a entrada para o endereço
virtual, o hardware e invocado, retornando a tradução e a permissão de
acesso da tabela de tradução na memória principal. A informação retornada
e colocada a TLB em uma entrada não utilizada, ou sobrescrevendo alguma
entrada existente.
A MMU pode
ser habilitada ou desabilitada alterando o mapeamento de endereço virtual
para físico.
Ao
desabilitar a MMU, os acessos a memória passam a ser tratados da seguinte
forma:
• A aplicação e que determina se o uso de caches e buffers de escrita
serão habilitados ou não;
• Não são realizadas verificações de permissão de acesso a memória, e não
são mais gerados sinais de abortos pela MMU;
• O endereço físico e igual ao endereço virtual, para todos os acessos.
PROCESSO DE
TRADUÇAO
A MMU suporta
acessos de memória baseados em :
- Seções compreendem blocos de memória de 1MB.
- Paginas podem ter três tamanhos diferentes:
• Minúsculas: compreendem blocos de memória de 1KB;
• Pequenas: compreendem blocos de memória de 4 KB (com o controle de
acesso dividido em subpáginas de 1KB);
• Grandes: compreendem blocos de memória de 64 KB (com o controle de
acesso dividido em subpáginas de 16KB).
Uma coleção
de seções, de paginas grandes e de paginas pequenas e chamada de domínio.
O acesso a cada domínio e controlado pelo registrador 3 do CP15, sendo que
cada campo permite habilitar ou desabilitar o acesso ao domínio inteiro
rapidamente. Assim, o mecanismo de troca de contexto entre processos e
bastante eficiente, já que áreas completas de memória podem ser colocadas
e retiradas da memória virtual rapidamente.
A tabela de
tradução mantida em memória e dividida em dois níveis:
1. Primeiro nível: armazena traduções de seções e ponteiros para tabelas
do segundo nível;
2. Segundo nível: armazena traduções de paginas pequenas e grandes. Existe
um tipo desse nível que pode armazenar a tradução de paginas minúsculas. O
processo de tradução sempre começa do mesmo jeito (com um fetiche no
primeiro nível) em seqüência existem quatro formas de realizar a tradução
de endereços e a verificação de permissão. Estas maneiras dependem se o
endereço esta marcado como um acesso mapeado a seção (que requer somente
um fetiche no primeiro nível) ou a pagina (que requer um fetiche no nível
segundo também), sendo que se for mapeado a pagina, pode ser pagina grande,
pequena ou minúscula.
Restrições de
memória podem parar a execução do ARM
-
falha da MMU (MMU detecta a restrição e sinaliza para o processador) podem
ser:
- falha de alinhamento,
- falha de tradução,
- falha de domínio e
- falha de permissão.
- aborto externo (o sistema externo de memória sinaliza um acesso ilegal a
memória). - fetiche de linha,
- acessos a memória e
- acessos a tabela de tradução.
Registradores
específicos para falhas:
1.
FAR (Fault Adress Register): onde e escrito o endereço que causou a falha;
2. FSR (Fault Status Register): e atualizado com status de falha. A
arquitetura ARM também define um pino para abortos externos, permitindo
que os acessos de leitura, escritas sem buffer, descritor de fetiche de
primeiro nível, descriptor de fetiche de segundo nível e semáforos em
áreas de memória possam ser abortados externamente e reiniciados de forma
segura.
Os
registradores 1 (alguns bits),2,3,4,5,6,8 e 10 do CP15 controlam a MMU.
• Registrador 1: habilita/desabilita MMU;
• Registrador 2: fornece o endereço físico da tabela de tradução de
primeiro nível atualmente ativa a partir do valor dos 18 bits mais
significativos;
• Registrador 3: cada dois bits definem a permissão de acesso para cada
domínio (coleção de seções, páginas grandes e pequenas).
• Registrador 4: reservado;
• Registrador 5: status de falha (FSR);
• Registrador 6: embire¸co de falha (FAR);
• Registrador 8: utilizado para controlar TLBs;
• Registrador 10: permite que os resultados de uma busca nas tabelas de
tradução sejam carregados na TLB de uma forma que não sejam sobrescritos
pelos resultados de buscas posteriores.
¡@
Voltar
|