能够执行缩放、圆整、取指数、圆整、取尾数、化简、范围和分类指令的乘加函数单元的制作方法

上传人:ting****789 文档编号:310042095 上传时间:2022-06-14 格式:DOCX 页数:5 大小:24.92KB
返回 下载 相关 举报
能够执行缩放、圆整、取指数、圆整、取尾数、化简、范围和分类指令的乘加函数单元的制作方法_第1页
第1页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《能够执行缩放、圆整、取指数、圆整、取尾数、化简、范围和分类指令的乘加函数单元的制作方法》由会员分享,可在线阅读,更多相关《能够执行缩放、圆整、取指数、圆整、取尾数、化简、范围和分类指令的乘加函数单元的制作方法(5页珍藏版)》请在金锄头文库上搜索。

1、能够执行缩放、圆整、取指数、圆整、取尾数、化简、范围和分类指令的乘加函数单元的制作方法专利名称:能够执行缩放、圆整、取指数、圆整、取尾数、化简、范围和分类指令的乘加函数单元的制作方法技术领域:本发明的领域总地涉及电子计算,更具体地涉及能执行函数的近似的函数单元。背景图1示出一般的处理核100,该处理核100被认为描述许多不同类型的处理核架构,例如复杂指令集(CISC)、精简指令集(RISC)和超长指令字(VLIW)。图1的一般处理核100包括:1)(例如从高速缓存和/或存储器)拾取指令的拾取单元103 ;2)对指令进行解码的解码单元104 ;3)确定向执行单元106发布指令的时间和/或顺序的调

2、度单元105 (注意该调度单元是选用性的);4)具有执行单元的执行级106,该执行单元执行指令(典型指令执行单元包括分支执行单元单元、整数运算执行单元(例如ALU)、浮点运算执行单元(例如FPU)以及存储器访问执行单元);以及5)退隐单元107,它表示指令的成功完成。注意,处理核100可以采用或不采用微代码108。在微代码处理器的情形下,微操作码通常被存储在于其上构筑处理器的半导体芯片内的非易失性机器可读介质(例如只读存储器(ROM)中,并使处理器中的执行单元执行由指令调用的所需函数。附图在附图各图中通过示例而不是限制说明了本发明,其中相同标记指示相同元件,且其中:图1示出处理器的实施例;图2

3、示出乘加函数单元的实施例;图3示出可在图2的函数单元上运行的GETEXP (取指数)指令的流程图;图4示出可在图2的函数单元上运行的SCALE(缩放)指令的流程图;图5示出可在图2的函数单元上运行的ROUND(圆整)指令的流程图;图6示出可在图2的函数单元上运行的GETMANT (取尾数)指令的流程图;图7示出可在图2的函数单元上运行的REDUCE(化简)指令的流程图;图8示出可在图2的函数单元上运行的RANGE(范围)指令的流程图;图9示出一示例性计算系统。详细描述图2示出一执行单元(也称函数单元),它能执行本文描述的许多不同指令。MADD 指令图2架构能执行的基本指令是乘加(MADD)指令

4、,该MADD指令将被乘数和乘数(B)相乘并将积(AB)加至加数(C)。也就是说,MADD指令执行指令R= (AB)+C (在一实施例中,MADD指令可用来执行下列计算中的任何一个:AB+C,AB-C, -AB+C, -AB-C)。如本领域内技术人员已知的,在浮点形式中,一个值可用尾数项和指数项来表达。因此,例如被乘数A被表达为(A.mant,A.exp);乘数B被表达为(B.mant, B.exp);而加数C被表达为(C.mant ;C.exp)。对于浮点运算来说,图2的架构包括指数计算逻辑201和尾数计算逻辑202。根据浮点MADD指令的基本运算,指数计算逻辑201确定浮点结果的指数项(R.

5、exp)而尾数计算逻辑202确定浮点结果的尾数项(R.mant)。对于浮点MADD指令,指数计算逻辑201最初将R.exp项确定为以下各项的最大值:i)C.exp ;ii) (A.exp+B.exp).尾数逻辑202包括指数差逻辑203,该指数差逻辑203包括左移位逻辑204和右移位逻辑205。尾数逻辑还包括乘法器206。乘法动作可被视为数个部分乘积之和。图2还示出一特定乘法器设计方法,其中选择器逻辑207产生A.mant项和B.mant项的乘法的部分乘积(注意B.mant项也是布斯(Booth)编码的)。华莱士(Wallace)树逻辑208有效地执行由选择器逻辑207产生的部分积的求和。值得

6、注意地,加数尾数项(Cmant)被注入到华莱士树208以使华莱士树208也执行AB+C加法。然而,在注入前,调整Cmant项以使其在部分积求和内被正确地对准。这里,由于由乘法器执行的乘法自然地产生阶次A.exp+B.exp的尾数项,因此指数差逻辑203将Cmant项移位C.exp和(A.exp+B.exp)之间的差。具体地说,如果C.exp大于(A.exp+B.exp),贝丨JCmant项可由左移位逻辑204向左移位C.exp-(A.exp+B.exp)个二进制小数点(也就是说,Cmant项的二进制点将向右移位,其效果是使其整数项增大)。同样,如果C.exp小于(A.exp+B.exp),则C

7、mant项可由右移位逻辑205向右移位(A.exp+B.exp) _C.exp个十进制小数点(也就是说,Cmant项的二进制小数点将向左移位,其效果是使其整数项减小)。在这种情形下,Cmant的低阶小数项通过逻辑213被合并入粘滞位,以供下文描述的指令中的圆整器(rounder) 217使用。由华莱士树逻辑207执行的求和既产生求和项又产生进位项,它们由加法器209相加以产生AB+C计算的结果。这里,如果AB+C计算的结果包含前导0 (或如果结果为负则包括前导I),前导改变预测器210将使结果(通过左移位器211)向左移位前导0/1的数目以去除这些前导0/1。相同的信息被提供给指数计算逻辑20

8、1以相应地调整R.exp。存在两个移位器,即用于去除前导0/1的左移位204(在这种情形下用shift_count更新R.exp)和右移位212(当C.exp大于A+B.exp时这是需要的,在这种情形下华莱士树结果被向右移位至与C.exp-(A+B.exp)相等的点)。Mux(多路复用器)213选择利用两移位器211、212中的任何一个以得到正确的结果。在一个实施例中,如果C.mant项被向左移位,则加法器209可产生进位项214。进位项214启用一增量器215,该增量器215有效地将进位项加至左移位的C.mant项(即如果加法器209产生一进位项,则增量器215的输出流过2: I乘法器216

9、)。在一个实施例中,加法器209是108位而增量器215是53位的增量器。下面将更详细地描述可在图2的函数单元上执行的若干附加指令。对于这些指令中的任何一个连同前述FMADD指令,在一个实施例中,函数单元被设计成在标量或打包数据(SMD)类型和以单精度和双精度形式的操作数的任何组合上进行操作。操作数类型和精度的规范组合在指令中被规定。此外,图2的函数单元可被实例化许多次以实现向量函数单元。这里,可使掩码层介于向量函数单元输出和向量函数单元内的每个实例化函数单元之间。向量操作可被视为不同于SIMD操作,因为输入操作数的维度对于向量机是可变的但对于SIMD机是固定的。前述掩码层提供改变向量机内的元

10、素数目的能力。具体地说,来自各例示函数单元之一的每个输出元素可与其本身一起被写至相应的写逻辑电路。在一个实施例中,写逻辑电路可对向量函数单元的任何输出元素位置作写入。通过使写逻辑电路仅针对与有效向量操作数元素对应的那些元素,可处理各种长度的向量。这具有本质上仅允许与有效向量元素对应的例示函数单元的那些操作。此外,可设计掩码层以使由各实例化函数单元检测到的任何算法异常仅对被启用的实例化函数单元的有效输出被递交,同时抑制来自未被激活的函数单元的异常。SCALE 指今SCALE指令的流程图示出于图3中。SCALE指令通过floor:Y(向下取整:)缩放第一浮点项X (floor:Y是浮点项Y的最小整

11、数表达)。VSCALE (V缩放)指令实际上可被视为将X的二进制小数点移动一数量fioor:Y的指令。在数学项中,这可被表示为R= (X.mant E X.exp) *2A (floor:Y.mant E Y.exp) = X.mant E (X.exp+ (floor:Y.mant E Y.exp)。因此,结果的尾数项是R.mant = X.mant,而结果的指数项是R.exp =X.exp+(fooor:Y.mant E Y.exp)。关于 R.exp 的计算,注意 X.exp 项本身是整数,而 Y.mantE Y.exp可简单地通过使Y.mant的二进制小数点移位直到不再有小数位为止而被

12、转换成整数。也就是说,例如,如果Y.mant = 1.01011且Y.exp = 5,那么Y = 101011。这本质上对应于在移位器中将Y.mant向左移位Y.exp。这里,floor操作本质上对应于小数位的丢弃。因此,R.exp项可通过下面步骤计算:i)将Y.mant移位等于Y.exp的量,以及ii)将经移位的值加至I exp 这可在图2的指数差逻辑203中通过用处理MADD指令的加数项(Cmant和C.exp)的数据路径来处理Y项并同时强制使A.exp和B.exp等于O而实现。在这种情形下,C.exp- (A.exp+B.exp) = Y.exp-(0) = Y.exp,这将使 Y.ma

