首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多线程BIOS

多线程BIOS
EN

Stack Overflow用户
提问于 2012-06-05 20:12:33
回答 3查看 2.5K关注 0票数 3

我想知道为什么BIOS是单线程的,即使我们有4核/8核。最新的UEFI技术允许使用GUI实用程序。没有实现多线程BIOS有什么特别的原因吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-06 04:37:17

答案很简单:收益递减

在大多数PC上,BIOS/UEFI的启动顺序只需要大约5秒(不包括硬盘启动延迟)。对于大多数人来说,这已经足够快了。(如果您希望速度更快,请将PC置于睡眠状态,而不是将其关闭。)

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

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

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

这些任务可以并行完成,这可能会加快PC的启动时间。请记住,要实现这一点,您需要编写内核和任务调度程序。在传统的基本输入输出系统(纯x86汇编程序)中,这并不美观。在UEFI (主要是C源代码)中,这是比较可行的。然而,它仍然需要大量的工程工作才能获得很小的收益(可能需要1-2秒的启动时间)。

Phoenix以前曾尝试引入多线程BIOS初始化。据我所知,它从来没有起飞过。

票数 5
EN

Stack Overflow用户

发布于 2012-06-05 22:07:55

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

票数 4
EN

Stack Overflow用户

发布于 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)描述。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10897087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档