用以进行大整数乘法运算的装置和方法

文档序号:6462432阅读:186来源:国知局
专利名称:用以进行大整数乘法运算的装置和方法
技术领域
本发明有关于一种大整数乘法运算的装置和方法,特别是 有关于绘图处理单元的大整数乘法运算。
背景技术
绘图处理单元(Graphic Processing Unit)系用以进行绘图 运算的核心。图l是一 已知绘图处理单元100的区块图。绘图处 理单元100包括一存储器102及一着色模块(Shader Module) 104。存储器102用以储存顶点数据(Vertex data) 112,材质数 据(Texture data ) 114以及最终处理得到的绘图结果数据116。 着色模块104包括一顶点着色(Vertex Shader)模块122, 一几 何着色(Geometry Shader )模块124, 一裁剪处理(Clipping & Setup)才莫块126以及一像素着色(Pixel Shader )才莫块128。首先,顶点数据112与材质数据114经由顶点着色模块122 及几何着色才莫块124转换为屏幕坐标数据(Screen Corodinates )。 接着,裁剪处理模块126依据屏幕坐标数据进行几何图形运算 (Primitive Processing )处理,以将坐标数据转换为以多个孩史小 三角形构成的几何图形。最后,像素着色模块(Pixel Shading Module ) 128将裁剪处理模块126输出的几何图形以像素着色, 而输出最后的绘图结果数据116。在绘图处理单元100中,以输出最终绘图结果数据116的像 素着色模块128为核心,而像素着色模块128需要进行大量的乘 法运算。尤其是像素着色模块128经常进行大整数(Large Integer)的乘法运算。图2为已知像素着色模块进行乘法运算的 示意图。假设像素着色模块欲进行数据A与数据B的乘法运算AxB。被乘数数据A包含一 系列的元素(block),包括箭头200 所指的Am, Am.!, ..., A2, A,等m个元素。乘数数据B亦包含一 系列的元素,包括箭头201所指的Bn, B^, ..., B2, B!等n个元素。于一实施例中,所述元素Am, Am." A2, A,及Bn, Bn-,,...,B2, B为像素区块(block )。数据A与数据B的乘法运算AxB如下进行。首先,以乘数数 据B的元素Bi分别乘上^皮乘数数据A所包含的一 系列的元素 (Am, Am-,,…,A2, AJ,而得到暂存器202中的(AmB。 Am—,B,, A3B,, AzBp A!BJ,其中暂存器202着色部分的值为O,而AkBt的进位值必须加到Ak+1B1(J接着,以乘数数据B 的元素B2分别乘上被乘数数据A所包含的一系列的元素(Am,Am.,,…,A2, AJ,而得到(AmB2, Am.iB2,…,A2B2, A,B2), 并移动一位后储存于暂存器204中,其中暂存器204着色部分的 值为O,而AkB2的进位值必须加到AkwB2。接下来以同样的方式, 分别以乘数数据B的元素B3, ..., Bn.n Bn分别乘上被乘数数据 A所包含的元素(Am, Am",…,A2, Ai),而得到暂存器206,…, 208, 210中的值,其中着色部分的值为O,而AkBn的进位值必须加到Ak+iBn。其中,k为被乘数元素Ak的序号。接着,将暂存器202 210中每一纵列相对应的元素值累加, 以分别得到积AxB对应的元素值Rm + n〗举例来iJi,将^v列221上的各元素(A!B!)相加,而得到积AxB 对应的元素值R"将纵列222上的各元素(A2B!, AiB2)相加, 而得到积AxB对应的元素值R2。将纵列223上的各元素(A3B,, A2B2, A^3)相力卩,而得到积AxB对应的元素值R3。因此,最 终得到包含一系列元素值Rm + n, Rm+",…,R3, R2, Ri的积AxB,其中R針n为由Rm+n-,进位而得。图2的已知乘法运算的复杂度分析如下。在进行AxBi的运算中,共需要进行(mxn)个乘法及(mxn)个加法。当在进 行纵列221, 222, 223等相加总运算时,共需要(n隱l ) x ( n+m ) 个加法。另外,进位运算共需nx ( n+m)次加法。因此,图2 的已知乘法运算总共需要(m x n )次乘法及(2n2+3 mn-m-n J 次 加法。这是非常大的运算量。由于像素着色模块128需要频繁的 执行大量的大整数乘法运算,而同时图2的已知乘法运算的复杂 度很高,会造成绘图处理单元100很大的负荷。因此,需要一种 复杂度低的大整数乘法运算,以降低像素着色模块及绘图处理 单元的运算负荷量。发明内容有鉴于此,本发明的目的在于提供一种乘法运算装置,以 解决已知技术存在的问题。于一实施例中,该乘法运算装置包 括一被乘数暂存器, 一乘数暂存器, 一乘法模块, 一加法模块, 一进位值储存暂存器以及一乘法结果储存暂存器。该被乘数暂 存器储存包括m个被乘数元素Ak的 一被乘数数据,其中k为被乘 数元素Ak的序号。该乘数暂存器储存包括n个乘数元素B」的一乘 数数据,其中j为乘数元素Bj的序号。该乘法模块将该被乘数元 素Ak与该乘数元素Bj相乘,而得到一积值AkBj。该加法才莫块将 该积值AkBj与 一 右下方乘法结果值Rkd,jH及 一 右方进位值Ck.,,j 相加,以得到一乘法结果值Rk, j与一进位值Ckj。该进位值储存 暂存器储存该进位值C k, j,并提供该加法模块该右方进位值 Cw,j。该乘法结果储存暂存器储存该乘法结果值Rk, j,并提供 该加法^f莫块该右下方乘法结果值RiM,jw 。本发明亦提供一种进行大整数乘法运算的方法。首先以一 被乘数暂存器储存包括m个被乘数元素Ak的一被乘数数据,其 中k为被乘数元素Ak的序号。接着以 一乘数暂存器储存包括n个乘数元素Bj的一乘数数据,其中j为乘数元素Bj的序号。接着将 该被乘数元素Ak与该乘数元素Bj相乘,而得到一积值AkBj。接 着将该积值A k B j与 一 右下方乘法结果值Rk i,j + i及 一 右方进位值 Ck-j,j相加,以得到一乘法结果值Rk, j与一进位值Ck,j。接着以一 进位值储存暂存器储存该进位值Ck,j并提供该右方进位值Ck-,,j。 接着以 一乘法结果储存暂存器储存该乘法结果值Rk, j并提供该 右下方乘法结果值Rk-i,j+,。本发明所述的用以进行大整数乘法运算的装置和方法,有 较已知技术高的运算能力与较已知技术快的数据处理效率。


图i为一已知《会图处理单元的区块图;图2为已知像素着色模块进行乘法运算的示意图;图3为依据本发明进行乘法运算的示意图;图4为依据本发明的进行乘法运算的装置的区块图;图5为依据本发明的乘法结果值Rk,j形成的乘法结果值阵列;图6显示依据本发明的乘法结果暂存器与进位值暂存器。
具体实施方式
为了让本发明的上述和其他目的、特征和优点能更明显易 懂,下文特举数较佳实施例,并配合所附图示,作详细说明如 下。图3为依据本发明进行大整数乘法运算的示意图。假设像素 着色模块欲进行数据A与数据B的乘法运算AxB。被乘数数据A 包含一系列的元素(block),包括Am, Am",…,A2, A!等m个元素。乘数数据B亦包含一系列的元素,包括Bn, By,B2, B,等n个元素。于一实施例中,所述元素Am, Am_,,…, A2, A!及Bn, Bn小…,B2, B!为像素区块(block)。数据A与数据B的乘法运算AxB如下进行。首先,以被乘数 数据A的第一个元素A,分别乘上乘数数据B所包含的一系列的 元素(B" B2, B3,…,Bn-1; Bn),而得到纵列350所示的(A,B,, A,B2, AiB; ,…,A!Bn小A!Bn)。接着,以:帔乘数数据A的第 二个元素A2分别乘上乘数数据B所包含的元素(B!, B2, B3,..., Bn_,, Bn),而得到纵列360所示的(AzBn A2B2, A2B3,..., A2Bn-,, A2Bn)。同样的,分别以被乘数数据A的元素A3,..., Am—" Am分别乘上乘数数据B所包含的元素(B,, B2, B3, Bn—!, Bn),而得到其他纵列,例如纵列370所示的(Am-,B,,Am — ,B2, Am-iB"…,Am.iB^ , Am.^n )以及纵列380所示的(AmB ,,AmB2, AmB3, …,AmBn-i , AmBn )。于各纵列的每一积值AkBj产生后,亦会产生对应的一进位 值Ckj,其中k、 j分别表示由被乘数A的第k元素与乘数B的第j 元素相乘所得。此时,纵列350 380构成由元素AkBj形成的一积 值阵列AB,其中k 、 j分别表示元素AkBj于积值阵列AB中的列号 (自右起算)与行号(自上起算),l<k<m, l<j<n。同样的, 进位值Ck,j亦形成一进位值阵列C,其中k、 j分别表示元素Ck,j 于进位值阵列C中的列号(自右起算)与行号(自上起算), l<k<m, l<j<n。接着,依纵列350, 360, ..., 370, 380的顺序,自每列上 方的元素往下方依序计算对应各元素AkB,々乘法结果值Rk,j,其 中k、j分别表示乘法结果值Rk,j于乘法结果值阵列R中的列号(自 右起算)与行号(自上起算)。以乘法结果值Rk,j的计算方法为 例,将原乘法结果值阵列R中右下方位置的元素Rw 加上积值阵列AB中同一序号的元素AkBj,再加上进位值阵列C中右方 位置的元素Cw,j,而得到乘法结果值Rk,j。图5为依据本发明的 乘法结果值Rk,j形成的乘法结果值阵列R 500,其中l<k<( m+n), l<j<n。首先以乘法结果值R,,,的计算为例。由于原乘法结果值阵 列R中欠缺右下方位置的元素R。,2,进位值阵列C中亦无右方位 置的元素Ccu,因此乘法结果值Rw等于积值阵列AB中同 一序号 的元素AiBi。另外以乘法结果值Rw的计算为例。乘法结果值R 2, i将原乘法结果值阵列R中右下方位置的元素R i, 2,加上积值 阵列AB中同一序号的元素A2Bn再加上进位值阵列C中右方位 置的元素Cu,而得到乘法结果值R2,,。因此,乘法结果值阵列 R中的元素是自右而左,自上而下的产生。首先依序产生列550的R],广R,,n,接着依序产生列560的R2,广R2,n,并以此类推。接下来说明乘法结果值Rk,j计算方式的意义。将积值阵列 AB中同一序号的元素AkBj加上进位值阵列C中右方位置的元素 Ck-,,j,所得的数值(AkBj+Ck-u)即是图2中的AkBj数值加上同 一行前一元素进位的数值。图2中的斜线250、 260、 270、 280 分别对应于图3中的纵列350、 360、 370、 380,而图2中的纵列 221、 222、 223等分另'J只十应于图3中的在牛线321、 322、 323。由于 乘法结果值Rk,j的产生是以数值(AkBj+Ck丄j )加上原乘法结果 值阵列R中右下方位置的元素R k _,, j+,因此乘法结果值R k, j中储 存的值相当于图3中积值阵列AB中的元素AkBj以斜线321、 322、 323方向的累计值,亦相当于图2中元素AkBj以纵列221、 222、 223的累计值。因此,图5的乘法结果值阵列R中如箭头520所示 第l行的乘法结果值Rw相当于图2中行220的累加的最后结果 Rk。于图5中,由于乘法结果值相当于以斜线521、 522、 523等方向累加,在乘法结果值Rm,j R^j的部分,m>k>l,因此积值阵 列AB中有对应的AkBj可供相加以产生Rk,j 。在乘法结果值R(m+n),广R(m+i) ,j的部分,(m+n) >k〉 ( m+l ),因此积值阵列AB 中没有对应的AkBj可供相加以产生Rk,j, 4叉将进位值Ck,j及右下 方位置的元素Rk.U + i相加以产生RkJ 。图4为依据本发明的进行乘法运算的装置400的区块图。装 置400包括被乘数暂存器402,乘数暂存器404,乘法模块406, 加法模块408,乘法结果暂存器410以及进位值暂存器412。被乘 数暂存器402储存包括Am, Am-,,…,A2, A!等m个元素的被乘 数数据A。乘数暂存器404储存包括Bn, Bn.!,…,B2, B,等n个 元素的乘数数据B。乘法结果暂存器410用以储存具有(m+n) 列及n行的乘法结果值阵列R,其中乘法结果值阵列R包括(m+n) xn个乘法结果值元素Rk,j, l£k^(m+n), l^j£n。进位 值暂存器412用以储存具有(m+n)列及n行的进位值阵列C,其 中进位值阵列C包括(m+n) xn个进位值元素Ck,j, l$k$( m+n),改n。乘法模块406首先自被乘数暂存器402提取被乘数数据A的 元素Ak ,并自乘数暂存器404提取乘数数据B的所有元素 (Bn,…,BJ。接着,乘法模块406将元素Ak分别与(Bn,…, BJ中的元素Bj相乘,l<j<n,而得到积值AkBj。力口法才莫块408 接着自乘法结果暂存器410提取乘法结果值Rw,w,并自进位值 暂存器412提取进位值Ck.,,j。接着,加法模块408将积值AkBj与 乘法结果值Rk丄j^及进位值Ck-!,j相加,以得到乘法结果值Rk, j 与进位值Ck,j。乘法结果值Rk, j接着被储存于乘法结果暂存器 410。进位值Ck,j被储存于进位值暂存器412。图6显示依据本发明的乘法结果储存暂存器6 0 2与进位值储 存暂存器604的装置图600。由于一般的乘法结果暂存器无法同时进行提取乘法结果值R k — i, j +!与储存乘法结果值R k, j的动作,因此乘法结果暂存器602包括两个次级乘法结果暂存器612与 614,分别储存奇数列乘法结果值与偶数列乘法结果值。因此, 加法器可同时自次级乘法结果暂存器612提取乘法结果值 Rk-j,j+,以进行加法运算,并于产生乘法结果值Rk, j后输出至另一 次级乘法结果暂存器614储存,然后交替运作。同样的,由于一 般的进位值暂存器无法同时进行提取进位值Ck小j与储存进位 值Q, j的动作,因此进位值暂存器604包括两个次级进位值暂存 器622与624,分别储存奇数列进位值与偶数列进位值。其中, 次级进位值储存暂存器622储存该进位值Ck,j,而次级进位值储 存暂存器624同时提供该加法模块该右方进位值Ck-u。依据本发明的进行乘法运算的图4装置400的运算复杂度, 在被乘数A具有m个元素,乘数B具有n个元素的情况下,共需 mxn)欠乘;去,(m-l ) xn)欠力口^去,nxn)欠进4立运算(亦为力口5去)。 因此,依据本发明的乘法运算共需mxn次乘法与(n2+2mn-2n) 次加法,其复杂度显较图2的已知乘法运算的复杂度低。因此, 运用本发明的乘法运算的绘图处理单元100或像素着色模块128 会有较已知技术高的运算能力与较已知技术快的数据处理效 率。以上所述仅为本发明较佳实施例,然其并非用以限定本发 明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神 和范围内,可在此基础上做进一步的改进和变化,因此本发明 的保护范围当以本申请的权利要求书所界定的范围为准。附图中符号的简单说明如下100:绘图处理单元102:存储器104:着色模块(Shader Module )122:顶点着色(Vertex Shader )模块124:几何着色(Geometry Shader )模块126:裁剪处理(Clipping & Setup )模块128:像素着色(Pixel Shader )模块402:被乘数暂存器404:乘数暂存器406:乘法一莫块408:力口法模块410:乘法结果储存暂存器412:进位值储存暂存器602:乘法结果暂存器602604:进位^直暂存器604612, 614:次级乘法结果暂存器622, 624:次级进位值暂存器。
权利要求
1. 一种大整数乘法运算装置,其特征在于,包括一被乘数暂存器,储存包括m个被乘数元素Ak的一被乘数数据,其中k为被乘数元素Ak的序号;一乘数暂存器,储存包括n个乘数元素Bj的一乘数数据,其中j为乘数元素Bj的序号;一乘法模块,将该被乘数元素Ak与该乘数元素Bj相乘,而得到一积值AkBj;一加法模块,将该积值AkBj与一右下方乘法结果值Rk-1,j+1及一右方进位值Ck-1,j相加,以得到一乘法结果值Rk,j与一进位值Ck,j;一进位值储存暂存器,储存该进位值Ck,j,并提供该加法模块该右方进位值Ck-1,j;以及一乘法结果储存暂存器,储存该乘法结果值Rk,j,并提供该加法模块该右下方乘法结果值Rk-1,j+1。
2. 根据权利要求l所述的大整数乘法运算装置,其特征在于,该右方进位值Ck.i,j是该加法模块依据 一 右方积值Ak—,Bj所 产生的进位值,其中该右方积值A k.! B j是由 一 前次被乘数元素 Ak—t与该乘数元素Bj相乘所得到;该右下方乘法结果值Rk-i,jw是该加法;漠块依据 一右下方积 值Ak—iBjH所产生的乘法结果值,其中该右下方积值Ak—,Bj+1是由 一前次被乘数元素Aw与 一后续乘数元素B^相乘所产生。
3. 根据权利要求l所述的大整数乘法运算装置,其特征在 于,该进位值储存暂存器储存由多个该进位值Ck,j所组成的一进 位值阵列C, k为该进位值Ck,j于该进位值阵列C中的列号且l^kS(m+n), j为该进位值Ck,j于该进位值阵列C中的行号且l^j^n。
4. 根据权利要求l所述的大整数乘法运算装置,其特征在于,该乘法结果储存暂存器储存由多个该乘法结果值Rk, j所组 成的一乘法结果值阵列R,k为该乘法结果值Rk, j于该乘法结果值阵列R中的列号且Kk^ ( m+n), j为该乘法结果值Rk, j于该乘 法结果值阵列R中的行号且l^j^n。
5. 根据权利要求l所述的大整数乘法运算装置,其特征在 于,当lSk^(m+n),该加法模块将该右下方乘法结果值R^,j+, 及该右方进位值Ck.,,j相加,以得到该乘法结果值Rk, j与该进位 值Ck,j。
6. 根据权利要求3所述的大整数乘法运算装置,其特征在 于,该进位值储存暂存器包括两个次级进位值储存暂存器,分 别储存奇次列数与偶次列数的该进位值,其中该两个次级进位 值储存暂存器其中之一储存该进位值Ck,j而其中另 一同时提供 该加法纟莫块该右方进位4直C k., ,j 。
7. 根据权利要求4所述的大整数乘法运算装置,其特征在 于,该乘法结果储存暂存器包括两个次级乘法结果储存暂存器, 分别储存奇次列数与偶次列数的该乘法结果值,其中该两个次 级乘法结果储存暂存器其中之一储存该乘法结果值Rk, j而其中 另 一同时提供该加法模块该右下方乘法结果值Rw,jw。
8. 根据权利要求4所述的大整数乘法运算装置,其特征在 于,该乘法结果储存暂存器输出第一行,即,当」=1时的乘法结 果值Rk,,作为最终的乘法输出值Rk。
9. 根据权利要求l所述的大整数乘法运算装置,其特征在 于,该大整数乘法运算装置运用于绘图处理单元的一像素着色 模块。
10. —种进行大整数乘法运算的方法,其特征在于,包括 以一被乘数暂存器储存包括m个被乘数元素Ak的一被乘数数据,其中k为被乘数元素Ak的序号;以一乘数暂存器储存包括n个乘数元素Bj的一乘数数据,其 中j为4皮乘数元素Bj的序号;将该被乘数元素A k与该乘数元素B j相乘,而得到 一 积值 AkBj;将该积值AkBj与 一 右下方乘法结果值Rk_! ,j +!及 一 右方进位 值Ck.,,j相加,以得到 一 乘法结果值Rk,」与 一 进位值Ck,j;以一进位值储存暂存器储存该进位值Ck,j并提供该右方进 位值Cw,j;以及以 一乘法结果储存暂存器储存该乘法结果值Rk, j并提供该 右下方乘法结果值Rn i+1。
全文摘要
一种用以进行大整数乘法运算的装置和方法。大整数乘法运算装置包括被乘数暂存器,乘数暂存器,乘法模块,加法模块,进位值储存暂存器以及乘法结果储存暂存器。被乘数暂存器储存包括m个被乘数元素A<sub>k</sub>的被乘数数据,k为被乘数元素A<sub>k</sub>的序号。乘数暂存器储存包括n个乘数元素B<sub>j</sub>的乘数数据,j为乘数元素B<sub>j</sub>的序号。乘法模块将被乘数元素A<sub>k</sub>与乘数元素B<sub>j</sub>相乘,而得到积值A<sub>k</sub>B<sub>j</sub>。加法模块将积值A<sub>k</sub>B<sub>j</sub>与右下方乘法结果值R<sub>k-1,j+1</sub>及右方进位值C<sub>k-1,j</sub>相加,以得到乘法结果值R<sub>k,j</sub>与进位值C<sub>k,j</sub>。进位值储存暂存器储存进位值C<sub>k,j</sub>,并提供加法模块右方进位值C<sub>k-1,j</sub>。乘法结果储存暂存器储存乘法结果值R<sub>k,j</sub>,并提供加法模块右下方乘法结果值R<sub>k-1,j+1</sub>。
文档编号G06T1/20GK101271570SQ200810094688
公开日2008年9月24日 申请日期2008年5月7日 优先权日2008年5月7日
发明者张国峰 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1