CN104156234B - 启动多核处理器、bootloader大小端模式自适应的方法及装置 - Google Patents
启动多核处理器、bootloader大小端模式自适应的方法及装置 Download PDFInfo
- Publication number
- CN104156234B CN104156234B CN201410351558.4A CN201410351558A CN104156234B CN 104156234 B CN104156234 B CN 104156234B CN 201410351558 A CN201410351558 A CN 201410351558A CN 104156234 B CN104156234 B CN 104156234B
- Authority
- CN
- China
- Prior art keywords
- core
- operating system
- little endian
- bootloader
- endian mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明实施例提供了启动多核处理器、bootloader大小端模式自适应的方法及装置,涉及集成电路领域,用以一定程度上解决不同型号的处理器无法使用相同的操作***的问题,提高操作***的兼容性。该方法应用于包括多核处理器和内存的计算节点,该方法包括:主核将从核引导程序存储至内存的首地址之后的连续的存储空间中;其中内存的首地址被映射到总线的0地址;主核复位至少一个从核中的从核,以使从核的程序计数器PC指针指向总线的0地址,从核通过总线访问总线的0地址映射的内存的首地址,读取内存中内存的首地址后存储的从核引导程序并执行从核引导程序;从核跳转到操作***的代码段,完成从核初始化。
Description
技术领域
本发明涉及集成电路领域,尤其涉及启动多核处理器、bootloader大小端模式自适应的方法及装置。
背景技术
操作***与硬件交互紧密,各产品使用的芯片、单板硬件差异很大。在嵌入式领域,传统上的处理器的硬件型号、bootloader(译为启动加载器,bootloader是嵌入式***在加电后执行的第一段代码,在它完成处理器和相关硬件的初始化之后,再将操作***镜像装载到内存中然后跳转到操作***所在的空间,启动操作***运行)版本和操作***版本需要一一对应,即每一型号的处理器(单核处理器或者多核处理器)都需要使用与其配套的操作***。操作***二进制归一后,可以同一版本的操作***支撑不同型号的处理器、不同版本的bootloader。
目前,处理器的多核化已成为主流,多核处理器由一个主核和至少一个从核组成。多核处理器的启动过程大致分为以下五个步骤:
第一步,主核启动,将非易失存储器中的bootloader拷贝到内存中运行。
第二步,主核从bootloader跳转到操作***,执行操作***中的指令,完成主核及操作***所需硬件的初始化,并将从核引导程序在内存中的存放地址写入总线的固定地址A中;固定地址A用于存放从核引导程序的第一条指令在内存中的地址。
第三步,主核向从核发送核间中断消息,唤醒从核,并等待从核初始化完毕。
第四步,从核通过总线的固定地址A,获取从核引导程序在内存中的存放地址,进而从内存中读取从核引导程序,并执行从核引导程序。
第五步,跳转到操作***的代码段,完成从核初始化,并通知主核本从核初始化完成。
在实现上述多核处理器启动的过程中,发明人发现现有技术中至少存在如下问题:相同架构下的不同型号的多核处理器以及不同架构下的不同型号的多核处理器的总线空间布局不同,使得内存在总线空间上的寻址范围不同,导致总线访问内存中存储的从核初始化代码的地址和相应的固定地址A不同。同时,由于固定地址A被硬编码写入操作***中,最终使得不同型号的处理器需要使用不同版本的操作***,操作***无法完成二进制归一。
发明内容
本发明的实施例提供启动多核处理器、bootloader大小端模式自适应的方法及装置,以一定程度上解决不同型号的处理器无法使用相同版本的操作***的问题,提高操作***的兼容性。
本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供了一种启动多核处理器的方法,应用于包括多核处理器和内存的计算节点,其中所述多核处理器通过总线访问所述内存,所述多核处理器包含主核及至少一个从核,所述主核执行启动加载器bootloader,所述方法包括:所述主核将从核引导程序存储至所述内存的首地址之后的连续的存储空间中;其中,所述内存的首地址被映射到所述总线的0地址;所述主核复位所述至少一个从核中的从核,以使所述从核的程序计数器PC指针指向所述总线的0地址,所述从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程序;所述从核跳转到操作***的代码段,完成从核初始化。
结合第一方面,在第一方面的第一种可能的实现方式中,在所述主核将从核引导程序存储至所述内存的首地址之后的连续的存储空间中之前,还包括:所述主核在所述从核引导程序中添加休眠指令;所述休眠指令用于使所述从核处于休眠状态;所述主核复位所述至少一个从核中的从核,以使所述从核的程序计数器PC指针指向所述总线的0地址,所述从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程序,包括:所述主核第一次复位所述从核,所述从核的PC指针指向所述总线的0地址,所述从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导程序中的所述休眠指令;所述主核第二次复位所述从核,所述从核的PC指针指向所述总线的0地址,所述从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导程序中除休眠指令之外的程序;其中,所述从核的复位次数为两次。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述从核跳转到操作***的代码段,完成从核初始化,包括:在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式相同的情况下,所述从核跳转到操作***的代码段,完成从核初始化。
结合第一方面或第一方面的第一或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在所述主核执行启动加载器bootloader之后,所述主核将从核引导程序存储至所述内存的首地址之后的连续的存储空间中之前,还包括:所述主核获取bootloader中设置的所述主核的大小端模式;所述主核获取操作***所需的大小端模式;在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,所述主核更改所述主核的大小端模式,使得更改后的所述主核的大小端模式与所述操作***所需的大小端模式相同;在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,还包括:所述主核将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所有参数的大小端模式与所述操作***所需的大小端模式相同;或者,所述主核将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述主核所需的参数的大小端模式与所述操作***所需的大小端模式相同;其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核所需的参数和所述bootloader传递给操作***的所述从核所需的参数。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,在所述从核执行所述从核引导程序之后,所述从核跳转到操作***的代码段之前,还包括:所述从核获取bootloader中设置的所述从核的大小端模式;所述从核获取操作***所需的大小端模式;在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式不同的情况下,所述从核更改所述从核的大小端模式,使得更改后的所述从核的大小端模式与所述操作***所需的大小端模式相同;在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式不同,且所述主核将所述bootloader传递给操作***的所述主核所需的参数进行大小端模式转换的情况下,还包括:所述从核将所述bootloader传递给所述操作***的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述从核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第一方面或第一方面的第一或第二种可能的实现方式,在第一方面的第五种可能的实现方式中,在所述主核执行启动加载器bootloader之后,所述主核将从核引导程序存储至所述内存的首地址之后的连续的存储空间中之前,还包括:所述主核获取所述bootloader传递给所述操作***的所有参数,其中,所述bootloader传递给所述操作***的所有参数的首部添加有第一魔术字;在所述第一魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给所述操作***的所有参数的大小端模式与所述操作***所需的大小端模式相同;其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核所需的参数和所述bootloader传递给操作***的所述从核所需的参数;或者,所述主核获取所述bootloader传递给所述操作***的所述主核所需的参数,其中,所述bootloader传递给所述操作***的所述主核所需的参数的首部添加有第二魔术字;在所述第二魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给操作***的所述主核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,所述从核获取所述bootloader传递给所述操作***的所述从核所需的参数,其中,所述bootloader传递给所述操作***的所述从核所需的参数的首部添加有第三魔术字;在所述从核确定所述第三魔术字发生变化的情况下,所述从核更改所述从核的大小端模式,使得更改后的所述从核的大小端模式与所述操作***所需的大小端模式相同;在所述从核确定所述第三魔术字发生变化,且所述主核获取所述bootloader传递给所述操作***的所述主核所需的参数的情况下,还包括:所述从核将所述bootloader传递给所述操作***的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述从核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第一方面或第一方面的第一至第六任一种可能的实现方式,在第一方面的第七种可能的实现方式中,在所述主核复位所述至少一个从核中的从核之前,还包括:所述主核获取所述从核的状态;当所述主核确定所述从核处于激活状态时,所述主核设置所述从核的复位次数为两次;当所述主核确定所述从核处于休眠状态或未启动状态时,所述主核设置所述从核的复位次数为一次。
第二方面,本发明实施例提供了一种启动多核处理器的方法,应用于包括多核处理器、内存和非易失存储器的计算节点,其中所述多核处理器通过总线访问所述内存以及所述非易失存储器,所述多核处理器包含主核及至少一个从核,所述方法包括:所述主核从从核配置指令,或者从所述非易失存储器获取从核的配置地址;其中,所述从核配置指令设置于启动加载器bootloader中;所述主核将从核引导程序存储至所述内存中所述配置地址之后的连续的存储空间中;所述主核向所述从核发送核间中断消息,使得所述从核通过所述总线访问所述配置地址,读取所述内存中所述配置地址后存储的所述从核引导程序并执行所述从核引导程序;所述从核跳转到操作***的代码段,完成从核初始化。
结合第二方面,在第二方面的第一种可能的实现方式中,所述从核跳转到操作***的代码段,完成从核初始化,包括:在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式相同的情况下,所述从核跳转到操作***的代码段,完成从核初始化。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,在所述主核从从核配置指令,或者从所述非易失存储器获取从核的配置地址之后,所述主核将从核引导程序存储至所述内存中所述配置地址之后的连续的存储空间中之前,还包括:所述主核获取bootloader中设置的所述主核的大小端模式;所述主核获取操作***所需的大小端模式;在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,所述主核更改所述主核的大小端模式,使得更改后的所述主核的大小端模式与所述操作***所需的大小端模式相同;在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,还包括:所述主核将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所有参数的大小端模式与所述操作***所需的大小端模式相同;或者,所述主核将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述主核所需的参数的大小端模式与所述操作***所需的大小端模式相同;其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核所需的参数和所述bootloader传递给操作***的所述从核所需的参数。
结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,在所述从核执行所述从核引导程序之后,所述从核跳转到操作***的代码段之前,还包括:所述从核获取bootloader中设置的所述从核的大小端模式;所述从核获取操作***所需的大小端模式;在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式不同的情况下,所述从核更改所述从核的大小端模式,使得更改后的所述从核的大小端模式与所述操作***所需的大小端模式相同;在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式不同,且所述主核将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换的情况下,还包括:所述从核将所述bootloader传递给所述操作***的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述从核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,在所述主核从从核配置指令,或者从所述非易失存储器获取从核的配置地址之后,所述主核将从核引导程序存储至所述内存中所述配置地址之后的连续的存储空间中之前,还包括:所述主核获取所述bootloader传递给所述操作***的所有参数,其中,所述bootloader传递给所述操作***的所有参数的首部添加有第一魔术字;在所述第一魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给所述操作***的所有参数的大小端模式与所述操作***所需的大小端模式相同;其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核所需的参数和所述bootloader传递给操作***的所述从核所需的参数;或者,所述主核获取所述bootloader传递给所述操作***的所述主核所需的参数,其中,所述bootloader传递给所述操作***的所述主核所需的参数的首部添加有第二魔术字;在所述第二魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给操作***的所述主核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,在所述从核执行所述从核引导程序之后,所述从核跳转到操作***的代码段之前,还包括:所述从核获取所述bootloader传递给所述操作***的所述从核所需的参数,其中,所述bootloader传递给所述操作***的所述从核所需的参数的首部添加有第三魔术字;在所述从核确定所述第三魔术字发生变化的情况下,所述从核更改所述从核的大小端模式,使得更改后的所述从核的大小端模式与所述操作***所需的大小端模式相同;在所述从核确定所述第三魔术字发生变化,且所述主核获取所述bootloader传递给所述操作***的所述主核所需的参数的情况下,还包括:所述从核将所述bootloader传递给所述操作***的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述从核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第二方面或第二方面的第一至第五任一种可能的实现方式,在第二方面的第六种可能的实现方式中,在所述主核从非易失存储器获取所述从核的配置地址之前,还包括:所述主核从所述从核配置指令获取所述从核的配置地址;所述主核将所述从核的配置地址存储至所述非易失存储器。
第三方面,本发明实施例提供了一种bootloader大小端模式自适应的方法,应用于处理器,所述方法包括:获取启动加载器bootloader中设置的当前核的大小端模式;获取操作***所需的大小端模式;若所述bootloader中设置的所述当前核的大小端模式与所述操作***所需的大小端模式不同,则更改所述当前核的大小端模式,并将所述bootloader传递给所述操作***的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操作***所需的大小端模式相同。
第四方面,本发明实施例提供了一种bootloader大小端模式自适应的方法,应用于处理器,所述方法包括:获取启动加载器bootloader传递给操作***的参数,其中,所述参数的首部添加有魔术字;若所述魔术字发生变化,则更改当前核的大小端模式,并将所述bootloader传递给所述操作***的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操作***所需的大小端模式相同。
第五方面,本发明实施例提供了一种计算节点,包括多核处理器和内存,其中所述多核处理器通过总线访问所述内存,所述多核处理器包含主核及至少一个从核,所述主核用于执行启动加载器bootloader,包括:所述主核,用于将从核引导程序存储至所述内存的首地址之后的连续的存储空间中;其中,所述内存的首地址被映射到所述总线的0地址;所述主核,还用于复位至少一个从核中的从核,以使所述从核的程序计数器PC指针指向所述总线的0地址;所述从核,用于通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程序;所述从核,还用于跳转到操作***的代码段,完成从核初始化。
结合第五方面,在第五方面的第一种可能的实现方式中,所述主核,还用于在所述从核引导程序中添加休眠指令;所述休眠指令用于使所述从核处于休眠状态;所述主核,具体用于第一次复位所述从核,所述从核的PC指针指向所述总线的0地址;所述从核,具体用于通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导程序中的所述休眠指令;所述主核,具体用于第二次复位所述从核,所述从核的PC指针指向所述总线的0地址;所述从核,具体用于通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导程序中除休眠指令之外的程序;其中,所述从核的复位次数为两次。
结合第五方面或第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,所述从核,具体用于在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式相同的情况下,跳转到操作***的代码段,完成从核初始化。
结合第五方面或第五方面的第一或第二种可能的实现方式,在第五方面的第三种可能的实现方式中,所述主核,还用于获取bootloader中设置的所述主核的大小端模式;所述主核,还用于获取操作***所需的大小端模式;所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,更改所述主核的大小端模式,使得更改后的所述主核的大小端模式与所述操作***所需的大小端模式相同;所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操作***所需的大小端模式相同;或者,将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述主核所需的参数的大小端模式与所述操作***所需的大小端模式相同;其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核所需的参数和所述bootloader传递给操作***的所述从核所需的参数。
结合第五方面的第三种可能的实现方式,在第五方面的第四种可能的实现方式中,所述从核,还用于获取bootloader中设置的所述从核的大小端模式;所述从核,还用于获取操作***所需的大小端模式;所述从核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式不同的情况下,更改所述从核的大小端模式,使得更改后的所述从核的大小端模式与所述操作***所需的大小端模式相同;所述从核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式不同,且所述主核将所述bootloader传递给操作***的所述主核所需的参数进行大小端模式转换的情况下,将所述bootloader传递给所述操作***的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给操作***的所述从核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第五方面或第五方面的第一或第二种可能的实现方式,在第五方面的第五种可能的实现方式中,所述主核,还用于获取所述bootloader传递给所述操作***的所有参数,其中,所述bootloader传递给所述操作***的所有参数的首部添加有第一魔术字;所述主核,还用于在所述第一魔术字发生变化的情况下,更改所述主核的大小端模式,并将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给所述操作***的所有参数的大小端模式与所述操作***所需的大小端模式相同;其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核所需的参数和所述bootloader传递给操作***的所述从核所需的参数;或者,所述主核,还用于获取所述bootloader传递给所述操作***的所述主核所需的参数,其中,所述bootloader传递给所述操作***的所述主核所需的参数的首部添加有第二魔术字;所述主核,还用于在所述第二魔术字发生变化的情况下,更改所述主核的大小端模式,并将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给操作***的所述主核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第五方面的第五种可能的实现方式,在第五方面的第六种可能的实现方式中,所述从核,还用于获取所述bootloader传递给所述操作***的所述从核所需的参数,其中,所述bootloader传递给所述操作***的所述从核所需的参数的首部添加有第三魔术字所述参数的首部添加有魔术字;所述从核,还用于在所述从核确定所述第三魔术字发生变化的情况下,更改所述从核的大小端模式,使得更改后的所述从核的大小端模式与所述操作***所需的大小端模式相同;所述从核,还用于在所述第三魔术字发生变化,且所述主核获取所述bootloader传递给所述操作***的所述主核所需的参数的情况下,将所述bootloader传递给所述操作***的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述从核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第五方面或第五方面的第一至第六任一种可能的实现方式,在第五方面的第七种可能的实现方式中,所述主核,还用于获取所述从核的状态;所述主核,还用于确定所述从核处于激活状态时,所述主核设置所述从核的复位次数为两次;所述主核,还用于确定所述从核处于休眠状态或未启动状态时,所述主核设置所述从核的复位次数为一次。
第六方面,本发明实施例提供了一种计算节点,包括多核处理器、内存和非易失存储器,其中所述多核处理器通过总线访问所述内存以及所述非易失存储器,所述多核处理器包含主核及至少一个从核,包括:所述主核,用于从从核配置指令中,或者从所述非易失存储器中获取所述从核的配置地址;其中,所述从核配置指令设置于所述启动加载器bootloader中;所述主核,还用于将从核引导程序存储至所述内存中所述配置地址之后的连续的存储空间中;所述主核,还用于向从核发送核间中断消息;所述从核,用于通过所述总线访问所述配置地址,读取所述内存中所述配置地址后存储的所述从核引导程序并执行所述从核引导程序;所述从核,还用于跳转到操作***的代码段,完成从核初始化。
结合第六方面,在第六方面的第一种可能的实现方式中,所述从核,具体用于在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式相同的情况下,所述从核跳转到操作***的代码段,完成从核初始化。
结合第六方面或第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,所述主核,还用于获取bootloader中设置的所述主核的大小端模式;所述主核,还用于获取操作***所需的大小端模式;所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,更改所述主核的大小端模式,使得更改后的所述主核的大小端模式与所述操作***所需的大小端模式相同;所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操作***所需的大小端模式相同;或者,将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述主核所需的参数的大小端模式与所述操作***所需的大小端模式相同;其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核所需的参数和所述bootloader传递给操作***的所述从核所需的参数。
结合第六方面的第二种可能的实现方式,在第六方面的第三种可能的实现方式中,所述从核,还用于获取bootloader中设置的所述从核的大小端模式;所述从核,还用于获取操作***所需的大小端模式;所述从核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式不同的情况下,更改所述从核的大小端模式,使得更改后的所述从核的大小端模式与所述操作***所需的大小端模式相同;所述从核,还用于在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式不同,且所述主核将所述bootloader传递给操作***的所述主核所需的参数进行大小端模式转换的情况下,将所述bootloader传递给所述操作***的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给操作***的所述从核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第六方面或第六方面的第一种可能的实现方式,在第六方面的第四种可能的实现方式中,所述主核,还用于获取所述bootloader传递给所述操作***的所有参数,其中,所述bootloader传递给所述操作***的所有参数的首部添加有第一魔术字;所述主核,还用于在所述第一魔术字发生变化的情况下,更改所述主核的大小端模式,并将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给所述操作***的所有参数的大小端模式与所述操作***所需的大小端模式相同;其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核所需的参数和所述bootloader传递给操作***的所述从核所需的参数;或者,所述主核,还用于获取所述bootloader传递给所述操作***的所述主核所需的参数,其中,所述bootloader传递给所述操作***的所述主核所需的参数的首部添加有第二魔术字;所述主核,还用于在所述第二魔术字发生变化的情况下,所述主核更改所述主核的大小端模式,并将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的所述bootloader传递给操作***的所述主核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第六方面的第四种可能的实现方式,在第六方面的第五种可能的实现方式中,所述从核,还用于获取所述bootloader传递给所述操作***的所述从核所需的参数,其中,所述bootloader传递给所述操作***的所述从核所需的参数的首部添加有第三魔术字;所述从核,还用于在所述从核确定所述第三魔术字发生变化的情况下,更改所述从核的大小端模式,使得更改后的所述从核的大小端模式与所述操作***所需的大小端模式相同;所述从核,还用于在所述第三魔术字发生变化,且所述主核获取所述bootloader传递给所述操作***的所述主核所需的参数的情况下,将所述bootloader传递给所述操作***的所述从核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给操作***的所述从核所需的参数的大小端模式与所述操作***所需的大小端模式相同。
结合第六方面或第六方面的第一至第五任一种可能的实现方式,在第六方面的第六种可能的实现方式中,所述主核,还用于从所述从核配置指令获取所述从核的配置地址;所述主核,还用于将所述从核的配置地址存储至所述非易失存储器。
第七方面,本发明实施例提供了一种bootloader大小端模式自适应的装置,包括:获取单元,用于获取启动加载器bootloader中设置的当前核的大小端模式;所述获取单元,还用于获取操作***所需的大小端模式;处理单元,用于在所述bootloader中设置的所述当前核的大小端模式与所述操作***所需的大小端模式不同的情况下,更改所述当前核的大小端模式,并将所述bootloader传递给所述操作***的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操作***所需的大小端模式相同。
第八方面,本发明实施例提供了一种bootloader大小端模式自适应的装置,包括:获取单元,用于获取启动加载器bootloader传递给操作***的参数,其中,所述参数的首部添加有魔术字;处理单元,用于在所述魔术字发生变化的情况下,更改当前核的大小端模式,并将所述bootloader传递给所述操作***的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操作***所需的大小端模式相同。
本发明实施例提供了启动多核处理器、bootloader大小端模式自适应的方法及装置,主核初始化硬件映射,将内存的首地址映射到总线的0地址,并将从核引导程序存储至内存的首地址之后连续的存储空间中;主核复位从核,以使得从核的PC(Program Counter,程序计数器)指针指向总线的0地址,从核被复位后,从总线的0地址对应的内存的首地址执行从核引导程序;从核执行完从核引导程序后,跳转到操作***的代码段,完成从核初始化,并通知所述主核所述从核初始化完成。这样,利用每种型号的多核处理器在从核被复位后从核的PC指针指向总线的0地址的特性,建立总线的0地址与内存的首地址的映射关系,并将从核引导程序存储在内存的首地址后的连续的存储空间中,使得从核被复位后能够通过总线的0地址对应的内存的首地址读取到内存中存储的从核引导程序,并执行所述从核引导程序,从而就不需要在总线中设定用于存储从核引导程序在内存中的存放地址的固定地址A,实现了多核处理器的bootloader与操作***间固定地址A的解耦合,不需要根据每一型号多核处理器设置匹配的操作***,使得不同版本型号的多核处理器可以使用相同的操作***,最终完成多核处理器操作***的二进制归一,提高了操作***的兼容性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的操作***二进制归一示意图;
图2为本发明所有实施例适用的一种场景;
图3为本发明所有实施例适用的另一种场景;
图4为本发明实施例提供的一种启动多核处理器的流程示意图;
图5为本发明实施例提供的另一种启动多核处理器的流程示意图;
图6为现有技术中处理器核对大小端场景支撑的示意图;
图7为本发明实施例提供的另一种启动多核处理器的流程示意图;
图8为本发明实施例提供的另一种启动多核处理器的流程示意图;
图9为本发明实施例提供的另一种bootloader大小端模式自适应的流程示意图;
图10为本发明实施例提供的另一种bootloader大小端模式自适应的流程示意图;
图11为本发明实施例提供的一种计算节点的结构示意图;
图12为本发明实施例提供的另一种计算节点的结构示意图;
图13为本发明实施例提供的一种bootloader大小端模式自适应的装置的结构示意图;
图14为本发明实施例提供的另一种bootloader大小端模式自适应的装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
多核处理器(英语:Multi-core processor),也叫多微处理器核心,是将两个或更多的核装在一个单一集成电路(IC)中的方案。这些核分为一个主核和至少一个从核,每一个核可以分别独立运行程序指令,利用并行计算的能力,可以加快程序的运行速度,提供多任务能力。多核处理器中有总线,多核处理器通过总线访问内存或者非易失存储器等多核处理器的外部器件。
操作***(英语;Operating System,简称OS)是操作***是管理硬件与软件资源、控制其他程序运行、为用户提供操作界面的软件的集合。
Bootloader是在操作***运行之前运行的一段程序,用于初始化硬件设备、建立内存空间映射图,从而将操作***的软硬件环境带到一个合适状态,以便为最终调用操作***内核准备好正确的环境。
操作***二进制归一的前后操作***与bootloader、处理器之间的映射关系如图1所示。其中,图1左侧表示操作***二进制归一前,操作***、bootloader、处理器硬件间的映射关系;图1右侧表示操作***二进制归一后,操作***、bootloader、处理器硬件间的映射关系。操作***二进制归一的场景有两种:第一种场景,如图2所示,当产品升级硬件,即更换处理器时,只将bootloader的版本更换为与处理器对应的版本,不需要更新操作***的版本;第二种场景,如图3所示,当处理器对应的bootloader更新时,不需要更新操作***的版本,即使用同一操作***就能够支撑新的bootloader。本发明所有实施例均适用于以上两种场景。
本发明实施例提供了一种启动多核处理器的方法,应用于包括多核处理器和内存的计算节点,其中多核处理器通过总线访问内存,该多核处理器包含主核及至少一个从核。
需要说明的是,本发明实施例只描述了一个从核的启动过程。如果该多核处理器包含多个从核的情况下,主核先执行步骤401-402,完成从核引导程序的配置,然后依次使每一个从核执行步骤403-404,以完成所有从核的启动,这样该多核处理器才完成启动。
如图4所示,该方法包括:
401、主核执行bootloader。
具体的,首先该多核处理器上电,每一个核都需要判断本核是主核还是从核;然后判断出是主核的情况下,完成对主核所需硬件的初始化;接着主核进入bootloader的控制台,判断是否自动启动***,在确定自动启动***的情况下,跳转至步骤402开始启动操作***,在确定不自动启动***的情况下,在bootloader的控制台死循环,直到接收到用户发送启动内核的命令后跳转至步骤402开始启动操作***。
402、主核将从核引导程序存储至内存的首地址之后的连续的存储空间中。
其中,所述内存的首地址被映射到所述总线的0地址。
需要说明的是,内存的首地址是内存中的地址,总线0的地址是总线上的地址,两者之间没有固定的映射关系。为了不需要在总线中设定用于存放从核引导程序在内存中的存放地址的固定地址A,在此需要使内存的首地址映射到总线的0地址,并利用主核复位从核,从核被复位后PC指针指向总线的0地址的特性,将从核引导程序存储至内存的首地址后连续的存储空间中,以使得通过总线的0地址映射的内存的首地址能够获取到从核引导程序。
需要说明的是,在执行步骤402之前,需要保证内存的首地址与总线的0地址存在映射关系。多核处理器设置有一位特定的寄存器,当主核上电后,寄存器的默认值为1,则主核跳转至非易失存储器中读取数据;当寄存器的值改为0时,主核从内存中读取数据。当然对于在不同型号的多核的处理器,此寄存器的状态也可能反过来设置,默认值为0,跳转至非易失存储器;值为1时,跳转至内存。本实施例中将内存的首地址映射到总线的0地址的过程,就是设置该寄存器以使得主核能够从内存中读取数据的过程。
本发明实施例中的非易失存储器,例如是Norflash(一种闪存)或ROM(Read OnlyMemory,只读存储器),本发明实施例中的内存例如是DDR(Double Data Rate,双倍速率同步动态随机存储器),SRAM(Static Random Access Memory,静态随机存储器)。本发明实施例中的多核处理器,例如,MIPS(Microprocessor without Interlocked Piped Stages,无内部互锁流水级的微处理器)、ARM(英文:Acorn RISC Machine)等精简指令架构的多核处理器。
需要说明的是,在多核处理器包括多个从核的情况下,所有从核的从核引导程序是共用的,也就是说,每个从核在被复位后,都会到总线的0地址对应的内存的首地址后连续的存储空间中去读取相同的从核引导程序。
需要说明的是,数据在存储器中的存放顺序分为大端模式和小端模式。大端模式(Big-Endian)就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。小端模式(Little-Endian)就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。处理器核的大小端模式必须和数据存储时的大小端模式相同,才能正确的读取数据。本实施例默认存储的bootloader设置的主核的大小端模式与操作***所需的大小端模式相同,所以不需要考虑bootloader中设置的主核的大小端模式是否与操作***所需的大小端模式是否相同,
执行完步骤401后直接执行步骤402。
403、主核复位至少一个从核中的从核,以使得从核的PC(Program Counter,程序计数器)指针指向总线的0地址,从核被复位,通过所述总线访问总线的0地址映射的内存的首地址,读取内存中所述内存的首地址后存储的从核引导程序并执行从核引导程序。
需要说明的是,本实施例主要是通过所有的多核处理器在主核复位从核后,从核的PC指针指向总线的0地址的特性,将内存的首地址映射到总线的0地址处,并且将从核引导程序存储至内存的首地址后连续的存储空间中,不需要为每一型号多核处理器设置匹配的操作***,从而实现操作***的二进制归一。
具体的,通过主核复位从核的方式将从核唤醒,从核被主核复位后的PC指针指向总线的0地址,根据总线的0地址与内存的首地址的映射关系,通过总线访问总线的0地址映射的内存的首地址,读取并执行存储于内存的首地址后的从核引导程序。
需要说明的是,主核每次只复位一个从核,被复位的从核的PC指针会指向总线的0地址,即被复位的从核被主核唤醒,开始运行。
此处没有限制主核对从核进行几次复位,主核可能对从核进行两次复位,也可能只对从核进行一次复位。
404、从核执行完从核引导程序后,跳转到操作***的代码段,完成从核初始化。
具体的,从核初始化的步骤包括:从核L1cache、MMU(Memory Management Unit,内存管理单元)、TLB(Translation Lookaside Buffer,旁路转换缓冲或页表缓冲)等其它的初始化;所有核online(上线);该从核加入该多核处理器的调度域。
本实施例默认存储的bootloader设置的从核的大小端模式与操作***所需的大小端模式相同,所以不需要考虑bootloader中设置的从核的大小端模式是否与操作***所需的大小端模式是否相同,执行完步骤403后直接执行步骤404。
需要说明的是,主核能够确定所在处理器中一共有几个从核,并且会在共享内存中设置一个启动标识。主核复位一个从核,在被复位的从核初始化完成后,从核会更改共享内存中的启动标识,以通知主核该从核启动完毕。同时,主核会轮询共享内存中的启动标识,根据启动标识判断这个从核是否启动完毕;在启动标识的被更改的情况下,重新初始化启动标识,开始启动下一个从核。
从核初始化完成后,在还有其他从核未启动的情况下,继续执行步骤403-404,对其他从核进行初始化;当至少一个从核中的每个从核均完成从核初始化后,本发明实施例的多核处理器完成启动。
本发明实施例提供了一种启动多核处理器的方法,在内存的首地址映射总线的0地址的情况下,将从核引导程序存储至内存的首地址之后的连续的存储空间中;主核复位从核,以使得从核的PC指针指向总线的0地址,从核被复位后,通过所述总线访问总线的0地址映射的内存的首地址,读取内存中所述内存的首地址后存储的从核引导程序,并执行从核引导程序;从核执行完从核引导程序后,跳转到操作***的代码段,完成从核初始化。这样,利用每种型号的多核处理器在从核被主核复位后从核的PC指针指向总线的0地址的特性,建立总线的0地址与内存的首地址的映射关系,并将从核引导程序存储在内存的首地址后的连续的存储空间中,使得从核被复位后能够通过总线的0地址对应的内存的首地址读取到内存中存储的从核引导程序,并执行所述从核引导程序,从而就不需要在总线中设定用于存储从核引导程序在内存中的存放地址的固定地址A,实现了多核处理器的bootloader与操作***间固定地址A的解耦合,不需要根据每一型号多核处理器设置匹配的操作***,使得不同版本型号的多核处理器可以使用相同的操作***,最终完成多核处理器操作***的二进制归一,提高了操作***的兼容性。
本发明实施例提供了一种启动多核处理器的方法,应用于包括多核处理器和内存的计算节点,其中该多核处理器通过总线访问内存,该多核处理器包含主核及至少一个从核。
需要说明的是,本发明实施例只描述了一个从核的启动过程。如果该多核处理器包含多个从核的情况下,主核先执行步骤501-511,完成从核引导程序的配置,然后依次使每一个从核执行步骤512-523,以完成所有从核的启动,这样该多核处理器才完成启动。
如图5所示,该方法包括:
501、主核执行bootloader。
具体的,可参考步骤401,在此不再赘述。
502、主核在从核引导程序中添加休眠指令。
其中,休眠指令用于使从核处于休眠状态。
此时,从核引导程序中不仅有原本的启动该从核所需的程序,还有休眠指令,相应的,主核需要设定从核复位次数,从核根据从核复位次数确定从核被复位以后是执行从核引导程序中的休眠指令还是执行从核引导程序中启动该从核的相关程序。
需要说明的是,从核引导程序中的休眠指令是一条汇编指令,执行这条指令时,从核停留在这条指令处,等待被中断或者等待主核复位该从核。
需要说明的是,若从核处于休眠状态,那么从核满足启动条件,即从核被复位后,从核的PC指针一定会指向总线的0地址。
现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader的大小端模式与操作***的大小端模式必须一致,只能用小端模式的bootloader启动小端模式的操作***,大端模式的bootloader启动大端模式的操作***,这样会导致同一个操作***不能使用不同大小端模式的bootloader,无法完全实现操作***的二进制归一。本实施例中的步骤503-506与步骤507-510是使bootloader中设置的主核的大小端模式与操作***的大小端模式兼容的两种方法,所以只需要执行步骤503-506或步骤507-510中的任一种即可。
503、主核获取bootloader中设置的主核的大小端模式。
具体的,主核读取主核的状态寄存器,从状态寄存器中存储的大小端模式信息,确定bootloader中设置的主核的大小端模式。
需要说明的是,由于bootloader在编写时与操作***是相互分离的,所以存在bootloader中设置的主核的大小端模式与操作***所需的大小端模式不匹配的可能,为了同一个操作***能够使用不同的bootloader,也就是实现多核处理器操作***的二进制归一,所以需要将主核的大小端模式进行调整。
需要说明的是,bootloader中设置的主核的大小端模式与bootloader的大小端模式相同,由于bootloader的大小端模式是固定的,并且操作***所需的大小端模式也是固定的,而主核的大小端模式是可以改变的,所以需要通过判断bootloader中设置的主核的大小端模式与操作***所需的大小端模式是否一致,来判断是否需要更改主核的大小端模式。
504、主核获取操作***所需的大小端模式。
具体的,主核通过数据访问方式读取操作***代码段的指令,并根据机器码的编码规则,判断读取***代码段的指令是否被翻转,从而确定操作***所需的大小端模式。
505、在bootloader中设置的主核的大小端模式与操作***所需的大小端模式不同的情况下,主核更改主核的大小端模式,使得更改后的主核的大小端模式与操作***所需的大小端模式相同。
506、在bootloader中设置的主核的大小端模式与操作***所需的大小端模式不同的情况下,主核将bootloader传递给操作***的所有参数进行大小端模式转换,使得转换后的bootloader传递给操作***的所有参数的大小端模式与操作***所需的大小端模式相同;或者,主核将bootloader传递给操作***的主核所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的主核所需的参数的大小端模式与操作***所需的大小端模式相同。
其中,bootloader传递给操作***的所有参数包括:bootloader传递给操作***的主核所需的参数和bootloader传递给操作***的从核所需的参数。
需要说明的是,因为bootloader传递给操作***的参数的大小端模式以及bootloader中设置的主核的大小端模式与bootloader的大小端模式一致。所以在bootloader中设置的主核的大小端模式与操作***所需的大小端模式不相同,也就是,bootloader传递给操作***的参数的大小端模式与操作***所需的大小端模式不相同,此时,需要将bootloader传递给操作***的参数的大小端模式进行转换,使得转换后的参数的大小端模式与所述操作***所需的大小端模式相同,以便操作***能够正确读取该参数。
需要说明的是,主核此时转换的参数有两种情况:第一种情况,主核将bootloader传递给操作***的所有参数都进行大小端模式转换,此时,主核转换的参数包括:bootloader传递给操作***的主核所需的参数和bootloader传递给操作***的从核所需的参数;第二种情况,主核在此只将bootloader传递给操作***的主核所需的参数进行大小端模式转换,这种情况下,从核在跳转到操作***时,才确定是否将bootloader传递给操作***的从核需要的参数进行大小端模式转换。
需要说明的是,bootloader传递给操作***的参数包括内存的大小,串口传输速率等信息。
需要说明的是,在bootloader中设置的主核的大小端模式与操作***所需的大小端模式相同的情况下,不执行步骤505-506,直接执行步骤511。
需要说明的是,根据主核获取的参数是bootloader传递给操作***的所有参数,还是bootloader传递给操作***的所有参数中主核所需的参数,分别执行步骤507-508或者步骤509-510。
507、主核获取bootloader传递给操作***的所有参数。
其中,bootloader传递给操作***的所有参数的首部添加有第一魔术字。bootloader传递给操作***的所有参数包括:bootloader传递给操作***的主核所需的参数和bootloader传递给操作***的从核所需的参数。
第一魔术字是预先设定的由出现频率低且较奇特的数字或字母的组合。第一魔术字用于判断bootloader中设置的主核的大小端模式与操作***所需的大小端模式是否相同。
此时,bootloader是将操作***所需的所有参数一次全部传递给操作***。bootloader传递给操作***的参数包括内存的大小,串口传输速率等信息。
508、在第一魔术字发生变化的情况下,主核更改主核的大小端模式,并将bootloader传递给操作***的所有参数进行大小端模式转换,使得更改后的主核的大小端模式以及转换后的bootloader传递给操作***的所有参数的大小端模式与所述操作***所需的大小端模式相同。
具体的,主核将获取到的第一魔术字与预先存储的第一魔术字比较,当获取的第一魔术字与预先存储的第一魔术字不同,就说明主核的大小端模式与操作***所需的大小端模式不同,主核更改主核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换。
需要说明的是,在第一魔术字没有发生变化的情况下,不执行步骤508,直接执行步骤511。
509、主核获取bootloader传递给操作***的所述主核所需的参数。
其中,所述bootloader传递给所述操作***的所述主核所需的参数的首部添加有第二魔术字。
第二魔术字也是预先设定的由出现频率低且较奇特的数字或字母的组合,但是第二魔术字与第一魔术字不同。
510、在第二魔术字发生变化的情况下,主核更改主核的大小端模式,并将bootloader传递给操作***的主核所需的参数进行大小端模式转换,使得更改后的所述主核的大小端模式以及转换后的bootloader传递给操作***的主核所需的参数的大小端模式与操作***所需的大小端模式相同。
具体的,主核将获取到的第二魔术字与预先存储的第二魔术字比较,当获取的第二魔术字与预先存储的第二魔术字不同,就说明主核的大小端模式与操作***所需的大小端模式不同,主核更改主核的大小端模式,并将bootloader传递给操作***的主核所需的参数进行大小端模式转换。
需要说明的是,在第二魔术字没有发生变化的情况下,不执行步骤510,直接执行步骤511。
511、主核将从核引导程序存储至内存的首地址之后的连续的存储空间中。
其中,内存的首地址被映射到总线的0地址。
具体的,可参考步骤402,在此不再赘述。
512、主核获取从核的状态。
需要说明的是,主核需要确定从核的状态,进而确定对从核进行一次复位还是两次复位。
513、主核确定从核处于激活状态时,主核设置从核的复位次数为两次。
需要说明的是,如果从核处于激活状态,那么可能从核的相关硬件不满足从核启动所需的条件,所以需要对从核进行两次复位。第一次主核复位从核,是为了使从核执行从核引导程序中的休眠指令,进入休眠状态,也就是说是为了配置相关硬件,以使得满足从核启动所需的条件;第二次主核复位从核,是为了使从核执行引导程序中启动从核所需的程序,完成从核的启动。
需要说明的是,主核将从核的复位次数存储于固定的总线地址中,从核被复位后从固定的总线地址中读取自身的复位次数,以判断执行从核引导程序中的休眠指令或从核引导程序中启动该从核的相关程序。
514、主核确定从核处于休眠状态或未启动状态时,主核设置从核的复位次数为一次。
需要说明的是,如果从核处于休眠状态或未启动状态,那么从核的相关硬件满足从核启动所需的条件,所以只需要对从核进行一次复位就可以完成从核的启动。
515、主核复位从核,以使从核的PC指针指向总线的0地址,从核被复位,通过所述总线访问总线的0地址映射的内存的首地址,读取内存中内存首地址后存储的从核引导程序并执行从核引导程序。
具体的,步骤515可以分解为以下三个步骤:
步骤一:主核复位从核,从核被复位,从核的PC指针指向总线的0地址,并获取从核的复位次数。
需要说明的是,从核获取的从核的复位次数的值可能是一次,也有可能是两次。
具体的,在主核将从核的复位次数存储至总线的固定地址中的情况下,从核获取自身复位次数的过程就是从核到总线固定地址读取该固定地址中存储的值的过程。
需要说明的是,从核需要根据复位次数来判断跳转至总线空间0地址对应的内存空间首地址后,是执行从核引导程序中启动从核的程序,还是执行从核引导程序中的休眠指令。
步骤二、在从核的复位次数为两次的情况下,从核通过总线访问总线空间0地址映射的内存的首地址,读取并执行从核引导程序中的休眠指令,将从核的复位次数减一并等待从核再次被主核复位。
需要说明的是,在从核确定需要进行两次复位的情况下,步骤一和步骤二使得从核完成第一次复位,从核从激活状态变为休眠状态,也就是配置相关硬件满足了从核启动的条件,并等待主核第二次复位,以完成从核启动。
需要说明的是,在从核进入休眠状态的同时,主核会将从核的复位次数减一,以使得从核在进行第二次复位时,判断出的复位次数为一次,从而执行从核引导程序中除休眠指令之外的程序,而不是执行从核引导程序中的休眠指令。
需要说明的是,从核进入休眠状态后,等待第二次被主核复位,在从核第二次被主核复位的情况下,跳转至步骤一。
步骤三:在从核的复位次数为一次的情况下,从核通过总线访问总线的0地址映射的内存的首地址,读取并执行从核引导程序中除休眠指令之外的程序,完成从核的启动。
需要说明的是,在主核对从核进行两次复位的情况下,执行步骤顺序为:步骤一、步骤二、步骤一、步骤三;在主核对从核进行一次复位的情况下,执行步骤顺序为:步骤一、步骤三。
需要说明的是,为了提高从核引导程序的健壮性,避免程序被篡改,可以在从核引导程序的最前端加入一些出现频率低且较奇特的数字或字母组成的魔术字。在从核读取自身的引导程序之前,判断从核引导程序的魔术字与***预定义的从核引导程序的魔术字是否相同,来判断存储的从核引导程序是否经过篡改。在从核引导程序的魔术字与***预定义的从核引导程序的魔术字相同的情况下,从核才读取从核引导程序,执行从核引导程序中的休眠指令或者执行从核引导程序中除休眠指令外的其他程序;在从核引导程序的魔术字与***预定义的从核引导程序的魔术字不相同的情况下,说明从核引导程序经过篡改,从核不能获取正确的从核引导程序,所以该从核启动失败,此时不用执行以下所有步骤。
现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader的大小端模式与操作***的大小端模式必须一致,只能用小端模式的bootloader启动小端模式的操作***,大端模式的bootloader启动大端模式的操作***,这样会导致同一个操作***不能使用不同大小端模式的bootloader,无法完全实现操作***的二进制归一。本实施例中的步骤516-519与步骤520-522是使bootloader中设置的从核的大小端模式与操作***的大小端模式兼容的两种方法,所以只需要执行步骤516-519或步骤520-522中的任一种即可。
需要说明的是,数据在存储器中的存放顺序分为大端模式和小端模式。大端模式(Big-Endian)就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。小端模式(Little-Endian)就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。处理器核的大小端模式必须和数据存储时的大小端模式相同,才能正确的读取数据。
516、从核执行完从核引导程序后,从核获取bootloader中设置的从核的大小端模式。
具体的,从核读取本从核的状态寄存器,从状态寄存器中存储的大小端模式信息,确定bootloader中设置的从核的大小端模式。
需要说明的是,由于bootloader在编写时与操作***是相互分离的,所以存在bootloader中设置的从核的大小端模式与操作***所需的大小端模式不匹配的可能,为了同一个操作***能够使用不同的bootloader,也就是实现多核处理器操作***的二进制归一,所以需要将从核的大小端模式进行调整,并将bootloader传递给操作***的参数进行大小端模式转换。
需要说明的是,bootloader中设置的从核的大小端模式与bootloader的大小端模式相同,由于bootloader的大小端模式是固定的,并且操作***所需的大小端模式也是固定的,而从核的大小端模式是可以改变的,所以需要通过判断bootloader中设置的从核的大小端模式与操作***所需的大小端模式是否一致,来判断是否需要更改从核的大小端模式。
517、从核获取操作***所需的大小端模式。
具体的,从核通过数据访问方式读取操作***代码段的指令,并根据机器码的编码规则,判断读取***代码段的指令是否被翻转,从而确定操作***所需的大小端模式。
518、若bootloader中设置的从核的大小端模式与操作***所需的大小端模式不同,则从核更改从核的大小端模式,使得更改后的从核的大小端模式与操作***所需的大小端模式相同。
需要说明的是,因为bootloader传递给操作***的参数的大小端模式是与bootloader中设置的从核的大小端模式相同,所以在从核的大小端模式与操作***所需的大小端模式不相同的情况下,需要将从核的大小端模式进行转换,使得更改后的从核的大小端模式与所述操作***所需的大小端模式相同,以便操作***能够正确读取操作***。
519、在bootloader中设置的从核的大小端模式与操作***所需的大小端模式不同,且主核将bootloader传递给操作***的主核所需的参数进行大小端模式转换的情况下,从核将bootloader传递给操作***的从核所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的从核所需的参数的大小端模式与操作***所需的大小端模式相同。
需要说明的是,在主核只将bootloader传递给操作***的主核所需的参数进行大小端模式转换,而不是将bootloader传递给操作***的所有参数进行大小端模式转换的情况下,bootloader传递给操作***的参数中从核所需的参数还没有经过大小端模式转换。所以在从核的大小端模式与操作***所需的大小端模式不同的情况下,进一步还要将将bootloader传递给操作***的从核所需的参数进行大小端模式转换使得转换后的bootloader传递给操作***的从核所需的参数的大小端模式与操作***所需的大小端模式相同。
需要说明的是,在主核将bootloader传递给操作***的所有参数进行大小端模式转换的情况下,bootloader传递给操作***的参数中从核所需的参数已经经过大小端模式转换,与操作***所需的大小端模式相同,所以此种情况下,不执行步骤519。
需要说明的是,在从核确定从核的大小端模式与操作***所需的大小端模式相同的情况下,不执行步骤518-519,直接执行步骤523。
520、从核获取bootloader传递给操作***的从核所需的参数。
其中,bootloader传递给操作***的从核所需的参数的首部添加有第三魔术字。
需要说明的是,第三魔术字也是预先设定的由出现频率低且较奇特的数字或字母的组合,但是第二魔术字与第一魔术字和第二魔术字均不同。
需要说明的是,第三魔术字的大小端模式与bootloader中设置的从核的大小端模式相同。如果从核读取的第三魔术字正确,就说明操作***的大小端模式与bootloader中设置的从核的大小端模式相同;如果根据操作***读取的参数的魔术字不正确,就说明操作***的大小端模式与bootloader中设置的从核的大小端模式不相同。
521、在从核确定第三魔术字发生变化的情况下,从核更改从核的大小端模式,使得更改后的从核的大小端模式与操作***所需的大小端模式相同。
具体的,从核将获取到的第三魔术字与预先存储的第三魔术字比较,当获取的第三魔术字与预先存储的第三魔术字不同,就说明从核的大小端模式与操作***所需的大小端模式不同,从核更改从核的大小端模式。
522、在从核确定第三魔术字发生变化,且主核获取bootloader传递给所述操作***的主核所需的参数的情况下,从核将bootloader传递给操作***的从核所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的从核所需的参数的大小端模式与操作***所需的大小端模式相同。
需要说明的是,在主核只将bootloader传递给操作***的主核所需的参数进行大小端模式转换,而不是将bootloader传递给操作***的所有参数进行大小端模式转换的情况下,bootloader传递给操作***的参数中从核所需的参数还没有经过大小端模式转换。所以在从核的大小端模式与操作***所需的大小端模式不同的情况下,进一步还要将bootloader传递给操作***的从核所需的参数进行大小端模式转换使得转换后的bootloader传递给操作***的从核所需的参数的大小端模式与操作***所需的大小端模式相同。
需要说明的是,在主核将bootloader传递给操作***的所有参数进行大小端模式转换的情况下,bootloader传递给操作***的参数中从核所需的参数已经经过大小端模式转换,与操作***所需的大小端模式相同,所以此种情况下,不执行步骤522。
需要说明的是,在第三魔术字没有发生变化的情况下,不执行步骤521-522,直接执行步骤523。
523、跳转到操作***的代码段,完成从核初始化。
具体的,可参考步骤404,在此不再赘述。
需要说明的是,执行步骤523时,已经能够保证从核的大小端模式与操作***所需的大小端模式完全相同。
本发明实施例提供了一种启动多核处理器的方法,主核在从核引导程序中添加休眠指令;判断bootloader中设置的主核的大小端模式与操作***所需的主核的大小端模式是否相同,在不相同的情况下,更改主核的大小端模式;在内存的首地址映射到总线的0地址的情况下,将从核引导程序存储至内存的首地址之后连续的存储空间中;主核获取从核的状态,根据从核状态设定从核复位次数;主核对从核进行一次或者两次复位,以使从核的PC指针指向总线的0地址,从核通过所述总线访问总线的0地址映射的内存的首地址,读取并执行从核引导程序;从核执行完从核引导程序后,判断bootloader中设置的从核的大小端模式与操作***所需的从核的大小端模式是否相同,在两者不相同的情况下,更改从核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换;最后跳转到操作***的代码段,完成从核初始化。这样,利用每种型号的多核处理器在从核被复位后从核的PC指针指向总线的0地址的特性,在总线的0地址与内存的首地址存在映射关系的情况下,将从核引导程序存储在内存的首地址后的连续的存储空间中,使得从核被复位后能够通过总线的0地址对应的内存的首地址读取到内存中存储的从核引导程序,并执行所述从核引导程序,从而就不需要在总线中设定用于存储从核引导程序在内存中的存放地址的固定地址A,实现了多核处理器的bootloader与操作***间固定地址A的解耦合,不需要根据每一型号多核处理器设置匹配的操作***,使得不同版本型号的多核处理器可以使用相同的操作***,最终完成多核处理器操作***的二进制归一,提高了操作***的兼容性。并且本实施例中考虑到从核处于激活状态的情况下,复位后不能满足从核启动条件,所以此时对从核进行两次复位,第一次主核复位从核使得从核满足启动条件,第二次主核复位从核使得成功启动,从而进一步保证了从核的成功启动。同时,本实施例中根据bootloader中设置的主核或从核的大小端模式与操作***所需的大小端模式确定是否更改主核或从核的大小端模式,使得多核处理器使用同一个操作***可以兼容不同大小端模式的bootloader,进一步减少了多核处理器操作***二进制归一的约束,提高了操作***的兼容性。最终,本发明解除了两个操作***二进制归一的使用约束,使得同一版本的操作***能运行于更多的bootloader和处理器,极大提高开发、测试、维护的效率,同时减少开发、测试、维护的成本。
本发明实施例提供了一种启动多核处理器的方法,应用于包括多核处理器、内存和非易失存储器的计算节点,其中多核处理器通过总线访问内存以及非易失存储器,该多核处理器包含主核及至少一个从核。
需要说明的是,本发明实施例只描述了一个从核的启动过程。如果该多核处理器包含多个从核的情况下,主核先执行步骤701-702,完成从核引导程序的配置,然后依次使每一个从核执行步骤703-704,以完成所有从核的启动,这样该多核处理器才完成启动。
如图7所示,该方法包括:
701、主核从从核配置指令中,或者从非易失存储器中获取从核的配置地址。
其中,从核配置指令设置于bootloader中。
需要说明的是,非易失存储器用于存储从bootloader的从核配置指令获取的从核的配置地址。从核的配置地址是内存中的一个地址。
需要说明的是,本实施例在bootloader中增加了从核配置指令,使从核跳转地址动态可配。同时,bootloader的操作界面提供了人机交互的可能,用户可以在bootloader的操作界面中配置从核跳转地址。
需要说明的是,若第一次启动该多核处理器,那么主核通过bootloader中的从核配置指令获取从核配置地址,并将该从核配置地址存储于非易失存储器中,以使得从核在被主核唤醒后,能够从非易失存储器中获取到该配置地址;若不是第一次启动该多核处理器,那么主核就可以从非易失存储器获取已存储的从核配置地址。
702、主核将从核引导程序存储至内存中配置地址之后的连续的存储空间中。
需要说明的是,主核将从核引导程序存储至内存中从核配置地址后连续的存储空间中,以使得从核被唤醒后跳转至内存中从核的配置地址读取到从核引导程序。
703、主核向从核发送核间中断消息,使得从核通过所述总线访问配置地址,读取内存中配置地址后存储的从核引导程序并执行从核引导程序。
具体的,从核接收到核间中断消息,从核从非易失存储器中获取从核配置地址,跳转到从核配置地址,并通过总线访问内存中该从核配置地址后连续的存储空间中存储的从核引导程序。
需要说明的是,主核向从核发送核间中断的方法与现有技术中主核向从核发送核间中断的方法相同,在此不再赘述。
需要说明的是,主核向从核发送核间中断唤醒从核,以使得从核开始启动。
704、从核执行完从核引导程序后,跳转到操作***的代码段,完成从核初始化。
从核初始化的步骤包括:从核L1cache、MMU(Memory Management Unit,内存管理单元)、TLB(Translation Lookaside Buffer,旁路转换缓冲或页表缓冲)等其它的初始化;所有核online(上线);该从核加入该多核处理器的调度域。
需要说明的是,需要说明的是,数据在存储器中的存放顺序分为大端模式和小端模式。大端模式(Big-Endian)就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。小端模式(Little-Endian)就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。处理器核的大小端模式必须和数据存储时的大小端模式相同,才能正确的读取数据。本实施例默认存储的bootloader设置的从核的大小端模式与操作***所需的大小端模式相同,所以不需要考虑bootloader中设置的从核的大小端模式是否与操作***所需的大小端模式是否相同,执行完步骤703后直接执行步骤704。
从核初始化完成后,在还有其他从核未启动的情况下,继续执行步骤703-704,对其他从核进行初始化;当至少一个从核中的每个从核均完成从核初始化后,本发明实施例的多核处理器完成启动。
本发明实施例提供了一种启动多核处理器的方法,主核从从核配置指令中或者从非易失存储器中获取从核配置地址,并将从核引导程序存储至内存中从核配置地址后连续的存储空间中,然后向从核发送核间中断,唤醒从核,从核从配置地址开始执行从核引导程序,从核执行完从核引导程序后,跳转到操作***的代码段,完成从核初始化。这样对于不同的多核处理器,用户可以根据不同型号的处理器灵活设置从核配置地址,即从核引导程序的存储地址,而不用根据不同型号的处理器设置对应去除了多核处理器的bootloader与操作***间固定地址A的耦合,使得不同型号的多核处理器可以使用相同的操作***,最终完成多核处理器操作***的二进制归一,提高了操作***的兼容性。
本发明实施例提供了一种启动多核处理器的方法,方法应用于包括多核处理器、内存和存储器的计算节点,其中多核处理器通过总线访问内存以及非易失存储器,多核处理器包含主核及至少一个从核。
需要说明的是,本发明实施例只描述了一个从核的启动过程。如果该多核处理器包含多个从核的情况下,主核先执行步骤801-812,完成从核引导程序的配置,然后依次使每一个从核执行步骤813-821,以完成所有从核的启动,这样该多核处理器才完成启动。
如图8所示,该方法包括:
801、主核从从核配置指令获取从核的配置地址。
需要说明的是,当第一次启动该多核处理器或者用户想改变从核引导程序的存储地址时,主核需要从bootloader的操作界面上获取从核配置地址。
802、主核将从核的配置地址存储至非易失存储器。
需要说明的是,主核从bootloader的操作界面上获取从核配置地址后,需要将该从核配置地址存储于非易失存储器中,以使得在之后的启动过程中不用每一次都重新配置该从核配置地址,而是直接从非易失存储器中获取从核配置地址。
803、主核从从核配置指令中,或者从非易失存储器中获取从核的配置地址。
其中,其中,从核配置指令设置于bootloader中,用于设置从核的配置地址。非易失存储器用于存储从从核配置指令获取的从核配置地址。从核配置地址是内存中的一个地址。
具体的,可参考步骤701,在此不再赘述。
现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader的大小端模式与操作***的大小端模式必须一致,只能用小端模式的bootloader启动小端模式的操作***,大端模式的bootloader启动大端模式的操作***,这样会导致同一个操作***不能使用不同大小端模式的bootloader,无法完全实现操作***的二进制归一。本实施例中的步骤804-807与步骤808-811是使bootloader中设置的主核的大小端模式与操作***的大小端模式兼容的两种方法,所以只需要执行步骤804-807或步骤808-811中的任一种即可。
804、主核获取bootloader中设置的主核的大小端模式。
具体的,可参考步骤503,在此不再赘述。
805、主核获取操作***所需的大小端模式。
具体的,可参考步骤504,在此不再赘述。
806、在bootloader中设置的主核的大小端模式与操作***所需的大小端模式不同的情况下,主核更改所述主核的大小端模式,使得更改后的所述主核的大小端模式与所述操作***所需的大小端模式相同。
807、在bootloader中设置的主核的大小端模式与操作***所需的大小端模式不同的情况下,主核将bootloader传递给操作***的所有参数进行大小端模式转换,使得转换后的bootloader传递给操作***的所有参数的大小端模式与操作***所需的大小端模式相同;或者,主核将bootloader传递给操作***的主核所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的主核所需的参数的大小端模式与操作***所需的大小端模式相同。
其中,bootloader传递给操作***的所有参数包括:bootloader传递给操作***的主核所需的参数和bootloader传递给操作***的从核所需的参数。
具体的,可参考步骤506,在此不再赘述。
需要说明的是,在bootloader中设置的主核的大小端模式与操作***所需的大小端模式相同的情况下,不执行步骤806-807,直接执行步骤812。
需要说明的是,根据主核获取的参数是bootloader传递给操作***的所有参数,还是bootloader传递给操作***的所有参数中主核所需的参数,分别执行步骤808-809或者步骤810-811。
808、主核获取bootloader传递给操作***的所有参数。
其中,bootloader传递给操作***的所有参数的首部添加有第一魔术字。
具体的,可参考步骤507,在此不再赘述。
809、在第一魔术字发生变化的情况下,主核更改主核的大小端模式,并将bootloader传递给操作***的所有参数进行大小端模式转换,使得更改后的主核的大小端模式以及转换后的bootloader传递给操作***的所有参数的大小端模式与操作***所需的大小端模式相同。
其中,bootloader传递给操作***的所有参数包括:bootloader传递给操作***的主核所需的参数和bootloader传递给操作***的从核所需的参数。
具体的,可参考步骤508,在此不再赘述。
需要说明的是,在第一魔术字没有发生变化的情况下,不执行步骤809,直接执行步骤812。
810、主核获取bootloader传递给操作***的所述主核所需的参数。
其中,bootloader传递给操作***的主核所需的参数的首部添加有第二魔术字。
具体的,可参考步骤509,在此不再赘述。
811、在第二魔术字发生变化的情况下,主核更改主核的大小端模式,并将bootloader传递给操作***的所述主核所需的参数进行大小端模式转换,使得更改后的主核的大小端模式以及转换后的bootloader传递给操作***的主核所需的参数的大小端模式与操作***所需的大小端模式相同。
具体的,可参考步骤510,在此不再赘述。
需要说明的是,在第二魔术字没有发生变化的情况下,不执行步骤811,直接执行步骤812。
812、主核将从核引导程序存储至内存中配置地址之后的连续的存储空间中。
具体的,可参考步骤702,在此不再赘述。
813、主核向从核发送核间中断消息,使得从核通过总线访问配置地址,读取内存中配置地址后存储的从核引导程序并执行从核引导程序。
具体的,可参考步骤703,在此不再赘述。
现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader的大小端模式与操作***的大小端模式必须一致,只能用小端模式的bootloader启动小端模式的操作***,大端模式的bootloader启动大端模式的操作***,这样会导致同一个操作***不能使用不同大小端模式的bootloader,无法完全实现操作***的二进制归一。本实施例中的步骤814-817与步骤818-820是使bootloader中设置的从核的大小端模式与操作***的大小端模式兼容的两种方法,所以只需要执行步骤814-817或步骤818-820中的任一种即可。
814、从核执行完从核引导程序后,从核获取bootloader中设置的所述从核的大小端模式。
具体的,可参考步骤516,在此不再赘述。
815、从核获取操作***所需的大小端模式。
具体的,可参考步骤517,在此不再赘述。
816、在bootloader中设置的所述从核的大小端模式与操作***所需的大小端模式不同的情况下,从核更改从核的大小端模式,使得更改后的从核的大小端模式与操作***所需的大小端模式相同。
具体的,可参考步骤518,在此不再赘述。
817、在bootloader中设置的从核的大小端模式与操作***所需的大小端模式不同,且主核将bootloader传递给操作***的主核所需的参数进行大小端模式转换的情况下,从核将bootloader传递给操作***的从核所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的从核所需的参数的大小端模式与操作***所需的大小端模式相同。
具体的,可参考步骤519,在此不再赘述。
需要说明的是,在主核将bootloader传递给操作***的所有参数进行大小端模式转换的情况下,bootloader传递给操作***的参数中从核所需的参数已经经过大小端模式转换,与操作***所需的大小端模式相同,所以此种情况下,不执行步骤817。
需要说明的是,在从核确定从核的大小端模式与操作***所需的大小端模式相同的情况下,不执行步骤816-817,直接执行步骤821。
818、从核获取bootloader传递给操作***的从核所需的参数。
其中,bootloader传递给操作***的从核所需的参数的首部添加有第三魔术字。
具体的,可参考步骤520,在此不再赘述。
819、在从核确定第三魔术字发生变化的情况下,从核更改从核的大小端模式,使得更改后的从核的大小端模式与操作***所需的大小端模式相同。
具体的,可参考步骤521,在此不再赘述。
820、在从核确定第三魔术字发生变化,且主核获取bootloader传递给操作***的主核所需的参数的情况下,从核将所述bootloader传递给操作***的从核所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的从核所需的参数的大小端模式与操作***所需的大小端模式相同。
具体的,可参考步骤522,在此不再赘述。
需要说明的是,在主核将bootloader传递给操作***的所有参数进行大小端模式转换的情况下,bootloader传递给操作***的参数中从核所需的参数已经经过大小端模式转换,与操作***所需的大小端模式相同,所以此种情况下,不执行步骤820。
需要说明的是,在第三魔术字没有发生变化的情况下,不执行步骤819-820,直接执行步骤821。
821、从核跳转到操作***的代码段,完成从核初始化。
从核初始化完成后,在还有其他从核未启动的情况下,继续执行步骤813-821,对其他从核进行初始化;在所有从核都已经启动的情况下,完成该多核处理器的启动。
需要说明的是,执行步骤821时,已经能够保证从核的大小端模式与操作***所需的大小端模式完全相同。
本发明实施例提供了一种启动多核处理器的方法,通过新增的bootloader的从核配置指令获取用户配置的从核配置地址;判断bootloader中设置的主核的大小端模式与操作***所需的主核的大小端模式是否相同,在不相同的情况下,更改主核的大小端模式,使得更改后的主核的大小端模式与操作***所需的主核的大小端模式相同;将从核引导程序存放至从核配置地址后连续的存储空间中,然后唤醒从核,从核根据用户配置的从核配置地址读取从核引导程序,从核执行完从核引导程序后,判断bootloader中设置的从核的大小端模式与操作***所需的从核的大小端模式是否相同,在不相同的情况下,更改从核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换;最后跳转到操作***的代码段,完成从核初始化。这样,用户可以根据每一型号的处理器用户可以根据不同型号的处理器灵活设置从核配置地址,即从核引导程序的存储地址,而不用根据不同型号的处理器设置对应去除了多核处理器的bootloader与操作***间固定地址A的耦合,使得不同型号的多核处理器可以使用相同的操作***,最终完成多核处理器操作***的二进制归一,提高操作***的兼容性。同时,本实施例中根据bootloader中设置的主核或从核的大小端模式与操作***所需的大小端模式确定是否更改主核或从核的大小端模式,使得多核处理器使用同一个操作***可以兼容不同大小端模式的bootloader,进一步减少了多核处理器操作***二进制归一的约束,提高操作***的兼容性。最终,本发明解除了两个操作***二进制归一的使用约束,使得同一版本的操作***能运行于更多的bootloader和处理器,极大提高开发、测试、维护的效率,同时减少开发、测试、维护的成本。
本发明实施例还提供了一种bootloader大小端模式自适应的方法,该处理器包括至少一个内核。
本实施例不仅适用于多核处理器的启动,同样适用于单核处理器的启动。
现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader的大小端模式与操作***的大小端模式必须一致,只能用小端模式的bootloader启动小端模式的操作***,大端模式的bootloader启动大端模式的操作***,这样会导致同一个操作***不能使用不同大小端模式的bootloader,无法完全实现操作***的二进制归一。本实施例中是使bootloader的大小端模式与操作***的大小端模式兼容的一种方法。
如图9所示,包括:
901、执行bootloader。
需要说明的是,在处理器是多核处理器的情况下,多核处理器中的主核执行bootloader,完成主核及操作***所需硬件的初始化。在处理器是单核处理器的情况下,该单核执行bootloader,完成自身及操作***所需硬件的初始化。
需要说明的是,在处理器是多核处理器的情况下,主核执行完bootloader之后,执行步骤902-905,然后依次唤醒从核,从核执行自身的引导程序之后,执行步骤902-905,完成自身的启动。在处理器是多核处理器的情况下,该单核执行完bootloader之后,依次执行步骤902-905,完成本处理器的启动。
902、获取bootloader中设置的当前核的大小端模式。
具体的,当前核(current core)获取bootloader中设置的处理器的大小端模式,可参考步骤503中主核获取bootloader中设置的主核的大小端模式,在此不再赘述。
需要说明的是,所述当前核是指当前运行的核。此处的当前核可能是多核处理器中的主核或从核,也可能是单核处理器中的单核。
903、获取操作***所需的大小端模式。
具体的,当前核获取操作***所需的大小端模式,可参考步骤504中主核获取操作***所需的大小端模式,在此不再赘述。
904、若bootloader中设置的当前核的大小端模式与操作***所需的大小端模式不同,则更改当前核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换,使得更改后的当前核的大小端模式以及参数转换后的大小端模式与操作***所需的大小端模式相同。
具体的,当前核更改自己的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换,可参考步骤505-506中主核更改主核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换,在此不再赘述。
需要说明的是,在bootloader中设置的当前核的大小端模式与操作***所需的大小端模式相同的情况下,不执行步骤904,直接执行步骤905。
905、跳转至操作***的代码段,完成初始化。
需要说明的是,多核处理器中的从核在执行完步骤905后,还需要对未启动的其他从核进行初始化,直到所有从核初始化完毕,那么该多核处理器启动完毕。单核处理器的单核执行完步骤905后,就完成了该单核处理器的启动。
本发明实施例提供了一种bootloader大小端模式自适应的方法,获取bootloader中设置的当前核的大小端模式和操作***所需的大小端模式,若bootloader中设置的当前核的大小端模式与操作***所需的大小端模式不同,则更改当前核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换。这样,可以根据bootloader中设置的当前核的大小端模式与操作***所需的大小端模式确定是否更改当前核的大小端模式,使得使用同一个操作***可以兼容不同大小端模式的bootloader,减少了操作***二进制归一的约束,提高了操作***的兼容性。
本发明实施例还提供了一种bootloader大小端模式自适应的方法,该处理器包括至少一个内核。
本实施例不仅适用于多核处理器的启动,同样适用于单核处理器的启动。
现有技术中,业界从核启动流程对大小端场景支撑情况如图6所示,bootloader的大小端模式与操作***的大小端模式必须一致,只能用小端模式的bootloader启动小端模式的操作***,大端模式的bootloader启动大端模式的操作***,这样会导致同一个操作***不能使用不同大小端模式的bootloader,无法完全实现操作***的二进制归一。本实施例中是使bootloader的大小端模式与操作***的大小端模式兼容的一种方法。
如图10所示,包括:
1001、执行bootloader。
具体的,可参考步骤901,在此不再赘述。
需要说明的是,在处理器是多核处理器的情况下,主核执行完bootloader之后,执行步骤1002-1004,然后依次唤醒从核,从核执行自身的引导程序之后,执行步骤1002-1004,完成自身的启动。在处理器是多核处理器的情况下,该单核执行完bootloader之后,依次执行步骤1002-1004,完成本处理器的启动。
1002、获取bootloader传递给操作***的参数。
其中,所述参数的首部添加有魔术字。
具体的,从核或者单核获取bootloader传递给操作***的参数,可参考步骤507中主核获取bootloader传递给操作***的所有参数,在此不再赘述。
1003、若魔术字发生变化,则更改当前核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换,使得更改后的当前核的大小端模式以及参数转换后的大小端模式与操作***所需的大小端模式相同。
具体的,当前核更改自己的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换,可参考步骤508中主核更改主核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换,在此不再赘述。
需要说明的是,在魔术字没有发生变化的情况下,不执行步骤1003,直接执行步骤1004。
1004、执行操作***中的指令,完成启动。
需要说明的是,多核处理器中的从核在执行完步骤1004后,还需要完成其他所有从核初始化,那么该多核处理器启动完毕。单核处理器的单核执行完步骤1004后,就完成了该单核处理器的启动。
本发明实施例提供了一种bootloader大小端模式自适应的方法,获取bootloader传递给操作***的参数,若参数的魔术字发生变化,则更改当前核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换。这样,可以根据bootloader中设置的当前核的大小端模式与操作***所需的大小端模式确定是否更改当前核的大小端模式,使得使用同一个操作***可以兼容不同大小端模式的bootloader,减少了操作***二进制归一的约束,提高了操作***的兼容性。
如图11所示,本发明实施例提供了一种计算节点的结构示意图。参考图11所示,该计算节点包括:多核处理器1101和内存1102,其中多核处理器1101通过总线访问内存1102,本实施例中,该多核处理器1101包括:主核11011和从核11012。其中,从核11012的数量可以是一个或多个,图11中以一个从核示意,但本发明实施例不限于此。
主核11011,用于将从核引导程序存储至内存的首地址之后的连续的存储空间中;其中,内存的首地址被映射到总线的0地址。
主核11011,还用于复位从核11012,以使从核11012的程序计数器PC指针指向总线的0地址。
从核11012,用于通过所述总线访问总线的0地址映射的内存的首地址,读取所述内存1102中内存的首地址后存储的从核引导程序并执行从核引导程序。
从核11012,还用于跳转到操作***的代码段,完成从核11012初始化。
具体的,从核11012,具体用于在bootloader中设置的从核11012的大小端模式与操作***所需的大小端模式相同的情况下,跳转到操作***的代码段,完成从核初始化。
进一步的,主核11011,还用于获取从核11012的状态。
主核11011,还用于确定从核11012处于激活状态时,主核11011设置从核11012的复位次数为两次。
主核11011,还用于确定从核11012处于休眠状态或未启动状态时,设置从核11012的复位次数为一次。
进一步的,主核11011,还用于在从核11012引导程序中添加休眠指令;休眠指令用于使从核11012处于休眠状态。
此时,主核11011,具体用于第一次复位从核11012,从核11012的PC指针指向总线的0地址;从核11012,具体用于通过总线访问总线的0地址映射的内存的首地址,读取并执行从核引导程序中的休眠指令;主核11011,具体用于第二次复位从核11012,从核11012的PC指针指向总线的0地址;从核11012,具体用于通过总线访问总线的0地址映射的内存的首地址,读取并执行从核引导程序中除休眠指令之外的程序;其中,所述从核的复位次数为两次。
进一步的,主核11011,还用于获取bootloader中设置的主核11011的大小端模式。
主核11011,还用于获取操作***所需的大小端模式。
主核11011,还用于在bootloader中设置的主核11011的大小端模式与操作***所需的大小端模式不同的情况下,更改主核11011的大小端模式,使得更改后的主核11011的大小端模式与操作***所需的大小端模式相同。
主核11011,还用于在bootloader中设置的主核11011的大小端模式与操作***所需的大小端模式不同的情况下,将bootloader传递给操作***的所有参数进行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操作***所需的大小端模式相同;或者,将bootloader传递给操作***的主核11011所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的主核11011所需的参数的大小端模式与操作***所需的大小端模式相同;其中,bootloader传递给操作***的所有参数包括:bootloader传递给操作***的主核11011所需的参数和bootloader传递给操作***的从核11012所需的参数。
从核11012,还用于获取bootloader中设置的从核11012的大小端模式;
从核11012,还用于获取操作***所需的大小端模式;
从核11012,还用于在从核11012确定bootloader中设置的从核11012的大小端模式与操作***所需的大小端模式不同的情况下,更改从核11012的大小端模式,使得更改后的从核11012的大小端模式与操作***所需的大小端模式相同。
从核11012,还用于在bootloader中设置的从核11012的大小端模式与操作***所需的大小端模式不同,且主核11011将bootloader传递给操作***的主核11011所需的参数进行大小端模式转换的情况下,将bootloader传递给操作***的从核11012所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的从核11012所需的参数的大小端模式与操作***所需的大小端模式相同。
进一步的,主核11011,还用于获取bootloader传递给操作***的所有参数;其中,bootloader传递给操作***的所有参数的首部添加有第一魔术字。
主核11011,还用于在第一魔术字发生变化的情况下,更改主核11011的大小端模式,并将bootloader传递给操作***的所有参数进行大小端模式转换,使得更改后的主核11011的大小端模式以及转换后的所述bootloader传递给操作***的所有参数的大小端模式与操作***所需的大小端模式相同;其中,bootloader传递给操作***的所有参数包括:bootloader传递给操作***的主核11011所需的参数和bootloader传递给操作***的所述从核110112所需的参数。
或者,主核11011,还用于获取bootloader传递给操作***的主核11011所需的参数;其中,bootloader传递给操作***的主核11011所需的参数的首部添加有第二魔术字。
主核11011,还用于在第二魔术字发生变化的情况下,更改主核11011的大小端模式,并将bootloader传递给操作***的主核11011所需的参数进行大小端模式转换,使得更改后的主核11011的大小端模式以及转换后的bootloader传递给操作***的主核11011所需的参数的大小端模式与操作***所需的大小端模式相同。
从核11012,还用于获取bootloader传递给操作***的从核11012所需的参数;其中,bootloader传递给操作***的从核11012所需的参数的首部添加有第三魔术字参数的首部添加有魔术字。
从核11012,还用于在从核11012确定第三魔术字发生变化的情况下,更改从核11012的大小端模式,使得更改后的从核11012的大小端模式与操作***所需的大小端模式相同。
从核11012,还用于在第三魔术字发生变化,且主核11011获取bootloader传递给操作***的主核11011所需的参数的情况下,将bootloader传递给操作***的从核11012所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的从核11012所需的参数的大小端模式与操作***所需的大小端模式相同。
本发明实施例提供了一种计算节点,主核在从核引导程序中添加休眠指令;判断bootloader中设置的主核的大小端模式与操作***所需的主核的大小端模式是否相同,在不相同的情况下,更改主核的大小端模式,使得更改后的主核的大小端模式与操作***所需的主核的大小端模式相同;在内存的首地址映射到总线的0地址的情况下,将从核引导程序存储至内存的首地址之后连续的存储空间中;主核获取从核的状态,根据从核状态设定从核复位次数;主核对从核进行一次或者两次复位,以使从核的PC指针指向总线的0地址,从核从总线的0地址映射的内存的首地址起始读取并执行从核引导程序;从核执行完从核引导程序后,判断bootloader中设置的从核的大小端模式与操作***所需的从核的大小端模式是否相同,在两者不相同的情况下,更改从核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换;最后跳转到操作***的代码段,完成从核初始化。这样,利用每种型号的多核处理器在从核被复位后从核的PC指针指向总线的0地址的特性,建立总线的0地址与内存的首地址的映射关系,并将从核引导程序存储在内存的首地址后的连续的存储空间中,使得从核被复位后能够通过总线的0地址对应的内存的首地址读取到内存中存储的从核引导程序,并执行所述从核引导程序,从而就不需要在总线中设定用于存储从核引导程序在内存中的存放地址的固定地址A,实现了多核处理器的bootloader与操作***间固定地址A的解耦合,不需要根据每一型号多核处理器设置匹配的操作***,使得不同版本型号的多核处理器可以使用相同的操作***,最终完成多核处理器操作***的二进制归一,提高操作***的兼容性。并且本实施例中考虑到从核处于激活状态的情况下,复位后不能满足从核启动条件,所以此时对从核进行两次复位,第一次主核复位从核使得从核满足启动条件,第二次主核复位从核使得成功启动,从而进一步保证了从核的成功启动。同时,本实施例中根据bootloader中设置的主核或从核的大小端模式与操作***所需的大小端模式确定是否更改主核或从核的大小端模式,使得多核处理器使用同一个操作***可以兼容不同大小端模式的bootloader,进一步减少了多核处理器操作***二进制归一的约束,提高操作***的兼容性。最终,本发明解除了两个操作***二进制归一的使用约束,使得同一版本的操作***能运行于更多的bootloader和处理器,极大提高开发、测试、维护的效率,同时减少开发、测试、维护的成本。
如图12所示,本发明实施例提供了一种计算节点的结构示意图。参考图12所示,该计算节点包括:多核处理器1201、内存1202和非易失存储器1203,其中多核处理器1201通过总线访问内存1202以及非易失存储器1203,本实施例中,该多核处理器1201包括:主核12011和从核12012,其中,从核12012的数量可以是一个或多个,图12中以一个从核示意,但本发明实施例不限于此。
主核12011,用于从从核配置指令中,或者从非易失存储器1203中获取从核12012的配置地址;其中,从核配置指令设置于bootloader中。
主核12011,还用于将从核引导程序存储至内存1202中配置地址之后的连续的存储空间中。
主核12011,还用于向从核12012发送核间中断消息。
从核12012,用于通过总线访问配置地址,读取内存1202中配置地址后存储的从核引导程序并执行从核引导程序。
从核12012,还用于跳转到操作***的代码段,完成从核12012初始化。
具体的,从核12012,具体用于在bootloader中设置的从核12012的大小端模式与操作***所需的大小端模式相同的情况下,从核12012跳转到操作***的代码段,完成从核初始化。
进一步的,主核12011,还用于从从核配置指令获取从核12012的配置地址。
主核12011,还用于将从核12012的配置地址存储至非易失存储器1203。
进一步的,所述主核12011,还用于获取bootloader中设置的所述主核12011的大小端模式。
所述主核12011,还用于获取操作***所需的大小端模式。
所述主核12011,还用于在所述bootloader中设置的所述主核12011的大小端模式与所述操作***所需的大小端模式不同的情况下,更改所述主核12011的大小端模式,使得更改后的所述主核12011的大小端模式与所述操作***所需的大小端模式相同。
所述主核12011,还用于在所述bootloader中设置的所述主核12011的大小端模式与所述操作***所需的大小端模式不同的情况下,将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操作***所需的大小端模式相同;或者,将所述bootloader传递给所述操作***的所述主核12011所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述主核12011所需的参数的大小端模式与所述操作***所需的大小端模式相同。
其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核12011所需的参数和所述bootloader传递给操作***的所述从核12012所需的参数。
所述从核12012,还用于获取bootloader中设置的所述从核12012的大小端模式。
所述从核12012,还用于获取操作***所需的大小端模式。
所述从核12012,还用于在所述bootloader中设置的所述从核12012的大小端模式与所述操作***所需的大小端模式不同的情况下,更改所述从核12012的大小端模式,使得更改后的所述从核12012的大小端模式与所述操作***所需的大小端模式相同。
所述从核12012,还用于在所述bootloader中设置的所述从核12012的大小端模式与所述操作***所需的大小端模式不同,且所述主核12011将所述bootloader传递给操作***的所述主核12011所需的参数进行大小端模式转换的情况下,将所述bootloader传递给所述操作***的所述从核12012所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给操作***的所述从核12012所需的参数的大小端模式与所述操作***所需的大小端模式相同。
进一步的,主核12011,还用于获取bootloader传递给操作***的所有参数;其中,bootloader传递给操作***的所有参数的首部添加有第一魔术字。
主核12011,还用于在第一魔术字发生变化的情况下,更改主核12011的大小端模式,并将bootloader传递给操作***的所有参数进行大小端模式转换,使得更改后的主核12011的大小端模式以及转换后的bootloader传递给操作***的所有参数的大小端模式与操作***所需的大小端模式相同;其中,bootloader传递给操作***的所有参数包括:bootloader传递给操作***的主核12011所需的参数和bootloader传递给操作***的从核12012所需的参数。
或者,主核12011,还用于获取bootloader传递给操作***的主核12011所需的参数,其中,bootloader传递给操作***的主核12011所需的参数的首部添加有第二魔术字。
主核12011,还用于在第二魔术字发生变化的情况下,主核12011更改主核12011的大小端模式,并将bootloader传递给操作***的主核12011所需的参数进行大小端模式转换,使得更改后的主核12011的大小端模式以及转换后的bootloader传递给操作***的主核12011所需的参数的大小端模式与操作***所需的大小端模式相同。
从核12012,还用于获取bootloader传递给操作***的从核12012所需的参数;其中,bootloader传递给操作***的从核12012所需的参数的首部添加有第三魔术字。
从核12012,还用于在从核12012确定第三魔术字发生变化的情况下,更改从核12012的大小端模式,使得更改后的从核12012的大小端模式与操作***所需的大小端模式相同。
从核12012,还用于在第三魔术字发生变化,且主核12011获取bootloader传递给操作***的主核12011所需的参数的情况下,将bootloader传递给操作***的从核12012所需的参数进行大小端模式转换,使得转换后的bootloader传递给操作***的从核12012所需的参数的大小端模式与操作***所需的大小端模式相同。
本发明实施例提供了一种计算节点,通过新增的bootloader的从核配置指令获取用户配置的从核配置地址;判断bootloader中设置的主核的大小端模式与操作***所需的主核的大小端模式是否相同,在不相同的情况下,更改主核的大小端模式,使得更改后的主核的大小端模式与操作***所需的主核的大小端模式相同;将从核引导程序存放至从核配置地址后连续的存储空间中,然后唤醒从核,从核根据用户配置的从核配置地址读取从核引导程序,从核执行完从核引导程序后,判断bootloader中设置的从核的大小端模式与操作***所需的从核的大小端模式是否相同,在不相同的情况下,更改从核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换;最后跳转到操作***的代码段,完成从核初始化。这样,用户可以根据每一型号的处理器用户可以根据不同型号的处理器灵活设置从核配置地址,即从核引导程序的存储地址,而不用根据不同型号的处理器设置对应去除了多核处理器的bootloader与操作***间固定地址A的耦合,使得不同型号的多核处理器可以使用相同的操作***,最终完成多核处理器操作***的二进制归一,提高操作***的兼容性。同时,本实施例中根据bootloader中设置的主核或从核的大小端模式与操作***所需的大小端模式确定是否更改主核或从核的大小端模式,使得多核处理器使用同一个操作***可以兼容不同大小端模式的bootloader,进一步减少了多核处理器操作***二进制归一的约束,提高操作***的兼容性。最终,本发明解除了两个操作***二进制归一的使用约束,使得同一版本的操作***能运行于更多的bootloader和处理器,极大提高开发、测试、维护的效率,同时减少开发、测试、维护的成本。
如图13所示,本发明实施例提供了一种bootloader大小端模式自适应的装置的结构示意图,参考图13所示,该装置包括:获取单元1301和处理单元1302。
获取单元1301,用于获取bootloader中设置的当前核的大小端模式。
获取单元1301,还用于获取操作***所需的大小端模式。
处理单元1302,用于在bootloader中设置的当前核的大小端模式与操作***所需的大小端模式不同的情况下,更改当前核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换,使得更改后的当前核的大小端模式以及转换后的参数的大小端模式与操作***所需的大小端模式相同。
本发明实施例提供了一种bootloader大小端模式自适应的装置,获取单元获取bootloader中设置的当前核的大小端模式和操作***所需的大小端模式,处理单元在bootloader中设置的当前核的大小端模式与操作***所需的大小端模式不同的情况下,更改当前核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换。这样,可以根据bootloader中设置的当前核的大小端模式与操作***所需的大小端模式确定是否更改当前核的大小端模式,使得使用同一个操作***可以兼容不同大小端模式的bootloader,减少了操作***二进制归一的约束,提高了操作***的兼容性。
如图14所示,本发明实施例提供了一种bootloader大小端模式自适应的装置的结构示意图,参考图14所示,该装置包括:获取单元1401和处理单元1402。
获取单元1401,用于获取bootloader传递给操作***的参数,其中,参数的首部添加有魔术字。
处理单元1402,用于在魔术字发生变化的情况下,更改当前核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换,使得更改后的当前核的大小端模式以及转换后的参数的大小端模式与操作***所需的大小端模式相同。
本发明实施例提供了一种bootloader大小端模式自适应的装置,获取单元获取bootloader传递给操作***的参数,处理单元在参数的魔术字发生变化的情况下,更改当前核的大小端模式,并将bootloader传递给操作***的参数进行大小端模式转换。这样,可以根据bootloader中设置的当前核的大小端模式与操作***所需的大小端模式确定是否更改当前核的大小端模式,使得使用同一个操作***可以兼容不同大小端模式的bootloader,减少了操作***二进制归一的约束,提高了操作***的兼容性。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或者被包括在计算机设备中的处理器执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (34)
1.一种启动多核处理器的方法,其特征在于,应用于包括多核处理器和内存的计算节点,其中所述多核处理器通过总线访问所述内存,所述多核处理器包含主核及至少一个从核,所述主核执行启动加载器bootloader,所述方法包括:
所述主核将从核引导程序存储至所述内存的首地址之后的连续的存储空间中;其中,所述内存的首地址被映射到所述总线的0地址;
所述主核复位所述至少一个从核中的从核,以使所述从核的程序计数器PC指针指向所述总线的0地址,所述从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程序;
所述从核跳转到操作***的代码段,完成从核初始化。
2.根据权利要求1所述的方法,其特征在于,在所述主核将从核引导程序存储至所述内存的首地址之后的连续的存储空间中之前,还包括:所述主核在所述从核引导程序中添加休眠指令;所述休眠指令用于使所述从核处于休眠状态;
所述主核复位所述至少一个从核中的从核,以使所述从核的程序计数器PC指针指向所述总线的0地址,所述从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程序,包括:
所述主核第一次复位所述从核,所述从核的PC指针指向所述总线的0地址,所述从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导程序中的所述休眠指令;所述主核第二次复位所述从核,所述从核的PC指针指向所述总线的0地址,所述从核通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导程序中除休眠指令之外的程序;其中,所述从核的复位次数为两次。
3.根据权利要求1所述的方法,其特征在于,所述从核跳转到操作***的代码段,完成从核初始化,包括:
在所述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-3任一项所述的方法,其特征在于,在所述主核复位所述至少一个从核中的从核之前,还包括:
所述主核获取所述从核的状态;
当所述主核确定所述从核处于激活状态时,所述主核设置所述从核的复位次数为两次;
当所述主核确定所述从核处于休眠状态或未启动状态时,所述主核设置所述从核的复位次数为一次。
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或10所述的方法,其特征在于,在所述主核从非易失存储器获取所述从核的配置地址之前,还包括:
所述主核从所述从核配置指令获取所述从核的配置地址;
所述主核将所述从核的配置地址存储至所述非易失存储器。
16.一种bootloader大小端模式自适应的方法,应用于处理器,其特征在于,所述方法包括:
获取启动加载器bootloader中设置的当前核的大小端模式;
获取操作***所需的大小端模式;
若所述bootloader中设置的所述当前核的大小端模式与所述操作***所需的大小端模式不同,则更改所述当前核的大小端模式,并将所述bootloader传递给所述操作***的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操作***所需的大小端模式相同。
17.一种bootloader大小端模式自适应的方法,应用于处理器,其特征在于,所述方法包括:
获取启动加载器bootloader传递给操作***的参数,其中,所述参数的首部添加有魔术字;
若所述魔术字发生变化,则更改当前核的大小端模式,并将所述bootloader传递给所述操作***的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操作***所需的大小端模式相同。
18.一种计算节点,其特征在于,包括多核处理器和内存,其中所述多核处理器通过总线访问所述内存,所述多核处理器包含主核及至少一个从核,所述主核用于执行启动加载器bootloader,包括:
所述主核,用于将从核引导程序存储至所述内存的首地址之后的连续的存储空间中;其中,所述内存的首地址被映射到所述总线的0地址;
所述主核,还用于复位至少一个从核中的从核,以使所述从核的程序计数器PC指针指向所述总线的0地址;
所述从核,用于通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取所述内存中所述内存的首地址后存储的所述从核引导程序并执行所述从核引导程序;
所述从核,还用于跳转到操作***的代码段,完成从核初始化。
19.根据权利要求18所述的计算节点,其特征在于,
所述主核,还用于在所述从核引导程序中添加休眠指令;所述休眠指令用于使所述从核处于休眠状态;
所述主核,具体用于第一次复位所述从核,所述从核的PC指针指向所述总线的0地址;
所述从核,具体用于通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导程序中的所述休眠指令;
所述主核,具体用于第二次复位所述从核,所述从核的PC指针指向所述总线的0地址;
所述从核,具体用于通过所述总线访问所述总线的0地址映射的所述内存的首地址,读取并执行所述从核引导程序中除休眠指令之外的程序;
其中,所述从核的复位次数为两次。
20.根据权利要求18所述的计算节点,其特征在于,
所述从核,具体用于在所述bootloader中设置的所述从核的大小端模式与所述操作***所需的大小端模式相同的情况下,跳转到操作***的代码段,完成从核初始化。
21.根据权利要求18-20任一项所述的计算节点,其特征在于,
所述主核,还用于获取bootloader中设置的所述主核的大小端模式;
所述主核,还用于获取操作***所需的大小端模式;
所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,更改所述主核的大小端模式,使得更改后的所述主核的大小端模式与所述操作***所需的大小端模式相同;
所述主核,还用于在所述bootloader中设置的所述主核的大小端模式与所述操作***所需的大小端模式不同的情况下,将所述bootloader传递给所述操作***的所有参数进行大小端模式转换,使得转换后的所述所有参数的大小端模式与所述操作***所需的大小端模式相同;或者,将所述bootloader传递给所述操作***的所述主核所需的参数进行大小端模式转换,使得转换后的所述bootloader传递给所述操作***的所述主核所需的参数的大小端模式与所述操作***所需的大小端模式相同;
其中,所述bootloader传递给所述操作***的所有参数包括:所述bootloader传递给操作***的所述主核所需的参数和所述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-20任一项所述的计算节点,其特征在于,
所述主核,还用于获取所述从核的状态;
所述主核,还用于确定所述从核处于激活状态时,所述主核设置所述从核的复位次数为两次;
所述主核,还用于确定所述从核处于休眠状态或未启动状态时,所述主核设置所述从核的复位次数为一次。
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或27所述的计算节点,其特征在于,
所述主核,还用于从所述从核配置指令获取所述从核的配置地址;
所述主核,还用于将所述从核的配置地址存储至所述非易失存储器。
33.一种bootloader大小端模式自适应的装置,其特征在于,包括:
获取单元,用于获取启动加载器bootloader中设置的当前核的大小端模式;
所述获取单元,还用于获取操作***所需的大小端模式;
处理单元,用于在所述bootloader中设置的所述当前核的大小端模式与所述操作***所需的大小端模式不同的情况下,更改所述当前核的大小端模式,并将所述bootloader传递给所述操作***的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操作***所需的大小端模式相同。
34.一种bootloader大小端模式自适应的装置,其特征在于,包括:
获取单元,用于获取启动加载器bootloader传递给操作***的参数,其中,所述参数的首部添加有魔术字;
处理单元,用于在所述魔术字发生变化的情况下,更改当前核的大小端模式,并将所述bootloader传递给所述操作***的参数进行大小端模式转换,使得更改后的所述当前核的大小端模式以及转换后的所述参数的大小端模式与所述操作***所需的大小端模式相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410351558.4A CN104156234B (zh) | 2014-07-22 | 2014-07-22 | 启动多核处理器、bootloader大小端模式自适应的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410351558.4A CN104156234B (zh) | 2014-07-22 | 2014-07-22 | 启动多核处理器、bootloader大小端模式自适应的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104156234A CN104156234A (zh) | 2014-11-19 |
CN104156234B true CN104156234B (zh) | 2018-07-31 |
Family
ID=51881741
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410351558.4A Active CN104156234B (zh) | 2014-07-22 | 2014-07-22 | 启动多核处理器、bootloader大小端模式自适应的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104156234B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105785824B (zh) * | 2016-04-12 | 2020-02-11 | 上海斐讯数据通信技术有限公司 | 一种向Linux内核传递内存大小参数的方法及*** |
CN107544815A (zh) * | 2016-06-28 | 2018-01-05 | 中兴通讯股份有限公司 | 一种多处理器***的启动方法及装置 |
CN106648758B (zh) * | 2016-11-30 | 2019-11-15 | 中国电子科技集团公司第五十八研究所 | 一种多核处理器boot启动***及方法 |
CN108334413A (zh) * | 2017-12-22 | 2018-07-27 | 天津麒麟信息技术有限公司 | 一种基于飞腾平台的固件与操作***之间信息传递方法 |
CN110520839A (zh) * | 2018-03-28 | 2019-11-29 | 深圳市大疆创新科技有限公司 | ***芯片内存储介质空间应用方法、装置及无人机 |
CN108595212A (zh) * | 2018-03-30 | 2018-09-28 | 上海康斐信息技术有限公司 | 一种快速启动无线路由器的方法及无线路由器 |
CN114090097A (zh) * | 2020-06-30 | 2022-02-25 | 中国航发商用航空发动机有限责任公司 | 发动机控制***和控制软件启动方法 |
CN112905522A (zh) * | 2021-02-22 | 2021-06-04 | 深圳市显控科技股份有限公司 | 多核共享启动***及其控制方法、存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567187A (zh) * | 2003-06-11 | 2005-01-19 | 华为技术有限公司 | 数据处理***及方法 |
CN1963759A (zh) * | 2006-12-01 | 2007-05-16 | 北京中星微电子有限公司 | 一种协处理器引导方法及*** |
CN101464807A (zh) * | 2009-01-08 | 2009-06-24 | 杭州华三通信技术有限公司 | 一种应用程序的加载方法及装置 |
CN101533355A (zh) * | 2009-04-15 | 2009-09-16 | 杭州华三通信技术有限公司 | 一种启动多操作***的方法和装置 |
-
2014
- 2014-07-22 CN CN201410351558.4A patent/CN104156234B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567187A (zh) * | 2003-06-11 | 2005-01-19 | 华为技术有限公司 | 数据处理***及方法 |
CN1963759A (zh) * | 2006-12-01 | 2007-05-16 | 北京中星微电子有限公司 | 一种协处理器引导方法及*** |
CN101464807A (zh) * | 2009-01-08 | 2009-06-24 | 杭州华三通信技术有限公司 | 一种应用程序的加载方法及装置 |
CN101533355A (zh) * | 2009-04-15 | 2009-09-16 | 杭州华三通信技术有限公司 | 一种启动多操作***的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104156234A (zh) | 2014-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104156234B (zh) | 启动多核处理器、bootloader大小端模式自适应的方法及装置 | |
CN104714846B (zh) | 资源处理方法、操作***及设备 | |
CN105814541B (zh) | 计算机设备及计算机设备内存启动的方法 | |
US7730492B1 (en) | Method and system for running multiple virtual machines in a single process | |
CN114580344B (zh) | 测试激励生成方法、验证方法、验证***及相关设备 | |
CN103562897A (zh) | 存储存储级内存信息命令 | |
CN103562894A (zh) | 响应于执行开始子通道指令返回的数据 | |
CN103582878A (zh) | 在主存储器和存储级内存之间移动数据块 | |
CN103562892A (zh) | 配置存储级内存命令 | |
CN103597459A (zh) | 使用扩展异步数据移动器间接数据地址字 | |
CN103582869A (zh) | 链接移动规格块 | |
US10606677B2 (en) | Method of retrieving debugging data in UEFI and computer system thereof | |
CN103562857A (zh) | 释放存储级内存的块 | |
US8539214B1 (en) | Execution of a program module within both a PEI phase and a DXE phase of an EFI firmware | |
CN103582870A (zh) | 清除存储级内存的块 | |
CN103562874A (zh) | 解除配置存储级内存命令 | |
CN110187923A (zh) | 一种应用于多cpu板卡的cpu启动方法和装置 | |
CN109426527B (zh) | 在uefi固件及作业***间分享蓝牙数据的电脑***及其方法 | |
CN111913822A (zh) | 一种基于amp架构的核间通信方式 | |
CN106873970A (zh) | 一种操作***的安装方法和装置 | |
CN114237676A (zh) | 一种fpga逻辑更新方法、装置、设备及可读存储介质 | |
CN109507991B (zh) | 一种双轴伺服控制平台调试***及方法 | |
US7873807B1 (en) | Relocating a program module from NVRAM to RAM during the PEI phase of an EFI-compatible firmware | |
CN106201649B (zh) | 用于光模块监控的虚拟机 | |
US9038077B1 (en) | Data transfer protection in a multi-tasking modeling environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |