我想知道为什么BIOS是单线程的,即使我们有4核/8核。最新的UEFI技术允许使用GUI实用程序。没有实现多线程BIOS有什么特别的原因吗?
发布于 2012-06-06 04:37:17
答案很简单:收益递减
在大多数PC上,BIOS/UEFI的启动顺序只需要大约5秒(不包括硬盘启动延迟)。对于大多数人来说,这已经足够快了。(如果您希望速度更快,请将PC置于睡眠状态,而不是将其关闭。)
请记住,在BIOS中完成的许多任务都不能并行化。必须首先初始化内存控制器。在检查任何后续设备(USB、SATA、视频等)之前,必须枚举PCI/PCIe总线。你不能启动,直到你的磁盘旋转。
有一些初始化项目是很耗时的,并且可以并行完成。
这些任务可以并行完成,这可能会加快PC的启动时间。请记住,要实现这一点,您需要编写内核和任务调度程序。在传统的基本输入输出系统(纯x86汇编程序)中,这并不美观。在UEFI (主要是C源代码)中,这是比较可行的。然而,它仍然需要大量的工程工作才能获得很小的收益(可能需要1-2秒的启动时间)。
Phoenix以前曾尝试引入多线程BIOS初始化。据我所知,它从来没有起飞过。
发布于 2012-06-05 22:07:55
因为没有这个必要。BIOS不执行繁重的计算。它会进行一些协调,然后(永远)退出。
发布于 2016-12-20 18:51:56
UEFI没有描述任何多处理功能。但是,PI规范(also produced by the UEFI Forum)提供了,并且提供了EFI_MP_SERVICES_PROTOCOL (目前仅适用于IA32/X64 )。
它并不完全是pthread,但它确实允许您在Bootstrap处理器持续提供单线程UEFI实例的同时,调度在应用程序处理器上运行的任务。
DXE阶段的接口在v1.5 PI规范的第3卷MP服务协议(13.4)中进行了描述。
PEI期间可用的功能由第2卷EFI MP服务PPI (8.3.9)描述。
https://stackoverflow.com/questions/10897087
复制相似问题