CN110168497A - 可变波阵面大小 - Google Patents
可变波阵面大小 Download PDFInfo
- Publication number
- CN110168497A CN110168497A CN201880006415.6A CN201880006415A CN110168497A CN 110168497 A CN110168497 A CN 110168497A CN 201880006415 A CN201880006415 A CN 201880006415A CN 110168497 A CN110168497 A CN 110168497A
- Authority
- CN
- China
- Prior art keywords
- instruction
- wave surface
- processor
- multiple execution
- mode
- 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
- 241000143252 Idaea infirmaria Species 0.000 title abstract description 4
- 238000000034 method Methods 0.000 claims abstract description 31
- 230000015654 memory Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 239000000969 carrier Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 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/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
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Image Processing (AREA)
Abstract
公开了用于在处理器上处理可变波阵面大小的系统、设备和方法。在一个实施方案中,处理器包括至少调度器、高速缓存和多个执行单元。当在第一模式下操作时,所述处理器在继续到着色器程序的下一指令之前在波阵面的多个部分执行相同的指令。当在第二模式下操作时,所述处理器在波阵面的第一部分执行一组指令。在所述第二模式中,当所述处理器在所述波阵面的所述第一部分完成该组指令的执行时,所述处理器在所述波阵面的第二部分执行该组指令,依此类推,直到所述波阵面的所有部分都已经被处理。所述处理器基于一个或多个条件来确定所述操作模式。
Description
背景技术
相关技术的描述
图形处理单元(GPU)是被配置为执行图形处理任务的复杂集成电路。例如,GPU可以执行最终用户应用程序(例如视频游戏应用程序)所需的图形处理任务。GPU也越来越多地用于执行与图形无关的其他任务。GPU可以是分立的装置,或者可以与另一处理器(例如中央处理单元(CPU))包括在同一装置中。
在许多应用中,诸如GPU中的图形处理,对一系列工作项(也可以称为线程)进行处理,以便输出最终结果。在许多现代并行处理器中,例如,单指令多数据(SIMD)核中的处理器同步地执行一组工作项。由单独的处理器处理的多个相同的同步工作项被称为波阵面或线程束(warp)。
在处理期间,一个或多个SIMD核同时执行多个波阵面。当波阵面中的所有工作项都完成处理时,波阵面的执行终止。每个波阵面都包括使用相同的指令集并行处理的多个工作项。在一些情况下,波阵面中的工作项数量与SIMD核的执行单元数量不匹配。在一个实施方案中,SIMD核的每个执行单元都是算术逻辑单元(ALU)。当波阵面中的工作项数量与SIMD核的执行单元数量不匹配时,确定如何调度指令以供执行可能具有挑战性。
附图说明
通过结合附图参考以下描述,可以更好地理解本文描述的方法和机制的优点,在这些附图中:
图1是计算系统的一个实施方案的框图。
图2是GPU的一个实施方案的框图。
图3是一组矢量通用寄存器(VGPR)的一个实施方案的框图。
图4示出了示例波阵面和示例指令序列的一个实施方案。
图5示出了处理器的第一操作模式的一个实施方案的图解。
图6示出了处理器的第二操作模式的一个实施方案的图解。
图7是示出用于在处理器上调度指令的方法的一个实施方案的概括流程图。
图8是示出用于确定在并行处理器中使用哪种操作模式的方法的一个实施方案的概括流程图。
图9是示出用于为并行处理器利用不同操作模式的方法的一个实施方案的概括流程图。
具体实施方式
在以下描述中,阐述了许多具体细节以提供对本文提出的方法和机制的透彻理解。然而,本领域的普通技术人员应该认识到,可以在没有这些具体细节的情况下实施各种实施方案。在一些情况下,未详细示出熟知的结构、部件、信号、计算机程序指令和技术以避免使本文描述的方法模糊。应当理解,为了说明的简单和清楚,图中所示的元件不一定按比例绘制。例如,一些元件的尺寸可能相对于其他元件被夸大。
公开了用于在处理器上处理可变波阵面大小的各种系统、设备、方法和计算机可读介质。当在第一模式下操作时,处理器在继续到着色器程序的下一指令之前在波阵面的多个部分执行相同的指令。当在第二模式下操作时,处理器在波阵面的第一部分执行一组指令。在第二模式中,当处理器在波阵面的第一部分完成该组指令的执行时,处理器在波阵面的第二部分执行该组指令,依此类推,直到波阵面的所有部分都已经被处理。然后,处理器继续执行着色器程序的后续指令。
在一个实施方案中,在代码序列内声明某指示,该指示指定对程序的给定区域使用哪种模式。在另一个实施方案中,编译器在生成可执行代码时生成指示,该指示指定处理器操作模式。在另一个实施方案中,处理器包括控制单元,该控制单元确定处理器操作模式。
现在参考图1,示出了计算系统100的一个实施方案的框图。在一个实施方案中,计算系统100包括耦合到存储器150的片上系统(SoC)105。SoC 105也可以称为集成电路(IC)。在一个实施方案中,SoC 105包括处理单元115A-N、输入/输出(I/O)接口110、共享高速缓存120A-B、结构125、图形处理单元(GPU)130和存储器控制器140。SoC 105还可以包括图1中未示出以免使附图模糊的其他部件。处理单元115A-N代表任何数量和类型的处理单元。在一个实施方案中,处理单元115A-N是中央处理单元(CPU)核。在另一个实施方案中,处理单元115A-N中的一个或多个是其他类型的处理单元(例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP))。处理单元115A-N耦合到共享高速缓存120A-B和结构125。
在一个实施方案中,处理单元115A-N被配置为执行特定指令集架构(ISA)的指令。每个处理单元115A-N都包括一个或多个执行单元、高速缓冲存储器、调度器、分支预测电路等。在一个实施方案中,处理单元115A-N被配置为执行系统100的主控制软件,诸如操作系统。通常,在使用期间由处理单元115A-N执行的软件可以控制系统100的其他部件以实现系统100的期望功能。处理单元115A-N还可以执行其他软件,诸如应用程序。
GPU 130包括至少计算单元145A-N,这些计算单元表示用于图形或通用处理的任何数量和类型的计算单元。计算单元145A-N也可以称为“着色器阵列”、“着色器引擎”、“单指令多数据(SIMD)单元”或“SIMD核”。每个计算单元145A-N包括多个执行单元。GPU 130耦合到共享高速缓存120A-B和结构125。在一个实施方案中,GPU 130被配置为执行图形管线操作,诸如绘制命令、像素操作、几何计算以及用于将图像渲染到显示器的其他操作。在另一个实施方案中,GPU 130被配置为执行与图形无关的操作。在另一个实施方案中,GPU 130被配置为既执行图形操作也执行与图形无关的操作。
GPU 130被配置为接收着色器程序的指令和波阵面以供执行。在一个实施方案中,GPU 130被配置为在不同模式下操作。在一个实施方案中,每个波阵面中的工作项的数量大于GPU 130中的执行单元的数量。
在一个实施方案中,响应于检测到第一指示,GPU 130调度用于在第一波阵面的第一部分和第二部分执行的第一指令,然后调度用于在第一波阵面的第一部分执行的第二指令。对于着色器程序的其他指令以及对于其他波阵面,只要检测到第一指示,GPU 130就遵循该模式。注意,“调度指令”也可以称为“发出指令”。根据该实施方案,可以用软件指定第一指示,或者可以由GPU 130基于一个或多个操作条件生成第一指示。在一个实施方案中,第一指示是使GPU 130在第一模式下操作的命令。
在一个实施方案中,响应于未检测到第一指示,GPU 130调度用于在第一波阵面的第一部分执行的第一指令和第二指令,然后调度用于在第一波阵面的第二部分执行的第一指令。对于着色器程序的其他指令以及对于其他波阵面,只要未检测到第一指示,GPU 130就遵循该模式。
I/O接口110耦合到结构125,并且I/O接口110代表任何数量和类型的接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(PCI Express)总线、千兆以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置可以耦合到I/O接口110。此类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体记录装置、外部存储装置、网络接口卡等。
SoC 105耦合到存储器150,该存储器包括一个或多个存储器模块。每个存储器模块都包括安装在其上的一个或多个存储器装置。在一些实施方案中,存储器150包括安装在母板或其他载体上的一个或多个存储器装置,SoC 105也安装在该母板或其他载体上。实施的RAM可以是静态RAM(SRAM)、动态RAM(DRAM)、电阻RAM(ReRAM)、相变RAM(PCRAM)或任何其他易失性或非易失性RAM。用于实施存储器150的DRAM的类型包括(但不限于)双倍数据速率(DDR)DRAM、DDR2DRAM、DDR3DRAM等。尽管未在图1中明确示出,但是SoC 105还可以包括处理单元115A-N和/或计算单元145A-N内部的一个或多个高速缓冲存储器。在一些实施方案中,SoC105包括由处理单元115A-N和计算单元145A-N使用的共享高速缓存120A-B。在一个实施方案中,高速缓存120A-B是包括高速缓存控制器的高速缓存子系统的一部分。
在各种实施方案中,计算系统100可以是计算机、膝上型计算机、移动装置、服务器或各种其他类型的计算系统或装置中的任一种。注意,计算系统100和/或SoC 105的部件的数量可以随实施方案而变化。每个部件/子部件可以有比图1中所示的数量更多或更少。例如,在另一个实施方案中,SoC 105可以包括耦合到多个存储器的多个存储器控制器。还应注意,计算系统100和/或SoC 105可包括图1中未示出的其他部件。另外,在其他实施方案中,计算系统100和SoC105可以按图1所示的方式之外的其他方式构造。
现在转向图2,示出了图形处理单元(GPU)200的一个实施方案的框图。在一个实施方案中,GPU 200包括至少SIMD 210A-N、分支和消息单元240、调度器单元245、指令缓冲器255和高速缓存260。注意,GPU 200还可以包括图2中未示出以免使附图模糊的其他逻辑。还应注意,其他处理器(例如,FPGA、ASIC、DSP)可以包括GPU 200中所示的电路系统。
在一个实施方案中,GPU 200被配置为在不同模式下操作,以在不同大小的波阵面处理着色器程序的指令。GPU 200利用给定模式来优化性能、功耗和/或其他因素,这取决于正在处理的工作负载的类型和/或每个波阵面中的工作项的数量。在一个实施方案中,每个波阵面都包括多个工作项,这些工作项的数量大于SIMD 210A-N中的通道215A-N、220A-N和225A-N的数量。在该实施方案中,GPU 200基于GPU 200的操作模式来不同地处理波阵面。在另一个实施方案中,GPU 200基于一个或多个检测到的条件来不同地处理波阵面。SIMD210A-N的每个通道215A-N、220A-N和225A-N也可以称为“执行单元”。
在一个实施方案中,GPU 200接收用于具有多个工作项的波阵面的多个指令,这些工作项的数量大于SIMD 210A-N中的通道的总数。在该实施方案中,当GPU 200处于第一模式时,GPU 200在继续到第二指令之前在波阵面的多个部分执行第一指令。对于后续指令,只要GPU 200处于第一模式,GPU 200就继续该执行模式。在一个实施方案中,第一模式可以由软件生成的声明来指定。如果GPU 200处于第二模式,则GPU 200在继续到波阵面的第二部分之前在波阵面的第一部分执行多个指令。当GPU 200处于第二模式时,GPU 200在波阵面的不同部分之间共享矢量通用寄存器(VGPR)230A-N的一部分。另外,当GPU 200处于第二模式时,如果掩码250的执行掩码指出波阵面的给定部分被临时遮掩,则GPU 200不执行针对波阵面的给定部分的指令。
在另一个实施方案中,如果波阵面大小大于SIMD的数量,则GPU 200确定程序的高速缓存260的高速缓存未命中率。如果高速缓存未命中率小于阈值,则GPU 200在继续到第二指令之前在波阵面的多个部分执行第一指令。对于后续指令,只要确定或预测高速缓存未命中率小于阈值,GPU 200就继续该执行模式。阈值可以作为字节数、作为高速缓存260的百分比、或作为任何其他合适的度量来指定。如果高速缓存未命中率大于或等于阈值,则GPU 200在波阵面的第二部分执行多个指令之前在波阵面的第一部分执行多个指令。另外,如果高速缓存未命中率大于或等于阈值,则GPU 200在波阵面的不同部分之间共享矢量通用寄存器(VGPR)230A-N的一部分,并且如果执行掩码指出给定部分被遮掩,则GPU 200跳过针对波阵面的给定部分的指令。
应注意,字母“N”当在本文中显示在各种结构旁边时,旨在一般性地指出该结构的任何数量的元件(例如,任何数量的SIMD 210A-N)。另外,图2内的使用字母“N”的不同参考(例如,SIMD 210A-N和通道215A-N)并不旨在指出提供相同数量的不同元件(例如,SIMD210A-N的数量可以与通道215A-N的数量不同)。
现在参考图3,示出了一组矢量通用寄存器(VGPR)300的一个实施方案的框图。在一个实施方案中,VGPR 300包括在GPU 200(图2)的SIMD 210A-N中。取决于实施方案,VGPR300可包括任何数量的寄存器。
如图3所示,VGPR 300包括用于第一波阵面的VGPR 305,用于第二波阵面的VGPR310,以及用于其他数量的波阵面的任何数量的其他VGPR。出于本讨论的目的,假设第一波阵面和第二波阵面具有2*N个工作项,其中N是正整数,并且N随实施方案而变化。在一个实施方案中,N等于32。VGPR 305包括具有专用VGPR的区域和共享的VGPR区域315。类似地,VGPR 310包括具有专用VGPR的区域和共享的VGPR区域320。
在一个实施方案中,如果主机GPU(例如,GPU 200)处于第一模式,则共享的VGPR315和共享的VGPR 310不分别在第一波阵面和第二波阵面的不同部分之间共享。然而,当主机GPU处于第二模式时,则共享的VGPR 315和共享的VGPR 310分别在第一波阵面和第二波阵面的不同部分之间共享。在其他实施方案中,共享或不共享的实现方式基于检测到第一指示,而不是基于第一模式或第二模式。第一指示可以由软件生成,基于高速缓存未命中率生成,或者基于一个或多个其他操作条件生成。
现在转向图4,示出了示例波阵面405和示例指令序列410的一个实施方案。波阵面405旨在示出根据一个实施方案的波阵面的一个示例。波阵面405包括2*N个工作项,其中“N”是正整数,并且其中“N”是矢量单元420中的通道425A-N的数量。矢量单元420也可以称为SIMD单元或并行处理器。波阵面405的第一部分包括工作项W0至WN-1,而波阵面405的第二部分包括工作项WN至W2N-1。波阵面405的单个部分旨在在给定指令周期内在矢量单元420的通道425A-N上执行。在其他实施方案中,波阵面405可包括其他数量的部分。
在一个实施方案中,N是32,并且每个波阵面的工作项数量是64。在其他实施方案中,N可以是其他值。在当N是32的实施方案中,矢量单元420还包括32个通道,这些通道被示为通道425A-N。在其他实施方案中,矢量单元420可包括其他数量的通道。
指令序列410说明指令序列的一个示例。如图4所示,指令序列410包括指令415A-D,这些指令表示着色器程序的任何数量和类型的指令。出于本讨论的目的,应该假设指令415A是指令序列410的第一指令,指令415B是第二指令,指令415C是第三指令,指令415D是第四指令。在其他实施方案中,指令序列可以具有其他数量的指令。波阵面405、指令序列410和矢量单元420在下面针对图5和图6继续的讨论中被重复使用。
现在参考图5,示出了处理器的第一操作模式的一个实施方案的图解。对图5的讨论是关于图4的讨论的继续。在一个实施方案中,波阵面的大小是矢量单元420的大小的两倍。在另一个实施方案中,波阵面的大小是矢量单元420的大小的整数倍。在这些实施方案中,处理器可以实现不同的操作模式,用于确定如何使用矢量单元420来执行波阵面的工作项。
在第一操作模式中,每个指令在波阵面的不同子集执行,之后在不同子集执行下一指令。例如,在矢量单元420的通道425A-N上的第一指令周期期间,对波阵面的前半部分(即,工作项W0至WN-1)执行指令415A,然后,在通道425A-N上的第二指令周期期间,对第一波阵面的后半部分(即,工作项WN至W2N-1)执行指令415A。例如,在第一指令周期期间,工作项W0可以在通道425A上执行,工作项W1可以在通道425B上执行,依此类推。
然后,在通道425A-N上的第三指令周期期间,对波阵面的前半部分执行指令415B,然后,在通道425A-N上的第四指令周期期间,对波阵面的后半部分执行指令415B。接下来,在通道425A-N上的第五指令周期期间,对波阵面的前半部分执行指令415C,然后,在通道425A-N上的第六指令周期期间,对波阵面的后半部分执行指令415C。然后,在通道425A-N上的第七指令周期期间,在矢量单元420的通道425A-N上,对波阵面的前半部分执行指令415D,然后,在通道425A-N上的第八指令周期期间,在矢量单元420的通道425A-N上,对波阵面的后半部分执行指令415D。出于本讨论的目的,可以假设第二指令周期在第一指令周期之后,第三指令周期在第二指令周期之后,依此类推。
现在转向图6,示出了处理器的第二操作模式的一个实施方案的图解。对图6的讨论是关于图5的讨论的继续。在第二操作模式中,在波阵面的相同部分执行整个指令序列410,之后,在波阵面的下一部分执行整个指令序列410。
例如,在第一指令周期内,在矢量单元420的通道425A-N上,对波阵面的前半部分(即,工作项W0至WN-1)执行指令415A。然后,在第二指令周期内,在通道425A-N上,对波阵面的前半部分执行指令415B。接下来,在第三指令周期内,在通道425A-N上,对波阵面的前半部分执行指令415C。然后,在第四指令周期内,在通道425A-N上,对波阵面的前半部分执行指令415D。
接下来,在波阵面的后半部分执行指令序列410。因此,在第五指令周期内,在矢量单元420的通道425A-N上,对波阵面的后半部分(即,工作项WN至W2N-1)执行指令415A。然后,在第六指令周期内,在通道425A-N上,对波阵面的后半部分执行指令415B。接下来,在第七指令周期内,在通道425A-N上,对波阵面的后半部分执行指令415C。然后,在第八指令周期内,在通道425A-N上,对波阵面的后半部分执行指令415D。
在另一个实施方案中,如果某个波阵面具有4*N个工作项,则可以在该波阵面的第一四分之一上执行指令序列410,然后可以在该波阵面的第二四分之一上执行指令序列410,接着是在该波阵面的第三四分之一上,然后是在该波阵面的第四四分之一上。对于第二操作模式,可以以类似的方式来使用其他大小的其他波阵面和/或具有其他数量的通道的矢量单元。
现在参考图7,示出了用于在处理器上调度指令的方法700的一个实施方案。出于讨论的目的,该实施方案中的步骤和图8-9中的步骤按顺序示出。然而,应注意,在所描述的方法的各种实施方案中,所描述的要素中的一个或多个以与所示顺序不同的顺序同时执行,或者被完全省略。还根据需要执行其他附加要素。本文描述的各种系统、设备或计算装置中的任一个都被配置为实现方法700。
处理器接收波阵面和着色器程序的多个指令以供执行(框705)。在一个实施方案中,处理器包括至少多个执行单元、调度器、高速缓存和多个GPR。在一个实施方案中,处理器是GPU。在其他实施方案中,处理器是各种其他类型的处理器(例如,DSP、FPGA、ASIC、多核处理器)中的任一种。在一个实施方案中,波阵面中的工作项的数量大于处理器的执行单元的数量。例如,在一个实施方案中,波阵面包括64个工作项,并且处理器包括32个执行单元。在该实施方案中,波阵面中的工作项的数量等于执行单元的数量的两倍。在其他实施方案中,波阵面可以包括其他数量的工作项和/或处理器可以包括其他数量的执行单元。在一些情况下,处理器接收多个供执行的波阵面。在这些情况下,可以针对多个波阵面多次实现方法700。
接下来,处理器确定是否已检测到第一指示(条件框710)。在一个实施方案中,第一指示是在软件指令内声明的设置或参数,其中该设置或参数指定处理器要使用的操作模式。在另一个实施方案中,基于波阵面的高速缓存未命中率来生成第一指示。在其他实施方案中,其他类型的指示是可能的并且是可预期的。
如果检测到第一指示(条件框710,“是”支线),则处理器调度多个执行单元以在波阵面的第一部分和第二部分执行第一指令,然后调度多个执行单元以在波阵面的第一部分执行第二指令(框715)。对多个指令的其余部分,只要检测到第一指示,处理器就可以遵循该相同的指令调度模式。如果未检测到第一指示(条件框710,“否”支线),则处理器调度多个执行单元以在波阵面的第一部分执行第一指令和第二指令,然后调度多个执行单元以在波阵面的第二部分执行第一指令(框720)。对于多个指令的其余部分,只要未检测到第一指示,处理器就可以遵循该相同的指令调度模式。而且,如果未检测到第一指示,则处理器在波阵面的第一部分和波阵面的第二部分之间共享GPR的一部分(框725)。在框715和725之后,方法700结束。
现在转向图8,示出了用于确定在并行处理器中使用哪种操作模式的方法800的一个实施方案。处理器的控制单元确定波阵面的高速缓存未命中率(框805)。根据该实施方案,控制单元可以在框805中确定波阵面的一部分或整个波阵面的高速缓存未命中率。根据该实施方案,控制单元使用硬件和/或软件的任何合适组合来实现。在一个实施方案中,控制单元预测波阵面的高速缓存未命中率。在另一个实施方案中,控制单元接收由软件生成的指示,该指示指定波阵面的高速缓存未命中率。接下来,控制单元确定波阵面的高速缓存未命中率是否小于阈值(条件框810)。替代性地,如果控制单元接收由软件生成的指示,则该指示可以指定高速缓存未命中率是否小于阈值。在一个实施方案中,阈值是可编程的。在另一个实施方案中,阈值是预定的。
如果波阵面的高速缓存未命中率小于阈值(条件框810,“是”支线),则处理器在处理波阵面时利用第一操作模式(框815)。在一个实施方案中,第一操作模式涉及在移动到着色器程序中的下一指令之前在波阵面的所有部分发出每个指令。如果波阵面的高速缓存未命中率大于或等于阈值(条件块810,“否”支线),则处理器在处理波阵面时利用第二操作模式(框820)。在一个实施方案中,第二操作模式涉及在波阵面的第一部分执行一组指令,然后在波阵面的第二部分执行同一组指令,依此类推,直到波阵面的所有部分都已经被处理。在框815和820之后,方法800结束。
现在参考图9,示出了用于利用并行处理器的不同操作模式的方法900的另一实施方案。处理器的控制单元确定处理器的操作模式(框905)。根据该实施方案,控制单元使用硬件和/或软件的任何合适组合来实现。控制单元用于确定选择哪种操作模式的标准可以随实施方案而变化。在图8中在关于方法800的讨论中描述了可以使用的标准的一个示例。可以用于选择处理器操作模式的标准的其他示例是可能的并且是可预期的。
如果控制单元选择第一操作模式(条件框910,“第一”支线),则处理器不在正在由处理器处理的波阵面的不同子集之间共享寄存器(框915)。否则,如果控制单元选择第二操作模式(条件框910,“第二”支线),则控制单元在正在由处理器处理的波阵面的不同子集之间共享一个或多个寄存器(框920)。例如,在一个实施方案中,共享寄存器涉及处理器对第一组指令,对于波阵面的第一部分,使用寄存器文件的共享部分。然后,处理器将寄存器文件的共享部分重新用于波阵面的第二部分。如果波阵面具有两个以上的部分,则处理器将寄存器文件的共享部分重新用于波阵面的附加部分。在框920之后,方法900结束。
注意,在一些实施方案中,处理器可以具有两种以上的操作模式。在这些实施方案中,可以应用条件框910,使得操作模式的第一子集(例如,第一模式、第三模式、第七模式)遵循“第一”支线,操作模式的第二子集(例如,第二模式、第四模式、第五模式、第六模式)遵循图7中所示的“第二”支线。替代性地,在另一个实施方案中,寄存器文件的共享部分的大小可以根据不同的操作模式而变化。例如,对于第二模式,共享第一数量的寄存器,对于第三模式,共享第二数量的寄存器,对于第四模式,共享第三数量的GPR,以此类推。
在各种实施方案中,软件应用程序的程序指令用于实现前面描述的方法和/或机制。程序指令以高级编程语言(例如C)描述硬件的行为。替代性地,使用硬件设计语言(HDL),例如Verilog。程序指令存储在非暂时性计算机可读存储介质上。有多种类型的存储介质可用。存储介质在使用期间可由计算系统访问,以将程序指令和附带数据提供给计算系统以供程序执行。计算系统包括至少一个或多个存储器以及被配置为执行程序指令的一个或多个处理器。
应该强调的是,上述实施方案仅是实现方式的非限制性示例。一旦完全理解上述公开内容,许多变化和修改对于本领域技术人员将变得显而易见。旨在将以下权利要求解释为包含所有这些变化和修改。
Claims (20)
1.一种处理器,其包括:
多个执行单元;以及
调度器;
其中所述调度器被配置为:
响应于检测到第一指示,调度所述多个执行单元以在波阵面的第一部分和第二部分执行第一指令,然后调度所述多个执行单元以在所述波阵面的所述第一部分执行第二指令;以及
响应于未检测到所述第一指示,调度所述多个执行单元以在波阵面的所述第一部分执行所述第一指令和所述第二指令,然后调度所述多个执行单元以在所述波阵面的所述第二部分执行所述第一指令。
2.如权利要求1所述的处理器,其中所述第一指示是在软件指令内声明的参数。
3.如权利要求1所述的处理器,其中所述处理器被配置为在多个操作模式下操作,并且其中所述第一指示是使所述处理器在第一模式下操作的命令。
4.如权利要求3所述的处理器,其中所述处理器还包括多个通用寄存器(GPR),并且其中所述处理器被配置为响应于在第二模式下操作,在所述波阵面的所述第一部分与所述波阵面的所述第二部分之间共享一个或多个GPR。
5.如权利要求1所述的处理器,其中所述处理器还包括高速缓存并且被配置为:
确定所述波阵面的高速缓存未命中率;以及
响应于确定所述波阵面的所述高速缓存未命中率小于阈值,生成所述第一指示。
6.如权利要求1所述的处理器,其中所述波阵面中的工作项的数量大于所述多个执行单元的数量。
7.如权利要求1所述的处理器,其中所述波阵面中的工作项的数量是64,并且其中所述多个执行单元的数量是32。
8.一种用于计算装置的方法,所述方法包括:
响应于检测到第一指示,调度多个执行单元以在波阵面的第一部分和第二部分执行第一指令,然后调度所述多个执行单元以在所述波阵面的所述第一部分执行第二指令;以及
响应于未检测到所述第一指示,调度所述多个执行单元以在波阵面的所述第一部分执行所述第一指令和所述第二指令,然后调度所述多个执行单元以在所述波阵面的所述第二部分执行所述第一指令。
9.如权利要求8所述的方法,其中所述第一指示是在软件指令内声明的参数。
10.如权利要求8所述的方法,其中所述第一指示是使处理器在第一模式下操作的命令。
11.如权利要求10所述的方法,其还包括:响应于在第二模式下操作,在所述波阵面的所述第一部分与所述波阵面的所述第二部分之间共享一个或多个通用寄存器(GPR)。
12.如权利要求8所述的方法,其还包括:
确定所述波阵面的高速缓存未命中率;以及
响应于确定所述波阵面的所述高速缓存未命中率小于阈值,生成所述第一指示。
13.如权利要求8所述的方法,其中所述波阵面中的工作项的数量大于所述多个执行单元的数量。
14.如权利要求8所述的方法,其中所述波阵面中的工作项的数量是64,并且其中所述多个执行单元的数量是32。
15.一种系统,其包括:
存储器;以及
处理器,所述处理器包括:
多个执行单元;以及
调度器;
其中所述调度器被配置为:
响应于检测到第一指示,调度所述多个执行单元以在波阵面的第一部分和第二部分执行第一指令,然后调度所述多个执行单元以在所述波阵面的所述第一部分执行第二指令;以及
响应于未检测到所述第一指示,调度所述多个执行单元以在波阵面的所述第一部分执行所述第一指令和所述第二指令,然后调度所述多个执行单元以在所述波阵面的所述第二部分执行所述第一指令。
16.如权利要求15所述的系统,其中所述第一指示是在软件指令内声明的参数。
17.如权利要求15所述的系统,其中所述处理器被配置为在多个操作模式下操作,并且其中所述第一指示是使所述处理器在第一模式下操作的命令。
18.如权利要求17所述的系统,其中所述处理器还包括多个通用寄存器(GPR),并且其中所述处理器被配置为响应于在第二模式下操作,在所述波阵面的所述第一部分与所述波阵面的所述第二部分之间共享一个或多个GPR。
19.如权利要求15所述的系统,其中所述处理器还包括高速缓存,其中所述处理器被配置为:
确定所述波阵面的高速缓存未命中率;以及
响应于确定所述波阵面的所述高速缓存未命中率小于阈值,生成所述第一指示。
20.如权利要求16所述的系统,其中所述波阵面中的工作项的数量大于所述多个执行单元的数量。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/439,540 | 2017-02-22 | ||
US15/439,540 US10474468B2 (en) | 2017-02-22 | 2017-02-22 | Indicating instruction scheduling mode for processing wavefront portions |
EP17159105.0A EP3367236A1 (en) | 2017-02-22 | 2017-03-03 | Variable wavefront size |
EP17159105.0 | 2017-03-03 | ||
PCT/US2018/019026 WO2018156635A1 (en) | 2017-02-22 | 2018-02-21 | Variable wavefront size |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110168497A true CN110168497A (zh) | 2019-08-23 |
CN110168497B CN110168497B (zh) | 2023-10-13 |
Family
ID=58227992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880006415.6A Active CN110168497B (zh) | 2017-02-22 | 2018-02-21 | 可变波阵面大小 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10474468B2 (zh) |
EP (1) | EP3367236A1 (zh) |
JP (1) | JP7014810B2 (zh) |
KR (1) | KR102495792B1 (zh) |
CN (1) | CN110168497B (zh) |
WO (1) | WO2018156635A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10620994B2 (en) | 2017-05-30 | 2020-04-14 | Advanced Micro Devices, Inc. | Continuation analysis tasks for GPU task scheduling |
US11238557B2 (en) * | 2019-03-29 | 2022-02-01 | Intel Corporation | Workload-based maximum current |
CN113874837A (zh) * | 2019-05-29 | 2021-12-31 | 超威半导体公司 | 在gpu处的软件控制的可变波前大小执行 |
US11675568B2 (en) * | 2020-12-14 | 2023-06-13 | Advanced Micro Devices, Inc. | Dual vector arithmetic logic unit |
US11928754B2 (en) | 2022-04-07 | 2024-03-12 | Qualcomm Incorporated | GPU wave-to-wave optimization |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060149941A1 (en) * | 2004-12-15 | 2006-07-06 | St Microelectronics, Inc. | Method and apparatus for vector execution on a scalar machine |
CN101458665A (zh) * | 2007-12-14 | 2009-06-17 | 扬智科技股份有限公司 | 二级高速缓存及动能切换存取的方法 |
CN101676865A (zh) * | 2008-09-19 | 2010-03-24 | 国际商业机器公司 | 处理器和计算机系统 |
US20110219221A1 (en) * | 2010-03-03 | 2011-09-08 | Kevin Skadron | Dynamic warp subdivision for integrated branch and memory latency divergence tolerance |
CN102222347A (zh) * | 2010-06-16 | 2011-10-19 | 微软公司 | 使用波阵面编码来创建深度图像 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7761697B1 (en) | 2005-07-13 | 2010-07-20 | Nvidia Corporation | Processing an indirect branch instruction in a SIMD architecture |
WO2007143278A2 (en) | 2006-04-12 | 2007-12-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
US8151095B1 (en) * | 2008-07-18 | 2012-04-03 | Nvidia Corporation | System and method for context migration across CPU threads |
US8700862B2 (en) | 2008-12-03 | 2014-04-15 | Nvidia Corporation | Compression status bit cache and backing store |
US8751771B2 (en) * | 2010-09-29 | 2014-06-10 | Nvidia Corporation | Efficient implementation of arrays of structures on SIMT and SIMD architectures |
US9830156B2 (en) * | 2011-08-12 | 2017-11-28 | Nvidia Corporation | Temporal SIMT execution optimization through elimination of redundant operations |
US9830158B2 (en) | 2011-11-04 | 2017-11-28 | Nvidia Corporation | Speculative execution and rollback |
US10152329B2 (en) | 2012-02-09 | 2018-12-11 | Nvidia Corporation | Pre-scheduled replays of divergent operations |
JP6020091B2 (ja) | 2012-11-27 | 2016-11-02 | 富士通株式会社 | 演算処理装置の制御プログラム、演算処理装置の制御方法および演算処理装置 |
US9851977B2 (en) | 2012-12-06 | 2017-12-26 | Kalray | Apparatus and method for combining thread warps with compatible execution masks for simultaneous execution and increased lane utilization |
US9639371B2 (en) | 2013-01-29 | 2017-05-02 | Advanced Micro Devices, Inc. | Solution to divergent branches in a SIMD core using hardware pointers |
US9256623B2 (en) | 2013-05-08 | 2016-02-09 | Nvidia Corporation | System, method, and computer program product for scheduling tasks associated with continuation thread blocks |
US9652284B2 (en) | 2013-10-01 | 2017-05-16 | Qualcomm Incorporated | GPU divergence barrier |
US9766895B2 (en) | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Opportunity multithreading in a multithreaded processor with instruction chaining capability |
US10713059B2 (en) * | 2014-09-18 | 2020-07-14 | Advanced Micro Devices, Inc. | Heterogeneous graphics processing unit for scheduling thread groups for execution on variable width SIMD units |
US9898409B2 (en) * | 2014-10-09 | 2018-02-20 | The Regents Of The University Of Michigan | Issue control for multithreaded processing |
US9804666B2 (en) * | 2015-05-26 | 2017-10-31 | Samsung Electronics Co., Ltd. | Warp clustering |
CN106325995B (zh) * | 2015-06-19 | 2019-10-22 | 华为技术有限公司 | 一种gpu资源的分配方法及系统 |
US10853904B2 (en) * | 2016-03-24 | 2020-12-01 | Advanced Micro Devices, Inc. | Hierarchical register file at a graphics processing unit |
US20180046577A1 (en) * | 2016-08-15 | 2018-02-15 | National Taiwan University | Thread block managing method, warp managing method and non-transitory computer readable recording medium can perform the methods |
-
2017
- 2017-02-22 US US15/439,540 patent/US10474468B2/en active Active
- 2017-03-03 EP EP17159105.0A patent/EP3367236A1/en not_active Ceased
-
2018
- 2018-02-21 CN CN201880006415.6A patent/CN110168497B/zh active Active
- 2018-02-21 JP JP2019545963A patent/JP7014810B2/ja active Active
- 2018-02-21 KR KR1020197019496A patent/KR102495792B1/ko active IP Right Grant
- 2018-02-21 WO PCT/US2018/019026 patent/WO2018156635A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060149941A1 (en) * | 2004-12-15 | 2006-07-06 | St Microelectronics, Inc. | Method and apparatus for vector execution on a scalar machine |
CN101458665A (zh) * | 2007-12-14 | 2009-06-17 | 扬智科技股份有限公司 | 二级高速缓存及动能切换存取的方法 |
CN101676865A (zh) * | 2008-09-19 | 2010-03-24 | 国际商业机器公司 | 处理器和计算机系统 |
US20110219221A1 (en) * | 2010-03-03 | 2011-09-08 | Kevin Skadron | Dynamic warp subdivision for integrated branch and memory latency divergence tolerance |
CN102222347A (zh) * | 2010-06-16 | 2011-10-19 | 微软公司 | 使用波阵面编码来创建深度图像 |
Also Published As
Publication number | Publication date |
---|---|
JP2020515943A (ja) | 2020-05-28 |
CN110168497B (zh) | 2023-10-13 |
JP7014810B2 (ja) | 2022-02-01 |
EP3367236A1 (en) | 2018-08-29 |
KR20190116256A (ko) | 2019-10-14 |
WO2018156635A1 (en) | 2018-08-30 |
US10474468B2 (en) | 2019-11-12 |
KR102495792B1 (ko) | 2023-02-03 |
US20180239606A1 (en) | 2018-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110168497A (zh) | 可变波阵面大小 | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
TWI466027B (zh) | 解決執行緒發散的方法及系統 | |
KR102402672B1 (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템에서 연산들을 처리하는 방법 | |
CN110032395B (zh) | 用于提高资源利用率的统一寄存器文件 | |
US7697007B1 (en) | Predicated launching of compute thread arrays | |
US10977037B2 (en) | Techniques for comprehensively synchronizing execution threads | |
US20110310107A1 (en) | Information processing apparatus, method for controlling information processing apparatus, and program | |
TWI489392B (zh) | 多個應用程式分享的圖形處理單元 | |
KR102510524B1 (ko) | 조합된 월드-공간 파이프라인 셰이더 스테이지 | |
CN111353575A (zh) | 用于卷积神经网络的图块化格式 | |
US8370845B1 (en) | Method for synchronizing independent cooperative thread arrays running on a graphics processing unit | |
US20190278605A1 (en) | Software-controlled variable wavefront size execution at gpu | |
US20160350088A1 (en) | Fusing a sequence of operations through subdividing | |
TW201346576A (zh) | 分散作業的預先排程重播 | |
US9268601B2 (en) | API for launching work on a processor | |
US8473948B1 (en) | Method for synchronizing independent cooperative thread arrays running on a graphics processing unit | |
US20200264891A1 (en) | Constant scalar register architecture for acceleration of delay sensitive algorithm | |
US20200264879A1 (en) | Enhanced scalar vector dual pipeline architecture with cross execution | |
US20210294579A1 (en) | Graphics pipeline optimizations | |
Ino et al. | Performance study of LU decomposition on the programmable GPU | |
EP3977413A1 (en) | Software-controlled variable wavefront size execution at gpu | |
US20200019530A1 (en) | Method and system for partial wavefront merger | |
US11630667B2 (en) | Dedicated vector sub-processor system | |
US11675568B2 (en) | Dual vector arithmetic logic unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |