De onde a CPU obtém suas primeiras instruções?

7

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?

Dmitry
fonte
3
Versão simplificada demais: o código de inicialização é armazenado na ROM em um endereço fixo X. Quando você redefine sua CPU, o ponteiro da instrução é redefinido no mesmo endereço fixo X. A CPU começa a executar as instruções normalmente: buscar a próxima instrução do endereço X, descodificar, executar, etc
Jukka Suomela
2
Quando você ativa o sinal de "redefinição" na CPU, a CPU inicializa seus registros para determinados valores codificados. O ponteiro de instrução é um desses registradores inicializados para certos valores codificados. Em essência, o fabricante da CPU escolhe esse endereço codificado X. Então, quem montar um computador completo deve garantir que haja algo útil no endereço X (por exemplo, um chip de memória ROM com código de inicialização significativo).
Jukka Suomela 24/09/16
11
Em essência, sim.
Jukka Suomela 24/09
2
Sim, a configuração tradicional é que parte do espaço de endereço da CPU é RAM (volátil) e parte é ROM (não volátil). E o valor inicial do contador do programa aponta para um endereço que está na ROM.
Jukka Suomela 24/09

Respostas:

6

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 ..).
(b) Execute : O PC executa a instrução que acabou de recuperar da memória
(c) PCPC + 1. (*)
(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 =PCEunEut. Se você pressionar o botão de reset ou desligar e ligar novamente, a CPU restaura o PC ao seu valor inicialPCEunEut e a CPU começa a executar o programa que está na memória no endereço PCEunEut, 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ço PCEunEut. 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 (comx{1 1,...,7} depende da própria instrução) como na família X86, etc.

Tocou.
fonte