CN115686871B - 用于多核系统的核心调度方法和装置 - Google Patents
用于多核系统的核心调度方法和装置 Download PDFInfo
- Publication number
- CN115686871B CN115686871B CN202211713288.8A CN202211713288A CN115686871B CN 115686871 B CN115686871 B CN 115686871B CN 202211713288 A CN202211713288 A CN 202211713288A CN 115686871 B CN115686871 B CN 115686871B
- Authority
- CN
- China
- Prior art keywords
- core
- task
- schedulable
- state
- region
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Power Sources (AREA)
Abstract
公开了一种用于多核系统的核心调度方法和装置。该方法包括:从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别;获取针对多核系统的分级任务分配模式,分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系;获取分别用于向可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态;获取可调度核心区域中各个核心的任务分配状态和调度优先级;根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级,从可调度核心区域中确定用于处理待执行任务的目标核心。
Description
技术领域
本申请涉及计算机技术领域,更具体地涉及一种用于多核系统的核心调度方法和装置、计算设备、计算机可读存储介质及计算机程序产品。
背景技术
随着计算机技术发展,越来越多的人认识到,仅仅提高单核处理器芯片的速度会产生过多热量,散热问题面临瓶颈,且无法带来与之匹配的性能改善;另外,即便不考虑散热问题,由于当前单核处理器的速度提升所带来的性能改进与其所耗费的巨大成本完全不成比例,即性价比令人难以接受。在这种情况下,多核处理器或多核系统应运而生。与单核处理器的芯片速度提升不同,多核处理器主要是通过增加芯片内处理器内核的个数来提升处理器整体性能。多核处理器技术除了在应用上为计算机带来更强大的计算性能之外,更重要的是可以满足多任务并行处理和多任务计算环境的要求。
然而,当使用多核系统处理任务时,如果多核系统中各个核心调度不当,可能造成在系统核心阵列的某一核心区域中过多核心都被调度执行相对复杂的或计算开销较大的任务,即高负载任务在该核心区域过度聚集,迫使该区域中邻近排布的多个核心需要同时进行高速运算或处于高负荷状态,导致这一核心区域功率密度大幅上升,从而引起区域高发热;同时也可能由于物理位置邻近的各核心的任务负载过重,导致核心任务延时升高,显著影响系统的整体性能。
发明内容
本申请提供了一种用于多核系统的核心调度方法和装置、计算设备、计算机可读存储介质及计算机程序产品,期望缓解、减轻或甚至消除上述问题中的一些或全部以及其它可能的问题。
根据本申请的一个方面,提出一种用于多核系统的核心调度方法,包括:从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别;获取针对多核系统的分级任务分配模式,分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,预期分配的多个任务负载级别是与目标应用相关的;获取分别用于向可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,每个可调度核心子区域包括至少两个核心;获取可调度核心区域中各个核心的任务分配状态和调度优先级;根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级,从可调度核心区域中确定用于处理待执行任务的目标核心。
在根据本申请一些实施例的核心调度方法中,根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级,从可调度核心区域中确定用于处理所述待执行任务的目标核心,包括:根据所述多个电源域的供电状态,从所述多个可调度核心子区域中选取至少一个候选可调度核心子区域,使得每一个候选可调度核心子区域对应的电源域的供电状态处于开启状态;根据所述可调度核心区域中各个核心的任务分配状态,从至少一个候选可调度核心子区域中确定第一候选核心集合,使得第一候选核心集合中每一个核心处于未分配任务状态;根据分级任务分配模式,从第一候选核心集合中确定与待执行任务的任务负载级别匹配的第二候选核心集合;根据可调度核心区域中各个核心的调度优先级,从第二候选核心集合中选取目标核心。
在根据本申请一些实施例的核心调度方法中,根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级,从可调度核心区域中确定用于处理待执行任务的目标核心,包括:根据多个电源域的供电状态、可调度核心区域中各个核心的任务分配状态、分级任务分配模式以及待执行任务的任务负载级别中至少一个,判断预设条件是否被满足,其中预设条件包括下述条件中至少一个:多个电源域都处于关断状态;多个电源域包括至少一个处于开启状态的第一电源域,且每一个第一电源域对应的可调度核心子区域中的各个核心都处于已分配任务状态;以及多个电源域包括至少一个处于开启状态的第二电源域,且每一个第二电源域对应的可调度核心子区域中处于未分配任务状态的每一个核心对应的任务负载级别都与待执行任务的任务负载级别不匹配;响应于预设条件被满足,根据多个电源域的供电状态,从多个可调度核心子区域中选取至少一个候选可调度核心子区域,使得每一个候选可调度核心子区域对应的电源域的供电状态处于关断状态;根据可调度核心区域中各个核心的调度优先级、分级任务分配模式以及待执行任务的任务负载级别,从至少一个候选可调度核心子区域中确定目标核心。
在根据本申请一些实施例的核心调度方法中,获取可调度核心区域中各个核心的任务分配状态和调度优先级包括:根据可调度核心区域中每一个可调度核心子区域的位置排列顺序,确定每一个可调度核心子区域的第一调度顺序;至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级。
在根据本申请一些实施例的核心调度方法中,至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级,包括:根据每一个可调度核心子区域中各个核心的横向排列顺序和纵向排列顺序,确定每一个可调度核心子区域中各个核心的第二调度顺序;根据每一个可调度核心子区域的第一调度顺序和该可调度核心子区域中各个核心的第二调度顺序,确定每一个可调度核心区域中各个核心的调度优先级。
在根据本申请一些实施例的核心调度方法中,多个可调度核心子区域中每一个可调度核心子区域均为方形核心阵列区域且包括相同数量的核心。
在根据本申请一些实施例的核心调度方法中,在分级任务分配模式中,可调度核心区域包括与预期分配的多个任务负载级别一一对应的多类核心区域,每类核心区域包括多个不相邻的子区域,每个子区域包括一个核心或相邻的至少两个核心。
在根据本申请一些实施例的核心调度方法中,分级任务分配模式是根据预期分配的多个任务负载级别获取的。
在根据本申请一些实施例的核心调度方法中,在预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别的情况下,分级任务分配模式为第一分级任务分配模式,在第一分级任务分配模式中,可调度核心区域包括与第一任务负载级别对应的第一类核心区域以及与第二任务负载级别对应的第二类核心区域,且第一类核心区域中的每个子区域和第二类核心区域中的每个子区域均包括一个核心。
在根据本申请一些实施例的核心调度方法中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别的情况下,分级任务分配模式为第二分级任务分配模式,在第二分级任务分配模式中,可调度核心区域包括与第一任务负载级别对应的第三类核心区域、与第二任务负载级别对应的第四类核心区域以及与第三任务负载级别对应的第五类核心区域,第四类核心区域中的各子区域与第五类核心区域中的各子区域不相邻。
在根据本申请一些实施例的核心调度方法中,第二任务负载级别和第三任务负载级别中的每一个对应的任务复杂程度都大于第一任务负载级别对应的任务复杂程度。
在根据本申请一些实施例的核心调度方法中,可调度核心区域为阵列区域,并且在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,分级任务分配模式为第二分级任务分配模式的第一子模式,极差指示预期分配的多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异,在第一子模式中,在可调度核心区域的每一行和每一列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心以及第四类区域中的至少一个核心隔开。
在根据本申请一些实施例的核心调度方法中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,分级任务分配模式为第二分级任务分配模式的第二子模式,其中第一极差阈值小于或等于第二极差阈值,在第二子模式中,在可调度核心区域的奇数行和奇数列中,第四类区域中的各核心被第三类区域中的一个或多个核心隔开,并且在可调度核心区域的偶数行和偶数列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心和第四类区域中的至少一个核心隔开。
在根据本申请一些实施例的核心调度方法中,第三任务负载级别对应的任务复杂程度大于第二任务负载级别对应的任务复杂程度。
在根据本申请一些实施例的核心调度方法中,进一步包括:获取目标应用对应的区域调度参数,区域调度参数基于目标应用运行所需的核心数量确定;根据区域调度参数,从多核系统的核心阵列中确定可调度核心区域。
在根据本申请一些实施例的核心调度方法中,进一步包括:响应于待执行任务被目标核心处理完成,获取目标核心所在的可调度核心子区域中除了目标核心之外的每一个其他核心的任务分配状态;基于每一个其他核心的任务分配状态,控制目标核心所在的可调度核心子区域对应的目标电源域的开关。
在根据本申请一些实施例的核心调度方法中,基于每一个其他核心的任务分配状态,控制目标核心所在的可调度核心子区域对应的目标电源域的开关,包括:响应于每一个其他核心的任务分配状态都为未分配任务状态,关断目标电源域。
在根据本申请一些实施例的核心调度方法中,基于每一个其他核心的任务分配状态,控制目标核心所在的可调度核心子区域对应的目标电源域的开关,包括:响应于每一个其他核心的任务分配状态都为未分配任务状态,启动电源域空闲状态计时;响应于电源域空闲状态计时达到预设时长,关断目标电源域。
在根据本申请一些实施例的核心调度方法中,基于每一个其他核心的任务分配状态,控制目标核心所在的可调度核心子区域对应的目标电源域的开关,进一步包括:在电源域空闲状态计时期间,实时获取目标核心所在的可调度核心区域中每一个核心的任务分配状态;响应于在电源域空闲状态计时期间目标核心所在的可调度核心区域中至少一个核心的任务分配状态为已分配任务状态,终止电源域空闲状态计时且保持目标电源域开启。
在根据本申请一些实施例的核心调度方法中,进一步包括:响应于待执行任务被目标核心处理完成,将目标核心的任务分配状态更新为未分配任务状态。
在根据本申请一些实施例的核心调度方法中,进一步包括:响应于目标核心被确定,根据目标核心所在的可调度核心子区域对应的目标电源域的供电状态,控制待执行任务的处理过程。
在根据本申请一些实施例的核心调度方法中,响应于目标核心被确定,根据目标核心所在的可调度核心子区域对应的目标电源域的供电状态,控制待执行任务的处理过程,包括:响应于目标电源域的供电状态为完全关断状态,开启目标电源域并实时检测目标电源域是否进入完全开启状态;以及响应于目标电源域进入完全开启状态,指示目标核心处理待执行任务。
在根据本申请一些实施例的核心调度方法中,响应于目标核心被确定,根据目标核心所在的可调度核心子区域对应的目标电源域的供电状态,控制待执行任务的处理过程,包括:响应于目标电源域的供电状态为上电状态,实时检测目标电源域是否进入完全开启状态;响应于目标电源域进入完全开启状态,指示目标核心处理待执行任务。
在根据本申请一些实施例的核心调度方法中,响应于目标核心被确定,根据目标核心所在的可调度核心子区域对应的目标电源域的供电状态,控制待执行任务的处理过程,包括:响应于目标电源域的供电状态为掉电状态,实时检测目标核心的电源域是否进入完全关断状态;响应于目标电源域进入完全关断状态,开启目标电源域并实时检测目标电源域是否进入完全开启状态;以及响应于目标电源域进入完全开启状态,指示目标核心处理待执行任务。
在根据本申请一些实施例的核心调度方法中,获取分别用于向可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,包括:获取多核系统的核心状态记录表,核心状态表包括多个电源域的开关信号;针对多个电源域中每一个电源域,响应于该电源域的开关信号为1,该电源域的供电状态被确定为关断状态;针对多个电源域中每一个电源域,响应于该电源域的开关信号为0,该电源域的供电状态被确定为开启状态。
在根据本申请一些实施例的核心调度方法中,核心状态表进一步包括多个电源域的开关完成信号,关断状态包括完全关断状态和掉电状态,开启状态包括完全开启状态和上电状态,并且获取分别用于向可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,进一步包括:针对多个电源域中每一个电源域:响应于该电源域的开关信号为1且开关完成信号为1,电源域的供电状态被确定为完全关断状态;响应于该电源域的开关信号为1且开关完成信号为0,电源域的供电状态被确定为掉电状态;响应于该电源域的开关信号为0且开关完成信号为0,电源域的供电状态被确定为完全开启状态;响应于该电源域的开关信号为0且开关完成信号为1,电源域的供电状态被确定为上电状态。
根据本申请的另一方面,提供一种用于多核系统的核心调度装置,其特征在于,包括:接收模块,其配置成从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别;第一获取模块,其配置成获取针对多核系统的分级任务分配模式,分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,预期分配的多个任务负载级别是与目标应用相关的;第二获取模块,其配置成获取分别用于向可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,每个可调度核心子区域包括至少两个核心;第三获取模块,其配置成获取可调度核心区域中各个核心的任务分配状态和调度优先级;确定模块,其配置成根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级,从可调度核心区域中确定用于处理待执行任务的目标核心。
根据本申请的另一方面,提出一种计算设备,包括:存储器和处理器,其中存储器中存储有计算机程序,计算机程序在被处理器执行时促使处理器执行根据本申请一些实施例的用于多核系统的核心调度方法。
根据本申请的另一方面,提出一种计算机可读存储介质,其上存储计算机可读指令,计算机可读指令在被执行时实现根据本申请一些实施例的方法。
根据本申请的另一方面,提出一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现根据本申请一些实施例的方法的步骤。
在根据本申请一些实施例的用于多核系统的核心调度方法和装置中,首先,通过任务分级方式向核心分配任务或调度核心,可以实现不同负载级别任务在核心阵列中的均衡分配或排布,进而有效控制核心阵列的功率密度,使其相对均衡;进一步地,在使用分级任务分配模式实现不同任务负载级别在多核阵列中均衡排布的同时,考虑到在使用区域化电源(共享电源域)的多核系统中,基于多核系统中共享电源域供电状态调整核心调度策略(例如将待执行任务优先分配到处于开启状态的电源域对应的核心),从而减少了电源域开通的数量,有效降低了多核系统的整体能耗,并且避免了频繁开启新电源域造成的效能损耗,提高了待执行任务的执行效率,进而显著提升了多核系统的整体工作效率。此外,基于电源域供电状态的任务分配方式,使得待执行的分级任务优先集中分配到开启状态的电源域对应的可调度核心子区域(即电源域对应的核心区域),有利于针对被调度核心的集中统一管理,尤其是区域化电源管理,显著提升了多核系统的核心管理效率。
附图说明
根据以下详细描述和附图,将容易理解本申请的各个不同的方面、特征和优点,在附图中:
图1示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的示例实施环境;
图2示意性示出了根据本申请一些实施例的用于多核系统的核心调度的流程图;
图3A和3B分别示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法对应的实体架构图;
图4示意性示出了根据本申请一些实施例的用于多核系统的核心调度优先级示意图;
图5A示意性示出了根据本申请一些实施例的用于多核系统的核心调度的流程图;
图5B示意性示出根据本申请一些实施例的用于多核系统的核心角度方法的原理图;
图5C示意性示出了根据本申请一些实施例的用于多核系统的核心调度的流程图;
图6A-6E分别示意性示出根据本申请一些实施例的分级任务分配模式;
图7示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的流程图;
图8示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的流程图;
图9A示意性示出了根据本申请一些实施例的用于多核系统的电源域的状态变化示意图;
图9B和图9C分别示出了根据本申请一些实施例的用于多核系统的核心调度方法实施过程中关键信号波形图;
图10示意性示出了根据本申请一些实施例的用于多核系统的核心调度装置的示例框图;以及
图11示意性示出了根据本申请一些实施例的计算设备的示例框图。
应当指出,上述附图仅仅是示意性的和说明性的,且并不一定按照比例绘制。
具体实施方式
下面将参照附图更详细地描述本申请的若干个实施例以便使得本领域技术人员能够实现本申请。本申请可以体现为许多不同的形式和目的并且不应局限于本文所阐述的实施例。提供这些实施例以使得本申请全面且完整,并充分地向本领域技术人员传达本申请的范围。所述实施例并不限定本申请。
将理解的是,尽管术语第一、第二、第三等在本文中可以用来描述各种元件、部件和/或部分,但是这些元件、部件和/或部分不应当由这些术语限制。这些术语仅用来将一个元件、部件或部分与另一个元件、部件或部分相区分。因此,下面讨论的第一元件、部件或部分可以被称为第二元件、部件或部分而不偏离本申请的教导。
本文中使用的术语仅出于描述特定实施例的目的并且不意图限制本申请。如本文中使用的,单数形式“一个”、“一”和“该”意图也包括复数形式,除非上下文清楚地另有指示。将进一步理解的是,术语“包括”和/或“包含”当在本说明书中使用时指定所述及特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、部件和/或其群组的存在或添加一个或多个其他特征、整体、步骤、操作、元件、部件和/或其群组。如本文中使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任意和全部组合。
除非另有定义,本文中使用的所有术语(包括技术术语和科学术语)具有与本申请所属领域的普通技术人员所通常理解的相同含义。将进一步理解的是,诸如那些在通常使用的字典中定义的之类的术语应当被解释为具有与其在相关领域和/或本说明书上下文中的含义相一致的含义,并且将不在理想化或过于正式的意义上进行解释,除非本文中明确地如此定义。
在详细介绍本申请的实施例之前,为了清楚起见,首先对一些相关的概念进行解释。
1. 多核系统:即多核处理器,其是指在一枚处理器中集成两个或更多个完整的计算引擎或内核,例如单芯片多处理器(CMP)结构;多核系统中的“核”表示用于进行信息处理和任务执行的计算引擎或内核,在本文中可以称为“核心”。
2. 多核系统的功率密度:在本文中是指多核系统阵列的某一区域中核心功耗的密集程度,例如可以等于该区域中所有核心的总功耗与该区域面积之比。
3. 核心调度:是指对多核系统中各个内核或核心的管理和控制,包括例如任务分配、电源设计、调控和管理等。
4. 区域化电源管理:可以表示利用为多个物理位置邻近的核心供电的共享电源域对多个核心供电情况进行的统一管理和控制。
针对上文所述的多核系统中各核心任务分配不当造成的核心阵列局部或整体功率密度过高以及缺乏合理化电源管理的问题,本申请提供了一种用于多核系统的核心调度方法。该方法在通过分级任务分配模式(即任务负载级别与多核系统各核心之间的对应关系)实现任务分配和核心调度的同时,考虑多核系统中为核心供电的共享电源域(即区域化电源)的供电状态对核心调度的潜在影响,将电源域的供电状态的实时获取或检测加入到核心调度策略中,以便针对待执行任务实现功率密度均衡的、高效率的且低能耗的多核系统核心调度过程。
图1示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的示例实施环境100。如图1所示,实施环境100可以包括目标应用110、多核系统120、核心调度平台130。目标应用110可以是计算设备(例如服务器、终端设备、嵌入式计算设备等)上正在运行的、用于发布待执行任务供处理器处理的各类软件或应用程序。多核系统120可以是位于计算设备中用于处理目标应用110发布的各种任务的多核处理器。核心调度平台130可以是计算设备中用于对多核系统120中各个核心进行管控或工作调度(例如可以包括针对各个核心的任务分配或电源管理等)的软件模块(例如程序模块)和/或硬件模块(例如电路)。根据申请一些实施例的用于多核系统的核心调度方法可以利用上述核心调度平台130实现。
在一些实施例中,目标应用110可以包括终端设备上在用户模式中运行的终端应用(程序),其可以和用户进行交互,并具有可视的用户界面。从功能的角度看,终端应用可以包括云游戏、社交应用程序、支付应用程序、购物应用程序、多媒体应用程序(如音视频应用程序)以及教育应用程序等;从访问方式的角度看,终端应用可以包括本地安装的应用程序、经由其他应用程序访问的小程序、经由浏览器访问的web程序等。终端应用可以包括但不限于手机APP、计算机软件等。在一些实施例中,目标应用110可以包括服务器中运行的程序或软件,即服务器端应用。可选地,目标应用110也可以包括运行在终端设备或服务器上是系统应用。
在一些实施例中,多核系统120可以是在计算设备中的多核中央处理器(CPU),可选地也可以是多核图形处理器(GPU)或其他各种类型的处理器或芯片组。多核技术是比较常见的提高处理器性能的技术,尤其在服务器上;一般地,服务器产品的多核处理器的核心数量为16核心起步,40或80核心常见,规模还能到上百核甚至上千核心。多核系统120中的各个核心之间可以通过片上网络(NOC)相互连接。NOC是指多核系统中各个核心之间的互连结构,目的是实现多核系统中核心之间的互联互通;例如包括网状(mesh)结构和全互联结构(相比而言全互联结构性能稍高、延时较少,但结构复杂;而网状结构则整体结构相对简单、布线方便灵活)。本申请的核心调度方法既可以在网状NOC结构的多核系统也可以在全互联NOC结构的多核系统中实现多核心的调度和任务分配。
在一些实施例中,核心调度平台130可以包括实现相应功能的单独的硬件、软件、固件或它们的组合,例如可以包括具备数据收发和处理能力的处理器、单片机、芯片、具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路、具有合适的组合逻辑门电路的专用集成电路、可编程门阵列(Programmable Gate Array)、现场可编程门阵列(FieldProgrammable Gate Array)等,或者上述硬件中任意两个或多个的组合;或者还可以包括但不限于处理器上运行的进程、对象、可执行文件、执行线程、程序等。
如图1所示,首先,核心调度平台130可以被配置成:从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别,任务负载级别可以指示任务复杂程度。其次,核心调度平台130可以被配置成:获取针对多核系统的分级任务分配模式,分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,预期分配的多个任务负载级别是与目标应用相关的。再次,核心调度平台130可以被配置成:获取分别用于向可调度核心区域中多个可调度核心子区域供电的多个电源域的供电状态,每个可调度核心子区域包括至少两个核心。进一步地,核心调度平台130可以被配置成:获取可调度核心区域中各个核心的任务分配状态和调度优先级。最后,核心调度平台130可以被配置成:根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级,从可调度核心区域中确定用于处理待执行任务的目标核心。
可选地,如图1虚线所示,在确定了用于处理待执行任务的目标核心之后,核心调度平台130可以被配置成向目标应用110发送目标核心的标识符(例如目标核心ID);随后,目标应用110在获得目标核心标识符后,可以直接向多核系统120发送所述标识符以及待执行任务以供目标核心依据核心调度平台130的电源域和任务处理策略进行任务处理;最后,多核系统120在接收到标识符和待执行任务之后分配给标识符对应的目标核心进行任务处理,并将处理完成信息返回给核心调度平台。
图1中的实施环境100所涉及计算设备或计算机(例如多核系统120所在的计算设备)可以包括终端设备和/或服务器。终端设备可以是任何类型的移动计算设备,包括移动计算机(例如个人数字助理(PDA)、膝上型计算机、笔记本计算机、平板计算机、上网本等)、移动电话(例如,蜂窝电话、智能手机等)、可穿戴式计算设备(例如智能手表、头戴式设备,包括智能眼镜等)或其他类型的移动设备。在一些实施例中,终端设备也可以是固定式计算设备,例如台式计算机、游戏机、智能电视等。服务器可以是单个服务器或服务器集群,或者可以是能够提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器或云服务器集群。应理解,本文所提及的服务器典型地为具有大量存储器和处理器资源的服务器计算机,但是其他实施例也是可能的。
图1所示根据本申请一些实施例的用于多核系统的核心调度方法的实施环境100仅仅是示意性的。根据本申请的用于多核系统的核心调度方法并不限于所示出的示例实施环境。应理解,在本文中,一般地,图1所示的目标应用110、核心调度平台130和多核系统120可以处于同一计算设备中,但它们也可以是分别属于不同的计算设备。例如,目标应用110是终端设备中运行的应用程序或软件,而多核系统120可以是服务器的多核处理器用于通过网络传输来处理或执行终端设备上的目标应用发布的任务,而核心调度平台可以位于或运行于该服务器或该终端设备至少之一侧以实现多核系统120中核心调度和任务分配。
图2示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的流程图。如图2所示,根据本申请一些实施例的核心调度方法可以包括:
S210,任务执行请求接收步骤;
S220,分级任务分配模式获取步骤;
S230,电源域供电状态获取步骤;
S240,任务分配状态和调度优先级获取步骤;以及
S250,目标核心确定步骤。
图3A示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法对应的实体架构图。
如图3A所示,根据本申请一些实施例的用于多核系统的核心调度方法涉及目标应用310、多核阵列320(即多核系统的各个核心构成的核心阵列)以及核心调度平台330之间的信息交互。在图3A中,多核阵列320可以指示图1所示的多核系统120中各个核心的物理排布。如图3A所示,多核阵列320可以为n*n个核心构成的正方形阵列,其中n为大于等于2的整数。需要注意,可选地,多核阵列320也可以呈现为其他形状的物理排布,例如矩形、菱形等。如图3A所示,用于实现根据本申请的核心调度方法的核心调度平台330可以包括:应用交互接口331,用于与目标应用310进行交互,例如从中接收任务执行请求以及向其发送所分配的核心的标识符等;任务分配组件332,用于根据应用交互接口331接收到的任务执行请求,依据分级任务分配模式、待执行任务的任务负载级别以及核心任务分配状态实现核心调度。如图3A所示,核心调度平台330可以进一步包括:核心状态记录表333,用于记录多核阵列320中各个核心的工作状态,例如核心标识符、任务分配状态、对应的电源域状态ID和状态、被分配的任务负载级别等;以及电源管理组件334,用于依据核心状态记录表333中核心状态和/或电源域状态控制各个核心的电源开启和/或关断,从而在保证多核系统或多核阵列320正常运转的情况下最大限度地降低其整体功耗。
图3B示出了图3A中应用交互接口331、任务分配组件332以及电源管理组件334之间的内部结构和交互图。应用交互接口331也可以称为软硬件交互接口(即目标应用(软件)与多核系统320或核心调度平台(硬件)330的交互接口)。
如图3B所示,应用交互接口331可以包括下述多个寄存器:任务请求寄存器TASK_REQ、任务负载级别寄存器LOAD_LEVEL、任务分级参数寄存器MODE,它们分别用于从目标应用310接收并存储任务执行请求、待执行任务的任务负载级别、目标应用对应的任务分级参数。可选地,如图3B所示,应用交互接口331还可以包括区域调度参数寄存器MC_SIZE,用于从目标应用310接收并存储区域调度参数。可选地,如图3B所示,应用交互接口331还可以包括目标核心标识符寄存器COREID_SEL,用于从任务分配组件332接收并存储所调度或分配的目标核心的标识符(ID),并将其反馈给目标应用310。如图3B所示,可选地,应用交互接口331可以包括电源域参数寄存器PWR_SIZE,用于存储多核系统电源域参数。在一些实施例中,电源域参数用于描述多核系统中每个电源域所涉及的核心数量和核心区域形状,例如可以用m*n表示,其中m表示电源域对应的核心阵列的横向核心数量,n表示纵向核心数量。一般地,电源域参数可以是基于软硬件情况预先确定的参数。
需要说明,尽管应用交互接口331中的各个寄存器在图3B中被示出为分离的结构,但是在一些实施例中,它们中两个或更多个也可以是同一寄存器的不同组成部分。
下面,将参考图3A和3B详细介绍图2所示的步骤S210-250。如图1的实施环境和图3A的实体架构图所示,根据本公开一些实施例的核心调度方法的上述步骤S210-S250可以在核心调度平台130、330中实现。
在步骤S210(任务执行请求接收步骤)中,从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别。任务负载级别可以指示任务复杂程度。
一般地,多核系统的核心调度可以包括关于多个核心的工作调度,这里的工作调度是指针对多核系统中各个核心的任务分配,即针对不同(任务负载级别)的任务如何调度相应核心进行处理。因此,在进行核心调度之前,首先需要从多核系统所在的计算设备中当前运行的应用接收任务执行请求,随后响应于该任务执行请求,开启核心调度过程。
根据本申请的构思,为了克服多核系统的核心阵列中高任务负载过度聚集造成的功率密度失衡的问题,可以通过针对多核系统的分级任务分配策略或模式实现功率密度均衡可控的核心调度。这样,在任务执行请求中需要包括待执行任务的任务负载级别,其用于表示任务复杂程度。可选地,任务执行请求还可以包括任务分级参数,用于在步骤S420中确定分级任务分配模式。进一步可选地,任务执行请求又可以包括区域调度参数,用于确定可调度核心区域。
步骤S210可以通过图3B所示应用交互接口331完成。如图3A和3B的实体架构图所示,核心调度平台330可以通过其中应用交互接口331的任务请求寄存器TASK_REQ从目标应用310接收并存储任务执行请求,其中的待执行任务的任务负载级别可以单独存储在任务负载级别寄存器LOAD_LEVEL中;然后,利用任务负载级别寄存器LOAD_LEVEL将待执行任务的任务负载级别发送至任务分配组件332的目标核心确定模块332a。
在一些实施例中,任务负载级别是衡量任务复杂度或计算负荷的参数,其可以用于表征处理器核心执行或处理相应任务时预期的运算或处理负担。通过任务负载级别的划分,可以将不同复杂度的目标应用所涉及的各个任务归类为若干任务负载级别,从而简化核心调度的过程。关于目标应用的相关任务的任务负载级别的具体数量和各个任务负载级别对应的运算负荷范围,可以根据目标应用及其发布的各种任务的具体应用场景来确定。如图3A和3B所示,待执行任务的任务负载级别可以由目标应用310在将其发送至核心调度平台330之前预先确定,以简化核心调度平台330的操作。可选地,关于目标应用或310的待执行任务的任务负载级别划分,也可以由核心调度平台330在接收到任务执行请求时通过检测待执行任务的复杂程度来确定。
在步骤S220(分级任务分配模式获取步骤)中,获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,所述预期分配的多个任务负载级别是与所述目标应用相关的。其中,可调度核心区域可以为多核系统的核心阵列的至少一部分。
根据本申请的核心调度方法的构思,在接收到任务执行请求之后,可以基于该请求利用分级任务分配模式来调度核心,因此在进行调度之前,需要获取分级任务分配模式。
在一些实施例中,分级任务分配模式可以描述为包括可调度核心区域中各个核心在多核阵列中的位置与预期分配的多个任务负载级别之间对应关系,其中可调度核心区域是从多核系统的核心阵列中筛选的包括多个核心的核心区域。预期分配的多个任务负载级别是与目标应用相关的,例如可以基于目标应用发布的任务分级参数确定。任务分级参数可以包括目标应用相关的预期分配的多个任务负载级别。
在一些实施例中,分级任务分配模式的获取可以根据目标应用相关的预期分配的多个任务负载级别来进行。例如,可以首先基于任务分级参数得到预期分配的多个任务负载级别,随后获取与预期分配的多个任务负载级别对应的分级分配模式。如图3B所示,步骤S220可以在任务分配组件332中的任务分配模式获取模块332b中完成,即基于从任务分级参数寄存器MODE接收到任务分级参数获取相应的分级任务分配模式并将其发送至目标核心确定模块332a。
在一些实施例中,预期分配的多个任务负载级别与目标应用对应的任务分级参数相关,因为目标应用所涉及的任务就是多核系统处理的对象,因此目标应用对应的所有任务负载级别就可以认为是待分配或预期分配的任务负载级别。这样,预期分配的多个任务负载级别可以直接限定与任务分级参数对应的目标应用所涉及任务负载级别(即该目标应用所包含的各个任务被划分的所有任务负载级别)一一对应。例如,当任务分级参数指示目标应用包含m个任务负载级别且按照对应的任务复杂程度由低到高的顺序可以分别定义为0级、1级、…、m-1级时,预期分配的多个任务负载级别也可以为上述m个级别。
在一些实施例中,任务分级参数可以定义为目标应用所涉及或所包含的任务负载级别的总数(即预期分配的多个任务负载级别的总数),或者可选地包括各个任务负载级别对应的任务复杂度范围,或者可选地包括各个任务负载级别的极差。这样,在得到目标应用对应的任务分级参数之后,可以根据任务分级参数确定多核系统(针对目标应用发布的任务)的分级任务分配模式。
在一些实施例中,分级任务分配模式可以根据预期分配的多个任务负载级别获取。一方面,关于分级任务分配模式的获取,可以依据预期分配的多个任务负载级别的总数,从预先确定的(固定的)多个候选分级任务分配模式中选择。例如,多个候选分级任务分配模式可以在核心调度进行之前预先确定并存储在数据库中,当需要进行核心调度时,首先从数据库中提取这些候选分配方式;随后依据任务分级参数从中选取合适的(即与目标应用的任务分级参数对应的)一个候选分级分配模式作为当前核心调度的基础。例如,当任务分级参数指示目标应用包括m个任务负载级别时,表明目标应用对应的预期分配的任务负载级别个数为m,因此可以从多个候选的分级任务分配模式中选择与之匹配的包含m个预期分配的任务负载级别的分级分配模式。另一方面,除了预期分配的多个任务负载级别的总数,还可以根据预期分配的多个任务负载级别的极差(即目标应用涉及的各个任务负载级别对应的任务的相对复杂程度和/或绝对复杂程度)获取分级任务分配模式,详情请参考图6C和6D所示的第二分级任务分配模式。
如图3A和3B所示,核心调度平台330可以预先(例如在目标应用发布任务执行请求之前)通过应用交互接口331的任务分级参数寄存器MODE从目标应用310接收并存储目标应用对应的任务分级参数。然后,当需要进行核心调度时,核心调度平台330的任务分配组件332可以从应用交互接口331的任务分级参数寄存器MODE中提取任务分级参数以用于分级任务分配模式的获取。
在一些实施例中,目标应用对应的任务分级参数的确定可以根据目标应用和/或其各个任务的应用场景来确定。这里的应用场景可以指目标应用中所包含的各个任务对应的涉及不同运算负荷的信息处理方式,例如可以包括简单的数据读写、高速信息交互、复杂的数据运算等。由于目标应用发布的各个任务对应的应用场景决定了相应任务的处理或执行的复杂程度,因此可以基于应用场景来确定目标应用中各个任务分别对应的任务负载级别。
例如当某一任务的应用场景为复杂的数据运算时,由于其耗时较多、计算负荷较大,该任务可以被归为较高的任务负载级别,而仅涉及简单的数据读写操作的任务则可以被划归为较低的任务负载级别。例如,假设目标应用各个任务总共包括涉及m种不同运算负荷的信息处理方式的应用场景,则该目标应用涉及的所有任务可以被总共划分为m个任务负载级别;这时,预期分配的多个任务负载级别的个数为m个,可选地按照对应的任务复杂程度由低到高的顺序可以分别定义为1级、2级、…、m级。因此,任务分级参数可以被定义为m。
在一些实施例中,可调度核心区域可以是整个多核系统阵列区域,也可以是从中筛选的部分区域。可调度核心区域的筛选目的是减小多核阵列中针对目标应用的核心调度范围,从而简化任务分配过程、提升工作效率、降低能耗。例如,在从多核阵列中选定其中一部分区域作为可调度核心区域之后,可以直接将多核阵列中除可调度核心区域之外的其他所有核心的电源关断,以充分节省能源、降低功耗。可调度核心区域可以在核心调度之前预先依据目标应用运行或任务处理所需的核心数量确定,或者基于目标应用根据所需核心数量得到的区域调度参数确定。
特别地,例如在目标应用运行所需的处理器核心数量不可预测的情况下,也可以将多核阵列整体区域确定为可调度核心区域。另一方面,可调度核心区域的选择也可以考虑多核阵列320中各个核心的当前工作状态。例如,多核阵列320中可能存在正在执行目标应用之外的其他应用发布的任务(非空闲核心)且无法同时处理其他任务的核心,这时需要将其排除在可调度核心区域之外。
在一些实施例中,分级任务分配模式中所包括的可调度核心区域中各核心与预期分配的多个任务负载级别的对应关系可以利用各个预期分配的任务负载级别在多核阵列的可调度核心区域中各个核心位置中的排布情况来表征,具体排布情况可以参见图6A-6D及其相应的描述。其中的核心的位置可以指该核心在核心阵列中的物理位置,例如包括绝对位置或相对位置。
这种表现为各待调度核心与待分配任务负载级别的对应关系(或待分配任务负载级别在待调度核心位置上的排布)的分级任务分配模式可以直观地指示不同任务负载级别在多核阵列中的分配部署情况,有利于将根据不同负载级别的核心位置部署来控制多核阵列的预期功率密度,特别是可以通过同负载级别(尤其是高负载级别)的任务分散部署,以避免多核阵列局部功率密度失衡或过高。
由于任务分级参数可以指示目标应用相关的任务负载级别划分情况,因此可以基于任务分级参数得到目标应用所涉及的所有任务负载级别,即预期分配的多个任务负载级别。例如假设任务负载级别被限定为目标应用所涉及的不同任务负载级别的总数m,则可以从如图6A-6E所示的固定的候选分级任务分配模式中选取包含m个预期分配的任务负载级别的分级任务分配模式用于目标应用的任务分配或核心调度。
在一些实施例中,分级任务分配模式获取步骤S220可以在任务执行请求之前预先完成。换言之,可以首先针对目标应用预先获取或确定分级任务分配模式,随后开始目标应用相关的任务分配和核心调度过程。
在步骤S230(电源域供电状态获取步骤)中,获取分别用于向所述可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,每个可调度核心子区域包括至少两个核心。
根据本申请的构思,要想实现区域化电源管理以及基于区域化电源域状态的核心调度(以实现将待执行任务优先分配给处于开启状态的电源域对应的核心),需要在多核系统中采用多核心共享电源域(相对于不同核心的独享电源域),并在任务分配或核心调度时实时检测或获取为多核系统(尤其是可调度核心区域)中核心供电的各个共享电源域的供电状态。
这种多核心共享电源域是指物理位置相对邻近的多个核心共用的一个供电设备,即一个共享电源域可以为至少两个核心供电。为了实现多核系统的核心区域化管理,可以依照多核系统中各个共享电源域的分布和大小来将多核系统的可调度核心区域划分成多个可调度核心子区域,其中各个可调度核心子区域与各个共享电源域一一对应,即同一个可调度核心子区域中的各个核心共享同一个电源域。
为了操作管理方便起见,每个共享电源域对应的可调度子区域可以具有相同的形状和相同数量的核心。如图3B所示,任务分配组件332可以从应用交互接口中接收预先确定的电源域参数,随后基于电源域参数来对可调度核心区域进行划分。例如,针对16*16的多核阵列或其可调度核心区域,假设电源域参数为4*4,则可调度核心子区域可以被划分为16个可调度核心子区域,划分后的每个可调度核心子区域均为4*4的方形核心阵列区域(例如参见图5B的黑色方框所围成的4*4网格)。
在一些实施例中,如图3B所示,多核系统中共享电源域的数量和/或电源域参数(即电源域所涉及的核心区域形状和核心数量)可以基于实际情况(例如应用场景、技术工艺等)预先确定,并存储在电源域参数寄存器PWR_SIZE中。在一些实施例中,共享电源域对应的可调度核心子区域通常是多核系统中的正方形核心阵列,即其电源域参数可以为例如2*2、4*4或8*8等,这样便于电源域及其相应核心的布置(例如电源设备的布置以及与各个核心之间的走线布置)和管理。可选地,共享电源域对应的可调度核心子区域也可以是矩形或其他形状的核心阵列区域,例如对应于参数为3*2、4*5等。
关于共享电源域的供电状态的获取,可以利用检测器实时检测多核系统中各个共享电源域的开关状态,从而得出其供电状态。在一些实施例中,如图3B所示,任务分配组件332可以从核心状态记录表333中直接获取各个核心对应的共享电源域的开关状态(即检测器的检测结果直接实时存储在核心状态记录表中)并且由此得到其具体供电状态。在一些实施例中,电源域(共享电源域或独享电源域)可以包括两种供电状态:开启(即接通)和关断。可选地,由于(例如较大规模的)电源域开启和关断可能需要一个过程,因此核心的电源域的供电状态可以包括:完全开启状态(即正常供电状态)、完全关断状态(即完全不工作状态)、上电状态(即从电源域被开启时刻到完全开启时刻之间的过程)和掉电状态(即从电源被关断时刻到完全关断时刻之间的过程)。其中,完全开启状态和上电状态可以统称为开启状态,即电源域已被接通;完全关断状态和掉电状态可以统称为关断状态。
图3B中所示的核心状态记录表333可以由核心调度平台330来创建和管理,用来记录当前多核系统每个核心的任务分配状态、被分配的任务负载级别以及电源开关情况等信息。表1示意性示出了根据本申请一些实施例的多核系统的核心状态记录表。如表1所示,多核系统的核心状态记录表可以包括下述六个参数:Core_ID、Assigned、Load_level、Priority、PWRID、PWR_off、PWR_off_done,其分别表示核心标识符、任务分配状态、被分配的任务负载级别、调度优先级、电源域ID、电源域开关状态和电源域开关完成状态。
表1-核心状态记录表
如表1所示,例如,多核系统为16*16的核心阵列,共256个核心,为该阵列中每个核心设置一个行,左边关于核心的被分配任务相关信息的三列共256行,因为这些信息对每个核心而言是相互独立的;右边三列关于电源域的状态信息共16行,因为每个电源域包括16个核心,即16个核心共享一个电源域。表1的具体表格的深度和大小可以根据系统需求进行配置。
表1中的Core_ID表示各个核心的标识符,其被设定后不再变化。可以按照核心所属的电源域来分配ID,例如先按照各电源域的位置顺序和电源域的大小(即核心数量)依次为每个电源域分配相应数量的ID,随后再按照同一个电源域内部各核心的位置顺序依次分配具体的ID。例如,以16*16核心阵列且电源域参数为4*4为例,如表1所示,可以首先按照各电源域从左到右、从上到下的顺序为总共16个电源域各分配16个Core_ID,左上角的第一个电源域(PWRID=0)被分配0-15,第一行第二个电源域(PWRID=1)被分配16-31,…以此类推。随后,在第一个电源域(PWRID=0)中仍然按照从左到右、从上到下的顺序为16个核心各自分配一个Core_ID,如第一行从左到右核心的Core_ID依次为0-3,第二行从左到右依次为4-7,…,依次类推;第二个电源域(PWRID=1),第一行从左到右核心的Core_ID依次为16-19,第二行从左到右依次为20-23,…,依次类推,…,直到最后一个电源域(PWRID=15)的核心ID分配完成,这样最终完成256个核心的ID分配。可选地,Core_ID为多核系统的每个核心也可以按照该核心本身在多核阵列中的位置按顺序(即从左到右,从上到下)分配唯一的ID。
表1中的Priority表示各个核心的调度优先级,其可以预先根据每个核心的位置设定。如表1所示,各个核心的调度优先级Priority可以与其标识符Core_ID一一对应,甚至完全相同,如表1所示的调度优先级Priority为0-255,即Priority越小,调度优先程度越高。在一些实施例中,核心的Priority可以依照核心所在的(电源域对应的)可调度核心子区域在多核阵列或其可调度核心区域中的位置顺序(即首先横向从左到右、其次纵向从上到下的位置排列顺序)以及该核心在相应的可调度核心子区域中的位置顺序(即首先横向从左到右、其次纵向从上到下的位置排列顺序)来确定,以实现核心的集中管理。
表1中Assigned表示任务分配状态,即核心是否已被分配任务,其中Assigned默认为0,表示未分配任务;当某核心被核心调度平台330选中执行待分配任务时,此核心的Assigned将被置为1。当核心完成所分配的任务,恢复空闲状态时,Assigned会被再次清零。从核心调度平台330将Assigned设置为1到目标应用根据Assigned的值发送任务并进行处理,这个期间存在时间差,因此当Assigned变为1时核心可能尚未真正开始处理相应任务;同样,核心完成任务处理后,Assigned才会被清零,因此Assigned为0时核心已经完全释放。在任务执行前后及执行过程中,Assigned都为1,期间不会再有其他任务被分配到该核心,因此不会存在任务冲突。
表示1中的Load_level记录分配到核心上的软件任务的任务负载级别。它会在Assigned更新的时候同步更新,其将待执行任务的任务负载级别记录到核心状态记录表中被分配的核心所在行,并在此次任务执行期间保持不变。Load_level与Assigned是同步更新的,更是完全相关的。当Assigned为0时,Load_level被设置为Null(空),因为核心未分配任务时当然不可能存在相应的任务负载级别。在具体实现过程中,当核心未分配任务(即Assigned为0)时,被分配的任务负载级别Load_level可以设置为默认的初始值0,这里的“0”没有实际意义(例如它并不代表实际被分配的任务负载级别数值),仅仅是为了满足存储空间的需要而设置的初始值。因为Assigned=0时核心未分配任务,Assigned=0已经隐含地表明“被分配的任务负载级别Load_level”为空,因此这时Load_level的默认初始值0并不会被误认为“被分配的任务负载级别为0级”。只有当Assigned为1时,Load_level的取值才有实际意义,即表示“被分配的任务负载级别”的具体数值。
表1中PWRID表示多核系统中各个电源域的标识符,其被设定后不再变化。电源域的个数可根据多核系统的区域调度参数和每个电源域的电源域参数得到。如表1所示,区域调度参数为16*16,电源域参数为4*4,表示多核系统一共有16*16个核心,每个电源域对应的可调度核心子区域为4*4核心阵列区域,一共需要设置16个电源域,PWRID的范围就是0-15。如表1所PWRID=0的电源域为Core_ID为0-15的16个核心供电(即PWRID=0的电源域对应的可调度核心子区域包含Core_ID为0-15的16个核心),…PWRID=15的电源域为Core_ID为240-255的核心供电。
表1中PWR_off表示开关信号,即电源域是否被关断,其默认为1,表示电源域被关断(例如包括从电源域关断动作执行瞬间至开启动作执行之前的状态);0表示电源域被开启(例如包括从电源域开启动作执行瞬间到关断动作执行之前的状态),;PWR_off_done表示开关完成信号,即电源域是否完全开启或完全关断,0表示电源域未完全关断或已完全开启,1表示电源域未完全开启或已完全关断,PWR_off_done只有与PWR_off结合起来才能确切地得出电源域的供电状态。
在一些实施例中,可以基于PWR_off得到电源域的供电状态,例如步骤S230(电源域供电状态获取步骤)可以包括:获取所述多核系统的核心状态记录表;针对所述多个电源域中每一个电源域,响应于该电源域的开关信号为1,该电源域的供电状态被确定为关断状态;针对所述多个电源域中每一个电源域,响应于该电源域的开关信号为0,该电源域的供电状态被确定为开启状态。
在一些实施例中,可以根据PWR_off和PWR_off_done二者更精准地获得电源域供电状态。一般地,关断状态可以包括完全关断状态和掉电状态,开启状态包括完全开启状态和上电状态,因此,步骤S230可以进一步包括:若开关信号PWR_off为1且开关完成信号PWR_off_done为1,电源域的供电状态为完全关断状态,如表1中PWRID为15的电源域所示;若开关信号PWR_off为1且开关完成信号PWR_off_done为0,电源域的供电状态为掉电状态,如表1中PWRID为15的电源域所示;若开关信号PWR_off为0且开关完成信号PWR_off_done为0,电源域的供电状态为完全开启状态,如表1中PWRID为0的电源域所示;若开关信号PWR_off为0且开关完成信号PWR_off_done为1,电源域的供电状态为上电状态。
这样,可以基于核心状态记录表(表1)实时获取多核阵列中各个电源域的供电状态以及任务分配状态和调度优先级等信息。
在步骤S240(任务分配状态和调度优先级获取步骤)中,获取所述可调度核心区域中各个核心的任务分配状态和调度优先级。可调度核心区域中每一个核心的调度优先级是与该核心所在的可调度核心子区域(在可调度核心区域中)的位置排列顺序相关的。
根据本申请的构思,要想实现功率密度均衡的核心调度,需要在向核心分配任务之前获取可调度核心区域中各个待调度核心的任务分配状态。核心的任务分配状态可以指示该核心是否处于已分配任务状态,即工作状态。例如,当可调度核心区域中的某个核心处于已分配任务状态时,表明该核心已经被调度处理或准备处理相应任务,即处于工作状态,因而无法接纳新的任务分配;而若该核心处于未分配任务状态,则表明当前该核心处于空闲状态,可以接受新的任务分配。因此,在进行核心调度或任务分配之前,务必要得知各个待调度核心的当前任务分配状态,以避免出现核心调度混乱和任务冲突。
在一些实施例中,如图3B所示,任务分配组件332可以从核心状态记录表333中直接获取所需的各个核心的任务分配状态,因为,如表1所示,核心状态记录表333负责实时记录包括核心任务分配状态在内的各种实时状态信息。相应地,任务分配组件332也可以在核心调度或任务分配完成以及任务处理完成之后,将相应核心的任务分配状态发送至核心状态记录表333以更新相关信息。
进一步地,基于本申请的构思,为了基于分级任务分配模式和电源域的各个供电状态进行核心调度,需要获取多核阵列的可调度核心区域中各个核心的(例如预先确定或设定的)调度优先级。例如,在基于分级任务分配模式和电源域供电状态筛选出候选核心之后,可以基于预设的调度优先级,在候选核心中确定目标核心。例如调度优先级最高的候选核心可以被确定为目标核心。
多核阵列的可调度核心区域中各个核心的调度优先级可以表示在可调度核心区域中各个核心被调度执行目标应用发布的待执行任务的预设(固定)顺序或次序。在一些实施例中,为了实现核心的区域化电源管理,核心的调度优先级或顺序依赖于其所在的可调度核心子区域(即该核心的共享电源域对应的核心区域)的调度顺序,因此可以基于核心所在的可调度核心子区域在可调度核心区域中的位置排列顺序来确定该核心的调度优先级。例如,各个可调度核心子区域在可调度核心区域中的位置排列顺序可以被限定为:先横向从左到右的顺序、后纵向从上到下的顺序,这与相应的电源域的PWRID是一致的,即电源域的ID号可以表示相应的可调度核心子区域的位置排列顺序。
图4示出了根据本申请一些实施例的核心调度优先级示意图。在一些实施例中,步骤S240可以包括:
S241,根据可调度核心区域中每一个可调度核心子区域的位置排列顺序,确定每一个可调度核心子区域的第一调度顺序;以及
S242,至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级。
上述步骤S241中,第一调度顺序用于指示可调度核心子区域的调度优先级或调度次序。如图4中所示,在16*16的可调度核心区域中,按照电源域参数(4*4)被划分为16个可调度核心子区域(即图4中加粗黑色边框包围的4*4核心区域,分别对应于16个共享电源域)。如图4所示,按照位置顺序(即方格网络外边的横向箭头和纵向箭头所示:先从左向右,后自上而下的顺序),可调度核心子区域的第一调度顺序的序号0-15(图4中每个可调度子区域中数字所示),其与相应的电源域的PWRID一致。显然,对第一调度顺序而言,序号越小,调度优先级越高。在一些实施例中,S241可以包括:根据所述可调度核心区域中每一个可调度核心子区域的横向排列顺序和纵向排列顺序,确定每一个可调度核心子区域的第一调度顺序。如图4所示,各个可调度核心子区域0-15是依据首先根据横向排列顺序(从左到右),其次根据纵向排列顺序(自上而下)确定的第一调度顺序。
在确定了各个可调度核心子区域的第一调度顺序之后,如S242所示,需要基于此最终确定各可调度核心子区域内部具体每个核心的调度优先级。在一些实施例中,可以首先定义核心的第二调度顺序,用于指示同一个可调度核心子区域各个核心的内部调度次序;随后基于可调度子区域的第一调度顺序(外部调度次序)和区域内核心的第二调度顺序(内部调度次序)最终得到每个核心的调度优先级。其中第二调度顺序可以随机产生,也可以按照核心的位置排列(例如先从左到右,后从上到下)顺序创建。如图4所示,在0号可调度核心子区域中箭头所示的方向可以表示第二调度顺序对应的方向,即先从左到右,后从上到下。
在一些实施例中,如图4所示,步骤S242(针对所述可调度核心区域中每一个核心,至少根据该核心所在的可调度核心子区域的第一调度顺序,确定该核心的调度优先级)可以包括:根据每一个可调度核心子区域中各个核心的横向排列顺序和纵向排列顺序,确定每一个可调度核心子区域中各个核心的第二调度顺序;根据每一个可调度核心子区域的第一调度顺序和该可调度核心子区域中各个核心的第二调度顺序,确定每一个可调度核心区域中各个核心的调度优先级。
具体地,可以按照核心状态记录表333中Priority的记录,根据电源域对应的可调度核心子区域的第一调度顺序对各个可调度子区域排序,随后按照排序结果,依次为每个可调度子区域中的核心设定调度优先级序号;其中,在每个可调度子区域中,依据第二调度顺序分配调度优先级序号。例如,如图4所示,按照第一调度顺序一次为0-15号可调度核心子区域分配调度优先级序号:首先,按照第二调度顺序,为0号可调度子区域中的核心分配调度优先级序号0-15,其次为1号可调度子区域中的核心分配调度优先级序号16-31,以此类推,…,直至为15号可调度子区域中的核心分配调度优先级序号240-255。
可选地,核心的调度优先级也可以直接定义为“第一调度顺序+第二调度顺序”。当进行调度优先级排序时,首先依据第一调度顺序排序,在第一调度顺序相同时再依据第二调度顺序排序,从而可以唯一确定可调度核心区域中各核心的调度次序。如图4所示,例如1号可调度子区域的第一调度顺序序号为1,而其中按照位置排列顺序,左上角的核心的第二调度顺序(例如按照先横向后纵向的顺序)被确定为0,则该核心的调度优先级的值可以被定义为1+0,其中加号前面的1代表第一调度顺序(即区域调度次序),而0表示第二调度顺序(即内部调度次序)。
如图3B所示,任务分配组件332可以从核心状态记录表333中直接获取各个核心的调度优先级,因为调度优先级可以依据核心阵列各个核心所在的可调度核心子区域的位置预先设定,因此预设的调度优先级可以预先固定存储在核心状态记录表333中。可选地,当预先设定的调度优先级预先存储在应用交互接口331中时(图3B中未示出),任务分配组件332也可以从应用交互接口331获取各个核心的调度优先级。
在步骤S250(目标核心确定步骤)中,根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级,从可调度核心区域中确定用于处理待执行任务的目标核心。
如图3B所示,步骤S250可以在任务分配组件332中的目标核心确定模块332a中完成,即根据从任务负载级别寄存器LOAD_LEVEL获取的待执行任务的任务负载级别、(例如从核心状态记录表333)获取的多核阵列中(尤其是可调度核心区域中)核心的任务分配状态、调度优先级和共享电源域供电状态、以及从任务分配模式获取模块332b得到的分级任务分配模式,从可调度核心区域中选取适合用于处理待执行任务的目标核心。
在一些实施例中,基于分级任务分配模式的核心调度方案可以分别基于共享电源域的供电状态、待执行任务的任务负载级别、分级任务分配模式以及核心阵列的任务分配状态等不同因素在可调度核心区域中进行层层筛选,以得到符合预期的目标核心。
具体地,为了突出电源域供电状态对核心调度策略的重要影响(即尽可能将待执行任务分配至电源域开启的核心区域中的核心,以避免重新开启新电源域造成的各种能量损耗和效率损失),任务分配组件332可以首先根据多核系统的各个共享电源域的供电状态,从可调度核心区域中筛选出处于开启状态的电源域对应的可调度核心子区域,作为后续筛选基础的候选核心区域;随后,根据可调度核心区域中各核心的任务分配状态,从候选核心区域中筛选出处于空闲状态(即任务分配状态为未被分配任务)的核心,构成的第一候选核心集合;接着,根据分级分配模式所包括的可调度核心区域中各核心与预期分配的任务负载级别的对应关系(即待分配的多个任务负载级别在核心阵列的可调度核心区域的各个核心位置中的对应排布),从第一候选核心集合中筛选预期分配的任务负载级别与待执行任务的任务负载级别匹配的核心,构成的第二候选核心集合;最后,根据可调度核心区域中各个核心的调度优先级,从第二候选核心集合中选取目标核心,例如选取调度优先级最高的核心作为目标核心。
在根据本申请一些实施例的用于多核系统的核心调度方法中,首先,使用了任务分级处理方式,即待执行任务按照任务复杂程度划分任务负载级别,简化了待执行任务的运算或执行复杂度的表征,进而简化了后续的任务分配或核心调度过程,提升了工作效率;其次,利用分级任务分配模式(即按照任务负载级别调度或分配用于处理该任务的核心),即多核阵列中核心与预期分配的任务负载级别的对应关系,可以实现不同负载级别任务在核心阵列的可调度核心区域中各个核心位置上的均衡分配或排布(例如较高负载级别的任务对应的核心和较低负载级别的任务对应的核心交错排布等),进而使得多核系统的整体或局部核心阵列中的功率密度相对均衡,避免了因高负载任务过度聚集在邻近多个核心上造成的核心阵列的局部高负荷状态、功率密度过大和区域高发热问题,有效提升了多核系统的整体性能。
另外,在使用分级任务分配模式实现不同任务负载级别在多核阵列中均衡排布的同时,考虑到在使用区域化电源(共享电源域)的多核系统中,将多核系统中共享电源域供电状态作为核心调度策略确定的一个重要影响因素(例如将待执行任务优先分配到处于开启状态的电源域对应的核心),从而减少了电源域开通的数量,有效降低了多核系统的整体能耗,并且避免了频繁开启新电源域造成的效能损耗,提高了待执行任务的执行效率,进而显著提升了多核系统的整体工作效率。此外,基于电源域供电状态的任务分配方式,使得各个分级任务优先集中分配到开启状态的电源域对应的可调度核心子区域(例如同一个电源域的供电区域),有利于针对被调度核心的集中统一管理,尤其是区域化电源管理,显著提升了多核系统的核心管理效率,同时有利于通过统一区域化电源管理(例如在被调度核心区域各核心空闲时采用电源域休眠模式)减少(例如由于频繁开关电源造成的)能源消耗、电源寿命损耗以及工作效率损耗。
图5A示意性示出了根据本申请一些实施例的核心调度方法中目标核心确定步骤的示例流程。图5B示意性示出根据本申请一些实施例的核心调度方法原理示意图。
如图5A所示,步骤S250(目标核心确定步骤)可以包括步骤S251-S254。下面结合图5B详细介绍上述步骤。
如图5B所示,多核系统的核心阵列被示出为16*16的方格阵列,其中的各个行从上到下被标记为0-15,各个列从左到右也被标记为0-15;阵列中每一个方格代表一个核心位置,每个方格中的数字代表该核心位置对应的预期分配的任务负载级别,因此图5B所示的包含数字的方格阵列可以表示多核系统的可调度核心区域中各核心与预期分配的任务负载级别的对应关系,即分级任务分配模式。如图5B所示,可调度核心区域中各个核心对应的待分配的分级任务包括3个级别的任务,即0级任务、1级任务、2级任务
如图5B所示,黑色加粗边框围成的各个4*4的区域为电源域对应的可调度核心子区域,其中省略号代表省略了方格中的数字(即对应的任务负载级别);带箭头的可调度核心子区域表示对应的共享电源域尚未通电(即处于关断状态),其他可调度核心区域已经开启(处于开启状态);箭头方向表示核心的第二调度顺序(可调度子区域内部调度顺序),即横向从左到右、纵向从上到下地为待执行任务调度分配核心。
如图5B所示,为了清楚起见,电源域处于关断状态的可调度核心子区域(包含箭头的4*4方格阵列)中的各个方格并未标记核心对应的代表预期分配的任务负载级别的数字,但事实上每个方格对应的核心都应当依据分级任务分配模式而具有相应的预期分配的任务负载级别。如图5B所示,方格阵列中,具有点状填充图案的方格表示对应的核心处于已分配任务状态(即工作状态),而无填充图案的方格表示对应的核心处于未分配任务状态(即空闲状态)。
在步骤S251中,根据多个电源域的供电状态,从多个可调度核心子区域中选取至少一个候选可调度核心子区域,使得每一个候选可调度核心子区域对应的电源域的供电状态处于开启状态。
如图5B所示,在16*16的可调度核心区域的对应于各个共享电源域的16个4*4的可调度核心子区域中,已经通过例如核心状态记录表333获取各个电源域供电状态如下:除了带箭头的最后一排的三个可调度子区域处于关断状态之外,其他13个可调度子区域对应的电源域都处于开启状态。因此,在图5B所示的多核阵列的可调度核心区域中,可以选择位置排列(即先横向从左至右,后纵向自上而下)在前的13个电源域开启的可调度核心子区域,作为候选可调度核心子区域。即优先选择这13个可调度核心子区域中的核心作为目标核心。
在步骤S252中,根据所述可调度核心区域中各个核心的任务分配状态,从至少一个候选可调度核心子区域中确定第一候选核心集合,使得第一候选核心集合中每一个核心处于未分配任务状态。
在得到(处于电源域开启状态的)候选可调度核心子区域之后,可以首先根据可调度核心区域中各个核心的任务分配状态进行再次筛选,从中筛查出处于未分配任务状态的核心。如图5B所示,在13个候选可调度核心子区域中,大部分方格都具有点状填充图案,即对应的核心处于已分配任务状态(即工作状态),如可调度核心子区域501中所有核心都处于已分配任务状态;只有三个可调度核心子区域502、503和504中包含未分配任务状态(即空闲状态)的核心(对应方格无填充图案),其中它们各自包含3个、3个和9个处于空闲状态的核心,可供分配任务。因此,这些处于空闲状态的15个核心就构成了第一候选核心集合。
在步骤S253中,根据分级任务分配模式,从第一候选核心集合中确定与待执行任务的任务负载级别匹配的第二候选核心集合。
在将目标核心的选取范围缩减为第一候选核心集合之后,可以根据所获取的(预先设定的)分级任务分配模式来从中选取(对应的预期分配的任务负载级别)与待执行任务的任务负载级别的一致的核心,因为目标核心必须满足分级任务分配模式所包含的多核阵列中各核心与待分配的多个任务负载级别之间的(固定的)对应关系。如图5B所示,在第一候选核心集合(即可调度核心子区域502、503和504中的无填充图案的核心构成的集合)中,分级任务分配模式如下:区域502中的三个候选核心对应的任务负载级别分别为0、0、1,区域503中的三个后续核心对应的任务负载级别分别为1、2、0,区域504中的9个后续核心对应的任务负载级别分别为0、0、0、1、0、0、2、0、1。假设待执行任务的任务负载级别为2级,只有区域503和504中的各一个候选核心对应的任务负载级别(为2级)与其匹配,即区域503中第3排第3列的核心和区域504中第4排第2列的核心,因此,这两个核心构成第二候选核心集合。
在步骤S254中,根据可调度核心区域中各个核心的调度优先级,从第二候选核心集合中选取目标核心。
在得到第二候选核心集合之后,可以进入最终的核心筛选,即利用预先确定或获取的核心调度优先级从第二候选核心中选取目标核心。如图5B所示,第二候选核心集合中的两个核心(即区域503中第3排第3列的第一候选核心和区域504中第4排第2列的第二核心)中,各自的调度优先级可以根据所在可调度子区域503和504的第一调度顺序确定。根据图4所示的调度优先级示意图,按照位置排列顺序,区域503的第一调度顺序在区域504之前,因此,相应的第一候选核心的调度优先级高于第二候选核心,于是可以将第一候选核心(即位于可调度核心子区域503的第3排第3列的核心)选为目标核心。可选地,如果第二候选核心集合中的两个核心位于同一个可调度核心子区域(图中未示出),则表示第一调度顺序相同,这时可以根据两个核心(基于位置排列顺序的)第二调度顺序确定调度优先级,即排在前面的调度优先级较高,因而将会被选为目标核心。
图5C示意性示出了根据本申请一些实施例的核心调度方法中目标核心确定步骤的示例流程。
根据图5B所示的目标核心确定步骤的示例流程,可以依次基于各个电源域的供电状态、各个核心任务分配模式、分级任务分配模式以及核心调度优先级对可调度核心区域的核心进行层层筛选,最后得到符合条件目标核心。然而,图5B所示的各个步骤的执行实际上是有条件的,例如在S251中,多核系统的可调度核心区域中必须存在正在开启的电源域,否则无法实现针对电源域开启的核心进行任务优先分配;又如,在存在开启电源域的可调度核心子区域的情况下,如果其中的各个核心的任务分配状态都处于已分配任务状态(即工作状态),也就是说没有空闲核心,也无法完成优先针对电源域开启的核心进行任务分配;再如,即使在电源域开启的可调度核心子区域中存在空闲的核心,但是如果分级任务负载模式所指示的空闲核心对应的任务负载级别都与待执行任务的任务负载级别不匹配,也无法实现基于电源域开启状态的核心优先调度。
基于上述分析,考虑到意外情况,即可调度核心区域不存在开启状态的电源域(例如针对多核系统的核心调度开始时)、开启状态的所有电源域对应可调度核心区域的所有核心都处于工作状态或都适合承载待处理任务时(即负载级别与待执行任务不匹配),这时可以选择电源域未开启的可调度核心子区域作为候选核心区域,随后根据核心调度优先级、分级任务分配模式以待执行任务的任务负载级别来筛选目标核心。需要注意,这里可以不考虑核心的任务分配状态,因为未开启电源域的可调度核心子区域中各个核心都必然处于未分配任务(空闲)状态。可选地,在目标核心筛选时也可以考虑周边核心的任务分配状态(例如与电源域关断的可调度核心子区域相邻的电源域开启的可调度核心子区域中的核心的任务分配状态)。
如图5C所示,步骤S250(目标核心确定步骤)可以包括:
S510,根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级中至少一个,判断第一预设条件是否被满足,其中第一预设条件包括多个电源域中每一个电源域都处于关断状态;
S520,响应于第一预设条件未被满足,根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级中至少一个,判断第二预设条件是否被满足,其中第二预设条件包括:所述多个电源域包括至少一个处于开启状态的第一电源域,且每一个第一电源域对应的可调度核心子区域中的各个核心都处于已分配任务状态;
S530,响应于第二预设条件未被满足,根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级中至少一个,判断第三预设条件是否被满足,其中第三预设条件包括:所述多个电源域包括至少一个处于开启状态的第二电源域,且每一个第二电源域对应的可调度核心子区域中处于未分配任务状态的每一个核心对应的任务负载级别都与所述待执行任务的任务负载级别不匹配;转到图5A所示的S251-S254
S540,响应于第一预设条件、第二预设条件、第二预设条件中至少一个被满足,根据所述多个电源域的供电状态,从多个可调度核心子区域中选取至少一个候选可调度核心子区域,使得每一个候选可调度核心子区域对应的电源域的供电状态处于关断状态。
S550,根据所述可调度核心区域中各个核心的调度优先级、分级任务分配模式以及待执行任务的任务负载级别,从所述至少一个候选可调度核心子区域中确定目标核心。
如S510所述,第一预设条件涉及可调度核心区域所有电源域全部关断的供电状态。若所获取的多个电源域的供电状态满足第一预设条件,则说明可调度核心区域中不存在处于开启状态的电源域,因此,无法优选考虑对电源域开启的可调度核心子区域中的核心进行调度。这样,只能转到S540,选取关断状态的电源域对应的可调度核心子区域作为下一步目标核心的筛选基础。如果多个电源域的供电状态不满足第一预设条件,即存在处于开启状态的电源域,转到S520,判断第二预设条件。
如S520所述,第二预设条件涉及电源域开启的可调度核心子区域中核心的任务分配状态都处于已分配状态。若第二预设条件被满足,说明无法在电源域开启的可调度核心子区域中找到空闲核心,这样也只能考虑关断状态的电源域对应的可调度核心子区域,即只能转到S540;否则,转到S520,判断第三预设条件。
如S530所述,第三预设条件涉及电源域开启的可调度核心子区域中处于未分配任务状态的核心对应的任务负载级别与待执行任务的任务负载级别不匹配。如果第三预设条件被满足,则由于无法在电源域开启的可调度核心子区域中找到符合分级任务分配模式的核心,也不得不在电源域关断的可调度核心子区域中筛选目标核心,即随后转到S540;否则,说明第一、第二、第三预设条件都没有被满足,即不存在(如这三个预设条件那样的)特殊情况,因此可以按照正常情况实施图5A所示的步骤S251-S254。
如S540所述,在第一至第三预设条件中至少一个得到满足时,可以选取处于关断状态的至少一个电源域对应的至少一个可调度核心区域作为候选可调度核心区域。如图5B所示,假设待执行任务的任务负载级别为3级,而13个可调度核心区域中与3级任务对应的核心都被占用(即处于已分配任务状态或工作状态),则可以考虑选择电源域未开启的可调度核心子区域(如图中带箭头的三个区域,例如可调度核心子区域505)作为候选可调度核心子区域。
如S550所述,在选择了电源域关断或未开启的可调度核心子区域作为候选可调度核心子区域之后,可以根据可调度核心区域中各个核心的调度优先级、分级任务分配模式以及待执行任务的任务负载级别,对所述候选可调度核心子区域再进行两次筛选,以确定目标核心。如图5B所示,按照核心调度优先级,尤其是可调度核心子区域的第一调度顺序,首选可调度核心子区域505,只有其中包含与待执行任务的任务负载级别一致的核心,就可以依据第二调度顺序直接确定目标核心。具体确定方法与图5A所示的步骤S253-S254类似,这里不再赘述。
图6A-6E示意性示出根据本申请一些实施例的分级任务分配模式。如图6A-6E所示,多核系统的核心阵列被示出为16*16的方格阵列,其中的各个行从上到下被标记为0-15,各个列从左到右也被标记为0-15;阵列中每一个方格代表一个核心位置,每个方格中的数字代表该核心位置对应的预期分配的任务负载级别,因此图6A-6E所示的包含数字的方格阵列可以表示多核系统的可调度核心区域中各核心与预期分配的任务负载级别的对应关系,即分级任务分配模式。可选地,如图6A-6E所示,图中加粗的黑色边框包围的4*4方格区域为共享电源域对应的可调度核心子区域,其第一调度顺序可以与位置排列顺序一致(即横向从左到右、纵向从上到下),可调度子区域中的箭头表示核心的第二调度顺序,即横向从左到右、纵向从上到下地为待执行任务调度核心。如图所示,基于第一和第二调度顺序可以确定核心的调度优先级。
在一些实施例中,在S220中所获取的分级任务分配模式中,可调度核心区域可以包括与预期分配的多个任务负载级别一一对应的多类核心区域,每类核心区域包括多个不相邻的子区域,每个子区域包括一个核心或相邻的至少两个核心。本文中的两个核心的“相邻”可以理解为物理位置紧邻,即二者之间不存在其他核心;而三个以上核心的“相邻”可以理解为这些核心中的任一个核心与这些核心中至少一个其他核心紧邻(即相互之间不存在另外的核心)。例如,在多核阵列中,多个核心“相邻”主要包括的横向或纵向相邻。需要注意,这里的每类核心区域的子区域与可调度核心子区域是不同的概念,前者是一个或至少两个相邻的相同类别(即对应相同任务负载级别)的核心构成的集合,后者是指与共享电源域对应的核心区域(即该共享电源域为其供电的核心集合)。
如图6A所示,可调度核心区域包括四类核心区域,即虚线所示的0级区域、1级区域、2级区域、3级区域,每类区域包括多个不相邻的子区域,即同类区域是不相邻的,每个子区域仅包括一个核心。换言之,任意相邻的两个区域都是不同类的区域。如图6A所示,在可调度区域的第一行,0级区域包括4个子区域,1级子区域包括2个子区域,2级区域包括1个子区域,3级区域包括1个子区域。如图6A-6D所示,同类区域的各个子区域在可调度区域阵列的横向和纵向都是不相邻的,其间间隔着一个或多个其他类区域,如图6A中0级区域的邻近子区域之间间隔着1级区域或2级区域或3级区域。
如图6D所示,可调度核心区域包括三类核心区域,即虚线所示的0级区域、1级区域、2级区域,其中同类区域不相邻;其中按照子区域核心数量划分,1级区域和2级区域的各个子区域仅包括一个核心(即对应于负载级别1的核心或对应于负载级别2的核心),但0级区域包括四种子区域,即虚线所示的分别包括1个、3个、4个、5个核心的子区域,其中对应于多个核心的子区域中各个核心是相邻布置的(即两两依次相邻),即这些子区域可以看连通区域。
如图6A-6D所示,这种同类子区域(即对应于相同任务负载级别的核心构成的核心区域)不相邻排布方式能够将相同负载级别的任务分配给物理位置相对分散的多个核心,从而避免由于大量相同的负载级别(尤其是高负载级别)任务过度集中地分配给相互邻近的核心造成的功率密度失衡。
在一些实施例中,图6A-6E所示的分级任务分配模式可以是预先确定的(固定的))候选分级任务分配模式。核心调度平台330在接收到执行任务请求时,可以依据任务分级参数从这些候选的分级任务分配模式中选择合适的一个来实现核心调度。
图7示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的流程图。如图7所示,除了步骤S210-250之外,在步骤S220(分级任务分配模式获取步骤)之前,图2所示的根据本申请一些实施例的用于多核系统的核心调度方法可以进一步包括:
S260,区域调度参数获取步骤:获取所述目标应用对应的区域调度参数,所述区域调度参数基于所述目标应用运行所需的核心数量确定;
S270,可调度核心区域确定步骤:根据区域调度参数,从多核系统的核心阵列中确定可调度核心区域。
根据本申请的核心调度方法的构思,在确定分级任务分配模式之前增加可调度核心区域筛选过程,以简化任务分配过程、提升工作效率、降低能耗。例如可以基于目标应用运行所需的核心数量确定多核系统的可调度核心区域,即在多核系统的多核阵列320中划定或筛选出一个核心区域作为用于处理当目标应用310发布的各种任务的可调度核心区域。
目标应用对应的区域调度参数可以对应于目标应用运行所需的核心数量,并且因此可以用于限定多核系统的可调度核心区域的核心数量、面积等,进而确定可调度核心区域。特别地,区域调度参数可以直接定义为大于或等于目标应用运行所需的核心总数。在一些实施例中,目标应用310可以根据其具体应用场景预测处理其发布的各个任务所需的处理器核心总量。
如图3B所示,在核心调度开始之前,可以利用应用交互接口331中的区域调度参数寄存器MC_SIZE从目标应用310接收并存储区域调度参数,并将其发送至可调度核心区域确定模块332c以基于该区域调度参数确定多核系统的可调度核心区域的大小和形状。可选地,任务执行请求进一步可以包括区域调度参数,这样步骤S260(区域调度参数获取步骤)可以简化为:从任务执行请求中获取所述区域调度参数。
例如区域调度参数可以用目标应用运行所需的核心的数量定义,例如区域调度参数为64,则对应的可调度核心区域为包括64个核心的区域(可以是连续的或不连续的区域),具体地可以在多核阵列320中随机选取64个或更多个核心构成可调度核心区域。可选地,区域调度参数也可以包括X-size和Y-size(其单位可以是长度单位或者可以是核心个数),分别用于限定可调度核心区域或阵列的横向和纵向尺寸或横向和纵向核心个数,从而可以确定矩形的可调度核心区域。
在图6A-6E的多核阵列中,标记数字(含省略号和箭头所涵盖)的方格构成多核阵列的可调度核心区域。图6A示出了包含作为多核阵列一部分的可调度核心区域的分级任务分配模式。如图6A所示,在16*16核心阵列中,当区域调度参数X-size和Y-size可以分别等于8个核心时,对应的可调度核心区域可以选择核心阵列左上角的大小为8*8的核心区域(即整个核心阵列的第0行至第7行和第0列至第7列对应的包括64个核心的连通的阵列区域)。如图6A所示,在选定8*8可调度核心区域(被示出为白色)之后,可以直接将16*16多核阵列中除可调度核心区域之外的其他区域(被示出为非白色)的所有核心的电源关断,以充分节省能源、降低功耗。
显然,图6B-6E所示的分级任务分配模式中的可调度核心区域均为多核系统的整个多核阵列,即16*16阵列。如图6B-6E所示,在16*16核心阵列中,当区域调度参数等于256个核心或者X-size和Y-size分别等于16个核心时,整个多核阵列核心区域被选定为可调度核心区域。
在一些实施例中,分级任务分配模式的获取可以根据目标应用相关的预期分配的多个任务负载级别来进行。例如,在预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别的情况下,分级任务分配模式可以为第一分级任务分配模式,在第一分级任务分配模式中,可调度核心区域包括与第一任务负载级别对应的第一类核心区域以及与第二任务负载级别对应的第二类核心区域中,且第一类核心区域中的每个子区域和第二类核心区域中的每个子区域均包括一个核心。
图6B示出根据本申请一些实施例的第一分级任务分配模式。如图6B的方格阵列所示,多核系统的可调度核心区域就是整个核心阵列区域,可调度被划分为两类核心区域:第一类核心区域,即对应于0级任务负载级别(即第一任务负载级别)的0级区域;以及第二类核心区域,即对应于1级任务负载级别(即第二任务负载级别)的1级区域。换言之,方格阵列中标记为0的核心位置对应于0级任务,标记为1的核心位置对应于1级任务。如图6B的虚线所示,第一类核心区域(0级区域)的子区域仅包括一个核心(即0级核心),第二类核心区域(1级区域)的子区域也包括一个核心(即1级核心)。在一些实施例中,第二任务负载级别(即1级)大于第一任务负载级别(即0级),即前者的任务复杂程度要高于后者。
如图6B所示,0级区域(即第一类核心区域)的子区域和1级区域(即第二类核心区域)的子区域在核心阵列中相互穿插、交错排布,数量均等,分别占据多核阵列的50%。这样,图6B所示的第一分级任务分配模式可以支持两种预期分配的任务负载级别(例如0和1)的核心调度,即将0级区域对应的核心调度执行0级任务或将0级任务分配给0级区域中的核心,而将1级区域对应的核心调度执行1级任务或将1级任务分配给1级区域中的核心。因此,当基于任务分级参数确定的预期分配的多个任务负载级别包括两个级别(第一任务负载级别和第二任务负载级别)时,可以选取如图6B所示的第一分级任务分配模式。
如图6B所示,第一分级任务分配模式利用两种不同负载级别(即0级和1级)的任务在核心阵列中的交错排布成功地将多个较高任务负载级别(即1级)或计算复杂度的任务用较低任务负载级别(即0级)任务间隔开,避免了高负载任务在核心阵列中的过度聚集分布,有效地提升了多核系统的功率密度的均衡性。
在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别的情况下,分级任务分配模式可以为第二分级任务分配模式,在第二分级任务分配模式中,可调度核心区域包括与第一任务负载级别对应的第三类核心区域、与第二任务负载级别对应的第四类核心区域以及与第三任务负载级别对应的第五类核心区域,第四类核心区域中的各子区域与第五类核心区域中的各子区域不相邻。可选地,第二任务负载级别和第三任务负载级别中的每一个对应的任务复杂程度都大于第一任务负载级别对应的任务复杂程度。可选地,第四类核心区域的核心数量和第五类核心区域的核心数量中的每一个都小于第三类核心区域的核心数量。
图6C和6D示出了根据本申请一些实施例的第二分级任务分配模式。如图6C和6D所示,多核系统的可调度核心区域就是整个核心阵列区域,多核系统的核心阵列(即图中的方格阵列)被划分为三种核心区域:第三类核心区域,即对应于0级任务负载级别(第一任务负载级别)的0级区域;第四类核心区域,即对应于1级任务负载级别(第二任务负载级别)的1级区域;以及第五类核心区域,对应于2级任务负载级别(第三任务负载级别)的2级区域。换言之,方格阵列中标记为0的方格(即核心位置)对应于0级任务,标记为1的方格对应于1级任务,标记为2的方格对应于2级任务。如图6C和6D所示,第四类核心区域(1级区域)中的子区域和第五类核心区域(2级区域)中的子区域都仅包括一个核心,且这两类区域是不相邻的,其1级区域和2级区域的各个子区域彼此之间都是被一个或多个0级区域的子区域隔开的。这样,图6C和6D所示的第二分级任务分配模式可以支持三种预期分配或待分配的任务负载级别(例如0、1和2)的核心调度,即将0级区域对应的核心调度执行0级任务或将0级任务分配给0级区域中的核心,将1级区域对应的核心调度执行1级任务,将2级区域对应的核心调度执行2级任务。可选地,第三任务负载级别和第二任务负载级别都大于第一任务负载级别。
因此,当基于任务分级参数确定的预期分配的多个任务负载级别包括三个级别(第一任务负载级别、第二任务负载级别和第三任务负载级别)时,可以选取如图6C或6D所示的第二分级任务分配模式。如图6C和6D所示,在第二分级分配分配模式中:0级区域、1级区域和2级区域在多核阵列中是相互穿插交错排布的,尤其对应于较高负载级别的第四类核心区域(1级区域)与第五类核心区域(2级区域)不相邻,使得1级区域的各子区域之间、2级区域各子区域之间以及1级子区域和2级子区域之间都是间隔分布的。例如图6C中两个2之间间隔着0和1,两个1之间间隔着0、2、0,1和2之间间隔一个0。这些的排布使得较高负载任务相对于较低负载任务更加分散地布置给多核阵列中的核心,避免了高负载任务过度集中造成的多核阵列功率密度失衡问题。
在一些实施例中,第二分级任务分配模式包括第一子模式,在第一子模式中:第三类核心区域中每一个子区域、第四类核心区域中每一个子区域以及第五类核心区域中每一个子区域均包括一个核心。可选地,在第一子模式中,在可调度核心区域的每一行和每一列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心以及第四类区域中的至少一个核心隔开。
图6C示出了第二分级任务分配模式的第一子模式。如图6C,0级核心区域、1级核心区域、2级核心区域中的各子区域都仅包括一个核心。如图6C所示,在第一子模式中,三种任务负载级别(即0级、1级、2级)在多核阵列中的分布顺序为:横向01020102,纵向02010201;从左上往右下的斜对角方向看,布置顺序为一排0级任务、一排1级任务,又一排0级任务,一排2级任务,然后重复。换言之,在图6C中,1级区域(即第四类核心区域)中的各个核心(即1级负载级别对应的核心)被0级区域(即第三类核心区域)中两个核心(即0级负载级别对应的核心)和2级区域(即第五类核心区域)的1个核心(即2级负载级别对应的核心)隔开,且2级区域(即第五类核心区域)中的各个核心(即2级负载级别对应的核心)被0级区域(即第三类核心区域)中两个核心(即0级负载级别对应的核心)和1级区域(即第四类核心区域)的1个核心(即1级负载级别对应的核心)隔开。
图6C所示的任务负载级别排布的目的是在位置邻近的核心上分配不同负载级别的任务且将较高负载级别(1级和2级)用较低负载级别(0级)隔开,以避免高负载任务过度聚集。在图6C所示的第二分级任务分配模式的第一子模式中,0级,1级和2级任务的比率为2:1:1,较低负载级别(0级)和较高负载级别(非0级,即1级和2级)的任务占比依然是各50%,其中1级和2级任务分别占据25%。这样既保证了高负载级别任务在核心阵列中的分散布置,又将其绝对数量控制在较低水平,从而确保多核阵列的可调度区域中相对均衡的功率密度。
在一些实施例中,第二分级任务分配模式包括第二子模式。在第二子模式中,在可调度核心区域的奇数行和奇数列中,第四类区域中的各核心被第三类区域中的一个或多个核心隔开,并且在可调度区域的偶数行和偶数列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心和第四类区域中的至少一个核心隔开可选地,在第二子模式中,第三任务负载级别对应的任务复杂程度大于第二任务负载级别对应的任务复杂程度,且第四类区域的核心数量大于或等于第五类区域的核心数量。
图6D示出了第二分级任务分配模式的第二子模式。如图6D中虚线框所示,第三类核心区域(0级区域)的子区域可以包括1个、3个、4个或5个核心,而第四类和第五类核心区域(1级区域和2级区域)的子区域仅包含1个核心。在第二子模式中,三种任务负载级别(即0级、1级、2级)在多核阵列中横向和纵向的分布顺序都为:00010001或02010201。如图6D所示,从左上往右下的斜对角方向看,第二子模式的布局顺序为:一排0级任务、一排1级任务、又一排0级任务、再一排1:1比例穿插排布的0级和2级任务。换言之,在图6D中,在多核阵列的奇数行和奇数列,1级区域(即第四类核心区域)中的各个核心(即1级负载级别对应的核心)被0级区域(即第三类核心区域)中三个核心(即0级负载级别对应的核心)隔开;在多核阵列的偶数行和偶数列,1级区域(即第四类核心区域)中的各个核心(即1级负载级别对应的核心)被0级区域(即第三类核心区域)中两个核心(即0级负载级别对应的核心)和2级区域的1个核心(即2级负载级别对应的核心)隔开,且2级区域(即第五类区域)中的各个核心(即2级负载级别对应的核心)被0级区域中两个核心(即0级负载级别对应的核心)和1级区域的1个核心(即1级负载级别对应的核心)隔开。
与图6C相同的是,图6D所示的第二分级任务分配模式的目的也是:在位置邻近的核心上分布不同负载级别的任务且将1级和2级任务用0级隔开,以避免高负载任务聚集。在图6D所示的第二分级任务分配模式的第二子模式中,0级、1级和2级任务的比率为5:2:1,较低负载级别(0级)任务占比为62.5%,较高负载级别(非0级,即1级和2级)任务占比是37.5%。与图6C的第一子模式相比,图6D所示的第二子模式中较大负载级别的任务占比更低,适用于运算复杂度较高、会产生更高功率的任务或者对功率密度均衡度要求更高的使用场景。例如,当较低负载级别(0级)与较高负载级别(1级和2级)对应的任务复杂程度之间的差异相对较大时,需要用低级与高级任务之间的更大的数量差来弥补单个高级任务和单个低级任务之间的较大复杂程度之差。
在一些实施例中,任务分级参数可以包括目标应用所涉及或所包含的任务负载级别的总数,或者可选地包括各个任务负载级别对应的任务复杂度范围。因此,基于任务分级参数,不仅可以确定预期分配的多个任务负载级别(即级别个数),也可以确定这些任务负载级别之间的极差,级差可以指示多个任务负载级别之中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异。
因此,在确定分级任务分配模式时,不仅可以考虑目标应用对应的预期分配的多个任务负载级别的具体数量,还可以考虑各个级别对应实际任务复杂程度之间相对差(即极差),从而更合理地调度多核系统中的核心执行目标应用对应的任务。例如,首先依据预期分配的多个任务负载级别确定一个与级别个数对应的多个预选分配模式(例如图6C和6D所示的第二分级任务分配模式的第一子模式和第二子模式),随后根据这些负载级别之间的极差从预选分配模式确定或选取适合该极差的分配模式。
在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,分级任务分配模式为第二分级任务分配模式的第一子模式,极差指示所述预期分配的多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异。在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,分级任务分配模式为第二分级任务分配模式的第二子模式。可选地,第一极差阈值可以小于或等于第二极差阈值,第一极差阈值和第二极差阈值可以根据具体情况(例如目标应用的应用场景)确定。
如图6C和6D所示,第一和第二子模式都属于适用于任务负载级别个数为3的目标应用的第二分级分配模式,但是前者,低级(0级)与高级(1级和2级)任务占比相同,适合任务负载级别极差相对较小的目标应用的任务分配;后者,低级任务数量超过一半且分布较广,而高级任务数量较少,适合任务负载级别的极差相对较大的目标应用的任务分配。
图6E表示根据本公开一些实施例的默认分级任务分配模式。如图6E所示,在默认分级任务分配模式中,可调度区域中核心位置与预期分配的任务负载级别之间的对应关系仅包括核心位置与0级负载级别的对应关系。换言之,在默认分级任务分配模式中,无论目标应用的任务负载级别划分情况或目标应用对应的任务分级参数等于多少,预期分配的任务负载级别都将被统一设定为0级,即该模式实际上并未区分待分配的任务的任务负载级别。如图6E所示,由于其对任务等级不做区分,每个预期分配的任务均按0级负载级别(即第一任务负载级别)对待,相应的方格阵列整体上仅包括0级核心区域。可选地,默认分级任务分配模式的核心调度顺序可以依照各核心的位置顺序进行。如图6E所示,根据待执行任务请求顺序,可以依照横向从左到右,纵向从上到下的位置顺序依次调度用于处理各个待执行任务的核心(即为待执行任务分配核心),这样任何任务(无论其任务负载级别如何)可以使用这种模式实现顺序轮询的核心调度。
图8示意性示出根据本申请一些实施例的用于多核系统的核心调度方法的流程图。
在一些实施例中,在图2所示的目标核心确定步骤S250之后,可以基于电源域当前的供电状态来控制目标核心对待执行任务的处理过程。如图8所示,根据本申请一些实施例的用于多核系统的核心调度方法可以进一步包括:S810,任务处理过程控制步骤。
在步骤S810(任务处理过程控制步骤)中,根据电源域的供电状态,控制待执行任务的处理过程。
基于本申请的构思,在待执行任务被分配给目标核心之后,目标核心需要处理待执行任务,因此在进行任务处理之前需要确保目标核心的电源域是正常开启的(即完全开启的)。这样,为进行后续的任务处理正常开展,需要知道目标核心的共享电源域的当前供电状态,随后根据具体供电状态来进行相应的电源域控制,进而为目标核心进行待执行任务处理做好准备。实际上,多核系统的可调度区域中各个可调度核心子区域对应的共享电源域的供电状态已经在步骤S230获取了,因此,可以直接根据所获取的目标核心对应的共享电源域的当前供电状态来实现待执行任务的处理过程控制。
如图3B所示,电源管理组件334中的第一控制模块334a可以在从任务分配组件332获得目标核心ID之后,直接从核心状态记录表333中获取目标核心的电源域供电状态,从而基于电源域当前供电状态控制电源域和/或任务处理过程。例如,在目标核心确定之后,需要开启或保持开启相应的电源域,以便目标核心能够处理待执行任务。在电源域处于正常供电状态,即完全开启的情况下,可以直接指示目标核心执行任务。
在一些实施例中,在电源域默认完全关断的情况下,可以直接开启电源域,并等到电源域完全开启才命令目标核心处理待执行任务。例如,S810可以包括:响应于目标核心的电源域的供电状态为完全关断状态,开启目标核心的电源域并实时检测目标核心的电源域是否进入完全开启状态;以及响应于目标核心的电源域进入完全开启状态,指示目标核心处理所述待执行任务。
针对电源域上电或掉电状态期间,可以视情况进行电源域控制和任务处理。在一些实施例中,S810可以包括:响应于所述目标核心的电源域的供电状态为上电状态,实时检测所述目标核心的电源域是否进入完全开启状态;响应于所述目标核心的电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。在一些实施例中,S810还可以包括:响应于所述目标核心的电源域的供电状态为掉电状态,实时检测所述目标核心的电源域是否进入完全关断状态;响应于所述目标核心的电源域进入完全关断状态,开启所述目标核心的电源域并实时检测所述目标核心的电源域是否进入完全开启状态;以及响应于所述目标核心的电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。
如图8所示,根据本申请一些实施例的用于多核系统的核心调度方法可以进一步包括:
S820,任务分配状态获取步骤;以及
S830,电源域开关控制步骤。
在步骤S820(任务分配状态获取步骤)中,响应于待执行任务被目标核心处理完成,获取目标核心所在的可调度核心子区域中除了所述目标核心之外的每一个其他核心的任务分配状态。
一般地,在待执行任务处理完成之后,可以及时关断对应的电源域以避免能耗损失。但由于目标核心与至少一个其他核心共享电源域,因此在任务处理完成后需要了解该共享电源域中其他核心的任务分配和执行状态。例如,若共享电源域的所有其他核心都未被分配任务或任务处理完成,则表明其处于空闲状态,这时可以适时关断电源域以节省资源。在一些实施例中,可以直接从图3B所示的核心状态记录表(即表1)的参数Assigned(任务分配状态)得到核心的任务分配和执行情况,例如Assigned=1表示分配任务状态,即核心被占用;而Assigned=0表示未分配任务状态,即核心未被占用,处于空闲状态,可以分配任务。
在步骤S830(电源域开关控制步骤)中,基于每一个其他核心的任务分配状态,控制所述目标核心所在的可调度核心子区域对应的目标电源域的开关。
在获得目标核心的电源域所涉及的其他核心的任务分配状态之后,可以根据这些信息控制电源域。例如,当所有核心都空闲时,直接关断电源域;可选地,也可以在关断之前等待预设时间(即适当休眠)以应对间隔时间较小的任务流的分配处理,从而避免频繁开关电源域造成电源域损坏以及频繁上电和掉电影响整体的工作效率。如图3B所示,电源管理组件334中的第二控制模块334b,在从第一控制模块334a接收到目标任务完成的消息之后,可以基于从核心状态记录表333中获取的目标核心的电源域所涉及的所有核心(即与目标核心共享同一电源域的所有核心)的任务分配状态来得知这些核心是否都已经空闲;如果空闲则直接关断或等待预设休眠时间之后关断,否则继续保持电源域开启。
图9A示出了根据本申请一些实施例的用于多核系统的核心调度方法所涉及的核心电源域状态变化示意图。图9B和9C示出了根据本申请一些实施例的用于多核系统的核心调度方法实施过程中关键信号的示例波形图。图9B和9C的波形图中包括四个关键信号:Assigned、Assigned_done、PWR_off和PWR_off_done,其分别表示目标核心的任务分配状态信号,任务处理准备就绪信号、目标核心对应的电源域的开关信号、开关完成信号。如图9B所示,t1、t2、t3、t4和t5分别表示目标核心对应的电源域上电开始时刻、上电完成时刻、休眠计时开始时刻、掉电开始时刻和掉电完成时刻,T上电表示上电过程持续的时间段,T掉电表示掉电过程持续时间段,Tsleep表示预设的休眠阈值时间。如图9C所示,t6和t7分别表示电源域处于工作状态或空闲状态期间目标核心被分配任务时刻和任务完成时刻。
下面结合图9A-9C介绍根据本申请一些实施例的电源域状态的变化和区域化电源管理的过程。
如图9A所示,从电源域的状态(或供电状态)包括完全关断状态、上电状态、工作状态、空闲状态和掉电状态,其中工作状态和空闲状态可以合称为完全开启状态。如图9A所示,电源域的状态之间的转换过程如下:1:首先电源域默认处于关断状态;2. 响应于电源域内有核心(例如目标核心)被分配任务之后,电源域由完全关断状态进入上电状态;3. 上电完成之后,电源域由上电状态进入工作状态,相应核心准备就绪可以执行任务;4. 相应核心任务完成且电源域中所有其他核心未分配任务或任务完成(即空闲)时,电源域从工作状态转入空闲状态;5. 如果相应核心任务完成,但电源域中有其他核心在工作,电源域保持工作状态; 6. 电源域空闲状态期间没有核心被分配新任务,则空闲状态期满后,即休眠计时达到预设的Tsleep,电源域从空闲状态进入掉电状态;7.若电源域空闲状态期间有核心被分配新任务,电源域从空闲状态返回工作状态;8. 在掉电状态结束后,电源域返回到原始的关断状态,等待新任务分配在重启上述过程。
具体地,如图9A所示,目标核心对应的共享电源域(例如为目标核心和至少一个其他核心供电)在默认状态下是完全关断的以节约能耗(事实上多核系统中每个电源域都是如此)。如9B所示,例如在t1时刻之前和t5时刻之后,目标核心的电源域是关断的,这时PWR_off为1且PWR_off_done为1。
如图9A所示,假设目标核心是其对应的电源域中第一个被分配任务的核心,则随着目标核心被分配待执行任务,该电源域被开启,从而进入上电状态;如9B所示,在目标核心被分配任务的t1时刻,Assigned信号由0变为1,表示目标核心进入已分配任务状态;Assigned_done信号仍然为0,表示该目标核心尚未准备就绪;相应的电源域的PWR_off信号由1变为0,表示开启电源域,即进入上电状态,而PWR_off_done仍然为1,表示电源域并未完全开启,即上电未完成。
如图9A和9B所示,在电源域上电完成的t2时刻,该电源域完全开启,进入工作状态,PWR_off_done由1变为0,PWR_off保持为0;在t2时刻,Assigned信号保持1不变,Assigned_done信号由0变为1,表示目标核心已经准备就绪可以开始处理待执行任务。
如图9A和9B所示,在目标核心任务完成的t3时刻,Assigned和Assigned_done信号由1变为0,表示目标核心任务分配状态被更新为未分配任务,进入空闲状态(等待下一次任务分配);此时,如果相应电源域包含的其他核心都处于空闲状态(即任务分配状态为未分配任务),则目标核心对应的电源域从工作状态进入空闲状态,如9B所示,PWR_off和PWR_off_done保持0不变,开始休眠计时。
如图9A和9B所示,在目标核心任务完成时刻t3,如果相应电源域包含的其他核心存在非空闲状态(即任务分配状态为已分配任务),则电源域保持工作状态,PWR_off和PWR_off_done保持0不变;并且等到在电源域的所有核心都处于空闲状态(即任务分配状态为未分配任务)时,电源域才由工作状态进入空闲状态,PWR_off和PWR_off_done仍然保持0不变。尽管图9B未示出,在t3时刻至t4时刻的电源域空闲状态期间,如果目标核心被分配新任务,则Assigned和Assigned_done由0变为1,电源域再次进入工作状态,PWR_off和PWR_off_done仍然保持0。
如图9A和9B所示,当休眠计时达到预设的时间Tsleep时,即在休眠结束的t4时刻,电源域由空闲状态进入掉电状态;此时,目标核心如果没有被分配新任务,则Assigned和Assigned_done信号保持0,电源域的PWR_off由0变为1,表示电源域被关断,开始掉电,PWR_off_done仍然保持为0,表示尚未完全关断。尽管图9B中未示出,但在t4时刻至t5时刻的电源域掉电过程中,如果目标核心被分配新任务,则Assigned由0变为1,Assigned_done信号保持0,电源域将继续掉电过程,并在掉电结束的t5时刻重新上电,重复上述任务处理和电源域管理过程。
如图9A和9B所示,在电源域掉电完成的t5时刻,电源域回到最初的完全关断状态;此时,PWR_off_done由0变为1,表示掉电完成,电源域完全关断。
图9C示出了示出了根据本申请一些实施例的用于多核系统的核心调度方法在目标核心的电源域处于工作状态或空闲状态时的实施过程中关键信号的示例波形图。如图9C所示,在目标核心被分配任务完成的t6时刻,如果目标核心对应的电源域处于工作状态,Assigned和Assigned_done由0变为1,表示任务分配完成且目标核心准备就绪(因为无需上电过程)且PWR_off和PWR_off_done始终保持0;当目标核心完成任务的t7时刻,Assigned和Assigned_done由1变为0。此外,如图9C所示,在目标核心被分配任务的t6时刻,如果目标核心对应的电源域处于空闲状态,则电源域立即跳出空闲状态,恢复工作状态,但PWR_off和PWR_off_done始终保持0,因此电源域在空闲状态和工作状态,相应的波形图没有变化。
依据图9A和9B所示的目标核心任务分配状态以及相应的电源域状态变化过程,当待执行任务被分配给目标核心之后,可以通过下述步骤控制电源域以及待执行任务的处理:
1. 如果此时目标核心对应的电源域还没有上电,即PWR_off和PWR_off_done都为1,则进行开启电源域以进行区域上电;待上电完成后,将此电源域的PWR_off_done置0,并将此核心的Assigned_done置1,随后开始任务执行;
2. 如果此时目标核心对应的电源域已上电且供电正常,其PWR_OFF为0,PWR_off_done为0,则直接将核心的Assigned_done置1,开始执行任务;电源域PWR_OFF保持为0,PWR_off_done保持为0;
3. 如果此时目标核心对应的电源域开始掉电,即PWR_off为1,PWR_off_done为0,则先等待掉电完成,即在PWR_off为1,PWR_off_done为1后,再将PWR_OFF置0重新上电;上电完成后再将PWR_off_done置0,并将此核心的Assigned_done置1,开始任务执行。
在一些实施例中,响应于待执行任务被目标核心处理完成,S830(电源域开关控制步骤)可以包括:响应于每一个其他核心的任务分配状态都为未分配任务状态,关断目标电源域。在一些实施例中,S830可以包括:响应于每一个其他核心的任务分配状态都为未分配任务状态,启动电源域空闲状态计时;响应于电源域空闲状态计时达到预设时长,关断目标电源域。在一些实施例中,S830可以一步包括:在电源域空闲状态计时期间,实时获取目标核心所在的可调度核心区域中每一个核心的任务分配状态;响应于在电源域空闲状态计时期间目标核心所在的可调度核心区域中至少一个核心的任务分配状态为已分配任务状态,终止电源域空闲状态计时且保持所述目标电源域开启。
具体地,依据图9A和9B所示的目标核心任务分配状态以及相应的电源域状态变化过程,当分配给目标核心的待执行任务完成后,目标核心会处于空闲状态,将该核心的Assigned和Assigned_done置0;并且,如果电源域每个核心都处于空闲状态,电源域会进入空闲状态,保持PWR_off=0,PWR_off_done=0,开始进行休眠计时;随后,当空闲状态计时达到预先设定时间休眠时间阈值Tsleep时,此电源域开始掉电,PWR_off=1,PWR_off_done=0;掉电完成后PWR_OFF=1,PWR_off_done=1,电源域恢复默认状态,即完全关断状态。如果在休眠计时过程中,电源域所包含的某个核心被分配到任务,则休眠计时清零,电源域恢复正常工作状态,核心正常处理任务。
在图9B所示的关于核心的任务分配状态更新和电源域管控过程的关键信号波形图中,Assigned、Assigned_done、PWR_off和PWR_off_done信号是核心状态记录表所关注的信息;Assigned_done是中间信号,用于避免在目标核心在电源域掉电或上电未完成时对其进行调用以及由此造成错误。例如,Assigned_done在上电完成的t2时刻才被分别更新为1,可以确保目标核心在准备就绪时(即电源域完成上电时)才开启相应任务的处理过程,避免因目标核心准备不充分或上电未完成造成任务处理失败。
图10示意性示出了根据本申请一些实施例的用于多核系统的核心调度装置1000的示例框图。图10所示的核心调度装置1000可以对应于图1核心调度平台130。
如图10所示,用于多核系统的核心调度装置1000包括接收模块1010、第一获取模块1020、第二获取模块1030、第三获取模块1040以及确定模块1050。接收模块1010可以配置成从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别。第一获取模块1020可以配置成获取针对多核系统的分级任务分配模式,分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,预期分配的多个任务负载级别是与所述目标应用相关的。第二获取模块1030可以配置成获取分别用于向可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,每个可调度核心子区域包括至少两个核心。第三获取模块1040可以配置成获取可调度核心区域中各个核心的任务分配状态和调度优先级。确定模块1050可以配置成根据待执行任务的任务负载级别、分级任务分配模式、多个电源域的供电状态、以及可调度核心区域中各个核心的任务分配状态和调度优先级,从可调度核心区域中确定用于处理待执行任务的目标核心。
应注意,上述各种模块可以以软件或硬件或两者的组合来实现。多个不同模块可以在同一软件或硬件结构中实现,或者一个模块可以由多个不同的软件或硬件结构实现。
根据本申请一些实施例的用于多核系统的核心调度装置中,首先,通过任务分级方式向核心分配任务或调度核心,可以实现不同负载级别任务在核心阵列中的均衡分配或排布,进而有效控制核心阵列的功率密度,使其相对均衡;进一步地,在使用分级任务分配模式实现不同任务负载级别在多核阵列中均衡排布的同时,考虑到在使用区域化电源(共享电源域)的多核系统中,基于多核系统中共享电源域供电状态调整核心调度策略(例如将待执行任务优先分配到处于开启状态的电源域对应的核心),从而减少了电源域开通的数量,有效降低了多核系统的整体能耗,并且避免了频繁开启新电源域造成的效能损耗,提高了待执行任务的执行效率,进而显著提升了多核系统的整体工作效率。此外,基于电源域供电状态的任务分配方式,使得待执行的分级任务优先集中分配到开启状态的电源域对应的可调度核心子区域(即电源域对应的核心区域),有利于针对被调度核心的集中统一管理,尤其是区域化电源管理,显著提升了多核系统的核心管理效率。
图11示意性示出了根据本申请一些实施例的计算设备1100的示例框图。计算设备1100可以代表用以实现本文描述的各种装置或模块和/或执行本文描述的各种方法的设备。计算设备1100可以是例如服务器、台式计算机、膝上型计算机、平板、智能电话、智能手表、可穿戴设备或任何其它合适的计算设备或计算系统,其可以包括从具有大量存储和处理资源的全资源设备到具有有限存储和/或处理资源的低资源设备的各种级别的设备。在一些实施例中,上面关于图10描述的用于多核系统的核心调度装置1000可以分别在一个或多个计算设备1100中实现。
如图11所示,示例计算设备1100包括彼此通信耦合的处理系统1101、一个或多个计算机可读介质1102以及一个或多个I/O接口1103。尽管未示出,但是计算设备1100还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传送系统。系统总线可以包括不同总线结构的任何一个或组合,所述总线结构可以是诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。或者,还可以包括诸如控制和数据线。
处理系统1101代表使用硬件执行一个或多个操作的功能。因此,处理系统1101被图示为包括可被配置为处理器、功能块等的硬件元件1104。这可以包括在硬件中实现作为专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件1104不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质1102被图示为包括存储器/存储装置1105。存储器/存储装置1105表示与一个或多个计算机可读介质相关联的存储器/存储装置。存储器/存储装置1105可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置1105可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质1102可以以下面进一步描述的各种其他方式进行配置。
一个或多个I/O(输入/输出)接口1103代表允许用户向计算设备1100键入命令和信息并且还允许使用各种输入/输出设备将信息显示给用户和/或发送给其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)、网卡、接收机等等。输出设备的示例包括显示设备、扬声器、打印机、触觉响应设备、网卡、发射机等。
计算设备1100还包括核心调度策略1106。核心调度策略1106可以作为计算程序指令存储在存储器/存储装置1105中,也可以是硬件或固件。核心调度策略1106可以连同处理系统1101等一起实现关于图10描述的用于多核系统的核心调度装置1100的各个模块的全部功能。
本文可以在软件、硬件、元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”、“功能”等一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备1100访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
“计算机可读信号介质”是指被配置为诸如经由网络将指令发送到计算设备1100的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。作为示例而非限制,信号介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其它无线介质的无线介质。
如前所述,硬件元件1104和计算机可读介质1102代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
前述的组合也可以用于实现本文所述的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件1104体现的一个或多个指令和/或逻辑。计算设备1100可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件1104,可以至少部分地以硬件来实现将模块实现为可由计算设备1100作为软件执行的模块。指令和/或功能可以由例如一个或多个计算设备1100和/或处理系统1101执行/可操作以实现本文所述的技术、模块和示例。
本文描述的技术可以由计算设备1100的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机程序。例如,本申请的实施例提供一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行本申请的方法实施例中的至少一个步骤的程序代码。
在本申请的一些实施例中,提供了一种或多种计算机可读存储介质,其上存储有计算机可读指令,该计算机可读指令在被执行时实现根据本申请一些实施例的用于多核系统的核心调度方法。根据本申请一些实施例所述的用于多核系统的核心调度方法的各个步骤可以通过程序设计被转化为计算机可读指令,从而存储在计算机可读存储介质中。当这样的计算机可读存储介质被计算设备或计算机读取或访问时,其中的计算机可读指令被计算设备或计算机上的处理器执行以实现根据本申请一些实施例所述的方法。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点被包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序(包括根据所涉及的功能按基本同时的方式或按相反的顺序)来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,则可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路、具有合适的组合逻辑门电路的专用集成电路、可编程门阵列(Programmable Gate Array)、现场可编程门阵列(Field Programmable Gate Array)等。
本技术领域的普通技术人员可以理解上述实施例方法的全部或部分步骤可以通过程序指令相关的硬件完成,所述程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括执行方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
Claims (29)
1.一种用于多核系统的核心调度方法,其特征在于,所述方法包括:
从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;
获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,所述预期分配的多个任务负载级别是与所述目标应用相关的;
获取分别用于向所述可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,每个可调度核心子区域包括至少两个核心;
获取所述可调度核心区域中各个核心的任务分配状态和调度优先级;
根据所述待执行任务的任务负载级别、所述分级任务分配模式、所述多个电源域的供电状态、以及所述可调度核心区域中各个核心的任务分配状态,从所述可调度核心区域中筛选候选核心集合,使得所述候选核心集合中的每一个核心满足下述条件:对应的电源域的供电状态处于开启状态、处于未分配任务状态、在所述分级任务分配模式中与所述待执行任务的任务负载级别匹配;
响应于所述候选核心集合被筛选到,根据所述可调度核心区域中各个核心的调度优先级,从所述候选核心集合中确定用于处理所述待执行任务的目标核心。
2.根据权利要求1所述的方法,其特征在于,所述根据所述待执行任务的任务负载级别、所述分级任务分配模式、所述多个电源域的供电状态、以及所述可调度核心区域中各个核心的任务分配状态,从所述可调度核心区域中筛选候选核心集合,使得所述候选核心集合中的每一个核心满足下述条件:对应的电源域的供电状态处于开启状态、处于未分配任务状态、在所述分级任务分配模式中与所述待执行任务的任务负载级别匹配,包括:
根据所述多个电源域的供电状态,从所述多个可调度核心子区域中选取至少一个候选可调度核心子区域,使得每一个候选可调度核心子区域对应的电源域的供电状态处于开启状态;
根据所述可调度核心区域中各个核心的任务分配状态,从所述至少一个候选可调度核心子区域中确定第一候选核心集合,使得第一候选核心集合中每一个核心处于未分配任务状态;
根据所述分级任务分配模式,从第一候选核心集合中确定与所述待执行任务的任务负载级别匹配的第二候选核心集合,作为所述候选核心集合。
3.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
响应于所述候选核心集合未被筛选到,根据所述多个电源域的供电状态、所述可调度核心区域中各个核心的任务分配状态、所述分级任务分配模式以及所述待执行任务的任务负载级别中至少一个,判断预设条件是否被满足;
响应于所述预设条件被满足,根据所述多个电源域的供电状态,从多个可调度核心子区域中选取至少一个候选可调度核心子区域,使得每一个候选可调度核心子区域对应的电源域的供电状态处于关断状态;
根据所述可调度核心区域中各个核心的调度优先级、分级任务分配模式以及待执行任务的任务负载级别,从所述至少一个候选可调度核心子区域中确定目标核心,
其中,所述预设条件包括下述条件中至少一个:
所述多个电源域都处于关断状态;
所述多个电源域包括至少一个处于开启状态的第一电源域,且每一个第一电源域对应的可调度核心子区域中的各个核心都处于已分配任务状态;以及
所述多个电源域包括至少一个处于开启状态的第二电源域,且每一个第二电源域对应的可调度核心子区域中处于未分配任务状态的每一个核心对应的任务负载级别都与所述待执行任务的任务负载级别不匹配。
4.根据权利要求1所述的方法,其特征在于,所述获取所述可调度核心区域中各个核心的任务分配状态和调度优先级包括:
根据所述可调度核心区域中每一个可调度核心子区域的位置排列顺序,确定每一个可调度核心子区域的第一调度顺序;
至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级。
5.根据权利要求4所述的方法,其特征在于,所述至少根据每一个可调度核心子区域的第一调度顺序,确定每一个可调度核心子区域中各个核心的调度优先级,包括:
根据每一个可调度核心子区域中各个核心的横向排列顺序和纵向排列顺序,确定每一个可调度核心子区域中各个核心的第二调度顺序;
根据每一个可调度核心子区域的第一调度顺序和该可调度核心子区域中各个核心的第二调度顺序,确定每一个可调度核心区域中各个核心的调度优先级。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述多个可调度核心子区域中每一个可调度核心子区域均为方形核心阵列区域且包括相同数量的核心。
7.根据权利要求1所述的方法,其特征在于,在所述分级任务分配模式中,所述可调度核心区域包括与所述预期分配的多个任务负载级别一一对应的多类核心区域,每类核心区域包括多个不相邻的子区域,每个子区域包括一个核心或相邻的至少两个核心。
8.根据权利要求7所述的方法,其特征在于,所述分级任务分配模式是根据所述预期分配的多个任务负载级别获取的。
9.根据权利要求8所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别的情况下,所述分级任务分配模式为第一分级任务分配模式,
在第一分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第一类核心区域以及与第二任务负载级别对应的第二类核心区域,且第一类核心区域中的每个子区域和第二类核心区域中的每个子区域均包括一个核心。
10.根据权利要求8所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别的情况下,所述分级任务分配模式为第二分级任务分配模式,
在第二分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第三类核心区域、与第二任务负载级别对应的第四类核心区域以及与第三任务负载级别对应的第五类核心区域,第四类核心区域中的各子区域与第五类核心区域中的各子区域不相邻。
11.根据权利要求10所述的方法,其特征在于,第二任务负载级别和第三任务负载级别中的每一个对应的任务复杂程度都大于第一任务负载级别对应的任务复杂程度。
12.根据权利要求11所述的方法,其特征在于,所述可调度核心区域为阵列区域,并且在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第一子模式,所述极差指示所述预期分配的多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异,
在第一子模式中,在可调度核心区域的每一行和每一列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心以及第四类区域中的至少一个核心隔开。
13.根据权利要求11所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第二子模式,其中第一极差阈值小于或等于第二极差阈值,
在第二子模式中,在可调度核心区域的奇数行和奇数列中,第四类区域中的各核心被第三类区域中的一个或多个核心隔开,并且在可调度核心区域的偶数行和偶数列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心和第四类区域中的至少一个核心隔开。
14.根据权利要求10-13中任一项所述的方法,其特征在于,第三任务负载级别对应的任务复杂程度大于第二任务负载级别对应的任务复杂程度。
15.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
获取所述目标应用对应的区域调度参数,所述区域调度参数基于所述目标应用运行所需的核心数量确定;
根据所述区域调度参数,从所述多核系统的核心阵列中确定可调度核心区域。
16.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
响应于所述待执行任务被所述目标核心处理完成,获取所述目标核心所在的可调度核心子区域中除了所述目标核心之外的每一个其他核心的任务分配状态;
基于所述每一个其他核心的任务分配状态,控制所述目标核心所在的可调度核心子区域对应的目标电源域的开关。
17.根据权利要求16所述的方法,其特征在于,所述基于所述每一个其他核心的任务分配状态,控制所述目标核心所在的可调度核心子区域对应的目标电源域的开关,包括:
响应于所述每一个其他核心的任务分配状态都为未分配任务状态,关断所述目标电源域。
18.根据权利要求16所述的方法,其特征在于,所述基于所述每一个其他核心的任务分配状态,控制所述目标核心所在的可调度核心子区域对应的目标电源域的开关,包括:
响应于所述每一个其他核心的任务分配状态都为未分配任务状态,启动电源域空闲状态计时;
响应于所述电源域空闲状态计时达到预设时长,关断所述目标电源域。
19.根据权利要求18所述的方法,其特征在于,所述基于所述每一个其他核心的任务分配状态,控制所述目标核心所在的可调度核心子区域对应的目标电源域的开关,进一步包括:在所述电源域空闲状态计时期间,实时获取所述目标核心所在的可调度核心区域中每一个核心的任务分配状态;
响应于在所述电源域空闲状态计时期间所述目标核心所在的可调度核心区域中至少一个核心的任务分配状态为已分配任务状态,终止所述电源域空闲状态计时且保持所述目标电源域开启。
20.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
响应于所述待执行任务被所述目标核心处理完成,将所述目标核心的任务分配状态更新为未分配任务状态。
21.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
响应于所述目标核心被确定,根据所述目标核心所在的可调度核心子区域对应的目标电源域的供电状态,控制所述待执行任务的处理过程。
22.根据权利要求21所述的方法,其特征在于,所述响应于所述目标核心被确定,根据所述目标核心所在的可调度核心子区域对应的目标电源域的供电状态,控制所述待执行任务的处理过程,包括:
响应于所述目标电源域的供电状态为完全关断状态,开启所述目标电源域并实时检测所述目标电源域是否进入完全开启状态;以及
响应于所述目标电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。
23.根据权利要求21所述的方法,其特征在于,所述响应于所述目标核心被确定,根据所述目标核心所在的可调度核心子区域对应的目标电源域的供电状态,控制所述待执行任务的处理过程,包括:
响应于所述目标电源域的供电状态为上电状态,实时检测所述目标电源域是否进入完全开启状态;
响应于所述目标电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。
24.根据权利要求21所述的方法,其特征在于,所述响应于所述目标核心被确定,根据所述目标核心所在的可调度核心子区域对应的目标电源域的供电状态,控制所述待执行任务的处理过程,包括:
响应于所述目标电源域的供电状态为掉电状态,实时检测所述目标核心的电源域是否进入完全关断状态;
响应于所述目标电源域进入完全关断状态,开启所述目标电源域并实时检测所述目标电源域是否进入完全开启状态;以及
响应于所述目标电源域进入完全开启状态,指示所述目标核心处理所述待执行任务。
25.根据权利要求1所述的方法,其特征在于,所述获取分别用于向所述可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,包括:
获取所述多核系统的核心状态记录表,所述核心状态记录表包括所述多个电源域的开关信号;
针对所述多个电源域中每一个电源域,响应于该电源域的开关信号为1,该电源域的供电状态被确定为关断状态;
针对所述多个电源域中每一个电源域,响应于该电源域的开关信号为0,该电源域的供电状态被确定为开启状态。
26.根据权利要求25的方法,其特征在于,所述核心状态记录表进一步包括所述多个电源域的开关完成信号,所述关断状态包括完全关断状态和掉电状态,所述开启状态包括完全开启状态和上电状态,
并且所述获取分别用于向所述可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,进一步包括:针对所述多个电源域中每一个电源域:
响应于该电源域的开关信号为1且开关完成信号为1,所述电源域的供电状态被确定为完全关断状态;
响应于该电源域的开关信号为1且开关完成信号为0,所述电源域的供电状态被确定为掉电状态;
响应于该电源域的开关信号为0且开关完成信号为0,所述电源域的供电状态被确定为完全开启状态;
响应于该电源域的开关信号为0且开关完成信号为1,所述电源域的供电状态被确定为上电状态。
27.一种用于多核系统的核心调度装置,其特征在于,所述装置包括:
接收模块,其配置成从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;
第一获取模块,其配置成获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,所述预期分配的多个任务负载级别是与所述目标应用相关的;
第二获取模块,其配置成获取分别用于向所述可调度核心区域中的多个可调度核心子区域供电的多个电源域的供电状态,每个可调度核心子区域包括至少两个核心;
第三获取模块,其配置成获取所述可调度核心区域中各个核心的任务分配状态和调度优先级;
确定模块,其配置成根据所述待执行任务的任务负载级别、所述分级任务分配模式、所述多个电源域的供电状态、以及所述可调度核心区域中各个核心的任务分配状态,从所述可调度核心区域中筛选候选核心集合,并且响应于所述候选核心集合被筛选到,根据所述可调度核心区域中各个核心的调度优先级,从所述候选核心集合中确定用于处理所述待执行任务的目标核心,其中所述候选核心集合中的每一个核心满足下述条件:对应的电源域的供电状态处于开启状态、处于未分配任务状态、在所述分级任务分配模式中与所述待执行任务的任务负载级别匹配。
28.一种计算设备,其特征在于,包括:
存储器和处理器,
其中所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时促使所述处理器执行权利要求1-26中任一项所述的方法。
29.一种计算机可读存储介质,其特征在于,其上存储计算机可读指令,所述计算机可读指令在被执行时实现权利要求1-26中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211713288.8A CN115686871B (zh) | 2022-12-30 | 2022-12-30 | 用于多核系统的核心调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211713288.8A CN115686871B (zh) | 2022-12-30 | 2022-12-30 | 用于多核系统的核心调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115686871A CN115686871A (zh) | 2023-02-03 |
CN115686871B true CN115686871B (zh) | 2023-04-07 |
Family
ID=85055783
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211713288.8A Active CN115686871B (zh) | 2022-12-30 | 2022-12-30 | 用于多核系统的核心调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115686871B (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102641520B1 (ko) * | 2018-11-09 | 2024-02-28 | 삼성전자주식회사 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법 |
CN112468821B (zh) * | 2020-10-27 | 2023-02-10 | 南京邮电大学 | 基于hevc核心模块的并行解码方法、装置及介质 |
CN115033352A (zh) * | 2021-02-23 | 2022-09-09 | 阿里云计算有限公司 | 多核处理器任务调度方法、装置及设备、存储介质 |
CN115391021A (zh) * | 2021-05-24 | 2022-11-25 | 北京灵汐科技有限公司 | 核心控制方法及装置、处理核心、系统、电子设备、介质 |
CN114327829A (zh) * | 2021-12-30 | 2022-04-12 | 东北大学 | 一种多核实时任务调度分析与仿真系统及方法 |
-
2022
- 2022-12-30 CN CN202211713288.8A patent/CN115686871B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115686871A (zh) | 2023-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115686873B (zh) | 用于多核系统的核心调度方法和装置 | |
Safari et al. | Energy-aware scheduling algorithm for time-constrained workflow tasks in DVFS-enabled cloud environment | |
Dashti et al. | Dynamic VMs placement for energy efficiency by PSO in cloud computing | |
Ding et al. | Energy efficient scheduling of virtual machines in cloud with deadline constraint | |
CN111176828B (zh) | 包括多核处理器的片上系统及其任务调度方法 | |
Arshad et al. | Utilizing power consumption and SLA violations using dynamic VM consolidation in cloud data centers | |
Hashem et al. | MapReduce scheduling algorithms: a review | |
CN110196851A (zh) | 一种数据存储方法、装置、设备及存储介质 | |
Wang et al. | An energy-aware bi-level optimization model for multi-job scheduling problems under cloud computing | |
Gandomi et al. | HybSMRP: a hybrid scheduling algorithm in Hadoop MapReduce framework | |
WO2015163897A1 (en) | Core prioritization for heterogeneous on-chip networks | |
CN115981819B (zh) | 用于多核系统的核心调度方法和装置 | |
US10768684B2 (en) | Reducing power by vacating subsets of CPUs and memory | |
CN115686800B (zh) | 用于多核系统的动态核心调度方法和装置 | |
Hao et al. | Adaptive energy-aware scheduling method in a meteorological cloud | |
Li et al. | Energy-aware scheduling on multiprocessor platforms | |
Rathinaraja et al. | Dynamic ranking-based MapReduce job scheduler to exploit heterogeneous performance in a virtualized environment | |
CN115686871B (zh) | 用于多核系统的核心调度方法和装置 | |
Hu et al. | Adaptive energy-minimized scheduling of real-time applications in vehicular edge computing | |
US20230289223A1 (en) | Task scheduling method, game engine, device and storage medium | |
Ghose et al. | Scheduling real time tasks in an energy-efficient way using VMs with discrete compute capacities | |
Majumder et al. | Energy-aware real-time tasks processing for fpga-based heterogeneous cloud | |
WO2024000224A1 (en) | Methods and systems for energy-efficient scheduling of periodic tasks on a group of processing devices | |
Yang et al. | 0–1 ILP-based run-time hierarchical energy optimization for heterogeneous cluster-based multi/many-core systems | |
Alqudah et al. | Energy reduction through memory aware real-time scheduling on virtual machine in multi-cores server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |