掌桥专利:专业的专利平台
掌桥专利
首页

协处理器和协处理器的操作方法

文献发布时间:2023-06-19 18:37:28


协处理器和协处理器的操作方法

技术领域

本公开的实施例涉及协处理器和协处理器的操作方法。

背景技术

随着技术的发展,对电子设备的要求越来越高。例如,需要越来越强的电子设备的计算能力来处理越来越大的数据量或者提高电子设备的计算速度等。在这种情况下,仅仅依靠传统的中央处理器(CPU)计算已经不能满足上述要求,从而需要增加协处理器(coprocessor)来协助CPU处理任务。

并行计算(Parallel Computing)同时使用多种计算资源解决计算问题,是提高计算机系统计算速度和数据处理能力的一种有效手段。并行计算过程中,将被求解的问题分解成若干个部分,各部分均由一个独立的处理单元来并行计算完成。GPGPU(GeneralPurpose Graph Processing Unit,通用图形处理单元)专为并行处理而设计,可用于高性能的并行处理,可以同时计算同一个任务的不同部分,解决单个处理单元无法解决的大型问题。

发明内容

本公开的至少一实施例提供了一种协处理器的操作方法,该操作方法包括:由协处理器的任务获取控制单元接收来自主处理器的多项任务的执行命令;由任务获取控制单元获取多项任务并将多项任务发送给协处理器的任务处理控制单元;以及由任务处理控制单元控制多项任务的执行。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,还包括:由任务获取控制单元将多项任务中的每个任务的标识信息映射到协处理器的队列单元中的相应的队列中,以基于相应的队列中的每个任务的标识信息获取每个任务,其中队列单元被分组为一个或多个管道,并且每个管道包括队列单元中的多个队列。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,还包括:由任务获取控制单元初始化一个或多个管道和每个管道中包括的队列。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,由任务获取控制单元初始化一个或多个管道和每个管道中的队列包括:由任务获取控制单元设置一个或多个管道和每个管道中的队列的资源和属性。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,还包括:由任务获取控制单元针对每个管道中的多个队列,检测多个队列中的一个队列是否需要处理;以及响应于检测到多个队列中的一个队列需要处理,处理一个队列,直到多个队列全部处理完成,其中,在一个队列包括的多项任务中的至少一个任务的标识信息指示至少一个任务需要执行的情况下,检测到一个队列需要处理,其中,处理一个队列包括:由任务获取控制单元获取一个队列中的至少一个任务并将一个队列中的至少一个任务发送给任务处理控制单元;以及由任务处理控制单元控制一个队列中的至少一个任务的执行。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,检测多个队列中的一个队列是否需要处理包括:以遍历的方式检测多个队列中的一个队列是否需要处理。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,还包括:响应于检测到多个队列中的全部队列不需要处理,或者响应于多个队列中的全部队列处理完成,使任务获取控制单元进入空闲状态。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,由任务获取控制单元获取多项任务并将多项任务发送给任务处理控制单元,包括:针对每个管道中的多个队列中的每个队列,由任务获取控制单元基于任务获取控制单元和任务处理控制单元之间的交互,获取每个队列中需要执行的至少一个任务并将至少一个任务发送给任务处理控制单元。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,任务获取控制单元和任务处理控制单元之间的交互包括:由任务获取控制单元发送第一消息给任务处理控制单元,其中,第一消息包括指示至少一个任务所在的队列需要处理的信息;响应于第一消息,由任务处理控制单元发送第二消息给任务获取控制单元,其中,第二消息包括指示为至少一个任务所在的队列的处理做好准备的信息;以及响应于第二消息,由任务获取控制单元获取至少一个任务并将至少一个任务发送给任务处理控制单元。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,任务获取控制单元和任务处理控制单元之间的交互,还包括:由任务处理控制单元发送第三消息给任务获取控制单元,其中,第三消息包括指示至少一个任务全部执行完成的信息;响应于第三消息,由任务获取控制单元发送第四消息给任务处理控制单元,其中,第四消息包括指示任务处理控制单元清理与已经执行完成的任务相关联的硬件资源的信息;以及响应于第四消息,由任务处理控制单元发送第五消息给任务获取控制单元,其中,第五消息包括指示已经执行清理的信息。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,由任务处理控制单元控制多项任务的处理,包括:针对每个管道中的多个队列中的每个队列,由任务处理控制单元控制每个队列中需要执行的至少一个任务以流水线的方式的处理。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,由任务处理控制单元控制至少一个任务以流水线的方式的处理包括:由协处理器的分配任务单元对至少一个任务中的每个任务进行分配;由协处理器的分配硬件资源单元为所分配的每个任务分配硬件资源;以及由协处理器的处理任务单元为分配硬件资源的每个任务进行运算处理。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,还包括,由任务处理控制单元获取分配任务单元、分配硬件资源单元以及处理任务单元的状态信息,并经由任务处理控制单元与主处理器的直连将状态信息反馈给主处理器。

例如,根据本公开的至少一实施例提供的一种协处理器的操作方法,由任务获取控制单元获取多项任务包括:由任务获取控制单元通过协处理器的缓存从耦合到主处理器的存储器中获取多项任务。

本公开的至少一实施例提供了一种协处理器,该协处理器包括:任务获取控制单元,被配置为接收来自主处理器的多项任务的执行命令,并且获取多项任务并将多项任务发送给协处理器的任务处理控制单元;以及任务处理控制单元,被配置为控制多项任务的执行。

本公开的至少一实施例提供了一种处理器系统,包括:主处理器以及执行如上的实施例的协处理器。

本公开的至少一实施例提供了一种电子装置,包括:处理器;以及存储器,包括一个或多个计算机程序模块;其中,一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于执行如上所述的实施例的方法的指令。

本公开的至少一实施例提供了一种非瞬时可读存储介质,其上存储有指令,其中,指令在被处理器读取时,使得处理器执行如上所述的实施例的方法。

如此,本公开的至少一实施例提供的协处理器的操作方法、协处理器、电子装置及存储介质可以使得任务的获取与执行分离进行,简化了主处理器与协处理器之间的通信机制,提高了协处理器在执行多任务方面的效率。

附图说明

为了更清楚地说明本公开的实施例的技术方案,下面将对本公开的实施例的附图作简单地描述。明显地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1为一种通用图形处理器(GPGPU)的一种结构示意图;

图2A示出了根据本公开的至少一实施例的协处理器的示例应用场景的示意图;

图2B示出了根据本公开的至少一实施例的协处理器中的管道和队列的结构的示意图;

图3示出了根据本公开的至少一实施例的检测需要处理的队列的流程图;

图4示出了根据本公开的至少一实施例的通信机制的流程图;

图5示出了根据本公开的至少一实施例的执行任务的流程图;

图6示出了根据本公开的至少一实施例的包含N个任务的队列的处理过程的示意图;

图7示出了根据本公开的至少一实施例的协处理器的操作方法的流程图;

图8示出了根据本公开的至少一实施例的协处理器的示意图;

图9示出了根据本公开的至少一实施例的处理器系统的示意图;

图10示出了根据本公开的至少一实施例的电子装置的示意图;

图11示出了根据本公开至少一实施例的非瞬时可读存储介质的示意图。

具体实施方式

现在将详细参考本公开的具体实施例,在附图中例示了本公开的示例。尽管将结合具体实施例描述本公开,但将理解,不是想要将本公开限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本公开的精神和范围内包括的变更、修改和等价物。应注意,本文描述的方法操作都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。

为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。

注意,接下来要描述的示例仅是具体的示例,而不作为限制本公开的实施例必须为示出和描述的具体的外形、硬件、连接关系、操作、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本公开的构思来构造本说明书中未提到的更多实施例。

本公开中使用的术语是考虑到关于本公开的功能而在本领域中当前广泛使用的那些通用术语,但是这些术语可以根据本领域普通技术人员的意图、先例或本领域新技术而变化。此外,特定术语可以由申请人选择,并且在这种情况下,其详细含义将在本公开的详细描述中描述。因此,说明书中使用的术语不应理解为简单的名称,而是基于术语的含义和本公开的总体描述。

本公开中使用了流程图来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。

现在参考附图描述这些实施例中的一个或多个,其中相同的附图标记始终用于指代相同的元件。在以下描述中,出于解释的目的,阐述了许多具体细节,以便提供对一个或多个实施例的更彻底的理解。然而,在一种或多种情况下,显然可以在没有这些具体细节的情况下实施一个或多个实施例。此外,应当理解,本文描述的一个或多个附图中描绘的实施例仅用于说明,因此,实施例的架构不限于本文中描绘的系统、设备和/或组件,也不限于本文中描绘的系统、设备和/或组件的任何特定顺序、连接和/或耦合。

随着技术的发展,对电子设备的要求越来越高。例如,需要越来越强的电子设备的计算能力来处理越来越大的数据量或者提高电子设备的计算速度等。在这种情况下,仅仅依靠传统的中央处理器(CPU)计算已经不能满足上述要求,从而需要增加协处理器来协助CPU处理任务。

最常见的协处理器有图形处理器(GPU),主要处理图形显示相关的计算,但是后来发展到利用GPU处理通用计算任务,从而出现了通用图形处理器(GPGPU)。在GPGPU里面,大量的通用计算任务同时进行处理,通常的方式是利用大量的硬件资源来处理这些任务,但是要充分利用好这些硬件资源,可以使用不同的方法。除了直接计算的硬件的单元以外,如何使用这些硬件资源对整体性能的影响也比较大,多任务处理以及流水线技术在硬件设计中普遍使用,整个系统的处理能力得到不断提高。

图1为一种通用图形处理器(GPU)的一种结构示意图。在并行计算中,计算任务一般通过多个线程执行。如图1所示,这些线程在通用图形处理器(或称为并行计算处理器)中执行前,线程块调度模块中被划分成多个线程块,然后经由线程块分发模块,将多个线程块分发到各个计算单元(例如,流多处理器)。一个线程块中的所有线程必须要分配到同一个计算单元上执行。同时,线程块会被拆分成最小执行线程束(或简称线程束),每个线程束包含了固定数量(或小于这个固定数量)的线程,例如,32个线程。多个线程块可以在同一个计算单元中执行,或者在不同计算单元中执行。在每个计算单元中,线程束调度/分发模块对线程束进行调度、分配,以便该计算单元的多个计算核心(例如,流处理器)运行线程束。每个计算核心包括算术逻辑单元、浮点计算单元等。根据计算单元中计算核心的个数,一个线程块中的多个线程束可以同时执行或分时执行。每个线程束中的多个线程会执行相同的指令。指令的读取、译码、发射都在线程束调度/分发模块中完成。内存执行指令会被发射到计算单元中的共享缓存(例如共享L1缓存)或进一步发射到统一缓存中以进行读写操作等。

GPU进行并行计算时,中央处理器(CPU)可以将数据拆分为许多块,每一块交给GPGPU中的一个流来处理,或者也可以理解为,中央处理器将计算任务拆分成多个子任务,每个子任务由图1中计算单元的一个流来处理。例如,每一个流包含了三个步骤:1)将属于该流的数据从CPU一侧的内存转移到GPU一侧的内存;2)GPU进行运算并将结果保存在GPU一侧的内存;3)将该流的计算结果数据从GPU一侧内存拷贝到CPU一侧的内存。

本公开的发明人意识到,GPU作为协处理器,任务的建立或者任务获取以及任务执行需要消耗大量的时间,效率低下。具体地,CPU与GPU通信,需要将向GPU发送执行任务的命令,然后将一个任务发送给GPU来执行,并且在接收到该一个任务执行完成的结果后再向GPU发送下一个任务以执行。在这种情况下,任务的执行需要大量的CPU与GPU的信息交互,并且各个任务的获取和执行顺序地进行,从而使得协处理器在执行多任务方面效率地下。

本公开的至少一实施例提供了一种协处理器的操作方法、协处理器、处理器系统、电子装置及存储介质,可以使得任务的获取与执行分离进行,简化了主处理器与协处理器之间的通信机制,提高了协处理器在执行多任务方面的效率。

首先,下面介绍根据本公开的至少一实施例的协处理器的操作方法,该操作方法可以应用于如下文进一步描述的协处理器、处理器系统、电子装置、其他合适的软件、硬件、或硬件和软件的结合中。

为便于理解,下面结合图2A至图6、在示例应用场景中对根据本公开的至少一实施例的协处理器的操作方法进行说明。可以理解的,下面描述的示例应用场景是示例性的,以便于在具体的架构中实现根据本公开的至少一实施例的协处理器的操作方法的一个或多个方面,可以对该示例应用场景的一个或多个方面省略或者添加一个或多个其他方面。

图2A示出了根据本公开的至少一实施例的协处理器的示例应用场景100的示意图。

参见图2A,示例应用场景100包括主控102、存储器103和协处理器104,它们通过例如总线彼此耦接、通信。主控102、存储器103位于上述系统中的主机(host)侧,而协处理器104位于上述系统中的设备(device)侧。

协处理器104可以进一步包括任务处理队列单元105(本文也称为队列单元)、任务获取控制单元106、任务处理控制单元107、分配任务单元108、分配硬件资源单元109、处理任务单元110以及缓存112。协处理器104例如是图形处理器(例如GPGPU),也可以是其他类型的处理器,例如数据处理器、张量处理器、神经网络处理器等。

在一些实施例中,在主机(host)侧,主控102可以充当主处理器,主控102可以例如包括一个或多个CPU,本公开的实施例对于CPU的类型、采用的指令集、架构等没有限制。存储器103可以是被主控102操作的内存,例如是动态随机存取存储器(DRAM)或者其他类型的存储器。

在示例应用场景中,主控102通常有很多任务(例如计算任务)需要执行,在这些任务中部分任务(例如并行计算任务)需要使用协处理器104来提高任务的执行效率。

在一些实施例中,主控102需要执行的任务可以存储到存储器103中,然后主控102通知协处理器104来执行这些任务。以这种方式,可以减少主控102与协处理器104之间的通信,节约了主控102的带宽,主控102就可以处理更多的任务。主控102可以随时将需要执行的任务存储到存储器103中。也就是说,协处理器104在执行主控102分配的任务的时候,主控102还可以将新的任务存储到存储器103,协处理器104执行完前面的任务后会接着执行新的任务。

主控102需要协处理器104执行任务的时候,可以先初始化协处理器104的硬件资源,然后协处理器104使用这些初始化的硬件资源来执行这些任务。例如,参见图2A,用于接收主控102发送的命令的部分称为任务获取控制单元106。在一些实施例中,主控102可以先发送初始化任务处理队列单元的命令给任务获取控制单元106,其中任务处理队列单元105是任务处理队列(本文也称为队列)的集合。任务获取控制单元106在接收到初始化任务处理队列单元的命令后可以开始初始化任务处理队列单元105中的一个或多个队列。初始化任务处理队列单元105将在下文结合图2B详细描述。

当协处理器104完成初始化任务处理队列单元105后就可以执行主控102分配的任务。

协处理器104要执行主控102分配的任务,需要主控102发送相应的命令,例如任务的执行命令。协处理器104的任务获取控制单元106在接收到主控102发送的任务的执行命令后,可以获取任务。在一些实施例中,主控102可以直接将需要执行的任务发送给任务获取控制单元106以使得任务获取控制单元106获取任务。在另一些实施例中,任务获取控制单元106可以从存储器103中获取任务。例如,任务获取控制单元106可以发送获取任务使能信号给存储器103,存储器103根据该获取任务使能信号将任务读取出来并发送给任务获取控制单元106。为了提高任务获取的效率,存储器103发送的任务可以先存放到缓存112中,然后在任务获取控制单元106表明可以处理任务的时候将任务发送给任务获取控制单元106,接着任务获取控制单元106可以获取这些任务。

任务获取控制单元106获取任务后可以由任务处理控制单元107进行配合以执行任务,任务获取控制单元106与任务处理控制单元107之间通过交互/通信机制来进行通信,保证任务的顺利执行,该通信机制在下文详细描述。

在一些实施例中,任务处理控制单元107执行任务可以根据具体的情况分为多个步骤进行流水线控制,在该示例应用场景中包括3个步骤,分别是1)分配任务单元108中的分配任务、2)分配硬件资源109中的分配硬件资源和3)处理任务单元110中的处理任务。每个步骤可以根据具体情况以及硬件设计中资源的限制设计不同的大小。这3个步骤流水线操作在下文详细描述。

虽然图2A的示例应用场景中示出了特定的模块/单元,但实施例不限于此,可以对这些特定的模块/单元进行组合来形成新的模块/单元,可以对这些特定的模块/单元进行拆分来形成子模块/单元,或者对这些特定的模块/单元添加其他模块/单元。

下面结合图2B详细描述初始化任务处理队列单元105。

在描述初始化任务处理队列单元105之前,需要描述一下例如通用图形处理器(GPGPU)在并行处理中常用的队列(queue)的概念。首先需要说明的是,例如队列可以是硬件载体实现,也就是需要执行的任务需要指定一个队列,然后由这个队列来记录任务的执行情况,因此,队列在初始化后可以包括任务的标识信息。在该示例应用场景中,多个队列可以组合成一个管道(pipe),在一个协处理器中可以有多个管道。例如,一个协处理器包含4个管道,而每个管道包含8个队列。其中每个队列可以有许多任务需要执行,这些任务一般是由主控102动态分配的。如果队列和管道是硬件存在的,则一旦设计完成是不能修改的。但是,队列和管道需要的一些资源是可以由主控102动态分配的,还有一些属性也可以由主控102来设定,这些资源的分配以及属性的设定就是初始化。一旦初始化之后队列在处理后续的任务时就会受到这些资源的限制,除非重新初始化这些队列,否则这些资源是不会改变的,而队列的属性可以由主控102有针对性的改变设置。队列常见的资源包括不同类型使用空间的大小,这就决定了队列能一次执行任务的上限。队列的属性包括优先级、控制信号、状态信号等。

图2B示出了根据本公开的至少一实施例的协处理器中的管道和队列的结构200的示意图。

图2B示出了4个管道(管道1至管道4),其中每个管道包括N个队列(队列1至队列N)。对管道而言,每个管道是并行处理的,也就是有多少管道就可以有多少个队列同时处理。对队列而言,同一个管道中的队列是顺序执行的,同一时间一个管道中只有一个队列可以执行,其他的队列则在等待,但是其他的队列可以进行初始化,初始化的话也是逐个队列进行初始化。因此,管道是并行化的,而队列是顺序化的。

管道的并行化支持各个管道内的队列并行处理,例如支持第一管道的队列与第二管道的队列并行处理,因而能够大大提高协处理器的性能。队列的顺序化在于减少主控102与协处理器104之间的通信,提高了整个系统的性能。例如,主控102发送一次初始化任务处理队列单元105的命令给任务获取控制单元106,可以导致初始化多个队列,然后可以把任务分配到初始化的多个队列中,这样就能均衡各个管道的任务量,充分利用硬件资源,特别是任务本身计算量比较小,而任务比较多的时候,一个管道包括有多个队列的优势就更加明显。因为初始化队列需要时间,执行任务也需要时间,那么在执行任务的同时初始化其他队列,当当前队列里面所有任务都执行完成后,就可以立即执行其他队列的任务,这样就把主控102分配任务跟协处理器104执行任务并行起来,提高了效率。

主控102可以将任务分配给管道中的队列。例如主控102能够知道协处理器104有多少管道和队列,在分配任务的时候可以指定该任务分配到哪个管道的哪个队列。在任务分配完成之后,主控102就只需要等待协处理器执行任务,协处理器执行任务的关键信息会反馈给主控102,主控102可以根据这些关键信息控制下一步的操作,例如向任务获取控制单元106继续发送初始化任务处理队列单元105的命令或任务的执行命令,或者其他操作。

虽然图2B的实施例示出了4个管道,每个管道中包括N个队列,然而实施例不限于此。例如,在一些实施例中,可以包括更多或者更少的管道,并且每个管道中也可以包括更多或者更少的队列。

协处理器在执行任务的时候是通过队列来执行的,执行任务也就是处理队列。队列的处理有很多灵活的方法,在该实例应用场景中采用最简单的一种方式,以一个管道有4个队列为例进行说明,然而可以理解的是,队列的处理可以适用于其他管道和队列的结构。

下面结合图3详细描述检测需要处理的队列的步骤。

图3示出了根据本公开的至少一实施例的检测需要处理的队列的流程图300。在一些实施例中,可以通过图2A所示的任务获取控制单元106执行检测需要处理的队列的步骤。

如图3所示,在步骤S302中,在没有队列需要处理的时候,任务获取控制单元106处于空闲状态。在没有队列需要处理的空闲状态,任务获取控制单元106可以检测是否有队列需要处理。图3所示的检测的过程是从队列1开始顺序检测。

在没有队列需要处理的时候,在步骤S304中,任务获取控制单元106首先检测队列1是否需要处理。

如果队列1需要处理(步骤S304的“是”分支),则在步骤S306中,任务获取控制单元106可以开始处理队列1。例如,任务获取控制单元106将队列1中的任务发送给任务处理控制单元107以执行该任务。如果队列1不需要处理(步骤S304的“否”分支),则在步骤S308中,任务获取控制单元106可以检测队列2是否需要处理。另一方面,在步骤S306中的队列1处理完成之后,任务获取控制单元106也可以进入步骤S308来检测队列2是否需要处理。

如果队列2需要处理(步骤S308的“是”分支),则在步骤S310中,任务获取控制单元106可以开始处理队列2。例如,任务获取控制单元106将队列2中的任务发送给任务处理控制单元107以执行该任务。如果队列2不需要处理(步骤S308的“否”分支),则在步骤S312中,任务获取控制单元106可以检测队列3是否需要处理。另一方面,在步骤S310中的队列2处理完成之后,任务获取控制单元106也可以进入步骤S312来检测队列3是否需要处理。

如果队列3需要处理(步骤S312的“是”分支),则在步骤S314中,任务获取控制单元106可以开始处理队列3。例如,任务获取控制单元106将队列3中的任务发送给任务处理控制单元107以执行该任务。如果队列3不需要处理(步骤S312的“否”分支),则在步骤S316中,任务获取控制单元106可以检测队列4是否需要处理。另一方面,在步骤S314中的队列3处理完成之后,任务获取控制单元106也可以进入步骤S316来检测队列4是否需要处理。

如果队列4需要处理(步骤S316的“是”分支),则在步骤S318中,任务获取控制单元106可以开始处理队列4。例如,任务获取控制单元106将队列3中的任务发送给任务处理控制单元107以执行该任务。如果队列4不需要处理(步骤S316的“否”分支),则在步骤S320中,任务获取控制单元106可以检测所有队列是否全部处理完成。另一方面,在步骤S318中的队列4处理完成之后,任务获取控制单元106也可以进入步骤S320来检测所有队列是否全部处理完成。

如果所有队列全部处理完成(步骤S320的“是”分支),则表明没有队列需要处理,任务获取控制单元106可以回到步骤S302,即跳到空闲状态,以等待有队列需要处理再开始处理选中的队列。如果在检测所有队列是否全部处理完成时,检测到有队列需要处理(步骤S320的“否”分支),则任务获取控制单元106可以回到步骤S304来检测队列1是否需要处理,然后循环上面的操作直到所有的队列都全部处理完成之后,任务获取控制单元106可以回到步骤S302,即跳到空闲状态,以等待有队列需要处理再开始处理选中的队列。

在一些实施例中,在第一次队列4处理完成之后,任务获取控制单元106没有进入空闲状态而是继续检测是否有队列需要处理,是因为在处理队列4的时候其他的队列有可能有新的任务被主控102分配进来,这样就需要继续执行任务,也就要继续处理队列,而选择处理哪一个队列还是使用上面的操作,即从步骤S304开始循环,直到检测到有队列需要处理则开始处理该队列。

虽然图3的实施例描述了从队列1开始顺序检测,然而实施例不限于此,也可以从其他队列开始检测,或者根据队列的属性(例如,优先级)来检测,只要任务获取控制单元106能够检测是否有队列需要处理。

下面结合图4详细描述通信机制。

图4示出了根据本公开的至少一实施例的通信机制的流程图400。

在处理队列的时候,任务获取控制单元106与任务处理控制单元107之间可以通过下面描述的通信机制来进行通信,以保证任务的顺利执行,具体的实现过程如图4所示。

参见图4,在步骤S402中,在任务获取控制单元106没有队列需要处理的时候,任务获取控制单元106处于空闲状态。同样的,在任务处理控制单元107没有任务需要执行的时候,任务处理控制单元107也处于空闲状态。

如图3所描述的,在没有队列需要处理的空闲状态,在步骤S404中,任务获取控制单元106检测是否有队列需要处理。如果没有队列需要处理(步骤S404的“否”分支),则任务获取控制单元106保持空闲状态。然而,如果有队列需要处理(步骤S404的“是”分支),则在步骤S406中,任务获取控制单元106可以按照图3的步骤选中1个队列进行处理。

在步骤S408中,任务获取控制单元106发送消息1给任务处理控制单元107。例如,消息1可以包括指示存在队列需要处理的信息。例如,某个队列中存在需要执行的任务,则该队列需要处理。在步骤S410中,任务处理控制单元107在接收到消息1之后开始处理消息1。例如,任务处理控制单元107可以主要进行相关队列的初始化操作(例如,对需要处理的队列的相关信息的获取,这些信息例如为队列中的任务的长度、位置等),为任务的执行做准备。在步骤S412中,任务处理控制单元107检测消息1处理完成是否完成。如果消息1处理完成(步骤S412的“是”分支),在步骤S414中,任务处理控制单元107发送消息2给任务获取控制单元106。例如,消息2包括指示为该队列的处理做好准备的信息。如果消息1处理未完成(步骤S412的“否”分支),可以返回步骤S410,使得任务处理控制单元107继续处理消息1。

在步骤S416中,任务获取控制单元106在接收到消息2之后开始处理消息2,例如,激活队列中任务获取指针,开始获取任务,维护任务获取指针。在步骤S418中,任务获取控制单元106检测消息2是否处理完成。如果消息2处理完成(步骤S418的“是”分支),则在步骤S420中,任务获取控制单元106获取任务。例如,任务获取控制单元106从选中的队列中获取任务。然后,在步骤S422中,任务获取控制单元106将获取的任务发送给任务处理控制单元107。

随后,在步骤S424中,任务处理控制单元107可以执行任务。任务处理控制单元107执行任务的过程比较复杂,花费的时间也比较长,在实际的设计中有多种方法可以加快任务的执行。在该示例应用场景中,将任务的执行分为3个步骤,即上文参见图2A描述的3个步骤:1)分配任务单元108执行分配任务、2)分配硬件资源109执行分配硬件资源和3)处理任务单元110执行处理任务。然后任务可以以流水线方式执行,以提高效率,具体的过程将在下文结合图5详细描述。可以理解的是,实施例不限于此,可以通过其他方式执行任务。

在步骤S426中,任务处理控制单元107开始执行任务之后,可以检测队列中所有的任务是否执行完成。如果队列中所有的任务执行完成(步骤S426的“是”分支),则在步骤S428中,任务处理控制单元107发送消息3给任务获取控制单元106。例如,消息3可以包括指示队列中所有的任务执行完成的信息。如果队列中所有的任务执行完成(步骤S426的“否”分支),则任务处理控制单元107可以继续等待直到该队列中所有的任务执行完成。

在步骤S430中,任务获取控制单元106在接收到消息3之后开始处理消息3,例如,检查是否有新的任务被分配,是否可以切换到其他队列,确保该队列任务全部处理完成。在步骤S432中,任务获取控制单元106检测消息3是否处理完成。如果消息3处理完成(步骤S432的“是”分支),则在步骤S434中,在消息3处理完成之后,任务获取控制单元106发送消息4给任务处理控制单元107。例如,消息4可以包括指示任务处理控制单元107清理与已经执行完成的任务相关联的硬件资源的信息。如果消息3处理未完成(步骤S432的“否”分支),则任务获取控制单元106可以继续处理消息3。

在步骤S436中,任务处理控制单元107在接收到消息4之后开始处理消息4,例如主要是响应消息4做一些硬件资源清理工作。在步骤S438中,任务处理控制单元107检测消息4是否处理完成。如果消息4处理完成(步骤S438的“是”分支),则在步骤S440中,在消息4处理完成之后,任务处理控制单元107发送消息5给任务获取控制单元106。例如,消息5可以包括指示已经执行完成的任务相关联的硬件资源已经被清理的信息。如果消息4处理未完成(步骤S438的“否”分支),则任务处理控制单元107可以继续处理消息4。

在步骤S442中,任务获取控制单元106在接收到消息5之后开始处理消息5,例如主要是响应消息5做一些清理操作,如与其中所有任务被执行完的队列相关联的清理操作。在步骤S444中,任务获取控制单元106检测消息5是否处理完成。如果消息5处理完成(步骤S444的“是”分支),则任务获取控制单元106可以回到步骤S404,以检测是否有其他队列需要处理。如果有其他队列需要处理,则进行新的一个队列的处理,如果没有其他队列需要处理则跳到空闲状态。如果消息5处理未完成(步骤S444的“否”分支),则任务获取控制单元106可以继续处理消息5。可以循环参见图4描述的上述步骤,直到所有的队列处理完成。

可以理解的是,图4描述的是通信机制的一种具体实现方式,然而实施例不限于此,可以存在其他的通信机制的具体实现方式,只要任务获取控制单元106能够将任务发送给任务处理控制单元,以用于任务处理控制单元107完成队列的处理即可。

下面结合图5描述任务处理控制单元107执行任务的过程。

图5示出了根据本公开的至少一实施例的执行任务的流程图500。在该示例应用场景中,执行任务是由任务处理控制单元107协同分配任务单元108、分配硬件资源单元109以及处理任务单元110来完成的。因此,图5的流程图500以包括涉及分配任务单元108、分配硬件资源单元109以及处理任务单元110的三个阶段的流水线的方式实现任务的执行。

参见图5,执行任务的流程图500开始于步骤S502,即任务处理控制单元107开始执行任务。任务处理控制单元107开始执行任务后,在步骤S504中,分配一个任务,例如任务处理控制单元107可以控制分配任务单元108来分配一个任务。在步骤S506中,可以检测当前任务分配是否完成。当当前任务分配未完成(步骤S506的“否”分支)时,可以回到步骤S504以继续分配该任务。当当前任务分配完成(步骤S506的“是”分支)时,一方面,在步骤S508中,会分配下一个任务,另一方面,在步骤S512中,会为当前任务分配硬件资源,例如任务处理控制单元107可以控制分配硬件资源单元109来为当前任务分配硬件资源。

在步骤S508之后,在步骤S510中,可以检测所有的任务分配是否完成。如果所有的任务分配未完成(步骤S510的“否”分支),则可以回到步骤S508以继续分配分配下一个任务。如果所有的任务分配完成(步骤S510的“是”分支),则可以进入步骤S511,以等待所有的任务执行完成。

在步骤S514中,可以检测当前任务硬件资源分配是否完成。当当前任务硬件资源分配未完成(步骤S514的“否”分支)时,可以回到步骤S512以继续为当前任务分配硬件资源。当当前任务硬件资源分配完成(步骤S514的“是”分支)时,一方面,在步骤S516中,为下一个已经分配好的任务分配硬件资源,另一方面,在步骤S522中,处理当前任务,例如任务处理控制单元107可以控制处理任务单元110来处理当前任务,这里的处理可以是基于分配的硬件资源对任务进行具体的运算,例如算术运算(如加减乘除等运算)、逻辑运算(或、且、非等运算)、关系运算(大于、小于、等于、不等于等)、数据传输(输入、输出、赋值等运算)等。

在步骤S516之后,在步骤S518中,可以检测所有的任务硬件资源是否分配完成。如果所有的任务硬件资源未分配完成(步骤S518的“否”分支),则可以回到步骤S516以继续为下一个已经分配好的任务分配硬件资源。如果所有的任务硬件资源分配完成(步骤S518的“是”分支),则可以进入步骤S511,以等待所有的任务执行完成。

在步骤S524中,可以检测当前任务处理是否完成。当当前任务处理未完成(步骤S524的“否”分支)时,可以回到步骤S522以继续处理当前任务。当当前任务处理完成(步骤S524的“是”分支)时,在步骤S526中,可以继续处理下一个任务。在步骤S528中,检测所有任务处理是否完成。当所有任务处理未完成(步骤S528的“否”分支),则可以回到步骤S526以继续处理该下一个任务。当所有任务处理完成(步骤S528的“是”分支),则可以进入步骤S530,以指示所有的任务执行完成。

当所有任务执行完成之后,则包含该所有任务的队列处理完成,可以重复上述参见图5描述的步骤以继续处理下一个队列。

参见图5,步骤S504-S510可以在分配任务单元108中执行,步骤S512-S518可以在分配硬件资源单元109中执行,步骤S522-S528可以在处理任务单元110中执行。在参见图5描述的执行任务的流程图500中,分配任务单元108、分配硬件资源单元109以及处理任务单元110分离地执行分配任务、分配硬件资源以及处理任务,可以使得任务的执行在各个阶段分离的执行,促进任务执行的并行化/流水线化,提高了任务执行的效率。

虽然图5示出了涉及分配任务单元108、分配硬件资源单元109以及处理任务单元110的三个阶段的任务执行的流水线,但是任务执行的流水线可以包括更多或者更少的阶段。

在任务执行时,向主控102定期或者适时报告任务执行的状态信息,以便于主控102了解当前任务的执行状态或者为协处理器104分配其他任务做好准备将是有利的。为此,回到图2A,在分配任务单元108、分配硬件资源单元109以及处理任务单元110分离地执行分配任务、分配硬件资源以及处理任务期间,分配任务单元108、分配硬件资源单元109以及处理任务单元110可以将各自的状态信息反馈给任务处理控制单元107。例如,分配任务单元108可以将任务分配状态信息(例如,任务分配的进度,所有任务分配是否完成等)反馈给任务处理控制单元107。又例如,分配硬件资源单元109可以将任务硬件资源分配状态信息(例如,任务硬件资源分配的进度,所有任务硬件资源分配是否完成等)反馈给任务处理控制单元107。再例如,处理任务单元110可以将任务处理状态信息(例如,任务处理的进度,所有任务处理是否完成等)反馈给任务处理控制单元107。

在这种情况下,任务处理控制单元107可以用作分配任务单元108、分配硬件资源单元109以及处理任务单元110的状态机。任务处理控制单元107可以将来自分配任务单元108、分配硬件资源单元109以及处理任务单元110的状态信息反馈给主控102。例如,任务处理控制单元107可以将这些状态信息经由任务获取控制单元106反馈给主控102。又例如,任务处理控制单元107可以将这些状态信息直接反馈给主控102,以这种方式,可以减小任务获取控制单元106传递这些状态信息的资源开销,并且在这种情况下,任务处理控制单元107可以充当协处理器104执行任务的状态机,主控102可以根据任务处理控制单元107反馈的状态信息来监测协处理器104对任务的执行的情况。

图6示出了根据本公开的至少一实施例的包含N个任务的队列的处理过程的示意图600。图6使用例如参见图5涉及的流水线结构进行处理。

队列的处理需要用到3部分硬件资源,即参见图2A描述的分配任务单元108、分配硬件资源单元109以及处理任务单元110,它们分别用于分配任务、分配硬件资源和处理任务,对应于流水线的3个阶段。参见图6,其中,上部流水线对应于分配任务单元108,中部流水线对应于分配硬件资源单元109,并且下部流水线对应于处理任务单元110。可以理解的是,指令的执行可以包括更多或者更少的流水线阶段。

一般地,每一部分硬件资源处理对应的操作需要的时间可能是不一样的,同一操作使用相同的对应硬件资源。例如,针对分配任务,分配任务1到分配任务N使用同样的硬件资源,即分配任务单元108的硬件资源,因此需要分时复用。又例如,针对分配硬件资源,任务1分配硬件资源到任务N分配硬件资源使用同样的硬件资源,即分配硬件资源单元109的硬件资源,因此需要分时复用。再例如,针对处理任务,处理任务1到处理任务N使用同样的硬件资源,即处理任务单元110的硬件资源,因此需要分时复用。

参见图6,在时刻T0开始处理队列,此时只有分配任务单元108工作。在时刻T1,任务1分配完成,则开始分配任务2,并且分配硬件资源单元109为任务1分配硬件资源,此时分配任务单元108和分配硬件资源单元109同时工作。在时刻T2,任务1硬件资源分配完成,处理任务单元110开始处理任务1,而分配任务单元108继续分配任务(分配任务3)并且分配硬件资源单元109继续分配硬件资源(开始为硬件2分配硬件资源),此时,分配任务单元108、分配硬件资源单元109以及处理任务单元110同时工作。直到时刻Tm,所有的N个任务分配完成。在T2到Tm时间段内,分配任务单元108、分配硬件资源单元109以及处理任务单元110同时工作。到时刻Tk,所有任务硬件资源分配完成,则在Tm到Tk时间段内,只有分配硬件资源单元109以及处理任务单元110工作。在时刻Tn,任务N处理完成,则在Tk到Tn时间段内,只有处理任务单元110工作。在时刻Tn,整个队列处理完成。

参见图6描述的实施例,将任务的队列的处理(即,队列中的任务的执行)分解为多个步骤,以硬件资源换取任务执行的时间,采用流水线操作,大大提高了任务执行的效率。

图7示出了根据本公开的至少一实施例的协处理器的操作方法700的流程图。该操作方法可以包括步骤S710至S730。

在步骤S710中,由协处理器的任务获取控制单元(例如任务获取控制单元106)接收来自主处理器(例如主控102)的多项任务的执行命令。

在一些实施例中,执行命令可以触发协处理器执行多项任务。例如,执行命令可以触发任务获取控制单元获取多项任务,因此执行命令可以包括多项任务或者可以包括用于指示任务获取控制单元获取多项任务的信息。在一些实施例中,执行命令可以是多项任务。

在步骤S720中,由任务获取控制单元(例如任务处理控制单元107)获取多项任务并将多项任务发送给协处理器的任务处理控制单元。

在步骤S730中,由任务处理控制单元控制多项任务的执行。

如此,根据本公开的至少一实施例的操作方法可以通过协处理器的任务获取控制单元获取多项任务,并且由协处理器的任务处理控制单元来控制多项任务的执行,因而可以在任务处理控制单元控制多项任务的执行的同时由任务获取控制单元进行任务获取,实现了任务的获取与执行分离进行,从而可以通过一次执行命令使得任务获取控制单元获取多项任务,简化了主处理器与协处理器之间的通信机制,提高了协处理器在执行多任务方面的效率。

下面描述根据本公开的至少一实施例的协处理器的操作方法的附加方面。

在一些实施例中,根据本公开的至少一实施例的协处理器的操作方法,还包括:由任务获取控制单元将多项任务中的每个任务的标识信息映射到协处理器的队列单元(例如队列单元105)中的相应的队列中,以基于相应的队列中的每个任务的标识信息获取每个任务,其中队列单元被分组为一个或多个管道,并且每个管道包括队列单元中的多个队列。

由任务获取控制单元将多项任务中的每个任务的标识信息映射到协处理器的队列单元中的相应的队列中的过程可以称为任务建立。在任务建立之后,可以基于标识信息获取相应的任务以用于执行,因此可以以队列为基础进行队列中的任务的建立、获取与执行。进一步地,每个管道中的队列可以同时进行不同性质的操作,即在每个管道中,可以同时进行一个队列的任务的建立与一个队列的任务的获取与执行。另外,多个管道可以并行执行。以这种方式,可以加速多项任务的建立。

在一些实施例中,根据本公开的至少一实施例的协处理器的操作方法,还包括:由任务获取控制单元初始化一个或多个管道和每个管道中包括的队列。主处理器可以知道协处理器中的一个或多个管道和每个管道中包括的队列,因此主处理器可以经由任务获取控制单元来针对多项任务中的不同任务初始化一个或多个管道和每个管道中包括的队列,从而保证每个队列用于记录相应的任务的标识信息。

在一些实施例中,根据本公开的至少一实施例的协处理器的操作方法,由任务获取控制单元初始化一个或多个管道和每个管道中的队列包括:由任务获取控制单元设置一个或多个管道和每个管道中的队列的资源和属性。以这种方式,可以使不同的队列适用于不同的任务。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,还包括:由任务获取控制单元针对每个管道中的多个队列,检测多个队列中的一个队列是否需要处理;以及响应于检测到多个队列中的一个队列需要处理,处理一个队列,直到多个队列全部处理完成,其中,在一个队列包括的多项任务中的至少一个任务的标识信息指示至少一个任务需要执行的情况下,检测到一个队列需要处理,其中,处理一个队列包括:由任务获取控制单元获取一个队列中的至少一个任务并将一个队列中的至少一个任务发送给任务处理控制单元;以及由任务处理控制单元控制一个队列中的至少一个任务的执行。以这种方式,可以确定每个管道中需要处理的队列,以便以队列为基础对该队列中的任务进行执行,即以处理队列的方式实现该队列中任务的执行,从而实现进入每个管道的需要执行的任务都能被执行。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,检测多个队列中的一个队列是否需要处理包括:以遍历的方式检测多个队列中的一个队列是否需要处理。以这种方式,例如可以通过队列编号的顺序检测管道中需要处理的一个队列。然而,实施例不限于,也可以通过其他方式检测管道中需要处理的一个队列。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,还包括:响应于检测到多个队列中的全部队列不需要处理,或者响应于多个队列中的全部队列处理完成,使任务获取控制单元进入空闲状态。以这种方式,降低任务获取控制单元的功率消耗。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,由任务获取控制单元获取多项任务并将多项任务发送给任务处理控制单元,包括:针对每个管道中的多个队列中的每个队列,由任务获取控制单元基于任务获取控制单元和任务处理控制单元之间的交互(例如图2A的通信机制),获取每个队列中需要执行的至少一个任务并将至少一个任务发送给任务处理控制单元。以这种方式,可以以队列为基础,通过任务获取控制单元和任务处理控制单元之间的交互来实现队列中的任务的顺利执行。

然而,实施例不限于此,在一些实施例中,由任务获取控制单元获取多项任务并将多项任务发送给任务处理控制单元,包括:由任务获取控制单元基于任务获取控制单元和任务处理控制单元之间的交互,获取多项任务并将多项任务发送给任务处理控制单元。以这种方式,可以在不以队列为基础的情况下,通过任务获取控制单元和任务处理控制单元之间的交互(或通信机制)来保证任务的顺利执行。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,任务获取控制单元和任务处理控制单元之间的交互包括:由任务获取控制单元发送第一消息给任务处理控制单元,其中,第一消息包括指示至少一个任务所在的队列需要处理的信息;响应于第一消息,由任务处理控制单元发送第二消息给任务获取控制单元,其中,第二消息包括指示为队列的处理做好准备的信息;以及响应于第二消息,由任务获取控制单元获取至少一个任务并将至少一个任务发送给任务处理控制单元。以这种方式,使得任务获取控制单元在任务获取控制单元在准备好执行任务的情况下才将任务发送给任务处理控制单元来执行,提高了任务之间传递的效率。然而,实施例不限于此,在一些实施例中,可以省略上述步骤中的全部或部分,或者采用其他步骤,只要任务获取控制单元能够将任务发送给任务处理控制单元。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,任务获取控制单元和任务处理控制单元之间的交互,还包括:由任务处理控制单元发送第三消息给任务获取控制单元,其中,第三消息包括指示至少一个任务全部执行完成的信息(例如,该至少一个任务为3个任务,则该第三消息包括指示该3个任务全部执行完成的信息);响应于第三消息,由任务获取控制单元发送第四消息给任务处理控制单元,其中,第四消息包括指示任务处理控制单元清理与已经执行完成的任务相关联的硬件资源的信息;以及响应于第四消息,由任务处理控制单元发送第五消息给任务获取控制单元,其中,第五消息包括指示已经执行清理的信息。以这种方式,使得任务处理控制单元与任务获取控制单元为下一队列中的任务的执行做好准备。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,由任务处理控制单元控制多项任务的处理,包括:针对每个管道中的多个队列中的每个队列,由任务处理控制单元控制每个队列中需要执行的至少一个任务以流水线的方式的处理。以这种方式,可以以队列为基础,通过流水线的方式实现队列中的任务的执行,提高任务执行的效率。

然而,实施例不限于此,在一些实施例中,由任务处理控制单元控制多项任务的处理,包括:由任务处理控制单元控制多项任务以流水线的方式的处理。以这种方式,可以在不以队列为基础的情况下,通过流水线的方式实现队列中的任务的执行,提高任务执行的效率。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,由任务处理控制单元控制至少一个任务以流水线的方式的处理包括:由协处理器的分配任务单元(例如分配任务单元108)对至少一个任务中的每个任务进行分配;由协处理器的分配硬件资源单元(例如分配硬件资源单元109)为所分配的每个任务分配硬件资源;以及由协处理器的处理任务单元(处理任务单元110)为分配硬件资源的每个任务进行运算处理。以这种方式,将任务执行的流水线分为了分配任务单元、分配硬件资源单元以及处理任务单元三个阶段,以实现这三个阶段对任务的并行处理,提高任务执行的效率。然而实施例不限于此,任务执行的流水线可以包括比上述三个部分更多或者更少的阶段。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,还包括,由任务处理控制单元获取分配任务单元、分配硬件资源单元以及处理任务单元的状态信息,并经由任务处理控制单元与主处理器的直连将状态信息反馈给主处理器。以这种方式,任务处理控制单元可以用作任务执行的状态机,实时或定期地获取流水线各个阶段中任务执行的状态信息,并且直接将这些状态信息传递给主处理器,由此减少了主处理器与任务获取控制单元之间、以及任务获取控制单元与任务处理控制单元之间的通信。

在一些实施例中,根据本公开的至少一实施例提供的一种协处理器的操作方法,由任务获取控制单元获取多项任务包括:由任务获取控制单元通过协处理器的缓存(例如缓存112)从耦合到主处理器的存储器(例如存储器103)中获取多项任务。以这种方式,由主处理器可以通过向任务获取控制单元发送包括关于任务多项任务的在存储器中的位置及大小信息即可,减少了主处理器向任务获取控制单元发送多项任务的通信,并且经由缓存从存储器获取多项任务提高了任务获取的速度。

与本公开的至少一实施例提供的协处理器的操作方法相对应,本公开还提供了一种协处理器。

图8示出了根据本公开的至少一实施例的协处理器800的示意图。

如图8所示,该协处理器800包括任务获取控制单元810以及任务处理控制单元820。参见图8描述的协处理器800、任务获取控制单元810可以与参见图2A描述协处理器104、任务获取控制单元106以及任务处理控制单元107相同或类似。

任务获取控制单元810被配置为接收来自主处理器的多项任务的执行命令,以及获取多项任务并将多项任务发送给协处理器800的任务处理控制单元820。

任务处理控制单元820被配置为控制多项任务的执行。

如此,根据本公开的至少一实施例的协处理器可以通过协处理器的任务获取控制单元获取多项任务,并且由协处理器的任务处理控制单元来控制多项任务的执行,因而可以在任务处理控制单元控制多项任务的执行的同时由任务获取控制单元进行任务获取,实现了任务的获取与执行分离进行,从而可以通过一次执行命令使得任务获取控制单元获取多项任务,简化了主处理器与协处理器之间的通信机制,提高了协处理器在执行多任务方面的效率。

下面描述根据本公开的至少一实施例的协处理器的附加方面。

在一些实施例中,根据本公开的至少一实施例的协处理器,还包括队列单元。任务获取控制单元810还被配置为将多项任务中的每个任务的标识信息映射到协处理器的队列单元中的相应的队列中,以基于相应的队列中的每个任务的标识信息获取每个任务,其中队列单元被分组为一个或多个管道,并且每个管道包括队列单元中的多个队列。

在一些实施例中,根据本公开的至少一实施例的协处理器,任务获取控制单元810还被配置为初始化一个或多个管道和每个管道中包括的队列。

在一些实施例中,根据本公开的至少一实施例的协处理器,任务获取控制单元810还被配置为设置一个或多个管道和每个管道中的队列的资源和属性。

在一些实施例中,根据本公开的至少一实施例的协处理器,任务获取控制单元810还被配置为针对每个管道中的多个队列:检测多个队列中的一个队列是否需要处理;以及响应于检测到多个队列中的一个队列需要处理,处理该一个队列,直到该多个队列全部处理完成,其中,在该一个队列包括的多项任务中的至少一个任务的标识信息指示该至少一个任务需要执行的情况下,检测到该一个队列需要处理。任务获取控制单元810还被配置为获取该一个队列中的至少一个任务并将该一个队列中的至少一个任务发送给任务处理控制单元820;以及任务处理控制单元820还被配置为控制该一个队列中的至少一个任务的执行。

在一些实施例中,根据本公开的至少一实施例的协处理器,任务获取控制单元810还被配置为以遍历的方式检测该多个队列中的一个队列是否需要处理。

在一些实施例中,根据本公开的至少一实施例的协处理器,任务获取控制单元810还被配置为:响应于检测到多个队列中的全部队列不需要处理,或者响应于多个队列中的全部队列处理完成,使任务获取控制单元810进入空闲状态。

在一些实施例中,根据本公开的至少一实施例的协处理器,任务获取控制单元810还被配置为:针对每个管道中的多个队列中的每个队列,基于任务获取控制单元810和任务处理控制单元820之间的交互,获取每个队列中需要执行的至少一个任务并将该至少一个任务发送给任务处理控制单元820。

在一些实施例中,根据本公开的至少一实施例的协处理器,该任务获取控制单元810还被配置为发送第一消息给任务处理控制单元820,其中,第一消息包括指示该至少一个任务所在的队列需要处理的信息;任务处理控制单元820还被配置为响应于第一消息,发送第二消息给任务获取控制单元810,其中,第二消息包括指示为该至少一个任务所在的队列的处理做好准备的信息;以及任务获取控制单元810还被配置为响应于第二消息,获取该至少一个任务并将该至少一个任务发送给任务处理控制单元820。

在一些实施例中,根据本公开的至少一实施例的协处理器,任务处理控制单元820还被配置为发送第三消息给任务获取控制单元810,其中,第三消息包括指示该至少一个任务全部执行完成的信息;任务获取控制单元810还被配置为响应于第三消息,发送第四消息给任务处理控制单元820,其中,第四消息包括指示任务处理控制单元820清理与已经执行完成的任务相关联的硬件资源的信息;以及由任务处理控制单元820还被配置为响应于第四消息,发送第五消息给任务获取控制单元810,其中,第五消息包括指示已经执行该清理的信息。

在一些实施例中,根据本公开的至少一实施例的协处理器,任务处理控制单元820还被配置为针对每个管道中的多个队列中的每个队列,控制每个队列中需要执行的至少一个任务以流水线的方式的处理。

在一些实施例中,根据本公开的至少一实施例的协处理器,还包括分配任务单元、分配硬件资源单元以及处理任务单元。分配任务单元被配置为对该至少一个任务中的每个任务进行分配;分配硬件资源单元被配置为为所分配的每个任务分配硬件资源;以及处理任务单元被配置为为分配硬件资源的每个任务进行运算处理。

在一些实施例中,根据本公开的至少一实施例的协处理器,任务处理控制单元820还被配置为获取分配任务单元、分配硬件资源单元以及处理任务单元的状态信息,并经由任务处理控制单元820与主处理器的直连将状态信息反馈给主处理器。

在一些实施例中,根据本公开的至少一实施例的协处理器,还包括缓存。任务获取控制单元810还被配置为通过协处理器的缓存从耦合到主处理器的存储器中获取该多项任务。

根据本公开的至少一实施例的协处理器的附加方面可以参照图2A的示例应用场景100中的协处理器104的各方面或者参照图7描述的协处理器的操作方法的附加方面,并且各方面的技术效果也可以映射到根据本公开的至少一实施例的协处理器800,在此不在赘述。

图9示出了根据本公开至少一实施例的处理器系统900的示意图。

如图9所示,该处理器系统900包括主处理器910(例如参照图2A描述的主控102)和如上参照图8描述的协处理器800。虽然图9所示的处理系统仅包括一个主处理器910和一个协处理器800,然而本公开不以此为限,处理器系统900可以包括P个主处理器910和Q个协处理器800,其中P和Q为大于或等于1的整数。例如,处理器系统900可以包括一个主处理器910和两个协处理器800、包括两个主处理器910和一个协处理器800或者包括两个主处理器910和两个协处理器800等。

如此,参照图8描述的协处理器800的技术效果可以映射到根据本公开的至少一实施例的处理器系统900,在此不在赘述。

图10示出了根据本公开的至少一实施例的电子装置1000的示意图。

如图10所示,电子装置1000包括处理器1010和存储器1020。存储器1020包括一个或多个计算机程序模块1021。一个或多个计算机程序模块1021被存储在存储器1020中并被配置为由处理器1010执行,该一个或多个计算机程序模块1021包括用于执行根据本公开的至少一实施例的协处理器的操作方法的指令,其被处理器1010执行时,可以执行根据本公开的至少一实施例的协处理器的操作方法及其附加方面的一个或多个步骤。存储器1020和处理器1010可以通过总线系统和/或其他形式的连接机构(未示出)互连。例如,该总线可以是外设部件互连标准(PCI)总线或扩展工业标准结构(EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。

示例性地,处理器1010可以是中央处理单元(CPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其他形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构、RISC-V架构等。处理器1010可以为通用处理器或专用处理器,可以控制电子装置1000中的其他组件以执行期望的功能。

示例性地,存储器1020可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块1021,处理器1010可以运行一个或多个计算机程序模块1021,以实现电子装置1000的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。

例如,电子装置1000还可以包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等输入装置;包括诸如液晶显示器、扬声器、振动器等输出装置;包括例如磁带、硬盘(HDD或SDD)等存储装置;例如还可以包括诸如LAN卡、调制解调器等的网络接口卡等通信装置。通信装置可以允许电子装置1000与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。根据需要驱动器连接至I/O接口。可拆卸存储介质,诸如磁盘、光盘、磁光盘、半导体存储器等,根据需要安装在该驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储装置。

例如,该电子装置1000还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为USB接口、闪电(lighting)接口等。该通信装置可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(LAN)和/或城域网(MAN)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(GSM)、增强型数据GSM环境(EDGE)、宽带码分多址(W-CDMA)、码分多址(CDMA)、时分多址(TDMA)、蓝牙、Wi-Fi(例如基于IEEE 802.11a、IEEE 802.11b、IEEE 802.11g和/或IEEE 802.11n标准)、基于因特网协议的语音传输(VoIP)、Wi-MAX,用于电子邮件、即时消息传递和/或短消息服务(SMS)的协议,或任何其他合适的通信协议。

该电子装置1000例如可以是片上系统(SOC)或者包括该SOC的设备,例如,可以为手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪、家用电器、通信基站、工业控制器、服务器等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。该电子装置1000的具体功能和技术效果可以参考上文中关于根据本公开的至少一实施例的协处理器的操作方法及其附加方面的描述,此处不再赘述。

图11示出了根据本公开至少一实施例的非瞬时可读存储介质1100的示意图。

如图11所示,非瞬时可读存储介质1100上存储有计算机指令1110,该计算机指令1110被处理器执行时执行如上所述的协处理器的操作方法及其附加方面中的一个或多个步骤。

示例性地,该非瞬时可读存储介质1100可以是一个或多个计算机可读存储介质的任意组合,例如,一个计算机可读存储介质包含用于由协处理器的任务获取控制单元接收来自主处理器的多项任务的执行命令的程序代码、用于由任务获取控制单元获取多项任务并将多项任务发送给协处理器的任务处理控制单元的程序代码、以及用于由任务处理控制单元控制多项任务的执行的程序代码。

示例性地,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如根据本公开的至少一实施例的协处理器的操作方法及其附加方面的一个或多个步骤。

示例性地,该非瞬时可读存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、以及其他的非瞬时可读存储介质或其任意组合。

在上文的详细描述中,出于解释而非限制的目的,阐述了具体细节,以便提供对本公开中描述的各个方面和实施例的透彻理解。在一些情况下,省略了对众所周知的设备、组件、电路和方法的详细描述,以免用不必要的细节来模糊本文公开的实施例的描述。本文列举本文公开的原理、方面和实施例的所有声明,以及其具体示例,旨在涵盖其结构等同物和功能等同物两者。另外,这种等同物旨在包括当前已知的等同物以及将来开发的等同物,即,开发的执行相同功能的任何元件,而不管结构如何。因此,例如,可以理解,本文的框图可以表示体现所描述的实施例的原理的说明性电路系统或其他功能单元的概念图。这样的功能和所示的功能块将被理解为是硬件实施的和/或计算机实施的。

本说明书中的各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

需要说明的是,在本文中,诸如第一、第二等的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且进一步包括没有明确列出的其他要素,或者是进一步包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本公开的优选实施例,并不用于限制本公开;本公开的范围由权利要求确定。

技术分类

06120115636697