CN115393493A - 具有动态调度的纹理过滤 - Google Patents
具有动态调度的纹理过滤 Download PDFInfo
- Publication number
- CN115393493A CN115393493A CN202210910053.1A CN202210910053A CN115393493A CN 115393493 A CN115393493 A CN 115393493A CN 202210910053 A CN202210910053 A CN 202210910053A CN 115393493 A CN115393493 A CN 115393493A
- Authority
- CN
- China
- Prior art keywords
- pipeline
- pipelines
- graphics processing
- processing unit
- texture
- 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
- 238000001914 filtration Methods 0.000 title abstract description 165
- 238000000034 method Methods 0.000 claims description 75
- 238000012545 processing Methods 0.000 claims description 64
- 230000015654 memory Effects 0.000 claims description 21
- 238000010561 standard procedure Methods 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000007704 transition Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 2
- 238000004519 manufacturing process Methods 0.000 description 39
- 230000006870 function Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 238000012913 prioritisation Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000002194 synthesizing effect Effects 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000012993 chemical processing Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000005389 semiconductor device fabrication Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 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/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- 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
- 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
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本公开涉及具有动态调度的纹理过滤。描述了一种纹理过滤单元,其包括数据路径块和控制块。数据路径块包括一个或更多个并行计算流水线,每个流水线包含至少一个硬件逻辑部件,该硬件逻辑部件被配置成接收多个输入并生成输出值作为纹理过滤运算的一部分。控制块包括多个定序器和仲裁器。每个定序器执行微程序,该微程序将待由数据路径块中的一个或更多个流水线执行的运算的序列定义为纹理过滤运算的一部分,并且仲裁器基于预定义的优先级规则来控制定序器对数据路径中的一个或更多个流水线的访问。
Description
本申请是申请日为2019年4月2日,申请号为201910260593.8,发明名称为“具有动态调度的纹理过滤”的申请的分案申请。
技术领域
本公开涉及具有动态调度的纹理过滤。
背景
在3D计算机图形中,场景内包含的许多信息被编码为3D几何形状的表面属性。因此,作为用于将该信息编码为位图的有效技术的纹理映射是渲染图像的过程的主要部分。直接从纹理中读取通常不能提供令人满意的图像质量,因为3D几何形状的投影通常需要某种形式的重采样,以及因此,作为渲染场景的一部分,图形处理单元(GPU)执行纹理过滤。例如,这可能是因为(在渲染的场景中的)像素中心与纹理中的纹素(texel)中心没有对齐(其中纹理包括纹素的阵列,使得纹理中的纹素类似于图像中的像素),并且在不同情况下,像素可以大于或小于纹素。
存在用于纹理过滤的许多不同的方法,包括体积(volumetric)过滤、各向异性过滤和三线性过滤,并且在各种示例中,可以以各种组合来应用这些方法。过滤可能是计算量很大的运算,并且实现它所需的硬件可能很大。
下面所述的实施例仅作为示例被提供并且不是对解决实现硬件中的纹理过滤的已知方法的任何或全部缺点的实现方式的限制。
概述
提供本概述来以简化的形式引入在以下详细描述中将进一步描述的概念的选择。本概述不旨在标识出要求保护的主题的关键特征或必要特征,亦不旨在用于限定要求保护的主题的范围。
描述了一种纹理过滤单元,其包括数据路径块和控制块。数据路径块包括一个或更多个计算流水线(pipeline)(并且在各种示例中,多个(a plurality of)并行计算流水线),每个流水线包含至少一个硬件逻辑部件,该硬件逻辑部件被配置成接收多个输入并生成输出值作为纹理过滤运算的一部分。控制块包括多个定序器(sequencer)和仲裁器(arbiter)。每个定序器执行微程序,该微程序将由数据路径块中的一个或更多个流水线执行的运算的序列定义为纹理过滤运算的一部分,并且仲裁器基于预定义的优先级规则来控制定序器对数据路径中的一个或更多个流水线的访问。
第一方面提供了一种图形处理单元,该图形处理单元包括在硬件逻辑中实现的纹理过滤单元,该纹理过滤单元包括:多个输入端,该多个输入端被布置成接收一个或更多个纹理值和多个过滤器系数,该多个过滤器系数包括与多个不同纹理过滤方法相关的系数;数据路径块,其包括一个或更多个计算流水线,每个流水线包含至少一个硬件逻辑部件,该硬件逻辑部件被配置成接收多个输入并生成输出值作为纹理过滤运算的一部分;以及控制块,该控制块包括多个定序器和仲裁器,其中每个定序器包括多个硬编码的微程序和硬件逻辑,该硬件逻辑被布置成基于一个或更多个控制输入来选择微程序之一,其中,每个微程序将由数据路径块中的流水线执行的运算的序列定义为纹理过滤运算的一部分,并且不同的微程序实现纹理过滤方法的不同组合,并且其中,仲裁器包括硬件逻辑,该硬件逻辑被布置成根据优先级规则来控制定序器对计算流水线的访问。
第二方面提供了一种在GPU内进行纹理过滤的方法,GPU包括纹理过滤单元,并且纹理过滤单元包括数据路径块和控制块,该数据路径块包括一个或更多个计算流水线,该控制块包括多个定序器和仲裁器,该方法包括:基于一个或更多个控制输入在每个定序器中选择微程序,其中,微程序将由数据路径块中的流水线执行的运算的序列定义为纹理过滤运算的一部分,并且不同的微程序实现纹理过滤方法的不同组合;在每个定序器中执行选择的微程序,并将用于访问数据路径块中的流水线之一的请求的序列发送到仲裁器,每个请求对应于由选择的微程序定义的序列中的运算;以及在仲裁器中,基于接收到的请求和优先级规则,将数据路径块中的流水线分配给定序器之一。
可以在集成电路以硬件体现本文描述的纹理过滤单元。可以提供在集成电路制造***处制造纹理过滤单元的方法。可以提供集成电路定义数据集,其在集成电路制造***中被处理时将***配置为制造纹理过滤单元。可以提供非暂时性计算机可读存储介质,在该非暂时性计算机可读存储介质上存储有集成电路的计算机可读描述,其当被处理时使布局处理***生成在集成电路制造***中使用的电路布局描述,以便制造纹理过滤单元。
可以提供集成电路制造***,其包括:非暂时性计算机可读存储介质,其上储存有描述纹理过滤单元的计算机可读集成电路描述;布局处理***,其被配置为对集成电路描述进行处理,以便生成体现纹理过滤单元的集成电路的电路布局描述;以及集成电路生成***,其被配置为根据电路布局描述来制造纹理过滤单元。
可以提供用于执行本文中所描述的任何方法的计算机程序代码。可提供其上储存有计算机可读指令的非暂时性计算机可读存储介质,该计算机可读指令在计算机***处被执行时使计算机***执行本文中所描述的任何方法。
如对技术人员将明显的是,以上特征可酌情进行组合,并且可与本文中所描述的示例的任意方面组合。
附图说明
现在将参照附图对示例进行详细描述,在附图中:
图1是示例图形处理单元(GPU)流水线(pipeline)的示意图;
图2是第一示例纹理过滤单元的示意图;
图3A、图3B和图3C示出了可以由如本文所述的纹理过滤单元实现的三种不同纹理过滤运算的图形表示;
图4是第二示例纹理过滤单元的示意图;
图5是图2或图4示出的纹理过滤单元内的控制块的运算的示例方法的流程图;
图6示出了在其中实现如本文所描述的纹理过滤单元的计算机***;以及
图7示出了用于生成体现如本文所描述的纹理过滤单元的集成电路的集成电路制造***。
附图图示了不同的示例。技术人员将认识到,图中所示出的元件边界(例如,框、框的组、或其他形状)表示边界的一个示例。在一些示例中可能的是,一个元件可以被设计为多个元件,或者多个元件可被设计为一个元件。在适当情况下,共同的参考数字在整个附图中用于指示类似的特征。
详细描述
以下的描述是通过示例的方式来呈现的,以使本领域技术人员能够制作并使用本发明。本发明不限于本文中所描述的实施例,并且对所公开的实施例的各种修改对于本领域技术人员将是明显的。
现在将仅通过示例来对实施例进行描述。
纹理过滤被实现在GPU内的专用硬件中,并且如上所述,纹理过滤是计算量很大的运算,并且因此这个硬件可能相当大。为了增加硬件的吞吐量,有效地使用硬件是很重要的;然而,调度(schedule)过滤运算的不同部分可能非常复杂,并且因此,在已知***中,调度是手工完成的。
本文描述了一种纹理过滤单元,其包括数据路径部分和控制部分,并且可以在GPU内实现该纹理过滤单元。在各种示例中,数据路径部分包括多个独立的计算流水线,每个流水线接收多个输入并生成输出值作为纹理过滤运算的一部分。在其他示例中,数据路径部分可以包括单个计算流水线。控制部分控制对计算流水线的访问,并使用多个不可编程定序器和仲裁器来执行动态调度。控制部分可以附加地将数据事务协议传入和传出纹理过滤单元。
每个过滤运算通常涉及多个计算,因此需要多次使用同一流水线和/或使用多个流水线。因此,由计算流水线生成的输出可以是需要(由计算流水线之一)进一步处理的中间值,或者可以是纹理过滤运算的最终输出。被输入到纹理过滤单元(并且是纹理过滤运算的输入)的每个纹理值仅贡献于单个输出(即,单个过滤的值);然而,多个输入通常对每个输出都有贡献,并且根据是否使用交错,这些输入不一定互相紧接着被接收。
定序器的每一个以一组预定义的且硬编码的操作模式中的一种进行操作,其中根据一个或更多个控制输入来选择在任何时候使用的特定模式。硬编码的操作模式中的每一个涉及过滤方法的不同组合,并且定义了对一组输入数据执行的运算的序列,以生成纹理过滤运算的最终输出。仲裁器基于预定义的规则来控制哪个定序器具有在任何时候访问计算流水线中的每一个的权利。这可能导致单个定序器停止(stalled),但计算流水线不会停止。这增加了硬件的效率并增加了吞吐量,而不需要数据路径中附加的流水线(例如,不需要针对每种操作模式或针对每个序列器的专用流水线)。当在操作模式之间切换时,吞吐量优势可能特别明显,因为手动优化已知***中序列之间的转换是不切实际的。以这种方式使用定序器和仲裁器还提供了处理交错的信号的能力(例如,对于图像的颜色变化的每一个),并且是灵活的(例如,因为如果计算3个而不是4个颜色变化,则利用率不会显著降低)。支持串行和交错模式的能力也减少了FIFO对纹理过滤单元外部的多路复用器或串行输入的需求。
图1示出了示例图形处理单元(GPU)流水线100的示意图,其可以在GPU内的硬件中被实现,并且其包括纹理过滤单元102。如图1所示,流水线100包括几何形状处理阶段104和光栅化(rasterization)阶段106。由几何形状处理阶段104生成的数据可以直接传递到光栅化阶段106,和/或一些数据可以由几何形状处理阶段104写入存储器(例如,参数存储器,图1中未示出),然后由光栅化阶段106从存储器读取。
几何形状处理阶段104包括顶点着色器(vertex shader)108和曲面细分(tessellation)单元110。在各个示例中,它还可以包括平铺(tiling)单元(图1中未示出)。在顶点着色器108和曲面细分单元(或曲面细分器)110之间可以有一个或更多个可选的外壳(hull)着色器(图1中未示出)。几何形状处理阶段104还可以包括图1中未示出的其他元件,例如存储器和/或其他元件。
顶点着色器108负责执行每顶点(per-vertex)计算。与顶点着色器不同,硬件曲面细分单元110(以及任何可选的外壳着色器)按每片(per-patch)而不是按每顶点来运算。曲面细分单元110输出图元(primitive)。
光栅化阶段106渲染由几何形状处理阶段104生成的一些或全部图元。光栅化阶段106包括纹理过滤单元102、像素着色器112,并且可以包括图1中未示出的其他元件。将在下面详细描述纹理过滤单元102的结构和运算。
图2是第一示例纹理过滤单元200的示意图,其可以被实现为图1的流水线100中的纹理过滤单元102。如图2所示,纹理过滤单元200包括几个输入,其包括多个过滤器系数202和两个纹理值输入:INPUT 0 204和INPUT 1 206。这些纹理值204、206是在由纹理过滤单元执行的过滤运算中被过滤的输入数据,并且至少部分地由过滤器系数202指定被执行的准确过滤运算。在各种示例中,纹理过滤单元200可以每时钟周期接收一个纹理值(经由INPUT0或INPUT 1);然而,在其他示例中,纹理过滤单元可以被配置成每时钟周期接收两个或更多个纹理值(例如,每时钟周期四个纹理值),并且在单个时钟周期中输入多于两个纹理值的情况下,纹理过滤单元200可以包括用于该目的的附加输入(图2中未示出)。接收到的纹理值(例如,其可以是双线性过滤的结果)通常是浮点值(例如,可以被称为F32的全精度二进制浮点格式);然而,本文描述的硬件和方法可以与任何格式(例如,半精度二进制浮点格式(F16)或整数格式)的纹理值一起使用。
纹理过滤单元200还包括控制块208和数据路径块210。控制块208包括多个定序器212、仲裁器214和多路复用器216。在各种示例中,如图2所示,数据路径块210可以包括四个相同的定序器212。在其他示例中,可以有不同数量的定序器。数据路径块210包括多个并行的独立的流水线218-219和用于每个定序器212的一组暂存寄存器(scratchpadregisters)220(例如,在图2示出的示例中,四组暂存寄存器,每个定序器一个)。在各种示例中,每组暂存寄存器220可以包括5个或6个寄存器。在其他示例中,在每组暂存寄存器220中可以有不同数量的寄存器,并且在一些示例中,暂存寄存器220可以由被配置为具有类似功能的替代存储器结构(例如,FIFO或其他存储器)代替。
数据路径块210还包括控制中间值被存储在哪里的一个或更多个多路复用器222-223,即第一多路复用器222(其可以被称为存储多路复用器)控制中间值被存储在哪里(即,其被存储在哪组暂存寄存器220中),以及第二多路复用器223(其可以被称为源多路复用器)控制什么值(是输入值还是中间值)被输入到流水线218-219中的每一个。在其他示例中,多路复用器222-223可以被执行类似切换和/或选择功能的替代逻辑代替。在图2示出的示例中,这些多路复用器222-223的操作由控制块208控制,例如,如由图2示出的从仲裁器214经由多路复用器216到多路复用器222-223和流水线218的控制线所示的。在各种示例中,仲裁器214选择要执行的定序器指令,并且通过流水线与计算并行发送该指令的存储目的地,然后仲裁器控制暂存寄存器的多路复用和写入使能(write-enable)。然而,在其他示例中,多路复用器222-223的控制可以被实现为单独的流水线、FIFO或其他状态机。
虽然图2示出了各种信号线,但是每条信号线可以代表多个信号,并且可以有图2中未示出的附加信号,并且图4示出了另一示例。
纹理过滤单元200将多个纹理值作为输入(经由输入204、206),并在控制块208的控制下,在数据路径块210中生成单个过滤的输出(其经由输出端224输出)。过滤由流水线218-219内的计算逻辑块实现,并且这些计算逻辑块可以是例如加法单元、乘法器、二维点积单元(DP2,其给定四个输入a、b、c、d,输出ac+bd,并且还允许有效地计算(c-1)*a+c*b)、三输入加法、融合乘法相加(FMA)等。在图2示出的示例中,第一流水线(流水线0)218包括单个DP2,并且第二流水线(流水线1)219包括单个加法单元。在其他示例中,流水线可以包括附加的和/或不同的计算逻辑块(例如,第一流水线218可以包括乘法器而不是DP2,或者任一流水线可以包括第二或另外的计算逻辑块)。单个纹理过滤运算可能需要几次通过流水线218-219中的一个或两个(如下面更详细描述的),并且中间结果(即,由流水线输出的不是最终过滤的输出值的结果)被存储在用于相应定序器(即,当生成中间结果时控制流水线的定序器)的暂存寄存器220中。然后,可以将这些中间结果从暂存寄存器220输入到流水线218-219之一,作为后续通过流水线的输入。在各种示例中,最终过滤的输出值也可以被存储在暂存寄存器220中(例如,在最终过滤的输出值还不能被发送到输出端,但是纹理过滤单元想要无延迟地继续更多的计算的情况下)。然后,当这些存储的最终过滤的输出值可以被输出但绕过(bypass)计算逻辑块(例如,DP2)时,它们通过流水线被传回。当在简单和复杂过滤功能(例如,在aniso-2和aniso-16之间)之间交替时,这种存储最终过滤的输出值的能力显著提高了性能。
在各种示例中,纹理过滤单元200被布置成使用流水线218-219来执行体积过滤、各向异性过滤和三线性过滤的任意组合;然而,在其他示例中,纹理过滤单元200被布置成执行两种或更多种过滤方法的不同集合的任何组合,并且可以执行任何种类的线性过滤,并且在各种示例中还可以执行双线性过滤。因此,被输入到纹理过滤单元200的系数202包括用于纹理过滤单元200可以实现的每种过滤方法的至少一个系数,例如vfrac、afrac和tfrac(统称为*frac),其中vfrac是用于体积过滤的系数,afrac是用于各向异性过滤的系数,并且tfrac是用于三线性过滤的系数。在各种示例中,系数的值可以每个时钟周期改变,或者可以不太频繁地改变,或者可以是恒定的(例如,vfrac可以每个时钟周期改变,afrac可以不太频繁地改变,并且tfrac可以是恒定的)。在仅使用过滤方法的适当子集的情况下,未被使用的那些方法的系数可以被设置为默认值(例如,在未使用各向异性过滤的情况下,系数afrac可以被设置为一),或者可以另外提供单独的使能信号203。
在提供使能信号203的示例中,这些信号可以具有指定每种过滤方法(或模式)是否被启用的值以及用于该过滤方法(例如,各向异性过滤模式)的任何必要参数。例如,如下所详细描述的,可以提供三个使能信号,尽管某些组合(例如{0,0,0})可能不被允许或者可能具有特殊含义(例如,导致绕过对输出端的输入):
纹理过滤单元200被布置成使用一组过滤方法中的一种或更多种的任意组合来执行过滤,并且如上所述,这可以涉及使用多个输入纹理值和多次通过流水线218-219中的一个或两个(每次通过流水线使用不同的输入值,其中输入值可以是输入纹理值或在前一次通过流水线中的一个计算的中间值)进行的计算。纹理过滤运算的示例如图3A-图3C所示。
图3A示出了当纹理过滤结合体积过滤和各向异性-2(例如,其中vol_en=1并且ani_rt=1)时执行的运算的图形表示。在该示例中,首先通过使用包括DP2的第一流水线218的两个连续运算来执行体积插值(块302,即,两次通过第一流水线218),然后DP2再次被用于各向异性乘法和最终加法(块304,即,第三次通过第一流水线218)。如果还使用三线性过滤(例如,其中vol_en=1,tri_en=1并且ani_rt=1),则DP2可以再次被用于三线性插值(块306,即,第四次通过第一流水线218)。输入的总数由下式给出:
纹理值的数量=(vol_en+1)*(ani_rt+1)*(tri_en+1)
并且因此,如果仅使用体积过滤和各向异性-2过滤,则只有4个输入(2*2*1=4),而如果还使用三线性过滤,则有8个输入(2*2*2=8)。在该示例中,可以看到根本没有使用第二流水线219。在每输入事务有两个输入的情况下,事务的数量由输入的数量除以2给出,并且图3A-图3C示出的运算顺序图的顶部处的数字指的是这些事务,而不是输入。
图3B示出了当纹理过滤涉及各向异性-4+时执行的运算的图形表示,其中这是指从4开始的所有各向异性模式(例如,其中vol_en=0并且ani_rt>1),并且图3B中输入事务周围的方括号指示对于各向异性-4不会出现的那些模式。在该示例中,使用包括加法单元的第二流水线219在两个1×8连续运算的组中对所有16个输入纹理值(1*16*1=16)进行求和(块312,即,8次通过第二流水线219)。在图3B示出的示例中,在第一流水线218(包括DP2)被用于各向异性乘法和最终加法之前(块316,即通过第一流水线218,并且可以例如使用不同的各向异性系数,因此使用DP2),组(0-6)然后使用利用第二流水线219的多个运算(块314,即又6次通过第二流水线219)被累加为:((((0+1)+4)+6)+((2+3)+5))。如果还使用三线性过滤(例如,其中vol_en=0,tri_en=1并且ani_rt=15),则DP2可以再次被用于三线性插值(块306,即第二次通过第一流水线218),并且所使用的输入纹理值的总数是32(1*16*2=32)。将认识到,图3B示出的输入的分组仅仅是一个示例,且其他示例可以以不同的方式累加分组。
图3C示出了当纹理过滤涉及体积过滤和各向异性-4+时所执行的运算的图形表示(例如,其中vol_en=1并且ani_rt=15,使得有2*16*1=32个输入,尽管与图3B中相似,图3C中输入事务周围的方括号指示对于各向异性-4不会出现的那些模式)。在该示例中,首先通过使用包括DP2的第一流水线218的多个连续运算来执行体积插值(块302,即16次通过第一流水线218),然后在该示例中,通过使用包括加法单元的第二流水线219的多个连续运算(块312,即13次通过第二流水线219),各向异性输入(0-13)被累加为:
(((((((0+1)+4)+6)+8)+10)+12)+((((((2+3)+5)+7)+9)+11)+13))。如上所述,图3C示出的累加顺序仅作为示例被示出,并且可替换地可以使用其他顺序。aniso_last输入(14-15)被加在一起(块322,即再次通过第二流水线219),然后第一流水线218(包括DP2)被用于各向异性乘法和最终加法(块316,即单次通过第一流水线218)。如果还使用三线性过滤(例如,其中vol_en=1,tri_en=1以及ani_rt=15),则DP2可以再次被用于三线性插值(块306,即再次通过第一流水线218),并且所使用的输入纹理值的总数是64(2*16*2=64)。
可以看出,在图3A-3C表示的过滤运算中,没有浮点累加运算。通过以这种方式构建运算,延迟得以减少,因为在能够处理更多输入之前,不必等待结果可用。
输入值和/或中间值被输入到流水线中的每一个的顺序(例如,为了实现图3A-图3C中任一个示出的纹理过滤运算)由控制块208控制。如上所述,每个定序器212以一组预定义的且硬编码的运算模式之一进行运算,其中选择的模式定义了应用于输入纹理值的流或多个交错的输入纹理值的流的过滤运算。定序器对运算模式的选择取决于使能信号203(其可以被称为控制输入或模式输入)。在微程序(或微代码)226中定义硬编码的运算模式的每一个,微程序226是不可编程的并且被合成为硬件,并且包括在存储的函数上运行的状态机、程序计数器227以及在各种程序(在一些示例中)中的循环计数器(例如,在多个模式之间共享相同的微程序226并且循环不平坦的情况下,那么循环时程序计数器将向后跳)。微程序定义了要对一组输入数据执行的运算的序列,以生成纹理过滤运算的最终输出。微程序中的任何跳转仅取决于控制输入,而不取决于纹理值本身。然而,在各种示例中,对此可能有一些有限的例外,例如,可能有多个预定义的输入纹理值,其停止计算序列并触发输入纹理值的输出。在各种示例中,控制程序中的跳转的模式输入可以是使能信号203、ani_rt(即各向异性比,如上所述)中的一个。因此,可以提供不同的微程序来实现图3A-图3C示出的过滤运算中的每一个,并且在各种示例中,每个调度器可以是相同的,即,它可以包括相同的一组微程序,并且在各种示例中,可以有5个或7个微程序(以及因此,运算的模式),微程序各自与过滤方法的不同组合相关。
如本文所述,微程序的使用降低了定序器212的行为的复杂性(例如,与尝试优化所有交错模式的序列相比,并具有平滑处理的模式之间的转换),并因此减小了定序器的尺寸(例如,在硬件逻辑的面积方面)。通过基于控制输入来启用微程序内的跳转,每个定序器内的微程序的数量减少,且因此每个定序器的面积减小。虽然所有定序器在上面被描述为相同的,但是在其他示例中,通过在不同的定序器内具有不同的微程序子集,可以进一步减小定序器的尺寸。
在各种示例中,微程序226被写入,使得所有存储指令在数据路径210内部被流水线化(例如,使得进入数据路径210的“指令包”包含对于计算结果的目的地,例如暂存寄存器220中的位置)。这允许在资源不可用时停止单个定序器,而不必停止数据路径(除非纹理过滤单元的下游有东西被停止)。为了防止风险(hazard),在最后一次读取暂存寄存器之前,微程序不会向暂存寄存器发起存储命令,并且微程序明确地包含必要的延迟。此外,在读取中间值时微程序包括必要的延迟,以确保中间值在被读取之前已经被写入暂存寄存器220。微程序226因此可以被描述为无风险的(hazard-free)。
如图2所示,控制块208包括多个定序器212(例如,四个定序器),并且定序器212具有重叠的活动,即,多于一个的定序器212可能需要同时使用同一流水线(例如,两个或更多个定序器可能需要同时使用第一流水线218或第二流水线219)。定序器212因此向仲裁器214指示它们的状态(例如,以用于访问资源的请求的形式,其中这些资源包括流水线218-219,并且还可以包括输出224)。仲裁器214根据固定优先级方案(即,基于预定义的规则)授予对资源(例如,对流水线218-219)的访问。在各种示例中,仲裁器214对涉及新输入纹理值(例如,INPUT 0 204或INPUT 1 206)的资源的请求进行优先级排序,否则仲裁器214在定序器212之间实现固定的优先化(例如,循环仲裁方案或其他优先化方案)。如图2所示,仲裁器214通过控制控制块208内的多路复用器216来控制对数据路径中的资源的访问。来自多路复用器216的输出包括控制信号,该控制信号控制数据路径210中的源多路复用器223的运算,并因此控制在任何时钟周期中哪些值被输入到流水线218-219中的每一个。在一些示例中,多路复用器216输出多个控制信号,以独立控制到流水线218-219中的每一个的输入。
如图3A-图3C所示,并非所有的过滤运算都以相同的顺序使用同一流水线,因此,例如,如果一个定序器在纹理值的第一输入流上执行如图3A所示的第一过滤运算,则它仅请求使用第一流水线218,而执行图3B示出的过滤运算的第二定序器主要请求使用第二流水线219。在两个定序器都请求使用第一流水线218的时刻,仲裁器214对正在执行涉及新输入纹理的运算(例如,图3A中的运算302)的定序器进行优先化,并且以其他方式实现定序器之间的固定优先化(例如,如上所述)。
如图3A-图3C所示,最终输出结果总是由DP2运算生成,因此,如图2所示,来自第一流水线218的输出被连接到来自纹理过滤单元200的输出端224,并且来自第二流水线219的输出没有被连接,而是仅被连接到控制到暂存寄存器220的存储的多路复用器222。然而,在其他示例中,在纹理过滤单元200执行其中最终运算是加法的纹理过滤运算的情况下(如由第二流水线219执行的),来自第二流水线219的输出附加地(或替代地)被连接到来自纹理过滤单元200的输出端224。
在最终输出结果总是由DP2运算生成的示例中(例如,在如图3A-图3C所示的示例中),仲裁器214可以通过控制对用于任何微程序(例如,图3A中的块304或块306、图3B和图3C中的块316或块306)中的最终DP2运算的第一流水线218的访问来控制输出结果的顺序,并且在各种示例中,如果没有准备好输出,可以(通过仲裁器214)阻止运算开始。这意味着输出224处不需要附加的储存装置(例如,为了保存多于一个的结果)。然而,在其他示例中,可以在输出224之前提供储存装置,并且在该储存装置中存储最终结果,并且可以以由控制块208控制的顺序输出最终结果,或者如上所述,在输出没有准备好的情况下,可以将输出存储在暂存寄存器220(或临时寄存器)中。
尽管图2中的纹理过滤单元200中的第一流水线218被示为包括DP2,但是在其他示例中,它可以包括单个乘法器单元。通过使用乘法器而不是DP2,流水线的尺寸(例如硬件的面积)减小了;然而,DP2(或实现相同功能的单独的乘法器和加法器)的使用确保了简单的插值是完全准确的。
图4是第二示例纹理过滤单元400的示意图,其可以被实现为图1的流水线100中的纹理过滤单元102。该纹理过滤单元400包括如上所述的第一示例纹理过滤单元200中示出的所有元件,并且另外示出了附加的信号流(例如,使定序器能够指示它们想要输入、该输入是最后一个、它们何时空闲、停止信号等的信号)和寄存器级(其中的许多也可以出现在第一示例纹理过滤单元200中,但是仅仅为了清楚起见,在图2中被省略),并且还包括主控制器单元402。在该示例中,主控制器402指示定序器212中的任何一个何时可以开始处理过滤序列(即,通过执行微程序来开始新纹理过滤运算)以及下一个输入属于哪个序列。另外,主控制器单元402跟踪定序器应该产生输出的顺序,并因此确保从纹理过滤单元400以正确的顺序生成输出。
在图2和图4示出的示例中,数据路径210仅包括单个DP2和单个加法单元。在其他示例中,数据路径210可以包括计算逻辑块的不同组合。在许多示例中,数据路径内的资源(即数据路径内的计算逻辑块)是有限的,即流水线内的计算逻辑块的总吞吐量低于定序器可以请求的吞吐量。
如上所述,定序器可以对纹理值的输入流或交错的纹理值的流进行运算。在使用交错的情况下,有助于单个过滤的输出的输入可能不会互相紧接着被接收。交错流的使用可以使用附加的使能(或控制)信号203向纹理过滤单元102、200、400发信号:
使能信号 | 可能的值 | 含义 |
交错 | 0、1 | 交错分别被禁用或启用 |
可以使用纹理值的输入流的交错,其中例如,多个纹理值(例如,R值和G值)例如同时从存储器中被访问,但是需要被单独地过滤(例如,其中对于每种颜色单独地执行颜色过滤)。这提高了效率,因为对于不同流(例如RGBA)的纹理值可以被连续地存储,并且通过使用交错,它避免了必须对纹理值进行去串行化(这对长序列来说是昂贵的)。
在上述示例中,纹理过滤单元200、400被布置以实现体积过滤、各向异性过滤和三线性过滤中的任何一种或更多种。在另一示例中,纹理过滤单元可以被布置成实现体积过滤、各向异性过滤、三线性过滤和双线性过滤的任意组合(例如,通过改变微程序)。为了能够在不显著降低最终输出速率的情况下实现双线性过滤,可以增加被配置为接收纹理值的纹理过滤单元的输入的数量(例如,输入204、206),并且可以增加数据路径块中的计算流水线的数量(例如,通过添加多个流水线,该多个流水线类似于第一流水线218,各自包括DP2和附加的暂存寄存器条目)。
图5是图2或图4示出的纹理过滤单元200、400内的控制块208的运算的示例方法的流程图。如上所述,每个定序器212基于控制输入(例如,基于使能信号203)来选择微程序226(块502)。定序器212然后执行选择的微程序,并且向仲裁器214发送使用数据路径资源(例如流水线218-219)的请求(块504)。仲裁器214基于从定序器212接收到的请求和预定义的优先级规则来给定序器212分配数据路径资源(块506)。如上所述,仲裁器214可以对其中新输入纹理值将被输入到流水线的那些请求进行优先化(即,对于仅涉及中间值处理的那些请求),并且此后可以在定序器之间应用固定的优先化方案。同样如上所述,仲裁器214可以预分配输出槽(slot)(以及因此,在各种示例中,DP2流水线)。如果被提供,主控制器402还控制下一个开始哪个定序器。
在大多数情况下,本文描述的硬件和方法实现了数据路径资源(例如,其中的流水线和计算逻辑块)的高利用率。这是与已知***相比的,已知***中经常存在未使用的逻辑、降低的性能和/或更复杂且更难维护的排序方案。本文描述的硬件和方法是自组织的,并且导致难以精确预测的利用模式。避免了优化用于串行和交错的序列的***的当前复杂性,并且有可能保证微程序是无风险的,而不会有任何显著的性能下降,因为在处理输入之后,程序变得不那么密集,并且不会阻止其他定序器处理输入。
在GPU内的纹理过滤的上下文中上面描述的技术也可以用于涉及浮点运算的其他应用,浮点运算包括对多个乘积之和(SOP)的评估,随后是累加阶段。在这样的示例中,上述纹理过滤单元可以替代地被称为计算单元,并且过滤器系数可以被SOP系数代替。其他应用的示例包括坐标变换、深度计算和一些常见的着色器计算。
另一示例描述了一种图形处理单元,其包括在硬件逻辑中实现的计算单元,该计算单元包括:多个输入端,该多个输入端被布置成接收多个SOP系数和每个时钟周期一个或更多个输入值,该多个SOP系数包括与多个不同SOP相关的系数(例如,以执行诸如变换或着色的运算);数据路径块,其包括多个并行计算流水线,每个流水线包含至少一个硬件逻辑部件,该硬件逻辑部件被配置为接收多个输入并生成输出值作为SOP计算的一部分;以及包括多个定序器和仲裁器的控制块,其中每个定序器包括多个硬编码的微程序和硬件逻辑,该硬件逻辑被布置成基于一个或更多个控制输入来选择微程序之一,其中,每个微程序将待由数据路径块中的流水线执行的运算的序列定义为SOP计算的一部分,并且不同的微程序实现不同的SOP,并且其中,仲裁器包括硬件逻辑,该硬件逻辑被布置成根据预定义的优先级规则来控制定序器对计算流水线的访问。
图6示出了在其中可以实现本文所描述的图形处理***的计算机***600。计算机***包括CPU 602、GPU 604、存储器606和诸如显示器616、扬声器618和摄像机620的其他设备614。在GPU 604内实现包括如上所述的纹理过滤单元的GPU流水线100。计算机***的部件可以经由通信总线622彼此通信。
图1-图5被示出为包括多个功能块。这仅仅是示意性的,且并不旨在限定在这些实体的不同逻辑元件之间的严格划分。可以以任何合适的方式来提供每个功能块。应当理解,在本文被描述为由纹理过滤单元(或更多地,纹理过滤单元内的系数合并逻辑块)形成的中间值不需要在任何点处由硬件逻辑物理地生成,并且可以仅表示方便地描述由纹理过滤单元在其输入端和输出端之间执行的处理的逻辑值。
可以在集成电路上以硬件体现本文描述的纹理过滤单元。本文描述的纹理过滤单元可以被配置为执行本文描述的方法中的任一个。通常,以上所描述的功能、方法、技术或部件中的任一个都能够以软件、固件、硬件(例如,固定逻辑电路)、或它们的任何组合来实现。本文可以使用术语“模块”、“功能”、“部件”、“元件”、“单元”、“块”和“逻辑”,来一般性地表示软件、固件、硬件、或它们的任何组合。在软件实现方式的情况下,模块、功能、部件、元件、单元、块或逻辑表示当在处理器上被执行时执行特定任务的程序代码。本文描述的算法和方法可以由执行使处理器(一个/更多个)执行算法/方法的代码的一个或更多个处理器来执行。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器和可以使用磁、光或其他技术来存储指令或其他数据并可以被机器访问的其他存储器设备。
如本文中所使用的术语计算机程序代码和计算机可读指令是指用于处理器的任何类型的可执行代码,包括以机器语言、解释语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节码、定义集成电路的代码(诸如,硬件描述语言或网表)、以及以诸如C、Java或OpenCL的编程语言代码表达的代码。可执行代码可以是例如任何类型的软件、固件、脚本、模块或库,当其在虚拟机或其他软件环境下被适当地执行、处理、解释、编译、执行时,使支持可执行代码的计算机***的处理器执行由代码指定的任务。
处理器、计算机或计算机***可以是具有处理能力使得其可以执行指令的任何类型的设备、机器或专用电路、或它们的集合或部分。处理器可以是任何类型的通用处理器或专用处理器,诸如CPU、GPU、片上***、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)、物理处理单元(PPU)、无线电处理单元(RPU)、数字信号处理器(DSP)、通用处理器(例如,通用GPU)、微处理器、被设计为在CPU外部加速任务的任何处理单元等。计算机或计算机***可以包括一个或更多个处理器。本领域中的技术人员将认识到,这样的处理能力被结合到很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电装置、PC、服务器、移动电话、个人数字助理和很多其它设备。
还旨在包含对如本文所描述的硬件的配置进行限定的软件,诸如HDL(硬件描述语言)软件,如用于设计集成电路或用于配置可编程芯片以执行期望功能。也就是说,可以提供计算机可读存储介质,其具有在其上编码的以集成电路定义数据集的形式的计算机可读程序代码,其当在集成电路制造***中被处理(即运行)时,配置***以制造被配置成执行本文描述的方法中的任一个的纹理过滤单元,或制造包括本文描述的任何装置的纹理过滤单元。集成电路定义数据集可以例如是集成电路描述。
因此,可以提供在集成电路制造***处制造如本文所描述的纹理过滤单元的方法。此外,可以提供一种集成电路定义数据集,其在集成电路制造***中被处理时使制造纹理过滤单元的方法被执行。
集成电路定义数据集可以是计算机代码的形式,例如,作为用于配置可编程芯片的网表、代码,作为限定任何级处的集成电路的硬件描述语言(包括作为寄存器传送级(RTL)代码),作为诸如Verilog或VHDL的高级电路表示,以及作为诸如OASIS(RTM)和GDSII的低级电路表示。在逻辑上限定集成电路的较高级的表示(诸如RTL)可以在计算机***处被处理,该计算机***被配置成在软件环境的背景下生成集成电路的制造定义,包括电路元件和用于组合这些元件的规则的定义,以便生成由该表示如此定义的集成电路的制造定义。如软件在计算机***处执行以便限定机器的通常情况,可以需要一个或更多个中间用户步骤(例如,提供命令、变量等),以便被配置为生成集成电路的制造定义的计算机***执行对集成电路进行定义的代码,从而生成该集成电路的制造定义。
现在将参考图7描述在集成电路制造***处处理集成电路定义数据集以便配置***以制造纹理过滤单元的示例。
图7示出了被配置为制造如本文的任何示例中所描述的纹理过滤单元(或包括如本文所描述的纹理过滤单元的GPU)的集成电路(IC)制造***702的示例。具体地,IC制造***702包括布局处理***704和集成电路生成***706。IC制造***702配置成接收IC定义数据集(例如,定义如在本文的任何示例中所描述的纹理过滤单元),处理IC定义数据集,并根据IC定义数据集生成IC(例如,其体现如在本文的任何示例中所描述的纹理过滤单元)。IC定义数据集的处理配置IC制造***702以制造体现如在本文的任何示例中所描述的纹理过滤单元的集成电路。
布局处理***704被配置为接收及处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,且例如可涉及合成RTL代码以确定例如在逻辑部件(例如,与非(NAND)、或非(NOR)、与(AND)、或(OR)、MUX和触发器(FLIP-FLOP)部件)方面待生成的电路的门级表示。可通过确定逻辑部件的位置信息,根据电路的门级表示来确定电路布局。这可自动地或借助用户干预来完成,以便优化电路布局。当布局处理***704已经确定电路布局时,它可以向IC生成***706输出电路布局定义。例如,电路布局定义可以是电路布局描述。
如在本领域中已知的,IC生成***706根据电路布局定义生成IC。例如,IC生成***706可实现半导体器件制造过程以生成IC,这可以涉及光刻和化学处理步骤的多步骤序列,在该多步骤序列期间,电子电路逐步在由半导体材料制成的晶圆上被创建。电路布局定义可以是可以在光刻过程中使用的用于根据电路定义生成IC的掩模的形式。可选地,被提供到IC生成***706的电路布局定义可以是计算机可读代码的形式,IC生成***706可以使用该计算机可读代码来形成适当的掩模以在生成IC时使用。
由IC制造***702执行的不同过程可以都在一个位置上例如由一方来实现。可选地,IC制造***702可以是分布式***,使得过程中的一些可以在不同的位置处被执行,并可以由不同方来执行。例如,以下中的阶段的一些可在不同位置和/或由不同方执行:(i)合成表示IC定义数据集的RTL代码,以便形成要生成的电路的门级表示;(ii)基于门级表示,生成电路布局;(iii)根据电路布局,形成掩模;以及(iv)使用掩模制造集成电路。
在其它示例中,在集成电路制造***处对集成电路定义数据集的处理可以配置***以制造纹理过滤单元,而无需处理IC定义数据集以便确定电路布局。例如,集成电路定义数据集可以定义可重构处理器(例如FPGA)的配置,并且该数据集的处理可以配置IC制造***以生成具有该定义的配置的可重构处理器(例如,通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造定义数据集在集成电路制造***中被处理时可使集成电路制造***生成如本文中所描述的设备。例如,集成电路制造***以如上参考图7所描述的方式通过集成电路制造定义数据集进行的配置可以使如本文中所描述的设备得以制造。
在一些示例中,集成电路定义数据集可包括软件,该软件在数据集处定义的硬件上运行或与在数据集处定义的硬件组合运行。在图7所示的示例中,IC生成***还可以由集成电路定义数据集配置,以在制造集成电路时,根据在集成电路定义数据集处定义的程序代码将固件加载到该集成电路上,或以其他方式向集成电路提供程序代码以用于与集成电路一起使用。
本领域中的技术人员将认识到,用于存储程序指令的存储设备可以被分布在网络中。例如,远程计算机可存储被描述为软件的过程的示例。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可以按需下载软件的片段,或在本地终端处执行一些软件指令而在远程计算机(或计算机网络)处执行一些软件指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路(例如DSP、可编程逻辑阵列等)执行。
本文描述的方法可以由配置有软件的计算机执行,软件是以存储在有形存储介质上的机器可读形式,例如以包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式,或以包括适合于当在计算机上运行程序时执行本文描述的任何方法的所有步骤的计算机程序代码方式的计算机程序的形式,并且其中计算机程序可以被体现在计算机可读存储介质上。有形(或非暂时性)存储介质的示例包括磁盘、拇指驱动器、存储卡等,且并不包括传播的信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。
本文描述的硬件部件可以由在其上编码有计算机可读程序代码的非暂时性计算机可读存储介质生成。
存储在实现所公开的方面时使用的机器可执行数据的存储器可以是非暂时性介质。非暂时性介质可以是易失性的或非易失性的。易失性非暂时性介质的示例包括基于半导体的存储器,例如SRAM或DRAM。可用于实现非易失性存储器的技术的示例包括光学和磁性存储器技术、闪存、相变存储器、电阻式RAM。
对“逻辑”的特定引用是指执行一种功能或更多种功能的结构。逻辑的示例包括被布置成执行这些功能(一种/更多种功能)的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。作为示例,这样的晶体管和/或其它元件可以用于形成实现和/或包含存储器(例如寄存器、触发器或锁存器)、逻辑运算器(例如布尔运算)、数学运算器(例如加法器、乘法器或移位器)和互连的电路或结构。这样的元件可以作为定制电路或标准单元库、宏或以其它抽象级被提供。可在特定的布置中将这样的元件互连。逻辑可包括固定功能的电路,且电路可被编程以执行一种功能或更多种功能;这样的编程可以由固件或软件更新或控制机构提供。被识别为执行一种功能的逻辑也可包括实现组成性功能或子过程的逻辑。在示例中,硬件逻辑具有实现固定功能操作、或多个操作、状态机或过程的电路。
当与已知的实现进行比较时,在本申请中阐述的概念在设备、装置、模块和/或***中(以及在本文所实现的方法中)的实现可以引起性能改进。性能改进可以包括增加的计算性能、减少的延迟、增加的吞吐量和/或减少的功耗中的一个或更多个。在这样的设备、装置、模块和***(例如,在集成电路中)的制造期间,性能改进可以与物理实现相折衷,从而改进制造方法。例如,性能改进可以针对布局面积进行权衡,从而与已知实现的性能匹配,但使用更少的硅。这可以例如通过以串行化方式重用功能块或在设备、装置、模块和/或***的单元之间共享功能块来完成。相反,可以权衡在设备、装置、模块和***的物理实现中产生改善(诸如减小的硅面积)的本申请中所阐述的概念以供改进性能。这可以通过例如在预定面积预算内制造模块的多个实例来完成。
如对技术人员将明显的是,本文给出的任何范围或设备值可以被扩展或改变而不失去所寻求的效果。
将理解的是,上面描述的益处和优点可以涉及一个实施例或可以涉及若干实施例。实施例不限于解决任何或全部所陈述的问题的那些实施例或具有任何或全部所陈述的益处和优点的那些实施例。
对“一个(an)”项目的任何引用指的是那些项目中的一个或更多个。术语“包括”在本文中用于意指包括所识别的方法块或元件,但这样的块或元件并不包括独有列表,且装置可包含额外的块或元件,并且方法可包含额外的操作或元件。此外,块、元件和操作本身并不是隐含地封闭的。
本文描述的方法的步骤可以按照任何适当的顺序被执行或在适当时同时被执行。在附图中的框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或多个步骤的并行执行。此外,各个块可以从任何方法中删除而不偏离本文描述的主题的精神和范围。上面描述的任何示例的方面可以与所描述的其它示例中的任一个的方面组合以形成另外的示例,而不失去所寻求的效果。在附图的元件被示为由箭头连接的场合,将认识到,这些箭头仅示出在元件之间的一个示例通信流(包括数据和控制消息)。在元件之间的流可以在任一方向上或在两个方向上。
申请人特此独立地公开了本文中所描述的每个单独特征以及两个或更多个这样的特征的任何组合,公开的程度是使得这样的特征或组合能够基于本说明书作为整体依据本领域技术人员的公知常识来实现,而无论这样的特征或特征的组合是否解决了本文中所公开的任何问题。鉴于上述描述,对于本领域技术人员明显的是,可在本发明的范围内进行各种修改。
本申请还提供了以下项目:
项目1.一种图形处理单元,所述图形处理单元包括在硬件逻辑中实现的纹理过滤单元,所述纹理过滤单元包括:
多个输入端,所述多个输入端被布置成接收一个或更多个纹理值和多个过滤器系数,所述多个过滤器系数包括与多个不同纹理过滤方法相关的系数;
数据路径块,所述数据路径块包括一个或更多个计算流水线,每个计算流水线包含至少一个硬件逻辑部件,所述硬件逻辑部件被配置成接收多个输入并生成输出值作为纹理过滤运算的一部分;以及
控制块,所述控制块包括多个定序器和仲裁器,
其中,每个定序器包括多个硬编码的微程序和硬件逻辑,所述硬件逻辑被布置成基于一个或更多个控制输入来选择所述微程序之一,其中,每个微程序将待由所述数据路径块中的所述流水线执行的运算的序列定义为纹理过滤运算的一部分,并且不同的微程序实现纹理过滤方法的不同组合,并且
其中,所述仲裁器包括硬件逻辑,所述硬件逻辑被布置成根据优先级规则来控制所述定序器对所述计算流水线的访问。
项目2.根据项目1所述的图形处理单元,其中,由微程序定义的所述运算的序列中的除了所述序列中的最终运算之外的每个运算生成中间值,并且所述序列中的所述最终运算生成输出值,并且其中,所述数据路径块还包括暂存寄存器,其中,所述暂存寄存器被布置成当在微程序中执行运算时,存储由所述计算流水线之一生成的所述中间值。
项目3.根据项目2所述的图形处理单元,其中,所述暂存寄存器包括用于所述控制块中的每个定序器的一组暂存寄存器,其中,用于定序器的所述一组暂存寄存器被布置成当执行由选择的微程序定义的所述序列中的所述运算之一时,存储由所述计算流水线之一生成的所述中间值。
项目4.根据项目2所述的图形处理单元,其中,所述暂存寄存器还被布置成存储输出值,并且其中,所述计算流水线之一包括旁路路径,所述旁路路径绕过所述计算流水线之一内的所述硬件逻辑部件。
项目5.根据项目2-4中任一项所述的图形处理单元,其中,对于由所述计算流水线之一生成的每个中间值,所述控制块输出对于中间结果的目的地。
项目6.根据项目5所述的图形处理单元,其中,对于中间结果的所述目的地是所述暂存寄存器中的位置。
项目7.根据项目1所述的图形处理单元,其中,每个定序器被布置成,当执行选择的微程序时,向所述仲裁器发送用于访问所述数据路径块中的所述流水线之一的请求的序列,每个请求对应于由所述选择的微程序定义的所述序列中的运算,并且其中,所述仲裁器中的所述硬件逻辑被布置成通过将所述优先级规则应用于从所述定序器接收的所述请求来控制对所述计算流水线的访问。
项目8.根据项目1所述的图形处理单元,其中,所述优先级规则对涉及新输入纹理值的运算的访问进行优先化。
项目9.根据项目1所述的图形处理单元,其中,所述控制块还包括主控制器单元,所述主控制器单元被布置成指示定序器何时能够开始执行微程序,并且控制输出从所述纹理过滤单元经由输出端被输出的顺序。
项目10.根据项目1所述的图形处理单元,其中,基于所述控制输入而不是基于所述纹理值来控制微程序中的任何状态转换。
项目11.根据项目1所述的图形处理单元,其中,所述数据路径块包括两个并行计算流水线。
项目12.根据项目11所述的图形处理单元,其中,所述两个流水线中的第一个包括二维点积单元,并且所述两个流水线中的第二个包括加法单元。
项目13.根据项目1所述的图形处理单元,其中,所述数据路径块包括多个并行计算流水线。
项目14.根据项目1所述的图形处理单元,其中,所述控制块包括四个定序器。
项目15.根据项目1所述的图形处理单元,其中,所述输入纹理值包括来自同时从存储器访问的不同流的多个交错的纹理值。
项目16.一种在GPU内进行纹理过滤的方法,所述GPU包括纹理过滤单元,并且所述纹理过滤单元包括数据路径块和控制块,所述数据路径块包括一个或更多个计算流水线,所述控制块包括多个定序器和仲裁器,所述方法包括:
在每个定序器中,基于一个或更多个控制输入来选择微程序,其中,所述微程序将待由所述数据路径块中的所述流水线执行的运算的序列定义为纹理过滤运算的一部分,并且不同的微程序实现纹理过滤方法的不同组合;
在每个定序器中执行选择的微程序,并且将用于访问所述数据路径块中的所述流水线之一的请求的序列发送到所述仲裁器,每个请求对应于由所述选择的微程序定义的所述序列中的运算;以及
在所述仲裁器中,基于接收到的请求和优先级规则,将所述数据路径块中的所述流水线分配给所述定序器之一。
项目17.根据项目16所述的方法,还包括:
在流水线中生成输出值作为纹理过滤运算的一部分。
项目18.根据项目17所述的方法,其中,生成输出值作为纹理过滤运算的一部分包括:
根据由微程序定义的运算的所述序列中的、除所述序列中的最终运算之外的每个运算来生成中间值;
根据所述序列中的所述最终运算生成输出值;以及
在所述数据路径块中的暂存寄存器中存储所述中间值。
项目19.根据项目18所述的方法,还包括:
响应于不能输出输出值,存储所述输出值。
项目20.根据项目19所述的方法,其中,所述输出值被存储在所述暂存寄存器中,并且其中,所述方法还包括:
经由计算流水线中的旁路路径,输出来自所述纹理过滤单元的存储的输出值,其中,所述旁路路径绕过所述计算流水线内的任何计算逻辑块。
Claims (20)
1.一种图形处理单元,所述图形处理单元包括在硬件逻辑中实现的计算单元,所述计算单元包括:
多个输入端,所述多个输入端被布置成接收多个乘积之和SOP系数和每个时钟周期一个或更多个输入值,所述多个SOP系数包括与多个不同SOP相关的系数;
数据路径块,所述数据路径块包括一个或更多个计算流水线,每个计算流水线包含至少一个硬件逻辑部件,所述硬件逻辑部件被配置成接收多个输入并生成输出值作为SOP运算的一部分;以及
控制块,所述控制块包括多个定序器和仲裁器,
其中,每个定序器包括多个硬编码的微程序(226)和硬件逻辑,所述硬件逻辑被布置成基于一个或更多个控制输入来选择所述微程序之一,其中,每个微程序将待由所述数据路径块中的所述流水线执行的运算的序列定义为SOP计算的一部分,并且不同的微程序实现不同的SOP,并且
其中,所述仲裁器包括硬件逻辑,所述硬件逻辑被布置成根据优先级规则来控制所述定序器对所述计算流水线的访问。
2.根据权利要求1所述的图形处理单元,其中,所述优先级规则对涉及新输入纹理值的运算的访问进行优先化。
3.根据权利要求1所述的图形处理单元,其中,由微程序定义的所述运算的序列中的除了所述序列中的最终运算之外的每个运算生成中间值,并且所述序列中的所述最终运算生成输出值,并且其中,所述数据路径块还包括暂存寄存器,其中,所述暂存寄存器被布置成当在微程序中执行运算时,存储由所述计算流水线之一生成的所述中间值。
4.根据权利要求3所述的图形处理单元,其中,所述暂存寄存器包括用于所述控制块中的每个定序器的一组暂存寄存器,其中,用于定序器的所述一组暂存寄存器被布置成当执行由选择的微程序定义的所述序列中的所述运算之一时,存储由所述计算流水线之一生成的所述中间值。
5.根据权利要求3所述的图形处理单元,其中,所述暂存寄存器还被布置成存储输出值,并且其中,所述计算流水线之一包括旁路路径,所述旁路路径绕过所述计算流水线之一内的所述硬件逻辑部件。
6.根据权利要求3-5中任一项所述的图形处理单元,其中,对于由所述计算流水线之一生成的每个中间值,所述控制块输出对于中间结果的目的地。
7.根据权利要求6所述的图形处理单元,其中,对于中间结果的所述目的地是所述暂存寄存器中的位置。
8.根据权利要求1所述的图形处理单元,其中,每个定序器被布置成,当执行选择的微程序时,向所述仲裁器发送用于访问所述数据路径块中的所述流水线之一的请求的序列,每个请求对应于由所述选择的微程序定义的所述序列中的运算,并且其中,所述仲裁器中的所述硬件逻辑被布置成通过将所述优先级规则应用于从所述定序器接收的所述请求来控制对所述计算流水线的访问。
9.根据权利要求1所述的图形处理单元,其中,所述优先级规则对涉及新输入值的运算的访问进行优先化。
10.根据权利要求1所述的图形处理单元,其中,所述控制块还包括主控制器单元,所述主控制器单元被布置成指示定序器何时能够开始执行微程序,并且控制输出从所述计算单元经由输出端被输出的顺序。
11.根据权利要求1所述的图形处理单元,其中,基于所述控制输入而不是基于所述输入值来控制微程序中的任何状态转换。
12.根据权利要求1所述的图形处理单元,其中,所述数据路径块包括多个并行计算流水线。
13.根据权利要求1所述的图形处理单元,其中,所述控制块中的所有的所述定序器是相同的。
14.根据权利要求1所述的图形处理单元,其中,
所述输入值包括来自同时从存储器访问的不同流的多个交错的输入值。
15.一种在图形处理单元GPU内评估多个乘积之和SOP的方法,所述GPU包括计算单元,并且所述计算单元包括数据路径块和控制块,所述数据路径块包括一个或更多个计算流水线,所述控制块包括多个定序器和仲裁器,所述方法包括:
在每个定序器中,基于一个或更多个控制输入来选择微程序,其中,所述微程序将待由所述数据路径块中的所述流水线执行的运算的序列定义为SOP计算的一部分,并且不同的微程序实现不同的SOP;
在每个定序器中执行选择的微程序,并且将用于访问所述数据路径块中的所述流水线之一的请求的序列发送到所述仲裁器,每个请求对应于由所述选择的微程序定义的所述序列中的运算;以及
在所述仲裁器中,基于接收到的请求和优先级规则,将所述数据路径块中的所述流水线分配给所述定序器之一。
16.根据权利要求15所述的方法,其中,所述优先级规则对涉及新输入纹理值的运算的访问进行优先化。
17.根据权利要求15所述的方法,还包括:
在流水线中生成输出值作为SOP计算的一部分。
18.根据权利要求17所述的方法,其中,生成输出值作为SOP计算的一部分包括:
根据由微程序定义的运算的所述序列中的、除所述序列中的最终运算之外的每个运算来生成中间值;
根据所述序列中的所述最终运算生成输出值;以及
在所述数据路径块中的暂存寄存器中存储所述中间值。
19.根据权利要求18所述的方法,还包括:
响应于不能输出输出值,存储所述输出值。
20.根据权利要求19所述的方法,其中,所述输出值被存储在所述暂存寄存器中,并且其中,所述方法还包括:
经由计算流水线中的旁路路径,输出来自所述计算单元的存储的输出值,其中,所述旁路路径绕过所述计算流水线内的任何计算逻辑块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1805637.4A GB2567507B (en) | 2018-04-05 | 2018-04-05 | Texture filtering with dynamic scheduling |
GB1805637.4 | 2018-04-05 | ||
CN201910260593.8A CN110349244B (zh) | 2018-04-05 | 2019-04-02 | 具有动态调度的纹理过滤 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910260593.8A Division CN110349244B (zh) | 2018-04-05 | 2019-04-02 | 具有动态调度的纹理过滤 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115393493A true CN115393493A (zh) | 2022-11-25 |
Family
ID=62202900
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910260593.8A Active CN110349244B (zh) | 2018-04-05 | 2019-04-02 | 具有动态调度的纹理过滤 |
CN202210910053.1A Pending CN115393493A (zh) | 2018-04-05 | 2019-04-02 | 具有动态调度的纹理过滤 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910260593.8A Active CN110349244B (zh) | 2018-04-05 | 2019-04-02 | 具有动态调度的纹理过滤 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10614610B2 (zh) |
EP (2) | EP3591619B1 (zh) |
CN (2) | CN110349244B (zh) |
GB (2) | GB2567507B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11544203B2 (en) | 2019-12-30 | 2023-01-03 | Micron Technology, Inc. | Sequencer chaining circuitry |
CN111966405B (zh) * | 2020-07-03 | 2022-07-26 | 北京航空航天大学杭州创新研究院 | 一种基于GPU的Polar码高速并行译码方法 |
US11604653B2 (en) | 2020-12-11 | 2023-03-14 | International Business Machines Corporation | Identifying dependencies in a control sequence for execution on a hardware accelerator |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6897871B1 (en) * | 2003-11-20 | 2005-05-24 | Ati Technologies Inc. | Graphics processing architecture employing a unified shader |
US20050140688A1 (en) * | 2003-12-29 | 2005-06-30 | Kim Pallister | Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems |
US8190669B1 (en) * | 2004-10-20 | 2012-05-29 | Nvidia Corporation | Multipurpose arithmetic functional unit |
US7348988B2 (en) * | 2005-05-06 | 2008-03-25 | Via Technologies, Inc. | Texture cache control using an adaptive missing data table in a multiple cache computer graphics environment |
US8275949B2 (en) * | 2005-12-13 | 2012-09-25 | International Business Machines Corporation | System support storage and computer system |
TWI351652B (en) * | 2007-12-24 | 2011-11-01 | Univ Nat Chiao Tung | Run-time reconfigurable fabric for 3d texture filt |
US20130166882A1 (en) * | 2011-12-22 | 2013-06-27 | Jack Hilaire Choquette | Methods and apparatus for scheduling instructions without instruction decode |
US9367948B2 (en) * | 2013-11-14 | 2016-06-14 | Intel Corporation | Flexible filter logic for multi-mode filtering of graphical texture data |
GB2527367B (en) * | 2014-06-20 | 2017-01-18 | Imagination Tech Ltd | Replicating logic blocks to enable increased throughput |
US10776156B2 (en) * | 2016-09-30 | 2020-09-15 | Intel Corporation | Thread priority mechanism |
CN106683171B (zh) * | 2016-12-12 | 2020-04-28 | 中国航空工业集团公司西安航空计算技术研究所 | 一种GPU多线程纹理映射SystemC建模结构 |
-
2018
- 2018-04-05 GB GB1805637.4A patent/GB2567507B/en active Active
- 2018-04-05 GB GB1911746.4A patent/GB2577619B/en active Active
-
2019
- 2019-03-29 US US16/370,493 patent/US10614610B2/en active Active
- 2019-04-02 CN CN201910260593.8A patent/CN110349244B/zh active Active
- 2019-04-02 CN CN202210910053.1A patent/CN115393493A/zh active Pending
- 2019-04-03 EP EP19167183.3A patent/EP3591619B1/en active Active
- 2019-04-03 EP EP22206947.8A patent/EP4191535A1/en active Pending
-
2020
- 2020-02-25 US US16/800,242 patent/US11200723B2/en active Active
-
2021
- 2021-11-30 US US17/538,933 patent/US11836845B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3591619A1 (en) | 2020-01-08 |
CN110349244B (zh) | 2022-08-16 |
GB2577619A (en) | 2020-04-01 |
EP3591619B1 (en) | 2023-09-27 |
GB2567507B (en) | 2019-10-02 |
GB201911746D0 (en) | 2019-10-02 |
CN110349244A (zh) | 2019-10-18 |
US10614610B2 (en) | 2020-04-07 |
US11200723B2 (en) | 2021-12-14 |
GB2577619A8 (en) | 2020-06-03 |
US20220084276A1 (en) | 2022-03-17 |
US20190311520A1 (en) | 2019-10-10 |
GB2577619B (en) | 2021-01-06 |
US20200193680A1 (en) | 2020-06-18 |
GB201805637D0 (en) | 2018-05-23 |
US11836845B2 (en) | 2023-12-05 |
GB2567507A (en) | 2019-04-17 |
EP4191535A1 (en) | 2023-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11836845B2 (en) | Texture filtering with dynamic scheduling in computer graphics | |
CN109658492B (zh) | 用于基于拼贴的渲染***的仲裁器 | |
JP5006390B2 (ja) | 算術および初等関数ユニットを有する図形プロセッサ | |
CN108399594B (zh) | 处理器的高效数据选择 | |
CN110717989A (zh) | 可缩放并行镶嵌 | |
EP4109410A1 (en) | Efficient convolution operations | |
CN111353927A (zh) | 在处理器中调度任务 | |
CN111354049B (zh) | Astc内插 | |
CN111429331B (zh) | 基于图块的调度 | |
GB2572605A (en) | High accuracy texture filtering | |
CN113888389A (zh) | 用于图形处理单元的输入/输出过滤器单元 | |
CN106020776B (zh) | Simd处理模块 | |
EP4109411A1 (en) | Efficient convolution operations | |
US11656877B2 (en) | Wavefront selection and execution |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |