CN112015673B - 一种基于混合存储的存内计算的方法与装置 - Google Patents

一种基于混合存储的存内计算的方法与装置 Download PDF

Info

Publication number
CN112015673B
CN112015673B CN202011137494.XA CN202011137494A CN112015673B CN 112015673 B CN112015673 B CN 112015673B CN 202011137494 A CN202011137494 A CN 202011137494A CN 112015673 B CN112015673 B CN 112015673B
Authority
CN
China
Prior art keywords
data
nonvolatile
word line
transistor
controller
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
Application number
CN202011137494.XA
Other languages
English (en)
Other versions
CN112015673A (zh
Inventor
杨弢
曾令仿
毛旷
潘秋红
何水兵
任祖杰
银燕龙
陈刚
于策
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Zhejiang Lab
Original Assignee
Zhejiang University ZJU
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU, Zhejiang Lab filed Critical Zhejiang University ZJU
Priority to CN202011137494.XA priority Critical patent/CN112015673B/zh
Publication of CN112015673A publication Critical patent/CN112015673A/zh
Application granted granted Critical
Publication of CN112015673B publication Critical patent/CN112015673B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

本发明涉及计算机内存计算领域,具体涉及一种基于混合存储的存内计算方法与装置,该方法包括:首先通过混合存储区将数据进行混合存储,然后利用数据转存区通过字线驱动器和控制器对某一指定行的数据进行移位操作,最后基于混合存储和移位操作进行数据的乘法计算。本发明结合非易失存储与内存计算,一方面计算数据以纳秒级的速度从非易失器件中获得,特别是对于深度神经网络推理这种场景,可将模型参数事先存放于非易失存储区,计算时能减少了数据访问的时间,提高了系统性能;另一方面通过改进电路操作流程,减少了不必要的数据搬移时间,使得移位时间也能缩短至纳秒级别,提升了对于乘法计算这种有大量移位操作的计算效率,提高了系统性能。

Description

一种基于混合存储的存内计算的方法与装置
技术领域
本发明涉及计算机内存计算领域,具体涉及一种基于混合存储的存内计算的方法与装置。
背景技术
现代计算机系统中,数据在计算单元与内存中的搬移在系统功耗和程序运行时间上都占据了很大的比例。随着多核处理器的出现,越来越多的核被集成进同一芯片中,内存总带宽却并没有成比例的增长,造成了算力与数据传输间的不匹配,因而导致了所谓的“内存墙”问题。与此同时,计算资源虽然在增加,计算资源与动态随机存取存储器(以下简称“DRAM”)之间的通信延迟并没有改善,使得数据的搬移成为系统瓶颈之一。
为了解决这些挑战,业界陆续提出了多种新型计算方式,其中包括近内存计算、存内处理器、存内计算等,其中的存内计算成为目前解决存储墙问题的关键技术之一。存内计算,顾名思义就是在存储器内进行运算,它可以显著降低数据交换带来的严重计算时延和功耗。目前出现了各种基于不同存储介质材料,包括阻变式存储器RRAM、相变存储器PCM、新型非易失性磁随机存储器STT-MRAM、动态随机存取存储器DRAM等的存内计算技术。
发明内容
为了解决现有技术中存在的上述技术问题,本发明提出了一种基于混合存储的存内计算的方法与装置,其具体技术内容如下。
一种基于混合存储的存内计算的装置,包括读写控制模块、计算控制器、存储模块、字线驱动器、控制器和非易失模块驱动器,所述读写控制模块用于接收发送地址、数据、命令信息,所述计算控制器包括编组控制器、索引表模块和操作控制器;所述读写控制模块的输出端分别连接编组控制器的输入端、非易失模块驱动器的输入端和字线驱动器的输入端,所述非易失模块驱动器的输出端连接至存储模块,所述编组控制器的输出端分别连接索引表的输入端和操作控制器的输入端,所述索引表模块的输出端连接至操作控制器,所述操作控制器的输出端分别连接至控制器的输入端和字线驱动器,所述字线驱动器的输出端连接至存储模块,所述控制器的输出端连接至存储模块。
进一步的,所述存储模块,包括:连接字线驱动器的字线和驱动字线、连接控制器的输入晶体管字线、位线以及均接入位线的混合存储区、计算区、普通内存存储区、数据转存区和灵敏放大器,所述灵敏放大器通过位线与数据转存区连接,所述数据转存区通过输入晶体管字线连接控制器,所述普通内存存储区和计算区均通过驱动字线连接字线驱动器,所述混合存储区通过字线连接字线驱动器述,所述字线驱动器和控制器相结合,对数据转存区进行控制。
进一步的,所述混合存储区中设有多行多列的混合存储单元,多行多列的混合存储单元构成为存储阵列,其中的混合存储单元包括非易失字线、非易失性存储器件、非易失位线、非易失源线、存储转换控制线、第一晶体管、 第二晶体管、第三晶体管、易失性存储器件电容和电阻,所述非易失字线连接第一晶体管的栅极,非易失源线连接第一晶体管的源极,所述第一晶体管的漏极连接非易失性存储器件的一端,非易失性存储器件的另一端连接电阻的一端,电阻的另一端与易失性存储器件电容的一端连接后接入非易失位线,易失性存储器件电容的另一端连接第二晶体管的源极,所述位线连接第二晶体管的漏极,所述字线连接第二晶体管的栅极,所述第三晶体管的栅极连接存储转换控制线,所述第三晶体管的漏极连接电阻的一端,第三晶体管的源极连接易失性存储器件电容的另一端。
进一步的,所述非易失模块驱动器对所述非易失性存储器件以列为单位进行管理,对连接所述非易失性存储器件的非易失源线和非易失位线进行电压控制,以实现非易失性存储器件的数据读写功能;字线驱动器以行为单位,驱动一行混合存储单元中连接易失性存储器件电容的字线。
进一步的,所述数据转存区设置在普通内存存储区的普通内存存储单元构成的存储阵列中,数据转存区包括若干移位存储单元选择器和寄存器,所述寄存器的输出端连接选择器第一输入端,所述选择器的输出端连接移位存储单元,所述选择器还和控制器连接,所述寄存器还通过初始值数据总线与控制器连接,并通过控制器被预先设置固定存放某个一比特初始值,所述若干移位存储单元通过组合用于存放一个或者多个数据。
进一步的,每个所述的移位存储单元包括移位电容、第四晶体管和输入晶体管,所述移位电容连接第四晶体管的源极,所述第四晶体管的栅极连接字线驱动器的驱动字线,第四晶体管的漏极连接位线,所述输入晶体管的栅极连接控制器的输入晶体管字线,输入晶体管的源极连接第四晶体管的源极,输入晶体管的漏极连接选择器的输出端,所述选择器的第二输入端连接同一列灵敏放大器的取反端,选择器第三输入端连接相邻列的灵敏放大器的输出端。
一种基于混合存储的存内计算的方法,包括:首先通过混合存储区将数据进行混合存储,然后利用数据转存区通过字线驱动器和控制器对某一指定行的数据进行移位操作,最后基于混合存储和移位操作进行数据的乘法计算。
进一步的,所述过混合存储区将数据进行混合存储,具体包括如下步骤:
步骤1.将数据存储于存储阵列的非易失性存储器件,具体为:
步骤1.1. 关闭第二晶体管和第三晶体管;
步骤1.2. 通过控制非易失字线选中一行混合存储单元,打开第一晶体管,同时对非易失源线和非易失位线的进行组合控制,完成非易失性存储器件的数据写入操作,进行写入操作时,各列之间相互独立,通过非易失字线统一打开同一行混合存储单元,写入后数据可持久保存于非易失性存储器件中,即使系统下电也不会丢失;
步骤2. 将数据从非易失性存储器件中转移至易失性存储器件电容,具体为:设置非易失源线接地,非易失位线设置为读电压Vread,非易失性存储器件进入读数据状态;将连接第三晶体管的存储转换控制线设为高电平,打开第三晶体管,电容根据非易失性存储器件的阻值状态以及电阻两端电压的变化进行充放电,从而获得非易失性存储器件的存储数据;
步骤3. 关闭非易失性存储器件,易失性存储器件电容进行部分工作,具体为:将非易失字线、非易失位线、非易失源线都置低电平,使得第一晶体管关闭,存储转换控制线置低电平,使得第三晶体管关闭;第二晶体管和电容组成的电路继续工作。
进一步的,所述利用数据转存区通过字线驱动器和控制器对某一指定行即源行的数据进行移位操作,所述源行为混合存储区中的行或普通内存存储器中的行,具体的,包括如下步骤:
步骤1. 字线驱动器设置源行的字线为高电平,存储转换控制线为低电平,打开源行所在第二晶体管,关闭第三晶体管,激活源行;
步骤2. 源行的电容对其相应位线充放电,使得相应位线电压发生改变。
步骤3. 灵敏放大器的参考端电压设置为 Vdd/2,使能灵敏放大器,将步骤2中的位线电压变化放大并保持稳定,从而使灵敏放大器获得并放大源行数据信息;
步骤4. 通过字线驱动器控制源行的字线为低电平,关闭源行;
步骤5. 通过控制器对选择器进行控制:
当相应位线所含数据是同一个数据的不同比特位时,且需要取反时,选择器选择灵敏放大器的取反端输出,
当相应位线所含数据是同一个数据的不同比特位时,选择器320选择灵敏放大器的输出端输出,
当相应位线所含数据不属于同一个数据时,各位线所在列的数据不可以互相传送,选择器选择寄存器的输出端,用寄存器设定的初始值输出,完成移位补0或者补1,
当源行有多个数据时,则根据需要同时对不同的数据进行移位或做取反操作;
步骤6. 通过控制器设置连接输入晶体管的输入晶体管字线为高电平,移位存储单元内的移位电容接收选择器的输出进行充放电;
步骤7. 移位电容完成充放电,控制器关闭输入晶体管,相应位线之间切断联系;
步骤8. 若需要对数据转存区的数据继续进行移位或做取反操作,则进入步骤2,反之则进入步骤9;
步骤9. 做行拷贝操作,将移位数据拷贝至目的行,进行存储或计算。
进一步的,所述的基于混合存储和移位操作进行数据的乘法计算,具体包括如下步骤:
步骤1. 通过控制器设置各列寄存器的初始值为一比特0;
步骤2. 对数据进行位扩展,设所述数据为被乘数A,位宽扩展一倍,预先存储于混合存储区中;
步骤3. 对另一数据进行最低位补0,设所述另一数据为乘数B,然后输入编组控制器中,编组控制器将乘数B按每3比特为单位进行划分编组;
步骤4. 根据编组结果,分别计算出索引,公式为Si=Bi + Bi-1 -2Bi+1 ,其中i为乘数B的比特位号,i的取值范围为0,2,4,6,8...,得出索引表。
步骤5. 根据索引表,依次对Sj进行计算查表,获取操作命令,其中的j 的取值范围为0,2,4,6,8...;查表操作完成后,对Si结果进行左移操作,左移的位数与i值相同,即对每一个Sj进行查表和移位操作,获得中间结果Pj
步骤6. 将被乘数A从混合存储区的非易失性存储器件中复制到易失性存储器件电容中,控制非易失字线使能,同时设置非易失源线接地,非易失位线设置为读电压Vread,非易失性存储器件进入读数据状态;将存储转换控制线使能,使易失性存储器件电容与非易失性存储器件导通,易失性存储器件电容根据非易失性存储器件的阻值状态以及电阻两端电压的变化进行充放电,获得存储数据;
步骤7. 通过字线驱动器设置源行的字线为高电平,源行所有与位线相连的字线晶体管打开,激活源行使得源行的易失性存储器件电容对相应的位线充放电;
步骤8. 灵敏放大器参考端电压设置为 Vdd/2,使能灵敏放大器,将位线信号放大并保持稳定;
步骤9. 通过字线驱动器设置源行的所有字线为低电平,关闭源行的所有字线晶体管;
步骤10. 通过控制器对同一行的选择器进行模式控制,选择器根据控制器进行选择操作,包括取反,移位,赋初值和不输出;
步骤11. 通过控制器设置同一行的输入晶体管字线为高电平, 使同一行的输入晶体管打开,数据转存区的电容根据输入信号进行充放电;
步骤12. 数据转存区的电容完成充放电,控制器设置输入晶体管字线331为低电平,关闭输入晶体管;如果数据直接进行计算,则转入行拷贝操作,将数据拷贝至计算区;如果数据需要存储,则转入行拷贝操作,将数据拷贝至普通内存存储区104;如果数据继续移位或取反,则转入步骤10;
步骤13. 当所有Sj操作都完成后,将所有Pj在计算区求和,得到最终乘积;
步骤14. 将乘积拷贝至普通内存存储区或输出。
本发明将非易失存储与内存计算结合起来,一方面计算数据可以很快的从非易失器件中获得,获取速度达到纳秒级,特别是对于深度神经网络推理这种场景,可将模型参数事先存放于非易失存储区,计算时能减少了数据访问的时间,提高了系统性能;另一方面通过改进电路操作流程,减少了不必要的数据搬移时间,使得移位时间也能缩短至纳秒级别,对于乘法计算这种有大量移位操作的计算来说效率能够有大的提升,进一步提高了系统性能。
附图说明
图1是现有技术中通用的DRAM存储微架构示意图;
图2是图1中以比特为单位的行拷贝、与操作和或操作示意图;
图3是本发明的装置结构示意框图;
图4是本发明的存储模块结构示意图;
图5是本发明的混合存储单元电路结构原理示意图;
图6是本发明的数据转存区的电路结构原理示意图;
图7是图6的局部放大示意图;
图8是本发明的实施例一的电路结构原理示意图;
图9是本发明的实施例二的电路结构原理示意图;
图10是本发明的实施例三的电路结构原理示意图;
图11是本发明的实施例四的电路结构原理示意图;
图12是本发明的实施例五的电路结构原理示意图;
图中,410-读写控制模块,400-计算控制器,500-存储模块,121-字线驱动器,120-控制器,119-非易失模块驱动器,401-编组控制器,402-索引表模块,403-操作控制器,100-混合存储区,102-计算区,104-普通内存存储区,118-数据转存区,330-灵敏放大器,112-混合存储单元,113-非易失字线,220-非易失性存储器件,114-非易失位线,115-非易失源线,116-字线,117-存储转换控制线,111-位线, 111_1-第一位线,第二位线111_2,111_3-第三位线,111_4-第四位线,111_5-第五位线,111_6-第六位线,111_7第七位线,201-第一晶体管, 202-第二晶体管,203-第三晶体管,210-电容,221-电阻,301-移位存储单元,320-选择器,第一选择器320_1,第二选择器320_2, 320_3-第三选择器, 320_4-第四选择器, 320_5-第五选择器, 320_6-第六选择器, 320_7-第七选择器,325-寄存器,第二寄存器325_2,第三寄存器325_3, 第五寄存器325_5,第七寄存器325_7,311-移位电容, 311_1-第一移位电容, 311_2-第二移位电容, 311_3-第三移位电容, 311_4-第四移位电容, 311_5-第五移位电容,310-第四晶体管,312-输入晶体管, 312_1-第一输入晶体管,第二输入晶体管312_2, 312_3-第三输入晶体管, 312_4-第四输入晶体管, 312_5-第五输入晶体管, 312_6-第六输入晶体管, 312_7-第七输入晶体管,331-输入晶体管字线,332-驱动字线,321-寄存器输出端,322-灵敏放大器取反端,323-灵敏放大器输出端。
具体实施方式
为了使本发明的目的、技术方案和效果更加清楚明,以下结合说明书附图和实施例,对本发明作进一步详细说明。
如图1所示,DRAM读写的基本原理为:每个存储单元包含一个电容和一个晶体管。电容负责存储数据;晶体管受行驱动器控制,实现电容与比特线的连接。多个存储单元组成一个二维矩阵,由字线控制选择某一行存储单元,由比特线连接一列存储单元。灵敏放大器负责感知电容对比特线充放电造成的电压差,并将电压差放大,使得行缓存器能接收到有效数据完成读操作或者将数据写回电容完成写操作。
如图2所示,基于DRAM的存内计算基本原理利用了内存单元的电容充放电特性,可以实现以比特为单位的行拷贝、与操作和或操作。
所述行拷贝为利用内存控制器通过控制字线驱动器对源行和目的行的存储单元进行操作,具体包括:首先将源行数据读取至比特线,然后通过灵敏放大器放大源行数据信号,最后将目的行打开接收数据。
如图3所示,一种基于混合存储的存内计算的装置,包括读写控制模块410、计算控制器400、存储模块500、字线驱动器121、控制器120和非易失模块驱动器119,所述读写控制模块410用于接收发送地址、数据、命令信息,所述计算控制器400包括编组控制器401、索引表模块402和操作控制器403。
所述读写控制模块410的输出端分别连接编组控制器401的输入端、非易失模块驱动器119的输入端和字线驱动器121的输入端,所述非易失模块驱动器119的输出端连接至存储模块500,所述编组控制器401的输出端分别连接索引表402的输入端和操作控制器403的输入端,所述索引表模块402的输出端连接至操作控制器403,所述操作控制器403的输出端分别连接至控制器120的输入端和字线驱动器121,所述字线驱动器121的输出端连接至存储模块500,所述控制器120的输出端连接至存储模块500。
如图4-5所示,所述存储模块500,包括:连接字线驱动器121的字线116和驱动字线332、连接控制器120的输入晶体管字线331、位线111以及均接入位线111的混合存储区100、计算区102、普通内存存储区104、数据转存区118和灵敏放大器330,所述灵敏放大器330通过位线111与数据转存区118连接,所述数据转存区118通过输入晶体管字线331连接控制器120,所述普通内存存储区104和计算区102均通过驱动字线332连接字线驱动器121,所述混合存储区100通过字线116连接字线驱动器121。
所述混合存储区100中设有混合存储单元112,所述混合存储单元112包括非易失字线113、非易失性存储器件220、非易失位线114、非易失源线115、存储转换控制线117、第一晶体管201、 第二晶体管202、第三晶体管203、电容210和电阻221,所述非易失字线113连接第一晶体管201的栅极,非易失源线115连接第一晶体管201的源极,所述第一晶体管201的漏极连接非易失性存储器件220的一端,非易失性存储器件220的另一端连接电阻221的一端,电阻221的另一端与电容210的一端连接后接入非易失位线114,电容210的另一端连接第二晶体管202的源极,所述位线111连接第二晶体管202的漏极,所述字线116连接第二晶体管202的栅极,所述第三晶体管203的栅极连接存储转换控制线117,所述第三晶体管203的漏极连接电阻221的一端,第三晶体管203的源极连接电容210的另一端。
所述非易失性存储器件220为RRAM、MRAM或STTRAM等不同的忆阻器。
所述电容210为易失性存储器件。
所述非易失模块驱动器119对所述非易失性存储器件220以列为单位进行管理,对连接所述非易失性存储器件220的非易失源线115和非易失位线114进行电压控制,以实现非易失性存储器件220的数据读写功能;字线驱动器121以行为单位,驱动一行混合存储单元112中连接易失性存储器件电容210的字线;所述字线驱动器121和控制器120相结合,对数据转存区118进行控制。
多行多列的混合存储单元112或普通内存存储区104的普通内存存储单元构成为存储阵列,同一列的混合存储单元112和普通内存存储区104的普通内存存储单元共用位线111和灵敏放大器330,同一行的混合存储单元112或普通内存存储单元在字线驱动器121的控制下并行工作。
当非易失字线113选中某一行时,通过非易失位线和非易失源线组合的写电压控制,对同一行的混合存储单元112写入不同的值;同理,当非易失字线113选中某一行时,通过非易失位线和非易失源线组合的读电压控制,对同一行的混合存储单元112读出数据。
具体的,所述混合存储区100将数据进行混合存储,包括如下步骤:
步骤1.将数据存储于存储阵列的非易失性存储器件220;
步骤2.将数据从非易失性存储器件220中转移至易失性存储器件电容210;
步骤3.关闭非易失性存储器件220,易失性存储器件电容210进行部分工作。
所述步骤1具体包括如下内容:
a.关闭第二晶体管202和第三晶体管203;
b.通过控制非易失字线113选中一行混合存储单元112,打开第一晶体管201,同时对非易失源线115和非易失位线114的进行组合控制,完成非易失性存储器件220的数据写入操作,进行写入操作时,各列之间相互独立,通过非易失字线113统一打开同一行混合存储单元112,写入后数据可持久保存于非易失性存储器件220中,即使系统下电也不会丢失;在实际操作时,字线驱动器121选择某一非易失字线113,非易失字线113同时与一行的多个非易失性存储器件220连接,同时操作多个非易失源线和非易失位线,可同时对多个晶体管进行打开或关闭操作,完成同一行混合存储单元112的多个数据的写入操作。
所述步骤2具体包括如下内容:
设置非易失源线115接地,非易失位线114设置为读电压Vread,非易失性存储器件220进入读数据状态;将连接第三晶体管203的存储转换控制线117设为高电平,打开第三晶体管203,电容210根据非易失性存储器件220的阻值状态以及电阻221两端电压的变化进行充放电,从而获得非易失性存储器件220的存储数据。
所述步骤3具体包括如下内容:
将非易失字线113、非易失位线114、非易失源线115都置低电平,使得第一晶体管201关闭,存储转换控制线117置低电平,使得第三晶体管203关闭;第二晶体管202和电容210组成的电路继续工作。
如果外部需要读取数据进行计算,则通过将字线116置高电平,打开第二晶体管202,电容210对位线111进行充放电完成数据的读取,同一行的多个混合存储单元112可以同时完成数据读取。
通过混合存储区100将数据进行混合存储的操作过程,使得一些常数,例如线性代数中的系数,深度神经网络中的权值等可以事先存放于非易失性存储器件220中,需要计算时可以在很短时间内获得数据并在内存中计算,减少了数据搬运时间。
如图6-7所示,所述数据转存区118设置在普通内存存储区104的普通内存存储单元构成的存储阵列中,数据转存区118包括若干移位存储单元301、选择器320和寄存器325,所述寄存器325的输出端321连接选择器320第一输入端,所述选择器320的输出端连接移位存储单元301。所述若干移位存储单元301通过组合用于存放一个或者多个数据,每个所述的移位存储单元301包括移位电容311、第四晶体管310和输入晶体管312,所述移位电容311连接第四晶体管310的源极,所述第四晶体管310的栅极连接字线驱动器121的驱动字线332,第四晶体管310的漏极连接位线111,所述输入晶体管312的栅极连接控制器120的输入晶体管字线331,输入晶体管312的源极连接第四晶体管310的源极,输入晶体管312的漏极连接选择器320的输出端,所述选择器320的第二输入端连接同一列灵敏放大器330的取反端322,选择器320第三输入端连接相邻列的灵敏放大器330的输出端323。
所述选择器320还和控制器120连接,所述灵敏放大器330的输出端323还与位线111相连;所述寄存器325还通过初始值数据总线与控制器120连接,并通过控制器120被预先设置固定存放某个一比特初始值。
所述数据转存区118通过字线驱动器121和控制器120对某一指定行的数据进行移位操作,所述指定行即为源行,所述源行为混合存储区100中的行或普通内存存储器104中的行,所述源行的各字线的初始状态都为低电平,各位线电压都为Vdd/2,Vdd为比特线电压,具体的,包括如下步骤:
步骤1.字线驱动器121设置源行的字线116为高电平,存储转换控制线117为低电平,打开源行所在第二晶体管202,关闭第三晶体管203,激活源行;
步骤2.源行的电容对其相应的位线充放电,使得相应的位线电压发生改变,所述相应的位线其中包括位线111和与位线111相邻的第一位线111_1。
步骤3.灵敏放大器330的参考端电压设置为 Vdd/2,使能灵敏放大器330,将步骤2中的位线电压变化放大并保持稳定,从而使灵敏放大器330获得并放大源行数据信息;
步骤4. 通过字线驱动器121控制源行的字线116为低电平,关闭源行;
步骤5. 通过控制器120对选择器320进行控制:
当位线111和第一位线111_1所含数据是同一个数据的不同比特位时,且需要取反时,选择器320选择灵敏放大器330的取反端322输出,
当位线111和第一位线111_1所含数据是同一个数据的不同比特位时,选择器320选择灵敏放大器330的输出端323输出,
当位线111和第一位线111_1所含数据不属于同一个数据时,第一位线111_1所在列的数据不可以传送至位线111所在列,选择器320选择寄存器325的输出端321,用寄存器325设定的初始值输出,完成移位补0或者补1,
当源行有多个数据时,则根据需要同时对不同的数据进行移位或做取反操作;
步骤6. 通过控制器120设置连接输入晶体管312的输入晶体管字线331为高电平,移位存储单元301内的移位电容311接收选择器320的输出进行充放电;
步骤7. 移位电容311完成充放电,控制器120关闭输入晶体管312,位线111和第一位线111_1切断联系;
步骤8. 若需要对数据转存区118的数据继续进行移位或做取反操作,则进入步骤2,反之则进入步骤9;
步骤9. 做行拷贝操作,将移位数据拷贝至目的行,进行存储或计算。
通过本发明的装置基于混合存储和移位进行存内乘法计算的方法,包括如下步骤:
步骤1. 通过控制器120设置各列的寄存器325的初始值为一比特0;
步骤2. 对数据进行位扩展,设所述数据为被乘数A,位宽扩展一倍,预先存储于混合存储区100中;
步骤3. 对另一数据进行最低位补0,设所述另一数据为乘数B,然后输入编组控制器401中,编组控制器401将乘数B按每3比特为单位进行划分编组;
步骤4. 根据编组结果,分别计算出索引,公式为Si=Bi + Bi-1 -2Bi+1 ,其中i为乘数B的比特位号,i的取值范围为0,2,4,6,8...,则索引表为:
Figure DEST_PATH_IMAGE001
步骤5. 根据索引表,依次对Sj进行计算查表,获取操作命令,其中的j 的取值范围为0,2,4,6,8...;查表操作完成后,对Si结果进行左移操作,左移的位数与i值相同,即对每一个Sj进行查表和移位操作,获得中间结果Pj
步骤6. 将被乘数A从混合存储区100的非易失性存储器件220中复制到易失性存储器件电容210中,控制非易失字线113使能,同时设置非易失源线115接地,非易失位线114设置为读电压Vread,非易失性存储器件220进入读数据状态;将存储转换控制线117使能,使电容210与非易失性存储器件220导通,电容210根据非易失性存储器件220的阻值状态以及电阻221两端电压的变化进行充放电,获得存储数据;
步骤7. 通过字线驱动器121设置源行的字线116为高电平,源行所有与位线相连的字线晶体管打开,激活源行使得源行的电容210对相应的位线充放电;
步骤8. 灵敏放大器330参考端电压设置为 Vdd/2,使能灵敏放大器330,将位线信号放大并保持稳定;
步骤9. 通过字线驱动器121设置源行的所有字线为低电平,关闭源行的所有字线晶体管;
步骤10. 通过控制器120对同一行的选择器320进行模式控制,选择器320根据控制器120进行选择操作,包括取反,移位,赋初值和不输出;
步骤11. 通过控制器120设置同一行的输入晶体管字线331为高电平, 使同一行的输入晶体管打开,数据转存区118的电容根据输入信号进行充放电;
步骤12. 数据转存区118的电容完成充放电,控制器120设置输入晶体管字线331为低电平,关闭输入晶体管312;如果数据直接进行计算,则转入行拷贝操作,将数据拷贝至计算区102;如果数据需要存储,则转入行拷贝操作,将数据拷贝至普通内存存储区104;如果数据继续移位或取反,则转入步骤10;
步骤13. 当所有Sj操作都完成后,将所有Pj在计算区102求和,得到最终乘积;
步骤14. 将乘积拷贝至普通内存存储区104或输出。
本发明的具体实施例包括如下。
实施例一,参考图8,单行数据的移位操作,其中单行数据为A=3’b101,电路中设有:第一位线111_1、第二位线111_2和第三位线111_3,选择器320、第一选择器320_1、第二选择器320_2和第三选择器320_3,输入晶体管312,第一输入晶体管312_1,第二输入晶体管312_2和第三输入晶体管312_3,第三寄存器325_3,具体的,包括如下步骤:
步骤1. 控制器120设置第三寄存器325_3初始值为一比特0;
步骤2. 数据A存储于混合存储区100的某一行,即源行;
步骤3. 数据A从非易失性存储器件220中复制到电容210,控制非易失字线113打开第一晶体管201,同时设置非易失源线115接地,非易失位线114设置为读电压Vread,非易失性存储器件220进入读数据状态;将第三晶体管203的存储转换控制线117设为高电平,此时将第三晶体管203打开,电容210根据非易失性存储器件220的状态进行充放电,从而获得非易失性存储器件220的存储数据。
步骤4. 通过字线驱动器121设置源行的字线为高电平,源行所在晶体管打开,此处源行数据从左往右依次为1,0,1,激活源行使得源行的电容对相应的位线充放电;
步骤5. 灵敏放大器330参考端电压设置为 Vdd/2,使能灵敏放大器组,将第一位线111_1、第二位线111_2和第三位线111_3信号放大,灵敏放大器处的信号从左往右依次也为1,0,1;
步骤6. 通过字线驱动器121设置源行的所有字线为低电平,关闭源行的所有字线晶体管;
步骤7. 控制器120对同一行的选择器进行模式控制,选择器320、第一选择器320_1、第二选择器320_2和第三选择器320_3选择将相应的灵敏放大器中的放大信号输出至输出端,其中的第三选择器320_3选择将第三寄存器325_3中的初始值0输出;
步骤8. 控制器120设置同一行的输入晶体管字线331为高电平,输入晶体管312,第一输入晶体管312_1,第二输入晶体管312_2和第三输入晶体管312_3打开,数据转存区118的电容根据输入信号进行充放电,从左往右信号值依次为1,0,1,0;
步骤9. 数据转存区118的电容完成充放电,控制器120将输入晶体管字线331设为低电平,关闭输入晶体管组;
步骤10.进行行拷贝操作,将移位数据拷贝至目的行,得结果4’b1010。
实施例二,参考图9,单行4比特数据的取反操作,其中单行4比特数据为A=4’b1100,电路中设有:位线111、第一位线111_1、第二位线111_2和第三位线111_3,选择器320、第一选择器320_1、第二选择器320_2,输入晶体管312、第一输入晶体管312_1、第二输入晶体管312_2和第三输入晶体管312_3,具体的,包括如下步骤:
步骤1. 数据A存储于混合存储区100的某一行,即源行;
步骤2. 数据A从非易失性存储器件220中复制到电容210;
步骤3. 通过字线驱动器121设置源行的字线为高电平,源行所在晶体管打开,此处源行数据从左往右依次为1,1,0,0,激活源行使得源行的电容对相应的位线充放电;
步骤4. 灵敏放大器330参考端电压设置为 Vdd/2,使能灵敏放大器组,将位线111、第一位线111_1、第二位线111_2和第三位线111_3信号放大,灵敏放大器处的信号从左往右依次也为1,1,0,0;灵敏放大器的反向信号为0,0,1,1;
步骤5. 通过字线驱动器121设置源行的所有字线为低电平,关闭源行的所有字线晶体管;
步骤6. 控制器120对同一行的选择器进行模式控制,选择器320、第一选择器320_1、第二选择器320_2选择将相应的灵敏放大器的放大信号反相输出至输出端;
步骤7. 控制器120设置同一行的输入晶体管字线331为高电平, 打开输入晶体管312、第一输入晶体管312_1、第二输入晶体管312_2和第三输入晶体管312_3,数据转存区118的电容根据输入信号进行充放电,从左往右信号值依次为1,1,0,0;
步骤8. 数据转存区118的电容完成充放电,控制器120将输入晶体管字线331设为低电平,关闭输入晶体管312、第一输入晶体管312_1、第二输入晶体管312_2和第三输入晶体管312_3;
步骤9. 进行行拷贝操作,将移位数据拷贝至目的行,得结果4’b1100。
实施例三,参考图10,两个数据同时移位的操作,其中数据包括A=2’b01,B=2’b10;电路中设有:第一位线111_1、第二位线111_2、第三位线111_3、第四位线111_4和第五位线111_5,选择器320、第一选择器320_1、第二选择器320_2、第三选择器320_3,第四选择器320_4、第五选择器320_5,输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4和第五输入晶体管312_5,移位电容311、第一移位电容311_1、第二移位电容311_2、第三移位电容311_3、第四移位电容311_4、第五移位电容311_5,第二寄存器325_2, 第五寄存器325_5,具体的,包括如下步骤:
步骤1. 控制器120设置第二寄存器325_2, 第五寄存器325_5初始值为一比特0;
步骤2. 数据A和B存储于混合存储区100的某一行,即源行,两者之间预留一列空位;
步骤3. 数据A和B从非易失性存储器件220中复制到电容210内;
步骤4. 通过字线驱动器121设置源行的字线为高电平,源行所在晶体管打开,此处源行数据在第一位线111_1和第二位线111_2列为0,1,在第四位线111_4和第五位线111_5列为1,0,激活源行使得源行的电容对相应的位线充放电;
步骤5. 灵敏放大器330参考端电压设置为 Vdd/2,使能灵敏放大器组,将第一位线111_1、第二位线111_2、第四位线111_4和第五位线111_5信号放大;
步骤6. 通过字线驱动器121设置源行的所有字线为低电平,关闭源行的所有字线晶体管;
步骤7. 控制器120对同一行的选择器进行模式控制,择器320、第一选择器320_1、第二选择器320_2、第三选择器320_3,第四选择器320_4、第五选择器320_5选择将相应的灵敏放大器的放大信号分别输出至各自输出端;
步骤8. 控制器120设置同一行的输入晶体管字线331为高电平,打开输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4和第五输入晶体管312_5,数据转存区118的电容根据输入信号进行充放电,移位电容311、第一移位电容311_1、第二移位电容311_2、第三移位电容311_3、第四移位电容311_4、第五移位电容311_5的值分别为0,1,0,1,0,0;
步骤9. 数据转存区118的电容完成充放电,控制器120将输入晶体管字线331设为低电平,关闭输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4和第五输入晶体管312_5;
步骤10. 进行行拷贝操作,将移位数据拷贝至目的行,得到结果: A移位后的结果为3’b010,B移位后的结果为3’b100。
实施例四,参考图11,两个数据分别进行移位和取反操作,其中数据包括A=2’b10,B=2’b11,电路中设有:第一位线111_1、第二位线111_2、第四位线111_4和第五位线111_5,第一选择器320_1、第二选择器320_2、第三选择器320_3、第四选择器320_4和第五选择器320_5,输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4和第五输入晶体管312_5,移位电容311、第一移位电容311_1、第二移位电容311_2、第三移位电容311_3、第四移位电容311_4、第五移位电容311_5,第五寄存器325_5,具体的,包括如下步骤:
步骤1. 控制器120设置第五寄存器325_5初始值为一比特0;
步骤2. 数据A和B存储于混合存储区100的某一行,即源行,两者之间预留一列空位,A进行取反操作,B进行移位操作;
步骤3. 数据A和B从非易失性存储器件220中复制到电容210内;
步骤4. 通过字线驱动器121设置源行的字线为高电平,源行所在晶体管打开,此处源行数据在第一位线111_1和第二位线111_2列为1,0,在第四位线111_4和第五位线111_5列为1,1,激活源行使得源行的电容对相应的位线充放电;
步骤5. 灵敏放大器330参考端电压设置为 Vdd/2,使能灵敏放大器组,将第一位线111_1、第二位线111_2、第四位线111_4和第五位线111_5信号放大;
步骤6. 通过字线驱动器121设置源行的所有字线为低电平,关闭源行的所有字线晶体管;
步骤7. 控制器120对同一行的选择器进行模式控制,第一选择器320_1、第二选择器320_2将取反灵敏放大器放大后的取反信号并分别输出,第三选择器320_3、第四选择器320_4和第五选择器320_5将灵敏放大器的放大信号并分别输出;
步骤8. 控制器120设置同一行的输入晶体管字线331为高电平,打开输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4和第五输入晶体管312_5,数据转存区118的电容根据输入信号进行充放电,移位电容311、第一移位电容311_1、第二移位电容311_2、第三移位电容311_3、第四移位电容311_4、第五移位电容311_5的值分别为0,1, 1,1,0;
步骤9. 数据转存区118的电容完成充放电,控制器120将输入晶体管字线331设为低电平,关闭输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4和第五输入晶体管312_5;
步骤10.进行行拷贝操作,将移位数据拷贝至目的行,得到结果:,A取反后的结果为2’b01,B移位后的结果为3’b110。
实施例五,参考图12,两个数据进行乘法计算操作,数据都以补码形式表示,其中数据包括被乘数A=4’b0111,乘数B=4’b0011,电路中设有:位线111、第一位线111_1、第二位线111_2、第三位线111_3、第四位线111_4、第五位线111_5、第六位线111_6和第七位线111_7,选择器320、第一选择器320_1、第二选择器320_2、第三选择器320_3,第四选择器320_4、第五选择器320_5、第六选择器320_6和第七选择器320_7,输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4、第五输入晶体管312_5、第六输入晶体管312_6和第七输入晶体管312_7,第七寄存器325_7,具体的,包括如下步骤:
步骤1. 控制器120设置第七寄存器325_7初始值为一比特0;
步骤2. 将被乘数A进行位扩展,为8比特数8’b0000_0111,预先存储于混合存储区100中;
步骤3. 将乘数B输入编组控制器401中,编组控制器401将乘数B按3比特为单位进行划分,分成3’b110,3’b001两组;
步骤4. 根据分组结果,通过索引表,分别计算索引S=Bi + Bi-1 -2Bi+1,其中i为乘数B的比特位号,即S0 = B0 + B-1 -2B2 = -1 S1=B2+B3-2B4=1;
步骤5.根据S0进行查索引表的操作,获取操作命令为对被乘数A进行取反操作;
步骤6.将被乘数A从混合存储区100的非易失性存储器220中复制到易失性存储器件电容210中,控制非易失字线113使能,同时设置非易失源线115接地,非易失位线114设置为读电压Vread,非易失性存储器220进入读数据状态;将与电容210相连的晶体管打开,电容210根据非易失存储区的状态进行充放电,从而获得存储的数据信息,所述非易失存储区的状态为非易失性存储器件220的阻值状态以及电阻221两端电压的变化;
步骤7. 通过字线驱动器121设置源行的字线为高电平,源行所在晶体管打开,此处源行数据从左往右依次为0,0,0,0,0,1,1,1,激活源行使得源行的电容对相应的位线充放电;
步骤8.灵敏放大器330参考端设置为 Vdd/2,使能灵敏放大器组,将位线111, 第一位线111_1、第二位线111_2、第三位线111_3、第四位线111_4、第五位线111_5、第六位线111_6和第七位线111_7的信号放大,灵敏放大器处的信号从左往右依次也为0,0,0,0,0,1,1,1;
步骤9. 通过字线驱动器121设置源行的所有字线为低电平,关闭源行的所有字线晶体管;
步骤10. 控制器120对同一行的选择器进行模式控制,选择器320、第一选择器320_1、第二选择器320_2、第三选择器320_3,第四选择器320_4、第五选择器320_5、第六选择器320_6和第七选择器320_7选择将相应的灵敏放大器的反相放大信号输出至输出端;
步骤11. 控制器120设置同一行的输入晶体管字线331为高电平,打开输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4、第五输入晶体管312_5、第六输入晶体管312_6和第七输入晶体管312_7,数据转存区118的电容根据输入信号进行充放电,从左往右信号值依次为1,1,1,1,1,0,0,0;
步骤12. 数据转存区118的电容完成充放电,控制器120将输入晶体管字线331设为低电平,关闭输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4和第五输入晶体管312_5、第六输入晶体管312_6和第七输入晶体管312_7;
步骤13. 进行行拷贝操作,将移位数据拷贝至计算区102,得取反结果A_inv =8’b1111_1000;
步骤14. 在计算区进行A_inv 加1 计算,得到被乘数A的补码A_comp=8’b1111_1001;
步骤15. 将A_comp行拷贝至普通存储区104;
步骤16. 根据S1进行查索引表操作,获取操作命令为对被乘数A进行取原值操作后,移位2比特;
步骤17. 将被乘数A从混合存储区100的非易失性存储器220中复制到易失性存储器件电容210中,控制非易失字线113使能,同时设置非易失源线115接地,非易失位线114设置为读电压Vread,非易失性存储器220进入读数据状态;将与电容210相连的晶体管打开,电容210根据非易失存储区的状态进行充放电,从而获得存储数据信息;
步骤18. 通过字线驱动器121设置源行的字线116为高电平,源行所在晶体管打开,此处源行数据从左往右依次为0,0,0,0,0,1,1,1,激活源行使得源行的电容对相应的位线充放电;
步骤19. 灵敏放大器330参考端电压设置为 Vdd/2,使能灵敏放大器组,将位线111、第一位线111_1、第二位线111_2、第四位线111_4、第五位线111_5、第六位线111_6和第七位线111_7信号放大,灵敏放大器处的信号从左往右依次也为0,0,0,0,0,1,1,1;
步骤20. 通过字线驱动器121设置源行的所有字线为低电平,关闭源行的所有字线晶体管;
步骤21. 控制器120对同一行的选择器进行模式控制,选择器320、第一选择器320_1、第二选择器320_2、第三选择器320_3,第四选择器320_4、第五选择器320_5、第六选择器320_6和第七选择器320_7选择将相应的前一级的灵敏放大器的放大信号输出至输出端;
步骤22. 通过控制器120设置同一行的输入晶体管字线331为高电平,输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3打开,数据转存区118的电容根据输入信号进行充放电,从左往右信号值依次为0,0,0,0,1,1,1,0;
步骤23. 数据转存区118的电容完成充放电,控制器120设置输入晶体管字线331为低电平,关闭输入晶体管312、 第一输入晶体管312_1、第二输入晶体管312_2、第三输入晶体管312_3、第四输入晶体管312_4和第五输入晶体管312_5、第六输入晶体管312_6和第七输入晶体管312_7;
步骤24. 将数据转存区118的数据再次进行移位操作得移位结果A_ss=8’b0001_1100;
步骤25. 将A_ss用行拷贝命令拷贝至计算区102,将A_comp也拷贝至计算区102,两者进行加法运算,得乘积P=8’b0001_0101,即21;
步骤26. 将乘积P拷贝至普通内存存储区104或输出。

Claims (10)

1.一种基于混合存储的存内计算的装置,包括读写控制模块(410)、计算控制器(400)、存储模块(500)、字线驱动器(121)、控制器(120)和非易失模块驱动器(119),其特征在于,所述读写控制模块(410)用于接收发送地址、数据、命令信息,所述计算控制器(400)包括编组控制器(401)、索引表模块(402)和操作控制器(403);所述读写控制模块(410)的输出端分别连接编组控制器(401)的输入端、非易失模块驱动器(119)的输入端和字线驱动器(121)的输入端,所述非易失模块驱动器(119)的输出端连接至存储模块(500),所述编组控制器(401)的输出端分别连接索引表模块(402)的输入端和操作控制器(403)的输入端,所述索引表模块(402)的输出端连接至操作控制器(403),所述操作控制器(403)的输出端分别连接至控制器(120)的输入端和字线驱动器(121),所述字线驱动器(121)的输出端连接至存储模块(500),所述控制器(120)的输出端连接至存储模块(500)。
2.如权利要求1中所述的一种基于混合存储的存内计算的装置,其特征在于,所述存储模块(500),包括:连接字线驱动器(121)的字线(116)和驱动字线(332)、连接控制器(120)的输入晶体管字线(331)、位线(111)以及均接入位线(111)的混合存储区(100)、计算区(102)、普通内存存储区(104)、数据转存区(118)和灵敏放大器(330),所述灵敏放大器(330)通过位线(111)与数据转存区(118)连接,所述数据转存区(118)通过输入晶体管字线(331)连接控制器(120),所述普通内存存储区(104)和计算区(102)均通过驱动字线(332)连接字线驱动器(121),所述混合存储区(100)通过字线(116)连接字线驱动器(121),所述字线驱动器(121)和控制器(120)相结合,对数据转存区(118)进行控制。
3.如权利要求2中所述的一种基于混合存储的存内计算的装置,其特征在于,所述混合存储区(100)中设有多行多列的混合存储单元(112),多行多列的混合存储单元(112)构成为存储阵列,其中的混合存储单元(112)包括非易失字线(113)、非易失性存储器件(220)、非易失位线(114)、非易失源线(115)、存储转换控制线(117)、第一晶体管(201)、 第二晶体管(202)、第三晶体管(203)、易失性存储器件电容(210)和电阻(221),所述非易失字线(113)连接第一晶体管(201)的栅极,非易失源线(115)连接第一晶体管(201)的源极,所述第一晶体管(201)的漏极连接非易失性存储器件(220)的一端,非易失性存储器件(220)的另一端连接电阻(221)的一端,电阻(221)的另一端与易失性存储器件电容(210)的一端连接后接入非易失位线(114),易失性存储器件电容(210)的另一端连接第二晶体管(202)的源极,所述位线(111)连接第二晶体管(202)的漏极,所述字线(116)连接第二晶体管(202)的栅极,所述第三晶体管(203)的栅极连接存储转换控制线(117),所述第三晶体管(203)的漏极连接电阻(221)的一端,第三晶体管(203)的源极连接易失性存储器件电容(210)的另一端。
4.如权利要求3所述的一种基于混合存储的存内计算的装置,其特征在于,所述非易失模块驱动器(119)对所述非易失性存储器件(220)以列为单位进行管理,对连接所述非易失性存储器件(220)的非易失源线(115)和非易失位线(114)进行电压控制,以实现非易失性存储器件(220)的数据读写功能;字线驱动器(121)以行为单位,驱动一行混合存储单元(112)中连接易失性存储器件电容(210)的字线。
5.如权利要求2所述的一种基于混合存储的存内计算的装置,其特征在于,所述数据转存区(118)设置在普通内存存储区(104)的普通内存存储单元构成的存储阵列中,数据转存区(118)包括若干移位存储单元(301)、选择器(320)和寄存器(325),所述寄存器(325)的输出端(321)连接选择器(320)第一输入端,所述选择器(320)的输出端连接移位存储单元(301),所述选择器(320)还和控制器(120)连接,所述寄存器(325)还通过初始值数据总线与控制器(120)连接,并通过控制器(120)被预先设置固定存放某个一比特初始值,所述若干移位存储单元(301)通过组合用于存放一个或者多个数据。
6.如权利要求5所述的一种基于混合存储的存内计算的装置,其特征在于,每个所述的移位存储单元(301)包括移位电容(311)、第四晶体管(310)和输入晶体管(312),所述移位电容(311)连接第四晶体管(310)的源极,所述第四晶体管(310)的栅极连接字线驱动器(121)的驱动字线(332),第四晶体管(310)的漏极连接位线(111),所述输入晶体管(312)的栅极连接控制器(120)的输入晶体管字线(331),输入晶体管(312)的源极连接第四晶体管(310)的源极,输入晶体管(312)的漏极连接选择器(320)的输出端,所述选择器(320)的第二输入端连接同一列灵敏放大器(330)的取反端(322),选择器(320)第三输入端连接相邻列的灵敏放大器(330)的输出端(323)。
7.一种基于混合存储的存内计算的方法,其特征在于,包括:首先通过混合存储区(100)将数据进行混合存储,然后利用数据转存区(118)通过字线驱动器(121)和控制器(120)对某一指定行的数据进行移位操作,最后基于混合存储和移位操作进行数据的乘法计算。
8.如权利要求7所述的一种基于混合存储的存内计算的方法,其特征在于,所述通过混合存储区(100)将数据进行混合存储,具体包括如下步骤:
步骤1.将数据存储于存储阵列的非易失性存储器件(220),具体为:
步骤1.1. 关闭第二晶体管(202)和第三晶体管(203);
步骤1.2. 通过控制非易失字线(113)选中一行混合存储单元(112),打开第一晶体管(201),同时对非易失源线(115)和非易失位线(114)的进行组合控制,完成非易失性存储器件(220)的数据写入操作,进行写入操作时,各列之间相互独立,通过非易失字线(113)统一打开同一行混合存储单元(112),写入后数据可持久保存于非易失性存储器件(220)中,即使系统下电也不会丢失;
步骤2. 将数据从非易失性存储器件(220)中转移至易失性存储器件电容(210),具体为:设置非易失源线(115)接地,非易失位线(114)设置为读电压,非易失性存储器件(220)进入读数据状态;将连接第三晶体管(203)的存储转换控制线(117)设为高电平,打开第三晶体管(203),易失性存储器件电容(210)根据非易失性存储器件(220)的阻值状态以及电阻(221)两端电压的变化进行充放电,从而获得非易失性存储器件(220)的存储数据;
步骤3. 关闭非易失性存储器件(220),易失性存储器件电容(210)进行部分工作,具体为:将非易失字线(113)、非易失位线(114)、非易失源线(115)都置低电平,使得第一晶体管(201)关闭,存储转换控制线(117)置低电平,使得第三晶体管(203)关闭;第二晶体管(202)和易失性存储器件电容(210)组成的电路继续工作。
9.如权利要求7所述的一种基于混合存储的存内计算的方法,其特征在于,所述利用数据转存区(118)通过字线驱动器(121)和控制器(120)对某一指定行即源行的数据进行移位操作,所述源行为混合存储区(100)中的行或普通内存存储区(104)中的行,具体的,包括如下步骤:
步骤1. 字线驱动器(121)设置源行的字线(116)为高电平,存储转换控制线(117)为低电平,打开源行所在第二晶体管(202),关闭第三晶体管(203),激活源行;
步骤 2. 源行的各个电容对其相应位线充放电,使得相应位线电压发生改变;
步骤3. 灵敏放大器(330)的参考端电压设置为 Vdd/2,使能灵敏放大器(330),将步骤2中的位线电压变化放大并保持稳定,从而使灵敏放大器(330)获得并放大源行数据信息;
步骤4. 通过字线驱动器(121)控制源行的字线(116)为低电平,关闭源行;
步骤5. 通过控制器(120)对选择器(320)进行控制:
当相应位线所含数据是同一个数据的不同比特位时,且需要取反时,选择器(320)选择灵敏放大器(330)的取反端(322)输出,
当相应位线所含数据是同一个数据的不同比特位时,选择器(320)选择灵敏放大器(330)的输出端(323)输出,
当相应位线所含数据不属于同一个数据时,各位线所在列的数据不可以互相传送,选择器(320)选择寄存器(325)的输出端(321),用寄存器(325)设定的初始值输出,完成移位补0或者补1,
当源行有多个数据时,则根据需要同时对不同的数据进行移位或做取反操作;
步骤6. 通过控制器(120)设置连接输入晶体管(312)的输入晶体管字线(331)为高电平,移位存储单元(301)内的移位电容(311)接收选择器(320)的输出进行充放电;
步骤7. 移位电容(311)完成充放电,控制器(120)关闭输入晶体管(312),相应位线之间切断联系;
步骤8. 若需要对数据转存区(118)的数据继续进行移位或做取反操作,则进入步骤2,反之则进入步骤9;
步骤9. 做行拷贝操作,将移位数据拷贝至目的行,进行存储或计算。
10.如权利要求7所述的一种基于混合存储的存内计算的方法,其特征在于,所述的基于混合存储和移位操作进行数据的乘法计算,具体包括如下步骤:
步骤 1. 通过控制器(120)设置各列的寄存器(325)的初始值为一比特0;
步骤 2. 对数据进行位扩展,设所述数据为被乘数A,位宽扩展一倍,预先存储于混合存储区(100)中;
步骤 3. 对另一数据进行最低位补0,设所述另一数据为乘数B,然后输入编组控制器(401)中,编组控制器(401)将乘数B按每3比特为单位进行划分编组;
步骤 4. 根据编组结果,分别计算出索引,公式为Si=Bi + Bi-1 -2Bi+1 ,其中i为乘数B的比特位号,i的取值范围为不小于0的任意偶数,得出索引表;
步骤5. 根据索引表,依次对Sj进行计算查表,获取操作命令,其中的j的取值范围为不小于0的任意偶数;查表操作完成后,对Si结果进行左移操作,左移的位数与i值相同,即对每一个Sj进行查表和移位操作,获得中间结果Pj
步骤6. 将被乘数A从混合存储区(100)的非易失性存储器件(220)中复制到易失性存储器件电容(210)中,控制非易失字线(113)使能,同时设置非易失源线(115)接地,非易失位线(114)设置为读电压,非易失性存储器件(220)进入读数据状态;将存储转换控制线(117)使能,使易失性存储器件电容(210)与非易失性存储器件(220)导通,易失性存储器件电容(210)根据非易失性存储器件(220)的阻值状态以及电阻(221)两端电压的变化进行充放电,获得存储数据;
步骤7. 通过字线驱动器(121)设置源行的字线(116)为高电平,源行所有与位线相连的字线晶体管打开,激活源行使得源行的易失性存储器件电容(210)对相应的位线充放电;
步骤8. 灵敏放大器(330)参考端电压设置为 Vdd/2,使能灵敏放大器(330),将位线信号放大并保持稳定;
步骤 9. 通过字线驱动器(121)设置源行的所有字线为低电平,关闭源行的所有字线晶体管;
步骤10. 通过控制器(120)对同一行的选择器(320)进行模式控制,选择器(320)根据控制器(120)进行选择操作,包括取反,移位,赋初值和不输出;
步骤11. 通过控制器(120)设置同一行的输入晶体管字线(331)为高电平, 使同一行的输入晶体管打开,数据转存区(118)的电容根据输入信号进行充放电;
步骤12. 数据转存区(118)的电容完成充放电,控制器(120)设置输入晶体管字线(331)为低电平,关闭输入晶体管(312);如果数据直接进行计算,则转入行拷贝操作,将数据拷贝至计算区(102);如果数据需要存储,则转入行拷贝操作,将数据拷贝至普通内存存储区(104);如果数据继续移位或取反,则转入步骤10;
步骤13. 当所有Sj操作都完成后,将所有Pj在计算区102求和,得到最终乘积;
步骤14. 将乘积拷贝至普通内存存储区(104)或输出。
CN202011137494.XA 2020-10-22 2020-10-22 一种基于混合存储的存内计算的方法与装置 Active CN112015673B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011137494.XA CN112015673B (zh) 2020-10-22 2020-10-22 一种基于混合存储的存内计算的方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011137494.XA CN112015673B (zh) 2020-10-22 2020-10-22 一种基于混合存储的存内计算的方法与装置

Publications (2)

Publication Number Publication Date
CN112015673A CN112015673A (zh) 2020-12-01
CN112015673B true CN112015673B (zh) 2021-03-16

Family

ID=73527618

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011137494.XA Active CN112015673B (zh) 2020-10-22 2020-10-22 一种基于混合存储的存内计算的方法与装置

Country Status (1)

Country Link
CN (1) CN112015673B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112581996B (zh) * 2020-12-21 2023-07-25 东南大学 基于磁性随机存储器的时域存内计算阵列结构
CN113257306B (zh) * 2021-06-10 2021-11-26 中科院微电子研究所南京智能技术研究院 一种基于静态随机存取存储器的存算一体阵列及加速装置
CN113391786B (zh) * 2021-08-17 2021-11-26 中科南京智能技术研究院 一种多位正负权重的计算装置
CN114023362B (zh) * 2021-10-22 2024-01-12 苏州浪潮智能科技有限公司 一种数据访问方法、装置、设备及计算机可读存储介质
CN117437944B (zh) * 2023-12-20 2024-03-08 长鑫存储技术有限公司 存储器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140028677A1 (en) * 2011-12-31 2014-01-30 Intel Corporation Graphics lighting engine including log and anti-log units
CN111462798A (zh) * 2020-03-31 2020-07-28 复旦大学 一种用于存储器或存内计算的阵列单元结构及其工作方法
CN111627481A (zh) * 2020-05-20 2020-09-04 中国科学院微电子研究所 一种字线译码电路、字线选通方法及存储器和电子设备
CN111798896A (zh) * 2020-06-01 2020-10-20 北京航空航天大学 一种基于磁随机存储器的支持通用计算的存内计算系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140028677A1 (en) * 2011-12-31 2014-01-30 Intel Corporation Graphics lighting engine including log and anti-log units
CN111462798A (zh) * 2020-03-31 2020-07-28 复旦大学 一种用于存储器或存内计算的阵列单元结构及其工作方法
CN111627481A (zh) * 2020-05-20 2020-09-04 中国科学院微电子研究所 一种字线译码电路、字线选通方法及存储器和电子设备
CN111798896A (zh) * 2020-06-01 2020-10-20 北京航空航天大学 一种基于磁随机存储器的支持通用计算的存内计算系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
低面积低功耗的机器学习运算单元设计;周聖元等;《高技术通讯》;20191231;第12-18页 *

Also Published As

Publication number Publication date
CN112015673A (zh) 2020-12-01

Similar Documents

Publication Publication Date Title
CN112015673B (zh) 一种基于混合存储的存内计算的方法与装置
US10431263B2 (en) Simulating access lines
CN110597555B (zh) 非易失性存内计算芯片及其运算控制方法
EP3373304A2 (en) Semiconductor cell for performing a logic xnor or xor operation
US11568200B2 (en) Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference
JP3898152B2 (ja) 演算機能付き記憶装置および演算記憶方法
CN109902822B (zh) 基于斯格明子赛道存储器的内存计算系统及方法
US20180024926A1 (en) Apparatuses and methods for transferring data
US10854247B2 (en) Apparatuses and methods to selectively perform logical operations
CN110598858A (zh) 基于非易失性存内计算实现二值神经网络的芯片和方法
US11360768B2 (en) Bit string operations in memory
WO2020103470A1 (zh) 一种基于1t1r存储器的乘法器及运算方法
CN113785290B (zh) 存储器装置和控制存储器装置的方法
CN113467751A (zh) 一种基于磁性随机存储器的模拟域存内计算阵列结构
US20210132908A1 (en) In-memory arithmetic processors
WO2007094133A1 (ja) 強誘電体キャパシタを用いた演算処理回路および演算方法
US20220343969A1 (en) Logical operations using memory cells
CN113315506B (zh) 一种相变存储器时序可重构布尔逻辑电路、方法及装置
US20180349052A1 (en) Shift skip
CN113658625A (zh) 基于1t1r阵列的可重构状态逻辑操作电路及方法
CN113539327A (zh) 一种相变存储单元实现快速逻辑计算装置及数据检索方法
US20230317124A1 (en) Memory system and operating method of memory system
US11941371B2 (en) Bit string accumulation
CN117170743A (zh) 一种异构关联处理器系统及其稀疏矩阵向量乘法方法
CN118298868A (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