一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

异构计算中多进程管理方法及计算设备与流程

2022-06-11 14:59:35 来源:中国专利 TAG:


1.本技术涉及高性能计算和并行计算,尤其涉及多个进程的管理方法及装置。


背景技术:

2.本部分的陈述仅仅是为了提供与本技术的技术方案有关的背景信息,以帮助理解,其对于本技术的技术方案而言并不一定构成现有技术。
3.人工智能(ai)技术在近些年来得到了迅猛的发展,很多人工智能算法要求较强的并行计算能力以处理海量数据,而现有的串行指令执行方式的中央处理器cpu执行并行算法的效率很低。由此出现了“cpu 加速芯片”的异构计算架构,其中加速芯片作为协处理器专门处理大量计算任务,而其他非计算任务可由作为主处理器的cpu负责。例如cpu更适用于逻辑运算及分支密集的控制流程;而加速芯片更适用于高吞吐量数据处理及大量的矩阵运算、向量运算等并行计算任务。这种加速芯片通常也可以称为高性能计算处理器、协处理器、ai处理器、ai加速器、并行计算处理器等等。在这些高性能计算处理器中通常包括可并行执行命令的多个硬件命令队列来同时支持多个计算任务。这些计算任务可以属于一个用户的多个进程,也可以属于多个用户的多个进程。当每个计算任务提交至协处理器执行时,会启动一个包含多个命令列表的进程。如果该进程的所有命令列表中的命令都执行完成,意味着该计算任务完成;但这个进程也可能由于异常操作而提前结束。目前对于进程的管理工作是由主处理器的软件驱动负责的,这不仅会增加主处理器的负载,而主处理器和协处理器之间的通信也会引起处理性能损失。
4.需要说明的是,上述内容仅用于帮助理解本技术的技术方案,并不作为评价本技术的现有技术的依据。


技术实现要素:

