一种支持多任务的BIOS运行方法及BIOS芯片.pdf

上传人:大师****2 文档编号:1566247 上传时间:2018-06-25 格式:PDF 页数:25 大小:8.28MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310095193.9

申请日:

2013.03.22

公开号:

CN103150208A

公开日:

2013.06.12

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/46申请日:20130322|||公开

IPC分类号:

G06F9/46; G06F9/50

主分类号:

G06F9/46

申请人:

合肥联宝信息技术有限公司

发明人:

郑红文

地址:

230601 安徽省合肥市经济技术开发区翠微路6号海恒大厦四楼418号

优先权:

专利代理机构:

北京集佳知识产权代理有限公司 11227

代理人:

王宝筠

PDF下载: PDF下载
内容摘要

本发明实施例提供一种支持多任务的BIOS运行方法及BIOS芯片,其中方法包括:在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;使用所述调度器调取与当前BIOS运行阶段对应的驱动Driver调用程序;使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。本发明实施例实现了在BIOS环境下的多任务运行的支持。

权利要求书

权利要求书一种支持多任务的BIOS运行方法,其特征在于,包括:
在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;
使用所述调度器调取与当前BIOS运行阶段对应的驱动Driver调用程序;
使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。
根据权利要求1所述的方法,其特征在于,当前BIOS运行阶段为PEI阶段;所述确定当前BIOS运行阶段对应的调度器包括:确定PEI阶段对应的PEI调度器Dispatcher;
所述使用所述调度器调取与当前BIOS运行阶段对应的Driver调用程序包括:
使用所述PEI Dispatcher调取PEI Driver调用接口PPI;
所述使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU包括:
使用所述PPI将PEI阶段中符合预设条件的PEI Driver放入多核CPU。
根据权利要求2所述的方法,其特征在于,所述使用所述PPI将PEI阶段中符合预设条件的PPI Driver放入多核CPU包括:
通过PEI服务列表获取待运行PEI Driver的标识Guid;
将所述Guid对应的待运行PEI Driver中符合预设条件的PEI Driver放入多核CPU,在多个CPU核心上运行符合预设条件的PEI Driver,得到运行的PEI Driver的任务身份标识ID,向所述PEI服务列表返回所述任务ID。
根据权利要求3所述的方法,在向PEI服务列表返回所述任务ID时还包括:向PEI服务列表返回所述任务ID对应的PEI Driver在多核CPU上的运行状态;
所述方法还包括:
通过所述PEI服务列表获取运行的PEI Driver的任务ID,获取所述任务ID中指定任务ID对应的PEI Driver的运行状态;或,
对所述任务ID中指定任务ID对应的PEI Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的PEI Driver的运行状态后,向所述PEI服务列表返回所述指定任务ID对应的PEI Driver调整后的运行状态;或,
通过所述PEI服务列表获取当前运行的PEI Driver的任务列表,所述任务列表包括放置在多核CPU上的PEI Driver的任务ID及对应的任务运行状态,在指定的缓冲区缓冲所述任务列表。
根据权利要求1所述的方法,其特征在于,当前BIOS运行阶段为DXE阶段;所述确定当前BIOS运行阶段对应的调度器包括:确定DXE阶段对应的DXE调度器Dispatcher;
所述使用所述调度器调取与当前BIOS运行阶段对应的Driver调用程序包括:
使用所述DXE Dispatcher调取DXE Driver调用协议Protocol;
所述使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU包括:
使用所述Protocol将DXE阶段符合预设条的DXE Driver放入多核CPU。
根据权利要求5所述的方法,其特征在于,所述使用所述Protocol将DXE阶段符合预设条的DXE Driver放入多核CPU包括:
获取待运行DXE Driver的标识Guid;
将所述Guid对应的待运行DXE Driver中符合预设条件的DXE Driver放入多核CPU,在多个CPU核心上运行符合预设条件的DXE Drive,得到运行的DXE Driver的任务身份标识ID,返回所述任务ID。
根据权利要求6所述的方法,其特征在于,在返回所述任务ID的同时还包括:返回所述任务ID对应的DXE Driver在多核CPU上的运行状态;
所述方法还包括:
获取所述任务ID中指定任务ID对应的DXE Driver的运行状态;或,
对所述任务ID中指定任务ID对应的DXE Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的DXE Driver的运行状态后,返回所述指定任务ID对应的DXE Driver调整后的运行状态;或,
获取运行的DXE Driver的任务列表,所述任务列表包括放置在多核CPU上的DXE Driver的任务ID及对应的任务运行状态,在指定的缓冲区缓冲所述任务列表。
根据权利要求1至7任一项所述的方法,其特征在于,所述符合预设条件的Driver包括:与预置的BIOS通知任务表中设定的,在当前BIOS运行阶段放入多核CPU的Driver对应的Driver,所述BIOS通知任务表携带有各BIOS运行阶段需要放入多核CPU的Driver信息;或,当前BIOS运行阶段全部的Driver。
根据权利要求1至7任一项所述的方法,其特征在于,还包括:
利用BSP通过高级可编程中断控制器APIC总线向多核CPU广播启动内部处理器中断SIPI信息,以初始化多核CPU的各核心。
一种BIOS芯片,其特征在于,包括:调度器确定模块,与所述调度器确定模块相连的程序调用模块,与所述程序调用模块相连的任务分配模块;
所述调度器确定模块,用于在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;
所述程序调用模块,用于使用所述调度器确定模块所确定的调度器,调取与当前BIOS运行阶段对应的驱动Driver调用程序;
所述任务分配模块,用于使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。
根据权利要求10所述的BIOS芯片,其特征在于,所述调度器确定模块包括:
第一调度器确定单元,用于在当前BIOS运行阶段为PEI阶段时,确定PEI阶段对应的PEI调度器Dispatcher;
所述程序调用模块包括:
第一程序调用单元,用于在当前BIOS运行阶段为PEI阶段时,使用所述第一调度器确定单元确定的PEI Dispatcher调取PEI Driver调用接口PPI;
所述任务分配模块包括:
第一任务分配单元,用于在当前BIOS运行阶段为PEI阶段时,使用所述PPI将PEI阶段中符合预设条件的PEI Driver放入多核CPU。
根据权利要求11所述的BIOS芯片,其特征在于,所述第一任务分配单元包括:
第一待运行任务标识获取子单元,用于通过PEI服务列表获取待运行PEIDriver的标识Guid;
第一任务放置子单元,用于将所述Guid对应的待运行PEI Driver中符合预设条件的PEI Driver放入多核CPU,在多个CPU核心上运行符合预设条件的PEI Driver;
第一运行任务标识反馈子单元,用于得到运行的PEI Driver的任务标识ID,向所述PEI服务列表返回所述任务ID。
根据权利要求12所述的BIOS芯片,其特征在于,还包括:
第一任务运行状态反馈模块,用于在所述第一运行任务标识反馈子单元在向PEI服务列表返回所述任务ID时,向PEI服务列表返回所述任务ID对应的PEI Driver在多核CPU上的运行状态;
第一任务状态获取模块,用于通过所述PEI服务列表获取运行的PEI Driver的任务ID,获取所述任务ID中指定任务ID对应的PEI Driver的运行状态;
第一任务状态调整模块,用于对所述任务ID中指定任务ID对应的PEI Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的PEI Driver的运行状态后,向所述PEI服务列表返回所述指定任务ID对应的PEI Driver调整后的运行状态;
第一任务列表确定模块,用于通过所述PEI服务列表获取当前运行的PEI Driver的任务列表,所述任务列表包括放置在多核CPU上的PEI Driver的任务ID及对应的任务运行状态,在指定的缓冲区缓冲所述任务列表。
根据权利要求10所述的BIOS芯片,其特征在于,所述调度器确定模块包括:
第二调度器确定单元,用于在当前BIOS运行阶段为DXE阶段时,确定DXE阶段对应的DXE调度器Dispatcher;
所述程序调用模块包括:
第二程序调用单元,用于在当前BIOS运行阶段为DXE阶段时,使用所述第二调度器确定单元所确定的DXE Dispatcher调取DXE Driver调用协议Protocol;
所述任务分配模块包括:
第二任务分配单元,用于在当前BIOS运行阶段为DXE阶段时,使用所述Protocol将DXE阶段符合预设条的DXE Driver放入多核CPU。
根据权利要求14所述的BIOS芯片,其特征在于,所述第二任务分配单元包括:
第二待运行任务标识获取子单元,用于获取待运行DXE Driver的标识Guid;
第二任务放置子单元,用于将所述Guid对应的待运行DXE Driver中符合预设条件的DXE Driver放入多核CPU,在多个CPU核心上运行符合预设条件的DXE Drive;
第二运行任务标识反馈子单元,用于得到运行的DXE Driver的任务ID,返回所述任务ID。
根据权利要求15所述的BIOS芯片,其特征在于,还包括:
第二任务运行状态反馈模块,用于在所述第二运行任务标识反馈子单元返回所述任务ID时,返回所述任务ID对应的DXE Driver在多核CPU上的运行状态;
第二任务状态获取模块,用于获取所述任务ID中指定任务ID对应的DXE Driver的运行状态;
第二任务状态调整模块,用于对所述任务ID中指定任务ID对应的DXE Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的DXE Driver的运行状态后,返回所述指定任务ID对应的DXE Driver调整后的运行状态;
第二任务列表确定模块,用于获取运行的DXE Driver的任务列表,所述任务列表包括放置在多核CPU上的DXE Driver的任务ID及对应的任务运行状态,在指定的缓冲区缓冲所述任务列表。
根据权利要求10至16任一项所述的BIOS芯片,其特征在于,还包括:
初始化模块,用于利用BSP通过高级可编程中断控制器APIC总线向多核CPU广播启动内部处理器中断SIPI信息,以初始化多核CPU的各核心。

说明书

说明书一种支持多任务的BIOS运行方法及BIOS芯片
技术领域
本发明涉及计算机通信技术领域,更具体地说,涉及一种支持多任务的BIOS(Basic Input Output System,基本输入输出系统)运行方法及BIOS芯片。
背景技术
BIOS是一组固化到计算机内主板上一个ROM(Read‑Only Memory,只读内存)芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序;其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。通常情况下,BIOS是在计算机开机的时候运行,在计算机开机时,BIOS将进行计算机的自检,自检完成后,BIOS调入开机启动程序,通过开机启动程序,将计算机的控制权交由计算机的操作系统。
目前,BIOS的运行过程主要分为四个阶段:SEC(Security,安全启动阶段),PEI(Pre EFI Initialization Environment,早期EFI初始化阶段),DXE(Driver Execution Environment,驱动执行阶段)和RT(Run Time OS,运行阶段)。发明人在实现本发明的过程中发现:现有的BIOS只能运行在BSP(board supported package,板极支持包)上,即上述的SEC,PEI,DXE和RT这四个阶段均只能在BSP上运行,这使得无论计算机系统有多少个CPU,都无法在BIOS环境下支持多任务的运行,使得BIOS运行过程中的任务处理效率大大降低。
发明内容
有鉴于此,本发明实施例提供一种支持多任务的BIOS运行方法及BIOS芯片,以解决现有的BIOS只能运行在BSP上,而造成得在BIOS环境下无法支持多任务运行的问题。
为实现上述目的,本发明实施例提供如下技术方案:
一种支持多任务的BIOS运行方法,包括:
在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;
使用所述调度器调取与当前BIOS运行阶段对应的驱动Driver调用程序;
使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。
本发明实施例还提供一种BIOS芯片,包括:调度器确定模块,与所述调度器确定模块相连的程序调用模块,与所述程序调用模块相连的任务分配模块;
所述调度器确定模块,用于在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;
所述程序调用模块,用于使用所述调度器确定模块所确定的调度器,调取与当前BIOS运行阶段对应的驱动Driver调用程序;
所述任务分配模块,用于使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。
基于上述技术方案,本发明实施例提供的支持多任务的BIOS运行方法,在不同的BIOS运行阶段设置与该BIOS运行阶段对应的调度器,使用所述调度器调取与当前BIOS运行阶段对应的Driver调用程序,通过Driver调用程序所起到的Driver与多核CPU的交互作用,使用所述Driver调用程序将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver;本发明实施例实现了在多核CPU上运行BIOS的目的,解决了现有的BIOS只能运行在BSP上,而造成得在BIOS环境下无法支持多任务运行的问题,实现了在BIOS环境下的多任务运行的支持,提高了BIOS运行过程中的任务处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的支持多任务的BIOS运行方法的流程图;
图2为本发明实施例提供的在多个CPU核心上运行多个Drive的示意图;
图3为本发明实施例提供的一种支持多任务的BIOS运行方法的另一流程图;
图4为本发明实施例提供的支持多任务的BIOS运行方法的又一流程图;
图5为本发明实施例提供的一种支持多任务的BIOS运行方法的再一流程图;
图6为本发明实施例提供的支持多任务的BIOS运行方法的再又一流程图;
图7为本发明实施例提供的进行多核CPU初始化的示意图;
图8为本发明实施例提供的BIOS芯片的结构框图;
图9为本发明实施例提供的BIOS芯片的另一结构框图;
图10为本发明实施例提供的第一任务分配单元的结构框图;
图11为本发明实施例提供的BIOS芯片的又一结构框图;
图12为本发明实施例提供的BIOS芯片的再一结构框图;
图13为本发明实施例提供的第二任务分配单元的结构框图;
图14为本发明实施例提供的BIOS芯片的再又一结构框图;
图15为本发明实施例提供的BIOS芯片的再另一结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的支持多任务的BIOS运行方法的流程图,参照图1,该方法可以包括:
步骤S100、在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;
本发明实施例中可在各个BIOS运行阶段均设置对应的调度器,如可在PEI阶段设置对应的调度器,DXE阶段设置对应的调度器等;所述调度器用于调取与当前BIOS运行阶段对应的Driver(驱动)调用程序。
步骤S110、使用所述调度器调取与当前BIOS运行阶段对应的Driver调用程序;
本发明实施例中,Driver调用程序是多核CPU与当前BIOS运行阶段对应的Driver的交互桥梁,起到将Driver放入多核CPU的作用;Driver调用程序可以是Driver与多核CPU之间的一个调用接口,也可以是一个调用协议,具体的Driver调用程序的设置可视不同的BIOS运行阶段的Driver,与多核CPU的交互方式而改变,并没有固定的限制。
步骤S120、使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。
符合预设条件的Driver可以是当前BIOS运行阶段对应的全部Driver,也可以是预先设置的需要放入多核CPU的Driver。
可选的,本发明实施例可设置BIOS Post Task Table(BIOS通知任务表),在BIOS通知任务表中设置各BIOS运行阶段需要放入多核CPU的Driver信息,如可在BIOS通知任务表中设置PEI阶段需要放入多核CPU的Driver信息,在BIOS通知任务表中设置DXE阶段需要放入多核CPU的Driver信息等。可选的,本发明实施例中的BIOS通知任务表可以是静态的Driver分配策略,BIOS通知任务表可在BIOS运行之初就开始调用,在BIOS运行过程中BIOS通知任务表中设置的信息不可变更,只有在非BIOS运行阶段,才可进行BIOS通知任务表中的信息更新;可选的,本发明实施例中的BIOS通知任务表也可以是动态的Driver分配策略,可在BIOS运行过程中对需要放入多核CPU中的Driver进行调整。
显然,还可设置其他的Driver分配规则,将符合预设条件的Driver放入多核CPU中,如将信息量较大(如信息量达到一定的阈值)的Driver放入多核CPU中,将信息量较小的Driver依照现有技术进行处理,具体的Driver分配规则可视实际应用情况进行设置,本发明实施例不作固定限制。
多核CPU具有多个核心,本发明实施例优选的在多个CPU核心上运行多个Drive的方式可以是:一个CPU核心同一时刻仅允许运行一个Drive,允许多个CPU核心同时运行多个Drive,可参照图2示出的在多个CPU核心上运行多个Drive的示意图,同一时刻可同时运行多个Driver在多个CPU核心上,其中一个AP表示一个CPU核心。
本发明实施例提供的支持多任务的BIOS运行方法,在不同的BIOS运行阶段设置与该BIOS运行阶段对应的调度器,使用所述调度器调取与当前BIOS运行阶段对应的Driver调用程序,通过Driver调用程序所起到的Driver与多核CPU的交互作用,使用所述Driver调用程序将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver;本发明实施例实现了在多核CPU上运行BIOS的目的,解决了现有的BIOS只能运行在BSP上,而造成得在BIOS环境下无法支持多任务运行的问题,实现了在BIOS环境下的多任务运行的支持,提高了BIOS运行过程中的任务处理效率。
前文已述,BIOS的运行过程主要分为四个阶段:SEC,PEI,DXE和RT。显然,本发明实施例可仅在其中的一个阶段实行图1所示方法,实现该阶段的多任务支持;也可在全部的四个阶段均实行图1所示方法,实现BIOS运行过程中全阶段的多任务支持。即根据实际的使用情况,本发明实施例可设置SEC,PEI,DXE和RT中的至少一个阶段实行图1所示方法,实现该阶段的多任务支持。由于在BIOS运行过程中,PEI和DXE阶段的任务数量较多,且较为复杂,因此下文着重对PEI和DXE阶段所进行的BIOS运行过程做具体描述。值得注意的是,通过下文的描述,本领域技术人员可知悉SEC和RT阶段对应的BIOS运行过程,因此本发明对于SEC和RT阶段的对应的BIOS运行过程不再作赘述。
可选的,本发明实施例可在PEI阶段实行多任务支持。图3为本发明实施例提供的一种支持多任务的BIOS运行方法的另一流程图,参照图3,该方法可以包括:
步骤S200、在BIOS运行过程的PEI阶段,确定PEI阶段对应的PEIDispatcher(调度器);
步骤S210、使用所述PEI Dispatcher调取PEI Driver调用接口(PPI);
本发明实施例中PPI表示PEIM(Pre‑EFI Initialization Module,早期EFI初始化模块)‑to‑PEIM Interface(PPI),是PEI driver的调用接口,供其它PEIDriver调用。PPI是PEI drive与多核CPU之间的交互桥梁,用于将PEI Driver调入多核CPU中。
步骤S220、使用所述PPI将PEI阶段中符合预设条件的PPI Driver放入多核CPU,在多个CPU核心上运行多个PEI Driver。
可选的,本发明实施例可设置PEI服务列表,用于记录待运行的PEI Driver的信息,不同的待运行的PEI Driver可以PEI Driver Guid(标识)进行区分,PEI服务列表可记录不同的PEI Driver Guid。
在执行步骤S220时,可通过PEI服务列表获取待运行PEI Driver的Guid,从而可判定所获取的Guid对应的待运行PEI Driver中符合预设条件的PEI Driver(如采用BIOS通知任务表确定符合预设条件的PEI Driver,可选的,可在BIOS通知任务表中设置需要放入多核CPU的PEI Driver的Guid信息,从而通过PEI服务列表中的Guid信息与BIOS通知任务表中的Guid信息的对应度,确定符合预设条件的PEI Driver),将符合预设条件的PEI Driver放入多核CPU,在多个CPU核心上运行符合预设条件的PEI Driver。可选的,为了将待运行的PEI Driver与已运行的PEI Driver进行区分,可为已在多核CPU上运行的PEI Driver分配任务ID(身份标识),通过ID与Guid的差别进行待运行的PEI Driver与已运行的PEI Driver的区分。可选的,为已运行的PEIDriver分配任务ID后,可将任务ID返回至PEI服务列表中,通过PEI服务列表对任务ID进行记录。至此,PEI服务列表中可同时记录待运行PEI Driver的Guid,和已运行PEI Driver的任务ID。
可选的,在向PEI服务列表返回任务ID时,还可向PEI服务列表返回任务ID对应的PEI Driver在多核CPU上的运行状态,在PEI服务列表中记录任务ID与对应的PEI Driver的运行状态的对应关系。值得注意的是,返回任务运行状态的时间并无特殊要求,其可与任务ID一同返回,也可晚于任务ID的返回时间。
在将PEI Driver放入多核CPU后,本发明实施例还可实现任务状态的查看与任务运行状态的控制调整操作,图4示出了本发明实施例提供的支持多任务的BIOS运行方法的又一流程图,该流程运行在PEI Driver放入多核CPU之后,该流程可以包括:
步骤S221、向PEI服务列表返回任务ID,及任务ID对应的PEI Driver的运行状态;
步骤S222、通过PEI服务列表获取运行的PEI Driver的任务ID,获取所述任务ID中指定任务ID对应的PEI Driver的运行状态;
通过步骤S222可查看指定任务ID对应的PEI Driver的运行状态,使用户实时掌握PEI阶段的运行状况。
步骤S223、对所述任务ID中指定任务ID对应的PEI Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的PEI Driver的运行状态后,向所述PEI服务列表返回所述指定任务ID对应的PEI Driver调整后的运行状态;
通过S223可对指定任务ID对应的PEI Driver的运行状态进行控制调整,如调整PEI Driver的运行状态为运行,停止,休眠等。可选的,可通过PEI服务列表获取运行的PEI Driver的任务ID,从而进行指定任务ID对应的PEIDriver调整状态的确定,在确定了指定任务ID对应的PEI Driver调整后的运行状态后,可向多核CPU发送指定任务ID对应的PEI Driver的运行状态调整指令,在该PEI Driver运行的CPU核心上进行运行状态的调整,在调整完成后,向PEI服务列表返回指定任务ID对应的PEI Driver调整后的运行状态,以示PEI Driver的运行状态调整过程顺利完成。
步骤S224、通过所述PEI服务列表获取当前运行的PEI Driver的任务列表,在指定的缓冲区缓冲所述任务列表。
所述任务列表包括放置在多核CPU上的PEI Driver的任务ID及对应的任务运行状态。前文已述,本发明实施例的PEI服务列表可设置待运行PEI Driver的Guid信息,也可设置已运行的PEI Driver的任务ID,及对应的PEI Driver的运行状态(可包括调整后的PEI Driver的运行状态);为了使用户更好的知悉PEI Driver的任务运行情况,同从PEI服务列表中分离出当前运行的PEIDriver的任务列表,通过该任务列表记录放置在多核CPU上的PEI Driver的任务ID及对应的任务运行状态,并在指定的缓冲区缓冲该任务列表,以备用户的随时调用。
值得注意的是,步骤S222,步骤S223,步骤S224为不同的处理流程,三者之间并不存在步骤的先后顺序关系。显然,本发明实施例也可只施行步骤S222,步骤S223,步骤S224中的至少一个步骤,具体可视实际使用情况而定。
本发明实施例中PPI是PEI Driver与多核CPU之间的交互桥梁,因此PPI可表示为EFI(Extensible Firmware Interface,可扩展固件接口)_PEI_MP(Multi Core Processor 多核处理器) PPI,下文同时示出了PPI的一些参数设置,可与上文关于PEI阶段BIOS运行过程的描述相结合;值得注意的是,下文示出的一些参数可视具体使用情况做必要的删减。
EFI_PEI_MP_PPI
描述:1、提供多任务服务,将PEI driver运行到不同CPU核上;2、对多任务进行控制,凋整任务运行状态为运行,停止,休眠;3、返回当前运行多任务列表。
多任务状态定义:


参数:
RunDriver:运行PEI driver,将之放到多核CPU上,提供多任务运行服务;请参见下文PeiRunDriver()API描述。
GetState:获得指定任务状态;请参见下文PeiGetState()API描述。
SetState:设定任务运行状态,请参见下文PeiSetState()API描述。
GetTaskList:返回当前运行多任务列表,请参见下文PeiGetTaskList()API描述。
EFI_PEI_MP_PPI.PeiRunDriver()
描述:运行PEI driver,将之放到多核CPU上,提供多任务运行服务。
原型:

入口参数:PeiServices,指向PEI服务列表;PeiDriverGuid,待运行任务GUID;TaskId,返回指定任务ID。
出口参数:状态值。
EFI_PEI_MP_PPI.PeiGetState()
描述:获得指定任务状态。
原型


入口参数:PeiServices,指向PEI 服务列表;TaskId,指定任务ID;TaskState,任务状态。
出口参数:状态值。
EFI_PEI_MP_PPI.PeiSetState()
描述:设定任务运行状态。
原型:

入口参数:PeiServices,指向PEI服务列表;TaskId,指定任务ID;TaskState,指定任务状态。
出口参数:状态值。
EFI_PEI_MP_PPI.PeiGetTaskList()
描述:返回当前运行多任务列表。

入口参数:PeiServices,指向PEI服务列表;TaskListBuffer,缓冲区,用于放置当前全部运行任务列表;TaskListBufferSize,缓冲区大小。
出口参数:状态值。
可选的,本发明实施例可在DXE阶段实行多任务支持。图5为本发明实施例提供的一种支持多任务的BIOS运行方法的再一流程图,参照图5,该方法可以包括:
步骤S300、在BIOS运行过程的DXE阶段,确定DXE阶段对应的PEI Dispatcher;
步骤S310、使用所述DXE Dispatcher调取DXE Driver调用协议(Protocol);
本发明实施例中,Protocol是DXE drive与多核CPU之间的交互桥梁,用于将DXE Driver调入多核CPU中。
步骤S320、使用所述Protocol将DXE阶段符合预设条的DXE Driver放入多核CPU。
可选的,步骤S320的具体执行方式可以是:获取待运行DXE Driver的Guid,将所述Guid对应的待运行DXE Driver中符合预设条件的DXE Driver放入多核CPU,在多个CPU核心上运行符合预设条件的DXE Drive。可选的,在DXE阶段也可设置与PEI阶段类似的PEI服务列表,如DXE服务列表,用于记录待运行的DXE Driver的信息,采用DXE Driver Guid进行DXE Driver之间的区分。显然,对于DXE阶段而言,也可不设置DXE服务列表,只需使用一个存储空间进行Guid信息的记录即可。可选的,在多个CPU核心上运行符合预设条件的DXE Drive后,可为已运行的DXE Driver分配任务ID,并返回所分配的任务ID;可选的,可向DXE服务列表返回任务ID。
可选的,在返回任务ID时,还可返回任务ID对应的DXE Driver在多核CPU上的运行状态,可选的,可向DXE服务列表返回该任务运行状态。
在将DXE Driver放入多核CPU后,本发明实施例还可实现任务状态的查看与任务运行状态的控制调整操作,图6示出了本发明实施例提供的支持多任务的BIOS运行方法的再又一流程图,该流程运行在DXE Driver放入多核CPU之后,该流程可以包括:
步骤S321、返回任务ID,及任务ID对应的DXE Driver的运行状态;
步骤S322、获取任务ID中指定任务ID对应的DXE Driver的运行状态;
可选的,可通过DXE服务列表获取指定任务ID对应的DXE Driver的运行状态,显然,在未设置DXE服务列表的情况下,也可向指定任务ID对应的DXE Driver所在CPU核心,请求该DXE Driver的任务运行状态,从而获取指定任务ID对应的DXE Driver的运行状态。
步骤S323、对所述任务ID中指定任务ID对应的DXE Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的DXE Driver的运行状态后,返回所述指定任务ID对应的DXE Driver调整后的运行状态;
可调整指定任务ID对应的DXE Driver的运行状态为运行,停止,休眠等。具体的,在确定指定任务ID对应的DXE Driver调整后的运行状态后,可向多核CPU发送指定任务ID对应的DXE Driver的运行状态调整指令,在该DXE Driver运行的CPU核心上进行运行状态的调整,在调整完成后,返回该DXE Driver调整后的运行状态;可选的,可向DXE服务列表返回该DXE Driver调整后的运行状态。
步骤S324、获取运行的DXE Driver的任务列表,在指定的缓冲区缓冲所述任务列表。
所述任务列表包括放置在多核CPU上的DXE Driver的任务ID及对应的任务运行状态。可选的,可通过DXE服务列表获取运行的DXE Driver的任务列表;当然,在未设置DXE服务列表的情况下,可向多核CPU请求各个任务ID对应的DXE Driver的运行状态,从而通过任务ID和任务运行状态组合成DXE Driver的任务列表。
可选的,本发明实施例可只施行步骤S322,步骤S323,步骤S324中的至少一个步骤,具体可视实际使用情况而定。
本发明实施例中DXE Driver Protocol是DXE Driver与多核CPU之间的交互桥梁,因此所述Protocol可表示为EFI_MP PROTOCOL,下文同时示出了所述Protocol的一些参数设置,可与上文关于DXE阶段BIOS运行过程的描述相结合;值得注意的是,下文示出的一些参数可视具体使用情况做必要的删减。
EFI_MP_PROTOCOL
描述:提供多任务服务,将DXE driver运行到不同CPU核上;对多任务进行控制,凋整任务运行状态为运行,停止,休眠;返回当前运行多任务列表。
多任务状态定义:

参数:RunDriver,运行DXE driver,将之放到多核CPU上,提供多任务运行服务,请参见下文RunDriver()API描述;GetState,获得指定任务状态,请参见下文GetState()API描述;SetState,设定任务运行状态,请参见下文SetState()API描述;GetTaskList,返回当前运行多任务列表,请参见下文GetTaskList()API描述。
EFI_MP_PROTOCOL.RunDriver()
描述:运行DXE driver,将之放到多核CPU上,提供多任务运行服务。
原型

入口参数:DxeDriverGuid,待运行DXE Driver GUID;TaskId,返回指定任务ID。
出口参数:状态值.
EFI_MP_PROTOCOL.GetState()
描述:获得指定任务状态。
原型

入口参数:TaskId,指定任务ID;TaskState,任务状态。
出口参数:状态值。
EFI_MP_PROTOCOL.SetState()
描述:设定任务运行状态。
原型


入口参数:TaskId,指定任务ID;TaskState,指定任务状态。
出口参数:状态值。
EFI_MP_PROTOCOL.GetTaskList()
描述:返回当前运行多任务列表。

入口参数:TaskListBuffer,缓冲区,用于放置当前全部运行任务列表;TaskListBufferSize,缓冲区大小。
出口参数:状态值。
下文同时示出了BIOS通知任务表的参数设置,可一同与上文相参照。
EFI_PEI_MP_POST_TABLE
描述:1、静态指定PEI Driver是否运行在多核上;2、如果运行PEI Driver在多核上,是否需要指定在固定核上。

参数:PeiDrive,指向Pei Driver GUID;MpCapability,PEI Driver是否支持多任务,如果为0,意味着此PEI Driver不支持多任务,非0则支持多任务;CoreNum,如果MpCapability非0,则指定为PEI Driver运行的CPU Core(核)Number,其中Number0为BSP Number,Number1—N为AP Number,Number‑1表示不进行Core Number的指定,由BIOS自行选定Core Number;值得注意的是,本段的具体数值的设置可视具体使用情况而改变。
EFI_DXE_MP_POST_TABLE
描述:1、静态指定DXE Driver是否运行在多核上;2、如果运行DXE Driver在多核上,是否需要指定在固定核上。

