神经网络装置、操作神经网络装置的方法和应用处理器

文档序号:95722 发布日期:2021-10-12 浏览:17次 >En<

阅读说明:本技术 神经网络装置、操作神经网络装置的方法和应用处理器 (Neural network device, method for operating neural network device, and application processor ) 是由 金贤弼 沈炫宇 安成祐 金厦颂 李度咏 于 2021-04-06 设计创作,主要内容包括:公开了神经网络装置、操作神经网络装置的方法和应用处理器。所述神经网络装置包括:浮点运算电路,被配置为执行点积运算和累加运算;和缓冲器,被配置为存储由浮点运算电路生成的第一累积数据,其中,浮点运算电路还被配置为通过以下操作执行点积运算和累加运算:从第一累积数据的阶码值和通过分别将多个浮点数据对的阶码相加而获得的多个阶码加法结果识别最大值;基于最大值,执行第一累积数据的尾数部分和通过分别将所述多个浮点数据对的尾数相乘而获得的多个尾数乘法结果的对齐移位;和执行多个对齐的尾数乘法结果与第一累积数据的对齐的尾数部分的求和。(Neural network devices, methods of operating neural network devices, and application processors are disclosed. The neural network device includes: a floating-point operation circuit configured to perform a dot product operation and an accumulation operation; and a buffer configured to store the first accumulated data generated by the floating-point operation circuit, wherein the floating-point operation circuit is further configured to perform a dot product operation and an accumulation operation by: identifying a maximum value from the gradation values of the first accumulated data and a plurality of gradation addition results obtained by adding the gradation of the plurality of floating-point data pairs, respectively; performing, based on a maximum value, an alignment shift of a mantissa portion of first accumulated data and a plurality of mantissa multiplication results obtained by multiplying mantissas of the plurality of floating point data pairs, respectively; and performing a summation of the plurality of aligned mantissa multiplication results and the aligned mantissa portion of the first accumulated data.)

神经网络装置、操作神经网络装置的方法和应用处理器

本申请基于并要求于2020年4月7日在韩国知识产权局提交的第10-2020-0042408号韩国专利申请和2021年1月5日在韩国知识产权局提交的第10-2021-0001056号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。

技术领域

公开的示例实施例涉及人工智能领域,更具体地,涉及神经网络装置、操作神经网络装置的方法和应用处理器。

背景技术

神经网络表示对动物大脑的生物网络进行模拟的计算架构。随着近来神经网络技术已经发展,已经对在各种电子系统中使用基于神经网络操作的神经网络装置来分析输入数据并提取有效信息进行了大量研究。

神经网络装置需要针对复杂的输入数据执行大量计算。为了使神经网络装置能够实时分析输入数据并提取信息,需要用于高效地处理神经网络的操作的技术。特别地,低功率高性能系统(诸如,智能电话)具有有限的资源。因此,期望用于减少处理复杂的输入数据所需的计算量并提高人工神经网络的性能的技术。

发明内容

公开的一个或多个示例实施例提供了一种用于在包括浮点运算电路的神经网络装置中执行浮点计算的方法和装置。

根据公开的一方面,提供了一种用于执行神经网络操作的神经网络装置。所述神经网络装置包括:浮点运算电路,被配置为执行点积运算和累加运算;和缓冲器,被配置为存储由浮点运算电路生成的第一累积数据,其中,浮点运算电路还被配置为通过以下操作执行点积运算和累加运算:从第一累积数据的阶码值和通过分别将多个浮点数据对的阶码相加而获得的多个阶码加法结果识别最大值;基于最大值,执行第一累积数据的尾数部分和通过分别将所述多个浮点数据对的尾数相乘而获得的多个尾数乘法结果的对齐移位;和执行多个对齐的尾数乘法结果与第一累积数据的对齐的尾数部分的求和。

根据公开的另一方面,提供了一种神经网络装置的操作方法。所述操作方法包括:接收多个浮点数据对和第一累积数据;从第一累积数据的阶码值和通过分别将所述多个浮点数据对的阶码相加而获得的多个阶码加法结果识别最大值;基于最大值,执行第一累积数据的尾数部分和通过分别将所述多个浮点数据对的尾数相乘而获得的多个尾数乘法结果的对齐移位;将多个对齐的尾数乘法结果与第一累积数据的对齐的尾数部分相加;和基于所述相加的结果生成第二累积数据。

根据公开的再一方面,提供了一种包括神经网络装置的应用处理器,其中,所述神经网络装置被配置为通过以下操作执行点积运算和累加运算:基于第一累积数据的阶码值和通过分别将多个浮点数据对的阶码相加而获得的多个阶码加法结果,执行第一累积数据的尾数部分和通过分别将所述多个浮点数据对的尾数相乘而获得的多个尾数乘法结果的对齐移位;和执行多个对齐的尾数乘法结果与第一累积数据的对齐的尾数部分的求和。

附图说明

通过参照附图描述特定示例实施例,以上和/或其它方面将更加清楚,其中:

图1是根据示例实施例的神经网络系统的示意性框图;

图2示出神经网络架构的示例;

图3A至图3C是浮点数据格式的类型的示例的示图,图3D是整数数据的示例的示图;

图4是根据示例实施例的神经网络装置的操作方法的流程图;

图5是示出根据示例实施例的神经网络系统的操作的示图;

图6是根据示例实施例的神经网络装置的示图;

图7A是根据示例实施例的执行点积运算的浮点运算电路的示图;

图7B是输入到浮点运算电路的浮点数据对的格式类型的示图;

图8A和图8B是根据浮点数据的格式的类型执行位扩展的乘法器的示图;

图9至图12是根据示例实施例的用于描述浮点运算电路的操作的示图;

图13是根据示例实施例的包括在神经网络装置中的运算电路的框图;以及

图14是根据示例实施例的应用处理器的框图。

具体实施方式

在下文中,将参照附图详细描述示例实施例。

图1是根据示例实施例的神经网络系统100的示意性框图。

神经网络系统100可通过使用神经网络对输入数据进行分析来训练神经网络或者从输入数据推断信息。神经网络系统100可基于推断的信息来确定情况,或者控制安装有神经网络系统100的电子装置的元件。例如,神经网络系统100可应用于使用神经网络执行语音识别、图像识别、图像分类等的智能电话、平板装置、智能电视(TV)、增强现实(AR)装置、物联网(IoT)装置、自主车辆、机器人、医疗装置、无人机、高级驾驶员辅助系统(ADAS)、图像显示装置、测量设备等。神经网络系统100可安装在任何其它各种类型的电子装置上。在一个实施例中,图1的神经网络系统100可对应于应用处理器。

参照图1,神经网络系统100可包括中央处理器(CPU)110、神经网络装置120、存储器130和传感器模块140。神经网络系统100还可包括输入/输出模块、安全模块、电源控制器等,并且还可包括各种处理器。在一些实施例中,神经网络系统100的一些或所有元件(例如,CPU 110、神经网络装置120、存储器130和传感器模块140)可形成在单个半导体芯片中。例如,神经网络系统100可被实现为片上系统(SoC)。神经网络系统100的元件可通过总线150彼此进行通信。尽管图1中未示出,但是神经网络系统100还可包括用于与其它知识产权(IP)块进行通信的接口(未示出)。

CPU 110通常控制神经网络系统100的操作。CPU 110可包括单核或多核。CPU 110可处理或执行存储在存储区域(诸如,存储器130)中的程序和/或数据。

例如,CPU 110可执行应用,并且控制神经网络装置120执行在应用的执行中涉及的基于神经网络的任务。神经网络可包括各种神经网络模型(诸如,卷积神经网络(CNN)、区域CNN(R-CNN)、区域候选网络(RPN)、循环神经网络(RNN)、基于堆叠的深度神经网络(S-DNN)、状态空间动态神经网络(S-SDNN)、解卷积网络、深度信念网络(DBN)、受限玻尔兹曼机(RBM)、全卷积网络、长短期记忆(LSTM)网络和分类网络)中的至少一种。

神经网络装置120可基于输入数据执行神经网络操作。神经网络装置120可基于执行神经网络操作的结果生成信息信号。神经网络装置120可包括神经网络操作加速器、协处理器、数字信号处理器(DSP)、专用集成电路(ASIC)等。在一些实施例中,神经网络装置120可包括至少一个神经处理电路集群。

根据示例实施例,神经网络装置120可包括浮点运算电路20,并且基于浮点计算来执行神经网络操作。浮点运算电路20可对多条浮点数据执行点积运算并累积点积结果。多条浮点数据可被划分成用于点积运算的多个浮点数据对,并且被输入到浮点运算电路20。

神经网络可包括实数(例如,被表示为浮点数的浮点数据)。例如,浮点数据可包括特征图、内核(或权重图)、偏置等。当数据使用浮点表示时,数据可被表示为具有宽范围的值,并且实数的近似值可被适当地表示。

在一个示例实施例中,浮点运算电路20可支持对具有各种类型格式的浮点数据的点积运算。浮点运算电路20可扩展浮点数据的阶码(exponent,又称为指数)位字段和尾数(fraction)位字段中的至少一个以适合于约定的位宽,使得一起对具有不同类型的格式的多条浮点数据执行点积运算。

在一个示例实施例中,浮点运算电路20可在点积运算中对浮点数据对执行阶码加法运算(例如,分别将浮点数据对的阶码相加)并且对浮点数据对执行尾数乘法运算(例如,分别将浮点数据对的尾数相乘),从而生成对应于每个浮点数据对的阶码加法结果和尾数乘法结果。

在一个示例实施例中,浮点运算电路20可通过将累积数据与点积运算中的尾数乘法结果相加来执行累加运算。累积数据可通过累加神经网络装置120的点积结果而被生成,并且被存储在神经网络装置120的缓冲器(未示出)中。

在一个示例实施例中,在将累积数据与尾数乘法结果相加之前,浮点运算电路20可执行对齐移位以将尾数乘法结果和累积数据的浮点彼此对齐。浮点运算电路20可基于从累积数据的阶码值和阶码加法结果识别的最大值来执行累积数据的尾数部分和尾数乘法结果的对齐移位。

包括在用于点积运算的浮点运算电路20中的对齐移位器的可移位宽可被减小到不影响神经网络系统100所需的运算准确度的程度。因此,对齐移位器的大小和神经网络装置120的功耗可被减小,点积运算速度可被增大。当神经网络系统100需要相对高的计算准确度时,浮点运算电路20的对齐移位器可被设计为以相对长的位宽对数据进行对齐。当神经网络系统100所需的计算准确度相对低时,浮点运算电路20的对齐移位器可被设计为以相对短的位宽对数据进行对齐。

在一个示例实施例中,浮点运算电路20可通过将对齐的尾数乘法结果与累积数据的对齐的尾数部分相加来一起执行点积运算和累加运算。为了进行这个操作,浮点运算电路20可包括加法器(未示出),加法器同时接收对齐的尾数乘法结果和累积数据的对齐的尾数部分。

在一个示例实施例中,浮点运算电路20的加法器可包括彼此分离的第一加法器电路和第二加法器电路。例如,第一加法器电路可将对齐的尾数乘法结果的较高位与累积数据的对齐的尾数部分的较高位相加,第二加法器电路可将对齐的尾数乘法结果的较低位与累积数据的对齐的尾数部分的较低位相加。第一加法器电路和第二加法器电路彼此分离的配置可适合于针对从加法器输出的加法结果数据的前导1检测(leading one detection),并且可优化加法器之后的逻辑(例如,后加法器)。以下将描述前导1检测的示例实施例。

神经网络装置120还可包括执行整数乘法运算的整数乘法器(未示出),第一加法器电路和第二加法器电路中的一个可被整数乘法器共用。因此,对于整数乘法运算不需要另一加法器,因此,神经网络装置120的大小和功耗可被减小。以下将描述与整数计算模式下的浮点运算电路20的操作有关的示例实施例。

在一个示例实施例中,浮点运算电路20可通过对从加法器输出的加法结果数据执行诸如归一化和取整的操作来生成新的累积数据。新的累积数据可被存储在浮点运算电路20的缓冲器(未示出)中。

在一个示例实施例中,包括在浮点运算电路20中的对齐移位器(未示出)、加法器(未示出)等可在大小上相对小。因此,浮点运算电路20可相对快地进行操作,具有低功耗,并且减小在执行点积运算时使用的资源量。

神经网络装置120可从存储器130接收多条浮点数据FPD作为输入数据,并且可使用浮点运算电路20对浮点数据FPD执行点积运算。神经网络装置120可使用浮点运算电路20累积多个点积结果。累积数据可被存储在神经网络装置120的缓冲器(未示出)中。

神经网络装置120可使用浮点数据FPD执行神经网络操作,并且将操作结果存储在存储器130中。神经网络装置120可输出作为操作结果生成的浮点数据FPD。在一个示例实施例中,输入到浮点运算电路20的输入数据的格式类型可与从浮点运算电路20输出的输出数据的格式类型不同。例如,输入数据可具有浮点16(FP16)类型格式或脑浮点16(brainfloat 16,BF16)类型格式,输出数据可具有浮点32(FP32)类型格式。换句话说,16位数据可被输入到浮点运算电路20,32位数据可作为点积运算和累加运算的结果被输出。然而,这仅是示例实施例,并且公开的实施例不限于此。浮点运算电路20可根据应用于神经网络系统100的标准接收具有第一类型格式的数据并在执行点积运算和累加运算之后输出具有第二类型格式的数据。

神经网络装置120可使用浮点运算电路20对从存储器130接收的浮点数据FPD执行点积运算和累加运算,并且将与操作结果对应的浮点数据FPD存储在存储器130中。在一些实施例中,神经网络装置120可在没有CPU 110的干预的情况下通过总线150与存储器130交换浮点数据FPD。换句话说,神经网络装置120可直接与存储器130交换浮点数据FPD。

存储器130可存储在神经网络系统100中使用的程序和/或数据。存储器130还可存储用于神经网络的操作参数(例如,权重、偏置等)、用于神经网络的量化的参数(例如,比例因子、偏置等)、输入数据(例如,输入特征图)和输出数据(例如,输出特征图)。操作参数、量化参数、输入数据和输出数据可被包括在浮点数据FPD中。

存储器130可包括动态随机存取存储器(DRAM),但不限于此。存储器130可包括易失性存储器和非易失性存储器中的至少一种。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存、相变RAM(PRAM)、磁RAM(MRAM)、电阻式RAM(RRAM)和铁电RAM(FRAM)。易失性存储器可包括DRAM、静态RAM(SRAM)和同步DRAM(SDRAM)。在一个实施例中,存储器130可包括硬盘驱动器(HDD)、固态驱动器(SSD)、紧凑型闪存(CF)卡、安全数字(SD)卡、微型SD卡、迷你SD卡、极限数字(xD)卡和记忆棒中的至少一个。

传感器模块140可收集关于安装有神经网络系统100的电子装置的周围环境的信息。传感器模块140可从电子装置的外部感测或接收信号(例如,图像信号、声音信号、磁信号、生物信号和触摸信号),并且将感测到或接收到的信号转换为感测数据。为了进行这种操作,传感器模块140可包括各种感测装置(诸如,麦克风、成像装置、图像传感器、光检测和测距(LIDAR)传感器、超声传感器、红外传感器、生物传感器、触摸传感器等)中的至少一种。

