如何显示“安装了不支持的CPU”消息?


55

我的计算机中插入了不受支持的CPU,并且PC引导时出现此错误:Unsupported CPU installed。我的问题不是如何解决它,而是:

如果不使用CPU,如何显示此错误消息?BIOS是否可以在没有CPU的情况下工作?


13
显然,CPU足以运行CPU检查例程并在屏幕上显示一些文本,但不足以在硬件上引导实际的OS。
德米特里·格里戈里耶夫

22
@DmitryGrigoryev “显然,CPU不足以在您的硬件上启动实际的操作系统。不一定那么明显。如果要启动FreeDOS,该怎么办?在PC上启动什么BIOS可以说什么?有一个原因导致任何MBR引导加载程序(即使在今天)最初都以实模式执行。
CVn

7
@MichaelKjörling我想BIOS制造商决定支持TPM并确保Windows用户满意比让您引导FreeDOS更重要。
德米特里·格里戈里耶夫

3
@MichaelKjörling:BIOS可能包含无法应用的微代码补丁。当时无法预测CPU的可用性。
MSalters

2
在哪个主板上安装了什么CPU?例如,您是否以某种方式在Z270或Z170板上安装了Coffee Lake处理器?(这种组合不起作用,因为尽管使用了相同的物理LGA1151插槽,但是Coffee Lake及其Z370芯​​片组对插槽的引脚分配进行了不兼容的更改。)
bwDraco

Answers:


50

不可以,没有CPU,BIOS无法运行。

打开计算机电源时,计算机要做的第一件事就是检查CPU和RAM之间的连接是否良好。这是一项简单的电气检查,检查所有总线输出是否连接到正确的输入。如果此简单检查未通过,您将收到蜂鸣声代码(或某些主板上的LED显示屏)。此检查不需要CPU,但是如果没有CPU,则您甚至可能不会收到蜂鸣声代码,因为这甚至需要一定程度的处理(取决于主板)。

但是,一旦检查完这些内容,CPU便开始执行BIOS ROM中包含的程序,该程序将执行一些其他的更高级别的检查(例如,内存计时是否正常工作,板载设备的其他固件是否可以正确加载等)。此ROM程序是用x86汇编语言编写的,并且确实需要CPU执行。

您遇到的情况是CPU与主板电气兼容并且可以正常工作,但是缺少主板所依赖的一些底层功能支持。也许您使用的CPU具有更高的TDP(产生的热量)超过主板所能处理的CPU,具有比BIOS知道如何初始化的内核更多的内核,或者可能不支持BIOS试图设置的某些电源状态。您没有提及正在使用的CPU /主板组合。

但是,无论在哪种情况下,CPU都会为BIOS提供足够的支持,使其可以执行ROM中存储的程序(包括将字节移入和移出视频内存)。只是无法超越。

它可能只是根据支持的CPU类型的内部列表检查处理器的系列和步进ID。在许多情况下,可以使用BIOS升级对此进行修补。但是您需要先插入受支持的CPU才能对其进行刷新。


21
我认为这个答案的重要部分是错误的。的BIOS,因为它是不能没有CPU操作的CPU执行的第一个节目。它不能独自做任何事情。(在没有CPU的情况下不会发生哔声代码,BTW;由于只有通过寄存器仔细地初始化,它才能在没有RAM的情况下发出哔声代码)。该消息可能是因为它期望CPU不提供的功能,但是由于是x86,可以进行足够的初始化以打印该消息。
DarkDust

21
主板制造商可以创建一个简单的模拟系统,该系统将在启动后5秒钟内发出蜂鸣声,除非被BIOS 主动关闭。因此,从技术上讲,它不是BIOS功能,而是BIOS缺乏功能。
MSalters

5
即使在编辑之后,这也不对:这是一项简单的电气检查,检查所有总线输出是否都连接到正确的输入。如果此简单检查未通过,您将收到蜂鸣声代码(或某些主板上的LED显示屏)。此检查不需要CPU。 此外,不是BIOS才开始执行ROM中的程序,CPU则要执行该程序,而该程序就是 BIOS。很抱歉,但是根据您的回答,听起来BIOS确实是某种硬件,它部分独立于CPU,而实际上BIOS是ROM(或闪存)中的程序。
DarkDust

5
@TobySpeight:不是魔术。只是另一个CPU。这是EC,就像笔记本电脑一样,都是嵌入式控制器。在笔记本电脑中,它可以管理电池充电和状态指示灯。在桌面上,它可以管理BIOS更新。有时他们还管理电路板的电源设置和USB充电端口之类的东西。
Zan Lynx '18年

4
@WesSayeed:您确定是这种情况吗?因为AFAIK,所以没有“总线检查”之类的事情,因为纯电线检查将需要对DRAM芯片进行非常昂贵的修改,并且几乎没有额外的价值。CPU通电后,便开始从BIOS ROM读取并执行指令,BIOS ROM将从CMOS RAM中读取每个DIMM的SPD和设置,并尝试初始化DRAM控制器。然后它将快速测试DRAM(POST),然后初始化所有其他相关外围设备。观看此视频:youtube.com/watch?
v=xc08SN6Dhz4

11

可能是因为不支持的功能来自保护模式,但是在显示此消息时,它尚未输入,仍处于8086模式。因此,如果没有CPU,它就无法工作,BIOS只是一个程序,没有CPU,就无法工作。只是它检测到它不能超过执行中的某个点,并在到达那个位置之前停了下来。

我将解释:最初的DOS PC没有正确多任务处理和多用户使用所需的所有复杂执行模式。当英特尔将其引入其CPU时,他们希望保留与旧CPU的兼容性。这就是为什么他们引入这些模式的原因:他们首先启动8086 CPU,进行一些测试和初始化,然后才进入保护模式。


3
可能没有缺少问题所在的指令集扩展。CPU可能对BIOS 来说太了(例如,没有更新BIOS的Sandybridge主板中的IvyBridge),因此它不知道如何正确编程其控制设置。(例如,CPU功率管理配置寄存器设置了Turbo的功率阈值,内存控制器DRAM时序等。如果CPU太新,BIOS可能会做一些新的事情,但BIOS会这样做也不知道。图形硬件在新CPU中也有所不同
Peter Cordes

8

“不支持的CPU”不会告诉您CPU无法正常工作。这可能意味着主板上的固件(无论是BIOS还是UEFI)已在CPU上执行了一些代码,这些代码确定CPU与正常运行期间主板所依赖的某些特定功能不兼容。或简单地说,主板尚未经过此CPU的测试,制造商不想冒险。

但这都不意味着CPU在引导时无法执行指令。例如,所有现代x86 CPU都有一个CPUID指令,可用于确定各种处理器功能是否可用。如果所需的功能不可用,则引导代码可以执行此指令并显示错误消息。


...并且当Artelius编写“现代x86 CPU”时,如果我们可以相信Wikipedia关于该主题的介绍性段落,那是指比1993 Pentium或80486SL CPU更新的东西,这听起来是对的。请注意,显然(我尚未检查英特尔的文档以进行验证)CPUID依赖于EAX寄存器,该寄存器是1985年随80386引入的……
CVn18年

-10

BIOS具有检查清单(POST),通过该清单可以初始化计算机的所有部件。如果他们没有通过检查,那么您会收到诸如您这样的错误。POST指令集的一部分是为组件分配中断。如果所有组件都正确地具有中断,则将加载操作系统,并将中断传递给操作系统,以便操作系统可以与组件进行交互。这是为简洁起见而简化的版本。这是正在发生的事情的更详细列表: 引导详细信息

BIOS对设备具有初始控制权,因此可以在需要时检查和显示错误。我看到的许多错误是蜂鸣声,或者是闪烁的LED,必须检查其含义。它通常不会像您的情况那样在监视器上显示错误(因为如果视频卡出了问题怎么办)。BIOS能够仅运行最基本的初始化序列,并且在某些情况下仅中继最基本的错误代码。BIOS已经具有上述工作组件的中断,因此它不需要CPU处理任何事情即可通过主板发送信号以发出哔哔声或闪烁的光,或者在您的情况下通过视频卡显示信息。


4
这是不正确的。如果没有CPU的一些基本处理功能,BIOS就无法完成像在屏幕上显示信息那样复杂的操作。
Wes Sayeed

6
您似乎给人的印象是,中断用于控制硬件。他们不是。另外,中断是通过CPU完成的,因此,如果CPU无法执行代码,则它将无法执行中断(仅略微夸张的间接跳转指令),并且肯定无法执行设置任何中断向量。BIOS不太可能设置内存刷新,即使这样,保留中断向量的内存(在x86中,地址空间的最低1 KiB)也不可能使用。
CVn

6
这个答案还有一个更根本的问题:BIOS只是在CPU上运行的代码。它不是与CPU分开的,不能单独运行。
duskwuff '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.