CN114692076A - 一种忆阻器芯片及其操作方法 - Google Patents

一种忆阻器芯片及其操作方法 Download PDF

Info

Publication number
CN114692076A
CN114692076A CN202011640819.6A CN202011640819A CN114692076A CN 114692076 A CN114692076 A CN 114692076A CN 202011640819 A CN202011640819 A CN 202011640819A CN 114692076 A CN114692076 A CN 114692076A
Authority
CN
China
Prior art keywords
memristors
memristor
rows
resistance state
columns
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
CN202011640819.6A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202011640819.6A priority Critical patent/CN114692076A/zh
Publication of CN114692076A publication Critical patent/CN114692076A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/3332Query translation
    • G06F16/3334Selection or weighting of terms from queries, including natural language queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/194Calculation of difference between files
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0026Bit-line or column circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • G11C13/0028Word-line or row circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Pure & Applied Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Software Systems (AREA)
  • Logic Circuits (AREA)

Abstract

本申请实施例提供一种忆阻器芯片,该芯片包括控制电路、忆阻器阵列和处理电路;在进行矩阵乘法计算时控制电路首先将忆阻器阵列中2F行N列的忆阻器设置为不同阻态,用于表示F行N列的矩阵,其中,2F行N列的忆阻器中每列的两个忆阻器表示矩阵中的一个值;然后将N行1列的向量中的N个数值转换为对应的N个电压,将向量中第1至N行数值对应的电压分别施加到第1至N列的忆阻器上,处理电路通过对2F行忆阻器的输出进行处理,得到F行N列的矩阵与N行1列的向量的乘法运算的结果。通过上述忆阻器芯片,能够将矩阵向量乘法运算卸载到忆阻器阵列,实现存内计算,提升计算速度,降低能耗。

Description

一种忆阻器芯片及其操作方法
技术领域
本申请涉及集成电路领域,尤其涉及一种忆阻器芯片及其操作方法。
背景技术
当前计算设备通过中央处理器(central processing unit,CPU)等基于互补金属氧化物半导体(complementary metal oxide semiconductor,CMOS)制造的器件进行矩阵乘法计算时的复杂度较高,CPU和存储器之间需要频繁的进行数据交互,占用存储器输入输出(input output,IO)资源,会带来较高的延迟,导致计算效率低下,无法满足海量数据计算场景的需求。同时,大量的计算会占用CPU的算力,影响计算设备的整体性能。
发明内容
本申请实施例公开了一种忆阻器芯片及其操作方法,能够基于忆阻器阵列实现矩阵向量乘法运算,实现存内计算,减少数据从存储器搬运到CPU的次数,提升计算速度,降低能耗。
第一方面,本申请实施例提供了一种忆阻器芯片,该忆阻器芯片包括控制电路、忆阻器阵列以及处理电路,其中,
控制电路,用于:将忆阻器阵列中2F行N列的忆阻器设置为不同阻态,其中,2F行N列的忆阻器用于表示F行N列的矩阵,每列的两个忆阻器表示矩阵中的一个值;
将N行1列的向量中的N个数值转换为对应的N个电压,将向量中第1到第k行数值对应的电压分别施加到第1到第k列的忆阻器上,以使乘法器件基于2F行的忆阻器中的电流确定F行N列的矩阵与N行1列的向量的乘法运算的结果,其中,N个电压均小于使忆阻器阻值改变的电压,k为小于或等于N;
处理电路,用于对通过上述2F行忆阻器的输出进行处理,得到F行N列的矩阵与N行1列的向量的乘法运算的结果。
通过控制电路将忆阻器阵列中忆阻器设置为不同的阻态用于表示矩阵中不同的值,然后将向量中的每个值转换为对应的电压,进而完成矩阵向量乘法,将矩阵向量乘法计算卸载到忆阻器阵列,实现存内计算,能够减少数据在存储器与CPU之间的搬运,降低矩阵向量乘法的复杂度,提升计算速度,降低能耗。
在一种可能的实现方式中,处理电路用于侦测忆阻器阵列中每两行忆阻器的输出电流,并将每两行忆阻器的输出电流作为所述F行N列的矩阵与所述N行1列的向量相乘后的结果。
控制电路将忆阻器阵列中每个忆阻器根据矩阵中的数值设置为对应的阻态,然后将向量中的值转换为对应的电压施到忆阻器阵列,从而能够在连接每行忆阻器的连线上产生不同的电流,处理电路通过对忆阻器阵列输出的电流进行处理,能够得到矩阵与向量相乘的结果。
在一种可能的实现方式中,处理电路包括F个减法器及F个比较器,上述忆阻器阵列中的每两行忆阻器连接一个减法器,每个减法器的输出端连接一个比较器,F个比较器的输出形成二进制哈希码,即为上述F行N列的矩阵与N行1列的向量的乘法运算经过降维之后的结果,其中,每两行忆阻器中的一行连接减法器的正向输入端,另一行连接同一个减法器的反向输入端。
在通过忆阻器阵列进行矩阵乘法运算时,连接同一个减法器的两行忆阻器的连线上能够产生不同的电流,减法器将两个输入端的输入电流相减,得到输出电压,比较器根据每个减法器的输出电压确定矩阵向量乘法运算的结果。
在一种可能的实现方式中,将忆阻器阵列中2F行N列的忆阻器设置为不同阻态,具体包括:控制电路根据处理器确定的2F行N列的忆阻器中每个忆阻器的阻态,依次向每一行忆阻器施加不同的电压,将每一行忆阻器设置为对应的阻态,控制电路在对第s行的忆阻器施加电压时,先将第s行忆阻器的负极接地,然后向第s行忆阻器中每个忆阻器的正极施加电压,使第s行忆阻器中每个忆阻器的阻值处于第一阻态或第二阻态,再断开第s行忆阻器的负极与地的连接,对下一行的忆阻器施加电压,其中,第一阻态的阻值小于第二阻态的阻值,s的取值为1到2F。
控制电路在设置忆阻器阵列中每个忆阻器的阻态时,对每行忆阻器分别进行设置,在设置第一行时,将其他行的忆阻器与地断开连接,防止改变其他行忆阻器的阻态,在将第一行的忆阻器的阻态设置完之后,将该行忆阻器与地的连接断开,防止在向其他行施加电压时,第一行的忆阻器的阻态发生变化。
在一种可能的实现方式中,控制电路具体用于:在所述矩阵中第i1行第j1列数值为1时,将所述忆阻器阵列中第i1行第j1列的忆阻器设置为所述第一阻态,将所述忆阻器阵列中第i1+1行第j1+1列的忆阻器设置为所述第二阻态;在所述矩阵中第i2行第j2列数值为-1时,将所述忆阻器阵列中第i2行第j2列的忆阻器设置为所述第二阻态,将所述忆阻器阵列中第i2+1行第j2+1列的忆阻器设置为所述第一阻态。
每个忆阻器具有多种阻态,通过忆阻器阵列中连接在同一个减法器,且位于同一条列上的两个忆阻器表示一个值,将两个忆阻器设置为不同的阻态,使两个忆阻器具有不同的组态组合从而表示不同的数值,能够用忆阻器阵列表示不同数值组成的矩阵。
在一种可能的实现方式中,控制电路具体用于:在第i3行第j3列的忆阻器的阻态第一阻态时,向第i3行第j3列的忆阻器施加正向电压;或者,在第i4行第j4列的忆阻器的阻态为第二阻态时,向第i4行第j4列的忆阻器施加反向电压。
在一种可能的实现方式中,每个减法器用于将正向输入端的输入电流与反向输入端的输入电流相减,得到输出电压;每个比较器用于将对应减法器的输出电压与0伏电压比较,在大于所述0伏电压时,输出高电平;或者在小于等于所述0伏电压时,输出低电平。
第二方面,本申请实施例提供一种逻辑运算方法,应用于如上述第一方面所述的忆阻器芯片,该方法包括:
控制电路将忆阻器阵列中2F行N列的忆阻器设置为不同阻态,其中,2F行N列的忆阻器用于表示F行N列的矩阵,每列的两个忆阻器表示矩阵中的一个值;
将N行1列的向量中的N个数值转换为对应的N个电压,将向量中第1到N行数值对应的电压分别施加到第1到N列的忆阻器上,其中,所述N个电压值均小于使所述忆阻器阻值改变的电压;
处理电路对通过2F行忆阻器的输出进行处理,得到F行N列的矩阵与N行1列的向量的乘法运算的结果。
在一种可能的实现方式中,上述处理电路对通过所述2F行忆阻器的输出进行处理,包括:处理电路侦测每两行忆阻器的输出电流,并将每两行忆阻器的输出电流作为所述F行N列的矩阵与所述N行1列的向量相乘后的结果。
在一种可能的实现方式中,处理电路包括F个减法器及F个比较器,忆阻器阵列中的每两行忆阻器连接一个减法器,每个减法器连接一个比较器,F个比较器的输出形成二进制哈希码。
在一种可能的实现方式中,处理电路包括F个减法器及F个比较器,上述忆阻器阵列中的每两行忆阻器连接一个减法器,其中,每两行忆阻器中的一行连接减法器的正向输入端,另一行连接同一个减法器的反向输入端,每个减法器的输出端连接一个比较器,F个比较器的输出形成二进制哈希码,即为上述F行N列的矩阵与N行1列的向量的乘法运算经过降维之后的结果。
在一种可能的实现方式中,控制电路将忆阻器阵列中2F行N列的忆阻器设置为不同阻态,包括控制电路根据处理器确定的2F行N列的忆阻器中每个忆阻器的阻态,依次向每一行忆阻器施加不同的电压,将每一行忆阻器设置为对应的阻态,控制电路在对第s行的忆阻器施加电压时,先将第s行忆阻器的负极接地,然后向第s行忆阻器中每个忆阻器的正极施加电压,使第s行忆阻器中每个忆阻器的阻值处于第一阻态或第二阻态,再断开第s行忆阻器的负极与地的连接,对下一行的忆阻器施加电压,其中,第一阻态的阻值小于第二阻态的阻值,s的取值为1到2F。
在一种可能的实现方式中,在矩阵中第i1行第j1列数值为1时,控制电路将忆阻器阵列中第i1行第j1列的忆阻器设置为第一阻态,将忆阻器阵列中第i1+1行第j1+1列的忆阻器设置为第二阻态;在矩阵中第i2行第j2列数值为-1时,将忆阻器阵列中第i2行第j2列的忆阻器设置为第二阻态,将忆阻器阵列中第i2+1行第j2+1列的忆阻器设置为第一阻态。
在一种可能的实现方式中,控制电路在第i3行第j3列的忆阻器的阻态第一阻态时,向第i3行第j3列的忆阻器施加正向电压;或者,在第i4行第j4列的忆阻器的阻态为第二阻态时,向第i4行第j4列的忆阻器施加反向电压。
第三方面,本申请实施例还提供一种计算设备,该计算设备包括上述第一方面所描述的忆阻器芯片。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相似哈希算法的流程示意图;
图2是本申请实施例提供的一种忆阻器芯片的示意图;
图3是本申请实施例提供的另一种忆阻器芯片的示意图;
图4是本申请实施例提供的另一种忆阻器芯片的示意图;
图5是本申请实施例提供的基于忆阻器芯片实现矩阵向量乘法的流程示意图。
具体实施方式
为了帮助本领域技术人员更好地理解本申请的技术方案,首先对本申请实施例中所涉及到的一些概念进行介绍。
忆阻器,全称记忆电阻器(memristor),是一种具有记忆阻值功能的电阻。忆阻器是一种双极性器件,包括正极与负极,忆阻器的阻值会随着施加在忆阻器正极与负极的电压的变化而变化。当在忆阻器的正极与负极施加正向电压时,若正向电压的值小于忆阻器对应的启动电压的值,忆阻器的阻值保持不变;若向忆阻器施加的正向电压的值大于启动电压的值且小于第一临界电压的值,施加的正向电压越大,忆阻器的阻值会越小;若向忆阻器施加的正向电压的值大于或等于第一临界电压的值,忆阻器的阻值会降低到最小值后不再变化。当在忆阻器的正极与负极施加负向电压时,若负向电压的值小于上述启动电压的值,忆阻器的阻值保持不变;若向忆阻器施加的负向电压大于启动电压且负向电压小于第二临界电压时,施加的负向电压越大,忆阻器的阻值会越大,当向忆阻器的施加的负向电压大于或等于第二临界电压时,忆阻器的阻值会升高到最大值后不再变化。当施加在忆阻器正极与负极的电压被撤掉时,忆阻器会保持撤掉电压时的阻值,从而达到“记忆”阻值的功能。其中,正向电压与负向电压是指施加在忆阻器正极的电压与施加在忆阻器负极的电压的电压差,当电压差为正时,表示忆阻器正极与负极之间施加的是正向电压,当电压差为负时,表示忆阻器正极与负极之间施加的是负向电压。上述第一临界电压的值与第二临界电压的值可以相同,也可以不同。
局部敏感哈希(locality sensitive hashing,LSH)算法常用于高维数据的降维,进而加快搜索的速度和准确度,其本质是将一组高维的数据经过哈希函数转换为数据指纹,使得不同的数据生成的数据指纹不同,相似数据生成的数据指纹也相似。
随机超平面哈希是LSH算法中的一种,以文本为例,通过随机超平面哈希编码生成数据指纹时,首先将文本中的每个词编码为长度为F的向量,则文本中的N个词对应的就是一个F*N的矩阵,即该文本对应的特征矩阵;然后记录每个词在文本中出现的次数,将每个词出现的次数组成一个向量T,即为该文本对应的权重向量,因为有N个词,则权重向量T为N*1的向量;再将特征矩阵与权重向量T相乘,得到F*1的向量S;最后将S中的负数转换为-1,非负数转换为1,即得到降维后的该文本对应的数据指纹。
相似哈希(simhash)算法是随机超平面哈希中的一种,在网页去重和文本去重中发挥着重要作用。simhash算法的主要思想是降维,以文本为例,通过将文本对应的高维的特征向量映射成低维的特征向量,然后通过计算两个文本之间的汉明距离(hammingdistance)来确定文本的相似度。如图1所示,图1是相似哈希算法的流程示意图,simhash算法分为五个步骤:分词、计算哈希(hash)、加权、合并与降维,具体步骤如下:
a、分词
分词的主要目的是将给定的一段语句或者文本进行分词,对每个词进行编码得到每个词对应的特征向量,并为每个特征向量设置权重(weight)。例如,以对一个文本进行分词后得到的5个词,权重包括1至5共五个级别为例,这五个词的特征向量分别为w1、w2、w3、w4与w5,以及分配的权重分别为4、3、1、2和0。
b、计算哈希
通过哈希函数计算每个特征向量的hash值,其中,hash值为1和-1组成的n比特的签名。示例性的,如图1中所示,如果n等于3,对上述五个词对应的特征向量通过哈希函数计算得到得hash值分别为:h(w1)=[1,-1,1],h(w2)=[-1,1,1],h(w3)=[1,-1,-1],h(w4)=[-1,-1,1],h(w5)=[1,1,-1]。
c、加权
在计算出每个特征向量的hash值之后,基于每个词的特征向量与步骤a中每个词的权重计算每个词对应的加权结果W,其中,W=hash*weight,则W(w1)=[1,-1,1]*4=[4,-4,4],W(w2)=[-1,1,1]*3=[-3,3,3],W(w3)=[1,-1,-1]*1=[1,-1,-1],W(w4)=[-1,-1,1]*2=[-2,-2,2],W(w5)=[1,1,-1]*0=[0,0,0]。
d、合并
将上述各个特征向量的加权结果进行累加,得到上述文本对应的n bit的签名。以上述五个词为例,通过累加得到上述五个词对应的3bit的签名为[4-3+1-2+0,-4+3-1-2+0,4+3-1+2+0]=[0,-4,8]。
e、降维
对于上述步骤d中得到的n bit签名中的每一位数值,如果大于0则将该位的值置1,如果小于或等于0则将该位的值置0,从而得到文本对应的simhash值。上述[0,-4,8]进行降维之后得到的simhash值为[0,0,1]。
应当说明的是,上述加权和合并计算的实质是将每个词的特征向量组成的特征矩阵与每个词对应的权重组成的权重向量进行矩阵乘法的过程。例如,上述示例中的五个词的对应的加权与合并操作可以通过以下矩阵乘法实现:
Figure BDA0002880896730000051
当前计算设备通过中央处理器(central processing unit,CPU)等基于互补金属氧化物半导体(complementary metal oxide semiconductor,CMOS)制造的器件进行矩阵乘法计算的复杂度较高,CPU和存储器之间需要频繁的进行数据交互,占用存储器输入输出(input output,IO)资源,会带来较高的延迟和能耗,效率低下,无法满足海量数据计算场景的需求。同时,大量的计算会占用CPU的算力,影响计算设备的整体性能。
为了解决上述问题,本申请实施例提供一种基于忆阻器芯片,用于实现矩阵向量乘法操作。该忆阻器芯片包括控制电路、2m行n列的忆阻器阵列以及处理电路,当需要计算F行N列的矩阵与N行1列的向量之间的乘法时,控制电路通过向2F行N列的忆阻器施加不同的电压,将2F行N列的忆阻器设置为不同的阻态。其中,2F行一列的忆阻器用于标识上述F行N列的矩阵中的一列的数值,即用每列忆阻器中的两个忆阻器表示F行N列的矩阵中的一个值。控制电路将忆阻器阵列中2F行N列的忆阻器设置为不同的组态,用于表示上述F行N列的矩阵之后,在将N行1列的向量中的每个数值转换为对应的电压,得到N个电压,然后将向量中第1行至第N行的数值对应的电压分别施加到第1列至第N列的忆阻器上,即将向量中第一行数值对应的电压施加到第一列忆阻器上,将向量中第二行数值对应的电压施加到第二列忆阻器上,将向量中第k行数值对应的电压施加到第k列忆阻器上,依次类推。将向量中第1行至第N行的数值对应的电压分别施加到第1列至第N列的忆阻器上之后,处理电路对2F行的忆阻器的输出进行处理,得到输出结果。实现F行N列的矩阵与N行1列的向量之间的乘法运算。其中,根据向量中的N个数值转换得到的N个电压的值小于上述能够让忆阻器阻值改变的启动电压,且N个电压之间的比值与向量中N个数值之间的比值相同,N小于或等于n,F小于或等于m。
处理电路包括m个减法器及m个比较器,上述忆阻器阵列中的每两行忆阻器连接一个减法器,其中,每两行忆阻器中的一行连接减法器的正向输入端,另一行连接同一个减法器的反向输入端,每个减法器的输出端连接一个比较器。处理电路通过侦测忆阻器阵列中每两行忆阻器的输出电流,并将每两行忆阻器的输出电流进行处理后作为所述F行N列的矩阵与所述N行1列的向量相乘后的结果。具体的,减法器将两行忆阻器输出的电流进行处理之后得到输出电压,比较器将减法器输出的电压与0伏的电压进行比较,F个比较器的输出形成二进制哈希码,即为上述F行N列的矩阵与N行1列的向量的乘法运算经过降维之后的结果。
下面以基于上述忆阻器阵列实现simhash算法为例,对本申请实施例提供的乘法器件及其操作方法进行介绍,基于忆阻器阵列能够将上述simhash算法中的加权、合并与降维等计算过程卸载到包括忆阻器的编码器中进行,实现存内计算,从而降低计算复杂度并减少数据在计算过程中的搬移,提高计算效率,降低能耗。
图2是本申请实施例提供的一种基于哈希编码系统示意图,该哈希编码系统包括CPU20与忆阻器芯片30,其中,CPU20用于对文本进行分词,对每个词进行编码得到每个词对应的特征向量,将每个特征向量通过LSH算法转换为哈希值,并为每个词设置权重。忆阻器芯片30用于计算每个词对应得哈希值与权重之间得乘积,并将计算得到的结果转换为用0和1表示的序列,从而得到文本对应的数据指纹。
如图3所示,忆阻器芯片30包括控制电路31、忆阻器阵列32以及处理电路33控制电路31包括第一控制电路310与第二控制电路32033。忆阻器阵列32包括多个忆阻器,以及连接忆阻器阵列中每个忆阻器的位线与字线,每个忆阻器的正级与一条位线连接,负极与一条字线连接。其中,忆阻器的不同阻值能够用于表示不同的值,例如,用忆阻器不同的阻值表示0和1,将大于或等于第一阈值的阻值表示0,将小于第一阈值的阻值表示1。第一控制电路310与每一条位线连接,第二控制电路320与每一条字线连接,第一控制电路310与第二控制电路320通过位线和字线向忆阻器输出不同电压,使不同的忆阻器处于不同的阻值以表示不同的值。忆阻器阵列32的每一条字线输出作为处理电路33的输入,处理电路33用于将忆阻器阵列32的输出信号转换为0或1输出。
第一控制电路310包括第一读写控制电路311与第一开关阵列312,第一控制电路310与忆阻器阵列32的位线连接;第二控制电路320包括第二读写控制电路321与第二开关阵列322,第二控制电路320与忆阻器阵列32的字线连接。第一控制电路310与第二控制电路320能够通过开关阵列选中需要进行读或写的忆阻器,然后通过向被选中的忆阻器施加电压实现对忆阻器的读或写。其中,对忆阻器进行读是指获取忆阻器的阻值,以根据忆阻器的阻值确定忆阻器表示的值;对忆阻器进行写是指通过向忆阻器施加不同的电压使忆阻器处于不同的阻值,以表示不同的值。
本申请实施例中,根据忆阻器的阻值不同,将忆阻器分为第一阻态和第二阻态,第一阻态对应阻值小于第二阻态对应的阻值,本申请实施例中将第一阻态称为低阻态,将第二阻态称为高阻态。如果用忆阻器的低阻态表示1,高阻态表示0,当需要对图3中第2行第3列的忆阻器写入1时,则将第一开关阵列312中与第3列位线连接的开关闭合,并将第二开关阵列322中与第2行字线连接的开关闭合,然后通过第一读写控制电路311向第2行第3列的忆阻器施加一个正向电压将该忆阻器置为低阻态。如果需要读第2行第3列的忆阻器的值,在将第一开关阵列312中与第3列位线连接的开关闭合以及第二开关阵列322中与第2行字线连接的开关闭合之后,第一读写控制电路311向该忆阻器施加一个正向电压,读取流经该忆阻器的电流值,当电流值大于或等于阈值时,表明该忆阻器处于低阻态,表示1,当电流值小于阈值时,表明该忆阻器处于高阻态,表示0。
本申请实施例中,处理模块33包括m个减法器与m个比较器,m个减法器中一个减法器的正向输入端连接一条字线,即连接一行忆阻器的负极,同一个减法器的反向输入端连接另一条字线,即连接另一行忆阻器的负极。每一个减法器的输出端连接一个比较器的一个输入端,比较器的另一个输入端接地。本申请实施例中,为描述方便,将忆阻器阵列32中连接在减法器正向输入端的m行n列忆阻器称为阵列A,将忆阻器阵列32中连接在减法器反向输入端的m行n列忆阻器称为阵列B。
如图4所示,阵列A包括m行n列忆阻器,阵列B同样包括m行n列忆阻器,阵列A包括m行字线n列位线,阵列B包括m行字线n列位线,且阵列A与阵列B共享相同的n列位线。即如果用Aij表示阵列A中第i行第j列的忆阻器,用Bij表示阵列B中第i行第j列的忆阻器。阵列A中每一行第j列的忆阻器与阵列B中每一行第j列的忆阻器的正极连接在同一列位线上,阵列A中第i行的字线与阵列B中第i行的字线连在同一个减法器的两个输入端。其中,m与n均为大于1的正整数,i为小于等于m的正整数,j为小于等于n的正整数。
本申请实施例中,通过阵列A中的一个忆阻器Aij与阵列B中的一个忆阻器Bij共同表示一个实数,即用负极连接在同一个减法器上的、阵列A中的第i行第j列的忆阻器与阵列B中第i行第j列的忆阻器共同表示一个实数。如果每个忆阻器包括高阻态和低阻态,则两个忆阻器共能形成四种不同的组合,能够用来表示4个实数。由于simhash通常将每个词对应的特征向量转换为用1和-1表示,例如上述五个词分别表示为h(w1)=[1,-1,1],h(w2)=[-1,1,1],h(w3)=[1,-1,-1],h(w4)=[-1,-1,1],h(w5)=[1,1,-1],因此本申请实施例中,通过阵列A与阵列B中的一组忆阻器Aij与Bij,能够表示的实数如下表1所示。应理解,图4中阵列A的字线连接减法器的正向输入端,阵列B的字线连接减法器的反向输入端,因此将用Aij的低阻态与Bij的高阻态表示1,用Aij的高阻态与Bij的低阻态表示-1,表1中的对应关系只是一种示例,不能理解为具体限定。例如,将阵列A的字线连接减法器的反向输入端,阵列B的字线连接减法器的正向输入端,则也可以用Aij的高阻态与Bij的低阻态表示1,用Aij的低阻态与Bij的高阻态表示-1。通常为了降低功耗,会使用两个高阻态表示0。
表1
A<sub>ij</sub> B<sub>ij</sub>
低阻态 高阻态 1
高阻态 低阻态 -1
高阻态 高阻态 0
低阻态 低阻态 0
下面结合图3和图4,介绍本申请实施例提供的simhash算法的实现方法,如图5所示,图5是本申请实施例提供的基于忆阻器的哈希编码方法的流程示意图。
S501、CPU将目标文本中的词转换为hash值,并为每个词配置权重。
CPU20将目标文本中的词转换为hash值的方法可以参照上述simhash算法步骤中的步骤1和步骤b,在此不再详细介绍。
S502、CPU确定目标忆阻器与目标忆阻器的地址,并根据每个词对应的hash值确定目标忆阻器中每个忆阻器的阻态。
CPU20在将文本中的每个词转换为用1和-1表示的hash值并给每个词分配权重之后,根据词的数量与每个hash值得长度,确定需要用于表示这些词的目标忆阻器以及目标忆阻器中每个忆阻器的地址。如果文本对应的词的数量为N,每个词对应的hash值的位数为F,由于需要阵列A和阵列B中连接在同一个减法器上的各一个忆阻器表示hash值中的一位数值,因此每个词需要F个阵列A中的忆阻器和F个阵列B中的忆阻器来表示,CPU20确定需要选通2F行N列的忆阻器作为目标忆阻器,目标忆阻器的地址包括这2F行N列的忆阻器的地址。例如,CPU20可以选择阵列A中第1行至第F行、阵列B中第1行至第F行的忆阻器作为目标忆阻器。其中,图4中每一列的忆阻器表示一个词对应的hash值,阵列A与阵列B的同一列中连接在同一个减法器上的两个忆阻器共同表示hash值中的一位数值。
CPU20在确定目标忆阻器之后,还需要根据每个词对应的hash值确定目标忆阻器中每个忆阻器的阻态,如表1中所示,在Aij与Bij组成的一组忆阻器中,用Aij的低阻态与Bij的高阻态表示1,Aij的高阻态与Bij的低阻态表示-1时。如果一个词对应的hash值是[1,-1,1],该词是用如图4所示的忆阻器阵列中的第一列忆阻器表示,则CPU20确定将A11设为低阻态,B11设为高阻态,用于表示1,将A21设为高阻态,B21设为低阻态,用于表示-1,将A31设为低阻态,B31设为高阻态,用于表示1。
可以理解,CPU20在确定目标忆阻器中每个忆阻器的阻态之后,可以以地址+阻态标识的形式将目标忆阻器中一个目标忆阻器的地址与该忆阻器的阻态发送给第一控制电路,例如,用1表示目标忆阻器中一个忆阻器的阻态为高阻态,0表示目标忆阻器中一个忆阻器的阻态为低阻态。
S503、忆阻器芯片接收CPU发送的目标忆阻器的地址与目标忆阻器中每个忆阻器的阻态,将每个目标忆阻器设置为对应的阻态。
CPU20在确定每个忆阻器的地址与目标忆阻器中每个忆阻器的状态之后,将目标忆阻器的地址与目标忆阻器中每个忆阻器的阻态发送给忆阻器芯片32。忆阻器芯片32在接收到目标忆阻器的地址以及目标忆阻器中每个忆阻器的阻态后,忆阻器芯片32依次将目标忆阻器中每行忆阻器设置为对应的阻态。具体的,目标忆阻器包括2F行N列,第一控制电路310中的第一开关阵列312先将目标忆阻器所在的N列位线上的开关闭合,将2F行的目标忆阻器中其中一行忆阻器连接的字线上的开关闭合,从而将该行N个忆阻器选通。然后将第二读写控制电路321接地,第一读写控制电路311根据被选通的这一行的忆阻器对应的阻态,通过N列的位线向被选通的这一行的每个忆阻器的正极施加正向电压或者负向电压,将忆阻器置为低阻态或者高阻态;再将被选通的这一行的字线上的开关断开,将下一行忆阻器连接的字线上的开关闭合,将下一行的忆阻器N个忆阻器选通,再通过第一读写控制电路311将该行的N个忆阻器设置为对用的阻态,直至根据上述方法将2F行N列的忆阻器全部设置为对应的阻态,实现将文本对应的词写入忆阻器阵列。其中,向忆阻器正极施加正向电压时,将忆阻器置于低阻态,向忆阻器正极施加负向电压时,将忆阻器置于高阻态。
示例性的,以上述w1、w2、w3、w4与w5五个词为例,CPU20将每个词转换为位数为3的hash,分别为h(w1)=[1,-1,1],h(w2)=[-1,1,1],h(w3)=[1,-1,-1],h(w4)=[-1,-1,1],h(w5)=[1,1,-1]。则忆阻器芯片32需要6行5列共30个忆阻器表示这五个词。其中,每列的6个忆阻器用于表示一个词,例如,用阵列A前三行第一列的三个忆阻器与阵列B前三行第一列的三个忆阻器表示w1。如果CPU20确定用阵列A和阵列B中第1列至第5列的位线、阵列A中第1行至第3行的字线以及阵列B中第1行至第3行的字线上连接的30个忆阻器作为目标忆阻器。即图4中第一列的6个忆阻器用于表示h(w1),A11与B11表示1,A21与B21表示-1,A31与B31表示1,则根据表1,CPU20确定将A11设为低阻态,B11设为高阻态,用于表示1,将A21设为高阻态,B21设为低阻态,用于表示-1,将A31设为低阻态,B31设为高阻态,用于表示1。CPU20根据上述方法确定上述30个忆阻器的阻态,然后发送给忆阻器芯片32。
忆阻器芯片32在接收到CPU20发送的30个忆阻器的地址与每个忆阻器的阻态后,忆阻器芯片32将第一开关阵列312中与第1列至第5列的位线连接的开关闭合,然后将第二读写控制电路321接地,将阵列A中的第一行字线连接的开关闭合;由于阵列A第一行被选通的是A11、A12、A13、A14与A15,这五个忆阻器对应的阻态依次是低阻态、高阻态、低阻态、高阻态与低阻态。则第一读写控制电路311通过位线向A11施加正向电压,向A12施加反向电压,向A13施加正向电压,向A14施加反向电压,向A15施加正向电压,从而将阵列A第一行被选通的5个忆阻器设置为CPU20确定的阻态。
将阵列A的第一行的忆阻器设置为对应的阻态之后,将阵列B第一行字线连接的开关闭合,将阵列B第一行的五个忆阻器选通,同时将阵列A第一行字线连接的开关断开,防止在通过第一读写控制电路311施加电压时,阵列A第一行的忆阻器的阻态发生变化。阵列B第一行被选通的是B11、B12、B13、B14与B15,这五个忆阻器对应的阻态依次是高阻态、低阻态、高阻态、低阻态与高阻态。则第一读写控制电路311通过位线向B11施加反向电压,向B12施加正向电压,向B13施加反向电压,向B14施加正向电压,向B15施加反向电压,从而将阵列B第一行被选通的5个忆阻器设置为CPU20确定的阻态。将阵列A的第一行与阵列B的第一行的忆阻器设置为对应的阻态之后,则将h(w1)~h(w5)中第一位的值写入了忆阻器阵列32。基于上述相同的方法,依次将6行的忆阻器设置为CPU20确定的阻态,即可实现将h(w1)~h(w5)写入忆阻器阵列32。
S504、忆阻器芯片接收CPU发送的权重,将每个词对应的权重分别转换为对应的目标电压,向目标忆阻器所在的位线施加对应的目标电压。
CPU20将每个词对应的权重发送给第一读写控制电路311,第一读写控制电路311根据每个权重的值转换为对应的电压。例如,第一读写控制电路311能够根据权重之间的比值,将各个权重转换为相同比值的电压,然后将每个词对应的电压施加到用于表示该词的忆阻器上。示例性,上述w1~w5五个词对应的权重向量是[4、3、1、2、0],第一读写控制电路311将权重值4转换为4V的电压,权重值3转换为3V的电压等。由于权重4是w1的权重,忆阻器阵列32中第一列的位线连接的忆阻器表示的是w1,则将4V的电压施加到第一列位线上,将3V的电压施加到第二列位线上,将1V的电压施加到第三列位线上,将2V的电压施加到第四列位线上,w5的权重是0,则在第五列位线上不施加电压。需要说明的是,上述目标电压小于能够使忆阻器的阻值发生改变的启动电压。
第一读写控制电路311向目标忆阻器施加对应的目标电压之后,会在阵列A与阵列B的各条字线上产生不同的电流,连接在同一个减法器的两条字线上的电流通过减法器之后,减法器的输出电压与0电压比较,如果减法器的输出电压大于0V,则比较器输出高电平,表示1;如果减法器的输出电压小于0V,则比较器输出低电平,表示0。通过获取比较器输出的电平,即可获得文本对应的数据指纹,即完成文本对应的特征矩阵与权重向量的乘法运算。
通过控制电路将忆阻器阵列中忆阻器设置为不同的阻态用于表示矩阵中不同的值,然后将向量中的每个值转换为对应的电压,进而完成矩阵向量乘法,将矩阵向量乘法计算卸载到忆阻器阵列,实现存内计算,能够减少数据在存储器与CPU之间的搬运,降低矩阵向量乘法的复杂度,提升计算速度,降低能耗。
本申请实施例还提供一种计算设备,该计算设备包括上述忆阻器芯片,该计算设备通过上述忆阻器芯片进行矩阵向量乘法的逻辑运算。
以上各实施例仅用以说明本发明的技术方案,而非对其限制。尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种忆阻器芯片,其特征在于,所述忆阻器芯片包括控制电路、忆阻器阵列、及处理电路,其中,
所述控制电路,用于:将所述忆阻器阵列中2F行N列的忆阻器设置为不同阻态,其中,所述2F行N列的忆阻器用于表示F行N列的矩阵,每列的两个忆阻器表示所述矩阵中的一个值;
将N行1列的向量中的N个数值转换为对应的N个电压,将所述向量中第1到N行数值对应的电压分别施加到第1到N列的忆阻器上,其中,所述N个电压值均小于使所述忆阻器阻值改变的电压;
所述处理电路,用于对通过所述2F行忆阻器的输出进行处理。
2.根据权利要求1所述的忆阻器芯片,所述处理电路用于侦测每两行忆阻器的输出电流,并将每两行忆阻器的输出电流作为所述F行N列的矩阵与所述N行1列的向量相乘后的结果。
3.根据权利要求1所述的忆阻器芯片,所述处理电路包括F个减法器及F个比较器,所述忆阻器阵列中的每两行忆阻器连接一个减法器,每个减法器连接一个比较器,所述F个比较器的输出形成二进制哈希码。
4.根据权利要求1至3任一项所述的忆阻器芯片,其特征在于,所述控制电路用于将所述忆阻器阵列中2F行N列的忆阻器设置为不同阻态,具体包括:
根据处理器确定的所述2F行N列的忆阻器中每个忆阻器的阻态,将所述忆阻器阵列中第s行忆阻器的负极接地;向所述第s行忆阻器中每个忆阻器的正极施加电压,使所述第s行忆阻器中每个忆阻器的阻值处于第一阻态或第二阻态,其中,所述第一阻态的阻值小于所述第二阻态的阻值,s的取值为1到2F;
在向所述第s行忆阻器的正极施加电压之后,断开所述第s行忆阻器的负极与地的连接。
5.根据权利要求4所述的忆阻器芯片,其特征在于,所述控制电路具体用于:
在所述矩阵中第i1行第j1列数值为1时,将所述忆阻器阵列中第i1行第j1列的忆阻器设置为所述第一阻态,将所述忆阻器阵列中第i1+1行第j1+1列的忆阻器设置为所述第二阻态;在所述矩阵中第i2行第j2列数值为-1时,将所述忆阻器阵列中第i2行第j2列的忆阻器设置为所述第二阻态,将所述忆阻器阵列中第i2+1行第j2+1列的忆阻器设置为所述第一阻态。
6.根据权利要求4或5所述的忆阻器芯片,其特征在于,所述控制电路具体用于:
在第i3行第j3列的忆阻器的阻态为所述第一阻态时,向所述第i3行第j3列的忆阻器施加正向电压;或者
在第i4行第j4列的忆阻器的阻态为所述第二阻态时,向所述第i4行第j4列的忆阻器施加反向电压。
7.一种逻辑运算方法,其特征在于,应用于如权利要求1至6所述的忆阻器芯片,所述方法包括:
控制电路将所述忆阻器阵列中2F行N列的忆阻器设置为不同阻态,其中,所述2F行N列的忆阻器用于表示F行N列的矩阵,每列的两个忆阻器表示所述矩阵中的一个值;
将N行1列的向量中的N个数值转换为对应的N个电压,将所述向量中第1到N行数值对应的电压分别施加到第1到N列的忆阻器上,其中,所述N个电压值均小于使所述忆阻器阻值改变的电压;
处理电路对通过所述2F行忆阻器的输出进行处理。
8.根据权利要求7所述的方法,其特征在于,所述处理电路对通过所述2F行忆阻器的输出进行处理,包括:
所述处理电路侦测每两行忆阻器的输出电流,并将每两行忆阻器的输出电流作为所述F行N列的矩阵与所述N行1列的向量相乘后的结果。
9.根据权利要求7所述的方法,所述处理电路包括F个减法器及F个比较器,所述忆阻器阵列中的每两行忆阻器连接一个减法器,每个减法器连接一个比较器,所述F个比较器的输出形成二进制哈希码。
10.根据权利要求7至9任一项所述的方法,其特征在于,所述控制电路将所述忆阻器阵列中2F行N列的忆阻器设置为不同阻态,包括:
在所述矩阵中第i1行第j1列数值为1时,将所述忆阻器阵列中第i1行第j1列的忆阻器设置为所述第一阻态,将所述忆阻器阵列中第i1+1行第j1+1列的忆阻器设置为所述第二阻态;在所述矩阵中第i2行第j2列数值为-1时,将所述忆阻器阵列中第i2行第j2列的忆阻器设置为所述第二阻态,将所述忆阻器阵列中第i2+1行第j2+1列的忆阻器设置为所述第一阻态。
CN202011640819.6A 2020-12-31 2020-12-31 一种忆阻器芯片及其操作方法 Pending CN114692076A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011640819.6A CN114692076A (zh) 2020-12-31 2020-12-31 一种忆阻器芯片及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011640819.6A CN114692076A (zh) 2020-12-31 2020-12-31 一种忆阻器芯片及其操作方法

Publications (1)

Publication Number Publication Date
CN114692076A true CN114692076A (zh) 2022-07-01

Family

ID=82135389

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011640819.6A Pending CN114692076A (zh) 2020-12-31 2020-12-31 一种忆阻器芯片及其操作方法

Country Status (1)

Country Link
CN (1) CN114692076A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117271435A (zh) * 2023-11-17 2023-12-22 中国人民解放军国防科技大学 基于忆阻器的存内逻辑电路及全阵列并行计算方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117271435A (zh) * 2023-11-17 2023-12-22 中国人民解放军国防科技大学 基于忆阻器的存内逻辑电路及全阵列并行计算方法
CN117271435B (zh) * 2023-11-17 2024-02-13 中国人民解放军国防科技大学 基于忆阻器的存内逻辑电路及全阵列并行计算方法

Similar Documents

Publication Publication Date Title
US11521050B2 (en) Control circuit for multiply accumulate circuit of neural network system
US10459724B2 (en) Memory device, and data processing method based on multi-layer RRAM crossbar array
US11501829B2 (en) Resistive random-access memory for embedded computation
Chen et al. Technology-design co-optimization of resistive cross-point array for accelerating learning algorithms on chip
US20210248452A1 (en) Multiply accumulate circuit for binary neural network system
CN110569962B (zh) 一种基于1t1r存储器阵列的卷积计算加速器及其操作方法
CN113314163A (zh) 存储器器件、计算器件以及计算方法
CN113741858B (zh) 存内乘加计算方法、装置、芯片和计算设备
WO2024103480A1 (zh) 存算一体电路、芯片及电子设备
US20220083848A1 (en) Arithmetic device, computer system, and arithmetic method
CN114692076A (zh) 一种忆阻器芯片及其操作方法
Reis et al. A fast and energy efficient computing-in-memory architecture for few-shot learning applications
US20210124974A1 (en) Method, apparatus, and device for processing image and storage medium
CN110889080B (zh) 乘积累加运算装置、乘积累加运算方法和系统
Scott et al. A flash-based current-mode IC to realize quantized neural networks
CN113872586A (zh) 逻辑门器件及其运算方法、检索任务执行芯片和方法
US11462268B1 (en) Generating hash codes for locality sensitive hashing
CN111476356B (zh) 忆阻神经网络的训练方法、装置、设备及存储介质
CN114898792A (zh) 多比特存内内积暨异或单元、异或向量及操作方法
CN115664422B (zh) 一种分布式逐次逼近型模数转换器及其运算方法
US20240281499A1 (en) Similarity calculation apparatus and method, and storage device
JP4892720B2 (ja) 最小ユークリッド距離検索連想メモリ装置
CN113160860B (zh) 计算系统、计算器件和计算方法
CN114863976B (zh) 用于忆阻器阵列的符号参数的映射方法和映射装置
JP7206531B2 (ja) メモリデバイスおよびその動作方法

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