CN111767120A - 基于消息与事件的多任务处理单元的调度方法与装置 - Google Patents

基于消息与事件的多任务处理单元的调度方法与装置 Download PDF

Info

Publication number
CN111767120A
CN111767120A CN201910253885.9A CN201910253885A CN111767120A CN 111767120 A CN111767120 A CN 111767120A CN 201910253885 A CN201910253885 A CN 201910253885A CN 111767120 A CN111767120 A CN 111767120A
Authority
CN
China
Prior art keywords
processing unit
task processing
task
message
event
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
Application number
CN201910253885.9A
Other languages
English (en)
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.)
Beijing Memblaze Technology Co Ltd
Original Assignee
Beijing Memblaze 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 Beijing Memblaze Technology Co Ltd filed Critical Beijing Memblaze Technology Co Ltd
Priority to CN201910253885.9A priority Critical patent/CN111767120A/zh
Publication of CN111767120A publication Critical patent/CN111767120A/zh
Pending legal-status Critical Current

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/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
    • 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请涉及任务调度方法及系统,其中,任务调度方法,包括以下步骤:响应于收到向任务处理单元提供的消息和/或事件,缓存所提供的消息和/或事件,并更新所述任务处理单元的状态;调度处于可被调度状态的任务处理单元,并执行被调度的任务处理单元的函数。

Description

