CN114489792B - 处理器装置及其指令执行方法 - Google Patents
处理器装置及其指令执行方法 Download PDFInfo
- Publication number
- CN114489792B CN114489792B CN202110322336.XA CN202110322336A CN114489792B CN 114489792 B CN114489792 B CN 114489792B CN 202110322336 A CN202110322336 A CN 202110322336A CN 114489792 B CN114489792 B CN 114489792B
- Authority
- CN
- China
- Prior art keywords
- micro
- instruction
- memory
- memories
- file
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000015654 memory Effects 0.000 claims abstract description 107
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 11
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 5
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 101000667353 Homo sapiens von Willebrand factor A domain-containing protein 1 Proteins 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 102100039759 von Willebrand factor A domain-containing protein 1 Human genes 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- 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
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请实施例公开了一种处理器装置及其指令执行方法。该装置通过一组微存储器文件,每个微存储器文件对应连接至一组寄存器文件中的其中之一,用于临时保存多个物理线程执行指令的操作数和输出结果;操作数收集器分别连接至所述一组寄存器文件和一组微存储器文件,用于从所述寄存器文件和/或微存储器文件读取所述多个物理线程执行指令的操作数和向所述寄存器文件和/或微存储器文件写入所述多个物理线程执行指令的输出结果。本申请实施例可以显著降低处理器装置中指令执行时对寄存器文件的读写次数,降低处理芯片的动态功耗。
Description
技术领域
本申请涉及计算机高性能计算领域,具体涉及一种处理器装置及其指令执行方法。
背景技术
GPU(图形处理单元)/GPGPU(通用目的图形处理单元)等高性能计算处理芯片中,指令的执行需要对通用目的寄存器(GPR)文件进行频繁得读写访问。而现有的GPU/GPGPU等处理芯片中,通用目的寄存器文件通常采用静态随机存取存储器(SRAM)实现,这种对SRAM存储器的频繁读写访问会导致较大的芯片动态功耗。随着GPU/GPGPU计算性能不断升级,芯片中GPR数量也越发庞大,通常一个物理线程最多可以达到512个GPR,GPR的功耗随着数量提高而迅速增加。
发明内容
为了解决上述问题,本申请提出一种处理器装置及其指令执行方法,可以显著降低处理器装置中指令执行时对寄存器文件的读写次数,降低处理芯片的动态功耗。
第一方面,本申请提出一种处理器装置,包括:
一组寄存器文件,用于保存多个物理线程执行指令的操作数和输出结果;
一组微存储器文件,每个微存储器文件对应连接至所述一组寄存器文件中的其中之一,用于临时保存所述多个物理线程执行指令的操作数和输出结果;
操作数收集器,分别连接至所述一组寄存器文件和一组微存储器文件,用于从所述寄存器文件和/或微存储器文件读取所述多个物理线程执行指令的操作数和向所述寄存器文件和/或微存储器文件写入所述多个物理线程执行指令的输出结果;
一组计算单元,连接至所述操作数收集器,用于从所述操作数收集器获取所述操作数并执行所述指令的计算,向所述操作数收集器输出结果。
在优选的实施方式中,每个所述微存储器文件包括至少一组微存储器,所述微存储器文件被配置为每个线程束只访问所述至少一组微存储器中的其中一组。
在优选的实施方式中,所述微存储器包括一组D锁存器实现的存储结构,具有比所述寄存器文件更低的电压和功耗。
在优选的实施方式中,所述至少一组微存储器中的每组微存储器被配置为具有锁定和释放状态;当所述至少一组微存储器中的一组微存储器被任一线程束访问时,所述一组微存储器处于锁定状态,当所述至少一组微存储器中的一组微存储器未被任一线程束访问时,所述一组微存储器处于释放状态。
在优选的实施方式中,所述至少一组微存储器中的每组微存储器被配置为仅当其处于释放状态时,才允许被任一线程束访问。
在优选的实施方式中,所述至少一组微存储器中的每组微存储器被配置为响应于微存储器锁定指令的执行而进入锁定状态,响应于微存储器释放指令的执行而进入释放状态。
在优选的实施方式中,所述指令包括第一指令域,所述第一指令域用于指示在从所述寄存器文件读取所述操作数到所述操作数收集器时,同时将所述操作数写入指定的微存储器。
在优选的实施方式中,所述指令包括第二指令域,所述第二指令域用于指示从指定的微存储器读取所述操作数到所述操作数收集器。
在优选的实施方式中,所述指令包括第三指令域,所述第三指令域用于指示将指令的输出结果从所述操作数收集器写入指定的微存储器。
在优选的实施方式中,所述处理器装置还包括用于指示所述至少一组微存储器中的每组微存储器是否处于锁定状态的标识。
第二方面,本申请提出一种指令执行方法,适用于前述任一实施方式所述的处理器装置,该方法包括:
执行至少一个第一指令,根据所述第一指令中将操作数写入微存储器文件的指示,从寄存器文件读取所述第一指令的操作数时,将所述操作数读取到所述微存储器文件的一组微存储器;
执行至少一个第二指令,根据所述第二指令中从所述微存储器文件读取操作数的指示,从所述微存储器文件的所述一组微存储器读取操作数。
在优选的实施方式中,所述执行至少一个第一指令的步骤还包括:根据所述第一指令中将输出结果写入所述微存储器文件的指示,将所述第一指令的输出结果写入所述微存储器文件的所述一组微存储器。
在优选的实施方式中,所述执行至少一个第二指令的步骤还包括:根据所述第二指令中将输出结果写入所述微存储器文件的指示,将所述第二指令的输出结果写入所述微存储器文件的所述一组微存储器。
在优选的实施方式中,所述执行至少一个第一指令的步骤之前,所述方法还包括:执行微存储器锁定指令,以使得所述微存储器文件的所述一组微存储器处于锁定状态。
在优选的实施方式中,所述执行至少一个第二指令的步骤之后,所述方法还包括:执行微存储器释放指令,以使得所述微存储器文件的所述一组微存储器处于释放状态。
在优选的实施方式中,所述执行微存储器锁定指令的步骤还包括:判断所述微存储器文件中是否存在未处于锁定状态的一组微存储器,如否,则等待指定的时钟周期之后继续判断,直至所述微存储器文件中的一组微存储器未处于锁定状态。
第三方面,本申请还提出一种指令执行方法,适用于前述任一实施方式所述的处理器装置,该方法包括:
执行至少一个第一指令,根据所述第一指令中将输出结果写入微存储器文件的指示,将所述第一指令的输出结果写入所述微存储器文件的一组微存储器;
执行至少一个第二指令,根据所述第二指令中从所述微存储器文件读取操作数的指示,从所述微存储器文件的所述一组微存储器读取操作数。
在优选的实施方式中,所述执行至少一个第一指令的步骤之前,所述方法还包括:执行微存储器锁定指令,以使得所述微存储器文件的所述一组微存储器处于锁定状态。
在优选的实施方式中,所述执行至少一个第二指令的步骤之后,所述方法还包括:执行微存储器释放指令,以使得所述微存储器文件的所述一组微存储器处于释放状态。
在优选的实施方式中,所述执行微存储器锁定指令的步骤还包括:判断所述微存储器文件中是否存在未处于锁定状态的一组微存储器,如否,则等待指定的时钟周期之后继续判断,直至所述微存储器文件中的一组微存储器未处于锁定状态。
相对于现有技术,本申请至少具有如下有益效果:本申请通过微存储器文件临时保存指令操作数和输出结果,指令执行时从微存储器文件中直接读取指令操作数,减少从寄存器文件中频繁读取操作数的次数,可以显著降低寄存器文件的读写次数,转变为对更低功耗的微存储器文件的读写,从而降低寄存器文件读写导致的动态功耗。
附图说明
结合附图,并通过以下非限制性实施方式的详细描述将更充分地理解本申请的特征、目的和优点,其中:
图1是现有的图形处理单元(GPU)芯片100的一种示例性结构的示意图;
图2是具有8个计算单元的SIMT处理器的示例性结构的示意图;
图3是根据本申请一实施例的处理器装置300的结构示意图;
图4是根据本申请一实施例的微存储器文件中D锁存器的电路示意图;
图5是根据本申请一实施例的微存储器文件320的电路示意图;
图6是根据本申请一实施例的微存储器文件包括两组微存储器的示意图;
图7是执行微存储器锁定指令获取微存储器组的控制权的流程示意图;
图8是根据本申请一实施例的指令执行方法的流程示意图;
图9是根据本申请另一实施例的指令执行方法的流程示意图;
图10是根据本申请另一实施例的指令执行方法的流程示意图;
图11是根据本申请另一实施例的指令执行方法的流程示意图。
具体实施方式
下面通过实施例,并结合附图,对本申请的技术方案进行清楚、完整地说明,但是本申请不限于以下所描述的实施例。基于以下实施例,本领域普通技术人员在没有创造性劳动的前提下所获得的所有其它实施例,都属于本申请保护的范围。为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
应理解,本申请中诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件或其组合的存在,并不排除一个或多个其它特征、数字、步骤、行为、部件或其组合存在或被添加的可能性。本申请中“多个”通常可以解释为两个或两个以上的含义。
图1是现有的图形处理单元(GPU)芯片100的一种示例性结构的示意图。如图1所示,GPU芯片100通常包含一个或者多个流处理器110,流处理器110还包括调度器111、一个或多个单指令多线程处理器112、一个或多个一级缓存113、内存管理单元(MMU)114和共享存储115。流处理器110通过交叉开关矩阵或者交叉开关网络116与一个或多个二级缓存117以及PCIE控制器120进行数据的读写。除此之外,GPU芯片100还可以包含视频编解码121和/或其他处理核心(图中未示出)。
在GPU芯片100中,为了实现数据的高性能访问,大量使用静态随机存取存储器SRAM,例如单指令多线程处理器(SIMT)112中的寄存器文件(图2中示出),一级缓存113(指令缓存、常量缓存、数据缓存),共享存储115,内存管理单元114以及大量的FIFO队列(图中未示出)等。
单指令多线程(SIMT)处理单元112中,线程束(WARP)是执行指令的基本单位,线程束(WARP)包括以不同数据资源并行执行同一指令的多个线程。线程束中并行执行的线程数即为线程束的大小(WARPSIZE),通常采用16,32或64个并行线程数。一个单指令多线程(SIMT)处理器可以包括8-16个WARP,而一个流处理器可以达到32-128个WARP。
图2示例性地描述了一种单指令多线程处理器(SIMT)的结构。如图2所示,单指令多线程处理器(SIMT)112通常包含一组寄存器文件210、操作数收集器(OperandCollector)220和多个计算单元230。其中,寄存器文件210是以静态随机存取存储器SRAM实现,操作数收集器220和计算单元230以组合逻辑实现。
该示例中,SIMT处理器包含8个计算单元和32个物理线程T0-T31(本文中也可称为Thread 0-31)。其中,32个物理线程T0-T31中,每个物理线程包含128、192或者256个32位(bits)SRAM模块。当使用双口SRAM模块时,每个时钟周期可以同时读和写32个32bits数据。每个物理线程对应的寄存器文件也可以称为一个寄存器库(BANK),32个物理线程T0-T31对应到32个寄存器库B0-B31。如果每个寄存器库(BANK)的深度为256,那么该一组寄存器文件210即相当于32Bits*256*32Banks的存储结构。
操作数收集器220通常包括用于指令执行的操作数队列和输出结果队列,用于从寄存器文件210读取指令操作数以及向对应的寄存器文件210写入指令的输出结果。
当一个指令的操作数被从对应的寄存器文件读出并放入到相应的操作数队列中,即一个指令的所有操作数就绪后,该指令即被发送到计算单元230执行。
计算单元230可以包括整数执行单元、浮点执行单元、超越函数执行单元、张量计算单元以及其他计算单元。每个计算单元通常包含三个操作数输入端口,也就是说每个时钟周期可以读入三个数据。
SIMT处理器中的寄存器文件210通常采用向量通用目的寄存器(VGPR)实现,每个物理线程对应的VGPR数量非常庞大,可以包括128、192和256个或者最多512个VGPR,VGPR的功耗随着数量提高而迅速增加,而GPU的指令序列可能会重复读写相同的VGPR,从而带来大量的寄存器读写功耗。
参考如下代码片段(下文中称为目标示例代码):
该目标示例代码主要用于对向量fA和fB执行16次的循环乘加计算,假设用寄存器R0,R1,R2保存向量fA,寄存器R3,R4,R5保存向量fB,寄存器R6,R7,R8保存结果向量result。那么,上述代码可以转换为16次循环的融合乘加FMA运算指令序列:
FMAR6,R6,R0,R3
FMAR7,R7,R1,R4
FMAR8,R8,R2,R5
FMAR6,R6,R3,R0
FMAR7,R7,R4,R1
FMAR8,R8,R5,R2
…
那么,进行16次循环的融合乘加FMA运算指令后,该指令序列累计需要对寄存器R0-R8执行的读写次数可以参考下述表1。
由表1可见,如图2所示的示例性的处理器结构会存在对VGPR寄存器的大量读写次数,从而带来大量的寄存器读写功耗。
表1-现有处理器结构中目标示例代码读写寄存器次数
寄存器 | 循环体内VGPR读次数 | 循环体内VGPR写次数 |
R0 | 32 | |
R1 | 32 | |
R2 | 32 | |
R3 | 32 | |
R4 | 32 | |
R5 | 32 | |
R6 | 32 | 32 |
R7 | 32 | 32 |
R8 | 32 | 32 |
总计 | 288 | 96 |
图3是根据本申请一实施例的处理器装置300的结构示意图。如图3所示,本申请实施例的处理器装置300包括:
一组寄存器文件310,用于保存多个物理线程执行指令的操作数和输出结果;
一组微存储器文件320,每个微存储器文件320对应连接至所述一组寄存器文件310中的其中之一,用于临时保存所述多个物理线程执行指令的操作数和输出结果;
操作数收集器330,分别连接至所述一组寄存器文件310和一组微存储器文件320,用于从所述寄存器文件310和/或微存储器文件320读取所述多个物理线程执行指令的操作数和向所述寄存器文件310和/或微存储器文件320写入所述多个物理线程执行指令的输出结果;
一组计算单元340,连接至所述操作数收集器330,用于从所述操作数收集器330获取所述操作数并执行所述指令的计算,向所述操作数收集器330输出结果。
本实施例中,处理器装置中的每个物理线程分别对应一个由SRAM存储器实现的寄存器库,图3仅示意性地展示了32个物理线程T0-T31以及对应的32个寄存器库B0-B31的实施方式,但是该组寄存器文件310中对应的线程数量取决于该处理器装置的线程束所支持的执行指令的并行线程数量,这个数量可以是16、32、64等多种不同的实施方式,并不限于图3中示意性描述的32个线程数量。此外,图3仅示意性地描述了8个计算单元340,实际上,本申请实施例可以并不限于8个计算单元的实施方式。
本实施例中的微存储器文件320(Tiny Register File)同时连接至寄存器文件310和操作数收集器330,临时保存所述多个物理线程执行指令的操作数和输出结果。从而,每个物理线程对应的寄存器文件310的读出目标可以是操作数收集器330,也可以是微存储器文件320。操作数收集器33中操作数的来源可以是寄存器文件310,也可以是微存储器文件320。计算单元340的输出结果可以被写入寄存器文件310和微存储器文件320。
在计算单元340执行至少一条指令的计算时,可以从微存储器文件320中直接读取指令操作数,减少从寄存器文件310中频繁读取操作数的次数。由于微存储器文件320采用不同于SRAM存储器的存储结构,具有比SRAM存储器更低的电压和更低的功耗,而且面积能够随着工艺提升成正比下降。因此,本申请实施例可以减少寄存器文件读写的次数,可以显著降低芯片的动态功耗。
在一些实施方式中,每个微存储器文件320可以由D锁存器组来构建,D锁存器组具有比SRAM存储器更低的电压和功耗以及更小的电路面积。如图4所示,D锁存器包括一位输入信号D,一个使能信号EN和一位输出信号Q,可以将之抽象表达为图4中右侧描述的电路符号。
图5是根据本申请一实施例的微存储器文件320的电路示意图。图5示例性地描述了使用D锁存器组实现一个微存储器文件中16个32位微存储器的实施方式。如图5所示,该微存储器文件包含4位地址输入A0-A4,32位的数据输入DIN0-DIN31,一个写使能信号(WE_L),一个输出使能信号(OE_L)和32位的数据输出DOUT0-DOUT31。4位地址输入A0-A4通过4位译码器可以实现16个微存储器的地址寻址,其中每个微存储器文件对应的BANK包括16个微存储器,每行构成一个32位的微存储器。
在一些实施方式中,每个微存储器文件320可以包括至少一组微存储器,每个线程束只允许访问所述至少一组微存储器中的其中一组。
图6是根据本申请一实施例的微存储器文件包括两组微存储器的示意图。如图6所示,微存储器文件B0-B31中每个分别包括两组微存储器A组(B0A-B31A)和B组(B0B-B31B),每组分别包括8个微存储器TR0-TR7,每个线程束(WARP)只能访问其中一组。在一些实施方式中,依据不同的功耗、面积目标,每个微存储器文件也可以采用其他的双数微存储器数量,例如6,8,10,12,14,…,直到32个微存储器。
本实施例在微存储器文件中采用至少一组微存储器,尤其是两组以上的微存储器组,可以使得SIMT处理器能够实现对两个线程束(WARP)的单条指令调度,当WARP0有指令执行空闲时,可以调度另一个WARP1的指令,从而使得运算保持足够高的使用率,获得超过90%的指令调度效率。
在一些实施方式中,微存储器文件中的每组微存储器具有锁定和释放状态。当一组微存储器被任一线程束访问时,该组微存储器处于锁定状态,当一组微存储器未被任一线程束访问时,该组微存储器处于释放状态。仅当该组微存储器处于释放状态时,才允许被其它线程束访问。
为了实现本申请实施例的方案,本申请定义了一套完整的指令集来实现对微存储器文件中微存储器的锁定和释放控制以及读写操作。
以下以图6所示的微存储器文件结构为例进行详细说明。以计算单元执行三操作数指令为例,指令所需的三个操作数可以从寄存器文件310被同时读入微存储器文件320和操作数收集器330,指令输出结果可以写入寄存器文件310,也可以写入微存储器文件320。每个微存储器的写入需要4个比特位(Bits),那么三个操作数则一共需要12位的指令编码。写入每个微存储器的指令编码定义如下:
对微存储器文件中微存储器的进行读写操作的指令格式定义如下:
1)将操作数写入微存储器文件
以下述FMA指令一为例:
FMA R0,R1,R2,R3 SRC0:TR1 SRC1:TR2 SRC2:TR5
该指令中包括了指示将操作数读取到指定的微存储器的指令域。上述指令表示执行FMA指令,操作数为寄存器文件中的寄存器R1,R2,R3,指令输出结果保存到寄存器文件中寄存器R0,读取寄存器R1,R2,R3中操作数的同时将三个源操作数分别保存到微存储器文件中的微存储器TR1,TR2,TR5。该条指令执行结束,相当于执行了三条MOV指令,使得:
TR1=R1
TR2=R2
TR5=R3
同理,以下述FMA指令二为例:
FMA R8,R8,R2,R5 SRC1:TR2,SRC2:TR5
该指令表示执行FMA指令,操作数为寄存器文件中的寄存器R8,R2,R3,指令输出结果保存到寄存器文件中寄存器R8,读取寄存器R8,R2,R3中操作数的同时将两个源操作数R2,R5分别保存到微存储器文件中的微存储器TR2,TR5。该条指令执行结束,相当于执行了两条MOV指令,使得:
TR2=R2
TR5=R5
2)从微存储器文件读入操作数
以下述FMA指令三为例:
FMA R4,TR2,TR5,TR1
该指令中包括了从指定的微存储器读取操作数的指令域。该指令表示从微存储器文件中的微存储器TR2,TR5,TR1读入操作数执行FMA运算,输出结果保存至寄存器文件中寄存器R4。
3)将输出结果写入微存储器文件
以下述FMA指令四为例:
FMA TR4,TR1,TR2,TR3
该指令中包括了将指令的输出结果写入指定的微存储器的指令域。该指令表示从微存储器文件中的微存储器TR1,TR2,TR3读入操作数执行FMA运算,输出结果保存至微存储器文件中的微存储器TR4。
4)微存储器组的锁定和释放
本申请实施例使用微存储器锁定指令和释放指令分别锁定和释放每个微存储器组。
微存储器锁定指令Lock_tiny_registger用于锁定微存储器文件中一组微存储器。线程束WARP执行指令读写一组微存储器之前,可以通过执行微存储器锁定指令锁定该组微存储器。
微存储器释放指令Unlock_tiny_register用于释放微存储器文件中一组微存储器。线程束WARP执行指令读写一组微存储器之后,可以通过执行微存储器释放指令释放该组微存储器。
如果微存储器文件中的两组微存储器都被锁定,那么该线程束WARP需要等待有一组微存储器被释放为止。读写微存储器的指令只能出现在微存储器锁定指令Lock_tiny_registger之后和微存储器释放指令Unlock_tiny_register之前。
每个SIMT处理器可以包含两个比特位(BITS)分别用于标识两组微存储器是否被锁定,如下表所示:
每个线程束WARP可以包含两个内嵌变量,如下表所示:
图7描述了一个线程束(WARP[n])执行微存储器锁定指令Lock_tiny_registger尝试获取微存储器组的控制权的示意性流程。如图7所示,当前线程束开始尝试获取当前SIMT处理器(SIMTx)中微存储器组的控制权。
在步骤S710,首先判断当前SIMT处理器的微存储器锁定标识TINY_REG_LOCKED中A组微存储器锁定标识是否为0,即A组微存储器是否未锁定;如是,则在步骤S720,将当前SIMT处理器的A组微存储器锁定标识置为1,将当前线程束的是否锁定微存储器标识置为1,并将当前线程束的锁定微存储器索引标识置为0,即获得对A组微存储器的锁定控制;如否,则在步骤S730,进一步判断当前SIMT处理器的微存储器锁定标识TINY_REG_LOCKED中B组微存储器锁定标识是否为0,即B组微存储器是否未锁定。
如是,则在步骤S740,将当前SIMT处理器的B组微存储器锁定标识置为1,将当前线程束的是否锁定微存储器标识置为1,并将当前线程束的锁定微存储器索引标识置为1,即获得对B组微存储器的锁定控制;如否,则在步骤S740,等待四个时钟周期,再次返回执行步骤S710,直至获得A组微存储器或者B组微存储器的控制权。
当一个线程束(WARP[n])通过微存储器锁定指令Lock_tiny_registger获得了A组微存储器或者B组微存储器的控制权,并执行完至少一条指令序列之后,可以通过微存储器释放指令Unlock_tiny_register来释放所获得的A组微存储器或者B组微存储器的控制权。线程束执行Unlock_Tiny_register指令时,会将当前SIMT处理器的微存储器锁定标识TINY_REG_LOCKED清除,即清除该SIMT处理器的A组微存储器锁定标识或者B组微存储器锁定标识,同时将当前线程束的是否锁定微存储器标识IS_LOCKED_TINY_REG置为0,以清除该线程束的锁定微存储器标识。
Unlock_tiny_register执行的伪代码可以示意性表示为:
SIMTx.TINY_REG_LOCKED_BIT=SIMTx.TINY_REG_LOCKED_BIT&(~(1<<WARP[n].LOCKED_REG_IDX));//清除该SIMTx的A组微存储器或者B组微存储器的标识;
WARP[n].IS_LOCKED_TINY_REG=0;//清除该WARP的是否锁定微存储器标识。
5)目标示例代码的执行优化
基于以上实施例描述的指令集定义,可以对前述目标示例代码的执行进行优化。假设将目标示例代码中fA[0],fA[1],fA[2],fB[0],fB[1],fB[2],result[0],result[1]分别保存在微存储器TR0,TR1,TR7;Result[2]保存在寄存器R8。那么目标示例代码在本申请的处理器架构下的编译结果可以表示为:
Lock_tiny_register
FMA TR6,R6,R0,R3 SRC1:TR0,SRC2:TR3//同时将寄存器R0,R3的操作数fA[0],fB[0]分别写入微存储器文件的微存储器TR0,TR3;
FMA TR7,R7,R1,R4 SRC1:TR1,SRC2:TR4//同时将寄存器R1,R4的操作数fA[1],fB[1]写入微存储器文件的微存储器TR1,TR4,并将输出结果写入微存储器TR7;
FMA R8,R8,R2,R5 SRC1:TR2,SRC2:TR5//同时将寄存器R2,R5操作数fA[1],fB[1]写入微存储器文件的微存储器TR2,TR5;
FMA TR6,TR6,TR3,TR0
FMA TR7,TR7,TR4,TR1
FMA R8,R8,TR5,TR2
FMA TR6,TR6,TR0,TR3
FMA TR7,TR7,TR1,TR4
FMA R8,R8,TR2,TR5
…
FMA R6,TR6,TR3,TR0
FMA R7,TR7,TR4,TR1
FMA R8,R8,TR5,TR2
Unlock_tiny_register
那么,目标示例代码执行16次循环的融合乘加FMA运算指令后,上述优化后的指令序列累计对寄存器R0-R8执行的读写次数可以参考下述表2。
表2-本申请处理器结构中目标示例代码读写寄存器和微存储器的次数
从表2的统计数据可见,采用本申请优化后的指令序列,对于寄存器文件的读次数降低为40次,写次数降低为34次,对微存储器文件的读次数为248次,写次数为68次。由于微存储器文件的读写动态功耗远远低于寄存器文件的动态功耗,大约小于寄存器文件的动态功耗的10%。结合前述表1中现有处理器结构中目标示例代码读写寄存器次数的统计数据,可以得到本申请实施例对寄存器文件的读写次数大约是现有方案的比例为:(40+34)/(288+96)=19.5%。假设以微存储器文件的功耗为寄存器文件的10%估算,那么本申请实施例的方案中,处理器装置的动态功耗为现有方案的19.5%+(80.5%)*10%=27.5%。由此可见,本申请实施例能够显著降低寄存器文件的读写次数,转变为对更低功耗的微存储器文件的读写,从而降低寄存器文件读写导致的动态功耗。
图8是根据本申请一实施例的指令执行方法的流程示意图。如图8所示,本申请实施例的指令执行方法适用于前述本申请任一实施例的处理器装置。所述方法可以包括以下步骤:
步骤S820,执行至少一个第一指令,根据所述第一指令中将操作数写入微存储器文件的指示,从寄存器文件读取所述第一指令的操作数时,将所述操作数读取到所述微存储器文件的一组微存储器;
步骤S830,执行至少一个第二指令,根据所述第二指令中从所述微存储器文件读取操作数的指示,从所述微存储器文件的所述一组微存储器读取操作数。
在一些实施方式中,所述步骤S820还包括:根据所述第一指令中将输出结果写入所述微存储器文件的指示,将所述第一指令的输出结果写入所述微存储器文件的所述一组微存储器。
在一些实施方式中,所述步骤S830还包括:根据所述第二指令中将输出结果写入所述微存储器文件的指示,将所述第二指令的输出结果写入所述微存储器文件的所述一组微存储器。
在一些实施方式中,如图9所示,所述步骤S820之前,所述方法还包括:
步骤S810,执行微存储器锁定指令,以使得所述微存储器文件的所述一组微存储器处于锁定状态。
在一些实施方式中,如图9所示,所述步骤S830之后,所述方法还包括:
步骤S840,执行微存储器释放指令,以使得所述微存储器文件的所述一组微存储器处于释放状态。
在一些实施方式中,所述步骤S810还包括:判断所述微存储器文件中是否存在未处于锁定状态的一组微存储器,如否,则等待指定的时钟周期之后继续判断,直至所述微存储器文件中的一组微存储器未处于锁定状态。
图10是根据本申请另一实施例的指令执行方法的流程示意图。如图10所示,本申请实施例的指令执行方法适用于前述本申请任一实施例的处理器装置。所述方法可以包括以下步骤:
步骤S1020,执行至少一个第一指令,根据所述第一指令中将输出结果写入微存储器文件的指示,将所述第一指令的输出结果写入所述微存储器文件的一组微存储器;
步骤S1030,执行至少一个第二指令,根据所述第二指令中从所述微存储器文件读取操作数的指示,从所述微存储器文件的所述一组微存储器读取操作数。
在一些实施方式中,如图11所示,所述步骤S1020之前,所述方法还包括:
步骤S1010,执行微存储器锁定指令,以使得所述微存储器文件的所述一组微存储器处于锁定状态。
在一些实施方式中,如图11所示,所述步骤S1030之后,所述方法还包括:
步骤S1040,执行微存储器释放指令,以使得所述微存储器文件的所述一组微存储器处于释放状态。
在一些实施方式中,所述步骤S1010还包括:判断所述微存储器文件中是否存在未处于锁定状态的一组微存储器,如否,则等待指定的时钟周期之后继续判断,直至所述微存储器文件中的一组微存储器未处于锁定状态。
本申请实施例的指令执行方法通过在执行至少一条指令时,从微存储器文件中直接读取指令操作数,减少从寄存器文件中频繁读取操作数的次数。因此,本申请实施例能够显著降低寄存器文件的读写次数,转变为对更低功耗的微存储器文件的读写,从而降低寄存器文件读写导致的动态功耗。
本申请实施例的处理器装置及其指令执行方法可以广泛应用于中央处理单元(CPU)、图形处理单元(GPU)、数字处理单元(DSP)、现场可编程门阵列(FGPA)、人工智能芯片(AI)、视频编解码芯片(Video Code)等处理器电路中,来降低SRAM寄存器文件的读写次数,降低芯片的动态功耗。
本申请实施例中所涉及到的步骤、单元或模块可以通过硬件电路或者软硬件逻辑相结合的方式实现。本申请的实施方式并不限于上述实施例所述,在不偏离本申请的精神和范围的情况下,本领域普通技术人员可以在形式和细节上对本申请做出各种改变和改进,这些均被认为落入了本申请的保护范围。
Claims (20)
1.一种处理器装置,其特征在于,包括:
一组寄存器文件,用于保存多个物理线程执行指令的操作数和输出结果;
一组微存储器文件,每个微存储器文件对应连接至所述一组寄存器文件中的其中之一,用于临时保存所述多个物理线程执行指令的操作数和输出结果;
操作数收集器,分别连接至所述一组寄存器文件和一组微存储器文件,用于从所述寄存器文件和/或微存储器文件读取所述多个物理线程执行指令的操作数和向所述寄存器文件和/或微存储器文件写入所述多个物理线程执行指令的输出结果;
一组计算单元,连接至所述操作数收集器,用于从所述操作数收集器获取所述操作数并执行所述指令的计算,向所述操作数收集器输出结果。
2.根据权利要求1所述的处理器装置,其特征在于,每个所述微存储器文件包括至少一组微存储器,所述微存储器文件被配置为每个线程束只访问所述至少一组微存储器中的其中一组。
3.根据权利要求2所述的处理器装置,其特征在于,所述微存储器包括一组D锁存器实现的存储结构,具有比所述寄存器文件更低的电压和功耗。
4.根据权利要求3所述的处理器装置,其特征在于,所述至少一组微存储器中的每组微存储器被配置为具有锁定和释放状态;当所述至少一组微存储器中的一组微存储器被任一线程束访问时,所述一组微存储器处于锁定状态,当所述至少一组微存储器中的一组微存储器未被任一线程束访问时,所述一组微存储器处于释放状态。
5.根据权利要求4所述的处理器装置,其特征在于,所述至少一组微存储器中的每组微存储器被配置为仅当其处于释放状态时,才允许被任一线程束访问。
6.根据权利要求5所述的处理器装置,其特征在于,所述至少一组微存储器中的每组微存储器被配置为响应于微存储器锁定指令的执行而进入锁定状态,响应于微存储器释放指令的执行而进入释放状态。
7.根据权利要求5所述的处理器装置,其特征在于,所述指令包括第一指令域,所述第一指令域用于指示在从所述寄存器文件读取所述操作数到所述操作数收集器时,同时将所述操作数写入指定的微存储器。
8.根据权利要求5所述的处理器装置,其特征在于,所述指令包括第二指令域,所述第二指令域用于指示从指定的微存储器读取所述操作数到所述操作数收集器。
9.根据权利要求5所述的处理器装置,其特征在于,所述指令包括第三指令域,所述第三指令域用于指示将指令的输出结果从所述操作数收集器写入指定的微存储器。
10.根据权利要求6所述的处理器装置,其特征在于,所述处理器装置还包括用于指示所述至少一组微存储器中的每组微存储器是否处于锁定状态的标识。
11.一种指令执行方法,其特征在于,适用于如权利要求1-10任一项所述的处理器装置,该方法包括:
执行至少一个第一指令,根据所述第一指令中将操作数写入微存储器文件的指示,从寄存器文件读取所述第一指令的操作数时,将所述操作数读取到所述微存储器文件的一组微存储器;
执行至少一个第二指令,根据所述第二指令中从所述微存储器文件读取操作数的指示,从所述微存储器文件的所述一组微存储器读取操作数。
12.根据权利要求11所述的指令执行方法,其特征在于,所述执行至少一个第一指令的步骤还包括:根据所述第一指令中将输出结果写入所述微存储器文件的指示,将所述第一指令的输出结果写入所述微存储器文件的所述一组微存储器。
13.根据权利要求11所述的指令执行方法,其特征在于,所述执行至少一个第二指令的步骤还包括:根据所述第二指令中将输出结果写入所述微存储器文件的指示,将所述第二指令的输出结果写入所述微存储器文件的所述一组微存储器。
14.根据权利要求11所述的指令执行方法,其特征在于,所述执行至少一个第一指令的步骤之前,所述方法还包括:执行微存储器锁定指令,以使得所述微存储器文件的所述一组微存储器处于锁定状态。
15.根据权利要求14所述的指令执行方法,其特征在于,所述执行至少一个第二指令的步骤之后,所述方法还包括:执行微存储器释放指令,以使得所述微存储器文件的所述一组微存储器处于释放状态。
16.根据权利要求14所述的指令执行方法,其特征在于,所述执行微存储器锁定指令的步骤还包括:判断所述微存储器文件中是否存在未处于锁定状态的一组微存储器,如否,则等待指定的时钟周期之后继续判断,直至所述微存储器文件中的一组微存储器未处于锁定状态。
17.一种指令执行方法,其特征在于,适用于如权利要求1-10任一项所述的处理器装置,该方法包括:
执行至少一个第一指令,根据所述第一指令中将输出结果写入微存储器文件的指示,将所述第一指令的输出结果写入所述微存储器文件的一组微存储器;
执行至少一个第二指令,根据所述第二指令中从所述微存储器文件读取操作数的指示,从所述微存储器文件的所述一组微存储器读取操作数。
18.根据权利要求17所述的指令执行方法,其特征在于,所述执行至少一个第一指令的步骤之前,所述方法还包括:执行微存储器锁定指令,以使得所述微存储器文件的所述一组微存储器处于锁定状态。
19.根据权利要求18所述的指令执行方法,其特征在于,所述执行至少一个第二指令的步骤之后,所述方法还包括:执行微存储器释放指令,以使得所述微存储器文件的所述一组微存储器处于释放状态。
20.根据权利要求18所述的指令执行方法,其特征在于,所述执行微存储器锁定指令的步骤还包括:判断所述微存储器文件中是否存在未处于锁定状态的一组微存储器,如否,则等待指定的时钟周期之后继续判断,直至所述微存储器文件中的一组微存储器未处于锁定状态。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110322336.XA CN114489792B (zh) | 2021-03-25 | 2021-03-25 | 处理器装置及其指令执行方法 |
PCT/CN2021/136821 WO2022199131A1 (zh) | 2021-03-25 | 2021-12-09 | 处理器装置及其指令执行方法 |
US18/279,664 US20240311155A1 (en) | 2021-03-25 | 2021-12-09 | Processor and Method for Executing an Instruction with a Processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110322336.XA CN114489792B (zh) | 2021-03-25 | 2021-03-25 | 处理器装置及其指令执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114489792A CN114489792A (zh) | 2022-05-13 |
CN114489792B true CN114489792B (zh) | 2022-10-11 |
Family
ID=81491740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110322336.XA Active CN114489792B (zh) | 2021-03-25 | 2021-03-25 | 处理器装置及其指令执行方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240311155A1 (zh) |
CN (1) | CN114489792B (zh) |
WO (1) | WO2022199131A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115016847B (zh) * | 2022-08-08 | 2022-12-20 | 沐曦集成电路(上海)有限公司 | 提高流水线吞吐的方法、装置及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4723204A (en) * | 1982-07-07 | 1988-02-02 | Gte Automatic Electric Incorporated | Dynamic RAM refresh circuit |
CN1285064A (zh) * | 1997-12-16 | 2001-02-21 | 英特尔公司 | 进行无序多线程执行的加载和存储指令排序系统 |
CN1656444A (zh) * | 2002-05-22 | 2005-08-17 | 皇家飞利浦电子股份有限公司 | 用于解码指令序列的方法和设备 |
CN1688974A (zh) * | 2001-12-31 | 2005-10-26 | 英特尔公司 | 挂起线程执行直到发生指定的存储器访问的方法和设备 |
CN1708745A (zh) * | 2002-10-11 | 2005-12-14 | 沙桥技术有限公司 | 减少多线程处理器中寄存器文件端口的方法和装置 |
CN101124539A (zh) * | 2004-05-13 | 2008-02-13 | 皇家飞利浦电子股份有限公司 | 低功率汇编器 |
CN103631660A (zh) * | 2013-09-23 | 2014-03-12 | 中国科学院数据与通信保护研究教育中心 | 在gpu中进行大整数计算时的存储资源分配方法及装置 |
CN112083954A (zh) * | 2019-06-13 | 2020-12-15 | 华夏芯(北京)通用处理器技术有限公司 | 一种gpu中显式独立掩码寄存器的掩码操作方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7634621B1 (en) * | 2004-07-13 | 2009-12-15 | Nvidia Corporation | Register file allocation |
US20060095731A1 (en) * | 2004-09-02 | 2006-05-04 | Yuval Bustan | Method and apparatus for avoiding read port assignment of a reorder buffer |
US10255228B2 (en) * | 2011-12-06 | 2019-04-09 | Nvidia Corporation | System and method for performing shaped memory access operations |
JP2013125355A (ja) * | 2011-12-13 | 2013-06-24 | Fujitsu Ltd | 演算処理装置および演算処理装置の制御方法 |
US8639882B2 (en) * | 2011-12-14 | 2014-01-28 | Nvidia Corporation | Methods and apparatus for source operand collector caching |
CN108595258B (zh) * | 2018-05-02 | 2021-07-27 | 北京航空航天大学 | 一种gpgpu寄存器文件动态扩展方法 |
-
2021
- 2021-03-25 CN CN202110322336.XA patent/CN114489792B/zh active Active
- 2021-12-09 US US18/279,664 patent/US20240311155A1/en active Pending
- 2021-12-09 WO PCT/CN2021/136821 patent/WO2022199131A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4723204A (en) * | 1982-07-07 | 1988-02-02 | Gte Automatic Electric Incorporated | Dynamic RAM refresh circuit |
CN1285064A (zh) * | 1997-12-16 | 2001-02-21 | 英特尔公司 | 进行无序多线程执行的加载和存储指令排序系统 |
CN1688974A (zh) * | 2001-12-31 | 2005-10-26 | 英特尔公司 | 挂起线程执行直到发生指定的存储器访问的方法和设备 |
CN1656444A (zh) * | 2002-05-22 | 2005-08-17 | 皇家飞利浦电子股份有限公司 | 用于解码指令序列的方法和设备 |
CN1708745A (zh) * | 2002-10-11 | 2005-12-14 | 沙桥技术有限公司 | 减少多线程处理器中寄存器文件端口的方法和装置 |
CN101124539A (zh) * | 2004-05-13 | 2008-02-13 | 皇家飞利浦电子股份有限公司 | 低功率汇编器 |
CN103631660A (zh) * | 2013-09-23 | 2014-03-12 | 中国科学院数据与通信保护研究教育中心 | 在gpu中进行大整数计算时的存储资源分配方法及装置 |
CN112083954A (zh) * | 2019-06-13 | 2020-12-15 | 华夏芯(北京)通用处理器技术有限公司 | 一种gpu中显式独立掩码寄存器的掩码操作方法 |
Non-Patent Citations (4)
Title |
---|
A STT-RAM-based low-power hybrid register file for GPGPUs;Gushu Li .etc;《DAC’15:Proceedings of the 52nd Annual Design Automation Conference》;20150607;1-6 * |
Optimized Password Recovery for SHA-512 on GPUs;Can Ge .etc;《2017 IEEE International Conference on Computational Science and Engineering (CSE) and IEEE International Conference on Embedded and Ubiquitous Computing (EUC)》;20170810;第2卷;1-4 * |
Warped register file: A power efficient register file for GPGPUs;Mohammad Abdel-Majeed .etc;《2013 IEEE 19th International Symposium on High Performance Computer Architecture (HPCA)》;20130603;1-12 * |
通用图形处理器线程调度优化方法研究综述;何炎祥等;《计算机学报》;20160915;第39卷(第9期);1733-1749 * |
Also Published As
Publication number | Publication date |
---|---|
WO2022199131A1 (zh) | 2022-09-29 |
CN114489792A (zh) | 2022-05-13 |
US20240311155A1 (en) | 2024-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12086603B2 (en) | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions | |
US9606797B2 (en) | Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor | |
US8200949B1 (en) | Policy based allocation of register file cache to threads in multi-threaded processor | |
US8375176B2 (en) | Lock mechanism to enable atomic updates to shared memory | |
US11132199B1 (en) | Processor having latency shifter and controlling method using the same | |
US20210311743A1 (en) | Microprocessor having self-resetting register scoreboard | |
CN107408040A (zh) | 配置成利用无序执行对可变长度向量进行操作的向量处理器 | |
JPH04313121A (ja) | インストラクションメモリ装置 | |
KR19980069854A (ko) | 슈퍼스칼라 프로세서에서 간단한 비의존성 파이프라인 인터록 제어로서 판독되는 지연된 저장 데이타 | |
TWI764997B (zh) | 圖形處理單元及處理圖形應用程式的方法 | |
WO2001037083A2 (en) | Decompression bit processing with a general purpose alignment tool | |
US20170139751A1 (en) | Scheduling method and processing device using the same | |
CN116880903A (zh) | 具有提取提前滞后的流引擎 | |
CN113900710B (zh) | 扩展存储器组件 | |
CN114489792B (zh) | 处理器装置及其指令执行方法 | |
US7383420B2 (en) | Processor and method of indirect register read and write operations | |
US10437590B2 (en) | Inter-cluster communication of live-in register values | |
CN113377438B (zh) | 一种处理器及其数据读写方法 | |
Nag et al. | OrderLight: Lightweight memory-ordering primitive for efficient fine-grained PIM computations | |
US11164625B2 (en) | Extended memory communication | |
CN114253607A (zh) | 用于由集群化解码流水线对共享微代码定序器的乱序访问的方法、系统和装置 | |
US20090063881A1 (en) | Low-overhead/power-saving processor synchronization mechanism, and applications thereof | |
CN109683959B (zh) | 处理器的指令执行方法及其处理器 | |
US11481317B2 (en) | Extended memory architecture | |
Kodaka et al. | Design and implementation of scalable, transparent threads for multi-core media processor |
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: 40066979 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |