CN102087740B - 用于通用计算的纹理单元 - Google Patents

用于通用计算的纹理单元 Download PDF

Info

Publication number
CN102087740B
CN102087740B CN201010592194.0A CN201010592194A CN102087740B CN 102087740 B CN102087740 B CN 102087740B CN 201010592194 A CN201010592194 A CN 201010592194A CN 102087740 B CN102087740 B CN 102087740B
Authority
CN
China
Prior art keywords
coefficient
dot product
texture
equipment
sequencer
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.)
Expired - Fee Related
Application number
CN201010592194.0A
Other languages
English (en)
Other versions
CN102087740A (zh
Inventor
V·W·李
M·斯梅尔延斯基
G·S·达西卡
J·冈萨雷斯
J·楚加尼
Y-k·陈
C·金
J·加戈
S·加兰
V·M·D·巴里奥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN102087740A publication Critical patent/CN102087740A/zh
Application granted granted Critical
Publication of CN102087740B publication Critical patent/CN102087740B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

可利用纹理单元来执行诸如点积的通用数学计算。这使得能够将一些通用计算和操作从中央处理单元卸载到纹理单元。纹理单元可利用线性内插器来执行点积计算。

Description

用于通用计算的纹理单元
技术领域
一般来说,本发明涉及图形处理,具体来说,涉及图形处理器的纹理单元。
背景技术
图形处理器是一般用于处理与图像显示相关联的处理任务的专用处理器。图形处理器可包括多个专门的功能单元,包括纹理单元。纹理单元执行纹理操作,包括纹理解压缩和各向异性过滤。
纹理采样器是用于优化纹理过滤并比通用处理器更快速地执行纹理过滤的特殊类型的纹理单元。
纹理单元可利用线性内插单元进行过滤。另外,包括双线性和三线性内插单元的其它内插单元也可用。
发明内容
本发明涉及一种方法,包括:
利用纹理单元中的可编程线性内插器计算点积。
本发明涉及一种设备,包括:
处理实体;
耦合到所述处理实体的存储器;以及
耦合到所述处理实体、用于计算点积的可编程线性内插器。
本发明涉及一种存储指令的计算机可读介质,所述指令使得计算机能够:
确定由纹理单元确定的点积系数为负数;以及
将所述系数的符号变为正值。
附图说明
图1是根据一个实施例的纹理单元的示意图;
图2是本发明一个实施例的示意图;
图3是根据一个实施例的纹理单元的描绘,该纹理单元包括多个用于执行点积的可编程线性内插单元;
图4是本发明一个实施例的流程图;
图5示出根据一个实施例的卷积的实例;
图6是根据一个实施例的硬件有限状态机;
图7是根据一个实施例的序列状态机的时序图;以及
图8是根据一个实施例用于生成和处理负系数的流程图。
具体实施方式
根据一些实施例,可以利用诸如纹理采样器的纹理单元来执行数学计算,具体来说,在一些实施例中,执行点积计算。否则当图形处理单元的纹理单元(纹理采样器)没有使用时,可从中央处理单元卸载这些任务。因此,在一些实施例中,可提高处理效率。另外,在一些情况下,点积和卷积的计算可以利用以线性内插、双线性内插和三线性内插过滤单元形式的现有纹理单元的可用能力来进行。
纹理映射是由图形处理器中的专用硬件执行的计算加强型任务。即使纹理单元保持闲置,通常仍必须利用通用处理单元来完成多种通用计算任务,例如确定二维卷积用于图像处理、矩阵-矩阵相乘以及用于财务应用的二维点阵计算。但是,纹理单元可适于执行在纹理单元闲置时从中央处理单元卸载的点积计算。
参考图1,内插单元14的纹理单元核40经由纹理控制块42接收纹理请求。纹理控制块42可包括指向纹理表面的指针、纹理表面的宽度和高度、将要进行纹理处理的n个像素的纹理坐标(u,v)、将要执行的过滤操作的类型(例如线性、双线性或三线性)以及纹理过滤器结果。
地址生成级44计算由给定过滤操作使用的所有纹理元素(texel)的地址。以介于0.0与1.0之间的归一化形式传递相关像素的坐标u和v。通过将它们乘以表面尺寸而使它们非归一化。例如,u变成i.bu,其中i是整数,bu是分数。整数部分用于产生最近邻居。在双线性内插的情况下,有四个邻居:(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)。在三线性过滤操作的情况下,有八个邻居。分数部分可用于计算可在混合相邻像素时使用的权。
数据访问级(stage)46访问所有必需的相邻像素。这个级可具有相对较长等待时间的先进先出缓冲器以容许较长的等待时间。
过滤级48利用有限状态机(FSM)定序器执行相邻像素的线性、双线性或三线性内插。该过滤级在具有三个可能的系数输入的线性内插过滤器树中实现。该过滤单元可包含以树方式连接以执行双线性和三线性过滤的多个线性内插器。
双线性过滤涉及两个级上的三个线性内插。三线性过滤涉及三个级上的七个线性内插。对于双线性过滤,对于第一级只允许一个系数(bu),对于第二级使用第二系数(bd)。在三线性过滤的情况下,对于前两级使用与双线性操作相同的系数,并且对于第三级使用第三系数(bw)。
通用或中央处理单元可耦合到纹理采样器或直接耦合到内插单元。参考图2,一个系统10示出耦合到专用内插单元14的通用或中央处理单元12。
举例来说,通用处理单元可以是具有一个或多个核的中央处理单元、控制器或数字信号处理器。在一个实施例中,内插单元可以是图形处理单元的诸如纹理采样器的纹理单元。专用内插单元是设计成利用线性内插法进行内插的硬件或软件。中央处理单元12和内插单元14均可耦合到存储器16。中央处理单元的输出可包括诸如点积的一般处理结果。
否则当中央处理单元12被占用、而内插单元14可用时,内插单元14可利用它的线性内插能力来执行从中央处理单元12卸载到内插单元14的点积操作。因此,一般专用于诸如过滤和内插的图形功能的内插单元14可利用它的可用线性内插能力来为中央处理单元执行点积计算。
参考图4,起初,如方框26所示,中央处理单元12设置每个像素的(u,v)对。接着,如方框28所示,中央处理单元触发纹理操作。在内插单元14中执行纹理操作30。然后,如方框32所示,中央处理单元从内插单元收集结果,并且如方框34所示,对输出进行缩放。
为了便于编程,可以利用库函数或应用程序接口(API)来简化纹理单元(TXS)的编程以执行通用处理。与双输入向量A和B的一般点积计算(即,A dot B=A0*B0+A1*B1+...+An*Bn)有关的两个函数为:
TXS-DP(int m,int n,Datatype_t_t*A,Type*w,Mask_t_t*
Mask,Type*result):
其中,m和n是点积(DP)的维度,A是待相乘的向量之一,W指向从输入向量B归一化的系数的向量。掩码是如本文所说明用于处理负或退化系数的类型Mask t的位阵列。在结果中返回点积操作的结果。向量A、向量B和结果可以是由Datatype_t数据类型表示的不同类型的向量,包括字符、整数或浮点数。尽管点积操作的一些部分可在纹理单元中执行,但一些部分也可在中央处理单元上执行。
作为计算的一部分,可将向量B归一化。可利用高级函数或API来便于编程:
TXS_LerpCoefTransform(int m,int n,float*B,float*W,Mask_t_+*mask):
其中B是输入向量,W是在调用纹理单元中所用的归一化向量。该函数也可生成用于处理负的或生成的系数的掩码,该掩码是纹理单元调用的另一个输入。
利用线性内插能力确定点积的一个实例是二维点积。但是,本发明不限于此。可利用线性内插能力执行点积计算的方法如下。
简单的2元点积(2-element dot-product)具有以下形式:
P · w = Σ i = 0 1 P i × w i
其中,P是通道值,w是系数。如果对于点积(DP)扩展该等式,则DP=P0*w0+P1*w1=(w0+w1)*lerp(w0/(w0+w1),P0,P1)(式1)。
这可容易地映射到由纹理采样器提供的线性过滤器。处理器核需要提供(u,v)坐标以正确生成w0/(w0+w1)系数。通过(w0+w1)因子进行的缩放可发生在处理器核上或发生在内插单元或纹理采样器上,前提条件是它们支持这样的缩放操作。
类似地,可将4元和8元点积映射到双线性和三线性过滤器操作。这种映射的两个实施例如下,但有很多方式来进行这样的映射。在第一个实施例中,可利用双线性过滤如下表示4元点积:
DP000-11=w00*P00+w01*P01+w10*P10+w11*P11
        =s*BF(u,v,P00,P01,P10,P11)+d*P10,
其中,u=w01/(w01+w00),
      v=w10/(w00+w10),
      s=((w00+w01)*(w00+w10))/(w00),并且
      d=(w00*w11-w01*w10)/((w00+w01)*(w00+w10))。
在第二个实施例中,按以下方式通过对每对点积(第1级lerp)、然后对所得和(第二级lerp)递归地运用式1来将4元点积映射到2级线性内插器(lerp)树:
DP000-11=w00*P00+w01*P01+w10*P10+w11*P11=
(w00+w01)*lerp(w00/(w00+w01),P00,P01)+
(w10+w11)*lerp(w10/(w10+w11),P10,P11)=
(w00+w01+w10+w11)*
         lerp((w00+w01)/(w00+w01+w10+w11),
                lerpw00/(w00+w01),P00,P01),
                lerp(w10/(w10+w11),P10,P11)
              )
对于较大的点积,有几种方法来进行映射。利用更高阶内插单元,例如三线性或甚至四线性,上述两个实施例均可更紧密地重写以利用这些单元来进行8元或甚至16元点积。例如,可通过递归地运用式1来将2×4象限的8元点积表示为3级lerp树。
在可在硬件中执行的乘积的大小小于所需点积操作的大小的情况下,整个点积可分为多个较小点积之和,以便利用中央处理单元12或纹理采样器来在硬件上(例如,利用上述两个优选实施例之一)进行每个这样的点积以将它们全部加在一起。
例如,以下图表示出当只有进行4元点积的双线性单元可用时如何利用以上进行4元点积的实施例计算16元点积:
P00  P01  P02  P03
P10  P11  P12  P13
P20  P21  P22  P23
P30  P31  P32  P33
数学上,16元点积可表示为:s1*BF1+s2*BF2+s3*BF3+s4*BF4+s5*BF5+s6*P11,其中,参考图5,BF1是左上象限(P00,P01,P10,P11)的双线性过滤操作,BF2是左下象限(P20,P21,P30,P31)的双线性过滤操作,BF3是右上象限(P02,P03,P12,P13)的双线性过滤操作,BF4是右下象限(P22,P23,P32,P33)的双线性过滤操作,并且BF5是中心象限(P11,P12,P21,P32)。
将一般N元点积映射到线性内插器树的一般过程如下所述。给定N个点积权(Win)或系数的列表,过程生成所有级的lerp的对应lerp权(Wout)。如果过滤单元具有有限精度,则它还可选地截断输出权的位。
void GenWeights(float*Win,float*Wout,int N)
{
     int MaxLevel=i log2(N);
     for(int level=1;level<=MaxLevel;level++)
          for(int s=0;s<Length;s+=(1<<level1))
          {
          int beg=s,end=s+(1<<level)-1;
          int halfway=beg+(end-beg)-1;
          Wout[level,beg,end]=Sum(Win,beg,halfway)/
                                 Sum(Win,beg,end);
        if(limited_precision==true)
            truncatebits(Wout[level,beg,end]);
    }
}
不希望的是处理未定义或负的线性内插系数。例如,假设1×2点积为P0-P1。在这种情况下,由于除以零,所以未定义线性内插系数。另一个实例是点积P0-2*P1。在这种情况下,系数为负(1/(-1))。由于线性内插单元只预期正系数的事实,所以将负系数传递给线性内插单元可能不起作用。
为了避免这两种约束条件,无论点积系数何时为负,都可改变其符号。为了进行补偿,在过滤操作期间可反转对应P或通道值的符号。为了补偿符号改变,对于具有负系数的每个纹理元素将控制掩码传递给纹理控制块。在一个实施例中,掩码为0表示对应系数为正。在一个实施例中,掩码为1表示对应系数为负并且向设备发送反转纹理元素数据的符号的信号。但是,最重要的是,用于正系数和负系数的掩码值可加以区分。例如,在P0-2*P1的情况下,将(-2)变为2以得到P0+2*P1。这导致线性内插计算:3*lerp(1/3,P0,-P1),其中lerp是线性内插。
翻转P1的符号以补偿其系数的符号改变。参考图8,在方框70和步骤1中,接收系数w0和w1,并确定系数w1小于0或为负。在步骤2中,如左边和右边的方框72和74所示,将w1设置成等于w1’。在步骤3中,在左边,在方框76中加载P0和P1,并在右边在方框78中进行同样的事情。然后,在步骤4中,在左边在方框80中将P1设置成等于P1’,并在右边在方框82中将负P1设置成等于P1’。接着,在步骤5中,如方框84所示,将lerp尺度(scale)定义为s=(w0+wl’)。如方框86所示,将lerp系数定义为c=w0/(w0+w1)。最后,在步骤7中,如方框88所示,将P0*w0+P1*w1设置成等于c*lerp(c,P0,P1)。
上述序列可在软件或硬件中实现。在软件实施例中,它可通过存储在例如存储器16中并由图2中的中央处理单元12执行的计算机可执行指令来实现。因此,计算机可读介质可以是存储器16,并且计算机可通过中央处理单元12来实现。
因此,将2、4和8元点积映射到最大为三级的线性内插中是可能的。
对于涉及纹理单元内核的诸如n元点积的任何应用,可利用线性内插调用的可用库来将它重写。
主要代码仍在通用处理器核上执行,并且库函数部分地在局部核上执行,并且部分地在纹理单元上执行。在处理器核上执行的库函数部分涉及:(1)在核与纹理单元之间建立通信;(2)启动该通信;以及(3)将中间结果累加以用于最终输出。
这些基本上是与纹理单元方案有关的三种主要开销。来自该算法的性能增益可由这些偏移抵消。如果利用纹理样本的专用硬件来实现这三个步骤,则在一些实施例中,这些开销可减少并可实现更高的性能。
一些实施例的一个应用是确定二维卷积。这是图像处理和许多科学应用中的常见操作。二维卷积可利用两个纹理单元(TXS)函数来实现,包括用于将卷积过滤器系数变换为所需的归一化过滤器值的变换以及执行实际卷积的函数。对于大小为N×N的输入图像和k×k过滤器,二维内核如下:
输入:大小为N ×N的InputImage[i][j]
过滤器:大小为k×k的过滤器[m][n]
TXS_LerpCoeffTransform(k,k,&Filter[0][0],
&Filter_Lerp[0][0],&mask[0][0]);
for(i=0;i<N;i++)
for(j=0;j<N;j++){
    TXS_DP(k,k,&Filter_Lerp[0][0],&InputImage[i][j],&mask[0][0],&result);
   OutputImage[i][j]=result;
}
对变换的调用采用原始过滤器系数,并将它们转换为线性内插系数形式。对于每个图像像素,即输入图像[i][j],利用变换后的filter_lerp执行卷积。
因为点积卸载到纹理单元,处理器核现在可随意执行其它操作。
注意,设置系数TXS_LerpCoeffTransform以将卷积过滤器系数变换为归一化的过滤器值的调用引入了一定开销。但是,这种开销分摊在这些值的多次使用上,这对于点积是必定的。还可能的是,可以有不利用这些系数的变换的更一般的过滤,在此情况下,将不调用TXS_LerpCoeffTransform,并且因此没有进一步的开销。
另一个实例是矩阵相乘。同样地,利用两个图形纹理单元函数,包括用于将一个矩阵的行变换为纹理单元所需的系数格式的变换函数以及对另一个矩阵的列执行点积的函数。以下代码可执行计算C=A*B,其中矩阵A、B和C是维度为N的方矩阵。这些矩阵可以是任何类型,包括字符型、短整型、整数型或浮点数。
for(row=0;row<N;row++){
     TXS_LerpCoeffTransform(1,N,A[row],RowAlerp,mask);
     for(column=0;column<N;column+=4){
           TXS_DP(1,N,RowAlerp,&B[0][column],mask,&result);
           for(c=0;c<4;c++)
                C[row][column+c]=result[c]
     }
}
可将矩阵A的每个行变换为线性内插系数的向量RowALerp。然后,利用RowALerp来与矩阵B的每个列B[*][column]执行点积。对点积函数的单次调用的结果是C的四个元素。对点积函数的每次调用计算C的四个连续元素:C[row][column]、C[row][column+1]、C[row][column+2]、C[row][column+3]。
又一个实例是确定二维二叉树点阵。这可在计算财务中用于数字求解描述随时间的市场动态的偏微分方程。二维点阵示出其值取决于两个随机变量的价格的可交易元素的值,例如其值取决于按外汇利率的债券价值的外汇债券。在每个时间步长,可以通过利用四个相邻小区计算下一个时间步长中的预期价格来利用2×2窗口遍历二维点阵:
bCurr[ji][j2]=P1*vPrev[j1+1][j2+1]+
P2*vPrev[j1+1][j2]+
P3*vPrev[j1][j2+1]+
P4*vPrev[j1][j2]。
典型的问题从2000×2000点阵开始。对于该点阵,有1999×1999个2×2窗口。1999×1999结果集合形成下一次迭代的点阵。计算可继续,直到点阵中只剩下一个项。
在所有迭代中,P1、P2、P3和P4恒定,并且可提前计算。对于所有实际问题参数,它们为正并为非零。利用2×2窗口的基本操作减少为与纹理采样器上的线性内插计算完好匹配的恒定系数的加权总和计算。
在一些实施例中,执行点积的操作可在软件或固件中实现。在这些情况下,计算机可由存储在诸如半导体存储器的计算机可读介质上的计算机可执行指令进行控制。在其它实施例中,操作可完全在硬件中实现,并且在其它情况下,以利用硬件和软件的组合。
参考图3,在一些实施例中,可将独立输入提供给线性内插器树中的每个线性内插器(Lerp)20以便利用可用线性内插函数有效地计算2、4或8元点积,而无需任何溢出计算。在一些情况下,额外存储需要可能较小,例如总计32字节的8个32位位置。另外,可利用32位乘法器22。可编程系数存储设备18可存储线性内插器所需的系数,并通过复用器24将它们提供给每个线性内插器20。此外,可将缩放因子提供给乘法器22的一个输入。
在一些实施例中,可通过编程器直接编程线性内插器系数18。利用式1的递归应用推导8元点积的系数18。为了节省空间,下文只示出最终结果,其中系数18来自以下lerp的系数:
w0*P0+w1*P1+w2*P2+w3*P3+w4*P4+w5*P5+w6*P6+w7*P7=
   (w0+w1+w2+w3+w4+w5+w6+w7)lerp(
                        (w0+w 1+w2+w3)/
(w0+w1+w2+w3+w4+w5+w6+w7)
                         lerp(
                               (w0+w1)/(w0+w1+w2+w3),
                               lerp(w0/(w0+w1),P0,P1),
                               lerp(w2/(w2+w3),P2,P3)
                              ),
                          lerp(
                               (w4+w5)/(w4+w5+w6+w7),
                               lerp(w4/(w4+w5),P4,P5),
                               lerp(w6/(w6+w7),P6,P7)
                              )
                          )
可在纹理采样器中增加有限状态机定序器以使得纹理采样器能够处理以下形式的任何m×n元点积:
Σ i = 0 m Σ j = 0 n w i , j * P i , j
定序器能以软件、硬件或其组合来实现。定序器可将m×n点积分解为2、4或8元点积操作的组合。然后,它循环通过这些点积操作并进行累加以获得最终输出。可将奇数大小的点积拉长(pad)到下一个偶数大小点积,以便可以将其有效地分解为2、4或8元点积。
软件定序器可以利用处理器核40(图2)来执行设置和累加这两个主要步骤。设置步骤可涉及:将W={w}i,j分解为基本的1×1、1×2、2×2或2×4子块的序列;以及将每个块变换为如上所示的lerp系数的形式。累加步骤可涉及利用变换后的系数以及阵列P的一定的1×1、1×2、2×2或2×4区域执行基本卷积。它可创建对应的纹理控制块,对纹理采样器启动每个子块,并将返回的值累加到最终结果。以下伪代码示出这两个主要步骤中的每个步骤的一个可能实现:
//设置步骤
for(i=0;i<m;i+=2)
     for(j=0;j<n;j+=4)
     {
          1.basicW=min(2,m-i);
          2.basicH=min(4,n-j);
          3.获得基本子块:W[i:i+basicW,j:j+basicH]
          4.生成lerp系数+缩放因子并将它们存储到W[i:i+basicW,
j:j+basicH]
     }
//累加步骤
将结果设为0;
for(i=0;i<m;i+=2)
    for (j=0;j<n;j+=4)
    {
            1.basicW=min(2,m-i);
            2.basicH=min(4,n-j);
            3.在P[k:k+basicH,1:1+basicW]内指定样本点S
            4.基于W[i:i+basicW,j:j+basicH]和S创建纹理控制块(TCB)并启动纹理请求
            5.等待返回中间值的请求
            6.将中间结果累加到结果中
}
如图6所示的硬件实现可消除对于累加步骤涉及处理器核的开销。该实现可包括耦合到有限状态机52的设置单元50。地址生成单元54将地址提供给耦合到存储器58的数据访问单元56。
硬件定序器的一个可能实现涉及三件逻辑。紧靠过滤单元62的小型有限状态机52生成对每个子点积计算的纹理请求,并将它们馈送给纹理管线。过滤器单元62可从存储设备60接收所选的可编程系数。过滤单元62的最后一级的几个小型缓冲器64用作下一级LERP的输入数据。缩放单元66执行最终结果乘以缩放因子(例如,在4元点积的情况下为w0+w1+w2+w3)。也可利用其它硬件以及混合软件/硬件实现。
为了进一步理解硬件定序器操作,考虑计算4×4点积的实例。由于过滤单元可执行的最大点积为8元点积,所以在一个实施例中,可将4×4点积分解为2个8元点积。
可将2个4×4矩阵A和B分解为2个2×4子矩阵A0/A1和B0/B1。硬件定序器首先计算A0和B0的8元点积,然后将它与A1和B1的8元点积累加。时序图(图7)示出利用双条目(entry)缓冲器64和缩放单元66在时间序列0-6、级1-3的这样的操作。
在这个实例中,硬件定序器有限状态机52将8元点积(A0.B0)和(A1.B1)发给三线性过滤器单元的3级管线。当A0.B0的输出在时间2从3级管线中出来时,它保存在2条目缓冲器的第一条目中。当(A1.B1)的输出在时间3到达时,它保存到2条目缓冲器的第二条目中。在时间4,有限状态机采用这些输出并将它们馈送回给过滤器单元62以执行线性过滤器(它会只进行一个循环)。在时间5,接着将来自过滤器单元的组合输出(A0.B0+A1.B1)馈送到缩放单元以执行最终缩放。在时间6,完成矩阵A和B之间的4×4点积并将它返回到处理器核。
本文描述的图形处理技术可在各种硬件体系结构中实现。例如,图形功能性可集成在芯片组中。或者,可使用离散图形处理器。作为又一个实施例,可通过包括多核处理器的通用处理器来实现图形功能。尽管本文描述了线性内插,但也可使用其它形式的内插。
整篇说明书中提到“一个实施例”或“实施例”时表示,结合该实施例描述的特定特征、结构或特性包含在本发明内所涵盖的至少一个实现中。因此,出现短语“一个实施例”或“在实施例中”时不一定都指相同的实施例。此外,能以不同于所示的特定实施例的其它合适的形式设立这些特定特征、结构或特性,并且所有这些形式都涵盖在本申请的权利要求内。
尽管关于有限数量的实施例描述了本发明,但本领域技术人员将由此明白众多修改和改变。随附权利要求要涵盖所有这些落在本发明的真实精神和范围内的修改和改变。

Claims (21)

1.一种用于图形处理的方法,包括:
利用纹理单元中的可编程线性内插器计算点积;
确定由所述纹理单元确定的点积系数为负数,以及将所述系数的符号变为正值;以及
通过将具有负系数的每个纹理元素的控制掩码传递给纹理控制来补偿所述符号改变;以及确定所述掩码中的一个值表示对应系数为正数,而所述掩码中的另一个值表示对应系数为负数。
2.如权利要求1所述的方法,包括利用有限状态机定序器处理任何大小的点积。
3.如权利要求2所述的方法,其中所述状态机将较大的点积计算分解为多于一个较小的计算。
4.如权利要求3所述的方法,包括:将点积计算的序列分解为多个子块;以及将每个子块变换为线性内插系数。
5.如权利要求2所述的方法,包括利用软件定序器有限状态机。
6.如权利要求2所述的方法,包括利用硬件定序器有限状态机。
7.如权利要求1所述的方法,包括通过在过滤操作期间反转对应通道值的符号来补偿所述点积系数的符号改变。
8.如权利要求1所述的方法,包括将一般的N元点积映射到线性内插器树。
9.一种用于图形处理的设备,包括:
处理实体;
耦合到所述处理实体的存储器;以及
耦合到所述处理实体的可编程线性内插器,用于计算点积来确定点积系数为负数,并将所述系数的符号变为正值,以及通过将具有负系数的每个纹理元素的控制掩码传递给纹理控制来补偿所述符号改变;以及确定所述掩码中的一个值表示对应系数为正数,而所述掩码中的另一个值表示对应系数为负数。
10.如权利要求9所述的设备,包括用于处理任何大小的点积的有限状态机定序器。
11.如权利要求10所述的设备,其中所述定序器将点积分解为多个较小点积操作的组合。
12.如权利要求11所述的设备,其中所述定序器循环通过所述点积操作并累加最终结果。
13.如权利要求11所述的设备,其中所述定序器将奇数大小的点积拉长到下一个偶数大小的点积。
14.如权利要求13所述的设备,其中所述处理实体执行设置和累加操作,所述设置操作将系数分解为多个子块。
15.如权利要求14所述的设备,所述处理器通过利用从所述设置操作变换的系数执行卷积来实现累加操作。
16.如权利要求15所述的设备,其中所述定序器有限状态机包括过滤单元,所述有限状态机对每个子点积计算生成纹理请求并将它们馈送给纹理管线。
17.如权利要求13所述的设备,包括通过缩放因子执行最终结果的相乘的缩放单元。
18.如权利要求11所述的设备,其中所述有限状态机定序器对每个子点积计算生成内插器请求并将它们馈送给所述内插器。
19.如权利要求9所述的设备,包括线性内插器树,一般的N元点积映射到所述线性内插器树。
20.一种用于图形处理的装置,包括:
确定由纹理单元确定的点积系数为负数的部件;
将所述系数的符号变为正值的部件;以及
通过将具有负系数的每个纹理元素的控制掩码传递给纹理控制来补偿所述符号改变以及确定具有一个值的掩码表示对应系数为正数而具有另一个值的所述掩码表示对应系数为负数的部件。
21.如权利要求20所述的装置,还包括:通过在过滤操作期间反转对应通道值的符号来补偿所述点积系数的符号改变的部件。
CN201010592194.0A 2009-12-08 2010-12-08 用于通用计算的纹理单元 Expired - Fee Related CN102087740B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/633,062 US8570336B2 (en) 2009-12-08 2009-12-08 Texture unit for general purpose computing
US12/633062 2009-12-08

Publications (2)

Publication Number Publication Date
CN102087740A CN102087740A (zh) 2011-06-08
CN102087740B true CN102087740B (zh) 2014-12-03

Family

ID=43334058

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010592194.0A Expired - Fee Related CN102087740B (zh) 2009-12-08 2010-12-08 用于通用计算的纹理单元

Country Status (5)

Country Link
US (3) US8570336B2 (zh)
CN (1) CN102087740B (zh)
DE (1) DE102010048485A1 (zh)
GB (1) GB2476141B (zh)
TW (1) TWI512686B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110025700A1 (en) * 2009-07-30 2011-02-03 Lee Victor W Using a Texture Unit for General Purpose Computing
US9275349B2 (en) 2013-07-19 2016-03-01 Ricoh Company Ltd. Healthcare system integration
US9367948B2 (en) * 2013-11-14 2016-06-14 Intel Corporation Flexible filter logic for multi-mode filtering of graphical texture data
US9946331B2 (en) * 2014-06-27 2018-04-17 Samsung Electronics Co., Ltd. System and method to process signals having a common component
US9607425B2 (en) * 2014-10-17 2017-03-28 Qualcomm Incorporated Ray-box intersection testing using dot product-based fixed function logic
KR102444240B1 (ko) 2015-07-29 2022-09-16 삼성전자주식회사 텍스쳐 처리 방법 및 장치
US10089708B2 (en) 2016-04-28 2018-10-02 Qualcomm Incorporated Constant multiplication with texture unit of graphics processing unit
GB2566733B (en) 2017-09-25 2020-02-26 Advanced Risc Mach Ltd Performimg convolution operations in graphics texture mapping units
US20190179635A1 (en) * 2017-12-11 2019-06-13 Futurewei Technologies, Inc. Method and apparatus for tensor and convolution operations
US11640420B2 (en) 2017-12-31 2023-05-02 Zignal Labs, Inc. System and method for automatic summarization of content with event based analysis
US11755915B2 (en) 2018-06-13 2023-09-12 Zignal Labs, Inc. System and method for quality assurance of media analysis
US11356476B2 (en) 2018-06-26 2022-06-07 Zignal Labs, Inc. System and method for social network analysis
US11037356B2 (en) * 2018-09-24 2021-06-15 Zignal Labs, Inc. System and method for executing non-graphical algorithms on a GPU (graphics processing unit)
US20210150413A1 (en) * 2019-11-20 2021-05-20 Mentium Technologies Inc. Data processing system configured for separated computations for positive and negative data
TWI749552B (zh) * 2020-05-13 2021-12-11 國立中正大學 內積計算裝置
TWI760942B (zh) * 2020-11-26 2022-04-11 國立中正大學 可變延遲計算裝置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6778181B1 (en) * 2000-12-07 2004-08-17 Nvidia Corporation Graphics processing system having a virtual texturing array
US7158141B2 (en) * 2002-01-17 2007-01-02 University Of Washington Programmable 3D graphics pipeline for multimedia applications
US7528842B2 (en) * 2004-04-23 2009-05-05 Sony Computer Entertainment Inc. Image processing apparatus and image processing method

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5345408A (en) * 1993-04-19 1994-09-06 Gi Corporation Inverse discrete cosine transform processor
US5541864A (en) * 1994-04-26 1996-07-30 Crystal Semiconductor Arithmetic-free digital interpolation filter architecture
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
US6223198B1 (en) * 1998-08-14 2001-04-24 Advanced Micro Devices, Inc. Method and apparatus for multi-function arithmetic
US6300935B1 (en) * 1999-04-20 2001-10-09 Agilent Technologies, Inc. Image interpolation circuit architecture and method for fast bi-cubic interpolation of image information
JP2003030683A (ja) 2001-07-18 2003-01-31 Tsuneo Ikedo ラフ面光反射回路
US7065545B2 (en) * 2002-05-07 2006-06-20 Quintero-De-La-Garza Raul Gera Computer methods of vector operation for reducing computation time
US6952211B1 (en) * 2002-11-08 2005-10-04 Matrox Graphics Inc. Motion compensation using shared resources of a graphics processor unit
EP1563686B1 (en) * 2002-11-12 2010-01-06 Intellivid Corporation Method and system for tracking and behavioral monitoring of multiple objects moving through multiple fields-of-view
EP1847965A4 (en) * 2005-01-04 2009-08-12 Ssd Co Ltd PLOTT SETUP AND PLOTT PROCEDURE
JP2009540675A (ja) * 2006-06-08 2009-11-19 ユークリッド・ディスカバリーズ・エルエルシー ビデオデータを処理する装置および方法
US20110025700A1 (en) * 2009-07-30 2011-02-03 Lee Victor W Using a Texture Unit for General Purpose Computing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6778181B1 (en) * 2000-12-07 2004-08-17 Nvidia Corporation Graphics processing system having a virtual texturing array
US7158141B2 (en) * 2002-01-17 2007-01-02 University Of Washington Programmable 3D graphics pipeline for multimedia applications
US7528842B2 (en) * 2004-04-23 2009-05-05 Sony Computer Entertainment Inc. Image processing apparatus and image processing method

Also Published As

Publication number Publication date
US20150228091A1 (en) 2015-08-13
GB2476141B (en) 2012-10-03
TW201128571A (en) 2011-08-16
US9076254B2 (en) 2015-07-07
TWI512686B (zh) 2015-12-11
GB201017641D0 (en) 2010-12-01
US20110134137A1 (en) 2011-06-09
US20140176590A1 (en) 2014-06-26
CN102087740A (zh) 2011-06-08
DE102010048485A1 (de) 2011-06-09
GB2476141A (en) 2011-06-15
US8570336B2 (en) 2013-10-29

Similar Documents

Publication Publication Date Title
CN102087740B (zh) 用于通用计算的纹理单元
CN107533667A (zh) 神经网络处理器中的向量计算单元
CN103440121B (zh) 一种面向向量处理器的三角矩阵乘法向量化方法
CN101399553B (zh) 一种可在线编程的准循环ldpc码编码器装置
US8959134B2 (en) Montgomery multiplication method
EP4318275A1 (en) Matrix multiplier and method for controlling matrix multiplier
CN112991142A (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
US20110025700A1 (en) Using a Texture Unit for General Purpose Computing
CN104869284A (zh) 一种双线性插值放大算法的高效率fpga实现方法和装置
CN115860080B (zh) 计算核、加速器、计算方法、装置、设备、介质及系统
CN101561797A (zh) 在处理系统上对矩阵进行奇异值、特征值分解的方法和装置
CN116842304A (zh) 一种不规则稀疏矩阵的计算方法及系统
JP5157484B2 (ja) 行列演算コプロセッサ
CN112639836A (zh) 数据处理装置、电子设备和数据处理方法
CN113642722A (zh) 用于卷积计算的芯片及其控制方法、电子装置
CN103293373A (zh) 电能计量装置及其电能计量芯片
CN114741352B (zh) 一种基于fpga的双线性插值重采样实现方法及装置
CN111507178B (zh) 数据处理的优化方法及装置、存储介质、计算机设备
CN117172161B (zh) 一种流场模拟方法、装置、计算机设备及存储介质
US20230252600A1 (en) Image size adjustment structure, adjustment method, and image scaling method and device based on streaming architecture
CN115481721B (zh) 一种针对卷积神经网络的Psum计算电路
CN114330682A (zh) 应用于Fastformer神经网络的硬件架构及其计算方法
CN116414456B (zh) 存算芯片内的加权融合变换部件、存算电路及协同计算方法
JP2001084242A (ja) 可変演算プロセッサ
CN113901392A (zh) 一种用于神经网络数据流计算架构的1d向量计算单元

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141203

Termination date: 20211208