一种存内计算电路及方法

文档序号:32342046发布日期:2022-11-26 10:05阅读:57来源:国知局
一种存内计算电路及方法

1.本发明涉及计算机技术领域,尤其是一种存内计算电路及方法。


背景技术:

2.近年来,从图像分类到语音识别,人工智能(ai)已被越来越广泛地应用于工业和日常生活中的场景。ai模型通常包含大量参数,需要进行大量乘累加(mac)操作才能进行单次推理。为了提高ai设备的性能和能效,许多硬件加速器被提出。然而,基于冯诺依曼架构的存储器结构设计很难通过硬件加速器进一步提高能效,其能耗和延迟主要由内存和处理元件之间的数据移动决定,即由“存储墙”决定。
3.现有技术一般通过设计存内计算架构克服“存储墙”问题。存内计算架构可以通过在内存块内执行计算来消除片上缓冲区和运算器之间的数据移动,从而避免片上缓冲区和运算器之间数据移动带来的能量消耗。然而,神经网络在识别任务中的权重值以及激活值的精度随着结构的变化而变化,而当前大部分存内计算系统所支持的精度不可配置或者可配置精度较少,在神经网络识别任务的权重值和激活值的配置上存在一定的局限性;同时,当前大部分存内计算电路中的计算单元在内存中的面积占比较大,导致存储单元密度较小,从而存储单元所能存储的数据量较少,间接增加了数据流动量,引起功耗的升高。


技术实现要素:

4.为解决上述技术问题,本发明实施例提供了一种存内计算电路及方法。
5.一方面,本发明实施例所采取的技术方案是:
6.一种存内计算电路,包括:
7.权重值存储阵列,用于存储权重值阵列;
8.激活值存储阵列,用于存储激活值阵列;
9.逻辑计算阵列,包括若干个逻辑计算单元,所述逻辑计算单元用于在单个周期内从所述权重值存储阵列读取第一权重值,从所述激活值存储阵列中读取第一激活值,并对所述第一权重值和所述第一激活值进行或非操作,输出第一结果,所述第一权重值为所述权重值阵列中单比特权重值的相反值,所述第一激活值为所述激活值阵列中与所述第一权重值行数相同的单比特激活值的相反值;所述逻辑计算单元的数量与所述权重值阵列的行数以及所述激活值阵列的行数相同;所述逻辑计算阵列用于在所述单个周期内根据所述第一结果输出第二结果,所述第二结果为所述权重值阵列中一列的单比特权重值与所述激活值阵列中一列的单比特激活值的乘结果;
10.计算单元,用于根据所述第二结果进行移位累加计算,输出第三结果。
11.作为一种可选的实施方式,所述计算单元包括:
12.加法器,用于计算所述第二结果中的各个乘结果的和,得到第四结果;
13.寄存器,用于保存所述第四结果;
14.补零模块,用于对所述寄存器中保存的所有所述第四结果进行补零操作,生成第
五结果;
15.移位累加模块,用于对所述第五结果进行移位累加计算,生成所述第三结果并输出。
16.作为一种可选的实施方式,所述计算单元还包括符号位控制模块;
17.所述符号位控制模块用于对所述第五结果进行有符号计算或者无符号计算。
18.作为一种可选的实施方式,所述权重值存储阵列采用sram存储单元阵列,所述权重值存储阵列包括若干个第一存储单元,所述第一存储单元包括第一sram存储单元和第一传输管,所述第一sram存储单元用于存储单比特权重值,所述第一传输管用于传输单比特权重值的相反值。
19.作为一种可选的实施方式,所述激活值存储阵列采用sram存储单元阵列,所述激活值存储阵列包括若干个第二存储单元,所述第二存储单元包括第二sram存储单元和第二传输管,所述第二sram存储单元用于存储单比特激活值,所述第二传输管用于传输单比特激活值的相反值。
20.作为一种可选的实施方式,所述第一sram存储单元和所述第二sram存储单元采用6t sram结构,所述第一传输管和所述第二传输管采用nmos管。
21.作为一种可选的实施方式,所述逻辑计算单元为或非门,所述或非门的第一输入端与所述第一传输管输出单比特权重值的相反值的一端连接,所述或非门的第二输入端与所述第二传输管输出单比特激活值的相反值的一端连接。
22.另一方面,本发明实施例所采取的技术方案是:
23.一种存内计算方法,所述方法应用于存内计算电路,所述存内计算电路包括权重值存储阵列、激活值存储阵列、逻辑计算阵列和计算单元,所述权重值存储阵列用于存储权重值阵列,所述激活值存储阵列用于存储激活值阵列,所述逻辑计算阵列包括若干个逻辑计算单元,所述方法包括:
24.通过所述逻辑计算单元在单个周期内从所述权重值存储阵列读取第一权重值,从所述激活值存储阵列中读取第一激活值,所述第一权重值为所述权重值阵列中单比特权重值的相反值,所述第一激活值为所述激活值阵列中与所述第一权重值行数相同的单比特激活值的相反值;
25.通过所述逻辑计算单元对所述第一权重值和所述第一激活值进行或非操作输出第一结果;
26.通过所述逻辑计算阵列在所述单个周期内根据所述第一结果输出第二结果,所述第二结果为所述权重值阵列中一列的单比特权重值与所述激活值阵列中一列的单比特激活值的乘结果;
27.根据所述第二结果,通过所述计算单元进行移位累加计算,输出第三结果。
28.作为一种可选的实施方式,所述计算单元包括加法器、补零模块、寄存器和移位累加模块;
29.所述根据所述第二结果,通过所述计算单元进行移位累加计算,输出第三结果,包括:
30.通过所述加法器计算所述第二结果中的各个乘结果的和,得到第四结果;
31.将所述第四结果保存至所述寄存器;
32.通过所述补零模块对所述寄存器中保存的所有所述第四结果进行补零操作,生成第五结果;
33.通过所述移位累加模块对所述第五结果进行移位累加计算,生成所述第三结果并输出。
34.作为一种可选的实施方式,所述计算单元还包括符号位控制模块;
35.所述根据所述第二结果,通过所述计算单元进行移位累加计算,输出第三结果,还包括:
36.通过所述符号位控制模块对所述第五结果进行有符号计算或者无符号计算。
37.本发明实施例的存内计算电路及方法,通过逻辑计算单元在单个周期内读取第一权重值和第一激活值,并对第一权重值和第一激活值进行或非操作输出第一结果,实现了在单个周期内进行单比特权重值和单比特激活值的乘法结果输出;通过逻辑计算阵列在单个周期内根据第一结果输出权重值阵列中一列的单比特权重值与激活值阵列中一列的单比特激活值的乘结果,即第二结果,并通过计算单元对第二结果进行移位累加计算,实现了在单个周期内执行一比特的权重值和激活值的乘累加,减小了存内计算电路的面积,增加了存储单元密度,从而降低了能耗;并且提高了存内计算电路的灵活性,使得存内计算电路具备较高的可配置精度,从而实现对神经网络识别任务中的权重值和激活值的高精度配置。
附图说明
38.图1为本发明实施例存内计算电路的电路连接示意图;
39.图2为本发明实施例存内计算电路的权重值存储阵列结构示意图;
40.图3为本发明实施例存内计算电路的激活值存储阵列结构示意图;
41.图4为本发明实施例存内计算电路的第一存储单元和第二存储单元的结构示意图;
42.图5为本发明实施例存内计算方法的流程示意图;
43.图6为本发明实施例的存内计算实施例原理示意图。
具体实施方式
44.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
45.本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
46.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包
含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
47.现有技术一般通过设计存内计算架构克服“存储墙”问题。存内计算架构可以通过在内存块内执行计算来消除片上缓冲区和运算器之间的数据移动,从而避免片上缓冲区和运算器之间数据移动带来的能量消耗。然而,神经网络在识别任务中的权重值以及激活值的精度随着结构的变化而变化,而当前大部分存内计算系统所支持的精度不可配置或者可配置精度较少,在神经网络识别任务的权重值和激活值的配置上存在一定的局限性;同时,当前大部分存内计算电路中的计算单元在内存中的面积占比较大,导致存储单元密度较小,从而存储单元所能存储的数据量较少,间接增加了数据流动量,引起功耗的升高。为此,本发明实施例提出了一种存内计算电路及方法,通过逻辑计算单元在单个周期内读取第一权重值和第一激活值,并对第一权重值和第一激活值进行或非操作输出第一结果,实现了在单个周期内进行单比特权重值和单比特激活值的乘法结果输出;通过逻辑计算阵列在单个周期内根据第一结果输出权重值阵列中一列的单比特权重值与激活值阵列中一列的单比特激活值的乘结果,即第二结果,并通过计算单元对第二结果进行移位累加计算,实现了在单个周期内执行一比特的权重值和激活值的乘累加,减小了存内计算电路的面积,增加了存储单元密度,从而降低了能耗;并且提高了存内计算电路的灵活性,使得存内计算电路具备较高的可配置精度,从而实现对神经网络识别任务中的权重值和激活值的高精度配置。
48.如图1所示,一方面,本发明实施例提出了一种存内计算电路,包括:
49.权重值存储阵列,用于存储权重值阵列;
50.激活值存储阵列,用于存储激活值阵列;
51.逻辑计算阵列,包括若干个逻辑计算单元,逻辑计算单元用于在单个周期内从权重值存储阵列读取第一权重值,从激活值存储阵列中读取第一激活值,并对第一权重值和第一激活值进行或非操作,输出第一结果,第一权重值为权重值阵列中单比特权重值的相反值,第一激活值为激活值阵列中与第一权重值行数相同的单比特激活值的相反值;逻辑计算单元的数量与权重值阵列的行数以及激活值阵列的行数相同;逻辑计算阵列用于在单个周期内根据第一结果输出第二结果,第二结果为权重值阵列中一列的单比特权重值与激活值阵列中一列的单比特激活值的乘结果;
52.计算单元,用于根据第二结果进行移位累加计算,输出第三结果。
53.可选地,本发明实施例的存内计算电路可在存储模式和计算模式下工作,其中,在存储模式下,逻辑计算阵列和计算单元不使能,进行权重值存储阵列和激活值存储阵列的读写操作;在计算模式下执行逻辑计算阵列和计算单元的一系列计算操作。
54.可以理解的是,通过逻辑计算单元对第一权重值和第一激活值进行或非操作相当于对单比特权重值和单比特激活值进行与操作,即第一结果为单比特权重值和单比特激活值的乘法结果。
55.在本发明的实施例中,通过逻辑计算阵列在单个周期内根据第一结果输出权重值阵列中一列的单比特权重值与激活值阵列中一列的单比特激活值的乘结果,即第二结果。可以理解的是,在多个周期内输出若干个第二结果,直至权重值阵列中每一列的单比特权
重值与激活值阵列中每一列的单比特激活值分别完成了乘结果输出。
56.可选地,参照图2和图3,本发明实施例的权重值存储阵列和激活值存储阵列采用256*16的存储阵列,可配置位宽为1-16位。可以理解的是,随着存储阵列的列数增加,可配置位宽也增加。可以理解的是,若权重值存储阵列和激活值存储阵列采用256*16的存储阵列,则第二结果中包括256个单比特权重值和单比特激活值的乘结果。
57.作为一种可选的实施方式,计算单元包括:
58.加法器,用于计算第二结果中的各个乘结果的和,得到第四结果;
59.寄存器,用于保存第四结果;
60.补零模块,用于对寄存器中保存的所有第四结果进行补零操作,生成第五结果;
61.移位累加模块,用于对第五结果进行移位累加计算,生成第三结果并输出。
62.具体地,在本发明的实施例中,将第二结果中的各个乘结果输入加法器中进行相加输出第四结果后,将第四结果保存至寄存器中,增加一级流水,以减少关键路径延迟;在多个周期内保存若干个第四结果,直至权重值阵列中每一列的单比特权重值与激活值阵列中每一列的单比特激活值分别完成了乘结果输出并经过加法器的处理;通过补零模块对寄存器中保存的所有第四结果进行补零操作,以使生成的第五结果满足后续的移位累加计算要求;从而使移位累加模块对第五结果进行移位累加计算,生成第三结果并输出。
63.可选地,在本发明的一个实施例中,第二结果中包括256个单比特权重值和单比特激活值的乘结果,采用256输入单比特加法树将第二结果中的各个乘结果输入加法器中进行相加输出第四结果。
64.在本发明的一个实施例中计算单元还包括符号位控制模块;
65.符号位控制模块用于对第五结果进行有符号计算或者无符号计算。
66.可选地,在本发明的一个实施例中,存内计算电路中还设置有计算单元控制电路,用于对计算单元的计算过程进行控制。
67.参照图2和图4,作为一种可选的实施方式,权重值存储阵列采用sram存储单元阵列,权重值存储阵列包括若干个第一存储单元,第一存储单元包括第一sram存储单元和第一传输管。
68.其中,第一sram存储单元用于存储单比特权重值,第一传输管用于传输单比特权重值的相反值。
69.参照图3和图4,作为一种可选的实施方式,激活值存储阵列采用sram存储单元阵列,激活值存储阵列包括若干个第二存储单元,第二存储单元包括第二sram存储单元和第二传输管。
70.其中,第二sram存储单元用于存储单比特激活值,第二传输管用于传输单比特激活值的相反值。
71.作为一种可选的实施方式,第一sram存储单元和所述第二sram存储单元采用6tsram结构,第一传输管和第二传输管采用nmos管。
72.其中,6t sram结构为图4的六个晶体管结构(m1-m6),本发明实施例的权重值存储阵列和激活值存储阵列的读写操作与传统6t sram的读写操作相同,即通过计算字线译码电路控制存储权重值存储阵列中存储对应位数权重值和激活值存储阵列中存储对应位数激活值的存储单元的传输管的栅极电压进行读写操作;第一传输管和第二传输管为图4中
的m7。
73.如图5所示,另一方面,本发明实施例提出了一种存内计算方法,应用于存内计算电路,存内计算电路包括权重值存储阵列、激活值存储阵列、逻辑计算阵列和计算单元,权重值存储阵列用于存储权重值阵列,激活值存储阵列用于存储激活值阵列,逻辑计算阵列包括若干个逻辑计算单元,存内计算方法包括:
74.s510、通过逻辑计算单元在单个周期内从权重值存储阵列读取第一权重值,从激活值存储阵列中读取第一激活值;
75.其中,第一权重值为权重值阵列中单比特权重值的相反值,第一激活值为所述激活值阵列中与第一权重值行数相同的单比特激活值的相反值。
76.s520、通过逻辑计算单元对第一权重值和第一激活值进行或非操作输出第一结果;
77.s530、通过逻辑计算阵列在单个周期内根据第一结果输出第二结果;
78.其中,第二结果为所述权重值阵列中一列的单比特权重值与激活值阵列中一列的单比特激活值的乘结果。
79.s540、根据第二结果,通过计算单元进行移位累加计算,输出第三结果。
80.其中,在本发明的实施例中,计算单元包括加法器、补零模块、寄存器和移位累加模块。
81.步骤s540可以进一步划分以下步骤s541-s544:
82.步骤s541、通过加法器计算第二结果中的各个乘结果的和,得到第四结果;
83.步骤s542、将第四结果保存至寄存器;
84.具体地,在本发明的实施例中,通过将第四结果保存至寄存器中,在多个周期内保存若干个第四结果,直至权重值阵列中每一列的单比特权重值与激活值阵列中每一列的单比特激活值分别完成了乘结果输出并经过加法器的处理。
85.步骤s543、通过补零模块对寄存器中保存的所有第四结果进行补零操作,生成第五结果;
86.具体地,在本发明的实施例中,将第二结果中的各个乘结果输入加法器中进行相加输出第四结果且寄存后,通过补零模块对寄存器中保存的所有第四结果进行补零操作,以使生成的第五结果满足后续的移位累加计算要求。
87.步骤s544、通过移位累加模块对所述寄存器中保存的所有第五结果进行移位累加计算,生成第三结果并输出。
88.在本发明的实施例中,计算单元还包括符号位控制模块,步骤s540还包括:
89.通过符号位控制模块对第五结果进行有符号计算或者无符号计算。
90.参照图6,以2bit权重值向量和2bit激活值向量的无符号计算过程为例,基于本发明实施例的存内计算电路及方法,提出一个具体应用实施例,该具体实施例主要包括以下步骤:
91.1)在周期0内,通过计算字线译码电路拉高存储第0位权重值的第一存储单元的第一传输管和存储第0位激活值的第二存储单元的第二传输管的栅极电压,并通过逻辑计算单元(或非门)对第0位权重值的相反值和第0位激活值的相反值进行或非操作,实现对第0位权重值和第0位激活值的一比特乘法,得到周期0的乘结果[1,0,1,0],并将这四位一比特
的乘结果输入加法器中进行相加得到psum[0]为1+0+1+0=2,并进行移位与寄存;
[0092]
2)在周期1内,通过计算字线译码电路关闭存储第0位权重值的第一存储单元的第一传输管,并拉高存储第1位权重值的第一存储单元的第一传输管的栅极电压以及存储第0位激活值的第二存储单元的第二传输管的栅极电压,并通过逻辑计算单元(或非门)对第1位权重值的相反值和第0位激活值的相反值进行或非操作,实现对第1位权重值和第0位激活值的一比特乘法,得到周期1的乘结果[0,0,0,0],并将这四位一比特的乘结果输入加法器中进行相加得到psum[1]为0+0+0+0=0,并进行移位与寄存;
[0093]
3)在周期2内,通过计算字线译码电路关闭存储第1位权重值的第一存储单元的第一传输管,并拉高存储第0位权重值的第一存储单元的第一传输管的栅极电压,同时通过计算字线译码电路关闭存储第0位激活值的第二存储单元的第二传输管,并拉高存储第1位激活值的第二存储单元的第二传输管的栅极电压,通过逻辑计算单元(或非门)对第0位权重值的相反值和第1位激活值的相反值进行或非操作,实现对第0位权重值和第1位激活值的一比特乘法,得到周期2的乘结果[1,0,1,0],并将这四位一比特的乘结果输入加法器中进行相加得到psum[2]为1+0+1+0=2,并进行移位与寄存;
[0094]
4)在周期3内,通过计算字线译码电路关闭存储第0位权重值的第一存储单元的第一传输管,并拉高存储第1位权重值的第一存储单元的第一传输管的栅极电压和存储第1位激活值的第二存储单元的第二传输管的栅极电压,通过逻辑计算单元(或非门)对第1位权重值的相反值和第1位激活值的相反值进行或非操作,实现对第1位权重值和第1位激活值的一比特乘法,得到周期3的乘结果[0,0,0,0],并将这四位一比特的乘结果输入加法器中进行相加得到psum[3]为0+0+0+0=0,并进行移位与寄存。
[0095]
5)通过计算单元对周期0-3得到的psum[0]、psum[1]、psum[2]和psum[3]进行累加,得到最终的乘累加结果:
[0096]a·
w=psum[0]
×
20+psum[1]
×
21+psum[2]
×
21+psum[3]
×22
[0097]
=2
×
20+0
×
21+2
×
21+0
×22
=6
[0098]
其中,w表示权重值,a表示激活值。
[0099]
根据上述内容可知,本发明实施例的存内计算电路及方法,通过逻辑计算单元在单个周期内读取第一权重值和第一激活值,并对第一权重值和第一激活值进行或非操作输出第一结果,实现了在单个周期内进行单比特权重值和单比特激活值的乘法结果输出;通过逻辑计算阵列在单个周期内根据第一结果输出权重值阵列中一列的单比特权重值与激活值阵列中一列的单比特激活值的乘结果,即第二结果,并通过计算单元对第二结果进行移位累加计算,实现了在单个周期内执行一比特的权重值和激活值的乘累加,减小了存内计算电路的面积,增加了存储单元密度,从而降低了能耗;并且提高了存内计算电路的灵活性,使得存内计算电路具备较高的可配置精度,从而实现对神经网络识别任务中的权重值和激活值的高精度配置。
[0100]
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本技术权利要求所限定的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1