多线程 BIOS

3

我想知道为什么即使我们拥有4个核心/8个核心,BIOS仍然是单线程的。最新的UEFI技术允许使用GUI工具。是否有特定的原因不实现多线程BIOS。


请编辑您的帖子并提供更多有关处理器和架构的背景信息。 - Gray
2
我很困惑,为什么你需要一个多线程的BIOS。 - Justin
只涉及英特尔架构。旧的BIOS工具可能是像ncurses应用程序一样的蓝屏应用程序。但最新的UEFI支持动画效果。 - Jeyaram
3个回答

5
简单的答案是:收益递减。
在大多数PC上,BIOS/UEFI的引导序列只需要约5秒钟的时间(不计算HDD启动延迟)。对于大多数人来说,这已经足够快了。(如果你想更快地启动,请将PC置于睡眠状态而不是关闭它。)
请记住,在BIOS中执行的许多任务无法并行化。首先必须初始化内存控制器。在检查任何后续设备(USB、SATA、视频等)之前,必须枚举PCI/PCIe总线。你的磁盘必须旋转才能启动。
有一些初始化项目是耗时的,可以并行处理。
- IDE/SATA - 通常需要很长时间,因为机械硬盘延迟。 - USB - 一些USB设备需要100毫秒左右的时间才能启动。 - 视频(以及其他第三方BIOS扩展)- 需要一段时间与显示器进行通信和同步。
这些任务可以并行处理,可能会加快PC的启动时间。请记住,要实现这一点,您需要编写一个内核和任务调度程序。在传统BIOS(纯x86汇编)中,这并不美观。在UEFI中(大部分是C源代码),这更可行。然而,这仍需要非常复杂的工程努力才能获得微小的收益(也许只有1-2秒的启动时间)。
Phoenix曾经尝试过引入多线程BIOS初始化。据我所知,它从未流行起来。

1
谢谢。我们不讨论BIOS了。我们谈论的是在操作系统启动前运行的诊断应用程序。 - Jeyaram
1
预启动UEFI应用程序是一种小众产品(普通用户永远不会接触它)。 没有什么能阻止您开发自己的UEFI应用程序及其自己的任务调度程序。 任务调度程序将成为您的应用程序的一部分,而不是框架的一部分。 - myron-semack
因此,普通用户不接触的内容不应该变得高效和快速。这些公司声称他们对技术感到兴奋... - Milind R

4
由于没有必要,BIOS不需要进行大量的计算。它只进行一些协调工作,然后退出(永久性地)。

1
是的。但随着UEFI的引入,允许动画BIOS实用程序,我们可能需要在BIOS中使用多线程。 - Jeyaram

3

UEFI并没有描述任何多处理功能,但是由UEFI论坛编写的PI规范(也有) EDK2提供了EFI_MP_SERVICES_PROTOCOL(目前仅限于IA32 / X64),其中PI规范卷3中描述了DXE阶段的接口,即MP服务协议(13.4),而PEI期间可用的功能则在卷2中描述为EFI MP服务PPI(8.3.9)。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接