CN113741858B - 存内乘加计算方法、装置、芯片和计算设备 - Google Patents
存内乘加计算方法、装置、芯片和计算设备 Download PDFInfo
- Publication number
- CN113741858B CN113741858B CN202111040577.1A CN202111040577A CN113741858B CN 113741858 B CN113741858 B CN 113741858B CN 202111040577 A CN202111040577 A CN 202111040577A CN 113741858 B CN113741858 B CN 113741858B
- Authority
- CN
- China
- Prior art keywords
- data
- input
- weight data
- input weight
- storage area
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 26
- 238000013528 artificial neural network Methods 0.000 claims abstract description 62
- 238000009825 accumulation Methods 0.000 claims abstract description 45
- 238000000034 method Methods 0.000 claims abstract description 41
- 238000013500 data storage Methods 0.000 claims description 9
- 230000002441 reversible effect Effects 0.000 abstract description 9
- 238000010586 diagram Methods 0.000 description 12
- 238000007792 addition Methods 0.000 description 11
- 238000013507 mapping Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4983—Multiplying; Dividing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Mathematics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
- Image Analysis (AREA)
Abstract
本公开实施例公开了一种存内乘加计算方法、装置、芯片和计算设备,其中,该方法包括:从预设的神经网络获取目标数量个输入权重数据对集合;生成输入权重数据对集合中的输入权重数据对分别对应的编码;将目标数量个输入权重数据对集合存入预设的第一存储区;基于第二存储区中的每个乘积数据对应的编码,确定第一存储区中是否存在对应的目标输入权重数据对,如果存在,将该乘积数据确定为目标输入权重数据对对应的待累加数据;对每个输入权重数据对集合中的输入权重数据对分别对应的待累加数据进行累加操作,得到累加结果。本公开实施例避免了加法树的使用,减少了资源占用量,反向搜索过程可以利用神经网络中的数据的稀疏性,减少累加操作的功耗。
Description
技术领域
本公开涉及计算机技术领域,尤其是一种存内乘加计算方法、装置、芯片和计算设备。
背景技术
神经网络,用来模拟人脑分析和处理信息的计算系统。它是人工智能的基础,解决了以人类或统计标准将被证明是不可能或很难解决的问题。人工神经网络具有自我学习能力,能够在获得更多数据的前提下产生更好的结果。神经网络技术在人脸识别,命名实体识别,语音识别,签名验证,语义检测等场景下都有广泛的应用。
对于传统的神经网络加速器来说,在每一个架构环节都会消耗大量的资源,例如乘法器,加法器的功耗与时延等,同时其运行性能也受到存储与处理器之间的带宽限制。而存内计算一定程度上缓解了由于带宽带来的性能限制。
发明内容
本公开的实施例提供了一种存内乘加计算方法,该方法包括:从预设的神经网络获取目标数量个输入权重数据对集合;生成输入权重数据对集合中的输入权重数据对分别对应的编码;将目标数量个输入权重数据对集合存入预设的第一存储区;对于预设的用于存储乘积数据的第二存储区中的每个乘积数据,基于该乘积数据对应的编码,确定第一存储区中是否存在对应于该乘积数据的目标输入权重数据对,如果存在,将该乘积数据确定为目标输入权重数据对对应的待累加数据;对于目标数量个输入权重数据对集合中的每个输入权重数据对集合,对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到该输入权重数据对集合对应的累加结果。
在一些实施例中,从预设的神经网络获取目标数量个输入权重数据对集合,包括:执行目标数量次如下步骤,得到目标数量个输入权重数据对集合:基于神经网络中的权重窗口的大小和移动步长,从输入神经网络中的输入数据中确定权重窗口覆盖的输入数据和权重窗口中的权重数据组成输入权重数据对集合。
在一些实施例中,生成输入权重数据对集合中的输入权重数据对分别对应的编码,包括:从目标数量个输入权重数据对集合包括的输入权重数据对中,确定不包含零的输入权重数据对;生成不包含零的输入权重数据对对应的编码。
在一些实施例中,第二存储区预先基于如下步骤设置:确定神经网络中的输入数据和权重数据的比特位数;根据输入数据和权重数据的比特位数对应的数据范围,生成乘积数据集合,并生成乘积数据集合中的乘积数据的编码;将乘积数据集合存入第二存储区。
在一些实施例中,乘积数据集合不包括零。
在一些实施例中,将目标数量个输入权重数据对集合存入预设的第一存储区,包括:确定原始输入数据和原始权重数据的比特位数;若原始输入数据和原始权重数据的比特位数大于第一存储区中的数据存储单元支持的比特位数,将原始输入数据拆分为至少两个输入子数据,以及将原始权重数据拆分为至少两个权重子数据;根据预设的、用于表示乘法运算的规则,确定输入子数据和权重子数据的对应关系;将相对应的输入子数据和权重子数据作为输入权重数据对存入第一存储区。
在一些实施例中,对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,包括:从该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据中,确定对应于同一对原始输入数据和原始权重数据的至少两个待累加数据;基于乘法运算的规则,对所确定的至少两个待累加数据进行移位累加,得到对应于同一对原始输入数据和原始权重数据的乘积;对所得到的乘积进行累加,得到该输入权重数据对集合对应的累加结果。
根据本公开实施例的另一个方面,提供了一种存内乘加计算装置,该装置包括:获取模块,用于从预设的神经网络获取目标数量个输入权重数据对集合;生成模块,用于生成输入权重数据对集合中的输入权重数据对分别对应的编码;存储模块,用于将目标数量个输入权重数据对集合存入预设的第一存储区;确定模块,用于对于预设的用于存储乘积数据的第二存储区中的每个乘积数据,基于该乘积数据对应的编码,确定第一存储区中是否存在对应于该乘积数据的目标输入权重数据对,如果存在,将该乘积数据确定为目标输入权重数据对对应的待累加数据;累加模块,用于对于目标数量个输入权重数据对集合中的每个输入权重数据对集合,对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到该输入权重数据对集合对应的累加结果。
在一些实施例中,获取模块进一步用于:执行目标数量次如下步骤,得到目标数量个输入权重数据对集合:基于神经网络中的权重窗口的大小和移动步长,从输入神经网络中的输入数据中确定权重窗口覆盖的输入数据和权重窗口中的权重数据组成输入权重数据对集合。
在一些实施例中,生成模块包括:第一确定单元,用于从目标数量个输入权重数据对集合包括的输入权重数据对中,确定不包含零的输入权重数据对;生成单元,用于生成不包含零的输入权重数据对对应的编码。
在一些实施例中,第二存储区预先基于如下步骤设置:确定神经网络中的输入数据和权重数据的比特位数;根据输入数据和权重数据的比特位数对应的数据范围,生成乘积数据集合,并生成乘积数据集合中的乘积数据的编码;将乘积数据集合存入第二存储区。
在一些实施例中,乘积数据集合不包括零。
在一些实施例中,存储模块包括:第二确定单元,用于确定原始输入数据和原始权重数据的比特位数;拆分单元,用于若原始输入数据和原始权重数据的比特位数大于第一存储区中的数据存储单元支持的比特位数,将原始输入数据拆分为至少两个输入子数据,以及将原始权重数据拆分为至少两个权重子数据;第三确定单元,用于根据预设的、用于表示乘法运算的规则,确定输入子数据和权重子数据的对应关系;存储单元,用于将相对应的输入子数据和权重子数据作为输入权重数据对存入第一存储区。
在一些实施例中,累加模块包括:第四确定单元,用于从该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据中,确定对应于同一对原始输入数据和原始权重数据的至少两个待累加数据;移位累加单元,用于基于乘法运算的规则,对所确定的至少两个待累加数据进行移位累加,得到对应于同一对原始输入数据和原始权重数据的乘积;累加单元,用于对所得到的乘积进行累加,得到该输入权重数据对集合对应的累加结果。
根据本公开实施例的另一个方面,提供了一种芯片,该芯片包括控制器、第一存储区、第二存储区、累加器和寄存器,其中,控制器用于执行上述存内乘加计算方法,第一存储区用于存储输入权重数据对,第二存储区用于存储乘积数据,寄存器用于接收从第二存储区提取的乘积数据,累加器用于对寄存器中的乘积数据进行累加。
根据本公开实施例的另一个方面,提供了一种计算设备,该计算设备包括上述芯片。
本公开上述实施例提供的存内乘加计算方法、装置、芯片和计算设备,通过从预设的神经网络获取目标数量个输入权重数据对集合,并生成输入权重数据对对应的编码,然后将目标数量个输入权重数据对集合存入预设的第一存储区,接着根据第二存储区中的每个乘积数据对应的编码,确定第一存储区中是否存在对应的目标输入权重数据对,如果存在,将乘积数据确定为目标输入权重数据对对应的待累加数据,最后对每个输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到每个输入权重数据对集合对应的累加结果,从而实现了将神经网络中的数据与第一存储器建立映射关系,并且利用预先设置的乘积数据从第一存储器中存储的输入权重对进行反向搜索,根据搜索结果对乘积数据进行累加,避免了加法树的使用,减少了资源占用量,同时反向搜索过程可以利用神经网络中的数据的稀疏性,减少累加操作的功耗。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是本公开所适用的系统架构图。
图2是本公开一示例性实施例提供的存内乘加计算方法的流程示意图。
图3是本公开的实施例的存内乘加计算方法的一个将输入权重数据对存入第一存储区的示意图。
图4是本公开另一示例性实施例提供的存内乘加计算方法的流程示意图。
图5是本公开另一示例性实施例提供的存内乘加计算方法的流程示意图。
图6是本公开另一示例性实施例提供的存内乘加计算方法的流程示意图。
图7是本公开的实施例的存内乘加计算方法的一个应用场景的示意图。
图8是本公开一示例性实施例提供的存内乘加计算装置的结构示意图。
图9是本公开另一示例性实施例提供的存内乘加计算装置的结构示意图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
申请概述
经典的基于模拟电路的存内计算需要复杂的外围电路,如ADC(Analog-to-digital converter,模数转换器)/DAC(Digital-to-analog converter,数模转换器),灵敏放大器等;基于数字电路的存内计算架构可能对存储电路有较大的干扰,并且频繁地对字/位线充/放电,这样导致了功耗的增大与不在预期内的错误的频发的可能性。
示例性架构
图1示出了可以应用本公开的实施例的存内乘加计算方法或存内乘加计算装置的示例性系统架构100。
如图1所示,系统架构100可以包括控制器101、第一存储区102、第二存储区103、累加器104、寄存器105等。
控制器101用于执行存内乘加计算方法,相应的,存内乘加计算装置可以设置于控制器101中。如图1所示,控制器101可以向第一存储区102、第二存储区103、累加器104、寄存器105发送相应的控制命令,图中的虚线表示控制命令的流向。
第一存储区102用于存储神经网络中的输入权重数据对,第二存储区103用于存储预先设置的乘积数据,累加器用于104对反向搜索所确定的乘积数据进行累加,寄存器105用于暂时存储从第二存储区提取的乘积数据等。图中的实线表示数据的流向。
应该理解,图1中的控制器101、第一存储区102、第二存储区103、累加器104、寄存器105。根据实现需要,可以具有任意数目的控制器101、第一存储区102、第二存储区103、累加器104、寄存器105。图1中的控制器101、第一存储区102、第二存储区103、累加器104、寄存器105可以设置在一个芯片中,也可以设置在不同的芯片中。
示例性方法
图2是本公开一示例性实施例提供的存内乘加计算方法的流程示意图。本实施例可应用在如图1所示的系统架构上,该存内乘加计算方法可以由如图1所示的控制器101执行。如图2所示,该方法包括如下步骤:
步骤201,从预设的神经网络获取目标数量个输入权重数据对集合。
在本实施例中,控制器101可以从预设的神经网络获取目标数量个输入权重数据对集合。其中,输入权重数据对包括输入数据和权重数据,输入数据为输入神经网络中的各层(例如卷积层)的数据(例如特征数据),输入数据可以是从外界直接输入神经网络的数据,也可以是在神经网络内部的上一层网络输入下一层网络的数据。权重数据是用于与输入数据相乘的数据,例如神经网络的各卷积层包括多个通道的特征图(feature map)和对应的卷积核,卷积核通常为预设大小的矩阵,该矩阵中的数据即为权重数据。输入数据和权重数据相乘的过程通常为滑动窗口在特征图上滑动的过程。通常,每个输入权重数据对集合包括的输入数据和权重数据为滑动窗口覆盖的输入数据和滑动窗口内的权重数据。
上述目标数量可以是手动设置的数量,也可以是由控制器101自动计算得到的数量。例如,目标数量可以是基于滑动窗口对一个或多个完整的特征图进行计算时所需滑动的次数。
步骤202,生成输入权重数据对集合中的输入权重数据对分别对应的编码。
在本实施例中,控制器101可以生成输入权重数据对集合中的输入权重数据对分别对应的编码。其中,编码与输入权重数据对和相应的乘积相对应。通过编码可以查找到对应的输入权重数据对和乘积数据。编码可以是通过任意设定的方式生成。作为示例,可以对第二存储区中存储的每个乘积数据设置序号,每个序号同时对应于一个输入权重数据对。如下表1所示,其示出了2比特位宽度的输入权重数据对对应的编码和乘积数据。
表1
编码 | 输入权重数据对(十进制) | 对应的乘积数据 |
1 | 0-0,0-1,1-0,0-2,2-0,0-3,3-0 | 0 |
2 | 1-1 | 1 |
3 | 1-2,2-1 | 2 |
4 | 1-3,3-1 | 3 |
5 | 2-2 | 4 |
6 | 2-3,3-2 | 6 |
7 | 3-3 | 9 |
步骤203,将目标数量个输入权重数据对集合存入预设的第一存储区。
在本实施例中,控制器101可以将目标数量个输入权重数据对集合存入预设的第一存储区。其中,第一存储区可以为预先设置的存储单元阵列。存储单元阵列的类型可以为各种。例如现有的TCAM(ternary content addressable memory,三态内容寻址存储器)。TCAM中每个比特位有三种状态,除掉“0”和“1”外,还有一个不确定状态,所以称为“三态”,它是通过掩码来实现的,正是TCAM的这个第三种状态特征使其既能进行精确匹配查找,又能进行模糊匹配查找。
步骤204,对于预设的用于存储乘积数据的第二存储区中的每个乘积数据,基于该乘积数据对应的编码,确定第一存储区中是否存在对应于该乘积数据的目标输入权重数据对,如果存在,将该乘积数据确定为目标输入权重数据对对应的待累加数据。
在本实施例中,对于预设的用于存储乘积数据的第二存储区中的每个乘积数据,控制器101可以基于该乘积数据对应的编码,确定第一存储区中是否存在对应于该乘积数据的目标输入权重数据对,如果存在,将该乘积数据确定为目标输入权重数据对对应的待累加数据。
其中,第二存储区可以为预先设置的存储单元阵列。存储单元阵列的类型可以为各种。例如,第二存储区可以是现有的LUT(Look-Up-Table,查找表)存储单元阵列。
如上述表1所示,控制器101可以根据当前提取的乘积数据对应的编码,从第一存储区中查找对应的输入权重数据对。
步骤205,对于目标数量个输入权重数据对集合中的每个输入权重数据对集合,对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到该输入权重数据对集合对应的累加结果。
在本实施例中,对于目标数量个输入权重数据对集合中的每个输入权重数据对集合,控制器101可以对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到该输入权重数据对集合对应的累加结果。
具体地,每个输入权重数据对集合可以对应于一个累加器,累加器可以将输入权重数据对集合包括的输入权重数据对分别对应的乘积数据累加,得到累加结果。作为示例,每个输入权重数据对集合可以包括在卷积运算时一个窗口对应的输入数据和权重数据的集合,每个累加结果即是一次卷积运算的结果。多个输入权重数据对集合对应于一个通道的特征图,则各个累加结果可以作为该通道输出的数据,输出的数据可以作为下一层网络的输入数据。
本公开的上述实施例提供的方法,通过从预设的神经网络获取目标数量个输入权重数据对集合,并生成输入权重数据对对应的编码,然后将目标数量个输入权重数据对集合存入预设的第一存储区,接着根据第二存储区中的每个乘积数据对应的编码,确定第一存储区中是否存在对应的目标输入权重数据对,如果存在,将乘积数据确定为目标输入权重数据对对应的待累加数据,最后对每个输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到每个输入权重数据对集合对应的累加结果,从而实现了将神经网络中的数据与第一存储器建立映射关系,并且利用预先设置的乘积数据从第一存储器中存储的输入权重对进行反向搜索,根据搜索结果对乘积数据进行累加,避免了加法树的使用,减少了资源占用量,同时反向搜索过程可以利用神经网络中的数据的稀疏性,减少累加操作的功耗。
在一些可选的实现方式中,上述步骤201可以如下执行:
执行目标数量次如下步骤,得到目标数量个输入权重数据对集合:
基于神经网络中的权重窗口的大小和移动步长,从输入神经网络中的输入数据中确定权重窗口覆盖的输入数据和权重窗口中的权重数据组成输入权重数据对集合。
如图3所示,当前待进行卷积运算的特征图301的大小为4×4,权重窗口302(即卷积核)的大小为3×3,若移动步长为1,则根据滑动窗口的规则,可以得到多个个输入权重数据对集合,每个输入权重数据对集合包括特征图中被滑动窗口覆盖的9个输入数据和权重窗口中的9个权重数据。图3中,303为某次卷积运算时滑动窗口的位置,其对应的输入权重数据对集合存储在如304所示的数据存储阵列(即第一存储区)中的位置。305为另一次卷积运算时滑动窗口的位置,其对应的输入权重数据对集合存储在如304所示的数据存储阵列中的位置。
需要说明的是,上述示例中的9个输入权重数据对集合是一个通道的数据,根据实际需要,可以将目标数量个输入权重数据对集合设置为多个通道的数据。若当前存入第一存储区的目标数量个输入权重数据对集合的乘加计算完毕,再从神经网络中提取一定数量的输入权重数据对集合,从而完成神经网络的卷积运算。
本实现方式通过基于神经网络的滑动窗口的滑动规则,将输入权重数据对进行分组,可以实现将神经网络中的数据流与第一存储区建立映射关系,充分利用卷积运算的特点,将输入权重数据对相应地存入第一存储区,进而有利于根据乘积数据快速查找到对应的输入权重数据对,提高神经网络运算的效率。
在一些可选的实现方式中,步骤202可以包括如下子步骤:
首先,从目标数量个输入权重数据对集合包括的输入权重数据对中,确定不包含零的输入权重数据对。
然后,生成不包含零的输入权重数据对对应的编码。
作为示例,如上述表1所示,第一行内的各个输入权重数据对均包括0,其对应的乘积数据均为0,因此,第一行内的各个输入权重数据对不进行编码,只对第2-7行的输入权重数据对进行编码。
本实现方式通过对乘积为零的输入权重数据对不进行编码,可以在根据乘积数据进行反向查找输入权重数据对时,不对在进行乘加运算时无意义的乘积为零的输入权重数据对进行查找,从而有效地利用了神经网络中的数据的稀疏性,减少了累加过程中的能量消耗,提高了乘加运算的速度。
在一些可选的实现方式中,如图4所示,第二存储区预先基于如下步骤设置:
步骤401,确定神经网络中的输入数据和权重数据的比特位数。
步骤402,根据输入数据和权重数据的比特位数对应的数据范围,生成乘积数据集合,并生成乘积数据集合中的乘积数据的编码。
步骤403,将乘积数据集合存入第二存储区。
作为示例,如上述表1所示,若输入数据和权重数据的比特位数为2,即输入数据和权重数据的数据范围为0-3,则乘积数据的数据范围为0-9,生成每个乘积数据的编码如表1所示。
若输入数据和权重数据的比特位数为4,即输入数据和权重数据的数据范围为0-15,则乘积数据的数据范围为0-225,进一步生成每个乘积数据的编码。虽然输入数据和权重数据的组合有256种情况,但由于同一个乘积数据可能对应于多个输入权重数据对,因此第二存取内存储的乘积数据各不相同,总数量小于256,这样可以压缩乘积数据占用的空间。
本实现方式根据输入数据和权重数据的比特位数的数据范围,生成所有可能的乘积,并为每个乘积数据设置编码,从而可以实现将第二存储区的乘积数据反映输入数据和权重数据的乘积的所有情况,有助于利用反向查找的方式准确地确定第一存储区的每个输入权重数据对的乘积,提高乘加运算的准确性。
在一些可选的实现方式中,乘积数据集合不包括零。即第二存储区内不存储零,且不为零设置编码,从而在反向查找输入权重数据对时跳过对零的查找,进而有效利用数据的稀疏性特征,减少累加过程中的能量消耗。
在一些可选的实现方式中,如图5所示,步骤203可以如下执行:
步骤2031,确定原始输入数据和原始权重数据的比特位数。
其中,原始输入数据和原始权重数据是神经网络中的待存入第一存储区的数据。
步骤2032,若原始输入数据和原始权重数据的比特位数大于第一存储区中的数据存储单元支持的比特位数,将原始输入数据拆分为至少两个输入子数据,以及将原始权重数据拆分为至少两个权重子数据。
作为示例,原始输入数据和原始权重数据的比特位数为16位,而第一存储区中的数据存储单元支持的比特位数为8位,则可以将16位的原始输入数据和原始权重数据分别拆分为高8位数据(MSB)和低8位数据(LSB)。原始输入数据的MSB和LSB即为输入子数据,原始权重数据的MSB和LSB即为权重子数据。
步骤2033,根据预设的、用于表示乘法运算的规则,确定输入子数据和权重子数据的对应关系。
根据乘法运算的规则,若将两个数分别拆分后,在相乘时需要对拆分后的子数据两两相乘。例如,将原始输入数据A拆分为A1(MSB)和A2(LSB),将原始权重数据B拆分为B1(MSB)和B2(LSB),则可以得到四组对应的子数据,分别为:A1-B1,A1-B2,A2-B1,A2-B2。
步骤2034,将相对应的输入子数据和权重子数据作为输入权重数据对存入第一存储区。
继续上述示例,A1-B1、A1-B2、A2-B1、A2-B2即为存入第一存储区的四个输入权重数据对。
本实现方式通过将原始输入数据和原始权重数据进行拆分,根据乘法运算的规则将相对应的子数据作为输入权重数据对存入第一存储区,可以实现使第一存储区能够支持更多类型的数据,在乘加运算时,能够支持更高精度数据的计算。由于当精度扩大时,只带来储存和计算时间的相应倍数的增加,不增加控制的冗余,所以只需要增加极少量的索引逻辑,即只需进行多次针对较低精度的运算过程即可,大大扩展了第一存储区的适用场景。
在一些可选的实现方式中,如图6所示,基于上述图5对应实施例,步骤205中,对于目标数量个输入权重数据对集合中的每个输入权重数据对集合,可以按照如下子步骤对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作:
步骤2051,从该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据中,确定对应于同一对原始输入数据和原始权重数据的至少两个待累加数据。
继续上述图5对应实施例中的示例,通过执行步骤204中的反向查找过程,可以确定输入权重数据对A1-B1、A1-B2、A2-B1、A2-B2分别对应的乘积M1、M2、M3、M4为待累加数据,这四个待累加数据即为原始输入数据A和原始权重数据B对应的待累加数据。
步骤2052,基于乘法运算的规则,对所确定的至少两个待累加数据进行移位累加,得到对应于同一对原始输入数据和原始权重数据的乘积。
具体地,拆分后的子数据相乘时,由于是直接相乘,没有考虑到拆分造成的子数据的在原始数据中的系数发生了改变,因此,需要在累加时进行移位。
继续上述示例,按照乘法运算的规则,原始输入数据A和原始权重数据B相乘的运算过程如下式所示:
A*B=(a*A1+A2)*(b*B1+B2)=a*A1*b*B1+a*A1*B2+A2*b*B1+A2*B2
=a*b*M1+a*M2+b*M3+M4
由上式可知,在累加过程中,需要首先将M1、M2、M3乘以相应的系数,由于A和B为二进制数据,所以乘以倍数可以通过将M1、M2、M3移位来实现。
步骤2053,对所得到的乘积进行累加,得到该输入权重数据对集合对应的累加结果。
由步骤2052,可以得到一个输入权重数据对集合对应的多个原始输入数据和对应的权重数据的乘积,对这些乘积累加,得到该输入权重数据对集合对应的累加结果。例如,当该输入权重数据对集合对应于神经网络中的某个通道的权重窗口和权重窗口覆盖的输入数据,且覆盖的输入数据和权重窗口中的数据为高精度数据(即比特位数较多)时,通过拆分原始数据,可以得到覆盖的输入数据和权重窗口的累加结果作为乘加结果。
本实现方式通过基于乘法运算的规则,将对应于同一原始输入数据和原始权重数据的多个乘积数据进行移位累加,可以得到较多比特位的原始输入数据和原始权重数据的乘加结果,该实现方式只需要在处理较多比特位的数据时,增加少量的索引逻辑和移位累加操作即可完成乘加过程,大大扩展了该方法的适用场景,提高了对较多比特位的数据的处理效率。
下面参见图7,图7是根据本实施例的存内乘加计算方法的应用场景的一个示意图。在图7的应用场景中,第一存储区为预设的TCAM阵列(如图中的701所示),其内存储有多个输入权重数据对集合,每个输入权重数据对集合包括神经网络在进行卷积运算时,权重窗口当前覆盖的输入数据和权重窗口内的权重数据。第二存储区为预设的4b-LUT阵列(如图中的702所示),即存储的是4比特数据相乘的乘积。其内存储有预先设置的乘积数据。由于第一存储区701内的数据为4比特数据,因此,乘积数据的范围为1-225,其中不包括0。
当前,控制器703按照顺序提取出第二存储区702内的乘积数据“9”,并将“9”存入寄存器704中。然后,控制器根据“9”对应的编码“7”,从第一存储区701查找对应的输入权重数据对。如图7所示,查找到两个输入权重数据对与编码“7”对应,这两个匹配行输出信号1,其他不匹配行输出信号0。控制器703根据输出的信号1,将匹配行对应的乘积数据“9”输入相应的累加器(如图中的7051、7052所示)。经过反复执行上述过程,将每个乘积结果均与第一存储区701进行匹配,最终得到每个输入权重数据对集合对应的累加结果。多个累加结果可以组成向下一层网络输入的输入数据,控制器703可以针对下一层网络继续执行该方法。
示例性装置
图8是本公开一示例性实施例提供的存内乘加计算装置的结构示意图。本实施例可应用在如图1所示的控制器101上,如图8所示,存内乘加计算装置包括:获取模块801,用于从预设的神经网络获取目标数量个输入权重数据对集合;生成模块802,用于生成输入权重数据对集合中的输入权重数据对分别对应的编码;存储模块803,用于将目标数量个输入权重数据对集合存入预设的第一存储区;确定模块804,用于对于预设的用于存储乘积数据的第二存储区中的每个乘积数据,基于该乘积数据对应的编码,确定第一存储区中是否存在对应于该乘积数据的目标输入权重数据对,如果存在,将该乘积数据确定为目标输入权重数据对对应的待累加数据;累加模块805,用于对于目标数量个输入权重数据对集合中的每个输入权重数据对集合,对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到该输入权重数据对集合对应的累加结果。
在本实施例中,获取模块801可以从预设的神经网络获取目标数量个输入权重数据对集合。其中,输入权重数据对包括输入数据和权重数据,输入数据为输入神经网络中的各层(例如卷积层)的数据(例如特征数据),输入数据可以是从外界直接输入神经网络的数据,也可以是在神经网络内部的上一层网络输入下一层网络的数据。权重数据是用于与输入数据相乘的数据,例如神经网络的各卷积层包括多个通道的特征图(feature map)和对应的卷积核,卷积核通常为预设大小的矩阵,该矩阵中的数据即为权重数据。输入数据和权重数据相乘的过程通常为滑动窗口在特征图上滑动的过程。通常,每个输入权重数据对集合包括的输入数据和权重数据为滑动窗口覆盖的输入数据和滑动窗口内的权重数据。
上述目标数量可以是手动设置的数量,也可以是由控制器101自动计算得到的数量。例如,目标数量可以是基于滑动窗口对一个或多个完整的特征图进行计算时所需滑动的次数。
在本实施例中,生成模块802可以生成输入权重数据对集合中的输入权重数据对分别对应的编码。其中,编码与输入权重数据对和相应的乘积相对应。通过编码可以查找到对应的输入权重数据对和乘积数据。编码可以是通过任意设定的方式生成。作为示例,可以对第二存储区中存储的每个乘积数据设置序号,每个序号同时对应于一个输入权重数据对。
在本实施例中,存储模块803可以将目标数量个输入权重数据对集合存入预设的第一存储区。其中,第一存储区可以为预先设置的存储单元阵列。存储单元阵列的类型可以为各种。例如现有的TCAM(ternary content addressable memory,三态内容寻址存储器)。TCAM中每个比特位有三种状态,除掉“0”和“1”外,还有一个不确定状态,所以称为“三态”,它是通过掩码来实现的,正是TCAM的这个第三种状态特征使其既能进行精确匹配查找,又能进行模糊匹配查找。
在本实施例中,对于预设的用于存储乘积数据的第二存储区中的每个乘积数据,确定模块804可以基于该乘积数据对应的编码,确定第一存储区中是否存在对应于该乘积数据的目标输入权重数据对,如果存在,将该乘积数据确定为目标输入权重数据对对应的待累加数据。
其中,第二存储区可以为预先设置的存储单元阵列。存储单元阵列的类型可以为各种。例如,第二存储区可以是现有的LUT(Look-Up-Table,查找表)存储单元阵列。
如上述表1所示,确定模块804可以根据当前提取的乘积数据对应的编码,从第一存储区中查找对应的输入权重数据对。
在本实施例中,对于目标数量个输入权重数据对集合中的每个输入权重数据对集合,累加模块805可以对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到该输入权重数据对集合对应的累加结果。
具体地,每个输入权重数据对集合可以对应于一个累加器,累加器可以将输入权重数据对集合包括的输入权重数据对分别对应的乘积数据累加,得到累加结果。作为示例,每个输入权重数据对集合可以包括在卷积运算时一个窗口对应的输入数据和权重数据的集合,每个累加结果即是一次卷积运算的结果。多个输入权重数据对集合对应于一个通道的特征图,则各个累加结果可以作为该通道输出的数据,输出的数据可以作为下一层网络的输入数据。
参照图9,图9是本公开另一示例性实施例提供的存内乘加计算装置的结构示意图。
在一些可选的实现方式中,获取模块801进一步用于:执行目标数量次如下步骤,得到目标数量个输入权重数据对集合:基于神经网络中的权重窗口的大小和移动步长,从输入神经网络中的输入数据中确定权重窗口覆盖的输入数据和权重窗口中的权重数据组成输入权重数据对集合。
在一些可选的实现方式中,生成模块802包括:第一确定单元8021,用于从目标数量个输入权重数据对集合包括的输入权重数据对中,确定不包含零的输入权重数据对;生成单元8022,用于生成不包含零的输入权重数据对对应的编码。
在一些可选的实现方式中,第二存储区预先基于如下步骤设置:确定神经网络中的输入数据和权重数据的比特位数;根据输入数据和权重数据的比特位数对应的数据范围,生成乘积数据集合,并生成乘积数据集合中的乘积数据的编码;将乘积数据集合存入第二存储区。
在一些可选的实现方式中,乘积数据集合不包括零。
在一些可选的实现方式中,存储模块803包括:第二确定单元8031,用于确定原始输入数据和原始权重数据的比特位数;拆分单元8032,用于若原始输入数据和原始权重数据的比特位数大于第一存储区中的数据存储单元支持的比特位数,将原始输入数据拆分为至少两个输入子数据,以及将原始权重数据拆分为至少两个权重子数据;第三确定单元8033,用于根据预设的、用于表示乘法运算的规则,确定输入子数据和权重子数据的对应关系;存储单元8034,用于将相对应的输入子数据和权重子数据作为输入权重数据对存入第一存储区。
在一些可选的实现方式中,累加模块805包括:第四确定单元8051,用于从该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据中,确定对应于同一对原始输入数据和原始权重数据的至少两个待累加数据;移位累加单元8052,用于基于乘法运算的规则,对所确定的至少两个待累加数据进行移位累加,得到对应于同一对原始输入数据和原始权重数据的乘积;累加单元8053,用于对所得到的乘积进行累加,得到该输入权重数据对集合对应的累加结果。
本公开上述实施例提供的存内乘加计算装置,通过从预设的神经网络获取目标数量个输入权重数据对集合,并生成输入权重数据对对应的编码,然后将目标数量个输入权重数据对集合存入预设的第一存储区,接着根据第二存储区中的每个乘积数据对应的编码,确定第一存储区中是否存在对应的目标输入权重数据对,如果存在,将乘积数据确定为目标输入权重数据对对应的待累加数据,最后对每个输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到每个输入权重数据对集合对应的累加结果,从而实现了将神经网络中的数据与第一存储器建立映射关系,并且利用预先设置的乘积数据从第一存储器中存储的输入权重对进行反向搜索,根据搜索结果对乘积数据进行累加,避免了加法树的使用,减少了资源占用量,同时反向搜索过程可以利用神经网络中的数据的稀疏性,减少累加操作的功耗。
本公开的实施例还提供了一种芯片,该芯片包括控制器、第一存储区、第二存储区、累加器和寄存器,其中,控制器用于执行上述存内乘加计算方法,第一存储区用于存储输入权重数据对,第二存储区用于存储乘积数据,寄存器用于接收从第二存储区提取的乘积数据,累加器用于对寄存器中的乘积数据进行累加。
控制器、第一存储区、第二存储区、累加器和寄存器的结构关系可以如图1所述,关于存内乘加计算方法的技术细节如图2-图7和相关描述所示,此处不再展开描述。
本公开的实施例还提供了一种计算设备,该计算设备包括上述实施例描述的芯片。此外,该计算设备还可以包括输入装置、输出装置以及必要的存储器等。其中,输入装置可以包括诸如鼠标、键盘、触控屏、通信网络连接器等,用于输入神经网络所处理的数据等。输出装置可以包括诸如显示器、打印机、以及通信网络及其所连接的远程输出设备等等,用于输出上述实施例描述的累加结果等。存储器用于存储上述输入装置输入的数据,以及存内乘加计算方法运行过程中产生的数据。存储器可以包括易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。
Claims (10)
1.一种存内乘加计算方法,包括:
从预设的神经网络获取目标数量个输入权重数据对集合,输入权重数据对集合中的输入权重数据对包括输入数据和权重数据,所述输入数据为输入预设的神经网络中的各层的数据,所述权重数据为用于与所述输入数据相乘的数据;
生成输入权重数据对集合中的输入权重数据对分别对应的编码;
将所述目标数量个输入权重数据对集合存入预设的第一存储区,所述预设的第一存储区为预先设置的存储单元阵列;
对于预设的用于存储乘积数据的第二存储区中的每个乘积数据,基于该乘积数据对应的编码,确定所述第一存储区中是否存在对应于该乘积数据的目标输入权重数据对,如果存在,将该乘积数据确定为所述目标输入权重数据对对应的待累加数据,所述预设的第二存储区为预先设置的存储单元阵列;
对于所述目标数量个输入权重数据对集合中的每个输入权重数据对集合,对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到该输入权重数据对集合对应的累加结果。
2.根据权利要求1所述的方法,其特征在于,所述从预设的神经网络获取目标数量个输入权重数据对集合,包括:
执行目标数量次如下步骤,得到所述目标数量个输入权重数据对集合:
基于所述神经网络中的权重窗口的大小和移动步长,从输入所述神经网络中的输入数据中确定所述权重窗口覆盖的输入数据和所述权重窗口中的权重数据组成输入权重数据对集合。
3.根据权利要求1所述的方法,其特征在于,所述生成输入权重数据对集合中的输入权重数据对分别对应的编码,包括:
从所述目标数量个输入权重数据对集合包括的输入权重数据对中,确定不包含零的输入权重数据对;
生成所述不包含零的输入权重数据对对应的编码。
4.根据权利要求1所述的方法,其特征在于,所述第二存储区预先基于如下步骤设置:
确定所述神经网络中的输入数据和权重数据的比特位数;
根据所述输入数据和权重数据的比特位数对应的数据范围,生成乘积数据集合,并生成所述乘积数据集合中的乘积数据的编码;
将所述乘积数据集合存入所述第二存储区。
5.根据权利要求4所述的方法,其特征在于,所述乘积数据集合不包括零。
6.根据权利要求1所述的方法,其特征在于,所述将所述目标数量个输入权重数据对集合存入预设的第一存储区,包括:
确定原始输入数据和原始权重数据的比特位数;
若所述原始输入数据和所述原始权重数据的比特位数大于所述第一存储区中的数据存储单元支持的比特位数,将所述原始输入数据拆分为至少两个输入子数据,以及将所述原始权重数据拆分为至少两个权重子数据;
根据预设的、用于表示乘法运算的规则,确定输入子数据和权重子数据的对应关系;
将相对应的输入子数据和权重子数据作为输入权重数据对存入所述第一存储区。
7.根据权利要求6所述的方法,其特征在于,所述对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,包括:
从该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据中,确定对应于同一对原始输入数据和原始权重数据的至少两个待累加数据;
基于所述乘法运算的规则,对所确定的至少两个待累加数据进行移位累加,得到对应于同一对原始输入数据和原始权重数据的乘积;
对所得到的乘积进行累加,得到该输入权重数据对集合对应的累加结果。
8.一种存内乘加计算装置,包括:
获取模块,用于从预设的神经网络获取目标数量个输入权重数据对集合,输入权重数据对集合中的输入权重数据对包括输入数据和权重数据,所述输入数据为输入预设的神经网络中的各层的数据,所述权重数据为用于与所述输入数据相乘的数据;
生成模块,用于生成输入权重数据对集合中的输入权重数据对分别对应的编码;
存储模块,用于将所述目标数量个输入权重数据对集合存入预设的第一存储区,所述预设的第一存储区为预先设置的存储单元阵列;
确定模块,用于对于预设的用于存储乘积数据的第二存储区中的每个乘积数据,基于该乘积数据对应的编码,确定所述第一存储区中是否存在对应于该乘积数据的目标输入权重数据对,如果存在,将该乘积数据确定为所述目标输入权重数据对对应的待累加数据,所述预设的第二存储区为预先设置的存储单元阵列;
累加模块,用于对于所述目标数量个输入权重数据对集合中的每个输入权重数据对集合,对该输入权重数据对集合包括的输入权重数据对分别对应的待累加数据进行累加操作,得到该输入权重数据对集合对应的累加结果。
9.一种芯片,其特征在于,包括控制器、第一存储区、第二存储区、累加器和寄存器,其中,所述控制器用于执行权利要求1-7中任一项所述的存内乘加计算方法,所述第一存储区用于存储输入权重数据对,所述第二存储区用于存储乘积数据,所述寄存器用于接收从第二存储区提取的乘积数据,所述累加器用于对所述寄存器中的乘积数据进行累加。
10.一种计算设备,其特征在于,包括根据权利要求9所述的芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111040577.1A CN113741858B (zh) | 2021-09-06 | 2021-09-06 | 存内乘加计算方法、装置、芯片和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111040577.1A CN113741858B (zh) | 2021-09-06 | 2021-09-06 | 存内乘加计算方法、装置、芯片和计算设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113741858A CN113741858A (zh) | 2021-12-03 |
CN113741858B true CN113741858B (zh) | 2024-04-05 |
Family
ID=78736242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111040577.1A Active CN113741858B (zh) | 2021-09-06 | 2021-09-06 | 存内乘加计算方法、装置、芯片和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113741858B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114239818B (zh) * | 2021-12-23 | 2023-04-18 | 电子科技大学 | 基于tcam和lut的存内计算架构神经网络加速器 |
CN114937470B (zh) * | 2022-05-20 | 2023-04-07 | 电子科技大学 | 基于多比特sram单元的定点全精度存内计算电路 |
CN116070685B (zh) * | 2023-03-27 | 2023-07-21 | 南京大学 | 一种存内计算单元、存算阵列及存算芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111523658A (zh) * | 2020-07-02 | 2020-08-11 | 南京优存科技有限公司 | 双位存储单元及其在存内计算的电路结构 |
CN111694544A (zh) * | 2020-06-02 | 2020-09-22 | 杭州知存智能科技有限公司 | 多位复用乘加运算装置、神经网络运算系统以及电子设备 |
CN112487750A (zh) * | 2020-11-30 | 2021-03-12 | 西安微电子技术研究所 | 一种基于存内计算的卷积加速计算系统及方法 |
CN112711394A (zh) * | 2021-03-26 | 2021-04-27 | 南京后摩智能科技有限公司 | 基于数字域存内计算的电路 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11061646B2 (en) * | 2018-09-28 | 2021-07-13 | Intel Corporation | Compute in memory circuits with multi-Vdd arrays and/or analog multipliers |
-
2021
- 2021-09-06 CN CN202111040577.1A patent/CN113741858B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111694544A (zh) * | 2020-06-02 | 2020-09-22 | 杭州知存智能科技有限公司 | 多位复用乘加运算装置、神经网络运算系统以及电子设备 |
CN111523658A (zh) * | 2020-07-02 | 2020-08-11 | 南京优存科技有限公司 | 双位存储单元及其在存内计算的电路结构 |
CN112487750A (zh) * | 2020-11-30 | 2021-03-12 | 西安微电子技术研究所 | 一种基于存内计算的卷积加速计算系统及方法 |
CN112711394A (zh) * | 2021-03-26 | 2021-04-27 | 南京后摩智能科技有限公司 | 基于数字域存内计算的电路 |
Also Published As
Publication number | Publication date |
---|---|
CN113741858A (zh) | 2021-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113741858B (zh) | 存内乘加计算方法、装置、芯片和计算设备 | |
US11574031B2 (en) | Method and electronic device for convolution calculation in neural network | |
US20190188237A1 (en) | Method and electronic device for convolution calculation in neutral network | |
US11727276B2 (en) | Processing method and accelerating device | |
CN109635944B (zh) | 一种稀疏卷积神经网络加速器及实现方法 | |
EP3451165B1 (en) | Neural network operation device and method supporting few-bit floating-point number | |
Lin et al. | Learning the sparsity for ReRAM: Mapping and pruning sparse neural network for ReRAM based accelerator | |
CN112257844B (zh) | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 | |
CN110780923A (zh) | 应用于二值化卷积神经网络的硬件加速器及其数据处理方法 | |
CN111026544A (zh) | 图网络模型的节点分类方法、装置及终端设备 | |
EP3637327A1 (en) | Computing device and method | |
CN111814973A (zh) | 一种适用于神经常微分方程网络计算的存内计算系统 | |
WO2023116923A1 (zh) | 一种存算一体装置和计算方法 | |
CN111008691B (zh) | 一种权值和激活值都二值化的卷积神经网络加速器架构 | |
CN114138231B (zh) | 执行矩阵乘法运算的方法、电路及soc | |
CN113377332B (zh) | 一种基于线性分段的softmax硬件实现方法 | |
Zhan et al. | Field programmable gate array‐based all‐layer accelerator with quantization neural networks for sustainable cyber‐physical systems | |
Hsiao et al. | Sparsity-aware deep learning accelerator design supporting CNN and LSTM operations | |
Azizi et al. | Sensitivity-aware mixed-precision quantization and width optimization of deep neural networks through cluster-based tree-structured parzen estimation | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
CN114997389A (zh) | 一种卷积计算方法、ai芯片及电子设备 | |
Li et al. | Downscaling and overflow-aware model compression for efficient vision processors | |
CN114492778A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN112766477B (zh) | 神经网络运算电路 | |
CN112949830B (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 |