linux内核如何支持多核cpu,『阿男的Linux内核世界』*多核CPU是如何启动的?*...

『阿男的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当中找到答案:

d6b5bc036f731b6998e802ced328d0c8.png

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

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页,但绝对有意思。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值