CN114816652A - 命令处理装置以及方法、电子设备、以及计算机存储介质 - Google Patents
命令处理装置以及方法、电子设备、以及计算机存储介质 Download PDFInfo
- Publication number
- CN114816652A CN114816652A CN202110127623.5A CN202110127623A CN114816652A CN 114816652 A CN114816652 A CN 114816652A CN 202110127623 A CN202110127623 A CN 202110127623A CN 114816652 A CN114816652 A CN 114816652A
- Authority
- CN
- China
- Prior art keywords
- command
- users
- user
- buffer
- commands
- 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
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开提供了一种命令处理装置以及方法、电子设备、以及计算机存储介质,其中,命令处理装置包括:微控制器、至少一个用户对应的命令分发器、以及与各所述命令分发器对应的运算单元;其中,所述微控制器,用于从所述至少一个用户对应的缓冲器中读取命令,并将命令存储至所述至少一个用户对应的命令队列中;所述命令分发器,用于从对应的命令队列中读取所述命令,并将所述命令分发至与所述命令分发器对应的运算单元;所述运算单元,用于执行对应的命令分发器分发的命令。利用这种命令处理装置可以提高对命令处理的效率。
Description
技术领域
本公开涉及计算机科学技术领域,具体而言,涉及一种命令处理装置以及方法、电子设备、以及计算机可读存储介质。
背景技术
随着云计算的飞速发展,云端可以通过虚拟化的方法,将物理资源转变为逻辑上可管理的资源,以提高云端服务器的物理资源利用率。人工智能(ArtificialIntelligence,AI)计算是云端计算的一种重要应用场景;而作为AI计算的重要承担者,图像处理器(Graphics Processing Unit,GPU)或者AI芯片也常常在实际使用中进行虚拟化。
当前将AI芯片或者GPU进行虚拟化的方法存在安全性较低的问题。
发明内容
本公开实施例至少提供一种命令处理装置以及方法、电子设备、以及计算机可读存储介质。
第一方面,本公开实施例提供了一种命令处理装置,包括:微控制器、至少一个用户对应的命令分发器、以及与各所述命令分发器对应的运算单元;其中,所述微控制器,用于从所述至少一个用户对应的缓冲器中读取命令,并将命令存储至所述至少一个用户对应的命令队列中;所述命令分发器,用于从对应的命令队列中读取所述命令,并将所述命令分发至与所述命令分发器对应的运算单元;所述运算单元,用于执行对应的命令分发器分发的命令。
这样,通过为不同的用户分配对应的命令分发器、以及运算单元,可以实现对不同用户对应指令的处理,从而在物理上将处理不同命令的计算资源隔离开,降低由于计算资源在用户之间共用而导致的安全隐患,提升用户的安全性。
一种可选的实施方式中,针对所述用户有多个,且不同的用户对应不同的缓冲器的情况,所述微控制器用于在不同的时间片分别从不同的缓冲器中读取所述命令。
一种可选的实施方式中,所述微控制器用于:依次将多个所述时间片分别作为当前时间片,并在所述当前时间片执行下述监听过程,直至所述当前时间片结束,切换至下一时间片;所述监听过程包括:在当前时间片监听与所述当前时间片对应的缓冲器中是否存在命令;响应于所述当前时间片对应的缓冲器中存在所述命令的情况下,从所述当前时间片对应的缓冲器中读取所述命令。
这样,通过设置在不同的时间片内对应处理不同的缓冲器中的命令,有利于有序的对不同的缓冲器中存放的待处理的命令进行处理,同时,可以在利用时分复用的方式对命令进行处理时,将主机下发至缓冲器中不同用户的命令按照时间片进行划分,有效的避免了在对应用户下发时可能会出现的错误。
一种可选的实施方式中,针对所述用户有多个,且不同的用户对应不同的缓冲器的情况,所述微控制器用于轮询多个所述用户分别对应的缓冲器,并响应于当前轮询的用户对应的缓冲器非空,从当前轮询的缓冲器中读取命令。
这样,通过对多个用户对应的缓冲器进行轮询,可以将各个用户的命令快速、高效的传输至对与各个用户对应的命令队列中,以使命令分发器能够及时从对应的命令队列中获取命令并分发至对应运算单元,保证命令的高效处理,提升处理效率。
一种可选的实施方式中,针对不同用户对应不同缓冲器,且一个用户对应多个缓冲器的情况,所述微控制器用于在每个所述用户对应的时间片内,轮询所述每个用户对应的多个缓冲器,并从当前轮询的缓冲器中读取命令。
这样,用户在对应多个不同缓冲器的情况下,可以从不同的缓冲器中读取命令,因此可以提高用户可获取命令的数量,从而使用户可以处理更多的命令。
一种可选的实施方式中,针对所述用户有多个,且不同的用户对应相同的缓冲器的情况,所述微控制器用于从所述多个用户对应的相同缓冲器中读取所述命令。
这样,让多个用户对应相同的缓冲器,能够充分利用缓冲器的存储空间,提升微控制器对多个用户的命令的获取效率。
一种可选的实施方式中,针对所述用户有多个,且不同的用户对应相同的缓冲器的情况,所述微控制器用于在不同的时间片,分别访问多个用户在所述相同的缓冲器分别对应的存储位置,并读取命令;或者轮询所述多个用户在所述相同的缓冲器分别对应的存储位置,并读取命令。
一种可选的实施方式中,所述缓冲器包括:环形缓冲器;所述环形缓冲器包括与同一用户中的至少一个命令流中每个命令流分别对应的存储入口;所述微控制器,用于基于所述环形缓冲器中与每个命令流对应的存储入口,读取与每个命令流对应的命令。
这样,利用与命令流对应的目标入口,在环形缓冲器上存储不同命令流对应的命令,从而可以使得微控制器同步监听环形缓冲器的多个入口,能够在一个处理周期内将不同命令流中的命令下拉下来,提升命令获取的效率。同时,环形缓冲器可以向通信程序提供对缓冲区的互斥访问,有利于在使用时规避存储队列在频繁的命令分配时增加的***开销。
一种可选的实施方式中,所述微控制器用于将与同一用户中的至少一个命令流对应的命令,存储至与所述至少一个命令流对应的命令队列中。
一种可选的实施方式中,在一个用户对应多个缓冲器的情况下,所述微控制器在为所述用户确定命令队列时,为该用户对应的不同缓冲器分别确定与不同缓冲器对应的命令队列。
一种可选的实施方式中,所述用户有M个,M个所述用户中的N个目标用户共用相同的命令队列、以及同一命令分发器;其中,M为大于1的整数;N为小于或者等于M,且大于1的整数;所述微控制器,用于在不同时间片分别从所述N个目标用户对应的缓冲器中读取命令,并将命令存储至所述N个目标用户共用的命令队列中。
一种可选的实施方式中,所述命令分发器,用于在所述不同时间片,从所述N个目标用户共用的命令队列中读取不同目标用户分别对应的命令,并将不同目标用户分别对应的命令向所述命令分发器对应的运算单元发送;所述命令分发器对应的运算单元,用于在所述不同时间片,执行所述N个目标用户分别对应的命令。
这样,通过在空分复用的基础上,使得多个用户可以通过时分复用实现对某一个命令分发器、以及对应运算单元的复用,从而提升部署在同一设备上的用户的数量,提升对GPU资源利用的灵活性。
第二方面,本公开实施例还提供一种命令处理方法,应用于命令处理装置,所述命令处理装置包括:微控制器、至少一个用户对应的命令分发器、以及与每个所述命令分发器对应的运算单元;所述命令处理方法包括:所述微控制器从所述至少一个用户对应的缓冲器中读取命令,并将命令存储至所述至少一个用户对应的命令队列中;所述命令分发器从对应的命令队列中读取所述命令,并将所述命令分发至与所述命令分发器对应的运算单元;所述运算单元执行对应的命令分发器分发的命令。
第三方面,本公开实施例还提供一种电子设备,包括:主机、缓冲器,以及命令处理装置;所述主机用于下发待执行命令,并存储于至少一个用户分别对应的缓冲器;
所述命令处理装置用于执行第二方面任一实施例提供的命令处理方法。
第四方面,本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被微控制器、命令分发器、运算单元执行时实现第二方面任一实施例提供的命令处理方法。
关于上述命令处理方法的效果描述参见上述命令处理装置的说明,这里不再赘述。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种命令处理装置的示意图;
图2示出了本公开实施例所提供一种命令队列的示意图;
图3示出了本公开实施例所提供的一种具体的命令处理装置的示意图;
图4示出了本公开实施例所提供的命令处理方法的流程图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,当前在对GPU或者AI芯片进行虚拟化时,可以采用时间片调度策略进行上下文切换,以支持多个用户工作;例如在将AI芯片虚拟化为多个用户情况下,AI芯片在某一时间片内执行当前用户的相关指令;一旦该时间片用完,AI芯片会马上切换至下一用户,并执行下一用户的相关指令。该方法由于是通过软件实现不同用户之间的隔离,需要AI芯片频繁的进行上下文切换(用户切换),调度的时间开销较大,对用户中指令的处理效率较低;同时,若发生对某个用户的恶意攻击,由于不同用户会共享相同的计算资源,容易导致对其他用户的安全威胁,安全性较差。
基于上述研究,本公开提供了一种命令处理装置、方法、计算机设备及存储介质,能够将执行不同用户计算任务的计算资源从物理上隔离开,降低由于计算资源在用户之间共用而导致的安全隐患,提升用户的安全性。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种命令处理方法进行详细介绍。
本公开实施例提供的命令处理装置,可以用于GPU、人工智能芯片,或者其他包括指令处理器、执行单元的指令处理设备。
下面以将本公开实施例提供的命令处理装置应用于GPU为例对本公开实施例提供的命令处理装置加以说明,但也可以应用于其他类型的命令处理装置。
参见图1所示,为本公开实施例提供的命令处理装置的结构示意图,包括:微控制器10、至少一个用户中每个用户对应的命令分发器20(其中图1中示出了多个命令分发器,包括命令分发器0~命令分发器n)、以及各所述命令分发器20对应的运算单元30(其中图1中示出了多个运算单元0~运算单元n);
其中,微控制器10,用于从每个用户对应的缓冲器中读取命令,并将命令存储至每个用户对应的命令队列中;
命令分发器20,用于从对应的命令队列中读取命令,并将命令分发至与命令分发器20对应的运算单元30;
运算单元30,用于执行对应的命令分发器20分发的命令。
本公开实施例中,命令处理装置包括了微控制器10、至少一个用户中每个用户对应的命令分发器20、以及与各所述命令分发器20对应的运算单元30,其中,在主机将不同的用户的命令下发至与对应用户的缓冲器中后,微控制器10能够从同一用户对应的缓冲器中读取命令,并将命令存储至同一用户对应的命令队列中,命令分发器20从对应的命令队列中读取命令后,将命令分发至命令分发器20对应的运算单元30中,以供与命令分发器20对应的运算单元30执行对应的命令,从而通过为不同的用户分配对应的命令分发器20、以及运算单元30,实现对不同用户对应指令的处理,从而在物理上将处理不同命令的计算资源隔离开,降低由于计算资源在用户之间共用而导致的安全隐患,提升用户的安全性。
本公开实施例中的用户例如可以包括下述任一种:虚拟机、计算机容器(container)、应用程序、或者应用程序中的不同功能。
下面以用户为虚拟机为例,分别对微控制器10、命令分发器20、以及运算单元30加以详细描述。
在创建虚拟机时,需要为虚拟机分配对应的计算资源;本公开实施例中,为虚拟机分配的计算资源包括GPU中的命令分发器20以及运算单元30。其中,运算单元30的数量,根据创建虚拟机时所确定的计算资源配置信息确定。另外,在创建虚拟机时,还可以为虚拟机分配与虚拟机对应的缓冲器。
虚拟机在运行时,虚拟机的应用层可以同时存在一个或者多个命令流stream;每个stream中包括至少一个命令,stream中的命令例如从主机host被下发至与虚拟机对应的缓冲器中。
示例性的,在虚拟机VM1中运行一个软件时,可以运行此软件的一个或者多个软件功能;虚拟机VM1在仅运行其中的一个软件功能时,host可以为运行此软件功能生成一命令流,该命令流执行处理任务时,会生成命令流stream;host将该stream中的命令存储至与该虚拟机VM1对应的缓冲器中。
其中,在确定缓冲器时,可能存在多个stream(多个命令流,不同命令流对应不同的stream),且每个stream中都可能存在多条命令,因此可能存在对不同stream中命令的并行处理,且同一stream中的命令会存在处理的先后顺序,例如在某个stream中的多个命令下发后,按照下发的时间顺序对先下发的命令进行存储和处理,在先下发的命令处理完成后,才会对后下发的命令进行处理。为了方便多个stream中命令的并行处理,且方便同一stream中的多个命令按照命令下发的时间先后被顺序处理,本公开实施例选用环形缓冲器(ring buffer,RBUF),解决锁调用频繁(即频繁地对命令进行存储、移位和释放等操作)的问题,也即不用频繁的分配内存,使得可以对缓冲器进行反复使用,减少对缓冲器中存储空间的浪费。
本公开实施例中,环形缓存器中包括与至少一个命令流中每个命令流对应的存储入口entry;并且,至少一个命令流运行在同一用户中。
示例性的,缓冲器和用户一一对应;
和/或,一个缓冲器可以对应多个用户;
和/或,一个用户还可以对应多个缓冲器。
示例性的,确定的多个缓冲器例如可以包括n(n为正整数)个,分别表示为RBUF1、RBUF2、……、RBUFn。同时,虚拟机有m(m为正整数)个,例如可以表示为VM1、VM2、……、VMm。
以虚拟机VM1为例:
(1):一个用户对应一个缓冲器的情况下,VM1例如可以对应一个缓冲器,例如VM1对应RBUF1,VM1中所有stream中的命令都会被存储至RBUF1中。
此处,例如可以通过下述方式向缓冲器RBUF1中下发命令:确定同一用户对应的至少一个命令流;基于至少一个命令流中的每个命令流,确定每个命令流对应的至少一个命令;利用缓冲器中包括的与同一用户中的至少一个命令流分别对应的存储入口,将至少一个命令流中的每个命令流分别对应的至少一个命令存储至缓冲器中。
在具体实施中,不同的应用对应的命令流有所不同。示例性的,在利用用户实现图像处理的应用(Application)时,操作***的进程(Process)中进行运算调度的命令流例如可以包括下述三个命令流:图像预处理、利用卷积神经网络对处理后的图像进行目标识别、以及确定图像中的目标对象。其中,每个命令流可以对应至少一个命令,例如在命令流包括利用卷积神经网络对处理后的图像进行目标识别时,可以将所需的卷积、以及池化等操作分别对应的命令划分为对应的各种算子(Kernel)、数据迁移(Data Migration)、同步操作(Synchronous)等命令。此时,例如可以确定H(H为正整数)个命令流,并将H个命令流进行顺序编号,例如可以表示为1、2、……、H;其中,以第一个命令流(对应的编号为1)为例,对应的命令例如可以包括K个,K个命令中的第i个命令例如可以表示为P1-i(i∈[1,K])。
(2):在一个用户对应多个缓冲器的情况下,VM1例如可以对应s个缓冲器,例如VM1对应RBUF1、RBUF2、……RBUFs;RBUF1、RBUF2、……RBUFs中分别用于存放VM1中至少一个stream中的命令。
此处,例如可以通过下述方式向缓冲器RBUF1~RBUFs中下发命令:确定用户对应的命令流;基于用户对应的缓冲器的数量,将所述用户对应的命令流分为多个命令流组;其中,用户对应的每个缓冲器对应一个命令流组;针对每个命令流组,利用该命令流组对应的缓冲器中与该命令流组中的每个命令流对应的存储入口,将该命令流组中的每个命令流分别对应的至少一个命令存储至与该命令流组对应的缓冲器中。
例如在上述(1)中的示例中,若s=2,可以将H个命令流分为2个命令流组,两个命令流组分别对应RBUF1和RBUF2,按照H个命令流中每个命令流归属的命令流组,将各个命令流中的指令,下发至RBUF1或RBUF2中。
(3):在一个缓冲器对应多个用户的情况下,VM1例如可以和VM2共同对应一个缓冲器RBUF1,该RBUF1中,既包括了VM1中各个stream的entry,又包括了VM2中各个stream的entry。
此时,在确定每个命令流对应的至少一个命令后,即可以将至少一个命令存储至缓冲器RBUF1中。在将命令存储至缓冲器RBUF1中时,例如还可以确定缓冲器RBUF1中每个命令流对应的存储入口。
在一种可能的实施方式中,在确定缓冲器RBUF1中的存储入口时,例如可以根据缓冲器RBUF1中命令对应的数据(下述为表述方便,统一将“命令对应的数据”表述为“命令”,其实质仍旧包括对应的数据)的存储数量,为多个命令流平均分配对应的存储空间,并将多个命令流中的每个命令流对应的存储空间中的首位存储空间的数据传输入口作为对应命令流的存储入口。由于在向缓冲器RBUF1中存放命令时,是利用读指针和写指针进行寻址确定命令对应的存放位置的,为了方便对在缓冲器RBUF1中存放和读取命令分别对应的存放和读取位置的说明,下述利用Loc-i表示缓冲器RBUF1中的第i个地址。
示例性的,在存在3个命令流,且设置缓冲器RBUF1中可以存放6组命令的情况下,存放6组命令的缓冲器RBUF1的存储空间分别对应的地址例如可以包括Loc-1、Loc-2、……、Loc-6。在为3个命令流平均分配存储空间时,例如可以将地址Loc-1、Loc-2分配给第一个命令流、将地址、Loc-3、Loc-4分配给第二个命令流、并将地址Loc-5、Loc-6分配给第三个命令流。此时,可以将第一个命令流的首地址Loc-1作为第一个命令流对应的存储入口、将第二个命令流的首地址Loc-3作为第二个命令流对应的存储入口、并将第三个命令流的首地址Loc-5作为第三个命令流对应的存储入口。
此处,需要注意的是,不同缓冲器对应的命令存放空间的数量可以相同,也可以不同,在此不做限定,对应的命令例如可以包括P1-1、P1-2、P2-1、P2-2、P3-1、以及P3-2。
在另一种可能的实施方式中,在确定缓冲器RBUF1中的存储入口时,例如还可以按照经验或者实际需求为多个命令流分配对应的存储空间。具体的方法在此不再赘述。
host将命令下发至缓冲器后,命令处理装置中的微控制器10能够从与用户对应的缓冲器中读取命令,并将命令存储至每个用户对应的命令队列中。
当缓冲器为环形缓冲器的时候,微控制器10,在从所述每个用户对应的缓冲器中读取命令时,能够基于所述环形缓冲器中与所述每个命令流对应的存储入口,读取与所述每个命令流对应的命令。
此处,缓冲器RBUF1的存储入口也可以作为读取入口,读取命令的方法与上述存储命令的方法相似,均是通过读指针和写指针进行寻址,确定待读取的命令,具体的寻址过程在此不再赘述。
微控制器10从缓冲器中读取命令的时候:
针对用户仅有一个的情况,微控制器10从缓冲器中读取命令,并将命令分发至与该用户对应的命令分发器20。
针对用户有多个的情况:
A:在不同的用户对应不同的缓冲器,且一个用户对应一个缓冲器的情况下:
微控制器10例如可以采用下述任一种方式,从多个用户分别对应的缓冲器中读取命令:
(a1):在不同的时间片分别从不同的缓冲器中读取所述命令。
此处,时间片具有预设的时长,例如为将缓冲器中的至少一个命令读取出所需的时间。
微控制器10依次将多个时间片分别作为当前时间片,并在每个时间片执行监听过程,直至当前时间片结束,切换至下一时间片。其中,监听过程包括:在当前时间片监听与当前时间片对应的缓冲器中是否存在命令;响应于当前时间片对应的缓冲器中存在命令的情况下,从当前时间片对应的缓冲器中读取命令。
此时,在当前时间片内,若读取的存放空间内无可读取的命令,微控制器10会一直监听与当前时间片对应的缓冲器中是否被存入了命令,直至当前的时间片结束。
(a2):轮询多个所述用户分别对应的缓冲器,并在轮询到每个用户对应的缓冲器时,从轮询到的所述每个用户对应的缓冲器中读取所述命令。
此处,微控制器10在轮询多个用户分别对应的缓冲器时,针对轮询到缓冲器,若该轮询到的缓冲器中存储有命令,则读取缓冲器中存储的命令;若轮询到的缓冲器当前为空,则继续轮询下一缓冲器。
此处,为了防止某个缓冲器中存储的命令过多,微控制器10在该缓冲器中读取命令时耗费较多时间,影响其他用户的正常处理,可以为轮询设定一最大时长;若轮询到某个缓冲器,从该缓冲器中读取命令的时间长度达到该最大时长,也可以跳转至轮询下一缓冲器。
示例性的,在缓冲器SBUF1以及缓冲器SBUF2中均存在6个存储空间的情况下,若SBUF1中仅在对应地址Loc-1对应的存储空间中存放了命令P1-1,SBUF1中其他存储空间中无可读取的命令,SBUF2中在对应地址Loc-1中存在可读取命令P1-2时,在0时刻对缓冲器RBUF1读取命令的首个入口位置;在第一个时间片结束后,从缓冲器RBUF2读取命令的首个入口位置进行读取。
此时,对于其余的用户VM2、VM3、……、VMm,微控制器10读取命令的过程与微控制器10从用户VM1读取命令的过程相似,在此不再赘述。
B:在不同的用户对应不同的缓冲器,且一个用户对应多个缓冲器的情况下:
微控制器10在每个用户对应的时间片内,轮询每个用户对应的多个缓冲器,并从当前轮询的缓冲器中读取命令。
微处理器10可以按照与上述A中相同的方式,从缓冲器中读取命令。
在按照与上述A中相同的方式,从缓冲器中读取命令时,可以将所有用户对应的缓冲器进行编号,并按照编号轮询不同的缓冲器或者分时间片在不同的缓冲器中读取命令。
在将所有用户对应的缓冲器进行编号时,例如可对同一用户对应的缓冲器分散编号,例如,用户有3个,分别为VM1、VM2、VM3,VM1、VM2、VM3分别对应3个缓冲器,VM1对应的3个缓冲器的换号分别为1、4、7;VM2对应的3个缓冲器的换号分别为2、5、8;VM3对应的3个缓冲器的换号分别为3、6、9;这样,保证了每个用户的指令都能够至少一部分被及时执行。或者,也可以将同一用户对应的多个缓冲器连续编号,例如VM1对应的3个缓冲器的换号分别为1、2、3,减少微控制器10进行上下文切换需要的开销。
具体的方式可以根据实际需要确定。
下面以VM1对应RBUF1以及RBUF2的情况为例,对微控制器10读取命令的过程加以详细说明。
在具体实施中,微控制器10在从每个用户对应的缓冲器RBUF1中读取命令时,例如可以基于所述缓冲器RBUF1中与所述每个命令流对应的存储入口,读取与所述每个命令流对应的命令。
其中,针对多个缓冲器中的RBUF1和RBUF2,在设定时间片为2T时,在第一个时间片内,仅能完成对缓冲器RBUF1中的两个命令的读取,在下一时间片时,例如可以不再对缓冲器RBUF1进行命令读取,而是执行缓冲器的上下文切换,转而对下一个缓冲器RBUF2进行命令读取,并从RBUF2中读取两个命令。
C:在用户有多个,不同用户对应相同的缓冲器的情况下,微控制器10在不同的时间片分别访问多个用户在相同的缓冲器分别对应的存储位置,并读取命令;或者,轮询多个用户在相同的缓冲器分别对应的存储位置,并读取命令。
示例性的,对于用户VM1、VM2、以及VM3,例如可以对应相同的缓冲器RBUF1;对于用户VM4以及VM5,例如可以对应相同的缓冲器RBUF2。此时,同一缓冲器对应的用户的个数可以相同,也可以不同,具体的对应关系可以根据实际情况确定,在此不做限定。
下面以用户VM1、VM2、以及VM3对应相同的缓冲器RBUF1为例进行说明:微控制器10在读取命令时,例如可以在不同的时间片内,分别访问VM1、VM2、以及VM3在缓冲器上分别对应的存储位置。例如在第一个时间片内,访问VM1在缓冲器上对应的存储位置,并将VM1对应的命令向VM1对应的命令分发器20发送;在第二个时间片内访问VM2在缓冲器上对应的存储位置,并将VM2对应的命令向VM2对应的命令分发器20发送;在第三个时间片内访问VM3在缓冲器上对应的存储位置,并将VM3对应的命令向VM3对应的命令分发器20发送。
另外,微控制器10在读取命令时,也可以在同一时间片内,访问VM1、VM2、以及VM3在缓冲器上分别对应的存储位置,并在该同一时间片内,读取到VM1、VM2、以及VM3分别对应的命令,然后将VM1对应的命令向VM1对应的命令分发器20发送;将VM2对应的命令向VM2对应的命令分发器20发送;VM3对应的命令向VM3对应的命令分发器20发送。
或者,微控制器10可以轮询缓冲器上不同的entry,并在轮询到某个entry的时候,如果该entry对应的存储位置存放有命令,则读取该命令,并下发至与该entry对应的命令分发器20。
此外,由于微控制器10在从缓冲器中读取命令时,还可能存在新的命令存入缓冲器的情况,也即对缓冲器中的命令进行实时更新,因此微控制器10会不间断的从缓冲器中读取新的命令;具体地对缓冲器中的命令进行实时更新的方法在此不再赘述。
微控制器10在从每个用户对应的缓冲器中读取命令后,能够将命令存储至每个用户对应的命令队列中。
此处,例如可以预先为用户设置至少一个命令队列,不同的命令队列中命令的最大存储量可以相同,也可以不同,在此不做限定;一般地,不同的命令队列用于存放用户中不同stream中的命令。此时,微控制器10可读取出对应的缓冲器中的命令,并将命令存储至每个用户对应的命令队列(Stream Queue)中。此时,命令队列例如可以包括s个,分别表示为SQ1、SQ2、……、SQs。
例如,若用户中的stream有3个,则将3个stream中的命令分别存储至SQ1、SQ2、和SQ3中。此处,在命令队列为硬件队列的情况下,可以根据GPU中命令队列的数量、以及在GPU中部署的用户的数量,为用户分配命令队列;在命令队列为软件队列的情况下,可以根据用户中stream的数量,动态为用户创建命令队列。
下面对为用户确定命令队列的过程加以详细说明:
在为每个用户确定对应的命令队列时,例如可以采用下述(b1)、或(b2)所述的方法:
(b1):按照用户对应的缓冲器的数量为用户确定命令队列。在该种情况下,不同用户对应的命令分发器20不同;不同命令分发器20用于从对应用户专用的命令队列中读取命令。在该种情况下,利用空分复用的方式复用GPU。
在这种情况下,在一个用户对应多个缓冲器的情况下,在为用户确定命令队列时,例如可以为该用户对应的不同缓冲器分别确定与不同缓冲器对应的命令队列。例如用户VM1对应有缓冲器1、缓冲器2,且每个缓冲器能够保存VM1中3个命令流的命令,可以为缓冲器1确定的命令包括队列SQ1、SQ2、SQ3;为缓冲器2确定命令队列包括队列SQ4、SQ5、SQ6。
示例性的,在RBUF1中存储4个命令,RBUF2中存储2个命令的情况下,当RBUF1对应的命令队列SQ1中存储4个命令,例如可以包括P1-1、P1-2、P1-3、以及P1-4;RBUF2对应的命令队列SQ4中存储2个命令,例如可以包括P2-1以及P2-2时,参见图2所示,为本公开实施例提供的一种命令队列的示意图;其中,21表示命令队列SQ1,22表示SQ4,23指示的空间为命令队列中存储命令的空间。
(b2):为M个用户中的N个目标用户分配共用的相同命令队列。其中,M为大于1的整数;N为小于或者等于M,且大于1的整数。在该种情况下,N个目标用户在不同的时间片使用同一命令分发器20,以及同一组命令队列。此时,在N小于M的情况下,利用时分复用、和空分复用并存的方式复用GPU;在N等于M的情况下,仅利用时分复用的方式复用GPU。
在这种情况下,N个用户在共用相同队列时,命令处理装置采用时分复用的方法对命令进行处理,也即在不同的时间片内对与时间片对应的命令进行处理。微控制器10在不同时间片分别从N个目标用户对应的缓冲器中读取命令,并将命令存储至N个目标用户共用的命令队列中。
示例性的,在N个目标用户包括虚拟机VM1、VM2、VM3的情况下,例如可以按照VM1、VM2、以及VM3的顺序周期性的分配时间片。则在第一个时间片内,微控制器10将虚拟机VM1对应的命令从缓冲器中读取出并存放至N个目标用户共用的命令队列中,此时N个目标用户共用的命令队列中仅包括虚拟机VM1对应的命令;在第一个时间片结束,且N个目标用户共用的命令队列中的任务执行完毕后,在第二个时间片内,微控制器10将虚拟机VM2对应的命令从缓冲器中读取出并存放至N个目标用户共用的命令队列中,此时N个目标用户共用的命令队列中仅包括虚拟机VM2对应的命令;在第二个时间片结束且N个目标用户共用的命令队列中的任务执行完毕后,在第三个时间片内,微控制器10将虚拟机VM3对应的命令从缓冲器中读取出并存放至N个目标用户共用的命令队列中,此时N个目标用户共用的命令队列中仅包括虚拟机VM3对应的命令;在第三个时间片结束且命令队列中的任务执行完毕后,在第四个时间片内,时间片对应的用户重新变为虚拟机VM1,微控制器10将虚拟机VM1对应的命令从缓冲器中读取出并存放至N个目标用户共用的命令队列中,此时N个目标用户共用的命令队列中仅包括虚拟机VM1对应的命令。
微控制器10在将命令存储至每个目标用户对应的N个目标用户共用的命令队列中后,N个目标用户共用的命令分发器20即可以从对应的N个目标用户共用的命令队列中读取命令,并将命令分发至与N个目标用户共用的命令分发器20对应的运算单元30。
在具体实施中,命令分发器20例如可以采用下述(c1)或(c2)两种方式从命令队列中读取命令并下发至与命令分发器20对应的运算单元30:
(c1):与上述b1对应,为每个用户分配对应的命令分发器20,且不同用户对应的命令分发器20不同。
其中,命令分发器20在从命令对队列中提取出用户待处理的命令后,直接分发至用户对应的运算单元30。
示例性的,在N个用户包括虚拟机VM1、VM2、VM3的情况下,可以为虚拟机VM1分配命令分发器D1,为虚拟机VM2分配命令分发器D2,为虚拟机VM3分配命令分发器D3。由于三个虚拟机均有各自对应的命令队列以及命令分发器20,因此实现了不同虚拟机对应的命令队列以及命令分发器20整体的分离。
以虚拟机VM1为例,对应的命令队列例如为SQ1,对应的命令分发器20为D1。在命令队列中存在待处理的命令的情况下,命令分发器D1即可以将待处理的命令分发至虚拟机VM1对应的运算单元30中进行处理。同样的,由于虚拟机VM2以及虚拟机VM3分别对应了各自的命令队列以及命令分发器20,因此在虚拟机VM2以及虚拟机VM3分别对应的命令队列中存在待处理的命令时,虚拟机VM2以及虚拟机VM3分别对应的命令分发器20可以直接将对应的命令队列中待处理的命令分发至对应的运算单元30中处理。
(c2):与上述b2对应,为N个目标用户分配共用的N个目标用户共用的命令分发器20。
其中,N个目标用户共用的命令分发器20用于在不同时间片,从N个目标用户共用的命令队列中读取不同目标用户分别对应的命令,并将不同目标用户分别对应的命令向N个目标用户共用的命令分发器20对应的运算单元30发送。
示例性的,在N个目标用户包括虚拟机VM1、VM2、VM3的情况下,可以为虚拟机VM1、VM2、VM3共同分配同一个命令分发器20D4。根据上述(b2)可知,目标用户共用相同的N个目标用户共用的命令队列,因此命令分发器20D4只需要从此N个目标用户共用的命令队列中不断的读取命令并下发至运算单元30中即可。
在N个目标用户共用的命令分发器20将命令分发至与N个目标用户共用的命令分发器20对应的运算单元30后,运算单元30可以执行对应的N个目标用户共用的命令分发器20分发的命令。运算单元30中例如可以与用户对应的表示为ALU1、ALU2、……、ALUm,每个运算单元30例如可以包括多个对命令进行处理的最小运算单位,如运行在运算单元30中的32个线程,用于执行对应的N个目标用户共用的命令分发器20分发的命令。运算单元30中的线程例如可以包括u(u为正整数)个,以运算单元ALU1为例,ALU1中的线程例如可以包括a(a为正整数)个,分别表示为A1-1、A1-2、……、A1-a。
其中,运算单元30在执行命令分发器20和/或N个目标用户共用的命令分发器20分发的命令时,例如可以采用下述(d1)以及(d2)两种方法:
(d1):确定每个用户分别对应的运算单元30,也即每个用户对应有单独的运算单元30。利用这种方法,可以进一步的实现多个用户之间数据传输链路之间的隔离,使得不同用户之间在对命令处理时互不干扰,并且有效的阻止了在多个用户中一个用户的数据传输链路受到攻击时,对其他用户的工作造成的安全性威胁。
(d2):目标用户共用运算单元30。
在这种情况下,由于不同目标用户对应的命令是在不同的时间片内被处理的,且不同目标用户共用同一个N个目标用户共用的命令分发器20,因此不同的目标用户在对命令进行处理时可以按照对应时间片的顺序依次进行,仅需要确定共同的一个运算单元30即可。利用这种方法可以减少为不同用户确定的运算单元30的数量,可以有效的减少对计算资源的浪费,使计算资源更集中,从而提高命令处理的效率。
运算单元30在执行命令分发器20和/或N个目标用户共用的命令分发器20分发的命令后,命令处理装置即可完成对待处理的命令的处理。
参见图3所示,本公开实施例还提供了一种具体的命令处理装置的示意图。在该实例中,用户1、用户2、用户3分别对应不同的环形缓冲器31,其中,环形缓冲器311为用户1对应的环形缓冲器RBUF1;环形缓冲器312为用户2对应的环形缓冲器RBUF2,RBUF1和RBUF2已经存储了host下发的用户1和用户2的命令;……;环形缓冲器313为用户3对应的一个环形缓冲器RBUFM;微控制器32将命令存储至多个命令队列33中;其中,331中包括了用户1和用户2在不同的时间片共用命令队列SQ1和SQ2、以及命令分发器D1;命令分发器D1对应有运算单元ALU1;例如,在属于用户1的时间片内,SQ1和SQ2分别用于存储RBUF1中不同入口对应的命令;在属于用户2的时间片内,SQ1和SQ2分别用于存储RBUF2中不同入口对应的命令。332为用户3对应的命令队列SQs;34为用户1和用户2对应的N个目标用户共用的命令分发器以及运算单元,其中341为N个目标用户共用的命令分发器D1,342为用户1对应的运算单元ALU1,343为运算单元包括的a个线程,分别为A1-1~A1-a;35为用户3对应的命令分发器以及运算单元,其中351表示命令分发器Dm,352表示用户3对应的运算的单元ALUm。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与命令处理装置对应的命令处理方法,由于本公开实施例中的装置解决问题的原理与本公开实施例上述命令处理装置相似,因此方法的实施可以参见装置的实施,重复之处不再赘述。
参照图4所示,为本公开实施例提供的一种命令处理方法的流程图,包括:
S401:微控制器从至少一个用户对应的缓冲器中读取命令,并将命令存储至至少一个用户对应的命令队列中;
S402:命令分发器从对应的命令队列中读取命令,并将命令分发至与命令分发器对应的运算单元;
S403:运算单元执行对应的命令分发器分发的命令。
一种可选的实施方式中,针对所述用户有多个,且不同的用户对应不同的缓冲器的情况,所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器在不同的时间片分别从不同的缓冲器中读取所述命令。
一种可选的实施方式中,所述微控制器在不同的时间片分别从不同的缓冲器中读取所述命令,包括:
所述微控制器依次将多个所述时间片分别作为当前时间片,并在每个时间片执行下述监听过程,直至所述当前时间片结束,切换至下一时间片;
所述监听过程包括:在当前时间片监听与所述当前时间片对应的缓冲器中是否存在命令;响应于所述当前时间片对应的缓冲器中存在所述命令,从所述当前时间片对应的缓冲器中读取所述命令。
一种可选的实施方式中,针对所述用户有多个,且不同的用户对应不同的缓冲器的情况,所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器轮询多个所述用户分别对应的缓冲器,并响应于当前轮询的用户对应的缓冲器非空,从当前轮询的缓冲器中读取命令。
一种可选的实施方式中,针对不同用户对应不同缓冲器,且一个用户对应多个缓冲器的情况,所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器在每个所述用户对应的时间片内,轮询所述每个用户对应的多个缓冲器,并从当前轮询的缓冲器中读取命令。
一种可选的实施方式中,针对所述用户有多个,且不同的用户对应相同的缓冲器的情况,所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器从所述多个用户对应的相同缓冲器中读取所述命令。
一种可选的实施方式中,针对所述用户有多个,且不同的用户对应相同的缓冲器的情况,所述微控制器从所述多个用户对应的相同缓冲器中读取所述命令,包括:
所述微控制器在不同的时间片,分别访问多个用户在所述相同的缓冲器分别对应的存储位置,并读取命令;或者
轮询所述多个用户在所述相同的缓冲器分别对应的存储位置,并读取命令。
一种可选的实施方式中,所述缓冲器包括:环形缓冲器;所述环形缓冲器包括与同一用户中的至少一个命令流分别对应的存储入口;
所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器基于所述环形缓冲器中与每个命令流对应的存储入口,读取与每个命令流对应的命令。
一种可选的实施方式中,所述微控制器将命令存储至所述至少一个用户对应的命令队列中,包括:
所述微控制器将与同一用户中的至少一个命令流对应的命令,存储至与所述至少一个命令流对应的命令队列中。
一种可选的实施方式中,在一个用户对应多个缓冲器的情况下,所述微控制器将命令存储至所述至少一个用户对应的命令队列中,包括:
所述微控制器在为所述用户确定命令队列时,为该用户对应的不同缓冲器分别确定与不同缓冲器对应的命令队列。
一种可选的实施方式中,所述用户有M个,M个所述用户中的N个目标用户共用相同的命令队列、以及同一命令分发器;其中,M为大于1的整数;N为小于或者等于M,且大于1的整数;所述微控制器从所述至少一个用户对应的缓冲器中读取命令,并将命令存储至所述至少一个用户对应的命令队列中,包括:
所述微控制器在不同时间片分别从所述N个目标用户对应的缓冲器中读取命令,并将命令存储至所述N个目标用户共用的命令队列中。
一种可选的实施方式中,所述命令分发器从对应的命令队列中读取所述命令,并将所述命令分发至与所述命令分发器对应的运算单元,包括:
所述命令分发器在所述不同时间片,从所述N个目标用户共用的命令队列中读取不同目标用户分别对应的命令,并将不同目标用户分别对应的命令向所述命令分发器对应的运算单元发送;
所述运算单元执行对应的命令分发器分发的命令,包括:
所述命令分发器对应的运算单元在所述不同时间片,执行所述N个目标用户分别对应的命令。
本公开实施例还提供一种电子设备,包括:主机、缓冲器,以及命令处理装置;
所述主机用于下发待执行命令,并存储于至少一个用户分别对应的缓冲器;
所述命令处理装置用于执行本公开任一命令处理方法实施例提供的方法。
本公开实施例提供的命令处理装置可以包括芯片、AI芯片等。本公开实施例提供的电子设备可以包括手机等智能终端,或者也可以是具有摄像头并可以进行图像处理的其他设备、服务器等,这里并不限制。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被微控制器、命令分发器、运算单元执行本公开任一命令处理方法实施例提供的方法。
关于命令处理方法的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的命令处理方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一个计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (26)
1.命令处理装置,其特征在于,包括:微控制器、至少一个用户对应的命令分发器、以及与各所述命令分发器对应的运算单元;
其中,所述微控制器,用于从所述至少一个用户对应的缓冲器中读取命令,并将所述命令存储至所述至少一个用户对应的命令队列中;
所述命令分发器,用于从对应的命令队列中读取所述命令,并将所述命令分发至与所述命令分发器对应的运算单元;
所述运算单元,用于执行对应的命令分发器分发的命令。
2.根据权利要求1所述的命令处理装置,其特征在于,针对所述用户有多个,且不同的用户对应不同的缓冲器的情况,
所述微控制器用于在不同的时间片分别从不同的缓冲器中读取所述命令。
3.根据权利要求2所述的命令处理装置,其特征在于,所述微控制器用于:
依次将多个所述时间片分别作为当前时间片,并在所述当前时间片执行下述监听过程,直至所述当前时间片结束,切换至下一时间片;
所述监听过程包括:
在所述当前时间片监听与所述当前时间片对应的缓冲器中是否存在命令;
响应于所述当前时间片对应的缓冲器中存在命令,从所述当前时间片对应的缓冲器中读取所述命令。
4.根据权利要求1所述的命令处理装置,其特征在于,针对所述用户有多个,且不同的用户对应不同的缓冲器的情况,
所述微控制器用于轮询多个所述用户分别对应的缓冲器,并响应于当前轮询的用户对应的缓冲器非空,从当前轮询的缓冲器中读取命令。
5.根据权利要求1所述的命令处理装置,其特征在于,针对不同用户对应不同缓冲器,且一个用户对应多个缓冲器的情况,
所述微控制器用于在每个所述用户对应的时间片内,轮询每个所述用户对应的多个缓冲器,并从当前轮询的缓冲器中读取命令。
6.根据权利要求1-5任一项所述的命令处理装置,其特征在于,针对所述用户有多个,且不同的用户对应相同的缓冲器的情况,所述微控制器用于从所述多个用户对应的相同缓冲器中读取所述命令。
7.根据权利要求6所述的命令处理装置,其特征在于,针对所述用户有多个,且不同的用户对应相同的缓冲器的情况,所述微控制器用于在不同的时间片,分别访问多个用户在所述相同的缓冲器分别对应的存储位置,并读取命令;或者
轮询所述多个用户在所述相同的缓冲器分别对应的存储位置,并读取命令。
8.根据权利要求1-7任一项所述的命令处理装置,其特征在于,所述缓冲器包括:环形缓冲器;所述环形缓冲器包括与同一用户中的至少一个命令流分别对应的存储入口;
所述微控制器,用于基于所述环形缓冲器中与每个命令流对应的存储入口,读取与每个命令流对应的命令。
9.根据权利要求1-8任一项所述的命令处理装置,其特征在于,所述微控制器用于将与同一用户中的至少一个命令流对应的命令,存储至与所述至少一个命令流对应的命令队列中。
10.根据权利要求9所述的命令处理装置,其特征在于,在一个用户对应多个缓冲器的情况下,所述微控制器在为所述用户确定命令队列时,为该用户对应的不同缓冲器分别确定与不同缓冲器对应的命令队列。
11.根据权利要求1-10任一项所述的命令处理装置,其特征在于,所述用户有M个,M个所述用户中的N个目标用户共用相同的命令队列、以及同一命令分发器;其中,M为大于1的整数;N为小于或者等于M,且大于1的整数;
所述微控制器,用于在不同时间片分别从所述N个目标用户对应的缓冲器中读取命令,并将命令存储至所述N个目标用户共用的命令队列中。
12.根据权利要求11所述的命令处理装置,其特征在于,所述命令分发器,用于在所述不同时间片,从所述N个目标用户共用的命令队列中读取不同目标用户分别对应的命令,并将不同目标用户分别对应的命令向所述命令分发器对应的运算单元发送;
所述命令分发器对应的运算单元,用于在所述不同时间片,执行所述N个目标用户分别对应的命令。
13.一种命令处理方法,其特征在于,应用于命令处理装置,所述命令处理装置包括:微控制器、至少一个用户对应的命令分发器、以及与每个所述命令分发器对应的运算单元;所述命令处理方法包括:
所述微控制器从所述至少一个用户对应的缓冲器中读取命令,并将命令存储至所述至少一个用户对应的命令队列中;
所述命令分发器从对应的命令队列中读取所述命令,并将所述命令分发至与所述命令分发器对应的运算单元;
所述运算单元执行对应的命令分发器分发的命令。
14.根据权利要求13所述的命令处理方法,其特征在于,针对所述用户有多个,且不同的用户对应不同的缓冲器的情况,所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器在不同的时间片分别从不同的缓冲器中读取所述命令。
15.根据权利要求14所述的命令处理方法,其特征在于,所述微控制器在不同的时间片分别从不同的缓冲器中读取所述命令,包括:
所述微控制器依次将多个所述时间片分别作为当前时间片,并在每个时间片执行下述监听过程,直至所述当前时间片结束,切换至下一时间片;
所述监听过程包括:在当前时间片监听与所述当前时间片对应的缓冲器中是否存在命令;响应于所述当前时间片对应的缓冲器中存在所述命令,从所述当前时间片对应的缓冲器中读取所述命令。
16.根据权利要求13所述的命令处理方法,其特征在于,针对所述用户有多个,且不同的用户对应不同的缓冲器的情况,所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器轮询多个所述用户分别对应的缓冲器,并响应于当前轮询的用户对应的缓冲器非空,从当前轮询的缓冲器中读取命令。
17.根据权利要求13所述的命令处理方法,其特征在于,针对不同用户对应不同缓冲器,且一个用户对应多个缓冲器的情况,所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器在每个所述用户对应的时间片内,轮询所述每个用户对应的多个缓冲器,并从当前轮询的缓冲器中读取命令。
18.根据权利要求13-17任一项所述的命令处理方法,其特征在于,针对所述用户有多个,且不同的用户对应相同的缓冲器的情况,所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器从所述多个用户对应的相同缓冲器中读取所述命令。
19.根据权利要求18所述的命令处理方法,其特征在于,针对所述用户有多个,且不同的用户对应相同的缓冲器的情况,所述微控制器从所述多个用户对应的相同缓冲器中读取所述命令,包括:
所述微控制器在不同的时间片,分别访问多个用户在所述相同的缓冲器分别对应的存储位置,并读取命令;或者
轮询所述多个用户在所述相同的缓冲器分别对应的存储位置,并读取命令。
20.根据权利要求13-19任一项所述的命令处理方法,其特征在于,所述缓冲器包括:环形缓冲器;所述环形缓冲器包括与同一用户中的至少一个命令流分别对应的存储入口;
所述微控制器从所述至少一个用户对应的缓冲器中读取命令,包括:
所述微控制器基于所述环形缓冲器中与每个命令流对应的存储入口,读取与每个命令流对应的命令。
21.根据权利要求13-20任一项所述的命令处理方法,其特征在于,所述微控制器将命令存储至所述至少一个用户对应的命令队列中,包括:
所述微控制器将与同一用户中的至少一个命令流对应的命令,存储至与所述至少一个命令流对应的命令队列中。
22.根据权利要求21所述的命令处理方法,其特征在于,在一个用户对应多个缓冲器的情况下,所述微控制器将命令存储至所述至少一个用户对应的命令队列中,包括:
所述微控制器在为所述用户确定命令队列时,为该用户对应的不同缓冲器分别确定与不同缓冲器对应的命令队列。
23.根据权利要求13-22任一项所述的命令处理方法,其特征在于,所述用户有M个,M个所述用户中的N个目标用户共用相同的命令队列、以及同一命令分发器;其中,M为大于1的整数;N为小于或者等于M,且大于1的整数;所述微控制器从所述至少一个用户对应的缓冲器中读取命令,并将命令存储至所述至少一个用户对应的命令队列中,包括:
所述微控制器在不同时间片分别从所述N个目标用户对应的缓冲器中读取命令,并将命令存储至所述N个目标用户共用的命令队列中。
24.根据权利要求23所述的命令处理方法,其特征在于,所述命令分发器从对应的命令队列中读取所述命令,并将所述命令分发至与所述命令分发器对应的运算单元,包括:
所述命令分发器在所述不同时间片,从所述N个目标用户共用的命令队列中读取不同目标用户分别对应的命令,并将不同目标用户分别对应的命令向所述命令分发器对应的运算单元发送;
所述运算单元执行对应的命令分发器分发的命令,包括:
所述命令分发器对应的运算单元在所述不同时间片,执行所述N个目标用户分别对应的命令。
25.一种电子设备,其特征在于,包括:主机、缓冲器,以及命令处理装置;
所述主机用于下发待执行命令,并存储于至少一个用户分别对应的缓冲器;
所述命令处理装置用于执行权利要求13至24中任一项所述的命令处理方法。
26.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被微控制器、命令分发器、运算单元执行时实现权利要求13至24中任一项所述的命令处理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110127623.5A CN114816652A (zh) | 2021-01-29 | 2021-01-29 | 命令处理装置以及方法、电子设备、以及计算机存储介质 |
PCT/CN2021/108396 WO2022160626A1 (zh) | 2021-01-29 | 2021-07-26 | 命令处理装置以及方法、电子设备、以及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110127623.5A CN114816652A (zh) | 2021-01-29 | 2021-01-29 | 命令处理装置以及方法、电子设备、以及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114816652A true CN114816652A (zh) | 2022-07-29 |
Family
ID=82525691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110127623.5A Pending CN114816652A (zh) | 2021-01-29 | 2021-01-29 | 命令处理装置以及方法、电子设备、以及计算机存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114816652A (zh) |
WO (1) | WO2022160626A1 (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100345132C (zh) * | 2003-07-28 | 2007-10-24 | 华为技术有限公司 | 一种并行处理的方法及*** |
JP2008123045A (ja) * | 2006-11-08 | 2008-05-29 | Matsushita Electric Ind Co Ltd | プロセッサ |
US9176794B2 (en) * | 2010-12-13 | 2015-11-03 | Advanced Micro Devices, Inc. | Graphics compute process scheduling |
US20120229481A1 (en) * | 2010-12-13 | 2012-09-13 | Ati Technologies Ulc | Accessibility of graphics processing compute resources |
US10719237B2 (en) * | 2016-01-11 | 2020-07-21 | Micron Technology, Inc. | Apparatuses and methods for concurrently accessing multiple partitions of a non-volatile memory |
US10387992B2 (en) * | 2017-04-07 | 2019-08-20 | Intel Corporation | Apparatus and method for dynamic provisioning, quality of service, and prioritization in a graphics processor |
CN107943686A (zh) * | 2017-10-30 | 2018-04-20 | 北京奇虎科技有限公司 | 一种测试调度方法、装置、服务器及存储介质 |
CN110083388B (zh) * | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 用于调度的处理***及其访存方法 |
CN111708639A (zh) * | 2020-06-22 | 2020-09-25 | 中国科学技术大学 | 任务调度***及方法、存储介质及电子设备 |
CN113138801B (zh) * | 2021-04-29 | 2023-08-04 | 上海阵量智能科技有限公司 | 命令分发装置、方法、芯片、计算机设备及存储介质 |
-
2021
- 2021-01-29 CN CN202110127623.5A patent/CN114816652A/zh active Pending
- 2021-07-26 WO PCT/CN2021/108396 patent/WO2022160626A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022160626A1 (zh) | 2022-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Didona et al. | Size-aware sharding for improving tail latencies in in-memory key-value stores | |
EP2892181B1 (en) | Method, device and physical host for managing physical network card | |
CN102609298B (zh) | 基于硬件队列扩展的网卡虚拟化***及其方法 | |
CN102750178B (zh) | 通信设备硬件资源的虚拟化管理方法及相关装置 | |
EP3253027B1 (en) | Resource allocation method and apparatus for virtual machines | |
CN102521047B (zh) | 实现多核处理器间中断负载均衡的方法 | |
CN105242957A (zh) | 一种云计算***调配gpu资源到虚拟机的方法及*** | |
Wu et al. | Container lifecycle‐aware scheduling for serverless computing | |
CN104598298A (zh) | 基于虚拟机当前工作性质以及任务负载的虚拟机调度算法 | |
CN102497434A (zh) | 内核态虚拟网络设备的建立方法、及其包发送和接收方法 | |
JP2020537197A (ja) | コンテナに基づくgpu仮想化方法及びシステム | |
JP2022516486A (ja) | リソース管理方法と装置、電子デバイス、及び記録媒体 | |
CN111176829B (zh) | 虚拟化处理***中的物理功能和虚拟功能的灵活资源分配 | |
CN103425534A (zh) | 在许多应用之间共享的图形处理单元 | |
CN106919442A (zh) | 多gpu调度装置和分布式计算***以及多gpu调度方法 | |
KR102193747B1 (ko) | 매니코어 시스템의 하이퍼바이저에서 스케줄링 하는 방법 | |
Tan et al. | A virtual multi-channel GPU fair scheduling method for virtual machines | |
US11521042B2 (en) | System and method to dynamically and automatically sharing resources of coprocessor AI accelerators | |
CN110532060A (zh) | 一种混合网络环境数据采集方法及*** | |
CN114816777A (zh) | 命令处理装置、方法、电子设备以及计算机可读存储介质 | |
CN114816652A (zh) | 命令处理装置以及方法、电子设备、以及计算机存储介质 | |
US8881163B2 (en) | Kernel processor grouping | |
CN111158911A (zh) | 一种处理器配置方法、装置、处理器及网络设备 | |
KR20140125893A (ko) | 가상화된 매니코어 서버의 작업분배 시스템과 그 방법 및 기록매체 | |
CN111198747B (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 |