CN115861032A - 图形处理单元纹理采样器操作的无序执行 - Google Patents
图形处理单元纹理采样器操作的无序执行 Download PDFInfo
- Publication number
- CN115861032A CN115861032A CN202211022141.4A CN202211022141A CN115861032A CN 115861032 A CN115861032 A CN 115861032A CN 202211022141 A CN202211022141 A CN 202211022141A CN 115861032 A CN115861032 A CN 115861032A
- Authority
- CN
- China
- Prior art keywords
- queue
- texture sampler
- queues
- transactions
- data
- 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 abstract description 167
- 238000000034 method Methods 0.000 claims description 75
- 230000008569 process Effects 0.000 claims description 42
- 230000015654 memory Effects 0.000 description 165
- 230000006870 function Effects 0.000 description 73
- 239000000758 substrate Substances 0.000 description 31
- 238000010586 diagram Methods 0.000 description 30
- 239000000872 buffer Substances 0.000 description 29
- 239000004744 fabric Substances 0.000 description 24
- 238000004891 communication Methods 0.000 description 23
- 238000013461 design Methods 0.000 description 22
- 238000007667 floating Methods 0.000 description 22
- 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
- 238000004088 simulation Methods 0.000 description 10
- 230000001133 acceleration Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000012913 prioritisation Methods 0.000 description 9
- 238000005070 sampling Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 7
- 238000009877 rendering Methods 0.000 description 7
- 229910052710 silicon Inorganic materials 0.000 description 7
- 239000010703 silicon Substances 0.000 description 7
- 238000003491 array Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 6
- 230000000670 limiting effect Effects 0.000 description 6
- 238000010801 machine learning Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 238000004806 packaging method and process Methods 0.000 description 6
- 239000004065 semiconductor Substances 0.000 description 6
- 208000019300 CLIPPERS Diseases 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 5
- 208000021930 chronic lymphocytic inflammation with pontine perivascular enhancement responsive to steroids Diseases 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 239000000523 sample Substances 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000014616 translation Effects 0.000 description 5
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 4
- 230000002829 reductive effect 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
- 241001522296 Erithacus rubecula Species 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000001965 increasing effect Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 239000004593 Epoxy Substances 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000739 chaotic effect Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000001360 synchronised 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
- 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
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000010276 construction Methods 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
- 239000000284 extract Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000000446 fuel Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction 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
- 239000002245 particle Substances 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 239000007787 solid 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
- 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
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
图形处理单元纹理采样器操作的无序执行。本文中描述的实施例一般针对促进GPU纹理采样器操作的无序执行。一种GPU的纹理采样器,其维护:(i)延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及(ii)多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息。通过利用延迟队列和VC队列来促进纹理采样器操作的无序处理。例如,在事务处理间隔期间,对于与VC队列中的每个VC队列相关联的事务,可以确定高速缓存中的数据的可用性。可以基于确定的数据的可用性来选择VC队列。然后可以处理与选择的VC队列的头部相关联的事务。
Description
技术领域
本文中所描述的实施例一般地涉及图形处理单元(GPU)的领域,并且更特别地涉及GPU纹理采样器操作的无序执行。
背景技术
纹理采样器操作在三维(3D)图形中被大量使用,并且通常这样的操作的延迟(latency)对整体工作负载性能有显著影响。传统上,由于纹理采样器操作的长度可变性,纹理采样器单元实现有序流水线(pipeline),因此使得该流水线对系统延迟增加非常敏感。随着GPU的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是图示根据实施例的纹理采样器的各种功能单元的框图。
图15是图示根据实施例的事务间隔处理的流程图。
图16是图示根据实施例的虚拟通道(VC)队列选择处理的流程图。
图17是图示根据实施例的VC队列优先化(prioritization)处理的流程图。
具体实施方式
本文中所描述的实施例一般地针对促进GPU纹理采样器操作的无序执行。先前的解决方案已经主要集中于增加纹理采样器读取操作的延迟覆盖。这主要通过增加未决(pending)高速缓存读取操作的存储同时仍然维持严格的操作的次序来实现。纹理采样器单元实现有序流水线的主要原因是与操作长度的可变性相关联的复杂性。例如,单纹理采样器单指令多数据(SIMD)纹理采样器操作(例如,SIMD16采样器操作)可能仅需要2个事务进入到1级(L1)高速缓存中,或者其可能需要多于100个事务进入到L1高速缓存中。同时,给定的纹理采样器操作不能被“标记”为完成,直到其所有的相关联的事务完成。
先前的解决方案的有效性已经受到限制有两个主要原因。首先,先前的解决方案不扩展,因为L1高速缓存大小本身成为限制因素(limiter)(例如,所有条目未决),或者系统中的线程的数量成为限制因素。第二,通过增加诸如L1纹理采样器高速缓存和/或系统中的线程的数量的资产来解决扩展问题在成本(例如,面积增加)方面变得令人望而却步。
因此,本文中所述实施例寻求通过为存储器读取操作提供无序机制来提高纹理采样器操作的延迟敏感性。如下面参考图14进一步描述的,无序方案可以涉及利用虚拟通道(VC)的集合,一旦用于纹理采样器操作的数据出现在L1高速缓存中,就在L1高速缓存的输出端处对该虚拟通道的集合进行仲裁。
根据一个实施例,在GPU的纹理采样器中维护延迟队列和多个VC队列。延迟队列可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,并且多个VC队列每个可操作以存储关于每次相应的单个纹理采样器操作的事务的信息。在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的高速缓存中的数据的可用性;基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及处理与所选择的VC队列的头部相关联的事务。
由本文中所描述的各种实施例提供了许多优点和效率,包括3D工作负载中的显著性能改进,包括基准和游戏两者。经验数据和仿真表明,以帧级别的性能改进在5-10%的范围内。
系统概况
图1是根据实施例的处理系统100的框图。处理系统100可以被用在单处理器桌面系统、多处理器工作站系统或具有大量的处理器102或处理器核107的服务器系统中。在一个实施例中,处理系统100是并入片上系统(SoC)集成电路中的处理平台,用于在移动、手持式或诸如在具有到局域网或广域网的有线或无线连接性的物联网(IoT)设备内的嵌入式设备中使用。
在一个实施例中,处理系统100可以包括如下各项、与如下各项耦合或集成在如下各项中:基于服务器的游戏平台;游戏控制台,包括游戏和媒体控制台;移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,处理系统100是移动电话、智能电话、平板计算设备或移动互联网连接设备的一部分,所述移动互联网连接设备诸如具有低内部存储容量的膝上型计算机。处理系统100还可以包括如下各项、与如下各项耦合或集成在如下各项中:可穿戴设备,诸如智能手表可穿戴设备;借助增强现实(AR)或虚拟现实(VR)功能增强的智能眼镜或服装,以提供视觉、音频或触觉输出以补充现实世界的视觉、音频或触觉体验,或以其他方式提供文本、音频、图形、视频、全息图像或视频或触觉反馈;其他增强现实(AR)设备;或其他虚拟现实(VR)设备。在一些实施例中,处理系统100包括电视或机顶盒设备或者是电视或机顶盒设备的一部分。在一个实施例中,处理系统100可以包括如下各项、与如下各项耦合或集成在如下各项中:自动驾驶交通工具,诸如公共汽车、牵引拖车、汽车、电动或电力自行车、飞机或滑翔机(或其任何组合)。自动驾驶交通工具可以使用处理系统100来处理交通工具周围感测到的环境。
在一些实施例中,一个或多个处理器102各自包括一个或多个处理器核107以处理指令,当执行所述指令时,执行针对系统或用户软件的操作。在一些实施例中,一个或多个处理器核107中的至少一个被配置成处理特定指令集109。在一些实施例中,指令集109可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。一个或多个处理器核107可以处理不同的指令集109,其可以包括用于促进仿真其他指令集的指令。处理器核107还可以包括其他处理设备,诸如数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓存存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,高速缓存存储器在处理器102的各种组件之间共享。在一些实施例中,处理器102还使用外部高速缓存(例如,3级(L3)高速缓存或末级高速缓存(LLC))(未示出),其可以使用已知的高速缓存一致性技术在处理器核107之间共享。寄存器堆106可以另外包括在处理器102中并且可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器102的设计。
在一些实施例中,一个或多个处理器102与一个或多个接口总线110耦合以在处理器102和处理系统100中的其他组件之间传输通信信号,诸如地址、数据或控制信号。在一个实施例中,接口总线110可以是处理器总线,诸如直接媒体接口(DMI)总线的一个版本。然而,处理器总线不限于DMI总线,并且可以包括一个或多个外围组件互连总线(例如PCI、PCIexpress)、存储器总线或其他类型的接口总线。在一个实施例中,(一个或多个)处理器102包括集成存储器控制器116和平台控制器中枢130。存储器控制器116促进存储器设备和处理系统100的其他组件之间的通信,而平台控制器中枢(PCH)130经由本地I/O总线提供到I/O设备的连接。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存存储器设备、相变存储器设备或具有合适性能以用作进程存储器的一些其他存储器设备。在一个实施例中,存储器设备120可以作为用于处理系统100的系统存储器来操作,以存储数据122和指令121,以用于在一个或多个处理器102执行应用或进程时使用。存储器控制器116还与可选的外部图形处理器118耦合,该外部图形处理器118可以与处理器102中的一个或多个图形处理器108通信以执行图形和媒体操作。在一些实施例中,图形、媒体和或计算操作可以由加速器112辅助,加速器112是可以被配置成执行图形、媒体或计算操作的专门的集合的协处理器。例如,在一个实施例中,加速器112是用于优化机器学习或计算操作的矩阵乘法加速器。在一个实施例中,加速器112是可以被用于与图形处理器108协同执行光线跟踪操作的光线跟踪加速器。在一个实施例中,外部加速器119可以被用于代替加速器112或与加速器112协同使用。
在一些实施例中,显示设备111可以连接到(一个或多个)处理器102。显示设备111可以是如在移动电子设备或膝上型设备或经由显示接口(例如DisplayPort等)附接的外部显示设备中的内部显示设备中的一个或多个。在一个实施例中,显示设备111可以是头戴式显示器(HMD),诸如用于在虚拟现实(VR)应用或增强现实(AR)应用中使用的立体显示设备。
在一些实施例中,平台控制器中枢130使得外围设备能够经由高速I/O总线连接到存储设备120和处理器102。I/O外围设备包括但不限于音频控制器146、网络控制器134、固件接口128、无线收发器126、触摸传感器125、数据存储设备124(例如,非易失性存储器、易失性存储器、硬盘驱动器、闪存、NAND、3D NAND、3D XPoint等)。数据存储设备124可以经由存储接口(例如,SATA)或者经由外围总线,诸如外围组件互连总线(例如,PCI、PCIexpress)来连接。触摸传感器125可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器126可以是Wi-Fi收发器、蓝牙收发器或移动网络收发器,诸如3G、4G、5G或长期演进(LTE)收发器。固件接口128使能实现与系统固件的通信,并且可以是例如统一可扩展固件接口(UEFI)。网络控制器134可以使能实现到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线110耦合。在一个实施例中,音频控制器146是多通道高清音频控制器。在一个实施例中,处理系统100包括可选的传统I/O控制器140,以用于将传统(例如,个人系统2(PS/2))设备耦合到系统。平台控制器中枢130还可以连接到一个或多个通用串行总线(USB)控制器142,该通用串行总线(USB)控制器142连接输入设备,例如键盘和鼠标143组合、相机144或其他USB输入设备。
将理解,所示的处理系统100是示例性而非限制性的,因为也可以使用不同配置的其他类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可以被集成到分立的外部图形处理器中,所述外部图形处理器诸如外部图形处理器118。在一个实施例中,平台控制器中枢130和/或存储器控制器116可以在一个或多个处理器102的外部。例如,处理系统100可以包括外部存储器控制器116和平台控制器中枢130,其可以被配置为与(一个或多个)处理器102通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。
例如,可以使用电路板(“滑板(sleds)”),其上放置诸如CPU、存储器和其他组件的组件被设计用于提高热性能。在一些示例中,诸如处理器的处理组件位于滑板的顶侧上,而诸如DIMM的近存储器位于滑板的底侧上。由于由这种设计提供的增强的气流,所述组件可以在比典型系统中更高的频率和功率水平下操作,从而提高了性能。此外,滑板被配置成与机架中的电源和数据通信线缆盲配(blindly mate),从而增强它们被快速移除、升级、重新安装和/或替换的能力。类似地,位于滑板上的各个组件,诸如处理器、加速器、存储器和数据存储驱动器,由于它们彼此的间距增加,因此被配置成易于升级。在说明性实施例中,组件另外包括硬件证明特征来证明它们的真实性。
数据中心可以利用支持多个其他网络架构(包括以太网和全向路径(Omni-Path))的单个网络架构(“结构”)。滑板可以经由光纤耦合到交换机,这提供了比典型的双绞线布线(例如,5类、5e类、6类等)更高的带宽和更低的延迟。由于高带宽、低延迟的互连和网络架构,数据中心可以在使用中汇集(pool)资源,诸如存储器、加速器(例如,GPU、图形加速器、FPGA、ASIC、神经网络和/或人工智能加速器等),以及被物理地分解(disaggregated)的数据存储驱动器,并在需要的基础上将它们提供给计算资源(例如,处理器),使得计算资源能够访问汇集的资源,就像它们是本地的一样。
电源供应或电源可以向处理系统100或本文中所述的任何组件或系统提供电压和/或电流。在一个示例中,电源供应包括AC到DC(交流到直流)适配器,以插入到壁装插座中。这样的AC电源可以是可再生能源(例如太阳能)电源。在一个示例中,电源包括DC电源,诸如外部AC到DC转换器。在一个示例中,电源或电源供应包括无线充电硬件,以经由接近充电场来充电。在一个示例中,电源可以包括内部电池、交流电源供应、基于运动的电源供应、太阳能电源供应或燃料电池源。
图2A-2D图示了由本文中所述实施例提供的计算系统和图形处理器。图2A-2D的具有与本文中任何其他图的元件相同的参考编号(或名称)的元件可以以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。
图2A是具有一个或多个处理器核202A-202N、集成存储器控制器214和集成图形处理器208的处理器200的实施例的框图。处理器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 express总线。系统代理核210为各种处理器组件提供管理功能。在一些实施例中,系统代理核210包括一个或多个集成存储器控制器214,以管理对各种外部存储器设备(未示出)的访问。
在一些实施例中,处理器核202A-202N中的一个或多个包括对同时多线程的支持。在这样的实施例中,系统代理核210包括用于在多线程处理期间协调和操作核202A-202N的组件。系统代理核210可以另外包括功率控制单元(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在指令集架构(ISA)方面是异构的,其中处理器核202A-202N中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核202A-202N在微架构方面是异构的,其中具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦合。在一个实施例中,处理器核202A-202N在计算能力方面是异构的。此外,处理器200可以在一个或多个芯片上实现,或者被实现为除了其他组件之外还具有图示的组件的SoC集成电路。
图2B是根据本文中描述的一些实施例的图形处理器核219的硬件逻辑的框图。图2B的具有与本文中任何其他图的元件相同的参考编号(或名称)的元件可以以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。图形处理器核219,有时称为核片(core slice),可以是模块化图形处理器内的一个或多个图形核。图形处理器核219是一个图形核片的示例,并且如本文中所述的图形处理器可以包括基于目标功率和性能包络的多个图形核片。每个图形处理器核219可以包括与多个子核221A-221F(也称为子片)耦合的固定功能块230,其包括通用和固定功能逻辑的模块化块。
在一些实施例中,固定功能块230包括几何/固定功能流水线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内的固定功能设备(诸如相机成像流水线)的通信,并且使得能够使用和/或实现可以在SoC内的图形处理器核219和CPU之间共享的全局存储器原子。SoC接口232还可以实现对图形处理器核219的电源管理控制,并启用图形处理器核219的时钟域和SoC内的其他时钟域之间的接口。在一个实施例中,SoC接口232使得能够从命令流送器和全局线程分派器接收命令缓冲器,所述命令流送器和全局线程分派器被配置成向图形处理器内的一个或多个图形核中的每个提供命令和指令。当要执行媒体操作时,可以将命令和指令分派给媒体流水线234,或者当要执行图形处理操作时,可以将命令和指令分派给几何和固定功能流水线(例如,几何和固定功能流水线231、几何和固定功能流水线237)。
图形微控制器233可以被配置成执行针对图形处理器核219的各种调度和管理任务。在一个实施例中,图形微控制器233可以在子核221A-221F内的执行单元(EU)阵列222A-222F、224A-224F内的各种图形并行引擎上执行图形和/或计算工作负载调度。在该调度模型中,在包括图形处理器核219的SoC的CPU核上执行的主机软件可以提交多个图形处理器门铃之一的工作负载,这在适当的图形引擎上调用调度操作。调度操作包括确定接下来运行哪个工作负载、向命令流送器提交工作负载、抢占引擎上运行的现有工作负载、监视工作负载的进度、以及当工作负载完成时通知主机软件。在一个实施例中,图形微控制器233还可以促进图形处理器核219的低功率或空闲状态,向图形处理器核219提供独立于系统上的操作系统和/或图形驱动软件跨低功率状态转换保存和恢复图形处理器核219内的寄存器的能力。
图形处理器核219可以具有多于或少于所图示的子核221A-221F,多达N个模块化子核。对于N个子核的每个集合,图形处理器核219还可以包括共享功能逻辑235、共享和/或高速缓存存储器236、几何/固定功能流水线237以及附加的固定功能逻辑238,以加速各种图形和计算处理操作。共享功能逻辑235可以包括与图4的共享功能逻辑420相关联的逻辑单元(例如,采样器、数学和/或线程间通信逻辑),其可以由图形处理器核219内的每N个子核共享。共享和/或高速缓存存储器236可以是图形处理器核219内的N个子核221A-221F的集合的末级高速缓存,并且还可以用作可由多个子核访问的共享存储器。几何/固定功能流水线237可以代替几何/固定功能流水线231被包括在固定功能块230内,并且可以包括相同或相似的逻辑单元。
在一个实施例中,图形处理器核219包括附加固定功能逻辑238,其可以包括供图形处理器核219使用的各种固定功能加速逻辑。在一个实施例中,附加固定功能逻辑238包括用于在仅位置着色(shading)中使用的附加几何流水线。在仅位置着色中,存在两个几何流水线,即几何/固定功能流水线238、231内的完整几何流水线,以及剔除流水线,其是可以被包括在附加固定功能逻辑238内的附加几何流水线。在一个实施例中,剔除流水线是完整几何流水线的精简版本。完整流水线和剔除流水线可以执行同一应用的不同实例,每个实例具有分离的上下文。仅位置着色可以隐藏丢弃的三角形的长剔除运行(long cull run),从而使得能够在一些情况下更早地完成着色。例如并且在一个实施例中,附加固定功能逻辑238内的剔除流水线逻辑可以与主应用并行执行位置着色器,并且通常比完整流水线更快地生成关键结果,因为剔除流水线仅取出和着色顶点的位置属性,而不执行光栅化和将像素渲染到帧缓冲器。剔除流水线可以使用所生成的关键结果来计算所有三角形的可见性信息,而不考虑那些三角形是否被剔除。完整流水线(其在这种情况下可以被称为重放流水线)可以使用可见性信息来跳过剔除的三角形,以仅对最终被传递到光栅化阶段的可见三角形进行着色。
在一个实施例中,附加固定功能逻辑238还可以包括机器学习加速逻辑,诸如固定功能矩阵乘法逻辑,以用于包括优化机器学习训练或推理的实现。
在每个图形子核221A-221F内包括执行资源的集合,其可以用于响应于图形流水线、媒体流水线或着色器程序的请求而执行图形、媒体和计算操作。图形子核221A-221F包括多个EU阵列222A-222F、224A-224F、线程分派和线程间通信(TD/IC)逻辑223A-223F、3D(例如,纹理)采样器225A-225F、媒体采样器226A-226F、着色器处理器227A-227F和共享本地存储器(SLM)228A-228F。EU阵列222A-222F、224A-224F各自包括多个执行单元,所述执行单元是通用图形处理单元,其能够执行浮点和整数/定点逻辑运算以服务图形、媒体或计算操作,包括图形、媒体或计算着色器/GPGPU程序。TD/IC逻辑223A-223F为子核内的执行单元执行本地线程分派和线程控制操作,并促进在子核的执行单元上执行的线程之间的通信。3D采样器225A-225F可以将纹理或其他3D图形相关数据读入到存储器中。3D采样器可以基于配置的采样状态和与给定纹理相关联的纹理格式来不同地读取纹理数据。媒体采样器226A-226F可以基于与媒体数据相关联的类型和格式来执行类似的读取操作。在一个实施例中,每个图形子核221A-221F可以替代地包括统一的3D和媒体采样器。在子核221A-221F中的每个内的执行单元上执行的线程可以利用每个子核内的共享本地存储器228A-228F,以使得在线程组内执行的线程能够使用片上存储器的公共池来执行。
图2C图示了包括布置在多核组240A-240N中的图形处理资源的专用集合的图形处理单元(GPU)239。图示了多核组240A的细节。多核组240B-240N可以配备有相同或相似的图形处理资源集合。
如所示,多核组240A可以包括图形核243的集合、张量核244的集合和光线跟踪核245的集合。调度器/分派器241调度和分派图形线程以在各种核243、244、245上执行。在一个实施例中,张量核244是稀疏张量核,其具有使得能够绕过(bypass)具有零值输入的乘法运算的硬件。
寄存器堆242的集合可以存储由核243、244、245在执行图形线程时使用的操作数值。这些可以包括例如用于存储整数值的整数寄存器、用于存储浮点值的浮点寄存器、用于存储打包数据元素(整数和/或浮点数据元素)的向量寄存器以及用于存储张量/矩阵值的块(tile)寄存器。在一个实施例中,块寄存器被实现为向量寄存器的组合集合。
一个或多个组合的1级(L1)高速缓存和共享存储单元247在每个多核组240A内本地地存储图形数据,诸如纹理数据、顶点数据、像素数据、光线数据、包围体数据等。一个或多个纹理单元247也可以被用于执行纹理操作,诸如纹理映射和采样。由多核组240A-240N的全部或子集共享的2级(L2)高速缓存253存储用于多个同时的图形线程的图形数据和/或指令。如所示,L2高速缓存253可以跨多个多核组240A-240N共享。一个或多个存储器控制器248将GPU 239耦合到存储器249,存储器249可以是系统存储器(例如,DRAM)和/或专用图形存储器(例如,GDDR6存储器)。
输入/输出(I/O)电路250将GPU 239耦合到一个或多个I/O设备252,诸如数字信号处理器(DSP)、网络控制器或用户输入设备。片上互连可以被用于将I/O设备252耦合到GPU239和存储器249。I/O电路250的一个或多个I/O存储器管理单元(IOMMU)251将I/O设备252直接耦合到存储器249。在一个实施例中,IOMMU 251管理多个页表的集合,以将虚拟地址映射到存储器249中的物理地址。在该实施例中,I/O设备252、(一个或多个)CPU 246和GPU239可以共享相同的虚拟地址空间。
在一个实现中,IOMMU 251支持虚拟化。在这种情况下,它可以管理第一个页表的集合以将客户/图形虚拟地址映射到客户/图形物理地址,并管理第二个页表的集合以将客户/图形物理地址映射到系统/主机物理地址(例如,存储器249内)。第一和第二个页表的集合中的每个的基地址可以被存储在控制寄存器中,并且在上下文切换时被换出(swappedout)(例如,使得新的上下文被配备有对相关页表的集合的访问)。虽然在图2C中未图示,但是核243、244、245和/或多核组240A-240N中的每个都可以包括转换后备缓冲器(TLB),以高速缓存客户虚拟到客户物理转换、客户物理到主机物理转换以及客户虚拟到主机物理转换。
在一个实施例中,CPU 246、GPU 239和I/O设备252被集成在单个半导体芯片和/或芯片封装上。存储器249可以被集成在同一芯片上,或者可以经由片外接口耦合到存储器控制器248。在一个实现中,存储器249包括GDDR6存储器,其与其他物理系统级存储器共享相同的虚拟地址空间,尽管本发明的基本原理不限于该特定实现。
在一个实施例中,张量核244包括多个专门设计用于执行矩阵运算的执行单元,矩阵运算是用于执行深度学习操作的基本计算操作。例如,同时矩阵乘法运算可以用于神经网络训练和推理。张量核244可以使用多种操作数精度来执行矩阵处理,包括单精度浮点(例如,32位)、半精度浮点(例如,16位)、整数字(16位)、字节(8位)和半字节(4位)。在一个实施例中,神经网络实现提取每个渲染场景的特征,从而潜在地组合来自多个帧的细节,以构造高质量的最终图像。
在深度学习实现中,可以调度并行矩阵乘法工作以在张量核244上执行。神经网络的训练特别地需要大量的矩阵点积运算。为了处理N×N×N矩阵乘法的内积公式,张量核244可以包括至少N个点积处理元件。在矩阵乘法开始之前,一个完整的矩阵被加载到块寄存器中,并且第二矩阵的至少一列在N个周期的每个周期被加载。每个周期,有N个点积被处理。
取决于特定实现,矩阵元素可以以不同精度存储,包括16位字、8位字节(例如,INT8)和4位半字节(例如,INT4)。可以为张量核244指定不同的精度模式,以确保最有效的精度用于不同的工作负载(例如,诸如可以容忍量化到字节和半字节的推理工作负载)。
在一个实施例中,光线跟踪核245加速实时光线跟踪和非实时光线跟踪实现两者的光线跟踪操作。特别地,光线跟踪核245包括光线遍历/相交电路,用于使用包围体层级(BVH)执行光线遍历,并标识包围在BVH体内的光线和图元(primitive)之间的相交。光线跟踪核245还可以包括用于执行深度测试和剔除的电路(例如,使用Z缓冲器或类似的布置)。在一个实现中,光线跟踪核245与本文中描述的图像去噪技术协同地执行遍历和相交操作,其中的至少一部分可以在张量核244上执行。例如,在一个实施例中,张量核244实现深度学习神经网络以对由光线跟踪核245生成的帧执行去噪。然而,(一个或多个)CPU 246、图形核243和/或光线跟踪核245也可以实现去噪和/或深度学习算法的全部或一部分。
此外,如上所述,可以采用分布式降噪的方法,其中GPU 239位于通过网络或高速互连耦合到其他计算设备的计算设备中。在该实施例中,互连的计算设备共享神经网络学习/训练数据,以提高整个系统以其来学习以对不同类型的图像帧和/或不同的图形应用执行去噪的速度。
在一个实施例中,光线跟踪核245处理所有BVH遍历和光线图元相交,从而避免(saving)图形核243因每条光线数千个指令而过载。在一个实施例中,每个光线跟踪核245包括用于执行边界框测试(例如,用于遍历操作)的第一个专用电路的集合和用于执行光线-三角形相交测试(例如,已被遍历的相交光线)的第二个专用电路的集合。因此,在一个实施例中,多核组240A可以简单地启动光线探头,并且光线跟踪核245独立地执行光线遍历和相交,并返回命中数据(例如,命中、未命中、多次命中等)到线程上下文。其他核243、244被释放以执行其他图形或计算工作,而光线跟踪核245执行遍历和相交操作。
在一个实施例中,每个光线跟踪核245包括用于执行BVH测试操作的遍历单元和执行光线-图元相交测试的相交单元。相交单元生成“命中”、“未命中”或“多次命中”响应,并将其提供给适当的线程。在遍历和相交操作期间,其他核(例如,图形核243和张量核244)的执行资源被释放以执行其他形式的图形工作。
在下面描述的一个特定实施例中,使用混合光栅化/光线跟踪方法,其中工作在图形核243和光线跟踪核245之间分配。
在一个实施例中,光线跟踪核245(和/或其他核243、244)包括对光线跟踪指令集的硬件支持,所述光线跟踪指令集诸如Microsoft的DirectX光线跟踪(DXR),其包括DispatchRays命令,以及光线生成、最近命中、任何命中和未命中着色器,其使能实现为每个对象分配唯一的着色器和纹理的集合。可以由光线跟踪核245、图形核243和张量核244支持的另一光线跟踪平台是Vulkan 1.1.85。然而,注意,本发明的基本原理不限于任何特定的光线跟踪ISA。
通常,各种核245、244、243可以支持光线跟踪指令集,其包括用于光线生成、最近命中、任何命中、光线-图元相交、每图元和分层边界框构造、未命中、访问和异常的指令/功能。更具体地,一个实施例包括光线跟踪指令以执行以下功能:
光线生成——可以针对每个像素、样本或其他用户定义的工作分配执行光线生成指令。
最近命中——可以执行最近命中指令,以定位场景内光线与图元的最近相交点。
任何命中——任何命中指令标识场景内光线和图元之间的多个交点,潜在地标识新的最近相交点。
相交——相交指令执行光线-图元相交测试并输出结果。
每图元边界框构造——该指令围绕给定的图元或图元的组构建边界框(例如,当构建新的BVH或其他加速数据结构时)。
未命中——指示光线未命中场景内的所有几何图形或场景的指定区域。
访问——指示光线将遍历的子体积。
异常——包括各种类型的异常处理器(例如,针对各种错误情况调用)。
在一个实施例中,光线跟踪核245可以适于加速通用计算操作,该通用计算操作可以使用类似于光线相交测试的计算技术来加速。可以提供计算框架,该计算框架使得着色器程序能够被编译成经由光线跟踪核执行通用计算操作的低级指令和/或图元。可以受益于在光线跟踪核245上执行的计算操作的示例性计算问题包括涉及坐标空间内的光束、波、光线或粒子传播的计算。可以相对于坐标空间内的几何形状或网格来计算与该传播相关联的交互。例如,与通过环境的电磁信号传播相关联的计算可以经由使用经由光线跟踪核执行的指令或图元来加速。由环境中的对象对信号的衍射和反射可以被计算为直接的光线跟踪类比。
光线跟踪核245也可以用于执行不直接类似于光线跟踪的计算。例如,可以使用光线跟踪核245来加速网格投影、网格细化和体积采样计算。还可以执行通用坐标空间计算,诸如最近邻计算。例如,给定点附近的点集可以通过在该点周围的坐标空间中定义边界框来发现。光线跟踪核245内的BVH和光线探头逻辑然后可以用于确定边界框内的点相交的集合。交点构成原点和该原点的最近邻点。使用光线跟踪核245执行的计算可以与在图形核243和张量核244上执行的计算并行执行。着色器编译器可以被配置成将计算着色器或其他通用图形处理程序编译成可以跨图形核243、张量核244和光线跟踪核245并行化的低级图元。
图2D是根据本文中描述的实施例的可以被配置为图形处理器和/或计算加速器的通用图形处理单元(GPGPU)270的框图。GPGPU 270可以经由一个或多个系统和/或存储器总线与主机处理器(例如,一个或多个CPU 246)和存储器271、272互连。在一个实施例中,存储器271是可以与一个或多个CPU 246共享的系统存储器,而存储器272是专用于GPGPU 270的设备存储器。在一个实施例中,GPGPU 270和存储器272内的组件可以被映射到对一个或多个CPU 246而言可访问的存储器地址。可以经由存储器控制器268来促进对存储器271和272的访问。在一个实施例中,存储器控制器268包括内部直接存储器存取(DMA)控制器269,或者可以包括用于执行否则将由DMA控制器执行的操作的逻辑。
GPGPU 270包括多个高速缓存存储器,包括L2高速缓存253、L1高速缓存254、指令高速缓存255和共享存储器256,其中的至少一部分也可以被划分为高速缓存存储器。GPGPU270还包括多个计算单元260A-260N。每个计算单元260A-260N包括向量寄存器261、标量寄存器262、向量逻辑单元263和标量逻辑单元264的集合。计算单元260A-260N还可以包括本地共享存储器265和程序计数器266。计算单元260A-260N可以与常数高速缓存267耦合,常数高速缓存267可以用于存储常数数据,常数数据是在GPGPU 270上执行的内核或着色器程序的运行期间将不会改变的数据。在一个实施例中,常数高速缓存267是标量数据高速缓存,并且可以将高速缓存的数据直接取出到标量寄存器262中。
在操作期间,一个或多个CPU 246可以将命令写入到已被映射到可访问地址空间的GPGPU 270中的寄存器或存储器中。命令处理器257可以从寄存器或存储器读取命令并且确定那些命令将如何在GPGPU 270内被处理。线程分派器258然后可以用于将线程分派到计算单元260A-260N以执行那些命令。每个计算单元260A-260N可以独立于其他计算单元执行线程。另外,每个计算单元260A-260N可以被独立地配置用于条件计算并且可以有条件地将计算的结果输出到存储器。当提交的命令完成时,命令处理器257可以中断一个或多个CPU246。
图3A-3C图示了由本文中所述的实施例提供的附加图形处理器和计算加速器架构的框图。图3A-3C的具有与本文中任何其他图的元件相同的参考编号(或名称)的元件可以以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。
图3A是图形处理器300的框图,该图形处理器300可以是分立的图形处理单元,或可以是集成有多个处理核的图形处理器,或其他半导体设备,诸如但不限于存储器设备或网络接口。在一些实施例中,图形处理器经由存储器映射I/O接口与图形处理器上的寄存器通信,并且其中命令被放置在处理器存储器中。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或到系统存储器的接口。
在一些实施例中,图形处理器300还包括显示控制器302,用于将显示输出数据驱动至显示设备318。显示控制器302包括用于一个或多个覆盖平面的硬件,用于显示和合成多层视频或用户接口元素。显示设备318可以是内部或外部显示设备。在一个实施例中,显示设备318是头戴式显示设备,诸如虚拟现实(VR)显示设备或增强现实(AR)显示设备。在一些实施例中,图形处理器300包括视频编解码器引擎306,以将媒体编码、解码或转码为一种或多种媒体编码格式,将媒体从一种或多种媒体编码格式进行编码、解码或转码,或在一种或多种媒体编码格式之间进行编码、解码或转码,所述媒体编码格式包括但不限于移动图像专家组(MPEG)格式(诸如MPEG-2)、高级视频编码(AVC)格式(诸如H.264/MPEG-4 AVC、H.265/HEVC)、开放媒体联盟(AOMedia)VP8、VP9、以及运动图像和电视工程师协会(SMPTE)421M/VC-1、以及联合图像专家组(JPEG)格式(诸如JPEG和运动JPEG(MJPEG)格式)。
在一些实施例中,图形处理器300包括块图像传输(BLIT)引擎304,用于执行二维(2D)光栅化操作,包括例如位边界框传输。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。在一些实施例中,GPE 310是用于执行图形操作的计算引擎,所述图形操作包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 310包括用于执行3D操作的3D流水线312,诸如使用作用于3D图元形状(例如,矩形、三角形等)上的处理功能渲染三维图像和场景。3D流水线312包括可编程的和固定的功能元件,所述功能元件执行元件内的各种任务和/或产生3D/媒体子系统315的执行线程。尽管3D流水线312可以用于执行媒体操作,但GPE 310的实施例还包括媒体流水线316,其专门用于执行媒体操作,诸如视频后处理和图像增强。
在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元,以代替或代表视频编解码器引擎306执行一个或多个专用媒体操作,诸如视频解码加速、视频去隔行(de-interlacing)和视频编码加速。在一些实施例中,媒体流水线316另外包括线程产生单元,以产生用于在3D/媒体子系统315上执行的线程。所产生的线程在3D/媒体子系统315中包括的一个或多个图形执行单元上执行媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括用于执行由3D流水线312和媒体流水线316产生的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统315发送线程执行请求,3D/媒体子系统315包括线程分派逻辑,用于仲裁和分派各种请求到可用的线程执行资源。执行资源包括用于处理3D和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括共享存储器,包括寄存器和可寻址存储器,以在线程之间共享数据并存储输出数据。
图3B图示了根据本文中所述的实施例的具有平铺架构的图形处理器320。在一个实施例中,图形处理器320包括图形处理引擎集群322,其在图形引擎块310A-310D内具有图3A的图形处理引擎310的多个实例。每个图形引擎块310A-310D可以经由块互连323A-323F的集合互连。每个图形引擎块310A-310D还可以经由存储器互连325A-325D连接到存储器模块或存储器设备326A-326D。存储器设备326A-326D可以使用任何图形存储器技术。例如,存储器设备326A-326D可以是图形双倍数据速率(GDDR)存储器。在一个实施例中,存储器设备326A-326D是高带宽存储器(HBM)模块,其可以与它们相应的图形引擎块310A-310D一起在管芯上。在一个实施例中,存储器设备326A-326D是堆叠的存储器设备,其可以被堆叠在它们相应的图形引擎块310A-310D的顶部上。在一个实施例中,每个图形引擎块310A-310D和相关联的存储器326A-326D驻留在分离的小芯片上,所述小芯片结合到基础管芯或基础衬底,如图11B-11D中进一步详细描述的那样。
图形处理器320可以配备有非均匀存储器访问(NUMA)系统,其中存储器设备326A-326D与相关联的图形引擎块310A-310D耦合。给定的存储器设备可以由图形引擎块而不是它与其直接连接的块来访问。然而,当访问本地块时,对存储器设备326A-326D的访问延迟可能是最低的。在一个实施例中,启用高速缓存一致NUMA(ccNUMA)系统,该系统使用块互连323A-323F来启用图形引擎块310A-310D内的高速缓存控制器之间的通信,以在多于一个高速缓存存储相同的存储器位置时维护一致的存储器映像。
图形处理引擎集群322可以与片上或封装上结构互连324连接。在一个实施例中,结构互连324包括网络处理器、片上网络(NoC)或另一交换处理器,以使得结构互连324能够充当在图形处理器320的组件之间交换数据分组的分组交换结构互连。结构互连324可以使能实现图形引擎块310A-310D与诸如视频编解码器引擎306和一个或多个复制引擎304之类的组件之间的通信。复制引擎304可以用于将数据移出、移入到存储器设备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 express总线或另一类型的主机系统接口。例如,主机接口328可以是NVLink或NVSwitch接口。主机接口328和结构互连324可以协作以使得图形处理器320的多个实例能够充当单个逻辑设备。主机接口328和结构互连324之间的协作还可以使得各个图形引擎块310A-310D能够作为不同的逻辑图形设备呈现给主机系统。
图3C图示了根据本文中所述的实施例的计算加速器330。计算加速器330可以包括与图3B的图形处理器320相似的架构,并且针对计算加速进行优化。计算引擎集群332可以包括计算引擎块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的框图。在一个实施例中,图形处理引擎(GPE)410是图3A中所示的GPE 310的一个版本,并且也可以表示图3B的图形引擎块310A-310D。图4的具有与本文中任何其他图的元件相同的参考编号(或名称)的元件可以以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。例如,图示了图3A的3D流水线312和媒体流水线316。在GPE 410的一些实施例中,媒体流水线316是可选的,并且可以不被明确地包括在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上执行的线程生成的输出数据可以将数据输出至统一返回缓冲器(URB)418中的存储器。URB 418可以存储多个线程的数据。在一些实施例中,URB 418可以用于在图形核阵列414上执行的不同线程之间发送数据。在一些实施例中,URB 418可以另外用于图形核阵列上的线程和共享功能逻辑420内的固定功能逻辑之间的同步。
在一些实施例中,图形核阵列414是可扩展的,使得该阵列包括可变数量的图形核,每个图形核具有基于GPE 410的目标功率和性能水平的可变数量的执行单元。在一个实施例中,执行资源是动态可扩展的,使得可以根据需要启用或禁用执行资源。
图形核阵列414与共享功能逻辑420耦合,该共享功能逻辑420包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的共享功能是向图形核阵列414提供专用补充功能的硬件逻辑单元。在各种实施例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信(ITC)423逻辑。另外,一些实施例在共享功能逻辑420内实现一个或多个高速缓存425。
至少在对给定专用功能的需求不足以包含在图形核阵列414内的情况下,实现共享功能。代之以,该专用功能的单个实例被实现为共享功能逻辑420中的独立实体,并在图形核阵列414内的执行资源之间共享。在图形核阵列414之间共享的以及包括在图形核阵列414内的精确的功能的集合跨实施例变化。在一些实施例中,由图形核阵列414广泛使用的共享功能逻辑420内的特定共享功能可以被包括在图形核阵列414内的共享功能逻辑416内。在各种实施例中,图形核阵列414内的共享功能逻辑416可以包括共享功能逻辑420内的一些或所有逻辑。在一个实施例中,共享功能逻辑420内的所有逻辑元件可以在图形核阵列414的共享功能逻辑416内复制。在一个实施例中,共享功能逻辑420被排除在外,以有利于图形核阵列414内的共享功能逻辑416。
执行单元
图5A-5B图示了根据本文中所述的实施例的包括图形处理器核中采用的处理元件的阵列的线程执行逻辑500。图5A-5B的具有与本文中任何其他图的元件相同的参考编号(或名称)的元件可以以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。图5A-5B图示了线程执行逻辑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中的一个或多个执行单元上实例化所请求的线程的逻辑。例如,几何流水线可以将顶点、曲面细分(tessellation)或几何着色器分派给线程执行逻辑以进行处理。在一些实施例中,线程分派器504还可以处理来自执行的着色器程序的运行时线程产生请求。
在一些实施例中,图形执行单元508A-508N支持指令集,该指令集包括对许多标准3D图形着色器指令的本地(native)支持,使得来自图形库(例如,Direct 3D和OpenGL)的着色器程序以最少的转换来执行。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。执行单元508A-508N中的每个都能够进行多发布单指令多数据(SIMD)执行,并且多线程操作使得能够实现在面临较高延迟的存储器访问时的高效的执行环境。每个执行单元中的每个硬件线程都有专用的高带宽寄存器堆和相关联的独立线程状态。执行是针对能够进行整数、单精度和双精度浮点运算、SIMD分支能力、逻辑运算、超越运算和其他杂项运算的流水线的每时钟多发布。当等待来自存储器或共享功能之一的数据时,图形执行单元508A-508N内的相关性逻辑使等待线程休眠,直到所请求的数据已经被返回。当等待线程休眠时,硬件资源可以专用于(devote to)处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以针对像素着色器、片段着色器或另一类型的着色器程序(包括不同的顶点着色器)执行操作。作为对使用SIMD的替代或者除了使用SIMD之外,各种实施例可以适用于通过使用单指令多线程(SIMT)的使用执行。对SIMD核或操作的引用也可以适用于SIMT或适用于SIMD结合SIMT。
图形执行单元508A-508N中的每个执行单元对数据元素的阵列进行操作。数据元素的数量是“执行大小”,或指令的通道数。执行通道是指令内数据元素访问、屏蔽和流控制的逻辑执行的单元。通道的数量可以独立于用于特定的图形处理器的物理算术逻辑单元(ALU)、浮点单元(FPU)或其他逻辑单元(例如张量核、光线跟踪核等)的数量。在一些实施例中,图形执行单元508A-508N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可以作为打包数据类型被存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当对256位宽的向量进行操作时,向量的256位被存储在寄存器中,并且执行单元对向量作为四个分离的54位打包数据元素(四字(QW)大小的数据元素)、八个分离的32位打包数据元素(双字(DW)大小的数据元素)、十六个分离的16位打包数据元素(字(W)大小的数据元素)或三十二个分离的8位数据元素(字节(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),以高速缓存数据以用于经由数据端口的存储器访问。
在一个实施例中,执行逻辑500还可以包括可以提供光线跟踪加速功能的光线跟踪器505。光线跟踪器505可以支持包括用于光线生成的指令/功能的光线跟踪指令集。光线跟踪指令集可以类似于或不同于由图2C中的光线跟踪核245支持的光线跟踪指令集。
图5B图示了根据实施例的执行单元508的示例性内部细节。图形执行单元508可以包括指令取出单元537、通用寄存器堆阵列(GRF)524、架构寄存器堆阵列(ARF)526、线程仲裁器522、发送单元530、分支单元532、SIMD浮点单元(FPU)534的集合,以及在一个实施例中包括专用整数SIMD ALU 535的集合。GRF 524和ARF 526包括与图形执行单元508中可能活动的每个同时硬件线程相关联的通用寄存器堆和架构寄存器堆的集合。在一个实施例中,在ARF 526中维护每个线程的架构状态,而线程执行期间使用的数据被存储在GRF 524中。包括用于每个线程的指令指针的每个线程的执行状态可以被保存在ARF 526中的线程特定寄存器中。
在一个实施例中,图形执行单元508具有同时多线程(SMT)和细粒度交错多线程(IMT)的组合的架构。该架构具有模块化配置,该配置可以在设计时基于同时线程的目标数量和每个执行单元的寄存器的数量进行微调,其中执行单元资源跨用于执行多个同时线程的逻辑来划分。可以由图形执行单元508执行的逻辑线程的数量不限于硬件线程的数量,并且多个逻辑线程可以被分配给每个硬件线程。
在一个实施例中,图形执行单元508可以共同发布(co-issue)多个指令,所述指令各自可以是不同的指令。图形执行单元线程508的线程仲裁器522可以将指令分派给发送单元530、分支单元532或(一个或多个)SIMD FPU 534之一来执行。每个执行线程可以访问GRF524内的128个通用寄存器,其中每个寄存器可以存储可作为32位数据元素的SIMD 8元素向量来访问的32个字节。在一个实施例中,每个执行单元线程具有对GRF 524内的4K字节的访问,尽管实施例不限于此,并且在其他实施例中可以提供更多或更少的寄存器资源。在一个实施例中,图形执行单元508被划分成可以独立地执行计算操作的七个硬件线程,尽管每个执行单元的线程的数量也可以根据实施例而变化。例如,在一个实施例中,支持多达16个硬件线程。在其中七个线程可以访问4K字节的实施例中,GRF 524可以存储总共28K字节。在16个线程可以访问4K字节的情况下,GRF 524可以存储总共64K字节。灵活的寻址模式可以允许寄存器被一起寻址,以有效地构建更宽的寄存器或表示跨步的(strided)矩形块数据结构。
在一个实施例中,经由由消息传递发送单元530执行的“发送”指令,分派存储器操作、采样器操作和其他长延迟系统通信。在一个实施例中,分支指令被分派到专用分支单元532,以促进SIMD发散和最终收敛。
在一个实施例中,图形执行单元508包括一个或多个SIMD浮点单元(FPU)534,以执行浮点运算。在一个实施例中,(一个或多个)FPU 534也支持整数计算。在一个实施例中,(一个或多个)FPU 534可以SIMD执行多达M数量个32位浮点(或整数)运算,或者SIMD执行多达2M个16位整数或16位浮点运算。在一个实施例中,(一个或多个)FPU中的至少一个提供扩展的数学能力,以支持高吞吐量超越数学函数和双精度54位浮点。在一些实施例中,还存在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、脉动(systolic)阵列612和数学单元613。ALU 611包括算术逻辑单元的阵列。ALU 611可以被配置成跨多个处理通道和数据通道且针对多个硬件和/或软件线程执行64位、32位和16位整数和浮点运算。ALU 611可以同时(例如,在同一时钟周期内)执行整数和浮点运算。
脉动阵列612包括W宽和D深的数据处理单元的网络,其可以用于以脉动方式执行向量或其他数据并行操作。在一个实施例中,脉动阵列612可以被配置成执行各种矩阵运算,包括如点积、外积和通用矩阵-矩阵乘法(GEMM)运算。在一个实施例中,脉动阵列612支持16位浮点运算,以及8位、4位、2位和二进制整数运算。除了矩阵乘法运算之外,脉动阵列612还可以被配置成加速特定的机器学习操作。在这样的实施例中,脉动阵列612可以被配备有支持bfloat(脑浮点)16位浮点格式或张量浮点32位浮点格式(TF32),其相对于电气和电子工程师协会(IEEE)754格式具有不同数量的尾数和指数位。
脉动阵列612包括用于加速稀疏矩阵运算的硬件。在一个实施例中,通过跳过具有零值操作数的乘法运算,可以在处理元件级处绕过输入数据的稀疏区域的乘法运算。在一个实施例中,可以检测输入矩阵内的稀疏性,并且在提交给脉动阵列612的处理元件之前,可以绕过具有已知输出值的运算。此外,可以绕过将零值操作数加载到处理元件中,并且处理元件可以被配置成对非零值输入元素执行乘法。输出可以以压缩(例如,密集)格式生成,其具有相关联的解压缩或解码元数据。输出可以以压缩格式来高速缓存。当写入到本地存储器或主机系统存储器时,输出可以以压缩格式来保持。输出也可以在被写入到本地存储器或主机系统存储器之前被解压缩。
在一个实施例中,脉动阵列612包括用于使得能够对具有压缩表示的稀疏数据进行操作的硬件。稀疏矩阵的压缩表示存储非零值和标识非零值在矩阵中的位置的元数据。示例性压缩表示包括但不限于压缩张量表示,诸如压缩稀疏行(CSR)、压缩稀疏列(CSC)、压缩稀疏纤维(CSF)表示。对压缩表示的支持使得能够对以压缩张量格式的输入执行操作,而不需要对压缩表示进行解压缩或解码。在这样的实施例中,可以仅对非零输入值执行运算,并且可以将所得到的非零输出值映射到输出矩阵中。在一些实施例中,还为在硬件内或跨系统总线传输数据时使用的机器特定无损数据压缩格式提供硬件支持。对于稀疏输入数据,这样的数据可以以压缩格式保留,并且脉动阵列612可以使用压缩数据的压缩元数据,以使得能够仅对非零值执行运算,或者使得零数据输入的块能够绕过乘法运算。
在一个实施例中,可以包括数学单元613,以便以比ALU 611高效、更低功率的方式执行数学运算的特定子集。数学单元613可以包括数学逻辑的变体,该变体可以在由其他实施例提供的图形处理引擎的共享功能逻辑中找到(例如,图4的共享功能逻辑420的数学逻辑422)。在一个实施例中,数学单元613可以被配置成执行32位和64位浮点运算。
线程控制单元601包括用于控制执行单元内的线程的执行的逻辑。线程控制单元601可以包括线程仲裁逻辑,以开始、停止和抢占执行单元600内的线程的执行。线程状态单元602可以被用于存储被分配以在执行单元600上执行的线程的线程状态。存储执行单元600内的线程状态使得能够在线程被阻塞或空闲时快速抢占那些线程。指令取出/预取单元603可以从高级执行逻辑的指令高速缓存(例如,如图5A中的指令高速缓存506)取出指令。指令取出/预取单元603还可以基于对当前执行线程的分析,发布对要被加载到指令高速缓存中的指令的预取请求。指令解码单元604可以被用于解码要由计算单元执行的指令。在一个实施例中,指令解码单元604可以被用作辅助解码器,以将复杂指令解码成组成微操作。
执行单元600另外包括可以由在执行单元600上执行的硬件线程使用的寄存器堆606。寄存器堆606中的寄存器可以跨用于在执行单元600的计算单元610内执行多个同时线程的逻辑来划分。可以由图形执行单元600执行的逻辑线程的数量不限于硬件线程的数量,并且多个逻辑线程可以被分配给每个硬件线程。基于支持的硬件线程的数量,寄存器堆606的大小可以跨实施例而变化。在一个实施例中,寄存器重命名可以被用于将寄存器动态分配给硬件线程。
图7是图示根据一些实施例的图形处理器指令格式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、src1 722和一个目标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(例如,调用、跳转(jmp))包括以0010xxxxb(例如,0x20)形式的指令。杂项指令组746包括指令的混合,包括以0011xxxxb(例如,0x30)形式的同步指令(例如,等待、发送)。并行数学指令组748包括以0100xxxxb(例如,0x40)形式的分量式算术指令(例如,加、乘(mul))。并行数学指令组748跨数据通道并行执行算术运算。向量数学组750包括以0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。向量数学组对向量操作数执行算术运算,诸如点积计算。在一个实施例中,所图示的操作码解码740可以被用于确定执行单元的哪个部分将用于执行解码的指令。例如,一些指令可以被指定为将由脉动阵列执行的脉动指令。诸如光线跟踪指令(未示出)的其他指令可以被路由到执行逻辑的片或分区内的光线跟踪核或光线跟踪逻辑。
图形流水线
图8是图形处理器800的另一实施例的框图。图8的具有与本文中任何其他图的元件相同的参考编号(或名称)的元件可以以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。
在一些实施例中,图形处理器800包括几何流水线820、媒体流水线830、显示引擎840、线程执行逻辑850和渲染输出流水线870。在一些实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统中的图形处理器。图形处理器通过对一个或多个控制寄存器(未示出)的寄存器写入来控制,或者通过经由环形互连802向图形处理器800发布的命令来控制。在一些实施例中,环形互连802将图形处理器800耦合到其他处理组件,诸如其他图形处理器或通用处理器。来自环形互连802的命令由命令流送器803解释,命令流送器803向几何流水线820或媒体流水线830的各个组件提供指令。
在一些实施例中,命令流送器803指导顶点取出器805的操作,顶点提取器805从存储器读取顶点数据,并执行由命令流送器803提供的顶点处理命令。在一些实施例中,顶点取出器805向顶点着色器807提供顶点数据,顶点着色器807对每个顶点执行坐标空间变换和照明(lighting)操作。在一些实施例中,顶点取出器805和顶点着色器807通过经由线程分派器831将执行线程分派给执行单元852A-852B来执行顶点处理指令。
在一些实施例中,执行单元852A-852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。在一些实施例中,执行单元852A-852B具有附接的L1高速缓存851,L1高速缓存851专用于每个阵列或者在阵列之间共享。高速缓存可以被配置为数据高速缓存、指令高速缓存或被分区以包含不同分区中的数据和指令的单个高速缓存。
在一些实施例中,几何流水线820包括曲面细分组件,以执行3D对象的硬件加速曲面细分。在一些实施例中,可编程外壳(hull)着色器811配置曲面细分操作。可编程域着色器817提供曲面细分输出的后端评估。曲面细分器813在外壳着色器811的指导下操作,并且包含专用逻辑以基于作为输入提供给几何流水线820的粗略几何模型来生成详细几何对象的集合。在一些实施例中,如果不使用曲面细分,则可以绕过曲面细分组件(例如,外壳着色器811、曲面细分器813和域着色器817)。曲面细分组件可以基于从顶点着色器807接收的数 据来操作。
在一些实施例中,完整的几何对象可以由几何着色器819经由分派至执行单元852A-852B的一个或多个线程来处理,或可以直接进行到裁剪器(clipper)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可被配置成基于多个图形和媒体编程接口执行操作,且不特定于任何一个应用编程接口(API)。在一些实施例中,用于图形处理器的驱动软件将特定于特定图形或媒体库的API调用转换成可以由图形处理器处理的命令。在一些实施例中,提供对开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API的支持,所有这些都来自Khronos组。在一些实施例中,还可以为来自Microsoft公司的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。也可以提供对开源计算机视觉库(OpenCV)的支持。如果可以从未来API的流水线到图形处理器的流水线进行映射,则也将支持具有兼容3D流水线的未来API。
图形流水线编程
图9A是图示根据一些实施例的可以用于对图形处理流水线进行编程的图形处理器命令格式900的框图。图9B是图示根据实施例的图形处理器命令序列910的框图。图9A中的实线框图示了通常包括在图形命令中的组件,而虚线包括可选的或仅包括在图形命令的子集中的组件。图9A的示例性图形处理器命令格式900包括用于标识客户端902的数据字段、命令操作码(opcode)904和命令的数据字段906。一些命令中还包括子操作码905和命令大小908。
在一些实施例中,客户端902指定处理命令数据的图形设备的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段,以调节命令的进一步处理,并将命令数据路由到适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端单元具有处理命令的相应处理流水线。一旦由客户端单元接收到命令,客户端单元就读取操作码904和子操作码905(如果存在的话),以确定要执行的操作。客户端单元使用数据字段906中的信息执行命令。对于一些命令,预期明确的命令大小908以指定命令的大小。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些的大小。在一些实施例中,命令经由多个双字对齐。可以使用其他命令格式。
图9B中的流程图图示了示例性图形处理器命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示命令序列的版本来设置、执行和终止图形操作的集合。仅出于示例的目的示出并描述了采样命令序列,因为实施例不限于这些特定命令或该命令序列。此外,命令可以作为命令序列中的批量命令发布,使得图形处理器将至少部分同时地处理命令的序列。
在一些实施例中,图形处理器命令序列910可以以流水线转储清除(flush)命令912开始,以使任何活动图形流水线完成流水线的当前未决命令。在一些实施例中,3D流水线922和媒体流水线924不同时操作。执行流水线转储清除以使活动图形流水线完成任何未决命令。响应于流水线转储清除,图形处理器的命令解析器将暂停命令处理,直到活动的绘图引擎完成未决操作并且相关的读取高速缓存无效。可选地,渲染高速缓存中被标记为‘脏’的任何数据都可以被转储清除到存储器。在一些实施例中,流水线转储清除命令912可以用于流水线同步或者在将图形处理器置于低功率状态下之前。
在一些实施例中,当命令序列要求图形处理器在流水线之间明确切换时,使用流水线选择命令913。在一些实施例中,在发布流水线命令之前,流水线选择命令913在执行上下文中只需要一次,除非该上下文要为两个流水线发布命令。在一些实施例中,在紧接经由流水线选择命令913进行流水线切换之前,需要流水线转储清除命令912。
在一些实施例中,流水线控制命令914配置用于操作的图形流水线,并用于对3D流水线922和媒体流水线924进行编程。在一些实施例中,流水线控制命令914配置活动流水线的流水线状态。在一个实施例中,流水线控制命令914用于流水线同步,并在处理批量命令之前从活动流水线内的一个或多个高速缓存存储器清除数据。
在一些实施例中,与返回缓冲器状态916相关的命令用于为相应的流水线配置返回缓冲器的集合,以写入数据。一些流水线操作需要分配、选择或配置一个或多个返回缓冲器,操作在处理期间将中间数据写入到所述返回缓冲器中。在一些实施例中,图形处理器还使用一个或多个返回缓冲器来存储输出数据并执行跨线程通信。在一些实施例中,返回缓冲器状态916包括选择返回缓冲器的大小和数量以用于流水线操作的集合。
命令序列中的剩余命令基于操作的活动流水线而不同。基于流水线确定920,命令序列被定制(tailor)成以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向量操作,计算着色器程序不与图形图元的渲染明确相关。
在一些实施例中,媒体流水线924以与3D流水线922相似的方式来配置。用于配置媒体流水线状态940的命令的集合在媒体对象命令942之前被分派或放置在命令队列中。在一些实施例中,用于媒体流水线状态940的命令包括用于配置将用于处理媒体对象的媒体流水线元素的数据。这包括用于配置媒体流水线内的视频解码和视频编码逻辑的数据,诸如编码或解码格式。在一些实施例中,用于媒体流水线状态940的命令还支持使用指向包含批量状态设置的“间接”状态元素的一个或多个指针。
在一些实施例中,媒体对象命令942提供指向媒体对象的指针,以供媒体流水线处理。媒体对象包括包含要处理的视频数据的存储器缓冲器。在一些实施例中,在发布媒体对象命令942之前,所有媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令942被排队,媒体流水线924就经由执行命令944或等效的执行事件(例如,寄存器写入)被触发。来自媒体流水线924的输出然后可以通过由3D流水线922或媒体流水线924提供的操作进行后处理。在一些实施例中,GPGPU操作以与媒体操作类似的方式来配置和执行。
图形软件架构
图10图示了根据一些实施例的用于数据处理系统1000的示例性图形软件架构。在一些实施例中,软件架构包括3D图形应用1010、操作系统1020和至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032和一个或多个通用处理器核1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,所述着色器程序包括着色器指令1012。着色器语言指令可以是以高级着色器语言的,所述高级着色器语言诸如Direct3D的高级着色器语言(HLSL)、OpenGL着色器语言(GLSL)等等。该应用还包括以适用于由通用处理器核1034执行的机器语言的可执行指令1014。该应用还包括由顶点数据定义的图形对象1016。
在一些实施例中,操作系统1020是来自Microsoft公司的Microsoft® Windows®操作系统、专有的类UNIX操作系统或使用Linux内核的变体的开源类UNIX操作系统。操作系统1020可以支持图形API 1022,诸如Direct3D API、OpenGL API或Vulkan API。当Direct3DAPI在使用中时,操作系统1020使用前端着色器编译器1024来将以HLSL的任何着色器指令1012编译成较低级着色器语言。编译可以是即时(just-in-time)(JIT)编译,或者应用可以执行着色器预编译。在一些实施例中,在3D图形应用1010的编译期间,高级着色器被编译成低级着色器。在一些实施例中,着色器指令1012以中间形式(诸如由Vulkan API使用的标准可移植中间表示(SPIR)的版本)提供。
在一些实施例中,用户模式图形驱动1026包含后端着色器编译器1027,以将着色器指令1012转换为硬件特定表示。当OpenGL API在使用中时,以GLSL高级语言的着色器指令1012被传递给用户模式图形驱动1026进行编译。在一些实施例中,用户模式图形驱动1026使用操作系统内核模式功能1028来与内核模式图形驱动1029通信。在一些实施例中,内核模式图形驱动1029与图形处理器1032通信以分派命令和指令。
IP核实现
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的表示性代码来实现,所述代码表示和/或定义集成电路(诸如处理器)内的逻辑。例如,机器可读介质可以包括表示处理器内各种逻辑的指令。当由机器读取时,指令可以使机器制造逻辑以执行本文中描述的技术。被称为“IP核”的这样的表示是集成电路的可重用逻辑的单元,其可以作为描述集成电路的结构的硬件模型存储在有形的机器可读介质上。硬件模型可以被提供给各种客户或制造设施,所述客户或制造设施将硬件模型加载在制造集成电路的制造机器上。可以制造集成电路,使得该电路执行与本文中描述的实施例中的任何实施例相关联描述的操作。
图11A是图示根据实施例的可以用于制造集成电路以执行操作的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核设计的集成电路。所制造的集成电路可以被配置成根据本文中描述的至少一个实施例来执行操作。
图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图示了包括连接至衬底1180的多个硬件逻辑小芯片的单元的封装组合件1190。如本文中描述的图形处理单元、并行处理器和/或计算加速器可以由分离制造的不同的硅小芯片组成。在该上下文中下,小芯片是至少部分地封装的集成电路,其包括可以与其他小芯片组装到更大封装的不同的逻辑的单元中。具有不同IP核逻辑的不同的小芯片组的集合可以被组装到单个设备中。此外,可以使用有源插入器(interposer)技术将小芯片集成到基础管芯或基础小芯片中。本文中描述的概念使能实现GPU内不同形式的IP之间的互连和通信。IP核可以使用不同的工艺技术来制造,并在制造期间进行组合,这避免了尤其是在具有若干种风格IP的大型SoC上将多个IP融合到相同制造工艺的复杂性。使能使用多种工艺技术缩短了上市的时间,并提供了一种用于创建多种产品SKU的经济高效的方式。此外,分解的IP可更易于独立进行电源门控(power gate),可以关闭在给定工作负载上不使用的组件,从而降低整体功耗。
在各种实施例中,封装组合件1190可以包括通过结构1185和/或一个或多个桥1187互连的组件和小芯片。封装组合件1190内的小芯片可以具有使用衬底上晶片上芯片堆叠的2.5D布置,其中多个管芯并排堆叠在将小芯片与衬底1180耦合的硅插入器1189上。衬底1180包括到封装互连1183的电连接。在一个实施例中,硅插入器1189是无源插入器,其包括硅通孔(TSV)以将封装组合件1190内的小芯片电耦合到衬底1180。在一个实施例中,硅插入器1189是除了TSV之外还包括嵌入式逻辑的有源插入器。在这样的实施例中,封装组合件1190内的小芯片使用3D面对面管芯堆叠被布置在有源插入器1189的顶部上。除了互连结构1185和硅桥1187之外,有源插入器1189可以包括用于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是嵌入式多管芯互连桥(EMIB)。在一些实施例中,桥1187可以简单地是从一个小芯片到另一个小芯片的直接连接。
图11D图示了根据实施例的包括可互换小芯片1195的封装组合件1194。可互换小芯片1195可以被组装到一个或多个基础小芯片1196、1198上的标准化插槽中。基础小芯片1196、1198可以经由桥互连1197耦合,桥互连1197可以类似于本文中描述的其他桥互连,并且可以是例如EMIB。存储器小芯片也可以经由桥互连被连接到逻辑或I/O小芯片。I/O和逻辑小芯片可以经由互连结构来通信。基础小芯片可以各自支持以逻辑或I/O或存储器/高速缓存之一的标准化格式的一个或多个插槽。
在一个实施例中,可以将SRAM和功率输送电路制造到基础小芯片1196、1198中的一个或多个中,相对于堆叠在基础小芯片的顶部上的可互换小芯片1195,可以使用不同的工艺技术来制造基础小芯片1196、1198。例如,基础小芯片1196、1198可以使用更大的工艺技术来制造,而可互换小芯片可以使用更小的工艺技术来制造。可互换小芯片1195中的一个或多个可以是存储器(例如,DRAM)小芯片。基于针对使用封装组合件1194的产品的功率和/或性能,可以为封装组合件1194选择不同的存储器密度。此外,可以基于针对产品的功率和/或性能,在组装时选择具有不同数量类型的功能单元的逻辑小芯片。此外,包含不同类型的IP逻辑核的小芯片可以被插入到可互换的小芯片插槽中,从而使能实现可以混合和匹配不同技术IP块的混合处理器设计。
示例性片上系统集成电路
图12-13B图示了根据本文中所述的各种实施例的可以使用一个或多个IP核制造的示例性集成电路和相关联的图形处理器。除了所图示的内容之外,可以包括其他逻辑和电路,包括附加的图形处理器/核、外围接口控制器或通用处理器核。
图12是图示根据实施例的可以使用一个或多个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。
图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另外包括一个或多个存储器管理单元(MMU)1320A-1320B、(一个或多个)高速缓存1325A-1325B和(一个或多个)电路互连1330A-1330B。一个或多个MMU1320A-1320B为图形处理器1310(包括顶点处理器1305和/或(一个或多个)片段处理器1315A-1315N)提供虚拟到物理地址的映射,除了存储在一个或多个高速缓存1325A-1325B中的顶点或图像/纹理数据之外,其还可以引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU 1320A-1320B可以与系统内的其他MMU同步,所述MMU包括与图12的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU,使得每个处理器1205-1220可以参与共享或统一的虚拟存储器系统。根据实施例,一个或多个电路互连1330A-1330B使得图形处理器1310能够经由SoC的内部总线或经由直接连接与SoC内的其他IP核对接。
如图13B所示,图形处理器1340包括图13A的图形处理器1310的一个或多个MMU1320A-1320B、(一个或多个)高速缓存1325A-1325B和(一个或多个)电路互连1330A-1330B。图形处理器1340包括一个或多个着色器核1355A-1355N(例如,1355A、1355B、1355C、1355D、1355E、1355F到1355N-1和1355N),其提供统一的着色器核架构,其中单个核或类型或核可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。统一着色器核架构还可配置成执行直接编译的高级GPGPU程序(例如,CUDA)。存在的着色器核的确切数量可以在实施例和实现之间变化。此外,图形处理器1340包括核间任务管理器1345,其充当线程分派器以将执行线程分派到一个或多个着色器核1355A-1355N和平铺单元1358,以加速基于块的渲染的平铺操作,其中针对场景的渲染操作在图像空间中被细分,例如以利用场景内的局部空间一致性或优化内部高速缓存的使用。
纹理采样器操作的无序执行
图14是图示根据实施例的纹理采样器1400的各种功能单元的框图。在本文中描述的各种示例中,纹理采样器操作(消息)的延迟可以通过为存储器读取操作提供无序方案来减少。所提议的无序解决方案的实现可以包括虚拟通道(VC)(例如,VC队列1440)的集合,一旦用于纹理采样器操作的数据准备好,所述虚拟通道就在对纹理采样器1400而言可访问的内部高速缓存(例如,L1高速缓存1410)的输出处被仲裁。以这种方式,命中内部高速缓存的纹理采样器操作可以绕过正在等待从与GPU相关联的存储器(例如,存储器设备120或存储器249、217、272或326A-D)读取返回的其他纹理采样器操作。
所提议的无序解决方案为3D工作负载(包括基准和游戏两者)提供了显著的性能改进。经验数据和仿真表明,对于使用具有以下形式的算法的工作负载,以帧级别的性能提升在约为5%至10%的范围内,其中MaxIter缓冲器读取成为限制因素:
根据一个实施例,纹理采样器1400(其可以对应于采样器421、510或854)表示与3D流水线(例如,3D流水线312或922)相关联的共享功能。在本示例的上下文中,延迟队列1420被耦合到多个虚拟通道(VC)队列1440,所述队列在L1高速缓存1410(其可以对应于纹理高速缓存858)的输出处被仲裁一次用于纹理采样器操作的足够数量的事务的数据,所述事务在VC队列中排队,对于所述事务,数据存在于L1高速缓存1410中。为简洁起见,这样的事务在本文中可以被称为“当前”事务。根据一个实施例,包含满足或超过预定或可配置阈值的当前事务的数量的那些VC队列可以具有相应的“就绪”指示。
根据一个实施例,当接收到纹理采样器操作(消息)(例如,输入操作1401)时,通过纹理采样器流水线和通过高速缓存查找阶段将其排序为多个事务(例如,事务1431a-n)。每个纹理采样器操作的潜在事务的数量可能具有大的范围,这取决于多个变量,包括但不限于过滤的类型和纹理格式。这些得到的未决高速缓存事务在先进先出(FIFO)结构上排队(例如,在延迟队列1420的尾部1421处)。如图14中所图示,通过延迟队列1420内的顺序事务的块具有相同着色,事务可以保持有序,并且当数据变得可用于相关联事务中的每个时,纹理采样器操作可以被发送到下游。如将理解的,当根据队列事务的严格有序处理单独使用延迟队列时,当延迟队列1420的头部1422处的事务由于高速缓存未命中而未决时,将阻塞其余的排队操作。然而,本文中描述的实施例通过经过引入基于VC队列1440的无序机制来允许操作的某种程度的无序处理,来解决这个问题。虽然所提议的解决方案不保证纹理采样器操作的完全无序处理,但是仿真显示,利用最优参数(下面讨论),该解决方案提供了与理想的无序机制几乎一样多的改进,同时在面积(逻辑门)方面小得多并且具有降低的复杂性。
根据一个实施例,VC队列1440每个可操作以在每个事务处理间隔(例如,每个时钟)一次存储与单个纹理操作相关联的事务。如下面参考图15进一步详细描述的,在每个事务处理间隔期间,如果有可用空间,则在延迟队列1420的头部1422处的事务可以被发送到相应的VC队列,一旦纹理采样器操作完成,则可以例如通过从第一VC队列(例如,VC队列#0)开始对空VC队列进行简单的线性搜索来选择新的VC队列。此外,在每个事务处理间隔期间,可以在VC队列的尾部处使用循环仲裁(round robin arbitration)来选择要发送到下游的下一个纹理操作。根据一个实施例,仲裁基于各自的VC队列“就绪”指示,其中的每个指示基于针对其在L1高速缓存1410中存在数据的对应VC队列中的条目的数量。
许多不同的参数(例如,VC队列的数量、每个VC队列中的条目的数量以及“当前”事务的阈值数量)可能对由各种实施例提供的性能改进有直接影响。这些参数的值可以根据适合于特定实现的各种权衡(例如,期望的“无序”和硬件成本)来选择。
关于VC队列1440的数量,更高数量的VC队列1440促进更大程度的纹理采样器操作扇出(fan out),并且因此可以实现更高的“无序”的程度;然而,这个数字应该与相关联的硬件成本相平衡。经验数据和仿真表明,每32个线程8个VC队列提供了合理的投资回报。
关于选择每个VC队列中的条目的数量,成本也是要考虑的因素。如上所述,纹理采样器操作的大小(事务的数量)具有大的范围,通常在大约4到100s之间。经验数据和仿真表明,每个VC队列16个条目是理想的大小,因为它涵盖了不需要长事务的序列的大多数常见过滤情况(例如,点采样和双线性)。要理解,如果存在L1高速缓存未命中,则导致比VC队列内可以容纳(fit)的更多事务的纹理采样器操作将在延迟队列1420的头部1422处导致“停住(stall)”;然而,预期这种情况将不会足够常见以影响性能。
关于“当前”事务的阈值数量,其表示L1高速缓存1410中具有可用数据以触发VC队列的“就绪”指示的VC队列中事务的数量的最小数量,根据一个实施例,该阈值应当是理想地可编程的,其中8为默认值。一旦有满足阈值的多个“当前”事务或者存在表示全部纹理采样器操作的事务(例如,在具有少于阈值数量的事务的纹理采样器操作的情况下),给定的VC队列将是“就绪”的。如下文参考图15所描述的,在一个实施例中,一旦在仲裁中选择了VC队列,这样的选择就可以被锁定,直到与所讨论的纹理采样器操作相关联的所有事务都已经被完全向下游分派。
虽然在本示例的上下文中,一些示例可以被解释为好像VC队列的给定条目存储与纹理采样操作的给定事务相关联的事务信息的整体,但在一些实施例中要注意,为了减少由VC队列使用的面积(逻辑门),存储在给定条目内的事务信息可以是给定事务的事务信息的整体的子集。例如,存储在VC队列中的事务信息可以被最小化,并且指针或标识符(ID)可以提供到剩余事务信息的链接。根据一个实施例,只有足以确定数据在L1高速缓存1410中是否可用的信息(例如,高速缓存行地址和提供所需高速缓存行的位置的存储体信息)可以与指向剩余事务信息的指针或ID一起存储在给定条目中,该剩余事务信息可以被临时缓存在其他地方。例如,可能存在由ID索引的分离的存储缓冲器,其将存储剩余的信息(例如,过滤操作类型、表面格式等)。
事务间隔处理
图15是图示根据实施例的事务间隔处理的流程图。在本示例的上下文中,响应于每个事务间隔(例如,每个时钟)触发图15的步骤。在本示例的上下文中,假设纹理采样器操作被同时排序为多个事务,并被添加到延迟队列(例如,延迟队列1420)的尾部,因为这样的纹理采样器操作被纹理采样器(例如,纹理采样器1400)接收。可以在纹理采样器流水线的读取阶段期间执行事务间隔处理,以促进与纹理采样器流水线的下游部分(例如,数据/信息的消费者)的相应纹理采样器操作相关联的数据/信息(例如,过滤操作类型、表面格式等)的可用性,该下游部分最终将利用该数据/信息来执行纹理采样器操作。
在判定框1510处,确定当前是否选择了VC队列(例如,VC队列1440之一)。如果是,则处理分支到框1540,以继续处理已经开始被处理的纹理采样器操作的事务;否则,处理继续到框1520。根据一个实施例,关于当前选择的VC队列的信息可以由纹理采样器以表示选择的VC队列的数字(例如,在8个VC队列的情况下为0到7)或者指示当前没有选择VC队列的值(例如,大于VC队列的数量)的形式来维护。
在框1520处,尝试选择VC队列。根据一个实施例,从那些“就绪”的队列选择VC队列。当给定的VC队列包括阈值数量的当前事务(即,对其而言数据可用或存在于对纹理采样器而言可访问的高速缓存(例如,L1高速缓存1410)中的事务)时,可以为该给定的VC队列断言(assert)就绪指示。下面参考图16描述VC队列选择处理的非限制性示例。
在判定框1530处,确定在框1520中选择VC队列的尝试是否成功。如果是,则处理继续到框1540;否则,对于该事务间隔,事务处理完成。在一个实施例中,0到N-1的所选择的VC队列值(其中N是VC队列的数量)可以表示特定VC队列的成功选择,并且大于N-1的数字可以表示当前没有VC队列准备好。例如,当没有VC队列包含足够数量的当前事务的事务信息时,且当没有VC队列包含表示整个纹理采样器操作的事务的事务信息时,可能出现这种暂时“停住”的情况。
在框1540处,事务信息从选择的VC队列的头部出列(dequeue)。
在判定框1550处,确定出列条目是否表示所讨论的纹理采样器操作的最后事务。如果是,则处理分支到框1560;否则,处理继续到框1570。根据一个实施例,关于事务信息是否与给定纹理采样器操作的最后事务相关联的确定可以参考事务信息中包含的结束标记/标志来做出,以划定(demark)纹理采样器操作边界。
在框1560处,清除VC队列选择,并且处理继续到框1580处。以这种方式,在下一个事务间隔期间,为要选择的新的VC队列提供机会。
在框1570处,下一个事务的事务信息从延迟队列出列,并将其入列到选择的VC队列上。
在框1580处,通过向下游发送事务来处理与框1540中出列的事务信息相关联的事务。如上所述,可以在纹理采样器流水线的读取阶段处执行事务间隔处理,以促进将被纹理采样器流水线的一个或多个下游组件用来执行所讨论的操作的数据信息的可用性。例如,在过程中的此点处,在从高速缓存(例如,L1高速缓存1410)取出数据之后,可以将数据发送到过滤块以进行实际的纹理过滤操作。
虽然在本示例的上下文中,包括多个列举的框,但要理解,示例可以包括在列举的框之前、之后和/或在其间的附加框。类似地,在一些示例中,列举的框中的一个或多个可以被省略或以不同的次序执行。
虚拟通道(VC)队列选择处理
图16是图示根据实施例的虚拟通道(VC)队列选择处理的流程图。在本示例的上下文中,作为由纹理采样器(例如,纹理采样器1400)执行的周期性事务间隔处理的一部分,例如,如上文参考图15所述,已经确定当前没有选择纹理采样器的多个VC队列(例如,VC队列1440)中的VC队列。在一个实施例中,参考图16描述的步骤在图15的框1520内执行。
在框1610处,确定与每个VC队列内的事务的纹理采样器相关联的高速缓存(例如,L1高速缓存1410)内的数据的可用性(存在)。例如,可以基于高速缓存行地址和相应条目内的存储体信息,为VC队列的每个条目执行高速缓存查找。
在框1620处,基于框1610的结果,为每个VC队列维护当前事务的计数。
在判定框1630处,关于具有满足当前事务的阈值数量的当前事务的VC队列的数量做出确定。如果具有足够数量的当前事务的VC队列的数量为零,则处理分支到框1650。如果具有足够数量的当前事务的VC队列的数量是一,则处理继续到框1660。否则,如果具有足够数量的当前事务的VC队列的数量大于一,则处理分支到框1640。根据一个实施例,通过将为每个VC队列维护的当前事务的数量与当前事务的阈值数量进行比较,并对针对其当前事务的计数满足或超过阈值的VC队列的数量进行计数,来做出该确定。对于针对其当前事务的数量相对于当前事务的阈值数量已经发现是足够的VC队列中的那些,相应的就绪指示也可以被设置为真。
在框1640处,在“就绪”的多个VC队列之中执行VC队列优先化处理。本领域技术人员将理解,存在可以用于将一个VC队列优先于另一个VC队列的多种机制/方法。例如,取决于特定实现,特定纹理采样器操作的完成或所完成的事务的数量的最大化可以被视为优先级。在一个实施例中,可以使用循环仲裁方法,以通过使最近已经被服务(排空(drained))的VC队列“返回”到该行的末尾,并且再次成为最后一个被服务的,来确保公平性的水平。附加地或替代地,优先化可以基于过滤类型(例如,有具有更高的优先级的点采样操作)。下面参考图17描述VC队列优先化处理的非限制性示例。
虽然在本示例的上下文中,包括多个列举的框,但要理解,示例可以包括在列举的框之前、之后和/或在其间的附加框。类似地,在一些示例中,列举的框中的一个或多个可以被省略或以不同的次序执行。
虚拟通道(VC)队列优先化处理
图17是图示根据实施例的VC队列优先化处理的流程图。在本示例的上下文中,作为可以由纹理采样器(例如,纹理采样器1400)执行的VC队列选择处理(例如,如上文参考图16描述)的一部分,例如,在周期性事务间隔处理期间,已经确定纹理采样器的多个VC队列(例如,多个VC队列1440)“就绪”。在一个实施例中,参考图17描述的步骤在图16的框1650中执行,以在就绪VC队列中进行优先化。
在框1710处,该过程可以以优先化的那些队列中的第一VC队列开始。取决于特定的实现,第一VC队列可以是具有最低编号的队列(例如,在N个VC队列的情况下,为0到N-1)。替代地,根据循环仲裁方法,第一VC队列可以是最近已经被服务(排空)的VC队列之后的第一VC队列。
在判定框1720处,确定特定迭代的当前VC队列是否包括操作的结束标记。如果是,则处理继续到判定框1740;否则,处理分支到框1730。
在框1730处,选择当前VC队列(其包含事务信息,该事务信息包含指示相关联的事务是与特定纹理采样器操作相关联的最后事务的标记/标志)进行处理,并完成VC队列优先化处理。
在判定框1740处,确定是否有另一个VC队列要考虑。如果是,则处理继续到框1750;否则,处理分支到框1760。例如,可以通过以循环次序查看具有就绪指示的下一个VC队列来做出该确定。
在框1750处,将下一个VC队列优先化迭代的当前VC队列设置为下一个VC队列,并且处理循环回到判定框1720。
在框1760处,没有就绪VC队列包含包含操作的结束标记/标志的事务信息,因此,可以选择具有最大数量的当前事务的VC队列。如果考虑中的所有VC队列具有相等数量的当前事务,则根据如在框1710中被选择作为起始点的循环方法,平局决胜(tie-breaker)可以是VC队列中的第一个。
虽然在本示例的上下文中,包括多个列举的框,但要理解,示例可以包括在列举的框之前、之后和/或在其间的附加框。类似地,在一些示例中,列举的框中的一个或多个可以被省略或以不同的次序执行。
许多方法以其最基本的形式进行描述,但是过程可以被添加到方法中的任何方法中或从方法中的任何方法中删除过程,并且信息可以被添加到描述的消息中的任何消息中或从描述的消息中的任何消息减少信息而不脱离本实施例的基本范围。对本领域技术人员来说将显而易见的是,可以进行许多进一步的修改和适配。特定实施例不是被提供来限制概念而是为了说明概念。实施例的范围不由以上提供的具体示例确定,而仅由以下权利要求确定。
如果说元件“A”被耦合到元件“B”或与元件“B”耦合,则元件A可以被直接耦合到元件B,或通过例如元件C间接耦合。当说明书或权利要求陈述组件、特征、结构、过程或特性A“导致”组件、特征、结构、过程或特性B时,其意味着“A”至少是“B”的部分原因,但也可能存在有助于导致“B”的至少一个其他组件、特征、结构、过程或特性。如果说明书指出组件、特征、结构、过程或特性“可以”、“可能”或“可”被包括,则不要求包括该特定的组件、特征、结构、过程或特性。如果说明书或权利要求引用“一”或“一个”元件,则这并不意味着只有一个所描述的元件。
实施例是实现或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用意味着结合实施例描述的特定特征、结构或特性被包括在至少一些实施例中,但不一定被包括在所有实施例中。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定都指代相同的实施例。应当理解,在示例性实施例的前述描述中,出于简化公开内容和帮助理解各种新颖方面中的一个或多个方面的目的,各种特征有时被一起分组在单个实施例、附图或其描述中。然而,该公开的方法不应被解释为反映这样的意图,即所要求保护的实施例需要比每个权利要求中明确记载的更多的特征。而是,如以下权利要求所反映的,新颖的方面在于少于单个前述公开实施例的所有特征。因此,权利要求由此被明确地并入到本说明书中,其中每个权利要求本身作为分离的实施例存在。
以下条款和/或示例涉及进一步的实施例或示例。示例中的细节可以在一个或多个实施例中的任何地方使用。不同实施例或示例的各种特征可以不同地与包括的一些特征和排除的其他特征相结合,以适应各种不同的应用。示例可以包括主题,诸如方法、用于执行该方法的动作的装置、包括指令的至少一个机器可读介质,当由机器执行时,该指令使得机器执行该方法的动作,或者用于促进根据本文中描述的实施例和示例的混合通信的装置或系统。
一些实施例涉及示例1,其包括一种图形处理单元(GPU),该图形处理单元包括:1级(L1)高速缓存;以及纹理采样器,其耦合到L1高速缓存,包括(i)延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及(ii)多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息,其中纹理采样器可操作以在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的L1高速缓存中的数据的可用性;基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及处理与所选择的VC队列的头部相关联的事务。
示例2包括示例1的主题,其中纹理采样器进一步可操作以:将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
示例3包括示例1-2的主题,其中纹理采样器进一步可操作以继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
示例4包括示例1-3的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在L1高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
示例5包括示例1-4的主题,其中阈值数量是8。
示例6包括示例1-5的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
示例7包括示例1-6的主题,其中所述多个VC队列包括每32个线程8个VC队列。
示例8包括示例1-7的主题,其中所述多个VC队列中的每个VC队列包括16个条目。
一些实施例涉及示例9,其包括一种方法,所述方法包括:在图形处理单元的纹理采样器内维护:(i)延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及(ii)多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息;在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的高速缓存中的数据的可用性;基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及处理与所选择的VC队列的头部相关联的事务。
示例10包括示例9的主题,进一步包括在事务处理间隔期间:将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
示例11包括示例9-10的主题,进一步包括继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
示例12包括示例9-11的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
示例13包括示例9-12的主题,其中阈值数量是8。
示例14包括示例9-13的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
示例15包括示例9-14的主题,其中所述多个VC队列包括每32个线程8个VC队列。
示例16包括示例9-15的主题,其中所述多个VC队列中的每个VC队列包括16个条目。
一些实施例涉及示例17,其包括一种图形处理单元的纹理采样器,所述纹理采样器包括:延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息,其中纹理采样器可操作以在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的1级(L1)高速缓存中的数据的可用性;基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及处理与所选择的VC队列的头部相关联的事务。
示例18包括示例17的主题,其中,所述纹理采样器进一步可操作以:将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
示例19包括示例17-18的主题,其中纹理采样器进一步可操作以继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
示例20包括示例17-19的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在L1高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
示例21包括示例17-20的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
示例22包括示例17-21的主题,其中阈值数量是8,所述多个VC队列包括每32个线程8个VC队列,并且其中所述多个VC队列中的每个VC队列包括16个条目。
一些实施例涉及示例23,其包括一种系统,所述系统包括:用于在图形处理单元的纹理采样器内维护以下各项的装置:(i)延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及(ii)多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息;用于在事务处理间隔期间通过以下步骤来促进多个纹理采样器操作的无序处理的装置:对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的高速缓存中的数据的可用性;基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及处理与所选择的VC队列的头部相关联的事务。
示例24包括示例23的主题,进一步包括用于在事务处理间隔期间执行以下操作的装置:将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
示例25包括示例23-24的主题,进一步包括用于继续处理与所选择的VC队列的头部相关联的后续事务直到相应的单个纹理采样器操作的所有的事务已经完成的装置。
示例26包括示例23-25的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
示例27包括示例23-26的主题,其中阈值数量是8。
示例28包括示例23-27的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
示例29包括示例23-28的主题,其中所述多个VC队列包括每32个线程8个VC队列。
示例30包括示例23-29的主题,其中所述多个VC队列中的每个VC队列包括16个条目。
一些实施例涉及示例31,其包括一个或多个非暂时性计算机可读存储介质,其上存储有可执行计算机程序指令,当由一个或多个处理器执行时,所述指令使一个或多个处理器执行操作,包括:在图形处理单元的纹理采样器内维护:(i)延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及(ii)多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息;在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的高速缓存中的数据的可用性;基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及处理与所选择的VC队列的头部相关联的事务。
示例32包括示例31的主题,进一步包括在事务处理间隔期间:将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
示例33包括示例31-32的主题,进一步包括继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
示例34包括示例31-33的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
示例35包括示例31-34的主题,其中阈值数量是8。
示例36包括示例31-35的主题,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
示例37包括示例31-36的主题,其中所述多个VC队列包括每32个线程8个VC队列。
示例38包括示例31-37的主题,其中所述多个VC队列中的每个VC队列包括16个条目。
一些实施例涉及示例39,其包括实现或执行示例9-16中的任一项所述的方法的装置。
示例40包括至少一种机器可读介质,所述机器可读介质包括多个指令,当在计算设备上执行时,实现或执行如在任何前述示例中所述的方法或实现如在任何前述示例中所述的装置。
示例41包括一种装置,该装置包括用于执行如在示例9-16中的任一项中所述方法的装置。
本申请提供了如下的技术方案:
1. 一种图形处理单元(GPU),包括:
1级(L1)高速缓存;以及
纹理采样器,其耦合到L1高速缓存,包括(i)延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及(ii)多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息,其中纹理采样器可操作以在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:
对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的L1高速缓存中的数据的可用性;
基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及
处理与所选择的VC队列的头部相关联的事务。
2. 根据技术方案1所述的GPU,其中纹理采样器进一步可操作以:
将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及
将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
3. 根据技术方案1所述的GPU,其中纹理采样器进一步可操作以继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
4. 根据技术方案1所述的GPU,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在L1高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
5. 根据技术方案1所述的GPU,其中阈值数量是8。
6. 根据技术方案1所述的GPU,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
7. 根据技术方案1所述的GPU,其中所述多个VC队列包括每32个线程8个VC队列。
8. 根据技术方案1所述的GPU,其中所述多个VC队列中的每个VC队列包括16个条目。
9. 一种方法,包括:
在图形处理单元的纹理采样器内维护:(i)延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及(ii)多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息;
在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:
对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的高速缓存中的数据的可用性;
基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及
处理与所选择的VC队列的头部相关联的事务。
10. 根据技术方案9所述的方法,进一步包括在事务处理间隔期间:
将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及
将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
11. 根据技术方案9所述的方法,进一步包括继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
12. 根据技术方案9所述的方法,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
13. 根据技术方案9所述的方法,其中阈值数量是8。
14. 根据技术方案9所述的方法,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
15. 根据技术方案9所述的方法,其中所述多个VC队列包括每32个线程8个VC队列。
16. 根据技术方案9所述的方法,其中所述多个VC队列中的每个VC队列包括16个条目。
17. 一种图形处理单元的纹理采样器,所述纹理采样器包括:
延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及
多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息,其中纹理采样器可操作以在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:
对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的1级(L1)高速缓存中的数据的可用性;
基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及
处理与所选择的VC队列的头部相关联的事务。
18. 根据技术方案17所述的纹理采样器,其中,所述纹理采样器进一步可操作以:
将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及
将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
19. 根据技术方案17所述的纹理采样器,其中纹理采样器进一步可操作以继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
20. 根据技术方案17所述的纹理采样器,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在L1高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
21. 根据技术方案17所述的纹理采样器,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
22. 根据技术方案17所述的纹理采样器,其中阈值数量是8,所述多个VC队列包括每32个线程8个VC队列,并且其中所述多个VC队列中的每个VC队列包括16个条目。
附图和前述描述给出了实施例的示例。本领域技术人员将理解,所描述的元件中的一个或多个可以很好地组合成单个功能元件。替代地,某些元件可以被分成多个功能元件。来自一个实施例的元件可以被添加到另一个实施例。例如,本文中描述的过程的次序可以被改变,并且不限于本文中描述的方式。此外,任何流程图的动作不需要按照所示的次序实现;也不一定需要执行所有的动作。此外,不依赖于其他动作的那些动作可以与其他动作并行执行。实施例的范围决不受这些具体示例的限制。无论说明书中是否明确给出,许多变化都是可能的,所述变化诸如结构、尺寸和材料的使用方面的差异。实施例的范围至少与由所附权利要求给出的一样宽。
Claims (22)
1.一种图形处理单元(GPU),包括:
1级(L1)高速缓存;以及
纹理采样器,其耦合到L1高速缓存,包括(i)延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及(ii)多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息,其中纹理采样器可操作以在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:
对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的L1高速缓存中的数据的可用性;
基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及
处理与所选择的VC队列的头部相关联的事务。
2.根据权利要求1所述的GPU,其中纹理采样器进一步可操作以:
将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及
将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
3.根据权利要求1或2所述的GPU,其中纹理采样器进一步可操作以继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
4.根据权利要求1或2所述的GPU,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在L1高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
5.根据权利要求1或2所述的GPU,其中阈值数量是8。
6.根据权利要求1或2所述的GPU,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
7.根据权利要求1或2所述的GPU,其中所述多个VC队列包括每32个线程8个VC队列。
8.根据权利要求1或2所述的GPU,其中所述多个VC队列中的每个VC队列包括16个条目。
9.一种方法,包括:
在图形处理单元的纹理采样器内维护:(i)延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及(ii)多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息;
在事务处理间隔期间,通过以下步骤来促进多个纹理采样器操作的无序处理:
对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的高速缓存中的数据的可用性;
基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及
处理与所选择的VC队列的头部相关联的事务。
10.根据权利要求9所述的方法,进一步包括在事务处理间隔期间:
将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及
将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
11.根据权利要求9或10所述的方法,进一步包括继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
12.根据权利要求9或10所述的方法,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
13.根据权利要求9或10所述的方法,其中阈值数量是8。
14.根据权利要求9或10所述的方法,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
15.根据权利要求9或10所述的方法,其中所述多个VC队列包括每32个线程8个VC队列。
16.根据权利要求9或10所述的方法,其中所述多个VC队列中的每个VC队列包括16个条目。
17.一种图形处理单元的纹理采样器,所述纹理采样器包括:
延迟队列,其可操作以存储关于与多个纹理采样器操作中的每个纹理采样器操作相关联的事务的集合的信息,以及
多个虚拟通道(VC)队列,每个虚拟通道队列可操作以存储关于每次相应的单个纹理采样器操作的事务的信息,其中纹理采样器可操作以在事务处理间隔期间通过以下步骤来促进多个纹理采样器操作的无序处理:
对于与多个VC队列中的每个VC队列相关联的事务,确定与纹理采样器相关联的1级(L1)高速缓存中的数据的可用性;
基于所确定的数据的可用性来选择多个VC队列中的VC队列;以及
处理与所选择的VC队列的头部相关联的事务。
18.根据权利要求17所述的纹理采样器,其中,所述纹理采样器进一步可操作以:
将关于与延迟队列的头部相关联的事务的信息出列,所述延迟队列的头部是与多个纹理采样器操作中的特定纹理采样器操作相关联的事务的集合的一部分;以及
将关于事务的信息入列在当前存储关于与特定纹理采样器操作相关联的事务的信息的多个VC队列的VC队列的尾部处。
19.根据权利要求17或18所述的纹理采样器,其中纹理采样器进一步可操作以继续处理与所选择的VC队列的头部相关联的后续事务,直到相应的单个纹理采样器操作的所有的事务已经完成。
20.根据权利要求17或18所述的纹理采样器,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括确定数据在L1高速缓存中对于与所选择的VC队列相关联的至少阈值数量的事务是可用的。
21.根据权利要求17或18所述的纹理采样器,其中所述基于所确定的数据的可用性来选择多个VC队列中的VC队列包括将多个VC队列中的特定VC队列优先于所述多个VC队列中的另一个VC队列,所述特定VC队列包含关于表示相应的单个纹理采样器操作的所有事务的事务的信息,所述另一个VC队列包含关于表示相应的单个纹理采样器操作的少于所有事务的事务的信息。
22.根据权利要求17或18所述的纹理采样器,其中阈值数量是8,所述多个VC队列包括每32个线程8个VC队列,并且其中所述多个VC队列中的每个VC队列包括16个条目。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/484619 | 2021-09-24 | ||
US17/484,619 US20230111571A1 (en) | 2021-09-24 | 2021-09-24 | Out-of-order execution of graphics processing unit texture sampler operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115861032A true CN115861032A (zh) | 2023-03-28 |
Family
ID=85660611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211022141.4A Pending CN115861032A (zh) | 2021-09-24 | 2022-08-24 | 图形处理单元纹理采样器操作的无序执行 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20230111571A1 (zh) |
CN (1) | CN115861032A (zh) |
-
2021
- 2021-09-24 US US17/484,619 patent/US20230111571A1/en active Pending
-
2022
- 2022-08-24 CN CN202211022141.4A patent/CN115861032A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230111571A1 (en) | 2023-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113783B2 (en) | Programmable re-order buffer for decompression | |
US11250616B2 (en) | View-dependent carving of reconstructed data from segmentation masks | |
US11907756B2 (en) | Concurrent workload scheduling with multiple level of dependencies | |
US11204801B2 (en) | Method and apparatus for scheduling thread order to improve cache efficiency | |
US11153603B2 (en) | Volumetric video visibility encoding mechanism | |
CN113094298A (zh) | 对共享本地存储器进行分区的机制 | |
US11556480B2 (en) | Systems and methods in a graphics environment for providing shared virtual memory addressing support for a host system | |
CN113313624A (zh) | 多贴片存储器管理机制 | |
CN112561774A (zh) | 图形处理单元及其中的方法 | |
CN113052746A (zh) | 用于多适配器编码的装置和方法 | |
CN113052747A (zh) | 用于基于量化的会聚方向的光线分类的装置和方法 | |
US11200722B2 (en) | Method and apparatus for viewport shifting of non-real time 3D applications | |
CN113590198A (zh) | 使用脉动阵列在并行计算机器中计算高效的跨通道运算 | |
CN113032159A (zh) | 编译器辅助的寄存器堆写入减少 | |
CN116341674A (zh) | 用于ai和机器学习加速的二进制扩展 | |
CN115858411A (zh) | 图形处理单元三维管线的共享功能的资源状态的高效缓存 | |
US10929134B2 (en) | Execution unit accelerator | |
US20230111571A1 (en) | Out-of-order execution of graphics processing unit texture sampler operations | |
US11900539B2 (en) | Tile sequencing mechanism | |
US12125121B2 (en) | Tessellation redistribution for reducing latencies in processors | |
US20230297419A1 (en) | Load store bank aware thread scheduling techniques | |
US20220309605A1 (en) | Tessellation redistribution for reducing latencies in processors | |
EP4449260A1 (en) | Technology to measure latency in hardware with fine-grained transactional filtration | |
CN115880135A (zh) | 用于数据压缩和解压缩的存储器分配技术 | |
CN115409683A (zh) | 小多边形栅格化 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |