我想知道为什么BIOS是单线程的,即使我们有4个内核/ 8个内核。最新的UEFI技术允许GUI实用程序。有没有具体的理由不实现多线程BIOS。
答案 0 :(得分:4)
因为没有必要。 BIOS不会进行繁重的计算。它做了一些协调,然后退出(永远)。
答案 1 :(得分:4)
简单的答案是:收益递减
在大多数PC上,BIOS / UEFI的启动顺序只需约5秒钟(不计算硬盘启动延迟)。对大多数人来说,这是足够快的。 (如果你想要更快,请将你的电脑置于睡眠状态而不是将其关闭。)
请记住,BIOS中完成的许多任务无法并行化。必须首先初始化存储器控制器。必须先枚举PCI / PCIe总线,然后才能检查任何后续设备(USB,SATA,视频等)。在磁盘旋转之前,您无法启动。
是一些耗时的初始化项目,可以并行完成。
这些任务可以并行完成,这可能会加快PC的启动时间。请记住,要实现这一目标,您需要编写内核和任务调度程序。在传统的BIOS(纯x86汇编程序)中,这不是很好。在UEFI(主要是C源)中,这更加可行。但是,它仍然需要一个非常重要的工程努力才能获得微小的增益(可能是1-2秒的启动时间。)
凤凰城曾试图引入多线程BIOS初始化。据我所知,它从未起飞过。
答案 2 :(得分:2)
UEFI 未描述任何多处理功能。但是, PI 规范(also produced by the UEFI Forum)会执行,而EDK2会提供MY_PROJECT\res
(目前仅适用于IA32 / X64)。
它不完全是pthread,但它确实允许您安排任务在 Application Processors 上运行,而 Bootstrap Processor 一直提供单线程UEFI实例。
DXE阶段的界面在v1.5 PI规范的第3卷中描述,部分 MP服务协议(13.4)。
PEI期间可用的功能由第2卷 EFI MP服务PPI (8.3.9)描述。