CN111124686B - 资源调度方法、装置及相关设备 - Google Patents

资源调度方法、装置及相关设备 Download PDF

Info

Publication number
CN111124686B
CN111124686B CN201911378597.2A CN201911378597A CN111124686B CN 111124686 B CN111124686 B CN 111124686B CN 201911378597 A CN201911378597 A CN 201911378597A CN 111124686 B CN111124686 B CN 111124686B
Authority
CN
China
Prior art keywords
task
processing unit
unit corresponding
scheduling
software processing
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
Application number
CN201911378597.2A
Other languages
English (en)
Other versions
CN111124686A (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.)
Shenzhen Intellifusion Technologies Co Ltd
Original Assignee
Shenzhen Intellifusion Technologies 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 Shenzhen Intellifusion Technologies Co Ltd filed Critical Shenzhen Intellifusion Technologies Co Ltd
Priority to CN201911378597.2A priority Critical patent/CN111124686B/zh
Publication of CN111124686A publication Critical patent/CN111124686A/zh
Application granted granted Critical
Publication of CN111124686B publication Critical patent/CN111124686B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供一种资源调度方法,所述方法包括:当存在待响应的第一任务时,发送调度第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令;当存在响应于第一任务之后的第二任务时,根据第一调度指令的执行进度发送调度第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使第一任务对应的软件处理单元和第二任务对应的硬件处理单元同步执行。本发明还提供一种资源调度装置、计算机装置及可读存储介质。本发明可以提高资源调度的效率以及硬件资源的利用率。

Description

