CN116964618A - 对偶向量算术逻辑单元 - Google Patents
对偶向量算术逻辑单元 Download PDFInfo
- Publication number
- CN116964618A CN116964618A CN202180088732.9A CN202180088732A CN116964618A CN 116964618 A CN116964618 A CN 116964618A CN 202180088732 A CN202180088732 A CN 202180088732A CN 116964618 A CN116964618 A CN 116964618A
- Authority
- CN
- China
- Prior art keywords
- instruction
- alu
- alu pipeline
- wavefront
- pipeline
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 15
- 230000009977 dual effect Effects 0.000 title claims description 17
- 238000000034 method Methods 0.000 claims description 28
- 230000001419 dependent effect Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 73
- 238000004891 communication Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000014616 translation Effects 0.000 description 3
- 238000011960 computer-aided design Methods 0.000 description 2
- 239000012530 fluid Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000036962 time dependent Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
Classifications
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
- G06F15/8015—One dimensional arrays, e.g. rings, linear arrays, buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/30109—Register structure having multiple operands in a single register
-
- 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
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种处理系统(100),该处理系统在单个执行循环中在单指令多数据(SIMD)单元(230)的多个算术逻辑单元(ALU)流水线(232,234)处执行波前(302,304)。该ALU流水线各自包括多个ALU,该多个ALU对从向量通用处理寄存器(VGPR)库(510,511,512,513)收集在高速缓存(220)处的波前操作数执行指令(310,312,314)并且在缓冲器(235)处输出对该波前执行的该指令的结果。通过在该高速缓存处存储由该VGPR库供应的波前,可使较大数量的波前对该SIMD单元可用而不增加VGPR带宽,从而使得多个ALU流水线能够在单个执行循环期间执行指令。
Description
背景技术
图形处理单元(GPU)是被配置为执行图形处理任务的复杂集成电路。例如,GPU执行最终用户应用(诸如视频游戏应用)所需的图形处理任务。GPU也越来越多地用于执行与图形无关的其他任务。在许多应用(诸如GPU中的图形处理)中,处理一系列工作项目(也称为线程)以输出最终结果。例如,在许多现代并行处理器中,单指令多数据(SIMD)单元内的执行单元同步地执行一组工作项目。由共同进程引起的工作项目的集合称为波前或线程束。
在处理期间,一个或多个SIMD单元同时执行多个波前。SIMD单元的执行单元(诸如包括多个算术逻辑单元(ALU)的一个或多个ALU流水线)执行波前以执行图形和向量处理操作。当波前内的所有工作项目完成处理时,波前的执行终止。每个波前包括使用同一组指令并行处理的多个工作项目。在一些情况下,在SIMD单元的ALU流水线的子组处执行波前,而SIMD单元的ALU流水线的其余部分空闲。如果波前中的工作项目的数量超过ALU流水线中的ALU的数量,则波前的执行延长为多于一个执行循环。
附图说明
通过参考附图,本公开可以被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
图1是根据一些实施方案的处理系统的框图。
图2是根据一些实施方案的采用对偶算术逻辑单元(ALU)流水线处理的处理系统的一部分的框图。
图3示出根据一些实施方案的用于在单个循环中在SIMD单元的两个ALU流水线处执行两个单指令多数据(SIMD)ALU指令的双指令。
图4示出根据一些实施方案的用于在单个循环中在SIMD单元的两个ALU流水线处执行波前的单指令。
图5示出根据一些实施方案的在向量通用寄存器库之间调和波前的工作项目。
图6是示出根据一些实施方案的用于在单个循环中在SIMD单元的两个ALU流水线处执行一个或多个指令的方法的流程图。
具体实施方式
图1至图6示出用于在单个执行循环中在单指令多数据(SIMD)单元的多个算术逻辑单元(ALU)流水线处执行波前的技术。ALU流水线各自包括多个ALU(也称为“通道”),该多个ALU对从向量通用寄存器(VGPR)库收集在高速缓存处的波前(操作数)执行指令。ALU在缓冲器处输出对波前执行的指令的结果。通过在该高速缓存处存储由该VGPR库供应的波前,可使较大数量的波前对该SIMD单元可用而不增加VGPR带宽,从而使得多个ALU流水线能够在单个执行循环期间执行指令。控制器向高速缓存传输作为后续指令的操作数的结果。
在一些实施方案中,波前包括N个工作项目或2N个工作项目,并且每个ALU流水线包括N个ALU。在一些实施方案中,波前包括32个工作项目(本文中称为“wave32”)或64个工作项目(本文中称为“wave64”),并且每个ALU流水线包括32个ALU。在每个ALU流水线处执行的指令每执行循环需要最多三个操作数;因此,在一些实施方案中,高速缓存的大小被设定为存储至少六个操作数以使得两个ALU流水线能够在单个执行循环中执行单个wave64指令或两个wave32指令。在一些实施方案中,在VGPR库之间调和波前的工作项目以减少用于在ALU流水线处访问工作项目的带宽。在不同的实施方案中,本文中描述的技术用于多种并行处理器(例如,向量处理器、图形处理单元(GPU)、通用GPU(GPGPU)、非标量处理器、高度并行处理器、人工智能(AI)处理器、推理引擎、机器学习处理器、其他多线程处理单元等)中的任一种处理器。
图1是根据一些实施方案的处理系统100的框图。处理系统100包括中央处理单元(CPU)102和图形处理单元(GPU)104。在各种实施方案中,CPU 102包括一个或多个单核或多核CPU。在各种实施方案中,GPU104包括硬件和/或软件的任何协作集合,相对于诸如常规CPU、常规图形处理单元(GPU)以及它们的组合等资源,该硬件和/或软件以加速方式执行与加速图形处理任务、数据并行任务、嵌套数据并行任务相关联的功能和计算。在图1的实施方案中,处理系统100形成在单个硅裸片或封装片上,该硅裸片或封装片组合了CPU 102和GPU 104,以提供统一的编程和执行环境。该环境使GPU 104能够与CPU 102一样流畅地用于一些编程任务。在其他实施方案中,CPU 102和GPU 104分开形成并安装在相同或不同的衬底上。应当理解,处理系统100可包括比图1所示更多或更少的部件。例如,处理系统100可以另外包括一个或多个输入接口、非易失性存储装置、一个或多个输出接口、网络接口,以及一个或多个显示器或显示接口。
如图1所示,处理系统100也包括系统存储器106、操作系统108、通信基础设施110和一个或多个应用112。对系统存储器106的访问由耦接到系统存储器106的存储器控制器(未示出)管理。例如,来自CPU 102或其他设备的用于对系统存储器106进行读取或写入的请求由存储器控制器来管理。在一些实施方案中,一个或多个应用112包括各种程序或命令,用以执行也在CPU 102处所执行的计算。CPU 102发送所选命令,用于在GPU 104处进行处理。下文将更详细地论述操作系统108和通信基础设施110。处理系统100还包括设备驱动器114和存储器管理单元,诸如输入/输出存储器管理单元(IOMMU)116。处理系统100的部件被实现为硬件、固件、软件或它们的任何组合。在一些实施方案中,处理系统100包括除了图1中示出的那些部件之外的或与图1中示出的那些部件不同的一个或多个软件、硬件和固件部件。
在处理系统100内,系统存储器106包括非持久性存储器,诸如DRAM(未示出)。在各种实施方案中,系统存储器106存储处理逻辑指令、常数值、在执行各部分应用或其他处理逻辑期间的变量值、或其他所需信息。例如,在各种实施方案中,在CPU 102执行对应部分的操作期间,用以在CPU 102上执行一个或多个操作的控制逻辑各部分驻留在系统存储器106内。在执行期间,相应应用、操作系统功能、处理逻辑命令和系统软件驻留在系统存储器106中。为操作系统108基础的控制逻辑命令通常在执行期间驻留在系统存储器106中。在一些实施方案中,在处理系统100的执行期间,其他软件命令(例如,用于实现设备驱动器114的一组指令或命令)也驻留在系统存储器106中。
IOMMU 116是多上下文存储器管理单元。如本文所用,上下文被视为内核执行环境以及定义了同步和存储器管理的域。上下文包括:一组设备;这些设备可访问的存储器;对应存储器属性;以及一个或多个命令队列,用以调度内核的执行或者对存储器对象的操作的执行。IOMMU 116包括逻辑,用以针对设备(诸如GPU 104)的存储器页面访问执行虚拟到物理地址转译。在一些实施方案中,IOMMU 116也包括转译后备缓冲器(TLB)(未示出)或具有对其的访问权。TLB实现于内容可寻址存储器(CAM)中,以针对GPU 104对系统存储器106中的数据所做的请求加速逻辑(即,虚拟)存储器地址到物理存储器地址的转译。
在各种实施方案中,通信基础设施110与处理系统100的部件互连。通信基础设施110包括(未示出)以下一项或多项:外围部件互连(PCI)总线、扩展PCI(PCI-E)总线、高级微控制器总线架构(AMBA)总线、高级图形端口(AGP)、或其他此类通信基础设施和互连件。在一些实施方案中,通信基础设施110也包括以太网网络或任何其他合适的满足了应用的数据传输速率要求的物理通信基础设施。通信基础设施110也包括用以将部件互连的功能,包括处理系统100的部件。
驱动器,诸如设备驱动器114,通过互连件或通信基础设施110,与设备(例如,GPU104)通信。当调取程序调用了设备驱动器114中的例程时,设备驱动器114向设备发出命令。一旦设备将数据发送回设备驱动器114,设备驱动器114就调用原始调取程序中的例程。一般来说,设备驱动器是硬件相关驱动器和操作系统专用驱动器,以提供任何必要的异步时间相关硬件接口所需的中断处理。在一些实施方案中,编译器120嵌入设备驱动器114之内。编译器120将源代码编译成处理系统100执行所需的程序指令。在此类编译期间,编译器120在各个编译阶段对程序指令应用变换。在其他实施方案中,编译器120是独立的应用。在各种实施方案中,设备驱动器114通过例如向在CPU 102处执行的软件(例如,应用112)提供应用编程接口(API)来控制GPU 104的操作,以访问GPU 104的各种功能。
CPU 102包括(未示出)以下一项或多项:控制处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)或数字信号处理器(DSP)。CPU 102执行至少一部分控制着处理系统100的操作的控制逻辑。例如,在各种实施方案中,CPU 102执行操作系统108、一个或多个应用112和设备驱动器114。在一些实施方案中,通过跨CPU 102和其他处理资源(诸如GPU104)分配与一个或多个应用112相关联的处理,CPU 102发起并控制一个或多个应用112的执行。
GPU 104执行针对所选功能的命令和程序,诸如图形操作以及其他特别适合于并行处理的操作。一般来讲,GPU 104常用于执行图形流水线操作,诸如像素操作、几何计算以及将图像渲染到显示器。在一些实施方案中,GPU 104也基于从CPU 102接收到的命令或指令,执行计算处理操作(例如,与图形无关的操作,诸如视频操作、物理模拟、计算流体动力学等)。例如,此类命令包括通常未定义于GPU 104的指令集架构(ISA)中的特殊指令。在一些实施方案中,GPU 104接收表示图形图像的图像几何形状,以及用于渲染和显示图像的一个或多个命令或指令。在各种实施方案中,图像几何形状对应于二维(2D)或三维(3D)计算机化图形图像的表示。
在各种实施方案中,GPU 104包括一个或多个计算单元,诸如包括一个或多个SIMD单元124的一个或多个处理核心122,该一个或多个SIMD单元各自被配置为例如根据SIMD执行模型与波前中被其他SIMD单元124执行的其他线程同时地执行线程。SIMD执行模型是这样一种模型,其中多个处理元件共享单个程序控制流单元和程序计数器,并且因此执行相同的程序,但是能够用不同数据来执行该程序。处理核心122也被称为着色器核心或流式多处理器(SMX)。在GPU 104中实现的处理核心122的数量是设计选择的问题。每个处理核心122包括一个或多个处理元件,诸如标量和/或向量浮点单元和算术逻辑单元(ALU)等。在各种实施方案中,处理核心122也包括专用处理单元(未示出),诸如反平方根单元和正弦/余弦单元。
一个或多个处理核心122中的每个处理核心执行特定工作项目的相应实例化以处理传入数据,其中一个或多个处理核心122中的基本执行单位是工作项目(例如,线程)。每个工作项目表示例如内核的并行执行集合的单个实例化,该内核由待并行执行的命令在设备上所调用。工作项目作为在处理核心122处正执行的工作组的一部分在一个或多个处理元件处执行。
GPU 104发出并执行工作项目,这些工作项目包括在单个SIMD单元124上作为“波前”同时执行的线程组。波前也可互换地称为线程束、向量或线程。在一些实施方案中,波前包括着色器程序的并行执行实例,其中每个波前包括依据SIMD范式而在单个SIMD单元124上同时执行的多个工作项目(例如,一个用多项数据来执行相同指令流的指令控制单元)。调度器128被配置为执行与调度不同处理核心122和SIMD单元124上的各种波前有关的操作,以及执行其他用于协调GPU 104上的各种任务的操作。
为了减少与芯片外存储器访问相关联的延迟,各种GPU架构包括存储器高速缓存分级结构(未示出),其包括例如L1高速缓存和本地数据共享(LDS)。LDS是专用于每个处理核心122的高速、低延迟存储器。在一些实施方案中,LDS是完全采集/分散模型,使得工作组在分配的空间中的任何地方写入。
一个或多个处理核心122所提供的并行性适合于图形相关操作,诸如像素值计算、顶点变换、曲面细分、几何着色操作和其他图形操作。图形处理流水线130接受来自CPU 102的图形处理命令,并且因此将计算任务提供给一个或多个处理核心122以用于并行执行。一些图形流水线操作(诸如像素处理和其他并行计算操作)需要对输入数据元素的流或集合执行相同的命令流或计算内核。为了并行处理此类数据元素,在一个或多个处理核心122中的多个SIMD单元124上,并发地执行相同计算内核的相应实例化。如本文所提及,例如,计算内核是一项函数,其包含了程序中所声明的且在APD处理核心122上所执行的指令。此函数也称为内核、着色器、着色器程序、或程序。
为了促进在单个执行循环中跨SIMD单元124的两个32通道ALU流水线处理单个wave64波前指令或两个wave32波前指令,处理核心122包括高速缓存以扩展从向量通用寄存器(VGPR)库接收并且可用作到SIMD单元124中的每个SIMD单元的输入的操作数(波前)的数量,如下文关于图2更详细描述的。由ALU流水线对波前执行的指令的结果被输出到缓冲器(未示出)。控制器(未示出)向高速缓存传输作为后续指令的操作数的结果。
在各种实施方案中,处理系统100可以是计算机、台式计算机、移动设备、服务器、或各种其他类型的计算系统或设备中的任一种。需注意,处理系统100的部件的数量可以因实施方案而异。每个部件/子部件的数量可能比图1所示的数量更多或更少。还需注意,处理系统100可包括图1中未示出的其他部件。另外,在其他实施方案中,处理系统100可以以不同于图1所示的方式构造。
图2是根据一些实施方案的采用对偶算术逻辑单元(ALU)流水线处理的处理系统100的GPU 104的一部分200的框图。GPU 104的该部分200包括SIMD单元230,其包括两个ALU流水线(ALU流水线1 232和ALU流水线2 234)和高速缓存220。高速缓存220从一组VGPR库210、211、212、213接收波前(操作数)222。SIMD单元230从指令缓冲器250接收波前指令(也简称为指令)255以对存储在高速缓存220处的波前222执行操作。所执行的指令255的结果被存储在缓冲器235处,并且控制器240向高速缓存220以及向VGPR库210、211、212、213传输作为后续指令的操作数的结果。
ALU流水线1 232和ALU流水线2 234中的每一者包括N个ALU。在一些实施方案中,ALU流水线1 232和ALU流水线2 234中的每一者支持相同类型的波前指令,并且在其他实施方案中,ALU流水线2 234支持ALU流水线1 232所支持的波前指令类型的子组。例如,在一些实施方案中,ALU流水线1 232和ALU流水线2 234支持融合乘加(FMA)波前指令以计算a与b的乘积并且随后将c与该乘积相加。
一组VGPR库,即VGPR库0 210、VGPR库1 211、VGPR库2 212和VGPR库3 213(统称为VGPR库210至213),从源(未示出)接收输入,诸如本地数据共享返回数据、纹理返回数据和VGPR初始化输入,并且向高速缓存220提供波前。在一些实施方案中,高速缓存220的大小被设定为存储至少六个波前并且包括至少三个读取端口224以向ALU流水线1 232和ALU流水线2 234提供输入操作数222。在一些实施方案中,每个VGPR库210至213可以独立于其他VGPR库210至213被访问。每个VGPR库210至213包括N个寄存器,其中N的值因实施方案而异。VGPR库210至213中的寄存器的大小也根据实施方案而异。
向量ALU(VALU)指令(诸如指令255)存储在指令缓冲器250处,并且从采集指令队列(未示出)向ALU流水线1 232和ALU流水线2 234传送。ALU流水线1 232和ALU流水线2 234经由读取端口224从高速缓存220接收指令255和波前操作数222,并且在单个执行循环中对波前操作数222执行由指令255指示的命令。ALU流水线1 232和ALU流水线2 234向缓冲器235输出根据指令255的结果。控制器240确定存储在缓冲器235处的结果中的哪些结果是后续指令的源操作数,并且向高速缓存220传输源操作数。控制器240被实现为硬件、固件、软件或它们的任何组合。
图3示出根据一些实施方案的用于在单个循环中在单指令多数据(SIMD)单元的两个ALU流水线处对一个或多个波前(诸如波前302、304)执行两个指令的示例性双指令310的一个实施方案300。在例示的示例中,波前302和波前304中的每一者具有N个工作项目,其中N为正整数,并且其中N因实施方案而异。相似地,ALU流水线1 232和ALU流水线2 234中的每一者包括N个通道(ALU)。在一个实施方案中,N等于32。
双指令310描述了一对指令——指令1 312和指令2 314,它们彼此独立并且在单个循环中从一个波发出。双指令310包括波前302、304具有与ALU流水线232、234中的每一者中的ALU的数量相同数量的工作项目的指示。指令1 312发布到ALU流水线1 232并且指令2314发布到ALU流水线2 234。在一些实施方案中,指令1 312和指令2 314中的每一者使用多达两个VGPR库,并且在一些实施方案中,指令1 312和指令2 314中的每一者的源操作数使用不同的VGPR库。
图4示出根据一些实施方案的用于在单个循环中在SIMD单元的两个ALU流水线处执行波前402的示例性单指令410的一个实施方案400。在例示的示例中,波前402具有2*N个工作项目,其中N为正整数,并且其中N因实施方案而异。在一个实施方案中,N等于32。波前402的第一部分包括工作项目W0至WN-1,并且波前402的第二部分包括工作项目WN至W2N-1。单指令410包括波前402具有与ALU流水线232、234两者中的ALU加在一起的数量相同数量的工作项目的指示。单指令410还指示波前402的单个部分(诸如包括工作项目W0至WN-1的部分)旨在在给定指令循环中在ALU流水线1 232的通道ALU0至ALUN-1上执行,而波前402的另一部分(诸如包括工作项目WN至W2N-1的部分)旨在在相同指令循环中在ALU流水线2 234的通道ALUN至ALU2N-1上执行。
在一个实施方案中,N为32,并且每波前的工作项目的数量为64。在其他实施方案中,N可以是其他值。在N为32时的实施方案中,ALU流水线1 232和ALU流水线2 234还各自包括32个通道(或ALU),其示出为通道ALU0至ALUN-1和ALUN至ALU2N-1。
图5示出根据一些实施方案的在向量通用寄存器库(VGPR库0 510、VGPR库1 511、VGPR库2 512、VGPR库3 513(统称为VGPR库510至513))之间调和波前的工作项目的示例的一个实施方案500。为了促进在单个指令循环中在各自包括N个通道(或ALU)的两个ALU流水线处执行包括2*N个工作项目的波前,VGPR的上半部和下半部位于不同的库中。在例示的示例中,N为32,并且波前中的工作项目的数量为64。波前的下半部(对应于通道31-0)被布置成使得bank[1:0]=VGPR[1:0],而波前的上半部(对应于通道63-32)被调和(即,交换)成使得bank[1:0]={VGPR[1],~VGPR[0]}。
因此,例如,V0(31-0)位于VGPR库0 510中,而V0(63-32)位于VGPR库1 511中,并且V1(31-0)位于VGPR库1 511中,而V1(63-32)位于VGPR库0 510中。相似地,V2(31-0)位于VGPR库2 512中,而V2(63-32)位于VGPR库3 513中,并且V3(31-0)位于VGPR库3513中,而V3(63-32)位于VGPR库2 512中。以这种方式,波前的工作项目在VGPR库510至513之间平均地分配。通过调和在VGPR库之间分配波前的工作项目使得能够一个循环中针对64个通道读取源。
图6是示出根据一些实施方案的用于在单个循环中在SIMD单元的两个ALU流水线处执行一个或多个指令的方法600的流程图。方法600是关于在图1和图2的处理系统100处的示例性具体实施来描述的。在框602处,SIMD单元124从指令缓冲器250接收指令255。在框604处,SIMD单元124在高速缓存220处采集操作数。在框606处,SIMD单元124确定指令255是将在两个ALU流水线上执行的双指令还是单指令。
如果在框606处,SIMD单元124确定指令是包括指令1 312和指令2 314的双指令310,则方法流程继续到框608。在框608处,SIMD单元124将指令1 312路由到ALU流水线1232,并且将指令2 314路由到ALU流水线2 234。在框610处,在单个指令循环中,使用存储在高速缓存220处的源操作数,ALU指令流水线1 232执行指令1并且指令流水线2 234执行指令2。方法流程然后继续到框616。
如果在框606处,SIMD单元124确定指令是将在ALU流水线1 232和ALU流水线2 234两者上执行的单指令410,则方法流程继续到框612。在框612处,GPU 104在VGPR库之间调和源操作数的工作项目以均匀地分配波前,使得波前可在单个指令循环中被读取到高速缓存220中。在框614处,在单个指令循环中,ALU流水线1 232和ALU流水线2 234两者使用存储在高速缓存220处的源操作数来执行指令410。方法流程然后继续到框616。
在框616处,SIMD单元124在缓冲器235处存储指令的结果。在框618处,控制器240从缓冲器235向高速缓存220以及向VGPR库210、211、212、213传输作为后续指令的源操作数的结果。然后方法流程继续回到框602以用于下一个指令。
在一些实施方案中,上述装置和技术在包括一个或多个集成电路(IC)设备(也称为集成电路封装或微芯片)的系统中实现,诸如上文参考图1至图6所描述的处理系统。电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具可以在这些IC设备的设计和制造中使用。这些设计工具通常表示为一个或多个软件程序。一个或多个软件程序包括可由计算机系统执行的代码,以操纵计算机系统对代表一个或多个IC设备的电路的代码进行操作以便执行用以设计或调整制造系统以制造电路的过程的至少一部分。该代码可以包括指令、数据、或指令和数据的组合。代表设计工具或制造工具的软件指令通常存储在计算系统可访问的计算机可读存储介质中。同样,代表IC设备的设计或制造的一个或多个阶段的代码可以存储在相同计算机可读存储介质或不同计算机可读存储介质中并从其访问。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂态存储介质或非暂态存储介质的组合。此类存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)、或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络(例如,网络可访问存储装置(NAS))耦接到计算机系统。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如闪存存储器、高速缓存、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或设备的一部分可能不是必需的,并且可以执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可以导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。
Claims (16)
1.一种方法,包括:
在高速缓存处存储一组波前,每个波前包括用于在执行单元处执行的多个工作项目,所述执行单元包括第一算术单元(ALU)流水线和第二ALU流水线;以及
在第一执行循环中在所述第一ALU流水线处以及在所述第二ALU流水线处均对所述一组波前选择性地执行单指令或双指令。
2.根据权利要求1所述的方法,还包括:
从一组向量通用寄存器(VGPR)库向所述高速缓存传输所述一组波前。
3.根据权利要求2所述的方法,其中
波前的工作项目的数量等于所述第一ALU流水线的ALU的数量加上所述第二ALU流水线的ALU的数量;并且
选择性地执行包括在第一执行循环中在所述第一ALU流水线处以及在所述第二ALU流水线处均执行单指令。
4.根据权利要求3所述的方法,还包括:
在所述一组VGPR库之间均匀地分配所述一组波前中的波前的所述工作项目。
5.根据权利要求1所述的方法,还包括:
在缓冲器处存储所述单指令或所述双指令的结果;以及
响应于取决于所述结果的指令,从所述缓冲器向所述高速缓存传输所述单指令或所述双指令的所述结果。
6.根据权利要求1所述的方法,其中
波前的工作项目的数量等于所述第一ALU流水线的ALU的数量;并且
选择性地执行包括执行双指令,所述双指令包括在所述第一执行循环中将在所述第一ALU流水线处对第一波前执行的第一指令以及将在所述第二ALU流水线处对第二波前执行的第二指令。
7.一种方法,包括:
基于存储在高速缓存处的一组波前,在第一执行循环中在包括多个算术逻辑单元(ALU)的第一ALU流水线处以及在包括多个ALU的第二ALU流水线处均选择性地执行单指令或双指令,其中所述一组波前中的第一波前包括等于所述第一ALU流水线中的ALU的数量加上所述第二ALU流水线中的ALU的数量的多个工作项目。
8.根据权利要求7所述的方法,还包括:
从一组向量通用寄存器(VGPR)库向所述高速缓存传输所述一组波前。
9.根据权利要求8所述的方法,还包括:
在所述高速缓存处存储来自所述一组VGPR库的读取值。
10.根据权利要求8所述的方法,还包括:
在缓冲器处存储所述单指令或所述双指令的结果;以及
响应于取决于所述结果的指令,从所述缓冲器向所述高速缓存传输所述结果。
11.根据权利要求7所述的方法,其中:
所述双指令包括在所述第一执行循环中将在所述第一ALU流水线处对第二波前执行的第一指令以及将在所述第二ALU流水线处对第三波前执行的第二指令;并且
所述一组波前中的所述第二波前的工作项目的数量等于所述第一ALU流水线的ALU的数量,并且所述第三波前的工作项目的数量等于所述第二ALU流水线的ALU的数量。
12.一种设备,包括:
高速缓存,所述高速缓存用于存储第一组波前,每个波前包括多个工作项目;和
执行单元,所述执行单元包括第一算术单元(ALU)流水线和第二ALU流水线,以在第一执行循环中在所述第一ALU流水线处以及在所述第二ALU流水线处均对所述第一组波前选择性地执行单指令或双指令,其中所述第一ALU流水线和所述第二ALU流水线各自包括多个ALU。
13.根据权利要求12所述的设备,还包括:
一组向量通用寄存器(VGPR),所述一组VGPR用于向所述高速缓存传输波前。
14.根据权利要求12所述的设备,还包括:
缓冲器,所述缓冲器用于存储来自所述单指令或所述双指令的结果;和
控制器,所述控制器响应于取决于所述结果的指令而从所述缓冲器向所述高速缓存传输结果。
15.根据权利要求12所述的设备,其中所述双指令包括在所述第一执行循环中将在所述第一ALU流水线处对第一波前执行的第一指令以及将在所述第二ALU流水线处对第二波前执行的第二指令。
16.根据权利要求12所述的设备,其中
第一波前的工作项目的数量等于所述第一ALU流水线的ALU的数量加上所述第二ALU流水线的ALU的数量;并且
所述执行单元将在所述第一执行循环中在所述第一ALU流水线处以及在所述第二ALU流水线处均选择性地执行单指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/121,354 | 2020-12-14 | ||
US17/121,354 US11675568B2 (en) | 2020-12-14 | 2020-12-14 | Dual vector arithmetic logic unit |
PCT/US2021/063132 WO2022132654A1 (en) | 2020-12-14 | 2021-12-13 | Dual vector arithmetic logic unit |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116964618A true CN116964618A (zh) | 2023-10-27 |
Family
ID=81941425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180088732.9A Pending CN116964618A (zh) | 2020-12-14 | 2021-12-13 | 对偶向量算术逻辑单元 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11675568B2 (zh) |
EP (1) | EP4260274A1 (zh) |
JP (1) | JP2024500363A (zh) |
KR (1) | KR20230125792A (zh) |
CN (1) | CN116964618A (zh) |
WO (1) | WO2022132654A1 (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8516300B2 (en) | 2005-08-29 | 2013-08-20 | The Invention Science Fund I, Llc | Multi-votage synchronous systems |
US10133578B2 (en) | 2013-09-06 | 2018-11-20 | Huawei Technologies Co., Ltd. | System and method for an asynchronous processor with heterogeneous processors |
US10592279B2 (en) * | 2016-06-23 | 2020-03-17 | Advanced Micro Devices, Inc. | Multi-processor apparatus and method of detection and acceleration of lagging tasks |
CN108009976A (zh) * | 2016-10-27 | 2018-05-08 | 超威半导体公司 | 用于图形处理单元(gpu)计算的超级单指令多数据(超级simd) |
US10474468B2 (en) * | 2017-02-22 | 2019-11-12 | Advanced Micro Devices, Inc. | Indicating instruction scheduling mode for processing wavefront portions |
US10346055B2 (en) * | 2017-07-28 | 2019-07-09 | Advanced Micro Devices, Inc. | Run-time memory access uniformity checking |
US10699366B1 (en) | 2018-08-07 | 2020-06-30 | Apple Inc. | Techniques for ALU sharing between threads |
WO2020172988A1 (en) | 2019-02-28 | 2020-09-03 | Huawei Technologies Co., Ltd. | Shader alu outlet control |
-
2020
- 2020-12-14 US US17/121,354 patent/US11675568B2/en active Active
-
2021
- 2021-12-13 EP EP21907572.8A patent/EP4260274A1/en active Pending
- 2021-12-13 WO PCT/US2021/063132 patent/WO2022132654A1/en active Application Filing
- 2021-12-13 KR KR1020237021864A patent/KR20230125792A/ko unknown
- 2021-12-13 JP JP2023535509A patent/JP2024500363A/ja active Pending
- 2021-12-13 CN CN202180088732.9A patent/CN116964618A/zh active Pending
-
2024
- 2024-01-16 US US18/414,164 patent/US20240168719A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20230125792A (ko) | 2023-08-29 |
US20220188076A1 (en) | 2022-06-16 |
JP2024500363A (ja) | 2024-01-09 |
WO2022132654A1 (en) | 2022-06-23 |
US11675568B2 (en) | 2023-06-13 |
EP4260274A1 (en) | 2023-10-18 |
US20240168719A1 (en) | 2024-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737470B (zh) | 低精度机器学习操作的计算优化 | |
US8639882B2 (en) | Methods and apparatus for source operand collector caching | |
US8619087B2 (en) | Inter-shader attribute buffer optimization | |
CN103886547A (zh) | 用于存储共享顶点的技术 | |
CN103810743A (zh) | 在上游着色器中设置下游渲染状态 | |
CN103885902A (zh) | 用于经由纹理硬件实施存储器访问操作的技术 | |
CN103886538A (zh) | 用于存储共享顶点的技术 | |
US20120084539A1 (en) | Method and sytem for predicate-controlled multi-function instructions | |
TW201337829A (zh) | 暫存器檔案型讀取 | |
JP2023518833A (ja) | ハードウェアアクセラレーションリソースを有効にするためのコンパイラ主導のタイル置換 | |
CN103885903A (zh) | 用于经由纹理硬件实施存储器访问操作的技术 | |
CN112749120A (zh) | 将数据有效地传输至处理器的技术 | |
WO2017074377A1 (en) | Boosting local memory performance in processor graphics | |
CN113039522A (zh) | 用于虚拟化的图形处理器的有效本地显示共享的装置和方法 | |
CN103793206A (zh) | 基于工作队列的图形处理单元工作创建 | |
CN113590198A (zh) | 使用脉动阵列在并行计算机器中计算高效的跨通道运算 | |
CN111324439A (zh) | 用于向量单元的密码引擎和调度方法 | |
US20200264879A1 (en) | Enhanced scalar vector dual pipeline architecture with cross execution | |
US20200264873A1 (en) | Scalar unit with high performance in crypto operation | |
US11675568B2 (en) | Dual vector arithmetic logic unit | |
US10664285B1 (en) | Flexibly deriving intended thread data exchange patterns | |
US11409840B2 (en) | Dynamically adaptable arrays for vector and matrix operations | |
US11847462B2 (en) | Software-based instruction scoreboard for arithmetic logic units | |
US20200264891A1 (en) | Constant scalar register architecture for acceleration of delay sensitive algorithm | |
US11630667B2 (en) | Dedicated vector sub-processor system |
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 |