5.本技术的目的是提供一种异构计算中多进程管理方法及计算设备,以简单高效的方式实现了多进程管理,提高了计算设备的利用率,并降低了软硬件编程的复杂度。
6.上述目的是通过以下技术方案实现的:根据本技术实施例的第一方面,提供了一种异构计算中多进程管理方法,包括:根据进程控制寄存器中包含的对进程的控制命令,在进程状态寄存器中设置该进程的状态;响应于检测到进程状态寄存器中进程的状态为有效状态,从进程列表中获取该进程的进程信息,并基于该进程信息将该进程中的各个命令列表发送到相应的硬件命令队列中进行执行;以及响应于检测到进程中的各个命令列表均处理完毕,在进程状态寄存器中将该进程的状态设置为无效状态。
7.在一些实施例中,在所述进程列表中记录的每个进程的进程信息长度相同,所述进程信息包括进程头信息、与进程中的每个命令列表对应的命令列表控制信息、以及一个或多个无效条目;其中所述进程头信息包括指示该进程包含的命令列表的数量的信息,所述命令列表控制信息包含命令列表的存储地址和控制信息。在一些实施例中,在所述进程
列表中,每个无效条目的长度与命令列表控制信息的长度相同。在一些实施例中,在所述进程列表中,对于一个进程信息,其进程头信息、命令列表控制信息及相应无效条目紧密存储在一起。在一些实施例中,在所述进程列表中,将各个进程的进程头信息紧密存储在一起,并将每个进程的所有命令列表控制信息紧密存储在一起。
8.在一些实施例中,对进程的控制命令的类型包括启动命令、更新命令、停止命令及中断命令。在一些实施例中,所述方法还可包括响应于检测到进程控制寄存器包括对进程的启动命令或更新命令,在进程状态寄存器中设置该进程的状态为有效状态;以及响应于检测到进程控制寄存器包括对进程的停止命令或中断命令,在进程状态寄存器中设置该进程的状态为无效状态。
9.在一些实施例中,将进程中的各个命令列表发送到相应硬件命令队列中进行执行可以包括:如果当前有空闲的硬件命令队列,则将命令列表发送到所选择的空闲的硬件命令队列中进行执行,否则进行等待。
10.在一些实施例中,该方法还可以包括为待执行的计算任务创建进程及该进程中包含的一个或多个命令列表,在进程列表中记录相应的进程信息,并将该进程的启动命令写入到用于执行该进程的处理器的进程控制寄存器中。
11.在一些实施例中,该方法还可以包括响应于检测到用于执行进程的处理器的进程状态寄存器中有进程处于无效状态,将该处于状态无效的进程所占的存储空间进行释放。
12.根据本技术实施例的第二方面,提供了一种高性能处理器,其包括控制器、进程控制寄存器和进程状态寄存器,其中控制器被配置为执行根据本技术实施例的第一方面所述的方法。
13.根据本技术实施例的第三方面,提供了一种计算设备,包括主处理器和协处理器,其中所述协处理器为根据本技术实施例的第二方面所述的高性能处理器应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
14.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1示出了根据本技术一个实施例的进程列表的组织形式示意图。
15.图2示出了根据本技术又一个实施例的进程列表的组织形式示意图。
16.图3示出了适用根据本技术实施例的异构计算中多进程管理方法的计算设备的示例模块示意图。
17.图4示出了根据本技术一个实施例的异构计算中多进程管理方法的流程示意图。
具体实施方式
18.为了使本技术的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本技术进一步详细说明。应当理解,所描述的实施例是本技术的一部分实施例,而不
是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动下获得的所有其他实施例,都属于本技术保护的范围。
19.此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本技术的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本技术的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本技术的各方面。
20.附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
21.附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
22.在异构计算中通过协处理器专门处理大量计算任务,而其他非计算任务可由作为主处理器的cpu负责。当一个计算任务提交至协处理器执行时,会启动一个包含多个命令列表的进程。命令列表是多个命令的集合,一般的,顺序执行的命令分配至同一命令列表,而可以并行执行的命令往往分配至不同的命令列表。协处理器通常包括多个硬件命令队列来并行执行多个命令。当协处理器执行一个计算任务时,其读取与该计算任务对应的进程信息,获取该进程的各命令列表中的命令并将其分配至多个硬件命令队列以供后续处理。
23.与各个计算任务相关的进程信息记录在进程列表中。在该进程列表中包含了若干个进程信息,每个进程信息包含进程头信息和若干命令列表的控制信息。其中进程头信息包含了控制进程所必要的信息,因此也可以称为进程控制信息;例如进程标识、进程开始时间、进程状态、进程包含的命令列表的数量等等。每个命令列表的控制信息包含了命令列表的存储地址及与该命令列表相关的所有控制信息。其中,命令列表的存储可以通过多种形式来实现。例如,命令列表可以被设计为环形缓冲结构,采用环形缓冲结构的好处是软件不用频繁分配内存。这样的环形缓冲结构通过写指针和读指针来完成命令列表的管理:当向命令列表中添加新命令时,可以更新写指针;当从命令列表取出命令后,可以更新读指针。每个命令列表在存储器中都有自己的存储地址,该信息被保存在命令列表的控制信息中。上述的进程列表以及命令列表可以存储在主处理器的存储器中,也可以设置在协处理器的存储器中。
24.在现有的异构计算中,通常是在主处理器的软件驱动中设置相应的进程管理模块在维护和管理相应的进程信息。如上文介绍的,每个进程可包含的命令列表的个数是可变的,因此进程列表中每个进程信息的长度也是不断在变化的。进程管理模块需要根据各个进程的动态变化不断维护和管理整个进程列表的结构,动态获取该列表中各个进程信息的存储地址,并通知给执行该进程的协处理器。这不仅会增加主处理器的负载,而且主处理器和协处理器之间的通信也会引起额外的延迟和等待时间,造成处理性能的损失。
25.在本技术的实施例中提供了一种用于异构计算的新的多进程管理方法,将部分进程管理功能设置在协处理器端采用硬件的形式实现,并且为了便于硬件对进程的管理,设计了新的结构形式来组织进程信息。在本技术的实施例中,在进程列表中每个进程信息采
用固定长度的结构,其包括:进程头信息、一个或多个命令列表控制信息和用于填充存储空间的若干个无效条目。进程头信息包含了命令列表的实际个数,以表明当前进程有几个实际有效的命令列表。每个命令列表控制信息包含了命令列表的存储地址和相关的控制信息。每个无效条目的长度与每个命令列表控制信息的长度相同。这样,当一个进程追加新的命令列表时,只需要将其进程信息中的某个无效条目直接改为有效的命令列表控制信息,并更新进程头信息即可,并不需要改变整个进程列表的结构。由于进程列表中各个进程信息采用固定长度的结构,因此当其中一个进程退出时,其对应的进程信息的存储位置可以直接更换为一个新的进程,也无需改变整个进程列表的结构。可以看出,与变长的进程信息结构相比,本技术实施例中定长的进程信息结构更便于进程信息以及整个进程列表的管理和维护。而且每个进程信息的存储地址也更容易计算,更方便和适合硬件读取和解析进程列表中每个进程信息的条目。其中进程信息结构的长度可根据实际的需求来设置,本文对此不进行限制。
26.图1给出了根据本技术一个实施例的进程列表的组织形式。其中每个进程信息都是固定长度的。例如尽管进程信息1和进程信息2中包含的命令列表个数不同,但二者所占的存储空间的长度相同。每个进程信息中的进程头信息和命令列表的控制信息按整体紧密存储在一起。在本文中紧密存储指的是占用连续的存储空间。也就是说,在该实施例中,每个进程信息中所有内容占用固定长度的连续存储空间进行存储,如有无效部分,无效部分用多个无效条目进行填充。这样,每个进程信息的存储地址容易计算,且每个进程信息的各条目便于硬件读取和解析。
27.图2给出了根据本技术又一个实施例的进程列表的组织形式。该进程列表分为两个部分:每个进程的头信息紧密存储在一起,而每个进程的所有命令列表控制信息紧密存储在一起(称为进程内容信息)。相比图1的进程列表的组织形式,图2所示的进程列表的组织形式可以让负责执行进程的计算设备首先读入和解析进程头信息,从而得到有效的命令列表控制信息的数目,然后据此去读取相关的进程内容信息,避免了读入不必要的无效条目。
28.图3给出了适用根据本技术实施例的异构计算中多进程管理方法的计算设备的示例模块示意图。该计算设备包含了主处理器和协处理器。其中在用于执行计算任务的协处理器中设置了硬件进程管理模块、进程状态寄存器和进程控制寄存器来进行进程管理。主处理器接收来自上层软件的计算任务,为每个待执行的计算任务创建一个新的包含一个或多个命令列表的进程,并将该进程的启动命令写入到用于执行该进程的协处理器的进程控制寄存器中。同时,主处理器将与该进程相关的信息以及该进程的一个或多个命令列表保存至存储器中,以供后续的协处理器使用。其中与进程相关的信息以上文介绍的固定长度格式保存在进程列表。该进程列表可以采用如上文结合图1和图2介绍的组织形式进行存储。由于每个进程信息是定长的,所以进程信息的存储地址可以通过简单的移位和加法就可以得到,不需复杂的计算,节省了硬件资源,简化了硬件编程逻辑。
29.在该实施例中,主处理器通过对协处理器的进程控制寄存器进行写入的方式向协处理器提供进程控制命令。进程控制命令类型通常包括启动、更新、停止或中断命令。主处理器写入协处理器的进程控制寄存器的信息可包含执行相应控制命令所需的相关信息,例如与命令类型相关的信息(例如命令类型标识)、与识别进程相关的信息(例如进程标识)、
与获取进程信息相关的信息(例如进程列表存储地址)等等。本文不对具体的命令格式或形式进行任何限制。协处理器中的硬件进程管理模块通过读取进程控制寄存器接收来自主处理器的进程控制命令以进行相应的进程管理。例如,硬件进程管理模块可以用于执行下列操作:基于收到的进程控制命令读取和解析待执行进程的相关信息、将进程的命令列表分发至相应的硬件命令队列进行执行、管理进程的状态、进程的切换及中断等等。在实际应用中,由主处理器创建的命令列表数目可能大于协处理器的硬件命令队列数目,因此硬件进程管理模块还用于对多个硬件命令队列进行调度。
30.继续参考图3,进程状态寄存器用于记录协处理器当前正在运行的进程的状态。其中用一个比特(bit)来表示每个进程的当前状态,例如,数值0代表当前进程无效,数值1代表当前进程有效。进程状态寄存器的长度决定于该协处理器可以运行的最大进程数目。即执行进程的处理器最大支持的进程数目是多少,进程状态寄存器就有几个比特。
31.进程控制寄存器用于保存来自主处理器的对进程的相关控制命令,其通常包括进程的序号和控制命令。如上文提到的,对于进程的控制命令通常包括启动、更新、停止或中断命令。进程的启动命令表示进程第一次被创建,该进程的命令列表可以开始由相应的协处理器执行,此时硬件进程管理模块将该协处理器的进程状态寄存器中相应的进程状态位设为1,当进程的所有命令列表执行完后,将该进程状态清为0。进程的更新命令表示命令列表有更新,例如,向一个运行的命令列表追加新的命令或一个全新的命令列表被创建。硬件进程管理模块响应于收到的更新命令将进程状态寄存器中相应的进程状态位设为1,以指示该进程的命令列表需要该协处理器继续执行。进程的停止命令表示该进程全部命令列表已经全部完成,此时状态寄存器中相应的进程状态位清为0。这样就可以释放进程的存储空间,该存储空间可以被更新为一个新的进程。进程的中断命令表示由于某种异常,一个进程不需要继续执行,此时状态寄存器中相应的进程状态位被设为0。如果是一个正被硬件执行的进程被中断,其命令队列的执行会被直接停止;如果是一个还没有被协处理器执行的进程,则不再存储器读取该进程的进程信息。
32.在一些实施例中,主处理器可以通过诸如定期查询、持续扫描等方式检测协处理器的进程状态寄存器中是否有进程处于无效状态,如果有,则可以将该处于无效状态的进程所占的存储空间进行释放。在一些实施例中,如果协处理器的硬件进程管理模块检测到进程的命令列表已处理完毕,但在同一时钟周期内,主处理器根据上层软件的指示更新了该进程的命令列表,并向协处理器的进程控制寄存器写入了更新命令,此时该协处理器的进程状态寄存器中该进程的进程状态位仍会保持为1,以表明当前进程仍然有效,需要协处理器继续执行该进程的命令列表。也就是说软件操作的优先级大于硬件,主处理器的优先级大于协处理器。
33.在上述的实施例中,进程控制寄存器和进程状态寄存器可以由现有的任意硬件形式的寄存器来实现。主处理器通过直接对协处理器的进程控制寄存器进行写入的方式来将对进程的相关控制命令提供至协处理器,简化了主处理器与协处理器之间的通信机制,使编程更简单,并且也减少了二者之间的通信延迟,不会由于操作存储器的内容而导致硬件可能读到过时的数据。而且协处理器采用进程状态寄存器来维护进程的状态,可以满足多设备(主处理器和协处理器)同时读写,保证了状态的准确性,而利用其他形式的存储器很难做到这一点。另外,在图3中尽管以独立模块的形式展示了协处理器中的硬件进程管理模
块,但应理解该硬件进程管理模块或者实现该硬件进程管理模块的电路属于协处理器的控制电路、控制逻辑或控制器的一部分,或者该协处理器的控制电路、控制逻辑或控制器可以被配置为执行上文结合硬件进程管理模块所介绍的进程管理功能。
34.图4给出了根据本技术一个实施例的异构计算中多进程管理方法的流程示意图。如图4所示,在步骤s1,用于执行计算任务的处理器根据其进程控制寄存器中包含的对进程的控制命令,在其进程状态寄存器中设置该进程的状态。如上文提到的,对进程的控制命令可以包括启动命令、更新命令、停止命令或中断命令。当检测到进程控制寄存器包括对进程的启动命令或更新命令时,将进程状态寄存器中该进程的状态设置为有效状态。当检测到进程控制寄存器包括对进程的停止命令或中断命令时,将进程状态寄存器中该进程的状态设置为无效状态。这种通过更新进程控制寄存器和进程状态寄存器来向执行进程的处理器传递相关进程控制命令的方式,更快速更安全并且编程逻辑简单,有利于降低软硬件编程的复杂度。
35.在步骤s2,对于进程状态寄存器中状态被标记为有效状态的待执行进程,从进程列表中获取该进程的进程信息。每个进程的进程信息以上文介绍的固定长度格式保存在进程列表。该进程列表可以存储在主处理器的存储器中,也可以保存在协处理器的存储器中。协处理器可以根据进程控制寄存器中进程序号和相关命令信息计算该进程的进程信息的存储地址,以便从存储器中读取该进程的进程信息。例如,可以根据要执行的进程的序号和进程列表的存储地址来从进程列表中获取该进程的进程信息。由于每个进程信息是定长的,所以进程信息的存储地址可以通过简单的移位和加法就可以得到,不需复杂的计算,节省了硬件资源,也简化了硬件编程逻辑。
36.如上文提到的,每个进程的进程信息包括进程头信息、与进程中的每个命令列表对应的命令列表控制信息以及一个或多个无效条目。其中进程头信息包括指示该进程包含的命令列表的数量的信息,以指示该进程有几个实际有效的命令列表。该进程列表可以采用如上文结合图1和图2介绍的组织形式进行存储。如果按图1的存储结构,读取存储器的长度是进程信息的固定长度,可能会得到的无效条目,这些无效条目可以被后续的步骤直接跳过而不进行处理。如果按图2的存储结构,需要先读入和解析进程头信息,从而得到有效的命令列表控制信息的数目,然后再读取相应的命令列表控制信息,从而避免读入无效条目,但需要对存储器进行两次读取。
37.在步骤s3,对所获取的进程信息进行解析,将该进程中的各个命令列表发送到相应硬件命令队列中进行执行。如上文提到的,每个进程的进程信息包括进程头信息、与进程中的每个命令列表对应的命令列表控制信息。每个命令列表控制信息包含命令列表的存储地址和控制信息。因此,协处理器可以基于相应的命令控制信息可以获取该进程中的所有命令列表,并将进程中的各个命令列表发送到相应硬件命令队列中。在实际应用中,由主处理器创建的命令列表数目可能大于协处理器的硬件命令队列数目。因此在一些实施例中,在步骤s3还包括判断当前是否有空闲的硬件命令队列,如果有空闲的硬件命令队列,则将命令列表发送到所选择的空闲的硬件命令队列中执行,否则需要进行等待。在又一些实施例中,响应于根据所获取的进程信息确定进程中的各个命令列表设置有优先级,优先调度优先级高的命令队列进入相应硬件命令队列中进行执行。
38.继续参考图4,在步骤s4,响应于检测到进程中各命令列表均处理完毕,在进程状
态寄存器中将该进程的状态设置为无效状态。在一些实施例中,当检测到进程的命令列表已处理完毕,但在同一时钟周期内,还检测到进程控制寄存器写入了该进程的更新命令,则在进程状态寄存器中仍然将该进程的状态保持为有效状态,以指示继续执行该进程的命令列表。在一些实施例中,响应于检测到进程状态寄存器中有进程处于无效状态,将该处于状态无效的进程所占的存储空间进行释放。
39.在一些实施例中,该方法还可以包括为待执行的计算任务创建进程及该进程中包含的一个或多个命令列表,在进程列表中记录相应的进程信息,并将该进程的启动命令写入到用于执行该进程的处理器的进程控制寄存器中。
40.在上述的实施例中,通过读写硬件寄存器的方式实现了主处理器与协处理器之间的通信,不仅减少了通信延迟,还减少了对存储器内容的访问延时和访存功耗。而且这种硬件寄存器的方式可以满足多设备(主机的软件驱动或者硬件进程控制模块)同时读写,保证了进程状态的准确性,简化了进程管理的编程逻辑和复杂度,提高了进程管理效率。
41.在本技术的又一个实施例中,还提供了一种包括多个硬件命令队列的高性能处理器,其还包括控制器、进程控制寄存器和进程状态寄存器,其中控制器被配置为执行上文结合图4介绍的方法。
42.本说明书中针对“各个实施例”、“一些实施例”、“一个实施例”、或“实施例”等的参考指代的是结合所述实施例所描述的特定特征、结构、或性质包括在至少一个实施例中。因此,短语“在各个实施例中”、“在一些实施例中”、“在一个实施例中”、或“在实施例中”等在整个说明书中各地方的出现并非必须指代相同的实施例。此外,特定特征、结构、或性质可以在一个或多个实施例中以任何合适方式组合。因此,结合一个实施例中所示出或描述的特定特征、结构或性质可以整体地或部分地与一个或多个其他实施例的特征、结构、或性质无限制地组合,只要该组合不是非逻辑性的或不能工作。
43.本说明书中“包括”和“具有”以及类似含义的术语表达,意图在于覆盖不排他的包含,例如包含了一系列步骤或单元的过程、方法、系统、产品或设备并不限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。“一”或“一个”也不排除多个的情况。另外,本技术附图中的各个元素仅仅为了示意说明,并非按比例绘制。
44.虽然本技术已经通过上述实施例进行了描述,然而本技术并非局限于这里所描述的实施例,在不脱离本技术范围的情况下还包括所做出的各种改变以及变化。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献