存储器控制器及其操作方法与流程

文档序号:18414186发布日期:2019-08-13 19:07阅读:181来源:国知局
存储器控制器及其操作方法与流程

本申请要求于2018年2月6日在韩国知识产权局递交的韩国专利申请no.10-2018-0014715的优先权,其全部公开内容通过引用合并于此。

本发明构思涉及一种存储设备,更具体地,涉及一种存储器控制器及其操作方法。



背景技术:

存储设备可以包括基于对象的存储和基于块的存储,这取决于它们如何管理数据。基于对象的存储可以是被配置为以对象格式存储和管理数据的存储结构。对象可以是具有任意大小的数据,例如,多媒体数据(例如,运动图像)或者文件。基于对象的存储可用于管理对象。基于对象的存储的示例可以是键-值存储设备。



技术实现要素:

根据本发明构思的示例性实施例,提供了一种存储器控制器,包括:存储器,被配置为存储第一映射表和第二映射表;以及散列模块,被配置为从主机接收包括第一键的命令,并且通过使用第一映射表和第二映射表检索与第一键相对应的第一物理地址,其中,第一映射表被配置为存储关于与第一键的部分区域相对应的第一区域的第一区域信息,第一区域包括至少一个分段,并且第二映射表配置为存储多个分段,其中,每个分段包括多个散列条目,所述多个分段被群组化到多个区域中,所述多个散列条目中的每一个存储与键相对应的标签和与键相对应的物理地址。

根据本发明构思的示例性实施例,提供了一种存储器控制器,包括:存储器,被配置为存储第一映射表和第二映射表;以及散列模块,被配置为从主机接收包括第一键的命令,并且通过使用第一映射表和第二映射表检索与第一键相对应的第一物理地址,其中,第一映射表被配置为存储关于与第一键的前缀相对应的第一区域的第一区域信息,第一区域具有可变大小,第二映射表被配置为存储与第一区域相对应的至少一个分段,所述至少一个分段包括多个散列条目,并且第二映射表中的第一区域的大小基于在主机和存储器控制器之间发送和接收的键的前缀而变化。

根据本发明构思的示例性实施例,提供了一种控制器,被配置为:从主机接收包括键的命令;基于所述键,从第一映射表检索关于与所述键的部分区域相对应的第一区域的区域信息;基于所述键和所述区域信息,从第二映射表的第一区域检索第一分段;基于所述键,从所述第二映射表的所述第一分段检索第一散列条目;以及基于所述第一散列条目中包括的第一物理地址,控制对非易失性存储器的写操作或者读操作。

附图说明

通过参考附图详细描述本发明构思的示例性实施例,本发明构思的以上和其他特征将被更清楚地理解,其中:

图1是根据本发明构思的示例性实施例的存储系统的框图;

图2示出了根据本发明构思的示例性实施例的键;

图3a示出了根据本发明构思的示例性实施例的第一映射表;

图3b示出了根据本发明构思的示例性实施例的第二映射表;

图4示出了根据本发明构思的示例性实施例的第二映射表和非易失性存储器的存储器单元阵列;

图5示出了根据本发明构思的示例性实施例的第一映射表和第二映射表;

图6示出了根据本发明构思的示例性实施例的从图5的第一映射表和第二映射表中检索物理地址的操作;

图7示出了根据本发明构思的示例性实施例的图1的控制器;

图8是根据本发明构思的示例性实施例的操作存储器控制器的方法的流程图;

图9是根据本发明构思的示例性实施例的在主机、控制器和非易失性存储器之间的读操作的流程图;

图10示出了根据本发明构思的示例性实施例的图9的读操作;

图11是根据本发明构思的示例性实施例的在主机、控制器和非易失性存储器之间的读操作的流程图;

图12示出了根据本发明构思的示例性实施例的图11的读操作;

图13是根据本发明构思的示例性实施例的在主机、控制器和非易失性存储器之间的写操作的流程图;

图14示出了根据本发明构思的示例性实施例的图13的写操作;

图15是根据本发明构思的示例性实施例的存储系统的修改例的框图;

图16a、图16b和图16c示出了根据本发明构思的示例性实施例的对区域的重新散列操作;

图17是根据本发明构思的示例性实施例的存储系统的修改例的框图;

图18示出了根据本发明构思的示例性实施例的网络系统;

图19示出了根据本发明构思的示例性实施例的网络;以及

图20示出了根据本发明构思的示例性实施例的电子设备。

具体实施方式

图1是根据本发明构思的示例性实施例的存储系统10的框图。

参考图1,存储系统10可以包括存储设备100和主机200,并且存储设备100可以包括存储器控制器110和非易失性存储器(nvm)120。主机200可以通过各种接口与存储设备100进行通信。例如,主机200可以是应用处理器(ap)或者片上系统(soc)。

在本发明构思的示例性实施例中,存储设备100可以是键-值存储设备或者键-值存储器,例如,键-值固态驱动器(ssd)。键-值存储设备可以是被配置为使用键-值对来快速处理数据的设备。“键-值对”可以是键k和值的对,键k可以是唯一的,并且值可以是与键k相对应的数据。“键-值对”可以是“元组”或者“键-值元组”。在键-值对中,键k可以由任意字符串(例如文件名、统一资源标识符(uri)或者散列)来表示,并且值可以是任意类型的数据(例如图像或者用户偏好文件或者文档)。键k和值中的每一个的大小可以变化。例如,值的大小可以根据值中包括的数据而变化。

