1.本公开大体上涉及内容可寻址存储器,且更特定来说,涉及具有内容可寻址存储器缓冲器的内容可寻址存储器系统。
背景技术:2.存储器系统可实施在例如计算机、手机、手持电子装置等电子系统中。一些存储器系统,例如固态硬盘(ssd)、嵌入式多媒体控制器(emmc)装置、通用快闪存储(ufs)装置等,可包含用于存储来自主机的主机(例如,用户)数据的非易失性存储存储器。非易失性存储存储器可通过在未供电时留存所存储数据而提供永久数据,且可包含“与非”快闪存储器、“或非”快闪存储器、只读存储器(rom)、电可擦除可编程rom(eeprom)、可擦除可编程rom(eprom)及电阻可变存储器,例如相变随机存取存储器(pcram)、三维交叉点存储器(例如,3d xpoint)、电阻式随机存取存储器(rram)、铁电随机存取存储器(feram)、磁阻式随机存取存储器(mram)及可编程导电存储器,以及其它类型存储器。
3.一些存储器单元,例如各种电阻可变存储器单元,可经布置在交叉点架构中,使得存储器单元位于用于存取单元的信号线的交点处(例如,位于字线和位线)。例如,电阻可变存储器单元的状态(例如,所存储数据值)可取决于存储器单元的编程电阻。
4.在一些实例中,可将存储器单元的电阻编程为低阈值电压(vt)状态(例如,“设置”状态)或高vt状态(例如,“复位”状态)。电阻可变存储器单元的状态(例如,由其存储的数据值)可通过例如响应于将感测电压(其可被称为读取电压或分界电压)施加到(例如,横跨)单元而确定单元是否改变其导电状态(例如,经历切换事件)来确定。例如,分界电压可经选择以位于对应于复位状态的vt(例如,vt分布)与对应于设置状态的vt(例如,vt分布)之间的容限。
5.存储器通常响应于由主机供应的地址将用户数据返回到主机(例如,在读取操作期间)。另一形式的存储器为内容可寻址存储器(cam),也被称为关联模式存储器(apm)。在一些实例中,cam可接收输入数据(例如,输入数据矢量)且可执行搜索以确定输入数据是否存储在cam中。例如,cam可确定cam中的所存储数据(例如,所存储数据矢量)是否与输入数据匹配。
6.cam可在需要快速搜索或模式匹配的应用中用作基于硬件的搜索装置,例如在计算机系统、数据库、图像或语音识别、生物识别、数据压缩、高速缓冲存储器控制器、或计算机及通信网络(例如,在网络交换机、媒体存取控制器、网络路由器等中)。
附图说明
7.图1a为根据本公开的多个实施例的设备的简化框图。
8.图1b说明根据本公开的多个实施例的紧接在编程之后的非易失性存储器单元的阈值电压分布的实例。
9.图1c说明根据本公开的多个实施例的紧接在编程之后的非易失性存储器单元的
阈值电压分布的另一实例。
10.图1d说明根据本公开的多个实施例的在编程之后的阈值时间长度之后非易失性存储器单元的阈值电压分布的实例。
11.图1e说明根据本公开的多个实施例的数据结构的实例。
12.图2为根据本公开的多个实施例的内容可寻址存储器的简化框图。
13.图3说明根据本公开的多个实施例在控制器处接收的结果矢量。
14.图4说明根据本公开的多个实施例的非易失性内容可寻址存储器的部分。
15.图5说明根据本公开的多个实施例的将输入数据与存储在非易失性内容可寻址存储器中的数据进行比较的实例。
具体实施方式
16.在各种情况下,非易失性存储器可用作cam。提供非易失性存储器cam可具有优于易失性cam(例如,sram cam)的各种益处。例如,非易失性cam不需要功率来维持其数据,且与易失性存储器单元相比,非易失性存储器单元通常具有更小的占用面积,且因此可提供更大的存储密度。然而,与非易失性cam相比,易失性cam通常可提供更快的存取时间(例如,读取/写入时间)。
17.在一些情况下,紧接在存储器单元经编程(例如,写入)之后,存储在一些电阻可变存储器单元(例如基于硫属化物的存储器单元)中的数据可不会为有效的(例如,可靠的)。如此,紧接在此类存储器单元经编程之后,可无法可靠地读取此类存储器单元。例如,如本文中进一步所论述,可需要允许此类存储器单元在其被编程之后在其可被可靠地读取之前漂移达阈值时间长度(例如,大约一毫秒),且因此由存储器单元所存储的数据为有效。因此,可存取采用此类电阻可变存储器单元的cam的速度可受到阈值时间长度的限制。
18.如本文中进一步所描述,本公开的各种实施例提供cam实施方案,其可考虑写入在一些电阻可变非易失性存储器单元中的数据紧接在写入数据之后可为无效的事实。因此,实施例可提供与先前方法相比具有改进的存取时间的非易失性cam,以及其它益处。作为实例,多个实施例可采用非易失性第一cam作为主cam及第二cam作为缓冲cam,例如易失性cam(例如,sram缓冲cam)。例如,一旦写入数据,存储在此类易失性cam中的数据可为有效的,且因此一旦写入数据,就可可靠地将数据与输入数据进行比较。
19.在一些实例中,可同时将输入数据与存储在主cam中的数据及存储在缓冲cam中的数据进行比较。响应于确定存储在主cam中的数据为无效的(不可靠的),例如,响应于确定输入数据与主cam中的数据的比较的结果为无效的,可将输入数据与主cam中的数据的比较的结果替换为输入数据与缓冲cam中的数据的比较的结果。例如,主cam中的数据以及输入数据与主cam中的数据的比较的结果可在从将数据写入在第一内容可寻址存储器中的时间到在将输入数据与第一内容可寻址存储器中的数据进行比较的时间的经过时间小于阈值时间长度时可为无效的。应注意,例如,阈值时间长度可为从将数据写入在第一内容可寻址存储器中的时间到主cam中的数据变得有效且因此输入数据与写入在第一内容可寻址存储器中的数据的比较的结果变得有效的时间的经过时间。与主要非易失性cam结合的缓冲cam可消除例如与等待直到输入数据与非易失性cam中的数据的比较的结果有效相关联的延迟。
20.与结合主cam使用dram缓冲器或表作为缓冲器相比,结合主非易失性cam使用缓冲cam缓冲器可减少获得可靠比较结果的能量需求、成本及所花费时间。例如,使用dram或表可涉及扫描dram或表的全部内容以识别与正与输入数据进行比较的主cam中的数据对应的数据的耗时过程。
21.图1a为根据本公开的多个实施例的呈计算系统100形式的设备的简化框图。计算系统100包含呈cam系统102形式的设备,所述cam系统可为例如快速外围组件互连(pcie)cam系统。
22.cam系统102可包含控制器104、通过总线108耦合到控制器104的cam 106
‑
1到106
‑
8,及耦合到控制器104的cam 110
‑
1及110
‑
2。尽管展示八个cam 106及两个cam 110,但可存在任何数目个cam 106及cam 110。在一些实例中,cam 106可被称为主(例如,初级)cam,且cam 110可被称为缓冲cam(例如,因为cam 110可充当cam 106的缓冲器)。在一些实例中,可存在可包含cam 106
‑
1到106
‑
8的单个主cam 106,且可存在可包含cam 110
‑
1及110
‑
2的单个缓冲cam 110。本文中,“cam106”及/或“主cam”将用于指代cam 106
‑
1到106
‑
8中的一或多个,且“cam 110”及/或“缓冲cam”将用于指代cam 110
‑
1及110
‑
2中的一或多个。
23.控制器104可致使cam 106将例如(例如,来自主机103的)输入数据矢量的输入数据与存储在cam 106中的例如所存储数据矢量的所存储数据进行比较,且可致使cam110将输入数据与存储在cam 110中的数据进行比较,使得同时将输入数据与存储在cam 106及110中的数据进行比较。控制器104可响应于确定存储在cam 106中的数据为无效的,且因此确定输入数据与存储在cam 106中的数据的比较的结果为无效的且例如确定存储在cam 110中的数据对应于存储在cam 106中的数据而将输入数据与存储在cam 106中的数据的比较的结果替换为输入数据与存储在cam 110中的数据的比较的结果。
24.控制器104可通过确定从将数据写入在cam 106中的时间到将输入数据与cam106中的数据进行比较的时间的经过时间小于阈值时间长度来确定存储在cam 106中的数据为无效的。应注意,例如,阈值时间长度可为从将数据写入在cam 106中的时间到将数据写入在cam 106中的数据变得有效的时间的经过时间。
25.在一些实例中,cam 106可为非易失性cam且cam 110可为易失性cam,例如sram cam。例如,存储在cam 110中的数据可为存储在sram存储器单元中,且存储在cam 106中的数据可存储在非易失性存储器单元中。例如,存储在cam 106中的数据可从数据在cam 106中被编程时起漂移。在一些实例中,cam 106可为交叉点装置,例如3d xpoint装置,其可包含可漂移的存储器单元,例如电阻可变存储器单元。
26.在各种实例中,控制器104可包含匹配验证电路系统,所述匹配验证电路系统可用于验证输入数据矢量与存储在缓冲cam(例如,cam 110)或主cam(例如,cam 106)中的数据矢量之间的匹配。例如,响应于接收到输入数据矢量与所存储数据矢量匹配的指示,匹配验证电路系统可致使缓冲cam或主cam读取所存储数据矢量并将从缓冲cam或主cam读取的数据矢量返回到控制器104。匹配验证电路系统然后可将所返回的数据矢量与输入数据矢量进行比较以确定先前指示的匹配是否为有效的。
27.在一些实例中,主cam及缓冲cam可包含匹配验证电路系统,所述匹配验证电路系统可用于验证输入数据矢量与所存储矢量之间的匹配。例如,响应于输入数据矢量与所存储数据矢量匹配,匹配验证电路系统可读取所存储数据矢量并将所读取数据矢量与输入数
据矢量进行比较以确定先前指示匹配是否为有效的。如果匹配为无效的,那么匹配验证电路系统可将比较的结果从匹配改变为失配并将结果发送到控制器104。在主cam中的匹配验证电路系统确定输入数据与所存储数据矢量之间的匹配为无效的各种实例中,控制器104可增加阈值时间长度。
28.图1b说明根据本公开的多个实施例的紧接在编程(写入)之后的非易失性存储器单元的vt分布的实例。图1c说明根据本公开的多个实施例的紧接在编程之后的非易失性存储器单元的vt分布的另一实例。图1d说明根据本公开的多个实施例的在编程之后的阈值时间长度之后非易失性存储器单元的vt分布的实例。
29.在图1b到1d的实例中,vt分布105可被称为设置状态,且vt分布107可被称为复位状态。在图1b到1d的实例中,vt分布105对应于经编程以存储逻辑1的数据值的存储器单元,且vt分布107对应于经编程以存储逻辑0的数据值的存储器单元。然而,实施例不限于此指派编码。请注意,图1b到1d的实例描绘从设置状态到复位状态的编程存储器单元。
30.在图1b到1d的实例中,边缘电压e1可被定义为对应于分布105的上部边缘的vt,且边缘电压e2可被定义为对应于分布107的下部边缘的vt。容限(例如,窗口)w为e2与e1之间的差。例如,w=e2
–
e1。在图1b到1d的实例中,vdm表示分界电压,所述分界电压可用于确定存储器单元的所存储状态(例如,由其存储的数据值)(例如,“1”或“0”)。在一些实例中,vdm可对应于待与由存储器单元存储的数据值进行比较的输入数据值。分界电压vdm可经选择以位于容限w中,如在图1d中所展示。
31.在一些情况下,当各种非易失性存储器单元,例如一些电阻可变存储器单元,从设置状态编程到例如复位状态时,存储器单元中的数据可紧接在编程之后可不会为有效的,这是因为容限w可不足以让vdm紧接在编程之后可靠地区分设置状态及复位状态,如在图1b及1c中所展示。
32.在一些情况下,紧接在编程之后,容限w可对于vdm过小无法位于容限w中,如在图1b中所展示。例如,vdm位于容限w外部且在vt分布107内部。在一些情况下,对应于设置状态及复位状态的vt分布实际上可重叠,如在图1c中所展示。例如,图1c中的容限w为负,这是因为边缘电压e1大于边缘电压e2。注意,如在图1b的实例中,vdm位于图1c中的vt分布107内部。
33.紧接在编程之后将vdm应用到存储器单元,如在图1b及1c中所展示,可产生无效结果。在图1b及1c的实例中,例如,响应于应用vdm,可确定分布107中具有比vdm小的vt的存储器单元存储数据值1,且可确定vt分布107中具有比vdm大的vt的存储器单元存储数据值0。如此,存储在图1b及1c中的存储器单元中的数据可为无效的。
34.然而,例如,一些电阻可变存储器单元的vt可在其经编程以复位状态之后会随时间漂移(例如,到更高的绝对值)。随着vt漂移,复位vt分布可移动远离设置vt分布,如由在图1b及1c中的箭头所指示,从而增加容限w。当容限w已增加到分界电压位于容限中而非位于vt分布105或vt分布107中的点时,如在图1d中所展示,例如,用vdm读取存储器单元的结果可为(例如,被确定为)有效的。如此,存储在图1d中的存储器单元中的数据可为有效的。例如,具有对应于vdm的数据值的输入数据与存储在存储器单元中的数据的比较,以及因此这些比较的结果,可被确定为针对图1d中所描绘的情况有效,但对图1b及1c中所描绘的情况无效。
35.在一些实例中,从对存储器单元进行编程的时间(例如,何时)到存储在存储器单元中的数据变得有效的经过时间可为本文中所提及的阈值时间长度。例如,图1d可对应于从存储器单元被编程时起的经过时间,所述经过时间可大于或等于阈值时间长度。例如,存储器单元(例如,数据矢量)被编程的时间可为将编程电压施加到存储器单元或从存储器单元移除的时间。在一些实例中,阈值时间长度可为大约一毫秒。
36.存储在非易失性存储器单元中的数据可对于小于阈值时间长度的从写入数据的时间起的经过时间可为无效的,且对于大于或等于阈值长度的从写入数据的时间起的经过时间可为有效的。如此,在一些实例中,输入数据与存储在非易失性存储器单元中的数据的比较,以及因此那些比较的结果,可被确定为对于小于阈值时间长度的从写入数据的时间到将输入数据与数据进行比较的时间的经过时间无效,且对于大于或等于阈值时间长度的从写入数据的时间到将输入数据与数据的时间的经过时间有效。
37.在图1b到1d的实例中,对应于设置及复位状态的vt及vdm为正,其中对应于复位状态的vt在正指向上比对应于设置状态的vt大且漂移起作用在正指向上增加vt。然而,对应于设置及复位状态的vt及vdm可为负,其中对应于复位状态的vt在负指向上比对应于设置状态的vt大且漂移起作用在负指向上增加vt。
38.至少出于刚刚所描述的原因,输入数据与存储在cam 106中的存储器单元中的数据之间的比较可至少对于小于阈值时间长度的时间为无效的。然而,存储在cam 110中的数据一被写入就可为有效的。这是当cam 106中的数据为无效时的阈值时间长度期间,可使用将输入数据与存储在cam 110中的数据进行比较的结果来代替将输入数据与存储在cam 106中的数据进行比较的结果的原因。
39.在一些实例中,控制器104可通过从cam 106读取数据,将读取数据与打算在cam106中编程的数据进行比较,例如,通过将读取数据与cam 110中的对应数据进行比较,及确定读取数据是否与打算在非易失性存储器单元中编程的数据匹配来确定存储在cam 10中的数据是否为有效的。例如,控制器104可响应于确定读取数据与打算在cam106中编程的数据匹配来确定读取数据为有效的,且可响应于确定读取数据与打算在cam 106中编程的数据失配来确定读取数据为无效的。注意,控制器104可通过确定存储在cam 106中的数据为有效的来确定输入数据与存储在cam 106中的数据的比较为有效的且通过确定存储在cam 106中的数据为无效的来确定输入数据与存储在cam106中的数据的比较为无效的。
40.在一些实例中,控制器104可通过将输入数据矢量与cam 106中的数据矢量的比较的结果与输入数据矢量与对应于cam 106中的数据矢量的cam 110中的数据矢量的比较的结果进行比较来确定所述结果是否为有效的,且因此确定cam 106中的数据矢量是否为有效的。如果结果匹配,那么输入数据矢量与cam 106中的数据矢量的比较的结果以及因此cam 106中的数据矢量为有效的。如果结果失配,那么输入数据矢量与cam 106中的数据矢量的比较的结果为无效的,且因此cam 106中的数据矢量为无效的。
41.在一些实例中,控制器104可致使主cam 106将数据矢量同时写入在主cam 106及缓冲cam 110中。控制器104可创建数据结构,例如查找(例如,映射)表112(例如,在控制器104中)每当数据矢量同时写入在主cam及缓冲cam中(例如,响应于将数据矢量同时写入在主cam及缓冲cam中)。在一些实例中,控制器104可管理查找表112。
42.图1e说明根据本公开的多个实施例的呈查找表112形式的数据结构的实例。查找
表112可包含(例如,有序序列)条目114
‑
1到114
‑
n,所述条目可用于在主cam中的数据矢量为无效的期间将主cam中的数据矢量的位置(例如,位置地址)映射至缓冲cam中的对应数据矢量的位置(例如,位置地址)。
43.例如,可将存储数据矢量的主cam中的存储器单元组的位置映射到存储数据矢量的缓冲cam中的存储器单元组的位置。条目114可包含主cam中的数据矢量的位置地址(例如,地址)、主cam中的数据矢量的地址待映射到的缓冲cam中的对应数据矢量的地址,以及对应于条目114中所规定的主cam中的数据矢量的时间戳。应注意,主cam及缓冲cam中的数据矢量的地址可被称为物理地址。
44.时间戳可为数据矢量被编程到条目114中所规定的主cam地址的时间。控制器104可管理查找表112,例如,通过将主cam中的数据矢量的地址、缓冲cam中的数据矢量的地址以及数据矢量被编程在主cam中的时间写入在条目114中。
45.在一些实例中,缓冲cam中的存储空间可足以存储同时写入到缓冲cam及主cam的所有数据矢量。然而,如果待写入在主cam中的数据矢量的数量超过缓冲cam中的存储空间,那么可延迟将数据矢量同时写入在主cam及缓冲cam中直到缓冲cam中的空间变得可用。例如,响应于确定缓冲cam已满,控制器104可延迟同时写入,直到从缓冲cam中移除先前存储在缓冲cam中的数据矢量。响应于确定先前存储的数据矢量不再对应于无效的主cam中的数据矢量,控制器104可致使缓冲cam从缓冲cam中移除先前所存储数据矢量。
46.控制器104可使用查找表112来确定同时与输入矢量进行比较的主cam及缓冲cam中的数据矢量是否彼此对应。响应于主cam及缓冲cam同时将输入数据矢量与主cam及缓冲cam中的数据矢量进行比较,控制器104可确定在查找表112中是否存在与主cam中的数据矢量的地址对应的条目。如果不存在条目,那么控制器104可确定主cam中的数据矢量与缓冲cam中的数据矢量不对应及/或主cam中的数据矢量为有效的;例如,主cam中的数据矢量与输入数据矢量的比较的结果为有效的。因此,控制器104可使用输入数据矢量与主cam中的数据矢量的比较的结果。
47.如果查找表112中存在与主cam中的数据矢量的地址对应的条目114,那么控制器104可确定主cam中的数据矢量对应于地址在所述条目114中的缓冲cam中的数据矢量,且可根据所述条目114中的时间戳确定主cam中的数据矢量是否为有效的。
48.例如,控制器104可确定从时间戳中所规定的时间到比较的时间的经过时间。如果经过时间小于阈值时间长度,那么主cam中的数据矢量为无效的(例如,用于比较),且将主cam中的数据矢量地址映射到缓冲cam中的数据矢量的地址。例如,响应于确定主cam中的数据矢量为无效的,可使用输入数据矢量与缓冲cam中的数据矢量的比较的结果来代替输入数据矢量与主cam中的数据矢量的比较的结果。
49.如果经过时间大于或等于阈值时间长度,那么主cam中的数据矢量为有效的。在一些实例中,响应于确定具有条目中所规定的地址的数据矢量有效,控制器104可将条目从查找表112移除,且因此使条目中的地址映射无效。例如,可响应于确定主cam中的数据矢量为有效的,从缓冲cam移除与被确定为有效的主cam中的数据矢量对应的缓冲cam中的数据矢量。应注意,例如,阈值时间长度可预先确定并存储在控制器104中。
50.在一些实例中,时间戳可为主cam中的数据矢量变得(例如,被认为变得)有效的时间。例如,控制器104可将阈值时间长度添加到在条目114中所规定的主cam地址中编程数据
矢量的时间以获得时间戳。控制器104可将存取条目的时间与时间戳进行比较。如果时间早于(例如,小于)时间戳,那么对应于条目的主cam中的数据矢量为无效的。如果时间晚于(例如,大于)或等于时间戳,那么数据矢量为有效的。
51.虽然图1e中的查找表112包含时间戳,但实施例不限于此,且例如可省略时间戳。对于省略时间戳的实施例,查找表112中的条目的数目可对应于主cam可在阈值时间长度中写入的数据矢量的数目。例如,每当缓冲cam及主cam同时写入数据矢量时,可将相应映射写入在相应条目中,使得所有n个条目在阈值时间长度中含有映射,且因此在阈值时间长度中填充查找表112。这意味着每一映射对应于在阈值时间长度中写入在主cam中的数据矢量,以使得每一映射对应于主cam中的无效数据矢量。
52.在一些实例中,可以循环方式(例如,使用先进先出(fifo)方法)写入查找表112。例如,当查找表112已满时,可按照写入现有映射的次序用新映射覆盖现有映射,以使得最旧映射首先被覆盖(例如,无效(移除))等等。例如,因为查找表112中的n个映射对应于在阈值时间长度中写入在主cam中的n个数据矢量,所以最早映射可存储在查找表112中达至少阈值时间长度,且因此可当主cam中的对应数据矢量有效时被覆盖。
53.因此,每一映射可当其主cam中的对应数据矢量有效时被覆盖。因此,控制器104可响应于在查找表112中找到没有时间戳的对应映射来确定主cam中的数据矢量无效。例如,控制器104可使用映射来将输入数据矢量与主cam中的数据矢量的比较的结果替换为输入数据矢量与缓冲cam中的数据矢量的比较的结果。控制器104还可使用输入数据矢量与查找表112不具有映射的主cam中的各种数据矢量的比较的结果,这是因为那些数据矢量可为有效的。例如,响应于用新映射覆盖映射,控制器104可使用输入数据矢量与对应于被覆盖映射的存储在主cam中的数据矢量的比较。
54.缓冲cam可经定大小以存储与可在阈值时间长度中可写入在主cam中的数据矢量对应的一定量的数据矢量,以使得在阈值时间长度中用数据矢量填充缓冲cam。这意味着缓冲cam中的每一数据矢量对应于主cam中的无效数据矢量。
55.在一些实例中,可以类似于结合查找表112所描述的循环方式写入缓冲cam。例如,当缓冲cam已满时,可以写入现有数据矢量的次序用新数据矢量覆盖现有数据矢量,以使得首先覆盖(例如,移除)缓冲cam中最旧的数据矢量等等。例如,因为在阈值时间长度中同时将数据实例写入在主cam及缓冲cam中,所以最早数据矢量可存储在缓冲cam中达至少阈值时间长度,且因此可在主cam中的对应数据矢量为有效时被覆盖。
56.控制器104可将输入数据矢量与主cam中的数据矢量的比较的结果替换为输入数据矢量与缓冲cam中的对应数据矢量的比较的结果,只要对应矢量在缓冲cam中。控制器104还可使用输入数据矢量与主cam中不在缓冲cam中的各种数据矢量的比较的结果,这是因为这些数据矢量可为有效的。例如,响应于用新数据矢量覆盖缓冲cam中的对应数据矢量,控制器104可使用输入数据矢量与存储在主cam中的数据矢量的比较。
57.在一些实例中,控制器104可包含逻辑到物理(l2p)映射表,其可将从主机103接收的数据矢量的逻辑地址映射到主cam中的数据矢量的物理地址。
58.控制器104可为现场可编程门阵列(fpga)及/或专用集成电路(asic),以及其它类型的控制器。主机103可为例如主机系统,例如个人膝上型计算机、台式计算机、数码相机、移动装置(例如,蜂窝电话)、网络服务器、支持物联网(iot)的装置,或存储卡读取器,以及
各种其它类型主机。例如,主机103可包含一或多个能够通过可包含总线的接口116存取cam系统102(例如,经由控制器104)的处理器。接口116可为标准化接口,例如串行先进技术总线附属(sata)、pcie或通用串行总线(usb)及各种其它接口。
59.在一些实例中,cam系统102可为计算系统100的存储器系统的部分。例如,存储器系统可为存储系统,例如ssd、ufs装置、emmc装置等等。在cam系统102可为存储器系统的部分的各种实例中,控制器104可为耦合到存储器系统且经配置以控制存储器系统的各种存储器装置的存储器系统控制器(例如,ssd控制器、专用集成电路asic、处理器等)的一部分(例如,集成在其中的控制逻辑)。
60.图2为根据本公开的多个实施例的cam 220的简化框图。例如,cam 220可经配置为主cam或缓冲cam。cam 220包含可耦合到输入数据寄存器224的cam阵列222。cam阵列222可存储数据(例如,呈所存储数据矢量的形式),且输入数据寄存器224可从控制器204(例如,可为控制器104)接收输入数据矢量以与所存储数据矢量进行比较。在cam 220为缓冲cam的实例中,cam阵列222可为具有sram单元的sram存储器阵列。在cam 220为主cam的实例中,cam阵列222可为具有非易失性存储器单元的非易失性存储阵列,所述非易失性存储器单元至少在小于阈值时间长度的时间内为无效的,例如电阻可变存储器单元(例如,以交叉点的方式布置)。
61.cam 220可具有控制电路系统225(例如,控制状态机),其可指导cam 220的内部操作且可管理cam阵列222。控制电路系统225可通过控制接口226从控制器204接收控制信号。例如,控制器204可致使控制电路系统225将输入数据矢量与存储在cam阵列222中的数据矢量进行比较,且可致使控制电路系统225将数据矢量写入在cam阵列222中。在各种实例中,控制器225可包含先前结合图1a所描述的匹配验证电路系统。
62.检测器229可通过线230
‑
1到230
‑
m(例如,匹配线)耦合到cam阵列222。例如,相应线230
‑
1到230
‑
m中的每一个可对应于存储在cam阵列222中的相应数据矢量。在cam 220为缓冲cam的实例中,线230的数目可等于查找表112中的条目114的数目。
63.检测器229可检测所存储数据矢量是否与输入数据矢量匹配,且可产生指示相应所存储数据矢量是否与输入数据矢量匹配的每一相应所存储数据矢量的相应结果(例如,数据位)。例如,如在图2中所展示,检测器229可产生具有逻辑一(1)值以指示相应所存储数据矢量与输入数据矢量匹配的数据位,以及具有逻辑零(0)值以指示相应所存储数据矢量与输入数据矢量不匹配(例如,失配)的数据位。然而,本公开不限于此,且逻辑1与逻辑0的角色可互换。在一些实例中,可组合矢量比较的结果以形成具有对应于每一所存储矢量的分量(例如,1或0)的结果(例如,输出)矢量235。
64.检测器229可经配置以将每一相应存储矢量的地址相关联(例如,链接)到结果矢量235(例如,相应分量)中的相应结果。在一些实例中,检测器229可具有耦合到线230
‑
1到230
‑
m中的每一个的感测放大器(例如,图2中未展示)。例如,每一感测放大器可经配置以产生逻辑1或0,此取决于感测放大器检测到匹配还是失配。结果矢量235及分量的相关地址可被发送到输入/输出(i/o)缓冲器232以通过接口234输出到控制器204。应注意,在图1a的上下文中,结果矢量及分量的相关联地址可从cam 106及cam 110(例如,同时)发送到控制器104。
65.图3说明根据本公开的多个实施例在控制器304处接收的结果矢量。例如,控制器
304(例如,可为控制器104或204)可同时接收来自主cam的结果矢量335
‑
main及来自缓冲cam的结果矢量335
‑
buffer。结果矢量335
‑
main具有分别与地址340
‑
1到340
‑
8相关联的分量(例如,分量数据值01101001),且结果矢量335
‑
buffer具有分别与地址342
‑
1到342
‑
8相关联的分量(例如,分量数据值00100101)。然而,结果矢量335不限于八个分量且可具有任何数量的分量。此外,结果矢量335
‑
main及335
‑
buffer可具有不同数量的分量。控制器304具有查找表312(例如,其可为查找表112)。
66.响应于同时地主cam将输入数据矢量与主cam中的所存储数据矢量进行比较且缓冲cam将输入数据矢量与缓冲cam中的所存储数据矢量进行比较,可同时产生结果矢量335
‑
main及335
‑
buffer。例如,主cam中的所存储数据矢量可分别存储在主cam中分别具有地址340
‑
1到340
‑
8的位置,且缓冲cam中的所存储数据矢量可分别存储在缓冲cam中分别具有地址342
‑
1到342
‑
8的位置处。
67.在接收到结果矢量335
‑
main及335
‑
buffer之后,控制器304可将地址340
‑
1到340
‑
8与查找表112之条目114中之主cam地址进行比较。如果地址340
‑
1到340
‑
8中的任何一个与查找表112中的主cam地址不匹配,那么控制器304可确定具有那些地址的主cam中的数据矢量为有效的且可接受结果向量335
‑
main中与那些地址相关联的分量中的结果为有效的。例如,地址340
‑
2、340
‑
4、340
‑
5及340
‑
7可与查找表112中的主cam地址中的任一个不匹配,且结果矢量335
‑
main中与那些地址相关联的分量可被视为有效的。
68.此外,控制器304可根据所述条目中的时间戳确定主cam中具有与查找表112中的条目中的主cam地址匹配的地址的数据矢量是否为有效的。例如,地址340
‑
1、340
‑
3、340
‑
6及340
‑
8可分别与条目114
‑
2、114
‑
4、114
‑
5及114
‑
7中的主cam地址匹配。控制器304然后可根据条目114
‑
2、114
‑
4、114
‑
5及114
‑
7中的时间戳确定主cam中具有地址340
‑
1、340
‑
3、340
‑
6及340
‑
8的数据矢量是否为有效的,如先前所描述。例如,控制器304可确定具有地址340
‑
1及340
‑
8的矢量为有效的且可清除条目114
‑
2及114
‑
7,因此使那些条目中的映射无效。控制器304还可响应于确定主cam中具有地址340
‑
1及340
‑
8的数据矢量为有效的而将缓冲cam中具有对应于地址340
‑
1及340
‑
8的地址342
‑
1及342
‑
8的数据矢量从缓冲cam移除。
69.然而,控制器304可确定具有地址340
‑
3及340
‑
6的矢量为无效的,且因此确定与地址340
‑
3及340
‑
6相关联的结果矢量335
‑
main的分量中的结果(例如,分别为逻辑1及逻辑0)为无效的。在实例中,条目114
‑
4及114
‑
5可分别将地址340
‑
3及340
‑
6映射到缓冲cam中的数据矢量的地址342
‑
1及342
‑
8,如在图3中所展示。映射产生具有数据分量01001101的结果数据矢量。
70.应注意,地址340
‑
1到340
‑
8及342
‑
1到342
‑
8可为物理地址。控制器304可使用l2p数据结构(例如l2p映射表350)将相应物理地址340
‑
1到340
‑
8映射到相应逻辑地址,其中地址340
‑
3及340
‑
6分别映射到地址342
‑
1及342
‑
8。控制器304然后可将结果矢量的相应数据分量01001101与相应逻辑地址相关联,并将结果矢量与相关联逻辑地址一起输出到主机103。以此方式,控制器304可向主机103指示哪些数据矢量与输入数据匹配以及哪些数据矢量与数据矢量失配。例如,主机103可根据逻辑地址在逻辑地址空间中确定哪些数据矢量与输入数据矢量匹配以及哪些矢量与输入数据矢量失配。
71.在一些实例中,控制器304可仅向主机103指示与匹配输入数据矢量的矢量对应的逻辑地址。例如,控制器304可输出映射到具有逻辑1数据值的结果矢量的分量的逻辑地址。
例如,控制器304可输出映射到物理地址340
‑
2、340
‑
5、340
‑
6及340
‑
8的相应逻辑地址,应注意地址340
‑
3映射到与逻辑0相关联的地址342
‑
1且将地址340
‑
6映射到与逻辑1相关联的地址342
‑
8。
72.图4说明根据本公开的多个实施例的非易失性cam的部分。例如,图4说明主cam的非易失性cam阵列的一部分,例如数据块452。在一些实例中,每一主cam的cam阵列可具有多个存储器数据块452。每一存储器数据块452可具有一定数量的数据平面,例如数据矢量平面455
‑
1到455
‑
j。
73.每一数据矢量平面455可具有字线457
‑
1到457
‑
8。字线457
‑
1到457
‑
8中的每一个可与位线459
‑
1到459
‑
8交叉。如此,数据矢量平面455可为交叉点数据矢量平面。在字线与位线的每一交叉处可存在存储器单元461,例如电阻可变存储器单元。在一些实例中,共同耦合到位线459的一组存储器单元(例如,一列存储器单元)可存储数据矢量。例如,分别共同耦合到位线459
‑
1到459
‑
8的存储器单元列可分别存储数据矢量463
‑
1到463
‑
8。尽管展示八个位线及八个字线,但可存在任何数目个位线及字线。
74.每一矢量平面455中的位线459
‑
1到459
‑
8可分别耦合到感测放大器465
‑
1到465
‑
8。感测放大器465
‑
1到465
‑
8可分别产生输入数据矢量466与存储矢量463
‑
1到463
‑
8的比较的结果。例如,结果可为结果矢量435的分量,所述结果矢量可为结果矢量335
‑
main。在一些实例中,可一次一平面(例如,在逐平面基础上)将存储器数据块中所存储数据矢量与输入数据矢量466进行比较。
75.在一些实例中,可通过规定cam系统中的cam(例如cam系统102中的cam 106)的位置、cam中的存储器数据块的位置、存储器数据块中的矢量平面的位置,以及矢量平面中的所存储数据矢量的位置来规定所存储矢量的位置。例如,指定所存储数据矢量的位置的地址可指定cam系统中的cam的位置、cam中的存储器数据块的位置、存储器数据块中的平面的位置以及矢量平面中的数据矢量的位置。
76.图5说明根据本公开的多个实施例的将输入数据与存储在非易失性cam中的数据进行比较的实例。例如,在图5中,同时将输入数据矢量566与主cam的矢量平面555中的数据矢量563
‑
1到563
‑
8进行比较。输入数据矢量566可具有例如分别对应于位bit1到bit8的分量数据(例如,位)值00110011。
77.矢量平面555可具有字线557
‑
1到557
‑
8。字线557
‑
1到557
‑
8中的每一个可与位线559
‑
1到559
‑
8交叉。在字线与位线的每一交叉处可存在存储器单元561,例如电阻可变存储器单元。虽然在图5的实例中展示八个位线及八个字线,但实施例不限于特定数目的字线及/或位线。
78.数据矢量563
‑
1到563
‑
8可分别存储在分别共同耦合到位线559
‑
1到559
‑
8的存储器单元列中。例如,每一相应列中的存储器单元561
‑
1到561
‑
8可分别耦合到字线557
‑
1到557
‑
8。在此实例中,数据矢量563
‑
1(01111111)被存储在耦合到位线559
‑
1的单元中,数据矢量563
‑
2(11110111)被存储在耦合到位线559
‑
2的单元中,数据矢量563
‑
3(11111111)被存储在耦合到位线559
‑
3的单元中,数据矢量563
‑
4(11111101)被存储在耦合到位线559
‑
4的单元中,数据矢量563
‑
5(00110011)被存储在耦合到位线559
‑
5的单元中,数据矢量563
‑
6(00000000)被存储在耦合到位线559
‑
6的单元中,数据矢量563
‑
7(11111110)被存储在耦合到位线559
‑
7的单元中,且数据矢量563
‑
8(00000000)被存储在耦合到位线559
‑
8的单元中。
注意,相应数据矢量563
‑
1到563
‑
8中的每一个的相应数据值(例如,分量)分别存储在存储器单元561
‑
1到561
‑
8中
79.位线559
‑
1到559
‑
8可分别耦合到感测放大器565
‑
1到565
‑
8。感测放大器565
‑
1到565
‑
8可分别产生输入数据矢量566与所存储矢量563
‑
1到563
‑
8的比较的结果。例如,结果可为结果矢量535的分量,所述结果矢量可为结果矢量335
‑
main。
80.可分别将输入数据矢量566的bit1到bit8与分别存储在耦合到数据线559
‑
1到559
‑
8中的每一个的存储器单元561
‑
1到561
‑
8中的数据进行比较。通过横跨存储器单元施加电压差,例如分界电压vdm1,可将逻辑0的位值与存储在存储器单元561中的数据进行比较。通过横跨存储器单元施加分界电压vdm2,可将逻辑1的位值与存储在存储器单元561中的数据进行比较。
81.例如,vdm1可对应于逻辑0的输入位值,且vdm2可对应于逻辑1的输入位值。在一些实例中,分界电压可为施加到耦合到存储器单元的位线的电压减去施加到耦合到存储器单元的字线的电压。注意,在本实例中,vdm1及vdm2具有相反极性,其中vdm1具有负极性,且vdm2具有正极性。然而,本公开不限于此。
82.在一些实例中,存储器单元561可响应于横跨存储器单元561施加vdm1而经历切换事件,例如阈值事件(例如,骤回事件),或响应于横跨存储器单元561施加vdm2而经历切换事件。例如,存储器单元561可从例如低导电状态(例如,高电阻状态)的一个导电状态切换到例如高导电状态(例如,低电阻状态)的另一导电状态。
83.在一些实例中,响应于分界电压而经历切换事件的存储器单元可被视为存储与对应于分界电压的输入数据值失配的数据值。例如,存储逻辑1的存储器单元可响应于横跨所述存储器单元施加vdm1(例如,对应于输入逻辑0)而经历切换事件,且存储逻辑0的存储器单元可响应于横跨所述存储器单元施加vdm2(例如,对应于输入逻辑1)而经历切换事件。
84.在此类实例中,响应于分界电压而未经历切换事件的存储器单元可被视为存储与对应于分界电压的输入数据值匹配的数据值。例如,存储逻辑0的存储器单元可未响应于横跨所述存储器单元施加vdm1而经历切换事件,且存储逻辑1的存储器单元可未响应于横跨所述存储器单元施加vdm2而经历切换事件。然而,应注意,在其它实例中,切换事件可指示匹配且没有切换事件可指示失配。
85.应注意,如果存储在数据矢量563的存储器单元中的至少一个中的数据与输入数据矢量566的对应位失配,那么数据矢量563可与输入数据矢量566失配。感测放大器565可通过感测可在感测放大器的输出电压中反映的电流改变来感测一或多个存储器单元在对应数据矢量563中所经历的切换事件。因此,感测放大器可通过感测切换事件来感测耦合到感测放大器的数据矢量与输入数据矢量566之间的失配。例如,感测放大器可响应于感测到切换事件而产生(例如,输出)逻辑0,以指示耦合到感测放大器的数据矢量与输入数据矢量566之间的失配。感测放大器可响应于未感测到切换事件而产生逻辑1,以指示耦合到感测放大器的数据矢量与输入数据矢量566之间的匹配。
86.在一些实例中,可在对应于比较的第一阶段的第一时间段期间将输入数据矢量566的部分与数据矢量563
‑
1到563
‑
8的对应部分进行比较,且在对应于比较的第二阶段的第二时间段期间,可将输入数据矢量566的剩余部分与数据矢量563
‑
1到563
‑
8的对应部分进行比较。在第一阶段期间,通过横跨那些存储器单元施加vdm1同时横跨剩余存储器单元
561
‑
3、561
‑
4、561
‑
7及561
‑
8施加例如零伏,可分别将具有逻辑0的输入数据矢量566的位bit1、bit2、bit5及bit6与数据矢量563
‑
1到563
‑
8中的每一个的存储在存储器单元561
‑
1、561
‑
2、561
‑
5及561
‑
6中的数据值进行比较。在第二阶段期间,通过横跨那些存储器单元施加vdm2同时横跨剩余存储器单元561
‑
1、561
‑
2、561
‑
5及561
‑
6施加例如零伏,可分别将具有逻辑1的输入数据矢量566的位bit3、bit4、bit7及bit8与数据矢量563
‑
1到563
‑
8中的每一个的存储在存储器单元561
‑
3、561
‑
4、561
‑
7及561
‑
8中的数据值进行比较。然而,本公开不限于此,且可同时(例如,在相同阶段期间)施加vdm1及vbm2。
87.主cam的cam阵列可包含二维(2d)及/或三维(3d)阵列结构,例如交叉点阵列结构。存储器单元(例如,存储器单元461及561)可包含例如各种类型的电阻可变存储元件及/或开关元件。例如,单元可为相变随机存取存储器(pcram)单元或电阻随机存取存储器(rram)单元。
88.如本文中所使用,存储元件是指存储器单元的可编程部分。例如,主cam可为3d交叉点装置,其单元可包含“堆叠”结构,其中存储元件与开关元件串联耦合且在本文中可被称为3d相变材料及开关(pcms)装置。3d pcms单元可包含例如与二端基于硫属化物的开关元件串联耦合的二端基于硫属化物的存储元件,例如双向阈值开关(ots)。在一些实例中,存储器单元可为自选择存储器(ssm)单元,其中单一材料可用作开关元件及存储元件两者。ssm单元可包含硫属化物合金;然而,实施例不限于此。
89.作为非限制性实例,所公开非易失性cam的存储器单元可包含相变材料(例如,相变硫属化物合金),例如铟(in)
‑
锑(sb)
‑
碲(te)(ist)材料(例如,in2sb2te5、in1sb2te4、in1sb4te7等等)或锗(ge)
‑
锑(sb)
‑
碲(te)(gst)材料(例如,ge2sb2te5、ge1sb2te4、ge1sb4te7等等)。如本文中所用,带有连字符的化学组合物符号指示包含于特定混合物或化合物中的元素,且意欲表示涉及所指示元素的所有化学计量。例如,其它存储器单元材料可以包含gete、in
‑
se、sb2te3、gasb、insb、as
‑
te、al
‑
te、ge
‑
sb
‑
te、te
‑
ge
‑
as、in
‑
sb
‑
te、te
‑
sn
‑
se、ge
‑
se
‑
ga、bi
‑
se
‑
sb、ga
‑
se
‑
te、sn
‑
sb
‑
te、in
‑
sb
‑
ge、te
‑
ge
‑
sb
‑
s、te
‑
ge
‑
sn
‑
o、te
‑
ge
‑
sn
‑
au、pd
‑
te
‑
ge
‑
sn、in
‑
se
‑
ti
‑
co、ge
‑
sb
‑
te
‑
pd、ge
‑
sb
‑
te
‑
co、sb
‑
te
‑
bi
‑
se、ag
‑
in
‑
sb
‑
te、ge
‑
sb
‑
se
‑
te、ge
‑
sn
‑
sb
‑
te、ge
‑
te
‑
sn
‑
ni、ge
‑
te
‑
sn
‑
pd及ge
‑
te
‑
sn
‑
pt,及各种其它材料。
90.在本公开的前述实施方式中,参考形成本公开的一部分的所附图式,且图式中以图解说明的方式展示可如何实践本公开的多个实施例。充分详细地描述这些实施例以使得所属领域普通技术人员能够实践本公开的实施例,且应理解,可利用其它实施例且可在不背离本公开的范围的情况下做出过程、电及/或结构改变。
91.如本文中所使用,“多个”或“一定数量”的某物可是指此类事物中的一或多个。例如,多个或一定数量个存储器单元可是指一或多个存储器单元。“多个”某物意指两个或多于两个。如本文中所使用,术语“耦合”可包含不与中间元件电耦合、直接耦合及/或直接连接(例如,通过直接物理接触)或与中间元件间接耦合及/或连接,或无线耦合。术语“耦合”可进一步包含彼此协作或相互作用的两个或多于两个元件(例如,如呈因果关系)。如本文中所使用的,同时执行的多个动作是指在特定时间段内至少部分重叠的动作。
92.尽管本文中已说明并描述特定实施例,但所属领域普通技术人员将了解,经计算以实现相同结果的布置可替代所展示的特定实施例。本公开打算涵盖本公开的多个实施例的更改或变化。应理解,已以说明性方式而非限定性方式做出以上说明。在审阅以上说明
后,所属领域的技术人员将即刻明了以上实施例的组合及本文中未具体描述的其它实施例。本公开的多个实施例的范围包含其中使用以上结构及方法的其它应用。因此,应参考所附权利要求书连同授权此权利要求书的等效内容的全部范围来确定本公开的多个实施例的范围。
93.在前述的具体实施方式中,出于简化本公开的目的,一些特征在单个实施例中被组合在一起。本公开的此方法不应解释为反映本公开的所揭示实施例必须使用比明确陈述于每一权利要求中更多的特征的意图。而是,如所附权利要求书所反映,发明性标的物在于少于单个所揭示实施例的所有特征。因此,特此将所附权利要求书并入到具体实施方式中,其中每一权利要求本身作为单独实施例。