1.本公开是有关于一种运算方法及装置,且特别是有关于一种存储器内运算方法及装置。
背景技术:
2.传统的运算系统在执行数据密集应用(data-intensive application)时,需要进行大量运算,且需要在处理器与存储器之间频繁地移动数据。其中,执行大量运算将导致系统效能降低,而大量的数据移动则会造成高功率消耗。
3.为了解决上述效能限制及功率消耗的问题,近年来有人提出了新的算法及/或存储器架构,其中包括最邻近搜索(nearest neighbor search)、决策树学习(decision tree learning)、分散式系统、存储器内计算(in-memory computing)等。然而,决策树学习仍需要大量的数据搬移、分散式系统存在成本过高及装置间沟通的问题,存储器内计算则无法支持复杂运算。
4.公开内容
5.鉴于上述内容,本公开提供一种能够增进运算系统效能的存储器内运算方法及存储器内运算装置。
6.本公开提供一种存储器内运算方法,适于处理器对存储器进行乘加(mac)运算。所述存储器包括彼此交叉的多个输入线及多个输出线,分别配置于输入线及输出线的相交点处的多个存储单元,以及分别连接至输出线的多个感测放大器。所述方法包括下列步骤:对待写入输入线及存储单元的输入数据及权重数据分别进行预处理,以区分为主要部分及次要部分;将被区分为主要部分及次要部分的输入数据及权重数据,分批写入输入线及存储单元以进行乘加运算,获得多笔运算结果;根据各运算结果的数值大小滤除运算结果;以及依据运算结果所对应的部分,对被滤除后的运算结果进行后处理,以获得输出数据。
7.在本公开的一实施例中,所述根据各运算结果的数值大小滤除运算结果的步骤包括滤除数值大小不大于预设门限值的运算结果,以及排序被滤除后的运算结果,并选择排序在前的至少一个运算结果以进行后处理。
8.在本公开的一实施例中,所述方法还包括在对输入数据及权重数据进行预处理时,对输入数据及权重数据进行编码,以及在对被滤除后的运算结果进行后处理时,对运算结果执行对应于编码的加权运算。
9.在本公开的一实施例中,所述对运算结果执行对应于编码的加权运算的步骤包括响应于运算结果对应于输入数据的主要部分及权重数据的主要部分,对运算结果乘上第一权重以获得第一乘积,响应于运算结果对应于输入数据的主要部分及权重数据的次要部分,对运算结果乘上第二权重以获得第二乘积,响应于运算结果对应于输入数据的次要部分及权重数据的主要部分,对运算结果乘上第三权重以获得第三乘积,响应于运算结果对应于输入数据的次要部分及权重数据的次要部分,对运算结果乘上第四权重以获得第四乘积,以及累加对运算结果进行加权运算所得的第一乘积、第二乘积、第三乘积及第四乘积,
并将累加结果作为输出数据输出。
10.本公开提供一种存储器内运算装置,其包括存储器及处理器。所述存储器包括彼此交叉的多个输入线及多个输出线、分别配置于输入线及输出线的相交点处的多个单元,以及分别连接至输出线的多个感测放大器。所述处理器耦接至存储器且被配置为对待写入输入线及存储单元的输入数据及权重数据分别进行预处理,以区分为主要部分及次要部分,将被区分为主要部分及次要部分的输入数据及权重数据,分批写入输入线及存储单元以进行乘加运算,并累加所述感测放大器的感测值以获得多笔运算结果,根据各运算结果的数值大小滤除运算结果,以及依据运算结果所对应的部分,对被滤除后的运算结果进行后处理,以获得输出数据。
11.在本公开的一实施例中,所述主要部分为所处理数据的多位的最高有效位(most significant bit,msb),且所述次要部分为所处理数据的多位的最低有效位(least significant bit,lsb)。
12.在本公开的一实施例中,所述存储器内运算装置还包括过滤器,用以滤除数值大小不大于预设门限值的运算结果,其中处理器包括排序被滤除后的运算结果,并选择排序在前的至少一个运算结果以进行后处理。
13.在本公开的一实施例中,所述处理器包括在对输入数据及权重数据进行预处理时,对输入数据及权重数据进行编码,以及在对被滤除后的运算结果进行后处理时,对运算结果执行对应于编码的加权运算。
14.在本公开的一实施例中,所述处理器包括响应于运算结果对应于输入数据的主要部分及权重数据的主要部分,对运算结果乘上第一权重以获得第一乘积,响应于运算结果对应于输入数据的主要部分及权重数据的次要部分,对运算结果乘上第二权重以获得第二乘积,响应于运算结果对应于输入数据的次要部分及权重数据的主要部分,对运算结果乘上第三权重以获得第三乘积,响应于运算结果对应于输入数据的次要部分及权重数据的次要部分,对运算结果乘上第四权重以获得第四乘积,以及累加对运算结果进行加权运算所得的第一乘积、第二乘积、第三乘积及第四乘积,并将累加结果作为输出数据输出。
15.为使本公开的前述特征及优势更可理解,下文详细描述附图的实施例。
附图说明
16.图1为根据本公开的实施例的存储器内运算装置的示意图。
17.图2为根据本公开的实施例的存储器内运算方法的流程图。
18.图3是根据本公开的实施例的数据编码的示意图。
19.图4是根据本公开的实施例的数据后处理的示意图。
20.附图标记说明
21.10:运算装置
22.12:存储器
23.14:处理器
24.b7~b0、b70~b77、b60~b63:位
25.ili:输入线
26.olj:输出线
27.r
ij
:电阻
28.s202~s208:步骤
29.sa:感测放大器
具体实施方式
30.图1为根据本公开的实施例的存储器内运算装置的示意图。请参考图1,本实施例的存储器内运算装置10为例如忆阻器,所述忆阻器被配置为实现存储器内处理(process-in-memory;pim),适用于人脸搜寻等数据密集应用。运算装置10包括存储器12及处理器14,其功能分述如下:
31.存储器12为例如与非门(nand)快闪存储器、或非门(nor)快闪存储器、相变存储器(phase change memory;pcm)、自旋转移矩随机存取存储器(spin-transfer torque random-access memory;stt-ram),或2d或3d结构的电阻式随机存取存储器(reram),此在本文中不受限制。在一些实施例中,可整合各种易失性存储器,诸如静态随机存取存储器(static random access memory;sram)、动态随机存取存储器(dynamic random access memory;dram),以及各种非易失性存储器,诸如reram、pcm、快闪、磁阻性ram、铁电ram,以进行存储器内运算,此在本文中不受限制。
32.存储器12包括彼此交叉的多个输入线ili及多个输出线olj、分别配置于输入线ili与输出线olj的相交点处的多个存储单元(由电阻r
ij
表示),以及分别连接至输出线olj以用于感测自输出线olj输出的电流ij的多个感测放大器sa。在一些实施例中,输入线ili为字线而输出线olj为位线,且在一些实施例中,输入线ili为位线而输出线olj为字线,此在本文中不受限制。
33.处理器14为例如中央处理单元(central processing unit;cpu)或其他可编程的通用或专用微处理器、微控制器(microcontroller;mcu)、可编程控制器、专用集成电路(application specific integrated circuit;asic)、可编程逻辑装置(programmable logic device;pld)或其他类似装置或此等装置的组合,本实施例不对其限制。在本实施例中,处理器14被配置为执行用于进行存储器内运算的指令。所述的存储器内运算可实施至各种人工智能(artificial intelligent;ai)应用,诸如全连接层、卷积层(convolution layer)、多层感知、支持向量机或使用忆阻器实施的其他应用,此在本文中不受限制。
34.图2为根据本公开的实施例的存储器内运算方法的流程图。请参照图1及图2,本实施例的方法适合于上述存储器内运算装置10,且将在下文参考存储器内运算装置10的各种装置及组件描述本实施例的存储器内运算方法的详细步骤。
35.首先,在步骤s202中,处理器14对待写入输入线及存储单元的输入数据及权重数据分别进行预处理,以区分为主要部分及次要部分。在一实施例中,处理器14是将输入数据区分为多位的最高有效位(most significant bit,msb)及多位的最低有效位(least significant bit,lsb),且将权重数据区分为多位的msb及多位的lsb。在输入数据为8位的情况下,处理器14例如是将输入数据区分为4位的msb及4位的lsb,且将权重数据区分为4位的msb及4位的lsb。在其他情况下,处理器14可根据实施需求,将输入数据及权重数据区分为相同数目或不同数目的一或多位的msb以及一或多位的lsb,本实施例在此不设限。在其他实施例中,处理器14也可以将输入数据中不重要的一或多个位(即,次要部分)遮蔽或滤
除,而仅保留其中的较重要的位(即,主要部分)进行后续运算,本实施例也不设限。
36.在其他实施例中,处理器14可对输入数据及权重数据进行进一步的编码,例如将输入数据或权重数据的多位的msb及多位的lsb从二进制格式(binary format)转换为一元编码(unary code)的数值格式(value format)。处理器14可再将转换后的一元编码进行复制以展开(unfold)为数量积(dot product)格式。
37.举例来说,图3是根据本公开的实施例的数据编码的示意图。请参照图3,本实施例假设有n维待写入的输入数据和权重数据,其中n为正整数,每笔数据具有以二进制表示的8个位b0~b7。以n维输入数据《1》~《n》为例,本实施例将每笔输入数据《1》~《n》区分为msb矢量和lsb矢量,其中msb矢量包括4位msb b7~b4,lsb矢量包括4位lsb b3~b0。接着,将msb矢量和lsb矢量的每个位依数值转换为一元编码,例如将位b7转换为位b70~b77、将位b6转换为b60~b63、将位b5转换为b50~b51,且将位b4维持不变。然后,将转换后的一元编码进行复制以展开为数量积格式,例如将每笔输入数据的msb矢量的转换后的(2
4-1)个一元编码复制(2
4-1)次以展开为225个位,而生成图3所示的展开数量积格式(unfolding dot product,unfdp)的数据。类似地,权重数据也可以上述输入数据的编码方式进行预处理,在此不再赘述。
38.回到图2的流程,在步骤s204中,处理器14将被区分为主要部分及次要部分的输入数据及权重数据,分批写入输入线及存储单元以进行乘加运算,获得多笔运算结果。详细而言,处理器14例如是将被区分为主要部分的权重数据写入存储器12中对应的存储单元,并且将被区分为主要部分的输入数据输入存储器12中对应的输入线ili,以由连接各个输出线olj的感测放大器sa感测自输出线olj输出的电流ij,从而经由计数器(counter)或累加器(accumulator)累加感测放大器sa的感测值而获得所述输入数据与权重数据的乘加运算的运算结果。类似地,处理器14例如是将被区分为主要部分的权重数据写入存储器12中对应的存储单元,并且将被区分为次要部分的输入数据输入存储器12中对应的输入线ili,以获得乘加运算的运算结果;将被区分为次要部分的权重数据写入存储器12中对应的存储单元,并且将被区分为主要部分的输入数据输入存储器12中对应的输入线ili,以获得乘加运算的运算结果;以及将被区分为次要部分的权重数据写入存储器12中对应的存储单元,并且将被区分为次要部分的输入数据输入存储器12中对应的输入线ili,以获得乘加运算的运算结果。
39.在一些实施例中,存储器12还可支持反相(inverse)、逻辑与(and)、逻辑或(or)、互斥或(xor)、互斥或非(xnor)等运算,而不限于乘加运算。此外,存储器12也不限于使用数字电路实现,而可以使用模拟电路实现,本实施例不限制其实现方式。
40.举例来说,在数字电路中,处理器14可将输入数据区分为多位的msb和多位的lsb(不限定位数),并经过不同的编码(即,预处理)方法进行处理后,再送入存储器12以进行反相、逻辑与、逻辑或、互斥或、互斥或非乘加运算或上述运算的组合,最后经过相对应的后处理进行过滤后,即可获得最终的运算结果。在模拟电路中,处理器14可将输入数据中的部分位进行遮蔽或滤除(即,预处理)后,再送入存储器12以进行反相、逻辑与、逻辑或、互斥或、互斥或非乘加运算或上述运算的组合,最后经过相对应的后处理进行过滤后,即可获得最终的运算结果。以上仅为举例说明,处理器14可对输入数据实施任意种类的预处理及后处理,以获得专属的运算结果。
41.在步骤s206中,处理器14根据各运算结果的数值大小滤除运算结果。在一实施例中,存储器内运算装置10例如包括过滤器(未绘示),而用以滤除数值大小不大于预设门限值的运算结果。处理器14则会对被滤除后的运算结果进行排序,并选择排序在前的n笔运算结果进行后处理,所述n例如是3、5、10、20或任意的正整数,在此不设限。
42.在步骤s208中,处理器14依据运算结果所对应的部分,对被滤除后的运算结果进行后处理,以获得输出数据。在一实施例中,处理器14在对输入数据及权重数据进行预处理时,例如是对输入数据及权重数据进行编码,而在对被滤除后的运算结果进行后处理时,则是对运算结果执行对应于该编码的加权运算。
43.详细而言,响应于运算结果是对应于输入数据的主要部分及权重数据的主要部分,处理器14会对运算结果乘上第一权重以获得第一乘积;响应于运算结果对应于输入数据的主要部分及权重数据的次要部分,处理器14会对运算结果乘上第二权重以获得第二乘积;响应于运算结果对应于输入数据的次要部分及权重数据的主要部分,处理器14会对运算结果乘上第三权重以获得第三乘积;响应于运算结果对应于输入数据的次要部分及权重数据的次要部分,处理器14会对运算结果乘上第四权重以获得第四乘积。最终,处理器14会将上述对上运算结果进行加权运算所得的第一乘积、第二乘积、第三乘积及第四乘积进行累加,从而将累加结果作为输出数据输出。
44.举例来说,图4是根据本公开的实施例的数据后处理的示意图。请参照图4,本实施例说明对应于图3的编码方式的后处理。其中,响应于运算结果对应于输入数据的主要部分(即,msb)及权重数据的主要部分,其对应的权重值为16
×
16;响应于运算结果对应于输入数据的主要部分及权重数据的次要部分(即,lsb),其对应的权重值为16
×
1;响应于运算结果对应于输入数据的主要部分及权重数据的主要部分,其对应的权重值为1
×
16;响应于运算结果对应于输入数据的主要部分及权重数据的主要部分,其对应的权重值为1
×
1。通过将分批写入存储器12的输入数据及权重数据所得的运算结果乘上对应的权重值,则可还原出原始输入数据及权重数据的乘加运算的运算结果。
45.待完成每一笔输入数据与权重数据的乘加运算并获得运算结果后,处理器14将回到步骤s204,继续将下一笔输入数据及权重数据写入存储器12以进行乘加运算,直到完成所有输入数据及权重数据的运算结果,而完成存储器内运算。
46.综上所述,本公开实施例的存储器内运算方法及装置系结合存储器内运算及阶层式过滤架构(scheme),通过对待写入存储器的输入数据及权重数据进行预处理,以选择性地删减对数据数值所占比重较低的位(即,lsb)的运算,而优先针对所占比重较高的位(即,msb)进行运算,且通过对运算结果进行过滤,而选择数值较高的运算结果进行相应的数据后处理,最终获得输出数据。因此,可在不过度影响运算结果数值的前提下增进运算系统的效能。
47.尽管已通过上述实施例公开本公开,但实施例并不意欲限制本公开。对于所属技术领域的技术人员将显而易见的是,在不脱离本公开的范围或精神的情况下,可对本公开的结构进行各种修改及改变。因此,本公开的保护范围落入随附权利要求书范围中。
技术特征:
1.一种存储器内运算方法,适于由处理器利用存储器进行乘加运算,其中所述存储器包括彼此交叉的多个输入线及多个输出线,分别配置于所述输入线及所述输出线的相交点处的多个存储单元,以及分别连接至所述输出线的多个感测放大器,所述方法包括:对待写入所述输入线及所述存储单元的输入数据及权重数据分别进行预处理,以区分为主要部分及次要部分;将被区分为所述主要部分及所述次要部分的所述输入数据及所述权重数据,分批写入所述输入线及所述存储单元以进行所述乘加运算,获得多笔运算结果;根据各所述运算结果的数值大小滤除所述运算结果;以及依据所述运算结果所对应的部分,对被滤除后的所述运算结果进行后处理,以获得输出数据。2.根据权利要求1所述的存储器内运算方法,其中所述主要部分为所处理数据的多位的最高有效位,且所述次要部分为所处理数据的多位的最低有效位。3.根据权利要求1所述的存储器内运算方法,其中根据各所述运算结果的数值大小滤除所述运算结果的步骤包括:滤除所述数值大小不大于预设门限值的所述运算结果;以及排序被滤除后的所述运算结果,并选择排序在前的至少一运算结果进行所述后处理。4.根据权利要求1所述的存储器内运算方法,还包括:在对所述输入数据及所述权重数据进行所述预处理时,对所述输入数据及所述权重数据进行编码;以及在对被滤除后的所述运算结果进行所述后处理时,对所述运算结果执行对应于所述编码的加权运算。5.根据权利要求4所述的存储器内运算方法,其中对所述运算结果执行对应于所述编码的所述加权运算的步骤包括:响应于所述运算结果对应于所述输入数据的所述主要部分及所述权重数据的所述主要部分,对所述运算结果乘上第一权重以获得第一乘积;响应于所述运算结果对应于所述输入数据的所述主要部分及所述权重数据的所述次要部分,对所述运算结果乘上第二权重以获得第二乘积;响应于所述运算结果对应于所述输入数据的所述次要部分及所述权重数据的所述主要部分,对所述运算结果乘上第三权重以获得第三乘积;响应于所述运算结果对应于所述输入数据的所述次要部分及所述权重数据的所述次要部分,对所述运算结果乘上第四权重以获得第四乘积;以及累加对所述运算结果进行所述加权运算所得的所述第一乘积、所述第二乘积、所述第三乘积及所述第四乘积,并将累加结果作为所述输出数据输出。6.一种存储器内运算装置,包括:存储器,包括:彼此交叉的多个输入线及多个输出线;多个单元,分别配置于所述输入线及所述输出线的相交点处;以及多个感测放大器,分别连接至所述输出线;处理器,耦接至所述存储器且被配置为:
对待写入所述输入线及所述存储单元的输入数据及权重数据分别进行预处理,以区分为主要部分及次要部分;将被区分为所述主要部分及所述次要部分的所述输入数据及所述权重数据,分批写入所述输入线及所述存储单元以进行所述乘加运算,并累加所述感测放大器的感测值以获得多笔运算结果;根据各所述运算结果的数值大小滤除所述运算结果;以及依据所述运算结果所对应的部分,对被滤除后的所述运算结果进行后处理,以获得输出数据。7.根据权利要求6所述的存储器内运算装置,其中所述主要部分为所处理数据的多位的最高有效位,且所述次要部分为所处理数据的多位的最低有效位。8.根据权利要求6所述的存储器内运算装置,还包括:过滤器,滤除所述数值大小不大于预设门限值的所述运算结果,其中所述处理器包括排序被滤除后的所述运算结果,并选择排序在前的至少一运算结果进行所述后处理。9.根据权利要求6所述的存储器内运算装置,其中所述处理器包括在对所述输入数据及所述权重数据进行所述预处理时,对所述输入数据及所述权重数据进行编码,以及在对被滤除后的所述运算结果进行所述后处理时,对所述运算结果执行对应于所述编码的加权运算。10.根据权利要求9所述的存储器内运算装置,其中所述处理器包括:响应于所述运算结果对应于所述输入数据的所述主要部分及所述权重数据的所述主要部分,对所述运算结果乘上第一权重以获得第一乘积;响应于所述运算结果对应于所述输入数据的所述主要部分及所述权重数据的所述次要部分,对所述运算结果乘上第二权重以获得第二乘积;响应于所述运算结果对应于所述输入数据的所述次要部分及所述权重数据的所述主要部分,对所述运算结果乘上第三权重以获得第三乘积;响应于所述运算结果对应于所述输入数据的所述次要部分及所述权重数据的所述次要部分,对所述运算结果乘上第四权重以获得第四乘积;以及累加对所述运算结果进行所述加权运算所得的所述第一乘积、所述第二乘积、所述第三乘积及所述第四乘积,并将累加结果作为所述输出数据输出。
技术总结
本发明提供一种存储器内运算方法及装置,适于由处理器对存储器执行乘加运算。所述方法包括下列步骤:对待写入存储器的输入线及存储单元的输入数据及权重数据分别进行预处理,以区分为主要部分及次要部分;将被区分为主要部分及次要部分的输入数据及权重数据,分批写入输入线及存储单元以进行乘加运算,获得多笔运算结果;根据各运算结果的数值大小滤除运算结果;以及依据运算结果所对应的部分,对被滤除后的运算结果进行后处理,以获得输出数据。以获得输出数据。以获得输出数据。
技术研发人员:林柏榕 李永骏 胡瀚文 王淮慕
受保护的技术使用者:旺宏电子股份有限公司
技术研发日:2021.08.31
技术公布日:2022/3/8