支持浮点格式乘加的存算一体化dram计算部件设计

文档序号:189978 发布日期:2021-11-02 浏览:36次 >En<

阅读说明:本技术 支持浮点格式乘加的存算一体化dram计算部件设计 (Storage-computation integrated DRAM (dynamic random Access memory) computation unit design supporting floating-point format multiply-add ) 是由 邓全 王俊辉 郭维 王永文 倪晓强 孙彩霞 郑重 黄立波 隋兵才 雷国庆 郭辉 于 2021-07-22 设计创作,主要内容包括:本发明公开了一种支持浮点格式乘加的存算一体化DRAM计算部件设计,本发明基于经典算法,利用DRAM的存储特性将非规则控制转化查表操作。浮点加法沿用far-near path的算法,主要针对计算过程中对齐操作展开了优化,利用循环移位产生所有对齐可能需要的结果,然后遍历查找表搜索目标操作数。浮点乘法的运算步骤相对规则,本发明主要针对算法移植过程中相对耗时的部分进行了优化。本发明可将浮点操作转化为规则定点操作,面向存算一体化DRAM实现DRAM存储内支持浮点格式计算,弥补存内计算结构中计算功能不完整的缺口,克服了浮点数据运算过程中所引起的非规则操作对系统性能的破坏,浮点操作支持的数据格式多。(The invention discloses a memory-computation integrated DRAM (dynamic random access memory) computing part design supporting floating-point format multiply-add. The floating point addition method continues to use the far-near path algorithm, optimization is mainly developed aiming at alignment operation in the calculation process, all results possibly required by alignment are generated by using cyclic shift, and then a lookup table is traversed to search a target operand. The operation steps of the floating-point multiplication are relatively regular, and the method is mainly used for optimizing a relatively time-consuming part in the algorithm transplanting process. The method can convert floating point operation into regular fixed point operation, support floating point format calculation in DRAM storage facing to storage and calculation integrated DRAM, make up for the gap of incomplete calculation function in the in-memory calculation structure, overcome the damage of irregular operation to system performance caused in the floating point data operation process, and support a plurality of data formats for floating point operation.)

支持浮点格式乘加的存算一体化DRAM计算部件设计

技术领域

本发明设计属于微处理器设计

技术领域

的微处理器体系结构和执行部件设计技术,具体涉及一种支持浮点格式乘加的存算一体化DRAM计算部件设计。

背景技术

在后摩尔定律时代,晶体管工艺技术的发展速度放缓,晶体管工艺带来的性能红利逐渐消失。然而,新兴应用如人工智能和图计算等同时对微处理器的计算性能和存储性能提出了更高的需求,且此类应用的发展带来的性能需求大于目前传统微处理器性能提升的速度。人工智能中图像识别算法产生的计算和存储数量已超出传统处理器的承受能力。Google在2016年提出TPU,旨在弥补服务器对新兴应用算力的缺口。

具有领域加速能力的体系结构创新得到了工业界和学术界的广泛关注和积极探索。临近存储计算结构,或被称为存储中计算结构,可为同时计算密集和存储密集的应用提供客观的加速能力,被视为取代冯诺依曼体系结构的潜在解决方案之一。DRAM作为典型内存的存储介质,具有继承密度高,工艺成熟等优点。考虑到层次化存储结构和总线功耗的因素,基于DRAM的存算一体结构表现出可观的领域加速能力。目前,基于DRAM的存内计算结构利用电荷共享已在DRAM存储单元中构建了支持基础逻辑和定点运算等操作的部件设计。

然而处于成本等因素的考虑,基于DRAM的存算一体结构仍然保留着存储阵列的基本结构,有限的计算能力和对规则和高并行的程序流要求成为限制DRAM计算能力的两大挑战。目前,基于DRAM的存内计算计算结构缺少对浮点数据的有效支持,因为浮点数据操作引入的细粒度控制会导致DRAM硬件资源使用率的急剧降低。

发明内容

本发明要解决的技术问题:针对现有技术的上述问题,提供一种支持浮点格式乘加的存算一体化DRAM计算部件设计,本发明可将浮点操作转化为规则定点操作,面向存算一体化DRAM实现DRAM存储内支持浮点格式计算,弥补存内计算结构中计算功能不完整的缺口,克服了浮点数据运算过程中所引起的非规则操作对系统性能的破坏,浮点操作支持的数据格式多。

