键-值存储设备及其操作方法与流程

文档序号:18564699发布日期:2019-08-30 23:54阅读:241来源:国知局
键-值存储设备及其操作方法与流程

本申请要求于2018年2月22日在韩国知识产权局提交的韩国专利申请第10-2018-0021039号的优先权,其公开内容通过引用整体并入本文。

本公开的发明构思的示例实施例涉及存储设备和/或其操作方法。例如,至少一些示例实施例涉及键-值存储设备及其操作方法。



背景技术:

存储数据并基于所存储的数据进行操作的各种电子设备正在被使用。这些电子设备可以包括用于存储数据的存储设备或存储系统。或者,这些电子设备可以在与外部存储设备或存储系统通信的同时存储或读取数据。存储设备或系统可以分为基于非易失性存储器的存储和基于易失性存储器的存储。基于非易失性存储器的存储不论电源如何都可以存储数据。

存储设备或系统可以分为基于块的存储和基于对象或键-值的存储。基于块的存储可以基于物理位置来管理数据,基于对象或键-值的存储可以基于唯一标识符或键来管理数据。在诸如视频和图像的非结构化数据的量很大的情况下,键-值存储可以是有效的。

现今,随着非结构化数据的使用增多,有效管理非结构化数据的需求也可能增加。此外,需要在基于键-值的存储设备或系统中有效地执行各种操作,这有利于管理非结构化数据。



技术实现要素:

本发明构思的示例实施例提供了键-值存储设备和/或其操作方法,该键-值存储设备可保证擦除操作的效率并减少等待时间。

根据示例实施例,键-值存储设备包括:非易失性存储器设备,被配置为存储值、键和键寿命数据,键标识值,键寿命数据基于值的擦除操作而变化;存储器控制器,被配置为:从主机接收指示擦除与键相对应的值的擦除命令,响应于擦除命令生成哈希数据使得哈希数据的大小小于键的大小,向主机发送完成消息,基于哈希数据访问存储在非易失性存储器设备中的键和键寿命数据,以及在发送完成消息之后的空闲时间段内基于键和键寿命数据擦除值。

根据示例实施例,键-值存储设备包括:非易失性存储器设备,被配置为存储值和键,键标识值;存储器控制器,被配置为将键寿命数据添加到元数据,该键寿命数据基于存储在与键相对应的存储器区域中的数据的写入操作来生成,并且被配置为向非易失性存储器设备写入值、键和添加了键寿命数据的元数据。

根据示例实施例,键-值存储设备的操作方法包括:从主机接收值和键,键标识该值;生成键寿命数据使得键寿命数据响应于值的擦除操作而变化;将所述值、键和键寿命数据写入非易失性存储器设备中;响应于从主机接收的擦除命令从非易失性存储器设备读取键和键寿命数据;以及基于键和键寿命数据擦除值。

附图说明

通过参考附图详细描述本发明构思的一些示例实施例,本发明构思的上述以及其他目的和特征将变得显而易见。

图1是根据本发明构思的示例实施例的电子系统的框图。

图2是用于描述图1的电子系统中的擦除操作的流程图。

图3是示出图1和图2的键-值数据的格式的图。

图4是示出图1的存储器控制器执行键-值数据的写入操作的示例配置的框图。

图5是示出图1的存储器控制器执行键-值数据的擦除操作的示例配置的框图。

图6是示出图5的擦除信息数据的格式的图。

图7是用于描述图1的电子系统中的写入操作的流程图。

图8是用于描述图1的电子系统中的擦除操作的流程图。

图9是示出图8的操作s360的流程图。

图10是用于描述在键-值存储设备的擦除操作完成之前接收到写入命令的情况下的写入过程的流程图。

图11是示出图3的非易失性存储器设备的框图。

具体实施方式

下面,将参照附图对本发明构思的一些示例实施例进行清楚且详细地描述,以使本领域的普通技术人员能够实现这些示例实施例。

图1是根据本发明构思的示例实施例的电子系统的框图。

参照图1,电子系统100包括主机110和键-值(key-value)存储设备120。主机110和键-值存储设备120可以在彼此通信的同时存储和管理数据。图1示出了彼此通信的主机110和单个键-值存储设备120。然而,本发明构思不限于此。例如,多个主机和多个键-值存储设备可以直接或者经由中间设备彼此通信。电子系统100可以是但不限于诸如个人计算机、笔记本、移动电话、个人数字助理(personaldigitalassistant,pda)或相机的电子设备。

主机110可以根据从用户接收的命令执行用于运行应用的各种操作。为此,主机110可以包括多个应用模块。为了执行各种操作,主机110可以包括专用逻辑电路,诸如现场可编程门阵列(fieldprogrammablegatearray,fpga)或专用集成芯片(applicationspecificintegratedchips,asic)。主机110可以请求键-值存储设备120执行各种操作。

主机110可以生成键-值数据。为了将数据存储在键-值存储设备120中,主机110可以向键-值存储设备120输出键-值数据。键-值数据可以包括键、值和元数据。值可以对应于要存储在键-值存储设备120中的数据。键可以是要参考的数据以标识值。元数据可以包括关于键和值的信息。例如,元数据可以包括键的大小、值的大小等,这将在后面描述。

主机110可以包括用于与键-值存储设备120接合的存储接口112。可以通过存储接口112将键-值数据提供给键-值存储设备120。与基于块的电子系统不同,在基于键-值的电子系统100中,存储接口112可以不将键转换为逻辑块地址。电子系统100可以通过使用键-值数据本身来执行与键-值存储设备120相关联的各种操作。因此,图1的电子系统100可以减少由于将键转换为逻辑块地址所引起的开销。然而,与块地址相比,在主机110中生成的键需要相对较大的存储空间,因此稍后将对键-值存储设备120的结构进行描述,该结构可用于克服存储空间的局限性。

键-值存储设备120可以包括存储器控制器121和存储器125。

存储器控制器121可以响应于主机110的请求来管理和控制存储器125的操作。存储器控制器121可以包括专用逻辑电路(例如,fpga或asic),其执行用于管理和控制存储器125的操作的算术操作或逻辑操作。为了执行各种操作,存储器控制器121可以从主机110接收各种命令和数据。例如,为了执行存储器125的写入操作,存储器控制器121可以从主机110接收写入命令和键-值数据。例如,为了执行存储器125的擦除操作,存储器控制器121可以从主机110接收擦除命令和键-值数据。

存储器控制器121可以包括哈希模块122、报头管理模块123和易失性存储器124。

哈希模块122可以对从主机110接收的键执行哈希操作。作为哈希操作的结果,哈希模块122可以生成哈希数据。哈希操作可以表示将特定数据的大小变得更小。也就是说,可以采用哈希模块122来减少键的长度。在从主机110接收的键的长度较长的情况下,需要较大的存储器区域来存储键。哈希模块122通过哈希操作生成哈希数据,哈希数据的大小小于键的大小。键-值存储设备120可以基于哈希数据写入、擦除或读取数据。在这种情况下,可以缩短由于键-值存储设备120的各种操作所引起的等待时间。

报头管理模块123可以管理元数据。报头管理模块123可以更改或转换从主机110接收的元数据。由报头管理模块123所更改或转换的元数据可以存储在存储器125中。

报头管理模块123可以将键寿命数据(keyagedata)添加到元数据。在键-值存储设备120的写入操作中,存储器控制器121可以在将键寿命数据添加到元数据之后,将元数据与键和值一起存储在存储器125中。键寿命数据可用以参考以确定存储器区域中的数据是否实际已被擦除或未被擦除。键寿命数据可被提供以确保与存储在存储器125中的数据的擦除操作相关联的稳定性。可以基于值的写入操作来生成或更改键寿命数据。可以基于值的擦除操作来更改键寿命数据。然而,本发明构思不限于此。例如,可以以各种方案生成和更改键寿命数据。例如,可以基于写入或擦除值的次数来生成或更改键寿命数据。

具体地,在存储器控制器121从主机110接收擦除命令的情况下,存储器控制器121可以在存储在存储器125中的数据实际被擦除之前,向主机110发送完成消息。在这种情况下,在发送完成消息之后突然断电的情况下,存储在存储器125中的数据的一部分可能实际未被擦除。报头管理模块123可以生成键寿命数据,并且在执行擦除操作时可以更改与键-值数据相对应的键寿命数据的数据值。因此,可以标识出数据已被擦除的存储器区域。

易失性存储器124可以被配置为存储在存储器控制器121的管理和控制操作中生成的各种已处理或结果数据。例如,易失性存储器124可以存储从主机110接收的操作命令、根据哈希操作生成的哈希数据、以及为执行存储器125的写入、擦除或读取操作而生成的数据。易失性存储器124可以是但不限于动态随机存取存储器(dynamicrandomaccessmemory,dram)或同步dram(synchronousdram,sdram)。图1所示的易失性存储器124布置在存储器控制器121内部。然而,本发明构思不限于此。例如,易失性存储器124可以布置在存储器控制器121外部。

为了执行键-值存储设备120的各种操作(例如,写入操作、擦除操作或读取操作),存储器控制器121可以生成映射信息。存储器控制器121可以使用闪存转换层(未示出)来获得存储器125的物理地址。例如,加载到易失性存储器124上并由存储器控制器121所驱动的闪存转换层(未示出)可以基于哈希数据获得物理地址(例如,值地址)。

存储器控制器121可以管理映射信息。存储器控制器121可以以映射表tab1的形式管理映射信息。然而,本发明构思不限于此。例如,存储器控制器121可以以各种方案管理映射信息。参照映射表tab1,映射信息可以是关于哈希数据与值地址之间的对应关系的信息,其中哈希数据基于键来生成。映射信息可以指示存储器125的地址,其中存储与哈希数据相对应的值。存储器控制器121可以基于映射信息,执行对存储器125中存储的键-值数据的访问。

存储器125可以包括存储键-值数据的多个非易失性存储器设备125_1至125_n。多个非易失性存储器设备125_1至125_n可以是但不限于nand闪存。根据键的大小,将所有键存储在诸如dram的易失性存储器中存在局限性,因此可以将键-值数据以键-值对的形式存储在存储器125中。

存储器125可以在存储器控制器121的控制或管理下,执行从主机110请求的各种操作。例如,可以将从主机110提供的数据存储在存储器125中、可以将存储器125中的数据擦除、或者可以从存储器125读取数据。多个非易失性存储器设备125_1至125_n中的每一个可以包括存储器单元阵列,其中存储单元阵列包括多个存储器块。多个存储器块中的每一个可以包括多个页(page)。可以向每个页写入数据或从每个页读取数据,并且可以将每个存储器块中的数据擦除。

图2是用于描述图1的电子系统中的擦除操作的流程图。可以在图1的电子系统100中包括的主机110、存储器控制器121和存储器125中执行图2的擦除操作。为了便于描述,将参照图1的附图标记描述图2。

参照图1和图2,在操作s110中,主机110可以向存储器控制器121提供擦除命令。擦除命令可以是指示擦除与目标键相对应的目标值的信息。这里,目标键可以是多个不同键中的键,其包括在以擦除操作为目标的键-值数据中。目标值可以表示多个不同值中的值,其以擦除操作为目标。主机110可以将目标键提供给存储器控制器121。由于主机110不需要执行从目标键到逻辑块地址的转换,因此主机110的开销可以减少。

在操作s120中,存储器控制器121可以执行哈希映射操作。可以基于由存储器控制器121管理的映射信息来执行哈希映射操作。为了执行哈希映射操作,存储器控制器121可以对接收到的目标键执行哈希操作。哈希操作可以由哈希模块122执行,并且作为哈希操作的结果,可以生成目标哈希数据。存储器控制器121可以基于映射信息提取存储器区域的地址,其中存储有与目标哈希数据相对应的值。

在操作s130中,存储器控制器121可以对存储器125执行与键或键-值数据相关联的读取操作。由哈希映射操作提取的地址可能不同于存储目标值的存储器区域的地址。由于在执行哈希操作的过程中生成大小小于键的大小的哈希数据,因此通过哈希操作可能会将不同的键转换为相同的哈希数据。也就是说,可能访问到其中存储的键具有与主机110实际提供的目标键不同的值的存储器区域。因此,存储器控制器121可以通过从存储器125请求读取操作来检测实际存储目标值的位置。

在操作s130中,存储器控制器121还可以读取与键相对应的元数据。存储器控制器121可以读取元数据中包括的键寿命数据。报头管理模块123可以确定要更改的目标键寿命数据的数据值,并且可以检测与目标键寿命数据相同的键寿命数据。

在操作s140中,存储器控制器121可以响应于擦除命令向主机110提供完成消息。基于该完成消息,主机110可以识别出键-值存储设备120的擦除操作已完成。在操作s140之后,可以进行空闲时间,并且可以在该段空闲时间内擦除存储器125中存储的目标值。在这种情况下,无论目标值的大小如何,都可以均匀地保持由擦除操作所引起的等待时间。

在操作s150中,存储器控制器121可以对存储器125执行擦除操作。存储器控制器121可以控制存储器125,使得基于在操作s130中读取的键的结果指定的目标值的位置来擦除数据。此外,存储器控制器121可以控制存储器125,使得基于目标键寿命数据来擦除数据。

图3是示出图1和图2的键-值数据的格式的图。

参照图1和图3,图3的键-值数据可以被理解为存储在图1的存储器125中的键-值数据。例如,在键-值数据的写入操作中,存储器控制器121可以将键寿命数据添加到键-值数据,并且可以将添加了键寿命数据的键-值数据存储在存储器125中。也就是说,存储在存储器125中的键-值数据可以不同于从主机110提供的键-值数据。为了便于描述,将参照图1的附图标记描述图3。

键-值数据包括元数据、键(键数据)和值(值数据)。如上所述,值可以对应于要存储在键-值存储设备120中的一种写入数据,键可以是要参考的数据以标识值。元数据包括键大小数据、值大小数据和键寿命数据。

键大小数据包括关于键的大小的信息。键可以包括字符串,该字符串包括一个或多个数字、比特值或字符或其组合。键大小数据包括关于字符串的长度的信息。当从键-值数据检测键时,可以使用键大小数据。键大小数据可以包括在从主机110提供的键-值数据中,但是本发明构思不限于此。

值大小数据包括关于值的大小的信息。值可以包括字符串,该字符串包括一个或多个数字、比特值或字符或其组合。值大小数据包括关于字符串的长度的信息。当从键-值数据检测值时,可以使用值大小数据。值大小数据可以被包括在从主机110提供的键-值数据中,但是本发明构思不限于此。

键大小数据或值大小数据可以用于比较存储器125的页大小与键-值存储设备120的写入、读取或擦除操作中的键-值数据的大小。例如,在键-值存储设备120的写入操作中,在值的大小大于基准大小的情况下,可以将键-值数据划分然后将其写入多个页。这里,基准大小可以是与值相对应的大小,其通过从页大小中减去元数据的大小而获得。此外,可以基于键大小数据和值大小数据来检测存储键-值数据的存储器区域,并且可以基于检测到的存储器区域来执行读取或擦除操作。

可以基于值的写入操作来生成键寿命数据。此时,可以分配与键相对应的存储器区域。在这种情况下,与存在值的存储器区域相对应的键寿命数据的数据值和与不存在值的存储器区域相对应的键寿命数据的数据值可以不同。然而,在另外附加与键相对应的值的情况下,可以更改与另外附加的值相对应的键寿命数据的数据值。

可以基于值的写入操作或擦除操作来更改键寿命数据。在示例实施例中,可以基于写入或擦除值的次数来确定键寿命数据的数据值,但是本发明构思不限于此。当与键寿命数据相对应的值被擦除时,可以更改键寿命数据的数据值。键寿命数据可以由存储器控制器121的报头管理模块123生成,并且可以被添加到从主机110接收的键-值数据的元数据中。

可以基于键寿命数据来确定在擦除操作中值实际是否已被擦除。如参照图2所述,为了减少等待时间,可以在将完成消息发送到主机110之后的空闲时间段内,对存储器125存储中的数据执行实际擦除操作。然而,在突然断电的情况下,存储键-值数据的多个页中的一些页中存储的数据可能未被擦除。可以基于键寿命数据来区分实际已被擦除的页和未被擦除的页。

具体地,在值的大小大于基准大小的情况下,可以将值划分并将其存储在多个页中。可以将基准大小设置为一个页能够存储的值的大小的上限。元数据、键和划分后的值可以存储在多个页中的每一个页中。也就是说,相同的键寿命数据和相同的键可以存储在多个页中的每一个页中。

之后,在擦除操作进行中并且突然断电的情况下,存储在实际已被擦除的页中的键寿命数据和存储在实际未被擦除的页中的键寿命数据可能不同。这是因为键寿命数据随着存储在相应的页中的值被擦除而更改。在这种情况下,实际未被擦除的页中存储的值也可以在通电时被擦除。或者,当在不可以重写的nand闪存中执行写入操作时,可以确定未被擦除的页,并且可以在相应的页中存储的值被擦除之后执行写入操作。

