CN115981819A - 用于多核系统的核心调度方法和装置 - Google Patents

用于多核系统的核心调度方法和装置 Download PDF

Info

Publication number
CN115981819A
CN115981819A CN202211742119.7A CN202211742119A CN115981819A CN 115981819 A CN115981819 A CN 115981819A CN 202211742119 A CN202211742119 A CN 202211742119A CN 115981819 A CN115981819 A CN 115981819A
Authority
CN
China
Prior art keywords
core
task
area
level
schedulable
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.)
Granted
Application number
CN202211742119.7A
Other languages
English (en)
Other versions
CN115981819B (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202211742119.7A priority Critical patent/CN115981819B/zh
Publication of CN115981819A publication Critical patent/CN115981819A/zh
Application granted granted Critical
Publication of CN115981819B publication Critical patent/CN115981819B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

公开了一种用于多核系统的核心调度方法和装置。该方法包括:从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别;获取针对多核系统的分级任务分配模式,分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系;获取可调度核心区域中各个核心的任务分配状态;根据待执行任务的任务负载级别、分级任务分配模式以及可调度核心区域中各个核心的任务分配状态,从可调度核心区域中确定目标核心以用于处理待执行任务。

Description

用于多核系统的核心调度方法和装置
技术领域
本申请涉及计算机技术领域,更具体地涉及一种用于多核系统的核心调度方法和装置、计算设备、计算机可读存储介质及计算机程序产品。
背景技术
随着计算机技术发展,越来越多的人认识到,仅仅提高单核处理器芯片的速度会产生过多热量,散热问题面临瓶颈,且无法带来与之匹配的性能改善;另外,即便不考虑散热问题,由于当前单核处理器的速度提升所带来的性能改进与其所耗费的巨大成本完全不成比例,即性价比令人难以接受。在这种情况下,多核处理器或多核系统应运而生。与单核处理器的芯片速度提升不同,多核处理器主要是通过增加芯片内处理器内核的个数来提升处理器整体性能。多核处理器技术除了在应用上为计算机带来更强大的计算性能之外,更重要的是可以满足多任务并行处理和多任务计算环境的要求。
然而,当使用多核系统处理任务时,如果多核系统中各个核心调度不当,可能造成在系统核心阵列的某一核心区域中过多核心都被(例如同一时段)调度执行相对复杂的或计算开销较大的任务(即负载过大的任务),即高负载任务在该核心区域过度聚集,迫使该区域中邻近排布的多个核心需要同时进行高速运算或处于高负荷状态,导致这一核心区域功率密度大幅上升,从而引起区域高发热;同时也可能由于物理位置邻近的各核心的任务负载过重,导致核心任务延时升高(甚至呈指数型增长),显著影响系统的整体性能。
发明内容
本申请提供了一种用于多核系统的核心调度方法和装置、计算设备、计算机可读存储介质及计算机程序产品,期望缓解、减轻或甚至消除上述问题中的一些或全部以及其它可能的问题。
根据本申请的一个方面,提出一种用于多核系统的核心调度方法,包括:从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,所述预期分配的多个任务负载级别是与目标应用相关的;获取所述可调度核心区域中各个核心的任务分配状态;根据所述待执行任务的任务负载级别、所述分级任务分配模式以及所述可调度核心区域中各个核心的任务分配状态,从所述可调度核心区域中确定目标核心以用于处理所述待执行任务。
在根据本申请一些实施例的核心调度方法中,在所述分级任务分配模式中,所述可调度核心区域包括与所述预期分配的多个任务负载级别一一对应的多类核心区域,每类核心区域包括多个不相邻的子区域,每个子区域包括一个核心或相邻的至少两个核心。
在根据本申请一些实施例的核心调度方法中,分级任务分配模式是根据所述预期分配的多个任务负载级别获取的。
在根据本申请一些实施例的核心调度方法中,在所述预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别的情况下,所述分级任务分配模式为第一分级任务分配模式,在第一分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第一类核心区域以及与第二任务负载级别对应的第二类核心区域中,且第一类核心区域中的每个子区域和第二类核心区域中的每个子区域均包括一个核心。
在根据本申请一些实施例的核心调度方法中,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别的情况下,所述分级任务分配模式为第二分级任务分配模式,在第二分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第三类核心区域、与第二任务负载级别对应的第四类核心区域以及与第三任务负载级别对应的第五类核心区域,第四类核心区域中的各子区域与第五类核心区域中的各子区域不相邻。
在根据本申请一些实施例的核心调度方法中,第二任务负载级别和第三任务负载级别中的每一个对应的任务复杂程度都大于第一任务负载级别对应的任务复杂程度。
在根据本申请一些实施例的核心调度方法中,第四类核心区域的核心数量和第五类核心区域的核心数量中的每一个都小于第三类核心区域的核心数量。
在根据本申请一些实施例的核心调度方法中,第三类核心区域中每一个子区域、第四类核心区域中每一个子区域以及第五类核心区域中每一个子区域均包括一个核心。
在根据本申请一些实施例的核心调度方法中,可调度核心区域为阵列区域,并且在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第一子模式,所述极差指示所述预期分配的多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异,在第一子模式中,在可调度核心区域的每一行和每一列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心以及第四类区域中的至少一个核心隔开。
在根据本申请一些实施例的核心调度方法中,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第二子模式,其中第一极差阈值小于或等于第二极差阈值,在第二子模式中,在可调度核心区域的奇数行和奇数列中,第四类区域中的各核心被第三类区域中的一个或多个核心隔开,并且在可调度核心区域的偶数行和偶数列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心和第四类区域中的至少一个核心隔开。
在根据本申请一些实施例的核心调度方法中,第三任务负载级别对应的任务复杂程度大于第二任务负载级别对应的任务复杂程度。
在根据本申请一些实施例的核心调度方法中,第四类区域的核心数量大于或等于第五类区域的核心数量。
在根据本申请一些实施例的核心调度方法中,进一步包括:获取所述目标应用对应的区域调度参数,所述区域调度参数基于所述目标应用运行所需的核心数量确定;根据所述区域调度参数,从所述多核系统的核心阵列中确定可调度核心区域。
在根据本申请一些实施例的核心调度方法中,分级任务分配模式进一步包括所述可调度核心区域中各个核心的调度顺序,所述调度顺序依照所述可调度核心区域中各个核心的位置顺序确定,并且所述根据所述待执行任务的任务负载级别、所述分级任务分配模式以及所述可调度核心区域中各个核心的任务分配状态,从所述可调度核心区域中确定目标核心以用于处理所述待执行任务,包括:根据所述分级任务分配模式,从所述可调度核心区域中确定与所述待执行任务的任务负载级别匹配的第一候选核心区域;基于所述可调度核心区域中各个核心的任务分配状态,从所述第一候选核心区域中确定第二候选核心区域;依据所述可调度核心区域中各个核心的调度顺序,从所述第二候选核心区域中选取目标核心。
在根据本申请一些实施例的核心调度方法中,进一步包括:响应于目标核心被确定,将所述目标核心的任务分配状态更新为已分配任务状态且开启目标核心的电源域。
在根据本申请一些实施例的核心调度方法中,进一步包括:响应于所述目标核心完成所述待执行任务,将所述目标核心的任务分配状态更新为未分配任务状态;响应于目标核心的电源域相关的所有核心都处于未分配任务状态,关断目标核心的电源域。
根据本申请的另一方面,提供一种用于多核系统的核心调度装置,包括:接收模块,其配置成从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;第一获取模块,其配置成获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,所述预期分配的多个任务负载级别是与目标应用相关的;第二获取模块,其配置成获取所述可调度核心区域中各个核心的任务分配状态;确定模块,其配置成根据所述待执行任务的任务负载级别、所述分级任务分配模式以及所述可调度核心区域中各个核心的任务分配状态,从所述可调度核心区域中确定目标核心以用于处理所述待执行任务。
根据本申请的另一方面,提出一种计算设备,包括:存储器和处理器,其中所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时促使所述处理器执行根据本申请一些实施例的用于多核系统的核心调度方法。
根据本申请的另一方面,提出一种计算机可读存储介质,其上存储计算机可读指令,所述计算机可读指令在被执行时实现根据本申请一些实施例的方法。
根据本申请的另一方面,提出一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据本申请一些实施例的方法的步骤。
在根据本申请一些实施例的用于多核系统的核心调度方法和装置中,首先,针对软件(目标应用)发布的任务,采用任务分级处理方式,即利用任务负载级别表征任务复杂程度,有利于任务运算复杂度的定量分析,简化了基于分级任务的核心调度过程;其次,通过分级任务分配模式(即按照任务负载级别调度或分配用于处理该任务的核心),可以实现不同负载级别任务在核心阵列中的均衡分配或排布(例如高负载级别的任务对应的核心和低负载级别的任务对应的核心交错排布等),进而有效控制多核系统核心阵列(尤其是可调度核心区域)的功率密度,使得多核阵列执行任务时的功率密度相对均衡,避免因高负载任务过度聚集造成的核心阵列区域高负荷状态、功率密度过大和区域高发热问题,有效提升了多核系统的整体性能和任务执行效率。
附图说明
根据以下详细描述和附图,将容易理解本申请的各个不同的方面、特征和优点,在附图中:
图1示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的示例实施环境;
图2示意性示出了根据本申请一些实施例的用于多核系统的核心调度的流程图;
图3A和3B分别示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法对应的实体架构图;
图4A-4E分别示意性示出根据本申请一些实施例的分级任务分配模式;
图5示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的流程图;
图6示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的流程图;
图7示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法实施过程中关键信号波形图;
图8示意性示出了根据本申请一些实施例的用于多核系统的核心调度装置的示例框图;以及
图9示意性示出了根据本申请一些实施例的计算设备的示例框图。
应当指出,上述附图仅仅是示意性的和说明性的,且并不一定按照比例绘制。
具体实施方式
下面将参照附图更详细地描述本申请的若干个实施例以便使得本领域技术人员能够实现本申请。本申请可以体现为许多不同的形式和目的并且不应局限于本文所阐述的实施例。提供这些实施例以使得本申请全面且完整,并充分地向本领域技术人员传达本申请的范围。所述实施例并不限定本申请。
将理解的是,尽管术语第一、第二、第三等在本文中可以用来描述各种元件、部件和/或部分,但是这些元件、部件和/或部分不应当由这些术语限制。这些术语仅用来将一个元件、部件或部分与另一个元件、部件或部分相区分。因此,下面讨论的第一元件、部件或部分可以被称为第二元件、部件或部分而不偏离本申请的教导。
本文中使用的术语仅出于描述特定实施例的目的并且不意图限制本申请。如本文中使用的,单数形式“一个”、“一”和“该”意图也包括复数形式,除非上下文清楚地另有指示。将进一步理解的是,术语“包括”和/或“包含”当在本说明书中使用时指定所述及特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、部件和/或其群组的存在或添加一个或多个其他特征、整体、步骤、操作、元件、部件和/或其群组。如本文中使用的,术语“和/或”包括相关联的列出项目中的一个或多个的任意和全部组合。
除非另有定义,本文中使用的所有术语(包括技术术语和科学术语)具有与本申请所属领域的普通技术人员所通常理解的相同含义。将进一步理解的是,诸如那些在通常使用的字典中定义的之类的术语应当被解释为具有与其在相关领域和/或本说明书上下文中的含义相一致的含义,并且将不在理想化或过于正式的意义上进行解释,除非本文中明确地如此定义。
在详细介绍本申请的实施例之前,为了清楚起见,首先对一些相关的概念进行解释。
1.多核系统:即多核处理器,其是指在一枚处理器中集成两个或更多个完整的计算引擎或内核,例如单芯片多处理器(CMP)结构;多核系统中的“核”表示用于进行信息处理和任务执行的计算引擎或内核,在本文中可以称为“核心”。
2.多核系统的功率密度:在本文中是指多核系统阵列的某一区域中核心功耗的密集程度,例如可以等于该区域中所有核心的总功耗与该区域面积之比。
3.核心调度:是指对多核系统中各个内核或核心的管理和控制,包括例如任务分配、电源调控等。
针对上文所述的多核系统中各核心任务分配不当造成的核心阵列局部或整体功率密度过高的问题,本申请提供了一种用于多核系统的核心调度方法。该方法首先将待执行任务按照计算复杂程度或计算负荷划分成若干负载级别,随后基于不同的负载级别(预先)确定任务分配策略或模式(例如包括核心阵列中各核心与不同负载级别的对应分配关系(即在各种负载级别在核心阵列中的位置排布),以及可选地包括各项分配顺序),最后基于所确定任务分配策略将待执行任务分配相应核心,即调度相应目标核心来处理待执行任务。
图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可以被配置成:根据待执行任务的任务负载级别、分级任务分配模式以及可调度核心区域中各个核心的任务分配状态,从可调度核心区域中确定目标核心以用于处理待执行任务。
如图1所示,可选地,在确定了用于处理待执行任务的目标核心之后,核心调度平台130可以被配置成向目标应用110发送目标核心的标识符(例如目标核心ID);随后,目标应用110在获得目标核心标识符后,可以直接向多核系统120发送所述标识符以及待执行任务以供标识符对应的目标核心处理;最后,多核系统120在接收到标识符和待执行任务之后分配给标识符对应的目标核心进行任务处理。
图1中的实施环境100所涉及计算设备或计算机(例如多核系统120所在的计算设备)可以包括终端设备和/或服务器。终端设备可以是任何类型的移动计算设备,包括移动计算机(例如个人数字助理(PDA)、膝上型计算机、笔记本计算机、平板计算机、上网本等)、移动电话(例如,蜂窝电话、智能手机等)、可穿戴式计算设备(例如智能手表、头戴式设备,包括智能眼镜等)或其他类型的移动设备。在一些实施例中,终端设备也可以是固定式计算设备,例如台式计算机、游戏机、智能电视等。服务器可以是单个服务器或服务器集群,或者可以是能够提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器或云服务器集群。应理解,本文所提及的服务器典型地为具有大量存储器和处理器资源的服务器计算机,但是其他实施例也是可能的。
图1所示根据本申请一些实施例的用于多核系统的核心调度方法的实施环境100仅仅是示意性的。根据本申请的用于多核系统的核心调度方法并不限于所示出的示例实施环境。应理解,在本文中,一般地,图1所示的目标应用110、核心调度平台130和多核系统120可以处于同一计算设备中,但它们也可以是分别属于不同的计算设备。例如,目标应用110是终端设备中运行的应用程序或软件,而多核系统120可以是服务器的多核处理器用于通过网络传输来处理或执行终端设备上的目标应用发布的任务,而核心调度平台可以位于或运行于该服务器或该终端设备至少之一侧以实现多核系统120中核心调度和任务分配。
图2示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的流程图。如图2所示,根据本申请一些实施例的核心调度方法可以包括:
S210,任务执行请求接收步骤;
S220,分级任务分配模式获取步骤;
S230,任务分配状态获取步骤;以及
S240,目标核心确定步骤。
图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中各个核心的工作状态,例如核心标识符、任务分配状态、电源状态、被分配的任务负载级别等;以及电源管理组件334,用于依据核心的状态或核心状态记录表333控制各个核心的电源导通和/或关断,从而在保证多核系统或多核阵列320正常运转的情况下最大限度地降低其整体功耗。
图3B示出了图3A中应用交互接口331和核心调度组件332的内部结构和交互图。应用交互接口331也可以称为软硬件交互接口(即目标应用(软件)与多核系统320或核心调度平台(硬件)330的交互接口)。
如图3B所示,应用交互接口331可以包括下述多个寄存器:任务请求寄存器TASK_REQ、任务负载级别寄存器LOAD_LEVEL、任务分级参数寄存器MODE,它们分别用于从目标应用310接收并存储任务执行请求、待执行任务的任务负载级别、目标应用对应的任务分级参数。可选地,如图3B所示,应用交互接口331还可以包括区域调度参数寄存器MC_SIZE,用于从目标应用310接收并存储区域调度参数。可选地,如图3B所示,应用交互接口331还可以包括目标核心标识符寄存器COREID_SEL,用于从核心调度组件332接收并存储所调度或分配的目标核心的标识符(ID),并将其反馈给目标应用310。
需要说明,尽管应用交互接口331中的各个寄存器在图3B中被示出为分离的结构,但是在一些实施例中,它们中两个或更多个也可以是同一寄存器的不同组成部分。例如可选地,任务请求中可以包括待执行任务的负载级别、任务分级参数、区域调度参数中至少一个,于是任务负载级别寄存器LOAD_LEVEL、区域调度参数寄存器MC_SIZE、任务分级参数寄存器MODE中至少一个也可以从包含在任务请求寄存器TASK_REQ中,例如作为其子寄存器。
下面,将参考图3A和3B详细介绍图2所示的步骤S210-240。如图1的实施环境和图3A的实体架构图所示,根据本公开一些实施例的核心调度方法的上述步骤S210-S240可以在核心调度平台130、330中实现。
在步骤S210(任务执行请求接收步骤)中,从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别。任务负载级别可以指示任务复杂程度。
一般地,多核系统的核心调度可以包括关于多个核心的工作调度,这里的工作调度是指针对多核系统中各个核心的任务分配,即针对不同(任务负载级别)的任务如何调度相应核心进行处理。因此,在进行核心调度之前,首先需要从多核系统所在的计算设备中当前运行的应用接收任务执行请求,随后响应于该任务执行请求,开启核心调度过程。
根据本申请的构思,为了克服多核系统的核心阵列中高任务负载过度聚集造成的功率密度失衡的问题,可以通过针对多核系统的分级任务分配策略或模式实现功率密度均衡可控的核心调度。这样,在任务执行请求中需要包括待执行任务的任务负载级别,其用于表示任务复杂程度。可选地,任务执行请求还可以包括任务分级参数,用于在步骤S220中获取分级任务分配模式。进一步可选地,任务执行请求又可以包括区域调度参数,用于确定可调度核心区域。
步骤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个预期分配的任务负载级别的分级分配模式。另一方面,除了预期分配的多个任务负载级别的总数,还可以根据预期分配的多个任务负载级别的极差(即目标应用涉及的各个任务负载级别对应的任务的相对复杂程度和/或绝对复杂程度)获取分级任务分配模式,详情请参考图4C和4D所示的第二分级任务分配模式。
如图3A和3B所示,核心调度平台330可以预先(例如在目标应用发布任务执行请求之前)通过应用交互接口331的任务分级参数寄存器MODE从目标应用310接收并存储目标应用对应的任务分级参数。然后,当需要进行核心调度时,核心调度平台330的核心调度组件332可以从应用交互接口331的任务分级参数寄存器MODE中提取任务分级参数以用于分级任务分配模式的获取。
在一些实施例中,目标应用对应的任务分级参数的确定可以根据目标应用和/或其各个任务的应用场景来确定。这里的应用场景可以指目标应用中所包含的各个任务对应的涉及不同运算负荷的信息处理方式,例如可以包括简单的数据读写、高速信息交互、复杂的数据运算等。由于目标应用发布的各个任务对应的应用场景决定了相应任务的处理或执行的复杂程度,因此可以基于应用场景来确定目标应用中各个任务分别对应的任务负载级别。
例如当某一任务的应用场景为复杂的数据运算时,由于其耗时较多、计算负荷较大,该任务可以被归为较高的任务负载级别,而仅涉及简单的数据读写操作的任务则可以被划归为较低的任务负载级别。例如,假设目标应用各个任务总共包括涉及m种不同运算负荷的信息处理方式的应用场景,则该目标应用涉及的所有任务可以被总共划分为m个任务负载级别;这时,预期分配的多个任务负载级别的个数为m个,可选地按照对应的任务复杂程度由低到高的顺序可以分别定义为1级、2级、...、m级。因此,任务分级参数可以被定义为m。
在一些实施例中,可调度核心区域可以是整个多核系统阵列区域,也可以是从中筛选的部分区域。可调度核心区域的筛选目的是减小多核阵列中针对目标应用的核心调度范围,从而简化任务分配过程、提升工作效率、降低能耗。例如,在从多核阵列中选定其中一部分区域作为可调度核心区域之后,可以直接将多核阵列中除可调度核心区域之外的其他所有核心的电源关断,以充分节省能源、降低功耗。可调度核心区域可以在核心调度之前预先依据目标应用运行或任务处理所需的核心数量确定,或者基于目标应用根据所需核心数量得到的区域调度参数确定。
特别地,例如在目标应用运行所需的处理器核心数量不可预测的情况下,也可以将多核阵列整体区域确定为可调度核心区域。另一方面,可调度核心区域的选择也可以考虑多核阵列320中各个核心的当前工作状态。例如,多核阵列320中可能存在正在执行目标应用之外的其他应用发布的任务(非空闲核心)且无法同时处理其他任务的核心,这时需要将其排除在可调度核心区域之外。
在一些实施例中,分级任务分配模式中所包括的可调度核心区域中各核心与预期分配的多个任务负载级别的对应关系可以利用各个预期分配的任务负载级别在多核阵列的可调度核心区域中各个核心位置中的排布情况来表征,具体排布情况可以参见图4A-4D及其相应的描述。其中的核心的位置可以指该核心在核心阵列中的物理位置,例如包括绝对位置或相对位置。进一步地,分级任务分配模式还可以包括各个预期分配的任务负载级别对应核心的任务分配顺序。例如对于多个任务,按照任务的发布时间,在其任务负载级别对应的多核阵列中的物理位置顺序(例如从左到右、从上到下,如图4A-4E中箭头所示)为这些任务顺序分配相应核心,或随机分配或倒序分配等。
这种表现为各待调度核心与待分配任务负载级别的对应关系(或待分配任务负载级别在待调度核心位置上的排布)的分级任务分配模式可以直观地指示不同任务负载级别在多核阵列中的分配部署情况,有利于将根据不同负载级别的核心位置部署来控制多核阵列的预期功率密度,特别是可以通过同负载级别(尤其是高负载级别)的任务分散部署,以避免多核阵列局部功率密度失衡或过高。
由于任务分级参数指示目标应用所包含的任务的任务负载级别划分情况,因此可以基于任务分级参数得到目标应用所涉及的所有任务负载级别,即预期分配的多个任务负载级别。例如假设任务负载级别被限定为目标应用所涉及的不同任务负载级别的总数m,则可以从如图4A-4E所示的固定的候选分级任务分配模式中选取包含m个预期分配的任务负载级别的分级任务分配模式用于目标应用的任务分配或核心调度。
在一些实施例中,分级任务分配模式获取步骤S220可以在任务执行请求之前预先完成。换言之,可以首先针对目标应用预先获取或确定分级任务分配模式,随后开始目标应用相关的任务分配和核心调度过程。
在步骤S230(任务分配状态获取步骤)中,获取所述可调度核心区域中多个核心的任务分配状态。
根据本申请的构思,要想实现功率密度均衡的核心调度,需要在向核心分配任务之前获取可调度核心区域中各个待调度核心的任务分配状态。核心的任务分配状态可以指示该核心是否已分配任务。例如,当可调度核心区域中的某个核心处于已分配任务状态时,表明该核心已经被调度处理或准备处理相应任务,即处于工作状态,因而无法接纳新的任务分配;而若该核心处于未分配任务状态,则表明当前该核心处于空闲状态,可以接受新的任务分配。因此,在进行核心调度或任务分配之前,务必要得知各个待调度核心的当前任务分配状态,以避免出现核心调度混乱和任务冲突。
在一些实施例中,如图3B所示,核心调度组件332可以从核心状态记录表333中直接获取所需的各个核心的任务分配状态,因为核心状态记录表333负责实时记录包括核心任务分配状态在内的各种实时状态信息。相应地,核心调度组件332也可以在核心调度或任务分配完成以及任务处理完成之后,将相应核心的任务分配状态发送至核心状态记录表333以更新相关信息。
图3B所示的核心状态记录表333可以由核心调度平台330来创建和管理,用来记录当前多核系统每个核心的任务分配状态、被分配的任务负载级别以及电源开关情况等信息。表1示意性示出了根据本申请一些实施例的多核系统的核心状态记录表。如表1所示,多核系统的核心状态记录表可以包括下述四个参数:Core_ID、Assigned、Load_level、Core_off,其分别表示核心标识符、任务分配状态、被分配的任务负载级别、电源状态。在表1中,以16*16的核心阵列为例,为该阵列中每个核心设置一个行,共256行,具体表格的深度和大小可以根据系统需求进行配置。
表1-核心状态记录表
Core_ID Assigned Load_level Core_off
0 1 0 0
1 1 2 0
2 1 1 0
3 1 1 0
4 1 2 0
255 0 Null 1
表1中的Core_ID表示各个核心的标识符,其被设定后不再变化。如表1所示,Core_ID为多核系统的每个核心按顺序分配唯一的ID。以基于网状NOC结构的16*16核心的多核系统阵列为例,Core_ID可以按如下顺序分配:从阵列的左上第一个核心(即位于第一行第一列的核心)开始,第一行从左到右核心的Core_ID依次为0-15,第二行从左到右依次为16-31,...,依次类推,最终该16*16的多核系统的Core_ID范围为0-255。
表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中Core off表示核心的电源是否处于关断状态,其中0表示电源处于开启状态,1表示关断状态。
在步骤S240(目标核心确定步骤)中,根据待执行任务的任务负载级别、分级任务分配模式以及可调度核心区域中各个核心的任务分配状态,从可调度核心区域中确定目标核心以用于处理待执行任务。
如图3B所示,步骤S240可以在核心调度组件332中的目标核心确定模块332a中完成,即根据从任务负载级别寄存器LOAD LEVEL获取的待执行任务的任务负载级别、从核心状态记录表333获得的多核阵列中(尤其是可调度核心区域中)核心的任务分配状态以及从任务分配模式获取模块332b得到的分级任务分配模式,从可调度核心区域中选取适合用于处理待执行任务的目标核心。
在一些实施例中,基于分级任务分配模式的核心调度方案可以分别基于待执行任务的任务负载级别、分级任务分配模式以及核心阵列的任务分配状态等不同因素在可调度核心区域中进行层层筛选,以得到符合预期的目标核心。具体地,核心调度组件332可以首先根据可调度核心区域中各核心的任务分配状态,从可调度核心区域筛选出处于空闲状态(即任务分配状态为未被分配任务)的核心,构成的第一候选核心区域;随后,根据分级分配模式所包括的可调度核心区域中各核心与预期分配的任务负载级别的对应关系(即待分配的多个任务负载级别在核心阵列的可调度核心区域的各个核心位置中的对应排布),从第一候选核心区域中筛选预期分配的任务负载级别与待执行任务的任务负载级别匹配的核心构成的第二候选核心区域;最后,从第二候选核心区域中按照预定规则选取目标核心。预定规则可以包括例如按照位置顺序(例如横向从左到右、纵向从上到下)选取,或者也可以随机选取。
在根据本申请一些实施例的用于多核系统的核心调度方法中,首先,使用了任务分级处理方式,即待执行任务按照任务复杂程度划分任务负载级别,简化了待执行任务的运算或执行复杂度的表征,进而简化了后续的任务分配或核心调度过程,提升了工作效率;其次,利用分级任务分配模式(即按照任务负载级别调度或分配用于处理该任务的核心),即多核阵列中核心与预期分配的任务负载级别的对应关系,可以实现不同负载级别任务在核心阵列的可调度核心区域中各个核心位置上的均衡分配或排布(例如较高负载级别的任务对应的核心和较低负载级别的任务对应的核心交错排布等),进而使得多核系统的整体或局部核心阵列中的功率密度相对均衡,避免了因高负载任务过度聚集在邻近多个核心上造成的核心阵列的局部高负荷状态、功率密度过大和区域高发热问题,有效提升了多核系统的整体性能。
图4A-4E示意性示出根据本申请一些实施例的分级任务分配模式。如图4A-4E所示,多核系统的核心阵列被示出为16*16的方格阵列,其中的各个行从上到下被标记为0-15,各个列从左到右也被标记为0-15;阵列中每一个方格代表一个核心位置,每个方格中的数字代表该核心位置对应的预期分配的任务负载级别,因此图4A-4E所示的包含数字的方格阵列可以表示多核系统的可调度核心区域中各核心与预期分配的任务负载级别的对应关系,即分级任务分配模式。可选地,如图4A-4E所示,方格阵列中的箭头表示核心调度(任务分配)顺序,即按照以可调度核心区域左上角的核心(即方格阵列左上角)开始,横向从左到右、纵向从上到下地为待执行任务调度分配核心。
在一些实施例中,在S220中所获取的分级任务分配模式中,可调度核心区域可以包括与预期分配的多个任务负载级别一一对应的多类核心区域,每类核心区域包括多个不相邻的子区域,每个子区域包括一个核心或相邻的至少两个核心。本文中的两个核心的“相邻”可以理解为物理位置紧邻,即二者之间不存在其他核心;而三个以上核心的“相邻”可以理解为这些核心中的任一个核心与这些核心中至少一个其他核心紧邻(即相互之间不存在另外的核心)。例如,在多核阵列中,多个核心“相邻”主要包括的横向或纵向相邻。
如图4A所示,可调度核心区域包括四类核心区域,即虚线所示的0级区域、1级区域、2级区域、3级区域,每类区域包括多个不相邻的子区域,即同类区域是不相邻的,每个子区域仅包括一个核心。换言之,任意相邻的两个区域都是不同类的区域。如图4A所示,在可调度核心区域的第一行,0级区域包括4个子区域,1级子区域包括2个子区域,2级区域包括1个子区域,3级区域包括1个子区域。如图4A-4D所示,同类区域的各个子区域在可调度核心区域阵列的横向和纵向都是不相邻的,其间间隔着一个或多个其他类区域,如图4A中0级区域的邻近子区域之间间隔着1级区域或2级区域或3级区域。
如图4D所示,可调度核心区域包括三类核心区域,即虚线所示的0级区域、1级区域、2级区域,其中同类区域不相邻;其中按照子区域核心数量划分,1级区域和2级区域的各个子区域仅包括一个核心(即对应于负载级别1的核心或对应于负载级别2的核心),但0级区域包括四种子区域,即虚线所示的分别包括1个、3个、4个、5个核心的子区域,其中对应于多个核心的子区域中各个核心是相邻布置的(即两两依次相邻),即这些子区域可以看连通区域。
如图4A-4D所示,这种同类子区域(即对应于相同任务负载级别的核心构成的核心区域)不相邻排布方式能够将相同负载级别的任务分配给物理位置相对分散的多个核心,从而避免由于大量相同的负载级别(尤其是高负载级别)任务过度集中地分配给相互邻近的核心造成的功率密度失衡。
在一些实施例中,图4A-4E所示的分级任务分配模式可以是预先确定的(固定的))候选分级任务分配模式。核心调度平台330在接收到执行任务请求时,可以依据任务分级参数从这些候选的分级任务分配模式中选择合适的一个来实现核心调度。
图5示意性示出了根据本申请一些实施例的用于多核系统的核心调度方法的流程图。如图5所示,除了步骤S210-240之外,在步骤S220(分级任务分配模式获取步骤)之前,图2所示的根据本申请一些实施例的用于多核系统的核心调度方法可以进一步包括:
S250,区域调度参数获取步骤:获取所述目标应用对应的区域调度参数,所述区域调度参数基于所述目标应用运行所需的核心数量确定;
S260,可调度核心区域确定步骤:根据区域调度参数,从多核系统的核心阵列中确定可调度核心区域。
根据本申请的核心调度方法的构思,在确定分级任务分配模式之前增加可调度核心区域筛选过程,以简化任务分配过程、提升工作效率、降低能耗。例如可以基于目标应用运行所需的核心数量确定多核系统的可调度核心区域,即在多核系统的多核阵列320中划定或筛选出一个核心区域作为用于处理当目标应用310发布的各种任务的可调度核心区域。
目标应用对应的区域调度参数可以对应于目标应用运行所需的核心数量,并且因此可以用于限定多核系统的可调度核心区域的核心数量、面积等,进而确定可调度核心区域。特别地,区域调度参数可以直接定义为大于或等于目标应用运行所需的核心总数。在一些实施例中,目标应用310可以根据其具体应用场景预测处理其发布的各个任务所需的处理器核心总量。
如图3B所示,在核心调度开始之前,可以利用应用交互接口331中的区域调度参数寄存器MC SIZE从目标应用310接收并存储区域调度参数,以用于限定多核系统的可调度核心区域的大小。可选地,任务执行请求进一步可以包括区域调度参数,这样步骤S250(区域调度参数获取步骤)可以简化为:从任务执行请求中获取所述区域调度参数。
例如区域调度参数可以用目标应用运行所需的核心的数量定义,例如区域调度参数为64,则对应的可调度核心区域为包括64个核心的区域(可以是连续的或不连续的区域),具体地可以在多核阵列320中随机选取64个或更多个核心构成可调度核心区域。可选地,区域调度参数也可以包括X-size和Y-size(其单位可以是长度单位或者可以是核心个数),分别用于限定可调度核心区域或阵列的横向和纵向尺寸或横向和纵向核心个数,从而可以确定矩形的可调度核心区域。
在图4A-4E的多核阵列中,标记数字(含省略号和箭头所涵盖)的方格构成多核阵列的可调度核心区域。图4A示出了包含作为多核阵列一部分的可调度核心区域的分级任务分配模式。如图4A所示,在16*16核心阵列中,当区域调度参数X-size和Y-size可以分别等于8个核心时,对应的可调度核心区域可以选择核心阵列左上角的大小为8*8的核心区域(即整个核心阵列的第0行至第7行和第0列至第7列对应的包括64个核心的连通的阵列区域)。如图4A所示,在选定8*8可调度核心区域(被示出为白色)之后,可以直接将16*16多核阵列中除可调度核心区域之外的其他区域(被示出为非白色)的所有核心的电源关断,以充分节省能源、降低功耗。
显然,图4B-4E所示的分级任务分配模式中的可调度核心区域均为多核系统的整个多核阵列,即16*16阵列。如图4B-4E所示,在16*16核心阵列中,当区域调度参数等于256个核心或者X-size和Y-size分别等于16个核心时,整个多核阵列核心区域被选定为可调度核心区域。
在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别的情况下,所述分级任务分配模式为第一分级任务分配模式,在第一分级任务分配模式中,可调度核心区域包括与第一任务负载级别对应的第一类核心区域以及与第二任务负载级别对应的第二类核心区域中,且第一类核心区域中的每个子区域和第二类核心区域中的每个子区域均包括一个核心。
图4B示出根据本申请一些实施例的第一分级任务分配模式。如图4B的方格阵列所示,多核系统的可调度核心区域就是整个核心阵列区域,可调度被划分为两类核心区域:第一类核心区域,即对应于0级任务负载级别(即第一任务负载级别)的0级区域;以及第二类核心区域,即对应于1级任务负载级别(即第二任务负载级别)的1级区域。换言之,方格阵列中标记为0的核心位置对应于0级任务,标记为1的核心位置对应于1级任务。如图4B的虚线所示,第一类核心区域(0级区域)的子区域仅包括一个核心(即0级核心),第二类核心区域(1级区域)的子区域也包括一个核心(即1级核心)。在一些实施例中,第二任务负载级别(即1级)大于第一任务负载级别(即0级),即前者的任务复杂程度要高于后者。
如图4B所示,0级区域(即第一类核心区域)的子区域和1级区域(即第二类核心区域)的子区域在核心阵列中相互穿插、交错排布,数量均等,分别占据多核阵列的50%。这样,图4B所示的第一分级任务分配模式可以支持两种预期分配的任务负载级别(例如0和1)的核心调度,即将0级区域对应的核心调度执行0级任务或将0级任务分配给0级区域中的核心,而将1级区域对应的核心调度执行1级任务或将1级任务分配给1级区域中的核心。因此,当基于任务分级参数确定的预期分配的多个任务负载级别包括两个级别(第一任务负载级别和第二任务负载级别)时,可以选取如图4B所示的第一分级任务分配模式。
如图4B所示,第一分级任务分配模式利用两种不同负载级别(即0级和1级)的任务在核心阵列中的交错排布成功地将多个较高任务负载级别(即1级)或计算复杂度的任务用较低任务负载级别(即0级)任务间隔开,避免了高负载任务在核心阵列中的过度聚集分布,有效地提升了多核系统的功率密度的均衡性。
在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别的情况下,分级任务分配模式为第二分级任务分配模式,在第二分级任务分配模式中,可调度核心区域包括与第一任务负载级别对应的第三类核心区域、与第二任务负载级别对应的第四类核心区域以及与第三任务负载级别对应的第五类核心区域,第四类核心区域中的各子区域与第五类核心区域中的各子区域不相邻。可选地,第二任务负载级别和第三任务负载级别中的每一个对应的任务复杂程度都大于第一任务负载级别对应的任务复杂程度。可选地,第四类核心区域的核心数量和第五类核心区域的核心数量中的每一个都小于第三类核心区域的核心数量。
图4C和4D示出了根据本申请一些实施例的第二分级任务分配模式。如图4C和4D所示,多核系统的可调度核心区域就是整个核心阵列区域,多核系统的核心阵列(即图中的方格阵列)被划分为三种核心区域:第三类核心区域,即对应于0级任务负载级别(第一任务负载级别)的0级区域;第四类核心区域,即对应于1级任务负载级别(第二任务负载级别)的1级区域;以及第五类核心区域,对应于2级任务负载级别(第三任务负载级别)的2级区域。换言之,方格阵列中标记为0的方格(即核心位置)对应于0级任务,标记为1的方格对应于1级任务,标记为2的方格对应于2级任务。如图4C和4D所示,第四类核心区域(1级区域)中的子区域和第五类核心区域(2级区域)中的子区域都仅包括一个核心,且这两类区域是不相邻的,其1级区域和2级区域的各个子区域彼此之间都是被一个或多个0级区域的子区域隔开的。这样,图4C和4D所示的第二分级任务分配模式可以支持三种预期分配或待分配的任务负载级别(例如0、1和2)的核心调度,即将0级区域对应的核心调度执行0级任务或将0级任务分配给0级区域中的核心,将1级区域对应的核心调度执行1级任务,将2级区域对应的核心调度执行2级任务。可选地,第三任务负载级别和第二任务负载级别都大于第一任务负载级别。
因此,当基于任务分级参数确定的预期分配的多个任务负载级别包括三个级别(第一任务负载级别、第二任务负载级别和第三任务负载级别)时,可以选取如图4C或4D所示的第二分级任务分配模式。如图4C和4D所示,在第二分级分配分配模式中:0级区域、1级区域和2级区域在多核阵列中是相互穿插交错排布的,尤其对应于较高负载级别的第四类核心区域(1级区域)与第五类核心区域(2级区域)不相邻,使得1级区域的各子区域之间、2级区域各子区域之间以及1级子区域和2级子区域之间都是间隔分布的。例如图4C中两个2之间间隔着0和1,两个1之间间隔着0、2、0,1和2之间间隔一个0。这些的排布使得较高负载任务相对于较低负载任务更加分散地布置给多核阵列中的核心,避免了高负载任务过度集中造成的多核阵列功率密度失衡问题。
在一些实施例中,第二分级任务分配模式包括第一子模式,在第一子模式中:第三类核心区域中每一个子区域、第四类核心区域中每一个子区域以及第五类核心区域中每一个子区域均包括一个核心。可选地,在第一子模式中,在可调度核心区域的每一行和每一列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心以及第四类区域中的至少一个核心隔开。
图4C示出了第二分级任务分配模式的第一子模式。如图4C,0级核心区域、1级核心区域、2级核心区域中的各子区域都仅包括一个核心。如图4C所示,在第一子模式中,三种任务负载级别(即0级、1级、2级)在多核阵列中的分布顺序为:横向01020102,纵向02010201;从左上往右下的斜对角方向看,布置顺序为一排0级任务、一排1级任务,又一排0级任务,一排2级任务,然后重复。换言之,在图4C中,1级区域(即第四类核心区域)中的各个核心(即1级负载级别对应的核心)被0级区域(即第三类核心区域)中两个核心(即0级负载级别对应的核心)和2级区域(即第五类核心区域)的1个核心(即2级负载级别对应的核心)隔开,且2级区域(即第五类核心区域)中的各个核心(即2级负载级别对应的核心)被0级区域(即第三类核心区域)中两个核心(即0级负载级别对应的核心)和1级区域(即第四类核心区域)的1个核心(即1级负载级别对应的核心)隔开。
图4C所示的任务负载级别排布的目的是在位置邻近的核心上分配不同负载级别的任务且将较高负载级别(1级和2级)用较低负载级别(0级)隔开,以避免高负载任务过度聚集。在图4C所示的第二分级任务分配模式的第一子模式中,0级,1级和2级任务的比率为2:1:1,较低负载级别(0级)和较高负载级别(非0级,即1级和2级)的任务占比依然是各50%,其中1级和2级任务分别占据25%。这样既保证了高负载级别任务在核心阵列中的分散布置,又将其绝对数量控制在较低水平,从而确保多核阵列的可调度核心区域中相对均衡的功率密度。
在一些实施例中,第二分级任务分配模式包括第二子模式。在第二子模式中,在可调度核心区域的奇数行和奇数列中,第四类区域中的各核心被第三类区域中的一个或多个核心隔开,并且在可调度核心区域的偶数行和偶数列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心和第四类区域中的至少一个核心隔开可选地,在第二子模式中,第三任务负载级别对应的任务复杂程度大于第二任务负载级别对应的任务复杂程度,且第四类区域的核心数量大于或等于第五类区域的核心数量。
图4D示出了第二分级任务分配模式的第二子模式。如图4D中虚线框所示,第三类核心区域(0级区域)的子区域可以包括1个、3个、4个或5个核心,而第四类和第五类核心区域(1级区域和2级区域)的子区域仅包含1个核心。在第二子模式中,三种任务负载级别(即0级、1级、2级)在多核阵列中横向和纵向的分布顺序都为:00010001或02010201。如图4D所示,从左上往右下的斜对角方向看,第二子模式的布局顺序为:一排0级任务、一排1级任务、又一排0级任务、,再一排1∶1比例穿插排布的0级和2级任务。换言之,在图4D中,在多核阵列的奇数行和奇数列,1级区域(即第四类核心区域)中的各个核心(即1级负载级别对应的核心)被0级区域(即第三类核心区域)中三个核心(即0级负载级别对应的核心)隔开;在多核阵列的偶数行和偶数列,1级区域(即第四类核心区域)中的各个核心(即1级负载级别对应的核心)被0级区域(即第三类核心区域)中两个核心(即0级负载级别对应的核心)和2级区域的1个核心(即2级负载级别对应的核心)隔开,且2级区域(即第五类区域)中的各个核心(即2级负载级别对应的核心)被0级区域中两个核心(即0级负载级别对应的核心)和1级区域的1个核心(即1级负载级别对应的核心)隔开。
与图4C相同的是,图4D所示的第二分级任务分配模式的目的也是:在位置邻近的核心上分布不同负载级别的任务且将1级和2级任务用0级隔开,以避免高负载任务聚集。在图4D所示的第二分级任务分配模式的第二子模式中,0级、1级和2级任务的比率为5∶2:1,较低负载级别(0级)任务占比为62.5%,较高负载级别(非0级,即1级和2级)任务占比是37.5%。与图4C的第一子模式相比,图4D所示的第二子模式中较大负载级别的任务占比更低,适用于运算复杂度较高、会产生更高功率的任务或者对功率密度均衡度要求更高的使用场景。例如,当较低负载级别(0级)与较高负载级别(1级和2级)对应的任务复杂程度之间的差异相对较大时,需要用低级与高级任务之间的更大的数量差来弥补单个高级任务和单个低级任务之间的较大复杂程度之差。
在一些实施例中,任务分级参数可以包括目标应用所涉及或所包含的任务负载级别的总数,或者可选地包括各个任务负载级别对应的任务复杂度范围。因此,基于任务分级参数,不仅可以确定预期分配的多个任务负载级别(即级别个数),也可以确定这些任务负载级别之间的极差,级差可以指示多个任务负载级别之中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异。
因此,在确定分级任务分配模式时,不仅可以考虑目标应用对应的预期分配的多个任务负载级别的具体数量,还可以考虑各个级别对应实际任务复杂程度之间相对差(即极差),从而更合理地调度多核系统中的核心执行目标应用对应的任务。例如,首先依据预期分配的多个任务负载级别确定一个与级别个数对应的多个预选分配模式(例如图4C和4D所示的第二分级任务分配模式的第一子模式和第二子模式),随后根据这些负载级别之间的极差从预选分配模式确定或选取适合该极差的分配模式。
在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,分级任务分配模式为第二分级任务分配模式的第一子模式,极差指示所述预期分配的多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异。在一些实施例中,在预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,分级任务分配模式为第二分级任务分配模式的第二子模式。可选地,第一极差阈值可以小于或等于第二极差阈值,第一极差阈值和第二极差阈值可以根据具体情况(例如目标应用的应用场景)确定。
如图4C和4D所示,第一和第二子模式都属于适用于任务负载级别个数为3的目标应用的第二分级分配模式,但是前者,低级(0级)与高级(1级和2级)任务占比相同,适合任务负载级别极差相对较小的目标应用的任务分配;后者,低级任务数量超过一半且分布较广,而高级任务数量较少,适合任务负载级别的极差相对较大的目标应用的任务分配。
图4E表示根据本公开一些实施例的默认分级任务分配模式。如图4E所示,在默认分级任务分配模式中,可调度核心区域中核心位置与预期分配的任务负载级别之间的对应关系仅包括核心位置与0级负载级别的对应关系。换言之,在默认分级任务分配模式中,无论目标应用的任务负载级别划分情况或目标应用对应的任务分级参数等于多少,预期分配的任务负载级别都将被统一设定为0级,即该模式实际上并未区分待分配的任务的任务负载级别。如图4E所示,由于其对任务等级不做区分,每个预期分配的任务均按0级负载级别(即第一任务负载级别)对待,相应的方格阵列整体上仅包括0级核心区域。可选地,默认分级任务分配模式的核心调度顺序可以依照各核心的位置顺序进行。如图4E所示,根据待执行任务请求顺序,可以依照横向从左到右,纵向从上到下的位置顺序依次调度用于处理各个待执行任务的核心(即为待执行任务分配核心),这样任何任务(无论其任务负载级别如何)可以使用这种模式实现顺序轮询的核心调度。
在一些实施例中,分级任务分配模式进一步包括可调度核心区域中各个核心的调度顺序,调度顺序基于核心在多核系统的核心阵列中的位置确定。如图5所示,图2所示的步骤S240可以包括:
S241,根据分级任务分配模式,从所述可调度核心区域中确定与所述待执行任务的任务负载级别匹配的第一候选核心区域;
S242,基于所述可调度核心区域中各个核心的任务分配状态,从所述第一候选核心区域中确定第二候选核心区域;
S243,依据所述可调度核心区域中各个核心的调度顺序,从所述第二候选核心区域中选取目标核心。
假设待执行任务的负载级别为1,可以首先从如图4B-4D所示可调度核心区域中选取1级任务对应的核心,构成第一候选核心区域(即1级区域);随后根据第一候选核心区域中核心的任务分配状态,从第一候选核心区域将处于“已被分配任务”状态的核心筛选出来,形成第二候选核心区域;最后依照例如图4B-4D所示的位置顺序(横向左到右,纵向上到下)选择已被分配任务的最后一个核心之后的核心作为适于处理待执行任务的目标核心。
如图5所示,根据本申请一些实施例的用于多核系统的核心调度方法可以进一步包括:
S270,任务分配状态更新和电源管理步骤:响应于目标核心被确定,更新目标核心的任务分配状态并管控目标核心的电源域。
如图3A所示,电源管理组件334可以基于从核心状态记录表333获取的核心的电源状态或任务分配状态对多核系统的核心的电源域进行管控,其中核心状态记录表333可以响应于目标核心的确定而更新。例如,默认状态下,每个核心电源是关闭的,即核心状态记录表333中每个核心的Core off为1;当核心调度组件332确定了目标核心时,可以将目标核心的任务分配状态更新为“已分配任务”,即将核心状态记录表333中目标核心的Assigned更新为“1”,并且,电源管理组件334将目标核心的电源域接通,同时将核心状态记录表333中目标核心的Core off更新为“0”,从而将目标核心的电源域接通以便为目标任务的执行做好准备。
图6示出根据本申请一些实施例的用于多核系统的核心调度方法中任务分配状态更新和电源管理步骤的示例流程。
如图6所示,在一些实施例中,图5所示S270(任务分配状态更新和电源管理步骤)可以包括:
S271,响应于目标核心被确定,将目标核心的任务分配状态更新为已分配任务状态且开启目标核心的电源域;
S272,响应于目标核心完成待执行任务,将目标核心的任务分配状态更新为未分配任务状态;
S273,响应于目标核心的电源域相关的所有核心都处于未分配任务状态,关断目标核心的电源域。
在一些实施例中,为了灵活控制多核系统各个核心的电源域,可以将多核系统的每个核心设置独享电源域,允许多核系统在核心无负载任务的情况下使用电源门控技术将其电源关断以节省功耗。可选地,在较大规模的多核系统中,由于核心数量庞大,造成单独控制各个核心的独享电源域过多,因此在电路设计、部署等方面可能较复杂甚至难以实现。因此,在一些实施例中,可以使用共享电源域替换独享电源域来克服上述问题,即将多核系统中多个邻近核心划分为一组,共享一个电源域。
在根据本申请的核心调度方法中,可以根据多核系统的核心工作情况,对核心进行任务分配状态更新和电源管控。例如当目标核心被确定时,说明目标核心即将进入工作状态,因此在将目标核心的任务分配状态更新为已分配任务的同时需要开启或接通(或保持开启或接通)目标核心的电源域以准备处理当前待执行任务。当待执行任务处理完成时,针对具有独享电源域的目标核心,可以直接关断其电源域并将任务分配状态更新为未分配任务,因为独享电源域对其他核心没有影响;而针对具有多核心共享电源域的目标核心,不能直接关断目标核心的电源域以避免对共享该电源域的其他核心的工作造成影响,因此,这时需要检测连接该共享电源域的所有核心都是否都没有负载任务,只有当共享电源域相关的所有核心都没有复杂任务(即处于未分配任务状态)时才能关断该共享电源域。这里共享电源域“相关”的所有核心是指以该共享电源域为供电电源的所有核心。
图7示出了根据本申请一些实施例的用于多核系统的核心调度方法实施过程中关键信号波形图。如图7所示,波形图中包括四个关键信号:Core_off、Core_off_done、Assigned、Assigned_done,其分别表示核心的电源域关断信号、电源域开关完成信号、任务分配状态信号、任务分配完成信号。如图7所示,图中右边的数字1、0分别表示各个信号在波形图中的取值,图中的t1、t2、t3、t4分别表示上电开始时刻、上电完成时刻、掉电开始时刻和掉电完成时刻,T上电表示上电过程持续的时间段,T掉电表示掉电过程持续时间段。
如图7所示,默认状态下,例如在t1时刻之前和t4时刻之后,每个核心的电源是关断的,任务分配状态为“未分配任务”,核心状态记录表中相应的参数Core_off为1,Assigned为0;在目标应用发布任务后,核心调度平台330依据根据本申请一些实施例的核心调度方法将该任务分配到某个核心(即目标核心),于是在任务分配完成的t1时刻,Assigned信号首先由0变为1,即任务分配状态被更新为“已分配任务”,以避免目标核心被调度处理其他任务,同时目标核心的Core_off由1变为0,核心开始上电;在t2时刻,上电完成,目标核心的Core_off_done会由1变为0,表示电源域开启完成,同时Assigned_done由0变为1,表明目标核心已经为软件调用和任务执行做好充分准备(即目标核心的任务分配彻底完成),这时可以向软件反馈分配Core_ID以进入任务处理阶段;在分配给目标核心的任务被处理完成的t3时刻,目标核心进入空闲状态,因而参数Core_off由0变为1,目标核心的电源开始掉电;在t4时刻,掉电完成,Core_off_done由0变为1,目标核心的电源域完全关断,这时可以将Assigned和Assigned_done清0,释放目标核心,即目标核心的任务分配状态更新为“未分配任务”。
在图7所示的关于核心的任务分配状态更新和电源域管控过程的关键信号波形图中,Core_off,Assigned信号是核心状态记录表所关注的信息,Assigned_done和Core_off_done是中间信号,这些信号的设置可以避免在目标核心掉电或上电未完成时对其进行调用以及由此造成错误。例如,在上电开始的t1时刻到掉电完成的t4时刻,任务分配状态信号Assigned的值都为1,可以保证从目标核心确定开始(即从上电开始)直至任务处理完成并释放核心(即掉电完成)的整个任务分配处理的过程中,尤其是上电过程(从t1时刻到t2时刻期间)和掉电过程中(从t3时刻到t4时刻期间)中,不会有其他任务被分配给目标核心,从而避免核心调度冲突。此外,电源域开启/关断完成信号Core_off_done和任务分配完成信号Assigned_done在上电完成的t2时刻才被分别更新为0和1,可以确保目标核心在准备就绪时(即电源域完成上电时)才开启相应任务的处理过程,避免因目标核心准备不充分或上电未完成造成任务处理失败。
图8示意性示出了根据本申请一些实施例的用于多核系统的核心调度装置800的示例框图。图8所示的核心调度装置800可以对应于图1核心调度平台130。
如图8所示,用于多核系统的核心调度装置800包括接收模块810、第一获取模块820、第二获取模块830以及确定模块840。接收模块810可以被配置成从目标应用接收任务执行请求,任务执行请求包括待执行任务的任务负载级别。第一获取模块820可以被配置成获取针对多核系统的分级任务分配模式,分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,预期分配的多个任务负载级别是与目标应用相关的。第二获取模块830可以被配置成获取可调度核心区域中各个核心的任务分配状态。确定模块840可以被配置成根据待执行任务的任务负载级别、分级任务分配模式以及可调度核心区域中各个核心的任务分配状态,从可调度核心区域中确定目标核心以用于处理待执行任务。
应注意,上述各种模块可以以软件或硬件或两者的组合来实现。多个不同模块可以在同一软件或硬件结构中实现,或者一个模块可以由多个不同的软件或硬件结构实现。
根据本申请一些实施例的用于多核系统的核心调度装置中,通过按照任务负载级别实现针对相应任务的核心调度(即依照多核阵列中核心与预期分配的任务负载级别的对应关系实现针对多核系统的任务分配),可以根据任务分级预先确定分级任务分配模式以实现不同负载级别任务在核心阵列的可调度核心区域中各个核心位置上的均衡分配或排布(例如较高负载级别的任务和较低负载级别的任务在多核阵列中的交错排布或分配等),使得多核系统核心阵列在任务处理时功率密度相对均衡,避免因高负载任务过度聚集(即高负载任务集中分配给多核阵列中邻近的核心)造成的核心阵列的进行任务处理时的局部高负荷状态、功率密度过大和区域高发热等问题,有效提升了多核系统的整体性能。
图9示意性示出了根据本申请一些实施例的计算设备900的示例框图。计算设备900可以代表用以实现本文描述的各种装置或模块和/或执行本文描述的各种方法的设备。计算设备900可以是例如服务器、台式计算机、膝上型计算机、平板、智能电话、智能手表、可穿戴设备或任何其它合适的计算设备或计算系统,其可以包括从具有大量存储和处理资源的全资源设备到具有有限存储和/或处理资源的低资源设备的各种级别的设备。在一些实施例中,上面关于图8描述的用于多核系统的核心调度装置800可以分别在一个或多个计算设备900中实现。
如图9所示,示例计算设备900包括彼此通信耦合的处理系统901、一个或多个计算机可读介质902以及一个或多个I/O接口903。尽管未示出,但是计算设备900还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传送系统。系统总线可以包括不同总线结构的任何一个或组合,所述总线结构可以是诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何一种的处理器或局部总线。或者,还可以包括诸如控制和数据线。
处理系统901代表使用硬件执行一个或多个操作的功能。因此,处理系统901被图示为包括可被配置为处理器、功能块等的硬件元件904。这可以包括在硬件中实现作为专用集成电路或使用一个或多个半导体形成的其它逻辑器件。硬件元件904不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由(多个)半导体和/或晶体管(例如,电子集成电路(IC))组成。在这样的上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读介质902被图示为包括存储器/存储装置905。存储器/存储装置905表示与一个或多个计算机可读介质相关联的存储器/存储装置。存储器/存储装置905可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置905可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质902可以以下面进一步描述的各种其他方式进行配置。
一个或多个I/O(输入/输出)接口903代表允许用户向计算设备900键入命令和信息并且还允许使用各种输入/输出设备将信息显示给用户和/或发送给其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置为检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)、网卡、接收机等等。输出设备的示例包括显示设备、扬声器、打印机、触觉响应设备、网卡、发射机等。
计算设备900还包括核心调度策略906。核心调度策略906可以作为计算程序指令存储在存储器/存储装置905中,也可以是硬件或固件。核心调度策略906可以连同处理系统901等一起实现关于图8描述的用于多核系统的核心调度装置900的各个模块的全部功能。
本文可以在软件、硬件、元件或程序模块的一般上下文中描述各种技术。一般地,这些模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文所使用的术语“模块”、“功能”等一般表示软件、固件、硬件或其组合。本文描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质传输。计算机可读介质可以包括可由计算设备900访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。
与单纯的信号传输、载波或信号本身相反,“计算机可读存储介质”是指能够持久存储信息的介质和/或设备,和/或有形的存储装置。因此,计算机可读存储介质是指非信号承载介质。计算机可读存储介质包括诸如易失性和非易失性、可移动和不可移动介质和/或以适用于存储信息(诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据)的方法或技术实现的存储设备之类的硬件。计算机可读存储介质的示例可以包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、硬盘、盒式磁带、磁带,磁盘存储装置或其他磁存储设备,或其他存储设备、有形介质或适于存储期望信息并可以由计算机访问的制品。
“计算机可读信号介质”是指被配置为诸如经由网络将指令发送到计算设备900的硬件的信号承载介质。信号介质典型地可以将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波、数据信号或其它传输机制的调制数据信号中。信号介质还包括任何信息传递介质。作为示例而非限制,信号介质包括诸如有线网络或直接连线的有线介质以及诸如声、RF、红外和其它无线介质的无线介质。
如前所述,硬件元件904和计算机可读介质902代表以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本文描述的技术的至少一些方面。硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及硅中的其它实现或其他硬件设备的组件。在这种上下文中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读存储介质。
前述的组合也可以用于实现本文所述的各种技术和模块。因此,可以将软件、硬件或程序模块和其它程序模块实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件904体现的一个或多个指令和/或逻辑。计算设备900可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用处理系统的计算机可读存储介质和/或硬件元件904,可以至少部分地以硬件来实现将模块实现为可由计算设备900作为软件执行的模块。指令和/或功能可以由例如一个或多个计算设备900和/或处理系统901执行/可操作以实现本文所述的技术、模块和示例。
本文描述的技术可以由计算设备900的这些各种配置来支持,并且不限于本文所描述的技术的具体示例。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机程序。例如,本申请的实施例提供一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行本申请的方法实施例中的至少一个步骤的程序代码。
在本申请的一些实施例中,提供了一种或多种计算机可读存储介质,其上存储有计算机可读指令,该计算机可读指令在被执行时实现根据本申请一些实施例的用于多核系统的核心调度方法。根据本申请一些实施例所述的用于多核系统的核心调度方法的各个步骤可以通过程序设计被转化为计算机可读指令,从而存储在计算机可读存储介质中。当这样的计算机可读存储介质被计算设备或计算机读取或访问时,其中的计算机可读指令被计算设备或计算机上的处理器执行以实现根据本申请一些实施例所述的方法。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点被包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序(包括根据所涉及的功能按基本同时的方式或按相反的顺序)来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,则可用本领域公知的下列技术中的任一项或它们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路、具有合适的组合逻辑门电路的专用集成电路、可编程门阵列(Programmable Gate Array)、现场可编程门阵列(Field Programmable Gate Array)等。
本技术领域的普通技术人员可以理解上述实施例方法的全部或部分步骤可以通过程序指令相关的硬件完成,所述程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括执行方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

Claims (20)

1.一种用于多核系统的核心调度方法,其特征在于,所述方法包括:
从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;
获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,所述预期分配的多个任务负载级别是与目标应用相关的;
获取所述可调度核心区域中各个核心的任务分配状态;
根据所述待执行任务的任务负载级别、所述分级任务分配模式以及所述可调度核心区域中各个核心的任务分配状态,从所述可调度核心区域中确定目标核心以用于处理所述待执行任务。
2.根据权利要求1所述的方法,其特征在于,在所述分级任务分配模式中,所述可调度核心区域包括与所述预期分配的多个任务负载级别一一对应的多类核心区域,每类核心区域包括多个不相邻的子区域,每个子区域包括一个核心或相邻的至少两个核心。
3.根据权利要求2所述的方法,其特征在于,所述分级任务分配模式是根据所述预期分配的多个任务负载级别获取的。
4.根据权利要求3所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别和第二任务负载级别的情况下,所述分级任务分配模式为第一分级任务分配模式,
在第一分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第一类核心区域以及与第二任务负载级别对应的第二类核心区域中,且第一类核心区域中的每个子区域和第二类核心区域中的每个子区域均包括一个核心。
5.根据权利要求3所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别的情况下,所述分级任务分配模式为第二分级任务分配模式,
在第二分级任务分配模式中,所述可调度核心区域包括与第一任务负载级别对应的第三类核心区域、与第二任务负载级别对应的第四类核心区域以及与第三任务负载级别对应的第五类核心区域,第四类核心区域中的各子区域与第五类核心区域中的各子区域不相邻。
6.根据权利要求5所述的方法,其特征在于,第二任务负载级别和第三任务负载级别中的每一个对应的任务复杂程度都大于第一任务负载级别对应的任务复杂程度。
7.根据权利要求6所述的方法,其特征在于,第四类核心区域的核心数量和第五类核心区域的核心数量中的每一个都小于第三类核心区域的核心数量。
8.根据权利要求5所述的方法,其特征在于,所述第三类核心区域中每一个子区域、第四类核心区域中每一个子区域以及第五类核心区域中每一个子区域均包括一个核心。
9.根据权利要求6所述的方法,其特征在于,所述可调度核心区域为阵列区域,并且在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差小于第一极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第一子模式,所述极差指示所述预期分配的多个任务负载级别中最高任务负载级别与最低任务负载级别对应的任务复杂程度之间的差异,
在第一子模式中,在可调度核心区域的每一行和每一列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心以及第四类区域中的至少一个核心隔开。
10.根据权利要求9所述的方法,其特征在于,在所述预期分配的多个任务负载级别包括第一任务负载级别、第二任务负载级别和第三任务负载级别且极差大于或等于第二极差阈值的情况下,所述分级任务分配模式为第二分级任务分配模式的第二子模式,其中第一极差阈值小于或等于第二极差阈值,
在第二子模式中,在可调度核心区域的奇数行和奇数列中,第四类区域中的各核心被第三类区域中的一个或多个核心隔开,并且在可调度核心区域的偶数行和偶数列中,第四类区域中的各核心被第三类区域中的至少一个核心以及第五类区域中至少一个核心隔开,第五类区域中各核心被第三类区域中的至少一个核心和第四类区域中的至少一个核心隔开。
11.根据权利要求5-10中任一项所述的方法,其特征在于,第三任务负载级别对应的任务复杂程度大于第二任务负载级别对应的任务复杂程度。
12.根据权利要求11所述的方法,其特征在于,第四类区域的核心数量大于或等于第五类区域的核心数量。
13.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
获取所述目标应用对应的区域调度参数,所述区域调度参数基于所述目标应用运行所需的核心数量确定;
根据所述区域调度参数,从所述多核系统的核心阵列中确定可调度核心区域。
14.根据权利要求1所述的方法,其特征在于,所述分级任务分配模式进一步包括所述可调度核心区域中各个核心的调度顺序,所述调度顺序依照所述可调度核心区域中各个核心的位置顺序确定,并且所述根据所述待执行任务的任务负载级别、所述分级任务分配模式以及所述可调度核心区域中各个核心的任务分配状态,从所述可调度核心区域中确定目标核心以用于处理所述待执行任务,包括:
根据所述分级任务分配模式,从所述可调度核心区域中确定与所述待执行任务的任务负载级别匹配的第一候选核心区域;
基于所述可调度核心区域中各个核心的任务分配状态,从所述第一候选核心区域中确定第二候选核心区域;
依据所述可调度核心区域中各个核心的调度顺序,从所述第二候选核心区域中选取目标核心。
15.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
响应于目标核心被确定,将所述目标核心的任务分配状态更新为已分配任务状态且开启目标核心的电源域。
16.根据权利要求15所述的方法,其特征在于,所述方法进一步包括:
响应于所述目标核心完成所述待执行任务,将所述目标核心的任务分配状态更新为未分配任务状态;
响应于目标核心的电源域相关的所有核心都处于未分配任务状态,关断目标核心的电源域。
17.一种用于多核系统的核心调度装置,其特征在于,所述装置包括:
接收模块,其配置成从目标应用接收任务执行请求,所述任务执行请求包括待执行任务的任务负载级别;
第一获取模块,其配置成获取针对多核系统的分级任务分配模式,所述分级任务分配模式包括多核系统的可调度核心区域中各个核心与预期分配的多个任务负载级别之间的对应关系,所述预期分配的多个任务负载级别是与目标应用相关的;
第二获取模块,其配置成获取所述可调度核心区域中各个核心的任务分配状态;
确定模块,其配置成根据所述待执行任务的任务负载级别、所述分级任务分配模式以及所述可调度核心区域中各个核心的任务分配状态,从所述可调度核心区域中确定目标核心以用于处理所述待执行任务。
18.一种计算设备,其特征在于,包括:
存储器和处理器,
其中所述存储器中存储有计算机程序,所述计算机程序在被所述处理器执行时促使所述处理器执行权利要求1-16中任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,其上存储计算机可读指令,所述计算机可读指令在被执行时实现权利要求1-16中任一项所述的方法。
20.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-16中任一项所述的方法的步骤。
CN202211742119.7A 2022-12-30 2022-12-30 用于多核系统的核心调度方法和装置 Active CN115981819B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211742119.7A CN115981819B (zh) 2022-12-30 2022-12-30 用于多核系统的核心调度方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211742119.7A CN115981819B (zh) 2022-12-30 2022-12-30 用于多核系统的核心调度方法和装置

Publications (2)

Publication Number Publication Date
CN115981819A true CN115981819A (zh) 2023-04-18
CN115981819B CN115981819B (zh) 2023-10-24

Family

ID=85975790

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211742119.7A Active CN115981819B (zh) 2022-12-30 2022-12-30 用于多核系统的核心调度方法和装置

Country Status (1)

Country Link
CN (1) CN115981819B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117950739A (zh) * 2024-03-26 2024-04-30 摩尔线程智能科技(北京)有限责任公司 主控制单元确定方法、装置、设备、存储介质及程序产品

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140181837A1 (en) * 2012-12-24 2014-06-26 Empire Technology Development Llc Dynamically managing distribution of data and computation across cores for sequential programs
CN104331336A (zh) * 2014-11-21 2015-02-04 北京应用物理与计算数学研究所 匹配于高性能计算机结构的多层嵌套负载平衡方法
CN105051689A (zh) * 2013-09-29 2015-11-11 华为技术有限公司 一种多核系统中资源池的调度方法、装置和系统
CN105487919A (zh) * 2014-10-02 2016-04-13 联发科技股份有限公司 多核心处理器系统及任务分配方法
CN107797853A (zh) * 2016-09-07 2018-03-13 深圳市中兴微电子技术有限公司 一种任务调度方法、装置及多核处理器
US20180365068A1 (en) * 2016-05-31 2018-12-20 Guangdong Oppo Mobile Telecommunications Corp., Lt Method for Allocating Processor Resources and Terminal Device
US20210026688A1 (en) * 2018-04-20 2021-01-28 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and Apparatus for Scheduling Processor Core, and Storage Medium
WO2022046150A1 (en) * 2020-08-25 2022-03-03 Futurewei Technologies, Inc. Lightweight thread (lwt) rebalancing in storage systems
WO2022145613A1 (ko) * 2020-12-28 2022-07-07 재단법인대구경북과학기술원 다중 코어 할당 장치 및 방법
CN115391031A (zh) * 2022-08-09 2022-11-25 超聚变数字技术有限公司 一种负载均衡调度方法及计算设备
CN115480902A (zh) * 2022-09-26 2022-12-16 哈尔滨工业大学 关联周期任务的多核处理器节能调度方法、装置及介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140181837A1 (en) * 2012-12-24 2014-06-26 Empire Technology Development Llc Dynamically managing distribution of data and computation across cores for sequential programs
CN105051689A (zh) * 2013-09-29 2015-11-11 华为技术有限公司 一种多核系统中资源池的调度方法、装置和系统
CN105487919A (zh) * 2014-10-02 2016-04-13 联发科技股份有限公司 多核心处理器系统及任务分配方法
CN104331336A (zh) * 2014-11-21 2015-02-04 北京应用物理与计算数学研究所 匹配于高性能计算机结构的多层嵌套负载平衡方法
US20180365068A1 (en) * 2016-05-31 2018-12-20 Guangdong Oppo Mobile Telecommunications Corp., Lt Method for Allocating Processor Resources and Terminal Device
CN107797853A (zh) * 2016-09-07 2018-03-13 深圳市中兴微电子技术有限公司 一种任务调度方法、装置及多核处理器
US20210026688A1 (en) * 2018-04-20 2021-01-28 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Method and Apparatus for Scheduling Processor Core, and Storage Medium
WO2022046150A1 (en) * 2020-08-25 2022-03-03 Futurewei Technologies, Inc. Lightweight thread (lwt) rebalancing in storage systems
WO2022145613A1 (ko) * 2020-12-28 2022-07-07 재단법인대구경북과학기술원 다중 코어 할당 장치 및 방법
CN115391031A (zh) * 2022-08-09 2022-11-25 超聚变数字技术有限公司 一种负载均衡调度方法及计算设备
CN115480902A (zh) * 2022-09-26 2022-12-16 哈尔滨工业大学 关联周期任务的多核处理器节能调度方法、装置及介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
H.R.FARAGARDI等: "An efficient scheduling of AUTOSAR runnables to minimize communication cost in multi-core systems", 《7TH INTERNATIONAL SYMPOSIUM ON TELECOMMUNICATIONS》, pages 41 - 48 *
杨亚琪等: "异构多核下兼顾应用公平性和能耗的调度方法研究", 《计算机工程与科学》, vol. 38, no. 05, pages 848 - 856 *
王野桥: "云计算环境中多维资源动态优化调度的关键技术研究", 《中国博士学位论文全文数据库 信息科技辑》, no. 01, pages 139 - 8 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117950739A (zh) * 2024-03-26 2024-04-30 摩尔线程智能科技(北京)有限责任公司 主控制单元确定方法、装置、设备、存储介质及程序产品

Also Published As

Publication number Publication date
CN115981819B (zh) 2023-10-24

Similar Documents

Publication Publication Date Title
CN115686873B (zh) 用于多核系统的核心调度方法和装置
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
CN102521154B (zh) 用于创建低功率区域的动态存储器分配和重新定位
US20030135621A1 (en) Scheduling system method and apparatus for a cluster
KR20200054403A (ko) 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법
Wang et al. An energy-aware bi-level optimization model for multi-job scheduling problems under cloud computing
CN109906421A (zh) 基于线程重要性的处理器核划分
CN109388486B (zh) 一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法
US10140161B1 (en) Workload aware dynamic CPU processor core allocation
CN115981819B (zh) 用于多核系统的核心调度方法和装置
Deng et al. A data and task co-scheduling algorithm for scientific cloud workflows
CN115048216B (zh) 一种人工智能集群的资源管理调度方法、装置和设备
Gandomi et al. HybSMRP: a hybrid scheduling algorithm in Hadoop MapReduce framework
Maleki et al. MapReduce: an infrastructure review and research insights
CN115686800B (zh) 用于多核系统的动态核心调度方法和装置
US10185384B2 (en) Reducing power by vacating subsets of CPUs and memory
JP5810918B2 (ja) スケジューリング装置、スケジューリング方法及びプログラム
US20230289223A1 (en) Task scheduling method, game engine, device and storage medium
CN115686871B (zh) 用于多核系统的核心调度方法和装置
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
Alqudah et al. Energy reduction through memory aware real-time scheduling on virtual machine in multi-cores server
Tang et al. Edge computing energy-efficient resource scheduling based on deep reinforcement learning and imitation learning
CN114489978A (zh) 资源调度方法、装置、设备及存储介质

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