CN115858411A - 图形处理单元三维管线的共享功能的资源状态的高效缓存 - Google Patents
图形处理单元三维管线的共享功能的资源状态的高效缓存 Download PDFInfo
- Publication number
- CN115858411A CN115858411A CN202211157793.9A CN202211157793A CN115858411A CN 115858411 A CN115858411 A CN 115858411A CN 202211157793 A CN202211157793 A CN 202211157793A CN 115858411 A CN115858411 A CN 115858411A
- Authority
- CN
- China
- Prior art keywords
- btc
- entry
- cache
- dsat
- state
- 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
- 238000012545 processing Methods 0.000 title claims description 138
- 230000015654 memory Effects 0.000 claims description 270
- 230000006870 function Effects 0.000 claims description 114
- 230000004044 response Effects 0.000 claims description 74
- 238000000034 method Methods 0.000 claims description 68
- 239000004744 fabric Substances 0.000 claims description 30
- 238000010586 diagram Methods 0.000 description 44
- 230000008569 process Effects 0.000 description 35
- 239000000758 substrate Substances 0.000 description 32
- 239000000872 buffer Substances 0.000 description 27
- 238000013461 design Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 23
- 238000007667 floating Methods 0.000 description 23
- 239000011159 matrix material Substances 0.000 description 21
- 239000012634 fragment Substances 0.000 description 15
- 239000000047 product Substances 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 229910052710 silicon Inorganic materials 0.000 description 8
- 239000010703 silicon Substances 0.000 description 8
- 238000004088 simulation Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000009877 rendering Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000005070 sampling Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000014616 translation Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 239000004593 Epoxy Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 208000019300 CLIPPERS Diseases 0.000 description 1
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 101100317378 Mus musculus Wnt3 gene Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 208000021930 chronic lymphocytic inflammation with pontine perivascular enhancement responsive to steroids Diseases 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000007620 mathematical function Methods 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
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000010624 twisted pair cabling Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Multimedia (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Generation (AREA)
Abstract
本文描述的实施例通常涉及3D管线的共享功能内的本地缓存结构,该结构促进资源状态的高效缓存。在示例中,缓存结构被维护在GPU的子核心内。本地缓存结构包括(i)具有条目的SC,每个条目包含绑定资源的状态,以及(ii)具有条目的DSAT,每个条目均包含到SC的索引。DSAT由表示绑定表条目地址的SBTO值标记。接收对由3D管线的共享功能访问的特定绑定资源的状态的请求,该请求包括指示指向绑定表内的条目的SBTO的信息。基于SBTO并在对缓存结构的单个访问期间作出关于特定绑定资源的状态是否存在的确定。
Description
技术领域
本文所述的实施例总体上涉及图形处理单元(graphics processing unit,GPU)领域,并且更具体地涉及与被GPU的三维(three-dimensional,3D)管线的共享功能访问的资源有关的状态信息的高效缓存和取回。
背景技术
3D管线中的共享功能(如纹理采样器)需要被访问的资源(例如,底层纹理资源)的状态信息(例如,采样器状态(诸如过滤模式、寻址模式、最大各向异性等)。如果不进行高效的管理,此类状态信息取得可能是非常昂贵的。所产生的成本是由于取得等待时间的原因,由于绑定表以及状态改变的高频率,这通常需要多次存储器访问。
附图说明
本文所描述的各实施例作为示例而非限制在所附附图的各图中示出,在附图中,同样的附图标记指代类似的要素。
图1是根据实施例的处理系统的框图。
图2A-图2D图示根据一些实施例的计算系统和图形处理器。
图3A-图3C图示根据一些实施例的附加的图形处理器和计算加速器体系结构的框图。
图4是根据一些实施例的图形处理器的图形处理引擎的框图。
图5A-图5B图示根据一些实施例的线程执行逻辑,该线程执行逻辑包括在图形处理器核心中采用的处理元件的阵列。
图6图示根据实施例的附加的执行单元。
图7是图示根据一些实施例的图形处理器指令格式的框图。
图8是图形处理器的另一实施例的框图。
图9A是图示根据一些实施例的图形处理器命令格式的框图。
图9B是图示根据实施例的图形处理器命令序列的框图。
图10图示根据一些实施例的数据处理系统的示例性图形软件体系结构。
图11A是图示根据实施例的可用于制造集成电路以执行操作的IP核心开发系统的框图。
图11B图示根据一些实施例的集成电路封装组件的截面侧视图。
图11C图示根据实施例的封装组件,该封装组件包括连接到衬底的多个单元的硬件逻辑小芯片。
图11D图示根据实施例的包括可互换小芯片的封装组件。
图12是图示根据实施例的可使用一个或多个IP核心来制造的示例性片上系统集成电路的框图。
图13A-图13B是图示根据一些实施例的用于在SoC内使用的示例性图形处理器的框图。
图14是图示涉及两个级别的间接引用(indirection)的对存储器的状态请求的框图。
图15是图示根据一个实施例的用于促进间接引用的高效解析的本地缓存结构的框图。
图16A是图示根据实施例的图15的本地缓存结构内的第一示例场景和对应的数据流的框图。
图16B是图示根据实施例的图15的本地缓存结构内的第二示例场景和对应的数据流的框图。
图16C是图示根据实施例的图15的本地缓存结构内的第三示例场景和对应的数据流的框图。
图16D是图示根据实施例的图15的本地缓存结构内的第四示例场景和对应的数据流的框图。
图17是图示根据实施例的状态请求处理的流程图。
图18是图示根据实施例的DSAT未命中处理的流程图。
图19是图示根据实施例的BTC未命中处理的流程图。
图20是图示根据实施例的来自存储器的状态偏移(state offset,SO)返回处理的流程图。
图21是图示根据实施例的状态缓存(state cache,SC)未命中处理的流程图。
图22是图示根据实施例的来自存储器的状态返回处理的流程图。
具体实施方式
本文描述的实施例通常涉及3D管线的共享功能内的本地缓存结构,该结构促进资源状态的高效缓存。如下文典型地参考图14进一步所解释,共享功能(例如,纹理采样器)通常实现状态缓存,以避免取得每个消息的状态信息。对于绑定的资源,在获得所需状态信息之前通常会发出多个串行存储器请求。
因此,本文描述的实施例寻求通过实现本地缓存结构来改善由共享功能使用的资源状态的缓存和取得的效率,共享功能可以从该本地缓存结构中请求与同GPU的3D管线相关联的绑定表流(其在本文中也可以简称为绑定表)的条目相关联的所需状态信息。如下文参考图15进一步描述,本地缓存结构可以包括存储绑定表条目的绑定表缓存(bindingtable cache,BTC)、包含绑定资源的状态的状态缓存(SC)和促进确定关于状态请求是表示在单个访问中在本地缓存结构内的命中还是表示在单个访问中在本地缓存结构内的未命中的直接状态访问表(direct state access table,DSAT),等等。由共享功能作出的状态请求应在共享功能管线的前端处执行,以促进共享功能管线的下游部分的状态信息的可用性,该下游部分将最终利用状态信息来执行所讨论的操作。
根据一个实施例,本地缓存结构被维护在GPU的子核心内,并且包括(i)状态缓存(SC),其具有多个SC条目,每个SC条目包含绑定资源的状态,以及(ii)直接状态访问表(DSAT),其具有多个DSAT条目,每个DSAT条目包含表示进入SC的索引的状态位置标识符(state location identifier,SLID)。DSAT可以以内容可寻址存储器(content-addressable memory,CAM)的形式实现,该内容可寻址存储器由表示与GPU的3D管线相关联的绑定表流的地址条目的状态绑定表偏移(state binding table offset,SBTO)值标记并被存储在与GPU相关联的存储器子系统内。对被3D管线的共享功能访问的特定绑定资源的状态的请求被接收。该请求包括指示指向绑定表流中的条目的SBTO的信息。基于SBTO,作出关于在对本地缓存结构的单个访问期间、特定绑定资源的状态是否存在于本地缓存结构内的确定。
如下面进一步描述,由本文描述的各种实施例提供了许多优点和效率,包括对于目前需要针对缓存未命中的两个依赖性存储器访问的绑定资源的状态缓存的增加的效率。所提出的本地缓存结构还提供了用于从绑定表偏移直接映射到状态的机制。此外,所提出的本地缓存结构也减少了在两个不同的绑定表条目指向同一状态的场景中使用的条目数量。例如,在本地上缓存绑定表条目(例如,在BTC内)允许通过SLID而不是指向绑定表流的指针对SC进行索引,这可以防止在多个绑定表流条目指向同一状态时SC中出现重复条目。然而,当绑定表树在绘制调用(draw call,CPU调用图像编程接口)之间改变,而不是状态本身改变时,可以观察到又一优点。在此类情况下,惩罚是仅一个存储器请求,而不是两个,并且SLID(即,到SC的索引)对于所保留的状态不会改变。
系统概览
图1是根据实施例的处理系统100的框图。处理系统100可在以下各项中被使用:单处理器桌面型电脑系统、多处理器工作站系统、或具有大量处理器102或处理器核心107的服务器系统。在一个实施例中,处理系统100是被并入在片上系统(SoC)集成电路内的处理平台,该片上系统(SoC)集成电路用于在移动设备、手持式设备或嵌入式设备中使用,诸如,用于在具有至局域网或广域网的有线或无线连接性的物联网(Internet-of-things,IoT)设备内使用。
在一个实施例中,处理系统100可包括以下各项,可与以下各项耦合,或可集成在以下各项内:基于服务器的游戏平台;游戏控制台,包括游戏和媒体控制台;移动游戏控制台、手持式游戏控制台、或在线游戏控制台。在一些实施例中,处理系统100是移动电话、智能电话、平板计算设备或移动互联网连接的设备(诸如,具有低内部存储容量的膝上型计算机)的部分。处理系统100也可包括以下各项,与以下各项耦合,或被集成在以下各项内:可穿戴设备,诸如,智能手表可穿戴设备;智能眼镜或服装,其利用增强现实(augmentedreality,AR)或虚拟现实(virtual reality,VR)特征来增强,以提供视觉、音频或触觉输出来补充现实世界视觉、音频或触觉体验或以其他方式提供文本、音频、图形、视频、全息图像或视频、或触觉反馈;其他增强现实(AR)设备;或其他虚拟现实(VR)设备。在一些实施例中,处理系统100包括电视机或机顶盒设备,或是电视机或机顶盒设备的部分。在一个实施例中,处理系统100可包括自动驾驶交通工具,与自动驾驶交通工具耦合,或集成在自动驾驶交通工具内,该自动驾驶交通工具诸如,公共汽车、拖拉机拖车、汽车、电机或电力循环、飞机或滑翔机(或其任何组合)。自动驾驶交通工具可使用处理系统100来处理在该交通工具周围感测到的环境。
在一些实施例中,一个或多个处理器102各自包括一个或多个处理器核心107,这一个或多个处理器核心107用于处理指令,这些指令当被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核心107中的至少一个处理器核心被配置成用于处理特定的指令集109。在一些实施例中,指令集109可促进复杂指令集计算(ComplexInstruction Set Computing,CISC)、精简指令集计算(Reduced Instruction SetComputing,RISC)或经由超长指令字(Very Long Instruction Word,VLIW)的计算。一个或多个处理器核心107可以处理不同的指令集109,不同的指令集109可包括用于促进对其他指令集的仿真的指令。处理器核心107还可包括其他处理设备,诸如,数字信号处理器(Digital Signal Processor,DSP)。
在一些实施例中,处理器102包括缓存存储器104。取决于体系结构,处理器102可具有单个内部缓存或多级的内部缓存。在一些实施例中,缓存存储器在处理器102的各种部件之间被共享。在一些实施例中,处理器102也使用外部缓存(例如,第三级(L3)缓存或最后一级缓存(Last Level Cache,LLC))(未示出),可使用已知的缓存一致性技术在处理器核心107之间共享该外部缓存。寄存器堆106可附加地被包括在处理器102中,并且可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以专用于处理器102的设计。
在一些实施例中,一个或多个处理器102与一个或多个接口总线110耦合,以在处理器102与处理系统100中的其他部件之间传送通信信号,诸如,地址、数据、或控制信号。在一个实施例中,接口总线110可以是处理器总线,诸如,直接媒体接口(Direct MediaInterface,DMI)总线的某个版本。然而,处理器总线不限于DMI总线,并且可包括一个或多个外围部件互连总线(例如,PCI、PCI快速)、存储器总线、或其他类型的接口总线。在一个实施例中,(一个或多个)处理器102包括集成存储器控制器116和平台控制器中枢130。存储器控制器116促进存储器设备与处理系统100的其他部件之间的通信,而平台控制器中枢(platform controller hub,PCH)130提供经由本地I/O总线至I/O设备的连接。
存储器设备120可以是动态随机存取存储器(dynamic random-access memory,DRAM)设备、静态随机存取存储器(static random-access memory,SRAM)设备、闪存设备、相变存储器设备、或具有合适的性能以充当进程存储器的某个其他存储器设备。在一个实施例中,存储器设备120可以作为用于处理系统100的系统存储器来操作,以存储数据122和指令121,用于在一个或多个处理器102执行应用或进程时使用。存储器控制器116也与任选的外部图形处理器1418耦合,该任选的外部图形处理器118可与处理器102中的一个或多个图形处理器108通信以执行图形操作和媒体操作。在一些实施例中,可由加速器112辅助图形操作、媒体操作和/或计算操作,该加速器112是可被配置成用于执行专业的图形操作、媒体操作或计算操作的集合的协处理器。例如,在一个实施例中,加速器112是用于优化机器学习或计算操作的矩阵乘法加速器。在一个实施例中,加速器112是光线追踪加速器,该光线追踪加速器可用于与图形处理器108协同地执行光线追踪操作。在一个实施例中,可替代加速器112使用外部加速器119,或可与加速器112协同地使用外部加速器119。
在一些实施例中,显示设备111可连接到(一个或多个)处理器102。显示设备111可以是以下各项中的一项或多项:内部显示设备,如在移动电子设备或膝上型设备中;或经由显示接口(例如,显示端口等)附接的外部显示设备。在一个实施例中,显示设备111可以是头戴式显示器(head mounted display,HMD),诸如,用于在虚拟现实(VR)应用或增强现实(AR)应用中使用的立体显示设备。
在一些实施例中,平台控制器中枢130使外围设备能够经由高速I/O总线连接到存储器设备120和处理器102。I/O外围设备包括但不限于音频控制器146、网络控制器134、固件接口128、无线收发器126、触摸传感器125、数据存储设备124(例如,非易失性存储器、易失性存器、硬盘驱动器、闪存、NAND、3D NAND、3D Xpoint等)。数据存储设备124可以经由存储接口(例如,SATA)或经由外围总线(诸如,外围部件互连总线(例如,PCI、PCI快速))连接。触摸传感器125可以包括触摸屏传感器、压力传感器、或指纹传感器。无线收发器126可以是Wi-Fi收发器、蓝牙收发器、或移动网络收发器,该移动网络收发器诸如3G、4G、5G或长期演进(Long-Term Evolution,LTE)收发器。固件接口128启用与系统固件的通信,并且可以例如是统一可扩展固件接口(unified extensible firmware interface,UEFI)。网络控制器134可启用至有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线110耦合。在一个实施例中,音频控制器146是多声道高清音频控制器。在一个实施例中,处理系统100包括用于将传统(例如,个人系统2(PS/2))设备耦合至系统的任选的传统I/O控制器140。平台控制器中枢130还可以连接到一个或多个通用串行总线(UniversalSerial Bus,USB)控制器142连接输入设备,诸如,键盘和鼠标143组合、相机144、或其他USB输入设备。
将领会,所示的处理系统100是示例性而非限制性的,因为也可以使用以不同方式配置的其他类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可以集成到分立的外部图形处理器中,该分立的外部图形处理器诸如外部图形处理器118。在一个实施例中,平台控制器中枢130和/或存储器控制器116可以在一个或多个处理器102外部。例如,处理系统100可包括外部存储器控制器116和平台控制器中枢130,该外部存储器控制器116和平台控制器中枢130可以被配置为在与(一个或多个)处理器102通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。
例如,可使用电路板(“橇板(sled)”),在该电路板上被放置的部件(诸如,CPU、存储器和其他部件)经设计以实现提升的热性能。在一些示例,诸如处理器之类的处理部件位于橇板的顶侧上,而诸如DIMM之类的附近存储器位于橇板的底侧上。作为由该设计提供的增强的气流的结果,部件能以比在典型系统中更高的频率和功率等级来操作,由此提高性能。此外,橇板配置成盲配机架中的功率和数据通信线缆,由此增强它们被快速地移除、升级、重新安装和/或替换的能力。类似地,位于橇板上的各个部件(诸如,处理器、加速器、存储器和数据存储驱动器)由于它们距彼此的增加的间距而被配置成易于升级。在说明性实施例中,部件附加地包括用于证明它们的真实性的硬件认证特征。
数据中心可利用支持多个其他网络体系结构的单个网络体系结构(“结构”),多个其他网络体系结构包括以太网和全方位路径。橇板可经由光纤耦合至交换机,这提供比典型的双绞线布线(例如,5类、5e类、6类等)更高的带宽和更低的等待时间。由于高带宽、低等待时间的互连和网络体系结构,数据中心在使用中可集中在物理上分散的诸如存储器、加速器(例如,GPU、图形加速器、FPGA、ASIC、神经网络和/或人工智能加速器等)和数据存储驱动器之类的资源,并且根据需要将它们提供给计算资源(例如,处理器),从而使计算资源能够就好像被集中的资源在本地那样访问这些被集中的资源。
功率供应或功率源可将电压和/或电流提供给处理系统100或本文中描述的任何部件或系统。在一个示例中,功率供应包括用于插入到墙壁插座中的AC-DC(交流-直流)适配器。此类AC功率可以是可再生能源(例如,太阳能)功率源。在一个示例中,功率源包括DC功率源,诸如,外部AC-DC转换器。在一个示例中,功率源或功率供应包括用于通过接近充电场来充电的无线充电硬件。在一个示例中,功率源可包括内部电池、交流供应、基于动作的功率供应、太阳能功率供应、或燃料电池源。
图2A-图2D图示由本文所述的实施例提供的计算系统和图形处理器。图2A-图2D的具有与本文中任何其他附图的元件相同的附图标记(或名称)的那些元件可以与本文中其他地方描述的方式类似的任何方式操作或运行,但不限于此。
图2A是处理器200的实施例的框图,该处理器200具有一个或多个处理器核心202A-202N、集成存储器控制器214、以及集成图形处理器208。处理器200可包括附加的核心,这些附加的核心最多由虚线框表示的附加核心202N并包括由虚线框表示的附加核心202N。处理器核心202A-202N中的每一个包括一个或多个内部缓存单元204A-204N。在一些实施例中,每个处理器核心也具有对一个或多个共享缓存单元206的访问权。内部缓存单元204A-204N和共享缓存单元206表示处理器200内的缓存存储器层次体系。缓存存储器层次体系可包括每个处理器核心内的至少一个级别的指令和数据缓存以及一个或多个级别的共享的中级缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)、或其他级别的缓存,其中,在外部存储器之前的最高级别的缓存被分类为LLC。在一些实施例中,缓存一致性逻辑维持各缓存单元206与204A-204N之间的一致性。
在一些实施例中,处理器200还可包括一个或多个总线控制器单元的集合216和系统代理核心210。一个或多个总线控制器单元216管理外围总线的集合,诸如,一个或多个PCI总线或PCI快速总线。系统代理核心210提供对各处理器部件的管理功能。在一些实施例中,系统代理核心210包括用于管理对各种外部存储器设备(未示出)的访问的一个或多个集成存储器控制器214。
在一些实施例中,例如,处理器核心202A-202N中的一个或多个处理器核心可包括针对同步多线程操作的支持。在此类实施例中,系统代理核心210包括用于在多线程处理期间协调并操作核心202A-202N的部件。系统代理核心210可附加地包括功率控制单元(powercontrol unit,PCU),该功率控制单元(PCU)包括用于调节处理器核心202A-202N和图形处理器208的功率状态的逻辑和部件。
在一些实施例中,处理器200附加地包括用于执行图形处理操作的图形处理器208。在这些实施例中的一些实施例中,图形处理器208与共享缓存单元的集合206以及系统代理核心210耦合,该系统代理核心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在指令集体系结构(instruction setarchitecture,ISA)方面是异构的,其中,处理器核心202A-202N中的一个或多个执行第一指令集,而其他核心中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核心202A-202N在微体系结构方面是异构的,其中,具有相对较高功耗的一个或多个核心与具有较低功耗的一个或多个功率核心耦合。在一个实施例中,处理器核心202A-202N在计算能力方面是异构的。此外,处理器200可在一个或多个芯片上实现,或者被实现为除其他部件之外还具有所图示的部件的SoC集成电路。
图2B是根据本文中所描述的一些实施例的图形处理器核心219的硬件逻辑的框图。图2B的具有与本文中任何其他附图的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。图形处理器核心219(有时称为核心切片)可以是模块化图形处理器内的一个或多个图形核心。图形处理器核心219是一个图形核心切片的示例,并且基于目标功率包络和性能包络,如本文中所描述的图形处理器可包括多个图形核心切片。每个图形处理器核心219可包括固定功能块230,该固定功能块1530与多个子核心221A-221F(也称为子切片)耦合,多个子核心1521A-1521F包括模块化的通用和固定功能逻辑的块。
在一些实施例中,固定功能块230包括几何/固定功能管线231,该几何/固定功能管线231例如在较低性能和/或较低功率的图形处理器实现方式中可由图形处理器核心219中的所有子核心共享。在各个实施例中,几何/固定功能管线231包括3D固定功能管线(例如,如在下文描述的图3和图4中的3D管线312)、视频前端单元、线程生成器和线程调遣器、以及统一返回缓冲器管理器,该统一返回缓冲器管理器管理统一返回缓冲器(例如,如下文所描述的在图4中的统一返回缓冲器418)。
在一个实施例中,固定功能块230还包括图形SoC接口232、图形微控制器233和媒体管线234。图形SoC接口232提供图形处理器核心219与片上系统集成电路内的其他处理器核心之间的接口。图形微控制器233是可被配置成管理图形处理器核心219的各种功能的可编程子处理器,这些功能包括线程调遣、调度和抢占。媒体管线234(例如,图3和图4的媒体管线316)包括用于促进对包括图像数据和视频数据的多媒体数据进行解码、编码、预处理和/或后处理的逻辑。媒体管线234经由对子核心221A-221F内的计算或采样逻辑的请求来实现媒体操作。
在一个实施例中,SoC接口232使图形处理器核心219能够与通用应用处理器核心(例如,CPU)和/或SoC内的其他部件进行通信,其他部件包括诸如共享的最后一级缓存存储器之类的存储器层次体系元件、系统RAM、和/或嵌入式片上或封装上DRAM。SoC接口232还可启用与SoC内的诸如相机成像管线之类的固定功能设备的通信,并且启用全局存储器原子性的使用和/或实现全局存储器原子性,该全局存储器原子性可在图形处理器核心219与SoC内的CPU之间被共享。SoC接口232还可实现针对图形处理器核心219的功率管理控制,并且启用图形处理器核心219的时钟域与SoC内的其他时钟域之间的接口。在一个实施例中,SoC接口232使得能够从命令流转化器和全局线程调遣器接收命令缓冲器,该命令流转化器和全局线程调遣器配置成用于将命令和指令提供给图形处理器内的一个或多个图形核心中的每一个图形核心。当媒体操作要被执行时,这些命令和指令可以被调遣给媒体管线234,或者当图形处理操作要被执行时,这些命令和指令可以被调遣给几何和固定功能管线(例如,几何和固定功能管线231、几何和固定功能管线237)。
图形微控制器233可被配置成用于执行针对图形处理器核心219的各种调度任务和管理任务。在一个实施例中,图形微控制器233可对子核心221A-221F内的执行单元(execution unit,EU)阵列222A-222F、224A-224F内的各种图形并行引擎执行图形和/或计算工作负载调度。在该调度模型中,在包括图形处理器核心219的SoC的CPU核心上执行的主机软件可将工作负载提交到多个图形处理器门铃(doorbell)中的一个图形处理器门铃,这调用了对适当的图形引擎的调度操作。调度操作包括:确定接下来要运行哪个工作负载,将工作负载提交到命令流转化器,抢占在引擎上运行的现有工作负载,监测工作负载的进度,以及当工作负载完成时通知主机软件。在一个实施例中,图形微控制器233还可促进图形处理器核心219的低功率或空闲状态,从而向图形处理器核心219提供独立于操作系统和/或系统上的图形驱动器软件、跨低功率状态转变来保存和恢复图形处理器核心219内的寄存器的能力。
图形处理器核心219可具有多于或少于所图示的子核心221A-221F,最多N个模块化子核心。对于N个子核心的每个集合,图形处理器核心219还可包括共享功能逻辑235、共享和/或缓存存储器236、几何/固定功能管线237、以及用于加速各种图形和计算处理操作的附加的固定功能逻辑238。共享功能逻辑235可包括与图17的共享功能逻辑1720(例如,采样器逻辑、数学逻辑、和/或线程间通信逻辑)相关联的、可由图形处理器核心219内的每N个子核心共享的逻辑单元。共享和/或缓存存储器236可以是用于图形处理器核心219内的N个子核心的集合221A-221F的最后一级缓存,并且还可以充当可由多个子核心访问的共享存储器。几何/固定功能管线237而不是几何/固定功能管线231可被包括在固定功能块230内,并且几何/固定功能管线237可包括相同或类似的逻辑单元。
在一个实施例中,图形处理器核心219包括附加的固定功能逻辑238,该附加的固定功能逻辑238可包括供由图形处理器核心219使用的各种固定功能加速逻辑。在一个实施例中,附加的固定功能逻辑238包括供在仅位置着色中使用的附加的几何管线。在仅位置着色中,存在两个几何管线:几何/固定功能管线238、231内的完全几何管线;以及剔除管线,其是可被包括在附加的固定功能逻辑238内的附加的几何管线。在一个实施例中,剔除管线是完全几何管线的精简版本。完全管线和剔除管线可以执行同一应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏被丢弃三角形的长剔除运行,从而在一些实例中使得着色能够更早地被完成。例如并且在一个实施例中,附加的固定功能逻辑238内的剔除管线逻辑可以与主应用并行地执行位置着色器,并且通常比完全管线更快地生成关键结果,因为剔除管线仅取得顶点的位置属性并且仅对顶点的位置属性进行着色,而不对去往帧缓冲器的像素执行栅格化和渲染。剔除管线可以使用所生成的关键结果来计算所有三角形的可见性信息,而无需考虑那些三角形是否被剔除。完全管线(其在本实例中可以被称为重放(replay)管线)可以消耗该可见性信息以跳过被剔除的三角形,从而仅对最终被传递到栅格化阶段的可见的三角形进行着色。
在一个实施例中,附加的固定功能逻辑238还可包括机器学习加速逻辑,诸如,固定功能矩阵乘法逻辑,该机器学习加速逻辑用于包括针对机器学习训练或推断的优化的实现方式。
在每个图形子核心221A-221F内包括可用于响应于由图形管线、媒体管线、或着色器程序作出的请求而执行图形操作、媒体操作和计算操作的执行资源的集合。图形子核心221A-221F包括:多个EU阵列222A-222F、224A-224F;线程调遣和线程间通信(threaddispatch and inter-thread communication,TD/IC)逻辑223A-223F;3D(例如,纹理)采样器225A-225F;媒体采样器226A-226F;着色器处理器227A-227F;以及共享的本地存储器(shared local memory,SLM)228A-228F。EU阵列222A-202F、224A-224F各自包括多个执行单元,这些执行单元是能够执行浮点和整数/定点逻辑操作以服务于图形操作、媒体操作或计算操作(包括图形程序、媒体程序或计算着色器/GPGPU程序)的通用图形处理单元。TD/IC逻辑223A-223F执行针对子核心内的执行单元的本地线程调遣和线程控制操作,并且促进在子核心的执行单元上执行的线程之间的通信。3D采样器225A-225F可将纹理或其他3D图形相关的数据读取到存储器中。3D采样器可基于所配置的样本状态以及与给定纹理相关联的纹理格式以不同方式读取纹理数据。媒体采样器226A-226F可基于与媒体数据相关联的类型和格式来执行类似的读取操作。在一个实施例中,每个图形子核心221A-221F可替代地包括统一3D和媒体采样器。在子核心221A-221F中的每个子核心内的执行单元上执行的线程可利用每个子核心内的共享的本地存储器228A-228F,以使在线程组内执行的线程能够使用片上存储器的共同的池来执行。
图2C图示图形处理单元(GPU)239,该GPU 239包括布置为多核心组240A-240N的专用的图形处理资源集合。图示了多核心组240A的细节。多核心组240B-240N可配备有相同或类似的图形处理资源集合。
如所图示,多核心组240A可包括图形核心的集合243、张量核心的集合244以及光线追踪核心的集合245。调度器/调遣器241调度和调遣图形线程以用于在各个核心243、244、245上执行。在一个实施例中,张量核心244是具有使具有零值输入的乘法操作被绕过的硬件的稀疏张量核心。
寄存器堆的集合242可以存储在执行图形线程时由核心243、244、245使用的操作对象值。这些寄存器堆可包括例如用于存储整数值的整数寄存器、用于存储浮点值的浮点寄存器、用于存储紧缩数据元素(整数和/或浮点数据元素)的向量寄存器以及用于存储张量/矩阵值的片寄存器。在一个实施例中,片寄存器被实现为组合的向量寄存器集合。
一个或多个组合的第一级(L1)缓存和共享存储器单元247在本地将图形数据存储在每个多核组240A内,图形数据诸如纹理数据、顶点数据、像素数据、光线数据、包围体数据等。一个或多个纹理单元247也可用于执行纹理操作,诸如,纹理映射和采样。由所有多核心组240A-240N或多核心组240A-240N的子集共享的第二级(L2)缓存253存储用于多个并发的图形线程的图形数据和/或指令。如所图示,可跨多个多核心组240A-240N共享L2缓存253。一个或多个存储器控制器248将GPU 239耦合至存储器249,该存储器249可以是系统存储器(例如,DRAM)和/或专用图形存储器(例如,GDDR6存储器)。
输入/输出(I/O)电路250将GPU 239耦合至一个或多个I/O设备252,这一个或多个I/O设备252诸如数字信号处理器(DSP)、网络控制器或用户输入设备。片上互连可用于将I/O设备252耦合至GPU 239和存储器249。I/O电路251的一个或多个I/O存储器管理单元(IOMMU)250直接将I/O设备252耦合至存储器249。在一个实施例中,IOMMU 251管理用于将虚拟地址映射到存储器249中的物理地址的多个集合的页表。在该实施例中,I/O设备252、(一个或多个)CPU 246和GPU 239可共享相同的虚拟地址空间。
在一个实现方式中,IOMMU 251支持虚拟化。在这种情况下,其可以管理用于将宾客/图形虚拟地址映射到宾客/图形物理地址的第一集合的页表以及用于将宾客/图形物理地址映射到(例如,存储器366内的)系统/主机物理地址的第二集合的页表。第一集合的页表和第二集合的页表中的每一个的基址可被存储在控制寄存器中,并且在上下文切换时被换出(例如,使得新上下文被提供有对相关集合的页表的访问权)。虽然未在图2C中图示,但是核心243、244、245和/或多核心组240A-240N中的每一个可包括转换后备缓冲器(TLB),这些TLB用于对宾客虚拟至宾客物理转换、宾客物理至主机物理转换以及宾客虚拟至主机物理转换进行缓存。
在一个实施例中,CPU 246、GPU 239和I/O设备252被集成在单个半导体芯片和/或芯片封装上。存储器249可集成在同一芯片上,或者可经由芯片外接口被耦合至存储器控制器248。在一个实现方式中,存储器249包括共享与其他物理系统级存储器相同的虚拟地址空间的GDDR6存储器,但是本发明的根本性原理不限于该特定的实现方式。
在一个实施例中,张量核心244包括专门设计成用于执行矩阵操作的多个执行单元,这些矩阵操作是用于执行深度学习操作的基本计算操作。例如,可将同步矩阵乘法操作用于神经网络训练和推断。张量核心244可使用各种操作对象精度来执行矩阵处理,各种操作对象精度包括单精度浮点(例如,32比特)、半精度浮点(例如,16比特)、整数字(16比特)、字节(8比特)和半字节(4比特)。在一个实施例中,神经网络实现方式提取每个经渲染场景的特征,从而潜在地组合来自多个帧的细节,以构建高质量的最终图像。
在深度学习实现方式中,可调度并行的矩阵乘法工作以用于在张量核心244上执行。神经网络的训练尤其需要大量矩阵点积操作。为了处理N x N x N矩阵乘法的内积公式化,张量核心244可包括至少N个点积处理元件。在矩阵乘法开始之前,一个完整的矩阵被加载到片寄存器中,并且对于N个循环中的每个循环,第二矩阵的至少一列被加载。对于每个循环,存在被处理的N个点积。
取决于特定的实现方式,能以不同精度来存储矩阵元素,包括16比特的字、8比特的字节(例如,INT8)以及4比特的半字节(例如,INT4)。可为张量核心244指定不同的精度模式以确保将最高效的精度用于不同的工作负载(例如,诸如推断工作负载,其可容忍至字节和半字节的离散化(quantization))。
在一个实施例中,光线追踪核心245加速用于实时光线追踪实现方式和非实时光线追踪实现方式两者的光线追踪操作。具体而言,光线追踪核心245包括光线遍历/相交电路,该光线遍历/相交电路用于使用包围体层级结构(BVH)来执行光线遍历并识别封围在BVH容体内的光线与基元之间的相交。光线追踪核心245还可包括用于执行深度测试和剔除(例如,使用Z缓冲器或类似布置)的电路。在一个实现方式中,光线追踪核心245与本文中描述的图像降噪技术协同地执行遍历和相交操作,该图像降噪技术的至少部分可在张量核心244上执行。例如,在一个实施例中,张量核心244实现深度学习神经网络以执行对由光线追踪核心245生成的帧的降噪。然而,(多个)CPU 246、图形核心243和/或光线追踪核心245还可实现全部的降噪和/或深度学习算法或降噪和/或深度学习算法中的一部分。
此外,如上文所描述,可采用对于降噪的分布式方法,在该分布式方法中,GPU 239在通过网络或高速互连而耦合至其他计算设备的计算设备中。在该实施例中,经互连的计算设备共享神经网络学习/训练数据以改善整个系统学习执行用于不同类型的图像帧和/或不同的图形应用的降噪的速度。
在一个实施例中,光线追踪核心245处理所有的BVH遍历和光线-基元相交,从而使图形核心243免于被针对每条光线的数千条指令过载。在一个实施例中,每个光线追踪核心245包括用于执行包围盒测试(例如,用于遍历操作)的第一集合的专业电路以及用于执行光线-三角形相交测试(例如,使已被遍历的光线相交)的第二集合的专业电路。由此,在一个实施例中,多核心组240A可简单地发起光线探测,并且光线追踪核心245独立地执行光线遍历和相交,并将命中数据(例如,命中、无命中、多个命中等)返回到线程上下文。当光线追踪核心245执行遍历和相交操作时,其他核心243、244被释放以执行其他图形或计算工作。
在一个实施例中,每个光线追踪核心245包括用于执行BVH测试操作的遍历单元以及执行光线-基元相交测试的相交单元。相交单元生成“命中”、“无命中”或“多个命中”响应,该相交单元将这些响应提供给适当的线程。在遍历和相交操作期间,其他核心(例如,图形核心243和张量核心244)的执行资源被释放以执行其他形式的图形工作。
在下文描述的一个特定实施例中,使用在其中工作被分布在图形核心243与光线追踪核心245之间的混合式栅格化/光线追踪方法。
在一个实施例中,光线追踪核心245(和/或其他核心243、244)包括对光线追踪指令集的硬件支持,光线追踪指令集诸如:微软的DirectX光线追踪(DXR),其包括DispatchRays命令;以及光线生成着色器、最近命中着色器、任何命中着色器和未命中着色器,它们启用为每个对象指派唯一集合的着色器和纹理。可由光线追踪核心245、图形核心243和张量核心244支持的另一光线追踪平台是Vulkan 1.1.85。然而,要注意本发明的根本性原理不限于任何特定的光线追踪ISA。
一般而言,各个核心245、244、243可支持包括用于以下各项的指令/函数的光线追踪指令集:光线生成、最近命中、任何命中、光线-基元相交、逐基元和层级结构包围盒构建、未命中、拜访、和异常。更具体地,一个实施例包括用于执行以下功能的光线追踪指令:
光线生成——可为每个像素、样本或其他用户定义的工作分配执行光线生成指令。
最近命中——可执行最近命中指令以对场景内光线与基元的最近交点定位。
任何命中——任何命中指令识别场景内光线与基元之间的多个相交,从而潜在地识别新的最近交点。
相交——相交指令执行光线-基元相交测试并输出结果。
逐基元包围盒构建——该指令围绕给定的基元或基元组建立包围盒(例如,当建立新BVH或其他加速数据结构时)。
未命中——指示光线未命中场景或场景的指定区域内的所有几何体。
拜访——指示光线将遍历的子容体。
异常——包括各种类型的异常处置器(例如,为各种错误条件调用)。
在一个实施例中,光线追踪核心245可适于加速通用计算操作,这些通用计算操作可使用与光线相交测试类似的计算技术来加速。可提供计算框架,该计算框架使着色器程序能够被编译为经由光线追踪核执行通用计算操作的低级别指令和/或基元。可受益于在光线追踪核心245上执行的计算操作的示例性计算问题包括涉及坐标空间内光束、波、光线或粒子传播的计算。可相对于坐标空间内的几何体或网格计算与那个传播相关联的交互。例如,与电磁信号传播通过环境相关联的计算可经由使用经由光线追踪核心被执行的指令或基元来加速。信号通过环境中的对象发生的折射和反射可被计算为直接的光线追踪模拟。
光线追踪核心245还可用于执行不直接与光线追踪类似的计算。例如,可使用光线追踪核心245来加速网格投影、网格细化和体积采样计算。还可执行通用坐标空间计算,诸如,最近邻计算。例如,可通过定义坐标空间中围绕给定点的包围盒来发现该点附近的点的集合。随后可使用光线追踪核心245内的BVH和光线探测逻辑来确定包围盒内点的集合的相交。相交构成原点以及那个原点的最近邻。可并行于在图形核心243和张量核心244上执行的计算来执行使用光线追踪核心245来执行的计算。着色器编译器可被配置成将计算着色器或其他通用图形处理程序编译为能够跨图形核心243、张量核心244和光线追踪核心245被并行化的低级别基元。
图2D是根据本文中描述的实施例的通用图形处理器单元(GPGPU)270的框图,该GPGPU 270可被配置为图形处理器和/或计算加速器。GPGPU 270可经由一个或多个系统和/或存储器总线与主机处理器(例如,一个或多个CPU 246)和存储器271、272互连。在一个实施例中,存储器271可以是可与一个或多个CPU 246进行共享的系统存储器,而存储器272是专用于GPGPU 270的设备存储器。在一个实施例中,GPGPU 270和设备存储器272内的部件可被映射到可由一个或多个CPU 246访问的存储器地址中。可经由存储器控制器268来促进对存储器271和272的访问。在一些实施例中,存储器控制器268包括内部直接存储器存取(direct memory access,DMA)控制器269,或可包括用于执行否则将由DMA控制器执行的操作的逻辑。
GPGPU 270包括多个缓存存储器,这些缓存存储器包括L2缓存253、L1缓存254、指令缓存255、以及共享存储器256,该共享存储器256的至少部分也可被分区为缓存存储器。GPGPU 270还包括多个计算单元260A-260N。每个计算单元260A-260N包括向量寄存器的集合261、标量寄存器的集合262、向量逻辑单元的集合263、以及标量逻辑单元的集合264。计算单元260A-260N还可包括本地共享存储器265和程序计数器266。计算单元260A-260N可与常量缓存267耦合,该常量缓存267可用于存储常量数据,该常量数据是将在GPGPU 270上执行的核心程序或着色器程序的运行期间不会改变的数据。在一个实施例中,常量缓存267是标量数据缓存,并且经缓存的数据可被直接取到标量寄存器262中。
在操作期间,一个或多个CPU 246可将命令写入到GPGPU 270中的寄存器中,或写入到GPGPU 270中的、已经被映射到可访问地址空间中的存储器中。命令处理器257可从寄存器或存储器读取命令,并且确定如何将在GPGPU 270内处理那些命令。随后可使用线程调遣器258来将线程调遣给计算单元260A-260N以执行那些命令。每个计算单元260A-260N可独立于其他计算单元来执行线程。此外,每个计算单元260A-260N可被独立地配置成用于有条件计算,并且可有条件地将计算的结果输出到存储器。当所提交的命令完成时,命令处理器257可中断一个或多个CPU 246。
图3A-图3C图示由本文中描述的实施例提供的附加的图形处理器和计算加速器体系结构的框图。图3A-图3C的具有与本文中任何其他附图的元件相同的附图标记(或名称)的那些元件可与本文中其他地方描述的方式类似的任何方式操作或运行,但不限于此。
图3A是图形处理器300的框图,该图形处理器300可以是分立的图形处理单元,或可以是与多个处理核心或其他半导体器件集成的图形处理器,其他半导体器件诸如但不限于存储器设备或网络接口。在一些实施例中,图形处理器经由至图形处理器上的寄存器的存储器映射的I/O接口并且利用被放置到处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是至本地存储器、一个或多个内部缓存、一个或多个共享的外部缓存、和/或至系统存储器的接口。
在一些实施例中,图形处理器300还包括用于将显示输出数据驱动到显示设备318的显示控制器302。显示控制器302包括用于显示器的一个或多个叠加平面以及多层的视频或用户界面元素的合成的硬件。显示设备318可以是内部或外部显示设备。在一个实施例中,显示设备318是头戴式显示设备,诸如,虚拟现实(VR)显示设备或增强现实(AR)显示设备。在一些实施例中,图形处理器300包括用于将媒体编码到一种或多种媒体编码格式,从一种或多种媒体编码格式对媒体解码,或在一种或多种媒体编码格式之间对媒体转码的视频编解码器引擎306,这一种或多种媒体编码格式包括但不限于:移动图片专家组(MovingPicture Experts Group,MPEG)格式(诸如,MPEG-2)、高级视频译码(Advanced VideoCoding,AVC)格式(诸如,H.264/MPEG-4AVC、H.265/HEVC、开放媒体联盟(Alliance forOpen Media,AOMedia)VP8、VP9)、以及电影和电视工程师协会(the Society of MotionPicture&Television Engineers,SMPTE)421M/VC-1、和联合图像专家组(JointPhotographic Experts Group,JPEG)格式(诸如,JPEG、以及运动JPEG(Motion JPEG,MJPEG)格式)。
在一些实施例中,图形处理器300包括块图像传输(block imagetransfer,BLIT)引擎304,用于执行二维(2D)栅格化器操作,包括例如,比特边界块传输。然而,在一个实施例中,使用图形处理引擎(graphics processing engine,GPE)310的一个或多个部件执行2D图形操作。在一些实施例中,GPE 310是用于执行图形操作的计算引擎,这些图形操作包括三维(3D)图形操作和媒体操作。
GPE 310包括用于执行3D操作的3D管线312,该3D操作诸如,使用作用于3D基元形状(例如,矩形、三角形等)的处理函数来渲染三维图像和场景。3D管线312包括可编程和固定功能元件,这些可编程和固定功能元件执行元件内的各种任务和/或生成到3D/媒体子系统315的执行线程。虽然3D管线312可用于执行媒体操作,但是GPE 310的实施例还包括媒体管线316,该媒体管线316专门用于执行媒体操作,诸如,视频后处理和图像增强。
在一些实施例中,媒体管线316可包括固定功能或可编程逻辑单元,用于代替、或代表视频编解码器引擎306来执行一个或多个专业的媒体操作,诸如,视频解码加速、视频去隔行、以及视频编码加速。在一些实施例中,媒体管线316附加地包括线程生成单元,用于生成线程以供在3D/媒体子系统315上执行。所生成的线程在3D/媒体子系统315中所包括的一个或多个图形执行单元上执行用于媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括用于执行由3D管线312和媒体管线316生成的线程的逻辑。在一个实施例中,管线将线程执行请求发送到3D/媒体子系统315,该3D/媒体子系统315包括用于对于对可用的线程执行资源的各种请求进行仲裁和调遣的线程调遣逻辑。执行资源包括用于处理3D线程和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部缓存。在一些实施例中,子系统还包括用于在线程之间共享数据并用于存储输出数据的共享存储器,其包括寄存器和可寻址存储器。
图3B图示根据本文中描述的实施例的具有分片体系结构的图形处理器320。在一个实施例中,图形处理器320包括图形处理引擎集群322,该图形处理引擎集群322在图形引擎片310A-310D内具有图3A的图形处理器引擎310的多个实例。每个图形引擎片310A-310D可经由片互连的集合323A-323F被互连。每个图形引擎片310A-310D还可经由存储器互连325A-325D被连接到存储器模块或存储器设备326A-326D。存储器设备326A-326D可使用任何图形存储器技术。例如,存储器设备326A-326D可以是图形双倍数据速率(graphicsdouble data rate,GDDR)存储器。在一个实施例中,存储器设备326A-326D可以是高带宽存储器(high-bandwidth memory,HBM)模块,这些高带宽存储器模块可与其相应的图形引擎片310A-310D一起在管芯上。在一个实施例中,存储器设备326A-326D是可被堆叠在其相应的图形引擎片310A-310D的顶部上的堆叠式存储器设备。在一个实施例中,每个图形引擎片310A-310D和相关联的存储器326A-326D驻留在分开的小芯片上,这些分开的小芯片被接合到基础管芯或基础衬底,如在图11B-图11D中进一步详细地所描述。
图形处理器320可配置有非统一存储器存取(non-uniform memory access,NUMA)系统,在该NUMA系统中,存储器设备326A-326D与相关联的图形引擎片310A-310D耦合。给定的存储器设备可由与该存储器设备直接连接到的图形引擎片不同的片访问。然而,当存取本地片时,对存储器设备326A-326D的存取等待时间可以最低。在一个实施例中,启用缓存一致的NUMA(cache coherent NUMA,ccNUMA)系统,该ccNUMA系统使用片互连323A-323F来启用图形引擎片310A-310D内的缓存控制器之间的通信,以便当多于一个缓存存储相同的存储器位置时保持一致的存储器镜像。
图形处理引擎集群322可与片上或封装上结构互连324连接。在一个实施例中,结构互连324包括网络处理器、片上网络(network on a chip,NoC)、或用于使结构互连324能充当在图形处理器320的部件之间交换数据分组的分组交换型结构互连的另一交换处理器。结构互连324可启用图形引擎片310A-310D与诸如视频编解码器306和一个或多个副本引擎304之类的部件之间的通信。副本引擎304可用于将数据移出存储器设备326A-326D和在图形处理器320外部的存储器(例如,系统存储器),将数据移入存储器设备326A-326D和在图形处理器320外部的存储器(例如,系统存储器),并且在存储器设备326A-326D与在图形处理器320外部的存储器(例如,系统存储器)之间移动数据。结构互连324还可与片互连323A-323F中的一个或多个耦合,以促进或增强图形引擎片310A-310D之间的互连。结构互连324还可配置为互连图形处理器320的多个实例(例如,经由主机接口328),从而实现多个GPU的图形引擎片310A-310D之间的片对片通信。在一个实施例中,多个GPU的图形引擎片310A-310D可以作为单个逻辑设备被呈现给主机系统。
图形处理器320可任选地包括显示控制器302,以启用与显示设备318的连接。图形处理器还可被配置为图形加速器或计算加速器。在加速器配置中,显示控制器302和显示设备318可被省略。
图形处理器320可经由主机接口328连接到主机系统。主机接口328可启用图形处理器320、系统存储器和/或其他系统部件之间的通信。主机接口328可以是例如PCI快速总线或另一类型的主机系统接口。例如,主机接口328可以是NVLink或NVSwitch接口。主机接口328和结构互连324可以协作以使图形处理器320的多个实例能充当单个逻辑设备。主机接口328和结构互连324之间的协作还可使各个图形引擎片310A-310D能够作为不同的逻辑图形设备向主机系统呈现。
图3C图示根据本文中描述的实施例的计算加速器330。计算加速器330可包括与图3B的图形处理器320的体系结构类似性,并且针对计算加速进行优化。计算引擎集群332可包括计算引擎片的集合340A-340D,计算引擎片的集合340A-340D包括针对并行或基于向量的通用计算操作优化的执行逻辑。在一些实施例中,计算引擎片340A-340D不包括固定功能图形处理逻辑,但是在一个实施例中,计算引擎片340A-340D中的一个或多个可包括用于执行媒体加速的逻辑。计算引擎片340A-340D可经由存储器互连325A-325D连接到存储器326A-326D。存储器326A-326D和存储器互连325A-325D可以是与在图形处理器320中类似的技术,或者可以是不同的技术。图形计算引擎片340A-340D还可经由片互连的集合323A-323F被互连,并且可与结构互连324连接和/或通过结构互连324被互连。可以经由结构互连324促进跨片通信。结构互连324(例如,经由主机接口328)也可以促进计算加速器330的多个实例的计算引擎片340A-340D之间的通信。在一个实施例中,计算加速器330包括可被配置为设备范围的缓存的大型L3缓存336。计算加速器330还能以与图3B的图形处理器320类似的方式经由主机接口328连接到主机处理器和存储器。
计算加速器330还可包括集成网络接口342。在一个实施例中,网络接口342包括网络处理器和控制器逻辑,该控制器逻辑使计算引擎集群332能够在无需数据跨越主机系统的存储器的情况下通过物理层互连344进行通信。在一个实施例中,计算引擎片340A-340D中的一个由网络处理器逻辑替代,并且要经由物理层互连344传送或接收的数据可直接向存储器326A-326D或从存储器326A-326D传送。计算加速器330的多个实例可经由物理层互连344被结合到单个逻辑设备中。替代地,各计算引擎片340A-340D可被呈现为不同的网络可访问计算加速器设备。
图形处理引擎
图4是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(graphics processing engine,GPE)410是图3A中示出的GPE 310的某个版本,并且还可表示图3B的图形引擎片310A-310D。图4的具有与本文中任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。例如,也图示图3A的3D管线312和媒体管线316。媒体管线316在GPE410的一些实施例中是任选的,并且可以不显式地被包括在GPE 410内。例如并且在至少一个实施例中,单独的媒体和/或图像处理器被耦合至GPE 410。
在一些实施例中,GPE 410与命令流转化器403耦合或包括命令流转化器403,该命令流转化器403将命令流提供给3D管线312和/或媒体管线316。替代地或附加地,命令流转化器403可直接耦合至统一返回缓冲器418。统一返回缓冲器418可通信地耦合至图形核心阵列414。在一些实施例中,命令流转化器403与存储器耦合,该存储器可以是系统存储器、或内部缓存存储器和共享缓存存储器中的一个或多个。在一些实施例中,命令流转化器403从存储器接收命令,并且将这些命令发送至3D管线312和/或媒体管线316。这些命令是从环形缓冲器取得的指示,该环形缓冲器存储用于3D管线312和媒体管线316的命令。在一些实施例中,环形缓冲器可附加地包括存储批量的多个命令的批量命令缓冲器。用于3D管线312的命令还可包括对存储在存储器中的数据的引用,这些数据诸如但不限于用于3D管线312的顶点数据和几何数据和/或用于媒体管线316的图像数据和存储器对象。3D管线312和媒体管线316通过经由相应的管线内的逻辑执行操作或者通过将一个或多个执行线程调遣至图形核心阵列414来处理命令和数据。在一些实施例中,图形核心阵列414包括一个或多个图形核心(例如,(一个或多个)图形核心415A、(一个或多个)图形核心415B)的块,每个块包括一个或多个图形核心。每个图形核心包括图形执行资源的集合,该图形执行资源的集合包括:用于执行图形操作和计算操作的通用和图形专用执行逻辑;以及固定功能纹理处理逻辑和/或机器学习和人工智能加速逻辑。
在各实施例中,3D管线312可包括用于通过处理指令并将执行线程调遣给图形核心阵列414来处理一个或多个着色器程序的固定功能和可编程逻辑,这一个或多个着色器程序诸如,顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器、或其他着色器和/或GPGPU程序。图形核心阵列414提供统一的执行资源块,以供在处理这些着色器程序时使用。图形核心阵列414的(一个或多个)图形核心415A-415B内的多功能执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可执行与多个着色器相关联的多个同步执行线程。
在一些实施例中,图形核心阵列414包括用于执行诸如视频和/或图像处理之类的媒体功能的执行逻辑。在一个实施例中,除了图形处理操作之外,执行单元还包括可编程以执行并行的通用计算操作的通用逻辑。通用逻辑可并行地或结合图1的(一个或多个)处理器核心107或图2A中的核心202A-202N内的通用逻辑来执行处理操作。
由在图形核心阵列414上执行的线程生成的输出数据可以将数据输出到统一返回缓冲器(unified return buffer,URB)418中的存储器。URB 418可存储用于多个线程的数据。在一些实施例中,URB 418可用于在图形核心阵列414上执行的不同线程之间发送数据。在一些实施例中,URB 418可附加地用于在图形核心阵列414上的线程与共享功能逻辑420内的固定功能逻辑之间的同步。
在一些实施例中,图形核心阵列414是可缩放的,使得阵列包括可变数量的图形核心,每个图形核心都具有基于GPE 410的目标功率和性能等级的可变数量的执行单元。在一些实施例中,执行资源是动态地可缩放的,使得执行资源可根据需要被启用或禁用。
图形核心阵列414与共享功能逻辑420耦合,该共享功能逻辑420包括在图形核心阵列中的图形核心之间被共享的多个资源。共享功能逻辑420内的共享功能是将专业的补充功能提供给图形核心阵列414的硬件逻辑单元。在各实施例中,共享功能逻辑420包括但不限于采样器421逻辑、数学422逻辑和线程间通信(inter-thread communication,ITC)423逻辑。此外,一些实施例实现共享功能逻辑420内的一个或多个缓存425。
至少在其中对于给定的专业功能的需求不足以包括在图形核心阵列414中的情况下实现共享功能。相反,那个专业功能的单个实例化被实现为共享功能逻辑420中的独立实体,并且在图形核心阵列414内的执行资源之间被共享。在图形核心阵列414之间被共享并被包括在图形核心阵列414内的确切的功能集因实施例而异。在一些实施例中,共享功能逻辑420内的由图形核心阵列414广泛使用的特定共享功能可被包括在图形核心阵列414内的共享功能逻辑416内。在各个实施例中,图形核心阵列414内的共享功能逻辑416可包括共享功能逻辑420内的一些或所有逻辑。在一个实施例中,共享功能逻辑420内的所有逻辑元件可以在图形核心阵列414的共享功能逻辑416内被复制。在一个实施例中,共享功能逻辑420被排除以有利于图形核心阵列414内的共享功能逻辑416。
执行单元
图5A-图5B图示根据本文中所描述的实施例的线程执行逻辑500,该线程执行逻辑500包括在图形处理器核心中采用的处理元件的阵列。图5A-图5B的具有与本文中任何其他附图的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。图5A-图5B图示线程执行逻辑500的概览,该线程执行逻辑500可表示以图2B的每个子核心221A-221F图示的硬件逻辑。图5A表示通用图形处理器内的执行单元,而图5B表示可在计算加速器内被使用的执行单元。
如在图5A中所图示,在一些实施例中,线程执行逻辑500包括着色器处理器502、线程调遣器504、指令缓存506、包括多个图形执行单元508A-508N的可缩放执行单元阵列、采样器510、共享本地存储器511、数据缓存512、以及数据端口514。在一个实施例中,可缩放执行单元阵列可通过基于工作负载的计算要求启用或禁用一个或多个执行单元(例如,执行单元508A、508B、508C、508D,一直到508N-1和508N中的任一个)来动态地缩放。在一个实施例中,所包括的部件经由互连结构被互连,该互连结构链接到部件中的每个部件。在一些实施例中,线程执行逻辑500包括通过指令缓存506、数据端口514、采样器510、以及图形执行单元508A-508N中的一个或多个而到存储器(诸如,系统存储器或缓存存储器)的一个或多个连接。在一些实施例中,每个执行单元(例如,508A)是能够执行多个同步硬件线程同时针对每个线程并行地处理多个数据元素的独立式可编程通用计算单元。在各实施例中,图形执行单元508A-508N的阵列是可缩放的以包括任何数量的单独执行单元。
在一些实施例中,执行单元508A-508N主要用于执行着色器程序。着色器处理器502可处理各种着色器程序,并且可经由线程调遣器504调遣与着色器程序相关联的执行线程。在一个实施例中,线程调遣器包括用于对来自图形管线和媒体管线的线程发起请求进行仲裁并在图形执行单元508A-508N中的一个或多个图形执行单元上实例化所请求的线程的逻辑。例如,几何管线可将顶点着色器、曲面细分着色器或几何着色器调遣给线程执行逻辑以用于处理。在一些实施例中,线程调遣器504也可处理来自执行着色器程序的运行时线程生成请求。
在一些实施例中,图形执行单元508A-508N支持包括对许多标准3D图形着色器指令的原生支持的指令集,使得以最小的转换执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。这些执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。执行单元508A-508N中的每个执行单元都能够进行多发出单指令多数据(singleinstructionmultiple data,SIMD)执行,并且多线程操作在面对较高等待时间的存储器访问时启用高效的执行环境。每个执行单元内的每个硬件线程都具有专用的高带宽寄存器堆和相关联的独立线程状态。对于能够进行整数操作、单精度浮点操作和双精度浮点操作、能够具有SIMD分支能力、能够进行逻辑操作、能够进行超越操作和能够进行其他混杂操作的管线,执行是针对每个时钟多发出的。在等待来自存储器或共享功能中的一个共享功能的数据时,图形执行单元508A-508N内的依赖性逻辑使等待的线程休眠,直到所请求的数据已返回。当等待的线程正在休眠时,硬件资源可致力于处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可执行针对像素着色器、片段着色器或包括不同顶点着色器的另一类型的着色器程序的操作。各实施例可应用以使用利用单指令多线程(Single InstructionMultiple Thread,SIMT)的执行,作为对SIMD的使用的替代,或作为对SIMD的使用的附加。对SIMD核心或操作的引用也可应用于SIMT,或应用于SIMD与SIMT的组合。
图形执行单元508A-508N中的每个执行单元对数据元素的数组进行操作。数据元素的数量是“执行大小”、或用于指令的通道的数量。执行通道是用于指令内的数据元素访问、掩蔽、和流控制的执行的逻辑单元。通道的数量可独立于用于特定图形处理器的物理算术逻辑单元(Arithmetic Logic Unit,ALU)、浮点单元(Floating-Point Unit,FPU)、或其他逻辑单元(例如,张量核心、光线追踪核心等)的数量。在一些实施例中,图形执行单元508A-508N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可以作为紧缩数据类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各个元素。例如,当对256比特宽的向量进行操作时,向量的256比特被存储在寄存器中,并且执行单元将向量操作为四个单独的64比特紧缩数据元素(四字(Quad-Word,QW)大小数据元素)、八个单独的32比特紧缩数据元素(双字(Double Word,DW)大小数据元素)、十六个单独的16比特紧缩数据元素(字(Word,W)大小数据元素)、或三十二个单独的8比特数据元素(字节(byte,B)大小数据元素)。然而,不同的向量宽度和寄存器大小是可能的。
在一个实施例中,可将一个或多个执行单元组合到融合执行单元509A-509N中,该融合执行单元509A-509N具有对于融合EU而言共同的线程控制逻辑(507A-507N)。可以将多个EU融合到EU组中。融合的EU组中的每个EU可以配置成用于执行单独的SIMD硬件线程。融合的EU组中的EU的数量可以根据实施例而有所不同。此外,可以逐EU地执行各种SIMD宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个融合图形执行单元509A-509N包括至少两个执行单元。例如,融合执行单元509A包括第一EU 508A、第二EU 508B、以及对于第一EU 508A和第二EU 508B而言共同的线程控制逻辑507A。线程控制逻辑507A控制在融合图形执行单元509A上执行的线程,从而允许融合执行单元509A-509N内的每个EU使用共同的指令指针寄存器来执行。
一个或多个内部指令缓存(例如,506)被包括在线程执行逻辑500中,以对用于执行单元的线程指令进行缓存。在一些实施例中,一个或多个数据缓存(例如,512)可被包括,以便在线程执行期间对线程数据进行缓存。在执行逻辑500上执行的线程还可将被显式地管理的数据存储在共享本地存储器511中。在一些实施例中,采样器510被包括,以便为3D操作提供纹理采样,并为媒体操作提供媒体采样。在一些实施例中,采样器510包括专业的纹理或媒体采样功能,以便在将所采样的数据提供给执行单元之前在采样过程期间处理纹理数据或媒体数据。
在执行期间,图形管线和媒体管线经由线程生成和调遣逻辑将线程发起请求发送到线程执行逻辑500。一旦几何对象的组已经被处理并被栅格化为像素数据,着色器处理器502内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)就被调用以进一步计算输出信息,并且使得结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模版印刷缓冲器等)。在一些实施例中,像素着色器或片段着色器计算各顶点属性的值,各顶点属性的值将跨经栅格化的对象而被内插。在一些实施例中,着色器处理器502内的像素处理器逻辑随后执行应用编程接口(API)供应的像素着色器程序或片段着色器程序。为了执行着色器程序,着色器处理器502经由线程调遣器504将线程调遣给执行单元(例如,508A)。在一些实施例中,着色器处理器502可使用采样器510中的纹理采样逻辑来访问存储在存储器中的纹理映射中的纹理数据。对纹理数据和输入几何数据的算术操作计算针对每个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一些实施例中,数据端口514提供存储器访问机制,以供线程执行逻辑500将经处理的数据输出至存储器以便在图形处理器输出管线上进一步处理。在一些实施例中,数据端口514包括或耦合至一个或多个缓存存储器(例如,数据缓存512),以便对数据进行缓存,以用于经由数据端口514进行存储器访问。
在一个实施例中,执行逻辑500还可包括可提供光线追踪加速功能的光线追踪器505。光线追踪器505可支持光线追踪指令集,该光线追踪指令集包括用于光线生成的指令/函数。光线追踪指令集可与由图2C中的光线追踪核心245支持的光线追踪指令集类似或不同。
图5B图示根据实施例的执行单元508的示例性内部细节。图形执行单元508可包括指令取得单元537、通用寄存器堆阵列(general register file array,GRF)524、体系结构寄存器堆阵列(architectural register file array,ARF)526、线程仲裁器522、发送单元530、分支单元532、SIMD浮点单元(floating point unit,FPU)的集合534,并在一个实施例中包括专用整数SIMD ALU的集合535。GRF 524和ARF 526包括与可在图形执行单元508中活跃的每个同步硬件线程相关联的通用寄存器堆和体系结构寄存器堆的集合。在一个实施例中,每线程体系结构状态被维持在ARF 526中,而在线程执行期间使用的数据被存储在GRF524中。每个线程的执行状态,包括用于每个线程的指令指针,可以被保存在ARF 526中的线程专用寄存器中。
在一个实施例中,图形执行单元508具有作为同步多线程(Simultaneous Multi-Threading,SMT)与细粒度交织多线程(Interleaved Multi-Threading,IMT)的组合的体系结构。该体系结构具有模块化配置,该模块化配置可以在设计时基于同步线程的目标数量和每个执行单元的寄存器的数量进行微调,其中跨用于执行多个同步线程的逻辑来划分执行单元资源。可由图形执行单元508执行的逻辑线程的数量不限于硬件线程的数量,并且可将多个逻辑线程指派给每个硬件线程。
在一个实施例中,图形执行单元508可协同发出多条指令,这些指令可以各自是不同的指令。图形执行单元线程508的线程仲裁器522可以将指令调遣给以下各项中的一项以供执行:发送单元530、分支单元532或(一个或多个)SIMD FPU 534。每个执行线程可访问GRF 524内的128个通用寄存器,其中,每个寄存器可存储可作为具有32比特数据元素的SIMD 8元素向量访问的32个字节。在一个实施例中,每个执行单元线程具有对GRF 524内的4个千字节的访问权,但是实施例不限于此,并且在其他实施例中可以提供更多或更少的寄存器资源。在一个实施例中,图形执行单元508被分区为能够独立地执行计算操作的七个硬件线程,但是每个执行单元的线程的数量还可根据实施例而有所不同。例如,在一个实施例中,支持最多16个硬件线程。在其中七个线程可访问4个千字节的实施例中,GRF 524可以存储总共28个千字节。在16个线程可访问4个千字节的情况下,GRF 524可存储总共64个千字节。灵活的寻址模式可准许对寄存器一起进行寻址,从而建立实际上更宽的寄存器或者表示跨步式矩形块数据结构。
在一个实施例中,经由通过消息传递发送单元530执行的“发送”指令来调遣存储器操作、采样器操作以及其他较长等待时间的系统通信。在一个实施例中,分支指令可被调遣给专用分支单元532,以促进SIMD分散和最终的汇聚。
在一个实施例中,图形执行单元508包括用于执行浮点操作的一个或多个SIMD浮点单元(floating point unit,FPU)534。在一个实施例中,(一个或多个)FPU 534还支持整数计算。在一个实施例中,(一个或多个)FPU 534可以SIMD执行最多数量M个32比特浮点(或整数)操作,或者SIMD执行最多2M个16比特整数或16比特浮点操作。在一个实施例中,(一个或多个)FPU中的至少一个提供支持高吞吐量超越数学函数和双精度64比特浮点的扩展数学能力。在一些实施例中,8比特整数SIMD ALU的集合535也存在,并且可专门优化成用于执行与机器学习计算相关联的操作。
在一个实施例中,可以在图形子核心分组(例如,子切片)中对图形执行单元508的多个实例的阵列进行实例化。为了可缩放性,产品体系结构师可以选择每子核心分组的执行单元的确切数量。在一个实施例中执行单元508可跨多个执行通道执行指令。在进一步的实施例中,在图形执行单元508上执行的每个线程可在不同的通道上执行。
图6图示根据实施例的附加执行单元600。执行单元600可以是用于在例如图3C中的计算引擎片340A-340D中使用的计算优化的执行单元,但不限于此。执行单元600的变体也可在图3B中的图形引擎片310A-310D中使用。在一个实施例中,执行单元600包括线程控制单元601、线程状态单元602、指令取得/预取单元603、以及指令解码单元604。执行单元600附加地包括寄存器堆606,该寄存器堆606存储可被指派给执行单元内的硬件线程的寄存器。执行单元600附加地包括发送单元607和分支单元608。在一个实施例中,发送单元607和分支单元608能以与图5B的图形执行单元508的发送单元530和分支单元532类似的方式操作。
执行单元600还包括计算单元610,该计算单元610包括多个不同类型的功能单元。计算单元610可包括ALU 611、脉动阵列612和数学单元613。ALU 611包括算术逻辑单元的阵列。ALU 611可被配置成用于跨多个处理通路和数据通道并且针对多个硬件和/或软件线程执行64比特、32比特和16比特整数操作和浮点操作。ALU 611可同时(例如,在同一时钟周期内)执行整数操作和浮点操作。
脉动阵列612包括数据处理单元的宽W且深D的网络,其可用于以脉动方式执行向量或其他数据并行操作。在一个实施例中,脉动阵列612可被配置成用于执行各种矩阵操作,包括点积操作、外积操作、以及一般矩阵-矩阵乘法(general matrix-matrixmultiplication,GEMM)操作。在一个实施例中,脉动阵列612支持16比特浮点操作以及8比特、4比特、2比特和二进制的整数操作。除了矩阵乘法操作,脉动阵列612可被配置成用于加速特定机器学习操作。在此类实施例中,脉动阵列612可配置有对于相对于电气和电子工程师学会(Institute of Electrical and Electronics Engineers,IEEE)754格式具有不同数量的尾数比特和指数比特的bfloat16、(brain浮点)16比特浮点格式、或张量浮点32比特浮点格式(TF32)的支持。
脉动阵列612包括用于加速稀疏矩阵操作的硬件。在一个实施例中,用于输入数据的稀疏区域的乘法操作可以在处理元件级别通过跳过具有零值操作对象的乘法操作而被绕过。在一个实施例中,输入矩阵内的稀疏度可以被检测,并且具有已知输出值的操作在被提交给脉动阵列612的处理元件之前可以被绕过。此外,将零值操作对象加载到处理元件中可以被绕过,并且处理元件可配置为对非零值输入元素执行乘法。可以利用相关联的解压缩或解码元数据来按压缩(例如,密集)格式生成输出。可以按压缩格式来缓存输出。当被写入本地存储器或主机系统存储器时,可以按压缩格式来保持输出。输出也可在被写入本地存储器或主机系统存储器之前被解压缩。
在一个实施例中,脉动阵列612包括用于启用对具有压缩表示的稀疏数据的操作的硬件。稀疏矩阵的压缩表示存储非零值和元数据,该元数据定义矩阵内的非零值的位置。示例性压缩表示包括但不限于压缩张量表示,诸如,压缩稀疏行(compressed sparse row,CSR)表示、压缩稀疏列(compressed sparse column,CSC)表示、和压缩稀疏纤维(compressed sparse fiber,CSF)表示。对压缩表示的支持使得操作能够对按压缩张量格式的输入执行而无需压缩表示被解压缩或解码。在此类实施例中,可仅对非零输入值执行操作,并且所得到的非零输出值可被映射到输出矩阵中。在一些实施例中,还提供对机器专用无损数据压缩格式的硬件支持,这些机器专用无损数据压缩格式当在硬件内传送数据或跨系统总线传送数据时被使用。此类数据可按用于稀疏输入数据的压缩格式被保留,并且脉动阵列612可使用用于经压缩数据的压缩元数据,以使得操作能够对仅非零值执行或使得对于乘法操作能够绕过零数据输入的块。
数学单元613可被配置成用于以高效的且比ALU611更低功率的方式执行数学操作的特定子集。数学单元613可包括可在由所描述的其他实施例提供的图形处理引擎的共享功能逻辑中发现的数学逻辑,例如,图4的共享功能逻辑422的数学逻辑420。数学单元613可被配置成用于执行32比特和64比特浮点操作。
线程控制单元601包括用于控制执行单元内的线程的执行的逻辑。线程控制单元601可包括线程仲裁逻辑,该线程仲裁逻辑用于启动、停止以及抢占执行单元600内线程的执行。线程状态单元602可用于存储用于被指派以在执行单元600上执行的线程的线程状态。将线程状态存储在执行单元600内使得能够在线程变得被阻止或空闲时快速抢占那些线程。指令取得/预取单元603可从较高级别执行逻辑的指令缓存(例如,如图5A中的指令缓存506)取得指令。指令取得/预取单元603还可基于对当前执行线程的分析来发出对要被加载到指令缓存中的指令的预取请求。指令解码单元604可用于对要由计算单元执行的指令进行解码。在一个实施例中,指令解码单元604可被用作次级解码器以将复杂指令解码为组成的微操作。
执行单元600附加地包括寄存器堆606,该寄存器堆606可由在执行单元600上执行的硬件线程使用。寄存器堆606中的寄存器可跨用于执行执行单元600的计算单元610内的多个同步线程的逻辑而被划分。可由图形执行单元600执行的逻辑线程的数量不限于硬件线程的数量,并且可将多个逻辑线程指派给每个硬件线程。基于所支持的硬件线程的数量,寄存器堆606的大小可因实施例而异。在一个实施例中,可使用寄存器重命名来动态地将寄存器分配给硬件线程。
图7是根据一些实施例的图示图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有按照多种格式的指令的指令集。实线框图示通常被包括在执行单元指令中的组成部分,而虚线包括任选的或仅被包括在指令的子集中的组成部分。在一些实施例中,所描述和图示的图形处理器指令格式700是宏指令,因为它们是供应至执行单元的指令,这与产生自一旦指令被处理就进行的指令解码的微操作相反。因此,单个指令可使硬件执行多个微操作。
在一些实施例中,图形处理器执行单元以原生地支持128比特指令格式710的指令。基于所选择的指令、指令选项和操作对象数量,64比特紧凑指令格式730可用于一些指令。原生的128比特指令格式710提供对所有指令选项的访问,而一些选项和操作在64比特格式730中受限。64比特格式730中可用的原生指令因实施例而异。在一些实施例中,使用索引字段713中的索引值的集合将指令部分地压缩。执行单元硬件基于索引值来引用压缩表的集合,并使用压缩表输出来重构128比特指令格式710的原生指令。可以使用其他大小和格式的指令。
针对每种格式,指令操作码712限定执行单元要执行的操作。执行单元跨每个操作对象的多个数据元素并行地执行每条指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道执行同步加法操作。默认地,执行单元跨操作对象的所有数据通道执行每条指令。在一些实施例中,指令控制字段714启用对某些执行选项(诸如,通道选择(例如,谓词(predication))和数据通道顺序(例如,拌和(swizzle)))的控制。针对128比特指令格式710的指令,执行大小字段716限制将被并行地执行的数据通道的数量。在一些实施例中,执行大小字段716不可用于64比特紧凑指令格式730。
一些执行单元指令具有最多三个操作对象,包括两个源操作对象src0 720、src1722以及一个目的地对象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共享五个最高有效的比特(most significant bit,MSB),其中,移动(mov)指令采用0000xxxxb的形式,而逻辑指令采用0001xxxxb的形式。流控制指令组744(例如,调用(call)、跳转(jmp))包括0010xxxxb(例如,0x20)形式的指令。混杂指令组746包括指令的混合,包括0011xxxxb(例如,0x30)形式的同步指令(例如,等待(wait)、发送(send))。并行数学指令组748包括0100xxxxb(例如,0x40)形式的逐分量的算术指令(例如,加、乘(mul))。并行数学指令组748跨数据通道并行地执行算术操作。向量数学组750包括0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。向量数学组对向量操作对象执行算术,诸如,点积计算。在一个实施例中,所图示的操作码解码740可用于确定执行单元的哪个部分将用于执行经解码的指令。例如,一些指令可被指定为将由脉动阵列执行的脉动指令。其他指令(诸如,光线追踪指令(未示出))可被路由至执行逻辑的切片或分区内的光线追踪核心或光线追踪逻辑。
图形管线
图8是图形处理器800的另一实施例的框图。图8的具有与本文中任何其他附图的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。
在一些实施例中,图形处理器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。缓存可以被配置为数据缓存、指令缓存、或被分区为在不同分区中包含数据和指令的单个缓存。
在一些实施例中,几何管线820包括用于执行3D对象的硬件加速曲面细分的曲面细分部件。在一些实施例中,可编程壳体着色器811配置曲面细分操作。可编程域着色器817提供对曲面细分输出的后端评估。曲面细分器813在外壳着色器811的指示下进行操作,并且包含用于基于粗糙的几何模型来生成详细的几何对象集合的专用逻辑,该粗糙的几何模型作为输入被提供给几何管线820。在一些实施例中,如果不使用曲面细分,则可以绕过曲面细分部件(例如,外壳着色器811、曲面细分器813和域着色器817)。曲面细分部件可基于从顶点着色器807接收的数据进行操作。
在一些实施例中,完整的几何对象可由几何着色器819经由被调遣给执行单元852A-852B的一个或多个线程来处理,或者可以直接行进至裁剪器829。在一些实施例中,几何着色器对整个几何对象操作,而不是像在图形管线的先前的阶段中那样对顶点或顶点的补片进行操作。如果禁用曲面细分,则几何着色器819从顶点着色器807接收输入。在一些实施例中,几何着色器819是可由几何着色器程序编程的,以便在禁用曲面细分单元的情况下执行几何曲面细分。
在栅格化之前,裁剪器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被配置成用于基于多个图形和媒体编程接口来执行操作,并且不专用于任何一个应用编程接口(application programminginterface,API)。在一些实施例中,用于图形处理器的驱动器软件将专用于特定图形或媒体库的API调用转换为可由图形处理器处理的命令。在一些实施例中,为全部来自KhronosGroup的开放图形库(Open Graphics Library,OpenGL)、开放计算语言(Open ComputingLanguage,OpenCL)和/或Vulkan图形和计算API提供支持。在一些实施例中,也可以为来自微软公司的Direct3D库提供支持。在一些实施例中,可支持这些库的组合。还可以为开源计算机视觉库(Open Source Computer Vision Library,OpenCV)提供支持。如果可进行从未来API的管线到图形处理器的管线的映射,则具有兼容3D管线的未来API也将受到支持。
图形管线编程
图9A是图示根据一些实施例的可用于对图形处理管线编程的图形处理命令格式900的框图。图9B是图示根据实施例的图形处理器命令序列910的框图。图9A中的实线框图示一般被包括在图形命令中的组成部分,而虚线包括任选的或仅被包括在图形命令的子集中的组成部分。图9A的示例性图形处理器命令格式900包括用于标识命令的客户端902、命令操作代码(操作码)904和数据字段906的数据字段。子操作码905和命令大小908也被包括在一些命令中。
在一些实施例中,客户端902指定图形设备的处理命令数据的客户端单元。在一些实施例中,图形处理器命令解析器检查每一个命令的客户端字段以调整对命令的进一步的处理,并且将命令数据路由至适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、和媒体单元。每个客户端单元具有处理命令的对应的处理管线。一旦由客户端单元接收到命令,客户端单元就读取操作码904以及子操作码905(如果存在)以确定要执行的操作。客户端单元使用数据字段906中的信息来执行命令。针对一些命令,预期显式的命令大小908指定命令的大小。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的大小。在一些实施例中,命令经由双字的倍数被对齐。可使用其他命令格式。
图9B中的流程图示示例性图形处理器命令序列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 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管线922类似的方式来配置媒体管线924。将用于配置媒体管线状态940的命令的集合调遣或放置到命令队列中,在媒体对象命令942之前。在一些实施例中,用于媒体管线状态940的命令包括用于配置将被用于处理媒体对象的媒体管线元件的数据。这包括用于在媒体管线内配置视频解码和视频编码逻辑的数据,诸如编码或解码格式。在一些实施例中,用于媒体管线状态940的命令还支持使用指向包含批量的状态设置的“间接”状态元素的一个或多个指针。
在一些实施例中,媒体对象命令942供应指向用于由媒体管线处理的媒体对象的指针。媒体对象包括存储器缓冲器,该存储器缓冲器包含要处理的视频数据。在一些实施例中,在发出媒体对象命令942之前,所有的媒体管线状态必须是有效的。一旦管线状态被配置并且媒体对象命令942被排队,就经由执行命令944或等效的执行事件(例如,寄存器写入)来触发媒体管线924。随后可通过由3D管线922或媒体管线924提供的操作对来自媒体管线924的输出进行后处理。在一些实施例中,以与媒体操作类似的方式配置和执行GPGPU操作。
图形软件体系结构
图10图示根据一些实施例的用于数据处理系统1000的示例性图形软件体系结构。在一些实施例中,软件体系结构包括3D图形应用1010、操作系统1020以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032以及一个或多个通用处理器核心1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,这一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用高级着色器语言,诸如,Direct3D的高级着色器语言(High-Level Shader Language,HLSL)、OpenGL着色器语言(OpenGLShader Language,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以中间形式提供,该中间形式诸如,由VulkanAPI使用的标准便携式中间表示(Standard Portable Intermediate Representation,SPIR)的某个版本。
在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027以将着色器指令1012编译为硬件专用表示。当OpenGL API在使用中时,将采用GLSL高级语言的着色器指令1012传递至用户模式图形驱动器1026以用于编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式功能1028来与内核模式图形驱动器1029通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032通信以调遣命令和指令。
IP核心实现方式
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性代码实现,该机器可读介质表示和/或限定集成电路(诸如,处理器)内的逻辑。例如,机器可读介质可包括表示处理器内的各种逻辑的指令。当由机器读取时,指令可使机器制造用于执行本文所描述的技术的逻辑。此类表示(被称为“IP核心”)是集成电路的逻辑的可重复使用单元,这些可重复使用单元可以作为描述集成电路的结构的硬件模型而被存储在有形的、机器可读介质上。可以将硬件模型供应至在制造集成电路的制造机器上加载硬件模型的各客户或制造设施。可以制造集成电路,使得电路执行与本文中描述的实施例中的任一实施例相关联地描述的操作。
图11A是图示根据实施例的可用于制造集成电路以执行操作的IP核心开发系统1100的框图。IP核心开发系统1100可以用于生成可并入到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用的设计。设计设施1130可生成采用高级编程语言(例如,C/C++)的IP核心设计的软件仿真1110。软件仿真1110可用于使用仿真模型1112来设计、测试并验证IP核心的行为。仿真模型1112可包括功能仿真、行为仿真和/或时序仿真。随后可从仿真模型1112创建或合成寄存器传输级(register transfer level,RTL)设计1115。RTL设计1115是对硬件寄存器之间的数字信号的流进行建模的集成电路(包括使用建模的数字信号来执行的相关联的逻辑)的行为的抽象。除了RTL设计1115之外,还可创建、设计或合成逻辑级或晶体管级的较低级别设计。由此,初始设计和仿真的特定细节可有所不同。
可由设计设施进一步将RTL设计1115或等效方案合成到硬件模型1120中,该硬件模型1120可以采用硬件描述语言(hardware description language,HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP核心设计。可使用非易失性存储器1140(例如,硬盘、闪存、或任何非易失性存储介质)来存储IP核心设计以用于递送至第三方制造设施1165。替代地,可通过有线连接1150或无线连接1160(例如,经由互联网)来传送IP核心设计。制造设施1165随后可制造至少部分地基于IP核心设计的集成电路。所制造的集成电路可被配置成用于执行根据本文中描述的至少一个实施例的操作。
图11B图示根据本文中所描述的一些实施例的集成电路封装组件1170的横截面侧视图。集成电路封装组件1170图示如本文中所描述的一个或多个处理器或加速器设备的实现方式。封装组件1170包括连接至衬底1180的多个硬件逻辑单元1172、1174。逻辑1172、1174可至少部分地实现在可配置逻辑或固定功能逻辑硬件中,并且可包括本文中描述的(一个或多个)处理器核心、(一个或多个)图形处理器或其他加速器设备中的任一者的一个或多个部分。每个逻辑单元1172、1174可实现在半导体管芯内,并且经由互连组织1173与衬底1180耦合。互连组织1173可被配置成用于在逻辑1172、1174与衬底1180之间路由电信号,并且可包括互连,该互连诸如但不限于凸块或支柱。在一些实施例中,互连组织1173可被配置成路由电信号,诸如例如,与逻辑1172、1174的操作相关联的输入/输出(I/O)信号和/或功率或接地信号。在一些实施例中,衬底1180是基于环氧树脂的层压衬底。在其他实施例中,衬底1180还包括其他合适类型的衬底。封装组件1170可经由封装互连1183连接到其他电气设备。封装互连1183可耦合至衬底1180的表面以将电信号路由到其他电气设备,诸如主板、其他芯片组或多芯片模块。
在一些实施例中,逻辑单元1172、1174与桥接器1182电耦合,该桥接器1182被配置成用于在逻辑1172与逻辑1174之间路由电信号。桥接器1182可以是为电信号提供路由的密集互连组织。桥接器1182可包括由玻璃或合适的半导体材料构成的桥接器衬底。电路由特征可形成在桥接器衬底上,以提供逻辑1172与逻辑1174之间的芯片-芯片连接。
尽管图示了两个逻辑单元1172、1174和桥接器1182,但是本文中所描述的实施例可包括在一个或多个管芯上的更多或更少的逻辑单元。这一个或多个管芯可以由零个或更多个桥接器连接,因为当逻辑被包括在单个管芯上时,可以排除桥接器1182。替代地,多个管芯或逻辑单元可以由一个或多个桥接器连接。此外,多个逻辑单元、管芯和桥接器可按其他可能的配置(包括三维配置)被连接在一起。
图11C图示封装组件1190,该封装组件1190包括连接到衬底1180的多个单元的硬件逻辑小芯片。如本文中所描述的图形处理单元、并行处理器和/或计算加速器可由分开制造的各种硅小芯片组成。在该上下文中,小芯片是至少部分地被封装的集成电路,该至少部分地被封装的集成电路包括可与其他小芯片一起被组装到更大的封装中的不同的逻辑单元。具有不同IP核心逻辑的各种集合的小芯片可被组装到单个器件中。此外,小芯片可使用有源中介层(interposer)技术而被集成到基础管芯或基础小芯片中。本文中描述的概念启用GPU内的不同形式的IP之间的互连和通信。IP核心可使用不同的工艺技术来制造并在制造期间被构成,这避免了尤其是对于具有若干风格的IP的大型SoC的将多个IP汇聚到同一制造工艺的复杂性。允许使用多种工艺技术改善了上市时间,并提供具有成本效益的方法来创建多个产品SKU。此外,分解的IP更易修改以被独立地功率门控,对于给定工作负载不在使用中的部件可被关断,从而降低总功耗。
在各实施例中,封装组件1190可包括由结构1185或一个或多个桥接器1187互连的部件和小芯片。封装组件1190内的小芯片可具有使用芯片-晶片-衬底(Chip-on-Wafer-on-Substrate)堆叠的2.5D布置,其中,多个管芯并排地堆叠在硅中介层1189上,该硅中介层1189将小芯片与衬底1180耦合。该衬底1180包括至封装互连1183的电气连接。在一个实施例中,硅中介层1189是无源中介层,其包括硅通孔(through-silicon via,TSV)以将封装组件1190内的小芯片电气地耦合至衬底1180。在一个实施例中,硅中介层1189是有源中介层,该有源中介层1189除TSV外还包括嵌入式逻辑。在此类实施例中,封装组件1190内的小芯片使用3D面对面管芯堆叠被布置在有源中介层1189的顶部上。有源中介层1189除互连结构1185和硅桥接器1187外还可包括用于I/O 1191的硬件逻辑、缓存存储器1192和其他硬件逻辑1193。结构1185启用各中逻辑小芯片1172、1174与有源中介层1189内的逻辑1191、1193之间的通信。结构1185可以是在封装组件的部件之间交换数据分组的NoC互连或另一形式的分组交换型结构。对于复杂组件,结构1185可以是启用封装组件1190的各硬件逻辑之间的通信的专用小芯片。
有源中介层1189内的桥接器结构1187可用于促进例如逻辑或I/O小芯片1174与存储器小芯片1175之间的点到点互连。在一些实现方式中,桥接器结构1187还可被嵌入在衬底1180内。硬件逻辑小芯片可包括专用硬件逻辑小芯片1172、逻辑或I/O小芯片1174、和/或存储器小芯片1175。硬件逻辑小芯片1172以及逻辑或I/O小芯片1174可以至少部分地实现在可配置逻辑或固定功能逻辑硬件中,并且可包括本文中描述的(一个或多个)处理器核心、(一个或多个)图形处理器、并行处理器或其他加速器设备中的任一个的一个或多个部分。存储器小芯片1175可以是DRAM(例如,GDDR、HBM)存储器或缓存(SRAM)存储器。有源中介层1189(或衬底1180)内的缓存存储器1192可充当用于封装组件1190的全局缓存,充当分布式全局缓存的部分,或充当用于结构1185的专用缓存。
每个小芯片可被制造为单独的半导体管芯,并且可与基础管芯耦合,该基础管芯嵌入在衬底1180内或与衬底1180耦合。与衬底1180的耦合可经由互连组织1173来执行。互连组织1173可被配置成用于在衬底1180内的各种小芯片与逻辑之间路由电信号。互连组织1173可包括互连,诸如但不限于凸块或支柱。在一些实施例中,互连组织1173可被配置成用于路由电信号,诸如例如,与逻辑、I/O和存储器小芯片的操作相关联的输入/输出(I/O)信号和/或功率或接地信号。在一个实施例中,附加的互连组织将有源中介层1189与衬底1180耦合。
在一些实施例中,衬底1180是基于环氧树脂的层压衬底。在其他实施例中,衬底1180还可包括其他合适类型的衬底。封装组件1190可经由封装互连1183连接到其他电气设备。封装互连1183可耦合至衬底1180的表面以将电信号路由到其他电气设备,诸如,主板、其他芯片组或多芯片模块。
在一些实施例中,逻辑或I/O小芯片1174和存储器小芯片1175可经由桥接器1187被电耦合,该桥接器1187被配置成用于在逻辑或I/O小芯片1174与存储器小芯片1175之间路由电信号。桥接器1187可以是为电信号提供路由的密集互连组织。桥接器1187可包括由玻璃或合适的半导体材料构成的桥接器衬底。电路由特征可形成在桥接器衬底上以提供逻辑或I/O小芯片1174与存储器小芯片1175之间的芯片-芯片连接。桥接器1187还可被称为硅桥接器或互连桥接器。例如,在一些实施例中,桥接器1187是嵌入式多管芯互连桥接器(Embedded Multi-die Interconnect Bridge,EMIB)。在一些实施例中,桥接器1187可简单地是从一个小芯片到另一小芯片的直接连接。
图11D图示根据实施例的包括可互换小芯片1195的封装组件1194。可互换小芯片1195可被组装到一个或多个基础小芯片1196、1198上的标准化插槽中。基础小芯片1196、1198可经由桥接器互连1197被耦合,该桥接器互连1197可与本文中描述的其他桥接器互连类似,并且可以是例如EMIB。存储器小芯片也可经由桥接器互连被连接到逻辑或I/O小芯片。I/O和逻辑小芯片可经由互连结构进行通信。基础小芯片各自都能以用于逻辑或I/O或存储器/缓存中的一者的标准化格式来支持一个或多个插槽。
在一个实施例中,SRAM和功率递送电路可被制造到基础小芯片1196、1198中的一个或多个中,基础小芯片1196、1198可使用相对于可互换小芯片1195不同的工艺技术来制造,可互换小芯片1195堆叠在基础小芯片的顶部上。例如,可使用较大工艺技术来制造基础小芯片1196、1198,同时可使用较小工艺技术来制造可互换小芯片。可互换小芯片1195中的一个或多个可以是存储器(例如,DRAM)小芯片。可基于针对使用封装组件1194的产品的功率和/或性能来为封装组件1194选择不同的存储器密度。此外,可在组装时基于针对产品的功率和/或性能来选择具有不同数量的类型的功能单元的逻辑小芯片。此外,可将包含具有不同类型的IP逻辑核心的小芯片插入到可互换小芯片插槽中,从而启用可混合并匹配不同技术的IP块的混合式处理器设计。
示例性片上系统集成电路
图12-图13B图示根据本文中所描述的各个实施例的可使用一个或多个IP核心制造的示例性集成电路和相关联的图形处理器。除了所图示的内容之外,还可包括其他逻辑和电路,包括附加的图形处理器/核心、外围接口控制器或通用处理器核心。
图12是图示根据实施例的可使用一个或多个IP核心来制造的示例性片上系统集成电路1200的框图。示例性集成电路1200包括一个或多个应用处理器1205(例如,CPU)、至少一个图形处理器1210,并且附加地包括图像处理器1215和/或视频处理器1220,图像处理器1215和视频处理器1220中的任一者可以是来自相同的设计设施或多个不同的设计设施的模块化IP核心。集成电路1200包括外围或总线逻辑,包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235和I2S/I2C控制器1240。此外,集成电路可包括显示设备1245,该显示设备1245耦合至高清晰度多媒体接口(high-definition multimedia interface,HDMI)控制器1250和移动行业处理器接口(mobile industry processor interface,MIPI)显示接口1255中的一个或多个。可以由闪存子系统1260(包括闪存和闪存控制器)来提供存储装置。可以经由存储器控制器1265来提供存储器接口以获得对SDRAM或SRAM存储器设备的访问。一些集成电路附加地包括嵌入式安全引擎1270。
图13A-图13B是图示根据本文中所描述的实施例的用于在SoC内使用的示例性图形处理器的框图。图13A图示根据实施例的可以使用一个或多个IP核心来制造的片上系统集成电路的示例性图形处理器1310。图13B图示根据实施例的可以使用一个或多个IP核心来制造的片上系统集成电路的附加的示例图形处理器1340。图13A的图形处理器1310是低功率图形处理器核心的示例。图13B的图形处理器1340是较高性能的图形处理器核心的示例。图形处理器1310和图形处理器1340中的每个图形处理器可以是图12的图形处理器1210的变体。
如图13A中所示,图形处理器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附加地包括一个或多个存储器管理单元(memory managementunit,MMU)1320A-1320B、(一个或多个)缓存1325A-1325B以及(一个或多个)电路互连1330A-1330B。这一个或多个MMU 1320A-1320B为图形处理器1310(包括为顶点处理器1305和/或(一个或多个)片段处理器1315A-1315N)提供虚拟到物理地址映射,除了存储在一个或多个缓存1325A-1325B中的顶点数据或图像/纹理数据之外,该虚拟到物理地址映射还可以引用存储在存储器中的顶点数据或图像/纹理数据。在一个实施例中,一个或多个MMU1320A-1320B可以与系统内的其他MMU同步,使得每个处理器1205-1220可以参与共享或统一的虚拟存储器系统,系统内的其他MMU包括与图12的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU。根据实施例,一个或多个电路互连1330A-1330B使得图形处理器1310能够经由SoC的内部总线或经由直接连接来与SoC内的其他IP核心对接。
如图13B中所示,图形处理器1340包括图13A的图形处理器1310的一个或多个MMU1320A-1320B、缓存1325A-1325B和电路互连1330A-1330B。图形处理器1340包括一个或多个着色器核心1355A-1355N(例如,1355A、1355B、13555C、1355D、1355E、1355F,一直到1355N-1和1355N),其提供统一的着色器核心体系结构,其中,单个核心或单个类型的核心可执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。统一着色器核心体系结构还可被配置成用于执行直接编译的高级GPGPU程序(例如,CUDA)。存在的着色器核心的确切数量可以因实施例和实现方式而异。此外,图形处理器1340包括核心间任务管理器1345,该核心间任务管理器1345充当用于将执行线程调遣给一个或多个着色器核心1355A-1355N的线程调遣器和用于加速对基于片的渲染的分片操作的分片单元1358,在基于片的渲染中,针对场景的渲染操作在图像空间中被细分,例如以利用场景内的局部空间一致性或优化内部缓存的使用。
经由绑定表取回资源状态
图14是图示涉及两个级别的间接引用(indirection)的对存储器的状态请求的框图。在本示例的上下文中,正在由GPU执行的各种内核(例如,内核1 1410a和内核2 1410b)可能涉及使用共享功能来执行各种处理。如上所述,与3D管线(例如,3D管线312或922)相关联的共享功能取回被访问的底层资源的状态信息,以执行其相应的处理。该状态信息(例如,状态1432)可被存储在与GPU相关联的存储器子系统(例如,存储器设备120或存储器249、217、272或326A-D)内。在该示例中,状态信息被示出为在多个状态表(例如,持久表面1430a、瞬时表面1430b和持久采样器1430c)内被组织或以其他方式被分组。还存储在存储器内的是绑定表流1420,绑定表流1420包含绑定表条目(例如,绑定表条目1422),绑定表条目包含到对应的状态信息的地址(指针)(例如,状态偏移(SO)1431)。
因此,在该示例中,对于由内核2 1410b用于获得资源的状态的共享功能,该共享功能解析两个级别的间接引用1415和1425以到达所期望的状态信息。例如,为了获得状态1432,共享功能发出基于存储在GRF[1]1411内的地址(指针)(例如,状态绑定表偏移(SBTO)1421)在绑定表流1420内执行绑定表条目查找的第一存储器访问请求。第二请求是对状态本身的取得请求,该状态由第一次查找的内容来指向。即,在获得绑定表条目1422之后,共享功能随后可以发出两个串行存储器访问请求中的、取回存储在由SO 1431指示的地址处的状态1432的第二请求,该SO 1431被包含在绑定表条目1422内。
虽然在本示例的上下文中,没有描述缓存,但是共享功能(例如,纹理采样器)通常实现至少状态缓存,以避免取得由共享功能接收到的每个消息的状态信息。在典型的状态缓存中,可利用绑定索引(到绑定表流1420的偏移)对状态信息进行标记,并且因此需要两次取得以遵从绑定索引。即使在存在例如专用于缓存绑定索引的次级缓存的情况下,仍然需要两次顺序的访问来确定对状态信息的请求是表示命中还是表示未命中。
资源状态的高效缓存
图15是图示根据一个实施例的用于促进间接引用的高效解析的本地缓存结构1500的框图。本地缓存结构1500可表示芯片上的、可由共享功能访问的本地存储器。例如,在其中共享功能表示纹理采样器(例如,采样器421、510或854)的情况下,本地缓存结构1500可以在纹理缓存858内实现。
在本示例的上下文中,本地缓存结构1500包括直接状态访问表(DSAT)1510、状态缓存(SC)1520、绑定表缓存(BTC)1530和乱序(out of order,OOO)跟踪器1540。所示的DSAT1510包括多个DSAT条目1511a-n。在一个实施例中,DSAT条目1511a-n的数量为32,但该数量是设计选择的事情,并且取决于如何平衡各种权衡,可以更大或更小。DSAT 1510的每个DSAT条目1511a-n包括:状态绑定表偏移(SBTO)1512a-n,其表示指向存储在存储器中的绑定表(例如,绑定表流1420)的绑定表条目(例如,绑定表条目1422)的地址(指针);状态位置标识符(SLIDE)1513a-n,其表示进入SC 1520的索引;(一个或多个)标志1514a-n,其包括有效标志/比特、存在标志/比特和所分配的标志/比特(例如,指示SLID是否已经被指派);以及计数器1515a-n,其表示跟踪与DSAT条目相关的未完成的状态请求的使用中计数器。在一个实施例中,给定的DSAT条目的计数器针对未命中DSAT 1510的每个未完成的状态请求递增,并且在DSAT条目是有效的并且未命中开始被服务之后开始递减。给定的DSAT条目应该保持锁定(不能被驱逐),直到所有未命中都被服务(即,计数器为零)。
所示的SC 1520包括例如与DSAT条目1511a-n的数量相对应的多个SC条目1521a-n。在一个实施例中,SC 1520的每个SC条目包括:状态偏移(SO)1522a-n,其表示指向存储在存储器中的状态表(例如,状态表1430a-c中的一者)内的状态信息(例如状态1432)的地址(指针);状态1524a-n,其表示所讨论的资源的状态信息;以及(一个或多个)标志1523a-n(例如,指示SC条目内状态存在的存在标志/比特和指示SC条目的有效性的有效标志/比特,该有效标志/比特可以帮助驱逐/分配策略)。
BTC 1530被示出包括多个BTC条目1531a-n。在一个实施例中,BTC条目1531a-n的数量为8,但该数量是设计选择的事情,并且取决于如何平衡各种权衡,可以更大或更小。BTC 1530的每个BTC条目1531a-x包括:SBTO1532a-x的部分,其表示SBTO的最高有效比特(例如,32比特中的26比特),从而指向存储在存储器中的绑定表中的绑定表条目的缓存行;多个SO1534a-x(例如,每BTC条目有16个SO);(一个或多个)标志1533a-x(例如,指示BTC条目的有效性的有效标志/比特);以及计数器1535a-n,其表示跟踪与BTC条目相关的未完成的状态请求的使用中计数器。如上文参考DSAT1610所讨论,在一个实施例中,给定的BTC条目的计数器针对未命中BTC 1530的每个未完成的状态请求递增,并且在BTC条目是有效的并且未命中开始被服务之后开始递减。同样如上所述,给定的BTC条目应该保持锁定(不能被驱逐),直到所有未命中都被服务(即,计数器为零)。
所示的乱序(OOO)跟踪器1540包括例如与DSAT条目1511a-n的数量相对应的多个跟踪器条目1541a-n。如下面进一步所描述,OOO跟踪器1540可用于跟踪已对其发出存储器请求的BTC 1530未命中。OOO跟踪器1540的每个跟踪器条目1541a-n包括:BTC索引1542a-n,其表示对应BTC条目的BTC 1530内的索引;SO偏移1544a-n,其指示缓存行内的由DSAT 1510具体地请求并且要被缓存在SC 1520内的多个SO中的哪一个;以及(一个或多个)标志1534a-n(例如,指示跟踪器条目的有效性的有效标志/比特,以及指示对存储器请求的响应已被接收、因此具体地请求的SO现在存在于对应的BTC条目中的存在比特)。
DSAT 1510、SC 1520、BTC 1530和OOO跟踪器1540中的每一者可以是由以灰色背景示出的相应字段标记的内容可寻址存储器(content-addressable memory,CAM)。例如,为了促进标识与同状态请求相关联的SBTO匹配的DSAT条目,DSAT 1510可以针对DSAT条目1511a-n的SBTO1512a-n执行SBTO CAM。可以分别基于SO、部分SBTO和BTC索引在SC 1520、BTC 1530和OOO跟踪器1540内执行类似的内容搜索。与DSAT 1510、SC 1520、BTC 1530和OOO跟踪器1540之间的具体使用和交互有关的进一步细节将在下文中参考图17-图21的流程图和图16A-D所图示的各种场景来描述。
虽然在使用中的计数器(例如,计数器1515a-n和计数器1535a-x)和OOO跟踪器1540的使用方面进行了隐含,但要领悟的是,多个未完成的状态请求(未命中)可能同时处于进程中(例如,等待要从存储器返回的数据)。还要理解的是,状态请求可被乱序地处置。例如,在SC 1520内导致命中的状态请求可以通过待决未命中。类似地,在OOO跟踪器1540内已经发出并跟踪存储器请求的BTC 1530未命中可能由于对存储器请求的响应被乱序地接收而被乱序地服务。
虽然本文描述了具有表示纹理采样器的共享功能的各种具体示例,但应领会,本地缓存结构1500可用于处理与其他类型的共享功能相关联的状态请求,包括但不限于数据缓存和像素数据端口。
资源状态缓存场景
取决于DSAT 1510、SC 1520和BTC 1530的条目的当前填充状态,命中和未命中可能以各种组合发生。为了充分理解缓存结构的操作,不需要讨论每一种此类组合。因此,出于简明的目的,参考图16A-D依次简要地描述与以下缓存场景子集中的每一者相关联的高级数据流,这些缓存场景可能在试图参考本地缓存结构1500处理状态请求时出现:
·状态请求可以表示其状态信息存在于SC 1520中的DSAT 1510中的命中;
·状态请求可表示DSAT 1510中的未命中和BTC 1530中的命中;
·状态请求可表示DSAT 1510中的未命中,并且也可表示BTC 1530中的未命中;或者
·状态请求可能未命中DSAT 1510、BTC 1530和SC 1520中的全部。
关于这些场景的进一步细节将参考图17-图21的流程图来描述。
图16A是图示根据实施例的图15的本地缓存结构1500内的第一示例场景1610和对应的数据流的框图。该第一示例场景1610表示与处置状态请求1601相关联的数据流,该状态请求1601命中其状态信息存在于SC 1520中的DSAT 1510。状态请求1601可包含指示所讨论的SBTO的信息。例如,状态请求1601可以包含SBTO或可以指定包含SBTO的GRF内的寄存器。响应于接收到状态请求1601,本地状态缓存单元(未示出)可通过在DSAT 1510内执行DSAT查找1602来确定在DSAT 1510内是否存在匹配的DSAT条目(例如,DSAT条目1511a-n中的一个)。在该示例场景中,状态请求表示DSAT命中,并指示在SC 1520内存在与SBTO相对应的状态信息。例如,在匹配的DSAT条目内的存在标志/比特可被设置为真,以指示SC 1520内存在对应的状态信息。因此,DSAT 1510可使SC 1520通过使用匹配的DSAT条目的SLID作为索引来定位SC 1520中包含状态的SC条目来输出该状态。下面将参考图17描述关于该第一示例场景的进一步细节。
图16B是图示根据实施例的图15的本地缓存结构1500内的第二示例场景1620和对应的数据流的框图。该第二示例场景1620表示与处置状态请求1601相关联的数据流,该状态请求1601未命中DSAT 1510并命中BTC 1530和SC 1520。响应于DSAT查找1602未命中DSAT,DSAT 1510基于未命中DSAT 1510的SBTO在BTC 1530中执行BTC查找1603。在本示例中,由于在BTC 1530内发现了匹配的BTC条目,因此BTC 1530输出适当的SO和可被DSAT1510用来在SC 1520内执行SC查找1607的DSAT索引。在该第二示例场景1620的上下文中,SC查找1607表示SC 1520中的命中,使得SC:(i)输出状态和(ii)向DSAT 1510返回包括SLID(即,匹配SC条目的索引)和匹配SC条目的存在标志的值(指示与SO相对应的状态是否存在于SC 1520中)的SC查找响应1608。下面将参考图18描述关于该第二示例场景1620的进一步细节。
图16C是图示根据实施例的图15的本地缓存结构1500内的第三示例场景1630和对应的数据流的框图。该第三示例场景1630表示与处置状态请求1601相关联的数据流,该状态请求1601未命中DSAT 1510和BTC 1530,但是命中SC 1520。如上文结合图16B所述,响应于DSAT查找1602未命中DSAT,DSAT 1510基于未命中DSAT 1510的SBTO在BTC 1530中执行BTC查找1603。然而,在该第三示例场景163中,在BTC 1530内没有找到匹配的BTC条目,从而导致BTC未命中。
响应于BTC查找1603的失败,BTC 1530向存储器1635发出从包括感兴趣的SO的绑定表(例如,绑定表流1420)取回SO的缓存行的SO请求。由于此类存储器请求可能被乱序处理,BTC 1530可利用OOO跟踪器1540来跟踪未决的BTC未命中。在本示例的上下文中,在向存储器1635发出SO请求之后,BTC 1530引导OOO跟踪器1540添加跟踪器条目1604以促进对来自存储器的SO返回1636的处置。在接收到SO的缓存行(即,来自存储器的SO返回1636)后,BTC 1530通过在OOO跟踪器1540中执行跟踪器查找1605并从OOO跟踪器1540接收跟踪器查找响应1606来利用OOO跟踪器1540获得感兴趣SO的SO偏移和指向DSAT 1510内的DSAT条目的对应DSAT索引。数据流的剩余部分遵循上文结合图16B所描述的内容。下面将参考图19和图20描述关于该第三示例场景1630的进一步细节。
图16D是图示根据实施例的图15的本地缓存结构1500内的第四示例场景1640和对应的数据流的框图。该第四示例场景1640表示与处置状态请求1601相关联的数据流,该状态请求1601导致未命中DSAT 1510、BTC 1530和SC 1520中的全部。该数据流与上文参考图16C描述的数据流之间的差异涉及(i)SC查找1607导致未命中,从而导致SC 1520基于SO向存储器发出状态请求;以及(ii)对来自存储器的状态返回1626的处理。下面将参考图21和图22描述关于该第四示例场景1640的进一步细节。
状态请求处理
图17是图示根据实施例的状态请求处理的流程图。在本示例的上下文中,与GPU的3D管线相关联的共享功能向可被共享功能访问的缓存结构(例如,本地缓存结构1500)发出状态请求(例如,状态请求1601)。
在框1710处,接收该状态请求。根据一个实施例,该状态请求包括指示绑定表(例如,绑定表流1420)的绑定表条目的地址(例如,SBTO)的信息。例如,状态请求可包括该地址或指定包含该地址的(例如,GRF内的)寄存器。
在框1720处,基于SBTO来执行DSAT查找(例如,DSAT查找1602)。在一个实施例中,本地缓存控制器可使DSAT查找在DSAT(例如,DSAT 1510)内被执行,该DSAT促进针对一个或多个资源对SC(例如,SC 1520)内的所缓存的状态信息的直接访问。DSAT查找可能涉及DSAT1510在DSAT条目1511a-n中的、被标记为有效并且针对其已指派了SLID(例如,所分配的标志/比特为真)并且还指示对应的SO存在于SC 1520的那些DSAT条目中搜索包含与同状态请求相关联的SBTO匹配的SBTO的DSAT条目。
在决策框1730处,作出关于状态请求是否表示DSAT内的命中的确定。也就是说,在框1720中执行的DSAT查找是否导致定位匹配的DSAT条目。如果是,则处理继续进行到框1750;否则处理分支到框1740以执行DSAT未命中处理,DSAT未命中处理的示例将在下文参考图18进行描述。
在框1740处,使SC输出来自SC条目的状态。根据一个实施例,响应于确定在DSAT1510内存在匹配的DSAT条目(DSAT命中),DSAT 1510输出SC内的条目(例如,SC条目1521a-n中的一个)的索引(例如,包含在匹配的DSAT条目内的SLID),与由SBTO寻址的SO相对应的状态先前被缓存在该SC内。对于其部分,SC可读取该条目并输出该条目内包含的状态。
虽然在本示例的上下文中包括了多个所枚举的块,但是应理解,示例可以在所枚举的块之前、之后和/或之间包括附加的块。类似地,在一些示例中,所枚举的块中的一个或多个块可以被省略或以不同的顺序被执行。
DSAT未命中处理
图18是图示根据实施例的DSAT未命中处理的流程图。在本示例的上下文中,状态请求(例如,状态请求1601)正被缓存结构(例如,本地缓存结构1500)处理,并且与状态请求相关联的绑定表(例如,绑定表流1420)的绑定表条目的地址(例如,SBTO)已经被发现不存在于DSAT(例如,DSAT 1510)内,该DSAT促进对SC(例如,SC 1520)内的所缓存的状态信息的直接访问。在一个实施例中,参考图18描述的步骤在图17的框1740内被执行。
在框1810处,新条目被分配到DSAT中,以存储指向包含所讨论的资源状态的SC的对应条目的索引(例如,SLID),等等。在一个实施例中,DSAT 1510通过标识无效DSAT条目(例如,将有效标志设置为假)并且保留该无效DSAT条目(例如通过将有效标志设置为真、清除现存的和已分配的标志以及将与状态请求相关联的SBTO存储在新分配的DSAT条目内),从而分配新的DSAT条目。如果没有无效的DSAT条目是可用的(例如,所有DSAT条目被标记为有效),则DSAT可以解除分配(例如,驱逐)未使用的DSAT条目(例如,具有为零的使用中计数器的DSAT条目)并继续分配新解除分配的DSAT条目。
在框1820处,DSAT使存储来自绑定表(例如,绑定表流1420)的绑定表条目的信息的BTC(例如,BTC 1530)基于所讨论的SBTO的部分(例如,SBTO的最高有效26比特)在BTC内执行BTC查找(例如,BT查找1602)。BTC查找可能涉及BTC 1530在BTC条目1531a-n中的、被标记为有效的那些BTC条目中搜索包含与所讨论的SBTO的部分匹配的SBTO部分的BTC条目。
在决策框1830处,作出关于BTC查找是否表示BTC内的命中的确定。也就是说,在框1820中执行的BTC查找是否导致定位匹配的BTC条目。如果是,则处理继续进行到框1850;否则处理分支到框1840以执行BTC未命中处理,BTC未命中处理的示例将在下文参考图19进行描述。
在框1850处,BTC输出查找响应(例如,BTC查找响应1603)。在一个实施例中,查找响应包括与SBTO相对应的SO和DSAT索引(与新分配的DSAT条目相对应)。根据一个实施例,所讨论的SBTO的部分(例如,6个最低有效比特中的最高有效4比特)可用于标识在匹配的BTC条目内缓存的SO的缓存行内的SO偏移。
由于来自存储器的多个SO返回(例如,来自存储器的SO返回1636)可能是可用的,在一个实施例中,可以通过在OOO跟踪器条目中的、存在来自存储器的SO返回的那些OOO跟踪器条目中进行仲裁,并且使用所选择的跟踪器条目的SO偏移来从在对应的BTC条目内缓存的SO的缓存行中选择适当的SO,从而在每个循环形成查找响应。在一个示例中,查找响应可被存储在可被缓存结构访问的寄存器内,以促进DSAT和SC中的一者或两者适当地高效使用,而不是直接向DSAT提供查找响应。
在框1860处,DSAT使得SC执行SC查找(例如,SC查找1607)。SC查找可能涉及SC1520在SC条目1531a-n中的、被标记为存在的那些SC条目中进行搜索,以标识包含与在BTC查找响应内标识的SO匹配的SO的SC条目。例如,DSAT可以向SC发出SC查找请求,其中指示BTC查找响应将SO存储到其中的寄存器。
在决策框1870处,作出关于SC查找是否表示SC内的命中的确定。也就是说,在框1860中执行的SC查找是否导致定位匹配的SC条目。如果是,处理继续进行到框1890;否则处理分支到框1880以执行SC未命中处理,SC未命中处理的示例将在下文参考图21进行描述。
在框1890处,SC使DSAT更新DSAT内新分配的条目并输出状态。在一个实施例中,SC输出在框1860中所标识的匹配SC条目内缓存的状态。附加地,SC可输出要被包括在新分配的DSAT条目内的存在标志/比特的状态(在这种情况下,指示存在与匹配SC条目相对应的状态信息)和SLID(匹配SC条目的索引)。DSAT可以通过存储由SC输出的SLID并将新分配的DSAT条目的存在标志/比特和SLID分配标志/比特两者都设置为真,来对新分配的DSAT条目进行更新。在一个实施例中,DSAT可基于先前作为BTC查找响应的结果而寄存的DSAT索引来定位新分配的DSAT条目。
虽然在本示例的上下文中包括了多个所枚举的块,但是应理解,示例可以在所枚举的块之前、之后和/或之间包括附加的块。类似地,在一些示例中,所枚举的块中的一个或多个块可以被省略或以不同的顺序被执行。
BTC未命中处理
图19是图示根据实施例的BTC未命中处理的流程图。在本示例的上下文中,状态请求(例如,状态请求1601)正被缓存结构(例如,本地缓存结构1500)处理,并且与状态请求相关联的绑定表(例如,绑定表流1420)的绑定表条目的地址(例如,SBTO)已经被发现不存在于DSAT(例如,DSAT 1510)内,该DSAT促进对SC(例如,SC 1520)内的所缓存的状态信息的直接访问。附加地,已经发现BTC查找(例如,BTC查找1603)已未命中BTC(例如,BTC 1530),该BTC在本地上存储来自绑定表(例如,绑定表流1420)的绑定表条目的信息。在一个实施例中,参考图19描述的步骤在图18的框1840内被执行。
在框1910处,在BTC内分配新的条目。根据一个实施例,BTC 1530通过标识无效BTC条目(例如,将有效标志设置为假)并且保留该无效BTC条目(例如通过将有效标志设置为真),从而分配新的BTC条目。如果没有无效的BTC条目是可用的(例如,所有BTC条目被标记为有效),则BTC可以解除分配(例如,驱逐)未使用的BTC条目(例如,具有为零的使用中计数器的BTC条目)并继续分配新解除分配的BTC条目。
在框1920处,BTC向存储器发出SO请求(例如,向存储器1635发出SO请求)。根据一个实施例,由每个BTC条目(例如,BTC条目1531a-x)对SO(例如,SO1534a-x)进行的存储是以缓存行(例如,16个双字)的粒度进行的,从而允许在每个BTC条目内缓存16个SO。相应地,对存储器的SO请求可利用SBTO的掩蔽版本(例如,其中SBTO的最低有效6比特被设置为零)来发出,以与缓存行边界的地址相对应(例如,64字节被对齐)。
因为对存储器的SO请求可能在缓存行边界处,并且因为来自存储器的SO返回(例如,来自存储器的SO返回1636)可能以不同于它们被发出的顺序被接收,在一个实施例中,可以利用跟踪SO请求未完成的BTC条目的OOO跟踪器(例如,OOO跟踪器1540)。在框1930处,BTC使OOO跟踪器向OOO跟踪器添加新的跟踪器条目(例如,添加跟踪器条目1604)以跟踪存储器请求。新的跟踪器条目可被标记为有效,并且可包括与其相对应的BTC索引,以及感兴趣的SO(与SBTO相关联的SO)的SO偏移。例如,可以基于SBTO的6个最低有效比特中的最高有效4比特来确定SO偏移,以便在最终返回的16个SO中进行选择。在一个实施例中,BTC使OOO跟踪器在OOO跟踪器内与由DSAT新分配的DSAT条目的DSAT索引相对应的索引处创建新的条目。以此方式,当接收到来自存储器的SO返回时,可以在返回的多个SO中提取适当的SO,并且可以将其与新分配的DSAT条目相匹配,如下文参考图20进一步描述。
虽然在本示例的上下文中包括了多个所枚举的块,但是应理解,示例可以在所枚举的块之前、之后和/或之间包括附加的块。类似地,在一些示例中,所枚举的块中的一个或多个块可以被省略或以不同的顺序被执行。
来自存储器的SO返回处理
图20是图示根据实施例的来自存储器的状态偏移(SO)返回处理的流程图。在本示例的上下文中,状态请求(例如,状态请求1601)正被缓存结构(例如,本地缓存结构1500)处理,并且与状态请求相关联的绑定表(例如,绑定表流1420)的绑定表条目的地址(例如,SBTO)已经被发现不存在于DSAT(例如,DSAT 1510)内,该DSAT促进对SC(例如,SC 1520)内的所缓存的状态信息的直接访问。附加地,已经发现BTC查找(例如,BTC查找1603)已未命中BTC(例如,BTC 1530),该BTC在本地上存储来自绑定表(例如,绑定表流1420)的绑定表条目的信息,并且BTC已经向存储器发出SO请求(例如,向存储器发出SO请求1635)以从绑定表中获得与SBTO相关联的SO。在一个实施例中,一次请求SO的缓存行以存储在BTC内(并且,具体地,在作为BTC未命中的结果而在BTC内分配的新BTC条目内)。在一个实施例中,参考图20描述的步骤响应于接收到来自存储器的SO返回(例如,来自存储器的SO返回1636)而被执行。
在框2020处,BTC基于由来自存储器的SO返回返回的SO缓存行的地址来搜索并更新匹配的BTC条目。根据一个实施例,BTC通过在BTC条目1531a-n中的、被标记为有效的那些BTC条目中搜索包含与来自存储器的SO返回的地址匹配的SBTO(例如,SBTO 1532a-x)的部分的BTC条目来标识匹配的BTC条目(例如,在框1910中新分配的BTC条目)。响应于标识匹配的BTC条目,BTC可通过在匹配的BTC条目内存储SO的缓存行来更新匹配的BTC条目。
在框2020处,BTC使OOO跟踪器执行跟踪器查找(例如,跟踪器查找1605)以基于匹配的BTC条目的BTC索引来查找相应的跟踪器条目。如上文所述,由于来自存储器的多个SO返回(例如,来自存储器的SO返回1636)可能是可用的,在一个实施例中,可以通过在OOO跟踪器条目中的、存在来自存储器的SO返回的那些OOO跟踪器条目中进行仲裁,并且使用所选择的跟踪器条目的SO偏移来从在对应的BTC条目内缓存的SO的缓存行中选择适当的SO,从而在每个循环形成查找响应。在一个示例中,查找响应可被存储在可被缓存结构访问的寄存器内,以促进DSAT和SC中的一者或两者适当地高效使用,而不是直接向DSAT提供查找响应。
在框2030处,OOO搜索匹配的跟踪器条目并输出来自匹配的跟踪器条目的SO偏移。根据一个实施例,跟踪器通过在跟踪器条目(例如,跟踪器条目1541a-n)中的被标记为有效的那些跟踪器条目中搜索包含与跟踪器查找的BTC索引匹配的BTC索引的跟踪器条目来标识匹配的跟踪器条目。响应于定位匹配的跟踪器条目,OOO跟踪器可以输出来自匹配的跟踪器条目的SO偏移,并将SO标记为存在。在一个实施例中,OOO跟踪器条目与DSAT条目一对一地映射。在此类实施例中,匹配的跟踪器条目的索引与DSAT索引相对应,并且也可由OOO跟踪器输出。
在框2040处,BTC基于由OOO跟踪器提供的SO偏移从BTC条目中提取适当的SO。
在框2050处,BTC输出SO和DSAT索引以供DSAT和/或SC使用。
在框2060处,DSAT使得SC执行SC查找(例如,SC查找1607)。在一个实施例中,DSAT使得SC基于由BTC在框2050处输出的SO和DSAT索引来执行SC查找,并且SC查找可被存储在可由缓存结构访问的寄存器中。
在决策框2070处,作出关于SC查找是否表示SC内的命中的确定。也就是说,在框2060中执行的SC查找是否导致定位匹配的SC条目。如果是,处理继续进行到框1890;否则处理分支到框1880以执行SC未命中处理,SC未命中处理的示例将在下面参考图21进行描述。
虽然在本示例的上下文中包括了多个所枚举的块,但是应理解,示例可以在所枚举的块之前、之后和/或之间包括附加的块。类似地,在一些示例中,所枚举的块中的一个或多个块可以被省略或以不同的顺序被执行。
虽然在本示例的上下文中,描述了对来自存储器的单个SO返回的处理,但是要领会的是,来自存储器的多个SO返回可以同时是可用的。在一个实施例中,BTC可利用仲裁器从OOO跟踪器条目中选择来自存储器SO返回可用的那些OOO跟踪器条目,并且随后利用所选择的跟踪器条目的SO偏移,从在对应的BTC条目内缓存的SO的缓存行中选择适当的SO。
SC未命中处理
图21是图示根据实施例的状态缓存(SC)未命中处理的流程图。在本示例的上下文中,状态请求(例如,状态请求1601)正在由缓存结构(例如,本地缓存结构1500)处理,该缓存结构导致未命中包含一个或多个资源的所缓存的状态信息的SC(例如,SC 1520)的SC查找(例如,SC查找1607)。
在框2110处,在SC中分配新的SC条目。在一个实施例中,SC通过标识无效SC条目(例如,将有效标志设置为假)并且保留该无效SC条目(例如通过将有效标志设置为真、将SC查找的SO存储在新分配的SC条目中,以及将指示与SO相对应的状态的存在的存在标志/比特设置为假),从而在SC内的特定索引处(例如,在SC条目1521a-n之中)分配新的SC条目。如果没有无效的SC条目是可用的(例如,所有的SC条目都被标记为有效),则SC可实现驱逐/分配策略。在一个实施例中,SC可以利用伪近期最少使用(Pseudo-Least Recently Used,PLRU)缓存算法以基于年龄的近似度量来解除分配(驱逐)SC条目,并且继续填充新解除分配的SC条目,如上文所述。
在框2120处,SC使DSAT更新对应的DSAT条目。在一个是实例中,SC可输出要被包括在新分配的DSAT条目内的存在标志/比特的状态(在这种情况下,指示不存在与匹配SC条目相对应的状态信息)和SLID(匹配SC条目的索引)。DSAT可以通过存储由SC输出的SLID并且将存在标志/比特设置为假且将SLID分配标志/比特设置为真,来对新分配的DSAT条目进行更新。在一个实施例中,DSAT可基于先前作为BTC查找响应的结果而寄存的DSAT索引来定位新分配的DSAT条目。
在框2130处,SC向存储器发出状态请求(例如,向存储器的状态请求1625)以取回与未命中SC的SC查找相关联的状态信息。
虽然在本示例的上下文中包括了多个所枚举的块,但是应理解,示例可以在所枚举的块之前、之后和/或之间包括附加的块。类似地,在一些示例中,所枚举的块中的一个或多个块可以被省略或以不同的顺序被执行。
来自存储器的状态返回处理
图22是图示根据实施例的来自存储器的状态返回处理的流程图。在本示例的上下文中,状态请求(例如,状态请求1601)正被缓存结构(例如,本地缓存结构1500)处理,该缓存结构导致未命中包含一个或多个资源的所缓存的状态信息的SC(例如,SC 1520)的SC查找(例如,SC查找1607)。作为SC未命中的结果,SC先前向存储器发出了状态请求(例如,向存储器的状态请求1625)。在一个实施例中,参考图22描述的步骤响应于接收到来自存储器的状态返回(例如,来自存储器的状态返回1626)而被执行。
在框2210处,SC搜索匹配的SC条目。根据一个实施例,SC通过在SC条目1521a-n中的那些条目中搜索包含与来自存储器的状态返回的SO匹配的SO的SC条目来标识匹配的SC条目(例如,在框2110中新分配的SC条目)。
在框2220处,SC更新匹配的SC条目。例如,SC可以将来自存储器的状态返回内返回的状态信息存储在匹配的SC条目内并设置匹配的SC条目的存在标志/比特。
在框2230处,SC使DSAT更新对应的DSAT条目。在一个实施例中,SC返回SLID(即,新SC条目的索引)和存在标志/比特的值(在这种情况下,指示不存在与SC查找的SO相对应的状态信息)作为SC查找响应的一部分。这允许DSAT定位对应的DSAT条目(例如,将SLID分配标志/比特设置为真并且包括匹配的SLID值)并且在对应的DSAT条目内设置存在标志/比特。
在框2240处,SC输出在框2210中所标识的匹配的SC条目内缓存的状态。例如,SC可以向下游发送该状态。如上所述,应该在共享功能管线的前端处执行状态请求处理,以促进将被共享功能的一个或多个下游部件用于执行所讨论的操作的状态信息的早期可用性。例如,在纹理采样器单元的上下文中,纹理采样器操作的性能取决于状态信息,此类状态信息应该在纹理采样器管线的早期获得,因此一旦状态信息是可用的,它就可以被发送到管线中,以供单元的剩余部分消耗,以促进纹理采样器操作的执行。
虽然在本示例的上下文中包括了多个所枚举的块,但是应理解,示例可以在所枚举的块之前、之后和/或之间包括附加的块。类似地,在一些示例中,所枚举的块中的一个或多个块可以被省略或以不同的顺序被执行。
方法中的许多方法是以它们的最基本形式描述的,但是可将过程添加到方法中的任一方法中或从方法中的任一方法删除过程,并且可以向所描述的消息中的任何一个添加信息或从所描述的消息中的任何一个减去信息,而不背离当前实施例的基本范围。对本领域的技术人员而言将显而易见的是,可以作出许多进一步的修改和改编。特定实施例不是被提供用于限制概念而是用于说明概念。实施例的范围不是由以上所提供的具体示例来确定,而仅由所附权利要求确定。
如果说要素“A”耦合至或耦合于要素“B”,则要素A可直接耦合至要素B或例如通过要素C间接耦合。当说明书或权利要求书陈述部件、特征、结构、过程或特性A“致使”部件、特征、结构、过程或特性B时,这意味着“A”是“B”的至少部分成因,但也可以有辅助致使“B”的至少一个其他部件、特征、结构、过程或特性。如果说明书指示“可”、“可以”或“可能”包括部件、特征、结构、过程或特性,则不要求包括该特定部件、特征、结构、过程或特性。如果说明书或权利要求书提到“一”或“一个”要素,则这不意味着仅存在一个所描述要素。
实施例是实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”、或“其他实施例”的引用意味着结合实施例所描述的特定特征、结构或特性被包括在至少一些实施例中,但不一定被包括在所有实施例中。“实施例”、“一个实施例”、或“一些实施例”的各种出现并不一定都指代相同的实施例。应该理解,在对示例性实施例的以上描述中,出于使本公开变得流畅并辅助理解各新颖方面中的一个或多个方面的目的,各个特征有时被一起编组在单个实施例、附图、或其描述中。然而,这种公开方法不应被解释成反映所要求保护的实施例要求比每项权利要求中所明确记载的更多特征的意图。相反,如所附权利要求所反映,新颖性方面存在于比单个前述公开的实施例的所有特征更少的特征中。因此,权利要求由此被明确纳入该说明书中,其中每一项权利要求独自作为单独的实施例。
以下条款和/或示例涉及进一步的实施例或示例。可在一个或多个实施例中的任何地方使用示例中的细节。能以各种方式将不同的实施例或示例的各种特征与所包括的一些特征以及被排除的其他特征组合以适应各种不同的应用。示例可以包括主题,诸如:方法;用于执行所述方法的动作的装置;至少一种包括指令的机器可读介质,所述指令当由机器执行时使所述机器执行所述方法的动作;或用于根据本文中所描述的实施例和示例促进混合通信的装置或系统。
一些实施例涉及示例1,示例1包括图形处理单元(GPU),该图形处理单元(GPU)包括:三维(3D)管线,该三维(3D)管线可操作用于执行3D操作;子核心,该子核心可操作用于维护缓存结构,缓存结构包括(i)状态缓存(SC),该状态缓存(SC)具有多个SC条目,每个SC条目包含绑定资源的状态,以及(ii)直接状态访问表(DSAT),该直接状态访问表(DSAT)具有多个DSAT条目,每个DSAT条目包含表示到SC的索引的状态位置标识符(SLID),其中,DSAT包括由表示与3D管线相关联的绑定表流的条目的地址的状态绑定表偏移(SBTO)值标记并且被存储在与GPU相关联的存储器子系统内的内容可寻址存储器(CAM);以及共享功能,该共享功能可操作用于向缓存结构发出对被共享功能访问的特定绑定资源的状态的请求,其中该请求包括指示指向绑定表流内的条目的SBTO的信息;以及其中响应于该请求,缓存结构可操作用于作出关于基于SBTO在对缓存结构的单个访问期间、特定绑定资源的状态是否存在于该缓存结构内的确定。
示例2包括示例1的主题,其中响应于确定是肯定的,DSAT可操作用于使得SC通过基于多个DSAT条目中匹配SBTO的特定DSAT条目的SLID来对SC进行索引以输出特定绑定资源的状态。
示例3包括示例1-2的主题,其中响应于SBTO表示DSAT内的缓存命中且确定是否定的,SC可操作用于分配多个SC条目中的新SC条目并向存储器子系统发出对特定绑定资源的状态的请求。
示例4包括示例1-3的主题,其中缓存结构进一步包括绑定表缓存(BTC),绑定表缓存(BTC)包括多个BTC条目,每个BTC条目包含从绑定表流缓存的状态偏移的缓存行,其中BTC包括由SBTO的部分标记的CAM,并且其中响应于SBTO表示DSAT内的缓存未命中,DSAT进一步可操作用于分配多个DSAT条目中的新DSAT条目。
示例5包括示例1-4的主题,其中SC包括由状态偏移字段标记的CAM,并且其中响应于SBTO表示BTC内的缓存命中,DSAT进一步可操作用于使得BTC从存储在多个BTC条目中的、与SBTO的部分匹配的特定BTC条目内的状态偏移的缓存行返回与SBTO相关联的状态偏移,并且试图基于该状态偏移来定位SC内的特定绑定资源的状态。
示例6包括示例1-5的主题,其中缓存结构进一步包括乱序(OOO)跟踪表,该乱序(OOO)跟踪表包括多个跟踪条目,每个跟踪条目包含指向多个BTC条目中的特定BTC条目的指针和表示包含在该特定BTC条目内的状态偏移的缓存行中的选择器的偏移,并且其中响应于SBTO表示BTC内的缓存未命中,BTC可操作用于:分配多个BTC条目中的新BTC条目;向存储器子系统发出对与新BTC条目相关联的状态偏移的缓存行的请求;以及通过使得OOO跟踪表分配多个跟踪条目中的新未决跟踪条目来促进对存储器子系统的未完成请求的乱序处理。
示例7包括示例1-6的主题,其中共享功能包括纹理采样器。
一些实施例涉及示例8,示例8包括一种方法,该方法包括:在图形处理单元(GPU)的子核心内本地地维护缓存结构,缓存结构包括(i)状态缓存(SC),该状态缓存(SC)具有多个SC条目,每个SC条目包含绑定资源的状态,以及(ii)直接状态访问表(DSAT),该直接状态访问表(DSAT)具有多个DSAT条目,每个DSAT条目包含表示到SC的索引的状态位置标识符(SLID),其中,DSAT包括由表示与GPU的三维(3D)管线相关联的绑定表流的条目的地址的状态绑定表偏移(SBTO)值标记并且被存储在与GPU相关联的存储器子系统内的内容可寻址存储器(CAM);接收对由3D管线的共享功能访问的特定绑定资源的状态的请求,其中该请求包括指示指向绑定表流内的条目的SBTO的信息;以及基于SBTO来确定在缓存结构的单个访问期间、特定绑定资源的状态是否存在于该缓存结构内。
示例9包括示例8的主题,进一步包括:响应于确定是肯定的,使得SC通过基于多个DSAT条目中匹配SBTO的特定DSAT条目的SLID来对SC进行索引以输出特定绑定资源的状态。
示例10包括示例8-9的主题,进一步包括响应于SBTO表示DSAT内的缓存命中并且确定是否定的而进行以下操作:分配多个SC条目的新SC条目;以及向存储器子系统发出对特定绑定资源的状态的请求。
示例11包括示例8-10的主题,其中缓存结构进一步包括绑定表缓存(BTC),绑定表缓存(BTC)包括多个BTC条目,每个BTC条目包含从绑定表流缓存的状态偏移的缓存行,其中BTC包括由SBTO的部分标记的CAM,并且其中该方法进一步包括响应于SBTO表示DSAT内的缓存未命中,分配多个DSAT条目中的新DSAT条目。
示例12包括示例8-11的主题,其中SC包括由状态偏移字段标记的CAM,并且其中该方法进一步包括,响应于SBTO表示BTC内的缓存命中而进行以下操作:使得BTC从存储在多个BTC条目中的、与SBTO的部分匹配的特定BTC条目内的状态偏移的缓存行返回与SBTO相关联的状态偏移;以及试图基于该状态偏移来定位SC内的特定绑定资源的状态。
示例13包括示例8-12的主题,其中缓存结构进一步包括乱序(OOO)跟踪表,该乱序(OOO)跟踪表包括多个跟踪条目,每个跟踪条目包含指向多个BTC条目中的特定BTC条目的指针和表示包含在该特定BTC条目内的状态偏移的缓存行中的选择器的偏移,并且其中该方法进一步包括,响应于SBTO表示BTC内的缓存未命中而进行以下操作:分配多个BTC条目中的新BTC条目;向存储器子系统发出对与新BTC条目相关联的状态偏移的缓存行的请求;以及通过分配多个跟踪条目中的新未决跟踪条目来促进对存储器子系统的未完成请求的乱序处理。
示例14包括示例8-13的主题,其中共享功能包括纹理采样器。
一些示例涉及示例15,示例15包括一种用于图形处理单元的三维(3D)管线的共享功能的图形资源缓存,该图形资源缓存包括:状态缓存(SC),该状态缓存(SC)具有多个SC条目,每个SC条目包含绑定资源的状态,以及直接状态访问表(DSAT),该直接状态访问表(DSAT)具有多个DSAT条目,每个DSAT条目包含表示到SC的索引的状态位置标识符(SLID),其中,DSAT包括由表示与3D管线相关联的绑定表流的条目的地址的状态绑定表偏移(SBTO)值标记并且被存储在与GPU相关联的存储器子系统内的内容可寻址存储器(CAM);其中,响应于对由共享功能访问的特定绑定资源的状态的请求,其中该请求包括指示指向绑定表流内的条目的SBTO的信息,DSAT可操作用于作出关于基于SBTO在对图形资源缓存的单个访问期间、特定绑定资源的状态是否存在于图形资源缓存内的确定。
示例16包括示例15的主题,其中响应于确定是肯定的,DSAT进一步可操作用于使得SC通过基于多个DSAT条目中匹配SBTO的特定DSAT条目的SLID来对SC进行索引以输出特定绑定资源的状态。
示例17包括示例15-16的主题,其中响应于SBTO表示DSAT内的缓存命中且确定是否定的,SC可操作用于分配多个SC条目中的新SC条目并向存储器子系统发出对特定绑定资源的状态的请求。
示例18包括示例15-17的主题,进一步包括绑定表缓存(BTC),绑定表缓存(BTC)包括多个BTC条目,每个BTC条目包含从绑定表流缓存的状态偏移的缓存行,其中BTC包括由SBTO的部分标记的CAM,并且其中响应于SBTO表示DSAT内的缓存未命中,DSAT进一步可操作用于分配多个DSAT条目中的新DSAT条目。
示例19包括示例15-18的主题,其中SC包括由状态偏移字段标记的CAM,并且其中响应于SBTO表示BTC内的缓存命中,DSAT进一步可操作用于使得BTC从存储在多个BTC条目中的、与SBTO的部分匹配的特定BTC条目内的状态偏移的缓存行返回与SBTO相关联的状态偏移,并且试图基于该状态偏移来定位SC内的特定绑定资源的状态。
示例20包括示例15-19的主题,进一步包括乱序(OOO)跟踪表,该乱序(OOO)跟踪表包括多个跟踪条目,每个跟踪条目包含指向多个BTC条目中的特定BTC条目的指针和表示包含在该特定BTC条目内的状态偏移的缓存行中的选择器的偏移,并且其中响应于SBTO表示BTC内的缓存未命中,BTC可操作用于:分配多个BTC条目中的新BTC条目;向存储器子系统发出对与新BTC条目相关联的状态偏移的缓存行的请求;以及通过使得OOO跟踪表分配多个跟踪条目中的新未决跟踪条目来促进对存储器子系统的未完成请求的乱序处理。
一些实施例涉及示例21,示例21包括一种系统,该系统包括:用于在图形处理单元(GPU)的子核心内本地地维护缓存结构,缓存结构包括(i)状态缓存(SC)的装置,该状态缓存(SC)具有多个SC条目,每个SC条目包含绑定资源的状态,以及(ii)直接状态访问表(DSAT),该直接状态访问表(DSAT)具有多个DSAT条目,每个DSAT条目包含表示到SC的索引的状态位置标识符(SLID),其中,DSAT包括由表示与GPU的三维(3D)管线相关联的绑定表流的条目的地址的状态绑定表偏移(SBTO)值标记并且被存储在与GPU相关联的存储器子系统内的内容可寻址存储器(CAM);用于接收对由3D管线的共享功能访问的特定绑定资源的状态的请求的装置,其中该请求包括指示指向绑定表流内的条目的SBTO的信息;以及用于基于SBTO来确定在缓存结构的单个访问期间、特定绑定资源的状态是否存在于该缓存结构内的装置。
示例22包括示例21的主题,进一步包括:用于响应于确定是肯定的而使得SC通过基于多个DSAT条目中匹配SBTO的特定DSAT条目的SLID来对SC进行索引以输出特定绑定资源的状态的装置。
示例23包括示例21-22的主题,进一步包括用于响应于SBTO表示DSAT内的缓存命中并且确定是否定的而用于以下操作的装置:分配多个SC条目的新SC条目;以及向存储器子系统发出对特定绑定资源的状态的请求。
示例24包括示例21-23的主题,其中缓存结构进一步包括绑定表缓存(BTC),绑定表缓存(BTC)包括多个BTC条目,每个BTC条目包含从绑定表流缓存的状态偏移的缓存行,其中BTC包括由SBTO的部分标记的CAM,并且其中该方法进一步包括响应于SBTO表示DSAT内的缓存未命中,分配多个DSAT条目中的新DSAT条目。
示例25包括示例21-24的主题,其中SC包括由状态偏移字段标记的CAM,并且其中该系统进一步包括用于响应于SBTO表示BTC内的缓存命中而用于以下操作的装置:使得BTC从存储在多个BTC条目中的、与SBTO的部分匹配的特定BTC条目内的状态偏移的缓存行返回与SBTO相关联的状态偏移;以及试图基于该状态偏移来定位SC内的特定绑定资源的状态。
示例26包括示例21-25的主题,其中缓存结构进一步包括乱序(OOO)跟踪表,该乱序(OOO)跟踪表包括多个跟踪条目,每个跟踪条目包含指向多个BTC条目中的特定BTC条目的指针和表示包含在该特定BTC条目内的状态偏移的缓存行中的选择器的偏移,并且其中该系统进一步包括用于响应于SBTO表示BTC内的缓存未命中而用于以下操作的装置:分配多个BTC条目中的新BTC条目;向存储器子系统发出对与新BTC条目相关联的状态偏移的缓存行的请求;以及通过分配多个跟踪条目中的新未决跟踪条目来促进对存储器子系统的未完成请求的乱序处理。
示例27包括示例21-26的主题,其中共享功能包括纹理采样器。
一些实施例涉及示例28,该示例28包括一种或多种非暂态计算机可读存储介质,具有存储于其上的可执行计算机程序指令,可执行计算机程序指令当由一个或多个处理器执行时,使得一个或多个处理器执行包括以下各项的操作:在图形处理单元(GPU)的子核心内本地地维护缓存结构,缓存结构包括(i)状态缓存(SC),该状态缓存(SC)具有多个SC条目,每个SC条目包含绑定资源的状态,以及(ii)直接状态访问表(DSAT),该直接状态访问表(DSAT)具有多个DSAT条目,每个DSAT条目包含表示到SC的索引的状态位置标识符(SLID),其中,DSAT包括由表示与GPU的三维(3D)管线相关联的绑定表流的条目的地址的状态绑定表偏移(SBTO)值标记并且被存储在与GPU相关联的存储器子系统内的内容可寻址存储器(CAM);接收对由3D管线的共享功能访问的特定绑定资源的状态的请求,其中该请求包括指示指向绑定表流内的条目的SBTO的信息;以及基于SBTO来确定在缓存结构的单个访问期间、特定绑定资源的状态是否存在于该缓存结构内。
示例29包括示例28的主题,其中可执行计算机程序指令进一步使一个或多个处理器响应于确定是肯定的,使得SC通过基于多个DSAT条目中匹配SBTO的特定DSAT条目的SLID来对SC进行索引以输出特定绑定资源的状态。
示例30包括示例28-29的主题,其中可执行计算机程序指令进一步使一个或多个处理器响应于SBTO表示DSAT内的缓存命中并且确定是否定的而进行以下操作:分配多个SC条目的新SC条目;以及向存储器子系统发出对特定绑定资源的状态的请求。
示例31包括示例28-30的主题,其中缓存结构进一步包括绑定表缓存(BTC),绑定表缓存(BTC)包括多个BTC条目,每个BTC条目包含从绑定表流缓存的状态偏移的缓存行,其中BTC包括由SBTO的部分标记的CAM,并且其中该方法进一步包括响应于SBTO表示DSAT内的缓存未命中,分配多个DSAT条目中的新DSAT条目。
示例32包括示例28-31的主题,其中SC包括由状态偏移字段标记的CAM,并且其中该可执行计算机程序指令进一步使得一个或多个处理器响应于SBTO表示BTC内的缓存命中而进行以下操作:使得BTC从存储在多个BTC条目中的、与SBTO的部分匹配的特定BTC条目内的状态偏移的缓存行返回与SBTO相关联的状态偏移;以及试图基于该状态偏移来定位SC内的特定绑定资源的状态。
示例33包括示例28-32的主题,其中缓存结构进一步包括乱序(OOO)跟踪表,该乱序(OOO)跟踪表包括多个跟踪条目,每个跟踪条目包含指向多个BTC条目中的特定BTC条目的指针和表示包含在该特定BTC条目内的状态偏移的缓存行中的选择器的偏移,并且其中该可执行计算机程序指令进一步使得一个或多个处理器响应于SBTO表示BTC内的缓存未命中而进行以下操作:分配多个BTC条目中的新BTC条目;向存储器子系统发出对与新BTC条目相关联的状态偏移的缓存行的请求;以及通过分配多个跟踪条目中的新未决跟踪条目来促进对存储器子系统的未完成请求的乱序处理。
示例34包括示例28-33的主题,其中共享功能包括纹理采样器。
一些实施例涉及示例35,该示例35包括计算机系统,该计算机系统包括示例1-7中任一项的中央处理单元和GPU。
一些实施例涉及示例36,示例22包括一种设备,该设备实现或执行如示例8-14中的任一项的方法。
示例37包括至少一种机器可读介质,该机器可读介质包括多条指令,这些指令当在计算设备上被执行时用于实现或执行任何前述示例中所述的方法或实现任何前述示例中所述的设备。
示例38包括一种设备,该设备包括用于执行如示例8-14中任一项中所述的方法的装置。
附图以及前述描述给出了实施例的示例。本领域技术人员将理解,所描述的要素中的一个或多个可以很好地组合成单个功能要素。或者,某些要素可以被拆分成多个功能要素。可将来自一个实施例的要素添加到另一实施例。例如,可改变本文中所描述的过程的顺序,并且本文中所描述的过程的顺序不限于本文中所描述的方式。而且,任何流程图的动作都不必以所示的顺序来实现;也不一定需要执行所有这些动作。此外,不依赖于其他动作的那些动作也可与其他动作并行地执行。各实施例的范围绝非由这些特定示例限制。众多变体(无论是否在说明书中明确地给出)都是可能的,这些变体诸如,结构、尺度以及材料的使用方面的差异。实施例的范围至少与由所附权利要求书给出的范围一样广泛。
Claims (20)
1.一种图形处理单元GPU,包括:
三维3D管线,所述3D管线能操作用于执行3D操作;
子核心,所述子核心能操作用于维护缓存结构,所述缓存结构包括(i)状态缓存SC,所述状态缓存SC具有多个SC条目,每个SC条目包含绑定资源的状态,以及(ii)直接状态访问表DSAT,所述直接状态访问表DSAT具有多个DSAT条目,每个DSAT条目包含表示到所述SC的索引的状态位置标识符SLID,其中,所述DSAT包括由表示与所述3D管线相关联的绑定表流的条目地址的状态绑定表偏移SBTO值标记并且被存储在与所述GPU相关联的存储器子系统内的内容可寻址存储器CAM;以及
共享功能,所述共享功能能操作用于向所述缓存结构发出对由所述共享功能访问的特定绑定资源的状态的请求,其中所述请求包括指示指向所述绑定表流内的条目的SBTO的信息;以及
其中响应于所述请求,所述缓存结构能操作用于作出关于基于所述SBTO在对所述缓存结构的单个访问期间、所述特定绑定资源的状态是否存在于所述缓存结构内的确定。
2.如权利要求1所述的GPU,其中,响应于所述确定是肯定的,所述DSAT能操作用于使得所述SC通过基于所述多个DSAT条目中匹配所述SBTO的特定DSAT条目的SLID来对所述SC进行索引以输出所述特定绑定资源的状态。
3.如权利要求1所述的GPU,其中,响应于所述SBTO表示所述DSAT内的缓存命中且所述确定是否定的,所述SC能操作用于分配所述多个SC条目中的新SC条目并向所述存储器子系统发出对所述特定绑定资源的状态的请求。
4.如权利要求1-3中任一项所述的GPU,其中,所述缓存结构进一步包括绑定表缓存BTC,所述绑定表缓存BTC包括多个BTC条目,每个BTC条目包含从所述绑定表流缓存的状态偏移的缓存行,其中所述BTC包括由所述SBTO的部分标记的CAM,并且其中响应于所述SBTO表示所述DSAT内的缓存未命中,所述DSAT进一步能操作用于分配所述多个DSAT条目中的新DSAT条目。
5.如权利要求4所述的GPU,其中,所述SC包括由状态偏移字段标记的CAM,并且其中响应于所述SBTO表示所述BTC内的缓存命中,所述DSAT进一步能操作用于使得所述BTC从存储在所述多个BTC条目中的、与所述SBTO的部分匹配的特定BTC条目内的状态偏移的缓存行返回与所述SBTO相关联的状态偏移,并且试图基于所述状态偏移来定位所述SC内的所述特定绑定资源的状态。
6.如权利要求4所述的GPU,其中,所述缓存结构进一步包括乱序OOO跟踪表,所述乱序OOO跟踪表包括多个跟踪条目,每个跟踪条目包含指向所述多个BTC条目中的特定BTC条目的指针和表示包含在所述特定BTC条目内的状态偏移的所述缓存行中的选择器的偏移,并且其中响应于所述SBTO表示所述BTC内的缓存未命中,所述BTC能操作用于:
分配所述多个BTC条目中的新BTC条目;
向所述存储器子系统发出对与所述新BTC条目相关联的状态偏移的缓存行的请求;以及
通过使得所述OOO跟踪表分配所述多个跟踪条目中的新未决跟踪条目来促进对所述存储器子系统的未完成请求的乱序处理。
7.如权利要求1-3中任一项所述的GPU,其中所述共享功能包括纹理采样器。
8.一种方法,包括:
在图形处理单元GPU的子核心内本地地维护缓存结构,所述缓存结构包括(i)状态缓存SC,所述状态缓存SC具有多个SC条目,每个SC条目包含绑定资源的状态,以及(ii)直接状态访问表DSAT,所述直接状态访问表DSAT具有多个DSAT条目,每个DSAT条目包含表示到所述SC的索引的状态位置标识符SLID,其中,所述DSAT包括由表示与所述GPU的三维3D管线相关联的绑定表流的条目地址的状态绑定表偏移SBTO值标记并且被存储在与所述GPU相关联的存储器子系统内的内容可寻址存储器CAM;
接收对由所述3D管线的共享功能访问的特定绑定资源的状态的请求,其中所述请求包括指示指向所述绑定表流内的条目的SBTO的信息;以及
基于所述SBTO来确定在对所述缓存结构的单个访问期间、所述特定绑定资源的状态是否存在于所述缓存结构内。
9.如权利要求8所述的方法,进一步包括响应于所述确定是肯定的,使得所述SC通过基于所述多个DSAT条目中匹配所述SBTO的特定DSAT条目的SLID来对所述SC进行索引以输出所述特定绑定资源的状态。
10.如权利要求8所述的方法,进一步包括响应于所述SBTO表示所述DSAT内的缓存命中并且所述确定是否定的而进行以下操作:
分配所述多个SC条目的新SC条目;以及
向所述存储器子系统发出对所述特定绑定资源的状态的请求。
11.如权利要求8-10中任一项所述方法,其中,所述缓存结构进一步包括绑定表缓存BTC,所述绑定表缓存BTC包括多个BTC条目,每个BTC条目包含从所述绑定表流缓存的状态偏移的缓存行,其中所述BTC包括由所述SBTO的部分标记的CAM,并且其中所述方法进一步包括响应于所述SBTO表示所述DSAT内的缓存未命中而分配所述多个DSAT条目中的新DSAT条目。
12.如权利要求11所述的方法,其中,所述SC包括由状态偏移字段标记的CAM,并且其中所述方法进一步包括响应于所述SBTO表示所述BTC内的缓存命中而进行以下操作:
使得所述BTC从存储在所述多个BTC条目中的、与所述SBTO的部分匹配的特定BTC条目内的状态偏移的缓存行返回与所述SBTO相关联的状态偏移;以及
试图基于所述状态偏移来定位所述SC内的所述特定绑定资源的状态。
13.如权利要求11所述的方法,其中,所述缓存结构进一步包括乱序OOO跟踪表,所述乱序OOO跟踪表包括多个跟踪条目,每个跟踪条目包含指向所述多个BTC条目中的特定BTC条目的指针和表示包含在所述特定BTC条目内的状态偏移的所述缓存行中的选择器的偏移,并且其中所述方法进一步包括响应于所述SBTO表示所述BTC内的缓存未命中而进行以下操作:
分配所述多个BTC条目中的新BTC条目;
向所述存储器子系统发出对与所述新BTC条目相关联的状态偏移的缓存行的请求;以及
通过分配所述多个跟踪条目中的新未决跟踪条目来促进对所述存储器子系统的未完成请求的乱序处理。
14.如权利要求8-10中任一项所述的方法,其中所述共享功能包括纹理采样器。
15.一种用于图形处理单元的三维3D管线的共享功能的图形资源缓存,所述图形资源缓存包括:
状态缓存SC,所述状态缓存SC具有多个SC条目,每个SC条目包含绑定资源的状态;以及
直接状态访问表DSAT,所述直接状态访问表DSAT具有多个DSAT条目,每个DSAT条目包含表示到所述SC的索引的状态位置标识符SLID,其中,所述DSAT包括由表示与所述3D管线相关联的绑定表流的条目地址的状态绑定表偏移SBTO值标记并且被存储在与所述GPU相关联的存储器子系统内的内容可寻址存储器CAM;
其中,响应于对由所述共享功能访问的特定绑定资源的状态的请求,其中所述请求包括指示指向所述绑定表流内的条目的SBTO的信息,所述DSAT能操作用于作出关于基于所述SBTO在对所述图形资源缓存的单个访问期间、所述特定绑定资源的状态是否存在于所述图形资源缓存内的确定。
16.如权利要求15所述的图形资源缓存,其中,响应于所述确定是肯定的,所述DSAT进一步能操作用于使得所述SC通过基于所述多个DSAT条目中匹配所述SBTO的特定DSAT条目的SLID来对所述SC进行索引以输出所述特定绑定资源的状态。
17.如权利要求15所述的图形资源缓存,其中,响应于所述SBTO表示所述DSAT内的缓存命中且所述确定是否定的,所述SC能操作用于分配所述多个SC条目中的新SC条目并向所述存储器子系统发出对所述特定绑定资源的状态的请求。
18.如权利要求15-17中任一项所述的图形资源缓存,进一步包括绑定表缓存BTC,所述绑定表缓存BTC包括多个BTC条目,每个BTC条目包含从所述绑定表流缓存的状态偏移的缓存行,其中所述BTC包括由所述SBTO的部分标记的CAM,并且其中响应于所述SBTO表示所述DSAT内的缓存未命中,所述DSAT进一步能操作用于分配所述多个DSAT条目中的新DSAT条目。
19.如权利要求18所述的图形资源缓存,其中,所述SC包括由状态偏移字段标记的CAM,并且其中响应于所述SBTO表示所述BTC内的缓存命中,所述DSAT进一步能操作用于使得所述BTC从存储在所述多个BTC条目中的、与所述SBTO的部分匹配的特定BTC条目内的状态偏移的所述缓存行返回与所述SBTO相关联的状态偏移,并且试图基于所述状态偏移来定位所述SC内的所述特定绑定资源的状态。
20.如权利要求15-17中任一项所述的图形资源缓存,进一步包括乱序OOO跟踪表,所述乱序OOO跟踪表包括多个跟踪条目,每个跟踪条目包含指向所述多个BTC条目中的特定BTC条目的指针和表示包含在所述特定BTC条目内的状态偏移的所述缓存行中的选择器的偏移,并且其中响应于所述SBTO表示所述BTC内的缓存未命中,所述BTC能操作用于:
分配所述多个BTC条目中的新BTC条目;
向所述存储器子系统发出对与所述新BTC条目相关联的状态偏移的缓存行的请求;以及
通过使得所述OOO跟踪表分配所述多个跟踪条目中的新未决跟踪条目来促进对所述存储器子系统的未完成请求的乱序处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/484,060 | 2021-09-24 | ||
US17/484,060 US20230094696A1 (en) | 2021-09-24 | 2021-09-24 | Efficient caching of resource state for a shared function of a three-dimensional pipeline of a graphics processing unit |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858411A true CN115858411A (zh) | 2023-03-28 |
Family
ID=85661057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211157793.9A Pending CN115858411A (zh) | 2021-09-24 | 2022-09-22 | 图形处理单元三维管线的共享功能的资源状态的高效缓存 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230094696A1 (zh) |
CN (1) | CN115858411A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130663A (zh) * | 2023-09-19 | 2023-11-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
-
2021
- 2021-09-24 US US17/484,060 patent/US20230094696A1/en active Pending
-
2022
- 2022-09-22 CN CN202211157793.9A patent/CN115858411A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130663A (zh) * | 2023-09-19 | 2023-11-28 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
CN117130663B (zh) * | 2023-09-19 | 2024-06-11 | 摩尔线程智能科技(北京)有限责任公司 | 一种指令读取方法及l2指令缓存、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20230094696A1 (en) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113052952A (zh) | 用于使用α值来改善光线追踪效率的装置和方法 | |
CN112130752A (zh) | 共享本地存储器读取合并和多播返回 | |
US11151683B2 (en) | Use of inner coverage information by a conservative rasterization pipeline to enable EarlyZ for conservative rasterization | |
EP3923137A1 (en) | Thread modification to reduce command conversion latency | |
KR20210081230A (ko) | 공유 로컬 메모리를 파티셔닝하는 메커니즘 | |
CN113448759A (zh) | Gpu应用的高速恢复 | |
US11556480B2 (en) | Systems and methods in a graphics environment for providing shared virtual memory addressing support for a host system | |
EP4202643A1 (en) | Kernel source adaptation for execution on a graphics processing unit | |
CN113052746A (zh) | 用于多适配器编码的装置和方法 | |
CN112801849A (zh) | 用于调度线程顺序以改进高速缓存效率的方法和设备 | |
KR20210081232A (ko) | 페이지 테이블 매핑 메커니즘 | |
CN113052747A (zh) | 用于基于量化的会聚方向的光线分类的装置和方法 | |
CN116069459A (zh) | 使用可变命令列表的可编程gpu命令缓冲器 | |
EP4009168B1 (en) | Efficient memory space sharing of resources for cloud rendering | |
CN113032159A (zh) | 编译器辅助的寄存器堆写入减少 | |
CN113095996A (zh) | 动态常量更新机制 | |
CN115858411A (zh) | 图形处理单元三维管线的共享功能的资源状态的高效缓存 | |
CN116071216A (zh) | 读取采样器反馈技术 | |
CN116341674A (zh) | 用于ai和机器学习加速的二进制扩展 | |
CN117561542A (zh) | 用于通用可消耗压缩的统一无状态压缩系统 | |
CN116071489A (zh) | 用于基于对先前帧的分析将帧分割成多个命令缓冲器提交的3d图形驱动器 | |
CN115205098A (zh) | 高性能常量高速缓存和常量访问机制 | |
CN114518943A (zh) | 多片图形处理单元 | |
CN115131193A (zh) | 用于减少处理器中的等待时间的曲面细分重新分配 | |
US10929134B2 (en) | Execution unit accelerator |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |