CN115129369A - 命令分发方法、命令分发器、芯片以及电子设备 - Google Patents
命令分发方法、命令分发器、芯片以及电子设备 Download PDFInfo
- Publication number
- CN115129369A CN115129369A CN202110323622.8A CN202110323622A CN115129369A CN 115129369 A CN115129369 A CN 115129369A CN 202110323622 A CN202110323622 A CN 202110323622A CN 115129369 A CN115129369 A CN 115129369A
- Authority
- CN
- China
- Prior art keywords
- command
- target
- processing cycle
- distributed
- threads
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本公开提供了一种命令分发方法、命令分发器、芯片以及电子设备,其中,该命令分发方法包括:从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组;其中,第一目标寄存器组,与最近至少一个历史处理周期确定的第二目标寄存器组不同;从与多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程;向对应运算单元分发确定的目标线程分别对应的命令。本公开实施例中每个线程组在每个处理周期,最多会被一个运算单元访问,因此接收到命令的运算单元之间不需要进行仲裁,就能够直接对对应的寄存器组进行访问,得到命令所需要的操作数,进而提升了命令分发的效率和命令的处理效率。
Description
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种命令分发方法、命令分发器、芯片以及电子设备。
背景技术
中央处理器、图形处理器等命令处理装置的结构通常包括:控制器、与控制器连接的命令分发器、以及与命令分发器连接的多个运算单元。控制器用于从主机接收命令,并将命令进行初步处理后发送给命令分发器,由命令分发器将命令分发至不同的运算单元进行执行。随着密集型计算任务的不断增加,硬件多线程作为一种能够有效提高并行计算能力的技术,被广泛应用于图像、神经网络、和数据处理等领域。硬件多线程通过增加运算单元数量、维护更多并行执行的线程数量、增大用于存储命令操作数的寄存器堆的容量、以及采用更高带宽的外存等方式,有效提高计算速度。
当前的命令分发方式存在分发效率低的问题。
发明内容
本公开实施例至少提供一种命令分发方法、命令分发器、芯片以及电子设备。
第一方面,本公开实施例提供了命令分发方法,包括:从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组;其中,所述第一目标寄存器组,与最近至少一个历史处理周期确定的第二目标寄存器组不同;
从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程;向对应运算单元分发确定的目标线程分别对应的命令。
一种可能的实施方式中,所述从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组,包括:在所述当前处理周期为奇数周期的情况下,将所述多个寄存器组中编号为奇数的寄存器组确定为所述第一目标寄存器组;在所述当前处理周期为偶数周期的情况下,将所述多个寄存器组中编号为偶数的寄存器组确定为所述第一目标寄存器组。
一种可能的实施方式中,还包括:根据所需操作数数量最多的运算单元的操作数的数量,确定寄存器的分组数量,并将寄存器划分成所述多个寄存器组。
一种可能的实施方式中,所述从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程,包括:基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态信息,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程,包括:从所述多个第一目标寄存器组分别对应的线程组中,确定命令执行状态信息为就绪状态的多个备选线程;从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程,包括:基于所述多个备选线程分别对应的待分发命令的优先级,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程,包括:基于所述多个备选线程分别对应的待分发命令的优先级以及待分发命令对应运算单元的占用状态,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,从所述当前处理周期至目标处理周期的每个处理周期,该多操作数待分发命令对应的第一目标寄存器组分别向该待分发命令对应运算单元分发对应的一个操作数;其中,所述目标处理周期与所述当前处理周期的周期数差值,与将所述多操作数数量减一相等。
一种可能的实施方式中,还包括:响应于为当前处理周期确定的目标线程对应的待分发命令中存在两个操作数的多操作数待分发命令,针对为当前处理周期确定的目标线程对应的待分发命令中存在的每个单操作数待分发命令,在当前处理周期的下一处理周期,为该单操作数待分发命令所在第一目标寄存器组确定就绪状态的另一个单操作数待分发命令。
一种可能的实施方式中,还包括:响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,确定所述多操作数待分发命令中操作数数量最多的多操作数待分发命令的操作数数量;针对为当前处理周期确定的目标线程对应的待分发命令中存在的操作数数量少于所述最多的操作数数量的每个其他待分发命令,从当前处理周期的下一个处理周期至所述第一目标寄存器组再次被调度的处理周期之前的每个处理周期,响应于存在其他待分发命令所在第一目标寄存器组空闲,从与该所在第一目标寄存器组对应的线程组中,为该所在第一目标寄存器组确定就绪状态的待分发命令;其中,所述就绪状态的待分发命令的操作数量不大于确定就绪状态的待分发命令所在处理周期至所述第一目标寄存器组再次被调度的处理周期包含的处理周期数量。
一种可能的实施方式中,还包括:获取所述运算单元在执行命令后生成的反馈信息;基于所述反馈信息,生成与所执行命令所属线程对应的命令执行状态信息。
一种可能的实施方式中,还包括:基于所述寄存器组的数量、以及当前正在执行的线程的数量,将所述当前正在执行的线程分组,得到每个所述寄存器组分别对应的线程组。
第二方面,本公开实施例提供一种命令分发器,包括:调度器、以及分发接口;
所述调度器,用于从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组;其中,所述第一目标寄存器组,与最近至少一个历史处理周期确定的第二目标寄存器组不同;从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程;
所述分发接口,用于向对应运算单元分发确定的目标线程分别对应的命令。
一种可能的实施方式中,所述调度器,在从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组时,用于:
在所述当前处理周期为奇数周期的情况下,将所述多个寄存器组中编号为奇数的寄存器组确定为所述第一目标寄存器组;
在所述当前处理周期为偶数周期的情况下,将所述多个寄存器组中编号为偶数的寄存器组确定为所述第一目标寄存器组。
一种可能的实施方式中,所述调度器,还用于:
根据所需操作数数量最多的运算单元的操作数的数量,确定寄存器的分组数量,并将寄存器划分成所述多个寄存器组。
一种可能的实施方式中,所述调度器,在从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态信息,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器,在基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
从所述多个第一目标寄存器组分别对应的线程组中,确定命令执行状态信息为就绪状态的多个备选线程;
从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器,在从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于所述多个备选线程分别对应的待分发命令的优先级,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器,在从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于所述多个备选线程分别对应的待分发命令的优先级以及待分发命令对应运算单元的占用状态,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器,在从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于多个所述备选线程分别对应的当前待分发命令的命令类型、以及所述运算单元的类型,从多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器,还用于:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,从所述当前处理周期至目标处理周期的每个处理周期,该多操作数待分发命令对应的第一目标寄存器组分别向该待分发命令对应运算单元分发对应的一个操作数;
其中,所述目标处理周期与所述当前处理周期的周期数差值,与将所述多操作数数量减一相等。
一种可能的实施方式中,所述调度器,还用于:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在两个操作数的多操作数待分发命令,针对为当前处理周期确定的目标线程对应的待分发命令中存在的每个单操作数待分发命令,在当前处理周期的下一处理周期,为该单操作数待分发命令所在第一目标寄存器组确定就绪状态的另一个单操作数待分发命令。
一种可能的实施方式中,所述的调度器,还用于:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,确定所述多操作数待分发命令中操作数数量最多的多操作数待分发命令的操作数数量;
针对为当前处理周期确定的目标线程对应的待分发命令中存在的操作数数量少于所述最多的操作数数量的每个其他待分发命令,从当前处理周期的下一个处理周期至所述第一目标寄存器组再次被调度的处理周期之前的每个处理周期,响应于存在其他待分发命令所在第一目标寄存器组空闲,从与该所在第一目标寄存器组对应的线程组中,为该所在第一目标寄存器组确定就绪状态的待分发命令;
其中,所述就绪状态的待分发命令的操作数量不大于确定就绪状态的待分发命令所在处理周期至所述第一目标寄存器组再次被调度的处理周期包含的处理周期数量。
一种可能的实施方式中,所述调度器,还用于:获取所述运算单元在执行命令后生成的反馈信息;
基于所述反馈信息,生成与所执行命令所属线程对应的命令执行状态信息。
一种可能的实施方式中,所述调度器,还用于:
基于所述寄存器组的数量、以及当前正在执行的线程的数量,将所述当前正在执行的线程分组,得到每个所述寄存器组分别对应的线程组。
第三方面,本公开实施例还提供一种芯片,控制器、命令分发器、以及运算器;
其中,所述控制器,用于获取多个线程分别对应的命令,并向所述命令分发器发送所述命令;
所述命令分发器,用于基于第一方面任一项所述的命令分发方法向所述运算器分发所述命令;
所述运算器,用于基于所述命令分发器分发的命令,从与所述命令对应的目标寄存器组中读取操作数,并基于所述操作数执行所述命令。
第四方面,本公开实施例还提供一种电子设备,包括上述第三方面所述的芯片。
第五方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行基于上述第一方面任一项所述的命令分发方法的步骤。
关于上述命令分发器、芯片以及电子设备的效果描述参见上述命令分发方法的说明,这里不再赘述。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种命令分发方法的流程图;
图2示出了本公开实施例所提供的命令分发装置的具体示例;
图3示出了本公开实施例所提供的利用命令分发装置进行命令分发的具体示例的示意图;
图4示出了本公开实施例所提供的一种命令分发器的结构示意图;
图5示出了本公开实施例所提供的一种芯片的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,在命令处理装置中,包括了:控制器、命令分发单元、以及多个运算单元。控制器获取命令流,并对命令流中的多个命令进行初步处理后,传输至命令分发单元;在命令分发单元将命令分发到运算单元后,执行不同命令的运算单元之间通过仲裁得到寄存器的读取权限,并在获取了寄存器的读取权限后,从寄存器中读取执行命令时所需要的操作数,然后基于读取的操作数,寄存器堆读取权限的仲裁也会引起一定的延迟,影响运算单元对命令的吞吐率,进而导致命令分发效率低的问题,造成执行单命令的的处理效率较低。
另外,命令被分发至命令分发单元后,若执行该命令所需要的操作数未准备就绪,该运算单元会切换到执行其他线程对应的命令;这就需要命令分发单元分发新到命令给运算单元,这造成了分发给运算单元的命令可能存在当前无法马上执行的命令(需要等待操作数准备就绪后方可执行),因此会导致命令分发的效率降低,造成命令的处理效率较低。
基于上述研究,本公开提供了一种命令分发方法,将寄存器堆中的寄存器分为多个寄存器组,且不同的寄存器组对应不同的线程组。在每个处理周期,通过确定多个第一目标寄存器组,并从与多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与多个第一目标寄存器组分别对应的目标线程,并向对应运算单元分发确定的目标线程分别对应的命令,使得在每个处理周期,每个线程组在每个处理周期,最多会被一个运算单元访问,因此接收到命令的运算单元之间不需要进行仲裁,就能够直接对对应的寄存器组进行访问,得到命令所需要的操作数,进而提升了命令分发的效率,提升对命令的处理效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种命令分发方法进行详细介绍,本公开实施例所提供的命令分发方法的执行主体一般为中央处理器(CentralProcessing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、人工智能(Artificial Intelligence,AI)芯片等命令处理装置。
在本公开实施例中,命令的操作数,为执行命令时需要从外部存储器中读取的数据;示例性的,例如命令为:对数据A和数据B进行乘法操作,则对应的命令操作数为数据A和数据B;又例如命令为利用卷积核F对待处理的特征图M进行卷积操作,则对应的命令操作数为特征图M与卷积核F。
下面对本公开实施例提供的命令分发方法加以说明。
参见图1所示,为本公开实施例提供的命令分发方法的流程图,所述方法包括步骤S101~S103,其中:
S101:从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组;其中,所述第一目标寄存器组,与最近至少一个历史处理周期确定的第二目标寄存器组不同;
S102:从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程;
S103:向对应运算单元分发确定的目标线程分别对应的命令。
本公开实施例通过将寄存器分为多个寄存器组,并在每个处理周期中,从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组,然后从与多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与多个第一目标寄存器组分别对应的目标线程,在向运算单元分发多个目标线程分别对应的命令后,由于在一个处理周期访问一个寄存器组的运算单元最多只有一个,因此接收到命令的运算单元之间不需要进行仲裁,就能够直接对对应的寄存器组进行访问,得到命令所需要的操作数,进而提升了命令分发的效率,提升对命令的处理效率。
下面对上述S101~S103分别加以详细说明。
在上述S101中,例如可以预先将多个寄存器划分为多个寄存器组,同时,将主机中当前有命令下发的线程也分为多个线程组,每个寄存器组对应一个线程组,针对每个线程组,该线程组中各个线程产生的命令对应的操作数,会被存储至与该线程组对应的寄存器组中的寄存器中。
此处,例如可以基于寄存器组的数量、以及当前正在执行的线程的数量,将所述当前正在执行的线程分组,得到每个所述寄存器组分别对应的线程组。
在从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组时,例如可以将多个寄存器组分为至少两个分组,每个分组中包括多个寄存器组。每个处理周期中,将其中一个分组包括的寄存器组,确定为该处理周期对应的第一目标寄存器组。在多个处理周期中,交替将不同分组中的寄存器组分别确定为多个处理周期对应目标寄存器组。
示例性的,可以为各个寄存器组进行编号,并为处理周期编号,预先确定寄存器组编号与处理周期编号之间的对应关系。例如:在处理周期中的偶数个处理周期,将编号为偶数的寄存器组确定为该偶数个处理周期对应的目标寄存器组;在处理周期中的奇数个处理周期,将编号为奇数的寄存器组确定为该奇数个处理周期对应的目标寄存器组。
此处,示例性的,将寄存器进行分组的数量,可以与执行的命令中所需要的操作数的数量相关;例如,若要执行的各个命令中,所需要的操作数的数量最多为2,则将寄存器组进行分组的数量也为2;若要执行的各个命令中,所需要的操作数的数量最多为3,则将寄存器组进行分组的数量为3。假设要执行的各个命令中,所需要的操作数的数量最多为n,也即,寄存器组的数量为n;这样,在第i个处理周期中,若将n个寄存器组中的第1个寄存器组作为目标寄存器组,对接收到需要操作数量为n的指令的运算单元而言,其在当前的第i个处理周期接收到命令后,会从在当前的第i个处理周期中从对应的第一目标寄存器组读取一个操作数,然后在随后的第i+1至第i+n-1个处理周期中,从对应的第一目标寄存器中剩下的n-1个操作数;而在随后的第i+1至第i+n-1个处理周期中,会分别将第2~第n个寄存器组作为第i+1至第i+n-1个处理周期分别对应的目标寄存器组,这样就避免运算单元对同一寄存器组进行访问的冲突。
针对上述S102,在确定了当前处理周期对应的多个第一目标寄存器组后,例如可以采用下述方式中至少一种方式从与所述多个第一目标寄存器组分别对应的线程组中,确定多个目标线程:
(1):针对各个第一目标寄存器组,按照循环的方式,为该第一目标寄存器组对应的线程组中的多个线程确定顺序,并按照该顺序,在不同的处理周期,将该线程组中的不同线程确定为该第一目标寄存器组对应的目标线程。
(2)针对各个第一目标寄存器组,将该第一目标寄存器组对应的线程组中,在当前处理周期存在命令的线程作为备选线程,并按照各个备选线程的优先级,将优先级最高的备选线程作为第一目标寄存器组在当前处理周期中的目标线程。
(3)基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态信息,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
此处,例如可以针对每个第一目标寄存器组,从该第一目标寄存器组对应的线程组中,确定命令执行状态信息为就绪状态的多个备选线程;从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
此处,任一线程对应的命令执行状态信息,例如包括:该线程最近分发给运算单元的命令是否被执行完毕,和/或,该线程对应当前待分发的命令所需的操作数是否已经准备完毕。
命令对应的操作数被准备完毕,例如是该命令依赖的其他命令产生的数据已经被存储至对应的寄存器中,和/或,已经将需要从外部存储器中读取的操作数已经被存储至对应的寄存器中。
若该线程最近分发给运算单元的命令被执行完毕,和/或,该线程对应的当前待分发的命令所需的操作数已经准备完毕,则认为该线程对应的命令执行状态信息为就绪状态,可以将该命令对应的线程作为目标线程。
在该种情况下,本公开另一实施例中,还包括:获取所述运算单元在执行命令后生成的反馈信息;基于所述反馈信息,生成与所执行命令所属线程对应的命令执行状态信息。
这样,能够使得命令分发器实时获知各个运算单元对命令的执行情况。
另外,在一种可能的实施方式中,上述第(3)种方式,能够为某个第一目标寄存器组确定的目标线程数量大于1,也可以结合各个线程分别对应的优先级、或者按照循环的方式,从多个满足(3)要求的线程中确定目标线程。
这里需要注意的是,可能存在某个处理周期中,某个第一目标寄存器组不存在目标线程的情况,也即,确定的目标线程的数量,少于第一目标积存器组的数量。
在从确定的多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,例如可以采用下述①~③中任一种:
①:基于所述多个备选线程分别对应的待分发命令的优先级,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
②:基于所述多个备选线程分别对应的待分发命令的优先级以及待分发命令对应运算单元的占用状态,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
此处,运算单元的占用状态,例如包括:在当前的处理周期已经为运算单元分配了具体的目标线程;和/或,运算单元在历史处理周期接收到、且未执行完毕的命令的数量达到预设数量。
示例性的,按照优先级由高到低的顺序,执行下述过程:
根据备选线程分别对应的待分发命令的优先级,确定至少一个优先级最高的待分发命令,然后基于优先级最高的待分发命令对应的运算单元的占用状态,为优先级最高的待分发命令确定是否能够将其分发至对应的运算单元;若能够将其分发至对应的运算单元,则将该优先级最高的待分发命令对应的备选线程确定为目标线程。若不能够将其分发至对应的运算单元,则不将该待分发指令对应的备选线程作为目标线程。
然后,从备选线程中,确定优先级次高的至少一个待分发命令,然后基于优先级次高的待分发命令对应的运算单元的占用状态,为优先级次高的待分发命令确定是否能够将其分发至对应的运算单元。
……
从备选线程中,确定优先级最低的至少一个待分发命令,然后基于优先级最低的待分发命令对应的运算单元的占用状态,为优先级最低的待分发命令确定是否能够将其分发至对应的运算单元。
基于上述过程,从多个备选线程中确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
③:基于所述多个备选线程分别对应的当前待分发命令的命令类型、以及所述运算单元的类型,从多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
此处,运算单元的类型不同,所能够处理的命令类型也不同。
示例性的,对于算数运算单元,能够处理的命令类型为算数运算命令;对于写地址运算单元,能够处理的命令类型为写地址命令;读地址运算单元,能够处理的命令类型为读地址命令;超越函数运算单元,能够处理的命令类型为超越函数处理。
确定目标线程时,会根据各个备选线程对应的待分发命令的类型,从备选线程中确定能够与各个运算单元的类型分别匹配的多个目标线程,进而将目标线程对应的当前待分发命令,分发给类型匹配的运算单元。
在本公开另一实施例中,对于某些命令,在执行该命令时需要的操作数的数量可以有不同。
目标线程对应的待分发命令分发给运算单元后,运算单元需要至少一个周期从对应的寄存器组中读取待分发命令对应的操作数;其中,读取操作数的周期数,与待分发命令对应的操作数的数量相同。
进而,响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,从所述当前处理周期至目标处理周期的每个处理周期,该多操作数待分发命令对应的第一目标寄存器组分别向该待分发命令对应运算单元分发对应的一个操作数;
其中,所述目标处理周期与所述当前处理周期的周期数差值,与将所述多操作数数量减一相等。
而对于操作数较少的待分发命令,运算单元可以在多个周期,分别从同一目标寄存器组中读取不同待分发命令分别对应的操作数。
进而,响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,确定所述多操作数待分发命令中操作数数量最多的多操作数待分发命令的操作数数量;
针对为当前处理周期确定的目标线程对应的待分发命令中存在的操作数数量少于所述最多的操作数数量的每个其他待分发命令,从当前处理周期的下一个处理周期至所述第一目标寄存器组再次被调度的处理周期之前的每个处理周期,响应于存在其他待分发命令所在第一目标寄存器组空闲,从与该所在第一目标寄存器组对应的线程组中,为该所在第一目标寄存器组确定就绪状态的待分发命令;
其中,所述就绪状态的待分发命令的操作数量不大于确定就绪状态的待分发命令所在处理周期至所述第一目标寄存器组再次被调度的处理周期包含的处理周期数量。
示例性的,例如可以响应于为当前处理周期确定的目标线程对应的待分发命令中存在两个操作数的多操作数待分发命令,针对为当前处理周期确定的目标线程对应的待分发命令中存在的每个单操作数待分发命令,在当前处理周期的下一处理周期,为该单操作数待分发命令所在第一目标寄存器组确定就绪状态的另一个单操作数待分发命令。
这样,能够在运算单元分别在多个处理周期,从多操作数待分发命令对应的第一目标寄存器组中读取多操作数待分发指令对应的多个操作数的同时,运算单元能够分别在多个处理周期从单操作数待分发命令对所在第一目标寄存器组读取不同单操作数待分发命令分别对应的操作数,在避免对同一目标寄存器组读取冲突的情况下,提升数据读取的效率。
在一种实施方式中,可以根据所需操作数数量最多的运算单元的操作数的数量,确定寄存器的分组数量N,这样在连续的N个处理周期,可以分别对N个寄存器组分别进行调度,那么在第i个处理周期对第i个寄存器组进行调度之后,还需要经过N-i个周期才会再次对该第i个寄存器组进行调度,又假设该第i个处理周期调度的寄存器组对应的命令恰好需要N个操作数,那么对于第i个寄存器组,可以在N个周期分别将N个操作数分发给对应的运算单元,而如果该第i个处理周期调度的寄存器组对应的命令需要的操作数数量少于N,则可以灵活调度操作数数量与距下次被调度之前的剩余周期数量相匹配的命令,提高数据读取效率。
参见图2和图3所示,本公开实施例还提供一种命令分发装置、和利用该命令分发装置进行命令分发的具体示例,在该示例中,包括命令分发器、以及与命令分发器连接的5个运算单元,5个运算单元分别为:
两个算数运算单元(Arithmetic and Logic Unit ALU),所处理的指令需要两个操作数。
一个写地址运算单元(Store Unit,ST),所处理的指令需要两个操作数。
一个读地址运算单元(Load Unit,LD),所处理的指令需要一个操作数。
一个超越函数运算单元(Tensor Function Unit,TFU),所处理的指令需要两个一个操作数。线程共有64个,分别为线程0~线程63,8个寄存器组(Bank),分别为Bank0~Bank7、以及5个运算单元。每个寄存器组中分配8个线程。
每个Bank只有一组读通路,在一个处理周期中,不同的运算单元访问相同的寄存器组会发生冲突,不同运算单元访问不同的Bank不会发生冲突。
对于有两个操作数的指令,需要在同一个Bank中分两个周期进行操作数的读取。
在奇数周期,将编号为1、3、5、7的寄存器组作为第一寄存器组。
从分配到每个编号为偶数的Bank中的8个线程中,分别选出有效且优先级最高的ALU、ST、LD、TFU指令。
从这些编号为偶数的Bank中,先选择两个优先级最高的ALU指令并分发。
在ALU指令对应的bank被占用的情况下,从剩余的bank中选择出ST指令并分发。
在ALU、ST指令的bank被占用的情况下,从剩余的bank中选择出LD指令并分发。
由于ALU、ST指令是两操作数,在下一周期仍需从相同bank读去操作数,所以在ALU、ST指令的bank被占用的情况下,从剩余的bank中选择出TFU指令,并在下一个处理周期将其分发。
偶数周期分发的两操作数指令需要在下一个奇数周期继续读取相同偶数bank的指令,但由于下一周期只会分发奇数bank的指令,所以不会出现bank冲突问题。对于奇数周期的调度方式同理。
如图3所示:
A:在第0个处理周期,确定的Bank分别为:Bank0、Bank2、Bank4和Bank6。
其中,为Bank0确定的命令为ALU命令,且从该Bank0中读取操作数的运算单元为ALU0,并在第0个处理周期,将ALU命令分发给ALU0。在第0个处理周期,和第1个处理周期,运算单元ALU0分别从Bank0中读取第一操作数ALU0_R0,和第二操作数ALU0_R1。
为Bank2确定的命令为ST命令,并在第0个处理周期,将ST命令分发给ST单元。从该Bank2中读取操作数的运算单元为ST,且在第0个处理周期,和第1个处理周期,运算单元ST分别从Bank2中读取第一操作数ST_R0,和第二操作数ST_R1。
为Bank4确定的命令为LD命令,和TFU命令,且从该Bank4中读取操作数的运算单元为LD和TFU。在第0个处理周期,将LD命令分发给运算单元LD,运算单元LD从Bank4中读取LD命令对应的操作数;在第1个处理周期,将TFU命令分发给运算单元TFU,运算单元TFU从Bank4中读取TFU命令对应的操作数。
为Bank6确定的命令为ALU命令,并在第0个处理周期,将ALU命令分发给ALU单元。从该Bank6中读取操作数的运算单元为ALU,且在第0个处理周期,和第1个处理周期,运算单元ALU分别从Bank6中读取第一操作数ALU1_R0,和第二操作数ALU1_R1。
B:在第1个处理周期,确定的Bank分别为:Bank1、Bank3、Bank5和Bank6。
为Bank1确定的命令为ST命令,并在第1个处理周期,将ST命令分发给ST单元。从该Bank1中读取操作数的运算单元为ST,且在第1个处理周期,和第2个处理周期,运算单元ST分别从Bank1中读取第一操作数ST_R0,和第二操作数ST_R1。
为Bank3确定的命令为ALU命令,且从该Bank3中读取操作数的运算单元为ALU0,并在第1个处理周期,将ALU命令分发给ALU0。在第2个处理周期和第1个处理周期,运算单元ALU0分别从Bank3中读取第一操作数ALU0_R0,和第二操作数ALU0_R1。
为Bank5确定的命令为ALU命令,并在第1个处理周期,将ALU命令分发给ALU单元。从该Bank5中读取操作数的运算单元为ALU1,且在第1个处理周期,和第2个处理周期,运算单元ALU1分别从Bank5中读取第一操作数ALU1_R0,和第二操作数ALU1_R1。
为Bank7确定的命令为LD命令,和TFU命令,且从该Bank7中读取操作数的运算单元为LD和TFU。在第1个处理周期,将LD命令分发给运算单元LD,运算单元LD从Bank7中读取LD命令对应的操作数;在第2个处理周期,将TFU命令分发给运算单元TFU,运算单元TFU从Bank7中读取TFU命令对应的操作数。
然后是在第3个处理周期、第4个处理周期,直至第8个处理周期,进而通过该方式,在同一处理周期,保证每个寄存器组仅有一个运算单元访问,进而避免了由于多个运算单元在同一处理周期访问同一寄存器组导致的数据冲突,提升命令分发的效率,进而提升对命令的处理效率。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与命令分发方法对应的命令分发器,由于本公开实施例中的命令分发器解决问题的原理与本公开实施例上述命令分发方法相似,因此命令分发器的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本公开实施例提供的一种命令分发器的示意图,所述命令分发器包括:调度器41、以及分发接口42;
所述调度器41,用于从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组;其中,所述第一目标寄存器组,与最近至少一个历史处理周期确定的第二目标寄存器组不同;从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程;
所述分发接口42,用于向对应运算单元分发确定的目标线程分别对应的命令。
一种可能的实施方式中,所述调度器41,在从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组时,用于:
在所述当前处理周期为奇数周期的情况下,将所述多个寄存器组中编号为奇数的寄存器组确定为所述第一目标寄存器组;
在所述当前处理周期为偶数周期的情况下,将所述多个寄存器组中编号为偶数的寄存器组确定为所述第一目标寄存器组。
一种可能的实施方式中,所述调度器41,还用于:
根据所需操作数数量最多的运算单元的操作数的数量,确定寄存器的分组数量,并将寄存器划分成所述多个寄存器组。
一种可能的实施方式中,所述调度器41,在从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态信息,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器41,在基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
从所述多个第一目标寄存器组分别对应的线程组中,确定命令执行状态信息为就绪状态的多个备选线程;
从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器41,在从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于所述多个备选线程分别对应的待分发命令的优先级,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器41,在从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于所述多个备选线程分别对应的待分发命令的优先级以及待分发命令对应运算单元的占用状态,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器41,在从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于多个所述备选线程分别对应的当前待分发命令的命令类型、以及所述运算单元的类型,从多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
一种可能的实施方式中,所述调度器41,还用于:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,从所述当前处理周期至目标处理周期的每个处理周期,该多操作数待分发命令对应的第一目标寄存器组分别向该待分发命令对应运算单元分发对应的一个操作数;
其中,所述目标处理周期与所述当前处理周期的周期数差值,与将所述多操作数数量减一相等。
一种可能的实施方式中,所述调度器41,还用于:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在两个操作数的多操作数待分发命令,针对为当前处理周期确定的目标线程对应的待分发命令中存在的每个单操作数待分发命令,在当前处理周期的下一处理周期,为该单操作数待分发命令所在第一目标寄存器组确定就绪状态的另一个单操作数待分发命令。
一种可能的实施方式中,所述的调度器41,还用于:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,确定所述多操作数待分发命令中操作数数量最多的多操作数待分发命令的操作数数量;
针对为当前处理周期确定的目标线程对应的待分发命令中存在的操作数数量少于所述最多的操作数数量的每个其他待分发命令,从当前处理周期的下一个处理周期至所述第一目标寄存器组再次被调度的处理周期之前的每个处理周期,响应于存在其他待分发命令所在第一目标寄存器组空闲,从与该所在第一目标寄存器组对应的线程组中,为该所在第一目标寄存器组确定就绪状态的待分发命令;
其中,所述就绪状态的待分发命令的操作数量不大于确定就绪状态的待分发命令所在处理周期至所述第一目标寄存器组再次被调度的处理周期包含的处理周期数量。
一种可能的实施方式中,所述调度器41,还用于:获取所述运算单元在执行命令后生成的反馈信息;
基于所述反馈信息,生成与所执行命令所属线程对应的命令执行状态信息。
一种可能的实施方式中,所述调度器41,还用于:
基于所述寄存器组的数量、以及当前正在执行的线程的数量,将所述当前正在执行的线程分组,得到每个所述寄存器组分别对应的线程组。
关于命令分发器中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
另外,本公开实施例提供的命令分发器可以为能够实现本公实施例提供的命令分发方法的芯片。
本公开实施例还提供了一种芯片,如图5所示,包括:控制器51、命令分发器52、以及运算器53;
其中,所述控制器51,用于获取多个线程分别对应的命令,并向所述命令分发器52发送所述命令;
所述命令分发器52,用于基于本公开任一实施例提供的命令分发方法向所述运算器53分发所述命令;
所述运算器53,用于从与所述命令对应的第一目标寄存器组中读取操作数,并基于所述操作数执行所述命令。
上述命令执行设备的具体执行命令的具体过程可以参考本公开实施例中所述的命令分发方法的步骤,此处不再赘述。
本公开实施例还提供一种电子设备,包括本公开任一实施例提供的芯片。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的命令分发方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的命令分发方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个运算单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。
Claims (29)
1.一种命令分发方法,其特征在于,包括:
从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组;其中,所述第一目标寄存器组,与最近至少一个历史处理周期确定的第二目标寄存器组不同;
从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程;
向对应运算单元分发确定的目标线程分别对应的命令。
2.根据权利要求1所述的命令分发方法,其特征在于,所述从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组,包括:
在所述当前处理周期为奇数周期的情况下,将所述多个寄存器组中编号为奇数的寄存器组确定为所述第一目标寄存器组;
在所述当前处理周期为偶数周期的情况下,将所述多个寄存器组中编号为偶数的寄存器组确定为所述第一目标寄存器组。
3.根据权利要求1所述的命令分发方法,其特征在于,还包括:
根据所需操作数数量最多的运算单元的操作数的数量,确定寄存器的分组数量,并将寄存器划分成所述多个寄存器组。
4.根据权利要求1-3任一项所述的命令分发方法,其特征在于,所述从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程,包括:
基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态信息,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
5.根据权利要求4所述的命令分发方法,其特征在于,所述基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程,包括:
从所述多个第一目标寄存器组分别对应的线程组中,确定命令执行状态信息为就绪状态的多个备选线程;
从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
6.根据权利要求5所述的命令分发方法,其特征在于,所述从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程,包括:
基于所述多个备选线程分别对应的待分发命令的优先级,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
7.根据权利要求5所述的命令分发方法,其特征在于,所述从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程,包括:
基于所述多个备选线程分别对应的待分发命令的优先级以及待分发命令对应运算单元的占用状态,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
8.根据权利要求5所述的命令分发方法,其特征在于,所述从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程,包括:
基于多个所述备选线程分别对应的当前待分发命令的命令类型、以及所述运算单元的类型,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
9.根据权利要求1-8任一项所述的命令分发方法,其特征在于,还包括:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,从所述当前处理周期至目标处理周期的每个处理周期,该多操作数待分发命令对应的第一目标寄存器组分别向该待分发命令对应运算单元分发对应的一个操作数;
其中,所述目标处理周期与所述当前处理周期的周期数差值,与将所述多操作数数量减一相等。
10.根据权利要求1-9任一项所述的命令分发方法,其特征在于,还包括:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在两个操作数的多操作数待分发命令,针对为当前处理周期确定的目标线程对应的待分发命令中存在的每个单操作数待分发命令,在当前处理周期的下一处理周期,为该单操作数待分发命令所在第一目标寄存器组确定就绪状态的另一个单操作数待分发命令。
11.根据权利要求1-10任一项所述的命令分发方法,其特征在于,还包括:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,确定所述多操作数待分发命令中操作数数量最多的多操作数待分发命令的操作数数量;
针对为当前处理周期确定的目标线程对应的待分发命令中存在的操作数数量少于所述最多的操作数数量的每个其他待分发命令,从当前处理周期的下一个处理周期至所述第一目标寄存器组再次被调度的处理周期之前的每个处理周期,响应于存在其他待分发命令所在第一目标寄存器组空闲,从与该所在第一目标寄存器组对应的线程组中,为该所在第一目标寄存器组确定就绪状态的待分发命令;
其中,所述就绪状态的待分发命令的操作数量不大于确定就绪状态的待分发命令所在处理周期至所述第一目标寄存器组再次被调度的处理周期包含的处理周期数量。
12.根据权利要求4所述的命令分发方法,其特征在于,还包括:获取所述运算单元在执行命令后生成的反馈信息;
基于所述反馈信息,生成与所执行命令所属线程对应的命令执行状态信息。
13.根据权利要求1-12任一项所述的命令分发方法,其特征在于,还包括:
基于所述寄存器组的数量、以及当前正在执行的线程的数量,将所述当前正在执行的线程分组,得到每个所述寄存器组分别对应的线程组。
14.一种命令分发器,其特征在于,包括:调度器、以及分发接口;
所述调度器,用于从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组;其中,所述第一目标寄存器组,与最近至少一个历史处理周期确定的第二目标寄存器组不同;从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程;
所述分发接口,用于向对应运算单元分发确定的目标线程分别对应的命令。
15.根据权利要求14所述的命令分发器,其特征在于,所述调度器,在从多个寄存器组中确定当前处理周期对应的多个第一目标寄存器组时,用于:
在所述当前处理周期为奇数周期的情况下,将所述多个寄存器组中编号为奇数的寄存器组确定为所述第一目标寄存器组;
在所述当前处理周期为偶数周期的情况下,将所述多个寄存器组中编号为偶数的寄存器组确定为所述第一目标寄存器组。
16.根据权利要求14所述的命令分发器,其特征在于,所述调度器,还用于:
根据所需操作数数量最多的运算单元的操作数的数量,确定寄存器的分组数量,并将寄存器划分成所述多个寄存器组。
17.根据权利要求14-16任一项所述的命令分发器,其特征在于,所述调度器,在从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态信息,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
18.根据权利要求17所述的命令分发器,其特征在于,所述调度器,在基于确定的所述多个第一目标寄存器组分别对应的线程组中各个线程的命令执行状态,从与所述多个第一目标寄存器组分别对应的线程组中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
从所述多个第一目标寄存器组分别对应的线程组中,确定命令执行状态信息为就绪状态的多个备选线程;
从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
19.根据权利要求18所述的命令分发器,其特征在于,所述调度器,在从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于所述多个备选线程分别对应的待分发命令的优先级,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
20.根据权利要求18所述的命令分发器,其特征在于,所述调度器,在从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于所述多个备选线程分别对应的待分发命令的优先级以及待分发命令对应运算单元的占用状态,从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
21.根据权利要求18所述的命令分发器,其特征在于,所述调度器,在从所述多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程时,用于:
基于多个所述备选线程分别对应的当前待分发命令的命令类型、以及所述运算单元的类型,从多个备选线程中,确定在当前处理周期与所述多个第一目标寄存器组分别对应的目标线程。
22.根据权利要求14-21任一项所述的命令分发器,其特征在于,所述调度器,还用于:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,从所述当前处理周期至目标处理周期的每个处理周期,该多操作数待分发命令对应的第一目标寄存器组分别向该待分发命令对应运算单元分发对应的一个操作数;
其中,所述目标处理周期与所述当前处理周期的周期数差值,与将所述多操作数数量减一相等。
23.根据权利要求14-22任一项所述的命令分发器,其特征在于,所述调度器,还用于:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在两个操作数的多操作数待分发命令,针对为当前处理周期确定的目标线程对应的待分发命令中存在的每个单操作数待分发命令,在当前处理周期的下一处理周期,为该单操作数待分发命令所在第一目标寄存器组确定就绪状态的另一个单操作数待分发命令。
24.根据权利要求14-23任一项所述的命令分发器,其特征在于,所述的调度器,还用于:
响应于为当前处理周期确定的目标线程对应的待分发命令中存在多于一个操作数的多操作数待分发命令,确定所述多操作数待分发命令中操作数数量最多的多操作数待分发命令的操作数数量;
针对为当前处理周期确定的目标线程对应的待分发命令中存在的操作数数量少于所述最多的操作数数量的每个其他待分发命令,从当前处理周期的下一个处理周期至所述第一目标寄存器组再次被调度的处理周期之前的每个处理周期,响应于存在其他待分发命令所在第一目标寄存器组空闲,从与该所在第一目标寄存器组对应的线程组中,为该所在第一目标寄存器组确定就绪状态的待分发命令;
其中,所述就绪状态的待分发命令的操作数量不大于确定就绪状态的待分发命令所在处理周期至所述第一目标寄存器组再次被调度的处理周期包含的处理周期数量。
25.根据权利要求17所述的命令分发器,其特征在于,所述调度器,还用于:获取所述运算单元在执行命令后生成的反馈信息;
基于所述反馈信息,生成与所执行命令所属线程对应的命令执行状态信息。
26.根据权利要求14-25任一项所述的命令分发器,其特征在于,所述调度器,还用于:
基于所述寄存器组的数量、以及当前正在执行的线程的数量,将所述当前正在执行的线程分组,得到每个所述寄存器组分别对应的线程组。
27.一种芯片,其特征在于,包括:控制器、命令分发器、以及运算器;
其中,所述控制器,用于获取多个线程分别对应的命令,并向所述命令分发器发送所述命令;
所述命令分发器,用于基于权利要求1-13任一项所述的命令分发方法向所述运算器分发所述命令;
所述运算器,用于基于所述命令分发器分发的命令,从与所述命令对应的目标寄存器组中读取操作数,并基于所述操作数执行所述命令。
28.一种电子设备,其特征在于,包括如权利要求27所述的芯片。
29.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至13任一项所述的命令分发方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110323622.8A CN115129369A (zh) | 2021-03-26 | 2021-03-26 | 命令分发方法、命令分发器、芯片以及电子设备 |
PCT/CN2021/120535 WO2022198955A1 (zh) | 2021-03-26 | 2021-09-26 | 命令分发方法、命令分发器、芯片以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110323622.8A CN115129369A (zh) | 2021-03-26 | 2021-03-26 | 命令分发方法、命令分发器、芯片以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115129369A true CN115129369A (zh) | 2022-09-30 |
Family
ID=83374196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110323622.8A Pending CN115129369A (zh) | 2021-03-26 | 2021-03-26 | 命令分发方法、命令分发器、芯片以及电子设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115129369A (zh) |
WO (1) | WO2022198955A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9798544B2 (en) * | 2012-12-10 | 2017-10-24 | Nvidia Corporation | Reordering buffer for memory access locality |
TWI564807B (zh) * | 2015-11-16 | 2017-01-01 | 財團法人工業技術研究院 | 排程方法及應用其的處理裝置 |
CN109408118B (zh) * | 2018-09-29 | 2024-01-02 | 古进 | Mhp异构多流水线处理器 |
CN111290786B (zh) * | 2018-12-12 | 2022-05-06 | 展讯通信(上海)有限公司 | 一种信息处理方法、设备及存储介质 |
CN111459543B (zh) * | 2019-01-21 | 2022-09-13 | 上海登临科技有限公司 | 一种管理寄存器文件单元的方法 |
CN111258657B (zh) * | 2020-01-23 | 2020-11-20 | 上海燧原智能科技有限公司 | 流水线控制方法及相关设备 |
-
2021
- 2021-03-26 CN CN202110323622.8A patent/CN115129369A/zh active Pending
- 2021-09-26 WO PCT/CN2021/120535 patent/WO2022198955A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022198955A1 (zh) | 2022-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7418576B1 (en) | Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations | |
US8086806B2 (en) | Systems and methods for coalescing memory accesses of parallel threads | |
US9710306B2 (en) | Methods and apparatus for auto-throttling encapsulated compute tasks | |
US9742869B2 (en) | Approach to adaptive allocation of shared resources in computer systems | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
CN103226463A (zh) | 用于使用预解码数据调度指令的方法和装置 | |
US8392669B1 (en) | Systems and methods for coalescing memory accesses of parallel threads | |
CN104050033A (zh) | 用于有索引的屏障的硬件调度的***和方法 | |
CN103197916A (zh) | 用于源操作数收集器高速缓存的方法和装置 | |
CN110308982B (zh) | 一种共享内存复用方法及装置 | |
CN103279379A (zh) | 用于在没有指令解码的情况下调度指令的方法和装置 | |
CN104050032A (zh) | 用于有条件的屏障和急迫的屏障的硬件调度的***和方法 | |
US9715413B2 (en) | Execution state analysis for assigning tasks to streaming multiprocessors | |
CN103207810A (zh) | 计算任务状态封装 | |
KR20150056373A (ko) | 순차적 수행 방식의 멀티스레드 프로세싱 장치 및 방법 | |
JP7320536B2 (ja) | マルチカーネル波面スケジューラ | |
CN110569122B (zh) | 多处理器***、多核处理设备及其操作方法 | |
US20160267621A1 (en) | Graphic processing system and method thereof | |
Lim et al. | ODMDEF: on-device multi-DNN execution framework utilizing adaptive layer-allocation on general purpose cores and accelerators | |
CN103218259A (zh) | 计算任务的调度和执行 | |
KR20220001811A (ko) | 에너지 효율을 개선할 수 있는 그래픽 처리 장치를 위한 메모리 컨트롤러 및 이의 메모리 제어 방법 | |
US11941440B2 (en) | System and method for queuing commands in a deep learning processor | |
CN110825502B (zh) | 神经网络处理器和用于神经网络处理器的任务调度方法 | |
CN115129369A (zh) | 命令分发方法、命令分发器、芯片以及电子设备 | |
US8473948B1 (en) | Method for synchronizing independent cooperative thread arrays running on a graphics processing unit |
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 |