Para que o código do BIOS seja importante, ele deve ser avaliado pelo processador. No entanto, o próprio processador precisa trabalhar para obter acesso ao código do BIOS, já que a CPU executa apenas as instruções fornecidas, algo deve fornecer as instruções à CPU (já que não consigo imaginar uma maneira de obter instruções " "do BIOS para a CPU sem nada no meio).
Onde estão as instruções para carregar o BIOS e passar o controle para ele armazenadas e quem as passa para a CPU para que a CPU possa pré-executá-las?
computer-architecture
cpu
Dmitry
fonte
fonte
Respostas:
1. (Um resumo das respostas nos comentários de Jukka)
O código de inicialização é armazenado na ROM (memória não volátil) em um endereço fixo X.
Quando você ativa o sinal de "redefinição" na CPU, a CPU inicializa seus registros com determinados valores codificados. O ponteiro de instruções é um desses registros que são inicializados para determinados valores codificados. Em essência, o fabricante da CPU escolhe esse endereço codificado X. Portanto, quando você redefine sua CPU, o ponteiro da instrução é redefinido para o mesmo endereço fixo X. A CPU começa a executar as instruções como de costume: busque a próxima instrução no endereço X , decodifique, execute, etc
Então, quem montar um computador completo deve garantir que exista algo útil no endereço X (por exemplo, um chip de memória ROM com código de inicialização significativo).
2. Elaboração
A CPU possui uma maneira muito simples de trabalhar, conhecida como ciclo FETCH-EXECUTE:
(a) FETCH : Vai para a memória e traz a instrução que está no endereço [PC]. (PC é o nome de um registro interno da CPU; contém o endereço da instrução que precisamos executar a seguir ..).← PC + 1. (*)
(b) Execute : O PC executa a instrução que acabou de recuperar da memória
(c) PC
(d) Volte para (a).
Esse loop de busca e execução acontece o tempo todo, independentemente do programa que você está executando. Em particular, quando a CPU é inicializada (digamos, quando a energia passa de 0 a Vcc), a CPU simplesmente começa a executar o loop acima.
O valor inicial do PC depende da CPU específica. Pode ser que a CPU ative com PC = 0 ou PC = 0xFFF0 (como acontece com a família X86 da Intel) ou com qualquer outro valor PC =PCi n i t . Se você pressionar o botão de reset ou desligar e ligar novamente, a CPU restaura o PC ao seu valor inicialPCi n i t e a CPU começa a executar o programa que está na memória no endereço PCi n i t , através do loop de busca e execução.
Agora, é tarefa do designer do computador garantir que o BIOS esteja na memória no endereçoPCi n i t . O BIOS geralmente reside em uma memória não volátil, portanto sempre existe um programa para ser executado nesse endereço, mesmo se você desligar e ligar a alimentação (isso exclui a RAM, mas não o BIOS. É mais difícil excluir / alterar o BIOS, embora possível e ocorra, por exemplo, quando o dispositivo atualiza o "firmware").
(*) Avançar o PC em +1 pressupõe que cada instrução ocupe 1 endereço do espaço na memória. Raramente é o caso. Em sistemas reais, podemos ver aqui PC + 4 (como no 32b MIPS) ou PC + x (com
fonte