CN111338600A - 计算处理设备和控制计算处理设备的方法 - Google Patents

计算处理设备和控制计算处理设备的方法 Download PDF

Info

Publication number
CN111338600A
CN111338600A CN201911141086.9A CN201911141086A CN111338600A CN 111338600 A CN111338600 A CN 111338600A CN 201911141086 A CN201911141086 A CN 201911141086A CN 111338600 A CN111338600 A CN 111338600A
Authority
CN
China
Prior art keywords
fixed
point
converter
point number
statistical information
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
CN201911141086.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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN111338600A publication Critical patent/CN111338600A/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/485Adding; Subtracting
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49915Mantissa overflow or underflow in handling floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Nonlinear Science (AREA)
  • Mathematical Physics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

提供了一种计算处理设备和控制计算处理设备的方法。计算处理设备包括:对定点数执行运算的定点运算器;对浮点数执行运算的浮点运算器;第一转换器,其将浮点运算器的运算结果转换成具有大于第一位宽的第二位宽的定点数;统计信息获取器,其获取由定点运算器输出的定点数和由第一转换器输出的定点数中的任何定点数的统计信息;以及第二转换器,其将已由定点运算器输出或者已由第一转换器输出且其统计信息已被获取的定点数转换成具有第一位宽的定点数。

Description

