O BIOS é lido a partir do chip do BIOS ou copiado para a RAM na inicialização?

10

Quando você liga o computador pela primeira vez, o ciclo de busca / execução é configurado primeiro para buscar instruções do chip da BIOS diretamente no registro de instruções na CPU ou existe um circuito automático configurado para que, quando a energia for detectada, as instruções em o chip do BIOS é carregado automaticamente na RAM?

Atualizar

Acho que encontrei minha resposta aqui :

Depois que o sinal de reset é desligado, a CPU começa a operar. O código na RAM não pode ser executado, pois a RAM está vazia. Os fabricantes de CPU pré-programam o processador para sempre começar a executar o código no endereço "FFFF: 0000" (geralmente o BIOS da ROM) da ROM.

Portanto, a CPU está fisicamente configurada para buscar e executar o endereço de memória FFFF: 0000 na ROM assim que ligado.

mring
fonte
1
Se você encontrar uma resposta a si mesmo, não publicá-la como uma resposta abaixo, em vez de editá-lo na questão. (Você pode aceitar as suas próprias respostas depois de algum tempo.)
user1686
O livro Atualizando e reparando PCs menciona um local de memória, o primeiro que a CPU lê. E há um processo que os professores de CS antigos ensinam que ainda podem ser aplicados, chamados de bootstrapping, como quando se puxa pelos bootstraps, e é assim que base de) um sistema operacional é carregado.
barlop

Respostas:

3

A maioria das placas costumava ter uma opção no BIOS para configurar esse comportamento. Geralmente era chamado de sombreamento e, geralmente, era ativado por padrão. Acho que muitas placas não se dão ao trabalho de dar a você a opção hoje em dia e sempre fazem sombra. O motivo é que a RAM é mais rápida que a ROM, por isso acelera as coisas para copiá-lo para a RAM e executá-lo a partir daí.

Observe que a cópia não é feita por alguns circuitos mágicos, apenas pela própria bios quando começa a executar a partir da ROM inicialmente, apenas se copia para a RAM e continua executando a partir daí.

psusi
fonte
Então, pelo que entendi do que você disse, ao voltar à vida, a CPU lê instruções da ROM, cujas instruções dizem "Copie todas as instruções de inicialização aqui na ROM para a RAM e, em seguida, defina o contador do programa para esse e aquele endereço inicial na RAM ". Isso é certo?
mring
@psusi Você tem alguns links explicando o que você está falando? O sombreamento da CPU não está me afetando muito, e como ele pode ser configurado. E quando você está falando? Quando as placas-mãe tiveram essa opção? Você pode apontar para algum modelo de placa-mãe que tivesse essa opção?
barlop 15/09/11
18

Esse é outro caso em que a sabedoria popular recebida sobre o assunto, como infelizmente exemplificada pela psusiresposta e, de fato, parte da pergunta, está presa no mundo como era por volta de 1991, apesar da riqueza de referências técnicas disponíveis que explicam como está agora. de outra forma.

No mundo do final da década de 1980, o firmware da máquina - uma das duas coisas chamadas "BIOS" no mundo do PC compatível com IBM - estava de fato em um chip ROM no barramento ISA; e as CPUs realmente começaram a executar o código no endereço físico 000FFFF0, um local na "memória convencional" acessada através do ponteiro em modo real. F000:FFF0Este mundo se foi há muito tempo.

(O mundo que o autor da página da WWW que você apontou, S. Ebrahim Shubbar, vive erroneamente, apesar de escrever em 2002, é ainda mais antigo. As CPUs não começaram com a CS:IPcombinação FFFF:0000desde o 8086. O 80286 mudou isso para F000:FFF0(Mas o próprio mundo 80286 é o mundo altamente desatualizado do final dos anos 80, que a sabedoria popular ainda circula).

O seu "chip BIOS" é RAM; e sua CPU não é de 16 bits.

Nos PCs modernos, o firmware da máquina é mantido em RAM não volátil . O chip NVRAM está conectado ao barramento LPC (ou a uma interface dedicada "firmwware hub"), e a ponte LPC / FWH no "chipset" normalmente desativa os ciclos de gravação nele. "Piscando" o firmware envolve a configuração de registradores de chipset que permitem gravações na NVRAM e, em seguida, gravadas na NVRAM. (No Intel ICH10, por exemplo, o bit de registro do chipset que permite ciclos de gravação é chamado de BIOSWE"BIOS Write Enable". Existem alguns detalhes adicionais que vou pular por aqui, mas esse é o essencial.)

Os processadores x86 não começam a execução no local 000FFFF0desde os dias do 80286. As CPUs de 32 bits são iniciadas no que é conhecido coloquialmente como modo irreal . Embora o valor inicial do CSregistro após a redefinição seja F000, o descritor de segmento associado a esse registro inicialmente é mantido FFFF0000como seu endereço base. Portanto, o endereço físico que corresponde inicialmente ao endereço IP do CS: 16:16 F000:FFF0é de fato e existe desde os dias do 80386 FFFFFFF0,.

E é aí que o firmware da máquina é mapeado principalmente para o espaço de endereço físico em máquinas x86 de 32 bits e 64 bits. Há uma janela de 128KiB para o firmware na área de "memória convencional", mas a NVRAM que mantém o firmware da máquina pode ter até 16MiB (embora isso varia de acordo com o chipset) nos PCs modernos e é mapeada principalmente para os 16MiB do espaço de endereço físico imediatamente abaixo da linha 4GiB - ou seja, endereços físicos FF000000para FFFFFFFF. (Para usar o ICH10 como exemplo novamente: quanto desse espaço de endereço é mapeado para a NVRAM é controlado por um registro de chipset conhecido como FWH_DEC_EN"Firmware Hub Decode Enable", o registro. O firmware é codificado para reprogramar oFWH_DEC_ENregistre de acordo com o tamanho do chip NVRAM atual instalado na placa principal. Mas o topo 512KiB da NVRAM é sempre mapeada, para endereços físicos FFF80000para FFFFFFF, e não pode ser desativado.) O código executada inicialmente pelo processador imediatamente após vidas de reset na parte superior 64KiB deste intervalo de endereços 16MiB.

Quanto ao sombreamento do BIOS ROM (como é chamado - por barlopque acha que a CPU está sendo sombreada é um mistério): Sim, o acesso à NVRAM no barramento LPC ou o hub do firmware ainda não é tão rápido quanto o acesso ao sistema principal RAM (volátil). Mas os motivos pelos quais a sombra é importante diminuíram muito com os avanços de sistemas operacionais como OS / 2 e Windows NT - novamente no final da década de 1980 e no início da década de 90. Sistemas operacionais de modo real, como MS-DOS, PC-DOS, DR-DOS e outros, foram colocados em camadas sobre a funcionalidade de E / S fornecida pelo firmware da máquina. Portanto, o código do firmware e os dados somente leitura acabaram sendo acessados ​​muito em tempo de execução. Sistemas operacionais de modo protegido , como OS / 2 e Windows NT, dependem muito menosnos serviços fornecidos por firmware em tempo de execução. Portanto, o fato de o código executado fora da NVRAM e os dados somente leitura chegarem ao processador mais lentamente do que quando sombreados na RAM do sistema é um problema menor do que costumava ser.

Além disso, o firmware de código e dados que fazem depender não necessariamente ao vivo na parte de NVRAM mapeado para a parte do espaço de endereço físico, o já mencionado 128KiB janela "memória convencional", que é necessariamente mesmo shadowable em primeiro lugar. Os serviços de firmware no modo protegido nem todos precisam viver abaixo da linha de 1MiB no espaço de endereço físico, como os serviços de firmware no modo real, e alguns não. (E, claro, isso só seria possível fazer o mesmo truque com a área de espaço de endereço físico que eles fazem ao vivo em se há pelo menos 4GiB de RAM do sistema.)

Ironicamente, uma fonte mais precisa de informações sobre isso do que S. Ebrahim Shubbar escrevendo em 2002 é o livro de Phil Croucher The BIOS Companion de um ano antes em 2001. M. Croucher observa que Unices, Linux, Windows NT e "presumivelmente" (95 / 98) "" não se beneficiam da sombra ". Não é necessariamente nenhum benefício, mas é relativamente pouco em relação ao mundo das pessoas que executam o MS-DOS, PC-DOS e DR-DOS em modo real em máquinas 80286 de 16 bits em 1989.

JdeBP
fonte