首页> 中国专利> 点积引擎中的内容可寻址存储器编码的交叉杆阵列

点积引擎中的内容可寻址存储器编码的交叉杆阵列

摘要

提供了可重复编程的点积引擎三元内容可寻址存储器(DPE‑TCAM)。DPE‑TCAM包括TCAM交叉杆阵列,所述TCAM交叉杆阵列包括多条匹配线和多条搜索线。每条搜索线和匹配线通过存储单元耦接在一起。多个搜索线驱动器被配置为向表示搜索字的位的搜索线施加电压信号。电流感测电路耦接到多条匹配线的输出,并且被配置为感测匹配线上的电流,所感测到的电流指示搜索字与存储的字是否匹配,以及如果不匹配时两个字之间的不匹配的程度。

著录项

  • 公开/公告号CN112397123A

    专利类型发明专利

  • 公开/公告日2021-02-23

    原文格式PDF

  • 申请/专利权人 慧与发展有限责任合伙企业;

    申请/专利号CN202010805644.3

  • 申请日2020-08-12

  • 分类号G11C15/04(20060101);

  • 代理机构11602 北京市汉坤律师事务所;

  • 代理人魏小薇;吴丽丽

  • 地址 美国德克萨斯州

  • 入库时间 2023-06-19 09:57:26

说明书

背景技术

内容可寻址存储器(CAM)是一种可以执行搜索操作的存储器,在搜索操作中可以输入数据串作为搜索内容,并且产生的输出是存储器中存储匹配数据的位置的地址。这与读取操作相反,在读取操作中输入地址并且产生的输出是存储在与搜索的地址相对应的存储位置中的数据。某些CAM能够执行上述搜索操作和上述读取操作两者,而非CAM存储器能够执行读取操作,但不能执行搜索操作。

三元CAM(TCAM)是一种CAM,在该三元CAM中,位单元除两个二元数据值以外还可以存储通配符数据值。当搜索存储通配符值的位单元时,无论使用什么搜索标准来搜索位单元,结果都是匹配。某些TCAM还可以允许在通配符搜索标准的基础上进行搜索。当基于通配符搜索标准来搜索位单元时,无论位单元中存储了什么值,结果都是匹配。

附图说明

根据一个或多个各种实施例,参考以下附图来详细描述本公开。仅出于说明性目的提供附图,并且附图仅描绘了典型的或示例实施例。

图1示出了根据本文公开的技术的实施例的示例交叉杆阵列。

图2示出了根据本文公开的技术的实施例的示例DPE-TCAM。

图3示出了根据本文公开的技术的实施例的示例选择器TCAM交叉杆阵列。

图4示出了根据本文公开的技术的实施例的另一示例TCAM交叉杆阵列。

图5示出了根据本文公开的技术的实施例的另一示例TCAM交叉杆阵列。

图6A示出了根据本文公开的技术的实施例的示例方法。

图6B示出了根据本文公开的技术的实施例的另一示例方法。

图7是可以用于实施本公开所描述的实施例的各种特征的示例计算组件。

附图不是穷举的,并且不将本公开限制为所公开的精确形式。

具体实施方式

内容可寻址存储器(CAM)是通常用于高速搜索应用程序中的特殊类型的存储器。CAM包括对输入模式与存储的二元数据进行比较的硬件(电路)。CAM的存储数据不通过存储数据的位置进行访问,而是基于存储数据的内容来执行访问。将字或“标签”输入到CAM,CAM在其内容中搜索标签,并且当找到时,CAM返回找到的内容所驻留的位置的地址。CAM功能强大,高效并且快速。CAM中的输入模式和数据由逻辑‘0’和逻辑‘1’来表示(通常被称为二元CAM或bCAM)。读取、写入和比较是对CAM进行的操作的三种主要模式。存储在CAM中的数据表示随机存取存储器(RAM)中的存储地址,在随机存取存储器(RAM)中存储有所寻找的基础数据。如果要访问RAM中的数据,则对CAM进行搜索以得到与该所期望的数据相关联的地址,其中,从CAM检索存储地址。在二元CAM中,通过搜索线将输入的搜索字与存储的字的表进行比较,并且如果在存储的CAM字中找到对输入的搜索字的匹配,则CAM将匹配数据的地址返回到编码器。如果在任何存储的字中均未找到匹配,则在匹配线上指示不匹配,并且在一些情况下可以触发标志来指示缺失。

三元内容可寻址存储器(TCAM)存储并搜索被称为通配符或“无关”位的第三个值。无论用于存储的数据字的位的搜索标准是逻辑‘0’还是逻辑‘1’,存储的通配符位都被视为匹配。通过这种方式,TCAM允许另外的复杂度,因为输入模式可以表示一系列模式,而不仅仅是一个模式。例如,输入模式“01XX0”可以指示对四个单独的存储的数据字:“01000”、“01010”、“01100”和“01110”的匹配。TCAM的一种用途是在联网中,在联网中很大程度上依赖TCAM来进行快速的网络IP地址查找以及实施访问控制列表(ACL)。

传统上,使用位单元阵列来实施CAM和TCAM,其中,每行表示存储的数据字并且每列表示数据字内特定的位位置。许多现有技术CAM和TCAM通常包括常规的半导体存储器(例如,静态随机存取存储器(SRAM))和比较电路。例如,一些现有技术CAM可以包括位单元阵列,每个单元包括六个晶体管(6T)SRAM,而一些现有技术TCAM可以包括位单元阵列,其中,每个单元包括十六个晶体管(16T)SRAM。在一些现有技术方式中,每个位单元(CAM或TCAM)内的一个或多个晶体管可以用忆阻器来代替。忆阻器是可以用作大范围的电子电路(例如存储器、交换器、射频电路以及逻辑电路和系统)中的组件的设备。可以代替忆阻器使用的其他类型的电阻式随机存取存储器(RRAM)设备包括但不限于相变存储器(PCM)设备、铁电RAM(FeRAM)设备、自旋转移力矩RAM(STT-RAM)设备以及导电桥RAM(CBRAM)等。

即使在存储器中使用另外的设备来代替晶体管的情况下,这些类型的可替代的位单元也被设计为以与常规的全晶体管设备相同的方式起作用。即,仍然将基于忆阻器的TCAM编码为与常规的基于SRAM的TCAM一样进行操作,在常规的基于SRAM的TCAM中给出了完整的数字和二元匹配结果(搜索与存储)。尽管可以使用忆阻器或其他RRAM设备来代替晶体管,从而给CAM或TCAM提供一些效率优势,但不同的电路设计仍以类似的方式进行操作以得到相同类型的结果。该结果是二元答案——搜索字与数据字匹配(例如,预充电的匹配线上的电压保持高电压)或搜索字与数据字不匹配(例如,预充电的匹配线上的电压通过切换晶体管被拉低)。这种搜索操作提供了可以用于识别何时发生匹配或不匹配的高级别响应。然而,新兴的应用程序不仅需要搜索能力,还需要用于确定搜索字与数据字之间的相似性的功能性。除非存在完全匹配(即,所有位都匹配),否则常规的TCAM不能确定搜索字和数据字的匹配程度。这种操作将需要是通过TCAM单元外部的另外的电路进行的搜索后功能。

本公开的实施例提供了用于CAM、TCAM或其他基于内容的可搜索存储器的存储器结构,该存储器结构促进相似性搜索能力。如以下更详细讨论的,本公开的实施例提出了基于交叉杆阵列的TCAM结构,其中,多个忆阻器或其他RRAM设备被编程为用作TCAM内的单个单元。本质上,多个设备表示常规的TCAM结构中的一个三元单元。利用交叉杆阵列使得本公开的实施例能够促进相似性搜索,该相似性搜索不仅在纯匹配/不匹配模式下操作(即,像当前的CAM设备一样输出完整的二元结果),还可以被配置为检测搜索字与存储的字之间的不匹配位的数量。这种较低级别的粒度允许将CAM设备用于新的应用程序中,例如基因组排序。交叉杆阵列的每一行表示包括多个交叉杆单元的字存储块,每个交叉杆单元包括布置到结点设备的两个或三个忆阻器。忆阻器可以被编程为存储逻辑值并且共同工作以识别是否已经发生了不匹配。不仅沿着每一行输出匹配/不匹配的二元结果,还可以沿着每一行输出在不匹配的情况下搜索字与存储的字之间的相似性的程度。即,沿着每一行感测的电流可以在同一操作中指示二元搜索结果和相似性结果。

向量矩阵处理技术在包括数据压缩、数字数据处理、神经网络、加密和优化等的许多计算应用程序中很普遍。忆阻器交叉杆阵列已经成功地展示了非常高效地执行向量矩阵乘法的能力。例如,由每一列线中的电阻式设备的电导对来自交叉杆的每一行线的输入电压信号进行加权,并且将该输入电压信号累积作为从每一列线输出的电流。忆阻器交叉杆阵列被配置为包括来自交叉杆阵列中的每个忆阻器的贡献。在交叉杆阵列的结点或交叉点处使用忆阻器使得能够对在每个这种结点处的电阻(或电导)进行编程。这种现有技术交叉杆阵列在2019年4月16日授权的美国专利10,262,733、2015年9月25日提交的共同未决的美国专利申请15/570,980以及2016年2月19日提交的共同未决的美国专利申请2019/0066780中公开,其中的每一个在此通过引入整体并入本文。

图1示出了根据本公开的实施例的示例交叉杆阵列100。交叉杆阵列100可以是N×M大小的阵列,包括N个数量的行和M个数量的列。尽管关于交叉杆阵列100进行了讨论,但是该描述不应理解为仅限于交叉杆阵列100。为了便于讨论,仅示出了全部交叉杆阵列100的一部分。如图1所示,交叉杆阵列100包括彼此平行延伸的多条行线R1-R3以及彼此平行延伸的多条列线C1-C3。行线R1-R3和列线C1-C3可以是携带通过交叉杆阵列100的电流的电极,每条列线C1-C3不平行于行线R1-R3延伸,但是不与行线R1-R3连接。在各种实施例中,列线C1-C3可以包括布置在行线R1-R3下方的底部电极,而在其他实施例中,列线C1-C3可以布置在行线R1-R3上方(即,包括上部电极)。行线R1-R3和列线C1-C3均被配置为向交叉杆阵列100内的存储单元G供应电压和电流。行线R1-R3和列线C1-C3可以由多种不同的导电材料制成,包括但不限于Pt、Ta、Hf、Zr、Al、Co、Ni、Fe、Nb、Mo、W、Cu、Ti、TiN、TaN、Ta

多个存储单元G被布置成使得每个存储单元G与线R1-R3中的一条和列线C1-C3中的一条的相应组合耦接。作为示例,存储单元G

在各种实施例中,可以将每个存储单元G实施为忆阻器。由于忆阻器可以以易失性或非易失性方式来“记忆”忆阻器的最后的电阻状态,因此,忆阻器可以用于存储信息的位(即逻辑‘0’或逻辑‘1’)。通过这种方式,可以将每个忆阻器(或在其他实施例中的其他电阻式设备)设置成至少两个状态,而在其他实施例中,可以将每个忆阻器设置成多个电阻状态(例如,用于模拟操作)。通过施加通过忆阻器的电刺激(例如电压或电流)以跨忆阻器建立不同的电压差可以改变忆阻器的电阻。除了存储逻辑位之外,忆阻器还可以作为具有可变电导的模拟组件。在一些示例中,忆阻器可以是基于氮化物的,意味着忆阻器的至少一部分由包含氮化物的组合物形成。忆阻器也可以是基于氧化物的,意味着忆阻器的至少一部分由包含氧化物的材料形成。此外,忆阻器可以是基于氮氧化物的,意味着忆阻器的至少一部分由包含氧化物的材料形成,并且忆阻器的至少一部分由包含氮化物的材料形成。忆阻器的示例材料可以包括氧化钽、氧化铪、氧化钛、氧化钇、氧化铌、氧化锆或其他类似的氧化物,或非过渡金属氧化物,例如氧化铝、氧化钙、氧化镁、氧化镝、氧化镧、二氧化硅或其他类似的氧化物。进一步的示例包括氮化物,例如氮化铝、氮化镓、氮化钽、氮化硅以及诸如氮氧化硅的氮氧化物。另外,在本文教导的实践中可以采用其他起作用的忆阻器。

为了便于讨论,将关于包括多个基于忆阻器的存储单元G的交叉杆阵列来描述本文所公开的技术。尽管鉴于这种实施例进行了讨论,但是本领域普通技术人员将理解本文所公开的技术可应用于其他类型的电阻式RAM设备,例如PCM设备、FeRAM设备、STT-RAM设备和CBRAM等。通过施加通过忆阻器的电刺激(例如电压或电流)可以改变忆阻器的电阻。通常,可以形成能够在两种状态(一种状态,在该状态中信道形成导电路径(“接通”)以及一种状态,在该状态中信道形成不易导通路径(“断开”))之间进行切换的至少一个信道。在一些其他情况下,导通路径表示“断开”并且不易导通路径表示“接通”。

如以上所讨论的,当前的TCAM设备包括被配置为执行存储的存储位与输入的存储位之间的比较的多个TCAM单元。换言之,传统的TCAM单元由存储电路和比较电路组成。这增加了给定TCAM单元的大小,增加了实施那些单元的TCAM的整体大小。此外,形成TCAM单元所需的大量电路元件可能在物理空间以及存储每个字的位的数量(即字长度)方面限制TCAM设备的有效大小。

如本文所公开的,所述技术的实施例能够使得忆阻的交叉杆阵列或点积引擎(DPE)被编码以像传统的TCAM设备一样起作用。图2示出了根据本公开的实施例的示例DPE-TCAM 200。仅出于说明性目的提供了示例DPE-TCAM 200,并且示例DPE-TCAM 200不应理解为将所述技术仅限制为示出的实施例。在不同附图中使用共同的附图标记的情况下,应理解的是,与这些共同的附图标记的结构、功能和操作相关联的任何公开等同地适用于所有附图。如图2所示,DPE-TCAM 200包括TCAM交叉杆阵列202。TCAM交叉杆阵列200可以类似于关于图1所讨论的交叉杆阵列100,其中,每条行线Rn和列线Cm分别被指定为匹配线MLn和搜索线SLm。如图2所示,每条搜索线SL1-SL5不平行于匹配线ML1-ML4延伸,使得由每条搜索线SL1-SL5与每条匹配线ML1-ML4形成一个结点或交叉。在每个结点处布置存储单元G,该存储单元G将每条搜索线SL1-SL5与每条匹配线ML1-ML4连接,其中,在给定TCAM交叉杆阵列202内有N×M个数量的存储单元G。在各种实施例中,每个存储单元G可以包括忆阻器。在其他实施例中,可以使用其他电阻式RAM设备以包括每个存储单元G。在一些实施例中,可以在存储单元G内布置一个或多个另外的电路元件。

DPE-TCAM 200可以包括与用于存储设备的TCAM交叉杆阵列202相关联的外围电路。如所示出的,可以包括搜索线驱动器206,每个搜索线驱动器206被配置为基于比较字或搜索字在搜索线SL1-SL5上施加相关联的电压。这种类型的驱动器可以类似于与美国专利10,262,733(如上所述,通过引用并入)中所讨论的向量输入相关联的驱动器。通过这种方式,相同的硬件电路可以被配置为执行各种不同的应用程序。如图2所示,TCAM交叉杆阵列202的每一行可以用作匹配线ML1-ML4。在搜索操作期间,沿着匹配线ML1-ML4识别输入到搜索线驱动器206中的搜索字(或比较字)与存储在TCAM单元204内的一个或多个数据字DW之间的匹配。如果搜索线SL上的电压与存储单元G的状态匹配,则在搜索线SL与匹配线ML之间不形成电流路径,使匹配线ML的电流保持接近于零。然而,如果存在不匹配,则在搜索线与匹配线之间形成电流路径,增大匹配线ML上的电流。在各种实施例中,数模电路可以包括在到搜索线SL1-SL5的输入以及匹配线ML1-ML4的输出上,而在其他实施例中,模数电路可以布置在那些位置。给搜索线SL1-SL5和匹配线ML1-ML4的输入信号可以是模拟的或数字的。在各种实施例中,可以将多个电流感测电路208布置在匹配线ML1-ML4的输出上,以感测每条匹配线ML1-ML4上的电流。将该感测的电流输入到编码器210中。在各种实施例中,编码器210可以生成与匹配的数据字DW相对应的地址,类似于常规的TCAM中类似的编码器的功能。在各种实施例中,编码器210可以被配置为为被检测为二元不匹配的、但是二元不匹配是在给定的误码率内的每个存储的数据字DW返回地址。作为非限制性示例,编码器210可以被配置为为任何匹配的数据字DW和为发现仅有一位或两位不匹配(即1位误码率或2位误码率)的任何数据字DW生成地址。在一些实施例中,编码器210可以被配置为输出表示在匹配线上检测到的不匹配位的数量的数字。分辨率可以关于可以被识别(例如,五位的分辨率意味着明确地识别出1-4个不匹配,但是5个或更多个不匹配由相同的输出来表示)的不匹配位的数量而变化。在各种实施例中,可以由电流感测电路208、控制电路212、编码器210或其他外围电路(例如,读取电路(图2中未画出))来定义位误码率和分辨率项。

还可以包括控制电路212以控制在搜索线SL1-SL5的输入处和匹配线ML1-ML4的输出处的电压施加(即,对搜索线驱动器206、电流感测电路208和/或编码器210的操作进行控制)。在一些实施例中,控制电路212可以被配置为使得能够对TCAM交叉杆阵列202进行编程或编码,并且使得外围电路能够将DPE-TCAM 200配置为表示特定的TCAM配置(即,如关于图2中的TCAM单元204以及关于图3-5中讨论的TCAM单元所详细讨论的,基于表示存储的数据字的每个TCAM单元的大小)。在各种实施例中,控制电路212可以包括实施DPE-TCAM 200的设备的一个或多个处理组件(例如,网络交换器、路由、计算节点等),包括但不限于以下关于图7所讨论的处理器和处理电路。在一些实施例中,控制电路212可以包括在搜索线驱动器206、电流感测电路208和/或编码器210内,使得每个元件包括对其自身的控制。

DPE-TCAM 200通过对TCAM交叉杆阵列202进行编码使得在逻辑上建立多个TCAM阵列单元204来执行传统的TCAM的功能。为了起到TCAM的作用,每个TCAM阵列单元204包括两个存储单元G,允许对通配符位进行编程。即,利用两个存储单元G来表示单个三元值。例如,如图2所示,将存储单元G

可以对TCAM单元204的每个存储单元G独立地编程,使得相应TCAM单元204存储数据字DW的位,这类似于对现有技术TCAM单元进行编程。然而,与传统的TCAM单元不同,根据本公开的TCAM单元204既不需要存储电路也不需要比较电路。可代替地,每个存储单元G既用作存储电路又用作比较电路。在作为存储电路的情况下,可以将给定存储单元G设置到特定的电阻状态,每个电阻状态与逻辑位值相对应。在作为比较电路的情况下,电阻状态与施加的电压之间的关系导致匹配线ML上特定的预期(expected)的输出电流,从而导致比较功能性,传统的TCAM通常需要为该比较功能性添加电路来执行。施加的电压和电阻状态的组合导致类似于预期的匹配电流或预期的不匹配电流(以下将更详细地讨论)的输出。通过每个存储单元G的电流量指示由在搜索线SL上施加的电压定义的逻辑状态与由存储单元G的电阻状态定义的逻辑状态的“比较”结果。通过这种方式,不需要另外的电路来执行比较,减少了所需电路元件的数量,减小了TCAM单元的整体大小,并且降低了TCAM的功率消耗。

表1示出了TCAM单元204的每个存储单元G

表1

如表1所示,逻辑位值‘0’由两个不同组合的值来表示,取决于指代的是搜索线SL

基于表1中所指示的逻辑状态,仅当一对搜索线SL

表2

在搜索操作期间,最初对每条匹配线ML1-ML4不充电(即,没有向匹配线ML1-ML4施加电流或电压)。由控制电路(图2中未画出)和/或搜索线驱动器206来接收比较字,并且搜索线驱动器206向与该比较字(搜索字)的相对应的位的值相关联的每条搜索线SL1-SL5施加电压,如表2所指示的。TCAM交叉杆阵列202在每条匹配线ML1-ML4上输出点积结果,该点积结果包括由每个不匹配TCAM单元204施加到匹配线ML1-ML4的电流的累积量。通过这种方式,DPE-TCAM 200不仅可以检测匹配或不匹配,还可以基于在相关联的匹配线ML1-ML4上感测到的电流提供来自给定搜索的不匹配位的总数量。即,DPE-TCAM 200能够同时执行相似性搜索和字搜索,增加了TCAM操作的速度和效率以及另外的相似性功能性。

如表3所示,在每个结点处,向连接的匹配线ML1-ML4施加一定量的电流VG。接通/断开比表征接通状态下由忆阻器传导的电流与断开状态下由忆阻器泄漏的电流之间的差。在各种实施例中,比较电流VG可以是添加到匹配线ML1-ML4、以指示匹配的匹配电流V

表3

输出表示从给定存储单元G添加到匹配线ML1-ML4的电流。输出沿着匹配线ML1-ML4累加。因此,对于具有字长度为Y的TCAM,最坏的情况是在匹配情况下的最高电流与不匹配情况下的最低电流之间进行区分,如以下等式所表示:

I

其中,G

因此,在匹配线ML1-ML4上感测的电流等于(或小于)总匹配电流I

在各种实施例中,总匹配电流I

使用等式(2),可以基于期望的匹配与不匹配比β来调整匹配线感测裕度。在各种实施例中,匹配与不匹配比β应大于一。

如以上所讨论的,与常规设计的TCAM不同,根据本公开的实施例的DPE-TCAM能够在同一操作中执行二元(即,全部字匹配/不匹配)搜索功能和相似性功能(即,发生了多少不匹配)。用于检测不匹配的数量的电路可以被配置为使得DPE-TCAM 200可以被配置为执行搜索操作、相似性操作或其组合。作为非限制性示例,外围电路可以包括(例如,电流感测电路208、编码器210)被配置为将接收到的电流转换为指示不匹配的数量的电压信号的跨阻放大器(TIA),以及将电压信号转换为数字输出的模数转换器(ADC)。通过这种方式,可以在搜索操作期间从匹配线上的累积的电流(即,总不匹配电流I

相应地,DPE-TCAM 200可以比传统的TCAM搜索更长的字。由于亚阈值泄漏的影响减小以及通过在单个忆阻器或其他电阻式RAM设备外实施存储单元能够实现高密度,DPE-TCAM 200的配置不遭受基于晶体管的TCAM的字长度限制问题中的某些问题。此外,与用于利用存储相同长度的数据字的现有技术TCAM单元来实施的TCAM的面积的总量相比,利用DPE-TCAM 200来执行TCAM功能所需的总面积减小。在各种实施例中,可以三维地构造TCAM单元204,使得DPE-TCAM 200的TCAM交叉杆阵列202可以在彼此之上构建,以进一步增大密度。

在各种实施例中,每个存储单元G可以包括另外的电路元件,包括但不限于晶体管或选择器。图3示出了根据本公开的实施例的示例选择器TCAM交叉杆阵列300。如上所述,图中使用的附图标记的每个实例应假定为相同,除非另有说明,否则意味着对该附图标记的所有讨论适用于每个实例。选择器TCAM交叉杆阵列300类似于关于图2所讨论的TCAM交叉杆阵列202,并且以与TCAM交叉杆阵列202类似的方式进行操作。可以以与TCAM交叉杆阵列202类似的方式在TCAM内实施选择器TCAM交叉杆阵列300。为了便于讨论,已经省略了外围电路(例如,图2中示出的电流感测电路208),但不应理解为这种省略限制了所述技术的范围。

如图3所示,选择晶体管302串联连接在搜索线SL与存储单元G之间。例如,选择晶体管302g在源极端子处连接到搜索线SL2,并且在漏极端子处连接到存储单元G

在各种实施例中,可以以与图3的选择晶体管302类似的方式将无源选择器设备(即,非晶体管选择器)与存储单元G串联放置。作为非限制性示例,可以在搜索线SL与存储单元G的忆阻器的第一端部(即,顶部端子)之间串联地添加材料层,其中,材料的电导由搜索线SL与忆阻器端子之间的电压控制。这种材料的非限制性示例包括莫脱绝缘体过渡材料、混合离子电子导体(MIEC)、挥发性导电桥材料或其他负差分电阻材料。对无源选择器设备的使用仅由从搜索线施加到无源选择器设备自身的电压来控制,而无需像利用选择晶体管302那样需要单独的选择线。

在存储单元G中实施的忆阻器或其他电阻式RAM设备的接通/断开电流比高的情况下,更容易区分电流V

图4示出了根据本文公开的技术的实施例的另一示例TCAM交叉杆阵列400。TCAM交叉杆阵列400与关于图2所讨论的TCAM交叉杆阵列200相同,然而,每个TCAM单元404包括三个存储单元G而不是两个(即,使用三个存储单元G

如图4所示,每个TCAM单元404在逻辑上由三个存储单元G构成。通过这种方式,实施TCAM交叉杆阵列400的DPE-TCAM允许对每个TCAM单元404均衡编码。均衡编码是指将相同大小的两个电压施加到给定TCAM单元404的能力,每个电压具有相反的极性。即,对图2的TCAM单元204进行编码使得可以将搜索电压V

表4

如表4所示,使用负搜索电压-V

在各种实施例中,其他另外的电路可以包括在DPE-TCAM的TCAM交叉杆阵列中以提供另外的功能性。图5示出了根据本公开的实施例的另一示例TCAM交叉杆阵列500。TCAM交叉杆阵列500与关于图2所讨论的TCAM交叉杆阵列200相同,然而,每个TCAM单元204具有布置在每个存储单元G与相关联的匹配线ML之间的阈值忆阻器TS。在2019年7月30日提交的共同未决的美国专利申请16/526,455中公开了阈值忆阻器TS,该美国专利申请在此通过引入整体并入本文。为了便于讨论,已经省略了DPE-TCAM 200的外围电路,但是本领域普通技术人员将理解,在实施TCAM交叉杆阵列500中将存在外围电路,并且除了TCAM交叉阵列500将不能识别在搜索位与存储的值之间发生的不匹配的数量之外,对实施TCAM交叉杆阵列500的DPE-TCAM设备的操作将以相同的方式操作。

如图5所示,每个阈值忆阻器TS包括连接到存储单元G的第一端部和连接到匹配线ML的第二端部。与传统的三端子MOSFET晶体管相比,阈值忆阻器TS表现出明显小得多的电导摆幅。电导摆幅被定义为在电导切换期间电导变化的对数与施加的电压的变化之间的比。对于阈值忆阻器TS来说,由施加到阈值忆阻器TS的顶部电极(即,第一端部)的电压来触发电导切换。由从阈值忆阻器TS的第一端部到第二端部的电压来控制阈值忆阻器TS的电阻。TS忆阻器的非限制性示例包括扩散忆阻器、金属-绝缘体转变(MIT)设备、齐纳二极管、混合离子电子导电(MIEC)设备等。与传统的三端子MOSFET晶体管相比,阈值忆阻器TS还有助于减少亚阈值泄漏的影响。

在进行搜索之前,每个阈值忆阻器TS处于没有从搜索线SL到匹配线ML的电流路径的断开状态(即高电阻状态)。如以上所讨论的,与传统的TCAM不同,在搜索操作期间,不对匹配线ML进行预充电。不是通过将匹配线ML上的电压拉低来指示不匹配,而是通过将阈值忆阻器TS切换到接通状态(即,低电阻状态),在搜索线SL与匹配线ML之间建立电流路径,并且将匹配线ML上的电压拉高(并且相对应地增大匹配线ML上的电流)来指示不匹配。相应地,电流感测电路(图5中未示出)可以检测指示不匹配的增大的电流。然而,通过阈值忆阻器TS切换到接通位置而导致的匹配线ML上的电压增大使得附接到其他存储单元G的任何其他阈值忆阻器TS由于跨阈值忆阻器TS的电压降减小而更难以变为接通状态。作为非限制性示例,如果在搜索操作期间在搜索线SL3上的电压与存储单元G

在各种实施例中,DPE-TCAM中的条目的数量可以包括大量的存储的数据字(即,大量的行线Rn)。这导致搜索线SL很长。然而,由于有限的线电阻,在搜索线SL的长的长度上可能发生电压降。这可能导致误识别不匹配(即误报)并且影响DPE-TCAM的整体效率。为了克服这些影响,可以通过沿着搜索线SL的长度时常使用数字缓冲器来对沿着搜索线SL的电压信号进行缓冲。在各种实施例中,沿着搜索线SL的给定长度所需的数字缓冲器的数量可以取决于多个变量,包括但不限于沿着搜索线SL的电流水平、搜索线SL的线电阻、每个TCAM单元的大小(例如,包括TCAM单元的存储单元的数量)等。在各种实施例中,可以将所需的数字缓冲器的数量确定为以避免错误输出所需的数字缓冲器的最小数量。

图6A示出了根据本公开的实施例的示例方法600A。示例方法600A可以在DPE-TCAM(类似于以上关于图2-4所讨论的那些)中实施,以执行组合搜索和相似性操作。仅出于说明性目的提供了方法600A,并且方法600A不应理解为将所述技术的范围仅限于说明性实施例。在操作602处,由DPE-TCAM接收搜索字(或比较字)。在各种实施例中,可以从设备的一个或多个处理组件或者从连接到DPE-TCAM的一个或多个设备(例如网络路由、网桥、交换器、计算设备以及其他连接的设备)接收搜索字。在各种实施例中,可以由DPE-TCAM的一个或多个外围电路(包括但不限于如关于图2所讨论的搜索线驱动器206的搜索线驱动器)来接收搜索字。

在操作604处,确定表示接收到的搜索字的每一位的值的电压的组合。如以上所讨论的,可以使用两个或更多个电压来表示逻辑位值,例如以上关于表1-4所讨论的那些。电压的组合表示要施加到与对应于搜索字的位的TCAM单元相关联的每条搜索线的电压信号。在操作606处,将确定的电压的组合施加到每条相应的搜索线,类似于以上关于图2-5所讨论的施加电压。

在操作608处,感测DPE-TCAM的一条或多条匹配线上的电流。如关于图2所讨论的,DPE-TCAM可以包括布置在匹配线的输出上的电流感测电路。对DPE-TCAM中的每条匹配线(为每条匹配线感测电流)应用操作650。即,对每条匹配线做出是否检测到不匹配的确定。如以上所讨论的,当匹配线上的电流高于搜索和相似性操作的开始或者高于给定检测电路的某个阈值(在搜索和相似性操作开始时将阈值设置为零或低电流状态)时,检测到不匹配。如果在匹配线上未检测到不匹配,则方法600移至操作610,其中,确定与匹配的数据字相对应的存储地址。如果检测到不匹配,则在操作612处确定不匹配的数量。不匹配的数量提供了对搜索字和与匹配线相关联的存储的数据字之间的相似性的程度的指示。在各种实施例中,可以由电流感测电路、连接到TCAM交叉杆阵列的输出的编码器或两者的组合来执行操作650。

如以上所讨论的,本公开的实施例提供了用于对交叉杆阵列(例如,点积引擎)进行编程以起到TCAM作用的系统和方法,而无需遵守常规的TCAM设计约束。通过这种方式,可以避免或最小化关于TCAM设计的常见问题,例如高功率消耗(由于需要大量的高能耗晶体管)、面积大(也是由于需要大量的晶体管以提供存储和比较功能性)以及有限的字长度(由于由传统的拉低的晶体管设计的累加的、非零亚阈值电流泄漏引起的错误的不匹配检测的风险增加),在提供TCAM功能性的同时提供更大的灵活性和效率。此外,如关于图2和图4所讨论的,TCAM单元的不同配置(即,两个或三个存储器单元大小的TCAM单元)可以基于所利用的电阻式RAM设备的特定类型来提供不同的益处。图6B示出了根据本公开的实施例的另一示例方法600B。方法600B类似于方法600A,包括关于图6A所讨论的相同操作602-612。然而,方法600B通过首先在操作614处确定TCAM配置来开始。确定TCAM配置可以包括检测包括交叉杆阵列的每个存储单元的电阻式RAM设备的接通/断开比。如以上关于图2和图4所讨论的,不同的TCAM配置最适合于实施的电阻式RAM设备的不同接通/断开比特性。在各种实施例中,可以由控制电路(例如以上关于图2所讨论的控制电路212)来执行操作614。

在确定适合于给定接通/断开比的TCAM配置之后,在操作616处交叉杆阵列可以被编程或编码为与所确定的TCAM配置相对应。通过在操作616处对交叉杆阵列进行编码,建立TCAM交叉杆阵列(如关于图2和图4所讨论的TCAM交叉杆阵列)。在各种实施例中,可以以类似于对点积引擎进行编程以执行向量矩阵乘法(如在2019年4月16日授权的美国专利10,262,733、2015年9月25日提交的共同未决的美国专利申请15/570,980以及2016年2月19日提交的共同未决的美国专利申请2019/0066780中所讨论的,其中的每一个在此通过引入整体并入本文)的方式在操作616处对交叉杆阵列进行编程或编码。在操作616处建立TCAM交叉杆阵列之后,方法600B移至操作602,并且以关于图6A的方法600A所描述的方式继续进行。

图7描绘了示例计算机系统700的框图,在该示例计算系统700中可以实施本文所描述的各种实施例。计算机系统700包括用于通信信息的总线702或其他通信机制、与总线702耦接的用于处理信息的一个或多个硬件处理器704。一个或多个硬件处理器704可以例如是一个或多个通用微处理器。

计算机系统700还包括耦接到总线702、用于存储信息以及待由处理器704执行的指令的主存储器706,例如随机存取存储器(RAM)、缓存和/或其他动态存储设备。主存储器706还可以用于在执行待由处理器704执行的指令期间存储临时变量或其他中间信息。作为非限制性示例,主存储器706可以包括非暂时性机器可读指令,当由处理器704执行该非暂时性机器可读指令时,使得处理器704执行以上关于图2-5和图6A-6B所讨论的操作。这种指令当存储在处理器704可访问的存储介质中时,使计算机系统700成为被定制为执行指令中指定的操作的专用机器。

计算机系统700进一步包括耦接到总线702、用于存储静态信息以及用于处理器704的指令的只读存储器(ROM)708或其他静态存储设备。提供了诸如磁盘、光盘或USB拇指驱动器(闪存驱动器)等的存储设备710,并且存储设备710耦接到总线702以用于存储信息和指令。

计算机系统700可以经由总线702耦接到诸如液晶显示器(LCD)(或触摸屏)的显示器712,用于向计算机用户显示信息。包括字母数字键和其他键的输入设备714耦接到总线702,用于将信息和命令选择传递给处理器704。另一种类型的用户输入设备是光标控件716(例如鼠标、追踪球或光标方向键),用于将方向信息和命令选择传递给处理器704并且用于控制显示器712上的光标移动。在一些实施例中,可以经由在没有光标的触摸屏上接收触摸来实施与光标控制相同的方向信息和命令选择。

计算系统700可以包括用于用户接口模块,以实施可以作为由一个或多个计算设备执行的可执行软件代码存储在大容量存储设备中的GUI。该用户接口模块和其他模块可以通过示例的方式包括组件,例如软件组件、面向对象的软件组件、类组件和任务组件、过程、功能、属性、规程、子例程、程序代码段、驱动器、固件、微码、电路、数据、数据库、数据结构、表、阵列和变量。

通常,如本文所使用的字“组件”、“引擎”、“系统”、“数据库”、“数据存储”等可以指硬件或固件中包含的逻辑或者以诸如Java、C或C++的编程语言编写的软件指令(可能具有入口点和出口点)的集合。可以将软件组件编译并链接到可执行程序中、安装在动态链接库中,或者可以用诸如BASIC、Perl或Python的解释性编程语言来编写软件组件。将理解的是,软件组件可以从其他组件或从其自身被调取,和/或可以响应于检测到的事件或中断而被调用。可以在计算机可读介质(例如光碟、数字视频盘、闪存驱动器、磁盘或任何其他有形介质)上提供被配置为在计算设备上执行的软件组件,或者可以将被配置为在计算设备上执行的软件组件作为数字下载(并且可以最初以需要在执行之前进行安装、解压缩或解密的压缩或可安装的格式来存储)来提供。这种软件代码可以部分或全部地存储在执行的计算设备的存储设备上,用于由计算设备执行。软件指令可以嵌入在诸如EPROM的固件中。将进一步理解的是,硬件组件可以包括连接的逻辑单元(例如栅极和触发器)和/或可以包括可编程单元(例如可编程栅极阵列或处理器)。

计算机系统700可以使用定制的硬接线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实施本文所描述的技术,所述程序逻辑与计算机系统结合使得计算机系统700成为专用机器或者将计算机系统700编程为专用机器。根据一个实施例,由计算机系统700响应于一个或多个处理器704执行包含在主存储器706中的一个或多个指令的一个或多个序列来执行本文的技术。这种指令可以从诸如存储设备710的另一存储介质读入主存储器706中。执行包含在主存储器706中的指令的序列使得一个或多个处理器704执行本文所描述的过程步骤。在可替代的实施例中,硬接线电路可以用来代替软件指令或与软件指令结合使用。

如本文所使用的术语“非暂时性介质”和类似的术语是指存储数据和/或使得机器以特定方式进行操作的指令的任何介质。这种非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,例如存储设备710。易失性介质包括动态存储器,例如主存储器706。非暂时性介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁性数据存储介质、CD-ROM、任何其他光学数据存储介质、带孔图案的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM、NVRAM、任何其他存储芯片或磁带盒以及相同的网络版本。

非暂时性介质与传输介质不同,但可以与传输介质结合使用。传输介质参与非暂时性介质之间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线702的线。传输介质还可以采用声波或光波的形式,例如在无线电波和红外数据通信期间生成的声波或光波。

计算机系统700还包括耦接到总线702的通信接口718。网络接口718提供耦接到连接到一个或多个本地网络的一个或多个网络链路的双向数据通信。例如,通信接口718可以是集成服务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器或调制解调器,以提供到相对应类型的电话线的数据通信连接。作为另一示例,网络接口718可以是局域网(LAN)卡,以提供到兼容的LAN(或利用WAN进行通信的WAN组件)的数据通信连接。也可以实施无线链路。在任何这样的实施中,网络接口718发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。

网络链路通常通过一个或多个到其他数据设备的网络提供数据通信。例如,网络链路可以通过本地网络提供到主机或到由互联网服务提供商(ISP)操作的数据设备的连接。反过来,ISP通过现在普遍称为“互联网”的全球分组数据通信网络来提供数据通信服务。本地网络和互联网都使用携带数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路上并且通过通信接口718的信号(携带去到和来自计算机系统700的数字信号)是传输介质的示例形式。

计算机系统700可以通过一个或多个网络、网络链路和通信接口718来发送消息并接收包括程序代码的数据。在互联网示例中,服务器可以通过互联网、ISP、本地网络和通信接口718来传输用于应用程序的请求的代码。

接收到的代码可以在其被接收到时由处理器704执行和/或存储在存储设备710或其他非易失性存储中,以供以后执行。

前面各节中所描述的过程、方法和算法中的每一个可以体现在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码组件中,并且可以通过由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码组件来完全或部分地自动化。一个或多个计算机系统或计算机处理器还可以在“云计算”环境中或者作为“软件即服务”(SaaS)来操作以支持有关操作的性能。可以在应用程序特定的电路中部分或全部地实施该过程和算法。以上描述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。不同的组合和子组合旨在落入本公开的范围内,并且在一些实施中可以省略某些方法或过程框。本文所描述的方法和过程也不限于任何特定的顺序,并且与方法和过程有关的框或状态可以以适当的其他顺序执行,或者可以并行或以某种其他方式执行。可以将框或状态添加到公开的示例实施例或从公开的示例实施例移除。对操作或过程中的某些操作或过程的执行可以分布在计算机系统或计算机处理器之间,不仅驻留在单个机器内,而且跨多个计算机部署。

如本文所使用的,可以利用任何形式的硬件、软件或其组合来实施电路。例如,可以实施一个或多个处理器、控制器、ASIC、PLA、PAL、CPLD、FPGA、逻辑组件、软件例程或其他机制以构成电路。在实施中,本文所描述的各种电路可以实施为分立电路,或者所描述的功能和特征可以在一个或多个电路之间部分或全部地共享。即使各种特征或功能性的元件可能独立地描述或要求保护为单独的电路,这些特征和功能性也可以在一个或多个共同的电路之间共享,并且这种描述将不需要或暗示需要单独的电路来实施这种特征或功能性。在使用软件全部或部分地实施电路的情况下,可以将这种软件实施为与能够执行关于计算系统或处理系统所描述的功能性的计算系统或处理系统(例如计算机系统700)一起操作。

如本文所使用的,术语“或”可以解释为包括的意义或排除的意义。此外,不应将以单数描述的资源、操作或结构理解为排除复数。除非另有特别说明或者在使用的上下文内以其他方式理解,否则条件性语言(例如“能够”、“可”、“可能”或“可以”等)通常旨在表达某些实施例包括而其他实施例不包括某些特征、元素和/或步骤。

除非另有明确说明,否则本文件中使用的术语和短语及其变型应解释为开放式的,而不是限制性的。诸如“常规的”、“传统的”、“正常的”、“标准的”、“已知的”的形容词和类似含义的术语不应解释为将所描述的项目限制到给定时间段或将所描述的项目限制为给定时间的可用的项目,反而应理解为包括现在或将来任何时候可用或已知的常规的、传统的、正常的或标准的技术。在一些实例中,出现宽泛的字和短语(例如“一个或多个”、“至少”、“但不限于”)或其他类似的短语不应理解为意味着在可能缺少这种宽泛的短语的实例中旨在或需要较窄的情况。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号