How is the message "Unsupported CPU installed" displayed?

55

10

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?

David

Posted 2018-01-15T04:28:21.073

Reputation: 471

13Obviously, 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 – 2018-01-15T08:32:04.827

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 – 2018-01-15T08:37:45.290

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 – 2018-01-15T09:23:35.190

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 – 2018-01-15T12:36:18.500

2What 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 – 2018-01-15T16:50:23.223

Code in the BIOS is being run by the CPU (most likely using a very restricted subset which can be run on any modern x86 CPU). This code determines if the CPU qualifies according to rules also put in the BIOS. If the CPU fails, the message is shown. That the CPU is disqualified for full operation, does not mean that it cannot do anything at all. – Thorbjørn Ravn Andersen – 2018-01-16T10:05:04.927

@ThorbjørnRavnAndersen: Or maybe only CPUs that use the same physical socket as the motherboard. It might be unsupported for power delivery / stability reasons (or other physical / electrical reasons). But yes, limiting your code to a baseline below what the rest of the firmware assumes is the obvious mechanism. This is in terms of instruction-set, but also how the built-in graphics hardware is programmed, and stuff like that. – Peter Cordes – 2018-01-16T10:35:14.977

@PeterCordes Perhaps. Depends on the BIOS implementation. – Thorbjørn Ravn Andersen – 2018-01-16T10:37:11.940

@ThorbjørnRavnAndersen: Mobos usually need a BIOS update for a new CPU generation, e.g. a Sandybridge Z66 mobo could run an Ivybridge CPU, but only if you update the BIOS first. (By booting it with a SnB temporarily). Usually when a mobo is released, its initial BIOS supports all currently-existing CPUs that physically fit in the socket. (See also this comment where I wrote a better version of my previous comment.) New CPUs are the problem, not old.

– Peter Cordes – 2018-01-16T10:59:57.133

Answers

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.

Wes Sayeed

Posted 2018-01-15T04:28:21.073

Reputation: 12 024

IIRC, some BIOSes have the capability of flashing from USB storage without requiring a supported CPU. Possibly even without a CPU at all, in some motherboards (I know it sounds like magic, but with sufficiently intelligent USB controllers, it's just setting up a single DMA). – Toby Speight – 2018-01-15T08:46:31.613

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 – 2018-01-15T12:34:20.817

21A 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 – 2018-01-15T12:41:03.077

@DarkDust; You are right about the first part; I tweaked my answer a bit. Some motherboards (like Dell OptiPlex series computers) have diagnostic LEDs and can beep at you when there is no CPU present. They can even blink at you when the PSU is blown. But I don't get the 2nd part of your comment. Isn't that what I said in my answer? – Wes Sayeed – 2018-01-15T17:12:24.013

5Even 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 – 2018-01-15T17:26:55.877

1@DarkDust; I didn't mean to imply that there's processing going on with the electrical check. It's just the same kind of test you could do with a multimeter. By "bus" I mean a literal electrical bus. The CPU, RAM, and chipset are all physically wired together on the mobo. If there is a problem, there will be no continuity across those lines. Some mobos have diagnostic LEDs or whatever that can detect and report the failure. These are run through the same chip that contains the BIOS program. In the interest of providing a better answer, I'm open to better ways if saying that. – Wes Sayeed – 2018-01-15T17:58:34.517

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 – 2018-01-15T20:53:05.027

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: https://www.youtube.com/watch?v=xc08SN6Dhz4

– mic_e – 2018-01-15T21:13:07.077

@mic_e: Actually, that SPD you mention is connected to the very bus whose existence you question. (SMBus) – MSalters – 2018-01-16T10:16:38.000

3

@DarkDust: before enabling the RAM, modern firmware enables "no-fill mode" so they can use cache-as-RAM, giving much more storage for program state than just the integer + XMM + MMX registers. (Not YMM because VEX prefixes don't work in 16-bit mode, and besides Pentium/Celeron CPUs have AVX disabled). Leaving no-fill mode is one of the few use cases for invd (invalidate cache without write-back.), unlike wbinvd.

– Peter Cordes – 2018-01-16T10:42:34.420

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.

Camion

Posted 2018-01-15T04:28:21.073

Reputation: 223

3It'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 – 2018-01-16T10:49:27.767

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.

Artelius

Posted 2018-01-15T04:28:21.073

Reputation: 1 086

...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 – 2018-01-16T15:41:50.793

-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.

Musselman

Posted 2018-01-15T04:28:21.073

Reputation: 560

4This 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 – 2018-01-15T07:06:24.843

6You 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 – 2018-01-15T08:34:23.180

6There'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 -inactive- – 2018-01-15T09:47:28.827