CN117687596A - 运算装置及方法、芯片和电子设备 - Google Patents

运算装置及方法、芯片和电子设备 Download PDF

Info

Publication number
CN117687596A
CN117687596A CN202311763223.9A CN202311763223A CN117687596A CN 117687596 A CN117687596 A CN 117687596A CN 202311763223 A CN202311763223 A CN 202311763223A CN 117687596 A CN117687596 A CN 117687596A
Authority
CN
China
Prior art keywords
input data
result
decimal
mantissa
zero
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.)
Pending
Application number
CN202311763223.9A
Other languages
English (en)
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202311763223.9A priority Critical patent/CN117687596A/zh
Publication of CN117687596A publication Critical patent/CN117687596A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本公开涉及一种运算装置及方法、芯片和电子设备,该运算装置包括掩码电路、位移电路、处理电路;掩码电路用于获取输入数据的小数掩码,并将小数掩码输出至位移电路和处理电路,小数掩码用于标记输入数据的尾数的小数部分;位移电路用于根据小数掩码,对输入数据的尾数进行位移操作,得到位移位数和位移结果,并将位移位数和位移结果输出至处理电路;处理电路用于根据小数掩码、位移位数和位移结果,确定输入数据的小数部分。本公开实施例可在使用少量电路开销的情况下,独立实现提取浮点数的小数部分,不占用加法器或者乘加器的计算资源。

Description

运算装置及方法、芯片和电子设备
技术领域
本公开涉及计算机技术领域,尤其涉及一种运算装置及方法、芯片和电子设备。
背景技术
浮点数是计算机中一种重要的数字格式,在计算机中浮点数由符号、指数(也称阶码)和尾数三部分组成。为了满足不同业务的不同需求,计算机通常需要支持浮点数的多种计算类型,例如包括提取浮点数的小数部分。相关技术中,为了提取浮点数的小数部分,计算过程既可以使用向下取整指令和减法指令先后完成计算,也可以是在硬件上,先基于向下取整单元电路对浮点数执行向下取整操作,再将浮点数向下取整操作的结果作为加法单元电路的输入,基于加法单元电路对浮点数与浮点数向下取整的结果进行减法运算。
然而,使用两条指令来提取浮点数的小数部分会降低指令执行的效率,通过硬件将向下取整的结果作为加法单元电路的输入则会导致加法单元时序紧张,因为加法单元必须要在拿到向下取整单元的计算结果后才能开始计算。
发明内容
本公开提出了一种运算装置及方法、芯片和电子设备。
根据本公开的一方面,提供了一种运算装置,所述运算装置用于提取输入数据的小数部分,所述运算装置包括掩码电路、位移电路、处理电路;所述掩码电路用于获取所述输入数据的小数掩码,并将所述小数掩码输出至所述位移电路和所述处理电路,所述小数掩码用于标记所述输入数据的尾数的小数部分;所述位移电路用于根据所述小数掩码,对所述输入数据的尾数进行位移操作,得到位移位数和位移结果,并将所述位移位数和所述位移结果输出至所述处理电路;所述处理电路用于根据所述小数掩码、所述位移位数和所述位移结果,确定所述输入数据的小数部分。
在一种可能的实现方式中,所述处理电路包括尾数单元电路、指数单元电路、特殊值检测单元电路、装配单元电路;所述尾数单元电路用于根据所述位移结果确定结果尾数,并将所述结果尾数输出至所述装配单元电路,所述结果尾数是用浮点数形式表示所述输入数据的小数部分时的尾数;所述指数单元电路用于根据所述位移位数确定结果指数,并将所述结果指数输出至所述装配单元电路,所述结果指数是用浮点数形式表示所述输入数据的小数部分时的指数;所述特殊值检测单元电路用于根据所述小数掩码检测所述输入数据的特殊值标志,并将所述特殊值标志输出至所述装配单元电路,所述特殊值标志的类别包括无穷、非数、零、纯小数、纯整数;所述装配单元电路根据所述结果尾数、所述结果指数、所述特殊值标志,确定所述输入数据的小数部分。
在一种可能的实现方式中,所述掩码电路包括第一减法器、第一右移器、比较器、第一选择器,所述比较器用于对所述输入数据的指数部分与第一预设阈值进行比较,得到比较结果,并将所述比较结果输出至所述第一选择器;所述第一选择器用于在比较结果为所述输入数据的指数部分小于或等于第一预设阈值的情况下,选择所述输入数据的小数掩码为预设位数的全1数据;或者,所述第一选择器用于在比较结果为所述输入数据的指数部分大于第一预设阈值的情况下,选择通过所述第一减法器和所述右移器确定所述输入数据的小数掩码,其中,所述第一减法器用于计算所述输入数据的指数部分与第一预设阈值的第一差值,并将所述第一差值输出至所述第一右移器;所述第一右移器用于将所述预设位数的全1数据右移所述第一差值位,得到右移数据,并将所述右移数据传输至所述第一选择器;所述第一选择器用于在比较结果为所述输入数据的指数部分大于第一预设阈值的情况下,选择所述右移数据为所述输入数据的小数掩码。
在一种可能的实现方式中,所述位移电路包括:按位与运算器、前导零检测器、按位或运算器、前导一检测器、第二选择器、左移器、第二减法器、第二右移器、第三选择器、粘滞位检测器;所述第二选择器用于在所述输入数据大于或等于零的情况下,选择将所述按位与运算器、所述前导零检测器确定的左移位数输出至所述左移器,或者,在所述输入数据小于零的情况下,选择将所述按位或运算器、所述前导一检测器确定的左移位数输出至所述左移器;所述左移器用于根据收到的左移位数,对所述输入数据的尾数部分执行左移操作,得到左移结果,并将所述左移结果传输至所述第三选择器;所述第二减法器用于计算所述输入数据的指数部分与第二预设阈值的第二差值,并将所述第二差值作为右移位数输出至所述第二右移器;所述第二右移器用于根据收到的右移位数,对所述输入数据的尾数部分执行右移操作,得到右移结果,并将所述右移结果传输至所述第三选择器和所述粘滞位检测器,所述粘滞位检测器用于根据所述右移结果确定粘滞位的值;所述第三选择器用于在所述输入数据的指数部分小于第一预设阈值的情况下,选择所述右移结果作为位移结果,或者,在所述输入数据的指数部分大于或等于第一预设阈值的情况下,选择所述左移结果作为位移结果。
在一种可能的实现方式中,所述按位与运算器用于计算所述输入数据的尾数部分与所述小数掩码的按位与操作,得到按位与结果,并将所述按位与结果传输至所述前导零检测器;所述前导零检测器用于从高位至低位检测所述按位与结果,将第一个非零位之前零位的数量确定为第一左移位数;所述按位或运算器用于计算所述输入数据的尾数部分与取反后的所述小数掩码的按位或操作,得到按位或结果,并将所述按位或结果传输至所述前导一检测器;所述前导一检测器用于从高位至低位检测所述按位或结果,将第一个零位之前非零位的数量确定为第二左移位数。
在一种可能的实现方式中,所述尾数单元电路包括:按位取反运算器、加法器,第四选择器,所述第四选择器用于在所述输入数据大于或等于零的情况下,选择所述位移结果作为小数部分的结果尾数,或者,在所述输入数据小于零且所述粘滞位等于一的情况下,选择用所述按位取反运算器对所述位移结果执行按位取反操作后的按位取反结果,作为小数部分的结果尾数,或者,在所述输入数据小于零且所述粘滞位等于零的情况下,选择用所述加法器对所述按位取反结果执行加一操作后的加一结果,作为小数部分的结果尾数。
在一种可能的实现方式中,所述位移位数包括左移位数,所述位移电路还用于将所述左移位数输入至所述指数单元电路,所述指数单元电路包括第三减法器、第五选择器,所述第五选择器用于在所述输入数据小于零且所述输入数据的指数部分小于第一预设阈值的情况下,选择第一预设值作为小数部分的结果指数;或者,在所述输入数据大于或等于零,或所述输入数据小于零且所述输入数据的指数部分大于或等于第一预设阈值的情况下,选择用于所述第三减法器对所述输入数据的指数部分与所述左移位数执行减法操作后的减法结果,作为小数部分的结果指数。
在一种可能的实现方式中,所述特殊值检测单元电路用于在所述输入数据的尾数部分和指数部分均为零的情况下,将所述特殊值标志确定为零;或者,在所述输入数据的指数部分均为一的情况下,将所述特殊值标志确定为无穷或非数;或者,在所述输入数据的指数部分小于第一预设阈值,将所述特殊值标志确定为纯小数;或者,在所述输入数据的尾数部分与所述小数掩码进行按位与操作的结果为零,且所述输入数据不等于0或非数或无穷的情况下,将所述特殊值标志确定为纯整数。
在一种可能的实现方式中,所述装配单元电路包括第六选择器、第七选择器、第八选择器;所述第六选择器用于在所述特殊值标志为纯小数且所述输入数据大于零的情况下,选择所述输入数据作为第一选择结果输出至所述第七选择器,否则选择所述输入数据的符号位、所述结果指数、所述结果尾数的拼装结果作为第一选择结果输出至所述第七选择器;所述第七选择器用于在所述特殊值标志为零的情况下,选择零作为第二选择结果输出至所述第八选择器,否则选择所述第一选择结果作为第二选择结果输出至第八选择器;所述第八选择器用于在所述特殊值标志为非数或无穷的情况下,选择第二预设值作为输入数据的小数部分,否则选择第二选择结果作为输入数据的小数部分。
根据本公开的一方面,提供了一种运算方法,所述方法用于提取输入数据的小数部分,所述方法包括:获取所述输入数据的小数掩码,所述小数掩码用于标记所述输入数据的尾数的小数部分;根据所述小数掩码,对所述输入数据的尾数进行位移操作,得到位移位数和位移结果;根据所述小数掩码、所述位移位数和所述位移结果,确定所述输入数据的小数部分。
在一种可能的实现方式中,根据所述小数掩码、所述位移位数和所述位移结果,确定所述输入数据的小数部分,包括:根据所述位移结果确定结果尾数,所述结果尾数是用浮点数形式表示所述输入数据的小数部分时的尾数;根据所述位移位数确定结果指数,所述结果指数是用浮点数形式表示所述输入数据的小数部分时的指数;根据所述小数掩码检测所述输入数据的特殊值标志,所述特殊值标志的类别包括无穷、非数、零、纯小数、纯整数;根据所述结果尾数、所述结果指数、所述特殊值标志,确定所述输入数据的小数部分。
在一种可能的实现方式中,获取所述输入数据的小数掩码,包括:对所述输入数据的指数部分与第一预设阈值进行比较,得到比较结果;在所述比较结果为所述输入数据的指数部分小于或等于第一预设阈值的情况下,选择所述输入数据的小数掩码为预设位数的全1数据;或者,在所述比较结果为所述输入数据的指数部分大于第一预设阈值的情况下,选择右移数据为所述输入数据的小数掩码,所述右移数据为所述预设位数的全1数据右移第一差值位,所述第一差值为所述输入数据的指数部分与第一预设阈值的差值。
在一种可能的实现方式中,根据所述小数掩码,对所述输入数据的尾数进行位移操作,得到位移位数和位移结果,包括:在所述输入数据大于或等于零的情况下,根据所述输入数据的尾数部分与所述小数掩码,获取第一左移位数;根据所述第一左移位数对所述输入数据的尾数执行左移操作,得到左移结果;将所述第一左移位数确定为所述位移位数,将所述左移结果确定为所述位移结果;或者,在所述输入数据小于零且所述输入数据的指数部分大于或等于第一预设阈值的情况下,根据所述输入数据的尾数部分与所述小数掩码,获取第二左移位数;根据所述第二左移位数对所述输入数据的尾数执行左移操作,得到左移结果;将所述第二左移位数确定为所述位移位数,将所述左移结果确定为所述位移结果;或者,在所述输入数据小于零且所述输入数据的指数部分小于第一预设阈值的情况下,根据所述输入数据的指数部分与第二预设阈值的第二差值,获取右移位数;根据所述右移位数,对所述输入数据的尾数部分执行右移操作,得到右移结果,并根据所述右移结果确定粘滞位的值;将所述右移位数确定为所述位移位数,将所述右移结果确定为所述位移结果。
在一种可能的实现方式中,根据所述输入数据的尾数部分与所述小数掩码,获取第一左移位数,包括:计算所述输入数据的尾数部分与所述小数掩码的按位与操作,得到按位与结果;从高位至低位检测所述按位与结果,将第一个非零位之前零位的数量确定为第一左移位数;
根据所述输入数据的尾数部分与所述小数掩码,获取第二左移位数,包括:计算所述输入数据的尾数部分与取反后的所述小数掩码的按位或操作,得到按位或结果;从高位至低位检测所述按位或结果,将第一个零位之前非零位的数量确定为第二左移位数。
在一种可能的实现方式中,根据所述位移结果确定结果尾数,包括:在所述输入数据大于或等于零的情况下,选择所述位移结果作为小数部分的结果尾数;或者,在所述输入数据小于零且所述粘滞位等于一的情况下,将所述位移结果的按位取反结果,作为小数部分的结果尾数;或者,在所述输入数据小于零且所述粘滞位等于零的情况下,将所述位移结果的按位取反结果的加一结果,作为小数部分的结果尾数。
在一种可能的实现方式中,根据所述位移位数确定结果指数,包括:在所述输入数据大于或等于零,将所述输入数据的指数部分与所述第一左移位数的减法结果,作为小数部分的结果指数;或者,在所述输入数据小于零且所述输入数据的指数部分大于或等于第一预设阈值的情况下,将所述输入数据的指数部分与所述第二左移位数的减法结果,作为小数部分的结果指数;或者,在所述输入数据小于零且所述输入数据的指数部分小于第一预设阈值的情况下,选择第一预设值作为小数部分的结果指数。
在一种可能的实现方式中,根据所述小数掩码检测所述输入数据的特殊值标志,包括:在所述输入数据的尾数部分和指数部分均为零的情况下,将所述特殊值标志确定为零;或者,在所述输入数据的指数部分均为一的情况下,将所述特殊值标志确定为无穷或非数;或者,在所述输入数据的指数部分小于第一预设阈值,将所述特殊值标志确定为纯小数;或者,在所述输入数据的尾数部分与所述小数掩码进行按位与操作的结果为零,且所述输入数据不等于0或非数或无穷的情况下,将所述特殊值标志确定为纯整数。
在一种可能的实现方式中,根据所述结果尾数、所述结果指数、所述特殊值标志,确定所述输入数据的小数部分,包括:在所述特殊值标志为非数或无穷的情况下,将第二预设值作为输入数据的小数部分;或者,在所述特殊值标志为零的情况下,将零作为输入数据的小数部分;或者,在所述特殊值标志为纯小数且所述输入数据大于零的情况下,将所述输入数据作为输入数据的小数部分;否则,选择所述输入数据的符号位、所述结果指数、所述结果尾数的拼装结果作为输入数据的小数部分。
根据本公开的一方面,提供了一种算术逻辑单元电路,所述算术逻辑单元电路包括乘累加器,第九选择器,以及如上所述的运算装置,所述运算装置与所述乘累加器解耦合,所述第九选择器用于选择所述运算装置的结果或者所述乘累加器的结果。
根据本公开的一方面,提供了一种芯片,所述芯片包括如上所述的运算装置或算术逻辑单元电路。
根据本公开的一方面,提供了一种电子设备,所述电子设备包括主板以及如上所述的芯片。
根据本公开的一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现上述方法。
本公开实施例的运算装置用于提取输入数据的小数部分,该运算装置包括掩码电路、位移电路、处理电路;掩码电路用于获取输入数据的小数掩码,并将小数掩码输出至位移电路和处理电路,小数掩码用于标记输入数据的尾数的小数部分;位移电路用于根据小数掩码,对输入数据的尾数进行位移操作,得到位移位数和位移结果,并将位移位数和位移结果输出至处理电路;处理电路用于根据小数掩码、位移位数和位移结果,确定输入数据的小数部分。通过本公开实施例的运算装置,可以在使用少量电路开销的情况下,独立实现提取浮点数小数部分的指令的计算,该运算装置与加法器或者乘加器完全解耦合,不占用加法器或者乘加器的计算资源。在处理器芯片中设置该运算装置,缓解了由于将向下取整的结果作为加法器或者乘加器的输入,所导致的加法器或者乘加器的时序紧张,从而提高处理器芯片的频率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,而非限制本公开。根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。
图1示出相关技术中实现取小数运算的硬件架构示意图。
图2示出根据本公开实施例的运算装置的结构示意图。
图3示出根据本公开实施例的输入数据占用存储空间的示意图。
图4示出根据本公开实施例的小数掩码的示意图。
图5示出根据本公开实施例的掩码电路的示意图。
图6示出根据本公开实施例的第一种位移过程的示意图。
图7示出根据本公开实施例的第二种位移过程的示意图。
图8示出根据本公开实施例的第三种位移过程的示意图。
图9示出根据本公开实施例的位移电路的示意图。
图10示出根据本公开实施例的处理单元的示意图。
图11示出根据本公开实施例的尾数单元电路的示意图。
图12示出根据本公开实施例的指数单元电路的示意图。
图13示出根据本公开实施例的装配单元电路的示意图。
图14示出根据本公开实施例的算术逻辑单元电路的示意图。
图15示出根据本公开实施例的运算方法的流程图。
图16示出根据本公开实施例的一种电子设备的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
为了便于对本申请记载的技术方案进行叙述,下面先对浮点数以及浮点数的取小数运算进行介绍。
浮点数是一种数字表示,在计算机中用以近似表示任意某个实数。浮点数可以采用科学计数法来表示,即用一个尾数、一个基数、一个指数以及一个表示正负的符号来表达实数。比如,12.345用十进制科学计数法可以表达为1.2345×101,其中,1.2345为尾数,10为基数,1为指数。再例如,12.345转换为二进制数为1100.101011001,则将其用二进制科学计数法可以表达为1.100101011001×23,其中,1.100101011001为尾数,2为基数,3为指数。浮点数利用指数达到了浮动小数点的效果,从而可以灵活地表达更大范围的实数。
在计算机中可以按照某一标准(例如IEEE754标准)存储二进制浮点数,其中,二进制浮点数的最高有效位被指定为符号位;次高有效的多个(例如8个)有效位被指定为指数位,用于存储浮点数的指数;最后剩下的多个(例如23个)低有效位被指定为尾数位,用于存储浮点数的尾数。另外,二进制浮点数的尾数部分还包括一位隐藏的整数位,计算机中存储的二进制浮点数的基数默认为2。例如,上述1.100101011001×23在计算机中存储的形式为,符号位为0,表示符号为正;尾数位为100101011001,其中,整数位的1被隐藏;指数位的真值为+3,由于单精度浮点数的所有指数都是真实指数加127,真值为3在计算机单精度浮点数中,以10000010表示,即3+127。
在示例中,一个浮点数可以表示为:x=(-1)s×2exp-127×1.mat,其中,x表示浮点数的实际值;(-1)s表示浮点数的符号,当s=0时,符号为正,当s=1时符号为负;exp表示浮点数的移码表示的指数,用于表征小数点浮动的位数;2表示基数;mat表示浮点数的尾数,也可以称为有效数,其中,mat之前的1为隐藏的整数位。
浮点数可以包括半精度浮点数、单精度浮点数、双精度浮点数。
半精度浮点数在计算机的存储空间中占用16位,其中,符号的位宽为1比特(bit),指数的位宽为5比特,尾数的位宽为10比特(尾数的小数部分)。其中,尾数除存储的10比特小数部分,还包括隐藏的1比特整数部分,即,尾数总共11比特。
单精度浮点数在计算机的存储空间中占用32位,其中,符号的位宽为1比特(bit),指数的位宽为8比特,尾数的位宽为23比特(尾数的小数部分)。其中,尾数除存储的23比特小数部分,还包括隐藏的1比特整数部分,即,尾数总共24比特。
双精度浮点数在计算机的存储空间中占用64位,其中,符号的位宽为1比特(bit),指数的位宽为11比特,尾数的位宽为52比特(尾数的小数部分)。其中,尾数除存储的23比特小数部分,还包括隐藏的1比特整数部分,即,尾数总共53比特。
取小数运算用于提取一个浮点数的小数部分,相关技术方案中,通常使用FRC(x)=x-round_ni(x)的方式来实现取小数指令的计算,其中,FRC(x)为取小数函数,x为待处理的浮点数,round_ni(x)表示对x向下整数,例如,对于正数,FRC(1.6)=0.6;对于负数,FRC(-2.6)=-2.6-(-3)=3-2.6=0.4;对于INF和NAN,取小数结果等于NAN,其中INF表示无穷,NAN表示非数;对于0,FRC(0)=0。
相关技术方案中,取小数的计算过程,既可以使用向下取整round_ni和减法这两条指令先后完成计算,也可以是在硬件上将round_ni(x)的计算结果作为加法电路的一个输入来一次完成计算,图1示出相关技术中实现取小数运算的硬件架构示意图,如图1所示,可以先利用向下取整电路00对输入数据x执行向下取整操作,确定round_ni(x)的计算结果,再将向下取整电路00输出的计算结果round_ni(x)作为加法电路01的一个输入,利用加法电路00对输入数据x与round_ni(x)进行加法运算,实现一次对输入数据x的取整计算。
现有技术中若使用两条指令来完成取小数计算会降低指令执行的效率。若通过硬件将向下取整的结果作为加法电路的输入则会导致加法电路时序紧张,因为加法单元要在拿到向下取整的计算结果后才能开始计算。在高频处理器领域中,是以浮点数乘加器来实现浮点数的加减法,而浮点数乘加单元是制约处理芯片频率的瓶颈之一,这样的设计会进一步加剧浮点数乘加单元的时序紧张。
有鉴于此,本公开实施例提供了一种在不使用乘加器的情况下,一次性实现提取浮点数小数的运算装置,图2示出根据本公开实施例的运算装置的结构示意图,如图2所示,所述运算装置用于提取输入数据的小数部分,所述运算装置包括掩码电路1、位移电路2、处理电路3;所述掩码电路1用于获取所述输入数据的小数掩码,并将所述小数掩码输出至所述位移电路2和所述处理电路3,所述小数掩码用于标记所述输入数据的尾数的小数部分;所述位移电路2用于根据所述小数掩码,对所述输入数据的尾数进行位移操作,得到位移位数和位移结果,并将所述位移位数和所述位移结果输出至所述处理电路3;所述处理电路3根据所述小数掩码、所述位移位数和所述位移结果,确定所述输入数据的小数部分。
通过本公开实施例的运算装置,可以在使用少量电路开销的情况下,独立实现提取浮点数小数部分的指令的计算,该运算装置与加法器或者乘加器完全解耦合,不占用加法器或者乘加器的计算资源。在处理器芯片中设置该运算装置,缓解了由于将向下取整的结果作为加法器或者乘加器的输入,所导致的加法器或者乘加器的时序紧张,从而提高处理器芯片的频率。
应理解的是,本公开实施例的装置可以通过通用的模拟元器件、数字电路元器件实现,也可以通过专用集成电路(Application Specific Integrated Circuit,ASIC)实现,或可编程逻辑器件(Programmable Logic Device,PLD)实现,上述PLD可以是复杂程序逻辑器件(Complex Programmable Logical Device,CPLD),现场可编程门阵列(FieldProgrammable Gate Array,FPGA),通用阵列逻辑(Generic Array Logic,GAL)或其任意组合,本公开对运算装置的具体实现方式不做限定。
在示例中,输入数据可以是任意类型的浮点数,例如包括单精度浮点数、双精度浮点数、半精度浮点数等。在实际的应用中,可以为运算装置设置不同的参数,以适用不同类型的浮点数。
下面以输入数据为单精度浮点数为例,介绍掩码电路1的电路设计方法。
图3示出根据本公开实施例的输入数据占用存储空间的示意图,如图3所示,假设输入数据为单精度浮点数,输入数据的尾数的位宽为23位,再加上隐藏的1位,输入数据尾数的位宽为24位,掩码电路1可用于标记输入数据的24位尾数中小数部分的掩码,从而获取到输入数据的小数掩码,其计算公式为:
frc_mask = exp<=126 ? 0xffffff : 0xffffff>>(exp-126) (1)
在公式(1)中,frc_mask代表输入数据的小数掩码,exp代表输入数据的指数部分(见图3中的8位指数),条件运算符?:表示如果满足条件exp<=126,选择frc_mask=0xffffff;如果不满足条件exp<=126(即exp>126),则选择frc_mask=0xffffff>>(exp-126)。也就是说,若指数exp小于等于126,则表示输入数据的绝对值小于1,所有尾数均属于小数部分,掩码电路1获取的输入数据的小数掩码为0xffffff。若指数exp大于126,掩码电路1获取的输入数据的小数掩码为0xffffff>>(exp-126),即对0xffffff右移exp-126位,图4示出根据本公开实施例的小数掩码的示意图。
这样,掩码电路1可以根据输入数据的指数部分确定输入数据的小数掩码,例如,假设输入数据为0.1,其对应的单精度浮点数表示为0 0111101110011001100110011000000,输入数据的指数部分为01111011(对应十进制123),由于指数部分的值123小于126,掩码电路1获取的输入数据的小数掩码为0xffffff。
又例如,假设输入数据为2.5,其对应的单精度浮点数表示为01000000001000000000000000000000,输入数据的指数部分为10000000(对应十进制128),由于指数部分的值128大于126,掩码电路1获取的输入数据的小数掩码为0xffffff右移2位,即0x3fffff。
又例如,假设输入数据为-2.5,其对应的单精度浮点数表示为11000000001000000000000000000000,输入数据的指数部分为10000000(对应十进制128),由于指数部分的值128大于126,掩码电路1获取的输入数据的小数掩码为0xffffff右移2位,即0x3fffff。
又例如,假设输入数据为-0.02,其对应的单精度浮点数表示为10111100101000111101011100000000,输入数据的指数部分为01111001(对应十进制121),由于指数部分的值121小于126,掩码电路1获取的输入数据的小数掩码为0xffffff。
应当理解,可以参考公式(1),确定获取半精度浮点数和双精度浮点数的小数掩码的计算公式,例如,对于半精度浮点数,可以将公式(1)中的126替换为14,将0xffffff替换为0x3ff;对于双精度浮点数,可以将公式(1)中的126替换为1022,将0xffffff替换为0xfffffffffffff。
在一种可能的实现方式中,图5示出根据本公开实施例的掩码电路1的示意图,如图5所示,所述掩码电路1包括第一减法器11、第一右移器12、比较器13、第一选择器14,所述比较器13用于对所述输入数据的指数部分与第一预设阈值进行比较,得到比较结果,并将所述比较结果输出至所述第一选择器14;所述第一选择器14用于在比较结果为所述输入数据的指数部分小于或等于第一预设阈值的情况下,选择所述输入数据的小数掩码为预设位数的全1数据;或者,所述第一选择器14用于在比较结果为所述输入数据的指数部分大于第一预设阈值的情况下,选择通过所述第一减法器11和所述右移器确定所述输入数据的小数掩码,其中,所述第一减法器11用于计算所述输入数据的指数部分与第一预设阈值的第一差值,并将所述第一差值输出至所述第一右移器12;所述第一右移器12用于将所述预设位数的全1数据右移所述第一差值位,得到右移数据,并将所述右移数据传输至所述第一选择器14;所述第一选择器14用于在比较结果为所述输入数据的指数部分大于第一预设阈值的情况下,选择所述右移数据为所述输入数据的小数掩码。
例如,假设输入数据为单精度浮点数,exp是单精度浮点数的指数部分(见图3中占8位空间的指数部分),第一预设阈值可以是126,预设位数的全1数据可以是24位的全1数据,即0xffffff。通过第一减法器11可以计算出exp-126的第一差值,并且由第一右移器12将0xffffff右移,得到右移数据0xffffff>>(exp-126),右移位数为第一差值exp-126。比较器13用于比较exp是否小于126,得到比较结果。第一选择器14根据比较器13的比较结果,在0xffffff和第一右移器数据0xffffff>>(exp-126)之间选择,若比较结果为真(即exp≤126)则选择0xffffff,否则若比较结果为假(即exp>126),可以选择第一右移器12输出的右移数据0xffffff>>(exp-126)。
应当理解,对于半精度浮点数和双精度浮点数,可以根据其在存储器的存储格式,设置不同的第一预设阈值和预设位数的全1数据,具体可参考单精度浮点数,此处不再赘叙。
通过掩码电路1,可以高效准确地获取输入数据的小数掩码,从而标记出输入数据的尾数的小数部分。
下面以输入数据为单精度浮点数为例,介绍位移电路2的电路设计方法。
位移电路2用于对输入数据的尾数(见图3中尾数部分)进行位移操作,位移方式可分为三种不同情况。
图6示出根据本公开实施例的第一种位移过程的示意图,如图6所示,若输入数据大于或等于零,则对输入数据的尾数部分进行左移操作。左移位数按如下公式计算:
frc_mat=((1<<23)|mat)&frc_mask
lshf_val_case1=lzd(frc_mat)
shf_mat = mat<<lshf_val_case1 (2)
在公式(2)中,frc_mask表示由掩码电路1获取的输入数据的小数掩码,mat表示输入数据的尾数部分,<<表示左移操作符,|表示按位或操作符,&表示按位与操作符,(1<<23)|mat表示加上隐藏位的尾数部分,也即对尾数部分mat在高位补1,lzd(leading zerodetector)函数表示由高至低检测前导0的数量,例如,lzd(0)=24,lzd(00001100)=4。第一左移位数lshf_val_case1为对在高位补1后的尾数进行前导零检测的结果。对尾数部分mat左移lshf_val_case1位后,得到位移结果shf_mat,并且记粘滞位sticky为零。
例如,假设输入数据为2.5,其对应的尾数部分mat为01000000000000000000000,小数掩码frc_mask为0x3fffff。frc_mat=101000000000000000000000&0x3fffff=0010000000000 00000000000。第一左移位数lshf_val_case1=lzd(frc_mat)=2,位移结果shf_mat=00000000000000000000000。
图7示出根据本公开实施例的第二种位移过程的示意图,如图7所示,若输入数据小于零,且输入数据的指数部分exp≥126,同样进行左移操作。左移位数按如下公式计算:
frc_mat=((1<<23)|mat)|(~frc_mask)
lshf_val_case2=lod(frc_mat)
shf_mat = mat << lshf_val_case2 (3)
在公式(3)中,frc_mask表示由掩码电路1获取的输入数据的小数掩码,mat表示输入数据的尾数部分,<<表示左移操作符,|表示按位或操作符,~表示按位取反操作符,(1<<23)|mat表示加上隐藏位的尾数部分,也即对尾数部分mat在高位补1,lod(leading onedetector)函数表示由高至低检测前导1的数量,例如,lod(0xffffff)=24,lod(11110011)=4。第二左移位数lshf_val_case2为对在高位补1后的尾数进行前导一检测的结果。对尾数部分mat左移lshf_val_case2位后,得到位移结果shf_mat,并且记粘滞位sticky为零。
例如,假设输入数据为-2.5,其对应的尾数部分mat为01000000000000000000000,小数掩码frc_mask为0x3fffff。frc_mat=(101000000000000000000000)|(~0x3fffff)=111000000000000000000000。第二左移位数lshf_val_case2=lod(frc_mat)=3,位移结果shf_mat=00000000000000000000000。
图8示出根据本公开实施例的第三种位移过程的示意图,如图8所示,若输入数据小于0,并且输入数据的指数部分exp<126,则进行右移操作。右移位数按如下公式计算:
rshf_val_case3=125-exp
shf_mat = ((1<<23)|mat) >> rshf_val_case3 (4)
在公式(4)中,<<表示左移操作符,>>表示右移操作符,|表示按位或操作符,exp表示输入数据的指数部分,rshf_val_case3表示右移位数,(1<<23)|mat表示加上隐藏位的尾数部分,也即对尾数部分mat在高位补1,对高位补1的尾数部分(1<<23)|mat右移rshf_val_case3位后,得到位移结果shf_mat,并且若右移出最低位的部分不为0,则记粘滞位sticky为1,否则记粘滞位sticky为0。
例如,假设输入数据为-0.02,其对应的指数部分为01111001(对应十进制121),尾数部分mat为01000111101011100000000,右移位数rshf_val_case3为4,位移结果shf_mat=00010100011110101110000。其中,右移出的4位均为0,记粘滞位sticky为0。
应当理解,可以参考公式(2)~(4),确定获取半精度浮点数和双精度浮点数的位移过程的计算公式,例如,对于半精度浮点数,可以将公式(2)~(4)中的23替换为11,将125替换为13;对于双精度浮点数,可以将公式(2)~(4)中的23替换为53,将125替换为1021。
在一种可能的实现方式中,图9示出根据本公开实施例的位移电路2的示意图,如图9所示,所述位移电路2包括:按位与运算器21、前导零检测器22、按位或运算器23、前导一检测器24、第二选择器25、左移器26、第二减法器27、第二右移器28、第三选择器29、粘滞位检测器20。
所述第二选择器25用于在所述输入数据大于或等于零的情况下,选择将所述按位与运算器21、所述前导零检测器22确定的左移位数输出至所述左移器26,或者,在所述输入数据小于零的情况下,选择将所述按位或运算器23、所述前导一检测器24确定的左移位数输出至所述左移器26。
其中,所述按位与运算器21用于计算所述输入数据的尾数部分与所述小数掩码的按位与操作,得到按位与结果,并将所述按位与结果传输至所述前导零检测器22;所述前导零检测器22用于从高位至低位检测所述按位与结果,将第一个非零位之前零位的数量确定为第一左移位数。所述按位或运算器23用于计算所述输入数据的尾数部分与取反后的所述小数掩码的按位或操作,得到按位或结果,并将所述按位或结果传输至所述前导一检测器24;所述前导一检测器24用于从高位至低位检测所述按位或结果,将第一个零位之前非零位的数量确定为第二左移位数。
所述左移器26用于根据收到的左移位数,对所述输入数据的尾数部分执行左移操作,得到左移结果,并将所述左移结果传输至所述第三选择器29。
所述第二减法器27用于计算所述输入数据的指数部分与第二预设阈值的第二差值,并将所述第二差值作为右移位数输出至所述第二右移器28。
所述第二右移器28用于根据收到的右移位数,对所述输入数据的尾数部分执行右移操作,得到右移结果,并将所述右移结果传输至所述第三选择器29和所述粘滞位检测器20,所述粘滞位检测器20用于根据所述右移结果确定粘滞位的值。
所述第三选择器29用于在所述输入数据的指数部分小于第一预设阈值的情况下,选择所述右移结果作为位移结果,或者,在所述输入数据的指数部分大于或等于第一预设阈值的情况下,选择所述左移结果作为位移结果。
例如,假设输入数据为单精度浮点数,exp是单精度浮点数的指数部分(见图3中占8位空间的指数部分),mat是单精度浮点数的尾数部分(见图3中占23位空间的尾数部分),第一预设阈值可以是126,第二预设阈值可以是125。
图9中按位与运算器21以及前导零检测器22部分,计算的是输入数据大于或等于0时的第一左移位数lshf_val_case1。按位或运算器23以及前导一检测器24部分,计算的是输入数据小于0且输入数据的指数部分exp≥126时的第二左移位数lshf_val_case2。两种左移位数经过第二选择器25选择后,输入至左移器26中对输入数据的尾数部分mat进行左移,得到左移结果。
图9中第二减法器27用于计算输入数据小于0且输入数据的指数部分exp<126时的右移位数rshf_val_case3,该右移位数rshf_val_case3=exp-125。第二右移器28将高位补1后的尾数部分(1<<23)|mat右移rshf_val_case3位,得到右移结果。
左移器26的左移结果和第二右移器28的右移结果经过第三选择器29进行选择,得到最终的位移结果shf_mat。
粘滞位检测器20用于检测右移结果shf_mat最低位的部分是否等于0,若等于0则粘滞位sticky等于0,否则等于1。
通过位移电路2,可以根据小数掩码,获取输入数据的位移结果和位移位数,该位移结果用于后续确定用浮点数形式表示的输入数据的小数部分的尾数,该位移位数用于后续确定用浮点数形式表示的输入数据的小数部分的指数。
在一种可能的实现方式中,图10示出根据本公开实施例的处理单元3的示意图,如图10所示,所述处理电路3包括尾数单元电路4、指数单元电路5、特殊值检测单元电路6、装配单元电路7;
所述尾数单元电路4用于根据所述位移结果确定结果尾数,并将所述结果尾数输出至所述装配单元电路7,所述结果尾数是用浮点数形式表示所述输入数据的小数部分时的尾数;
所述指数单元电路5用于根据所述位移位数确定结果指数,并将所述结果指数输出至所述装配单元电路7,所述结果指数是用浮点数形式表示所述输入数据的小数部分时的指数;
所述特殊值检测单元电路6用于根据所述小数掩码检测所述输入数据的特殊值标志,并将所述特殊值标志输出至所述装配单元电路7,所述特殊值标志的类别包括无穷、非数、零、纯小数、纯整数;
所述装配单元电路7根据所述结果尾数、所述结果指数、所述特殊值标志,确定所述输入数据的小数部分。
下面以输入数据为单精度浮点数为例,分别介绍尾数单元电路4、指数单元电路5、特殊值检测单元电路6、装配单元电路7的电路设计方法。
尾数单元电路4用于对执行位移操作后的尾数进行计算加工,得到23位宽的结果尾数mat_c,该结果尾数mat_c是用浮点数形式表示输入数据的小数部分时的尾数mat_c。其计算过程分为三种情况。
第一种,若输入数据大于或等于0,可以将位移电路2确定的位移结果shf_mat,作为结果尾数mat_c=shf_mat;例如,假设输入数据为2.5,位移电路2确定的位移结果shf_mat=00000000000000000000000,可以将00000000000000000000000作为结果尾数mat_c。
第二种,若输入数据小于0,且输入数据的指数部分exp<126,并且粘滞位sticky等于0,结果尾数mat_c是位移结果shf_mat按位取反再加1的结果,即结果尾数mat_c=~shf_mat+1;例如,假设输入数据为-0.02,其对应的指数部分为01111001(对应十进制121),位移电路2确定的位移结果shf_mat=00010100011110101110000,粘滞位sticky为0,结果尾数mat_c=11101011100001010010000。
第三种,若输入数据小于0,且输入数据的指数部分exp<126,并且粘滞位sticky等于1,结果尾数mat_c是位移结果shf_mat的按位取反结果,即结果尾数mat_c=~shf_mat。
在一种可能的实现方式中,图11示出根据本公开实施例的尾数单元电路4的示意图,如图11所示,所述尾数单元电路4包括:按位取反运算器41、加法器42,第四选择器43,所述第四选择器43用于在所述输入数据大于或等于零的情况下,选择所述位移结果shf_mat作为小数部分的结果尾数,即结果尾数mat_c=shf_mat,或者在所述输入数据小于零且所述粘滞位sticky等于1的情况下,选择用所述按位取反运算器41对所述位移结果shf_mat执行按位取反操作后的按位取反结果,作为小数部分的结果尾数,即:即结果尾数mat_c=~shf_mat,或者,在所述输入数据小于零且所述粘滞位sticky等于零的情况下,选择用所述加法器42对所述按位取反结果执行加一操作后的加一结果,作为小数部分的结果尾数,即:即结果尾数mat_c=~shf_mat。
通过尾数单元电路4,可以准确获取输入数据的小数部分中用于浮点数表示的尾数。
指数单元电路5用于获取8位宽的结果指数exp_c,该结果指数exp_c是用浮点数形式表示输入数据的小数部分时的指数exp_c,其计算过程分为三种情况。
第一种,若输入数据大于或等于0,结果指数exp_c是输入数据的指数部分exp与第一左移位数lshf_val_case1的差,即结果指数exp_c=exp-lshf_val_case1;
第二种,若输入数据小于0,且输入数据的指数部分exp≥126,结果指数exp_c是输入数据的指数部分exp与第二左移位数lshf_val_case2的差,即结果指数exp_c=exp-lshf_val_case2;
第三种,若输入数据小于0,且输入数据的指数部分exp<126,结果指exp_c=0x7e。
在一种可能的实现方式中,所述位移位数包括左移位数,所述位移电路2的所述第二选择器25还用于将所述左移位数输入至所述指数单元电路5,图12示出根据本公开实施例的指数单元电路5的示意图,如图12所示,所述指数单元电路5包括第三减法器51、第五选择器52,所述第五选择器52用于在所述输入数据小于零且所述输入数据的指数部分exp小于第一预设阈值(例如126)的情况下,选择第一预设值(例如0x7e)作为小数部分的结果指数,或者,第五选择器52用于在所述输入数据大于或等于零,或所述输入数据小于零且所述输入数据的指数部分exp大于或等于第一预设阈值的情况下,选择用于所述第三减法器51对所述输入数据的指数部分exp与所述左移位数执行减法操作后的减法结果,作为小数部分的结果指数。
例如,在位移电路2中第一种情况的第一左移位数lshf_val_case1,和第二种情况的第二左移位数lshf_val_case2经过第二选择器25选择后,输入至指数单元电路5中,通过第三减法器51与输入数据的指数部分exp进行减法操作。若输入数据小于0且输入数据的指数部分exp<126,第五选择器选择第一预设值0x7e作为结果指数exp_c,否则选择第三减法器51输出的减法结果作为结果指数exp_c。
通过指数单元电路5,可以准确获取输入数据的小数部分中用于浮点数表示的指数。
在一种可能的实现方式中,所述特殊值检测单元电路6用于在所述输入数据的尾数部分和指数部分均为零的情况下,将所述特殊值标志确定为零;或者,在所述输入数据的指数部分均为一情况下,将所述特殊值标志确定为无穷或非数;或者,在所述输入数据的指数部分小于第一预设阈值,将所述特殊值标志确定为纯小数;或者,在所述输入数据的尾数部分与所述小数掩码进行按位与操作的结果为零,且所述输入数据不等于0或非数或无穷的情况下,将所述特殊值标志确定为纯整数。
这样,特殊值检测单元电路6能够实现检测输入数据的特殊值。若输入数据为特定数值,则输出对应的特殊值标志。检测的特殊值包括INF(无穷)、NAN(非数)、ZERO(零)、纯小数、纯整数。其中纯小数标志表示输入数据的绝对值小于1,全部尾数为小数。纯整数表示输入数据没有小数部分,即尾数中没有小数部分或者小数部分为0。
例如,假设输入数据为单精度浮点数,若输入数据除符号位外其它位为0,特殊值检测单元电路6则判定输入数据为0。
若输入数据的指数部分等于0xff,则可以判定输入数据为INF(无穷)或者NAN(非数),其中,在满足输入数据的指数部分等于0xff的情况下,若输入数据的尾数部分均为零,则输入数据为INF(无穷),否则,若输入数据的尾数部分不是均为零,则输入数据为NAN(非数)。
若输入数据指数部分小于126,则判定输入数据为纯小数。
若输入数据的指数部分同小数掩码frc_mask进行按位与操作后的结果等于0,且未判定输入数据为0或者INF、NAN的情况下,则判定输入数据为纯整数。
通过设置特殊值检测单元电路6,有利于后续装配单元电路7根据特殊值检测单元电路6确定的特殊值标志,选择不同的装配方式。
在一种可能的实现方式中,图13示出根据本公开实施例的装配单元电路7的示意图,如图13所示,所述装配单元电路7包括第六选择器71、第七选择器72、第八选择器73;
所述第六选择器71用于在所述特殊值标志为纯小数且所述输入数据大于零的情况下,选择所述输入数据作为第一选择结果输出至所述第七选择器72,否则选择所述输入数据的符号位、所述结果指数、所述结果尾数的拼装结果作为第一选择结果输出至所述第七选择器72;
所述第七选择器72用于在所述特殊值标志为零的情况下,选择零作为第二选择结果输出至所述第八选择器73,否则选择所述第一选择结果作为第二选择结果输出至第八选择器73;
所述第八选择器73用于在所述特殊值标志为非数或无穷的情况下,选择第二预设值作为输入数据的小数部分,否则选择第二选择结果作为输入数据的小数部分。
这样,装配单元电路7响应于收到输入数据、特殊值检测单元电路6输出的特殊值标志、指数单元电路5输出的结果指数,尾数单元电路4输出的结果尾数,装配单元电路7可以将特殊值标志作为选择条件,来选取不同情况下的输出数据的小数部分。
例如,假设输入数据为单精度浮点数,若特殊值标志为INF或者NAN(表示特殊值检测单元电路6检测出输入数据为无穷或者非数),装配单元电路7可以输出第二预设值(例如0x7fc00000),表示输入数据的小数部分不存在;若特殊值标志为0(表示特殊值检测单元电路6检测出输入数据为零),装配单元电路7可以输出0x0作为输入数据的小数部分;若输入数据大于0,并且特殊值标志为纯小数,说明输入数据为大于0的纯小数,装配单元电路7可以将输入数据直接作为结果输出;若上述条件均不满足,装配单元电路7对输入数据的符号位sgn、结果指数exp_c、结果尾数mat_c进行拼接,将拼接结果(sgn<<31)|(exp_c<<23)|mat_c,作为输入数据的小数部分,其中,<<表示左移操作符、|表示按位或操作符。
例如,假设输入数据为单精度浮点数,第二预设值为0x7fc00000,结果装配单元电路7可以从特殊值检测单元电路6处获得特殊值标志。若检测到非数或者无穷标志,则输出第二预设值0x7fc00000。否则,若检测到零,则输出0。否则,若检测到纯小数,且输入数据大于0,则将输入数据作为输出。否则,将输入数据的符号位、指数单元电路5的结果指数、尾数单元电路3的结果尾数拼装在一起输出,得到输入数据的小数部分,该小数部分是用浮点数的形式表示的。
综上所述,本公开实施例的运算装置中,可以由掩码电路1、位移电路2、尾数单元电路4、指数单元电路5、特殊值检测单元电路6、装配单元电路7构成,该运算装置可以在使用少量电路开销的情况下,独立实现提取浮点数小数部分的指令的计算,该运算装置与加法器或者乘加器完全解耦合,不占用加法器或者乘加器的计算资源。在处理器芯片中设置该运算装置,缓解了由于将向下取整的结果作为加法器或者乘加器的输入,所导致的加法器或者乘加器的时序紧张,从而提高处理器芯片的频率。
在一种可能的实现方式中,图14示出根据本公开实施例的算术逻辑单元电路的示意图,如图14所示,所述算术逻辑单元电路包括乘累加器B,第九选择器C,以及如上所述的运算装置A(见图2或图10),所述运算装置A与所述乘累加器B解耦合,所述第九选择器C用于选择所述运算装置A的结果或者所述乘累加器B的结果,作为所述算术逻辑单元电路的运算结果进行输出。
例如,运算装置A可以对第一操作数执行取小数操作,得到第一操作数的小数部分,乘累加器B可以对第一操作性、第二操作数、第二操作数执行乘累加操作,得到乘累加结果。运算装置A与乘累加器B直接不存在依赖关系,两者的运算过程是相互独立的,第九选择器可以根据操作码选择运算装置A工作,将运算装置A的结果作为算术逻辑单元电路的运算结果进行输出,也可以根据操作码选择乘累加器B工作,将乘累加器B的结果作为算术逻辑单元电路的运算结果进行输出。
这样,通过在算术逻辑单元电路中设置运算装置A,能够在不依赖乘累加器B的情况下,独立实现提取浮点数的小数部分,缓解了由于将向下取整的结果作为加法器或者乘加器的输入,所导致的加法器或者乘加器的时序紧张,从而提高处理器芯片的频率。
此外,本公开还提供了运算方法、芯片、电子设备、计算机可读存储介质、程序,相应技术方案和描述可参见装置部分的相应记载,不再赘述。
图15示出根据本公开实施例的运算方法的流程图,如图15所示,所述方法用于提取输入数据的小数部分,所述方法包括:在步骤S11中,获取所述输入数据的小数掩码,所述小数掩码用于标记所述输入数据的尾数的小数部分。
在步骤S12中,根据所述小数掩码,对所述输入数据的尾数进行位移操作,得到位移位数和位移结果。
在步骤S13中,根据所述小数掩码、所述位移位数和所述位移结果,确定所述输入数据的小数部分。
可选的,该运算方法可以由图2所示的运算装置执行,如图2所示,该运算装置可包括掩码电路1、位移电路2、处理电路3;可以由掩码电路1执行步骤S11,由位移电路2执行步骤S12,由处理电路3执行步骤S13。
在一种可能的实现方式中,步骤S13可包括:根据所述位移结果确定结果尾数,所述结果尾数是用浮点数形式表示所述输入数据的小数部分时的尾数;根据所述位移位数确定结果指数,所述结果指数是用浮点数形式表示所述输入数据的小数部分时的指数;根据所述小数掩码检测所述输入数据的特殊值标志,所述特殊值标志的类别包括无穷、非数、零、纯小数、纯整数;根据所述结果尾数、所述结果指数、所述特殊值标志,确定所述输入数据的小数部分。
在一种可能的实现方式中,步骤S11可包括:对所述输入数据的指数部分与第一预设阈值进行比较,得到比较结果;在所述比较结果为所述输入数据的指数部分小于或等于第一预设阈值的情况下,选择所述输入数据的小数掩码为预设位数的全1数据;或者,在所述比较结果为所述输入数据的指数部分大于第一预设阈值的情况下,选择右移数据为所述输入数据的小数掩码,所述右移数据为所述预设位数的全1数据右移第一差值位,所述第一差值为所述输入数据的指数部分与第一预设阈值的差值。
在一种可能的实现方式中,步骤S12可包括:在所述输入数据大于或等于零的情况下,根据所述输入数据的尾数部分与所述小数掩码,获取第一左移位数;根据所述第一左移位数对所述输入数据的尾数执行左移操作,得到左移结果;将所述第一左移位数确定为所述位移位数,将所述左移结果确定为所述位移结果;或者,在所述输入数据小于零且所述输入数据的指数部分大于或等于第一预设阈值的情况下,根据所述输入数据的尾数部分与所述小数掩码,获取第二左移位数;根据所述第二左移位数对所述输入数据的尾数执行左移操作,得到左移结果;将所述第二左移位数确定为所述位移位数,将所述左移结果确定为所述位移结果;或者,在所述输入数据小于零且所述输入数据的指数部分小于第一预设阈值的情况下,根据所述输入数据的指数部分与第二预设阈值的第二差值,获取右移位数;根据所述右移位数,对所述输入数据的尾数部分执行右移操作,得到右移结果,并根据所述右移结果确定粘滞位的值;将所述右移位数确定为所述位移位数,将所述右移结果确定为所述位移结果。
在一种可能的实现方式中,根据所述输入数据的尾数部分与所述小数掩码,获取第一左移位数,包括:计算所述输入数据的尾数部分与所述小数掩码的按位与操作,得到按位与结果;从高位至低位检测所述按位与结果,将第一个非零位之前零位的数量确定为第一左移位数;
根据所述输入数据的尾数部分与所述小数掩码,获取第二左移位数,包括:计算所述输入数据的尾数部分与取反后的所述小数掩码的按位或操作,得到按位或结果;从高位至低位检测所述按位或结果,将第一个零位之前非零位的数量确定为第二左移位数。
在一种可能的实现方式中,根据所述位移结果确定结果尾数,包括:在所述输入数据大于或等于零的情况下,选择所述位移结果作为小数部分的结果尾数;或者,在所述输入数据小于零且所述粘滞位等于一的情况下,将所述位移结果的按位取反结果,作为小数部分的结果尾数;或者,在所述输入数据小于零且所述粘滞位等于零的情况下,将所述位移结果的按位取反结果的加一结果,作为小数部分的结果尾数。
在一种可能的实现方式中,根据所述位移位数确定结果指数,包括:在所述输入数据大于或等于零,将所述输入数据的指数部分与所述第一左移位数的减法结果,作为小数部分的结果指数;或者,在所述输入数据小于零且所述输入数据的指数部分大于或等于第一预设阈值的情况下,将所述输入数据的指数部分与所述第二左移位数的减法结果,作为小数部分的结果指数;或者,在所述输入数据小于零且所述输入数据的指数部分小于第一预设阈值的情况下,选择第一预设值作为小数部分的结果指数。
在一种可能的实现方式中,根据所述小数掩码检测所述输入数据的特殊值标志,包括:在所述输入数据的尾数部分和指数部分均为零的情况下,将所述特殊值标志确定为零;或者,在所述输入数据的指数部分均为一的情况下,将所述特殊值标志确定为无穷或非数;或者,在所述输入数据的指数部分小于第一预设阈值,将所述特殊值标志确定为纯小数;或者,在所述输入数据的尾数部分与所述小数掩码进行按位与操作的结果为零,且所述输入数据不等于0或非数或无穷的情况下,将所述特殊值标志确定为纯整数。
在一种可能的实现方式中,根据所述结果尾数、所述结果指数、所述特殊值标志,确定所述输入数据的小数部分,包括:在所述特殊值标志为非数或无穷的情况下,将第二预设值作为输入数据的小数部分;或者,在所述特殊值标志为零的情况下,将零作为输入数据的小数部分;或者,在所述特殊值标志为纯小数且所述输入数据大于零的情况下,将所述输入数据作为输入数据的小数部分;否则,若前三种条件均不满足(即:不满足特殊值标志为非数或无穷,也不满足特殊值标志为零,还不满足特殊值标志为纯小数且所述输入数据大于零),选择所述输入数据的符号位、所述结果指数、所述结果尾数的拼装结果作为输入数据的小数部分。
可以理解,本公开提及的上述各个方法实施例,在不违背原理逻辑的情况下,均可以彼此相互结合形成结合后的实施例,限于篇幅,本公开不再赘述。本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
本公开实施例还提出一种芯片,该芯片包括如上所述的运算装置或算术逻辑单元电路。例如,中央处理器(central processing unit,CPU)芯片、图形处理器(graphicsprocessing unit,GPU)芯片、现场可编程门阵列(field-programmable gate array,FPGA)芯片、专用集成电路(application specific integrated circuits,ASIC)芯片、张量处理单元(tensor processing unit,TPU)芯片或其他人工智能(artificial intelligence,AI)芯片等。
本公开实施例还提出一种电子设备,电子设备包括主板以及如上所述的芯片。
电子设备可以被提供为终端、服务器或其它形态的设备。例如包括用户设备(UserEquipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(PersonalDigital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。
图16示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器或终端设备。参照图16,电子设备1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出接口1958。电子设备1900可以操作基于存储在存储器1932的操作系统,例如微软服务器操作系统(Windows ServerTM),苹果公司推出的基于图形用户界面操作系统(Mac OS XTM),多用户多进程的计算机操作系统(UnixTM),自由和开放原代码的类Unix操作系统(LinuxTM),开放原代码的类Unix操作系统(FreeBSDTM)或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由电子设备1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是(但不限于)电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
若本申请技术方案涉及个人信息,应用本申请技术方案的产品在处理个人信息前,已明确告知个人信息处理规则,并取得个人自主同意。若本申请技术方案涉及敏感个人信息,应用本申请技术方案的产品在处理敏感个人信息前,已取得个人单独同意,并且同时满足“明示同意”的要求。例如,在摄像头等个人信息采集装置处,设置明确显著的标志告知已进入个人信息采集范围,将会对个人信息进行采集,若个人自愿进入采集范围即视为同意对其个人信息进行采集;或者在个人信息处理的装置上,利用明显的标志/信息告知个人信息处理规则的情况下,通过弹窗信息或请个人自行上传其个人信息等方式获得个人授权;其中,个人信息处理规则可包括个人信息处理者、个人信息处理目的、处理方式以及处理的个人信息种类等信息。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (21)

1.一种运算装置,其特征在于,所述运算装置用于提取输入数据的小数部分,所述运算装置包括掩码电路、位移电路、处理电路;
所述掩码电路用于获取所述输入数据的小数掩码,并将所述小数掩码输出至所述位移电路和所述处理电路,所述小数掩码用于标记所述输入数据的尾数的小数部分;
所述位移电路用于根据所述小数掩码,对所述输入数据的尾数进行位移操作,得到位移位数和位移结果,并将所述位移位数和所述位移结果输出至所述处理电路;
所述处理电路用于根据所述小数掩码、所述位移位数和所述位移结果,确定所述输入数据的小数部分。
2.根据权利要求1所述的运算装置,其特征在于,所述处理电路包括尾数单元电路、指数单元电路、特殊值检测单元电路、装配单元电路;
所述尾数单元电路用于根据所述位移结果确定结果尾数,并将所述结果尾数输出至所述装配单元电路,所述结果尾数是用浮点数形式表示所述输入数据的小数部分时的尾数;
所述指数单元电路用于根据所述位移位数确定结果指数,并将所述结果指数输出至所述装配单元电路,所述结果指数是用浮点数形式表示所述输入数据的小数部分时的指数;
所述特殊值检测单元电路用于根据所述小数掩码检测所述输入数据的特殊值标志,并将所述特殊值标志输出至所述装配单元电路,所述特殊值标志的类别包括无穷、非数、零、纯小数、纯整数;
所述装配单元电路根据所述结果尾数、所述结果指数、所述特殊值标志,确定所述输入数据的小数部分。
3.根据权利要求1所述的运算装置,其特征在于,所述掩码电路包括第一减法器、第一右移器、比较器、第一选择器,
所述比较器用于对所述输入数据的指数部分与第一预设阈值进行比较,得到比较结果,并将所述比较结果输出至所述第一选择器;
所述第一选择器用于在比较结果为所述输入数据的指数部分小于或等于第一预设阈值的情况下,选择所述输入数据的小数掩码为预设位数的全1数据;
或者,所述第一选择器用于在比较结果为所述输入数据的指数部分大于第一预设阈值的情况下,选择通过所述第一减法器和所述右移器确定所述输入数据的小数掩码,
其中,所述第一减法器用于计算所述输入数据的指数部分与第一预设阈值的第一差值,并将所述第一差值输出至所述第一右移器;
所述第一右移器用于将所述预设位数的全1数据右移所述第一差值位,得到右移数据,并将所述右移数据传输至所述第一选择器;
所述第一选择器用于在比较结果为所述输入数据的指数部分大于第一预设阈值的情况下,选择所述右移数据为所述输入数据的小数掩码。
4.根据权利要求2所述的运算装置,其特征在于,所述位移电路包括:按位与运算器、前导零检测器、按位或运算器、前导一检测器、第二选择器、左移器、第二减法器、第二右移器、第三选择器、粘滞位检测器;
所述第二选择器用于在所述输入数据大于或等于零的情况下,选择将所述按位与运算器、所述前导零检测器确定的左移位数输出至所述左移器,或者,在所述输入数据小于零的情况下,选择将所述按位或运算器、所述前导一检测器确定的左移位数输出至所述左移器;
所述左移器用于根据收到的左移位数,对所述输入数据的尾数部分执行左移操作,得到左移结果,并将所述左移结果传输至所述第三选择器;
所述第二减法器用于计算所述输入数据的指数部分与第二预设阈值的第二差值,并将所述第二差值作为右移位数输出至所述第二右移器;
所述第二右移器用于根据收到的右移位数,对所述输入数据的尾数部分执行右移操作,得到右移结果,并将所述右移结果传输至所述第三选择器和所述粘滞位检测器,所述粘滞位检测器用于根据所述右移结果确定粘滞位的值;
所述第三选择器用于在所述输入数据的指数部分小于第一预设阈值的情况下,选择所述右移结果作为位移结果,或者,在所述输入数据的指数部分大于或等于第一预设阈值的情况下,选择所述左移结果作为位移结果。
5.根据权利要求4所述的运算装置,其特征在于,所述按位与运算器用于计算所述输入数据的尾数部分与所述小数掩码的按位与操作,得到按位与结果,并将所述按位与结果传输至所述前导零检测器;
所述前导零检测器用于从高位至低位检测所述按位与结果,将第一个非零位之前零位的数量确定为第一左移位数;
所述按位或运算器用于计算所述输入数据的尾数部分与取反后的所述小数掩码的按位或操作,得到按位或结果,并将所述按位或结果传输至所述前导一检测器;
所述前导一检测器用于从高位至低位检测所述按位或结果,将第一个零位之前非零位的数量确定为第二左移位数。
6.根据权利要求4所述的运算装置,其特征在于,所述尾数单元电路包括:按位取反运算器、加法器,第四选择器,
所述第四选择器用于在所述输入数据大于或等于零的情况下,选择所述位移结果作为小数部分的结果尾数,
或者,在所述输入数据小于零且所述粘滞位等于一的情况下,选择用所述按位取反运算器对所述位移结果执行按位取反操作后的按位取反结果,作为小数部分的结果尾数,
或者,在所述输入数据小于零且所述粘滞位等于零的情况下,选择用所述加法器对所述按位取反结果执行加一操作后的加一结果,作为小数部分的结果尾数。
7.根据权利要求2所述的运算装置,其特征在于,所述位移位数包括左移位数,所述位移电路还用于将所述左移位数输入至所述指数单元电路,所述指数单元电路包括第三减法器、第五选择器,
所述第五选择器用于在所述输入数据小于零且所述输入数据的指数部分小于第一预设阈值的情况下,选择第一预设值作为小数部分的结果指数,
或者,
在所述输入数据大于或等于零,或所述输入数据小于零且所述输入数据的指数部分大于或等于第一预设阈值的情况下,选择用于所述第三减法器对所述输入数据的指数部分与所述左移位数执行减法操作后的减法结果,作为小数部分的结果指数。
8.根据权利要求2所述的运算装置,其特征在于,所述特殊值检测单元电路用于在所述输入数据的尾数部分和指数部分均为零的情况下,将所述特殊值标志确定为零;
或者,在所述输入数据的指数部分均为一的情况下,将所述特殊值标志确定为无穷或非数;
或者,在所述输入数据的指数部分小于第一预设阈值,将所述特殊值标志确定为纯小数;
或者,在所述输入数据的尾数部分与所述小数掩码进行按位与操作的结果为零,且所述输入数据不等于0或非数或无穷的情况下,将所述特殊值标志确定为纯整数。
9.根据权利要求2所述的运算装置,其特征在于,所述装配单元电路包括第六选择器、第七选择器、第八选择器;
所述第六选择器用于在所述特殊值标志为纯小数且所述输入数据大于零的情况下,选择所述输入数据作为第一选择结果输出至所述第七选择器,否则选择所述输入数据的符号位、所述结果指数、所述结果尾数的拼装结果作为第一选择结果输出至所述第七选择器;
所述第七选择器用于在所述特殊值标志为零的情况下,选择零作为第二选择结果输出至所述第八选择器,否则选择所述第一选择结果作为第二选择结果输出至第八选择器;
所述第八选择器用于在所述特殊值标志为非数或无穷的情况下,选择第二预设值作为输入数据的小数部分,否则选择第二选择结果作为输入数据的小数部分。
10.一种运算方法,其特征在于,所述方法用于提取输入数据的小数部分,所述方法包括:
获取所述输入数据的小数掩码,所述小数掩码用于标记所述输入数据的尾数的小数部分;
根据所述小数掩码,对所述输入数据的尾数进行位移操作,得到位移位数和位移结果;
根据所述小数掩码、所述位移位数和所述位移结果,确定所述输入数据的小数部分。
11.根据权利要求10所述的方法,其特征在于,根据所述小数掩码、所述位移位数和所述位移结果,确定所述输入数据的小数部分,包括:
根据所述位移结果确定结果尾数,所述结果尾数是用浮点数形式表示所述输入数据的小数部分时的尾数;
根据所述位移位数确定结果指数,所述结果指数是用浮点数形式表示所述输入数据的小数部分时的指数;
根据所述小数掩码检测所述输入数据的特殊值标志,所述特殊值标志的类别包括无穷、非数、零、纯小数、纯整数;
根据所述结果尾数、所述结果指数、所述特殊值标志,确定所述输入数据的小数部分。
12.根据权利要求10所述的方法,其特征在于,获取所述输入数据的小数掩码,包括:
对所述输入数据的指数部分与第一预设阈值进行比较,得到比较结果;
在所述比较结果为所述输入数据的指数部分小于或等于第一预设阈值的情况下,选择所述输入数据的小数掩码为预设位数的全1数据;
或者,在所述比较结果为所述输入数据的指数部分大于第一预设阈值的情况下,选择右移数据为所述输入数据的小数掩码,所述右移数据为所述预设位数的全1数据右移第一差值位,所述第一差值为所述输入数据的指数部分与第一预设阈值的差值。
13.根据权利要求10所述的方法,其特征在于,根据所述小数掩码,对所述输入数据的尾数进行位移操作,得到位移位数和位移结果,包括:
在所述输入数据大于或等于零的情况下,根据所述输入数据的尾数部分与所述小数掩码,获取第一左移位数;根据所述第一左移位数对所述输入数据的尾数执行左移操作,得到左移结果;将所述第一左移位数确定为所述位移位数,将所述左移结果确定为所述位移结果;
或者,在所述输入数据小于零且所述输入数据的指数部分大于或等于第一预设阈值的情况下,根据所述输入数据的尾数部分与所述小数掩码,获取第二左移位数;根据所述第二左移位数对所述输入数据的尾数执行左移操作,得到左移结果;将所述第二左移位数确定为所述位移位数,将所述左移结果确定为所述位移结果;
或者,在所述输入数据小于零且所述输入数据的指数部分小于第一预设阈值的情况下,根据所述输入数据的指数部分与第二预设阈值的第二差值,获取右移位数;根据所述右移位数,对所述输入数据的尾数部分执行右移操作,得到右移结果,并根据所述右移结果确定粘滞位的值;将所述右移位数确定为所述位移位数,将所述右移结果确定为所述位移结果。
14.根据权利要求13所述的方法,其特征在于,根据所述输入数据的尾数部分与所述小数掩码,获取第一左移位数,包括:
计算所述输入数据的尾数部分与所述小数掩码的按位与操作,得到按位与结果;
从高位至低位检测所述按位与结果,将第一个非零位之前零位的数量确定为第一左移位数;
根据所述输入数据的尾数部分与所述小数掩码,获取第二左移位数,包括:
计算所述输入数据的尾数部分与取反后的所述小数掩码的按位或操作,得到按位或结果;
从高位至低位检测所述按位或结果,将第一个零位之前非零位的数量确定为第二左移位数。
15.根据权利要求13所述的方法,其特征在于,根据所述位移结果确定结果尾数,包括:
在所述输入数据大于或等于零的情况下,选择所述位移结果作为小数部分的结果尾数;
或者,在所述输入数据小于零且所述粘滞位等于一的情况下,将所述位移结果的按位取反结果,作为小数部分的结果尾数;
或者,在所述输入数据小于零且所述粘滞位等于零的情况下,将所述位移结果的按位取反结果的加一结果,作为小数部分的结果尾数。
16.根据权利要求13所述的方法,其特征在于,根据所述位移位数确定结果指数,包括:
在所述输入数据大于或等于零,将所述输入数据的指数部分与所述第一左移位数的减法结果,作为小数部分的结果指数;
或者,在所述输入数据小于零且所述输入数据的指数部分大于或等于第一预设阈值的情况下,将所述输入数据的指数部分与所述第二左移位数的减法结果,作为小数部分的结果指数;
或者,在所述输入数据小于零且所述输入数据的指数部分小于第一预设阈值的情况下,选择第一预设值作为小数部分的结果指数。
17.根据权利要求11所述的方法,其特征在于,根据所述小数掩码检测所述输入数据的特殊值标志,包括:
在所述输入数据的尾数部分和指数部分均为零的情况下,将所述特殊值标志确定为零;
或者,在所述输入数据的指数部分均为一的情况下,将所述特殊值标志确定为无穷或非数;
或者,在所述输入数据的指数部分小于第一预设阈值,将所述特殊值标志确定为纯小数;
或者,在所述输入数据的尾数部分与所述小数掩码进行按位与操作的结果为零,且所述输入数据不等于0或非数或无穷的情况下,将所述特殊值标志确定为纯整数。
18.根据权利要求17所述的方法,其特征在于,根据所述结果尾数、所述结果指数、所述特殊值标志,确定所述输入数据的小数部分,包括:
在所述特殊值标志为非数或无穷的情况下,将第二预设值作为输入数据的小数部分;
或者,在所述特殊值标志为零的情况下,将零作为输入数据的小数部分;
或者,在所述特殊值标志为纯小数且所述输入数据大于零的情况下,将所述输入数据作为输入数据的小数部分;
否则,选择所述输入数据的符号位、所述结果指数、所述结果尾数的拼装结果作为输入数据的小数部分。
19.一种算术逻辑单元电路,其特征在于,所述算术逻辑单元电路包括乘累加器,第九选择器,以及根据权利要求1-9中任一项所述的运算装置,所述运算装置与所述乘累加器解耦合,所述第九选择器用于选择所述运算装置的结果或者所述乘累加器的结果,作为所述算术逻辑单元电路的运算结果进行输出。
20.一种芯片,其特征在于,所述芯片包括如权利要求1-9中任意一项所述的运算装置或权利要求19所述的算术逻辑单元电路。
21.一种电子设备,其特征在于,所述电子设备包括主板以及如权利要求20所述的芯片。
CN202311763223.9A 2023-12-20 2023-12-20 运算装置及方法、芯片和电子设备 Pending CN117687596A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311763223.9A CN117687596A (zh) 2023-12-20 2023-12-20 运算装置及方法、芯片和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311763223.9A CN117687596A (zh) 2023-12-20 2023-12-20 运算装置及方法、芯片和电子设备

Publications (1)

Publication Number Publication Date
CN117687596A true CN117687596A (zh) 2024-03-12

Family

ID=90131660

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311763223.9A Pending CN117687596A (zh) 2023-12-20 2023-12-20 运算装置及方法、芯片和电子设备

Country Status (1)

Country Link
CN (1) CN117687596A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120259903A1 (en) * 2011-04-08 2012-10-11 Fujitsu Limited Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit
CN104899004A (zh) * 2014-03-07 2015-09-09 Arm有限公司 一种用于将浮点操作数相乘的数据处理装置和方法
US9400635B1 (en) * 2013-01-14 2016-07-26 Altera Corporation Methods and apparatus for performing dynamic data alignment for floating-point operations
CN106970776A (zh) * 2015-09-25 2017-07-21 Arm 有限公司 用于浮点乘法运算的装置和方法
CN110727412A (zh) * 2019-09-14 2020-01-24 无锡江南计算技术研究所 一种基于掩码的混合浮点乘法低功耗控制方法及装置
CN115268832A (zh) * 2022-07-27 2022-11-01 安谋科技(中国)有限公司 浮点数取整的方法、装置以及电子设备
CN116643718A (zh) * 2023-06-16 2023-08-25 合芯科技有限公司 一种流水线结构的浮点融合乘加装置、方法及处理器
CN116933840A (zh) * 2023-08-03 2023-10-24 南京大学 支持可变指数位宽的多精度Posit编解码运算装置及方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120259903A1 (en) * 2011-04-08 2012-10-11 Fujitsu Limited Arithmetic circuit, arithmetic processing apparatus and method of controlling arithmetic circuit
US9400635B1 (en) * 2013-01-14 2016-07-26 Altera Corporation Methods and apparatus for performing dynamic data alignment for floating-point operations
CN104899004A (zh) * 2014-03-07 2015-09-09 Arm有限公司 一种用于将浮点操作数相乘的数据处理装置和方法
CN106970776A (zh) * 2015-09-25 2017-07-21 Arm 有限公司 用于浮点乘法运算的装置和方法
CN110727412A (zh) * 2019-09-14 2020-01-24 无锡江南计算技术研究所 一种基于掩码的混合浮点乘法低功耗控制方法及装置
CN115268832A (zh) * 2022-07-27 2022-11-01 安谋科技(中国)有限公司 浮点数取整的方法、装置以及电子设备
CN116643718A (zh) * 2023-06-16 2023-08-25 合芯科技有限公司 一种流水线结构的浮点融合乘加装置、方法及处理器
CN116933840A (zh) * 2023-08-03 2023-10-24 南京大学 支持可变指数位宽的多精度Posit编解码运算装置及方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
GUENTHER, D: "Mantissa-masking for energy-efficient floating-point LTE uplink MIMO baseband processing", PROCEEDINGS OF THE 2016 DESIGN, AUTOMATION & TEST IN EUROPE CONFERENCE & EXHIBITION (DATE), 5 October 2016 (2016-10-05) *
夏阳;邹莹;: "基于VHDL的浮点算法研究", 计算机仿真, no. 04, 30 April 2007 (2007-04-30) *
徐爱芸;: "计算机中浮点数的溢出与规格化处理", 黑龙江科技信息, no. 17, 15 June 2013 (2013-06-15) *

Similar Documents

Publication Publication Date Title
US8051118B2 (en) Composition of decimal floating point data
US8051117B2 (en) Shift significand of decimal floating point data
US8195727B2 (en) Convert significand of decimal floating point data from packed decimal format
KR102430645B1 (ko) 독립형 부동소수점 변환장치
KR20080055985A (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
US20080270495A1 (en) Insert/extract biased exponent of decimal floating point data
CN111538472B (zh) 一种Posit浮点数的运算处理器以及运算处理系统
US20030236651A1 (en) Floating point number storage method and floating point arithmetic device
CN112241291A (zh) 用于指数函数实施的浮点单元
TW201531941A (zh) 浮點加法的計算裝置、計算方法以及計算系統
CN111538473A (zh) 一种Posit浮点数处理器
CN112463113A (zh) 浮点加法单元
KR100847934B1 (ko) 스케일링된 정수를 사용하는 부동 소수점 연산
CN117687596A (zh) 运算装置及方法、芯片和电子设备
CN108153513B (zh) 前导零预测
CN112667197B (zh) 一种基于posit浮点数格式的参数化加减法运算电路
KR101922462B1 (ko) 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법
CN115268832A (zh) 浮点数取整的方法、装置以及电子设备
CN114201140A (zh) 指数函数处理单元、方法和神经网络芯片
Yadav et al. Design of 32-bit floating point unit for advanced processors
CN113625990A (zh) 浮点转定点装置、方法、电子设备及存储介质
KR20230015844A (ko) 극소 검출
CN115034163B (zh) 一种支持两种数据格式切换的浮点数乘加计算装置
CN117873427A (zh) 一种算术逻辑单元、运算处理方法、芯片及电子设备
sravya Alapati et al. Hardware Implementation of Posit Numeration System using FPGA for Signal Processing Applications

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