55

I have an unsupported CPU inserted in my machine and I get this error while my PC is booting: Unsupported CPU installed. My question isn't how to fix it but rather:

How is this error message displayed if the CPU is not in use? Can BIOS work without a CPU?

  • 13
    Obviously, the CPU is good enough to run the CPU check routine and display some text on the screen, but not good enough to boot an actual OS on your hardware. – Dmitry Grigoryev Jan 15 '18 at 8:32
  • 22
    @DmitryGrigoryev "Obviously, the CPU is [...] not good enough to boot an actual OS on your hardware." Not necessarily so obvious. What if I want to boot, say, FreeDOS? What's the BIOS to have a say in what I boot on the PC? There's a reason why any MBR boot loader, even today, initially executes in real mode. – a CVn Jan 15 '18 at 8:37
  • 7
    @MichaelKjörling I suppose the BIOS manufacturer decided that supporting TPM and making sure Windows users are happy is more important than letting you boot FreeDOS. – Dmitry Grigoryev Jan 15 '18 at 9:23
  • 3
    @MichaelKjörling: The BIOS may hold microcode patches that fail to apply. There's no way to predict the usability of the CPU at that time. – MSalters Jan 15 '18 at 12:36
  • 2
    What CPU is installed and in what motherboard? For example, did you somehow install a Coffee Lake processor on a Z270 or Z170 board? (This combination will not work because Coffee Lake and its Z370 chipset made incompatible changes to the socket pinout, despite using the same physical LGA1151 socket.) – bwDraco Jan 15 '18 at 16:50
50

No, the BIOS cannot work without the CPU.

The very first thing your computer does when you power it on is checks that the connections between the CPU and RAM are good. This is a simple electrical check that all the bus line outputs are connected to the correct inputs. If this simple check doesn't pass, you get a beep code (or possibly an LED display on some motherboards). This check does not require the CPU, however without the CPU present, you may not even get beep codes, as even that requires some measure of processing (depends on the motherboard).

Once these things check out, however, then the CPU begins execution of the program contained within BIOS ROM that performs some additional higher-level checks (such as whether memory timings work, whether additional firmware for onboard devices can be loaded correctly, etc). This ROM program is written in x86 assembly language and does require the CPU to execute it.

What happened in your case is that the CPU is electrically compatible with the motherboard and does work, but lacks some low-level feature support that the motherboard depends on. Perhaps you used a CPU that has a higher TDP (generates more heat) than the motherboard can handle, has more cores than the BIOS knows how to initialize, or possibly doesn't support some power state the BIOS is trying to set. You didn't mention what CPU/motherboard combo you're using.

In whatever case, though, the CPU is providing enough support to the BIOS that it can execute the programs stored in its ROM (including moving bytes in and out of video memory). It just can't get further than that.

It's probably just checking the family and stepping IDs from the processor against an internal list of supported CPU types. In many cases, this can be patched with a BIOS upgrade. But you'd need to insert a supported CPU first in order to flash it.

  • 21
    I think important parts of this answer are wrong. The BIOS cannot operate without a CPU as it is the very first program the CPU is executing. It cannot do anything on its own. ( Without a CPU no beep codes occur, BTW; it can do beep codes w/o RAM due to careful init with registers only). The message is probably because it expects features from the CPU which it doesn't provide, but due to being an x86 enough initialization can be done to print said message. – DarkDust Jan 15 '18 at 12:34
  • 21
    A motherboard maker could create a simple analog system that will beep 5 seconds after startup, unless actively turned off by the BIOS. So it would technically not be a BIOS feature, but more a lack-of-BIOS feature. – MSalters Jan 15 '18 at 12:41
  • 5
    Even after the edit, this isn't correct: This is a simple electrical check that all the bus line outputs are connected to the correct inputs. If this simple check doesn't pass, you get a beep code (or possibly an LED display on some motherboards). This check does not require the CPU… Also, it's not the BIOS that begins execution of a program in the ROM, the CPU does that and this program is the BIOS. Sorry for nitpicking, but from your answer it sounds like the BIOS is some hardware that is partly independent from the CPU when in fact, the BIOS is "just" a program in ROM (or flash). – DarkDust Jan 15 '18 at 17:26
  • 5
    @TobySpeight: Not magic. Just yet another CPU. It's an EC, an embedded controller much like laptops all have. In a laptop it manages battery charge and status lights. In a desktop it can manage BIOS updates. Also sometimes they manage the board's power settings and things like USB charging ports. – Zan Lynx Jan 15 '18 at 20:53
  • 4
    @WesSayeed: Are you sure this is the case? Because AFAIK, there is no such thing as a "bus check", since a pure electrical wire check would require very expensive modifications to DRAM chips and provide little extra value. As soon as the CPU has power, it starts reading and executing instructions from the BIOS ROM, which will read each DIMM's SPD and settings from CMOS RAM and attempt to initialize the DRAM controller. Then it will quickly test the DRAM (POST), followed by initialization of all other relevant peripherals. See this video: youtube.com/watch?v=xc08SN6Dhz4 – mic_e Jan 15 '18 at 21:13
