微处理器及其方法技术

技术编号:14393145 阅读:133 留言:0更新日期:2017-01-10 21:40
一种微处理器及其方法,该微处理器将±A*B±C形式的融合乘积‑累加运算分路为可由一乘法器与一加法器执行的第一与第二乘积‑累加子运算;其中的第一子运算至少将A与B相乘,且条件地将C累加至部分A与B的乘积、以产生一未舍入非冗余总和;此未舍入非冗余总和于一非限定时间内暂存于由乘法器与加法器共享的存储器中,以使乘法器与加法器得以执行与该乘积‑累加运算无关的其他运算;如果C值尚未加入计算,则第二子运算条件地将C累加至未舍入非冗余总和中,并借此产生一最终舍入结果。

【技术实现步骤摘要】
本申请是申请日为2015年06月24日、申请号为201580003388.3(国际申请号PCT/US2015/037508)、专利技术名称为“使用第一和第二子运算的分路融合乘积-累加运算”的申请的分案申请。相关申请本申请主张申请日为2014年7月2日的美国专利第62/020,246号临时申请“Non-AtomicSplit-PathFusedMultiply-AccumulatewithRoundingcache”与申请日为2015年6月10日的美国专利第62/173,808号临时申请“Non-AtomicTemporally-SplitFusedMultiply-AccumulateApparatusandOperationUsingaCalculationControlIndicatorCacheandProvidingaSplit-PathHeuristicforPerformingaFusedFMAOperationandGeneratingaStandardFormatIntermediateResult”的优先权。该些优先权案的全文并入本申请以供参考。本申请还关联于下列与本申请同时申请的申请:标题为“TemporallySplitFusedMultiply-AccumulateOperation”的美国第14/748,870号申请;标题为“CalculationControlIndicatorCache”的美国第14/748,924号申请;标题为“CalculationControlIndicatorCache”的美国第14/748,956号申请;标题为“StandardFormatIntermediateResult”的美国第14/749,002号申请;标题为“Split-PathHeuristicforPerformingaFusedFMAOperation”的美国第14/749,050号申请;标题为“SubdivisionofaFusedCompoundArithmeticOperation”的美国第14/749,088号申请;与标题为“Non-AtomicSplit-PathFusedMultiply-Accumulate”的美国第14/748,817号申请。这些申请的全文并入本申请以供参考。
本专利技术有关于一种执行算术运算的微处理器设计,尤其是融合浮点乘积-累加(FMA)运算的微处理器设计。
技术介绍
在现代计算机设计中,从大约1990年起,融合浮点乘积-累加(floating-pointmultiply-accumulate,FMA)运算就已经成为一个受到商业瞩目与学术关注的领域。融合FMA运算是一种算术运算,其形式为±A*B±C,其中,A、B与C是浮点输入运算元(分别是一个被乘数(multiplicand)、一个乘数(multiplier)、与一个累加数(accumulator)),并且在C累加至A与B的乘积前不存在舍入(rounding)运算。±A*B±C可包含,但不限于,下列例子:(a)A*B+C;(b)A*B–C;(c)–A*B+C;(d)–A*B–C;(e)A*B(即C设为零);与(f)A+C(即B设为1.0)。在大约1990年,此算术运算即以一原子(atomic)或不可分割(inseparable)运算的形式商业实现于IBM的精简指令集(RISC)系统/6000。而后续设计进一步最佳化浮点乘积累加运算。在其2004年的文献“Floating-PointMultiply-Add-FusedwithReducedLatency”中,TomasLang与JavierD.Bruguera(“Langetal.”)提出与最佳化FMA设计有关的许多重要课题。这些课题包括,指数差值与累加器移位/对准量的预计算,累加器与相乘阵列的平行对准,必要时使用2’补数累加器(2’scomplementaccumulator),和向量与进位向量的条件反转,在最终相加/舍入模组前对于和向量与进位向量的标准化处理,LZA/LOA与标准化移位的重迭运算,进位位、舍入位、保护位与粘(sticky)位的分别运算,以及在合一的相加/舍入模组中具有1m宽度的双总和加法器的使用(其中,m是其中一个运算元的尾数(mantissa)宽度)。在其2005年的文献“Floating-PointFusedMultiply-Add:ReducedLatencyforFloating-PointAddition”中,TomasLang与JavierD.Bruguera(“Langetal.”)提出利用分离数据路径(或双数据路径)把对准方向从标准化的情况移开,其中,“近(close)”的数据路径是用以从{2,1,0,-1本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201610722859.html" title="微处理器及其方法原文来自X技术">微处理器及其方法</a>

【技术保护点】
一种微处理器中的方法,用以执行±A*B±C形式的融合乘积‑累加运算,其中A、B与C为输入运算元,且在该C累加至该A与该B的乘积前并不进行舍入运算,该方法包括:将该融合乘积‑累加运算分路为由一或多个指令执行单元执行的一第一乘积‑累加子运算与一第二乘积‑累加子运算;在该第一乘积‑累加子运算中,选择将该A与该B的部分乘积‑累加至该C、或是仅累加该A与该B的部分乘积,并产生未舍入非冗余总和;在该第二乘积‑累加子运算中,如果该第一乘积‑累加子运算在产生该未舍入非冗余总和时未乘积累加该C,则该C以该未舍入非冗余总和的方式乘积累加;以及在该第二乘积‑累加子运算中,产生该融合乘积‑累加运算的一最终舍入结果。

【技术特征摘要】
2014.07.02 US 62/020,246;2015.06.10 US 62/173,8081.一种微处理器中的方法,用以执行±A*B±C形式的融合乘积-累加运算,其中A、B与C为输入运算元,且在该C累加至该A与该B的乘积前并不进行舍入运算,该方法包括:将该融合乘积-累加运算分路为由一或多个指令执行单元执行的一第一乘积-累加子运算与一第二乘积-累加子运算;在该第一乘积-累加子运算中,选择将该A与该B的部分乘积-累加至该C、或是仅累加该A与该B的部分乘积,并产生未舍入非冗余总和;在该第二乘积-累加子运算中,如果该第一乘积-累加子运算在产生该未舍入非冗余总和时未乘积累加该C,则该C以该未舍入非冗余总和的方式乘积累加;以及在该第二乘积-累加子运算中,产生该融合乘积-累加运算的一最终舍入结果。2.根据权利要求1所述的方法,其中,该未舍入非冗余总和立即提供至该第二乘积-累加子运算,以使该第二乘积-累加子运算能以最小的延误开始运算。3.根据权利要求1所述的方法,其中,该融合乘积-累加运算至少由二指令执行单元所执行,该方法还包括:在该第一与第二乘积-累加子运算间,将该未舍入非冗余总和自一第一指令执行单元传送至一第二指令执行单元。4.根据权利要求1所述的方法,还包括:在该第一与第二乘积-累加子运算间,将该未舍入非冗余总和储存至存储器中,以使一或多个指令执行单元执行其他与该乘积-累加运算无关的运算。5.根据权利要求4所述的方法,其中,该存储器设置于该一或多个指令执行单元之外,并且包含用以储存该未舍入非冗余总和的一结果储存空间、以及一与该结果储存空间不同且用以储存多个运算控制指标的运算控制指标储存空间,该多个运算控制指标指明该第二乘积-累加子运算中的接续运算该如何进行。6.根据权利要求5所述的方法,其中,该结果储存空间耦接至一结果总线,该结果总线为该一或多个指令执行单元所共用。7.根据权利要求5所述的方法,其中,该结果储存空间为一重排缓冲器。8.根据权利要求6所述的方法,其中,该运算控制指标储存空间为一快取,该快取并未耦接至该结果总线、且仅由被设定为用以执行该第一或第二乘积-累加子运算的该执行单元所共享。9.根据权利要求5所述的方法,还包括将该多个运算控制指标储存至存储器的步骤,其中,该运算控制指标指明该第二乘积-累加子运算中的接续运算该如何进行。10.根据权利要求5所述的方法,还包括将该多个运算控制指标自一第一指令执行单元传送至一第二指令执行单元的步骤;其中,该运算控制指标指明该第二乘积-累加子运算中的接续运算该如何进行。11.根据权利要求10所述的方法,其中,该运算控制指标包括一指标,用以指明具有该C的一累加运算是否发生于该第一乘积-累加子运算中。12.根据权利要求10所述的方法,其中,该运算控制指标包括用以自该未舍入非冗余总和产生一算术上正确舍入结果的指标。13.根据权利要求1所述的方法,还包括在该第一与第二乘积-累加子运算间,利用该一或多个指令执行单元执行其他运算。14.根据权利要求1所述的方法,其中,该一或多个指令执行单元包括一设定为执行该第一乘积-累加子运算的乘法器、以及一设定为执行该第二乘积-累加子运算的加法器。15.根据权利要求1所述的方法,其中,该一或多个指令执行单元包括一乘积-累加单元,该乘积-累加单元对应一第一乘积-累加指令而执行该第一乘积-累加子运算,且对应一第二乘积-累加指令而执行该第二乘积-累加子运算。16.一种用于执行一具有±A*B±C的形式的融合乘积-累加运算的微处理器,其中,A、B与C为输入运算元,且在该C累加至该A与该B的乘积前并不进行舍入运算,该微处理器包括:一或多个指令执行单元,设定为执行一融合乘积-累加运算的一第一乘积-累加子运算与一第二乘积-累加子运算;其中,在该第一乘积-累加子运算中,选择将该A与该B的部分乘积-累加至该C、或是仅累加该A与该B的部分乘积,再由此产生一未舍入非冗余总和;其中,在该第二乘积-累加子运算中,如果该第一乘积-累加子运算在产生该未舍入非冗余总和时未乘积累加该C,则该C条件式地乘积累加至该未舍入非冗余总和;以及其中,在该第二乘积-累加子运算中,从该C条件式地乘积累加的该未舍入非冗余总和产生该融合乘积-累加运算的一...

【专利技术属性】
技术研发人员:汤玛士·艾欧玛
申请(专利权)人:上海兆芯集成电路有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1