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

xiaoxiao2020-10-23  17

运算存储阵列及其操作方法
【技术领域】
[0001] 本公开一般地涉及半导体集成电路,更具体地,涉及一种可以同时计算和存储、具 有并行运算能力的运算存储阵列及其操作方法。
【背景技术】
[0002] 传统计算机以及其它具有计算能力的电子设备都是基于冯诺依曼体系制造的,它 们的共同特点是将系统中的运算部分和存储部分分开。例如计算机中通常包括运算器、存 储器和控制器等几个部分,它们之间通过总线传递数据。在计算时,先要从存储器中读取数 据,然后通过总线把这些数据从存储器传递到运算器中,并在运算器中完成计算,最后再通 过总线把计算后得到的结果传回存储器,并重新存储。在这样的计算过程中,大量的能量并 未直接用于计算或存储数据,而是浪费在总线反复传递数据的过程中。当运算器处理数据 的速度与存储器的读、写速度不匹配时,还会造成计算速度的降低。此外,传统的计算系统 一般都是串行执行指令的,即每一条指令按照先后顺序逐一执行,而理想的计算系统应能 够并行执行指令,即多条指令可以同时执行。
[0003] 在当前大数据和物联网快速发展、移动设备广泛普及的时代背景下,传统的计算 设备在能耗、速度等方面已逐渐难以满足人们的需求,需要突破冯诺依曼提出的计算机体 系,发展新型计算系统。目前已提出的一种可行的方案是仿照人脑的结构,发展神经形态计 算系统。这种系统具有并行执行指令、存储和运算不分离的特点,可以大大提高运算效率、 降低能耗。但是,其计算方法与传统计算机完全不同,需要重新发展编程语言和相应的程 序。如何在不改变传统编程方法的基础发展新型高效计算系统,仍然是值得探索的问题。

【发明内容】

[0004] 本公开的目的至少部分地在于提供一种运算存储阵列及其操作方法。
[0005] 根据本公开的一个方面,提供了一种运算存储阵列,包括:沿第一方向延伸的多条 字线;沿与第一方向交叉的第二方向延伸的多条位线;分别设置于各位线和各字线的交叉 点处且与相应位线和相应字线连接的多个阻变单元,每一阻变单元在高阻态和低阻态之间 可切换并因此存储相应的数据;连接到每一条字线的基准单元,基准单元的一端连接到字 线,而另一端连接到基准电压,其中基准单元的阻值在阻变单元的高阻态阻值和低阻态阻 值之间;以及控制器,用于通过向位线施加电压脉冲序列,对连接到同一条字线的阻变单元 中存储的数据进行逻辑运算。
[0006] 根据本公开的另一方面,提供了一种对运算存储阵列进行操作的方法,其中,运算 存储阵列包括沿第一方向延伸的多条字线、沿与第一方向交叉的第二方向延伸的多条位 线、分别设置于各位线和各字线的交叉点处且与相应位线和相应字线连接的多个阻变单 元、以及连接到每一条字线的基准单元,其中,每一阻变单元在高阻态和低阻态之间可切换 并因此存储相应的数据,基准单元的一端连接到字线,而另一端连接到基准电压,其中基准 单元的阻值在阻变单元的高阻态阻值和低阻态阻值之间,该方法包括:通过向位线施加电 压脉冲序列,对连接到同一条字线的阻变单元中存储的数据进行逻辑运算。
[0007] 根据本公开的实施例,提供了一种不同于冯诺依曼计算机体系框架的计算体系结 构与系统,该体系结构与计算系统可基于阻变器件实现,能执行传统布尔逻辑,具有能够并 行执行指令、运算和存储不分离的特点,在不改变传统编程方法的基础上,可实现新型高能 效计算机或其它智能设备。
【附图说明】
[0008] 通过以下参照附图对本公开实施例的描述,本公开的上述以及其他目的、特征和 优点将更为清楚,在附图中:
[0009] 图1示意性示出冯诺依曼体系框架;
[0010] 图2示意性示出了根据本公开实施例的计算体系框架;
[0011] 图3示意性示出了根据本公开实施例的运算存储器的结构;
[0012] 图4(a)示意性示出了阻变器件的结构,图4(b)示意性示出了包括这种阻变器件 的阻变单元在字线和位线之间的连接方式,图4(c)示意性示出了包括阻变器件和限制器 件的阻变单元在字线和位线之间的连接方式;
[0013] 图5示意性示出了阻变单元107能够用于(非易失性)逻辑运算的原理;
[0014] 图6示意性示出了根据本公开实施例的"非"逻辑的运算方式;
[0015] 图7(a)示意性示出了根据本公开实施例的"或"逻辑的运算方式,图7(b)示意性 示出了根据本公开另一实施例的"或"逻辑的运算方式;
[0016] 图8示意性示出了根据本公开实施例的"与"逻辑的运算方式;
[0017] 图9(a)示意性示出了根据本公开实施例的"异或"逻辑的运算方式,图9(b)示意 性示出了根据本公开另一实施例的"异或"逻辑的运算方式;
[0018] 图10示意性示出了根据本公开实施例的"全加"运算;
[0019] 图11是示意性示出了根据本公开实施例的运算存储器执行逻辑运算和数据存储 的框图。
【具体实施方式】
[0020] 以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性 的,而并非要限制本公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以 避免不必要地混淆本公开的概念。
[0021] 在附图中示出了根据本公开实施例的各种结构示意图。这些图并非是按比例绘制 的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的 各种元件的形状以及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造 公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形 状、大小、相对位置的元件。
[0022] 在本公开的上下文中,当将一层/元件称作位于另一层/元件"上"时,该层/元 件可以直接位于该另一层/元件上,或者它们之间可以存在居中层/元件。另外,如果在一 种朝向中一层/元件位于另一层/元件"上",那么当调转朝向时,该层/元件可以位于该另 一层/元件"下"。
[0023] 图1示意性示出冯诺依曼体系框架。如图1所示,在冯诺依曼体系框架中,存储器 和中央处理器(CPU)分开,CPU包括运算器和控制器,运算器和控制器分别通过总线与存储 器相连。
[0024] 图2示意性示出了根据本公开实施例的计算体系框架(下面称为运存一体体系框 架,或者MemComp体系框架)。如图2所示,在该MemComp体现框架中,"运算存储器"模块 中的每个单元根据需要可以起到运算的功能和/或存储的功能。因此,可以将运算存储器 模块中的单元分为"并行计算"部分和"存储学习"部分(注意,这主要是逻辑上的划分)。
[0025] 数据通过输入设备输入到运算存储器模块中,运算存储器模块在控制器发出的指 令控制下对数据进行处理,处理后的结果可以存储在刚刚完成运算的单元内,等待用于后 面的运算或者输出。也即,除了必需的输入和输出部分外,本发明提出的运存一体体系框架 主要包括控制器和运算存储器(简称为"运存器")两部分。控制器的作用是产生相应的脉 冲信号,从而对运存器发出指令。控制器电路结构及功能与传统计算机相似,在此不再详细 描述。
[0026] 图3示意性示出了根据本公开实施例的运算存储器的结构。如下所述,运算存储 器包括阻变单元构成的阵列,因此也称作运算存储阵列。
[0027] 如图3所示,根据该实施例的运算存储阵列100包括沿第一方向(例如,图中水平 方向)延伸的多条(在此,假设m条)字线103,具体地,WL1、WL2、WL3…、WLm,以及沿与第 一方向交叉(例如,垂直)的第二方向(例如,图中竖直方向)延伸的多条(在此,假设n 条)位线105,具体地,BL1、BL2、BL3…、BLn。在字线103和位线105的交叉点处,设置有阻 变单元107。阻变单元107的一端连接至相应的字线103,且另一端连接至相应的位线105。 因此,阻变单元107形成为mXn的阵列。
[0028] 阻变单元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 可以包括Hf〇2、Ta205、Ti02、A1203、Si02、GeSe、GeS等或其组合。各层的厚度可以根据所应 用的集成工艺而定。尽管在图4(a)的示例中将三层示出为 圆柱体的上下堆叠,但是阻变器 件的结构不限于此,例如可以是长方体或正方体的上下堆叠,或者可以是柱状径向堆叠。图 4(b)示意性示出了包括这种阻变器件的阻变单元在字线WL和位线BL之间的连接方式。根 据本公开的另一实施例,如图4 (c)所示,除了阻变器件400之外,阻变单元107还可以包括 与阻变器件串联的限制器件407,用于抑制交叉阵列中的串扰问题。限制器件为电流-电压 关系具有非线性特征的两端器件,可以是(但不限于)二极管、肖特基二极管、另一阻变器 件等。在此需要指出的是,这种限制器件本身在交叉阵列(例如,各种存储单元阵列)中是 常用的,在此不再赘述。
[0029] 由于阻变器件具有非易失存储数据的特性,因此每个阻变单元都可以看成存储 器,阻变器件处于高阻态和低阻态分别对应了存储"0"和"1",通过(电压)脉冲信号可以 控制对每个单元进行读写。本领域存在多种方式对这种阻变单元进行数据读取/写入等存 储器操作,在此不再赘述。此外,本领域存在多种方式来设置阵列的外围电路(例如,译码 器电路、读出放大电路等),以将这种阵列用作非易失性存储器,因此在此对该阵列中涉及 存储器操作的电路不再赘述。
[0030] 根据本公开的实施例,除了存储功能之外,阻变单元还能直接参与计算。例如,根 据不同运算的需要,处于同一字线上的若干阻变单元可以预先被设定为某些阻态的组合, 通过在相应的位线上输入脉冲序列进行运算,最后的运算结果可以直接存储在相应的阻变 单元中,可以直接用于输出,或者继续用于后面的计算。具体地,如果需要对一个或多个第 一阻变单元中存储的数据("运算数")进行运算,可以向该一个或多个第一阻变单元以及 连接到同一条字线的另外的一个或多个第二阻变单元相对应的位线施加与所要进行的逻 辑运算相对应的电压脉冲序列,在第一阻变单元以及第二阻变单元中的至少一个阻变单元 中得到对运算数进行逻辑运算的结果。这将在以下进一步详细描述。
[0031] 运存器可执行的运算不是固定的,可以根据用户需要随时进行编程。编程后,如果 不进行擦写,该运算功能将始终保持在该编程区域。运算功能包括传统CPU可以执行的所 有逻辑,如"与"、"或"、"非"、"与非"、"或非"、"加法"、"乘法"等,这将在以下进一步详细描 述。实现不同运算功能的区别仅在于阻变单元的状态和输入脉冲序列不同,与阻变单元在 阵列中所处的位置无关。因此,阵列中的任何阻变单元都可以实现存储或者运算功能。因 此,该系统具有运算和存储不分离的特点,运算和存储可以在同一位置完成,不需要数据传 输的时间和空间。
[0032] 为了向位线施加脉冲序列,各位线105的一端可以连接至控制器(图3中未示 出),以便从中接收脉冲信号(包括用于对阻变单元进行存储器读写操作的脉冲信号以及 用于进行运算操作的脉冲信号)。此外,各字线103的一端可以连接有基准单元109,具体 地,1?1、1^2、1^3~、1^111,基准单元109的另一端可以连接到基准电压(例如,地电压6冊)。 如下所述,基准单元109主要用于与高阻态或低阻态的阻变单元相结合,以便将相应位线 设置为基准电压(GND)或者VDD。例如,基准单元109可以包括具有一定阻值的固定电阻或 者具有一定阻值状态的伪阻变单元。这种伪阻变单元可以具有与阻变单元相同的结构,但 是并不用于存储,而是主要用于提供运算基准。基准单元109的阻值可以设在阻变单元高 阻态阻值和低阻态阻值之间,例如,可以设为高阻态阻值和低阻态阻值的几何平均值。各字 线103的另一端可以连接到输出模块(未示出),以便输出阻变单元107中的数据。这里需 要指出的是,在对运算存储阵列进行读写操作时,基准单元109的一端可以不再连接到基 准电压,而是电浮置。
[0033] 根据本公开的运存器还具有并行计算的特点。通过合理分配执行运算的阻变单 元,同时在不同位线上施加输入脉冲序列,可以使每条字线分别执行相应的逻辑运算,不同 字线上的运算可以同时执行(例如,第一字线上可以通过向第一组位线施加脉冲序列来进 行运算,同时,与第一字线不同的第二字线上可以通过向与第一组位线不同的第二组位线 施加脉冲序列来进行运算;为避免不同字线之间的干扰,这种情况下阻变单元优选地包括 限制器件)。于是,每条字线可以单独看成一个处理器(如图3中的虚线框所示)。在图11 中示出了与字线WL1、WL2、WL3…、WLm相对应的并行处理器#1、处理器#2、处理器#3…、处 理器#m。这样,一个阵列相当于多个并行的处理器,可以大大提高计算效率。
[0034] 根据本公开的运存器还具有学习的功能。具体地,由于运存器本身可以存储运算 数和运算结果(且可以存储所进行的逻辑运算),因此,当再次针对相同运算数进行相同运 算时,可以直接调用所存储的运算结果,而无需再次运算。即,运存器"学习"了该运算。此 外,由于所有的运算功能都不是固定的,用户可以根据不同时期的需要,将运存器编程为不 同的功能。这种具有学习能力与可重构特征的体系结构提高了计算的灵活性和每个单元的 利用效率。
[0035] 图5示意性示出了阻变单元107能够用于(非易失性)逻辑运算的原理。
[0036] 图5示出了连接到同一条位线WLi的两个阻变单元&和Rik。这里需要指出的是, 阻变单元Ru和Rik不一定是相邻的阻变单元,即相应的位线BLj和BLk不一定相邻。
[0037] 运算前,可以向阻变单元Rik预先写入"0"(S卩,高阻态)。运算时,对阻变单元Ru 连接到的位线BLj施加电压第一电压,同时在阻变单元Rik连接到的位线BLk上施加第二电 压。在此,第一电压相对于基准单元Rfi(阻值为连接到的基准电压(例如,GND)不会 使阻变单元从高阻态切换到低阻态,且第二电压相对于第一电压也不会使阻变单元从高阻 态切换到低阻态,而第二电压相对于基准电压将会使阻变单元从高阻态切换到低阻态(在 此,表述"电压A相对于电压B使阻变单元从高阻态切换到低阻态"是指将电压A和电压B 施加到阻变单元两端时,阻变单元从高阻态切换到低阻态,表述"电压A相对于电压B不会 使阻变单元从高阻态切换到低阻态"是指将电压A和电压B施加到阻变单元两端时,阻变单 元不从高阻态切换到低阻态)。根据一示例,第二电压可以是第一电压的两倍,即第一电压 为VDD/2,且第二电压为VDD。
[0038] 这时,如果阻变单元&存储的数据是" 1"(即,低阻态,阻值为R上设阻变单元& 的电阻风)远低于基准单元0〇,则位线WLi上的电位被阻变单元Rij上拉为与BLj上相 同,为第一电压(例如,VDD/2)。于是,Rik两端的电压为第二电压与第一电压之差(例如, VDD-VDD/2 =VDD/2)。如上所述,该电压不足以使Rik发生阻变,因此仍保持原来的状态,即从 Rik输出的结果为"〇"。
[0039] 相反,如果Ru存储的数据是"0"(即,高阻态,阻值SRH),SRU的电阻(RH)远高 于基准单元GO,这时位线WLi上的电位被基准单元Rfi下拉为0。那么Rik两端的电压为 第二电压减去基准电压(例如,VDD),这一电压将使Rik从高阻态变为低阻态,从而输出的结 果为"1"。
[0040] 可见,从Rik输出的结果是与Ru中存入的数据"A"相关的。在运算时,同一字线 上的其他阻变单元所对应的位线可以电浮置。下面说明的各种逻辑运算的操作方法都是基 于这一原理实现的。更进一步而言,存在这样的基本操作:向一条位线施加第一电压,并向 另一位线施加第二电压。以下各种逻辑运算均是该基本操作的集合。一个给定的逻辑运算 可以分解为一次或多次该基本操作的组合,在每次操作中电压脉冲所施加到的位线可以不 同。对于不参与运算的位线,可以电浮置。因此,控制器所要施加的电压脉冲序列包括第一 电压、第二电压和电浮置中至少之一。
[0041] 在以上操作中,假定了阻变单元的低阻态阻值&远低于基准单元阻值,且阻变 单元的高阻态阻值RH远高于基准单元阻值R^。在此,所谓"远高于"或者"远低于",是指在 两者的串联连接两端施加电压时,电压降基本上全都落在阻值"远高于"另一方的一方上。 在一个示例中,高阻态电阻值(RH)可以比基准单元的电阻值(R〇)高至少一倍,基准单元的 电阻值可以比阻变单元的低阻态电阻值(RJ高至少一倍。
[0042] 在基准电压为GND,第一电压为VDD/2,且第二电压为VDD时,如果阻变单元可以发生 高阻态到低阻态的最小转变电压为vsrt,则一般地VDD可以满足:
[0043] 2(2R〇+Rh)/ (R〇+2Rh)XVset<VDD< 2(R〇RL+R〇RH+RHRL) / (R〇RH+2RHRL)XVset〇
[0044] "非"逻辑
[0045] 事实上,以上结合图5描述的操作即为"非"逻辑。具体地,阻变单元Rik中得到的 数据OUT=A。也即,如图6所示,如果需要对某一阻变单元中的数据"A"进行逻辑"非" 运算,那么可以调用与该阻变单元连接到同一字线WLi的一(辅助)阻变单元Rik。在 该辅助阻变单元Rik中预先写入"0"。然后,通过向阻变单元Ru连接到的位线BLj施加电 压VDD/2,同时在辅助阻变单元Rik连接到的位线BLk上施加电压VDD,即可在辅助阻变单元 Rik中得到逻辑"非"运算结果。
[0046] "或"逻辑
[0047] 如图7(a)所示,如果需要对连接到同一字线WLi的阻变单元Ru和Rik中存储的 数据"A"和"B"进行逻辑"或"运算,则可以调用连接到该字线WLi的一(辅助)阻变单元 Ru。在该辅助阻变单元L中预先写入"0"。运算时,先在与Ru相连的位线BLj上施加电 压VDD/2,同时在与M目连的位线BL1上施加电压VDD;然后在与Ru相连的位线BL1上施加 电压VDD/2,同时在与Rik相连的位线BLk上施加电压VDD。在该示例中,在运算后阻变单元 Rik中存储的数据OUT=A+B。
[0048] 具体地,若Rik存储的数据"B"为1,则运算后Rik中存储的数据OUT必然为1。
[0049] 另一方面,若Rik存储的数据"B"为0,则经过了两次取"非"运算后,Rik中存储的 数据将与Ru存储的数据"A"相同。A为0则OUT为0,A为1则OUT为1。
[0050] 因此,运算后阻变单元Rik中存储的数据OUT满足"或"逻辑的要求。
[0051] 若要不破坏Rik存储的数据B,可再多调用一个阻变器件。具体地,如图7(b)所示, 运算前在多调用的辅助阻变器件Rip中预先存入Rik中的数据B,之后对于RRip和Rn相 对应的位线BLj、BLp和BL1执行以上结合图7 (a)描述的操作。这样,在Rip中得到OUT=A+B。也即,在本示例中,利用一个辅助阻变器件Rip,替代了Rik参与运算,并因此在其中得 到运算结果;而Rik中存储的数据可保持不变。
[0052] "与"逻辑
[0053] 如图8所示,如果需要对连接到同一字线WLi的阻变单元&和Rik中存储的数据 "A"和"B"进行逻辑"与"运算,则可以调用连接到该字线WLi的两个(辅助)阻变单元Rn 和Rip。在阻变单元Rn和Rip中,预先存入"0"。运算时,先在与Ru相连的位线BLj上施加 电压VDD/2,同时在与M目连的位线BL1上施加电压VDD;然后在与Rik相连的位线BLk上施 加电压VDD/2,同时在与M目连的位线BL1上施加电压VDD;最后在与Ru相连的位线BL1上 施加电压VDD/2,同时在与Rip相连的位线BLp上施加电压VDD。
[0054] 若心或Rik中有至少一个存储"0",则Ru将被写入" 1",Rip将为"0" ;反之,若R^ 和Rik均为1,则Rd呆持为"〇",Rip将被写入" 1 "。因此,运算后Rip中得到的数据OUT=AB。
[0055] "异或"逻辑
[0056] 如图9 (a)所示,如果需要对连接到同一字线WLi的阻变单元&和Rn中存储的数 据"A"和"B"进行逻辑"异或"运算,则可以调用连接到该字线WLi的两个(辅助)阻变单 元Rik和Rip。在辅助阻变单元Rik中预先存储与Ru中相同的数据,在此标示为"A' ",在辅助 阻变单元Rip中预先存储"0"。运算时,先在与Ru相连的位线BL1上施加电压VDD/2,同时在 与Rik相连的位线BLk上施加电压VDD;接着在与Rik相连的位线BLk上施加电压VDD/2,同时 在与Rip相连的位线BLp上施加电压VDD;然后在与Ru相连的位线BLj上施加电压VDD/2,同 时在与Rn相连的位线BL1上施加电压VDD;最后在与Rn相连的位线BL1上施加电压Vdd/2, 同时在与Rip相连的位线BLp上施加电压VDD。
[0057] 若A和B均为0,则上述第一步中Rik中将被写入1,第三步中Ru中将被写入1,那 么第二步和第四步两次"非"操作均不能改变Rip中的0。若A和B均为1,则第一步和第三 步均不会改变Rik和Ru中的1,那么第二步和第四步两次"非"操作均不能改变Rip中的0。 若A为0、B为1,则第一步中Rik中仍为0,那么第二步将使Rip变为1,第三步和第四步不会 改变Rip存储的数据。若A为1、B为0,这时第一步和第二步不会改变Rip,第三步以后Rn仍 为〇,则第四步将会使Rip变为1。因此,运算后Rip中得到的数据OUT=A?B。
[0058] 若要不破坏Ru中存储的数据B,可再多调用一个阻变器件。具体地,如图9(b)所 示,运算前在多调用的辅助阻变器件Riq中预先存入Ru中的数据"B"(图中标示为"B' "), 然后以该辅助阻变器件Riq来代替Ru参与上述操作。
[0059] 其他逻辑
[0060] "或非"、"异或非"逻辑可以分别在"或"、"异或"运算结果的基础上通过多调用一 个辅助阻变单元,再取一次"非"得到。"与非"逻辑可以在"与"逻辑的基础上少调用一个阻 变器件,"与"逻辑中的辅助阻变单元Ru即为"与非"的结果(参见以上结合图8的说明)。 类似地,其它复杂逻辑也可以通过上述逻辑组合得到。
[0061] "全加"运筧
[0062] 不考虑进位的加法运算为"半加"运算,即"异或"逻辑。而考虑进位的加法运算 称为"全加"运算。"全加"运算包括三个输入和前一位的进位"C/',同时包括两 个输出,即本位的和"S"和向下一位的进位"C。"。运算可以调用处于同一字线上的十四个 阻变单元,如图10所示,阻变单元&和Ru分别存储两个加数A和B,阻变单元Riq存储前 一位的进位Q,辅助阻变单元Rik、Rip和R&分别预先写入与A、B和Ci相同的数据(标示为 A'、B'和(V),其他辅助阻变单元Ris~Riz分别预先存入"0"。运算后辅助阻变单元Riy 和Riz中分别存储有得到的和S以及进位C。。
[0063] 运算时,第一步通过Rij(A)、Rn⑶和Rik^ )、Rip以)运算得到.
,结果 可以存储在
中(参见以上"异或"运算,特别是结合图 9 (b)的描述)。第二步通过
、')运算得到
,结果可以存储在Riy(S)中(参见以上"异或"运算,特别是结合图9(b)的描 述)。第三步通过⑶和辅助阻变单元Riv运算得到AB,结果可以存储在阻变器 件Riu(AB)中(参见以上结合图8描述的"与"运算)。第四步通过:
,Riq(Ci) 和辅助阻变单元Riw运算得到
,结果可以存储在
'中(参见以上结 合图8描述的"与"运算)。第五步通过Riu(AB)、Riz和辅助阻变单元Rix运算得到(AB)+C。, 结果可以存储在Riz(C。)中(参见以上的"或"运算,特别是结合图7(b)的描述)。
[0064] 在以上的操作中,经常会用到"辅助"阻变单元。这些辅助阻变单元可以是尚未存 储有数据的"空闲"阻变单元,或者可以是专门设置用于帮助运算的专用辅助阻变单元。例 如,可以针对每一字线设置若干专用辅助阻变单元。辅助阻变单元可以按需被预写入操作 数的副本或者"〇"(高阻态)等。
[0065] 根据本公开的实施例,提出了一种运存一体、可重构、可学习的计算系统体系框架 以及用于其中的运算存储器或者说运算存储阵列。本公开的技术突破了冯诺依曼系统的限 制,可实现运算和存储不分离、可并行计算等。因此,提高了计算效率,降低了能耗,节约了 制造成本,适合大数据计算的应用。此外,利用阻变器件进行运算和存储,具有非易失保存 数据的能力,在计算空闲时不需要供电,从而使电路没有静态功耗,进一步大大减少了能量 消耗,特别适合于移动设备的应用。运算和存储在相同的器件下进行,没有速度不匹配的问 题。同时,阻变器件工作速度快,可以高效完成复杂的计算。可根据需要来定义运算的内容, 具有更高的灵活性和效率。所有的计算仍基于传统布尔逻辑完成,编程语言与传统计算机 相兼容。与传统的电荷型计算不同,本发明提出的电阻型计算不存在电压损失问题,因此不 需要考虑级联问题。
[0066] 以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而 并非为了限制本公开的范围。本公开的范围由所附权利要求及其等价物限定。不脱离本公 开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的 范围之内。
【主权项】
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所述的运算存储阵列,设基准单元的阻值为RC1,阻变单元的高阻 态阻值为Rh,阻变单元的低阻态阻值为&,阻变单元从高阻态切换到低阻态的最小转变电 压为Vsrt,则 2(2R〇+Rh)/(R〇+2Rh)XVset<VDD< 2(R0Rl+R〇Rh+RhRl)/(R〇Rh+2RhRl)XVset〇13. 根据权利要求I所述的运算存储阵列,其中基准电阻包括基准单元或伪阻变单元。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所述的方法,设基准单元的阻值为R^,阻变单元的高阻态阻值为
【专利摘要】提供了一种运算存储阵列及其操作方法。运算存储阵列可以包括:沿第一方向延伸的多条字线;沿与第一方向交叉的第二方向延伸的多条位线;分别设置于各位线和各字线的交叉点处且与相应位线和相应字线连接的多个阻变单元,每一阻变单元在高阻态和低阻态之间可切换并因此存储相应的数据;连接到每一条字线的基准单元,基准单元的一端连接到字线,而另一端连接到基准电压,其中基准单元的阻值在阻变单元的高阻态阻值和低阻态阻值之间;以及控制器,用于通过向位线施加电压脉冲序列,对连接到同一条字线的阻变单元中存储的数据进行逻辑运算。
【IPC分类】G06F3/06
【公开号】CN104898990
【申请号】CN201510305628
【发明人】康晋锋, 李海桐, 高滨, 刘力锋, 刘晓彦
【申请人】北京大学
【公开日】2015年9月9日
【申请日】2015年6月5日

最新回复(0)