11

It's probably because the unsupported feature are from protected mode, but at the time it displays this message it didn't enter it yet and is still in 8086 mode. So, it doesn't work WITHOUT a CPU, BIOS is just a program, it can't work without a CPU. It's just that it detected that it couldn't go past a certain point in the execution and stopped before reaching that place.

I'll explain: the first DOS PCs didn't have all those complicated execution mode needed for correct multitasking and multi user usage. When Intel introduced it in its CPUs, they wanted to preserve compatibility with older CPUs. That why they introduced those modes: They first start a 8086 CPU, they do some tests and initialisation, and only then they go to protected mode.

  • 3
    It's probably not missing instruction-set extensions that are the problem. It's more likely something like a CPU that's too new for the BIOS (e.g. an IvyBridge in a Sandybridge mobo without an updated BIOS), so it doesn't know how to program its control settings properly. (e.g. the CPU power-management config registers that set its power thresholds for Turbo, the memory-controller DRAM timing stuff, or whatever. And if the CPU is too new, there might be new things the BIOS is supposed to do but that it doesn't know about. Also the graphics hardware is different in new CPUs. – Peter Cordes Jan 16 '18 at 10:49
8

"Unsupported CPU" does not tell you that the CPU is non-functional. It probably means that the firmware on the motherboard (whether BIOS or UEFI) has executed some code on the CPU which has determined that the CPU is incompatible with some particular features the motherboard relies on during normal operation. Or simply that the motherboard has not been tested with this CPU and the manufacturer doesn't want to risk it.

But none of this means the CPU can't execute instructions at boot time. For instance, all modern x86 CPUs have a CPUID instruction which can be used to determine whether various processor features are available. The boot code could execute this instruction and display an error message if required features were not available.

  • ...and when Artelius writes "modern x86 CPUs", if we can trust Wikipedia's introductory paragraph on the subject, that's referring to anything more recent than the 1993 Pentium or 80486SL CPUs, which sounds about right. Note that apparently (I haven't checked Intel's documentation to verify) CPUID relies on the EAX register, which was introduced with the 80386 back in 1985... – a CVn Jan 16 '18 at 15:41
-10

The BIOS has a checklist (POST) that it goes through to initialize all the parts of the computer. When they do not pass the checks, then you get an error such as yours. Part of the POST instruction set is to assign an interrupt to the component. If all the components properly have interrupts the OS is loaded and the interrupts are passed to the OS so that the OS can interact with the components. This is a simplified version of what is happening for brevity. Here is a more detailed list of what is happening: boot details

The BIOS has initial control of the devices so it can check and display errors if needed. Many of the errors that I have seen are beeps, or flashing LEDs that have to be looked up for their meaning. It usually doesn't show the error on the monitor like in your case (because what if the video card is the problem). The BIOS has the ability to run just the most basic initialization sequence, and in some cases relay just the most basic of error codes. The BIOS already has the interrupts for the working components like stated above so it does not need the CPU to process anything in order to send a signal using the motherboard to produce a beep or flashing light, or in your case the video card to display a message.

  • 4
    This is incorrect. The BIOS cannot do something as complex as displaying information on the screen without some rudimentary processing capabilities from the CPU working correctly. – Wes Sayeed Jan 15 '18 at 7:06
  • 6
    You seem to be under the impression that interrupts are used to control hardware. They are not. Also, interrupts are very much done through the CPU, so if the CPU would be unable to execute code, it can't execute an interrupt (which is little more than a slightly glorified indirect jump instruction) and it certainly wouldn't be able to set up any of the interrupt vectors. It's unlikely that the BIOS would be able to set up the memory refresh, even, so the memory where interrupt vectors are kept (in x86, the lowest 1 KiB of the address space) would be unlikely to even be usable. – a CVn Jan 15 '18 at 8:34
  • 6
    There's a more fundamental issue with this answer: the BIOS is simply code that runs on the CPU. It is not separate from the CPU, and cannot act on its own. – duskwuff Jan 15 '18 at 9:47

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.