1.本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及使用存储器子系统中的内容可寻址存储器(cam)的关键值数据存储系统。
背景技术:2.存储器子系统可以包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以在存储器装置处存储数据且从存储器装置检索数据。
技术实现要素:3.在一个方面中,本公开针对于一种系统,其包括:存储器装置,其包括存储多个所存储的搜索关键字的内容可寻址存储器(cam)块和值数据块;和处理装置,其以操作方式与所述存储器装置耦合以执行包括以下操作的操作:接收输入搜索关键字;识别所述多个所存储的搜索关键字中匹配所述输入搜索关键字的一个所存储的搜索关键字,所述多个所存储的搜索关键字中的所述一个所存储的搜索关键字在所述cam块中具有相关联的匹配方位;使用所述相关联的匹配方位确定所述值数据块中的对应值方位;和从所述值数据块中的所述值方位检索表示与所述输入搜索关键字相关联的值的数据。
4.在另一个方面中,本公开针对于一种方法,其包括:接收输入搜索关键字;识别存储器装置的cam块中的多个所存储的搜索关键字中匹配所述输入搜索关键字的一个所存储的搜索关键字,所述多个所存储的搜索关键字中的所述一个所存储的搜索关键字在所述cam块中具有相关联的匹配方位;使用所述相关联的匹配方位确定所述存储器装置的值数据块中的对应值方位;和从所述值数据块中的所述值方位检索表示与所述输入搜索关键字相关联的值的数据。
5.在另一个方面中,本公开针对于一种存储指令的非暂时性机器可读存储媒体,所述指令当由处理装置执行时致使所述处理装置执行包括以下操作的操作:接收输入搜索关键字;识别存储器装置的cam块中的多个所存储的搜索关键字中匹配所述输入搜索关键字的一个所存储的搜索关键字,所述多个所存储的搜索关键字中的所述一个所存储的搜索关键字在所述cam块中具有相关联的匹配方位;使用所述相关联的匹配方位确定所述存储器装置的值数据块中的对应值方位;和从所述值数据块中的所述值方位检索表示与所述输入搜索关键字相关联的值的数据。
附图说明
6.根据下文提供的具体实施方式和本公开的各种实施例的附图将更加充分地理解本公开。
7.图1说明根据本公开的一些实施例的包含存储器子系统的实例计算系统。
8.图2是根据本公开的一些实施例的与存储器子系统的存储器子系统控制器通信的
存储器装置的框图。
9.图3是说明根据本公开的一些实施例的使用存储器子系统中的内容可寻址存储器(cam)的关键值数据存储系统的框图。
10.图4是根据本公开的一些实施例的实施于存储器装置内的关键值数据存储系统的内容可寻址存储器(cam)块的框图。
11.图5是根据本公开的一些实施例的处理使用存储器子系统中的内容可寻址存储器(cam)的关键值数据存储系统中的搜索操作的实例方法的流程图。
12.图6是其中可操作本公开的实施例的实例计算机系统的框图。
具体实施方式
13.本公开的方面针对于使用存储器子系统中的内容可寻址存储器(cam)的关键值数据存储系统。存储器子系统可以是存储装置、存储器模块,或存储装置和存储器模块的混合。结合图1描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个组件(例如存储数据的存储器装置)的存储器子系统。主机系统可提供数据以存储于存储器子系统处,且可请求从存储器子系统检索数据。
14.内容可寻址存储器(cam)是某些极高速搜索应用程序(例如识别符(id)和模式匹配)中常用的存储器装置类型。通常,通过将输入搜索数据与所存储的数据条目的表进行比较来搜索cam,并返回匹配表中的数据的存储器地址。cam常实施于动态随机存取存储器(dram)或同步随机存取存储器(sram)中。然而,dram和sram这两者均具有有限的存储器容量,这会限制常规cam实施方案中可存储和搜索的数据量。
15.存储器子系统可以包含高密度非易失性存储器装置,其中当没有电力被供应到存储器装置时需要数据的保持。非易失性存储器装置的一个实例为“与非”(nand)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置是一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,nand装置),每一平面由物理块集组成。每一块由页集组成。每个页由一组存储器单元(“单元”)组成。单元是存储信息的电子电路。取决于单元类型,单元可存储一或多个二进制信息位,且具有与所存储的位数相关的各种逻辑状态。逻辑状态可以由二进制值(例如,“0”和“1”或这类值的组合)表示。
16.存储器装置可以由布置在二维或三维网格中的位组成。存储器单元蚀刻到列(下文也称为位线)和行(下文也称为字线)的阵列中的硅晶片上。字线可以指存储器装置的存储器单元的一或多个行,所述一或多个行与一或多个位线一起使用以生成存储器单元中的每一个的地址。位线和字线的相交点构成存储器单元的地址。下文中,块是指用于存储数据的存储器装置的单元,并且可以包含存储器单元的群组、字线群组、字线或个别存储器单元。可以将一或多个块分组在一起以形成存储器装置的平面,以便允许在每一平面上进行并发操作。存储器装置可以包含执行两个或更多个存储器平面的并发存储器页存取的电路系统。例如,存储器装置可以包含可以由存储器装置的平面共享的多个存取线驱动器电路和电力电路,以促进两个或更多个存储器平面的包含不同页类型的页的并发存取。为易于描述,这些电路通常可以称为独立的平面驱动器电路。取决于所采用的存储架构,可以跨越存储器平面(即,在条带中)存储数据。因此,读取数据的片段(例如,对应于一或多个数据地
址)的一个请求可以产生对存储器装置的存储器平面中的两者或更多者执行的读取操作。
17.串nand型快闪存储器装置中的单位。nand型快闪存储器装置通常具有32个或更多个存储器单元,其中每一存储器单元用以表示位值(例如,0或1)。因此,具有32个存储器单元的串可表示32个数据位且具有64个存储器单元的串可表示64个数据位。在nand型快闪存储器块中,个别串经连接以允许存储来自所选单元的数据以及从所选单元检索数据。通常,块中的串的一端连接到共同源极线,且另一端连接到位线。每个串还含有与存储器单元串联的两个控制机构。串选择晶体管和接地选择晶体管连接到串选择线和接地选择线。nand型快闪组件中的存储器单元在其控制栅极处水平地连接到字线以形成页。页为共享同一字线的经连接存储器单元集并且是编程的最小单位。nand型快闪存储器装置可具有64k或128k单元的页大小。虽然常规nand型快闪存储器与dram和sram相比具有较大容量,但其对于串行数据搜索和存取来说通常太缓慢了。
18.关键值数据存储系统被设计成用于存储、检索和管理一系列记录。每个记录可包含不同字段,保存一或多个值。所述记录存储于数据库中并且使用唯一地识别所述记录的关键字进行检索,并且可用以查找数据库内的记录。相比于关系数据库,在关键值数据存储系统中,数据(即,值)存储为单个不透明集合,并且可在每个记录中以不同方式格式化。此不依赖于所定义纲要的灵活性允许关键值数据存储系统利用远少于关系数据库的存储器。然而,在多种关键值系统中,数据维持于受到上文提到的性能限制的随机存取存储器(例如,dram或sram)中。
19.本公开的方面通过提供使用内容可寻址存储器(cam)的关键值数据存储系统来解决以上和其它缺陷。在一个实施例中,存储器子系统可利用实施于nand型快闪存储器装置中的cam架构提供快速搜索和高容量搜索这两种能力。与此架构一致,数据条目可存储于nand型快闪存储器阵列的串上。与nand实施方案相反,数据条目的每一位映射到被配置成互补的一对存储器单元。也就是说,所述对的第一存储器单元存储位值且所述对的第二存储器单元存储位值的逆。表示输入搜索字的搜索模式在对应于cam的阵列中的串的每个字线上竖直地输入。在一个实施例中,输入搜索字表示用于关键值数据存储系统中的搜索关键字。单个读取操作将输入搜索字(即,搜索关键字)与阵列的所选部分(通常是一或多个平面中的子块)中的所有串进行比较,并且识别匹配数据的存储地址(即,存储的关键字)。
20.在一个实施例中,cam中所存储的匹配关键字的存储地址可用作发到查找表或其它将对应值的方位存储于单独值存储区中的数据结构的输入。值存储区可实施于nand型快闪存储器或不使用cam架构布置的其它非易失性存储器中。举例来说,存储器子系统控制器或其它控制逻辑可识别查找表中与cam中所存储的匹配关键字的存储地址对应的条目,并且从那个条目确定值存储区中与关键字对应的数据所在的相关联方位。那个数据可返回给最初提供输入搜索字的请求者(例如,耦合到存储器子系统的主机系统)。
21.此方法的优点包含但不限于存储器子系统的性能提高。基于nand的cam架构实现在其中执行高速和高密度模式匹配的新应用,例如与人工智能、机器视觉和大遗传数据库有关的应用。这类cam架构还改进现有数据库搜索系统和搜索算法,例如云网络连接和服务器中的索引存储器。此外,基于nand的cam的搜索在nand组件内进行,且因此,对系统总线的利用显著减少(即,减少一或多个数量级)。此总线需求降低可节约用电,提高系统效率和/或减少系统成本。另外,利用较少dram或其它易失性存储器实施关键值数据存储系统的功
能性,这可降低成本并且减少存储器子系统中的电力用量。
22.图1说明根据本公开的一些实施例的包含存储器子系统110的实例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类的组合。
23.存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储器(ufs)驱动器、安全数字(sd)和硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小外形dimm(so-dimm),以及各种类型的非易失性双列直插式存储器模块(nvdimm)。
24.计算系统100可以是计算装置,例如台式计算机、手提式计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(iot)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网市售装置中的计算机),或这类包含存储器和处理装置(例如,处理器)的计算装置。
25.计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。图1说明耦合到一个存储器子系统110的主机系统120的一个实例。如本文中所使用,“耦合到
……”
或“与
……
耦合”通常是指组件之间的连接,其可以是间接通信连接或直接通信连接(例如不具有介入组件),无论有线或无线,包含例如电连接、光学连接、磁连接等连接。
26.主机系统120可包含处理器芯片组和由所述处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,nvdimm控制器),和存储协议控制器(例如,pcie控制器、sata控制器)。主机系统120使用存储器子系统110,例如,将数据写入到存储器子系统110以及从存储器子系统110读取数据。
27.主机系统120可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(sata)接口、外围组件互连高速(pcie)接口、通用串行总线(usb)接口、光纤通道、串行连接的scsi(sas)、双数据速率(ddr)存储器总线、小型计算机系统接口(scsi)、双列直插式存储器模块(dimm)接口(例如,支持双数据速率(ddr)的dimm套接接口)等。物理主机接口可用于在主机系统120与存储器子系统110之间发射数据。当存储器子系统110通过物理主机接口(例如,pcie bus)与主机系统120耦合时,主机系统120可另外利用nvm高速(nvme)接口、开放nand快闪接口(onfi)接口,或某一其它接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120之间传送控制、地址、数据和其它信号的接口。图1说明作为实例的存储器子系统110。一般来说,主机系统120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
28.存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可以是但不限于随机存取存储器(ram),例如动态随机存取存储器(dram)和同步动态随机存取存储器(sdram)。
29.非易失性存储器装置(例如,存储器装置130)的一些实例包含“与非”(nand)型快闪存储器和就地写入存储器,例如三维交叉点(“3d交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取
阵列而基于体电阻的改变来进行位存储。另外,与许多基于闪存的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。nand型快闪存储器包含例如二维nand(2d nand)和三维nand(3d nand)。
30.存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(slc)可每单元存储一个位。其它类型的存储器单元(例如多层级单元(mlc)、三层级单元(tlc)、四层级单元(qlc)和五到层级单元(plc))可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如slc、mlc、tlc、qlc或此类存储器单元阵列的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的slc部分,以及mlc部分、tlc部分、qlc部分或plc部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。对于一些类型的存储器(例如,nand),页可进行分组以形成块。
31.虽然描述了非易失性存储器组件,例如3d交叉点非易失性存储器单元阵列和nand型快闪存储器(例如,2d nand、3d nand),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器、电可擦除可编程只读存储器(eeprom)。
32.存储器子系统控制器115(为简单起见,控制器115)可与存储器装置130通信以进行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可以包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路以执行本文所描述的操作。存储器子系统控制器115可以是微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等),或其它合适的处理器。
33.存储器子系统控制器115可为处理装置,其包含配置成执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。
34.在一些实施例中,本地存储器119可包含存储存储器指针、提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(rom)。虽然在图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一个实施例中,存储器子系统110不包含存储器子系统控制器115,而是替代地可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
35.通常,存储器子系统控制器115可从主机系统120接收命令或操作,且可将所述命令或操作转换为指令或适当命令来实现对存储器装置130的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(如,逻辑块地址
(lba)、名称空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子系统控制器115可另外包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可以将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。
36.存储器子系统110还可包含未说明的额外电路或组件。在一些实施例中,存储器子系统110可以包含高速缓存或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130。
37.在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以在存储器装置130的一或多个存储器单元上执行操作。外部控制器(例如,存储器系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110是受管理存储器装置,其包含具有裸片上的控制逻辑(例如,本地媒体控制器135)和用于相同存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例是受管理nand(mnand)装置。
38.在一个实施例中,存储器装置130可被配置成包含内容可寻址存储器(cam)nand关键值数据库137。如下文更详细地描述,cam-nand关键值数据库137可包含被组织为串的一或多个存储器单元阵列的cam块。每个串存储数据条目并且包括在匹配线与页缓冲器之间串联连接的存储器单元。也就是说,cam块包含多个匹配线且每个匹配线连接到阵列中的多个串中的一个串。cam块的匹配线对应于上面实施cam块的nand块的位线。在给定串内,存储器单元可被组织为互补存储器单元对。串所存储的数据条目的每一位值映射到所述串中的互补存储器单元对中的一个。
39.可通过提供搜索模式作为发到cam块的搜索线的输入来搜索cam块。cam块的搜索线对应于上面实施cam块的nand块的字线。在一个实施例中,将cam块的匹配线预充电以促进搜索。也就是说,在搜索输入之前,将电压信号施加到cam块的匹配线。在搜索操作期间,如果输入搜索字匹配cam块所存储的任何数据条目,那么一或多个匹配线(例如,与存储匹配数据条目的串对应的匹配线)变得导电并且响应于搜索线处的搜索模式输入而发出放电信号。如果搜索字不匹配任何存储的条目,那么所有匹配线不导电。每个匹配线进一步连接到页缓冲器(例如,包括一或多个锁存电路),所述页缓冲器接收放电信号并且存储指示匹配数据沿着经连接匹配线存储的数据。
40.在一个实施例中,存储器子系统110另外包含有助于cam-nand关键值数据库137的搜索的搜索组件113。与一些实施例一致,如所示,搜索组件113包含在存储器子系统控制器115中。举例来说,存储器子系统控制器115可包含处理器117(例如,处理装置),其被配置成执行存储于本地存储器119中的指令以用于执行本文所描述的搜索组件113的操作。在一些实施例中,存储器装置130包含搜索组件113的至少一部分。在一些实施例中,搜索组件113是主机系统120、应用程序或操作系统的部分。
41.搜索组件113基于接收到的输入搜索字产生搜索模式并且控制逻辑(例如,本地媒体控制器135)竖直地沿着cam-nand关键值数据库137中的cam块的搜索线输入搜索模式。如果cam块存储了匹配输入搜索字的数据条目,那么搜索模式致使存储数据条目(还被称作“被匹配线”)的匹配线变得导电并且由于匹配线经预充电,因此被匹配线将指示搜索字存
储于其上的信号提供给经连接页缓冲器。可基于由于串导电引起被匹配线提供的信号来识别任何匹配数据条目的方位(例如,存储地址)。更具体地,连接到任何被匹配线的页缓冲器响应于检测到指示被匹配数据沿着被匹配线存储的放电信号而存储数据。搜索组件113或控制逻辑(例如,读出电路)的组件可从页缓冲器读取数据。基于从页缓冲器读取的数据,搜索组件113输出搜索字是否被cam块存储的指示以及匹配线的方位的指示符。
42.搜索组件113可应用匹配线的方位作为发到查找表118或其它数据结构的输入。在一个实施例中,查找表118实施于存储器子系统控制器115的本地存储器119(例如,dram)中。在其它实施例中,查找表118可维持在存储器子系统110中的其它处,包含维持在存储器装置130上(例如,nand存储器中)。查找表118可包含cam块中的匹配线的方位与cam-nand关键值数据库137的值数据块中的相关联值(即,数据)的方位之间的映射或其它对应关系。在一个实施例中,值数据块使用nand型快闪存储器(例如,tlc存储器或qlc存储器)实施于存储器装置130上,所述nand型快闪存储器不使用cam架构布置并且与cam块分开。搜索组件113可识别查找表118中与cam块中的匹配线的方位对应的条目并且从那个条目确定值数据块中与关键字对应的数据所在的相关联方位。那个数据可返回给最初提供输入搜索字的请求者(例如,主机系统120)。下文描述关于搜索组件113和cam-nand关键值数据库137的操作和结构的另外细节。
43.图2是根据实施例的呈存储器装置130形式的第一设备与呈存储器子系统的存储器子系统控制器115(例如,图1的存储器子系统110)形式的第二设备通信的简化框图。电子系统的一些实例包含个人计算机、个人数字助理(pda)、数码相机、数字媒体播放器、数字记录器、游戏、电气设备、交通工具、无线装置、移动电话等等。存储器子系统控制器115(例如,在存储器装置130外部的控制器)可以是存储器控制器或其它外部主机装置。
44.存储器装置130包含以行和列逻辑地布置的存储器单元阵列250。逻辑行中的存储器单元通常连接到同一存取线(例如,字线),而逻辑列中的存储器单元通常选择性地连接到同一数据线(例如,位线)。单个存取线可与超过一个逻辑行的存储器单元相关联,且单个数据线可与超过一个逻辑列相关联。存储器单元阵列250的至少一部分的存储器单元(图2中未示出)能够被编程到至少两个目标数据状态中的一个。在一个实施例中,存储器单元阵列250包含cam块252和值数据块254。如本文所描述,cam块252包含竖直存储于串中的数个存储关键字,其可与接收到的搜索关键字进行比较。当确定匹配时,cam块252中的匹配存储关键字的方位指向值数据块254中可被检索并且返回给请求者的对应值的方位。在一个实施例中,存储器装置130组织成多个平面。在一个实施例中,举例来说,存储器装置130包含四个平面。然而,在其它实施例中,可存在更多或更少平面。所述平面中的每一个可被配置成包含一或多个cam块252和值数据块254。
45.提供行解码电路系统208和列解码电路系统210以对地址信号进行解码。接收地址信号并对地址信号进行解码,以存取存储器单元阵列250。存储器装置130还包含输入/输出(i/o)控制电路系统212,其用以管理命令、地址和数据到存储器装置130的输入以及数据和状态信息从存储器装置130的输出。地址寄存器214与i/o控制电路系统212和行解码电路系统208和列解码电路系统210通信以在解码之前锁存地址信号。命令寄存器224与i/o控制电路系统212和本地媒体控制器135通信以锁存传入命令。
46.控制器(例如,存储器装置130内部的本地媒体控制器135)响应于命令控制对存储
器单元阵列250的存取,并生成外部存储器子系统控制器115的状态信息,即,本地媒体控制器135配置成对存储器单元阵列250执行存取操作(例如,读取操作、编程操作和/或擦除操作)。本地媒体控制器135与行解码电路系统208和列解码电路系统210通信,以响应于地址控制行解码电路系统208和列解码电路系统210。
47.本地媒体控制器135还与高速缓冲寄存器242通信。高速缓存寄存器242锁存如由本地媒体控制器135引导的传入或传出数据以暂时存储数据,同时存储器单元阵列250正忙于分别写入或读取其它数据。在编程操作(例如,写入操作)期间,可将数据从高速缓冲寄存器242传递到数据寄存器244以传送到存储器单元阵列250;接着可将新数据从i/o控制电路212锁存于高速缓冲寄存器242中。在读取操作期间,数据可从高速缓冲寄存器242传送到i/o控制电路212以用于输出到存储器子系统控制器115;接着可将新数据从数据寄存器244传送到高速缓冲寄存器242。高速缓冲寄存器242和/或数据寄存器244可形成存储器装置130的页缓冲器(例如,可形成其部分)。页缓冲器可另外包含感测装置(图2中未示出),其用以例如通过感测连接到存储器单元阵列250的存储器单元的数据线的状态来感测所述存储器单元的数据状态。状态寄存器222可与i/o控制电路系统212和本地存储器控制器135通信以锁存状态信息以用于输出到存储器子系统控制器115。
48.存储器装置130经由控制链路232从本地媒体控制器135接收存储器子系统控制器115处的控制信号。举例来说,控制信号可包含芯片启用信号ce#、命令锁存启用信号cle、地址锁存启用信号ale、写入启用信号we#、读取启用信号re#和写入保护信号wp#。取决于存储器装置130的性质,可另外经由控制链路232接收额外或替代性控制信号(未示出)。在一个实施例中,存储器装置130经由多路复用的输入/输出(i/o)总线234从存储器子系统控制器115接收命令信号(其表示命令)、地址信号(其表示地址)和数据信号(其表示数据),且经由i/o总线234将数据输出到存储器子系统控制器115。
49.举例来说,可在i/o控制电路系统212处经由i/o总线234的输入/输出(i/o)引脚[7:0]接收命令并且接着可将所述命令写入到命令寄存器224中。可在i/o控制电路系统212处经由i/o总线234的输入/输出(i/o)引脚[7:0]接收地址并且接着可将所述地址写入到地址寄存器214中。可在i/o控制电路系统212处经由用于8位装置的输入/输出(i/o)引脚[7:0]或用于16位装置的输入/输出(i/o)引脚[15:0]接收数据并且接着可将所述数据写入到高速缓冲寄存器242中。随后可将数据写入到数据寄存器244中以用于编程存储器单元阵列250。
[0050]
在实施例中,可省略高速缓冲寄存器242,且可将数据直接写入到数据寄存器244中。还可通过用于8位装置的输入/输出(i/o)引脚[7:0]或用于16位装置的输入/输出(i/o)引脚[15:0]输出数据。虽然可参考i/o引脚,但是可包含实现通过外部装置(例如,存储器子系统控制器115)电连接到存储器装置130的任何导电节点,例如普遍使用的导电衬垫或导电凸块。
[0051]
所属领域的技术人员应了解,可提供额外的电路系统和信号并且已简化图2的存储器装置130。应认识到,参考图2所描述的各种块组件的功能性可不必与集成电路装置的不同组件或组件部分分离。举例来说,集成电路装置的单个组件或组件部分可适于执行图2的多于一个块组件的功能性。替代地,可组合集成电路装置的一或多个组件或组件部分以执行图2的单个块组件的功能性。此外,尽管根据各种信号的接收和输出的流行惯例描述了
特定i/o引脚,但应注意,可在各种实施例中使用i/o引脚(或其它i/o节点结构)的其它组合或其它数目个i/o引脚(或其它i/o节点结构)。
[0052]
图3是说明根据实施例的使用存储器子系统中的内容可寻址存储器(cam)的关键值数据存储系统的框图。在一个实施例中,搜索组件113接收输入搜索关键字310(例如,搜索字)并且将输入搜索关键字310应用于cam块252以将输入搜索关键字310与数个存储的搜索关键字352进行比较。在一个实施例中,搜索组件113或存储器子系统110中的其它逻辑基于输入搜索关键字310产生搜索模式。输入搜索关键字310可包含第一位序列(例如,“1011”)。所产生的搜索模式可包含表示输入搜索关键字310的第一电压信号集和表示包括第一位序列的逆(例如,“0100”)的第二位序列的第二电压信号集。在一个实施例中,搜索组件113或其它逻辑包含用以产生输入搜索关键字的逆的反相器和用以产生第一信号和第二信号的电平选择器。在产生第一和第二电压信号时,电平选择器可使用高电压表示二进制值“1”并且使用低电压表示二进制值“0”,其中高电压高于阈值电压(vt)且低电压低于vt。
[0053]
为了搜索cam块252,搜索组件113竖直地沿着cam块252的搜索线输入搜索关键字310(即,代表性搜索模式)。搜索关键字310的输入致使表示所存储的匹配位值的任何互补存储器单元对变得导电。如果串正在存储匹配数据(即,匹配存储的搜索关键字352中的一个),那么整个串变得导电。cam块252中的匹配线预充电(例如,连接到高电压),且因为匹配线经预充电,所以搜索线上的搜索关键字310的输入致使正在存储匹配数据(例如,存储的搜索关键字352中与搜索关键字310相同的一个存储的搜索关键字)的块中的任何匹配线输出放电信号,原因是对应串导电。放电信号提供匹配数据(例如,输入搜索关键字310)存储于其上的指示。放电信号提供匹配数据存储于连接到匹配线的串上的指示。
[0054]
每个串连接于匹配线与页缓冲器(例如,包括一或多个锁存电路)之间,且被匹配线的页缓冲器存储指示以下内容的数据:响应于由于沿着串放电引起匹配线提供的信号而沿着被匹配线存储匹配数据。页缓冲器可包含一或多个锁存电路。物理上,页缓冲器处于其中实施cam块252的存储器单元阵列下方或与其相邻。当将信号传导到页缓冲器的经连接串存储匹配数据时,页缓冲器基于被匹配线提供的信号来锁存数据。搜索组件113从页缓冲器读取数据并且提供输入搜索关键字310是否存储于正被搜索的cam块252中的指示符与匹配方位312(例如,阵列中的串的存储器地址)一起作为输出。
[0055]
在一些实施例中,搜索组件113可在多个存储器平面的cam块252中依序搜索匹配数据。在一些实施例中,搜索组件113可在多个存储器平面的cam块252中并行搜索匹配数据。多个存储器平面的并行搜索允许在单个搜索操作中搜索平面的所有cam块252当中存储的所有数据条目而非在四个单独搜索操作中完成所有数据条目的搜索。因此,如上述实施例所使用的并行搜索可允许搜索组件113相对于其中利用依次搜索的实施例提高搜索速度。
[0056]
在一些实施例中,可跨存储器平面中的两个或更多个存储数据条目。在这些情况下,搜索组件113可跨存储器平面中的两个或更多个同时搜索匹配数据的部分。跨平面划分数据条目在与其中数据条目存储在单个平面内的实施例相比时允许更大字长。举例来说,如果cam块252中的每一个支持64位字,那么在所有四个平面当中划分数据条目将允许存储器装置支持256位字(4*64=256)。
[0057]
在一个实施例中,匹配方位312可作为输入应用于查找表118,或其它将对应于输
入搜索关键字310的值的方位存储于单独值存储区(例如值数据块254)中的数据结构。值数据块254可实施于nand型快闪存储器中(例如,存储器装置130上),或实施于其它不使用cam架构进行布置并且可包含数个所存储值354的非易失性存储器中。取决于实施例,值数据块254可与cam块252处于同一裸片上的相同位置,或可处于存储器子系统110中的不同存储器装置(即,存储器裸片)上。在一个实施例中,查找表118与cam块252和值数据块254中的任一个或两个维持于同一存储器装置130上。在另一实施例中,查找表118维持于单独存储器装置上。在另一实施例中,查找表118维持于存储器子系统控制器115的本地存储器119(例如,dram)中。查找表118可包含例如使来自cam块252的各个匹配方位312与值数据块254中的其它值方位324相关联的数个条目322。在一个实施例中,搜索组件113可识别查找表118中的条目322中与匹配方位312对应的一个条目并且从那个条目确定值数据块254中对应于输入搜索关键字310的数据(即,所存储值354中的一个相关联所存储值)所在的相关联值方位254。那个数据(即,值330)可返回给最初提供输入搜索关键字310的请求者(例如,耦合到存储器子系统110的主机系统120)。
[0058]
图4是根据本公开的一些实施例的实施于存储器装置内的关键值数据存储系统的内容可寻址存储器(cam)块的框图。如所示出,cam块252包含匹配线302-0到302-n、搜索线304-0到304-m以及逆搜索线306-0到306-m。在此实施方案中,cam块252的匹配线302-0到302-n对应于nand型快闪存储器装置的位线,且cam块252的搜索线304-0到304-m和逆搜索线306-0到306-m对应于nand型快闪存储器装置的字线。
[0059]
匹配线302-0到302-n中的每一个连接到包括多个串联连接的存储器单元的串。举例来说,匹配线302-0连接到包括存储器单元308-0到308-x的串,其中x=2m。cam块252的每个串中的存储器单元被配置成互补对。举例来说,对于连接到匹配线302-0的串,存储器单元308-0到308-x编程为互补存储器单元对310-0到310-m。
[0060]
存储器单元对被配置成互补的,其中所述对中的一个存储器单元存储数据值(“0”)且所述对中的另一存储器单元存储所述数据值的逆(“1”)。举例来说,存储器单元对310-0包括两个存储器单元。第一存储器单元存储数据位值data,且第二存储器单元308-0存储其为数据位值data的逆。而且,如所示出,搜索线304-0连接到第一存储器单元的控制栅极且逆搜索线306-0连接到第二存储器单元的控制栅极。
[0061]
搜索线304-0接收表示来自输入搜索字的搜索位值的第一信号sl且逆搜索线306-0接收表示所述搜索位值的逆的第二信号如果sl匹配data且匹配那么存储器单元对310-0将从a传导到b。举例来说,下文提供的表1是定义存储器单元对310-0到310-m中的任何给定一个存储器单元对的行为的真值表。
[0062][0063]
表1
[0064]
在表1中,“sl”是搜索位值,是搜索位值的逆,“data”是存储的位值,且
是所存储的位值的逆。如所示出,互补单元对当搜索数据值匹配所存储的数据值且搜索数据值的逆匹配所存储的数据值的逆时导电。在其它情况下,存储器单元对310因为所存储的数据不匹配搜索位而为不导电的。
[0065]
在一个实施例中,cam块252中的每个串存储数据条目且数据条目中的每个数据位值映射到所述串中的存储器单元对310-0到310-m中的一个。以此方式,在串中的互补存储器单元对310中的每一个内,第一存储器单元存储来自数据条目的位值且第二存储器单元存储来自数据条目的位值的逆。
[0066]
在其中nand型快闪存储器装置支持128位串(即,x是128)的实例中,匹配线302-0连接到存储器单元308-0到308-127,其存储包括位值d
0,0-d
63,63
的64位数据条目。在此实例中,位值d
0,0
映射到包括存储器单元308-0和308-1的存储器单元对310-0。更具体地,存储器单元308-0存储位值d
0,0
且互补存储器单元存储其为位值d
0,0
的逆。
[0067]
可竖直地沿着搜索线304-0到304-m和逆搜索线306-0到306-m输入搜索模式312。更具体地,搜索线304-0到304-m接收表示搜索字310的第一电压信号集sl
0-m
,且逆搜索线306-0到306-m接收表示搜索字的逆的第二电压信号集沿着搜索线输入搜索模式312会致使存储匹配数据的任何串为导电的,原因是如上文所论述,串中的每一个别存储器单元对310将为导电的。因为匹配线302经预充电,所以导电串允许匹配线302放电。连接到导电串的页缓冲器锁存指示cam块252中的匹配数据(即,搜索字206)的方位的数据。
[0068]
搜索组件113输出cam块252是否存储搜索字206的指示以及匹配数据的方位(例如,存储器地址)的指示符。在一些实施例中,搜索组件113包括从cam块252的页缓冲器读取数据以识别其方位的读出电路。
[0069]
在一些实施例中,cam块252中的两个页缓冲器可系结在一起形成串联移位寄存器。与这些实施例一致,搜索组件113将数据从第一页缓冲器移位到第二页缓冲器,且搜索组件113包括输出比较和计数器组件以跟踪从一个页缓冲器到另一页缓冲器的移位数目以识别cam块252所存储的匹配数据的方位。在一些实施例中,可使用单个晶体管将两个页缓冲器系结在一起形成移位寄存器。
[0070]
图5是根据本公开的一些实施例的处理使用存储器子系统中的内容可寻址存储器(cam)的关键值数据存储系统中的搜索操作的实例方法的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500由图1的搜索组件113执行。虽然以特定顺序或次序来展示,但除非另有指定,否则可修改所述过程的次序。因此,应理解,所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,在各个实施例中可以省略一或多个过程。因此,在每个实施例中并不需要所有过程。其它过程流程也是可能的。
[0071]
在操作505处,接收输入搜索关键字。举例来说,处理逻辑(例如,搜索组件113)可从请求者(例如,主机系统120)接收输入搜索关键字310。在一个实施例中,输入搜索关键字包含第一位序列(例如,“1001 1010 1011”)。
[0072]
在操作510处,产生搜索模式。举例来说,处理逻辑可基于第一位序列产生搜索模式。在一个实施例中,搜索模式包括表示输入搜索关键字310的第一电压信号集。也就是说,
第一电压信号集表示第一位序列。搜索模式另外包括表示第二位序列的第二电压信号集,所述第二位序列包括第一位序列的逆(例如,“0110 0101 0100”)。因此,在产生搜索模式时,处理逻辑通过将输入搜索关键字310求逆来产生第二位序列并且将第一位序列和第二位序列分别转换为于第一电压信号集和第二电压信号集。处理逻辑可替代地基第一位序列产生第一电压信号集并且通过产生第一电压信号集的逆来产生第二电压信号集。在产生第一电压信号集和第二电压信号集时,处理逻辑可使用高电压表示二进制值“1”并且使用低电压表示二进制值“0”,其中高电压高于阈值电压(vt)且低电压低于vt。
[0073]
在操作515处,将搜索模式提供给cam块。在一个实施例中,例如cam块252的cam块包含存储器单元阵列(例如,nand型快闪存储器阵列)。存储器单元可组织成多个串,其中每个串存储多个存储的搜索关键字中的一个。串包含串联连接在经预充电匹配线与页缓冲器之间的多个存储器单元。匹配线经预充电,其中所述匹配线连接到电压信号(例如,表示逻辑高状态)。cam块另外包括多个搜索线,且串中的存储器单元中的每一个连接到多个搜索线中的一个。
[0074]
如上所述,每个串中的存储器单元被组织为互补存储器单元对。串所存储的数据条目的每一位值映射到所述串中的互补存储器单元对。特定来说,第一存储器单元存储位值且第二存储器单元存储位值的逆。更具体地,第一存储器单元存储表示位值的第一电荷且第二存储器单元存储表示位值的逆的第二电荷。
[0075]
在将搜索模式提供到cam块252的搜索线时,处理逻辑可将表示来自第一位序列的搜索位值的第一信号提供到与互补存储器单元对中的第一存储器单元连接的第一搜索线,并且将表示搜索位值的逆的第二搜索信号提供到与互补存储器单元对中的第二存储器单元连接的第二搜索线。如果输入搜索关键字310存储于cam块252中,那么搜索模式的输入致使上面存储有输入搜索字的串变得导电。因为被匹配线经预充电,所以导电串允许匹配线放电。也就是说,所述串基于输入搜索关键字310匹配连接到匹配线的串上的所存储搜索关键字而传导由匹配线放电产生的信号。导电串将信号提供到连接在串的另一端的页缓冲器。页缓冲器响应于由于匹配线放电所提供的信号而锁存数据。经锁存数据指示连接到页缓冲器的匹配线存储与输入搜索关键字310相同的数据条目。
[0076]
在操作520处,识别存储的搜索关键字。举例来说,处理逻辑可识别所存储的搜索关键字352中与输入搜索关键字310匹配的一个所存储的搜索关键字。在一个实施例中,处理逻辑可通过从cam块252的页缓冲器读取数据来确定存储的搜索关键字352中的任一个是否匹配输入搜索关键字310。多个存储的搜索关键字352中的一个匹配的所存储搜索关键字在cam块252中具有相关联的匹配方位312。在一个实施例中,处理逻辑可基于从页缓冲器读取的数据确定匹配方位312。匹配方位312可包含对应于cam块252的阵列内的一或多个串的一或多个存储器地址。
[0077]
在操作525处,确定对应值方位。举例来说,处理逻辑可使用相关联的匹配方位312确定值数据块254中的对应值方位324。在一个实施例中,处理逻辑利用包括多个条目322的查找表118。所述多个条目322中的每一条目使来自cam块252的匹配方位(例如,匹配方位312)与值数据块254中的在其中存储表示与来自cam块252的相应所存储搜索关键字对应的值(例如,值330)的数据的值方位(例如,值方位324)相关联。取决于实施例,查找表118可维持于存储器装置130的nand型快闪存储器中或存储器子系统110中其它处的动态随机存取
存储器(dram)中(例如,本地存储器119中)。在一个实施例中,为了确定值数据块254中的对应值方位324,处理逻辑可识别查找表118中的多个条目322中对应于相关联匹配方位312并且使相关联匹配方位312与对应值方位324相关联的条目。
[0078]
在操作530处,检索表示值的数据。举例来说,处理逻辑可从值数据块254中的值方位324检索表示所存储值354中与输入搜索关键字310相关联的一个所存储值(即,值330)的数据。
[0079]
在操作535处,将数据提供给请求者。举例来说,处理逻辑可将表示与输入搜索关键字310相关联的值330的数据提供给主机系统(例如主机系统120)。
[0080]
图6说明计算机系统600的实例机器,在所述计算机系统600内可执行用于致使所述机器执行本文中所论述的方法中的任一种或多种方法的指令集。在一些实施例中,计算机系统600可对应于包含、耦合到或使用存储器子系统(例如,图1的存储器子系统110)或可用以执行控制器的操作(例如,以执行操作系统从而执行对应于图1的搜索组件113的操作)的主机系统(例如,图1的主机系统120)。在替代性实施例中,机器可连接(例如联网)到lan、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而以客户端-服务器网络环境中的服务器或客户端机器的容量进行操作。
[0081]
所述机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定将由所述机器采取的动作的指令集的任何机器。另外,虽然说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行一(或多)个指令集以进行本文中所论述的方法中的任何一或多种。
[0082]
实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(rom)、闪存存储器、动态随机存取存储器(dram)例如同步dram(sdram)或rambus dram(rdram)等)、静态存储器606(例如,闪存存储器、静态随机存取存储器(sram)等),以及数据存储系统618,其经由总线630彼此通信。
[0083]
处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元等。更特定来说,处理装置可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602也可以是一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等等。处理装置602被配置成执行指令626以用于执行本文中所论述的操作和步骤。计算机系统600可另外包含网络接口装置608以在网络620上通信。
[0084]
数据存储系统618可包含机器可读存储媒体624(也称为计算机可读媒体,如非暂时性计算机可读媒体),在其上存储有一或多个指令626集或体现本文中所描述的方法或功能中的任何一或多种的软件。指令626还可在由计算机系统600执行期间完全或至少部分地驻存在主存储器604内和/或处理装置602内,主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
[0085]
在一个实施例中,指令626包含用于实施对应于图1的搜索组件113的功能性的指
令。虽然在实例实施例中机器可读存储媒体624展示为单个媒体,但是应认为术语“机器可读存储媒体”包含存储一或多组指令的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集合且致使机器执行本公开的方法中的任何一种或多种的任何媒体。术语“机器可读存储媒体”因此应被视为包含但不限于固态存储器、光学媒体和磁性媒体。
[0086]
已在针对计算机存储器内的数据位的操作的算法和符号表示方面呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。在本文中,且一般将算法构想为产生所要结果的操作的自洽序列。操作是要求对物理量进行物理操纵的操作。通常(但未必),这些量采用能够存储、组合、比较以及以其它方式操纵的电或磁信号的形式。已经证实,主要出于常用的原因,将这些信号称为位、值、元素、符号、字符、项、编号等等有时是便利的。
[0087]
然而,应牢记,所有这些和类似术语将与适当物理量相关联,且仅仅为应用于这些量的便利标记。本公开可以指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它这类信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。
[0088]
本公开还涉及用于执行本文中的操作的设备。这一设备可以出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、cd-rom以及磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自连接到计算机系统总线。
[0089]
本文中呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可以与根据本文中的教示的程序一起使用,或可以证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现各种这些系统的结构。另外,未参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示内容。
[0090]
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如计算机可读)媒体包含机器(例如计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、闪存存储器组件等。
[0091]
在前述说明书中,本公开的实施例已经参照其特定实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而非限制性意义上看待说明书和图式。