CN109564676A - 管芯上曲面细分分配 - Google Patents
管芯上曲面细分分配 Download PDFInfo
- Publication number
- CN109564676A CN109564676A CN201780046878.0A CN201780046878A CN109564676A CN 109564676 A CN109564676 A CN 109564676A CN 201780046878 A CN201780046878 A CN 201780046878A CN 109564676 A CN109564676 A CN 109564676A
- Authority
- CN
- China
- Prior art keywords
- processor
- assembly line
- geometric manipulations
- patch
- instruction
- 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.)
- Granted
Links
- 238000009826 distribution Methods 0.000 title abstract description 8
- 230000015654 memory Effects 0.000 claims abstract description 66
- 230000006870 function Effects 0.000 claims description 54
- 238000000034 method Methods 0.000 claims description 37
- 238000003860 storage Methods 0.000 claims description 33
- 238000004891 communication Methods 0.000 claims description 13
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 8
- 230000008901 benefit Effects 0.000 claims description 4
- 230000001052 transient effect Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 59
- 230000007246 mechanism Effects 0.000 abstract description 3
- MXRGZXBFSKSZPH-UHFFFAOYSA-N protheobromine Chemical compound O=C1N(CC(O)C)C(=O)N(C)C2=C1N(C)C=N2 MXRGZXBFSKSZPH-UHFFFAOYSA-N 0.000 description 46
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 45
- 238000010586 diagram Methods 0.000 description 26
- 239000000872 buffer Substances 0.000 description 22
- 238000013461 design Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 15
- 239000012634 fragment Substances 0.000 description 14
- 238000009877 rendering Methods 0.000 description 13
- 238000004519 manufacturing process Methods 0.000 description 12
- 238000004040 coloring Methods 0.000 description 10
- 108091006146 Channels Proteins 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 229910003460 diamond Inorganic materials 0.000 description 7
- 239000010432 diamond Substances 0.000 description 7
- 238000000429 assembly Methods 0.000 description 5
- 230000000712 assembly Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000000151 deposition Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005056 compaction Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000003756 stirring Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 208000019300 CLIPPERS Diseases 0.000 description 1
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 208000021930 chronic lymphocytic inflammation with pontine perivascular enhancement responsive to steroids Diseases 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 238000002203 pretreatment Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
可使用本地曲面细分工作重新分配来增加图形处理器的曲面细分处理速率。重新分配机制可避免对大型管芯上缓冲器的需要,并且由于分配是本地的,因此在一些实施例中还可以避免使用片外存储器访问引起的性能和功率损失。
Description
背景技术
在图形处理单元(GPU)中提供竞争几何处理性能通常涉及多个并行、并发的几何处理固定功能流水线(GPP)。这些GPP(有时也称为SMM、几何和设置固定功能流水线、或预曲面细分(tessellation)和后曲面细分流水线)包括OpenGL渲染流水线(RP)中的可编程着色器与固定功能级的混合。请参阅开放图形语言规范(“OpenGL”),请参阅Open GL规范4.2。曲面细分包括补块(patch)图元(primitive)(也称为“对象”),以及计算其顶点的顶点值。曲面细分控制着色器可通过指定曲面细分因子来确定要进行多少曲面细分。可在应用级定义每个补块的顶点数量。补块对象可以是三角形或四边形(其为正方形)。
曲面细分涉及将与输入补块图元相关联的参数域细分为三角形图元集并计算经曲面细分域的点(与那些三角形图元的角一致)处的顶点值。输入补块图元可与三角形或四边形参数域相关联。曲面细分控制着色器可通过指定针对每个补块的曲面细分因子集来确定将域细分为三角形的精细程度。曲面细分评估着色器可随后使用与输入补块图元相关联的输入控制点集以及经曲面细分域点处的域参数来计算顶点值。可在应用级定义与补块图元相关联的输入控制点的数量。
并行渲染图形架构的典型问题是如何在维持严格的有序三维(3D)流水线渲染模型的同时利用并行GPP以及渲染或光栅化流水线(RP)。涉及的主要问题是渲染过程期间应用供给的“对象空间”几何图元向经渲染图像上的任意映射,其中“排序-中间(Sort-Middle)”架构已被业界有效地利用。在此方案中,GPU首先经由并行GPP对对象空间图元的任意分布的子集(“批次”)执行完全几何处理。然后,所得屏幕空间图元随后被恰当地重新排序(即,在时间上排序),并基于每个RP拥有的屏幕空间区域而经由光栅化交叉开关被分配给RP。
在设计中增加GPP的数量(N)将典型地需要每个GPP的输出处的更深的缓冲器,以便在GPP“等待轮到它”向光栅化交叉开关输出时提供足够的GPP输出缓冲。此处,GPP输出缓冲器的大小很可能会被调整为其他(N-1)GPP将其批次排出到交叉开关所花费的平均时间。如果没有提供足够的缓冲,则整体几何吞吐量趋向于降低到单个GPP的吞吐量,因为“等待轮到它们”的GPP将很快停止,因为它们在等待时不会被排出,并且当轮到它们时,它们将以GPP处理速率(比交叉开关速率慢)向交叉开关输出。
附图说明
参照以下附图描述一些实施例:
图1是根据一个实施例的管芯上曲面细分的架构描绘;
图2是根据一个实施例的TEFE与TEBE之间的流的更详细描绘;
图3是针对一个实施例的TEFE流程图;
图4是针对一个实施例的DPM生成器流程图;
图5A和5B是根据一个实施例的针对TEBE的流程图;
图6是根据一个实施例的处理系统的框图;
图7是根据一个实施例的处理器的框图;
图8是根据一个实施例的图形处理器的框图;
图9是根据一个实施例的图形处理引擎的框图;
图10是图形处理器的另一实施例的框图;
图11是根据一个实施例的线程执行逻辑的描绘;
图12是根据一些实施例的图形处理器指令格式的框图;
图13是图形处理器的另一实施例的框图;
图14A是根据一些实施例的图形处理器命令格式的框图;
图14B是示出了根据一些实施例的图形处理器命令序列的框图;
图15是根据一些实施例的示例性图形软件架构的描绘;
图16是示出了根据一些实施例的IP核开发系统的框图;
图17是示出了根据一些实施例的示例性芯片上系统集成电路的框图;
图18是根据一个实施例的芯片上系统中的图形处理器的框图;以及
图19是根据一个实施例的另一图形处理器的框图。
具体实施方式
可使用本地曲面细分工作重新分配来增加GPU的曲面细分处理速率。重新分配机制可避免对大型管芯上缓冲器的需要,并且由于分配是本地的,因此在一些实施例中还可以避免使用片外存储器访问引起的性能和功率惩罚。
在一些实施例中,曲面细分处理可完全在芯片上完成(即,在图形处理器集成电路上完成),而不需要访问并非包括在图形处理器集成电路上的外部存储器。
在一些实施例中,作为将预曲面细分结果写入存储器并随后跨曲面细分流水线重新分配那些结果的替代,添加曲面细分重新分配能力以跨GPP的曲面细分级直接分配补块,而不消耗任何片外存储器带宽。
如图1所示,集成电路图形处理器10的固定功能曲面细分级被划分为执行补块剔除和补块传输的曲面细分前端(TEFE)逻辑块20,以及执行补块接受和补块曲面细分的曲面细分后端(TEBE)逻辑块22。曲面细分重新分配总线(TRB)24执行从源GPP的TEFE到一个或多个目的地GPP的TEBE的补块重新分配。
例如,基于诸如设备布局图中的位置之类的准则为GPP分配连续的GPP标识符(ID)值,或者可在设备复位之后利用可编程值加载GPPID。每个GPP可知晓其GPPID。根据一个实施例,这些GPP ID建立GPP的连续排序,其中排序从最高编号的GPP环绕到最低编号的GPP,形成GPPID的循环。然而,也构想到其他排序方案。
如图2所示,TEFE块20接收(a)对补块对象的引用(以“补块句柄”的形式)26和(b)标记一批输入补块对象的结束的指示(“批次结束”)28来作为预曲面细分流水线内的输入。输入补块句柄是用于从GPU本地(“管芯上”)存储器读取与补块相关联的某些控制信息的指针。例如,控制信息可包括曲面细分因子集。此控制信息(其典型地是与传入的补块相关联的数据的小子集)足以执行“补块剔除”计算30,计算30确定补块是否将不生成任何经曲面细分的三角形输出(即,“被剔除”)。作为示例,如果一个或多个曲面细分因子为零,则可认为补块被剔除。如果确定要剔除补块,则在32处丢弃补块而不进行任何进一步处理。否则,将补块句柄转发到经分配补块消息(DPM)生成器34。
使用GPPID,本应按应用发出的次序处理的补块可被并行处理,随后以正确的应用指定序列被重新排序。
在接收到批次结束指示之际,TEFE DPM生成器检查由DPM处理器38在其对应的TEBE块22中生成的输出启用信号36。当轮到包含TEFE块通过TRB 24向TEBE分配补块时,此输出启用信号通知DPM生成器。如果此信号被解除断言(deasserted),则DPM生成器将停止,直到此信号被断言。如果此信号被断言,则DPM生成器生成经分配补块消息(DPM),并通过TRB 24将此消息广播到所有TEBE。DPM消息包含:(a)来自DPM缓冲器(即,补块句柄的数量)的补块句柄的时间排序列表(即,基于应用的提交时间来排序);(b)补块句柄列表的大小;以及(c)传送中GPP的GPPID 40。DPM生成器随后向TEBE DPM处理器断言输出完成信号42,进而使输出启用信号被解除断言。每个TEBE分析DPM消息以确定其是否受消息影响。
每个TEBE块包括“下一TEBE”状态44,该“下一TEBE”状态包含与被选择用于接收下一连续经分配补块的TEBE块相关联的GPP的GPPID值。GPP中的下一TEBE值被初始化为与复位46处相同的值,其中初始值是静态的但可以是可编程的。如下所述,在完成处理DPM消息后,所有TEBE块将其下一TEBE状态更新为同一值。
DPM消息由每个GPP中的TEBE DPM处理器接收、缓冲和处理,该TEBE DPM处理器包括传送中GPP中的TEBE块。DPM处理器对DPM消息的处理由下一TEBE值进行如下条件限制。如果在DPM消息中指定了至少一个补块句柄,则由下一TEBE标识的TEBE继续处理由DPM消息中的第一补块句柄指定的补块。如果指定了至少两个补块句柄,则(GPPID序列中)GPPID紧跟在下一TEBE值之后的TEBE继续处理由DPM消息中的第二补块句柄标识的补块,依此类推。由于GPPID序列是循环的,随着此过程的继续,其可能导致GPPID的环绕,并且因此可能使一个或多个TEBE块处理源于DPM消息的多个补块。如果TEBE块处理多个补块,则补块处理遵循DPM消息中补块句柄的排序。
当TEBE块检测到其已处理指派给它的所有补块句柄时,它会使用下一GPP的GPPID更新其下一TEBE值。下一GPP是这样的GPP:该GPP(在GPPID序列中)紧随在其TEBE被标识为处理DPM消息的最终补块句柄的GPP之后。下一TEBE将是用于处理下一DPM消息中的补块的下一TEBE。每个TEBE独立地确定哪个TEBE是下一TEBE,在一个实施例中,以轮循排序的方式进行补块处理。.
在没有补块句柄被包括在DPM消息中的情况下,因为对应批次中的所有补块都被剔除,所以TEBE将保持其下一TEBE状态不变。
不管DPM消息中包括的补块句柄的数量是多少,当该消息在每个TEBE中被处理之后,每个DPM处理器将其GPPID与传送中GPP ID进行比较。紧随GPPID序列中的传送中GPP ID之后的GPP中的DPM处理器将其输出启用信号断言到其对应TEFE中的DPM生成器。这推进了传送中GPP的序列,从而维持了输入补块跨预曲面细分流水线的轮循分配。
前述过程导致补块以“轮循”方式从TEFE分配到TEBE。同样,补块处理和任何后续GPP流水线处理的结果以同一轮循方式被传送至光栅化交叉开关,从而保留输入分配次序。注意,工作向预曲面细分流水线的分配是在批量补块的基础上进行的,而补块向曲面细分流水线48的分配是在补块的基础上进行的。
在其它实施例中,也可使用其它分配模式。例如,可根据需要来修改轮循以用于GPP之间的负载平衡。
图3、4、5A和5B中所示的序列50、62和74可以用软件、固件和/或硬件来实现。在软件和固件实施例中,其可通过存储在诸如磁、光或半导体存储之类的一种或多种非瞬态计算机可读介质中的计算机执行的指令来实现。在一些实施例中,序列可在与图形处理器相关联或图形处理器内部的存储中实现。
如图3所示,用于TEFE的序列50始于接收补块句柄和批次结束,如框52所示。在框54中执行补块剔除计算。
然后在菱形框56处,检查确定是否存在经曲面细分的三角形输出。如果是,则如框60所示,将它们转发到DPM生成器。否则它们被丢弃,如框58所示。
框62中的DPM生成器执行图4中所示的序列62。菱形框64处的检查确定是否已接收到批次结束。如果是,则在框66中检查输出启用。当输出启用被断言时,如在菱形框68中所确定的,在框70中生成DPM。在框72中,指示输出完成。
如图5A所示,用于实现TEBE的序列74始于处理来自DPM生成器的消息,如框76所示。菱形框78处的检查确定是否存在至少一个补块句柄。由下一TEBE标识的TEBE处理由DPM消息中的第一补块句柄指定的补块,如框80所示。如菱形框82所示,如果指定了两个补块句柄,则其GPP ID紧跟在下一TEBE值之后的TEBE处理由DPM消息中的第二补块句柄标识的补块,如框84所示。对于每个补块句柄,此流程可重复任何次数。
流程随后进入图5B,其中菱形框86处的检查确定是否已处理所有补块句柄。如果是,则更新下一TEBE,如框88所指示的。然后在框92中将GPPID与传送中GPP ID进行比较。DPM处理器和GPP ID序列中紧接在传送GPPID之后的GPP ID将其输出启用信号断言到DPM生成器及其对应的TEFE,如框94所示。这推进了传送中GPP的序列,从而维持了输入几何跨预曲面细分流水线的轮循分配。
如果在菱形框78(图5A)中确定不存在补块句柄,则下一TEBE保持不变,如框90所示。
硬件将补块的数量除以GPP的数量并取余数,并且将余数添加到当前的下一TEBE值,可能从最高GPPID包绕至最低GPP ID。
图6是根据实施例的处理系统100的框图。在各实施例中,系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单处理器台式机系统、多处理器工作站系统或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,系统100是被纳入到用于在移动设备、手持式设备或嵌入式设备中使用的片上系统(SoC)集成电路内的处理平台。
包括图形处理单元的处理系统可以是集成电路。集成电路意指单个集成硅管芯。管芯包含图形处理单元和并行互连几何处理固定功能单元。
系统100的实施例可包括或可并入以下各项内:基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台)。在一些实施例中,系统100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统100也可包括可穿戴设备,可与可穿戴设备耦合或可集成在可穿戴设备内,所述可穿戴设备诸如,智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,数据处理系统100是电视机或机顶盒设备,所述电视机或机顶盒设备具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。
在一些实施例中,该一个或多个处理器102各自都包括一个或多个处理器核107,所述一个或多个处理器核107用于处理指令,所述指令当被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核107中的每一个都配置成处理特定的指令集109。在一些实施例中,指令集109可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。多个处理器核107各自都可处理不同的指令集109,不同的指令集109可包括用于促进对其他指令集的仿真的指令。处理器核107也可包括其他处理设备,诸如,数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,高速缓存存储器在处理器102的各种组件之间共享。在一些实施例中,处理器102也使用可利用已知的高速缓存一致性技术而在处理器核107之间共享的外部高速缓存(例如,第3级(L3)高速缓存或末级高速缓存(LLC))(未示出)。寄存器堆106附加地包括在处理器102中,寄存器堆106可包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可专用于处理器102的设计。
在一些实施例中,处理器102与处理器总线110耦合,以在处理器102与系统100中的其他组件之间传输通信信号,诸如地址、数据、或控制信号。在一个实施例中,系统100使用示例性‘中枢’系统架构,所述示例性‘中枢’系统架构包括存储器控制器中枢116和输入输出(I/O)控制器中枢130。存储器控制器中枢116促进存储器设备与系统100的其他组件之间的通信,而I/O控制器中枢(ICH)130提供经由本地I/O总线至I/O设备的连接。在一个实施例中,存储器控制器中枢116的逻辑被集成在处理器内。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储器设备、或具有适当的性能以充当进程存储器的某个其他存储器设备。在一个实施例中,存储器设备120可以作为系统100的系统存储器操作,以存储数据122和指令121,以便在一个或多个处理器102执行应用或进程时使用。存储器控制器中枢116也与任选的外部图形处理器112耦合,所述任选的外部图形处理器112可与处理器102中的一个或多个图形处理器108通信以执行图形和媒体操作。
在一些实施例中,ICH 130使外围设备能够经由高速I/O总线而连接至存储器设备120和处理器102。IO外围设备包括但不限于音频控制器146、固件接口128、无线收发机126(例如,Wi-Fi、蓝牙)、数据存储设备124(例如,硬盘驱动器、闪存等)以及用于将旧式(legacy)(例如,个人系统2(PS/2))设备耦合至系统的旧式I/O控制器140。一个或多个通用串行总线(USB)控制器142连接输入设备(诸如,键盘和鼠标144的组合)。网络控制器134还可与ICH 130耦合。在一些实施例中,高性能网络控制器(未示出)与处理器总线110耦合。应当理解,所示的系统100是示例性的而非限制性的,因为也可以使用不同方式配置的其他类型的数据处理系统。例如,I/O控制器中枢130可以集成在一个或多个处理器102内,或者存储器控制器中枢116和I/O控制器中枢130可以集成在分立外部图形处理器中,例如外部图形处理器112。
图7是处理器200的实施例的框图,该处理器200具有一个或多个处理器核202A-202N、集成存储器控制器214以及集成图形处理器208。图7具有与本文中的任意其他附图的元件相同的附图标记(或名称)的那些元件可以类似于本文中其他地方描述的任何方式操作或运行,但不限于此。处理器200可包括附加的核,所述附加的核多至由虚线框表示的附加核202N并包括由虚线框表示的附加核202N。处理器核202A-202N中的每一个包括一个或多个内部高速缓存单元204A-204N。在一些实施例中,每一个处理器核都具有对一个或多个共享高速缓存单元206的访问权。
内部高速缓存单元204A-204N和共享高速缓存单元206表示处理器200内的高速缓存存储器层次结构。高速缓存存储器层次结构可包括每一个处理器核内的至少一个层级的指令和数据高速缓存以及一个或多个层级的共享的中间级高速缓存(诸如,第2级(L2)、第3级(L3)、第4级(L4)或其他层级高速缓存),其中,在外部存储器之前的最高层级的高速缓存被分类为LLC。在一些实施例中,高速缓存一致性逻辑维持各种高速缓存单元206与204A-204N之间的一致性。
在一些实施例中,处理器200也可包括一组一个或多个总线控制器单元216和系统代理核210。一个或多个总线控制器单元216管理一组外围总线(诸如,一个或多个外围组件互连总线(例如,PCI、PCI快速(Express))。系统代理核210提供用于各种处理器组件的管理功能。在一些实施例中,系统代理核210包括用于管理对各种外部存储器设备(未示出)的访问的一个或多个集成存储器控制器214。
在一些实施例中,处理器核202A-202N中的一个或多个包括对同时的多线程操作的支持。在此类实施例中,系统代理核210包括用于在多线程处理期间协调并操作核202A-202N的组件。系统代理核210可附加地包括功率控制单元(PCU),所述PCU包括用于调节处理器核202A-202N和图形处理器208的功率状态的逻辑和组件。
在一些实施例中,处理器200附加地包括用于执行图形处理操作的图形处理器208。在一些实施例中,图形处理器208与一组共享高速缓存单元206以及系统代理核210耦合,系统代理核210包括一个或多个集成存储器控制器214。在一些实施例中,显示控制器211与图形处理器208耦合,以将图形处理器输出驱动至一个或多个所耦合的设备。在一些实施例中,显示控制器211可以是经由至少一个互连而与图形处理器耦合的分开的模块,或者可以集成在图形处理器208或系统代理核210内。
在一些实施例中,基于环的互连单元212用于耦合处理器200的内部组件。然而,可使用替代的互连单元,诸如,点对点互连、交换互连或其他技术(包括本领域中公知的技术)。在一些实施例中,图形处理器208经由I/O链路213来与环形互连212耦合。
示例性I/O链路213表示各种各样的I/O互连中的至少一者,所述I/O互连包括促进各种处理器组件与高性能嵌入式存储器模块218(诸如,eDRAM模块)之间的通信的封装I/O互连。在一些实施例中,处理器核202A-202N和图形处理器208中的每一者都将嵌入式存储器模块218用作共享的末级高速缓存。
在一些实施例中,处理器核202A-202N是执行相同的指令集架构的同构核。在另一实施例中,处理器核202A-202N就指令集架构(ISA)方面而言是异构的,其中,处理器核202A-202N中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核202A-202N就微架构方面而言是异构的,其中具有相对较高的功耗的一个或多个核与具有相对较低的功耗的一个或多个核耦合。附加地,处理器200可实现在一个或多个芯片上,或可实现为SOC集成电路,所述SOC集成电路除其他组件之外还具有所示组件。
图8是图形处理器300的框图,所述图形处理器300可以是分立的图形处理单元,或可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由至图形处理器上的寄存器的存储器映射的I/O接口通信,并且与置入处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是至以下各项的接口:本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或系统存储器。
在一些实施例中,图形处理器300也包括用于将显示输出数据驱动到显示设备320的显示控制器302。显示控制器302包括用于显示的一个或多个上层(overlay)平面以及视频或用户接口元件的多个层的综合的硬件。在一些实施例中,图形处理器300包括用于将媒体编码至一个或多个媒体编码格式、从一个或多个媒体编码格式解码或在一个或多个媒体编码格式之间转码的视频编解码引擎306,所述媒体编码格式包括但不限于:移动图片专家组(MPEG)格式(诸如,MPEG-2)、高级视频译码(AVC)格式(诸如,H.264/MPEG-4AVC)以及电影电视工程师协会(SMPTE)421M/VC-1,以及联合图像专家组(JPEG)格式(诸如,JPEG和运动JPEG(MJPEG)格式)。
在一些实施例中,图形处理器300包括用于执行二维(2D)光栅化器(rasterizer)操作(包括例如位边界块转移)的块图像转移(BLIT)引擎304。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。在一些实施例中,GPE 310是用于执行图形操作(包括三维(3D)图形操作和媒体操作)的计算引擎。
在一些实施例中,GPE 310包括用于执行3D操作的3D流水线312,所述3D操作诸如,使用作用于3D图元形状(例如,矩形、三角形等)的处理函数来渲染三维图像和场景。3D流水线312包括可编程和固定功能元件,所述可编程和固定功能元件执行元件内的各种任务和/或繁衍(spawn)执行线程至3D/媒体子系统315。当3D流水线312可用于执行媒体操作时,GPE310的实施例也包括专门用于执行媒体操作(诸如,视频后处理和图像增强)的媒体流水线316。
在一些实施例中,媒体流水线316包括用于执行一个或多个专业媒体操作的固定功能或可编程逻辑单元,所述专业媒体操作诸如,取代或代表视频编解码引擎306的视频解码加速、视频去隔行(de-interlacing)以及视频编码加速。在一些实施例中,媒体流水线316附加地包括用于繁衍供在3D/媒体子系统315上执行的线程的线程繁衍单元。所繁衍的线程在3D/媒体子系统315中所包括的一个或多个图形执行单元上执行用于媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括用于执行由3D流水线312和媒体流水线316繁衍的线程的逻辑。在一些实施例中,流水线将线程执行请求发送至3D/媒体子系统315,所述3D/媒体子系统315包括用于仲裁各种请求并将各种请求分派至可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统也包括用于在多个线程之间共享数据并用于存储输出数据的共享存储器,所述共享存储器包括寄存器和可寻址存储器。
图9是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(GPE)410是图8中示出的GPE 310的某个版本。图9的具有与本文中的任意其他附图的元件相同的附图标记(或名称)的元件能以类似于本文中其他地方描述的任何方式操作或运行,但不限于此。例如,示出了图8的3D流水线312和媒体流水线316。媒体流水线316在GPE 410的一些实施例中是可选的,并且可以不明确地被包括在GPE 410内。例如并且在至少一个实施例中,分开的媒体和/或图像处理器被耦合到GPE 410。
在一些实施例中,GPE 410与命令流送器(command streamer)403耦合,所述命令流送器403将命令流提供给3D流水线312和/或媒体流水线316。在一些实施例中,命令流送器403被耦合至存储器,所述存储器可以是系统存储器、或者内部高速缓存存储器和共享高速缓存存储器中的一个或多个。在一些实施例中,命令流送器403从存储器接收命令,并且将这些命令发送至3D流水线312和/或媒体流水线316。这些命令是从环形缓冲器中取出的指示,该环形缓冲器存储用于3D流水线312和媒体流水线316的命令。在一个实施例中,环形缓冲器可以附加地包括存储多批多个命令的批命令缓冲器。用于3D流水线312的命令还可以包括对存储在存储器中的数据的引用,这些数据诸如但不限于用于3D流水线312的顶点和几何数据和/或用于媒体流水线316的图像数据和存储器对象。3D流水线312和媒体流水线316通过以下方式来处理命令:经由相应流水线内的逻辑来执行操作;或将一个或多个执行线程分派至图形核阵列414。
在各种实施例中,3D流水线312可以通过处理指令并将执行线程分派到图形核阵列414来执行一个或多个着色器程序,诸如顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序。图形核阵列414提供统一的执行资源块。图形核阵列414内的多用途执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行与多个着色器相关联的多个同时执行线程。
在一些实施例中,图形核阵列414还包括用于执行媒体功能(诸如视频和/或图像处理)的执行逻辑。在一个实施例中,除了图形处理操作之外,执行单元附加地包括可编程以执行并行的通用计算操作的通用逻辑。通用逻辑可以并行地或结合图6的(诸)处理器核107或如图7中的核202A-202N内的通用逻辑来执行处理操作。
由图形核阵列414上执行的线程生成的输出数据可以将数据输出到在统一返回缓冲器(URB)418中的存储器。URB 418可以存储用于多个线程的数据。在一些实施例中,URB418可用于在图形核阵列414上执行的不同线程之间发送数据。在一些实施例中,URB 418可另外用于图形核阵列上的线程与共享功能逻辑420内的固定功能逻辑之间的同步。
在一些实施例中,图形核阵列414是可缩放的,使得该阵列包括可变数量的图形核,每个图形核具有基于GPE 410的目标功率和性能水平的可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的,使得可以根据需要启用或禁用执行资源。
图形核阵列414与共享功能逻辑420耦合,共享功能逻辑420包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的共享功能是为图形核阵列414提供专用补充功能的硬件逻辑单元。在各种实施例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信(ITC)423逻辑。另外,一些实施例在共享功能逻辑420内实现一个或多个高速缓存425。在对给定的专用功能的需求不足以包括在图形核阵列414内的情况下实现共享功能。相反,该专用功能的单个实例化被实现为共享功能逻辑420中的独立实体,并且在图形核阵列414内的执行资源之间共享。在图形核阵列414之间被共享并且被包括在图形核阵列414内的精确的功能集在实施例之间变化。
图10是图形处理器500的另一实施例的框图。图10的具有与本文中的任意其他附图的元件相同的附图标记(或名称)的元件能以类似于本文中其他地方描述的任何方式操作或运行,但不限于此。
在一些实施例中,图形处理器500包括环形互连502、流水线前端504、媒体引擎537和图形核580A-580N。在一些实施例中,环形互连502将图形处理器耦合至其他处理单元(包括其他图形处理器或一个或多个通用处理器核)。在一些实施例中,图形处理器是集成在多核处理系统内的许多处理器中的一个。
在一些实施例中,图形处理器500经由环形互连502接收批量的命令。传入的命令由流水线前端504中的命令流转化器503解释。在一些实施例中,图形处理器500包括用于经由(诸)图形核580A-580N来执行3D几何处理和媒体处理的可缩放执行逻辑。对于3D几何处理命令,命令流转化器503将命令供应至几何流水线536。对于至少一些媒体处理命令,命令流转化器503将命令供应至视频前端534,所述视频前端534与媒体引擎537耦合。在一些实施例中,媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE)530以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)533引擎。在一些实施例中,几何流水线536和媒体引擎537各自都生成用于由至少一个图形核580A提供的线程执行资源的执行线程。
在一些实施例中,图形处理器500包括可缩放线程执行资源,所述可缩放线程执行单元特征为模块化核580A-580N(有时称为核片(core slice)),每一个模块化核都具有多个子核550A-550N、560A-560N(有时称为核子片(core sub-slice))。在一些实施例中,图形处理器500可具有任何数量的图形核580A至580N。在一些实施例中,图形处理器500包括图形核580A,所述图形核580A至少具有第一子核550A和第二子核560A。在其他实施例中,图形处理器是具有单个子核(例如,550A)的低功率处理器。在一些实施例中,图形处理器500包括多个图形核580A-580N,每一个图形核都包括第一子核的集合550A-550N以及第二子核的集合560A-560N。第一子核的集合550A-550N中的每一个子核都至少包括执行单元552A-552N和媒体/纹理采样器554A-554N的第一集合。第二子核的集合560A-560N中的每一个子核都至少包括执行单元562A-562N和采样器564A-564N的第二集合。在一些实施例中,每一个子核550A-550N、560A-560N都共享一组共享资源570A-570N。在一些实施例中,共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可包括在图形处理器的各种实施例中。
图11示出线程执行逻辑600,所述线程执行逻辑600包括在GPE的一些实施例中采用的处理元件的阵列。图11的具有与本文中的任意其他附图的元件相同的附图标记(或名称)的元件能以类似于本文中其他地方描述的任何方式操作或运行,但不限于此。
在一些实施例中,线程执行逻辑600包括着色器处理器602、线程分派器604、指令高速缓存606、包括多个执行单元608A-608N的可缩放执行单元阵列、采样器610、数据高速缓存612和数据端口614。在一个实施例中,可缩放执行单元阵列可以通过基于工作负荷的计算要求启用或禁用一个或多个执行单元(例如,执行单元608A、608B、608C、608D、至608N-1和608N中的任一个)来动态地缩放。在一个实施例中,所包括的组件经由互连结构被互连,所述互连结构链接至所述组件中的每一个。在一些实施例中,线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610和执行单元608A-608N中的一者或多者而至存储器(诸如,系统存储器或高速缓存存储器)的一个或多个连接。在一些实施例中,每个执行单元(例如,608A)是独立的可编程通用计算单元,它能够并行地执行多个同时的硬件线程,同时为每一个线程处理多个数据元素。在各种实施例中,执行单元608A-608N的阵列是可缩放的以包括任何数量的单独的执行单元。
在一些实施例中,执行单元608A-608N主要用于执行着色器程序。着色器处理器602可以处理各种着色器程序,并且可以经由线程分派604来分派与着色器程序相关联的执行线程。在一个实施例中,线程分派器包括用于仲裁来自图形和媒体流水线的线程发起请求并在执行单元608A-608N中的一个或多个执行单元上实例化所请求的线程的逻辑。例如,几何流水线(例如,图10的536)可将顶点、曲面细分(tessellation)或几何着色器分派给线程执行逻辑600(图11)以进行处理。在一些实施例中,线程分派器604还可处理来自执行的着色器程序的运行时线程繁衍请求。
在一些实施例中,执行单元608A-608N支持包括对许多标准的3D图形着色器指令的原生支持的指令集,使得以最少的转换来执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。执行单元608A-608N中的每一个能够进行多发布单指令多数据(SIMD)执行,并且多线程操作在面对更高等待时间的存储器访问时实现高效的执行环境。每个执行单元内的每个硬件线程具有专用高带宽寄存器堆和相关的独立线程状态。执行是对能够进行整数、单精度和双精度浮点运算、SIMD分支能力、逻辑运算、超越运算和其他混合的运算的流水线的每时钟的多发布。在等待来自存储器或共享功能之一的数据时,执行单元608A-608N内的依赖性逻辑使等待线程休眠,直到已返回所请求的数据。当等待线程处于休眠时,硬件资源可致力于处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以执行用于像素着色器、片段着色器或另一类型的着色器程序(包括不同的顶点着色器)的操作。
执行单元608A-608N中的每一个执行单元对数据元素的数组操作。数据元素的数量是“执行尺寸”或用于指令的通道数量。执行通道是用于数据元素访问、掩码和指令内的流控制的执行的逻辑单元。通道的数量可独立于用于特定的图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量。在一些实施例中,执行单元608A-608N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可作为紧缩数据类型被存储在寄存器中,并且执行单元将基于元素的数据尺寸来处理各种元素。例如,当对256位宽的向量操作时,向量的256个位被存储在寄存器中,并且执行单元将此向量操作为四个单独的64位紧缩数据元素(四字(QW)尺寸的数据元素)、八个单独的32位紧缩数据元素(双字(DW)尺寸的数据元素)、十六个单独的16位紧缩数据元素(字(W)尺寸的数据元素)、或三十二个单独的8位数据元素(字节(B)尺寸的数据元素)。然而,不同的向量宽度和寄存器尺寸是可能的。
一个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600中以对用于执行单元的线程指令进行高速缓存。在一些实施例中,一个或多个数据高速缓存(例如,612)被包括以对线程执行期间的线程数据进行高速缓存。在一些实施例中,采样器610被包括,以便为3D操作提供纹理采样,并为媒体操作提供媒体采样。在一些实施例中,采样器610包括专用纹理或媒体采样功能,用于在将所采样的数据提供至执行单元之前的采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程繁衍和分派逻辑将线程发起请求发送至线程执行逻辑600。一旦处理了一组几何对象并将其光栅化为像素数据,就调用着色器处理器602内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等),以进一步计算输出信息并使得结果被写入到输出表面(例如,颜色缓冲区、深度缓冲区、模板缓冲区等)。在一些实施例中,像素着色器或片段着色器计算将跨经光栅化的对象而被内插的各种顶点属性的值。在一些实施例中,着色器处理器602内的像素处理器逻辑随后执行应用编程接口(API)供应的像素或片段着色器程序。为了执行着色器程序,着色器处理器602经由线程分派器604将线程分派给执行单元(例如,608A)。在一些实施例中,像素着色器602使用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理映射中的纹理数据。对纹理数据和输入几何数据的算术操作计算用于每个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一些实施例中,数据端口614提供存储器访问机制,以供线程执行逻辑600将经处理的数据输出到存储器,从而在图形处理器输出流水线上进行处理。在一些实施例中,数据端口614包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存612),所述高速缓存存储器用于对用于经由数据端口进行的存储器访问的数据进行高速缓存。
图12是示出根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有按照多种格式的指令的指令集。实线框示出一般被包括在执行单元指令中的组件,而虚线框包括任选的且仅被包括在指令的子集中的组件。在一些实施例中,所述和所示的指令格式700是宏指令,体现在它们是供应至执行单元的指令,这与源自一旦指令经处理就进行的指令解码的微操作相对照。
在一些实施例中,图形处理器执行单元原生地支持按照128位指令格式710的指令。基于所选择的指令、指令选项或操作数的数量,64位压缩指令格式730可用于一些指令。原生的128位指令格式710提供对所有指令选项的访问,而在64位指令格式730中,一些选项和操作是受限的。在64位指令格式730中可用的原生指令随实施例不同而变化。在一些实施例中,使用索引字段713中的索引值集合来部分地压缩指令。执行单元硬件基于索引值来引用压缩表的集合,并且使用压缩表输出来重构按照128位指令格式710的原生指令。
对于每一种格式,指令操作码712定义执行单元将执行的操作。执行单元跨(across)每一个操作数的多个数据元素地并行执行每一个指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每一个颜色通道地执行同时的加法操作。默认地,执行单元跨操作数的所有数据通道执行每一条指令。在一些实施例中,指令控制字段714允许对某些执行选项(诸如,通道选择(例如,预测)和数据通道顺序(例如,拌和(swizzle)))的控制。对于128位指令格式710中的指令,执行尺寸(exec-size)字段716限制将被并行地执行的数据通道的数量。在一些实施例中,执行尺寸字段716不可用于64位压缩指令格式730。
一些执行单元指令具有多达三个操作数,这三个操作数包括两个源操作数scr0720、scr1 722以及一个目的地718。在一些实施例中,执行单元支持双目的地指令,其中目的地中的一个是隐含的。数据操纵指令可具有第三源操作数(例如,SRC2 724),其中,指令操作码712确定源操作数的数量。指令的最后一个源操作数可以是利用指令传递的立即数(例如,硬编码的)值。
在一些实施例中,128位指令格式710包括访问/地址模式字段726,该访问/地址模式字段726指定例如直接寄存器寻址模式或间接寄存器寻址模式是否被使用。当直接寄存器寻址模式被使用时,一个或多个操作数的寄存器地址由指令中的位直接提供。
在一些实施例中,128位指令格式710包括访问/地址模式字段726,该访问/地址模式字段726指定用于指令的地址模式和/或访问模式。在一个实施例中,访问模式用于定义用于指令的数据访问对准。一些实施例支持访问模式,包括16字节对准访问模式和1字节对准访问模式,其中,访问模式的字节对准确定了指令操作数的访问对准。例如,当处于第一模式时,指令可对源操作数与目的地操作数使用字节对准寻址,并当处于第二模式时,指令可对所有源操作数与目的地操作数使用16字节对准寻址。
在一个实施例中,访问/地址模式字段726的地址模式部分判定指令是使用直接寻址还是间接寻址。当直接寄存器寻址模式被使用时,指令中的位直接提供一个或多个操作数的寄存器地址。当间接寄存器寻址模式被使用时,一个或多个操作数的寄存器地址可基于指令中的地址寄存器值和地址立即数字段来进行计算。
在一些实施例中,基于操作码712位字段对指令分组以简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。示出的精确的操作码分组是示例。在一些实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov),比较(cmp))。在一些实施例中,移动和逻辑组742共享五个最高有效位(MSB),其中,移动(MOV)指令是0000xxxxb形式的,并且逻辑指令是0001xxxxb形式的。流控制指令组744(例如,调用、跳转(jmp))包括0010xxxxb(例如,0x20)形式的指令。混杂的指令组746包括指令的拌和,包括0011xxxxb(例如,0x30)形式的同步指令(例如,wait(等待)、send(发送))。并行的数学指令组748包括0100xxxxb(e.g.,0x40)形式的逐成分的算术指令(例如,加法、乘法(mul))。并行的数学组748跨数据通道并行地执行算术操作。向量数学组750包括0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。向量数学组对向量操作数执行算术(诸如,点积计算)。
图13是图形处理器800的另一实施例的框图。图13的具有与本文中的任意其他附图的元件相同的附图标记(或名称)的元件能以类似于本文中其他地方描述的任何方式操作或运行,但不限于此。
在一些实施例中,图形处理器800包括图形流水线820、媒体流水线830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一些实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器通过对一个或多个控制寄存器(未示出)的寄存器写入或经由通过环形互连802而发布至图形处理器800的命令而受控。在一些实施例中,环形互连802将图形处理器800耦合至其他处理组件(诸如,其他图形处理器或通用处理器)。由命令流送器803解释来自环形互连802的命令,所述命令流送器803将指令供应至图形流水线820或媒体流水线830的各个组件。
在一些实施例中,命令流送器803指导顶点取出器805的操作,所述顶点取出器805从存储器读取顶点数据,并且执行由命令流送器803提供的顶点处理命令。在一些实施例中,顶点取出器805将顶点数据提供给顶点着色器807,所述顶点着色器807对每一个顶点执行坐标空间变换和照明操作。在一些实施例中,顶点取出器805和顶点着色器807通过经由线程分派器831将执行线程分派至执行单元852A-852B来执行顶点处理指令。
在一些实施例中,执行单元852A-852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。在一些实施例中,执行单元852A-852B具有附连的L1高速缓存851,所述附连的L1高速缓存专用于每一个阵列或在多个阵列之间被共享。高速缓存可配置为数据高速缓存、指令高速缓存、或经分区以在不同的分区中包含数据和指令的单个高速缓存。
在一些实施例中,图形流水线820包括用于执行硬件加速的对3D对象的曲面细分的曲面细分组件。在一些实施例中,可编程壳体(hull)着色器811配置曲面细分操作。可编程域着色器817提供对曲面细分输出的后端评估。曲面细分器813在壳体着色器811的指示下操作,并且包含专用逻辑,所述专用逻辑用于基于作为输入而被提供至图形流水线820的粗糙的几何模型来生成精细的几何对象的集合。在一些实施例中,如果不使用曲面细分,则可绕过曲面细分组件(壳体着色器811、曲面细分器813、域着色器817)。
在一些实施例中,可由几何着色器819经由分派至执行单元852A-852B的一个或多个线程来处理完整的几何对象,或完整的几何对象可直接继续到裁剪器(clipper)829。在一些实施例中,几何着色器对整个几何对象操作,而不是像在图形流水线的先前的级中那样对顶点或顶点微片处理。如果禁用曲面细分,则几何着色器819从顶点着色器807接收输入。在一些实施例中,几何着色器819是可由几何着色器程序编程的,以便在禁用曲面细分单元时执行几何曲面细分。
在光栅化之前,裁剪器829处理顶点数据。裁剪器829可以是固定功能的裁剪器或具有裁剪与几何着色器功能的可编程裁剪器。在一些实施例中,渲染输出流水线870中的光栅化器和深度测试组件873分派像素着色器以将几何对象转换为它们各自的像素表示。在一些实施例中,像素着色器逻辑被包括在线程执行逻辑850中。在一些实施例中,应用可绕过光栅化器和深度测试组件873并经由流出单元823访问未光栅化的顶点数据。
图形处理器800具有允许数据和消息在处理器的主要组件之间传送的互连总线、互连结构或某个其他互连机制。在一些实施例中,执行单元852A-852B和相关联的(多个)高速缓存851、纹理和媒体采样器854、以及纹理/采样器高速缓存858经由数据端口856互连,以执行与处理器的渲染输出流水线组件的存储器访问和通信。在一些实施例中,采样器854、高速缓存851、858和执行单元852A-852B各自都具有分开的存储器访问路径。
在一些实施例中,渲染输出流水线870包含将基于顶点的对象转换为相关联的基于像素的表示的光栅化器和深度测试组件873。在一些实施例中,光栅化逻辑包括用于执行固定功能三角和直线光栅化的窗口器/掩码器单元。相关联的渲染高速缓存878和深度高速缓存879在一些实施例中也是可用的。像素操作组件877对数据执行基于像素的操作,但是在一些实例中,与2D操作相关联的像素操作(例如,利用混合(blend)进行的位块图像转移)由2D引擎841执行,或在显示时由显示控制器843使用上层的显示平面来替代。在一些实施例中,共享的L3高速缓存875可用于所有的图形组件,从而允许在不使用主系统存储器的情况下共享数据。
在一些实施例中,图形处理器媒体流水线830包括媒体引擎837和视频前端834。在一些实施例中,视频前端834从命令流送器803接收流水线命令。然而,在一些实施例中,媒体流水线830包括分开的命令流送器。在一些实施例中,视频前端834在将命令发送至媒体引擎837之前处理媒体命令。在一些实施例中,媒体引擎837包括线程繁衍功能,以便繁衍用于经由线程分派器831而分派至线程执行逻辑850的线程。
在一些实施例中,图形处理器800包括显示引擎840。在一些实施例中,显示引擎840在处理器800外部,并且经由环形互连802或某个其他互连总线或结构而与图形处理器耦合。在一些实施例中,显示引擎840包括2D引擎841和显示控制器843。在一些实施例中,显示引擎840包含能够独立于3D流水线操作的专用逻辑。在一些实施例中,显示控制器843与显示设备(未示出)耦合,所述显示设备可以是如在膝上型计算机中的系统集成的显示设备或经由显示设备连接器而附连的外部显示设备。
在一些实施例中,图形流水线820和媒体流水线830可配置以基于多个图形和媒体编程接口来执行操作,并且不专用于任何一个应用编程接口(API)。在一些实施例中,用于图形处理器的驱动器软件将专用于特定的图形或媒体库的API调用转化为可由图形处理器处理的命令。在一些实施例中,为开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API(所有这些来自科纳斯组织(Khronos Group))提供支持。在一些实施例中,还可以为来自微软公司的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。还可为开放源计算机视觉库(OpenCV)提供支持。如果可完成从未来API的流水线至图形处理器的流水线的映射,则也将支持具有兼容的3D流水线的未来API。
图14A是示出根据一些实施例的图形处理器命令格式900的框图。图14B是示出根据实施例的图形处理器命令序列910的框图。图14A中的实线框示出一般被包括在图形命令中的组件,而虚线包括任选的且仅被包括在图形命令的子集中的组件。图14A的示例性图形处理器命令格式900包括用于标识该命令的目标客户端的数据字段902、命令操作码(操作码)904以及用于命令的相关数据906。子操作码905和命令尺寸908也包括在一些命令中。
在一些实施例中,客户端902指定图形设备的处理命令数据的客户端单元。在一些实施例中,图形处理器命令解析器检查每一个命令的客户端字段以调整对命令的未来处理,并且将命令数据路由至适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每一个客户端单元都具有处理命令的对应的处理流水线。一旦由客户端单元接收到命令,此客户端单元就读取操作码904以及子操作码905(如果存在的话),以便确定将执行的操作。客户单元使用数据字段906中的信息来执行命令。对于一些命令,预期有显式的命令尺寸908来指定命令的尺寸。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的尺寸。在一些实施例中,命令经由双字的倍数而对准。
图14B中的流程图示出示例性图形处理器命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示的命令序列的某个版本来建立、执行并终止图形操作的集合。仅出于示例的目示出并描述采样命令序列,因为实施例不限于这些特定命令,也不限于此命令序列。此外,命令能以命令序列中的批量命令被发布,使得图形处理器将以至少部分地并发来处理命令序列。
在一些实施例中,图形处理器命令序列910能以流水线转储清除(flush)命令912开始,以使任何活动的流水线完成用于流水线的当前待定的命令。在一些实施例中,3D流水线922和媒体流水线924不并发地操作。执行流水线转储清除以使活动的图形流水线完成任何待定的命令。响应于流水线转储清除,用于图形处理器的命令解析器将暂停命令处理,直到活动的绘制引擎完成待定的操作且相关读取高速缓存被无效为止。任选地,渲染高速缓存中被标记为‘脏(dirty)’的任何数据可转储清除至存储器。在一些实施例中,流水线转储清除命令912可用于流水线同步,或可在将图形处理器置于低功率状态之前使用。
在一些实施例中,当命令序列要求图形处理器在多个流水线之间显式地切换时,使用流水线选择命令913。在一些实施例中,除非上下文将为两个流水线发布命令,否则在发布流水线命令之前,在执行上下文内,流水线选择命令913仅需要一次。在一些实施例中,紧接着经由流水线选择命令913进行的流水线切换之前,需要流水线转储清除命令912。
在一些实施例中,流水线控制命令914配置用于操作的图形流水线,并且用于对3D流水线922和媒体流水线924编程。在一些实施例中,流水线控制命令914为活动的流水线配置流水线状态。在一个实施例中,流水线控制命令914用于流水线同步,并且用于在处理批量命令之前,清除来自活动的流水线内的一个或多个高速缓存存储器的数据。
在一些实施例中,用于返回缓冲器状态的命令916用于配置供相应的流水线用于写入数据的返回缓冲器的集合。一些流水线操作需要对一个或多个返回缓冲器的分配、选择或配置,在处理期间,操作将中间数据写入到所述一个或多个返回缓冲器中。在一些实施例中,图形处理器也使用一个或多个返回缓冲器以存储输出数据并执行跨线程通信。在一些实施例中,配置返回缓冲器状态916包括选择用于流水线操作集的返回缓冲器的尺寸和数量。
命令序列中的其余命令基于用于操作的活动的流水线而有所不同。基于流水线确定920,命令序列被定制至以3D流水线状态930开始的3D流水线922或以媒体流水线状态940开始的媒体流水线924。
用于3D流水线状态930的命令包括用于以下状态的3D状态设置命令:顶点缓冲器状态、顶点元素状态、恒定颜色状态、深度缓冲器状态以及在处理3D图元命令之前将配置的其他状态变量。至少部分地基于使用中的特定的3D API来确定这些命令的值。在一些实施例中,3D流水线状态930命令也能够在如果不使用某些流水线元件时选择性地禁用或绕过那些元件。
在一些实施例中,3D图元932命令用于提交将由3D流水线处理的3D图元。经由3D图元932命令而被传递至图形处理器的命令和相关联的参数被转发至图形流水线中的顶点取出函数。顶点取出函数使用3D图元932命令数据来生成顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3D图元932命令用于经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,3D流水线922将着色器执行线程分派至图形处理器执行单元。
在一些实施例中,3D流水线922经由执行934命令或事件来触发。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的‘go(走)’或‘kick(踢除)’命令来触发执行。在一个实施例中,使用流水线同步命令以通过图形流水线转储清除命令序列来触发命令执行。3D流水线将执行针对3D图元的几何处理。一旦操作完成,得到的几何对象被光栅化,并且像素引擎对得到的像素上色。用于控制像素着色和像素后端操作的附加命令也可被包括以用于那些操作。
在一些实施例中,当执行媒体操作时,图形处理器命令序列910跟随媒体流水线924路径。一般而言,用于媒体流水线924的编程的特定使用和方式取决于将执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可卸载至媒体流水线。在一些实施例中,也可绕过媒体流水线,并且可使用由一个或多个通用处理核提供的资源完全地或部分地执行媒体解码。在一个实施例中,媒体流水线也包括用于通用图形处理器单元(GPGPU)操作的元件,其中,图形处理器用于使用与图形图元的渲染不是显式相关的计算着色器程序来执行SIMD向量操作。
在一些实施例中,以与3D流水线924相似的方式对媒体流水线922进行配置。将用于配置媒体流水线状态940的一组命令分派或放置到命令队列中,在媒体对象命令942之前。在一些实施例中,用于媒体流水线状态940的命令包括用于配置媒体流水线元件的数据,所述媒体流水线元件将用于处理媒体对象。这包括用于在媒体流水线内配置视频解码和视频编码逻辑的数据,诸如编码或解码格式。在一些实施例中,用于媒体流水线状态940的命令还支持将一个或多个指针用于包含一批状态设置的“间接”状态元件。
在一些实施例中,媒体对象命令942提供指向用于由媒体流水线处理的媒体对象的指针。媒体对象包括包含待处理的视频数据的存储器缓冲器。在一些实施例中,在发布媒体对象命令942之前,所有媒体流水线状态都必须是有效的。一旦流水线状态经配置,并且媒体对象命令942经排队列,媒体流水线924就经由执行944命令或等效的执行事件(例如,寄存器写入)来触发。随后,可通过由3D流水线922或媒体流水线924提供的操作对来自媒体流水线924的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图15示出根据一些实施例的用于数据处理系统的示例性图形软件架构1000。在一些实施例中,软件架构包括3D图形应用1010、操作系统1020以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032以及一个或多个通用处理器核1034。图形应用1010和操作系统1020各自都在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,所述着色器程序包括着色器指令1012。着色器语言指令可以是高级着色器语言(诸如,高级着色器语言(HLSL)或OpenGL着色器语言(GLSL))中的。应用也包括适用于由通用处理器核1034执行的机器语言中的可执行指令1014。应用也包括由顶点数据定义的图形对象1016。
在一些实施例中,操作系统1020是来自微软公司的 操作系统、专属的类UNIX操作系统、或使用Linux内核的变体的开放源类UNIX操作系统。操作系统1020可以支持图形API 1022,诸如Direct3D API、OpenGL API或Vulkan API。当Direct3D API在使用中时,操作系统1020使用前端着色器编译器1024以将HLSL中的任何着色器指令1012编译为低级着色器语言。编译可以是即时(just-in-time)(JIT)编译,或者应用可执行着色器预编译。在一些实施例中,在3D图形应用1010的编译期间,高级着色器被编译为低级着色器。在一些实施例中,着色器指令1012以中间形式被提供,诸如,由Vulkan API使用的标准可移植中间表示(SPIR)的某个版本。
在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027以将着色器指令1012编译为硬件专用表示。当OpenGL API在使用中时,GLSL高级语言中的着色器指令1012被传递至用户模式图形驱动器1026以进行编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式函数1028来与内核模式图形驱动器1029通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032通信以分派命令和指令。
至少一个实施例的一个或多个方面可由存储在机器可读介质上的代表性代码实现,代表性代码表示和/或定义诸如处理器的集成电路内的逻辑。例如,机器可读介质可包括表示处理器内的各种逻辑的指令。当被机器读取时,指令可使机器制造逻辑以执行本文所述的技术。被称为“IP核”的这些表示是集成电路的逻辑的可重用单元,这些可重用单元可被存储在有形的机器可读介质上作为描述集成电路的结构的硬件模型。可将硬件模型提供给多个客户或生产设施,客户或生产设施将硬件模型加载到制造集成电路的制造机器上。集成电路可以被制造使得该电路执行与本文所述的实施例中的任一个相关联地描述的操作。
图16是例示出根据实施例的可用于制造集成电路以执行操作的IP核开发系统1100的框图。IP核开发系统1100可用于生成可被包含在较大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化的、可重复使用的设计。设计设施1130可以用高级编程语言(例如,C/C++)生成IP核设计的软件模拟1110。可使用模拟模型1112来将软件模拟1110用于设计、测试或验证IP核的行为。模拟模型1112可包括功能、行为和/或时序模拟。然后可从模拟模型1112创建或合成寄存器传送级(RTL)设计1115。RTL设计1115是对硬件寄存器之间的数字信号的流动建模的集成电路的行为的抽象,包括使用被建模的数字信号执行相关联的逻辑。除了RTL设计1115之外,还可创建、设计或合成在逻辑级或晶体管级的较低级设计。因此,初始设计和模拟的特定细节可以变化。
可通过设计设施进一步将RTL设计1115或等价物合成到硬件模型1120中,硬件模型1120可以是以硬件描述语言(HDL)或物理设计数据的一些其他表示。可进一步模拟或测试HDL以验证IP核设计。可使用非易失性存储器1140(例如,硬盘、闪存、或任何非易失性存储介质)存储IP核设计以传递到第三方制造设施1165。替代地,可以在有线连接1150或无线连接1160上传送(例如,经由互联网)IP核设计。生产设施1165然后可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可配置为执行根据本文所述的至少一个实施例的操作。
图17-19例示出根据本文描述的各种实施例的可以使用一个或多个IP核制造的示例性集成电路和相关联的图形处理器。除了所示的内容之外,还可以包括其他逻辑和电路,其他逻辑和电路包括附加的图形处理器/核、外围接口控制器或通用处理器核。
图17是例示出根据实施例的可以使用一个或多个IP核来制造的示例性芯片上系统集成电路1200的框图。示例性集成电路1200包括一个或多个应用处理器1205(例如,CPU)、至少一个图形处理器1210,并且可以附加地包括图像处理器1215和/或视频处理器1220,其中的任一项可以是来自相同或多个不同设计设施的模块化IP核。集成电路1200包括外围或总线逻辑,包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235和I2S/I2C控制器1240。另外,集成电路可包括显示设备1245,该显示设备1245耦合至高清多媒体接口(HDMI)控制器1250和移动行业处理器接口(MIPI)显示界面1255中的一个或多个。可以由闪存子系统1260(包括闪存和闪存控制器)来提供存储。可经由存储器控制器1265来提供存储器接口以访问SDRAM或SRAM存储器设备。一些集成电路附加地包括嵌入式安全引擎1270。
图18是示出了根据实施例的可以使用一个或多个IP核来制造的芯片上系统集成电路的示例性图形处理器1310的框图。图形处理器1310可以是图17的图形处理器1210的变体。图形处理器1310包括顶点处理器1305和一个或多个片段处理器1315A-1315N(例如,1315A、1315B、1315C、1315D到1315N-1和1315N)。图形处理器1310可以经由分开的逻辑执行不同的着色器程序,使得顶点处理器1305被优化成执行用于顶点着色器程序的操作,而一个或多个片段处理器1315A-1315N执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器1305执行3D图形流水线的顶点处理阶段,并生成图元和顶点数据。(诸)片段处理器1315A-1315N使用由顶点处理器1305生成的图元和顶点数据来产生显示在显示设备上的帧缓冲器。在一个实施例中,(诸)片段处理器1315A-1315N被优化成执行如提供用于OpenGL API中的片段着色器程序,片段处理器1315A-1315N可用于执行与如提供用于Direct 3D API中的像素着色器程序类似的操作。
图形处理器1310附加地包括一个或多个存储器管理单元(MMU)1320A-1320B、(诸)高速缓存1325A-1325B和(诸)电路互连1330A-1330B。一个或多个MMU 1320A-1320B提供用于图形处理器1310的虚拟到物理地址映射,包括用于顶点处理器1305和/或(诸)片段处理器1315A-1315N的虚拟到物理地址映射,除了存储在一个或多个高速缓存1325A-1325B中的顶点或图像/纹理数据之外,顶点处理器1305和/或片段处理器1315A-1315N还可以引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU 1320A-1320B可以与系统内的其他MMU同步,使得每个处理器1205-1220可以参与共享或统一虚拟存储器系统,其他MMU包括与图17的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU。根据实施例,一个或多个电路互连1330A-1330B使得图形处理器1310能够经由SoC的内部总线或经由直接连接与SoC内的其他IP核接口连接。
图19是例示出根据实施例的可以使用一个或多个IP核来制造的芯片上系统集成电路的附加示例性图形处理器1410的框图。图形处理器1410可以是图17的图形处理器1210的变体。图形处理器1410包括图18的集成电路1300的一个或多个MMU 1320A-1320B、(诸)高速缓存1325A-1325B和(诸)电路互连1330A-1330B。
图形处理器1410包括一个或多个着色器核1415A-1415N(例如,1415A、1415B、1415C、1415D、1415E、1415F到1315N-1和1315N),其提供统一的着色器核架构,其中,单核或类型或核可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量可以在各实施例和各实现方式之间变化。此外,图形处理器1410包括核间任务管理器1405和瓦片化单元(tilingunit)1418,该核间任务管理器1405充当线程分派器以将执行线程分派给一个或多个着色器核1415A-1415N,该瓦片化单元1418用于加速用于基于图块的渲染的瓦片化操作,在用于基于图块的渲染的瓦片化操作中,对场景的渲染操作被细分在图像空间中,例如,以此来利用场景内的局部空间一致性,或以此来优化内部高速缓存的使用。
以下条款和/或示例涉及进一步的实施例:
一个示例实施例可以是一种方法,包括:在包括图形处理器的集成电路中在并行互连几何处理固定功能单元之间重新分配补块,而无需访问所述集成电路外部的存储器。方法还可包括创建并行经标识几何处理固定功能流水线的有序列表。方法还可包括在所述互连几何处理固定功能流水线之间共享所述列表。方法还可包括跨所述几何处理固定功能流水线共享正被处理的补块句柄的状态。方法还可包括使用所述共享列表和所述共享状态来在所述几何处理固定功能流水线的每一个中标识哪个几何处理固定功能流水线用于处理下一补块句柄。方法还可包括将所述流水线分裂为分开的前端和后端。方法还可包括提供从每个前端到每个后端的通信路径。方法还可包括向所有后端广播被指定用于接收下一补块句柄的后端的标识符。
另一示例实施例可以是一种或多种非瞬态计算机可读介质,其存储被执行以以执行包括以下操作的序列的指令:在包括图形处理器的集成电路中在并行互连几何处理固定功能单元之间重新分配补块,而无需访问所述集成电路外部的存储器。介质可包括存储用于执行进一步包括以下操作的序列的指令:创建并行经标识几何处理固定功能流水线的有序列表。介质可包括存储用于执行包括以下操作的序列的指令:在所述互连几何处理固定功能流水线之间共享所述列表。介质可包括存储用于执行包括以下操作的序列的指令:跨所述几何处理固定功能流水线共享正被处理的补块句柄的状态。介质可包括进一步存储用于执行包括以下操作的序列的指令:使用所述共享列表和所述共享状态来在所述几何处理固定功能流水线的每一个中标识哪个几何处理固定功能流水线用于处理下一补块句柄。介质可包括存储用于执行包括以下操作的序列的指令:将所述流水线分裂为分开的前端和后端。介质可包括存储用于执行包括以下操作的序列的指令:提供从每个前端到每个后端的通信路径。介质可包括存储用于执行包括以下操作的序列的指令:向所有后端广播被指定用于接收下一补块句柄的后端的标识符。
在可以是集成电路的另一示例实施例中,该集成电路包括:并行互连几何处理固定功能单元;以及图形处理器,用于在并行互连几何处理固定功能单元之间重新分配补块,而无需访问所述集成电路外部的存储器。电路可包括所述处理器进一步用于创建并行经标识几何处理固定功能流水线的有序列表。电路可包括所述处理器用于在所述互连几何处理固定功能流水线之间共享列表。电路可包括所述处理器用于跨所述几何处理固定功能流水线共享正被处理的补块句柄的状态。电路可包括所述处理器用于使用所述共享列表和所述共享状态来在所述几何处理固定功能流水线的每一个中标识哪个几何处理固定功能流水线用于处理下一补块句柄。电路可包括所述处理器用于将流水线分裂为分开的前端和后端。电路可包括所述处理器用于提供从每个前端到每个后端的通信路径。电路可包括所述处理器用于向所有后端广播针对被指定用于接收下一补块句柄的后端的标识符。
本文中所描述的图形处理技术可在各种硬件架构中实现。例如,图形功能可被集成在芯片组内。替代地,可使用分立的图形处理器。作为又一实施例,图形功能可由包括多核处理器的通用处理器来实现。
本文中所描述的图形处理技术可在各种硬件架构中实现。例如,图形功能可被集成在芯片组内。替代地,可使用分立的图形处理器。作为又一实施例,图形功能可由包括多核处理器的通用处理器来实现。
在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本公开包含的至少一个实现内。因此,短语“一个实施例”或“在实施例中”的出现不一定指代同一实施例。此外,特定的特征、结构或特性可按照与所示特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在本申请的权利要求中。
尽管已经描述了有限数量的实施例,但是本领域技术人员将认识到从其得出的许多修改和变型。所附权利要求书旨在涵盖落入本公开的真实精神和范围内的所有此类修改和变型。
Claims (23)
1.一种方法,包括:
在包括图形处理器的集成电路中在并行互连几何处理固定功能单元之间重新分配补块,而无需访问所述集成电路外部的存储器。
2.如权利要求1所述的方法,其特征在于,进一步包括创建并行经标识几何处理固定功能流水线的有序列表。
3.如权利要求2所述的方法,其特征在于,包括在所述互连几何处理固定功能流水线之间共享所述列表。
4.如权利要求3所述的方法,其特征在于,包括跨所述几何处理固定功能流水线共享正被处理的补块句柄的状态。
5.如权利要求4所述的方法,其特征在于,包括使用所述共享列表和所述共享状态来在所述几何处理固定功能流水线的每一个中标识哪个几何处理固定功能流水线用于处理下一补块句柄。
6.如权利要求5所述的方法,其特征在于,包括将所述流水线分裂为分开的前端和后端。
7.如权利要求6所述的方法,其特征在于,包括提供从每个前端到每个后端的通信路径。
8.如权利要求7所述的方法,其特征在于,包括向所有后端广播被指定用于接收下一补块句柄的后端的标识符。
9.一种或多种非瞬态计算机可读介质,其存储被执行以执行包括以下操作的序列的指令:
在包括图形处理器的集成电路中在并行互连几何处理固定功能单元之间重新分配补块,而无需访问所述集成电路外部的存储器。
10.如权利要求9所述的介质,其特征在于,进一步存储用于执行进一步包括以下操作的序列的指令:创建并行经标识几何处理固定功能流水线的有序列表。
11.如权利要求10所述的介质,其特征在于,进一步存储用于执行包括以下操作的序列的指令:在所述互连几何处理固定功能流水线之间共享所述列表。
12.如权利要求11所述的介质,其特征在于,进一步存储用于执行包括以下操作的序列的指令:跨所述几何处理固定功能流水线共享正被处理的补块句柄的状态。
13.如权利要求12所述的介质,其特征在于,进一步存储用于执行包括以下操作的序列的指令:使用所述共享列表和所述共享状态来在所述几何处理固定功能流水线的每一个中标识哪个几何处理固定功能流水线用于处理下一补块句柄。
14.如权利要求13所述的介质,其特征在于,进一步存储用于执行包括以下操作的序列的指令:将所述流水线分裂为分开的前端和后端。
15.如权利要求14所述的介质,其特征在于,进一步存储用于执行包括以下操作的序列的指令:提供从每个前端到每个后端的通信路径。
16.如权利要求15所述的介质,其特征在于,进一步存储用于执行包括以下操作的序列的指令:向所有后端广播被指定用于接收下一补块句柄的后端的标识符。
17.一种集成电路,包括:
并行互连几何处理固定功能单元;以及
图形处理器,用于在并行互连几何处理固定功能单元之间重新分配补块,而无需访问所述集成电路外部的存储器。
18.如权利要求17所述的电路,其特征在于,所述处理器进一步用于创建并行经标识几何处理固定功能流水线的有序列表。
19.如权利要求18所述的电路,其特征在于,所述处理器用于在所述互连几何处理固定功能流水线之间共享所述列表。
20.如权利要求19所述的电路,其特征在于,所述处理器用于跨所述几何处理固定功能流水线共享正被处理的补块句柄的状态。
21.如权利要求20所述的电路,其特征在于,所述处理器用于使用所述共享列表和所述共享状态来在所述几何处理固定功能流水线的每一个中标识哪个几何处理固定功能流水线用于处理下一补块句柄。
22.如权利要求21所述的电路,其特征在于,所述处理器用于将所述流水线分裂为分开的前端和后端。
23.如权利要求21所述的电路,其特征在于,所述处理器用于提供从每个前端到每个后端的通信路径。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/249,853 | 2016-08-29 | ||
US15/249,853 US9953395B2 (en) | 2016-08-29 | 2016-08-29 | On-die tessellation distribution |
PCT/US2017/045047 WO2018044478A1 (en) | 2016-08-29 | 2017-08-02 | On-die tessellation distribution |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109564676A true CN109564676A (zh) | 2019-04-02 |
CN109564676B CN109564676B (zh) | 2024-04-16 |
Family
ID=61243077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780046878.0A Active CN109564676B (zh) | 2016-08-29 | 2017-08-02 | 管芯上曲面细分分配 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9953395B2 (zh) |
CN (1) | CN109564676B (zh) |
WO (1) | WO2018044478A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2575503B (en) * | 2018-07-13 | 2020-07-01 | Imagination Tech Ltd | Scalable parallel tessellation |
US11010862B1 (en) * | 2019-11-14 | 2021-05-18 | Advanced Micro Devices, Inc. | Reduced bandwidth tessellation factors |
US12125121B2 (en) | 2021-03-24 | 2024-10-22 | Intel Corporation | Tessellation redistribution for reducing latencies in processors |
US12086644B2 (en) | 2021-08-11 | 2024-09-10 | Apple Inc. | Logical slot to hardware slot mapping for graphics processors |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549182A (zh) * | 2003-05-15 | 2004-11-24 | 季永萍 | 基于移动计算的新技术专业增值服务的实现装置 |
US20110267346A1 (en) * | 2010-04-30 | 2011-11-03 | John William Howson | Tessellation of patches of surfaces in a tile based rendering system |
US20110310102A1 (en) * | 2010-06-17 | 2011-12-22 | Via Technologies, Inc. | Systems and methods for subdividing and storing vertex data |
US20140078156A1 (en) * | 2012-09-14 | 2014-03-20 | Advanced Micro Devices, Inc. | Work Distribution for Higher Primitive Rates |
US20140152675A1 (en) * | 2012-12-05 | 2014-06-05 | Advanced Micro Devices, Inc. | Load Balancing for Optimal Tessellation Performance |
CN103996216A (zh) * | 2013-02-20 | 2014-08-20 | 辉达公司 | 用于曲面细分和几何着色器的电力高效属性处置 |
US20140267318A1 (en) * | 2013-03-12 | 2014-09-18 | Nvidia Corporation | Pixel shader bypass for low power graphics rendering |
CN104167015A (zh) * | 2014-07-31 | 2014-11-26 | 浙江大学 | 一种基于表面信号拟合的着色器简化方法、装置及图形渲染方法 |
CN104616327A (zh) * | 2014-07-31 | 2015-05-13 | 浙江大学 | 一种基于曲面细分的着色器简化方法、装置及图形渲染方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8587581B2 (en) | 2009-10-15 | 2013-11-19 | Nvidia Corporation | Order-preserving distributed rasterizer |
US9147224B2 (en) * | 2011-11-11 | 2015-09-29 | Nvidia Corporation | Method for handling state transitions in a network of virtual processing nodes |
US9390554B2 (en) | 2011-12-29 | 2016-07-12 | Advanced Micro Devices, Inc. | Off chip memory for distributed tessellation |
-
2016
- 2016-08-29 US US15/249,853 patent/US9953395B2/en active Active
-
2017
- 2017-08-02 CN CN201780046878.0A patent/CN109564676B/zh active Active
- 2017-08-02 WO PCT/US2017/045047 patent/WO2018044478A1/en active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1549182A (zh) * | 2003-05-15 | 2004-11-24 | 季永萍 | 基于移动计算的新技术专业增值服务的实现装置 |
US20110267346A1 (en) * | 2010-04-30 | 2011-11-03 | John William Howson | Tessellation of patches of surfaces in a tile based rendering system |
US20110310102A1 (en) * | 2010-06-17 | 2011-12-22 | Via Technologies, Inc. | Systems and methods for subdividing and storing vertex data |
US20140078156A1 (en) * | 2012-09-14 | 2014-03-20 | Advanced Micro Devices, Inc. | Work Distribution for Higher Primitive Rates |
US20140152675A1 (en) * | 2012-12-05 | 2014-06-05 | Advanced Micro Devices, Inc. | Load Balancing for Optimal Tessellation Performance |
CN103996216A (zh) * | 2013-02-20 | 2014-08-20 | 辉达公司 | 用于曲面细分和几何着色器的电力高效属性处置 |
US20140267318A1 (en) * | 2013-03-12 | 2014-09-18 | Nvidia Corporation | Pixel shader bypass for low power graphics rendering |
CN104167015A (zh) * | 2014-07-31 | 2014-11-26 | 浙江大学 | 一种基于表面信号拟合的着色器简化方法、装置及图形渲染方法 |
CN104616327A (zh) * | 2014-07-31 | 2015-05-13 | 浙江大学 | 一种基于曲面细分的着色器简化方法、装置及图形渲染方法 |
Non-Patent Citations (1)
Title |
---|
晋宏逵;: "故宫的建筑特征和维修技术选择", 古建园林技术, no. 02, 15 June 2009 (2009-06-15) * |
Also Published As
Publication number | Publication date |
---|---|
US9953395B2 (en) | 2018-04-24 |
US20180060995A1 (en) | 2018-03-01 |
CN109564676B (zh) | 2024-04-16 |
WO2018044478A1 (en) | 2018-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109564700A (zh) | 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化 | |
CN109564699B (zh) | 用于经优化光线追踪的装置和方法 | |
CN109564695A (zh) | 用于高效3d图形流水线的装置和方法 | |
CN109643291A (zh) | 用于在虚拟化执行环境中高效使用图形处理资源的方法和设备 | |
CN109643464A (zh) | 用于高效深度预过程的方法和装置 | |
CN109923519A (zh) | 用于加速多核计算架构中的图形工作负荷的机制 | |
CN109313550A (zh) | 在光线遍历期间减少存储器访问等待时间 | |
CN108694684A (zh) | 共享本地存储器分块机制 | |
CN109478310A (zh) | 在计算环境中使用纹素着色器的多分辨率延迟着色 | |
CN109154990A (zh) | 卷积神经网络中的查找卷积层 | |
CN110136223A (zh) | 使用三角形的属性的加权平均来合并粗像素着色的片段 | |
CN110187977A (zh) | 用于基于软件提示和硬件线程切换来降低寄存器区块冲突的系统和方法 | |
CN108369747A (zh) | 用于在光线追踪架构中提取和使用路径着色一致性的方法和装置 | |
CN106575431A (zh) | 用于高度高效的图形处理单元(gpu)执行模型的方法和装置 | |
CN109196550A (zh) | 用于针对虚拟现实和多视图系统进行交织光栅化和像素着色的架构 | |
CN108701368A (zh) | 用于经实施例化的几何结构的更有效的光线跟踪方法和装置 | |
CN107077833B (zh) | 用于最后排序架构的高效的帧到帧相干性利用的装置和方法 | |
CN110352403A (zh) | 图形处理器寄存器重命名机制 | |
CN110276710A (zh) | 用于改进高速缓存利用率和效率的设备和方法 | |
CN109313557A (zh) | 用于优化gpu线程共享本地存储器访问的装置 | |
CN108780579A (zh) | 使用压缩数据的每样本msaa渲染 | |
CN107533463A (zh) | 用于软件不可知多gpu处理的设备和方法 | |
CN109564676A (zh) | 管芯上曲面细分分配 | |
CN108604185A (zh) | 用于将工作负荷有效地提交到高性能图形子系统的方法和装置 | |
CN108885796A (zh) | 利用平面重复使用的降低精度的光线遍历 |
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 |