System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,具体地涉及一种用于多核处理器的uboot启动方法、多核处理器、终端。
技术介绍
1、目前,安卓平台通常采取uboot(universal boot loader,通用引导加载程序)启动方案,且uboot阶段的各个任务通常由单个核心依次执行,例如,由主核心依次执行:基础驱动初始化—>内核镜像加载—>内核镜像的安全校验—>解析内核镜像—>跳转内核等任务。在上述过程中其余从属核心均处于闲置状态。这种单核单线程的启动方案具有较大的启动耗时,尤其是对于车机、智能显示设备等对于启动效率要求较为严苛的应用场景。
2、现有技术中,通过为多个从属核心分别设计对应的分支程序,每个分支程序对应固定的待执行任务,从属核心被唤醒后从闪存(flash)加载对应的分支程序执行。然而,前述方案中,由于每个从属核心执行的任务是固定的,任务分配与执行的灵活性较差,导致uboot启动效率的提升有限。
技术实现思路
1、本专利技术实施例解决的技术问题是如何更加合理高效地利用从属核心资源并发执行多个任务,减少uboot启动整体耗时。
2、为解决上述技术问题,本专利技术实施例提供一种用于多核处理器的uboot启动方法,所述多核处理器包括一个主核心和多个从属核心,所述方法包括以下步骤:在进入uboot阶段后,每当主核心执行完当前任务时,通过主核心将多个待分配任务分配给处于休眠状态的从属核心,并向已被分配任务的处于休眠状态的从属核心发送第一指令,其中,所述第一
3、可选的,所述通过主核心将多个待分配任务分配给处于休眠状态的从属核心,包括:确定每个待分配任务的执行时长;至少基于各个待分配任务的执行时长,将所述多个待分配任务分配给处于休眠状态的从属核心的部分或全部。
4、可选的,所述至少基于各个待分配任务的执行时长,将所述多个待分配任务分配给处于休眠状态的从属核心的部分或全部,包括:判断所述多个待分配任务中是否包含具有依赖关系的待分配任务;如果判断结果为是,则分别将具有依赖关系的各个待分配任务划分为单个第一任务组,以得到a个第一任务组,其中,每个第一任务组中所有任务的执行时长之和记为第一执行时长,a个第一任务组对应的a个第一执行时长中的最大值记为最大第一执行时长,1≤a<m,m为处于休眠状态的从属核心的总数量;将除具有依赖关系的待分配任务之外的其余待分配任务划分为b个第二任务组,以使得任一个第二任务组中所有任务的执行时长之和与所述最大第一执行时长之差在第一差值范围内,其中,b≤m-a;将所述a个第一任务组分别分配给a个处于休眠状态的从属核心,以及将所述b个第二任务组分别分配给其余处于休眠状态的从属核心中的b个处于休眠状态从属核心;其中,a个第一任务组与所述a个处于休眠状态的从属核心一一对应,b个第二任务组与所述b个处于休眠状态从属核心一一对应。
5、可选的,所述将除具有依赖关系的待分配任务之外的其余待分配任务划分为b个第二任务组,以使得任一个第二任务组中所有任务的执行时长之和与所述最大第一执行时长之差在第一差值范围内,包括:对于所述其余待分配任务,在不设置约束条件的情况下穷尽所有可能的任务组合,得到若干个初始任务组;确定每个初始任务组合的执行总时长与所述最大第一执行时长的差值,然后确定所有差值中的最小差值和最大差值,并将所述最小差值作为所述第一差值的初始值;执行有条件分组操作:在以下三个约束条件下对所述其余待分配任务进行分组:条件一,任意两个任务组内包含的任务均不相同;条件二,任一个任务组的执行总时长与所述最大第一执行时长之差均在所述第一差值范围内;条件三,划分得到的任务组的总组数b≤m-a;如果所述其余待分配任务有同时满足上述三个约束条件的一个或多个任务组,则将所获得各个任务组作为所述b个第二任务组;否则,更新所述第一差值,然后重复执行上述有条件分组操作,直至确定同时满足上述三个约束条件的一个或多个任务组,并将所获得各个任务组作为所述b个第二任务组。
6、可选的,所述方法还包括:如果判断结果为否,则在所述多个待分配任务中确定执行时长最长的待分配任务,记为目标待分配任务,其中,所述目标待分配任务的执行时长记为第二执行时长;将除所述目标待分配任务之外的其余待分配任务划分为c个第三任务组,以使得任一个第三任务组中所有任务的执行时长之和与所述第二执行时长之差在第二差值范围内,其中,c≤m-1;将所述目标待分配任务分配给处于休眠状态的从属核心之一,以及将所述c个第三任务组分别分配给其余处于休眠状态的从属核心中的c个处于休眠状态的从属核心;其中,c个第三任务组与所述c个处于休眠状态的从属核心一一对应。
7、可选的,根据所述其余待分配任务各自的执行时长以及所述第二执行时长,将所述其余待分配任务分配给其余处于休眠状态的从属核心中的部分或全部,包括:将所述其余待分配任务划分为c个第三任务组,以使得任一个第三任务组中所有任务的执行时长之和与所述第二执行时长之差在第二差值范围内,其中,c≤m-1;将划分得到的c个第三任务组分别分配给所述其余处于休眠状态的从属核心中的c个从属核心;其中,c个第三任务组与所述c个从属核心一一对应。
8、可选的,在跳转至内核之前,所述方法还包括:唤醒全部处于休眠状态的从属核心,为唤醒的每个从属核心分配下电任务,然后等待全部从属核心执行完成各自的下电任务。
9、可选的,在进入uboot阶段后,以及在主核心执行首个任务之前,所述方法还包括:启动并初始化全部从属核心;向每个从属核心发送第三指令,所述第三指令用于指示从属核心进入休眠状态。
10、可选的,本专利技术实施例还提供一种多核处理器,所述多核处理器包括一个主核心和多个从属核心,所述主核心配置为执行上述方法。
11、可选的,所述多核处理器选自arm-a系列芯片。
12、可选的,本专利技术实施例还提供一种终端,包括上述多核处理器。
13、与现有技术相比,本专利技术实施例的技术方案具有以下有益效果:
14、在本专利技术实施例中,通过采用动态地任务分配方式以及对从属核心进行唤醒状态与休眠状态之间进行灵活切换。具体而言,每轮分配中将多个待分配任务分配给处于休眠状态的从属核心,并唤醒已被分配任务的处于休眠状态的从属核心以执行分配的任务;当被唤醒的从属核心已执行完分配的任务时,使其重新进入休眠状态,等待后续有需要时再次被分配任务并被唤醒;直至确认主核心执行完uboot阶段的内核加载任务且全部从属核心均已处于休眠状态时,跳转至内核。由此,相较于现有技术采用单核心单线程或者由从属核心执行固定任务的uboot启动方案,本文档来自技高网...
【技术保护点】
1.一种用于多核处理器的uboot启动方法,所述多核处理器包括一个主核心和多个从属核心,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述通过主核心将多个待分配任务分配给处于休眠状态的从属核心,包括:
3.根据权利要求2所述的方法,其特征在于,所述至少基于各个待分配任务的执行时长,将所述多个待分配任务分配给处于休眠状态的从属核心的部分或全部,包括:
4.根据权利要求3所述的方法,其特征在于,所述将除具有依赖关系的待分配任务之外的其余待分配任务划分为b个第二任务组,以使得任一个第二任务组中所有任务的执行时长之和与所述最大第一执行时长之差在第一差值范围内,包括:
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
6.根据权利要求1所述的方法,其特征在于,在跳转至内核之前,所述方法还包括:
7.根据权利要求1所述的方法,其特征在于,在进入uboot阶段后,以及在主核心执行首个任务之前,所述方法还包括:
8.一种多核处理器,所述多核处理器包括一个主核心和多个从属核心,其特
9.根据权利要求8所述的多核处理器,其特征在于,所述多核处理器选自Arm-A系列芯片。
10.一种终端,其特征在于,包括权利要求8或9所述的多核处理器。
...【技术特征摘要】
1.一种用于多核处理器的uboot启动方法,所述多核处理器包括一个主核心和多个从属核心,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述通过主核心将多个待分配任务分配给处于休眠状态的从属核心,包括:
3.根据权利要求2所述的方法,其特征在于,所述至少基于各个待分配任务的执行时长,将所述多个待分配任务分配给处于休眠状态的从属核心的部分或全部,包括:
4.根据权利要求3所述的方法,其特征在于,所述将除具有依赖关系的待分配任务之外的其余待分配任务划分为b个第二任务组,以使得任一个第二任务组中所有任务的执行时长之和与所述最大第一执行时长之差在第一差值范围内...
【专利技术属性】
技术研发人员:黄志贤,黄蓉,吴永前,李夏河,
申请(专利权)人:厦门紫光展锐科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。