资源调度方法、装置及相关设备
技术领域
本发明涉及嵌入式技术领域,具体涉及一种资源调度方法、装置、计算机装置和计算机可读存储介质。
背景技术
智能硬件(如人工智能设备、边缘计算设备等AI嵌入式设备)的使用已十分广泛,在智能硬件中通常存在匹配加速器的固件(如硬件加速器模块),这些硬件加速器模块可以在智能硬件运行过程中参与计算处理。实际应用中,当智能硬件处于高业务负载的状态时,资源调度的效率不高,硬件资源的利用率也较低。
发明内容
鉴于以上内容,有必要提出一种资源调度方法、装置、计算机装置和计算机可读存储介质,其可以提高资源调度的效率以及硬件资源的利用率。
本申请的第一方面提供一种资源调度方法,所述方法包括:
当存在待响应的第一任务时,发送调度所述第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令;
当存在响应于所述第一任务之后的第二任务时,根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行,或所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
另一种可选的实现方式中,所述根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令包括:
在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令。
另一种可选的实现方式中,所述在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令包括:
若检测到所述第一任务对应的中序硬件处理单元触发的中断请求,确定所述第一任务对应的中序硬件处理单元执行完毕;
在所述第一任务对应的中序硬件处理单元执行完毕之后,发送所述第二调度指令,以使所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
另一种可选的实现方式中,所述在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令包括:
若检测到所述第一任务对应的前序软件处理单元执行完毕;
在所述第一任务对应的中序硬件处理单元执行之前,发送所述第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
另一种可选的实现方式中,所述在所述第一任务对应的中序硬件处理单元执行完毕之后,发送所述第二调度指令之后,所述方法还包括:
当所述第二任务之后存在至少一个待响应的第一后续任务时,在第一任务对应的后序软件处理单元执行完毕之后,且在所述第二任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个待响应的第一后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
另一种可选的实施方式中,所述在所述第一任务对应的中序硬件处理单元执行之前,发送所述第二调度指令之后,所述方法还包括:
当所述第二任务之后存在至少一个待响应的第二后续任务时,在所述第二任务对应的前序软件处理单元执行完毕之后且在所述第一任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个所述第二后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
另一种可选的实施方式中,所述依次发送调度至少一个所述第二后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令之后,所述方法还包括:
当所述第一任务对应的中序硬件处理单元以及后序软件处理单元执行完毕之后,若存在至少一个待响应的第三后续任务,在所述第二任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个所述第三后续任务对应的前序处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
本申请的第二方面提供一种资源调度装置,所述装置包括:
第一调度模块,用于当存在待响应的第一任务时,发送调度所述第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令;
第二调度模块,用于当存在响应于所述第一任务之后的第二任务时,根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行,或所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
本申请的第三方面提供一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现所述资源调度方法。
本申请的第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述资源调度方法。
本发明资源调度方法在当存在待响应的第一任务时,发送调度所述第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令;当存在响应于所述第一任务之后的第二任务时,根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行,或所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。通过将不同任务的软件处理单元和硬件处理单元并行执行,无需依次排队处理任务,提高了资源调度的效率以及硬件资源的利用率。
附图说明
图1是本发明实施例一提供的资源调度方法的流程图。
图2是在第一任务的中序硬件处理单元执行完毕之后进行调度的示意图。
图3是第一任务对应的中序硬件处理单元执行之前进行调度的示意图。
图4是存在待响应的第一后续任务时,在第一任务对应的后续软件处理单元执行完毕之后,且第二任务对应的中序硬件处理单元执行完毕之前进行调度的示意图。
图5是存在待响应的第一后续任务时,在第二任务对应的中序硬件处理单元执行完毕之后进行调度的示意图。
图6是存在待响应的第二后续任务时进行调度的示意图。
图7是存在待响应的第三后续任务时进行调度的示意图。
图8是本发明实施例二提供的资源调度装置的结构图。
图9是本发明实施例四提供的计算机装置的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施例对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
优选地,本发明的资源调度方法应用在一个或者多个计算机装置中。所述计算机装置是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific IntegratedCircuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)等嵌入式设备。
所述计算机装置可以是,但不限于任何一种可与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互的电子产品,例如,平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、智能穿戴式设备等。
实施例一
图1是本发明实施例一提供的资源调度方法的流程图。所述资源调度方法应用于嵌入式设备,该嵌入式设备包含参与设备运行的硬件处理模块(如硬件加速器模块),该硬件处理模块可以进行业务逻辑运算(如该硬件处理模块可以进行深度神经网络处理)。
如图1所示,所述资源调度方法具体包括以下步骤:
S11:当存在待响应的第一任务时,发送调度所述第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令。
本实施例中,所述第一任务是需要调度嵌入式设备中的匹配加速器的固件(如硬件加速器模块)进行处理的任务。例如,所述第一任务可以是进行深度学习识别人物的行为特征,或者第一任务还可以是通过预设神经网络模型识别指定人群的穿着是否预设规范等。
一种可选实施例中,当接收到响应第一任务的调度请求时,确定存在待响应的第一任务,具体的,响应第一任务的调度请求可以是第一任务启动时所触发的,在启动第一任务时,第一任务发送包含第一任务对应的处理接口的调度请求。
在本实施例中,第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是响应第一任务时执行的软件处理单元和硬件处理单元。
由于第一任务是需要调度嵌入式设备中的匹配加速器的固件(如硬件加速器模块)进行处理的任务,因此响应第一任务时需要调用硬件处理单元执行,同时,由于硬件处理单元的执行通常需要先由软件处理单元执行引导程序等先行程序,以及在硬件处理单元执行之后也需要由软件处理单元确定第一任务是否执行完毕并结束任务。因此,在本实施例中,发送第一任务对应的前序软件单元、中序硬件处理单元以及后序软件处理单元依次串联执行的第一调度指令。
例如,第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元分别是第一前序软件单元、第一中序硬件处理单元和第一后序软件处理单元,当第一任务是进行深度学习识别人物的行为特征时,通过第一前序软件处理单元、第一中序硬件处理单元和第一后序软件处理单元的执行,返回识别人物的行为特征的结果。
在本实施例中,第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是串联执行的,即在发送第一调度指令之后,先执行第一任务对应前序软件处理单元,在该前序软件处理单元执行完毕之后再执行第一任务对应的中序硬件处理单元,当该中序硬件处理单元执行完毕之后再执行第一任务对应的后序软件处理单元。
其中,第一任务对应的前序软件处理单元和后序软件处理单元可以包含一个或多个软件处理子单元(如若干软件业务处理代码),第一任务对应的中序硬件处理单元可以包含一个或多个硬件处理子单元。
S12:当存在响应于所述第一任务之后的第二任务时,根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行,或所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
本实施例中,当嵌入式设备运行时,可以存在多个待响应的任务。所述第二任务可以是与第一任务相同的任务或者是不同的任务。
在本实施例中,第二任务是在第一任务之后的待响应任务,第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是响应第二任务时执行的软件处理单元和硬件处理单元。
在本实施例中,第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是串联执行的,即在发送第二调度指令之后,先执行第二任务对应的前序软件处理单元,在该前序软件处理单元执行完毕之后再执行第二任务对应的中序硬件处理单元,当该中序硬件处理单元执行完毕之后再执行第二任务对应后序软件处理单元。
其中,第二任务对应的前序软件处理单元和后序软件处理单元可以包含一个或多个软件处理子单元(如若干软件业务处理代码),第二任务对应的中序硬件处理单元可以包含一个或多个硬件处理子单元。
一种可选实施例中,当接收到响应第二任务的调度请求时,确定存在待响应的第二任务。
进一步的,在本发明另一实施例中,所述方法还包括:
判断除所第一任务之外是否存在待响应的其他任务;
若存在所述其他任务,确定所述其他任务中处理优先级最高的任务为响应于第一任务之后的第二任务。
其中,待响应的其他任务也是需要调度嵌入式设备中的匹配加速器的固件(如硬件加速器模块)进行处理的任务。
一种可选实施例中,当嵌入式设备上存在多个启动的任务时,每个任务在启动时触发响应该任务的调度请求。
一种可选实施例中,可以通过以下步骤确定所述其他任务中哪个任务为处理优先级最高的任务,所述方法还包括:
确定所述其他任务中最先发送调度请求的任务为处理优先级最高的任务;或者
确定所述其他任务中响应频率最高的任务为处理优先级最高的任务;或者
确定所述其他任务中运算复杂度最低或最高的任务为处理优先级最高的任务。
在本实施例中,根据第一调度指令的执行进度发送第二调度指令时,监听第一调度指令的执行进度,具体的,监听第一调度指令的执行进度包括监听第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元的执行进度。
优选的,监听第一调度指令的执行进度包括监听第一任务对应的前序软件处理单元和/或第一任务对应的中序硬件处理单元的执行进度。
优选地,所述根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令包括:
在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令。
在本实施例中,当在第一任务对应的中序硬件处理单元执行之前发送调度第二任务对应的前序第二调度指令,则第二任务对应的前序软件处理单元开始运行。本实施例所应用的嵌入式设备的CPU同一时间对相同类型的处理单元无法并行执行(例如,无法并行执行第一任务对应的前序软件处理单元和第二任务对应的前序软件处理单元)。但当第二任务对应的前序软件处理单元开始运行时,第一任务对应的中序硬件处理单元是与第二任务对应的前序软件处理单元不同类型的处理单元,因此,在第一任务对应的中序硬件处理单元执行之前就发送调度第二任务的第二调度指令,可以使得第二任务对应的前序软件处理单元与第一任务对应的中序硬件处理单元同步执行,同时,在第一任务对应的中序硬件处理单元执行之后能够触发第一任务对应的后序软件处理单元执行,第二任务对应的前序软件处理单元执行之后能够触发第二任务对应的中序硬件处理单元执行,第一任务对应的后序软件处理单元是与第二任务对应的中序硬件处理单元不同类型的处理单元,因此,第一任务对应的后序软件处理单元执行时能够同步执行第二任务对应的中序硬件处理单元,减少了响应第二任务的等待时间,提高了任务响应的实时性。
在本实施例中,当在第一任务的中序硬件处理单元执行完毕之后发送调度第二任务的第二调度指令,则第二任务对应的前序软件处理单元开始运行。本实施例所应用的嵌入式设备的CPU同一时间对相同类型的处理单元无法并行执行(例如,无法并行执行第一任务对应的前序软件处理单元和第二任务对应的前序软件处理单元)。但当第二任务对应的后序软件处理单元开始运行时,可以通过第二任务对应的前序软件处理单元的运行完毕之后触发第二任务对应的中序硬件处理单元运行,而第二任务对应的中序硬件处理单元运行完毕之后也能够触发第二任务对应的后序软件处理单元运行,因此在第一任务对应的后序软件处理单元执行时能够与第二任务对应的中序硬件处理单元同步执行,减少了响应第二任务的等待时间,提高了任务响应的实时性。
进一步的,在本发明另一实施例中,所述在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令包括:
若检测到所述第一任务对应的中序硬件处理单元触发的中断请求,确定所述第一任务对应的中序硬件处理单元执行完毕;
在所述第一任务对应的中序硬件处理单元执行完毕之后,发送所述第二调度指令,以使所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
在本实施例中,通过检测第一任务的中序硬件处理单元是否执行完毕来确定是否发送第二调度指令。由于第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是串联执行,因此,当第一任务对应的中序硬件处理单元执行完毕之后,触发中断,中断结束之后会继续执行第一任务对应的后序软件处理单元。
请参见图2,图2是在第一任务的中序硬件处理单元执行完毕之后进行调度的示意图。
在图2中,Task1为第一任务,Task2为第二任务,1st SCH为第一调度程序,2nd SCH为第二调度程序。在进行调度时,调度总程序为待响应的第一任务和第二任务创建调度子程序,即第一调度程序和第二调度程序,通过第一调度程序发送调度第一任务对应的前序软件处理单元(SW1)、中序硬件处理单元(HW1)和后序软件处理单元(SW2)依次串联执行的第一调度指令,通过第二调度程序发送调度所述第二任务对应的前序软件处理单元(SW3)、中序硬件处理单元(HW2)和后序软件处理单元(SW4)依次串联执行的第二调度指令。
在图2中,当Task1对应的HW1触发中断请求时,表明HW1执行完毕,此时,通过第二调度程序(2nd SCH)发送第二调度指令指示SW3、HW2以及SW4串行执行。如图2所示,当SW3执行完毕时,触发HW2和SW4依次串联执行,同时在Task2对应的SW3执行完毕之后,嵌入式设备的CPU仍可以继续执行Task1对应的SW2,则此时,Task2对应的HW2与Task1对应的SW2可以同步执行,无需待第一任务对应的前序软件处理单元(SW1)、中序硬件处理单元(HW1)和后序软件处理单元(SW2)执行完毕之后才响应第二任务,提高了第二任务的响应速度。并且,第二任务的中序硬件处理单元(HW2)与第一任务后序软件处理单元(SW2)同步执行也提高了资源调度的效率,提高了资源的利用率,提高资源调度的效率。
图2中,若HW1与HW2的执行时间都为Thw,SW1和SW3的执行时间都为T1,SW2和SW4的执行时间为T2,中断响应时间为Tisr,则硬件资源的调度率为2Thw/(2Thw+2T1+2Tisr+T2)。
进一步的,在本发明另一实施例中,所述在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令包括:
若检测到所述第一任务对应的前序软件处理单元执行完毕;
在所述第一任务对应的中序硬件处理单元执行之前,发送所述第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
请参见图3,图3是在第一任务对应的中序硬件处理单元执行之前进行调度的示意图。
在图3中,Task1为第一任务,Task2为第二任务,1st SCH为第一调度程序,2nd SCH为第二调度程序。在进行调度时,调度总程序为待响应的第一任务和第二任务创建调度子程序,即第一调度程序和第二调度程序,通过第一调度程序发送调度第一任务对应的前序软件处理单元(SW1)、中序硬件处理单元(HW1)和后序软件处理单元(SW2)依次串联执行的第一调度指令,通过第二调度程序发送调度所述第二任务对应的前序软件处理单元(SW3)、中序硬件处理单元(HW2)和后序软件处理单元(SW4)依次串联执行的第二调度指令。
在图3中,当Task1对应的SW1执行完毕后,通过第二调度程序(2nd SCH)发送第二调度指令指示SW3、HW2以及SW4串行执行。如图3所示,当SW1执行完毕时,触发HW1和SW2依次执行,由于此时第二调度程序2nd SCH发送了第二调度指令,因此,SW3也会开始执行,此时嵌入式设备的CPU可以同步执行SW3和HW1,由于嵌入式设备的CPU不同时执行相同类型的处理单元,因此,待HW1执行完毕之后,HW2才开始执行,同时HW1执行完毕之后将触发SW2开始执行,因此SW2将与HW2同步执行,使得硬件资源的利用率较高,提高资源调度的效率。
图3中,若HW1与HW2的执行时间都为Thw,SW1和SW3的执行时间都为T1,SW2和SW4的执行时间为T2,中断响应时间为Tisr,则硬件资源的调度率为2Thw/(2Thw+T1+2Tisr+T2)。
进一步的,在本发明另一实施例中,所述在所述第一任务对应的中序硬件处理单元执行完毕之后,发送所述第二调度指令之后,所述方法还包括:
当所述第二任务之后存在至少一个待响应的第一后续任务时,在第一任务对应的后序软件处理单元执行完毕之后,且在所述第二任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个待响应的第一后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
请参见图4,图4是存在待响应的第一后续任务时,在第一任务对应的后续软件处理单元执行完毕之后,且第二任务对应的中序硬件处理单元执行完毕之前进行调度的示意图。
在图4中的,当第二任务对应的中序硬件处理单元(HW2)执行完毕之前,且第一任务对应的后序软件处理单元(SW2)执行完毕之后,通过第三调度子程序(3rd SCH)发送调度第三任务(Task3)对应的前序软件处理单元(HW5)、中序硬件处理单元(HW3)和后序软件处理单元(SW6)依次串联执行的第三调度指令,从而使得第三任务对应的前序软件处理单元(SW5)和第二任务对应的中序硬件处理单元(HW2)同时执行。
在本发明其他实施例中,当存在待响应的第一后续任务时,也可以重复执行如在所述第一任务对应的中序硬件处理单元执行完毕之后,发送调度第二任务的第二调度指令的类似操作,即执行在上一个任务对应的中序硬件处理单元执行完毕之后,发送调度下一个任务的调度指令的操作。
例如,当任务至少为3个时,在每个任务对应的中序硬件处理单元执行完毕之后,发送调度下一个任务对应的前序软件处理单元、中序硬件处理单元和后续硬件处理单元串联执行的调度指令,从而能够使得每个任务的后序软件处理单元都能够与下一个任务对应的中序硬件处理单元同步执行。
请参见图5,图5是存在待响应的第一后续任务时,在第二任务对应的中序硬件处理单元执行完毕之后进行调度的示意图。
在图5中的,当第二任务对应的中序硬件处理单元(HW2)执行完毕之后,通过第三调度子程序(3rd SCH)发送调度第三任务(Task3)对应的前序软件处理单元(HW5)、中序硬件处理单元(HW3)和后序软件处理单元(SW6)依次串联执行的第三调度指令,从而使得第二任务对应的后序软件处理单元(SW4)和第三任务对应的中序硬件处理单元(HW3)同时执行。
进一步的,在本发明另一实施例中,所述在所述第一任务对应的中序硬件处理单元执行之前,发送所述第二调度指令之后,所述方法还包括:
当所述第二任务之后存在至少一个待响应的第二后续任务时,在所述第二任务对应的前序软件处理单元执行完毕之后且在所述第一任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个所述第二后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
通过本实施例,可以在第一任务对应的中序硬件处理单元执行时,同时调度多个任务对应的前序处理单元开始执行,提高了各个任务的执行效率。
请参见图6,图6是存在待响应的第二后续任务时进行调度的示意图。
在图6中的,当第二任务对应的前序软件处理单元(SW3)执行完毕之后,第一任务对应的硬件处理单元执行完毕之前,通过第四调度子程序(4th SCH)发送调度第四任务(Task4)对应的前序软件处理单元(HW7)、中序硬件处理单元(HW4)和后序软件处理单元(SW8)依次串联执行的第四调度指令,从而在第一任务对应的中序硬件处理单元执行时不仅调度第二任务对应的前序软件处理单元执行,还调度第四任务对应的前序软件处理单元执行,进一步提高了任务响应的及时性,从图6可以看出,通过调度还能够使得第四任务对应的中序硬件处理单元(HW4)和第三任务对应的后序软件处理单元(SW4)同时执行,提高了资源调度的效率。
进一步的,在本发明另一实施例中,所述依次发送调度至少一个所述第二后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令之后,所述方法还包括:
当所述第一任务对应的中序硬件处理单元以及后序软件处理单元执行完毕之后,若存在至少一个待响应的第三后续任务,在所述第二任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个所述第三后续任务对应的前序处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
请参见图7,图7是存在待响应的第三后续任务时进行调度的示意图。
在图7中的,当第二任务对应的前序软件处理单元(SW3)执行完毕之后,第一任务对应的硬件处理单元执行完毕之前,依次调度第四任务和第五任务对应的前序软件处理单元执行,进一步提高了任务响应的及时性。同时,在第一任务的后续处理单元执行完毕,且第二任务的中序硬件处理单元执行完毕之前调度第六任务(Task6)对应的前序软件处理单元(SW11)、中序硬件处理单元(HW6)和后序软件处理单元(SW12)依次串联执行,使得第二任务的硬件处理单元执行时也能调度其他任务对应的前序软件处理单元执行,提高任务的调度率。
从图7可以看出,通过调度还能够使得第四任务对应的中序硬件处理单元(HW4)和第三任务对应的后序软件处理单元(SW4)同时执行,提高了资源调度的效率。
实施例一的资源调度方法在当存在待响应的第一任务时,发送调度所述第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令;当存在响应于所述第一任务之后的第二任务时,根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行,或所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。通过将不同任务的软件处理单元和硬件处理单元并行执行,无需依次排队处理任务,提高了资源调度的效率以及硬件资源的利用率。
实施例二
图8为本发明实施例二提供的资源调度装置的结构图。如图8所示,所述资源调度装置20可以包括:第一调度模块210和第二调度模块220。
第一调度模块210,用于当存在待响应的第一任务时,发送调度所述第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令。
本实施例中,所述第一任务是需要调度嵌入式设备中的匹配加速器的固件(如硬件加速器模块)进行处理的任务。例如,所述第一任务可以是进行深度学习识别人物的行为特征,或者第一任务还可以是通过预设神经网络模型识别指定人群的穿着是否预设规范等。
一种可选实施例中,当接收到响应第一任务的调度请求时,确定存在待响应的第一任务,具体的,响应第一任务的调度请求可以是第一任务启动时所触发的,在启动第一任务时,第一任务发送包含第一任务对应的处理接口的调度请求。
在本实施例中,第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是响应第一任务时执行的软件处理单元和硬件处理单元。
由于第一任务是需要调度嵌入式设备中的匹配加速器的固件(如硬件加速器模块)进行处理的任务,因此响应第一任务时需要调用硬件处理单元执行,同时,由于硬件处理单元的执行通常需要先由软件处理单元执行引导程序等先行程序,以及在硬件处理单元执行之后也需要由软件处理单元确定第一任务是否执行完毕并结束任务。因此,在本实施例中,发送第一任务对应的前序软件单元、中序硬件处理单元以及后序软件处理单元依次串联执行的第一调度指令。
例如,第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元分别是第一前序软件单元、第一中序硬件处理单元和第一后序软件处理单元,当第一任务是进行深度学习识别人物的行为特征时,通过第一前序软件处理单元、第一中序硬件处理单元和第一后序软件处理单元的执行,返回识别人物的行为特征的结果。
在本实施例中,第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是串联执行的,即在发送第一调度指令之后,先执行第一任务对应前序软件处理单元,在该前序软件处理单元执行完毕之后再执行第一任务对应的中序硬件处理单元,当该中序硬件处理单元执行完毕之后再执行第一任务对应的后序软件处理单元。
其中,第一任务对应的前序软件处理单元和后序软件处理单元可以包含一个或多个软件处理子单元(如若干软件业务处理代码),第一任务对应的中序硬件处理单元可以包含一个或多个硬件处理子单元。
第二调度模块220,用于当存在响应于所述第一任务之后的第二任务时,根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行,或所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
本实施例中,当嵌入式设备运行时,可以存在多个待响应的任务。所述第二任务可以是与第一任务相同的任务或者是不同的任务。
在本实施例中,第二任务是在第一任务之后的待响应任务,第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是响应第二任务时执行的软件处理单元和硬件处理单元。
在本实施例中,第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是串联执行的,即在发送第二调度指令之后,先执行第二任务对应的前序软件处理单元,在该前序软件处理单元执行完毕之后再执行第二任务对应的中序硬件处理单元,当该中序硬件处理单元执行完毕之后再执行第二任务对应后序软件处理单元。
其中,第二任务对应的前序软件处理单元和后序软件处理单元可以包含一个或多个软件处理子单元(如若干软件业务处理代码),第二任务对应的中序硬件处理单元可以包含一个或多个硬件处理子单元。
一种可选实施例中,当接收到响应第二任务的调度请求时,确定存在待响应的第二任务。
进一步的,在本发明另一实施例中,所述装置还包括确定模块,所述确定模块用于:
判断除所第一任务之外是否存在待响应的其他任务;
若存在所述其他任务,确定所述其他任务中处理优先级最高的任务为响应于第一任务之后的第二任务。
其中,待响应的其他任务也是需要调度嵌入式设备中的匹配加速器的固件(如硬件加速器模块)进行处理的任务。
一种可选实施例中,当嵌入式设备上存在多个启动的任务时,每个任务在启动时触发响应该任务的调度请求。
一种可选实施例中,可以通过所述确定模块确定所述其他任务中哪个任务为处理优先级最高的任务,所述确定模块还用于:
确定所述其他任务中最先发送调度请求的任务为处理优先级最高的任务;或者
确定所述其他任务中响应频率最高的任务为处理优先级最高的任务;或者
确定所述其他任务中运算复杂度最低或最高的任务为处理优先级最高的任务。
在本实施例中,根据第一调度指令的执行进度发送第二调度指令时,监听第一调度指令的执行进度,具体的,监听第一调度指令的执行进度包括监听第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元的执行进度。
优选的,监听第一调度指令的执行进度包括监听第一任务对应的前序软件处理单元和/或第一任务对应的中序硬件处理单元的执行进度。
优选地,所述第二调度模块具体用于:
在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令。
在本实施例中,当在第一任务对应的中序硬件处理单元执行之前发送调度第二任务对应的前序第二调度指令,则第二任务对应的前序软件处理单元开始运行。本实施例所应用的嵌入式设备的CPU同一时间对相同类型的处理单元无法并行执行(例如,无法并行执行第一任务对应的前序软件处理单元和第二任务对应的前序软件处理单元)。但当第二任务对应的前序软件处理单元开始运行时,第一任务对应的中序硬件处理单元是与第二任务对应的前序软件处理单元不同类型的处理单元,因此,在第一任务对应的中序硬件处理单元执行之前就发送调度第二任务的第二调度指令,可以使得第二任务对应的前序软件处理单元与第一任务对应的中序硬件处理单元同步执行,同时,在第一任务对应的中序硬件处理单元执行之后能够触发第一任务对应的后序软件处理单元执行,第二任务对应的前序软件处理单元执行之后能够触发第二任务对应的中序硬件处理单元执行,第一任务对应的后序软件处理单元是与第二任务对应的中序硬件处理单元不同类型的处理单元,因此,第一任务对应的后序软件处理单元执行时能够同步执行第二任务对应的中序硬件处理单元,减少了响应第二任务的等待时间,提高了任务响应的实时性。
在本实施例中,当在第一任务的中序硬件处理单元执行完毕之后发送调度第二任务的第二调度指令,则第二任务对应的前序软件处理单元开始运行。本实施例所应用的嵌入式设备的CPU同一时间对相同类型的处理单元无法并行执行(例如,无法并行执行第一任务对应的前序软件处理单元和第二任务对应的前序软件处理单元)。但当第二任务对应的后序软件处理单元开始运行时,可以通过第二任务对应的前序软件处理单元的运行完毕之后触发第二任务对应的中序硬件处理单元运行,而第二任务对应的中序硬件处理单元运行完毕之后也能够触发第二任务对应的后序软件处理单元运行,因此在第一任务对应的后序软件处理单元执行时能够与第二任务对应的中序硬件处理单元同步执行,减少了响应第二任务的等待时间,提高了任务响应的实时性。
进一步的,在本发明另一实施例中,所述在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令包括:
若检测到所述第一任务对应的中序硬件处理单元触发的中断请求,确定所述第一任务对应的中序硬件处理单元执行完毕;
在所述第一任务对应的中序硬件处理单元执行完毕之后,发送所述第二调度指令,以使所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
在本实施例中,通过检测第一任务的中序硬件处理单元是否执行完毕来确定是否发送第二调度指令。由于第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元是串联执行,因此,当第一任务对应的中序硬件处理单元执行完毕之后,触发中断,中断结束之后会继续执行第一任务对应的后序软件处理单元。
请参见图2,图2是在第一任务的中序硬件处理单元执行完毕之后进行调度的示意图。
在图2中,Task1为第一任务,Task2为第二任务,1st SCH为第一调度程序,2nd SCH为第二调度程序。在进行调度时,调度总程序为待响应的第一任务和第二任务创建调度子程序,即第一调度程序和第二调度程序,通过第一调度程序发送调度第一任务对应的前序软件处理单元(SW1)、中序硬件处理单元(HW1)和后序软件处理单元(SW2)依次串联执行的第一调度指令,通过第二调度程序发送调度所述第二任务对应的前序软件处理单元(SW3)、中序硬件处理单元(HW2)和后序软件处理单元(SW4)依次串联执行的第二调度指令。
在图2中,当Task1对应的HW1触发中断请求时,表明HW1执行完毕,此时,通过第二调度程序(2nd SCH)发送第二调度指令指示SW3、HW2以及SW4串行执行。如图2所示,当SW3执行完毕时,触发HW2和SW4依次串联执行,同时在Task2对应的SW3执行完毕之后,嵌入式设备的CPU仍可以继续执行Task1对应的SW2,则此时,Task2对应的HW2与Task1对应的SW2可以同步执行,无需待第一任务对应的前序软件处理单元(SW1)、中序硬件处理单元(HW1)和后序软件处理单元(SW2)执行完毕之后才响应第二任务,提高了第二任务的响应速度。并且,第二任务的中序硬件处理单元(HW2)与第一任务后序软件处理单元(SW2)同步执行也提高了资源调度的效率,提高了资源的利用率,提高资源调度的效率。
图2中,若HW1与HW2的执行时间都为Thw,SW1和SW3的执行时间都为T1,SW2和SW4的执行时间为T2,中断响应时间为Tisr,则硬件资源的调度率为2Thw/(2Thw+2T1+2Tisr+T2)。
进一步的,在本发明另一实施例中,所述在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令包括:
若检测到所述第一任务对应的前序软件处理单元执行完毕;
在所述第一任务对应的中序硬件处理单元执行之前,发送所述第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
请参见图3,图3是在第一任务对应的中序硬件处理单元开始执行之前进行调度的示意图。
在图3中,Task1为第一任务,Task2为第二任务,1st SCH为第一调度程序,2nd SCH为第二调度程序。在进行调度时,调度总程序为待响应的第一任务和第二任务创建调度子程序,即第一调度程序和第二调度程序,通过第一调度程序发送调度第一任务对应的前序软件处理单元(SW1)、中序硬件处理单元(HW1)和后序软件处理单元(SW2)依次串联执行的第一调度指令,通过第二调度程序发送调度所述第二任务对应的前序软件处理单元(SW3)、中序硬件处理单元(HW2)和后序软件处理单元(SW4)依次串联执行的第二调度指令。
在图3中,当Task1对应的SW1执行完毕后,通过第二调度程序(2nd SCH)发送第二调度指令指示SW3、HW2以及SW4串行执行。如图3所示,当SW1执行完毕时,触发HW1和SW2依次执行,由于此时第二调度程序2nd SCH发送了第二调度指令,因此,SW3也会开始执行,此时嵌入式设备的CPU可以同步执行SW3和HW1,由于嵌入式设备的CPU不同时执行相同类型的处理单元,因此,待HW1执行完毕之后,HW2才开始执行,同时HW1执行完毕之后将触发SW2开始执行,因此SW2将与HW2同步执行,使得硬件资源的利用率较高,提高资源调度的效率。
图3中,若HW1与HW2的执行时间都为Thw,SW1和SW3的执行时间都为T1,SW2和SW4的执行时间为T2,中断响应时间为Tisr,则硬件资源的调度率为2Thw/(2Thw+T1+2Tisr+T2)。
进一步的,在本发明另一实施例中,所述装置还包括第三调度模块,所述第三调度模块用于:
在所述第一任务对应的中序硬件处理单元执行完毕之后,及发送所述第二调度指令之后,当所述第二任务之后存在至少一个待响应的第一后续任务时,在第一任务对应的后序软件处理单元执行完毕之后,且在所述第二任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个待响应的第一后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
请参见图4,图4是存在待响应的第一后续任务时,在第一任务对应的后续软件处理单元执行完毕之后,且第二任务对应的中序硬件处理单元执行完毕之前进行调度的示意图。
在图4中的,当第二任务对应的中序硬件处理单元(HW2)执行完毕之前,且第一任务对应的后序软件处理单元(SW2)执行完毕之后,通过第三调度子程序(3rd SCH)发送调度第三任务(Task3)对应的前序软件处理单元(HW5)、中序硬件处理单元(HW3)和后序软件处理单元(SW6)依次串联执行的第三调度指令,从而使得第三任务对应的前序软件处理单元(SW5)和第二任务对应的中序硬件处理单元(HW2)同时执行。
在本发明其他实施例中,当存在待响应的第一后续任务时,也可以重复执行如在所述第一任务对应的中序硬件处理单元执行完毕之后,发送调度第二任务的第二调度指令的类似操作,即执行在上一个任务对应的中序硬件处理单元执行完毕之后,发送调度下一个任务的调度指令的操作。
例如,当任务至少为3个时,在每个任务对应的中序硬件处理单元执行完毕之后,发送调度下一个任务对应的前序软件处理单元、中序硬件处理单元和后续硬件处理单元串联执行的调度指令,从而能够使得每个任务的后序软件处理单元都能够与下一个任务对应的中序硬件处理单元同步执行。
请参见图5,图5是存在待响应的第一后续任务时,在第二任务对应的中序硬件处理单元执行完毕之后进行调度的示意图。
在图5中的,当第二任务对应的中序硬件处理单元(HW2)执行完毕之后,通过第三调度子程序(3rd SCH)发送调度第三任务(Task3)对应的前序软件处理单元(HW5)、中序硬件处理单元(HW3)和后序软件处理单元(SW6)依次串联执行的第三调度指令,从而使得第二任务对应的后序软件处理单元(SW4)和第三任务对应的中序硬件处理单元(HW3)同时执行。
进一步的,在本发明另一实施例中,所述装置还包括,第四调度模块,用于:
在所述第一任务对应的中序硬件处理单元执行之前,发送所述第二调度指令之后,当所述第二任务之后存在至少一个待响应的第二后续任务时,在所述第二任务对应的前序软件处理单元执行完毕之后且在所述第一任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个所述第二后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
通过本实施例,可以在第一任务对应的中序硬件处理单元执行时,同时调度多个任务对应的前序处理单元开始执行,提高了各个任务的执行效率。
请参见图6,图6是存在待响应的第二后续任务时进行调度的示意图。
在图6中的,当第二任务对应的前序软件处理单元(SW3)执行完毕之后,第一任务对应的硬件处理单元执行完毕之前,通过第四调度子程序(4th SCH)发送调度第四任务(Task4)对应的前序软件处理单元(HW7)、中序硬件处理单元(HW4)和后序软件处理单元(SW8)依次串联执行的第四调度指令,从而在第一任务对应的中序硬件处理单元执行时不仅调度第二任务对应的前序软件处理单元执行,还调度第四任务对应的前序软件处理单元执行,进一步提高了任务响应的及时性,从图6可以看出,通过调度还能够使得第四任务对应的中序硬件处理单元(HW4)和第三任务对应的后序软件处理单元(SW4)同时执行,提高了资源调度的效率。
进一步的,在本发明另一实施例中,所述装置还包括第五调度模块,所述第五调度模块用于:
所述依次发送调度至少一个所述第二后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令之后,当所述第一任务对应的中序硬件处理单元以及后序软件处理单元执行完毕之后,若存在至少一个待响应的第三后续任务,在所述第二任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个所述第三后续任务对应的前序处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
请参见图7,图7是存在待响应的第三后续任务时进行调度的示意图。
在图7中的,当第二任务对应的前序软件处理单元(SW3)执行完毕之后,第一任务对应的硬件处理单元执行完毕之前,依次调度第四任务和第五任务对应的前序软件处理单元执行,进一步提高了任务响应的及时性。同时,在第一任务的后续处理单元执行完毕,且第二任务的中序硬件处理单元执行完毕之前调度第六任务(Task6)对应的前序软件处理单元(SW11)、中序硬件处理单元(HW6)和后序软件处理单元(SW12)依次串联执行,使得第二任务的硬件处理单元执行时也能调度其他任务对应的前序软件处理单元执行,提高任务的调度率。
从图7可以看出,通过调度还能够使得第四任务对应的中序硬件处理单元(HW4)和第三任务对应的后序软件处理单元(SW4)同时执行,提高了资源调度的效率。
实施例二的资源调度装置通过第一调度模块在当存在待响应的第一任务时,发送调度所述第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令;通过第二调度模块在当存在响应于所述第一任务之后的第二任务时,根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行,或所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。通过将不同任务的软件处理单元和硬件处理单元并行执行,无需依次排队处理任务,提高了资源调度的效率以及硬件资源的利用率。
实施例三
本实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述资源调度方法实施例中的步骤,例如图1所示的步骤S11-S12。
或者,该计算机程序被处理器执行时实现上述装置实施例中各模块/单元的功能,例如图8中的模块210-220:
实施例四
图9为本发明实施例四提供的计算机装置的示意图。所述计算机装置1包括存储器20、处理器30以及存储在所述存储器20中并可在所述处理器30上运行的计算机程序40,例如资源调度程序。所述处理器30执行所述计算机程序40时实现上述资源调度方法实施例中的步骤,例如图1所示的步骤S11-S12。
或者,所述处理器30执行所述计算机程序40时实现上述装置实施例中各模块/单元的功能,例如图8中的单元210-220:
示例性的,所述计算机程序40可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器20中,并由所述处理器30执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序40在所述计算机装置1中的执行过程。例如,所述计算机程序40可以被分割成图8中的第一调度模块210和第二调度模块220,各模块具体功能参见实施例二。
所述计算机装置1可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。本领域技术人员可以理解,所述示意图9仅仅是计算机装置1的示例,并不构成对计算机装置1的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机装置1还可以包括输入输出设备、网络接入设备、总线等。
所称处理器30可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器30也可以是任何常规的处理器等,所述处理器30是所述计算机装置1的控制中心,利用各种接口和线路连接整个计算机装置1的各个部分。
所述存储器20可用于存储所述计算机程序40和/或模块/单元,所述处理器30通过运行或执行存储在所述存储器20内的计算机程序和/或模块/单元,以及调用存储在存储器20内的数据,实现所述计算机装置1的各种功能。所述存储器20可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机装置1的使用所创建的数据(比如音频数据)等。此外,存储器20可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(FlashCard)、至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。
所述计算机装置1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)等。
在本发明所提供的几个实施例中,应该理解到,所揭露的计算机装置和方法,可以通过其它的方式实现。例如,以上所描述的计算机装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
另外,在本发明各个实施例中的各功能单元可以集成在相同处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在相同单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。计算机装置权利要求中陈述的多个单元或计算机装置也可以由同一个单元或计算机装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (9)

1.一种资源调度方法,其特征在于,所述方法包括:
当存在待响应的第一任务时,发送调度所述第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令,所述第一任务为进行深度学习识别人物的行为特征,所述后序软件处理单元执行所述第一调度指令后返回识别人物的行为特征的结果;
当存在响应于所述第一任务之后的第二任务时,所述第二任务为进行深度学习识别人物的行为特征,根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行,或所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行;
所述根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令包括:
在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令;
所述方法还包括:判断除所第一任务之外是否存在待响应的其他任务;
若存在所述其他任务,确定所述其他任务中处理优先级最高的任务为响应于第一任务之后的第二任务。
2.如权利要求1所述的方法,其特征在于,所述在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令包括:
若检测到所述第一任务对应的中序硬件处理单元触发的中断请求,确定所述第一任务对应的中序硬件处理单元执行完毕;
在所述第一任务对应的中序硬件处理单元执行完毕之后,发送所述第二调度指令,以使所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
3.如权利要求1所述的方法,其特征在于,所述在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令包括:
若检测到所述第一任务对应的前序软件处理单元执行完毕;
在所述第一任务对应的中序硬件处理单元执行之前,发送所述第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行。
4.如权利要求2所述的方法,其特征在于,所述在所述第一任务对应的中序硬件处理单元执行完毕之后,发送所述第二调度指令之后,所述方法还包括:
当所述第二任务之后存在至少一个待响应的第一后续任务时,在第一任务对应的后序软件处理单元执行完毕之后,且在所述第二任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个待响应的第一后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
5.如权利要求3所述的方法,其特征在于,所述在所述第一任务对应的中序硬件处理单元执行之前,发送所述第二调度指令之后,所述方法还包括:
当所述第二任务之后存在至少一个待响应的第二后续任务时,在所述第二任务对应的前序软件处理单元执行完毕之后且在所述第一任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个所述第二后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
6.如权利要求5所述的方法,其特征在于,所述依次发送调度至少一个所述第二后续任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令之后,所述方法还包括:
当所述第一任务对应的中序硬件处理单元以及后序软件处理单元执行完毕之后,若存在至少一个待响应的第三后续任务,在所述第二任务对应的中序硬件处理单元执行完毕之前,依次发送调度至少一个所述第三后续任务对应的前序处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的调度指令。
7.一种资源调度装置,其特征在于,所述装置包括:
第一调度模块,用于当存在待响应的第一任务时,发送调度所述第一任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第一调度指令,所述第一任务为进行深度学习识别人物的行为特征,所述后序软件处理单元执行所述第一调度指令后返回识别人物的行为特征的结果;
第二调度模块,用于当存在响应于所述第一任务之后的第二任务时,所述第二任务为进行深度学习识别人物的行为特征,根据所述第一调度指令的执行进度发送调度所述第二任务对应的前序软件处理单元、中序硬件处理单元和后序软件处理单元依次串联执行的第二调度指令,以使所述第一任务对应的中序硬件处理单元与所述第二任务对应的前序软件处理单元且所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行,或所述第一任务对应的后序软件处理单元和所述第二任务对应的中序硬件处理单元同步执行;
所述第二调度模块,用于在所述第一任务对应的中序硬件处理单元执行之前或者执行完毕之后,发送所述第二调度指令;
确定模块,用于判断除所第一任务之外是否存在待响应的其他任务;若存在所述其他任务,确定所述其他任务中处理优先级最高的任务为响应于第一任务之后的第二任务。
8.一种计算机装置,其特征在于:所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-6中任一项所述资源调度方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述资源调度方法。
CN201911378597.2A 2019-12-27 2019-12-27 资源调度方法、装置及相关设备 Active CN111124686B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911378597.2A CN111124686B (zh) 2019-12-27 2019-12-27 资源调度方法、装置及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911378597.2A CN111124686B (zh) 2019-12-27 2019-12-27 资源调度方法、装置及相关设备

Publications (2)

Publication Number Publication Date
CN111124686A CN111124686A (zh) 2020-05-08
CN111124686B true CN111124686B (zh) 2022-06-24

Family

ID=70504163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911378597.2A Active CN111124686B (zh) 2019-12-27 2019-12-27 资源调度方法、装置及相关设备

Country Status (1)

Country Link
CN (1) CN111124686B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105991976A (zh) * 2015-03-16 2016-10-05 安讯士有限公司 生成事件视频序列的方法和系统以及包括此系统的摄像机

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9424315B2 (en) * 2007-08-27 2016-08-23 Teradata Us, Inc. Methods and systems for run-time scheduling database operations that are executed in hardware
US8069446B2 (en) * 2009-04-03 2011-11-29 Microsoft Corporation Parallel programming and execution systems and techniques
US9038073B2 (en) * 2009-08-13 2015-05-19 Qualcomm Incorporated Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts
US9529643B2 (en) * 2015-01-26 2016-12-27 Qualcomm Incorporated Method and system for accelerating task control flow
CN107943577B (zh) * 2016-10-12 2022-03-04 上海优扬新媒信息技术有限公司 用于调度任务的方法和装置
CN109871269A (zh) * 2019-01-15 2019-06-11 中国人民解放军63921部队 一种遥感数据处理方法、系统、电子设备和介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105991976A (zh) * 2015-03-16 2016-10-05 安讯士有限公司 生成事件视频序列的方法和系统以及包括此系统的摄像机

Also Published As

Publication number Publication date
CN111124686A (zh) 2020-05-08

Similar Documents

Publication Publication Date Title
US9396028B2 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
CN110489213B (zh) 一种任务处理方法及处理装置、计算机系统
US8739171B2 (en) High-throughput-computing in a hybrid computing environment
CN102135901B (zh) 带有动态数量工作者的并行查询引擎
CN111190741B (zh) 基于深度学习节点计算的调度方法、设备及存储介质
CN105446795A (zh) 虚拟机操作中的并行化
US20130219395A1 (en) Batch scheduler management of tasks
CN114637536A (zh) 任务处理方法、计算协处理器、芯片及计算机设备
CN114217966A (zh) 基于资源调整的深度学习模型动态批处理调度方法和系统
CN113051054A (zh) 调度人工智能平台资源的方法、设备和计算机可读存储介质
CN112199180A (zh) 多任务调度的方法及装置、电子设备及可读存储介质
CN114579285A (zh) 一种任务运行系统、方法及计算设备
CN111124686B (zh) 资源调度方法、装置及相关设备
CN109840137B (zh) 一种跨核调度方法和装置
WO2021068247A1 (zh) 神经网络调度方法、装置、计算机设备及可读存储介质
CN109426556B (zh) 一种进程调度方法和装置
CN110825461B (zh) 数据处理方法和装置
CN116820714A (zh) 一种算力设备的调度方法、装置、设备和存储介质
CN111158875A (zh) 基于多模块的多任务处理方法、装置及系统
Digalwar et al. Design and development of a real time scheduling algorithm for mixed task set on multi-core processors
CN115344370A (zh) 任务调度方法、装置、设备及存储介质
CN114297923A (zh) 调度确定模型的训练方法、指标数据的确定方法及装置
Thai Real-time scheduling in distributed systems
CN114610485A (zh) 资源处理系统以及方法
CN114153573A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 518000 1st floor, building 17, Shenzhen Dayun software Town, 8288 Longgang Avenue, Yuanshan street, Longgang District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Yuntian lifeI Technology Co., Ltd

Address before: 518000 1st floor, building 17, Shenzhen Dayun software Town, 8288 Longgang Avenue, Yuanshan street, Longgang District, Shenzhen City, Guangdong Province

Applicant before: SHENZHEN INTELLIFUSION TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant