基于存内计算的多比特全加器、多比特全加运算控制方法转让专利

申请号 : CN201910713923.4

文献号 : CN110597484B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 康旺张留洋赵巍胜张有光

申请人 : 北京航空航天大学

摘要 :

本发明提供一种基于存内计算的多比特全加器、多比特全加运算控制方法,该多比特全加器中,非易失性存储单元阵列存储数据并响应于控制信号对其内存储的数据、其上加载的数据执行逻辑运算;该行译码器、该列译码器对该非易失性存储单元阵列进行行列译码;该读写电路用于对该非易失性存储单元阵列进行读写操作;该移位寄存器用于对来自该读写电路的数据进行移位操作,进位寄存器用于暂存该多比特全加器执行全加过程中产生的最高位的进位,通过采用该多比特全加器结合运算控制方法,能够基于存内计算实现多比特操作数之间的全加运算,操作步骤简洁,所需控制信号简单,运算效率高,具有较低的时延和功耗以及电路复杂度。

权利要求 :

1.一种基于存内计算的多比特全加器,其特征在于,包括:非易失性存储单元阵列、读写电路、行译码器、列译码器、进位寄存器以及移位寄存器;

所述非易失性存储单元阵列包括:多个阵列排布的非易失性存储单元;

每列非易失性存储单元均通过一字线连接所述列译码器,每行非易失性存储单元均通过一位线连接所述行译码器,每行非易失性存储单元的位线和源线均连接所述读写电路,所述读写电路以及所述进位寄存器均连接所述移位寄存器;其中:所述非易失性存储单元阵列用于存储数据并响应于控制信号对其内存储的数据、其上加载的数据执行逻辑运算;

所述行译码器以及所述列译码器用于对所述非易失性存储单元阵列进行行列译码;

所述读写电路用于对所述非易失性存储单元阵列进行读写操作;

所述移位寄存器用于对来自所述读写电路的数据进行移位操作,并将移位后的数据反馈至所述读写电路;

所述进位寄存器用于暂存该多比特全加器执行全加过程中产生的最高位的进位;

其中,所述非易失性存储单元阵列中的存储单元为1T1R非易失性存储单元。

2.根据权利要求1所述的基于存内计算的多比特全加器,其特征在于,所述非易失性存储单元为阻变存储单元。

3.根据权利要求2所述的基于存内计算的多比特全加器,其特征在于,所述阻变存储单元包括:自旋电子存储单元、铁电存储单元或相变存储单元。

4.根据权利要求1所述的基于存内计算的多比特全加器,其特征在于,所述非易失性存储单元包括:非易失性存储器件以及开关元件;

所述非易失性存储器件一端连接所述位线,另一端连接所述开关元件的第一端,所述开关元件的第二端连接所述字线,所述开关元件的第三端连接源线。

5.根据权利要求4所述的基于存内计算的多比特全加器,其特征在于,所述非易失性存储器件包括:自旋电子存储器件、铁电存储器件或相变存储器件以及其他阻变存储器件。

6.一种基于存内计算实现多比特全加运算的控制方法,其特征在于,包括:逻辑运算步骤:将二进制加数信号同时存入两列非易失性存储单元,每列非易失性存储单元均存有该二进制加数信号,每个所述非易失性存储单元中存储该二进制加数信号的一位;

将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制被加数信号的异或运算,其中,所述异或运算结果直接存储在该非易失性存储单元列中;

将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制被加数信号的与运算,其中,所述与运算结果直接存储在该非易失性存储单元列中;

将所述与运算结果左移一位;

判断将所述与运算结果左移一位时的移出位是否为1;

若是,将所述移出位暂存至进位寄存器;

若否,将所述移出位暂存至进位寄存器之后,判断左移一位后的与运算结果是否为零;

若左移一位后的与运算结果为零,根据进位寄存器中的数据以及所述异或运算结果得到全加运算结果;

若左移一位后的与运算结果不为零,将左移一位后的与运算结果作为新的二进制加数信号,将所述异或运算结果作为新的二进制被加数信号,返回所述逻辑运算步骤。

7.根据权利要求6所述的基于存内计算实现多比特全加运算的控制方法,其特征在于,所述将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,包括:

根据所述二进制被加数信号配置一列存有二进制加数信号的非易失性存储单元列中各存储单元的位线;

根据所述异或运算指令配置该列存有二进制加数信号的非易失性存储单元列中各存储单元的源线。

8.根据权利要求6所述的基于存内计算实现多比特全加运算的控制方法,其特征在于,通过对所述二进制加数进行取反得到所述异或运算指令。

9.根据权利要求6所述的基于存内计算实现多比特全加运算的控制方法,其特征在于,所述将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,包括:

根据所述二进制被加数信号配置至另一列存有二进制加数的非易失性存储单元列中各存储单元的位线;

根据所述与运算指令加载配置该列存有二进制加数的非易失性存储单元列中各存储单元的源线。

10.一种基于存内计算实现多比特全加运算的控制方法,其特征在于,包括:逻辑运算步骤:将二进制加数信号同时存入两列非易失性存储单元,每列非易失性存储单元均存有该二进制加数信号,每个所述非易失性存储单元中存储该二进制加数信号的一位;

将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制被加数信号的异或运算,其中,所述异或运算结果直接存储在该非易失性存储单元列中;

将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制被加数信号的与运算,其中,所述与运算结果直接存储在该非易失性存储单元列中;

判断所述与运算结果是否为零;

若是,根据进位寄存器中的数据以及所述异或运算结果得到全加运算结果;

若否,判断所述与运算结果的最高位是否为1;

若所述与运算结果的最高位为1,则将所述与运算结果的最高位暂存至进位寄存器;

判断左移一位后的与运算结果是否为零;

若左移一位之后的与运算结果为零,则根据进位寄存器中的数据以及所述异或运算结果得到全加运算结果;

若左移一位之后的与运算结果不为零,或者所述与运算结果的最高位不为1,将所述与运算结果左移一位作为新的二进制加数信号,将所述异或运算结果作为新的二进制被加数信号,返回所述逻辑运算步骤。

11.根据权利要求10所述的基于存内计算实现多比特全加运算的控制方法,其特征在于,所述将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,包括:

根据所述二进制被加数信号配置一列存有二进制加数信号的非易失性存储单元列中各存储单元的位线;

根据所述异或运算指令配置该列存有二进制加数信号的非易失性存储单元列中各存储单元的源线。

12.根据权利要求10所述的基于存内计算实现多比特全加运算的控制方法,其特征在于,通过对所述二进制加数进行取反得到所述异或运算指令。

13.根据权利要求10所述的基于存内计算实现多比特全加运算的控制方法,其特征在于,所述将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,包括:

根据所述二进制被加数信号配置至另一列存有二进制加数的非易失性存储单元列中各存储单元的位线;

根据所述与运算指令加载配置该列存有二进制加数的非易失性存储单元列中各存储单元的源线。

说明书 :

基于存内计算的多比特全加器、多比特全加运算控制方法

技术领域

[0001] 本发明涉及半导体集成电路领域,尤其涉及一种基于存内计算的多比特全加器以及基于存内计算实现多比特全加运算的控制方法。

背景技术

[0002] 在传统的冯诺依曼计算机体系结构中,处理器和存储器是分开放置的,处理器和存储器之间的数据交换通过总线进行。
[0003] 随着大数据等应用的兴起,计算机要处理的数据量急剧膨胀,大量的数据交换带来越来越高的计算时延和能耗占比,这种现象被称为存储墙。存储墙成为冯诺依曼体系结
构计算机性能提升的巨大瓶颈。
[0004] 存内计算成为目前解决存储墙问题的关键技术之一。存内计算,顾名思义就是在存储器内进行运算。它可以使存储器在天然具有存储功能的基础上,具备一定的计算能力。
对存储的数据进行初步的处理后再送入其他模块进行其他形式的运算,可以显著降低数据
交换带来的严重计算时延和功耗。
[0005] 通用全加单元是计算机中央处理器(CPU)的核心部件之一,大量的运算都可以分解为全加运算来执行。
[0006] 目前,通过对存储器阵列周边电路的轻量级修改以及结合存储器的基本读写操作,已经可以实现在存储器内部进行全套的布尔逻辑运算。甚至通过对逻辑运算排列组合,
在单个存储单元上实现了单比特的全加操作,但是全加和以及进位的计算要经过若干个步
骤,计算过程需要多个寄存器存储中间结果,控制信号要求比较复杂。
[0007] 通过组合这些单比特全加器虽然可以实现多比特全加操作,但是会带来极高的时延和电路复杂度,无法体现出存内计算高效率、低时延和低功耗的特点。

发明内容

[0008] 针对现有技术中的问题,本发明提供一种基于存内计算的多比特全加器以及基于存内计算实现多比特全加运算的控制方法,能够至少部分地解决现有技术中存在的问题。
[0009] 为了实现上述目的,本发明采用如下技术方案:
[0010] 第一方面,提供一种基于存内计算的多比特全加器,包括:非易失性存储单元阵列、读写电路、行译码器、列译码器、进位寄存器以及移位寄存器;
[0011] 所述非易失性存储单元阵列包括:多个阵列排布的非易失性存储单元;
[0012] 每列非易失性存储单元均通过一字线连接所述列译码器,每行非易失性存储单元均通过一位线连接所述行译码器,每行非易失性存储单元的位线和源线均连接所述读写电
路,所述读写电路以及所述进位寄存器均连接所述移位寄存器;其中:
[0013] 所述非易失性存储单元阵列用于存储数据并响应于控制信号对其内存储的数据、其上加载的数据执行逻辑运算;
[0014] 所述行译码器以及所述列译码器用于对所述非易失性存储单元阵列进行行列译码;
[0015] 所述读写电路用于对所述非易失性存储单元阵列进行读写操作;
[0016] 所述移位寄存器用于对来自所述读写电路的数据进行移位操作,并将移位后的数据反馈至所述读写电路;
[0017] 所述进位寄存器用于暂存该多比特全加器执行全加过程中产生的最高位的进位。
[0018] 进一步地,所述非易失性存储单元为阻变存储单元。
[0019] 进一步地,所述阻变存储单元包括:自旋电子存储单元、铁电存储单元或相变存储单元。
[0020] 进一步地,所述非易失性存储单元包括:非易失性存储器件以及开关元件;
[0021] 所述非易失性存储器件一端连接所述位线,另一端连接所述开关元件的第一端,所述开关元件的第二端连接所述字线,所述开关元件的第三端连接源线。
[0022] 进一步地,所述非易失性存储器件包括:自旋电子存储器件、铁电存储器件或相变存储器件以及其他阻变存储器件。
[0023] 第二方面,提供一种基于存内计算实现多比特全加运算的控制方法,包括:
[0024] 逻辑运算步骤:将二进制加数信号同时存入两列非易失性存储单元,每列非易失性存储单元均存有该二进制加数信号,每个所述非易失性存储单元中存储该二进制加数信
号的一位;
[0025] 将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制被加数
信号的异或运算,其中,所述异或运算结果直接存储在该非易失性存储单元列中;
[0026] 将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制被加数
信号的与运算,其中,所述与运算结果直接存储在该非易失性存储单元列中;
[0027] 将所述与运算结果左移一位;
[0028] 判断将所述与运算结果左移一位时的移出位是否为1;
[0029] 若是,将所述移出位暂存至进位寄存器;
[0030] 若否,或者,将所述移出位暂存至进位寄存器之后,判断左移一位后的与运算结果是否为零;
[0031] 若左移一位后的与运算结果为零,根据进位寄存器中的数据以及所述异或运算结果得到全加运算结果;
[0032] 若左移一位后的与运算结果不为零,将左移一位后的与运算结果作为新的二进制加数信号,将所述异或运算结果作为新的二进制被加数信号,返回所述逻辑运算步骤。
[0033] 进一步地,所述将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,包括:
[0034] 根据所述二进制被加数信号配置一列存有二进制加数信号的非易失性存储单元列中各存储单元的位线;
[0035] 根据所述异或运算指令配置该列存有二进制加数信号的非易失性存储单元列中各存储单元的源线。
[0036] 进一步地,通过对所述二进制加数进行取反得到所述异或运算指令。
[0037] 进一步地,所述将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,包括:
[0038] 根据所述二进制被加数信号配置至另一列存有二进制加数的非易失性存储单元列中各存储单元的位线;
[0039] 根据所述与运算指令加载配置该列存有二进制加数的非易失性存储单元列中各存储单元的源线。
[0040] 第三方面,提供一种基于存内计算实现多比特全加运算的控制方法,包括:
[0041] 逻辑运算步骤:将二进制加数信号同时存入两列非易失性存储单元,每列非易失性存储单元均存有该二进制加数信号,每个所述非易失性存储单元中存储该二进制加数信
号的一位;
[0042] 将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制被加数
信号的异或运算,其中,所述异或运算结果直接存储在该非易失性存储单元列中;
[0043] 将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制被加数
信号的与运算,其中,所述与运算结果直接存储在该非易失性存储单元列中;
[0044] 判断所述与运算结果是否为零;
[0045] 若是,根据进位寄存器中的数据以及所述异或运算结果得到全加运算结果;
[0046] 若否,判断所述与运算结果的最高位是否为1;
[0047] 若所述与运算结果的最高位为1,则将所述与运算结果的最高位暂存至进位寄存器;
[0048] 判断左移一位后的与运算结果是否为零;
[0049] 若左移一位之后的与运算结果为零,则根据进位寄存器中的数据以及所述异或运算结果得到全加运算结果;
[0050] 若左移一位之后的与运算结果不为零,或者所述与运算结果的最高位不为1,将所述与运算结果左移一位作为新的二进制加数信号,将所述异或运算结果作为新的二进制被
加数信号,返回所述逻辑运算步骤。
[0051] 进一步地,所述将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,包括:
[0052] 根据所述二进制被加数信号配置一列存有二进制加数信号的非易失性存储单元列中各存储单元的位线;
[0053] 根据所述异或运算指令配置该列存有二进制加数信号的非易失性存储单元列中各存储单元的源线。
[0054] 进一步地,通过对所述二进制加数进行取反得到所述异或运算指令。
[0055] 进一步地,所述将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,包括:
[0056] 根据所述二进制被加数信号配置至另一列存有二进制加数的非易失性存储单元列中各存储单元的位线;
[0057] 根据所述与运算指令加载配置该列存有二进制加数的非易失性存储单元列中各存储单元的源线。
[0058] 本发明提供的基于存内计算的多比特全加器以及基于存内计算实现多比特全加运算的控制方法,该多比特全加器中,该非易失性存储单元阵列用于存储数据并响应于控
制信号对其内存储的数据、其上加载的数据执行逻辑运算;该行译码器以及该列译码器用
于对该非易失性存储单元阵列进行行列译码;该读写电路用于对该非易失性存储单元阵列
进行读写操作;该移位寄存器用于对来自该读写电路的数据进行移位操作,并将移位后的
数据反馈至该读写电路,该进位寄存器用于暂存该多比特全加器执行全加过程中产生的最
高位的进位,该方法包括:逻辑运算步骤:将二进制加数同时存入两列非易失性存储单元,
每个该非易失性存储单元中存储一位二进制数;将二进制被加数同时加载至该两列非易失
性存储单元,并且,将异或运算指令和与运算指令分别加载至两列非易失性存储单元,以使
两列非易失性存储单元分别对该二进制加数和该二进制被加数进行异或运算和与运算;判
断步骤:判断与运算结果是否为零;若是,将异或运算结果作为全加运算结果输出;若否,则
将与运算结果左移一位后作为新的二进制加数,将该异或运算结果作为新的二进制被加
数,返回该逻辑运算步骤,其中,基于存内计算实现了多比特操作数之间的全加运算,操作
步骤简洁,所需控制信号简单,运算率高、时延低、功耗低、电路复杂度低,尤其对于需要进
行大量加法操作的应用(如加解密操作、神经网络运算等)来说,效果更加明显。
[0059] 为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。

附图说明

[0060] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请
的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据
这些附图获得其他的附图。在附图中:
[0061] 图1为本发明实施例中所采用的1T1R非易失性存储单元结构示意图;
[0062] 图2示出了利用本发明实施例中所采用的1T1R非易失性存储单元实现逻辑运算的原理;
[0063] 图3示出了本发明实施例中所采用的1T1R非易失性存储单元的真值表;
[0064] 图4示出了本发明实施例中基于存内计算实现多比特全加运算的原理图;
[0065] 图5示出了本发明实施例中基于存内计算的多比特全加器的电路结构图;
[0066] 图6示出了本发明实施例中基于存内计算实现多比特全加运算的控制方法的一种流程图;
[0067] 图7示出了本发明实施例中基于存内计算实现多比特全加运算的控制方法的另一种流程图;
[0068] 图8示出了采用本发明实施例提供的基于存内计算的多比特全加器对M[0110]和N
[0101]进行多比特全加操作的过程。

具体实施方式

[0069] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是
本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人
员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范
围。
[0070] 以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域技术人员,了解本发明的技术内容并据以实施,且根据本说明书所揭露的内容、权利要求
及图式,任何本领域技术人员可轻易地理解本发明相关的目的及优点。以下的实施例进一
步详细说明本发明的观点,但非以任何观点限制本发明的范畴。
[0071] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0072] 图1为本发明实施例中所采用的1T1R非易失性存储单元结构示意图。如图1所示,对于新型非易失性存储器,例如阻变存储器(ReRAM)、自旋转移矩磁性随机存储器(STT‑
MRAM)、相变存储器(PCRAM)等,其内的存储单元由一个用于对存储单元进行访问控制的晶
体管(记为T)和一个用于存储二进制数据的非易失性存储器件(记为R)组成,称为1T1R非易
失性存储单元,多个非易失性存储单元通过字线、位线、源线以阵列形式组织在一起。
[0073] 其中,非易失性存储器件的阻值可以有两种状态,一种为低阻状态,一种为高阻状态,分别代表数据比特“0”和“1”,或者反之。晶体管的栅极接字线,漏极经非易失性存储器
件后接位线,源极接源线,源线一般接低电平或接地。通过控制字线的电压即可控制晶体管
的开闭,从而控制存储单元的选择与否。更具体地,当字线为高电平时,晶体管处于导通状
态,存储单元可访问,可对其进行读写操作;而当字线为低电平时,晶体管处于非导通状态,
存储单元不可访问。
[0074] 对于如上的1T1R非易失性存储单元,通常需要施加三个信号:(1)写入信号(记为A,通常从位线施加),用于对存储单元进行访问控制;(2)当前已存储的数据(记为Bi);(3)
写入控制信号(记为C,通常从源线施加,可以是电流或电压)。根据这三个信号(以STT‑MRAM
为例),存储单元下一个存储的数据(记为Bi+1)可以表达为 如附图2所示,
真值表参见图3。
[0075] 通过对该存储单元下一个存储的数据Bi+1进行分析可以看出,写入信号C可以看作逻辑功能选择信号,决定了逻辑计算的功能函数,如当C等于“0”,“1”,以及 时,存储单元
下一个存储的数据Bi+1分别等于 (“与”逻辑),A+Bi(“或”逻辑)以及 (“异或”逻
辑)。最终计算的结果(即Bi+1)直接存储在存储单元内。其逻辑计算操作与存储器的正常读
写操作基本一致。其他逻辑计算功能可以通过如上三种逻辑功能函数进行组合而成。
[0076] 本领域技术人员可以理解的是,对于其他非易失性存储单元,可能A、C信号不同,或者对应的逻辑表达式不同,但都能实现类似的存内计算功能。
[0077] 经过发明人大量的推导运算发现,通过组合使用上述存内计算的异或和与操作,可以实现多比特的全加运算。图4示出了本发明实施例中基于存内计算实现多比特全加运
算的原理图。
[0078] 如图4所示,以对操作数M、N进行全加运算为例,首先将M和N中的一个同时存入两列非易失性存储单元(通过控制位线和源线之间的电压差实现数据写入),作为非易失性存
储单元内已经存储的数据(相当于上述的Bi),然后根据M和N中的另一个配置一列非易失性
存储单元的位线,作为非易失性存储单元的写入信号(相当于上述的A),然后根据异或运算
指令(相当于上述的写入控制信号C,异或运算对应的 )配置该列非易失性存储单元
的源线,以使该列非易失性存储单元实现M和N的异或逻辑运算;之后,根据M和N中的另一个
配置一列非易失性存储单元的位线,作为非易失性存储单元的写入信号(相当于上述的A),
然后根据与运算指令(相当于上述的写入控制信号C,与运算对应的C=0)配置该列非易失
性存储单元的源线,使得该列非易失性存储单元执行M和N的与运算,将所述与运算结果读
至移位寄存器中,将所述与运算结果左移一位,并判断左移时移出为是否为1,若是,将该移
出位存储至进位寄存器中暂存,之后判断左移一位后的与运算结果是否为零;若否,则直接
判断左移一位后的与运算结果是否为零;若左移一位后的与运算结果为零,则根据该移出
位和异或运算结果,得到M和N的全加运算结果;若左移一位后的与运算结果不为0,则将左
移一位后的与运算结果作为新的加数,将M和N本次的异或运算结果作为新的被加数,再次
分别进行异或运算和与运算,并执行判断步骤,直至满足判定条件。
[0079] M和N的全加运算结果为进位寄存器中暂存的移出位与异或运算结果组合得到,例如,暂存的移出位为1,异或运算结果为0001,则最终的结果为1000。
[0080] 图5示出了本发明实施例中基于存内计算的多比特全加器的电路结构图。如图5所示,该基于存内计算的多比特全加器包括:非易失性存储单元阵列1、读写电路4、行译码器
3、列译码器2、移位寄存器5以及进位寄存器6;
[0081] 所述非易失性存储单元阵列包括:多个阵列排布的非易失性存储单元;
[0082] 每列非易失性存储单元均通过一字线WL连接所述列译码器,每行非易失性存储单元均通过一位线BL连接所述行译码器,每行非易失性存储单元的位线和源线均连接所述读
写电路,所述读写电路以及所述进位寄存器均连接所述移位寄存器;其中:
[0083] 所述非易失性存储单元阵列用于存储数据并响应于控制信号对其内存储的数据、其上加载的数据执行逻辑运算;
[0084] 所述行译码器以及所述列译码器用于对所述非易失性存储单元阵列进行行列译码;
[0085] 所述读写电路用于对所述非易失性存储单元阵列进行读写操作;
[0086] 所述移位寄存器用于对来自所述读写电路的数据进行移位操作,并将移位后的数据反馈至所述读写电路;
[0087] 所述进位寄存器用于暂存该多比特全加器执行全加过程中产生的最高位的进位。
[0088] 通过上述技术方案可以得知,通过在多比特全加器中设置移位寄存器用于对数据进行移位操作,设置进位寄存器用于暂存该多比特全加器执行全加过程中产生的最高位的
进位,配合非易失性存储单元阵列,能够实现多比特全加运算,操作步骤简洁,所需控制信
号简单,运算效率高、时延低、功耗低、电路复杂度低,尤其对于需要进行大量加法操作的应
用(如加解密操作、神经网络运算等)来说,效果更加明显。
[0089] 在一个可选的实施例中,所述非易失性存储单元为阻变存储单元,例如自旋电子存储单元、铁电存储单元或相变存储单元等。
[0090] 在一个可选的实施例中,所述非易失性存储单元包括:非易失性存储器件以及开关元件;所述非易失性存储器件一端连接所述位线,另一端连接所述开关元件的第一端,所
述开关元件的第二端连接所述字线,所述开关元件的第三端连接源线。
[0091] 其中,所述非易失性存储器件可为自旋电子存储器件、铁电存储器件或相变存储器件以及其他阻变存储器件。
[0092] 在一个可选的实施例中,该多比特全加器还可以包括:输入模块,所述输入模块连接所述移位寄存器,用于接收输入数据(如加数、被加数、控制信号等),并将输入数据输入
移位寄存器,移位寄存器再传输至读写电路。
[0093] 图6示出了本发明实施例中基于存内计算实现多比特全加运算的控制方法的流程图。如图6所示,该基于存内计算实现多比特全加运算的控制方法可以包括以下内容:
[0094] 步骤S1000:将二进制加数信号同时存入两列非易失性存储单元。
[0095] 具体地,先将二进制加数信号加载至移位寄存器,读写电路读取移位寄存器中的数据,然后根据数据配置位线和源线之间的电压差,以将二进制加数信号写入存储单元中。
[0096] 其中,每列非易失性存储单元均存有该二进制加数信号,每个所述非易失性存储单元中存储一位二进制数(相当于上述的Bi)。
[0097] 具体地,通过控制行译码器、列译码器选通所需的非易失性存储单元,控制选通的非易失性存储单元的位线和源线之间的电压差,实现数据写入。
[0098] 值得说明的是,非易失性存储单元中的非易失性存储器件一端作为访问控制端,用于接收运算指令(相当于上述的C),另一端连接所述开关元件的第一端,所述开关元件的
第二端作为写入端,用于写入或加载数据。
[0099] 需要说明的是,本领域技术人员能够明了,上述开关元件可采用晶体管实现,晶体管可以为场效应晶体管,可以为增强型场效应晶体管,也可以为耗尽型场效应晶体管等。
[0100] 当然,本发明实施例提供的晶体管的第一端可以为漏极,则第二端为栅极,第三端为源极,或者第一端可以为源极,则第二端为栅极,第三端为漏极,本发明对此不作限定,可
根据晶体管的类型合理选择即可。
[0101] 步骤S2000:将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二
进制被加数信号的异或运算;
[0102] 其中,所述异或运算结果直接存储在该非易失性存储单元列中。
[0103] 具体地,先将该二进制被加数信号加载至移位寄存器,并送入读写电路,读写电路根据该二进制被加数信号配置存有二进制加数的非易失性存储单元列中各存储单元的位
线;解码后的异或运算指令加载至读写电路,读写电路依据指令配置该列存有二进制加数
的非易失性存储单元列中各存储单元的源线,以执行所述二进制加数和所述二进制被加数
的异或运算。
[0104] 其中,通过控制行译码器、列译码器选通存储有二进制加数的一列非易失性存储单元,通过控制读写电路将二进制被加数信号加载至该列非易失性存储单元。
[0105] 本领域技术人员可以理解的是,非易失性存储单元中存储的二进制位与加载在其上的二进制位为对加数与被加数执行全加运算时的对应位。
[0106] 具体地,将所述二进制被加数加载至一列存有二进制加数的非易失性存储单元列中各存储单元的位线;同时,将所述异或运算指令加载该列存有二进制加数的非易失性存
储单元列中各存储单元的源线。
[0107] 值得说明的是,异或运算指令即如上所述的写入信号C,异或运算指令对应的Bi为该非易失性存储单元存储的加数,即:通过对所述二进制加数进行取反得到所
述异或运算指令。
[0108] S3000:将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制
被加数信号的与运算。
[0109] 其中,所述与运算结果直接存储在该非易失性存储单元列中。
[0110] 具体地,将二进制被加数信号加载至移位寄存器,并送入读写电路,读写电路根据该二进制被加数信号配置存有二进制加数的非易失性存储单元列中各存储单元的位线;解
码后的与运算指令加载至读写电路,读写电路依据指令配置该列存有二进制加数的非易失
性存储单元列中各存储单元的源线,执行所述二进制加数和所述二进制被加数的与运算。
[0111] 其中,与运算指令即如上所述的写入信号C,与运算指令对应的C=0,即所述与运算指令可为一全零数组或全一数组,根据电路需求设置。
[0112] 值得说明的是,步骤S200和步骤S300可以互换顺序。
[0113] 步骤S4000:将与运算结果左移一位。
[0114] 具体地,通过控制行译码器、列译码器以及读写电路读出执行与运算的一列非易失性存储单元中的数据,即与运算结果,加载至移位寄存器中,由移位寄存器控制将该与运
算结果左移一位。
[0115] 步骤S5000:判断左移一位时的移出位是否为1;
[0116] 若是,执行步骤S6000;否则,执行步骤S7000;
[0117] 其中,该移出位为执行全加过程中产生的最高位的进位。
[0118] 步骤S6000:将所述移出位暂存至进位寄存器;
[0119] 具体地,假设该与运算结果为1100,则其左移一位后,最高位“1”溢出,存入进位寄存器,最后位补“0”,移位后的数据为1000。
[0120] 步骤S7000:判断左移一位后的与运算结果是否为零;
[0121] 若是,执行步骤S9000;否则,执行步骤S8000;
[0122] 步骤S8000:将所述与运算结果左移一位作为新的二进制加数信号,将所述异或运算结果作为新的二进制被加数信号,并返回步骤S1000。
[0123] 具体地,将移位后的与运算结果发送给读写电路,读写电路将移位后的与运算结果作为新的二进制加数,同时写入两列非易失性存储单元,该两列非易失性存储单元的地
址与存有异或运算结果的存储单元列的地址不同(因为后续还需要用到异或运算结果,所
以不能将该异或运算结果删除);然后读取异或运算结果,作为新的被加数;将新的被加数
和异或运算指令一起施加至一列存有新的二进制加数的非易失性存储单元列,对新的加数
与新的被加数执行异或运算;之后,将该新的被加数和与运算指令一起施加至另一列存有
新的二进制加数的非易失性存储单元列,对新的加数与新的被加数执行与运算,进入判断
步骤,如此往复,直至与运算结果为零。
[0124] 步骤S9000:根据进位寄存器中的数据以及所述异或运算结果得到全加运算结果。
[0125] 具体地,假设进位寄存器中存储进位为“1”,异或运算结果为“0001”,则全加运算结果为10001,即将进位寄存器中的进位位作为最高位,异或运算结果作为后面的位,拼接
在一起得到的数值为全加运算结果。
[0126] 在电路实现时,通过读取逻辑即可实现上述拼接过程。
[0127] 通过采用上述技术方案,能够基于存内计算实现了多比特操作数之间的全加运算,操作步骤简洁,所需控制信号简单,运算效率高、时延低、功耗低、电路复杂度低,尤其对
于需要进行大量加法操作的应用(如加解密操作、神经网络运算等)来说,效果更加明显。
[0128] 图7示出了本发明实施例中基于存内计算实现多比特全加运算的控制方法的另一种流程图。如图7所示,该基于存内计算实现多比特全加运算的控制方法可以包括以下内
容:
[0129] 步骤S100:将二进制加数信号同时存入两列非易失性存储单元。
[0130] 具体地,先将二进制加数信号加载至移位寄存器,读写电路读取移位寄存器中的数据,然后根据数据配置位线和源线之间的电压差,以将二进制加数信号写入存储单元中。
[0131] 其中,每列非易失性存储单元均存有该二进制加数信号,每个所述非易失性存储单元中存储一位二进制数(相当于上述的Bi)。
[0132] 具体地,通过控制行译码器、列译码器选通所需的非易失性存储单元,控制选通的非易失性存储单元的位线和源线之间的电压差,实现数据写入。
[0133] 值得说明的是,非易失性存储单元中的非易失性存储器件一端作为访问控制端,用于接收运算指令(相当于上述的C),另一端连接所述开关元件的第一端,所述开关元件的
第二端作为写入端,用于写入或加载数据。
[0134] 需要说明的是,本领域技术人员能够明了,上述开关元件可采用晶体管实现,晶体管可以为场效应晶体管,可以为增强型场效应晶体管,也可以为耗尽型场效应晶体管等。
[0135] 当然,本发明实施例提供的晶体管的第一端可以为漏极,则第二端为栅极,第三端为源极,或者第一端可以为源极,则第二端为栅极,第三端为漏极,本发明对此不作限定,可
根据晶体管的类型合理选择即可。
[0136] 步骤S200:将二进制被加数信号和异或运算指令加载至一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进
制被加数信号的异或运算;
[0137] 其中,所述异或运算结果直接存储在该非易失性存储单元列中。
[0138] 具体地,先将该二进制被加数信号加载至移位寄存器,并送入读写电路,读写电路根据该二进制被加数信号配置存有二进制加数的非易失性存储单元列中各存储单元的位
线;解码后的异或运算指令加载至读写电路,读写电路依据指令配置该列存有二进制加数
的非易失性存储单元列中各存储单元的源线,以执行所述二进制加数和所述二进制被加数
的异或运算。
[0139] 其中,通过控制行译码器、列译码器选通存储有二进制加数的一列非易失性存储单元,通过控制读写电路将二进制被加数信号加载至该列非易失性存储单元。
[0140] 本领域技术人员可以理解的是,非易失性存储单元中存储的二进制位与加载在其上的二进制位为对加数与被加数执行全加运算时的对应位。
[0141] 具体地,将所述二进制被加数加载至一列存有二进制加数的非易失性存储单元列中各存储单元的位线;同时,将所述异或运算指令加载该列存有二进制加数的非易失性存
储单元列中各存储单元的源线。
[0142] 值得说明的是,异或运算指令即如上所述的写入信号C,异或运算指令对应的Bi为该非易失性存储单元存储的加数,即:通过对所述二进制加数进行取反得到所
述异或运算指令。
[0143] S300:将二进制被加数信号和与运算指令加载至另一列存有二进制加数信号的非易失性存储单元列,以使该非易失性存储单元列执行所述二进制加数信号和所述二进制被
加数信号的与运算。
[0144] 其中,所述与运算结果直接存储在该非易失性存储单元列中。
[0145] 具体地,将二进制被加数信号加载至移位寄存器,并送入读写电路,读写电路根据该二进制被加数信号配置存有二进制加数的非易失性存储单元列中各存储单元的位线;解
码后的与运算指令加载至读写电路,读写电路依据指令配置该列存有二进制加数的非易失
性存储单元列中各存储单元的源线,执行所述二进制加数和所述二进制被加数的与运算。
[0146] 其中,与运算指令即如上所述的写入信号C,与运算指令对应的C=0,即所述与运算指令可为一全零数组或全一数组,根据电路需求设置。
[0147] 值得说明的是,步骤S200和步骤S300可以互换顺序。
[0148] 步骤S400:判断与运算结果是否为零。
[0149] 具体地,通过控制读写电路读出执行与运算的一列非易失性存储单元中的数据,即与运算结果,然后,判断与运算结果是否为零。
[0150] 若是,执行步骤S900;若否,执行步骤S500。
[0151] 步骤S500:判断所述与运算结果的最高位是否为1;
[0152] 若是,执行步骤S600;否则,执行步骤S800;
[0153] 其中,该与运算结果的最高位为执行全加过程中产生的最高位的进位。
[0154] 步骤S600:将所述与运算结果的最高位暂存至进位寄存器;
[0155] 其中,通过行译码器、列译码器以及读写电路配合,将所述与运算结果的最高位暂存至进位寄存器。
[0156] 具体地,假设该与运算结果为1100,则其左移一位后,最高位“1”溢出,存入进位寄存器,最后位补“0”,移位后的数据为1000。
[0157] 步骤S700:判断左移一位后的与运算结果是否为零;
[0158] 若是,执行步骤S900;否则,执行步骤S800;
[0159] 步骤S800:将所述与运算结果左移一位作为新的二进制加数信号,将所述异或运算结果作为新的二进制被加数信号,并返回步骤S100。
[0160] 具体地,控制读写电路将该与运算结果输至移位寄存器,由移位寄存器将该与运算结果左移一位,然后将移位后的与运算结果再发送给读写电路,读写电路将移位后的与
运算结果作为新的二进制加数,同时写入两列非易失性存储单元,该两列非易失性存储单
元的地址与存有异或运算结果的存储单元列的地址不同(因为后续还需要用到异或运算结
果,所以不能将该异或运算结果删除);然后读取异或运算结果,作为新的被加数;将新的被
加数和异或运算指令一起施加至一列存有新的二进制加数的非易失性存储单元列,对新的
加数与新的被加数执行异或运算;之后,将该新的被加数和与运算指令一起施加至另一列
存有新的二进制加数的非易失性存储单元列,对新的加数与新的被加数执行与运算,进入
判断步骤,如此往复,直至与运算结果为零。
[0161] 步骤S900:根据进位寄存器中的数据以及所述异或运算结果得到全加运算结果。
[0162] 具体地,假设进位寄存器中存储进位为“1”,异或运算结果为“0001”,则全加运算结果为10001,即将进位寄存器中的进位位作为最高位,异或运算结果作为后面的位,拼接
在一起得到的数值为全加运算结果。
[0163] 在电路实现时,通过读取逻辑即可实现上述拼接过程。
[0164] 通过采用上述技术方案,能够基于存内计算实现了多比特操作数之间的全加运算,操作步骤简洁,所需控制信号简单,运算效率高、时延低、功耗低、电路复杂度低,尤其对
于需要进行大量加法操作的应用(如加解密操作、神经网络运算等)来说,效果更加明显。
[0165] 为了使本领域技术人员更好地了解本发明,下面以对M[0110]和N[0101]进行多比特全加操作的过程为例,对采用本发明实施例提供的存内计算的多比特全加器和基于存内
计算实现多比特全加运算的控制方法实现全加运算的过程进行说明,参见图8:
[0166] (1)利用读写电路、行译码器、列译码器配合,将M[0110]写入存储阵列中地址为Ai和Ai+1的存储单元列;
[0167] (2)利用读写电路、行译码器、列译码器配合,将N[0101]加载至地址为Ai的存储单元列的对应存储单元,同时,将异或运算指令(或称写入控制信号)[1001]加载至地址为Ai
的存储单元列的对应存储单元,以使该存储单元列对M[0110]和N[0101]执行异或运算,异
或运算结果[0011]直接存储在地址为Ai的存储单元列中。
[0168] (3)利用读写电路、行译码器、列译码器配合,将N[0101]加载至地址为Ai+1的存储单元列的对应存储单元,同时,将与运算指令(或称写入控制信号)[0000]加载至地址为Ai+1
的存储单元列的对应存储单元,以使该存储单元列对M[0110]和N[0101]执行与运算,与运
算结果[0100]直接存储在地址为Ai+1的存储单元列中。
[0169] (4)利用读写电路、行译码器、列译码器配合,读出地址为Ai+1的存储单元列的对应存储单元中的与运算结果[0100],此时,与运算结果不为0。
[0170] (5)利用读写电路将该与运算结果[0100]输至移位寄存器,利用移位寄存器对与运算结果[0100]左移移位,得到移位后的与运算结果[1000],并反馈给读写电路。
[0171] (6)利用读写电路、行译码器、列译码器配合,将移位后的与运算结果[1000]写入地址不为Ai的两个存储单元列(比如地址为Ai+1和Ai+2)中(因为地址为Ai的存储单元列中存
储有异或运算结果,该结果后续还会用到)。
[0172] (7)利用读写电路、行译码器、列译码器配合,将地址为Ai的存储单元列中的异或运算结果[0011]读出。
[0173] (8)利用读写电路、行译码器、列译码器配合,将异或运算结果[0011]加载至地址为Ai+1的存储单元列的对应存储单元,同时,将异或运算指令(或称写入控制信号)[0111]加
载至地址为Ai+1的存储单元列的对应存储单元,以使该存储单元列对异或运算结果[0011]
和移位后的与运算结果[1000]执行异或运算,异或运算结果[1011]直接存储在地址为Ai+1
的存储单元列中。
[0174] (9)利用读写电路、行译码器、列译码器配合,将异或运算结果[0011]加载至地址为Ai+2的存储单元列的对应存储单元,同时,将与运算指令(或称写入控制信号)[0000]加载
至地址为Ai+2的存储单元列的对应存储单元,以使该存储单元列对异或运算结果[0011]和
移位后的与运算结果[1000]执行与运算,与运算结果[0000]直接存储在地址为Ai+2的存储
单元列中。
[0175] (10)利用读写电路、行译码器、列译码器配合,将地址为Ai+2的存储单元列中存储的与运算结果[0000]读出,此时,与运算结果为零,因此,将本轮的异或运算结果[1011]作
为最终运算结果。
[0176] 本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,
依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内
容不应理解为对本发明的限制。
[0177] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要
素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要
素的过程、方法、商品或者设备中还存在另外的相同要素。
[0178] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实
施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例
的部分说明即可。
[0179] 以上所述仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何本领域技术人员,在不
脱离本发明技术方案的范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同
变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上
实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。