CN114127680A - 支持用于高效乘法的替代数字格式的系统和方法 - Google Patents

支持用于高效乘法的替代数字格式的系统和方法 Download PDF

Info

Publication number
CN114127680A
CN114127680A CN202080051898.9A CN202080051898A CN114127680A CN 114127680 A CN114127680 A CN 114127680A CN 202080051898 A CN202080051898 A CN 202080051898A CN 114127680 A CN114127680 A CN 114127680A
Authority
CN
China
Prior art keywords
value
multiplication
bit
circuit
zero
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202080051898.9A
Other languages
English (en)
Other versions
CN114127680B (zh
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.)
Meta Platforms Technologies LLC
Original Assignee
Facebook Technologies LLC
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 Facebook Technologies LLC filed Critical Facebook Technologies LLC
Publication of CN114127680A publication Critical patent/CN114127680A/zh
Application granted granted Critical
Publication of CN114127680B publication Critical patent/CN114127680B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/5235Multiplying only using indirect methods, e.g. quarter square method, via logarithmic domain
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Image Analysis (AREA)

Abstract

本文公开的内容包括用于为神经网络执行第一值与第二值的乘法的系统、方法和设备,该设备包括移位电路和加法电路。第一值具有预定格式,该预定格式包括第一位和用于表示零或2n的值的两个或更多个第二位,其中n是大于或等于0的整数。当该两个或更多个第二位表示值2n时,该设备经由移位电路将第二值移位(n+1)位以提供第一结果,基于第一值的第一位的值选择性地输出零或第二值以提供第二结果,并且经由加法电路将第一结果与第二结果相加以提供第一值与第二值的乘法的结果。

Description

支持用于高效乘法的替代数字格式的系统和方法
公开领域
本公开总体上涉及一种用于为神经网络执行值的乘法的系统和方法,包括但不限于用于使用数字格式进行高效乘法的系统和方法。
背景
人工智能(AI)加速器的一个挑战涉及在为神经网络执行AI处理时控制或降低功耗。例如,神经网络可以是可以包括卷积层的卷积神经网络。在卷积层中,AI加速器可以对输入层应用卷积运算,以与传统的全连接前馈神经网络相比减少参数数量的方式将结果传递到下一层。然而,随着越来越复杂的多维(例如,多通道)输入/输出结构被用在卷积神经网络中,减少能量和延迟的方法可能是有益的。此外,鉴于在执行卷积运算时需要大量的乘法运算,高效的乘法运算可能是有益的。
概述
本文公开的各种实施例涉及一种用于为神经网络执行第一值与第二值的乘法的设备。在一些实施例中,该设备可以包括电路,该电路包括移位电路和加法电路。第一值可以具有预定格式,该预定格式包括第一位和用于表示0或2n的值的两个或更多个第二位,其中n是大于或等于0的整数。电路可以被配置为当该两个或更多个第二位表示值2n时,经由移位电路将第二值移位(n+1)位,以提供第一相乘结果。该电路可以被配置为基于第一值的第一位的值,选择性地输出零或第二值以提供第二相乘结果。该电路可以被配置为经由加法电路将第一相乘结果和第二相乘结果相加,以提供第一值与第二值的乘法的结果。
在一些实施例中,第一值的第一位可以是第一值的最低有效位。在一些实施例中,电路可以被配置为当两个或更多个第二位表示零值时,提供零值作为第一相乘结果。在一些实施例中,第二值可以使用线性数字格式来表示二进制数。
在一些实施例中,第二值可以具有预定格式,该预定格式包括第一位和用于表示零或2m的值的两个或更多个第二位,其中m是大于或等于零的整数。在一些实施例中,电路还可以被配置为当第一值的两个或更多个第二位表示值2n并且第二值的两个或更多个第二位表示值2m时,经由移位电路将值2m+1移位(n+1)位以提供第三相乘结果。电路还可以被配置为基于第二值的第一位的值,选择性地输出零或值2n+1以提供第四相乘结果。电路还可以被配置为基于第一值的第一位的值,选择性地输出零或值2m+1以提供第五相乘结果。电路还可以被配置为基于第一值的第一位的值,选择性地输出零或第二值的第一位的值以提供第六相乘结果。电路还可以被配置为经由加法电路将第三相乘结果至第六相乘结果相加,以提供第一值与第二值的乘法的结果。
在一些实施例中,作为第一值的两个或更多个第二位的“1 1”可以表示值4。在一些实施例中,第一值还可以包括第三位,以指示第一值是有符号的或者是无符号的。在一些实施例中,电路可以被配置为基于第一值的第三位的值来确定第一值与第二值的乘法的结果的符号。在一些实施例中,电路还可以被配置为使用权重数据和表示激活函数的激活数据来对神经网络的第一层执行卷积,并且第一值可以表示用于神经网络的第一层的权重数据和激活数据中的一个的值。在一些实施例中,第二值可以表示用于神经网络的第一层的权重数据和激活数据中的另一个的值。
本文公开的各种实施例涉及一种用于为神经网络执行第一值与第二值的乘法的方法,第一值具有预定格式,该预定格式包括第一位和用于表示零或2n的值的两个或更多个第二位,其中n是大于或等于0的整数。在一些实施例中,执行第一值与第二值的乘法可以包括当两个或更多个第二位表示值2n时,通过移位电路将第二值移位(n+1)位,以提供第一相乘结果。执行第一值与第二值的乘法可以包括基于第一值的第一位的值,选择性地输出零或第二值以提供第二相乘结果。执行第一值与第二值的乘法可以包括通过加法电路将第一相乘结果与第二相乘结果相加,以提供第一值与第二值的乘法的结果。
在一些实施例中,第一值的第一位可以是第一值的最低有效位。在一些实施例中,执行第一值与第二值的乘法可以包括当两个或更多个第二位表示零值时,提供零值作为第一相乘结果。在一些实施例中,第二值可以使用线性数字格式来表示二进制数。
在一些实施例中,第二值可以具有预定格式,该预定格式包括第一位和用于表示零或2m的值的两个或更多个第二位,其中m是大于或等于零的整数。执行第一值与第二值的乘法还可以包括当第一值的两个或更多个第二位表示值2n并且第二值的两个或更多个第二位表示值2m时,通过移位电路将值2m+1移位(n+1)位以提供第三相乘结果。执行第一值与第二值的乘法还可以包括基于第二值的第一位的值,选择性地输出零或值2n+1以提供第四相乘结果。执行第一值与第二值的乘法还可以包括基于第一值的第一位的值,选择性地输出零或值2m+1以提供第五相乘结果。执行第一值与第二值的乘法还可以包括基于第一值的第一位的值,选择性地输出零或第二值的第一位的值以提供第六相乘结果。执行第一值与第二值的乘法还可以包括通过加法电路将第三相乘结果至第六相乘结果相加,以提供第一值与第二值的乘法的结果。
在一些实施例中,作为第一值的两个或更多个第二位的“1 1”可以表示值4。在一些实施例中,第一值还可以包括第三位,以指示第一值是有符号的或者是无符号的。在一些实施例中,执行第一值与第二值的乘法还可以包括基于第一值的第三位的值来确定第一值与第二值的乘法的结果的符号。在一些实施例中,可以使用权重数据和表示激活函数的激活数据对神经网络的第一层执行卷积,并且第一值可以表示用于神经网络的第一层的权重数据和激活数据中的一个的值。在一些实施例中,第二值可以表示用于神经网络的第一层的权重数据和激活数据中的另一个的值。
下面详细讨论这些和其他方面和实现。前述信息和以下详细描述包括各种方面和实现的说明性示例,并且提供了用于理解所要求保护的方面和实现的性质和特征的综述或框架。应当理解,本文中公开的适于结合到本发明的一个或更多个方面或实施例中的任何特征都旨在可推广到本公开的任何和所有方面和实施例。附图提供了对各种方面和实现的说明和进一步理解,并且被结合在本说明书中并构成本说明书的一部分。
附图简述
附图不意在按比例绘制。各个附图中相同的附图标记和名称表示相同的元件。为了清楚起见,并非每个部件都可以在每个图中进行标记。
图1A是根据本公开的示例实现的用于执行人工智能(AI)相关处理的系统的实施例的框图。
图1B是根据本公开的示例实现的用于执行AI相关处理的设备的实施例的框图。
图1C是根据本公开的示例实现的用于执行AI相关处理的设备的实施例的框图。
图1D是根据本公开的示例实现的计算环境的框图。
图2A是根据本公开的示例实现的用于执行AI相关处理的设备的实施例的框图。
图2B是根据本公开的示例实现的用于执行AI相关处理的替代数字格式的实施例的框图。
图2C是根据本公开的示例实现的用于使用替代数字格式执行乘法的电路的实施例的框图。
图2D是根据本公开的示例实现的用于使用替代数字格式执行乘法的电路的另一实施例的框图。
图2E是示出根据本公开的示例实现的使用替代数字格式执行乘法的方法的流程图。
图2F是示出根据本公开的另一示例实现的使用替代数字格式执行乘法的方法的流程图。
详细描述
在转向详细示出某些实施例的附图之前,应当理解,本公开不限于描述中阐述的或附图中示出的细节或方法。还应该理解,本文使用的术语仅仅是为了描述的目的,而不应该被认为是限制性的。
为了阅读下文对本发明的各种实施例的描述的目的,对说明书各部分及其各自内容的以下描述可能是有帮助的:
-A部分描述了对实践或实现本文系统、方法和设备的实施例有用的环境、系统、配置和/或其他方面;和
-B部分描述了用于使用替代数字格式执行值的乘法的设备、系统和方法的实施例。
A.人工智能相关处理的环境
在讨论B部分中的系统、设备和/或方法的实施例的具体内容之前,讨论对实践或实现这些系统、设备和/或方法的某些实施例有用的环境、系统、配置和/或其他方面可能是有帮助的。现在参考图1A,描绘了用于执行人工智能(AI)相关处理的系统的实施例。简而言之,该系统包括一个或更多个AI加速器108,该一个或更多个AI加速器108可以使用输入数据110执行AI相关处理。尽管被称为AI加速器108,但它有时也被称为神经网络加速器(NNA)、神经网络芯片或硬件、AI处理器、AI芯片等。AI加速器108可以根据输入数据110和/或参数128(例如,权重和/或偏置信息)执行AI相关处理,以输出或提供输出数据112。AI加速器108可以包括和/或实现一个或更多个神经网络114(例如,人工神经网络)、一个或更多个处理器24和/或一个或更多个存储设备126。
上面提到的元件或部件中的每一个都以硬件或硬件和软件的组合来实现。例如,这些元件或部件中的每一个可以包括在硬件上执行的任何应用、程序、库、脚本、任务、服务、过程或任何类型和形式的可执行指令,该硬件例如为可以包括数字和/或模拟元件(例如,一个或更多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件)的电路。
输入数据110可以包括用于配置、调谐、训练和/或激活AI加速器108的神经网络114和/或用于由处理器124处理的任何类型或形式的数据。神经网络114有时被称为人工神经网络(ANN)。配置、调谐和/或训练神经网络可以指或包括机器学习的过程,其中诸如历史数据的训练数据集(例如,作为输入数据110)被提供给神经网络以进行处理。调谐或配置可以指或包括对神经网络114的训练或处理,以允许神经网络提高准确度。例如,调谐或配置神经网络114可以包括使用已被证明对于神经网络114所期望的问题或目标类型是成功的架构来设计、形成、构建、合成和/或建立神经网络。在一些情况下,一个或更多个神经网络114可以在相同或类似的基线模型处启动,但是在调谐、训练或学习过程期间,神经网络114的结果可以明显不同,从而每个神经网络114可以被调谐以处理特定类型的输入,并且与处于基线模型或者针对不同目标或目的调谐或训练的不同神经网络相比,以更高水平的准确度和可靠性生成特定类型的输出。调谐神经网络114可以包括为每个神经网络114设置不同的参数128,为每个神经网络114不同地微调参数114,或者分配不同的权重(例如,超参数或学习速率)、张量流(tensor flow)等。因此,基于调谐或训练过程以及神经网络和/或系统的目标来为神经网络114设置适当的参数128,可以提高整个系统的性能。
AI加速器108的神经网络114可以包括任何类型的神经网络,包括例如卷积神经网络(CNN)、深度卷积网络、前馈神经网络(例如,多层感知器(MLP))、深度前馈神经网络、径向基函数神经网络、Kohonen自组织神经网络、循环神经网络(recurrent neural network)、模块化神经网络、长/短期记忆神经网络等。神经网络114可以被部署或使用以执行数据(例如,图像、音频、视频)处理、对象或特征识别、推荐功能、数据或图像分类、数据(例如,图像)分析等,诸如自然语言处理。
作为示例,以及在一个或更多个实施例中,神经网络114可以被配置为或包括卷积神经网络。卷积神经网络可以包括一个或更多个卷积单元(或池化层)和核(kernel),它们各自可以服务于不同的目的。卷积神经网络可以包括、结合和/或使用卷积核(有时被简称为“核”)。卷积核可以处理输入数据,并且池化层可以使用例如非线性函数(例如max)来简化数据,从而减少不必要的特征。包括卷积神经网络的神经网络114可以有助于图像、音频或任何数据识别或其他处理。例如,(例如,来自传感器的)输入数据110可以被传递到卷积神经网络的卷积层,这些卷积层形成漏斗,压缩输入数据110中检测到的特征。卷积神经网络的第一层可以检测第一特征,第二层可以检测第二特征,以此类推。
卷积神经网络可以是一种深度前馈人工神经网络,其被配置为分析视觉影像、音频信息和/或任何其他类型或形式的输入数据110。卷积神经网络可以包括被设计为使用最少预处理的多层感知器。基于其共享权重架构和平移不变性(translation invariance)特征,卷积神经网络可以包括或被称为移位不变或空间不变的人工神经网络。由于与其他数据分类/处理算法相比,卷积神经网络可以使用相对较少的预处理,因此卷积神经网络可以自动学习可能为其他数据分类/处理算法手工设计的滤波器,从而提高与配置、建立或设置神经网络114相关联的效率,从而提供相对于其他数据分类/处理技术的技术优势。
神经网络114可以包括神经元或节点的输入层116和输出层122。神经网络114还可以具有一个或更多个隐藏层118、119,隐藏层可以包括神经元或节点的卷积层、池化层、全连接层和/或归一化层。在神经网络114中,每个神经元都可以从前一层中的某些位置接收输入。在全连接层中,每个神经元都可以从前一层的每个元素接收输入。
神经网络114中的每个神经元可以通过对来自前一层中的感受野(receptivefield)的输入值应用某种函数来计算输出值。应用于输入值的函数通过权重向量和偏置(通常为实数)指定。(例如,在训练阶段)神经网络114中的学习可以通过对偏置和/或权重进行增量调整来进行。权重向量和偏置可以被称为滤波器,并且可以表示输入的某个特征(例如,特定形状)。卷积神经网络的一个显著特征是许多神经元可以共享同一个滤波器。这减少了存储器占用,因为可以跨共享该滤波器的所有感受野使用单个偏置和单个权重向量,而不是每个感受野都有自己的偏置和权重向量。
例如,在卷积层中,系统可以对输入层116应用卷积运算,将结果传递到下一层。卷积模拟了单个神经元对输入刺激的反应。每个卷积神经元可以仅针对其感受野处理数据。与全连接的前馈神经网络相比,使用卷积运算可以减少神经网络114中使用的神经元的数量。因此,卷积运算可以减少自由参数的数量,允许网络用更少的参数来更加地深入。例如,不管输入数据(例如,图像数据)尺寸如何,尺寸为5×5的图块区域(tiling region)(每个具有相同的共享权重)可以仅使用25个可学习的参数。以这种方式,具有卷积神经网络的第一神经网络114可以通过使用反向传播来解决在训练具有许多层的传统多层神经网络时的梯度消失或梯度爆炸问题。
神经网络114(例如,配置有卷积神经网络)可以包括一个或更多个池化层。一个或更多个池化层可以包括局部池化层或全局池化层。池化层可以将一层的神经元簇的输出合并到下一层中的单个神经元中。例如,最大池化(max pooling)可以使用前一层的神经元簇中每个神经元的最大值。另一个示例是平均池化,其可以使用前一层的神经元簇中每个神经元的平均值。
神经网络114(例如,配置有卷积神经网络)可以包括全连接层。全连接层可以将一层中的每个神经元连接到另一层中的每个神经元。神经网络114可以被配置为在卷积层中具有共享的权重,这可以指同一滤波器被用于层中的每个感受野,从而减少存储器占用并提高第一神经网络114的性能。
隐藏层118、119可以包括被调谐或配置为基于输入数据(例如,来自例如虚拟现实系统的传感器数据)检测信息的滤波器。当系统逐步通过神经网络114(例如,卷积神经网络)中的每一层时,系统可以转变(translate)来自第一层的输入,并将转换后的输入输出到第二层,以此类推。基于正在被检测、处理和/或计算的对象或信息的类型以及输入数据110的类型,神经网络114可以包括一个或更多个隐藏层118、119。
在一些实施例中,卷积层是神经网络114(例如,被配置为CNN)的核心构建块。该层的参数128可以包括一组可学习的滤波器(或核),其具有小的感受野,但是延伸通过输入体积的整个深度。在前向传递期间,跨输入体积的宽度和高度对每个滤波器进行卷积,计算滤波器条目和输入之间的点积,并产生该滤波器的二维激活图。结果,神经网络114可以学习当它在输入中的某个空间位置处检测到某种特定类型的特征时激活的滤波器。沿着深度维度堆叠所有滤波器的激活图,形成卷积层的整个输出体积。因此,输出体积中的每个条目也可以解释为观察输入中的小区域并与同一激活图中的神经元共享参数的神经元的输出。在卷积层中,神经元可以从前一层的受限子区域接收输入。通常,子区域是正方形的形状(例如,尺寸为5×5)。神经元的输入区域被称为它的感受野。因此,在全连接层中,感受野是整个前一层。在卷积层中,感受区可以小于整个前一层。
第一神经网络114可以被训练为检测、分类、分割和/或转变输入数据110(例如,基于输入数据110,通过检测或确定对象、事件、词语和/或其他特征的概率)。例如,神经网络114的第一输入层116可以接收输入数据110,处理输入数据110以将数据转换成第一中间输出,并将第一中间输出转发到第一隐藏层118。第一隐藏层118可以接收第一中间输出,处理第一中间输出以将第一中间输出转换成第二中间输出,并将第二中间输出转发到第二隐藏层119。例如,第二隐藏层119可以接收第二中间输出,处理第二中间输出以将第二中间输出转换成第三中间输出,并将第三中间输出转发到输出层122。输出层122可以接收第三中间输出,处理第三中间输出以将第三中间输出转换成输出数据112,并且转发输出数据112(例如,可能转发到后处理引擎,用于渲染给用户、用于存储等等)。作为示例,输出数据112可以包括对象检测数据、增强的/转变的/补充的(augmented)数据、建议、分类和/或分割的数据。
再次参考图1A,AI加速器108可以包括一个或更多个存储设备126。存储设备126可以被设计或实现为存储、保存或维护与AI加速器108相关联的任何类型或形式的数据。例如,数据可以包括由AI加速器108接收的输入数据110和/或(例如,在被输出到下一个设备或处理阶段之前的)输出数据112。数据可以包括用于或来自神经网络114和/或处理器124的任何处理阶段的中间数据。数据可以包括输入到神经网络114的神经元和在该神经元处处理的一个或更多个操作数,这些操作数可以从存储设备126读取或访问。例如,数据可以包括用于神经网络114的一个或更多个神经元(或节点)和/或层的输入数据、权重信息和/或偏置信息、激活函数信息和/或参数128,这些数据可以存储在存储设备126中并可以从存储设备126读取或访问。数据可以包括来自神经网络114的神经元的输出数据,该输出数据可以被写入和存储在存储设备126处。例如,数据可以包括用于神经网络114的一个或更多个神经元(或节点)和/或层的激活数据、细化或更新的数据(例如,来自例如训练阶段的权重信息和/或偏置信息、激活函数信息和/或其他参数128),这些数据可以被传递到或写入存储设备126并存储在存储设备126中。
在一些实施例中,AI加速器108可以包括一个或更多个处理器124。一个或更多个处理器124可以包括用于预处理用于任何一个或更多个神经网络114或AI加速器108的输入数据和/或后处理用于任何一个或更多个神经网络114或AI加速器108的输出数据的任何逻辑、电路和/或处理部件(例如,微处理器)。一个或更多个处理器124可以提供用于配置、控制和/或管理神经网络114或AI加速器108的一个或更多个操作的逻辑、电路、处理部件和/或功能。例如,处理器124可以接收与神经网络114相关联的数据或信号,以(例如,通过对实现神经网络114的操作的电路进行时钟门控控制)控制或降低功耗。作为另一个示例,处理器124可以划分和/或重新布置数据,以用于单独的处理(例如,在AI加速器108的各个部件处,例如并行处理)、顺序处理(例如,在AI加速器108的同一部件上、在不同的时间或阶段),或者用于存储在存储设备的不同存储器片中或者存储在不同的存储设备中。在一些实施例中,处理器124可以将神经网络114配置为针对特定的上下文进行操作、提供特定类型的处理和/或处理特定类型的输入数据,例如,通过识别、选择和/或加载特定的权重、激活函数和/或参数信息到神经网络114的神经元和/或层。
在一些实施例中,AI加速器108被设计和/或实现为处置或处理深度学习和/或AI工作负载。例如,AI加速器108可以为人工智能应用提供硬件加速,人工智能应用包括人工神经网络、机器视觉和机器学习。AI加速器108可以被配置用于处置机器人相关、物联网(IoT)相关以及其他数据密集型或传感器驱动型的任务的操作。AI加速器108可以包括多核(multi-core)或多处理元件(PE)设计,并且可以被结合在各种类型和形式的设备(例如人工现实(例如,虚拟、增强或混合现实)系统、智能手机、平板电脑和计算机)中。AI加速器108的某些实施例可以包括以下项或使用以下项来实现:至少一个数字信号处理器(DSP)、协处理器、微处理器、计算机系统、处理器的异构计算配置、图形处理单元(GPU)、现场可编程门阵列(FPGA)和/或专用集成电路(ASIC)。AI加速器108可以是基于晶体管、基于半导体和/或基于量子计算的设备。
现在参考图1B,描绘了用于执行AI相关处理的设备的示例实施例。简而言之,该设备可以包括或对应于AI加速器108,例如,具有以上结合图1A描述的一个或更多个特征。AI加速器108可以包括一个或更多个存储设备126(例如,诸如静态随机存取存储器(SRAM)设备的存储器)、一个或更多个缓冲器、多个处理元件(PE)电路或处理元件(PE)电路的阵列、其他逻辑或电路(例如,加法器电路)和/或其他结构或构造(例如,互连、数据总线、时钟电路、电源网络)。上面提到的元件或部件中的每一个都以硬件或至少以硬件和软件的组合来实现。硬件可以例如包括电路元件(例如,一个或更多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件和/或导线或导电连接器)。
在AI加速器108中实现的神经网络114(例如,人工神经网络)中,神经元可以采取各种形式,并且可以被称为处理元件(PE)或PE电路。神经元可以被实现为对应的PE电路,并且可以在神经元处发生的处理/激活可以在PE电路处执行。PE被连接成特定的网络模式或阵列,不同的模式服务于不同的功能目的。人工神经网络中的PE是电操作的(例如,在半导体实现的实施例中),并且可以是模拟的、数字的或混合的。为了与生物突触的效果相比肩,可以给PE之间的连接分配乘法权重,这些权重可以被校准或“训练”以产生适当的系统输出。
可以根据以下方程式(例如,表示神经元的McCulloch-Pitts模型)来定义PE:
ζ=∑iwixi (1)
y=σ(ζ) (2)
其中ζ是输入的加权和(例如,输入向量和抽头权重向量(tap-weight vector)的内积),且σ(ζ)是加权和的函数。当权重和输入元素形成向量w和x时,ζ加权和变成简单的点积:
ζ=w·x (3)
这可以被称为激活函数(例如,在阈值比较的情况下)或传递函数。在一些实施例中,一个或更多个PE可以被称为点积引擎。神经网络114的输入(例如,输入数据110)x可以来自输入空间,并且输出(例如,输出数据112)是输出空间的一部分。对于一些神经网络,输出空间Y可以简单到{0,1},或者输出空间Y可以是复杂的多维(例如,多通道)空间(例如,对于卷积神经网络)。神经网络往往在输入空间中每个自由度有一个输入,并且在输出空间中每个自由度有一个输出。
在一些实施例中,PE可以被布置和/或实现为脉动阵列。脉动阵列可以是耦合的数据处理单元(DPU)(例如PE,被称为单元或节点)的网络(例如同构网络)。每个节点或PE可以根据从其上游邻居接收的数据独立地计算部分结果,可以将结果存储在其内部,并且可以例如将结果传递到下游。脉动阵列可以是硬连线的,或者可以是为特定应用配置的软件。节点或PE可以是固定的和相同的,并且脉动阵列的互连可以是可编程的。脉动阵列可以依赖于同步数据传递。
再次参考图1B,PE 120的输入x可以是从存储设备126(例如,SRAM)读取或访问的输入流132的一部分。输入流132可以被引导到一行(水平的排(bank)或组)PE,并且可以跨一个或更多个PE进行共享,或者被划分成多个数据部分(重叠或非重叠的数据部分)作为各个PE的输入。(例如,从存储设备126读取的)权重流中的权重134(或权重信息)可以被引导到或提供给一列(垂直的排或组)PE。列中的每个PE可以共享相同的权重134或接收相对应的权重134。每个目标PE的输入和/或权重可以(例如,从存储设备126)被直接路由到目标PE(例如,不经过其他PE),或者可以通过一个或更多个PE(例如,沿着PE的行或列)被路由到目标PE。每个PE的输出可以被直接路由出PE阵列(例如,不经过其他PE),或者可以通过一个或更多个PE(例如,沿着PE的列)被路由离开PE阵列。每列PE的输出可以在相应列的加法器电路处求和或相加,并被提供给用于相应的PE列的缓冲器130。缓冲器130可以向存储设备126提供、传递、路由、写入接收到的输出和/或将接收到的输出存储到存储设备126。在一些实施例中,由存储设备126存储的输出(例如,来自神经网络的一层的激活数据)可以从存储设备126中检索或读取,并且稍后可以用作PE120的阵列的输入以用于(神经网络的后续层的)处理。在某些实施例中,可以从存储设备126中检索或读取由存储设备126存储的输出,作为AI加速器108的输出数据112。
现在参考图1C,描绘了用于执行AI相关处理的设备的一个示例实施例。简而言之,该设备可以包括或对应于AI加速器108,例如,具有以上结合图1A和图1B描述的一个或更多个特征。AI加速器108可以包括一个或更多个PE 120、其他逻辑或电路(例如加法器电路)和/或其他结构或构造(例如互连、数据总线、时钟电路、电源网络)。上面提到的元件或部件中的每一个都以硬件或至少以硬件和软件的组合来实现。硬件可以例如包括电路元件(例如,一个或更多个晶体管、逻辑门、寄存器、存储器设备、电阻元件、导电元件、电容元件和/或导线或导电连接器)。
在一些实施例中,PE 120可以包括一个或更多个乘累加器(multiply-accumulate,MAC)单元或电路140。一个或更多个PE有时可以(单独地或集体地)被称为MAC引擎。MAC单元被配置为执行乘累加运算。MAC单元可以包括乘法器电路、加法器电路和/或累加器电路。乘累加运算计算两个数的乘积,并将该乘积加到累加器上。结合累加器操作数a以及输入b和c,MAC运算可以表示如下:
a←a+(b×c) (4)
在一些实施例中,MAC单元140可以包括以组合逻辑(combinational logic)实现的乘法器、接下来的加法器(例如,包括组合逻辑)以及存储结果的累加器寄存器(例如,包括时序逻辑(sequential logic)和/或组合逻辑)。累加器寄存器的输出可以反馈到加法器的一个输入端,使得在每个时钟周期,乘法器的输出可以加到累加器寄存器。
如上面所讨论的,MAC单元140可以执行乘法和加法两项功能。MAC单元140可以分两个阶段运算。MAC单元140可以首先在第一阶段计算给定数(输入)的乘积,并将结果转发给第二阶段运算(例如,相加和/或累加)。n位的MAC单元140可以包括n位的乘法器、2n位的加法器和2n位的累加器。MAC单元140的阵列或多个MAC单元140(例如,在PE中)可以被布置成脉动阵列,以用于并行积分、卷积、相关、矩阵乘法、数据排序和/或数据分析任务。
本文中描述的各种系统和/或设备可以在计算系统中实现。图1D示出了表示性计算系统150的框图。在一些实施例中,图1A的系统可以形成计算系统150的处理单元156(或处理器156)的至少一部分。例如,计算系统150可以被实现为设备(例如消费设备(consumerdevice)),诸如智能手机、其他移动电话、平板计算机、可穿戴计算设备(例如,智能手表、眼镜、头戴式显示器)、台式计算机、膝上型计算机,或者计算系统150可以用分布式计算设备来实现。计算系统150可以被实现为提供VR、AR、MR体验。在一些实施例中,计算系统150可以包括传统的、专门的或定制的计算机部件,例如处理器156、存储设备158、网络接口151、用户输入设备152和用户输出设备154。
网络接口151可以提供到局域网/广域网(例如,互联网)的连接,(本地或远程)服务器或后端系统的网络接口也连接到该局域网/广域网。网络接口151可以包括有线接口(例如以太网)和/或无线接口,该无线接口实现各种RF数据通信标准,例如Wi-Fi、蓝牙或蜂窝数据网络标准(例如3G、4G、5G、LTE等)。
用户输入设备152可以包括用户可以通过其向计算系统150提供信号的任何设备(或多个设备);计算系统150可以将信号解释为指示特定用户请求或信息。用户输入设备152可以包括键盘、触摸板、触摸屏、鼠标或其他定点设备、滚轮、点击轮(click wheel)、拨号盘、按钮、开关、小键盘、麦克风、传感器(例如,运动传感器、眼睛跟踪传感器等)等中的任何一个或全部。
用户输出设备154可以包括计算系统150可以通过其向用户提供信息的任何设备。例如,用户输出设备154可以包括显示器,以显示由计算系统150生成或传送到计算系统150的图像。显示器可以结合各种图像生成技术(例如液晶显示器(LCD)、包括有机发光二极管(OLED)的发光二极管(LED)、投影系统、阴极射线管(CRT)等)以及支持电子器件(例如数模或模数转换器、信号处理器等)。可以使用既用作输入设备又用作输出设备的诸如触摸屏的设备。除了显示器之外或者代替显示器,可以提供用户输出设备154。示例包括指示灯、扬声器、触觉“显示”设备、打印机等。
一些实现包括电子部件,例如微处理器、将计算机程序指令存储在非暂时性计算机可读存储介质中的存储设备和存储器。本说明书中描述的许多特征可以被实现为被指定为编码在计算机可读存储介质上的一组程序指令的过程。当这些程序指令由一个或更多个处理器执行时,它们使处理器执行程序指令中指示的各种操作。程序指令或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子部件或使用解释器的微处理器执行的高级代码的文件。通过适当的编程,处理器156可以为计算系统150提供各种功能,包括本文描述的由服务器或客户端执行的任何功能,或者与消息管理服务相关联的其他功能。
应当理解,计算系统150是说明性的,并且变化和修改是可能的。结合本公开使用的计算机系统可以具有本文没有具体描述的其他能力。此外,虽然计算系统150是参考特定的块来描述的,但是应当理解,这些块是为了描述方便而定义的,并不旨在暗示组成部分的特定物理布置。例如,不同的块可以位于同一设施中、同一服务器机架中或同一主板上。此外,这些块不需要对应于物理上不同的部件。块可以被配置为例如通过对处理器编程或提供适当的控制电路来执行各种操作,并且根据如何获得初始配置,各个块可能是或可能不是可重新配置的。本公开的实现可以在各种装置(包括使用电路和软件的任意组合实现的电子设备)中实现。
B.使用替代数字格式用于值的乘法的方法和设备
本文公开的内容包括用于为神经网络执行值的乘法的系统、方法和设备的实施例,包括但不限于用于使用数字格式进行高效乘法的系统和方法。在一些方面,本公开涉及一种以替代格式表示数的技术,该替代格式更适合于例如在AI芯片中的节能乘法。
在一个方面,神经网络中使用的数(例如,可以在训练期间确定的来自激活函数的权重或值)可以被表示为线性格式,例如,传统的二进制数字格式,诸如有符号量值(signedmagnitude)或二进制补码(2’s complement)等。然而,采取这样的线性格式的两个数的乘法涉及乘法器运算,这可能比加法器运算或移位运算消耗更多的能量。为了解决这个问题,本公开提供了一种使用替代传统数字格式的数字格式(下文中有时称为“替代数字格式”)来执行值的乘法的解决方案,使得可以用更节能的操作(例如,加法器或移位运算)而不是乘法器运算来执行那些值的乘法。
另一方面,替代格式的使用可以减少乘法中的部分乘积的数量,从而进一步减少能量和延迟。例如,在使用替代格式执行乘法时,在一些实施例中,4位数据B=(b3 b2 b1b0)可以表示数b0+2*β(β=2n,n是大于或等于0的整数),而不是b0+2*b1+4*b2(在不考虑符号位b3的情况下)。如果由B表示的数乘以另一个4位数A,则部分乘积的数量是2(例如b0*A+2*β*A),而如果B是线性数字格式,则部分乘积的数量将是3(例如b0*A+2*b1*A+4*b2*A)。也就是说,例如在两个4位数的乘法中,与线性数字格式相比,这种替代格式可以将部分乘积(和部分乘积运算)的最大数量从3减少到2。
在另一方面,该替代数字格式可以结合各种可能定义的数集合或值集合的使用(例如,表示神经网络的权重),并且可以扩展值的范围(例如,在一些实施例中,由“000”~“111”表示的范围可以扩展到0~9),而该替代数字格式仅跳过或不允许几个值(例如,在一些实施例中,根据使用替代格式,6和7不被表示)。例如,4位数据“0110”和“0111”分别表示8和9,而不是以线性格式表示的6和7。因此,该替代数字可以扩展值的范围,同时不会显著降低神经网络的性能(例如,准确度)。
图2A是根据本公开的示例实现的用于执行AI相关处理的设备的实施例的框图。在一些实施例中,AI加速器210可以包括被配置为执行乘累加运算(multiply–accumulateoperation)的一个或更多个MAC单元215。MAC单元215可以包括乘法电路216、加法器电路和/或累加器电路。乘法电路216可以接收第一值211和第二值212作为输入,并将第一值和第二值的相乘结果213提供给加法器电路。在一些实施例中,第一值211可以表示用于神经网络的第一层的权重数据(例如,卷积运算的权重值)和激活数据(例如,激活函数的值)中的一个的值,并且第二值213可以表示用于神经网络的第一层的权重数据和激活数据中的另一个的值。
在一些实施例中,MAC单元215可以类似于图1C中的MAC单元140执行乘法和加法功能两者,但是以比MAC单元140更节能的方式执行,因为乘法电路216可以用更节能的运算(例如,加法器或移位运算)代替乘法器运算来执行乘法。乘法电路216将在以下部分中详细描述。
图2B是根据本公开的示例实现的用于执行AI相关处理的替代数字格式的实施例的框图。参考图2B,在一些实施例中,由(b3 b2 b1 b0)表示的4位数据(B)具有预定格式,该预定格式包括第一位221(由b0表示)和用于表示0或2n的值的两个或更多个第二位222(由(b2 b1)表示),其中n是大于或等于0的整数,使得B可以表示值b0+2*β,其中β=2n。在一些实施例中,4位数据B包括第三位b3以表示由B表示的值的符号。例如,根据该预定格式,B=(0 1 1 0)包括作为第一位b0的“0”、作为第二位(b2 b1)表示22(n=2)的“1 1”、以及表示正符号的“0”,从而表示+8(=0+2*22)。此外,B=(0 1 1 1)包括作为第一位b0的“1”、作为第二位(b2 b1)表示22(n=2)的“1 1”、以及作为第三位b3表示正符号的“0”,从而表示+9(=1+2*22)。
图2B还示出了映射表220,该映射表220示出了由相应的4位数据B表示的十进制值225。如图2B所示,替代格式中的4位数据B=(0 0 0 0)~(0 1 0 1)可以表示与线性数字格式中的值相同的值,而B=(0 1 1 0)和(0 1 1 1)可以表示与线性数字格式中的值不同的值(参见图2B中圈出的区域226)。此外,在如图2B所示的一些实施例中,使用上述预定格式,值6和值7以替代数字格式不被表示。
在一些实施例中,替代数字格式可以以与上述不同的方式定义预定格式。例如,如果作为第二位(b2 b1),“0 1”表示21(n=1),“1 0”表示22(n=2),并且“1 1”表示23(n=3),则4位数据B可以表示十进制值0-1、4-5、8-9、16-17,使得所表示的值的范围可以扩展到0至17,而值2-3、6-7以及10-15可以不被表示。在一些实施例中,第二位可以包括多于两位,并且第一位可以包括多于一位。例如,替代数字格式可以定义预定格式,使得第一位对应于(b1 b0),并且第二位(b4 b3 b2)表示2n
图2C是根据本公开的示例实现的用于使用替代数字格式执行乘法的电路的实施例的框图。参考图2C,加速器210的乘法电路216(见图2A)可以包括映射电路231、移位电路232、加法电路234、累加器235和/或符号生成器236,以对替代数字格式的第一值211和线性数字格式的第二值212执行乘法运算。在一些实施例中,加法电路234和累加器235可以分别具有与图1C所示的加法器和累加器相似的配置。
在该示例中,替代数字格式的第一值由包括4位(b3 b2 b1 b0)的B表示,其中b0是第一位,(b2 b1)是表示2n(n是大于或等于0的整数)的第二位,并且b3是表示第一值的符号的第三位223。使用这种格式,B可以表示值(b0+2*β),其中β=2n。线性数字格式的第二值由包括4位(a3 a2 a1 a0)的A表示,因此A可以表示值(a0+2*a1+4*a2)。乘法电路216可以将第一值B与第二值A相乘,以提供对应于值(b0+2*β)*(a0+2*a1+4*a2)=b0*(a0+2*a1+4*a2)+2n+1*(a0+2*a1+4*a2)的相乘结果213。第一部分乘积2n+1*(a0+2*a1+4*a2)和第二部分乘积b0*(a0+2*a1+4*a2)分别由pp1和pp2表示。
B*A=pp1+pp2=2n+1*(a0+2*a1+4*a2)+b0*(a0+2*a1+4*a2)……等式(1)
例如,如果B=(0 1 1 1)和A=(0 1 1 1),根据图2B所示的映射,可以获得β=2n=4,并且乘法电路216可以提供对应于(1+2*4)*(1+2*1+4*1)=63的十进制形式的相乘结果。现在,将描述乘法电路216可以如何使用替代数字格式以节能的方式提供相乘结果。
在一些实施例中,移位电路232可以是一个或更多个移位寄存器,该移位寄存器可以将数据向右方向移位k次,以将数据乘以2k。在一些实施例中,移位寄存器的移位控制输入信号可以决定移位寄存器何时移位以及移位寄存器移位多少次。在一些实施例中,移位电路232可以是桶形移位器,其可以对数据进行指定位数的循环移位。在一些实施例中,移位电路232可以是类似于图1A中的处理器124的处理器,该处理器可以使用内置逐位运算来实现循环移位。
在一些实施例中,映射电路231可以被配置为确定第一值B的第二位(b2 b1)的值是否为零。映射电路231可以被配置为响应于确定第二位(b2 b1)的值为零,提供零值作为第一部分乘积pp1(例如,第一相乘结果)。
在一些实施例中,响应于确定第一值B的第二位(b2 b1)的值不为零,移位电路232可以加载或存储第二值A的位(a2 a1 a0)的值(图2C中的22)。映射电路231可以被配置为接收第一值B的第二位(b2 b1)的值作为输入(图2C中的21),获得整数n,并且在(n+1)个周期期间生成移位控制输入信号,以使移位电路232将数据移位(n+1)位(图2C中的23)。响应于在(n+1)个周期期间接收到移位控制输入信号,移位电路232可以将存储的位(a2 a1 a0)的值移位(n+1)位,以输出第一部分乘积pp1=2n+1*(a0+2*a1+4*a2)(见等式1)。例如,如果B=(0 1 1 1),则映射电路231可以接收第一值B的第二位(b2 b1)的“1 1”作为输入,获得n=2,并且在(n+1)=3个周期期间生成要输入到移位电路232的移位控制输入信号,从而使移位电路232将存储的值(a0+2*a1+4*a2)移位(n+1)位,这对应于第一部分乘积pp1=2n+1*(a0+2*a1+4*a2)。
在一些实施例中,映射电路231可以是类似于图2B中的映射表220的查找表。在一些实施例中,映射电路231可以基于第二位(b2 b1)的值搜索查找表,并且获得或检索整数n,并且在(n+1)个周期期间生成要输入到移位电路的移位控制输入信号。在一些实施例中,处理器(例如图1A中的处理器124)可以基于第二位(b2 b1)的值搜索查找表。在一些实施例中,映射电路231可以被配置为从B读取二进制数(b2 b1),并且基于二进制数(b2 b1)的值在(n+1)个周期期间生成移位控制输入信号。例如,如果B=(0 11 1),映射电路231可以基于二进制数(“1 1”)的值在(n+1)=3个周期期间生成移位控制输入信号,因为二进制中的“1 1”等于十进制中的“3”。
在一些实施例中,移位电路232可以被配置为向加法电路234输出移位后的值(例如第一部分乘积pp1=2n+1*(a0+2*a1+4*a2))(图2C中的24)。响应于接收到第一部分乘积pp1,加法电路234可以被配置为将接收到的第一部分乘积与零相加(因为此时累加器235中不存在累加值),并将相加的值输出到累加器235(图2C中的25)。
现在,移位电路232可以加载或存储第二值A的位(a2 a1 a0)的值(图2C中的22)。在一些实施例中,乘法电路216可以控制移位电路232保持最后的值(例如,通过将“清除位”设置为低),以便不会再次加载或存储第二值A的位(a2 a1 a0)的值。在一些实施例中,乘法电路216可以控制移位电路232基于第一值的第一位(b0)的值输出存储的位(a2 a1 a0)的值。在一些实施例中,乘法电路216可以控制移位电路232向加法电路234选择性地输出零(在b0的值为零的情况下)或存储的位(a2 a1 a0)的值(在b0的值为“1”的情况下)(图2C中的24)。以这种方式,移位电路232可以将第二部分乘积pp2=b0*(a0+2*a1+4*a2)输出到加法电路234(图2C中的24)。响应于接收到第二部分乘积pp2,加法电路234可以被配置为将接收到的第二部分乘积pp2与先前已经从累加器235接收到的第一部分乘积pp1(图2C中的27)相加,并将相加的值(例如,pp1+pp2)输出到累加器235(图2C中的25)。响应于接收到相加的值,累加器235可以被配置为向符号生成器236输出相加的值(pp1+pp2)。响应于接收到相加的值(pp1+pp2),符号生成器236可以被配置为基于第一值B的第三位b3的值223和第二值A的第三位a3的值233,输出相加的值的正值或相加的值的负值作为相乘结果213(图2C中的28)。
图2C中示出的乘法电路216可以使用替代数字格式执行两个数的乘法,使得这两个数的乘法可以用更节能的运算(例如,加法器运算或移位运算)而不是乘法器运算来执行。此外,在使用替代格式将两个4位数相乘时,乘法电路216可以执行具有两个部分乘积(例如,等式1中的pp1和pp2)的乘法,从而与线性数字格式相比,将部分乘积(和部分乘积运算)的最大数量从3减少到2。
图2C示出了替代数字格式的第一值与作为线性数字格式的有符号量值格式的第二值的乘法。然而,本公开不限于图2C所示的实施例。即使当第二值是不同的线性数字格式(例如二进制补码格式或无符号格式)时,乘法电路216也可以以类似的方式将替代数字格式的第一值与不同线性数字格式的第二值相乘。例如,如果第二值是二进制补码格式,则来自累加器235的输出可以是二进制补码格式,并且因此符号生成器236不仅可以基于第一值的第三位b3和第二值的第三位a3来确定相乘结果的符号,还可以根据符号确定的结果将累加器输出转换成适当的二进制补码格式。如果第二值是无符号格式,则在图2C中的22中,移位电路232可以存储或加载(a3 a2 a1 a0)的值而不是(a2 a1 a0)的值,并且符号生成器236可以仅基于第一值的第三位b3来确定相乘结果的符号。
图2D是根据本公开的示例实现的用于使用替代数字格式执行乘法的电路的另一实施例的框图。参考图2D,乘法电路240可以具有与图2C中的乘法电路216相同的配置,除了(1)对两者都是替代数字格式的第一值241和第二值242执行乘法运算,并且因此(2)映射电路244被配置为不仅将第一值241的第二位的值映射到整数,而且将第二值242的第二位的值映射到整数。
在图2D的这个例子中,第一值241具有替代数字格式,并且由包括4位(b3 b2 b1b0)的B表示,其中b0是第一位,(b2 b1)是表示2n(n是大于或等于0的整数)的第二位,并且b3是表示第一值241的符号的第三位。使用这种格式,B可以表示值(b0+2*β),其中β=2n。第二值242也具有替代数字格式,并且由包括4位(c3 c2 c1 c0)的C表示,其中c0是第一位,(c2 c1)是表示2m(m是大于或等于0的整数)的第二位,并且c3是表示第二值242的符号的第三位。使用这种格式,C可以表示值(c0+2*γ),其中γ=2m。乘法电路240可以将第一值B与第二值C相乘,以提供对应于值(b0+2*β)*(c0+2*γ)=b0*c0+b0*2m+1+c0*2n+1+2n+1*2m+1的相乘结果243。乘积项2n+1*2m+1、c0*2n+1、b0*2m+1和b0*c0分别用pt1、pt2、pt3和pt4表示。
B*C=pt1+pt2+pt3+pt4=2n+1*2m+1+c0*2n+1+b0*2m+1+b0*c0……等式(2)
例如,如果B=(0 1 1 1)和C=(0 1 1 1),根据图2B所示的映射,可以获得β=2n=4和γ=2m=4(m=n=2),并且乘法电路240可以提供对应于(23*23+1*23+1*23+1*1)=81的十进制形式的相乘结果。现在,将描述乘法电路240可以如何使用替代数字格式以节能的方式提供相乘结果。
在一些实施例中,移位电路232可以加载或存储值1(“1”)(图2D中的40)。映射电路244可以被配置为接收第二值C的第二位(c2 c1)的值作为输入(图2D中的41),获得整数m,并且在(m+1)个周期期间生成移位控制输入信号,以使移位电路232将数据(例如,“1”)移位(m+1)位(图2D中的42)。响应于在(m+1)个周期期间接收到移位控制输入信号,移位电路232可以将存储的值(例如,“1”)移位(m+1)位,以在移位电路232中保持2m+1。然后,映射电路244可以被配置为接收第一值B的第二位(b2b1)的值作为输入(图2D中的43),获得整数n,并且在(n+1)个周期期间生成移位控制输入信号,以使移位电路232将存储的数据(例如,2m+1)移位(n+1)位(图2D中的44)。响应于在(n+1)个周期期间接收到移位控制输入信号,移位电路232可以将存储的值(例如,2m+1)移位(n+1)位,以将对应于乘积项pt1的2n+1*2m+1输出到加法电路234(图2D中的46)。例如,如果B=(0 1 1 1)和C=(0 1 1 1),则映射电路244可以获得m=n=2并生成相应的移位控制输入信号,使得移位电路232可以将存储的值(例如“1”)在最初移位(m+1)=3位,并且随后移位(n+1)=3位,以将对应于乘积项pt1的2n+1*2m+1(=64)输出到加法电路234。
在一些实施例中,移位电路232可以被配置为向加法电路234输出移位后的值(例如乘积项pt1=2n+1*2m+1)(图2D中的46)。响应于接收到第一乘积项pt1,加法电路234可以被配置为将接收到的第一乘积项与零相加(因为此时累加器235中不存在累加值),并将相加的值输出到累加器235(图2D中的47)。
在一些实施例中,移位电路232可以加载或存储第二值C的第一位c0的值(图2D中的45)。然后,映射电路244可以被配置为接收第一值B的第二位(b2 b1)的值作为输入(图2D中的43),获得整数n,并且在(n+1)个周期期间生成移位控制输入信号,以使移位电路232将存储的数据(例如,第一位c0的值)移位(n+1)位(图2D中的44)。在一些实施例中,映射电路244可以保持输出到移位电路232的最后的值(例如,这里是(n+1)),以使得映射电路244不接收第二位(b2 b1)的值和获得整数n。响应于在(n+1)个周期期间接收到移位控制输入信号,移位电路232可以将存储的值(例如,第一位c0的值)移位(n+1)位,以将对应于乘积项pt2的c0*2n+1输出到加法电路234(图2D中的46)。响应于接收到乘积项pt2,加法电路234可以被配置为将接收到的乘积项pt2与先前已经从累加器235接收到的乘积项pt1(图2D中的49)相加,并将相加的值(例如,pt1+pt2)输出到累加器235(图2C中的47)。
在一些实施例中,移位电路232可以加载或存储值1(“1”)(图2D中的40)。映射电路231可以被配置为接收第二值C的第二位(c2 c1)的值作为输入(图2D中的41),获得整数m,并且在(m+1)个周期期间生成移位控制输入信号,以使移位电路232将数据(例如,“1”)移位(m+1)位(图2D中的42)。响应于在(m+1)个周期期间接收到移位控制输入信号,移位电路232可以将存储的值(例如,“1”)移位(m+1)位,以在移位电路232中保持2m+1。在一些实施例中,乘法电路240可以控制移位电路232基于第一值的第一位(b0)的值输出存储的值2m+1。在一些实施例中,乘法电路240可以控制移位电路232向加法电路234选择性地输出零(在b0的值为零的情况下)或存储的值2m+1(在b0的值为“1”的情况下)(图2C中的46)。以这种方式,移位电路232可以将乘积项pt3=b0*2m+1输出到加法电路234(图2D中的46)。响应于接收到乘积项pt3,加法电路234可以被配置为将接收到的乘积项pt3与先前已经从累加器235接收到的相加的值(pt1+pt2)(图2D中的49)相加,并将新的相加的值(例如,pt1+pt2+pt3)输出到累加器235(图2C中的47)。
在一些实施例中,移位电路232可以加载或存储第二值C的第一位c0的值(图2D中的45)。在一些实施例中,乘法电路240可以控制移位电路232基于第一值的第一位(b0)的值输出存储的第一位c0的值。在一些实施例中,乘法电路240可以控制移位电路232向加法电路234选择性地输出零(在b0的值为零的情况下)或存储的第一位c0的值(在b0的值为“1”的情况下)(图2C中的46)。以这种方式,移位电路232可以将乘积项pt4=b0*c0输出到加法电路234(图2D中的46)。响应于接收到乘积项pt4,加法电路234可以被配置为将接收到的乘积项pt4与先前已经从累加器235接收到的先前相加的值(pt1+pt2+pt3)(图2D中的49)相加,并将新的相加的值(例如,pt1+pt2+pt3+pt4)输出到累加器235(图2C中的47)。
在一些实施例中,响应于接收到相加的值,累加器235可以被配置为向符号生成器236输出相加的值(pt1+pt2+pt3+pt4)。响应于接收到相加的值(pt1+pt2+pt3+pt4),符号生成器236可以被配置为基于第一值B的第三位b3的值245和第二值A的第三位a3的值246,输出相加的值的正值或相加的值的负值作为相乘结果243(图2D中的50)。
图2D中所示的乘法电路240可以执行两个替代数字格式的数的乘法,使得这两个数的乘法可以用更节能的运算(例如,加法器运算或移位运算)而不是乘法器运算来执行。此外,在将两个都是替代格式的4位数相乘时,乘法电路216可以执行具有四个乘积项(例如,等式2中的pt1、pt2、pt3和pt4)的乘法,从而与两个数都是线性数字格式的情况相比,将乘积项(和乘积运算)的最大数量从6减少到4。
在本公开的一些实施例中,设备(例如,图2A中的AI加速器210)包括电路(例如,图2A、图2C和图2D中的乘法电路216或240),该电路包括移位电路(例如,图2C和图2D中的移位电路232)和加法电路(例如,图2C和图2D中的加法电路234),以为神经网络执行第一值(例如,图2C和图2D中的第一值211或241)与第二值(例如,图2C和图2D中的第二值212或242)的乘法。第一值可以具有预定格式,该预定格式包括第一位(例如,图2C和图2D中的b0)和用于表示0或2n的值的两个或更多个第二位(参见图2B中的映射表226),其中n是大于或等于0的整数(例如,如果图2C和图2D中的B=(0 1 1 1),则(b2 b1)被映射到22(n=2))。该电路可以被配置为当两个或更多个第二位表示值2n时,经由移位电路将第二值(例如,图2C中的(a2 a1 a0)的值)移位(n+1)位,以提供第一相乘结果(例如,等式1中的第一部分乘积pp1)。该电路可以被配置为基于第一值的第一位的值(例如,图2C和图2D中的b0),选择性地输出零或第二值(例如,图2C中的(a2 a1 a0)的值),以提供第二相乘结果(例如,等式1中的第二部分乘积pp2)。该电路可以被配置为经由加法电路(例如,图2C和图2D中的加法电路234和累加器235)将第一相乘结果与第二相乘结果相加,以提供第一值与第二值的乘法的结果(例如,图2C中的相乘结果213)。
在一些实施例中,作为第一值的两个或更多个第二位的“1 1”可以表示值4。例如,如果替代数字格式的4位数据B是(0 1 1 1),则作为第二位的“1 1”表示4(=22,n=2),使得B被映射到b0+2*22=9(也参见图2B中的映射表220)。在一些实施例中,第一值的第一位可以是第一值的最低有效位(LSB)。例如,如图2B所示,4位数据B的第一位b0是LSB。在一些实施例中,第一值还可以包括第三位(例如,图2B中的第三位b3),以指示第一值是有符号的或无符号的(例如,图2B中的第三位b3的值223是B的符号位)。在一些实施例中,电路(例如,图2C中的符号生成器236)可以被配置为基于第一值的第三位的值(例如,基于图2C中的第三位b3的值223)来确定第一值与第二值的乘法的结果(例如,相乘结果213)的符号。
在一些实施例中,电路可以被配置为当两个或更多个第二位表示零值时,提供零值作为第一相乘结果。例如,参考图2C,映射电路231可以被配置为确定第一值B的第二位(b2 b1)的值是否为零。映射电路231可以被配置为响应于确定第二位(b2 b1)的值为零,提供零值作为第一部分乘积pp1(例如,第一相乘结果)。在一些实施例中,响应于确定第一值B的第二位(b2 b1)的值不为零,移位电路232可以加载或存储第二值A的位(a2 a1a0)的值(图2C中的22)。在一些实施例中,第二值可以使用线性数字格式来表示二进制数(例如,在图2C中第二值A是有符号量值格式的)。
在一些实施例中,第二值(例如,图2D中的第二值C)可以具有预定格式,该预定格式包括第一位(例如,图2D中的第一位c0)和用于表示0或2m的值的两个或更多个第二位(例如,图2D中的第二位(c2 c1)),其中m是大于或等于0的整数(例如,如果C=(0 1 1 1),则第二位(c2 c1)表示4=22,m=2)。在一些实施例中,电路(例如,图2D中的乘法电路240)还可以被配置为当第一值的两个或更多个第二位表示2n的值(例如,第一值B的第二位(b2 b1)表示4=22,n=2)并且第二值的两个或更多个第二位表示2m的值(例如,第二值C的第二位(c2 c1)表示4=22,m=2)时,经由移位电路(例如,图2D中的移位电路232)将值2m+1移位(n+1)位,以提供第三相乘结果(例如,等式(2)中的乘积项pt1=2n+1*2m+1)。该电路还可以被配置为基于第二值的第一位的值(例如,图2D中的第二值C的第一位c0),选择性地输出零或输出值2n+1以提供第四相乘结果(例如,等式(2)中的乘积项pt2=c0*2n+1)。该电路还可以被配置为基于第一值的第一位的值(例如,图2D中的第一值B的第一位b0),选择性地输出零或输出值2m+1以提供第五相乘结果(例如,等式(2)中的乘积项pt3=b0*2m+1)。该电路还可以被配置为基于第一值的第一位的值(例如,图2D中的第一值B的第一位b0),选择性地输出零或输出第二值的第一位的值(例如,图2D中的第二值C的第一位c0)以提供第六相乘结果(例如,等式(2)中的乘积项pt4=b0*c0)。该电路还可以被配置为经由加法电路(例如,图2D中的加法电路234和累加器235)将第三相乘结果至第六相乘结果相加(例如,等式(2)中的pt1+pt2+pt3+pt4),以提供第一值与第二值的乘法的结果(例如,图2D中的相乘结果243)。
在一些实施例中,电路(例如,MAC单元140)还可以被配置为使用权重数据(例如,用于对输入数据和权重值执行卷积运算的权重值)和表示激活函数的激活数据(例如,神经网络的层中激活函数的值)对神经网络的第一层执行卷积,并且第一值(例如,图2A、图2C和图2D中的第一值211或241)可以表示用于神经网络的第一层的权重数据和激活数据中的一个的值。在一些实施例中,第二值(例如,图2A、图2C和图2D中的第二值212或242)可以表示用于神经网络的第一层的权重数据和激活数据中的另一个的值。
图2E是示出根据本公开的示例实现的使用替代数字格式执行乘法的方法的流程图。简而言之,该方法包括当两个或更多个第二位表示值2n时,通过移位电路将第二值移位(n+1)位,以提供第一相乘结果(251)。该方法可以包括基于第一值的第一位的值选择性地输出零或第二值以提供第二相乘结果(252)。该方法可以包括通过加法电路将第一相乘结果与第二相乘结果相加,以提供第一值与第二值的乘法的结果(253)。
该方法包括为神经网络执行第一值(例如,图2C和图2D中的第一值211或241)与第二值(例如,图2C和图2D中的第二值212或242)的乘法。在一些实施例中,第一值具有预定格式,该预定格式包括第一位(例如,图2C和图2D中的b0)和用于表示零或2n的值的两个或更多个第二位,其中n是大于或等于0的整数(例如,在图2C和图2D中,如果B=(0 1 1 1),则(b2 b1)被映射到22(n=2))。
在251的进一步细节中,以及在一些实施例中,当两个或更多个第二位表示2n的值(例如,在图2C和图2D中,如果B=(0 1 1 1),则(b2 b1)被映射到22(n=2))时,设备(例如,图2A中的AI加速器210)的电路(例如,图2A、图2C和图2D中的乘法电路216或240)可以经由移位电路(例如,图2C和图2D中的移位电路232)将第二值(例如,图2C中的(a2 a1 a0)的值)移位(n+1)位,以提供第一相乘结果(例如,等式1中的第一部分乘积pp1=2n+1*(a0+2*a1+4*a2))。在一些实施例中,第一值的第一位可以是第一值的最低有效位(LSB)。例如,如图2B所示,4位数据B的第一位b0是LSB。在一些实施例中,作为第一值的两个或更多个第二位的“11”可以表示值4。例如,如果替代数字格式的4位数据B是(0 1 1 1),则作为第二位的“1 1”表示4(=22,n=2),使得B被映射到b0+2*22=9(也参见图2B中的映射表220)。在一些实施例中,第二值可以使用线性数字格式来表示二进制数。
在一些实施例中,电路可以被配置为当两个或更多个第二位表示零值时,提供零值作为第一相乘结果。例如,参考图2C,映射电路231可以被配置为确定第一值B的第二位(b2 b1)的值是否为零。映射电路231可以被配置为响应于确定第二位(b2 b1)的值为零,提供零值作为第一部分乘积pp1(例如,第一相乘结果)。在一些实施例中,响应于确定第一值B的第二位(b2 b1)的值不为零,移位电路232可以加载或存储第二值A的位(a2 a1 a0)的值(图2C中的22)。在一些实施例中,第二值可以使用线性数字格式来表示二进制数(例如,在图2C中第二值A是有符号量值格式)。
在252的进一步细节中,以及在一些实施例中,电路可以被配置为基于第一值的第一位的值(例如,图2C和图2D中的b0),选择性地输出零或第二值(例如,图2C中的(a2 a1a0)的值)以提供第二相乘结果(例如,等式1中的第二部分乘积pp2=b0*(a0+2*a1+4*a2))。
在253的进一步细节中,以及在一些实施例中,电路可以被配置为经由加法电路(例如,图2C和图2D中的加法电路234和累加器235)将第一相乘结果(例如,等式1中的第二部分乘积pp1)与第二相乘结果(例如,等式1中的第二部分乘积pp2)相加,以提供第一值与第二值的乘法的结果(例如,图2C中的相乘结果213)。
在一些实施例中,第一值还可以包括第三位(例如,图2B中的第三位b3),以指示第一值是有符号的或无符号的(例如,在图2B中第三位b3的值223是B的符号位)。在一些实施例中,电路可以被配置为基于第一值的第三位的值(例如,基于图2C中第三位b3的值223)来确定第一值与第二值的乘法的结果(例如,相乘结果213)的符号。
在一些实施例中,电路(例如,MAC单元140)还可以被配置为使用权重数据(例如,用于对输入数据和权重值执行卷积运算的权重值)和表示激活函数的激活数据(例如,神经网络的层中激活函数的值)对神经网络的第一层执行卷积,并且第一值(例如,图2A、图2C和图2D中的第一值211或241)可以表示用于神经网络的第一层的权重数据和激活数据中的一个的值。在一些实施例中,第二值(例如,图2A、图2C和图2D中的第二值212或242)可以表示用于神经网络的第一层的权重数据和激活数据中的另一个的值。
图2F是示出根据本公开的另一示例实现的使用替代数字格式执行乘法的方法的流程图。简而言之,该方法包括当第一值的两个或更多个第二位表示值2n并且第二值的两个或更多个第二位表示值2m时,通过移位电路将值2m+1移位(n+1)位,以提供第三相乘结果(261)。该方法可以包括基于第二值的第一位的值,选择性地输出零或值2n+1,以提供第四相乘结果(262)。该方法可以包括基于第一值的第一位的值,选择性地输出零或值2m+1以提供第五相乘结果(263)。该方法可以包括基于第一值的第一位的值,选择性地输出零或输出第二值的第一位的值,以提供第六相乘结果(264)。该方法可以包括通过加法电路将第三相乘结果至第六相乘结果相加,以提供第一值与第二值的乘法的结果(265)。
在一些实施例中,第二值(例如,图2D中的第二值C)可以具有预定格式,该预定格式包括第一位(例如,图2D中的第一位c0)和用于表示0或2m的值的两个或更多个第二位(例如,图2D中的第二位(c2 c1)),其中m是大于或等于零的整数。例如,如果第二值C=(0 1 11),则第二位(c2 c1)表示4=22,m=2。
在261的进一步细节中,以及在一些实施例中,当第一值的两个或更多个第二位表示2n的值(例如,第一值B的第二位(b2 b1)表示4=22,n=2)并且第二值的两个或更多个第二位表示2m的值(例如,第二值C的第二位(c2 c1)表示4=22,m=2)时,设备(例如,图2A中的MAC单元215)的电路(例如,图2D中的乘法电路240)可以经由移位电路(例如,图2D中的移位电路232)将值2m+1移位(n+1)位,以提供第三相乘结果(例如,等式(2)中的乘积项pt1=2n+1*2m+1)。例如,参考图2D,如果第一值B=(0 1 1 1)以及第二值C=(0 1 1 1),当第一值B的第二位(1 1)表示4=22(n=2)并且第二值C的第二位(1 1)表示4=22(m=2)时,乘法电路240可以经由移位电路232将值23移位3位,以提供2n+1*2m+1=64作为第三相乘结果。
在262的进一步细节中,以及在一些实施例中,电路(例如,图2D中的乘法电路240)可以基于第二值的第一位的值(例如,图2D中的第二值C的第一位c0)选择性地输出零或值2n+1以提供第四相乘结果(例如,等式(2)中的乘积项pt2=c0*2n+1)。例如,参考图2D,如果第一值B=(01 1 1)以及第二值C=(0 1 1 1 1),乘法电路240可以选择性地输出零或23以提供c0*2n+1=8作为第四相乘结果。
在263的进一步细节中,以及在一些实施例中,电路(例如,图2D中的乘法电路240)可以基于第一值的第一位的值(例如,图2D中的第一值B的第一位b0)选择性地输出零或值2m+1以提供第五相乘结果(例如,等式(2)中的乘积项pt3=b0*2m+1)。例如,如果第一值B=(01 1 1)以及第二值C=(0 1 1 1),乘法电路240可以选择性地输出零或23以提供b0*2m+1=8作为第五相乘结果。
在264的进一步细节中,以及在一些实施例中,电路可以基于第一值的第一位的值(例如,图2D中的第一值B的第一位b0)选择性地输出零或输出第二值的第一位的值(例如,图2D中的第二值C的第一位c0)以提供第六相乘结果(例如,等式(2)中的乘积项pt4=b0*c0)。例如,如果第一值B=(0 1 1 1)以及第二值C=(0 1 1 1),乘法电路240可以选择性地输出0或1以提供b0*c0=1作为第六相乘结果。
在265的进一步细节中,以及在一些实施例中,电路可以经由加法电路(例如,图2D中的加法电路234和累加器235)将第三相乘结果至第六相乘结果相加(例如,等式(2)中的pt1+pt2+pt3+pt4),以提供第一值与第二值的乘法的结果(例如,图2D中的相乘结果243)。例如,如果第一值B=(0 1 1 1)以及第二值C=(0 1 1 1 1),则乘法电路240可以将pt1(=64)、pt2(=8)、pt3(=8)和pt4(=1)相加,以提供81(=64+8+8+1)作为第一值B与第二值C的乘法的结果。
现在已经描述了一些说明性的实现,显然前述是说明性的而不是限制性的,已经通过示例的方式给出。具体而言,尽管本文呈现的许多示例涉及方法动作或系统元素的特定组合,但是那些动作和那些元素可以以其他方式组合来实现相同的目标。结合一个实现讨论的动作、元素和特征不旨在被排除在其他实现或实现中的类似角色之外。
用于实现结合本文公开的实施例描述的各种过程、操作、说明性逻辑、逻辑块、模块和电路的硬件和数据处理部件可以用通用单芯片或多芯片处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、分立门或晶体管逻辑、分立硬件部件或其设计用于执行本文描述的功能的任何组合来实现或执行。通用处理器可以是微处理器,或者任何传统的处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、与DSP内核结合的一个或更多个微处理器、或者任何其他这样的配置。在一些实施例中,特定的过程和方法可以由特定于给定功能的电路来执行。存储器(例如,存储器、存储器单元、存储设备等)可以包括一个或更多个设备(例如,RAM、ROM、闪存、硬盘储存设备等),用于存储数据和/或计算机代码,以完成或促进本公开中描述的各种过程、层和模块。存储器可以是或可以包括易失性存储器或非易失性存储器,并且可以包括数据库部件、目标代码部件、脚本部件或用于支持本公开中描述的各种活动和信息结构的任何其他类型的信息结构。根据示例性实施例,存储器经由处理电路可通信地连接到处理器,并且包括用于(例如,通过处理电路和/或处理器)执行本文描述的一个或更多个过程的计算机代码。
本公开设想了用于完成各个操作的方法、系统和在任何机器可读介质上的程序产品。可以使用现有计算机处理器、或通过为此目的或另一目的所引入的恰当系统的专用计算机处理器或通过硬接线的系统来实现本公开的实施例。在本公开的范围内的实施例包括程序产品,其包括用于携带或具有存储于其上的机器可执行指令或数据结构的机器可读介质。这样的机器可读介质可以是任意可用介质,其可通过通用或专用计算机或具有处理器的其他机器访问。举例来讲,这样的机器可读介质可包括RAM、ROM、EPROM、EEPROM或其他光盘储存设备、磁盘储存设备或其他磁储存设备、或可用于携带或存储以机器可执行指令或数据结构形式的期望的程序代码且可以通过通用或专用计算机或具有处理器的其他机器访问的任何其他介质。上面的组合也被包括在机器可读介质的范围内。机器可执行指令包括例如使通用计算机、专用计算机或专用处理机器执行某一功能或一组功能的指令和数据。
本文所使用的措辞和术语是为了描述的目的,且不应被视为限制性的。本文中对“包括(including)”、“包括(comprising)”、“具有”、“包含”、“涉及”、“以......为特征”、“特征在于”及其变型的使用意味着包含其后列出的项目、其等同物和附加项目,以及仅由其后列出的项目组成的替代实现。在一个实现中,本文描述的系统和方法由一个、多于一个的每个组合或者所有描述的元件、动作或部件组成。
本文中以单数形式提及的对系统和方法的实现或元素或动作的任何引用也可以包括包含多个这些元素的实现,并且本文中以复数形式对任何实现或元素或动作的任何引用也可以包括仅包含单个元素的实现。单数或复数形式的引用不旨在将当前公开的系统或方法、它们的部件、动作或元素限制为单个配置或复数配置。对基于任何信息、动作或元素的任何动作或元素的引用可以包括其中动作或元素至少部分基于任何信息、动作或元素的实现。
本文公开的任何实现可以与任何其他实现或实施例组合,并且对“实现”、“一些实现”、“一个实现”等的引用不一定是互斥的,并且旨在指示结合该实现描述的特定特征、结构或特性可以被包括在至少一个实现或实施例中。本文使用的这些术语不一定都指同一实现。任何实现都可以以与本文公开的方面和实现相一致的任何方式,包括性地或排他地与任何其他实现相结合。
在附图、详细描述或任何权利要求中的技术特征后面带有参考标记的地方,参考标记被包括以增加附图、详细描述和权利要求的可理解性。因此,参考标记及其缺失都不会对任何权利要求元素的范围有任何限制性影响。
在不脱离其特征的情况下,本文描述的系统和方法可以以其他特定形式体现。除非另有明确说明,否则对“大约(approximately)”、“约(about)”、“基本上”或其他程度术语的提及包括给定测量值、单位或范围的+/-10%的变化。耦合的元件可以彼此直接电耦合、机械耦合或物理耦合,或者利用中间元件电耦合、机械耦合或物理耦合。因此,本文描述的系统和方法的范围由所附权利要求而不是前面的描述来指示,并且落入权利要求的等同物的含义和范围内的改变包含在其中。
术语“耦合”及其变型包括两个构件直接或间接地彼此连接(join)。这样的连接可以是静止的(例如,永久的或固定的)或可移动的(例如,可移除的或可释放的)。这样的连接可以通过两个构件直接耦合或相互耦合来实现,可以通过两个构件使用单独的中间构件彼此耦合和使用任何附加的中间构件彼此耦合来实现,或者通过两个构件使用与两个构件中的一个构件一体形成为单一单元体的中间构件彼此耦合来实现。如果“耦合”或其变型由附加术语(例如,直接耦合)来修饰,则上面提供的“耦合”的一般定义由附加术语的简单语言含义来修饰(例如,“直接耦合”是指两个构件在没有任何单独的中间构件的情况下的连接),导致比上面提供的“耦合”的一般定义更窄的定义。这样的耦合可以是机械的、电的或流体的。
对“或”的引用可被解释为包含性的,因此,使用“或”描述的任何术语可以指示单个、多于一个和所有所述术语中的任何一种。对“‘A’和‘B’中的至少一个”的引用可以只包括“A”,只包括“B”,以及同时包括“A”和“B”。与“包括”或其他开放术语一起使用的这样的引用可以包括附加项目。
在本质上不脱离本文公开的主题的教导和优点的情况下,可以对所描述的元件和动作进行修改,例如各种元件的尺寸、大小、结构、形状和比例、参数值、安装布置、材料使用、颜色、取向的变化。例如,显示为一体形成的元件可以由多个部分或元件构成,元件的位置可以颠倒或以其他方式改变,并且分立元件的性质或数量或位置可以改变或变化。在不脱离本公开的范围的情况下,还可以在所公开的元件和操作的设计、操作条件和布置中进行其他替换、修改、改变和省略。
本文对元件位置(例如,“顶部”、“底部”、“上方”、“下方”)的引用仅用于描述附图中各种元件的取向。根据其他示例性实施例,各种元件的取向可以不同,并且这样的变型旨在被本公开所包含。

Claims (15)

1.一种设备,包括:
电路,所述电路包括移位电路和加法电路,用于为神经网络执行第一值与第二值的乘法,所述第一值具有预定格式,所述预定格式包括第一位和用于表示零或2n的值的两个或更多个第二位,其中n是大于或等于0的整数,所述电路被配置为:
当所述两个或更多个第二位表示值2n时,经由所述移位电路将所述第二值移位(n+1)位,以提供第一相乘结果,
基于所述第一值的第一位的值,选择性地输出零或所述第二值以提供第二相乘结果,以及
经由所述加法电路将所述第一相乘结果与所述第二相乘结果相加,以提供所述第一值与所述第二值的乘法的结果。
2.根据权利要求1所述的设备,其中,所述第一值的第一位是所述第一值的最低有效位。
3.根据权利要求1或权利要求2所述的设备,其中,所述电路被配置为当所述两个或更多个第二位表示零值时,提供零值作为所述第一相乘结果。
4.根据权利要求1、权利要求2或权利要求3所述的设备,其中,所述第二值使用线性数字格式来表示二进制数。
5.根据权利要求1至4中任一项所述的设备,其中:
所述第二值具有所述预定格式,所述预定格式包括第一位和用于表示零或2m的值的两个或更多个第二位,其中m是大于或等于零的整数,所述电路还被配置为:
当所述第一值的两个或更多个第二位表示值2n并且所述第二值的两个或更多个第二位表示值2m时,经由所述移位电路将值2m+1移位(n+1)位以提供第三相乘结果,
基于所述第二值的第一位的值,选择性地输出零或值2n+1以提供第四相乘结果,
基于所述第一值的第一位的值,选择性地输出零或值2m+1以提供第五相乘结果,
基于所述第一值的第一位的值,选择性地输出零或所述第二值的第一位的值以提供第六相乘结果,以及
经由所述加法电路将所述第三相乘结果至所述第六相乘结果相加,以提供所述第一值与所述第二值的乘法的结果。
6.根据权利要求1至5中任一项所述的设备,其中,作为所述第一值的两个或更多个第二位的“1 1”表示值4。
7.根据权利要求1至6中任一项所述的设备,其中,所述第一值还包括第三位,以指示所述第一值是有符号的或者是无符号的;并且优选地,其中,所述电路被配置为基于所述第一值的第三位的值来确定所述第一值与所述第二值的乘法的结果的符号。
8.根据权利要求1至7中任一项所述的设备,其中:
所述电路还被配置为使用权重数据和表示激活函数的激活数据对所述神经网络的第一层执行卷积,并且
所述第一值表示用于所述神经网络的所述第一层的所述权重数据和所述激活数据中的一个的值;并且优选地,其中,所述第二值表示用于所述神经网络的所述第一层的所述权重数据和所述激活数据中的另一个的值。
9.一种方法,包括:
为神经网络执行第一值与第二值的乘法,所述第一值具有预定格式,所述预定格式包括第一位和用于表示零或2n的值的两个或更多个第二位,其中n是大于或等于0的整数,
其中,执行所述第一值与所述第二值的乘法包括:
当所述两个或更多个第二位表示值2n时,通过移位电路将所述第二值移位(n+1)位以提供第一相乘结果,
基于所述第一值的第一位的值,选择性地输出零或所述第二值以提供第二相乘结果,以及
通过加法电路将所述第一相乘结果与所述第二相乘结果相加,以提供所述第一值与所述第二值的乘法的结果。
10.根据权利要求9所述的方法,其中,所述第一值的第一位是所述第一值的最低有效位。
11.根据权利要求9或权利要求10所述的方法,其中,执行所述第一值与所述第二值的乘法包括:
当所述两个或更多个第二位表示零值时,提供零值作为所述第一相乘结果;和/或优选地,其中所述第二值使用线性数字格式来表示二进制数。
12.根据权利要求9、权利要求10或权利要求11所述的方法,其中:
所述第二值具有所述预定格式,所述预定格式包括第一位和用于表示零或2m的值的两个或更多个第二位,其中m是大于或等于零的整数,并且
执行所述第一值与所述第二值的乘法还包括:
当所述第一值的两个或更多个第二位表示值2n并且所述第二值的两个或更多个第二位表示值2m时,通过所述移位电路将值2m+1移位(n+1)位以提供第三相乘结果,
基于所述第二值的第一位的值,选择性地输出零或值2n+1以提供第四相乘结果,
基于所述第一值的第一位的值,选择性地输出零或值2m+1以提供第五相乘结果,
基于所述第一值的第一位的值,选择性地输出零或所述第二值的第一位的值以提供第六相乘结果,以及
通过所述加法电路将所述第三相乘结果至所述第六相乘结果相加,以提供所述第一值与所述第二值的乘法的结果。
13.根据权利要求9至12中任一项所述的方法,其中,作为所述第一值的两个或更多个第二位的“1 1”表示值4。
14.根据权利要求9至13中任一项所述的方法,其中,所述第一值还包括第三位,以指示所述第一值是有符号的或者是无符号的;并且优选地,其中,执行所述第一值与所述第二值的乘法还包括:
基于所述第一值的第三位的值来确定所述第一值与所述第二值的乘法的结果的符号。
15.根据权利要求9至14中任一项所述的方法,还包括:
使用权重数据和表示激活函数的激活数据对所述神经网络的第一层执行卷积,
其中,所述第一值表示用于所述神经网络的所述第一层的所述权重数据和所述激活数据中的一个的值;并且优选地,其中,所述第二值表示用于所述神经网络的所述第一层的所述权重数据和所述激活数据中的另一个的值。
CN202080051898.9A 2019-07-15 2020-07-09 支持用于高效乘法的替代数字格式的系统和方法 Active CN114127680B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/511,085 2019-07-15
US16/511,085 US10977002B2 (en) 2019-07-15 2019-07-15 System and method for supporting alternate number format for efficient multiplication
PCT/US2020/041454 WO2021011316A1 (en) 2019-07-15 2020-07-09 System and method for supporting alternate number format for efficient multiplication

Publications (2)

Publication Number Publication Date
CN114127680A true CN114127680A (zh) 2022-03-01
CN114127680B CN114127680B (zh) 2024-07-30

Family

ID=71842869

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080051898.9A Active CN114127680B (zh) 2019-07-15 2020-07-09 支持用于高效乘法的替代数字格式的系统和方法

Country Status (6)

Country Link
US (1) US10977002B2 (zh)
EP (1) EP3999949A1 (zh)
JP (1) JP2022541721A (zh)
KR (1) KR20220031117A (zh)
CN (1) CN114127680B (zh)
WO (1) WO2021011316A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116402106A (zh) * 2023-06-07 2023-07-07 深圳市九天睿芯科技有限公司 神经网络加速方法、神经网络加速器、芯片及电子设备

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11347477B2 (en) * 2019-09-27 2022-05-31 Intel Corporation Compute in/near memory (CIM) circuit architecture for unified matrix-matrix and matrix-vector computations
US11551148B2 (en) * 2020-04-29 2023-01-10 Marvell Asia Pte Ltd System and method for INT9 quantization
US11714998B2 (en) * 2020-05-05 2023-08-01 Intel Corporation Accelerating neural networks with low precision-based multiplication and exploiting sparsity in higher order bits
KR20220023490A (ko) * 2020-08-21 2022-03-02 삼성전자주식회사 전자 장치 및 그 제어 방법
CN113361699B (zh) * 2021-07-16 2023-05-26 安谋科技(中国)有限公司 乘法电路、片上系统和电子设备
US20230146445A1 (en) * 2021-10-31 2023-05-11 Redpine Signals, Inc. Modular Analog Multiplier-Accumulator Unit Element for Multi-Layer Neural Networks
KR20240077167A (ko) * 2022-11-24 2024-05-31 주식회사 모빌린트 합성곱 연산을 위한 데이터 처리 방법 및 컴퓨팅 장치

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864529A (en) * 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture
US5119325A (en) * 1990-12-04 1992-06-02 Motorola, Inc. Multiplier having a reduced number of partial product calculations
US20050228845A1 (en) * 2004-04-12 2005-10-13 Mathstar, Inc. Shift and recode multiplier
CN107273090A (zh) * 2017-05-05 2017-10-20 中国科学院计算技术研究所 面向神经网络处理器的近似浮点乘法器及浮点数乘法
DE102018001229A1 (de) * 2017-02-16 2018-08-16 Intel IP Corporation Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
CN108564169A (zh) * 2017-04-11 2018-09-21 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
CN109472353A (zh) * 2018-11-22 2019-03-15 济南浪潮高新科技投资发展有限公司 一种卷积神经网络量化电路及量化方法
CN109521994A (zh) * 2017-09-19 2019-03-26 华为技术有限公司 乘法硬件电路、片上系统及电子设备
CN109635944A (zh) * 2018-12-24 2019-04-16 西安交通大学 一种稀疏卷积神经网络加速器及实现方法
CN110447010A (zh) * 2017-05-17 2019-11-12 谷歌有限责任公司 在硬件中执行矩阵乘法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4988627B2 (ja) * 2008-03-05 2012-08-01 ルネサスエレクトロニクス株式会社 フィルタ演算器及び動き補償装置

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4864529A (en) * 1986-10-09 1989-09-05 North American Philips Corporation Fast multiplier architecture
US5119325A (en) * 1990-12-04 1992-06-02 Motorola, Inc. Multiplier having a reduced number of partial product calculations
US20050228845A1 (en) * 2004-04-12 2005-10-13 Mathstar, Inc. Shift and recode multiplier
DE102018001229A1 (de) * 2017-02-16 2018-08-16 Intel IP Corporation Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
CN108564169A (zh) * 2017-04-11 2018-09-21 上海兆芯集成电路有限公司 硬件处理单元、神经网络单元和计算机可用介质
CN107273090A (zh) * 2017-05-05 2017-10-20 中国科学院计算技术研究所 面向神经网络处理器的近似浮点乘法器及浮点数乘法
CN110447010A (zh) * 2017-05-17 2019-11-12 谷歌有限责任公司 在硬件中执行矩阵乘法
CN109521994A (zh) * 2017-09-19 2019-03-26 华为技术有限公司 乘法硬件电路、片上系统及电子设备
WO2019057093A1 (zh) * 2017-09-19 2019-03-28 华为技术有限公司 乘法电路、片上系统及电子设备
CN109472353A (zh) * 2018-11-22 2019-03-15 济南浪潮高新科技投资发展有限公司 一种卷积神经网络量化电路及量化方法
CN109635944A (zh) * 2018-12-24 2019-04-16 西安交通大学 一种稀疏卷积神经网络加速器及实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
S.SARAVANAN: "design of hybrid encoded booth multiplier with reduced switching activity technique and low power 0.13um adder for DSP block in wireless sensor node", 《2010 INTERNATIONAL CONFERENCE ON WIRELESS COMMUNICATION AND SENSOR COMPUTING》, 17 February 2010 (2010-02-17), pages 1 - 6 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116402106A (zh) * 2023-06-07 2023-07-07 深圳市九天睿芯科技有限公司 神经网络加速方法、神经网络加速器、芯片及电子设备
CN116402106B (zh) * 2023-06-07 2023-10-24 深圳市九天睿芯科技有限公司 神经网络加速方法、神经网络加速器、芯片及电子设备

Also Published As

Publication number Publication date
JP2022541721A (ja) 2022-09-27
KR20220031117A (ko) 2022-03-11
US20210019115A1 (en) 2021-01-21
CN114127680B (zh) 2024-07-30
EP3999949A1 (en) 2022-05-25
US10977002B2 (en) 2021-04-13
WO2021011316A1 (en) 2021-01-21

Similar Documents

Publication Publication Date Title
US11675998B2 (en) System and method for performing small channel count convolutions in energy-efficient input operand stationary accelerator
US11615319B2 (en) System and method for shift-based information mixing across channels for shufflenet-like neural networks
CN114127680B (zh) 支持用于高效乘法的替代数字格式的系统和方法
US11385864B2 (en) Counter based multiply-and-accumulate circuit for neural network
US20210012178A1 (en) Systems, methods, and devices for early-exit from convolution
US11429394B2 (en) Efficient multiply-accumulation based on sparse matrix
US11301545B2 (en) Power efficient multiply-accumulate circuitry
US20210012186A1 (en) Systems and methods for pipelined parallelism to accelerate distributed processing
US20210012202A1 (en) Systems and methods for asymmetrical scaling factor support for negative and positive values
CN114008664A (zh) 去卷积的优化
US11899745B1 (en) Systems and methods for speech or text processing using matrix operations

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
CB03 Change of inventor or designer information

Inventor after: Ganesh Venkatsch

Inventor after: Lai Liangzhen

Inventor after: Pierce Yiren Zhuang

Inventor after: Li Meng

Inventor after: Vicas Chandra

Inventor before: Ganesh Venkatsch

Inventor before: Lai Liangzhen

Inventor before: Pierce Yiren Zhuang

Inventor before: Li Meng

Inventor before: Vicas Chandra

CB03 Change of inventor or designer information
CB02 Change of applicant information

Address after: California, USA

Applicant after: Yuan Platform Technology Co.,Ltd.

Address before: California, USA

Applicant before: Facebook Technologies, LLC

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant