优化具有多个中央处理器的计算机的启动时间的系统及方法

文档序号:8207699阅读:272来源:国知局
优化具有多个中央处理器的计算机的启动时间的系统及方法
【技术领域】
[0001]本发明主要涉及计算机领域,尤其涉及一种优化的用于启动具有多个中央处理器(CPUs)的计算机的方法及系统。
【背景技术】
[0002]工作站、个人计算机和/或服务器(以下简称“计算机系统”或“计算机”)通常包括基本输入/输出系统(B1S),所述B1S充当计算机硬件和安装在该计算机上的至少一个操作系统之间的接口。所述B1S还可能具有用于触发和初始化计算机硬件服务的至少一个软件代码和/或固件和/或指令,例如芯片组驱动,视频,基本键盘,I/O端口,磁盘驱动器等主板服务。除初始化服务外,B1S也可以寻找与外设卡相关的硬件和驻留在外设卡之上的控制器,其中所述外设卡可包括但不限于PCI卡。B1S指令和/或固件和/或指令通常存储在计算机的闪存内,所述闪存存储在某个位置,当计算机系统开启时,所述位置由计算机的处理器读取并处理。当计算机系统开机时,所述B1S指令也被初始化。
[0003]进一步地,所述计算机的闪存也可包括专门用来检查系统中的特定硬件的软件。当系统开机时,所述软件进行上电自检(POST),以检查所述计算机系统中的硬件。所述处理器也可基于所述闪存中的软件的指令进行冷启动的磁盘驱动器POST和随机存取存储器(RAM)上电自检(POST);另外,为减少系统的启动时间,启动过程中,所述软件也可指示所述处理器跳过对一个或多个硬件设备的POST。
[0004]图1示出了传统计算机系统的典型启动过程。如图1所示,当系统开机时,从B1S处开始启动。B1S进行上电自检(POST)以初始化所有设备,包括RAM和CPU,以及其他设备,如键盘,显示器等。若所述系统是一个多核或多处理器系统,将其中一个CPU确定为启动CPU用以执行B1S和内核初始化代码。剩余处理器通常称为应用处理器(AP),其在被操作系统(OS)的内核初始化之前都处于空闲状态。一旦B1S初始化完成,定位启动设备,将启动加载程序加载到RAM中,并将控制逻辑传递给所述启动加载程序。所述启动加载程序确定启动OS的哪个内核,将确定的OS加载到RAM中并将控制逻辑传递给所述确定的OS。当OS的内核开始执行时,其初始化资源和数据结构,可包括但不限于剩余应用处理器的初始化,并最终执行用于初始化计算机系统所有服务的初始化脚本。
[0005]传统意义上讲,计算机系统通过使用单个CPU按顺序执行启动过程。为优化顺序处理的启动时间,目前可使用各种方法。以下提到几种现存的优化启动时间的方法:
[0006]1.减小启动/操作系统的大小。
[0007]2.多线程执行服务和/或初始化脚本的至少一个路线的初始化。
[0008]3.硬件辅助/加速启动步骤使用更快缓存/存储设备。
[0009]4.并行执行使用多处理器/多核的某些启动步骤。启动处理器/内核将B1S的某个任务块调度到其他内核进行并行执行。启动处理器/内核等到/检测到其他内核完成了它们的任务,继续启动过程。图2示出了 B1S/初始化脚本的并行化。
[0010]5.快照启动方法。
[0011]虽然上述方法用来优化计算机系统的启动时间,在启动过程中和减少启动时间上,这些方法仍然具有耗费时间的巨大缺陷。
[0012]为避免上述缺陷、优化启动时间,“华为技术有限公司”于2012年在专利申请PCT/CN2013/072764中提出了“具有多个中央处理器的计算机系统的启动方法”(以下简称现有技术)。所述现有技术中公开了具有多个中央处理器的计算机系统的启动方法,其提供了使用任务描述图表(TDC)的整个启动过程的并行处理框架。TDC包括使计算机系统正常工作而必须执行的所有任务。所述现有技术公开了整个启动过程的完全并行化。PCT/CN2013/072764的现有技术中,调度程序取决于目标的TDC。实际调度发生在启动期间。任务调度期间,检查优先级、依赖关系和任务状态。图3示出了多核/处理器上的并行启动方法。
[0013]虽然现有技术申请通过并行执行整个启动过程来优化启动时间,所公开的方法仍然存在缺陷。以下提到其中几种缺陷:
[0014]1.在任务调度过程中对优先级、依赖关系和任务状态的检查增加了系统的性能开销。
[0015]2.启动时间内任务量大时(这一情况通常存在于许多系统中),调度开销增大。
[0016]3.调度发生在目标上,因而增加了启动过程的开销。
[0017]4.依赖关系检查在目标上完成,也增加了启动过程的开销。
[0018]5.认为目标上有内存需求,启动过程管理可能会增加一定的开销。
[0019]6.同样,依赖关系检查和在线调度决策可能会阻碍内核的完全利用。
[0020]虽然优化启动过程时间的技术正在增强,但仍然需要优化具有多个CPU的计算机的启动时间。相应地,一种优化的低开销、启动时间少的用于启动具有多个中央处理器(CPUs)的计算机的方法和系统是值得拥有的,但还未提供。

【发明内容】

[0021]本
【发明内容】
介绍了低开销、启动时间少的用于优化具有多个中央处理器(CPUs)的计算机启动时间的系统及方法相关的内容,下面进一步详细描述这些内容。
[0022]本
【发明内容】
不旨在确定所要求保护的本发明的基本特征,也不旨在确定或限定所要求保护的本发明的范围。
[0023]上述问题得到了处理,且本发明技术方案提供了一种优化的低开销、启动时间少的用于启动具有多个中央处理器(CPUs)的计算机的方法和系统。
[0024]因此,本发明的主要目的是提供一种优化的低开销、启动时间少的用于启动具有多个中央处理器(CPUs)604的计算机的方法和系统。
[0025]相应地,本发明一实施例公开了一种计算机执行方法,当由多个CPU的多个初始化CPU执行时,所述计算机执行方法用于启动具有多个中央处理器(CPUs)604的计算机系统602。所述计算机执行方法可以响应启动指令,所述启动指令在计算机系统开机时发起。根据所述方法,访问存储在所述计算机系统的任务描述图表(TDC)。所述访问的TDC可包括启动过程的多个任务的地址信息和选择信息。所述多个任务可包括使计算机系统正常工作而必须执行的所有任务。所述访问的TDC的分类是基于TDC中的多个任务的依赖关系。
[0026]对TDC进行分类,以生成一个独立任务图表(ITC)和一个依赖任务图表(DTC)。ITC包括独立于任何其他任务的一组任务。DTC包括对TDC的任何其他任务有至少一种依赖关系的一组任务。所述方法还包括将DTC分成依赖任务图表I (DTC I)和依赖任务图表2 (DTC2)。DTC I包括来自DTC的对从ITC的一组任务中选择的至少一个任务有至少一种依赖关系的一组任务。DTC 2包括来自DTC的对从DTC I的一组任务中选择的至少一个任务或从DTC 2的一组任务中选择的至少一个任务有至少一种依赖关系的一组任务。
[0027]根据所述方法,选择并执行所述ITC中的至少一个任务。由于所有任务按优先级排列,基于相对于ITC中其他任务的所述任务的优先级从ITC中选择至少一个任务。检查所选择的至少一个任务是否已经执行。若所述任务之前没有执行,执行所述任务,然后基于优先级从ITC选择并执行下一个任务。若所述任务已经执行,基于优先级从ITC选择下一个任务。任务的执行状态可从状态位寄存器中获取,所述状态位寄存器存储任务执行情况的所有信息。
[0028]当ITC中的所有任务都执行后,所述方法从DTC I选择任务。基于任务的选择信息,更具体地讲,基于DTC I中任务的优先级选择DTC I中的所有任务。DTC I的优先级是基于DTC I的任务对ITC的依赖关系。所述方法从DTC I选择至少一个任务,并检查所选择的任务是否已经执行。若所述任务之前没有执行,执行所述任务,然后基于优先级从DTCI选择并执行下一个任务。若所述任务已经执行,基于优先级从DTC I选择下一个任务。相应地,检查所述状态位寄存器来确定未执行的任务。
[0029]在一种实现中,DTC I任务基于优先级排列。DTC I中的任务只对ITC中的任务有依赖关系。因此,在DTC I任务的执行过程中,所述任务按优先级排列,因此,调度程序可以弹出并执行任务。
[0030]不需要其他的检查。基于保存在状态寄存器中的位掩码执行所述任务,因此,执行速度更快。具体的运行方式将在下面的部分进行解释。
[0031]当DTC I中的所有任务都执行后,所述方法从DTC 2选择任务。基于任务的选择信息,更具体地讲,基于DTC 2中任务的优先级选择DTC 2中的所有任务。DTC 2的优先级是基于来自DTC 2的任务对DTC I和DTC 2的依赖关系。所述方法从DTC 2选择至少一个任务,并检查所选择的任务是否已经执行。若所述任务之前没有执行,执行所述任务,然后基于优先级从DTC 2选择并执行下一个任务。若所述任务已经执行,基于优先级从DTC 2选择下一个任务。相应地,检查所述状态位寄存器来确定未执行的任务。
[0032]本发明另一实施例中公开了一种计算机系统,当由多个CPU的多个初始化CPU执行时,所述计算机系统用于优化具有多个中央处理器(CPUs)604的计算机系统602的启动时间。所述计算机系统可以响应启动指令,所述启动指令在计算机系统开机时发起。当由与存储器耦合的多个CPU中的多个初始化CPU执行时,所述系统包括多个中央处理器(CPUs)604。所述存储器中可存储多个指令。所述指令由与所述存储器耦合的多个(CPUs)执行。根据所述系统,当所述指令在启动时间内发起时,所述多个中央处理器(CPUs)604访问存储在计算机系统中的任务描述图表(TDC)。所述访问的TDC可包括启动过程的多个任务的地址信息和选择信息。所述多个任务可包括使计算机系统正常工作而必须执行的所有任务。所述访问的TDC的分类是基于TDC中的多个任务的依赖关系。对所述访问的TDC进行分类,以生成一个独立任务图表(ITC)和一个依赖任务图表(DTC)。ITC包括独立于任何其他任务的一组任务。DTC包括对TDC的任何其他任务有至少一种依赖关系的一组任务。所述系统进一步将DTC分成依赖任务图表I (DTC I)和依赖任务图表2 (DTC 2)。DTC I包括来自DTC的对从ITC的一组任务中选择的至少一个任务有至少一种依赖关系的一组任务。
[0033]DTC 2包括来自DTC的对从DTC I的一组任务中选择的至少一个任务或从DTC 2的一组任务中选择的至少一个任务有至少一种依赖关系的一组任务。
[0034]根据所述系统,选择并执行所述ITC中的至少一个任务。基于所述选择信息,更具体地讲,基于相对于ITC中的其他任务的所述任务的优先级从ITC选择所述至少一个任务。检查所选择的至少一个任务是否已经执行。若所述任务之前没有执行,执行所述任务,然后基于优先级从ITC选择并执行下一个任务。若所述任务已经执行,基于优先级从ITC选择下一个任务。任务的执行状态可从状态位寄存器中获取,所述状态位寄存器存储任务执行情况的所有信息。
[0035]当ITC中的所有任务都执行后,所述系统从DTC I选择任务。基于任务的选择信息,更具体地讲,基于DTC I中任务的优先级选择DTC I中的所有任务。DTC I的优先级是基于DTC I的任务对ITC的依赖关系。所述系统从DTC I选择至少一个任务,并检查所选择的任务是否已经执行。若所述任务之前没有执行,执行所述任务,然后基于优先级从DTCI选择并执行下一个任务。若所述任务已经执行,基于优先级从DTC I选择下一个任务。相应地,检查所述状态位寄存器来确定未执行的任务。
[0036]当DTC I中的所有任务都执行后,所述系统从DTC 2选择任务。基于任务的选择信息,更具体地讲,基于DTC 2中任务的优先级选择DTC 2中的所有任务。DTC 2的优先级是基于来自DTC 2的任务对DTC I和DTC 2的依赖关系。所述系统从DTC 2选择至少一个任务,并检查所选择
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1