启动多核处理器、bootloader大小端模式自适应的方法及装置制造方法

文档序号:6621013阅读:420来源:国知局
启动多核处理器、bootloader大小端模式自适应的方法及装置制造方法
【专利摘要】本发明实施例提供了启动多核处理器、bootloader大小端模式自适应的方法及装置,涉及集成电路领域,用以一定程度上解决不同型号的处理器无法使用相同的操作系统的问题,提高操作系统的兼容性。该方法应用于包括多核处理器和内存的计算节点,该方法包括:主核将从核引导程序存储至内存的首地址之后的连续的存储空间中;其中内存的首地址被映射到总线的0地址;主核复位至少一个从核中的从核,以使从核的程序计数器PC指针指向总线的0地址,从核通过总线访问总线的0地址映射的内存的首地址,读取内存中内存的首地址后存储的从核引导程序并执行从核引导程序;从核跳转到操作系统的代码段,完成从核初始化。
【专利说明】启动多核处理器、boot loader大小端模式自适应的方法及 装置

【技术领域】
[0001] 本发明涉及集成电路领域,尤其涉及启动多核处理器、bootloader大小端模式自 适应的方法及装置。

【背景技术】
[0002] 操作系统与硬件交互紧密,各产品使用的芯片、单板硬件差异很大。在嵌入式领 域,传统上的处理器的硬件型号、bootloader (译为启动加载器,bootloader是嵌入式系统 在加电后执行的第一段代码,在它完成处理器和相关硬件的初始化之后,再将操作系统镜 像装载到内存中然后跳转到操作系统所在的空间,启动操作系统运行)版本和操作系统版 本需要一一对应,即每一型号的处理器(单核处理器或者多核处理器)都需要使用与其配 套的操作系统。操作系统二进制归一后,可以同一版本的操作系统支撑不同型号的处理器、 不同版本的bootloader。
[0003] 目前,处理器的多核化已成为主流,多核处理器由一个主核和至少一个从核组成。 多核处理器的启动过程大致分为以下五个步骤:
[0004] 第一步,主核启动,将非易失存储器中的bootloader拷贝到内存中运行。
[0005] 第二步,主核从bootloader跳转到操作系统,执行操作系统中的指令,完成主核 及操作系统所需硬件的初始化,并将从核引导程序在内存中的存放地址写入总线的固定地 址A中;固定地址A用于存放从核引导程序的第一条指令在内存中的地址。
[0006] 第三步,主核向从核发送核间中断消息,唤醒从核,并等待从核初始化完毕。
[0007] 第四步,从核通过总线的固定地址A,获取从核引导程序在内存中的存放地址,进 而从内存中读取从核引导程序,并执行从核引导程序。
[0008] 第五步,跳转到操作系统的代码段,完成从核初始化,并通知主核本从核初始化完 成。
[0009] 在实现上述多核处理器启动的过程中,发明人发现现有技术中至少存在如下问 题:相同架构下的不同型号的多核处理器以及不同架构下的不同型号的多核处理器的总线 空间布局不同,使得内存在总线空间上的寻址范围不同,导致总线访问内存中存储的从核 初始化代码的地址和相应的固定地址A不同。同时,由于固定地址A被硬编码写入操作系 统中,最终使得不同型号的处理器需要使用不同版本的操作系统,操作系统无法完成二进 制归一。


【发明内容】

[0010] 本发明的实施例提供启动多核处理器、bootloader大小端模式自适应的方法及装 置,以一定程度上解决不同型号的处理器无法使用相同版本的操作系统的问题,提高操作 系统的兼容性。
[0011] 本发明的实施例采用如下技术方案:
[0012] 第一方面,本发明实施例提供了一种启动多核处理器的方法,应用于包括多核处 理器和内存的计算节点,其中所述多核处理器通过总线访问所述内存,所述多核处理器包 含主核及至少一个从核,所述主核执行启动加载器bootloader,所述方法包括:所述主核 将从核引导程序存储至所述内存的首地址之后的连续的存储空间中;其中,所述内存的首 地址被映射到所述总线的〇地址;所述主核复位所述至少一个从核中的从核,以使所述从 核的程序计数器PC指针指向所述总线的0地址,所述从核通过所述总线访问所述总线的0 地址映射的所述内存的首地址,读取所述内存中所述内存的首地址后存储的所述从核引导 程序并执行所述从核引导程序;所述从核跳转到操作系统的代码段,完成从核初始化。
[0013] 结合第一方面,在第一方面的第一种可能的实现方式中,在所述主核将从核引导 程序存储至所述内存的首地址之后的连续的存储空间中之前,还包括:所述主核在所述从 核引导程序中添加休眠指令;所述休眠指令用于使所述从核处于休眠状态;所述主核复位 所述至少一个从核中的从核,以使所述从核的程序计数器PC指针指向所述总线的0地址, 所述从核通过所述总线访问所述总线的〇地址映射的所述内存的首地址,读取所述内存中 所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程序,包括:所述主核 第一次复位所述从核,所述从核的PC指针指向所述总线的0地址,所述从核通过所述总线 访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导程序中的所述 休眠指令;所述主核第二次复位所述从核,所述从核的PC指针指向所述总线的0地址,所述 从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核 引导程序中除休眠指令之外的程序;其中,所述从核的复位次数为两次。
[0014] 结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可 能的实现方式中,所述从核跳转到操作系统的代码段,完成从核初始化,包括:在所述 bootloader中设置的所述从核的大小端模式与所述操作系统所需的大小端模式相同的情 况下,所述从核跳转到操作系统的代码段,完成从核初始化。
[0015] 结合第一方面或第一方面的第一或第二种可能的实现方式,在第一方面的第三 种可能的实现方式中,在所述主核执行启动加载器bootloader之后,所述主核将从核引 导程序存储至所述内存的首地址之后的连续的存储空间中之前,还包括:所述主核获取 bootloader中设置的所述主核的大小端模式;所述主核获取操作系统所需的大小端模 式;在所述bootloader中设置的所述主核的大小端模式与所述操作系统所需的大小端 模式不同的情况下,所述主核更改所述主核的大小端模式,使得更改后的所述主核的大小 端模式与所述操作系统所需的大小端模式相同;在所述bootloader中设置的所述主核 的大小端模式与所述操作系统所需的大小端模式不同的情况下,还包括:所述主核将所 述bootloader传递给所述操作系统的所有参数进行大小端模式转换,使得转换后的所述 bootloader传递给所述操作系统的所有参数的大小端模式与所述操作系统所需的大小端 模式相同;或者,所述主核将所述bootloader传递给所述操作系统的所述主核所需的参数 进行大小端模式转换,使得转换后的所述bootloader传递给所述操作系统的所述主核所 需的参数的大小端模式与所述操作系统所需的大小端模式相同;其中,所述bootloader传 递给所述操作系统的所有参数包括:所述bootloader传递给操作系统的所述主核所需的 参数和所述bootloader传递给操作系统的所述从核所需的参数。
[0016] 结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式 中,在所述从核执行所述从核引导程序之后,所述从核跳转到操作系统的代码段之前,还 包括:所述从核获取bootloader中设置的所述从核的大小端模式;所述从核获取操作系 统所需的大小端模式;在所述bootloader中设置的所述从核的大小端模式与所述操作系 统所需的大小端模式不同的情况下,所述从核更改所述从核的大小端模式,使得更改后的 所述从核的大小端模式与所述操作系统所需的大小端模式相同;在所述bootloader中设 置的所述从核的大小端模式与所述操作系统所需的大小端模式不同,且所述主核将所述 bootloader传递给操作系统的所述主核所需的参数进行大小端模式转换的情况下,还包 括:所述从核将所述bootloader传递给所述操作系统的所述从核所需的参数进行大小端 模式转换,使得转换后的所述bootloader传递给所述操作系统的所述从核所需的参数的 大小端模式与所述操作系统所需的大小端模式相同。
[0017] 结合第一方面或第一方面的第一或第二种可能的实现方式,在第一方面的第五 种可能的实现方式中,在所述主核执行启动加载器bootloader之后,所述主核将从核引 导程序存储至所述内存的首地址之后的连续的存储空间中之前,还包括:所述主核获取所 述bootloader传递给所述操作系统的所有参数,其中,所述bootloader传递给所述操作 系统的所有参数的首部添加有第一魔术字;在所述第一魔术字发生变化的情况下,所述主 核更改所述主核的大小端模式,并将所述bootloader传递给所述操作系统的所有参数进 行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader 传递给所述操作系统的所有参数的大小端模式与所述操作系统所需的大小端模式相同; 其中,所述bootloader传递给所述操作系统的所有参数包括:所述bootloader传递给操 作系统的所述主核所需的参数和所述bootloader传递给操作系统的所述从核所需的参 数;或者,所述主核获取所述bootloader传递给所述操作系统的所述主核所需的参数,其 中,所述bootloader传递给所述操作系统的所述主核所需的参数的首部添加有第二魔术 字;在所述第二魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所述 bootloader传递给所述操作系统的所述主核所需的参数进行大小端模式转换,使得更改后 的所述主核的大小端模式以及转换后的所述bootloader传递给操作系统的所述主核所需 的参数的大小端模式与所述操作系统所需的大小端模式相同。
[0018] 结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式 中,所述从核获取所述bootloader传递给所述操作系统的所述从核所需的参数,其中,所 述bootloader传递给所述操作系统的所述从核所需的参数的首部添加有第三魔术字;在 所述从核确定所述第三魔术字发生变化的情况下,所述从核更改所述从核的大小端模式, 使得更改后的所述从核的大小端模式与所述操作系统所需的大小端模式相同;在所述从核 确定所述第三魔术字发生变化,且所述主核获取所述bootloader传递给所述操作系统的 所述主核所需的参数的情况下,还包括:所述从核将所述bootloader传递给所述操作系统 的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述 操作系统的所述从核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
[0019] 结合第一方面或第一方面的第一至第六任一种可能的实现方式,在第一方面的第 七种可能的实现方式中,在所述主核复位所述至少一个从核中的从核之前,还包括:所述主 核获取所述从核的状态;当所述主核确定所述从核处于激活状态时,所述主核设置所述从 核的复位次数为两次;当所述主核确定所述从核处于休眠状态或未启动状态时,所述主核 设置所述从核的复位次数为一次。
[0020] 第二方面,本发明实施例提供了一种启动多核处理器的方法,应用于包括多核处 理器、内存和非易失存储器的计算节点,其中所述多核处理器通过总线访问所述内存以及 所述非易失存储器,所述多核处理器包含主核及至少一个从核,所述方法包括:所述主核从 从核配置指令,或者从所述非易失存储器获取从核的配置地址;其中,所述从核配置指令设 置于启动加载器bootloader中;所述主核将从核引导程序存储至所述内存中所述配置地 址之后的连续的存储空间中;所述主核向所述从核发送核间中断消息,使得所述从核通过 所述总线访问所述配置地址,读取所述内存中所述配置地址后存储的所述从核引导程序并 执行所述从核引导程序;所述从核跳转到操作系统的代码段,完成从核初始化。
[0021] 结合第二方面,在第二方面的第一种可能的实现方式中,所述从核跳转到操作系 统的代码段,完成从核初始化,包括:在所述bootloader中设置的所述从核的大小端模式 与所述操作系统所需的大小端模式相同的情况下,所述从核跳转到操作系统的代码段,完 成从核初始化。
[0022] 结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能 的实现方式中,在所述主核从从核配置指令,或者从所述非易失存储器获取从核的配置地 址之后,所述主核将从核引导程序存储至所述内存中所述配置地址之后的连续的存储空 间中之前,还包括:所述主核获取bootloader中设置的所述主核的大小端模式;所述主 核获取操作系统所需的大小端模式;在所述bootloader中设置的所述主核的大小端模 式与所述操作系统所需的大小端模式不同的情况下,所述主核更改所述主核的大小端模 式,使得更改后的所述主核的大小端模式与所述操作系统所需的大小端模式相同;在所述 bootloader中设置的所述主核的大小端模式与所述操作系统所需的大小端模式不同的情 况下,还包括:所述主核将所述bootloader传递给所述操作系统的所有参数进行大小端模 式转换,使得转换后的所述bootloader传递给所述操作系统的所有参数的大小端模式与 所述操作系统所需的大小端模式相同;或者,所述主核将所述bootloader传递给所述操作 系统的所述主核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给 所述操作系统的所述主核所需的参数的大小端模式与所述操作系统所需的大小端模式相 同;其中,所述bootloader传递给所述操作系统的所有参数包括:所述bootloader传递给 操作系统的所述主核所需的参数和所述bootloader传递给操作系统的所述从核所需的参 数。
[0023] 结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式 中,在所述从核执行所述从核引导程序之后,所述从核跳转到操作系统的代码段之前,还 包括:所述从核获取bootloader中设置的所述从核的大小端模式;所述从核获取操作系 统所需的大小端模式;在所述bootloader中设置的所述从核的大小端模式与所述操作系 统所需的大小端模式不同的情况下,所述从核更改所述从核的大小端模式,使得更改后的 所述从核的大小端模式与所述操作系统所需的大小端模式相同;在所述bootloader中设 置的所述从核的大小端模式与所述操作系统所需的大小端模式不同,且所述主核将所述 bootloader传递给所述操作系统的所述主核所需的参数进行大小端模式转换的情况下,还 包括:所述从核将所述bootloader传递给所述操作系统的所述从核所需的参数进行大小 端模式转换,使得转换后的所述bootloader传递给所述操作系统的所述从核所需的参数 的大小端模式与所述操作系统所需的大小端模式相同。
[0024] 结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第四种可能的 实现方式中,在所述主核从从核配置指令,或者从所述非易失存储器获取从核的配置地址 之后,所述主核将从核引导程序存储至所述内存中所述配置地址之后的连续的存储空间中 之前,还包括:所述主核获取所述bootloader传递给所述操作系统的所有参数,其中,所述 bootloader传递给所述操作系统的所有参数的首部添加有第一魔术字;在所述第一魔术 字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所述bootloader传递给 所述操作系统的所有参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及 转换后的所述bootloader传递给所述操作系统的所有参数的大小端模式与所述操作系统 所需的大小端模式相同;其中,所述bootloader传递给所述操作系统的所有参数包括:所 述bootloader传递给操作系统的所述主核所需的参数和所述bootloader传递给操作系统 的所述从核所需的参数;或者,所述主核获取所述bootloader传递给所述操作系统的所述 主核所需的参数,其中,所述bootloader传递给所述操作系统的所述主核所需的参数的首 部添加有第二魔术字;在所述第二魔术字发生变化的情况下,所述主核更改所述主核的大 小端模式,并将所述bootloader传递给所述操作系统的所述主核所需的参数进行大小端 模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给操 作系统的所述主核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
[0025] 结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式 中,在所述从核执行所述从核引导程序之后,所述从核跳转到操作系统的代码段之前,还包 括:所述从核获取所述bootloader传递给所述操作系统的所述从核所需的参数,其中,所 述bootloader传递给所述操作系统的所述从核所需的参数的首部添加有第三魔术字;在 所述从核确定所述第三魔术字发生变化的情况下,所述从核更改所述从核的大小端模式, 使得更改后的所述从核的大小端模式与所述操作系统所需的大小端模式相同;在所述从核 确定所述第三魔术字发生变化,且所述主核获取所述bootloader传递给所述操作系统的 所述主核所需的参数的情况下,还包括:所述从核将所述bootloader传递给所述操作系统 的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述 操作系统的所述从核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
[0026] 结合第二方面或第二方面的第一至第五任一种可能的实现方式,在第二方面的第 六种可能的实现方式中,在所述主核从非易失存储器获取所述从核的配置地址之前,还包 括:所述主核从所述从核配置指令获取所述从核的配置地址;所述主核将所述从核的配置 地址存储至所述非易失存储器。
[0027] 第三方面,本发明实施例提供了一种bootloader大小端模式自适应的方法,应 用于处理器,所述方法包括:获取启动加载器bootloader中设置的当前核的大小端模 式;获取操作系统所需的大小端模式;若所述bootloader中设置的所述当前核的大小端 模式与所述操作系统所需的大小端模式不同,则更改所述当前核的大小端模式,并将所述 bootloader传递给所述操作系统的参数进行大小端模式转换,使得更改后的所述当前核的 大小端模式以及转换后的所述参数的大小端模式与所述操作系统所需的大小端模式相同。
[0028] 第四方面,本发明实施例提供了一种bootloader大小端模式自适应的方法,应用 于处理器,所述方法包括:获取启动加载器bootloader传递给操作系统的参数,其中,所述 参数的首部添加有魔术字;若所述魔术字发生变化,则更改当前核的大小端模式,并将所述 bootloader传递给所述操作系统的参数进行大小端模式转换,使得更改后的所述当前核的 大小端模式以及转换后的所述参数的大小端模式与所述操作系统所需的大小端模式相同。
[0029] 第五方面,本发明实施例提供了一种计算节点,包括多核处理器和内存,其中所述 多核处理器通过总线访问所述内存,所述多核处理器包含主核及至少一个从核,所述主核 用于执行启动加载器bootloader,包括:所述主核,用于将从核引导程序存储至所述内存 的首地址之后的连续的存储空间中;其中,所述内存的首地址被映射到所述总线的〇地址; 所述主核,还用于复位至少一个从核中的从核,以使所述从核的程序计数器PC指针指向所 述总线的〇地址;所述从核,用于通过所述总线访问所述总线的〇地址映射的所述内存的首 地址,读取所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导 程序;所述从核,还用于跳转到操作系统的代码段,完成从核初始化。
[0030] 结合第五方面,在第五方面的第一种可能的实现方式中,所述主核,还用于在所述 从核引导程序中添加休眠指令;所述休眠指令用于使所述从核处于休眠状态;所述主核, 具体用于第一次复位所述从核,所述从核的PC指针指向所述总线的0地址;所述从核,具体 用于通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核 引导程序中的所述休眠指令;所述主核,具体用于第二次复位所述从核,所述从核的PC指 针指向所述总线的0地址;所述从核,具体用于通过所述总线访问所述总线的0地址映射的 所述内存的首地址,读取并执行所述从核引导程序中除休眠指令之外的程序;其中,所述从 核的复位次数为两次。
[0031] 结合第五方面或第五方面的第一种可能的实现方式,在第五方面的第二种可能的 实现方式中,所述从核,具体用于在所述bootloader中设置的所述从核的大小端模式与所 述操作系统所需的大小端模式相同的情况下,跳转到操作系统的代码段,完成从核初始化。
[0032] 结合第五方面或第五方面的第一或第二种可能的实现方式,在第五方面的第三种 可能的实现方式中,所述主核,还用于获取bootloader中设置的所述主核的大小端模式; 所述主核,还用于获取操作系统所需的大小端模式;所述主核,还用于在所述bootloader 中设置的所述主核的大小端模式与所述操作系统所需的大小端模式不同的情况下,更改所 述主核的大小端模式,使得更改后的所述主核的大小端模式与所述操作系统所需的大小端 模式相同;所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操 作系统所需的大小端模式不同的情况下,将所述bootloader传递给所述操作系统的所有 参数进行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操作系统所需 的大小端模式相同;或者,将所述bootloader传递给所述操作系统的所述主核所需的参数 进行大小端模式转换,使得转换后的所述bootloader传递给所述操作系统的所述主核所 需的参数的大小端模式与所述操作系统所需的大小端模式相同;其中,所述bootloader传 递给所述操作系统的所有参数包括:所述bootloader传递给操作系统的所述主核所需的 参数和所述bootloader传递给操作系统的所述从核所需的参数。
[0033] 结合第五方面的第三种可能的实现方式,在第五方面的第四种可能的实现方式 中,所述从核,还用于获取bootloader中设置的所述从核的大小端模式;所述从核,还用于 获取操作系统所需的大小端模式;所述从核,还用于在所述bootloader中设置的所述从核 的大小端模式与所述操作系统所需的大小端模式不同的情况下,更改所述从核的大小端模 式,使得更改后的所述从核的大小端模式与所述操作系统所需的大小端模式相同;所述从 核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作系统所需的大 小端模式不同,且所述主核将所述bootloader传递给操作系统的所述主核所需的参数进 行大小端模式转换的情况下,将所述bootloader传递给所述操作系统的所述从核所需的 参数进行大小端模式转换,使得转换后的所述bootloader传递给操作系统的所述从核所 需的参数的大小端模式与所述操作系统所需的大小端模式相同。
[0034] 结合第五方面或第五方面的第一或第二种可能的实现方式,在第五方面的第五种 可能的实现方式中,所述主核,还用于获取所述bootloader传递给所述操作系统的所有参 数,其中,所述bootloader传递给所述操作系统的所有参数的首部添加有第一魔术字;所 述主核,还用于在所述第一魔术字发生变化的情况下,更改所述主核的大小端模式,并将 所述bootloader传递给所述操作系统的所有参数进行大小端模式转换,使得更改后的所 述主核的大小端模式以及转换后的所述bootloader传递给所述操作系统的所有参数的 大小端模式与所述操作系统所需的大小端模式相同;其中,所述bootloader传递给所述 操作系统的所有参数包括:所述bootloader传递给操作系统的所述主核所需的参数和所 述bootloader传递给操作系统的所述从核所需的参数;或者,所述主核,还用于获取所述 bootloader传递给所述操作系统的所述主核所需的参数,其中,所述bootloader传递给所 述操作系统的所述主核所需的参数的首部添加有第二魔术字;所述主核,还用于在所述第 二魔术字发生变化的情况下,更改所述主核的大小端模式,并将所述bootloader传递给所 述操作系统的所述主核所需的参数进行大小端模式转换,使得更改后的所述主核的大小端 模式以及转换后的所述bootloader传递给操作系统的所述主核所需的参数的大小端模式 与所述操作系统所需的大小端模式相同。
[0035] 结合第五方面的第五种可能的实现方式,在第五方面的第六种可能的实现方式 中,所述从核,还用于获取所述bootloader传递给所述操作系统的所述从核所需的参数, 其中,所述bootloader传递给所述操作系统的所述从核所需的参数的首部添加有第三魔 术字所述参数的首部添加有魔术字;所述从核,还用于在所述从核确定所述第三魔术字发 生变化的情况下,更改所述从核的大小端模式,使得更改后的所述从核的大小端模式与所 述操作系统所需的大小端模式相同;所述从核,还用于在所述第三魔术字发生变化,且所述 主核获取所述bootloader传递给所述操作系统的所述主核所需的参数的情况下,将所述 bootloader传递给所述操作系统的所述从核所需的参数进行大小端模式转换,使得转换后 的所述bootloader传递给所述操作系统的所述从核所需的参数的大小端模式与所述操作 系统所需的大小端模式相同。
[0036] 结合第五方面或第五方面的第一至第六任一种可能的实现方式,在第五方面的第 七种可能的实现方式中,所述主核,还用于获取所述从核的状态;所述主核,还用于确定所 述从核处于激活状态时,所述主核设置所述从核的复位次数为两次;所述主核,还用于确定 所述从核处于休眠状态或未启动状态时,所述主核设置所述从核的复位次数为一次。
[0037] 第六方面,本发明实施例提供了一种计算节点,包括多核处理器、内存和非易失 存储器,其中所述多核处理器通过总线访问所述内存以及所述非易失存储器,所述多核处 理器包含主核及至少一个从核,包括:所述主核,用于从从核配置指令中,或者从所述非易 失存储器中获取所述从核的配置地址;其中,所述从核配置指令设置于所述启动加载器 bootloader中;所述主核,还用于将从核引导程序存储至所述内存中所述配置地址之后的 连续的存储空间中;所述主核,还用于向从核发送核间中断消息;所述从核,用于通过所述 总线访问所述配置地址,读取所述内存中所述配置地址后存储的所述从核引导程序并执行 所述从核引导程序;所述从核,还用于跳转到操作系统的代码段,完成从核初始化。
[0038] 结合第六方面,在第六方面的第一种可能的实现方式中,所述从核,具体用于在所 述bootloader中设置的所述从核的大小端模式与所述操作系统所需的大小端模式相同的 情况下,所述从核跳转到操作系统的代码段,完成从核初始化。
[0039] 结合第六方面或第六方面的第一种可能的实现方式,在第六方面的第二种可能的 实现方式中,所述主核,还用于获取bootloader中设置的所述主核的大小端模式;所述主 核,还用于获取操作系统所需的大小端模式;所述主核,还用于在所述bootloader中设置 的所述主核的大小端模式与所述操作系统所需的大小端模式不同的情况下,更改所述主核 的大小端模式,使得更改后的所述主核的大小端模式与所述操作系统所需的大小端模式相 同;所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作系统 所需的大小端模式不同的情况下,将所述bootloader传递给所述操作系统的所有参数进 行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操作系统所需的大小 端模式相同;或者,将所述bootloader传递给所述操作系统的所述主核所需的参数进行大 小端模式转换,使得转换后的所述bootloader传递给所述操作系统的所述主核所需的参 数的大小端模式与所述操作系统所需的大小端模式相同;其中,所述bootloader传递给所 述操作系统的所有参数包括:所述bootloader传递给操作系统的所述主核所需的参数和 所述bootloader传递给操作系统的所述从核所需的参数。
[0040] 结合第六方面的第二种可能的实现方式,在第六方面的第三种可能的实现方式 中,所述从核,还用于获取bootloader中设置的所述从核的大小端模式;所述从核,还用于 获取操作系统所需的大小端模式;所述从核,还用于在所述bootloader中设置的所述从核 的大小端模式与所述操作系统所需的大小端模式不同的情况下,更改所述从核的大小端模 式,使得更改后的所述从核的大小端模式与所述操作系统所需的大小端模式相同;所述从 核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作系统所需的大 小端模式不同,且所述主核将所述bootloader传递给操作系统的所述主核所需的参数进 行大小端模式转换的情况下,将所述bootloader传递给所述操作系统的所述从核所需的 参数进行大小端模式转换,使得转换后的所述bootloader传递给操作系统的所述从核所 需的参数的大小端模式与所述操作系统所需的大小端模式相同。
[0041] 结合第六方面或第六方面的第一种可能的实现方式,在第六方面的第四种可能 的实现方式中,所述主核,还用于获取所述bootloader传递给所述操作系统的所有参数, 其中,所述bootloader传递给所述操作系统的所有参数的首部添加有第一魔术字;所述 主核,还用于在所述第一魔术字发生变化的情况下,更改所述主核的大小端模式,并将所 述bootloader传递给所述操作系统的所有参数进行大小端模式转换,使得更改后的所述 主核的大小端模式以及转换后的所述bootloader传递给所述操作系统的所有参数的大 小端模式与所述操作系统所需的大小端模式相同;其中,所述bootloader传递给所述操 作系统的所有参数包括:所述bootloader传递给操作系统的所述主核所需的参数和所 述bootloader传递给操作系统的所述从核所需的参数;或者,所述主核,还用于获取所述 bootloader传递给所述操作系统的所述主核所需的参数,其中,所述bootloader传递给所 述操作系统的所述主核所需的参数的首部添加有第二魔术字;所述主核,还用于在所述第 二魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所述bootloader 传递给所述操作系统的所述主核所需的参数进行大小端模式转换,使得更改后的所述主核 的大小端模式以及转换后的所述bootloader传递给操作系统的所述主核所需的参数的大 小端模式与所述操作系统所需的大小端模式相同。
[0042] 结合第六方面的第四种可能的实现方式,在第六方面的第五种可能的实现方式 中,所述从核,还用于获取所述bootloader传递给所述操作系统的所述从核所需的参数, 其中,所述bootloader传递给所述操作系统的所述从核所需的参数的首部添加有第三魔 术字;所述从核,还用于在所述从核确定所述第三魔术字发生变化的情况下,更改所述从核 的大小端模式,使得更改后的所述从核的大小端模式与所述操作系统所需的大小端模式相 同;所述从核,还用于在所述第三魔术字发生变化,且所述主核获取所述bootloader传递 给所述操作系统的所述主核所需的参数的情况下,将所述bootloader传递给所述操作系 统的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给操 作系统的所述从核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
[0043] 结合第六方面或第六方面的第一至第五任一种可能的实现方式,在第六方面的第 六种可能的实现方式中,所述主核,还用于从所述从核配置指令获取所述从核的配置地址; 所述主核,还用于将所述从核的配置地址存储至所述非易失存储器。
[0044] 第七方面,本发明实施例提供了一种bootloader大小端模式自适应的装置,包 括:获取单元,用于获取启动加载器bootloader中设置的当前核的大小端模式;所述获取 单元,还用于获取操作系统所需的大小端模式;处理单元,用于在所述bootloader中设置 的所述当前核的大小端模式与所述操作系统所需的大小端模式不同的情况下,更改所述当 前核的大小端模式,并将所述bootloader传递给所述操作系统的参数进行大小端模式转 换,使得更改后的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操 作系统所需的大小端模式相同。
[0045] 第八方面,本发明实施例提供了一种bootloader大小端模式自适应的装置,包 括:获取单元,用于获取启动加载器bootloader传递给操作系统的参数,其中,所述参数的 首部添加有魔术字;处理单元,用于在所述魔术字发生变化的情况下,更改当前核的大小端 模式,并将所述bootloader传递给所述操作系统的参数进行大小端模式转换,使得更改后 的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操作系统所需的 大小端模式相同。
[0046] 本发明实施例提供了启动多核处理器、bootloader大小端模式自适应的方法及装 置,主核初始化硬件映射,将内存的首地址映射到总线的〇地址,并将从核引导程序存储至 内存的首地址之后连续的存储空间中;主核复位从核,以使得从核的PC (Program Counter, 程序计数器)指针指向总线的0地址,从核被复位后,从总线的0地址对应的内存的首地址 执行从核引导程序;从核执行完从核引导程序后,跳转到操作系统的代码段,完成从核初始 化,并通知所述主核所述从核初始化完成。这样,利用每种型号的多核处理器在从核被复位 后从核的PC指针指向总线的0地址的特性,建立总线的0地址与内存的首地址的映射关 系,并将从核引导程序存储在内存的首地址后的连续的存储空间中,使得从核被复位后能 够通过总线的0地址对应的内存的首地址读取到内存中存储的从核引导程序,并执行所述 从核引导程序,从而就不需要在总线中设定用于存储从核引导程序在内存中的存放地址的 固定地址Α,实现了多核处理器的bootloader与操作系统间固定地址Α的解耦合,不需要根 据每一型号多核处理器设置匹配的操作系统,使得不同版本型号的多核处理器可以使用相 同的操作系统,最终完成多核处理器操作系统的二进制归一,提高了操作系统的兼容性。

【专利附图】

【附图说明】
[0047] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中 所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图 获得其他的附图。
[0048] 图1为本发明实施例提供的操作系统二进制归一示意图;
[0049] 图2为本发明所有实施例适用的一种场景;
[0050] 图3为本发明所有实施例适用的另一种场景;
[0051] 图4为本发明实施例提供的一种启动多核处理器的流程示意图;
[0052] 图5为本发明实施例提供的另一种启动多核处理器的流程示意图;
[0053] 图6为现有技术中处理器核对大小端场景支撑的示意图;
[0054] 图7为本发明实施例提供的另一种启动多核处理器的流程示意图;
[0055] 图8为本发明实施例提供的另一种启动多核处理器的流程示意图;
[0056] 图9为本发明实施例提供的另一种bootloader大小端模式自适应的流程示意 图;
[0057] 图10为本发明实施例提供的另一种bootloader大小端模式自适应的流程示意 图;
[0058] 图11为本发明实施例提供的一种计算节点的结构示意图;
[0059] 图12为本发明实施例提供的另一种计算节点的结构示意图;
[0060] 图13为本发明实施例提供的一种bootloader大小端模式自适应的装置的结构示 意图;
[0061] 图14为本发明实施例提供的另一种bootloader大小端模式自适应的装置的结构 示意图。

【具体实施方式】
[0062] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例,都属于本发明保护的范围。
[0063] 多核处理器(英语:Multi_core processor),也叫多微处理器核心,是将两个或 更多的核装在一个单一集成电路(1C)中的方案。这些核分为一个主核和至少一个从核,每 一个核可以分别独立运行程序指令,利用并行计算的能力,可以加快程序的运行速度,提供 多任务能力。多核处理器中有总线,多核处理器通过总线访问内存或者非易失存储器等多 核处理器的外部器件。
[0064] 操作系统(英语;Operating System,简称0S)是操作系统是管理硬件与软件资 源、控制其他程序运行、为用户提供操作界面的软件的集合。
[0065] Bootloader是在操作系统运行之前运行的一段程序,用于初始化硬件设备、建立 内存空间映射图,从而将操作系统的软硬件环境带到一个合适状态,以便为最终调用操作 系统内核准备好正确的环境。
[0066] 操作系统二进制归一的前后操作系统与bootloader、处理器之间的映射关系如图 1所示。其中,图1左侧表示操作系统二进制归一前,操作系统、bootloader、处理器硬件间 的映射关系;图1右侧表示操作系统二进制归一后,操作系统、bootloader、处理器硬件间 的映射关系。操作系统二进制归一的场景有两种:第一种场景,如图2所示,当产品升级硬 件,即更换处理器时,只将bootloader的版本更换为与处理器对应的版本,不需要更新操 作系统的版本;第二种场景,如图3所示,当处理器对应的bootloader更新时,不需要更新 操作系统的版本,即使用同一操作系统就能够支撑新的bootloader。本发明所有实施例均 适用于以上两种场景。
[0067] 本发明实施例提供了 一种启动多核处理器的方法,应用于包括多核处理器和内存 的计算节点,其中多核处理器通过总线访问内存,该多核处理器包含主核及至少一个从核。 [0068] 需要说明的是,本发明实施例只描述了一个从核的启动过程。如果该多核处理器 包含多个从核的情况下,主核先执行步骤401-402,完成从核引导程序的配置,然后依次使 每一个从核执行步骤403-404,以完成所有从核的启动,这样该多核处理器才完成启动。
[0069] 如图4所示,该方法包括:
[0070] 401、主核执行 bootloader。
[0071] 具体的,首先该多核处理器上电,每一个核都需要判断本核是主核还是从核;然后 判断出是主核的情况下,完成对主核所需硬件的初始化;接着主核进入bootloader的控制 台,判断是否自动启动系统,在确定自动启动系统的情况下,跳转至步骤402开始启动操作 系统,在确定不自动启动系统的情况下,在bootloader的控制台死循环,直到接收到用户 发送启动内核的命令后跳转至步骤402开始启动操作系统。
[0072] 402、主核将从核引导程序存储至内存的首地址之后的连续的存储空间中。
[0073] 其中,所述内存的首地址被映射到所述总线的0地址。
[0074] 需要说明的是,内存的首地址是内存中的地址,总线0的地址是总线上的地址,两 者之间没有固定的映射关系。为了不需要在总线中设定用于存放从核引导程序在内存中的 存放地址的固定地址A,在此需要使内存的首地址映射到总线的0地址,并利用主核复位从 核,从核被复位后PC指针指向总线的0地址的特性,将从核引导程序存储至内存的首地址 后连续的存储空间中,以使得通过总线的〇地址映射的内存的首地址能够获取到从核引导 程序。
[0075] 需要说明的是,在执行步骤402之前,需要保证内存的首地址与总线的0地址存在 映射关系。多核处理器设置有一位特定的寄存器,当主核上电后,寄存器的默认值为1,则主 核跳转至非易失存储器中读取数据;当寄存器的值改为0时,主核从内存中读取数据。当然 对于在不同型号的多核的处理器,此寄存器的状态也可能反过来设置,默认值为0,跳转至 非易失存储器;值为1时,跳转至内存。本实施例中将内存的首地址映射到总线的0地址的 过程,就是设置该寄存器以使得主核能够从内存中读取数据的过程。
[0076] 本发明实施例中的非易失存储器,例如是Norflash(-种闪存)或R0M(Read Only Memory,只读存储器),本发明实施例中的内存例如是DDR (Doub 1 e Data Rate,双倍速率同 步动态随机存储器),SRAM (Static Random Access Memory,静态随机存储器)。本发明实 施例中的多核处理器,例如,MIPS(Microprocessor without Interlocked Piped Stages, 无内部互锁流水级的微处理器)、ARM(英文:Acorn RISC Machine)等精简指令架构的多核 处理器。
[0077] 需要说明的是,在多核处理器包括多个从核的情况下,所有从核的从核引导程序 是共用的,也就是说,每个从核在被复位后,都会到总线的〇地址对应的内存的首地址后连 续的存储空间中去读取相同的从核引导程序。
[0078] 需要说明的是,数据在存储器中的存放顺序分为大端模式和小端模式。大端模式 (Big-Endian)就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。小 端模式(Little-Endian)就是低位字节排放在内存的低地址端,高位字节排放在内存的高 地址端。处理器核的大小端模式必须和数据存储时的大小端模式相同,才能正确的读取数 据。本实施例默认存储的bootloader设置的主核的大小端模式与操作系统所需的大小端 模式相同,所以不需要考虑bootloader中设置的主核的大小端模式是否与操作系统所需 的大小端模式是否相同,
[0079] 执彳了完步骤401后直接执彳了步骤402。
[0080] 403、主核复位至少一个从核中的从核,以使得从核的PC(Program Counter,程序 计数器)指针指向总线的〇地址,从核被复位,通过所述总线访问总线的〇地址映射的内存 的首地址,读取内存中所述内存的首地址后存储的从核引导程序并执行从核引导程序。
[0081] 需要说明的是,本实施例主要是通过所有的多核处理器在主核复位从核后,从核 的PC指针指向总线的0地址的特性,将内存的首地址映射到总线的0地址处,并且将从核 引导程序存储至内存的首地址后连续的存储空间中,不需要为每一型号多核处理器设置匹 配的操作系统,从而实现操作系统的二进制归一。
[0082] 具体的,通过主核复位从核的方式将从核唤醒,从核被主核复位后的PC指针指向 总线的0地址,根据总线的0地址与内存的首地址的映射关系,通过总线访问总线的0地址 映射的内存的首地址,读取并执行存储于内存的首地址后的从核引导程序。
[0083] 需要说明的是,主核每次只复位一个从核,被复位的从核的PC指针会指向总线的 0地址,即被复位的从核被主核唤醒,开始运行。
[0084] 此处没有限制主核对从核进行几次复位,主核可能对从核进行两次复位,也可能 只对从核进行一次复位。
[0085] 404、从核执行完从核引导程序后,跳转到操作系统的代码段,完成从核初始化。
[0086] 具体的,从核初始化的步骤包括:从核Llcache、MMU(Memory Management Unit,内 存管理单元)、TLB(Translation Lookaside Buffer,旁路转换缓冲或页表缓冲)等其它的 初始化;所有核online (上线);该从核加入该多核处理器的调度域。
[0087] 本实施例默认存储的bootloader设置的从核的大小端模式与操作系统所需的大 小端模式相同,所以不需要考虑bootloader中设置的从核的大小端模式是否与操作系统 所需的大小端模式是否相同,执行完步骤403后直接执行步骤404。
[0088] 需要说明的是,主核能够确定所在处理器中一共有几个从核,并且会在共享内存 中设置一个启动标识。主核复位一个从核,在被复位的从核初始化完成后,从核会更改共享 内存中的启动标识,以通知主核该从核启动完毕。同时,主核会轮询共享内存中的启动标 识,根据启动标识判断这个从核是否启动完毕;在启动标识的被更改的情况下,重新初始化 启动标识,开始启动下一个从核。
[0089] 从核初始化完成后,在还有其他从核未启动的情况下,继续执行步骤403-404,对 其他从核进行初始化;当至少一个从核中的每个从核均完成从核初始化后,本发明实施例 的多核处理器完成启动。
[0090] 本发明实施例提供了一种启动多核处理器的方法,在内存的首地址映射总线的0 地址的情况下,将从核引导程序存储至内存的首地址之后的连续的存储空间中;主核复位 从核,以使得从核的PC指针指向总线的0地址,从核被复位后,通过所述总线访问总线的 0地址映射的内存的首地址,读取内存中所述内存的首地址后存储的从核引导程序,并执 行从核引导程序;从核执行完从核引导程序后,跳转到操作系统的代码段,完成从核初始 化。这样,利用每种型号的多核处理器在从核被主核复位后从核的PC指针指向总线的0地 址的特性,建立总线的0地址与内存的首地址的映射关系,并将从核引导程序存储在内存 的首地址后的连续的存储空间中,使得从核被复位后能够通过总线的0地址对应的内存的 首地址读取到内存中存储的从核引导程序,并执行所述从核引导程序,从而就不需要在总 线中设定用于存储从核引导程序在内存中的存放地址的固定地址A,实现了多核处理器的 bootloader与操作系统间固定地址A的解耦合,不需要根据每一型号多核处理器设置匹配 的操作系统,使得不同版本型号的多核处理器可以使用相同的操作系统,最终完成多核处 理器操作系统的二进制归一,提高了操作系统的兼容性。
[0091] 本发明实施例提供了一种启动多核处理器的方法,应用于包括多核处理器和内存 的计算节点,其中该多核处理器通过总线访问内存,该多核处理器包含主核及至少一个从 核。
[0092] 需要说明的是,本发明实施例只描述了一个从核的启动过程。如果该多核处理器 包含多个从核的情况下,主核先执行步骤501-511,完成从核引导程序的配置,然后依次使 每一个从核执行步骤512-523,以完成所有从核的启动,这样该多核处理器才完成启动。
[0093] 如图5所示,该方法包括:
[0094] 501、主核执行 bootloader。
[0095] 具体的,可参考步骤401,在此不再赘述。
[0096] 502、主核在从核引导程序中添加休眠指令。
[0097] 其中,休眠指令用于使从核处于休眠状态。
[0098] 此时,从核引导程序中不仅有原本的启动该从核所需的程序,还有休眠指令,相应 的,主核需要设定从核复位次数,从核根据从核复位次数确定从核被复位以后是执行从核 引导程序中的休眠指令还是执行从核引导程序中启动该从核的相关程序。
[0099] 需要说明的是,从核引导程序中的休眠指令是一条汇编指令,执行这条指令时,从 核停留在这条指令处,等待被中断或者等待主核复位该从核。
[0100] 需要说明的是,若从核处于休眠状态,那么从核满足启动条件,即从核被复位后, 从核的PC指针一定会指向总线的0地址。
[0101] 现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader 的大小端模式与操作系统的大小端模式必须一致,只能用小端模式的bootloader启动小 端模式的操作系统,大端模式的bootloader启动大端模式的操作系统,这样会导致同一个 操作系统不能使用不同大小端模式的bootloader,无法完全实现操作系统的二进制归一。 本实施例中的步骤503-506与步骤507-510是使bootloader中设置的主核的大小端模式 与操作系统的大小端模式兼容的两种方法,所以只需要执行步骤503-506或步骤507-510 中的任一种即可。
[0102] 503、主核获取bootloader中设置的主核的大小端模式。
[0103] 具体的,主核读取主核的状态寄存器,从状态寄存器中存储的大小端模式信息,确 定bootloader中设置的主核的大小端模式。
[0104] 需要说明的是,由于bootloader在编写时与操作系统是相互分离的,所以存在 bootloader中设置的主核的大小端模式与操作系统所需的大小端模式不匹配的可能,为了 同一个操作系统能够使用不同的bootloader,也就是实现多核处理器操作系统的二进制归 一,所以需要将主核的大小端模式进行调整。
[0105] 需要说明的是,bootloader中设置的主核的大小端模式与bootloader的大小端 模式相同,由于bootloader的大小端模式是固定的,并且操作系统所需的大小端模式也是 固定的,而主核的大小端模式是可以改变的,所以需要通过判断bootloader中设置的主核 的大小端模式与操作系统所需的大小端模式是否一致,来判断是否需要更改主核的大小端 模式。
[0106] 504、主核获取操作系统所需的大小端模式。
[0107] 具体的,主核通过数据访问方式读取操作系统代码段的指令,并根据机器码的编 码规则,判断读取系统代码段的指令是否被翻转,从而确定操作系统所需的大小端模式。
[0108] 505、在bootloader中设置的主核的大小端模式与操作系统所需的大小端模式不 同的情况下,主核更改主核的大小端模式,使得更改后的主核的大小端模式与操作系统所 需的大小端模式相同。
[0109] 506、在bootloader中设置的主核的大小端模式与操作系统所需的大小端模式不 同的情况下,主核将bootloader传递给操作系统的所有参数进行大小端模式转换,使得转 换后的bootloader传递给操作系统的所有参数的大小端模式与操作系统所需的大小端模 式相同;或者,主核将bootloader传递给操作系统的主核所需的参数进行大小端模式转 换,使得转换后的bootloader传递给操作系统的主核所需的参数的大小端模式与操作系 统所需的大小端模式相同。
[0110] 其中,bootloader传递给操作系统的所有参数包括:bootloader传递给操作系统 的主核所需的参数和bootloader传递给操作系统的从核所需的参数。
[0111] 需要说明的是,因为bootloader传递给操作系统的参数的大小端模式以及 bootloader中设置的主核的大小端模式与bootloader的大小端模式一致。所以在 bootloader中设置的主核的大小端模式与操作系统所需的大小端模式不相同,也就是, bootloader传递给操作系统的参数的大小端模式与操作系统所需的大小端模式不相同, 此时,需要将bootloader传递给操作系统的参数的大小端模式进行转换,使得转换后的参 数的大小端模式与所述操作系统所需的大小端模式相同,以便操作系统能够正确读取该参 数。
[0112] 需要说明的是,主核此时转换的参数有两种情况:第一种情况,主核将 bootloader传递给操作系统的所有参数都进行大小端模式转换,此时,主核转换的参数包 括:bootloader传递给操作系统的主核所需的参数和bootloader传递给操作系统的从核 所需的参数;第二种情况,主核在此只将bootloader传递给操作系统的主核所需的参数进 行大小端模式转换,这种情况下,从核在跳转到操作系统时,才确定是否将bootloader传 递给操作系统的从核需要的参数进行大小端模式转换。
[0113] 需要说明的是,bootloader传递给操作系统的参数包括内存的大小,串口传输速 率等信息。
[0114] 需要说明的是,在bootloader中设置的主核的大小端模式与操作系统所需的大 小端模式相同的情况下,不执行步骤505-506,直接执行步骤511。
[0115] 需要说明的是,根据主核获取的参数是bootloader传递给操作系统的所有参数, 还是bootloader传递给操作系统的所有参数中主核所需的参数,分别执行步骤507-508或 者步骤509-510。
[0116] 507、主核获取bootloader传递给操作系统的所有参数。
[0117] 其中,bootloader传递给操作系统的所有参数的首部添加有第一魔术字。 bootloader传递给操作系统的所有参数包括:bootloader传递给操作系统的主核所需的 参数和bootloader传递给操作系统的从核所需的参数。
[0118] 第一魔术字是预先设定的由出现频率低且较奇特的数字或字母的组合。第一魔术 字用于判断bootloader中设置的主核的大小端模式与操作系统所需的大小端模式是否相 同。
[0119] 此时,bootloader是将操作系统所需的所有参数一次全部传递给操作系统。 bootloader传递给操作系统的参数包括内存的大小,串口传输速率等信息。
[0120] 508、在第一魔术字发生变化的情况下,主核更改主核的大小端模式,并将 bootloader传递给操作系统的所有参数进行大小端模式转换,使得更改后的主核的大小端 模式以及转换后的bootloader传递给操作系统的所有参数的大小端模式与所述操作系统 所需的大小端模式相同。
[0121] 具体的,主核将获取到的第一魔术字与预先存储的第一魔术字比较,当获取的第 一魔术字与预先存储的第一魔术字不同,就说明主核的大小端模式与操作系统所需的大小 端模式不同,主核更改主核的大小端模式,并将bootloader传递给操作系统的参数进行大 小端模式转换。
[0122] 需要说明的是,在第一魔术字没有发生变化的情况下,不执行步骤508,直接执行 步骤511。
[0123] 509、主核获取bootloader传递给操作系统的所述主核所需的参数。
[0124] 其中,所述bootloader传递给所述操作系统的所述主核所需的参数的首部添加 有第二魔术字。
[0125] 第二魔术字也是预先设定的由出现频率低且较奇特的数字或字母的组合,但是第 二魔术字与第一魔术字不同。
[0126] 510、在第二魔术字发生变化的情况下,主核更改主核的大小端模式,并将 bootloader传递给操作系统的主核所需的参数进行大小端模式转换,使得更改后的所述主 核的大小端模式以及转换后的bootloader传递给操作系统的主核所需的参数的大小端模 式与操作系统所需的大小端模式相同。
[0127] 具体的,主核将获取到的第二魔术字与预先存储的第二魔术字比较,当获取的第 二魔术字与预先存储的第二魔术字不同,就说明主核的大小端模式与操作系统所需的大小 端模式不同,主核更改主核的大小端模式,并将bootloader传递给操作系统的主核所需的 参数进行大小端模式转换。
[0128] 需要说明的是,在第二魔术字没有发生变化的情况下,不执行步骤510,直接执行 步骤511。
[0129] 511、主核将从核引导程序存储至内存的首地址之后的连续的存储空间中。
[0130] 其中,内存的首地址被映射到总线的0地址。
[0131] 具体的,可参考步骤402,在此不再赘述。
[0132] 512、主核获取从核的状态。
[0133] 需要说明的是,主核需要确定从核的状态,进而确定对从核进行一次复位还是两 次复位。
[0134] 513、主核确定从核处于激活状态时,主核设置从核的复位次数为两次。
[0135] 需要说明的是,如果从核处于激活状态,那么可能从核的相关硬件不满足从核启 动所需的条件,所以需要对从核进行两次复位。第一次主核复位从核,是为了使从核执行从 核引导程序中的休眠指令,进入休眠状态,也就是说是为了配置相关硬件,以使得满足从核 启动所需的条件;第二次主核复位从核,是为了使从核执行引导程序中启动从核所需的程 序,完成从核的启动。
[0136] 需要说明的是,主核将从核的复位次数存储于固定的总线地址中,从核被复位后 从固定的总线地址中读取自身的复位次数,以判断执行从核引导程序中的休眠指令或从核 引导程序中启动该从核的相关程序。
[0137] 514、主核确定从核处于休眠状态或未启动状态时,主核设置从核的复位次数为一 次。
[0138] 需要说明的是,如果从核处于休眠状态或未启动状态,那么从核的相关硬件满足 从核启动所需的条件,所以只需要对从核进行一次复位就可以完成从核的启动。
[0139] 515、主核复位从核,以使从核的PC指针指向总线的0地址,从核被复位,通过所述 总线访问总线的〇地址映射的内存的首地址,读取内存中内存首地址后存储的从核引导程 序并执行从核引导程序。
[0140] 具体的,步骤515可以分解为以下三个步骤:
[0141] 步骤一:主核复位从核,从核被复位,从核的PC指针指向总线的0地址,并获取从 核的复位次数。
[0142] 需要说明的是,从核获取的从核的复位次数的值可能是一次,也有可能是两次。
[0143] 具体的,在主核将从核的复位次数存储至总线的固定地址中的情况下,从核获取 自身复位次数的过程就是从核到总线固定地址读取该固定地址中存储的值的过程。
[0144] 需要说明的是,从核需要根据复位次数来判断跳转至总线空间0地址对应的内存 空间首地址后,是执行从核引导程序中启动从核的程序,还是执行从核引导程序中的休眠 指令。
[0145] 步骤二、在从核的复位次数为两次的情况下,从核通过总线访问总线空间0地址 映射的内存的首地址,读取并执行从核引导程序中的休眠指令,将从核的复位次数减一并 等待从核再次被主核复位。
[0146] 需要说明的是,在从核确定需要进行两次复位的情况下,步骤一和步骤二使得从 核完成第一次复位,从核从激活状态变为休眠状态,也就是配置相关硬件满足了从核启动 的条件,并等待主核第二次复位,以完成从核启动。
[0147] 需要说明的是,在从核进入休眠状态的同时,主核会将从核的复位次数减一,以使 得从核在进行第二次复位时,判断出的复位次数为一次,从而执行从核引导程序中除休眠 指令之外的程序,而不是执行从核引导程序中的休眠指令。
[0148] 需要说明的是,从核进入休眠状态后,等待第二次被主核复位,在从核第二次被主 核复位的情况下,跳转至步骤一。
[0149] 步骤三:在从核的复位次数为一次的情况下,从核通过总线访问总线的0地址映 射的内存的首地址,读取并执行从核引导程序中除休眠指令之外的程序,完成从核的启动。
[0150] 需要说明的是,在主核对从核进行两次复位的情况下,执行步骤顺序为:步骤一、 步骤二、步骤一、步骤三;在主核对从核进行一次复位的情况下,执行步骤顺序为:步骤一、 步骤三。
[0151] 需要说明的是,为了提高从核引导程序的健壮性,避免程序被篡改,可以在从核引 导程序的最前端加入一些出现频率低且较奇特的数字或字母组成的魔术字。在从核读取自 身的引导程序之前,判断从核引导程序的魔术字与系统预定义的从核引导程序的魔术字是 否相同,来判断存储的从核引导程序是否经过篡改。在从核引导程序的魔术字与系统预定 义的从核引导程序的魔术字相同的情况下,从核才读取从核引导程序,执行从核引导程序 中的休眠指令或者执行从核引导程序中除休眠指令外的其他程序;在从核引导程序的魔术 字与系统预定义的从核引导程序的魔术字不相同的情况下,说明从核引导程序经过篡改, 从核不能获取正确的从核引导程序,所以该从核启动失败,此时不用执行以下所有步骤。
[0152] 现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader 的大小端模式与操作系统的大小端模式必须一致,只能用小端模式的bootloader启动小 端模式的操作系统,大端模式的bootloader启动大端模式的操作系统,这样会导致同一个 操作系统不能使用不同大小端模式的bootloader,无法完全实现操作系统的二进制归一。 本实施例中的步骤516-519与步骤520-522是使bootloader中设置的从核的大小端模式 与操作系统的大小端模式兼容的两种方法,所以只需要执行步骤516-519或步骤520-522 中的任一种即可。
[0153] 需要说明的是,数据在存储器中的存放顺序分为大端模式和小端模式。大端模式 (Big-Endian)就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。小 端模式(Little-Endian)就是低位字节排放在内存的低地址端,高位字节排放在内存的高 地址端。处理器核的大小端模式必须和数据存储时的大小端模式相同,才能正确的读取数 据。
[0154] 516、从核执行完从核引导程序后,从核获取bootloader中设置的从核的大小端 模式。
[0155] 具体的,从核读取本从核的状态寄存器,从状态寄存器中存储的大小端模式信息, 确定bootloader中设置的从核的大小端模式。
[0156] 需要说明的是,由于bootloader在编写时与操作系统是相互分离的,所以存在 bootloader中设置的从核的大小端模式与操作系统所需的大小端模式不匹配的可能,为了 同一个操作系统能够使用不同的bootloader,也就是实现多核处理器操作系统的二进制归 一,所以需要将从核的大小端模式进行调整,并将bootloader传递给操作系统的参数进行 大小端模式转换。
[0157] 需要说明的是,bootloader中设置的从核的大小端模式与bootloader的大小端 模式相同,由于bootloader的大小端模式是固定的,并且操作系统所需的大小端模式也是 固定的,而从核的大小端模式是可以改变的,所以需要通过判断bootloader中设置的从核 的大小端模式与操作系统所需的大小端模式是否一致,来判断是否需要更改从核的大小端 模式。
[0158] 517、从核获取操作系统所需的大小端模式。
[0159] 具体的,从核通过数据访问方式读取操作系统代码段的指令,并根据机器码的编 码规则,判断读取系统代码段的指令是否被翻转,从而确定操作系统所需的大小端模式。
[0160] 518、若bootloader中设置的从核的大小端模式与操作系统所需的大小端模式不 同,则从核更改从核的大小端模式,使得更改后的从核的大小端模式与操作系统所需的大 小端模式相同。
[0161] 需要说明的是,因为bootloader传递给操作系统的参数的大小端模式是与 bootloader中设置的从核的大小端模式相同,所以在从核的大小端模式与操作系统所需的 大小端模式不相同的情况下,需要将从核的大小端模式进行转换,使得更改后的从核的大 小端模式与所述操作系统所需的大小端模式相同,以便操作系统能够正确读取操作系统。
[0162] 519、在bootloader中设置的从核的大小端模式与操作系统所需的大小端模式不 同,且主核将bootloader传递给操作系统的主核所需的参数进行大小端模式转换的情况 下,从核将bootloader传递给操作系统的从核所需的参数进行大小端模式转换,使得转换 后的bootloader传递给操作系统的从核所需的参数的大小端模式与操作系统所需的大小 端模式相同。
[0163] 需要说明的是,在主核只将bootloader传递给操作系统的主核所需的参数进行 大小端模式转换,而不是将bootloader传递给操作系统的所有参数进行大小端模式转换 的情况下,bootloader传递给操作系统的参数中从核所需的参数还没有经过大小端模式 转换。所以在从核的大小端模式与操作系统所需的大小端模式不同的情况下,进一步还要 将将bootloader传递给操作系统的从核所需的参数进行大小端模式转换使得转换后的 bootloader传递给操作系统的从核所需的参数的大小端模式与操作系统所需的大小端模 式相同。
[0164] 需要说明的是,在主核将bootloader传递给操作系统的所有参数进行大小端模 式转换的情况下,bootloader传递给操作系统的参数中从核所需的参数已经经过大小端模 式转换,与操作系统所需的大小端模式相同,所以此种情况下,不执行步骤519。
[0165] 需要说明的是,在从核确定从核的大小端模式与操作系统所需的大小端模式相同 的情况下,不执行步骤518-519,直接执行步骤523。
[0166] 520、从核获取bootloader传递给操作系统的从核所需的参数。
[0167] 其中,bootloader传递给操作系统的从核所需的参数的首部添加有第三魔术字。
[0168] 需要说明的是,第三魔术字也是预先设定的由出现频率低且较奇特的数字或字母 的组合,但是第二魔术字与第一魔术字和第二魔术字均不同。
[0169] 需要说明的是,第三魔术字的大小端模式与bootloader中设置的从核的大小端 模式相同。如果从核读取的第三魔术字正确,就说明操作系统的大小端模式与bootloader 中设置的从核的大小端模式相同;如果根据操作系统读取的参数的魔术字不正确,就说明 操作系统的大小端模式与bootloader中设置的从核的大小端模式不相同。
[0170] 521、在从核确定第三魔术字发生变化的情况下,从核更改从核的大小端模式,使 得更改后的从核的大小端模式与操作系统所需的大小端模式相同。
[0171] 具体的,从核将获取到的第三魔术字与预先存储的第三魔术字比较,当获取的第 三魔术字与预先存储的第三魔术字不同,就说明从核的大小端模式与操作系统所需的大小 端模式不同,从核更改从核的大小端模式。
[0172] 522、在从核确定第三魔术字发生变化,且主核获取bootloader传递给所述操作 系统的主核所需的参数的情况下,从核将bootloader传递给操作系统的从核所需的参数 进行大小端模式转换,使得转换后的bootloader传递给操作系统的从核所需的参数的大 小端模式与操作系统所需的大小端模式相同。
[0173] 需要说明的是,在主核只将bootloader传递给操作系统的主核所需的参数进行 大小端模式转换,而不是将bootloader传递给操作系统的所有参数进行大小端模式转换 的情况下,bootloader传递给操作系统的参数中从核所需的参数还没有经过大小端模式 转换。所以在从核的大小端模式与操作系统所需的大小端模式不同的情况下,进一步还 要将bootloader传递给操作系统的从核所需的参数进行大小端模式转换使得转换后的 bootloader传递给操作系统的从核所需的参数的大小端模式与操作系统所需的大小端模 式相同。
[0174] 需要说明的是,在主核将bootloader传递给操作系统的所有参数进行大小端模 式转换的情况下,bootloader传递给操作系统的参数中从核所需的参数已经经过大小端模 式转换,与操作系统所需的大小端模式相同,所以此种情况下,不执行步骤522。
[0175] 需要说明的是,在第三魔术字没有发生变化的情况下,不执行步骤521-522,直接 执行步骤523。
[0176] 523、跳转到操作系统的代码段,完成从核初始化。
[0177] 具体的,可参考步骤404,在此不再赘述。
[0178] 需要说明的是,执行步骤523时,已经能够保证从核的大小端模式与操作系统所 需的大小端模式完全相同。
[0179] 本发明实施例提供了一种启动多核处理器的方法,主核在从核引导程序中添加休 眠指令;判断bootloader中设置的主核的大小端模式与操作系统所需的主核的大小端模 式是否相同,在不相同的情况下,更改主核的大小端模式;在内存的首地址映射到总线的〇 地址的情况下,将从核引导程序存储至内存的首地址之后连续的存储空间中;主核获取从 核的状态,根据从核状态设定从核复位次数;主核对从核进行一次或者两次复位,以使从核 的PC指针指向总线的0地址,从核通过所述总线访问总线的0地址映射的内存的首地址, 读取并执行从核引导程序;从核执行完从核引导程序后,判断bootloader中设置的从核的 大小端模式与操作系统所需的从核的大小端模式是否相同,在两者不相同的情况下,更改 从核的大小端模式,并将bootloader传递给操作系统的参数进行大小端模式转换;最后跳 转到操作系统的代码段,完成从核初始化。这样,利用每种型号的多核处理器在从核被复 位后从核的PC指针指向总线的0地址的特性,在总线的0地址与内存的首地址存在映射 关系的情况下,将从核引导程序存储在内存的首地址后的连续的存储空间中,使得从核被 复位后能够通过总线的〇地址对应的内存的首地址读取到内存中存储的从核引导程序,并 执行所述从核引导程序,从而就不需要在总线中设定用于存储从核引导程序在内存中的存 放地址的固定地址A,实现了多核处理器的bootloader与操作系统间固定地址A的解奉禹 合,不需要根据每一型号多核处理器设置匹配的操作系统,使得不同版本型号的多核处理 器可以使用相同的操作系统,最终完成多核处理器操作系统的二进制归一,提高了操作系 统的兼容性。并且本实施例中考虑到从核处于激活状态的情况下,复位后不能满足从核启 动条件,所以此时对从核进行两次复位,第一次主核复位从核使得从核满足启动条件,第二 次主核复位从核使得成功启动,从而进一步保证了从核的成功启动。同时,本实施例中根据 bootloader中设置的主核或从核的大小端模式与操作系统所需的大小端模式确定是否更 改主核或从核的大小端模式,使得多核处理器使用同一个操作系统可以兼容不同大小端模 式的bootloader,进一步减少了多核处理器操作系统二进制归一的约束,提高了操作系统 的兼容性。最终,本发明解除了两个操作系统二进制归一的使用约束,使得同一版本的操作 系统能运行于更多的bootloader和处理器,极大提高开发、测试、维护的效率,同时减少开 发、测试、维护的成本。
[0180] 本发明实施例提供了一种启动多核处理器的方法,应用于包括多核处理器、内存 和非易失存储器的计算节点,其中多核处理器通过总线访问内存以及非易失存储器,该多 核处理器包含主核及至少一个从核。
[0181] 需要说明的是,本发明实施例只描述了一个从核的启动过程。如果该多核处理器 包含多个从核的情况下,主核先执行步骤701-702,完成从核引导程序的配置,然后依次使 每一个从核执行步骤703-704,以完成所有从核的启动,这样该多核处理器才完成启动。
[0182] 如图7所示,该方法包括:
[0183] 701、主核从从核配置指令中,或者从非易失存储器中获取从核的配置地址。
[0184] 其中,从核配置指令设置于bootloader中。
[0185] 需要说明的是,非易失存储器用于存储从bootloader的从核配置指令获取的从 核的配置地址。从核的配置地址是内存中的一个地址。
[0186] 需要说明的是,本实施例在bootloader中增加了从核配置指令,使从核跳转地址 动态可配。同时,bootloader的操作界面提供了人机交互的可能,用户可以在bootloader 的操作界面中配置从核跳转地址。
[0187] 需要说明的是,若第一次启动该多核处理器,那么主核通过bootloader中的从核 配置指令获取从核配置地址,并将该从核配置地址存储于非易失存储器中,以使得从核在 被主核唤醒后,能够从非易失存储器中获取到该配置地址;若不是第一次启动该多核处理 器,那么主核就可以从非易失存储器获取已存储的从核配置地址。
[0188] 702、主核将从核引导程序存储至内存中配置地址之后的连续的存储空间中。
[0189] 需要说明的是,主核将从核引导程序存储至内存中从核配置地址后连续的存储空 间中,以使得从核被唤醒后跳转至内存中从核的配置地址读取到从核引导程序。
[0190] 703、主核向从核发送核间中断消息,使得从核通过所述总线访问配置地址,读取 内存中配置地址后存储的从核引导程序并执行从核引导程序。
[0191] 具体的,从核接收到核间中断消息,从核从非易失存储器中获取从核配置地址,跳 转到从核配置地址,并通过总线访问内存中该从核配置地址后连续的存储空间中存储的从 核引导程序。
[0192] 需要说明的是,主核向从核发送核间中断的方法与现有技术中主核向从核发送核 间中断的方法相同,在此不再赘述。
[0193] 需要说明的是,主核向从核发送核间中断唤醒从核,以使得从核开始启动。
[0194] 704、从核执行完从核引导程序后,跳转到操作系统的代码段,完成从核初始化。
[0195] 从核初始化的步骤包括:从核Llcache、MMU(Memory Management Unit,内存管理 单元)、TLB(Translation Lookaside Buffer,旁路转换缓冲或页表缓冲)等其它的初始化; 所有核online (上线);该从核加入该多核处理器的调度域。
[0196] 需要说明的是,需要说明的是,数据在存储器中的存放顺序分为大端模式和小端 模式。大端模式(Big-Endian)就是高位字节排放在内存的低地址端,低位字节排放在内存 的高地址端。小端模式(Little-Endian)就是低位字节排放在内存的低地址端,高位字节 排放在内存的高地址端。处理器核的大小端模式必须和数据存储时的大小端模式相同,才 能正确的读取数据。本实施例默认存储的bootloader设置的从核的大小端模式与操作系 统所需的大小端模式相同,所以不需要考虑bootloader中设置的从核的大小端模式是否 与操作系统所需的大小端模式是否相同,执行完步骤703后直接执行步骤704。
[0197] 从核初始化完成后,在还有其他从核未启动的情况下,继续执行步骤703-704,对 其他从核进行初始化;当至少一个从核中的每个从核均完成从核初始化后,本发明实施例 的多核处理器完成启动。
[0198] 本发明实施例提供了一种启动多核处理器的方法,主核从从核配置指令中或者从 非易失存储器中获取从核配置地址,并将从核引导程序存储至内存中从核配置地址后连续 的存储空间中,然后向从核发送核间中断,唤醒从核,从核从配置地址开始执行从核引导程 序,从核执行完从核引导程序后,跳转到操作系统的代码段,完成从核初始化。这样对于不 同的多核处理器,用户可以根据不同型号的处理器灵活设置从核配置地址,即从核引导程 序的存储地址,而不用根据不同型号的处理器设置对应去除了多核处理器的bootloader 与操作系统间固定地址A的耦合,使得不同型号的多核处理器可以使用相同的操作系统, 最终完成多核处理器操作系统的二进制归一,提高了操作系统的兼容性。
[0199] 本发明实施例提供了一种启动多核处理器的方法,方法应用于包括多核处理器、 内存和存储器的计算节点,其中多核处理器通过总线访问内存以及非易失存储器,多核处 理器包含主核及至少一个从核。
[0200] 需要说明的是,本发明实施例只描述了一个从核的启动过程。如果该多核处理器 包含多个从核的情况下,主核先执行步骤801-812,完成从核引导程序的配置,然后依次使 每一个从核执行步骤813-821,以完成所有从核的启动,这样该多核处理器才完成启动。
[0201] 如图8所示,该方法包括:
[0202] 801、主核从从核配置指令获取从核的配置地址。
[0203] 需要说明的是,当第一次启动该多核处理器或者用户想改变从核引导程序的存储 地址时,主核需要从bootloader的操作界面上获取从核配置地址。
[0204] 802、主核将从核的配置地址存储至非易失存储器。
[0205] 需要说明的是,主核从bootloader的操作界面上获取从核配置地址后,需要将该 从核配置地址存储于非易失存储器中,以使得在之后的启动过程中不用每一次都重新配置 该从核配置地址,而是直接从非易失存储器中获取从核配置地址。
[0206] 803、主核从从核配置指令中,或者从非易失存储器中获取从核的配置地址。
[0207] 其中,其中,从核配置指令设置于bootloader中,用于设置从核的配置地址。非易 失存储器用于存储从从核配置指令获取的从核配置地址。从核配置地址是内存中的一个地 址。
[0208] 具体的,可参考步骤701,在此不再赘述。
[0209] 现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader 的大小端模式与操作系统的大小端模式必须一致,只能用小端模式的bootloader启动小 端模式的操作系统,大端模式的bootloader启动大端模式的操作系统,这样会导致同一个 操作系统不能使用不同大小端模式的bootloader,无法完全实现操作系统的二进制归一。 本实施例中的步骤804-807与步骤808-811是使bootloader中设置的主核的大小端模式 与操作系统的大小端模式兼容的两种方法,所以只需要执行步骤804-807或步骤808-811 中的任一种即可。
[0210] 804、主核获取bootloader中设置的主核的大小端模式。
[0211] 具体的,可参考步骤503,在此不再赘述。
[0212] 805、主核获取操作系统所需的大小端模式。
[0213] 具体的,可参考步骤504,在此不再赘述。
[0214] 806、在bootloader中设置的主核的大小端模式与操作系统所需的大小端模式不 同的情况下,主核更改所述主核的大小端模式,使得更改后的所述主核的大小端模式与所 述操作系统所需的大小端模式相同。
[0215] 807、在bootloader中设置的主核的大小端模式与操作系统所需的大小端模式不 同的情况下,主核将bootloader传递给操作系统的所有参数进行大小端模式转换,使得转 换后的bootloader传递给操作系统的所有参数的大小端模式与操作系统所需的大小端模 式相同;或者,主核将bootloader传递给操作系统的主核所需的参数进行大小端模式转 换,使得转换后的bootloader传递给操作系统的主核所需的参数的大小端模式与操作系 统所需的大小端模式相同。
[0216] 其中,bootloader传递给操作系统的所有参数包括:bootloader传递给操作系统 的主核所需的参数和bootloader传递给操作系统的从核所需的参数。
[0217] 具体的,可参考步骤506,在此不再赘述。
[0218] 需要说明的是,在bootloader中设置的主核的大小端模式与操作系统所需的大 小端模式相同的情况下,不执行步骤806-807,直接执行步骤812。
[0219] 需要说明的是,根据主核获取的参数是bootloader传递给操作系统的所有参数, 还是bootloader传递给操作系统的所有参数中主核所需的参数,分别执行步骤808-809或 者步骤810-811。
[0220] 808、主核获取bootloader传递给操作系统的所有参数。
[0221] 其中,bootloader传递给操作系统的所有参数的首部添加有第一魔术字。
[0222] 具体的,可参考步骤507,在此不再赘述。
[0223] 809、在第一魔术字发生变化的情况下,主核更改主核的大小端模式,并将 bootloader传递给操作系统的所有参数进行大小端模式转换,使得更改后的主核的大小端 模式以及转换后的bootloader传递给操作系统的所有参数的大小端模式与操作系统所需 的大小端模式相同。
[0224] 其中,bootloader传递给操作系统的所有参数包括:bootloader传递给操作系统 的主核所需的参数和bootloader传递给操作系统的从核所需的参数。
[0225] 具体的,可参考步骤508,在此不再赘述。
[0226] 需要说明的是,在第一魔术字没有发生变化的情况下,不执行步骤809,直接执行 步骤812。
[0227] 810、主核获取bootloader传递给操作系统的所述主核所需的参数。
[0228] 其中,bootloader传递给操作系统的主核所需的参数的首部添加有第二魔术字。
[0229] 具体的,可参考步骤509,在此不再赘述。
[0230] 811、在第二魔术字发生变化的情况下,主核更改主核的大小端模式,并将 bootloader传递给操作系统的所述主核所需的参数进行大小端模式转换,使得更改后的主 核的大小端模式以及转换后的bootloader传递给操作系统的主核所需的参数的大小端模 式与操作系统所需的大小端模式相同。
[0231] 具体的,可参考步骤510,在此不再赘述。
[0232] 需要说明的是,在第二魔术字没有发生变化的情况下,不执行步骤811,直接执行 步骤812。
[0233] 812、主核将从核引导程序存储至内存中配置地址之后的连续的存储空间中。
[0234] 具体的,可参考步骤702,在此不再赘述。
[0235] 813、主核向从核发送核间中断消息,使得从核通过总线访问配置地址,读取内存 中配置地址后存储的从核引导程序并执行从核引导程序。
[0236] 具体的,可参考步骤703,在此不再赘述。
[0237] 现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader 的大小端模式与操作系统的大小端模式必须一致,只能用小端模式的bootloader启动小 端模式的操作系统,大端模式的bootloader启动大端模式的操作系统,这样会导致同一个 操作系统不能使用不同大小端模式的bootloader,无法完全实现操作系统的二进制归一。 本实施例中的步骤814-817与步骤818-820是使bootloader中设置的从核的大小端模式 与操作系统的大小端模式兼容的两种方法,所以只需要执行步骤814-817或步骤818-820 中的任一种即可。
[0238] 814、从核执行完从核引导程序后,从核获取bootloader中设置的所述从核的大 小端模式。
[0239] 具体的,可参考步骤516,在此不再赘述。
[0240] 815、从核获取操作系统所需的大小端模式。
[0241] 具体的,可参考步骤517,在此不再赘述。
[0242] 816、在bootloader中设置的所述从核的大小端模式与操作系统所需的大小端模 式不同的情况下,从核更改从核的大小端模式,使得更改后的从核的大小端模式与操作系 统所需的大小端模式相同。
[0243] 具体的,可参考步骤518,在此不再赘述。
[0244] 817、在bootloader中设置的从核的大小端模式与操作系统所需的大小端模式不 同,且主核将bootloader传递给操作系统的主核所需的参数进行大小端模式转换的情况 下,从核将bootloader传递给操作系统的从核所需的参数进行大小端模式转换,使得转换 后的bootloader传递给操作系统的从核所需的参数的大小端模式与操作系统所需的大小 端模式相同。
[0245] 具体的,可参考步骤519,在此不再赘述。
[0246] 需要说明的是,在主核将bootloader传递给操作系统的所有参数进行大小端模 式转换的情况下,bootloader传递给操作系统的参数中从核所需的参数已经经过大小端模 式转换,与操作系统所需的大小端模式相同,所以此种情况下,不执行步骤817。
[0247] 需要说明的是,在从核确定从核的大小端模式与操作系统所需的大小端模式相同 的情况下,不执行步骤816-817,直接执行步骤821。
[0248] 818、从核获取bootloader传递给操作系统的从核所需的参数。
[0249] 其中,bootloader传递给操作系统的从核所需的参数的首部添加有第三魔术字。
[0250] 具体的,可参考步骤520,在此不再赘述。
[0251] 819、在从核确定第三魔术字发生变化的情况下,从核更改从核的大小端模式,使 得更改后的从核的大小端模式与操作系统所需的大小端模式相同。
[0252] 具体的,可参考步骤521,在此不再赘述。
[0253] 820、在从核确定第三魔术字发生变化,且主核获取bootloader传递给操作系统 的主核所需的参数的情况下,从核将所述bootloader传递给操作系统的从核所需的参数 进行大小端模式转换,使得转换后的bootloader传递给操作系统的从核所需的参数的大 小端模式与操作系统所需的大小端模式相同。
[0254] 具体的,可参考步骤522,在此不再赘述。
[0255] 需要说明的是,在主核将bootloader传递给操作系统的所有参数进行大小端模 式转换的情况下,bootloader传递给操作系统的参数中从核所需的参数已经经过大小端模 式转换,与操作系统所需的大小端模式相同,所以此种情况下,不执行步骤820。
[0256] 需要说明的是,在第三魔术字没有发生变化的情况下,不执行步骤819-820,直接 执行步骤821。
[0257] 821、从核跳转到操作系统的代码段,完成从核初始化。
[0258] 从核初始化完成后,在还有其他从核未启动的情况下,继续执行步骤813-821,对 其他从核进行初始化;在所有从核都已经启动的情况下,完成该多核处理器的启动。
[0259] 需要说明的是,执行步骤821时,已经能够保证从核的大小端模式与操作系统所 需的大小端模式完全相同。
[0260] 本发明实施例提供了一种启动多核处理器的方法,通过新增的bootloader的从 核配置指令获取用户配置的从核配置地址;判断bootloader中设置的主核的大小端模式 与操作系统所需的主核的大小端模式是否相同,在不相同的情况下,更改主核的大小端模 式,使得更改后的主核的大小端模式与操作系统所需的主核的大小端模式相同;将从核引 导程序存放至从核配置地址后连续的存储空间中,然后唤醒从核,从核根据用户配置的从 核配置地址读取从核引导程序,从核执行完从核引导程序后,判断bootloader中设置的从 核的大小端模式与操作系统所需的从核的大小端模式是否相同,在不相同的情况下,更改 从核的大小端模式,并将bootloader传递给操作系统的参数进行大小端模式转换;最后跳 转到操作系统的代码段,完成从核初始化。这样,用户可以根据每一型号的处理器用户可 以根据不同型号的处理器灵活设置从核配置地址,即从核引导程序的存储地址,而不用根 据不同型号的处理器设置对应去除了多核处理器的bootloader与操作系统间固定地址A 的耦合,使得不同型号的多核处理器可以使用相同的操作系统,最终完成多核处理器操作 系统的二进制归一,提高操作系统的兼容性。同时,本实施例中根据bootloader中设置的 主核或从核的大小端模式与操作系统所需的大小端模式确定是否更改主核或从核的大小 端模式,使得多核处理器使用同一个操作系统可以兼容不同大小端模式的bootloader,进 一步减少了多核处理器操作系统二进制归一的约束,提高操作系统的兼容性。最终,本发 明解除了两个操作系统二进制归一的使用约束,使得同一版本的操作系统能运行于更多的 bootloader和处理器,极大提高开发、测试、维护的效率,同时减少开发、测试、维护的成本。
[0261] 本发明实施例还提供了一种bootloader大小端模式自适应的方法,该处理器包 括至少一个内核。
[0262] 本实施例不仅适用于多核处理器的启动,同样适用于单核处理器的启动。
[0263] 现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader 的大小端模式与操作系统的大小端模式必须一致,只能用小端模式的bootloader启动小 端模式的操作系统,大端模式的bootloader启动大端模式的操作系统,这样会导致同一个 操作系统不能使用不同大小端模式的bootloader,无法完全实现操作系统的二进制归一。 本实施例中是使bootloader的大小端模式与操作系统的大小端模式兼容的一种方法。
[0264] 如图9所示,包括:
[0265] 901、执行 bootloader。
[0266] 需要说明的是,在处理器是多核处理器的情况下,多核处理器中的主核执行 bootloader,完成主核及操作系统所需硬件的初始化。在处理器是单核处理器的情况下,该 单核执行bootloader,完成自身及操作系统所需硬件的初始化。
[0267] 需要说明的是,在处理器是多核处理器的情况下,主核执行完bootloader之后, 执行步骤902-905,然后依次唤醒从核,从核执行自身的引导程序之后,执行步骤902-905, 完成自身的启动。在处理器是多核处理器的情况下,该单核执行完bootloader之后,依次 执行步骤902-905,完成本处理器的启动。
[0268] 902、获取bootloader中设置的当前核的大小端模式。
[0269] 具体的,当前核(current core)获取bootloader中设置的处理器的大小端模式, 可参考步骤503中主核获取bootloader中设置的主核的大小端模式,在此不再赘述。
[0270] 需要说明的是,所述当前核是指当前运行的核。此处的当前核可能是多核处理器 中的主核或从核,也可能是单核处理器中的单核。
[0271] 903、获取操作系统所需的大小端模式。
[0272] 具体的,当前核获取操作系统所需的大小端模式,可参考步骤504中主核获取操 作系统所需的大小端模式,在此不再赘述。
[0273] 904、若bootloader中设置的当前核的大小端模式与操作系统所需的大小端模式 不同,则更改当前核的大小端模式,并将bootloader传递给操作系统的参数进行大小端模 式转换,使得更改后的当前核的大小端模式以及参数转换后的大小端模式与操作系统所需 的大小端模式相同。
[0274] 具体的,当前核更改自己的大小端模式,并将bootloader传递给操作系统的 参数进行大小端模式转换,可参考步骤505-506中主核更改主核的大小端模式,并将 bootloader传递给操作系统的参数进行大小端模式转换,在此不再赘述。
[0275] 需要说明的是,在bootloader中设置的当前核的大小端模式与操作系统所需的 大小端模式相同的情况下,不执行步骤904,直接执行步骤905。
[0276] 905、跳转至操作系统的代码段,完成初始化。
[0277] 需要说明的是,多核处理器中的从核在执行完步骤905后,还需要对未启动的其 他从核进行初始化,直到所有从核初始化完毕,那么该多核处理器启动完毕。单核处理器的 单核执行完步骤905后,就完成了该单核处理器的启动。
[0278] 本发明实施例提供了一种bootloader大小端模式自适应的方法,获取 bootloader中设置的当前核的大小端模式和操作系统所需的大小端模式,若bootloader 中设置的当前核的大小端模式与操作系统所需的大小端模式不同,则更改当前核的大小 端模式,并将bootloader传递给操作系统的参数进行大小端模式转换。这样,可以根据 bootloader中设置的当前核的大小端模式与操作系统所需的大小端模式确定是否更改当 前核的大小端模式,使得使用同一个操作系统可以兼容不同大小端模式的bootloader,减 少了操作系统二进制归一的约束,提高了操作系统的兼容性。
[0279] 本发明实施例还提供了一种bootloader大小端模式自适应的方法,该处理器包 括至少一个内核。
[0280] 本实施例不仅适用于多核处理器的启动,同样适用于单核处理器的启动。
[0281] 现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader 的大小端模式与操作系统的大小端模式必须一致,只能用小端模式的bootloader启动小 端模式的操作系统,大端模式的bootloader启动大端模式的操作系统,这样会导致同一个 操作系统不能使用不同大小端模式的bootloader,无法完全实现操作系统的二进制归一。 本实施例中是使bootloader的大小端模式与操作系统的大小端模式兼容的一种方法。
[0282] 如图10所示,包括:
[0283] 1001、执行 bootloader。
[0284] 具体的,可参考步骤901,在此不再赘述。
[0285] 需要说明的是,在处理器是多核处理器的情况下,主核执行完bootloader之 后,执行步骤1002-1004,然后依次唤醒从核,从核执行自身的引导程序之后,执行步骤 1002-1004,完成自身的启动。在处理器是多核处理器的情况下,该单核执行完bootloader 之后,依次执行步骤1002-1004,完成本处理器的启动。
[0286] 1002、获取bootloader传递给操作系统的参数。
[0287] 其中,所述参数的首部添加有魔术字。
[0288] 具体的,从核或者单核获取bootloader传递给操作系统的参数,可参考步骤507 中主核获取bootloader传递给操作系统的所有参数,在此不再赘述。
[0289] 1003、若魔术字发生变化,则更改当前核的大小端模式,并将bootloader传递给 操作系统的参数进行大小端模式转换,使得更改后的当前核的大小端模式以及参数转换后 的大小端模式与操作系统所需的大小端模式相同。
[0290] 具体的,当前核更改自己的大小端模式,并将bootloader传递给操作系统的参数 进行大小端模式转换,可参考步骤508中主核更改主核的大小端模式,并将bootloader传 递给操作系统的参数进行大小端模式转换,在此不再赘述。
[0291] 需要说明的是,在魔术字没有发生变化的情况下,不执行步骤1003,直接执行步骤 1004。
[0292] 1004、执行操作系统中的指令,完成启动。
[0293] 需要说明的是,多核处理器中的从核在执行完步骤1004后,还需要完成其他所有 从核初始化,那么该多核处理器启动完毕。单核处理器的单核执行完步骤1004后,就完成 了该单核处理器的启动。
[0294] 本发明实施例提供了一种bootloader大小端模式自适应的方法,获取 bootloader传递给操作系统的参数,若参数的魔术字发生变化,则更改当前核的大小端 模式,并将bootloader传递给操作系统的参数进行大小端模式转换。这样,可以根据 bootloader中设置的当前核的大小端模式与操作系统所需的大小端模式确定是否更改当 前核的大小端模式,使得使用同一个操作系统可以兼容不同大小端模式的bootloader,减 少了操作系统二进制归一的约束,提高了操作系统的兼容性。
[0295] 如图11所示,本发明实施例提供了一种计算节点的结构示意图。参考图11所示, 该计算节点包括:多核处理器1101和内存1102,其中多核处理器1101通过总线访问内存 1102,本实施例中,该多核处理器1101包括:主核11011和从核11012。其中,从核11012的 数量可以是一个或多个,图11中以一个从核示意,但本发明实施例不限于此。
[0296] 主核11011,用于将从核引导程序存储至内存的首地址之后的连续的存储空间中; 其中,内存的首地址被映射到总线的〇地址。
[0297] 主核11011,还用于复位从核11012,以使从核11012的程序计数器PC指针指向总 线的0地址。
[0298] 从核11012,用于通过所述总线访问总线的0地址映射的内存的首地址,读取所述 内存1102中内存的首地址后存储的从核引导程序并执行从核引导程序。
[0299] 从核11012,还用于跳转到操作系统的代码段,完成从核11012初始化。
[0300] 具体的,从核11012,具体用于在bootloader中设置的从核11012的大小端模式与 操作系统所需的大小端模式相同的情况下,跳转到操作系统的代码段,完成从核初始化。
[0301] 进一步的,主核11011,还用于获取从核11012的状态。
[0302] 主核11011,还用于确定从核11012处于激活状态时,主核11011设置从核11012 的复位次数为两次。
[0303] 主核11011,还用于确定从核11012处于休眠状态或未启动状态时,设置从核 11012的复位次数为一次。
[0304] 进一步的,主核11011,还用于在从核11012引导程序中添加休眠指令;休眠指令 用于使从核11012处于休眠状态。
[0305] 此时,主核11011,具体用于第一次复位从核11012,从核11012的PC指针指向 总线的0地址;从核11012,具体用于通过总线访问总线的0地址映射的内存的首地址,读 取并执行从核引导程序中的休眠指令;主核11011,具体用于第二次复位从核11012,从核 11012的PC指针指向总线的0地址;从核11012,具体用于通过总线访问总线的0地址映射 的内存的首地址,读取并执行从核引导程序中除休眠指令之外的程序;其中,所述从核的复 位次数为两次。
[0306] 进一步的,主核11011,还用于获取bootloader中设置的主核11011的大小端模 式。
[0307] 主核11011,还用于获取操作系统所需的大小端模式。
[0308] 主核11011,还用于在bootloader中设置的主核11011的大小端模式与操作系统 所需的大小端模式不同的情况下,更改主核11011的大小端模式,使得更改后的主核11011 的大小端模式与操作系统所需的大小端模式相同。
[0309] 主核11011,还用于在bootloader中设置的主核11011的大小端模式与操作系 统所需的大小端模式不同的情况下,将bootloader传递给操作系统的所有参数进行大小 端模式转换,使得转换后的所述所有参数的大小端模式与所述操作系统所需的大小端模 式相同;或者,将bootloader传递给操作系统的主核11011所需的参数进行大小端模式 转换,使得转换后的bootloader传递给操作系统的主核11011所需的参数的大小端模式 与操作系统所需的大小端模式相同;其中,bootloader传递给操作系统的所有参数包括: bootloader传递给操作系统的主核11011所需的参数和bootloader传递给操作系统的从 核11012所需的参数。
[0310] 从核11012,还用于获取bootloader中设置的从核11012的大小端模式;
[0311] 从核11012,还用于获取操作系统所需的大小端模式;
[0312] 从核11012,还用于在从核11012确定bootloader中设置的从核11012的大小端 模式与操作系统所需的大小端模式不同的情况下,更改从核11012的大小端模式,使得更 改后的从核11012的大小端模式与操作系统所需的大小端模式相同。
[0313] 从核11012,还用于在bootloader中设置的从核11012的大小端模式与操作系统 所需的大小端模式不同,且主核11011将bootloader传递给操作系统的主核11011所需的 参数进行大小端模式转换的情况下,将bootloader传递给操作系统的从核11012所需的参 数进行大小端模式转换,使得转换后的bootloader传递给操作系统的从核11012所需的参 数的大小端模式与操作系统所需的大小端模式相同。
[0314] 进一步的,主核11011,还用于获取bootloader传递给操作系统的所有参数;其 中,bootloader传递给操作系统的所有参数的首部添加有第一魔术字。
[0315] 主核11011,还用于在第一魔术字发生变化的情况下,更改主核11011的大小端模 式,并将bootloader传递给操作系统的所有参数进行大小端模式转换,使得更改后的主核 11011的大小端模式以及转换后的所述bootloader传递给操作系统的所有参数的大小端 模式与操作系统所需的大小端模式相同;其中,bootloader传递给操作系统的所有参数包 括:bootloader传递给操作系统的主核11011所需的参数和bootloader传递给操作系统 的所述从核110112所需的参数。
[0316] 或者,主核11011,还用于获取bootloader传递给操作系统的主核11011所需的参 数;其中,bootloader传递给操作系统的主核11011所需的参数的首部添加有第二魔术字。
[0317] 主核11011,还用于在第二魔术字发生变化的情况下,更改主核11011的大小端模 式,并将bootloader传递给操作系统的主核11011所需的参数进行大小端模式转换,使得 更改后的主核11011的大小端模式以及转换后的bootloader传递给操作系统的主核11011 所需的参数的大小端模式与操作系统所需的大小端模式相同。
[0318] 从核11012,还用于获取bootloader传递给操作系统的从核11012所需的参数; 其中,bootloader传递给操作系统的从核11012所需的参数的首部添加有第三魔术字参数 的首部添加有魔术字。
[0319] 从核11012,还用于在从核11012确定第三魔术字发生变化的情况下,更改从核 11012的大小端模式,使得更改后的从核11012的大小端模式与操作系统所需的大小端模 式相同。
[0320] 从核11012,还用于在第三魔术字发生变化,且主核11011获取bootloader传递给 操作系统的主核11011所需的参数的情况下,将bootloader传递给操作系统的从核11012 所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作系统的从核11012 所需的参数的大小端模式与操作系统所需的大小端模式相同。
[0321] 本发明实施例提供了一种计算节点,主核在从核引导程序中添加休眠指令;判断 bootloader中设置的主核的大小端模式与操作系统所需的主核的大小端模式是否相同,在 不相同的情况下,更改主核的大小端模式,使得更改后的主核的大小端模式与操作系统所 需的主核的大小端模式相同;在内存的首地址映射到总线的〇地址的情况下,将从核引导 程序存储至内存的首地址之后连续的存储空间中;主核获取从核的状态,根据从核状态设 定从核复位次数;主核对从核进行一次或者两次复位,以使从核的PC指针指向总线的0地 址,从核从总线的0地址映射的内存的首地址起始读取并执行从核引导程序;从核执行完 从核引导程序后,判断bootloader中设置的从核的大小端模式与操作系统所需的从核的 大小端模式是否相同,在两者不相同的情况下,更改从核的大小端模式,并将bootloader 传递给操作系统的参数进行大小端模式转换;最后跳转到操作系统的代码段,完成从核初 始化。这样,利用每种型号的多核处理器在从核被复位后从核的PC指针指向总线的0地 址的特性,建立总线的〇地址与内存的首地址的映射关系,并将从核引导程序存储在内存 的首地址后的连续的存储空间中,使得从核被复位后能够通过总线的0地址对应的内存的 首地址读取到内存中存储的从核引导程序,并执行所述从核引导程序,从而就不需要在总 线中设定用于存储从核引导程序在内存中的存放地址的固定地址A,实现了多核处理器的 bootloader与操作系统间固定地址A的解耦合,不需要根据每一型号多核处理器设置匹配 的操作系统,使得不同版本型号的多核处理器可以使用相同的操作系统,最终完成多核处 理器操作系统的二进制归一,提高操作系统的兼容性。并且本实施例中考虑到从核处于激 活状态的情况下,复位后不能满足从核启动条件,所以此时对从核进行两次复位,第一次主 核复位从核使得从核满足启动条件,第二次主核复位从核使得成功启动,从而进一步保证 了从核的成功启动。同时,本实施例中根据bootloader中设置的主核或从核的大小端模式 与操作系统所需的大小端模式确定是否更改主核或从核的大小端模式,使得多核处理器使 用同一个操作系统可以兼容不同大小端模式的bootloader,进一步减少了多核处理器操作 系统二进制归一的约束,提高操作系统的兼容性。最终,本发明解除了两个操作系统二进制 归一的使用约束,使得同一版本的操作系统能运行于更多的bootloader和处理器,极大提 高开发、测试、维护的效率,同时减少开发、测试、维护的成本。
[0322] 如图12所示,本发明实施例提供了一种计算节点的结构示意图。参考图12所示, 该计算节点包括:多核处理器1201、内存1202和非易失存储器1203,其中多核处理器1201 通过总线访问内存1202以及非易失存储器1203,本实施例中,该多核处理器1201包括:主 核12011和从核12012,其中,从核12012的数量可以是一个或多个,图12中以一个从核示 意,但本发明实施例不限于此。
[0323] 主核12011,用于从从核配置指令中,或者从非易失存储器1203中获取从核12012 的配置地址;其中,从核配置指令设置于bootloader中。
[0324] 主核12011,还用于将从核引导程序存储至内存1202中配置地址之后的连续的存 储空间中。
[0325] 主核12011,还用于向从核12012发送核间中断消息。
[0326] 从核12012,用于通过总线访问配置地址,读取内存1202中配置地址后存储的从 核引导程序并执行从核引导程序。
[0327] 从核12012,还用于跳转到操作系统的代码段,完成从核12012初始化。
[0328] 具体的,从核12012,具体用于在bootloader中设置的从核12012的大小端模式与 操作系统所需的大小端模式相同的情况下,从核12012跳转到操作系统的代码段,完成从 核初始化。
[0329] 进一步的,主核12011,还用于从从核配置指令获取从核12012的配置地址。
[0330] 主核12011,还用于将从核12012的配置地址存储至非易失存储器1203。
[0331] 进一步的,所述主核12011,还用于获取bootloader中设置的所述主核12011的大 小端模式。
[0332] 所述主核12011,还用于获取操作系统所需的大小端模式。
[0333] 所述主核12011,还用于在所述bootloader中设置的所述主核12011的大小端模 式与所述操作系统所需的大小端模式不同的情况下,更改所述主核12011的大小端模式, 使得更改后的所述主核12011的大小端模式与所述操作系统所需的大小端模式相同。
[0334] 所述主核12011,还用于在所述bootloader中设置的所述主核12011的大小端模 式与所述操作系统所需的大小端模式不同的情况下,将所述bootloader传递给所述操作 系统的所有参数进行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操 作系统所需的大小端模式相同;或者,将所述bootloader传递给所述操作系统的所述主核 12011所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作系 统的所述主核12011所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
[0335] 其中,所述bootloader传递给所述操作系统的所有参数包括:所述bootloader传 递给操作系统的所述主核12011所需的参数和所述bootloader传递给操作系统的所述从 核12012所需的参数。
[0336] 所述从核12012,还用于获取bootloader中设置的所述从核12012的大小端模式。
[0337] 所述从核12012,还用于获取操作系统所需的大小端模式。
[0338] 所述从核12012,还用于在所述bootloader中设置的所述从核12012的大小端模 式与所述操作系统所需的大小端模式不同的情况下,更改所述从核12012的大小端模式, 使得更改后的所述从核12012的大小端模式与所述操作系统所需的大小端模式相同。
[0339] 所述从核12012,还用于在所述bootloader中设置的所述从核12012的大小端模 式与所述操作系统所需的大小端模式不同,且所述主核12011将所述bootloader传递给操 作系统的所述主核12011所需的参数进行大小端模式转换的情况下,将所述bootloader传 递给所述操作系统的所述从核12012所需的参数进行大小端模式转换,使得转换后的所述 bootloader传递给操作系统的所述从核12012所需的参数的大小端模式与所述操作系统 所需的大小端模式相同。
[0340] 进一步的,主核12011,还用于获取bootloader传递给操作系统的所有参数;其 中,bootloader传递给操作系统的所有参数的首部添加有第一魔术字。
[0341] 主核12011,还用于在第一魔术字发生变化的情况下,更改主核12011的大小端模 式,并将bootloader传递给操作系统的所有参数进行大小端模式转换,使得更改后的主核 12011的大小端模式以及转换后的bootloader传递给操作系统的所有参数的大小端模式 与操作系统所需的大小端模式相同;其中,bootloader传递给操作系统的所有参数包括: bootloader传递给操作系统的主核12011所需的参数和bootloader传递给操作系统的从 核12012所需的参数。
[0342] 或者,主核12011,还用于获取bootloader传递给操作系统的主核12011所需的参 数,其中,bootloader传递给操作系统的主核12011所需的参数的首部添加有第二魔术字。
[0343] 主核12011,还用于在第二魔术字发生变化的情况下,主核12011更改主核12011 的大小端模式,并将bootloader传递给操作系统的主核12011所需的参数进行大小端模式 转换,使得更改后的主核12011的大小端模式以及转换后的bootloader传递给操作系统的 主核12011所需的参数的大小端模式与操作系统所需的大小端模式相同。
[0344] 从核12012,还用于获取bootloader传递给操作系统的从核12012所需的参数; 其中,bootloader传递给操作系统的从核12012所需的参数的首部添加有第三魔术字。
[0345] 从核12012,还用于在从核12012确定第三魔术字发生变化的情况下,更改从核 12012的大小端模式,使得更改后的从核12012的大小端模式与操作系统所需的大小端模 式相同。
[0346] 从核12012,还用于在第三魔术字发生变化,且主核12011获取bootloader传递给 操作系统的主核12011所需的参数的情况下,将bootloader传递给操作系统的从核12012 所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作系统的从核12012 所需的参数的大小端模式与操作系统所需的大小端模式相同。
[0347] 本发明实施例提供了一种计算节点,通过新增的bootloader的从核配置指令获 取用户配置的从核配置地址;判断bootloader中设置的主核的大小端模式与操作系统所 需的主核的大小端模式是否相同,在不相同的情况下,更改主核的大小端模式,使得更改后 的主核的大小端模式与操作系统所需的主核的大小端模式相同;将从核引导程序存放至从 核配置地址后连续的存储空间中,然后唤醒从核,从核根据用户配置的从核配置地址读取 从核引导程序,从核执行完从核引导程序后,判断bootloader中设置的从核的大小端模式 与操作系统所需的从核的大小端模式是否相同,在不相同的情况下,更改从核的大小端模 式,并将bootloader传递给操作系统的参数进行大小端模式转换;最后跳转到操作系统的 代码段,完成从核初始化。这样,用户可以根据每一型号的处理器用户可以根据不同型号的 处理器灵活设置从核配置地址,即从核引导程序的存储地址,而不用根据不同型号的处理 器设置对应去除了多核处理器的bootloader与操作系统间固定地址A的耦合,使得不同型 号的多核处理器可以使用相同的操作系统,最终完成多核处理器操作系统的二进制归一, 提高操作系统的兼容性。同时,本实施例中根据bootloader中设置的主核或从核的大小端 模式与操作系统所需的大小端模式确定是否更改主核或从核的大小端模式,使得多核处理 器使用同一个操作系统可以兼容不同大小端模式的bootloader,进一步减少了多核处理器 操作系统二进制归一的约束,提高操作系统的兼容性。最终,本发明解除了两个操作系统二 进制归一的使用约束,使得同一版本的操作系统能运行于更多的bootloader和处理器,极 大提高开发、测试、维护的效率,同时减少开发、测试、维护的成本。
[0348] 如图13所示,本发明实施例提供了一种bootloader大小端模式自适应的装置的 结构示意图,参考图13所示,该装置包括:获取单元1301和处理单元1302。
[0349] 获取单元1301,用于获取bootloader中设置的当前核的大小端模式。
[0350] 获取单元1301,还用于获取操作系统所需的大小端模式。
[0351] 处理单元1302,用于在bootloader中设置的当前核的大小端模式与操作系统所 需的大小端模式不同的情况下,更改当前核的大小端模式,并将boo11 oader传递给操作系 统的参数进行大小端模式转换,使得更改后的当前核的大小端模式以及转换后的参数的大 小端模式与操作系统所需的大小端模式相同。
[0352] 本发明实施例提供了一种bootloader大小端模式自适应的装置,获取单元获 取bootloader中设置的当前核的大小端模式和操作系统所需的大小端模式,处理单元在 bootloader中设置的当前核的大小端模式与操作系统所需的大小端模式不同的情况下, 更改当前核的大小端模式,并将bootloader传递给操作系统的参数进行大小端模式转换。 这样,可以根据bootloader中设置的当前核的大小端模式与操作系统所需的大小端模式 确定是否更改当前核的大小端模式,使得使用同一个操作系统可以兼容不同大小端模式的 bootloader,减少了操作系统二进制归一的约束,提高了操作系统的兼容性。
[0353] 如图14所示,本发明实施例提供了一种bootloader大小端模式自适应的装置的 结构示意图,参考图14所示,该装置包括:获取单元1401和处理单元1402。
[0354] 获取单元1401,用于获取bootloader传递给操作系统的参数,其中,参数的首部 添加有魔术字。
[0355] 处理单元1402,用于在魔术字发生变化的情况下,更改当前核的大小端模式,并将 bootloader传递给操作系统的参数进行大小端模式转换,使得更改后的当前核的大小端模 式以及转换后的参数的大小端模式与操作系统所需的大小端模式相同。
[0356] 本发明实施例提供了一种bootloader大小端模式自适应的装置,获取单元获取 bootloader传递给操作系统的参数,处理单元在参数的魔术字发生变化的情况下,更改 当前核的大小端模式,并将bootloader传递给操作系统的参数进行大小端模式转换。这 样,可以根据bootloader中设置的当前核的大小端模式与操作系统所需的大小端模式确 定是否更改当前核的大小端模式,使得使用同一个操作系统可以兼容不同大小端模式的 bootloader,减少了操作系统二进制归一的约束,提高了操作系统的兼容性。
[0357] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以 通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的 划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件 可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或 讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦 合或通信连接,可以是电性,机械或其它的形式。
[0358] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显 示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个 网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目 的。
[0359] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单 元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0360] 上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存 储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机 设备(可以是个人计算机,服务器,或者网络设备等)或者被包括在计算机设备中的处理器 执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只 读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称 RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0361] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
【权利要求】
1. 一种启动多核处理器的方法,其特征在于,应用于包括多核处理器和内存的计算节 点,其中所述多核处理器通过总线访问所述内存,所述多核处理器包含主核及至少一个从 核,所述主核执行启动加载器bootloader,所述方法包括: 所述主核将从核引导程序存储至所述内存的首地址之后的连续的存储空间中;其中, 所述内存的首地址被映射到所述总线的〇地址; 所述主核复位所述至少一个从核中的从核,以使所述从核的程序计数器PC指针指向 所述总线的〇地址,所述从核通过所述总线访问所述总线的〇地址映射的所述内存的首地 址,读取所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程 序; 所述从核跳转到操作系统的代码段,完成从核初始化。
2. 根据权利要求1所述的方法,其特征在于,在所述主核将从核引导程序存储至所述 内存的首地址之后的连续的存储空间中之前,还包括:所述主核在所述从核引导程序中添 加休眠指令;所述休眠指令用于使所述从核处于休眠状态; 所述主核复位所述至少一个从核中的从核,以使所述从核的程序计数器PC指针指向 所述总线的〇地址,所述从核通过所述总线访问所述总线的〇地址映射的所述内存的首地 址,读取所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程 序,包括: 所述主核第一次复位所述从核,所述从核的PC指针指向所述总线的0地址,所述从核 通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导 程序中的所述休眠指令;所述主核第二次复位所述从核,所述从核的PC指针指向所述总线 的0地址,所述从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并 执行所述从核引导程序中除休眠指令之外的程序;其中,所述从核的复位次数为两次。
3. 根据权利要求1或2所述的方法,其特征在于,所述从核跳转到操作系统的代码段, 完成从核初始化,包括: 在所述bootloader中设置的所述从核的大小端模式与所述操作系统所需的大小端模 式相同的情况下,所述从核跳转到操作系统的代码段,完成从核初始化。
4. 根据权利要求1-3任一项所述的方法,其特征在于,在所述主核执行启动加载器 bootloader之后,所述主核将从核引导程序存储至所述内存的首地址之后的连续的存储空 间中之前,还包括: 所述主核获取bootloader中设置的所述主核的大小端模式; 所述主核获取所述操作系统所需的大小端模式; 在所述bootloader中设置的所述主核的大小端模式与所述操作系统所需的大小端模 式不同的情况下,所述主核更改所述主核的大小端模式,使得更改后的所述主核的大小端 模式与所述操作系统所需的大小端模式相同; 在所述bootloader中设置的所述主核的大小端模式与所述操作系统所需的大小端 模式不同的情况下,还包括:所述主核将所述bootloader传递给所述操作系统的所有参 数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作系统的所有参数 的大小端模式与所述操作系统所需的大小端模式相同;或者,所述主核将所述bootloader 传递给所述操作系统的所述主核所需的参数进行大小端模式转换,使得转换后的所述 bootloader传递给所述操作系统的所述主核所需的参数的大小端模式与所述操作系统所 需的大小端模式相同; 其中,所述bootloader传递给所述操作系统的所有参数包括:所述bootloader传递给 操作系统的所述主核所需的参数和所述bootloader传递给操作系统的所述从核所需的参 数。
5. 根据权利要求4所述的方法,其特征在于, 在所述从核执行所述从核引导程序之后,所述从核跳转到操作系统的代码段之前,还 包括: 所述从核获取bootloader中设置的所述从核的大小端模式; 所述从核获取所述操作系统所需的大小端模式; 在所述bootloader中设置的所述从核的大小端模式与所述操作系统所需的大小端模 式不同的情况下,所述从核更改所述从核的大小端模式,使得更改后的所述从核的大小端 模式与所述操作系统所需的大小端模式相同; 在所述bootloader中设置的所述从核的大小端模式与所述操作系统所需的大小端模 式不同,且所述主核将所述bootloader传递给所述操作系统的所述主核所需的参数进行 大小端模式转换的情况下,还包括:所述从核将所述bootloader传递给所述操作系统的所 述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作 系统的所述从核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
6. 根据权利要求1-3任一项所述的方法,其特征在于,在所述主核执行启动加载器 bootloader之后,所述主核将从核引导程序存储至所述内存的首地址之后的连续的存储空 间中之前,还包括: 所述主核获取所述bootloader传递给所述操作系统的所有参数,其中,所述 bootloader传递给所述操作系统的所有参数的首部添加有第一魔术字; 在所述第一魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所 述bootloader传递给所述操作系统的所有参数进行大小端模式转换,使得更改后的所述 主核的大小端模式以及转换后的所述bootloader传递给所述操作系统的所有参数的大 小端模式与所述操作系统所需的大小端模式相同;其中,所述bootloader传递给所述操 作系统的所有参数包括:所述bootloader传递给操作系统的所述主核所需的参数和所述 bootloader传递给操作系统的所述从核所需的参数; 或者,所述主核获取所述bootloader传递给所述操作系统的所述主核所需的参数,其 中,所述bootloader传递给所述操作系统的所述主核所需的参数的首部添加有第二魔术 字; 在所述第二魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所 述bootloader传递给所述操作系统的所述主核所需的参数进行大小端模式转换,使得更 改后的所述主核的大小端模式以及转换后的所述bootloader传递给操作系统的所述主核 所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
7. 根据权利要求6所述的方法,其特征在于,在所述从核执行所述从核引导程序之后, 所述从核跳转到操作系统的代码段之前,还包括: 所述从核获取所述bootloader传递给所述操作系统的所述从核所需的参数,其中,所 述bootloader传递给所述操作系统的所述从核所需的参数的首部添加有第三魔术字; 在所述从核确定所述第三魔术字发生变化的情况下,所述从核更改所述从核的大小端 模式,使得更改后的所述从核的大小端模式与所述操作系统所需的大小端模式相同; 在所述从核确定所述第三魔术字发生变化,且所述主核获取所述bootloader传递 给所述操作系统的所述主核所需的参数的情况下,还包括:所述从核将所述bootloader 传递给所述操作系统的所述从核所需的参数进行大小端模式转换,使得转换后的所述 bootloader传递给所述操作系统的所述从核所需的参数的大小端模式与所述操作系统所 需的大小端模式相同。
8. 根据权利要求1-7任一项所述的方法,其特征在于,在所述主核复位所述至少一个 从核中的从核之前,还包括: 所述主核获取所述从核的状态; 当所述主核确定所述从核处于激活状态时,所述主核设置所述从核的复位次数为两 次; 当所述主核确定所述从核处于休眠状态或未启动状态时,所述主核设置所述从核的复 位次数为一次。
9. 一种启动多核处理器的方法,其特征在于,应用于包括多核处理器、内存和非易失存 储器的计算节点,其中所述多核处理器通过总线访问所述内存以及所述非易失存储器,所 述多核处理器包含主核及至少一个从核,所述方法包括: 所述主核从从核配置指令,或者从所述非易失存储器获取从核的配置地址;其中,所述 从核配置指令设置于启动加载器bootloader中; 所述主核将从核引导程序存储至所述内存中所述配置地址之后的连续的存储空间 中; 所述主核向所述从核发送核间中断消息,使得所述从核通过所述总线访问所述配置地 址,读取所述内存中所述配置地址后存储的所述从核引导程序并执行所述从核引导程序; 所述从核跳转到操作系统的代码段,完成从核初始化。
10. 根据权利要求9所述的方法,其特征在于,所述从核跳转到操作系统的代码段,完 成从核初始化,包括: 在所述bootloader中设置的所述从核的大小端模式与所述操作系统所需的大小端模 式相同的情况下,所述从核跳转到操作系统的代码段,完成从核初始化。
11. 根据权利要求9或10所述的方法,其特征在于,在所述主核从从核配置指令,或者 从所述非易失存储器获取从核的配置地址之后,所述主核将从核引导程序存储至所述内存 中所述配置地址之后的连续的存储空间中之前,还包括: 所述主核获取bootloader中设置的所述主核的大小端模式; 所述主核获取操作系统所需的大小端模式; 在所述bootloader中设置的所述主核的大小端模式与所述操作系统所需的大小端模 式不同的情况下,所述主核更改所述主核的大小端模式,使得更改后的所述主核的大小端 模式与所述操作系统所需的大小端模式相同; 在所述bootloader中设置的所述主核的大小端模式与所述操作系统所需的大小端 模式不同的情况下,还包括:所述主核将所述bootloader传递给所述操作系统的所有参 数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作系统的所有参数 的大小端模式与所述操作系统所需的大小端模式相同;或者,所述主核将所述bootloader 传递给所述操作系统的所述主核所需的参数进行大小端模式转换,使得转换后的所述 bootloader传递给所述操作系统的所述主核所需的参数的大小端模式与所述操作系统所 需的大小端模式相同; 其中,所述bootloader传递给所述操作系统的所有参数包括:所述bootloader传递给 操作系统的所述主核所需的参数和所述bootloader传递给操作系统的所述从核所需的参 数。
12. 根据权利要求11所述的方法,其特征在于,在所述从核执行所述从核引导程序之 后,所述从核跳转到操作系统的代码段之前,还包括: 所述从核获取bootloader中设置的所述从核的大小端模式; 所述从核获取操作系统所需的大小端模式; 在所述bootloader中设置的所述从核的大小端模式与所述操作系统所需的大小端模 式不同的情况下,所述从核更改所述从核的大小端模式,使得更改后的所述从核的大小端 模式与所述操作系统所需的大小端模式相同; 在所述bootloader中设置的所述从核的大小端模式与所述操作系统所需的大小端模 式不同,且所述主核将所述bootloader传递给所述操作系统的所述主核所需的参数进行 大小端模式转换的情况下,还包括:所述从核将所述bootloader传递给所述操作系统的所 述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作 系统的所述从核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
13. 根据权利要求9或10所述的方法,其特征在于,在所述主核从从核配置指令,或者 从所述非易失存储器获取从核的配置地址之后,所述主核将从核引导程序存储至所述内存 中所述配置地址之后的连续的存储空间中之前,还包括: 所述主核获取所述bootloader传递给所述操作系统的所有参数,其中,所述 bootloader传递给所述操作系统的所有参数的首部添加有第一魔术字; 在所述第一魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所 述bootloader传递给所述操作系统的所有参数进行大小端模式转换,使得更改后的所述 主核的大小端模式以及转换后的所述bootloader传递给所述操作系统的所有参数的大 小端模式与所述操作系统所需的大小端模式相同;其中,所述bootloader传递给所述操 作系统的所有参数包括:所述bootloader传递给操作系统的所述主核所需的参数和所述 bootloader传递给操作系统的所述从核所需的参数; 或者,所述主核获取所述bootloader传递给所述操作系统的所述主核所需的参数,其 中,所述bootloader传递给所述操作系统的所述主核所需的参数的首部添加有第二魔术 字; 在所述第二魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所 述bootloader传递给所述操作系统的所述主核所需的参数进行大小端模式转换,使得更 改后的所述主核的大小端模式以及转换后的所述bootloader传递给操作系统的所述主核 所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
14. 根据权利要求13所述的方法,其特征在于,在所述从核执行所述从核引导程序之 后,所述从核跳转到操作系统的代码段之前,还包括: 所述从核获取所述bootloader传递给所述操作系统的所述从核所需的参数,其中,所 述bootloader传递给所述操作系统的所述从核所需的参数的首部添加有第三魔术字; 在所述从核确定所述第三魔术字发生变化的情况下,所述从核更改所述从核的大小端 模式,使得更改后的所述从核的大小端模式与所述操作系统所需的大小端模式相同; 在所述从核确定所述第三魔术字发生变化,且所述主核获取所述bootloader传递 给所述操作系统的所述主核所需的参数的情况下,还包括:所述从核将所述bootloader 传递给所述操作系统的所述从核所需的参数进行大小端模式转换,使得转换后的所述 bootloader传递给所述操作系统的所述从核所需的参数的大小端模式与所述操作系统所 需的大小端模式相同。
15. 根据权利要求9-14任一项所述的方法,其特征在于,在所述主核从非易失存储器 获取所述从核的配置地址之前,还包括: 所述主核从所述从核配置指令获取所述从核的配置地址; 所述主核将所述从核的配置地址存储至所述非易失存储器。
16. -种bootloader大小端模式自适应的方法,应用于处理器,其特征在于,所述方法 包括: 获取启动加载器bootloader中设置的当前核的大小端模式; 获取操作系统所需的大小端模式; 若所述bootloader中设置的所述当前核的大小端模式与所述操作系统所需的大小端 模式不同,则更改所述当前核的大小端模式,并将所述bootloader传递给所述操作系统的 参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换后的所述参数 的大小端模式与所述操作系统所需的大小端模式相同。
17. -种bootloader大小端模式自适应的方法,应用于处理器,其特征在于,所述方法 包括: 获取启动加载器bootloader传递给操作系统的参数,其中,所述参数的首部添加有魔 术字; 若所述魔术字发生变化,则更改当前核的大小端模式,并将所述bootloader传递给所 述操作系统的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换 后的所述参数的大小端模式与所述操作系统所需的大小端模式相同。
18. -种计算节点,其特征在于,包括多核处理器和内存,其中所述多核处理器通过总 线访问所述内存,所述多核处理器包含主核及至少一个从核,所述主核用于执行启动加载 器 bootloader,包括: 所述主核,用于将从核引导程序存储至所述内存的首地址之后的连续的存储空间中; 其中,所述内存的首地址被映射到所述总线的〇地址; 所述主核,还用于复位至少一个从核中的从核,以使所述从核的程序计数器PC指针指 向所述总线的0地址; 所述从核,用于通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取 所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程序; 所述从核,还用于跳转到操作系统的代码段,完成从核初始化。
19. 根据权利要求18所述的计算节点,其特征在于, 所述主核,还用于在所述从核引导程序中添加休眠指令;所述休眠指令用于使所述从 核处于休眠状态; 所述主核,具体用于第一次复位所述从核,所述从核的PC指针指向所述总线的0地 址; 所述从核,具体用于通过所述总线访问所述总线的〇地址映射的所述内存的首地址, 读取并执行所述从核引导程序中的所述休眠指令; 所述主核,具体用于第二次复位所述从核,所述从核的PC指针指向所述总线的0地 址; 所述从核,具体用于通过所述总线访问所述总线的0地址映射的所述内存的首地址, 读取并执行所述从核引导程序中除休眠指令之外的程序; 其中,所述从核的复位次数为两次。
20. 根据权利要求18或19所述的计算节点,其特征在于, 所述从核,具体用于在所述bootloader中设置的所述从核的大小端模式与所述操作 系统所需的大小端模式相同的情况下,跳转到操作系统的代码段,完成从核初始化。
21. 根据权利要求18-20任一项所述的计算节点,其特征在于, 所述主核,还用于获取bootloader中设置的所述主核的大小端模式; 所述主核,还用于获取操作系统所需的大小端模式; 所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作系 统所需的大小端模式不同的情况下,更改所述主核的大小端模式,使得更改后的所述主核 的大小端模式与所述操作系统所需的大小端模式相同; 所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作系 统所需的大小端模式不同的情况下,将所述bootloader传递给所述操作系统的所有参数 进行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操作系统所需的大 小端模式相同;或者,将所述bootloader传递给所述操作系统的所述主核所需的参数进行 大小端模式转换,使得转换后的所述bootloader传递给所述操作系统的所述主核所需的 参数的大小端模式与所述操作系统所需的大小端模式相同; 其中,所述boo11 oader传递给所述操作系统的所有参数包括:所述boo11 oader传递给 操作系统的所述主核所需的参数和所述bootloader传递给操作系统的所述从核所需的参 数。
22. 根据权利要求21所述的计算节点,其特征在于, 所述从核,还用于获取bootloader中设置的所述从核的大小端模式; 所述从核,还用于获取操作系统所需的大小端模式; 所述从核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作系 统所需的大小端模式不同的情况下,更改所述从核的大小端模式,使得更改后的所述从核 的大小端模式与所述操作系统所需的大小端模式相同; 所述从核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作系 统所需的大小端模式不同,且所述主核将所述bootloader传递给操作系统的所述主核所 需的参数进行大小端模式转换的情况下,将所述bootloader传递给所述操作系统的所述 从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给操作系统的 所述从核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
23. 根据权利要求18-20任一项所述的计算节点,其特征在于, 所述主核,还用于获取所述bootloader传递给所述操作系统的所有参数,其中,所述 bootloader传递给所述操作系统的所有参数的首部添加有第一魔术字; 所述主核,还用于在所述第一魔术字发生变化的情况下,更改所述主核的大小端模式, 并将所述bootloader传递给所述操作系统的所有参数进行大小端模式转换,使得更改后 的所述主核的大小端模式以及转换后的所述bootloader传递给所述操作系统的所有参数 的大小端模式与所述操作系统所需的大小端模式相同;其中,所述bootloader传递给所述 操作系统的所有参数包括:所述bootloader传递给操作系统的所述主核所需的参数和所 述bootloader传递给操作系统的所述从核所需的参数; 或者,所述主核,还用于获取所述bootloader传递给所述操作系统的所述主核所需的 参数,其中,所述bootloader传递给所述操作系统的所述主核所需的参数的首部添加有第 二魔术字; 所述主核,还用于在所述第二魔术字发生变化的情况下,更改所述主核的大小端模式, 并将所述bootloader传递给所述操作系统的所述主核所需的参数进行大小端模式转换, 使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给操作系统的所 述主核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
24. 根据权利要求23所述的计算节点,其特征在于, 所述从核,还用于获取所述bootloader传递给所述操作系统的所述从核所需的参数, 其中,所述bootloader传递给所述操作系统的所述从核所需的参数的首部添加有第三魔 术字所述参数的首部添加有魔术字; 所述从核,还用于在所述从核确定所述第三魔术字发生变化的情况下,更改所述从核 的大小端模式,使得更改后的所述从核的大小端模式与所述操作系统所需的大小端模式相 同; 所述从核,还用于在所述第三魔术字发生变化,且所述主核获取所述bootloader传递 给所述操作系统的所述主核所需的参数的情况下,将所述bootloader传递给所述操作系 统的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所 述操作系统的所述从核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
25. 根据权利要求18-24任一项所述的计算节点,其特征在于, 所述主核,还用于获取所述从核的状态; 所述主核,还用于确定所述从核处于激活状态时,所述主核设置所述从核的复位次数 为两次; 所述主核,还用于确定所述从核处于休眠状态或未启动状态时,所述主核设置所述从 核的复位次数为一次。
26. -种计算节点,其特征在于,包括多核处理器、内存和非易失存储器,其中所述多核 处理器通过总线访问所述内存以及所述非易失存储器,所述多核处理器包含主核及至少一 个从核,包括: 所述主核,用于从从核配置指令中,或者从所述非易失存储器中获取所述从核的配置 地址;其中,所述从核配置指令设置于所述启动加载器bootloader中; 所述主核,还用于将从核引导程序存储至所述内存中所述配置地址之后的连续的存储 空间中; 所述主核,还用于向从核发送核间中断消息; 所述从核,用于通过所述总线访问所述配置地址,读取所述内存中所述配置地址后存 储的所述从核引导程序并执行所述从核引导程序; 所述从核,还用于跳转到操作系统的代码段,完成从核初始化。
27. 根据权利要求26所述的计算节点,其特征在于, 所述从核,具体用于在所述bootloader中设置的所述从核的大小端模式与所述操作 系统所需的大小端模式相同的情况下,所述从核跳转到操作系统的代码段,完成从核初始 化。
28. 根据权利要求26或27所述的计算节点,其特征在于, 所述主核,还用于获取bootloader中设置的所述主核的大小端模式; 所述主核,还用于获取操作系统所需的大小端模式; 所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作系 统所需的大小端模式不同的情况下,更改所述主核的大小端模式,使得更改后的所述主核 的大小端模式与所述操作系统所需的大小端模式相同; 所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作系 统所需的大小端模式不同的情况下,将所述bootloader传递给所述操作系统的所有参数 进行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操作系统所需的大 小端模式相同;或者,将所述bootloader传递给所述操作系统的所述主核所需的参数进行 大小端模式转换,使得转换后的所述bootloader传递给所述操作系统的所述主核所需的 参数的大小端模式与所述操作系统所需的大小端模式相同; 其中,所述bootloader传递给所述操作系统的所有参数包括:所述bootloader传递给 操作系统的所述主核所需的参数和所述bootloader传递给操作系统的所述从核所需的参 数。
29. 根据权利要求28所述的计算节点,其特征在于, 所述从核,还用于获取bootloader中设置的所述从核的大小端模式; 所述从核,还用于获取操作系统所需的大小端模式; 所述从核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作系 统所需的大小端模式不同的情况下,更改所述从核的大小端模式,使得更改后的所述从核 的大小端模式与所述操作系统所需的大小端模式相同; 所述从核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作系 统所需的大小端模式不同,且所述主核将所述bootloader传递给操作系统的所述主核所 需的参数进行大小端模式转换的情况下,将所述bootloader传递给所述操作系统的所述 从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给操作系统的 所述从核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
30. 根据权利要求26或27所述的计算节点,其特征在于, 所述主核,还用于获取所述bootloader传递给所述操作系统的所有参数,其中,所述 bootloader传递给所述操作系统的所有参数的首部添加有第一魔术字; 所述主核,还用于在所述第一魔术字发生变化的情况下,更改所述主核的大小端模式, 并将所述bootloader传递给所述操作系统的所有参数进行大小端模式转换,使得更改后 的所述主核的大小端模式以及转换后的所述bootloader传递给所述操作系统的所有参数 的大小端模式与所述操作系统所需的大小端模式相同;其中,所述bootloader传递给所述 操作系统的所有参数包括:所述bootloader传递给操作系统的所述主核所需的参数和所 述bootloader传递给操作系统的所述从核所需的参数; 或者,所述主核,还用于获取所述bootloader传递给所述操作系统的所述主核所需的 参数,其中,所述bootloader传递给所述操作系统的所述主核所需的参数的首部添加有第 二魔术字; 所述主核,还用于在所述第二魔术字发生变化的情况下,所述主核更改所述主核的大 小端模式,并将所述bootloader传递给所述操作系统的所述主核所需的参数进行大小端 模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给操 作系统的所述主核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
31. 根据权利要求30所述的计算节点,其特征在于, 所述从核,还用于获取所述bootloader传递给所述操作系统的所述从核所需的参数, 其中,所述bootloader传递给所述操作系统的所述从核所需的参数的首部添加有第三魔 术字; 所述从核,还用于在所述从核确定所述第三魔术字发生变化的情况下,更改所述从核 的大小端模式,使得更改后的所述从核的大小端模式与所述操作系统所需的大小端模式相 同; 所述从核,还用于在所述第三魔术字发生变化,且所述主核获取所述bootloader传递 给所述操作系统的所述主核所需的参数的情况下,将所述bootloader传递给所述操作系 统的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给操 作系统的所述从核所需的参数的大小端模式与所述操作系统所需的大小端模式相同。
32. 根据权利要求26-31任一项所述的计算节点,其特征在于, 所述主核,还用于从所述从核配置指令获取所述从核的配置地址; 所述主核,还用于将所述从核的配置地址存储至所述非易失存储器。
33. -种bootloader大小端模式自适应的装置,其特征在于,包括: 获取单元,用于获取启动加载器bootloader中设置的当前核的大小端模式; 所述获取单元,还用于获取操作系统所需的大小端模式; 处理单元,用于在所述bootloader中设置的所述当前核的大小端模式与所述操作系 统所需的大小端模式不同的情况下,更改所述当前核的大小端模式,并将所述bootloader 传递给所述操作系统的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式 以及转换后的所述参数的大小端模式与所述操作系统所需的大小端模式相同。
34. -种bootloader大小端模式自适应的装置,其特征在于,包括: 获取单元,用于获取启动加载器bootloader传递给操作系统的参数,其中,所述参数 的首部添加有魔术字; 处理单元,用于在所述魔术字发生变化的情况下,更改当前核的大小端模式,并将所述 bootloader传递给所述操作系统的参数进行大小端模式转换,使得更改后的所述当前核的 大小端模式以及转换后的所述参数的大小端模式与所述操作系统所需的大小端模式相同。
【文档编号】G06F12/02GK104156234SQ201410351558
【公开日】2014年11月19日 申请日期:2014年7月22日 优先权日:2014年7月22日
【发明者】刘健平, 黄韶宇, 刘小波 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1