计算处理设备和控制计算处理设备的方法
技术领域
本实施方式涉及计算处理设备和控制计算处理设备的方法。
背景技术
提出了一种方法,该方法通过基于在深度学习等中使用的计算处理设备中执行运算指令而获得的数据的定点数的位的位置的分布对该定点数的小数点位置进行更新来提高深度学习的精度(参考,例如,专利文献1和2)。提出了一种方法,该方法通过在使用定点数对图像数据执行卷积运算时,基于用于执行卷积运算的掩模的大小设置小数点位置来防止溢出的发生(参考,例如,专利文献3)。提出了一种方法,该方法基于输入音频的幅度的平均值改变要用于计算设备中的运算的变量的小数点位置,以便在不降低运算精度的情况下减小计算设备中要使用的数据的位长(参考,例如,专利文献4)。
发明内容
技术问题
例如,一种深度神经网络包括用于使用定点数执行运算的层和用于使用浮点数执行运算的层。在将用于使用定点数执行运算的层耦接至并且续接用于使用浮点数进行运算的层的情况下,将对浮点数执行运算的结果转换为定点数并且将转换之后的定点数输入至后续层。在这种情况下,通过基于浮点数的位的位置的分布来更新转换之后的定点数的小数点位置,可以提高后续层中运算的精度并且可以提高深度学习的精度。然而,浮点数的位的位置可能由于指数部分的值而广泛地分布,需要重新安装用于获取位的位置的分布的大型电路并且会增加计算处理设备的电路尺寸。
根据一方面,本公开内容旨在不降低运算精度的情况下减小计算处理设备的电路尺寸。
解决方案
根据实施方式的一方面,一种计算处理设备包括:对定点数执行运算的定点运算器;对浮点数执行运算的浮点运算器;第一转换器,其将浮点运算器的运算结果转换成具有大于第一位宽的第二位宽的定点数;统计信息获取器,其获取由定点运算器输出的定点数和由第一转换器输出的定点数中的任何定点数的统计信息;以及第二转换器,其将已由定点运算器输出或者已由第一转换器输出且统计信息已被获取的定点数转换为具有第一位宽的定点数。
本发明的有益效果
根据一方面,本文中公开的技术可以在不降低运算精度的情况下减小计算处理设备的电路尺寸。
附图说明
图1是示出了根据实施方式的计算处理设备的示例的图;
图2是示出了由图1中示出的更新信息生成器对小数点位置进行更新的示例的图;
图3是示出了根据另一实施方式的计算处理设备的示例的图;
图4是示出了使用图3中示出的计算处理设备执行深度学习的示例的图;
图5是示出了在图4中示出的层的处理中更新小数点位置的示例的图;
图6是示出了获取16位动态定点数的统计信息的情况和获取32位动态定点数的情况的示例的图;
图7是示出了基于16位动态定点数的小数点位置设置32位动态定点数的小数点位置的方法的示例的图;
图8是示出了在使用图3中示出的计算处理设备执行的深度学习中更新系数(例如,权重)的逆向处理的示例的图;
图9是示出了使用图3中示出的计算处理设备执行的深度学习的另一示例的图;
图10是示出了图3中示出的计算处理设备的操作流程的示例的图;
图11是示出了计算处理设备的另一示例(比较例)的图;
图12是示出了使用图11中示出的计算处理设备执行的深度学习的示例(比较例)的图;以及
图13是根据另一实施方式的计算处理设备的示例的图。
具体实施方式
在下文中使用附图对实施方式进行描述。
图1示出了根据实施方式的计算处理设备的示例。图1中示出的计算处理设备100可以是在深度学习中使用的专用处理器、图像处理单元(GPU)、中央处理单元(CPU)等。
计算处理设备100包括对定点数执行运算的定点运算器1、对浮点数执行运算的浮点运算器2、第一转换器3、选择器4、统计信息获取器5、更新信息生成器6和第二转换器7。定点运算器1包括例如16位乘积累加运算器,并将运算结果DT1(例如,40位)输出至选择器4。
例如,浮点运算器2包括32位乘法器、32位除法器等,并将对浮点数执行运算的结果DT2(例如,32位)输出至第一转换器3。例如,该32位浮点数包括8位小数部分,并且可以表示256个小数点位置。
例如,第一转换器3将由浮点运算器2获得的32位运算结果DT2(浮点数)转换为32位的运算结果DT3(定点数),32位是第二位宽的示例。在这种情况下,第一转换器3将定点数DT3的小数点位置与由更新信息生成器6计算的小数点位置UPD1进行匹配。换句话说,第一转换器3将定点数DT3的小数点位置与指示由更新信息生成器6计算的小数点位置的更新信息UPD1进行匹配,并且设置定点数DT3的整数部分的位数和定点数DT3的小数部分的位数。第一转换器3可以将32位运算结果DT2(浮点数)转换成具有与运算结果DT1的位数相等的40位的运算结果DT3(定点数)。
选择器4基于选择信号SEL选择运算结果DT1和DT3中的任一者并将所选择的运算结果DT1或DT3作为运算结果DT4输出。例如,基于使得定点运算器1执行运算的运算指令,将选择信号SEL设置成使得由定点运算器1输出的定点数DT1被选中的电平。例如,基于使得将由浮点运算器2获得的运算结果DT2传输至第二转换器7的传输指令,将选择信号SEL设置成使得由第一转换器3输出的定点数DT3被选中的电平。
在深度神经网络中包括的多个层之中并且使用定点运算器1执行运算的层中,选择器4可以基于运算指令选择定点运算器1的输出。在深度神经网络中包括的多个层之中并且使用浮点运算器2执行运算的层中,选择器4可以基于传输指令选择浮点运算器2的输出。
统计信息获取器5获取由选择器4选择的40位或32位定点数DT4的统计信息(例如,分布信息)。例如,统计信息获取器5将32位定点数DT4作为40位数据进行处理。从而,可以由共同的统计信息获取器5来获得定点数DT1和DT3的统计信息,并且可以减小统计信息获取器5的电路尺寸。统计信息获取器5可以基于选择信号SEL改变要用于获取每个定点数(40位或32位)的统计信息的位范围。
统计信息获取器5获取在第二转换器7转换之前的40位或32位定点数DT4的统计信息,而不获取后面描述的由第二转换器7转换的16位定点数DT5的统计信息。由于统计信息是使用具有相对大的信息量的定点数DT4获取的,因此,可以在不降低统计信息的精度的情况下抑制统计信息获取器5的电路尺寸。
例如,在深度神经网络的每个层执行多个小批量处理的情况下,统计信息获取器5可以获取针对每个小批量处理的运算结果DT4的位值的分布信息。小批量处理是针对要在每个层中进行处理的数据所分成的多个组中的每一个组执行的处理。
位值的分布信息是指示运算结果DT4的位值的最高有效位或最低有效位的分布的信息,或者是指示运算结果DT4的位值的最高有效位中最大值的位置或最低有效位中最小值的位置的信息。对于正值,最高有效位指示最高有效侧的1的位的位置,并且,对于负值,最高有效位指示最高有效侧的0的位的位置。对于正值,最低有效位指示最低有效侧的1的位的位置,并且,对于负值,最低有效位指示最低有效侧的0的位的位置。
更新信息生成器6基于由统计信息获取器5获取的统计信息生成用于更新由第一转换器3输出的定点数DT3的小数点位置的更新信息UPD1和用于更新由第二转换器7输出的定点数DT5的小数点位置的更新信息UPD2。例如,更新信息生成器6可以通过向由更新信息UPD2指示的小数点位置添加预定的偏移值来计算更新信息UPD1。更新信息UPD1和UPD2指示小数点位置或者指示小数点从当前设置的小数点位置移位的量。
例如,在深度神经网络的层中执行多个小批量处理之后,更新信息生成器6基于在小批量处理中获取的统计信息生成更新信息UPD1和UPD2。在对定点数执行运算的层中,由第一转换器3输出的定点数DT3未被使用。因此,更新信息生成器6不会在处理定点数的层中生成更新信息UPD1。
然而,由于生成更新信息UPD1和UPD2与运算器1和运算器2无关,因此,更新信息生成器6对使用定点运算器1的层的处理和使用浮点运算器2的层的处理可以是共用的。从而,能够抑制更新信息生成器6的电路尺寸的增加。当通过向由更新信息UPD2指示的小数点位置添加预定的偏移值来生成更新信息UPD1时,用于生成更新信息UPD1的电路可以被设计为移位器等,并且该电路尺寸较小。
第一转换器3基于更新信息UPD1更新要输出的定点数DT3的小数点位置。第二转换器7基于更新信息UPD2更新要输出的定点数DT5的小数点位置。定点运算器1基于更新信息UPD2设置要用于运算的定点数的小数点位置。在特定小批量处理期间由更新信息生成器6计算的更新信息UPD1和UPD2所指示的小数点位置被用于下一小批量处理。
保持统计信息的存储单元可以被安装在统计信息获取器5与更新信息生成器6之间。存储单元是寄存器、缓冲器、随机存取存储器(RAM)等。在这种情况下,统计信息获取器5使得获取的统计信息被存储在存储单元中。更新信息生成器6基于存储在存储单元中的统计信息执行确定要更新的小数点位置的处理。
第二转换器7将40位或32位运算结果DT4转换成16位定点数DT5,16位是第一位宽的示例。例如,第二转换器7通过减少由定点运算器1输出的定点数DT1(运算结果)的位宽或者由第一转换器3转换的定点数DT3(运算结果)的位宽来生成定点数DT5。在这种情况下,第二转换器7基于由更新信息生成器6生成的更新信息UPD2来更新定点数DT5的小数点位置。在由第二转换器7转换并具有小的位宽的定点数DT5被用于下一层等的情况下,定点数DT5的小数点位置被调整至最优小数点位置,并且因此能够抑制此后执行的运算的精度的降低。
在实施方式中,在使用定点数的层的小批量处理以及使用浮点数的层的小批量处理中,定点数DT4(DT1或DT3)的统计信息是由共同的统计信息获取器5获取的。指示小数点位置的更新信息UPD1和UPD2是由共同的更新信息生成器6生成的。由于更新信息UPD1是通过向由更新信息UPD2指示的小数点位置添加预定的偏移值而计算的,因此,可以抑制安装在更新信息生成器6中并且被配置成计算更新信息UPD1的电路的尺寸。
从而,可以不用安装用于针对使用浮点数的层的小批量处理更新小数点位置的专用更新信息生成器。通过基于所获取的统计信息来更新定点数DT5的小数点位置,可以抑制要使用定点数DT5执行的运算的精度的降低。因此,可以在不降低运算精度的情况下减小计算处理设备100的电路尺寸。
图2示出了由图1中示出的更新信息生成器6来更新小数点位置的示例。图2示出了由统计信息获取器5获取的运算结果DT4的位值的最高有效位的分布。图2的左侧示出了分布不在可表示区域中的情况,而图2的右侧示出了分布在可表示区域中的情况。
在图2左侧示出的情况下,对如下定点数执行饱和处理:该定点数在相对于可表示区域(16位)的较高位侧具有位值的最高有效位(上溢)。另一方面,对如下定点数执行舍入处理:该定点数在相对于可表示区域(16位)的较低位侧具有位值的最高有效位(下溢)。更新信息生成器6基于由统计信息获取器5获取的分布来确定以当前位精度(Q5.10)表示的定点数的分布朝向较高位侧偏移。然后,更新信息生成器6将下一小批量处理的位精度确定为(Q3.12)。
然后,更新信息生成器6生成指示位精度(Q3.12)的更新信息UPD2或者生成指示小数点位置被朝向较高侧移位2位的更新信息UPD2。尽管图2中未示出,但是更新信息生成器6生成指示小数点位置的更新信息UPD1,该小数点位置是通过向与由更新信息UPD2指示的小数点位置添加预定的偏移值而获得的。通过执行该运算,可以抑制在下一小批量处理中使用的定点数(DT5)的精度的降低。在后面参考图7描述16位定点数的小数点位置与32位定点数的小数点位置之间的关系。
例如,更新信息生成器6确定定点数的小数点位置使得以位精度表示的16位数据处于分布的中心。位精度(Q5.10)和(Q3.12)指示Q格式的定点数表示法。位精度(Q5.10)指示具有1位符号位、5位整数部分和10位小数部分的16位数据,而位精度(Q3.12)指示具有1位符号位、3位整数部分和12位小数部分的16位数据。
更新信息生成器6可以更新小数点位置使得“(已导致上溢的数据项的数量)/(所有数据项的数量)”小于预定值。替选地,更新信息生成器6可以基于“(已导致下溢的数据项的数量)/(所有数据项的数量)”来更新小数点位置,或者可以基于已导致上溢的数据项的数量和已导致数据下溢的数据项的数量更新小数点位置,或者可以基于已导致上溢的数据项和已导致下溢的数据项的数量的比率来更新小数点位置。
当分布在图2右侧示出的情况的可表示区域中时,例如,更新信息生成器6确定小数点位置使得以位精度表示的16位数据处于分布的中心。在图2示出的示例中,更新信息生成器6基于由统计信息获取器5获取的分布来确定以位精度(Q3.12)表示的定点数的分布朝向较高位侧偏移。然后,更新信息生成器6将下一小批量处理的位精度确定为(Q1.14)。
在实施方式中,使用统计信息获取器5和更新信息生成器6对作为运算结果的定点数DT3和DT5的最优小数点位置进行计算和更新。因此,可以在不降低深度学习等的精度的情况下减小计算处理设备100的电路尺寸。换句话说,在执行定点运算或者浮点运算的情况下,可以在后续层等的处理中使用定点数DT5而不会降低精度。
与安装了用于定点数运算和浮点数运算的统计信息获取器5以及用于定点数运算和浮点数运算的更新信息生成器6的情况相比,可以减小由计算处理设备100消耗的功率。通过减少由第二转换器7转换的定点数DT5的位数,可以减少要在使用定点数DT5的后续处理中处理的数据的量,并且可以在不降低深度学习的处理精度的情况下减少处理时间。
图3示出了根据另一实施方式的计算处理设备的示例。例如,图3中示出的计算处理设备102是用于深度学习的专用处理器并且形成为芯片形状。计算处理设备102可以是通用处理器(例如,GPU或CPU)。
计算处理设备102包括存储器访问控制器10、控制器20、向量单元30和标量单元40。控制器20包括程序计数器(PC)22、指令解码器24和运算控制器26。向量单元30包括多个运算器32、包含多个寄存器的寄存器文件34、统计信息聚合器36、存储器38和小数点位置确定器39。标量单元40包括运算器42和包含多个寄存器的寄存器文件44。寄存器文件44被耦接至数据总线DBUS。存储器访问控制器10、控制器20、向量单元30和标量单元40经由数据总线DBUS彼此耦接。在图3中,统计信息聚合器36、存储器38和小数点位置确定器39被包括在向量单元30中,但是可以被安装在向量单元30的外部。
存储器访问控制器10基于来自控制器20的指令控制对耦接至计算处理设备102的外部存储器200的访问。外部存储器200是动态随机存取存储器(DRAM)等。存储器访问控制器10对存储在外部存储器200中的指令码进行读取并将所读取的指令码输出至控制器20。存储器访问控制器10对外部存储器200中存储的、要用于运算的数据等进行读取,并将所读取的数据等输出至向量单元30或标量单元40。
运算控制器26基于由程序计数器22生成的地址从外部存储器200加载指令,并将所加载的指令传输至指令解码器24。指令解码器24对所传输的指令进行解码并将解码的结果输出至运算控制器26。运算控制器26基于来自指令解码器24的解码结果生成控制向量单元30或标量单元40的控制信号,并对由向量单元30或标量单元40执行的运算进行控制。
向量单元30的运算器32中的每一个运算器包括浮点运算单元(FPU)320、算术逻辑单元(ALU)322、选择器324、累加器寄存器(ACC)326、数据转换器328、数据转换器330、数据转换器332和统计信息获取器334。向量单元30执行由指令解码器24解码的向量运算指令。FPU 320是浮点运算器的示例。ALU 322是定点运算器的示例。
例如,FPU 320具有对32位浮点数执行乘积累加运算、乘法运算和加法运算的功能、对指数等执行特殊运算的功能、执行将浮点数转换成定点数的运算的功能等。FPU 320将作为运算结果的32位浮点数输出至寄存器文件34和数据转换器328。
ALU 322具有对16位动态定点数执行乘积累加运算、加法运算、比较运算、逻辑运算等的功能。例如,ALU 322包括乘法器和累加器(MAC)。乘积累加运算的累加结果经由选择器324存储在40位累加器寄存器326中。执行包括加法运算、比较运算和逻辑运算的运算的结果作为16位定点数经由数据转换器328被写回至寄存器文件34中。
当ALU 322对定点数执行运算时,选择器324选择从ALU 322输出的数据并将所选择的输出数据输出至累加器寄存器326。在执行将来自寄存器文件34的32位动态定点数存储在累加器寄存器326中的传输指令时,选择器324选择从寄存器文件34输出的32位动态定点数。选择器324将所选择的32位动态定点数输出至累加器寄存器326。例如,由选择器324选择的32位动态定点数是由数据转换器330转换并被存储在寄存器文件34中的数据。
数据转换器328基于在寄存器文件34中保持的并且指示小数点被移位的量的移位信息SFT2,从由累加器寄存器326输出的40位数据中提取16位。如参考图2所描述的,16位的小数点位置是基于从40位数据中提取的16位的位置而确定的。
然后,数据转换器328对所提取的16位数据执行舍入处理以生成16位动态定点数DFP16,并且使得所生成的动态定点数DFP16被存储在寄存器文件34中。数据转换器328是第二转换器的示例。移位信息SFT2是第二更新信息的示例,并且被用于更新由数据转换器328输出的16位动态定点数DFP16的小数点位置。例如,动态定点数DFP16是使用Q格式表示的。动态定点数DFP16的小数点位置能够移位。
数据转换器330将由FPU 320输出的32位浮点数FP32转换成32位动态定点数DFP32。在这种情况下,数据转换器330基于保持在寄存器文件34中并且指示小数点被移位的量的移位信息SFT1来设置动态定点数DFP32的小数点位置。然后,数据转换器330使得通过转换获得的动态定点数DFP32被存储在寄存器文件34中。数据转换器330是第一转换器的示例。移位信息SFT1是第一更新信息的示例,并且被用于更新由数据转换器330输出的32位动态定点数DFP32的小数点位置。例如,动态定点数DFP32是使用Q格式表示的。动态定点数DFP32的小数点位置能够移位。
数据转换器332将由寄存器文件34传输的16位动态定点数DFP16转换成32位浮点数FP32,并且将所转换的浮点数FP32传输至寄存器文件34。在这种情况下,数据转换器332基于用于设置动态定点数DFP16的小数点位置的移位信息SFT 3,将动态定点数DFP16的小数点位置恢复成原始的小数点位置,并且将动态定点数DFP16转换成浮点数FP32。数据转换器332是第三转换器的示例。
移位信息SFT3指示在前一小批量处理中由先前层L1确定并且被保持在寄存器文件34中的小数点位置(对应于移位信息SFT2)。在下文中,动态定点数DFP32仅被称为DFP32,动态定点数DFP16仅被称为DFP16,并且浮点数数FP32仅被称为FP32。
例如,数据转换器332基于由指令解码器24执行的对转换指令的解码来进行操作以将DFP16转换成FP32。数据转换器330和332可以被包括在FPU 320中并且作为FPU 320的一个功能来操作。通过数据转换器330从浮点数到定点数的转换由等式(1)表示。
DFP=round(FP*2m)……(1)
通过数据转换器332由定点数到浮点数的转换由等式(2)表示。
FP=DFP*2-m……(2)
在等式(1)和(2)中,DFP指示动态定点数,FP指示浮点数,“round”指示四舍五入函数,例如,四舍五入、均值舍入、或者概率舍入,并且m指示小数点位置。符号*指示乘积。
统计信息获取器334获取从累加器寄存器326输出的40位数据的统计信息。例如,统计信息获取器334获取40位数据的位值的最高有效位、40位数据的位值的最低有效位或者40位数据的位值的最高有效位和最低有效位。例如,统计信息获取器334在每次小批量处理完成时将由统计信息获取器334获取的统计信息传输至统计信息聚合器36。
寄存器文件34包括与多个运算器32对应并分配给上述多个运算器32的多个存储库BK,并且被耦接至用于存储库BK中的每一个存储库的数据总线DBUS。存储库BK中的每一个存储库被耦接至运算器32中任何运算器。纵横开关(未示出)可以被安装在寄存器文件34与运算器32之间,该纵横开关将包括在寄存器文件34中并且保持一个或多个源操作数的寄存器耦接至用于预定的存储器库BK的运算器32。
统计信息聚合器36将由向量单元30的多个运算器32的统计信息获取器334获取的统计信息以及由标量单元40的统计信息获取器(未示出)获取的统计信息进行汇集,并且使得所聚合的通信息存储在存储器38中。例如,统计信息聚合器36获取由统计信息获取器334获取的40位数据的位值的最高有效位的分布、由统计信息获取器334获取的40位数据的位值的最低有效位的分布、最高有效位的最大值的位置以及最低有效位的最小值的位置中的一个或更多个作为统计信息。统计信息获取器334和统计信息聚合器36是统计信息获取器的示例。
存储器38被耦接至数据总线DBUS并且例如是静态随机存储器(SRAM)。存储器38保持从统计信息聚合器36写入的统计信息。
标量单元40是处理标量指令(处理单个数据项的指令)的单元。标量单元40的运算器42执行由指令解码器24解码的标量运算指令(处理单个数据项的指令)。运算器42包括未示出的统计处理单元。统计处理单元以与统计信息获取器334相似的方式获取运算器42的运算结果的统计信息并将所获取的统计信息输出至统计信息聚合器36。由于计算处理设备102的标量指令的操作细节与计算处理设备102的向量指令的操作细节之间的差异,标量单元40的运算器42的操作功能可能与向量单元30的运算器32的操作功能不同。
小数点位置确定器39被耦接至数据总线DBUS,并且基于存储在存储器38中的统计信息(例如,位值的最高有效位的分布)确定要在下一小批量处理中使用的数据的新的小数点位置。小数点位置确定器39使得所确定的小数点位置被存储在寄存器文件34中。存储在寄存器文件34中的小数点位置被作为移位信息SFT1和SFT2输出。
然后,存储在寄存器文件34中的小数点位置被用于在小数点位置确定之后执行处理的层的小批量处理中。小数点位置确定器39可以被实现为存储在外部存储器200中的控制程序(软件)的一部分,而不是被实现为电路(硬件)。在这种情况下,标量单元40的运算器42可以基于由计算处理设备102执行的控制程序和存储在存储器38中的统计信息来确定小数点位置。小数点位置确定器39是用于更新小数点位置的更新信息生成器的示例。
图4示出了使用图3中示出的计算处理设备102执行的深度学习的示例。图4示出了使用计算处理设备102的多个运算器32中的每一个顺序地执行包括在深度神经网络中的多个层L1、L2和L3的处理的示例。通过由ALU 322对DFP16执行运算来执行层L1和L3的处理。通过由FPU320对FP32执行运算来执行层L2的处理。可以在层L1的处理之前或者在层L3的处理之后执行另一层的处理。层L1、L2和L3的处理中的每一个处理都包括多个小批量处理。
在深度学习中使用ALU 322的层的示例是卷积层、池化层和全连接层。在深度学习中使用FPU 320的层的示例是其中执行诸如除法运算、均方根运算或者指数运算的的运算的归一化层以及使用指数的softmax层。由于要用于运算的值分布在宽区域中,因此,对定点数执行运算的精度不够。即使在使用大量数字来表示数据时,也是使用FPU 320执行层的处理。
在层L1和L3的处理中,ALU 322使用多个DFP16以执行多极运算。统计信息获取器334针对每一个运算获取作为通过ALU 322进行的运算结果的40位值的统计信息。由统计信息获取器334获取的统计信息由统计信息聚合器36(图3)针对每个小批量处理进行汇集,并且作为分布信息等被存储在存储器38中。
由数据转换器328将40位运算结果转换成DFP16。在这种情况下,数据转换器328使用在寄存器文件34等中保持的移位信息SFT2来设置DFP16中的小数点位置,基于所设置的小数点位置从40位运算结果中提取16位并生成DFP16。由数据转换器328生成DFP16的运算与参考图2描述的生成DFP16的运算是相同或者相似的。例如,作为层L1的处理结果的DFP16经由寄存器文件34被临时存储在外部存储器200(图3)等中,并且在层L2的处理中被使用。
在层L1和L3的处理中,每当小批量处理完成时,小数点位置确定器39使用存储在存储器38中的统计信息来确定要在下一小批量处理中使用的小数点位置。小数点位置确定器39使得指示所确定的小数点位置的移位信息SFT2被存储在寄存器文件34中。存储在寄存器文件34中的移位信息SFT2被输出至数据转换器328并且被用于设置作为在下一小批量处理中获得的运算结果的DFP16的小数点位置。存储在存储器38中的统计信息在每次小批量处理完成时被删除。
在层L2的处理中,使用在层L1的处理中获得的、具有经修正的小数点位置并且被保持在寄存器文件34中的DFP16。由数据转换器332将16位动态定点数DFP16转换成32位浮点数FP32。在这种情况下,当使用移位信息SFT3将DFP16的小数点位置恢复成DFP16的原始的小数点位置之后,将DFP16转换成FP32。从而,将小数点位置修正之前的DFP16转换成FP32,并且该处理由层L2在非线性函数上执行,该非线性函数不接收由前一层L1设置的小数点位置并且是指数函数、S型函数、双曲正切tanh等。
FPU 320基于运算指令顺序地使用所转换的FP32来执行多个运算。作为由FPU 320获得的运算结果的FP32被数据转换器330转换成DFP32。DFP32被存储在寄存器文件34中。在DFP32的转换中,基于移位信息SFT1设置DFP32的小数点位置。在后续层的处理中使用FP32执行运算的情况下,从寄存器文件34传输至外部存储器200等的FP32被用在后续层中。
例如,当执行以下浮点运算指令时,可以由数据转换器330执行运算并执行从FP32到DFP32的转换。指令是具有Fdst、Fsrc1、Fsrc2以及Fqsft的FADDq。
FADDq指示对浮点数执行加法运算以及执行转换成DFP32的处理(包括小数点位置的设置)的指令(复合指令)。Fdst、Fsrc1、Fsrc2和Fqsft指示寄存器文件34的寄存器号。dst指示目的操作数,并且src指示源操作数。qsft指示小数点位置被移位的量。qsft作为移位信息SFT1被输出至数据转换器330。
统计信息获取器334在小批量处理完成时,获取经由选择器324和累加器寄存器326传输的DFP32的统计信息,并将所获取的统计信息传输至统计信息聚合器36。统计信息聚合器36使得所传输的统计信息被存储在寄存器38中。例如,基于传输指令执行将统计信息从统计信息获取器334传输到统计信息聚合器36的以及将统计信息从统计信息聚合器36传输到寄存器38。
例如,基于传输指令将保持在寄存器文件34中的DFP32传输至数据转换器328,并通过数据转换器328将其转换成DFP16,并且将DFP16存储在寄存器文件34中。作为层L2的处理结果并且被存储在寄存器文件34中的DFP16被临时存储在例如外部存储器200等中,并且被用在层L3的处理中。在从DFP32至DFP16的转换中,基于移位信息SFT2对DFP16的小数点位置进行修正。
每次小批量处理完成时,小数点位置确定器39使用保持在存储器38中的统计信息来确定要在下一小批量处理中使用的小数点位置。小数点位置确定器39计算由数据转换器330输出的DFP32的小数点位置以及由数据转换器328输出的DFP16的小数点位置。然后,小数点位置确定器39使得指示DFP32的小数点位置的移位信息SFT1和指示DFP16的小数点位置的移位信息SFT2被存储在寄存器文件34的预定寄存器中。在层L2的处理中,由统计信息获取器334获取的统计信息在每次小批量处理完成时被删除。
可以使用多个运算器32并行地执行图4中示出的运算。可以使用不同的运算器32分别执行层L1、L2和L3的处理。当计算处理设备102包括其中的每一个都包括向量单元30和标量单元40的多个处理器核时,可以使用不同的处理器核分别执行层L1、L2和L3的处理。因此,可以并行地执行层L1、L2和L3的处理,并且可以提高计算处理设备102对深度学习的处理效率。
图5示出了在图4示出的每个层的处理中更新小数点位置的示例。如上所述,通过执行多个小批量处理(第i-1个处理、第i个处理、第i+1个处理,……:i是正整数)来执行层的处理。使用具有小数点位置的定点数来执行每个小批量处理,该小数点位置是基于在前一小批量处理中确定的小数点位置而更新的。获取作为在每个小批量处理中获得的运算结果的定点数的统计信息。例如,要获取的统计信息是数据的位值的最高有效位的分布、数据的位值的最低有效位的分布、最高有效位的最大值的位置以及最低有效位的最小值的位置中的一个或更多个。在每个小批量处理完成之后,基于所获取的统计信息计算要在下一小批量处理中使用的小数点位置。
图6示出了获取16位动态定点数DFP16的统计信息的情况和获取32位动态定点数DFP32的情况的示例。例如,图6以与图2相似的方式示出了DFP16和DFP32的位值的最高有效位的分布。
FPU 320所使用的浮点数FP32的小数点位置的可表示范围(或者值的范围)较宽。因此,在将由FPU 320获得的运算结果FP32转换成DFP16时,可能无法以高概率从DFP16的统计信息中获取到运算结果FP32的整个分布。在这种情况下,可以基于误差分布确定小数点位置。例如,在图6的上侧,丢失了较低侧的分布。另一方面,在将由FPU 320获得的运算结果FP32转换成DFP32时,与DFP16相比,运算结果FP32的可获得分布可以更宽并且可以更精确。
因此,如参考图4所描述的,由FPU 320获得的运算结果FP32被数据转换器330和328在两个阶段顺序地转换成DFP32和DFP16,使用DFP32获取统计信息,因此可以提高小数点位置的计算精度。由于可以用与ALU 322获得的运算结果的40位相同的范围来表示DFP32,因此统计信息获取器334可以获取由ALU 322获得的运算结果的40位的值的统计信息和DFP32的统计信息。例如,统计信息获取器334对40位的值和DFP32的值可以是共用的,并且不用安装用于获取DFP32的统计信息的专用统计信息获取器。
图7示出了基于16位动态定点数DFP16的小数点位置来设置32位动态定点数DFP32的小数点位置的方法的示例。在图7中,符号S指示符号位。
例如,当DFP16的Q格式被设置为(Q5.10)时,由黑色圆点指示的小数点被设置在DFP16的第9位与DFP16的第10位之间。在图7示出的示例中,在将16位的Q格式(Q5.10)扩展成32位的Q格式的情况下,较高位侧上要扩展的位的数量(8位)和较低位侧上要扩展的位的数量(8位)相同。在将16位的Q格式(Q3.12)扩展成32位的Q格式的情况下,较高位侧上要扩展的位的数量(8位)和较低位侧上要扩展的位的数量(8位)相同。因此,在较高位侧的余量的大小(上溢)和在较低侧的余量的大小(下溢)相同。
当小数点位置是Q格式(Q5.10)时,小数点位置确定器39输出指示“10”的移位信息SFT2。当小数点位置是Q格式(Q3.12)时,小数点位置确定器39输出指示“12”的移位信息SFT2。“10”和“12”是个位(ones place)的位数。小数点位置确定器39通过将偏移值=“8”与移位信息SFT2(=“10”或“12”)相加来生成移位信息SFT1(=“18”或“20”)。从而,生成针对DFP16的位值在较高位侧的位和在较低位侧的位均匀分布的DFP32。
图8是示出了在使用图3中示出的计算处理设备102执行的深度学习中使用修正数据更新系数(例如,权重)的逆向处理的示例。图8示出了在基于修正数据与运算结果之间的差异来对层L3、L2和L1中使用的系数等进行优化的情况下的运算的示例,所述运算结果是在顺序地执行图5中示出的层L1、L2和L3的处理之后的最后一层的处理中获得的。换句话说,图8示出了在以与图5中示出的方向相反的方向上将要用于对系数等进行优化的数据依次传输至层L3、L2和L1的情况下,基于统计信息更新小数点位置的示例。
例如,在卷积层的正向处理中,如图4所示获取从层L1至L3输出的数据的统计信息。另一方面,在卷积层的逆向处理中,获取输入至层L1至L3的不同值的统计信息、权重参数之间的差值以及在将权重与该差值相加之后更新的权重值。在逆向处理中,数据流与图4中示出的数据流相同或相似。
图9示出了使用图3中示出的计算处理设备102执行的深度学习的另一示例。图9示出了由计算处理设备102的多个运算器32中的每一个运算器使用DFP16顺序地执行包括在深度神经网络中的多个层L11和L12的处理的示例。例如,通过使ALU 322对16位动态定点数DFP16执行运算来执行层L11和L12的处理。用于执行层L11和L12的处理的电路操作的部件与用于执行图4中示出的层L1的处理的电路操作的部件相同。然后,在层L12的处理中使用由层L11中的数据转换器328转换并生成的DFP16。换句话说,图9示出了与从参考图4描述的处理中将层L2的处理移除并且顺序地执行层L1和L3的处理的情况相同或相似的情况。
例如,层L12基于在层L11中执行的前一小批量处理中确定的小数点位置使用DFP16来执行处理。层L12可以参考寄存器文件34并且可以识别在层L11中的小数点位置所更新的量(例如,移位量为2)。然后,在层L12的处理中,当在前一小批量处理中由小数点位置确定器39确定的小数点位置被移位的量是5时,将从层L12输出的数据移位仅“3”位,“3”是与在层L11中小数点位置所更新的量的差。
例如,假设层L11的处理是要被执行以重复地将输入数据和权重数据的乘积相加的卷积。在这种情况下,当输入数据中设置的小数点位置是第a数位,在权重数据中设置的小数点位置是第b数位,并且作为运算结果的乘积的小数点位置是第c数位时,将输出数据的小数点位置移动仅“c-(a+b)”。
图10示出了图3中示出的计算处理设备102的操作流程的示例。图10示出了控制计算处理设备102的方法的示例。通过使得计算处理设备102执行控制程序来实现图10中示出的操作。例如,在由多个小批量处理执行深度学习的各个层的处理中的每一个处理的情况下,开始图10中示出的操作。通过基于由使得指令解码器24对指令进行解码而生成的控制信号来控制计算处理设备102的内部电路的操作来实现以下操作。
首先,在步骤S10中,计算处理设备102在使用定点数的层中使得操作前进至步骤S12,并且,计算处理设备102在使用浮点数的层中使得操作前进至步骤S32。
在步骤S12中,计算处理设备102选择ALU 322的输出。接下来,在步骤S14中,计算处理设备102使用ALU 322对定点数执行运算。接下来,在步骤S16中,计算处理设备102使用统计信息获取器334来获取运算结果的统计信息。接下来,在步骤S18中,当单个小批量处理完成时,计算处理设备102使得操作前进至步骤S20,并且当小批量处理未完成时,计算处理设备102使得操作返回至步骤S14以执行下一操作。
在步骤S20中,计算处理设备102基于在小批量处理中获取的统计信息确定要在下一小批量处理中使用的DFP16的小数点位置。接下来,在步骤S22中,计算处理设备102根据所确定的小数点位置来更新要在下一小批量处理中使用的DFP16的小数点位置。接下来,在步骤S24中,当下一小批量处理尚未执行时,计算处理设备102使得操作返回至步骤S14,并且当各层中的所有小批量处理都完成时,计算处理设备102终止操作。
在步骤S32中,计算处理设备102经由寄存器文件34选择数据转换器330的输出。接下来,在步骤S34中,计算处理设备102使用FPU 320对浮点数执行运算。接下来,在步骤S36中,计算处理设备102使用统计信息获取器334来获取运算结果的统计信息。接下来,在步骤S38中,当单个小批量处理完成时,计算处理设备102使得操作前进至步骤S40,并且当小批量处理未完成时,计算处理设备102使得操作返回至步骤S34以执行下一操作。
在步骤S40中,计算处理设备102基于在小批量处理中获取的统计信息确定要在下一小批量处理中使用的DFP16和DFP32的小数点位置。接下来,在步骤S42中,计算处理设备102根据所确定的小数点位置来更新要在下一小批量处理中使用的DFP16和DFP32的小数点位置。接下来,在步骤S44中,当下一小批量处理尚未执行时,计算处理设备102使得操作返回至步骤S34,并且当各层中的所有小批量处理都完成时,计算处理设备102终止操作。
图11示出了计算处理设备的另一示例(比较示例)。与图3中示出的部件相同或相似的部件由与图3中示出的符号相同的符号指示,并且将不做详细描述。图11中示出的计算处理设备110包括运算器32A,而不是图3中示出的运算器32,并且包括小数点位置确定器39A,而不是小数点位置确定器39。计算处理设备110的其他配置与图3中示出的计算处理设备102的配置相同或相似。
运算器32A中的每一个直接使用由FPU 320获得的运算结果(32位浮点数FP32)以获取统计信息,因此不包括将FP32转换为DFP32的数据转换器330(图3)。运算器32A中的每一个包括将FP32转换为DFP16的数据转换器340,而不是数据转换器330。数据转换器340基于保持在寄存器文件34中并且指示小数点位置被移位的量的移位信息SFT4来设置动态定点数DFP16的小数点位置。
运算器32A中的每一个包括统计信息获取器342和统计信息获取器334。统计信息获取器342获取由FPU 320获得的运算结果(FP32)的统计信息。由于统计信息获取器342是独立于统计信息获取器334安装的,因此运算器32A不包括图3中示出的选择器324,并且由ALU 322获得的运算结果被直接传输至累加器寄存器326。
运算器32A中的每一个包括选择器344,选择器344选择是将统计信息获取器334的输出还是将统计信息获取器342的输出耦接至统计信息聚合器36。在小批量处理完成之后,选择器344通过例如执行切换指令来选择统计信息获取器334的输出或者统计信息获取器342的输出。例如,在图4中示出的层L1和L3的处理中,统计信息获取器334被选中。例如,在图4示出的层L2的处理中,统计信息获取器342被选中。
图12示出了使用图11中示出的计算处理设备110执行的深度学习的示例(比较示例)。与图4中示出的部件相同的或者相似的部件将不做详细描述。除了统计信息获取器334经由选择器344将统计信息传输至统计信息聚合器36之外,层L1和L3中的操作和参考图4描述的操作相同或者相似。
在层L2的处理中,FPU 320执行运算指令并输出运算结果FP32。数据转换器340将FP32转换成DFP16并使得DFP16被存储在寄存器文件34中。在这种情况下,数据转换器340基于保持在寄存器文件34中的移位信息SFT4来设置DFP16的小数点位置。在这之后,使用存储在寄存器文件34中的DFP16来执行层L3的处理。
统计信息获取器342从寄存器文件34读取作为由FPU 320获得的运算结果的32位浮点数FP32。然后,统计信息获取器342获取浮点数FP32的统计信息。例如,在电气和电子工程师协会(IEEE)754(浮点运算标准)二进制浮点格式中,单精度浮点数(32位)的指数部分是8位。因此,FP32具有-126至+127范围中的256个指数值中的任一指数值。
例如,统计信息获取器342针对256个指数值中的每一个指数值获取FP32的位值的最高有效位的分布作为统计信息。在小批量处理完成之后,由统计信息获取器342获取的统计信息经由选择器344被传输至统计信息聚合器36。
例如,在执行以下浮点运算指令时,可以执行运算并且可以由数据转换器340执行从FP32到DFP16的转换。该指令是具有Fdst、Fsrc1、Fsrc2和Fqsft的FADDq。
FADDq指示对浮点数执行加法运算并且执行DFP16的转换的处理(包括小数点位置的设置)的指令。Fdst、Fsrc1、Fsrc2和Fqsft指示寄存器文件34的寄存器号。dst指示目的操作数,并且src指示源操作数。qsft指示小数点位置被移位的量。qsft作为移位信息SFT4被输出至数据转换器340。
统计信息聚合器36使得所传输的统计信息被存储在寄存器38中。统计信息获取器342可以获得如下信息作为统计信息:FP32的位值的最低有效位的分布,FP32的位值的最高有效位的最大值的位置,或者FP32的位值的最低有效位的最小值的位置。小数点位置确定器39A基于256个指数值的分布确定小数点位置,并使得指示所确定的小数点位置的移位信息SFT4被存储在寄存器文件34中。
图11中示出的计算处理设备110包括针对FP32的统计信息获取器342、小数点位置确定器39A、统计信息获取器334以及小数点位置确定器39,并且包括数据转换器340和数据转换器328。因此,计算处理设备110的电路尺寸大于图3中示出的计算处理设备102的电路尺寸。
在参考图3至图10描述的实施方式中,FPU 320和ALU 322共用的统计信息获取器334可以获取浮点数的统计信息和定点数的统计信息,与参考图1和图2描述的实施方式相似。FPU 320和ALU 322共用的小数点位置确定器39可以生成要用于更新DFP32和DFP16的小数点位置的移位信息SFT1和SFT2。通过将预定偏移值和移位信息SFT2相加可以很容易地生成移位信息SFT1。这可以抑制统计信息获取器334和小数点位置确定器39的电路尺寸的增加。移位信息SFT1和SFT2可以抑制要在后面执行的处理中使用的数据的精度的降低。因此,可以在不降低数据精度并且不降低深度学习的精度的基础上减小计算处理设备102的电路尺寸。
在参考图3至图10描述的实施方式中,统计信息聚合器36使得由统计信息聚合器36聚合的统计信息被存储在被耦接至数据总线DBUS的存储器38中。从而,小数点位置确定器39可以在不与统计信息聚合器36通信的情况下,经由数据总线DBUS访问存储器38以获取统计信息。
由于累加器寄存器326的输入被耦接至选择器324,因此,可以可选地将由ALU 322获得的运算结果和保持在寄存器文件34中并且作为由FPU 320获得的运算结果的DFP32传输至数据转换器328。例如,共用的统计信息获取器334可以获取对定点数执行运算的结果的统计信息以及对浮点数执行运算的结果的统计信息。
数据转换器330被耦接至FPU 320的输出。因此,例如,当执行FADDq指令时,可以对FP32执行运算并且可以通过数据转换器330执行从FP32到DFP32的转换。在层L2中使用在层L1中获得的DFP16对FP32进行处理的情况下,数据转换器332将由数据转换器328修正的DFP16的小数点位置恢复成修正之前的小数点位置,并将DFP16转换成FP32。因此,层L2使用非线性函数来执行处理,该非线性函数不接收在层L1中设置的小数点位置。
图13示出了根据另一实施方式的计算处理设备的示例。与图3中示出的部件相同或相似的部件由与图3中示出的符号相同的符号指示并且将不做详细描述。图13中示出的计算处理设备104包括FPU 320A,而不是图3中示出的FPU 320。图3中示出的FPU 320(运算器)被实现为FPU320A中的FPU运算器336。FPU运算器336中的每一个具有与图3中示出的FPU320相同的功能。每一个FPU 320A包括图3中示出的数据转换器330和332以及选择器338,选择器338选择FPU运算器336的输出、数据转换器330的输出和数据转换器332的输出中的任一个,并将数据写回到寄存器文件34。
由数据转换器330执行的从浮点数FP32到动态定点数DFP32的转换作为由FPU320A执行的处理。由数据转换器332执行的从动态定点数DFP16到浮点数FP32的转换作为由FPU 320A执行的处理。数据转换器330接收要转换的原始的FP32和来自寄存器文件34的指示小数点位置的移位信息SFT1作为操作数,并且执行FP32的转换处理。相似地,数据转换器332接收要转换的DFP16和来自寄存器文件34的指示小数点位置的移位信息SFT3作为操作数,并且执行DFP16的转换处理。
以下描述由图13中示出的计算处理设备104执行图4中示出的层L2的处理的情况。首先,从寄存器文件34读取在层L1的处理中获得的DFP16,并且在FPU 320A中由数据转换器332将其转换为FP32,并且将FP32存储在寄存器文件34中。在这种情况下,基于移位信息SFT3,将DFP16的小数点位置恢复成修正之前的小数点位置,并且可以将DFP16转换成FP32。
接下来,FPU运算器336基于浮点运算指令对保持在寄存器文件34中的FP32执行运算,并且运算结果(FP32)被存储在寄存器文件34中。接下来,从寄存器文件34读取由FPU运算器336获得的运算结果(FP32)和移位信息SFT1,并且数据转换器330将FP32转换成具有与移位信息SFT1对应的小数点位置的DFP32。通过转换获得的DFP32被存储在寄存器文件34中。例如,基于由指令解码器24执行的作为浮点运算指令之一的DFP32转换指令的解码,由数据转换器330执行从FP32到DFP32的转换。
例如,通过顺序地执行以下指令来执行通过FPU运算器336的对FP32的运算,并且执行通过数据转换器330将FP32转换为DFP32的处理。指令是具有Fdst、Fsrc1和Fsrc2的FADD以及具有Fdst、Fsrc和Fqsft的FCNVQ32。
FADD指示针对浮点数的加法指令。Fdst、Fsrc1、Fsrc2、Fdst、Fsrc和Fqsft指示寄存器文件34的寄存器号。dst指示目的操作数,并且src指示源操作数。FCNVQ32指令的Fsrc指定与由FADD指令的Fdst指定的寄存器相同的寄存器。qsft指示小数点位置被移位的量。qsft作为移位信息SFT1被输出至数据转换器330。
统计信息获取器334经由选择器324和累加器寄存器326获取从寄存器文件34传输的DFP32的统计信息。统计信息获取器334在小批量处理完成时将所获取的统计信息传输至统计信息聚合器36。统计信息聚合器36使得所传输的统计信息被存储在存储器38中。数据转换器328将存储在寄存器文件34中的DFP32转换成DFP16。例如,经由寄存器文件34将作为层L2的处理结果的DFP16临时存储在外部存储器200等中。在从DFP32到DFP16的转换中,基于移位信息SFT2修正DFP16的小数点位置。在那之后,执行参考图4描述的层L3的处理。
在图13中示出的实施方式可以获得与在图1至图10中示出的实施方式中获得的效果相同或相似的效果。在图13的实施方式中,通过选择器338将FPU运算器336的输出、数据转换器330的输出和数据转换器332的输出中的任一输出可选地耦接至寄存器文件34。因此,与图3相比,可以减少每个运算器32与寄存器文件34之间的信号线的数量。
通过以上详细描述可以详细阐明实施方式的特点和优点。只要权利要求不背离权利要求的主旨和权利范围,则意在扩展如上所述的实施方式的特点和优点。本领域的技术人员可以容易地进行任何修改和改变。因此,不意在将具有发明性的实施方式的范围限制于前面提及的实施方式。适当的修改和等同物也包括在本实施方式公开的范围中。
引用列表
专利文献
[专利文献1]日本特许公开专利公布第2018-124681号
[专利文献2]国际公开册第WO 2018/139266号
[专利文献3]日本特许公开专利公布第2008-059287号
[专利文献4]日本特许公开专利公布第4-190399号
附图标记列表
1 定点运算器
2 浮点运算器
3 第一转换器
4 选择器
5 统计信息获取器
6 更新信息生成器
7 第二转换器
10 存储器访问控制器
20 控制器
22 程序计数器
24 指令解码器
26 运算控制器
30 向量单元
32 运算器
34 寄存器文件
36 统计信息聚合器
38 存储器
39 小数点位置确定器
40 标量单元
42 运算器
44 寄存器文件
100、102、104 计算处理设备
320 FPU
322 ALU
324 选择器
326 累加器寄存器
328、330、332 数据转换器
334 统计信息获取器

Claims (9)

1.一种计算处理设备,其包括:
定点运算器,其对定点数执行运算;
浮点运算器,其对浮点数执行运算;
第一转换器,其将所述浮点运算器的运算结果转换成具有大于第一位宽的第二位宽的定点数;
统计信息获取器,其获取由所述定点运算器输出的定点数和由所述第一转换器输出的定点数中的任何定点数的统计信息;以及
第二转换器,其将已由所述定点运算器输出或者已由所述第一转换器输出且其统计信息已被获取的定点数转换成具有所述第一位宽的定点数。
2.根据权利要求1所述的计算处理设备,还包括:
更新信息生成器,其基于由所述统计信息获取器获取的统计信息生成要用于更新由所述第一转换器输出的定点数的小数点位置的第一更新信息以及要用于更新由所述第二转换器输出的定点数的小数点位置的第二更新信息,其中,
所述第一转换器基于所述第一更新信息设置要输出的定点数的小数点位置,以及
所述第二转换器基于所述第二更新信息设置要输出的定点数的小数点位置。
3.根据权利要求2所述的计算处理设备,其中,
所述更新信息生成器通过向由所述第二更新信息指示的小数点位置添加预定的偏移值来生成所述第一更新信息。
4.根据权利要求3所述的计算处理设备,还包括:
存储单元,在其中存储由所述统计信息获取器获取的统计信息,其中,
所述更新信息生成器基于所述存储单元中存储的统计信息生成所述第一更新信息和所述第二更新信息。
5.根据权利要求1至4中任一项所述的计算处理设备,其中,
所述第二转换器包括将由所述第二转换器转换的并且具有所述第一位宽的定点数转换成浮点数的第三转换器,
所述第三转换器将要转换成浮点数的定点数的小数点位置恢复成在由所述第二转换器进行设置之前的小数点位置,并且将具有所恢复的小数点位置的定点数转换成浮点数,以及
所述浮点运算器对由所述第三转换器转换的浮点数执行运算。
6.根据权利要求1至5中任一项所述的计算处理设备,还包括:
寄存器,其保持由所述第一转换器转换的定点数;以及
选择器,其基于使得所述定点运算器执行运算的运算指令选择由所述定点运算器输出的定点数,并且基于将所述浮点运算器的运算结果传输至所述第二转换器的传输指令选择来自所述第一转换器的保持在所述寄存器中的定点数,其中,
所述统计信息获取器获取由所述选择器选择的定点数的统计信息。
7.根据权利要求1至6中任一项所述的计算处理设备,还包括:
指令解码器,其对指令进行解码,其中,
所述第一转换器被耦接至所述浮点运算器的输出,以及
当所述指令解码器对指示由所述浮点运算器执行运算和由所述第一转换器执行转换的复合指令进行解码时,所述第一转换器将作为所述浮点运算器的运算结果的浮点数转换成具有所述第二位宽的定点数。
8.根据权利要求1至7中任一项所述的计算处理设备,其中,
所述统计信息获取器获取由所述定点运算器输出的定点数的位的分布信息或者由所述第一转换器输出的定点数的位的分布信息作为统计信息。
9.一种控制计算处理设备的方法,所述计算设备包括对定点数执行运算的定点运算器和对浮点数执行运算的浮点运算器,所述方法包括:
将所述浮点运算器的运算结果转换成具有大于第一位宽的第二位宽的定点数;
获取由所述定点运算器输出的定点数和具有所述第二位宽的经转换的定点数中的任何定点数的统计信息;以及
将已由所述定点运算器输出或者已通过转换获得的、具有所述第二位宽、且其统计信息已被获取的定点数转换成具有所述第一位宽的定点数。
CN201911141086.9A 2018-12-18 2019-11-20 计算处理设备和控制计算处理设备的方法 Pending CN111338600A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018-236384 2018-12-18
JP2018236384A JP2020098469A (ja) 2018-12-18 2018-12-18 演算処理装置および演算処理装置の制御方法

Publications (1)

Publication Number Publication Date
CN111338600A true CN111338600A (zh) 2020-06-26

Family

ID=68382209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911141086.9A Pending CN111338600A (zh) 2018-12-18 2019-11-20 计算处理设备和控制计算处理设备的方法

Country Status (4)

Country Link
US (1) US20200192633A1 (zh)
EP (1) EP3671432B1 (zh)
JP (1) JP2020098469A (zh)
CN (1) CN111338600A (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7367595B2 (ja) * 2020-04-07 2023-10-24 富士通株式会社 情報処理装置及び情報処理方法
JP7235171B2 (ja) * 2021-04-06 2023-03-08 三菱電機株式会社 固定小数点演算ビット幅の検証システム及び決定システム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050065990A1 (en) * 2003-09-17 2005-03-24 Catalytic, Inc. Emulation of a fixed point operation using a corresponding floating point operation
CN106990937A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种浮点数处理装置
CN107077415A (zh) * 2014-11-03 2017-08-18 Arm 有限公司 用于执行转换运算的装置和方法
CN107451658A (zh) * 2017-07-24 2017-12-08 杭州菲数科技有限公司 浮点运算定点化方法及系统
CN107769791A (zh) * 2016-08-22 2018-03-06 Arm 有限公司 用于定点到浮点的转换的装置和方法及2的负幂检测器
CN108805796A (zh) * 2017-05-05 2018-11-13 英特尔公司 用于整数深度学习原语的动态精度管理

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04190399A (ja) 1990-11-26 1992-07-08 Oki Electric Ind Co Ltd Vselp符号化方式
JP2008059287A (ja) 2006-08-31 2008-03-13 Brother Ind Ltd 画像処理装置および画像処理プログラム
CN109934331B (zh) * 2016-04-29 2020-06-19 中科寒武纪科技股份有限公司 用于执行人工神经网络正向运算的装置和方法
JP6540725B2 (ja) 2017-01-30 2019-07-10 富士通株式会社 演算処理装置、方法、およびプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050065990A1 (en) * 2003-09-17 2005-03-24 Catalytic, Inc. Emulation of a fixed point operation using a corresponding floating point operation
CN107077415A (zh) * 2014-11-03 2017-08-18 Arm 有限公司 用于执行转换运算的装置和方法
CN106990937A (zh) * 2016-01-20 2017-07-28 南京艾溪信息科技有限公司 一种浮点数处理装置
CN107769791A (zh) * 2016-08-22 2018-03-06 Arm 有限公司 用于定点到浮点的转换的装置和方法及2的负幂检测器
CN108805796A (zh) * 2017-05-05 2018-11-13 英特尔公司 用于整数深度学习原语的动态精度管理
CN107451658A (zh) * 2017-07-24 2017-12-08 杭州菲数科技有限公司 浮点运算定点化方法及系统

Also Published As

Publication number Publication date
EP3671432B1 (en) 2021-06-09
US20200192633A1 (en) 2020-06-18
EP3671432A1 (en) 2020-06-24
JP2020098469A (ja) 2020-06-25

Similar Documents

Publication Publication Date Title
WO2018139266A1 (ja) 演算処理装置、情報処理装置、方法、およびプログラム
US10776109B2 (en) Microprocessor with dynamically adjustable bit width for processing data
CN108416431B (zh) 神经网络微处理器与宏指令处理方法
CN110008952B (zh) 一种目标识别方法及设备
CN108139885B (zh) 浮点数舍入
CN111338600A (zh) 计算处理设备和控制计算处理设备的方法
CN108256645B (zh) 数据位宽可调适的处理器
JP2020135549A (ja) 演算処理装置、情報処理装置および演算処理方法
US20200311545A1 (en) Information processor, information processing method, and storage medium
US20210097397A1 (en) Information processing apparatus and information processing method
CN108288091B (zh) 采布斯乘法的微处理器
TWI776213B (zh) 用於將輸入集相乘之硬體電路及方法,以及非暫時性機器可讀儲存裝置
WO2018131059A1 (ja) ニューラルネットワーク回路
WO2021044227A1 (en) Neural network circuitry having floating point format with asymmetric range
US20200133633A1 (en) Arithmetic processing apparatus and controlling method therefor
CN112215340A (zh) 运算处理设备、控制方法以及计算机可读记录介质
JP7371499B2 (ja) 演算処理装置、演算処理装置の制御方法及び演算処理プログラム
JP2020067897A (ja) 演算処理装置、学習プログラム及び学習方法
CN117785113B (zh) 计算装置及方法、电子设备和存储介质
US20220075598A1 (en) Systems and Methods for Numerical Precision in Digital Multiplier Circuitry
JP2022094508A (ja) 演算処理装置、演算処理方法および演算処理プログラム
CN116820391A (zh) 一种乘法器的运算方法、运算装置、电子设备和存储介质
JP2023000142A (ja) 演算装置
JPH0637592A (ja) ディジタルフィルタ設計法
CN114637488A (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200626

WD01 Invention patent application deemed withdrawn after publication