初始化协议处理器_CPU多核初始化

本文介绍了多处理器系统(MP)的初始化流程,特别是IA-32架构下的MP初始化协议。内容涵盖BSP(引导处理器)和AP(应用处理器)的选择,APIC(高级可编程中断控制器)的启用,以及原子操作和自旋锁在初始化过程中的作用。在初始化过程中,BSP会执行内存、微码、MTRR和缓存的初始化,随后通过IPI序列唤醒AP。AP则会进行锁、微码、MTRR和缓存的初始化。APIC用于处理器间通信,而原子操作和自旋锁确保了多处理器并发时的数据一致性。
摘要由CSDN通过智能技术生成

c06316652fb5b947f5831add5ff1ef02.png

最近的几个项目都不止一次的碰到了MP 初始化的问题,每次都花了不少的时间,于是打算总结一下多处理器初始化的流程,以备将来再次碰到的问题时方便查找。 MP初始化指的是在一个有至少2个或者多个处理器的系统里,怎么去初始化所有的处理器,让系统工作起来。IA-32 ARCH 定义了MP 初始化的协议,该协议使得IA-32,X64的MP系统都可以boot,并且并不需要多余的特定的信号,或者指定特定的BSP.

1.BSP AP处理器:

MP的系统里定义了2种类型的处理器: BSP 和 AP。BSP是boot strap processor, AP是指application processor。其实BSP和AP并没有本质的区别而且也不是固定的,BSP是由硬件动态选择的。其中一种算法是,上电以后每个处理器执行BIST(built in self test),通过自检以后,大家都去monitor BNR(Bus Not Ready)的信号。如果BNR#一直在翻转,说明还没有ready。一旦BNR#停止翻转,每个处理器都尝试发一个NOP special cycle,第一个成功发出的就是BSP。BSP选出来以后,它会把IA32_APIC_BASE MSR里面的BSP flag设置起来。然后就会开始从reset vector开始执行。其它的AP就会进入”wait-for-SIPI state”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值