CN113590195A - 支持浮点格式乘加的存算一体化dram计算部件设计 - Google Patents
支持浮点格式乘加的存算一体化dram计算部件设计 Download PDFInfo
- Publication number
- CN113590195A CN113590195A CN202110832533.6A CN202110832533A CN113590195A CN 113590195 A CN113590195 A CN 113590195A CN 202110832533 A CN202110832533 A CN 202110832533A CN 113590195 A CN113590195 A CN 113590195A
- Authority
- CN
- China
- Prior art keywords
- floating
- point
- result
- opb
- source operands
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000013461 design Methods 0.000 title claims abstract description 12
- 238000007667 floating Methods 0.000 claims abstract description 86
- 238000004364 calculation method Methods 0.000 claims abstract description 76
- 238000003860 storage Methods 0.000 claims abstract description 47
- 238000000034 method Methods 0.000 claims abstract description 27
- 230000008569 process Effects 0.000 claims abstract description 16
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 11
- 238000010606 normalization Methods 0.000 claims description 8
- 229910002056 binary alloy Inorganic materials 0.000 claims description 3
- 230000001788 irregular Effects 0.000 abstract description 9
- 238000004422 calculation algorithm Methods 0.000 abstract description 8
- 238000005457 optimization Methods 0.000 abstract description 3
- 125000004122 cyclic group Chemical group 0.000 abstract description 2
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000001133 acceleration Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种支持浮点格式乘加的存算一体化DRAM计算部件设计,本发明基于经典算法,利用DRAM的存储特性将非规则控制转化查表操作。浮点加法沿用far‑near path的算法,主要针对计算过程中对齐操作展开了优化,利用循环移位产生所有对齐可能需要的结果,然后遍历查找表搜索目标操作数。浮点乘法的运算步骤相对规则,本发明主要针对算法移植过程中相对耗时的部分进行了优化。本发明可将浮点操作转化为规则定点操作,面向存算一体化DRAM实现DRAM存储内支持浮点格式计算,弥补存内计算结构中计算功能不完整的缺口,克服了浮点数据运算过程中所引起的非规则操作对系统性能的破坏,浮点操作支持的数据格式多。
Description
技术领域
本发明设计属于微处理器设计技术领域的微处理器体系结构和执行部件设计技术,具体涉及一种支持浮点格式乘加的存算一体化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、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/的处理器执行的指令产生用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种支持浮点格式乘加的存算一体化DRAM计算部件设计,其特征在于,包括浮点加法执行单元和浮点乘法执行单元,所述浮点加法执行单元包括:
浮点加法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;
浮点加法运算单元,用于获取源操作数OPA和OPB的阶码之间的阶码差;利用阶码差的符号位,在源操作数OPA和OPB中选择阶码较小的源操作数的尾数进行移位循环操作;将阶码差的差值,进行取绝对值的操作,并经过映射生成掩码阵列;利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数;将对齐后的尾数根据源操作数OPA和OPB两则的符号位异或操作的结果选择进行定点加法或减法操作,针对定点加法或减法操作的结果进行绝对值操作、并根据加法结果或减法操作的符号位决定是否进行取反和加1操作,对最终得到的尾数进行规格化操作,得到浮点加法最终结果的尾数;在源操作数OPA和OPB的阶码中选择较大的阶码,并根据规格化产生的左移调整阶码,形成得到浮点加法最终结果的阶码;在源操作数OPA和OPB的符号位中选择较大的符号位,作为浮点加法最终结果的符号位,最终得到由符号位、阶码以及尾数构成的浮点加法最终结果;
所述浮点乘法执行单元包括:
浮点乘法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;
浮点乘法运算单元,用于将源操作数OPA和OPB的符号位进行异或后作为浮点乘法最终结果的符号位;将源操作数OPA和OPB的阶码进行格式转化后进行定点加法操作后作为浮点乘法最终结果的阶码;将一个源操作数的尾数进行定点乘法循环并将结果放入中间结果查找表中,将另一个源操作数的尾数拆分为多组指定位宽n的索引,根据索引查找中间结果查找表得到索引后的结果,将索引后的结果作为部分和再进行累加,最终获得浮点乘法最终结果的尾数部分。
2.一种面向存算一体化DRAM的浮点计算方法,其特征在于,包括执行浮点加法的步骤:
1)对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;
2)获取源操作数OPA和OPB的阶码之间的阶码差;利用阶码差的符号位,在源操作数OPA和OPB中选择阶码较小的源操作数的尾数进行移位循环操作;将阶码差的差值,进行取绝对值的操作,并经过映射生成掩码阵列;利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数;将对齐后的尾数根据源操作数OPA和OPB两则的符号位异或操作的结果选择进行定点加法或减法操作,针对定点加法或减法操作的结果进行绝对值操作、并根据加法结果或减法操作的符号位决定是否进行取反和加1操作,对最终得到的尾数进行规格化操作,得到浮点加法最终结果的尾数;在源操作数OPA和OPB的阶码中选择较大的阶码,并根据规格化产生的左移调整阶码,形成得到浮点加法最终结果的阶码;在源操作数OPA和OPB的符号位中选择较大的符号位,作为浮点加法最终结果的符号位,最终得到由符号位、阶码以及尾数构成的浮点加法最终结果。
3.根据权利要求2所述的面向存算一体化DRAM的浮点计算方法,其特征在于,步骤1)中获取源操作数OPA和OPB的阶码之间的阶码差包括:对源操作数OPA和OPB的阶码两者首先进行符号填充,然后再进行定点减法,获得源操作数OPA和OPB的阶码之间的有符号编码的阶码差的差值。
4.根据权利要求2所述的面向存算一体化DRAM的浮点计算方法,其特征在于,步骤2)中经过映射生成的掩码阵列的元素宽度和阵列项数与操作数的尾数宽度一致,且掩码阵列的生成过程使用输入操作数作为项数索引,将选中的项全部置1,其他项全部置零;所述利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数是指利用掩码阵列置1选中的项针对移位循环操作的输出结果选择对齐后的尾数。
5.根据权利要求2所述的面向存算一体化DRAM的浮点计算方法,其特征在于,还包括执行浮点乘法的步骤:
S1)对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;
S2)将源操作数OPA和OPB的符号位进行异或后作为浮点乘法最终结果的符号位;将源操作数OPA和OPB的阶码进行格式转化后进行定点加法操作后作为浮点乘法最终结果的阶码;将一个源操作数的尾数进行定点乘法循环并将结果放入中间结果查找表中,将另一个源操作数的尾数拆分为多组指定位宽n的索引,根据索引查找中间结果查找表得到索引后的结果,将索引后的结果作为部分和再进行累加,最终获得浮点乘法最终结果的尾数部分。
6.根据权利要求5所述的面向存算一体化DRAM的浮点计算方法,其特征在于,步骤S2)中将一个源操作数的尾数进行定点乘法循环是指:将该源操作数的尾数与指定位宽n的临时操作数进行定点乘法,所述临时操作数为遍历指定位宽n位二进制的空间的一组数值以获得该源操作数与任意指定位宽n位操作数定点乘法的结果,将定点乘法结果放入对应TMP操作数作为行地址索引的中间结果查找表中,中间结果查找表利用原有的DRAM存储阵列,且中间结果查找表的索引为DRAM存储阵列的行地址。
7.一种面向存算一体化DRAM的浮点计算部件,其特征在于,所述浮点计算组件包括浮点加法执行单元,所述浮点加法执行单元包括:
浮点加法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;
浮点加法运算单元,用于获取源操作数OPA和OPB的阶码之间的阶码差;利用阶码差的符号位,在源操作数OPA和OPB中选择阶码较小的源操作数的尾数进行移位循环操作;将阶码差的差值,进行取绝对值的操作,并经过映射生成掩码阵列;利用掩码阵列针对移位循环操作的输出结果选择对齐后的尾数;将对齐后的尾数根据源操作数OPA和OPB两则的符号位异或操作的结果选择进行定点加法或减法操作,针对定点加法或减法操作的结果进行绝对值操作、并根据加法结果或减法操作的符号位决定是否进行取反和加1操作,对最终得到的尾数进行规格化操作,得到浮点加法最终结果的尾数;在源操作数OPA和OPB的阶码中选择较大的阶码,并根据规格化产生的左移调整阶码,形成得到浮点加法最终结果的阶码;在源操作数OPA和OPB的符号位中选择较大的符号位,作为浮点加法最终结果的符号位,最终得到由符号位、阶码以及尾数构成的浮点加法最终结果。
8.根据权利要求7所述的面向存算一体化DRAM的浮点计算部件,其特征在于,所述浮点计算组件还包括浮点乘法执行单元,所述浮点乘法执行单元包括:
浮点乘法操作数拆解单元,用于对浮点加法的两个源操作数OPA和OPB分别进行拆解,分离出符号位、阶码和尾数;
浮点乘法运算单元,用于将源操作数OPA和OPB的符号位进行异或后作为浮点乘法最终结果的符号位;将源操作数OPA和OPB的阶码进行格式转化后进行定点加法操作后作为浮点乘法最终结果的阶码;将一个源操作数的尾数进行定点乘法循环并将结果放入中间结果查找表中,将另一个源操作数的尾数拆分为多组指定位宽n的索引,根据索引查找中间结果查找表得到索引后的结果,将索引后的结果作为部分和再进行累加,最终获得浮点乘法最终结果的尾数部分。
9.一种存算一体化DRAM,包括相互连接的DRAM存储阵列和计算部件,其特征在于,所述计算部件为权利要求7或8所述的面向存算一体化DRAM的浮点计算部件。
10.一种计算机设备,包括相互连接的微处理器和内存,其特征在于,所述内存为权利要求9所述的存算一体化DRAM。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110832533.6A CN113590195B (zh) | 2021-07-22 | 2021-07-22 | 支持浮点格式乘加的存算一体化dram计算部件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110832533.6A CN113590195B (zh) | 2021-07-22 | 2021-07-22 | 支持浮点格式乘加的存算一体化dram计算部件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113590195A true CN113590195A (zh) | 2021-11-02 |
CN113590195B CN113590195B (zh) | 2023-11-07 |
Family
ID=78249167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110832533.6A Active CN113590195B (zh) | 2021-07-22 | 2021-07-22 | 支持浮点格式乘加的存算一体化dram计算部件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113590195B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816531A (zh) * | 2022-04-18 | 2022-07-29 | 海飞科(南京)信息技术有限公司 | 使用窄加法数据通道实现大位宽加操作数取数加操作的方法 |
CN115422115A (zh) * | 2022-11-01 | 2022-12-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于总线的编码方法、系统、存储介质及设备 |
CN116136835A (zh) * | 2023-04-19 | 2023-05-19 | 中国人民解放军国防科技大学 | 一种三进二出数值获取方法、装置及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6049865A (en) * | 1997-12-18 | 2000-04-11 | Motorola, Inc. | Method and apparatus for implementing floating point projection instructions |
JP2010218197A (ja) * | 2009-03-17 | 2010-09-30 | Nec Computertechno Ltd | 浮動小数点積和演算装置、浮動小数点積和演算方法、及び浮動小数点積和演算用プログラム |
CN103019647A (zh) * | 2012-11-28 | 2013-04-03 | 中国人民解放军国防科学技术大学 | 具有浮点精度保持功能的浮点累加/累减运算方法 |
CN104991757A (zh) * | 2015-06-26 | 2015-10-21 | 浪潮(北京)电子信息产业有限公司 | 一种浮点处理方法及浮点处理器 |
CN107273090A (zh) * | 2017-05-05 | 2017-10-20 | 中国科学院计算技术研究所 | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 |
CN107291419A (zh) * | 2017-05-05 | 2017-10-24 | 中国科学院计算技术研究所 | 用于神经网络处理器的浮点乘法器及浮点数乘法 |
CN108287681A (zh) * | 2018-02-14 | 2018-07-17 | 中国科学院电子学研究所 | 一种单精度浮点融合点乘运算单元 |
CN111124999A (zh) * | 2019-12-10 | 2020-05-08 | 合肥工业大学 | 一种支持存储内计算的双模计算机架构 |
-
2021
- 2021-07-22 CN CN202110832533.6A patent/CN113590195B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6049865A (en) * | 1997-12-18 | 2000-04-11 | Motorola, Inc. | Method and apparatus for implementing floating point projection instructions |
JP2010218197A (ja) * | 2009-03-17 | 2010-09-30 | Nec Computertechno Ltd | 浮動小数点積和演算装置、浮動小数点積和演算方法、及び浮動小数点積和演算用プログラム |
CN103019647A (zh) * | 2012-11-28 | 2013-04-03 | 中国人民解放军国防科学技术大学 | 具有浮点精度保持功能的浮点累加/累减运算方法 |
CN104991757A (zh) * | 2015-06-26 | 2015-10-21 | 浪潮(北京)电子信息产业有限公司 | 一种浮点处理方法及浮点处理器 |
CN107273090A (zh) * | 2017-05-05 | 2017-10-20 | 中国科学院计算技术研究所 | 面向神经网络处理器的近似浮点乘法器及浮点数乘法 |
CN107291419A (zh) * | 2017-05-05 | 2017-10-24 | 中国科学院计算技术研究所 | 用于神经网络处理器的浮点乘法器及浮点数乘法 |
CN108287681A (zh) * | 2018-02-14 | 2018-07-17 | 中国科学院电子学研究所 | 一种单精度浮点融合点乘运算单元 |
CN111124999A (zh) * | 2019-12-10 | 2020-05-08 | 合肥工业大学 | 一种支持存储内计算的双模计算机架构 |
Non-Patent Citations (1)
Title |
---|
夏阳;邹莹;: "基于VHDL的浮点算法研究", 计算机仿真, no. 04 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816531A (zh) * | 2022-04-18 | 2022-07-29 | 海飞科(南京)信息技术有限公司 | 使用窄加法数据通道实现大位宽加操作数取数加操作的方法 |
CN115422115A (zh) * | 2022-11-01 | 2022-12-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于总线的编码方法、系统、存储介质及设备 |
CN116136835A (zh) * | 2023-04-19 | 2023-05-19 | 中国人民解放军国防科技大学 | 一种三进二出数值获取方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113590195B (zh) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113590195B (zh) | 支持浮点格式乘加的存算一体化dram计算部件 | |
Moussalli et al. | Fast and flexible conversion of geohash codes to and from latitude/longitude coordinates | |
Wang et al. | WinoNN: Optimizing FPGA-based convolutional neural network accelerators using sparse Winograd algorithm | |
Ahn et al. | Deeper weight pruning without accuracy loss in deep neural networks: Signed-digit representation-based approach | |
US11609741B2 (en) | Apparatus and method for processing floating-point numbers | |
US20210034327A1 (en) | Apparatus and Method for Processing Floating-Point Numbers | |
Song et al. | Bsc: Block-based stochastic computing to enable accurate and efficient tinyml | |
Jangalwa et al. | Design and Analysis of 8-Bit Multiplier for Low Power VLSI Applications | |
Meng et al. | An Efficient CNN Accelerator Achieving High PE Utilization Using a Dense-/Sparse-Aware Redundancy Reduction Method and Data–Index Decoupling Workflow | |
Kulkarni et al. | MAC unit optimization for area power and timing constraints | |
Luo et al. | A single clock cycle approximate adder with hybrid prediction and error compensation methods | |
Haghi et al. | O⁴-DNN: A Hybrid DSP-LUT-Based Processing Unit With Operation Packing and Out-of-Order Execution for Efficient Realization of Convolutional Neural Networks on FPGA Devices | |
Kowsalya | A novel cognitive Wallace compressor based multi operand adders in CNN architecture for FPGA | |
Schönleber et al. | Stella Nera: Achieving 161 TOp/s/W with Multiplier-free DNN Acceleration based on Approximate Matrix Multiplication | |
Salman et al. | Comparative study of hardware accelerated convolution neural network on pynq board | |
Guo et al. | Cambricon-u: A systolic random increment memory architecture for unary computing | |
Zhao et al. | A Dynamically Reconfigurable Accelerator Design Using a Sparse-Winograd Decomposition Algorithm for CNNs | |
CN104572018A (zh) | 一种用于浮点常数生成的装置及方法 | |
CN115857873B (zh) | 乘法器、乘法计算方法、处理系统及存储介质 | |
Xie et al. | Winols: A Large-Tiling Sparse Winograd CNN Accelerator on FPGAs | |
CN116821559B (zh) | 用于快速获取一组大数据集中趋势的方法、系统及终端 | |
CN115358381B (zh) | 光学全加器及其神经网络设计方法、设备及介质 | |
CN114239818B (zh) | 基于tcam和lut的存内计算架构神经网络加速器 | |
She et al. | Distributed High-Dimension Matrix Operation Optimization on Spark | |
Wang et al. | An FPGA-based reconfigurable CNN training accelerator using decomposable Winograd |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |