CN108920748B - 一种具有高灵活性与精度的非线性运算电路结构 - Google Patents
一种具有高灵活性与精度的非线性运算电路结构 Download PDFInfo
- Publication number
- CN108920748B CN108920748B CN201810496471.4A CN201810496471A CN108920748B CN 108920748 B CN108920748 B CN 108920748B CN 201810496471 A CN201810496471 A CN 201810496471A CN 108920748 B CN108920748 B CN 108920748B
- Authority
- CN
- China
- Prior art keywords
- lookup table
- grained
- fine
- coarse
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Geometry (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
本发明属于集成电路设计技术领域,具体为一种具有高灵活性与精度的非线性运算电路结构。本发明电路结构包括五部分:粗粒度的查找表X、细粒度的查找表Y、两个用于提升查找表精度的插值器、输出选择器以及一些基本运算单元。该电路使用一个粗粒度的查找表来保证该电路支持很大的输入范围,并使用一个细粒度的查找表来覆盖整个输入范围的某一部分,从而保证能在非线性函数坡度显著变化的区域取得令人满意的精度。本发明可提高硬件单元使用率,从而提高电路的工作效率;同时,可编程的查找表使得该电路具有很高的灵活性,可以实现神经网络中几乎所有的非线性激活函数,插值器的使用进一步提升了查找表的精度以及动态范围。
Description
技术领域
本发明属于集成电路设计技术领域,具体涉及一种具有高灵活性与精度的非线性运算电路结构。
背景技术
上世纪60年代,Hubel等人通过对猫视觉皮层细胞的研究,提出了感受野这个概念,到80年代,Fukushima在感受野概念的基础之上提出了神经认知机的概念,可以看作是卷积神经网络的第一个实现网络,神经认知机将一个视觉模式分解成许多子模式(特征),然后进入分层递阶式相连的特征平面进行处理,它试图将视觉系统模型化,使其能够在即使物体有位移或轻微变形的时候,也能完成识别。
卷积神经网络是多层感知机的变种。由生物学家休博尔和维瑟尔在早期关于猫视觉皮层的研究发展而来。视觉皮层的细胞存在一个复杂的构造。这些细胞对视觉输入空间的子区域非常敏感,我们称之为感受野,以这种方式平铺覆盖到整个视野区域。这些细胞可以分为两种基本类型,简单细胞和复杂细胞。简单细胞最大程度响应来自感受野范围内的边缘刺激模式。复杂细胞有更大的接受域,它对来自确切位置的刺激具有局部不变性。卷积神经网络结构包括:卷积层,池化层,全连接层。每一层有多个特征图,每个特征图通过一种卷积滤波器提取输入的一种特征,每个特征图有多个神经元。
卷积神经网络由于其巨大的计算量,因此如何在移动终端上进行本地运算也成了一项挑战,神经网络加速芯片的设计成了热点。
本发明提出了一种具有高灵活性与精度的非线性运算电路结构。该电路使用一个粗粒度的查找表来保证该电路支持很大的输入范围,并使用一个细粒度的查找表来覆盖整个输入范围的某一部分,从而保证能在非线性函数坡度显著变化的区域取得令人满意的精度。可编程的查找表使得该电路具有很高的灵活性,可以实现神经网络中几乎所有的非线性激活函数。插值器的存在进一步提升了查找表的精度以及动态范围。
发明内容
本发明的目的在于针对神经网络的激活函数的运算加速,提供提出了一种具有高灵活性与精度的非线性运算电路结构,以提高硬件复用效率,减少芯片面积。
本发明提供的针对神经网络的激活函数进行加速的电路结构,通过使用一个粗粒度的查找表来保证该电路支持很大的输入范围,并使用一个细粒度的查找表来覆盖整个输入范围的某一部分,从而保证能在非线性函数坡度显著变化的区域取得令人满意的精度。
本发明提供的非线性运算电路结构,包括:粗粒度的查找表X、细粒度的查找表Y、两个用于提升查找表精度的插值器、输出选择器,以及一些基本运算单元;粗粒度的查找表X和一个插值器,细粒度的查找表Y和另一两个插值器,分别构成上下对称的两个数据通道,其中:
所述粗粒度查找表X拥有M个入口,它可以覆盖非线性激活函数的大部分输入范围。因为逻辑资源有限,粗粒度查找表X无法在很大的动态范围内获得较高的精度;
所述细粒度查找表Y拥有N个入口,它仅覆盖非线性激活函数整个输入范围的一小部分,通常用以覆盖非线性函数坡度显著变化的区域。神经网络中常用的非线性激活函数如tanh,sigmoid等,均有一个坡度显著变化的区域,如图2所示。细粒度查找表Y保证了电路能在非线性函数坡度显著变化的区域取得令人满意的精度;
所述插值器,采用线性插值的逻辑。线性插值一方面能提升查找表的精度,减少由于“阶梯效应”而引入的误差。另一方面,当输入数超出查找表的范围时,对范围外的数据进行线性插值依旧能保证一定的精度。在资源方面,插值器由2个加法器(或一个加法器与一个减法器)与2个乘法器构成,实现了线性插值的功能。插值器的电路结构如图4所示。非常节省逻辑资源;
所述基本运算单元,根据实际输入数据,计算出查找表的索引以及插值器所需的插值系数α;
所述输出选择器,用于选择使用粗粒度的查找表还是细粒度的查找表:当输入数据位于细粒度查找表所覆盖的范围时,选择细粒度查找表插值后的结果作为电路的输出;反之,使用粗粒度查找表插值后的结果作为电路的输出。
本发明中,所有模块均采用流水线结构,使每个时钟周期所有的硬件单元都处于工作状态,提高了运算效率。
本发明的有益效果在于:使用一个粗粒度的查找表来保证该电路支持很大的输入范围,并使用一个细粒度的查找表来覆盖整个输入范围的某一部分,从而保证能在非线性函数坡度显著变化的区域取得令人满意的精度。可编程的查找表使得该电路具有很高的灵活性,可以实现神经网络中几乎所有的非线性激活函数。插值器的存在进一步提升了查找表的精度以及动态范围。
附图说明
图1电路基本框图。
图2为sigmoid函数中粗粒度查找表与细粒度查找表分别负责的范围。
图3为插值器所使用的参数L1,L0以及α的含义的示意图。
图4为插值器的电路结构图。
具体实施方式
本发明中,具有高灵活性与精度的非线性运算电路的基本框图如图1所示。该设计的工作过程如下:输入数据x会进入两个对称的数据通路,分别为粗粒度查找表X对应的上通路与细粒度查找表Y对应的下通路。
粗粒度查找表的覆盖范围,即覆盖非线性激活函数的大部分输入范围,记为min_X至max_X(对于sigmoid激活函数,其覆盖范围的定义参见图2),共有M个入口,因此每个入口输入数据的步进step_X=(max_X-min_X)/(M-1)。输入数据x0先经过一个减法器与一个乘法器,乘法器的输出等于(x0-min_X)/step_X,它的整数部分就是查找表X的入口索引,记作index(x0)=floor((x0-min_X)/step_X),其中floor表示向下取整。乘法器输出的小数部分对应于插值器所需的插值系数α。查找表有两个输出L0与L1,其中L1=LUT_X[index(x0)],L0= LUT_X[index(x0)+1]。如图3,L1代表查找表中小于x0且最接近x0的入口索引对应的数值,L0代表查找表中大于x0且最接近x0的入口索引对应的数值,α表示了x0与相邻的两个查找表入口相对位置关系。根据线性插值公式,f(x0)处的值为α*L0+(1-α)*L1。
插值器由2个加法器(或一个加法器与一个减法器)与2个乘法器构成,实现了线性插值的功能。插值器的电路结构如图4所示。
细粒度查找表的数据通路与粗粒度查找表数据通路的结构类似,它的覆盖范围即覆盖非线性函数坡度显著变化的区域,记为min_Y至max_Y(对于sigmoid激活函数,其覆盖范围的定义见图2)。常而言,细粒度查找表的覆盖范围小于粗粒度查找表的覆盖范围。细粒度查找表有N个入口,每个入口输入数据的步进step_Y=(max_Y-min_Y)/(N-1)。输入数据x0先经过一个减法器与一个乘法器,乘法器的输出等于(x0-min_Y)/step_Y,它的整数部分就是查找表Y的入口索引,记作index(x0)=floor((x0-min_Y)/step_Y),其中floor表示向下取整;乘法器输出的小数部分对应于插值器所需的插值系数α;查找表有两个输出L0与L1,其中L1=LUT_Y[index(x0)],L0= LUT_Y[index(x0)+1];L1代表查找表中小于x0且最接近x0的入口索引对应的数值,L0代表查找表中大于x0且最接近x0的入口索引对应的数值,α表示x0与相邻的两个查找表入口相对位置关系;根据线性插值公式,f(x0)处的值为α*L0+(1-α)*L1。粒度查找表的插值器还会输出一个1比特的状态信息,用以表示输入数据是否位于细粒度查找表所覆盖的范围内。
输出选择器根据插值器输的状态信息,选择使用粗粒度的查找表还是细粒度的查找表:当输入数据位于细粒度查找表所覆盖的范围时,选择细粒度查找表插值后的结果作为电路的输出;反之,使用粗粒度查找表插值后的结果作为电路的输出。
Claims (2)
1.一种具有高灵活性与精度的非线性运算电路结构,针对神经网络的激活函数的运算加速,其特征在于,包括:粗粒度的查找表X、细粒度的查找表Y、两个用于提升查找表精度的插值器、输出选择器,以及基本运算单元;粗粒度的查找表X和一个插值器,细粒度的查找表Y和另一个插值器,分别构成上下对称的两个数据通道,其中:
所述粗粒度的查找表X拥有M个入口,覆盖非线性激活函数的大部分输入范围;
所述细粒度查找表Y拥有N个入口,它仅覆盖非线性激活函数整个输入范围的一小部分--覆盖非线性函数坡度显著变化的区域;
所述插值器,采用线性插值的逻辑;插值器包括:两个加法器或一个加法器和一个减法器,两个乘法器;
所述基本运算单元,根据实际输入数据,计算出查找表的索引以及插值器所需的插值系数α;
所述输出选择器,用于选择使用粗粒度的查找表还是细粒度的查找表:当输入数据位于细粒度查找表所覆盖的范围时,选择细粒度查找表插值后的结果作为电路的输出;反之,使用粗粒度查找表插值后的结果作为电路的输出。
2.根据权利要求1所述的非线性运算电路结构,其特征在于,其运算流程为:输入数据x进入两个对称的数据通路:粗粒度查找表X对应的上通路与细粒度查找表Y对应的下通路;
粗粒度查找表的覆盖范围即覆盖非线性激活函数的大部分输入范围,记为min_X至max_X,一共有M个入口,每个入口输入数据的步进step_X=(max_X-min_X)/(M-1);输入数据x0先经过一个减法器与一个乘法器,乘法器的输出等于(x0-min_X)/step_X,它的整数部分就是查找表X的入口索引,记作index(x0)=floor((x0-min_X)/step_X),其中,floor表示向下取整;乘法器输出的小数部分对应于插值器所需的插值系数α;查找表有两个输出L0与L1,其中L1=LUT_X[index(x0)],L0= LUT_X[index(x0)+1];L1代表查找表中小于x0且最接近x0的入口索引对应的数值,L0代表查找表中大于x0且最接近x0的入口索引对应的数值,α表示x0与相邻的两个查找表入口相对位置关系;根据线性插值公式,f(x0)处的值为α*L0+(1-α)*L1;
细粒度查找表的数据通路与粗粒度查找表数据通路的结构类似,它的覆盖范围即覆盖非线性函数坡度显著变化的区域,记为min_Y至max_Y;细粒度查找表的覆盖范围小于粗粒度查找表的覆盖范围;细粒度查找表有N个入口,每个入口输入数据的步进step_Y=(max_Y-min_Y)/(N-1);输入数据x0先经过一个减法器与一个乘法器,乘法器的输出等于(x0-min_Y)/step_Y,它的整数部分就是查找表Y的入口索引,记作index(x0)=floor((x0-min_Y)/step_Y),其中,floor表示向下取整;乘法器输出的小数部分对应于插值器所需的插值系数α;查找表有两个输出L0与L1,其中L1=LUT_Y[index(x0)],L0= LUT_Y[index(x0)+1];L1代表查找表中小于x0且最接近x0的入口索引对应的数值,L0代表查找表中大于x0且最接近x0的入口索引对应的数值,α表示x0与相邻的两个查找表入口相对位置关系;根据线性插值公式,f(x0)处的值为α*L0+(1-α)*L1;细粒度查找表的插值器还输出一个1比特的状态信息,用以表示输入数据是否位于细粒度查找表所覆盖的范围内。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810496471.4A CN108920748B (zh) | 2018-05-22 | 2018-05-22 | 一种具有高灵活性与精度的非线性运算电路结构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810496471.4A CN108920748B (zh) | 2018-05-22 | 2018-05-22 | 一种具有高灵活性与精度的非线性运算电路结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108920748A CN108920748A (zh) | 2018-11-30 |
CN108920748B true CN108920748B (zh) | 2023-01-06 |
Family
ID=64402878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810496471.4A Active CN108920748B (zh) | 2018-05-22 | 2018-05-22 | 一种具有高灵活性与精度的非线性运算电路结构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108920748B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111669132B (zh) * | 2020-06-12 | 2023-11-07 | 西安烽火电子科技有限责任公司 | 一种提高短波数字预失真处理索引精度的方法 |
CN116185126A (zh) * | 2022-09-08 | 2023-05-30 | 重庆位图信息技术有限公司 | 一种基于查找表的复杂函数输出方法及其装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104978447A (zh) * | 2014-04-14 | 2015-10-14 | 复旦大学 | 晶体管精确近似表格查找模型的建模和估值方法 |
CN106127301A (zh) * | 2016-01-16 | 2016-11-16 | 上海大学 | 一种随机神经网络硬件实现装置 |
CN106775599A (zh) * | 2017-01-09 | 2017-05-31 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构系统及方法 |
CN107861916A (zh) * | 2017-11-10 | 2018-03-30 | 中国科学院计算技术研究所 | 一种用于针对神经网络执行非线性运算的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107590105B (zh) * | 2017-09-01 | 2019-02-01 | 中国科学院计算技术研究所 | 面向非线性函数的计算装置及方法 |
-
2018
- 2018-05-22 CN CN201810496471.4A patent/CN108920748B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104978447A (zh) * | 2014-04-14 | 2015-10-14 | 复旦大学 | 晶体管精确近似表格查找模型的建模和估值方法 |
CN106127301A (zh) * | 2016-01-16 | 2016-11-16 | 上海大学 | 一种随机神经网络硬件实现装置 |
CN106775599A (zh) * | 2017-01-09 | 2017-05-31 | 南京工业大学 | 递归神经网络的多计算单元粗粒度可重构系统及方法 |
CN107861916A (zh) * | 2017-11-10 | 2018-03-30 | 中国科学院计算技术研究所 | 一种用于针对神经网络执行非线性运算的方法和装置 |
Non-Patent Citations (2)
Title |
---|
Irem Boybat ; Carmelo di Nolfo ; Stefano Ambrogio ; .Improved Deep Neural Network Hardware-Accelerators Based on Non-Volatile-Memory: The Local Gains Technique.《 2017 IEEE International Conference on Rebooting Computing (ICRC)》.2017, * |
基于FPGA的卷积神经网络加速器设计;王思阳;《中国优秀硕士学位论文全文数据库信息科技辑》;20180215;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108920748A (zh) | 2018-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111667051B (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
CN108920748B (zh) | 一种具有高灵活性与精度的非线性运算电路结构 | |
Cheng et al. | High-speed VLSI implementation of 2-D discrete wavelet transform | |
US5255216A (en) | Reduced hardware look up table multiplier | |
Hatai et al. | An efficient constant multiplier architecture based on vertical-horizontal binary common sub-expression elimination algorithm for reconfigurable FIR filter synthesis | |
US20190303103A1 (en) | Common factor mass multiplication circuitry | |
CN110413254A (zh) | 数据处理器、方法、芯片及电子设备 | |
CN109461125A (zh) | 基于fpga的点二维高斯滤波器及图像处理方法 | |
CN110362293A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN111931925A (zh) | 基于fpga的二值化神经网络的加速系统 | |
CN108228966A (zh) | 基于fpga局部动态重构技术的异型流水线设计方法 | |
CN110515587A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN110531954A (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN108648136B (zh) | 对二维查找表进行压缩的方法及装置 | |
Mintzer | Digital filtering in FPGAs | |
Kumar et al. | Performance analysis of FIR filter using booth multiplier | |
KR102153167B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
KR20000065460A (ko) | 이동통신의 채널할당을 위한 디지털 홉필드 신경망 칩 | |
Kumar et al. | FPGA Implementation of Systolic FIR Filter Using Single-Channel Method | |
Fischer et al. | Cost-effective video filtering solution for real-time vision systems | |
Dulac et al. | Implementation and evaluation of a parallel architecture using asynchronous communications | |
Lee et al. | Memory-centric architecture of neural processing unit for edge device | |
Mahesh et al. | Low area design architecture of xor-mux full adder based discrete wavelet transform | |
CN115982418B (zh) | 一种提升ai计算芯片超分运算性能的方法 | |
Mohanty | Novel block-formulation and area-delay-efficient reconfigurable interpolation filter architecture for multi-standard sdr applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |