高效细分高速缓存的制作方法

文档序号:11334058阅读:315来源:国知局
高效细分高速缓存的制造方法与工艺

相关申请的交叉引用

本申请要求于2014年9月25日提交的申请号为14/495926的美国非临时专利申请的优先权的利益。



背景技术:

在图形计算架构的操作期间,三维(3d)流水线可能接收要渲染的场景的粗糙几何模型。该粗糙几何模型可能包括具有几何形状(例如,三角形或矩形)的“碎片”,以及定义在该场景中每个碎片要被渲染得多么精细的一个或多个细分因子(例如,较高的细分因子可能导致更多形状和更精细的渲染)。该3d流水线可能基于该细分因子使用细分器定义该碎片内的多个域点并将该碎片有效地组织进在域点处具有顶点的更小的几何形状的网格中。该细分器的输出可被发送至域着色器,该域着色器将域点转换成顶点(例如,计算顶点四维/4d位置坐标、纹理坐标和颜色属性)域点并将细分的碎片转换成3d拓扑(例如,三角形条带拓扑)的集合以由该流水线进一步处理和渲染。

一种操作该域着色器的方式可为在单次扫描中着色碎片的所有域点。这种方式可能涉及相当大量着色域点的同时存储。另一种方式可为使用单个、更小的域点高速缓存以当指定碎片的各区域被域着色器处理时存储少于整个集合的域点。然而,那种方式可能引发冗余的域点着色开销,因为某些域点可能典型地在该碎片的各区域间共享。因此,除非该域点高速缓存相当大,在相邻区域被细分的时候,这些着色结果可能被从高速缓存中丢弃。因此,任一方式都可能消耗相当大量的存储和/或昂贵的次优/低效性能,特别是对于具有相当大量域点的碎片(例如,中到高的细分因子)。

附图说明

通过阅读下述说明和附加的权利要求并通过参考附图,各实施例的多种优点对于本领域技术人员而言将变得明显,在附图中:

图1是根据一实施例的三角形碎片的示例的说明;

图2是根据一实施例的多个域点的示例的说明;

图3是根据一实施例的矩形碎片的示例的说明;

图4是根据一实施例的操作3d流水线的方法的示例的流程图;

图5是根据一实施例的具有带域着色器的3d流水线的计算系统的示例的框图;

图6-8是根据一实施例的数据处理系统的概览的示例的框图;

图9是根据一实施例的图形处理引擎的示例的框图;

图10-12是根据一实施例的执行单元的各示例的框图;

图13是根据一实施例的图形流水线的示例的框图;

图14a-14b是根据一实施例的图形流水线编程的各示例的框图;以及

图15是根据一实施例的图形软件架构的示例的框图。

具体实施方式

图1示出了可表示要由图形计算架构渲染的三维(3d)场景的一部分的三角形的未细分的碎片10。该3d场景可能为例如游戏、动画等的一部分。3d流水线的细分器(未示出)可从该流水线的上游级和/或适当的数据接口(举例来说诸如网络控制器、存储器控制器、总线等)接收该碎片10。该细分器也可能接收定义在该场景中要将该碎片10渲染得多么精细的一个或多个细分因子。在说明的示例中,该碎片10包括位于该碎片10的周界周围的多个过渡区域12(12a-12c)以及多个内部区域14(14a-14c)。此外,可从区域12、14形成多个区域集合。举例来说,第一区域集合可由第一过渡区域12a和第一内部区域14a构成,第二区域集合可由第二过渡区域12b和第二内部区域14b构成,第三区域集合可由第三过渡区域12c和第三内部区域14c构成等。

继续参考图1和2,示出了细分的碎片18,其中已经基于与未细分碎片10相关的细分因子定义了域点。在示出的示例中,该过渡区域12被分配与内部区域14不同的细分因子,以便获得讨论中的场景的适当的3d效果。该细分的碎片18因此可被表示为在域点处具有顶点的更小几何形状的网格,其中该示出的过渡区域12具有比内部区域14更大量的域点和几何形状,这归因于过渡区域12中更高的细分因子。

此外,在示出的示例中,某些域点在多个区域集合之间共享而其他的不共享。举例来说,域点20-23在第一区域集合和第二区域集合之间共享,域点23-26在第二区域集合和第三区域集合之间共享,并且域点23和27-29在第三区域集和第一区域集合之间共享。如将更具体讨论的,该细分器可能顺序通过区域集合,细分每个选择的区域并将结果传递至域着色器,域着色器又可使用分区高速缓存来着色域点。

特别值得注意的是,由细分器使用的序列可能最大化在跨细分的碎片18的区域集合时遭遇共享的域点的可能性。举例来说,一种这样的次序可能为细分包括第一过渡区域12a和第一内部区域14a的第一区域集合,然后细分包括第二过渡区域12b和第二内部区域14b的第二区域集合,然后细分包括第三过渡区域12c和第三内部区域14c的第三区域集合。这一次序可确保在该序列期间的所有时刻至少一个共享域点的着色数据会驻留在该域着色器的分区高速缓存中。

举例来说,当从第一区域集合顺序至第二区域集合时,共享域点20-23的着色数据会驻留在该域着色器的分区高速缓存中。此外,当从第二区域集合顺序至第三区域集合时,共享域点23-26的着色数据会驻留在域着色器的分区高速缓存中,等等。该细分器可能使用在将域点传递至域着色器之前该域点是否在该细分的碎片18的多个区域集合之间共享的指示符来标记每个域点。

图3示出了可表示要由图形计算架构渲染的3d场景的一部分的矩形未细分的碎片40。如已经提到的,细分器可接收该未细分碎片40,连同一个或多个细分因子,并使用该细分因子生成域点以及在域点处具有顶点的更小几何形状的网格。在示出的示例中,碎片40包括多个过渡区域42(42a-42d)以及内部区域44。如关于三角形未细分的碎片10(图1)所提到的,可从区域42、44形成多个区域集合。举例来说,第一区域集合可由第一过渡区域42a、内部区域44和第二过渡区域42b构成,第二区域集合可由第三过渡区域42c构成,以及第三区域集合可由第四过渡区域42d构成。此外,该细分器可以按最大化从碎片40的一个区域至下一区域遭遇共享域点的可能性的次序依次通过未细分碎片40的区域集合。举例来说,一种这种次序可能要细分第一区域集合,然后细分第二区域集合,之后细分第三区域集合。

图4示出了一种操作3d流水线的方法46。方法46可在一个或多个模块中实现,实现为存储在机器或计算机可读存储介质中的逻辑指令的集合,该介质诸如随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、闪存等;实现为可配置逻辑,举例来说,诸如可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑设备(cpld);实现为使用电路技术的固定功能逻辑硬件,举例来说,诸如专用集成电路(asic)、互补金属氧化物半导体(cmos)或者晶体管-晶体管逻辑(ttl)技术,或者它们的任意组合。举例来说,实施方法46中示出的操作的计算机程序代码可能以一种或多种编程语言的任意组合撰写,包括面向对象的编程语言(诸如c++等)以及传统的过程编程语言(诸如“c”编程语言或类似的编程语言)。此外,方法46可使用本文提及的任何电路技术实现。

示出的处理块48提供了在细分器处基于未细分的碎片和与3d场景相关的一个或多个细分因子生成包含多个域点的细分的碎片。块48可涉及以最大化跨区域时遭遇共享域点的可能性的次序顺序通过未细分的碎片的区域,如已经提到的。在块50处,一个或多个标记可与每个域点相关,其中该一个或多个标记指示该一个或多个域点是否由该细分的碎片中的多个区域集合共享。

块52在域着色器处可能以由细分器提供的顺序针对细分的碎片的每个区域接收域点以及它们的相关标记,其中在块54可进行是否每个域点在细分的碎片的多个区域集合间共享的区域确定。在块54处的区域确定因此可考虑由细分器分配至域点的标记。如果在块56处确定共享一个或多个域点,则示出的块58为共享的着色数据询问区域间高速缓存,其中,该区域间高速缓存专用于共享的域点。块60可确定高速缓存命中是否在该区域间高速缓存中发生。如果是,则可产生在区域间高速缓存中遭遇的对共享着色数据的一个或多个引用并与块62中讨论的一个或多个域点相关联。如果在块60中没有检测到高速缓存命中,则示出的块65通过将域点转换为顶点(例如,计算顶点4d位置坐标、纹理坐标以及颜色属性)来着色一个或多个域点。

特别值得注意的是,参考之前生成的共享着色数据可以比着色域点明显地更快和更高效,这归因于与着色域点相关的基础着色器和存储器操作。此外,使用单独的区域间高速缓存来存储共享着色数据可以在不使用单个大的高速缓存的情况下实现要避免的冗余的着色操作。确实,区域间高速缓存的大小可能为仅保持细分的碎片中沿着区域边缘的域点的最大数量的大约两倍并且仍然足够大以包含该序列中来自在前区域的所有共享域点的着色数据。结果,示出的方法确保共享的域点仅被着色一次。

如果在块56处确定讨论中的一个或多个域点不在细分的碎片的多个区域集合之间共享,则示出的块66向区域内高速缓存询问未共享着色数据,其中该区域内高速缓存专用于非共享域点。如果在块68处检测到区域内高速缓存的高速缓存命中,则可在块70处生成对非共享着色数据的一个或多个引用并与一个或多个域点相关。否则,示出的块65着色域点,如已经讨论的。

图5示出了计算系统72(例如,服务器、台式计算机、平板计算机、可变平板计算机、智能手机、移动因特网设备/mid、游戏控制台、媒体播放器、可穿戴计算机等),其中3d流水线86的细分器76从一个或多个上游级78和/或数据接口74(举例来说诸如网络控制器、存储器控制器、总线等)获取与3d场景相关的未细分碎片以及细分因子。示出的细分器76包括区域排序器80,配置为最大化跨该碎片的各区域遭遇共享域点的可能性。在一个示例中,过渡区域细分器82标记来自碎片的过渡区域的域点,并且内部区域细分器84标记来自碎片的内部区域的域点,其中该标记指示该域点是否在碎片的多个区域集合间共享。

示出的3d流水线86还包括具有分区高速缓存结构90(90a-90e)和着色器逻辑92(它可包括用于着色数据、操作数等的额外存储)的域着色器88。该高速缓存结构90可包括专用于不在细分的碎片的多个区域集合之间共享的域点的区域内高速缓存90a以及专用于在细分的碎片的多个区域集合之间共享的域点的区域间高速缓存90b。区域内高速缓存90a和区域间高速缓存90b两者的大小可能为保持细分的碎片中沿着区域边缘的域点的最大数量的大约两倍。此外,高速缓存90a、90b可采用最近最少访问(lra)替换策略,虽然如此,如果完全被分配,它们可能足够大以同时保持最差情况的域点数。

在一个示例中,高速缓存结构90还包括标记处理器90c,以识别与域点相关的标记,其中高速缓存控制器90d可进行域点是否在细分的碎片的多个区域集合之间共享的区域确定。该区域确定可基于由细分器分配至域点的一个或多个标记。如果给定域点不在细分的碎片的多个区域集合之间共享,则高速缓存控制器90d可对于不共享的着色数据自动询问该区域内高速缓存90a,并且如果该一个或多个域点在该细分的碎片的多个区域集合之间共享,则对于共享着色数据自动询问区域间高速缓存90b。

示出的高速缓存结构90还包括加速器90e,以当高速缓存命中发生在区域间高速缓存中时生成对共享的着色数据的一个或多个引用,并将该一个或多个引用与适当的域点相关。此外,该加速器90e当高速缓存命中在区域内高速缓存中发生时可生成对非共享着色数据的一个或多个引用并将该一个或多个引用与适当的域点相关。当高速缓存命中不在区域间高速缓存或区域内高速缓存两者任一中发生时,着色器逻辑92可能着色讨论中的域点。该域着色器88可输出3d拓扑的集合至流水线86的一个或多个下游级94,其中获得的3d场景可被传递至显示硬件96以视觉呈现至用户。

综述-图6-8

图6是根据一实施例的数据处理系统100的框图。该数据处理系统100包括一个或多个处理器102和一个或多个图形处理器108,并可能为单处理器桌面系统、多处理器工作站系统或者具有大量处理器102或处理器核107的服务器系统。在一个实施例中,数据处理系统100是在移动、手持或嵌入式设备中使用的片上系统(soc)集成电路。

数据处理系统100的一个实施例可包括或结合在基于服务器的游戏平台、游戏控制台中,包括游戏和媒体控制台、移动游戏控制台、手持游戏控制台或者线上游戏控制台。在一个实施例中,数据处理系统100是移动电话、智能电话、平板计算设备或移动因特网设备。数据处理系统100还可包括、耦合至或者集成于可穿戴设备,诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或者虚拟现实设备。在一个实施例中,数据处理系统100是具有一个或多个处理器102和由一个或多个图形处理器108生成的图形界面的电视或机顶盒设备。

该一个或多个处理器102每一个包括一个或多个处理器核107以处理指令,当被执行时,该指令执行用于系统和用户软件的操作。在一个实施例中,一个或多个处理器核107的每一个被配置为处理特定指令集109。该指令集109可有助于复杂指令集计算(cisc)、精简指令集计算(risc)或通过超长指令字(vliw)的计算。多个处理器核107可能每一个都处理不同的指令集109,它可包括有助于其他指令集的仿真的指令。处理器核107还可包括其他处理设备,诸如数字信号处理器(dsp)。

在一个实施例中,处理器102包括高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在一个实施例中,高速缓存存储器在处理器102的多个组件中共享。在一个实施例中,处理器102还使用外部高速缓存(例如,3级(l3)高速缓存或末级高速缓存(llc))(未示出),它可使用已知的高速缓存一致性技术在处理器核107中共享。寄存器文件106额外地包含在处理器102中,它可能包括用于存储不同类型数据(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)的不同类型的寄存器。某些寄存器可为通用寄存器,而其他寄存器可特定于处理器102的设计。

处理器102耦合至处理器总线110以在处理器102和系统100中的其他组件之间传输数据信号。系统100使用示例性“集线器”系统架构,包括存储器控制器集线器116和输入输出(i/o)控制器集线器130。存储器控制器集线器116有助于存储器设备和系统100的其他组件之间的通信,而i/o控制器集线器(ich)130提供通过本地i/o总线至i/o设备的连接。

存储器设备120可为动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、闪存设备或具有适当性能以用作过程存储器的一些其他存储器设备。存储器120可存储当处理器102执行过程时使用的数据122和指令121。存储器控制器集线器116还与可选的外部图形处理器112耦合,它可能与处理器102中的一个或多个图形处理器108通信以执行图形和媒体操作。

ich130使得外围设备能够通过高速i/o总线连接至存储器120和处理器102。该i/o外围设备包括音频控制器146、固件接口128、无线收发器126(例如,wifi、蓝牙)、数据存储设备124(例如,硬盘驱动器、闪存等)以及遗留i/o控制器以将遗留(例如,个人系统2(ps/2))设备耦合至该系统。一个或多个通用串行总线(usb)控制器142连接输入设备,诸如键盘和鼠标144组合。网络控制器134也可耦合至ich130。在一个实施例中,高性能网络控制器(未示出)耦合至处理器总线110。

图7是具有一个或多个处理器核202a-n、集成存储器控制器214以及集成的图形处理器208的处理器200的实施例的框图。处理器200可包括直到并包含由虚线框表示的额外核202n的额外的核。核202a-n的每一个包括一个或多个内部高速缓存单元204a-n。在一个实施例中,每个核还有权访问一个或多个共享的高速缓存单元206。

内部高速缓存单元204a-n和共享的高速缓存单元206表示处理器200内部的高速缓存存储器等级。该高速缓存存储器等级可包括每个核内的至少一个等级的指令和数据高速缓存以及一个或多个等级的共享中级高速缓存,诸如2级(l2)、3级(l3)、4级(l4)或其他等级的高速缓存,其中在外部存储器之前的最高等级的高速缓存被分类为末级高速缓存(llc)。在一个实施例中,高速缓存一致性逻辑维持多个高速缓存单元206和204a-n之间的一致性。

处理器200还可包括一个或多个总线控制器单元216的集合以及系统代理210。该一个或多个总线控制器单元216管理外围总线的集合,诸如一个或多个外围组件互连总线(例如,pci、pci快速)。系统代理210为多个处理器组件提供管理功能性。在一个实施例中,该系统代理210包括一个或多个集成存储器控制器214以管理对多个外部存储器设备(未示出)的访问。

在一个实施例中,核202a-n的一个或多个包括对同时多线程的支持。在这种实施例中,系统代理210包括用于在多线程处理期间协调和操作核202a-n的组件。系统代理210可额外地包括电力控制单元(pcu),它包括逻辑和组件以调节核202a-n和图形处理器208的功率状态。

处理器200额外包括图形处理器208以执行图形处理操作。在一个实施例中,图形处理器208与共享高速缓存单元的集合206以及包括一个或多个集成存储器控制器214的系统代理单元210耦合。在一个实施例中,显示器控制器211与图形处理器208耦合以驱动图形处理器输出至一个或多个耦合的显示器。显示器控制器211可为与图形处理器通过至少一个互连耦合的分离的模块,或者可集成在图形处理器208或系统代理210内。

在一个实施例中,基于环的互连单元212用于耦合处理器200的内部组件,然而可使用替换的互连单元,诸如点对点互连、交换互连或其他技术,包括本领域公知的各技术。在一个实施例中,图形处理器208通过i/o链接213与环互连212耦合。

示例性的i/o链接213表示i/o互连的多种变型的至少一个,包括有助于多个处理器组件和诸如edram模块的高性能嵌入式存储器模块218之间的通信的封装上i/o互连。在一个实施例中,核202a-n的每一个和图形处理器208将嵌入式存储器模块218用作共享末级高速缓存。

在一个实施例中,核202a-n是执行相同指令集架构的同构核。在另一实施例中,核202a-n在指令集架构(isa)方面是异构的,其中核202a-n的一个或多个执行第一指令集,同时其他核的至少一个执行第一指令集的子集或不同的指令集。

处理器200可为使用多种工艺技术的任意一种的一个或多个基板的一部分或在其上实现,举例来说,互补金属氧化物半导体(cmos)、双极结型/互补金属氧化物半导体(bicmos)或n型金属氧化物半导体逻辑(nmos)。此外,处理器200可实现在一个或多个芯片上或实现为除了其他组件外具有示出组件的片上系统(soc)集成电路。

图8是可能为独立图形处理单元或可能为与多个处理核集成的图形处理器的图形处理器300的一个实施例的框图。在一个实施例中,图形处理器通过至图形处理器上的寄存器的存储器映射的i/o接口并通过放在处理器存储器中的命令通信。图形处理器300包括存储器接口314以访问存储器。存储器接口314可为至本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或系统存储器的接口。

图形处理器300还包括显示控制器302以驱动显示输出数据至显示装置320。显示控制器302包括用于显示器的一个或多个覆盖平面以及视频或用户界面元素的多个层的组分的硬件。在一个实施例中,图形处理器300包括视频编解码器引擎306以编码、解码或转码媒体至一个或多个媒体编码格式,从一个或多个媒体编码格式编码、解码或转码媒体,或在一个或多个媒体编码格式之间编码、解码或转码媒体,媒体编码格式包括但不限于,动态图像专家组(mpeg)格式,诸如mpeg-2、先进视频编码(avc)格式诸如h.264/mpeg-4avc,以及电影电视工程师协会(smpte)421m/vc-1,以及联合图像专家组(jpeg)格式诸如jpge,以及动态jpeg(mjpeg)格式。

在一个实施例中,图形处理器300包括块图像传输(blit)引擎304以执行二维(2d)光栅化器操作包括,例如,位-边界块传输。然而,在一个实施例中,使用图形-处理引擎(gpe)310的一个或多个组件执行2d图形操作。图形处理引擎310是用于执行图形操作的计算引擎,包括三维(3d)图形操作和媒体操作。

gpe310包括用于执行3d操作的3d流水线312,诸如使用作用于3d原始形状(例如,矩形、三角形等)上的处理功能来渲染三维图像和场景。3d流水线312包括在元素内执行多种任务的可编程的和固定的功能元素和/或生成执行线程至3d/媒体子系统315。虽然3d流水线312可用于执行媒体操作,gpe310的一实施例还包括特定用于执行媒体操作的媒体流水线316,诸如视频后处理和图像增强。

在一个实施例中,媒体流水线316包括固定的功能或可编程的逻辑单元以执行一个或多个专门的媒体操作,诸如视频解码加速、视频解交织以及视频编码加速代替或者代表视频编解码器引擎306。在一个实施例中,媒体流水线316额外包括线程生成单元以生成在3d/媒体子系统315上执行的线程。生成的线程在包含于3d/媒体子系统中的一个或多个图形执行单元上执行用于媒体操作的计算。

3d/媒体子系统315包括用于执行由3d流水线312和媒体流水线316生成的线程的逻辑。在一个实施例中,流水线发送线程执行请求至3d/媒体子系统315,它包括线程分派逻辑以仲裁和分派该多个请求至可用的线程执行资源。该执行资源包括图形执行单元阵列以处理该3d和媒体线程。在一个实施例中,该3d/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,该子系统还包括共享存储器,包括寄存器和可寻址存储器,以在线程间共享数据以及存储输出数据。

3d/媒体处理-图9

图9是用于图形处理器的图形处理引擎410的一实施例的框图。在一个实施例中,图形处理引擎(gpe)410是图8中示出的gpe310的一版本。gpe410包括3d流水线412和媒体流水线416,它们每一个可与图8的3d流水线312和媒体流水线316不同或相似。

在一个实施例中,gpe410与命令流传输器403耦合,它提供指令流至gpe3d和媒体流水线412、416。命令流传输器403耦合至存储器,它可为系统存储器,或内部高速缓存存储器和共享高速缓存存储器的一个或多个。命令流传输器403从存储器接收命令并发送该命令至3d流水线412和/或媒体流水线416。3d和媒体流水线通过经由各自流水线内的逻辑执行操作或通过将一个或多个执行线程分派至执行单元阵列414来处理命令。在一个实施例中,执行单元阵列414是可扩展的,这样基于gpe410的目标功率和性能级别,该阵列包括可变数量的执行单元。

采样引擎430与存储器(例如,高速缓存存储器或系统存储器)和执行单元阵列414耦合。在一个实施例中,采样引擎430为可扩展执行单元阵列414提供允许该执行单元阵列414从存储器读取图形和媒体数据的存储器访问机制。在一个实施例中,采样引擎430包括执行媒体的专用图像采样操作的逻辑。

在采样引擎430中的专用媒体采样逻辑包括降噪/解交织模块432、运动估算模块434以及图形缩放和滤波模块436。该降噪/解交织模块432包括在解码的视频数据上执行降噪或解交织算法的一个或多个的逻辑。该解交织逻辑将交织的视频内容的交替字段组合在单个视频帧中。该降噪逻辑从视频和图像数据中减少或移除数据噪音。在一个实施例中,该降噪逻辑和解交织逻辑基于视频数据中检测的运动量是运动自适应的并使用空间或时间滤波。在一个实施例中,该降噪/解交织模块432包括专用运动检测逻辑(例如,在运动估算引擎434内)。

该运动估算引擎434通过执行视频加速功能(诸如视频数据的运动向量估算和预测)为视频操作提供硬件加速。运动估算引擎确定描述在连续视频帧之间的图像数据的变换的运动向量。在一个实施例中,图形处理器媒体编解码器使用该视频运动估算引擎434以在视频上执行宏块级别的操作,否则可能对于使用通用处理器执行来说是计算密集型的。在一个实施例中,动作估算引擎434通常对于图像处理器组件是可用的,以帮助视频解码以及对于视频数据内的动作的方向或量级敏感的或者自适应的处理功能。

图像缩放和滤波模块436执行图像处理操作以增强生成的图像和视频的视觉质量。在一个实施例中,缩放和滤波模块436在将数据提供至执行单元阵列414之前的采样操作期间处理图像和视频数据。

在一个实施例中,图形处理引擎410包括数据端口444,它为图形子系统提供访问存储器的额外机制。数据端口444有助于用于包括渲染目标写入、恒定缓冲器读取、暂时存储器空间读取/写入以及媒体表面访问的操作的存储器访问。在一个实施例中,数据端口444包括高速缓存存储器空间以高速缓存对存储器的访问。高速缓存存储器可为单个数据高速缓存或为通过数据端口访问存储器的多个子系统分割成多个高速缓存(例如,渲染缓冲器高速缓存、恒定缓冲器高速缓存等)。在一个实施例中,在执行单元阵列414中的执行单元上执行的线程通过耦合图形处理引擎410的子系统的每一个的数据分布互连交换消息来与该数据端口通信。

执行单元-图10-12

图10是图形处理器的另一实施例的框图。在一个实施例中,该图形处理器包括环形互连502、流水线前端504、媒体引擎537以及图形核580a-n。该环形互连502将图形处理器耦合至其他处理单元,包括其他图形处理器或一个或多个通用处理器核。在一个实施例中,该图形处理器是集成在多核处理系统内的很多处理器其中一个。

图形处理器通过环形互连502接收成批命令。进来的命令由流水线前端504中的命令流传输器503解释。该图形处理器包括可扩展执行逻辑以通过图形核580a-n执行3d几何结构处理和媒体处理。对于3d几何结构处理命令,该命令流传输器503将该命令提供给几何结构流水线536。对于至少某些媒体处理命令,命令流传输器503将该命令提供给视频前端534,它与媒体引擎537耦合。媒体引擎537包括用于视频和图像后处理的视频质量引擎(vqe)530以及多种格式编码/解码(mfx)533引擎以提供硬件加速的媒体数据编码和解码。几何结构流水线536和媒体引擎537每个都为由至少一个图形核580a提供的线程执行资源生成执行线程。

图形处理器包括可扩展线程执行资源特征模块化核580a-n(有时称作核片),每个都具有多个子核550a-n、560a-n(有时称作核子片)。图形处理器可具有任意数量的图形核580a到580n。在一个实施例中,图形处理器包括具有至少一个第一子核550a和第二核子核560a的图形核580a。在另一实施例中,图形处理器是具有单个子核(例如,550a)的低功率处理器。在一个实施例中,图形处理器包括多个图形核580a-n,每个包括第一子核550a-n的集合和第二子核560a-n的集合。第一子核550a-n的集合中的每个子核至少包括执行单元552a-n和媒体/纹理采样器554a-n的第一集合。第二子核560a-n的集合中的每个子核至少包括执行单元562a-n和采样器564a-n的第二集合。在一个实施例中,每个子核550a-n、560a-n共享一组共享资源570a-n。在一个实施例中,该共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可包含在图形处理器的多种实施例中。

图11示出了包括在图形处理引擎的一个实施例中采用的处理元件阵列的线程执行逻辑600。在一个实施例中,线程执行逻辑600包括像素着色器602、线程分发器604、指令高速缓存606、包括多个执行单元608a-n的可扩展执行单元阵列、采样器610、数据高速缓存612以及数据端口614。在一个实施例中,包含的组件通过链接至每个组件的互连交换结构互连。线程执行逻辑600包括至存储器的一个或多个连接,诸如系统存储器或高速缓存存储器,通过指令高速缓存606、数据端口614、采样器610以及执行单元阵列608a-n的一个或多个。在一个实施例中,每个执行单元(例如608a)是能够执行多个同时线程并且对于每个线程并行处理多个数据元素的独立的向量处理器。执行单元阵列608a-n包括任何数量的独立执行单元。

在一个实施例中,执行单元阵列608a-n主要用于执行“着色器”程序。在一个实施例中,阵列608a-n中的执行单元执行包括很多标准3d图形着色器指令的本地支持的指令集,这样来自图形库(例如,direct3d和opengl)的着色器程序在最小变换的情况下执行。该执行单元支持顶点和几何结构处理(例如,顶点程序、几何结构程序、顶点着色器),像素处理(例如,像素着色器、碎片着色器)以及通用处理(例如,计算和媒体着色器)。

执行单元阵列608a-n中的每个执行单元在数据元素阵列上操作。数据元素的数量是“执行尺寸”,或者指令的通道数。执行通道是用于数据元素访问、掩码和指令内的流控制的执行的逻辑单元。通道的数量可独立于特定图形处理器的物理alu或fpu的数量。执行单元608a-n支持整数和浮点数据类型。

执行单元指令集包括单指令多数据(simd)指令。多个数据元素可作为打包数据类型存储在寄存器中并且执行单元将基于该元素的数据大小处理该多个元素。举例来说,当在256位宽的向量上操作时,该向量的256位被存储在寄存器中并且执行单元操作于该向量作为四个独立的64位打包数据元素(四字(qw)大小的数据元素),八个独立的32位打包数据元素(双字(dw)大小的数据元素),十六个独立的16位打包数据元素(字(w)大小数据元素),或者三十二个独立的8位数据元素(字节(b)大小数据元素)。然而,不同的向量宽度和寄存器尺寸都是可能的。

在线程执行逻辑600中包括一个或多个内部指令高速缓存(例如606)以高速缓存用于执行单元的线程指令。在一个实施例中,包括一个或多个数据高速缓存(例如612)以在线程执行期间高速缓存线程数据。包括采样器610以提供用于3d操作的纹理采样以及用于媒体操作的媒体采样。在一个实施例中,采样器610包括专用纹理或媒体采样功能以在提供采样数据至执行单元之前的采样过程期间处理纹理或媒体数据。

在执行期间,图形和媒体流水线通过线程生成和分派逻辑发送线程初始化请求至线程执行逻辑600。线程执行逻辑600包括仲裁来自图形和媒体流水线的线程初始化请求以及在一个或多个执行单元608a-n上实例化请求的线程的本地线程分派器604。举例来说,几何结构流水线(例如,图10的536)分派顶点处理、细分或者几何结构处理线程至线程执行逻辑600。线程分派器604也可处理来自正执行的着色程序的运行时间线程生成请求。

一旦一组集合对象已经被处理并光栅化为像素数据,像素着色器602被调用以进一步计算输出信息并使得结果被写至输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一个实施例中,像素着色器602计算要跨光栅化对象插入的多个顶点的属性值。该像素着色器602然后计算提供api的像素着色程序。为了执行该像素着色程序,像素着色器602通过线程分派器604分派线程至执行单元(例如,608a)。像素着色器602使用采样器610中的纹理采样逻辑以访问存储在存储器中的纹理地图中的纹理数据。纹理数据以及输入几何结构数据的算术运算计算每个几何碎片的像素颜色数据,或者丢弃一个或多个像素不进行进一步处理。

在一个实施例中,数据端口614为输出处理的数据至存储器以在图形处理器输出流水线上处理的线程执行逻辑600提供存储器访问机制。在一个实施例中,数据端口614包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存612)以高速缓存数据,以通过该数据端口进行存储器访问。

图12是根据一实施例示出了图形处理器执行单元指令格式的框图。在一个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框示出了通常包含在执行单元指令中的组件,而虚线包括可选的或者仅仅包含在指令子集中的组件。描述示出的指令格式是宏指令,由于它们是提供至处理单元的指令,与一旦该指令被处理就产生于指令解码的微指令相反。

在一个实施例中,图形处理器执行单元本地支持128位格式710的指令。基于选择的指令、指令选项以及操作数的数量,64位压缩指令格式730对于某些指令是可用的。本地128位格式710提供对所有指令选项的访问,而某些选项和操作被限制为64位格式730。64位格式730的可用的本地指令随着实施例而改变。在一个实施例中,使用索引字段713中的索引值的集合,该指令被部分压缩。该执行单元硬件基于该索引值引用压缩表的集合并使用该压缩表输出来重建128位格式710的本地指令。

对于每种格式,指令操作码712定义执行单元要执行的操作。执行单元跨每个操作数的多个数据元素并行执行每个指令。举例来说,响应于增加指令,执行单元跨表示纹理元素或照片元素的每个颜色通道执行同时的增加操作。默认地,执行单元跨操作数的所有数据通道执行每个指令。指令控制字段714实现覆盖某些执行选项的控制,诸如通道选择(例如,预测)和数据通道顺序(例如,拌合)。对于128位指令710,执行大小字段716限制将并行执行的数据通道的数量。该执行大小字段716不可用于64位压缩指令格式730。

某些执行单元指令具有多达三个操作数,包括两个源操作数,src0720、src1722,以及一个目标718。在一个实施例中,执行单元支持双目标指令,其中一个目标是隐含的。数据操纵指令可具有第三源操作数(例如,src2724),其中指令操作码712确定源操作数的数量。指令的最后源操作数可为通过该指令传递的立即(例如,硬编码的)值。

在一个实施例中,基于操作码位-字段来为指令分组以简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。示出的该精确的操作码分组是示例性的。在一个实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,mov,cmp)。该移动和逻辑组742共享五个最高有效位(msb),其中移动指令是0000xxxxb(例如,0x0x)的形式并且逻辑指令是0001xxxxb的形式(例如,0x01)。流控制指令组744(例如,call,jmp)包括0010xxxxb(例如,0x20)形式的指令。混杂指令组746包括指令的混合,包括0011xxxxb形式的同步指令(例如,wait,send)。并行数学指令组748包括0100xxxxb(例如,0x40)形式的分量方式的算数指令(例如,add,mul)。并行数学组748跨数据通道并行执行算术运算。向量数学组750包括0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。该向量数学组执行算术,诸如向量操作数的点积计算。

图形流水线-图13

图13是包括图形流水线820、媒体流水线830、显示流水线840、线程执行逻辑850、以及渲染输出流水线870的图形处理器的另一实施例的框图。在一个实施例中,图形处理器是包括一个或多个通用处理核的多核处理系统内的图形处理器。该图形处理器由写入至一个或多个控制寄存器(未示出)的寄存器或者通过环形互连802发布至图形处理器的命令控制。该环形互连802耦合该图形处理器至其他处理组件,诸如其他图形处理器或通用处理器。来自于环形互连的命令由将指令提供给图形流水线820或媒体流水线830的独立组件的命令流传输器803解释。

命令流传输器803指示从存储器读取顶点数据并执行由命令流传输器803提供的顶点处理命令的顶点索取器805组件的操作。顶点索取器805提供顶点数据至顶点着色器807,它对每个顶点执行坐标空间变换和提亮操作。该顶点索取器805和顶点着色器807通过线程分派器831分派执行线程至执行单元852a、852b来执行顶点处理指令。

在一个实施例中,执行单元852a、852b是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。执行单元852a、852b具有专用于每个阵列或在阵列间共享的附连的l1高速缓存851。该高速缓存可被配置为被分区以在不同分区中包含数据和指令的数据高速缓存、指令高速缓存或单个高速缓存。

在一个实施例中,图形流水线820包括细分组件以执行3d对象的硬件加速细分。可编程外壳着色器811配置该细分操作。可编程域着色器817提供细分输出的后端评价。细分器813在外壳着色器811的指导下操作并包括特定用途逻辑以基于作为至图形流水线820的输入提供的粗糙的几何模型生成详细的几何对象的集合。在一个实施例中,细分器813和域着色器817与相对于图5描述的一样。如果未使用细分,则该细分组件811、813、817可被旁路。

完整的几何对象可通过分派至执行单元852a、852b的一个或多个线程由几何结构着色器819处理,或者可直接进行至剪切器829。几何结构着色器在整个几何对象上操作,而不是如图形流水线的在前级中的顶点或顶点的碎片。如果细分被禁用,则该几何结构着色器819从顶点着色器807接收输入。当细分单元被禁用时,几何结构着色器819是通过几何结构着色程序可编程的以执行几何结构细分。

在光栅化之前,顶点数据由剪切器829处理,它为固定功能剪切器或具有限幅和几何结构着色器功能的可编程剪切器。在一个实施例中,在渲染器输出流水线870中的光栅化器873分派像素着色器以将几何对象转换成它们的每个像素表示。在一个实施例中,在线程执行逻辑850中包括像素着色器逻辑。

该图形引擎具有互连总线、互连网络结构或者允许数据和消息在图形引擎的主要组件中传递的某些其他互连机制。在一个实施例中,执行单元852a、852b和相关的高速缓存851、纹理和媒体采样器854以及纹理/采样器高速缓存858通过数据端口856互连,以执行存储器访问并与图形引擎的渲染器输出流水线组件通信。在一个实施例中,采样器854、高速缓存851、858以及执行单元852a、852b每个都具有独立的存储器访问路径。

在一个实施例中,渲染器输出流水线870包括光栅化器和将基于顶点的对象转换成它们的相关基于像素的表示的深度测试组件873。在一个实施例中,光栅化器逻辑包括窗口器/遮掩器以执行固定功能三角和线光栅化。在一个实施例中,相关的渲染器和深度缓冲存储器878、879同样可用。像素操作组件877在数据上执行基于像素的操作,虽然在某些实例中,与2d操作相关的像素操作(例如具备混合的位块图像传输)由2d引擎841执行,或者在显示时使用覆盖显示平面由显示控制器843替代。在一个实施例中,共享的l3高速缓存875对于所有图形组件是可用的,允许在不使用主系统存储器的情况下共享数据。

图形处理器媒体流水线830包括媒体引擎837和视频前端834。在一个实施例中,视频前端834从命令流传输器803接收流水线命令。然而,在一个实施例中,媒体流水线830包括单独的命令流传输器。视频前端834在将该命令发送至媒体引擎837之前处理媒体命令。在一个实施例中,媒体引擎837包括线程生成功能性,以生成线程以通过线程分派器831分派至线程执行逻辑850。

在一个实施例中,图形引擎包括显示引擎840。在一个实施例中,显示引擎840在图形处理器外部并通过环形互连802或者某些其他互连总线或网络结构与图形处理器耦合。显示引擎840包括2d引擎841和显示控制器843。显示引擎840包括能够独立于3d流水线操作的特定用途逻辑。显示控制器843与显示设备(未示出)耦合,它可能为系统集成的显示设备,如在膝上型计算机中,或者为通过显示设备连接器附连的外部显示设备。

图形流水线820和媒体流水线830可配置为基于多个图形和媒体编程接口执行操作,并且不特定于任何一个应用编程接口(api)。在一个实施例中,图形处理器的驱动软件转换对于特定图形或媒体库特定的api调用至可由图形处理器处理的命令。在多种实施例中,为由khronos组织、微软公司的direct3d库或者在一个实施例中opengl和d3d两者支持的开放图形库(opengl)和开放计算语言(opencl)提供支持。还可为开源计算机视觉库(opencv)提供支持。如果可从未来api的流水线至图形处理器的流水线作出映射,则具有可兼容3d流水线的未来api也可能会被支持。

图形流水线编程-图14a-b

图14a是图示了根据一实施例的图形处理器命令格式的框图,并且图14b是图示了根据一实施例的图形处理器命令序列的框图。图14a中的实线框图示了通常包括在图形命令中的组件,而虚线包括可选的或者仅包含在图形命令的子集中的组件。图14a的示例性的图形处理器命令格式900包括数据字段以识别命令的目标客户端902、命令操作码(opcode)904、以及用于该命令的相关数据906。在某些命令中还包括子操作码905和命令大小908。

客户端902指定了处理该命令数据的图形设备的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段以调节该命令的未来处理以及将该命令数据路由至适当的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、渲染器单元、2d单元、3d单元和媒体单元。每个客户端单元具有处理命令的相应处理流水线。一旦该命令由客户端单元接收,该客户端单元读取操作码904以及,如果存在,子操作码905以确定操作以执行。客户端单元使用命令的数据906字段中的信息执行该命令。对于某些命令,期望明确的命令大小908以指定该命令的大小。在一个实施例中,命令解析器基于命令操作码自动确定至少一些命令的大小。在一个实施例中,通过多个双字对齐指令。

图14b中的流程图示出了采样命令序列910。在一个实施例中,以图形处理器的一实施例为特征的数据处理系统的软件或固件使用示出的命令序列的版本来设置、执行和终止图形操作的集合。为了示例的目的示出并描述了采样命令序列,然而各实施例并不限于这些命令或此命令序列。此外,该命令可被发布为命令序列中的批命令,这样图形处理器将以至少部分并发的形式处理该命令序列。

采样命令序列910可始于流水线冲洗命令912以使得任何活动的图形流水线完成该流水线的当前挂起的命令。在一个实施例中,3d流水线922和媒体流水线924并不同时操作。执行该流水线冲洗以使得该活动的图形流水线完成任何挂起的命令。响应于流水线冲洗,图形处理器的命令解析器将暂停命令处理直到活动的绘画引擎完成挂起的操作并且使得相关的读取高速缓存无效。可选地,被标示为“脏”的渲染器高速缓存中的任何数据可被冲洗至存储器。流水线冲洗命令912可用于流水线同步或在将图形处理器置于低功耗状态前使用。

当命令序列需要图形处理器在流水线间明确切换时使用流水线选择命令913。在发布流水线命令之前在执行上下文内仅需要一次流水线选择命令913,除非该上下文要为两个流水线发布命令。在一个实施例中,在通过流水线选择命令913的流水线切换之前立即需要流水线冲洗命令912。

流水线控制命令914配置图形流水线以操作并用于编程3d流水线922和媒体流水线924。流水线控制命令914为活跃的流水线配置流水线状态。在一个实施例中,流水线控制命令914被用于流水线同步以及在处理一批命令之前从活跃的流水线内的一个或多个高速缓存存储器中清理数据。

返回高速缓存状态命令916被用于为各自流水线配置返回缓冲器的集合以写入数据。一些流水线操作需要该操作在处理期间向其写入中间数据的一个或多个返回缓冲器的分配、选择或配置。图形处理器还使用一个或多个返回缓冲器来存储输出数据以及执行跨线程通信。该返回缓冲器状态命令916包括选择返回缓冲器的大小和数量以为流水线操作的集合使用。

基于用于操作的活动的流水线,命令序列中余下的命令是不同的。基于流水线确定920,命令序列被定制为以3d流水线状态930起始的3d流水线922,或者以媒体流水线状态940起始的媒体流水线924。

用于3d流水线状态930的命令包括顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态和要在3d原始命令被处理之前配置的其他状态变量的3d状态设置命令。至少部分基于使用中的特定3dapi确定这些命令的值。3d流水线状态930命令还能够选择性地禁用或旁路特定流水线元素(如果那些元素将不被使用)。

该3d基元932命令用于提交要由3d流水线处理的3d基元。通过3d基元932命令传递至图形处理器的命令和相关参数被转发至图形流水线中的顶点索取函数。顶点索取函数使用3d基元932命令数据以生成顶点数据结构。顶点数据结构存储在一个或多个返回缓冲器中。3d基元932命令用于通过顶点着色器在3d基元上执行顶点操作。为了处理顶点着色器,3d流水线922分派着色器执行线程至图形处理器执行单元。

通过执行934命令或事件触发3d流水线922。在一个实施例中,寄存器写触发了命令执行。在一个实施例中,通过命令序列中的“go”或“kick”命令触发执行。在一个实施例中,使用线程同步命令触发命令执行,以通过图形流水线冲洗命令序列。3d流水线将为3d基元执行几何结构处理。一旦操作完成,获得的几何对象被光栅化并且像素引擎着色获得的像素。对于那些操作还可包括用于控制像素着色和像素后端操作的额外的命令。

当执行媒体操作时采样命令序列910跟随媒体流水线924。通常,媒体流水线924的编程的特定用途和方式取决于要执行的媒体或计算操作。在媒体解码期间特定媒体解码操作可被卸载至媒体流水线。该媒体流水线还可被旁路并且可使用由一个或多个通用处理核提供的资源整体或部分地执行媒体解码。在一个实施例中,媒体流水线还包括用于通用图形处理单元(gpgpu)操作的元素,其中图形处理器被用于使用不明显与图形基元的渲染相关的计算着色程序执行simd向量操作。

以与3d流水线922相似的方式配置媒体流水线924。媒体流水线状态命令940的集合在媒体对象命令942之前被分派或置于命令序列中。媒体流水线状态命令940包括用于配置将被用于处理媒体对象的媒体流水线元素的数据。这包括用于配置在媒体流水线中的视频解码和视频编码逻辑的数据,诸如编码或解码格式。该媒体流水线状态命令940还支持指向包含一批状态设置的“间接”状态元素的一个或多个指针的使用。

媒体对象命令942支持指向由媒体流水线处理的媒体对象的指针。媒体对象包括包含要处理的视频数据的存储器缓冲器。在一个实施例中,所有的媒体流水线状态在发布媒体对象命令942之前必须是有效的。一旦该流水线状态被配置并且媒体对象命令942被加入队列,通过执行944命令或者等价的执行事件(例如,寄存器写入)触发媒体流水线924。从媒体流水线924的输出然后可被由3d流水线922或媒体流水线924提供的操作后处理。在一个实施例中,以与媒体操作相似的方式配置和执行gpgpu操作。

图形软件架构-图15

图15示出了根据一实施例用于数据处理系统的示例图形软件架构。该软件架构包括3d图形应用1010、操作系统1020、以及至少一个处理器1030。处理器1030包括图形处理器1032和一个或多个通用处理器核1034。图形应用1010和操作系统1020每一个都在数据处理系统的系统存储器1050中执行。

在一个实施例中,3d图形应用1010包含包括着色指令1012的一个或多个着色程序。着色语言指令可能为高级着色语言,诸如高级着色语言(hlsl)或者opengl着色语言(glsl)。该应用还包括适于由通用处理器核1034执行的采用机器语言的可执行指令1014。该应用还包括由顶点数据定义的图形对象1016。

操作系统1020可为来自微软公司的操作系统,专属的类似unix的操作系统,或者使用linux内核的变体的开源的类似unix的操作系统。当正在使用direct3dapi时,操作系统1020使用前端着色编译器1024将hlsl中的任何着色指令1012编译为低级着色语言。该编译可为及时编译或者该应用可执行共享预编译。在一个实施例中,在3d图形应用1010的编译期间,高级着色器被编译成低级着色器。

用户模式图形驱动器1026可包含后端着色编译器1027以将着色指令1012转换成硬件特定的表示。当在使用openglapi时,glsl高级语言的着色指令1012被传递至用户模式图形驱动器1026以编译。用户模式图形驱动器使用操作系统内核模式功能1028与内核模式图形驱动器1029通信。内核模式图形驱动器1029与图形处理器1032通信以分派命令和指令。

从某种程度上说,在本文中描述了多种操作或功能,它们可被描述或定义为硬件电路、软件代码、指令、配置和/或数据。该内容可以硬件逻辑实施,或者实施为直接可执行软件(“对象”或“可执行”形式)、源代码、设计用于在图形引擎上执行的高级着色代码,或者用于特定处理器或图形核的指令集中的低级汇编语言代码。可通过制造物及其上存储的内容,或者通过操作通信接口的方法以通过该通信接口发送数据来提供本文描述的各实施例的软件内容。

非暂态机器可读存储介质可使得机器执行描述的功能或操作,并包括以机器(例如,计算设备、电子系统等)可访问的形式存储信息的任何机制,诸如可记录/不可记录的介质(例如,只读存储器(rom)、随机存取存储器(ram)、磁盘存储介质、光存储介质、闪存设备等)。通信接口包括与硬接线、无线、光等介质的任意一个对接的任何机制以通信至另一设备,诸如存储器总线接口、处理器总线接口、因特网连接、磁盘控制器等。通过提供配置参数或发送信号来配置该通信接口,以准备通信接口,从而提供描述该软件内容的数据信号。该通信接口可通过发送至该通信接口的一个或多个命令或信号访问。

描述的多种组件可为用于执行描述的操作或功能的部件。本文描述的每个组件包括软件、硬件或者它们的组合。该组件可实现为软件模块、硬件模块、特定用途硬件(例如,特定用途的硬件、特定用途集成电路(asic)、数字信号处理器(dsp)等)、嵌入式控制器、硬接线电路等。除了本文描述的内容外,可对本发明公开的各实施例和实现作出多种修改并且不脱离它们的范围。因此,本文的说明和示例应当理解为说明性的,而不是限制性的意义。本发明的范围应当仅参考下面的权利要求进行量度。

额外的注解和示例:

示例1可包括一种用于处理域点的计算系统,包括数据接口,数据接口包含网络控制器、存储器控制器或总线的一个或多个,该数据接口用于获取未细分碎片和与三维(3d)场景相关的一个或多个细分因子,以及细分器,用于基于该未细分碎片和一个或多个细分因子生成细分的碎片以及一个或多个域点。该计算系统还可包括域着色器,域着色器包含区域内高速缓存、区域间高速缓存和耦合至该区域内高速缓存和区域间高速缓存的高速缓存控制器,该高速缓存控制器用于进行是否一个或多个域点在细分的碎片的多个区域集合间共享的区域确定,如果一个或多个域点并不在细分的碎片的多个区域集合之间共享则向区域内高速缓存询问非共享着色数据,以及如果一个或多个域点在细分的碎片的多个区域集合之间共享则向区域间高速缓存询问共享着色数据。

示例2可包括示例1的系统,其中该域着色器进一步包括加速器以当在区域间高速缓存中发生高速缓存命中时生成对共享着色数据的一个或多个引用,以及将该一个或多个引用与一个或多个域点相关。

示例3可包括示例1的系统,其中该域着色器进一步包括加速器,以当在区域内高速缓存中发生高速缓存命中时生成至非共享着色数据的一个或多个引用,以及将该一个或多个引用与一个或多个域点相关。

示例4可包括示例1的系统,其中该域着色器进一步包括着色逻辑,以当在区域间高速缓存或区域内高速缓存两者内都没有发生高速缓存命中时,着色该一个或多个域点。

示例5可包括示例1至4的任一系统,其中该细分器要将一个或多个标记与一个或多个域点相关,并且其中该域着色器进一步包括标记处理器,以识别与该一个或多个域点相关的一个或多个标记,其中将基于该一个或多个标记进行该区域确定。

示例6可包括示例1至4的任一系统,其中该区域间高速缓存的大小为保持细分的碎片中沿着区域边缘的域点的最大数量的大约两倍。

示例7可包括示例1至4的任一系统,其中该细分器包括区域排序器,以最大化跨细分的碎片的各区域遭遇的共享域点的可能性。

示例8可包括一种操作域着色器的方法,包括进行是否与细分的碎片相关的一个或多个域点在细分的碎片的多个区域集合之间共享的区域确定,如果该一个或多个域点不在细分的碎片的多个区域集合之间共享,则向区域内高速缓存询问非共享的着色数据,以及如果该一个或多个域点在细分的碎片的多个区域集合之间共享,则向区域间高速缓存询问共享的着色数据。

示例9可包括示例8的方法,进一步包括:当在区域间高速缓存中发生高速缓存命中时生成对共享着色数据的一个或多个引用,以及将该一个或多个引用与该一个或多个域点关联。

示例10可包括示例8的方法,进一步包括:当在区域内高速缓存中发生高速缓存命中时,生成对非共享着色数据的一个或多个引用,以及将该一个或多个引用与该一个或多个域点关联。

示例11可包括示例8的方法,进一步包括当在区域间高速缓存或区域内高速缓存两者内都没有发生高速缓存命中时,着色该一个或多个域点。

示例12可包括示例8至11的任一方法,进一步包括:从细分器接收一个或多个域点,并识别与一个或多个域点相关的一个或多个标记,其中基于该一个或多个标记进行该区域确定。

示例13可包括至少一个计算机可读存储介质,该存储介质包括指令集,当该指令集由计算平台执行时使得计算平台进行是否与细分的碎片相关的一个或多个域点在细分的碎片的多个区域集合之间共享的区域确定,如果该一个或多个域点不在细分的碎片的多个区域集合之间共享,则向区域内高速缓存询问非共享着色数据,以及如果该一个或多个域点在细分的碎片的多个区域集合之间共享,则向区域间高速缓存询问共享的着色数据。

示例14可包括示例13的至少一个计算机可读存储介质,其中该指令当执行时使得当在区域间高速缓存中发生高速缓存命中时,计算系统生成对共享着色数据的一个或多个引用,以及将该一个或多个引用与该一个或多个域点关联。

示例15可包括示例13的至少一个计算机可读存储介质,其中该指令当执行时使得当在区域内高速缓存中生成高速缓存命中时,计算系统生成对非共享着色数据的一个或多个引用,以及将该一个或多个引用与该一个或多个域点相关。

示例16可包括示例13的至少一个计算机可读存储介质,其中该指令当执行时使得当在区域间高速缓存或区域内高速缓存两者中都没有发生高速缓存命中时计算系统着色该一个或多个域点。

示例17可包括示例13至16任一的至少一个计算机可读存储介质,其中该指令当执行时使得计算系统从细分器接收该一个或多个域点,并识别与该一个或多个域点相关的一个或多个标记,其中基于该一个或多个标记进行该区域确定。

示例18可包括一种域着色器,该域着色器包括区域内高速缓存、区域间高速缓存以及耦合至该区域内高速缓存和该区域间高速缓存的高速缓存控制器,该高速缓存控制器用于进行是否与细分的碎片相关的一个或多个域点在细分的碎片的多个区域集合之间共享的区域确定,如果该一个或多个域点不在细分的碎片的多个区域集合之间共享,则向区域内高速缓存询问非共享着色数据,以及如果该一个或多个域点在细分的碎片的多个区域集合之间共享,则向区域间高速缓存询问共享的着色数据。

示例19可包括示例18的域着色器,进一步包括加速器,以当在区域间高速缓存中发生高速缓存命中时生成对共享着色数据的一个或多个引用,并将该一个或多个引用与该一个或多个域点关联。

示例20可包括示例18的域着色器,进一步包括加速器,以当在区域内高速缓存中发生高速缓存命中时生成对非共享着色数据的一个或多个引用,并将该一个或多个引用与一个或多个域点关联。

示例21可包括示例18的域着色器,进一步包括着色逻辑,以当在区域间高速缓存或者区域内高速缓存两者中都没有发生高速缓存命中时,着色该一个或多个域点。

示例22可包括示例18至21的任一域着色器,进一步包括标记处理器,以从该细分器接收一个或多个域点,并识别与该一个或多个域点相关的一个或多个标记,其中基于该一个或多个标记进行该区域确定。

示例23可包括示例18至21的任一域着色器,其中该区域间高速缓存的大小为保持在该细分的碎片中沿着区域边缘的域点的最大数量的大约两倍。

示例24可包括一种域着色器,该域着色器包括用于执行示例8至12的任意组合和/或其子组合的任一方法的部件。

本文描述的技术因此可在具有最小逻辑复杂性和存储成本的情况下消除冗余的域着色。结果是,与替换方案相比,图形处理器可提供具有更少死区的更高的细分性能和/或更小的功率。

本文可使用术语“耦合”来指代讨论中的组件间的任意类型的关系,直接的或间接的,并且可应用至电、机械、流体、光学、电磁、电机或其他连接。此外,本文可使用术语“第一”、“第二”等仅便于讨论,除非另外指出,并不携带任何特定的时间或时序的意思。此外,应理解,不定冠词“一”或“一个”具有“一个或多个”或“至少一个”的含义。

本领域技术人员根据之前的描述将理解,各实施例的广泛技术可以按多种形式实现。因此,虽然已经与其特定示例相关地描述了各实施例,但各实施例的真实范围不应当被这样限定,因为基于对于附图、说明书以及下面的权利要求的研究其他修改对于本领域技术人员来说将变得明显。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1