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:
-
Descobre as BARs do dispositivo (registrador de endereço base). Cada dispositivo pode ter até seis BARs.
-
Para cada BAR, pergunta ao BAR quanto espaço de endereço ele precisa.
-
Atribui ao BAR um bloco de espaço de endereço.
-
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.