CN104898990A - 运算存储阵列及其操作方法 - Google Patents

运算存储阵列及其操作方法 Download PDF

Info

Publication number
CN104898990A
CN104898990A CN201510305628.7A CN201510305628A CN104898990A CN 104898990 A CN104898990 A CN 104898990A CN 201510305628 A CN201510305628 A CN 201510305628A CN 104898990 A CN104898990 A CN 104898990A
Authority
CN
China
Prior art keywords
voltage
resistive element
bit line
wordline
apply
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.)
Pending
Application number
CN201510305628.7A
Other languages
English (en)
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.)
Peking University
Original Assignee
Peking University
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 Peking University filed Critical Peking University
Priority to CN201510305628.7A priority Critical patent/CN104898990A/zh
Publication of CN104898990A publication Critical patent/CN104898990A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Semiconductor Memories (AREA)

Abstract

提供了一种运算存储阵列及其操作方法。运算存储阵列可以包括:沿第一方向延伸的多条字线;沿与第一方向交叉的第二方向延伸的多条位线;分别设置于各位线和各字线的交叉点处且与相应位线和相应字线连接的多个阻变单元,每一阻变单元在高阻态和低阻态之间可切换并因此存储相应的数据;连接到每一条字线的基准单元,基准单元的一端连接到字线,而另一端连接到基准电压,其中基准单元的阻值在阻变单元的高阻态阻值和低阻态阻值之间;以及控制器,用于通过向位线施加电压脉冲序列,对连接到同一条字线的阻变单元中存储的数据进行逻辑运算。

Description

运算存储阵列及其操作方法
技术领域
本公开一般地涉及半导体集成电路,更具体地,涉及一种可以同时计算和存储、具有并行运算能力的运算存储阵列及其操作方法。
背景技术
传统计算机以及其它具有计算能力的电子设备都是基于冯诺依曼体系制造的,它们的共同特点是将系统中的运算部分和存储部分分开。例如计算机中通常包括运算器、存储器和控制器等几个部分,它们之间通过总线传递数据。在计算时,先要从存储器中读取数据,然后通过总线把这些数据从存储器传递到运算器中,并在运算器中完成计算,最后再通过总线把计算后得到的结果传回存储器,并重新存储。在这样的计算过程中,大量的能量并未直接用于计算或存储数据,而是浪费在总线反复传递数据的过程中。当运算器处理数据的速度与存储器的读、写速度不匹配时,还会造成计算速度的降低。此外,传统的计算系统一般都是串行执行指令的,即每一条指令按照先后顺序逐一执行,而理想的计算系统应能够并行执行指令,即多条指令可以同时执行。
在当前大数据和物联网快速发展、移动设备广泛普及的时代背景下,传统的计算设备在能耗、速度等方面已逐渐难以满足人们的需求,需要突破冯诺依曼提出的计算机体系,发展新型计算系统。目前已提出的一种可行的方案是仿照人脑的结构,发展神经形态计算系统。这种系统具有并行执行指令、存储和运算不分离的特点,可以大大提高运算效率、降低能耗。但是,其计算方法与传统计算机完全不同,需要重新发展编程语言和相应的程序。如何在不改变传统编程方法的基础发展新型高效计算系统,仍然是值得探索的问题。
发明内容
本公开的目的至少部分地在于提供一种运算存储阵列及其操作方法。
根据本公开的一个方面,提供了一种运算存储阵列,包括:沿第一方向延伸的多条字线;沿与第一方向交叉的第二方向延伸的多条位线;分别设置于各位线和各字线的交叉点处且与相应位线和相应字线连接的多个阻变单元,每一阻变单元在高阻态和低阻态之间可切换并因此存储相应的数据;连接到每一条字线的基准单元,基准单元的一端连接到字线,而另一端连接到基准电压,其中基准单元的阻值在阻变单元的高阻态阻值和低阻态阻值之间;以及控制器,用于通过向位线施加电压脉冲序列,对连接到同一条字线的阻变单元中存储的数据进行逻辑运算。
根据本公开的另一方面,提供了一种对运算存储阵列进行操作的方法,其中,运算存储阵列包括沿第一方向延伸的多条字线、沿与第一方向交叉的第二方向延伸的多条位线、分别设置于各位线和各字线的交叉点处且与相应位线和相应字线连接的多个阻变单元、以及连接到每一条字线的基准单元,其中,每一阻变单元在高阻态和低阻态之间可切换并因此存储相应的数据,基准单元的一端连接到字线,而另一端连接到基准电压,其中基准单元的阻值在阻变单元的高阻态阻值和低阻态阻值之间,该方法包括:通过向位线施加电压脉冲序列,对连接到同一条字线的阻变单元中存储的数据进行逻辑运算。
根据本公开的实施例,提供了一种不同于冯诺依曼计算机体系框架的计算体系结构与系统,该体系结构与计算系统可基于阻变器件实现,能执行传统布尔逻辑,具有能够并行执行指令、运算和存储不分离的特点,在不改变传统编程方法的基础上,可实现新型高能效计算机或其它智能设备。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出冯诺依曼体系框架;
图2示意性示出了根据本公开实施例的计算体系框架;
图3示意性示出了根据本公开实施例的运算存储器的结构;
图4(a)示意性示出了阻变器件的结构,图4(b)示意性示出了包括这种阻变器件的阻变单元在字线和位线之间的连接方式,图4(c)示意性示出了包括阻变器件和限制器件的阻变单元在字线和位线之间的连接方式;
图5示意性示出了阻变单元107能够用于(非易失性)逻辑运算的原理;
图6示意性示出了根据本公开实施例的“非”逻辑的运算方式;
图7(a)示意性示出了根据本公开实施例的“或”逻辑的运算方式,图7(b)示意性示出了根据本公开另一实施例的“或”逻辑的运算方式;
图8示意性示出了根据本公开实施例的“与”逻辑的运算方式;
图9(a)示意性示出了根据本公开实施例的“异或”逻辑的运算方式,图9(b)示意性示出了根据本公开另一实施例的“异或”逻辑的运算方式;
图10示意性示出了根据本公开实施例的“全加”运算;
图11是示意性示出了根据本公开实施例的运算存储器执行逻辑运算和数据存储的框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在附图中示出了根据本公开实施例的各种结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种元件的形状以及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的元件。
在本公开的上下文中,当将一层/元件称作位于另一层/元件“上”时,该层/元件可以直接位于该另一层/元件上,或者它们之间可以存在居中层/元件。另外,如果在一种朝向中一层/元件位于另一层/元件“上”,那么当调转朝向时,该层/元件可以位于该另一层/元件“下”。
图1示意性示出冯诺依曼体系框架。如图1所示,在冯诺依曼体系框架中,存储器和中央处理器(CPU)分开,CPU包括运算器和控制器,运算器和控制器分别通过总线与存储器相连。
图2示意性示出了根据本公开实施例的计算体系框架(下面称为运存一体体系框架,或者MemComp体系框架)。如图2所示,在该MemComp体现框架中,“运算存储器”模块中的每个单元根据需要可以起到运算的功能和/或存储的功能。因此,可以将运算存储器模块中的单元分为“并行计算”部分和“存储学习”部分(注意,这主要是逻辑上的划分)。
数据通过输入设备输入到运算存储器模块中,运算存储器模块在控制器发出的指令控制下对数据进行处理,处理后的结果可以存储在刚刚完成运算的单元内,等待用于后面的运算或者输出。也即,除了必需的输入和输出部分外,本发明提出的运存一体体系框架主要包括控制器和运算存储器(简称为“运存器”)两部分。控制器的作用是产生相应的脉冲信号,从而对运存器发出指令。控制器电路结构及功能与传统计算机相似,在此不再详细描述。
图3示意性示出了根据本公开实施例的运算存储器的结构。如下所述,运算存储器包括阻变单元构成的阵列,因此也称作运算存储阵列。
如图3所示,根据该实施例的运算存储阵列100包括沿第一方向(例如,图中水平方向)延伸的多条(在此,假设m条)字线103,具体地,WL1、WL2、WL3…、WLm,以及沿与第一方向交叉(例如,垂直)的第二方向(例如,图中竖直方向)延伸的多条(在此,假设n条)位线105,具体地,BL1、BL2、BL3…、BLn。在字线103和位线105的交叉点处,设置有阻变单元107。阻变单元107的一端连接至相应的字线103,且另一端连接至相应的位线105。因此,阻变单元107形成为m×n的阵列。
阻变单元107可在高阻态和低阻态之间切换,并因此可以存储相应的数据。通常,由高阻态到低阻态的转变称为编程(program)或者置位(SET),由低阻态到高阻态的转变称为擦除(eraze)或者复位(RESET)。阻变单元107可以包括阻变器件。例如,阻变器件可以具有金属-绝缘体-金属的三明治结构,即在两层金属电极之间加入一层具有阻变特性的介质薄膜材料。阻变器件的工作原理是在阻变材料两端施加大小或者极性不同的电压,控制阻变材料的电阻值在高低电阻态之间转换。图4(a)示意性示出了阻变器件的结构。如图4(a)所示,阻变器件400可以包括设于金属电极401和403之间的薄膜阻变材料405。金属电极401和403可以包括Cu、Ti、TiN、Ta、TaN、W、WN、Al、Pt、Si、Ir等,阻变材料405可以包括HfO2、Ta2O5、TiO2、Al2O3、SiO2、GeSe、GeS等或其组合。各层的厚度可以根据所应用的集成工艺而定。尽管在图4(a)的示例中将三层示出为圆柱体的上下堆叠,但是阻变器件的结构不限于此,例如可以是长方体或正方体的上下堆叠,或者可以是柱状径向堆叠。图4(b)示意性示出了包括这种阻变器件的阻变单元在字线WL和位线BL之间的连接方式。根据本公开的另一实施例,如图4(c)所示,除了阻变器件400之外,阻变单元107还可以包括与阻变器件串联的限制器件407,用于抑制交叉阵列中的串扰问题。限制器件为电流-电压关系具有非线性特征的两端器件,可以是(但不限于)二极管、肖特基二极管、另一阻变器件等。在此需要指出的是,这种限制器件本身在交叉阵列(例如,各种存储单元阵列)中是常用的,在此不再赘述。
由于阻变器件具有非易失存储数据的特性,因此每个阻变单元都可以看成存储器,阻变器件处于高阻态和低阻态分别对应了存储“0”和“1”,通过(电压)脉冲信号可以控制对每个单元进行读写。本领域存在多种方式对这种阻变单元进行数据读取/写入等存储器操作,在此不再赘述。此外,本领域存在多种方式来设置阵列的外围电路(例如,译码器电路、读出放大电路等),以将这种阵列用作非易失性存储器,因此在此对该阵列中涉及存储器操作的电路不再赘述。
根据本公开的实施例,除了存储功能之外,阻变单元还能直接参与计算。例如,根据不同运算的需要,处于同一字线上的若干阻变单元可以预先被设定为某些阻态的组合,通过在相应的位线上输入脉冲序列进行运算,最后的运算结果可以直接存储在相应的阻变单元中,可以直接用于输出,或者继续用于后面的计算。具体地,如果需要对一个或多个第一阻变单元中存储的数据(“运算数”)进行运算,可以向该一个或多个第一阻变单元以及连接到同一条字线的另外的一个或多个第二阻变单元相对应的位线施加与所要进行的逻辑运算相对应的电压脉冲序列,在第一阻变单元以及第二阻变单元中的至少一个阻变单元中得到对运算数进行逻辑运算的结果。这将在以下进一步详细描述。
运存器可执行的运算不是固定的,可以根据用户需要随时进行编程。编程后,如果不进行擦写,该运算功能将始终保持在该编程区域。运算功能包括传统CPU可以执行的所有逻辑,如“与”、“或”、“非”、“与非”、“或非”、“加法”、“乘法”等,这将在以下进一步详细描述。实现不同运算功能的区别仅在于阻变单元的状态和输入脉冲序列不同,与阻变单元在阵列中所处的位置无关。因此,阵列中的任何阻变单元都可以实现存储或者运算功能。因此,该系统具有运算和存储不分离的特点,运算和存储可以在同一位置完成,不需要数据传输的时间和空间。
为了向位线施加脉冲序列,各位线105的一端可以连接至控制器(图3中未示出),以便从中接收脉冲信号(包括用于对阻变单元进行存储器读写操作的脉冲信号以及用于进行运算操作的脉冲信号)。此外,各字线103的一端可以连接有基准单元109,具体地,Rf1、Rf2、Rf3…、Rfm,基准单元109的另一端可以连接到基准电压(例如,地电压GND)。如下所述,基准单元109主要用于与高阻态或低阻态的阻变单元相结合,以便将相应位线设置为基准电压(GND)或者VDD。例如,基准单元109可以包括具有一定阻值的固定电阻或者具有一定阻值状态的伪阻变单元。这种伪阻变单元可以具有与阻变单元相同的结构,但是并不用于存储,而是主要用于提供运算基准。基准单元109的阻值可以设在阻变单元高阻态阻值和低阻态阻值之间,例如,可以设为高阻态阻值和低阻态阻值的几何平均值。各字线103的另一端可以连接到输出模块(未示出),以便输出阻变单元107中的数据。这里需要指出的是,在对运算存储阵列进行读写操作时,基准单元109的一端可以不再连接到基准电压,而是电浮置。
根据本公开的运存器还具有并行计算的特点。通过合理分配执行运算的阻变单元,同时在不同位线上施加输入脉冲序列,可以使每条字线分别执行相应的逻辑运算,不同字线上的运算可以同时执行(例如,第一字线上可以通过向第一组位线施加脉冲序列来进行运算,同时,与第一字线不同的第二字线上可以通过向与第一组位线不同的第二组位线施加脉冲序列来进行运算;为避免不同字线之间的干扰,这种情况下阻变单元优选地包括限制器件)。于是,每条字线可以单独看成一个处理器(如图3中的虚线框所示)。在图11中示出了与字线WL1、WL2、WL3…、WLm相对应的并行处理器#1、处理器#2、处理器#3…、处理器#m。这样,一个阵列相当于多个并行的处理器,可以大大提高计算效率。
根据本公开的运存器还具有学习的功能。具体地,由于运存器本身可以存储运算数和运算结果(且可以存储所进行的逻辑运算),因此,当再次针对相同运算数进行相同运算时,可以直接调用所存储的运算结果,而无需再次运算。即,运存器“学习”了该运算。此外,由于所有的运算功能都不是固定的,用户可以根据不同时期的需要,将运存器编程为不同的功能。这种具有学习能力与可重构特征的体系结构提高了计算的灵活性和每个单元的利用效率。
图5示意性示出了阻变单元107能够用于(非易失性)逻辑运算的原理。
图5示出了连接到同一条位线WLi的两个阻变单元Rij和Rik。这里需要指出的是,阻变单元Rij和Rik不一定是相邻的阻变单元,即相应的位线BLj和BLk不一定相邻。
运算前,可以向阻变单元Rik预先写入“0”(即,高阻态)。运算时,对阻变单元Rij连接到的位线BLj施加电压第一电压,同时在阻变单元Rik连接到的位线BLk上施加第二电压。在此,第一电压相对于基准单元Rfi(阻值为R0)连接到的基准电压(例如,GND)不会使阻变单元从高阻态切换到低阻态,且第二电压相对于第一电压也不会使阻变单元从高阻态切换到低阻态,而第二电压相对于基准电压将会使阻变单元从高阻态切换到低阻态(在此,表述“电压A相对于电压B使阻变单元从高阻态切换到低阻态”是指将电压A和电压B施加到阻变单元两端时,阻变单元从高阻态切换到低阻态,表述“电压A相对于电压B不会使阻变单元从高阻态切换到低阻态”是指将电压A和电压B施加到阻变单元两端时,阻变单元不从高阻态切换到低阻态)。根据一示例,第二电压可以是第一电压的两倍,即第一电压为VDD/2,且第二电压为VDD
这时,如果阻变单元Rij存储的数据是“1”(即,低阻态,阻值为RL),设阻变单元Rij的电阻(RL)远低于基准单元(R0),则位线WLi上的电位被阻变单元Rij上拉为与BLj上相同,为第一电压(例如,VDD/2)。于是,Rik两端的电压为第二电压与第一电压之差(例如,VDD-VDD/2=VDD/2)。如上所述,该电压不足以使Rik发生阻变,因此仍保持原来的状态,即从Rik输出的结果为“0”。
相反,如果Rij存储的数据是“0”(即,高阻态,阻值为RH),设Rij的电阻(RH)远高于基准单元(R0),这时位线WLi上的电位被基准单元Rfi下拉为0。那么Rik两端的电压为第二电压减去基准电压(例如,VDD),这一电压将使Rik从高阻态变为低阻态,从而输出的结果为“1”。
可见,从Rik输出的结果是与Rij中存入的数据“A”相关的。在运算时,同一字线上的其他阻变单元所对应的位线可以电浮置。下面说明的各种逻辑运算的操作方法都是基于这一原理实现的。更进一步而言,存在这样的基本操作:向一条位线施加第一电压,并向另一位线施加第二电压。以下各种逻辑运算均是该基本操作的集合。一个给定的逻辑运算可以分解为一次或多次该基本操作的组合,在每次操作中电压脉冲所施加到的位线可以不同。对于不参与运算的位线,可以电浮置。因此,控制器所要施加的电压脉冲序列包括第一电压、第二电压和电浮置中至少之一。
在以上操作中,假定了阻变单元的低阻态阻值RL远低于基准单元阻值R0,且阻变单元的高阻态阻值RH远高于基准单元阻值R0。在此,所谓“远高于”或者“远低于”,是指在两者的串联连接两端施加电压时,电压降基本上全都落在阻值“远高于”另一方的一方上。在一个示例中,高阻态电阻值(RH)可以比基准单元的电阻值(R0)高至少一倍,基准单元的电阻值可以比阻变单元的低阻态电阻值(RL)高至少一倍。
在基准电压为GND,第一电压为VDD/2,且第二电压为VDD时,如果阻变单元可以发生高阻态到低阻态的最小转变电压为Vset,则一般地VDD可以满足:
2(2R0+RH)/(R0+2RH)×Vset<VDD<2(R0RL+R0RH+RHRL)/(R0RH+2RHRL)×Vset
“非”逻辑
事实上,以上结合图5描述的操作即为“非”逻辑。具体地,阻变单元Rik中得到的数据也即,如图6所示,如果需要对某一阻变单元Rij中的数据“A”进行逻辑“非”运算,那么可以调用与该阻变单元Rij连接到同一字线WLi的一(辅助)阻变单元Rik。在该辅助阻变单元Rik中预先写入“0”。然后,通过向阻变单元Rij连接到的位线BLj施加电压VDD/2,同时在辅助阻变单元Rik连接到的位线BLk上施加电压VDD,即可在辅助阻变单元Rik中得到逻辑“非”运算结果。
“或”逻辑
如图7(a)所示,如果需要对连接到同一字线WLi的阻变单元Rij和Rik中存储的数据“A”和“B”进行逻辑“或”运算,则可以调用连接到该字线WLi的一(辅助)阻变单元Ril。在该辅助阻变单元Ril中预先写入“0”。运算时,先在与Rij相连的位线BLj上施加电压VDD/2,同时在与Ril相连的位线BL1上施加电压VDD;然后在与Ril相连的位线BL1上施加电压VDD/2,同时在与Rik相连的位线BLk上施加电压VDD。在该示例中,在运算后阻变单元Rik中存储的数据OUT=A+B。
具体地,若Rik存储的数据“B”为1,则运算后Rik中存储的数据OUT必然为1。
另一方面,若Rik存储的数据“B”为0,则经过了两次取“非”运算后,Rik中存储的数据将与Rij存储的数据“A”相同。A为0则OUT为0,A为1则OUT为1。
因此,运算后阻变单元Rik中存储的数据OUT满足“或”逻辑的要求。
若要不破坏Rik存储的数据B,可再多调用一个阻变器件。具体地,如图7(b)所示,运算前在多调用的辅助阻变器件Rip中预先存入Rik中的数据B,之后对于Rij、Rip和Ril相对应的位线BLj、BLp和BL1执行以上结合图7(a)描述的操作。这样,在Rip中得到OUT=A+B。也即,在本示例中,利用一个辅助阻变器件Rip,替代了Rik参与运算,并因此在其中得到运算结果;而Rik中存储的数据可保持不变。
“与”逻辑
如图8所示,如果需要对连接到同一字线WLi的阻变单元Rij和Rik中存储的数据“A”和“B”进行逻辑“与”运算,则可以调用连接到该字线WLi的两个(辅助)阻变单元Ril和Rip。在阻变单元Ril和Rip中,预先存入“0”。运算时,先在与Rij相连的位线BLj上施加电压VDD/2,同时在与Ril相连的位线BL1上施加电压VDD;然后在与Rik相连的位线BLk上施加电压VDD/2,同时在与Ril相连的位线BL1上施加电压VDD;最后在与Ril相连的位线BL1上施加电压VDD/2,同时在与Rip相连的位线BLp上施加电压VDD
若Rij或Rik中有至少一个存储“0”,则Ril将被写入“1”,Rip将为“0”;反之,若Rij和Rik均为1,则Ril保持为“0”,Rip将被写入“1”。因此,运算后Rip中得到的数据OUT=AB。
“异或”逻辑
如图9(a)所示,如果需要对连接到同一字线WLi的阻变单元Rij和Ril中存储的数据“A”和“B”进行逻辑“异或”运算,则可以调用连接到该字线WLi的两个(辅助)阻变单元Rik和Rip。在辅助阻变单元Rik中预先存储与Rij中相同的数据,在此标示为“A′”,在辅助阻变单元Rip中预先存储“0”。运算时,先在与Ril相连的位线BL1上施加电压VDD/2,同时在与Rik相连的位线BLk上施加电压VDD;接着在与Rik相连的位线BLk上施加电压VDD/2,同时在与Rip相连的位线BLp上施加电压VDD;然后在与Rij相连的位线BLj上施加电压VDD/2,同时在与Ril相连的位线BL1上施加电压VDD;最后在与Ril相连的位线BL1上施加电压VDD/2,同时在与Rip相连的位线BLp上施加电压VDD
若A和B均为0,则上述第一步中Rik中将被写入1,第三步中Ril中将被写入1,那么第二步和第四步两次“非”操作均不能改变Rip中的0。若A和B均为1,则第一步和第三步均不会改变Rik和Ril中的1,那么第二步和第四步两次“非”操作均不能改变Rip中的0。若A为0、B为1,则第一步中Rik中仍为0,那么第二步将使Rip变为1,第三步和第四步不会改变Rip存储的数据。若A为1、B为0,这时第一步和第二步不会改变Rip,第三步以后Ril仍为0,则第四步将会使Rip变为1。因此,运算后Rip中得到的数据
若要不破坏Ril中存储的数据B,可再多调用一个阻变器件。具体地,如图9(b)所示,运算前在多调用的辅助阻变器件Riq中预先存入Ril中的数据“B”(图中标示为“B′”),然后以该辅助阻变器件Riq来代替Ril参与上述操作。
其他逻辑
“或非”、“异或非”逻辑可以分别在“或”、“异或”运算结果的基础上通过多调用一个辅助阻变单元,再取一次“非”得到。“与非”逻辑可以在“与”逻辑的基础上少调用一个阻变器件,“与”逻辑中的辅助阻变单元Ril即为“与非”的结果(参见以上结合图8的说明)。类似地,其它复杂逻辑也可以通过上述逻辑组合得到。
“全加”运算
不考虑进位的加法运算为“半加”运算,即“异或”逻辑。而考虑进位的加法运算称为“全加”运算。“全加”运算包括三个输入“A”、“B”和前一位的进位“Ci”,同时包括两个输出,即本位的和“S”和向下一位的进位“Co”。运算可以调用处于同一字线上的十四个阻变单元,如图10所示,阻变单元Rij和Ril分别存储两个加数A和B,阻变单元Riq存储前一位的进位Ci,辅助阻变单元Rik、Rip和Rir分别预先写入与A、B和Ci相同的数据(标示为A′、B′和Ci′),其他辅助阻变单元Ris~Riz分别预先存入“0”。运算后辅助阻变单元Riy和Riz中分别存储有得到的和S以及进位Co
运算时,第一步通过Rij(A)、Ril(B)和Rik(A′)、Rip(B′)运算得到结果可以存储在中(参见以上“异或”运算,特别是结合图9(b)的描述)。第二步通过 Riq(Ci)和Rir(Ci′)运算得到结果可以存储在Riy(S)中(参见以上“异或”运算,特别是结合图9(b)的描述)。第三步通过Rij(A)、Ril(B)和辅助阻变单元Riv运算得到AB,结果可以存储在阻变器件Riu(AB)中(参见以上结合图8描述的“与”运算)。第四步通过Riq(Ci)和辅助阻变单元Riw运算得到结果可以存储在中(参见以上结合图8描述的“与”运算)。第五步通过Riu(AB)、Riz和辅助阻变单元Rix运算得到(AB)+Co,结果可以存储在Riz(Co)中(参见以上的“或”运算,特别是结合图7(b)的描述)。
在以上的操作中,经常会用到“辅助”阻变单元。这些辅助阻变单元可以是尚未存储有数据的“空闲”阻变单元,或者可以是专门设置用于帮助运算的专用辅助阻变单元。例如,可以针对每一字线设置若干专用辅助阻变单元。辅助阻变单元可以按需被预写入操作数的副本或者“0”(高阻态)等。
根据本公开的实施例,提出了一种运存一体、可重构、可学习的计算系统体系框架以及用于其中的运算存储器或者说运算存储阵列。本公开的技术突破了冯诺依曼系统的限制,可实现运算和存储不分离、可并行计算等。因此,提高了计算效率,降低了能耗,节约了制造成本,适合大数据计算的应用。此外,利用阻变器件进行运算和存储,具有非易失保存数据的能力,在计算空闲时不需要供电,从而使电路没有静态功耗,进一步大大减少了能量消耗,特别适合于移动设备的应用。运算和存储在相同的器件下进行,没有速度不匹配的问题。同时,阻变器件工作速度快,可以高效完成复杂的计算。可根据需要来定义运算的内容,具有更高的灵活性和效率。所有的计算仍基于传统布尔逻辑完成,编程语言与传统计算机相兼容。与传统的电荷型计算不同,本发明提出的电阻型计算不存在电压损失问题,因此不需要考虑级联问题。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。本公开的范围由所附权利要求及其等价物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (22)

1.一种运算存储阵列,包括:
沿第一方向延伸的多条字线;
沿与第一方向交叉的第二方向延伸的多条位线;
分别设置于各位线和各字线的交叉点处且与相应位线和相应字线连接的多个阻变单元,每一阻变单元在高阻态和低阻态之间可切换并因此存储相应的数据;
连接到每一条字线的基准单元,基准单元的一端连接到字线,而另一端连接到基准电压,其中基准单元的阻值在阻变单元的高阻态阻值和低阻态阻值之间;以及
控制器,用于通过向位线施加电压脉冲序列,对连接到同一条字线的阻变单元中存储的数据进行逻辑运算。
2.根据权利要求1所述的运算存储阵列,其中,在一个或多个第一阻变单元中存储运算数,控制器通过向第一阻变单元以及连接到同一条字线的另外一个或多个第二阻变单元相对应的位线施加电压脉冲序列,在第一阻变单元以及第二阻变单元中的至少一个阻变单元中得到对运算数进行逻辑运算的结果。
3.根据权利要求2所述的运算存储阵列,其中,运算结果存储在运算存储阵列的所述至少一个阻变单元中。
4.根据权利要求3所述的运算存储阵列,其中,当控制器接收到再次对相同运算数进行相同运算的指令时,直接调用所述至少一个阻变单元中存储的运算结果。
5.根据权利要求1所述的运算存储阵列,其中,阻变单元的高阻态阻值比基准单元的阻值高至少一倍,基准单元的阻值比阻变单元的低阻态阻值高至少一倍。
6.根据权利要求1所述的运算存储阵列,其中,所述基准单元的阻值是高阻态阻值和低阻态阻值的几何平均值。
7.根据权利要求1所述的运算存储阵列,其中,阻变单元包括金属-绝缘体-金属三明治结构的阻变器件。
8.根据权利要求7所述的运算存储阵列,其中,阻变单元还包括与阻变器件相串联的限制器件。
9.根据权利要求1所述的运算存储阵列,其中,控制器通过向不同位线施加脉冲序列,并行地对连接到不同字线的阻变单元中存储的数据进行逻辑运算。
10.根据权利要求1所述的运算存储阵列,其中,电压脉冲序列包括第一电压、第二电压或者电浮置中至少之一,其中,第一电压相对于基准电压不会使阻变单元从高阻态切换到低阻态,第二电压相对于基准电压会使阻变单元从高阻态切换到低阻态,且第二电压相对于第一电压不会使阻变单元从高阻态切换到低阻态。
11.根据权利要求10所述的运算存储阵列,其中,基准电压为地电压,第二电压为VDD,且第一电压为VDD/2。
12.根据权利要求11所述的运算存储阵列,设基准单元的阻值为R0,阻变单元的高阻态阻值为RH,阻变单元的低阻态阻值为RL,阻变单元从高阻态切换到低阻态的最小转变电压为Vset,则
2(2R0+RH)/(R0+2RH)×Vset<VDD<2(R0RL+R0RH+RHRL)/(R0RH+2RHRL)×Vset
13.根据权利要求1所述的运算存储阵列,其中基准电阻包括基准单元或伪阻变单元。
14.一种对运算存储阵列进行操作的方法,其中,运算存储阵列包括沿第一方向延伸的多条字线、沿与第一方向交叉的第二方向延伸的多条位线、分别设置于各位线和各字线的交叉点处且与相应位线和相应字线连接的多个阻变单元、以及连接到每一条字线的基准单元,其中,每一阻变单元在高阻态和低阻态之间可切换并因此存储相应的数据,基准单元的一端连接到字线,而另一端连接到基准电压,其中基准单元的阻值在阻变单元的高阻态阻值和低阻态阻值之间,
该方法包括:
通过向位线施加电压脉冲序列,对连接到同一条字线的阻变单元中存储的数据进行逻辑运算。
15.根据权利要求14所述的方法,其中,对于与某一字线和第一位线相连的第一阻变单元,通过向与该字线和第二位线相连的第二阻变单元中预先写入高阻态,然后向第一位线施加第一电压并向第二位线施加第二电压,来在第二阻变单元中得到第一阻变单元中所存储数据的“非”运算结果,
其中,第一电压相对于基准电压不会使阻变单元从高阻态切换到低阻态,第二电压相对于基准电压会使阻变单元从高阻态切换到低阻态,且第二电压相对于第一电压不会使阻变单元从高阻态切换到低阻态。
16.根据权利要求14所述的方法,其中,对于与某一字线和第一位线相连的第一阻变单元以及与该字线和第二位线相连的第二阻变单元,通过向与该字线和第三位线相连的第三阻变单元中预先写入高阻态,并按如下顺序施加电压脉冲序列:
1)向第一位线施加第一电压,并向第三位线施加第二电压;
2)在第三位线施加第一电压,并向第二位线施加第二电压,
得到第一阻变单元中存储的数据与第二阻变单元中存储的数据的“或”运算结果,该结果存储在第二阻变存储单元中覆盖第二阻变单元中原先存储的数据,
其中,第一电压相对于基准电压不会使阻变单元从高阻态切换到低阻态,第二电压相对于基准电压会使阻变单元从高阻态切换到低阻态,且第二电压相对于第一电压不会使阻变单元从高阻态切换到低阻态。
17.根据权利要求14所述的方法,其中,对于与某一字线和第一位线相连的第一阻变单元以及与该字线和第二位线相连的第二阻变单元,通过向与该字线和第三位线相连的第三阻变单元中预先写入高阻态,且在与该字线和第四位线相连的第四阻变单元中预先写入第二阻变单元中存储的数据,并按如下顺序施加电压脉冲序列:
1)向第一位线施加第一电压,并向第三位线施加第二电压;
2)在第三位线施加第一电压,并向第四位线施加第二电压,
得到第一阻变单元中存储的数据与第二阻变单元中存储的数据的“或”运算结果,该结果存储在第四阻变存储单元中,
其中,第一电压相对于基准电压不会使阻变单元从高阻态切换到低阻态,第二电压相对于基准电压会使阻变单元从高阻态切换到低阻态,且第二电压相对于第一电压不会使阻变单元从高阻态切换到低阻态。
18.根据权利要求14所述的方法,其中,对于与某一字线和第一位线相连的第一阻变单元以及与该字线和第二位线相连的第二阻变单元,通过向与该字线和第三位线相连的第三阻变单元以及与该字线和第四位线相连的第四阻变单元中预先写入高阻态,并按如下顺序施加电压脉冲序列:
1)向第一位线施加第一电压,并向第三位线施加第二电压;
2)向第二位线施加第一电压,并向第三位线施加第二电压;
3)向第三位线施加第一电压,并向第四位线施加第二电压,
得到第一阻变单元中存储的数据与第二阻变单元中存储的数据的“与”运算结果,该结果存储在第四阻变存储单元中,
其中,第一电压相对于基准电压不会使阻变单元从高阻态切换到低阻态,第二电压相对于基准电压会使阻变单元从高阻态切换到低阻态,且第二电压相对于第一电压不会使阻变单元从高阻态切换到低阻态。
19.根据权利要求14所述的方法,其中,对于与某一字线和第一位线相连的第一阻变单元以及与该字线和第二位线相连的第二阻变单元,通过向与该字线和第三位线相连的第三阻变单元中预先写入第一阻变单元中存储的数据,且在与该字线和第四位线相连的第四阻变单元中预先写入高阻态,并按如下顺序施加电压脉冲序列:
1)向第二位线施加第一电压,并向第三位线施加第二电压;
2)向第三位线施加第一电压,并向第四位线施加第二电压;
3)向第一位线施加第一电压,并向第二位线施加第二电压;
4)向第二位线施加第一电压,并向第四位线施加第二电压,
得到第一阻变单元中存储的数据与第二阻变单元中存储的数据的“异或”运算结果,该结果存储在第四阻变存储单元中,
其中,第一电压相对于基准电压不会使阻变单元从高阻态切换到低阻态,第二电压相对于基准电压会使阻变单元从高阻态切换到低阻态,且第二电压相对于第一电压不会使阻变单元从高阻态切换到低阻态。
20.根据权利要求14所述的方法,其中,对于与某一字线和第一位线相连的第一阻变单元以及与该字线和第二位线相连的第二阻变单元,通过向与该字线和第三位线相连的第三阻变单元中预先写入第一阻变单元中存储的数据,在与该字线和第四位线相连的第四阻变单元中预先写入第二阻变单元中存储的数据,且在与该字线和第五位线相连的第五阻变单元中预先写入高阻态,并按如下顺序施加电压脉冲序列:
1)向第四位线施加第一电压,并向第三位线施加第二电压;
2)向第三位线施加第一电压,并向第五位线施加第二电压;
3)向第一位线施加第一电压,并向第四位线施加第二电压;
4)向第四位线施加第一电压,并向第五位线施加第二电压,
得到第一阻变单元中存储的数据与第二阻变单元中存储的数据的“异或”运算结果,该结果存储在第五阻变存储单元中,
其中,第一电压相对于基准电压不会使阻变单元从高阻态切换到低阻态,第二电压相对于基准电压会使阻变单元从高阻态切换到低阻态,且第二电压相对于第一电压不会使阻变单元从高阻态切换到低阻态。
21.根据权利要求15-20中任一项所述的方法,其中,基准电压为地电压,第二电压为VDD,且第一电压为VDD/2。
22.根据权利要求21所述的方法,设基准单元的阻值为R0,阻变单元的高阻态阻值为RH,阻变单元的低阻态阻值为RL,阻变单元从高阻态切换到低阻态的最小转变电压为Vset,则
2(2R0+RH)/(R0+2RH)×Vset<VDD<2(R0RL+R0RH+RHRL)/(R0RH+2RHRL)×Vset
CN201510305628.7A 2015-06-05 2015-06-05 运算存储阵列及其操作方法 Pending CN104898990A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510305628.7A CN104898990A (zh) 2015-06-05 2015-06-05 运算存储阵列及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510305628.7A CN104898990A (zh) 2015-06-05 2015-06-05 运算存储阵列及其操作方法

Publications (1)

Publication Number Publication Date
CN104898990A true CN104898990A (zh) 2015-09-09

Family

ID=54031673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510305628.7A Pending CN104898990A (zh) 2015-06-05 2015-06-05 运算存储阵列及其操作方法

Country Status (1)

Country Link
CN (1) CN104898990A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106128503A (zh) * 2016-06-20 2016-11-16 北京大学 基于忆阻器的运算存储阵列设备及其操作方法
CN106158017A (zh) * 2016-06-20 2016-11-23 北京大学 基于电阻运算实现逻辑和算术运算的方法和设备
CN106297876A (zh) * 2016-08-09 2017-01-04 北京大学 基于忆阻器阵列的操作方法
CN106530210A (zh) * 2016-10-31 2017-03-22 北京大学 基于阻变存储器件阵列实现并行卷积计算的设备和方法
CN106846239A (zh) * 2017-01-12 2017-06-13 北京大学 实现图像卷积的编码型闪存系统及工作方法
CN109521995A (zh) * 2018-11-02 2019-03-26 上海交通大学 一种内嵌于忆阻器阵列的逻辑运算装置的计算方法
WO2019140693A1 (zh) * 2018-01-22 2019-07-25 中国科学院微电子研究所 基于阻变器件交叉阵列结构实现逻辑计算的方法
CN110362291A (zh) * 2018-03-26 2019-10-22 北京大学 一种利用忆阻器进行非易失性复杂运算的方法
WO2020087619A1 (zh) * 2018-10-29 2020-05-07 华中科技大学 基于忆阻器的精简指令集处理器
WO2020173040A1 (zh) * 2019-02-27 2020-09-03 华中科技大学 一种可逆逻辑电路及其操作方法
CN112787657A (zh) * 2021-01-11 2021-05-11 杭州电子科技大学 一种可编程忆阻器逻辑电路

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102542334A (zh) * 2012-01-14 2012-07-04 中国人民解放军国防科学技术大学 基于忆阻器的汉明网电路
CN103811058A (zh) * 2014-01-28 2014-05-21 华中科技大学 基于忆阻的非易失性存储器、读写擦除操作方法及测试电路
CN104124960A (zh) * 2014-06-20 2014-10-29 华中科技大学 一种非易失性布尔逻辑运算电路及其操作方法
US20140334216A1 (en) * 2013-04-24 2014-11-13 Regents Of The University Of Minnesota General Structure for Computational Random Access Memory (CRAM)
CN104571949A (zh) * 2014-12-22 2015-04-29 华中科技大学 基于忆阻器实现计算与存储融合的处理器及其操作方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102542334A (zh) * 2012-01-14 2012-07-04 中国人民解放军国防科学技术大学 基于忆阻器的汉明网电路
US20140334216A1 (en) * 2013-04-24 2014-11-13 Regents Of The University Of Minnesota General Structure for Computational Random Access Memory (CRAM)
CN103811058A (zh) * 2014-01-28 2014-05-21 华中科技大学 基于忆阻的非易失性存储器、读写擦除操作方法及测试电路
CN104124960A (zh) * 2014-06-20 2014-10-29 华中科技大学 一种非易失性布尔逻辑运算电路及其操作方法
CN104571949A (zh) * 2014-12-22 2015-04-29 华中科技大学 基于忆阻器实现计算与存储融合的处理器及其操作方法

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106158017A (zh) * 2016-06-20 2016-11-23 北京大学 基于电阻运算实现逻辑和算术运算的方法和设备
CN106158017B (zh) * 2016-06-20 2019-05-17 北京大学 阻变运算存储设备
CN106128503B (zh) * 2016-06-20 2019-07-16 北京大学 基于忆阻器的运算存储阵列设备及其操作方法
CN106128503A (zh) * 2016-06-20 2016-11-16 北京大学 基于忆阻器的运算存储阵列设备及其操作方法
CN106297876A (zh) * 2016-08-09 2017-01-04 北京大学 基于忆阻器阵列的操作方法
CN106297876B (zh) * 2016-08-09 2019-04-16 北京大学 基于忆阻器阵列的操作方法
CN106530210A (zh) * 2016-10-31 2017-03-22 北京大学 基于阻变存储器件阵列实现并行卷积计算的设备和方法
CN106530210B (zh) * 2016-10-31 2019-09-06 北京大学 基于阻变存储器件阵列实现并行卷积计算的设备和方法
CN106846239B (zh) * 2017-01-12 2019-10-22 北京大学 实现图像卷积的编码型闪存系统及工作方法
CN106846239A (zh) * 2017-01-12 2017-06-13 北京大学 实现图像卷积的编码型闪存系统及工作方法
US11189345B2 (en) 2018-01-22 2021-11-30 Institute of Microelectronics, Chinese Academy of Sciences Method for implementing logic calculation based on a crossbar array structure of resistive switching device
WO2019140693A1 (zh) * 2018-01-22 2019-07-25 中国科学院微电子研究所 基于阻变器件交叉阵列结构实现逻辑计算的方法
CN110362291B (zh) * 2018-03-26 2021-03-23 北京大学 一种利用忆阻器进行非易失性复杂运算的方法
CN110362291A (zh) * 2018-03-26 2019-10-22 北京大学 一种利用忆阻器进行非易失性复杂运算的方法
WO2020087619A1 (zh) * 2018-10-29 2020-05-07 华中科技大学 基于忆阻器的精简指令集处理器
US11830547B2 (en) 2018-10-29 2023-11-28 Huazhong University Of Science And Technology Reduced instruction set processor based on memristor
CN109521995A (zh) * 2018-11-02 2019-03-26 上海交通大学 一种内嵌于忆阻器阵列的逻辑运算装置的计算方法
WO2020173040A1 (zh) * 2019-02-27 2020-09-03 华中科技大学 一种可逆逻辑电路及其操作方法
US11171650B2 (en) 2019-02-27 2021-11-09 Huazhong University Of Science And Technology Reversible logic circuit and operation method thereof
CN112787657A (zh) * 2021-01-11 2021-05-11 杭州电子科技大学 一种可编程忆阻器逻辑电路

Similar Documents

Publication Publication Date Title
CN104898990A (zh) 运算存储阵列及其操作方法
US20200381026A1 (en) In-memory computing device for 8t-sram memory cells
CN106128503A (zh) 基于忆阻器的运算存储阵列设备及其操作方法
US10482948B2 (en) Apparatuses and methods for data movement
JP7173709B2 (ja) ニューラルネットワーク回路
US9224447B2 (en) General structure for computational random access memory (CRAM)
US9691479B1 (en) Method of operating and apparatus of memristor arrays with diagonal lines interconnect between memristor cells
CN106158017B (zh) 阻变运算存储设备
CN107430874A (zh) 用于数据移动的设备及方法
US9799399B2 (en) Nonvolatile memory devices including controller for operating nonvolatile memory cell array layer in memory chip in one of memory mode and storage mode
CN109003640A (zh) 存储器中子阵列之间的数据传送
CN110326046A (zh) 用于在数据路径中计算的设备及方法
US11922995B2 (en) Memory with artificial intelligence mode
CN110729011B (zh) 用于类神经网路的存储器内运算装置
US20230253020A1 (en) Activation functions for artificial intelligence operations
Lebdeh et al. Memristive device based circuits for computation-in-memory architectures
US10606511B2 (en) Nonvolatile memory modules and electronic devices having the same
US11573705B2 (en) Artificial intelligence accelerator
CN105264775B (zh) 基于阻变器件的多位全加器及其操作方法
Eslami et al. A flexible and reliable RRAM-based in-memory computing architecture for data-intensive applications
CN113658625A (zh) 基于1t1r阵列的可重构状态逻辑操作电路及方法
Prabaharan et al. Memristor augmented ReRAM cell for cross-bar memory architecture
TWI757086B (zh) 存儲系統及操作存儲系統的方法
Li Memory-centric architectures: Bridging the gap between compute and memory
KR20230146936A (ko) 스핀 궤도 토크 소자 기반의 프로세싱 인 메모리 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150909