CN111258650A - 用于加速延迟敏感算法的恒定标量寄存器架构 - Google Patents
用于加速延迟敏感算法的恒定标量寄存器架构 Download PDFInfo
- Publication number
- CN111258650A CN111258650A CN202010098892.9A CN202010098892A CN111258650A CN 111258650 A CN111258650 A CN 111258650A CN 202010098892 A CN202010098892 A CN 202010098892A CN 111258650 A CN111258650 A CN 111258650A
- Authority
- CN
- China
- Prior art keywords
- scalar
- register file
- scalar register
- execution
- kernel
- 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
- 238000004422 calculation algorithm Methods 0.000 title description 5
- 238000012545 processing Methods 0.000 claims abstract description 89
- 230000015654 memory Effects 0.000 claims description 57
- 238000000034 method Methods 0.000 claims description 23
- 230000000977 initiatory effect Effects 0.000 claims 1
- 238000003860 storage Methods 0.000 abstract description 6
- 238000013500 data storage Methods 0.000 abstract description 2
- 238000004891 communication Methods 0.000 description 12
- 239000000872 buffer Substances 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000005192 partition Methods 0.000 description 6
- 238000009826 distribution Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate 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/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- 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/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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Mathematical Physics (AREA)
Abstract
本发明的实施例通过修改或改变未使用的标量寄存器以变成恒定标量寄存器来提供技术解决方案。通过使用未使用的标量寄存器,本发明的各方面可以降低标量处理的等待时间,同时减少标量处理中的重复。本发明的实施例还降低了对单独的数据存储单元(诸如缓存或其他存储单元)的需求。
Description
技术领域
本发明的实施例大体上涉及标量处理。
背景技术
标量处理一次仅处理一个数据项,典型数据项是整数或浮点数。通常,标量处理被分类为SISD处理(单指令,单数据)。此方法的另一变化是单指令、多线程(SIMT)处理。传统的SIMT多线程处理器通过将线程组织成组并在单独的处理管线上执行每个线程来提供多个线程的并行执行。在单个周期中调度由一个组中的线程执行的指令。生成处理管线控制信号,使得当线程跨越处理管线的各级时,组中的所有线程执行一组类似的操作。例如,一组中的所有线程从寄存器文件读取源操作数,执行处理单元中的指定算术运算,并将结果写回到寄存器文件。当在处理器中支持多个语境时,SIMT需要额外存储器用于复制同一内核中使用的恒定值。因而,当从主存储器或高速缓冲存储器加载不同恒定值时,引入等待时间开销。
然而,在需要高性能的情况下,期望减少等待时间和重复。
因此,本发明的实施例试图解决或应对上文所指出的一个或多个技术问题。
发明内容
本发明的实施例可以通过修改或改变未使用的标量寄存器以变成恒定标量寄存器来提供技术解决方案。通过使用未使用的标量寄存器,本发明的各方面可以降低标量处理的等待时间,同时减少标量处理中的重复。本发明的实施例还降低了对单独的数据存储单元(诸如缓存或其他存储单元)的需求。
附图说明
本领域的普通技术人员可以了解,为了简单和清晰起见,示出了附图中的元件,因此为了避免混淆本发明的方面并未示出所有的连接和选项。例如,在商业上可行的实施例中有用或必需的常见但易于理解的元件通常不进行描绘,以便有助于较少阻挡对本公开的这些各种实施例的观察。将进一步了解,可以以特定的发生次序描述或描绘某些动作和/或步骤,而所属领域的技术人员将理解,实际上不需要关于序列的此类特异性。还应当理解,本文所用的术语和表达将关于其各自的相应探究和研究领域进行限定,除非本文中另外阐述了特定含义。
图1是图示标量处理的现有技术方法的图。
图2是图示根据本发明的一个实施例的重用未使用的标量寄存器的图。
图3是图示根据本发明的一个实施例的重用未使用的标量寄存器的方法的流程图。
图4是图示被配置成实施本发明的一个或多个方面的计算机系统的框图。
图5是根据本发明的一个实施例的用于图4的计算机系统的并行处理子系统的框图。
具体实施方式
现在可以参考附图更全面地描述本发明,附图形成本发明的一部分,并且以图示的方式示出了可以实施本发明的具体示例性实施例。可以在理解本公开是对一个或多个发明的原理的举例说明的情况下呈现这些图示和示例性实施例,并且可能不旨在将任何一个发明限制于所示的实施例。本发明可以以许多不同形式实现,并且不应解释为限于本文所阐述的实施例;相反,提供这些实施例,使得本公开将是全面的完整的,并将本发明的范围完全传达给本领域的技术人员。此外,本发明可以体现为方法、系统、计算机可读介质、设备或装置。因此,本发明可采取完全硬件实施例、完全软件实施例或组合软件和硬件方面的实施例的形式。因此,以下详细描述不应以限制性意义理解。
一般来说,计算核心(参见下面的GPC 514)利用可编程顶点着色器、几何着色器和像素着色器。这些操作不是将这些组件的功能实现为具有不同的设计和指令集的单独的固定功能着色器单元,而是由具有统一指令集的执行单元池执行。这些执行单元中的每一个可以设计相同,并且可配置用于程序化操作。在一个实施例中,每个执行单元能够同时进行多线程操作。由于各种着色任务可以由顶点着色器、几何着色器和像素着色器生成,因此它们可以被传递到执行单元以被执行。
在生成单个任务时,执行控制单元(可以是下文GPC 514的一部分)处理将这些任务分配给各种执行单元中的可用线程的操作。当完成任务时,执行控制单元进一步管理相关线程的释放。就这一点而言,执行控制单元负责将顶点着色器、几何着色器和像素着色器任务分配给各种执行单元的线程,并且还执行任务和线程的相关“记帐(bookkeeping)”。具体来说,执行控制单元为所有执行单元维护线程和存储器的资源表(未具体说明)。执行控制单元具体管理哪些线程已经被分配任务并且被占用,在线程终止后已经释放了哪些线程,占用了多少公用寄存器文件存储寄存器,以及每个执行单元有多少自由空间。
线程控制器也可以设置在每个执行单元内部,并且可以负责将每个线程管理或标记为活动的(例如,执行的)或可用的。
根据一个实施例,标量寄存器文件可以连接到线程控制器和/或与线程任务接口连接。线程控制器为整个执行单元(例如,GPC 514)提供控制功能,其中功能包括每个线程的管理和决策功能,例如确定将如何执行线程。
现在参考图1,该图图示了在编程内核的不同语境或线程上的由线程控制器管理的共用的标量寄存器文件,所述不同语境或编程内核的线程并具有与内核相同的寿命。例如,第一线程/语境(例如,波0)102、第二线程/语境(例如,波1)104和第三线程/语境(例如,波2)106。另外,有未使用的标量寄存器/寄存器文件108,其尚未被线程或语境102、104或106使用。
与现有方法不同,类似的标量处理系统将创建或留出恒定缓冲存储单元以存储恒定标量值/数据。同时,标量寄存器文件的未使用单元保持未使用。
现在参考图2,本发明的实施例可以首先识别标量寄存器文件200中的未使用的标量单元。在确认没有读/写请求冲突之后,线程控制器分配标量寄存器文件200中的这些未使用的标量单元,以存储恒定标量值。此方法大大地消除了使用恒定缓冲器或任何专用缓冲器资源的需要。
现在参考图3,该流程图图示了根据本发明的一个实施例重用标量寄存器文件中未使用的标量寄存器的方法。在302处,识别与GPU相关联的标量寄存器文件。例如,GPU、GPC内的GPU或线程控制器可以首先识别或辨认标量寄存器文件,例如200。在一个实施例中,标量寄存器文件包括标量寄存器分配总数,并且这些信息可以用GPU、GPC或线程控制器识别。
在304处,GPU、GPC或线程控制器可识别标量处理所需的单元以用于内核执行。例如,如图所示,在图2中,GPU、GPC或线程控制器可以将标量寄存器文件中的所需标量寄存器管理到某个线程(参见波0、波1等的R0、R1等)。在306处,GPU、GPC或线程控制器可以分配标量寄存器文件中的标量寄存器以用于内核执行。例如,一旦确认了标量寄存器文件中需要多少分配,GPU、GPC或线程控制器可以继续为内核执行所需的线程分配标量寄存器。在308处,可以从标量寄存器分配总数识别标量寄存器文件中的剩余未使用单元。在此示例中,如在图1中,标量寄存器108标记为未使用。在一个示例中,标量寄存器文件可以包括32个寄存器,并且在为内核执行中的线程分配所需的寄存器之后,32个寄存器中的一些可能未用于该内核执行。
在310处,在识别标量寄存器文件中的未使用寄存器时,GPU、GPC或线程控制器可以分配标量寄存器文件中的剩余未使用单元的标量寄存器以存储用于内核执行的恒定标量值。在312处,GPU、GPC或线程控制器接着可以通过在内核执行之前初始化标量寄存器文件来准备内核执行;在314处,一旦标量寄存器文件被初始化,就启动内核执行。
图4是图示被配置成实施本发明的一个或多个方面的计算机系统400的框图。计算机系统400包括中央处理单元(CPU)402和经由互连路径通信的系统存储器404,所述互连路径可包括存储器连接406。存储器连接406可以是例如北桥芯片,其经由总线或其它通信路径408(例如,HyperTransport(超传输)链路)连接到I/O(输入/输出)连接410。I/O连接410可以是例如南桥芯片,其从一个或多个用户输入装置414(例如,键盘、鼠标)接收用户输入,并通过路径408和存储器连接406将输入转发到CPU 402。并行处理子系统420经由总线或其它通信路径416(例如,PCI Express、加速图形端口或HyperTransport链路)耦合到存储器连接406;在一个实施例中,并行处理子系统420是将像素传递到显示装置412(例如,CRT、基于LCD、基于LED或其他技术)的图形子系统。显示装置412也可连接到输入装置414,或者显示装置412也可以是输入装置(例如,触摸屏)。系统磁盘418也连接到I/O连接410。开关422提供I/O连接410与诸如网络适配器424和各种输出装置426的其它部件之间的连接。其他组件(未明确示出)也可连接到I/O连接410,所述其他组件包括USB或其他端口连接、CD驱动器、DVD驱动器、胶片记录装置等。可以使用任何合适的协议(例如,PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、HyperTransport或任何其它总线或点对点通信协议)来实现互连图4中的各种部件的通信路径,并且不同装置之间的连接可以使用本领域已知的不同协议。
在一个实施例中,并行处理子系统420包括针对图形和视频处理优化的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)。在另一个实施例中,并行处理子系统420包括针对通用处理优化的电路,同时保留底层计算架构,这将在本文中更详细地描述。在又一个实施例中,并行处理子系统420可以与一个或多个其它系统元件(诸如存储器连接406、CPU 402和I/O连接410)集成以形成片上系统(SoC)。
应了解,本文所示的系统是说明性的,并且变化和修改是可能的。可以根据需要修改连接拓扑(包括桥的数量和布置)、CPU 402的数量以及并行处理子系统420的数量。例如,在一些实施例中,系统存储器404直接而非通过连接连接到CPU 402,并且其它装置经由存储器连接406和CPU 402与系统存储器404通信。在其他替代性拓扑结构中,并行处理子系统420连接到I/O连接410或直接连接到CPU 402,而不是连接至存储器连接406。在其他实施例中,I/O连接410和存储器连接406可以集成到单个芯片中。大型实施例可以包括两个或更多个CPU 402以及两个或更多个并行处理子系统420。本文所示的一些组件是任选的;例如,可以支持任何数量的外围设备。在一些实施例中,可以去掉开关422,并且网络适配器424和其它外围设备可以直接连接到I/O连接410。
图5图示了根据本发明的一个实施例的并行处理子系统420。如图所示,并行处理子系统420包括一个或多个并行处理单元(PPU)502,它们中的每一个都耦合到本地并行处理(PP)存储器506。一般来说,并行处理子系统包括U个PPU,其中U≥1。(本文中,类似对象的多个实例用识别对象的参数数字和根据需要识别实例的附加数字指示。)PPU 502和并行处理存储器506可以使用一个或多个集成电路器件(例如可编程处理器、专用集成电路(ASIC)或存储器装置)来实现,或者以任何其他技术上可行的方式实现。
在一些实施例中,并行处理子系统420中的一些或全部PPU 502是具有渲染管线的图形处理器,其可以被配置成经由存储器连接406和通信路径416与本地并行处理存储器506(其可以用作图形存储器,包括例如,常规帧缓存器)交互以存储并更新像素数据,将像素数据传递到显示装置412等,执行与由CPU 402和/或系统存储器404提供的图形数据生成像素数据有关的各种任务。在一些实施例中,并行处理子系统420可以包括作为图形处理器操作的一个或多个PPU 502以及用于通用计算的一个或多个其它PPU 502。PPU可以是相同的或不同的,并且每个PPU可以具有自己的专用并行处理存储器装置,或不具有专用并行处理存储器装置。一个或多个PPU 502可以将数据输出到显示装置412,或者每个PPU 502可以将数据输出到一个或多个显示装置412。
在操作中,CPU 402是计算机系统400的主处理器,其控制和协调其它系统组件的操作。具体来说,CPU 402发布控制PPU 502的操作的命令。在一些实施例中,CPU 402将每个PPU 502的命令流写入可以位于系统存储器404、并行处理存储器506或者CPU 402和PPU502两者可访问的另一存储位置中的推送缓存器(图4或图5中未明确示出)。PPU 502从推送缓存器读取命令流,然后相对于CPU 402的操作异步地执行命令。
现在再参考图5,每个PPU 502包括I/O(输入/输出)单元508,所述I/O(输入/输出)单元经由通信路径416与计算机系统400的其余部分通信,所述通信路径连接到存储器连接406(或者在一个替代性的实施例中,直接连接到CPU 402)。PPU 502与计算机系统400的其余部分的连接也可以改变。在一些实施例中,并行处理子系统420被实现为插件卡,其可以插入到计算机系统400的扩展槽中。在其它实施例中,PPU 502可以用总线连接(例如存储器连接406或I/O连接410)集成在单个芯片上。在其它实施例中,PPU 502的一些或所有元件可以与CPU 402一起集成在单个芯片上。
在一个实施例中,通信路径416是PCI-EXPRESS链路,其中专用通道分配给每个PPU502,如本领域已知的。也可以使用其他通信路径。I/O单元508生成用于在通信路径416上传输的包(或其它信号)并且还从通信路径416接收所有传入包(或其它信号),从而将传入包引导到PPU 502的适当部件。例如,与处理任务有关的命令可以被引导到主机接口510,而与存储器操作有关的命令(例如,从并行处理存储器506读取或写入到该并行处理存储器)可以被引导到存储器交叉单元(memory crossbar unit)518。主机接口510读取每个推送缓存器,并将由推送缓存器指定的工作输出到前端512。
每个PPU 502有利地实现高度并行的处理架构。如详细所示,PPU 502包括处理集群阵列516,其包括C个一般处理集群(GPC)514,其中,C≥1。每个GPC 514能够同时执行大量(例如,数百或数千个)线程,其中每个线程是程序的实例。在各种应用中,可以分配不同的GPC 514以用于处理不同类型的程序或用于执行不同类型的计算。例如,在图形应用中,可分配第一组GPC 514以执行补丁镶嵌操作并产生补丁的初始拓扑,并且可分配第二组GPC514以执行镶嵌着色,评估初始拓扑的补丁参数,并确定顶点位置和其它的每个顶点的属性。GPC 514的分配可以根据每种类型的程序或计算产生的工作量而变化。
GPC 514接收通过工作分配单元504执行的处理任务,所述工作分配单元从前端单元512接收限定处理任务的命令。处理任务包括待处理数据的索引,例如表面(补丁)数据、原始数据、顶点数据和/或像素数据,以及定义如何处理数据的状态参数和命令(例如,将要执行的程序)。工作分配单元504可以被配置成提取对应于任务的索引,或者工作分配单元504可以从前端512接收索引。前端512确保GPC 514在启动由推送缓存器指定的处理之前被配置为有效状态。
当PPU 502用于图形处理时,例如,每个补丁的处理工作量被划分成大致相等大小的任务,以使得能够将镶嵌处理分布到多个GPC 514。工作分配单元504可以被配置成以能够向多个GPC 514提供任务以供处理的频率来产生任务。相比之下,在常规系统中,处理通常由单个处理引擎执行,而其它处理引擎保持空闲,等待单个处理引擎完成其任务,然后再开始他们的处理任务。在本发明的一些实施例中,GPC 514的多个部分被配置成执行不同类型的处理。例如,第一部分可以被配置成执行顶点着色和拓扑生成,第二部分可以被配置成执行镶嵌和几何着色,并且第三部分可以被配置成在像素空间中执行像素着色以产生经渲染的图像。由GPC 514产生的中间数据可存储在缓存器中以允许在GPC 514之间传输中间数据以进行进一步处理。
存储器接口520包括D个分区单元522,所述分区单元各自直接耦合到并行处理存储器506的一部分,其中D≥1。如图所示,分区单元522的数量大体上等于DRAM 524的数量。在其它实施例中,分区单元522的数量可以不等于存储器装置的数量。本领域技术人员将了解,DRAM 524可以用其他合适的存储装置代替,并且通常可以是常规设计。因此,省略了详细描述。渲染目标,例如522-1帧缓存器或纹理图,可存储在DRAM 524上,从而允许分区单元522并行地编写每个渲染目标的部分以有效地使用并行处理存储器506的可用带宽。
GPC 514中的任一个可以处理将被写入并行处理存储器506内的任何DRAM 524的数据。交叉单元518被配置成将每个GPC 514的输出路由到任何分区单元522的输入或另一GPC 514以进行进一步处理。GPC 514通过交叉单元518与存储器接口520通信,从而读取或写入各种外部存储装置。在一个实施例中,交叉单元518具有与存储器接口520的连接以与I/O单元508通信以及与本地并行处理存储器506的连接,从而使得不同GPC 514内的处理核心能够与系统存储器404或对PPU 502非本地的其它存储器进行通信。在图5所示的实施例中,交叉单元518直接与I/O单元508连接。交叉单元518可以使用虚拟通道来在GPC 514和分区单元522之间分离流量流。
再次,GPC 514可以被编程以执行与各种各样应用有关的处理任务,包括但不限于:线性和非线性数据变换、视频和/或音频数据的滤波、建模操作(例如,应用物理学定律确定对象的位置、速度和其它属性)、图像渲染操作(例如,镶嵌着色器、顶点着色器、几何着色器和/或像素着色器程序)等。PPU 502可以将数据从系统存储器404和/或本地并行处理存储器506传输到内部(片上)存储器中,处理数据,并将结果数据写回到系统存储器404和/或本地并行处理存储器506,其中这些数据可以由包括CPU 402或另一个并行处理子系统420的其他系统组件访问。
PPU 502可以设置有任何数量的本地并行处理存储器506(不包括本地存储器),并且可以以任何组合使用本地存储器和系统存储器。例如,PPU 502可以是统一存储器架构(UMA)实施例中的图形处理器。在此类实施例中,将提供很少专用图形(并行处理)存储器或根本不提供,并且PPU 502将唯一或几乎唯一地使用系统存储器。在UMA实施例中,PPU 502可以集成到桥芯片或处理器芯片中,或者作为分离芯片提供,其具有通过桥芯片或其它通信手段将PPU 502连接到系统存储器的高速链路(例如,PCI-EXPRESS)。
如上所述,任何数量的PPU 502都可以包含在并行处理子系统420中。例如,多个PPU 502可以设置在单个插件卡上,或者多个插件卡可以连接到通信路径416,或者一个或多个PPU 502可以集成到桥芯片中。多PPU系统中的PPU 502可以彼此相同或不同。例如,不同的PPU 502可以具有不同数量的处理核心、不同数量的本地并行处理存储器等。在存在多个PPU 502的情况下,可并行操作那些PPU以比单个PPU 502可能获得的更高的吞吐量处理数据。包括一个或多个PPU 502的系统可以各种配置和形状因数,包括台式电脑、膝上型计算机或手持式个人计算机、服务器、工作站、游戏控制台、嵌入式系统等实现。
示例性实施例可以包括超出所示装置和网络之外的附加装置和网络。此外,描述为由一个装置执行的功能可以分布到两个或更多个装置上并由两个或更多个装置执行。多个装置也可以组合成单个装置,其可以执行组合后装置的功能。
本文中描述的各种参与者和元件可以操作一个或多个计算机设备以促进文中描述的功能。上文描述的附图中的任何元件,包括任何服务器、用户装置或数据库都可以使用任何合适数量的子系统来促进文中描述的功能。
可以使用任何合适的计算机语言(诸如例如Java、C++或Perl)使用例如常规的或面向对象的技术将本申请中描述的任何软件组件或功能实施为可以由至少一个处理器执行的软件代码或计算机可读指令。
软件代码可以作为一系列指令或命令存储在非暂时性计算机可读介质上,诸如随机存取存储器(RAM)、只读存储器(ROM)、磁介质(诸如硬盘或软盘)或光介质(诸如CD-ROM)。任何这样的计算机可读介质可以驻留在单个计算设备上或驻存在单个计算设备内,并且可以存在于系统或网络内的不同计算设备上或内。
明显地,前述实施例仅仅是用于清楚地描述本申请而示出的示例,而不是限制其实施方式。对于所属领域的技术人员,可基于前述描述来作出其它不同形式的各种改变和修改。不必要也不可能在本文中详尽地列出所有实施方式。然而,从前述描述导出的任何明显变化或修改旨在涵盖在本申请的保护范围内。
示例性实施例还可以为技术挑战提供至少一种技术方案。参考附图中描述和/或示出的并且在以下描述中详细描述的非限制性实施例和示例来更全面地解释本公开以及其各种特征和有利细节。应注意,附图中示出的特征未必按比例绘制,且一个实施例的特征可与技术人员将认识到的其它实施例一起使用,即使本文未明确陈述。可以省略对公知组件和处理技术的描述,以免不必要地模糊本公开的实施例。本文使用的示例仅旨在促进理解可实践本公开的方式并且进一步使本领域技术人员能够实践本公开的实施例。因此,本文的示例和实施例不应被解释为限制本公开的范围。此外,应注意,在附图的若干视图中,相同的附图标记表示类似的部件。
除非另外明确指明,否则如本公开中所使用的术语“包括”、“由....组成”及其变体意指“包括但不限于”。
除非另外明确指明,否则如本公开中所使用的术语“一个”、“一种”和“该/所述”意指“一个或多个”。
尽管可以按先后顺序描述过程步骤、方法步骤、算法等等,但是可以将这样的过程、方法和算法配置成以替代顺序工作。换句话说,可以描述的步骤的任何次序或顺序不一定表示要求以该顺序执行步骤。本文中描述的过程、方法或算法的步骤可以按任何实际顺序执行。此外,一些步骤可以同时执行。
当本文描述单个装置或制品时,显而易见的是,多于一个装置或制品可代替单个装置或制品使用。类似地,在本文中描述多于一个装置或制品的情况下,显而易见的是,单个装置或制品可代替多于一个装置或制品使用。装置的功能或装置的特征可以替代地由一个或多个未被明确描述为具有此类功能或特征的其它装置实现。
在各个实施例中,硬件模块可以机械方式或电子方式实现。例如,硬件模块可以包括专用电路或逻辑,所述专用电路或逻辑被永久配置成(例如,作为专用处理器,例如现场可编程门阵列(FPGA)或专用集成电路(ASIC))执行某些操作。硬件模块还可包括可编程逻辑或电路(例如,包含在通用处理器或其它可编程处理器中),其由软件临时配置以执行某些操作。应当理解,在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中机械地实现硬件模块的决定可以由成本和时间考虑来驱动。
本文中描述的示例方法的各种操作可至少部分地由一个或多个处理器执行,所述一个或多个处理器是(例如由软件)临时配置或者永久配置的以执行相关操作。不管是临时还是永久配置,这些处理器可构成处理器实现的模块,其操作以执行一个或多个操作或功能。本文中所提到的模块在一些示例性实施例中可以包括处理器实现的模块。
类似地,本文中描述的方法或例程可以至少部分地是处理器实现的。例如,方法的操作中的至少一些可由一个或多个处理器或处理器实现的硬件模块执行。某些操作的性能可分布在不仅驻存在单个机器内还部署在许多机器上的一个或多个处理器中。在一些示例性实施例中,处理器或若干处理器可位于单个位置(例如,在家庭环境、办公室环境内或作为服务器场),而在其它实施例中,处理器可分布在多个位置。
除非另有特别说明,否则本文中使用诸如“处理”、“计算”、“估计”、“确定”、“呈现”、“显示”等词语的论述可以指在一个或多个存储器(例如,易失性存储器、非易失性存储器或其组合)、寄存器或接收、存储、传输或显示信息的其它机器部件内操纵或转换表示为物理(例如,电子、磁或光)量的数据的机器(例如,计算机)的动作或过程。
虽然已经就示例性实施例描述了本公开,但本领域的技术人员将认识到,本公开可用落在所附权利要求书的精神和范围内的修改实践。上文给出的这些示例仅仅是说明性的,并且不意味着是本公开的所有可能设计、实施例、应用或修改的详尽列表。
总的来说,具有多个晶体管的集成电路提供了在半导体衬底上制造更复杂电路的能力,所述多个晶体管中每一个可具有栅极电介质性质独立于相邻晶体管的栅极电介质性质。制造这种集成电路结构的方法进一步提高了集成电路设计的灵活性。尽管已关于某些优选实施例展示和描述了本发明,但显而易见的是,在阅读和理解本说明书后,所属领域的技术人员将会想到等同物和修改。本发明包括所有此类等同物和修改,并且仅受以下权利要求书的范围的限制。
Claims (9)
1.一种图形处理子系统,包括:
图形处理单元(GPU),所述图形处理单元可操作以:
识别与所述GPU相关联的标量寄存器文件,所述标量寄存器文件具有标量寄存器分配总数;
识别标量处理所需的单元以用于内核执行;
分配所述标量寄存器文件中的标量寄存器以用于所述内核执行;
从所述标量寄存器分配总数识别所述标量寄存器文件中剩余的未使用单元;
分配所述标量寄存器文件中剩余的未使用单元的标量寄存器以存储用于所述内核执行的恒定标量值;
在所述内核执行之前,初始化所述标量寄存器文件;以及
启动所述内核执行。
2.根据权利要求1所述的图形处理子系统,还包括在完成所述内核执行时,在下一内核执行之前,回收所述未使用单元。
3.根据权利要求1所述的图形处理子系统,其中,分配所述标量寄存器文件中的标量寄存器以用于所述内核执行包括分配所述标量寄存器文件中的标量寄存器以用于所述内核执行的一个或多个线程。
4.一种由图形处理单元处理的计算机实现的方法,所述方法包括:
识别与GPU相关联的标量寄存器文件,所述标量寄存器文件具有标量寄存器分配总数;
识别标量处理所需的单元以用于内核执行;
分配所述标量寄存器文件中的标量寄存器以用于所述内核执行;
从所述标量寄存器分配总数识别所述标量寄存器文件中剩余的未使用单元;
分配所述标量寄存器文件中剩余的未使用单元的标量寄存器以存储用于所述内核执行的恒定标量值;
在所述内核执行之前,初始化所述标量寄存器文件;以及
启动所述内核执行。
5.根据权利要求4所述的计算机实现的方法,还包括在完成所述内核执行时,在下一内核执行之前,回收所述未使用单元。
6.根据权利要求4所述的计算机实现的方法,其中,分配所述标量寄存器文件中的标量寄存器以用于所述内核执行包括分配所述标量寄存器文件中的标量寄存器以用于所述内核执行的一个或多个线程。
7.一种用于重用未使用的标量寄存器的系统,所述系统包括:
存储器,所述存储器被配置成存储由线程执行的指令;
图形处理单元(GPU),所述图形处理单元被配置成执行标量指令与向量指令,其中所述GPU被配置成:
通过线程控制器识别与所述GPU相关联的标量寄存器文件,所述标量寄存器文件具有标量寄存器分配总数;
通过所述线程控制器识别标量处理所需的单元以用于内核执行;
通过所述线程控制器分配所述标量寄存器文件中的标量寄存器以用于所述内核执行;
通过所述线程控制器从所述标量寄存器分配总数识别所述标量寄存器文件中剩余的未使用单元;
通过所述线程控制器分配所述标量寄存器文件中剩余的未使用单元的标量寄存器以存储用于所述内核执行的恒定标量值;
在所述内核执行之前,通过所述线程控制器初始化所述标量寄存器文件;以及
通过所述线程控制器启动所述内核执行。
8.根据权利要求7所述的系统,还包括在完成所述内核执行时,在下一内核执行之前,回收所述未使用单元。
9.根据权利要求7所述的系统,其中,分配所述标量寄存器文件中的标量寄存器以用于所述内核执行包括分配所述标量寄存器文件中的标量寄存器以用于所述内核执行的一个或多个线程。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/281,052 US20200264891A1 (en) | 2019-02-20 | 2019-02-20 | Constant scalar register architecture for acceleration of delay sensitive algorithm |
USUS16/281052 | 2019-02-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111258650A true CN111258650A (zh) | 2020-06-09 |
Family
ID=70949284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010098892.9A Pending CN111258650A (zh) | 2019-02-20 | 2020-02-18 | 用于加速延迟敏感算法的恒定标量寄存器架构 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200264891A1 (zh) |
CN (1) | CN111258650A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118245013A (zh) * | 2024-05-27 | 2024-06-25 | 成都登临科技有限公司 | 支持标量寄存器动态分配的计算单元、方法及相应处理器 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114296945B (zh) * | 2022-03-03 | 2022-05-20 | 北京蚂蚁云金融信息服务有限公司 | 用于对gpu显存进行复用的方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101809626A (zh) * | 2007-09-28 | 2010-08-18 | 高通股份有限公司 | 着色器编译器系统和方法 |
CN103197916A (zh) * | 2011-12-14 | 2013-07-10 | 辉达公司 | 用于源操作数收集器高速缓存的方法和装置 |
CN104937541A (zh) * | 2012-12-29 | 2015-09-23 | 英特尔公司 | 用于调用多线程加速器的装置和方法 |
CN107729990A (zh) * | 2017-07-20 | 2018-02-23 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 |
US20180144435A1 (en) * | 2016-11-23 | 2018-05-24 | Advanced Micro Devices, Inc. | Low power and low latency gpu coprocessor for persistent computing |
-
2019
- 2019-02-20 US US16/281,052 patent/US20200264891A1/en not_active Abandoned
-
2020
- 2020-02-18 CN CN202010098892.9A patent/CN111258650A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101809626A (zh) * | 2007-09-28 | 2010-08-18 | 高通股份有限公司 | 着色器编译器系统和方法 |
CN103197916A (zh) * | 2011-12-14 | 2013-07-10 | 辉达公司 | 用于源操作数收集器高速缓存的方法和装置 |
CN104937541A (zh) * | 2012-12-29 | 2015-09-23 | 英特尔公司 | 用于调用多线程加速器的装置和方法 |
US20180144435A1 (en) * | 2016-11-23 | 2018-05-24 | Advanced Micro Devices, Inc. | Low power and low latency gpu coprocessor for persistent computing |
CN107729990A (zh) * | 2017-07-20 | 2018-02-23 | 上海寒武纪信息科技有限公司 | 支持离散数据表示的用于执行人工神经网络正向运算的装置及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118245013A (zh) * | 2024-05-27 | 2024-06-25 | 成都登临科技有限公司 | 支持标量寄存器动态分配的计算单元、方法及相应处理器 |
CN118245013B (zh) * | 2024-05-27 | 2024-07-19 | 成都登临科技有限公司 | 支持标量寄存器动态分配的计算单元、方法及相应处理器 |
Also Published As
Publication number | Publication date |
---|---|
US20200264891A1 (en) | 2020-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9928034B2 (en) | Work-efficient, load-balanced, merge-based parallelized consumption of sequences of sequences | |
US10877757B2 (en) | Binding constants at runtime for improved resource utilization | |
US8732713B2 (en) | Thread group scheduler for computing on a parallel thread processor | |
US9293109B2 (en) | Technique for storing shared vertices | |
TWI498819B (zh) | 執行成型記憶體存取作業的系統和方法 | |
US8619087B2 (en) | Inter-shader attribute buffer optimization | |
TWI489392B (zh) | 多個應用程式分享的圖形處理單元 | |
US8928677B2 (en) | Low latency concurrent computation | |
US9418616B2 (en) | Technique for storing shared vertices | |
US9645802B2 (en) | Technique for grouping instructions into independent strands | |
US9229717B2 (en) | Register allocation for clustered multi-level register files | |
US8370845B1 (en) | Method for synchronizing independent cooperative thread arrays running on a graphics processing unit | |
US8195858B1 (en) | Managing conflicts on shared L2 bus | |
US9513923B2 (en) | System and method for context migration across CPU threads | |
TW201337829A (zh) | 暫存器檔案型讀取 | |
US9594599B1 (en) | Method and system for distributing work batches to processing units based on a number of enabled streaming multiprocessors | |
US8321618B1 (en) | Managing conflicts on shared L2 bus | |
CN111258650A (zh) | 用于加速延迟敏感算法的恒定标量寄存器架构 | |
TWI501156B (zh) | 多頻時間切面組 | |
CN111240745A (zh) | 交叉执行的增强型标量向量双管线架构 | |
CN111324439A (zh) | 用于向量单元的密码引擎和调度方法 | |
CN103218259A (zh) | 计算任务的调度和执行 | |
CN111290791A (zh) | 具有高性能密码操作的标量单元 | |
US8473948B1 (en) | Method for synchronizing independent cooperative thread arrays running on a graphics processing unit | |
US20200264781A1 (en) | Location aware memory with variable latency for accelerating serialized algorithm |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200609 |