CN106990910A - 存储设备和存储设备的操作方法 - Google Patents

存储设备和存储设备的操作方法 Download PDF

Info

Publication number
CN106990910A
CN106990910A CN201611042510.0A CN201611042510A CN106990910A CN 106990910 A CN106990910 A CN 106990910A CN 201611042510 A CN201611042510 A CN 201611042510A CN 106990910 A CN106990910 A CN 106990910A
Authority
CN
China
Prior art keywords
index
key
storage device
iab
subregion
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
Application number
CN201611042510.0A
Other languages
English (en)
Inventor
郑明俊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN106990910A publication Critical patent/CN106990910A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • G06F7/26Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general the sorted data being recorded on the original record carrier within the same space in which the data had been recorded prior to their sorting, without using intermediate storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及一种存储设备和存储设备的操作方法。一种存储设备,包括:接口电路,配置为与外部设备进行通信;非易失性存储器设备,形成多个分区;以及处理电路,被配置为从接口电路接收写入请求、键和值,根据所接收的键生成分区标识符和排序标识符,使用分区标识符来选择分区之一,以及使用与所选择的分区相对应的累积键的索引中所包括的排序标识符来对所述索引进行排序。

Description

存储设备和存储设备的操作方法
对相关申请的交叉引用
要求于2015年11月23日向韩国知识产权局提交的第10-2015-0164258号韩国专利申请的优先权,该韩国专利申请的全部内容通过引用合并于此。
技术领域
在本文中所公开的发明构思涉及一种电子设备,并且具体地,涉及一种存储设备和存储设备的操作方法。
背景技术
随着对于使用诸如社交网络服务(SNS)的网络的服务的使用增加,针对服务器设备管理至/来自网络的请求和响应的需求最近增加。在SNS中,用户可以是内容消费方和内容供应方两者。当由多个用户消费/提供内容时,服务器设备管理的内容的量增加。
可以增加由SNS使用的服务器设备的数量以管理增加的内容。然而,服务器设备可能是非常昂贵的,并且增加服务器设备的数量可能需要巨大的费用。因此,对于在不增加服务器设备的数量的情况下高效地处理增加的内容的成本存在关注。
发明内容
本发明构思的实施例提供一种支持服务器设备的功能的存储设备和存储设备的操作方法。此外,本发明构思的实施例提供一种在支持服务器设备的功能时提高操作速度的存储设备以及存储设备的操作方法。
本发明构思的实施例提供一种存储设备,包括:接口电路,被配置为与外部设备进行通信;非易失性存储器设备,形成多个分区;以及处理电路,被配置为从接口电路接收写入请求、键和值,根据所接收的键生成分区标识符和排序标识符,使用分区标识符来选择分区之一,以及使用与所选择的分区相对应的累积键的索引中所包括的排序标识符来对索引进行排序。
本发明构思的实施例提供一种存储设备,包括:接口电路,被配置为与外部设备进行通信;非易失性存储器设备,形成多个分区;以及处理电路,被配置为从接口电路接收读取请求和键,根据所接收的键生成分区标识符和排序标识符,使用分区标识符来选择分区之一,以及使用排序标识符来搜索存储在所选择的分区中的索引。
本发明构思的实施例提供一种包括非易失性存储器设备的存储设备的操作方法,该操作方法包括:在存储设备处接收多个键和与键分别地相对应的值;在存储设备处生成包括与键分别地相对应的多个排序标识符的多个索引;在存储设备处基于排序标识符以第一块大小为单位对索引进行排序并且将所排序的索引存储在非易失性存储器设备中;以第二块大小为单位将键和值存储在非易失性存储器设备中;以及当在存储设备处确定与特定键相对应的值被请求时,以第一块大小为单位、使用与特定键相对应的排序标识符来搜索索引。
本发明构思的实施例提供一种包括非易失性存储器设备的存储设备的操作方法。该操作方法可以包括在存储设备处接收写入请求和写入数据,以及在非易失性存储器设备处写入根据写入数据生成的索引和写入数据。可以以固定大小为单位在非易失性存储器设备处写入索引,并且索引可以包括以预先确定的周期定位的图案(pattern)。图案可以具有顺序地增大或减小的值,并且可以按照所接收的写入请求的次序将写入数据顺序地写入非易失性存储器设备中。
本发明构思的实施例提供:接口电路,被配置为与外部设备进行通信;非易失性存储器设备,形成多个分区;以及处理电路,被配置为从接口电路接收存取请求和键,根据所接收的键生成分区标识符和排序标识符,使用分区标识符来选择分区之一,以及使用与所选择的分区相对应的累积键的索引中所包括的排序标识符来对索引进行排序,以及响应于存取请求使用所生成的排序标识符来搜索在所选择的分区中所存储的索引。存取请求可以是写入请求或读取请求。
附图说明
根据参考下面附图的以下描述,以上和其他对象和特征将变得明显,其中,除非另外说明,否则贯穿各个附图相同附图标记指代相同部件,并且在附图中,
图1图示出根据本发明构思的实施例的服务器设备的框图;
图2图示出处理器基于键-值存储来处理写入请求的示例的图;
图3图示出根据本发明构思的实施例的服务器设备的框图;
图4图示出主机和根据本发明构思的实施例的服务器设备的存储设备之一与彼此进行通信的示例的流程图;
图5图示出根据本发明构思的实施例的存储设备的框图;
图6图示出根据本发明构思的实施例的存储设备的操作方法的流程图;
图7图示出根据本发明构思的实施例的存储设备的写入方法的流程图;
图8图示出其中标识符计算器生成分区标识符计算器和排序标识符的示例的图;
图9图示出对IAB缓冲器和OAB缓冲器进行分区的示例的框图;
图10、图11、图12、图13、图14和图15图示出对象处理电路接收和处理对象的过程的图;
图16图示出其中在非易失性存储器设备的第k索引分区处写入IAB的示例;
图17图示出根据本发明构思的实施例的存储设备的读取方法的流程图;
图18图示出其中IAB搜索单元确定匹配的方法的流程图;
图19图示出其中使用排序标识符来执行搜索操作的示例;
图20图示出其中在第k分区处写入IAB和OAB的示例;
图21和图22图示出使用IAB缓冲器、OAB缓冲器和非易失性存储器设备的示例的图;
图23图示出根据本发明构思的实施例的存储设备的框图;
图24图示出根据本发明构思的实施例的存储设备被应用至其的服务器系统的框图;
图25图示出其中安装有根据本发明构思的实施例的存储设备的服务器设备的框图;
图26图示出根据本发明构思的实施例的非易失性存储器设备的框图;以及
图27图示出根据本发明构思的实施例的存储块的电路图。
具体实施方式
现在将参考附图更全面地描述本发明构思的示例性实施例。
图1图示出根据本发明构思的实施例的服务器设备10的框图。参考图1,服务器设备100包括处理器11、主存储器12、调制解调器13和存储设备14。
处理器11可以响应于外部设备的请求来访问存储设备14。例如,处理器11可以响应于外部设备的请求从存储设备14读取数据,或在存储设备14处写入数据。处理器11可以执行在存储设备处14处写入数据时完成的以及在从存储设备14读取数据时完成的算术和控制操作。处理器11可以使用主存储器12作为工作存储器、缓冲存储器、高速缓存存储器或者临时存储器。处理器11可以通过调制解调器13从外部设备接收请求或可以通过调制解调器13向外部设备传送响应。处理器11、主存储器12和调制解调器13可以操作为存储设备14的主机(HOST)。
可以基于逻辑地址(LBA)可访问存储设备14。例如,可以由处理器11将逻辑地址指配给每个存储设备14。可以通过指配的逻辑地址(基于LBA)来区分每个存储设备14的存储空间。
例如,存储设备14可以从处理器11接收逻辑地址和写入数据,并且可以在逻辑地址指示的存储空间处将写入数据写入。存储设备14可以从处理器11接收逻辑地址并且可以从逻辑地址指示的存储空间读取数据。可以向处理器11提供读取的数据。
服务器设备10可以通过调制解调器13从外部设备接收写入请求或读取请求。可以基于键-值存储来执行写入请求或读取请求。
图2图示出处理器11基于键-值存储来处理写入请求的示例的图。参考图1和图2,处理器11从外部设备接收包括键和值的写入请求。值可以包括写入数据。键可以是值的唯一标识符。键和值的对可以称作对象OBJ。
在写入操作期间,可以请求处理器11在例如是以斜线标记的部分的存储设备14的逻辑地址区域LBA_R处存储键和值。
在读取操作期间,处理器11可以从外部设备接收键并且可以使用键来读取值。例如,当在逻辑地址区域LBA_R处存储键和值时,处理器11可以生成索引IND,其以表格形式指示在其处存储键和值的区域的逻辑地址LBA与识别符ID_KEY之间的关系。识别符ID_KEY可以是键,或根据键所生成的并且与键相关联的信息。
如果生成了索引IND,则处理器11可以从索引之中搜索与键相对应的索引,并且可以基于找到的索引来获取在其处存储键和值的逻辑地址LBA。
就存储设备14的可扩展性而言,参考图1和图2所描述的服务器设备10可能受到限制。例如,如果服务器设备10中的存储设备14的数量增加,则要被写入存储设备14处的对象OBJ的数量也可能增加,这还可能增加处理器11管理的索引的数量。也就是说,如果存储设备14的数量增加,则处理器11管理增加数量的索引所需要的资源(例如,主存储器12的容量或主存储器12的数量)可能增加。也就是说,除添加存储设备14所需要的费用之外,服务器设备10中的存储设备14中的增加可以引起扩展主存储器12所需要的费用。为此理由,就存储设备14的可扩展性而言,使用基于LBA的存储设备的服务器设备10可能受到限制。
现在将描述不是基于逻辑块寻址(LBA)而是基于对象(OBJ)的存储设备以及使用具有改善的可扩展性的基于对象的存储设备的服务器设备。
图3图示出根据本发明构思的实施例的服务器设备100的框图。参考图3,服务器设备100包括处理器110、主存储器120、调制解调器130和存储设备140。
处理器110可以响应于外部设备的请求来访问存储设备140。例如,处理器110可以响应于来自外部设备的请求向存储设备140写入数据或从存储设备140读取数据。处理器110可以执行在存储设备140处写入数据所伴随的和通过从存储设备140读取数据所伴随的算术和控制操作。
处理器110可以使用主存储器120作为工作存储器、缓冲存储器或者高速缓存存储器。主存储器120可以例如包括:诸如但不限于静态RAM(SRAM)、动态RAM(DRAM)的易失性随机存取存储器或诸如相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)或铁电RAM(FeRAM)等的非易失性存储器中的至少一个。
处理器110通过调制解调器130可以从外部设备接收请求或可以向外部设备传送响应。调制解调器130可以基于以太网与外部设备进行通信。调制解调器130可以例如基于诸如长期演进(LTE)、WiMax、全球移动通信系统(GSM)、码分多址(CDMA)、蓝牙、近场通信(NFC)、Wi-Fi、射频识别(RFID)等的无线通信,或者诸如通用串行总线(USB)、SATA、HSIC、SCSI、火线、外围组件互联(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪速存储(UFS)、安全数字(SD)、SDIO、通用异步收发器(UART)、串行外围接口(SPI)、高速SPI(HS-SPI)、RS232、内部集成电路(I2C)、HS-I2C、集成芯片内部声音(I2S)、索尼/飞利浦数字接口(S/PDIF)、多媒体卡(MMC)、嵌入MMC(eMMC)等的有线通信中的至少一个与外部设备进行通信。
处理器110、主存储器120和调制解调器130可以操作为存储设备140的主机(HOST)。
与参考图1和图2所描述的存储设备14不同,存储设备140可以基于对象OBJ进行操作。在从外部设备接收到包括键和值的写入请求时,处理器110可以向存储设备140之一传送包括键和值的写入请求。在从外部设备接收包括键的读取请求时,处理器110可以向存储设备140之一传送包括键的读取请求。
存储设备140可以基于包括键和值的对象OBJ来执行读取和写入操作。存储设备140可以自动地生成和管理指示键和逻辑地址LBA之间的关系的索引。因此,在服务器设备100中的存储设备140的数量增加的情况下,除了存储设备140之外的服务器设备100的额外的资源的增加可能不是必要的,并且因此可以提高服务器设备的存储设备140的可扩展性。
图4图示出主机和根据本发明构思的实施例的服务器设备100的存储设备140之一与彼此进行通信的示例的流程图。参考图3和图4,在步骤S110中,主机向存储设备140发送写入请求SET、键和值。在步骤S120中,存储设备140响应于写入请求SET来存储键和值。
在步骤S130中,主机向存储设备140发送读取请求GET和键。在步骤S140中,存储设备140响应于读取请求GET和键来读取值。在步骤S150中,存储设备140向主机发送读取的值。
在步骤S160中,主机向存储设备140发送删除请求DEL和键。在步骤S170中,存储设备140响应于删除请求DEL和键来删除键和值。
如参考图4所描述地,存储设备140可以对基于在服务器设备100外部生成的键-值存储的请求进行处理。在这种情况下,可以减少主机的负载,并且因此可以提高存储设备140的可扩展性。
图5示意性地图示出根据本发明构思的实施例的存储设备140的框图。参考图4和图5,存储设备140包括接口电路210、对象处理电路220、控制电路270、随机存取存储器280和非易失性存储器设备290。
接口电路210可以例如基于以太网与主机进行通信。接口电路210可以包括负载分担电路,其被配置为执行基于TCP/IP的分组化/去分组化。例如,负载分担电路可以是独立的硬件电路,其被配置为在没有诸如对象处理电路220的外部处理设备或任何其他核心电路的帮助的情况下执行用于自动地实现目的(object)的功能。与通过外部处理设备上的软件驱动的资源执行功能相比较,负载分担电路可以提供优秀的操作速度。此外,如果使用了负载分担电路,则可以在不消耗外部处理设备的资源的情况下容易地控制流,并且因此可以提高存储设备140的操作速度。
接口电路210不限于基于以太网与主机进行通信。在本发明构思的实施例中,接口电路210可以例如基于诸如长期演进(LTE)、WiMax、全球移动通信系统(GSM)、码分多址(CDMA)、蓝牙、近场通信(NFC)、Wi-Fi、射频识别(RFID)等的无线通信或者诸如通用串行总线(USB)、SATA、HSIC、SCSI、火线、外围组件互联(PCI)、高速PCI(PCIe)、高速非易失性存储器(NVMe)、通用闪速存储(UFS)、安全数字(SD)、SDIO、通用异步收发器(UART)、串行外围接口(SPI)、高速SPI(HS-SPI)、RS232、内部集成电路(I2C)、HS-I2C、集成芯片内部声音(I2S)、索尼/飞利浦数字接口(S/PDIF)、多媒体卡(MMC)、嵌入MMC(eMMC)等的有线通信中的至少一个与外部设备进行通信。
对象处理电路220对通过接口电路210接收的基于OBJ的请求进行处理。对象处理电路220将基于OBJ的请求转换为基于LBA的请求,并且向控制电路270发送转换后的请求。对象处理电路220将从控制电路270接收的基于LBA的响应转换为基于OBJ的响应。对象处理电路220通过接口电路210输出基于OBJ的响应。
对象处理电路220包括请求控制部230和对象管理部240。请求控制部230可以被配置为对从主机接收的基于OBJ的请求进行处理。例如,请求控制部230包括:写入(SET)处理器233,其控制对象管理部240,使得当基于OBJ的请求是写入请求SET时,对象管理部240执行用于执行写入请求的总体操作;读取(GET)处理器231,其控制对象管理部240,使得当基于OBJ的请求是读取请求GET时,对象管理部240执行用于执行读取请求的总体操作;以及删除(DEL)处理器235,其控制对象管理部240,使得当基于OBJ的请求是删除请求DEL时,对象管理部240执行用于执行删除请求的总体操作。
在请求控制部230的控制之下,对象管理部240可以对键、或者键和值进行处理。对象管理部240包括:索引阵列块(IAB)管理器250,被配置为根据键生成并且管理索引;以及对象阵列块(OAB)管理器260,被配置为管理键和值。
IAB管理器250包括标识符(ID)计算器251、分区单元252、索引阵列块(IAB)搜索单元253、IAB缓冲器254、IAB取出单元255以及IAB排序和清空(flush)单元256。
标识符计算器251可以被配置为根据键生成一个或多个标识符。分区单元252可以被配置为基于通过标识符计算器251生成的至少一个第一标识符来选择非易失性存储器设备290的分区PT_1至PT_n之一。IAB搜索单元253可以被配置为从所选择的分区中搜索通过标识符计算器251生成的至少一个第二标识符。IAB缓冲器254可以被配置为存储生成的索引。IAB取出单元255可以被配置为响应于读取请求GET(例如,可以向控制电路270请求IAB)来从所选择的分区中取出IAB。如果在IAB缓冲器254中累积的索引的大小达到块大小,则IAB排序和清空单元256可以基于通过标识符计算器251生成的第二标识符来对索引进行排序或对准,并且可以将所排序的索引清空到控制电路270上。
OAB管理器260包括对象阵列块(OAB)缓冲器261、OAB取出单元264以及OAB清空单元265。OAB缓冲器261可以被配置为存储从主机接收的包括键和值的对象。OAB取出单元263可以被配置为向控制电路270请求与通过IAB管理器250找到的地址相对应的OAB。如果在OAB缓冲器261中累积的对象的大小达到块大小,则OAB清空单元265可以被配置为将累积对象作为OAB清空到控制电路270上。
控制电路270可以被配置为从对象管理部240接收清空请求(或写入请求)和取出请求(或读取请求),上述请求基于逻辑地址LBA。控制电路270可以被配置为使用闪存转换层271来将逻辑地址LBA转换为非易失性存储器设备290的物理地址PBA。控制电路270可以基于物理地址PBA来访问非易失性存储器设备290。控制电路270可以使用随机存取存储器280作为工作存储器、缓冲存储器、高速缓存存储器或者临时存储器。随机存取存储器280可以例如包括DRAM、SRAM、PRAM、MRAM、RRAM、FeRAM等。控制电路270可以将管理非易失性存储器设备290,或将逻辑地址LBA转换为物理地址PBA所需要的数据存储到随机存取存储器280中。
可以将非易失性存储器设备290分区为两个或更多分区PT_1至PT_n。例如,可以在非易失性存储器设备290的逻辑地址区域LBA_R上创建分区PT_1至PT_n。分区PT_1至PT_n可以包括索引分区IPT_1至IPT_n以及对象分区OPT_1至OPT_n。可以将IAB存储在索引分区IPT_1至IPT_n中,并且可以将OAB存储在对象分区OPT_1至OPT_n中。非易失性存储器设备290可以例如包括闪速存储器设备、PRAM、MRAM、RRAM、FeRAM等。
可以利用硬件、软件或者硬件和软件的组合来实施构成存储设备140的块(例如,单元或部分)中的每个。以下将对构成存储设备140的块的功能进行详细地描述。
图6图示出根据本发明构思的实施例的存储设备140的操作方法的流程图。参考图5和图6,在步骤S210中,存储设备140通过接口电路210接收键。在实施例中,如果键与写入请求SET相关联,则可以另外地接收值。如果键与读取请求GET或删除请求DEL相关联,可以不接收值。
在步骤S220中,标识符计算器251根据所接收的键来生成分区标识符ID_P和排序标识符ID_S。
在步骤S230中,分区单元252基于分区标识符ID_P来选择非易失性存储器设备290的分区PT_1至PT_n之一。
在步骤S240中,IAB管理器250可以使用排序标识符ID_S来对索引(例如,IAB)进行排序,或可以使用排序标识符ID_S来搜索索引(例如,IAB)。
除了分区标识符ID_P之外,根据本发明构思的实施例的存储设备140可以进一步使用用于进行排序和搜索的排序标识符ID_S。排序标识符ID_S可以使得易于写入和搜索索引,并且因此可以提高存储设备140的操作速度。
图7图示出根据本发明构思的实施例的存储设备140的写入方法的流程图。参考图5和图7,在步骤S310中,对象处理电路220通过接口电路210来接收写入请求SET、键和值。
之后,可以将控制流分割到IAB管理器250和OAB管理器260中。可以通过IAB管理器250来执行通过步骤编号S32X所标记的左侧控制流。可以通过OAB管理器260来执行通过步骤编号S33X所标记的右侧控制流。可以彼此独立地执行IAB管理器250的控制流和OAB管理器260的控制流。
IAB管理器250的控制流如下。在步骤S321中,标识符计算器251通过关于键执行散列(hash)运算(或函数)来生成分区标识符ID_P和排序标识符ID_S。图8图示出其中标识符计算器251生成分区标识符ID_P和排序标识符ID_S的示例。参考图5和图8,标识符计算器251可以通过关于键执行散列运算(或函数)——例如,MD5散列运算(或函数)——来生成散列数据HD。标识符计算器251可以选择散列数据HD的一些比特作为分区标识符ID_P,并且选择散列数据HD的一些比特作为排序标识符ID_S。排序标识符ID_S的大小可以大于分区标识符ID_P的大小并且可以小于键的大小。排序标识符ID_S可以包括分区标识符ID_P。然而,本发明构思的其他实施例不限于此。
参考图5和图7,在步骤S322中,分区单元252选择与分区标识符ID_P相对应的分区。分区单元252可以以表格的形式管理非易失性存储器设备290的分区PT_1至PT_n与分区标识符ID_P的比特图案之间的关系。分区单元252可以基于分区标识符ID_P的比特图案来选择分区PT_1至PT_n之一。可以将关于所选择的分区的信息发送到OAB管理器260。
在步骤S323中,IAB缓冲器254存储包括对象逻辑地址LBA_OBJ和排序标识符ID_S的索引。对象逻辑地址LBA_OBJ可以是关于在其上要存储包括键和值的对象OBJ的非易失性存储器设备290的所选择的分区的逻辑地址LBA。例如,对象逻辑地址LAB_OBJ可以由OAB管理器260生成并且可以被发送到IAB管理器250。作为另一个示例,可以由IAB管理器250内部地计算对象逻辑地址LBA_OBJ。例如,可以在顺序地增大或减小的逻辑地址LBA处写入OAB。因为OAB的大小是固定的,所以IAB管理器250能够计算在其处要写入OAB的对象逻辑地址OBJ_LBA。
IAB缓冲器254可以包括与非易失性存储器设备290的分区PT_1至PT_n分别地相对应的多个索引。可以将生成的索引存储在与所选择的分区相对应的索引缓冲器中。
在步骤S324中,IAB排序和清空单元256确定在与所选择的分区相对应的索引缓冲器中累积的索引的大小是否达到块大小。如果累积的索引的大小未达到块大小,则可以终止IAB管理器250的操作。如果累积的索引的大小达到块大小,则在步骤S325中,IAB排序和清空单元256可以使用排序标识符ID_S对索引缓冲器中的索引进行排序(或对准)。例如,IAB排序和清空单元256可以基于排序标识符ID_S的比特的值按照升序或降序对索引进行排序。在步骤S326中,IAB排序和清空单元256将所排序的索引作为IAB清空到控制电路270上。之后,在步骤S327中,可以在IAB取出单元255中存储或更新关于最新近地从所选择的分区清空的IAB的指针。控制电路270可以响应于清空请求来在所选择的分区的所选择的索引分区处写入IAB。
OAB管理器260的控制流如下。在步骤S331中,OAB缓冲器261存储键和值。例如,可以将键和值存储为作为日志结构对而相关联。例如,OAB缓冲器261可以包括与非易失性存储器设备290的分区PT_1至PT_n分别地相对应的多个对象缓冲器。可以将对象OBJ存储在与所选择的分区相对应的对象缓冲器中。
在步骤S332中,分配对象逻辑地址LBA_OBJ,其指示其中要存储的对象OBJ的所选择的分区的位置。例如,可以从所选择的分区的对象分区的逻辑地址中选择对象逻辑地址LBA_OBJ。可以将对象逻辑地址LBA_OBJ发送到IAB管理器250。
在步骤S333中,OAB清空单元265确定在与所选择的分区相对应的OAB缓冲器261的对象缓冲器中累积的对象的大小是否达到块大小。如果累积对象的大小未达到块大小,则可以终止OAB管理器260的操作。如果累积对象的大小达到块大小,则在步骤S334中,OAB清空单元265将累积对象作为OAB清空到控制电路270上。控制电路270可以在所选择的分区的所选择的对象分区处写入OAB。
图9是图示出对IAB缓冲器254和OAB缓冲器261进行分区的示例的框图。参考图5和图9,随着将通过逻辑地址识别的非易失性存储器设备290的逻辑存储空间分割为分区PT_1至PT_n,IAB缓冲器254和OAB缓冲器261可以类似地被分别地分割为索引缓冲器IBF_1至IBF_n和对象缓冲器OBF_1至OFB_n。索引缓冲器IBF_1至IBF_n可以存储要被写入索引分区IPT_1至IPT_n处的索引。对象缓冲器OBF_1至OBF_n可以存储要被写入对象分区OPT_1至OPT_n处的对象。
图10至图15图示出对象处理电路220接收和处理对象的过程的图。在实施例中,在图10至图15中图示出其中反复地接收关于第k(k是正整数)分区PT_k的写入请求的示例。也就是说,在图10至15中,分区标识符ID_P可以指示第k分区PT_k。因为分区标识符ID_P指示第k分区PT_k,所以在图10至图15中未图示出与第k分区PT_k相关联的第k索引缓冲器IBF_k和第k对象缓冲器OBF_k之外的索引缓冲器和对象缓冲器。
参考图5和图10,可以接收包括第一键KEY1和第一值VALUE1的第一对象OBJ1的写入请求SET。IAB管理器250可以生成与第一键KEY1相关联的第一索引IND1并且可以在第k索引缓冲器IBF_k中存储第一索引IND1。在实施例中,第一索引IND1可以包括根据第一键KEY1生成的第一排序标识符ID_S1,以及第一对象逻辑地址LBA_OBJ1。第一排序标识符ID_S1可以具有值“11”。第一对象逻辑地址LBA_OBJ1可以是与其中要写入第一对象OBJ1的位置相对应的非易失性存储器设备290的第k分区PT_k的第k对象分区OPT_k的逻辑地址。在实施例中,第一索引IND1可以进一步包括第一键KEY1的长度信息L_KEY1(第一长度信息)或第一对象OBJ1的长度信息L_OBJ1(第二长度信息)。当根据读取请求执行搜索操作时,长度信息L_KEY1和长度信息L_OBJ1可以用于提高准确度。OAB管理器260可以在第k对象缓冲器OBF_k中存储包括第一键KEY1和第一值VALUE1的第一对象OBJ1。
参考图5和图11,可以接收包括第二键KEY2和第二值VALUE2的第二对象OBJ2。OAB管理器250可以在第k索引缓冲器IBF_k中存储与第二键KEY2相关联的第二索引IND2。第二索引IND2可以包括具有值“01”的第二排序标识符ID_S2、第二对象逻辑地址LBA_OBJ2、第二键KEY2的长度信息L_KEY2以及第二对象OBJ2的长度信息L_OBJ2。OAB管理器260可以在第k对象缓冲器OBF_k中存储第二键KEY2和第二值VALUE2。
参考图5和图12,可以接收包括第三键KEY3和第三值VALUE3的第三对象OBJ3。IAB管理器250可以在第k索引缓冲器IBF_k中存储与第三键KEY3相关联的第三索引IND3。第三索引IND3可以包括具有值“00”的第三排序标识符ID_S3、第三对象逻辑地址LBA_OBJ3、第三键KEY3的长度信息L_KEY3以及第三对象OBJ3的长度信息L_OBJ3。OAB管理器260可以在第k对象缓冲器OBF_k中存储第三键KEY3和第三值VALUE3。
参考图5和图13,可以接收包括第四键KEY4和第四值VALUE4的第四对象OBJ4。IAB管理器250可以在第k索引缓冲器IBF_k中存储与第四键KEY4相关联的第四索引IND4。第四索引IND4可以包括具有值“10”的第四排序标识符ID_S4、第四对象逻辑地址LBA_OBJ4、第四键KEY4的长度信息L_KEY4以及第四对象OBJ4的长度信息L_OBJ4。OAB管理器260可以在第k对象缓冲器OBF_k中存储第四键KEY4和第四值VALUE4。
参考图5和图14,索引IND1至IND4的大小可以达到块大小。IAB排序和清空单元256可以基于排序索引ID_S1至ID_S4对索引IND1至IND4进行排序,如图14中所示。IAB排序和清空单元256可以将链接L添加至所排序的索引IND1至IND4。在实施例中,在先前被清空的IAB不存在于所选择的第k索引分区IPT_k中的情况下,链接L可以指示第k索引分区IPT_k的起始逻辑地址或最终逻辑地址或空值(null)信息。在先前被清空的IAB存在于所选择的第k索引分区IPT_k中的情况下,链接L可以指示在第k索引分区IPT_k处最新近地清空或写入的IAB的起始逻辑地址或最终逻辑地址。之后,可以将被排序并且链接L所添加至其的索引IND1至IND4作为IAB而清空。随着IAB最新近地被清空,可以在IAB取出单元255中存储或更新清空的IAB的起始逻辑地址或最终逻辑地址。
参考图5和图15,可以接收包括第五键KEY5和第五值VALUE5的第五对象OBJ5。IAB管理器250可以在第k索引缓冲器IBF_k中存储与第五键KEY5相关联的第五索引IND5。第五索引IND5可以包括具有值“11”的第五排序标识符ID_S5、第五对象逻辑地址LBA_OBJ5、第五键KEY5的长度信息L_KEY5以及第五对象OBJ5的长度信息L_OBJ5。
OAB管理器260可以在第k对象缓冲器OBF_k中存储第五键KEY5和第五值VALUE5。由于第五对象OBJ5被存储在第k对象缓冲器OBF_k中,所以累积对象OBJ1至OBJ5的大小可以达到块大小。OAB清空单元265可以将累积对象OBJ1至OBJ5作为OAB而清空。
如上所述,可以彼此独立地累积和清空IAB和OAB。如果累积的索引的大小达到IAB的大小,则可以对索引进行排序,可以将链接L添加到所排序的索引以及可以将链接L被添加至其的所排序的索引作为IAB而清空。如果累积对象的大小达到OAB的大小,则可以将对象作为OAB而清空。在实施例中,可以考虑到适于关于非易失性存储器设备290高效地执行写入和读取操作的大小、用于IAB缓冲器254的区域和成本、对索引进行排序所花费的时间、执行搜索操作所花费的时间等来确定IAB的大小。在实施例中,可以考虑到适于关于非易失性存储器设备290高效地执行写入和读取操作的大小或用于OAB缓冲器261的区域和成本来确定OAB的大小。
如在图10至15中所示,在对象OBJ1至OBJ5中,键KEY1至KEY5的大小可以是固定的,并且值VALUE1至VALUE5的大小可以是可变的。然而,在其他的实施例中,键KEY1至KEY5的大小和值VALUE1至VALUE5的大小全部都可以是可变的。
图16图示出其中在非易失性存储器设备的第k索引分区IPT_k处写入IAB的示例。参考图5和图16,IAB可以具有相同的大小。IAB_1可以是首先被写入第k索引分区IPT_k处的IAB。可以在从第k索引分区IPT_k的起始逻辑地址或最终逻辑地址起的、地址增大或减小的方向上顺序地写入IAB_1。当IAB_1被清空时所添加的链接L可以指示第k索引分区IPT_k的起始地址或最终地址,或可以具有空值。当IAB_1被清空时,IAB取出单元255可以存储对在第k索引分区IPT_k处最新近地清空的IAB_1进行指示的指针(或地址)。
可以在第k索引分区IPT_k处写入IAB_1之后的IAB_2。可以在从IAB_1的起始逻辑地址或最终逻辑地址起的、地址增大或减小的方向上顺序地写入IAB_2。添加到IAB_2的链接L可以指示是先前的IAB的IAB_1的起始地址或最终地址。当IAB_2被清空时,IAB取出单元255可以存储对在第k索引分区IPT_k处最新近地清空的IAB_2进行指示的指针(或地址)。
可以在第k索引分区IPT_k处写入IAB_2之后的IAB_3。可以在从IAB_2的起始逻辑地址或最终逻辑地址起的、地址增大或减小的方向上顺序地写入IAB_3。添加到IAB_3的链接L可以指示是先前的IAB的IAB_2的起始地址或最终地址。当IAB_3被清空时,IAB取出单元255可以存储对在第k索引分区IPT_k处最新近地被清空的IAB_3进行指示的指针(或地址)。
可以在第k索引分区IPT_k处写入IAB_3之后的IAB_4。IAB_4可以被顺序地写入,链接L被添加,以及当被清空时IAB取出单元255可以以与以上关于IAB_2和IAB_3所述的方式类似的方式来存储指针。
可以在第k索引分区IPT_k处写入IAB_4之后的IAB_5。
如图16中所示,可以以链接列表的形式管理IAB。可以将对最新近地被清空的IAB进行指示的指针(或地址)存储在IAB取出单元255中。每个IAB可以包括根据排序标识符ID_S所排序的索引。当接收读取请求GET时,IAB取出单元255可以使用存储的指针(或存储的地址)来取出在所选择的索引分区处最新近地清空的IAB。如果从所取出的IAB中找不到对应于与读取请求GET相关联的键的索引,则可以基于链接L来取出下一个IAB。如上所述,可以通过在每个IAB处使用排序标识符ID_S对索引进行排序来加速关于索引的搜索操作。此外,因为将分区的索引分割为多个IAB,所以可以调整IAB的大小,由此使调整搜索速度成为可能。此外,可以采用链接列表来管理多个IAB,并且因此可以减少管理IAB所需要的资源。
图17图示出根据本发明构思的实施例的存储设备140的读取方法的流程图。参考图5和图17,在步骤S410中,对象处理电路220通过接口电路210接收键。
在步骤S420中,标识符计算器251通过关于键执行散列运算来生成分区标识符ID_P和排序标识符ID_S。
在步骤S430中,分区单元252基于分区标识符ID_P来选择非易失性存储器设备290的分区PT_1至PT_n之一。
在步骤S440中,IAB取出单元255使用指示在所选择的分区处最新近地取出的IAB的指针(或地址)来取出最新近地取出的IAB。例如,在所选择的分区中,在如图16中所示IAB被写入的情况下,IAB取出单元255可以读取IAB_5。
在步骤S451中,IAB搜索单元253在读取的IAB处使用排序标识符ID_S来搜索索引。例如,IAB搜索单元253可以从读取的IAB的索引之中搜索包括根据键生成的排序标识符ID_S的索引。
然后,在步骤S453中,确定是否发生其中在读取的IAB处找到与键相关联的索引的匹配。如果在读取的IAB处未找到与键相关联的索引,则在步骤S453中确定不存在匹配。
如果在读取的IAB处未发生匹配,则在步骤S455中,IAB取出单元255读取通过读取的IAB的链接L所连接的下一个IAB。例如,在所选择的分区中,在如图16中所示IAB被写入的情况下,IAB取出单元255可以读取IAB_4。可以反复地执行步骤S451、S453和S455,直到在所选择的分区处发生匹配。
在步骤S453中确定在所选择的分区处发生匹配时,之后,在步骤S460中,对象处理电路220通过接口电路210向主机输出与匹配的索引相对应的对象OBJ作为读取响应。
图18图示出其中IAB搜索单元253确定匹配的方法的流程图。参考图5和图18,在步骤S510中,IAB搜索单元253选择在通过IAB取出单元255读取的IAB处的初始位置的索引。
在步骤S520中,IAB搜索单元253确定所选择的索引的排序标识符ID_S是否与根据键生成的排序标识符ID_S相同。如果所选择的索引的排序标识符ID_S与根据键生成的排序标识符ID_S不同,则处理流继续到步骤S560。然而,如果所选择的索引的排序标识符ID_S与根据键生成的排序标识符ID_S相同,则在步骤S530中,OAB取出单元263从所选择的分区中读取与所选择的索引相对应的对象OBJ。
在步骤S540中,IAB搜索单元253将所读取的对象OBJ的键与所接收的键相比较。如果所读取的对象OBJ的键与所接收的键相同,则在步骤S550中,可以确定匹配。如果所读取的对象OBJ的键与所接收的键不同,则过程继续到步骤S560。
在步骤S560中,IAB搜索单元253确定是否终止关于所选择的IAB的搜索操作。例如,如果要通过IAB搜索单元253比较的下一个索引不存在,则可以确定搜索操作终止。之后,在步骤S570中,IAB搜索单元253确定匹配不存在。如果如在步骤S560中所确定地,要通过IAB搜索单元253比较的下一个索引存在,则可以确定搜索操作不终止。之后,在步骤S580中,IAB搜索单元253选择在所选择的IAB处的下一个索引,并且过程返回到步骤S520。
作为另一个示例,当在步骤S520中选择的索引的排序标识符ID_S与根据键生成的排序标识符相同时,可以使用键的长度信息L_KEY和对象OBJ的长度信息L_OBJ来额外地进行比较。例如,IAB搜索单元253可以将所接收的键的长度与所选择的索引的键的长度信息L_KEY相比较。IAB搜索单元253可以将所请求的对象的长度与所选择的索引的对象的长度信息L_OBJ相比较。如果键的长度与长度信息L_KEY相同并且对象OBJ的长度与长度信息L_OBJ相同,则在步骤S530中,OAB取出单元263读取与所选择的索引相对应的对象OBJ。即使根据键生成的排序标识符ID_S与所选择的索引的排序标识符ID_S相同,但是如果键的长度与长度信息L_KEY不同或对象OBJ的长度与长度信息L_OBJ不同,则可以不执行步骤S530至S560。
图19图示出其中使用排序标识符ID_S来执行搜索操作的示例。参考图5、图18和图19,对一个IAB进行例示。分别地包括附图标记“1”至“32”的框可以分别地表示IAB中所包括的索引。
如参考图14所描述地,可以基于排序标识符ID_S对IAB的索引1至32进行排序或对准。因此,IAB搜索单元253可以使用排序标识符ID_S执行二分搜索,由此显著地减少搜索索引所消耗的资源。
在本发明构思的实施例中,初始位置可以被设置在索引1至32的中间,借此索引16的位置可以是初始位置。如由附图标记①所表示地,可以将索引16的排序标识符ID_S与根据键生成的排序标识符ID_S相比较。
可以假定,在从索引1至索引32的方向上——即,按照排序标识符ID_S的升序——来对索引1至32进行排序。此外,可以假定,索引16的排序标识符ID_S的值小于根据键生成的排序标识符ID_S的值。根据这些假定,可以认为每个均具有比索引16的值小的值的排序标识符ID_S的索引1至15与根据键生成的排序标识符相同的概率不存在。因此,可以将索引1至16从比较中排除。
然后,可以基于二分搜索来选择位于索引17至32的中间处的索引作为比较目标。例如,可以选择索引25作为比较目标。如由附图标记②所表示地,可以将索引25的排序标识符ID_S与根据键生成的排序标识符ID_S相比较。
此外,可以假定,索引25的排序标识符ID_S的值小于根据键生成的排序标识符ID_S的值。在该情况下,可以认为每个均具有比索引25的值小的值的排序标识符ID_S的索引17至24与根据键生成的排序标识符相同的概率不存在。因此,可以将索引17至25从比较中排除。
然后,可以基于二分搜索来选择位于索引26至32的中间处的索引作为比较目标。例如,可以选择索引29作为比较目标。如由附图标记③所表示地,可以将索引29的排序标识符ID_S与根据键生成的排序标识符ID_S相比较。
此外,可以假定,索引29的排序标识符ID_S的值大于根据键生成的排序标识符ID_S的值。在该情况下,可以认为每个均具有比索引29的值大的值的排序标识符ID_S的索引30至32与根据键生成的排序标识符相同的概率不存在。因此,可以将索引29至32从比较中排除。
然后,可以基于二分搜索来选择位于索引26至28的中间处的索引作为比较目标。例如,可以选择索引27作为比较目标。如由附图标记④所表示地,可以将索引27的排序标识符ID_S与根据键生成的排序标识符ID_S相比较。
在实施例中,可以假定,索引27的排序标识符ID_S的值小于根据键生成的排序标识符ID_S的值。在该情况下,可以认为具有比索引27的值小的值的排序标识符ID_S的索引26与根据键生成的排序标识符相同的概率不存在。因此,可以将索引26至27从比较中排除。
可以基于二分搜索选择最后一个索引28作为比较目标。如由附图标记⑤所表示地,可以将索引28的排序标识符ID_S与根据键生成的排序标识符ID_S相比较。
如果索引28的排序标识符ID_S与根据键生成的排序标识符不同,则作为比较目标,可能不存在下一个索引。因此,然后可以确定在IAB处未发生匹配,并且可以在下一个IAB处执行搜索操作。
如果在搜索IAB时发生匹配,则可以暂停搜索操作,并且可以将对象OBJ的键与所接收的键相比较。如果对象OBJ的键与所接收的键不同,则可以重新开始被暂停的搜索操作。
通常,可以使用线性搜索方法,其中一一对应地将读取的对象OBJ的键与接收的键相比较。如果使用此类线性搜索,则在最坏的情况下,在搜索存储N个对象的分区时,可能执行N次读取操作和N次比较操作。
在使用根据本发明构思的实施例的IAB和排序标识符ID_S并且与M个对象相对应的索引被包括在一个IAB中的情况下,可以显著地降低读取频率和比较频率。例如,假定在执行二分搜索时的最坏的情况下,所有比较操作中的每个均伴随有对象读取操作,在多个IAB处执行搜索操作以及在最后一个索引处发生匹配。可以如下面的等式1中所示出地来对读取频率进行总结。
[等式1]
在实施例中,N可以是“163840”并且M可以是“16384”。根据等式1,与当使用线性搜索时相比较,可以将读取频率改善(减少)大约1092次。读取非易失性存储器设备290所花费的操作时间可以造成其寿命的降低。因此,如果读取频率降低,则可以提高存储设备140的操作速度,并且可以延长存储设备140的寿命。
可以如下面的公式2中所示出地对比较频率进行总结。
[等式2]
根据等式2,与当使用线性搜索时相比较,可以将比较频率改善大约585次。比较频率可以使对象处理电路220的操作时间成为必需。因此,如果比较频率降低,则可以提高存储设备140的操作速度。
图20图示出其中在第k分区PT_k处写入IAB和OAB的示例。参考图20,索引分区IPT_k和对象分区OPT_k大小可以是可变的,不是固定的。在实施例中,可以从第k分区PT_k的起始逻辑地址LBA_S起顺序地写入IAB。可以将写入IAB的区域识别为索引分区IPT_k。可以从第k分区PT_k的最终逻辑地址LBA_E起顺序地写入OAB。可以将其中写入OAB的区域识别为对象分区IPT_k。
也就是说,索引分区IPT_k和对象分区OPT_k可以分别地从第k分区PT_k的起始逻辑地址LBA_S和最终逻辑地址LBA_E起增长(grow),并且可以占据第k分区PT_k的空闲空间。如果如图20中所示出地来配置索引分区IPT_k和对象分区OPT_k,则在因为在索引分区IPT_k处存在空闲空间但是对象分区OTP_k没有空间而不可能再写入对象的情况下,或在因为在对象分区OPT_k处存在空闲空间但是索引分区ITP_k没有空间而不可能再写入对象的情况下,可以防止第k分区PT_k的存储空间被浪费。
在实施例中,可以根据存储设备140的特性来调整IAB的大小或OAB的大小。例如,可以根据非易失性存储器设备290的读取单位或写入单位来调整IAB的大小或OAB的大小。例如,随着非易失性存储器设备290的读取单位或写入单位变得更大,IAB的大小或OAB的大小可以变得更大,或随着非易失性存储器设备290的读取单位或写入单位变得更小,IAB的大小或OAB的大小可以变得更小。
例如,可以根据随机存取存储器280的容量来调整IAB的大小或OAB的大小。例如,随着随机存取存储器280的容量变得更大,IAB的大小或OAB的大小可以变得更大,或随着随机存取存储器280的容量变得更小,IAB的大小或OAB的大小可以变得更小。
例如,可以根据对象处理电路220的内部存储器的容量来调整IAB的大小或OAB的大小。例如,随着对象处理电路220的IAB缓冲器254的容量或其OAB缓冲器261的容量变得更大,IAB的大小或OAB的大小可以变得更大,或随着对象处理电路220的IAB缓冲器254的容量或其OAB缓冲器261的容量变得更小,IAB的大小或OAB的大小可以变得更小。
例如,可以根据来自外部主机设备的写入请求或读取请求的频率来调整IAB的大小或OAB的大小。例如,随着写入请求或读取请求的频率增加,IAB的大小或OAB的大小可以减小,或随着写入请求或读取请求的频率降低,IAB的大小或OAB的大小可以减小或增大。
在实施例中,可以利用硬件来实施对象处理电路220的请求控制部230、对象管理部240、IAB管理器250、标识符计算器251、分区单元252、IAB搜索单元253、IAB缓冲器254、IAB取出单元255、IAB排序和清空单元256、OAB管理器260、OAB缓冲器261、OAB取出单元263和OAB清空单元265中的至少一个。例如,标识符计算器251可以占据对象处理电路220的吞吐量的大约30%。如果利用硬件来实施占据许多吞吐量的组件,诸如标识符计算器251,则可以显著地提高对象处理电路220的操作速度。
本发明构思的实施例被例示为每个IAB具有指示刚刚在先前写入的IAB的链接L。然而,在其他的实施例中,每个IAB可以不具有链接L。在实施例中,每个索引分区IPT_k可以具有给定范围的逻辑地址LBA,并且每个IAB可以具有固定大小。因此,可以通过从当前被访问的IAB的逻辑地址LBA起移动与每个IAB的大小相对应的逻辑地址LBA来计算刚刚在先前写入的IAB的逻辑地址LBA。
图21和22图示出其中使用IAB缓冲器254、OAB缓冲器261和非易失性存储器设备290的示例的图。参考图21,可以将IAB缓冲器254'分割为多个索引缓冲器IBF_1至IBF_n。索引缓冲器IBF_1至IBF_n可以分别地与非易失性存储器设备290'的索引分区IPT_1至IPT_n相对应。
OAB缓冲器261'可以用作对象缓冲器OBF。对象缓冲器OBF可以与非易失性存储器设备290'的对象分区OPT相对应。
在图21中,可以以与参考图1至图20所描述的相同的方法来读取和写入IAB。可以在没有分区分离的情况下在一个对象缓冲器OBF上累积OAB,并且可以在一个对象分区OPT处写入OAB。
参考图22,可以将IAB缓冲器254"分割为多个索引缓冲器IBF_1至IBF_n。索引缓冲器IBF_1至IBF_n可以分别地与非易失性存储器设备290"的索引分区IPT_1至IPT_n相对应。
可以将OAB缓冲器261"分割为多个对象缓冲器OBF_1至OBF_m。可以无论索引缓冲器IBF_1至IBF_n如何地来配置对象缓冲器OBF_1至OBF_m。非易失性存储器设备290"可以包括多个索引分区IPT_1至IPT_n和多个对象分区OPT_1至OPT_j。可以无论索引分区IPT_1至IPT_n、索引缓冲器IBF_1至IBF_n或者对象缓冲器OBF_1至OBF_m如何地来配置对象分区OTP_1至OPT_j。
在图22中,可以以与参考图1至图20所描述的相同的方法来读取和写入IAB。可以在对象缓冲器OBF_1至OBF_m上累积OAB。对象缓冲器OBF_1至OBF_m可以与分别地被指配给OAB管理器260的核心的写入队列相对应。随着对象分别地在对象缓冲器OBF_1至OBF_m上被累积,OAB管理器260的核心可以使OAB写入请求入队在写入队列中。
对象分区OPT_1至OPT_j的数量可以与并行地执行写入请求的线程的数量相对应。可以并行地处理关于对象分区OPT_1至OPT_j的写入操作。
图23图示出根据本发明构思的实施例的存储设备140'的框图。与图5的存储设备140相比较,图23的存储设备140'不包括控制电路和随机存取存储器。
图23中的对象处理电路220被配置为生成非易失性存储器设备290的物理地址PBA,而不是逻辑地址LBA。
在实施例中,存储设备140'可以用作服务器设备的存储装置。在这种情况下,在存储设备140'处写入的数据可以长时间不被更新并且可以仅被用于读取操作。因此,可以能够跳过诸如损耗均衡、无用单元收集等的用于闪速存储器设备的后台操作,并且对象处理电路220可以直接地访问非易失性存储器设备290的物理地址。
图24图示出根据本发明构思的实施例的存储设备140或140'被应用至其的服务器系统的框图。参考图24,以太网交换机ES1与服务器设备SD1至SDn相连接。服务器设备SD1至SDn中的每个可以包括应用服务器设备、存储服务器设备或高速缓存服务器设备。
以太网交换机ES1直接地与存储设备140相连接。存储设备140可以通过以太网交换机ES1用作服务器设备SD1至SDn的存储装置。例如,存储设备140可以用作应用服务器设备的存储装置。
以太网交换机ES1还与存储装置集合SS1至SSm相连接。存储装置集合SS1至SSm中的每个包括多个存储设备140和内部以太网交换机ES2。存储装置集合SS1至SSm内的存储设备140连接到相应的内部以太网交换机ES2。内部以太网交换机ES2与以太网交换机ES1相连接。存储装置集合SS1至SSm中的每个可以用作存储服务器设备。
图25图示出其中安装有根据本发明构思的实施例的存储设备140或140'的服务器设备的框图。参考图25,服务器设备2000包括两个或更多服务器支架2010。两个或更多存储设备140或140'被安装在服务器支架2010中的每个中。
图26图示出根据本发明构思的实施例的非易失性存储器设备290的框图。参考图5和图26,非易失性存储器设备290包括存储单元阵列291、行译码器电路293、页面缓冲电路295、数据输入/输出电路297和控制逻辑电路299。
存储单元阵列291包括每个均包括多个存储单元的多个存储块BLK1至BLKz。每个存储块可以通过至少一个串选择线SSL、多个字线WL和至少一个接地选择线GSL连接到行译码器电路293。每个存储块可以通过多个位线BL连接到页面缓冲电路295。存储块BLK1至BLKz可以共同地连接到多个位线BL。存储块BLK1至BLKz中的存储单元可以具有相同的结构。
行译码器电路293可以通过多个接地选择线GSL、多个字线WL和多个串选择线SSL连接到存储单元阵列291。行译码器电路293可以根据控制逻辑电路299的控制进行操作。行译码器电路293可以对通过输入/输出信道从控制电路270接收的地址进行译码,并且可以基于译码的地址来控制要被施加到串选择线SSL、字线WL和接地选择线GSL的电压。
页面缓冲器295可以通过位线BL连接到存储单元阵列291。页面缓冲电路295可以在控制逻辑电路299的控制之下进行操作。
数据输入/输出电路297可以通过数据线DL连接到页面缓冲电路295。数据输入/输出电路297可以通过输入/输出信道向控制电路270(控制器)输出由页面缓冲电路295读取的数据,并且可以向页缓冲电路295传递通过输入/输出信道从控制电路270接收的数据。
控制逻辑电路299可以通过输入/输出信道从控制电路270接收命令,并且可以通过控制信道从其接收控制信号。
图27是图示出根据本发明构思的实施例的存储块BLKa的电路图。参考图27,存储块BLKa可以包括多个单元串CS11至CS21和CS12至CS22。多个单元串CS11至CS21和CS12至CS22可以排列为行和列的矩阵。
例如,沿着行方向排列的单元串CS11和CS12可以构成第一行,而沿着行方向排列的单元串CS21和CS22可以构成第二行。沿着列方向排列的单元串CS11和CS21可以构成第一列,而沿着列方向排列的单元串CS12和CS22可以构成第二列。
每个单元串可以包含多个单元晶体管。单元晶体管可以包括接地选择晶体管GST、存储单元MC1至MC6以及串选择晶体管SSTa和SSTb。可以在与在其上沿着行和列排列单元串CS11至CS21和CS12至CS22的平面(例如,存储块BLKa的基板上的平面)垂直的高度方向上堆叠每个单元串中的接地选择晶体管GST、存储单元MC1至MC6以及串选择晶体管SSTa和SSTb。
每个单元晶体管可以是其阈值电压根据在其绝缘层中所俘获的电荷的量而改变的电荷俘获类型单元晶体管。
最低的接地选择晶体管GST可以共同地连接到公共源极线CSL。
第一行中的单元串CS11和CS12的接地选择晶体管GST的控制栅极可以共同地连接到接地选择线GSL1,并且第二行中的单元串CS21和CS22的接地选择晶体管GST的控制栅极可以共同地连接到接地选择线GSL2。也就是说,不同的行中的单元串可以连接到不同的接地选择线。
共同地连接到字线的是被放置在从基板(或接地选择晶体管GST)起相同的高度(或次序)处的存储单元的控制栅极。连接到不同的字线WL1至WL6的是被放置在不同的高度(或次序)处的存储单元的控制栅极。例如,存储单元MC1可以共同地连接到字线WL1。存储单元MC2可以共同地连接到字线WL2。存储单元MC3可以共同地连接到字线WL3。存储单元MC4可以共同地连接到字线WL4。存储单元MC5可以共同地连接到字线WL5。存储单元MC6可以共同地连接到字线WL6。
也就是说,不同的行中的单元串可以连接到不同的串选择线。相同的行中的单元串的具有相同的高度(或次序)的串选择晶体管可以连接到相同的串选择线。相同的行中的单元串的具有不同的高度(或次序)的串选择晶体管可以连接到不同的串选择线。
在示例性实施例中,相同的行中的单元串的串选择晶体管可以共同地连接到串选择线。例如,第一行中的单元串CS11和CS12的串选择晶体管SSTa和SSTb可以共同地连接到串选择线。第二行中的单元串CS21和CS22的串选择晶体管SSTa和SSTb可以共同地连接到串选择线。
单元串CS11至CS21和CS12至CS22的列可以分别地连接到不同的位线BL1和BL2。例如,单元串CS11和CS21的串选择晶体管SSTb可以共同地连接到位线BL1。单元串CS12和CS22的串选择晶体管SSTb可以共同地连接到位线BL2。
单元串CS11和CS12可以构成第一平面。单元串CS21和CS22可以构成第二平面。
在本发明构思的实施例中,提供一种三维(3D)存储器阵列。在具有安置在硅基板上的有源区域和与那些存储单元的操作相关联的电路的存储单元阵列的一个或多个物理级中整体地形成3D存储器阵列,而无论此类相关联的电路是在此类基板之上还是在其内。术语“整体地”意指阵列的每个级的层被直接地沉积在阵列的每个下级的层上。
在本发明构思的实施例中,3D存储器阵列包括被垂直地定向使得至少一个存储单元位于另一个存储单元之上的垂直NAND串。至少一个存储单元可以包括电荷俘获层。每个垂直NAND串可以包括位于存储单元之上的至少一个选择晶体管、具有与存储单元相同的结构并且与存储单元一起整体地形成的至少一个选择晶体管。
通过引用被合并于此的以下专利文献——美国专利第7,679,133号;第8,553,466号;第8,654,587号;第8,559,235号;以及美国专利公开第2011/0233648号——描述了用于三维存储器阵列的适当的配置,其中,三维存储器阵列被配置为多个级,其中在级之间共享字线和/或位线。
根据本发明构思的实施例,可以提供一种支持服务器设备的功能的存储设备,以及操作存储设备的方法。因此,可以减少服务器设备的负载,并且可以提高关于服务器设备的可扩展性。可以通过仅仅添加与添加存储设备相关联的成本来扩展服务器设备的资源和容量,由此使与当替代地添加另外的服务器设备时相比,利用更少成本管理更多内容成为可能。此外,可以提高存储设备的操作速度。因此,可以提高包括存储设备的服务器设备的操作速度。
虽然已经参考示例性实施例描述了本发明构思,但对本领域技术人员将明显的是,在不背离本发明构思的精神和范围的情况下,可以进行各种改变和修改。因此,应当理解,以上实施例不是限制性的,而是说明性的。

Claims (20)

1.一种存储设备,包括:
接口电路,被配置为与外部设备进行通信;
非易失性存储器设备,形成多个分区;以及
处理电路,被配置为从接口电路接收写入请求、键和值,根据所接收的键生成分区标识符和排序标识符,使用分区标识符来选择分区之一,以及使用与所选择的分区相对应的累积键的索引中所包括的排序标识符来对所述索引进行排序。
2.根据权利要求1所述的存储设备,其中,处理电路被配置为当确定索引的累积大小达到参考大小时,对索引进行排序并且将所排序的索引作为索引块写入所选择的分区处。
3.根据权利要求2所述的存储设备,其中,索引块包括对在所选择的分区处最新近地写入的索引块的起始地址或在其中索引块要被写入的所选择的分区的区域的起始地址进行指示的链接。
4.根据权利要求1所述的存储设备,其中,索引中的每个包括根据单独的键生成的单独的排序标识符以及单独的地址,并且
其中,单独的地址指示在其中单独的键和与单独的键相对应的单独的值被写入的所选择的分区的位置。
5.根据权利要求4所述的存储设备,其中,索引中的每个进一步包括单独的键的第一长度信息,以及单独的键和单独的值的第二长度信息。
6.根据权利要求1所述的存储设备,其中,处理电路被配置为响应于写入请求来生成在其中所接收的键和所接收的值要被写入的位置的地址。
7.根据权利要求6所述的存储设备,其中,地址是逻辑地址,存储设备进一步包括:
控制电路,被配置为将逻辑地址转换为非易失性存储器设备的物理地址。
8.根据权利要求1所述的存储设备,其中,处理电路被配置为存储在每个分区处最新近地写入的索引块的地址。
9.根据权利要求1所述的存储设备,其中,处理电路被配置为当确定累积键和累积值的大小达到参考大小时,将累积键和累积值作为对象块写入在非易失性存储器设备处。
10.根据权利要求9所述的存储设备,其中,累积值的大小彼此不同。
11.根据权利要求1所述的存储设备,其中,处理电路被配置为从接口电路接收读取请求和第二键,根据所接收的键生成第二分区标识符和第二排序标识符,使用第二分区标识符来选择分区中的第二分区,以及使用第二排序标识符来搜索存储在第二分区中的第二索引。
12.根据权利要求11所述的存储设备,其中,处理电路被配置为搜索包括存储在所选择的第二分区中的第二索引的排序标识符之中的第二排序标识符的索引。
13.根据权利要求11所述的存储设备,其中,处理电路被配置为通过二分搜索来从通过排序标识符排序的第二索引之中搜索包括第二排序标识符的索引。
14.根据权利要求11所述的存储设备,其中,处理电路被配置为当确定在第二索引之中未找到包括第二排序标识符的索引时,搜索存储在所选择的第二分区中的第三索引。
15.根据权利要求14所述的存储设备,其中,第二索引包括对在其中存储第三索引的所选择的第二分区的位置进行指示的链接。
16.根据权利要求11所述的存储设备,其中,当在第二索引之中找到包括第二排序标识符的索引时,处理电路被配置为将找到的索引中所包括的键的第一长度信息,或找到的索引中所包括的键和值的第二长度信息中的至少一个与读取请求中所包括的信息相比较。
17.根据权利要求11所述的存储设备,其中,当在第二索引之中找到包括第二排序标识符的索引时,处理电路被配置为使用找到的索引中所包括的地址来从非易失性存储器设备读取键和值。
18.根据权利要求17所述的存储设备,其中,处理电路被配置为当确定读取的键与第二键相同时通过接口电路输出读取的键和读取的值,以及当确定读取的键与第二键不同时忽略找到的索引并且继续搜索。
19.一种存储设备,包括:
接口电路,被配置为与外部设备进行通信;
非易失性存储器设备,形成多个分区;以及
处理电路,被配置为从接口电路接收读取请求和键,根据所接收的键生成分区标识符和排序标识符,使用分区标识符来选择分区之一,以及使用排序标识符来搜索存储在所选择的分区中的索引。
20.一种包括非易失性存储器设备的存储设备的操作方法,该操作方法包括:
在存储设备处接收多个键和与键分别地相对应的值;
在存储设备处生成包括分别地与键相对应的多个排序标识符的多个索引;
在存储设备处基于排序标识符以第一块大小为单位对索引进行排序并且将所排序的索引存储在非易失性存储器设备中;
以第二块大小为单位将键和值存储在非易失性存储器设备中;以及
当在存储设备处确定与特定键相对应的值被请求时,以第一块大小为单位、使用与特定键相对应的排序标识符来搜索索引。
CN201611042510.0A 2015-11-23 2016-11-23 存储设备和存储设备的操作方法 Pending CN106990910A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2015-0164258 2015-11-23
KR1020150164258A KR20170060234A (ko) 2015-11-23 2015-11-23 스토리지 장치 및 스토리지 장치의 동작 방법

Publications (1)

Publication Number Publication Date
CN106990910A true CN106990910A (zh) 2017-07-28

Family

ID=58720199

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611042510.0A Pending CN106990910A (zh) 2015-11-23 2016-11-23 存储设备和存储设备的操作方法

Country Status (3)

Country Link
US (1) US20170147231A1 (zh)
KR (1) KR20170060234A (zh)
CN (1) CN106990910A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109521948A (zh) * 2017-09-20 2019-03-26 三星电子株式会社 支持快照功能的键值存储设备及其操作方法
CN109753231A (zh) * 2017-11-08 2019-05-14 三星电子株式会社 键值存储设备及操作其的方法
CN111565255A (zh) * 2020-04-27 2020-08-21 展讯通信(上海)有限公司 通信装置及调制解调器

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018164700A1 (en) * 2017-03-10 2018-09-13 Visa International Service Association Techniques for in-memory data searching
US11115458B2 (en) * 2019-12-24 2021-09-07 Atlassian Pty Ltd. Monitoring in composite request systems

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101517535A (zh) * 2006-08-29 2009-08-26 皇家飞利浦电子股份有限公司 用于将非易失性存储设备与消费产品绑定的方法和设备
CN101751390A (zh) * 2008-12-08 2010-06-23 财团法人工业技术研究院 物件导向储存装置的磁盘配置方法
CN102436420A (zh) * 2010-10-20 2012-05-02 微软公司 使用辅助存储器的低ram空间、高吞吐量的持久键值存储
US20120203955A1 (en) * 2011-02-07 2012-08-09 Jin Hyuk Kim Data processing device and system including the same
CN103186352A (zh) * 2011-12-30 2013-07-03 三星电子株式会社 从存储设备读取数据的方法、纠错设备和存储系统
US8977616B2 (en) * 2011-11-18 2015-03-10 Nokia Corporation Methods, apparatuses and computer program products for generating indexes using a journal in a key value memory device
CN104978330A (zh) * 2014-04-04 2015-10-14 西南大学 一种数据存储的方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101517535A (zh) * 2006-08-29 2009-08-26 皇家飞利浦电子股份有限公司 用于将非易失性存储设备与消费产品绑定的方法和设备
CN101751390A (zh) * 2008-12-08 2010-06-23 财团法人工业技术研究院 物件导向储存装置的磁盘配置方法
CN102436420A (zh) * 2010-10-20 2012-05-02 微软公司 使用辅助存储器的低ram空间、高吞吐量的持久键值存储
US20120203955A1 (en) * 2011-02-07 2012-08-09 Jin Hyuk Kim Data processing device and system including the same
US8977616B2 (en) * 2011-11-18 2015-03-10 Nokia Corporation Methods, apparatuses and computer program products for generating indexes using a journal in a key value memory device
CN103186352A (zh) * 2011-12-30 2013-07-03 三星电子株式会社 从存储设备读取数据的方法、纠错设备和存储系统
CN104978330A (zh) * 2014-04-04 2015-10-14 西南大学 一种数据存储的方法及装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109521948A (zh) * 2017-09-20 2019-03-26 三星电子株式会社 支持快照功能的键值存储设备及其操作方法
CN109521948B (zh) * 2017-09-20 2023-08-15 三星电子株式会社 支持快照功能的键值存储设备及其操作方法
CN109753231A (zh) * 2017-11-08 2019-05-14 三星电子株式会社 键值存储设备及操作其的方法
CN109753231B (zh) * 2017-11-08 2024-05-10 三星电子株式会社 键值存储设备及操作其的方法
CN111565255A (zh) * 2020-04-27 2020-08-21 展讯通信(上海)有限公司 通信装置及调制解调器
CN111565255B (zh) * 2020-04-27 2021-12-21 展讯通信(上海)有限公司 通信装置及调制解调器

Also Published As

Publication number Publication date
US20170147231A1 (en) 2017-05-25
KR20170060234A (ko) 2017-06-01

Similar Documents

Publication Publication Date Title
CN106990910A (zh) 存储设备和存储设备的操作方法
JP6356675B2 (ja) 集約/グループ化動作:ハッシュテーブル法のハードウェア実装
JP5524144B2 (ja) key−valueストア方式を有するメモリシステム
US8868926B2 (en) Cryptographic hash database
CN108139902A (zh) 用于提供混合模式来访问ssd驱动器的方法和装置
CN110291518A (zh) 合并树无用单元指标
US20150032938A1 (en) System and method for performing efficient processing of data stored in a storage node
CN110383261A (zh) 用于多流存储装置的流选择
KR101865959B1 (ko) 비휘발성 메모리를 갖는 시스템을 위한 고속 트리 플래트닝
US20140372675A1 (en) Information processing apparatus, control circuit, and control method
WO2013152678A1 (zh) 元数据查询方法和装置
CN110196784A (zh) 数据库及固态磁盘(ssd)控制器
CN104115134A (zh) 复合非易失性存储设备的数据迁移
CN102110171B (zh) 基于树形结构的布鲁姆过滤器的查询与更新方法
US20200242037A1 (en) System and method for prediction of random read commands in virtualized multi-queue memory systems
US20150186453A1 (en) Tiered index management
CN106055679A (zh) 一种多层次缓存感知型索引方法
CN102354301B (zh) 缓存分区方法
JP6258436B2 (ja) メモリシステムのローカルコントローラ
US20150121033A1 (en) Information processing apparatus and data transfer control method
JP2014063540A (ja) key−valueストア方式を有するメモリシステム
JP5833212B2 (ja) key−valueストア方式を有するメモリシステム
JP6034467B2 (ja) システム
CN112328630B (zh) 数据查询方法、装置、设备及存储介质
US11461299B2 (en) Key-value index with node buffers

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
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170728