13、nt 通过左移位器 204 向左移位Y.exp。移位器204的输出随后被提供给指数计算逻辑201,该指数计算逻辑201将移位器204的输出加至X.exp项。X.exp项可强加至指数计算逻辑201的A.exp、B.exp、C.exp输入中的任何一个。求和作为R.exp被提供。R.mant简单地作为输入X.mant项被提供。GETEXP 指今取指数指令的流程图示出于图4中。GETEXP指令接受输入项(Z.mant, Z.exp),从Z.exp的值减去偏移并以浮点形式提供答案。本质上,指令以浮点形式提供输入Z的真实指数。这里,如本领域内技术人员已知的那样,浮点指数值一般被偏移以使涉及负指数的计算更为

14、容易。例如,在单精度情形下,对指数项预留8位,这给出254个不同值的范围(给予两个其它值特殊的意义)。这里,对于-127至+127的实际指数范围,通过硬件将+127的偏移加至这样的实际指数值,以使在硬件中针对指数物理计算的数值范围从O延伸至254。因此,对于单精度,GETEXP指令从Z.exp减去值127,并以浮点形式提供答案。在双精度情形下,从Z.exp减去值1023 (注意双精度在.exp项中具有11位的双精度)。在单精度情形下,通过加上值-127来从另一个项减去值127。在2的补余整型形式中,-127可表示为10000001,它可被重对准为0.10000001E8 (即,如果值10000

15、001E0向右移位八个十进制位置)。如此,根据一种方法,对于单精度,值0.10000001被强制作为被乘数(A.mant)而值I被强制作为乘数(B.mant),来自由乘法器执行的AB项相乘的结果是0.10000001,它对应于向右移位8个位置的-127。Z.exp项沿加数(C.mant)数据路径被接受并且也通过右移位器205向右移位8个位置以使其在被注入到华莱士树208之前对准于乘法器输出。来自加法器209的结果对应于Z.exp项减去偏移127并向右移位8个位置。前导改变预测器210和左移位器211将去除任何前导0/1并将结果作为R.mant提供。R.exp同样就单精度通过指数计算逻辑计算出,

16、即R.exp = 8-(来自LCA210的前导0/1计数)+127+1。对于双精度,适用前述相同的操作,除了偏移为1023并且值被移位11位而不是8位。如此,R.exp = 11_(来自LCA210的前导O计数)+1023+1。在输入项(Z.mant, Z.exp)是非正规(即具有O的偏移指数项和0.XXXXX形式的非零尾数)的情形下,Z.mant项在LCA210的控制下由左移位器211向左移位直到发现第一个前导I为止。结果作为R.mant提供。左移位计数对应于已知为负的指数的绝对值。因此,R.exp通过指数计算逻辑被表示为R.exp = _|来自LCA210的前导零计数I。ROUND 指今ROUND指令的流程图示出于图5中。ROUND指令将输入项(S.mant ;S.exp)的尾数S.mant圆整至由输入项Q规定的二进制位数。例如如果S = 10111.11001E0且Q = 2,指令将提供结果R= 10111.1lEO (即R.mant = 10111.11 ;R.exp = O)。为使这种操作有效,S.mant项作为加数尾数输入(C.mant

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号