¿Cómo se muestra el mensaje "CPU no compatible instalada"?

55

Tengo una CPU sin soporte insertado en mi máquina y me sale este error mientras que mi PC está arrancando: Unsupported CPU installed. Mi pregunta no es cómo solucionarlo, sino más bien:

¿Cómo se muestra este mensaje de error si la CPU no está en uso? ¿Puede el BIOS funcionar sin una CPU?

David
fuente
13
Obviamente, la CPU es lo suficientemente buena como para ejecutar la rutina de verificación de la CPU y mostrar algo de texto en la pantalla, pero no lo suficientemente buena como para iniciar un sistema operativo real en su hardware.
Dmitry Grigoryev
22
@DmitryGrigoryev "Obviamente, la CPU no [...] es lo suficientemente buena como para arrancar un sistema operativo real en su hardware". No necesariamente tan obvio. ¿Qué pasa si quiero arrancar, por ejemplo, FreeDOS? ¿Qué puede decir el BIOS sobre lo que inicio en la PC? Hay una razón por la cual cualquier cargador de arranque MBR, incluso hoy, se ejecuta inicialmente en modo real.
un CVn
77
@ MichaelKjörling Supongo que el fabricante de BIOS decidió que admitir TPM y asegurarse de que los usuarios de Windows estén contentos es más importante que permitirle iniciar FreeDOS.
Dmitry Grigoryev
3
@ MichaelKjörling: el BIOS puede contener parches de microcódigo que no se aplican. No hay forma de predecir la usabilidad de la CPU en ese momento.
MSalters
2
¿Qué CPU está instalada y en qué placa base? Por ejemplo, ¿instaló de alguna manera un procesador Coffee Lake en una placa Z270 o Z170? (Esta combinación no funcionará porque Coffee Lake y su chipset Z370 hicieron cambios incompatibles en el pinout del zócalo, a pesar de usar el mismo zócalo LGA1151 físico.)
bwDraco

Respuestas:

50

No, el BIOS no puede funcionar sin la CPU.

Lo primero que hace su computadora cuando la enciende es verificar que las conexiones entre la CPU y la RAM sean buenas. Esta es una simple verificación eléctrica de que todas las salidas de línea del bus están conectadas a las entradas correctas. Si esta simple comprobación no pasa, obtienes un código de sonido (o posiblemente una pantalla LED en algunas placas base). Esta comprobación no requiere la CPU, sin embargo, sin la CPU presente, es posible que ni siquiera obtenga códigos de pitido, ya que incluso eso requiere alguna medida de procesamiento (depende de la placa base).

Sin embargo, una vez que estas cosas se verifican, la CPU comienza la ejecución del programa contenido en la ROM del BIOS que realiza algunas verificaciones adicionales de nivel superior (como si los tiempos de memoria funcionan, si el firmware adicional para dispositivos integrados se puede cargar correctamente, etc.). Este programa ROM está escrito en lenguaje ensamblador x86 y no requiere la CPU para ejecutarlo.

Lo que sucedió en su caso es que la CPU es eléctricamente compatible con la placa base y funciona, pero carece de algunas funciones de bajo nivel de las que depende la placa base. Tal vez utilizó una CPU que tiene un TDP más alto (genera más calor) de lo que la placa base puede manejar, tiene más núcleos de los que el BIOS sabe cómo inicializar o posiblemente no admite algún estado de energía que el BIOS está tratando de configurar. No mencionaste qué combo de CPU / placa base estás usando.

Sin embargo, en cualquier caso, la CPU proporciona suficiente soporte al BIOS para que pueda ejecutar los programas almacenados en su ROM (incluidos los bytes de entrada y salida de la memoria de video). Simplemente no puede llegar más lejos que eso.

Probablemente solo esté comprobando la familia y las ID de paso del procesador con una lista interna de tipos de CPU compatibles. En muchos casos, esto puede ser parcheado con una actualización de BIOS. Pero primero debe insertar una CPU compatible para actualizarla.

Wes Sayeed
fuente
21
Creo que partes importantes de esta respuesta están equivocadas. El BIOS no puede funcionar sin una CPU, ya que es el primer programa que ejecuta la CPU . No puede hacer nada por sí solo. ( Sin una CPU no se producen códigos de pitido , por cierto; puede hacer códigos de pitido sin RAM debido a un inicio cuidadoso solo con registros). El mensaje probablemente se deba a que espera características de la CPU que no proporciona, pero debido a que es una inicialización x86 suficiente para imprimir dicho mensaje.
DarkDust
21
Un fabricante de placas base podría crear un sistema analógico simple que emitirá un pitido 5 segundos después del inicio, a menos que el BIOS lo desactive activamente . Por lo tanto, técnicamente no sería una característica de BIOS, sino más bien una característica de falta de BIOS.
MSalters
55
Incluso después de la edición, esto no es correcto: esta es una simple verificación eléctrica de que todas las salidas de línea de bus están conectadas a las entradas correctas. Si esta simple comprobación no pasa, obtienes un código de sonido (o posiblemente una pantalla LED en algunas placas base). Esta comprobación no requiere la CPU ... Además, no es el BIOS el que comienza la ejecución de un programa en la ROM, la CPU lo hace y este programa es el BIOS. Perdón por las dudas, pero por su respuesta parece que el BIOS es un hardware que es en parte independiente de la CPU cuando, de hecho, el BIOS es "solo" un programa en ROM (o flash).
DarkDust
55
@TobySpeight: no es magia. Solo otra CPU. Es un EC, un controlador integrado al igual que todos los portátiles. En una computadora portátil, administra la carga de la batería y las luces de estado. En un escritorio, puede administrar actualizaciones de BIOS. También a veces administran la configuración de energía de la placa y cosas como puertos de carga USB.
Zan Lynx
44
@WesSayeed: ¿Estás seguro de que este es el caso? Debido a AFAIK, no existe un "chequeo de bus", ya que un chequeo de cable eléctrico puro requeriría modificaciones muy costosas a los chips DRAM y proporcionaría poco valor adicional. Tan pronto como la CPU tiene energía, comienza a leer y ejecutar instrucciones de la ROM del BIOS, que leerá el SPD y la configuración de cada DIMM de la RAM de CMOS e intentará inicializar el controlador DRAM. Luego, probará rápidamente la DRAM (POST), seguida de la inicialización de todos los demás periféricos relevantes. Vea este video: youtube.com/watch?v=xc08SN6Dhz4
mic_e
11

Probablemente se deba a que la función no admitida proviene del modo protegido, pero en el momento en que muestra este mensaje aún no la ingresó y todavía está en el modo 8086. Entonces, no funciona SIN una CPU, el BIOS es solo un programa, no puede funcionar sin una CPU. Es solo que detectó que no podía pasar un cierto punto en la ejecución y se detuvo antes de llegar a ese lugar.

Explicaré: las primeras PC de DOS no tenían todos los modos de ejecución complicados necesarios para el uso correcto de multitarea y multiusuario. Cuando Intel lo introdujo en sus CPU, querían preservar la compatibilidad con las CPU más antiguas. Por eso introdujeron esos modos: Primero inician una CPU 8086, hacen algunas pruebas e inicializaciones, y solo luego pasan al modo protegido.

Camión
fuente
3
Probablemente no falten las extensiones del conjunto de instrucciones que son el problema. Es más probable que sea algo como una CPU que es demasiado nueva para el BIOS (por ejemplo, un IvyBridge en un mobo de Sandybridge sin un BIOS actualizado), por lo que no sabe cómo programar su configuración de control correctamente. (por ejemplo, los registros de configuración de administración de energía de la CPU que establecen sus umbrales de energía para Turbo, la temporización de DRAM del controlador de memoria, o lo que sea. Y si la CPU es demasiado nueva, podría haber cosas nuevas que el BIOS debe hacer, pero eso no sabe. También el hardware de gráficos es diferente en las nuevas CPUs.
Peter Cordes
8

"CPU no compatible" no le dice que la CPU no es funcional. Probablemente significa que el firmware de la placa base (ya sea BIOS o UEFI) ha ejecutado algún código en la CPU que ha determinado que la CPU es incompatible con algunas características particulares en las que se basa la placa base durante el funcionamiento normal. O simplemente que la placa base no ha sido probada con esta CPU y el fabricante no quiere arriesgarse.

Pero nada de esto significa que la CPU no puede ejecutar instrucciones en el momento del arranque. Por ejemplo, todas las CPU x86 modernas tienen una instrucción CPUID que se puede usar para determinar si hay disponibles varias funciones de procesador. El código de arranque podría ejecutar esta instrucción y mostrar un mensaje de error si las funciones requeridas no estuvieran disponibles.

Artelius
fuente
... y cuando Artelius escribe "CPU modernas x86", si podemos confiar en el párrafo introductorio de Wikipedia sobre el tema, eso se refiere a algo más reciente que las CPU Pentium o 80486SL de 1993, que parece correcto. Tenga en cuenta que aparentemente (no he verificado la documentación de Intel para verificar) CPUID se basa en el registro EAX, que se introdujo con el 80386 en 1985 ...
un CVn
-10

El BIOS tiene una lista de verificación (POST) que revisa para inicializar todas las partes de la computadora. Cuando no pasan los cheques, aparece un error como el suyo. Parte del conjunto de instrucciones POST es asignar una interrupción al componente. Si todos los componentes tienen interrupciones correctamente, el SO se carga y las interrupciones se pasan al SO para que el SO pueda interactuar con los componentes. Esta es una versión simplificada de lo que está sucediendo por brevedad. Aquí hay una lista más detallada de lo que está sucediendo: detalles de arranque

El BIOS tiene un control inicial de los dispositivos para que pueda verificar y mostrar errores si es necesario. Muchos de los errores que he visto son pitidos o LED parpadeantes que deben buscarse para determinar su significado. Por lo general, no muestra el error en el monitor como en su caso (porque qué pasa si la tarjeta de video es el problema). El BIOS tiene la capacidad de ejecutar solo la secuencia de inicialización más básica y, en algunos casos, transmitir solo el código de error más básico. El BIOS ya tiene las interrupciones para los componentes de trabajo como se indicó anteriormente, por lo que no necesita que la CPU procese nada para enviar una señal utilizando la placa base para producir un pitido o luz intermitente, o en su caso la tarjeta de video para mostrar un mensaje.

Mejillón
fuente
44
Esto es incorrecto. El BIOS no puede hacer algo tan complejo como mostrar información en la pantalla sin que algunas funciones de procesamiento rudimentarias de la CPU funcionen correctamente.
Wes Sayeed
66
Parece que tiene la impresión de que las interrupciones se utilizan para controlar el hardware. No son. Además, las interrupciones se realizan en gran medida a través de la CPU, por lo que si la CPU no pudiera ejecutar el código, no puede ejecutar una interrupción (que es poco más que una instrucción de salto indirecto ligeramente glorificada) y ciertamente no podría para configurar cualquiera de los vectores de interrupción. Es poco probable que el BIOS pueda configurar la actualización de la memoria, incluso, por lo que la memoria donde se mantienen los vectores de interrupción (en x86, el 1 KiB más bajo del espacio de direcciones) probablemente ni siquiera sea utilizable.
un CVn
66
Hay un problema más fundamental con esta respuesta: el BIOS es simplemente un código que se ejecuta en la CPU. No está separado de la CPU y no puede actuar por sí solo.
duskwuff