运行操作系统的处理器核的动态分配的制作方法

xiaoxiao2020-7-22  5

【专利下载】Tel:18215660330

运行操作系统的处理器核的动态分配的制作方法
【专利摘要】用于动态分配运行操作系统的计算机中的多个处理器核的设备和方法包括提供(300)可操作用于使核暂停处理来自相应就绪队列的指令的程序。下一步骤包括建立(302)可以用来执行程序的令牌的最大计数,其中最大计数小于核的总数。下一步骤包括由核获取(304)令牌,其中至少一个核将不能获取令牌。如果令牌已经由核获取(306),则由该核执行(308)程序,否则不由该核执行该程序,并保持活动(310),以处理来自该核的相应就绪队列的指令。
【专利说明】运行操作系统的处理器核的动态分配
发明领域
[0001]本发明一般涉及多核计算机处理器,尤其涉及运行操作系统的处理器核的动态分配。
背景[0002]目前,存在具有服务于诸如例如Microsoft? Windows? 7操作系统之类的操作系统(OS)的多个核的多核处理器机器。这样的机器为正在运行的每一个处理器核使用的功率量增大,这对于诸如移动设备之类的那些靠电池供电来操作的机器而言是缺点。当存在某些功率管理条件时,或许临时在电能紧张时,尽可能地使许多核空闲是有益的、节省功率的。
[0003]然而,诸如Microsoft? Windows? 7之类的操作系统(OS)在操作时不支持
其处理器中的活动核数量的增多/减少。Microsoft? WindowsR ,OS不支持这样的“热核”重新分配的原因是,因为OS分配资源并基于引导时存在的核来作出关键的假设。Microsoft? Windows? 70S允许未使用的核停止或停用,有效地关闭它们,但是这只作为OS感知负载的结果来执行,其中在轻负载条件下,OS可以负载平衡并停止核。
[0004]对该问题的一个解决方案可以是使用在OS和处理器硬件之间运行的管理程序软件,来向OS呈现核的虚拟集。事实上,管理程序软件为OS创建多个核的假象,导致OS认为它具有多个活动的核,而硬件实际可能不是所有的核在活动。令人遗憾的是,管理程序软件非常大,需要相当大量的管理程序代码占用空间,并在处理器内需要虚拟化支持,才能实现合理的性能结果。此外,管理程序软件还产生性能损失。
[0005]另一个解决方案是使用进程亲和性实现的“核停止(core parking)”,其中OS进程被在物理上分配给一个核,有效地停止任何未使用的核。然而,这不是有保证的技术,因为它由OS来控制,也是依赖由OS感知的工作负荷的功能。
[0006]相应地,用于电能原因,需要快速地减少或增多正在服务于操作系统的活动核,且无需近实时地考虑处理负载。进一步地,在无需重新引导OS的情况下动态地分配活动核是有利的。
附图简述
[0007]附图(在不同视图中,类似的附图标记表示相同或功能类似的元素)与下面的详细描述一起被包括并构成说明书的一部分,用于进一步说明包括要求保护的发明的概念的实施例,并说明那些实施例的各种原理和优点。
[0008]图1是现有技术的多核处理器的简化框图。
[0009]图2是根据本发明的活动核的动态分配的简化框图。
[0010]图3是根据本发明的再一个实施例的方法的简化框图。
[0011]本领域技术人员将理解,图中的元素是简明而清晰地显示的,不一定是按比例绘制的。例如,图中的某些元件的尺寸可以相对于其他元件而放大,以帮助改善对本发明实施例的理解。[0012]设备组件和方法组件在适当的情况下通过附图中的惯用符号来代表,只示出了与对本发明实施例的理解有关的那些具体细节,以便不会由于对本领域技术人员而言显而易见的细节而使本说明书晦涩。
详细描述
[0013]本发明提供了新颖的技术,以出于电能原因简单地减少或增多服务于操作系统的活动核。这是在无需对操作系统(OS)进行修改或无需操作系统的支持的情况下进行的。这是使用不涉及对操作系统的更改的硬件布局来实现的,它可被实现为带有驱动器调用的应用。有利地,本发明可以通过动态地分配活动核而无需重新引导OS并且不考虑处理负载,快速地减少功率消耗。
[0014]图1是诸如可以由例如Microsoft? Windows? 70S使用的现有技术多核处理器的框图。示出了带有核CPU0110、CPU1112、CPU2114和CPU3116的四核处理器示例。调度器数据库100是由OS控制的工作负荷储存库。数据库100持有要由核服务的进程和线程。OS指示数据库100向每个核的就绪队列分发其进程和线程。例如,核CPU0110具有其CPUO就绪队列,该就绪队列持有要由CPU0110服务的由数据库100分发的进程和线程。类似地,核CPUl 112具有其CPUl就绪队列,该就绪队列持有要由CPUl 112服务的由数据库100分发的进程和线程,核CPU2114具有其CPU2就绪队列,该就绪队列持有要由CPU2114服务的由数据库100分发的进程和线程,而核CPU3116具有其CPU3就绪队列,该就绪队列持有要由CPU3116服务的由数据库100分发的进程和线程。数据库100的分发是根据公平性规则来执行的,以便每个核随时间大致相同地分担处理负载,假设其他因素(诸如负载平衡核停止规则)不起作用。
[0015]图2是根据本发明的计算机的多核处理器的框图。图2中所描绘的处理器和核可以包括基本组件,诸如,但不仅限于,微处理器、数字信号处理器(DSP)、微控制器、存储器设备、专用集成电路,和/或逻辑电路。计算机可以是带有功率限制的移动计算设备。这样的设备通常适用于实现使用高级设计语言或描述表达的、使用计算机指令表达的、使用消息/信令流程图表达的、和/或使用逻辑流程图表达的算法和/或协议。如此,给定算法、逻辑流、消息/信令流、调用流,和/或协议规范,本领域技术人员将意识到可以用来实现执行给定逻辑的用户设备的许多设计和开发技术。
[0016]因此,图2的处理器表示已经根据此处的描述进行修改以实现本发明的各实施例的已知设备。此外,本领域技术人员还将认识到,本发明的各方面可以在和跨各种物理组件实现,没有哪方面一定仅限于单个平台实现。例如,本发明的各方面可以在上面所列设备中的任何一个中实现或跨这些组件分布。出于本发明的目的,术语处理器核、核以及中央处理单元(CPU)是等效的。
[0017]回头参考图2,本发明引入动态技术,以便暂停计算机处理器中除一个核以外的所有核的使用,仅保留一个核作为唯一活动的核。在其他实施例中,可以保留一个以上的核活动。核的暂停是出于功率原因而进行的,无需对OS进行修改或无需OS的支持。这是使用不涉及对操作系统的更改的硬件布局来实现的,它可被实现为带有驱动器调用的应用。不需要重新引导OS,核暂停是在不考虑OS对工作负荷的感知的情况下执行的。虽然此处是利用对Microsoft? Windows? 70S的特定应用来描述本发明的,但是应该认识到,本发明还适用于其他类型的多核处理器系统。
[0018]本发明使用与图1中相同的调度器数据库100CPU就绪队列102、104、106、108,以及核。然而,本发明引入连接到计算机的I/o接口之一(诸如,例如,GPIO (通用输入输出))的硬件布局200。硬件布局可以被实现为从外部、或者甚至内部与计算机I/O接口连接的外围设备。硬件布局可以连接到接口地址总线,并引入可由每个核通过地址总线访问的全局信号量(semaphore)。根据本发明,全局信号量为核提供执行CoreHalt程序的令牌。如在本领域内已知的,每个量子时钟周期(即,100毫秒),中断核操作。在此中断,每个核都将在运行CoreHalt程序中,尝试从全局信号量中获取令牌。存在对核可用的最大计数(例如,核的总数减去I)。在一个实施例中,例如,除一个核以外的所有核都可以获取令牌。获取令牌的任何核都将执行CoreHalt程序的暂停汇编器语句。
[0019]CoreHalt程序包含暂停核对来自该核的就绪队列的指令的处理的汇编指令。对于每个物理核,将会有一个这样的CoreHalt程序。CoreHalt程序将通常在设备驱动器内实现,以便设备拥有必要的特权级别。在此处的示例中,全局信号量将允许三个CoreHalt程序在它们相应的核(图2的212,214,216)中的每一个上执行。没有获取令牌的第四核110等待全局信号量向其提供令牌,此等待导致核执行其就绪队列中的工作负荷。在它们相应的核212,214,216上执行的CoreHalt程序将使那些核暂停处理它们的相应就绪队列104,106,108。在实践中,CoreHalt程序将使核执行汇编器暂停命令,直到发生下一量子时钟周期中断,有效地使那些核空闲以便它们只使用静默功率。阻止被其相应的核110执行的CoreHalt程序将使该核保持活动,以处理其就绪队列102中的工作负荷。被信号量允许执行的剩余三个CoreHalt程序将对它们相应的核212,214,216执行暂停指令,这些核随后将不参与任何工作负荷执行。
[0020]事实上,本发明将计算机电源204(例如,电池)的功耗减少到正常情况的大致25%,不管数据库或就绪队列中的处理负载,无需对OS进行任何修改,或无需OS的支持。作为暂停核消耗静默功率的结果,还由于系统正在执行较低速率的指令/时间,这将降低诸如存储器和外围组件之类的其他组件上的负载,功率减小得以实现。当然,应该认识到,可以更改最大令牌计数,以在每个周期期间允许约50%、75%或者甚至100%的活动核。在25%的实施例中,在量子时钟周期中的每个中断之后,每个核将再次尝试获取信号量令牌,一旦到达最大令牌计数则一个核不能如此。由于每个核在任何一个周期中都具有相等的获取令牌的机会,因此所有核都将随时间均等地具有处理其就绪队列的机会。
[0021]每个CoreHalt程序都可以通过使用亲和性分配给其特定核,其中,OS进程在物理上分配给特定核。然后,CoreHalt程序可以在Microsoft Windows70S中提供,以在该操作系统中将它提高到超过其它程序和驱动器的最高可用优先级。结果,CoreHalt程序的执行近实时地操作,并减轻与其他程序和驱动器的任何冲突。
[0022]可以预想,监视通过在计算机上设置本发明的核分配、节电功能(该功能可以由用户通过激活图标、按钮或计算机的用户界面202上的其他功能来切换),本发明的操作和监视可以是计算机上用户激活的、或硬件激活的。还预想,计算机可以在用户界面202上向用户提供指示核分配、节电功能是否在操作中或者正在实现的节电的显示。还预想,用户可以通过激活图标、按钮或计算机的用户界面202上的其他功能,来控制可用令牌的最大计数,并由此使用本发明实行可用的节电量。[0023]用户激活/去激活可以作为指示CoreHalt程序接合/脱开全局信号量的软件调用和随后的暂停指令的结果而产生。硬件激活/去激活也可以作为到全局信号量硬件的导致信号量操作被激活或去激活的硬件信号的结果而产生,或利用变化的令牌行为来激活——例如,可使四个核中的两个核暂停,四个核中的三个核暂停,等等。还预想,临时的电能紧张的情况可以使用本发明来减轻。例如,在其中系统从墙上的电源过渡到电池电源的插拔情况下,可以预想,本发明可以降低电量吸收,并使系统正常地关闭(在一个核上)。进一步地,本发明可以与现有的可用的核节制方法一起使用。
[0024]图3示出了根据本发明的用于动态分配运行操作系统的多个处理器核的方法的流程图。
[0025]该方法通过提供300可操作用于使处理器核暂停处理来自相应就绪队列的指令的程序来开始。
[0026]下一步骤包括建立302可以用来使程序被执行的令牌的最大计数,其中最大计数小于处理器中核的总数。
[0027]下一步骤包括由核获取304令牌,其中至少一个核将不能获取令牌。
[0028]如果令牌已经由核获取306,则下一步骤包括由该核执行308该程序以暂停对该核的相应就绪队列的处理。如果令牌没有被核获取306,则没有令牌的该核将不能执行该程序,由此保持活动310,以处理来自其相应的就绪队列的指令。
[0029]在任一种情况下,下一步骤都包括等待312预定义的时间量,即,下一量子时钟周期。
[0030]在时间到期之后,S卩,生成中断,过程返回到由核获取304令牌,以查看哪一个核将在下一周期保持活动。
[0031]优选地,可以预想,上面的方法将由计算机的用户通过计算机用户界面来操作314和监视。
[0032]有利地,本发明在不支持强制核停止的Microsoft? Windows? 70S (这是当今台式机windows操作系统的情况)中启用强制的核停止。本发明实现起来相对简单,不涉及对操作系统的更改,可被实现为带有驱动器调用的应用。
[0033]在前面的说明中,描述了特定实施例。然而,本领域技术人员将理解,在不偏离如所附权利要求所阐述的本发明的范围的情况下,可以进行各种修改和更改。相应地,说明书和附图应被视为说明性的,而不是限制性的,所有这样的修改方案都包括在本教导的范围内。
[0034]优点、优势、对问题的解决方案、以及可能导致任何优点、优势、或解决方案发生或变得更加明显的任何元素不应该被理解为任何或所有权利要求的关键、必需或基本特征或元素。本发明只由所附权利要求进行定义,包括在本申请的待审批过程中作出的任何修改以及授权的这些权利要求的所有等效内容。
[0035]此外,在此文档中,诸如第一和第二、顶部和底部等等关系术语可以只用于区别一个实体或操作与另一个实体或操作,而不一定要求或暗示这样的实体或操作之间的任何实际这样的关系或顺序。术语“包括”、“包含”、“具有”、“含有”或其任何其他变体,用于涵盖非排他性的包含,以便包括、具有、包含元素列表的过程、方法、产品或设备不只包括那些元素而是可以包括没有明确地列出的其他元素或这样的过程、方法、产品或设备固有的其他元素。通过“包括…”、“具有…”、“包含…”、“含有…”表述的元素在没有更多约束的情况下不排除包括、具有、包含、含有该元素的过程、方法、产品或设备中存在另外的相同元素。术语“一”被定义为一个或多个,除非本文另行明确指出。术语“基本上”、“实质上”“大致”、“约”或其任何其他版本,被定义为接近于如本领域技术人员所理解的那样,在一个非限制性的实施例中,术语被定义为在10%内,在另一个实施例中,在5%内,在另一个实施例中,在1%内,在另一个实施例中,在0.5%内。如本文所使用的术语“耦合”被定义为连接,但是不一定直接连接并且不一定以机械方式连接。以某种方式“配置”的设备或结构被以至少该方式配置,但是还可以以没有列出的方式配置。
[0036]可以理解,一些实施例可以包括一个或多个通用或专用处理器(或“处理设备”)(诸如微处理器、数字信号处理器、自定义处理器和现场可编程门阵列(FPGA))和唯一存储的程序指令(包括软件和固件),这些指令控制一个或多个处理器与某些非处理器电路一起实现本文所描述的方法和/或设备的某些、大多数或所有功能。可另选地,一些或所有功能可以通过没有存储程序指令的状态机来实现,或以一个或多个专用集成电路(ASIC)来实现,其中,每个功能或某些功能的某种组合作为自定义逻辑来实现。当然,也可以使用两种方法的组合。
[0037]此外,实施例可被实现为在其上存储了用于编程计算机(例如,包括处理器)以执行如本文所描述的并要求保护的方法的计算机可读代码的计算机可读存储介质。这样的计算机可读存储介质的示例包括,但不仅限于,硬盘、CD-ROM、光存储设备、磁存储设备、ROM(只读存储器)、PROM (可编程只读存储器)、EPROM (可擦可编程只读存储器)、EEPROM (电可擦可编程只读存储器)和闪存。此外,可以预期,在本文所公开的概念和原理的指导下,本领域技术人员尽管可能花费大量的努力和可用时间、当前技术、以及经济考虑所推动的许多设计选择,但能够轻松地用最少量的实验产生IC的这种软件指令和程序。
[0038]提供“摘要”以使读者快速地弄清本技术公开的本质。但应理解,它不能被用来解释或限制权利要求的范围或含义。此外,在前面的“详细描述”中,可以看出,在多个实施例中,多个特征可以分组在一起,以便捋顺本公开。这种公开方法不应被解释为反映要求保护的实施例需要比每个权利要求中明确地列举的特征更多的特征的意图。相反,如下面的权利要求所反映的,本发明的主 题在于少于所公开的单一实施例的所有特点。如此,下面的权利要求被包括到“详细描述”中,每个权利要求本身也作为分开要求保护的主题。
【权利要求】
1.一种用于运行操作系统的计算机中的多个处理器核的动态分配的方法,所述方法包括下列步骤: 提供(300)可操作用于使核暂停处理来自相应就绪队列的指令的程序; 建立(302)能用于允许执行所述程序的令牌的最大计数,其中,所述最大计数小于核的总数;以及 由所述核获取(304)令牌,其中至少一个核将不能获取令牌; 其中,如果令牌已被核获取(306),由该核执行(308)所述程序以暂停该核的相应就绪队列的处理,以及 其中,如果令牌未被核获取(306),该核不执行所述程序,并保持活动(310)以处理来自该核的相应就绪队列的指令。
2.如权利要求1所述的方法,还包括: 等待(312)预定义的时间量;以及 返回到所述获取步骤(304)。
3.如权利要求2所述的方法,其中,所述时间量是包括所述核的计算机的量子时钟周期。
4.如权利要求1所述的方法,其中,建立(302)包括在由连接到输入/输出接口的外围设备提供的地址总线上的全局信号量中所提供的所述令牌。
5.如权利要求1所述的方法,其中,所述提供步骤(300)为每个核提供程序。
6.如权利要求1所述的方法,其中,所述提供步骤(300)提供在该操作系统中具有最高可用优先级的程序。
7.如权利要求1所述的方法,还包括由用户通过所述计算机的用户界面操作(314)所述方法。
8.如权利要求1所述的方法,所述操作系统是Microsoft?Windows? 7操作系统。
9.一种可操作用于动态地分配运行操作系统的多个处理器核的计算机,所述计算机包括: 可操作用于使核(212,214,216)暂停处理来自相应就绪队列(104,106,108)的指令的程序;以及 可操作用于提供能用来执行所述程序的令牌的外围设备(200),其中所述令牌具有小于核的总数的最大计数; 其中,所述核可操作用于尝试获取令牌,其中至少一个核(110)将不能获取令牌; 其中,如果令牌已被核(212,214,216)获取,由该核(212,214,216)执行所述程序以暂停该核的相应就绪队列(104,106,108)的处理,以及 其中,如果令牌未被核(110)获取,该核不执行所述程序,并保持活动以处理来自该核的相应就绪队列(102)的指令。
10.如权利要求9所述的计算机,其中,所述核(110,212,214,216)可操作用于等待预定义的时间量并再次尝试获取令牌。
11.如权利要求9所述的计算机,其中,所述时间量是包括所述核的计算机的量子时钟周期。
12.如权利要求9所述的计算机,其中,所述令牌是在由连接到所述计算机的输入/输出接口的所述外围设备(200)提供的地址总线上的全局信号量中所提供的。
13.如权利要求9所述的计算机,其中,程序是为每个核提供的。
14.如权利要求9所述的计算机,其中,所述程序被提供成在该操作系统中具有最高可用优先级。
15.如权利要求9所述的计算机,其中,还包括用户界面(202),其中用户可以通过所述用户界面操作所述程序和令牌的功能。
16.如权利要求9所述的计算机,所述操作系统可以是Microsoft?Windows? 7操作系统。`
【文档编号】G06F9/30GK103502906SQ201280022112
【公开日】2014年1月8日 申请日期:2012年3月12日 优先权日:2011年3月30日
【发明者】N·乔希, R·E·卡尔瓦莱西 申请人:讯宝科技公司

最新回复(0)