键值存储设备和操作键值存储设备的方法与流程

文档序号:17790255发布日期:2019-05-31 20:05阅读:231来源:国知局
键值存储设备和操作键值存储设备的方法与流程

本申请要求于2017年11月23日向韩国知识产权局提交的第10-2017-0157503号韩国专利申请的权益,其公开内容通过引用整体并入本文。

本发明构思涉及一种键值存储设备和一种操作键值存储设备的方法。



背景技术:

根据数据管理的单位,存储可以分为基于对象的存储和基于块的存储。基于对象的存储是一种以对象的形式存储和管理数据的结构。对象是指具有任意大小的数据,例如,多媒体数据和文件,诸如视频,图像等,并且对象存储可以用于管理对象。基于对象的存储的示例是键值存储设备。



技术实现要素:

根据本发明构思的一方面,一种存储系统包括:控制器,被配置为从主机接收:键编码规则,和包括键的命令,其中,键包括至少一些随机比特,其中,控制器还被配置为基于键编码规则从与包括在键中的随机比特中的至少一些相对应的比特生成映射索引,并且还被配置为在映射表中存储与映射索引相对应的映射信息;以及非易失性存储器,被配置为在控制器的控制下并根据映射信息存储键和与键相对应的值。

根据本发明构思的另一方面,提供一种操作键值存储设备的方法,其中,键值存储设备包括非易失性存储器和被配置为控制非易失性存储器的控制器。所述方法包括:由控制器从主机接收关于包括在第一键中的包括随机比特的随机区域和非随机区域中的至少一个的信息;由控制器从主机接收包括第一键的第一命令;由控制器基于接收的信息从第一比特生成映射表的映射索引,第一比特对应于包括在第一键中的随机比特的至少一些;以及由控制器通过使用映射表根据第一命令控制非易失性存储器的操作。

根据本发明构思的另一方面,提供一种操作键值存储设备的方法,其中,键值存储设备包括多个非易失性存储器和被配置为控制多个非易失性存储器的控制器。所述方法包括:由控制器从主机接收关于包括在第一键中的包括随机比特的随机区域和非随机区域中的至少一个的信息;由控制器从主机接收包括第一键的第一命令;由控制器基于接收的信息根据包括在第一键中的随机比特中的至少第二比特,将第一命令分配给多个非易失性存储器中的第一非易失性存储器;由控制器基于接收的信息从第一比特中生成第一映射表的映射索引,第一映射表对应于第一非易失性存储器,第一比特对应于包括在第一个键中的随机比特的至少一些;以及由控制器通过使用第一映射表根据第一命令控制对第一非易失性存储器的操作。

附图说明

从以下结合附图的详细描述中将更清楚地理解本发明构思的实施例。

图1是示出存储系统的实施例的框图。

图2示出根据实施例的键区,散列键区和nand区的示例。

图3示出根据实施例的根据键编码规则生成的键的示例。

图4示出根据实施例的映射表的示例和非易失性存储器的存储器单元阵列的示例。

图5是示出根据实施例的图1的控制器的框图。

图6是示出根据实施例的操作键值存储设备的方法的流程图。

图7是示出根据实施例的生成键值存储设备的映射索引的方法的流程图。

图8是示出根据实施例的主机,控制器和非易失性存储器之间的写入操作的流程图。

图9是示出根据实施例的主机,控制器和非易失性存储器之间的读取操作的流程图。

图10是示出在主机和存储设备之间执行操作的方法的流程图。

图11是示出存储设备的示例实施例的框图。

图12示出根据实施例的根据键编码规则的键的示例。

图13是示出根据实施例的操作键值存储设备的方法的流程图。

图14是示出存储设备的示例实施例的框图。

图15是示出存储系统的实施例的框图。

图16示出根据实施例的根据键编码规则的键的示例。

图17示出图15的第一存储设备的实施例。

图18是示出根据实施例的存储系统的框图。

图19是示出根据实施例的操作键值存储设备的方法的流程图。

图20是示出根据实施例的主机,控制器和非易失性存储器之间的写入操作的流程图。

图21是示出存储设备的示例实施例的框图。

图22是示出根据实施例的操作键值存储设备的方法的流程图。

图23是示出存储系统的实施例的框图。

图24示出图23的第一存储设备的实施例。

图25是示出根据实施例的操作键值存储设备的方法的流程图。

图26示出网络系统的实施例。

图27示出网络系统的实施例。

图28示出电子设备的实施例。

具体实施方式

图1是示出存储系统10的实施例的框图。参照图1,存储系统10可以包括存储设备100和主机200,并且存储设备100可以包括控制器110和非易失性存储器(nvm)120。主机200可以经由各种接口与存储设备100通信。例如,主机200可以用应用处理器(ap)或片上系统(soc)来实现。

在实施例中,存储设备100可以是键值存储设备或键值存储,例如键值固态驱动器(ssd)。键值存储设备是一种通过使用键值对快速简单处理数据的设备。在此,术语“键值对”是指具有唯一性的键和作为与该键相对应的数据的值的一对,并且可以称为术语“元组”或“键值元组”。在键值对中,键可以由诸如文件名,统一资源标识符(uri)或散列之类的任意字符串表示,并且值可以是任意类型的数据,诸如图像,用户偏好文件或文档。在此,键和值的大小可以是可变的,并且例如,值的大小可以随着该值中包括的数据而变化。

在下文中,将主要描述其中存储设备100是键值存储设备的实施例,并且在说明书中,存储设备100可以具有与键值存储设备或键值存储基本相同的含义。然而,存储设备100不限于键值存储设备,并且可以应用于以对象为单位来管理数据的任意对象缓存系统或对象存储系统。因此,存储设备100可以以任意方式而不是以键值对的方式,以对象为单位来管理数据。

主机200可以向存储设备100发送包括键值对的命令cmd,例如写入请求或放入(put)命令,并且存储设备100可以响应于命令cmd将值写入到非易失性存储器120中。在实施例中,主机200可以向存储设备100发送包括键的命令cmd,例如,读取请求或获取(get)命令,并且存储设备100可以响应于命令cmd从非易失性存储器120读取与键相对应的值。在不将键转换成具有固定大小的逻辑块地址(lba)的单元的情况下,主机200可以生成包括具有可变大小的键的命令cmd,并且可以将生成的命令cmd发送到存储设备100。

响应于来自主机200的写入请求,控制器110可以控制非易失性存储器120,使得值被写入到非易失性存储器120中,或者响应于来自主机200的读取请求来读取存储在非易失性存储器120中的值。在实施例中,控制器110可以包括映射表管理器mtm和映射表mt。虽然图1示出映射表mt包括在控制器110中,但是实施例不限于此,并且在一些实施例中,映射表mt可以被加载到控制器芯片外部的存储器芯片中,例如加载到dram芯片中,所述控制器芯片包括实现在其中的控制器110。

映射表管理器mtm可以根据命令cmd中包括的键生成映射表mt的映射索引。另外,映射表管理器mtm可以将与映射索引相对应的映射数据更新到映射表mt,或者可以从映射表mt中检索与映射索引相对应的映射数据。映射表mt存储多个映射数据,并且每个映射数据可以指示与映射索引相对应的物理地址。在实施例中,映射索引可以是与键对应的散列键,并且物理地址可以是非易失性存储器120的物理页面编号(ppn),用于写入与键相对应的值。因此,映射表mt可以被称为散列表。将参照图2更详细地描述映射表管理器mtm和映射表mt。

非易失性存储器120可以包括存储器单元阵列mca,存储器单元阵列mca可以包括存储器块blk1至blkz,并且存储器块blk1可以包括多个页面pg1至pgk。在此,z和k中的每一个可以是正整数,并且可以根据实施例进行各种改变。例如,存储器块可以是擦除的单位,并且页面可以是写入和读取的单位。在一些实施例中,存储器单元阵列mca可以包括多个平面(plane),多个管芯(die)或多个芯片(chip)。在实施例中,非易失性存储器120可以包括闪存设备,例如,nand闪存设备。然而,实施例不限于此,并且非易失性存储器120可以包括诸如电阻式随机存取存储器(reram),相变ram(pram)或磁阻ram(mram)的电阻式存储设备。

存储系统10可以用例如个人计算机(pc),数据服务器,网络附接存储,物联网(iot)设备或便携式电子设备来实现。便携式电子设备可以是膝上型计算机,移动电话,智能电话,平板电脑,个人数字助理(pda),企业数字助理(eda),数码静态相机,数码视频像机,音频设备,便携式多媒体播放器(pmp),个人导航设备(pnd),mp3播放器,手持游戏控制台,电子书,可穿戴设备等。

在一些实施例中,存储设备100可以是嵌入在电子设备中的内部存储器。例如,存储设备100可以是ssd,嵌入式通用闪存(ufs)存储设备或嵌入式多媒体卡(emmc)。在一些实施例中,存储设备100可以是可附接到电子设备并且可从电子设备拆卸的外部存储器。例如,存储设备100可以是ufs存储卡,紧凑型快闪(cf)存储卡,安全数字(sd)存储卡,微安全数字(micro-sd)存储卡,迷你安全数字(mini-sd)存储卡,极限数字(xd)存储卡或记忆棒。

图2示出根据实施例的键区ka、散列键区hka和nand区na的示例。

参照图1和图2,主机200和存储设备100可以发送和接收在键区ka中定义的键数据。键数据可以具有可变尺寸,并且根据实施例可以具有非常大的尺寸。由于映射表mt被加载到具有有限容量的存储器中,因此当键数据的尺寸非常大时,可能难以将键数据存储在存储器中。因此,控制器110可以对在键区域ka中定义的键数据执行散列操作,从而在散列键区域hka中生成散列键。例如,存储设备100可以对128比特键执行散列操作,由此生成32比特散列键。

映射表mt可以使用生成的散列键作为映射索引,并且可以基于映射索引来存储映射数据。映射数据可以包括用于将值存储在非易失性存储器120中的物理地址,例如,nand区na。这样,映射数据可以指示散列键与物理地址的对应关系,例如,物理页面号(ppn),并且因此映射表mt可以被称为键到ppn(k2p)映射表。

例如,作为对第一键数据执行散列操作并对第二键数据执行散列操作的结果,可以针对散列操作(即,对第一键数据和对第二键数据的散列操作)的执行二者生成相同的第一散列键,即,相同的第一映射索引。在映射表mt中,当与第一键数据相对应的具有第一值的物理地址已经相对应于第一映射索引存储时,与第二键数据相对应的具有第二值的物理地址可以相对应于另一映射索引而不是第一映射索引存储。这样,作为对多个键数据执行散列操作的结果,生成用于不同键数据的相同散列键的情况可以被称为术语“散列冲突”。需要一种将映射数据存储在映射表mt中的方法,使得映射数据均匀分散在映射表mt中,同时减少这种散列冲突。

再参照图1,主机200可以包括键编码规则存储器210和键生成器220。在实施例中,键编码规则存储器210和键生成器220可以用软件来实现。在实施例中,主机200可以包括控制存储设备100的存储设备控制器,并且键编码规则存储器210和键生成器220可以在存储设备控制器中实现。例如,主机200可以包括控制键值存储设备的键值控制模块(例如,图15的kvma或图23的kvmb,下面更详细讨论),并且键编码规则存储器210和键生成器220可以在键值控制模块中实现。

键编码规则存储器210可以存储通常可用于多个键的键编码规则ker。键编码规则ker可以指示关于键的随机区域和非随机区域中的至少一个的信息。在实施例中,键编码规则存储器210可以一起存储键编码规则ker和对应的编码标识符(id)。键生成器220可以从键编码规则存储器210接收键编码规则ker,并且可以根据接收的键编码规则ker生成键。在一些实施例中,主机200可以改变键编码规则,键编码规则存储器210可以存储新键编码规则和对应的新编码id,并且键生成器220可根据新键编码规则生成键。

图3示出根据实施例的根据键编码规则生成的键keya的示例。

参照图1和图3,键keya可以具有可变大小,例如,大小为几十到几百比特。键keya可以被分成包括随机比特的随机区域和包括属性信息的非随机区域。非随机区域可以包括关于与键相关联的值的属性信息,并且属性信息可以由具有特定模式的比特来表示。例如,当值是图片文件时,属性信息可以是'0001',并且当值是视频文件时,属性信息可以是'0002'。例如,当主机200向存储设备100发送用于图片文件的第一命令和第二命令时,包括在第一命令中的第一键的属性信息可以与包括在第二命令中的第二键的属性信息相同,因此,存在发生散列冲突的可能性,由于散列冲突,与第一键相对应的散列键和与第二键相对应的散列键被生成为彼此相同。

根据实施例,在发送包括第一键或第二键的命令cmd之前,主机200可以将键编码规则ker发送到存储设备100。在实施例中,当电力被施加到存储系统10时,主机200可以将键编码规则ker发送到存储设备100。在实施例中,键编码规则ker可以以设置的特征命令的形式被发送。在实施例中,键编码规则ker可以以比特掩码的形式发送。例如,键编码规则ker可以由具有不同比特的随机区域和非随机区域表示。再例如,键编码规则ker可以由随机区域的开始比特和结束比特表示。根据实施例,键编码规则ker对于键的每个尺寸可以不同。

当存储设备100从主机200接收到命令cmd时,存储设备100可以基于先前接收的键编码规则ker,从命令cmd中包括的键的随机比特生成映射索引mi。具体地,映射表管理器mtm可以从键的随机比特中的至少部分比特生成映射索引mi。在实施例中,映射表管理器mtm可以使用键的随机比特中的至少部分比特作为映射索引mi,而不对该至少部分比特执行散列操作。因此,即使在第一命令的非随机区域中包括的属性信息与第二命令的非随机区域中包括的属性信息相同或相似的情况下,也可以从第一命令和第二命令的相应随机区域中包括的至少部分比特生成第一映射索引和第二映射索引,从而降低发生散列冲突的可能性。

图4示出根据实施例的映射表mt的示例和非易失性存储器的存储器单元阵列mca的示例。

参照图1和图4,控制器110可以从主机200接收包括第一键k1和第一值v1的第一命令。控制器110可以基于键编码规则ker从第一键k1的随机比特中的至少一些(“部分随机比特”)生成第一映射索引mia。例如,第一映射索引mia可以被确定为与第一键k1中包括的部分随机比特相同。控制器110可以将用于写入第一值v1的物理地址作为ppn1存储在映射表mt中与第一映射索引mia相对应的映射条目中。因此,第一键k1、第一映射索引mia和第一值v1可以被写入非易失性存储器120的存储器单元阵列mca的ppn1中。接下来,当控制器110从主机200接收第二命令时,控制器110可以从第二键k2的至少一些随机比特生成第二映射索引mib。另外,当控制器110从主机200接收第三命令时,控制器110可以从第三键k3的至少一些随机比特中生成第三映射索引mic。

如上所述,根据本实施例,存储设备100可以包括映射表管理器mtm,并且映射表管理器mtm可以基于预先接收的键编码规则ker从键的部分随机比特生成映射索引mi。在实施例中,映射表管理器mtm可以完整地使用键的部分随机比特作为映射索引mi,而不对部分随机比特执行散列操作。因此,存储设备100可以不执行用于生成映射索引mi的散列操作,由此提高操作速度。然而,实施例不限于此,并且在实施例中,映射表管理器mtm可以通过对键的部分随机比特执行散列操作来生成映射索引mi。即使在这种情况下,由于对包括足够的随机比特的随机区域执行散列操作,而不是对包括相同或相似比特的非随机区域执行散列操作,因此发生散列冲突的可能性可以被降低。

图5是示出根据实施例的图1的控制器110的框图。参照图5,控制器110可以包括处理器111、控制器存储器112、主机接口113和非易失性存储器接口114,并且这些组件可以经由总线115彼此通信。处理器111可以包括中央处理单元或微处理器,并且可以控制控制器110的整体操作。在实施例中,处理器111可以用多核处理器(例如,双核处理器或四核处理器)来实现。

主机接口113可以提供主机200与控制器110之间的接口,例如,根据通用串行总线(usb),多媒体卡(mmc),高速外围组件互连(pci-e),at附件(ata),串行at附件(sata),并行at附件(pata),小型计算机系统接口(scsi),串行连接scsi(sas),增强小型盘接口(esdi),集成驱动电子设备(ide)等的接口。

在实施例中,主机接口113可以包括命令解码器cd,并且命令解码器cd可以通过对从主机200接收的命令cmd进行解码来将包括在命令cmd中的键和值彼此分开。在实施例中,主机接口113可以进一步包括对键执行散列操作的散列模块。然而,实施例不限于此,散列模块可以在快闪翻译层(ftl)中实现,并且因此可以被加载到控制器存储器112中。

在实施例中,散列模块可以根据键的大小或键的随机比特的大小来激活。例如,当键的随机比特的大小小于临界值时,散列模块可以被激活。在此,散列模块可以从键生成散列键并且将生成的散列键提供给映射表管理器mtm,并且映射表管理器mtm可以使用散列键作为映射索引。另一方面,当随机比特的大小大于或等于临界值时,散列模块可以被去激活。在此,映射表管理器mtm可以使用包括在键的随机区域中的至少一些随机比特作为映射索引。

控制器存储器112可以根据处理器111的控制进行操作,并且可以用作操作存储器、缓冲(buffer)存储器、高速缓冲(cache)存储器等。例如,控制器存储器112可以用诸如dram或sram的易失性存储器或诸如pram或闪存的非易失性存储器来实现。在实施例中,映射表管理器mtm和映射表mt可以被加载到控制器存储器112中。映射表管理器mtm可以用固件或软件来实现,并且可以被加载到控制器存储器112中。在实施例中,映射表管理器mtm可以在ftl中实现。然而,实施例不限于此,并且映射表管理器mtm可以用硬件来实现。例如,映射表mt可以存储k2p映射表,并且可以被加载到控制器存储器112中。

非易失性存储器接口114可以提供控制器110和非易失性存储器120之间的接口。例如,映射表mt、写入数据和读取数据可以经由非易失性存储器接口114在控制器110和非易失性存储器120之间发送和接收。在实施例中,非易失性存储器接口114的数量可以对应于包括在存储设备100中的非易失性存储器芯片的数量或者控制器110与非易失性存储器120之间的通道的数量。

图6是示出根据实施例的操作键值存储设备的方法的流程图。参照图6,根据本实施例的操作键值存储设备的方法可以包括例如在图1的存储设备100中按时间顺序执行的操作。因此,上面参照图1至图5进行的描述可以应用于本实施例,并且将省略重复的描述。

在操作s110中,存储设备100从主机200接收关于包括在键中的随机区域和非随机区域中的至少一个的信息。具体地,控制器110可以接收包括关于包括在键中的随机区域和非随机区域中的至少一个的信息的键编码规则。在实施例中,控制器110可以在施加电力的初始阶段从主机200接收包括键编码规则的设置特征命令。

在操作s120中,存储设备100从主机200接收包括第一键的第一命令。例如,第一命令可以是包括第一键和与第一键相对应的第一值的“放入”命令。例如,第一命令可以是包括第一键的“获取”命令。具体地,命令解码器cd可以解码第一命令并因此输出第一键。在实施例中,命令解码器cd可以基于键编码规则ker输出包括在第一键的随机区域中的随机比特。

在操作s130中,存储设备100从与第一键中包括的随机比特中的至少一些对应的第一比特生成映射索引。具体地,映射表管理器mtm可以基于键编码规则,使用第一键中包括的第一比特作为映射索引。例如,当第一键具有128比特时,映射表管理器mtm可以提取与第一键中包括的随机比特之中的32比特相对应的第一比特,并可以使用提取的第一比特作为映射索引。

在操作s140中,存储设备100通过使用映射表来控制对非易失性存储器的操作。当第一命令是“放入”命令时,控制器110可以将物理地址存储在与生成的映射索引相对应的映射条目中,并且可以根据存储的物理地址来控制对非易失性存储器120的写入操作。当第一命令是“获取”命令时,控制器110可以从与生成的映射索引相对应的映射条目中检索物理地址,并且可以根据检索的物理地址来控制对非易失性存储器120的读取操作。

图7是示出根据实施例的生成键值存储设备的映射索引的方法的流程图。参照图7,生成映射索引的方法可以对应于图6中操作键值存储设备的方法的实现示例。例如,根据本实施例的生成映射索引的方法可以包括对应于图6的操作s130执行的操作。例如,根据本实施例的生成映射索引的方法可以包括在图5的控制器110中按时间顺序执行的操作。

在操作s210中,通过解码第一命令来获得第一键。例如,命令解码器cd可以解码第一命令以获得第一键,并且可以将获得的第一键提供给映射表管理器mtm。在操作s220中,确定随机比特的大小是否等于或大于临界值。例如,临界值可以对应于映射索引的大小。例如,映射表管理器mtm可以确定随机比特的大小是否大于或等于映射索引的大小。作为确定的结果,当随机比特的大小大于或等于临界值时,执行操作s230。另一方面,当随机比特的大小小于临界值时,执行操作s240。然而,实施例不限于此,并且在一些实施例中,控制器110可以确定键的大小是否大于或等于临界值。

在操作s230中,将与至少一些随机比特相对应的第一比特用作映射索引mi。在操作s240中,通过对第一键执行散列操作来生成第一散列键。在操作s250中,第一散列键被用作映射索引mi。这样,根据本实施例,可以根据第一键的大小可选地执行对第一键的散列操作。在执行操作s230或操作s250之后,可以执行图6的操作s170。

图8是示出根据实施例的主机200、控制器110和非易失性存储器120之间的写入操作的流程图。根据本实施例的写入操作可以对应于图6的实现示例,在下文中,将参照图1和图8进行描述。

在操作s310中,主机200向控制器110发送包括键编码规则ker的命令。在操作s320中,控制器110向主机200发送指示命令的接收完成的响应消息。在操作s330中,主机200向控制器110发送包括第一键k1和第一值v1的“放入”命令。然而,实施例不限于此,并且在一些实施例中,主机200可以向控制器110发送包括键编码规则ker的“放入”命令。在操作s340中,控制器110基于键编码规则ker,从与第一键k1的至少一些随机比特相对应的第一比特生成映射索引mia。在操作s350中,控制器110在映射表mt中更新用于将第一值v1写入非易失性存储器120的第一物理地址ppn1。

在操作s360中,控制器110向非易失性存储器120发送包括第一值v1和第一物理地址ppn1的写入命令。在操作s370中,非易失性存储器120将第一值v1写入第一物理地址ppn1。在此,第一键k1和第一映射索引mia可以被进一步写入到第一物理地址ppn1中。在操作s380中,非易失性存储器120向控制器110发送指示写入操作完成的响应消息。在操作s390中,控制器110向主机200发送指示第一值v1的写入操作完成的响应消息。

图9是示出根据实施例的主机200、控制器110和非易失性存储器120之间的读取操作的流程图。根据本实施例的读取操作可以对应于图6的实现示例,在下文中,将参照图1和图9进行描述。

在操作s410中,主机200向控制器110发送包括键编码规则ker的命令。在操作s420中,控制器110向主机200发送指示命令的接收完成的响应消息。在操作s430中,主机200向控制器110发送包括第一键k1的“获取”命令。在操作s440中,控制器110基于键编码规则ker,从第一键k1的随机比特生成第一映射索引mia。在操作s450中,控制器110从映射表mt中检索用于从非易失性存储器120读取第一值v1的第一物理地址ppn1。

在操作s460中,控制器110向非易失性存储器120发送包括第一物理地址ppn1的读取命令。在操作s470中,非易失性存储器120从第一物理地址ppn1读取第一值v1。在此,可以从第一物理地址ppn1进一步读取第一键k1和第一映射索引mia。在操作s480中,非易失性存储器120向控制器110发送包括第一值v1的响应消息。在操作s490中,控制器110向主机200发送包括第一值v1的响应消息。

图10是示出在主机200和存储设备100之间执行操作的方法的流程图。

参照图10,在操作s510中,主机200向存储设备100发送包括第一键编码规则ker1和第一编码idid1的命令。在操作s515中,存储设备100向主机200发送指示命令的接收完成的响应消息。在操作s520中,主机200向存储设备100发送包括第一键k1的命令。例如,命令可以是“放入”命令,“获取”命令或“删除”命令。在操作s530中,存储设备100基于第一键编码规则ker1从第一键k1生成映射索引。在操作s540中,存储设备100根据命令执行存储器操作。例如,当接收到放入命令时,存储设备100可以执行值写入操作。例如,当接收到获取命令时,存储设备100可以执行值读取操作。在操作s545中,存储设备100向主机200发送指示存储器操作完成的响应消息。

在操作s550中,主机200向存储设备100发送包括第二键编码规则ker2和第二编码idid2的命令。在操作s555中,存储设备100向主机200发送指示命令的接收完成的响应消息。在操作s560中,主机200向存储设备100发送包括第二键k2的命令。例如,该命令可以是“放入”命令,“获取”命令或“删除”命令。在操作s570中,存储设备100基于第二键编码规则ker2从第二键k2生成映射索引。在操作s580中,存储设备100根据该命令执行存储器操作。在操作s590中,存储设备100向主机200发送指示存储器操作完成的响应消息。

如上所述,根据本实施例,主机200可以在使用存储设备100期间改变键编码规则。在此,主机200可以将与键编码规则相对应的编码id连同键编码规则一起发送到存储设备100,并且存储设备100可以根据编码id将第一编码规则ker1与第二编码规则ker2分开或区分。

图11是示出存储设备100a的示例实施例的框图。参照图11,存储设备100a可以包括控制器110a和非易失性存储器120a。控制器110a可以包括命令解码器cd,以及第一控制器cnt1和第二控制器cnt2。非易失性存储器120a可以包括第一非易失性存储器nvm1和第二非易失性存储器nvm2。例如,命令解码器cd可以在主机接口层(hil)内核中实现。例如,第一控制器cnt1和第二控制器cnt2可以用双核处理器来实现。

第一控制器cnt1可以控制第一非易失性存储器nvm1,并且可以包括存储关于第一非易失性存储器nvm1的映射信息的第一映射表mt1。第二控制器cnt2可以控制第二非易失性存储器nvm2,并且可以包括存储关于第二非易失性存储器nvm2的映射信息的第二映射表mt2。在实施例中,第一非易失性存储器nvm1和第二非易失性存储器nvm2可以分别由彼此不同的单独存储器芯片来实现。在实施例中,第一非易失性存储器nvm1和第二非易失性存储器nvm2可以经由彼此不同的单独通道分别连接到控制器110a。

图12示出根据实施例的根据键编码规则的键keyb的示例。参照图11和图12,命令解码器cd可以从主机接收命令cmd,并且可以通过解码接收的命令cmd来生成键keyb。命令解码器cd可以根据键编码规则将键keyb分成非随机比特和随机比特,非随机比特包括在非随机区域中,并且随机比特包括在随机区域中。例如,键keyb的非随机区域可以包括x比特,并且键keyb的随机区域可以包括y比特和z比特。

在实施例中,命令解码器cd可以使用随机比特中的部分比特作为键分发比特。具体地,命令解码器cd可以使用随机比特中的z比特作为键分发比特,并且可以基于z比特将键keyb分配给第一控制器cnt1或第二控制器cnt2。例如,z比特可以是1比特。例如,当z比特对应于0时,命令解码器cd可以将键keyb分配给第一控制器cnt1,并且当z比特对应于1时,命令解码器cd可以将键keyb分配给第二控制器cnt2。

图13是示出根据实施例的操作键值存储设备的方法的流程图。参照图13,根据本实施例的操作键值存储设备的方法可以包括例如在存储设备100a中按时间顺序执行的操作。

在操作s610中,存储设备100a从主机接收关于包括在键中的随机区域和非随机区域中的至少一个的信息。具体地,控制器110a可以接收键编码规则。在操作s620中,存储设备100a接收包括第一键的第一命令。在操作s630中,存储设备100a基于键编码规则,根据包括在第一键中的随机比特中的至少第二比特,将第一命令分配给多个非易失性存储器中的第一非易失性存储器。例如,第二比特可以对应于图12的z比特。

在操作s640中,存储设备100a基于键编码规则,从与包括在第一键中的至少一些随机比特相对应的第一比特生成第一映射表的映射索引。在实施例中,存储设备100a可以使用第一比特作为映射索引,而不对包括在第一键中的随机比特执行散列操作。例如,第一比特可以对应于图12的y比特中的一些。在操作s650中,存储设备100a通过使用第一映射表来控制对第一非易失性存储器的操作。

在一些实施例中,上述方法还可以包括在操作s630之后,由存储设备100a确定随机比特的大小是否等于或大于临界值。在此,当随机比特的大小等于或大于临界值时,可以从第一比特生成映射索引。另一方面,当随机比特的大小小于临界值时,可以通过对第一键执行散列操作来生成与第一键相对应的第一散列键,并且可以将生成的第一散列键用作映射索引。

图14是示出存储设备100b的示例实施例的框图。参照图14所示,存储设备100b可以对应于图11的存储设备100a的修改示例。存储设备100b可以包括控制器110b和非易失性存储器120b。控制器110b可以包括命令解码器cd'和第一控制器cnt1至第四控制器cnt4。非易失性存储器120b可以包括第一非易失性存储器nvm1至第四非易失性存储器nvm4。例如,第一控制器cnt1至第四控制器cnt4可以用四核处理器来实现。

命令解码器cd'可以使用随机比特中的部分比特(例如,图12的z比特)作为键分发比特,并且可以基于z比特将键keyb分配给第一控制器cnt1至第四控制器cnt4中的一个。例如,z比特可以是2比特。例如,当z比特对应于00时,命令解码器cd'可以将键keyb分配给第一控制器cnt1;当z比特对应于01时,命令解码器cd'可以将键keyb分配给第二控制器cnt2;当z比特对应于10时,命令解码器cd'可以将键keyb分配给第三控制器cnt3;以及当z比特对应于11时,命令解码器cd'可以将键keyb分配给第四控制器cnt4。根据本实施例,图13所示的操作方法还可以在存储设备100b中执行。

图15是示出存储系统20的实施例的框图。图16示出根据实施例的根据键编码规则的键keyc的示例。在下文中,将参照图15和图16进行描述。

存储系统20可以对应于图1的存储系统10的修改示例。参照图1至图14进行的描述可以应用于本实施例,并且将省略重复的描述。存储系统20可以包括第一存储设备100a至第四存储设备100d和主机200a。主机200a可以包括控制第一存储设备100a至第四存储设备100d的键值控制模块kvma。例如,键值控制模块kvma可以用软件来实现。

键值控制模块kvma可以包括键编码规则存储器210,键生成器220,键分发规则存储器230以及键值请求分发器240。键生成器220可以从键编码规则存储器210接收键编码规则,并且可以基于接收的键编码规则来生成键keyc。例如,键keyc的非随机区域可以包括x比特,并且键keyc的随机区域可以包括y1比特,y2比特和z比特。

键分发规则存储器230可以存储用于将键生成器220生成的键分发给第一存储设备100a至第四存储设备100d的键分发规则。例如,键分发规则存储器230可以存储键分发规则,通过该规则,将与键keyc的随机区域的子比特对应的z比特用作键分发比特。键值请求分发器240可以从键分发规则存储器230接收键分发规则,并且可以基于接收的键分发规则将包括键keyc的请求分配给第一存储设备100a至第四存储设备100d中的一个。

例如,键值请求分发器240可以将包括其中z比特对应于00的第一键k1的请求(例如,放入命令或获取命令)分配给第一存储设备100a。例如,键值请求分发器240可以将包括其中z比特对应于01的第二键k2的请求分配给第二存储设备100b。例如,键值请求分发器240可以将包括其中z比特对应于10的第三键k3的请求分配给第三存储设备100c。例如,键值请求分发器240可以将包括其中z比特对应于11的第四键k4的请求分配给第四存储设备100d。

图17示出图15的第一存储设备100a的实施例。尽管未示出,但是图15的第二存储设备100b至第四存储设备100d也可以基本上类似于第一存储设备100a来实现。因此,下面参照图17进行描述可以应用于第二存储设备100b至第四存储设备100d。

参照图17,第一存储设备100a可以包括第一映射表mt1至第四映射表mt4以及第一非易失性存储器nvm1至第四非易失性存储器nvm4,并且可以通过使用第一映射表mt1至第四映射表mt4分别控制第一非易失性存储器nvm1至第四非易失性存储器nvm4。第一存储设备100a可以从主机200a接收键编码规则。另外,第一存储设备100a还可以从主机200a接收键分发规则。

第一存储设备100a可以基于键的随机比特中的部分比特(例如,图16的y2比特)将键分配给第一非易失性存储器nvm1至第四非易失性存储器nvm4中的一个。例如,第一存储设备100a可以将其中y2比特对应于00的第一键k1a分配给第一非易失性存储器nvm1;可以将其中y2比特对应于01的第二键k1b分配给第二非易失性存储器nvm2;可以将其中y2比特对应于10的第三键k1c分配给第三非易失性存储器nvm3;以及可以将其中y2比特对应于11的第四键k1d分配给第四非易失性存储器nvm4。

第一存储设备100a可以从第一键k1a的随机比特中的至少部分比特(例如,图16的y1比特中的至少部分比特)生成第一映射表mt1,并且可以在第一映射表mt1中存储与第一映射索引mi1相对应的映射信息。类似地,第一存储设备100a可以从第二键k1b至第四键k1d的随机比特中的至少部分比特分别生成第二映射索引mi2至第四映射索引mi4。另外,第一存储设备100a可以在第二映射表mt2至第四映射表mt4中分别存储与第二映射索引mi2至第四映射索引mi4相对应的映射信息。

图18是示出存储系统30的实施例的框图。根据本实施例的存储系统30可以对应于图1的存储系统10的修改示例。

参照图18,存储系统30可以包括存储设备100'和主机200',存储设备100'可以包括控制器110'和非易失性存储器120。主机200'可以包括键编码规则存储器210,控制器110'可以包括键生成器kg、映射表管理器mtm和映射表mt。与图1的存储系统10不同,根据本实施例,键生成器kg可以被包括在控制器110'中而不是主机200'中。

主机200'可以在发送命令cmd之前将键编码规则发送到存储设备100'。接下来,主机200'可以向存储设备100'发送包括值的命令cmd。键生成器kg可以基于键编码规则从命令cmd生成键key。映射表管理器mtm可以从键生成器kg接收键key,并且可以从接收的键key的至少一些随机比特中生成映射索引mi。另外,映射表管理器mtm可以在映射表mt中存储与映射索引mi相对应的映射信息。

图19是示出根据实施例的操作键值存储设备的方法的流程图。参照图19,根据本实施例的操作键值存储设备的方法可以包括例如在图18的存储设备100'中按时间顺序执行的操作。

在操作s710中,存储设备100'从主机200'接收关于包括在键中的随机区域和非随机区域中的至少一个的信息。具体地,控制器110'可以接收键编码规则。在操作s720中,存储设备100'从主机200'接收包括第一值的第一命令。在操作s730中,存储设备100'基于键编码规则从第一命令生成第一键。

在操作s740中,存储设备100'基于键编码规则,从与包括在第一键中的至少一些随机比特相对应的第一比特生成映射索引。在实施例中,存储设备100'可以使用第一比特作为映射索引,而不对包括在第一键中的随机比特执行散列操作。例如,第一比特可以对应于图12的y比特中的一些。在操作s750中,存储设备100'通过使用映射表来控制对非易失性存储器的操作。

图20是示出根据实施例的主机200'、控制器110'和非易失性存储器120之间的写入操作的流程图。根据本实施例的写入操作可以对应于图19的实现示例,在下文中,将参照图18至图20进行描述。

在操作s810中,主机200'向控制器110'发送包括键编码规则的命令。在操作s820中,控制器110'向主机200'发送指示命令的接收完成的响应消息。在操作s830中,主机200'向控制器110'发送包括第一值v1的放入命令。然而,实施例不限于此,并且在一些实施例中,主机200'可以向控制器110'发送包括键编码规则的放入命令。

在操作s840中,控制器110'基于键编码规则从第一值v1生成第一键k1。在操作s850中,控制器110'从第一键k1的随机比特生成映射索引mia。在操作s860中,控制器110'向映射表mt更新用于将第一值v1写入非易失性存储器120中的第一物理地址ppn1。

在操作s870中,控制器110'向非易失性存储器120发送包括第一值v1和第一物理地址ppn1的写入命令。在操作s880中,非易失性存储器120将第一值v1写入第一物理地址ppn1。在此,第一键k1和第一映射索引mia可以被进一步写入到第一物理地址ppn1中。在操作s885中,非易失性存储器120向控制器110'发送指示写入操作完成的响应消息。在操作s890中,控制器110'向主机200'发送指示第一值v1的写入操作完成的响应消息。

图21是示出存储设备100a'的示例实施例的框图。参照图21,存储设备100a'可以包括控制器110a'和非易失性存储器120a。存储设备100a'可以对应于图11的存储设备100a的修改示例,并且参照图11进行的描述可以应用于本实施例。控制器110a'可以包括键生成器kg以及第一控制器cnt1和第二控制器cnt2。非易失性存储器120a可以包括第一非易失性存储器nvm1和第二非易失性存储器nvm2。例如,键生成器kg可以在hil内核中实现。例如,第一控制器cnt1和第二控制器cnt2可以用双核处理器来实现。

图22是示出根据实施例的操作键值存储设备的方法的流程图。参照图22,根据本实施例的操作键值存储设备的方法可以包括例如在图21的存储设备100a'中按时间顺序执行的操作。

在操作s910中,存储设备100a'从主机接收关于包括在键中的随机区域和非随机区域中的至少一个的信息。具体地,控制器110a'可以接收键编码规则。在操作s920中,存储设备100a'接收包括第一值的第一命令。在操作s930中,存储设备100a'基于键编码规则从第一命令生成第一键。例如,键生成器kg可以基于键编码规则生成与第一值相对应的第一键。

在操作s940中,存储设备100a'基于键编码规则,根据包括在第一键中的随机比特中的至少第二比特,将第一命令分配给多个非易失性存储器中的第一非易失性存储器。例如,第二比特可以对应于图12的z比特。在操作s950中,存储设备100a'基于键编码规则,从与包括在第一键中的至少一些随机比特相对应的第一比特生成第一映射表的映射索引。在实施例中,存储设备100a'可以使用第一比特作为映射索引,而不对包括在第一键中的随机比特执行散列操作。例如,第一比特可以对应于图12的y比特中的一些。在操作s960,存储设备100a'通过使用第一映射表来控制对第一非易失性存储器的操作。

图23是示出存储系统40的实施例的框图。根据本实施例的存储系统40可以对应于图18的存储系统30的修改示例。

参照图23,存储系统40可以包括第一存储设备100a'至第四存储设备100d'和主机200b。主机200b可以包括键值控制模块kvmb和分派器dsp,键值控制模块kvmb控制第一存储设备100a'至第四存储设备100d'。例如,键值控制模块kvmb可以用软件来实现。

键值控制模块kvmb可以包括键编码规则存储器210,键分发规则存储器230和键值请求分发器240。主机200b可以预先将存储在键编码规则存储器210中的键编码规则发送到第一存储设备100a'至第四存储设备100d'。另外,主机200b可以预先将存储在键分发规则存储器230中的键分发规则发送到第一存储设备100a'至第四存储设备100d'。在实施例中,键值请求分发器240可以在主机200b发出读取请求时被激活,并且可以在主机200b发出写入请求时被去激活。具体地,键值请求分发器240可以将对值的读取请求分配给第一存储设备100a'至第四存储设备100d'中的一个。

分派器dsp可以将在主机200b中生成的值分派到第一存储设备100a'至第四存储设备100d'。例如,分派器dsp可以是循环分派器,并且可以以循环方式调度在主机200b中生成的值以将该值分派到第一存储设备100a'至第四存储设备100d'。具体地,由于主机200b不生成与该值相对应的键,分派器dsp可以以循环方式执行分派。在实施例中,分派器dsp可以在主机200b发出读取请求时被激活,并可以在主机200b发出写入请求时被去激活。

当接收到该值时,第一存储设备100a'至第四存储设备100d'中的每一个可以基于键编码规则生成与该值相对应的键,并且可以向主机200b发送包括关于生成的键的键数据的响应消息。因此,即使主机200b不直接生成键,主机200b也可以基于从第一存储设备100a'至第四存储设备100d'接收的键数据来管理键值对。键值请求分发器240可以基于从第一存储设备100a'至第四存储设备100d'接收的键数据,将对值的读取请求分配给第一存储设备100a'至第四存储设备100d'中的一个。

图24示出图23的第一存储设备100a'的实施例。尽管未示出,但是图23的第二存储设备100b'至第四存储设备100d'也可以基本类似于第一存储设备100a'来实现。因此,下面参照图24进行的描述可以应用于第二存储设备100b'至第四存储设备100d'。

参照图23和图24,第一存储设备100a'可以包括第一映射表mt1至第四映射表mt4以及第一非易失性存储器nvm1至第四非易失性存储器nvm4,并且可以分别通过使用第一映射表mt1至第四映射表mt4来控制第一非易失性存储器nvm1至第四非易失性存储器nvm4。另外,第一存储设备100a'还可以包括键生成器kg和请求转发器rf。

当第一存储设备100a'接收到第一值时,键生成器kg可以基于键编码规则从第一值生成第一键。另外,第一存储设备100a'可以基于键编码规则,根据第一键的随机比特中的部分比特(例如,图16的z比特)将包括第一键和第一值的写入请求分配给第一存储设备100a'至第四存储设备100d'中的一个。例如,当第一键的z比特对应于00时,第一存储设备100a'可以将写入请求分配给第一存储设备100a'。例如,当第一键的z比特对应于01时,第一存储设备100a'可以将写入请求分配给第二存储设备100b'。例如,当第一键的z比特对应于10时,第一存储设备100a'可以将写入请求分配给第三存储设备100c'。例如,当第一键的z比特对应于11时,第一存储设备100a'可以将写入请求分配给第四存储设备100d'。当写入请求被分配给第二存储设备100b'至第四存储设备100d'中的一个时,请求转发器rf可以将写入请求转发至第二存储设备100b'至第四存储设备100d'中的一个。

当写入请求被分配给第一存储设备100a'时,第一存储设备100a'可以基于键的随机比特中的部分比特(例如,图16的y2比特)将键分配给第一非易失性存储器nvm1至第四非易失性存储器nvm4中的一个。另外,第一存储设备100a'可以从第一键k1a至第四键k1d中的每一个的随机比特中的至少部分比特(例如,图16的y1比特中的至少部分比特)生成第一映射索引mi1至第四映射索引mi4中的一个,并且可以在映射表mt1至mt4中分别存储与第一映射索引mi1至第四映射索引mi4相对应的映射信息。

图25是示出根据实施例的操作键值存储设备的方法的流程图。参照图25,根据本实施例的操作键值存储设备的方法可以包括例如在图24的第一存储设备100a'中按时间顺序执行的操作。

在操作s1010中,第一存储设备100a'从主机接收关于包括在键中的随机区域和非随机区域中的至少一个的信息。具体地,第一存储设备100a'可以接收包括关于包括在键中的随机区域和非随机区域中的至少一个的信息的键编码规则。在操作s1020中,第一存储设备100a'接收包括第一值的第一命令。在操作s1030中,第一存储设备100a'基于键编码规则从第一命令生成第一键。

在操作s1040中,第一存储设备100a'基于键编码规则根据第一键中包括的随机比特中的至少第二比特将包括第一键和第一值的写入请求分配到多个存储设备之一。在操作s1050中,第一存储设备100a'确定分配的存储设备是否是第一存储设备。作为确定的结果,如果分配的存储设备是第一存储设备,则执行操作s1060,否则执行操作s1070。在操作s1060中,第一存储设备100a'根据写入请求来控制存储器操作。在操作s1070中,第一存储设备100a'将写入请求发送到另一存储设备,写入请求被分配到该另一存储设备。

图26示出了网络系统1000的实施例。

参照图26,网络系统1000可以包括服务器系统1100和经由网络net与服务器系统1100通信的多个终端1210至1230。服务器系统1100可以包括服务器1110和ssd1120。在此,服务器1110可以对应于上述实施例中的主机,并且ssd1120可以对应于上述实施例中的存储设备。在实施例中,ssd1120可以通过使用参照图1至图25描述的实施例来实现。

图27示出网络系统2000的实施例。

参照图27,网络系统2000可以包括客户端组2100和数据中心2200。客户端组2100可以包括客户端设备c,客户端设备c经由第一网络net1(例如,经由互联网)与数据中心2200通信。数据中心2200是存储各种收集数据和提供服务的设施,并且可以包括经由第二网络net2(例如,局域网(lan)或内联网)彼此通信的应用服务器组2210,数据库服务器组2220和对象高速缓存服务器组2230。

应用服务器组2210可以包括应用服务器设备as,并且应用服务器设备as可以处理从客户端组2100接收到的请求,并且可以根据客户端组2100的请求访问数据库服务器组2220或对象高速缓存服务器组2230。数据库服务器组2220可以包括存储由应用服务器设备as处理的数据的数据库服务器设备ds。对象高速缓存服务器组2230可以包括对象高速缓存服务器设备ocs,其临时存储在数据库服务器设备ds中存储的或从数据库服务器设备ds读取的数据,并且因此可以执行应用服务器设备as和数据库服务器设备ds之间的高速缓存的功能。在实施例中,对象高速缓存服务器设备ocs可以通过使用参照图1至图25描述的实施例来实现。

图28示出根据本发明构思的实施例的电子设备3000。参照图28,电子设备3000可以包括处理器3100、存储器设备3200、存储设备3300、调制解调器3400、输入/输出设备3500和电源3600。在实施例中,存储设备3300可以通过使用参照图1至图25描述的实施例来实现。

上述方法的各种操作可以通过能够执行操作的任何合适的装置(诸如各种硬件和/或软件组件、电路和/或模块)来执行。软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以体现在由指令执行系统,装置或设备使用或与其结合使用的任何“处理器可读介质”中,诸如单核或多核处理器或包含处理器的系统。

结合本文公开的实施例描述的方法或算法和功能的各种块或步骤可以直接具体化在硬件中、由处理器执行的软件模块中或两者的组合中。如果以软件实现,则可以将功能作为一个或多个指令或代码存储在有形的非临时计算机可读介质上或者通过其传输。软件模块可以驻留在随机存取存储器(ram),闪存,只读存储器(rom),电可编程rom(eprom),电可擦除可编程rom(eeprom),寄存器,硬盘,可移动盘,cdrom或者本领域已知的任何其他形式的存储介质。

尽管已经参照本发明的实施例具体示出和描述了本发明构思,但将理解,在不脱离所附权利要求的精神和范围的情况下,可以在其中进行形式和细节上的各种改变。

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