为了解决上述技术问题,本发明采用的技术方案为:

一种支持浮点格式乘加的存算一体化DRAM计算部件设计,包括浮点加法执行单元和浮点乘法执行单元,所述浮点加法执行单元包括:

浮点加法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;

浮点加法运算单元,用于获取源操作数OPA和OPB的阶码之间的阶码差;利用阶码差的符号位,在源操作数OPA和OPB中选择阶码较小的源操作数的尾数进行移位循环操作;将阶码差的差值,进行取绝对值的操作,并经过映射生成掩码阵列;利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数;将对齐后的尾数根据源操作数OPA和OPB两则的符号位异或操作的结果选择进行定点加法或减法操作,针对定点加法或减法操作的结果进行绝对值操作、并根据加法结果或减法操作的符号位决定是否进行取反和加1操作,对最终得到的尾数进行规格化操作,得到浮点加法最终结果的尾数;在源操作数OPA和OPB的阶码中选择较大的阶码,并根据规格化产生的左移调整阶码,形成得到浮点加法最终结果的阶码;在源操作数OPA和OPB的符号位中选择较大的符号位,作为浮点加法最终结果的符号位,最终得到由符号位、阶码以及尾数构成的浮点加法最终结果;

所述浮点乘法执行单元包括:

浮点乘法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;

浮点乘法运算单元,用于将源操作数OPA和OPB的符号位进行异或后作为浮点乘法最终结果的符号位;将源操作数OPA和OPB的阶码进行格式转化后进行定点加法操作后作为浮点乘法最终结果的阶码;将一个源操作数的尾数进行定点乘法循环并将结果放入中间结果查找表中,将另一个源操作数的尾数拆分为多组指定位宽n的索引,根据索引查找中间结果查找表得到索引后的结果,将索引后的结果作为部分和再进行累加,最终获得浮点乘法最终结果的尾数部分。

一种面向存算一体化DRAM的浮点计算方法,包括执行浮点加法的步骤:

1)对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;

2)获取源操作数OPA和OPB的阶码之间的阶码差;利用阶码差的符号位,在源操作数OPA和OPB中选择阶码较小的源操作数的尾数进行移位循环操作;将阶码差的差值,进行取绝对值的操作,并经过映射生成掩码阵列;利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数;将对齐后的尾数根据源操作数OPA和OPB两则的符号位异或操作的结果选择进行定点加法或减法操作,针对定点加法或减法操作的结果进行绝对值操作、并根据加法结果或减法操作的符号位决定是否进行取反和加1操作,对最终得到的尾数进行规格化操作,得到浮点加法最终结果的尾数;在源操作数OPA和OPB的阶码中选择较大的阶码,并根据规格化产生的左移调整阶码,形成得到浮点加法最终结果的阶码;在源操作数OPA和OPB的符号位中选择较大的符号位,作为浮点加法最终结果的符号位,最终得到由符号位、阶码以及尾数构成的浮点加法最终结果。

可选地,步骤1)中获取源操作数OPA和OPB的阶码之间的阶码差包括:对源操作数OPA和OPB的阶码两者首先进行符号填充,然后再进行定点减法,获得源操作数OPA和OPB的阶码之间的有符号编码的阶码差的差值。

可选地,步骤2)中经过映射生成的掩码阵列的元素宽度和阵列项数与操作数的尾数宽度一致,且掩码阵列的生成过程使用输入操作数作为项数索引,将选中的项全部置1,其他项全部置零;所述利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数是指利用掩码阵列置1选中的项针对移位循环操作的输出结果选择对齐后的尾数。

可选地,还包括执行浮点乘法的步骤:

S1)对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;

S2)将源操作数OPA和OPB的符号位进行异或后作为浮点乘法最终结果的符号位;将源操作数OPA和OPB的阶码进行格式转化后进行定点加法操作后作为浮点乘法最终结果的阶码;将一个源操作数的尾数进行定点乘法循环并将结果放入中间结果查找表中,将另一个源操作数的尾数拆分为多组指定位宽n的索引,根据索引查找中间结果查找表得到索引后的结果,将索引后的结果作为部分和再进行累加,最终获得浮点乘法最终结果的尾数部分。

