CN117859114A - 用于在高速缓存存储器、本地数据存储装置以及寄存器文件之间共享存储的处理设备和方法 - Google Patents

用于在高速缓存存储器、本地数据存储装置以及寄存器文件之间共享存储的处理设备和方法 Download PDF

Info

Publication number
CN117859114A
CN117859114A CN202280057014.XA CN202280057014A CN117859114A CN 117859114 A CN117859114 A CN 117859114A CN 202280057014 A CN202280057014 A CN 202280057014A CN 117859114 A CN117859114 A CN 117859114A
Authority
CN
China
Prior art keywords
register file
program
cache memory
simd
lds
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
Application number
CN202280057014.XA
Other languages
English (en)
Inventor
马克西姆·V·卡扎科夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN117859114A publication Critical patent/CN117859114A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

提供了一种加速处理设备,该加速处理设备包括多个计算单元,每个计算单元包括多个SIMD单元,并且每个SIMD单元包括寄存器文件。该加速处理设备还包括与这些SIMD单元中的每个SIMD单元通信的LDS。该加速处理设备还包括与这些SIMD单元中的每个SIMD单元通信的第一部分高速缓存存储器和由这些计算单元共享的第二部分高速缓存存储器。这些计算单元被配置为执行程序,其中SIMD单元的该寄存器文件、该第一部分高速缓存存储器和该LDS中的至少一者的存储部分被保留为该寄存器文件、该第一部分高速缓存存储器和该LDS中的另一者的一部分。

Description

用于在高速缓存存储器、本地数据存储装置以及寄存器文件 之间共享存储的处理设备和方法
相关申请的交叉引用
本申请要求2021年9月3日提交的美国非临时专利申请17/467,104号的权益,该非临时专利申请的内容据此以引用方式并入本文。
背景技术
加速处理设备(APD),诸如图形处理单元(GPU)、人工智能处理器和计算处理器,用于对非常适合并行处理的操作(例如,图形操作)的处理进行加速。GPU包括多个处理器内核(例如,计算单元(CU)),这些处理器内核根据单指令多数据(SIMD)范式以并行方式执行操作。
附图说明
可以从以下描述中获得更详细的理解,通过示例结合附图给出,其中:
图1是可实现本公开的一个或多个特征的示例性设备的框图;
图2是例示用于实现本公开的一个或多个特征的示例性部件的框图;
图3是例示用于实现本公开的一个或多个特征的图2中所示的APD的CU的示例性部件的框图;
图4是例示根据本公开的特征的基于特定应用程序划分用于共享存储的存储块的示例性方法的流程图;以及
图5是例示根据本公开的特征的执行程序的示例性方法的流程图。
具体实施方式
GPU除CU以外包括不同层级的高速缓存(例如,层级1高速缓存(L1高速缓存)和层级2高速缓存(L2高速缓存))。每个CU包括L1高速缓存和本地数据存储装置(LDS)。L1高速缓存和LDS在CU的SIMD单元之间共享。L1高速缓存是GPU存储器的一部分,GPU存储器还包括层级2高速缓存(由其他CU共享)和主存储器。
在一些具体实施中,L1高速缓存存储由HW高速缓存逻辑管理。LDS存储由在CU上执行的软件内核管理。由于CU和L1高速缓存之间的带宽大于CU和存储器其他部分(例如,L2高速缓存和主存储器)之间的带宽,因此L1高速缓存用于存储由CU经常访问的数据。同样,CU和LDS之间的带宽相对较大,以便在CU的SIMD单元之间共享数据。L1高速缓存通常具有介于16KB和32KB之间的容量。LDS通常具有由GPU遵循的标准(例如,图形标准)定义的固定容量(例如,64KB或更大)。
提高L1高速缓存的容量使L1高速缓存存储更常访问的数据。然而,L1高速缓存和LDS各自占用CU中的一个硅面积。因此,提高L1高速缓存的容量使L1高速缓存存储更常访问的数据也使L1高速缓存在GPU中的面积增加。
在一些常规加速处理器中,L1高速缓存和LDS的数据存储装置在彼此之间共享。例如,如果确定要使用LDS的较少存储空间,则LDS的64KB中的一部分(例如,16KB)可被保留以由LDS使用,并且LDS的64KB中的剩余部分可由L1高速缓存使用以存储更常访问的数据。虽然这些常规加速处理器使总面积得到更高效的使用,但一些应用会受益于使用更大的L1高速缓存存储容量。
程序的一部分(例如,指令块)通常被分解成波前,每个波前包括遵循相同控制流路径的多个工作项或线程。寄存器文件被分配给CU的每个SIMD单元,区块中的每个波前都使用所分配的寄存器文件在CU的SIMD单元上进行调度和处理。每个波前的寄存器文件占用空间大小(即,被分配以用于处理波前的寄存器数量)是在编译时确定的。当每个波前的寄存器文件占用空间减少时,可以并行处理更多波,从而减少整体延迟,因为当其他正在处理的波前等待存储器的数据(即,存储器访问)时,CU可并行调度和处理更多波前。当每个波前的寄存器文件占用空间增加时,存储器访问的总次数减少,但CU可并行处理的波前减少。在运行时,根据所确定的每个波前的寄存器文件占用空间来调度区块的波前,并且这些波前在CU的不同SIMD单元上并行处理或在同一SIMD单元上串行处理。
CU的寄存器文件的容量介于256KB和512KB之间。也就是说,寄存器文件的容量及其面积大于L1高速缓存和LDS的容量和面积。然而,在GPU中执行的程序的不同部分(例如,波前)之间不易共享寄存器文件的存储,并且在一些情况下,寄存器文件并未被完全占用。例如,在常规架构中,寄存器文件的静态随机存取存储器(SRAM)的部分在SIMD单元之间不共享。因此,当程序的执行包括使第一SIMD单元的寄存器中的数据可为第二SIMD单元所用时,第一SIMD单元首先将数据推送到LDS 308、L1高速缓存306或存储器另一部分,随后由第二SIMD单元访问这些数据。因此,波前的线程可通过存储器(例如,主存储器)间接访问同一波前的另一线程,但延迟时间比直接访问数据长。然而,波前的线程无法通过寄存器文件直接访问同一波前的另一线程。
本公开的特征提供用于通过共享L1高速缓存、LDS和寄存器文件的组合存储高效处理程序的设备和方法。寄存器文件的SRAM中的在常规架构中不被其他SIMD单元138共享的部分为L1高速缓存和LDS所保留,并且在CU的SIMD单元之间共享。寄存器文件的部分的为L1高速缓存和LDS所保留的数量或大小基于要执行的应用程序。也就是说,L1高速缓存、LDS和寄存器文件之间的分区是根据要执行的特定应用程序定制的。例如,当要执行的应用程序被确定为需要较大L1高速缓存容量但不需要较大寄存器文件的应用程序时,寄存器文件的较大部分被保留,以用于额外的L1高速缓存存储。另选地,当要执行的应用程序被确定为需要较大寄存器文件但不需要较大L1高速缓存容量或LDS时,则为L1高速缓存或LDS保留寄存器文件的较小部分或不保留寄存器文件。
提供了一种加速处理设备,该加速处理设备包括多个计算单元,每个计算单元包括多个SIMD单元,并且每个SIMD单元包括寄存器文件。该加速处理设备还包括与这些SIMD单元中的每个SIMD单元通信的LDS。该加速处理设备还包括与这些SIMD单元中的每个SIMD单元通信的第一部分高速缓存存储器和由这些计算单元共享的第二部分高速缓存存储器。这些计算单元被配置为执行程序,其中SIMD单元的该寄存器文件、该第一部分高速缓存存储器和该LDS中的至少一者的存储部分被保留为该寄存器文件、该第一部分高速缓存存储器和该LDS中的另一者的一部分。
提供了一种执行程序的方法,该方法包括:在加速处理设备的计算单元中使用寄存器文件的第一部分中的数据执行该程序的第一部分;将来自该寄存器文件的该第一部分的数据存储到被实例化为第一层级高速缓存存储器的一部分的该寄存器文件的第二部分;并且将存储在该寄存器文件的该第二部分中的该数据重新载入到该寄存器文件的该第一部分,以执行该程序的第二部分。
提供了一种处理设备,该处理设备包括加速处理设备。该加速处理设备包括存储器和多个计算单元,每个计算单元包括多个SIMD单元,并且每个SIMD单元包括寄存器文件。该加速处理设备还包括与这些SIMD单元中的每个SIMD单元通信的LDS。该加速处理设备还包括高速缓存存储器,该高速缓存存储器包括与这些SIMD单元中的每个SIMD单元通信的第一层级和在这些计算单元之间共享的第二层级。这些计算单元被配置为执行程序,其中SIMD单元的该寄存器文件、该第一层级高速缓存存储器和该LDS中的至少一者的存储部分被保留为该寄存器文件、该第一层级高速缓存存储器和该LDS中的另一者的一部分。
图1是可实现本公开的一个或多个特征的示例设备100的框图。设备100可包括例如计算机、游戏设备、手持设备、机顶盒、电视、移动电话或平板计算机。设备100包括处理器102、存储器104、存储装置106、一个或多个输入设备108以及一个或多个输出设备110。设备100还可任选地包括输入驱动器112和输出驱动器114。应当理解,设备100可包括图1中未示出的另外部件。
在各种另选方案中,处理器102包括中央处理单元(CPU)、GPU、位于同一管芯上的CPU和GPU或一个或多个处理器核心,其中每个处理器核心可为CPU或GPU。在各种另选方案中,存储器104位于与处理器102相同的管芯上或与处理器102分开定位。存储器104包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM(DRAM)或高速缓存。
存储装置106包括固定或可移动存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入设备108包括但不限于键盘、小键盘、触摸屏、触控板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。输出设备110包括但不限于显示器、扬声器、打印机、触觉反馈设备、一个或多个灯、天线或网络连接(例如,用于发射和/或接收无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入设备108通信,并且允许处理器102从输入设备108接收输入。输出驱动器114与处理器102和输出设备110通信,并且允许处理器102向输出设备110发送输出。应注意,输入驱动器112和输出驱动器114是任选的部件,并且如果输入驱动器112和输出驱动器114不存在,则设备100将以相同方式操作。输出驱动器114包括联接到显示设备118的APD 116。APD被配置为从处理器102接收计算命令和图形渲染命令,处理那些计算和图形渲染命令,以及将像素输出提供给显示设备118用于显示。如下文所详述,APD 116包括被配置为根据SIMD范式来执行计算的一个或多个并行处理单元。因此,尽管这里将各种功能描述为由APD 116执行或与其结合执行,但在各种另选方案中,被描述为由APD 116执行的功能另外地或另选地由具有类似能力的其他计算设备执行,该其他计算设备不由主机处理器(例如,处理器102)驱动并且被配置为向显示设备118提供图形输出。例如,可以设想根据SIMD范式执行处理任务的任何处理系统均可被配置为执行本文所述的功能。另选地,设想不根据SIMD范式执行处理任务的计算系统执行本文所述的功能。
图2是设备100的框图,示出了涉及在APD 116上执行处理任务的附加细节。处理器102在系统存储器104中保持一个或多个控制逻辑模块以供处理器102执行。控制逻辑模块包括操作系统120、内核模式驱动器122和应用程序126。这些控制逻辑模块控制处理器102和APD 116的操作的各种特征。例如,操作系统120直接与硬件通信并且为在处理器102上执行的其他软件提供到硬件的接口。内核模式驱动器122通过例如向在处理器102上执行的软件(例如,应用程序126)提供应用编程接口(“API”)来控制APD 116的操作,以访问APD 116的各种功能。内核模式驱动器122还包括即时编译器,该即时编译器编译程序以供APD 116的处理部件(诸如下文所详述的SIMD单元138)执行。
APD 116执行用于所选功能的命令和程序,诸如图形操作和可适于并行处理的非图形操作。APD 116可用于执行图形流水线操作,诸如像素操作、几何计算和基于从处理器102接收的命令将图像呈现给显示设备118。APD116还基于从处理器102接收的命令来执行与图形操作不直接相关的计算处理操作,诸如与视频、物理模拟、计算流体动力学或其他任务相关的操作。
APD 116包括计算单元132,该计算单元包括根据SIMD范式以并行方式在处理器102的请求下执行操作的一个或多个SIMD单元138。SIMD范式是这样一种范式,其中多个处理元件共用单个程序控制流单元和程序计数器并且由此执行相同的程序,但能够执行具有不同数据的该程序。在一个示例中,每个SIMD单元138包括十六个通道,其中每个通道与SIMD单元138中的其他通道同时执行相同的指令,但可执行具有不同数据的该指令。如果不是所有通道都需要执行给定指令,则可通过预测来关闭通道。还可使用预测来执行具有发散控制流的程序。更具体地,对于具有条件分支或其中控制流基于由单个通道执行的计算的其他指令的程序,预测对应于当前未被执行的控制流路径的通道,并且不同控制流路径的串行执行可实现任意控制流。
计算单元132中的基本执行单元是工作项。每个工作项表示要在特定通道中并行执行的程序的单个实例化。可在单个SIMD处理单元138上作为波前同时执行工作项。一个或多个波前包括在一个工作组中,该工作组包括被指定执行相同程序的工作项的集合。可通过执行构成工作组的波前中的每一者来执行工作组。在另选方案中,波前在单个SIMD单元138上顺序地执行,或在不同SIMD单元138上部分地或完全地并行执行。波前可被视为可在单个SIMD单元138上同时执行的工作项的最大集合。因此,如果从处理器102接收的命令指示特定程序要被并行化到该程序不能在单个SIMD单元138上同时执行的程度,则该程序被划分成在两个或多个SIMD单元138上并行化或在同一SIMD单元138上串行化(或根据需要并行化和串行化)的波前。调度器136执行涉及调度不同计算单元132和SIMD单元138上的各种波前的操作。
由计算单元132提供的并行性适合图形相关操作,诸如像素值计算、顶点变换和其他图形操作。因此,在一些实例中,接受来自处理器102的图形处理命令的图形流水线134将计算任务提供给计算单元132以供并行执行。
计算单元132还用于执行不涉及图形或不作为图形流水线134的正常操作(例如,所执行的用以补充针对图形流水线134的操作执行的处理的自定义操作)的一部分而执行的计算任务。在处理器102上执行的应用程序126或其他软件将定义此类计算任务的程序发送到APD 116供执行。
如下文所详述,APD 116被配置为共享L1高速缓存、LDS和寄存器文件的组合存储。存储块(即,寄存器文件的SRAM、LDS和L1高速缓存)中的一个或多个存储块的部分根据要执行的应用程序为其他存储块中的一个或多个存储块所保留(即,实例化)。L1高速缓存、LDS和寄存器文件之间的分区是根据应用程序中L1高速缓存、LDS和寄存器文件的特定用途定制的。
图3是例示用于实现本公开的一个或多个特征的图2中所示的APD 116的CU 132的示例性部件的框图。为简化说明,将APD 116描述为GPU,这是APD 116的一个示例。
如图3所示,计算单元132的每个SIMD单元138包括寄存器文件302组304。如图3的示例所示,每个寄存器文件302具有128KB的存储容量,并且包括各自具有32KB的存储容量的四个组304。图3所示的SIMD单元的数量和每个寄存器文件的组数量只是示例。可使用具有任意数量SIMD单元的CU和具有任意数量组的寄存器文件来实现本公开的特征。另外,图3所示的寄存器文件和组的容量只是示例。可利用不同于图3所示的那些容量的容量实现本公开的特征。
CU 132还包括L1高速缓存306,该L1高速缓存通过互连件310与4个SIMD单元138中的每个SIMD单元通信并与GPU的下一层级存储器(例如,L2高速缓存、L3高速缓存、主存储器)通信。因此,任何SIMD单元138都可从L1高速缓存或存储器的任何其他部分请求数据。
LDS 308通过使用互连件312与4个SIMD单元138中的每个SIMD单元通信,并可由任一个SIMD单元138访问,并可共享数据。因此,任何SIMD单元138可向LDS 308推送数据,并且另一SIMD单元138可从LDS 308提取数据。相比之下,在常规架构中,每个SIMD单元138的寄存器文件302是每个SIMD单元138专用的,不与其他SIMD单元138共享。因此,如果SIMD单元138希望使数据可为另一SIMD单元138所用,该SIMD单元138将该数据推送到LDS 308、L1高速缓存306(或存储器的另一部分,这将导致延迟更长),以便可由该另一SIMD单元138访问。
本公开的特征将寄存器文件的SRAM的通常不与其他SIMD单元138共享的部分通过互连件310为L1高速缓存306所保留并通过互连件312为LDS 308所保留,并且因此可在SIMD单元138之间共享。寄存器文件的为L1高速缓存306和LDS 308所保留的部分的数量或大小基于要执行的应用程序。
通过在3个硬件块之间共享,所存储的数据针对应用程序得到更高效的重复使用。当确定应用程序使用存储块(即,L1高速缓存306、LDS 308和寄存器文件302)中的一个存储块的更大容量和带宽时,其他存储块中的一个或多个存储块的部分为该存储块所保留。例如,当确定应用程序使用更多寄存器执行时,L1高速缓存306和/或LDS 308的部分为寄存器文件302所保留。当确定应用程序使用更多高速缓存存储器执行时,寄存器文件302和/或LDS 308的部分(例如,一个或多个组304)被保留以用于额外的L1高速缓存存储。当确定应用程序使用更大LDS容量时,寄存器文件302和/或L1高速缓存306的部分(例如,一个或多个组304)被保留以用于额外的LDS存储。也就是说,L1高速缓存306、LDS 308和寄存器文件302之间的分区是根据要执行的特定应用程序定制的。
图4是例示用于确定如何根据特定应用程序划分用于共享存储的存储块的示例性方法400的流程图。图4所示的示例描述了作为波前的程序的部分。然而,可通过执行程序的其他类型的部分实现本公开的特征。
图4所示的示例包括如何根据要执行的应用程序的特定用例划分存储块的不同确定(即,决定)。图4中的作出决定的顺序只是示例。可通过以不同于图4所示顺序的顺序作出图4所示的决定来实现本公开的特征。还应当了解到,图4示的决定并非详尽的,还可以使用其他内存块分区组合来更高效地执行应用程序。
如框402所示,应用程序开始执行。例如,该应用程序是包括图形操作和可适于并行处理的非图形操作的应用程序。当程序执行时,处理设备(例如,CPU)确定何时对存储块(即,寄存器文件、L1高速缓存和LDS)进行分区。
如决定框404所示,方法400包括确定该应用程序是否使用非零大小的LDS。当在框404确定使用非零大小的LDS执行程序时(是的决定),在框406保留寄存器文件的一部分以包含LDS存储(即,在LDS中存储数据)。然后,寄存器文件的一部分将根据应用程序在框408中指定的L1高速缓存大小为L1高速缓存所保留。
当在框404确定不使用LDS存储来执行应用程序时(否的决定),在块408,根据应用程序指定的L1高速缓存大小,为L1高速缓存保留寄存器文件的一部分,而不保留寄存器文件的一部分以包含LDS存储。例如,与使用非零大小的LDS来执行程序相比,当不使用LDS存储来执行应用程序时,可为L1高速缓存保留寄存器文件的较大部分。
在框408将寄存器文件的一部分为L1高速缓存所保留后,在框410将寄存器文件的剩余部分(即,未为L1高速缓存和/或LDS存储所保留的寄存器)进行分配,以执行波形。
例如,为L1高速缓存和/或LDS存储保留的寄存器文件部分的大小(寄存器数量)是根据不同因素确定的,例如L1高速缓存和/或LDS的容量和带宽。
图5是例示根据本公开的特征的执行程序的示例性方法500的流程图。图5所示的方法500只是当基于要执行的特定应用程序决定将CU的寄存器文件的一部分实例化为L1高速缓存的一部分执行根据本公开的特征的程序的示例。可以了解到,当基于要执行的特定应用程序关于何时对存储块进行分区以将CU的寄存器文件的一部分实例化为L1高速缓存的一部分作出不同的决定时,可类似于图5所示的方法而使执行程序的其他方法得到执行。
图5所示的示例描述了作为波前的程序的部分。然而,可通过执行程序的其他类型的部分实现本公开的特征。
如框502处所示,方法500包括开始执行第一波前。也就是说,第一波前由图3所示的SIMD单元138中的一个SIMD单元执行。
如框504所示,方法500包括在寄存器文件的第一部分载入数据。也就是说,在图3所示的寄存器文件302中的一个寄存器文件的寄存器中载入数据。例如,ALU(未示出)使用数据,以使用寄存器文件的第一部分的寄存器中载入的数据进行计算,以执行波前。如上文所述,在这个示例中,CU的寄存器文件的一部分(即,第二部分)根据要执行的特定应用被实例化为L1高速缓存的一部分。例如,该应用程序被确定为不使用较大寄存器文件来执行的应用程序。因此,通过寄存器文件的第二部分创建额外的L1高速缓存容量来执行应用程序。
如框506所示,方法500包括将来自寄存器文件的第一部分的数据存储到被实例化(保留)为L1高速缓存的一部分的寄存器文件的第二部分。例如,数据存储在寄存器文件的第二部分,作为溢出操作的一部分,以腾出寄存器文件第一部分的空间来执行第二波前。
如框508所示,方法500包括:将来自寄存器文件的第二部分的数据重新载入到寄存器文件的第一部分,以执行第二波前。数据重新载入包括寄存器到寄存器的传输,其带宽大于L1高速缓存到寄存器的传输,并且远大于L2高速缓存(或主存储器)到寄存器的传输。由此,延迟被减少。
附加地或另选地,可将寄存器文件的第二部分中的数据载入到另一SIMD单元的寄存器文件的一部分,如框510的虚线所示。也就是说,寄存器文件的第二部分被实例化为L1高速缓存的一部分,并由CU的其他SIMD单元共享。因此,数据可在同一CU的SIMD单元之间传输,其带宽大于寄存器和L2高速缓存之间的传输。因此,可在不增加存储块占用的面积的情况下更高效地执行应用程序。
应当理解,基于本文的公开内容,可能有许多变化。尽管上述特征和元素在特定组合中进行了描述,但每个特征或元素可以在没有其他特征和元素的情况下单独使用,或者在有或没有其他特征或元素的各种组合中使用。
附图中例示和/或本文所述的各种功能单元(包括但不限于处理器102、输入驱动器112、输入设备108、输出驱动器114、输出设备110、加速处理设备116、寄存器文件302的分配的寄存器304和寄存器高速缓存306以及ALU 308)可被实现为通用计算机、处理器或处理器核心,或者实现为存储在非暂态计算机可读介质或另一介质中的能够由通用计算机、处理器或处理器核心执行的程序、软件或固件。所提供的方法可以在通用计算机、处理器或处理器核心中实现。举例来说,合适的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、与DSP核心相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路,任何其他类型的集成电路(IC)和/或状态机。可以通过使用处理的硬件描述语言(HDL)指令和包括网表的其他中间数据(能够存储在计算机可读介质上的此类指令)的结果来配置制造过程而制造此类处理器。此类处理的结果可以是掩码,然后在半导体制造过程中使用这些掩码来制造实现本公开的特征的处理器。
本文提供的方法或流程图可以在并入非暂态计算机可读存储介质中的计算机程序、软件或固件中实现,以供通用计算机或处理器执行。非暂态计算机可读存储介质的示例包括只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器设备、磁性介质(诸如内部硬盘和可移动磁盘)、磁光介质和光学介质(诸如CD-ROM磁盘)以及数字多功能磁盘(DVD)。

Claims (20)

1.一种加速处理设备,所述加速处理设备包括:
多个计算单元,每个计算单元包括:
多个单指令多数据SIMD单元,每个单指令多数据SIMD单元包括:寄存器文件;和
本地数据存储装置LDS,所述本地数据存储装置LDS与所述SIMD单元中的每个SIMD单元通信;和
高速缓存存储器,所述高速缓存存储器包括与计算单元的所述多个SIMD单元中的每个SIMD单元通信的第一部分和由所述多个计算单元中的两个或更多个计算单元共享的第二部分,
其中所述计算单元被配置为执行程序,在所述程序的执行期间,SIMD单元的所述寄存器文件、所述第一部分高速缓存存储器和所述LDS中的至少一者的存储部分被保留为所述寄存器文件、所述第一部分高速缓存存储器和所述LDS中的另一者的一部分。
2.根据权利要求1所述的处理设备,其中通过在编译所述程序时实例化所述存储部分将所述存储部分保留为所述寄存器文件、所述第一部分高速缓存存储器和所述LDS中的所述另一者的一部分。
3.根据权利要求1所述的处理设备,其中所述加速处理设备是GPU、计算处理器和人工智能处理器中的一者。
4.根据权利要求1所述的处理设备,其中基于被执行的所述程序确定被保留为所述寄存器文件、所述第一部分高速缓存存储器和所述LDS中的另一者的一部分的所述存储部分。
5.根据权利要求1所述的处理设备,其中所述寄存器文件的所述存储部分被保留为所述第一部分高速缓存存储器的一部分,并且
所述计算单元被配置为:
使用所述寄存器文件的另一存储部分中的数据执行所述程序的第一部分;
将来自所述寄存器文件的所述另一存储部分的数据存储到被保留为所述第一部分高速缓存存储器的一部分的所述寄存器文件的所述存储部分;以及
将来自被保留为所述第一部分高速缓存存储器的一部分的所述寄存器文件的所述存储部分的所述数据重新载入到所述寄存器文件的所述另一存储部分,以执行所述程序的第二部分。
6.根据权利要求5所述的处理设备,其中所述程序的所述第一部分和所述程序的所述第二部分是波前。
7.根据权利要求5所述的处理设备,其中所述寄存器文件的所述存储部分由所述计算单元的其他SIMD单元共享。
8.根据权利要求5所述的处理设备,其中所述存储部分是所述寄存器文件的静态随机存取存储器SRAM的一部分。
9.根据权利要求1所述的处理设备,其中所述寄存器文件包括寄存器组,并且
被保留为所述第一部分高速缓存存储器的一部分的所述寄存器文件的所述存储部分包括至少一个寄存器组。
10.一种执行程序的方法,所述方法包括:
在加速处理设备的计算单元中使用寄存器文件的第一部分中的数据执行所述程序的第一部分;
将来自所述寄存器文件的所述第一部分的数据存储到被实例化为第一层级高速缓存存储器的一部分的所述寄存器文件的第二部分;以及
将存储在所述寄存器文件的所述第二部分中的所述数据重新载入到所述寄存器文件的所述第一部分,以执行所述程序的第二部分。
11.根据权利要求10所述的方法,所述方法还包括在所述计算单元的第一单指令多数据SIMD单元中执行所述程序的所述第一部分和所述程序的所述第二部分。
12.根据权利要求10所述的方法,其中所述程序的所述第一部分和所述程序的所述第二部分是波前。
13.根据权利要求10所述的方法,其中所述寄存器文件的所述第二部分在编译时被实例化为所述第一层级高速缓存存储器的一部分。
14.根据权利要求10所述的方法,其中所述寄存器文件是计算单元的单指令多数据SIMD单元的一部分,并且
所述寄存器文件的所述第二部分由所述计算单元的其他SIMD单元共享。
15.根据权利要求14所述的方法,所述方法还包括将来自所述寄存器文件的所述第二部分的数据载入到所述其他SIMD单元中的一个SIMD单元的寄存器文件。
16.一种处理设备,所述处理设备包括:
存储器;和
加速处理设备,所述加速处理设备包括:
多个计算单元,每个计算单元包括:
多个单指令多数据SIMD单元,每个单指令多数据SIMD单元包括:寄存器文件;和
本地数据存储装置LDS,所述本地数据存储装置LDS与所述SIMD单元中的每个SIMD单元通信;和
高速缓存存储器,所述高速缓存存储器包括与所述SIMD单元中的每个SIMD单元通信的第一层级和在所述计算单元之间共享的第二层级,
其中所述计算单元被配置为执行程序,其中SIMD单元的所述寄存器文件、所述第一层级高速缓存存储器和所述LDS中的至少一者的存储部分被保留为所述寄存器文件、所述第一层级高速缓存存储器和所述LDS中的另一者的一部分。
17.根据权利要求16所述的处理设备,其中所述寄存器文件的所述存储部分被保留为所述第一层级高速缓存存储器的一部分,并且
所述计算单元被配置为:
使用所述寄存器文件的另一存储部分中的数据执行所述程序的第一部分;
将来自所述寄存器文件的所述另一存储部分的数据存储到被保留为所述第一层级高速缓存存储器的一部分的所述寄存器文件的所述存储部分;以及
将来自被保留为所述第一层级高速缓存存储器的一部分的所述寄存器文件的所述存储部分的所述数据重新载入到所述寄存器文件的所述另一存储部分,以执行所述程序的第二部分。
18.根据权利要求17所述的处理设备,其中所述寄存器文件的所述存储部分和所述寄存器文件的所述另一存储部分之间的第一带宽大于所述寄存器文件和所述第二层级高速缓存存储器之间的第二带宽。
19.根据权利要求16所述的处理设备,所述处理设备还包括将来自所述寄存器文件的所述第二部分的数据载入到其他SIMD单元中的一个SIMD单元的寄存器文件。
20.根据权利要求19所述的处理设备,所述处理设备还包括中央处理单元CPU,所述中央处理单元CPU基于待执行的所述程序确定被保留为所述寄存器文件、所述第一层级高速缓存存储器和所述LDS中的所述另一者的一部分的所述存储部分的量。
CN202280057014.XA 2021-09-03 2022-07-13 用于在高速缓存存储器、本地数据存储装置以及寄存器文件之间共享存储的处理设备和方法 Pending CN117859114A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/467,104 US20230069890A1 (en) 2021-09-03 2021-09-03 Processing device and method of sharing storage between cache memory, local data storage and register files
US17/467,104 2021-09-03
PCT/US2022/037026 WO2023033937A1 (en) 2021-09-03 2022-07-13 Processing device and method of sharing storage between cache memory, local data storage and register files

Publications (1)

Publication Number Publication Date
CN117859114A true CN117859114A (zh) 2024-04-09

Family

ID=85386354

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280057014.XA Pending CN117859114A (zh) 2021-09-03 2022-07-13 用于在高速缓存存储器、本地数据存储装置以及寄存器文件之间共享存储的处理设备和方法

Country Status (4)

Country Link
US (1) US20230069890A1 (zh)
KR (1) KR20240052056A (zh)
CN (1) CN117859114A (zh)
WO (1) WO2023033937A1 (zh)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0676691A3 (en) * 1994-04-06 1996-12-11 Hewlett Packard Co Device for saving and restoring registers in a digital computer.
US7836276B2 (en) * 2005-12-02 2010-11-16 Nvidia Corporation System and method for processing thread groups in a SIMD architecture
US9619428B2 (en) * 2008-05-30 2017-04-11 Advanced Micro Devices, Inc. SIMD processing unit with local data share and access to a global data share of a GPU
JP6130296B2 (ja) * 2010-07-13 2017-05-17 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated グラフィクスプロセッサにおけるsimdユニットの動的な有効化及び無効化
CN103547993B (zh) * 2011-03-25 2018-06-26 英特尔公司 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块
US9239793B2 (en) * 2011-12-13 2016-01-19 Ati Technologies Ulc Mechanism for using a GPU controller for preloading caches
US9208900B2 (en) * 2013-01-23 2015-12-08 Nvidia Corporation System and method for performing address-based SRAM access assists
US9477480B2 (en) * 2014-01-30 2016-10-25 Nvidia Corporation System and processor for implementing interruptible batches of instructions
US20170177350A1 (en) * 2015-12-18 2017-06-22 Intel Corporation Instructions and Logic for Set-Multiple-Vector-Elements Operations
US11657119B2 (en) * 2018-12-10 2023-05-23 Advanced Micro Devices, Inc. Hardware accelerated convolution

Also Published As

Publication number Publication date
US20230069890A1 (en) 2023-03-09
KR20240052056A (ko) 2024-04-22
WO2023033937A1 (en) 2023-03-09

Similar Documents

Publication Publication Date Title
CN107851004B (zh) 用于在图形处理单元gpu上执行指令的方法和装置
US20120331278A1 (en) Branch removal by data shuffling
CN110554913A (zh) 神经网络系统及其操作方法以及应用处理器
US8615770B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
WO2019118363A1 (en) On-chip computational network
US9304775B1 (en) Dispatching of instructions for execution by heterogeneous processing engines
US10073783B2 (en) Dual mode local data store
US11494321B1 (en) State buffer memloc reshaping
US20210065051A1 (en) Method and apparatus for predicting kernel tuning parameters
US20120151145A1 (en) Data Driven Micro-Scheduling of the Individual Processing Elements of a Wide Vector SIMD Processing Unit
US20180246655A1 (en) Fused shader programs
US8959497B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
US20190318229A1 (en) Method and system for hardware mapping inference pipelines
US20190354833A1 (en) Method and system for reducing communication frequency in neural network systems
CN117859114A (zh) 用于在高速缓存存储器、本地数据存储装置以及寄存器文件之间共享存储的处理设备和方法
US11372677B1 (en) Efficient scheduling of load instructions
US10877926B2 (en) Method and system for partial wavefront merger
US11113061B2 (en) Register saving for function calling
JP2023542935A (ja) 早期解放を伴うレジスタ圧縮
US20220413858A1 (en) Processing device and method of using a register cache
US20220206851A1 (en) Regenerative work-groups
US20230004385A1 (en) Accelerated processing device and method of sharing data for machine learning
US20230102767A1 (en) System and methods for efficient execution of a collaborative task in a shader system
US11996166B2 (en) Adaptable allocation of SRAM based on power
US20230205680A1 (en) Emulating performance of prior generation platforms

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication