Como é exibida a mensagem “CPU não suportada instalada”?

55

Eu tenho uma CPU sem suporte inserido na minha máquina e eu recebo este erro enquanto meu PC está inicializando: Unsupported CPU installed. Minha pergunta não é como corrigi-lo, mas:

Como essa mensagem de erro é exibida se a CPU não está em uso? O BIOS pode funcionar sem uma CPU?

David
fonte
13
Obviamente, a CPU é boa o suficiente para executar a rotina de verificação da CPU e exibir algum texto na tela, mas não é suficiente para inicializar um sistema operacional real no seu hardware.
Dmitry Grigoryev
22
@DmitryGrigoryev "Obviamente, a CPU não é [...] boa o suficiente para inicializar um sistema operacional real no seu hardware." Não necessariamente tão óbvio. E se eu quiser inicializar, digamos, FreeDOS? O que o BIOS tem a dizer sobre o que eu inicializo no PC? Há uma razão pela qual qualquer gerenciador de inicialização MBR, ainda hoje, é executado inicialmente no modo real.
um CVn
7
@ MichaelKjörling Suponho que o fabricante do BIOS decidiu que dar suporte ao TPM e garantir que os usuários do Windows estejam felizes é mais importante do que permitir que você inicialize o FreeDOS.
Dmitry Grigoryev
3
@ MichaelKjörling: O BIOS pode conter patches de microcódigo que não se aplicam. Não há como prever a usabilidade da CPU naquele momento.
precisa saber é o seguinte
2
Qual CPU está instalada e em que placa-mãe? Por exemplo, você instalou de algum modo um processador Coffee Lake em uma placa Z270 ou Z170? (Essa combinação não trabalho, porque Coffee Lake e seu chipset Z370 fez alterações incompatíveis para a pinagem soquete, apesar de usar o mesmo socket LGA1151 da física.)
bwDraco

Respostas:

50

Não, o BIOS não pode funcionar sem a CPU.

A primeira coisa que o computador faz quando o liga é verificar se as conexões entre a CPU e a RAM estão boas. É uma verificação elétrica simples de que todas as saídas da linha de barramento estão conectadas às entradas corretas. Se essa verificação simples não for aprovada, você receberá um código de bipe (ou possivelmente um display de LED em algumas placas-mãe). Essa verificação não requer a CPU; no entanto, sem a CPU presente, você pode nem receber códigos de bipe, pois isso exige alguma medida de processamento (depende da placa-mãe).

No entanto, uma vez que essas coisas são verificadas, a CPU inicia a execução do programa contido na BIOS ROM que executa algumas verificações adicionais de nível superior (como se o tempo da memória funciona, se o firmware adicional para os dispositivos internos pode ser carregado corretamente etc.). Este programa ROM está escrito em linguagem assembly x86 e não exigem a CPU para executá-lo.

O que aconteceu no seu caso é que a CPU é eletricamente compatível com a placa-mãe e funciona, mas não possui suporte a recursos de baixo nível dos quais a placa-mãe depende. Talvez você tenha usado uma CPU que possui um TDP maior (gera mais calor) do que a placa-mãe pode suportar, tem mais núcleos do que o BIOS sabe inicializar ou possivelmente não suporta algum estado de energia que o BIOS está tentando definir. Você não mencionou qual combinação de CPU / placa-mãe está usando.

Em qualquer caso, a CPU está fornecendo suporte suficiente ao BIOS para executar os programas armazenados em sua ROM (incluindo mover bytes para dentro e para fora da memória de vídeo). Simplesmente não pode ir além disso.

Provavelmente está apenas verificando a família e identificando as IDs do processador em uma lista interna de tipos de CPU suportados. Em muitos casos, isso pode ser corrigido com uma atualização do BIOS. Mas você precisa inserir primeiro uma CPU suportada para fazer a piscada.

Wes Sayeed
fonte
21
Eu acho que partes importantes desta resposta estão erradas. O BIOS não pode operar sem uma CPU, pois é o primeiro programa que a CPU está executando . Não pode fazer nada por si só. ( Sem uma CPU, nenhum código de bipe ocorre , BTW; ele pode fazer códigos de bipe sem RAM devido a uma cuidadosa inicialização apenas com registros). A mensagem é provavelmente porque espera recursos da CPU que ela não fornece, mas devido ao fato de ser um x86, pode ser feita uma inicialização suficiente para imprimir a mensagem.
precisa saber é o seguinte
21
Um fabricante de placas-mãe pode criar um sistema analógico simples que emite um bipe 5 segundos após a inicialização, a menos que seja desativado ativamente pelo BIOS. Portanto, tecnicamente, não seria um recurso do BIOS, mas mais um recurso de falta de BIOS.
precisa saber é o seguinte
5
Mesmo após a edição, isso não está correto: é uma verificação elétrica simples de que todas as saídas da linha de barramento estão conectadas às entradas corretas. Se essa verificação simples não for aprovada, você receberá um código de bipe (ou possivelmente um display de LED em algumas placas-mãe). Essa verificação não requer a CPU… Além disso, não é o BIOS que inicia a execução de um programa na ROM, a CPU faz isso e este programa é o BIOS. Desculpe por nitpicking, mas pela sua resposta, parece que o BIOS é algum hardware que é parcialmente independente da CPU, quando na verdade, o BIOS é "apenas" um programa em ROM (ou flash).
precisa saber é o seguinte
5
@TobySpeight: Não é mágico. Apenas mais uma CPU. É um EC, um controlador incorporado, como todos os laptops. Em um laptop, ele gerencia a carga da bateria e as luzes de status. Em uma área de trabalho, ele pode gerenciar atualizações do BIOS. Às vezes, eles também gerenciam as configurações de energia da placa e coisas como portas de carregamento USB.
Zan Lynx
4
@ WesSayeed: Tem certeza de que é esse o caso? Como o AFAIK, não existe uma "verificação de barramento", pois uma verificação de fio elétrico puro exigiria modificações muito caras nos chips DRAM e forneceria pouco valor extra. Assim que a CPU tiver energia, ela começará a ler e executar as instruções da BIOS ROM, que lerá o SPD de cada DIMM e as configurações da CMOS RAM e tentará inicializar o controlador DRAM. Em seguida, ele testará rapidamente a DRAM (POST), seguida pela inicialização de todos os outros periféricos relevantes. Veja este vídeo: youtube.com/watch?v=xc08SN6Dhz4
mic_e 15/01
11

