Como um processador x86 se recupera do sono S2 / S3?


3

Eu estava lendo esta página sobre como os estados de suspensão funcionam no Windows e fiquei intrigado com o vetor de redefinição. Meu entendimento atual é esse;

Quando o sistema está em S2 / S3, o processador é totalmente desligado, os caches são perdidos e o barramento é pelo menos parado, se não totalmente desligado. O conteúdo da RAM é preservado para permitir um resumo rápido.

Em resumo, o processador lê o endereço armazenado no vetor de redefinição (em x86, isto é 0xFFFFFFF0), que geralmente é mapeado para a ROM . Salta para o endereço que acabou de ler e começa a executar.

Como é ROM, presumo que a memória não pode ser prontamente gravada e, portanto, deve permanecer semi-constante (excluindo flashes do BIOS, etc.)

Assim, o processador liga, lê um endereço da ROM, pula para esse endereço e inicia a execução (presumivelmente um POST ou outra inicialização).

Em algum momento ao longo do caminho, ele precisa voltar ao que estava executando antes de dormir.

Onde está o endereço para continuar armazenado e o que faz com que o processador procure lá?


bem, o S2 / S3 elimina todo o contexto da CPU para threads ativos anteriormente, portanto, não retoma nenhuma tarefa que estava sendo executada no momento em que entrou em suspensão. Esta é a principal distinção entre S2 / 3 e Hibernação (S4).
Frank Thomas

@FrankThomas Eu não acho que isso seja necessário para o S2. Você tem uma referência? Esta página diz In these states (S1-S3), volatile memory is kept refreshed to maintain the system state. Some components remain powered so the computer can wake from input from the keyboard, LAN, or a USB device.que estou ciente de que o Win8 desconecta o usuário antes de hibernar (S4) em vez de fazer um desligamento real, para que possa retomar rapidamente (terminar a sessão significa menos memória para gravar no disco = mais rápido)
básico

@FrankThomas Ambos editamos ao mesmo tempo. Estou ciente de que os caches / contexto da CPU são perdidos, a RAM deve ser preservada (embora os processos possam ou não ser finalizados anteriormente), mas como podemos passar do endereço no vetor de redefinição para um sistema em execução sem fazer uma inicialização? Pode não retomar todos os threads, mas em algum lugar ao longo do caminho, entrega o controle ao sistema operacional.
Basic
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.