CN114489791A - 处理器装置及其指令执行方法、计算设备 - Google Patents
处理器装置及其指令执行方法、计算设备 Download PDFInfo
- Publication number
- CN114489791A CN114489791A CN202110110263.8A CN202110110263A CN114489791A CN 114489791 A CN114489791 A CN 114489791A CN 202110110263 A CN202110110263 A CN 202110110263A CN 114489791 A CN114489791 A CN 114489791A
- Authority
- CN
- China
- Prior art keywords
- register
- predicate
- thread
- instruction
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 29
- 101000667353 Homo sapiens von Willebrand factor A domain-containing protein 1 Proteins 0.000 description 6
- 239000000872 buffer Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 102100039759 von Willebrand factor A domain-containing protein 1 Human genes 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/445—Program loading or initiating
-
- 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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请实施例公开了一种处理器装置及其指令执行方法、计算设备。该装置包括一个或多个单指令多线程处理单元,所述单指令多线程处理单元包括:一个或多个用于执行指令的线程束;共享寄存器组,其包括在所述线程束之间共享的多个通用寄存器;谓词基址寄存器,其与每个线程束对应设置,用于指示所述共享寄存器组中用作每个线程束的谓词寄存器的一组通用寄存器的基地址;其中,每个线程束基于所述用作每个线程束的谓词寄存器的一组通用寄存器中的谓词值来对指令进行断言执行。本申请实施例可以取消原有的处理器架构中每个线程束固有的专用谓词寄存器,实现每个线程束的谓词寄存器资源的动态扩展,并且实现处理器资源的充分利用,减少切换指令的开销和提高指令处理性能。
Description
技术领域
本申请涉及处理器技术领域,具体而言,涉及一种处理器装置及其指令执行方法、计算设备。
背景技术
目前,CPU、GPU等多核处理芯片中通常采用单指令多线程处理(SIMT)核心,该单指令多线程处理(SIMT)核心可以具有多个执行指令的基本单元,称为线程束(WARP),线程束的大小指示了单指令多线程的并行线程数。每个线程束通常包括多种专用寄存器,其中谓词(Predicate)寄存器是GPU中实现高效分支指令的关键控制方式。在英伟达(NVIDIA)公司的芯片指令体系中,通常一个线程束具有32个并行线程(Thread),每个线程束具有7个32位的Predicate寄存器P0-P6,每个Predicate寄存器中位(bit)代表线程束中对应的线程为真(有效)或假(无效),单指令多线程处理(SIMT)核心会根据Predicate寄存器中位的真假对指令进行断言执行,对每个线程束中的有效线程执行目标指令。Predicate寄存器的使用可以减少指令执行中对IF-ELSE等指令的调用,减少程序最终的指令数,提高执行性能。
然而,本申请发明人发现,在现在的GPU芯片体系中,每个线程束对应的谓词寄存器是固定设置的,数量太少,导致在复杂场景下,例如复杂的IF-ELSE嵌套、Switch-Case的分支条件指令,谓词寄存器不够用;并且在资源受限时,每个线程束仍然只能使用7个谓词寄存器,剩余的资源不能得到充分利用。此外,每个线程束的谓词寄存器不能在多个线程束之间共享,现有的机制也会导致系统性能的损失,需要执行更多的指令才能实现所需功能。
发明内容
为了解决上述问题,本申请的目的是提出一种处理器装置及其指令执行方法、计算设备,以改进现有的谓词寄存器机制,实现处理核心中每个线程束的谓词寄存器资源的动态扩展,实现资源在多个线程束之间的共享,提高处理器的处理性能。
第一方面,本申请提出一种处理器装置,包括:一个或多个单指令多线程处理单元,所述单指令多线程处理单元包括:
一个或多个用于执行指令的线程束;
共享寄存器组,其包括在所述线程束之间共享的多个通用寄存器;
谓词基址寄存器,其与每个线程束对应设置,用于指示所述共享寄存器组中用作每个线程束的谓词寄存器的一组通用寄存器的基地址;其中,每个线程束基于所述用作每个线程束的谓词寄存器的一组通用寄存器中的谓词值来对指令进行断言执行。
在优选的实施方式中,所述共享寄存器组被配置为在所述线程束之间动态分配。
在优选的实施方式中,所述谓词基址寄存器的值基于一专用指令动态设置。
在优选的实施方式中,所述单指令多线程处理单元还包括:共享寄存器基址寄存器,其与每个线程束对应设置,用于指示所述共享寄存器组中分配给每个线程束的一组通用寄存器的基地址;其中,所述每个线程束的谓词寄存器基于所述共享寄存器基址寄存器中指示的分配给所述线程束的一组通用寄存器的基地址、所述谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址和该谓词寄存器在用作所述线程束的谓词寄存器的一组通用寄存器中的索引地址来物理寻址。
在优选的实施方式中,所述谓词基址寄存器中指示的用作每个线程束的谓词寄存器的一组通用寄存器的基地址表示每个线程束的第一个谓词寄存器在所述共享寄存器组中分配给该线程束的一组通用寄存器中的索引地址。
在优选的实施方式中,所述每个线程束基于所述用作每个线程束的谓词寄存器的一组通用寄存器中的谓词值来对指令进行断言执行包括:所述每个线程束根据指令中指定的谓词寄存器中的谓词值所指示的有效线程,在所述有效线程中执行所述指令。
在优选的实施方式中,所述单指令多线程处理单元还包括:
线程掩码寄存器,用于保存每个线程束默认的线程掩码,所述线程掩码用于指示所述每个线程束中用于执行指令的有效线程;其中,所述每个线程束根据指令中指定的非谓词寄存器的标识在所述线程掩码指示的有效线程中执行所述指令。
第二方面,本申请提出一种处理器装置的指令执行方法,所述处理器装置包括一个或多个单指令多线程处理单元,所述单指令多线程处理单元包括:一个或多个用于执行指令的线程束;共享寄存器组,其包括在所述线程束之间共享的多个通用寄存器;谓词基址寄存器,其与每个线程束对应设置,用于指示所述共享寄存器组中用作每个线程束的谓词寄存器的一组通用寄存器的基地址;所述方法包括:
对每个线程束执行的目标指令进行译码,获得所述目标指令中指定的谓词寄存器;
基于谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址,获得所述目标指令中指定的谓词寄存器的物理地址;
基于所述目标指令中指定的谓词寄存器的物理地址,获得所述目标指令中指定的谓词寄存器中的谓词值;
基于所述目标指令中指定的谓词寄存器中的谓词值对所述目标指令进行断言执行。
在优选的实施方式中,所述共享寄存器组被配置为在所述线程束之间动态分配。
在优选的实施方式中,所述方法还包括:基于一专用指令动态设置所述每个线程束对应的谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址。
在优选的实施方式中,所述单指令多线程处理单元还包括:共享寄存器基址寄存器,其与每个线程束对应设置,用于指示所述共享寄存器组中分配给每个线程束的一组通用寄存器的基地址;其中,所述获得所述目标指令中指定的谓词寄存器的物理地址还包括:基于所述共享寄存器基址寄存器中指示的分配给所述线程束的一组通用寄存器的基地址、所述谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址和所述目标指令中指定的谓词寄存器在用作所述线程束的谓词寄存器的一组通用寄存器中的索引地址,来获得所述目标指令中指定的谓词寄存器的物理地址。
在优选的实施方式中,所述谓词基址寄存器中指示的一组通用寄存器的基地址表示每个线程束的第一个谓词寄存器在所述共享寄存器组中分配给该线程束的一组通用寄存器中的索引地址。
在优选的实施方式中,所述基于所述目标指令中指定的谓词寄存器中的谓词值对所述目标指令进行断言执行包括:
基于所述目标指令中指定的谓词寄存器中的谓词值所指示的有效线程,在所述有效线程中执行所述目标指令。
在优选的实施方式中,所述单指令多线程处理单元还包括:线程掩码寄存器,用于保存每个线程束默认的线程掩码,所述线程掩码用于指示所述每个线程束中用于执行指令的有效线程;其中,所述方法还包括:根据所述目标指令中指定的非谓词寄存器的标识在所述线程掩码指示的有效线程中执行所述目标指令。
第三方面,本申请提出一种计算设备,包括如前述任一实施方式所述的处理器装置。
相对于现有技术,本申请至少具有如下有益效果:本申请实施例通过每个线程束对应的谓词基址寄存器的设置,可以为每个线程束动态分配共享寄存器组中一组通用寄存器作为谓词寄存器使用,从而可以取消原有的处理器架构中每个线程束固有的专用谓词寄存器,实现每个线程束的谓词寄存器资源的动态扩展,最多可以从现有的7个谓词寄存器扩展到256个。
进一步地,本申请实施例中每个线程束的谓词寄存器资源还可以在多个线程束之间共享,实现处理器资源的充分利用;同时还可以减少处理器装置中大量的专用谓词寄存器的使用,减少切换指令的开销和提高指令处理性能。
附图说明
结合附图,并通过以下非限制性实施方式的详细描述将更充分地理解本申请的特征、目的和优点,其中:
图1是现有的图形处理单元(GPU)芯片的一种示例性结构的示意图;
图2是现有的GPU的SIMT单元的结构示意图;
图3是根据本申请一实施例的处理器装置的部分结构示意图;
图4是根据本申请一实施例的处理器装置的指令执行方法的流程示意图。
具体实施方式
下面通过实施例,并结合附图,对本申请的技术方案进行清楚、完整地说明,但是本申请不限于以下所描述的实施例。基于以下实施例,本领域普通技术人员在没有创造性劳动的前提下所获得的所有其它实施例,都属于本申请保护的范围。为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
应理解,本申请中诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件或其组合的存在,并不排除一个或多个其它特征、数字、步骤、行为、部件或其组合存在或被添加的可能性。本申请中“多个”通常可以解释为两个或两个以上的含义。
图1是现有的图形处理单元(GPU)芯片100的一种示例性结构的示意图。如图1所示,GPU芯片100通常包含一个或者多个流处理器110。流处理器(SP)110通过交叉开关矩阵或者交叉开关网络116与一个或多个二级缓存117以及PCIE控制器120进行数据的读写。除此之外,GPU芯片100还可以包含视频编解码121和/或其他处理核心(图中未示出)。
流处理器110包括指令调度器(SEQ)111、一个或多个单指令多线程(SIMT)处理单元112、一个或多个一级缓存113、内存管理单元(MMU)114和共享内存115。多个单指令多线程(SIMT)处理单元112可以读写共享内存115的数据,从而实现多个线程之间的数据交换。
单指令多线程(SIMT)处理单元112中,线程束(WARP)是执行指令的基本单位,线程束(WARP)包括以不同数据资源并行执行同一指令的多个线程。线程束中并行执行的线程数即为线程束的大小(WARPSIZE),通常采用16,32或64个并行线程数。一个单指令多线程(SIMT)处理单元可以包括8-16个WARP,而一个流处理器可以达到32-128个WARP。
图2是现有的GPU的SIMT单元200的结构示意图。图2以包含8个WARP、每个WARP大小为32的SIMT单元为例进行示例性说明,如图2所示,该SIMT单元中每个WARP201包含多种专用寄存器:
指令缓冲(Instruction Buffer)202,用于为每个WARP提供指令的缓冲区。
程序计数器(PC)203,该寄存器是个地址指针,指向其要执行的指令地址。
线程掩码寄存器(LaneMask)204,表示活动线程在WARP中的位置,例如假设32位Lane Mask为0x01FFFFFF,表示其中线程0-24是有效的,将参与SIMT计算指令和异步内存指令,而其余线程25-31是无效的,不参与计算指令和异步内存指令。
通用寄存器基址(GPR Base)205和通用寄存器大小(GPR Size)206,用于指示每个线程(Thread,如图中T0-T32)分配的GPR的基地址和空间大小。本示例的SIMT单元中,每个线程(Thread)被分配一个GPR空间,所有线程(Thread)的GPR的基地址和大小相同,例如GPRBase=64,GPR Size=32。每个线程的寄存器值可以是不同的,例如线程R6的物理位置是GPR基地址+6,实际寻址地址为70。
共享内存基址(Shared Memory Base)207和共享内存大小(Shared Memory Size)208,用于指示分配给每个WARP的共享内存空间的基地址和大小。SIMT单元中每个WARP都可以分配一个共享内存空间,该WARP中每个线程(Thread)都可以访问该共享内存空间的内容。
谓词寄存器(Predicate0-Predicate6)209,对应每个WARP的7个谓词寄存器,用于控制每个汇编指令在某个线程是否真正运行。
WARP共享通用寄存器(以下简称为共享寄存器)基址(WARP Share GPR base)210和WARP共享通用寄存器大小(WARP Share GPR Size,以下简称为共享寄存器大小)211,共享寄存器是在WARP之间分配的通用寄存器,每个WARP中共享寄存器只有一个车道(Lane),每个线程(Thread)看到的都是相同的值。例如,假设共享寄存器基址WARP Share GPR base=320,那么共享寄存器W16的物理寻址位置为336。共享寄存器大小WARP Share GPR Size可以根据不同的硬件设计,逻辑寻址空间从32到256个。
现有的GPU体系中,待执行的指令中通常采用4个bits用于指定谓词寄存器,其中:
Bit 0:值为0表示使用原始的Predicate值,为1则表示对Predicate值取反;
Bit 1-3:0表示Predicate0,1表示Predicate1,2表示Predicate2,3表示Predicate3,4表示Predicate4,5表示Predicate5,6表示Predicate6,7表示不使用Predicate,而使用线程束的线程掩码(LaneMask),或者全部线程为真。
假设使用二进制表达每个谓词寄存器值,该值中位0代表对应的线程(车道)无效,1代表对应的线程(车道)有效。则:
P5=0000 1111 1111 1111 1111 1111 11111111,表示一个WARP的32线程中,线程0-27为True。
!P5=1111 0000 0000 0000 0000 0000 0000 0000,表示对P5取反后,线程28-31为True。
指令@!P5 add R0,R1,R2表示对线程28-31执行寄存器R1,R2中操作数的加法指令。
以下以具体的指令编译执行来解释上述示例中谓词寄存器(Predicate0-Predicate6,以下简称P0-P6)如何控制指令的分支执行。
考虑GPU中如下代码:
对上述代码进行编译,生成的汇编指令如下:
Compare_bool P1,R3,1;
@P1 muladd.F32 R4,R5,R6,R7;
@!P1 muladd.F32 R4,R5,R7,R6;
Muladd.F32 R4,R4,R8,R9;
上述第一条汇编指令执行比较操作,其中代码中条件ConditionA的值保存在寄存器R3,true的值为1,是个立即数或者硬件内嵌立即数。该比较操作的结果保存在谓词寄存器P1中。
上述第二条汇编指令表示对谓词寄存器P1中位(Bit)为1的线程执行乘加指令muladd,其中变量a、b、c的值分别保存在寄存器R5、R6、R7。对变量a、b、c执行乘加指令的结果Result保存在寄存器R4。例如,假设谓词寄存器P1中16进制值P1=0x0001FFFF,表示每个WARP中32个线程中,其中线程0-16执行变量a、b、c的乘加指令,其余线程17-31不执行。
上述第三条汇编指令对P1取反,得到!P1=0xFFFE0000,表示线程17-31执行变量a、c、b的乘加指令,对线程0-16不执行。对变量a、c、b执行乘加指令的结果Result保存在寄存器R4。
上述第四条汇编指令中没有指定谓词寄存器,表示所有线程0-31都执行上述指令的结果Result与变量d、e的乘加指令,其中,d和e的值分别保存在寄存器R8和R9。
可见,在上述if-else的条件分支执行中,通过将条件判断结果以谓词寄存器的方式进行分支控制,可以方便实现指令的分支执行。
然而,如前所述,上述示例中每个线程束的谓词寄存器P0-P6固定设置,数量太少,在复杂场景下不够用,即使在资源受限时,每个线程束仍然只能使用7个谓词寄存器,剩余的资源不能得到充分利用。此外,每个线程束的谓词寄存器不能在多个线程束之间共享,这种的谓词寄存器机制也会导致系统性能的损失。为此,本申请实施例提出一种处理器装置及其指令执行方法,改进了现有的处理器装置中谓词寄存器的固有机制,取消了每个线程束固定设置的专用谓词寄存器,而使用通用寄存器替代专用谓词寄存器,实现每个线程束的谓词寄存器的动态扩展,超越了每个线程束7个谓词寄存器的限制,并可以减少专用寄存器的使用,有利于资源在线程束之间的共享,并可以提高指令处理性能。
图3是根据本申请一实施例的处理器装置的部分结构示意图。如图3所示,本申请实施例的处理器装置包括:
一个或多个单指令多线程处理单元300,所述单指令多线程处理单元300包括:
一个或多个用于执行指令的线程束301;
共享寄存器组302,其包括在所述线程束301之间共享的多个通用寄存器(WARPShare GPR);
谓词基址寄存器(Predicate Base)303,其与每个线程束301对应设置,用于指示所述共享寄存器组302中用作每个线程束301的谓词寄存器的一组通用寄存器的基地址;其中,每个线程束基于所述用作每个线程束的谓词寄存器的一组通用寄存器中的谓词值来对指令进行断言执行。
本实施例中,共享寄存器组302可以在单指令多线程处理单元300的多个线程束301之间动态分配,通过每个线程束对应的谓词基址寄存器303的设置,可以为每个线程束动态分配共享寄存器组302中一组多个通用寄存器作为谓词寄存器使用,从而可以取消原有的处理器架构中每个线程束固有的专用谓词寄存器,实现每个线程束的谓词寄存器资源的动态扩展,最多可以从现有的7个谓词寄存器扩展到256个。其次,本实施例中每个线程束的谓词寄存器资源还可以在多个线程束之间共享,同时可以减少处理器装置中大量的专用谓词寄存器的使用,并且减少切换指令的开销和提高指令处理性能。
在一些实施方式中,所述谓词基址寄存器303的值可以基于一专用指令动态设置。本实施例中,作为示例性描述的目的,可以将谓词基址寄存器303设计为8位专用寄存器,默认值为0,增加一条谓词基址设置的专用指令set_predicate_base,用于设置该谓词基址寄存器303的值。该指令的语法格式定义如下:
set_predicate_base<立即数偏移地址>
例如,指令set_predicate_base 32,可以表示将谓词基址寄存器的值设置为通用寄存器(WARP Share GPR)W32,即Predicate Base=W32。上述指令中立即数偏移地址32表示为当前线程束分配的第一个谓词寄存器P0在所述共享寄存器组302中分配给该线程束的一组通用寄存器中的索引地址。
在一些实施方式中,所述单指令多线程处理单元300还包括:
共享寄存器基址寄存器(WARP Share GPR Base)304,其与每个线程束301对应设置,用于指示所述共享寄存器组302中分配给每个线程束301的一组通用寄存器的基地址。
本实施例中,每个线程束的谓词寄存器可以基于所述共享寄存器基址寄存器304中指示的一组通用寄存器的基地址、所述谓词基址寄存器303中指示的一组通用寄存器的基地址和该谓词寄存器在所述用作每个线程束的谓词寄存器的一组通用寄存器中的索引地址来物理寻址。
在一些实施方式中,每个线程束基于所述用作每个线程束的谓词寄存器的一组通用寄存器中保存的谓词值来对指令进行断言执行可以包括:所述每个线程束根据指令中指定的谓词寄存器中的谓词值所指示的有效线程,在所述有效线程中执行所述指令。
在一些实施方式中,所述单指令多线程处理单元300还包括:
线程掩码寄存器(LaneMask)305,用于保存每个线程束301默认的线程掩码,线程掩码用于指示所述每个线程束301中用于执行指令的有效线程。
本实施例中,每个线程束301可以根据要执行的指令中指定的非谓词寄存器的标识在所述线程掩码指示的有效线程中执行所述指令。
假设使用从谓词基址寄存器(Predicate Base)所指示的通用寄存器地址开始的7个通用寄存器(WARP Share GPR)作为该线程束的谓词寄存器,例如以通用寄存器(WARPShare GPR)W32-W38表示P0-P6,并保持现有的谓词寄存器的指令编码不发生变化,继续使用4Bits指令编码如下:
Bit0:为0表示使用原始的Predicate值,为1则对Predicate值取反;
Bit1-3:取值0-6分别代表P0-P6,取值7代表使用原始的线程掩码(LaneMask),不使用谓词寄存器。
需要说明的是,在一些实施方式中,本申请实施例中单指令多线程处理单元300也可以包括如图2所示的其它专用寄存器,例如指令缓冲(Instruction Buffer)202,程序计数器(PC)203,通用寄存器基址(GPR Base)205和通用寄存器大小(GPR Size)206,共享内存基址(Shared Memory Base)207和共享内存大小(Shared Memory Size)208,共享寄存器大小寄存器(WARP Share GPR Size)211等,在此不再赘述。
以下以几个具体的指令示例进一步说明本申请实施例的具体实施方式。
假设当前处理单元中,谓词基址寄存器Predicate Base=32,共享寄存器基址寄存器Warp Share GPR Base=320。根据谓词基址寄存器的设置,通用寄存器W32就表示该线程束的谓词寄存器P0,相应地,通用寄存器W33则代表P1,依次类推,通用寄存器W38则代表P6。通用寄存器W32代表通用寄存器的索引地址为32,物理地址即为该线程束对应的共享寄存器基址加上该索引地址,320+32=352。
代码示例1:
set_predicate_base 32
@P1 FMA R4,R5,R6,R7
上述指令的含义表示执行谓词基址设置专用指令将谓词基址寄存器PredicateBase设置为32,即通用寄存器W32作为当前线程束的谓词寄存器P0,不再是默认值为0。
假设通用寄存器W32=0x 01 FF FFFF,W33=0x 80 FF FFFF,线程掩码寄存器LaneMask=0x FFFFFFFF,上述指令表示当前程序计数器PC对应的指令为执行融合乘加FMA指令,基于谓词寄存器P1执行融合乘加FMA指令。
由于通用寄存器W33代表谓词寄存器P1,该FMA指令对线程束中的线程24-30无效,对线程0-23有效,即对线程0-23执行寄存器R5,R6,R7中操作数的融合乘加运算,结果输出至寄存器R4。
代码示例2:
set_predicate_base 8
@!P0 sub R7,R1,R2
上述指令的含义表示执行谓词基址设置专用指令将谓词基址寄存器PredicateBase设置为8,即通用寄存器W8为当前线程束的谓词寄存器P0,使用W8为P0,对P0取反后执行SUB指令。
假设通用寄存器W8=0x 00 FF FFFF,则!P0=0x FF 00 00 00,则上述指令SUB对线程0-23无效,对线程24-31有效,即对线程24-31执行寄存器R1,R2中操作数的减法运算,结果输出至寄存器R7。
代码示例3:
set_predicate_base 16
@!P1 sub R7,R1,R2
上述指令的含义表示执行谓词基址设置专用指令将谓词基址寄存器PredicateBase设置为16,即通用寄存器W16为当前线程束的谓词寄存器P0,W17为当前线程束的谓词寄存器P1。
假设通用寄存器W17=0x 00 0F FF FF,则!P1=0x FFF0 00 00,则上述指令SUB对线程0-19无效,对线程20-31有效,即对线程20-31执行寄存器R1,R2中操作数的减法运算,结果输出至寄存器R7。
图4是根据本申请一实施例的处理器装置的指令执行方法的流程示意图。如图4所示,本申请实施例的指令执行方法适用于前述任一实施方式的处理器装置,所述方法包括以下步骤:
步骤S410,对每个线程束执行的目标指令进行译码,获得所述目标指令中指定的谓词寄存器;
步骤S420,基于谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址,获得所述目标指令中指定的谓词寄存器的物理地址;
步骤S430,基于所述目标指令中指定的谓词寄存器的物理地址,获得所述目标指令中指定的谓词寄存器中的谓词值;
步骤S440,基于所述目标指令中指定的谓词寄存器中的谓词值对所述目标指令进行断言执行。
本实施例所述指令执行方法通过每个线程束对应的谓词基址寄存器的设置,可以为每个线程束动态分配共享寄存器组中一组多个通用寄存器作为谓词寄存器使用,从而可以取消原有的处理器架构中每个线程束固有的专用谓词寄存器,实现每个线程束的谓词寄存器资源的动态扩展。在指令执行过程中,可以根据不同需求动态扩展谓词寄存器的数量,最多可以从现有的7个谓词寄存器扩展到256个。本实施例可以减少处理器装置中大量的专用谓词寄存器的使用,并且减少切换指令的开销和提高指令处理性能。
在一些实施方式中,所述方法还包括:基于一专用指令动态设置所述每个线程束对应的谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址。
在一些实施方式中,所述获得所述目标指令中指定的谓词寄存器的物理地址还包括:基于所述共享寄存器基址寄存器中指示的分配给所述线程束的一组通用寄存器的基地址、所述谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址和所述目标指令中指定的谓词寄存器在用作所述线程束的谓词寄存器的一组通用寄存器中的索引地址,来获得所述目标指令中指定的谓词寄存器的物理地址。
在一些实施方式中,所述谓词基址寄存器中指示的一组通用寄存器的基地址表示每个线程束的第一个谓词寄存器在所述共享寄存器组中分配给该线程束的一组通用寄存器中的索引地址。
在一些实施方式中,所述基于所述目标指令中指定的谓词寄存器中的谓词值对所述目标指令进行断言执行还包括:基于所述目标指令中指定的谓词寄存器中的谓词值所指示的有效线程,在所述有效线程中执行所述目标指令。
在一些实施方式中,所述方法还包括:根据所述目标指令中指定的非谓词寄存器的标识在所述线程束的线程掩码指示的有效线程中执行所述目标指令。
本申请实施例还提出一种计算设备,包括如前述任一实施方式所述的处理器装置。
需要说明的是,在一些实施方式中,计算设备可以例如包括至少一个处理器装置、关联的存储器和多个输入/输出(I/O)器件。当执行计算机程序时,计算设备可以根据计算机程序处理信息并且经由输入/输出(I/O)器件产生输出信息。任何包括本申请实施例所描述的处理器装置的计算设备,包括但不限于个人计算机、膝上型电脑、平板电脑、服务器、工作站、移动终端设备、图形处理设备以及其他嵌入处理器装置的计算机系统等,均属于本申请保护的范围。
本申请实施例的部分特征可以在计算机程序或用于在计算机系统上运行的计算机程序产品中被实现,可以包括用于当在诸如计算机系统的可编程装置上运行时执行根据本申请的方法步骤或使得可编程的装置能够执行根据本申请的装置或设备的功能的代码部分。
本申请实施例的处理器装置及其指令执行方法可以应用于中央处理单元(CPU)、图形处理单元(GPU)、数字处理单元(DSP)、现场可编程门阵列(FGPA)、人工智能芯片(AI)、视频编解码芯片(Video Code)等多核处理器芯片中,来实现分支条件指令的高效执行,提高指令处理性能。
本申请实施例中所涉及到的步骤、单元或模块可以通过硬件电路或者软硬件逻辑相结合的方式实现。本申请的实施方式并不限于上述实施例所述,在不偏离本申请的精神和范围的情况下,本领域普通技术人员可以在形式和细节上对本申请做出各种改变和改进,这些均被认为落入了本申请的保护范围。
Claims (15)
1.一种处理器装置,其特征在于,包括:一个或多个单指令多线程处理单元,所述单指令多线程处理单元包括:
一个或多个用于执行指令的线程束;
共享寄存器组,其包括在所述线程束之间共享的多个通用寄存器;
谓词基址寄存器,其与每个线程束对应设置,用于指示所述共享寄存器组中用作每个线程束的谓词寄存器的一组通用寄存器的基地址;其中,每个线程束基于所述用作每个线程束的谓词寄存器的一组通用寄存器中的谓词值来对指令进行断言执行。
2.根据权利要求1所述的处理器装置,其特征在于,所述共享寄存器组被配置为在所述线程束之间动态分配。
3.根据权利要求2所述的处理器装置,其特征在于,所述谓词基址寄存器的值基于一专用指令动态设置。
4.根据权利要求3所述的处理器装置,其特征在于,所述单指令多线程处理单元还包括:
共享寄存器基址寄存器,其与每个线程束对应设置,用于指示所述共享寄存器组中分配给每个线程束的一组通用寄存器的基地址;
其中,所述每个线程束的谓词寄存器基于所述共享寄存器基址寄存器中指示的分配给所述线程束的一组通用寄存器的基地址、所述谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址和该谓词寄存器在用作所述线程束的谓词寄存器的一组通用寄存器中的索引地址来物理寻址。
5.根据权利要求4所述的处理器装置,其特征在于,所述谓词基址寄存器中指示的用作每个线程束的谓词寄存器的一组通用寄存器的基地址表示每个线程束的第一个谓词寄存器在所述共享寄存器组中分配给该线程束的一组通用寄存器中的索引地址。
6.根据权利要求5所述的处理器装置,其特征在于,所述每个线程束基于所述用作每个线程束的谓词寄存器的一组通用寄存器中的谓词值来对指令进行断言执行包括:所述每个线程束根据指令中指定的谓词寄存器中的谓词值所指示的有效线程,在所述有效线程中执行所述指令。
7.根据权利要求6所述的处理器装置,其特征在于,所述单指令多线程处理单元还包括:
线程掩码寄存器,用于保存每个线程束默认的线程掩码,所述线程掩码用于指示所述每个线程束中用于执行指令的有效线程;其中,所述每个线程束根据指令中指定的非谓词寄存器的标识在所述线程掩码指示的有效线程中执行所述指令。
8.一种处理器装置的指令执行方法,其特征在于,所述处理器装置包括一个或多个单指令多线程处理单元,所述单指令多线程处理单元包括:一个或多个用于执行指令的线程束;共享寄存器组,其包括在所述线程束之间共享的多个通用寄存器;谓词基址寄存器,其与每个线程束对应设置,用于指示所述共享寄存器组中用作每个线程束的谓词寄存器的一组通用寄存器的基地址;所述方法包括:
对每个线程束执行的目标指令进行译码,获得所述目标指令中指定的谓词寄存器;
基于谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址,获得所述目标指令中指定的谓词寄存器的物理地址;
基于所述目标指令中指定的谓词寄存器的物理地址,获得所述目标指令中指定的谓词寄存器中的谓词值;
基于所述目标指令中指定的谓词寄存器中的谓词值对所述目标指令进行断言执行。
9.根据权利要求8所述的处理器装置的指令执行方法,其特征在于,所述共享寄存器组被配置为在所述线程束之间动态分配。
10.根据权利要求9所述的处理器装置的指令执行方法,其特征在于,所述方法还包括:基于一专用指令动态设置所述每个线程束对应的谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址。
11.根据权利要求10所述的处理器装置的指令执行方法,其特征在于,所述单指令多线程处理单元还包括:共享寄存器基址寄存器,其与每个线程束对应设置,用于指示所述共享寄存器组中分配给每个线程束的一组通用寄存器的基地址;
其中,所述获得所述目标指令中指定的谓词寄存器的物理地址还包括:基于所述共享寄存器基址寄存器中指示的分配给所述线程束的一组通用寄存器的基地址、所述谓词基址寄存器中指示的用作所述线程束的谓词寄存器的一组通用寄存器的基地址和所述目标指令中指定的谓词寄存器在用作所述线程束的谓词寄存器的一组通用寄存器中的索引地址,来获得所述目标指令中指定的谓词寄存器的物理地址。
12.根据权利要求11所述的处理器装置的指令执行方法,其特征在于,所述谓词基址寄存器中指示的一组通用寄存器的基地址表示每个线程束的第一个谓词寄存器在所述共享寄存器组中分配给该线程束的一组通用寄存器中的索引地址。
13.根据权利要求12所述的处理器装置的指令执行方法,其特征在于,所述基于所述目标指令中指定的谓词寄存器中的谓词值对所述目标指令进行断言执行包括:
基于所述目标指令中指定的谓词寄存器中的谓词值所指示的有效线程,在所述有效线程中执行所述目标指令。
14.根据权利要求13所述的处理器装置的指令执行方法,其特征在于,所述单指令多线程处理单元还包括:线程掩码寄存器,用于保存每个线程束默认的线程掩码,所述线程掩码用于指示所述每个线程束中用于执行指令的有效线程;
其中,所述方法还包括:根据所述目标指令中指定的非谓词寄存器的标识在所述线程掩码指示的有效线程中执行所述目标指令。
15.一种计算设备,其特征在于,包括如权利要求1-7任一项所述的处理器装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110110263.8A CN114489791B (zh) | 2021-01-27 | 2021-01-27 | 处理器装置及其指令执行方法、计算设备 |
PCT/CN2021/139364 WO2022161013A1 (zh) | 2021-01-27 | 2021-12-17 | 处理器装置及其指令执行方法、计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110110263.8A CN114489791B (zh) | 2021-01-27 | 2021-01-27 | 处理器装置及其指令执行方法、计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114489791A true CN114489791A (zh) | 2022-05-13 |
CN114489791B CN114489791B (zh) | 2023-03-24 |
Family
ID=81491731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110110263.8A Active CN114489791B (zh) | 2021-01-27 | 2021-01-27 | 处理器装置及其指令执行方法、计算设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114489791B (zh) |
WO (1) | WO2022161013A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827252A (zh) * | 2023-01-10 | 2023-03-21 | 南京砺算科技有限公司 | 顶点数据处理方法、图形处理器、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040210886A1 (en) * | 2003-04-15 | 2004-10-21 | Sverre Jarp | Optimized switch statement code employing predicates |
US20090006816A1 (en) * | 2007-06-27 | 2009-01-01 | Hoyle David J | Inter-Cluster Communication Network And Heirarchical Register Files For Clustered VLIW Processors |
US20110078415A1 (en) * | 2009-09-28 | 2011-03-31 | Richard Craig Johnson | Efficient Predicated Execution For Parallel Processors |
US20110078225A1 (en) * | 2009-09-23 | 2011-03-31 | Richard Craig Johnson | Extended-Precision Integer Arithmetic and Logical Instructions |
US20110161616A1 (en) * | 2009-12-29 | 2011-06-30 | Nvidia Corporation | On demand register allocation and deallocation for a multithreaded processor |
US20150324198A1 (en) * | 2014-05-09 | 2015-11-12 | Samsung Electronics Co., Ltd. | Control flow without branching |
US20180275991A1 (en) * | 2017-03-27 | 2018-09-27 | Advanced Micro Devices, Inc. | Compiler-assisted inter-simd-group register sharing |
CN108595258A (zh) * | 2018-05-02 | 2018-09-28 | 北京航空航天大学 | 一种gpgpu寄存器文件动态扩展方法 |
US20180300143A1 (en) * | 2017-04-18 | 2018-10-18 | International Business Machines Corporation | Selective register allocation |
US20180300157A1 (en) * | 2017-04-18 | 2018-10-18 | International Business Machines Corporation | Register context restoration based on rename register recovery |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8707013B2 (en) * | 2010-07-13 | 2014-04-22 | Texas Instruments Incorporated | On-demand predicate registers |
CN103460180B (zh) * | 2011-03-25 | 2017-04-26 | 飞思卡尔半导体公司 | 带有断言寄存器的处理器系统、计算机系统和用于管理断言的方法 |
US10115175B2 (en) * | 2016-02-19 | 2018-10-30 | Qualcomm Incorporated | Uniform predicates in shaders for graphics processing units |
WO2020186630A1 (en) * | 2019-03-21 | 2020-09-24 | Huawei Technologies Co., Ltd. | Serializing divergent accesses using peeling |
-
2021
- 2021-01-27 CN CN202110110263.8A patent/CN114489791B/zh active Active
- 2021-12-17 WO PCT/CN2021/139364 patent/WO2022161013A1/zh active Application Filing
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040210886A1 (en) * | 2003-04-15 | 2004-10-21 | Sverre Jarp | Optimized switch statement code employing predicates |
US20090006816A1 (en) * | 2007-06-27 | 2009-01-01 | Hoyle David J | Inter-Cluster Communication Network And Heirarchical Register Files For Clustered VLIW Processors |
US20110078225A1 (en) * | 2009-09-23 | 2011-03-31 | Richard Craig Johnson | Extended-Precision Integer Arithmetic and Logical Instructions |
US20110078415A1 (en) * | 2009-09-28 | 2011-03-31 | Richard Craig Johnson | Efficient Predicated Execution For Parallel Processors |
US20110161616A1 (en) * | 2009-12-29 | 2011-06-30 | Nvidia Corporation | On demand register allocation and deallocation for a multithreaded processor |
US20150324198A1 (en) * | 2014-05-09 | 2015-11-12 | Samsung Electronics Co., Ltd. | Control flow without branching |
US20180275991A1 (en) * | 2017-03-27 | 2018-09-27 | Advanced Micro Devices, Inc. | Compiler-assisted inter-simd-group register sharing |
US20180300143A1 (en) * | 2017-04-18 | 2018-10-18 | International Business Machines Corporation | Selective register allocation |
US20180300157A1 (en) * | 2017-04-18 | 2018-10-18 | International Business Machines Corporation | Register context restoration based on rename register recovery |
CN108595258A (zh) * | 2018-05-02 | 2018-09-28 | 北京航空航天大学 | 一种gpgpu寄存器文件动态扩展方法 |
Non-Patent Citations (2)
Title |
---|
FARZAD KHORASANI: ""RegMutex: Inter-Warp GPU Register Time-Sharing"", 《IEEE》 * |
M.M. GONCALVES: ""Improving GPU register file reliability with a comprehensive ISA extension"", 《MICROELECTRONICS RELIABILITY》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827252A (zh) * | 2023-01-10 | 2023-03-21 | 南京砺算科技有限公司 | 顶点数据处理方法、图形处理器、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022161013A1 (zh) | 2022-08-04 |
CN114489791B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2483787B1 (en) | Efficient predicated execution for parallel processors | |
CN112099852A (zh) | 可变格式、可变稀疏矩阵乘法指令 | |
JP6020091B2 (ja) | 演算処理装置の制御プログラム、演算処理装置の制御方法および演算処理装置 | |
CN117349584A (zh) | 实行16位浮点矩阵点积指令的系统和方法 | |
US20080109795A1 (en) | C/c++ language extensions for general-purpose graphics processing unit | |
CN117724763A (zh) | 用于矩阵操作加速器的指令的装置、方法和系统 | |
CN106663072B (zh) | 用于配置中断的集合的装置和方法 | |
US9703603B1 (en) | System and method for executing accelerator call | |
JP2017107579A (ja) | リードマスク及びライトマスクにより制御されるベクトル移動命令 | |
JP6493088B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
CN112148251A (zh) | 跳过无意义的矩阵运算的系统和方法 | |
EP3974966A1 (en) | Large scale matrix restructuring and matrix-scalar operations | |
CN110909882A (zh) | 用于执行水平铺块操作的系统和方法 | |
CN116860334A (zh) | 用于计算两个区块操作数中的半字节的数量积的系统和方法 | |
CN114489791B (zh) | 处理器装置及其指令执行方法、计算设备 | |
US7617494B2 (en) | Process for running programs with selectable instruction length processors and corresponding processor system | |
JP2008217061A (ja) | Simd型マイクロプロセッサ | |
CN114691217A (zh) | 用于8位浮点矩阵点积指令的装置、方法和系统 | |
US6675290B1 (en) | Processor for improving instruction utilization using multiple parallel processors and computer system equipped with the processor | |
CN112463218B (zh) | 指令发射控制方法及电路、数据处理方法及电路 | |
US7953938B2 (en) | Processor enabling input/output of data during execution of operation | |
CN114327635A (zh) | 用于处理器的非对称执行端口和分配宽度的可缩放端口绑定的方法、系统和装置 | |
CN113961506A (zh) | 加速器和电子装置 | |
US10664285B1 (en) | Flexibly deriving intended thread data exchange patterns | |
WO2022121275A1 (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40066978 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |