利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置制造方法

文档序号:6533466阅读:200来源:国知局
利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置制造方法
【专利摘要】一种用于在非均匀访问存储器中存储记录的方法和装置。在多种实施例中,记录的放置定位于该存储器的一个或多个区域。这可利用的散列函数的不同排序列表来实现,以优先映射记录至存储器的不同区域,以实现一个或多个性能特性或考虑潜在的存储器技术的区别。例如,散列函数的一个排序列表可定位数据用于更快速的访问。散列函数的另一列表可定位期望具有相对较短有效期的数据。定位此类数据可显著改进擦除性能和/或存储器有效期,例如,通过在一个位置集中废弃的数据元素。因此,排序散列函数的两个或多个列表可改进访问延迟、存储器有效期、和/或操作速率中的一个或多个。
【专利说明】利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置

【技术领域】
[0001]本发明涉及计算机数据字典(dict1nary)以及用于在非均匀访问存储器中放置记录的方法和装置。

【背景技术】
[0002]索引(也称数据字典或关联阵列)是用于将被称为键的标识值映射至相关值的相关算法和数据结构,也称卫星数据。键及它的卫星数据的联结(concatenat1n)包含记录数据条目的一个实施例。
[0003]在一个示例,索引被划分为存储段,每个存储段具有足够的空间用于N条记录数据条目,例如30条。存储段具有大小域,例如512字节,指示多少个记录可容纳于该存储段。记录数据条目能够以排序的顺序、时间顺序(其到达顺序)存储于存储段,或间接表可用于以任意顺序存储记录数据条目。多种算法已用于分配记录数据条目至存储段,典型地以均匀分发跨全部存储段的记录数据条目为目标。在某些示例,如果初始存储段被填充,多个等级的存储段被提供以处理溢出。
[0004]多个应用需要具有大量条目的索引,因此需要千兆字节的存储器存储相关数据结构,并且需要很高的操作速率,例如,每秒成千上万的操作。某些存储器技术(如DRAM)可以提供必要的性能,但不是足够密集以经济地存储该大量记录。其他存储器技术(如磁盘技术)可具有该密度,但没有所需要的性能。因此,正需要一种存储器技术,该存储器技术能够同时满足存储大小和操作速率需求,用于生成和保持大量的记录。


【发明内容】

[0005]根据本发明,一种新的方法和装置被提供用于在非均匀访问存储器中放置记录数据条目(例如,用于索引)。在多种实施例,记录数据条目(记录)的放置定位于存储器的一个或多个区域,其中不同区域可以包含不同类型的存储器。这可以利用散列函数的不同排序列表实现,以优先映射记录至存储器不同的区域,从而实现一个或多个性能特性或考虑潜在的存储器技术的区别。例如,一个散列函数的排序列表可定位用于更快速的访问的记录。另一散列函数的排序列表可定位期望具有相对较短有效期的记录。定位该记录可显著改进性能和/或存储器有效期,例如,通过在一个位置集中废弃记录。因此,两个(或多个)排序散列函数的列表可改进访问延迟、存储器有效期、和/或操作速率中的一个或多个。
[0006]根据本发明的一个实施例,提供在非均匀访问存储器中存储索引记录的方法,每一个记录包含记录键,并且其中多个散列函数用于将记录映射至用于转译到所述非均匀访问存储器中的物理位置的逻辑存储段,该方法包含:
将散列函数的第一排序列表应用到第一类型的记录的记录键,以优先将第一记录类型映射至该存储器的第一区域;以及将散列函数的第二排序列表应用到第二类型的记录的记录键,以优先将第二记录类型映射至该存储器的不限于第一区域的第二区域。
[0007]根据一个实施例,保持存储段转译表以用于将逻辑存储段标识符映射至该存储器的物理存储段位置,其中该逻辑存储段标识符通过应用步骤生成,并且该表包含逻辑存储段标识符到物理存储段位置的映射,其中在该物理存储段位置处,相关联的记录存储于该存储器中。
[0008]根据一个实施例,第一记录类型在该存储器中相比第二记录类型具有更高的预期访问需求。
[0009]根据一个实施例,第一记录类型在该存储器中相比第二记录类型具有更低的预期有效期。
[0010]根据一个实施例,第一记录类型相比第二记录类型具有更高的预期引用需求。
[0011]根据一个实施例,存储器的第一区域比该存储器的第二区域具有更快的访问特性。
[0012]根据一个实施例,存储器的第一区域比该存储器的第二区域具有更长的预期存储器有效期。
[0013]根据一个实施例,非均匀访问存储器包含具有不同的特性的计算机存储媒体,所述特性包括读访问时间、写访问时间、一次性写入限制、数据位置或特定地址访问时间,多个步骤的写入或读取处理以及/或者导致对不同的地址的访问显示出本质上不同的访问特性的其他约束。
[0014]根据一个实施例,存储器包含闪存设备、相变存储器设备、固态存储器设备、DRAM和硬盘存储器设备中的一个或多个。
[0015]根据一个实施例,存储器包含闪存设备,该闪存设备包括多个擦除块,每一个擦除块包含多个页,并且每一个页包含多个存储段。
[0016]根据一个实施例,该方法包括执行清除处理,以生成空擦除块。
[0017]根据一个实施例,该存储器包含物理设备层,该物理设备层通过非均匀读取和写入访问来表征。
[0018]根据一个实施例,存储器包括擦除第一区域,包括将第一区域中的有效记录重写至存储器中的另一位置,并擦除第一区域中的一个或多个块。
[0019]根据一个实施例,该方法包括修改以下一个或多个:
散列函数的第一排序组中的散列函数的数量或类型;
散列函数的第二排序组中的散列函数的数量或类型;以及存储器第一区域和/或第二区域的性能特性。
[0020]根据一个实施例,该方法包括执行逻辑存储段操作,以用于对存储该记录的物理存储段位置的读取和写入。
[0021 ] 根据一个实施例,提供一种计算机程序产品,包含程序代码,该程序代码当由处理器执行时,执行所描述的方法步骤。
[0022]根据本发明的一个实施例,提供一种计算机系统,包括服务器,该服务器具有一个或多个处理器和存储用于由该一个或多个处理器执行的一个或多个程序的存储器,以用于执行所描述的方法步骤。
[0023]根据另一本发明的实施例,提供一种计算机系统,包含:非均匀访问存储器,包含存储于该存储器的物理存储段位置中的索引记录,每个记录包含记录键,该系统包括:
散列值生成器,用于使记录键散乱,以生成逻辑存储段标识符;
转译组件,用于将逻辑存储段标识符映射至关联于所述记录键的记录被存储的存储器的物理存储段位置;以及其中该散列值生成器:
将散列函数的第一排序列表应用到第一类型的记录的记录键,以优先将第一记录类型映射至该存储器的第一区域;以及
将散列函数的第二排序列表应用到第二类型的记录的记录键,以优先将第二记录类型映射至存储器的不限于第一区域的第二区域。

【专利附图】

【附图说明】
[0024]应当理解,本发明包括两个或多个散列函数的排序列表,以用于优先映射记录以选择存储器的区域。
[0025]图1为本发明的一个实施例的示意性高级系统体系结构,说明通过应用散列函数的排序列表至记录键而在非均匀访问存储器中存储索引记录;
[0026]图2为根据本发明的一个实施例的用于在存储器插入记录的处理的流程图;
[0027]图3为根据本发明的另一实施例的用于查找记录处理的流程图;
[0028]图4为根据本发明的另一实施例的用于删除记录的处理的流程图;
[0029]图5为说明根据本发明的一个实施例的多种索引操作的示意性框图;
[0030]图6A至6D说明了可用于本发明的数据结构和系统组件的多种实施例,图6A示出了存储段转译表,图6B示出存储段有效表,图6C示出了闪存中存储段的内容,而图6D示出了 NAND闪存设备的组织;
[0031]图7A为说明清除处理的一个实施例的示意性框图;
[0032]图7B为说明清除处理的一个实施例的示意性框图;
[0033]图8为在一个本发明的实施例使用的记录条目的示意性图示;
[0034]图9为说明根据本发明的一个实施例的物理闪存芯片的一个示例的示意性框图,该物理闪存芯片具有多个裸片、擦除块、页和存储段;以及
[0035]图10说明了用于处理和存储数据的总体系统配置的一个实施例。

【具体实施方式】
[0036]现参考附图描述本发明的多种实施例。在如下描述中,出于解释的目的,多个特定细节被提出以提供本发明一个或多个实现方式的全面理解。然而,显而易见的是:本发明可在没有这些特定细节的情况下实施。在其他实例中,公知结构和设备在框图形式中显示,以便于描述本发明。
[0037]如本申请所使用,术语“组件”和“系统”意图指代计算机相关的实体,为硬件、硬件和软件组合、软件,或执行中的软件。例如,组件可以是但不限于运行在处理器上的处理、处理器、对象、可执行程序、执行线程、程序、和/或计算机。以说明的形式,运行于服务器的应用和服务器可均为组件。一个或多个组件可驻留于执行的处理和/或线程,而组件可定位于一个计算机上和/或分布在两个或多个计算机之间。
[0038]本发明还可说明为本发明处理的流程图。为简化说明,尽管以流程图形式显示的一个或多个方法被描述为一系列动作,但应当理解和领会,本发明不受动作的顺序限制,某些动作可根据本发明以不同的顺序发生和/或与所示出的和本文描述的其他动作同时发生。例如,本领域技术人员将理解和领会,该方法能够另选地被表示为一系列相互关联的状态或事件,例如在状态图中。此外,并非全部说明的动作都是实现根据本发明的方法所需要的。
[0039]在本文公开的多种本发明的实施例中,术语“数据”和“数据元素”互换使用。如本文所使用的,数据是指不透明的数据集合,例如,任何顺序的符号(典型地标示为“O”和“I”),其可被输入到计算机并在那里被存储和处理,或被传输至另一计算机。如本文所使用的,数据包括元数据、其他数据的描述。写入本文描述的存储系统的数据可为相同大小的数据元素、或可变大小的数据元素。数据的某些示例包括信息、程序代码、程序状态、程序数据、其他数据等。
[0040]如本文所使用的“存储系统”可为任何系统或应用,以用于存储数据至存储器,例如可以是文件系统、块存储设备、或其他系统。存储系统可使用标识符或名称,来引用存储器中的每一个数据元素。在一个示例,名称为全局唯一标识符(GUID),如数据内容的散列,优选为数据内容的密码散列或抗碰撞散列。其他命名约定也是可能的,只要每个数据元素在存储系统中具有许可重组存储至用户的数据的名称。在一个实施例,中央服务器生成名称。数据名称通常为固定长度二进制串,其意在由程序使用,而不是由人使用。全部数据的索引(有时称为字典或目录)可被存储系统需要,以便访问(定位)每一个数据元素。索引中的每一个记录可包含数据元素名称、其逻辑和/或物理位置(地址)、以及关于各个数据元素的其他信息。在一个实施例,每一个索引条目包括指针,该指针指向存储有数据对象的磁盘上的物理块地址。在一个实施例,固定算法可用于定位存储有数据对象的磁盘上的物理位置。
[0041]根据本发明的一个实施例,提供数据放置方法和装置,以与在磁盘存储中存储数据的存储系统一起使用。该存储系统可包含例如文件系统、块存储设备、或用于存储数据的其他存储系统。写入该存储系统的数据典型地包含多个小的(例如,4KB)数据片段,本文互换地称为数据或数据元素,其数据可为相同或可变大小。
[0042]如本文所使用的,非均匀访问存储器指具有不同的特性的计算机存储媒体,包括读访问时间、写访问时间、一次性写入限制、数据位置或特定地址访问时间、多个步骤写入或读取处理和/或导致对显示出本质上不同的访问特性的不同的地址访问的其他约束。非均匀访问存储器包括(如一个示例)异构存储器,即,视为单个逻辑和/或连续存储器的不同的计算机存储媒体的组合。
[0043]如本文所使用的,计算机存储媒体包括易失性和非易失性媒体、可移除和非可移除媒体,以用于存储信息,如计算机可读指令、数据结构、程序模块、或其他数据。计算机存储媒体包括RAM、R0M、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多用盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或可用于存储所需信息并可由计算机访问的任何其他介质。
A.利用非均匀散列函数的记录放置
[0044]图1为根据本发明的一个实施例的处理的高级示意性说明,该实施例利用非均匀多个N散列函数在非均匀访问存储器中放置记录。利用散列函数来使记录键K散乱,在这种情况下为三个,即,H0,H1和H2,每一个均产生逻辑存储段标识符。散列函数之一的HO不寻址逻辑存储段空间14中的全部存储段;这里HO寻址存储段O到η的子集,该子集少于全部存储段O到m。因此,图1示出了:对于键值(X)的散列函数:
HO (X) = {0..η}
Hl(X) = {0..m}
H2 (X) = {n+1..m}
并且对于任何键(X)
Η0(χ)〈〉Hl(x) O H2(x)
[0045]当键K利用3个散列函数被散乱时,3个候选存储段标识符被生成。来自散列函数HO的第一存储段标识符可仅把第一少许存储段0..η作为目标。另一散列函数Hl可把任何存储段作为目标,而Η2可将不在可由HO生成的存储段地址范围内的存储段作为目标。这在图1由横跨用于散列函数HO的存储段O到η的第一条线30示意性地说明,第二条线31跨越用于散列函数Hl的存储段O到m,而第三条线32跨越用于散列函数H的存储段n+1到m2。通过利用这样的非均匀散列函数的排序集合,至少一个散列函数覆盖了少于全部(子集)的存储段,一种方法被提供用于优选地映射记录键以在各种存储器技术中选择(定位)存储器区域,同时有效地利用存储器。逻辑存储段范围HO,Hl和112可映射至具体的强调的存储器技术,例如具有不同的访问特性。它们还可映射至相同的存储器技术,但将特定存储段集中至有限的定义的存储器区域,由此增强性能和/或存储器耐久性。
[0046]如在图1底部所示,一个或多个转译表16映射逻辑存储段空间14至非均匀访问存储器中的物理位置。在一个示例,存储器18包含不同的闪存技术,如MLC和SLC。SLC为一种NAND闪存类型,它包括单级单元(SLC)设备,其中每一个单元仅存储一个信息位。较新的NAND闪存技术利用多级单元(MLC)设备,它能够在每个单元存储一个以上的位。不同的闪存技术具有不同的性能特性。
[0047]在第二示例中,均匀技术存储器20可以当在存储器20的一个区域集中特定数据(如由HO寻址的存储段的子集)的同时被使用,仍用于性能或其他原因(例如,有效期)。
[0048]如进一步的示例,存储器技术22可包含多个闪存芯片,而由HO覆盖的逻辑存储段的子集可定位在闪存芯片中被分成条状的区域中的数据。条的大小可为多个擦除块大小,用于改进擦除性能。条可以在多个闪存芯片中上下移动。
[0049]这仅仅是用于利用非均匀散列函数放置数据记录以选择该存储器的区域的三个不同非均匀存储器技术和不同方法的示例。
B.记录操作
[0050]图2-4说明了根据本发明的一个实施例的三个类型的记录操作,分别用于插入、查找、和删除记录。
[0051]图2说明了插入记录的方法40的一个实施例。从步骤41开始,记录被提供,该记录在该示例中包括记录键和相关数据。如先前描述,该类型的一种记录为索引记录,其中键被映射至位置。在其他示例,键被映射至访问许可。在另一示例,键被映射至表示数据被修改的最后时间的值。在另一示例,键被映射至数据的特性。数据本身存储于存储设备(未示出),并且数据可被散乱以生成记录键。相关数据可以是对存储有数据的存储系统的物理块地址的指针。这仅仅是一个示例,本领域技术人员将理解存在此类记录的多种其他示例。
[0052]在下一步骤42,基于记录类型而做出选择,在该示例中该记录类型为是否期望该记录为短期并且频繁访问,或另选地是否期望为长期(例如,永久的)并且偶尔访问。假设记录为第一类型,方法在图2左列向下进行至步骤43,其中散列函数的排序列表{HO,H2,H1}分配至该记录。接着用于在排序散列函数的列表中排列的处理44,在步骤45第一散列函数HO应用于键,这在46产生逻辑存储段数量0., η。接下来,逻辑存储段数量(其包含逻辑存储段标识符的一种形式)在步骤47被转译成非均匀访问存储器的物理存储段位置。接下来,在步骤48,物理存储段位置的内容被读取,以确定在该物理存储段位置中是否有可用的空位用于记录(步骤49)。如果存在,处理进入步骤50,添加记录至非均匀访问存储器中的物理存储段位置。接下来,在步骤51,存储段被重写,并且到物理存储段表(以下描述)的逻辑根据该变化而更新,处理完成。返回步骤49,如果物理存储段位置中没有可用空位,处理返回步骤44以将散列函数Η2的排序列表的下一(不同于第一个)散列函数应用至该键。该第二散列函数Η2为散列函数的排序列表的第二个,用于优先映射记录至非均匀访问存储器的第一区域。第二散列函数覆盖没有被第一散列函数HO覆盖的逻辑存储段空间中的存储段,即存储段n+1..m,并且在步骤56中,记录根据散列函数H2被分配至该空间的存储段之一。接下来,逻辑存储段标识符在步骤47中被转译成非均匀访问存储器中的物理存储段位置。在步骤48,该物理存储段位置的内容被读取,并且在步骤49中确定该物理存储段位置是否存在可用空位。如果空位可用,处理进行到步骤50并添加记录至该存储段,在步骤51重写存储段并更新逻辑至物理存储段表,并且处理完成。另选地,在步骤49如果没有可用空位,则处理从步骤44以第三散列函数重复,否则,如果在57全部散列函数已被应用,则在步骤58表(索引)为满。
[0053]返回在步骤42做出的选择,如果该记录类型为第二类型(例如,长期并且偶尔访问)则处理如前进行,但散列函数被应用的被分配的顺序(52)为{H2,H1,H0},以优先映射该记录至存储器的第二区域。
[0054]图3说明了根据本发明的一个实施例用于记录查找的处理70。从步骤71开始,键被提供用于查找处理。散列函数HO在72应用于该键,而在73,在0..η范围中的逻辑存储段标识符由散列函数HO引起。接下来,逻辑存储段标识符在74被转译成物理存储段位置,物理存储段位置的内容在75被读取,并且物理存储段的查找在76被针对该键的值而做出。如果在77中具有键值的记录在物理存储段中被找到,则在步骤90,处理返回该记录、即键和相关数据,并且处理完成。如果否,则处理在78继续(沿图3中部)以应用第二散列函数Η2至该键,从而在79生成逻辑存储段标识符,用于在跨越剩余逻辑存储段空间的存储段n+1..m之一放置该记录。在80,逻辑存储段标识符被转译成非均匀访问存储器中的物理存储段位置,物理存储段的内容在81被读取,在83,物理存储段的查找被针对该键的值而做出,并且如果记录在83被找到,则在90记录被返回且处理完成。如果在83没有发现记录,则第三散列函数Hl在84应用于该键,在85,产生的存储段标识符在存储段0..m之一放置记录,逻辑存储段标识符在86被转译成物理存储段位置,物理存储段的内容在87被读取,在88在该存储段中查找该键的值,并且如果在89记录被找到,则在90记录被返回,处理完成。如果在89没有记录被找到,则处理在步骤91结束。
[0055]图4示出了用于记录删除操作的处理92的一个实施例。从步骤93开始,键被提供用于查找处理,例如,根据图3所示的方法。如果记录在步骤94被找到,(例如,图3的步骤77,83和89之一)则处理继续到在95从物理存储段移除记录并按需重组该存储段。接下来,该存储段被重写并且逻辑在96被更新到物理存储段表(以下描述),处理完成。如果没有记录在步骤94被找到,处理完成。
[0056]本领域技术人员将会理解,对图2-4提出的方法以及其他方法的修改可用于记录操作,同时利用本发明的主题。因此,上述示例并非限定性的而仅仅是意图说明本发明的特定实施例。
[0057]如先前描述的分类或选择步骤42可通过利用接收自其他处理的信息实现,以确定应用哪个散列函数,在该步骤42中记录可被分类以便应用不同的散列函数的排序列表至不同的类型的记录的目的。例如,文件系统写入某几种数据,如文件数据、元数据、位图(bitmap)、和目录。来自文件系统的每一个数据类型如此标示,以使本发明的处理能够使用这些数据类型以优先分配相关记录来选择存储器的存储位置。如一个示例,文件数据可分类为相对长期和偶尔访问,而文件系统元数据可分类为短期和频繁访问。类似地,存储系统本身将具有关于存储器中不同的区域的性能特性的信息,以用于选择步骤,该选择步骤基于记录的特性和存储器区域特性中的一个或多个来分配存储器中的存储位置。
[0058]在一个实施例,本发明在降低闪存存储器设备的清除开支方面具有特殊优点。闪存典型地以512字节扇区读取,以8KB页写入,并且以IMB擦除块擦除。写入比读取慢,并且擦除比写入更慢。管理闪存的单元为512字节的存储段,并且存储段被随机读取、写入和更新。更新需要读取、修改和写入。闪存在不擦除的情况下无法重写,因此存储段中的任何有效数据必须在其它地方被写入以生成空存储段。
[0059]清除为擦除块被检查并且好的数据被读取自擦除块并被放置在其它地方并空出擦除块的处理。这导致对系统的额外读取/写入,有时称为“写放大”问题。如果没有合适地管理,清除开支在设备带宽使用中变得比初始的写入流量更贵(例如,2-3倍或更高)。根据本发明,该问题通过定位记录来解决,该定位记录在闪存的被定位的区域中被更频繁地修改。通过将频繁修改(短期)数据映射至更窄的闪存区域,更少的数据需要在擦除块清除期间重写,因此减少了写放大问题。
C.系统体系结构、示例
[0060]图5-9说明了系统和方法的一个实施例,用于访问存储于非均匀访问存储器的索引记录。该系统和方法的进一步细节描述于公开于2010年12月30日、标题为“可缩放索弓I”的、Bowden等的共同未决和共同所有的美国
【发明者】A·J·比弗森, P·鲍登, S·曼贾纳塔, 黄劲松 申请人:森普利维蒂公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1