CN110956570A - 多图形上下文执行环境中的图形引擎重置和恢复 - Google Patents
多图形上下文执行环境中的图形引擎重置和恢复 Download PDFInfo
- Publication number
- CN110956570A CN110956570A CN201910794876.0A CN201910794876A CN110956570A CN 110956570 A CN110956570 A CN 110956570A CN 201910794876 A CN201910794876 A CN 201910794876A CN 110956570 A CN110956570 A CN 110956570A
- Authority
- CN
- China
- Prior art keywords
- graphics
- reset
- logic
- media
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000011084 recovery Methods 0.000 title description 4
- 238000000034 method Methods 0.000 claims abstract description 71
- 230000004044 response Effects 0.000 claims abstract description 17
- 239000000758 substrate Substances 0.000 claims description 25
- 239000004065 semiconductor Substances 0.000 claims description 18
- 230000015654 memory Effects 0.000 description 92
- 230000006870 function Effects 0.000 description 68
- 238000012545 processing Methods 0.000 description 68
- 238000010586 diagram Methods 0.000 description 36
- 239000000872 buffer Substances 0.000 description 32
- 230000008569 process Effects 0.000 description 27
- 238000013461 design Methods 0.000 description 20
- 238000009877 rendering Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 18
- 238000007667 floating Methods 0.000 description 18
- 239000012634 fragment Substances 0.000 description 15
- 238000003860 storage Methods 0.000 description 13
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 208000019300 CLIPPERS Diseases 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 5
- 208000021930 chronic lymphocytic inflammation with pontine perivascular enhancement responsive to steroids Diseases 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000000875 corresponding effect Effects 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 239000003086 colorant Substances 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 102100038359 Xaa-Pro aminopeptidase 3 Human genes 0.000 description 2
- 101710081949 Xaa-Pro aminopeptidase 3 Proteins 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000035945 sensitivity Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 101150053844 APP1 gene Proteins 0.000 description 1
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 1
- JBRZTFJDHDCESZ-UHFFFAOYSA-N AsGa Chemical compound [As]#[Ga] JBRZTFJDHDCESZ-UHFFFAOYSA-N 0.000 description 1
- 241000555293 Bassariscus astutus Species 0.000 description 1
- 101100264195 Caenorhabditis elegans app-1 gene Proteins 0.000 description 1
- 239000004593 Epoxy Substances 0.000 description 1
- 229910001218 Gallium arsenide Inorganic materials 0.000 description 1
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 1
- 241000492493 Oxymeris Species 0.000 description 1
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 1
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000000206 photolithography Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 229910052594 sapphire Inorganic materials 0.000 description 1
- 239000010980 sapphire Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000008093 supporting effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory 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)
- Multimedia (AREA)
- Controls And Circuits For Display Device (AREA)
- Advance Control (AREA)
- Image Generation (AREA)
Abstract
方法、系统和装置可以提供响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在第一命令流传输器中触发空闲状态的技术。该技术还可以确定与请求相关联的事件类型,以及基于事件类型来进行请求。
Description
技术领域
实施例总体上涉及图形处理架构。更具体地,实施例涉及多图形上下文执行环境中的图形引擎重置和恢复。
背景技术
图形处理架构方面的最近发展可以允许不同的执行上下文在一个或多个共享的执行单元上运行。然而,一个上下文的重置可能导致共享相同的(一个或多个)执行单元的另一个上下文中的工作丢失。
附图说明
通过阅读以下说明书和所附权利要求并且通过参考以下附图,实施例的各种优点对于本领域技术人员将变得显而易见,在附图中:
图1是根据实施例的软件堆栈和图形硬件的示例的图示;
图2是根据实施例的重置序列的示例的图示;
图3是根据实施例的计算系统的示例的框图,该计算系统包含共享的图形硬件;
图4是根据实施例的重置序列的示例的流程图;
图5是根据实施例的操作图形处理器的方法的示例的流程图;
图6是根据实施例的使上下文无效的方法的示例的流程图;
图7是根据实施例的状态机的第一级的示例的示图;
图8是根据实施例的状态机的第二级的示例的示图;
图9是根据实施例的可靠性增强的计算系统的示例的框图;
图10是根据实施例的处理系统的示例的框图;
图11是根据实施例的处理器的示例的框图;
图12是根据实施例的图形处理器的示例的框图;
图13是根据实施例的图形处理器的图形处理引擎的示例的框图;
图14是根据实施例的图形处理器核心的硬件逻辑的示例的框图;
图15A至15B图示了根据实施例的线程执行逻辑的示例;
图16是图示了根据实施例的图形处理器指令格式的示例的框图;
图17是根据实施例的图形处理器的另一示例的框图;
图18A是图示了根据实施例的图形处理器命令格式的示例的框图;
图18B是图示了根据实施例的图形处理器命令序列的示例的框图;
图19图示了根据实施例的针对数据处理系统的示例图形软件架构;
图20A是图示了根据实施例的IP核心开发系统的示例的框图;
图20B图示了根据实施例的集成电路封装组装件的横截面侧视图的示例;
图21是图示了根据实施例的片上系统集成电路的示例的框图;
图22A至22B是图示了根据实施例的在SoC内使用的示例性图形处理器的框图;以及
图23A至23B图示了根据实施例的附加的示例性图形处理器逻辑。
具体实施方式
现在转向图1,示出了软件(SW)堆栈24(24a-24f),其中应用24a准备要在图形硬件26(例如,图形微控制器/GuC硬件的执行单元/EU)上执行的工作。该工作可以与例如媒体回放、虚拟现实(VR)、增强现实(AR)、游戏、和/或涉及可视内容的渲染或显示的其他环境相关联。一般而言,三维(3D)工作可能以渲染命令流传输器(streamer)(RCS,例如,在“渲染引擎”中)为目标,而计算密集型工作(例如,物理计算)可以以计算命令流传输器(CCS,例如,在“计算引擎”中)为目标。如将更加详细讨论的,RCS和CCS在图形硬件26的级别处共享资源。因此,来自RCS的执行上下文(例如,描述背景和前景颜色、函数、线的样式、填充图案、线的宽度、文本字体、以及在绘图命令中使用的其他属性的数据)可以与来自CCS的执行上下文在同一组EU上运行。
在所图示的示例中,堆栈24还包括用户模式图形驱动器24b、用户模式操作系统(OS)24c、内核模式OS 24d、内核模式图形驱动器24e和图形调度器24f(例如,固件/FW或驱动器SW的部分)。在一个示例中,内核模式图形驱动器24e被认为是“主机”。当确定工作负载提交没有足够快地通过堆栈24进行时,可以请求一个或多个命令流传输器的重置。此外,可以从堆栈24中的各个级别请求重置,该各个级别诸如例如内核模式OS 24d、内核模式图形驱动器24e和/或图形调度器24f。例如,如果图形调度器24f提交了高优先级工作项,并且该工作项未在一定量的时间内完成,则图形调度器24f可能会假设命令流传输器和/或图形硬件26“挂起(hung)”。在这种情况下,图形调度器24f提交重置请求。
如将更加详细讨论的,重置可以涉及使命令流传输器停止(例如,防止上下文切换)。然后对图形硬件26中的寄存器实行写入,其中该写入迫使图形硬件26进入重置状态中(例如,流水线和上下文数据被强制地抽空/转储清除)。在实施例中,调度器24f然后检测被重置的上下文标识符并且报告在堆栈24中更高的上下文标识符。然后可以通知相关联的过程其上下文被重置,并且应用24a丢弃或者重新提交导致了该重置的工作负载。
本文中描述的技术使得对一个命令流传输器的重置能够在没有在另一个命令流传输器中丢失工作的“附带损害”的情况下进行,即使这两个命令流传输器在图形硬件26中共享相同的资源亦如此。更特别地,在实行重置时可以考虑重置的类型,鉴于可能引起重置的多个数量的源,这是特别有利的。因此,可以实现增强的可靠性。
图2示出了重置序列,其中一组执行单元28(28a-28d)由多个上下文共享。在所图示的示例中,在时间t0处,第一上下文在EU 28的第一子集28a和28b上运行,并且第二上下文在EU 28的第二子集28c和28d上运行。响应于重置第一上下文的请求,在时间t1处,在第二上下文中触发(例如,经由抢占(preempt)到空闲/PTI命令)空闲状态。一旦检测到/确认了空闲状态转换的完成,就可以在时间t2处重置该组EU 28。附加地,可以将适当的上下文标记为受影响的,并且生成GuC到主机(G2H)重置完成消息。因此,所图示的解决方案防止了EU 28的第二子集28c和28d中的工作丢失。
在一个示例中,所涉及的数据结构包括存储部分硬件状态和软件跟踪状态的上下文/上下文描述符(例如,逻辑上下文和相关联的元状态)。上下文/上下文描述符可以被用来标记上下文被重置(例如,由调度器重置)。在实施例中,上下文状态的大多数部分对于工作提交器(submitter)是不可访问的,并且被维持为不透明的数据结构(尽管对于调度器是可见的)。数据结构还包括工作队列(WQ),该工作队列是应用或工作提交器用来提交用于执行的上下文的缓冲器,该执行针对提交器选择的特定引擎。调度器可以消耗该缓冲器,并且在调度器认为合适时将工作提交给硬件。WQ可以包括一些状态数据,诸如提交器可访问并且指示工作是否由于重置而停止的标志。附加地,混杂的(miscellaneous)缓冲器可以被用作明确定义的接口,以用于在更高的特权级别处与内核驱动器进行通信(例如,用于请求对性能差的应用的重置),以及用于主机到调度器(例如,主机到GuC)通信。
图3示出了支持多图形上下文执行环境的计算系统30。在所图示的示例中,多个应用32(“APP1”、“APP2”、“APP3”、“APP4”等)将工作提交给调度器34。调度器34通常将工作项发布到渲染引擎36和计算引擎38中的执行列表提交队列(ELSQ)。更特别地,APP1应用经由图形工作队列40将图形工作项提交给调度器34,并且经由计算工作队列42将计算工作项提交给调度器34,其中所图示的调度器34将项从队列40、42分派(dispatch)到渲染命令流传输器(CS)46中的E0队列。APP2应用经由计算工作队列44将计算工作项提交给调度器34,其中调度器34可以将计算工作项从计算工作队列44分派到渲染CS 46中的E1队列。在所图示的示例中,APP3应用经由图形工作队列48将图形工作项提交给调度器34,其中调度器34将图形工作项从图形工作队列48分派到渲染CS 46中的E2队列。APP3应用还可以经由图形工作队列50将图形工作项提交给调度器34,其中调度器34将图形工作项从图形工作队列50分派到渲染CS 46中的E3队列。
在所图示的示例中,APP4应用经由计算工作队列52将计算工作项提交给调度器34,其中调度器34可以将计算工作项从计算工作队列52分派到计算引擎38中的计算CS 54中的E0队列。在一个实施例中,渲染引擎36和计算引擎38二者都使用通用前端(GPFE,例如图形硬件)56来执行工作项。本文中描述的技术使得例如渲染CS 46的重置能够在没有对计算CS 54的附带损害的情况下进行,即使两个命令流传输器36、38共享GPFE 56亦如此。更特别地,在实行重置时可以考虑重置的类型,鉴于可能引起重置的多个数量的源,这是特别有利的。因此,可以实现增强的可靠性。
所图示的渲染引擎36还包括:仅方位的命令流传输器(POCS)、顶点取指记录(VFR)和通用命令流传输器(GPCS1)。在一个示例中,GPFE 56包括多个视频前端(VFE,例如VFE0、VFE1、VFE2)。
现在转向图4,示出了重置序列60。在所图示的示例中,主机到GuC(H2G)重置请求62、媒体重置请求64、和/或抢占量(preemption quantum)到期重置请求66发起了关于引擎“E”的重置准备过程68。一般而言,H2G重置请求62是经由主机到调度器接口的外部事件,其指示实行引擎重置的驱动器请求。媒体重置请求64可以是内部确定,即媒体操作(例如,回放操作)已经超时并且要求逻辑重置(例如,调整环形缓冲器中的头部和尾部偏移)。在这方面,环形缓冲器是数据结构,也被称为循环队列。内核模式驱动器(KMD)将数据(例如,将由硬件消耗的命令)写入该结构中。环尾部是如下位置:该位置保持当前可以将数据写入的环中的偏移。可以由KMD更新的环尾部是保持要消耗的下一个有效命令的位置。
在一个示例中,当工作负载已经花费太多时间来响应优雅地抢占其相应时间片的请求时,发生到期重置请求66。重置准备过程68可以包括例如:在内部结构中标记适当的标志(例如,ResetPending)、停止在引擎E和全部相关引擎Ed上的工作项(例如,工作负载)的调度、发布PTI程序操作、以及从要求重置的中断服务例程(ISR)返回。在所图示的示例中,相对于E下的全部引擎实例、而不是被标记以用于重置的实例和仍然起作用的全部相关引擎,来发布对PTI程序操作的空闲响应70。在一个示例中,通过对上下文状态缓冲器(CSB)进行编程来发布空闲响应70。
重置准备就绪检测过程72确定是否可以重置命令流传输器。准备就绪检测程序72可以确定E上的全部相关引擎Ed是空闲的还是依次被标记以用于重置。当进行重置是安全的时,重置过程74实行所图示的重置,其中可能存在异步发生的不同类型的重置事件。在这方面,可以使用诸如下面的表I之类的表来进行基于事件类型和上下文状态的重置。
表I
在表I中,“IPC”代表无效代理内容,“IDC”代表无效直接上下文,“MRF”代表媒体重置流,“是”意指请求该类型的重置,“否”意指不请求该类型的重置,“1”意指采取对应的动作,并且“0”意指不采取对应的动作。重置过程74通常可以涉及:标记针对所讨论的引擎有错误的过程描述符(例如,应用句柄)和上下文描述符数据结构。重置过程74还可以涉及利用挂起的上下文的上下文标识符(ID)来标记上下文共享区域中的适当字段(例如,WasReset字段)。在一个示例中,重置过程74进一步包括:暂停引擎、处理上下文状态缓冲器、保存寄存器、将图形调试重置(GDRST)值写入硬件寄存器以重置引擎、恢复寄存器、初始化命令流传输器、以及取消暂停命令流传输器。
根据表I,对于除媒体重置之外的任何类型的重置,挂起的上下文被标记为针对该引擎有错误。如果从主机(例如,内核模式驱动器)请求重置,则代理上下文被标记为有错误,而不管哪个上下文在硬件上是起作用的。在一个示例中,媒体重置流包括:通过在批处理之后推进环的头部来跳过当前正在执行的批处理缓冲器、进行硬件引擎重置、以及重新调度媒体工作负载。
所图示的序列60还包括:后重置过程76,其检查全部相关引擎的状态,并且如果重置请求是待决的,则发起另一个重置。如果没有重置请求是待决的,并且该重置源自主机,则可以向主机发送重置完成消息。后重置过程76还可以包括:调度器开始丢弃在上下文描述符字段中标记的引擎的工作负载,该上下文描述符字段诸如例如QueueEngineError字段。在这方面,主机可以读取该字段以确定哪些引擎被标记以用于重置,其中将不会针对那些引擎处理工作项。如将更加详细讨论的,主机和/或用户模式驱动器可以将特殊工作项插入到工作队列中(例如,绕过OS)以确认重置完成消息。
在这方面,如果工作负载调度器正在运行——其与内核模式驱动器(KMD,例如作为与驱动器分离且并行的固件)的OS操作断开,则特殊工作项当主机在渲染CS上发起的重置导致了计算CS的附带重置(例如,抢占量到期)时处理该情形。当调度器在内部决定重置计算CS作为附带措施时,以其他方式,主机可能不会立即意识到CCS重置。为了避免在错误工作负载的情况下执行上下文,主机或应用可以检测工作,并且显式地请求调度器继续解析来自该工作队列的工作。
图5示出了操作图形处理器的方法80。方法80通常可以在已经讨论的诸如例如图形硬件26(图1)之类的图形硬件中实现。更特别地,方法80可以被实现为一组逻辑指令中的一个或多个模块,该组逻辑指令被存储在诸如随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪速存储器等的非暂时性机器或计算机可读存储介质中,被存储在诸如例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)之类的可配置逻辑中,被存储在使用诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术之类的电路技术的固定功能硬件逻辑、或其任何组合中。
例如,用以执行方法80中所示的操作的计算机程序代码可以用一种或多种编程语言的任何组合来编写,该编程语言包括:诸如JAVA、SMALLTALK、C++等等的面向对象的编程语言,以及诸如“C”编程语言或类似编程语言之类的常规过程编程语言。附加地,逻辑指令可能包括:汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使电子电路和/或对硬件是原生的其他结构组件(例如,主机处理器、中央处理单元/CPU、微控制器等)个性化的状态信息。
所图示的处理块82提供的是,响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在第一命令流传输器中触发空闲状态。在一个示例中,块82包括发布PTI命令。在所图示的示例中,块84确定与请求相关联的事件类型。如已经指出的,事件类型可能是主机重置请求、到期重置请求、媒体重置请求等等。块86基于事件类型进行重置并且使图形硬件中的一个或多个上下文无效。块86可以使用如表I中所反映的一组规则。在一个示例中,块86还包括向主机处理器发送重置完成消息(例如,如果事件类型是主机重置请求的话)。
因此,所图示的方法80通过将相关命令流传输器中的空闲状态的触发与对重置和上下文无效进行定制(tailor)组合成重置事件的类型来增强可靠性。增强的可靠性可以进而导致经改进的用户体验(例如,更平滑的媒体回放、更可预测的图形性能等)。实际上,在对于服务攻击的拒绝的较少敏感性方面,增强的可靠性还可以改进安全性。
图6示出了使上下文无效的方法81。可以容易地并入到已经讨论的块86(图5)中的方法81一般可以在一个或多个模块中被实现为一组逻辑指令,该组逻辑指令被存储在诸如RAM、ROM、PROM、固件、闪速存储器等的机器或计算机可读存储介质中,被存储在诸如例如PLA、FPGA、CPLD之类的可配置逻辑中,被存储在使用诸如例如ASIC、CMOS、TTL技术之类的电路技术的固定功能硬件逻辑、或其任何组合中。
所图示的处理块83提供的是,确定事件类型是否是主机重置请求。如果是,则在块85处,在图形硬件中使代理上下文和在硬件上起作用的任何直接上下文无效。如所示出的使代理上下文和直接上下文无效优先考虑OS和主机重置请求而不是其他类型的重置请求。如果事件类型不是主机重置请求,则可以在块89处确定事件类型是否是另一个非媒体重置,诸如例如到期重置。如果事件类型是另一个非媒体重置,则所图示的块90使图形硬件中的挂起的上下文无效。因此,如果关于代理上下文检测到挂起,则块90使代理上下文无效。然而,如果关于直接上下文检测到挂起,则块90使直接上下文无效。块87确定事件类型是否是媒体重置请求。如果是,则在块88处遵循媒体重置流。在一个示例中,块88包括:通过在批处理之后推进环的头部来跳过当前正在执行的批处理缓冲器、进行硬件命令流传输器重置、以及重新调度媒体工作负载。
图7示出了状态机的第一级92,其中共享的图形硬件从无重置待决状态(1.0)转换到重置就绪状态(3.0)。在所图示的示例中,考虑了三种不同的事件类型(例如,H2G、媒体和抢占到期)并且处理了待决事件。
图8示出了状态机的第二级94,其中共享的图形硬件从重置就绪状态(3.0)转换到完成状态(6.0)。在所图示的示例中,考虑了三种不同的上下文状态(例如,代理上下文、直接上下文、无上下文)以及错误状态(9.1)。
图9示出了计算系统150,该计算系统一般可以是电子设备/系统的部分,该电子设备/系统具有计算功能(例如,个人数字助理/PDA、笔记本计算机、平板计算机、可转换平板设备、服务器)、通信功能(例如,智能电话)、成像功能(例如,相机、摄像机)、媒体播放功能(例如,智能电视/TV)、可穿戴功能(例如,手表、眼镜、头饰、鞋类、珠宝)、车辆功能(例如,汽车、卡车、摩托车)、机器人功能(例如,自主机器人)等、或其任何组合。在所图示的示例中,系统150包括图形处理器152(例如,图形处理单元/GPU)和主机处理器154(例如,中央处理单元/CPU),该主机处理器154具有一个或多个处理器核心156和耦合到系统存储器160的集成存储器控制器(IMC)158。
附加地,所图示的系统150包括与SoC 164(例如,半导体管芯)上的主机处理器154和图形处理器152一起实现的输入输出(IO)模块162。在一个示例中,IO模块162与显示器166(例如,触摸屏、液晶显示器/LCD、发光二极管/LED显示器)、网络控制器168(例如,有线和/或无线)以及大容量存储装置170(例如,硬盘驱动器/HDD、光盘、固态驱动器/SSD、闪速存储器)进行通信。
所图示的图形处理器152包括:共享图形硬件172和逻辑174(例如,逻辑指令、可配置逻辑、固定功能硬件逻辑等、或其任何组合)以实行已经讨论的方法80(图5)和/或方法81(图6)的一个或多个方面。因此,逻辑174可以响应于重置与第一命令流传输器共享图形硬件172的第二命令流传输器的请求而在第一命令流传输器中触发空闲状态。在一个示例中,逻辑174还确定与请求相关联的事件类型,并且基于事件类型进行重置。逻辑174还可以向主机处理器154发送重置完成消息。在一个示例中,系统存储器160和/或大容量存储装置170是包括指令的存储器设备,该指令当由主机处理器154执行时,使得主机处理器154利用特殊工作项来确认重置完成消息。
SoC 164可以包括一个或多个衬底(例如,硅、蓝宝石、砷化镓),其中逻辑174是耦合到(一个或多个)衬底的晶体管阵列和其他集成电路/IC组件。在一个示例中,逻辑174包括定位(例如,嵌入)在(一个或多个)衬底内的晶体管沟道区域。因此,逻辑174与(一个或多个)衬底68之间的物理接口可以不是突出的结。逻辑174还可以被认为包括在(一个或多个)衬底的初始晶圆上生长的外延层。可以认为计算系统150在可以实现生产图形软件和硬件堆栈的正确操作和恢复的程度上是可靠性增强的。实际上,所图示的系统150的增强的可靠性实现了更好的用户体验,以及对于服务攻击的拒绝的更少敏感性。
系统概览
图10是根据实施例的处理系统100的框图。在各种实施例中,系统100包括一个或多个处理器102和一个或多个图形处理器108,并且可以是单处理器台式系统、多处理器工作站系统或具有大量处理器102或处理器核心107的服务器系统。在一个实施例中,系统100是被并入到用于在移动设备、手持设备或嵌入式设备中使用的片上系统(SoC)集成电路内的处理平台。
在一个实施例中,系统100可以包括下述各项或被并入到下述各项内:基于服务器的游戏平台;游戏控制台,包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,系统100是移动电话、智能电话、平板计算设备或移动互联网设备。处理系统100还可以包括可穿戴设备、与可穿戴设备耦合或被集成在可穿戴设备内,该可穿戴设备诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,处理系统100是电视或机顶盒设备,其具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。
在一些实施例中,一个或多个处理器102均包括用以处理指令的一个或多个处理器核心107,该指令在被执行时实行系统和用户软件的操作。在一些实施例中,一个或多个处理器核心107中的每一个处理器核心被配置成处理具体的指令集109。在一些实施例中,指令集109可以便于复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核心107可以均处理不同的指令集109,该指令集109可以包括用以便于对其他指令集进行仿真的指令。处理器核心107还可以包括其他处理设备,诸如数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓冲存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,在处理器102的各种组件当中共享高速缓冲存储器。在一些实施例中,处理器102还使用外部高速缓存(例如,3级(L3)高速缓存或末级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术来在处理器核心107当中共享该外部高速缓存。附加地,寄存器文件106被包括在处理器102中,该处理器102可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以专用于处理器102的设计。
在一些实施例中,一个或多个处理器102与一个或多个接口总线110耦合以在处理器102与系统100中的其他组件之间传输通信信号,诸如地址、数据、或控制信号。在一个实施例中,接口总线110可以是处理器总线,诸如直接媒体接口(DMI)总线的一个版本。然而,处理器总线不限于DMI总线,并且可以包括一个或多个外围组件互连总线(例如,PCI、PCI快速)、存储器总线或其他类型的接口总线。在一个实施例中,(一个或多个)处理器102包括集成存储器控制器116和平台控制器中枢130。存储器控制器116便于存储器设备与系统100的其他组件之间的通信,而平台控制器中枢(ICH)130经由本地I/O总线提供与I/O设备的连接。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备、相变存储器设备、或具有合适的性能以充当处理存储器的一些其他存储器设备。在一个实施例中,存储器设备120可作为系统100的系统存储器进行操作,以存储数据122和指令121,以供在一个或多个处理器102执行应用或过程时使用。存储器控制器116还与可选的外部图形处理器112耦合,该可选的外部图形处理器112可以与处理器102中的一个或多个图形处理器108通信,从而实行图形和媒体操作。在一些实施例中,显示设备111可以连接到(一个或多个)处理器102。显示设备111可以是如在移动电子设备或膝上型设备中的内部显示设备、或经由显示接口(例如,DisplayPort等)附接的外部显示设备中的一个或多个。在一个实施例中,显示设备111可以是头戴式显示器(HMD),诸如用于虚拟现实(VR)应用或增强现实(AR)应用的立体显示设备。
在一些实施例中,平台控制器中枢130使得外围设备能够经由高速I/O总线连接到存储器设备120和处理器102。I/O外围设备包括但不限于音频控制器146、网络控制器134、固件接口128、无线收发器126、触摸传感器125、数据存储设备124(例如,硬盘驱动器、闪速存储器等)。数据存储设备124可以经由存储接口(例如,SATA)或经由外围总线(诸如,外围组件互连总线(例如,PCI、PCI快速))进行连接。触摸传感器125可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器126可以是Wi-Fi收发器、蓝牙收发器或移动网络收发器,诸如3G、4G或长期演进(LTE)收发器。固件接口128使得能够与系统固件进行通信,并且可以是例如统一的可扩展固件接口(UEFI)。网络控制器134可以使得能够实现与有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线110耦合。在一个实施例中,音频控制器146是多声道高清晰度音频控制器。在一个实施例中,系统100包括:可选的传统I/O控制器140,以用于将传统(例如,个人系统2(PS/2))设备耦合到系统。平台控制器中枢130还可以连接到一个或多个通用串行总线(USB)控制器142,以便连接输入设备,诸如键盘和鼠标143组合、相机144或其他USB输入设备。
将领会的是,所示出的系统100是示例性的而非限制性的,这是因为还可以使用以不同方式配置的其他类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可以集成到分立的外部图形处理器中,该外部图形处理器诸如外部图形处理器112。在一个实施例中,平台控制器中枢130和/或存储器控制器116可以在一个或多个处理器102的外部。例如,系统100可以包括外部的存储器控制器116和平台控制器中枢130,它们可以被配置为与(一个或多个)处理器102通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。
图11是处理器200的实施例的框图,该处理器200具有一个或多个处理器核心202A-202N、集成存储器控制器214、以及集成图形处理器208。图11的具有与本文中的任何其他图的元件相同的附图标记(或名称)的那些元件可以用与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但是不限于此。处理器200可以包括附加核心,这些附加核心多达且包括由虚线框表示的附加核心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快速总线。系统代理核心210提供针对各种处理器组件的管理功能。在一些实施例中,系统代理核心210包括一个或多个集成存储器控制器214以管理对各种外部存储器设备(未示出)的访问。
在一些实施例中,处理器核心202A-202N中的一个或多个处理器核心包括对同时多线程的支持。在这种实施例中,系统代理核心210包括:用于在多线程处理期间对核心202A-202N进行协调和操作的组件。附加地,系统代理核心210可以包括功率控制单元(PCU),该功率控制单元包括用以调节处理器核心202A-202N和图形处理器208的功率状态的逻辑和组件。
在一些实施例中,附加地,处理器200包括用以执行图形处理操作的图形处理器208。在一些实施例中,图形处理器208与该组共享的高速缓存单元206、和系统代理核心210耦合,该系统代理核心包括一个或多个集成存储器控制器214。在一些实施例中,系统代理核心210还包括显示控制器211,以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器211可以是经由至少一个互连件与图形处理器耦合的分离模块,或者可以集成在图形处理器208内。
在一些实施例中,基于环的互连单元212被用来耦合处理器200的内部组件。然而,可以使用可替换的互连单元,诸如点对点互连、切换式互连或其他技术,包括本领域中公知的技术。在一些实施例中,图形处理器208经由I/O链路213与环形互连件212耦合。
示例性I/O链路213表示多个种类的I/O互连件中的至少一个,包括便于各种处理器组件与高性能嵌入式存储器模块218(诸如,eDRAM模块)之间的通信的封装I/O互连件。在一些实施例中,处理器核心202A-202N中的每一个处理器核心以及图形处理器208将嵌入式存储器模块218用作共享的末级高速缓存。
在一些实施例中,处理器核心202A-202N是执行相同指令集架构的同质的核心。在另一实施例中,处理器核心202A-202N在指令集架构(ISA)方面是异质的,其中处理器核心202A-202N中的一个或多个执行第一指令集,而其他核心中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核心202A-202N在微架构方面是同质的,其中具有相对较高功耗的一个或多个核心与具有较低功耗的一个或多个功率核心耦合。附加地,处理器200可以被实现在一个或多个芯片上,或者被实现为具有除其他组件之外的所图示的组件的SoC集成电路。
图12是图形处理器300的框图,该图形处理器300可以是分立的图形处理单元,或者可以是与多个处理核心集成的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射I/O接口并且利用被放置在处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用以访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享的外部高速缓存、和/或到系统存储器的接口。
在一些实施例中,图形处理器300还包括显示控制器302,以将显示输出数据驱动到显示设备320。显示控制器302包括用于显示器的一个或多个重叠(overlay)平面以及多层视频或用户界面元素的组成的硬件。显示设备320可以是内部或外部显示设备。在一个实施例中,显示设备320是头戴式显示设备,诸如虚拟现实(VR)显示设备或增强现实(AR)显示设备。在一些实施例中,图形处理器300包括视频编解码器引擎306,以将媒体编码成一个或多个媒体编码格式、将媒体从一个或多个媒体编码格式进行解码、或者在一个或多个媒体编码格式之间对媒体进行转码,该一个或多个媒体编码格式包括但不限于:运动图像专家组(MPEG)格式(诸如,MPEG-2)、高级视频编码(AVC)格式(诸如,H.264/MPEG-4 AVC),以及电影和电视工程师协会(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包括:可编程和固定功能元件,其实行元件内的各种任务和/或产生到3D/媒体子系统315的执行线程。虽然3D流水线312可以被用来实行媒体操作,但是GPE 310的实施例还包括具体地用于实行媒体操作的媒体流水线316,该媒体操作诸如视频后处理和图像增强。
在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元,以代替或代表视频编解码器引擎306来实行一个或多个专用媒体操作,诸如视频解码加速、视频解交织以及视频编码加速。在一些实施例中,媒体流水线316附加地包括线程产生单元,以产生用于在3D/媒体子系统315上执行的线程。所产生的线程在3D/媒体子系统315中所包括的一个或多个图形执行单元上实行针对媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括:用于执行由3D流水线312和媒体流水线316产生的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统315发送线程执行请求,该3D/媒体子系统包括用于仲裁各种请求并且将各种请求分派到可用的线程执行资源的线程分派逻辑。执行资源包括用以处理3D和媒体线程的图形执行单元阵列。在一些实施例中,3D/媒体子系统315包括:用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,该子系统还包括共享的存储器(包括寄存器和可寻址存储器)以便在线程之间共享数据以及存储输出数据。
图形处理引擎
图13是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(GPE)410是图12中示出的GPE 310的一个版本。图13的具有与本文中的任何其他图的元件相同的附图标记(或名称)的元件可以用与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但是不限于此。例如,图示了图12的3D流水线312和媒体流水线316。媒体流水线316在GPE 410的一些实施例中是可选的,并且可以不被显式地包括在GPE 410内。例如并且在至少一个实施例中,分离的媒体和/或图像处理器耦合到GPE 410。
在一些实施例中,GPE 410与命令流传输器403耦合或包括命令流传输器403,该命令流传输器向3D流水线312和/或媒体流水线316提供命令流。在一些实施例中,命令流传输器403与存储器耦合,该存储器可以是系统存储器,或者是内部高速缓冲存储器和共享高速缓冲存储器中的一个或多个。在一些实施例中,命令流传输器403从存储器接收命令,并且将该命令发送至3D流水线312和/或媒体流水线316。该命令是从存储了用于3D流水线312和媒体流水线316的命令的环形缓冲器获取的指示符(directive)。在一个实施例中,环形缓冲器可以附加地包括存储批量的多个命令的批处理命令缓冲器。用于3D流水线312的命令还可以包括对存储在存储器中的数据的引用,该数据诸如但不限于:用于3D流水线312的顶点和几何数据、和/或用于媒体流水线316的图像数据和存储器对象。3D流水线312和媒体流水线316通过经由相应流水线内的逻辑来实行操作或者通过将一个或多个执行线程分派到图形核心阵列414来处理命令和数据。在一个实施例中,图形核心阵列414包括一个或多个图形核心块(例如,(一个或多个)图形核心415A、(一个或多个)图形核心415B),每个块包括一个或多个图形核心。每个图形核心包括:一组图形执行资源,其包括用以实行图形和计算操作的通用和图形特定的执行逻辑,以及固定功能纹理处理、和/或机器学习和人工智能加速逻辑。
在各种实施例中,3D流水线312包括固定功能和可编程逻辑,以通过处理指令并将执行线程分派到图形核心阵列414来实行一个或多个着色器程序,诸如顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序。图形核心阵列414提供统一的执行资源块,以用于处理这些着色器程序。图形核心阵列414的(一个或多个)图形核心415A-414B内的多用途执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行与多个着色器相关联的多个同时执行线程。
在一些实施例中,图形核心阵列414还包括:用以实行诸如视频和/或图像处理之类的媒体功能的执行逻辑。在一个实施例中,执行单元附加地包括:可编程以便实行除图形处理操作之外的并行通用计算操作的通用逻辑。通用逻辑可以与图10的(一个或多个)处理器核心107或如图11中的核心202A-202N内的通用逻辑并行地或结合地实行处理操作。
由在图形核心阵列414上执行的线程所生成的输出数据可以将数据输出到统一返回缓冲器(URB)418中的存储器。URB 418可以存储针对多个线程的数据。在一些实施例中,URB 418可以被用来在图形核心阵列414上执行的不同线程之间发送数据。在一些实施例中,URB 418可以附加地用于在共享功能逻辑420内的固定功能逻辑与图形核心阵列上的线程之间进行同步。
在一些实施例中,图形核心阵列414是可缩放的,使得该阵列包括可变数量的图形核心,这些图形核心均基于GPE 410的目标功率和性能水平而具有可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的,使得可以根据需要来启用或禁用执行资源。
图形核心阵列414与共享功能逻辑420耦合,该共享功能逻辑包括在图形核心阵列中的图形核心之间共享的多个资源。共享功能逻辑420内的共享功能是向图形核心阵列414提供专用补充功能的硬件逻辑单元。在各种实施例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信(ITC)423逻辑。附加地,一些实施例实现了共享功能逻辑420内的一个或多个高速缓存425。
在针对给定专用功能的需求不足以包括在图形核心阵列414内的情况下,实现共享的功能。代替地,该专用功能的单个实例化被实现为共享功能逻辑420中的独立实体,并且在图形核心阵列414内的执行资源当中被共享。在图形核心阵列414之间共享并且被包括在图形核心阵列414内的精确的一组功能跨实施例而有所不同。在一些实施例中,共享功能逻辑420内的由图形核心阵列414广泛使用的特定共享功能可以被包括在图形核心阵列414内的共享功能逻辑416内。在各种实施例中,图形核心阵列414内的共享功能逻辑416可以包括共享功能逻辑420内的一些逻辑或全部逻辑。在一个实施例中,共享功能逻辑420内的全部逻辑元件可以被复制在图形核心阵列414的共享功能逻辑416内。在一个实施例中,共享功能逻辑420被排除以支持图形核心阵列414内的共享功能逻辑416。
图14是根据本文中描述的一些实施例的图形处理器核心500的硬件逻辑的框图。图14的具有与本文中的任何其他图的元件相同的附图标记(或名称)的元件可以用与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但是不限于此。在一些实施例中,所图示的图形处理器核心500被包括在图13的图形核心阵列414内。图形处理器核心500(有时被称为核心切片)可以是模块化图形处理器内的一个或多个图形核心。图形处理器核心500是一个图形核心切片的示例,并且如本文中所描述的图形处理器可以基于目标功率和性能包络而包括多个图形核心切片。每个图形处理器核心500可以包括与多个子核心501A-501F(也被称为子切片)耦合的固定功能块530,该多个子核心包括通用和固定功能逻辑的模块化块。
在一些实施例中,固定功能块530包括:几何/固定功能流水线536,其可以由图形处理器核心500中的全部子核心所共享,例如,在较低性能和/或较低功率图形处理器实现方式中。在各种实施例中,几何/固定功能流水线536包括:3D固定功能流水线(例如,如图12和图13中的3D流水线312)、视频前端单元、线程产生器和线程分派器、以及管理统一的返回缓冲器的统一的返回缓冲器管理器,追图13的统一的返回缓冲器418。
在一个实施例中,固定功能块530还包括:图形SoC接口537、图形微控制器538和媒体流水线539。图形SoC接口537在图形处理器核心500与片上系统集成电路内的其他处理器核心之间提供接口。图形微控制器538是可编程子处理器,其可配置成管理图形处理器核心500的各种功能,包括线程分派、调度和抢占。媒体流水线539(例如,图12和图13的媒体流水线316)包括:用以便于多媒体数据(包括图像和视频数据)的解码、编码、预处理和/或后处理的逻辑。媒体流水线539经由在子核心501-501F内计算逻辑或对逻辑进行采样的请求来实现媒体操作。
在一个实施例中,SoC接口537使得图形处理器核心500能够与通用应用处理器核心(例如,CPU)和/或SoC内的其他组件进行通信,该其他组件包括诸如共享的末级高速缓冲存储器的存储器层级元件、系统RAM和/或嵌入式片上或封装上DRAM。SoC接口537还可以使得能够与SoC内的固定功能设备(诸如,相机成像流水线)进行通信,并且使得能够使用和/或实现可以在图形处理器核心500与SoC内的CPU之间共享的全局存储器原子。SoC接口537还可以实现图形处理器核心500的功率管理控制,并且启用图形核心500的时钟域与SoC内的其他时钟域之间的接口。在一个实施例中,SoC接口537使得能够从命令流传输器和全局线程分派器接收命令缓冲器,该命令流传输器和全局线程分派器被配置成向图形处理器内的一个或多个图形核心中的每一个提供命令和指令。当要实行媒体操作时,可以将命令和指令分派给媒体流水线539,或者在要实行图形处理操作时,可以将命令和指令分派给几何和固定功能流水线(例如,几何和固定功能流水线536、几何和固定功能流水线514)。
图形微控制器538可以被配置成实行图形处理器核心500的各种调度和管理任务。在一个实施例中,图形微控制器538可以在子核心501A-501F内的执行单元(EU)阵列502A-502F、504A-504F内的各种图形并行引擎上实行图形和/或计算工作负载调度。在该调度模型中,在包括图形处理器核心500的SoC的CPU核心上执行的主机软件可以将工作负载提交给多个图形处理器门铃之一,该图形处理器门铃在适当的图形引擎上调用调度操作。调度操作包括:确定下一个要运行的工作负载,将工作负载提交给命令流传输器,抢占引擎上运行的现有工作负载,监测工作负载的进度,以及在工作负载完成时通知主机软件。在一个实施例中,图形微控制器538还可以便于图形处理器核心500的低功率或空闲状态,从而为图形处理器核心500提供如下能力:独立于操作系统和/或系统上的图形驱动器软件,跨低功率状态转换来保存和恢复图形处理器核心500内的寄存器。
图形处理器核心500可以具有多于或少于所图示的子核心501A-501F,至多N个模块化子核心。对于N个子核心的每一组,图形处理器核心500还可以包括:共享功能逻辑510、共享和/或高速缓冲存储器512、几何/固定功能流水线514、以及用以使各种图形和计算处理操作加速的附加固定功能逻辑516。共享功能逻辑510可以包括:与图13的共享功能逻辑420(例如,采样器、数学和/或线程间通信逻辑)相关联的逻辑单元,该逻辑单元可以由图形处理器核心500内的每个N个子核心共享。共享和/或高速缓冲存储器512可以是针对图形处理器核心500内的该组N个子核心501A-501F的末级高速缓存,并且还可以用作可由多个子核心访问的共享存储器。固定功能块530内可以包括几何/固定功能流水线514而不是几何/固定功能流水线536,并且几何/固定功能流水线514可以包括相同或类似的逻辑单元。
在一个实施例中,图形处理器核心500包括:附加固定功能逻辑516,其可以包括供图形处理器核心500使用的各种固定功能加速逻辑。在一个实施例中,附加固定功能逻辑516包括:用于在仅方位的着色中使用的附加几何流水线。在仅方位的着色中,存在两个几何流水线:即,几何/固定功能流水线516、536内的完整几何流水线、以及剔除(cull)流水线,该剔除流水线是可以被包括在附加固定功能逻辑516内的附加几何流水线。在一个实施例中,剔除流水线是完整几何流水线的经削减的版本。完整流水线和剔除流水线可以执行相同应用的不同实例,每个实例具有分离的上下文。仅方位的着色可以隐藏已丢弃的三角形的长剔除运行,从而使得能够在某些实例中更早地完成着色。例如并且在一个实施例中,附加固定功能逻辑516内的剔除流水线逻辑可以与主应用并行地执行方位着色器,并且通常比完整流水线更快地生成关键结果,这是因为剔除流水线仅对顶点的方位属性进行获取和着色,而不实行光栅化和将像素渲染到帧缓冲器。剔除流水线可以使用所生成的关键结果来计算全部三角形的可见性信息,而不管这些三角形是否被剔除。完整流水线(其在该实例中可以被称为回放流水线)可以消耗可见性信息以跳过所剔除的三角形,从而仅对最终传递到光栅化阶段的可见三角形进行着色。
在一个实施例中,附加固定功能逻辑516还可以包括机器学习加速逻辑(诸如,固定功能矩阵乘法逻辑),以用于包括对机器学习训练或推断的优化的实现方式。
在每个图形子核心501A-501F内包括一组执行资源,该执行资源可以用于响应于图形流水线、媒体流水线或着色器程序的请求而实行图形、媒体以及计算操作。图形子核心501A-501F包括:多个EU阵列502A-502F、504A-504F、线程分派和线程间通信(TD/IC)逻辑503A-503F、3D(例如,纹理)采样器505A-505F、媒体采样器506A-506F、着色器处理器507A-507F和共享的本地存储器(SLM)508A-508F。EU阵列502A-502F、504A-504F均包括多个执行单元,该执行单元是能够在图形、媒体或计算操作(包括图形、媒体或计算着色器程序)的服务中实行浮点和整数/定点逻辑运算的通用图形处理单元。TD/IC逻辑503A-503F针对子核心内的执行单元实行本地线程分派和线程控制操作,并且便于在子核心的执行单元上执行的线程之间进行通信。3D采样器505A-505F可以将纹理或其他3D图形相关的数据读取到存储器中。3D采样器可以基于所配置的样本状态以及与给定纹理相关联的纹理格式来不同地读取纹理数据。媒体采样器506A-506F可以基于与媒体数据相关联的类型和格式来实行类似的读取操作。在一个实施例中,每个图形子核心501A-501F可以可替换地包括统一的3D和媒体采样器。在子核心501A-501F中的每一个内的执行单元上执行的线程可以利用每个子核心内的共享本地存储器508A-508F,以使得在线程组内执行的线程能够使用片上存储器的公共池来执行。
执行单元
图15A-15B图示了线程执行逻辑600,其包括根据本文中描述的实施例的图形处理器核心中所采用的处理元件阵列。图15A-15B的具有与本文中的任何其他图的元件相同的附图标记(或名称)的元件可以用与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但是不限于此。图15A图示了线程执行逻辑600的概览,线程执行逻辑600可以包括:利用图14的每个子核心501A-501F图示的硬件逻辑的变体。图15B图示了执行单元的示例性内部细节。
如图15A中所图示的,在一些实施例中,线程执行逻辑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中的一个或多个执行单元上的所请求的线程进行实例化。例如,几何流水线可以将顶点、曲面细分或几何着色器分派到线程执行逻辑以供处理。在一些实施例中,线程分派器604还可以处理来自执行着色器程序的运行时线程产生请求。
在一些实施例中,执行单元608A-608N支持指令集,该指令集包括对许多标准3D图形着色器指令的原生支持,从而使得以最小的转换来执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。该执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。执行单元608A-608N中的每一个都能够进行多发布单指令多数据(SIMD)执行,并且多线程操作使得能够在面对较高等待时间的存储器访问时实现有效的执行环境。每个执行单元内的每个硬件线程具有专用高带宽寄存器文件和相关联的独立线程状态。对于能够进行整数、单精度和双精度浮点运算、SIMD分支能力、逻辑运算、超越数(transcendental)运算和其他混杂运算的流水线来说,执行是每时钟多发布的。在等待来自存储器或共享功能之一的数据时,执行单元608A-608N内的依赖性逻辑使得等待线程休眠,直到所请求的数据已返回为止。在等待线程正在休眠时,硬件资源可以致力于处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以实行针对像素着色器、片段着色器、或包括不同顶点着色器的另一种类型的着色器程序的操作。
执行单元608A-608N中的每个执行单元在数据元素阵列上进行操作。数据元素的数量是“执行大小”,或指令的通道数量。执行通道是针对数据元素访问、掩蔽和指令内的流控制的执行的逻辑单元。通道的数量可以独立于针对特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量。在一些实施例中,执行单元608A-608N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可以作为打包(packed)数据类型被存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当在256位宽的矢量上进行操作时,矢量的256位被存储在寄存器中,并且执行单元作为四个分离的64位打包数据元素(四字(QW)大小数据元素)、八个分离的32位打包数据元素(双字(DW)大小数据元素)、十六个分离的16位打包数据元素(字(W)大小数据元素)、或三十二个分离的8位数据元素(字节(B)大小数据元素)而在该矢量上进行操作。然而,不同的矢量宽度和寄存器大小是可能的。
在一个实施例中,一个或多个执行单元可以组合成具有线程控制逻辑(607A-607N)的融合执行单元609A-609N,该线程控制逻辑对于该融合EU是公共的。多个EU可以融合到EU组中。融合EU组中的每个EU可以被配置成执行分离的SIMD硬件线程。融合EU组中的EU的数量可以根据实施例而有所不同。附加地,可以针对每个EU来实行各种SIMD宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个融合图形执行单元609A-609N包括至少两个执行单元。例如,融合执行单元609A包括:第一EU 608A、第二EU 608B和线程控制逻辑607A,线程控制逻辑607A对于第一EU 608A和第二EU 608B是公共的。线程控制逻辑607A控制在融合图形执行单元609A上执行的线程,从而允许融合执行单元609A-609N内的每个EU使用公共指令指针寄存器来执行。
一个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600中,以便对执行单元的线程指令进行高速缓存。在一些实施例中,一个或多个数据高速缓存(例如,612)被包括,以便在线程执行期间对线程数据进行高速缓存。在一些实施例中,采样器610被包括,以便为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器610包括专用纹理或媒体采样功能,以便在向执行单元提供采样数据之前在采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程产生和分派逻辑向线程执行逻辑600发送线程发起请求。一旦一组几何对象已经被处理并被光栅化成像素数据,着色器处理器602内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)就被调用以便进一步计算输出信息并且使结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一些实施例中,像素着色器或片段着色器计算各种顶点属性的值,要跨光栅化的对象来将该值进行内插。在一些实施例中,着色器处理器602内的像素处理器逻辑然后执行应用编程接口(API)提供的像素或片段着色器程序。为了执行着色器程序,着色器处理器602经由线程分派器604将线程分派到执行单元(例如,608A)。在一些实施例中,着色器处理器602使用采样器610中的纹理采样逻辑来访问存储器中所存储的纹理映射中的纹理数据。对纹理数据和输入几何数据的算术运算计算每个几何片段的像素颜色数据,或丢弃一个或多个像素以免进行进一步处理。
在一些实施例中,数据端口614提供存储器访问机制,以供线程执行逻辑600将经处理的数据输出至存储器,以用于在图形处理器输出流水线上进行进一步处理。在一些实施例中,数据端口614包括或耦合到一个或多个高速缓冲存储器(例如,数据高速缓存612),该高速缓冲存储器用以对数据进行高速缓存以供存储器经由数据端口来访问。
如图15B中所图示的,图形执行单元608可以包括指令取指单元637、通用寄存器文件阵列(GRF)624、架构寄存器文件阵列(ARF)626、线程仲裁器622、发送单元630、分支单元632、一组SIMD浮点单元(FPU)634、并且在一个实施例中是一组专用整数SIMD ALU 635。GRF624和ARF 626包括:该组通用寄存器文件和架构寄存器文件,它们与在图形执行单元608中可能起作用的每个同时硬件线程相关联。在一个实施例中,每个线程架构状态被维持在ARF626中,而线程执行期间使用的数据被存储在GRF 624中。每个线程的执行状态(包括每个线程的指令指针)可以保持在ARF 626中的线程特定的寄存器中。
在一个实施例中,图形执行单元608具有如下架构:该架构是同时多线程(SMT)和精细粒度交织多线程(IMT)的组合。该架构具有模块化配置,该配置可以在设计时基于同时线程的目标数量和每个执行单元的寄存器数量进行精细调整,其中跨用于执行多个同时线程的逻辑来对执行单元资源进行划分。
在一个实施例中,图形执行单元608可以共同发布多个指令,该多个指令可以均是不同的指令。图形执行单元线程608的线程仲裁器622可以将指令分派给发送单元630、分支单元632或(一个或多个)SIMD FPU 634中的一个以用于执行。每个执行线程可以访问GRF624内的128个通用寄存器,其中每个寄存器可以存储32个字节,该32个字节可作为32位数据元素的SIMD 8元素矢量来访问。在一个实施例中,每个执行单元线程有权访问GRF 624内的4千字节,尽管实施例不限于此,并且在其他实施例中可以提供更多或更少的寄存器资源。在一个实施例中,多达七个线程可以同时执行,尽管每个执行单元的线程数量也可以根据实施例而有所不同。在其中七个线程可以访问4千字节的实施例中,GRF 624可以存储总共28千字节。灵活的寻址模式可以允许对寄存器一起进行寻址以有效地构建更宽的寄存器或表示跨过(stride)的矩形块数据结构。
在一个实施例中,经由消息传递发送单元630执行的“发送”指令来分派存储器操作、采样器操作和其他较长等待时间的系统通信。在一个实施例中,将分支指令分派给专用分支单元632以便于SIMD发散和最终收敛。
在一个实施例中,图形执行单元608包括一个或多个SIMD浮点单元((一个或多个)FPU)634以实行浮点运算。在一个实施例中,(一个或多个)FPU 634还支持整数计算。在一个实施例中,(一个或多个)FPU 634可以SIMD执行多达M个数量的32位浮点(或整数)运算,或者SIMD执行多达2M个16位整数或16位浮点运算。在一个实施例中,(一个或多个)FPU中的至少一个提供经扩展的数学能力以支持高吞吐量的超越数数学函数和双精度64位浮点。在一些实施例中,还存在一组8位整数SIMD ALU 635,并且可以具体地优化该组8位整数SIMDALU 635以实行与机器学习计算相关联的操作。
在一个实施例中,图形执行单元608的多个实例的阵列可以在图形子核心分组(例如,子切片)中被实例化。对于可伸缩性,产品架构师可以选择每个子核心分组的执行单元的确切数量。在一个实施例中,执行单元608可以跨多个执行通道来执行指令。在进一步的实施例中,在图形执行单元608上执行的每个线程在不同的通道上执行。
图16是图示了根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有采用多种格式的指令的指令集。实线框图示了通常被包括在执行单元指令中的组件,而虚线包括可选的组件或仅被包括在指令的子集中的组件。在一些实施例中,与一旦处理指令就由指令解码所产生的微操作形成对照,所描述和图示的指令格式700是宏指令,这是因为它们是被提供给执行单元的指令。
在一些实施例中,图形处理器执行单元原生地支持采用128位指令格式710的指令。64位压缩指令格式730基于所选的指令、指令选项和操作数的数量而可用于一些指令。原生128位指令格式710提供对全部指令选项的访问,而一些选项和操作被限制在64位格式730中。可用于64位格式730的原生指令由实施例而有所不同。在一些实施例中,部分地使用索引字段713中的一组索引值来压缩指令。执行单元硬件参考基于索引值的一组压缩表,并且使用压缩表输出来重构采用128位指令格式710的原生指令。
针对每种格式,指令操作码712定义了执行单元要实行的操作。执行单元跨每个操作数的多个数据元素来并行地执行每个指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道来实行同时加法运算。默认地,执行单元跨操作数的全部数据通道来实行每个指令。在一些实施例中,指令控制字段714启用对某些执行选项(诸如,通道选择(例如,预测)和数据通道次序(例如,混写(swizzle))的控制。针对采用128位指令格式710的指令,执行大小(exec-size)字段716限制了将被并行执行的数据通道的数量。在一些实施例中,执行大小字段716不可用于在64位压缩指令格式730中使用。
一些执行单元指令具有多达三个操作数,包括两个源操作数(src0 720、src1722)和一个目的地718。在一些实施例中,执行单元支持双目的地指令,其中目的地之一是隐含的。数据操控指令可以具有第三源操作数(例如,SRC2 724),其中指令操作码712确定源操作数的数量。指令的最后的源操作数可以是利用指令传递的即时(例如,硬编码)值。
在一些实施例中,128位指令格式710包括如下访问/寻址模式字段726:其例如指定了是使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,直接由指令中的位来提供一个或多个操作数的寄存器地址。
在一些实施例中,128位指令格式710包括如下访问/寻址模式字段726:其指定了针对指令的寻址模式和/或访问模式。在一个实施例中,访问模式被用来定义针对指令的数据访问对齐。一些实施例支持包括16字节对齐访问模式和1字节对齐访问模式的访问模式,其中访问模式的字节对齐确定了指令操作数的访问对齐。例如,当在第一个模式中时,指令可以针对源操作数和目的地操作数使用字节对齐寻址,并且当在第二个模式中时,指令可以针对全部源操作数和目的地操作数使用16字节对齐寻址。
在一个实施例中,访问/寻址模式字段726的寻址模式部分确定了指令是要使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可以基于指令中的地址寄存器值和地址即时字段来计算一个或多个操作数的寄存器地址。
在一些实施例中,基于操作码712位字段对指令进行分组,以简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。所示出的精确操作码分组仅仅是示例。在一些实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑组742共享五个最高有效位(MSB),其中移动(mov)指令采用0000xxxxb的形式,而逻辑指令采用0001xxxxb的形式。流控制指令组744(例如,调用、跳(jum))包括采用0010xxxxb(例如,0x20)形式的指令。混杂指令组746包括指令的混合,包括采用0011xxxxb(例如,0x30)形式的同步指令(例如,等待、发送)。并行数学指令组748包括采用0100xxxxb(例如,0x40)形式的按分量逐位(component-wise)的算术指令(例如,加、乘(mul))。并行数学组748跨数据通道并行地实行算术运算。矢量数学组750包括采用0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。矢量数学组对矢量操作数实行诸如点积计算之类的算术。
图形流水线
图17是图形处理器800的另一实施例的框图。图17的具有与本文中的任何其他图的元件相同的附图标记(或名称)的元件可以用与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但是不限于此。
在一些实施例中,图形处理器800包括:几何流水线820、媒体流水线830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一些实施例中,图形处理器800是包括一个或多个通用处理核心的多核心处理系统内的图形处理器。图形处理器由对一个或多个控制寄存器(未示出)的寄存器写入所控制,或者经由通过环形互连件802而发布至图形处理器800的命令来被控制。在一些实施例中,环形互连件802将图形处理器800耦合到其他处理组件,诸如其他图形处理器或通用处理器。来自环形互连件802的命令由命令流传输器803解译,该命令流传输器将指令提供给几何流水线820或媒体流水线830的个体组件。
在一些实施例中,命令流传输器803引导顶点取指器805的操作,该顶点取指器从存储器读取顶点数据,并且执行由命令流传输器803所提供的顶点处理命令。在一些实施例中,顶点取指器805将顶点数据提供给顶点着色器807,该顶点着色器对每个顶点实行坐标空间变换和照明操作。在一些实施例中,顶点取指器805和顶点着色器807通过经由线程分派器831向执行单元852A-852B分派执行线程来执行顶点处理指令。
在一些实施例中,执行单元852A-852B是具有用于实行图形和媒体操作的指令集的矢量处理器阵列。在一些实施例中,执行单元852A-852B具有附接的L1高速缓存851,该高速缓存851专用于每个阵列或在阵列之间共享。高速缓存可以被配置为数据高速缓存、指令高速缓存、或单个高速缓存,该单个高速缓存被分区以在不同的分区中包含数据和指令。
在一些实施例中,几何流水线820包括:用以实行3D对象的硬件加速曲面细分的曲面细分组件。在一些实施例中,可编程的外壳(hull)着色器1811配置曲面细分操作。可编程的域着色器817提供曲面细分输出的后端评估。曲面细分器813在外壳着色器811的方向上进行操作并且包含专用逻辑,以基于粗几何模型来生成一组详细几何对象,该粗几何模型作为输入而被提供给几何流水线820。在一些实施例中,如果没有使用曲面细分,则可以绕过曲面细分组件(例如,外壳着色器811、曲面细分器813和域着色器817)。
在一些实施例中,完整的几何对象可以由几何着色器819经由被分派到执行单元852A-852B的一个或多个线程来处理,或者可以直接行进至裁剪器(clipper)829。在一些实施例中,几何着色器对整个几何对象(而不是如图形流水线的先前级中的顶点或顶点补丁)进行操作。如果禁用曲面细分,则几何着色器819接收来自顶点着色器807的输入。在一些实施例中,几何着色器819可由几何着色器程序来编程,以便在曲面细分单元被禁用时实行几何曲面细分。如上面详细讨论的,如果条件允许,则可以省略或绕过几何着色器,并且可以将图元(primitive)复制和各种几何着色器逻辑移动到顶点着色器。
在光栅化之前,裁剪器829处理顶点数据。裁剪器829可以是固定功能的裁剪器或者是具有裁剪和几何着色器功能的可编程裁剪器。在一些实施例中,渲染输出流水线870中的光栅器和深度测试组件873分派像素着色器,以将几何对象转换成每像素表示。在一些实施例中,像素着色器逻辑被包括在线程执行逻辑850中。在一些实施例中,应用可以绕过光栅器和深度测试组件873,并且经由流式输出单元823来访问未光栅化的顶点数据。
图形处理器800具有互连总线、互连结构、或某个其他互连机构,该互连机构允许数据和消息在处理器的主要组件当中传递。在一些实施例中,执行单元852A-852B和相关联的逻辑单元(例如,L1高速缓存851、采样器854、纹理高速缓存858等)经由数据端口856进行互连,以便实行存储器访问并且与处理器的渲染输出流水线组件进行通信。在一些实施例中,采样器854、高速缓存851、858以及执行单元852A-852B均具有分离的存储器访问路径。在一个实施例中,纹理高速缓存858还可以被配置为采样器高速缓存。
在一些实施例中,渲染输出流水线870包含光栅器和深度测试组件873,该光栅器和深度测试组件将基于顶点的对象转换为相关联的基于像素的表示。在一些实施例中,光栅器逻辑包括:用以实行固定功能三角形和线光栅化的窗口器/掩蔽器单元。相关联的渲染高速缓存878和深度高速缓存879在一些实施例中也是可用的。像素操作组件877对数据实行基于像素的操作,尽管在一些实例中,与2D操作(例如,利用混合的位块图像传送)相关联的像素操作由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调用转换成可由图形处理器处理的命令。在一些实施例中,针对全部都来自科纳斯组织(Khronos Group)的开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API来提供支持。在一些实施例中,还可以针对来自微软公司的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。还可以针对开源计算机视觉库(OpenCV)提供支持。如果可以做出从未来API的流水线到图形处理器的流水线的映射,则具有兼容3D流水线的未来API也将受到支持。
图形流水线编程
图18A是图示了根据一些实施例的图形处理器命令格式900的框图。图18B是图示了根据实施例的图形处理器命令序列910的框图。图18A中的实线框图示了一般被包括在图形命令中的组件,而虚线包括可选的或者仅被包括在图形命令的子集中的组件。图18A的示例性图形处理器命令格式900包括用以识别客户端902、命令操作代码(操作码)904以及针对命令的数据906的数据字段。在一些命令中,还包括子操作码905和命令大小908。
在一些实施例中,客户端902指定了处理命令数据的图形设备的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段,以便调节对命令的进一步处理,并且将命令数据路由至适当的客户端单元。在一些实施例中,图形处理器客户端单元包括:存储器接口单元、渲染单元、2D单元、3D单元以及媒体单元。每个客户端单元具有对命令进行处理的对应处理流水线。一旦客户端单元接收到命令,客户端单元就读取操作码904和子操作码905(如果存在的话)以确定要实行的操作。客户端单元使用数据字段906中的信息来实行命令。对于一些命令,显式命令大小908被预期指定命令的大小。在一些实施例中,命令解析器基于命令操作码来自动地确定命令中的至少一些命令的大小。在一些实施例中,经由双字的倍数对命令进行对齐。
图18B中的流程图图示了示例性图形处理器命令序列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状态设置命令针对顶点缓冲器状态、顶点元素状态、常量颜色状态、深度缓冲器状态、以及要在处理3D图元命令之前配置的其他状态变量。这些命令的值至少部分地基于使用中的特定3D API而确定。在一些实施例中,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。在媒体对象命令942之前,将用以配置媒体流水线状态940的一组命令分派或放置到命令队列中。在一些实施例中,用于媒体流水线状态940的命令包括:用以配置媒体流水线元件的数据,该媒体流水线元件将被用来处理媒体对象。这包括用以配置媒体流水线内的视频解码和视频编码逻辑的数据,诸如编码或解码格式。在一些实施例中,用于媒体流水线状态940的命令还支持使用指向包含一批状态设置的“间接”状态元件的一个或多个指针。
在一些实施例中,媒体对象命令942将指针提供给媒体对象以供媒体流水线处理。媒体对象包括:存储器缓冲器,其包含要处理的视频数据。在一些实施例中,在发布媒体对象命令942之前,全部媒体流水线状态必须是有效的。一旦配置了流水线状态并且对媒体对象命令942进行排队,则经由执行命令944或等效的执行事件(例如,寄存器写入)来触发媒体流水线924。然后可以通过由3D流水线922或媒体流水线924提供的操作对来自媒体流水线924的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图形软件架构
图19图示了根据一些实施例的针对数据处理系统1000的示例性图形软件架构。在一些实施例中,软件架构包括:3D图形应用1010、操作系统1020,以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032和一个或多个通用处理器核心1034。图形应用1010和操作系统1020均在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,该一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用高级着色器语言,诸如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。该应用还包括采用适用于由通用处理器核心1034执行的机器语言的可执行指令1014。该应用还包括由顶点数据定义的图形对象1016。
在一些实施例中,操作系统1020是来自微软公司的Microsoft® Windows®操作系统、专有UNIX式操作系统、或使用Linux内核变体的开源UNIX式操作系统。操作系统1020可以支持图形API 1022,诸如Direct3D API、OpenGL API或Vulkan API。当Direct3D API在使用中时,操作系统1020使用前端着色器编译器1024将采用HLSL的任何着色器指令1012编译成较低级的着色器语言。该编译可以是实时(JIT)编译,或者该应用可以实行着色器预编译。在一些实施例中,在对3D图形应用1010进行编译期间,将高级着色器编译成低级着色器。在一些实施例中,着色器指令1012是以中间形式(诸如,Vulkan API所使用的标准便携式中间表示(SPIR)的版本)提供的。
在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027,该后端着色器编译器用以将着色器指令1012转换成硬件特定的表示。当OpenGL API在使用中时,将采用GLSL高级语言的着色器指令1012传递给用户模式图形驱动器1026以供编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式功能1028来与内核模式图形驱动器1029进行通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032进行通信以便分派命令和指令。
IP核心实现方式
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性代码来实现,该机器可读介质表示和/或定义了诸如处理器之类的集成电路内的逻辑。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当被机器读取时,该指令可以使机器制造用以实行本文中所描述的技术的逻辑。这种表示(被称为“IP核心”)是用于集成电路的逻辑的可重复使用的单元,该可重复使用的单元可以作为对集成电路的结构进行描述的硬件模型而被存储在有形机器可读介质上。可以将硬件模型提供给在制造集成电路的制造机器上装载硬件模型的各种客户或制造设施。可以制造集成电路,使得电路实行与本文中所描述的任何实施例相关联地描述的操作。
图20A是图示了根据实施例的可以被用来制造用以实行操作的集成电路的IP核心开发系统1100的框图。IP核心开发系统1100可以被用来生成可以并入到更大的设计中或用于构造整个集成电路(例如,SOC集成电路)的模块化、可重复使用的设计。设计设施1130可以以高级编程语言(例如,C/C++)来生成IP核心设计的软件仿真1110。软件仿真1110可以被用来使用仿真模型1112来设计、测试和验证IP核心的行为。仿真模型1112可以包括功能、行为和/或时序仿真。然后可以根据仿真模型1112来创建或合成寄存器传送级(RTL)设计1115。RTL设计1115是对硬件寄存器之间的数字信号的流动进行建模的集成电路(包括使用所建模的数字信号实行的相关联的逻辑)的行为的抽象。除RTL设计1115外,还可以创建、设计或合成在逻辑级或晶体管级处的较低级设计。因此,初始设计和仿真的特定细节可以有所不同。
可以由设计设施将RTL设计1115或等效物进一步合成为硬件模型1120,该硬件模型可以采用硬件描述语言(HDL)或物理设计数据的某种其他表示。可以进一步对HDL进行仿真或测试以验证IP核心设计。可以使用非易失性存储器1140(例如,硬盘、闪速存储器或任何非易失性存储介质)来存储IP核心设计以用于递送至第3方制造设施1165。可替换地,可以通过有线连接1150或无线连接1160来传输(例如,经由互联网)IP核心设计。制造设施1165然后可以制造至少部分地基于IP核心设计的集成电路。所制造的集成电路可以被配置成实行根据本文中所描述的至少一个实施例的操作。
图20B图示了根据本文中所描述的一些实施例的集成电路封装组装件1170的横截面侧视图。集成电路封装组装件1170图示了如本文中所描述的一个或多个处理器或加速器设备的实现方式。封装组装件1170包括连接到衬底1180的多个硬件逻辑单元1172、1174。逻辑1172、1174可以至少部分地在可配置逻辑或固定功能逻辑硬件中实现,并且可以包括(一个或多个)处理器核心、(一个或多个)图形处理器或本文中所描述的其他加速器设备中的任一个的一个或多个部分。逻辑1172、1174的每个单元可以在半导体管芯内实现,并且经由互连结构1173与衬底1180耦合。互连结构1173可以被配置成在逻辑1172、1174与衬底1180之间对电信号进行路由,并且可以包括诸如但不限于凸块或柱状物的互连件。在一些实施例中,互连结构1173可以被配置成对电信号进行路由,该电信号诸如例如输入/输出(I/O)信号和/或与逻辑1172、1174的操作相关联的功率或接地信号。在一些实施例中,衬底1180是环氧基层压板衬底。在其他实施例中,封装衬底1180可以包括其他适合类型的衬底。封装组装件1170可以经由封装互连件1183连接到其他电学设备。封装互连件1183可以耦合到衬底1180的表面,以将电信号路由到其他电学设备,诸如主板、其他芯片组或多芯片模块。
在一些实施例中,逻辑单元1172、1174与桥1182电耦合,桥1182被配置成在逻辑1172、1174之间对电信号进行路由。桥1182可以是密集互连结构,其针对电信号提供路由。桥1182可以包括由玻璃或合适的半导体材料构成的桥衬底。可以在桥衬底上形成电路由特征,以在逻辑1172、1174之间提供芯片到芯片的连接。
尽管图示了两个逻辑单元1172、1174和桥1182,但是本文中所描述的实施例可以在一个或多个管芯上包括更多或更少的逻辑单元。一个或多个管芯可以通过零个或多个桥而连接,这是因为当逻辑被包括在单个管芯上时可以排除桥1182。可替换地,多个管芯或逻辑单元可以通过一个或多个桥而连接。附加地,多个逻辑单元、管芯和桥可以用其他可能的配置连接在一起,该配置包括三维配置。
示例性片上系统集成电路
图21-23图示了根据本文中所描述的各种实施例的可以使用一个或多个IP核心来制造的示例性集成电路和相关联的图形处理器。除了所图示的内容之外,还可以包括其他逻辑和电路,包括附加图形处理器/核心、外围接口控制器或通用处理器核心。
图21是图示了根据实施例的可以使用一个或多个IP核心来制造的示例性片上系统集成电路1200的框图。示例性集成电路1200包括一个或多个应用处理器1205(例如,CPU)、至少一个图形处理器1210,并且可以附加地包括图像处理器1215和/或视频处理器1220,其中的任一个都可以是来自相同或多个不同设计设施的模块化IP核心。集成电路1200包括外围或总线逻辑,该外围或总线逻辑包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235和I2S/I2C控制器1240。附加地,集成电路可以包括显示设备1245,该显示设备耦合到高清晰度多媒体接口(HDMI)控制器1250和移动产业处理器接口(MIPI)显示界面1255中的一个或多个。可以由闪速存储器子系统1260(包括闪速存储器和闪速存储器控制器)来提供存储。可以经由存储器控制器1265来提供存储器接口以用于访问SDRAM或SRAM存储器设备。一些集成电路附加地包括嵌入式安全引擎1270。
图22A-22B是图示了根据本文中描述的实施例的用于在SoC内使用的示例性图形处理器的框图。图22A图示了根据实施例的可以使用一个或多个IP核心来制造的片上系统集成电路的示例性图形处理器1310。图22B图示了根据实施例的可以使用一个或多个IP核心来制造的片上系统集成电路的附加示例性图形处理器1340。图22A的图形处理器1310是低功率图形处理器核心的示例。图22B的图形处理器1340是更高性能图形处理器核心的示例。图形处理器1310、1340中的每一个可以是图21的图形处理器1210的变体。
如图22A中所示,图形处理器1310包括顶点处理器1305和一个或多个片段处理器1315A-1315N(例如,1315A、1315B、1315C、1315D、一直到1315N-1和1315N)。图形处理器1310可以经由分离的逻辑来执行不同的着色器程序,使得顶点处理器1305被优化以执行用于顶点着色器程序的操作,而一个或多个片段处理器1315A-1315N执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器1305实行3D图形流水线的顶点处理阶段,并且生成图元和顶点数据。(一个或多个)片段处理器1315A-1315N使用由顶点处理器1305生成的图元和顶点数据来产生在显示设备上显示的帧缓冲器。在一个实施例中,(一个或多个)片段处理器1315A-1315N被优化以执行如针对在OpenGL API中的情况下提供的片段着色器程序,这些片段着色器程序可以被用来实行与如针对在Direct 3D API中的情况下提供的像素着色器程序类似的操作。
图形处理器1310附加地包括:一个或多个存储器管理单元(MMU)1320A-1320B、(一个或多个)高速缓存1325A-1325B和(一个或多个)电路互连件1330A-1330B。该一个或多个MMU 1320A-1320B针对图像处理器1310、包括针对顶点处理器1305和/或(一个或多个)片段处理器1315A-1315N提供虚拟到物理地址映射,除了存储在一个或多个高速缓存1325A-1325B中的顶点或图像/纹理数据之外,该虚拟到物理地址映射还可以引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU 1320A-1320B可以与系统内的其他MMU同步,该其他MMU包括与图21的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU,使得每个处理器1205-1220可以参与共享或统一的虚拟存储器系统。根据实施例,一个或多个电路互连件1330A-1330B使得图形处理器1310能够经由SoC的内部总线或经由直接连接来与SoC内的其他IP核心对接。
如图22B所示,图形处理器1340包括:图22A的图形处理器1310的一个或多个MMU1320A-1320B、高速缓存1325A-1325B和电路互连件1330A-1330B。图形处理器1340包括:一个或多个着色器核心1355A-1355N(例如,1455A、1355B、1355C、1355D、1355E、1355F、一直到1355N-1和1355N),它们提供统一的着色器核心架构,其中单个核心或类型或核心可以执行全部类型的可编程着色器代码,包括用以实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核心的确切数量在实施例和实现方式当中可以有所不同。附加地,图形处理器1340包括:核心间任务管理器1345,其充当线程分派器以将执行线程分派给一个或多个着色器核心1355A-1355N以及用于使铺块操作加速以进行基于铺块(tile)的渲染的铺块单元1358,其中针对场景的渲染操作在图像空间中被细分,例如以便利用场景内的局部空间一致性或优化内部高速缓存的使用。
图23A-23B图示了根据本文中所描述的实施例的附加示例性图形处理器逻辑。图23A图示了可以被包括在图21的图形处理器1210内的图形核心1400,并且可以是如在图22B中的统一的着色器核心1355A-1355N。图23B图示了附加的通用图形处理单元1430,其是适合于部署在多芯片模块上的高度并行的通用图形处理单元。
如图23A中所示,图形核心1400包括:共享指令高速缓存1402、纹理单元1418和高速缓存/共享存储器1420,它们对于图形核心1400内的执行资源是公共的。图形核心1400可以包括用于每个核心的多个切片1401A-1401N或分区,并且图形处理器可以包括图形核心1400的多个实例。切片1401A-1401N可以包括支持逻辑,该支持逻辑包括本地指令高速缓存1404A-1404N、线程调度器1406A-1406N、线程分派器1408A-1408N和一组寄存器1410A-1440N。为了实行逻辑运算,切片1401A-1401N可以包括一组附加功能单元(AFU 1412A-1412N)、浮点单元(FPU 1414A-1414N)、整数算术逻辑单元(ALU 1416-1416N)、地址计算单元(ACU 1413A-1413N)、双精度浮点单元(DPFPU 1415A-1415N)和矩阵处理单元(MPU1417A-1417N)。
一些计算单元以特定精度进行操作。例如,FPU 1414A-1414N可以实行单精度(32位)和半精度(16位)浮点运算,而DPFPU 1415A-1415N实行双精度(64位)浮点运算。ALU1416A-1416N可以以8位、16位和32位精度实行可变精度整数运算,并且可以被配置成用于混合精度运算。MPU 1417A-1417N也可以被配置成用于混合精度矩阵运算,包括半精度浮点运算和8位整数运算。MPU 1417-1417N可以实行各种各样的矩阵运算以加速机器学习应用框架,包括使得能够支持加速的通用矩阵到矩阵乘法(GEMM)。AFU 1412A-1412N可以实行浮点或整数单元不支持的附加逻辑运算,包括三角运算(例如,正弦、余弦等)。
如图23B中所示,通用处理单元(GPGPU)1430可以被配置成使得能够由图形处理单元阵列来实行高度并行的计算操作。附加地,GPGPU 1430可以直接链接至GPGPU的其他实例以创建多GPU集群,从而改进特别深度的神经网络的训练速度。GPGPU 1430包括用以使得能够实现与主机处理器的连接的主机接口1432。在一个实施例中,主机接口1432是PCI快速接口。然而,主机接口还可以是供应方特定的通信接口或通信结构。GPGPU 1430从主机处理器接收命令,并且使用全局调度器1434将与那些命令相关联的执行线程分发给一组计算集群1436A-1436H。计算集群1436A-1436H共享高速缓冲存储器1438。高速缓冲存储器1438可以用作针对计算集群1436A-1436H内的高速缓冲存储器的高级高速缓存。
GPGPU 1430包括:存储器1444A-1444B,其经由一组存储器控制器1442A-1442B与计算集群1436A-1436H耦合。在各种实施例中,存储器1434A-1434B可以包括各种类型的存储器设备,该存储器设备包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),包括图形双数据速率(GDDR)存储器。
在一个实施例中,计算集群1436A-1436H均包括一组图形核心,诸如图23A的图形核心1400,其可以包括多种类型的整数和浮点逻辑单元,该逻辑单元可以以包括适合于机器学习计算的精度的精度范围来实行计算操作。例如并且在一个实施例中,计算集群1436A-1436H中的每一个中的浮点单元的至少一个子集可以被配置成实行16位或32位浮点运算,而浮点单元的不同子集可以被配置成实行64位浮点运算。
GPGPU 1430的多个实例可以被配置成作为计算集群进行操作。由计算集群用于同步和数据交换的通信机制跨实施例而有所不同。在一个实施例中,GPGPU 1430的多个实例通过主机接口1432来通信。在一个实施例中,GPGPU 1430包括:将GPGPU 1430与GPU链路1440耦合的I/O中枢1439,该GPU链路1440使得能够实现至GPGPU的其他实例的直接连接。在一个实施例中,GPU链路1440耦合到专用GPU至GPU桥,该桥使得能够实现GPGPU 1430的多个实例之间的通信和同步。在一个实施例中,GPU链路1440与高速互连件耦合,以将数据传输至其他GPGPU或并行处理器以及接收数据。在一个实施例中,GPGPU 1430的多个实例位于分离的数据处理系统中,并且经由网络设备进行通信,该网络设备可经由主机接口1432来访问。在一个实施例中,除主机接口1432之外或作为对主机接口1432的替代,GPU链路1440可以被配置成使得能够实现至主机处理器的连接。
虽然GPGPU 1430的所图示的配置可以被配置成训练神经网络,但是一个实施例提供了GPGPU 1430的替代配置,其可以被配置成用于部署在高性能或低功率推断平台内。在推断(inferencing)配置中,GPGPU 1430包括相对于训练配置更少的计算集群1436A-1436H。附加地,与存储器1434A-1434B相关联的存储器技术可以在推断与训练配置之间而不同,其中更高带宽的存储器技术致力于训练配置。在一个实施例中,GPGPU 1430的推断配置可以支持推断特定的指令。例如,推断配置可以提供对一个或多个8位整数点积指令的支持,该指令通常用在针对已部署的神经网络的推断操作期间。
有利地,以上系统、处理器、图形处理器、装置和/或方法中的任一个可以与本文中所描述的各种实施例中的任一个(例如,或者其中的部分)、包括例如在以下附加注释和示例中所描述的那些集成,或者利用其进行配置。
在一个示例中,图形处理器800(图17)包括命令流传输器803的多个实例(图17,它们彼此共享图形硬件)。因此,当请求重置时,图形处理器800(图17)可以实现方法80(图5)和/或方法81(图6)的一个或多个方面以增强可靠性,改进用户体验和/或增加安全性。附加地,逻辑1172(图20B)和/或逻辑1174(图20B)可以实现方法80(图5)和/或方法81(图6)的一个或多个方面。
附加注释和示例:
示例1包括可靠性增强的计算系统,其包括:存储器设备、耦合到存储器设备的主机处理器、以及图形处理器,该图形处理器包括图形硬件和逻辑,以便:响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在第一命令流传输器中触发空闲状态,确定与该请求相关联的事件类型,以及基于事件类型来进行重置。
示例2包括示例1的计算系统,其中该逻辑用以基于事件类型来使图形硬件中的一个或多个上下文无效。
示例3包括示例2的计算系统,其中如果事件类型是主机重置请求,则使代理上下文和直接上下文无效。
示例4包括示例2的计算系统,其中如果事件类型是到期重置请求,则使挂起的上下文无效。
示例5包括示例1的计算系统,其中如果事件媒体类型是媒体重置请求,则重置包括媒体重置流。
示例6包括示例1的计算系统,其中逻辑用以向主机处理器发送重置完成消息,并且其中存储器设备包括指令,该指令当由主机处理器执行时使得主机处理器利用特殊工作项来确认重置完成消息。
示例7包括半导体装置,其包括:一个或多个衬底、以及耦合到该一个或多个衬底的逻辑,其中该逻辑至少部分地在可配置逻辑或固定功能硬件逻辑中的一个或多个中实现,该逻辑耦合到一个或多个衬底,以便:响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在第一命令流传输器中触发空闲状态,确定与该请求相关联的事件类型,以及基于事件类型来进行重置。
示例8包括示例7的半导体装置,其中耦合到该一个或多个衬底的逻辑用以基于事件类型来使图形硬件中的一个或多个上下文无效。
示例9包括示例8的半导体装置,其中如果事件类型是主机重置请求,则使代理上下文和直接上下文无效。
示例10包括示例8的半导体装置,其中如果事件类型是到期重置请求,则使挂起的上下文无效。
示例11包括示例7的半导体装置,其中如果事件媒体类型是媒体重置请求,则重置包括媒体重置流。
示例12包括示例7的半导体装置,其中耦合到该一个或多个衬底的逻辑用以向主机处理器发送重置完成消息。
示例13包括至少一个计算机可读存储介质,其包括一组指令,该指令当由计算设备执行时使得计算设备:响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在第一命令流传输器中触发空闲状态,确定与该请求相关联的事件类型,以及基于事件类型来进行重置。
示例14包括示例13的至少一个计算机可读存储介质,其中指令在被执行时使得计算设备基于事件类型来使图形硬件中的一个或多个上下文无效。
示例15包括示例14的至少一个计算机可读存储介质,其中如果事件类型是主机重置请求,则使代理上下文和直接上下文无效。
示例16包括示例14的至少一个计算机可读存储介质,其中如果事件类型是到期重置请求,则使挂起的上下文无效。
示例17包括示例13的至少一个计算机可读存储介质,其中如果事件媒体类型是媒体重置请求,则重置包括媒体重置流。
示例18包括示例13的至少一个计算机可读存储介质,其中当指令被执行时使得计算系统向主机处理器发送重置完成消息。
示例19包括一种方法,该方法包括:响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在第一命令流传输器中触发空闲状态,确定与该请求相关联的事件类型,以及基于事件类型来进行重置。
示例20包括示例19的方法,进一步包括:基于事件类型来使图形硬件中的一个或多个上下文无效。
示例21包括示例20的方法,其中如果事件类型是主机重置请求,则使代理上下文和直接上下文无效。
示例22包括示例20的方法,其中如果事件类型是到期重置请求,则使挂起的上下文无效。
示例23包括示例19的方法,其中如果事件类型是媒体重置请求,则重置包括媒体重置流。
示例24包括示例19的方法,进一步包括向主机处理器发送重置完成消息。
实施例可适用于与全部类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于:处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、芯上系统(SoC)、SSD/NAND控制器ASIC等等。此外,在一些附图中,信号导线用线来表示。一些可以是不同的以指示更多组成信号路径,具有数字标签以指示许多组成信号路径,和/或在一个或多个末端处具有箭头以指示主要信息流方向。然而,这不应以限制的方式来解释。而是,这种添加的细节可以结合一个或多个示例性实施例来使用以便于更容易地理解电路。任何表示的信号线(无论是否具有附加信息)都可以实际上包括一个或多个信号,该一个或多个信号可以在多个方向上行进并且可以用任何适合类型的信号方案来实现,例如,利用差分对、光纤线、和/或单端线来实现的数字或模拟线。
示例大小/模型/值/范围可能已经被给定,尽管实施例不限于此。由于制造技术(例如,光刻法)随着时间而成熟,因此期望的是可以制造具有更小大小的设备。此外,为了图示和讨论的简单性起见并且以便不使实施例的某些方面晦涩难懂,对IC芯片和其他组件的公知的功率/接地连接可以在附图内示出或可以不在附图内示出。进一步地,为了避免使实施例晦涩难懂,并且还鉴于关于这种框图布置的实现方式的具体内容高度取决于要在其内实现实施例的平台(即,这种具体内容应当良好地处于本领域技术人员的范围内)的事实,可以以框图的形式来示出布置。在阐述具体细节(例如,电路)以便描述示例实施例的情况下,对本领域技术人员应当显而易见的是,可以在没有这些具体细节或者在具有这些具体细节的变型的情况下实践实施例。本描述因此被认为是说明性的而非限制性的。
术语“耦合”在本文中可以被用来指代所讨论的组件之间的任何类型的直接或间接关系,并且可以应用于电学、机械、流体、光学、电磁、机电或其他连接。此外,除非以其他方式指示,术语“第一”、“第二”等在本文中可能仅被用来便于讨论,并且不涵盖特定的时间或时间顺序重要性。
如在本申请和权利要求中使用的,通过术语“......中的一个或多个”连接的项目的列表可以意指所列项目的任何组合。例如,短语“A、B和C中的一个或多个”以及短语“A、B或C中的一个或多个”两者都可以意指A;B;C;A和B;A和C;B和C;或者A、B和C。
本领域技术人员将从前述描述领会到的是,实施例的宽泛技术可以用各种各样的形式来实现。因此,虽然实施例已经结合其特定示例而被描述,但是实施例的真实范围不应当受限于此,这是因为在附图、说明书和所附权利要求的研究下,其他修改将变得对技术实践者来说显而易见。
Claims (24)
1.一种计算系统,其包括:
存储器设备;
主机处理器,其耦合到所述存储器设备;以及
图形处理器,其包括图形硬件和逻辑,以便:
响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在所述第一命令流传输器中触发空闲状态,
确定与所述请求相关联的事件类型,以及
基于所述事件类型来进行重置。
2.根据权利要求1所述的计算系统,其中所述逻辑用以基于所述事件类型来使图形硬件中的一个或多个上下文无效。
3.根据权利要求2所述的计算系统,其中如果所述事件类型是主机重置请求,则使代理上下文和直接上下文无效。
4.根据权利要求2所述的计算系统,其中如果所述事件类型是到期重置请求,则使挂起的上下文无效。
5.根据权利要求1-4中任一项所述的计算系统,其中如果事件媒体类型是媒体重置请求,则所述重置包括媒体重置流。
6.根据权利要求1所述的计算系统,其中所述逻辑用以向主机处理器发送重置完成消息,并且其中所述存储器设备包括指令,所述指令当由所述主机处理器执行时使得所述主机处理器利用特殊工作项来确认所述重置完成消息。
7.一种半导体装置,其包括:
一个或多个衬底;以及
耦合到所述一个或多个衬底的逻辑,其中所述逻辑至少部分地在可配置逻辑或固定功能硬件逻辑中的一个或多个中实现,所述逻辑耦合到所述一个或多个衬底,以便:
响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在所述第一命令流传输器中触发空闲状态;
确定与所述请求相关联的事件类型;以及
基于所述事件类型来进行重置。
8.根据权利要求7所述的半导体装置,其中耦合到所述一个或多个衬底的逻辑用以基于所述事件类型来使图形硬件中的一个或多个上下文无效。
9.根据权利要求8所述的半导体装置,其中如果所述事件类型是主机重置请求,则使代理上下文和直接上下文无效。
10.根据权利要求8所述的半导体装置,其中如果所述事件类型是到期重置请求,则使挂起的上下文无效。
11.根据权利要求7-10中任一项所述的半导体装置,其中如果事件媒体类型是媒体重置请求,则所述重置包括媒体重置流。
12.根据权利要求7所述的半导体装置,其中耦合到所述一个或多个衬底的逻辑用以向主机处理器发送重置完成消息。
13.一种图形处理器方法,其包括:
响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在所述第一命令流传输器中触发空闲状态;
确定与所述请求相关联的事件类型;以及
基于所述事件类型来进行重置。
14.根据权利要求13所述的方法,进一步包括基于所述事件类型来使图形硬件中的一个或多个上下文无效。
15.根据权利要求14所述的方法,其中如果所述事件类型是主机重置请求,则使代理上下文和直接上下文无效。
16.根据权利要求14所述的方法,其中如果所述事件类型是到期重置请求,则使挂起的上下文无效。
17.根据权利要求13-16中任一项所述的方法,其中如果所述事件类型是媒体重置请求,则所述重置包括媒体重置流。
18.根据权利要求13所述的方法,进一步包括向主机处理器发送重置完成消息。
19.一种半导体装置,其包括:
用于响应于重置与第一命令流传输器共享图形硬件的第二命令流传输器的请求而在所述第一命令流传输器中触发空闲状态的部件;
用于确定与所述请求相关联的事件类型的部件;以及
用于基于所述事件类型来进行重置的部件。
20.根据权利要求19所述的装置,进一步包括用于基于所述事件类型来使图形硬件中的一个或多个上下文无效的部件。
21.根据权利要求20所述的装置,其中如果所述事件类型是主机重置请求,则要使代理上下文和直接上下文无效。
22.根据权利要求20所述的装置,其中如果所述事件类型是到期重置请求,则要使挂起的上下文无效。
23.根据权利要求19-22中任一项所述的装置,其中如果所述事件类型是媒体重置请求,则所述重置包括媒体重置流。
24.根据权利要求19所述的装置,进一步包括用于向主机处理器发送重置完成消息的部件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/143777 | 2018-09-27 | ||
US16/143,777 US11200063B2 (en) | 2018-09-27 | 2018-09-27 | Graphics engine reset and recovery in a multiple graphics context execution environment |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110956570A true CN110956570A (zh) | 2020-04-03 |
Family
ID=67137549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910794876.0A Pending CN110956570A (zh) | 2018-09-27 | 2019-08-27 | 多图形上下文执行环境中的图形引擎重置和恢复 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11200063B2 (zh) |
EP (1) | EP3647948A1 (zh) |
CN (1) | CN110956570A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022134538A1 (zh) * | 2020-12-24 | 2022-06-30 | 北京握奇数据股份有限公司 | 一种微操作系统字节码精简指令集和资源受限装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11513835B2 (en) | 2020-06-01 | 2022-11-29 | Micron Technology, Inc. | Notifying memory system of host events via modulated reset signals |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6674841B1 (en) * | 2000-09-14 | 2004-01-06 | International Business Machines Corporation | Method and apparatus in a data processing system for an asynchronous context switching mechanism |
US7522167B1 (en) * | 2004-12-16 | 2009-04-21 | Nvidia Corporation | Coherence of displayed images for split-frame rendering in multi-processor graphics system |
US7457914B2 (en) * | 2005-03-25 | 2008-11-25 | Emc Corporation | Asynchronous event notification |
US7765550B2 (en) * | 2005-05-26 | 2010-07-27 | Hewlett-Packard Development Company, L.P. | System for controlling context switch of deferred requests using counter and flag setting of thread accessing shared resource or entering code region |
US7937710B1 (en) * | 2005-11-22 | 2011-05-03 | Nvidia Corporation | Context switch signaling method and system |
US7916146B1 (en) * | 2005-12-02 | 2011-03-29 | Nvidia Corporation | Halt context switching method and system |
US8817035B2 (en) * | 2005-12-21 | 2014-08-26 | Nvidia Corporation | Texture pipeline context switch |
US8082426B2 (en) * | 2008-11-06 | 2011-12-20 | Via Technologies, Inc. | Support of a plurality of graphic processing units |
US20130135327A1 (en) * | 2011-11-29 | 2013-05-30 | Advanced Micro Devices, Inc. | Saving and Restoring Non-Shader State Using a Command Processor |
US20130162661A1 (en) * | 2011-12-21 | 2013-06-27 | Nvidia Corporation | System and method for long running compute using buffers as timeslices |
US9342810B2 (en) * | 2012-05-01 | 2016-05-17 | Hand Held Products, Inc. | Dynamic scan context determination for asset reconciliation |
US9292414B2 (en) * | 2012-11-26 | 2016-03-22 | Nvidia Corporation | System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU |
US9064437B2 (en) * | 2012-12-07 | 2015-06-23 | Intel Corporation | Memory based semaphores |
CN106663021B (zh) * | 2014-06-26 | 2021-01-19 | 英特尔公司 | 虚拟化环境中的智能gpu调度 |
US9626313B2 (en) * | 2014-12-18 | 2017-04-18 | Qualcomm Incorporated | Trace buffer based replay for context switching |
US20160379400A1 (en) * | 2015-06-23 | 2016-12-29 | Intel Corporation | Three-Dimensional Renderer |
US9659402B2 (en) * | 2015-06-26 | 2017-05-23 | Intel Corporation | Filtering multi-sample surfaces |
US10210655B2 (en) * | 2015-09-25 | 2019-02-19 | Intel Corporation | Position only shader context submission through a render command streamer |
US10192281B2 (en) * | 2016-07-07 | 2019-01-29 | Intel Corporation | Graphics command parsing mechanism |
-
2018
- 2018-09-27 US US16/143,777 patent/US11200063B2/en active Active
-
2019
- 2019-06-28 EP EP19183088.4A patent/EP3647948A1/en active Pending
- 2019-08-27 CN CN201910794876.0A patent/CN110956570A/zh active Pending
-
2021
- 2021-11-18 US US17/529,924 patent/US11960896B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022134538A1 (zh) * | 2020-12-24 | 2022-06-30 | 北京握奇数据股份有限公司 | 一种微操作系统字节码精简指令集和资源受限装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200104138A1 (en) | 2020-04-02 |
US11200063B2 (en) | 2021-12-14 |
EP3647948A1 (en) | 2020-05-06 |
US20220156085A1 (en) | 2022-05-19 |
US11960896B2 (en) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628910B2 (en) | Vertex shader with primitive replication | |
US10424043B1 (en) | Efficiently enqueuing workloads from user mode to hardware across privilege domains | |
CN112334878A (zh) | 用于虚拟化显示器的装置和方法 | |
CN111798362A (zh) | 硬件索引映射机制 | |
US20240061700A1 (en) | Virtualization and multi-tenancy support in graphics processors | |
CN110956685A (zh) | 粗略计算着色 | |
US10579382B2 (en) | Method and apparatus for a scalable interrupt infrastructure | |
US10937119B2 (en) | Apparatus and method for virtualized scheduling of multiple duplicate graphics engines | |
US11960896B2 (en) | Graphics engine reset and recovery in a multiple graphics context execution environment | |
CN113039522A (zh) | 用于虚拟化的图形处理器的有效本地显示共享的装置和方法 | |
CN111708718A (zh) | 存储器压缩散列机制 | |
US11854114B2 (en) | Apparatus and method for seamless container migration for graphics processors and associated devices | |
CN111754382A (zh) | 使用平面存储器映射来控制表面访问 | |
CN111667396A (zh) | 用于支持每命令多个遍历器的系统和方法 | |
US11640693B2 (en) | Dynamically enabling tiling in 3D workloads | |
US10963985B2 (en) | Mesh shader output management technology | |
US20210263776A1 (en) | Apparatus and method for graphics virtualization with late synchronization | |
CN110889093A (zh) | 用于图形或视频子系统中的内容保护的系统和方法 | |
CN111095160A (zh) | 空闲功率状态的确定 | |
EP3734454A1 (en) | Memory mapped virtual doorbell mechanism | |
US20190265973A1 (en) | Fusion of SIMD Processing Units |
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 |