Como a memória é mapeada para determinado hardware? Como o MMIO é realizado exatamente?

3

Perceba que NÃO estou perguntando sobre como o MMIO (entrada / saída mapeada na memória) está configurado, mas perguntando como ele é mapeado, ou seja, o que o mapeia exatamente? Não o que é mapeado para o quê, eu posso usar um mapa de memória para o Google.

O que eu quero saber é, como quando você liga o computador pela primeira vez, o que exatamente "mapeia" a memória ou como isso funciona?

Basicamente, o que configura a memória ou "mapeia" para certos propósitos?

Eu tinha pensado originalmente que era firmware de inicialização, como BIOS ou EFI / UEFI, mas outro usuário em outro site me disse que tinha a ver com um controlador de memória. Isso é verdade?

Mas como, se em mais detalhes, se não for pedir muito? Muito obrigado a quem esclarecer!

    
por Dinosaur pawz 15.05.2013 / 03:31

1 resposta

7

Existem alguns passos. Primeiro, o BIOS descobre todos os dispositivos no sistema. Em seguida, ele interroga cada dispositivo para decidir se o BIOS configurará esse dispositivo e, em caso afirmativo, determinará a quantidade de espaço de endereço de memória, se houver, que o dispositivo precisa. A BIOS então atribui espaço para cada dispositivo e programa o decodificador de endereço escrevendo para sua BAR (registrador de endereço base).

Em suma, o BIOS:

  1. Descobre as BARs do dispositivo (registrador de endereço base). Cada dispositivo pode ter até seis BARs.

  2. Para cada BAR, pergunta ao BAR quanto espaço de endereço ele precisa.

  3. Atribui ao BAR um bloco de espaço de endereço.

  4. Programa a BAR com o endereço base do bloco de espaço de endereço de memória escolhido.

O decodificador de endereço do dispositivo agora responde a leituras e gravações dentro desse bloco de espaço de endereço. A partir daí, quando a CPU (ou qualquer dispositivo no sistema capaz de DMA) ler ou gravar em qualquer endereço dentro dessa faixa, o dispositivo responderá à solicitação.

Note que nenhuma memória é atribuída ao dispositivo. A memória está no dispositivo. É o espaço de endereço de memória atribuído ao dispositivo.

Você pode, é claro, encontrar o processo detalhado na página espaço de configuração PCI da Wikipédia.

    
por 15.05.2013 / 06:17

Tags