Quem carrega o BIOS na RAM durante a inicialização do computador

8

Quando o computador inicia, o código no BIOS é executado primeiro. No entanto, como o código do BIOS é carregado na RAM para execução?

Eu me referi a esta pergunta - O BIOS é lido a partir do chip do BIOS ou copiado para a RAM na inicialização? . No entanto, isso me confundiu mais. Se o BIOS é carregado a partir da ROM e a ROM é um chip separado, qual é o sentido de falar sobre endereços de segmento na RAM? Além disso, onde está o código do BIOS carregado - ele está nos últimos 1 MiB de espaço de endereço em modo real ou em algum outro local?

Se alguém pudesse listar as etapas desde a inicialização do computador até a execução das primeiras instruções do BIOS, incluindo os endereços de memória usados, seria muito útil

Cygnus
fonte

Respostas:

7

Como escrevi em minha resposta a essa pergunta, a sabedoria popular recebida sobre o assunto - como infelizmente exemplificada por outras respostas lá (e em outros lugares do SuperUser) - está presa no mundo como em torno de 1991, apesar da riqueza de referências técnicas disponíveis que explicam como é agora o contrário.

Você não ficaria tão confuso se tivesse lido minha resposta, porque em primeiro lugar não estaria perguntando sobre o "BIOS carregado da ROM".

O seu "chip BIOS" não é ROM; não há código de máquina entre a inicialização do processador e a primeira instrução no firmware; e o "M" em "RAM" e "ROM" significa "memória".

Como escrevi antes, nos PCs modernos, o firmware da máquina é mantido em RAM não volátil . Não é ROM como costumava ser. Veja a resposta anterior para obter detalhes do chip NVRAM conectado ao barramento LPC. (Por exemplo: Em uma máquina desmontada ao meu lado enquanto digito isso, a NVRAM que segura o firmware é um Pm49FL004T, um chip LPC Flash RAM.)

As CPUs de 32 bits não iniciam no modo real e não iniciam com um endereço abaixo da linha de 1MiB. Isso é um lixo desatualizado de décadas dos tempos dos processadores x86 de 16 bits. Eles começam no que é conhecido coloquialmente como modo irreal e, novamente, em minha resposta anterior, dei os detalhes do que realmente tem sido o caso desde o advento do 80386 . Eles carregam sua primeira instrução de um endereço que está de fato na parte superior do espaço de endereço de 32 bits FFFFFFF0,.

Na minha resposta anterior, eu lhe disse em detalhes onde o firmware da máquina é principalmente mapeado no espaço de endereço físico em máquinas x86 de 32 bits e 64 bits. Lembre-se: RAM e ROM são memória . Endereços físicos são endereços de memória , no barramento do sistema. Eles podem endereçar RAM ou ROM. (Eles podem até resolver outras coisas também, mas isso está apenas complicando esta discussão.) O endereço físico FFFFFFF0está 16 bytes abaixo do topo do intervalo de 512KiB, onde os 512KiB principais do firmware, na RAM não volátil, são sempre mapeados no barramento do sistema pelo "chipset".

Não há "carregamento" de algum chip mítico da ROM que ocorre na inicialização ou redefinição do processador. O chip que contém o firmware é RAM não volátil . Ele mantém seu conteúdo, escrito quando é "piscado", ao longo dos ciclos de energia. E a CPU apenas lê as instruções e os dados do firmware, através do barramento do sistema e de um barramento LPC (e possivelmente uma ponte LPC / FWH) conectada ao barramento do sistema através do chipset, usando um endereço de memória física.

Leitura adicional

JdeBP
fonte
Obrigado, isso parece muito mais claro para mim. No entanto, quando você diz que a RAM e os dados não voláteis estão sendo lidos, significa que o BIOS está acoplado à RAM de alguma forma? Cada chip de RAM vem com um BIOS? Sei que isso pode parecer estúpido, mas sou iniciante neste tópico.
Cygnus
Quando ele diz NVRAM (memória de acesso aleatório não volátil), está se referindo a uma tecnologia diferente da RAM usada como memória principal do sistema (DRAM). É um chip separado da RAM principal que contém o firmware mesmo quando desligado, portanto a parte "não volátil".
Dougvj
@Dougvj: Nesse caso, por que temos um endereço separado de FFFFFFF0 para ele? O tamanho da NVRAM não seria exatamente o tamanho do firmware?
Cygnus
Acho que suas perguntas são melhor tratadas como perguntas reais, não como comentários sobre essa resposta. Observe algumas das perguntas "relacionadas" à direita e, em seguida, faça uma pergunta que melhore sua compreensão. (Há certamente espaço em SuperUser para algumas perguntas + respostas sobre o básico do básico, parece de uma breve shufti.)
JdeBP
@JdeBP: Eu adicionei uma nova pergunta- superuser.com/questions/695769/…
Cygnus