CN115469976A - 一种任务调度的方法、系统和硬件任务调度器 - Google Patents
一种任务调度的方法、系统和硬件任务调度器 Download PDFInfo
- Publication number
- CN115469976A CN115469976A CN202110648382.9A CN202110648382A CN115469976A CN 115469976 A CN115469976 A CN 115469976A CN 202110648382 A CN202110648382 A CN 202110648382A CN 115469976 A CN115469976 A CN 115469976A
- Authority
- CN
- China
- Prior art keywords
- task
- candidate
- cpu core
- hardware
- metadata
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 238000012545 processing Methods 0.000 claims abstract description 6
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000007781 pre-processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000002904 solvent Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
公开了一种任务调度的方法、系统和硬件任务调度器,属于计算机技术领域。硬件任务调度器为中央处理单元CPU核提供任务调度以选择候选任务。在选择了候选任务后,CPU核主动发送该候选任务的元数据到第一存储区域,主动发送该候选任务的上下文到高速缓存。该第一存储区域位于访问速度快于内存的存储空间中。在执行任务切换时,CPU核从第一存储区域读取候选任务的元数据,从高速缓存读取候选任务的上下文,降低了CPU核获取候选任务元数据和上下文的时延。实现了低时延的任务切换。
Description
技术领域
本申请涉及计算机领域,特别涉及一种任务调度的方法、系统和硬件任务调度器。
背景技术
在多任务的系统中,中央处理单元(central processing unit,CPU)或CPU核会在多个任务间调度切换,以分时执行不同的任务。任务调度切换时延的大小会影响任务执行的实时性,继而影响整个系统的性能。
如果采用基于软件的任务调度方法,任务调度和任务切换会串行同步执行。串行同步执行的任务调度和任务切换会消耗较长的时间。任务调度返回候选任务后,任务切换时还可能需要访问内存以获取该候选任务的相关信息。访问内存会消耗较长的时间。
发明内容
本申请提供了一种任务调度的方法、系统和硬件任务调度器,能够实现低时延的任务切换,以提升任务执行的实时性和系统的性能。
第一方面,提供了一种任务调度系统。所述任务调度系统包括CPU核和硬件任务调度器。
其中,所述硬件任务调度器用于执行任务调度以选择候选任务,并主动发送所述候选任务的元数据到第一存储区域。
其中,所述CPU核用于从所述第一存储区域读取所述候选任务的元数据以执行所述候选任务。
其中,所述第一存储区域位于访问速度快于内存的存储区域中。所述第一存储区域包括所述CPU核的内部存储空间和/或所述CPU核的高速缓存。
在执行选择的候选任务之前,CPU核需要发送命令以获取该候选任务的元数据。若该元数据存储于内存中,CPU核需要消耗较多的时间以读取该元数据。本申请提供的任务调度系统中,硬件任务调度器在完成任务调度后,不等待CPU核发送获取该选择的候选任务元数据的指令,而是主动发送该选择的候选任务的元数据,且将该元数据发送到访问速度快于内存的存储区域。所以,CPU核可以更快地从访问速度快于内存的存储区域读取该元数据。因此,本申请提供的任务调度系统降低了CPU核获取元数据的时延。实现了低时延的任务切换。
根据第一方面,在第一方面的第一种可能的实现方式中,所述候选任务的元数据包括所述候选任务的上下文的存储位置信息、所述候选任务的标识和所述候选任务的状态。
其中,候选任务的标识用于区分候选任务。
其中,候选任务的上下文是指CPU核运行该任务所需的最小数据集。在中断该任务,或者,切换该任务时,CPU核保存该任务的上下文。当需要运行该任务时,CPU核读取该任务的上下文以恢复该任务的运行环境。
根据第一方面,或,第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述硬件任务调度器还用于主动发送所述候选任务的上下文到所述CPU核的高速缓存。
候选任务的上下文有可能存储于内存。若CPU核从内存中获取候选任务的上下文将消耗较多的时间。因为硬件任务调度器在执行完任务调度后主动发送候选任务的上下文到CPU核的高速缓存,所以CPU核可以及时地从高速缓存中读取该上下文。CPU核从高速缓存中读取该上下文消耗的时间要小于CPU核从内存读取该上下文消耗的时间。进一步降低了任务切换的时延。
根据第一方面,或,第一方面的第一种或第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述硬件任务调度器还用于将存储于所述硬件任务调度器的所述候选任务的上下文主动发送到所述CPU核的高速缓存。
根据第一方面,或,以上第一方面的任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述CPU核还用于发送所述被切换的任务的元数据到第二存储区域。所述硬件任务调度器还用于从所述第二存储区域读取所述被切换的任务的元数据,并将所述被切换的任务的元数据存储于所述硬件任务调度器。
其中,所述第二存储区域位于内存中,或,位于访问速度快于内存的存储区域中,所述第二存储区域不同于所述第一存储区域。
第二方面,提供一种任务调度方法。所述方法包括:硬件任务调度器执行任务调度以选择候选任务,并主动发送所述候选任务的元数据到第一存储区域。
其中,所述第一存储区域位于访问速度快于内存的存储区域中。所述第一存储区域包括CPU核的内部存储空间和/或所述CPU核的高速缓存。所述CPU核用于执行所述候选任务。
根据第二方面,在第二方面的第一种可能的实现方式中,所述候选任务的元数据包括所述候选任务的上下文的存储位置信息、所述候选任务的标识和所述候选任务的状态。
根据第二方面,或,第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述硬件任务调度器主动发送所述候选任务的上下文到所述CPU核的高速缓存。
根据第二方面,或,第二方面的第一种或第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述硬件任务调度器将存储于所述硬件任务调度器的所述候选任务的上下文主动发送到所述CPU核的高速缓存。
根据第二方面,或,以上第二方面的任一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述硬件任务调度器从第二存储区域读取被切换的任务的元数据,并将所述被切换的任务的元数据存储于所述硬件任务调度器。
其中,所述第二存储区域位于内存中,或,位于访问速度快于内存的存储区域中。所述第二存储区域不同于所述第一存储区域。
第三方面,提供一种任务调度方法。所述方法包括:CPU核从第一存储区域读取候选任务的元数据以执行所述候选任务。
其中,所述第一存储区域位于访问速度快于内存的存储区域中。所述第一存储区域包括所述CPU核的内部存储空间和/或所述CPU核的高速缓存。
根据第三方面,在第三方面的第一种可能的实现方式中,所述候选任务的元数据包括所述候选任务的上下文的存储位置信息、所述候选任务的标识和所述候选任务的状态。
根据第三方面,或,第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述CPU核发送被切换的任务的元数据到第二存储区域。
其中,所述第二存储区域位于内存中,或,位于访问速度快于内存的存储区域中。所述第二存储区域不同于所述第一存储区域。
第四方面,提供一种硬件任务调度器。所述硬件任务调度器包括存储器和处理器。
其中,所述存储器用于存储一个或多个候选任务的元数据。
其中,所述处理器用于执行任务调度以选择候选任务,并主动将存储于所述存储器的所述选择的候选任务的元数据发送到第一存储区域。
其中,所述第一存储区域位于访问速度快于内存的存储区域中。所述第一存储区域包括CPU核的内部存储空间和/或所述CPU核的高速缓存。所述CPU核用于执行所述选择的候选任务。
根据第四方面,在第四方面的第一种可能的实现方式中,所述选择的候选任务的元数据包括所述选择的候选任务的上下文的存储位置信息、所述选择的候选任务的标识和所述选择的候选任务的状态。
根据第四方面,或,第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述处理器还用于发送所述选择的候选任务的上下文到所述CPU核的高速缓存。
根据第四方面,或,第四方面的第一种或第二种可能的实现方式,在第四方面的第三种可能的实现方式中,所述存储器还用于存储所述选择的候选任务的上下文。
根据第四方面的第三种可能的实现方式,在第四方面的第四种可能的实现方式中,所述处理器还用于将存储于所述存储器内的所述选择的候选任务的上下文发送到所述CPU核的高速缓存。
根据第四方面,或,以上第四方面的任一种可能的实现方式,在第四方面的第五种可能的实现方式中,所述处理器还用于从第二存储区域读取被切换的任务的元数据,并将所述被切换的任务的元数据存储于所述存储器。
其中,所述第二存储区域位于内存中,或,位于访问速度快于内存的存储区域中。所述第二存储区域不同于所述第一存储区域。
第五方面,提供一种硬件任务调度器。所述硬件任务调度器包括存储模块和任务管理模块。
其中,所述存储模块用于存储一个或多个候选任务的元数据。
其中,所述任务管理模块用于执行任务调度以选择候选任务,并主动将存储于所述存储模块的所述选择的候选任务的元数据发送到第一存储区域。
其中,所述第一存储区域位于访问速度快于内存的存储区域中。所述第一存储区域包括CPU核的内部存储空间和/或所述CPU核的高速缓存。所述CPU核用于执行所述选择的候选任务。
根据第五方面,在第五方面的第一种可能的实现方式中,所述选择的候选任务的元数据包括所述选择的候选任务的上下文的存储位置信息、所述选择的候选任务的标识和所述选择的候选任务的状态。
根据第五方面,或,第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,所述任务管理模块还用于发送所述选择的候选任务的上下文到所述CPU核的高速缓存。
根据第五方面,或,第五方面的第一种或第二种可能的实现方式,在第五方面的第三种可能的实现方式中,所述存储模块还用于存储所述选择的候选任务的上下文。
根据第五方面的第三种可能的实现方式,在第五方面的第四种可能的实现方式中,所述任务管理模块还用于将存储于所述存储模块的所述选择的候选任务的上下文发送到所述CPU核的高速缓存。
根据第五方面,或,以上第五方面的任一种可能的实现方式,在第五方面的第五种可能的实现方式中,所述任务管理模块还用于从第二存储区域读取被切换的任务的元数据,并将所述被切换的任务的元数据存储于所述存储模块。
其中,所述第二存储区域位于内存中,或,位于访问速度快于内存的存储区域中。所述第二存储区域不同于所述第一存储区域。
附图说明
图1是本申请实施例所涉及的一种实施环境示意图;
图2是本申请实施例提供的一种任务调度方法的流程图;
图3是本申请实施例提供的与图2所示任务调度方法对应的时序图;
图4是本申请实施例提供的另一种任务调度方法的流程图;
图5是本申请实施例提供的与图4所示任务调度方法对应的时序图;
图6是本申请实施例提供的另一种任务调度方法的流程图;
图7是本申请实施例提供的与图6所示任务调度方法对应的时序图;
图8是本申请实施例提供的一种硬件任务调度器的逻辑结构示意图;
图9是本申请实施例提供的一种硬件任务调度器的硬件结构示意图;
图10是本申请实施例提供的一种任务调度系统示意图;
图11是本申请实施例提供的另一种任务调度系统示意图;
具体实施方式
为使本申请的原理、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例提供一种基于硬件的任务调度方法。请参考图1,其示出了本申请实施例涉及的一种实施环境示意图。参见图1,该实施环境包括计算机设备100。该计算机设备100是执行多任务系统的设备,包括多种类型的设备。例如,该计算机设备100,可以是手机,也可以是个人电脑,还可以是服务器。该计算机设备100包括CPU110和内存120。CPU110和内存120通过总线互连。其中,CPU110包括一个或多个CPU核(core)。例如,CPU110包括两个CPU核:CPU core111和CPU core 112。CPU核包括控制单元(control unit,CU)、算术逻辑单元(arithmetic logic unit,ALU)、寄存器、一级高速缓存(level 1cache,L1cache)和二级高速缓存(level 2cache,L2 cache)。例如,CPU core 111包括CU111-1、ALU111-2、寄存器111-3、L1 cache 111-4和L2 cache 111-5。CPU core 112包括CU112-1、ALU112-2、寄存器112-3、L1 cache 112-4和L2 cache112-5。CPU还包括三级高速缓存(level 3cache,L3cache)。例如,CPU110包括L3 cache 113。有些计算机设备还包括四级高速缓存(level4cache,L4cache)。例如,CPU110包括L4 cache 114。L1 cache、L2 cache、L3 cache和L4cache统称为高速缓存(cache)。级别最高的高速缓存被称为最后一级高速缓存(lastlevel cache,LLC)。例如,当CPU不包括L4 cache时,L3 cache被称为LLC。当L4 cache是CPU的级别最高的高速缓存时,L4 cache被称为LLC。CU、ALU和cache通过片内总线互连。
该计算机设备100还可以包括其他组件。例如,网卡、显示器、鼠标、键盘等。
寄存器的访问速度快于内存的访问速度。CU/ALU从寄存器读取数据所消耗的时间要小于CU/ALU从内存读取数据所消耗的时间。CU/ALU向寄存器写入数据所消耗的时间要小于CU/ALU向内存写入数据所消耗的时间。Cache的访问速度慢于寄存器。但,Cache的访问速度快于内存。其中,cache的级别越低,cache的访问速度越快。例如,L1 cache的访问速度快于L2 cache。L2 cache的访问速度快于L3 cache。L3 Cache的访问速度快于L4 cache。
CPU核通过CU执行指令以执行任务。若指令涉及到数据运算,则ALU执行相关运算。在执行指令的过程中,CU从寄存器中读取指令。在运算过程中,ALU从寄存器中读取数据。寄存器的存储空间非常小。所以,相关指令或数据可能不在寄存器中。若寄存器内没有相关指令或数据,则CU从内存获取指令或数据。因为cache的访问速度快于内存,所以在发出内存访问请求时,CU会先查看cache中是否有相关的指令或数据。若cache中有相关的指令或数据,则CU会从cache中读取相关的指令或数据。若cache中没有相关的指令或数据,则相关的指令或数据会被从内存发送到cache,再从cache发送到寄存器。因此,当CPU core需要的数据仅存在于内存时,CPU读取该数据的时延较大;若该数据存在于高速缓存,则时延较低。而且,高速缓存的级别越低,CPU读取该数据的时延越低。
CPU核还可以包括内部存储空间。例如,CPU core 111包括内部存储空间111-6。CPU core 112包括内部存储空间112-6。当CPU核包括内部存储空间时,该内部存储空间仅用于存储该CPU核需要的数据或指令。存储于该内部存储空间的内容不会被其他CPU核修改。例如,存储于内部存储空间111-6的内容不会被CPU core 112修改。存储于内部存储空间112-6的内容不会被CPU core 111修改。基于不同的实现形式,内部存储空间内存储的内容可以由L1 cache推送,也可以由LLC推送。内部存储空间的访问速度快于cache。若CPU核需要的数据存在于内部存储空间,则CPU核读取该数据的时延也较低。
当需要切换任务时,CPU核执行任务调度指令来选择候选任务。确定该候选任务后,CPU核获取该候选任务的元数据和上下文。然后,CPU核执行任务切换以执行该候选任务。该候选任务的元数据或上下文可能存在于内存中,因此CPU核获取该候选任务的元数据或上下文的时延较大。本申请实施例提供的技术方案,在计算机设备中增加硬件任务调度器,该硬件任务调度器负责执行任务调度以选择候选任务。该硬件任务调度器并行完成任务调度。例如,当CPU核还在执行当前任务的指令时,该硬件任务调度器并行地执行任务调度。该硬件任务调度器还可以提前完成任务调度。例如,当CPU核还在执行当前任务的指令时,该硬件任务调度器已经完成任务调度。该硬件任务调度器提前或并行地成任务调度,使得任务调度消耗的时间可以忽略不计。并且,该硬件任务调度器在完成任务调度后不等待CPU核发送获取该候选任务的元数据的指令,而是主动发送该候选任务的元数据到指定的存储区域。硬件任务调度器主动发送该候选任务的元数据,使得该候选任务的元数据能够更早地被发送到指定的存储区域。该指定的存储区域位于访问速度快于内存的存储空间。例如,该指定的存储区域位于CPU核的内部存储空间,或者,该指定的存储区域位于高速缓存中。当该指定的存储区域位于高速缓存中时,该指定的存储区域可以位于多级高速缓存中的某一级高速缓存。例如,该指定的存储区域位于一级高速缓存中。或者,该指定的存储区域位于二级高速缓存。因为该硬件任务调度器主动发送该候选任务的元数据到访存速度较快的指定的存储区域,所以CPU核能够及时地从该访存速度较快的指定的存储区域中获取到该候选任务的元数据,降低了CPU核获取候选任务元数据的时延。其中,若该指定的存储区域位于CPU核的内部存储空间,CPU核获取候选任务元数据的时延最低。若该指定存储区域位于高速缓存中,高速缓存的级别越低,CPU核获取候选任务元数据的时延越低。另外,该硬件任务调度器在完成任务调度后主动发送该候选任务的上下文到高速缓存,使得CPU核能够及时地从高速缓存中获取到该候选任务的上下文,降低了CPU核获取候选任务上下文的时延。本申请实施例提供的技术方案,通过消除任务切换调度中的任务调度时间,降低CPU核获取候选任务元数据和上下文的时延,降低了任务切换调度的总时延。本申请实施例的详细方案请参考下述描述。
请参考图2,其示出了本申请实施例提供的一种任务调度方法的流程图。在该流程中,硬件任务调度器先接收CPU核的任务调度指令,然后执行任务调度以选择候选任务。在选择了候选任务后,硬件任务调度器主动发送该候选任务的元数据到指定存储区域,并主动发送该候选任务的上下文到高速缓存。该指定的存储区域位于访问速度快于内存的存储区域中。例如,该指定的存储区域位于高速缓存。或者,该指定的存储区域位于CPU核的内部存储空间。CPU核在执行任务切换前从访存速度更快的指定存储区域获取该候选任务的元数据,从高速缓存中获取该候选任务的上下文。该任务调度方法流程包括如下步骤:
步骤201、CPU核发送消息给硬件任务调度器,通知硬件任务调度器执行任务调度。
CPU核在执行当前任务的过程中发送消息给硬件任务调度器,以通知硬件任务调度器更早地开始执行任务调度以选择候选任务。例如,CPU核发送任务调度指令给硬件任务调度器以通知硬件任务调度器开始执行任务调度。CPU核可以通过多种机制决定发送任务调度指令的时机。例如,CPU核可以检测当前任务的运行时间。若该运行时间超过阈值,则CPU核发送任务调度指令。或者,CPU核可以检测当前任务的代码中的特殊指令。当检测到特殊指令时,CPU核发送任务调度指令。CPU核也可以在执行完当前任务时,例如,当前任务的执行时间到期时,发送任务调度指令。
CPU核发送该任务调度指令给硬件任务调度器。例如,CPU核将该CPU核标识写入硬件任务调度器内的某个存储区域,以触发硬件任务调度器执行任务调度为该CPU核标识所代表的CPU核选择一个候选任务。
发送任务调度指令后,CPU核继续执行当前任务,并执行调度前的预处理。例如,检查当前任务的状态。若当前任务的状态不允许该任务被切换,则CPU核继续执行当前任务。若该任务允许被切换,则CPU核在检测到切换时机时,执行步骤205-208以获取候选任并执行任务切换。CPU核可以通过多种方式检测该切换时机。例如,检测当前任务的执行时间是否到期,或者,检测是否执行到某个特殊的指令。
在CPU核继续执行当前任务或执行调度前预处理时,硬件任务调度器并行地执行步骤202-204完成任务调度以选择候选任务,并发送该候选任务的相关信息。
CPU核执行任务切换是为了执行硬件任务调度器选择的候选任务。执行任务切换前CPU核正在运行的任务称为被切换的任务。
步骤202、硬件任务调度器执行任务调度以选择候选任务。
硬件任务调度器内有一个或多个候选任务队列。每个候选任务队列包括一个或多个候选任务的元数据。该元数据包括候选任务的标识、候选任务的状态和候选任务的上下文的存储位置信息。
其中,候选任务的标识用于区分不同的候选任务。
其中,候选任务的状态包括就绪、执行、新建、阻塞、终止等。其中,就绪状态表示该任务已获得除CPU核以外的所有必要资源,等待CPU核的执行。硬件任务调度器在已处于就绪状态的候选任务中选择候选任务供CPU核执行。
其中,候选任务的上下文是指CPU核运行该任务所需的最小数据集。在中断该任务,或者,切换该任务时,CPU保存该任务的上下文。当需要运行该任务时,CPU读取该任务的上下文以恢复该任务的运行环境。内存中存储了候选任务的上下文。候选任务的上下文的存储位置信息包括该候选任务的上下文在内存中的存储地址。该存储位置信息可能还包括该候选任务上下文的长度。多种方式可用于表示该上下文的长度。例如,相对于该上下文在内存中存储位置的字节偏移量。或者,该上下文所占用的缓存行(cache line)数目。
候选任务的元数据还可以包括候选任务关联的CPU核。候选任务关联的CPU核,表示该任务与该CPU核的亲和性。即,该任务更期望被哪个或者哪些CPU核执行。硬件任务调度器在接收到CPU核的调度指令之后,优先在与该CPU核有关联的候选任务中选择候选任务以供该CPU核执行。硬件任务调度器还可以基于其他方式表示候选任务与CPU核的亲和性。例如,硬件任务调度器为每个CPU核维护一个队列,将与CPU核亲和的候选任务存入该CPU核对应的队列中。
该元数据还可以包括候选任务的优先级、时间片阈值等信息。
硬件任务调度器执行任务调度以选择候选任务。硬件任务调度器可以优先在与该CPU核亲和的候选任务中选择候选任务。硬件任务调度器也可以在未指定任何亲和CPU的候选任务中选择候选任务。硬件任务调度器执行任务调度算法来完成任务调度。该任务调度算法可以是多种类型的调度算法。例如,最短时间优先调度、轮询、权重调度、优先级调度等。
步骤203、硬件任务调度器主动发送该候选任务的元数据到指定存储区域。
在选择出候选任务后,硬件任务调度器主动发送该候选任务的元数据到指定存储区域。该指定的存储区域位于访问速度快于内存的存储区域中。例如,该指定的存储区域包括该CPU核的内部存储区域。又例如,该指定的存储区域包括该CPU核的高速缓存。CPU核的高速缓存可以在CPU核内或核外。例如,位于该CPU核内的L1 cache或L2 cache,或者,位于该CPU核外的L3 cache或L4 cache。硬件任务调度器主动发送该候选任务的元数据该指定的存储区域,使得该CPU核可以更快地获取到该候选任务的元数据。
硬件任务调度器可以基于多种方式发送该候选任务的元数据到指定的存储区域。例如,硬件任务调度器基于专用通道,直接发送该候选任务的元数据到指定的存储区域。或者,硬件任务调度器还可以发送指令到总线。总线基于总线协议执行该指令以将该候选任务的元数据发送到指定的存储区域。例如,当总线是进阶精简指令集机器(Advanced RISCMachine,ARM)高级微控制器总线架构(Advanced Microcontroller Bus Architecture,AMBA)总线时,硬件任务调度器发送缓存隐藏(cache stashing)相关指令以将候选任务的元数据发送到高速缓存中。cache stashing指令默认将候选任务的元数据发送到L3cache。该指令携带的参数包括该候选任务的元数据和为该候选任务分配的内存地址。基于总线协议,总线执行该指令将该候选任务的元数据存入与该内存地址匹配的高速缓存中。硬件任务调度器还可以在该指令的参数中设置高速缓存的级别,以将候选任务的元数据发送到指定级别的高速缓存中。例如,L2 cache。当计算机设备包括多个CPU核时,硬件任务调度器还可以在该指令的参数中设置CPU核的标识,以将候选任务的元数据发送到该标识指定的CPU核能够访问的高速缓存中。硬件任务调度器在其驱动程序中为CPU核设置该内存地址。在计算机设备启动时,CPU核读取该内存地址。当CPU核基于该内存地址读取该候选任务的元数据时,将直接从高速缓存中读取该候选任务的元数据。
步骤204、硬件任务调度器主动发送该候选任务的上下文到高速缓存。
在选择了候选任务后,硬件任务调度器主动发送该候选任务的上下文到高速缓存,以使得CPU核可以及时地从高速缓存中获取到该候选任务的上下文。
与步骤203类似,硬件任务调度器可以发送指令以将该候选任务的上下文发送到高速缓存。该指令携带的参数包括该候选任务的上下文的内存地址。总线执行该指令时,将存储于该内存地址的该候选任务的上下文发送到高速缓存。类似地,硬件任务调度器还可以在该指令的参数中设置高速缓存的级别,以将该候选任务的上下文发送到指定级别的高速缓存中。在执行该指令时,若该候选任务的上下文已存储于指定级别的高速缓存中,则总线不再发送存储于内存地址的该候选任务的上下文。若该候选任务存储于LLC,且指令要求将上下文发送到高级别的高速缓存(例如,L2 cache),则该候选任务的上下文会被从LLC推送到高级别的高速缓存。因为存储于硬件任务调度器的候选任务的元数据中包括该候选任务的上下文的存储地址,所以硬件任务调度器能够获取该候选任务的上下文的内存地址。该候选任务的元数据被硬件任务调度器发送到高速缓存。所以,当CPU核获取到该候选任务的元数据后,CPU核也可以获取到该候选任务的内存地址。获取到该候选任务的内存地址后,CPU核基于该内存地址读取候选任务的上下文。因为该候选任务的上下文已经被发送到高速缓存,因此CPU核将能够直接从高速缓存中读取候选任务的上下文。
步骤205、CPU核读取该候选任务的元数据。
在CPU核执行当前任务及任务调度预处理时,硬件任务调度器已经通过执行任务调度选择了候选任务,并将该候选任务的元数据发送到指定存储区域。因此,CPU核可以从该指定存储区域读取候选任务的元数据。该指定存储区域位于CPU核的内部存储空间或者高速缓存中。因此,CPU核可以快速的获取到该候选任务的元数据。
步骤206、CPU读取该候选任务的上下文。
获取到候选任务的元数据后,CPU从该元数据中读出该候选任务上下文的存储位置信息。CPU基于该存储位置信息读取上下文。因为硬件任务调度器发送该候选任务的上下文到高速缓存,所以CPU核可以从高速缓存中读取该上下文。
步骤207、CPU核将被切换的任务的元数据存入硬件任务调度器。
CPU将被切换的任务元数据存入硬件任务调度器,以便硬件任务调度器将该被切换的任务的元数据存入候选任务队列。在后续任务调度中,硬件任务调度器可以再次选择该被切换的任务作为候选任务,以使得该被切换的任务可以被CPU核再次执行。CPU核可以通过多种方法将被切换的任务的元数据存入硬件任务调度器。例如,CPU核可以通过如下两种实现方式(207A和207B)的任一种,将被切换的任务的元数据存入硬件任务调度器。
207A:CPU核发送被切换的任务的元数据给硬件任务调度器,硬件任务调度器将被切换的任务的元数据存入候选任务队列。
CPU核发送被切换的任务的元数据给硬件任务调度器。例如,CPU核将被切换的任务的元数据写入硬件任务调度器内的某个存储区域,以促使硬件任务调度器从该指定存储区域读取被切换的任务的元数据,并将该被切换的任务的元数据存入候选任务队列。硬件任务调度器在执行后续的任务调度时,可以再次选择该被切换的任务,以使得该被切换的任务再次被CPU核执行。
207B:CPU核发送被切换的任务的元数据到指定存储区域,硬件任务调度器从该指定存储区域读取被切换的任务的元数据,并将被切换的任务的元数据存入候选任务队列。
CPU核发送被切换的任务的元数据到指定存储区域。该指定存储区域可以位于访问速度快于内存的存储区域。例如,该指定存储区域包括该CPU核的内部存储空间。又例如,该指定存储区域包括该CPU核的高速缓存。CPU核的高速缓存可以在CPU核内或核外。例如,位于该CPU核内的L1 cache或L2 cache,或者,位于该CPU核外的L3 cache或L4 cache。与步骤203类似,CPU核可以通过专用通道以将被切换的任务的元数据发送到该指定的存储区域。CPU核也可以发送指令,以使得被切换的任务的元数据发送到指定的存储区域。因为保存被切换的任务的元数据不影响候选任务的执行,所以该指定存储区域还可以位于内存中。CPU核直接将被切换的任务的元数据写入位于内存中的存储区域。
CPU核将被切换的任务的元数据写入到指定存储区域触发硬件任务调度器读取该被切换的任务的元数据。或者,硬件任务调度器检测该指定存储区域。一旦发现有任务的元数据存储于该指定存储区域,则硬件任务调度器从该指定存储区域读取任务的元数据。读取任务的元数据后,硬件任务调度器将其存入硬件任务调度器的候选任务队列。硬件任务调度器在执行后续的任务调度时,可以再次选择该任务以使得该任务再次被CPU核执行。
该指定存储区域和步骤203中的指定存储区域可以位于同一个存储空间。例如,该指定存储区域和步骤203中的指定存储区域均位于L2 cache。或者,该指定存储区域和步骤203中的指定存储区域均位于CPU核的内部存储空间。该指定存储区域和步骤203也可以位于不同的存储空间。例如,该指定存储区域位于L3 cache,步骤203中的指定存储区域位于L2 cache。或者,该指定存储区域位于内存,步骤203中指定的存储区域位于L2 cache。
该指定存储区域和步骤203中的指定存储区域是不同的存储区域。CPU核向该指定存储区域写入被切换的任务的元数据,硬件任务调度器从该指定存储区域读出被切换的任务元数据。硬件任务调度器向步骤203中的指定存储区域写入选择的候选任务的元数据,CPU核从步骤203中的指定存储区域读出选择的候选任务的元数据。为区分二者,本申请实施例将步骤203中的指定存储区域称为第一存储区域,将步骤207B中的指定存储区域称为第二存储区域。
步骤208、CPU核执行任务切换,以运行该候选任务。
获取候选任务的上下文后,CPU核切换上下文以执行该候选任务。
在执行任务切换前,CPU核执行任务切换前的预处理。例如,保存被切换任务的运行状态和该任务的内存基地址。现代操作系统通常采用虚拟内存管理机制。例如,若CPU核有32位地址线,则该CPU核可以访问4吉比特(gigabit,Gb)的存储空间。这4Gb存储空间的地址被称为物理地址。基于虚拟内存管理机制,每个任务(例如,进程)都有自己独立的4G的地址空间。每个任务的独立的4G地址空间的地址被称为虚拟地址。CPU核在执行某个任务时,需要将该任务的虚拟地址转换为物理地址,以访问该物理地址对应的存储单元。内存管理单元(memory management unit,MMU)负责将任务的虚拟地址转换为物理地址。该地址转换依赖于该任务的内存基地址。
综上所述,本申请实施例提供的任务调度方法的时序图如图3所示。CPU核在执行当前任务的过程中发送任务调度指令。因此,在CPU核继续执行当前时,硬件任务调度器可以并行的执行任务调度以选择候选任务。硬件任务调度器并行地执行任务调度,使得任务调度消耗的时间可以忽略不计。在完成任务调度后,硬件任务调度器不等待CPU核发送指令以触发硬件任务调度器发送候选任务的元数据,而是主动将该候选任务的元数据发送到访存速度更快的第一存储区域,使得CPU核能够及时地从访问速度更快的第一存储区域读取候选任务的元数据。降低了CPU核获取候选任务元数据的时延。在完成任务调度后,硬件任务调度器主动发送该候选任务的上下文到高速缓存,使得CPU核能够及时地从高速缓存中读取候选任务的上下文。降低了CPU核获取上下文的时延。本实施例提供的任务调度方法降低了任务调度切换的时延。
图4和图6是本申请实施例提供的另外两种任务调度方法的流程图。对于图4和图6所示方法实施例中未披露的细节,请参照图3所示的方法实施例。
请参考图4,其示出了本申请实施例提供的另一种任务调度方法的流程图。在该流程中,硬件任务调度器先执行任务调度以选择候选任务,预先读取该候选任务的上下文,并将该候选任务的上下文存储在硬件任务调度器的内部。当接收到CPU核的任务调度指令时,硬件任务调度器发送该候选任务的元数据到第一存储区域,发送该候选任务的上下文到高速缓存。在执行任务切换前,CPU核从访问速度更快的第一存储区域获取该候选任务的元数据,从高速缓存中获取该候选任务的上下文。该任务调度方法流程包括如下步骤:
步骤401、硬件任务调度器执行任务调度以选择候选任务。
步骤402、硬件任务调度器获取该候选任务的上下文,并存储该候选任务的上下文到该硬件任务调度器。
在选择候选任务后,硬件任务调度器获取该候选任务的上下文,并将其存储于硬件任务调度器内部。例如,硬件任务调度器发送读指令到总线,以读出该候选任务的上下文并存储于硬件任务调度器。该读指令携带的参数包括该候选任务上下文的存储位置信息。
步骤403、CPU核发送消息通知硬件任务调度器执行任务调度。
CPU核发送消息通知硬件任务调度器执行任务调度。例如,CPU核发送任务调度指令给硬件任务调度器,以通知硬件任务调度器执行任务调度。发送完该指令后,CPU核继续执行当前任务或调度前预处理。
硬件任务调度器已于步骤401完成任务调度。因此,接收到此指令时,硬件任务调度器可以直接从选择好的候选任务中为该CPU核选择一个候选任务。例如,从选择好的候选任务中选择一个与该CPU核亲和的候选任务。然后,硬件任务调度器执行步骤404和步骤405,发送该候选任务的元数据和上下文。
步骤404、硬件任务调度器发送该候选任务的元数据到第一存储区域。
步骤405、硬件任务调度器发送该候选任务的上下文到高速缓存。
硬件任务调度器在步骤402中已经将上下文存储于该硬件任务调度器。该上下文还存储于内存。该上下文还可能存储于该CPU核的高速缓存。如果在该上下文存储于该硬件任务调度器之后,存储于其他位置的该上下文被修改了,那么存储于该硬件任务调度器的该上下文就是无效的。如果存储于该硬件任务调度器的该上下文是无效的,该硬件任务调度器不能直接将存储于该硬件任务调度器的该上下文发送到CPU核的高速缓存。因此,硬件任务调度器在发送该上下文之前,需要判断该上下文是否有效。有多种方式可以判断该上下文是否有效。例如,硬件任务调度器为存储于硬件任务调度器的每一个上下文设置一个标志,外部存储(内存或者高速缓存)在修改了上下文后修改该标志,硬件任务调度器检测该标志以判断上下文的有效性。或者,硬件任务调度器通过检测总线一致性来判断上下文的有效性。
当该候选任务的上下文有效时,硬件任务调度器将存储于硬件任务调度器内部的上下文发送到高速缓存。在步骤203中,硬件任务调度器将存储于硬件任务调度器内部的元数据发送到高速缓存。硬件任务调度器将存储于硬件任务调度器内部的上下文发送到高速缓存,类似于步骤203。
当上下文无效时,硬件任务调度器执行类似于步骤204的指令以发送候选任务的上下文到高速缓存。此时,被发送到高速缓存的上下文不是存储硬件任务调度器中的上下文。该被发送到高速缓存的上下文有可能被存储于内存。该被发送到高速缓存的上下文有可能已经存储于高速缓存。
步骤406、CPU核读取该候选任务的元数据。
在CPU核执行当前任务及任务调度预处理时,硬件任务调度器已经将该候选任务元数据发送到第一存储区域。因此,CPU核可从第一存储区域读取候选任务的元数据,以切换执行该候选任务。
步骤407、CPU核读取该候选任务的上下文。
获取到候选任务的元数据后,CPU核从该元数据中读出该候选任务上下文的存储位置信息。CPU核基于该存储位置信息读取上下文。因为该上下文已经被发送到高速缓存了,所以CPU核将从高速缓存中读取该上下文。
步骤408、CPU核将被切换的任务元数据存入硬件任务调度器。
CPU核可以通过多种方法将被切换的任务的元数据存入硬件任务调度器。例如,CPU核可以通过方法407A或者方法407B将被切换的任务的元数据存入硬件任务调度器。方法408A类似于方法207A。方法408B类似于方法207B。此处不再赘述。
硬件任务调度器存储被切换的任务到候选任务队列后,可再次执行任务调度以选择好候选任务。硬件任务调度器获取该候选任务的上下文。当再次接收到CPU核的调度指令时,硬件任务调度器直接发送选择好的候选任务的元数据和上下文给CPU核。
步骤409、CPU核执行任务切换,以运行该候选任务。
获取候选任务的上下文后,CPU核切换上下文以执行该候选任务。
综上所述,本申请实施例提供的任务调度方法的时序图如图5所示。在CPU核发送任务调度指令之前,硬件任务调度器已经完成任务调度。因此当接收到CPU核的任务调度指令后,硬件任务调度器可以立即发送候选任务的元数据至第一存储区域,并发送该候选任务的上下文至CPU核的高速缓存。硬件任务调度器在CPU核发送任务调度指令之前完成任务调度,使得任务调度消耗的时间可以完全消除。因为已经预先完成任务调度,所以接收到任务调度指令后,硬件任务调度器可以立即发送候选任务的元数据和上下文。该方法能够更快地将候选任务的元数据和上下文发送到访问速度更快的存储区域,更能保证CPU核能从访存速度更快的存储区域立即获取候选任务元数据和上下文。本实施例提供的任务调度方法降低了任务调度切换的时延。
请参考图6,其示出了本申请实施例提供的另一种任务调度方法的流程图。在该流程中,硬件任务调度器监测CPU核的第一存储区域。若该存储区域内没有待执行的候选任务元数据,则硬件任务调度器执行任务调度为该CPU核选择候选任务,并主动发送该候选任务的元数据到第一存储区域。在需要任务切换时,CPU核不再发送任务调度指令,而是直接从该第一存储区域读取候选任务的元数据,并预取该候选任务的上下文到该CPU核的高速缓存。CPU核从高速缓存读取候选任务的上下文以执行任务切换。该任务调度方法流程包括如下步骤:
步骤601、硬件任务调度器监测CPU核的第一存储区域。若该存储区域内没有待执行的候选任务,则硬件任务调度器执行任务调度以选择候选任务,并主动发送该候选任务的元数据到该存储区域。
步骤602、CPU核从第一存储区域读取候选任务元数据。
在检测到需要切换任务时,CPU核不再发送任务调度指令,而是直接从第一存储区域读取候选任务的元数据。
当CPU核获取到候选任务元数据后,执行步骤603。之后,CPU核继续执行当前任务或者执行任务切换前的操作。当执行完任务切换前的操作后,CPU核执行步骤604。
步骤603、CPU核预取候选任务的上下文,促使该候选任务的上下文被发送高速缓存。
获取到候选任务的元数据后,CPU核从该元数据中读出该候选任务上下文的存储位置信息。CPU核基于该候选任务的上下文的存储位置信息预取该候选任务的上下文。例如,CPU核发送预取指令到总线,促使该候选任务的上下文被发送到高速缓存。该预取指令携带的参数包括该候选任务上下文的存储位置信息。
步骤604、CPU核读取该候选任务的上下文。
执行完任务切换前的操作后,CPU核基于上述存储位置信息读取上下文。因为该上下文已经被发送到高速缓存了,所以CPU核将从高速缓存中读取该上下文。
步骤605、CPU核发送被切换的任务的元数据至第二存储区域。
步骤606、硬件任务调度器监测第二存储区域,从该存储区域中读取被切换的任务元数据,并将被切换的任务元数据存入硬件任务调度器的候选任务队列。
硬件任务调度器监测第二存储区域。一旦发现有任务的元数据存储于该第二存储区域,则硬件任务调度器从该第二存储区域读出任务元数据并写入硬件任务调度器的候选任务队列。硬件任务调度器在执行后续的任务调度时,可以再次选择该任务以让该任务再次被CPU核执行。
步骤607、CPU核执行任务切换,以运行该候选任务。
获取候选任务的上下文后,CPU核切换上下文以执行该候选任务。
综上所述,本申请实施例提供的任务调度方法的时序图如图7所示。硬件任务调度器预先执行任务调度,并将选择出的候选任务的元数据预先发送到第一存储区域。当CPU核检测到需要切换任务时,CPU核不再发送任务调度指令,而是直接从第一存储区域读取候选任务的元数据。在读取到候选任务的元数据后,CPU核预取该候选任务的上下文,促使该候选任务的上下文被发送到高速缓存。即,在需要切换任务时,CPU核可以直接从第一存储区域读取候选任务的元数据,从高速缓存中读取候选任务的上下文。CPU核直接从第一存储区域读取候选任务的元数据,从高速缓存中读取候选任务的上下文,降低了任务切换的时延。另外,本实施例中,CPU核不需要和硬件任务调度器直接交互。因此,本实施例提供的任务调度方法不仅降低了任务调度切换的时延,而且避免了CPU核和硬件任务调度器的直接交互。
下述为本申请的装置实施例,可以用于执行本申请的方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图8,其示出了本申请实施例提供的一种硬件任务调度器800的逻辑结构示意图。参见图8,该硬件任务调度器500包括:任务管理模块810和存储模块820。任务管理模块810用于执行图2所示实施例中的步骤202和步骤203,或,图4所示实施例中的步骤401和步骤404,或,图6所示实施例中的步骤601。存储模块820用于存储任务管理模块510执行过程中涉及的候选任务的元数据。具体地,
该任务管理模块810,用于执行任务调度以选择候选任务,并主动发送该候选任务的元数据到第一存储区域。
该存储模块820,用于存储一个或多个候选任务的元数据,以供任务管理模块810选择候选任务。
可选地,该任务管理模块810还用于执行图2所示实施例中的步骤204。该任务管理模块810还用于主动发送候选任务的上下文到高速缓存。
可选地,该存储模块820还用于存储候选任务的上下文。
可选地,该任务管理模块810还用于执行图4所示实施例中的步骤402和步骤405。该任务管理模块810还用于获取候选任务的上下文并将候选任务的上下文存储于硬件任务调度器。该任务管理模块810还用于将存储于硬件任务调度器的候选任务的上下文主动发送到高速缓存。
可选地,该任务管理模块810还用于执行图2所示实施例中的步骤207,或,图4所示实施例中的步骤408,或,图6所示实施例中的步骤606。该任务管理模块810用于接收CPU核发送的被切换的任务的元数据,并将该被切换的任务的元数据存储于硬件任务调度器。或者,该任务管理模块810用于从第二存储区域读取被切换的任务的元数据,并将被切换的任务的元数据存储于硬件任务调度器。
可选地,该硬件任务调度器800还包括接口模块830。该接口模块830用于发送任务管理模块810在执行上述步骤中所发送的指令。
需要说明的是,上述实施例提供的硬件任务调度器在执行任务调度时,仅以上述各功能模块的划分举例说明。实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成。即,将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的硬件任务调度器与任务调度方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图9,其示出了本申请实施例提供的一种硬件任务调度器900的硬件结构示意图。参见图9,该硬件任务调度器900包括任务管理处理器902、存储器904和连接线906。处理器902和存储器904通过连接线906彼此连接。
其中,存储器904可以是各种类型的存储介质,例如静态随机存取存储器(staticrandom access memory,SRAM)。
其中,处理器902可以是通用处理器。例如,通用处理器可以是中央处理器(CPU)。此外,处理器902也可以是专用处理器。专用处理器可以是专门设计的用于执行特定步骤和/或操作的处理器。例如,该专用处理器可以是数字信号处理器(digital signalprocessor,DSP)、应用专用集成电路(application-specific integrated circuit,ASIC)和现场可编程门阵列(field-programmable gate array,FPGA)等。此外,处理器902还可以是多个处理器的组合。处理器902可以包括至少一个电路,以执行上述实施例提供的任务调度方法中硬件任务调度器负责执行的步骤。
其中,连接线906可以是多种形式的连接线。例如硅片片上互连走线、硅基板(SiInterposer)走线、印刷电路板(printed circuit board,PCB)走线等。
上述器件可以分别设置在彼此独立的芯片上,也可以至少部分的或者全部的设置在同一块芯片上。将各个器件独立设置在不同的芯片上,还是整合设置在一个或者多个芯片上,往往取决于产品设计的需要。本申请实施例对上述器件的具体实现形式不做限定。
图9所示的硬件任务调度器900仅仅是示例性的。在实现过程中,硬件任务调度器900还可以包括其他组件,本文不再一一列举。
图10示出了本申请实施例提供的一种任务调度系统示意图。请参考图10,该任务调度系统包括CPU1030和硬件任务调度器1010。该CPU1030和硬件任务调度器1010位于裸芯片(Die)1000上。其中,CPU1030包括一个或多个CPU核。例如,CPU1030包括两个CPU核:CPUcore 1031和CPU core 1032。硬件任务调度器1010为CPU core 1031执行任务调度以选择候选任务,并主动将该候选任务的元数据发送到CPU core 1031的第一存储区域。或者,硬件任务调度器1010为CPU core 1032执行任务调度以选择候选任务,并将该候选任务的元数据发送到CPU core 1032的第一存储区域。硬件任务调度器1010有多种部署方式。例如,硬件任务调度器1010位于CPU 1030内。或者,硬件任务调度器位于CPU1030外外,通过片内总线1020与CPU 1030连接。
当CPU1030仅包括一个CPU核时。例如,CPU1030仅包括CPU core 1031。硬件任务调度器为CPU core 1031提供任务调度服务。此时,硬件任务调度器即是为CPU1030提供任务调度服务。
图11示出了本申请实施例提供的另一种任务调度系统示意图。在该任务调度系统中,硬件任务调度器可以为其他Die内的CPU核提供任务调度服务。请参考图11,该任务调度系统包括多个Die。例如,该任务调度系统包括两个Die:Die1100和Die1200。其中,Die1100包括CPU1130。Die1200包括CPU1230。其中,CPU1130包括一个或多个CPU core。CPU1230包括一个或多个CPU core。例如,CPU1130包括两个CPU core:CPU core 1131和CPU core 1132。CPU1230包括两个CPU core:CPU core 1231和CPU core 1232。该任务调度系统包括一个或多个硬件任务调度器。例如,该任务调度系统包括硬件任务调度器1110。硬件任务调度器1110为CPU core 1131、CPU core 1132、CPU core 1231和CPU core 1232提供任务调度以选择候选任务,并主动将候选任务的元数据发送到相应CPU core的第一存储区域。硬件任务调度器1110有多种部署方式。例如,硬件任务调度器1110位于CPU1130内。或者,硬件任务调度器1110位于CPU1130外,通过片内总线1120和CPU1130连接。例如,该任务调度系统还可以包括硬件任务调度器1210。该硬件任务调度器1210位于CPU1230内。或者,该硬件任务调度器1210位于CPU1230外,通过片内总线1220和CPU1230连接。该硬件任务调度器1210为CPUcore 1231和CPU core 1232提供任务调度以选择候选任务,并主动将候选任务的元数据发送到CPU core 1231或者CPU core 1232的第一存储区域。
硬件任务调度器还有多种部署方式。例如,Die内部署多个硬件任务调度器,每个硬件任务调度器分别为一个CPU core提供任务调度服务。本申请实施例不再一一例举所有部署方式。
应理解,在本申请实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,不应对本申请实施例的实施过程构成任何限定。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (20)
1.一种任务调度系统,其特征在于,所述任务调度系统包括中央处理单元CPU核和硬件任务调度器,
所述硬件任务调度器,用于执行任务调度以选择候选任务,并主动发送所述候选任务的元数据到第一存储区域;
所述CPU核,用于从所述第一存储区域读取所述候选任务的元数据以执行所述候选任务;
其中,所述第一存储区域位于访问速度快于内存的存储区域中,所述第一存储区域包括所述CPU核的内部存储空间和/或所述CPU核的高速缓存。
2.根据权利要求1所述的系统,其特征在于,所述候选任务的元数据包括所述候选任务的上下文的存储位置信息、所述候选任务的标识和所述候选任务的状态。
3.根据权利要求1或2所述的系统,其特征在于,
所述硬件任务调度器,还用于主动发送所述候选任务的上下文到所述CPU核的高速缓存。
4.根据权利要求1-3所述的系统,其特征在于,
所述硬件任务调度器,还用于将存储于所述硬件任务调度器的所述候选任务的上下文主动发送到所述CPU核的高速缓存。
5.一种任务调度方法,应用于硬件任务调度器,其特征在于,所述方法包括:
执行任务调度以选择候选任务;
主动发送所述候选任务的元数据到第一存储区域;
其中,所述第一存储区域位于访问速度快于内存的存储区域中,所述第一存储区域包括CPU核的内部存储空间和/或所述CPU核的高速缓存,所述CPU核用于执行所述候选任务。
6.根据权利要求5所述的方法,其特征在于,所述候选任务的元数据包括所述候选任务的上下文的存储位置信息、所述候选任务的标识和所述候选任务的状态。
7.根据权利要求5或6所述的方法,其特征在于,所述方法包括:主动发送所述候选任务的上下文到所述CPU核的高速缓存。
8.根据权利要求5至7任一所述的方法,其特征在于,所述方法包括:将存储于所述硬件任务调度器的所述候选任务的上下文主动发送到所述CPU核的高速缓存。
9.一种任务调度方法,应用于中央处理单元CPU核,其特征在于,所述方法包括:
从第一存储区域读取候选任务的元数据以执行所述候选任务;
其中,所述第一存储区域位于访问速度快于内存的存储区域中,所述第一存储区域包括所述CPU核的内部存储空间和/或所述CPU核的高速缓存。
10.根据权利要求9所述的方法,其特征在于,所述候选任务的元数据包括所述候选任务的上下文的存储位置信息、所述候选任务的标识和所述候选任务的状态。
11.一种硬件任务调度器,其特征在于,包括:
存储器,用于存储一个或多个候选任务的元数据;
处理器,用于执行任务调度以选择候选任务,并主动将存储于所述存储器的所述选择的候选任务的元数据发送到第一存储区域;
其中,所述第一存储区域位于访问速度快于内存的存储区域中,所述第一存储区域包括CPU核的内部存储空间和/或所述CPU核的高速缓存,所述CPU核用于执行所述选择的候选任务。
12.根据权利要求11所述的硬件任务调度器,其特征在于,所述选择的候选任务的元数据包括所述选择的候选任务的上下文的存储位置信息、所述选择的候选任务的标识和所述选择的候选任务的状态。
13.根据权利要求11或12所述的硬件任务调度器,其特征在于,所述处理器还用于主动发送所述选择的候选任务的上下文到所述CPU核的高速缓存。
14.根据权利要求11至13任一所述的硬件任务调度器,其特征在于,所述存储器还用于存储所述选择的候选任务的上下文。
15.根据权利要求14所述的硬件任务调度器,其特征在于,所述处理器还用于将存储于所述存储器内的所述选择的候选任务的上下文主动发送到所述CPU核的高速缓存。
16.一种硬件任务调度器,其特征在于,所述硬件任务调度器包括:
存储模块,用于存储一个或多个候选任务的元数据;
任务管理模块,用于执行任务调度以选择候选任务,并主动将存储于所述存储模块的所述选择的候选任务的元数据发送到第一存储区域;
其中,所述第一存储区域位于访问速度快于内存的存储区域中,所述第一存储区域包括CPU核的内部存储空间和/或所述CPU核的高速缓存,所述CPU核用于执行所述选择的候选任务。
17.根据权利要求16所述的硬件任务调度器,其特征在于,所述选择的候选任务的元数据包括所述选择的候选任务的上下文的存储位置信息、所述选择的候选任务的标识和所述选择的候选任务的状态。
18.根据权利要求16或17所述的硬件任务调度器,其特征在于,所述任务管理模块还用于主动发送所述选择的候选任务的上下文到所述CPU核的高速缓存。
19.根据权利要求16至18任一所述的硬件任务调度器,其特征在于,所述存储模块还用于存储所述选择的候选任务的上下文。
20.根据权利要求19所述的硬件任务调度器,其特征在于,所述任务管理模块还用于将存储于所述存储模块的所述选择的候选任务的上下文主动发送到所述CPU核的高速缓存。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110648382.9A CN115469976A (zh) | 2021-06-10 | 2021-06-10 | 一种任务调度的方法、系统和硬件任务调度器 |
EP22819496.5A EP4339776A4 (en) | 2021-06-10 | 2022-06-07 | TASK PLANNING METHOD, SYSTEM AND HARDWARE TASK SCHEDULE |
PCT/CN2022/097255 WO2022257898A1 (zh) | 2021-06-10 | 2022-06-07 | 一种任务调度的方法、系统和硬件任务调度器 |
US18/533,561 US20240103913A1 (en) | 2021-06-10 | 2023-12-08 | Task scheduling method and system, and hardware task scheduler |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110648382.9A CN115469976A (zh) | 2021-06-10 | 2021-06-10 | 一种任务调度的方法、系统和硬件任务调度器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115469976A true CN115469976A (zh) | 2022-12-13 |
Family
ID=84363334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110648382.9A Pending CN115469976A (zh) | 2021-06-10 | 2021-06-10 | 一种任务调度的方法、系统和硬件任务调度器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240103913A1 (zh) |
EP (1) | EP4339776A4 (zh) |
CN (1) | CN115469976A (zh) |
WO (1) | WO2022257898A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7032073B2 (en) * | 2001-07-02 | 2006-04-18 | Shay Mizrachi | Cache system for network and multi-tasking applications |
US6845501B2 (en) * | 2001-07-27 | 2005-01-18 | Hewlett-Packard Development Company, L.P. | Method and apparatus for enabling a compiler to reduce cache misses by performing pre-fetches in the event of context switch |
EP2297637A1 (en) * | 2008-07-02 | 2011-03-23 | Nxp B.V. | A multiprocessor circuit using run-time task scheduling |
KR102182295B1 (ko) * | 2014-04-21 | 2020-11-24 | 삼성전자 주식회사 | 하드웨어 기반 태스크 스케쥴링 장치 및 방법 |
US10489296B2 (en) * | 2016-09-22 | 2019-11-26 | International Business Machines Corporation | Quality of cache management in a computer |
-
2021
- 2021-06-10 CN CN202110648382.9A patent/CN115469976A/zh active Pending
-
2022
- 2022-06-07 EP EP22819496.5A patent/EP4339776A4/en active Pending
- 2022-06-07 WO PCT/CN2022/097255 patent/WO2022257898A1/zh active Application Filing
-
2023
- 2023-12-08 US US18/533,561 patent/US20240103913A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4339776A4 (en) | 2024-05-29 |
US20240103913A1 (en) | 2024-03-28 |
WO2022257898A1 (zh) | 2022-12-15 |
EP4339776A1 (en) | 2024-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7313381B2 (ja) | ハードウェアアクセラレーションのためのハードウェアリソースの埋込みスケジューリング | |
US7685376B2 (en) | Method to support heterogeneous memories | |
US6775750B2 (en) | System protection map | |
US6631462B1 (en) | Memory shared between processing threads | |
US6345352B1 (en) | Method and system for supporting multiprocessor TLB-purge instructions using directed write transactions | |
US8117389B2 (en) | Design structure for performing cacheline polling utilizing store with reserve and load when reservation lost instructions | |
US9043806B2 (en) | Information processing device and task switching method | |
US20150143045A1 (en) | Cache control apparatus and method | |
US8166339B2 (en) | Information processing apparatus, information processing method, and computer program | |
WO2010117528A2 (en) | Opportunistic improvement of mmio request handling based on target reporting of space requirements | |
JPH0863354A (ja) | コンピュータプロセッシングを行うための装置及び方法 | |
US9009420B2 (en) | Structure for performing cacheline polling utilizing a store and reserve instruction | |
US9342258B2 (en) | Integrated circuit device and method for providing data access control | |
CN114546896A (zh) | 系统内存管理单元、读写请求处理方法、电子设备和片上系统 | |
US8555001B2 (en) | Cache memory, including miss status/information and a method using the same | |
CN114721975A (zh) | 链表处理方法、装置、加速器、电路板、设备和存储介质 | |
CN110750744A (zh) | 页面呈现方法及装置 | |
CN112612728B (zh) | 缓存管理方法及装置、设备 | |
US9983874B2 (en) | Structure for a circuit function that implements a load when reservation lost instruction to perform cacheline polling | |
JP5254710B2 (ja) | データ転送装置、データ転送方法およびプロセッサ | |
US8719499B2 (en) | Cache-line based notification | |
JP2006268753A (ja) | Dma回路及びコンピュータシステム | |
CN115469976A (zh) | 一种任务调度的方法、系统和硬件任务调度器 | |
JP2005258509A (ja) | ストレージ装置 | |
CN114327508A (zh) | 一种软件加载方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |