公开/公告号CN101256512A
专利类型发明专利
公开/公告日2008-09-03
原文格式PDF
申请/专利权人 中兴通讯股份有限公司;
申请/专利号CN200810085775.8
发明设计人 杨凡;
申请日2008-03-20
分类号G06F9/46;G06F9/445;G06F11/00;
代理机构北京安信方达知识产权代理有限公司;
代理人龙洪
地址 518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法律部
入库时间 2023-12-17 20:45:19
法律状态公告日
法律状态信息
法律状态
2011-06-22
授权
授权
2008-10-29
实质审查的生效
实质审查的生效
2008-09-03
公开
公开
技术领域
本发明涉及一种计算机技术,尤其涉及一种异构多核体系中主引导核的自动选举方法。
背景技术
随着芯片设计水平的提高以及应用需求的提升,多核CPU越来越多的被运用到产品中。目前采用多核CPU的异构体系大多选用CPU中的一个核作为主核,承担主要的资源管理和复杂逻辑运算;其余的核作为从核承担逻辑简单但数据量大的工作。
在异构多核体系中,每个核运行着各自独立的操作系统并发执行。CPU上电之初,各个核并不是独立地加载各自的操作系统代码段的,而是由一个主引导核对单板进行必要的硬件初始化,并加载自身的操作系统并初始化。与此同时,其他核处于睡眠状态。主引导核一切就绪后会向其他睡眠中的核发出通知以唤醒它们,这些被唤醒的核被称为从核。从核在被唤醒后将分别加载各自的操作系统代码段并初始化。但由于主引导核已经完成了外围硬件设备的初始化,所以从核在初始化时将省略外围硬件初始化的过程。
目前实际应用中,主引导核的选择完全由代码开发人员指定。代码生成后主引导核也随之确定,无法动态更改。这就造成了如果被指定的主引导核发生故障无法正常启动以及唤醒其他从核,则整个系统都无法正常引导。
发明内容
本发明要解决的技术问题是提供一种异构多核体系中主引导核的自动选举方法,能够避免由于主引导核出现故障而导致整个系统无法启动的缺陷。
技术方案如下:
一种异构多核体系中主引导核的自动选举方法,步骤包括:
(1)多核CPU上电后调用选举机制,所述选举机制用于确定主引导核;
(2)所述多核CPU中的各个核执行所述选举机制,并根据所述选举机制判断自己是否为主引导核;同时,记录所有状态正常的从核;
(3)被确定的主引导核加载操作系统,并初始化外围硬件设备以及操作系统;所述从核进入睡眠状态;
(4)主引导核唤醒所有状态正常的从核,所述从核在被唤醒后加载并初始化各自的操作系统代码段,然后,主引导核和从核进入正常运行状态。
进一步,所述选举机制的步骤包括:
A、多核CPU的每个核读取各自的内部寄存器,获得自己的身份编号;
B、所述核获得自己的身份编号后,利用核之间的通信通路向所述多核CPU中其他核广播自己的身份编号;
C、所述核根据所述身份编号来确定自己是否为主引导核。
进一步,所述选举机制中,选择状态良好且所述身份编号最小的核作为主引导核。
进一步,步骤C中,所述多核CPU中的核完成身份广播后,查看收到的来自于其他核的身份编号并进行比较;如果自己的身份编号最小,则判定自己为主引导核;如果收到比自己身份编号更小的身份编号,将收到的最小编号的判定为主引导核,记录该最小编号,并进入睡眠状态。
进一步,所述核在利用所述选举机制进行确定主引导核的过程中,判断自己的身份编号是否为最小;如果是,所述核为主引导核;如果不是,所述核为从核,并进入睡眠状态以等待被主引导核唤醒。
与现有技术相比较,本发明引入了异构多核体系下主引导核的选举机制。该选举机制避免了目前技术中,由于人为指定主引导核出现故障而导致整个系统无法启动的缺陷。
附图说明
图1是本发明中CPU确定主引导核并加载引导程序的流程图;
图2是本发明中各个核利用选举机制确定主引导核的总体流程图;
图3是本发明中各个核利用选举机制确定主引导核的具体流程图。
具体实施方式
本发明在现有的多核体系引导程序之前增加了主引导核的选举机制。该选举机制是利用多核CPU硬件提供的核间通信手段,在系统上电后在CPU多个核中选举出一个可用的核作为主引导核。CPU上电后,每个核都会执行该选举机制,直至选出主引导核,同时其他核都能实时知道自己为从核。
多核CPU的硬件架构为CPU中的每个核都赋予了一个唯一的身份编号,该身份编号用于标识每个核并放置在内部寄存器中,每个核都可以读取各自的内部寄存器来获得自己的身份编号。
每个核获得自己的身份编号后会向CPU中其他各个核广播自己的身份编号。如果某个核有故障,则针对本核的广播消息发送不会成功。广播消息接收方会记录下这个有故障的核,将来选举出来的主引导核可以利用这个记录不去唤醒有故障的从核。
本发明的选举机制是从多个核中选出状态良好的主引导核。由于核间通讯的速度非常快,每个核完成身份广播后,选择一个相对较长的等待时间以确保CPU中的各个核都完成身份广播,然后查看收到的来自于其他核的身份编号,并根据其他核的身份编号来判定自己是否为主引导核,再等待一段时间以同步CPU内其他核完成选举过程。
下面参照附图并结合具体实施例对本发明做详细说明。
如图1所示,是本发明中CPU确定主引导核并加载引导程序的流程图,具体过程如下:
步骤S101,CPU上电;
步骤S102,CPU中的各个核调用并执行选举机制;
步骤S103,各个核根据该选举机制判断自己是否为主引导核;如果某个核判断自己为主引导核,执行步骤S104;否则,执行步骤S108;
步骤S104,主引导核加载操作系统;
步骤S105,主引导核初始化外围硬件设备以及操作系统;
步骤S106,主引导核唤醒记录中所有状态正常的从核;
步骤S107,主引导核进入正常运行状态;
步骤S108,从核进入睡眠状态;
步骤S109,从核判断是否被唤醒;如果被唤醒,执行步骤S110,否则执行步骤S108;
步骤S110,从核在被唤醒后,加载各自的操作系统代码段;
步骤S111,从核初始化操作系统,但是并不初始化外围硬件;
步骤S112,从核进入正常运行状态。
如图2所示,是各个核利用选举机制确定主引导核的总体流程图,选举机制主要包括如下步骤:
步骤S201,身份确认;
多核CPU的每个核读取各自的内部寄存器,获得自己的身份编号;
步骤S202,广播身份编号;
每个核获得自己的身份编号后,通过核之间的通信通路向CPU中其他各个核广播自己的身份编号;
步骤S203,各个核根据身份编号来确定自己是否为主引导核;
本优选实施例中选择状态良好且编号最小的核作为主引导核。某个核完成身份广播后,查看收到的来自于其他核的身份编号并进行比较;如果没有收到比自己身份编号更小的身份编号,则判定自己为主引导核;如果收到比自己身份编号更小的身份编号,将收到的最小编号的判定为主引导核,记录该最小编号,并进入睡眠状态。
如图3所示,是本发明中各个核利用选举机制确定主引导核的具体流程图,该实施例中,选择状态良好且编号最小的核作为主引导核,CPU中某个核利用选举机制确定主引导核的具体步骤如下:
步骤S301,启动自身的定时器A以等待所有核完成身份广播;
步骤S302,该核等待来自其他核的广播消息中的身份编码;
步骤S303,判定定时器A是否超时;如果超时,执行步骤S308;否则,执行步骤S302;
步骤S304,判断是否收到来自其他核的广播消息;如果收到,执行步骤S305;否则,执行步骤S302;
步骤S305,提取出发送方广播消息中的身份编号;
步骤S306,判断该身份编号是否是当前编号中最小的身份编号,该判断过程包括该核自己的身份编号;如果是,执行步骤S307;否则转步骤S302;
步骤S307,记录下这个当前最小的身份编号,并转步骤S302;
步骤S308,如果定时器A超时,删除定时器A,并执行步骤S309;
步骤S309,进一步判断在上述过程中是否记录下比自己的身份编号更小的核发来的广播消息;如果有,执行步骤S310;否则执行步骤S312;
步骤S310,确定被记录下的核为主引导核;
步骤S311,当前核为从核,并进入睡眠状态以等待被主引导核唤醒;
步骤S312,由于当前核所接收到的身份编码没有比自己更小的,所以当前核判定自己为主引导核;
步骤S313,启动定时器B以等待所有从核都完成选举机制的执行;
步骤S314,等待定时器B超时;后转步骤12
步骤S315,定时器B超时后,删除定时器B。
之后,该核作为主引导核进入后续的初始化外围硬件设备以及加载操作系统的过程。
机译: 基于异构多核处理器系统中不同处理器核的计算能力的任务调度方法及相关的非暂时性计算机可读介质
机译: 基于异构多核系统中不同处理器核的计算能力和相关非暂态计算机可读介质的任务调度方法
机译: 基于异构多核处理器系统中不同处理器核的计算能力和相关非暂态计算机可读介质的任务调度方法