用标准处理单元的图形处理单元和图形处理单元构建方法

文档序号:6501986阅读:206来源:国知局
用标准处理单元的图形处理单元和图形处理单元构建方法
【专利摘要】公开了采用通用处理单元作为图形管线的可编程功能单元以及制造图形处理单元的方法。在一个实施例中,图形管线包括:(1)加速器,(2)耦连到加速器中的每一个的输入输出接口和(3)耦连到输入输出接口并配置为图形管线的可编程功能单元的通用处理单元,通用处理单元配置为经由输入输出接口发出矢量指令到用于可编程功能单元的矢量数据路径。
【专利说明】用标准处理单元的图形处理单元和图形处理单元构建方法
【技术领域】
[0001]本申请总地针对图形处理单元(GPU),并且更具体地,针对GPU的部件。
【背景技术】
[0002]在传统的GPU中,固定功能单元静态地连接在一起以形成固定功能图形管线。每个固定功能单元或固定功能级的输出数据包设计为与下游的固定功能单元的输入数据包相匹配。更灵活的方法是在软件中定义图形管线为运行在可编程处理器上的程序。在这类管线中,利用经由规则的通用存储器系统所移动的数据而在软件中实现功能级。

【发明内容】

[0003]一方面,公开了一种图形管线。在一个实施例中,图形管线包括:(I)加速器,(2)耦连到加速器中的每一个的输入输出接口以及(3)耦连到输入输出接口并配置为图形管线的可编程功能单元的通用处理单元,该通用处理单元配置为经由输入输出接口发出矢量指令到用于可编程功能单元的矢量数据路径。
[0004]另一方面,公开了一种装置。在一个实施例中,该装置包括:(1)标量处理核心,其编程为仿真图形管线的功能单元以及(2)存储器,其直接耦连到标量处理核心并且包括配置为存储用于图形管线的加速器的输入和输出操作数的图形寄存器。
[0005]在又一方面,公开了一种制造图形处理单元的方法。在一个实施例中,该方法包括:(I)将固定功能单元耦连到输入输出接口,(2)将通用处理单元耦连到输入输出接口,
(3)对通用处理单元进行编程以仿真图形管线的功能单元以及(4)将矢量数据路径耦连到输入输出接口,其中矢量数据路径与通用处理单元功能单元相关联。
【专利附图】

【附图说明】
[0006]现在结合附图参考以下描述,其中:
[0007]图1是在其中可以实现本公开的一个或多个方面的计算系统的实施例的框图;
[0008]图2示出了根据本公开的原理所构建的图形管线的实施例的框图;以及
[0009]图3示出了根据本公开的原理所实行的制造图形管线的方法的流程图。
【具体实施方式】
[0010]在具有软件定义的功能单元的管线中,定制处理器通常用来实现可编程功能级以及经建立以处理并行代码。因此,定制处理器要求必要的修改和关联的代价以实现具体配置为处理并行代码的处理器。虽然专用处理器非常适合于高度并行的代码,但是其不适合于标量代码。
[0011]因此,本文所公开的是采用通用处理单元来实现管线的功能级的可编程图形管线。可编程图形管线有利地将功能级的矢量数据路径作为加速器并且将矢量数据路径附加到在图形管线的级间提供可编程的、非静态的连接的输入输出接口。通用处理单元是具有适合于处理标量代码的标量核心的标准处理单元。例如,通用处理单元可以是标准CPU,诸如ARM A9/A15。如本文所公开的,通用处理单元还包括处理器存储器。
[0012]加速器是用来对图形管线中的处理进行加速的硬件实现单元。加速器的示例是固定功能光栅器或纹理单元。因此,本公开提供具有通用处理单元的图形管线架构,该通用处理单元将矢量指令作为规则图形请求发出到输入输出接口中。请求是将由加速器之一所实施的工作请求。因此,可以经由将通用处理单元连接到输入输出接口的控制总线来发出矢量指令。在一个实施例中,输入输出接口是如由Albert Meixner所发明的、申请号为 13/722,901、题目为 “AN INPUT OUTPUT CONNECTOR FOR ACCESSING GRAPHICS FIXEDFUNCTION UNITS IN A SOFTWARE-DEFINED PIPELINE AND A METHOD OF OPERATING APIPELINE”的专利申请中所公开的输入输出连接器,其与本公开同日提交并作为参考并入本文。
[0013]通用处理单元包括并入本文的、具有图形寄存器的处理器存储器,该图形寄存器配置为包括用于矢量数据路径的输入和输出操作数以及图形管线的其他加速器。在一个实施例中,处理器存储器是L2高速缓存。L2或2级高速缓存是通用处理单元的多级存储架构的一部分。在一些实施例中将处理器存储器建立在通用处理单元的主板中。处理器存储器可以是随机存取存储器(RAM)或另一类型的非易失性存储器。处理器存储器用来最小化通用处理单元上的延迟损失用于在仍然在处理单元的处理核心和矢量路径之间提供大量带宽的同时,共享将通用处理单元连接到输入输出接口的数据路径。
[0014]处理器L2高速缓存的大小允许其中所包括的图形寄存器具有大数目的活动矢量寄存器。在一些实施例中,L2高速缓存的大小在大约256KB到大约2MB。在这些实施例中,大约一半的高速缓存用于寄存器,这样64K到512K的寄存器。在一个实施例中,在矢量数据路径237和239中每快速存储器访问(FMA)单元至少32个寄存器的最小值。因此,所公开的可编程图形管线使得大数目的图形线程能够容忍延迟。
[0015]通用处理单元不需要是大规模地多线程的。在一个实施例中,通用处理单元设计为支持每协作线程阵列(CTA)—个硬件线程上下文(总共4-8个)以运行每CTA管线仿真代码而不需要软件上下文切换。
[0016]在一个实施例中,由输入输出接口按块访问存储在处理器存储器上的数据,例如输入和输出操作数,来以低成本最大化带宽。在一个实施例中,块大小在64字节到256字节的范围内。
[0017]在本文所公开的一个实施例中,用于可编程图形管线的处理单元的暂存(scratch) RAM还实现为加速器。因此,多库存储器作为附加加速器提供以支持用于处理单元的暂存RAM,该处理单元要求高度发散的访问。在一些实施例中,图形管线的纹理级可以通过使用用于其数据库的暂存RAM加速器来最小化成本,该数据库也要求高度发散的访问。
[0018]本文所提供的图形管线架构有益地允许建立GPU的较低进入障碍。因为采用通用处理单元,所以避免了建立定制处理器所涉及的细节。此外,所创建的加速器大多数是无状态的并且比全定制处理器更容易设计和检验。
[0019]考虑可编程方面,管线仿真代码的大部分将运行在标准标量核心上,该标准标量核心降低所需的诸如编译器、调试器和分析器的基础设施的量并且使得比在定制标量核心上更容易达到可接受的性能。
[0020]此外,所公开的架构移除或至少减少在通用处理单元和GPU之间的障碍。因为通用处理单元具有对存储在处理器存储器中的所有矢量寄存器的直接访问权,所以可以在几个周期中进行在标量和数据并行部分之间的切换。作为附加的优势,通用处理单元将具有对耦连到输入输出接口的所有加速器的访问权并且可以将它们直接用在其他的标量代码中。
[0021]在描述新颖的可编程功能单元的各实施例和与其相关联的方法之前,将描述在其内可以将通用处理单元用在GPU中的计算系统。
[0022]图1是在其中可以实现本发明的一个或多个方面的计算系统100的一个实施例的框图。计算系统100包括系统数据总线132、中央CPU102、输入设备108、系统存储器104、图形处理子系统106和显示设备110。在替代实施例中,CPU102、图形处理子系统106的一部分、系统数据总线132或其任意组合可以集成到单个处理单元中。进一步地,图形处理子系统106的功能可以包括在芯片集中或在一些其他类型的专用处理单元或协处理器中。
[0023]如所示的,系统数据总线132连接CPU102、输入设备108、系统存储器104和图形处理子系统106。在替代实施例中,系统存储器100可以直接连接到CPU102。CPU102接收来自输入设备108的用户输入、执行存储在系统存储器104中的编程指令、对存储在系统存储器104中的数据进行操作以及将指令和/或数据(即,待完成的工作或任务)发送到图形处理单元116以完成。系统存储器104通常包括用来存储用于由CPU102和图形处理子系统106处理的编程指令和数据的动态随机存取存储器(DRAM)。图形处理子系统106从CPU102接收所传送的工作并采用其图形处理单元(GPU) 116处理工作。在该实施例中,GPUl 16完成工作以渲染并在显示设备110上显示图形图像。在其他实施例中,GPUl 16或图形处理子系统106作为整体可以用于非图形处理。
[0024]还如所示的,系统存储器104包括应用程序112、应用编程接口(API) 114和图形处理单元(GPU)驱动程序115。应用程序112生成对API114的调用以通常以图形图像序列的形式产生期望的结果集。
[0025]图形处理子系统106包括GPU116、片上GPU存储器122、片上GPU数据总线136、GPU本地存储器120和GPU数据总线134。GPUl 16配置为经由片上GPU数据总线136与片上GPU存储器122通信以及经由GPU数据总线134与GPU本地存储器120通信。GPU116可以接收由CPU102所传送的指令、处理指令以渲染图形数据和图像、以及将这些图像存储在GPU本地存储器120中。随后,GPUl 16可以在显示设备110上显示存储在GPU本地存储器120中的某些图形图像。
[0026]GPU116包括加速器117、IO接口 118和通用处理单元119。加速器117是加速通用处理单元119的处理的、硬件实现的处理块或单元。加速器117包括具有配置为实施专用功能的电路的、常规的固定功能单元。加速器117还包括与通用处理单元119相关联的矢量数据路径和多库存储器。
[0027]IO接口 118配置为将通用处理单元119耦连到加速器117中的每一个并提供在软件和硬件格式之间的必要转换以允许在通用处理单元119和加速器117之间的请求和响应的通信。IO接口 118提供具有动态定义的级间连接而非静态连接的可编程管线。IO接口118可以在通用处理单元119和加速器117之间传达各状态。输入和输出也在通用处理单元119的软件友好格式和加速器的硬件友好格式之间转译。此外,IO接口 118在软件友好格式和硬件友好格式之间转译状态。在一个实施例中,IO接口有利地在跨所有加速器117和通用处理单元119而共享的单个处理块中提供所有上述功能。因此,IO接口有利地提供包括将通用处理单元119动态连接到加速器117所必要的逻辑的单个接口以形成图形管线并管理其间的指令级通信。IO连接器包括提供双向连接的多个部件,双向连接包括到通用处理单元119的标量处理器核心的双向控制连接和到通用处理单元119的处理器存储器的双向数据连接。
[0028]通用处理单元119是具有适合于处理标量代码的标量核心的标准处理器。通用处理单元119还包括直接连接到标量处理器核心的处理器存储器。通过直接连接,处理器存储器实现为通用处理单元119的一部分使得标量处理器核心可以在不采用IO接口 118的情况下与其通信。因此,暂时转向图2,处理器存储器214和CPU210 二者均是通用处理单元119的一部分并且CPU210不通过IO接口 118访问处理器存储器214。在一个实施例中,CPU102可以实现为用于GPU116的通用处理单元并且经由系统数据总线132和IO接口118与加速器通信。因此,CPU102可以与通用处理单元119 一起使用或者代替通用处理单元119使用。
[0029]在一些实施例中通用处理单元119完全取代CPU102而不是如所示出的共存。在该配置中,在GPU本地存储器120和系统存储器104之间没有区别。其用一个共享存储器所取代。例如,可以移除CPU102和系统存储器104并且应用程序112、API114和GPU驱动程序115驻留在GPU本地存储器120中并且由通用处理单元119执行。以下关于图2来论述根据本公开的原理的图形管线的实施例的更多细节。
[0030]GPUl 16可以配备任意量的片上GPU存储器122和GPU本地存储器120,包括一个也没有,并且可以以任意组合使用片上GPU存储器122、GPU本地存储器120和系统存储器104来进行存储器操作。
[0031]片上GPU存储器122配置为包括GPU编程代码128和片上缓冲区130。可以经由系统数据总线132将GPU编程128从GPU驱动程序115传送到片上GPU存储器122。
[0032]GPU本地存储器120通常包括比较便宜的片外动态随机存取存储器(DRAM)并且还用来存储由GPU116所使用的数据和编程。如所示的,GPU本地存储器120包括帧缓冲区126。帧缓冲区126存储用于可以用来驱动显示设备110的至少一个二维表面的数据。此夕卜,帧缓冲区126可以包括多于一个的二维表面以使得GPU116可以渲染到一个二维表面,同时第二二维表面用来驱动显示设备110。
[0033]显示设备110是能够播送与输入数据信号相对应的可视图像的一个或多个输出设备。例如,可以使用阴极射线管(CRT)监视器、液晶显示器或任意其他合适的显示系统来建立显示设备。通常通过扫描出存储在帧缓冲区126中的图像数据的一帧或多帧的内容来生成到显示设备110的输入数据信号。
[0034]已经描述了在其内可以体现或实行所公开的可编程图形管线和方法的计算系统,将在GPU200的环境下描述可编程图形管线的特定实施例。
[0035]图2示出了根据本公开的原理所构建的可编程图形管线200的实施例的框图。可编程图形管线200包括通用处理单元210、IO接口 220和加速器230。
[0036]通用处理单元210是具有处理核心212和处理器存储器214的标准处理单元。处理器核心212是配置为处理标量代码的标量核心。处理器存储器214并入为通用处理单元210的一部分。处理器存储器214配置为存储将由处理核心212所处理的数据或将发送到加速器230用于处理的数据。在一个实施例中,处理器存储器214是L2高速缓存。在不同实施例中,处理器存储器214是随机存取存储器(RAM)或暂存器。
[0037]处理器存储器214包括图形寄存器堆215。图形寄存器堆215配置为包括加速器数据,该加速器数据包括用于加速器230的输入和输出操作数。图形寄存器堆215配置为包括加速器230的活动矢量堆。活动矢量是目前正在图形管线200中加以处理的矢量或矢量数据。
[0038]通用处理单元210经由两个双向连接而连接到IO接口 220。如图2所示,处理核心212经由双向控制连接213连接到IO接口 220并且处理器存储器214经由双向数据连接217连接到IO接口 220。在一个实施例中,双向控制连接213和双向数据连接217是大小确定的、位置确定的并且端接的以至少提供本文所描述的与其相关联的通信的常规连接器。
[0039]IO接口 220是将通用处理单元210连接到加速器230以形成图形管线的单个接口。IO接口 220包括配置为在通用处理单元210和加速器230之间提供非永久性的连接并且提供适当转换以允许对其间的请求和响应进行通信和处理的多个部件。在一个实施例中,IO接口 220提供在通用处理单元210和加速器230之间的动态连接用于由通用处理单元210所生成的每个请求。请求是对数据实施动作或工作的指令或命令。由处理核心212生成请求用于加速器230之一实施。作为请求的结果由特定加速器230之一生成或提供响应。与每个请求相关联的是加速器230用来处理请求的参数和状态信息。在一些实施例中,IO接口 220是图1的IO接口 118。
[0040]加速器230是配置为加速图形管线200的处理的硬件实现的单元。加速器230包括三个固定功能单元231、232和233。固定功能单元231、232、233是通常在GPU中所找到的固定功能单元。固定功能单元231、232、233中的每一个配置有专用于实施图形管线的特定功能的必要电路。在一个实施例中,固定功能单元231、232和233分别是几何协助级、表面协助级和纹理级。本领域技术人员将理解可以采用其他类型的固定功能单元作为加速器。
[0041]加速器230还包括多库存储器235、表示为237的矢量数据路径A和表示为239的矢量数据路径B。与实现在配置为操作高度并行代码的专用处理器上的可编程功能单元相反,通用处理单元210不包括矢量数据路径或暂存RAM。相反,这些部件的功能已经放置在可编程处理器之外并且作为加速器以固定格式进行放置。因此,处理核心212将矢量指令作为规则图形请求发出到特定矢量数据路径,即矢量数据路径A237或矢量数据路径B239。经由双向控制连接213将矢量指令传达到IO接口 220。IO接口 220将软件格式矢量指令转译为用于适当矢量数据路径的硬件格式并且经由具体专用于单独一个加速器230的加速器连接来向其传达矢量指令。专用加速器连接在图2中一般表示为元件240并且具体表示为元件 241、242、243、244、245 和 246。
[0042]在图2中,加速器中的两个,即固定功能单元233和多库存储器235经由单元连接器248和单元连接器249直接耦连在一起。单元连接器248、249提供在两个不同加速器230之间的访问。对于可编程图形管线200,单元连接器248、249提供通信路径以用多库存储器235传送和接收数据。因此,单元连接器248、249可以用来通过允许由固定功能单元233共享多库存储器235来减少或最小化图形管线的成本。例如,如上所述,固定功能单元233可以是通常要求存储器允许高度发散的访问的纹理级。利用单元连接器248、249,纹理级可以将多库存储器235用于其纹理高速缓存数据库。在一个实施例中,多库存储器235可以是配置为用于高度发散的访问的暂存RAM。在一个实施例中,单元连接器248、249和专用加速器连接240是大小确定的、位置确定的并且端接的以至少提供本文所描述的与其相关联的通信的常规连接器。
[0043]图3示出了根据本公开的原理所实行的制造图形管线的方法300的流程图。产生的图形管线可以是例如图2的可编程图形管线200或GPU116的图形管线。方法300始于步骤305。
[0044]在步骤310,固定功能单元耦连到输入输出接口。输入输出接口可以是IO接口 118或IO接口 220。在一个实施例中,多个固定功能单元耦连到输入输出接口。固定功能单元中的每一个可以是常规的固定功能单元。
[0045]在步骤320中,通用处理单元耦连到输入输出接口。在步骤330中,对通用处理单元进行编程以仿真图形管线的功能单元。通用处理单元包括处理核心和处理器存储器。在一个实施例中,处理核心是标量核心并且处理器存储器是L2高速缓存。双向控制和数据连接可以用来将输入输出接口耦连到通用处理单元。
[0046]在步骤340中,处理器存储器配置为用于图形管线的图形寄存器。在一个实施例中,仅处理器存储器的一部分配置为图形寄存器。
[0047]在步骤350中,矢量数据路径耦连到输入输出接口。矢量数据路径是与通用处理单元功能单元相关联的硬件实现的加速器。从可编程处理单元的处理器核心移出矢量处理允许现成的CPU用于可编程功能单元。因此,可以用CPU取代流多处理器。之后方法300在步骤330结束。
[0048]所公开的架构提供许多优势,包括建立GPU的较低进入障碍。因为架构可以采用现有的CPU,所以可以避免建立定制处理器所涉及的许多并发情况和细节。加速器大多是无状态的并且比全处理器更容易设计和检验。在软件方面,管线仿真代码的大部分可以运行在标准标量核心上,该标准标量核心降低所需的基础设施(编译器/调试器/分析器)的量并使得比定制标量核心更容易达到可接受的性能。
[0049]在更加技术的方面,所建议的架构可以移除或至少减少在CPU和GPU之间的障碍。因为CPU具有对所有矢量寄存器的直接访问权,所以将在几个周期中进行在标量和数据并行部分之间的切换。作为附带优势,CPU将具有对所有加速器的访问权并且可以将它们直接用在其他的标量代码中。
[0050]由于在所公开的架构中部件的松散耦连,所以设计是高度模块化的。对除相同的图形部件之外的CPU部分的一些修改(增加控制总线)和对除相同的图形部件之外的存储器系统的一些修改(增加数据总线到L2),可以连接到不同的CPU实现方案以命中不同的性能比。所公开的架构提供具有松散耦连的矢量和固定功能加速器的未经修改的或大部分未经修改的核心。在一些实施例中,修改包括增加控制总线以发送命令到加速器并接收响应。可以使用现有存储器实现该功能。然而专用控制总线可提高性能。修改还可以包括将高速缓存的寄存器钉住在合适的位置并阻止其被驱逐。[0051]虽然已经对本文所公开的方法进行描述并且参考按特定顺序所实施的特定步骤加以示出,但是应该理解这些步骤可以合并、细分或重新排序以形成等价的方法,而不脱离本公开的教导。因此,除非本文特别指示,步骤的顺序或分组不是本公开的限制。
[0052]上述装置、系统或方法的一部分可以由诸如常规的各种数字数据处理器或计算机所体现或实施,其中计算机可以经编程或存储软件指令序列的可执行程序以实施方法步骤中的一个或多个。这类程序的软件指令可以代表算法并且以机器可执行的形式在非暂时性数字数据存储介质上被编码,非暂时性数字数据存储介质例如磁盘或光盘、随机存取存储器(RAM)、磁性硬盘、闪存、和/或只读存储器(R0M),以使得各种类型的数字数据处理器或计算机能够实施上述方法的一个或多个中的一个、多个或所有步骤或者能够实施本文所述的装置的功能。如关于所公开的实施例所论述的,采用具有适合于处理标量代码的标量核心的通用处理单元。
[0053]所公开的实施例的一部分可以与具有非暂时性计算机可读介质的计算机存储产品相关,非暂时性计算机可读介质其上具有程序代码用于实施体现装置、系统的一部分或实行本文所阐述的方法步骤的各种计算机实现的操作。本文所使用的非暂时性是指除暂时的、传播的信号之外的所有计算机可读介质。非暂时性计算机可读介质的示例包括但不限于:诸如硬盘、软盘和磁带的磁性介质;诸如CD-ROM盘的光学介质;诸如软光盘的磁光介质;以及特别配置为存储并执行程序代码的硬件设备,诸如ROM和RAM设备。程序代码的示例既包括机器代码又包括文件,该机器代码诸如由编译器所产生,该文件包含可以由计算机使用解译器所执行的较高级代码。
[0054]与本申请相关的本领域技术人员应该理解可以对所描述的实施例做出其他和进一步的增加、删除、替代和修改。
【权利要求】
1.一种图形管线,包含: 加速器; 输入输出接口,其耦连到所述加速器中的每一个;以及 通用处理单元,其耦连到所述输入输出接口并且配置为所述图形管线的可编程功能单元,所述通用处理单元配置为经由所述输入输出接口发出矢量指令到用于所述可编程功能单元的矢量数据路径。
2.根据权利要求1所述的图形管线,其中所述通用处理单元包括具有配置为存储用于所述矢量数据路径的输入和输出操作数的图形寄存器的存储器。
3.根据权利要求2所述的图形管线,其中所述存储器是二级高速缓存。
4.根据权利要求2所述的图形管线,其中所述通用处理单元具有对所述图形寄存器的直接访问权。
5.根据权利要求1所述的图形管线,其中所述通用处理单元发出所述矢量指令作为请求。
6.根据权利要求1所述的图形管线,其中所述加速器包括所述矢量数据路径并且所述通用处理单元具有标准标量核心。
7.一种装置,包含: 标量处理核心,其编程为仿真图形管线的功能单元;以及 存储器,其直接耦连到所述标量处理核心并且包括配置为存储用于所述图形管线的加速器的输入和输出操作数的图形寄存器。
8.根据权利要求7所述的装置,其中所述标量处理核心不包括与所述功能单元相关联的矢量数据路径。
9.根据权利要求7所述的装置,其中所述标量处理核心支持每协作线程阵列一个硬件线程上下文。
10.一种采用通用处理单元制造图形处理单元的方法,包含: 将固定功能单元耦连到输入输出接口; 将通用处理单元耦连到所述输入输出接口; 对所述通用处理单元进行编程以仿真图形管线的功能单元;以及将矢量数据路径耦连到所述输入输出接口,其中所述矢量数据路径与所述通用处理单元功能单元相关联。
【文档编号】G06T1/20GK103886546SQ201310138563
【公开日】2014年6月25日 申请日期:2013年4月19日 优先权日:2012年12月21日
【发明者】阿尔贝特·迈克斯纳 申请人:辉达公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1