CN108734623B - 在低功率结构中维护数据的系统和方法 - Google Patents

在低功率结构中维护数据的系统和方法 Download PDF

Info

Publication number
CN108734623B
CN108734623B CN201810293752.XA CN201810293752A CN108734623B CN 108734623 B CN108734623 B CN 108734623B CN 201810293752 A CN201810293752 A CN 201810293752A CN 108734623 B CN108734623 B CN 108734623B
Authority
CN
China
Prior art keywords
thread
register file
data
work order
file memory
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.)
Active
Application number
CN201810293752.XA
Other languages
English (en)
Other versions
CN108734623A (zh
Inventor
大卫·C·坦南鲍姆
斯里尼瓦桑·S·艾耶
米切尔·K·阿尔苏普
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN108734623A publication Critical patent/CN108734623A/zh
Application granted granted Critical
Publication of CN108734623B publication Critical patent/CN108734623B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • 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/22Microcontrol or microprogram 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • 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/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

图形处理单元可以包括寄存器文件存储器、处理元件(PE)和加载存储单元(LSU)。寄存器文件存储器包括多个寄存器。PE耦接到寄存器文件存储器并处理图形应用的线程向量的至少一个线程。线程向量中的每个线程是以无拖延方式来处理的。PE在寄存器文件存储器中多个寄存器的第一预定集合中存储通过处理至少一个线程生成的且要向PE外部的第一可拖延逻辑单元路由的数据。LSU耦接到寄存器文件存储器,且LSU访问多个寄存器的第一预定集合中的数据并向第一可拖延逻辑单元路由。

Description

在低功率结构中维护数据的系统和方法
相关申请的交叉引用
本专利申请要求于2017年4月18日提交的美国临时专利申请No.62/486,957以及2017年6月26日提交的美国非临时专利申请No.15/633,746在35U.S.C.§119(e)下的优先权,其公开内容以全文引用的方式并入本文中。
技术领域
本文公开的主题涉及图形处理单元(GPU)。更具体地,本文公开的主题涉及在低功率结构中维护数据的系统和方法。
背景技术
GPU执行可以与应用相关联的图形程序。GPU可以包括通用可编程引擎,该通用可编程引擎可以用于执行例如着色器程序(着色器)。在统一GPU架构中,可被称为着色器内核的相同可编程引擎针对特定图形配置来运行多个程序中的每个程序。考虑到图形程序的本质,GPU是具有并行运行的大线程集的高度并行的机器。高度并行的系统经常在系统的不同部分之间移动大量的数据-一种倾向于消耗相对大量功率的操作。因此,如果GPU被设计为手持设备的一部分,则低功率设计就变得极其重要。
发明内容
示例实施例提供了GPU,其可以包括寄存器文件存储器、处理元件(PE)和加载存储单元(LSU)。寄存器文件存储器可以包括多个寄存器。PE可以耦接到寄存器文件存储器,以及PE可以处理图形应用的线程向量的至少一个线程,其中,线程向量中的每个线程要以无拖延方式来处理,以及PE可以在寄存器文件存储器中的多个寄存器的第一预定集合中存储通过处理所述至少一个线程来生成的且要向PE外部的第一可拖延逻辑单元路由的数据。LSU可以耦接到寄存器文件存储器,且LSU可以访问多个寄存器的第一预定集合中的数据并可以向第一可拖延逻辑单元路由该数据。GPU还可以包括耦接到LSU的工作订单送料存储器,其中,工作订单送料存储器能够存储与PE对图形应用的线程向量的至少一个线程的处理相关联的至少一个工作订单消息,以及其中,至少一个工作订单消息可以包括多个寄存器的第一预定集合的存储要向第一可拖延逻辑单元路由的数据的第一位置。至少一个工作订单消息还可以包括寄存器文件存储器中的多个寄存器的第二预定集合的指示在哪里存储第一可拖延逻辑单元的结果的第二位置。
示例实施例提供了GPU,其可以包括PE、指令流水线解析器和LSU。该PE可以处理图形应用的线程向量的至少一个线程,其中,线程向量中的每个线程要以无拖延方式来处理。如果图形应用的线程向量的至少一个线程的指令包括向PE外部的第一可拖延逻辑单元路由数据的操作,则指令流水线解析器可以生成工作订单消息。工作订单消息可以包括存储由PE处理的且要向第一可拖延逻辑单元路由的数据的第一位置。LSU可以包括能够存储工作订单消息的工作订单送料存储器。LSU可以接收工作订单送料存储器中的工作订单消息并可以向第一可拖延逻辑单元路由第一位置处的数据。PE可以包括寄存器文件存储器,该寄存器文件存储器包括多个寄存器,其中,存储数据的第一位置包括寄存器文件存储器中的多个寄存器的第一集合。工作订单消息还可以包括寄存器文件存储器中的多个寄存器的第二预定集合的指示在哪里存储第一可拖延逻辑单元的结果的第二位置。
一个示例实施例提供了处理图形应用的方法,该方法可以包括:通过处理图形应用的线程向量的至少一个线程在PE中生成数据,其中,线程向量的每个线程要在无拖延进程中处理,以及该数据可以向无拖延进程外部的可拖延进程路由;在寄存器文件存储器中多个寄存器的第一预定集合中存储数据,其中,寄存器文件存储器可以耦接到PE;由耦接到寄存器文件存储器的LSU访问在多个寄存器的第一预定集合中存储的数据;以及由所述LSU向可拖延进程路由所访问的数据。该方法还可以包括:如果图形应用的线程向量的至少一个线程的指令包括向可拖延进程路由数据的操作,则由指令流水线解析器生成工作订单消息,其中,工作订单消息可以包括多个寄存器的第一预定集合的存储要向可拖延进程路由的数据的第一位置。工作订单消息还可以包括寄存器文件存储器中的具有多个寄存器的第二预定集合的指示存储可拖延进程的结果的第二位置。
一个示例实施例提供了处理图形应用的方法,该方法可以包括:如果图形应用的指令包括向可拖延进程路由数据的操作,则在指令流水线解析器处生成工作订单消息,其中,图形应用可以包括至少一个线程向量,其中,每个线程要在无拖延进程中处理,以及工作订单消息可以包括存储通过执行指令所生成的数据的第一位置;在LSU的工作订单送料存储器中存储工作订单消息;通过在图形应用的线程向量的至少一个线程上的无拖延进程中执行指令在PE中生成数据,其中,所生成的数据可以向可拖延进程路由;在寄存器文件存储器的多个寄存器的第一预定集合中存储数据,其中,多个寄存器的第一预定集合对应于第一位置,以及寄存器文件存储器耦接到PE;由LSU访问在多个寄存器的第一预定集合中存储的数据;以及由所述LSU向所述可拖延进程路由所访问的数据。
附图说明
在下节中,将参考附图中示出的示例实施例来描述本文公开的主题的各方面,在附图中:
图1示出了根据本文公开主题的GPU系统的示例实施例;
图2示出了线程束(warp)的示例实施例,该线程束包括被组织为空间维度上的八个线程和时间维度上的四个线程的对线程的单指令多线程分组;
图3示出了根据本文公开主题的发射缓冲器的示例实施例;
图4示出了示例字段,当确定示例发射缓冲器400要被用作TCBUF相关指令处理的一部分时指令流水线顶部解析器可以探查示例TCBUF指令;以及
图5示出了根据本文公开主题在PE和LSU之间的示例存储器交互的序列图。
具体实施方式
在以下详细描述中,阐述了许多具体细节以便提供对本公开的透彻理解。然而,本领域技术人员将理解的是:所公开的方面可以在没有这些具体细节的情况下实施。在其他情况下,未详细描述公知的方法、流程、组件和电路,以免不必要地模糊本文公开的主题。
贯穿本说明书对“一个实施例”或“实施例”的提及意味着结合实施例描述的特定特征、结构或特性可被包括在本文公开的至少一个实施例中。因此,在说明书的各个位置中出现短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或具有类似含义的其他短语)不一定均是指相同的实施例。此外,可以在一个或多个实施例中通过任何合适的方式来组合特定特征、结构或特性。就此而言,如本文所使用的,词语“示例性的”意指“用作示例、实例或说明”。本文中描述为“示例性的”任何实施例不必解释为相比其他实施例优选或者有利。此外,取决于本文讨论的上下文,单数术语可以包括相应的复数形式且复数术语可以包括相应的单数形式。还注意到:本文所示和所讨论的各个附图(包括组件图)仅用于说明目的,且未按比例绘制。类似地,仅为了说明目的来示出各种波形和时序图。例如,为了清楚,一些元素的尺寸可以相对于其他元素被夸张。此外,如果认为恰当,则可以在附图之间重复附图标记,以指示对应或相似的元素。
本文中所使用的术语仅仅是为了描述具体示例实施例的目的,而不是意在限制所要求保护的主题。如本文中使用的,单数形式“一”,“一个”和“所述”意在还包括复数形式,除非上下文明确地给出相反的指示。还应该理解,术语“包括”和/或“包含”在本说明书中使用时,表明存在所述的特征、整体、步骤、操作、元素和/或组件,但是并没有排除存在或另外添加一个或多个其它特征、整体、步骤、操作、元素、组件和/或它们的组。如本文所使用的术语“第一”、“第二”等被用作跟在它们后面的名词的标签,且不暗示着任何类型的排序(例如,空间、时间、逻辑等),除非明确如此定义。此外,可以跨两个或更多附图来使用相同的附图标记,以指代具有相同或相似功能的部分、组件、块、电路、单元或模块。然而这种使用仅为了简化说明并方便讨论;其并不暗示:这些组件或单元的构造或架构细节跨所有实施例都相同或这些共同引用的部分/模块是实现本文公开的具体实施例的教导的唯一方式。
除非另外定义,否则本文使用的所有术语(包括技术和科学术语)具有与本主题所属领域的普通技术人员通常所理解的含义相同的含义。例如,如本文所使用的术语“mod”意味着“模”。还应理解,诸如在常用词典中定义的术语等的术语应被解释为其含义与在相关技术的上下文中的含义相一致,而不应将其解释为理想的或过于正式的含义,除非本文明确如此定义。
如本文所使用的,术语“模块”指代被配置为结合模块来提供本文所述功能的软件、固件和/或硬件的任何组合。在应用于本文所述任何实现时,术语“软件”可以体现为软件包、代码和/或指令集或指令。在应用于本文所述任何实现时,术语“硬件”可以包括例如具有单独或任何组合方式的硬连线电路、可编程电路、状态机电路、和/或存储由可编程电路执行的指令的固件。模块可以统一地或单独地体现为形成较大系统的一部分的软件、固件和/或硬件,例如(但不限于):集成电路(IC)、片上系统(SoC)等。
本文公开的主题提供了包括PE的GPU系统,该PE在不利用滑动缓冲器(skidbuffer)和/或可调触发器(enablable flip-flop)的情况下运行无拖延主进程。可能包括潜在未知或不可知时延在内的无拖延主进程的所有方面可以在无拖延进程外部执行,由此以无拖延方式来高效地处理潜在未知或不可知时延。
在一个实施例中,GPU系统可以包括无拖延中央引擎,该无拖延中央引擎通过相对大的静态随机存取存储器(SRAM)与潜在拖延第二进程交换数据。无拖延中央引擎可以包括PE,该PE对SRAM进行动态寻址,使得无拖延主进程可以生成数据并在SRAM中存储数据。潜在拖延第二进程可以访问SRAM,以针对所存储数据来执行附加功能,用于具有未知或不可知时延的操作。因此,本文公开的GPU系统的高效存储结构允许生成并在该存储结构中保持可被用于满足无拖延主进程中的操作但可具有可拖延方面的输入,直到诸如第二进程可以完成潜在可拖延方面之类的时间为止。
附加地,与包括拖延流水线的传统图形PE相比,该PE的无拖延特性允许该PE被配置为使用较少的芯片面积并耗散较少的功率。即,无拖延主进程通过SRAM来交换数据的配置提供了使用最少量存储空间的相对低功率的GPU系统。与可以在传统GPU中使用的将存储器制造为触发器(flip-flop)相比,当前用于将存储器制造为SRAM的技术允许相对大的SRAM在面积和功率方面更有效率。附加地,与使用大量相对较小的SRAM相比,如本文所公开的使用较少数量的相对较大的SRAM可以更有效,这是因为与大量相对较小的SRAM相比,内部SRAM结构可以在较少的相对较大的SRAM上更高效地分摊。
在一个实施例中,PE可以耦接到在本文中被称为向量寄存器文件(vRF)的相对大的SRAM,该向量寄存器文件(vRF)可以保持由PE执行的无拖延进程正发出的数据。该数据可以是响应于指令集架构(ISA)的显式发射指令来发出的,或者可以是作为可能引起数据离开PE的任何其他指令的一部分而隐式发出的。被发出的具体数据可被包含在作为vRF的一部分的可识别发射缓冲器中。从编程角度来说,使用发射缓冲器可以是高效的,因为未使用显式指令时隙,由此消除了与附加程序获取能量和时延相关联的开销,并减少程序存储空间。
在一个实施例中,GPU系统可以提供着色器内核引擎,该着色器内核引擎可以用无拖延方式工作,且可以在不将触发器组用于数据输入和输出的情况下在无拖延着色器内核引擎之外执行可能拖延的任何操作。着色器内核引擎可被配置为使得内核中的操作始终使用相同数目的周期。由着色器内核引擎正处理的所有大数据保留在基于SRAM的寄存器文件中,且对特定寄存器文件的管理可以是以下各项的组合:可以在编译时执行对寄存器文件配置的各种优化的着色器程序编译器、以及可以在操作期间提供寄存器的精确地址的一个或多个运行时定序器。通过基于SRAM的寄存器文件来互换数据可以是灵活的,且可以涉及与在基于SRAM的寄存器文件内的寄存器文件分配相关的最少编译器知识。因此,与传输在消息内包括所有扩展部分的整个大数据消息相对比,本文公开主题实质上提供了通过引用(而不是通过值)来调用的进程,其中,较小的描述或工作订单指示了在哪里找到向可拖延引擎发送的大消息的各部分。
取代按图形应用所呈现的精确顺序来显式运行着色器程序的所有指令,本文公开主题可以允许操作(在现代GPU的通用处理器部分中的已编译指令)要么按顺序执行,要么在操作的任何方面包括未知时延方面(例如,对某个外部资源的依赖性)时可以引起将操作放在队列中供稍后处理。从而,本文公开主题提供了针对小指令集的高效解耦技术,其提供了处理队列中放置的操作(例如,存储器I/O(即,纹理和属性获取))和内核外的其它图形操作的具有可拖延辅助处理单元的高效无拖延核心,尽管指令操作可以不按应用提供的顺序来实际运行,指令操作逻辑上保持顺序,其中,可能拖延的指令在单独队列中运行。
在本文公开的GPU系统的一个实施例中,着色器的通用处理可以由可被分组为一个或多个PE集群(PEC)的一个或多个PE来执行。如本文所使用的PE指代能够按无拖延方式来执行指令流的通用处理器。如本文所使用的PEC指代形成并行处理阵列的多重PE。在一个实施例中,可以是每PEC四个PE。在另一实施例中,每PEC的PE数目可以不同于每PEC四个PE。对于每个周期,PE在线程集中的每个线程或线程束上处理相同的指令。为了高性能,PE可以是多线程机器。在一个实施例中,PE可以是单指令多线程(SIMT)引擎。
如本文所使用的线程指代可以执行指令的控制点。如本文所使用的轨迹(trace)指代在无拖延连续序列中运行的指令集。轨迹可以使用一个或多个周期来执行。例如,一个周期可以专门用于轨迹中的每个指令。每个线程的活跃状态可以由执行掩码中的相应比特来控制。如本文所使用的,线程束(warp)是多个线程的集合,且线程束可以指代周期中执行的所有线程。
在PE上执行的程序可以包括一个或多个轨迹,且可以利用外部可拖延单元,例如LSU。如本文所使用的LSU指的是处理诸如加载和存储等的可拖延操作以及其它潜在可拖延操作(诸如,但不限于,纹理访问或共享资源(例如数学协处理器等)的使用)的处理单元。一个或多个LSU可以与每个PEC相关联。
图1示出了根据本文公开主题的GPU系统100的示例实施例。GPU系统100可以包括控制器单元101、PEC 102、GPU系统100的其它单元103、以及在PEC 102和其它单元103之间的通信结构104。控制器单元101可以耦接到PEC 102和其它单元103,以提供对GPU系统100的操作的整体控制。其它单元103可以包括可拖延单元,例如(但不限于):纹理单元、光栅化单元、图像缓冲单元、超越运算单元、共享存储器、数学协处理器单元、一级高速缓存、插值属性单元以及片上网络(NOC)。
PEC 102可以包括工作向量构造器105、一个或多个PE 106、一个或多个LSU 107和定序器108。如图1所示,PEC 102可以包括四个PE 106,然而PEC 102可以包括任何数目的PE106。取决于相对处理要求,单一LSU 107可以为多个PE 106服务,由此进一步减少了整体面积和存储要求。在图1所示示例实施例中,PEC 102的两个PE106可以利用单一LSU 107,然而PEC 102可以包括任何数目的LSU107。工作向量构造器105、PE 106、LSU 107和定序器108中的一个或多个可以体现为模块。
每个PE 106可以包括vRF 109和标量寄存器文件(sRF)110。如本文所使用的vRF指代通过提供每线程存储来支持PE 106的相对大的存储器,且其一般可以由PE 106和与PE106相关联的LSU 107来访问。如本文所使用的sRF指代通过提供标量数据存储来支持PE106的存储器,例如但不限于线程执行掩码。vRF 109一般可以远大于sRF110。另外,vRF 109和sRF 110可以被配置为提供充足的存储,以允许可以在PE 106上执行的多个线程束之间进行切换,以在由于线程束可能等待资源而导致一个或多个线程束不能进行的情况下最大化效率。在一个实施例中,vRF 109和sRF 110可以由SRAM形成。
工作向量构造器105耦接到一个或多个PE 106和定序器108。工作向量构造器105进行操作以组装被放入由PEC 102处理的线程中的工作项目。在图形的情况下,工作项目可以包括但不限于要处理的像素或顶点。
定序器108可以包括指令流水线顶部(TotIP)解析器108a,指令流水线顶部(TotIP)解析器108a可以包括对PEC 102执行的程序指令进行解析的逻辑,以确定指令是否可以包括可拖延方面,如果包括,则TotIP解析器108a生成本文中称为工作订单的消息,该消息可被存储在LSU 107中的工作订单送料器111中。如本文所使用的,工作订单可以是指令包,其可以包含发射缓冲器(在vRF 109和/或sRF 110中)的位置以及要针对发射缓冲器中的数据执行的一个或多个动作(即,数据操纵)。
PE 106可以进行操作,以处理形成线程束的多个线程,其中,线程束的每个线程是不可拖延的。由于GPU系统100的线程并行特性,PE 106可以发起的很多消息可以较大。从而,PE 106可以是大量大数据的产生器,且相关联的LSU 107可以路由该大数据,并且在一些情况下可以“实时(in flight)”操作数据,例如如果数据可能包含用于加载或存储的地址阵列,该地址阵列可以被合并,以改进去往和/或来自高速缓存的访问的效率。PE 106和LSU 107之间的交互可以通过vRF109和sRF 110,使得可以在发送和存储固有大量数据的能量和开销方面最小化成本。由PE 106生成的大数据保持在vRF 109和/或sRF 110本地,直到其可由其他单元103使用。LSU 107可以包括针对PE 106的vRF的专用接口,和/或可以周期挪用针对PE SRAM的读/写访问端口。
线程束可以被配置为在空间维度和时间维度上管理线程。图2示出了线程束200的示例实施例,线程束200包括被组织为空间维度上的八个线程和时间维度上的四个线程的32个线程201的SIMT分组。在四个周期上并行工作的八个线程如图2所示在时间/空间上实现32个工作单元。执行宽度为八的特性可以由八路(eight lane)PE 106来处理,即并行的八个算术逻辑单元。时间维度上的四个线程可以作为计算单元流水线中的四个系统时钟节拍来管理。在本文中可以将四节拍组织称为“轮(Pass)”。应当理解的是,本文公开的主题可以支持vRF 109和sRF 110中任意数目的线程束和任意数目的寄存器文件。
线程束中的每个线程可以具有独立资源以及线程可以操纵的数据,因此线程束的线程数据量可以变得较大,特别是在数据是浮点值的情况下。例如,每次指令调用线程的任何数据时,三十二个32比特值形成了1k比特数据。线程束的较宽宽度可以既用于PE 106内部的操作,也可以用于在与外部单元(即,图1中的其他单元103)通信时的操作。
回到图1,除了在PE 106和LSU 107之间的分工(即PE 106产生数据,LSU 107路由并操作数据)之外,在创建数据时和在LSU 107处理数据时之间也可以存在延迟。如果LSU107在该时刻碰巧被PEC102的另一PE 106占用,或者由于等待来自另一单元103的响应而延迟,则延迟的范围可以从几乎零到相当长的时间。与在LSU 107中具有较大缓冲器不同,可以在PE 106的vRF 109内的逻辑形成的子缓冲器中保持PE产生的大数据。这种子缓冲器在本文中可称为发射缓冲器300(图3)。发射缓冲器300可以保持正被PE 106发出的数据,不管是由于ISA中的显式发射指令还是由于隐含地作为使得数据要离开PE 106的任何其他指令的部分。PE 106可以计算写入发射缓冲器300的位置以及LSU 107可以从发射缓冲器300读取的位置。
LSU 107对来自PE 106的数据向PE 106外部的系统100的其余部分的分发进行管理。在一个实施例中,LSU 107可以包括可变深度队列,在本文中被称为工作订单送料器111。如本文所使用的,工作订单送料器指代可以用于从GPU系统100的无拖延引擎(即,PE106)向可拖延引擎部分传递工作订单的输入队列结构。在一个实施例中,工作订单送料器111的深度可以设置为16。在其他实施例中,工作订单送料器111的深度可以不同于16。
工作订单送料器111可以是小于vRF 109的存储器,但是能够在不负面影响主PE执行引擎的情况下支持对工作订单指令的后台执行。工作订单送料器111的实际维度可以是完全灵活的。由TotIP 108a写入的工作订单放在LSU 107的工作订单送料器111中,且可以按到达顺序来处理,但是与引发的PE指令是异步的。即,LSU 107可以按工作订单送料器111中将工作订单加入队列的相同顺序来处理工作订单送料器111中的工作订单。备选地,如果LSU 107可以为多于一个PE 106服务,则LSU 107可以使用循环(round-robin)或其它仲裁方案来选择接下来要服务哪个工作订单/PE。
进程的涉及到LSU 107的部分开始于:定序器108中的TotIP解析器108a解析指令并向LSU 107中的工作订单送料器111发送工作订单。在一个实施例中,从定序器108到LSU107的工作订单送料器111的路径中的时延可以充分长,使得PE 106所涉及的用于产生要由工作订单所加工的数据的任何操作都可用。
表1阐述了示例四字段32比特工作订单的一个实施例,其提供了可以用于处理vRF109和/或sRF 110中的数据的最少量信息。表1阐述了32比特工作订单的示例配置。第一字段(比特[31∶24])可以用于选择或识别工作订单,以及随后的[23∶15]比特可以提供针对工作订单的修饰符。随后的[14∶7]和[6∶0]字段可以分别用于访问PE的vRF和sRF中的数据。在LSU 107处理工作订单期间,可能需要例如掩码和其它数据来正确执行工作订单并向恰当的寄存器文件返回工作订单的结果。
表1
[31∶24] 8比特类型工作订单
[23∶15] 9比特工作订单特定字段
[14∶7] 8比特vRF位置
[6∶0] 7比特sRF位置
图3示出了根据本文公开主题的发射缓冲器300的示例实施例。发射缓冲器300可以是位于形成PE 106的vRF 109的、且已被分配给线程束的寄存器集合内的一系列寄存器位置。可基于指示了特定vRF空间位于特定线程束的哪里的WARPid.RFbase寄存器中包含的信息,将PE 106的vRF 109划分为空间集合。可以在定序器108中维护WARPid.RFbase寄存器。在一个实施例中,存在定序器108控制的针对每个PE的这些寄存器中每个寄存器的副本。因此,vRF 109可以被配置为包含多个发射缓冲器300。可以基于例如WARPid.RFbase寄存器的内容加上WARPid.EMITbase寄存器的内容来定位并访问特定发射缓冲器300。可以在定序器108中维护WARPid.EMITbase寄存器。随着向发射缓冲器添加条目(如由TotIP解析器108a所确定的),定序器108递增WARPid.EMITbase寄存器。在一个实施例中,发射缓冲器300的生命周期可以等同于轨迹的长度。从而,可以在单一轨迹内创建和消费发射缓冲器300中的数据。
如图3所示,vRF 109包括寄存器R0、R1、...的布置,寄存器被分配给一个或多个线程束中的每个线程束。应当理解的是:尽管在图3中仅示出了线程束301a-301c,但vRF 109可以包括任意数目的线程束。每个线程束301可以被配置为包括例如32个线程,其可以类似于图2所示的示例线程束。
发射缓冲器300中的数据与向LSU 107的工作订单送料器111发送的工作订单直接相关。更具体地,发射缓冲器109中的数据可以包含要由PE 106发出的大的向量值,且相应工作订单可以包含与发射缓冲器300中的数据有关的特定请求。随着例如着色器程序的指令执行,如果存在要从PE 106向可拖延单元103传递的数据,则可以将要传递的数据寄存在PE 106的vRF 109内的发射缓冲器300中。可以在设计时(即,合成时)确定可以导致向发射缓冲器发出数据的ISA级指令的确切列表,或者可以在运行时维护的表中将该ISA级指令的确切列表以表形式列出。表2中阐述了示例指令列表。在任一情况下,在运行期间,每次指令由例如定序器108中的TotIP解析器108a解析时,可以确定指令是否在PE 106中完全运行,或者指令是否还可以包括可以在LSU 107中加入队列以供进一步可拖延处理的指令部分。
图3可以示出以下示例情形:轨迹执行已执行了指定例如以下各项的指令:纹理坐标缓冲器、利用64比特地址的输出存储器访问、然后针对输出寄存器的两次不同写入(o#)。如本文所使用的纹理坐标缓冲器(TCBUF)指代可以用于接收和存储纹理坐标的远程存储元件(即,远离vRF)。在图3中执行的轨迹还可以包括指令,例如FMUL TCBUF2,R1,R2,其可以引起在发射缓冲器300的第一条目中放置乘积R1×R2。FMUL指令中TCBUF目的地的下标“2”可以是工作订单的一部分,该工作订单可以是要向LSU 107的工作订单送料器111发送。当LSU107执行该工作订单时,LSU 107向vRF 109发出请求,以访问发射缓冲器300的位置,以及在标签指定例如TEX.TA.TCBUF(即,纹理单元中寻址子模块中的纹理坐标缓冲器)的情况下(其指示了操作是纹理坐标缓冲器加载操作且正被访问的TEX.TA.TCBUF是编号2),则要写入到TEX.TA.TCBUF的数据向量在vRF 109中被识别为发射缓冲器109的位置处可用。应当注意到:针对如“加载”或“存储”操作之类的操作的引用与正被服务的单元或存储器有关。即,进入到纹理缓冲器单元实体中的写入被称为“加载(load)”,例如“TCBUF load”,即使从LSU107或PE 106的角度来说,该操作也可以被视为存储操作。
继续图3所示示例情形,在轨迹的指令中的稍后的某个时间,可以存在利用64比特地址的存储器访问。这可以导致由PE 106向发射缓冲器300中写入两个32比特地址部分。在vRF 109中维护大的向量数据(即,地址),并且可以在LSU 107基于LSU 107的工作订单送料器111中的工作订单向vRF 109发出请求时向LSU 107传输该存储器操作。
在轨迹中再稍后,可以存在引用输出寄存器(即,o#)的指令,例如指令FADD O3,R14,R6,其导致图3所示的特定情形。发射缓冲器300可以包含要向o[3]写入的向量值,且工作订单包含常数“3”。随后,第二输出寄存器写入发生且可以向发射缓冲器300写入第二向量,以及相应地向LSU 107的工作订单送料器111发送第二o#工作订单。着色器程序的当前着色器类型可以由PEC.WSQ.TotIP寄存器来指示。PEC.WSQ.TotIP寄存器可以位于定序器108中。除了其他用途之外,着色器类型还可以用于区分如何处理o#操作。还可以在向LSU107发送的工作订单中指示o#是否针对前端着色器(在该情况下,输出寄存器写入是针对共享存储器的),或者o#是否针对像素着色器(在该情况下,输出寄存器写入是针对光栅化子系统的)。
表2阐述了ISA指令(或指令变体)的示例列表,例如在向纹理坐标缓冲器写入的情况下,其可以包括与发射缓冲器300相关联的动作。表2阐述了包括发射缓冲器动作在内的示例指令和指令变体。表2中的题为“指定形式”的第二列指示了定序器108可以通过TotIP解析器108a来检验什么字段以确定发射缓冲器300是否可以用于特定指令。对于一些情况,对指令操作码(opcode)的探查可能足够了,但是在其他情况下,可以进一步限定(qualify)该确定。
表2
根据表2中的第二列,检测指令是否包括发射缓冲器操作可以不仅涉及对主/次操作码进行解码,还涉及对其他比特进行解码,并且可能需要探查指令字中的附加字段。例如,可以将双精度浮点运算可以与单精度浮点运算区分开,因为仅双精度浮点运算可以调用发射缓冲器动作,反之单精度浮点运算可以在PE 106内计算,而无需定序器108的任何额外动作,也无需LSU 107的任何交互。在双精度或单精度浮点运算之间的区分可以包括探查指令的精度类型字段。
在表3中提供TotIP解析器108a如何检测表2所示情况的附加细节。表3阐述了用于识别引发发射缓冲器的场景的附加细节。在一个实施例中,表3的最右侧两列分别呈现了当处理特定指令时在发射缓冲器300中消耗的向量和标量寄存器的数目。图4示出了示例字段401,其中,当确定示例发射缓冲器400要用作处理TCBUF相关指令的一部分时TotIP解析器108a可以探查示例TCBUF指令。
表3
/>
/>
出于时序原因,在向PE 106发送指令之前,TotIP解析器108a可以不修改轨迹中的任何指令,而取而代之的,可以在恰当的情况下提供备选目的地字段比特,PE 106可以在流水线中稍后使用该备选目的地字段比特来代替指令中的目的地字段比特。
用于确定表3所示的vRF和sRF条目的数目的一般规则可以包括以下考虑因素。对于发射缓冲器的分配,可以存在两个计数器EmitVrf和EmitSrf,其中取决于手头上的指令,可以针对每个源或目的地向量来分配0、1或2个vRF条目。可以将vRF分配指针递减所分配的vRF条目的数目。可以分配四个sRF条目,以包含报头、执行掩码以及各种其他字段。每个sRF条目的确切维度以及存在的条目数目可以由设计考虑因素来决定。可以从S63..S60开始分配第一sRF块,并以4为单位向下延伸。在完成指令时,可以从TotIP解析器108a向LSU 107的工作订单送料器111传递工作订单。LSU可以读取sRF和vRF条目。在另一实施例中,到向量和标量寄存器文件中的寻址可以进行向下计数,从而在轨迹开始处,EmitVrf可以是vRFSize-1且EmitSrf可以是60..63。如果vRF空间未用作发射缓冲器中的条目,则编译器可以使用未分配空间来保持持久数据,由此减少GPU系统100所需的总存储器占用。
发射缓冲器可以从根本上受到sRF中存储的报头的数目的限制。在一个实施例中,可以允许八个sRF报头。编译器可以通过不在会被报头盖写的sRF条目中放置持久数据来使用更多的报头。具体地,可以向双精度单元发送的示例指令FMAD.64仅可以使用一个sRF报头,但是可以使用六个vRF条目来提供三个64比特操作数,其中每个vRF是32比特条目的向量,因此是成对使用来形成操作数。所消耗的sRF报头的最大数目可以是每ISA指令一个。
发射缓冲器可以提供用于远程单元{超越,双精度,纹理地址计算,...}的操作数。远程操作可能需要一个或多个操作数,例如sin(x)或A*B分别涉及一个或两个操作数。可以将“动态”源操作对象复制到发射缓冲器中新分配的条目。动态操作数可以是可以来自于例如以下各项的操作数:标量寄存器、常量暂存寄存器、可以被移动到发射缓冲器位置的立即值(以例如存储ISA级别的立即值)或者转发值(即,可以直接使用而不是作为中间步骤已存储在vRF中的先前指令的输出);或本地临时寄存器。每个这样的操作数可以消耗发射缓冲器条目。发射缓冲器条目可以占用发射缓冲器中的一个{Q,H,S}或者两个{D}向量。如本文所使用的,首字母Q、H、S和D分别代表四分之一、二分之一、单倍和双倍宽度,且分别表示8、16、32和64比特量。
在一个实施例中,使用发射缓冲器的每个指令可以消耗作为报头之用的一个发射缓冲器报头(四个sRF条目)。如果可以在远程单元中计算指令,vRF源操作数不占用发射缓冲器,而是可以从其源位置直接访问。发射缓冲器中的这种非条目(non-entry)依然可以消耗四个sRF条目,该四个sRF条目用作例如执行掩码等的报头。如果指令通过发射缓冲器来传递结果,则该结果可以由非远程计算指令来产生,从而源发射缓冲器使用和目的地发射缓冲器使用可以是正交的。如果指令通过发射缓冲器来传递结果,则可以向发射缓冲器条目分配一个或两个vRF条目以及四个sRF条目。可以将计算的结果放在所分配的条目中。可以设立标量寄存器文件,使得LSU 107可以在恰当时间向作为目标的功能单元路由数据。
图5示出了根据本文公开的主题在PE 106和LSU 107之间的示例存储器交互的序列图500。在图5中501处,TotIP解析器108a(图1)解析作为例如正在被执行的着色器程序的指令流的一部分的指令,且作为指令的操作的一部分,确定应当将该指令仅定向到系统的无拖延进程还是定向到系统的无拖延进程和可拖延进程这二者。对于该示例,TotIP解析器108a确定应当将该指令定向到无拖延进程和可拖延进程这二者,因此在502处,向PE 106发送指令(例如,向vRF 109写入)以执行,以及在503处,向LSU 107的工作订单送料器111发送工作订单。该工作订单可以包含与要被该指令操作的发射缓冲器的位置有关的信息。对于可以具有相关联返回值的任何操作(其可以是除了存储操作之外的实质上所有操作),工作订单送料器111中的工作订单还可以包括与数据返回要返回到哪里(即,PE的vRF 109中的哪里返回数据)有关的小指针。
形成工作订单的操作的一部分还可以包括PE 106的某些功能。可以引起向LSU107的工作订单送料器111输入工作订单的指令示例可以包括加载(但不限于从存储器加载)、向存储器存储、原子存储器操作、向纹理坐标缓冲器发送数据、针对经滤波的纹理样本的请求、超越运算、对数和反对数函数、倒数、倒数平方根、从属性插值器读取以及双精度运算。一些操作可以是图形特定的,例如引用纹理和属性插值器的操作,然而应当理解的是,可以经由工作订单送料器中的工作订单来访问可以在无拖延PEC 102之外的任何可拖延单元103。
例如,考虑指令SIN R3,R2,其可以用于计算寄存器R2中的值的正弦并将结果放在寄存器R3中。诸如超越运算之类的运算可以在PE106的外部执行,例如在呈现可拖延时序简档的共享数学协处理器(即单元103)中。TotIP解析器108a对SIN运算进行解码,并生成工作订单,同时还向PE 106提供指令。PE 106可以负责任何本地处理,例如操作数范围减小,以及还可负责保存在执行超越运算的向量时可以由协处理器使用的相关信息。GPU架构100的高度并行特性允许针对PE操作的整个线程向量来给定SIN指令。从而,PE 106、LSU 107以及超越单元103(未示出)都必须能够在遭遇SIN指令时实际上访问特定向量状态。这包括其他信息,该其他信息包含以下字段,例如但不限于:可以用于指示哪些线程可以活跃或可以不活跃的掩码、针对函数的任何虚拟化指针(例如,寄存器重命名)、以及任何其他模式(即,精度、格式转换等)。所有字段形成了大数据量,该大数据量对于在LSU 107中的队列中存储来说是昂贵且麻烦的。相反,保持小指针作为针对PE 106中vRF 109和sRF 110的大本地存储的引用,其中大块数据保持在原位。
稍后在504处,LSU 107处理工作订单送料器111中的工作订单,并在505处对PE106的vRF 109和/或sRF 110中的数据进行一次或多次访问。某些操作可以是一元的且可以涉及单个存储器访问,而其他操作(例如,原子比较和交换操作)可以涉及三个操作数和相应数目的访问。在一个实施例中,可以在工作订单中使用8比特值来引用操作数,即使每个操作数的大小可能是1024比特(三十二个32比特操作数),因此面积和功耗的节约可以是显著的。
作为要由LSU 107来操作的在vRF 109和/或sRV 110中存储的数据可以在506被访问,并在507例如通过解析、格式化和/或路由到目的地单元103来被处理以根据指令进一步处理。如果在507处完成处理,则在508处向TotIP解析器108a发送依赖性清除消息。如果在507处要访问单元103,则在509处确定访问类型。如果访问是写入,则在510处执行该写入。如果访问是读取,则在511处执行读取,在512处格式化以在513处存储在vRF 109中。
作为另一示例,考虑在PE 106中运行的示例着色器程序,其要向纹理坐标缓冲器写入数据以作为准备访问纹理映射的一部分,这可以是计算机图形中的标准操作。纹理单元103可以是主子系统,其可以在各种处理引擎之间共享并可拖延,因此可以呈现不可知的时延。因此可以经由作为相对于无拖延PE 106的外部单元的LSU 107来访问纹理单元。访问纹理坐标缓冲器可以涉及以下序列。TotIP解析器108a可以对针对TCBUF的引用进行解码,向PE 106提供发射缓冲器地址,并生成要在LSU 107的工作订单送料器111中存储的工作订单。PE 106计算要向纹理单元103路由的数据,并将这些数据存储在与TotIP解析器108a所提供的发射缓冲器地址相对应的寄存器中。LSU 107接收并处理工作订单,且针对要向纹理单元103写入的数据向vRF 109中的发射缓冲器发出读取请求。纹理单元103接收该数据并向纹理单元103的存储器写入该数据。
在一个实施例中,可以使用指令中的特殊TCBUFn目的地字段在着色器程序中对写入纹理坐标缓冲器进行编码。例如,示例指令FMUL TCBUF R1,R2可以操作以在编译器的软件控制下发起针对纹理缓冲器TCBUF的加载。在运行时,可以解析指令,且可以检测特殊TCBUFn目的地字段的存在。响应于此,TotIP解析器108a可以确定应当用PE106的vRF 109中的实际位置(即发射缓冲器300中的下一个可用空间)来替换指令中的TCBUF。此外,可以向LSU 107的工作订单送料器111输入与该位置相对应的工作订单。PE 106可以接收经修改的指令,例如FMUL RemitR1,R2,其中Remit可以是由简单示例计算Remit=WARPid.EMITbase[7∶0]所填写的值。此外,TotIP解析器108a还可以向PE 106提供一对信号,其指示可以保存执行掩码以及在sRF 110中保存执行掩码的地址。然后TotIP解析器108可以生成针对LSU 107的工作订单,其可以包含用于向TCBUF移动数据的操作码并提供针对TCBUF的地址。
对于本示例,在工作订单处理期间,一旦LSU 107能够访问纹理单元103(即,在任何给定时刻纹理单元103可能可用或者可能不可用,并可能呈现变化的时延和吞吐量),LSU107可以发送消息,在该消息中LSU 107提供:1024比特数据(在一个实施例中,作为256比特/周期),包含三十二个32比特fp32字或六十四个16比特fp16半字;以及执行掩码比特,其可以由纹理单元用来将处理限制为仅活跃线程,其可以通过针对不活跃线程不更新TCBUF值来用于功能正确性且节约功率。
注意,从PE的角度来说,本特定示例序列是只写(write-only)操作。着色器程序已向纹理坐标缓冲器写入,且在PE 106内的无拖延序列之外的某个时间,该操作完成。稍后,当着色器程序可以从纹理单元读取时,可以生成新的工作订单,其可以请求该读取并提供针对vRF 109中的要被写入返回数据的地址。
如本领域技术人员将认识到的,可以在较广应用范围上对本文所描述的创新构思进行修改和改变。因此,所要求保护的主题的范围不应当限于以上所讨论的任何具体示例教导,而是由所附权利要求来限定。

Claims (25)

1.一种图形处理单元“GPU”,包括:
包括多个寄存器的寄存器文件存储器;
耦接到所述寄存器文件存储器的处理元件“PE”,所述PE用于处理图形应用的线程向量的至少一个线程,所述线程向量中的每个线程要以无拖延方式来处理,以及所述PE用于在所述寄存器文件存储器中的所述多个寄存器的第一预定集合中存储已通过处理所述至少一个线程而生成的且要向所述PE外部的第一可拖延逻辑单元路由的数据;以及
耦接到所述寄存器文件存储器的加载存储单元“LSU”,所述LSU用于访问在所述多个寄存器的第一预定集合中存储的所述数据并向所述第一可拖延逻辑单元路由所述数据。
2.根据权利要求1所述的GPU,还包括:耦接到所述LSU的工作订单送料存储器,所述工作订单送料存储器能够存储与所述PE对所述图形应用的线程向量的所述至少一个线程的处理相关联的至少一个工作订单消息,所述至少一个工作订单消息包括所述多个寄存器的第一预定集合的存储要向所述第一可拖延逻辑单元路由的数据的第一位置。
3.根据权利要求2所述的GPU,其中,所述至少一个工作订单消息还包括:所述寄存器文件存储器中所述多个寄存器的第二预定集合的第二位置,所述第二位置指示在哪里存储所述第一可拖延逻辑单元的结果。
4.根据权利要求2所述的GPU,还包括:指令流水线解析器,用于在所述图形应用的所述线程向量的所述至少一个线程的指令包括向所述第一可拖延逻辑单元路由数据的操作的情况下生成所述至少一个工作订单消息。
5.根据权利要求1所述的GPU,其中,所述寄存器文件存储器包括向量寄存器文件存储器和标量寄存器文件存储器。
6.根据权利要求1所述的GPU,其中,所述PE还用于处理所述图形应用的多个线程向量中每个线程向量的至少一个线程,每个线程向量中的每个线程要以无拖延方式来处理。
7.根据权利要求1所述的GPU,还包括:多个寄存器文件存储器、多个PE以及多个LSU,
其中,每个PE耦接到相应的寄存器文件存储器,所述多个PE中的每个PE用于处理所述图形应用的线程向量的至少一个线程,所述线程向量中的每个线程要以无拖延方式来处理,以及每个PE用于在与所述PE相对应的寄存器文件存储器中的多个寄存器的第二预定集合中存储数据,要存储的数据是通过所述PE处理所述线程向量的至少一个线程来生成的并且要向所述PE外部的第二可拖延逻辑单元路由;以及
其中,每个LSU耦接到至少一个寄存器文件存储器,每个LSU用于访问在与所述LSU耦接的每个寄存器文件存储器的多个寄存器的第二预定集合中存储的数据,以及向所述第二可拖延逻辑单元路由所述数据。
8.根据权利要求7所述的GPU,其中,所述第一可拖延逻辑单元或所述第二可拖延逻辑单元包括:纹理单元、光栅化单元、图像缓冲单元、超越运算单元或数学协处理器。
9.一种图形处理单元“GPU”,包括:
处理元件“PE”,用于处理图形应用的线程向量的至少一个线程,所述线程向量中的每个线程要以无拖延方式来处理;
指令流水线解析器,用于在所述图形应用的线程向量的所述至少一个线程的指令包括向所述PE外部的第一可拖延逻辑单元路由数据的操作的情况下生成工作订单消息,所述工作订单消息包括存储由所述PE处理的要向所述第一可拖延逻辑单元路由的数据的第一位置;以及
加载存储单元“LSU”,包括能够存储工作订单消息的工作订单送料存储器,所述LSU用于接收所述工作订单送料存储器中的工作订单消息并向所述第一可拖延逻辑单元路由在所述第一位置处存储的所述数据。
10.根据权利要求9所述的GPU,其中,所述PE还用于处理所述图形应用的多个线程向量中的每个线程向量的至少一个线程,每个线程向量中的每个线程要以无拖延方式来处理。
11.根据权利要求9所述的GPU,其中,所述PE包括寄存器文件存储器,所述寄存器文件存储器包括多个寄存器,
其中,存储所述数据的所述第一位置包括所述寄存器文件存储器中的所述多个寄存器的第一预定集合。
12.根据权利要求11所述的GPU,其中,所述工作订单消息还包括所述寄存器文件存储器中的所述多个寄存器的第二预定集合的第二位置,所述第二位置指示在哪里存储所述第一可拖延逻辑单元的结果。
13.根据权利要求11所述的GPU,其中,所述寄存器文件存储器包括向量寄存器文件存储器和标量寄存器文件存储器。
14.根据权利要求11所述的GPU,还包括多个PE,每个PE耦接到相应的寄存器文件存储器,所述多个PE中的每个PE用于处理所述图形应用的线程向量的至少一个线程,线程向量中的每个线程要以无拖延方式来处理,以及每个PE用于在与所述PE相对应的所述寄存器文件存储器中的多个寄存器的相应第一预定集合中存储数据,要存储的数据是通过所述PE处理所述线程向量的至少一个线程来生成的并且要向所述PE外部的第二可拖延逻辑单元路由;以及
多个LSU,每个LSU耦接到至少一个寄存器文件存储器,每个LSU包括能够存储工作订单消息的工作订单送料存储器,以及每个LSU用于处理所述工作订单送料存储器中的工作订单消息以及向所述第二可拖延逻辑单元路由在所述多个寄存器的相应第一预定集合中存储的数据。
15.根据权利要求14所述的GPU,其中,所述第一可拖延逻辑单元或所述第二可拖延逻辑单元包括:纹理单元、光栅化单元、图像缓冲单元、超越运算单元或数学协处理器。
16.一种处理图形应用的方法,所述方法包括:
在处理元件“PE”中通过处理所述图形应用的线程向量的至少一个线程来生成数据,所述线程向量中的每个线程要在无拖延进程中处理,以及所述数据要向所述无拖延进程之外的可拖延进程路由;
在寄存器文件存储器中的多个寄存器的第一预定集合中存储所述数据,所述寄存器文件存储器耦接到所述PE;
由耦接到所述寄存器文件存储器的加载存储单元“LSU”访问在所述多个寄存器的第一预定集合中存储的所述数据;以及
由所述LSU向所述可拖延进程路由所访问的数据。
17.根据权利要求16所述的方法,还包括:在所述图形应用的线程向量的所述至少一个线程的指令包括向所述可拖延进程路由数据的操作的情况下由指令流水线解析器生成工作订单消息,所述工作订单消息包括所述多个寄存器的第一预定集合的存储要向所述可拖延进程路由的数据的第一位置。
18.根据权利要求17所述的方法,其中,所述工作订单消息还包括所述寄存器文件存储器中的所述多个寄存器的第二预定集合的第二位置,所述第二位置指示在哪里存储所述可拖延进程的结果。
19.根据权利要求16所述的方法,其中,所述寄存器文件存储器包括向量寄存器文件存储器和标量寄存器文件存储器。
20.根据权利要求16所述的方法,其中,处理所述图形应用的线程向量的所述至少一个线程包括:处理所述图形应用的多个线程向量中每个线程向量的至少一个线程,每个线程向量中的每个线程要以无拖延方式来处理。
21.根据权利要求16所述的方法,其中,所述可拖延进程包括纹理单元、光栅化单元、图像缓冲单元、超越运算单元或数学协处理器的操作。
22.一种处理图形应用的方法,所述方法包括:
如果所述图形应用的指令包括向可拖延进程路由数据的操作,则在指令流水线解析器处生成工作订单消息,所述图形应用包括至少一个线程向量,在所述至少一个线程向量中每个线程要在无拖延进程中处理,所述工作订单消息包括存储通过执行所述指令而生成的数据的第一位置;
在加载存储单元“LSU”的工作订单送料存储器中存储所述工作订单消息;
通过在所述图形应用的线程向量的至少一个线程上的所述无拖延进程中执行所述指令在处理元件“PE”中生成数据,所生成的数据要向所述可拖延进程路由;
在寄存器文件存储器的多个寄存器的第一预定集合中存储所述数据,所述多个寄存器的第一预定集合对应于所述第一位置,以及所述寄存器文件存储器耦接到所述PE;
由所述LSU访问在所述多个寄存器的第一预定集合中存储的所述数据;以及
由所述LSU向所述可拖延进程路由所访问的数据。
23.根据权利要求22所述的方法,其中,所述工作订单消息还包括所述寄存器文件存储器中的所述多个寄存器的第二预定集合的第二位置,所述第二位置指示在哪里存储所述可拖延进程的结果。
24.根据权利要求22所述的方法,其中,所述图形应用还包括多个线程向量,在所述多个线程向量中,每个线程向量中的每个线程要在无拖延进程中处理。
25.根据权利要求22所述的方法,其中,所述可拖延进程包括纹理单元、光栅化单元、图像缓冲单元、超越运算单元或数学协处理器的操作。
CN201810293752.XA 2017-04-18 2018-04-03 在低功率结构中维护数据的系统和方法 Active CN108734623B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762486957P 2017-04-18 2017-04-18
US62/486,957 2017-04-18
US15/633,746 US10360034B2 (en) 2017-04-18 2017-06-26 System and method for maintaining data in a low-power structure
US15/633,746 2017-06-26

Publications (2)

Publication Number Publication Date
CN108734623A CN108734623A (zh) 2018-11-02
CN108734623B true CN108734623B (zh) 2023-11-28

Family

ID=63790035

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810293752.XA Active CN108734623B (zh) 2017-04-18 2018-04-03 在低功率结构中维护数据的系统和方法

Country Status (4)

Country Link
US (1) US10360034B2 (zh)
KR (1) KR102502731B1 (zh)
CN (1) CN108734623B (zh)
TW (1) TWI764997B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747711B2 (en) * 2018-03-20 2020-08-18 Arizona Board Of Regents On Behalf Of Northern Arizona University Dynamic hybridized positional notation instruction set computer architecture to enhance security
US11120603B2 (en) * 2019-06-18 2021-09-14 Samsung Electronics Co., Ltd. Heavy-weight/light-weight GPU shader core pair architecture
CN111124994B (zh) * 2019-11-29 2022-11-11 苏州浪潮智能科技有限公司 一种数据传输方法、装置、gpu及可读存储介质
KR20210092467A (ko) * 2020-01-16 2021-07-26 삼성전자주식회사 로컬 프로세서와 글로벌 프로세서를 포함하는 메모리 다이, 메모리 장치, 및 전자 장치
CN112199119B (zh) * 2020-10-21 2022-02-01 上海壁仞智能科技有限公司 向量运算装置
TWI819498B (zh) * 2022-02-18 2023-10-21 瑞昱半導體股份有限公司 記憶體共享電子電路系統以及能使用主機記憶體的外部裝置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623650A (en) * 1989-12-29 1997-04-22 Cray Research, Inc. Method of processing a sequence of conditional vector IF statements
US6587941B1 (en) * 2000-02-04 2003-07-01 International Business Machines Corporation Processor with improved history file mechanism for restoring processor state after an exception
CN103583040A (zh) * 2011-04-15 2014-02-12 天火实验室公司 实时视频检测器
CN105408860A (zh) * 2013-09-06 2016-03-16 华为技术有限公司 多线程异步处理器系统和方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2216307B (en) 1988-03-01 1992-08-26 Ardent Computer Corp Vector register file
WO1997013201A1 (en) 1995-10-06 1997-04-10 Advanced Micro Devices, Inc. Unified multi-function operation scheduler for out-of-order execution in a superscalar processor
US6895452B1 (en) 1997-06-04 2005-05-17 Marger Johnson & Mccollom, P.C. Tightly coupled and scalable memory and execution unit architecture
US6922414B1 (en) 2000-08-21 2005-07-26 Hewlett-Packard Development Company, L.P. Apparatus and method for dynamic command queue depth adjustment for storage area network nodes
US7251721B1 (en) 2001-11-05 2007-07-31 Verisilicon Holdings (Cayman Islands) Co. Ltd. Conditional link pointer register sets marking the beginning and end of a conditional instruction block where each set corresponds to a single stage of a pipeline that moves link pointers through each corresponding register of said register sets as instructions move through the pipeline
US7152152B2 (en) 2004-01-22 2006-12-19 International Business Machines Corporation Method of avoiding flush due to store queue full in a high frequency system with a stall mechanism and no reject mechanism
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7657883B2 (en) * 2005-02-04 2010-02-02 Mips Technologies, Inc. Instruction dispatch scheduler employing round-robin apparatus supporting multiple thread priorities for use in multithreading microprocessor
US20080252652A1 (en) * 2007-04-13 2008-10-16 Guofang Jiao Programmable graphics processing element
US9250899B2 (en) * 2007-06-13 2016-02-02 International Business Machines Corporation Method and apparatus for spatial register partitioning with a multi-bit cell register file
US8174534B2 (en) * 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods
US20090164758A1 (en) 2007-12-20 2009-06-25 Haertel Michael J System and Method for Performing Locked Operations
US8248422B2 (en) * 2008-01-18 2012-08-21 International Business Machines Corporation Efficient texture processing of pixel groups with SIMD execution unit
US7904700B2 (en) * 2008-03-10 2011-03-08 International Business Machines Corporation Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control
US9513905B2 (en) 2008-03-28 2016-12-06 Intel Corporation Vector instructions to enable efficient synchronization and parallel reduction operations
GB2470780B (en) 2009-06-05 2014-03-26 Advanced Risc Mach Ltd A data processing apparatus and method for performing a predetermined rearrangement operation
US8533438B2 (en) 2009-08-12 2013-09-10 Via Technologies, Inc. Store-to-load forwarding based on load/store address computation source information comparisons
US8514235B2 (en) * 2010-04-21 2013-08-20 Via Technologies, Inc. System and method for managing the computation of graphics shading operations
US9069664B2 (en) * 2010-09-24 2015-06-30 Nvidia Corporation Unified streaming multiprocessor memory
US8990602B2 (en) * 2010-12-21 2015-03-24 Intel Corporation Apparatus, method, and system for early deep sleep state exit of a processing element
KR20130051821A (ko) 2011-11-10 2013-05-21 삼성전자주식회사 인터럽트 속도 지연이 개선된 코어 시스템 및 이의 벡터 레지스터 파일 데이터 전송방법
US9135077B2 (en) 2012-03-16 2015-09-15 Advanced Micro Devices, Inc. GPU compute optimization via wavefront reforming
US9471307B2 (en) * 2014-01-03 2016-10-18 Nvidia Corporation System and processor that include an implementation of decoupled pipelines
US20160179542A1 (en) * 2014-12-23 2016-06-23 Patrick P. Lai Instruction and logic to perform a fused single cycle increment-compare-jump
US9817664B2 (en) * 2015-02-19 2017-11-14 Apple Inc. Register caching techniques for thread switches
US9804666B2 (en) * 2015-05-26 2017-10-31 Samsung Electronics Co., Ltd. Warp clustering
US10001822B2 (en) * 2015-09-22 2018-06-19 Intel Corporation Integrating a power arbiter in a processor
US10043232B1 (en) * 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5623650A (en) * 1989-12-29 1997-04-22 Cray Research, Inc. Method of processing a sequence of conditional vector IF statements
US6587941B1 (en) * 2000-02-04 2003-07-01 International Business Machines Corporation Processor with improved history file mechanism for restoring processor state after an exception
CN103583040A (zh) * 2011-04-15 2014-02-12 天火实验室公司 实时视频检测器
CN105408860A (zh) * 2013-09-06 2016-03-16 华为技术有限公司 多线程异步处理器系统和方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
He J 等.Revisiting co-processing for Hash joins on the coupled CPU-GPU architecture.Proc.of the VLDB Endowment.2013,889-900. *
张宇 ; 张延松 ; 陈红 ; 王珊 ; .一种适应GPU的混合OLAP查询处理模型.软件学报.2016,(第05期),192-211. *
朱炼华 ; 郭照立 ; .基于格子Boltzmann方法的多孔介质流动模拟GPU加速.计算物理.2015,(第01期),23-29. *

Also Published As

Publication number Publication date
KR20180117031A (ko) 2018-10-26
US20180300131A1 (en) 2018-10-18
KR102502731B1 (ko) 2023-02-22
TWI764997B (zh) 2022-05-21
US10360034B2 (en) 2019-07-23
CN108734623A (zh) 2018-11-02
TW201903602A (zh) 2019-01-16

Similar Documents

Publication Publication Date Title
CN108734623B (zh) 在低功率结构中维护数据的系统和方法
US20210397451A1 (en) Streaming engine with cache-like stream data storage and lifetime tracking
US11099933B2 (en) Streaming engine with error detection, correction and restart
US11573847B2 (en) Streaming engine with deferred exception reporting
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
US8639882B2 (en) Methods and apparatus for source operand collector caching
US11068164B2 (en) Streaming engine with fetch ahead hysteresis
US20110072243A1 (en) Unified Collector Structure for Multi-Bank Register File
US11709778B2 (en) Streaming engine with early and late address and loop count registers to track architectural state

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