在下文中,将主要描述存储设备100是键-值存储设备的本发明构思的示例性实施例。换言之,本文中描述的存储设备100可以基本上与键-值存储设备或者键-值存储器同义。然而,存储设备100不限于此,并且可以用在被配置为通过对象单元管理数据的任意对象高速缓存系统或者对象存储系统中。因此,存储设备100可以以除键-值对之外的任意方式通过对象单元管理数据。

在本发明构思的示例性实施例中,主机200可以向存储设备100发送包括键k和值的命令cmd(例如,写命令或者放入命令),并且存储设备100可以响应于命令cmd将值写入nvm120。在本发明构思的示例性实施例中,主机200可以向存储设备100发送包括键k的命令cmd(例如,读命令或者获取命令),并且存储设备100可以响应于命令cmd从nvm120中读取与键k相对应的值。主机200可以不将键k转换为具有固定大小的逻辑块地址(lba)单元。相反,主机200可以产生包括具有可变大小的键k在内的命令cmd,并向存储设备100发送所产生的命令cmd。

在本发明构思的示例性实施例中,主机200可以向存储设备100发送与预定范围的键相对应的命令cmd。该命令cmd可以是迭代命令或者范围查询。例如,主机200可以向存储设备100发送与包括相同前缀的预定范围的键相对应的迭代命令,并且存储设备100可以响应于迭代命令从nvm120中读取与预定范围的键相对应的值。

图2示出了根据本发明构思的示例性实施例的键k。

参考图2,键k可以包括前缀pfx和后缀sfx。前缀pfx可以具有固定大小,并且后缀sfx可以具有可变大小。例如,当键k是16字节时,前缀pfx可以是2字节,并且后缀sfx可以是14字节。在本发明构思的示例性实施例中,第一键和第二键的前缀可以相同,而第一键和第二键的后缀可以不同。例如,第一键的前缀可以是“apple”,并且第一键的后缀可以是“juice”。第二键的前缀可以是“apple”,并且第二键的后缀可以是“pie”。

在本发明构思的示例性实施例中,迭代命令可以是与包括相同前缀的多个键相对应的获取命令。例如,主机200可以发送与第一键至第n键(每个键具有前缀“apple”)相对应的获取命令。当存储设备100仅存储被配置为存储与键相对应的物理地址的散列表时,存储设备100可以从散列表中检索分别与第一键至第n键相对应的第一物理地址至第n物理地址。例如,存储设备100可以参考散列表中包括的所有散列条目,获得与第一键至第n键中的每一个相对应的有效物理地址,读取存储在获得的物理地址中的完整键,并且检查完整键是否落在迭代命令中包括的键的范围内。因此,在迭代命令的情况下,与正常命令相比,检索散列表所花费的时间可以增加n倍。

参考图1和图2,存储器控制器110可以包括第一映射表mt1和第二映射表mt2、以及散列模块hs。在下文中,为了简洁,把存储器控制器110称为控制器。例如,第一映射表mt1和第二映射表mt2可以被加载到控制器110中包括的存储器(例如,图7中的存储器112)中。图1示出了第一映射表mt1和第二映射表mt2被包括在控制器110中的情况,但是本发明构思不限于此。在本发明构思的示例性实施例中,第一映射表mt1和第二映射表mt2可以被加载到位于包括控制器110的控制器芯片外部的存储器芯片(例如,动态随机存取存储器(dram)芯片)中。第一映射表mt1可以存储关于分配给每个前缀pfx的区域的区域信息,第二映射表mt2可以存储与每个区域相对应的至少一个分段,并且每个分段可以包括多个散列条目。将参考图3a和图3b更详细地描述第一映射表mt1和第二映射表mt2。

散列模块hs可以基于键k执行散列操作,并且产生与键k相对应的散列索引。在本发明构思的示例性实施例中,散列模块hs可以对键k的后缀sfx和键k的区域信息执行第一散列操作以检索分段。此外,散列模块hs可以对键k的后缀sfx执行第二散列操作以检索散列条目。例如,第一散列操作可以是一致性散列操作。例如,第二散列操作可以是跳房子(hopscotch)散列操作。

nvm120可以包括存储器单元阵列mca,该阵列mca可以包括存储器块blk1至blkz。存储器块blk1可以包括多个页pg1至pgk。这里,z和k中的每一个可以是正整数,并且可以根据本发明构思的示例性实施例进行各种改变。例如,存储器块blk可以是擦除操作的单元,而页pg可以是写操作和读操作的单元。在本发明构思的示例性实施例中,存储器单元阵列mca可以包括多个平面、多个晶圆或者多个芯片。在本发明构思的示例性实施例中,nvm120可以包括闪存设备,例如,nand闪存设备。然而,本发明构思不限于此,并且nvm120可以包括电阻存储器件,诸如电阻ram(reram)、相变ram(pram)和磁ram(mram)。

存储系统10例如可以是例如个人计算机(pc)、数据服务器、联网存储器、物联网(iot)设备或者便携式电子设备。便携式电子设备可以是膝上型计算机、移动电话、智能电话、平板pc、个人数字助理(pda)、企业数字助理(eda)、数码相机、数码录像机、音频设备、便携式多媒体播放器(pmp)、个人导航设备(pnd)、mpeg-1音频层3(mp3)播放器、手持式游戏机,电子书(e-book)或者可穿戴设备。

在本发明构思的示例性实施例中,存储设备100可以是嵌入在电子设备中的内部存储器。例如,存储设备100可以是固态驱动器(ssd)、嵌入式通用闪存(ufs)存储器件或者嵌入式多媒体卡(emmc)。在本发明构思的示例性实施例中,存储设备100可以是可拆卸地附接到电子设备的外部存储器。例如,存储设备100可以是ufs存储卡、紧凑型闪存(cf)卡、安全数字(sd)卡、微型安全数字(微型sd)卡、迷你型sd卡、极速数字(xd)卡或者记忆棒。

图3a示出了根据本发明构思的示例性实施例的第一映射表mt1。

参考图3a,第一映射表mt1可以存储关于分别与多个前缀相对应的多个区域的区域信息。因此,可以将具有不同前缀的键分配给不同的区域。例如,可以将第一前缀pfx1分配给第一区域rg1,可以将第二前缀pfx2分配给第二区域rg2,并且可以将第三前缀pfx3分配给第三区域rg3。例如,第一前缀pfx1可以是“apple”,第二前缀pfx2可以是“peach”,并且第三前缀pfx3可以是“grape”。

图3b示出了根据本发明构思的示例性实施例的第二映射表mt2。

参考图3b,第二映射表mt2可以包括多个分段,并且该多个分段可以被群组化到多个区域中。例如,分段sg1a、sg1b和sg1c可以被群组化到第一区域rg1中,分段sg2a和sg2b可以被群组化到第二区域rg2中,并且分段sg3a、sg3b和sg3c可以被群组化到第三区域rg3中。此外,每个分段可以包括多个散列条目he1、he2和he3。在本发明构思的示例性实施例中,散列条目he1至he3中的每一个可以存储与键的一部分相对应的标签以及与该标签相对应的物理地址ppn。例如,第一散列条目he1可以存储第一标签tga和第一物理地址ppna,第二散列条目he2可以存储第二标签tgb和第二物理地址ppnb,并且第三散列条目he3可以存储第三标签tgc和第三物理地址ppnc。

图4示出了根据本发明构思的示例性实施例的第二映射表mt2和nvm的存储器单元阵列mca。

参考图4,存储器单元阵列mca可以包括第一物理地址ppna、第二物理地址ppnb和第三物理地址ppnc。第一物理地址ppna可以存储第一键k1和第一值v1,第二物理地址ppnb可以存储第二键k2和第二值v2,并且第三物理地址ppnc可以存储第三键k3和第三值v3。在这种情况下,存储在存储器单元阵列mca中的第一至第三键k1、k2和k3中的每一个可以对应于完整键。此外,存储在第二映射表mt2中的第一标签tga、第二标签tgb和第三标签tgc可以分别对应于第一至第三键k1、k2和k3的一部分。

参考图1至图4,当存储设备100接收到针对具有第一前缀pfx1的多个键的迭代命令时,存储设备100可以不检索第二映射表mt2的整个范围(例如,第二映射表mt2中包括的所有散列条目)。相反,存储设备100从包括在第二映射表mt2的部分范围(例如,第一区域rg1)中的分段sg1a至sg1c中检索分别与多个键相对应的散列条目。例如,当存储设备100接收到与第一键至第n键相对应的迭代命令并且第一键至第n键包括第一前缀pfx1时,存储设备100可以仅检索第一区域rg1中包括的散列条目,并且检查存储在检索到的散列条目中的键是否对应于第一键至第n键。因此,存储设备100可以使用基于散列的映射来有效且高效地处理迭代命令。

图5示出了根据本发明构思的示例性实施例的第一映射表mt1a和第二映射表mt2a。

参考图1和图5,第一映射表mt1a可以存储与m个前缀相对应的m条区域信息,并且m可以是整数。因此,第一映射表mt1a可以是前缀-2-区域(prefix2region)表。在本发明构思的示例性实施例中,区域信息可以包括指示每个区域的头位置(例如,头索引)的头hd和指示每个区域的大小的长度。这里,头hd可以是与每个区域中包括的头分段相对应的索引。

在本发明构思的示例性实施例中,可以改变与前缀相对应的区域的大小。例如,在运行时,当在主机200和存储设备100之间发送和接收的键的包括第一前缀pfx1的键所占的百分比增加时,与第一前缀pfx1相对应的第一区域rg1的大小可以增加。因此,在本发明构思的示例性实施例中,第一区域rg1的长度可以包括指示每个区域的旧大小的第一长度lold和指示每个区域的经改变的大小的第二长度lnew。

例如,根据与第一前缀pfx1相对应的第一区域信息ri1,第一区域rg1的头hd可以是“120”,第一区域rg1的第一长度lold可以是“3”,并且第一区域rg1的第二长度lnew可以是“4”。当在主机200和存储设备100之间发送和接收的、且包括第一前缀pfx1的键的百分比增加时,第一区域rg1的大小可以增加,并且因此,第二长度lnew可以大于第一长度lold。

例如,根据与第二前缀pfx2相对应的第二区域信息ri2,第二区域rg2的头hd可以是“200”,第二区域rg2的第一长度lold可以是8,并且第二区域rg2的第二长度lnew也可以是8。当在主机200和存储设备100之间发送和接收的、且包括第二前缀pfx2的键的百分比恒定或者在临界范围内改变时,第二区域rg2的大小可以不改变,并且因此,第一长度lold可以等于第二长度lnew。

然而,本发明构思不限于此。例如,区域信息可以包括每个区域的头分段segmenthead和每个区域的尾分段segmenttail。例如,区域信息可以表示为等式(1):

prefix2region[prefix]=(segmenthead,segmenttail)(1)。

此外,第二映射表mt2a可以存储多个分段sg,每个分段可以包括多个散列条目,并且每个散列条目可以存储与键相对应的物理地址。因此,第二映射表mt2a可以是键-2-ppn(k2p)映射表。第一区域rg1的头索引可以是“120”,第一区域rg1的尾索引可以是“123”,并且第一区域rg1可以包括四个分段。第二区域rg2的头索引可以是“200”,第二区域rg2的尾索引可以是“207”,并且第二区域rg2可以包括八个分段。

每个分段sg可以包括l个散列条目,其中l可以是整数。例如,l可以是256。散列条目中的每一个可以包括与键的一部分相对应的标签tag和用于将与键相对应的值存储在nvm120中的物理地址ppn。例如,当使用跳房子散列操作时,散列条目中的每一个还可以包括位图h。这里,位图h可以指示与散列索引相对应的至少一个散列条目的存储位置。例如,当确定冲突限制为4时,位图h可以是4位。例如,可以将存储与散列索引相对应的散列条目的位置设置为“1”,而可以将不存储与散列索引相对应的散列条目的位置设置为“0”。

如上所述,根据本实施例,当存储设备100接收到针对包括第二前缀pfx2的键的迭代命令时,存储设备100可以检索第二区域rg2中包括的分段中所包括的散列条目,并且获得与键相对应的物理地址。例如,当l是256时,存储设备100可以检索2048(=8×256)个散列条目并获得物理地址。然而,与本实施例不同,当不包括第一映射表mt1a时,可以不定义与第二前缀pfx2相对应的区域。因此,由于存储设备100需要检索第二映射表mt2a中包括的所有散列条目,因此检索过程中涉及的操作量可能非常大,并且检索时间可能非常长。

例如,根据本实施例,第二映射表mt2a中要扫描的区域可以与预定义前缀的数量成反比地减小。例如,当预定义前缀的数量是m时,第二映射表mt2a中要扫描的区域可以减少到1/m。此外,当执行写操作时,由于关于相应键的映射信息被存储在分配给第二映射表mt2a中的相应键的前缀的区域中,所以由第二映射表mt2a的相同区域中包括的散列条目指示的所有完整键可以具有相同的前缀。因此,读取第二映射表mt2a的相同区域中包括的所有键-值对所需的操作量可以等于处理迭代命令所需的操作的最小值。

图6示出了根据本发明构思的示例性实施例的从图5的第一映射表mt1a和第二映射表mt2a中检索物理地址的操作。

参考图1和图6,控制器110可以基于例如从主机200提供的命令cmd中包括的键k的前缀pfx1,从第一映射表mt1a中检索与前缀pfx1相对应的第一区域信息ri1。例如,与键k的前缀pfx1相对应的区域可以是第一区域rg1。控制器110的散列模块hs可以对键k的后缀和区域信息执行第一散列操作hashing1,并且从第二映射表mt2a的第一区域rg1检索分段。例如,检索到的分段的索引可以是“123”。

随后,散列模块hs可以对键k的后缀执行第二散列操作hashing2,并且从检索到的分段中包括的多个散列条目中检索散列条目。例如,检索到的散列条目中包括的物理地址可以是ppna。如上所述,根据本发明构思的示例性实施例,散列模块hs可以顺序地执行第一散列操作hashing1和第二散列操作hashing2以获得物理地址。

图7示出了根据本发明构思的示例性实施例的图1的控制器110。

参考图1和图7,控制器110可以包括通过总线115彼此通信的处理器111、存储器112、主机接口113和nvm接口114。处理器111可以包括中央处理单元(cpu)或者微处理器(mp),并且控制控制器110的整体操作。根据本发明构思的示例性实施例,处理器111可以是多核处理器。例如,处理器111可以是双核处理器或者四核处理器。

存储器112可以通过处理器111的控制进行操作,并且可以用作操作存储器、缓冲存储器或者高速缓冲存储器。例如,存储器112可以是易失性存储器(例如动态随机存取存储器(dram)或静态随机存取存储器(sram)),或者可以是nvm(例如pram或闪存)。在本发明构思的示例性实施例中,第一映射表mt1和第二映射表mt2、以及散列模块hs可以加载到存储器112中。散列模块hs可以是固件或者软件并且可以加载到存储器112中。在本发明构思的示例性实施例中,散列模块hs可以是闪存转换层(ftl)。然而,本发明构思不限于此,并且散列模块hs可以是硬件。

主机接口113可以提供主机200和控制器110之间的接口。主机接口113可以提供根据以下项的接口:通用串行总线(usb)、多媒体卡(mmc)、外围组件互连-高速(pci-e)、高级技术附件(ata)、串行ata(sata)、并行ata(pata)、小型计算机系统接口(scsi)、串行连接scsi(sas)、增强型小型设备接口(esdi)和智能驱动电子设备(ide)。

nvm接口114可以提供控制器110和nvm120之间的接口。例如,可以通过nvm接口114在控制器110和nvm120之间发送和接收第一映射表mt1和第二映射表mt2、键和值。在本发明构思的示例性实施例中,nvm接口114的数量可以对应于存储设备100中包括的nvm芯片的数量或者控制器110和nvm120之间的通道的数量。

图8是根据本发明构思的示例性实施例的操作存储器控制器的方法的流程图。

参考图8,根据本发明构思的示例性实施例的操作存储器控制器的方法可以包括例如由图1的控制器110以时间顺序执行的操作。因此,以上参考图1至图7给出的描述可以应用于本实施例,并且将省略重复的描述。

在操作s100中,控制器110可以接收包括键k的命令cmd。在本发明构思的示例性实施例中,命令cmd可以是包括键k和值的放入命令。在本发明构思的示例性实施例中,命令cmd可以是包括键k的获取命令。在本发明构思的示例性实施例中,命令cmd可以是包括键k的擦除命令。在本发明构思的示例性实施例中,命令cmd可以是基于前缀的迭代命令。例如,控制器110的主机接口113可以包括命令解码器,其可以对命令cmd进行解码并且区分从主机200接收到的命令cmd的类型。

在操作s120中,控制器110可以从第一映射表mt1检索关于第一区域rg1的区域信息。例如,控制器110可以从存储在第一映射表mt1中的区域信息中检索关于与键k中包括的前缀相对应的第一区域rg1的区域信息。例如,控制器110的处理器111可以访问存储器112并从第一映射表mt1中检索关于第一区域rg1的区域信息。例如,区域信息可以包括指示第一区域rg1的头索引的头hd和指示第一区域rg1的经改变的大小的第二长度lnew。在本发明构思的示例性实施例中,当命令cmd是迭代命令时,与包括相同前缀的键相对应的区域信息可以是相同的。

在操作s140中,控制器110可以从包括在第二映射表mt2的第一区域中的分段中检索第一分段。例如,散列模块hs可以对键k中包括的后缀和区域信息中包括的第二长度lnew执行第一散列操作hashing1,并且检索第一分段。例如,第一分段的索引可以是“123”。在本发明构思的示例性实施例中,当命令cmd是迭代命令时,与分别包括不同后缀的键相对应的分段可以分别不同。

在操作s160中,控制器110可以从包括在第二映射表mt2的第一分段中的散列条目中检索第一散列条目。例如,散列模块hs可以对键k中包括的后缀执行第二散列操作hashing2,并且检索第一散列条目。例如,第一散列条目可以存储与键k的一部分相对应的标签和与键k相对应的第一物理地址。在本发明构思的示例性实施例中,当命令cmd是迭代命令时,与分别包括不同后缀的键相对应的散列条目可以分别不同。因此,与键相对应的物理地址可以彼此不同。

在操作s180中,控制器110可以基于第一物理地址控制对nvm120的写操作或读操作。在本发明构思的示例性实施例中,当命令cmd是放入命令时,控制器110可以控制将键k以及与键k相对应的值写入nvm120的第一物理地址的操作。在本发明构思的示例性实施例中,当命令cmd是获取命令时,控制器110可以控制从nvm120的第一物理地址读取与键k相对应的值的读操作。在本发明构思的示例性实施例中,当命令cmd是迭代命令时,控制器110可以控制从nvm120的不同物理地址读取与键相对应的值的操作。

图9是根据本发明构思的示例性实施例的主机200、控制器110和nvm120之间的读操作的流程图。图10示出了根据本发明构思的示例性实施例的图9的读操作。

根据本实施例的读取操作可以与图8的方法相对应,并且现在将参考图1、图9和图10进行描述。第一映射表mt1a和第二映射表mt2a可以被加载到dram中。例如,键可以是16字节,前缀可以是2字节,并且后缀可以是14字节。

在操作s200中,主机200可以向控制器110发送命令cmd。例如,命令cmd可以是迭代命令。在下文中,将主要描述命令cmd是迭代命令的实施例。迭代命令中包括的所有键可以具有相同的前缀。在操作s210中,控制器110可以基于键的前缀从第一映射表mt1a获得区域信息。例如,控制器110可以使用键的前缀prefix2b从第一映射表mt1a检索与键对应的区域,并获得与检索到的区域相对应的区域信息(例如,头hd以及第一长度lold和第二长度lnew)。操作s210由图10中的①“使用prefix2b获取hd、lnew、lold”示出。

在操作s220中,控制器110可以基于键的后缀从第二映射表mt2a的区域获得分段。例如,控制器110可以对键的后缀suffix14b和第二长度lnew执行执行第一散列操作,例如跳变一致性散列操作jumpch(suffix14b,lnew),并且获得第二映射表mt2a的新分段sgnew。下面将参考图16a至图16c描述跳变一致性散列操作jumpch(suffix14b,lnew)。在本发明构思的示例性实施例中,当命令cmd是正常命令时,控制器110可以基于键的后缀suffix14b和第二长度lnew从第二映射表mt2a的一个区域获得一个分段。操作s220由图10中的②“通过jumpch(suffix14b,lnew)获取sgnew”示出。

在操作s230中,控制器110可以基于键的后缀从第二映射表mt2a的分段获得散列条目。在这种情况下,散列条目可以各自包括物理地址。例如,控制器110可以对键的后缀suffix14b执行执行第二散列操作,例如跳房子散列操作hopscotch(suffix14b),检索新散列条目henew,并且从新散列条目henew获得新的物理地址henew_ppn。在本发明构思的示例性实施例中,当命令cmd是正常命令时,控制器110可以基于键的后缀suffix14b从第二映射表mt2a的一个分段获得一个散列条目。操作s230由图10中的③“通过hopscotch(suffix14b)获取henew_ppn”示出。

在操作s240中,控制器110可以基于物理地址发出读命令。例如,控制器110可以确定新物理地址henew_ppn是否有效。如果新物理地址址henew_ppn有效,则控制器110可以使用该有效物理地址发出读命令以从nvm120读取值。如果新物理地址址henew_ppn无效,则可以执行参考图11和图12描述的根据本发明构思的示例性实施例的操作。操作s240由图10中的④“使用有效ppn读取值”表示。

在操作s250中,控制器110可以向nvm120发送读命令。在这种情况下,读命令可以包括新物理地址henew_ppn。在操作s260中,nvm120可以对存储器单元阵列mca执行读操作并读取值。在操作s270中,nvm120可以向控制器110发送读取的值。在操作s280中,控制器110可以向主机200发送读取的值。

图11是根据本发明构思的示例性实施例的主机200、控制器110和nvm120之间的读操作的流程图。图12示出了根据本发明构思的示例性实施例的图11的读操作。

根据本实施例的读取操作可以与图8的方法相对应,并且现在将参考图1、图11和图12进行描述。例如,可以在图9的操作s230或者图10的操作③之后执行根据本实施例的读操作。因此,参考图9和图10给出的上述描述可以应用于本实施例。

在第一映射表mt1a中,当与键的前缀prefix2b相对应的区域是第一区域rg1时,可以获得关于第一区域rg1的区域信息。在这种情况下,第一区域rg1的大小可以从3增加到4,并且与第一区域rg1相对应的区域信息可以包括第一区域rg1的头hd、第一长度lold和第二长度lnew。随后,可以对键的后缀suffix14b和第二长度lnew执行第一散列操作以获得新分段sgnew。例如,作为第一散列操作的结果,新分段sgnew的索引可以是“123”。当刚刚添加新分段sgnew时,新分段sgnew的所有散列条目可以是无效的(例如,参见图12中的③)。换言之,存储在散列条目中的所有物理地址可以是无效地址。当新分段sgnew的所有散列条目都无效时,以下操作s300至s395可以对应于主机200、控制器110和nvm120之间的读操作。换言之,当在图9的操作s240中确定新物理地址henew_ppn无效时,可以执行操作s300至s395。

在操作s300中,控制器110可以确定新分段sgnew中包括的散列条目是否有效。如果确定散列条目无效,则可以执行操作s310。否则,如果确定散列条目有效,则可以执行操作s360。操作s360至s395可以对应于操作s240至s280。在操作s310中,控制器110可以基于键的后缀从第二映射表mt2a获得旧分段。例如,控制器110可以执行对键的后缀suffix14b和第一长度lold执行第一散列操作,例如跳变一致性散列操作jumpch(suffix14b,lold),并且获得第二映射表mt2a的旧分段sgold。操作s310由图12中的④“通过jumpch(suffix14b,lold)检查sgold”示出。旧分段sgold的索引可以是“121”。

在操作s320中,控制器110可以基于键的后缀从第二映射表mt2a的旧分段sgold获得旧散列条目heold。例如,控制器110可以执行对键的后缀suffix14b执行第二散列操作,例如跳房子散列操作hopscotch(suffix14b),从旧分段sgold检索旧散列条目heold,并且从旧散列条目heold获得旧物理地址heold_ppn。

在操作s330中,控制器110可以确定旧散列条目heold的物理地址heold_ppn是否有效。如果确定旧散列条目heold的物理地址heold_ppn有效,则可以执行操作s340。否则,如果确定旧散列条目heold的物理地址heold_ppn无效,则在操作s335,控制器110可以向主机200发送错误响应。

在操作s340中,控制器110可以将旧散列条目heold复制到新散列条目henew。在操作s350中,控制器110可以删除旧散列条目heold。操作s340和s350由图12中的⑤“如果heold_ppn有效,则将heold复制到henew,然后删除heold”示出。在操作360中,控制器110可以发出读命令。在本发明构思的示例性实施例中,可以在操作s360之后或者在操作s390之后执行操作s350。

在操作s370中,控制器110可以向nvm120发送读命令。在操作s380中,nvm120可以执行读操作并且读取值。操作s380由图12中的⑥“使用有效ppn读取值”示出。在操作s390中,nvm120可以向控制器110发送读取的值。在操作s395中,控制器110可以向主机200发送该值。

图13是根据本发明构思的示例性实施例的主机200、控制器110和nvm120之间的写操作的方法的流程图。图14示出了根据本发明构思的示例性实施例的图13的写操作。根据本实施例的写操作可以与图8的方法相对应,并且现在将参考图1、图13和图14进行描述。

在操作s400中,主机200可以向控制器110发送包括键和值的命令(例如,放入命令)。在操作s410中,控制器110可以基于键的前缀从第一映射表mt1a获得区域信息。例如,当与键的前缀prefix2b相对应的区域是第一映射表mt1a中的第二区域rg2时,控制器110可以获得第二区域rg2的第二区域信息r12。在这种情况下,第二区域rg2的大小可以是恒定的。根据第二区域信息ri2,第二区域rg2的头hd可以是“200”,并且第二区域rg2的第一长度lold和第二长度lnew中的每一个可以是“8”。

在操作s420中,控制器110可以基于键的后缀从第二映射表mt2a的区域获得分段sg和散列条目he。例如,控制器110的散列模块hs可以对键的后缀suffix14b和第二长度lnew执行第一散列操作以获得分段sg。例如,作为第一散列操作的结果,分段sg的索引可以是“207”。此后,散列模块hs可以对键的后缀suffix14b执行第二散列操作,并且在第二映射表mt2a的分段sg中获得散列条目he。散列条目he可以存储与键相对应的物理地址he_ppn。

在操作s430中,控制器110可以基于物理地址he_ppn发出读命令。在操作s435中,控制器110可以向nvm120发送读命令。在操作s440中,nvm120可以执行读操作并且读取完整键。例如,nvm120可以读取存储在物理地址he_ppn中的完整键。操作s440可以由图14中的④“使用he_ppn读取完整键”参考。在操作s445中,nvm120可以向控制器110发送读取的完整键。在操作s450中,控制器110可以确定完整键是否等于输入键。如果确定完整键等于输入键,则可以执行操作s460。否则,可以执行操作s475。

在操作s460中,控制器110可以使散列条目he的物理地址无效。在本发明构思的示例性实施例中,控制器110可以使旧值无效。操作s460可以由图14中的④“如果完整键等于key14b,则使旧值无效”参考。在操作s470中,控制器110可以将物理地址更新为第二映射表mt2a的散列条目he。操作s470可以由图14中的⑤“存储新值并更新he_ppn”参考。在操作475中,控制器110可以发出写命令。在操作s480中,控制器110可以向nvm120发送写命令。在操作s485中,nvm120可以执行写操作。在这种情况下,nvm120可以将新值写入物理地址。在操作s490中,nvm120可以向控制器110发送指示写完成的响应消息。在操作s495中,控制器110可以向主机200发送指示写完成的响应消息。

图15是根据本发明构思的示例性实施例的存储系统的修改例10a的框图。

参考图15,存储设备100a可以包括控制器110a和nvm120,并且控制器110a可以包括第一映射表mt1和第二映射表mt2、散列模块hs′和映射表管理器mtm。与图1的控制器110相比,控制器110a还可以包括映射表管理器mtm。以上参考图1至图14呈现的所有描述可以应用于本实施例。在下文中,将主要描述映射表管理器mtm。

映射表管理器mtm可以基于在运行时在主机200和存储设备100a之间发送和接收的相应键的前缀所占的百分比来动态地改变分配给特定前缀的区域。当与前缀相对应的区域的大小是固定的并且输入和输出操作集中在实际运行时的特定前缀时,可能无法将新散列条目存储在分配给相应前缀的区域中。

在本发明构思的示例性实施例中,当在主机200和存储设备100a之间发送和接收的键的第一前缀所占的百分比增加时,映射表管理器mtm可以增加分配给第二映射表mt2中的第一前缀的区域的大小。在本发明构思的示例性实施例中,当在主机200和存储设备100a之间发送和接收的键的第一前缀所占的百分比减少时,映射表管理器mtm可以减小分配给第二映射表mt2中的第一前缀的区域的大小。此外,映射表管理器mtm可以基于区域的经改变的大小来修改存储在第一映射表mt1中的区域信息。此外,当在主机200和存储设备100a之间发送和接收的键的第一前缀所占的百分比在预定范围内改变时,映射表管理器mtm可以不改变分配给第二映射表mt2中的第一前缀的区域的大小。

如上所述,映射表管理器mtm可以根据主机200的输入/输出(i/o)模式动态地改变每个区域的大小。因此,可能发生重新散列。例如,可以假设与键a相对应的物理地址被存储在区域b中包括的散列条目c中(例如,hash(a)=c)。在这种情况下,当区域b的大小改变时,hash(a)可以被改变为除了c以外的值。换言之,当区域b的大小被动态改变时,可以基于经改变的散列结果(例如,hash(a))来重新定位存储在区域b中的所有散列条目。

根据本实施例,散列模块hs’可以使用一致性散列操作来减少重新散列的开销。这里,一致性散列操作可以是散列算法,通过该散列算法,当区域中包括的分段的数量增加或减少时,可以将重新散列的键的数量维持在k/n。这里,k可以是所有散列条目的数量,并且n可以是当前的分段数量。例如,可以假设第一区域包括n个分段,并且每个分段包括r个散列条目。在这种情况下,当添加分段以增加第一区域的大小时,可以重新定位总共r×n个散列条目。相反,当应用一致性散列操作时,可以将重新散列的散列条目的量减少到r(=r×n/n)。在下文中,将参考图16a至图16c来描述一致性散列操作。

图16a至图16c示出了根据本发明构思的示例性实施例的对区域rg的重新散列操作。

参考图16a至图16c,在本发明构思的示例性实施例中,可以减小区域rg的大小。例如,区域rg可以被修改为第一修改区域rg′。在本发明构思的示例性实施例中,区域rg的大小可以增加。例如,区域rg可以被修改为第二修改区域rg”。区域rg可以具有原始大小6。因此,区域rg可以包括第一分段sg1、第二分段sg2、第三分段sg3、第四分段sg4、第五分段sg5和第六分段sg6。

第一修改区域rg’的大小可以是5。例如,可以从区域rg中排除第四分段sg4以产生第一修改区域rg′。在这种情况下,控制器110a的散列模块hs’可以在剩余分段(换言之,第一分段sg1、第二分段sg2、第三分段sg3、第五分段sg5和第六分段sg6)中均匀地划分已经分配给第四分段sg4的键。例如,散列模块hs’可以将已经分配给第四分段sg4的键的五分之一(1/5)分配给第一分段sg1至第三分段sg3以及第五分段sg5和第六分段sg6中的每一个。

第二修改区域rg”的大小可以是7。例如,可以将第七分段sg7添加到区域rg以产生第二修改区域rg”。在这种情况下,散列模块hs’可以将分配给第一分段sg1至第六分段sg6中的每一个的键的六分之一(1/6)映射到第七分段sg7。

图17是根据本发明构思的示例性实施例的存储系统的修改例10b的框图。

参考图17,存储系统10b可以包括第一存储设备sd1和第二存储设备sd2以及主机200。例如,当主机200意图将存储在第一存储设备sd1中的预定范围的值传送到第二存储设备sd2时,主机200可以向第一存储设备sd1发送基于前缀的迭代命令。例如,迭代命令可以是用于请求读取与包括固定前缀的所有键相对应的值的命令。

第一存储设备sd1可以是图1的存储设备100或者图15的存储设备100a。因此,第一存储设备sd1可以存储第一映射表mt1和第二映射表mt2,第一映射表mt1被配置为存储与前缀相对应的区域信息,第二映射表mt2包括针对每个区域的分段。响应于从主机200接收到的迭代命令,第一存储设备sd1可以从第一映射表mt1获得与迭代命令中包括的前缀相对应的区域信息。此后,第一存储设备sd1可以基于键的后缀和区域信息执行散列操作,从第二映射表获得物理地址,从物理地址读取值,并且向主机200发送读取的值。因此,主机200可以将具有特定前缀的键的值写入第二存储设备sd2。

图18示出了根据本发明构思的示例性实施例的网络系统1000。

参考图18,网络系统1000可以包括服务器系统1100和多个终端1210、1220和1230,多个终端1210、1220和1230被配置为通过网络net与服务器系统1100进行通信。服务器系统1000可以包括主机1100和ssd1120。在这种情况下,服务器1110可以对应于上述实施例的主机(例如,200),并且ssd1120可以对应于上述实施例的存储设备(例如,100)。在本发明构思的示例性实施例中,可以使用参考上面图1至图17描述的实施例来实现ssd1120。

图19示出了根据本发明构思的示例性实施例的网络系统2000。

参考图19,网络系统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可以包括被配置为临时存储数据库服务器设备ds中存储的数据或者从数据库服务器设备ds读取的数据的对象高速缓存服务器设备ocs。因此,对象高速缓存服务器组2230可以用作应用服务器设备as和数据库服务器设备ds之间的高速缓存器。在本发明构思的示例性实施例中,可以使用上面参考图1至图17描述的实施例来实现对象高速缓存服务器设备ocs。

图20示出了根据本发明构思的示例性实施例的电子设备3000。

参考图20,电子系统3000可以包括经由总线3700彼此进行通信的处理器3100、存储器设备3200、存储设备3300、调制解调器3400、输入/输出(i/o)设备3500和电源3600。在本发明构思的示例性实施例中,可以使用上面参考图1至图17描述的实施例来实现存储设备3300。

尽管已经参考本发明构思的示例性实施例具体示出和描述了本发明构思,但本领域普通技术人员将理解,在不脱离所附权利要求所限定的本发明构思的精神和范围的情况下,可以进行形式和细节上的多种改变。

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