CN110349245A - 高精度纹理过滤 - Google Patents
高精度纹理过滤 Download PDFInfo
- Publication number
- CN110349245A CN110349245A CN201910260753.9A CN201910260753A CN110349245A CN 110349245 A CN110349245 A CN 110349245A CN 201910260753 A CN201910260753 A CN 201910260753A CN 110349245 A CN110349245 A CN 110349245A
- Authority
- CN
- China
- Prior art keywords
- texture
- clock cycle
- multiplier
- input
- texture value
- 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 claims abstract description 62
- 238000000034 method Methods 0.000 claims abstract description 67
- 238000006243 chemical reaction Methods 0.000 claims abstract description 27
- 238000004519 manufacturing process Methods 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 37
- 238000003860 storage Methods 0.000 claims description 18
- 230000005611 electricity Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000005215 recombination Methods 0.000 description 5
- 230000006798 recombination Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000009877 rendering Methods 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
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 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
- 238000012952 Resampling Methods 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004040 coloring Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000004744 fabric Substances 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
- 238000001259 photo etching Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000036299 sexual function Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- 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
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
- G06F7/4991—Overflow or underflow
- G06F7/49915—Mantissa overflow or underflow in handling floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本申请涉及高精度纹理过滤。描述了一种纹理过滤单元,该纹理过滤单元包括:输入端,其被布置成接收每个时钟周期至少两个纹理值和多个过滤器系数,多个过滤器系数涉及多个不同的纹理过滤方法;硬件逻辑,其被布置成将输入纹理值转换成定点表示;系数合并逻辑块,其被布置成根据多个过滤器系数针对每个输入纹理值生成单个复合过滤器系数;对于每个输入纹理值的一个乘法器,其中,每个乘法器被布置成将输入纹理值之一乘以其相应的单个复合过滤器系数;加法单元,其被布置成将来自乘法器的每一个的输出相加在一起;硬件逻辑,其被布置成将来自加法单元的输出转换回浮点格式;以及输出端,其被布置成输出来自加法单元的转换的输出。
Description
技术领域
本申请涉及高精度纹理过滤。
背景
在3D计算机图形中,场景内包含的许多信息被编码为3D几何形状的表面属性。因此,作为用于将该信息编码为位图的有效技术的纹理映射是渲染图像的过程的主要部分。通常不可能直接从纹理中读取,因为3D几何形状的投影通常需要某种形式的重采样,以及因此,作为渲染场景的一部分,图形处理单元(GPU)执行纹理过滤。例如,这可能是因为(在渲染的场景中的)像素中心与纹理中的纹素(texel)中心没有对齐(其中纹理包括纹素的阵列,使得纹理中的纹素类似于图像中的像素),并且在不同情况下,像素可以大于或小于纹素。
存在用于纹理过滤的许多不同的方法,包括体积(volumetric)过滤、各向异性过滤和三线性过滤,并且在各种示例中,可以以各种组合来应用这些方法。过滤可能是一个计算量很大的运算,并且过滤中的任何误差(例如舍入误差)都可能导致渲染的场景中的视觉假象(artefact)。
下面所述的实施例仅作为示例被提供并且不是对解决实现硬件中的纹理过滤的已知方法的任何或全部缺点的实现方式的限制。
概述
提供本概述来以简化的形式引入在以下详细描述中将进一步描述的概念的选择。本概述不旨在标识出要求保护的主题的关键特征或必要特征,亦不旨在用于限定要求保护的主题的范围。
描述了一种纹理过滤单元,其包括:输入端,其被布置为接收每个时钟周期至少两个纹理值和多个(a plurality of)过滤器系数,多个过滤器系数与多个不同纹理过滤方法相关;硬件逻辑,其被布置成将输入纹理值转换成定点格式表示;系数合并逻辑块,其被布置成根据多个过滤器系数针对每个输入纹理值生成单个复合过滤器系数;对于每个输入纹理值的一个乘法器,其中,每个乘法器被布置成将输入纹理值之一乘以其相应的单个复合过滤器系数;加法单元,其被布置成将来自乘法器的每一个的输出相加在一起;硬件逻辑,其被布置成将来自加法单元的输出转换回浮点格式;以及输出端,其被布置成输出来自加法单元的转换的输出。
第一方面提供了一种在硬件逻辑中实现的纹理过滤单元,该纹理过滤单元包括:多个输入端,其被布置成接收每个时钟周期至少两个纹理值和多个过滤器系数,该多个过滤器系数包括与多个不同纹理过滤方法相关的系数;格式转换逻辑,其被布置成将输入纹理值从浮点格式转换成定点有效数(significand)和指数;系数合并逻辑块,其被布置成根据多个过滤器系数针对每个输入纹理值生成单个复合过滤器系数;对于每个输入纹理值的一个乘法器,其中,每个乘法器被布置成将输入纹理值中的一个的有效数乘以其相应的单个复合过滤器系数;加法单元,其被布置成将来自乘法器中的每一个的输出相加在一起;硬件逻辑,其被布置成将来自加法单元的输出从定点格式转换成浮点格式;以及输出端,其被布置成输出来自加法单元的转换的输出。
第二方面提供了一种在硬件逻辑中执行纹理过滤的方法,该方法包括:在纹理过滤单元中,接收每个时钟周期至少两个纹理值和多个过滤器系数,多个过滤器系数包括与多个不同纹理过滤方法相关的系数;将输入纹理值从浮点格式转换成定点有效数和指数;根据多个过滤器系数针对每个输入纹理值生成单个复合过滤器系数;在多个乘法器的每一个中,将输入纹理值之一的有效数乘以其相应的单个复合过滤器系数,其中,多个乘法器包括对于在时钟周期中接收的每个输入纹理值的一个乘法器;将来自乘法器中的每一个的输出相加在一起,并将结果从定点格式转换成浮点格式;以及输出转换的结果。
可以在集成电路上以硬件体现本文描述的纹理过滤单元。可以提供在集成电路制造系统处制造纹理过滤单元的方法。可以提供集成电路定义数据集,其在集成电路制造系统中被处理时将系统配置为制造纹理过滤单元。可以提供非暂时性计算机可读存储介质,在该非暂时性计算机可读存储介质上存储有集成电路的计算机可读描述,其当被处理时使布局处理系统生成在集成电路制造系统中使用的电路布局描述,以便制造纹理过滤单元。
可以提供集成电路制造系统,其包括:非暂时性计算机可读存储介质,其上储存有描述纹理过滤单元的计算机可读集成电路描述;布局处理系统,其被配置为对集成电路描述进行处理,以便生成体现纹理过滤单元的集成电路的电路布局描述;以及集成电路生成系统,其被配置为根据电路布局描述来制造纹理过滤单元。
可以提供用于执行本文中所描述的任何方法的计算机程序代码。可提供其上储存有计算机可读指令的非暂时性计算机可读存储介质,该计算机可读指令在计算机系统处被执行时使计算机系统执行本文中所描述的任何方法。
如对技术人员将明显的是,以上特征可酌情进行组合,并且可与本文中所描述的示例的任意方面组合。
附图说明
现在将参照附图对示例进行详细描述,在附图中:
图1是示例图形处理单元(GPU)流水线(pipeline)的示意图;
图2是第一示例纹理过滤单元的示意图;
图3是第二示例纹理过滤单元的示意图;
图4是第三示例纹理过滤单元的示意图;
图5是示例系数合并逻辑块的示意图;
图6示出了在其中实现如本文所描述的纹理过滤单元的计算机系统;以及
图7示出了用于生成体现如本文所描述的纹理过滤单元的集成电路的集成电路制造系统。
附图图示了不同的示例。技术人员将认识到,图中所示出的元件边界(例如,框、框的组、或其他形状)表示边界的一个示例。在一些示例中可能的是,一个元件可以被设计为多个元件,或者多个元件可被设计为一个元件。在适当情况下,共同的参考数字在整个附图中用于指示类似的特征。
详细描述
以下的描述是通过示例的方式来呈现的,以使本领域技术人员能够制作并使用本发明。本发明不限于本文中所描述的实施例,并且对所公开的实施例的各种修改对于本领域技术人员将是明显的。
现在将仅通过示例来对实施例进行描述。
纹理过滤被实现在GPU内的专用硬件中,并且如上所述,这是一个计算量很大的运算,并且因此这个硬件可能相当大。可以以任何数字格式来存储纹理值(其中每个值通常对应于纹素中心),但是这些通常是浮点值(例如,可以被称为F16的半精度二进制浮点格式),并且在当前硬件中,用于执行过滤的浮点模块包括中间舍入步骤,这意味着最终输出(即,过滤的值)不是完全精确的,并且这可能导致渲染的场景中的视觉假象。
本文描述了一种纹理过滤单元,其可以在GPU内被实现,该纹理过滤单元对于每个输入纹理值仅包括单个乘法级(multiplication stage)。为了实现这一点,纹理过滤单元内的硬件逻辑对于每个输入纹理值生成单个复合过滤器系数。本文描述的纹理过滤单元将输入纹理值从浮点形式(例如F16形式)转换成定点表示的类型(例如包括定点有效数和指数),使得它们在过滤的所有阶段处都可以被精确地表示,并且没有中间舍入步骤。因此,输出的过滤的值完全精确。除了提供完全精确的输出值之外,本文描述的硬件另外提供高吞吐量(例如,每个时钟周期两个纹理值),需要非常少的控制逻辑,并且可以被实现为与当前的、不太精确的硬件尺寸相似的硬件,并且可以另外具有降低的功耗(例如,在本文描述的纹理过滤单元的硬件面积小于当前硬件的实现中)。
图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和两个纹理值输入端:输入A0 204和输入A1 206。在该示例中,纹理过滤单元200可以每个时钟周期接收两个纹理值(一个经由输入A0,并且另一个经由输入A1);然而,在其他示例中,纹理过滤单元可以被配置为在单个时钟周期中接收多于两个纹理值,并且可以为此目的具有附加输入端(图2中未示出)。如上所述,接收的纹理值是浮点格式(例如F16)。
纹理过滤单元200还包括系数合并逻辑块208、格式转换逻辑210、两个乘法器212(或者更一般地,每个纹理值输入一个乘法器,使得在有多于两个输入端的情况下,有多于两个乘法器)、左移位器214、加法单元216和转换逻辑218,该格式转换逻辑210被布置成将输入纹理值中的每一个从浮点格式转换成包括定点有效数和指数的定点表示的类型,该左移位器214被布置成移位(例如左移位)每个乘法器的输出(例如,通过指数值,使得在进入加法单元之前输入相对于彼此被正确地对齐),该转换逻辑218被布置成在经由输出端220被输出之前将来自加法单元的输出转换回浮点格式。
在各个示例中,纹理过滤单元200被布置成执行一组浮点纹理值输入的任何加权和,并且在本文描述的示例中,这被描述为用于执行体积过滤、各向异性过滤和三线性过滤的任何组合;然而,在其他示例中,纹理过滤单元200被布置成执行不同组的两种或更多种过滤方法或者被实现为一组浮点纹理值输入的加权和的任何其他运算的任何组合。因此,输入到纹理过滤单元200(并且特别是输入到系数合并逻辑块208)的系数202包括对于纹理过滤单元200可以实现的每个过滤方法的至少一个系数,例如vfrac、afrac和tfrac(其中,vfrac是用于体积过滤的系数,afrac是用于各向异性过滤的系数,并且tfrac是用于三线性过滤的系数),和/或2n-vfrac和2m-tfrac(其中,n和m分别是vfrac和tfrac的位宽),和/或用于过滤方法中的任一种的附加系数。在各个示例中,系数的值可以每个时钟周期改变,或者可以不太频繁地改变,或者可以是恒定的(例如,vfrac可以每个时钟周期改变,afrac可以不太频繁地改变,并且tfrac可以是恒定的)。在各个示例中,这些系数可以是没有整数位和8或16个小数位(例如,U0.8或U0.16)的无符号定点值;然而,可以使用任何系数大小(例如,在位的数量方面)。在仅使用过滤方法的适当子集的情况下,未被使用的那些方法的系数可以被设置为默认值(例如,在未使用各向异性过滤的情况下,系数afrac可以被设置为1),或者可以另外提供单独的使能信号203。
在提供使能信号203的示例中,这些信号可以具有指定每种过滤方法(或模式)是否被启用的值以及用于该过滤方法的任何必要参数。例如,可以提供的三种使能信号,详细如下:
纹理过滤单元200被布置成使用一组过滤方法中的一种或更多种的任意组合来执行过滤,并且系数合并逻辑块208包括硬件逻辑,该硬件逻辑被布置成将对于过滤方法中的每一种的系数组合在一起,以针对每个输入纹理值生成(且然后输出)单个复合过滤器系数。在图2所示的示例中,其中每个时钟周期接收两个纹理值,系数合并逻辑块208每个时钟周期输出两个系数coeff_0和coeff_1,并且这些系数分别被输入到A0系数乘法器和A1系数乘法器212。在各个示例中,这些合并的系数是无符号定点数,具有零个或一个整数位和32个小数位。在各个示例中,系数合并逻辑块208可以包括多个多路复用器、逻辑非(logicalnegation)元件(例如异或)和加法器以及仅两个乘法器(如下面详细描述的)。在其他示例中,可以在系数合并逻辑块208内提供多于两个乘法器。
如上所述,经由输入端204、206接收的纹理值是浮点格式(例如F16),并且这些纹理值被输入到格式转换逻辑210中,该格式转换逻辑210被布置成将输入纹理值中的每一个从浮点格式转换成定点表示的类型,即通过从输入纹理值生成定点有效数和指数。输入纹理值包括符号位s、指数e和尾数m。指数e包括指数E个指数位(其中对于F16,E=5),并且尾数m包括M个尾数(或小数)位(其中对于F16,M=10)。这些格式转换逻辑210中的每一个通过将输入纹理值分成两个输出来将输入纹理值转换成定点表示:
ai_sig=(-1)s(1.m)
ai_exp=2e-15
其中,i=[0,1],并且对于第一输入纹理值,i=0,并且对于第二输入纹理值,i=1。来自格式转换逻辑210中的每一个的第一输出分别被输入到A0系数和A1系数乘法器212,针对输入纹理值中的每一个有一个第一输出(即,a0_sig和a1_sig)。对于F16输入,这些第一输出是具有两个整数位和10个小数位的带符号定点数。来自格式转换逻辑210中的每一个的第二输出分别被输入到第一和第二左移位器214,针对输入纹理值中的每一个有一个第二输出(即,a0_exp和a1_exp)。
乘法器212中的每一个接收来自格式转换逻辑210的一个输入(包括以定点表示的输入纹理值的一部分)和来自系数合并逻辑块208的一个输入(包括对于特定输入纹理值的复合过滤器系数)。每个乘法器212将其两个输入相乘到一起以生成输出值addi:
addi=ai_sia*coeff-i
其中,i=[0,1],并且对于第一输入纹理值(以及因此第一乘法器),i=0,并且对于第二输入纹理值(以及因此第二乘法器),i=1。
在将来自左移位器214的两个输出在加法单元216中相加在一起之前,将来自乘法器212的输出在相应的左移位器214中移位值ai_exp,对于F16输入,来自乘法器212的输出是具有两个整数位和42个分数位的带符号定点数。对于F16输入,加法单元中的加法的结果在宽度上可以是77位的数量级。
如上所述,在系数合并逻辑块208中针对每个输入纹理值生成单个复合系数,以及因此由两个乘法器212中的任一个执行的每个乘法运算都涉及新的纹理值和针对该纹理值新生成的复合系数,尽管在某些情况下,复合系数中的两个或更多个在单独生成时可以具有相同的值。
如果纹理过滤运算仅涉及在相同时钟周期上输入的两个纹理值,那么加法单元216中的加法运算的结果是最终结果,该最终结果在转换逻辑218中被转换回浮点格式后,该最终结果(经由输出端220)被输出;然而,如下所述,除非仅启用体积过滤或仅启用三线性过滤(例如,通过使能信号203或通过将用于其他过滤方法的系数设置为其默认值,例如1),否则在生成输出结果时将涉及多于两个的纹理值。然而,在所有情况下,加法单元216生成的最终结果都是完全精确的,并且当最终结果在转换逻辑218中从定点格式被转换回浮点格式时,仅执行单次舍入运算。
在纹理过滤运算涉及多于两个的纹理值的示例中,在多个时钟周期(例如,N个时钟周期)内输入这些纹理值。例如,过滤运算可以在多达32个时钟周期内使用多达64个纹理值输入(假设没有停顿(stalling))。在使用多于两个的纹理值来生成输出结果的示例中(例如,其中N>1),加法单元216可以是定点3加法器(即,其被配置为将三个定点输入相加在一起),其将来自先前时钟周期的结果(其可以被称为中间结果并且可以被存储在寄存器中)和两个新接收的输入相加在一起。在这样的示例中,在其已经在转换逻辑218中被转换回浮点格式之后,第N次加法运算的结果作为最终结果(经由输出端220)被输出。
3加法器的大小在设计时根据系数和纹理输入的大小以及所得到的硬件所需的精确度来确定。更宽的3加法器(就位宽而言)在物理上更大(例如,就面积而言)并且更慢,并且因此宽的3加法器执行加法所花费的时间可能超过单个时钟周期中可用的时间。因此,在各个示例中,加法单元216可以包括3∶2压缩器,随后是进位保留(carry-save)加法器,而不是3加法器。
可以例如基于使能信号203的值来确定任何过滤运算中涉及的纹理值的数量,如下所示:
纹理值的数量=(vol_en+1)*(ani_rt+1)*(tri_en+1)。
例如,如果使用所有三种过滤方法,使得vol_en=tri_en=1并且ani_rt={1,3,…,15},则涉及的纹理值的总数在8到64之间。
例如,如果涉及2N个纹理值,则由加法单元216执行的加法如下:
result1=add0_1+add1_1
result2=result1+add0_2+add1_2
result3=result2+add0_3+add1_3
…
resultN=resultN-1+add0_N+add1_N
其中,addi_t是来自第i个乘法器的输出,其被输入到加法单元216用于第t次加法运算(即生成resultt)。在该示例中,result1-resultN-1是中间结果,并且resultN是最终结果。
在上述纹理过滤运算中使用多于两个纹理值的示例中(以及因此N>1),假设纹理过滤运算中使用的所有纹理值都是在连续的时钟周期上被输入的。在这样的示例中,定点3加法器将两个新接收的输入加到紧接的前一个加法运算的结果上(在加法单元216中)。然而,在其他示例中,可以对多个纹理值的输入流进行交错(interleaved),使得定点3加法器将两个新接收的输入加到对于该输入流紧接的前一个加法运算的结果上,该加法运算可以不一定是由加法单元执行的紧接的前一个加法运算。可以使用附加的使能信号203来启动这种交错运算:
使能信号 | 可能的值 | 含义 |
交错 | 0、1 | 交错分别被禁用或启用 |
例如,如果对纹理值的两个输入流(流A和流B)进行交错,并且每个过滤运算涉及2N个纹理值,则加法单元216执行的加法如下:
result1A=add0_1A+add1_1A
result1B=add0_1B+add1_1B
result2A=result1A+add0_2A+add1_2A
result2B=result1B+add0_2B+add1_2B
result3A=result2A+add0_3A+add1_3A
result3B=result2B+add0_3B+add1_3B
…
resultNA=result(N-1)A+add0_Na+add1_NA
resultNB=result(N-1)B+add0_NB+add1_NB
其中,addi_tA是来自第i个乘法器的输出,其被输入到加法单元216用于对流A的第t次加法运算(即,生成resulttA),并且addi_tB是来自第i个乘法器的输出,其被输入到加法单元216用于对流B的第t次加法运算(即,生成resulttB)。在该示例中,result1A-result(N-1)A和result1B-result(N-1)B是中间结果,并且resultNA和resultNB是最终结果。
可以使用纹理值的输入流的交错,其中例如,同时从存储器中访问多个纹理值(例如,R值和G值),例如因为它们被连续地存储,但是需要被单独地过滤(例如,其中对于每种颜色单独地执行地颜色过滤)。这提高了效率(例如,在速度和功率方面,因为它避免了必须将一个流的纹理值(例如,G值)存储在单独的寄存器中,直到所有其他流的纹理值(例如,R值)都被过滤)。
虽然上面的示例示出了两个输入流的交错,但是在另外的示例中,可以提供附加的控制逻辑和寄存器,以使过滤单元能够交错多于两个的输入流(例如3或4个输入流)。
图3是第二示例纹理过滤单元300的示意图,其可以被实现为图1的流水线100中的纹理过滤单元102。该纹理过滤单元300与图2中所示且如上所描述的纹理过滤单元相同,外加了模式和交错计数器逻辑元件302。如图3所示,该模式和交错计数器逻辑元件302接收使能信号203,其中,如上所述,这些使能信号可以包括指定每种过滤方法(或模式)是否被启用的值以及用于过滤方法的任何必要参数。在纹理过滤运算中使用多于两个纹理值的示例中(以及因此N>1),模式和交错计数器逻辑元件302通过对加法单元216的输入来控制哪些加法结果由加法单元216输出、由转换逻辑218转换回浮点并输出(经由输出端220),以及哪些加法结果仅仅是需要进一步累加以生成最终结果的中间结果。控制逻辑可以包括计数器,该计数器从N向下计数或向上计数到N,且分别达到0或N,触发加法单元216的最终结果的输出。此外,或者替代地,模式和交错计数器逻辑元件302通过对加法单元216的输入来控制加法单元216的任何交错运算(如上所述)。例如,根据从模式和交错计数器逻辑元件302输入到加法单元216的交错控制信号的值,对加法单元216的两个新输入可以被加到多个存储的中间结果中的不同的中间结果(例如,每个输入流一个)。
图4是第三示例纹理过滤单元400的示意图,其可以被实现为图1的流水线100中的纹理过滤单元102。这是图3示出的并如上所述的纹理过滤单元300的变型。该图示出了纹理过滤单元400内的寄存器级401,并且两个寄存器级之间的逻辑在单个时钟周期中运算。时钟输入410控制逻辑运算的定时以及何时将数据读入以及读出寄存器级401。反规范化(denorm)刷新(flush)和有效数可选取反块402执行输入纹理值从浮点格式到定点格式的转换的至少一部分(等同于图2和图3中的格式转换逻辑210)。如果来自加法单元216的输出为负,则使用图4所示的可选异或(取反)逻辑块404。在这种情况下,输出被取反,并且符号位被改变。定点规范化器(normaliser)逻辑块406和舍入、指数增量和异常输出多路复用器408的组合执行将输出转换回浮点格式(等同于图2和图3中的转换逻辑218)。图4还示出了许多其他信号,诸如标志(例如,VALID_UP,其指示输入A0和A1是否包含有效数据;以及VALID_DOWN,其指示花费多于一个时钟信号来执行的序列是否已经完成,并因此指示输出y是否是纹理过滤序列的结果)以及使能信号(例如,ENABLE_DOWN,其指示序列中的下一个分量是否具有足够的寄存器空间来接受下一个有效输出或者前一个寄存器级是否必须停顿)。
图5是更详细的示例系数合并逻辑块500的示意图。该系数合并逻辑块500可以被实现为图2-图4的任一个中的系数合并逻辑块208。如图5所示,系数合并逻辑块500包括4个多路复用器501-504和两个乘法器506-507。还有许多加法元件508-510和逻辑取反单元(例如异或)512。系数合并逻辑块500接收三个系数:vfrac、tfrac和afrac(如上所述)以及各种控制信号:ani_rt(如上所述)、control_mul_a_0、control_mul_0_b_0、control_mul_0_b_1、control_mul_1_b_0、control_mul_1_b_1、control_coeff_1作为输入,其中这些控制信号可以例如从上述使能信号中导出,使得系数被正确地合并以将不同的过滤模式组合为模式使能信号所需要的。系数合并逻辑块500生成两个输出,coeff_0和coeff_1(如上所述)。
第一多路复用器501接收两个输入,afrac和afrac_last(例如,其可以是第二各向异性过滤系数)以及两个控制信号ani_rt和control_mul_a_0,并生成如下输出mul_0_a:
第二多路复用器502接收一个输入tfrac和两个控制信号control_mul_0_b_0和control_mul_0_b_1,并生成如下输出mul_0_b:
其中,是tfrac中的位的逻辑取反(例如,使得01101101变成10010010)。
第三多路复用器503接收一个输入mul_0_a(其是来自第一多路复用器501的输出)以及两个控制信号control_mul_0_b_0和control_mul_0_b_1,并生成如下输出mul_0_b_inc:
信号mul_0_b_inc实际上是具有和mul_0_b相同选择逻辑的增量位,其有效地将乘法中的值改变为1-tfrac,而不需要减法。第四多路复用器504接收两个输入tfrac和vfrac,以及两个控制信号contro1_mul_1_b_0和control_mul_1_b_1,并生成如下输出mul_1_b:
第一乘法器506接收两个输入mul_0_a(如由第一多路复用器501输出的)和mul_0_b(如由第二多路复用器502输出的),并将两个输入相乘在一起。然后将结果加到(在加法元件508中)来自第三多路复用器503的输出,使得:
mul_1_a=mul_0_a*mul_0_b+mul_0_b_inc。
第二乘法器507接收两个输入mul_1_a(如由第一乘法器506输出的)和mul_1_b(如由第四多路复用器504输出的),并将两个输入相乘在一起,使得:
mul_2=mul_1_a*mul_1-b。
然后,使用另外两个加法元件509、510来生成两个输出系数coeff_0和coeff_1。这些加法单元中的第一个509接收两个输入,mul_1_a(如由另一加法单元508输出的)和mul_2(如由第二乘法器507输出的),并生成如下coeff_0:
这些加法单元中的第二个510接收相同的两个输入和控制信号control_coeff_1(其可以被生成为control_coeff_1=not(vol_en)ANDani_rt[0]),并生成coeff_1如下:
coeff_1=(mul_2+(control_coeff_1?mul_1-a:0)。
在其他示例中,可以通过实现以下任何一个或更多个来修改图5所示的系数合并逻辑块500:
-可以通过在第四多路复用器504中将替换为1-tfrac来保存多路复用器;
-任何逻辑取反(即,异或块)可以被交换为算术取反;
-用非(NOT)块替换异或(XOR)块512;
-以不同的顺序来组合过滤器模式系数(例如,afrac和tfrac)。
如图5所示,仅使用两次乘法(以及因此两个乘法器506、507)来产生两个系数,并且这提供了有效的硬件实现(例如,在大小和/或功率方面)。
在上述示例中,系数合并逻辑块生成的复合过滤器系数没有舍入。为了以降低的精确度为代价来减小纹理过滤单元的面积,复合过滤器系数可以进行舍入运算以减小它们的位宽。
虽然本文描述的所有示例都示出了每个时钟周期输入两个纹理值,但是可以通过包括附加的纹理值输入和相应的格式转换逻辑210、乘法器212和左移位器214来扩展本文描述的纹理过滤单元,以使得每个时钟周期能够输入(以及随后处理)多于两个的值。
在另一变型中,纹理过滤单元可以包含双线性过滤级。在这样的示例中,两个纹理值可以被输入到双线性过滤级,并且从该级输出的两个值可以被输出到两个乘法器。或者,系数合并块可以被修改为包括双线性过滤系数。
虽然上面的示例涉及F16格式的输入纹理值,即,使得E=5并且M=10,但是上述硬件和方法也可以用于不同格式的纹理值,例如F32或全精度浮点格式(其中,E=8并且M=23)。通过使用F32输入,来自乘法器的输出明显更宽(例如279位有符号数字),并且来自加法单元216的输出的宽度可以是300位的数量级。
在本文描述的示例的变型中,通过在任何级处减小内部位宽,精确度可以与面积/延迟进行权衡。
上面在GPU内的纹理过滤的背景下描述的技术也可以用于包括浮点运算的其他应用,浮点运算包括对多个乘积和(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)”项目的任何引用指的是那些项目中的一个或更多个。术语“包括”在本文中用于意指包括所识别的方法块或元件,但这样的块或元件并不包括独有列表,且装置可包含额外的块或元件,并且方法可包含额外的操作或元件。此外,块、元件和操作本身并不是隐含地封闭的。
本文描述的方法的步骤可以按照任何适当的顺序被执行或在适当时同时被执行。在附图中的框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或多个步骤的并行执行。此外,各个块可以从任何方法中删除而不偏离本文描述的主题的精神和范围。上面描述的任何示例的方面可以与所描述的其它示例中的任一个的方面组合以形成另外的示例,而不失去所寻求的效果。在附图的元件被示为由箭头连接的场合,将认识到,这些箭头仅示出在元件之间的一个示例通信流(包括数据和控制消息)。在元件之间的流可以在任一方向上或在两个方向上。
申请人特此独立地公开了本文中所描述的每个单独特征以及两个或更多个这样的特征的任何组合,公开的程度是使得这样的特征或组合能够基于本说明书作为整体依据本领域技术人员的公知常识来实现,而无论这样的特征或特征的组合是否解决了本文中所公开的任何问题。鉴于上述描述,对于本领域技术人员明显的是,可在本发明的范围内进行各种修改。
Claims (20)
1.一种在硬件逻辑中实现的纹理过滤单元,所述纹理过滤单元包括:
多个输入端,所述多个输入端被布置成接收每个时钟周期至少两个纹理值和多个过滤器系数,所述多个过滤器系数包括与多个不同纹理过滤方法相关的系数;
格式转换逻辑,所述格式转换逻辑被布置成将输入纹理值从浮点格式转换成定点有效数和指数;
系数合并逻辑块,所述系数合并逻辑块被布置成根据所述多个过滤器系数针对每个输入纹理值生成单个复合过滤器系数;
对于每个输入纹理值的一个乘法器,其中,每个乘法器被布置成将所述输入纹理值中的一个的有效数乘以其相应的单个复合过滤器系数;
加法单元,所述加法单元被布置成将来自所述乘法器中的每一个乘法器的输出相加在一起;
硬件逻辑,所述硬件逻辑被布置成将来自所述加法单元的输出从定点格式转换成浮点格式;以及
输出端,所述输出端被布置成输出来自所述加法单元的转换后的输出。
2.根据权利要求1所述的纹理过滤单元,其中,每个输入纹理值包括符号位、多个指数位和多个尾数位,所述纹理过滤单元还包括用于每个输入纹理值的左移位逻辑块,
并且其中,所述格式转换逻辑被配置为将每个输入纹理值划分为定点有效数和指数,其中,每个输入纹理值的所述定点有效数被输入到相应的乘法器,并且每个输入纹理值的第二部分指数被输入到相应的左移位逻辑块,
其中,每个输入纹理值的所述定点有效数包括所述符号位和尾数位,并且每个输入纹理值的所述指数包括所述指数位,
并且其中,每个左移位逻辑块被布置成将来自乘法器的输出左移位等于纹理值的所输入的指数的量,并且将来自所述乘法器的左移位的输出输出到所述加法单元。
3.根据权利要求1所述的纹理过滤单元,其中,所述纹理过滤单元被配置为执行过滤运算,所述过滤运算涉及在N个时钟周期内输入的纹理值,其中N>1,并且其中,所述加法单元被布置成:
在所述N个时钟周期的第一时钟周期中,将来自所述乘法器中的每一个乘法器的输出相加在一起;
在所述N个时钟周期的第二时钟周期到第N时钟周期的每一个中,将来自所述乘法器中的每一个乘法器的输出和来自所述N个时钟周期的紧接的前一个时钟周期的相加的结果相加在一起;以及
输出在所述N个时钟周期的所述第N时钟周期中的相加的结果。
4.根据权利要求1所述的纹理过滤单元,其中,所述纹理过滤单元被配置为对纹理值的多个流中的每个流执行过滤运算,所述过滤运算涉及在N个时钟周期内输入的纹理值,其中N>1,并且其中,所述加法单元被布置成对所述纹理值的流中的每个流进行以下操作:
在对于所述纹理值的流的所述N个时钟周期的第一时钟周期中,将来自所述乘法器中的每一个乘法器的输出相加在一起;
在对于所述纹理值的流的所述N个时钟周期的第二时钟周期到第N时钟周期的每一个中,将来自所述乘法器中的每一个乘法器的输出和来自对于所述纹理值的流的所述N个时钟周期的紧接的前一个时钟周期的相加的结果相加在一起;以及
输出在对于所述纹理值的流的所述N个时钟周期的所述第N时钟周期中的相加的结果。
5.根据权利要求4所述的纹理过滤单元,其中,对所述纹理值的多个流进行交错,使得在相邻的时钟周期中,从纹理值的不同流输入纹理值。
6.根据权利要求3所述的纹理过滤单元,还包括模式和交错计数器逻辑块,所述模式和交错计数器逻辑块被布置成控制所述加法单元的运算。
7.根据权利要求6所述的纹理过滤单元,其中,所述模式和交错计数器逻辑块包括计数器,所述计数器被布置成对所述N个时钟周期进行计数,并且触发在所述N个时钟周期的所述第N时钟周期中所述加法单元的结果的输出。
8.根据权利要求1所述的纹理过滤单元,其中,所述输入端每时钟周期接收i个纹理值,所述纹理过滤单元包括i个乘法器,并且所述系数合并逻辑块包括另外的i个乘法器。
9.一种图形处理单元,其包括权利要求1-8中任一项所述的纹理过滤单元。
10.一种在硬件逻辑中执行纹理过滤的方法,所述方法包括:
在纹理过滤单元中,接收每个时钟周期至少两个纹理值和多个过滤器系数,所述多个过滤器系数包括与多个不同纹理过滤方法相关的系数;
将输入纹理值从浮点格式转换成定点有效数和指数;
根据所述多个过滤器系数针对每个输入纹理值生成单个复合过滤器系数;
在多个乘法器的每一个乘法器中,将所述输入纹理值之一的所述有效数乘以其对应的单个复合过滤器系数,其中,所述多个乘法器包括对于在时钟周期中接收的每个输入纹理值的一个乘法器;
将来自所述乘法器中的每一个乘法器的输出相加在一起,并将结果从定点格式转换成浮点格式;以及
输出转换后的结果。
11.根据权利要求10所述的方法,其中,每个输入纹理值包括符号位、多个指数位和多个尾数位,
其中,将所述输入纹理值从浮点格式转换为定点有效数和指数包括:将每个输入纹理值划分为定点有效数和指数,其中,每个输入纹理值的所述定点有效数被输入到相应的乘法器,并且每个输入纹理值的所述指数被输入到相应的左移位逻辑块,
其中,每个输入纹理值的所述定点有效数包括所述符号位和尾数位,并且每个输入纹理值的所述指数包括所述指数位,并且其中,将来自所述乘法器中的每一个乘法器的输出相加在一起包括:
对于所述多个乘法器中的每一个乘法器,将来自所述乘法器的输出左移位等于纹理值的所输入的指数的量,并将所述乘法器中的每一个乘法器的左移位的输出相加在一起。
12.根据权利要求10所述的方法,其中,所述方法执行过滤运算,所述过滤运算涉及在N个时钟周期内输入的纹理值,其中N>1,并且其中,将来自所述乘法器中的每一个乘法器的输出相加在一起包括:
在所述N个时钟周期的第一时钟周期中,将来自所述乘法器中的每一个乘法器的输出相加在一起;
在所述N个时钟周期的第二时钟周期到第N时钟周期的每一个中,将来自所述乘法器中的每一个乘法器的输出和来自所述N个时钟周期的紧接的前一个时钟周期的相加的结果相加在一起;以及
输出在所述N个时钟周期的所述第N时钟周期中的相加的结果。
13.根据权利要求10所述的方法,其中,所述方法执行过滤运算,所述过滤运算涉及针对纹理值的多个流中的每个流在N个时钟周期内输入的纹理值,其中N>1,并且其中,将来自所述乘法器中的每一个乘法器的输出相加在一起包括:
在对于所述纹理值的流的所述N个时钟周期的第一时钟周期中,将来自所述乘法器的每一个乘法器的输出相加在一起;
在对于所述纹理值的流的所述N个时钟周期的第二时钟周期到第N时钟周期的每一个中,将来自所述乘法器中的每一个乘法器的输出和来自对于所述纹理值的流的所述N个时钟周期的紧接的前一个时钟周期的相加的结果相加在一起;以及
输出在对于所述纹理值的流的所述N个时钟周期的所述第N时钟周期中的相加的结果。
14.根据权利要求13所述的方法,其中,对所述纹理值的多个流进行交错,使得在相邻的时钟周期中,从纹理值的不同流输入纹理值。
15.根据权利要求12所述的方法,还包括:
对所述N个时钟周期进行计数,并且触发在所述N个时钟周期的所述第N时钟周期中相加的结果的输出。
16.一种图形处理单元,其被配置成执行权利要求10-15中的任一项所述的方法。
17.根据权利要求16的所述的图形处理单元,其中,所述图形处理单元被体现在集成电路上的硬件中。
18.根据权利要求1-8中任一项所述的纹理过滤单元,其中,所述纹理过滤单元被体现在集成电路上的硬件中。
19.一种具有在其上编码的计算机可读代码的计算机可读存储介质,所述计算机可读存储介质被配置成使得当运行所述代码时执行权利要求10-15中任一项所述的方法。
20.一种集成电路制造系统,包括:
计算机可读存储介质,所述计算机可读存储介质具有在其上存储的集成电路的计算机可读描述,所述集成电路的计算机可读描述对如权利要求16所述的图形处理单元或如权利要求1-8中任一项所述的纹理过滤单元进行描述;
布局处理系统,所述布局处理系统被配置为处理所述集成电路描述,以便生成体现所述图形处理单元或纹理过滤单元的集成电路的电路布局描述;以及
集成电路生成系统,所述集成电路生成系统被配置为根据所述电路布局描述来制造所述图形处理单元或纹理过滤单元。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1805610.1 | 2018-04-05 | ||
GB1805610.1A GB2572605B (en) | 2018-04-05 | 2018-04-05 | High accuracy texture filtering |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110349245A true CN110349245A (zh) | 2019-10-18 |
Family
ID=62202898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910260753.9A Pending CN110349245A (zh) | 2018-04-05 | 2019-04-02 | 高精度纹理过滤 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20190311519A1 (zh) |
EP (1) | EP3550521A1 (zh) |
CN (1) | CN110349245A (zh) |
GB (1) | GB2572605B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968347A (zh) * | 2019-12-02 | 2020-04-07 | 秒针信息技术有限公司 | 一种数据处理的方法及装置 |
CN112181355A (zh) * | 2020-10-12 | 2021-01-05 | 上海芯旺微电子技术有限公司 | 一种移位饱和处理方法及其应用 |
CN117422807A (zh) * | 2023-12-15 | 2024-01-19 | 摩尔线程智能科技(北京)有限责任公司 | 颜色值的确定方法及装置、电子设备、计算机存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5949920A (en) * | 1996-08-13 | 1999-09-07 | Hewlett-Packard Co. | Reconfigurable convolver circuit |
US20050237337A1 (en) * | 2000-08-23 | 2005-10-27 | Nintendo Co., Ltd | Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system |
US7071937B1 (en) * | 2000-05-30 | 2006-07-04 | Ccvg, Inc. | Dirt map method and apparatus for graphic display system |
US20090295819A1 (en) * | 2008-05-30 | 2009-12-03 | Advanced Micro Devices, Inc. | Floating Point Texture Filtering Using Unsigned Linear Interpolators and Block Normalizations |
US20150130818A1 (en) * | 2013-11-14 | 2015-05-14 | Liang Peng | Flexible filter logic for multi-mode filtering of graphical texture data |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9092873B2 (en) * | 2011-02-03 | 2015-07-28 | L-3 Communications Corporation | Rasterizer packet generator for use in graphics processor |
US10338919B2 (en) * | 2017-05-08 | 2019-07-02 | Nvidia Corporation | Generalized acceleration of matrix multiply accumulate operations |
-
2018
- 2018-04-05 GB GB1805610.1A patent/GB2572605B/en active Active
-
2019
- 2019-03-29 US US16/369,978 patent/US20190311519A1/en active Pending
- 2019-04-02 CN CN201910260753.9A patent/CN110349245A/zh active Pending
- 2019-04-03 EP EP19167184.1A patent/EP3550521A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5949920A (en) * | 1996-08-13 | 1999-09-07 | Hewlett-Packard Co. | Reconfigurable convolver circuit |
US7071937B1 (en) * | 2000-05-30 | 2006-07-04 | Ccvg, Inc. | Dirt map method and apparatus for graphic display system |
US20050237337A1 (en) * | 2000-08-23 | 2005-10-27 | Nintendo Co., Ltd | Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system |
US20090295819A1 (en) * | 2008-05-30 | 2009-12-03 | Advanced Micro Devices, Inc. | Floating Point Texture Filtering Using Unsigned Linear Interpolators and Block Normalizations |
US20150130818A1 (en) * | 2013-11-14 | 2015-05-14 | Liang Peng | Flexible filter logic for multi-mode filtering of graphical texture data |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110968347A (zh) * | 2019-12-02 | 2020-04-07 | 秒针信息技术有限公司 | 一种数据处理的方法及装置 |
CN110968347B (zh) * | 2019-12-02 | 2021-09-17 | 秒针信息技术有限公司 | 一种数据处理的方法及装置 |
CN112181355A (zh) * | 2020-10-12 | 2021-01-05 | 上海芯旺微电子技术有限公司 | 一种移位饱和处理方法及其应用 |
CN117422807A (zh) * | 2023-12-15 | 2024-01-19 | 摩尔线程智能科技(北京)有限责任公司 | 颜色值的确定方法及装置、电子设备、计算机存储介质 |
CN117422807B (zh) * | 2023-12-15 | 2024-03-08 | 摩尔线程智能科技(北京)有限责任公司 | 颜色值的确定方法及装置、电子设备、计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
GB2572605B (en) | 2022-05-18 |
US20190311519A1 (en) | 2019-10-10 |
EP3550521A1 (en) | 2019-10-09 |
GB2572605A (en) | 2019-10-09 |
GB201805610D0 (en) | 2018-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643228A (zh) | 用于浮点乘加运算的低能耗尾数乘法 | |
CN106528044A (zh) | 处理器、指令执行方法和计算系统 | |
CN111723904A (zh) | 实现神经网络卷积转置层的方法和系统 | |
CN110349245A (zh) | 高精度纹理过滤 | |
WO2009035185A1 (en) | Reconfigurable array processor for floating-point operations | |
CN103180820A (zh) | 用于执行浮点除法的方法和装置 | |
US10642578B2 (en) | Approximating functions | |
CN110349244A (zh) | 具有动态调度的纹理过滤 | |
GB2423385A (en) | Determining an initial estimate of a result value of a reciprocal operation | |
CN112241251B (zh) | 用于处理浮点数的设备和方法 | |
EP3767455A1 (en) | Apparatus and method for processing floating-point numbers | |
EP4206993A1 (en) | Configurable pooling processing unit for neural network accelerator | |
CN110349074A (zh) | 边缘和深度处理硬件 | |
US20220334799A1 (en) | Method of Performing Hardware Efficient Unbiased Rounding of a Number | |
US20230177318A1 (en) | Methods and devices for configuring a neural network accelerator with a configurable pipeline | |
GB2614327A (en) | Configurable pooling process unit for neural network accelerator | |
GB2614705A (en) | Neural network accelerator with configurable pooling processing unit | |
GB2611520A (en) | Methods and devices for configuring a neural network accelerator with a configurable pipeline | |
GB2611521A (en) | Neural network accelerator with a configurable pipeline | |
CN103119532B (zh) | 处理器、指令执行方法和计算系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |