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

Dav*_*vid 56 bios cpu

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

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

Wes*_*eed 51

不,BIOS 不能在没有 CPU 的情况下工作。

计算机开机后要做的第一件事就是检查 CPU 和 RAM 之间的连接是否良好。这是一项简单的电气检查,确保所有总线输出都连接到正确的输入。如果这个简单的检查没有通过,你会得到一个哔声代码(或者可能是某些主板上的 LED 显示)。此检查不需要 CPU,但是如果没有 CPU,您甚至可能不会收到哔声代码,因为即使这样也需要一些处理措施(取决于主板)。

然而,一旦这些事情检查出来,CPU 就会开始执行包含在 BIOS ROM 中的程序,该程序执行一些额外的更高级别的检查(例如内存计时是否工作,是否可以正确加载板载设备的附加固件等)。这个 ROM 程序是用 x86 汇编语言编写的,确实需要 CPU 来执行它。

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

不管怎样,CPU 都为 BIOS 提供了足够的支持,它可以执行存储在其 ROM 中的程序(包括将字节移入和移出视频内存)。它只是不能比这更进一步。

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

  • 我认为这个答案的重要部分是错误的。[BIOS](https://en.wikipedia.org/wiki/BIOS) 不能在没有 CPU 的情况下运行,因为它是_CPU 正在执行的第一个程序_。它不能靠自己做任何事情。( [没有 CPU 不会出现哔哔声](https://superuser.com/questions/549010/if-i-power-a-motherboard-without-cpu-ram-what-will-happen), 顺便说一句;它可以由于仅使用寄存器小心初始化,因此在没有 RAM 的情况下执行哔声代码)。该消息可能是因为它期望 CPU 提供它不提供的功能,但由于是 x86,可以进行足够的初始化来打印所述消息。 (21认同)
  • 主板制造商可以创建一个简单的模拟系统,它会在启动后 5 秒发出蜂鸣声,除非 BIOS 主动关闭**。因此,从技术上讲,它不是 BIOS 功能,而是缺少 BIOS 功能。 (21认同)
  • 即使在编辑之后,这也是不正确的:_这是一个简单的电气检查,所有总线输出都连接到正确的输入。如果这个简单的检查没有通过,你会得到一个哔声代码(或者可能是某些主板上的 LED 显示)。此检查不需要 CPU..._此外,开始执行 ROM 中的程序的不是 BIOS,而是 CPU 执行此操作,而该程序 _is_ BIOS。抱歉吹毛求疵,但从您的回答看来,BIOS 是一些部分独立于 CPU 的硬件,而实际上,BIOS“只是”ROM(或闪存)中的一个程序。 (5认同)
  • @TobySpeight:不是魔法。只是另一个CPU。它是一个 EC,一个嵌入式控制器,就像笔记本电脑一样。在笔记本电脑中,它管理电池充电和状态指示灯。在台式机中,它可以管理 BIOS 更新。有时他们还会管理电路板的电源设置和 USB 充电端口之类的东西。 (5认同)
  • @WesSayeed:你确定是这样吗?因为 AFAIK,没有“总线检查”这样的东西,因为纯电线检查需要对 DRAM 芯片进行非常昂贵的修改,并且几乎没有提供额外的价值。CPU 一通电,就开始从 BIOS ROM 读取和执行指令,这将从 CMOS RAM 读取每个 DIMM 的 SPD 和设置,并尝试初始化 DRAM 控制器。然后它将快速测试 DRAM (POST),然后初始化所有其他相关外设。观看此视频:https://www.youtube.com/watch?v=xc08SN6Dhz4 (4认同)
  • @DarkDust:在启用 RAM 之前,现代固件启用 [“无填充模式”](/sf/ask/2924276001/)以便他们可以使用缓存- as-RAM,为程序状态提供了比整数 + XMM + MMX 寄存器更多的存储空间。(不是 YMM,因为 VEX 前缀在 16 位模式下不起作用,而且 Pentium/Celeron CPU 禁用了 AVX)。离开无填充模式是 [`invd`(使缓存无效 *无* 回写。)](https://github.com/HJLebbink/asm-dude/wiki/INVD) 的少数用例之一,不像`wbinvd`。 (3认同)

Cam*_*ion 11

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

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

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

Art*_*ius 8

“不受支持的 CPU”不会告诉您 CPU 不起作用。这可能意味着主板上的固件(无论是 BIOS 还是 UEFI)已经在 CPU 上执行了一些代码,这已确定 CPU 与主板在正常运行期间依赖的某些特定功能不兼容。或者只是主板没有用这个 CPU 测试过,制造商不想冒险。

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