首页 / 一种用于嵌入式GPU中纹理映射环节的对数运算方法及电路

一种用于嵌入式GPU中纹理映射环节的对数运算方法及电路实质审查 发明

技术领域

[0001] 本发明涉及一种对数运算方法及电路,具体涉及一种用于GPU芯片中纹理映射的对数运算方法及用于实现该方法的运算电路。

相关背景技术

[0002] 如图1所示,在现有嵌入式GPU中的纹理映射环节,通常采用各向同性滤波逼近各向异性滤波算法来实现像素空间与纹理空间的映射,该算法的具体步骤如下:
[0003] S1、根据纹理空间与像素空间的映射关系,得到单个像素从像素空间映射到纹理空间的映射足迹的最长边dmax和最短边dmin。
[0004] S2、基于映射足迹的最长边dmax和最短边dmin计算出所对应的mipmapping层级;其中,mipmapping的长边用来计算采样点个数,通过长边与短边的比值求采样点个数;短边用来查询mipmapping层级,也就是在短边映射的层级进行采样,对应图1中,sx=6,sy=‑1,tx=3,ty=2,所以对应的长边为 短边为
[0005] S3、根据最长边与最短边的比值求出所对应的各向同性滤波足迹所需的采样点的个数N。
[0006] S4、求出对应的mipmapping层级lod:
[0007] lod=log2(dmax/N);
[0008] 当lod为整数时,对每个采样点进行临近点采样或双线性插值;当lod为小数时,分别对lod+1层和lod‑1层采用临近点采样或双线性插值,再在两个层级之间进行单线性插值,从而计算采样点的纹理值。图1中mipmapping层级 从而分别需要对层级level1和层级level2进行采样,之后再进行单线性插值。
[0009] S5、通过加权平均求出最终像素对应的纹理值。
[0010] 根据上述步骤可知,在S4时需要进行1/N的对数运算,若N为奇数,硬件在实现该除0 1 2
法运算时资源消耗很大;但是,若N为2的幂次方(如2、2 、2……),那么硬件只需要通过右移操作便可实现该除法计算。
[0011] 因此,考虑对纹理空间覆盖区域的长边和短边的比值求以2为底的对数L,这样可以在保证一定计算精度的同时,最终计算出采样点个数N为2的幂次方。其中,L=log2(dmax/dmin), 为L的向下取整。
[0012] 在现有技术中,一般情况下会采用查表或者cordic算法来进行对数计算。然而,在嵌入式GPU中,由于功耗面积等限制,留给对数运算的资源是十分有限的。

具体实施方式

[0060] 为使本发明的目的、优点和特征更加清楚,以下结合附图和具体实施例对本发明提出的一种用于嵌入式GPU中纹理映射环节的对数运算方法及电路作进一步详细说明。根据下面具体实施方式,本发明的优点和特征将更清楚。
[0061] 本实施例一种用于嵌入式GPU中纹理映射环节的对数运算方法具体包括以下步骤:
[0062] 步骤1、针对纹理映射环节的需求,在该对数运算方法中,默认两个输入数据为23位的整数型数据,而输出的五位定点型数据,默认高三位为整数部分,低两位为小数部分。
[0063] 首先,获取待进行对数运算的输入A和输入B,然后再比较输入A和输入B的大小,将两者中数值较大的一个作为分子,另一个作为分母。例如,若A>B,则对数运算的具体形式为log2(A/B)。
[0064] 步骤2、计算分子分量,获取分量计算结果。具体的,分别计算如下的分子分量:1/n n2、1/4、1/8、1/16、…、1/2,n≥1,获取分量计算结果,分别为A/2、A/4、A/8、A/16…、A/2。
[0065] 步骤3、将分母与分量计算结果进行比较,依据预设的整数值对应关系,确定对数运算结果的整数值。
[0066] 因为该方法的两个输入量的实际意义是采样点从像素空间映射到纹理空间映射足迹的长宽比,规定长宽比的范围在1~16。
[0067] 本发明主要为处理纹理映射环节中的问题,根据电路需要,所设计的对数近似计算模块只处理输入数据比值在1~16之间,超出该比例按最大比值16处理,也就意味着输出的整数部分只有0到4。
[0068] 综上所述,在本实施例中,依据实际使用需要,整数值只需要计算至4即可,因此,上述的步骤2在本实施例中进一步为:分别计算如下的分子分量:1/2、1/4、1/8和1/16,获取分量计算结果,分别为A/2、A/4、A/8和A/16。
[0069] 然后再依据如下的预设整数对应关系,来确定对数运算结果的整数值:若A/2<B
[0070] 在本发明的其他实施例中,依据上述的方式,可以对所需的整数值进行扩展,可根据具体的需要进行对应扩展,只需要在数据位宽允许的范围内即可。
[0071] 具体的,可将上述预设的整数对应关系扩展为:若A/2<B
[0072] 步骤4、基于预设的运算精度,获得分量计算结果与分子相加的加法计算结果;因为纹理映射模块的数据格式要求,小数部分仅有两位,所以本实施例中的预设运算精度只有0.25,则本实施例中的加法计算结果相应为1.25A、1.5A和1.75A。
[0073] 步骤5、根据步骤3确定出的整数值,结合预设的扩大倍数对应关系,将分母扩大对应的倍数;再将扩大后的分母与分子及步骤4中的加法计算结果进行比较,依据预设的小数值对应关系,确定对数运算结果的小数值。
[0074] 具体的,将扩大后的分母定义为B`,上述预设的扩大倍数对应关系为:若整数值为0,则将分母左移一位扩大两倍,即B`=2B;若整数值为1,则将分母左移两位扩大四倍,即B`=4B;若整数值为2,则将分母左移三位扩大八倍,即B`=8B;若整数值为3,则将分母左移四位扩大十六倍,即B`=16B;若整数值为4,则将分母左移五位扩大三十二倍,即B`=32B;依n+1 n+1
此类推,若整数值为n,则将分母左移n+1位扩大2 ,即B`=2 B。而在本实施例中,由于整数值只需要计算值4即可,因此,只需要将分母对应扩大至三十二倍即可,当然,在本发明的其他实施例中,本领域技术人员可以根据实际需要进行扩大。
[0075] 预设的小数值对应关系具体为:若A
[0076] 由于本方法的适用环境不需要太高的精度,因此若想要更加精细的精度,可以参照上述的方法,对分子分量进一步细分,然后用细分后的分子分量并相加后的数据进行对小数的判断,增加了判断小数的条件。
[0077] 具体的,如果预设的运算精度为0.125,则加法计算结果相应为1.125A、1.25A、1.375A、1.5A、1.625A、1.75A、1.875A和2A,则预设的小数值对应关系具体为:
[0078] 若A1.875A,则对数运算结果的小数值为0.125;若1.875A0.000。
[0079] 这样便将精度增加的小数点后三位,精度为0.125。理论上只要在数据位宽允许的范围内,数据的精度是可以根据需要不断细分下去的。
[0080] 步骤6、将整数值与小数值进行拼接,获得最终的对数运算结果。
[0081] 如图3所示,为一段y=log2x函数在直角坐标系下的图像,x为输入量A与B的比值,我们设计的x范围为[1,16],而主要的x区间在[1,4]。
[0082] 如图4所示,是y=log2x函数图像与本发明快速近似计算算法的函数图像比对,本发明快速近似算法所描述的分段函数与原函数图像走向吻合,观察图像可知两函数的最大差值为0.25。
[0083] 表1
[0084]
[0085] 上表是纹理映射环节中的一组长宽比,其比值在1~2之间。因为算法所规定,长宽比值在每个整数区间的小数部分近似方式相同,所以在每个整数区间的误差相同。以比值区间[1,2]为例,使用近似算法与原本计算结果的比对,最大的误差为0.17。对于要精确到小数点后两位,精度为0.25的纹理映射模块需求来说,使用该算法所造成的误差应用到实际电路中完全可以允许。
[0086] 虽然本方法的运算精度比较低,但完全满足纹理映射模块的需要,而且因为该本方法是纯组合逻辑,且仅用几步简单的移位、加法和比较操作便完成对数的近似计算(3次比较、2次移位、1次加法),与传统的cordic迭代算法(每次迭代需要3次加法、2次移位、1次查表、1次判断)或查表法相比,在计算速度、面积、功耗上都有着完全碾压的优势。
[0087] 表2
[0088]
[0089] 而对于本发明其他实施例中将算法精细到小数点后三位得到的数据(上表2),对比两位精度更接近真实数据,同样证明此算法的结构灵巧,易于变化而适应各种需求。
[0090] 表3
[0091]
[0092]
[0093] 上表3是纹理映射环节中的一组长宽比,从1~16区间均匀取出,作为电路测试数据。
[0094] 本实施例一种用于嵌入式GPU中纹理映射环节的对数运算电路,以GPU的纹理映射环节为使用环境,该对数运算模块内置于纹理映射模块中。参见图2,该电路具体包括比较模块(Compare_AB)、位移模块(Shift)、加法模块(ADD)、近似模块(Compare_Similar)和小数模块(Compare_decimals)。
[0095] 其中,比较模块用于获取待进行对数运算的输入A和输入B,并比较输入A和输入B的大小,将两者中数值较大的一个作为分子,输出至位移模块和加法模块,将另一个作为分母,输出至近似模块和小数模块;位移模块用于计算分子分量,获取分量计算结果,并将计算结果输出至加法模块和近似模块;加法模块用于基于预设的运算精度,获得分量计算结果与分子相加的加法计算结果,并将加法计算结果输出至小数模块;近似模块用于将分母与分量计算结果进行比较,依据预设的整数值对应关系,确定对数运算结果的整数值,并将整数值输出至小数模块;小数模块用于根据确定出的整数值,依据预设的扩大倍数对应关系,将分母扩大对应的倍数;再将扩大后的分母与分子及加法计算结果进行比较,依据预设的小数值对应关系,确定对数运算结果的小数值;再将整数值与小数值进行拼接,获得并输出最终的对数运算结果。
[0096] 在本实施例中,输入数据必须是整数型,在本发明的其他实施例中,若想扩展到浮点数的计算,可以在该电路前在增加一个浮点转定点模块,使输入数据成为分数形式参与运算。具体的,通过浮点转定点模块的输入端用于获取外部的输入数据,将其输出端与比较模块的输入端连接。
[0097] 如图4所示,将本实施例的计算结果与精确计算结果以及Modelsim对硬件电路的仿真结果进行对比,可见硬件电路的仿真结果与函数计算结果在误差允许范围内基本吻合,说明电路与算法逻辑一致。

当前第1页 第1页 第2页 第3页
相关技术
对数运算相关技术
嵌入式相关技术
张霞发明人的其他相关专利技术