CN116594765A - 一种指令处理方法、指令处理电路、处理器及电子设备 - Google Patents
一种指令处理方法、指令处理电路、处理器及电子设备 Download PDFInfo
- Publication number
- CN116594765A CN116594765A CN202310475826.2A CN202310475826A CN116594765A CN 116594765 A CN116594765 A CN 116594765A CN 202310475826 A CN202310475826 A CN 202310475826A CN 116594765 A CN116594765 A CN 116594765A
- Authority
- CN
- China
- Prior art keywords
- target
- thread bundle
- instruction
- thread
- bundle
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000008569 process Effects 0.000 claims abstract description 20
- 230000006870 function Effects 0.000 description 15
- 239000011159 matrix material Substances 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本申请提供一种指令处理方法、指令处理电路、处理器及电子设备,涉及处理器技术领域,指令处理方法包括:从争抢目标资源的各线程束中,选择出目标线程束,以使所述目标线程束使用所述目标资源处理与所述目标资源对应的目标类型的指令;在所述目标线程束的当前指令属于所述目标类型的指令时,保持目标线程束连续使用所述目标资源;在所述目标线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束。本申请实施例的方案可以赋予每一个线程束能够连续不停地处理同一类资源所对应的指令的能力,从而可以满足kernel程序的soft‑clause需求。
Description
技术领域
本申请涉及处理器技术领域,具体而言,涉及一种指令处理方法、指令处理电路、处理器及电子设备。
背景技术
在许多高计算性能的处理器(例如GPU(Graphics Processing Unit,图形处理器)、AI(Artificial Intelligence,人工智能)处理器等)中,软件kernel(内核)程序有soft-clause需求(对于软件程序而言,尤其是某些用户编写的场景,为了达到高效运行kernel的目的,会刻意将部分程序段编写成同类型指令连续的形式,称之为soft-clause。对连续的同类型指令连续处理的需求称之为soft-clause需求),即针对一个线程束(warp)在运行其指令程序的过程中,要求具有同一类型的指令段能够连续处理,不被其他线程束打断。这里同一类型的指令指的是比如memory load操作指令(该指令操作会请求对memory(存储器)进行操作),ALU(Arithmetic And Logic Unit,算数逻辑单元)计算操作指令等线程执行的指令。通过连续处理memory load操作指令能够保证达到或者尽早地有更多的memory请求发出去的效果,通过连续处理ALU计算操作指令可以连续地利用ALU进行计算。这样,不同的线程束相互耦合起来处理不同类型的指令,可以达到互补的效果。比如,线程束0期望先连续处理8个memory指令请求,再处理8个ALU指令请求,而与此同时,线程束1期望先能够连续处理8个ALU指令请求,再处理8个memory指令请求,那么线程束0和线程束1之间就恰好互补,两者相互争抢资源的概率就能极大的降低。
而目前在高计算性能的处理器中,对于资源的分配通常是采用轮询的方式或者年龄矩阵的方式(年龄矩阵的方式是指按照线程束的诞生先后顺序进行分配,优先将资源分配给先诞生的线程束的方式)进行分配的。但是面对kernel程序的soft-clause需求,以上两种方式无法满足该需求,无法保证一个线程束连续处理同类型指令。
发明内容
本申请实施例的目的在于提供一种指令处理方法、指令处理电路、处理器及电子设备,用以满足kernel程序的soft-clause需求。
本申请实施例提供了一种指令处理方法,包括:从争抢目标资源的各线程束中,选择出目标线程束,以使所述目标线程束使用所述目标资源处理与所述目标资源对应的目标类型的指令;在所述目标线程束的当前指令属于所述目标类型的指令时,保持所述目标线程束连续使用所述目标资源;在所述目标线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束。
在上述实现方式中,在针对目标资源选出目标线程束,当目标线程束使用目标资源处理当前的指令后,不再立即按照轮询的方式或者年龄矩阵的方式进行新的目标线程束的选取,而是等待该目标线程束继续使用该目标资源处理当前的指令,直至该目标线程束的当前指令不属于目标类型的指令(即不属于需要使用该目标资源进行处理的指令)或该目标线程束中不存在待执行的指令时,再重新从争抢该目标资源的各线程束中,选择出新的目标线程束。相反,在目标线程束的当前指令属于目标类型的指令时,则保持目标线程束连续使用所述目标资源。这样,对于每一个线程束而言,就赋予了其可以连续不停地处理同一类资源所对应的指令的能力,从而可以满足kernel程序的soft-clause需求。
进一步地,所述方法还包括:在选择出目标线程束时,为所述目标线程束分配目标令牌;其中,所述目标令牌为与所述目标类型的指令对应的令牌;在所述目标线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,取消为所述目标线程束分配的所述目标令牌;相应的,在所述目标线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束,包括:判断是否存在线程束具有所述目标令牌;在不存在线程束具有所述目标令牌时,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束,并为新的目标线程束分配所述目标令牌。
在上述实现方式中,通过为线程束分配目标令牌的方式,将线程束对于目标资源的占用与目标令牌关联了起来,从而可以基于是否存在线程束具有目标令牌来确定是否需要重新从争抢目标资源的各线程束中选择出新的目标线程束,保证方案可正确被执行。
进一步地,所述方法还包括:在为所述目标线程束分配目标令牌之前,确定所述目标线程束启用了连续处理功能。
进一步地,所述方法还包括:若所述目标线程束未启用所述连续处理功能,则不为所述目标线程束分配所述目标令牌。
在上述实现方式中,通过设置连续处理功能,通过判断选择出的目标线程束是否启用了连续处理功能,从而在启用了连续处理功能后才分配目标令牌给该目标线程束,使得该目标线程束具有连续使用目标资源的能力,而在该目标线程束未启用连续处理功能时,不分配目标令牌给该目标线程束,这样就可以使得用户或程序可以根据需要灵活地赋予各线程束对于目标资源的连续使用权限,从而可以灵活的让用户或程序强化或者弱化某些线程束的指令处理需求(即使用目标资源处理指令的需求),使得本申请实施例的方案更具有灵活性和普适性。
本申请实施例还提供了一种指令处理电路,包括:仲裁器,与各线程束连接,用于从争抢目标资源的各所述线程束中,选择出目标线程束,以使所述目标线程束使用所述目标资源处理与所述目标资源对应的目标类型的指令;其中,所述目标资源为所述仲裁器所仲裁的资源;所述仲裁器还用于在所述目标线程束的当前指令属于所述目标类型的指令时关闭,以保持所述目标线程束连续使用所述目标资源;控制电路,分别与各所述线程束连接,并与所述仲裁器连接,用于在所述目标线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,触发所述仲裁器重新从争抢所述目标资源的各线程束中,选择出新的目标线程束。
在上述电路中,基于仲裁器可以实现目标线程束的仲裁(即选取),而通过控制电路可以对目标线程束中的指令情况进行确定,从而可以有效触发仲裁器的工作,从而可以实现在针对目标资源选出目标线程束,当目标线程束使用目标资源处理当前的指令后,不再立即按照轮询的方式或者年龄矩阵的方式进行新的目标线程束的选取,而是等待该目标线程束继续使用该目标资源处理当前的指令,直至该目标线程束的当前指令不属于目标类型的指令(即不属于需要使用该目标资源进行处理的指令)或该目标线程束中不存在待执行的指令时,再重新从争抢该目标资源的各线程束中,选择出新的目标线程束的功能。这样,通过上述指令处理电路就可以赋予每一个线程束能够连续不停地处理同一类资源所对应的指令的能力,从而可以满足kernel程序的soft-clause需求。
进一步地,所述仲裁器为多个,不同所述仲裁器用于仲裁不同的资源;所述控制电路包括:多个标志寄存器,每个标志寄存器与一个所述仲裁器连接,并与一个所述线程束连接;所述标志寄存器用于在所连接的线程束被任意一个所述仲裁器确定为目标线程束时设置寄存器值为第一目标值,在所连接的线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时设置寄存器值为第二目标值。
在上述实现方式中,通过标志寄存器与仲裁器连接,从而基于标志寄存器中的寄存器值的不同可以有效表征出争抢该仲裁器的各线程束是否分配有目标令牌(即第一目标值),当具有令牌(第一目标值)标志寄存器的目标线程束使用目标资源处理当前的指令后,不再立即按照轮询的方式或者年龄矩阵的方式进行重新进行新的目标线程束的选取,而是保持该目标线程束继续使用该目标资源处理目标类型的指令,直至该目标线程束的当前指令不属于目标类型的指令(即不属于需要使用该目标资源进行处理的指令)或该目标线程束中不存在待执行的指令时,再重新按照轮询方式或者年龄矩阵方式从争抢该目标资源的各线程束中,选择出新的目标线程束,同时将新的目标线程束的标志寄存器设置为第一目标值,将其他线程束设置为第二目标值,从而保证方案可正确被执行。
进一步地,在任意一个仲裁器确定出目标线程束时,争抢该仲裁器所仲裁的资源的各所述线程束中,除所述目标线程束外的各所述线程束所连接的标志寄存器的寄存器值保持所述第二目标值;所述仲裁器具体用于在所述目标线程束的当前指令属于所述目标类型的指令,且所连接的所述标志寄存器的寄存器值为第一目标值时关闭,以保持所述目标线程束连续使用所述目标资源。
在上述实现方式中,将除目标线程束外的各线程束对应的标志寄存器的寄存器值保持第二目标值,可以保证一种资源在同一时刻最多仅有一个标志寄存器的值为第一目标值,从而可以有效防止该资源的仲裁器因错误地存在多个标志寄存器的值为第一目标值而导致长期暂停工作的情况,防止出现电路故障。
进一步地,所述控制电路包括:多个状态寄存器,分别与所述仲裁器连接,且每个所述状态寄存器与一个所述线程束连接;所述仲裁器具体用于:在任意一个状态寄存器的值为第三目标值,且该状态寄存器所连接的线程束为目标线程束,则:若该线程束的当前指令属于所述目标类型的指令,保持所述目标线程束连续使用所述目标资源;若该线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束;以及,在任意一个状态寄存器的值为第四目标值,且该状态寄存器所连接的线程束为目标线程束时在所述目标线程束的当前指令处理完毕后,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束。
在上述实现方式中,通过设置状态寄存器的方式,可以通过配置各线程束对应的状态寄存器的值的方式,实现对于各线程束在被选中为目标线程束后,是否可以连续地使用目标资源的控制,即实现了可以控制是否赋予各线程束对于目标资源的连续使用权限的能力,从而可以灵活的让用户或程序强化或者弱化某些线程束的指令处理需求,使得本申请实施例的方案更具有灵活性和普适性。
本申请实施例还提供了一种处理器,包括前述任一种的指令处理电路。
本申请实施例还提供了一种电子设备,包括前述处理器。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定。
图1为本申请实施例提供的一种指令处理电路的基本结构示意图;
图2为本申请实施例提供的一种较具体的指令处理电路的基本结构示意图;
图3-1为本申请实施例提供的一种具体的指令处理电路的基本结构示意图;
图3-2为本申请实施例在图3-1的基础上提供的一种更具体的指令处理电路的基本结构示意图;
图4为本申请实施例提供的一种示例性的指令处理电路的基本结构示意图;
图5为本申请实施例提供的第二种示例性的指令处理电路的基本结构示意图;
图6为本申请实施例提供的第三种示例性的指令处理电路的基本结构示意图;
图7为本申请实施例提供的一种指令处理方法的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
为了达到高效运行kernel的目的,存在将部分程序段编写成同类型指令连续的形式,并希望这段同类型指令能够连续处理,而不被其他线程束打断(称之为soft-clause需求)。在处理器中,一段kernel程序通常是分配给一个线程束进行处理,因此基于传统的轮询方式或者年龄矩阵方式进行线程束仲裁时,连续的同类型指令往往并不能连贯的被执行,会被其他线程束打断,从而无法满足soft-clause需求。为了满足soft-clause需求,本申请实施例中提供了一种指令处理电路以及配套的指令处理方法。
可以参见图1所示,图1为本申请实施例中提供的一种指令处理电路的基本结构示意图,包括线程束、仲裁器和控制电路。
可以理解,在处理器中,SP(Streaming Processor,流处理器)是最基本的处理单元,具体的指令基本都是在SP上处理的。而多个SP加上其他的一些资源(例如存储资源、共享内存、寄储器等)组成一个SM(Streaming Multiprocessor,流式多处理机)。而一个SM中的所有SP会分成多个warp(线程束),warp中的SP可以同时工作,执行相同的指令。也即线程束用于执行指令。
仲裁器,与各线程束连接,用于从争抢目标资源的各线程束中,选择出目标线程束,以使目标线程束使用目标资源处理与目标资源对应的目标类型的指令。
可以理解,不同的指令需要用到不同的资源,例如memory load操作指令需要用到memory资源,而ALU计算操作指令则需要用到ALU资源。而对于不同资源的仲裁,则可以用到不同的仲裁器。也即,在本申请实施例中,仲裁器可以有多个,例如图2所示,各仲裁器并行工作,分别用于仲裁不同的资源。
可以理解,由于各线程束对于指令的处理是逐个进行的,因此同一时刻,一个线程束不会同时竞争两种以上(包含两种)的资源,因此各仲裁器在同一时刻会对不同的线程束集合进行仲裁,从而使得各仲裁器选出的目标线程束不会产生冲突。
在本申请实施例中,控制电路分别与各线程束连接,并与仲裁器连接,用于在目标线程束的当前指令不属于目标类型的指令或目标线程束中不存在待执行的指令时,触发仲裁器重新从争抢目标资源的各线程束中,选择出新的目标线程束。
可选的,参见图2所示,控制电路可以包括多个标志寄存器,每个标志寄存器与一个仲裁器连接,并与一个线程束连接。
在本申请实施例中,标志寄存器的值可以用于表征目标令牌,从而通过分配目标令牌的方式,将线程束对于目标资源的占用与目标令牌关联起来,从而可以基于是否存在线程束具有目标令牌来确定是否需要重新从争抢目标资源的各线程束中选择出新的目标线程束,保证方案可正确被执行。
其中,标记寄存器在所连接的线程束被任意一个仲裁器确定为目标线程束时设置寄存器值为第一目标值,在所连接的线程束的当前指令不属于目标类型的指令或所连接的线程束中不存在待执行的指令时设置寄存器值为第二目标值。
也即,当标记寄存器的寄存器值为第一目标值时,即实现了对该标记寄存器所连接的线程束的目标令牌的分配。
在本申请实施例中,标志寄存器的寄存器值可以由该标志寄存器所连接的线程束进行配置,但不作为限制。
可以理解,在任意一个仲裁器确定出目标线程束时,争抢该仲裁器所仲裁的资源的各线程束中,除目标线程束外的各线程束所连接的标志寄存器的寄存器值应保持第二目标值。这样,可以保证一种资源在同一时刻最多仅有一个标志寄存器的值为第一目标值,从而可以有效防止该资源的仲裁器因错误地存在多个标志寄存器的值为第一目标值而导致长期暂停工作的情况,防止出现电路故障。
在本申请实施例中,仲裁器在确定出目标线程束后,可以在该目标线程束将所连接的标志寄存器的寄存器值从第一目标值修改为第二目标值之后,重新从争抢该仲裁器所仲裁的资源的各线程束中,选择出新的目标线程束。
示例性的,假设仲裁器A本轮从线程束1、线程束2、线程束3、线程束4中仲裁出目标线程束为线程束1,则线程束1开始使用仲裁器A所对应的资源进行指令处理,同时线程束1将其所连接的标志寄存器的寄存器值从第二目标值设置为第一目标值,而线程束2、线程束3、线程束4则各自保持所连接的标志寄存器的寄存器值为第二目标值。当线程束1连续有使用仲裁器A所对应资源的指令,此时仲裁器A暂停仲裁工作。线程束1可以连续发射并处理该类指令;反之,当线程束1的当前指令不属于使用仲裁器A所对应资源进行处理的指令,或线程束1中不存在待执行的指令时,线程束1将其所连接的标志寄存器的寄存器值从第一目标值设置为第二目标值,此时仲裁器A恢复仲裁工作。
可以理解,在本申请实施例的一种可选实施方式中,每一个线程束所连接的标志寄存器的数量可以与仲裁器的数量相同。而在每一个线程束所连接的标志寄存器中,不同的标志寄存器与不同的仲裁器连接。例如,假设有两个仲裁器分别为仲裁器A和仲裁器B,假设有4个线程束分别为线程束1、线程束2、线程束3、线程束4,那么线程束1连接有标志寄存器A1和标志寄存器B1,线程束2连接有标志寄存器A2和标志寄存器B2,线程束3连接有标志寄存器A3和标志寄存器B3,线程束4连接有标志寄存器A4和标志寄存器B4,其中,标志寄存器A1、标志寄存器A2、标志寄存器A3、标志寄存器A4分别与仲裁器A连接,标志寄存器B1、标志寄存器B2、标志寄存器B3、标志寄存器B4分别与仲裁器B连接,从而每一个仲裁器只需要根据所连接的标志寄存器的寄存器值是否均为第二目标值,即可确定是否需要重新进行目标线程束的选取。
可以理解,在本申请实施例中,第一目标值可以为1,而第二目标值可以为0,但不作为限制。在第一目标值为1,而第二目标值为0时,各标志寄存器可以通过或非门与仲裁器的使能端连接,以使能仲裁器工作。仍旧以上例为例,假设标志寄存器A1、标志寄存器A2、标志寄存器A3、标志寄存器A4的输出端通过或非门A11与仲裁器A的使能端连接,当标志寄存器A1、标志寄存器A2、标志寄存器A3、标志寄存器A4中存在任一个寄存器值为1,则或非门A11输出为0,仲裁器A暂停工作,当标志寄存器A1、标志寄存器A2、标志寄存器A3、标志寄存器A4的寄存器值均为0,则或非门A11输出为1,使能仲裁器A工作。类似的,标志寄存器B1、标志寄存器B2、标志寄存器B3、标志寄存器B4的输出端通过或非门B11与仲裁器B的使能端连接,当标志寄存器B1、标志寄存器B2、标志寄存器B3、标志寄存器B4中存在任一个寄存器值为1,则或非门B11输出为0,仲裁器B暂停工作,当标志寄存器B1、标志寄存器B2、标志寄存器B3、标志寄存器B4的寄存器值均为0,则或非门B11输出为1,使能仲裁器B工作。
可选的,在本申请实施例中,如图3-1所示,控制电路还可以包括多个状态寄存器。多个状态寄存器分别与仲裁器连接,且每个状态寄存器与一个线程束连接。
此时,仲裁器具体用于:在任意一个状态寄存器的值为第三目标值,且该状态寄存器所连接的线程束为目标线程束,且该线程束的当前指令不属于目标类型的指令或目标线程束中不存在待执行的指令时,重新从争抢目标资源的各线程束中,选择出新的目标线程束。以及,在任意一个状态寄存器的值为第四目标值,且该状态寄存器所连接的线程束为目标线程束时,在目标线程束的当前指令处理完毕后,重新从争抢目标资源的各线程束中,选择出新的目标线程束。
这样,通过设置状态寄存器的方式,可以通过配置各线程束对应的状态寄存器的值的方式,实现对于各线程束在被选中为目标线程束后,是否可以连续地使用目标资源的控制,即实现了可以控制是否赋予各线程束对于目标资源的连续使用权限的能力(为便于描述,本申请实施例中将各线程束可以连续使用目标资源的情况称之为启用了连续处理功能,将线程束不可以连续使用目标资源的情况称之为未启用连续处理功能,也即状态寄存器相当于连续处理功能的启用开关),从而可以灵活的让用户或程序强化或者弱化某些线程束的指令处理需求,使得本申请实施例的方案更具有灵活性和普适性。
可以理解,在本申请实施例中,状态寄存器和标志寄存器可以同时设置,例如图3-2所示。此时,在任意一个状态寄存器的值为第三目标值时,允许该线程束的标志寄存器被设置为第一目标值(即取得令牌);当该线程束的状态寄存器的值为第四目标值时,则不允许该线程束的标志寄存器被设置为第一目标值,而是需要该线程束的标志寄存器一直保持第二目标值,从而实现单独设置不同线程束是否具备连续地使用该目标资源的能力。
可以理解,所谓的目标资源是指仲裁器所仲裁的资源。目标类型是指需要使用目标资源进行处理的指令类型。
还可以理解,在本申请实施例中,第一目标值和第四目标值可以为1,而第二目标值和第三目标值可以为0,但不作为限制。
在第一目标值和第四目标值为1,而第二目标值和第三目标值为0时,同一线程束所连接的状态寄存器和标志寄存器之间可以通过与门连接,例如图4所示。当状态寄存器的寄存器值为0时,标志寄存器被Gate(使失效)住,不允许被设置为第一目标值(即令牌);反之,当状态寄存器为0时,标志寄存器允许被配置成第一目标值或第二目标值。
可以理解,在本申请实施例中,也可以每个仲裁器仅设置一个状态寄存器或者所有仲裁器仅设置一个状态寄存器,基于状态寄存器的寄存器值控制所有的线程束是否同时启用连续处理功能,或者同时关闭连续处理功能。
示例性的,该状态寄存器可以作为Gate端分别和各标志寄存器连接,例如图5和图6所示。
还可以理解,以上仅为本申请实施例所示例出的几种可选的控制电路的实现结构,但不作为显示。事实上,只要可以实现仲裁器在所选的目标线程束的目标令牌被取消后(即标志寄存器的寄存器值变为第二目标值后)才重新进行新一轮的目标线程束的选择的方案,在本申请实施例中均可被采用。例如,可以不设置标志寄存器,而是通过为每一个仲裁器分别维护一张记录表,该记录表中记录各线程束的ID号,并将选出的目标线程束的ID号填入表征目标令牌的标记栏中,或者在记录表中对选出的目标线程束的ID号打标,并且目标线程在当前指令不属于目标类型的指令或目标线程束中不存在待执行的指令时,将记录表中表征目标令牌的标记栏的ID号清除或者去除记录表中的打标,从而使得仲裁器可以基于记录表实现对于工作控制。
下面,请参见图7所示,图7示出了本申请实施例所提供的指令处理方法的流程示意图,该指令处理方法可以但不限于通过上述指令处理电路实现。该指令处理方法包括:
S701:从争抢目标资源的各线程束中,选择出目标线程束,以使该目标线程束使用该目标资源处理与目标资源对应的目标类型的指令。
可以理解,本申请实施例中的指令处理方法可以由指令处理电路中的仲裁器执行,但不作为限制。
还可以理解的是,在本申请实施例中,可以是基于轮询方式或者年龄矩阵的方式选择出目标线程束,但不作为限制。
S702:在目标线程束的当前指令属于目标类型的指令时,保持目标线程束连续使用目标资源;在目标线程束的当前指令不属于目标类型的指令或目标线程束中不存在待执行的指令时,重新从争抢目标资源的各线程束中,选择出新的目标线程束。
可以理解,目标线程束被选出后,目标线程束即可使用目标资源不断执行kernel程序分配给该目标线程束的指令。当前指令是指目标线程束当前正在执行的指令或者上一个指令执行完毕后,当前等待执行的指令。由于整个执行过程是动态的,因此随着时间的推移,目标线程束的当前指令也会发生变化。
在本申请实施例中,指令处理方法还可以包括:
在选择出目标线程束时,为目标线程束分配目标令牌。在目标线程束的当前指令不属于目标类型的指令或目标线程束中不存在待执行的指令时,取消为目标线程束分配的目标令牌。
相应的,步骤S702包括:判断是否存在线程束具有目标令牌;在不存在线程束具有目标令牌时,重新从争抢目标资源的各线程束中,选择出新的目标线程束,并为新的目标线程束分配所述目标令牌。
其中,目标令牌为与目标类型的指令对应的令牌。可以理解,对于不同的资源而言,也即对于不同的仲裁器而言,其目标令牌应当是分开的。以前文图4为例,仲裁器A和仲裁器B所连接的标志寄存器是完全分开的,从而实现了仲裁器A和仲裁器B所对应的令牌的分隔,保证了方案的可执行性。
可以理解,在本申请实施例中,指令处理方法还可以包括:
在为目标线程束分配目标令牌之前,先判断目标线程束是否启用了连续处理功能。
若目标线程束启用了连续处理功能,才为目标线程束分配目标令牌。
若目标线程束未启用连续处理功能,则不为目标线程束分配目标令牌。
可以理解,本申请实施例的方案,在针对目标资源选出目标线程束,当目标线程束使用目标资源处理当前的指令后,不再立即按照轮询的方式或者年龄矩阵的方式进行新的目标线程束的选取,而是等待该目标线程束继续使用该目标资源处理当前的指令,直至该目标线程束的当前指令不属于目标类型的指令(即不属于需要使用该目标资源进行处理的指令)或该目标线程束中不存在待执行的指令时,再重新从争抢该目标资源的各线程束中,选择出新的目标线程束。这样,对于每一个线程束而言,就赋予了其可以连续不停地处理同一类资源所对应的指令的能力,从而可以满足kernel程序的soft-clause需求。
基于同一发明构思,本申请实施例还提供了一种处理器,包括前述的指令处理电路。
在本申请实施例中,处理器可以是但不限于具有指令处理能力的CPU(CentralProcessing Unit/Processor,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、GPGPU(General Purpose Computing on GPU,在图形处理器上进行通用计算)芯片、MCU(Microcontroller Unit,微控制单元)等,但不作为限制。
基于同一发明构思,本申请实施例还提供了一种电子设备,包括前述处理器。
可以理解,本申请实施例所提供的电子设备还可以具有更多的部件。例如,电子设备还可以具有存储器。处理器和存储器之间可以但不限于通过通信总线的方式进行连接。
在本申请实施例中,存储器可以为随机存取存储器、只读存储器、可编程只读存储器、可擦除只读存储器、电可擦除只读存储器等,但不作为限制。
在本申请实施例中,电子设备可以是,但不限于台式机、笔记本电脑、智能手机、智能穿戴设备、智能车载设备、服务器、控制台等等。
在本申请所提供的实施例中,应该理解到,所揭露电路和方法,可以通过其它的方式实现。以上所描述的实施例仅仅是示意性的。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
在本文中,多个是指两个或两个以上。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种指令处理方法,其特征在于,包括:
从争抢目标资源的各线程束中,选择出目标线程束,以使所述目标线程束使用所述目标资源处理与所述目标资源对应的目标类型的指令;
在所述目标线程束的当前指令属于所述目标类型的指令时,保持所述目标线程束连续使用所述目标资源;
在所述目标线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束。
2.如权利要求1所述的指令处理方法,其特征在于,所述方法还包括:
在选择出目标线程束时,为所述目标线程束分配目标令牌;其中,所述目标令牌为与所述目标类型的指令对应的令牌;
在所述目标线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,取消为所述目标线程束分配的所述目标令牌;
相应的,在所述目标线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束,包括:
判断是否存在线程束具有所述目标令牌;
在不存在线程束具有所述目标令牌时,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束,并为新的目标线程束分配所述目标令牌。
3.如权利要求2所述的指令处理方法,其特征在于,所述方法还包括:
在为所述目标线程束分配目标令牌之前,确定所述目标线程束启用了连续处理功能。
4.如权利要求3所述的指令处理方法,其特征在于,所述方法还包括:
若所述目标线程束未启用所述连续处理功能,则不为所述目标线程束分配所述目标令牌。
5.一种指令处理电路,其特征在于,包括:
仲裁器,与各线程束连接,用于从争抢目标资源的各所述线程束中,选择出目标线程束,以使所述目标线程束使用所述目标资源处理与所述目标资源对应的目标类型的指令;其中,所述目标资源为所述仲裁器所仲裁的资源;
所述仲裁器还用于在所述目标线程束的当前指令属于所述目标类型的指令时关闭,以保持所述目标线程束连续使用所述目标资源;
控制电路,分别与各所述线程束连接,并与所述仲裁器连接,用于在所述目标线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,触发所述仲裁器重新从争抢所述目标资源的各线程束中,选择出新的目标线程束。
6.如权利要求5所述的指令处理电路,其特征在于,所述仲裁器为多个,不同所述仲裁器用于仲裁不同的资源;
所述控制电路包括:
多个标志寄存器,每个标志寄存器与一个所述仲裁器连接,并与一个所述线程束连接;所述标志寄存器用于在所连接的线程束被任意一个所述仲裁器确定为目标线程束时设置寄存器值为第一目标值,在所连接的线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时设置寄存器值为第二目标值;
所述仲裁器具体用于在所述目标线程束的当前指令属于所述目标类型的指令,且所连接的所述标志寄存器的寄存器值为第一目标值时关闭,以保持所述目标线程束连续使用所述目标资源。
7.如权利要求6所述的指令处理电路,其特征在于,在任意一个仲裁器确定出目标线程束时,争抢该仲裁器所仲裁的资源的各所述线程束中,除所述目标线程束外的各所述线程束所连接的标志寄存器的寄存器值保持所述第二目标值。
8.如权利要求5-7任一项所述的指令处理电路,其特征在于,所述控制电路包括:
多个状态寄存器,分别与所述仲裁器连接,且每个所述状态寄存器与一个所述线程束连接;
所述仲裁器具体用于:在任意一个状态寄存器的值为第三目标值,且该状态寄存器所连接的线程束为目标线程束,则:若该线程束的当前指令属于所述目标类型的指令,保持所述目标线程束连续使用所述目标资源;若该线程束的当前指令不属于所述目标类型的指令或所述目标线程束中不存在待执行的指令时,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束;以及,在任意一个状态寄存器的值为第四目标值,且该状态寄存器所连接的线程束为目标线程束时,在所述目标线程束的当前指令处理完毕后,重新从争抢所述目标资源的各线程束中,选择出新的目标线程束。
9.一种处理器,其特征在于,包括如权利要求5-8任一项所述的指令处理电路。
10.一种电子设备,其特征在于,包括如权利要求9所述的处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310475826.2A CN116594765A (zh) | 2023-04-27 | 2023-04-27 | 一种指令处理方法、指令处理电路、处理器及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310475826.2A CN116594765A (zh) | 2023-04-27 | 2023-04-27 | 一种指令处理方法、指令处理电路、处理器及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116594765A true CN116594765A (zh) | 2023-08-15 |
Family
ID=87598355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310475826.2A Pending CN116594765A (zh) | 2023-04-27 | 2023-04-27 | 一种指令处理方法、指令处理电路、处理器及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116594765A (zh) |
-
2023
- 2023-04-27 CN CN202310475826.2A patent/CN116594765A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6920632B2 (en) | Dynamic multilevel task management method and apparatus | |
US7418576B1 (en) | Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations | |
US8676976B2 (en) | Microprocessor with software control over allocation of shared resources among multiple virtual servers | |
US9965412B2 (en) | Method for application-aware interrupts management | |
US10628351B2 (en) | Sharing message-signaled interrupt vectors in multi-processor computer systems | |
US10372454B2 (en) | Allocation of a segmented interconnect to support the execution of instruction sequences by a plurality of engines | |
CN111258935B (zh) | 数据传输装置和方法 | |
CN107957965B (zh) | 服务质量序数修改 | |
JPH06236344A (ja) | 複数データ転送要求間の仲裁方法と装置 | |
CN109840149B (zh) | 任务调度方法、装置、设备及存储介质 | |
CN114168271B (zh) | 一种任务调度方法、电子设备及存储介质 | |
US20240143392A1 (en) | Task scheduling method, chip, and electronic device | |
US10740269B2 (en) | Arbitration circuitry | |
CN112764904A (zh) | 基于多任务系统中防止低优先级任务饿死的方法 | |
WO2022161013A1 (zh) | 处理器装置及其指令执行方法、计算设备 | |
US20150268985A1 (en) | Low Latency Data Delivery | |
GB2216306A (en) | Load and synchronize computer architecture and process | |
KR102586988B1 (ko) | 다중-커널 웨이브프론트 스케줄러 | |
US20120226842A1 (en) | Enhanced prioritising and unifying interrupt controller | |
US9442759B2 (en) | Concurrent execution of independent streams in multi-channel time slice groups | |
CN111258950A (zh) | 原子访存方法、存储介质、计算机设备、装置和系统 | |
JP2004206692A (ja) | マルチスレッド化プロセッサ・システム上での実行のために、スレッドについての優先順位値を決定する方法および装置 | |
CN114830083A (zh) | 调度器队列分配突发模式 | |
EP2710480B1 (en) | An interconnect structure to support the execution of instruction sequences by a plurality of engines | |
CN116594765A (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 |