Provavelmente, porque o recurso não suportado é do modo protegido, mas no momento em que exibe essa mensagem, ela ainda não foi inserida e ainda está no modo 8086. Portanto, ele não funciona SEM CPU, o BIOS é apenas um programa, não pode funcionar sem uma CPU. Só que ele detectou que não podia passar de um certo ponto da execução e parou antes de chegar a esse lugar.

Explicarei: os primeiros PCs DOS não tinham todos os modos de execução complicados necessários para o uso correto de multitarefa e multiusuário. Quando a Intel o introduziu em suas CPUs, eles queriam preservar a compatibilidade com CPUs mais antigas. É por isso que eles introduziram esses modos: eles iniciam uma CPU 8086, fazem alguns testes e inicializam e só então entram no modo protegido.

Camion
fonte
3
Provavelmente, não estão faltando extensões do conjunto de instruções que são o problema. É mais provável que algo como uma CPU muito nova para o BIOS (por exemplo, um IvyBridge em um mobo Sandybridge sem um BIOS atualizado), por isso não sabe como programar suas configurações de controle corretamente. (por exemplo, os registros de configuração de gerenciamento de energia da CPU que definem seus limites de potência para o Turbo, o tempo de DRAM do controlador de memória ou qualquer outra coisa. E se a CPU for muito nova, pode haver coisas novas que o BIOS deve fazer, mas que Além disso, o hardware gráfico é diferente nas novas CPUs.
Peter Cordes
8

"CPU não suportada" não informa que a CPU não está funcionando. Provavelmente significa que o firmware na placa-mãe (BIOS ou UEFI) executou algum código na CPU que determinou que a CPU é incompatível com alguns recursos específicos em que a placa-mãe se baseia durante a operação normal. Ou simplesmente que a placa-mãe não foi testada com esta CPU e o fabricante não quer arriscar.

Mas nada disso significa que a CPU não pode executar instruções no momento da inicialização. Por exemplo, todas as CPUs x86 modernas têm uma instrução CPUID que pode ser usada para determinar se vários recursos do processador estão disponíveis. O código de inicialização pode executar esta instrução e exibir uma mensagem de erro se os recursos necessários não estiverem disponíveis.

Artelius
fonte
... e quando Artelius escreve "CPUs modernas x86", se podemos confiar no parágrafo introdutório da Wikipedia sobre o assunto, isso se refere a algo mais recente do que as CPUs Pentium de 1993 ou 80486SL, que parecem certas. Observe que, aparentemente (eu não verifiquei a documentação da Intel para verificar), o CPUID depende do registro EAX, que foi introduzido com o 80386 em 1985 ...
um CVn
-10

O BIOS possui uma lista de verificação (POST) que ele exibe para inicializar todas as partes do computador. Quando eles não passam nas verificações, você recebe um erro como o seu. Parte do conjunto de instruções POST é atribuir uma interrupção ao componente. Se todos os componentes tiverem interrupções corretamente, o sistema operacional será carregado e as interrupções serão passadas para o sistema operacional para que ele possa interagir com os componentes. Esta é uma versão simplificada do que está acontecendo por questões de brevidade. Aqui está uma lista mais detalhada do que está acontecendo: detalhes da inicialização

O BIOS tem controle inicial dos dispositivos para verificar e exibir erros, se necessário. Muitos dos erros que eu vi são bipes ou LEDs piscantes que precisam ser procurados quanto ao seu significado. Geralmente não mostra o erro no monitor como no seu caso (e se a placa de vídeo for o problema). O BIOS tem a capacidade de executar apenas a sequência de inicialização mais básica e, em alguns casos, retransmitir apenas o mais básico dos códigos de erro. O BIOS já possui as interrupções para os componentes de trabalho, como indicado acima, portanto, não é necessário que a CPU processe nada para enviar um sinal usando a placa-mãe para produzir um sinal sonoro ou uma luz intermitente ou, no seu caso, a placa de vídeo para exibir um mensagem.

Musselman
fonte
4
Isto está incorreto. O BIOS não pode fazer algo tão complexo quanto exibir informações na tela sem que alguns recursos de processamento rudimentares da CPU funcionem corretamente.
21318 Wes Wes
6
Você parece ter a impressão de que interrupções são usadas para controlar o hardware. Eles não são. Além disso, as interrupções são muito feitas através da CPU; portanto, se a CPU não puder executar o código, não poderá executar uma interrupção (que é pouco mais que uma instrução de salto indireto levemente glorificada) e certamente não seria capaz para configurar qualquer um dos vetores de interrupção. É improvável que o BIOS seja capaz de configurar a atualização da memória, portanto, é improvável que a memória em que os vetores de interrupção sejam mantidos (em x86, o 1 KiB mais baixo do espaço de endereço) seja utilizável.
um CVn
6
Há uma questão mais fundamental com esta resposta: o BIOS é simplesmente um código executado na CPU. Não é separado da CPU e não pode agir por conta própria.
precisa saber é o seguinte