3

我想知道为什么 BIOS 是单线程的,即使我们有 4 核/8 核。最新的 UEFI 技术允许使用 GUI 实用程序。不实施多线程 BIOS 是否有任何具体原因。

4

3 回答 3

5

简单的答案是:收益递减

在大多数 PC 上,BIOS/UEFI 的启动顺序只需要大约 5 秒即可工作(不包括 HDD 启动延迟)。对于大多数人来说,这已经足够快了。(如果你想要更快,让你的电脑进入睡眠状态而不是关闭它。)

请记住,在 BIOS 中完成的许多任务无法并行化。必须首先初始化内存控制器。必须先枚举 PCI/PCIe 总线,然后才能检查任何后续设备(USB、SATA、视频等)。在磁盘启动之前,您无法启动。

一些初始化项目很耗时,可以并行完成。

  • IDE/SATA - 由于机械磁盘延迟,通常需要一段时间。
  • USB - 某些 USB 设备在通电后需要 100 毫秒的时间才能启动。
  • 视频(任何其他第三方 BIOS 扩展)- 与显示器通信和同步需要一段时间。

这些任务可以并行完成,这可能会加快 PC 的启动时间。请记住,要到达那里,您需要编写内核和任务调度程序。在旧版 BIOS(纯 x86 汇编程序)中,这并不漂亮。在 UEFI(主要是 C 源代码)中,这更可行。但是,它仍然需要不平凡的工程工作才能获得少量收益(可能需要 1-2 秒的启动时间。)

Phoenix 之前曾尝试引入多线程 BIOS 初始化。据我所知,它从未起飞。

于 2012-06-05T20:37:16.660 回答
4

因为没有必要。BIOS 不会进行繁重的计算。它进行一些协调,然后(永远)退出。

于 2012-06-05T14:07:54.957 回答
3

UEFI没有描述任何多处理功能。但是,PI规范(也由 UEFI 论坛制作)提供,并且EDK2提供EFI_MP_SERVICES_PROTOCOL(目前仅适用于 IA32/X64)。

它不完全是 pthreads,但它确实让您可以安排任务在应用处理器上运行,同时引导处理器继续提供单线程 UEFI 实例。

DXE 阶段的接口在 v1.5 PI 规范的第 3 卷MP 服务协议(13.4) 部分中进行了描述。

第 2 卷EFI MP 服务 PPI (8.3.9)描述了 PEI 期间可用的功能。

于 2016-12-20T10:51:56.247 回答