感测数据可作为输入数据被提供给神经网络装置120或者被存储在存储器130中。存储在存储器130中的感测数据可被提供给神经网络装置120。在一个实施例中,神经网络系统100还可包括处理图像数据的图形处理器(GPU),并且感测数据可由GPU进行处理,然后被提供给存储器130或神经网络装置120。

例如,传感器模块140可包括图像传感器,并且可拍摄电子装置的外部环境并生成图像数据。从传感器模块140输出的图像数据或由GPU处理的图像数据可包括浮点数据,并且可被直接提供给浮点运算电路20或者在被提供给浮点运算电路20之前被存储在存储器130中。在一些实施例中,神经网络系统100还可包括预处理器或后处理器,预处理器对将被输入到神经网络装置120的数据进行处理,后处理器对从神经网络装置120输出的数据进行处理。

在一些实施例中,图1的神经网络系统100可不包括传感器模块140,并且可通过接口从单独设置的传感器模块(未示出)等接收输入数据。

图2示出神经网络架构的示例。参照图2,神经网络NN可包括多个层(例如,第一层至第n层L1、L2、……、Ln)。具有这样的多层架构的神经网络NN可被称为深度神经网络(DNN)或深度学习架构。第一层L1至第n层Ln中的每个可包括线性层或非线性层。在一个实施例中,至少一个线性层可与至少一个非线性层进行组合,从而形成单个层。例如,线性层可包括卷积层和全连接层,非线性层可包括池化层和激活层。

例如,第一层L1可对应于卷积层,第二层L2可对应于池化层,第n层Ln可对应于作为输出层的全连接层。神经网络NN还可包括激活层,并且还可包括执行其它类型的操作的其它层。

第一层L1至第N层Ln中的每个可接收在前一层中生成的图像帧或特征图作为输入特征图,并且可通过对输入特征图执行操作来生成输出特征图或识别信号REC。此时,特征图表示代表输入数据的各种特征的数据。例如,第一特征图至第n特征图FM1、FM2、FM3、……、FMn可具有包括多个特征值的二维矩阵形式或三维矩阵(或张量)形式。第一特征图FM1至第n特征图FMn可具有宽度W(或列)、高度H(或行)和深度D,宽度W(或列)、高度H(或行)和深度D可分别对应于坐标系中的x轴、y轴和z轴。此时,深度D可被称为通道的数量。

第一层L1可通过对第一特征图FM1和权重图WM执行卷积来生成第二特征图FM2。权重图WM可具有包括多个权重的二维矩阵形式或三维矩阵形式。权重图WM可被称为内核。权重图WM可对第一特征图FM1进行滤波,并且可被称为滤波器或内核。权重图WM的深度(即,通道的数量)可与第一特征图FM1的深度(即,通道的数量)相同。可对权重图WM和第一特征图FM1两者中的相同的通道执行卷积。可通过使用滑动窗口遍历第一特征图FM1来在第一特征图FM1上移位权重图WM。在移位期间,包括在权重图WM中的每个权重可和权重图WM与第一特征图FM1重叠的区域中的所有特征值相乘并相加。可通过对第一特征图FM1和权重图WM执行卷积来生成第二特征图FM2的一个通道。尽管在图2中仅示出一个权重图WM,但是可将多个权重图WM与第一特征图FM1进行卷积,使得可生成第二特征图FM2的多个通道。换句话说,第二特征图FM2的通道的数量可对应于权重图的数量。

第二层L2可通过池化改变第二特征图FM2的空间大小来生成第三特征图FM3。池化可被称为采样或下采样。二维池化窗口PW可在第二特征图FM2上以池化窗口PW的大小为单位被移位,并且池化窗口PW与第二特征图FM2重叠的区域中的特征值(或特征值的平均)之中的最大值可被选择。这样,可通过改变第二特征图FM2的空间大小来生成第三特征图FM3。第三特征图FM3的通道的数量可与第二特征图FM2的通道的数量相同。

第n层Ln可组合第n特征图FMn的特征,并且对输入数据的类别CL进行分类。第n层Ln还可生成与类别CL对应的识别信号REC。例如,当输入数据对应于图像数据并且神经网络NN执行图像识别时,第n层Ln可基于从前一层提供的第n特征图FMn提取与由图像数据表示的图像的对象对应的类别,识别对象,并且生成与对象对应的识别信号REC。

如以上参照图2所述,神经网络NN可具有复杂的架构,并且执行神经网络操作的神经网络装置执行从数亿到数百亿的大量操作。根据示例实施例,图1的神经网络装置120将对齐移位器、加法器等的配置简化到神经网络操作的准确度不受影响的程度,并且使用简化的配置执行高效的网络操作,从而减小功耗及其设计面积,并增大其操作速度。

图3A至图3C是浮点数据格式的类型的示例的示图,图3D是整数数据的示例的示图。

参照图3A,浮点数据可用符号和1.a×2b的形式表示,其中“b”是阶码,“a”是尾数。根据作为浮点运算的标准的电气和电子工程师协会(IEEE)754-2008,在第一类型格式的情况下,32位浮点数据包括表示符号的一个位、表示阶码的8个位和表示尾数的23个位。如图3A中所示,最高有效位(MSB)可表示符号Sn,MSB之后的8个位可表示阶码En,剩余的23个位可表示尾数Fn(或有效数字)。在下文中,具有第一类型格式的浮点数据可被称为浮点32(FP32)。

参照图3B,在第二类型格式的情况下,根据IEEE 754-2008标准,16位浮点数据包括表示符号Sn的一个位、表示阶码En的5个位和表示尾数Fn的10个位。换句话说,MSB之后的5个位可表示阶码,剩余的10个位可表示尾数(或有效数字)。在下文中,具有第二类型格式的浮点数据可被称为浮点16(FP16)。

参照图3C,在第三类型格式的情况下,16位浮点数据包括表示符号Sn的一个位、表示阶码En的8个位和表示尾数Fn的7个位。换句话说,MSB之后的8个位可表示阶码,剩余的7个位可表示尾数(或有效数字)。在下文中,具有第三类型格式的浮点数据可被称为脑浮点16(BF16)。

参照图3D,可根据符号的存在或不存在和数据大小(例如,位的数量)以各种类型表示整数格式的数据。例如,如图3D中所示,通常用于计算的整数可被表示为包括符号的8位数据(例如,2的补码)。此时,在有符号数的情况下,MSB表示符号,随后的7个位表示整数INTn,并且有符号数具有的大小。在无符号数的情况下,无符号数是正数并且具有的大小。

根据示例实施例,神经网络装置可接收与第一类型格式至第三类型格式中的至少一种对应的浮点数据,并且执行点积运算和累加运算。例如,神经网络装置可接收与FP16类型格式、BF16类型格式和FP32类型格式中的至少一种对应的浮点数据,并且对浮点数据执行点积运算和累加运算,从而输出具有FP32类型格式的累积数据。然而,这仅是示例实施例,并且实施例不限于此。神经网络装置可接收具有其它各种类型格式的浮点数据,并且执行点积运算和累加运算,从而输出具有神经网络系统所需的约定格式的累积数据。

图4是根据示例实施例的神经网络装置的操作方法的流程图。图4的操作方法可由图1中的神经网络装置120执行以用于神经网络操作。为了理解,在描述中还将参照图1。

参照图4,在操作S100,神经网络装置120可从存储器130接收多个浮点数据对。浮点数据对可包括在神经网络操作中使用的输入特征值、权重、函数的系数等。当神经网络装置120对量化的神经网络进行处理时,浮点数据对可包括量化参数。例如,量化参数可包括比例因子(或逆比例因子)、偏置等。

在操作S110中,神经网络装置120可扩展浮点数据对的位字段。神经网络装置120可将数据的阶码位字段和尾数位字段中的一个扩展为适合于约定的位宽,以对浮点数据对一起执行点积运算。这将参照图8A和图8B详细描述。

在操作S120中,神经网络装置120可对每个浮点数据对执行点积运算和累加运算。神经网络装置120可对浮点数据对执行阶码加法运算和尾数乘法运算。神经网络装置120可从分别与浮点数据对对应的阶码加法结果和累积数据的阶码值识别最大值。神经网络装置120可基于最大值执行分别与浮点数据对对应的尾数乘法结果和累积数据的尾数部分的对齐移位,并且将对齐的尾数乘法结果与累积数据的对齐的尾数部分相加。神经网络装置120可使用加法结果数据生成新的累积数据。除了操作S120中的点积运算之外,神经网络装置120还可执行包括卷积、池化等的神经网络操作。

在操作S130中,神经网络装置120可将在操作S120中生成的最终数据存储在存储器130中。

图5是示出根据示例实施例的神经网络系统100的操作的示图。

参照图5,在操作S1,神经网络装置120可从存储器130接收浮点输入数据FPID。在一些实施例中,可在没有CPU 110的干预的情况下通过总线150将浮点输入数据FPID从存储器130发送到神经网络装置120。例如,神经网络装置120可包括直接存储器访问(DMA)控制器,DMA控制器可对存储器130进行访问并且读取浮点输入数据FPID。神经网络装置120可使用浮点运算电路20对浮点输入数据FPID执行包括点积运算和累加运算的神经网络操作。在操作S2中,神经网络装置120可生成作为神经网络操作的结果的浮点输出数据FPOD,并且将浮点输出数据FPOD发送到存储器130。

如上所述,根据示例实施例,神经网络装置120可以以低功耗快速且高效地执行点积运算和累加运算。

图6是根据示例实施例的神经网络装置120的示图。为了便于描述,还示出了存储器130。

参照图6,神经网络装置120可包括DMA控制器10和神经网络处理器30。在一个示例实施例中,神经网络处理器30可包括根据示例实施例的浮点运算电路20,浮点运算电路20可执行点积运算和累加运算。

DMA控制器10可直接与存储器130进行通信。DMA控制器10可从存储器130接收输入数据(例如,浮点输入数据FPID)并将作为神经网络操作的结果而生成的输出数据(例如,浮点输出数据FPOD)发送到存储器130,而不由其它处理器(诸如,CPU和GPU)进行干预。例如,浮点输入数据FPID可包括输入特征图IFM、操作参数PM或权重图(或内核参数)。浮点输入数据FPID还可包括量化参数。

浮点运算电路20可对浮点输入数据FPID执行点积运算和累加运算。浮点运算电路20可对每个浮点数据对执行点积运算,浮点输入数据FPID被划分为进行点积运算的一对数据的浮点数据对。浮点运算电路20可对每个浮点数据对执行包括阶码加法运算和尾数乘法运算的点积运算。

在一个示例实施例中,在点积运算和累加运算中,浮点运算电路20可基于累积数据的阶码值和分别与浮点数据对对应的阶码加法结果,一起执行累积数据的尾数部分和分别与浮点数据对对应的尾数乘法结果的对齐移位,然后将尾数乘法结果与累积数据的尾数部分相加。在一个示例实施例中,浮点运算电路20可从阶码加法结果和累积数据的阶码值识别最大值;沿对应于每个阶码加法结果与最大值之间的差的方向按位数执行每个尾数乘法结果的对齐移位,该位数对应于每个阶码加法结果与最大值之间的差;以及沿对应于累积数据的阶码值与最大值之间的差的方向按位数执行累积数据的尾数部分的对齐移位,该位数对应于累积数据的阶码值与最大值之间的差。在一个示例中,当阶码加法结果或累积数据的阶码值与最大值之间的差为零时,不执行相应的尾数乘法结果或累积数据的尾数部分的对齐移位,当阶码加法结果或累积数据的阶码值与最大值之间的差不为零时,将相应的尾数乘法结果或累积数据的尾数部分沿朝向最低有效位的方向进行移位。浮点运算电路20可通过将对齐的尾数乘法结果与累积数据的对齐的尾数部分相加来同时执行点积运算和累加运算,从而生成新的累积数据。

在浮点运算电路20的操作之前或之后,除了浮点计算之外,神经网络处理器30还可执行神经网络操作(诸如,卷积或池化),并且生成浮点输出数据FPOD。例如,浮点输出数据FPOD可包括输出特征图OFM。

神经网络处理器30可包括处理元件阵列,处理元件阵列包括多个处理元件。尽管未示出,但是神经网络处理器30可包括控制器和存储神经网络参数(诸如,偏置、权重、输入特征和输出特征)的缓冲器。处理元件可形成浮点运算电路20,神经网络处理器30可使用浮点运算电路20执行根据示例实施例的基于浮点的计算的神经网络操作。

在下文中,将描述浮点运算电路20的配置和操作。

图7A是根据示例实施例的执行点积运算的浮点运算电路20的示图,图7B是输入到浮点运算电路20的浮点数据对P1、P2和P3的格式类型的示图。

参照图7A,浮点运算电路20可包括乘法器21(或浮点乘法器)、符号和阶码计算器22、对齐移位器23、加法器24、后加法器25以及缓冲器26。加法器24之后的逻辑被统称为后加法器25。后加法器25可包括前导1检测电路25_1、归一化和取整电路25_2和累积数据生成电路25_3。

浮点运算电路20可从缓冲器26接收第一累积数据ACC1。第一累积数据ACC1的符号ACC1_S和阶码ACC1_E可被输入到符号和阶码计算器22,第一累积数据ACC1的尾数ACC1_F可被输入到对齐移位器23。

浮点运算电路20可对第一浮点数据对至第四浮点数据对执行点积运算。第一浮点数据对可包括第一浮点数据IN_A1和第二浮点数据IN_B1,第二浮点数据对可包括第三浮点数据IN_A2和第四浮点数据IN_B2,第三浮点数据对可包括第五浮点数据IN_A3和第六浮点数据IN_B3,第四浮点数据对可包括第七浮点数据IN_A4和第八浮点数据IN_B4。第一浮点数据至第八浮点数据IN_A1、IN_B1、IN_A2、IN_B2、IN_A3、IN_B3、IN_A4和IN_B4的相应的符号Sa1、Sb1、Sa2、Sb2、Sa3、Sb3、Sa4和Sb4以及相应的阶码Ea1、Eb1、Ea2、Eb2、Ea3、Eb3、Ea4和Eb4可被输入到符号和阶码计算器22。第一浮点数据至第八浮点数据IN_A1、IN_B1、IN_A2、IN_B2、IN_A3、IN_B3、IN_A4和IN_B4的相应的尾数Fa1、Fb1、Fa2、Fb2、Fa3、Fb3、Fa4和Fb4可被输入到乘法器21。

乘法器21可通过对尾数Fa1、Fb1、Fa2、Fb2、Fa3、Fb3、Fa4和Fb4执行乘法运算来生成第一尾数乘法结果至第四尾数乘法结果F_mul1、F_mul2、F_mul3和F_mul4,并且将第一尾数乘法结果至第四尾数乘法结果F_mul1、F_mul2、F_mul3和F_mul4提供给对齐移位器23。在一个示例实施例中,乘法器21可包括11位乘法器或具有扩展的位数的24位乘法器或32位乘法器。

符号和阶码计算器22可通过基于符号Sa1、Sb1、Sa2、Sb2、Sa3、Sb3、Sa4和Sb4以及阶码Ea1、Eb1、Ea2、Eb2、Ea3、Eb3、Ea4和Eb4确定符号并执行阶码加法运算来生成阶码信息EI和符号信息SI。

在一个示例实施例中,符号和阶码计算器22可从阶码加法结果和第一累积数据ACC1的阶码ACC1_E的值(或阶码值)识别最大值,并且基于最大值生成提供给对齐移位器23的第一移位信息SH1。第一移位信息SH1可包括关于移位方向和移位量的信息,第一移位信息SH1对应于来自乘法器21的第一尾数乘法结果至第四尾数乘法结果F_mul1、F_mul2、F_mul3和F_mul4中的每个以及第一累积数据ACC1的尾数ACC1_F。详细地,符号和阶码计算器22可生成第一移位信息SH1,以沿对应于阶码加法结果和第一累积数据ACC1的阶码ACC1_E中的每个与最大值之间的差对应的方向按位数执行第一尾数乘法结果至第四尾数乘法结果F_mul1、F_mul2、F_mul3和F_mul4中的每个以及第一累积数据ACC1的尾数ACC1_F的对齐移位,该位数对应于阶码加法结果和第一累积数据ACC1的阶码ACC1_E中的每个与最大值之间的差。

在一个示例实施例中,对齐移位器23可基于第一移位信息SH1执行第一尾数乘法结果至第四尾数乘法结果F_mul1、F_mul2、F_mul3和F_mul4以及第一累积数据ACC1的尾数ACC1_F的对齐移位,并且将第一对齐的尾数乘法结果至第四对齐的尾数乘法结果F_align1、F_align2、F_align3和F_align4以及对齐的尾数ACC1_F_align提供给加法器24。

在一个示例实施例中,加法器24可同时接收第一对齐的尾数乘法结果至第四对齐的尾数乘法结果F_align1、F_align2、F_align3和F_align4以及对齐的尾数ACC1_F_align,以便同时执行点积运算和累加运算。加法器24可包括第一加法器电路24_1和第二加法器电路24_2。第一加法器电路24_1可通过将第一对齐的尾数乘法结果至第四对齐的尾数乘法结果F_align1、F_align2、F_align3和F_align4以及对齐的尾数ACC1_F_align的较高位相加来生成第一加法结果数据F_add1,其中,较高位包括第一对齐的尾数乘法结果至第四对齐的尾数乘法结果F_align1、F_align2、F_align3和F_align4以及对齐的尾数ACC1_F_align的相应的MSB。第二加法器电路24_2可通过将第一对齐的尾数乘法结果至第四对齐的尾数乘法结果F_align1、F_align2、F_align3和F_align4以及对齐的尾数ACC1_F_align的较低位相加来生成第二加法结果数据F_add2,其中,较低位包括第一对齐的尾数乘法结果至第四对齐的尾数乘法结果F_align1、F_align2、F_align3和F_align4以及对齐的尾数ACC1_F_align的相应的最低有效位(LSB)。

根据示例实施例,加法器24的第一加法器电路24_1和第二加法器电路24_2中的一个可被执行整数乘法运算的整数乘法器共用,因此被用于浮点计算、整数计算等。因此,可有效地减小包括浮点运算电路20的神经网络装置的大小。

在一个示例实施例中,后加法器25可接收第一加法结果数据F_add1和第二加法结果数据F_add2,并且生成第二累积数据ACC2。

前导1检测电路25_1可并行地执行对第三加法结果数据的第一数量的较高位的第一前导1检测和对第三加法结果数据的第二数量的较低位的第二前导1检测,其中,第三加法结果数据从第一加法结果数据F_add1和第二加法结果数据F_add2的求和产生,较高位包括第三加法结果数据的MSB,较低位包括第三加法结果数据的LSB。换句话说,前导1检测电路25_1可在第一前导1检测期间沿从MSB朝向较低位的方向移位第三加法结果数据的较高位的同时对“1”进行检测。此时,可移位的最大数量可与第一数量相同。前导1检测电路25_1可在第二前导1检测期间沿从LSB朝向较高位的方向移位第三加法结果数据的较低位的同时对“1”进行检测。此时,可移位的最大数量可与第二数量相同。在一个示例实施例中,第一数量可与第二数量不同。例如,第一数量可小于第二数量。前导1检测电路25_1可基于第一前导1检测和第二前导1检测的结果来执行第三加法结果数据的移位。详细地,前导1检测电路25_1可沿对应于已经检测到“1”的第一前导1检测或第二前导1检测的结果的移位方向按位数执行第三加法结果数据的移位,该位数对应于第一前导1检测或第二前导1检测的结果。

归一化和取整电路25_2可根据“1”的位置对移位的第三加法结果数据执行归一化,并且根据从浮点运算电路20输出的数据的格式的位数对移位的第三加法结果数据执行取整。

累积数据生成电路25_3可通过基于阶码信息EI和符号信息SI来反映归一化和取整的第三加法结果数据中的阶码值和符号,以生成第二累积数据ACC2,并且将第二累积数据ACC2存储在缓冲器26中。

参照图7B,在第一种情况“情况1”下,浮点运算电路20可接收第一浮点数据IN_A和第二浮点数据IN_B,第一浮点数据IN_A和第二浮点数据IN_B具有用于点积运算的相同的类型格式。第一浮点数据IN_A和第二浮点数据IN_B的相应的符号位字段Sa和Sb可具有相同的宽度,第一浮点数据IN_A和第二浮点数据IN_B的相应的阶码位字段Ea和Eb可具有相同的宽度,并且第一浮点数据IN_A和第二浮点数据IN_B的相应的尾数位字段Fa和Fb可具有相同的宽度。例如,第一浮点数据IN_A和第二浮点数据IN_B可具有FP16类型格式。

在第二种情况“情况2”下,浮点运算电路20可接收第一浮点数据IN_A和第二浮点数据IN_B,第一浮点数据IN_A和第二浮点数据IN_B具有用于点积运算的不同的类型格式。第一浮点数据IN_A和第二浮点数据IN_B的相应的符号位字段Sa和Sb可具有彼此相同的宽度,第一浮点数据IN_A和第二浮点数据IN_B的相应的阶码位字段Ea和Eb可具有彼此不同的宽度,并且第一浮点数据IN_A和第二浮点数据IN_B的相应的尾数位字段Fa和Fb可具有彼此不同的宽度。例如,第一浮点数据IN_A和第二浮点数据IN_B可分别具有FP16类型格式和BF16类型格式。

在第三种情况“情况3”下,浮点运算电路20可接收第一浮点数据IN_A和第二浮点数据IN_B,第一浮点数据IN_A和第二浮点数据IN_B具有用于点积运算的相同的类型格式。第一浮点数据IN_A和第二浮点数据IN_B的相应的符号位字段Sa和Sb可具有相同的宽度,第一浮点数据IN_A和第二浮点数据IN_B的相应的阶码位字段Ea和Eb可具有相同的宽度,并且第一浮点数据IN_A和第二浮点数据IN_B的相应的尾数位字段Fa和Fb可具有相同的宽度。例如,第一浮点数据IN_A和第二浮点数据IN_B可具有BF16类型格式。

参照图7A和图7B给出的关于浮点运算电路20的描述仅是示例,并且实施例不限于此。浮点运算电路20可以以各种方式实现。浮点运算电路20可接收具有各种类型格式的各种数量的浮点数据,并对具有各种类型格式的各种数量的浮点数据执行点积运算。

图8A和图8B是根据浮点数据的格式的类型执行位扩展的乘法器21的示图。

参照图8A,乘法器21可包括位扩展电路21_1。在一个示例实施例中,位扩展电路21_1可根据浮点数据的格式的类型,对包括在浮点数据中的阶码位字段和尾数位字段中的至少一个进行扩展。例如,位扩展电路21_1可接收第一类型的浮点数据INtype1,按原样输出浮点数据INtype1的阶码Etype1,并且将浮点数据INtype1的尾数Ftype1的位字段扩展到约定的第一位宽。约定的第一位宽可与第二类型的浮点数据INtype2的尾数Ftype2的位宽、图7A的乘法器21的位宽、浮点运算电路的输出数据中的位的数量以及输出数据的格式的类型中的至少一个有关。

参照图8B,位扩展电路21_1可接收第二类型的浮点数据INtype2,将浮点数据INtype2的阶码Etype2的位字段扩展到约定的第二位宽,并且按原样输出浮点数据INtype2的尾数Ftype2。约定的第二位宽可与第一类型的浮点数据INtype1的阶码Etype1的位宽有关。

例如,当第一类型是BF16并且第二类型是FP16时,根据FP16的尾数Ftype2的位宽,第一位宽可已经被约定为11位(与FP16的尾数Ftype2的位宽对应的10个位与1个位的和)。换句话说,具有BF16格式的浮点数据INtype1的尾数Ftype1可被扩展为对应于具有FP16格式的浮点数据INtype2的尾数Ftype2的位宽,然后进行乘法运算。

例如,根据BF16的阶码Etype1的位宽,第二位宽可已经被约定为8位。换句话说,具有FP16格式的浮点数据INtype2的阶码Etype2可被扩展为对应于具有BF16格式的浮点数据INtype1的阶码Etype1的位宽,然后进行加法运算。

图9至图12是根据示例实施例的用于描述浮点运算电路20a、20b、20c和20d的操作的示图。

参照图9,浮点运算电路20a可包括第一复用器至第六复用器M11、M21、M31、M41、M51和M61、异或(XOR)电路XOR、最大树电路MT、第一加法器元件AE11以及乘法器元件ME。

当浮点运算电路20a在整数计算模式下进行操作时,第一复用器M11至第六复用器M61可响应于信号IS_FLOAT而输出“0”。因为从第一复用器M11至第六复用器M61输出“0”,所以浮点运算电路20a中的用于浮点计算的元件可被去激活。在下文中,将基于浮点运算电路20a在浮点计算模式下进行操作的事实进行描述。

浮点运算电路20a可接收第一浮点数据至第八浮点数据IN_A1、IN_B1、IN_A2、IN_B2、IN_A3、IN_B3、IN_A4和IN_B4以及第一累积数据ACC1。第一复用器M11可将第一浮点数据IN_A1、第三浮点数据IN_A2、第五浮点数据IN_A3和第七浮点数据IN_A4的相应的符号Sa顺序地输出到异或电路XOR。第二复用器M21可将第二浮点数据IN_B1、第四浮点数据IN_B2、第六浮点数据IN_B3和第八浮点数据IN_B4的相应的符号Sb顺序地输出到异或电路XOR。异或电路XOR可对符号Sa和符号Sb执行异或运算,并且生成符号信息SI。

第三复用器M31可将第一浮点数据IN_A1、第三浮点数据IN_A2、第五浮点数据IN_A3和第七浮点数据IN_A4的相应的第一阶码Ea顺序地输出到最大树电路MT和第一加法器元件AE11中的每个。第四复用器M41可将第二浮点数据IN_B1、第四浮点数据IN_B2、第六浮点数据IN_B3和第八浮点数据IN_B4的相应的第二阶码Eb顺序地输出到最大树电路MT和第一加法器元件AE11中的每个。

最大树电路MT可接收第一累积数据ACC1的第三阶码ACC1_E以及第一阶码Ea和第二阶码Eb,并且识别并输出用于对齐移位的最大值Max_E。在一个示例实施例中,最大树电路MT可对每对对应的第一阶码Ea和第二阶码Eb执行加法运算,将多个阶码加法结果和第三阶码ACC1_E彼此进行比较,并且输出最大的阶码值作为最大值Max_E。

第一加法器元件AE11可通过对每对对应的第一阶码Ea和第二阶码Eb(例如,一对浮点数据IN_A1和IN_B1的第一阶码Ea和第二阶码Eb、一对浮点数据IN_A2和IN_B2的第一阶码Ea和第二阶码Eb、一对浮点数据IN_A3和IN_B3的第一阶码Ea和第二阶码Eb、以及一对浮点数据IN_A4和IN_B4的第一阶码Ea和第二阶码Eb)执行加法运算来输出第一阶码加法结果至第四阶码加法结果E_add1、E_add2、E_add3和E_add4。

第五复用器M51可将第一浮点数据IN_A1、第三浮点数据IN_A2、第五浮点数据IN_A3和第七浮点数据IN_A4的相应的第一尾数Fa顺序地输出到乘法器元件ME。第六复用器M61可将第二浮点数据IN_B1、第四浮点数据IN_B2、第六浮点数据IN_B3和第八浮点数据IN_B4的相应的第二尾数Fb顺序地输出到乘法器元件ME。

乘法器元件ME可通过对每对对应的第一尾数Fa和第二尾数Fb(例如,一对浮点数据IN_A1和IN_B1的第一尾数Fa和第二尾数Fb、一对浮点数据IN_A2和IN_B2的第一尾数Fa和第二尾数Fb、一对浮点数据IN_A3和IN_B3的第一尾数Fa和第二尾数Fb、以及一对浮点数据IN_A4和IN_B4的第一尾数Fa和第二尾数Fb)执行乘法运算来输出第一尾数乘法结果至第四尾数乘法结果F_mul1、F_mul2、F_mul3和F_mul4。

进一步参照图10,浮点运算电路20b可包括第一反相器至第四反相器IVT1、IVT2、IVT3和IVT4、第七复用器至第十复用器M12、M22、M32和M42、第一移位电路至第五移位电路SHT11、SHT21、SHT31、SHT41和SHT51、以及第一减法器元件至第五减法器元件SBE1、SBE2、SBE3、SBE4和SBE5。

第七复用器M12可接收第一尾数乘法结果F_mul1和从第一反相器IVT1输出的第一反相的尾数乘法结果。第八复用器M22可接收第二尾数乘法结果F_mul2和从第二反相器IVT2输出的第二反相的尾数乘法结果。第九复用器M32可接收第三尾数乘法结果F_mul3和从第三反相器IVT3输出的第三反相的尾数乘法结果。第十复用器M42可接收第四尾数乘法结果F_mul4和从第四反相器IVT4输出的第四反相的尾数乘法结果。

第七复用器M12至第十复用器M42中的每个可响应于符号信息SI中的对应的符号而输出非反相的尾数乘法结果或反相的尾数乘法结果。例如,第七复用器M12可在第一尾数乘法结果F_mul1是正数时输出第一尾数乘法结果F_mul1,并且在第一尾数乘法结果F_mul1是负数时输出第一反相的尾数乘法结果。

第一减法器元件SBE1可对最大值Max_E和第一阶码加法结果E_add1执行减法运算,并且将减法结果提供给第一移位电路SHT11。第一移位电路SHT11可通过将第七复用器M12的输出沿对应于最大值Max_E与第一阶码加法结果E_add1之间的差的方向按位数进行移位来输出第一对齐的尾数乘法结果F_align1,该位数对应于最大值Max_E与第一阶码加法结果E_add1之间的差。

第二减法器元件SBE2可对最大值Max_E和第二阶码加法结果E_add2执行减法运算,并且将减法结果提供给第二移位电路SHT21。第二移位电路SHT21可通过将第八复用器M22的输出沿对应于最大值Max_E与第二阶码加法结果E_add2之间的差的方向按位数进行移位来输出第二对齐的尾数乘法结果F_align2,该位数对应于最大值Max_E与第二阶码加法结果E_add2之间的差。

第三减法器元件SBE3可对最大值Max_E和第三阶码加法结果E_add3执行减法运算,并且将减法结果提供给第三移位电路SHT31。第三移位电路SHT31可通过将第九复用器M32的输出沿对应于最大值Max_E与第三阶码加法结果E_add3之间的差的方向按位数进行移位来输出第三对齐的尾数乘法结果F_align3,该位数对应于最大值Max_E与第三阶码加法结果E_add3之间的差。

第四减法器元件SBE4可对最大值Max_E和第四阶码加法结果E_add4执行减法运算,并且将减法结果提供给第四移位电路SHT41。第四移位电路SHT41可通过将第十复用器M42的输出沿对应于最大值Max_E与第四阶码加法结果E_add4之间的差的方向按位数进行移位来输出第四对齐的尾数乘法结果F_align4,该位数对应于最大值Max_E与第四阶码加法结果E_add4之间的差。

第五减法器元件SBE5可对最大值Max_E和第一累积数据ACC1的第三阶码ACC1_E执行减法运算,并且将减法结果提供给第五移位电路SHT51。第五移位电路SHT51可通过将第一累积数据ACC1的尾数ACC1_F沿对应于最大值Max_E与第三阶码ACC1_E之间的差的方向按位数进行移位来输出对齐的尾数ACC1_F_align,该位数对应于最大值Max_E与第三阶码ACC1_E之间的差。

在一个示例实施例中,可限制第一移位电路SHT11至第五移位电路SHT51的最大移位量,以便不影响神经网络装置所需的操作准确度,同时减小移位电路的大小和功耗。

进一步参照图11,浮点运算电路20c可包括第一符号扩展电路至第八符号扩展电路SE1、SE2、SE3、SE4、SE5、SE6、SE7和SE8、第一零扩展电路至第八零扩展电路ZE1、ZE2、ZE3、ZE4、ZE5、ZE6、ZE7和ZE8、第十一复用器至第十八复用器M13、M23、M33、M43、M53、M63、M73和M83、以及第二加法器元件至第九加法器元件AE12、AE22、AE32、AE42、AE52、AE62、AE72和AE82。在下文中,为了便于描述,第一对齐的尾数乘法结果F_align1至第四对齐的尾数乘法结果F_align4被称为第一尾数乘法结果F_align1至第四尾数乘法结果F_align4。

第十一复用器M13可从第一符号扩展电路SE1接收第一尾数乘法结果F_align1的第一扩展的较高位,并且从第一零扩展电路ZE1接收第一尾数乘法结果F_align1的第二扩展的较高位。第一符号扩展电路SE1可通过将符号复制到附加到第一尾数乘法结果F_align1的较高位的扩展位,使得扩展位用1填充,来生成第一尾数乘法结果F_align1的第一扩展的较高位。第一零扩展电路ZE1可通过用0填充附加到第一尾数乘法结果F_align1的较高位的扩展位来生成第一尾数乘法结果F_align1的第二扩展的较高位。

以这样的方式,第十二复用器至第十四复用器M23至M43中的每个可接收第二尾数乘法结果F_align2至第四尾数乘法结果F_align4中的对应一个的第一扩展的较高位和第二扩展的较高位,其中,第一扩展的较高位包括通过使用第二符号扩展电路SE2至第四符号扩展电路SE4中的对应一个将符号复制到扩展位而用1填充的扩展位,第二扩展的较高位包括通过第二零扩展电路ZE2至第四零扩展电路ZE4中的对应一个用0填充的扩展位。

第十五复用器M53可从第五符号扩展电路SE5接收第一尾数乘法结果F_align1的第一扩展的较低位,并且从第五零扩展电路ZE5接收第一尾数乘法结果F_align1的第二扩展的较低位。第五符号扩展电路SE5可通过将符号复制到附加到第一尾数乘法结果F_align1的较低位的扩展位,使得扩展位用1填充,来生成第一尾数乘法结果F_align1的第一扩展的较低位。第五零扩展电路ZE5可通过用0填充附加到第一尾数乘法结果F_align1的较低位的扩展位来生成第一尾数乘法结果F_align1的第二扩展的较低位。

以这样的方式,第十六复用器M63至第十八复用器M83中的每个可接收第二尾数乘法结果F_align2至第四尾数乘法结果F_align4中的对应一个的第一扩展的较低位和第二扩展的较低位,其中,第一扩展的较低位包括通过使用第六符号扩展电路SE6至第八符号扩展电路SE8中的对应一个将符号复制到扩展位而用1填充的扩展位,第二扩展的较低位包括通过第六零扩展电路ZE6至第八零扩展电路ZE8中的对应一个用0填充的扩展位。

在一个示例实施例中,在浮点计算模式(例如,IS_FLOAT=1)下,响应于符号信息SI中的对应的符号,第十一复用器M13至第十四复用器M43中的每个可输出从第一符号扩展电路SE1至第四符号扩展电路SE4中的对应一个接收的第一扩展的较高位。在浮点计算模式(例如,IS_FLOAT=1)下,第十五复用器M53至第十八复用器M83中的每个可输出从第五零扩展电路ZE5至第八零扩展电路ZE8中的对应一个接收的第二扩展的较低位。

在一些实施例中,在整数计算模式(例如,IS_FLOAT=0)下,响应于符号信息SI中的对应的符号,第十一复用器M13至第十四复用器M43中的每个可输出从第一符号扩展电路SE1至第四符号扩展电路SE4中的对应一个接收的第一扩展的较高位,或者从第一零扩展电路ZE1至第四零扩展电路ZE4中的对应一个接收的第二扩展的较高位。在整数计算模式(例如,IS_FLOAT=0)下,响应于符号信息SI中的对应符号,第十五复用器M53至第十八复用器M83中的每个可输出从第五符号扩展电路SE5至第八符号扩展电路SE8中的对应一个接收的第一扩展的较低位,或者从第五零扩展电路ZE5至第八零扩展电路ZE8中的对应一个接收的第二扩展的较低位。在整数计算模式下,第一齐尾数乘法结果F_align1至第四对齐尾数乘法结果F_align4可用整数乘法结果替换。

第二加法器元件AE12可将第十一复用器M13的输出与第十二复用器M23的输出相加。第三加法器元件AE22可将第十三复用器M33的输出与第十四复用器M43的输出相加。第四加法器元件AE32可将第二加法器元件AE12的输出与第三加法器元件AE22的输出相加。第五加法器元件AE42可通过将第四加法器元件AE32的输出与对齐的尾数ACC1_F_align的较高位相加来生成第一加法结果数据F_add1。尽管未示出,但是被输入到第五加法器元件AE42的对齐的尾数ACC1_F_align的较高位可对应于符号扩展的数据。

第六加法器元件AE52可将第十五复用器M53的输出与第十六复用器M63的输出相加。第七加法器元件AE62可将第十七复用器M73的输出与第十八复用器M83的输出相加。第八加法器元件AE72可将第六加法器元件AE52的输出与第七加法器元件AE62的输出相加。第九加法器元件AE82可通过将第八加法器元件AE72的输出与对齐的尾数ACC1_F_align的较低位相加来生成第二加法结果数据F_add2。尽管未示出,但是被输入到第九加法器元件AE82的对齐的尾数ACC1_F_align的较低位可对应于零扩展的数据。

参照图12,浮点运算电路20d可包括第十九复用器至第二十一复用器M14、M24和M34、第十加法器元件至第十二加法器元件AE13、AE23和AE33、第一前导1检测器LOD_1和第二前导1检测器LOD_2、第六移位电路SHT12和第七移位电路SHT22、归一化和取整电路NR以及累积数据生成电路CDG。

当浮点运算电路20d在整数计算模式下进行操作时,第十九复用器M14和第二十复用器M24可响应于信号IS_FLOAT而输出“0”。因为从第十九复用器M14和第二十复用器M24输出“0”,所以浮点运算电路20d中的用于浮点计算的元件可被去激活。在下文中,将基于浮点运算电路20d在浮点计算模式下进行操作的假设进行描述。

第十九复用器M14可将第一加法结果数据F_add1输出到第十加法器元件AE13。第二十复用器M24可将第二加法结果数据F_add2输出到第十加法器元件AE13。

第十加法器元件AE13可通过将第一加法结果数据F_add1与第二加法结果数据F_add2相加来生成第三加法结果数据。第一前导1检测器LOD_1可对包括第三加法结果数据的MSB的“k”个较高位执行第一前导1检测,表示符号的至少一个位从第三加法结果数据被去除,其中,“k”是至少为1的整数。第二前导1检测器LOD_2可对包括第三加法结果数据的LSB的“n”个较低位执行第二前导1检测,表示符号的至少一个位从第三加法结果数据被去除,其中,“n”是至少为1的整数。第一前导1检测器LOD_1和第二前导1检测器LOD_2可并行执行。例如,“k”可小于“n”。表示第三加法结果数据的符号的至少一个位可被提供给累积数据生成电路CDG。

第六移位电路SHT12可对从第一前导1检测器LOD_1输出的第三加法结果数据沿第一方向进行移位。第七移位电路SHT22可对从第二前导1检测器LOD_2输出的第三加法结果数据沿第二方向移位。例如,第一方向可与第二方向相反。第一方向可以是从较高位朝向较低位,第二方向可以是从较低位朝向较高位。

第十一加法器元件AE23可接收最大值Max_E和从第一前导1检测器LOD_1和第二前导1检测器LOD_2的检测产生的移位信息,并且将最大值Max_E与移位信息相加。移位信息可指示在第三加法结果数据中检测到的“1”的位置,并且可由第一前导1检测器LOD_1和第二前导1检测器LOD_2中的一个生成。

第二十一复用器M34可将输出提供给归一化和取整电路NR,该输出对应于已从第六移位电路SHT12和第七移位电路SHT22的相应的输出之中检测到“1”的前导1检测器。

归一化和取整电路NR可对已经通过第六移位电路SHT12或第七移位电路SHT22进行了移位的第三加法结果数据执行归一化和取整,并且将阶码更新信息提供给第十二加法器元件AE33。

第十二加法器元件AE33可将阶码更新信息与第十一加法器元件AE23的输出相加,并且将加法结果提供给累积数据生成电路CDG。

累积数据生成电路CDG可使用第三加法结果数据的符号、归一化和取整电路NR的输出以及第十二加法器元件AE33的输出来生成第二累积数据ACC2。

图13是根据示例实施例的包括在神经网络装置中的运算电路1000的框图。

参照图13,运算电路1000可包括浮点乘法器1010、整数乘法器1020、对齐移位器1030、加法器1040、第一后加法器1050、第二后加法器1060以及缓冲器1070。除了图13中示出的元件之外,运算电路1000还可包括用于执行各种神经网络操作的多个元件。加法器1040可包括在逻辑上或物理上彼此分离的第一加法器电路1041和第二加法器电路1042。在一个示例实施例中,运算电路1000可对浮点数据执行点积运算和累加运算,并且对整数数据执行点积运算。

在一个示例实施例中,加法器1040的第二加法器电路1042可由浮点乘法器1010和整数乘法器1020共享。当运算电路1000处于整数计算模式时,浮点乘法器1010可支持整数乘法运算。

在一个示例实施例中,当运算电路1000处于浮点计算模式时,浮点乘法器1010可执行浮点计算,并且通过对齐移位器1030将尾数乘法结果提供给第一加法器电路1041和第二加法器电路1042。当运算电路1000处于整数计算模式时,整数乘法器1020可执行整数计算并将第一整数乘法结果提供给第二加法器电路1042,浮点乘法器1010可执行整数计算并直接将第二整数乘法结果提供给第一加法器电路1041而不经过对齐移位器1030

在一个示例实施例中,当运算电路1000处于浮点计算模式时,加法器1040可将浮点数据的对齐的尾数乘法结果与累积数据的尾数相加,并且将加法结果数据提供给第一后加法器1050。第一后加法器1050可通过对加法结果数据执行前导1检测、归一化和取整来生成第二累积数据,反映更新的阶码,并且将第二累积数据存储在缓冲器1070中。

在一个示例实施例中,当运算电路1000处于整数计算模式时,加法器1040可将整数数据的整数乘法结果加在一起,并且将加法结果提供给第二后加法器1060。第二后加法器1060可基于加法结果生成第二输出数据,并且将第二输出数据存储在缓冲器1070中。

在一个示例实施例中,第一后加法器1050和第二后加法器1060可彼此集成。在一个示例实施例中,第一后加法器1050和第二后加法器1060可彼此分离。

图14是根据示例实施例的应用处理器2000的框图。

应用处理器2000可包括CPU 2100、RAM 2200、GPU 2300、神经网络装置2400、传感器接口2500、显示器接口2600以及存储器接口2700。应用处理器2000还可包括通信模块。应用处理器2000的元件(即,CPU 2100、RAM 2200、GPU 2300、神经网络装置2400、传感器接口2500、显示器接口2600以及存储器接口2700)可通过总线2800彼此交换数据。

CPU 2100可总体控制应用处理器2000的操作。CPU 2100可包括单核或多核。CPU2100可处理或执行存储在存储器2710中的程序和/或数据。在一个实施例中,CPU 2100可通过执行存储在存储器2710中的程序来控制神经网络装置2400的功能。

RAM 2200可临时存储程序、数据和/或指令。在一个实施例中,RAM 2200可包括DRAM或SRAM。RAM 2200可临时存储通过接口(例如,传感器接口2500和显示器接口2600)输入或输出或者由GPU 2300或CPU 2100生成的图像。

应用处理器2000还可包括ROM。ROM可存储连续使用的程序和/或数据。ROM可包括EPROM或EEPROM。

GPU 2300可对图像数据执行图像处理。例如,GPU 2300可对通过传感器接口2500接收的图像数据执行图像处理。在一个实施例中,GPU 2300可执行浮点计算。

由GPU 2300处理的图像数据可被存储在存储器2710中,或者通过显示器接口2600被提供给显示装置2610。存储在存储器2710中的图像数据可被提供给神经网络装置2400。

传感器接口2500可与从连接到应用处理器2000的传感器2510输入的数据(例如,图像数据、音频数据等)接口连接。

显示器接口2600可与输出到显示装置2610的数据(例如,图像)接口连接。显示装置2610可通过显示器(诸如,以液晶显示器(LCD)或有源矩阵有机发光二极管(AMOLED)显示器为例)输出图像或关于图像的数据。

存储器接口2700可与从应用处理器2000外部的存储器2710输入的数据或输出到存储器2710的数据接口连接。在一个实施例中,存储器2710可包括易失性存储器(诸如,DRAM或SRAM)或非易失性存储器(诸如,RRAM、PRAM或NAND闪存)。存储器2710可包括存储卡(诸如,多媒体卡(MMC)、嵌入式MMC(eMMC)、SD卡或微型SD卡)。

神经网络装置2400可包括浮点运算电路20,浮点运算电路20执行以上参照图1至图13描述的浮点计算。浮点运算电路20可对具有各种类型格式的浮点的浮点数据执行点积运算和累加运算,并且将对齐移位器的可移位宽减小到不降低运算准确度的程度。因此,浮点运算电路20的大小和功耗可被改善。浮点运算电路20可从浮点数据的阶码加法结果和点积运算中的累积数据的阶码值识别最大值,并且基于最大值对浮点数据的尾数乘法结果和累积数据的尾数部分执行对齐移位和求和。以上已经描述了浮点运算电路20的示例实施例,因此以下省略浮点运算电路20的示例实施例。

虽然已经参照公开的示例实施例具体地示出并描述了公开,但是将理解,在不脱离权利要求的精神和范围的情况下,可在其中进行形式和细节上的各种改变。

34页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种抑制噪声的量子随机数生成装置、方法及发生器

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类