CN114239818B - 基于tcam和lut的存内计算架构神经网络加速器 - Google Patents
基于tcam和lut的存内计算架构神经网络加速器 Download PDFInfo
- Publication number
- CN114239818B CN114239818B CN202111588448.6A CN202111588448A CN114239818B CN 114239818 B CN114239818 B CN 114239818B CN 202111588448 A CN202111588448 A CN 202111588448A CN 114239818 B CN114239818 B CN 114239818B
- Authority
- CN
- China
- Prior art keywords
- tcam
- multiplication
- input
- lut
- result
- 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
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于TCAM和LUT的存内计算架构神经网络加速器,该加速器由以下部分组成:一个预编码器,一个控制器,若干个TCAM,每一个TCAM旁配有一些加法器、缓存区、一个LUT。通过将神经网络的乘加运算中“输入‑权重对”先进行预编码,将编码得到的码字依次存入TCAM中,利用TCAM的搜索特性并行完成多个乘法,并将结果存储在缓存区中,再和前一组的乘法结果相加,将加法结果存储在缓存区,以此类推。这样,在TCAM的每一行都可以完成一组乘加运算。随着TCAM的行数的增加,可以同时完成多个像素点的计算,不会引入额外的时延,使神经网络的运算速度大幅加快的同时,保证了存内计算数据搬移功耗低的特点。
Description
技术领域
本发明属于硬件架构与芯片设计领域,尤其涉及一种基于TCAM和LUT的存内计算架构神经网络加速器。
背景技术
神经网络是用来模拟人脑分析和处理信息的计算系统,它是人工智能的基础,解决了以人类或统计标准证明不可能或很难解决的问题。人工神经网络具有自我学习能力,能够在获得众多数据的前提下产生更好的结果。神经网络技术在人脸识别、命名实体识别、语音识别、签名验证和语义检测等场景下都有广泛的应用。神经网络算法一般数据量和运算量相当庞大。
传统的冯诺依曼计算架构是当前计算机主要采用的架构,它将存储单元和运算单元分开,执行计算过程时,需要将计算所需的数据从存储单元搬移到总线上,再从总线上将数据传输到运算单元(如:CPU)。而该架构在执行神经网络这种数据量大的运算时,会受到较多的限制。一方面,计算所需的数据和计算过程中产生的中间数据需要频繁的在运算单元和存储单元之间来回搬运,造成巨大的功耗开销;另一方面,现在的运算单元性能远强于存储单元,导致计算过程中有相当一部分时间运算单元需要等待存储单元找到并传输数据,从而导致了时间上的浪费,增大了运算的时延。针对这些问题,世界上的学者们提出了“存内计算”的构想,让新一代的计算机架构,以存储单元为核心,在存储单元内部完成计算。多项研究表明,相比冯诺依曼架构,这种架构在运行神经网络应用时,能节省大量能量,显著提高系统的能效比(能效比反应了能量的利用效率)。
然而,现在的存内计算研究依然面临许多挑战。常见的基于模拟电路的存内计算架构需要复杂的外围电路,如:模数转换器(ADC)或者数模转换器(DAC)、敏感放大器等,且这些转换器的性能会影响计算的精度。如果要进行高精度的运算,会使噪声的影响过大,降低神经网络的稳定性和准确率。
本发明是一种基于TCAM(三态内容寻址存储器)和LUT(查找表)的存内计算架构神经网络加速器。一般来说,乘加运算是神经网络的主要运算形式,指的是:多组输入I1,I2,…,In和多组权重W1,W2,…,Wn分别对应相乘,再将积相加的运算形式。如:
I1*W1+I2*W2+…+In*Wn (1)
因此,我们的神经网络加速器是专门为了加速乘加运算而设计的。TCAM是一种应用广泛的存储器。它除了可以像往常的存储器一样读写,还能在搜索模式下工作。在搜索模式下,存储器内部预先存好数据,每当有数据输入(输入数据,即需要搜索的数据称为key)时,TCAM会将key和内部存储的数据进行比较,从中搜索到相同的数据(相同则称之为匹配),并在该数据所在的位置输出一个“1”,这样就能知道相同数据所在的位置。而LUT能针对每次不同的输入,产生将特定位置的数据输出,即模拟人类的“查表”的操作。
发明内容
本发明旨在提供一种基于TCAM和LUT的存内计算架构神经网络加速器,通过将常规的SRAM(静态随机存取存储器)替换为TCAM,以及通过LUT(查找表)预存数据,简化优化神经网络中最重要的乘加过程,最终达到减小运算功耗的同时提高吞吐量(或单位周期内完成操作的次数)的目的。该加速器由以下部分组成:一个预编码器,一个控制器,若干个TCAM(此处示例为4个),每一个TCAM旁配有一些加法器、缓存区、一个LUT。
得益于我们采用的全数字化的存内计算架构,式(1)中的输入I和神经网络的权重W可以是任意精度的,而不需要像常规的模拟的存内计算架构一样会因为噪声的影响使计算精度受限。为了方便叙述,我们这里假设所有的I和W均为4比特。另外,我们将式(1)中的每一对I和W按照二进制格式拼接起来的数字[I,W]称为一组“输入-权重对”。比如,假设I和W分别是1和2,对应的4比特二进制分别为“0001”和“0010”,对应的8比特“输入-权重对”为“00010010”。
在神经网络应用运算过程中,每一个像素点都需要进行如式(1)所示的乘加运算。同时,对于一张图像,会有多个像素点需要进行计算。为了同时完成多个像素点的乘加运算,达到计算加速的目的,首先,将所有像素点对应的乘加运算的第1组“输入-权重对”,即所有的I1和W1相拼接的结果,依次存入TCAM的每一行,使每一行能对应一个像素点的乘加运算。其次,为了完成乘法运算,在接下来的每个时钟周期,都会将一个TCAM中可能存在的8比特“输入-权重对”输入TCAM(称为key),找到匹配的“输入-权重对”。显然,这些匹配的“输入-权重对”的乘法结果是相同且已知的,和作为key的“输入-权重对”的乘法结果相同。当TCAM中有多行匹配时,这些行会输出一个“1”,同时,我们也在一个时钟周期内完成了多行的乘法计算。在下一个时钟周期,更换key值,找到其中和新key值匹配的行,得到这些行的乘法结果……。如此经历若干个时钟周期,直到所有可能的key值都已经输入过。此时,TCAM中所有的“输入-权重对”一定在某个时钟周期内匹配过了,也一定已经得到了相应的乘法结果。这些乘法结果都会存储到缓存区中。然后,如之前的第1组“输入-权重对”一样,再将各个像素点对应的乘加运算的第2组“输入-权重对”存入TCAM,并保证存入位置和第1组的“输入-权重对”相同。换句话说,要求TCAM的每一行都进行同一个像素点的计算,因此,一次如式(1)所示的乘加运算的所有组“输入-权重对”都应该存储在同一行,这是为了保证每次得到的乘法结果能和之前存储在与该行对应的缓存区的乘法结果相加。同样经过若干个时钟周期后,能得到TCAM中所有“输入-权重对”的乘法结果。在这若干个时钟周期中,每一个周期都会有一个key输入TCAM,并在特定的行产生一个“1”。当对应的加法器检测到该行输出为“1”时,会将key对应的乘法结果与缓存区的数据相加,这样就实现了乘加运算中,两次乘法结果的相加。不断重复以上步骤,就能得到多个像素点的乘加结果,并且存储在了缓存区。
然而,对于4比特数,所有可能的非负整数值为0-15,I和W都可能为这16个数中的任何一个。那么由I和W拼凑成的“输入-权重对”共有:16×16=256种可能。这意味着,要完成一次TCAM中所有乘法运算,需要每个时钟周期输入这256种可能中的一种,将所有可能的“输入-权重对”全部输入一遍,即共需要256个时钟周期才能完成。为了缩小这个计算时延,本发明采取了一些优化方法。
一方面,我们观察到,许多乘法虽然两个乘数不一样,但是乘法结果是一样的,如,3×6和2×9。而在上述256个时钟周期中,这些乘法占用了两个时钟周期,产生的结果却相同,都是18。这是因为二者存储在TCAM中的“输入-权重对”不同,而TCAM在一个时钟周期内只能搜索一个key。为了能在一个时钟周期中计算所有结果相同的乘法,我们引入了一个预编码器,它能使这些计算结果相同,但乘数却不同的“输入-权重对”在写入TCAM时,被编码成同一个码字,而不是以“输入-权重对”的形式写入TCAM。在根据key进行搜索时,匹配的行存储的码字相同,产生相同的输出。比如,3×6和2×9在写入TCAM前,全部被编码为“00000000”再写入,这样在以“00000000”为key进行搜索的时钟周期就可以同时得到二者的乘法结果。另外,由于交换两个乘数,乘法的结果也不会改变,6×3和9×2也会同样被编码为“00000000”。这样就实现了在一个时钟周期内完成多种“输入-权重对”的乘法运算。另一方面,0和任意数相乘都等于0,且结果和任意数相加都不会改变,这和不进行搜索产生的结果一致。因此,对于包含乘数0的乘法,无需产生相应的key进行搜索。经过以上两点的优化,完成TCAM中所有乘法所需要的周期数从256减少到89。
本发明采用LUT电路不断产生key所对应的乘法结果。根据上述分析,一个LUT需要存储89个码字所对应的乘法结果,且在搜索阶段,需要在每个时钟周期根据该周期要搜索的码字输出相应的乘法结果。为了减小LUT的容量,从而减小LUT带来的面积开销,我们对LUT做了进一步优化。我们观察到,当两个乘数中有偶数时,可以分解成另一个数乘2的形式,如:3×6=3×3×2。而在二进制中,一个数字乘2可以简化为将该数字左移1位,因此在这种情况下,乘法3×6的结果相当于3×3的结果左移1位即可得到。于是,包含偶数的乘法最终都可以转换成奇数的乘法,并由奇数的乘法结果左移若干位得到。于是,在时钟周期1,假设输出的是乘法运算3×3的结果,即9,并将3×3对应的码字作为key输入TCAM进行搜索,计算所有乘法结果是9的乘法。那么在时钟周期2,我们可以将3×6对应的码字作为key输给TCAM,并同时将9左移一位,得到18作为乘法结果输给TCAM,而无需再次从LUT中查表和输出,LUT也无需存储3×6对应的乘法结果。通过这个优化,我们可以将LUT所需要存储的乘法结果数量从89个减少到28个。
根据上述计算过程和优化分析,对所发明的基于TCAM和LUT的存内计算架构神经网络加速器总结如下:
本加速器由以下部分组成:一个预编码器,一个控制器,若干个TCAM(如:4个)。另外,每一个TCAM旁边需配有一些加法器、缓存区、一个LUT以及一个局部控制器,TCA M的每一行对应一个加法器和一个缓存区。
TCAM可以作为存储器工作进行正常读写,也可以存储由神经网络的输入I和权重W编码成的码字,加速神经网络的乘加运算。
预编码器使每一个写入TCAM的由输入I和权重W组成的“输入-权重对”被编码成对应的码字,然后再写入TCAM。此处的编码规则可以是任意的,唯一的要求是乘法结果相同的“输入-权重对”被编码成同一个码字。
控制器起到全局控制的作用,主要管理神经网络中的输入I和权重W和对应的乘法结果的读出和写入到TCAM中的哪个位置。
每个TCAM都需要配置一个局部控制器,用于不断产生需要用于搜索的key(即码字),并控制LUT输出key对应的乘法结果。
LUT的作用是存储所有码字对应的乘法结果,当局部控制器产生用于搜索的key时,模拟人类的查表行为,输出对应乘法结果。
在TCAM的每一行都需要配置一个加法器,当检测到该行输出“1”时,需要将缓存区的数据和该时钟周期LUT输出的乘法结果相加,并存回到缓存区中。
缓存区用于存储乘法计算结果和多个乘法结果相加的结果。
本发明将神经网络的乘加运算中“输入-权重对”先进行预编码,将编码得到的码字依次存入TCAM中,利用TCAM的搜索特性并行完成多个乘法,并将结果存储在缓存区中。等到下一次搜索时,再将下一组“输入-权重对”编码成的码字放入相同位置并完成乘法计算,再和前一组的乘法结果相加,将加法结果存储在缓存区,等待下一组“输入-权重对”的乘法计算,以此类推。这样,在TCAM的每一行都可以完成一组乘加运算,即,可以得到神经网络中一个像素点的运算结果。随着TCAM的行数(即容量)的增加,可以同时完成多个像素点的计算,不会引入额外的时延,使神经网络的运算速度大幅加快的同时,保证了存内计算数据搬移功耗低的特点。相比2020年微体系结构国际研讨会(IEEE/ACM International Symposium on Microarchitecture,MICRO)上来自宾夕法尼亚州立大学(The PennsylvaniaState Un iversity,PSU)的研究者提出的存内计算架构(参见K.Ramanathan et al.,“Look-Up Table ba sed Energy Efficient Processing in Cache Support for NeuralNetwork Acceleration,”2020 5 3rd Annual IEEE/ACM International Symposium onMicroarchitecture(MICRO),2020,pp.88-101),我们提出的加速器的能量效率提升了7.56倍。
附图说明
图1是发明的基于TCAM和LUT的存内计算架构神经网络加速器的架构图。
图2是该加速器工作时的流程图。
具体实施方式
下面将结合实施例和附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施案例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,本发明提出了一种基于TCAM和LUT的存内计算架构神经网络加速器,该神经网络加速器是专门为了加速乘加运算而设计,采用全数字化的存内计算架构,所述乘加运算是神经网络的主要运算形式,指的是:多组输入I1,I2,…,In和多组权重W1,W2,…,Wn分别对应相乘,再将各乘积相加的运算形式,如:
I1*W1+I2*W2+…+In*Wn (1)
所述神经网络加速器由以下部分组成:一个预编码器,一个控制器,M个TCAM,另外,每一个TCAM配置有若干个加法器、若干个缓存区、一个LUT以及一个局部控制器,其中TCAM的每一行对应一个加法器和一个缓存区;
每一个TCAM能够作为存储器工作进行正常读写,也能够存储由神经网络的任意一个输入I及其对应的权重W编码成的码字,从而加速神经网络的乘加运算,其中,所述码字也被称为key;
所述预编码器使每一个写入TCAM的由输入I和权重W组成的“输入-权重对”被编码成对应的码字,然后再写入TCAM,此处的编码规则是任意的,唯一的要求是乘法结果相同的“输入-权重对”被编码成同一个码字;
所述控制器起到全局控制的作用,主要管理神经网络中的输入I、权重W和对应的乘法结果的读出和写入到TCAM中的哪个位置;
每个TCAM都需要配置一个局部控制器,用于不断产生需要用于搜索的key,并控制所述LUT输出key对应的乘法结果;
所述LUT的作用是存储所有码字对应的乘法结果,当所述局部控制器产生用于搜索的key时,模拟人类的查表行为,输出对应的乘法结果;
在任意一个TCAM的每一行都需要配置一个加法器,当检测到该行输出“1”时,需要将对应缓存区的数据和该时钟周期对应LUT输出的乘法结果相加,并存回到对应缓存区中;
缓存区用于存储乘法结果和多个乘法结果相加的结果;
所述神经网络加速器将运行神经网络算法所需要用到的“输入-权重对”依次输入预编码器,得到对应的码字,然后写入TCAM中,所述控制器集中管理码字在TCAM中存储的位置;
局部控制器产生一个key,同时输出给TCAM和LUT,TCAM根据key搜索匹配的数据,匹配的数据所存在的行会输出“1”,否则输出“0”;LUT根据key输出对应的乘法结果,该乘法结果可能由LUT直接输出,也有可能由上一个时钟周期的输出移位得到;每一行的加法器如果检测到该行输出了“1”,则将对应缓存区内的数据和LUT输出的乘法结果相加,得到加法结果,并将该加法结果存回对应缓存区;在计算阶段,每一个时钟周期都需要执行上述从局部控制器产生一个key到将加法结果存回对应缓存区的操作,在计算完TCAM中的所有乘法之后,需要重新输入下一批需要用到的“输入-权重对”到预编码器,再开始计算;在计算完式(1)的所有乘法后,缓存区的数据即为式(1)的运算结果。
本发明提出的一种基于TCAM和LUT的存内计算架构的神经网络加速器的工作过程包括:
步骤S1:将运行神经网络算法所需要用到的“输入-权重对”依次输入预编码器,得到对应的码字,然后写入TCAM中。控制器集中管理码字在TCAM中存储的位置。
步骤S2:局部控制器产生一个key,同时输出给TCAM和LUT。TCAM根据key搜索匹配的数据,匹配的数据所存在的行会输出“1”,否则输出“0”。LUT根据key输出对应的乘法结果,该乘法结果可能由LUT直接输出,也有可能由上一个时钟周期的输出移位得到。
步骤S3:每一行的加法器如果检测到该行输出了“1”,则将缓存区内的数据和LUT输出的乘法结果相加。
步骤S4:将步骤S3得到的加法结果,存回缓存区。
在计算阶段,每一个时钟周期都需要执行步骤S2-S4。在计算完TCAM中的所有乘法之后,需要重新执行步骤S1,写入下一批数据再开始计算。在计算完式(1)的所有乘法后,缓存区的数据即为式(1)的运算结果。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质,在本发明的精神和原则之内,对以上实施例所作的任何简单的修改、等同替换与改进等,均仍属于本发明技术方案的保护范围之内。
Claims (3)
1.一种基于TCAM和LUT的存内计算架构神经网络加速器,其特征在于,该神经网络加速器是专门为了加速乘加运算而设计,采用全数字化的存内计算架构,所述乘加运算是神经网络的主要运算形式,指的是:多组输入I1,I2,…,In和多组权重W1,W2,…,Wn分别对应相乘,再将各乘积相加的运算形式,如:
I1*W1+I2*W2+…+In*Wn (1)
所述神经网络加速器由以下部分组成:一个预编码器,一个控制器,M个TCAM,另外,每一个TCAM配置有若干个加法器、若干个缓存区、一个LUT以及一个局部控制器,其中TCAM的每一行对应一个加法器和一个缓存区;
每一个TCAM能够作为存储器工作进行正常读写,也能够存储由神经网络的任意一个输入I及其对应的权重W编码成的码字,从而加速神经网络的乘加运算,其中,所述码字也被称为key;
所述预编码器使每一个写入TCAM的由输入I和权重W组成的“输入-权重对”被编码成对应的码字,然后再写入TCAM,此处的编码规则是任意的,唯一的要求是乘法结果相同的“输入-权重对”被编码成同一个码字;
所述控制器起到全局控制的作用,主要管理神经网络中的输入I、权重W和对应的乘法结果的读出和写入到TCAM中的哪个位置;
每个TCAM都需要配置一个局部控制器,用于不断产生需要用于搜索的key,并控制所述LUT输出key对应的乘法结果;
所述LUT的作用是存储所有码字对应的乘法结果,当所述局部控制器产生用于搜索的key时,模拟人类的查表行为,输出对应的乘法结果;
在任意一个TCAM的每一行都需要配置一个加法器,当在任意时钟周期检测到该行输出“1”时,需要将对应缓存区的数据和该时钟周期对应LUT输出的乘法结果相加,并存回到对应缓存区中;
缓存区用于存储乘法结果和多个乘法结果相加的结果;
所述神经网络加速器将运行神经网络算法所需要用到的“输入-权重对”依次输入预编码器,得到对应的码字,然后写入TCAM中,所述控制器集中管理码字在TCAM中存储的位置;
局部控制器产生一个key,同时输出给TCAM和LUT,TCAM根据key搜索匹配的数据,匹配的数据所存在的行会输出“1”,否则输出“0”;LUT根据key输出对应的乘法结果,该乘法结果可能由LUT直接输出,也有可能由上一个时钟周期的输出移位得到;每一行的加法器如果检测到该行输出了“1”,则将对应缓存区内的数据和LUT输出的乘法结果相加,得到加法结果,并将该加法结果存回对应缓存区;在计算阶段,每一个时钟周期都需要执行上述从局部控制器产生一个key到将加法结果存回对应缓存区的操作,在计算完TCAM中的所有乘法之后,需要重新输入下一批需要用到的“输入-权重对”到预编码器,再开始计算;在计算完式(1)的所有乘法后,缓存区的数据即为式(1)的运算结果。
2.根据权利要求1所述的基于TCAM和LUT的存内计算架构神经网络加速器,其特征在于,假设神经网络的任意一个输入I及其对应的权重W均为4比特,并将任意一个输入I及其对应的权重W按照二进制格式拼接起来的数字[I,W]称为一组“输入-权重对”,所述神经网络加速器的工作原理具体为:
在神经网络应用运算过程中,每一个像素点都需要进行如式(1)所示的乘加运算,同时,对于一张图像,会有多个像素点需要进行计算,为了同时完成多个像素点的乘加运算,达到计算加速的目的,首先,将所有像素点对应的乘加运算的第1组“输入-权重对”,即所有的I1和W1相拼接的结果,依次存入TCAM的每一行,使每一行能对应一个像素点的乘加运算;其次,为了完成乘法运算,在接下来的每个时钟周期,都会将一个TCAM中存在的8比特“输入-权重对”输入TCAM,找到匹配的“输入-权重对”,该8比特“输入-权重对”即为key;当TCAM中有多行匹配时,这些行会输出一个“1”,在一个时钟周期内完成了多行的乘法计算;在下一个时钟周期,更换key值,找到和新key值匹配的行,得到这些行的乘法结果,以此类推,如此经历若干个时钟周期,直到所有的key值都已经输入过;此时,TCAM中所有的“输入-权重对”一定在某个时钟周期内匹配过了,也一定已经得到了相应的乘法结果,这些乘法结果都会存储到缓存区中;
然后,如之前的第1组“输入-权重对”一样,再将各个像素点对应的乘加运算的第2组“输入-权重对”存入TCAM,并保证存入位置和第1组的“输入-权重对”相同,即要求TC AM的每一行都进行同一个像素点的计算,因此,一次如式(1)所示的乘加运算的所有组“输入-权重对”都应该存储在同一行,这是为了保证每次得到的乘法结果能和之前存储在与该行对应的缓存区的乘法结果相加;同样经过若干个时钟周期后,能得到TCAM中所有“输入-权重对”的乘法结果;在这若干个时钟周期中,每一个周期都会有一个key输入TCAM,并在特定的行产生一个“1”,当对应的加法器检测到该行输出为“1”时,会将key对应的乘法结果与缓存区的数据相加,这样就实现了乘加运算中,两次乘法结果的相加;不断重复以上步骤,就能得到多个像素点的乘加结果,并且存储在了缓存区;
为了缩小计算时延,采取了一些优化方法:
一方面,许多乘法虽然两个乘数不一样,但是乘法结果是一样的,为了能在一个时钟周期中计算所有结果相同的乘法,引入了一个预编码器,它能使这些计算结果相同,但乘数却不同的“输入-权重对”在写入TCAM时,被编码成同一个码字,而不是以“输入-权重对”的形式写入TCAM;在根据key进行搜索时,匹配的行存储的码字相同,产生相同的输出;另外,由于交换两个乘数,乘法的结果也不会改变,将这种情况下的不同“输入-权重对”也编码成同一个码字,这样就实现了在一个时钟周期内完成多种“输入-权重对”的乘法运算;另一方面,0和任意数相乘都等于0,且结果和任意数相加都不会改变,这和不进行搜索产生的结果一致,因此,对于包含乘数0的乘法,无需产生相应的key进行搜索;经过上述优化后,对于4比特数,完成TCAM中所有乘法所需要的周期数从256减少到89;
同时,由于采用LUT电路不断产生key所对应的乘法结果,根据上述分析,一个LUT需要存储89个码字所对应的乘法结果,且在搜索阶段,需要在每个时钟周期根据该时钟周期要搜索的码字输出相应的乘法结果,为了减小LUT的容量,从而减小LUT带来的面积开销,对LUT做了进一步优化:
由于当两个乘数中有偶数时,偶数被分解成另一个奇数乘2的形式,而在二进制中,一个数字乘2简化为将该数字左移1位,因此在这种情况下,包含偶数的乘法最终都能够转换成奇数的乘法,并由奇数的乘法结果左移若干位得到,于是,在时钟周期1,假设输出的是转换后的两个奇数的乘法运算结果,将这两个奇数对应的码字作为key输入TCAM进行搜索计算;在时钟周期2,将包含偶数的原始两个乘数对应的码字作为key输给TCAM,并同时将时钟周期1的计算结果左移若干位,得到的结果作为乘法结果输给TCAM,而无需再次从LUT中查表和输出,LUT也无需存储包含偶数的两个乘数对应的乘法结果;通过这个优化,将LUT所需要存储的乘法结果数量从89个减少到28个。
3.根据权利要求2所述的基于TCAM和LUT的存内计算架构神经网络加速器,其特征在于,所述M=4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111588448.6A CN114239818B (zh) | 2021-12-23 | 2021-12-23 | 基于tcam和lut的存内计算架构神经网络加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111588448.6A CN114239818B (zh) | 2021-12-23 | 2021-12-23 | 基于tcam和lut的存内计算架构神经网络加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114239818A CN114239818A (zh) | 2022-03-25 |
CN114239818B true CN114239818B (zh) | 2023-04-18 |
Family
ID=80761825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111588448.6A Active CN114239818B (zh) | 2021-12-23 | 2021-12-23 | 基于tcam和lut的存内计算架构神经网络加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114239818B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111178494A (zh) * | 2018-11-09 | 2020-05-19 | 三星电子株式会社 | 神经处理单元、神经处理系统和应用系统 |
CN112052194A (zh) * | 2019-06-05 | 2020-12-08 | 三星电子株式会社 | 三态内容可寻址存储器及其操作方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9912774B2 (en) * | 2015-12-22 | 2018-03-06 | Intel Corporation | Accelerated network packet processing |
US11152067B2 (en) * | 2018-08-30 | 2021-10-19 | Sandisk Technologies Llc | Content addressable memory with spin-orbit torque devices |
CN111047034B (zh) * | 2019-11-26 | 2023-09-15 | 中山大学 | 一种基于乘加器单元的现场可编程神经网络阵列 |
US11934330B2 (en) * | 2020-05-08 | 2024-03-19 | Intel Corporation | Memory allocation for distributed processing devices |
CN113741858B (zh) * | 2021-09-06 | 2024-04-05 | 南京后摩智能科技有限公司 | 存内乘加计算方法、装置、芯片和计算设备 |
-
2021
- 2021-12-23 CN CN202111588448.6A patent/CN114239818B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111178494A (zh) * | 2018-11-09 | 2020-05-19 | 三星电子株式会社 | 神经处理单元、神经处理系统和应用系统 |
CN112052194A (zh) * | 2019-06-05 | 2020-12-08 | 三星电子株式会社 | 三态内容可寻址存储器及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114239818A (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210357736A1 (en) | Deep neural network hardware accelerator based on power exponential quantization | |
CN112162723B (zh) | 一种量子减法运算方法、装置、电子装置及存储介质 | |
CN110826719A (zh) | 一种量子程序的处理方法、装置、存储介质和电子装置 | |
CN100583024C (zh) | 一种用于浮点除法和平方根运算的预处理电路结构 | |
Zhang et al. | When sorting network meets parallel bitstreams: A fault-tolerant parallel ternary neural network accelerator based on stochastic computing | |
CN113741858B (zh) | 存内乘加计算方法、装置、芯片和计算设备 | |
CN112464296A (zh) | 一种用于同态加密技术的大整数乘法器硬件电路 | |
CN113590195A (zh) | 支持浮点格式乘加的存算一体化dram计算部件设计 | |
Alam et al. | Exact stochastic computing multiplication in memristive memory | |
US20230196068A1 (en) | System and method for accelerating rnn network, and storage medium | |
CN113313244B (zh) | 面向加法网络的近存储神经网络加速器及其加速方法 | |
CN113342310A (zh) | 一种应用于格密码的串行参数可配快速数论变换硬件加速器 | |
CN114239818B (zh) | 基于tcam和lut的存内计算架构神经网络加速器 | |
CN117574970A (zh) | 用于大规模语言模型的推理加速方法、系统、终端及介质 | |
CN111079934B (zh) | 应用于环域上误差学习加密算法的数论变换单元和方法 | |
CN109669666B (zh) | 乘累加处理器 | |
CN115526131A (zh) | 多级编码近似计算Tanh函数的方法及装置 | |
CN116257210A (zh) | 一种基于概率计算的空间并行混合乘法器及其工作方法 | |
CN111897513B (zh) | 一种基于反向极性技术的乘法器及其代码生成方法 | |
CN116543808A (zh) | 一种基于sram单元的全数字域存内近似计算电路 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
CN115658012B (zh) | 向量乘加器的sram模拟存内计算装置和电子设备 | |
CN115658011B (zh) | 向量乘加器的sram存内计算装置和电子设备 | |
He et al. | LSAC: A Low-Power Adder Tree for Digital Computing-in-Memory by Sparsity and Approximate Circuits Co-Design | |
CN116522967A (zh) | 乘法器与芯片 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |