I read that microcode is loaded in the processor on each reboot.
O BIOS pode emitir uma atualização de microcódigo durante a inicialização. Então, pode o sistema operacional. Freqüentemente essas atualizações são necessárias, especialmente com processadores Intel posteriores.
It resides on flash memory and when the machine is booted, it gets copied to the CPU. Or in the case of Linux, the OS itself has the microcode copy for the processor. But how does the microcode get copied to the processor?
Modern Intel e CPUs têm um mecanismo chamado "Model Specific Registers", e instruções especiais de CPU para ler (RDMSR) e escrever para eles (WRMSR). Embora esses registros afetem as configurações da CPU, gravar em uma específica com o endereço do novo microcódigo diz à CPU para ler uma região de memória e aplicar sobre o microcódigo existente.
All data moves in a computer by the consent of the CPU. CPU is given instructions in machine language. As microcode is imperative for execution of these machine language instructions, so without the microcode being present in the processor, how the instruction for accessing the flash memory and doing the consequent operations are done by CPU?
Existe sempre um microcódigo. O mecanismo acima atualiza o microcódigo. A Intel / AMD realmente não publica detalhes sobre como funciona, eles apenas fornecem um mecanismo de atualização. Obviamente, de alguma forma, está copiando um microcódigo da ROM para algum tipo de memória interna do processador. Mas existe algum microcódigo quando a CPU é iniciada. Alguns processadores recentes da Intel e possivelmente da AMD não funcionarão de forma confiável após a inicialização sem uma atualização de microcódigo feita pela BIOS, mas, evidentemente, funcionarão bem o suficiente para executar uma atualização inicial do microcódigo.
Does this mean that hard-wired non-microcoded instructions copy the microcode in real mode?
A configuração inicial do microcódigo é feita internamente pela CPU e nenhuma instrução é executada para conseguir isso. É configurado antes que a primeira instrução da CPU seja executada.
Para atualizar o BIOS, as instruções apropriadas de RDMSR e WRMSR devem ser executadas.
Referência : "Esta instrução deve ser executada no nível de privilégio 0 ou no modo de endereço real; uma exceção de proteção geral #GP (0) será gerada. " Se não for executado em modo real, deve ser feito no anel 0 ou no modo kernel. Você pode atualizar o microcódigo a qualquer momento.