CN114691082A - 乘法器电路、芯片、电子设备及计算机可读存储介质 - Google Patents

乘法器电路、芯片、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN114691082A
CN114691082A CN202011623080.8A CN202011623080A CN114691082A CN 114691082 A CN114691082 A CN 114691082A CN 202011623080 A CN202011623080 A CN 202011623080A CN 114691082 A CN114691082 A CN 114691082A
Authority
CN
China
Prior art keywords
circuit
input data
operation mode
exponent
bit
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
CN202011623080.8A
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.)
Beijing Simm Computing Technology Co ltd
Original Assignee
Beijing Simm Computing 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 Beijing Simm Computing Technology Co ltd filed Critical Beijing Simm Computing Technology Co ltd
Priority to CN202011623080.8A priority Critical patent/CN114691082A/zh
Publication of CN114691082A publication Critical patent/CN114691082A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Nonlinear Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本公开实施例公开了一种乘法器电路、芯片、电子设备和计算机可读存储介质。其中该乘法器电路包括:计算电路、数据读取电路、格式选择电路以及存储电路;其中所述格式选择电路用于根据格式选择信号确定运算模式;其中,所述运算模式指示输入数据的格式;所述数据读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据;所述计算电路根据所述运算模式和所述输入数据进行乘法运算得到计算结果。上述乘法器电路通过格式选择电路确定输入数据的格式,得到使用一个乘法器电路可以进行多种格式的输入数据的计算,解决了现有技术中的芯片面积浪费的技术问题。

Description

乘法器电路、芯片、电子设备及计算机可读存储介质
技术领域
本公开涉及乘法器领域,尤其涉及一种乘法器电路、芯片、电子设备及计算机可读存储介质。
背景技术
随着科学技术的发展,人类社会正在快速进入智能时代。智能时代的重要特点,就是人们获得数据的种类越来越多,获得数据的量越来越大,而对处理数据的速度要求越来越高。芯片是任务调度的基石,它从根本上决定了人们处理数据的能力。从应用领域来看,芯片主要有两条路线:一条是通用芯片路线,例如CPU(Central Processing Unit)等,它们能提供极大的灵活性,但是在处理特定领域算法时有效算力比较低;另一条是专用芯片路线,例如TPU(Tensor Processing Unit)等,它们在某些特定领域,能发挥较高的有效算力,但是面对灵活多变的比较通用的领域,它们处理能力比较差甚至无法处理。由于智能时代的数据种类繁多且数量巨大,所以要求芯片既具有极高的灵活性,能处理不同领域且日新月异的算法,又具有极强的处理能力,能快速处理极大的且急剧增长的数据量。
在处理器设计中,常常需要设计各种浮点乘法器电路,以满足不同精度和数据格式的浮点运算要求。例如,对于精度要求较高的场景,需要设计32位浮点数的乘法器电路,以满足32位浮点数计算时的精度;而对于精度要求不高的场景,需要涉及16位浮点数的乘法器电路,以满足16位浮点数计算时的精度。因此,现有技术中,传统的乘法器无法用同一个乘法器实现两种精度的乘法,所以会将它们分开设计,从而带来芯片面积的浪费,成本的增加。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
为了解决现有技术中处理核的任务调度不灵活、控制复杂的技术问题,本公开实施例提出如下技术方案:
第一方面,本公开实施例提供一种乘法器电路,包括:
计算电路、数据读取电路、格式选择电路以及存储电路;其中所述格式选择电路用于根据格式选择信号确定运算模式;其中,所述运算模式指示输入数据的格式;所述数据读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据;所述计算电路根据所述运算模式和所述输入数据进行乘法运算得到计算结果。
进一步的,所述数据读取电路包括:
第一输入数据读取电路,用于根据所述运算模式从所述存储电路中读取第一输入数据的符号位、指数位以及尾数位;
第二输入数据读取电路,用于根据所述运算模式从所述存储电路中读取第二输入数据的符号位、指数位以及尾数位。
进一步的,所述数据读取电路,包括:
开关电路,所述开关电路用于根据所述运算模式所指示的数据的格式,确定开关电路中的开关的状态,以通过打开的开关从所述存储电路中读取相应的数据。
进一步的,所述数据读取电路,包括:
符号读取电路、指数读取电路以及尾数读取电路;其中,
所述符号读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的符号位;
所述指数读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的指数位;
所述尾数读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的尾数位。
进一步的,所述计算电路,包括:
符号位计算电路、乘法电路以及加法电路;其中,
所述符号位计算电路,用于根据所述第一输入数据的符号位以及所述第二输入数据的符号位计算输出数据的符号位;
所述乘法电路,用于根据所述运算模式、所述第一输入数据的尾数位以及所述第二输入数据的尾数位计算输出数据的尾数位,并生成指数调整信号;
所述加法电路,用于根据所述运算模式、所述第一输入数据的指数位、所述第二输入数据的指数位以及所述指数调整信号计算输出数据的指数位。
进一步的,所述乘法电路包括:
基础乘法计算电路以及舍入规格化电路;其中,
所述基础乘法计算电路,用于根据所述运算模式所对应的输入数据的尾数的宽度对所述第一数据的尾数位和所述第二数据的尾数位进行乘法计算得到输出数据的初始尾数位;
所述舍入规格化电路,用于根据所述输入数据的位数的宽度对所述初始尾数位进行规格化和舍入操作得到输出数据的尾数位和所述指数调整信号。
进一步的,所述加法电路包括:
基础加法计算电路和指数调整电路;其中,
所述基础加法计算电路,用于根据所述运算模式所对应的输入数据的指数的宽度对所述第一数据的指数位和所述第二数据的指数位进行加法计算得到输出数据的初始指数位;
所述指数调整电路,用于根据所述指数调整信号对所述初始指数位进行调整得到输出数据的指数位。
进一步的,所述符号位计算电路、乘法电路以及加法电路将输出数据的符号位、指数位以及尾数位按顺序存储到所述存储电路中得到所述输出数据。
进一步的,所述计算电路的宽度、数据读取电路和所述存储电路的宽度为所述运算模式指示输入数据的格式中的最大宽度。
第二方面,本公开实施例提供一种浮点数乘法计算方法,包括:
获取运算模式;
根据所述运算模式所对应的输入数据格式获取第一输入数据和第二输入数据;
根据所述运算模式对所述第一输入数据和所述第二数据进行乘法运算得到输出数据。
第三方面,本公开实施例提供一种芯片,包括:至少一个第一方面所述的乘法器电路。
第四方面,本公开实施例提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现前述第二方面中的任一所述的浮点数乘法计算方法。
第五方面,本公开实施例提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述第二方面中的任一所述的浮点数乘法计算方法。
第六方面,本公开实施例提供一种计算机程序产品,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述第二方面中的任一所述的浮点数乘法计算方法。
第七方面,本公开实施例提供一种计算装置,其特征在于,包括所述第三方面中的任一所述的芯片。
本公开实施例公开了一种乘法器电路、芯片、电子设备和计算机可读存储介质。其中该乘法器电路包括:计算电路、数据读取电路、格式选择电路以及存储电路;其中所述格式选择电路用于根据格式选择信号确定运算模式;其中,所述运算模式指示输入数据的格式;所述数据读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据;所述计算电路根据所述运算模式和所述输入数据进行乘法运算得到计算结果。上述乘法器电路通过格式选择电路确定输入数据的格式,得到使用一个乘法器电路可以进行多种格式的输入数据的计算,解决了现有技术中的芯片面积浪费的技术问题。
上述说明仅是本公开技术方案的概述,为了能更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为让本公开的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。
图1a为本公开实施例提供的乘法器电路的结构示意图;
图1b为本公开实施例提供的乘法器电路的结构示例;
图1c为本公开实施例提供的浮点数的存储格式示意图;
图2为本公开实施例提供的乘法电路和加法电路的结构示意图;
图3为本公开实施例提供的为宽度可调的加法计算电路和乘法计算电路的示意图;
图4为本公开实施例提供的本公开实施例还提供的浮点数乘法计算方法的流程图;
图5a为本公开实施例提供的乘法器电路的具体实例示意图;
图5b为本公开实施例提供的乘法器电路进行fp32数据格式的乘法计算的示意图;
图5c为本公开实施例提供的乘法器电路进行fp16数据格式的乘法计算的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1a为本公开实施例提供的乘法器电路的结构示意图。所述乘法器电路100包括:
计算电路101、数据读取电路102、格式选择电路103以及存储电路104;其中,
所述格式选择电路103用于根据格式选择信号确定运算模式;其中,所述运算模式指示输入数据的格式;
所述数据读取电路102,用于根据所述运算模式从所述存储电路104中读取与所述运算模式对应的输入数据;
所述计算电路101根据所述运算模式和所述输入数据进行乘法运算得到计算结果。
所述格式选择电路103接收格式选择信号,所述格式选择信号用于指示计算电路的运算模式,运算模式是指何种输入数据格式的运算,在本公开中所述输入数据格式为浮点数的精度,所述浮点数的精度可以是fp16、fp32或者自定义的任何其他精度。
可选的,所述格式选择电路可以实现为寄存器,寄存器的大小由所述乘法器电路所支持的运算模式的数量确定,如所述乘法器电路支持两种格式的浮点数的乘法运算,则所述寄存器需要1bit,如果所述乘法器电路支持三种格式的浮点数的乘法运算,则所述寄存器至少需要2bit;在该实现方式中,上述格式选择信号用于设置所述格式选择电路中的寄存器的每一位的值,每一个不同的值对应一种预设的运算模式。
所述存储电路104,用于存储乘法运算所需要的两个输入数据以及计算结果。所述数据读取电路,根据运算模式确定需要读取的数据的格式,并从所述存储电路104中读取对应格式的数据作为所述计算电路101的输入数据,所述计算电路101得到输入数据之后进行乘法运算得到计算结果,再写入所述存储电路104。
这样,由于格式选择电路103的存在,使得所述乘法器电路100,可以支持多种格式的输入数据的乘法运算,相较于现有技术中对每种数据格式都需要单独设计乘法器电路的方案,节省了芯片面积。
可选的,所述数据读取电路102包括第一输入数据读取电路以及第二输入数据读取电路,其中:
第一输入数据读取电路,用于根据所述运算模式从所述存储电路中读取第一输入数据的符号位、指数位以及尾数位;
第二输入数据读取电路,用于根据所述运算模式从所述存储电路中读取第二输入数据的符号位、指数位以及尾数位。
可选的,第一输入数据和第二输入数据存储在所述存储电路中的不同区域中,或存储在存储电路中的不同存储单元中。如图1b所示,为所述乘法器电路的一个具体示例。其中存储电路由三个不同的存储单元Reg_a、Reg_b和Reg_c组成,其中Reg_a用于存储第一输入数据a,Reg_b用于存储第二输入数据b,Reg_c用于存储输出数据c。所述第一输入数据读取电路,根据所述运算模式确定所述Reg_a中a的最高位的位置,并将Reg_a中的最低位到最高位之间的数据作为第一输入数据a读出;所述第二输入数据读取电路,根据所述运算模式确定所述Reg_b中b的最高位的位置,并将Reg_b中的最低位到最高位之间的数据作为第二输入数据b读出。浮点数一般被存储为符号位、指数位以及尾数位,如图1c所示,为浮点数的存储格式示意图。其中S表示符号位,E表示指数位,M表示尾数位,一个浮点数可以表示为:X=(-1)s*2E*M。由此可以通过预先定义的每种格式中符号位、指数位以及尾数位的位数来分割输入数据得到输入数据的三个部分。
可选的,如图1b所示,所述数据读取电路102包括符号读取电路Si_adj、指数读取电路Ei_adj以及尾数读取电路Mi_adj;其中,
所述符号读取电路Si_adj,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的符号位;
所述指数读取电路Ei_adj,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的指数位;
所述尾数读取电路Mi_adj,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的尾数位。
可选的,所述符号读取电路Si_adj、指数读取电路Ei_adj以及尾数读取电路Mi_adj的数量可以是1个,即一个符号读取电路分别读取第一输入数据和第二输入数据的符号位,一个指数读取电路分别读取第一输入数据和第二数据数据的指数位,一个尾数读取电路电路分别读取第一输入数据和第二数据数据的尾数位。
可选的,如图1b所示,所述符号读取电路Si_adj、指数读取电路Ei_adj以及尾数读取电路Mi_adj的数量分别为两个,即i=1或2,则第一输入数据由S1_adj,E1_adj,M1_adj读取,第二输入数据由S2_adj,E2_adj,M2_adj读取。以第一输入数据为例,在读取时,S1_adj根据运算模式所指示的数据格式中浮点数的精度确定符号位在Reg_a中的位置,并从该位置读取a的符号位,同样的方式,分别通过E1_adj和M1_adj读取a的指数位和尾数位。
可选的,所述数据读取电路实现为开关电路,所述开关电路用于根据所述运算模式所指示的数据的格式,确定开关电路中的开关的状态,以通过打开的开关从所述存储电路中读取相应的数据。对每种不同格式的数据,通过开通不同数量的开关实现对不同格式的数据的读取。例如所述数据读取电路实现为32位的开关电路,在读取fp32的浮点数时,将所有的开关打开,当读取fp16的浮点数时,仅打开低16位的开关电路。可以理解的,上述数据读取电路中的子电路符号读取电路Si_adj、指数读取电路Ei_adj以及尾数读取电路Mi_adj也可以分别实现为对应位数的开关电路,在此不再赘述。
可选的,如图1b所示,所述计算电路具体包括:
符号位计算电路、乘法电路以及加法电路;其中,
所述符号位计算电路,用于根据所述第一输入数据的符号位以及所述第二输入数据的符号位计算输出数据的符号位;
所述乘法电路,用于根据所述运算模式、所述第一输入数据的尾数位以及所述第二输入数据的尾数位计算输出数据的尾数位,并生成指数调整信号;
所述加法电路,用于根据所述运算模式、所述第一输入数据的指数位、所述第二输入数据的指数位以及所述指数调整信号计算输出数据的指数位。
如图1b所示,所述符号位计算电路为一个异或电路XOR,由于符号位均为1bit,因此通过XOR计算S1_adj获取到的第一输入数据的符号位S1,通过S2_adj获取到的第二输入数据的符号位S2,对S1和S2执行异或运算,即当S1和S2相同时,得到的输出数据的符号位S为0,当S1和S2不同时,得到的输出数据的符号位S为1。其中0表示浮点数为正数,1表示浮点数为负数。
所述乘法电路,计算浮点数的尾数位的乘积。所述乘法电路根据运算模式确定参与计算的尾数位的位数,之后根据所述位数进行乘法运算,并生成指数调整信号。由于乘法的结果可能涉及到进位,因此需要根据乘法电路的计算结果生成指数调整信号以调整加法电路中的得到的指数位。
所述加法电路,计算浮点数的指数位的和值。由于可能涉及到进位,因此所述加法电路还接收所述乘法电路生成的指数调整信号,并根据所述指数调整信号调整所述和值,如需要进位时,将所述和值加上进位的位数。
在本公开中,所述计算电路的宽度、数据读取电路和所述存储电路的宽度为所述运算模式指示输入数据的格式中的最大宽度。所述计算电路、数据读取电路、格式选择电路以及存储电路的宽度,都以所述乘法器要支持的最大精度的浮点数的宽度设计,如乘法器电路支持fp32和fp16的浮点数的乘法,则乘法器中的所有电路都按照能支持fp32的浮点数计算的宽度来设计,如存储电路的宽度设计为32bit,计算电路的宽度也按照能计算32bit的浮点数设计。
在本公开中,所述计算电路中的乘法电路和加法电路,均为宽度可变调整的电路。如图2所示,其中所述乘法电路包括:
基础乘法计算电路201以及舍入规格化电路202;其中,
所述基础乘法计算电路201,用于根据所述运算模式所对应的输入数据的尾数的宽度对所述第一数据的尾数位和所述第二数据的尾数位进行乘法计算得到输出数据的初始尾数位;
所述舍入规格化电路202,用于根据所述输入数据的位数的宽度对所述初始尾数位进行规格化和舍入操作得到输出数据的尾数位和所述指数调整信号。
所述基础乘法计算电路201,首先根据宽度控制信号Adj,确定本次运算的浮点数尾数位宽,所述Adj由运算模式确定,通过格式选择电路或者数据读取电路发送至所述乘法电路;其中的基础乘法计算电路Basic_mul将两个尾数M1和M2相乘,得到初始尾数M_prm,M_prm的宽度是M1(同时也是M2)的宽度的2倍;M_prm被送入舍入规格化电路Round&Norm(此电路同时支持规格数和非规格数);Round&Norm将M_prm进行舍入操作和尾数的规格化,生成输出数据的尾数M及指数调整信号E_adj。
其中,在机器中,为保证浮点数表示的唯一性,浮点数在机器中都是以规格化形式存储的。对于IEEE754标准的浮点数来说,就是尾数必须是1.M的形式。由于在进行上述两个定点小数的尾数相加减运算后,尾数有可能是非规格化形式,为此必须进行规格化操作。规格化操作包括左规和右规两种情况。其中左规操作:将尾数左移,同时指数减值,直至尾数成为1.M的形式。例如,浮点数0.0011*225是非规格化的形式,需进行左规操作,将其尾数左移3位,同时指数减3,就变成1.1100*222规格化形式了。右规操作:将尾数右移1位,同时指数增1,便成为规格化的形式了。要注意的是,右规操作只需将尾数右移一位即可,这种情况出现在尾数的最高位(小数点前一位)运算时出现了进位,使尾数成为10.xxxx或11.xxxx的形式。例如,10.0011*225右规一位后便成为1.00011*226的规格化形式了。
其中,浮点运算在对阶(指将两个浮点数的指数对齐)或右规时,尾数需要右移,被右移出去的位会被丢掉,从而造成运算结果精度的损失。为了减少这种精度损失,可以将一定位数的移出位先保留起来,称为保护位,在规格化后用于舍入处理。IEEE754标准列出了四种可选的舍入处理方法:就近舍入(round to nearest)这是标准列出的默认舍入方式;朝+∞舍入(round toward+∞);朝-∞舍入(round toward-∞);朝0舍入(round toward0)。
自定义的浮点数也遵循上述规格化和舍入操作的规则进行规格化和舍入。
如图2所示,其中所述加法电路包括:
基础加法计算电路203和指数调整电路204;其中,
所述基础加法计算电路203,用于根据所述运算模式所对应的输入数据的指数的宽度对所述第一数据的指数位和所述第二数据的指数位进行加法计算得到输出数据的初始指数位;
所述指数调整电路204,用于根据所述指数调整信号对所述初始指数位进行调整得到输出数据的指数位。
所述基础加法计算电路203,首先根据宽度控制信号Adj,确定本次运算的浮点数指数位宽,所述Adj由运算模式确定,通过格式选择电路或者数据读取电路发送至所述乘法电路;其中的基础加法计算电路Basic_adder将两个指数E1和E2相加,得到初始指数E_prm,E_prm的宽度是E1(同时也是E2)的宽度加1位,因为可能存在进位,E_prm将送入指数调整电路Exp_adj;Exp_adj根据乘法电路201生成的指数调整信号E_adj,将得到的E_prm进行调整,得到输出数据的指数E。
由于加法计算电路和乘法计算电路都是可以调整宽度的,所以其中具体的运算电路及寄存器,均需要按最大可能宽度设计。如加法计算电路中,Basic_adder需要有能满足可能的E的最大宽度个数的加法单元,即W_E_max个,且能够根据Adj控制信号,选择全部或者其中部分单元工作,其输出结果E_prm的宽度也需要满足可能的E的最大宽度且加1位,同时宽度可调整;在乘法计算电路中,Basic_mul需要有能满足可能的M的最大宽度个数的乘法单元,即W_M_max个,且能够根据Adj控制信号,选择全部或者其中部分单元工作,其输出结果M_prm的宽度也需要满足可能的E的最大宽度W_M_max的2倍,同时长度可调整。
如图3所示,为宽度可调的加法计算电路和乘法计算电路的示意图。根据可调整宽度的变化范围,W_E_max和W_M_max的值不同,并且它们的和再加上符号位1位,将超过所支持的最大宽度浮点数的位数,这是与其他现有方案的不同点。例如,乘法器电路同时支持三种宽度的浮点数:标准fp16(即1位符号位、5位指数位和10位尾数位)、标准fp32(即1位符号位、8位指数位和23位尾数位)和自定义fp32(即1位符号位、10位指数位和21位尾数位),则在设计时,使得W_E_max=max(5,8,10)=10;W_M_max=max(10,23,21)=23。
进一步的,在得到输出结果之后,所述符号位计算电路、乘法电路以及加法电路将输出数据的符号位、指数位以及尾数位按顺序存储到所述存储电路中得到所述输出数据。如图1b所示,在所述符号位计算电路、乘法电路以及加法电路得到输出数据的符号位、指数位以及尾数位之后,依次将所述符号位、指数位以及尾数位输出到Reg_c对应的位置上得到输出数据。
上述实施例公开了一种乘法器电路,其中该乘法器电路包括:计算电路、数据读取电路、格式选择电路以及存储电路;其中所述格式选择电路用于根据格式选择信号确定运算模式;其中,所述运算模式指示输入数据的格式;所述数据读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据;所述计算电路根据所述运算模式和所述输入数据进行乘法运算得到计算结果。上述乘法器电路通过格式选择电路确定输入数据的格式,得到使用一个乘法器电路可以进行多种格式的输入数据的计算,解决了现有技术中的芯片面积浪费的技术问题。
进一步的,如图4所示,本公开实施例还提供了一种浮点数乘法计算方法,用于如上述实施例所述的乘法器电路中,包括:
步骤S401,获取运算模式;
步骤S402,根据所述运算模式所对应的输入数据格式获取第一输入数据和第二输入数据;
步骤S403,根据所述运算模式对所述第一输入数据和所述第二数据进行乘法运算得到输出数据。
在步骤S401中,所述乘法器电路的数据格式选择电路获取运算模式的选择信号;
在步骤S402中,所述乘法器电路的数据读取电路根据所述数据格式选择电路所指示的运算模式确定输入数据的格式,之后根据所述输入数据的格式分别获取第一输入数据和所述第二输入数据,其中所述第一输入数据和所述第二输入数据的格式与所述运算模式确定的输入数据的格式相同。
在步骤S403中,所述乘法器电路的计算电路根据所述运算模式确定计算精度,并对所述第一输入数据和所述第二输入数据进行乘法运算得到输出数据。
进一步的,所述步骤S402包括:
所述乘法器电路的第一输入数据读取电路根据所述运算模式从所述存储电路中读取第一输入数据的符号位、指数位以及尾数位;
所述乘法器电路的第二输入数据读取电路根据所述运算模式从所述存储电路中读取第二输入数据的符号位、指数位以及尾数位。
进一步的,所述步骤S402包括:
所述数据读取电路的符号读取电路根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的符号位;
所述数据读取电路的指数读取电路根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的指数位;
所述数据读取电路的尾数读取电路根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的尾数位。
进一步的,所述步骤S403包括:
所述计算电路的符号位计算电路根据所述第一输入数据的符号位以及所述第二输入数据的符号位计算输出数据的符号位;
所述计算电路的乘法电路根据所述运算模式、所述第一输入数据的尾数位以及所述第二输入数据的尾数位计算输出数据的尾数位,并生成指数调整信号;
所述计算电路的加法电路根据所述运算模式、所述第一输入数据的指数位、所述第二输入数据的指数位以及所述指数调整信号计算输出数据的指数位。
进一步的,所述步骤S403包括:
所述乘法电路中的基础乘法计算电路根据所述运算模式所对应的输入数据的尾数的宽度对所述第一数据的尾数位和所述第二数据的尾数位进行乘法计算得到输出数据的初始尾数位;
所述乘法电路中的舍入规格化电路根据所述输入数据的位数的宽度对所述初始尾数位进行规格化和舍入操作得到输出数据的尾数位和所述指数调整信号。
进一步的,所述步骤S403包括:
所述加法电路中的基础加法计算电路根据所述运算模式所对应的输入数据的指数的宽度对所述第一数据的指数位和所述第二数据的指数位进行加法计算得到输出数据的初始指数位;
所述加法电路中的指数调整电路根据所述指数调整信号对所述初始指数位进行调整得到输出数据的指数位。
进一步的,在所述步骤S403之后,还包括:
所述符号位计算电路、乘法电路以及加法电路将输出数据的符号位、指数位以及尾数位按顺序存储到所述存储电路中得到所述输出数据。
图5a为本公开实施例中的乘法器电路的一个示例。如图5a所示,所述乘法器电路500,同时支持fp16和fp32的乘法运算。
寄存器Reg_a、Reg_b和Reg_c的宽度是两种格式浮点数中位数最多的宽度,即32bit。对于乘法器电路使用哪种格式进行乘法运算,由数据格式选择信号Format控制:
当Format=‘0’,数据格式选择电路中保存Format的值,当前运算以fp32格式进行。进行运算时,输入输出数据的格式均为fp32,其中的宽度可调整的乘法计算电路M_adj和宽度可调整加法计算电路A_adj均设置为对应于fp32的尾数和指数进行运算,其电路图如5b所示。此时,Si_adj会按照fp32格式的浮点数,选择Reg_a、Reg_b的最高位即b[31]的数值作为输入数据的符号位的数值,送入符号计算电路XOR进行运算得到输出数据c的符号位的值;Ex_adj则选取Reg_a、Reg_b的b[30:23]的数值作为输入数据的指数,发送至已经配置为8bit运算的宽度可调整加法计算电路进行运算;Mx_adj选择Reg_a、Reg_b的b[22:0]的数值作为输入数据的尾数,发送至已经配置为23bit运算的宽度可调整乘法计算电路进行运算。乘法计算电路计算得到输出数据的尾数位的值以及指数调整信号,上述加法计算电路根据所述指数调整信号对加法计算的结果进行调整得到输出数据的指数位的值。最终,计算电路按照符号位、指数位以及尾数位的顺序,将符号计算电路、加法计算电路以及乘法计算电路得到的值输出至Reg_c中得到乘法运算的结果。这样就实现了fp32的浮点乘法运算。
当Format=‘1’,数据格式选择电路中保存Format的值,当前运算以fp16格式进行。进行运算时,输入输出数据的格式均为fp16,其中的宽度可调整的乘法计算电路M_adj和宽度可调整加法计算电路A_adj均设置为对应于fp16的尾数和指数进行运算,其电路图5c所示。此时,Si_adj会按照fp16格式的浮点数,选择Reg_a、Reg_b的最高位即b[15]的数值作为输入数据的符号位的值,送入符号计算电路XOR进行运算得到输出数据c的符号位的值;Ex_adj则选取Reg_a、Reg_b的b[14:10]的数值作为输入数据的指数,发送至已经配置为5bit运算的宽度可调整加法计算电路进行运算;Mx_adj选择Reg_a、Reg_b的b[9:0]的数值作为输入数据的尾数,发送至已经配置为10bit运算的宽度可调整乘法计算电路进行运算。乘法计算电路计算得到输出数据的尾数位的值以及指数调整信号,上述加法计算电路根据所述指数调整信号对加法计算的结果进行调整得到输出数据的指数位的值。最终,计算电路按照符号位、指数位以及尾数位的顺序,将符号计算电路、加法计算电路以及乘法计算电路得到的值输出至Reg_c中得到乘法运算的结果。这样就实现了fp16的浮点乘法运算。
可以理解的,所述乘法器电路还可以支持更多精度的浮点数计算,此时需要定义更多的Format的值,每一个Format对应一种数据格式,每一种数据格式对应一种数据读取电路的配置、计算电路的配置,以在单个乘法器电路中支持多种精度的浮点数的乘法计算。
本公开还提供一种芯片,包括至少一个上述实施例中所述的乘法器电路。
本公开实施例还提供一种电子设备,包括:存储器,用于存储计算机可读指令;以及一个或多个处理器,用于运行所述计算机可读指令,使得所述处理器运行时实现实施例中的任一所述的浮点数乘法计算方法。
本公开实施例还提供一种非暂态计算机可读存储介质,其特征在于,该非暂态计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行前述实施例中的任一所述的浮点数乘法计算方法。
本公开实施例还提供一种计算机程序产品,其中,其特征在于:包括计算机指令,当所述计算机指令被计算设备执行时,所述计算设备可以执行前述实施例中的任一所述的浮点数乘法计算方法。
本公开实施例还提供一种计算装置,其特征在于,包括所述实施例中的任一所述的芯片。
本公开附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

