CN114868110A - 算术逻辑单元寄存器排序 - Google Patents
算术逻辑单元寄存器排序 Download PDFInfo
- Publication number
- CN114868110A CN114868110A CN202080079523.3A CN202080079523A CN114868110A CN 114868110 A CN114868110 A CN 114868110A CN 202080079523 A CN202080079523 A CN 202080079523A CN 114868110 A CN114868110 A CN 114868110A
- Authority
- CN
- China
- Prior art keywords
- operand
- register
- registers
- operands
- during
- 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
- 238000012545 processing Methods 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 17
- 238000012546 transfer Methods 0.000 abstract description 12
- 230000011664 signaling Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 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/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- 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
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- Nonlinear Science (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种图形处理单元(GPU)[100]对操作数向一组操作数寄存器[106]的提供进行排序,由此允许所述GPU在处理之间共享所述操作数寄存器中的至少一者。所述GPU包括多个算术逻辑单元(ALU)[108],其中所述ALU中的至少一者[116]被配置成执行双精度运算。所述GPU还包括一组操作数寄存器,所述操作数寄存器被配置成存储单精度操作数。针对请求双精度运算的多个执行线程,所述GPU将对应的操作数存储在所述操作数寄存器处。在多个执行循环内,所述GPU对将操作数从一组操作数寄存器传送到指定的双精度操作数寄存器进行排序。在每一执行循环期间,双精度ALU使用存储在所述双精度操作数寄存器处的操作数来执行双精度运算。
Description
背景技术
处理器采用被专门设计和配置成代表所述处理器执行指定运算的一个或多个处理单元。举例来说,一些处理器采用图形处理单元(GPU)来执行图形和矢量处理运算。处理器的中央处理单元(CPU)将命令提供到GPU,并且GPU的命令处理器(CP)将所述命令解码成一个或多个运算。GPU的执行单元(诸如,一个或多个算术逻辑单元(ALU))执行所述运算以执行图形和矢量处理运算。所述ALU采用操作数寄存器来存储用于处理的操作数。确切来说,当线程在GPU处执行时,所述线程将操作数存储在操作数寄存器处并将操作码或其他控制信息提供到ALU以控制ALU使用所述操作数执行的数学运算。使用大数目个操作数寄存器允许GPU支持同时执行相对大数目个线程。然而,这种大数目个操作数寄存器占用包括电力和电路面积在内的大量处理资源。
附图说明
可通过参考附图更好地理解本公开并且使本领域技术人员明白本公开的诸多特征和优点。在不同的图式中使用相同的参考符号来指示类似或相同的项目。
图1是根据一些实施方案的被配置成对操作数从一组操作数寄存器到另一组操作数寄存器的提供进行排序的图形处理单元(GPU)的框图。
图2是示出根据一些实施方案的将操作数提供到图1的GPU的寄存器的框图。
图3是示出根据一些实施方案的图1的GPU的操作数寄存器和对应ALU的配置的框图。
图4是示出根据一些实施方案的将操作数提供在图3的操作数寄存器处的示例排序的一部分的框图。
图5是示出根据一些实施方案的图4的示例排序的另一部分的框图。
图6是示出根据一些实施方案的图4的示例排序的又一部分的框图。
图7是示出根据一些实施方案的图5的示例排序的又一部分的框图。
具体实施方式
图1到图7示出其中图形处理单元(GPU)对向一组操作数寄存器的操作数提供进行排序由此允许GPU在处理之间共享操作数寄存器中的至少一者的技术。GPU包括多个算术逻辑单元(ALU),其中所述ALU中的至少一者被配置成执行双精度运算。GPU还包括一组操作数寄存器,所述操作数寄存器被配置成存储单精度操作数。针对请求双精度运算的多个执行线程,GPU将对应的操作数存储在操作数寄存器处。在多个执行循环内,GPU对将操作数从一组操作数寄存器传送到指定的双精度操作数寄存器进行排序。在每一执行循环期间,双精度ALU使用存储在双精度操作数寄存器处的操作数来执行双精度运算。通过以此方式对在寄存器之间的操作数提供进行排序,GPU允许多个处理块(例如,多个矢量着色器处理器)共享双精度操作数寄存器,从而减小电路面积和由操作数寄存器所消耗的电力。
图1示出根据一些实施方案的支持对用于双精度数学运算的操作数的提供进行排序的GPU 100。出于描述目的,假定GPU 100是执行指令集(例如,计算机程序)以代表电子装置实行任务的处理器的一部分。因此,在不同的实施方案中,GPU 100是诸如台式计算机、笔记本计算机、服务器、平板计算机、智能电话、游戏控制台等电子装置的一部分。此外,假定包括GPU 100的处理器包括执行指令集的中央处理单元(CPU)。
GPU 100被设计和制造成代表CPU实行指定的运算。确切来说,GPU 100代表CPU执行图形和矢量处理运算。举例来说,在一些实施方案中,在执行指令的过程中,CPU生成与图形和矢量处理运算相关联的命令。CPU将所述命令提供到GPU 100,GPU 100采用命令处理器(未示出)来将所述命令解码成指令集以供在GPU 100处执行。
为了便于执行指令,GPU 100包括多个计算单元,诸如一个或多个单指令多数据(SIMD)块,其中每一SIMD块被配置成执行运算的对应线程。在一些实施方案中,GPU的命令处理器对从CPU接收到的命令进行解码,并且基于所述命令生成并调度将在SIMD块处执行的多组线程。每一SIMD块包括多个矢量着色器处理器(VSP)(例如VSP102、103、104)。在一些实施方案中,每一SIMD块包括四个不同的VSP,由此支持同时执行四个不同的线程。因此,假定每一计算单元包括四个SIMD块,其中每一SIMD块包括四个VSP,每一计算单元支持同时执行16个线程。
在执行期间,线程生成数学运算以通过对应的操作数来执行。为了支持数学运算的执行,GPU 100包括一组操作数寄存器106(例如,操作数寄存器111、112)和一组ALU 108(例如ALU 114、116)。操作数寄存器106存储用于数学运算的操作数并且ALU 108使用存储的操作数来执行数学运算。确切来说,为了执行数学运算,线程将对应的操作数存储在操作数寄存器106中的一者处(如下文进一步描述),并将控制信息(未示出)提供到ALU 108中的一者。基于所述控制信息,ALU使用存储的操作数执行数学运算并将结果存储在结果寄存器(未示出)处以供线程检索。
将了解,为了清晰地进行说明,本文中将操作数寄存器106中的每一者示出为单个块。然而,在一些实施方案中,操作数寄存器106中的每一者存储多个操作数。图2处示出一个示例,图2描绘存储用于ALU 114的操作数的操作数寄存器111。在所描绘的实施方案中,操作数寄存器111存储用于对应线程的三个操作数,所述三个操作数分别被指定为“A”、“B”和“C”。
返回图1,将了解,所述图示出在VSP 102-104之间共享操作数寄存器106和ALU108。然而,在其他实施方案中,操作数寄存器106中的一者或多者或ALU 108中的一者或多者专用于个别VSP。因此,举例来说,在一些实施方案中,将操作数寄存器106的子集分配给VSP 102且将操作数寄存器的不同子集分配给VSP 103,以使得每一VSP不能使用已分配给另一VSP的操作数寄存器。类似地,在一些实施方案中,将ALU 108的子集分配给VSP 102且将ALU 108的不同子集分配给VSP 103,以使得每一VSP不能将数学运算分配给已分配给不同VSP的ALU。
在一些实施方案中,由执行线程生成的不同数学运算中的至少一些数学运算与不同精度相关联,从而指示对应操作数的精度水平。举例来说,在一些实施方案中,执行线程生成单精度数学运算和双精度数学运算,其中双精度操作数(即,用于双精度运算的操作数)是单精度操作数的两倍大。操作数寄存器106的子集中的每一者的大小被定为存储单精度操作数,而操作数寄存器106的另一子集中的每一者的大小被定为存储双精度操作数。在一些实施方案中且如下文更详细地描述,在双精度操作数等待108中的一者或多者的处理时,操作数寄存器106中的单精度操作数寄存器存储这些操作数的一些部分。
ALU 108的子集中的每一者包括以对应的精度使用所述精度的操作数来执行数学运算的电路系统。因此,举例来说,ALU 114包括执行单精度数学运算(使用单精度操作数)的电路系统,并且ALU 116包括执行双精度运算(使用双精度操作数)的电路系统。在一些实施方案中,在GPU 100处执行的线程预期请求相对高数目个单精度运算且请求相对低数目个双精度运算。因此,ALU 108包含较高数目个单精度ALU和较低数目个双精度ALU。此外,操作数寄存器106包含较高数目个单精度操作数寄存器和存储双精度操作数的较低数目个操作数寄存器。图3示出根据一些实施方案的示例。在所描绘的示例中,ALU 108包含15个单精度(SP)ALU和一个双精度ALU。操作数寄存器106包含多个单精度操作数寄存器,其中一对操作数寄存器存储用于双精度ALU 116的双精度操作数,所述一对操作数寄存器被指定为操作数寄存器321和322。在一些实施方案中,操作数寄存器321存储双精度操作数的“高”位或最高有效位,并且操作数寄存器322存储双精度操作数的“低”位或最低有效位。在一些实施方案中,在不同的时间,寄存器321和322也存储用于SP ALU中的一者或多者的单精度操作数。也就是说,根据正在执行的给定算术运算的精度,寄存器321和322存储用于由一个或多个SP ALU(例如SP ALU 323)处理的单精度操作数,或者一起存储用于由DP ALU 116处理的一组双精度。
如上文所述,在许多情形中,GPU 100预期执行相对高数目个单精度运算且执行相对低数目个双精度运算。因此,为了节省每一执行线程具有专用的一组双精度寄存器的成本,GPU 100包括操作数顺序控制模块110以用于控制去向寄存器321和322的双精度操作数的排序。为了示出,在一些实施方案中,操作数寄存器的至少一子集是连接的,并且响应于来自操作数顺序控制模块110的控制信令,接收到所述控制信号的每一操作数寄存器将其存储的数据传送到另一操作数寄存器。通过控制数据在操作数寄存器之间的传送,在使用相对小数目个操作数寄存器和双精度ALU电路系统的同时,操作数顺序控制模块110在多个执行循环内为多个线程调度双精度运算的执行,由此节约GPU 100的资源。在一些实施方案中,操作数顺序控制模块110是GPU 100的调度在VSP 102-104处的线程执行的调度器(未示出)的一部分。
图4到图7一起示出根据一些实施方案的GPU 100对向寄存器321和322的双精度操作数提供进行排序的示例。图4到图7的示例示出GPU 100的多个执行循环。在一些实施方案中,每一执行循环对应于用于将GPU 100的运算同步化的时钟(未示出)的单个时钟循环。在其他实施方案中,每一执行循环对应于多个时钟循环。出于图4到图7的示例的目的,假定VSP 102-104共同且同时执行16个线程,所述16个线程中的每一者需要在DP ALU 116处执行双精度算术运算。为了执行所述运算,GPU采用操作数寄存器106中的操作数寄存器430-439以及操作数寄存器321和322。假定在一些实施方案中,操作数寄存器321、322和430-439中的每一者包括独立的读取和写入端口,以使得在单个执行循环期间从操作数寄存器读取数据和将数据写入操作数寄存器。
出于示例的目的,假定每一执行线程提供一组双精度操作数以供在DP ALU 116处进行处理。如下文进一步阐释,每一线程以两个部分提供对应的双精度操作数:下部部分,所述下部部分表示双精度操作数的最低有效位;以及上部部分,所述上部部分表示双精度操作数的最高有效位。因此,假定每个双精度操作数是64位,操作数的上部部分是所述操作数的32个最高有效位,且所述操作数的下部部分是操作数的32个最低有效位。
图4示出根据一些实施方案的示例的前两个执行循环,所述两个执行循环被指定为循环0和循环1。在循环0期间,GPU 100的调度器对线程0、4、8和12的执行进行调度,以使得将用于这些线程的双精度操作数的下部部分(分别指定为0L、4L、8L和12L)读取到操作数寄存器中。确切来说,将下部部分操作数4L存储在操作数寄存器430处,将下部部分操作数0L存储在操作数寄存器433处,将下部部分操作数8L存储在操作数寄存器434处,并且下部部分操作数12L存储在操作数寄存器437处。在至少一些实施方案中,线程0、4、8和12中的每一者在GPU 100的不同VSP处执行。
在循环1期间,操作数顺序控制模块110提供在操作数寄存器之间传送数据的控制信令。确切来说,将操作数0L从操作数寄存器433传送到操作数寄存器321,将操作数8L从操作数寄存器434传送到操作数寄存器433,并且将操作数12L从操作数寄存器437传送到操作数寄存器434。
另外,在循环1期间,将用于线程0、4、8和12的双精度操作数的上部部分(分别被指定为0H、4H、8H和12H)读取到操作数寄存器的子集中。确切来说,将上部部分操作数4H存储在操作数寄存器432处,将上部部分操作数0H存储在操作数寄存器322处,将上部部分操作数8H存储在操作数寄存器436处,并且将上部部分操作数12H存储在操作数寄存器439处。
在循环1期间,0L和0H操作数存储在操作数寄存器321和322处且因此随时供DPALU 116处理。因此,在循环1期间,DP ALU 116使用0L和0H操作数来开始线程0所请求的双精度运算。确切来说,DP ALU 116基于0L和0H操作数来串联A、B和C操作数的上部部分和下部部分,并将所得的A、B和C操作数用于双精度运算。
图5示出根据一些实施方案的示例排序操作的接下来的两个循环,所述两个循环被指定为循环2和循环3。在循环2期间,操作数顺序控制模块110提供进一步在操作数寄存器之间传送数据的控制信令。确切来说,将操作数4L从操作数寄存器430传送到操作数寄存器433,将操作数8L从操作数寄存器433传送到操作数寄存器321,将操作数8H从操作数寄存器436传送到操作数寄存器322,并且将操作数12H从操作数寄存器439传送到操作数寄存器436。因此,在循环2期间,8L和8H操作数存储在操作数寄存器321和322处。因此,在循环2期间,DP ALU 116使用8L和8H操作数来开始线程8所请求的双精度运算。
在循环3期间,与先前的两个循环类似,操作数顺序控制模块110提供进一步在操作数寄存器之间传送数据的控制信令。确切来说,将操作数4L从操作数寄存器433传送到操作数寄存器321,将操作数4H从操作数寄存器432传送到操作数寄存器322,并且将操作数12L从操作数寄存器434传送到操作数寄存器433。因此,在循环3期间,将4L和4H操作数存储在操作数寄存器321和322处,且DP ALU 116使用4L和4H操作数来开始线程4所请求的双精度运算。
图6示出根据一些实施方案的示例排序操作的接下来的两个循环,所述两个循环被指定为循环4和循环5。在循环4期间,操作数顺序控制模块110提供在操作数寄存器之间传送初始的一组操作数中的最后操作数的控制信令。确切来说,将操作数12H从操作数寄存器436传送到操作数寄存器322,并且将操作数12L从操作数寄存器433传送到操作数寄存器321。因此,在循环4期间,12L和12H操作数存储在操作数寄存器321和322处。因此,在循环4期间,DP ALU 116使用12L和12H操作数来开始线程12所请求的双精度运算。
另外,在循环4期间,将供处理的下一组操作数存储在操作数寄存器处。如所示出,将用于线程5、1、9和13的双精度操作数的下部部分(分别被指定为5L、1L、9L和13L)读取到操作数寄存器中。确切来说,将操作数5L存储在操作数寄存器430处,将操作数1L存储在操作数寄存器433处,将操作数9L存储在操作数寄存器434处,并且将操作数13L存储在操作数寄存器437处。
转向循环5,操作数顺序控制模块110提供在操作数寄存器之间传送数据的控制信令,以使得将操作数1L从操作数寄存器433传送到操作数寄存器321,将操作数9L从操作数寄存器434传送到操作数寄存器433,并且将操作数13L从操作数寄存器437传送到操作数寄存器434。
另外,在循环5期间,将用于线程5、1、9和13的双精度操作数的上部部分(分别被指定为5H、1H、9H和13H)读取到操作数寄存器的子集中。确切来说,将操作数5H存储在操作数寄存器432处,将操作数1H存储在操作数寄存器322处,将操作数9H存储在操作数寄存器436处,并且将操作数13H存储在操作数寄存器439处。因此,在循环5期间,1L和1H操作数存储在操作数寄存器321和322处且因此随时供DP ALU 116处理。因此,在循环5期间,DP ALU116使用1L和1H操作数来开始线程1所请求的双精度运算。
图7示出根据一些实施方案的示例排序操作的接下来的三个循环,所述三个循环被指定为循环6、循环7和循环8。在循环6期间,操作数顺序控制模块110提供进一步在操作数寄存器之间传送数据的控制信令。确切来说,将操作数5L从操作数寄存器430传送到操作数寄存器433,将操作数9L从操作数寄存器433传送到操作数寄存器321,将操作数9H从操作数寄存器436传送到操作数寄存器322,并且将操作数13从操作数寄存器439传送到操作数寄存器436。因此,在循环6期间,9L和9H操作数存储在操作数寄存器321和322处。因此,在循环6期间,DP ALU 116使用9L和9H操作数来开始线程9所请求的双精度运算。
转向循环7,操作数顺序控制模块110提供进一步在操作数寄存器之间传送数据的控制信令。确切来说,将操作数5L从操作数寄存器433传送到操作数寄存器321,将操作数5H从操作数寄存器432传送到操作数寄存器322,并且将操作数13L从操作数寄存器434传送到操作数寄存器433。因此,在循环7期间,5L和5H操作数存储在操作数寄存器321和322处,并且DP ALU 116使用5L和5H操作数来开始线程5所请求的双精度运算。
转向循环8,操作数顺序控制模块110提供在操作数寄存器之间传送第二组操作数中的最后操作数的控制信令。确切来说,将操作数13H从操作数寄存器436传送到操作数寄存器322,并且将操作数12L从操作数寄存器433传送到操作数寄存器321。因此,在循环8期间,13L和13H操作数存储在操作数寄存器321和322处。因此,在循环8期间,DP ALU 116使用13L和13H操作数来开始线程13所请求的双精度运算。
另外,在循环8期间,将供处理的下一组操作数存储在操作数寄存器处。如所示出,将用于线程6、2、10和14的双精度操作数的下部部分(分别被指定为6L、2L、9L和14L)读取到操作数寄存器中。确切来说,将操作数6L存储在操作数寄存器430处,将操作数2L存储在操作数寄存器433处,将操作数10L存储在操作数寄存器434处,并且将操作数14L存储在操作数寄存器437处。
在一些实施方案中,GPU 100继续以与所示出的循环0-8类似的方式来对向操作数寄存器以及在所述操作数寄存器之间进行的操作数提供进行排序,以处理用于其余线程(包括线程2、3、6、7、10、11、14和15)的操作数。因此,GPU 100支持使用在VSP 102-104之间共享的单组双精度操作数寄存器来执行16个同时执行线程中的每一者的双精度运算。GPU100由此能够利用相对小的一组操作数寄存器支持双精度运算,因此节约诸如面积和电力等处理器资源。
在一些实施方案中,一种方法包括:针对在处理单元处执行的多个线程,接收多个操作数以供在第一算术逻辑单元(ALU)处进行处理;将所述多个操作数存储在多个寄存器处;以及在多个执行循环内,对将所述多个操作数从所述多个寄存器提供到第一操作数寄存器以供在所述ALU处进行处理来进行排序。在一个方面,所述排序包括:在第一执行循环期间,将所述多个操作数中的第一操作数的第一部分存储在所述第一操作数寄存器处;以及在第二执行循环期间,将所述多个操作数中的第二操作数的第一部分从所述多个寄存器中的第一寄存器传送到所述第一操作数寄存器。在另一方面,所述排序还包括:在所述第一执行循环期间,将所述第一操作数的第二部分存储在所述多个寄存器中的第二寄存器处;以及在所述第二执行循环期间,将所述第一操作数的所述第二部分传送到第二操作数寄存器以供在所述ALU处进行处理。
在又一方面,所述方法包括:在所述第二执行循环期间,在所述ALU处从所述第一操作数寄存器和所述第二操作数寄存器读取所述第一操作数。在又一方面,所述第一操作数是双精度操作数,并且所述多个寄存器中的每一者被配置成存储单精度操作数。在另一方面,所述排序还包括:在所述第二执行循环期间,将第三操作数的第一部分从所述多个寄存器中的第二寄存器传送到所述多个寄存器中的所述第一寄存器。在又一方面,所述排序还包括:在第三执行循环期间,将所述第三操作数的所述第一部分从所述多个寄存器中的所述第一寄存器传送到所述第一操作数寄存器。在又一方面,所述排序还包括:在所述第二执行循环期间,将第四操作数的第一部分从所述多个寄存器中的第三寄存器传送到所述多个寄存器中的所述第二寄存器。
在一些实施方案中,一种处理器包括:处理单元,所述处理单元包括算术逻辑单元(ALU),所述处理单元用于执行对应的多个线程,所述多个线程执行以生成多个操作数以供在所述ALU处进行处理;多个寄存器,所述多个寄存器被配置成存储所述多个操作数;以及顺序控制模块,所述顺序控制模块被配置成在多个执行循环内对将所述多个操作数从所述多个寄存器提供到第一操作数寄存器以供在所述ALU处进行处理来进行排序。在一个方面,所述排序包括:在第一执行循环期间,将所述多个操作数中的第一操作数的第一部分存储在所述第一操作数寄存器处;以及在第二执行循环期间,将所述多个操作数中的第二操作数的第一部分从所述多个寄存器中的第一寄存器传送到所述第一操作数寄存器。
在一个方面,所述排序还包括:在所述第一执行循环期间,将所述第一操作数的第二部分存储在所述多个寄存器中的第二寄存器处;以及在所述第二执行循环期间,将所述第一操作数的所述第二部分传送到第二操作数寄存器以供在所述ALU处进行处理。在另一方面,所述ALU被配置成:在所述第二执行循环期间,从所述第一操作数寄存器和所述第二操作数寄存器读取所述第一操作数以进行处理。在又一方面,所述第一操作数是双精度操作数,并且其中所述多个寄存器中的每一者被配置成存储单精度操作数。
在一个方面,所述排序还包括:在所述第二执行循环期间,将第三操作数的第一部分从所述多个寄存器中的第二寄存器传送到所述多个寄存器中的所述第一寄存器。在另一方面,所述排序还包括:在第三执行循环期间,将所述第三操作数的所述第一部分从所述多个寄存器中的所述第一寄存器传送到所述第一操作数寄存器。在又一方面,所述排序还包括:在所述第二执行循环期间,将第四操作数的第一部分从所述多个寄存器中的第三寄存器传送到所述多个寄存器中的所述第二寄存器。
在一些实施方案中,一种图形处理单元(GPU)包括:多个着色器处理器,所述多个着色器处理器用于执行对应的多个线程,所述多个线程执行以生成多个操作数;算术逻辑单元(ALU);多个寄存器,所述多个寄存器被配置成存储所述多个操作数;以及顺序控制模块,所述顺序控制模块被配置成在多个执行循环内对将所述多个操作数从所述多个寄存器提供到第一操作数寄存器以供在所述ALU处进行处理来进行排序。在一个方面,所述排序包括:在第一执行循环期间,将所述多个操作数中的第一操作数的第一部分存储在所述第一操作数寄存器处;以及在第二执行循环期间,将所述多个操作数中的第二操作数的第一部分从所述多个寄存器中的第一寄存器传送到所述第一操作数寄存器。在另一方面,所述排序还包括:在所述第一执行循环期间,将所述第一操作数的第二部分存储在所述多个寄存器中的第二寄存器处;以及在所述第二执行循环期间,将所述第一操作数的所述第二部分传送到第二操作数寄存器以供在所述ALU处进行处理。在又一方面,所述ALU被配置成:在所述第二执行循环期间,从所述第一操作数寄存器和所述第二操作数寄存器读取所述第一操作数以用于处理。
在一些实施方案中,上文所述的技术的某些方面是由执行软件的处理系统的一个或多个处理器实施。所述软件包括存储在或以其他方式有形地体现在非暂时性计算机可读存储介质上的一或多个可执行指令集。所述软件包括指令和某些数据,所述指令和某些数据在由所述一个或多个处理器执行时操控所述一个或多个处理器来执行上文所述的技术的一个或多个方面。所述非暂时性计算机可读存储介质包括以下中的一者或多者:例如磁盘或光盘存储装置、诸如快闪存储器等固态存储装置、高速缓冲存储器、随机存取存储器(RAM)或者一个或多个其他非易失性存储器装置等。在不同实施方案中,存储在所述非暂时性计算机可读存储介质上的可执行指令是以源代码、汇编语言代码、对象代码或者由一个或多个处理器解释或可由所述一个或多个处理器执行的其他指令格式来表示。
注意,上文在一般描述中所述的活动或元件并非全都需要,可能并不需要特定活动或装置的一部分,并且除了所述的活动和元件之外可执行一个或多个其他活动或包括其他元件。此外,活动列举的次序未必是活动执行的次序。而且,已参考具体实施方案对概念加以描述。然而,本领域普通技术人员应了解,可做出各种修改和改变,而不背离随附权利要求中所阐述的本公开范围。因此,本说明书和图将被视为说明性而非限制性的,并且所有此类修改都旨在包括在本公开的范围内。
上文已关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,所述益处、优点、问题的解决方案以及可使任何益处、优点或问题的解决方案出现或变得更明显的任何特征都不应被解释为是任何或所有权利要求的关键、需要或本质特征。此外,得益于本文中的教义的本领域技术人员应明了,上文所公开的特定实施方案仅是说明性的,可以不同但等效的方式来修改和实践所述所公开的主题。除了随附权利要求中的描述之外,并不旨在限制本文所示的构造或设计的细节。因此,显然,上文所公开的特定实施方案可被更改或修改,并且所有此类变化都被视为在所公开主题的范围内。因此,本文中所寻求的保护正如在随附权利要求中阐述的那般。
Claims (20)
1.一种方法,所述方法包括:
针对在处理单元处执行的多个线程,接收多个操作数以供在算术逻辑单元(ALU)处进行处理;
将所述多个操作数存储在多个寄存器处;以及
在多个执行循环内对将所述多个操作数从所述多个寄存器提供到第一操作数寄存器以供在所述ALU处进行处理来进行排序。
2.如权利要求1所述的方法,其中所述排序包括:
在第一执行循环期间,将所述多个操作数中的第一操作数的第一部分存储在所述第一操作数寄存器处;以及
在第二执行循环期间,将所述多个操作数中的第二操作数的第一部分从所述多个寄存器中的第一寄存器传送到所述第一操作数寄存器。
3.如权利要求2所述的方法,其中所述排序还包括:
在所述第一执行循环期间,将所述第一操作数的第二部分存储在所述多个寄存器中的第二寄存器处;以及
在所述第二执行循环期间,将所述第一操作数的所述第二部分传送到第二操作数寄存器以供在所述ALU处进行处理。
4.如权利要求3所述的方法,所述方法还包括:
在所述第二执行循环期间,在所述ALU处从所述第一操作数寄存器和所述第二操作数寄存器读取所述第一操作数。
5.如权利要求4所述的方法,其中所述第一操作数是双精度操作数,并且其中所述多个寄存器中的每一者被配置成存储单精度操作数。
6.如权利要求2所述的方法,其中所述排序还包括:
在所述第二执行循环期间,将第三操作数的第一部分从所述多个寄存器中的第二寄存器传送到所述多个寄存器中的所述第一寄存器。
7.如权利要求6所述的方法,其中所述排序还包括:
在第三执行循环期间,将所述第三操作数的所述第一部分从所述多个寄存器中的所述第一寄存器传送到所述第一操作数寄存器。
8.如权利要求6所述的方法,其中所述排序还包括:
在所述第二执行循环期间,将第四操作数的第一部分从所述多个寄存器中的第三寄存器传送到所述多个寄存器中的所述第二寄存器。
9.一种处理器,所述处理器包括:
处理单元,所述处理单元包括算术逻辑单元(ALU),所述处理单元用于执行对应的多个线程,所述多个线程执行以生成多个操作数以供在所述ALU处进行处理;
多个寄存器,所述多个寄存器被配置成存储所述多个操作数;以及
顺序控制模块,所述顺序控制模块被配置成在多个执行循环内对将所述多个操作数从所述多个寄存器提供到第一操作数寄存器以供在所述ALU处进行处理来进行排序。
10.如权利要求9所述的处理器,其中所述排序包括:
在第一执行循环期间,将所述多个操作数中的第一操作数的第一部分存储在所述第一操作数寄存器处;以及
在第二执行循环期间,将所述多个操作数中的第二操作数的第一部分从所述多个寄存器中的第一寄存器传送到所述第一操作数寄存器。
11.如权利要求10所述的处理器,其中所述排序还包括:
在所述第一执行循环期间,将所述第一操作数的第二部分存储在所述多个寄存器中的第二寄存器处;以及
在所述第二执行循环期间,将所述第一操作数的所述第二部分传送到第二操作数寄存器以供在所述ALU处进行处理。
12.如权利要求11所述的处理器,其中所述ALU被配置成:
在所述第二执行循环期间,从所述第一操作数寄存器和所述第二操作数寄存器读取所述第一操作数以用于处理。
13.如权利要求12所述的处理器,其中所述第一操作数是双精度操作数,并且其中所述多个寄存器中的每一者被配置成存储单精度操作数。
14.如权利要求10所述的处理器,其中所述排序还包括:
在所述第二执行循环期间,将第三操作数的第一部分从所述多个寄存器中的第二寄存器传送到所述多个寄存器中的所述第一寄存器。
15.如权利要求14所述的处理器,其中所述排序还包括:
在第三执行循环期间,将所述第三操作数的所述第一部分从所述多个寄存器中的所述第一寄存器传送到所述第一操作数寄存器。
16.如权利要求14所述的处理器,其中所述排序还包括:
在所述第二执行循环期间,将第四操作数的第一部分从所述多个寄存器中的第三寄存器传送到所述多个寄存器中的所述第二寄存器。
17.一种图形处理单元(GPU),所述GPU包括:
多个着色器处理器,所述多个着色器处理器用于执行对应的多个线程,所述多个线程执行以生成多个操作数;
算术逻辑单元(ALU);
多个寄存器,所述多个寄存器被配置成存储所述多个操作数;以及
顺序控制模块,所述顺序控制模块被配置成在多个执行循环内对将所述多个操作数从所述多个寄存器提供到第一操作数寄存器以供在所述ALU处进行处理来进行排序。
18.如权利要求17所述的GPU,其中所述排序包括:
在第一执行循环期间,将所述多个操作数中的第一操作数的第一部分存储在所述第一操作数寄存器处;以及
在第二执行循环期间,将所述多个操作数中的第二操作数的第一部分从所述多个寄存器中的第一寄存器传送到所述第一操作数寄存器。
19.如权利要求18所述的处理器,其中所述排序还包括:
在所述第一执行循环期间,将所述第一操作数的第二部分存储在所述多个寄存器中的第二寄存器处;以及
在所述第二执行循环期间,将所述第一操作数的所述第二部分传送到第二操作数寄存器以供在所述ALU处进行处理。
20.如权利要求19所述的处理器,其中所述ALU被配置成:
在所述第二执行循环期间,从所述第一操作数寄存器和所述第二操作数寄存器读取所述第一操作数以用于处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/696,108 US11237827B2 (en) | 2019-11-26 | 2019-11-26 | Arithemetic logic unit register sequencing |
US16/696,108 | 2019-11-26 | ||
PCT/US2020/061977 WO2021108384A1 (en) | 2019-11-26 | 2020-11-24 | Arithemetic logic unit register sequencing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114868110A true CN114868110A (zh) | 2022-08-05 |
Family
ID=75971278
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080079523.3A Pending CN114868110A (zh) | 2019-11-26 | 2020-11-24 | 算术逻辑单元寄存器排序 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11237827B2 (zh) |
EP (1) | EP4066105A4 (zh) |
JP (1) | JP2023502574A (zh) |
KR (1) | KR102644951B1 (zh) |
CN (1) | CN114868110A (zh) |
WO (1) | WO2021108384A1 (zh) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3389379A (en) * | 1965-10-05 | 1968-06-18 | Sperry Rand Corp | Floating point system: single and double precision conversions |
US5901316A (en) * | 1996-07-01 | 1999-05-04 | Sun Microsystems, Inc. | Float register spill cache method, system, and computer program product |
US5909572A (en) | 1996-12-02 | 1999-06-01 | Compaq Computer Corp. | System and method for conditionally moving an operand from a source register to a destination register |
US7028170B2 (en) * | 2000-03-08 | 2006-04-11 | Sun Microsystems, Inc. | Processing architecture having a compare capability |
US8239439B2 (en) | 2007-12-13 | 2012-08-07 | International Business Machines Corporation | Method and apparatus implementing a minimal area consumption multiple addend floating point summation function in a vector microprocessor |
EP2352082B1 (en) * | 2008-10-14 | 2018-11-28 | National University Corporation Nara Institute of Science and Technology | Data processing device for performing a plurality of calculation processes in parallel |
US8458444B2 (en) * | 2009-04-22 | 2013-06-04 | Oracle America, Inc. | Apparatus and method for handling dependency conditions between floating-point instructions |
US8533435B2 (en) | 2009-09-24 | 2013-09-10 | Nvidia Corporation | Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict |
US9823928B2 (en) | 2011-09-30 | 2017-11-21 | Qualcomm Incorporated | FIFO load instruction |
US9508112B2 (en) * | 2013-07-31 | 2016-11-29 | Apple Inc. | Multi-threaded GPU pipeline |
DE112014006508T5 (de) * | 2014-03-26 | 2017-01-05 | Intel Corporation | Prozessoren, Verfahren, Systeme und Anweisungen für Fliesskommaaddition mit drei Quellenoperanden |
US9696992B2 (en) * | 2014-12-23 | 2017-07-04 | Intel Corporation | Apparatus and method for performing a check to optimize instruction flow |
US20160179470A1 (en) * | 2014-12-23 | 2016-06-23 | Shay Gueron | Method and apparatus for performing big-integer arithmetic operations |
US10754651B2 (en) * | 2018-06-29 | 2020-08-25 | Intel Corporation | Register bank conflict reduction for multi-threaded processor |
-
2019
- 2019-11-26 US US16/696,108 patent/US11237827B2/en active Active
-
2020
- 2020-11-24 WO PCT/US2020/061977 patent/WO2021108384A1/en unknown
- 2020-11-24 CN CN202080079523.3A patent/CN114868110A/zh active Pending
- 2020-11-24 EP EP20893022.2A patent/EP4066105A4/en active Pending
- 2020-11-24 JP JP2022524020A patent/JP2023502574A/ja active Pending
- 2020-11-24 KR KR1020227017671A patent/KR102644951B1/ko active IP Right Grant
-
2022
- 2022-01-12 US US17/574,026 patent/US11789732B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11789732B2 (en) | 2023-10-17 |
EP4066105A1 (en) | 2022-10-05 |
EP4066105A4 (en) | 2023-11-22 |
KR102644951B1 (ko) | 2024-03-08 |
US20210157581A1 (en) | 2021-05-27 |
US11237827B2 (en) | 2022-02-01 |
WO2021108384A1 (en) | 2021-06-03 |
KR20220100891A (ko) | 2022-07-18 |
US20220171621A1 (en) | 2022-06-02 |
JP2023502574A (ja) | 2023-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8639882B2 (en) | Methods and apparatus for source operand collector caching | |
CN109997115B (zh) | 用于持久计算的低功率和低延迟gpu协处理器 | |
US10007527B2 (en) | Uniform load processing for parallel thread sub-sets | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
US10346212B2 (en) | Approach for a configurable phase-based priority scheduler | |
US10255228B2 (en) | System and method for performing shaped memory access operations | |
US9798548B2 (en) | Methods and apparatus for scheduling instructions using pre-decode data | |
US7937567B1 (en) | Methods for scalably exploiting parallelism in a parallel processing system | |
US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
US9626191B2 (en) | Shaped register file reads | |
CN114610394B (zh) | 指令调度的方法、处理电路和电子设备 | |
US10152328B2 (en) | Systems and methods for voting among parallel threads | |
US11934827B2 (en) | Partition and isolation of a processing-in-memory (PIM) device | |
US11880683B2 (en) | Packed 16 bits instruction pipeline | |
US8413151B1 (en) | Selective thread spawning within a multi-threaded processing system | |
US11451241B2 (en) | Setting values of portions of registers based on bit values | |
US11237827B2 (en) | Arithemetic logic unit register sequencing | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
CN110569122A (zh) | 多处理器系统、多核处理设备及其操作方法 | |
US11550584B1 (en) | Implementing specialized instructions for accelerating Smith-Waterman sequence alignments | |
US11822541B2 (en) | Techniques for storing sub-alignment data when accelerating Smith-Waterman sequence alignments | |
US20230101085A1 (en) | Techniques for accelerating smith-waterman sequence alignments |
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 |