可选地,步骤S2)中将一个源操作数的尾数进行定点乘法循环是指:将该源操作数的尾数与指定位宽n的临时操作数进行定点乘法,所述临时操作数为遍历指定位宽n位二进制的空间的一组数值以获得该源操作数与任意指定位宽n位操作数定点乘法的结果,将定点乘法结果放入对应TMP操作数作为行地址索引的中间结果查找表中,中间结果查找表利用原有的DRAM存储阵列,且中间结果查找表的索引为DRAM存储阵列的行地址。

可选地,所述指定位宽n为4。

此外,本发明还提供一种面向存算一体化DRAM的浮点计算部件,所述浮点计算组件包括浮点加法执行单元,所述浮点加法执行单元包括:

浮点加法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;

浮点加法运算单元,用于获取源操作数OPA和OPB的阶码之间的阶码差;利用阶码差的符号位,在源操作数OPA和OPB中选择阶码较小的源操作数的尾数进行移位循环操作;将阶码差的差值,进行取绝对值的操作,并经过映射生成掩码阵列;利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数;将对齐后的尾数根据源操作数OPA和OPB两则的符号位异或操作的结果选择进行定点加法或减法操作,针对定点加法或减法操作的结果进行绝对值操作、并根据加法结果或减法操作的符号位决定是否进行取反和加1操作,对最终得到的尾数进行规格化操作,得到浮点加法最终结果的尾数;在源操作数OPA和OPB的阶码中选择较大的阶码,并根据规格化产生的左移调整阶码,形成得到浮点加法最终结果的阶码;在源操作数OPA和OPB的符号位中选择较大的符号位,作为浮点加法最终结果的符号位,最终得到由符号位、阶码以及尾数构成的浮点加法最终结果。

可选地,所述浮点计算组件还包括浮点乘法执行单元,所述浮点乘法执行单元包括:

浮点乘法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;

浮点乘法运算单元,用于将源操作数OPA和OPB的符号位进行异或后作为浮点乘法最终结果的符号位;将源操作数OPA和OPB的阶码进行格式转化后进行定点加法操作后作为浮点乘法最终结果的阶码;将一个源操作数的尾数进行定点乘法循环并将结果放入中间结果查找表中,将另一个源操作数的尾数拆分为多组指定位宽n的索引,根据索引查找中间结果查找表得到索引后的结果,将索引后的结果作为部分和再进行累加,最终获得浮点乘法最终结果的尾数部分。

此外,本发明还提供一种存算一体化DRAM,包括相互连接的DRAM存储阵列和计算部件,所述计算部件为所述的面向存算一体化DRAM的浮点计算部件。

此外,本发明还提供一种计算机设备,包括相互连接的微处理器和内存,所述内存为所述的存算一体化DRAM。

和现有技术相比,本发明具有下述优点:

1、本发明可将浮点操作转化为规则定点操作,可面向存算一体化DRAM实现DRAM存储内支持浮点格式计算,弥补存内计算结构中计算功能不完整的缺口,克服了浮点数据运算过程中所引起的非规则操作对系统性能的破坏。从DRAM页的角度来看,所提计算的计算效率要高于传统算法和单纯转换为定点的方式。考虑到DRAM中重复操作的时序优化空间,浮点操作表现出高带宽和高能效的特点。

2、本发明可将浮点操作转化为串行的计算方式,针对计算时序占比较大的部分进行了优化,具有计算效率高的优点。

3、本发明方法可支持各类浮点数据格式,包括fp64,fp32和fp16等,浮点操作支持的数据格式多,具有浮点数据格式兼容性好的优点。

附图说明

图1为本发明实施例执行浮点加法的流程示意图。

图2为本发明实施例执行浮点乘法的流程示意图。

具体实施方式

本发明面向存算一体化DRAM的浮点计算方法基于现有存算一体化的DRAM进行的进一步扩展工作,现有存算一体化的DRAM的基础工作已经给出了基本的逻辑操作、移位操作和定点乘加的设计方案。发明面向存算一体化DRAM的浮点计算方法着重描述浮点计算在存算一体化的DRAM中浮点计算方法的工作步骤。

如图1所示,本实施例面向存算一体化DRAM的浮点计算方法包括执行浮点加法的步骤:

1)对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位(Sign)、阶码(Exponent)和尾数(Mantissa);

为规范用语,本实施例使用OPA指代浮点操作的第一个源操作数,OPB指代浮点操作的第二个源操作数,其中OPA和OPB仅用于区别两个源操作数,而非对两个源操作数的限定。

2)获取源操作数OPA和OPB的阶码之间的阶码差;利用阶码差的符号位,在源操作数OPA和OPB中选择阶码较小的源操作数的尾数进行移位循环操作(若阶码相同,则默认输出OPA或OPB的尾数);将阶码差的差值,进行取绝对值的操作,并经过映射生成掩码阵列;利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数;将对齐后的尾数根据源操作数OPA和OPB两则的符号位异或操作的结果选择进行定点加法或减法操作,针对定点加法或减法操作的结果进行绝对值操作、并根据加法结果或减法操作的符号位决定是否进行取反和加1操作(为弥补浮点尾数加法操作或减法操作可能导致的尾数符号变化),对最终得到的尾数进行规格化操作(防止阶码差的绝对值小于1时可能引起的非规格化结果),得到浮点加法最终结果的尾数;在源操作数OPA和OPB的阶码中选择较大的阶码,并根据规格化产生的左移调整阶码,形成得到浮点加法最终结果的阶码;在源操作数OPA和OPB的符号位中选择较大的符号位,作为浮点加法最终结果的符号位,最终得到由符号位、阶码以及尾数构成的浮点加法最终结果。

本实施例中,步骤1)中获取源操作数OPA和OPB的阶码之间的阶码差包括:对源操作数OPA和OPB的阶码两者首先进行符号填充,然后再进行定点减法,获得源操作数OPA和OPB的阶码之间的有符号编码的阶码差的差值。

本实施例中,步骤2)中经过映射生成的掩码阵列的元素宽度和阵列项数与操作数的尾数宽度一致,且掩码阵列的生成过程使用输入操作数作为项数索引,将选中的项全部置1,其他项全部置零;所述利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数是指利用掩码阵列置1选中的项针对移位循环操作的输出结果选择对齐后的尾数。

如图2所示,本实施例的浮点计算方法还包括执行浮点乘法的步骤:

S1)对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;

S2)将源操作数OPA和OPB的符号位进行异或后作为浮点乘法最终结果的符号位;将源操作数OPA和OPB的阶码进行格式转化后进行定点加法操作后作为浮点乘法最终结果的阶码;将一个源操作数的尾数进行定点乘法循环并将结果放入中间结果查找表中,将另一个源操作数的尾数拆分为多组指定位宽n的索引,根据索引查找中间结果查找表得到索引后的结果,将索引后的结果作为部分和再进行累加,最终获得浮点乘法最终结果的尾数部分。本实施例的浮点计算方法通过利用局部查找表的方式加速了对应运算,解决了浮点计算中非规则控制流和DRAM存储行操作的矛盾,利用DRAM的存储特性形成中间过程的查找表,可实现对浮点乘法操作进行加速。

本实施例中,步骤S2)中将一个源操作数的尾数进行定点乘法循环是指:将该源操作数的尾数与指定位宽n的临时操作数进行定点乘法,所述临时操作数为遍历指定位宽n位二进制的空间的一组数值以获得该源操作数与任意指定位宽n位操作数定点乘法的结果,将定点乘法结果放入对应TMP操作数作为行地址索引的中间结果查找表中,中间结果查找表利用原有的DRAM存储阵列,且中间结果查找表的索引为DRAM存储阵列的行地址。

需要说明的是,指定位宽n可根据需要进行设置,例如本实施例中指定位宽n为4。

浮点运算转化为定点运算最简单直接的方法是在存储中将浮点长度的数据转化为定点长度,以fp64数据为例,其阶码长度为11位,其转化后的定点数范围2Kb,基于CMOS的浮点部件根本无法承受如此长的定点数所引起的开销。对于DRAM而言,其页大小一般在4KB左右,可以支持上述简单的方法,但是浮点操作单纯转化为定点数的方式计算效率过低。考虑CMOS浮点运算部件的算法控制过于复杂,数据非规则运算不适于移植到DRAM中。本实施例面向存算一体化DRAM的浮点计算方法基于经典算法,利用DRAM的存储特性将非规则控制转化查表操作。浮点加法沿用far-near path的算法,主要针对计算过程中对齐操作展开了优化,利用循环移位产生所有对齐可能需要的结果,然后遍历查找表搜索目标操作数。改进后的设计中单个数据的计算效率将有所下降,但是考虑到DRAM页模式的工作方式,同行中并行计算的数据的操作将完全一致,上述开销将被并行操作均摊。浮点乘法的运算步骤相对规则,本发明主要针对算法移植过程中相对耗时的部分进行了优化。浮点乘法中尾数将进行定点乘法操作,以fp64为例,使用加法-移位的组合进行操作将需要52个循环。本发明将该定点乘法操作进行了粒度转化,首先遍历其中一个源操作与较小长度的数据的乘法结果,然后将另一个操作数按前面的数据片段长度打散,通过查表得到部分和,最后进行累加。以fp64为例,其尾数为52位,假设数据片段大小为4bit,生成查找表的遍历乘法操作数量为16次,部分和累计的操作数量为13次,共计29次定点加法操作,相遇比原始52次定点加法操作,降低了44%的操作数量。本实施例面向存算一体化DRAM的浮点计算方法填补了基于DRAM的存算一体结构中无法支持浮点操作数的空白,为常见的浮点格式如FP64,FP32等提供有效的支持,且所有涉及到的操作均可在DRAM存储阵列中完成,避免了对商用DRAM存储版图大规模修改而引起的成本抬升。本实施例面向存算一体化DRAM的浮点计算方法克服了商用DRAM存储结构page模式和非规则浮点运算的矛盾,为存算一体化DRAM结构走向应用提供了重要支撑。商用DRAM存储阵列没有列译码器,任何操作的粒度均为page,现有DRAM存储产品的page均在4Gb以上。非规则计算将造成DRAM阵列中激活page中的有效计算元素仅为64位或32位,系统的计算效率和能耗效率非常低。本实施例面向存算一体化DRAM的浮点计算方法利用遍历计算的策略将非规则运算转化为规则运算,提升了DRAM存储阵列的硬件资源使用效率。

此外,本发明还提供一种面向存算一体化DRAM的浮点计算部件,所述浮点计算组件包括浮点加法执行单元,所述浮点加法执行单元包括:

浮点加法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;

浮点加法运算单元,用于获取源操作数OPA和OPB的阶码之间的阶码差;利用阶码差的符号位,在源操作数OPA和OPB中选择阶码较小的源操作数的尾数进行移位循环操作;将阶码差的差值,进行取绝对值的操作,并经过映射生成掩码阵列;利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数;将对齐后的尾数根据源操作数OPA和OPB两则的符号位异或操作的结果选择进行定点加法或减法操作,针对定点加法或减法操作的结果进行绝对值操作、并根据加法结果或减法操作的符号位决定是否进行取反和加1操作,对最终得到的尾数进行规格化操作,得到浮点加法最终结果的尾数;在源操作数OPA和OPB的阶码中选择较大的阶码,并根据规格化产生的左移调整阶码,形成得到浮点加法最终结果的阶码;在源操作数OPA和OPB的符号位中选择较大的符号位,作为浮点加法最终结果的符号位,最终得到由符号位、阶码以及尾数构成的浮点加法最终结果。

本实施例中,所述浮点计算组件还包括浮点乘法执行单元,所述浮点乘法执行单元包括:

浮点乘法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;

浮点乘法运算单元,用于将源操作数OPA和OPB的符号位进行异或后作为浮点乘法最终结果的符号位;将源操作数OPA和OPB的阶码进行格式转化后进行定点加法操作后作为浮点乘法最终结果的阶码;将一个源操作数的尾数进行定点乘法循环并将结果放入中间结果查找表中,将另一个源操作数的尾数拆分为多组指定位宽n的索引,根据索引查找中间结果查找表得到索引后的结果,将索引后的结果作为部分和再进行累加,最终获得浮点乘法最终结果的尾数部分。

此外,本发明还提供一种存算一体化DRAM,包括相互连接的DRAM存储阵列和计算部件,所述计算部件为所述的面向存算一体化DRAM的浮点计算部件。

此外,本发明还提供一种计算机设备,包括相互连接的微处理器和内存,所述内存为所述的存算一体化DRAM。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

13页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:基于3D Xpoint内存的数据处理方法、设备及可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!