『阿男的Linux内核世界』*多核CPU是如何启动的?*

大家有没有想过,多核CPU是如何启动的?BIOS代码由哪个核心执行?此外,Kernel从BIOS接管过来CPU的使用权以后,Kernel运行在哪个核心里面?

这些问题大家都可以想一下,阿男给大家慢慢解答。

首先是阿男一直推荐大家看的Intel的CPU的架构手册Combined Volume Set of Intel® 64 and IA-32 Architectures Software Developer’s Manuals^1

在这篇文档里面,大家可以从8.4 MULTIPLE-PROCESSOR (MP) INITIALIZATION当中找到答案:

『阿男的Linux内核世界』*多核CPU是如何启动的?*

阿男从里面引用文字如下:

The IA-32 architecture (beginning with the P6 family processors) defines a multiple-processor (MP) initialization protocol called the Multiprocessor Specification Version 1.4. This specification defines the boot protocol to be used by IA-32 processors in multiple-processor systems.

简单翻译,就是说Intel的多核CPU通过Multiprocessor Specification这个协议就是boot protocol(启动协议),简称MP,多核CPU遵守这个协议来进行启动。

具体的讲解都在文档里面了,大家可以自己看。阿男在这篇文章里只带大家看这里:

可以看到,Intel架构下,CPU的不同核心被分为两类,一个类做BSP,也就是bootstrap processor,另一类叫做AP,也就是application processors

其中BSP就是那个执行BIOS代码的核,其它的核就都是AP了。那么BSP怎么选出来呢?文档里也有说明:

During boot-up, one of the logical processors is selected as the BSP and the remainder of the logical processors are designated as APs.

也就是说,在启动的时候,Intel架构遵守MP协议,会选出一个核心成为BSP,其它的核心就是AP了。这个BSP负责执行BIOS,以及后续Kernel的启动部分。

关于MP协议的具体细节,大家看文档就可以了,写的非常清楚。这里阿男在呼吁一下,建议大家要长期读Combined Volume Set of Intel® 64 and IA-32 Architectures Software Developer’s Manuals这个文档,虽然有4684页,但绝对有意思。

转载于:https://my.oschina.net/u/3195023/blog/836079

相关文章:

  • 2021-05-31
  • 2022-02-15
  • 2022-12-23
  • 2021-06-29
  • 2021-06-17
  • 2022-01-15
  • 2021-10-01
  • 2021-05-18
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-06
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案