CN112579519B - 数据运算电路和处理芯片 - Google Patents
数据运算电路和处理芯片 Download PDFInfo
- Publication number
- CN112579519B CN112579519B CN202110223556.7A CN202110223556A CN112579519B CN 112579519 B CN112579519 B CN 112579519B CN 202110223556 A CN202110223556 A CN 202110223556A CN 112579519 B CN112579519 B CN 112579519B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- selection unit
- floating point
- exponent
- 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.)
- Active
Links
- 238000004364 calculation method Methods 0.000 claims description 15
- 238000000034 method Methods 0.000 abstract description 45
- 238000007792 addition Methods 0.000 description 9
- 238000013523 data management Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 229910002056 binary alloy Inorganic materials 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- 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/3001—Arithmetic instructions
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
本申请提供一种数据运算电路和处理芯片,该数据运算电路既可以使用整个浮点运算电路处理浮点数据,又可以根据需要使用浮点运算电路中的部分电路单元处理整数数据;基于此,当SIMD指令面对混合处理浮点数据和整数数据的需求,该数据运算电路通过电路单元的复用即可完成两种数据类型的混合处理,而针对仅处理整数数据或浮点数据的SIMD指令,该数据运算电路也可以通过使用整个浮点运算电路处理浮点数据,或者仅使用浮点运算电路中的部分电路单元处理整数数据,该数据运算电路既支持当前SIMD指令,又支持混合数据类型并行处理,提高了数据运算效率,并且由于该数据运算电路不需要设置单独的整数运算电路,基于该数据运算电路可以减小处理芯片的面积。
Description
技术领域
本申请涉及数据运算技术领域,尤其是涉及一种数据运算电路和处理芯片。
背景技术
在数据运算领域,为了提高计算机的数据处理效率,会采用SIMD(SingleInstruction Multiple Data,单指令多数据)技术增加单位时间内被处理的数据量。
SIMD技术允许一个指令处理多组数据,例如在一条SIMD的整数加法指令中同时计算若干组整数加法运算,从而增加单位时间内被处理的数据量;但在同一个SIMD指令处理多组数据时,要求这些数据具有相同的数据类型,例如这些数据均为整数数据或者浮点数据。在实际的数据运算过程中,由于会涉及到不同数据类型的数据,因此需要在计算机中为不同数据类型的数据运算设计不同的数据运算电路,例如需要分别为整数数据运算和浮点数据运算设计独立的整数数据运算电路和浮点数据运算电路,通过整数数据运算电路运算数据类型为整数数据的SIMD指令,通过浮点数据运算电路运算数据类型为浮点数据的SIMD指令,导致处理芯片面积较大。
所以,现有支持SIMD技术的处理芯片存在需要为不同数据类型分别设计不同的数据运算电路所导致的处理芯片面积较大的技术问题。
发明内容
本申请实施例提供一种数据运算电路和处理芯片,用于缓解当前支持SIMD技术的处理芯片存在面积较大的技术问题。
本申请实施例提供一种数据运算电路,该数据运算电路包括:
数据接收模块,用于基于待执行SIMD指令接收待运算数据,所述待运算数据的数据类型包括整数数据、浮点数据以及混合数据中的一种;
浮点数据运算模块,包括整数数据运算模块以及非整数数据运算模块;
控制模块,用于识别所述待运算数据的数据类型,并根据所述待运算数据的数据类型调用所述整数数据运算模块和所述非整数数据运算模块中的至少一个,运算所述待运算数据输出运算结果。
在一种实施例中,所述控制模块具体用于当所述数据类型包括混合数据时,调用所述整数数据运算模块运算所述待运算数据中的整数数据,调用所述整数数据运算模块和所述非整数数据运算模块运算所述待运算数据中的浮点数据。
在一种实施例中,所述浮点数据运算模块包括:
符号运算模块;
指数运算模块,与所述控制模块连接,所述指数运算模块与所述数据接收模块连接,所述指数运算模块用于在待运算数据的数据类型包括浮点数据和混合数据中的一种时,接收所述数据接收模块发送的浮点数据并运算所述浮点数据的指数,并将指数运算结果传输至控制模块;
有效数字运算模块,与所述控制模块连接,所述有效数字运算模块与所述数据接收模块连接,所述有效数字运算模块用于在待运算数据的数据类型包括浮点数据和混合数据中的一种时,接收所述数据接收模块发送的浮点数据并运算所述浮点数据的有效数字,并将有效数字运算结果传输至控制模块;
其中,所述控制模块用于根据所述指数运算结果和所述有效数字运算结果,以及指数阈值和有效数字阈值,调整所述浮点数据的指数和有效数字运算结果。
在一种实施例中,所述指数运算模块包括:
第一数学逻辑单元,与所述数据接收模块连接,所述第一数学逻辑单元与所述控制模块连接,所述第一数学逻辑单元用于处理所述指数得到第一处理结果,并将所述第一处理结果发送至控制模块;
第一选择单元,与数据接收模块连接,所述第一选择单元与所述控制模块连接;
其中,所述控制模块用于在第一处理结果大于指数阈值时控制第一选择单元输出所述待运算数据的指数的最大值,并发出第一调整信号。
在一种实施例中,所述有效数字运算模块包括:
第二选择单元,与所述数据接收模块连接,所述第二选择单元与所述控制模块连接,所述第二选择单元用于输出所述待运算数据中指数最小的第一有效数字;
第三选择单元,与所述控制模块连接,用于输出所述待运算数据中指数最大的第二有效数字;
第一有效数字调整单元,与所述第二选择单元连接;所述第一有效数字调整模块用于在接收到所述第一调整信号时,调整所述待运算数据中指数最小的第一有效数字得到第三有效数字;
第二数学逻辑单元,与所述第一有效数字调整单元连接,所述第二数学逻辑单元与所述第三选择单元连接,所述第二数学逻辑单元用于接收所述第一有效数字调整单元和所述第三选择单元输出的第三有效数字和第二有效数字,并处理所述第三有效数字和第二有效数字得到有效数字运算结果,并在所述有效数字运算结果大于或者等于有效数字阈值时,将所述有效数字运算结果返回至所述控制模块;
其中,所述控制模块用于在接收到所述有效数字运算结果时,发出第二调整信号和第三调整信号。
在一种实施例中,所述浮点数据运算模块还包括舍入模块,所述舍入模块用于在指数运算模块和有效数字运算模块的指数运算结果和有效数字运算结果不符合预设条件时,返回指数和有效数字运算结果。
在一种实施例中,所述指数运算模块还包括第四选择单元和指数调整单元,所述有效数字运算模块还包括第五选择单元和第二有效数字调整单元,其中:
所述第四选择单元用于接收所述第一选择单元输出的指数和所述舍入模块返回的指数,并根据所述控制模块的指令选择其中一个输出;
所述指数调整单元用于在接收到所述控制模块发出的所述第二调整信号后,调整所述指数;
所述第五选择单元用于接收所述第二数学逻辑单元输出的有效数字运算结果和所述舍入模块返回的有效数字运算结果,并根据所述控制模块的指令选择其中一个输出;
所述第二有效数字调整单元用于在接收到所述控制模块发出的第三调整信号后,调整有效数字运算结果。
在一种实施例中,所述浮点数据运算模块还包括:
第六选择单元,与第一有效数字调整单元连接,所述第六选择单元与所述数据接收模块连接,所述第六选择单元与所述第二数学逻辑单元连接,所述第六选择单元用于选择整数数据和浮点数据中的一个输出;
第七选择单元,与第三选择单元连接,所述第七选择单元与所述数据接收模块连接,所述第七选择单元与第二数学逻辑单元连接,所述第七选择单元用于选择整数数据和浮点数据中的一个输出,且第六选择单元和第七选择单元输出的待运算数据的数据类型相同。
在一种实施例中,所述浮点数据运算模块还包括:
第八选择单元,与所述第二数学逻辑单元连接,所述第八选择单元与所述控制模块连接,所述第八选择单元用于在控制模块的控制下选择所述整数数据的运算结果的第一部分和所述浮点数据的符号中的一个输出;
第九选择单元,与所述第二数学逻辑单元连接,所述第九选择单元与所述控制模块连接,所述第九选择单元用于在控制模块的控制下选择所述整数数据的运算结果的第二部分和所述浮点数据的指数中的一个输出;
第十选择单元,与所述第二数学逻辑单元连接,所述第十选择单元与所述控制模块连接,所述第十选择单元用于在控制模块的控制下选择所述整数数据的运算结果的第三部分和所述浮点数据的有效数字运算结果中的一个输出。
在一种实施例中,所述数据接收模块包括寄存器,所述寄存器用于存储所述待运算数据的数据类型,所述控制模块与所述寄存器连接,用于识别所述寄存器中的所述待运算数据的数据类型,并根据所述待运算数据的数据类型调用所述整数数据运算模块和所述非整数数据运算模块中的至少一个,运算所述待运算数据输出运算结果。
同时,本申请实施例提供一种处理芯片,该处理芯片包括上述实施例中任一所述的数据运算电路。
有益效果:本申请提供一种数据运算电路和处理芯片,该数据运算电路既可以使用整个浮点运算电路处理浮点数据,又可以根据需要使用浮点运算电路中的部分电路单元处理整数数据;基于此,当SIMD指令面对混合处理浮点数据和整数数据的需求,该数据运算电路通过电路单元的复用即可完成两种数据类型的混合处理,而针对仅处理整数数据或浮点数据的SIMD指令,该数据运算电路也可以通过使用整个浮点运算电路处理浮点数据,或者仅使用浮点运算电路中的部分电路单元处理整数数据,该数据运算电路既支持当前SIMD指令,又支持混合数据类型并行处理,提高了数据运算效率,并且由于该数据运算电路不需要设置单独的整数运算电路,基于该数据运算电路可以减小处理芯片的面积。
附图说明
下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其它有益效果显而易见。
图1为现有数据运算电路的数据处理过程的示意图。
图2为本申请实施例提供的数据运算电路的一种示意图。
图3为本申请实施例提供的浮点数据的二进制表示方式的一种示意图。
图4为本申请实施例提供的数据运算电路的另一种示意图。
图5为本申请实施例提供的寄存器的一种示意图。
图6为本申请实施例提供的数据运算电路的数据处理过程的一种示意图。
图7为本申请实施例提供的数据管理方法的一种流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
现有的SIMD技术中,SIMD指令在处理多组数据时,只能处理相同数据类型的数据。
如图1所示,处理芯片进行整数数据的加法运算:即1+6=7、4+3=7、-2+2=0和5+0=5,该过程通过处理芯片中的整数运算电路进行。但如果需要处理其他数据类型的数据,则需要采用其他数据类型的运算电路进行,例如在处理浮点数据的运算时,需要通过另外一条SIMD指令,且采用浮点运算电路进行;即在处理芯片中需要分开设置整数运算电路、浮点运算电路,导致处理芯片的面积较大,且在进行整数数据和浮点数据的运算时,需要采用至少两个SIMD指令分别进行整数数据和浮点数据的计算,在一个SIMD指令执行完成后执行另一个SIMD指令,数据处理的效率较低。
即现有处理芯片存在不同数据类型的数据需要采用不同的数据运算电路,导致处理芯片面积较大的技术问题,以及数据处理过程中在一个指令对应的数据处理执行完成后执行另一个指令对应的数据处理,导致数据处理的效率较低的技术问题。
本申请实施例针对上述技术问题,提出了一种数据运算电路和处理芯片。
如图2所示,本申请实施例提供的数据运算电路包括:
数据接收模块11,用于基于待执行SIMD指令接收待运算数据,所述待运算数据的数据类型包括整数数据、浮点数据以及混合数据中的一种;
浮点数据运算模块13,包括整数数据运算模块14以及非整数数据运算模块15;
控制模块12,用于识别所述待运算数据的数据类型,并根据所述待运算数据的数据类型调用所述整数数据运算模块14和所述非整数数据运算模块15中的至少一个,运算所述待运算数据输出运算结果。
本申请实施例提供的数据运算电路既支持当前SIMD指令,又支持混合数据类型并行处理,提高了数据运算效率,并且由于该数据运算电路不需要设置单独的整数运算电路,减小了处理芯片面积。
在本申请实施例中,在阐述数据类型时,整数数据是指整数数据类型,浮点数据是指浮点数据类型,混合数据是指包括整数数据类型和浮点数据类型的数据类型;在阐述待运算数据时,整数数据指整数数据类型的数据,浮点数据指浮点数据类型的数据,混合数据是指同一SIMD指令处理的对象中包括整数数据类型和浮点数据类型的数据。
在一种实施例中,在数据的输入过程中,不同数据类型的待运算数据在存储和发送的过程中采用的表示方式不同,例如浮点数据需要采用32bit(比特位)来分别表示符号、指数和有效数字,而整数并不需要指数表示,因此,在待运算数据的输入过程中需采用不同的输入方式输入待运算数据,数据运算电路需要设置多个输入模块导致处理芯片的复杂度较高。针对这个技术问题,本申请在一些实施例中,将不同的数据类型采用同种表示方式来进行表示,如将整数也采用32比特位进行表示;其中,整数的32比特位中各比特位所代表的意义可能与浮点数据中各比特位所表示的意义不同。
由于不同数据类型的数据采用相同的比特位来表示,不同数据类型的数据可以采用相同的数据输入方式,相应地,后续的数据处理模块在处理待运算数据时,会根据待运算数据的类型进行相应的处理,使得输出的数据是相同类型的数据,从而可以有效降低数据输出错误的可能性。
在一种实施例中,所述控制模块具体用于当所述数据类型包括混合数据时,调用所述整数数据运算模块运算所述待运算数据中的整数数据,调用所述整数数据运算模块和所述非整数数据运算模块运算所述待运算数据中的浮点数据。
在一种实施例中,当待运算数据为浮点数据或者混合数据时,采用浮点数据运算模块处理该浮点数据、以及混合数据中的浮点数据,该浮点数据运算模块包括:
符号运算模块;
指数运算模块,与所述控制模块连接,所述指数运算模块与所述数据接收模块连接,所述指数运算模块用于在所述待运算数据的数据类型包括浮点数据和混合数据中的一种时,接收所述数据接收模块发送的浮点数据并运算所述浮点数据的指数,并将指数运算结果传输至控制模块;
有效数字运算模块,与所述控制模块连接,所述有效数字运算模块与所述数据接收模块连接,所述有效数字运算模块用于运算在所述待运算数据的数据类型包括浮点数据和混合数据中的一种时,接收所述数据接收模块发送的浮点数据并运算所述浮点数据的有效数字,并将有效数字运算结果传输至控制模块;
其中,所述控制模块用于根据所述指数运算结果和所述有效数字运算结果,以及指数阈值和有效数字阈值,调整所述浮点数据的指数和有效数字运算结果。
其中,在运算浮点数据的过程中,对于指数,仅需要输出两个浮点数据中的一个浮点数据的指数,而对于有效数字,则需要输出两个浮点数据的有效数字运算结果,因此,在需要根据指数运算结果和有效数字运算结果进行调整时,控制模块调整的是输出的指数和有效数字运算结果,而不调整输出的指数运算结果。
其中,在运算浮点数据的过程中,运算两个浮点数据的指数得到指数运算结果,运算两个浮点数据的有效数字得到有效数字运算结果,在指数运算结果和有效数字运算结果不符合浮点数据的二进制表示方式时,调整浮点数据的指数和有效数字运算结果。
例如,当浮点数据的有效数字阈值为2,且在两个有效数字相加得到的运算结果大于2时,需要调整指数和有效数字运算结果,使得有效数字运算结果落入大于1且小于2的范围,从而使得输出的运算结果符合浮点数据的表示方式。
如图3所示,浮点数据的二进制表示方式中包含一个符号位,若干指数位,若干有效数字位。使用符号位表示符号S(Sign),使用指数位表示指数E(Exponent),使用有效数字位表示有效数字M(Fraction或者Mantissa)。按照图3中从右向左的方向来确定比特位的位数,即从右向左比特位的位数依次为0比特位至31比特位,共32比特位,第31比特位为符号Sign,第30至23比特位(共8位)为指数Exponent,第22比特位至第0比特位(共23位)为有效数字Fraction。
具体的,指数位表示的十进制指数值的中间值为127,指数位所代表的十进制指数值需要减去127后,得到实际的十进制指数值,在有效数字位中省略了一个比特位,每个有效数字位前均需要加1后,得到实际的十进制有效数字位,即每个有效数字位在第22比特位前存在一个1。浮点数据的十进制数值由S、E、M决定,具体的,为(-1)S*M*2E。
以图3表示的浮点数据为例,浮点数据的符号S为0,指数E为(0*27+1*26+1*25+1*24+1*23+1*22+0*21+0*20)-127=124-127=-3,有效数字M为1+(0*2-1+1*2-2+0*2-3+0*2-4+0*2-5+0*2-6+0*2-7+0*2-8+0*2-9+0*2-10+0*2-11 +0*2-12+0*2-13+0*2-14+0*2-15+0*2-16+0*2-17+0*2-18+0*2-19+0*2-20+0*2-21+0*2-22+0*2-23)=1.25,则该浮点数据的十进制数值为(-1)0*1.25*2-3=0.15625。在下述实施例中,浮点数据均以上述方式进行表示,不再详细说明各数据中的浮点数据的二进制和十进制的转换过程。
在一种实施例中,所述指数运算模块包括:
第一数学逻辑单元,与所述数据接收模块连接,所述第一数学逻辑单元与所述控制模块连接,所述第一数学逻辑单元用于处理所述指数得到第一处理结果,并将所述第一处理结果发送至控制模块;
第一选择单元,与所述数据接收模块连接,所述第一选择单元与所述控制模块连接;
其中,所述控制模块用于在第一处理结果大于指数阈值时控制第一选择单元输出待运算数据的指数的最大值,并发出第一调整信号。
具体的,在浮点数据的运算过程中,浮点数据的十进制数值会存在指数表示部分,而在指数的运算过程中需要保持两个浮点数据的指数数值相同,因此,在本申请的一个实施例中,通过为数据运算电路设置第一数学逻辑单元,使得第一数学逻辑单元对第一待运算数据中的各浮点数据的指数进行运算。
例如待运算数据中存在两个浮点数据,其中一个浮点数据的指数为1,另一个浮点数据的指数为2,则需要选择其中一个浮点数据的指数作为运算结果的指数,并对另一个浮点数据的指数进行调整。例如选择指数2作为运算结果的指数,因此需要将指数为1的浮点数据的指数进行调整,相应的该浮点数据的有效数字也要做相应的调整,使得该浮点数据保持不变,此时可以通过控制模块发出第一调整信号,控制有效数字进行调整。
在一种实施例中,本申请涉及的指数阈值可以为零。那么上述的控制模块在第一处理结果大于指数阈值时控制第一选择单元输出待运算数据的指数的最大值,是指在第一处理结果也就是两个浮点数据的指数差大于0时需要调整浮点数据的指数,从而便于计算。对应的,控制模块在第一处理结果小于指数阈值时控制第一选择单元输出待运算数据的指数的最大值,是指在第一处理结果也就是两个浮点数据的指数差小于0时需要调整浮点数据的指数,从而便于计算。
在一种实施例中,所述指数运算模块还包括指数差值存储单元,所述指数差值存储单元与所述第一数学逻辑单元连接,所述指数差值存储单元与所述控制模块连接。其中,在第一数学逻辑单元处理指数得到第一处理结果后,可以将第一处理结果传输到指数差值存储单元,从而使得指数差值存储单元将第一处理结果传输至控制模块。
本实施例中将第一数学逻辑单元和指数差值存储单元分开设置,使得数据在处理和存储时分开,避免数据紊乱。但在其他实施例中,也可以控制数据经过第一数学逻辑单元的处理后,直接发送至控制模块,本申请实施例不限于此。
在一种实施例中,所述有效数字运算模块包括:
第二选择单元,与所述数据接收模块连接,所述第二选择单元与所述控制模块连接,所述第二选择单元用于输出所述待运算数据中指数最小的第一有效数字;
第三选择单元,与所述控制模块连接,用于选择输出待运算数据中指数最大的第二有效数字;
第一有效数字调整单元,与所述第二选择单元连接;所述第一有效数字调整模块用于在接收到第一调整信号时,调整所述待运算数据中指数最小的第一有效数字得到第三有效数字;
第二数学逻辑单元,与所述第一有效数字调整单元连接,所述第二数学逻辑单元与所述第三选择单元连接,所述第二数学逻辑单元用于接收所述第一有效数字调整单元和第三选择单元输出的第三有效数字和第二有效数字,并处理所述第三有效数字和第二有效数字得到有效数字运算结果,并在所述有效数字运算结果大于或者等于有效数字阈值时,将有效数字运算结果返回至控制模块;
其中,所述控制模块用于在接收到有效数字运算结果时,发出第二调整信号和第三调整信号。
具体的,在待运算数据包括浮点数据时,在浮点数据的指数运算的同时,会进行浮点数据的有效数字的运算。由上述实施例可知,在指数的运算过程中,会存在需要调整指数的情况。如当第一选择单元输出指数的最大值时,需要为指数为最小值的浮点数据增加指数,此时需要调整指数最小的有效数字,以使得该浮点数据的数值保持不变,因此,会通过第一有效数字调整单元对该浮点数据的有效数字进行调整。
例如指数为1的浮点数据的指数输出为2,则第一有效数字调整单元在处理该浮点数据时,调整有效数字使其右移,从而使得该浮点数据的数值保持不变,而指数最大的浮点数据的指数未变化,因此可以直接通过第三选择单元输出指数最大的浮点数据的有效数字,使得第二数学逻辑单元在接收到第一有效数字调整单元和第三选择单元分别输出的第三有效数字和第二有效数字后,利用第二数学逻辑单元计算第三有效数字和第二有效数字。
在涉及两个浮点数据的加法运算时,第三有效数字加上第二有效数字得到有效数字运算结果,例如1.1+1.2=2.3。由于浮点数据的表示方式的限制,该有效数字运算结果超过了有效数字阈值2,则需要调整该有效数字运算结果和有效数字运算结果对应的指数,从而使得有效数字运算结果处于大于1小于2的范围内,且浮点数据的数值不变。
在上述实施例中,当待运算数据的两个浮点数据的指数不同时,需要调整对应的有效数字;而在待运算数据的两个浮点数据的指数相同时,控制第一有效数字调整单元直接输出有效数字,而不对有效数字进行调整。
在上述实施例中,可设置第二选择单元选择待运算数据中指数最小的有效数字,第三选择单元选择待运算数据中指数最大的有效数字,但也可设置第二选择单元选择待运算数据中指数最大的有效数字,第三选择单元选择待运算数据中指数最小的有效数字,相应的调整第一有效数字调整单元的设置位置。
在上述实施例中,本申请可设置第三有效数字和第二有效数字的有效数字运算结果大于有效数字阈值,也可以设置有效数字运算结果小于或者等于有效数字阈值。例如设置有效数字阈值为1,在有效数字运算结果小于1时,需要对有效数字运算结果进行调整,同时对指数进行调整。
在上述实施例中,有效数字运算模块包括第二数学逻辑单元,在整数数据运算模块包括第二数学逻辑单元时,整数数据运算模块与有效数字运算模块复用第二数学逻辑单元实现不同数据类型的数据运算,即在数据运算电路运算整数数据时,采用第二数学逻辑单元运算整数数据,在数据运算电路运算浮点数据时,采用第二数学逻辑单元运算浮点数据中的有效数字。
本申请实施例中,有效数字运算模块与整数数据运算模块的关系可以是有效数字运算模块包括整数数据运算模块,例如整数数据运算模块为第二数学逻辑单元,有效数字运算模块包括第二选择单元、第三选择单元、第一有效数字调整单元和第二数学逻辑单元;有效数字运算模块与整数数据运算模块的关系也可以是有效数字运算模块与整数数据运算模块中具有部分相同的模块和部分不相同的模块,例如整数数据运算模块包括第二数学逻辑单元和第八选择单元、有效数字运算模块包括第二选择单元、第三选择单元、第一有效数字调整单元和第二数学逻辑单元。
在选择指数和得出有效数字运算结果后,在有效数字的右移过程中,可能会存在数据的丢失,基于此,一种实施例中,浮点数据运算模块还包括舍入模块,所述舍入模块用于在指数运算结果和有效数字运算结果不符合预设条件时,返回指数和有效数字运算结果。预设条件包括有效数字运算结果的精度不符合浮点数据的有效数字的精度。通过设置舍入模块以使得数据的精度达到要求,且使得运算结果的数值不出现变化。可选的,在选择指数和得出有效数字运算结果后,舍入模块可以返回指数和有效数字运算结果,使得控制模块对指数和有效数字运算结果进行相应的处理,从而使得数据更准确。
在一种实施例中,所述指数运算模块还包括第四选择单元和指数调整单元,所述有效数字运算模块还包括第五选择单元和第二有效数字调整单元,其中:
所述第四选择单元用于接收所述第一选择单元输出的指数和所述舍入模块返回的指数,并根据所述控制模块的指令选择其中一个输出;
所述指数调整单元用于在接收到所述控制模块发出的所述第二调整信号后,调整所述指数;
所述第五选择单元用于接收所述第二数学逻辑单元输出的有效数字运算结果和所述舍入模块返回的有效数字运算结果,并根据所述控制模块的指令选择其中一个输出;
所述第二有效数字调整单元用于在接收到所述控制模块发出的第三调整信号后,调整有效数字运算结果。
在一种实施例中,第一选择单元与第四选择单元相连接,因此在第一选择单元输出指数后,第四选择单元输出对应的指数,第五选择单元输出有效数字运算结果。在第五选择单元输出的有效数字运算结果大于2或者小于1时,通过第二有效数字调整单元调整有效数字运算结果,并通过指数调整单元调整对应的指数,使得有效数字运算结果符合浮点数据的表示方式。在舍入模块返回指数和有效数字运算结果时,通过指数调整单元和第二有效数字调整单元调整指数和有效数字运算结果,从而使得输出的数值更加准确。
在一种实施例中,所述浮点数据运算模块还包括:
第六选择单元,与第一有效数字调整单元连接,所述第六选择单元与所述数据接收模块连接,所述第六选择单元与所述第二数学逻辑单元连接,所述第六选择单元用于选择整数数据和浮点数据中的一个输出;
第七选择单元,与第三选择单元连接,所述第七选择单元与所述数据接收模块连接,所述第七选择单元与第二数学逻辑单元连接,所述第七选择单元用于选择整数数据和浮点数据中的一个输出,且第六选择单元和第七选择单元输出的待运算数据的数据类型相同。
其中,在数据处理的过程中,当待运算数据的数据类型为浮点数据,在处理待运算数据时,可对浮点数据进行指数、符号和有效数字的运算,然后将指数输出,将有效数字和符号输入至第二数学逻辑单元进行运算;而当待运算数据的数据类型为整数数据,在处理待运算数据时,可将整数数据直接输入到第六选择单元和第七选择单元,第六选择单元和第七选择单元直接将待运算数据输入到第二数学逻辑单元内,使得第二数学逻辑单元运算待运算数据;如此在数据运算电路中实现了不同数据类型的数据的运算。
在一种实施例中,所述浮点数据运算模块还包括:
第八选择单元,与所述第二数学逻辑单元连接,所述第八选择单元与所述控制模块连接,所述第八选择单元用于在控制模块的控制下选择所述整数数据的运算结果的第一部分和所述浮点数据的符号中的一个输出;
第九选择单元,与所述第二数学逻辑单元连接,所述第九选择单元与所述控制模块连接,所述第九选择单元用于在控制模块的控制下选择所述整数数据的运算结果的第二部分和所述浮点数据的指数中的一个输出;
第十选择单元,与所述第二数学逻辑单元连接,所述第十选择单元与所述控制模块连接,所述第十选择单元用于在控制模块的控制下选择所述整数数据的运算结果的第三部分和所述浮点数据的有效数字运算结果中的一个输出。
其中,在待运算数据的数据类型为整数数据时,为了便于数据的输出,可设置整数数据的输出方式与浮点数据的输出方式相同,即可以采用32比特位输出整数运算结果。因此,在数据运算电路中采用第八选择单元、第九选择单元和第十选择单元分别输出整数运算结果的第一部分、第二部分和第三部分,使得输出的第一部分、第二部分和第三部分能够组合形成整数运算结果。通过该方式,无需为整数数据和浮点数据分别设置选择单元,降低数据运算电路的复杂度。
本申请实施例设置有第六选择单元、第七选择单元、第八选择单元、第九选择单元、第十选择单元,以及第二数学逻辑单元;在数据类型为整数数据时,通过第六选择单元和第七选择单元选择整数数据发送到第二数学逻辑单元,并在第二数学逻辑单元运算整数数据得到整数运算结果后直接通过第八选择单元、第九选择单元和第十选择单元输出整数数据,无需单独为整数数据设置整数运算电路,减小处理芯片面积。
在一种实施例中,当输出数据的运算结果中包括浮点数据的运算结果和整数数据的运算结果时,还可以分开输出整数数据的运算结果和浮点数据的运算结果,对应地,可以设置两个数据输出模块:第一数据输出模块和第二数据输出模块;其中,第一数据输出模块用于输出浮点数据的运算结果,第二数据输出模块用于输出整数数据的运算结果。在整数类型的待运算数据通过第二数学逻辑单元的处理后,直接通过第二数据输出模块输出,从而无需选择模块选择浮点数据的运算结果或者整数数据的运算结果,降低了数据运算电路的复杂度。
在一种实施例中,所述数据接收模块包括寄存器,所述寄存器用于存储待运算数据的数据类型,所述控制模块与所述寄存器连接,用于识别所述寄存器中的待运算数据的数据类型,并根据所述待运算数据的数据类型调用所述整数数据运算模块和所述非整数数据运算模块中的至少一个,运算所述待运算数据输出运算结果。具体的,在对数据进行处理前需要先确定待运算数据的数据类型,从而根据数据类型采用数据运算电路中的不同的数据运算模块对待运算数据进行处理,实现数据运算电路可以处理多个数据类型的待运算数据。
因此,通过设置寄存器存储数据类型,使控制模块识别寄存器内的数据类型,并控制整数数据运算模块和非整数数据运算模块运算数据,实现混合数据类型的并行运算。
如图4所示,为本申请实施例提供的数据运算电路的示意图。图4所示的数据运算电路的数据接收模块可接收数据类型为整数数据、浮点数据、混合数据的待运算数据。
在待运算数据的数据类型为浮点数据或者混合数据时,待运算数据包括第一浮点数据和第二浮点数据;第一浮点数据以Sign1表示符号、Exponent1表示指数、Fraction1表示有效数字;第二浮点数据以Sign2表示符号、Exponent2表示指数、Fraction2表示有效数字。第一浮点数据和第二浮点数据的运算结果为第三浮点数据,第三浮点数据以Sign3表示符号,Exponent3表示指数,Fraction3表示有效数字。
图4所示的数据运算电路包括:数据接收模块、控制模块Control、浮点数据运算模块、舍入模块Rounding和寄存器X。浮点数据运算模块包括符号运算模块、指数运算模块、有效数字运算模块、第六选择单元6、第七选择单元7、第八选择单元8、第九选择单元9和第十选择单元10。其中,指数运算模块包括第一数学逻辑单元Small ALU、第一选择单元1、第四选择单元4和指数调整单元Inc/Dec;有效数字运算单元包括第二选择单元2、第三选择单元3、第一有效数字调整单元Shift Right、第二数学逻辑单元Big ALU、第五选择单元5和第二有效数字调整单元Shift Left/Right。
下面将描述第一浮点数据和第二浮点数据做加减运算的运算过程。
首先,第一浮点数据和第二浮点数据会通过连接线203和连接线204分别将指数Exponent1和Exponent2发送至第一数学逻辑单元Small ALU,第一浮点数据和第二浮点数据分别通过连接线201和连接线202将指数Exponent1和Exponent2发送至第一选择单元1。第一数学逻辑单元Small ALU运算得到两个指数的指数差,并将指数差通过连接线208传输至指数差存储单元Exponent Difference,指数差存储单元Exponent Difference通过连接线210将指数差传输至控制模块Control。
然后控制模块Control根据不同的指数差进行相应的处理。
如果两者的指数差等于0,控制模块Control通过连接线212发送控制信号至第一选择单元1,使第一选择单元1选择第一浮点数据和第二浮点数据中任一个浮点数据的指数通过连接线216输出到第四选择单元4。同时,有效数字Fraction1通过连接线205和连接线209分别输入到第二选择单元2和第三选择单元3,有效数字Fraction2通过连接线206和连接线207分别输入到第二选择单元2和第三选择单元3。
接着控制模块Control通过连接线213和连接线211发送控制信号至第二选择单元2和第三选择单元3,使第二选择单元2和第三选择单元3分别输出两个有效数字,此时控制模块Control通过连接线214发送控制信号至第一有效数字调整单元Shift Right,使第一有效数字调整单元Shift Right不进行有效数字的右移。第一有效数字调整单元ShiftRight和第三选择单元3分别通过连接线253和连接线254输出有效数字Fraction1和Fraction2至第六选择单元6和第七选择单元7,然后控制模块Control通过连接线256和连接线257发送控制信号至第六选择单元6和第七选择单元7,使第六选择单元6和第七选择单元7分别输出有效数字Fraction1和Fraction2至第二数学逻辑单元Big ALU,以使第二数学逻辑单元Big ALU进行有效数字的运算,得到有效数字运算结果。
如果两者的指数差不等于0,控制模块Control发送控制信号至第二选择单元2,使第二选择单元2选择指数较小的有效数字输出,控制模块Control发送控制信号至第三选择单元3,使第三选择单元3选择指数较大的有效数字输出,控制模块Control控制第一有效数字调整单元Shift Right对指数较小的有效数字进行右移,以使得指数较小的有效数字保持数值不变。第二数学逻辑单元Big ALU接收到依次经过第一有效数字调整单元ShiftRight和第三选择单元3、第六选择单元6和第七选择单元7输出的有效数字Fraction1和Fraction2后,进行有效数字的运算,以得到有效数字运算结果。
进一步地,如果有效数字运算结果处于大于1且小于2的范围内,则第二数学逻辑单元Big ALU通过连接线225将运算结果发送至第五选择单元5,使第五选择单元5输出有效数字运算结果至第二有效数字调整单元Shift Left/Right,第四选择单元4直接输出指数至指数调整单元Inc/Dec,第二有效数字调整单元Shift Left/Right和指数调整单元Inc/Dec分别将有效数字结果和指数发送至舍入模块Rounding。
如果有效数字运算结果不处于大于1且小于2的范围内,则第二数学逻辑单元BigALU通过连接线225将有效数字运算结果发送至第五选择单元5,通过连接线223将有效数字运算结果发送至控制模块Control。控制模块Control通过连接线218和连接线220发送控制信号至第四选择单元4和第五选择单元5,使第四选择单元4和第五选择单元5分别通过连接线227和连接线228输出指数和有效数字运算结果。控制模块Control通过连接线217和连接线219发送控制信号至指数调整单元Inc/Dec和第二有效数字调整单元Shift Left/Right,使指数调整单元Inc/Dec和第二有效数字调整单元Shift Left/Right分别调整指数和有效数字运算结果,使得指数和有效数字运算结果符合浮点数据的表示方式。然后,指数调整单元Inc/Dec和第二有效数字调整单元Shift Left/Right将调整后的指数和有效数字运算结果分别通过连接线229和连接线231发送至舍入模块Rounding。
在舍入模块Rounding中,当有效数字运算结果和指数不符合浮点数据的精度时,通过连接线224和连接线226将指数和有效数字运算结果返回至第四选择单元4和第五选择单元5,通过连接线232将指数和有效数字运算结果返回至控制模块Control,以调整有效数字运算结果和指数,使得有效数字运算结果和指数符合浮点数据的精度需求。在数据符合精度需求后,通过连接线264、连接线262和连接线263输出指数和有效数字运算结果至第八选择单元8、第九选择单元9和第十选择单元10,然后第八选择单元8、第九选择单元9和第十选择单元10输出待运算数据的运算结果,待运算数据的运算结果中以Sign3表示符号,Exponent3表示指数,Fraction3表示有效数字。
图4未示出符号的运算过程,符号的运算过程可以与有效数字的运算过程同步进行,即有效数字携带符号进行运算,从而输出符号和有效数字。
在图4中,将第二数学逻辑单元Big ALU作为整数数据运算模块,浮点数据运算模块的其他部分(主要包括指数运算模块、符号运算模块、有效数字运算模块、第六选择单元、第七选择单元、第八选择单元、第九选择单元以及第十选择单元)作为非整数数据运算模块,对第二数学逻辑单元Big ALU进行复用,同时配置寄存器,使上述数据运算电路可以同时处理浮点数据和整数数据。
下面将结合实例举例说明第一浮点数据和第二浮点数据做加减运算的运算过程。
以192.0+128.5的运算为例,本申请实施例将192.0作为第一浮点数据,128.5作为第二浮点数据,将192.0转换为二进制为0 10000110 10000000000000000000,128.5转换为二进制为0 10000110 00000001000000000000000;此时,第一浮点数据对应的Sign1为0,Exponent1为10000110,Fraction1为10000000000000000000,第二浮点数据对应的Sign2为0,Exponent2为10000110,Fraction2为00000001000000000000000。
在执行第一浮点数据和第二浮点数据相加时,将Exponent1和Exponent2分别通过连接线203和连接线204输入到第一数学逻辑单元Small ALU,得到指数差为0,指数差依次通过连接线208、连接线210输出;Exponent1和Exponent2通过连接线201和连接线202输入到第一选择单元1。
由于第一浮点数据和第二浮点数据的指数差为0,即两个浮点数据的指数相同,因此控制模块Control确定在连接线214处不需要进行操作,控制模块Control通过连接线212发送控制信号至第一选择单元1,使第一选择单元1输出任一浮点数据的指数,如通过连接线216输出Exponent1至第四选择单元4。
在数据接收模块通过连接线205和连接线209输出Fraction1、通过连接线206和连接线207输出Fraction2时,由于两个浮点数据的指数相同,因此可以选择任一有效数字输出。例如控制模块Control通过连接线213发送控制信号至第二选择单元2,使第二选择单元2依次通过连接线215和连接线253输出Fraction1,控制模块Control通过连接线211发送控制信号至第三选择单元3,使第三选择单元3通过连接线254输出Fraction2。
由于仅有浮点数据的运算,控制模块Control分别通过连接线256、连接线257发送控制信号至第六选择单元6、第七选择单元7,使第六选择单元6、第七选择单元7分别通过连接线258、连接线259输出Fraction1和Fraction2到第二数学逻辑单元Big ALU,在第二数学逻辑单元Big ALU进行Fraction1和Fraction2的运算。即将0110000000000000000000(25比特位)和0100000001000000000000000(25比特位)(此处从左到右第1位为符号位,第2位为隐含的整数部分1)进行运算,得到有效数字运算结果01010000001000000000000000(26bit)。
该有效数字运算结果超出有效数字的比特位,因此需要进行调整,将有效数字运算结果通过连接线223发送至控制模块Control,通过连接线225发送至第五选择单元5,控制模块Control通过连接线220发送控制信号至第五选择单元5,使第五选择单元5通过连接线228将有效数字运算结果发送至第二有效数字调整单元Shift Left/Right。
控制模块Control对有效数字运算结果进行处理,通过连接线219发送控制信号至第二有效数字调整单元Shift Left/Right,使第二有效数字调整单元Shift Left/Right将有效数字运算结果右移1bit,此时符号位所对应的符号通过连接线230发送至输出模块作为Sign3,其余的数字右移后丢弃最高位的1(即隐含比特位),剩下的23比特位长度的数据通过连接线231发送到舍入模块Rounding。
由于有效数字的比特位右移1位,相当于有效数字除以2,因此为了保持浮点数据的数值不变,需要将对应的指数加1,控制模块Control通过连接线218发送控制信号至第四选择单元4,使第四选择单元4通过连接线227输出Exponent1至指数调整单元Inc/Dec(加一/减一);控制模块Control通过连接线217发送控制信号至指数调整单元Inc/Dec,使指数调整单元Inc/Dec输出指数,指数由10000110变为10000111,指数调整单元Inc/Dec通过连接线229输出到舍入模块Rounding。
在此例中,由于精度符合需求,未出现舍位或者进位,舍入模块Rounding分别通过连接线233和连接线234输出指数和有效数字,控制模块Control分别通过连接线261、连接线266、连接线265发送控制信号至第八选择单元8、第九选择单元9、第十选择单元10,使第八选择单元8、第九选择单元9、第十选择单元10分别通过连接线267、连接线268、连接线269输出第三浮点数据的符号Sign3(此时为0)、指数Exponent3(此时为10000111)和有效数字Fraction3(此时为01000000100000000000000),十进制结果为320.5。
本实施例针对第一浮点数据和第二浮点数据的指数相同的场景,利用该数据运算电路对第一浮点数据和第二浮点数据相加的运算过程进行了详细描述。
在一种实施例中,以1.0000000-0.2500002运算为例,将1.0000000作为第一浮点数据,0.2500002作为第二浮点数据,将1.0000000转换为二进制为0 0111111100000000000000000000000,0.2500002转换为二进制为0 0111110100000000000000000000111;此时,第一浮点数据对应的Sign1为0,Exponent1为01111111,Fraction1为00000000000000000000000,第二浮点数据对应的Sign2为0,Exponent2为01111101,Fraction2为00000000000000000000111。
在执行两个浮点数据相加的运算时,数据接收模块将Exponent1和Exponent2通过连接线203和连接线204输入到第一数学逻辑单元Small ALU,使第一数学逻辑单元SmallALU运算Exponent1和Exponent2得到指数差-2(二进制为01111101-01111111,十进制为125-127,即-2),第一数学逻辑单元Small ALU将指数差通过连接线208发送到指数差存储单元Exponent Difference,指数差存储单元Exponent Difference将指数差通过连接线210将指数差输出到控制模块Control,数据接收模块将Exponent1和Exponent2通过连接线201和连接线202发送到第一选择单元1。
由于指数差为-2,需要对浮点数据的指数进行调整;例如数据接收模块在连接线205和连接线209处输出Fraction1,且在连接线206和连接线207处输出Fraction2,之后控制模块Control通过连接线213发送控制信号至第二选择单元2选择Fraction2,第二选择单元2通过连接线215将Fraction2发送至第一有效数字调整单元Shift Right。控制模块Control通过连接线214发送控制信号至第一有效数字调整单元Shift Right,使第一有效数字调整单元Shift Right将Fraction2右移2bit,得到右移后的有效数字0001000000000000000000001(该有效数字为25比特位,同时包括浮点数据的符号位0和隐含位0),然后第一有效数字调整单元Shift Right将右移后的有效数字通过连接线253发送至第六选择单元6。
控制模块Control通过连接线211发送控制信号至第三选择单元3,使第三选择单元3选择Fraction1,第三选择单元3通过连接线254发送Fraction1至第七选择单元7,然后控制模块Control通过连接线256和连接线257分别发送控制信号至第六选择单元6和第七选择单元7,使第六选择单元6和第七选择单元7分别通过连接线258和259输出有效数字至第二数学逻辑单元Big ALU。控制模块Control通过连接线212发送控制信号至第一选择单元1,使第一选择单元1通过连接线216输出Exponent1至第四选择单元4。在第二数学逻辑单元Big ALU中执行两个有效数字相减,0100000000000000000000000(有效数字为25位,同时包括浮点数据的符号位0和隐含位1)与0001000000000000000000001(有效数字为25比特位,同时包括浮点数据的符号位0和隐含位0),得到有效数字运算结果010111111111111111111111(有效数字为24位,同时包括浮点数据的符号位0和隐含位1)。
由于有效数字运算结果不符合有效数字表示方式,第二数学逻辑单元Big ALU将有效数字运算结果通过连接线223发送至控制模块Control,第二数学逻辑单元Big ALU通过连接线225发送有效数字运算结果至第五选择单元5。控制模块Control通过连接线220发送控制信号至第五选择单元5;此时第五选择单元5仅接收到一个有效数字运算结果,直接输出该有效数字运算结果;第五选择单元5通过连接线228将有效数字运算结果发送至第二有效数字调整单元Shift Left/Right。控制模块Control通过连接线219发送控制信号至第二有效数字调整单元Shift Left/Right,使第二有效数字调整单元Shift Left/Right将有效数字运算结果的比特位左移1位,并将左移1位的有效数字运算结果通过连接线231输出到Rounding;符号位通过连接线230输出到Sign3,则舍入模块Rounding输入的有效数字运算结果为01111111111111111111110(不包括符号位和隐含位)。
由于有效数字运算结果的比特位左移1位,相当于有效数字乘以2,相应的指数需要进行调整。具体的,控制模块Control通过连接线218发送控制指令至第四选择单元4,此时第四选择单元4仅接收到一个指数,直接输出该指数;第四选择单元4输出指数Exponent1;控制模块Control通过连接线217发送控制信号至指数调整单元Inc/Dec,使指数调整单元Inc/Dec将指数减1,指数由01111111变为01111110,指数调整单元Inc/Dec将调整后的指数通过连接线229发送到舍入模块Rounding,保持输出的浮点数据的数值不变。
在此实施例中,由于在有效数字Fraction2右移的过程中,出现了有效数字的丢失,导致计算精度不够,但不影响指数位,因此可以根据上一实施例中所述的方式输出符号位的符号Sign3和指数位的指数Exponent3。为了提高精度,通过将有效数字运算结果01111111111111111111110(不包含符号位0和隐含位1)减一,得到有效数字运算结果01111111111111111111101(不包括符号位0和隐含位1),将有效数字运算结果01111111111111111111101(不包括符号位0和隐含位1)作为Fraction3,则第三浮点数据中Sign3为0、Exponent3为01111110、Fraction3为01111111111111111111101,即十进制数0.7499998。
本实施例针对第一浮点数据的指数大于第二浮点数据的指数的场景进行说明,包括利用数据运算电路实现第一浮点数据和第二浮点数据相加的运算过程,以及针对精度需求对有效数字进行调整的运算过程。当Rounding计算的指数结果通过连接线224返回至第四选择单元4时,表示指数不符合精度需求需要调整,即在输出的指数的有效数字超出有效数字阈值时,例如有效数字超过2,需要调整有效数字和指数,则将指数返回至第四选择单元4,然后进行相应的调整。
在一种实施例中,以0.25000+1024.00运算为例,将0.25000作为第一浮点数据,1024.00作为第二浮点数据,将0.25000转换为二进制为0 0111110100000000000000000000000,1024.00转换为二进制为0 1000100100000000000000000000000;此时,第一浮点数据对应的Sign1为0,Exponent1为01111101,Fraction1为00000000000000000000,第二浮点数据对应的Sign2为0,Exponent2为10001001,Fraction2为00000000000000000000。
在执行两个浮点数据相加时,数据接收模块将Exponent1和Exponent2通过连接线203和连接线204输入到第一数学逻辑单元Small ALU,得到指数差为12,指数差通过连接线208输出到指数差存储单元Exponent Difference,指数差存储单元Exponent Difference将指数差通过连接线210输出到控制模块Control,数据接收模块将Exponent1和Exponent2通过连接线201和202发送到第一选择单元1。
由于指数差为12,需要对浮点数据的指数进行调整;例如数据接收模块在连接线205和连接线209处输出Fraction1,在连接线206和连接线207处输出Fraction2后,控制模块Control通过连接线213发出控制信号至第二选择单元2,使第二选择单元2选择Fraction1并通过连接线215发送至第一有效数字调整单元Shift Right。
控制模块Control通过连接线214发送控制信号至第一有效数字调整单元ShiftRight,使第一有效数字调整单元Shift Right将Fraction1右移12比特位,然后第一有效数字调整单元Shift Right将右移后的有效数字0000000000000100000000000(包括符号位0和隐含位0)通过连接线253发送至第六选择单元6。
控制模块Control通过连接线211发出控制信号至第三选择单元3,使第三选择单元3选择Fraction2,第三选择单元3通过连接线254发送Fraction2至第七选择单元7,控制模块Control通过连接线256和连接线257发送控制信号至第六选择单元6和第七选择单元7,使第六选择单元6和第七选择单元7分别通过连接线258和连接线259发送有效数字至第二数学逻辑单元Big ALU,同时控制模块Control通过连接线212发送控制信号至第一选择单元1,使第一选择单元1通过连接线216输出Exponent2至第四选择单元4。
在第二数学逻辑单元Big ALU中执行两个有效数字相加,即0000000000000100000000000(25比特位,包括符号位0和隐含位0)与0100000000000000000000000(25比特位,包括符号位0和隐含位1)相加,得到有效数字运算结果为0100000000000100000000000(25比特位,包括符号位0和隐含位1)。由于有效数字运算结果不存在进位或者借位,第二数学逻辑单元Big ALU通过连接线223输出有效数字运算结果至控制模块Control,第二数学逻辑单元Big ALU通过连接线225输出有效数字运算结果至第五选择单元5。
控制模块Control根据有效数字运算结果判断无需进行比特位调整,控制模块Control通过连接线220发送控制信号至第五选择单元5,使第五选择单元5通过连接线228输出有效数字运算结果至第二有效数字调整单元Shift Left/Right,控制模块Control通过连接线219发送控制信号至第二有效数字调整单元Shift Left/Right,使第二有效数字调整单元Shift Left/Right不对有效数字运算结果进行调整,第二有效数字调整单元Shift Left/Right通过连接线230和连接线231输出符号位和有效数字运算结果,有效数字运算结果00000000000100000000000(23比特位,不包括符号位0和隐含位1)。
由于有效数字运算结果无需调整,直接输出对应的指数,控制模块Control通过连接线218、连接线217发送控制信号至第四选择单元4和指数调整单元Inc/Dec,第四选择单元4和指数调整单元Inc/Dec依次通过连接线227、连接线229输出指数至舍入模块Rounding。
在此实施例中,由于无需进位或者舍入操作,舍入模块Rounding直接输出第三浮点数据的符号Sign3、指数Exponent3和有效数字Fraction3,第三浮点数据中Sign3为0、Exponent3为10001001、Fraction3为00000000000100000000000,即十进制数1024.25。
此实施例针对第一浮点数据的指数小于第二浮点数据的指数的场景下,利用数据运算电路对第一浮点数据和第二浮点数据相加的运算过程进行了详细的说明。
在一种实施例中,在利用数据运算电路进行整数数据的运算时,整数数据与浮点数据的输入方式相同。在图4中,虚线表示数据接收模块接收的数据以及数据输出模块输出的数据均为整数数据。
第一整数数据通过连接线251发送至第六选择单元6,第二整数数据通过连接线252发送至第七选择单元7。由于整数数据不需要做指数和有效数字的调整,控制模块Control通过连接线256和连接线257发送控制信号至第六选择单元6和第七选择单元7,使第六选择单元6和第七选择单元7分别通过连接线258和连接线259输出第一整数数据和第二整数数据到第二数学逻辑单元Big ALU,第二数学逻辑单元Big ALU在运算出整数结果后,分别通过连接线264、连接线262、连接线263输出整数数据运算结果的不同部分。
然后控制模块Control分别通过连接线261、连接线266、连接线265发送控制信号至第八选择单元8、第九选择单元9和第十选择单元10,使第八选择单元8、第九选择单元9和第十选择单元10分别输出整数数据运算结果的不同部分,得到整数数据运算结果。
图4所示意的实施例通过第六选择单元至第十选择单元选择浮点数据或者整数数据,但在本申请其他实施例中,浮点数据运算模块可以不通过第六选择单元至第十选择单元选择浮点数据或者整数数据,而是分别设置整数数据的输出模块和浮点数据的输出模块进行数据输出。
上述实施例仅进行了加减运算的说明,但本申请实施例不限于此,包括乘除运算以及其他运算可通过该数据运算电路或者近似电路实现。
在一种实施例中,在配置寄存器X中的数据类型时,如图5所示,每一个比特位内的数字表示一个lane(道)的数据类型,图5中以0表示整数数据,以1表示浮点数据。在其他实施例中,也可以使用1表示整数数据,使用0表示浮点数据。图5所示意的实施例使用一个比特位长度的数据表示数据类型,在其他实施例中,还可以使用2个以及以上比特位长度的数据表示数据类型。
本申请实施例提供的数据运算电路可以实现同一SIMD指令中计算整数和浮点数据,即本申请实现了在同一SIMD指令中运算不同数据类型的数据,如图6所示,可以实现1+6=7、4+3=7、3.2+(-0.8)=2.4和5+0=5的混合运算,不同数据类型的计算不需要相互等待,提高了数据运算效率,减小了处理芯片面积,降低了成本。
如图7所示,本申请实施例还提供了一种数据管理方法,该数据管理方法用于控制如上述实施例任一所述的数据运算电路,所述数据管理方法包括:
301、接收前端设备发送的数据处理请求;所述数据处理请求包括数据类型为整数数据、浮点数据以及混合数据中的一种的待运算数据;
302、解析所述数据处理请求,得到所述数据处理请求携带的待运算数据以及待运算数据的数据类型;
303、识别所述待运算数据的数据类型,调用数据运算电路中整数数据运算模块和非整数运算模块中的至少一个对所述待运算数据进行处理得到处理结果。
在一种实施例中,在数据类型为混合数据时,采用整数数据运算模块运算整数数据,采用整数数据运算模块和非整数数据运算模块运算浮点数据,从而可以在同一处理过程中同时处理整数数据和浮点数据,提高数据处理效率。
在一种实施例中,在上述实施例,以混合数据的运算为例,但本申请实施例还可以在某一时间仅处理一个数据类型的数据,此时调用整数数据运算模块和非整数数据运算模块中的至少一个进行处理,从而实现对单一数据类型的数据的处理。
上述数据管理方法通过在接收到前端设备的数据处理请求后,对数据处理请求进行解析,从而得到数据处理请求中携带的待运算数据的数据类型,相应的调用数据运算电路中整数数据运算模块以及非整数数据运算模块中的至少一种处理待运算数据,得到处理结果。本申请实施例在需要处理数据,通过控制同一数据运算电路处理对应类型的数据,使得在处理数据时,可以处理不同数据类型的数据。
本申请实施例还提供一种处理芯片,该处理芯片包括如上述实施例任一所述的数据运算电路。
本申请实施例还提供一种计算机设备,该计算机设备包括上述实施例任一所述的处理芯片。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有多条指令,指令适于处理芯片进行加载,以执行上述数据管理方法中的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上对本申请实施例所提供的一种数据运算电路、数据管理方法、处理芯片、计算机设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想;本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例的技术方案的范围。
Claims (9)
1.一种数据运算电路,其特征在于,包括:
数据接收模块,用于基于待执行SIMD指令接收待运算数据,所述待运算数据的数据类型包括整数数据、浮点数据以及混合数据中的一种;
浮点数据运算模块,包括整数数据运算模块以及非整数数据运算模块;
控制模块,用于识别所述待运算数据的数据类型,并根据所述待运算数据的数据类型调用所述整数数据运算模块和所述非整数数据运算模块中的至少一个,运算所述待运算数据输出运算结果;具体用于当所述数据类型包括混合数据时,调用所述整数数据运算模块运算所述待运算数据中的整数数据,调用所述整数数据运算模块和所述非整数数据运算模块运算所述待运算数据中的浮点数据;
其中,所述浮点数据运算模块包括符号运算模块、指数运算模块和有效数字运算模块,所述指数运算模块与所述控制模块连接,所述指数运算模块与所述数据接收模块连接,所述指数运算模块用于在所述待运算数据的数据类型包括浮点数据和混合数据中的一种时,接收所述数据接收模块发送的浮点数据并运算所述浮点数据的指数,并将指数运算结果传输至控制模块;所述有效数字运算模块用于与所述控制模块连接,所述有效数字运算模块与所述数据接收模块连接,所述有效数字运算模块用于在所述待运算数据的数据类型包括浮点数据和混合数据中的一种时,接收所述数据接收模块发送的浮点数据并运算所述浮点数据的有效数字,并将有效数字运算结果传输至控制模块;其中,所述控制模块用于根据所述指数运算结果和所述有效数字运算结果,以及指数阈值和有效数字阈值,调整所述浮点数据的指数和有效数字运算结果。
2.如权利要求1所述的数据运算电路,其特征在于,所述指数运算模块包括:
第一数学逻辑单元,与所述数据接收模块连接,所述第一数学逻辑单元与所述控制模块连接,所述第一数学逻辑单元用于处理所述指数得到第一处理结果,并将所述第一处理结果发送至控制模块;
第一选择单元,与所述数据接收模块连接,所述第一选择单元与所述控制模块连接;
其中,所述控制模块用于在第一处理结果大于指数阈值时控制第一选择单元输出所述待运算数据的指数的最大值,并发出第一调整信号。
3.如权利要求2所述的数据运算电路,其特征在于,所述有效数字运算模块包括:
第二选择单元,与所述数据接收模块连接,所述第二选择单元与所述控制模块连接,所述第二选择单元用于输出所述待运算数据中指数最小的第一有效数字;
第三选择单元,与所述控制模块连接,用于输出所述待运算数据中指数最大的第二有效数字;
第一有效数字调整单元,与所述第二选择单元连接;所述第一有效数字调整模块用于在接收到所述第一调整信号时,调整所述待运算数据中指数最小的第一有效数字得到第三有效数字;
第二数学逻辑单元,与所述第一有效数字调整单元连接,所述第二数学逻辑单元与所述第三选择单元连接,所述第二数学逻辑单元用于接收所述第一有效数字调整单元和所述第三选择单元输出的第三有效数字和第二有效数字,并处理所述第三有效数字和第二有效数字得到有效数字运算结果,并在所述有效数字运算结果大于或者等于有效数字阈值时,将所述有效数字运算结果返回至所述控制模块;
其中,所述控制模块用于在接收到所述有效数字运算结果时,发出第二调整信号和第三调整信号。
4.如权利要求3所述的数据运算电路,其特征在于,所述浮点数据运算模块还包括舍入模块,所述舍入模块用于在指数运算结果和有效数字运算结果不符合预设条件时,返回指数和有效数字运算结果。
5.如权利要求4所述的数据运算电路,其特征在于,所述指数运算模块还包括第四选择单元和指数调整单元,所述有效数字运算模块还包括第五选择单元和第二有效数字调整单元,其中:
所述第四选择单元用于接收所述第一选择单元输出的指数和所述舍入模块返回的指数,并根据所述控制模块的指令选择其中一个输出;
所述指数调整单元用于在接收到所述控制模块发出的所述第二调整信号后,调整所述指数;
所述第五选择单元用于接收所述第二数学逻辑单元输出的有效数字运算结果和所述舍入模块返回的有效数字运算结果,并根据所述控制模块的指令选择其中一个输出;
所述第二有效数字调整单元用于在接收到所述控制模块发出的第三调整信号后,调整有效数字运算结果。
6.如权利要求5所述的数据运算电路,其特征在于,所述浮点数据运算模块还包括:
第六选择单元,与第一有效数字调整单元连接,所述第六选择单元与所述数据接收模块连接,所述第六选择单元与所述第二数学逻辑单元连接,所述第六选择单元用于选择整数数据和浮点数据中的一个输出;
第七选择单元,与第三选择单元连接,所述第七选择单元与所述数据接收模块连接,所述第七选择单元与第二数学逻辑单元连接,所述第七选择单元用于选择整数数据和浮点数据中的一个输出,且第六选择单元和第七选择单元输出的待运算数据的数据类型相同。
7.如权利要求6所述的数据运算电路,其特征在于,所述浮点数据运算模块还包括:
第八选择单元,与所述第二数学逻辑单元连接,所述第八选择单元与所述控制模块连接,所述第八选择单元用于在控制模块的控制下选择所述整数数据的运算结果的第一部分和所述浮点数据的符号中的一个输出;
第九选择单元,与所述第二数学逻辑单元连接,所述第九选择单元与所述控制模块连接,所述第九选择单元用于在控制模块的控制下选择所述整数数据的运算结果的第二部分和所述浮点数据的指数中的一个输出;
第十选择单元,与所述第二数学逻辑单元连接,所述第十选择单元与所述控制模块连接,所述第十选择单元用于在控制模块的控制下选择所述整数数据的运算结果的第三部分和所述浮点数据的有效数字运算结果中的一个输出。
8.如权利要求1所述的数据运算电路,其特征在于,所述数据接收模块包括寄存器,所述寄存器用于存储所述待运算数据的数据类型,所述控制模块与所述寄存器连接,用于识别所述寄存器中的所述待运算数据的数据类型,并根据所述待运算数据的数据类型调用所述整数数据运算模块和所述非整数数据运算模块中的至少一个,运算所述待运算数据输出运算结果。
9.一种处理芯片,其特征在于,包括如权利要求1至8任一所述的数据运算电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110223556.7A CN112579519B (zh) | 2021-03-01 | 2021-03-01 | 数据运算电路和处理芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110223556.7A CN112579519B (zh) | 2021-03-01 | 2021-03-01 | 数据运算电路和处理芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579519A CN112579519A (zh) | 2021-03-30 |
CN112579519B true CN112579519B (zh) | 2021-05-25 |
Family
ID=75114084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110223556.7A Active CN112579519B (zh) | 2021-03-01 | 2021-03-01 | 数据运算电路和处理芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579519B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021832A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 支持局部寄存和条件执行的64位浮点整数融合运算群 |
CN101133389A (zh) * | 2004-11-10 | 2008-02-27 | 辉达公司 | 多用途乘法-加法功能单元 |
CN108762720A (zh) * | 2018-06-14 | 2018-11-06 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
CN110580175A (zh) * | 2018-06-08 | 2019-12-17 | 英特尔公司 | 可变格式、可变稀疏矩阵乘法指令 |
CN111666066A (zh) * | 2017-04-28 | 2020-09-15 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7424501B2 (en) * | 2003-06-30 | 2008-09-09 | Intel Corporation | Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations |
-
2021
- 2021-03-01 CN CN202110223556.7A patent/CN112579519B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101133389A (zh) * | 2004-11-10 | 2008-02-27 | 辉达公司 | 多用途乘法-加法功能单元 |
CN101021832A (zh) * | 2007-03-19 | 2007-08-22 | 中国人民解放军国防科学技术大学 | 支持局部寄存和条件执行的64位浮点整数融合运算群 |
CN111666066A (zh) * | 2017-04-28 | 2020-09-15 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
CN110580175A (zh) * | 2018-06-08 | 2019-12-17 | 英特尔公司 | 可变格式、可变稀疏矩阵乘法指令 |
CN108762720A (zh) * | 2018-06-14 | 2018-11-06 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112579519A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4080351A1 (en) | Arithmetic logic unit, and floating-point number multiplication calculation method and device | |
US9639326B2 (en) | Floating-point adder circuitry | |
US6282554B1 (en) | Method and apparatus for floating point operations and format conversion operations | |
US8805915B2 (en) | Fused multiply-add apparatus and method | |
CN112860220B (zh) | 一种适用于多精度计算的可重构浮点乘加运算单元及方法 | |
US5548545A (en) | Floating point exception prediction for compound operations and variable precision using an intermediate exponent bus | |
CN108055041B (zh) | 一种数据类型转换电路单元及装置 | |
US20170293471A1 (en) | Arithmetic units and related converters | |
KR100241072B1 (ko) | 부동소수점 감산시 대량소거의 병렬예측 및 연산방법과 장치 | |
US20070038693A1 (en) | Method and Processor for Performing a Floating-Point Instruction Within a Processor | |
CN112527239B (zh) | 一种浮点数据处理方法及装置 | |
CN112579519B (zh) | 数据运算电路和处理芯片 | |
CN113625989A (zh) | 数据运算装置、方法、电子设备及存储介质 | |
EP4064036A1 (en) | Floating-point number multiplication computation method and apparatus, and arithmetical logic unit | |
CN112130804A (zh) | 具有正确舍入的混合精度浮点数的融合乘加运算器 | |
US5754458A (en) | Trailing bit anticipator | |
EP3647939A1 (en) | Arithmetic processing apparatus and controlling method therefor | |
US20140136582A1 (en) | Method and apparatus for digital automatic gain control | |
CN114691082A (zh) | 乘法器电路、芯片、电子设备及计算机可读存储介质 | |
US20230289141A1 (en) | Operation unit, floating-point number calculation method and apparatus, chip, and computing device | |
US20230144030A1 (en) | Multi-input multi-output adder and operating method thereof | |
CN117170622B (zh) | 累加器及用于累加器的方法和芯片电路及计算设备 | |
CN117369879A (zh) | 一种计算单元 | |
US20220188673A1 (en) | Mixed-precision ai processor and operating method thereof | |
CN116756465A (zh) | 计算单元、计算核心、数据计算方法、芯片及电子设备 |
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 |