参数:DxeDriver,指向DXE Driver GUID;MpCapability,DXE Driver是否支持多任务,如果为 0,意味着此DXE Driver不支持多任务,非0则支持多任务;CoreNum,如果MpCapability非0,则指定为DXE Driver运行的CPU Core Number,其中Number0为BSP Number,Number1—N为APNumbers,Number ‑1表示不进行Core Number的指定,由BIOS自行选定Core Number;值得注意的是,本段的具体数值的设置可视具体使用情况而改变。
可选的,本发明实施例在运行BIOS之初,还可进行多核CPU的初始化操作;具体的,可利用BSP通过 APIC(Advanced Programmable Interrupt Controller,高级可编程中断控制器)总线向多核CPU广播SIPI(Start‑up IPI Message,启动内部处理器中断,其中,IPI 表示 Interprocessor Interrupt,内部处理器中断)信息,以初始化多核CPU的各核心。图7示出了进行多核CPU初始化的示意图,可一同参照。
下面对本发明实施例提供的BIOS芯片进行描述,值得注意的是,下文描述的BIOS芯片与上文描述的BIOS运行方法相对应,两者可相互参照。
图8为本发明实施例提供的BIOS芯片的结构框图,参照图8,BIOS芯片可以包括:调度器确定模块100,与调度器确定模块100相连的程序调用模块200,与程序调用模块200相连的任务分配模块300;
其中,调度器确定模块100,用于在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;
程序调用模块200,用于使用调度器确定模块100所确定的调度器,调取与当前BIOS运行阶段对应的Driver调用程序;
任务分配模块300,用于使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。
可选的,所述符合预设条件的Driver可以包括:与预置的BIOS通知任务表中设定的,在当前BIOS运行阶段放入多核CPU的Driver对应的Driver,所述BIOS通知任务表携带有各BIOS运行阶段需要放入多核CPU的Driver信息;或,当前BIOS运行阶段全部的Driver。
本发明实施例提供的BIOS芯片实现了在多核CPU上运行BIOS的目的,解决了现有的BIOS只能运行在BSP上,而造成得在BIOS环境下无法支持多任务运行的问题,实现了在BIOS环境下的多任务运行的支持,提高了BIOS运行过程中的任务处理效率。
显然,本发明实施例所提供的BIOS芯片,可在BIOS运行过程中的至少一个阶段实现多任务支持,可选的,BIOS芯片可在PEI阶段实现多任务支持,和/或在DXE阶段实现多任务支持。
图9为本发明实施例提供的BIOS芯片的另一结构框图,图9所示BIOS芯片为当前BIOS运行阶段为PEI阶段时的BIOS芯片结构,参照图9,在PEI阶段,调度器确定模块100可以包括:第一调度器确定单元110,用于在当前BIOS运行阶段为PEI阶段时,确定PEI阶段对应的PEI Dispatcher;
程序调用模块200可以包括:第一程序调用单元210,用于在当前BIOS运行阶段为PEI阶段时,使用第一调度器确定单元110确定的PEI Dispatcher调取PEI Driver调用接口PPI;
任务分配模块300可以包括:第一任务分配单元310,用于在当前BIOS运行阶段为PEI阶段时,使用所述PPI将PEI阶段中符合预设条件的PEI Driver放入多核CPU。
图10示出了第一任务分配单元的结构,参照图10,第一任务分配单元310可以包括:
第一待运行任务标识获取子单元311,用于通过PEI服务列表获取待运行PEI Driver的Guid;
第一任务放置子单元312,用于将所述Guid对应的待运行PEI Driver中符合预设条件的PEI Driver放入多核CPU,在多个CPU核心上运行符合预设条件的PEI Driver;
第一运行任务标识反馈子单元313,用于得到运行的PEI Driver的任务标识ID,向所述PEI服务列表返回所述任务ID。
在图10所示第一任务分配单元的结构上,图11示出了BIOS芯片的又一结构,参照图9和图11,图11所示BIOS芯片还包括:
第一任务运行状态反馈模块01,用于在第一运行任务标识反馈子单元313在向PEI服务列表返回所述任务ID时,向PEI服务列表返回所述任务ID对应的PEI Driver在多核CPU上的运行状态;
第一任务状态获取模块02,用于通过所述PEI服务列表获取运行的PEIDriver的任务ID,获取所述任务ID中指定任务ID对应的PEI Driver的运行状态;
第一任务状态调整模块03,用于对所述任务ID中指定任务ID对应的PEIDriver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的PEI Driver的运行状态后,向所述PEI服务列表返回所述指定任务ID对应的PEI Driver调整后的运行状态;
第一任务列表确定模块04,用于通过所述PEI服务列表获取当前运行的PEI Driver的任务列表,所述任务列表包括放置在多核CPU上的PEI Driver的任务ID及对应的任务运行状态,在指定的缓冲区缓冲所述任务列表。
显然,本发明实施例所示BIOS芯片可只包括第一任务运行状态反馈模块01,和,第一任务状态获取模块02、第一任务状态调整模块03、第一任务列表确定模块04中的至少一个。
图12为本发明实施例提供的BIOS芯片的再一结构框图,图12所示BIOS芯片为当前BIOS运行阶段为DXE阶段时的BIOS芯片结构,参照图12,在DXE阶段,调度器确定模块100可以包括:第二调度器确定单元120,用于在当前BIOS运行阶段为DXE阶段时,确定DXE阶段对应的DXE Dispatcher;
程序调用模块200可以包括:第二程序调用单元220,用于在当前BIOS运行阶段为DXE阶段时,使用第二调度器确定单元120所确定的DXEDispatcher调取DXE Driver调用协议Protocol;
任务分配模块300可以包括:第二任务分配单元320,用于在当前BIOS运行阶段为DXE阶段时,使用所述Protocol将DXE阶段符合预设条的DXEDriver放入多核CPU。
其中,第二任务分配单元320的结构可如图13所示,包括:
第二待运行任务标识获取子单元321,用于获取待运行DXE Driver的标识Guid;
第二任务放置子单元322,用于将所述Guid对应的待运行DXE Driver中符合预设条件的DXE Driver放入多核CPU,在多个CPU核心上运行符合预设条件的DXE Drive;
第二运行任务标识反馈子单元323,用于得到运行的DXE Driver的任务ID,返回所述任务ID。
在图13所示第二任务分配单元320的基础上,图14示出了BIOS芯片的再又一结构,参照图12和图14,图14所示BIOS芯片还包括:
第二任务运行状态反馈模块1,用于在第二运行任务标识反馈子单元323返回所述任务ID时,返回所述任务ID对应的DXE Driver在多核CPU上的运行状态;
第二任务状态获取模块2,用于获取所述任务ID中指定任务ID对应的DXE Driver的运行状态;
第二任务状态调整模块3,用于对所述任务ID中指定任务ID对应的DXEDriver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的DXE Driver的运行状态后,返回所述指定任务ID对应的DXE Driver调整后的运行状态;
第二任务列表确定模块4,用于获取运行的DXE Driver的任务列表,所述任务列表包括放置在多核CPU上的DXE Driver的任务ID及对应的任务运行状态,在指定的缓冲区缓冲所述任务列表。
图15为本发明实施例提供的BIOS芯片的再另一结构框图,参照图8和图15,图15所示BIOS芯片还包括:
初始化模块400,用于利用BSP通过APIC总线向多核CPU广播SIPI信息,以初始化多核CPU的各核心。
初始化模块400可在BIOS运行之初进行多核CPU的初始化。
本发明实施例提供的BIOS运行方法及BIOS芯片,实现了在BIOS环境下的多任务运行的支持。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、
处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD‑ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

一种支持多任务的BIOS运行方法及BIOS芯片.pdf_第1页
第1页 / 共25页
一种支持多任务的BIOS运行方法及BIOS芯片.pdf_第2页
第2页 / 共25页
一种支持多任务的BIOS运行方法及BIOS芯片.pdf_第3页
第3页 / 共25页
点击查看更多>>
资源描述

《一种支持多任务的BIOS运行方法及BIOS芯片.pdf》由会员分享,可在线阅读,更多相关《一种支持多任务的BIOS运行方法及BIOS芯片.pdf(25页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103150208 A(43)申请公布日 2013.06.12CN103150208A*CN103150208A*(21)申请号 201310095193.9(22)申请日 2013.03.22G06F 9/46(2006.01)G06F 9/50(2006.01)(71)申请人合肥联宝信息技术有限公司地址 230601 安徽省合肥市经济技术开发区翠微路6号海恒大厦四楼418号(72)发明人郑红文(74)专利代理机构北京集佳知识产权代理有限公司 11227代理人王宝筠(54) 发明名称一种支持多任务的BIOS运行方法及BIOS芯片(57) 摘要本发明实施例提供一种支持。

2、多任务的BIOS运行方法及BIOS芯片,其中方法包括:在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;使用所述调度器调取与当前BIOS运行阶段对应的驱动Driver调用程序;使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。本发明实施例实现了在BIOS环境下的多任务运行的支持。(51)Int.Cl.权利要求书4页 说明书15页 附图5页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书4页 说明书15页 附图5页(10)申请公布号 CN 103150208。

3、 ACN 103150208 A1/4页21.一种支持多任务的BIOS运行方法,其特征在于,包括:在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;使用所述调度器调取与当前BIOS运行阶段对应的驱动Driver调用程序;使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。2.根据权利要求1所述的方法,其特征在于,当前BIOS运行阶段为PEI阶段;所述确定当前BIOS运行阶段对应的调度器包括:确定PEI阶段对应的PEI调度器Dispatcher;所述使用所述调度器调取与当前BI。

4、OS运行阶段对应的Driver调用程序包括:使用所述PEI Dispatcher调取PEI Driver调用接口PPI;所述使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU包括:使用所述PPI将PEI阶段中符合预设条件的PEI Driver放入多核CPU。3.根据权利要求2所述的方法,其特征在于,所述使用所述PPI将PEI阶段中符合预设条件的PPI Driver放入多核CPU包括:通过PEI服务列表获取待运行PEI Driver的标识Guid;将所述Guid对应的待运行PEI Driver中符合预设条件的PEI Driver放入多核CPU,在多个C。

5、PU核心上运行符合预设条件的PEI Driver,得到运行的PEI Driver的任务身份标识ID,向所述PEI服务列表返回所述任务ID。4.根据权利要求3所述的方法,在向PEI服务列表返回所述任务ID时还包括:向PEI服务列表返回所述任务ID对应的PEI Driver在多核CPU上的运行状态;所述方法还包括:通过所述PEI服务列表获取运行的PEI Driver的任务ID,获取所述任务ID中指定任务ID对应的PEI Driver的运行状态;或,对所述任务ID中指定任务ID对应的PEI Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的PEI Driver的运行状态后,向。

6、所述PEI服务列表返回所述指定任务ID对应的PEI Driver调整后的运行状态;或,通过所述PEI服务列表获取当前运行的PEI Driver的任务列表,所述任务列表包括放置在多核CPU上的PEI Driver的任务ID及对应的任务运行状态,在指定的缓冲区缓冲所述任务列表。5.根据权利要求1所述的方法,其特征在于,当前BIOS运行阶段为DXE阶段;所述确定当前BIOS运行阶段对应的调度器包括:确定DXE阶段对应的DXE调度器Dispatcher;所述使用所述调度器调取与当前BIOS运行阶段对应的Driver调用程序包括:使用所述DXE Dispatcher调取DXE Driver调用协议Pro。

7、tocol;所述使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU包括:使用所述Protocol将DXE阶段符合预设条的DXE Driver放入多核CPU。6.根据权利要求5所述的方法,其特征在于,所述使用所述Protocol将DXE阶段符合预设条的DXE Driver放入多核CPU包括:获取待运行DXE Driver的标识Guid;权 利 要 求 书CN 103150208 A2/4页3将所述Guid对应的待运行DXE Driver中符合预设条件的DXE Driver放入多核CPU,在多个CPU核心上运行符合预设条件的DXE Drive,得到运行的。

8、DXE Driver的任务身份标识ID,返回所述任务ID。7.根据权利要求6所述的方法,其特征在于,在返回所述任务ID的同时还包括:返回所述任务ID对应的DXE Driver在多核CPU上的运行状态;所述方法还包括:获取所述任务ID中指定任务ID对应的DXE Driver的运行状态;或,对所述任务ID中指定任务ID对应的DXE Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的DXE Driver的运行状态后,返回所述指定任务ID对应的DXE Driver调整后的运行状态;或,获取运行的DXE Driver的任务列表,所述任务列表包括放置在多核CPU上的DXE Driv。

9、er的任务ID及对应的任务运行状态,在指定的缓冲区缓冲所述任务列表。8.根据权利要求1至7任一项所述的方法,其特征在于,所述符合预设条件的Driver包括:与预置的BIOS通知任务表中设定的,在当前BIOS运行阶段放入多核CPU的Driver对应的Driver,所述BIOS通知任务表携带有各BIOS运行阶段需要放入多核CPU的Driver信息;或,当前BIOS运行阶段全部的Driver。9.根据权利要求1至7任一项所述的方法,其特征在于,还包括:利用BSP通过高级可编程中断控制器APIC总线向多核CPU广播启动内部处理器中断SIPI信息,以初始化多核CPU的各核心。10.一种BIOS芯片,其特。

10、征在于,包括:调度器确定模块,与所述调度器确定模块相连的程序调用模块,与所述程序调用模块相连的任务分配模块;所述调度器确定模块,用于在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;所述程序调用模块,用于使用所述调度器确定模块所确定的调度器,调取与当前BIOS运行阶段对应的驱动Driver调用程序;所述任务分配模块,用于使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。11.根据权利要求10所述的BIOS芯片,其特征在于,所述调度器确定模块包括:第一调度器确定单元,用于在当。

11、前BIOS运行阶段为PEI阶段时,确定PEI阶段对应的PEI调度器Dispatcher;所述程序调用模块包括:第一程序调用单元,用于在当前BIOS运行阶段为PEI阶段时,使用所述第一调度器确定单元确定的PEI Dispatcher调取PEI Driver调用接口PPI;所述任务分配模块包括:第一任务分配单元,用于在当前BIOS运行阶段为PEI阶段时,使用所述PPI将PEI阶段中符合预设条件的PEI Driver放入多核CPU。12.根据权利要求11所述的BIOS芯片,其特征在于,所述第一任务分配单元包括:第一待运行任务标识获取子单元,用于通过PEI服务列表获取待运行PEIDriver的标权 利。

12、 要 求 书CN 103150208 A3/4页4识Guid;第一任务放置子单元,用于将所述Guid对应的待运行PEI Driver中符合预设条件的PEI Driver放入多核CPU,在多个CPU核心上运行符合预设条件的PEI Driver;第一运行任务标识反馈子单元,用于得到运行的PEI Driver的任务标识ID,向所述PEI服务列表返回所述任务ID。13.根据权利要求12所述的BIOS芯片,其特征在于,还包括:第一任务运行状态反馈模块,用于在所述第一运行任务标识反馈子单元在向PEI服务列表返回所述任务ID时,向PEI服务列表返回所述任务ID对应的PEI Driver在多核CPU上的运行状。

13、态;第一任务状态获取模块,用于通过所述PEI服务列表获取运行的PEI Driver的任务ID,获取所述任务ID中指定任务ID对应的PEI Driver的运行状态;第一任务状态调整模块,用于对所述任务ID中指定任务ID对应的PEI Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的PEI Driver的运行状态后,向所述PEI服务列表返回所述指定任务ID对应的PEI Driver调整后的运行状态;第一任务列表确定模块,用于通过所述PEI服务列表获取当前运行的PEI Driver的任务列表,所述任务列表包括放置在多核CPU上的PEI Driver的任务ID及对应的任务运行状。

14、态,在指定的缓冲区缓冲所述任务列表。14.根据权利要求10所述的BIOS芯片,其特征在于,所述调度器确定模块包括:第二调度器确定单元,用于在当前BIOS运行阶段为DXE阶段时,确定DXE阶段对应的DXE调度器Dispatcher;所述程序调用模块包括:第二程序调用单元,用于在当前BIOS运行阶段为DXE阶段时,使用所述第二调度器确定单元所确定的DXE Dispatcher调取DXE Driver调用协议Protocol;所述任务分配模块包括:第二任务分配单元,用于在当前BIOS运行阶段为DXE阶段时,使用所述Protocol将DXE阶段符合预设条的DXE Driver放入多核CPU。15.根据。

15、权利要求14所述的BIOS芯片,其特征在于,所述第二任务分配单元包括:第二待运行任务标识获取子单元,用于获取待运行DXE Driver的标识Guid;第二任务放置子单元,用于将所述Guid对应的待运行DXE Driver中符合预设条件的DXE Driver放入多核CPU,在多个CPU核心上运行符合预设条件的DXE Drive;第二运行任务标识反馈子单元,用于得到运行的DXE Driver的任务ID,返回所述任务ID。16.根据权利要求15所述的BIOS芯片,其特征在于,还包括:第二任务运行状态反馈模块,用于在所述第二运行任务标识反馈子单元返回所述任务ID时,返回所述任务ID对应的DXE Dri。

16、ver在多核CPU上的运行状态;第二任务状态获取模块,用于获取所述任务ID中指定任务ID对应的DXE Driver的运行状态;第二任务状态调整模块,用于对所述任务ID中指定任务ID对应的DXE Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的DXE Driver的运行状态后,返权 利 要 求 书CN 103150208 A4/4页5回所述指定任务ID对应的DXE Driver调整后的运行状态;第二任务列表确定模块,用于获取运行的DXE Driver的任务列表,所述任务列表包括放置在多核CPU上的DXE Driver的任务ID及对应的任务运行状态,在指定的缓冲区缓冲所述。

17、任务列表。17.根据权利要求10至16任一项所述的BIOS芯片,其特征在于,还包括:初始化模块,用于利用BSP通过高级可编程中断控制器APIC总线向多核CPU广播启动内部处理器中断SIPI信息,以初始化多核CPU的各核心。权 利 要 求 书CN 103150208 A1/15页6一种支持多任务的 BIOS 运行方法及 BIOS 芯片技术领域0001 本发明涉及计算机通信技术领域,更具体地说,涉及一种支持多任务的BIOS(Basic Input Output System,基本输入输出系统)运行方法及BIOS芯片。背景技术0002 BIOS是一组固化到计算机内主板上一个ROM(Read-Only。

18、 Memory,只读内存)芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序;其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。通常情况下,BIOS是在计算机开机的时候运行,在计算机开机时,BIOS将进行计算机的自检,自检完成后,BIOS调入开机启动程序,通过开机启动程序,将计算机的控制权交由计算机的操作系统。0003 目前,BIOS的运行过程主要分为四个阶段:SEC(Security,安全启动阶段),PEI(Pre EFI Initialization Environment,早期EFI初始化阶段),DXE(Driver Execut。

19、ion Environment,驱动执行阶段)和RT(Run Time OS,运行阶段)。发明人在实现本发明的过程中发现:现有的BIOS只能运行在BSP(board supported package,板极支持包)上,即上述的SEC,PEI,DXE和RT这四个阶段均只能在BSP上运行,这使得无论计算机系统有多少个CPU,都无法在BIOS环境下支持多任务的运行,使得BIOS运行过程中的任务处理效率大大降低。发明内容0004 有鉴于此,本发明实施例提供一种支持多任务的BIOS运行方法及BIOS芯片,以解决现有的BIOS只能运行在BSP上,而造成得在BIOS环境下无法支持多任务运行的问题。0005 。

20、为实现上述目的,本发明实施例提供如下技术方案:0006 一种支持多任务的BIOS运行方法,包括:0007 在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;0008 使用所述调度器调取与当前BIOS运行阶段对应的驱动Driver调用程序;0009 使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。0010 本发明实施例还提供一种BIOS芯片,包括:调度器确定模块,与所述调度器确定模块相连的程序调用模块,与所述程序调用模块相连的任务分配模块;0011 所述调度器确定模块,用于。

21、在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;0012 所述程序调用模块,用于使用所述调度器确定模块所确定的调度器,调取与当前BIOS运行阶段对应的驱动Driver调用程序;0013 所述任务分配模块,用于使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的说 明 书CN 103150208 A2/15页7Driver。0014 基于上述技术方案,本发明实施例提供的支持多任务的BIOS运行方法,在不同的BIOS运行阶段设置与该BIOS运行阶段对应的调度器,使用所述调度器调取与当前BIO。

22、S运行阶段对应的Driver调用程序,通过Driver调用程序所起到的Driver与多核CPU的交互作用,使用所述Driver调用程序将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver;本发明实施例实现了在多核CPU上运行BIOS的目的,解决了现有的BIOS只能运行在BSP上,而造成得在BIOS环境下无法支持多任务运行的问题,实现了在BIOS环境下的多任务运行的支持,提高了BIOS运行过程中的任务处理效率。附图说明0015 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用。

23、的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。0016 图1为本发明实施例提供的支持多任务的BIOS运行方法的流程图;0017 图2为本发明实施例提供的在多个CPU核心上运行多个Drive的示意图;0018 图3为本发明实施例提供的一种支持多任务的BIOS运行方法的另一流程图;0019 图4为本发明实施例提供的支持多任务的BIOS运行方法的又一流程图;0020 图5为本发明实施例提供的一种支持多任务的BIOS运行方法的再一流程图;0021 图6为本发明实施例提供的支持多任务的B。

24、IOS运行方法的再又一流程图;0022 图7为本发明实施例提供的进行多核CPU初始化的示意图;0023 图8为本发明实施例提供的BIOS芯片的结构框图;0024 图9为本发明实施例提供的BIOS芯片的另一结构框图;0025 图10为本发明实施例提供的第一任务分配单元的结构框图;0026 图11为本发明实施例提供的BIOS芯片的又一结构框图;0027 图12为本发明实施例提供的BIOS芯片的再一结构框图;0028 图13为本发明实施例提供的第二任务分配单元的结构框图;0029 图14为本发明实施例提供的BIOS芯片的再又一结构框图;0030 图15为本发明实施例提供的BIOS芯片的再另一结构框图。

25、。具体实施方式0031 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。0032 图1为本发明实施例提供的支持多任务的BIOS运行方法的流程图,参照图1,该方法可以包括:0033 步骤S100、在BIOS运行过程中,确定当前BIOS运行阶段对应的调度器;说 明 书CN 103150208 A3/15页80034 本发明实施例中可在各个BIOS运行阶段均设置对应的调度器,如可在PEI阶段。

26、设置对应的调度器,DXE阶段设置对应的调度器等;所述调度器用于调取与当前BIOS运行阶段对应的Driver(驱动)调用程序。0035 步骤S110、使用所述调度器调取与当前BIOS运行阶段对应的Driver调用程序;0036 本发明实施例中,Driver调用程序是多核CPU与当前BIOS运行阶段对应的Driver的交互桥梁,起到将Driver放入多核CPU的作用;Driver调用程序可以是Driver与多核CPU之间的一个调用接口,也可以是一个调用协议,具体的Driver调用程序的设置可视不同的BIOS运行阶段的Driver,与多核CPU的交互方式而改变,并没有固定的限制。0037 步骤S12。

27、0、使用所述Driver调用程序,将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver。0038 符合预设条件的Driver可以是当前BIOS运行阶段对应的全部Driver,也可以是预先设置的需要放入多核CPU的Driver。0039 可选的,本发明实施例可设置BIOS Post Task Table(BIOS通知任务表),在BIOS通知任务表中设置各BIOS运行阶段需要放入多核CPU的Driver信息,如可在BIOS通知任务表中设置PEI阶段需要放入多核CPU的Driver信息,在BIOS通知任务表中设置DXE阶段。

28、需要放入多核CPU的Driver信息等。可选的,本发明实施例中的BIOS通知任务表可以是静态的Driver分配策略,BIOS通知任务表可在BIOS运行之初就开始调用,在BIOS运行过程中BIOS通知任务表中设置的信息不可变更,只有在非BIOS运行阶段,才可进行BIOS通知任务表中的信息更新;可选的,本发明实施例中的BIOS通知任务表也可以是动态的Driver分配策略,可在BIOS运行过程中对需要放入多核CPU中的Driver进行调整。0040 显然,还可设置其他的Driver分配规则,将符合预设条件的Driver放入多核CPU中,如将信息量较大(如信息量达到一定的阈值)的Driver放入多核C。

29、PU中,将信息量较小的Driver依照现有技术进行处理,具体的Driver分配规则可视实际应用情况进行设置,本发明实施例不作固定限制。0041 多核CPU具有多个核心,本发明实施例优选的在多个CPU核心上运行多个Drive的方式可以是:一个CPU核心同一时刻仅允许运行一个Drive,允许多个CPU核心同时运行多个Drive,可参照图2示出的在多个CPU核心上运行多个Drive的示意图,同一时刻可同时运行多个Driver在多个CPU核心上,其中一个AP表示一个CPU核心。0042 本发明实施例提供的支持多任务的BIOS运行方法,在不同的BIOS运行阶段设置与该BIOS运行阶段对应的调度器,使用所。

30、述调度器调取与当前BIOS运行阶段对应的Driver调用程序,通过Driver调用程序所起到的Driver与多核CPU的交互作用,使用所述Driver调用程序将当前BIOS运行阶段中符合预设条件的Driver放入多核CPU,在多个CPU核心上运行多个当前BIOS运行阶段对应的Driver;本发明实施例实现了在多核CPU上运行BIOS的目的,解决了现有的BIOS只能运行在BSP上,而造成得在BIOS环境下无法支持多任务运行的问题,实现了在BIOS环境下的多任务运行的支持,提高了BIOS运行过程中的任务处理效率。0043 前文已述,BIOS的运行过程主要分为四个阶段:SEC,PEI,DXE和RT。。

31、显然,本发明实施例可仅在其中的一个阶段实行图1所示方法,实现该阶段的多任务支持;也可在全部的四个阶段均实行图1所示方法,实现BIOS运行过程中全阶段的多任务支持。即根据实际说 明 书CN 103150208 A4/15页9的使用情况,本发明实施例可设置SEC,PEI,DXE和RT中的至少一个阶段实行图1所示方法,实现该阶段的多任务支持。由于在BIOS运行过程中,PEI和DXE阶段的任务数量较多,且较为复杂,因此下文着重对PEI和DXE阶段所进行的BIOS运行过程做具体描述。值得注意的是,通过下文的描述,本领域技术人员可知悉SEC和RT阶段对应的BIOS运行过程,因此本发明对于SEC和RT阶段的。

32、对应的BIOS运行过程不再作赘述。0044 可选的,本发明实施例可在PEI阶段实行多任务支持。图3为本发明实施例提供的一种支持多任务的BIOS运行方法的另一流程图,参照图3,该方法可以包括:0045 步骤S200、在BIOS运行过程的PEI阶段,确定PEI阶段对应的PEIDispatcher(调度器);0046 步骤S210、使用所述PEI Dispatcher调取PEI Driver调用接口(PPI);0047 本发明实施例中PPI表示PEIM(Pre-EFI Initialization Module,早期EFI初始化模块)-to-PEIM Interface(PPI),是PEI driv。

33、er的调用接口,供其它PEIDriver调用。PPI是PEI drive与多核CPU之间的交互桥梁,用于将PEI Driver调入多核CPU中。0048 步骤S220、使用所述PPI将PEI阶段中符合预设条件的PPI Driver放入多核CPU,在多个CPU核心上运行多个PEI Driver。0049 可选的,本发明实施例可设置PEI服务列表,用于记录待运行的PEI Driver的信息,不同的待运行的PEI Driver可以PEI Driver Guid(标识)进行区分,PEI服务列表可记录不同的PEI Driver Guid。0050 在执行步骤S220时,可通过PEI服务列表获取待运行PE。

34、I Driver的Guid,从而可判定所获取的Guid对应的待运行PEI Driver中符合预设条件的PEI Driver(如采用BIOS通知任务表确定符合预设条件的PEI Driver,可选的,可在BIOS通知任务表中设置需要放入多核CPU的PEI Driver的Guid信息,从而通过PEI服务列表中的Guid信息与BIOS通知任务表中的Guid信息的对应度,确定符合预设条件的PEI Driver),将符合预设条件的PEI Driver放入多核CPU,在多个CPU核心上运行符合预设条件的PEI Driver。可选的,为了将待运行的PEI Driver与已运行的PEI Driver进行区分,可。

35、为已在多核CPU上运行的PEI Driver分配任务ID(身份标识),通过ID与Guid的差别进行待运行的PEI Driver与已运行的PEI Driver的区分。可选的,为已运行的PEIDriver分配任务ID后,可将任务ID返回至PEI服务列表中,通过PEI服务列表对任务ID进行记录。至此,PEI服务列表中可同时记录待运行PEI Driver的Guid,和已运行PEI Driver的任务ID。0051 可选的,在向PEI服务列表返回任务ID时,还可向PEI服务列表返回任务ID对应的PEI Driver在多核CPU上的运行状态,在PEI服务列表中记录任务ID与对应的PEI Driver的运行。

36、状态的对应关系。值得注意的是,返回任务运行状态的时间并无特殊要求,其可与任务ID一同返回,也可晚于任务ID的返回时间。0052 在将PEI Driver放入多核CPU后,本发明实施例还可实现任务状态的查看与任务运行状态的控制调整操作,图4示出了本发明实施例提供的支持多任务的BIOS运行方法的又一流程图,该流程运行在PEI Driver放入多核CPU之后,该流程可以包括:0053 步骤S221、向PEI服务列表返回任务ID,及任务ID对应的PEI Driver的运行状态;0054 步骤S222、通过PEI服务列表获取运行的PEI Driver的任务ID,获取所述任务ID说 明 书CN 10315。

37、0208 A5/15页10中指定任务ID对应的PEI Driver的运行状态;0055 通过步骤S222可查看指定任务ID对应的PEI Driver的运行状态,使用户实时掌握PEI阶段的运行状况。0056 步骤S223、对所述任务ID中指定任务ID对应的PEI Driver的运行状态进行控制,在所述多核CPU调整所述指定任务ID对应的PEI Driver的运行状态后,向所述PEI服务列表返回所述指定任务ID对应的PEI Driver调整后的运行状态;0057 通过S223可对指定任务ID对应的PEI Driver的运行状态进行控制调整,如调整PEI Driver的运行状态为运行,停止,休眠等。。

38、可选的,可通过PEI服务列表获取运行的PEI Driver的任务ID,从而进行指定任务ID对应的PEIDriver调整状态的确定,在确定了指定任务ID对应的PEI Driver调整后的运行状态后,可向多核CPU发送指定任务ID对应的PEI Driver的运行状态调整指令,在该PEI Driver运行的CPU核心上进行运行状态的调整,在调整完成后,向PEI服务列表返回指定任务ID对应的PEI Driver调整后的运行状态,以示PEI Driver的运行状态调整过程顺利完成。0058 步骤S224、通过所述PEI服务列表获取当前运行的PEI Driver的任务列表,在指定的缓冲区缓冲所述任务列表。。

39、0059 所述任务列表包括放置在多核CPU上的PEI Driver的任务ID及对应的任务运行状态。前文已述,本发明实施例的PEI服务列表可设置待运行PEI Driver的Guid信息,也可设置已运行的PEI Driver的任务ID,及对应的PEI Driver的运行状态(可包括调整后的PEI Driver的运行状态);为了使用户更好的知悉PEI Driver的任务运行情况,同从PEI服务列表中分离出当前运行的PEIDriver的任务列表,通过该任务列表记录放置在多核CPU上的PEI Driver的任务ID及对应的任务运行状态,并在指定的缓冲区缓冲该任务列表,以备用户的随时调用。0060 值得注。

40、意的是,步骤S222,步骤S223,步骤S224为不同的处理流程,三者之间并不存在步骤的先后顺序关系。显然,本发明实施例也可只施行步骤S222,步骤S223,步骤S224中的至少一个步骤,具体可视实际使用情况而定。0061 本发明实施例中PPI是PEI Driver与多核CPU之间的交互桥梁,因此PPI可表示为EFI(Extensible Firmware Interface,可扩展固件接口)_PEI_MP(Multi Core Processor 多核处理器) PPI,下文同时示出了PPI的一些参数设置,可与上文关于PEI阶段BIOS运行过程的描述相结合;值得注意的是,下文示出的一些参数可视具体使用情况做必要的删减。0062 EFI_PEI_MP_PPI0063 描述:1、提供多任务服务,将PEI driver运行到不同CPU核上;2、对多任务进行控制,凋整任务运行状态为运行,停止,休眠;3、返回当前运行多任务列表。0064 多任务状态定义:0065 说 明 书CN 103150208 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1