用于启动具有多个中央处理器的计算机系统的方法_3

文档序号:9438879阅读:来源:国知局
当该进程先 前锁定了该数据时,释放该锁),可以访问/修改该数据。
[0064] 在步骤S404中,CPU锁定TDC中相应的字段。例如,CPU可使用CPU的标识将TDC 中要执行的任务的锁定字段标记为锁定,以防止TDC中的相同数据被其他CPU访问。
[0065] 在步骤S405中,CPU根据任务的选择信息确定TDC中所有的任务是否已经完成。 若TDC中并非所有的任务已经完成,CPU执行步骤S407。若TDC中所有的任务已经完成, CHJ执行步骤S406或可直接执行步骤S416。
[0066] 在步骤S406中,CPU将TDC中的任务解锁。例如,CPU可将TDC中任务的锁定字段 标记为"未锁定"。随后,CPU可执行步骤S416。
[0067] 在步骤S407中,CPU根据TDC的选择信息从TDC中选择一个任务,并锁定所选任 务。上文已经描述了特定的任务选择策略。为了简洁起见,这里将不再重述。
[0068] 在步骤S408中,CPU将TDC中的任务解锁,然后执行步骤S409或直接执行步骤 S411。在步骤S408之后,其他CPU可访问TDC来选择任务。
[0069] 在步骤S409中,CPU确定所选任务是否已经存在于RAM中。若是,CPU执行步骤 S411。若否,CPU执行步骤S410。
[0070] 在步骤S410中,CPU将要执行的任务复制到RAM中。随后,CPU执行步骤S411。例 如,CPU可根据任务的地址信息在存储单元中查找任务代码,以及将任务代码从存储单元复 制到RAM中来执行。
[0071 ] 在步骤S411中,CPU执行所选任务。在所选任务执行完成后,CPU可执行步骤S413。 可选地,在执行之前,CPU根据任务的地址信息在RAM中查找所选任务并获取所选任务。
[0072] 在步骤S413中,CPU确定TDC是否被锁定。若TDC被锁定,CPU执行步骤S412。若 TDC未锁定,CPU执行步骤S414。
[0073] 在步骤412中,CPU等待/轮询一段时间,然后转到步骤S413,重新确定TDC是否 被锁定。
[0074] 在步骤S414中,CPU锁定TDC中的任务。随后,CPU执行步骤S415。
[0075] 在步骤S415中,CPU将已完成任务的选择信息中的状态字段标记为"完成"。随后, CPU可转到步骤S405。
[0076] 在步骤S416中,如图4所示,CPU退出选择和执行过程。例如,CPU可停止执行第 一指令。
[0077] 图5是根据本发明的一项实施例的多个CPU并行执行任务的流程图。
[0078] 如图5所示,在可选阶段1,计算机系统的上电或复位可初始化所有或部分多个 CPU(如CPUO-N中的CPU0)。启动进程中可涉及到一些或所有已初始化的CPU。
[0079] 可选地,当只有CPUO作为引导CPU在阶段1期间被初始化时以及当其他CPU处理 空闲状态(或未初始化状态)时,已初始化的CPUO在可选阶段2初始化其余的CPU。
[0080] 在阶段3中,已初始化的CPU可从TDC中选择任务以及如图4所示的方式独立和 至少部分同时执行它们,直到TDC中所有任务完成。
[0081] 通过上述描述的多个CPU并行执行,减少了执行多个CPU计算机系统CPU的启动 进程中的任务的时间。例如,启动时间可减少到90/100* (X/N-N*D*X),其中X是当前启动时 间,N是CPU的数量,D是CPU选择TDC中下一个任务的时间段。这仅仅是一种估计,超过一 定数目,上述公式可能不能适用。
[0082] 应注意的是,上述关于多个CPU并行执行的实施例,不仅在启动进程中,还可在计 算机系统的各种进程中实施。然而,启动进程可能是从并行执行中获取最大好处的进程。如 上所述,典型的启动进程包括BIOS模块、引导加载器模块以及内核模块。所述BIOS模块用 于初始化和测试系统硬件组件。BIOS模块可以是任何种类的实现至少系统硬件组件初始 化和测试功能的系统,如基本输入/输出系统、统一可扩展固件界面(Unified Extensible Firmware Interface, UEFI)以及可扩展固件接口 (Extensible Firmware Interface, EFI)。所述引导加载器是由BIOS调用的模块,用来将内核的图像载入到RAM中。该内核是 大多数计算机操作系统中的主要组件。它是应用程序与在硬件层进行的实际数据处理之间 的桥梁。在引导加载器模块完成后,可执行内核模块来初始化内核的资源和数据结构。
[0083] 众所周知,启动进程中有三个模块,每个模块包括各种执行步骤。如图6所示,为 了在启动进程中实施多CPU执行,三个模块的步骤可在称为"模块化"的过程中进行交叉分 配,即每个模块可划分成段。每个段可包括一个或多个独立或非同步步骤。参见图6,例如, BIOS模块中的init()步骤可划分成互相独立的init_0_0()和init_0_l()步骤。此处还 提供了 BIOS模块上的另一具体模块化示例。BIOS模块中的外围设备初始化步骤用于按顺 序执行,由于配置寄存器可仅由一个进程在给定的时间/实例中修改。在此实施例中,外围 设备初始化步骤可划分成两个较小的步骤组:用于初始化设备而不是修改配置寄存器的初 始化步骤以及基于初始化步骤用于修改配置寄存器的寄存步骤。因此,用于初始化多个外 围设备的初始化步骤可以由多个CPU并行执行。关于多个外围设备的寄存步骤可在随后需 要的时候由CPU按顺序执行。可以在引导模块和内核模块上实施类似的模块化。多个CPU 可以通过锁定访问共享资源来实现同步。
[0084] 这时,可以分离模块化后的步骤以形成单个任务。例如,可将BIOS模块中的模块 化后的步骤分组为任务bios_taskl ()和bios_task2 ()。分组后的任务中至少两个任务为 同时可执行的任务。可根据每个任务设定的优先级确定任务的顺序。例如,可设置引导加 载器模块的任务和BIOS模块的任务被并行执行。因此,当BIOS模块完成执行时,可实现像 内核复制和解压缩这样的任务。可根据至少以下每个任务的属性生成描述这些任务的TDC : 优先级、依存、地址、大小、错误码、锁定以及状态。
[0085] 可选地,当执行部分或全部BIOS模块的步骤时,初始化所有CPU的中断向量表 (Interrupt Vector Table,IVT)。IVT是一个关联于CPU的,包含中断和中断处理器映 射的表。这个表告知CPU在接收到一个特定的中断时执行哪个中断处理器(interrupt handler)(程序/功能)。
[0086] 可选地,可分阶段初始化RAM。在每个阶段中,只初始化一部分RAM的区域。例如, 在第一阶段和/或第二阶段中,只初始化用于复制BIOS模块和引导加载器模块中的任务 的RAM区域。在第三阶段中,可初始化用于复制内核模块中的任务的其余RAM区域。可选 地,由于TDC包括每个任务的大小,可以以更精细的方式处理RAM的初始化。例如,可以根 据TDC中任务的顺序和大小在多个阶段中完成RAM的初始化。可选地,作为TDC中的一个 任务,RAM的初始化和其他引导任务并行完成。
[0087] 图7是计算机系统开启装置的方框图。该装置包括:多个处理模块702(包括如 处理模块1和处理模块2等至少两个处理模块)以及存储模块703,其中在启动进程开始 时,初始化多个处理模块702中的至少两个处理模块;存储模块703用于存储任务描述图表 (TDC),其中TDC包括启动进程中至少两个任务的信息;以及多个处理模块中的每个已初始 化的处理模块用于访问该TDC,每个模块根据TDC中至少两个任务的选择信息从至少两个 任务中选择一个任务,每个模块根据TDC中所选任务的地址信息获取所选任务;并至少部 分并行地执行所选任务。
[0088] 可选地,多个处理模块702对应于图1中的处理器101和/或处理器108。存储模 块对应于图1中的存储单元106和RAM104。
[0089] 可选地,已初始化的处理模块中的第一处理模块还用于在访问TDC之后锁定该 TDC,其中除了第一处理模块之外,其他处理模块不能访问该锁定的TDC。
[0090] 可选地,选择信息还包括表示至少两个任务中的每个任务优先级的优先级字段, 其中第一处理模块还用于首先在至少两个任务之中选择具有较高优先级的任务。
[0091] 可选地,选择信息还包括表示至少两个任务中的第一任务依赖第二任务的依存字 段,其中当第二任务标记为完成时,第一处理模块还用于选择第一任务。
[0092] 可选地,选择信息还包括锁定字段,用于表示至少两个任务中的每个任务是否被 已初始化的处理模块锁定,其中在选择第三任务之后,第一处理模块还用于锁定至少两个 任务中的第三任务,以及除了第一处理模块,其他已初始化的处理模块不能选择标记为锁 定的第二任务。
[0093] 可选地,选择信息还包括表示至少两个任务中的每个任务是否完成的状态字段, 其中在完
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1