基于消息与事件的多任务处理单元的调度方法与装置
技术领域
本申请涉及任务调度,具体地,涉及基于消息与事件的多任务处理单元的调度方法与装置。
背景技术
一些应用中,处理器处理大规模并发任务。例如用于网络设备、存储设备的嵌入式处理器,处理并发的多个网络包或IO命令。
在桌面CPU、服务器CPU中,通过运行操作系统,由操作系统调度在CPU上运行的多个进程和/或线程来处理任务,用户无须过多干预进程/线程之间的切换,而由操作系统选择恰当的进程/线程进行调度,以充分利用CPU计算能力。然而,在嵌入式CPU中,可使用的存储器、CPU处理能力等资源都受限。以及一些嵌入式系统对性能,特别是任务处理延迟有严格要求,现有技术的操作系统对此场景难以适用。
在申请号为201811095364.7与201811160925.7的中国专利申请中提供了基于信号-槽的任务调度方案,以处理大量的并发IO命令,并保证多个IO命令的整体服务质量。
图1A是任务调度的示意图。
图1A中,从左向右的方向是时间流逝的方向。还展示了被处理的多个任务(1-1、2-1、3-1、1-2、2-2与3-2),其中在结构为“a-b”的附图标记中,在前的符号a指示任务,而在后的符号b指示任务中包括的子任务。图1A展示了按时间顺序处理了3个任务,每个任务包括2个子任务。
实线箭头指示了处理多个任务的时间顺序,虚线箭头指示了任务处理的逻辑顺序。例如,以任务1为例,要先处理其子任务1-1(任务1-1),再处理其子任务1-2(任务1-2)。依然作为举例,参看图1A,在处理完子任务1-1后,子任务1-2(因所需资源尚未就绪)不能立刻处理,因而调度执行子任务2-1与子任务3-1,随后识别出子任务1-2所需的资源就绪,而在处理完子任务3-1后,调度执行子任务1-2。
在处理器上,通过执行代码段来处理任务(或子任务)。单一CPU(或CPU核),任一时刻仅处理单一任务。示例性地,如图1A所示,对于待处理的多个任务,先执行处理子任务1-1的代码段、接下来执行处理子任务2-1的代码段、接下来执行处理子任务3-1的代码段、接下来执行处理子任务1-2的代码段、接下来执行处理子任务2-2的代码段以及接下来执行处理子任务3-2的代码段。可选地,在各个处理任务(或子任务)的代码段中指示了任务处理的逻辑顺序。例如,该逻辑顺序包括子任务1-2要在任务子1-1之后处理。作为又一个例子,在处理子任务1-1的代码段中指示其逻辑顺序在后处理的代码段应为处理子任务1-2的代码段。
代码段通过例如发送信号,来指示逻辑顺序在后应执行的代码段。例如,以信号的值作为对要执行的代码段的索引。
图1B是任务处理系统的框图。
参看图1B,任务处理系统包括软件与硬件两部分。硬件包括例如运行软件的一个或多个CPU,与处理相关任务的其他硬件资源(例如,存储器、编解码器、接口、加速器、中断控制器、DMA单元等)。
将在CPU上运行的软件的代码段称为任务处理单元。任务处理系统包括多个任务处理单元。每个任务处理单元处理相同或不同的任务。例如,任务处理单元0处理任务的第一子任务(例如子任务1-1、子任务2-1与子任务3-1),而任务处理单元1、任务处理单元2与任务处理单元3处理任务的第二子任务(例如子任务1-2、子任务2-2与子任务3-2)。
任务处理系统还包括软件实现的任务管理单元,用于调度任务处理单元之一在硬件上运行。
当被CPU运行时,任务管理单元为任务处理单元提供API(应用程序编程接口,Application Programming Interface)。任务处理单元通过调用API告知任务管理单元后续应调度的其他任务处理单元。任务管理单元检查该其他任务处理单元所需的资源是否就绪,并在资源就绪时,调度该其他任务处理单元。
任务处理单元所需的资源包括例如缓存单元、处理任务的描述符(或称上下文)、容器单元等。
通过使用任务管理单元,提供任务处理单元可调用的API,使得任务处理单元仅需依照任务的逻辑顺序指定其后继任务处理单元,由任务管理单元在满足逻辑顺序的要求下,高效率地调度任务处理单元。
在根据本申请的实施例中,任务处理单元无须轮询或等待资源可用性,无须维护多个任务处理单元之间的顺序,提升了CPU利用率,也降低了任务处理单元的复杂度。
在可选的实施方式中,任务处理单元和/或任务管理单元由硬件实现。
图2是任务管理单元的示意图。
任务管理单元包括信号分发单元210、一个或多个信号缓存(220、222……22n)与任务调度单元240。
任务调度单元240调度一个或多个任务处理单元(260、262……26n)来处理由信号所指示的任务。作为举例,信号同任务处理单元一一对应。
信号分发单元210接收任务处理单元或硬件提供的信号,信号指示了后续需要被调度来处理信号所指示的任务的任务处理单元。例如,任务处理单元通过调用API来向信号分发单元210提供信号;或者硬件通过中断来向信号分发单元210提供信号。
信号有多种,例如,根据信号的值来识别信号的种类,每种信号有同其对应的任务处理单元。任务管理单元为每种信号提供信号缓存。例如,信号缓存220用于承载信号0,信号缓存222用于承载信号2,而信号缓存22n用于承载信号n。信号缓存包括多个条目,每个条目用于容纳一个信号的实例。缓存中的信号实例按被添加到缓存的顺序排序。信号被从队尾添加到缓存,而从队头取出信号。
响应于接收到信号,信号分发单元210根据所接收的信号的种类,将信号添加到同信号种类对应的信号缓存。以及可选地,使用于提供信号的API返回,而不阻塞API的调用方。
周期性地,响应于中断,响应于当前的任务被处理完成,或者其他原因,任务调度单元240有机会根据信号缓存中的信号而调度任务处理单元。任务调度单元240从信号缓存之一取出信号,并调度任务处理单元之一来处理信号。在一个例子中,任务调度单元240根据取出的信号的种类来调用同信号种类对应的任务处理单元。作为又一个例子,任务调度单元240以取出的信号作为索引来获得被调度的任务处理单元。
可选地,任务调度单元240以随机、轮转、加权轮转等方式选取信号缓存。各信号缓存可被设置优先级。各信号缓存的优先级可被调整。
依然可选地,任务管理单元还清除信号缓存中的信号。例如,响应于收到关机或掉电请求,任务管理单元清除信号缓存中的所有信号,以终止对信号的处理。
需要指出的,图1A、图1B与图2的相关内容,在申请号为201811095364.7与201811160925.7的中国专利申请中提供,而非所属领域的现有技术。
发明内容
以处理IO命令的存储设备为例,存储设备同时处理大规模并发的IO命令。每个IO命令的处理又包括多个阶段,并且使用多种资源。
存储设备需要同时处理大量IO命令的能力,还需要尽力缩短IO命令的处理延迟,并避免个别IO命令的处理延迟过长。存储设备还要提高处理效率,降低处理多个IO命令时的资源使用冲突,避免对CPU处理能力的浪费。
根据本申请的第一方面,提供了根据本申请第一方面的第一任务调度方法,包括以下步骤:响应于收到向任务处理单元提供的消息和/或事件,缓存所提供的消息和/或事件,并更新所述任务处理单元的状态;调度处于可被调度状态的任务处理单元,并执行被调度的任务处理单元的函数。
根据本申请的第一方面的第一任务调度方法,提供了根据本申请第一方面的第二任务调度方法,其中,将消息记录于所述任务处理单元的消息缓存,将事件记录于所述任务处理单元的事件缓存。
根据本申请的第一方面的第二任务调度方法,提供了根据本申请第一方面的第三任务调度方法,其中,记录所述消息的消息缓存是同所述消息的种类对应的消息缓存,记录所述事件的事件缓存是同所述事件的种类对应的事件缓存。
根据本申请的第一方面的第一至第三任务调度方法之一,提供了根据本申请第一方面的第四任务调度方法,其中,响应于向任务处理单元提供删除消息和/或删除事件的API被调用,删除已提供给任务处理单元的消息和/或事件,并更新所述任务处理单元的状态。
根据本申请的第一方面的第一至第四任务调度方法之一,提供了根据本申请第一方面的第五任务调度方法,其中,若任务处理单元的所有消息缓存均被填充,以及其所有事件缓存均指示事件出现,则所述任务处理单元处于可被调度状态。
根据本申请的第一方面的第一至第五任务调度方法之一,提供了根据本申请第一方面的第六任务调度方法,其中,若任务处理单元的任何消息缓存未被填充,或者任何事件缓存未指示事件出现,则所述任务处理单元处于不可被调用状态。
根据本申请的第一方面的第六任务调度方法,提供了根据本申请第一方面的第七任务调度方法,其中,当任务处理单元的位图或表指示任务处理单元所需的全部消息和/或事件已被填充或存在,则所述任务处理单元处于可被调度状态。
根据本申请的第一方面的第一至第七任务调度方法之一,提供了根据本申请第一方面的第八任务调度方法,其中,响应于识别出任务处理单元处于可被调度状态,将处于可被调度状态的任务处理单元从任务处理单元链表移除,并添加至就绪链表,以从就绪链表中调度任务处理单元。
根据本申请的第一方面的第八任务调度方法,提供了根据本申请第一方面的第九任务调度方法,其中,周期性地、响应于中断、响应于当前调度的任务处理单元执行完成,从就绪链表中调度任务单元。
根据本申请的第一方面的第一至第九任务调度方法之一,提供了根据本申请第一方面的第十任务调度方法,其中,根据任务处理单元的优先级顺序调度处于可被调度状态的任务处理单元。
根据本申请的第一方面的第十任务调度方法,提供了根据本申请第一方面的第十一任务调度方法,其中,被调度的任务处理单元产生新的消息,并向自身或其他任务处理单元提供产生的新的消息。
根据本申请的第一方面的第一至第十一任务调度方法之一,提供了根据本申请第一方面的第十二任务调度方法,其中,响应于任务处理单元的状态的更新或响应于被调度的任务处理单元的函数执行完成,根据任务处理单元的状态,将所述任务处理单元添加至任务处理单元链表或保留在就绪链表。
根据本申请的第一方面的第十二任务调度方法,提供了根据本申请第一方面的第十三任务调度方法,响应于识别出任务处理单元处于不可被调用状态,将处于不可被调用状态的任务处理单元从就绪链表移除,并添加至任务处理单元链表。
根据本申请的第一方面的第一至第十三任务调度方法之一,提供了根据本申请第一方面的第十四任务调度方法,其中,响应于创建任务处理单元的API被调用,根据通过API指示的信息创建任务处理单元。
根据本申请的第一方面的第十四任务调度方法,提供了根据本申请第一方面的第十五任务调度方法,其中,指定任务处理单元的消息缓存、事件缓存和函数,以创建任务处理单元。
根据本申请的第一方面的第十五任务调度方法,提供了根据本申请第一方面的第十六任务调度方法,其中,创建任务处理单元还指定任务处理单元的优先级和/或位图。
根据本申请的第一方面的第十六任务调度方法,提供了根据本申请第一方面的第十七任务调度方法,其中,响应于创建任务处理单元,将被创建的任务处理单元添加至任务处理单元链表。
根据本申请的第一方面的第一至第十七任务调度方法之一,提供了根据本申请第一方面的第十八任务调度方法,其中,任务处理单元包括生产者任务处理单元与消费者任务处理单元,生产者任务处理单元将代表可用资源的消息提供给消费者任务处理单元。
根据本申请的第一方面的第十八任务调度方法,提供了根据本申请第一方面的第十九任务调度方法,其中,被调度的消费者任务处理单元使用消息所代表的可用资源。
根据本申请的第一方面的第十八或第十九任务调度方法,提供了根据本申请第一方面的第二十任务调度方法,其中,被调度的消费者任务处理单元产生请求资源的消息并提供给生产者任务处理单元。
根据本申请的第一方面的第十八至第二十任务调度方法之一,提供了根据本申请第一方面的第二十一任务调度方法,其中,存在可用资源或存在可用资源并存在消费者任务处理单元请求资源的消息,则生产者任务处理单元处于可被调度状态。
根据本申请的第一方面的第十八至第二十一任务调度方法之一,提供了根据本申请第一方面的第二十二任务调度方法,其中,可用资源包括:缓存单元、命令上下文、缓存容器。
根据本申请的第一方面的第十八至第二十二任务调度方法之一,提供了根据本申请第一方面的第二十三任务调度方法,其中,消费者任务处理单元调用API将请求资源的消息提供给生产者任务处理单元,以使生产者任务处理单元向其提供代表可用资源的消息。
根据本申请的第一方面的第十八至第二十三任务调度方法之一,提供了根据本申请第一方面的第二十四任务调度方法,其中,被调度的消费者任务处理单元产生释放资源的消息,并提供给生产者任务处理单元。
根据本申请的第一方面的第十八至第二十四任务调度方法之一,提供了根据本申请第一方面的第二十五任务调度方法,其中,存在代表可用资源的消息或存在代表可用资源的消息及存在IO命令待处理的事件,则消费者任务处理单元处于可被调度状态。
根据本申请的第一方面的第二十五任务调度方法,提供了根据本申请第一方面的第二十六任务调度方法,其中,存在指示第一命令上下文的消息和有IO命令待处理的事件,则第一消费者任务处理单元处于可被调度状态。
根据本申请的第一方面的第二十六任务调度方法,提供了根据本申请第一方面的第二十七任务调度方法,其中,第一生产者任务处理单元向第一消费者任务处理单元提供代表第一命令上下文的消息,中断源向第一消费者任务处理单元提供有IO命令待处理的事件。
根据本申请的第一方面的第二十六或第二十七任务调度方法,提供了根据本申请第一方面的第二十八任务调度方法,其中,第一消费者任务处理单元包括一个消息缓存和一个事件缓存,所述消息缓存记录指示第一命令上下文的消息,所述事件缓存记录是否有IO命令待处理的事件。
根据本申请的第一方面的第二十八任务调度方法,提供了根据本申请第一方面的第二十九任务调度方法,其中,第一消费者任务处理单元根据第一命令上下文生成第二命令上下文,并产生代表第二命令上下文的消息提供给第二消费者任务处理单元。
根据本申请的第一方面的第二十七至第二十九任务调度方法之一,提供了根据本申请第一方面的第三十任务调度方法,其中,若存在指示第一消费者任务处理单元产生的第二命令上下文的消息,并且有代表可用的缓存的消息,第二消费者任务处理单元处于可被调度状态。
根据本申请的第一方面的第三十任务调度方法,提供了根据本申请第一方面的第三十一任务调度方法,其中,第二生产者任务处理单元向第二消费者任务处理单元提供代表有可用缓存的消息。
根据本申请的第一方面的第三十或第三十一任务调度方法,提供了根据本申请第一方面的第三十二任务调度方法,其中,第二消费者任务处理单元包括两个消息缓存,第一消息缓存记录指示第二命令上下文的消息,第二消息缓存记录有可用缓存的消息。
根据本申请的第一方面的第三十二任务调度方法,提供了根据本申请第一方面的第三十三任务调度方法,其中,第二消费者任务处理单元根据第二命令上下文生成第三命令上下文,并产生代表第三命令上下文的消息提供给第三消费者任务处理单元。
根据本申请的第一方面的第三十至第三十三任务调度方法之一,提供了根据本申请第一方面的第三十四任务调度方法,其中,若存在指示第二消费者任务处理单元产生的第三命令上下文的消息,并且有代表可用的DMA单元的事件,第三消费者任务处理单元处于可被调度状态。
根据本申请的第一方面的第三十四任务调度方法,提供了根据本申请第一方面的第三十五任务调度方法,其中,中断源向第三消费者任务处理单元提供指示DMA单元可用的事件。
根据本申请的第一方面的第三十四或第三十五任务调度方法,提供了根据本申请第一方面的第三十六任务调度方法,其中,第三消费者任务处理单元包括一个消息缓存和一个事件缓存,所述消息缓存记录指示第三命令上下文的消息,所述事件缓存记录是否有可用DMA单元的事件。
根据本申请的第一方面的第三十四至第三十六任务调度方法之一,提供了根据本申请第一方面的第三十七任务调度方法,其中,被调度的第三消费者任务处理单元使用DMA单元发起从主机到缓存的数据搬移。
根据本申请的第一方面的第三十七任务调度方法,提供了根据本申请第一方面的第三十八任务调度方法,其中,DMA单元完成数据搬移后,将第三命令上下文一并提供给缓存,以指示所完成的数据传输关联于第三命令上下文。
根据本申请的第一方面的第三十四至第三十八任务调度方法之一,提供了根据本申请第一方面的第三十九任务调度方法,其中,存在代表有可用的缓存容器的消息,并且有指示DMA传输完成的事件,第四消费者任务处理单元处于可被调度状态。
根据本申请的第一方面的第三十九任务调度方法,提供了根据本申请第一方面的第四十任务调度方法,其中,第三生产者任务处理单元向第四消费者任务处理单元提供代表有可用缓存容器的消息。
根据本申请的第一方面的第三十九或第四十任务调度方法,提供了根据本申请第一方面的第四十一任务调度方法,其中,中断源向第四消费者任务处理单元提供指示DMA单元的DMA传输完成的事件。
根据本申请的第一方面的第三十九至第四十一任务调度方法之一,提供了根据本申请第一方面的第四十二任务调度方法,其中,第四消费者任务处理单元包括一个消息缓存和一个事件缓存,一个消息缓存记录指示缓存容器的消息,一个事件缓存记录DMA单元的DMA传输是否完成的事件。
根据本申请的第一方面的第三十九至第四十二任务调度方法之一,提供了根据本申请第一方面的第四十三任务调度方法,其中,获取DMA单元提供的命令上下文,并将被DMA单元填充了数据的缓存绑定到缓存容器,以实现第四消费者任务处理单元被调度执行函数。
根据本申请的第二方面,提供了根据本申请第二方面的第一任务调度系统,包括:任务管理单元和任务处理单元,其中,任务管理单元包括API处理单元、调度单元以及一个和多个API;响应于向任务处理单元提供消息和/或事件的API被调用,API处理单元将消息和/或事件记录于所述任务处理单元的缓存,并更新所述任务处理单元的状态;调度单元调度处于可被调度状态的任务处理单元,并执行被调度的任务处理单元的函数。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A是任务调度的示意图;
图1B是任务处理系统的框图;
图2是任务管理单元的示意图;
图3是根据本申请实施例的任务调度系统的示意图;
图4是根据本申请实施例的任务处理单元;
图5是根据本申请实施例的任务调度系统的框图;
图6是根据本申请实施例的任务调度系统的流程图;
图7A与图7B是根据本申请实施例的资源分配的示意图;
图8是应用根据本申请实施例的任务调度系统处理任务的示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图3是根据本申请实施例的任务调度系统的示意图。
CPU中可运行多个进程,处理器可包括多个CPU核。根据本申请的实施例,为每个CPU核上运行的进程设置任务管理单元。任务管理单元管理属于自身所在的进程的一个或多个任务处理单元。为了简洁的目的,所属领域技术人员将意识到,应用于包括多处理器/多CPU核/多进程系统的任务管理单元也适用于多线程系统。
参看图3,展示了进程0与进程1。每个进程包括任务管理单元。作为举例,进程0包括任务管理单元310,进程1包括任务管理单元320。
任务管理单元310管理多个任务处理单元(任务处理单元0、任务处理单元1、任务处理单元2与任务处理单元3),任务管理单元320管理多个任务处理单元(任务处理单元4、任务处理单元5、任务处理单元6与任务处理单元7)。可以理解地,各任务管理单元管理的任务处理单元的数量可以相同或不同。
任务管理单元(310、320)调度其所管理的任务处理单元的运行。任务管理单元(310、320)还提供API。从而通过API向任务管理单元注册要由其管理的任务处理单元,通过API向任务处理单元提供消息和/或事件。任务处理单元通过任务管理单元提供的API,得以向自身或其他任务处理单元提供消息和/或事件。任务调度系统通过任务管理单元提供的API得以向任务处理单元提供消息和/或事件。
作为举例,任务处理单元0为IO命令进行第一阶段的处理,并将包括了第一阶段的处理结果的IO命令的上下文,通过任务管理单元的API而提供给任务处理单元1以进行对IO命令的第二阶段的处理。从而,逻辑身上,任务处理单元0向任务处理单元1提供了消息,以展现了IO命令处理的第一阶段与第二阶段的顺序,而在实质上,任务管理单元310的API接收了任务处理单元0提供的IO命令的上下文,而无须立即调用任务处理单元1。
根据本申请的实施例,任务管理单元还提供多种API,用于例如创建任务处理单元,撤销已提供给任务处理单元的消息和/或事件。
任务管理单元维护所有通过其API所创建的任务处理单元,并在条件满足时,调度这些任务处理单元。为了简便的目的,将任务管理单元所维护的通过其API所创建的任务处理单元,称为任务管理单元的任务处理单元。
作为举例,任务管理单元通过任务处理单元链表维护其所有任务处理单元,而通过就绪链表维护其所有任务处理单元中可被调度的任务处理单元。可被调度的任务处理单元是其执行所需的所有资源均已满足的任务处理单元,下文会对其更详细介绍。
响应于向任务处理单元提供消息和/或事件的API被调用,任务管理单元获取消息和/或事件,以及获取通过调用API指定的任务处理单元,向该任务处理单元相关联地缓存记录所获取的消息和/或事件,并更新该任务处理单元的状态,以反映该任务处理单元的执行所需的该消息和/或事件已具备。例如,通过关联于任务处理单元的位图或表来反映任务处理单元的状态,位图的每比特或者表的每个表项指示对应的消息和/或事件是否就绪或存在,当位图或表指示任务处理单元所需的全部消息和/或事件已就绪或存在时,意味着该任务处理单元可被调度。
作为举例,消息具有多值而事件具有二值,以区分消息与事件。消息指示例如缓存的实例或IO命令的上下文的实例,事件指示存在待处理的IO命令、定时器中断到时等。
图4是根据本申请实施例的任务处理单元。
任务处理单元包括一个或多个消息缓存,以容纳向其发送的消息。作为举例,每个消息缓存容纳一种消息的一个或多个实例。任务处理单元还包括一个或多个事件缓存,每个事件缓存容纳一种事件,例如指示一种事件是否出现。
任务处理单元还包括优先级,任务管理单元根据优先级确定在有多个可被调度的任务处理单元时,调度任务处理单元的顺序。
任务处理单元还包括例如位图,位图的每一位关联于该任务处理单元的消息缓存与事件缓存之一,从而通过位图识别各消息缓存是否被填充了消息以及各事件是否出现。根据本申请的实施例,各任务处理单元被单独创建,从而任务处理单元各自具有例如不同的消息缓存的种类与数量。依然作为举例,任务处理单元可被调度的条件在于,其所有消息缓存均被填充了至少一个消息,以及其所有事件缓存均指示事件出现。依然作为举例,任务处理单元包括至多2个消息缓存与至多1个事件缓存。
从而,根据本申请的实施例,响应于向任务处理单元提供消息或事件的API被调用,任务管理单元获取消息或事件,以及获取通过调用API指定的任务处理单元,将消息填入该任务处理单元的同消息种类对应的消息缓存,并在位图中记录该种类消息缓存中被填充了消息,或者根据获取的事件设置同事件种类对应的事件缓存,并在位图中记录该种类事件出现。
任务处理单元的函数在该任务处理单元被调度时被调用,以代表该任务处理单元对任务进行处理。
通过API向任务管理单元注册任务处理单元时,指定任务处理单元的消息缓存、事件缓存、优先级、位图与函数。可以理解的,任务处理单元的优先级和/或位图是可选的,即使任务处理单元没有位图,也可通过识别各消息缓存是否为空以及各事件缓存的内容来确定任务处理单元能否被调用。响应于注册任务处理单元,任务管理单元还将被注册的任务处理单元添加到任务处理单元链表,以维护该任务处理单元。而当任务管理单元识别出例如任务处理单元的位图指示任务处理单元可被调用时,任务管理单元将该任务处理单元添加到就绪链表。
任务管理单元从就绪链表中例如根据优先级取出任务处理单元之一并调度,被调度的任务处理单元的函数执行完成后,任务管理单元将其添加到任务处理单元链表。可选地,被调度的任务处理单元的函数执行完成后,任务管理单元识别其依然可被调度,而将其添加到就绪链表。
图5是根据本申请实施例的任务调度系统的框图。
任务管理单元包括API处理单元、调度单元与一个或多个API。任务管理单元还维护任务处理单元链表与就绪链表。API处理单元处理对各API的调用。例如,响应于创建任务处理单元的API被调用,API处理单元根据通过API指示的信息创建任务处理单元,初始化其消息缓存和/或事件缓存,并将任务处理单元添加到任务处理单元链表。依然作为举例,响应于向任务处理单元提供消息的API被调用,通过API指示的消息内容与任务处理单元,API处理单元在该任务处理单元的位图中记录该消息对应的消息缓存非空,以及将该消息添加到对应的消息缓存。类似地,响应于向任务处理单元提供事件的API被调用,通过API指示的事件内容与任务处理单元,API处理单元在该任务处理单元的位图中记录该事件对应的事件缓存非空,以及将该事件添加到对应的事件缓存。诸如中断的外部事件,例如在中断处理函数中调用任务管理单元的API,以向任务处理单元提供中断所代表的事件。
可选地,API处理单元更新任务处理单元的位图时,若识别出位图所指示的任务处理单元的被调度的条件已满足,还将该任务处理单元设置在就绪链表中。
虽然图5中为每个任务处理单元展示了单一的API处理单元处理对其所有API的调用,可以理解地,可为处理每个API提供对应的API处理单元。
任务管理单元的调度单元被周期性地、响应于中断、响应于当前调度的任务处理单元执行完成、或者其他原因,而对就绪链表中的任务处理单元进行调度。调度单元例如从就绪链表中选择例如具有最高优先级的任务处理单元,调用其函数,以对任务处理单元进行调度。就绪链表中的任务处理单元都是可被调度的,从而调度单元无需再识别任务处理单元的被调度条件是否满足,降低了复杂度,也消除了多个任务处理单元的资源冲突。
任务处理单元的函数执行过程中,使用消息缓存提供的消息,从而从消息缓存中取出被使用的消息,以及也更新事件缓存,以指示事件缓存所指示的事件被处理。从而导致该任务处理单元的被调度条件可能不再满足。被调度的条件不再满足的任务处理单元被从就绪链表中移除。
任务处理单元的函数执行过程,还产生新的消息发送给自己或其他任务处理单元。任务处理单元通过调用任务管理单元的API,以将产生的消息发送给自己或其他任务处理单元。例如,参看图5,任务处理单元520调用了API 510,以发送消息。任务处理单元520调用API 510时还指定接收消息的任务处理单元。
图5展示了4个任务管理单元。这些任务管理单元可运行在相同或不同的CPU核中。
图6是根据本申请实施例的任务调度系统的流程图。
根据本申请的实施例,初始化阶段,通过任务管理单元提供的API注册一个或多个任务处理单元(610)。任务管理单元的API处理单元,作为响应,将注册的任务处理单元记录在任务处理单元链表。可以理解地,在初始化阶段之后,依然可注册一个或多个任务处理单元。依然可选地,通过任务管理单元提供的API取消对一个或多个任务处理单元的注册。
API处理单元还响应对API的调用而向任务处理单元提供消息和/或事件(620),根据提供的消息和/或事件而维护任务处理单元的信息(630),包括例如更新任务处理单元的位图、消息缓存和/或事件缓存,以及还将被调度的条件已满足的任务处理单元记录在就绪链表。可选地,API处理单元还响应对API的调用而删除已提供给任务处理单元的消息和/或事件,以及还将被调度的条件不再满足的任务处理单元从就绪链表移除。
任务管理单元的调度单元从就绪链表中选择任务处理单元(650),并运行所选择的任务处理单元的函数(660)。任务处理单元的函数在执行过程中可能调用自身或通过其他任务管理单元提供的API而向任务处理单元提供的消息和/或事件(由方框660到方框620的虚线箭头指示)。可选地,任务调度单元运行了任务处理单元后,还检查被运行的任务处理单元的被调度条件是否满足,以及还将被调度的条件不再满足的任务处理单元从就绪链表移除。
图7A与图7B是根据本申请实施例的资源分配的示意图。
根据本申请的实施例,任务管理单元包括一个或多个生产者任务处理单元,来管理对资源的分配。任务调度系统的资源包括例如缓存单元、处理任务的描述符(或称上下文)、缓存容器等。
可选地,生产者任务处理单元是任务处理单元的一种,由任务管理单元在初始化时创建并也被记录在任务处理单元链表中。同生产者任务处理单元相对的,消费者任务处理单元也是任务处理单元的一种,消费者任务处理单元由任务管理单元的外部向任务管理单元注册。
任务管理单元以例如相同的方式管理生产者任务处理单元和/或消费者任务处理单元。
根据图7A的实施例,生产者任务处理单元710主动地将可用资源通过消息提供给消费者任务处理单元(712、714)。作为举例,存在可用资源是生产者任务处理单元710被调度的条件,当生产者任务处理单元710被调度,其将可用资源的实例提供给消费者任务处理单元712和/或消费者任务处理单元714,其中通过调用任务管理单元的API来向消费者任务处理单元提供代表了可用资源实例的消息。
根据图7B的实施例,生产者任务处理单元720基于消费者任务处理单元对资源的请求而将可用资源通过消息提供给消费者任务处理单元(722、724)。生产者任务处理单元被调度的条件包括,有可用资源以及有消费者任务处理单元请求资源。从而释放资源的消息被通过任务管理单元的API提供给生产者任务处理单元720,使得生产者任务处理单元720知晓所有被释放的可用资源。请求资源的消息也被通过API提供给生产者任务处理单元720。请求资源的消息由消费者任务处理单元(722、724)产生,并提供给生产者任务处理单元720。
生产者任务处理单元720被调用后,将可用资源通过消息发送给消费者任务处理单元722和/或消费者任务处理单元724。可选地,生产者任务单元720维护向消费者任务处理单元722与消费者任务处理单元724提供指示可用资源实例消息的优先级或选择策略。
消费者任务处理单元(722、724)被调度的条件包括有可用资源。因而当生产者任务处理单元720向消费者任务处理单元(722、724)提供了指示可用资源的消息,消费者任务处理单元(722、724)的被调度条件得以满足。可以理解地,消费者任务处理单元(722、724)的被调度条件可能包括其他内容。
任务管理单元调度就绪链表中的消费者任务处理单元(722、724)。消费者任务处理单元(722、724)在执行过程中消耗了为其提供的可用资源,并向生产者任务处理单元720提供新的请求资源的消息。由于消耗了可用资源,消费者任务处理单元(722、724)的被调度条件变为不满足,从而被从就绪链表中移除,并等待生产者任务处理单元720为其提供新的指示可用资源的消息。
图8是应用根据本申请实施例的任务调度系统处理任务的示意图。
根据图8的实施例的任务调度系统用于处理IO命令。作为举例,任务调度系统包括4个任务处理单元(810、812、814与816),分别用于处理IO命令的第一阶段(阶段1)、第二阶段(阶段2)、第三阶段(阶段3)与第四阶段(阶段4)。
作为举例,IO命令为写命令。响应于收到待处理的IO命令,在阶段1为IO命令分配IO命令上下文(简称命令上下文)。响应于得到了命令上下文,在阶段2为IO命令分配缓存,缓存用于容纳IO命令要写入的数据。响应于得到了缓存且DMA单元可用,在阶段3发起DMA传输,将IO命令要写入的数据搬移到缓存。响应于DMA单元将IO命令搬移到缓存的操作完成以及有可用的缓存容器,在第4阶段,将为IO命令分配的缓存绑定到缓存容器。在申请号为201811154294.8、201811203693.9、201811497635.1与201811496068.8的中国专利申请中介绍了缓存容器,将其全文通过引用合并于此。
根据图8的实施例的任务调度系统还包括3个生产者任务处理单元(820、822与824)。命令上下文分配任务处理单元820用于主动(也参看图7A)为任务调度单元810提供可用的命令上下文。缓存分配任务处理单元822用于为任务调度单元812提供可用的缓存。容器分配任务处理单元824用于为任务处理单元816提供可用的缓存容器。
任务处理单元810的被调度条件为有可用的命令上下文,且有新IO命令待处理。任务处理单元810包括一个消息缓存,用于记录指示可用命令上下文的消息,命令处理单元810还包括一个事件缓存,用于记录是否有IO命令待处理。若收到了命令上下文分配任务处理单元820为其提供的指示可用命令上下文的消息,且收到了指示有新IO命令待处理的事件,任务处理单元810的被调度条件满足,并被置入就绪链表。从而任务调度单元有机会从就绪链表中获取并执行任务处理单元810。任务处理单元810的执行消耗了命令上下文,为命令上下文附加了新内容(例如,根据IO命令获取的信息),并将更新的命令上下文通过任务调度系统的API提供给任务处理单元812。有新IO命令待处理的事件由例如中断提供给任务处理单元810。
任务处理单元812的被调度条件为有可用的命令上下文,以及有可用的缓存。任务处理单元812所需要的命令上下文是任务处理单元810提供给任务处理单元812的命令上下文。从而任务处理单元812包括两个消息缓存,分别用于记录指示命令上下文的消息与指示可用缓存的消息。任务处理单元812不包括事件缓存。若任务处理单元812收到了任务处理单元810为其提供的指示命令上下文的消息,且收到了缓存分配任务处理单元822为其提供的指示可用缓存的消息,任务处理单元812的被调度条件满足,并被置入就绪链表。从而任务调度单元有机会从就绪链表中获取并执行任务处理单元812。任务处理单元812的执行消耗了命令上下文与缓存,为命令上下文附加了新内容(例如,缓存的索引),并将更新的命令上下文通过任务调度系统的API提供给任务处理单元814。
任务处理单元814的被调度条件为有可用的命令上下文,以及DMA单元可用。任务处理单元814所需要的命令上下文是任务处理单元812提供给任务处理单元814的命令上下文。从而任务处理单元814包括一个消息缓存,用于记录指示命令上下文的消息。任务处理单元814还包括一个事件缓存,用于记录DMA单元是否可用。若任务处理单元814收到了任务处理单元812为其提供的指示命令上下文的消息,且DMA单元可用,任务处理单元814的被调度条件满足,并被置入就绪链表。从而任务调度单元有机会从就绪链表中获取并执行任务处理单元814。任务处理单元814的执行中,使用DMA单元发起从主机到缓存的数据搬移。可选地,任务处理单元将命令上下文也提供给DMA单元,从而在DMA单元完成数据传输后会将命令上下文一并提供,以指示所完成的数据传输关联于哪个命令上下文。指示DMA单元可用的事件由例如中断提供给任务处理单元814。
任务处理单元816的被调度条件为有可用的缓存容器,以及DMA传输完成。任务处理单元816所需要的缓存容器是容器分配任务处理单元824提供给任务处理单元816的命令上下文。从而任务处理单元816包括一个消息缓存,用于记录指示缓存容器的消息。任务处理单元816还包括一个事件缓存,用于记录DMA单元的DMA传输是否完成。若任务处理单元816收到了容器分配任务处理单元824为其提供的指示缓存容器的消息,且DMA单元的DMA传输完成,任务处理单元816的被调度条件满足,并被置入就绪链表。从而任务调度单元有机会从就绪链表中获取并执行任务处理单元816。任务处理单元816的执行中,获取DMA单元提供的命令上下文,并将被DMA单元填充了数据的缓存绑定到缓存容器。指示DMA单元的DMA传输完成的事件由例如中断提供给任务处理单元816。
可以理解地,任务调度系统还包括其他任务处理单元对IO命令继续处理。一些任务处理单元的执行产生被释放的资源,并通过提供给生产者任务处理单元(命令上下文分配任务处理单元820、缓存分配任务处理单元822、容器分配任务处理单元824)的消息来指示释放的资源。响应于有指示释放的资源的消息,生产者任务处理单元的被调度条件得到满足,并被置于就绪链表。从而任务调度单元有机会从就绪链表中获取并执行生产者任务处理单元(命令上下文分配任务处理单元820、缓存分配任务处理单元822、容器分配任务处理单元824)。生产者任务处理单元(命令上下文分配任务处理单元820、缓存分配任务处理单元822、容器分配任务处理单元824)的执行期间,产生提供给例如任务处理单元(810、812、816)的消息,以向各任务处理单元提供其所需的资源。
除了应用于存储设备,根据本申请的实施例也适用于计算机、服务器、网络设备等其他电子设备中的任务调度。
本申请实施例还提供一种包括程序代码的程序,当被载入电子设备并在电子设备上执行时,所述计程序代码使所述电子设备执行上面所述的方法。
应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以分别由包括程序指令的各种装置来实施。这些程序指令可以加载到通用计算机、专用计算机或其他可编程数据控制设备上以产生机器,从而在计算机或其他可编程数据控制设备上执行的指令创建了用于实现一个或多个流程图框中指定的功能的装置。
因而,框图和流程图的框支持用于执行指定功能的装置的组合、用于执行指定功能的操作的组合和用于执行指定功能的程序指令装置的组合。还应该理解,框图和流程图的每个框以及框图和流程图的框的组合可以由执行指定功能或操作的、基于硬件的专用计算机系统实现,或由专用硬件和计算机指令的组合实现。
上述的不同块、操作以及技术的至少一部分可以被执行,通过使用硬件,控制设备执行固件指令,控制设备执行软件指令,或者及其任意组合。当采用执行固件以及软件指令的控制设备执行时,软件或固件指令可以被存储在任意计算机可读存储介质中,例如磁盘,光盘或者其他存储介质,在RAM或者ROM或者flash存储器,控制设备,硬盘,光盘,磁盘等等。同样地,软件和固件指令可以被传输到用户或者系统,通过任意已知的或者期望的传输方式。软件或者固件指令可以包括机器可读指令,这些可读指令在由控制设备执行时,导致控制设备执行不同动作。
当在硬件中执行时,硬件可以包括一个或多个离散组件,集成电路,应用的集成电路(ASIC),等等。
需要理解的是,本申请可以以纯软件、纯硬件、固件以及上述的各种组合来实现。硬件例如可以是控制设备、专用集成电路、大规模集成电路等等。
虽然当前申请参考的示例被描述,其只是为了解释的目的而不是对本申请的限制,对实施方式的改变,增加和/或删除可以被做出而不脱离本申请的范围。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种任务调度方法,包括以下步骤:
响应于收到向任务处理单元提供的消息和/或事件,缓存所提供的消息和/或事件,并更新所述任务处理单元的状态;
调度处于可被调度状态的任务处理单元,并执行被调度的任务处理单元的函数。
2.根据权利要求1所述的任务调度方法,其中,响应于向任务处理单元提供删除消息和/或删除事件的AP I被调用,删除已提供给任务处理单元的消息和/或事件,并更新所述任务处理单元的状态。
3.根据权利要求1所述的任务调度方法,其中,若任务处理单元的所有消息缓存均被填充,以及其所有事件缓存均指示事件出现,则所述任务处理单元处于可被调度状态。
4.根据权利要求1-3所述的任务调度方法之一,其中,响应于识别出任务处理单元处于可被调度状态,将处于可被调度状态的任务处理单元从任务处理单元链表移除,并添加至就绪链表,以从就绪链表中调度任务处理单元。
5.根据权利要求1-3所述的任务调度方法之一,其中,任务处理单元包括生产者任务处理单元与消费者任务处理单元,生产者任务处理单元将代表可用资源的消息提供给消费者任务处理单元。
6.根据权利要求5所述的任务调度方法,其中,被调度的消费者任务处理单元产生请求资源的消息并提供给生产者任务处理单元。
7.根据权利要求5所述的任务调度方法,其中,存在可用资源或存在可用资源并存在消费者任务处理单元请求资源的消息,则生产者任务处理单元处于可被调度状态。
8.根据权利要求5所述的任务调度方法,其中,消费者任务处理单元调用AP I将请求资源的消息提供给生产者任务处理单元,以使生产者任务处理单元向其提供代表可用资源的消息。
9.根据权利要求5所述的任务调度方法,其中,存在代表可用资源的消息或存在代表可用资源的消息及存在I O命令待处理的事件,则消费者任务处理单元处于可被调度状态。
10.一种任务调度系统,包括:任务管理单元和任务处理单元,其中,任务管理单元包括API处理单元、调度单元以及一个和多个API;响应于向任务处理单元提供消息和/或事件的API被调用,API处理单元将消息和/或事件记录于所述任务处理单元的缓存,并更新所述任务处理单元的状态;调度单元调度处于可被调度状态的任务处理单元,并执行被调度的任务处理单元的函数。
CN201910253885.9A 2019-03-30 2019-03-30 基于消息与事件的多任务处理单元的调度方法与装置 Pending CN111767120A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910253885.9A CN111767120A (zh) 2019-03-30 2019-03-30 基于消息与事件的多任务处理单元的调度方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910253885.9A CN111767120A (zh) 2019-03-30 2019-03-30 基于消息与事件的多任务处理单元的调度方法与装置

Publications (1)

Publication Number Publication Date
CN111767120A true CN111767120A (zh) 2020-10-13

Family

ID=72718372

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910253885.9A Pending CN111767120A (zh) 2019-03-30 2019-03-30 基于消息与事件的多任务处理单元的调度方法与装置

Country Status (1)

Country Link
CN (1) CN111767120A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106874084A (zh) * 2017-01-04 2017-06-20 北京百度网讯科技有限公司 一种分布式工作流调度的方法和装置
CN108958905A (zh) * 2017-05-25 2018-12-07 北京忆恒创源科技有限公司 嵌入式多核中央处理器的轻量级操作系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106874084A (zh) * 2017-01-04 2017-06-20 北京百度网讯科技有限公司 一种分布式工作流调度的方法和装置
CN108958905A (zh) * 2017-05-25 2018-12-07 北京忆恒创源科技有限公司 嵌入式多核中央处理器的轻量级操作系统

Similar Documents

Publication Publication Date Title
US12131186B2 (en) Hardware accelerated dynamic work creation on a graphics processing unit
US10552213B2 (en) Thread pool and task queuing method and system
US10223166B2 (en) Scheduling homogeneous and heterogeneous workloads with runtime elasticity in a parallel processing environment
EP3425502B1 (en) Task scheduling method and device
US9870252B2 (en) Multi-threaded processing with reduced context switching
US7373640B1 (en) Technique for dynamically restricting thread concurrency without rewriting thread code
EP1131739B1 (en) Batch-wise handling of job signals in a multiprocessing system
US8108571B1 (en) Multithreaded DMA controller
US8963933B2 (en) Method for urgency-based preemption of a process
US9448864B2 (en) Method and apparatus for processing message between processors
US8763012B2 (en) Scalable, parallel processing of messages while enforcing custom sequencing criteria
CN110795254A (zh) 一种基于php处理高并发io的方法
US20120054769A1 (en) Dividing a computer job into micro-jobs
US20120284720A1 (en) Hardware assisted scheduling in computer system
CN109840149B (zh) 任务调度方法、装置、设备及存储介质
US20230127112A1 (en) Sub-idle thread priority class
CN115167996A (zh) 调度方法及装置、芯片、电子设备及存储介质
CN110851276A (zh) 一种业务请求处理方法、装置、服务器和存储介质
CN114327894A (zh) 资源分配方法、装置、电子设备及存储介质
US10523746B2 (en) Coexistence of a synchronous architecture and an asynchronous architecture in a server
US9229716B2 (en) Time-based task priority boost management using boost register values
CN115362434A (zh) 分布式数据处理的任务调度
US6675238B1 (en) Each of a plurality of descriptors having a completion indicator and being stored in a cache memory of an input/output processor
CN111767120A (zh) 基于消息与事件的多任务处理单元的调度方法与装置
CN117093335A (zh) 分布式存储系统的任务调度方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information

Address after: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Applicant after: Beijing yihengchuangyuan Technology Co.,Ltd.

Address before: 100192 room A302, building B-2, Dongsheng Science Park, Zhongguancun, 66 xixiaokou Road, Haidian District, Beijing

Applicant before: BEIJING MEMBLAZE TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination