CN115373891A - 在使用内容可寻址存储器的关键值数据存储***中复制冗余 - Google Patents
在使用内容可寻址存储器的关键值数据存储***中复制冗余 Download PDFInfo
- Publication number
- CN115373891A CN115373891A CN202210547900.2A CN202210547900A CN115373891A CN 115373891 A CN115373891 A CN 115373891A CN 202210547900 A CN202210547900 A CN 202210547900A CN 115373891 A CN115373891 A CN 115373891A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- stored
- locations
- value
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
- G11C15/046—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements using non-volatile storage elements
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40615—Internal triggering or timing of refresh, e.g. hidden refresh, self refresh, pseudo-SRAMs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4093—Input/output [I/O] data interface arrangements, e.g. data buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4096—Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/12—Bit line control circuits, e.g. drivers, boosters, pull-up circuits, pull-down circuits, precharging circuits, equalising circuits, for bit lines
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/14—Word line organisation; Word line lay-out
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请涉及在使用内容可寻址存储器的关键值数据存储***中复制冗余。一种存储器***包含存储器装置,存储器装置包括值数据块和存储多个所存储搜索关键字的内容可寻址存储器CAM块。存储器***进一步包含处理装置,处理装置接收输入搜索关键字,从存储器装置的CAM块中的多个所存储搜索关键字识别所存储搜索关键字的与输入搜索关键字匹配的多个冗余副本,且确定值数据块中的多个位置,多个位置对应于多个冗余副本,多个位置中的一个包括第一时间戳和表示与输入搜索关键字相关联的值的数据,且多个位置中的其余部分包括一或多个额外时间戳。
Description
技术领域
本公开的实施例大体上涉及存储器子***,且更具体地说,涉及在使用存储器子***中的内容可寻址存储器(CAM)的关键值数据存储***中复制冗余。
背景技术
存储器子***可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机***可利用存储器子***将数据存储在存储器装置处且从存储器装置检索数据。
发明内容
本公开的一个方面提供一种***,其包括:存储器装置,其包括值数据块和存储多个所存储搜索关键字的内容可寻址存储器(CAM)块;和处理装置,其以操作方式与所述存储器装置耦合,以执行包括以下的操作:接收输入搜索关键字;从所述CAM块中的所述多个所存储搜索关键字识别所存储搜索关键字的与所述输入搜索关键字匹配的多个冗余副本;确定所述值数据块中的多个位置,所述多个位置对应于所述多个冗余副本,其中所述多个位置中的一个包括第一时间戳和表示与所述输入搜索关键字相关联的值的数据,且其中所述多个位置中的其余部分包括一或多个额外时间戳;确定所述第一时间戳是否匹配所述一或多个额外时间戳;及响应于所述第一时间戳匹配所述一或多个额外时间戳,从所述多个位置中的所述一个检索表示与所述输入搜索关键字相关联的所述值的所述数据。
本公开的另一方面提供一种方法,其包括:接收输入搜索关键字;从存储器装置的CAM块中的所述多个所存储搜索关键字识别所存储搜索关键字的与所述输入搜索关键字匹配的多个冗余副本;确定值数据块中的多个位置,所述多个位置对应于所述多个冗余副本,其中所述多个位置中的一个包括第一时间戳和表示与所述输入搜索关键字相关联的值的数据,且其中所述多个位置中的其余部分包括一或多个额外时间戳;确定所述第一时间戳是否匹配所述一或多个额外时间戳;及响应于所述第一时间戳匹配所述一或多个额外时间戳,从所述多个位置中的所述一个检索表示与所述输入搜索关键字相关联的所述值的所述数据。
本公开的另一方面提供一种非暂时性机器可读存储媒体,其存储指令,所述指令在由处理装置执行时使得所述处理装置执行包括以下的操作:接收输入搜索关键字;从存储器装置的CAM块中的所述多个所存储搜索关键字识别所存储搜索关键字的与所述输入搜索关键字匹配的多个冗余副本;确定值数据块中的多个位置,所述多个位置对应于所述多个冗余副本,其中所述多个位置中的一个包括第一时间戳和表示与所述输入搜索关键字相关联的值的数据,且其中所述多个位置中的其余部分包括一或多个额外时间戳;确定所述第一时间戳是否匹配所述一或多个额外时间戳;及响应于所述第一时间戳匹配所述一或多个额外时间戳,从所述多个位置中的所述一个检索表示与所述输入搜索关键字相关联的所述值的所述数据。
附图说明
根据下文给出的详细描述且根据本公开的各种实施例的附图将更加充分地理解本公开。
图1说明根据本公开的一些实施例的包含存储器子***的实例计算***。
图2是根据本公开的一些实施例的与存储器子***的存储器子***控制器通信的存储器装置的框图。
图3是说明根据本公开的一些实施例的使用存储器子***中的内容可寻址存储器(CAM)的关键值数据存储***的框图。
图4是根据本公开的一些实施例的实施于存储器装置内的关键值数据存储***的内容可寻址存储器(CAM)块的框图。
图5是根据本公开的一些实施例的在使用CAM实施复制冗余的存储器子***中存储数据关键值数据的实例方法的流程图。
图6是根据本公开的一些实施例的在使用CAM实施关键值数据存储***的复制冗余的存储器子***中处理搜索操作的实例方法的流程图。
图7是说明根据本公开的一些实施例的在使用CAM的关键值数据存储***中实施复制冗余的存储器子***的框图。
图8是本公开的实施例可在其中操作的实例计算机***的框图。
具体实施方式
本公开的各方面涉及在使用存储器子***中的内容可寻址存储器(CAM)的关键值数据存储***中复制冗余。存储器子***可为存储装置、存储器模块或存储装置与存储器模块的混合。下文结合图1描述存储装置和存储器模块的实例。一般来说,主机***可利用包含一或多个组件(如存储数据的存储器装置)的存储器子***。主机***可提供待存储在存储器子***处的数据且可请求待从存储器子***检索的数据。
内容可寻址存储器(CAM)是某些极高速搜索应用(如识别符(ID)和模式匹配)中常用的存储器装置类型。通常,通过将输入搜索数据与所存储数据条目的表进行比较来搜索CAM,且返回匹配表中的数据的存储器地址。CAM频繁地实施于动态随机存取存储器(DRAM)或同步随机存取存储器(SRAM)中。然而,DRAM和SRAM两者均具有有限的存储器容量,这会限制常规CAM实施方案中可存储和搜索的数据量。
存储器子***可包含高密度非易失性存储器装置,其中当没有电力供应到存储器装置时需要保留数据。非易失性存储器装置的一个实例是与非(NAND)存储器装置。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置为一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面由物理块集合组成。每一块由页集合组成。每一页由存储器单元(“单元”)集合组成。单元是存储信息的电子电路。取决于单元类型,单元可存储二进制信息的一或多个位,且具有与所存储的位数目相关的各种逻辑状态。逻辑状态可由二进制值(如“0”和“1”)或此类值的组合表示。
存储器装置可由按二维或三维网格布置的位组成。存储器单元以列(下文也称为位线)和行(下文也称为字线)阵列的形式蚀刻到硅晶片上。字线可指存储器装置的存储器单元的一或多个行,所述一或多个行与一或多个位线一起使用以生成存储器单元中的每一个的地址。位线和字线的相交点构成存储器单元的地址。下文中,块是指存储器装置的用于存储数据的单元,且可包含存储器单元群组、字线群组、字线或个别存储器单元。可将一或多个块分组在一起以形成存储器装置的平面,以便允许在每一平面上进行并发操作。存储器装置可包含执行两个或更多个存储器平面的并发存储器页存取的电路***。举例来说,存储器装置可包含可由存储器装置的平面共享的多个存取线驱动器电路和电力电路,以促进两个或更多个存储器平面的包含不同页类型的页的并发存取。为易于描述,这些电路通常可称为独立的平面驱动器电路。取决于所采用的存储架构,可跨越存储器平面(即,在条带中)存储数据。因此,读取数据的片段(例如,对应于一或多个数据地址)的一个请求可产生对存储器装置的存储器平面中的两个或更多个执行的读取操作。
串是NAND型快闪存储器装置中的单元。NAND型快闪存储器装置通常具有32个或更多个存储器单元,其中每一存储器单元用于表示位值(例如,0或1)。因此,具有32个存储器单元的串可表示32个数据位且具有64个存储器单元的串可表示64个数据位。在NAND型快闪存储器块中,个别串连接成允许存储和检索来自所选择单元的数据。通常,块中的串的一端连接到共同源极线,且另一端连接到位线。每一串还含有与存储器单元串联的两个控制机构。串选择晶体管和接地选择晶体管连接到串选择线和接地选择线。NAND型快闪组件中的存储器单元在其控制栅极处水平地连接到字线以形成页。页为共享同一字线的经连接存储器单元的集合并且是编程的最小单位。NAND型快闪存储器装置可具有64K或128K单元的页大小。尽管常规NAND型快闪存储器与DRAM和SRAM相比具有较大容量,但其对于串行数据搜索和存取来说通常太慢了。
关键值数据存储***被设计成用于存储、检索和管理一系列记录。每一记录可包含不同字段,从而保存一或多个值。所述记录存储在数据库中且使用唯一地识别所述记录的关键字进行检索,并且可用于查找数据库内的记录。与关系数据库相比,在关键值数据存储***中,数据(即,值)存储为单个难理解集合,所述难理解集合可在每一记录中以不同方式格式化。这种不依赖于已定义模式的灵活性允许关键值数据存储***使用比关系数据库少得多的存储器。随机存取存储器(如DRAM或SRAM)不提供将所有数据存储在大型关键值***中的密度或容量。某些关键值***利用实施于NAND型快闪存储器装置中的CAM架构来提供快速和高容量搜索能力。根据此架构,数据条目可存储在NAND型快闪存储器阵列的串上。表示输入搜索字的搜索模式垂直输入到与CAM的阵列中的串对应的每一字线上。在一个实施例中,输入搜索字表示用于关键值数据存储***中的搜索关键字。单个读取操作比较输入搜索字(即,搜索关键字)与阵列的选定部分中的所有串,所述选定部分通常为一或多个平面中的子块,且识别匹配数据的存储地址(即,所存储关键字)。然而,当仅所存储关键字的单个副本保存在CAM中时,数据的任何缺陷、错误或其它损坏都会阻止与输入搜索关键字匹配的所存储关键字被识别。因此,由于仅在CAM中搜索所存储关键字的存在,且未单独搜索对应的值存储区(例如,实施于未使用CAM架构布置的NAND型快闪存储器或其它非易失性存储器中),因此所请求数据可能会响应于查询而变得不可识别,尽管值存储区中实际存在所述数据。这种情况可被称为“错误否定”。在编程到高阈值电压的存储器单元失去其电荷且引起错误匹配的情况下,也可能会出现相反情况(即,“错误肯定”)。
本公开的各方面通过在使用内容可寻址存储器(CAM)的关键值数据存储***中实施复制冗余来解决以上和其它缺陷。在一个实施例中,所存储关键字的多个冗余副本保存在所述CAM中。当接收到输入搜索字(即,搜索关键字)时,可将其与所存储关键字中的每一冗余副本进行比较以确定结果。多个副本的位置可根据实施例而不同。举例来说,在一个实施例中,所述副本可存储在CAM中的任何位置(例如,存储在不同块上),且所述比较可由与其中保存所存储关键字的存储器装置分离的存储器子***控制器执行。在其它实施例中,所述副本可存储在与不同相应页缓冲器或单个共同页缓冲器相关联的不同子块中,且所述比较可在存储器装置自身上(即,“在芯片上”)执行。在另一实施例中,所述副本可彼此邻近地存储在CAM阵列的相同子块中。
在一个实施例中,CAM中的匹配的所存储关键字的存储地址可用作存储单独值存储区中的对应条目的位置的查找表或其他数据结构的输入。值存储区可实施于未使用CAM架构布置的NAND型快闪存储器或其它非易失性存储器中。举例来说,存储器子***控制器或其它控制逻辑可识别查找表中对应于CAM中的匹配的所存储关键字的存储器地址的条目,且从所述条目确定值存储区中对应于关键字的数据所在的相关联位置。在一个实施例中,CAM中的所存储关键字的多个冗余副本中的每一个与值存储区中的不同位置相关联。在一个实施例中,值存储区中的一个位置包含与所存储关键字相关联的值和相关联时间戳(例如,指示关键字/值对存储在存储器子***处的时间)。值存储区中的任何其它位置(即,与所存储关键字的其余冗余副本相关联的那些位置)可包含相同时间戳,而不包含相关联值。在一个实施例中,控制逻辑比较来自值存储区中的每一位置的时间戳以确定其是否匹配。如果来自值存储区中的每一位置的所有时间戳(例如,3个时间戳中的3个)匹配(即,指示相同时间),那么与匹配的所存储关键字相关联的值可返回到最初提供输入搜索字的请求方(例如,耦合到存储器子***的主机***)。如果例如仅时间戳的子集(例如,3个时间戳中的2个)匹配,那么可返回与匹配的所存储关键字相关联的值,且可刷新所述CAM以解决导致至少一个时间戳与其他时间戳不匹配的任何改变/错误。如果例如时间戳都不匹配,那么不返回与匹配的所存储关键字相关联的值且启动错误恢复流,因为所述值与匹配的所存储关键字正确地相关联的置信度较低。
此方法的优点包含但不限于存储器子***中改进的性能。基于NAND的CAM架构实现在其中执行高速和高密度模式匹配的新应用,如与人工智能、机器视觉和大型遗传数据库有关的应用。此外,对基于NAND的CAM的搜索在NAND组件内进行,且因此***总线的利用率显著降低(即,降低一或多个数量级)。总线要求的这种放宽可节省电力、提高***效率和/或减少***成本。此冗余方案确保,即使CAM中的所存储关键字的多个冗余副本中的一或多个受损,仍可识别与所接收搜索关键字的匹配,使得可从值存储区中的对应位置检索所请求数据。另外,匹配的时间戳的确定进一步有助于识别和校正CAM中的错误,即使某些错误校正码(例如,BHC或LDPC)不可用。因此,利用较少的DRAM或其它易失性存储器来实施关键值数据存储***的功能性,这可降低存储器子***的成本和电力利用率。
图1说明根据本公开的一些实施例的包含存储器子***110的实例计算***100。存储器子***110可包含媒体,如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或此类的组合。
存储器子***110可为存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)和硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小型DIMM(SO-DIMM),和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算***100可为计算装置,如台式计算机、膝上型计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,运载工具、工业设备或联网商业装置中包含的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算***100可包含耦合到一或多个存储器子***110的主机***120。在一些实施例中,主机***120耦合到不同类型的存储器子***110。图1说明耦合到一个存储器子***110的主机***120的一个实例。如本文中所使用,“耦合到”或“与……耦合”通常是指组件之间的连接,所述连接可为间接通信连接或直接通信连接(例如,没有中间组件),无论是有线还是无线的,包含例如电连接、光学连接、磁连接等的连接。
主机***120可包含处理器芯片组和由处理器芯片组执行的软件堆栈。处理器芯片组可包含一或多个核心、一或多个高速缓存、存储器控制器(例如,NVDIMM控制器)和存储协议控制器(例如,PCIe控制器、SATA控制器)。主机***120使用存储器子***110以例如将数据写入到存储器子***110和从存储器子***110读取数据。
主机***120可经由物理主机接口耦合到存储器子***110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、***组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行连接的SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机***接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)等。物理主机接口可用于在主机***120与存储器子***110之间传输数据。当存储器子***110通过物理主机接口(例如,PCIe主线)与主机***120耦合时,主机***120可进一步利用NVM高速(NVMe)接口、开放NAND快闪接口(ONFI)接口,或某一其它接口来存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子***110与主机***120之间传送控制、地址、数据和其它信号的接口。图1说明存储器子***110作为实例。一般来说,主机***120可经由同一通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子***。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器和就地写入存储器,如三维交叉点(“3D交叉点”)存储器装置,其为非易失性存储器单元的交叉点阵列。非易失性存储器的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变而执行位存储。另外,与许多基于快闪的存储器相比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2D NAND)和三维NAND(3DNAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如,单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,如多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,如SLC、MLC、TLC、QLC或此类的任何组合。在一些实施例中,特定存储器装置可包含SLC部分和存储器单元的MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器单元可分组为可指用于存储数据的存储器装置的逻辑单元的页。对于一些类型的存储器(例如,NAND),页可被分组以形成块。
尽管描述如非易失性存储器单元3D交叉点阵列和NAND型快闪存储器(例如,2DNAND、3D NAND)的非易失性存储器组件,但存储器装置130可基于任何其它类型的非易失性存储器,如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫族化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器和电可擦除可编程只读存储器(EEPROM)。
存储器子***控制器115(或为简单起见,控制器115)可与存储器装置130进行通信以执行如在存储器装置130处读取数据、写入数据或擦除数据之类的操作以及其它此类操作。存储器子***控制器115可包含硬件,如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有用以执行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路***。存储器子***控制器115可为微控制器、专用逻辑电路***(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它合适的处理器。
存储器子***控制器115可为处理装置,其包含配置成执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明的实例中,存储器子***控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子***110的操作(包含处理存储器子***110与主机***120之间的通信)的各种过程、操作、逻辑流程和例程。
在一些实施例中,本地存储器119可包含存储存储器指针、所提取的数据等的存储器寄存器。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的实例存储器子***110已说明为包含存储器子***控制器115,但在本公开的另一实施例中,存储器子***110不包含存储器子***控制器115,且可实际上依赖于外部控制(例如,由外部主机或由与存储器子***分离的处理器或控制器提供)。
一般来说,存储器子***控制器115可从主机***120接收命令或操作,且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130的所需存取。存储器子***控制器115可负责其它操作,如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作和与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理块地址)之间的地址转换。存储器子***控制器115可进一步包含主机接口电路***以经由物理主机接口与主机***120通信。主机接口电路***可将从主机***接收的命令转换成命令指令以存取存储器装置130,以及将与存储器装置130相关联的响应转换成主机***120的信息。
存储器子***110还可包含未说明的额外电路***或组件。在一些实施例中,存储器子***110可包含高速缓存或缓冲器(例如,DRAM)和地址电路***(例如,行解码器和列解码器),所述地址电路***可从存储器子***控制器115接收地址且解码所述地址以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子***控制器115进行操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子***控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子***110是受管理存储器装置,其包含具有裸片上的控制逻辑(例如,本地媒体控制器135)和用于相同存储器装置封装内的媒体管理的控制器(例如,存储器子***控制器115)的原始存储器装置130。受管理存储器装置的实例是受管理NAND(MNAND)装置。
在一个实施例中,存储器装置130可配置成包含内容可寻址存储器(CAM)NAND关键值数据库137。如下文更详细地描述,CAM-NAND关键值数据库137可包含组织为串的存储器单元的一或多个阵列的CAM块。每一串存储数据条目且包括串联连接于匹配线与页缓冲器之间的存储器单元。也就是说,CAM块包含多个匹配线,且每一匹配线连接到阵列中的多个串中的一个。CAM块的匹配线对应于在其上实施CAM块的NAND块的位线。在给定串内,存储器单元可组织为互补存储器单元对。由串存储的数据条目的每一位值映射到串中的互补存储器单元对中的一个。
可通过提供搜索模式作为CAM块的搜索线的输入来搜索CAM块。CAM块的搜索线对应于在其上实施CAM块的NAND块的字线。在一个实施例中,对CAM块的匹配线进行预充电以便于搜索。也就是说,在输入搜索之前,将电压信号应用于CAM块的匹配线。在搜索操作期间,如果输入搜索字(即,搜索关键字)与由CAM块存储的任何数据条目(即,所存储关键字的多个冗余副本中的一或多个)匹配,那么一或多个被匹配线(例如,对应于存储匹配的数据条目的串的匹配线)变得导电且响应于搜索线的搜索模式输入而释放信号。如果搜索字不与任何所存储条目匹配,那么所有匹配线都不导电。每一匹配线进一步连接到页缓冲器(例如,包括一或多个锁存电路),所述页缓冲器接收放电信号且存储指示匹配数据沿着经连接匹配线存储的数据。
在一个实施例中,存储器子***110进一步包含搜索组件113,所述搜索组件有助于对CAM-NAND关键值数据库137进行搜索。根据一些实施例,搜索组件113包含于存储器子***控制器115中,如所展示。举例来说,存储器子***控制器115可包含处理器117(例如,处理装置),其配置成执行存储在本地存储器119中的指令以用于执行本文中所描述的搜索组件113的操作。在一些实施例中,存储器装置130包含搜索组件113的至少一部分。在一些实施例中,搜索组件113是主机***120、应用或操作***的部分。
搜索组件113基于接收到的输入搜索字而生成搜索模式,且使得控制逻辑(例如,本地媒体控制器135)沿着CAM-NAND关键值数据库137中的CAM块的搜索线垂直地输入所述搜索模式。在一个实施例中,CAM块包含所存储关键字的多个冗余副本,每一冗余副本存储为单独的数据条目。如果与输入搜索字匹配的一或多个数据条目存储在CAM块中,那么搜索模式使得存储数据条目的匹配线(也被称为“被匹配线”)变得导电,且由于匹配线被预充电,因此被匹配线将指示搜索字存储在其上的信号提供到经连接页缓冲器。可基于由于串变得导电而由被匹配线提供的信号识别任何匹配数据条目的位置(例如,存储地址)。更具体地说,连接到任何被匹配线的页缓冲器响应于检测到指示匹配数据沿着被匹配线存储的放电信号而存储数据。在一个实施例中,页缓冲器自身可识别表示所存储关键字的与输入搜索关键字匹配的冗余副本的数目的匹配线。在另一实施例中,搜索组件113或控制逻辑(例如,读出电路)的组件可从页缓冲器读取数据。基于从页缓冲器读取的数据,搜索组件113可识别匹配线,且输出搜索字是否由CAM块存储的对应指示和匹配线的位置的指示符。
搜索组件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块中的匹配线的位置的条目,且从那些条目确定值数据块中对应于关键字的数据所在的相关联位置。
在一个实施例中,CAM块中的所存储关键字的多个冗余副本中的每一个与值存储区中的不同位置相关联。在一个实施例中,值存储区中的一个位置包含与所存储关键字相关联的值和相关联时间戳(例如,指示关键字/值对存储在存储器子***处的时间)。值存储区中的任何其它位置(即,与所存储关键字的其余冗余副本相关联的那些位置)可包含相同时间戳,而不包含相关联值。在一个实施例中,控制逻辑比较来自值存储区中的每一位置的时间戳以确定其是否匹配。如果来自值存储区中的每一位置的所有时间戳(例如,3个时间戳中的3个)匹配(即,指示相同时间),那么与匹配的所存储关键字相关联的值可返回到最初提供输入搜索字的请求方(例如,主机***120)。如果例如仅时间戳的子集(例如,3个时间戳中的2个)匹配,那么可返回与匹配的所存储关键字相关联的值,且可刷新所述CAM以解决导致至少一个时间戳与其他时间戳不匹配的任何改变/错误。如果例如时间戳都不匹配,那么不返回与匹配的所存储关键字相关联的值且启动错误恢复流,因为所述值与匹配的所存储关键字正确地相关联的置信度较低。下文描述关于搜索组件113和CAM-NAND关键值数据库137的操作和结构的其它细节。
图2是根据实施例的呈存储器装置130的形式的第一设备与呈存储器子***(例如,图1的存储器子***110)的存储器子***控制器115的形式的第二设备通信的简化框图。电子***的一些实例包含个人计算机、个人数字助理(PDA)、数字相机、数字媒体播放器、数字记录器、游戏、电气设备、运载工具、无线装置、移动电话等。存储器子***控制器115(例如,存储器装置130外部的控制器)可为存储器控制器或其它外部主机装置。
存储器装置130包含以行和列逻辑地布置的存储器单元阵列250。逻辑行中的存储器单元通常连接到同一存取线(例如,字线),而逻辑列中的存储器单元通常选择性地连接到同一数据线(例如,位线)。单个存取线可与存储器单元的多于一个逻辑行相关联,且单个数据线可与多于一个逻辑列相关联。存储器单元阵列250的至少一部分的存储器单元(图2中未展示)能够被编程到至少两个目标数据状态中的一个。在一个实施例中,存储器单元阵列250包含CAM块252和值数据块254。如本文中所描述,CAM块252包含垂直存储在串中的多个所存储关键字,其可与所接收的搜索关键字进行比较。在一个实施例中,这些所存储关键字可包含每一所存储关键字的多个冗余副本。当确定匹配时(即,当与输入搜索关键字匹配的所存储关键字的副本数目满足阈值准则时),CAM块252中的匹配存储关键字的位置指向值数据块254中的可被检索且返回到请求方的对应值的位置。在一个实施例中,存储器装置130组织成多个平面。在一个实施例中,例如,存储器装置130包含四个平面。然而,在其它实施例中,可存在更多或更少的平面。平面中的每一个可配置成包含一或多个CAM块252和值数据块254。
提供行解码电路***208和列解码电路***210以对地址信号进行解码。接收地址信号且对其进行解码以存取存储器单元阵列250。存储器装置130还包含输入/输出(I/O)控制电路***212,其用以管理命令、地址和数据到存储器装置130的输入以及数据和状态信息从存储器装置130的输出。地址寄存器214与I/O控制电路***212以及行解码电路***208和列解码电路***210通信以在解码之前锁存地址信号。命令寄存器224与I/O控制电路***212和本地媒体控制器135通信以锁存传入命令。
控制器(例如,在存储器装置130内部的本地媒体控制器135)响应于命令而控制对存储器单元阵列250的存取且生成用于外部存储器子***控制器115的状态信息,即本地媒体控制器135配置成对存储器单元阵列250执行存取操作(例如,读取操作、编程操作和/或擦除操作)。本地媒体控制器135与行解码电路***208和列解码电路***210通信,以响应于地址而控制行解码电路***208和列解码电路***210。
本地媒体控制器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。
存储器装置130经由控制链路232从本地媒体控制器135接收存储器子***控制器115处的控制信号。举例来说,控制信号可包含芯片启用信号CE#、命令锁存启用信号CLE、地址锁存启用信号ALE、写入启用信号WE#、读取启用信号RE#和写入保护信号WP#。取决于存储器装置130的性质,可进一步经由控制链路232接收额外或替代控制信号(未展示)。在一个实施例中,存储器装置130经由多路复用的输入/输出(I/O)总线234从存储器子***控制器115接收命令信号(其表示命令)、地址信号(其表示地址)和数据信号(其表示数据),且经由I/O总线234将数据输出到存储器子***控制器115。
举例来说,可在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。
在实施例中,可省略高速缓存寄存器242,且可将数据直接写入到数据寄存器244中。还可经由用于8位装置的输入/输出(I/O)引脚[7:0]或用于16位装置的输入/输出(I/O)引脚[15:0]输出数据。尽管可参考I/O引脚,但其可包含实现通过外部装置(例如,存储器子***控制器115)电连接到存储器装置130的任何导电节点,例如常用的导电衬垫或导电凸块。
所属领域的技术人员应了解,可提供额外电路***和信号且已简化图2的存储器装置130。应认识到,参考图2所描述的各种块组件的功能性可不必与集成电路装置的不同组件或组件部分分离。举例来说,集成电路装置的单个组件或组件部分可适于执行图2的多于一个块组件的功能性。替代地,可组合集成电路装置的一或多个组件或组件部分以执行图2的单个块组件的功能性。此外,虽然根据各种信号的接收和输出的流行惯例来描述具体I/O引脚,但应注意,可在各种实施例中使用其他I/O引脚(或其他I/O节点结构)的组合或其他数目个I/O引脚(或其他I/O节点结构)。
图3是说明根据实施例的使用存储器子***中的内容可寻址存储器(CAM)的关键值数据存储***的框图。在一个实施例中,搜索组件113接收输入搜索关键字305(例如,搜索字)且将输入搜索关键字305应用于CAM块252以将输入搜索关键字305与多个所存储搜索关键字352进行比较。在一个实施例中,搜索组件113或存储器子***110中的其它逻辑基于输入搜索关键字305而生成搜索模式。输入搜索关键字305可包含第一位序列(例如,“1011”)。所生成搜索模式可包含表示输入搜索关键字305的第一电压信号集合和表示包括第一位序列的逆的第二位序列(例如,“0100”)的第二电压信号集合。在一个实施例中,搜索组件113或其它逻辑包含用以生成输入搜索关键字的逆的反相器和用以生成第一信号和第二信号的电平选择器。在生成第一电压信号和第二电压信号时,电平选择器可使用高电压来表示二进制值“1”,且使用低电压来表示二进制值“0”,其中高电压高于阈值电压(Vt)且低电压低于Vt。
为了搜索CAM块252,搜索组件113沿着CAM块252的搜索线垂直地输入搜索关键字305(即,代表性搜索模式)。搜索关键字305的输入使得表示匹配的所存储位值的任何互补存储器单元对变得导电。如果串正在存储匹配数据(即,所存储搜索关键字352中的匹配的所存储搜索关键字),那么整个串变得导电。CAM块252中的匹配线被预充电(例如,连接到高电压),且由于匹配线被预充电,因此搜索线上的搜索关键字305的输入使得块中的存储匹配数据(例如,所存储搜索关键字352中的与搜索关键字305相同的所存储搜索关键字)的任何匹配线输出放电信号,这是因为对应串是导电的。放电信号提供匹配数据(例如,输入搜索关键字305)存储在其上的指示。放电信号提供匹配数据存储在连接到匹配线的串上的指示。
在一个实施例中,所存储搜索关键字352包含每一所存储关键字的多个冗余副本。举例来说,可存在保存在CAM块252中的给定所存储关键字的三个、四个、五个或任何其它数目个相同副本。多个副本的位置可根据实施例而不同。举例来说,在一个实施例中,所述副本可存储在CAM块252中的任何位置(例如,存储在不同块上)。在其它实施例中,所述副本可存储在CAM块252内的与不同相应页缓冲器或单个共同页缓冲器相关联的不同子块中。在另一实施例中,所述副本可彼此邻近地存储在CAM块252的相同子块中。在一个实施例中,即使与不同子块相关联,所存储关键字的多个冗余副本也可全部与CAM块252中的同一字线相关联。在此实施例中,字线设定操作仅需要执行一次(即,用于读取第一子块)且无需被执行以读取后续子块。这缩短了与识别匹配的所存储关键字相关联的读取时间,且改进了存储器装置130的性能。
CAM块252中的每一串连接于匹配线与页缓冲器(例如,包括一或多个锁存电路)之间,并且被匹配线的页缓冲器响应于由于匹配线沿着串放电而提供的信号存储指示匹配数据沿着被匹配线存储的数据。页缓冲器可包含一或多个锁存电路。物理上,页缓冲器驻存在其中实施CAM块252的存储器单元阵列下方或邻近于所述存储器单元阵列驻存。当匹配数据由将信号传导到页缓冲器的经连接串存储时,页缓冲器基于由被匹配线提供的信号而锁存数据。为了确定匹配,页缓冲器或与CAM块252相关联的其它电路***可识别每一所存储关键字的与输入搜索关键字匹配的多个冗余副本。搜索组件113从页缓冲器读取数据且提供输入搜索关键字305是否存储在正被搜索的CAM块252中作为输出以及一或多个匹配位置312(例如,阵列中的串的存储器地址)的指示符。
在另一实施例中,存储器子***控制器中的搜索组件113或其它逻辑识别匹配的所存储搜索关键字。在此实施例中,搜索组件113从页缓冲器读取数据,所述数据指示与匹配的所存储关键字相关联的被匹配线。在一些实施例中,搜索组件113可在多个存储器平面的CAM块252中依序搜索匹配数据。在一些实施例中,搜索组件113可并行地在多个存储器平面的CAM块252中搜索匹配数据。对多个存储器平面的并行搜索允许在单个搜索操作中搜索存储在平面的所有CAM块252当中的所有数据条目,而非在四个单独搜索操作中完成对所有数据条目的搜索。因此,如上述实施例中利用的并行搜索可允许搜索组件113相对于利用依序搜索的实施例实现搜索速度的提高。
在一些实施例中,可跨越存储器平面中的两个或更多个存储数据条目。在这些情况下,搜索组件113可跨越存储器平面中的两个或更多个同时搜索匹配数据的部分。当与数据条目存储在单个平面内的实施例相比时,跨平面划分数据条目实现更大的字长。举例来说,如果CAM块252中的每一个支持64位字,那么在所有四个平面当中划分数据条目将允许存储器装置支持256位字(4*64=256)。
在一个实施例中,一或多个匹配位置312可应用为到查找表118或其它数据结构的输入,所述查找表或其它数据结构存储单独的值存储区(如值数据块254)中的对应于输入搜索关键字305的值的位置。值数据块254可实施于未使用CAM架构布置的NAND型快闪存储器(例如,存储器装置130上)或其它非易失性存储器中,且可包含多个所存储值354。取决于实施例,值数据块254可与CAM块252共置于同一裸片上,或可位于存储器子***110中的不同存储器装置(即,存储器裸片)上。在一个实施例中,查找表118与CAM块252和值数据块254中的任一个或两个保存在同一存储器装置130上。在另一实施例中,查找表118保存在单独的存储器装置上。在另一实施例中,查找表118整体或部分地保存在存储器子***控制器115的本地存储器119(例如,DRAM)中。查找表118可包含例如多个条目322,以使来自CAM块252的各个匹配位置312与值数据块254中的其它值位置324相关联。在一个实施例中,搜索组件113可识别查找表118中对应于匹配位置312的条目322,且从那些条目确定值数据块254中对应于输入搜索关键字305的数据(即,所存储值354中的相关联一者)所在的相关联值位置324。在一个实施例中,给定所存储搜索关键字的多个冗余副本中的每一个的匹配位置312与值数据块254中的不同值位置324相关联。在一个实施例中,值数据块254中的一个位置包含与所存储关键字相关联的所存储值354和相关联时间戳(例如,指示关键字/值对存储在存储器子***处的时间)中的一个。值数据块254中的任何其它位置(即,与所存储关键字的其余冗余副本相关联的那些位置)可包含相同时间戳,而不包含相关联值。在一个实施例中,控制逻辑比较来自值数据块254中的每一位置的时间戳以确定其是否匹配。如果来自值数据块254中的每一位置的所有时间戳(例如,3个时间戳中的3个)匹配(即,指示相同时间),那么与匹配的所存储关键字相关联的值可返回到最初提供输入搜索关键字305的请求方(例如,主机***120)。如果例如仅时间戳的子集(例如,3个时间戳中的2个)匹配,那么可返回与匹配的所存储关键字相关联的值,且可刷新CAM块252以解决导致至少一个时间戳与其他时间戳不匹配的任何改变/错误。如果例如时间戳都不匹配,那么不返回与匹配的所存储关键字相关联的值且启动错误恢复流,因为所述值与匹配的所存储关键字正确地相关联的置信度较低。
图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型快闪存储器装置的字线。
匹配线302-0到302-N中的每一个连接到包括串联连接的多个存储器单元的串。举例来说,匹配线302-0连接到包括存储器单元308-0到308-X的串,其中X=2M。CAM块252的每一串中的存储器单元配置成互补对。举例来说,在串连接到匹配线302-0的情况下,存储器单元308-0到308-X被编程为互补存储器单元对310-0到310-M。
存储器单元对配置成互补的,因为所述对中的一个存储器单元存储数据值(“0”),且所述对中的另一存储器单元存储数据值的逆(“1”)。举例来说,存储器单元对310-0包括两个存储器单元。第一存储器单元存储数据位值DATA,且第二存储器单元308-0存储作为数据位值DATA的逆的并且,如所展示,搜索线304-0连接到第一存储器单元的控制栅极,且逆搜索线306-0连接到第二存储器单元的控制栅极。
搜索线304-0从输入搜索字接收表示搜索位值的第一信号SL,且逆搜索线306-0接收表示搜索位值的逆的第二信号如果SL与DATA匹配且与匹配,那么存储器单元对310-0从A到B将为导电的。举例来说,下文提供的表1是定义存储器单元对310-0到310-M中的任一给定存储器单元对的行为的真值表。
表1
在表1中,“SL”是搜索位值,是搜索位值的逆,“DATA”是所存储位值,且是所存储位值的逆。如所展示,当搜索数据值与所存储数据值匹配且搜索数据值的逆与所存储数据值的逆匹配时,互补单元对是导电的。在其它情况下,存储器单元对310是不导电的,因为所存储数据与搜索位不匹配。
在一个实施例中,CAM块252中的每一串存储数据条目且数据条目中的每一数据位值映射到串中的存储器单元对310-0到310-M中的一个。以此方式,在串中的互补存储器单元对310中的每一个内,第一存储器单元存储来自数据条目的位值,且第二存储器单元存储来自数据条目的位值的逆。
在其中NAND型快闪存储器装置支持128位串(即,X是128)的实例中,匹配线302-0连接到存储器单元308-0到308-127,其存储包括位值D0,0-D63,63的64位数据条目。在此实例中,位值D0,0映射到包括存储器单元308-0和308-1的存储器单元对310-0。更具体地说,存储器单元308-0存储位值D0,0,且互补存储器单元存储其为位值D0,0的逆。
搜索模式305可沿着搜索线304-0到304-M和逆搜索线306-0到306-M垂直地输入。更具体地说,搜索线304-0到304-M接收表示搜索字305的第一电压信号集合SL0-M,且逆搜索线306-0到306-M接收表示所述搜索字的逆的第二电压信号集合搜索模式305沿着搜索线的输入使得存储匹配数据的任何串变得导电,因为如上文所论述,串中的每一个别存储器单元对310将为导电的。由于匹配线302被预充电,因此导电串允许匹配线302放电。连接到导电串的页缓冲器锁存指示CAM块252中的匹配数据(即,搜索字206)的位置的数据。
搜索组件113输出搜索字206是否由CAM块252存储的指示和匹配数据的位置(例如,存储器地址)的指示符。在一些实施例中,搜索组件113包括读出电路,所述读出电路从CAM块252的页缓冲器读取数据以识别所述数据的位置。
在一些实施例中,CAM块252中的两个页缓冲器可连接在一起以形成串联移位寄存器。根据这些实施例,搜索组件113使数据从第一页缓冲器移位到第二页缓冲器,且搜索组件113包括输出比较和计数器组件以跟踪从一个页缓冲器到另一页缓冲器的移位次数,以识别由CAM块252存储的匹配数据的位置。在一些实施例中,两个页缓冲器可使用单个或多个晶体管连接在一起以形成移位寄存器。
图5是根据本公开的一些实施例的在使用CAM实施复制冗余的存储器子***中存储数据关键值数据的实例方法的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,由图1的搜索组件113执行方法500。尽管以特定序列或次序展示,但除非另外规定,否则可修改过程的次序。因此,所说明的实施例应仅作为实例理解,且所说明的过程可以不同次序执行,且一些过程可并行地执行。另外,可以在各种实施例中省略一或多个过程。因此,并非每一实施例中都需要所有过程。其它过程流程是可能的。
在操作505处,接收数据。举例来说,处理逻辑(例如,搜索组件113)可从请求方(例如,主机***120)接收数据。在一个实施例中,数据包含待存储于CAM-NAND关键值数据库137中的关键值对。如本文中所描述,关键值对可包含搜索关键字(例如,包含唯一的位序列)及对应值,其可包含呈任何形式的数据。
在操作510处,存储数据。举例来说,处理逻辑可将关键字/值对存储在存储器子***110处的mem表中。在一个实施例中,mem表是用于在将此类数据写入到CAM-NAND关键值数据库137之前临时存储或高速缓存数据的数据结构,且可例如实施于本地存储器119中。在一个实施例中,时间戳还与关键字/值对一起存储。时间戳可包含数字日期和/或时间信息、计数器值或指示关键字/值对何时被接收,关键字/值对何时被存储在mem表中或与关键字/值对相关的一些其它事件的发生中的至少一个的一些其它信息。
在操作515处,移动数据。举例来说,当mem表已满或以其它方式达到阈值容量或数据量时,处理逻辑可将数据从mem表刷新到CAM-NAND关键值数据库137。在一个实施例中,处理逻辑可将搜索关键字的多个冗余副本存储在包含存储器单元阵列(例如,NAND型快闪存储器阵列)的CAM块中,如CAM块252。存储器单元可组织成多个串,其中每一串存储多个所存储搜索关键字中的一个。串包含串联连接于预充电匹配线与页缓冲器之间的多个存储器单元。匹配线被预充电,因为其连接到电压信号(例如,表示逻辑高状态)。CAM块进一步包括多个搜索线,且串中的存储器单元中的每一个连接到多个搜索线中的一个。在一个实施例中,搜索关键字的每一冗余副本存储在多个串中的不同者上且因此具有不同的相关联匹配位置312。
在操作520处,存储所述值。举例来说,处理逻辑可将来自关键值对的值和相关联时间戳存储在值数据块254中的值位置324处。在一个实施例中,CAM块中的所存储关键字的多个冗余副本中的每一个与值数据块254中的不同位置相关联。包含所述值和相关联时间戳的值位置324可对应于CAM块252中的所存储搜索关键字的冗余副本中的任一个的匹配位置312。
在操作525处,存储时间戳。如本文中所描述,CAM中的所存储关键字的多个冗余副本中的每一个与值数据块254中的不同位置相关联。在值和相关联时间戳存储在值数据块254中的一个位置处的情况下,可存在与所存储关键字的其余副本相关联的多个其余位置。在一个实施例中,处理逻辑可在值数据块254中的那些其余位置处存储相同时间戳的副本。那些其余位置不需要存储所述值的副本,尽管在容量不受限制的情况下其可存储值的副本。如本文中所描述,值数据块254中的时间戳可用于评估存储相关联的所存储搜索关键字的CAM块252的有效性和健康状况。
图6是根据本公开的一些实施例的在实施使用CAM的关键值数据存储***的冗余和多数投票的存储器子***中处理搜索操作的实例方法的流程图。方法600可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路***、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,由图1的搜索组件113执行方法600。尽管以特定序列或次序展示,但除非另外规定,否则可修改过程的次序。因此,所说明的实施例应仅作为实例理解,且所说明的过程可以不同次序执行,且一些过程可并行地执行。另外,可以在各种实施例中省略一或多个过程。因此,并非每一实施例中都需要所有过程。其它过程流程是可能的。
在操作605处,接收输入搜索关键字。举例来说,处理逻辑(例如,搜索组件113)可从请求方(例如,主机***120)接收输入搜索关键字305。在一个实施例中,输入搜索关键字包含第一位序列(例如,“1001 1010 1011”)。
在操作610处,生成搜索模式。举例来说,处理逻辑可基于第一位序列而生成搜索模式。在一个实施例中,搜索模式包括表示输入搜索关键字305的第一电压信号集合。也就是说,第一电压信号集合表示第一位序列。搜索模式进一步包括表示第二位序列的第二电压信号集合,所述第二位序列包括第一位序列的逆(例如,“0110 0101 0100”)。因此,在生成搜索模式时,处理逻辑通过反转输入搜索关键字305来生成第二位序列,并且分别将第一位序列和第二位序列转换成第一电压信号集合和第二电压信号集合。处理逻辑可替代地基于第一位序列而生成第一电压信号集合,且通过生成第一电压信号集合的逆来生成第二电压信号集合。在生成第一电压信号集合和第二电压信号集合时,处理逻辑可使用高电压来表示二进制值“1”,且使用低电压来表示二进制值“0”,其中高电压高于阈值电压(Vt)且低电压低于Vt。
在操作615处,将搜索模式提供到CAM块。在一个实施例中,如CAM块252的CAM块包含存储器单元阵列(例如,NAND型快闪存储器阵列)。存储器单元可组织成多个串,其中每一串存储多个所存储搜索关键字中的一个。串包含串联连接于预充电匹配线与页缓冲器之间的多个存储器单元。匹配线被预充电,因为其连接到电压信号(例如,表示逻辑高状态)。CAM块进一步包括多个搜索线,且串中的存储器单元中的每一个连接到多个搜索线中的一个。在一个实施例中,CAM块包含每一所存储搜索关键字的多个冗余副本。
如上文所提及,每一串中的存储器单元组织为互补存储器单元对。由串存储的数据条目的每一位值映射到串中的互补存储器单元对。具体地说,第一存储器单元存储位值,且第二存储器单元存储所述位值的逆。更具体地说,第一存储器单元存储表示位值的第一电荷,且第二存储器单元存储表示所述位值的逆的第二电荷。在将搜索模式提供到CAM块252的搜索线的过程中,处理逻辑可将表示来自第一位序列的搜索位值的第一信号提供到连接到互补存储器单元对中的第一存储器单元的第一搜索线,且将表示所述搜索位值的逆的第二搜索信号提供到连接到互补存储器单元对中的第二存储器单元的第二搜索线。
图7是说明根据本公开的一些实施例的在使用CAM的关键值数据存储***中实施复制冗余的存储器子***的框图700。在一个实施例中,搜索组件113以操作方式与存储器装置130耦合。在一个实施例中,存储器装置130包含多个页缓冲器,如页缓冲器740和页缓冲器742,以及CAM块252。CAM块252可包含在如字线752的字线与位线(未展示)的相交点处形成的存储器单元阵列。给定位线可耦合到多个存储器串,如串753。在一个实施例中,存储器单元分组为可进一步划分成子块的块,其中如字线752的给定字线跨多个子块754a、754b、754c、754d共享,例如其中每一子块对应于不同的存储器串。在另一实施例中,每一子块对应于不同位线。在另一实施例中,每一子块对应于CAM块252中的单独平面。与子块内的字线相关联的存储器单元的群组被称为物理页。子块中的一个中的每一物理页可包含多个页类型。举例来说,由单层级单元(SLC)形成的物理页具有被称为下部逻辑页(LP)的单个页类型。多层级单元(MLC)物理页类型可包含LP和上部逻辑页(UP),TLC物理页类型为LP、UP和额外逻辑页(XP),且QLC物理页类型为LP、UP、XP和顶部逻辑页(TP)。举例来说,由QLC存储器类型的存储器单元形成的物理页可具有总共四个逻辑页,其中每一逻辑页可存储不同于存储在与所述物理页相关联的其它逻辑页中的数据的数据。
取决于所使用的编程方案,存储器单元的每一逻辑页可在单独的编程遍次中进行编程,或者多个逻辑页可以一起进行编程。举例来说,在QLC物理页中,LP可在一个遍次上进行编程,且UP、XP和TP可在第二遍次上进行编程。其它编程方案是可能的。页缓冲器(例如,740、742)用于临时存储从存储器装置130的CAM块252读取或写入到所述CAM块的数据,且可包含高速缓存寄存器、一或多个数据寄存器以及任何数目个额外锁存器。举例来说,页缓冲器740包含锁存器746的集合,且页缓冲器742包含锁存器747的集合。
取决于实施例,CAM块252内的所存储关键字的多个冗余副本的位置可不同。举例来说,在一个实施例中,所述副本可存储在CAM中的任何位置(例如,存储在不同块上)。在其它实施例中,副本可存储在不同子块中,例如子块754a-754d。在一个实施例中,其上存储所存储关键字的多个冗余副本的子块754a-754d各自与单个共同页缓冲器(如页缓冲器740)相关联。在另一实施例中,其上存储所存储关键字的多个冗余副本的子块754a-754d中的两个或更多个(例如,子块754a-754d中的每一个)各自与不同相应页缓冲器(如页缓冲器740和742)相关联。在又一实施例中,所存储关键字的多个冗余副本可彼此邻近地存储在同一子块(如子块754a)中。
再次参考图6,在操作620处,识别所存储搜索关键字。举例来说,处理逻辑可识别所存储搜索关键字(如来自所存储搜索关键字352)的多个冗余副本,其与输入搜索关键字305匹配。在一个实施例中,处理逻辑可通过从页缓冲器(如CAM块252的一或多个页缓冲器640和642)读取数据来确定所存储搜索关键字352中的任一个是否与输入搜索关键字305匹配。如果输入搜索关键字305与存储在CAM块252中的多个冗余副本中的一个匹配,那么搜索模式的输入使得其上存储匹配的所存储关键字的串变得导电。由于被匹配线被预充电,因此导电串允许匹配线放电。也就是说,串基于与连接到匹配线的串上的所存储搜索关键字匹配的输入搜索关键字305传导由匹配线放电产生的信号。导电串将信号提供到连接在串的另一端处的页缓冲器。页缓冲器响应于由于匹配线放电而提供的信号而锁存数据(例如,锁存到锁存器646或647中)。经锁存数据指示连接到页缓冲器的匹配线存储与输入搜索关键字305相同的数据条目。
在操作625处,确定对应值位置。来自多个所存储搜索关键字352的多个冗余副本各自具有在CAM块252中的相关联的相应匹配位置312。在一个实施例中,处理逻辑可基于从页缓冲器读取的数据而确定相应匹配位置。举例来说,匹配位置312可包含对应于CAM块252的阵列内的一或多个串的一或多个存储器地址。在一个实施例中,处理逻辑可使用相关联的匹配位置312来确定值数据块254中的对应值位置324。在一个实施例中,处理逻辑利用包括多个条目322的查找表118。多个条目322中的每一条目使来自CAM块252的匹配位置(例如,匹配位置312)与值数据块254中的值位置(例如,值位置324)相关联,在所述值位置中存储有表示对应于来自CAM块252的相应所存储搜索关键字的值(例如,值330)的数据。取决于实施例,查找表118可保存在存储器装置130的NAND型快闪存储器中或存储器子***110中的其它位置(例如,本地存储器119中)的动态随机存取存储器(DRAM)中。在一个实施例中,为了确定值数据块254中的对应值位置324,处理逻辑可识别查找表118中的多个条目322中对应于相关联的匹配位置312的条目,且将相关联的匹配位置312与对应值位置324相关联。在一个实施例中,值数据块254中的值位置324中的一个包含第一时间戳和表示与输入搜索关键字相关联的值的数据。值数据块254中的值位置324的其余部分(即,与CAM块252中的所存储搜索关键字的多个冗余副本中的一个的匹配位置312相关联的那些值位置)包含一或多个额外时间戳。
在操作630处,执行比较。举例来说,处理逻辑可从值数据块254中的值位置324中的每一个读取时间戳,且将其彼此比较以确定时间戳是否匹配(即,指示相同时间/日期/计数器值)。处理逻辑可确定所有时间戳是否都匹配。举例来说,如果在CAM块252中存在所存储搜索关键字的三个冗余副本,那么每一关键字可指向值数据块254中的不同位置,从而导致三个时间戳被比较。
如果在操作630处确定所有时间戳匹配,那么在操作635处,检索表示值的数据。举例来说,处理逻辑可从值数据块254中的值位置324中的一个检索表示与输入搜索关键字305相关联的所存储值354(即,值330)中的一个的数据。
在操作640处,将数据提供到请求方。举例来说,处理逻辑可将表示与输入搜索关键字305相关联的值330的数据提供到主机***(例如,主机***120)。在另一实施例中,处理逻辑可向主机***提供一些其它数据,如对应于值位置324的地址或移位。在此实施例中,可执行辅助存取(例如,前缀搜索)以从值位置324检索值330。
如果在操作630处确定所有时间戳不匹配,那么在操作645处,处理逻辑可确定时间戳的子集是否匹配。举例来说,如果存在三个时间戳且三个时间戳中的两个匹配,那么处理逻辑可确定时间戳的子集匹配。
如果在操作645处确定时间戳的子集匹配,那么可检索表示值的数据且将所述数据提供至请求方,如操作635和640处所指示,且在操作650处,可执行刷新操作。举例来说,处理逻辑可对CAM块252执行刷新操作。在一个实施例中,为了执行刷新操作,处理逻辑可使得从CAM块252读取所有数据(即,所存储搜索关键字352)(例如,使用经修改的SLC读取操作),使用读取偏移、软数据和错误校正码(例如,LDPC)来校正每一页,且将数据写入到新CAM块。取决于实施例,可在检索和提供值之前、之后或同时(即,在时间上至少部分地重叠)执行刷新操作。
如果在操作645处确定时间戳的子集不匹配(即,时间戳都不匹配),那么在操作655处,执行错误恢复操作。举例来说,处理逻辑可对CAM块252执行错误恢复操作。在一个实施例中,为了执行错误恢复操作,处理逻辑可使用不同高电压和低电压执行多个重新读取操作。举例来说,处理逻辑可使得使用默认低电压执行来自CAM块252的数据的第一重新读取,使用较低低电压执行第二重新读取,使用较高低电压执行第三重新读取,使用具有较高高电压的默认低电压执行第四重新读取,使用较低低电压和较高高电压执行第五重新读取,以及使用较高低电压和较高高电压执行第六重新读取。处理逻辑接着可使得从CAM块252读取所有数据(即,所存储搜索关键字352)(例如,使用经修改的SLC读取操作),使用读取偏移、软数据和错误校正码(例如,LDPC)来校正每一页,且将数据写入到新CAM块。
图8说明计算机***800的实例机器,在所述实例机器内可执行用于使得所述机器执行本文中所论述的方法中的任何一或多个的指令的集合。在一些实施例中,计算机***800可对应于主机***(例如,图1的主机***120),所述主机***包含、耦合到或利用存储器子***(例如,图1的存储器子***110),或可用于执行控制器的操作(例如,以执行操作***,从而执行对应于图1的搜索组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云端计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中进行操作。
所述机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够(依序或以其它方式)执行指定待由所述机器采取的动作的指令集的任何机器。另外,虽然说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述集合单独地或共同地执行指令的集合(或多个集合)以执行本文中所论述的方法中的任何一或多种。
实例计算机***800包含处理装置802、主存储器804(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),如同步DRAM(SDRAM)或Rambus DRAM(RDRAM)等)、静态存储器806(例如,快闪存储器、静态随机存取存储器(SRAM)等)以及数据存储***818,它们经由总线830彼此通信。
处理装置802表示一或多个通用处理装置,如微处理器、中央处理单元等。更特定来说,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置802还可为一或多个专用处理装置,如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置802配置成执行指令826以用于执行本文中所论述的操作和步骤。计算机***800可进一步包含用以经由网络820通信的网络接口装置808。
数据存储***818可包含机器可读存储媒体824(也称为计算机可读媒体,如非暂时性计算机可读媒体),其上存储有一或多个指令集826或体现本文中所描述的方法或功能中的任何一或多种的软件。指令826还可在其由计算机***800执行期间全部或至少部分地驻存在主存储器804内和/或处理装置802内,主存储器804和处理装置802也构成机器可读存储媒体。机器可读存储媒体824、数据存储***818和/或主存储器804可对应于图1的存储器子***110。
在一个实施例中,指令826包含用以实施对应于图1的搜索组件113的功能性的指令。虽然在实例实施例中将机器可读存储媒体824展示为单个媒体,但应认为术语“机器可读存储媒体”包含存储一或多个指令集的单个媒体或多个媒体。还应认为术语“机器可读存储媒体”包含能够存储或编码供机器执行的指令集且使得机器执行本公开的方法中的任何一或多种的任何媒体。因此应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。
已依据对计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述及表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给本领域其它技术人员的方式。算法在这里且通常认为是引起所需结果的操作的自洽序列。所述操作为需要对物理量进行物理操控的操作。这些量通常但未必呈能够被存储、组合、比较和以其它方式操控的电或磁信号的形式。有时,主要出于通用的原因,已证明将这些信号称为位、值、元件、符号、字符、术语、数字等是方便的。
然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅仅是应用于这些量的方便标签。本公开可指将计算机***的寄存器和存储器内的表示为物理(电子)数量的数据操控和变换为计算机***存储器或寄存器或其它此类信息存储***内的类似地表示为物理数量的其它数据的计算机***或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可出于预期目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、CD-ROM和磁性光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机***总线。
本文中所呈现的算法和显示本质上不与任何特定计算机或其它设备相关。各种通用***可与根据本文中的教示的程序一起使用,或其可证明构造用以执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样来呈现多种这些***的结构。另外,不参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机***(或其它电子装置)以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,本公开的实施例已参考其具体实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中阐述的本公开的实施例的更广泛精神和范围的情况下对本公开进行各种修改。因此,说明书和图式应在说明性意义上而非限制性意义上看待。
Claims (20)
1.一种***,其包括:
存储器装置,其包括值数据块和存储多个所存储搜索关键字的内容可寻址存储器CAM块;和
处理装置,其以操作方式与所述存储器装置耦合,以执行包括以下的操作:
接收输入搜索关键字;
从所述CAM块中的所述多个所存储搜索关键字识别所存储搜索关键字的与所述输入搜索关键字匹配的多个冗余副本;
确定所述值数据块中的多个位置,所述多个位置对应于所述多个冗余副本,其中所述多个位置中的一个包括第一时间戳和表示与所述输入搜索关键字相关联的值的数据,且其中所述多个位置中的其余部分包括一或多个额外时间戳;
确定所述第一时间戳是否匹配所述一或多个额外时间戳;及
响应于所述第一时间戳匹配所述一或多个额外时间戳,从所述多个位置中的所述一个检索表示与所述输入搜索关键字相关联的所述值的所述数据。
2.根据权利要求1所述的***,其中所述处理装置将执行进一步包括以下的操作:
响应于所述第一时间戳仅匹配所述一或多个额外时间戳的子集,从所述多个位置中的所述一个检索表示与所述输入搜索关键字相关联的所述值的所述数据且对所述CAM块执行刷新操作。
3.根据权利要求1所述的***,其中所述处理装置将执行进一步包括以下的操作:
响应于所述第一时间戳不匹配所述一或多个额外时间戳中的任一个,对所述CAM块执行错误恢复操作。
4.根据权利要求1所述的***,其中所述CAM块包括组织成多个串的存储器单元阵列,每一串存储所述多个所存储搜索关键字中的一个且包括串联连接于预充电匹配线与页缓冲器之间的多个存储器单元,其中所述多个存储器单元中的每一个连接到多个搜索线中的一个。
5.根据权利要求4所述的***,其中所述输入搜索关键字包括第一位序列,且其中所述处理装置将执行进一步包括以下的操作:
基于所述第一位序列而生成搜索模式,所述搜索模式包括表示所述第一位序列的第一电压信号集合和表示包括所述第一位序列的逆的第二位序列的第二电压信号集合。
6.根据权利要求5所述的***,其中所述处理装置将执行进一步包括以下的操作:
提供所述搜索模式作为所述CAM块的所述多个搜索线的输入,其中所述搜索模式使得所述多个串中存储所述多个所存储搜索关键字中匹配所述输入搜索关键字的所述一个所存储搜索关键字的至少一个串导电且响应于所述输入搜索关键字匹配存储在所述至少一个串上的所述多个所存储搜索关键字中的所述一个而将信号提供到页缓冲器,所述信号是由所述预充电匹配线放电产生的,且所述页缓冲器基于所述信号而存储数据。
7.根据权利要求1所述的***,其中所述存储器装置包括与非NAND型快闪存储器装置,其中所述所存储搜索关键字的所述多个冗余副本中的每一个具有所述CAM块中的相关联的相应匹配位置,且其中所述CAM块中的所述相关联的相应匹配位置包括所述NAND型快闪存储器装置上的相应串的存储器地址。
8.根据权利要求7所述的***,其进一步包括:
查找表,其包括多个条目,其中所述多个条目中的每一条目使来自所述CAM块的所述相关联的相应匹配位置与所述值数据块中的值位置相关联,在所述值数据块中存储有表示对应于来自所述CAM块的所述所存储搜索关键字的所述多个冗余副本的所述值的数据。
9.根据权利要求8所述的***,其中确定所述值数据块中的所述多个位置包括识别所述查找表中对应于所述相关联的相应匹配位置的条目。
10.一种方法,其包括:
接收输入搜索关键字;
从存储器装置的CAM块中的所述多个所存储搜索关键字识别所存储搜索关键字的与所述输入搜索关键字匹配的多个冗余副本;
确定值数据块中的多个位置,所述多个位置对应于所述多个冗余副本,其中所述多个位置中的一个包括第一时间戳和表示与所述输入搜索关键字相关联的值的数据,且其中所述多个位置中的其余部分包括一或多个额外时间戳;
确定所述第一时间戳是否匹配所述一或多个额外时间戳;及
响应于所述第一时间戳匹配所述一或多个额外时间戳,从所述多个位置中的所述一个检索表示与所述输入搜索关键字相关联的所述值的所述数据。
11.根据权利要求10所述的方法,其进一步包括:
响应于所述第一时间戳仅匹配所述一或多个额外时间戳的子集,从所述多个位置中的所述一个检索表示与所述输入搜索关键字相关联的所述值的所述数据且对所述CAM块执行刷新操作。
12.根据权利要求10所述的方法,其进一步包括:
响应于所述第一时间戳不匹配所述一或多个额外时间戳中的任一个,对所述CAM块执行错误恢复操作。
13.根据权利要求10所述的方法,其中所述存储器装置包括与非NAND型快闪存储器装置,其中所述所存储搜索关键字的所述多个冗余副本中的每一个具有所述CAM块中的相关联的相应匹配位置,且其中所述CAM块中的所述相关联的相应匹配位置包括所述NAND型快闪存储器装置上的相应串的存储器地址。
14.根据权利要求13所述的方法,其中确定所述值数据块中的所述多个位置包括识别查找表中对应于所述相关联的相应匹配位置的条目,其中查找表包括多个条目,且其中所述多个条目中的每一条目使来自所述CAM块的所述相关联的相应匹配位置与所述值数据块中的值位置相关联,在所述值数据块中存储有表示对应于来自所述CAM块的所述所存储搜索关键字的所述多个冗余副本的所述值的数据。
15.一种非暂时性机器可读存储媒体,其存储指令,所述指令在由处理装置执行时使得所述处理装置执行包括以下的操作:
接收输入搜索关键字;
从存储器装置的CAM块中的所述多个所存储搜索关键字识别所存储搜索关键字的与所述输入搜索关键字匹配的多个冗余副本;
确定值数据块中的多个位置,所述多个位置对应于所述多个冗余副本,其中所述多个位置中的一个包括第一时间戳和表示与所述输入搜索关键字相关联的值的数据,且其中所述多个位置中的其余部分包括一或多个额外时间戳;
确定所述第一时间戳是否匹配所述一或多个额外时间戳;及
响应于所述第一时间戳匹配所述一或多个额外时间戳,从所述多个位置中的所述一个检索表示与所述输入搜索关键字相关联的所述值的所述数据。
16.根据权利要求15所述的非暂时性机器可读存储媒体,其中所述指令使得所述处理装置执行进一步包括以下的操作:
响应于所述第一时间戳仅匹配所述一或多个额外时间戳的子集,从所述多个位置中的所述一个检索表示与所述输入搜索关键字相关联的所述值的所述数据且对所述CAM块执行刷新操作。
17.根据权利要求15所述的非暂时性机器可读存储媒体,其中所述指令使得所述处理装置执行进一步包括以下的操作:
响应于所述第一时间戳不匹配所述一或多个额外时间戳中的任一个,对所述CAM块执行错误恢复操作。
18.根据权利要求15所述的非暂时性机器可读存储媒体,其中所述存储器装置包括与非NAND型快闪存储器装置,其中所述所存储搜索关键字的所述多个冗余副本中的每一个具有所述CAM块中的相关联的相应匹配位置,且其中所述CAM块中的所述相关联的相应匹配位置包括所述NAND型快闪存储器装置上的相应串的存储器地址。
19.根据权利要求18所述的非暂时性机器可读存储媒体,其中确定所述值数据块中的所述多个位置包括识别查找表中对应于所述相关联的相应匹配位置的条目。
20.根据权利要求19所述的非暂时性机器可读存储媒体,其中所述查找表包括多个条目,且其中所述多个条目中的每一条目使来自所述CAM块的所述相关联的相应匹配位置与所述值数据块中的值位置相关联,在所述值数据块中存储有表示对应于来自所述CAM块的所述所存储搜索关键字的所述多个冗余副本的所述值的数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163201914P | 2021-05-18 | 2021-05-18 | |
US63/201,914 | 2021-05-18 | ||
US17/729,989 US11955175B2 (en) | 2021-05-18 | 2022-04-26 | Copy redundancy in a key-value data storage system using content addressable memory |
US17/729,989 | 2022-04-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373891A true CN115373891A (zh) | 2022-11-22 |
Family
ID=84060594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210547900.2A Pending CN115373891A (zh) | 2021-05-18 | 2022-05-18 | 在使用内容可寻址存储器的关键值数据存储***中复制冗余 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11955175B2 (zh) |
CN (1) | CN115373891A (zh) |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7643353B1 (en) * | 2007-10-25 | 2010-01-05 | Netlogic Microsystems, Inc. | Content addressable memory having programmable interconnect structure |
US8169808B2 (en) | 2008-01-25 | 2012-05-01 | Micron Technology, Inc. | NAND flash content addressable memory |
US7848129B1 (en) * | 2008-11-20 | 2010-12-07 | Netlogic Microsystems, Inc. | Dynamically partitioned CAM array |
US8402226B1 (en) | 2010-06-18 | 2013-03-19 | Emc Corporation | Rate proportional cache write-back in a storage server |
JP2013030254A (ja) | 2011-07-29 | 2013-02-07 | Toshiba Corp | 半導体記憶装置、情報処理装置 |
US9158706B2 (en) | 2011-10-31 | 2015-10-13 | International Business Machines Corporation | Selective space reclamation of data storage memory employing heat and relocation metrics |
US8913412B1 (en) | 2011-11-29 | 2014-12-16 | Netlogic Microsystems, Inc. | Incremental adaptive match line charging with calibration |
US9269411B2 (en) | 2012-03-14 | 2016-02-23 | Broadcom Corporation | Organizing data in a hybrid memory for search operations |
US9116796B2 (en) | 2012-11-09 | 2015-08-25 | Sandisk Technologies Inc. | Key-value addressed storage drive using NAND flash based content addressable memory |
US20150039823A1 (en) * | 2013-07-30 | 2015-02-05 | Mediatek Inc. | Table lookup apparatus using content-addressable memory based device and related table lookup method thereof |
US10586594B2 (en) * | 2015-09-04 | 2020-03-10 | Hewlett Packard Enterprise Development Lp | Data tables in content addressable memory |
KR102611851B1 (ko) | 2016-12-29 | 2023-12-11 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 이의 동작 방법 |
US10930350B2 (en) | 2018-12-20 | 2021-02-23 | SK Hynix Inc. | Memory device for updating micro-code, memory system including the memory device, and method for operating the memory device |
US20220359011A1 (en) * | 2021-05-04 | 2022-11-10 | Micron Technology, Inc. | Redundancy and majority voting in a key-value data storage system using content addressable memory |
-
2022
- 2022-04-26 US US17/729,989 patent/US11955175B2/en active Active
- 2022-05-18 CN CN202210547900.2A patent/CN115373891A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11955175B2 (en) | 2024-04-09 |
US20220375522A1 (en) | 2022-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11664072B2 (en) | Architecture for ternary content-addressable memory search | |
US11756619B2 (en) | Key storage for sorted string tables using content addressable memory | |
US11756621B2 (en) | Architecture for fast content addressable memory search | |
US20220359011A1 (en) | Redundancy and majority voting in a key-value data storage system using content addressable memory | |
US12019780B2 (en) | Memory device data security based on content-addressable memory architecture | |
US12001716B2 (en) | Key-value data storage system using content addressable memory | |
US20220359033A1 (en) | Health scan for content addressable memory | |
US20240176547A1 (en) | Access tracking in memory | |
US11636044B2 (en) | Logical-to-physical mapping | |
US11955175B2 (en) | Copy redundancy in a key-value data storage system using content addressable memory | |
US20220357876A1 (en) | Programming content addressable memory | |
US11960754B2 (en) | Memory sub-system memory bank search component | |
US11853605B2 (en) | Database persistence | |
US20230229340A1 (en) | Performing memory access operations based on quad-level cell to single-level cell mapping table | |
US20230393981A1 (en) | Lbat bulk update |
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 |