图4是示出图1的存储器控制器执行键-值数据的写入操作的示例配置的框图。图4的配置可以被理解为用于描述存储器控制器1210的写入操作的示例配置,并且图1的存储器控制器121不限于图4的配置。

参照图4,存储器控制器1210可以包括哈希模块1211、报头管理模块1212和操作管理模块1214。为了便于描述,将参照图1的附图标记描述图4。

哈希模块1211基于键“key”生成哈希数据。哈希模块1211对键“key”执行哈希操作以生成哈希数据,哈希数据的大小小于键的大小。哈希数据可以包括在以映射表tab2的形式管理的映射信息中。哈希模块1211的配置和功能可以与图1的哈希模块122基本相同。

存储器控制器1210可以使用固件或软件来实现哈希模块1211。在这种情况下,哈希模块1211可以被加载到图1的易失性存储器124上,并且可以由存储器控制器1210作为固件或软件来驱动。或者,存储器控制器1210可以用硬件实现哈希模块1211。在这种情况下,可以用专用逻辑电路(例如,fpga或asic)来实现哈希模块1211用于生成哈希数据。

报头管理模块1212可以将键寿命数据添加到元数据。报头管理模块1212可以从主机110接收元数据。报头管理模块1212可以包括用于生成键寿命数据的键寿命生成器1213。报头管理模块1212可以向操作管理模块1214提供添加了键寿命数据的元数据。此外,报头管理模块1212可以基于存储值的存储器区域的擦除操作来更改键寿命数据。报头管理模块1212的配置和功能可以与图1的报头管理模块123基本相同。

存储器控制器1210可以通过固件或软件来实现报头管理模块1212。在这种情况下,报头管理模块1212可以被加载到图1的易失性存储器124上,并且可以由存储器控制器1210作为固件或软件来驱动。或者,存储器控制器1210可以用硬件来实现报头管理模块1212。在这种情况下,可以用专用逻辑电路(例如,fpga或asic)来实现报头管理模块1212用于生成或更改键寿命数据。

键寿命生成器1213可以基于对存储器区域执行擦除操作或写入操作的次数来生成键寿命数据,该存储器区域存储与键寿命数据相对应的值。为此,在执行写入操作之前,键寿命生成器1213可以从存储器1250接收与键“key”相对应的键寿命数据。键寿命生成器1213可以基于从存储器1250接收到的键寿命数据生成要添加到元数据的键寿命数据。在存储器区域包括多个页并且存储在多个页中的多条键寿命数据彼此不同的情况下,可以确定存在其数据由于突然断电等而未被擦除的页。在这种情况下,存储器控制器1210可以在控制存储器1250以便擦除存储在其数据未被擦除的页中的值之后,执行键-值数据的写入操作。

操作管理模块1214管理键“key”、值“value”以及添加了键寿命数据的元数据的写入操作。操作管理模块1214可以分配将要存储键-值数据的存储器区域。这里,键-值数据可以包括键、值和键寿命数据。操作管理模块1214可以控制存储器1250,使得键-值数据存储在所分配的存储器区域中。

存储器控制器1210可以通过固件或软件来实现操作管理模块1214。在这种情况下,操作管理模块1214可以被加载到图1的易失性存储器124上,并且可以由存储器控制器1210作为固件或软件来驱动。或者,存储器控制器1210可以用硬件来实现操作管理模块1214。在这种情况下,可以用专用逻辑电路(例如,fpga或asic)来实现操作管理模块1214用于执行键-值数据的写入操作。

操作管理模块1214可以根据值“value”的大小来划分值“value”,并且可以将划分后的值“value”的段存储在存储器1250的多个页中。为此,操作管理模块1214可以包括分配器(未示出)。操作管理模块1214可以比较值“value”的大小和基准大小。为此,操作管理模块1214可以参考元数据中包括的值大小数据和键大小数据。可以将从存储器1250的页大小中减去键的大小和元数据的大小而获得的结果设置为基准大小。在值大小大于基准大小的情况下,操作管理模块1214可以将值“value”划分以生成多个分值。

关于存储键“key”、划分值和键寿命数据的存储器区域的地址的信息可以被包括在以映射表tab2的形式管理的映射信息中。之后,可以在执行诸如擦除操作和读取操作的各种操作时参考映射表tab2。映射表tab2可以存储在图1的易失性存储器124中。

操作管理模块1214可以包括调度器1215,调度器1215用于分配写入键、值和元数据所需的时间。调度器1215可以控制时间以将数据写入存储器1250中。调度器1215可以确定是否存在任何其他处理操作,可以决定优先级,并且可以分配时间来执行写入操作。例如,任何其他处理操作可以包括先前请求的存储器1250的写入、读取或擦除操作。

图5是示出图1的存储器控制器执行键-值数据的擦除操作的示例配置的框图。图5的配置可以被理解为用于描述存储器控制器2210的擦除操作的示例配置,并且图1的存储器控制器121不限于图5的配置。

参照图5,存储器控制器2210可以包括哈希模块2211、操作管理模块2212和报头管理模块2213。为了便于描述,将参照图1的附图标记描述图5。

哈希模块2211从主机110接收键“key”,并基于键“key”生成目标哈希数据。这里,键“key”可以视为与目标值相对应的目标键。哈希模块2211生成哈希数据,哈希数据的大小小于键“key”的大小。哈希模块2211可以对应于图1的哈希模块122或图4的哈希模块1211。

操作管理模块2212管理伴随擦除操作的读取操作。操作管理模块2212可以基于以映射表tab3的形式管理的映射信息,从存储器2250中提取键寿命数据和键,该键具有与键“key”相同的数据值。操作管理模块2212可以从哈希模块2211接收目标哈希数据。操作管理模块2212可以参考映射表tab3中管理的哈希数据,来确定目标为读取操作的存储器区域。

操作管理模块2212可以基于映射表tab3提取哈希数据和值地址,该哈希数据具有与目标哈希数据相同的数据值。这里,值地址可以表示存储与哈希数据相对应的值的存储器区域的地址。然而,如参照图2所述,值地址可以不直接表示存储与键“key”相对应的值的存储器区域的地址。

操作管理模块2212可以接收与值地址相对应的键和键寿命数据。所接收的键和键寿命数据可以包括从多个页提供的多个键和多个键寿命数据。操作管理模块2212可以从多个键中提取具有与从主机110接收的键“key”相同的数据值的键。操作管理模块2212可以提取与所提取的键相对应的键寿命数据。也就是说,在数据的擦除操作中,可以擦除存储器区域中存储的与所提取的键和所提取的键寿命数据相对应的数据。

在读取操作之后,操作管理模块2212可以基于所提取的键和键寿命数据执行擦除操作。操作管理模块2212可以基于与所提取的键相对应的值地址来确定要被擦除的存储器区域。要被擦除的存储器区域可以包括多个页。在这种情况下,操作管理模块2212可以生成擦除信息数据。擦除信息数据可以包括关于要被擦除的页的范围的信息和关于键寿命数据的信息。操作管理模块2212可以基于所生成的擦除信息数据来控制存储器2250,以便擦除存储在多个页中的值或键-值数据。

存储器控制器2210可以通过固件或软件来实现操作管理模块2212。在这种情况下,操作管理模块2212可以被加载到图1的易失性存储器124上,并且可以由存储器控制器2210作为固件或软件来驱动。或者,存储器控制器2210可以用硬件来实现操作管理模块2212。在这种情况下,可以用专用逻辑电路(例如,fpga或asic)来实现操作管理模块2212用于执行对键-值数据的擦除操作和伴随擦除操作的读取操作。

操作管理模块2212可以包括调度器2215,调度器2215用于分配时间(例如,擦除操作时间)以擦除值或键-值数据。调度器2215可以响应于擦除命令,控制时间以擦除存储在存储器2250中的数据。对于擦除操作,调度器2215可以控制读取存储在存储器2250中的键和键寿命数据所需的时间(例如,读取操作时间)。调度器2215可以分配读取操作时间,使得在向图1的主机110发送完成消息之后执行读取操作,但是本发明构思不限于此。在读取键和键寿命数据之后,调度器2215可以分配与存储在存储器2250中的值或键-值数据相关联的擦除操作时间。调度器1215可以确定是否存在先前请求的任何其他处理操作(诸如写入操作、读取操作或擦除操作),可以确定优先级,并且可以分配擦除操作时间。

报头管理模块2213可以更改与已被擦除的页相对应的键寿命数据的数据值。由此,可以区分实际已被擦除的页和未被擦除的页。报头管理模块2213可以确定要被更改的键寿命数据的数据值。例如,报头管理模块2213可以基于页被擦除的次数来确定键寿命数据的数据值。在这种情况下,报头管理模块2213可以包括用于计数页被擦除的次数的计数器。报头管理模块2213可以对应于图1的报头管理模块123或图4的报头管理模块1212。

图6是示出图5的擦除信息数据的格式的图。图6的擦除信息数据可以被理解为由图5的存储器控制器2210生成的擦除信息数据。然而,擦除信息数据可以不限于图6的格式,并且可以以各种格式提供。为了便于描述,将参照图5的附图标记描述图6。

擦除信息数据可以包括目标键数据、页开始数据、页结束数据和目标键寿命数据。目标键数据可以被定义为与要被擦除的目标值相对应的键。也就是说,在擦除操作中,目标键数据可以具有与从主机接收的键相同的数据值。存储器控制器2210可以控制存储器2250以擦除与目标键相对应的值或键-值数据。

可以通过使用指示要被擦除的页的范围的页范围数据,来定义页开始数据和页结束数据。也就是说,存储器控制器1210可以控制存储器2250,使得值或键-值数据存储在与页开始数据相对应的起始页、与页结束数据相对应的结束页以及开始页和结束页之间的(多个)页中。例如,在存储器控制器2210提取与目标键相对应的所有页时,可以生成页开始数据和页结束数据。或者,可以参考与目标键相对应的多个页中的第一页的元数据来生成页开始数据和页结束数据。在这种情况下,值大小数据可以被包括在第一页的元数据中,并且值大小数据可以包括关于划分之前的整个值的大小的信息。

可以通过使用与要被擦除的页相对应的键寿命数据来定义目标键寿命数据。存储器控制器2210可以控制存储器2250,以便擦除存储在存储器区域中的与擦除信息数据中包括的目标键寿命数据相对应的数据。也就是说,即使存储器区域对应于相同的目标键,在各个存储器区域存储的目标键寿命数据不同的情况下,存储在任何一个存储器区域中的数据也可能未被擦除。

图7是用于描述图1的电子系统中的写入操作的流程图。图7是示出图1的电子系统100通过使用键寿命数据写入键-值数据的过程的图。图7的写入操作可以通过使用图1的存储器控制器121或图4的存储器控制器1210来执行。为了便于描述,将参照图1的附图标记描述图7。

在操作s210中,存储器控制器121从主机110接收键-值数据。此外,存储器控制器121还从主机110接收写入命令。键-值数据可以包括键、值和元数据。键-值数据可以具有图3所示的格式,但是键寿命数据可以不包括在键-值数据中。

在操作s220中,存储器控制器121可以对值的大小和基准大小进行比较。存储器控制器121可以基于元数据中包括的值大小数据来确定值大小。基准大小可以取决于存储器125中包括的页的大小。如上所述,基准大小可以被设置为一个页中能够存储的值的大小的上限。在值大小大于基准大小的情况下,执行操作s230。在值大小不大于基准大小的情况下,执行操作s240。

在操作s230中,存储器控制器121将值划分,并控制存储器125,使得划分后的值的段和键寿命数据存储在存储器125中。在值大小大于基准大小的情况下,由于该值不可以存储在一个页中,因此存储器控制器121可以将该值划分使得该值存储在多个页中。元数据、键和相对应的值的段可以存储在多个页中的每个页中。

在操作s230中,存储器控制器121另外生成键寿命数据。键寿命数据被添加到元数据,并被存储在多个页中的每个页中。相同的键寿命数据可以不存储在存储相同的键的多个页中。例如,在基于相同的键分配的存储器区域中,与写入了值的存储器区域相对应的键寿命数据和与没有存储值的存储器区域相对应的键寿命数据可以具有不同的数据值。

在操作s240中,存储器控制器121将键寿命数据添加到元数据,并控制存储器125,使得添加了键寿命数据的键-值数据存储在存储器125中。在值大小不大于基准大小的情况下,该值可以存储在一个页中。因此,无需划分值的过程,就可以将值存储在存储器125中。如操作s230中所述,相同的键寿命数据可以不存储在存储相同键的多个存储器区域中。

在操作s250中,存储器控制器121可以确定是否写入附加值。可以基于是否接收到键-值数据的写入命令(即,附加命令)来确定附加值,该键-值数据具有与在操作s210中接收到的键相同的键。在接收到附加命令的情况下,可以执行操作s260;否则,可以终止写入操作。

在操作s260中,存储器控制器121对附加值执行写入操作。存储器控制器121将键寿命数据添加到与附加值相对应的元数据,并控制存储器125使得添加了键寿命数据的键-值数据存储在存储器125中。在附加值的大小大于基准大小的情况下,可以如操作s230中所述划分并存储附加值;在附加值的大小不大于基准大小的情况下,如操作s240中所述附加值可以存储在一个页中。与存储附加值的存储器区域相对应的键寿命数据和与存储先前的值的存储器区域相对应的键寿命数据相同。

图8是用于描述图1的电子系统中的擦除操作的流程图。图8是示出图1的电子系统100通过使用键寿命数据来擦除存储在存储器125中的键-值数据的过程的图。下面要描述的键-值数据的格式包括图3中所示的键寿命数据。图8的擦除操作可以通过使用图1的存储器控制器121或图5的存储器控制器2210来执行。为了便于描述,将参照图1的附图标记描述图8。

参照图1和图8,在操作s310中,存储器控制器121从主机110接收擦除命令。擦除命令可以是指示擦除对应于目标键的值或键-值数据的信息。存储器控制器121还可以从主机110接收目标键。

在操作s320中,存储器控制器121可以对目标键执行哈希操作以生成目标哈希数据。存储器控制器121可以基于目标哈希数据执行哈希映射。存储器控制器121可以基于映射信息提取与目标哈希数据相对应的值地址。操作s320可以对应于图2的操作s120。

在操作s330中,存储器控制器121基于所提取的值地址读取键-值数据。存储器控制器121可以从对应于所提取的值地址的存储器区域中读取键和元数据。元数据可以包括键大小数据、值大小数据和键寿命数据。存储器控制器121可以对所读取的键和目标键进行比较。存储器控制器121可以提取具有与目标键相同的数据值的键。

在操作s330和操作s340之间,存储器控制器121可以向主机110发送完成消息。然而,本发明构思不限于此。例如,存储器控制器121可以在操作s320和s330之间或者在操作s350和操作s360之间发送完成消息。可以理解的是,在发送完成消息之后的每个操作都在空闲时间段内执行。

在操作s340中,存储器控制器121可以对与所提取的键相对应的目标值的大小和基准大小进行比较。存储器控制器121可以基于所读取的元数据中包括的值大小数据来确定目标值的大小。在目标值的大小大于基准大小的情况下,执行操作s350。在目标值的大小不大于基准大小的情况下,执行操作s360。

在操作s350中,存储器控制器121生成擦除信息数据。在目标值存储在多个页中的情况下,存储器控制器121可以生成擦除信息数据。擦除信息数据可以包括目标键、页范围数据和目标键寿命数据。页范围数据可以包括参照图6所描述的页开始数据和页结束数据。

在操作s360中,存储器控制器121可以控制存储器125,使得擦除目标值或键-值数据。在目标值存储在多个页中的情况下,存储器控制器121可以基于擦除信息数据执行擦除操作。存储器控制器121可以控制存储器125,以便擦除存储在存储器区域中的与目标键和包括在擦除信息数据中的目标键寿命数据相对应的数据。在目标值的大小不大于基准大小的情况下,由于目标值存储在一个页中,因此无需生成分离的擦除信息数据,存储器控制器121就可以执行擦除操作。

图9是示出图8的操作s360的流程图。图9是示出当在操作s360中执行擦除操作时突然断电的过程的图。这里,可以假设要被擦除的值已被划分并存储在多个页中。为了便于描述,将参照图1的附图标记描述图9。

在操作s361中,擦除与第一区域a1相对应的值。第一区域a1可包括多个页。在图9中示出了与第一至第十物理页编号ppn1至ppn10相对应的页存储在第一区域a1中的示例。在操作s362中,更改与第一区域a1相对应的键寿命数据。也就是说,更改与第一至第十物理页编号ppn1至ppn10相对应的键寿命数据。

在操作s363中,突然断电。当突然断电时,在操作s364中,与第二区域a2相对应的值可能未被擦除,并且键-值数据被保持。第二区域a2可以包括多个页。在图9中示出了与第11至第100物理页编号ppn11至ppn100相对应的页存储在第二区域a2中的示例。在操作s362之前,第一区域a1和第二区域a2中存储相同的键,并且第一区域a1和第二区域a2中存储相同的键寿命数据。然而,在操作s364中,对应于第一区域a1的键寿命数据和对应于第二区域a2的键寿命数据可以具有不同的数据值。

为了减少等待时间,存储器控制器121在存储在第一和第二区域a1和a2中的数据实际被擦除之前向主机110发送完成消息。因此,在突然断电的情况下,存储在第二区域a2中的数据可以由主机110设置为已被擦除。为了满足这些预期情况,电子系统100可以包括用于在突然断电时临时存储数据的帽(cap)(未示出),并且在突然断电时目标键和目标键寿命数据也可以将存储在帽中。对应于实际已被擦除的第一区域a1的键寿命数据被更改了,因此其具有与目标键寿命数据不同的数据值。由于这个原因,可以在通电时擦除与第二区域a2相对应的数据。

图10是用于描述在键-值存储设备的擦除操作完成之前接收到写入命令的情况下的写入过程的流程图。例如,在与目标键相对应的第一和第二区域a1和a2上执行擦除操作的过程中,可能突然断电。然而,由于主机110已经接收到完成消息,因此存储在第二区域a2中的数据可能会由主机110确定为已经被擦除。在这种情况下,主机110可以提供用于将对应于目标键的键-值数据写入键-值存储设备120的写入命令。为了便于描述,将参照图1的附图标记描述图10。

参照图1和图10,在操作s410中,存储器控制器121从主机110接收键-值数据。此外,存储器控制器121还从主机110接收写入命令。键-值数据可以包括键、值和元数据。键-值数据可以具有图3中所示的格式,但是键-值数据可以不包括键寿命数据。

在操作s420中,存储器控制器121可以擦除与第二区域a2相对应的值。由于nand闪存可能不支持重写,因此可以在执行写入操作之前擦除存储在第二区域a2中的数据。由于对应于第一区域a1的键寿命数据和对应于第二区域a2的键寿命数据不同,因此可以容易地执行与第二区域a2相关联的擦除操作。

在操作s430中,存储器控制器121更改与第二区域a2相对应的键寿命数据。也就是说,与第11至第100物理页编号ppn11至ppn100相对应的键寿命数据被更改。因此,对应于第一区域a1的键寿命数据和对应于第二区域a2的键寿命数据可以具有相同的数据值。

在操作s440中,存储与写入命令一起接收的值。存储器控制器121可以将键寿命数据添加到从主机110接收的键-值数据。这里,可以基于在操作s430中更改的键寿命数据生成所添加的键寿命数据。例如,所添加的键寿命数据的值可以通过更改与第一和第二区域a1和a2相对应的键寿命数据的一部分的数据值而获得。因此,在与键相对应的存储器区域中,可以区分存储了值的区域和没有存储值的区域。

图11是示出图1的非易失性存储器设备的框图。图1的电子系统100可以包括基于非易失性存储器的存储,即,包括半导体闪存的固态驱动器(solidstatedrive,ssd)。

参照图11,基于非易失性存储器的存储可以包括非易失性存储器设备1250。非易失性存储器设备1250可以对应于图1的多个非易失性存储器设备125_1至125_n。参照图11,非易失性存储器设备1250可以包括存储器单元阵列1251、地址解码器1252、控制逻辑&电压发生器1253、页缓冲器1254和输入/输出电路1255。

存储器单元阵列1251可以包括多个存储器块blk1至blkm。这些存储块blk1至blkm中的每一个可以包括多个单元串(cellstring)。这些单元串中的每一个可以包括多个存储器单元。这些存储器单元可以与多个字线wl连接。每个存储器单元可以是存储一个比特的单级单元(asinglelevelcell,slc)或存储至少两个比特的多级单元(multi-levelcell,mlc)。存储器单元阵列1251可以包括多个存储器单元。三维存储器阵列可以在存储器单元阵列的一个或多个物理层中单片地形成,该存储器单元阵列具有布置在电路上的有源区域,该电路与硅衬底和存储器单元的操作有关。与存储器单元的操作相关联的电路可以位于衬底中或衬底上。

地址解码器1252可以通过字线wl、串选择线ssl和地选择线gsl与存储器单元阵列1251连接。地址解码器1252可以从存储器控制器接收并解码地址addr。地址解码器1252可以基于解码后的地址选择字线wl中的至少一个,并且可以驱动所选的字线。

控制逻辑&电压发生器1253可以从图1的存储器控制器121接收命令cmd和控制信号ctrl。控制逻辑&电压发生器1253可以响应于接收到的信号控制地址解码器1252、页缓冲器1254和输入/输出电路1255。例如,控制逻辑&电压发生器1253可以响应于命令cmd和控制信号ctrl控制地址解码器1252、页缓冲器1254和输入/输出电路1255,使得将从存储器控制器121提供的数据“data”(诸如键-值数据)存储在存储器单元阵列1251中,或者使得读取存储在存储器单元阵列1251中的数据(诸如键-值数据)。

控制逻辑&电压发生器1253可以生成用于操作非易失性存储器设备1250的各种电压。例如,控制逻辑&电压发生器1253可以生成多个编程电压、多个通过电压(passvoltage)、多个选择读取电压、多个非选择读取电压、多个擦除电压、和多个验证电压。控制逻辑&电压发生器1253可以将生成的电压提供给地址解码器1252或存储器单元阵列1251。

页缓冲器1254可以通过多个位线与存储器单元阵列1251连接。在控制逻辑&电压发生器1253的控制下,页缓冲器1254可以控制位线bl,使得将从输入/输出电路1255提供的数据“data”存储在存储器单元阵列1251中。在控制逻辑&电压发生器1253的控制下,页缓冲器1254可以读取存储在存储器单元阵列1251中的数据,并且可以将所读取的数据提供给输入/输出电路1255。页缓冲器1254可以通过页从输入/输出电路1255接收数据,或者可以通过页从存储器单元阵列1251读取数据。

诸如存储器控制器的外部设备可以向输入/输出电路1255提供写入数据“data”,然后输入/输出电路1255可以将写入数据“data”提供给页缓冲器1254。或者,页缓冲器1254可以向输入/输出电路1255提供读取数据“data”,然后输入/输出电路1255可以将读取数据“data”提供给诸如存储器控制器的外部设备。例如,输入/输出电路1255可以与控制信号ctrl同步地与外部设备交换数据。

根据本发明构思的示例实施例,不论值的大小如何,键-值存储设备及其操作方法都可以在统一的等待时间内执行擦除操作,并且可以通过使用键寿命数据来保证擦除操作的效率。

根据一个或多个示例实施例,上述单元和/或设备可以用硬件、硬件和软件的组合或者存储可运行软件的非暂时性存储介质实现以执行同样的功能,上述单元和/或设备是诸如包括存储器控制器121及存储器控制器121的子组件(诸如哈希模块122和报头管理模块123)的键-值存储设备120的组件。

可以使用处理电路来实现硬件,处理电路诸如但不限于一个或多个处理器、一个或多个中央处理单元(centralprocessingunit,cpu)、一个或多个控制器、一个或多个算术逻辑单元(arithmeticlogicunit,alu)、一个或多个数字信号处理器(digitalsignalprocessor,dsp)、一个或多个微型计算机、一个或多个现场可编程门阵列(fieldprogrammablegatearray,fpga)、一个或多个系统级芯片(system-on-chip,soc)、一个或多个可编程逻辑单元(programmablelogicunit,plu)、一个或多个微处理器、一个或多个专用集成电路(applicationspecificintegratedcircuit,asic)、或能够以一种定义的方式响应和执行指令的任何其他一个或多个设备。

软件可以包括计算机程序、程序代码、指令或它们的一些组合,用于独立地或共同地指示或配置硬件设备以根据需要操作。计算机程序和/或程序代码可以包括能够由一个或多个硬件设备(诸如上述硬件设备中的一个或多个)实现的程序或计算机可读指令、软件组件、软件模块、数据文件、数据结构等。程序代码的示例包括由编译器生成的机器代码和使用解释器执行的更高级的程序代码。

例如,当硬件设备是计算机处理设备(例如,一个或多个处理器、cpu、控制器、alu、dsp、微型计算机、微处理器等)时,计算机处理设备可以被配置为通过根据程序代码执行算术、逻辑和输入/输出操作来运行程序代码。一旦程序代码被加载到计算机处理设备中,计算机处理设备可以被编程为执行程序代码,使得将计算机处理设备转换成特殊用途的计算机处理设备。在更具体的示例中,当程序代码被加载到处理器中时,处理器被编程为执行与其相对应的程序代码和操作,使得将处理器变换为特殊用途的处理器。在另一示例中,硬件设备可以是被定制为特殊用途的处理电路(例如,asic)的集成电路。

诸如计算机处理设备的硬件设备可以运行操作系统(operatingsystem,os)以及在os上运行的一个或多个软件应用。计算机处理设备还可以响应于软件的执行来访问、存储、操纵、处理和创建数据。为简单起见,可以将一个或多个示例实施例示例为一个计算机处理设备;然而,本领域技术人员将理解的是,硬件设备可以包括多个处理元件和多种类型的处理元件。例如,硬件设备可以包括一个或多个处理器和控制器。此外,其他处理配置也是可以的,诸如并行处理器。

软件和/或数据可以永久地或暂时地体现在任何类型的存储介质中,包括但不限于能够向硬件设备提供指令或数据或能够由硬件设备解释的任何机器、组件、物理或虚拟设备或计算机存储介质或设备。软件还可以通过网络分布式耦合到计算机系统上,使得以分布式方式存储和执行软件。具体地,例如,软件和数据可以由一个或多个计算机可读记录介质存储,包括如本文所讨论的有形或非暂时性计算机可读存储介质。

根据一个或多个示例实施例,存储介质还可以包括在单元和/或设备处的一个或多个存储设备。一个或多个存储设备可以是有形或非暂时性计算机可读存储介质,诸如随机存取存储器(randomaccessmemory,ram)、只读存储器(readonlymemory,rom)、永久性大容量存储设备(诸如磁盘驱动器)、和/或能够存储和记录数据的任何其他类似的数据存储机构。一个或多个存储设备可以被配置为存储用于一个或多个操作系统和/或用于实现本文描述的示例实施例的计算机程序、程序代码、指令或其某种组合。计算机程序、程序代码、指令或其某些组合也可以使用驱动机构从分离的计算机可读存储介质加载到一个或多个存储设备和/或一个或多个计算机处理设备中。这种分离的计算机可读存储介质可以包括通用串行总线(universalserialbus,usb)闪存驱动器、记忆棒、蓝光/dvd/cd-rom驱动器、存储卡和/或其他类似的计算机可读存储介质。计算机程序、程序代码、指令或其一些组合可以经由网络接口而不是经由计算机可读存储介质从远程数据存储设备加载到一个或多个存储设备和/或一个或多个计算机处理设备中。附加地,计算机程序、程序代码、指令或其某种组合可以从远程计算系统加载到一个或多个存储设备和/或一个或多个处理器中,该远程计算系统被配置为通过网络传送和/或分发计算机程序、程序代码、指令或其某种组合。远程计算系统可以经由有线接口、空中接口和/或任何其他类似介质来传送和/或分发计算机程序、程序代码、指令或其某种组合。

一个或多个硬件设备、存储介质、计算机程序、程序代码、指令或它们的一些组合可以为示例实施例的目的而专门设计和构造,或者它们可以是为示例实施例的目的而变更和/或修改的已知设备。

虽然已经参考本发明构思的一些示例实施例描述了本发明构思,但是对于本领域普通技术人员来说显而易见的是,在不脱离如所附权利要求阐述的本发明构思的精神和范围的情况下,可以对其进行各种更改和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1