CN115016762A - 用于执行乘积累加运算的运算装置和运算方法 - Google Patents

用于执行乘积累加运算的运算装置和运算方法 Download PDF

Info

Publication number
CN115016762A
CN115016762A CN202111141417.6A CN202111141417A CN115016762A CN 115016762 A CN115016762 A CN 115016762A CN 202111141417 A CN202111141417 A CN 202111141417A CN 115016762 A CN115016762 A CN 115016762A
Authority
CN
China
Prior art keywords
data
mantissa
operand data
exponent
bit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111141417.6A
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.)
Samsung Electronics Co Ltd
Korea Advanced Institute of Science and Technology KAIST
Original Assignee
Samsung Electronics Co Ltd
Korea Advanced Institute of Science and Technology KAIST
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
Priority claimed from KR1020210034835A external-priority patent/KR20220125114A/ko
Application filed by Samsung Electronics Co Ltd, Korea Advanced Institute of Science and Technology KAIST filed Critical Samsung Electronics Co Ltd
Publication of CN115016762A publication Critical patent/CN115016762A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

公开了用于执行乘积累加运算的运算装置和运算方法。用于执行乘积累加运算的运算装置包括:控制器,被配置为:接收由4位定点表示的第一操作数数据,接收16位宽的第二操作数数据,确定第二操作数数据的数据类型,如果第二操作数数据是浮点类型,则对第二操作数数据进行编码,将编码的第二操作数数据拆分成四个4位块;乘法器,被配置为:执行被拆分成四个4位块的第二操作数数据与第一操作数数据之间的乘法运算;寄存器,被配置为:对从乘法器输出的乘法运算的结果进行累加和存储。

Description

用于执行乘积累加运算的运算装置和运算方法
本申请要求于2021年3月4日在韩国知识产权局提交的第10-2021-0028929号韩国专利申请以及于2021年3月17日在韩国知识产权局提交的第10-2021-0034835号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
下面的描述涉及用于执行乘积累加运算的运算装置和运算方法。
背景技术
基于计算架构来实现人工神经网络(ANN)。由于ANN技术的最新发展,正在积极进行研究以在各种类型的电子系统中使用ANN来分析输入数据并提取有效信息。针对复杂的输入数据,处理ANN的装置需要大量的乘积累加(MAC)计算。因此,需要一种使用ANN实时分析大量输入数据并有效地处理MAC运算以提取期望的信息的技术。
发明内容
提供本发明内容以简要的形式介绍在以下具体实施方式中进一步描述的构思的选择。本发明内容不意在确定要求权利的主题的关键特征或必要特征,也不意在用于帮助确定要求权利的主题的范围。
在一个总体方面,一种用于执行乘积累加(MAC)运算的运算装置包括:控制器,被配置为:接收由4位定点表示的第一操作数数据,接收16位宽的第二操作数数据,确定第二操作数数据的数据类型,如果第二操作数数据是浮点类型,则对第二操作数数据进行编码,将编码的第二操作数数据拆分成四个4位块;乘法器,被配置为:执行被拆分成四个4位块的第二操作数数据与第一操作数数据之间的乘法运算;寄存器,被配置为:对从乘法器输出的乘法运算的结果进行累加和存储。
在一个总体方面,一种用于执行乘积累加(MAC)运算的运算方法包括:通过控制器接收由4位定点表示的第一操作数数据,接收16位宽的第二操作数数据,确定第二操作数数据的数据类型,其中,如果第二操作数数据是浮点类型,则通过控制器对第二操作数数据进行编码,将编码的第二操作数数据拆分成四个4位块;通过乘法器执行被拆分成四个4位块的第二操作数数据与第一操作数数据之间的乘法运算;通过寄存器对从乘法器输出的乘法运算的结果进行累加和存储。
在一个总体方面,一种编码方法包括:接收由16位半浮点表示的输入数据;调整输入数据的指数的位数和尾数的位数,以将输入数据拆分成多个4位单元;以及对位数被调整的输入数据进行编码,使得指数是“4”的倍数。
调整位数的步骤可包括:将4位分配给指数;以及将11位分配给尾数。
编码的步骤可包括:计算当输入数据的指数与“4”之和除以“4”时获得的商和余数;基于所述商对指数进行编码;以及基于余数对尾数进行编码。
对指数进行编码的步骤可包括:基于所述商和偏置来对指数进行编码。
对尾数进行编码的步骤可包括:如果余数为“0”,则确定尾数的第一位值为“1”。
对尾数进行编码的步骤可包括:如果余数为“1”,则确定尾数的第一位值为“0”,并且尾数的第二位值为“1”。
对尾数进行编码的步骤可包括:如果余数为“2”,则确定尾数的第一位值为“0”,尾数的第二位值为“0”,并且尾数的第三位值为“1”。
对尾数进行编码的步骤可包括:如果余数为“3”,则确定尾数的第一位值为“0”,尾数的第二位值为“0”,尾数的第三位值为“0”,并且第四位值为“1”。
在另一总体方面,一种运算方法包括:接收由4位定点表示的第一操作数数据;接收16位宽的第二操作数数据;确定第二操作数数据的数据类型;如果第二操作数数据是浮点类型,则对第二操作数数据进行编码;将编码的第二操作数数据拆分成四个4位块;以及执行被拆分成四个块的第二操作数数据与第一操作数数据之间的乘积累加(MAC)运算。
编码的步骤可包括:调整第二操作数数据的指数的位数和尾数的位数,以将第二操作数数据拆分成多个4位单元;以及对位数被调整的第二操作数数据进行编码,使得指数是“4”的倍数。
拆分的步骤可包括:将编码的第二操作数数据拆分成一个指数块数据和三个尾数块数据。
执行MAC的步骤可包括:执行第一操作数数据与所述三个尾数块数据中的每个尾数块数据之间的乘法运算;将指数块数据与存储在指数寄存器中的累加指数数据进行比较;以及基于比较的结果,将执行乘法运算的结果累加到存储在三个尾数寄存器中的每个中的累加尾数数据。
累加的步骤可包括:基于比较的结果,将执行乘法运算的结果与存储在所述三个尾数寄存器中的每个中的累加尾数数据的累加位置对齐。
所述运算方法还可包括:如果第二操作数数据是定点类型,则将第二操作数数据拆分成四个4位块以用于并行数据运算。
在又一总体方面,一种编码装置可包括处理器,处理器被配置为:接收由16位半浮点表示的输入数据,调整输入数据的指数的位数和尾数的位数,以将输入数据拆分成多个4位单元,并且对位数被调整的输入数据进行编码,使得指数是“4”的倍数。
处理器还可被配置为:将4位分配给指数,并且将11位分配给尾数。
处理器还可被配置为:计算当输入数据的指数与“4”之和除以“4”时获得的商和余数,基于所述商对指数进行编码,并且基于余数对尾数进行编码。
在又一总体方面,一种运算装置包括处理器,处理器被配置为:接收由4位定点表示的第一操作数数据,接收16位宽的第二操作数数据,确定第二操作数数据的数据类型,如果第二操作数数据是浮点类型,则对第二操作数数据进行编码,将编码的第二操作数数据拆分成四个4位块,以及执行被拆分成四个块的第二操作数数据与第一操作数数据之间的MAC运算。
处理器还可被配置为:调整第二操作数数据的指数的位数和尾数的位数,以将第二操作数数据拆分成多个4位单元,并且对位数被调整的第二操作数数据进行编码,使得指数是“4”的倍数。
处理器还可被配置为:将编码的第二操作数数据拆分成一个指数块数据和三个尾数块数据。
处理器还可被配置为:执行第一操作数数据与所述三个尾数块数据中的每个尾数块数据之间的乘法运算,将指数块数据与存储在指数寄存器中的累加指数数据进行比较,并且基于比较的结果,将执行乘法运算的结果累加到存储在三个尾数寄存器中的每个中的累加尾数数据。
处理器还可被配置为:基于比较的结果,将执行乘法运算的结果与存储在所述三个尾数寄存器中的每个中的累加尾数数据的累加位置对齐。
处理器还可被配置为:如果第二操作数数据是定点类型,则将第二操作数数据拆分成四个4位块以用于并行数据运算。
从下面的具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1A示出使用人工神经网络(ANN)执行深度学习运算的方法的示例。
图1B示出深度学习运算中的滤波器和作为输入提供的输入特征图的数据的示例。
图1C示出基于深度学习执行卷积运算的示例。
图1D示出使用脉动阵列执行卷积运算的示例。
图2示出编码方法的示例。
图3示出编码方法的示例。
图4示出运算方法的示例。
图5示出执行由4位定点表示的第一操作数数据与由16位半浮点表示的第二操作数数据之间的乘积累加(MAC)运算的示例。
图6示出根据指数差对齐数据的示例。
图7示出运算装置的示例。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图参考标号将被理解为表示相同的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
下面的结构性或功能性描述是示例性的,以仅描述示例,并且示例的范围不限于本说明书中提供的描述。
在此可使用诸如第一、第二等的术语来描述组件。这些术语中的每个不用于限定相应组件的本质、次序或顺序,而是仅用于将相应组件与其他组件区分开。例如,在根据本公开的构思的权利范围内,“第一”组件可被称为“第二”组件,或者类似地,“第二”组件可被称为“第一”组件。
应当注意,如果描述了一个组件“连接”、“结合”或“接合”到另一组件,则尽管第一组件可直接连接、直接结合或直接接合到第二组件,但是第三组件可“连接”、“结合”和“接合”在第一组件与第二组件之间。相比之下,应当注意,如果描述了一个组件“直接连接”、“直接结合”或“直接接合”到另一组件,则可不存在第三组件。描述组件之间的关系的表述(例如,“在……之间”、“紧接在……之间”或“紧邻”等)应被同样地解释。
除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。还应当理解,当在本说明书中使用术语“包括”和/或“包含”时,表明存在陈述的特征、整体、步骤、操作、元件、组件或它们的组合,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且不应以理想化或过于形式化的含义进行解释。
示例可被实现为各种类型的产品(诸如,以数据中心、服务器、个人计算机、膝上型计算机、平板计算机、智能电话、电视、智能家用电器、智能车辆、自助服务终端和可穿戴装置为例)。在下文中,将参照附图详细描述示例实施例。在附图中,相同的参考标号用于相同的元件。
图1A示出使用人工神经网络(ANN)执行深度学习运算的方法的示例。
包括深度学习的人工智能(AI)算法可将数据10输入到ANN,并且可通过运算(例如,卷积)来学习输出数据30。ANN可以是通过对生物大脑进行模拟而获得的计算架构。在ANN中,与大脑的神经元对应的节点可彼此连接,并且可共同操作以处理输入数据。各种类型的神经网络可包括例如卷积神经网络(CNN)、循环神经网络(RNN)、深度信念网络(DBN)或受限玻尔兹曼机(RBM),但不限于此。在前馈神经网络中,神经元可具有到其他神经元的链路。链路可沿单个方向(例如,前向方向)延伸通过神经网络。
图1A示出输入数据10被输入到ANN并且输出数据30通过ANN被输出的结构。ANN可包括至少一个层,并且可以是例如CNN 20。ANN可以是例如包括至少两个层的深度神经网络(DNN)。
CNN 20可用于从输入数据10提取“特征”(例如,边界或线条颜色)。CNN 20可包括多个层。每个层可接收数据,可处理输入到相应层的数据,并且可生成将要从相应层输出的数据。从层输出的数据可以是通过执行输入到CNN 20的图像或特征图与至少一个滤波器的权重的卷积运算而生成的特征图。CNN 20的初始层可进行操作以从输入(诸如,图像数据)提取相对低级别的特征(例如,边缘或梯度)。CNN 20的后续层可逐渐提取更复杂的特征(例如,图像中的眼睛或鼻子)。
图1B示出深度学习运算中的滤波器和作为输入提供的输入特征图的数据的示例。
参照图1B,输入特征图100可以是输入到ANN的图像的一组数值数据或像素值,但不限于此。在图1B中,可通过将要使用ANN训练的目标图像的像素值来定义输入特征图100。例如,输入特征图100可具有256×256个像素和具有值为K的深度。然而,上述值仅是示例,并且输入特征图100的像素的大小不限于此。
可形成N个滤波器(例如,滤波器110-1至110-N)。滤波器110-1至110-N中的每个可包括n×n个权重。例如,滤波器110-1至110-N中的每个可具有3×3像素和深度值K。然而,滤波器110-1至110-N中的每个的上述大小仅是示例,并且不限于此。
图1C示出基于深度学习执行卷积运算的示例。
参照图1C,在ANN中执行卷积运算的处理可以是在每个层中通过输入特征图100与滤波器110之间的乘法运算和加法运算生成输出值并使用输出值的累加和来生成输出特征图120的处理。
卷积运算处理是通过在当前层中从左上到右下将预定大小(即,n×n)的滤波器110应用于输入特征图100来执行乘法运算和加法运算的处理。在下文中,将描述使用3×3滤波器110执行卷积运算的处理。
例如,首先,执行将输入特征图100的左上侧的第一区域101中的3×3个数据分别与滤波器110的权重W11至W33相乘的运算。这里,第一区域101中的3×3个数据是包括第一方向上的三个数据和第二方向上的三个数据的总共九个数据X11至X33。此后,使用乘法运算的输出值(详细地,X11×W11、X12×W12、X13×W13、X21×W21、X22×W22、X23×W23、X31×W31、X32×W32和X33×W33)的累加和来生成输出特征图120中的第一-第一输出数据Y11
此后,通过将数据单元从第一区域101移位到输入特征图100的左上侧的第二区域102来执行运算。在这个示例中,在用于卷积运算处理的输入特征图中移位的数据的数量被称为步长。可基于步长来确定将要生成的输出特征图120的大小。例如,当步长为“1”时,执行将包括在第二区域102中的总共九个输入数据X12至X34与滤波器110的权重W11至W33相乘的运算,并且使用乘法运算的输出值(详细地,X12×W11、X13×W12、X14×W13、X22×W21、X23×W22、X24×W23、X32×W31、X33×W32和X34×W33)的累加和来生成输出特征图120中的第一-第二输出数据Y12。输出特征图120中的其他输出数据(例如,Y13至Y33)也可类似地被生成。
图1D示出使用脉动阵列执行卷积运算的示例。
参照图1D,可根据具有预定延迟的时钟将可被映射到脉动阵列的输入特征图130中的数据顺序输入到处理元件(PE)141至149。PE可以是乘法运算器和加法运算器。
在第一时钟中,脉动阵列的第一行①中的第一-第一数据X11可被输入到第一PE141。尽管未在图1D中示出,但是第一-第一数据X11可在第一时钟与权重W11相乘。此后,在第二时钟中,第一-第一数据X11可被输入到第二PE 142,第二-第一数据X21可被输入到第一PE141,并且第一-第二数据X12可被输入到第四PE 144。类似地,在第三时钟中,第一-第一数据X11可被输入到第三PE 143,第二-第一数据X21可被输入到第二PE 142,并且第一-第二数据X12可被输入到第五PE 145。此外,在第三时钟中,第三-第一数据X31可被输入到第一PE141,第二-第二数据X22可被输入到第四PE 144,并且第一-第三数据X13可被输入到第七PE147。
如上所述,输入特征图130可根据时钟被顺序地输入到PE 141至149,并且可与根据时钟输入的权重执行乘法运算和加法运算。可使用通过顺序输入的权重与输入特征图130中的数据之间的乘法运算和加法运算而输出的值的累加和来生成输出特征图。
图2示出编码方法的示例。
图2的操作可以以示出的顺序和方式执行。然而,在不脱离示出的示例的精神和范围的情况下,可改变一些操作的顺序,或者可省略一些操作。图2中示出的操作可并行执行或同时执行。在图2中,一个或多个块及其组合可由执行预定功能的基于专用硬件的计算机或者计算机指令和专用硬件的组合来实现。
根据应用的类型,使用神经网络的运算可能需要不同的运算格式。例如,被配置为确定图像中的对象类型的应用可能需要比8位低的位精度,与语音相关的应用可能需要比8位高的位精度。
作为深度学习中的基本运算子(operator)的乘积累加(MAC)运算的输入操作数也可根据情况被配置为各种精度。例如,梯度(训练神经网络所需的输入操作数之一)可能需要约16位半浮点的精度,并且其他输入操作数(输入特征图和权重)即使具有低精度定点的精度也可被处理。
处理具有这样的各种要求的数据的基本方法是不必要地使用许多硬件资源来产生和使用硬件组件,以针对每种输入类型执行MAC运算。
为了使用单个硬件来执行针对各种输入类型的MAC运算,需要基于具有最高复杂度的数据类型来设计硬件的运算单元。然而,在这个示例中,当执行低精度运算时,通过基于具有最高复杂度的高精度数据生成的运算子来执行运算是低效的。更具体地,硬件实现面积会不必要地增大,并且硬件功耗也会不必要地增大。
根据在此提供的编码方法和运算方法,将训练处理中的梯度运算保持在高精度同时有效地驱动低精度推断处理是可行的。
在操作210中,编码装置接收由16位浮点表示的输入数据。
在操作220中,编码装置调整输入数据的指数的位数和尾数的位数,以将输入数据拆分成多个4位(4-bit)单元。编码装置可以以{符号,指数,尾数}={1,4,11}的形式调整配置位的数量,以将现有的16位半浮点的位分布{符号,指数,尾数}={1,5,10}拆分成多个4位单元。其结果是,分配给指数的位减少1,并且尾数的位增加1达到11位。
在操作230中,编码装置对位数被调整的输入数据进行编码,使得指数是“4”的倍数。编码装置可确保比现有的16位半浮点更宽的指数范围,并且同时以“4”为步长(step)对指数进行编码以容易地用于位块(bit-brick)操作。在下文中,将参照图3详细描述编码方法。
图3示出编码方法的示例。
在描述编码方法之前,将描述通过浮点表示数据的方法。例如,十进制数263.3可以是二进制数100000111.0100110……,其可表示为1.0000011101×28。此外,使用浮点表示该数,符号的位(1位)可以是0(正数),指数的位(5位)可以是11000(8+16(偏置)),尾数的位可以是0000011101(10位),最终可被表示为0110000000011101。
参照图3,编码装置可以以{符号,指数,尾数}={1,4,11}的形式调整配置位的数量。例如,通过将上述示例中的1.0000011101×28调整为0.10000011101×29,1位可被分配给符号,4位可被分配给指数,并且11位可被分配给尾数。
编码装置可对位数被调整的输入数据进行编码,使得指数是“4”的倍数。更详细地,编码装置可计算当输入数据的指数与“4”之和除以“4”时获得的商和余数,基于商对指数进行编码,并且基于余数对尾数进行编码。
编码装置可基于商和偏置来对指数进行编码。
如果余数为“0”,则编码装置可确定尾数的第一位值为“1”,如果余数为“1”,则编码装置可确定确定尾数的第一位值为“0”,并且尾数的第二位值为“1”,如果余数为“2”,则编码装置可确定尾数的第一位值为“0”,尾数的第二位值为“0”,并且尾数的第三位值为“1”,如果余数为“3”,则编码装置可确定尾数的第一位值为“0”,尾数的第二位值为“0”,尾数的第三位值为“0”,并且尾数的第四位值为“1”。这可如表1中所示。
[表1]
表示 编码版本 指数(b:偏置) 尾数
0.1xxxxxxxxxx×2<sup>4n</sup> 0.1xxxxxxxxxx×2<sup>4n</sup> n+b 1xxxxxxxxxx
0.1xxxxxxxxxx×2<sup>4n-1</sup> 0.01xxxxxxxxx×2<sup>4n</sup> n+b 01xxxxxxxxx
0.1xxxxxxxxxx×2<sup>4n-2</sup> 0.001xxxxxxxx×2<sup>4n</sup> n+b 001xxxxxxxx
0.1xxxxxxxxxx×2<sup>4n-3</sup> 0.0001xxxxxxx×2<sup>4n</sup> n+b 0001xxxxxxx
0.1xxxxxxxxxx×2<sup>4n-4</sup> 0.1xxxxxxxxxx×2<sup>4(n-1)</sup> n-1+b 1xxxxxxxxxx
例如,编码装置可将0.10000011101×29转换为0.10000011101×24×3-3,并且再次转换为0.00010000011101×24×3。基于此,编码装置可将指数的位(4位)编码为1011(3+8(偏置)),将符号的位(1位)编码为“0”(正数),并且将尾数的位编码为00010000011。
编码装置可通过将编码数据拆分成一个指数块(exponent brick)数据和三个尾数块(mantissa brick)数据来表示编码数据。三个尾数块数据可被拆分成顶部块数据、中间块数据和底部块数据,并且顶部块可包括一个符号位和三个尾数位。在以上示例中,指数块数据可以是1011,顶部块数据可以是0000,中间块数据可以是1000,并且底部块数据可以是0011。
可容易地在硬件中拆分出4位的指数块数据和4位的顶部/中间/底部块数据。此外,由于在浮点加法运算中经常考虑的指数差(exponent difference,又称为阶码差)始终是“4”的倍数,因此使用定点加法器融合被乘数而无需特定移位的结构是可行的。
图4示出运算方法的示例。
参照图4,运算装置可接收由4位定点表示的第一操作数数据410和16位宽的第二操作数数据420。运算装置可包括参照图2和图3描述的编码装置。第一操作数数据可以是权重和/或输入特征图,并且第二操作数数据可以是梯度。
在操作430中,运算装置可确定第二操作数数据的数据类型。
如果第二操作数数据420是定点类型,则在操作440-1中,运算装置可将第二操作数数据420拆分成四个4位块以用于并行数据运算。
如果第二操作数数据420是浮点类型,则在操作440-2中,运算装置可根据参照图2和图3描述的方法对第二操作数数据420进行编码。例如,运算装置可调整第二操作数数据的指数的位数和尾数的位数,以将第二操作数数据420拆分成多个4位单元,并对位数被调整的第二操作数数据进行编码,使得指数是“4”的倍数。
在操作450中,运算装置可将编码的第二操作数数据拆分成四个4位块。详细地,运算装置可将编码的第二操作数数据拆分成一个指数块数据和三个尾数块数据。
在操作460中,运算装置可执行被拆分成四个块的第二操作数数据与第一操作数数据410之间的MAC运算。运算装置可执行第一操作数数据410与三个尾数块数据中的每个尾数块数据之间的乘法运算。将参照图5详细描述执行被拆分成四个块的第二操作数数据与第一操作数数据410之间的MAC运算的示例。
在操作470中,运算装置可确定第二操作数数据的数据类型。
如果第二操作数数据420是定点类型,则在操作480-1中,运算装置可累加四个拆分的输出。
如果第二操作数数据420是浮点类型,则在操作480-2中,运算装置可将指数块数据与存储在指数寄存器中的累加指数数据进行比较,并且基于比较的结果,将执行乘法运算的结果累加到存储在三个尾数寄存器中的每个中的累加尾数数据。详细地,运算装置可基于比较的结果,通过将执行乘法运算的结果与存储在三个尾数寄存器中的每个中的累加尾数数据的累加位置对齐来执行累加。将参照图6详细描述基于比较的结果来将执行乘法运算的结果累加到存储在三个尾数寄存器中的每个中的累加尾数数据的示例。
图5示出执行由4位定点表示的第一操作数数据与由16位半浮点表示的第二操作数数据之间的乘积累加(MAC)运算的示例。
参照图5,运算装置可包括乘法器(例如,4×4乘法器)、寄存器(包括指数寄存器和三个尾数寄存器)以及控制器。三个尾数寄存器可包括:存储顶部块数据的操作结果的顶部块寄存器、存储中间块数据的操作结果的中间块寄存器、以及存储底部块数据的操作结果的底部块寄存器。此外,控制器可控制乘法器和寄存器的操作,并且可执行参照图2和图3描述的编码方法以及其他操作。
如果第二操作数数据是16位半浮点类型,则运算装置(例如,控制器)可将第二操作数数据拆分成三个4位块数据和一个指数块数据,并通过4×4乘法器分别执行三个4位块数据与第一操作数数据的乘法。由此获得的三个乘法结果可根据指数差被对齐,指数差(例如,在图5中,指数差由4·k表示)是指数块数据与存储在指数寄存器中的累加指数数据之间的差,并且执行乘法运算的结果可分别被累加到存储在尾数寄存器中的累加尾数数据并被存储。
图6示出根据指数差对齐数据的示例。
参照图6,被提供以累加作为乘法器的输出的8位(4位×4位)数据的尾数寄存器被配置为12位。控制器可通过根据指数差指定乘法器的输出的位置来累加数据。
例如,如果指数差(即,k)为“0”(如果第二操作数数据的指数等于存储的累加指数数据),则控制器可通过将乘法运算结果与存储在三个尾数寄存器中的每个中的累加指数数据在相同位置对齐来累加数据。
如果指数差(即,k)为“-1”(如果第二操作数数据的指数小于存储的累加指数数据),则控制器可通过将乘法运算结果对齐为从存储在三个尾数寄存器中的每个中的累加指数数据向右移位4位来累加数据。
如果指数差(即,k)为“1”(如果第二操作数数据的指数大于存储的累加指数数据),则控制器可通过将乘法运算结果对齐为从存储在三个尾数寄存器中的每个中的累加指数数据向左移位4位来累加数据。
图7示出运算装置的示例。
参照图7,运算装置700包括处理器710。运算装置700还可包括存储器730和通信接口750。处理器710、存储器730和通信接口750可通过通信总线705彼此通信。处理器710可接收由4位定点表示的第一操作数数据,接收16位宽的第二操作数数据,确定第二操作数数据的数据类型,如果第二操作数数据是浮点类型,则对第二操作数数据进行编码,将编码的第二操作数数据拆分成四个4位块,以及执行被拆分成四个块的第二操作数数据与第一操作数数据之间的MAC运算。
存储器730可以是易失性存储器或非易失性存储器。
在一些示例中,处理器710可调整第二操作数数据的指数的位数和尾数的位数,以将第二操作数数据拆分成多个4位单元,并且对位数被调整的第二操作数数据进行编码,使得指数是“4”的倍数。
处理器710可将编码的第二操作数数据拆分成一个指数块数据和三个尾数块数据。
处理器710可执行第一操作数数据与三个尾数块数据中的每个尾数块数据之间的乘法运算,将指数块数据与存储在指数寄存器中的累加指数数据进行比较,并且基于比较的结果将执行乘法运算的结果累加到存储在三个尾数寄存器中的每个尾数寄存器中的累加尾数数据。
处理器710可基于比较的结果将执行乘法运算的结果与存储在三个尾数寄存器中的每个中的累加尾数数据的累加位置对齐。
此外,处理器710可执行上面参照图1A至图6描述的至少一种方法或与至少一种方法对应的算法。例如,处理器710可包括图5中的控制器、乘法器和寄存器。处理器710可执行程序并控制运算装置700。将由处理器710执行的程序代码可存储在存储器730中。运算装置700可通过输入/输出装置(未示出)连接到外部装置(例如,个人计算机或网络)以与其交换数据。运算装置700可安装在各种计算装置和/或系统(诸如,智能电话、平板计算机、膝上型计算机、台式计算机、电视、可穿戴装置、安全系统、智能家庭系统等)上。
在此描述的单元可使用硬件组件、软件组件及/或它们的组合来实现。处理装置可使用一个或多个通用计算机或专用计算机(诸如,以处理器、控制器和算术逻辑单元(ALU)、DSP、微型计算机、FPGA、可编程逻辑单元(PLU)、微处理器或能够以限定的方式响应并执行指令的任何其他装置为例)来实现。处理装置可运行操作系统(OS)和在OS上运行的一个或多个软件应用。处理装置还可响应于软件的执行来访问、存储、操纵、处理和创建数据。为了简明的目的,处理装置的描述用作单数,然而,本领域技术人员将理解,处理装置可包括多个处理元件和多种类型的处理元件。例如,处理装置可包括多个处理器、或处理器和控制器。此外,不同的处理配置(诸如,并行处理器)是可行的。
软件可包括计算机程序、代码段、指令或它们的一些组合,以独立地或共同地指示或配置处理装置根据期望进行操作。软件和数据可永久地或临时地实现在任何类型的机器、组件、物理设备或虚拟设备、计算机存储介质或装置中,或者实现在能够向处理装置提供指令或数据或由处理装置解释的传播信号波中。软件还可分布在联网的计算机系统上,使得软件以分布式方式被存储和执行。软件和数据可由一个或多个非暂时性计算机可读记录介质存储。
根据上述示例实施例的方法可被记录在非暂时性计算机可读介质中,非暂时性计算机可读介质包括用于实现上述示例实施例的各种操作的程序指令。介质还可单独地或与程序指令组合地包括数据文件、数据结构等。记录在介质上的程序指令可以是为了示例实施例的目的而专门设计和创建的程序指令,或者它们可以是计算机软件领域的技术人员公知和可用的类型。非暂时性计算机可读介质的示例包括磁介质(诸如,硬盘、软盘和磁带);光学介质(诸如,CD-ROM盘、DVD和/或蓝光盘);磁光介质(诸如,光盘);以及专门被配置为存储并执行程序指令的硬件装置(诸如,只读存储器(ROM)、随机存取存储器(RAM)、闪存(例如,USB闪存驱动器、存储卡、记忆棒等)等)。程序指令的示例包括诸如由编译器产生的机器代码和包含可由计算机使用解释器执行的高级代码的文件两者。
上面已经描述了多个示例实施例。然而,应当理解,可对这些示例实施例进行各种修改。例如,如果描述的技术以不同的顺序被执行和/或如果描述的系统、架构、装置或电路中的组件以不同的方式被组合和/或由其他组件或其等同物替换或补充,则可实现合适的结果。
因此,其他实施方式在所附权利要求的范围内。

Claims (20)

1.一种用于执行乘积累加运算的运算装置,包括:
控制器,被配置为:接收由4位定点表示的第一操作数数据,接收16位宽的第二操作数数据,确定第二操作数数据的数据类型,如果第二操作数数据是浮点类型,则对第二操作数数据进行编码,将编码的第二操作数数据拆分成四个4位块;
乘法器,被配置为:执行被拆分成四个4位块的第二操作数数据与第一操作数数据之间的乘法运算;以及
寄存器,被配置为:对从乘法器输出的乘法运算的结果进行累加和存储。
2.根据权利要求1所述的运算装置,其中,控制器被配置为:调整第二操作数数据的指数的位数和尾数的位数,以将第二操作数数据拆分成多个4位单元,并且对位数被调整的第二操作数数据进行编码,使得指数是“4”的倍数。
3.根据权利要求1所述的运算装置,其中,控制器被配置为:将编码的第二操作数数据拆分成一个指数块数据和三个尾数块数据。
4.根据权利要求3所述的运算装置,其中,控制器被配置为:通过乘法器执行第一操作数数据与所述三个尾数块数据中的每个尾数块数据之间的乘法运算,将指数块数据与存储在寄存器之中的指数寄存器中的累加指数数据进行比较,并且基于比较的结果,将执行乘法运算的结果累加到存储在寄存器之中的三个尾数寄存器中的每个中的累加尾数数据。
5.根据权利要求4所述的运算装置,其中,控制器被配置为:基于比较的结果,将执行乘法运算的结果与存储在所述三个尾数寄存器中的每个中的累加尾数数据的累加位置对齐。
6.根据权利要求1至5中的任一项所述的运算装置,其中,控制器还被配置为:如果第二操作数数据是定点类型,则将第二操作数数据拆分成四个4位块以用于并行数据运算。
7.根据权利要求2所述的运算装置,其中,调整位数的处理包括:将4位分配给指数,并且将11位分配给尾数。
8.根据权利要求2所述的运算装置,其中,编码的处理包括:计算当第二操作数数据的指数与“4”之和除以“4”时获得的商和余数,基于所述商对指数进行编码,并且基于余数对尾数进行编码。
9.根据权利要求8所述的运算装置,其中,对指数进行编码的处理包括:基于所述商和偏置来对指数进行编码。
10.根据权利要求8所述的运算装置,其中,对尾数进行编码的处理包括:如果余数为“0”,则确定尾数的第一位值为“1”。
11.根据权利要求8所述的运算装置,其中,对尾数进行编码的处理包括:如果余数为“1”,则确定尾数的第一位值为“0”,并且尾数的第二位值为“1”。
12.根据权利要求8所述的运算装置,其中,对尾数进行编码的处理包括:如果余数为“2”,则确定尾数的第一位值为“0”,尾数的第二位值为“0”,并且尾数的第三位值为“1”。
13.根据权利要求8所述的运算装置,其中,对尾数进行编码的处理包括:如果余数为“3”,则确定尾数的第一位值为“0”,尾数的第二位值为“0”,尾数的第三位值为“0”,并且尾数的第四位值为“1”。
14.一种用于执行乘积累加运算的运算方法,包括:
通过控制器接收由4位定点表示的第一操作数数据,接收16位宽的第二操作数数据,确定第二操作数数据的数据类型,其中,如果第二操作数数据是浮点类型,则通过控制器对第二操作数数据进行编码,将编码的第二操作数数据拆分成四个4位块;
通过乘法器执行被拆分成四个4位块的第二操作数数据与第一操作数数据之间的乘法运算;
通过寄存器对从乘法器输出的乘法运算的结果进行累加和存储。
15.根据权利要求14所述的运算方法,其中,编码的处理包括:
通过控制器调整第二操作数数据的指数的位数和尾数的位数,以将第二操作数数据拆分成多个4位单元;以及
通过控制器对位数被调整的第二操作数数据进行编码,使得指数是“4”的倍数。
16.根据权利要求14所述的运算方法,其中,拆分的处理包括:通过控制器将编码的第二操作数数据拆分成一个指数块数据和三个尾数块数据。
17.根据权利要求16所述的运算方法,其中,执行乘积累加运算的处理包括:
通过乘法器执行第一操作数数据与所述三个尾数块数据中的每个尾数块数据之间的乘法运算;
通过控制器将指数块数据与存储在寄存器之中的指数寄存器中的累加指数数据进行比较;以及
基于比较的结果,通过控制器将执行乘法运算的结果累加到存储在寄存器之中的三个尾数寄存器中的每个中的累加尾数数据。
18.根据权利要求17所述的运算方法,其中,累加的处理包括:基于比较的结果,通过控制器将执行乘法运算的结果与存储在所述三个尾数寄存器中的每个中的累加尾数数据的累加位置对齐。
19.根据权利要求14至18中的任一项所述的运算方法,还包括:
如果第二操作数数据是定点类型,则通过控制器将第二操作数数据拆分成四个4位块以用于并行数据运算。
20.一种存储指令的非暂时性计算机可读存储介质,所述指令在由处理器执行时使处理器执行根据权利要求14至19中的任一项所述的运算方法。
CN202111141417.6A 2021-03-04 2021-09-28 用于执行乘积累加运算的运算装置和运算方法 Pending CN115016762A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR10-2021-0028929 2021-03-04
KR20210028929 2021-03-04
KR10-2021-0034835 2021-03-17
KR1020210034835A KR20220125114A (ko) 2021-03-04 2021-03-17 인코딩 방법 및 장치

Publications (1)

Publication Number Publication Date
CN115016762A true CN115016762A (zh) 2022-09-06

Family

ID=83064508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111141417.6A Pending CN115016762A (zh) 2021-03-04 2021-09-28 用于执行乘积累加运算的运算装置和运算方法

Country Status (2)

Country Link
US (1) US20220283778A1 (zh)
CN (1) CN115016762A (zh)

Also Published As

Publication number Publication date
US20220283778A1 (en) 2022-09-08

Similar Documents

Publication Publication Date Title
CN111758106B (zh) 用于大规模并行神经推理计算元件的方法和系统
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
JP2018055677A (ja) 外積累算演算のためのプロセッサおよび方法
JP7325158B2 (ja) ニューラル・ネットワーク・コアにおける動的精度のためのデータ表現
WO2019168084A1 (ja) 推論装置、畳み込み演算実行方法及びプログラム
CN107526709A (zh) 使用低精度格式的张量处理
CN112183713A (zh) 神经网络装置和操作神经网络的方法
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
US10579334B2 (en) Block floating point computations using shared exponents
US10657442B2 (en) Deep learning accelerator architecture with chunking GEMM
US11983616B2 (en) Methods and apparatus for constructing digital circuits for performing matrix operations
WO2019088072A1 (ja) 情報処理装置、情報処理方法及びプログラム
CN111045728B (zh) 一种计算装置及相关产品
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
CN113126953A (zh) 针对浮点处理的方法和装置
JP2022552180A (ja) 大規模並列ニューラル推論エンジン用のマルチモード低精度内積計算回路
Véstias et al. A configurable architecture for running hybrid convolutional neural networks in low-density FPGAs
JP4477959B2 (ja) ブロードキャスト型並列処理のための演算処理装置
US11995533B1 (en) Executing replicated neural network layers on inference circuit
CN112130805A (zh) 包括浮点加法器的芯片、设备及浮点运算的控制方法
CN115016762A (zh) 用于执行乘积累加运算的运算装置和运算方法
EP3742294A1 (en) Arithmetic processing apparatus, control method of arithmetic processing apparatus, and program for controlling a computer provided with n nodes capable of communicating with each other
CN114595811A (zh) 用于执行深度学习操作的方法和设备
US8924447B2 (en) Double precision approximation of a single precision operation

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