Claims (10)

1.一种乘法器电路,其特征在于,包括:
计算电路、数据读取电路、格式选择电路以及存储电路;
其中所述格式选择电路用于根据格式选择信号确定运算模式;其中,所述运算模式指示输入数据的格式;
所述数据读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据;
所述计算电路根据所述运算模式和所述输入数据进行乘法运算得到计算结果。
2.如权利要求1所述的乘法器电路,其特征在于,所述数据读取电路包括:
第一输入数据读取电路,用于根据所述运算模式从所述存储电路中读取第一输入数据的符号位、指数位以及尾数位;
第二输入数据读取电路,用于根据所述运算模式从所述存储电路中读取第二输入数据的符号位、指数位以及尾数位。
3.如权利要求1或2中任一项所述的乘法器电路,其特征在于,所述数据读取电路,包括:
开关电路,所述开关电路用于根据所述运算模式所指示的数据的格式,确定开关电路中的开关的状态,以通过打开的开关从所述存储电路中读取相应的数据。
4.如权利要求1-3中任一项所述的乘法器电路,其特征在于,所述数据读取电路,包括:
符号读取电路、指数读取电路以及尾数读取电路;其中,
所述符号读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的符号位;
所述指数读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的指数位;
所述尾数读取电路,用于根据所述运算模式从所述存储电路中读取与所述运算模式对应的输入数据的尾数位。
5.如权利要求2-4中任一项所述的乘法器电路,其特征在于,所述计算电路,包括:
符号位计算电路、乘法电路以及加法电路;其中,
所述符号位计算电路,用于根据所述第一输入数据的符号位以及所述第二输入数据的符号位计算输出数据的符号位;
所述乘法电路,用于根据所述运算模式、所述第一输入数据的尾数位以及所述第二输入数据的尾数位计算输出数据的尾数位,并生成指数调整信号;
所述加法电路,用于根据所述运算模式、所述第一输入数据的指数位、所述第二输入数据的指数位以及所述指数调整信号计算输出数据的指数位。
6.如权利要求5所述的乘法器电路,其特征在于,所述乘法电路包括:
基础乘法计算电路以及舍入规格化电路;其中,
所述基础乘法计算电路,用于根据所述运算模式所对应的输入数据的尾数的宽度对所述第一数据的尾数位和所述第二数据的尾数位进行乘法计算得到输出数据的初始尾数位;
所述舍入规格化电路,用于根据所述输入数据的位数的宽度对所述初始尾数位进行规格化和舍入操作得到输出数据的尾数位和所述指数调整信号。
7.如权利要求5或6所述的乘法器电路,其特征在于,所述加法电路包括:
基础加法计算电路和指数调整电路;其中,
所述基础加法计算电路,用于根据所述运算模式所对应的输入数据的指数的宽度对所述第一数据的指数位和所述第二数据的指数位进行加法计算得到输出数据的初始指数位;
所述指数调整电路,用于根据所述指数调整信号对所述初始指数位进行调整得到输出数据的指数位。
8.如权利要求5-7中任一项所述的乘法器电路,其特征在于:
所述符号位计算电路、乘法电路以及加法电路将输出数据的符号位、指数位以及尾数位按顺序存储到所述存储电路中得到所述输出数据。
9.如权利要求1-8中任一项所述的乘法器电路,其特征在于,所述计算电路的宽度、数据读取电路和所述存储电路的宽度为所述运算模式指示输入数据的格式中的最大宽度。
10.一种浮点数乘法计算方法,用于如权利要求1-9任一项所述的乘法器电路中,其特征在于,包括:
获取运算模式;
根据所述运算模式所对应的输入数据格式获取第一输入数据和第二输入数据;
根据所述运算模式对所述第一输入数据和所述第二数据进行乘法运算得到输出数据。
CN202011623080.8A 2020-12-31 2020-12-31 乘法器电路、芯片、电子设备及计算机可读存储介质 Pending CN114691082A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011623080.8A CN114691082A (zh) 2020-12-31 2020-12-31 乘法器电路、芯片、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011623080.8A CN114691082A (zh) 2020-12-31 2020-12-31 乘法器电路、芯片、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114691082A true CN114691082A (zh) 2022-07-01

Family

ID=82135232

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011623080.8A Pending CN114691082A (zh) 2020-12-31 2020-12-31 乘法器电路、芯片、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN114691082A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115034163A (zh) * 2022-07-15 2022-09-09 厦门大学 一种支持两种数据格式切换的浮点数乘加计算装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115034163A (zh) * 2022-07-15 2022-09-09 厦门大学 一种支持两种数据格式切换的浮点数乘加计算装置

Similar Documents

Publication Publication Date Title
KR100955557B1 (ko) 선택가능 준정밀도를 가진 부동―소수점 프로세서
US6697832B1 (en) Floating-point processor with improved intermediate result handling
CN105468331B (zh) 独立的浮点转换单元
US7346643B1 (en) Processor with improved accuracy for multiply-add operations
EP1857925B1 (en) Method and apparatus for decimal number multiplication using hardware for binary number operations
CN104899004A (zh) 一种用于将浮点操作数相乘的数据处理装置和方法
US5111421A (en) System for performing addition and subtraction of signed magnitude floating point binary numbers
Hormigo et al. Measuring improvement when using HUB formats to implement floating-point systems under round-to-nearest
CN116643718B (zh) 一种流水线结构的浮点融合乘加装置、方法及处理器
CN114691082A (zh) 乘法器电路、芯片、电子设备及计算机可读存储介质
KR20170138143A (ko) 단일 곱셈-누산 방법 및 장치
CN106997284B (zh) 实现浮点运算操作的方法和装置
CN113625989A (zh) 数据运算装置、方法、电子设备及存储介质
Bhoyar et al. Design and implementation of goldschmidts algorithm for floating point division and square root
Boldo et al. Some functions computable with a fused-mac
JP6646350B2 (ja) 様々な数値フォーマットのデータを用いてデータに基づく関数モデルを計算するためのモデル計算ユニット、および制御装置
CN108153513B (zh) 前导零预测
EP0738959A1 (en) Method and apparatus for finding arctangents
Shirke et al. Implementation of IEEE 754 compliant single precision floating-point adder unit supporting denormal inputs on Xilinx FPGA
CN114860193A (zh) 一种用于计算Power函数的硬件运算电路及数据处理方法
KR101922462B1 (ko) 데이터 처리장치 및 이진수에 대해 시프트 기능을 수행하는 방법
Pham et al. A variable-latency floating-point division in association with predicted quotient and fixed remainder
Iyer et al. Generalised Algorithm for Multiplying Binary Numbers Via Vedic Mathematics
EP2884403A1 (en) Apparatus and method for calculating exponentiation operations and root extraction
KR20230015844A (ko) 극소 검출

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