多线程BIOS

时间:2012-06-05 12:12:33

标签: multithreading bios uefi

我想知道为什么BIOS是单线程的,即使我们有4个内核/ 8个内核。最新的UEFI技术允许GUI实用程序。有没有具体的理由不实现多线程BIOS。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:4)

简单的答案是:收益递减

在大多数PC上,BIOS / UEFI的启动顺序只需约5秒钟(不计算硬盘启动延迟)。对大多数人来说,这是足够快的。 (如果你想要更快,请将你的电脑置于睡眠状态而不是将其关闭。)

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

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

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

这些任务可以并行完成,这可能会加快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)描述。