CN116414724A - 存储设备、操作存储设备的方法和操作存储系统的方法 - Google Patents
存储设备、操作存储设备的方法和操作存储系统的方法 Download PDFInfo
- Publication number
- CN116414724A CN116414724A CN202211274828.7A CN202211274828A CN116414724A CN 116414724 A CN116414724 A CN 116414724A CN 202211274828 A CN202211274828 A CN 202211274828A CN 116414724 A CN116414724 A CN 116414724A
- Authority
- CN
- China
- Prior art keywords
- access module
- metadata
- indirect
- indirect access
- data
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000008569 process Effects 0.000 claims description 17
- 230000009977 dual effect Effects 0.000 claims description 9
- 238000004891 communication Methods 0.000 claims description 8
- 230000015654 memory Effects 0.000 description 57
- 238000010586 diagram Methods 0.000 description 19
- 238000012545 processing Methods 0.000 description 17
- 102100034368 Potassium voltage-gated channel subfamily A member 1 Human genes 0.000 description 13
- 101710154114 Potassium voltage-gated channel subfamily A member 1 Proteins 0.000 description 13
- 239000000872 buffer Substances 0.000 description 9
- 238000003672 processing method Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 6
- 238000012937 correction Methods 0.000 description 4
- 230000003111 delayed effect Effects 0.000 description 4
- 101150095057 DPB2 gene Proteins 0.000 description 2
- 101150030825 DPB3 gene Proteins 0.000 description 2
- 101000648997 Homo sapiens Tripartite motif-containing protein 44 Proteins 0.000 description 2
- 102100028017 Tripartite motif-containing protein 44 Human genes 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 101150003207 mbk-1 gene Proteins 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 101150072824 mbk-2 gene Proteins 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了存储设备、操作存储设备的方法和操作存储系统的方法。所述存储设备与主机设备通信。所述操作存储设备的方法包括:从所述主机设备接收访问目标数据的请求;基于所述请求执行间接访问模块;所述间接访问模块基于所述请求的访问参数确定指示所述目标数据的位置的目标地址;所述间接访问模块基于所述目标地址访问数据块;和所述间接访问模块向所述主机设备提供所访问的数据块或者所访问的数据块中的所述目标数据。
Description
相关申请的交叉引用
本申请要求于2021年12月29日向韩国知识产权局提交的韩国专利申请No.10-2021-0191465的优先权,该韩国专利申请的公开内容通过引用整体并入本文。
技术领域
在本文中描述的本公开的实施例涉及存储设备(storage device),更具体地,涉及包括间接访问模块的存储设备、操作该存储设备的方法以及操作包括该存储设备的存储系统的方法。
背景技术
存储装置(memory device)响应于写入请求存储数据并且响应于读取请求输出存储在其中的数据。例如,存储装置被分类为诸如动态随机存取存储(DRAM)装置或静态RAM(SRAM)装置的易失性存储装置或者诸如闪存装置、相变RAM(PRAM)、磁性RAM(MRAM)或电阻式RAM(RRAM)的非易失性存储装置,当电源关断时,易失性存储装置会丢失存储在其中的数据,即使在电源关断时非易失性存储装置也保留存储在其中的数据。
如今,随着用户数据、应用等的大小增加,需要对大量数据进行管理。为了管理大量数据,非易失性存储装置可以使用具有多层结构的存储块。例如,高层可以包括元数据块,而低层可以包括数据块。随着层数的增加,能够被管理的数据的容量可能会增加。然而,由于顺序地进行对多个元数据块的访问,对包括目标数据的数据块的访问可能被延迟。因此,需要一种用于减少由于对数据块的访问而引起的延迟的技术。
发明内容
本公开的实施例提供了包括间接访问模块的存储设备、操作该存储设备的方法以及操作包括该存储设备的存储系统的方法。
根据实施例,存储设备与主机设备通信。操作存储设备的方法包括:从所述主机设备接收访问目标数据的请求;基于所述请求执行间接访问模块;所述间接访问模块基于所述请求的访问参数确定指示所述目标数据的位置的目标地址;所述间接访问模块基于所述目标地址访问数据块;和,所述间接访问模块向所述主机设备提供所访问的数据块或者所访问的数据块中的所述目标数据。
根据实施例,存储系统包括主机设备和存储设备。操作存储系统的方法包括:所述主机设备提供访问目标数据的请求;所述存储设备基于所述请求执行间接访问模块;所述间接访问模块基于所述请求的访问参数确定指示所述目标数据的位置的目标地址;所述间接访问模块基于所述目标地址访问数据块;和所述间接访问模块向所述主机设备提供所访问的数据块或者所访问的数据块中的所述目标数据。
根据实施例,存储设备包括:非易失性存储装置,所述非易失性存储装置存储多个数据集;第一间接访问模块,所述第一间接访问模块管理所述多个数据集中的第一数据集;主机接口电路,所述主机接口电路与主机设备通信;和模块管理器,所述模块管理器通过所述主机接口电路从所述主机设备接收对第一目标数据的第一访问的第一请求,以及基于所述第一请求执行所述第一间接访问模块。所述第一数据集包括具有所述第一目标数据的第一目标数据块和具有第一元数据的第一元数据块,并且,所述第一间接访问模块在被所述模块管理器执行时:基于所述第一请求的第一访问参数以及所述第一元数据,确定指示所述第一目标数据的位置的第一目标地址;基于所述第一目标地址访问所述第一目标数据块;和向所述主机接口电路提供已访问的所述第一目标数据块或已访问的所述第一目标数据块中的所述第一目标数据。
附图说明
通过参考附图详细描述本公开的实施例,本公开的上述和其他目的和特征将变得容易理解。
图1是根据本公开的实施例的存储系统的框图。
图2是根据本公开的一些实施例的、详细示出图1的存储控制器的框图。
图3是根据本公开的一些实施例的、详细示出图1的非易失性存储装置的框图。
图4是描述相关技术的存储系统的数据处理方法的图。
图5是示出根据本公开的实施例的数据处理方法的图。
图6是描述根据本公开的一些实施例的数据处理方法的图。
图7是描述根据本公开的一些实施例的数据处理方法的图。
图8是根据本公开的一些实施例的存储设备的框图。
图9是描述根据本公开的一些实施例的操作存储设备的方法的流程图。
图10是描述根据本公开的一些实施例的操作存储设备的方法的流程图。
图11是描述根据本公开的一些实施例的操作存储设备的方法的流程图。
图12是描述根据本公开的一些实施例的操作存储设备的方法的流程图。
图13是根据本公开的一些实施例的存储系统的框图。
具体实施方式
下面,将详细且清楚地描述本公开的实施例,以达到本领域技术人员容易地实施本公开的程度。
图1是根据本公开的实施例的存储系统的框图。参考图1,存储系统10可以包括主机设备11和存储设备100。在一些实施例中,存储系统10可以包括被配置为处理各种信息的计算系统,例如个人计算机(PC)、笔记本电脑、膝上型电脑、服务器、工作站、平板PC、智能手机、数码相机和黑匣子。
主机设备11可以控制存储系统10的整体操作。例如,主机设备11可以将数据存储在存储设备100中或者可以读取存储在存储设备100中的数据。
主机设备11可以包括用户接口12、应用13和操作系统14。用户接口12可以提供与存储系统10的用户交互的接口。例如,用户接口12可以通过诸如触摸屏、显示器、鼠标、键盘、麦克风或扬声器的外部设备提供与用户交互的接口。
应用13可以指被设计为执行特定功能的软件程序。例如,应用13可以包括文字处理器、数据库程序、网络浏览器、图像编辑程序等。
操作系统14可以提供硬件和软件之间的接口。例如,操作系统14可以执行应用13并且可以向应用13分配资源。操作系统14可以通过文件系统自动管理文件或者可以依据应用13的请求通过文件系统管理文件。例如,文件系统可以系统地管理创建文件的操作、访问文件的操作、打开文件的操作、更改文件的操作、删除文件的操作等。一个文件可以指一组数据。与文件对应的数据集合可以存储在存储设备100中。
存储设备100可以存储从主机设备11接收的数据或者可以将存储的数据提供给主机设备11。存储设备100可以包括存储控制器110和非易失性存储装置120。
非易失性存储装置120可以存储数据。存储控制器110可以将数据存储在非易失性存储装置120中或者可以读取存储在非易失性存储装置120中的数据。非易失性存储装置120可以在存储控制器110的控制下操作。例如,基于指示操作的命令CMD和指示数据位置的地址ADD,存储控制器110可以将数据(Data)存储在非易失性存储装置120中或者可以读取存储在非易失性存储装置120中的数据。
在一些实施例中,非易失性存储装置120可以是NAND闪存装置,但本公开不限于此。例如,非易失性存储装置120可以是即使电源关断仍保留存储在其中的数据的各种存储设备中的一种,例如相变随机存取存储器(PRAM)、磁性随机存取存储器(MRAM)、电阻式随机存取存储器(RRAM)和铁电随机存取存储器(FRAM)。
存储控制器110可以包括间接访问模块111和模块管理器112。间接访问模块111可以辅助操作系统14中文件系统的操作。通常,因为文件系统管理文件,所以可能需要目标数据。目标数据可以被包括在数据块中。作为元数据,指示目标数据位置的信息(例如,指针)可以被包括在元数据块中。
为了获得目标数据,一般文件系统可以顺序访问元数据块来读取元数据,可以从元数据中获得目标数据的目标地址,并且可以基于获得的目标地址来读取数据块的目标数据。主机设备11的处理器可以在性能上比存储控制器110的处理器更好。然而,在主机设备11直接处理元数据的情况下,因为执行接收元数据和返回目标地址的操作,主机设备11和存储设备100之间的输入/输出(I/O)负载可能会增加。这可能意味着数据处理被延迟。
根据本公开的实施例,间接访问模块111可以辅助主机设备11的文件系统处理元数据所必需的操作。例如,间接访问模块111可以从主机设备11接收对目标数据的访问请求。对目标数据的访问可以包括对目标数据的直接访问和对目标数据的间接访问。例如,直接访问可以指访问存储有目标数据的数据块的操作,而间接访问可以指访问存储有指示目标地址的元数据的元数据块的操作。
访问请求可以包括访问参数。访问参数可以指示从主机设备11接收的并且对于检索目标数据或与目标数据对应的元数据来说是必要的信息。例如,访问参数可以包括目标数据的标识符、间接层信息、返回信息等。目标数据的标识符可以是用于标识目标数据的文件字节偏移量(file byte offset)、记录关键字(record key)等。间接层信息可以指示非易失性存储装置120中包括的多个间接层中的特定间接层。返回信息可以限定要被返回到主机设备11的数据的类型。
间接访问模块111可以基于请求的访问参数来获取元数据块的元数据。间接访问模块111可以基于访问参数和获取的元数据来确定目标地址。间接访问模块111可以基于目标地址来获取数据块中的目标数据。间接访问模块111可以将目标数据返回给主机设备11。
也就是说,间接访问模块111可以代替执行通常由一般文件系统执行的元数据相关操作,因此主机设备11请求的目标数据可以直接被提供而无需额外的I/O。主机设备11可以通过一个请求和一个响应获得目标数据。将参考图4至图5详细描述间接访问模块111如何减少I/O负载。
模块管理器112可以管理间接访问模块111。模块管理器112可以基于从主机设备11接收的访问请求(以下称为“访问请求”)来执行间接访问模块111。
间接访问模块111和模块管理器112可以以硬件、软件或其组合的形式实现。例如,在间接访问模块111和模块管理器112用硬件实现的情况下,间接访问模块111和模块管理器112可以以单独的模块、电路或芯片的形式包括在存储控制器110中。
例如,在间接访问模块111和模块管理器112由软件实现的情况下,非易失性存储装置120可以与存储控制器110中的只读存储器(ROM)一起被用作固件存储器。对应于间接访问模块111和模块管理器112的指令可以存储在非易失性存储装置120中,并且可以加载到存储控制器110的易失性存储器(例如,主存储器)以用于与主机设备11通信。
非易失性存储装置120可以包括元数据块和数据块。元数据块可以包括多个元数据。元数据可以包括关于数据的多个信息中的至少一个信息,例如数据的类型、数据的位置、访问数据的方式以及标识信息。数据块可以包括多个数据。数据可以对应于文件系统所管理的文件。例如,数据块可以包括主机设备11请求的目标数据。
在一些实施例中,元数据可以指示数据的位置。例如,元数据可以包括数据的地址,或者可以包括指示数据的地址的其他元数据的地址。数据由多个元数据指示的结构可以称为“多层结构”。将参考图6详细描述多层结构。
如上所述,根据本公开的实施例,可以提供一种存储设备100,该存储设备100包括辅助主机设备11的元数据相关操作的间接访问模块111。间接访问模块111可以处理元数据,并且可以向主机设备11提供对目标数据的直接访问。因此,可以减少主机设备11和存储设备100之间的I/O负载,并且可以提高访问数据块的速度。
图2是根据本公开的一些实施例的、详细示出图1的存储控制器的框图。参考图1和图2,存储控制器110可以与主机设备11和非易失性存储装置120通信。存储控制器110可以包括间接访问模块111、模块管理器112、处理器113、易失性存储装置114、只读存储器(ROM)115、纠错码(ECC)引擎116、主机接口电路117和非易失性存储器接口电路118。间接访问模块111和模块管理器112类似于图1的间接访问模块111和模块管理器112,因此,将省略额外的描述以避免冗余。
在一些实施例中,间接访问模块111和模块管理器112可以由软件实现。详细地,存储设备100可以包括固件存储器。固件存储器可以以指令的形式存储存储设备100操作所必需的各种信息。随着处理器113执行存储在固件存储器中的指令(即,处理器113将指令加载到易失性存储装置114),间接访问模块111和模块管理器112可以被执行或被实现。因为间接访问模块111和模块管理器112的实现与主机设备11的操作系统14无关,所以间接访问模块111和模块管理器112可以与各种操作系统兼容。然而,本公开不限于此。例如,间接访问模块111和模块管理器112可以用(一个或更多个)单独的硬件设备来实现,或者可以用硬件和软件的组合来实现。
处理器113可以控制存储控制器110的整体操作。易失性存储装置114可以用作存储控制器110的主存储器、缓冲存储器、高速缓冲存储器或工作存储器。例如,易失性存储装置114可以用静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)来实现。在一些实施例中,加载到易失性存储装置114的间接访问模块111和模块管理器112可以处理从主机设备11接收的访问目标数据的请求。ROM 115可以用作只读存储器,其存储存储控制器110的操作所需的信息。
ECC引擎116可以检测和纠正从非易失性存储装置120读取的数据的错误。例如,ECC引擎116可以具有给定级别的纠错能力。ECC引擎116可以纠正不超过纠错能力的数据的错误,并且可以将具有超过纠错能力的错误级别(例如,翻转比特的数目(number offlipped bits))的数据处理为不可纠正的错误。
存储控制器110可以通过主机接口电路117与主机设备11通信。主机接口电路117可以提供主机接口层(HIL)。在一些实施例中,主机接口电路117可以基于以下各种接口中的至少一种来实现:例如,串行ATA(SATA)接口、外围组件互连快速(PCIe)接口、串行连接SCSI(SAS)、非易失性内存快速(NVMe)接口和通用闪存(UFS)接口。
存储控制器110可以通过非易失性存储器接口电路118与非易失性存储装置120通信。在一些实施例中,非易失性存储器接口电路118可以基于NAND接口来实现。
图3是根据本公开的一些实施例的、详细示出图1的非易失性存储装置的框图。参考图1和图3,非易失性存储装置120可以与存储控制器110通信。例如,非易失性存储装置120可以从存储控制器110接收地址ADD和命令CMD。非易失性存储装置120可以与存储控制器110交换数据。
非易失性存储装置120可以包括控制逻辑121、电压发生器122、行译码器123、存储单元阵列124、页面缓冲器单元125、列译码器126和输入/输出(I/O)电路127。图1的元数据块和数据块可以包括在存储单元阵列124中。
控制逻辑121可以从存储控制器110接收命令CMD和地址ADD。命令CMD可以是指示将要由非易失性存储装置120执行的操作(例如读取操作、写入操作或擦除操作)的信号。地址ADD可以包括行地址ADDR和列地址ADDC。控制逻辑121可以基于地址ADD产生行地址ADDR和列地址ADDC。
在控制逻辑121的控制下,电压发生器122可以生成通过行译码器123施加到存储单元阵列124的电压。
行译码器123可以从控制逻辑121接收行地址ADDR。行译码器123可以通过串选择线SSL、字线WL和接地选择线GSL与存储单元阵列124连接。行译码器123可以对行地址ADDR进行译码,并且可以基于译码结果和从电压发生器122接收的(一个或更多个)电压来控制要施加到串选择线SSL、字线WL和接地选择线GSL的电压。
存储单元阵列124可以包括多个存储单元。每个存储单元可以具有对应于数据的阈值电压电平。存储单元可以沿行方向和列方向排列。一些存储单元可以对应于图1的元数据块和数据块。其他存储单元可以存储对应于图1中由软件实现的间接访问模块111和模块管理器112的指令。在一些实施例中,元数据块和存储块可以对应于非易失性存储装置120的物理擦除单元,但本公开不限于此。例如,物理擦除单元可以改变为页单元、字线单元、子块单元等。
页面缓冲器单元125可以包括多个页面缓冲器PB。页面缓冲器单元125可以通过位线BL与存储单元阵列124连接。页面缓冲器单元125可以通过感测位线BL的电压以页为单位从存储单元阵列124读取数据。
列译码器126可以从控制逻辑121接收列地址ADDC。列译码器126可以对列地址ADDC进行译码,并且可以基于译码结果将由页面缓冲器单元125读取的数据提供给I/O电路127。
列译码器126可以通过数据线DL从I/O电路127接收数据。列译码器126可以从控制逻辑121接收列地址ADDC。列译码器126可以对列地址ADDC进行译码,并且可以基于译码结果将从I/O电路127接收的数据提供给页面缓冲器单元125。页面缓冲器单元125可以以页为单位通过位线BL将从I/O电路127提供的数据存储在存储单元阵列124中。
I/O电路127可以通过数据线DL与列译码器126连接。I/O电路127可以通过数据线DL将从存储控制器110接收的数据提供给列译码器126。I/O电路127可以将通过数据线DL接收的数据输出到存储控制器110。
图4是描述相关技术的存储系统的数据处理方法的图。参考图4,存储系统可以包括主机设备和存储设备。主机设备可以包括文件系统。文件系统管理与应用对应的文件。存储设备可以包括第一至第N元数据块MBK1、MBK2、……、MBKN。第一元数据块MBK1至第N元数据块MBKN中的每一个元数据块可以包括第一元数据MD1至第i元数据MDi。存储设备可以包括第一至第M数据块DBK1、DBK2、……、DBKM。第一数据块DBK1至第M数据块DBKM中的每一个数据块可以包括第一数据DT1至第j数据DTj。这里,N、M、i和j可以是任意自然数。
下面将描述相关技术的存储系统处理目标数据的方法。
在第一操作①中,主机设备的文件系统可以请求对目标数据的第一访问。第一访问可以是对目标数据的间接访问,或是对与目标数据对应的元数据的直接访问。目标数据可以是文件系统需要的最终数据。主机设备可以发出命令,使得对目标数据的第一访问的请求被提供给存储设备。例如,目标数据可以是第一数据块DBK1的第一数据DT1(为了更好地理解本公开,在图4中,“TG”与目标数据和对应于目标数据的元数据并排写入)。
在第二操作②中,存储设备可以基于第一操作①中的第一访问的请求来读取第一元数据块MBKl的第一元数据MDl。第一元数据块MBK1的第一元数据MD1可以是与目标数据相关联的元数据。存储设备可以将第一元数据块MBK1的第一元数据MD1提供给主机设备。
在第三操作③中,主机设备的文件系统可以基于通过第二操作②接收的元数据来计算目标数据的地址。也就是说,主机设备的处理器可以处理元数据并且可以获得与元数据对应的地址。例如,文件系统可以基于第一元数据块MBK1的第一元数据MD1来计算第一数据DT1在第一数据块DBK1中的地址。
在第四操作④中,主机设备的文件系统可以基于在第三操作③中计算出的地址来请求对目标数据的第二访问。例如,第二访问可以是对目标数据的直接访问。文件系统可以基于从第一元数据MD1计算出的地址来访问第一数据块DBK1。
在第五操作⑤中,作为对与第四操作④对应的第二访问的请求的响应,存储设备可以向主机设备提供目标数据。例如,存储设备可以从主机设备接收包括计算出的地址的第二访问请求。作为对请求的响应,存储设备可以将第一数据块DBK1的第一数据DT1返回给主机设备。
如上所述,在相关技术的存储系统中,处理元数据的操作(即,从元数据计算出地址的操作)可以由主机设备执行。与请求目标数据或接收目标数据无关,相关技术的存储系统可以执行传送元数据的第二操作②和基于计算出的地址进行访问的第四操作④。元数据处理操作可能导致主机设备和存储设备之间的I/O负载增加。将参考图5描述减少I/O负载的方式。
图5是示出根据本公开的实施例的数据处理方法的图。参考图5,存储系统10可以包括主机设备11和存储设备100。存储系统10、主机设备11和存储设备100可以分别对应于图1的存储系统10、主机设备11和存储设备100。
主机设备11可以包括文件系统。文件系统管理与应用对应的文件。存储设备100可以包括第一元数据块MBK1至第N元数据块MBKN。第一元数据块MBK1至第N元数据块MBKN中的每一个元数据块可以包括第一元数据MD1至第i元数据MDi。存储设备100可以包括第一数据块DBK1至第M数据块DBKM。第一数据块DBK1至第M数据块DBKM中的每一个数据块可以包括第一数据DT1至第j数据DTj。这里,N、M、i和j可以是任意自然数。
存储设备100可以包括间接访问模块111。间接访问模块111可以辅助主机设备11的文件系统的操作。间接访问模块111可以对应于图1和图2的间接访问模块111。
下面,将描述根据本公开的一些实施例的存储系统10处理目标数据的方法。
在第一操作①中,主机设备11的文件系统可以请求访问目标数据。对目标数据的访问可以包括对目标数据的直接访问和对目标数据的间接访问。例如,直接访问可以指访问存储了目标数据的数据块的操作,而间接访问可以指访问存储了指示目标地址的元数据的元数据块的操作。目标数据可以是文件系统需要的最终数据。
主机设备11可以发出命令,使得访问目标数据的请求被提供给存储设备100。例如,目标数据可以是第一数据块DBK1的第一数据DT1(为了更好地理解本公开,在图5中,“TG”与目标数据和对应于目标数据的元数据并排写入)。
在第二操作②中,存储设备100的间接访问模块111可以基于通过第一操作①接收的请求的访问参数来访问元数据块。访问参数可以指示从主机设备11接收的并且对于检索目标数据或与目标数据对应的元数据来说是必要的信息。例如,访问参数可以包括目标数据的标识符、间接层信息、返回信息等。
例如,间接访问模块111可以基于请求的访问参数来访问第一元数据块MBK1的第一元数据MD1。第一元数据MD1可以是与目标数据相关联的元数据。
在第三操作③中,存储设备100的间接访问模块111可以基于访问参数和元数据来计算目标数据的地址。例如,间接访问模块111可以通过第二操作②来访问第一元数据块MBK1的第一元数据MD1。间接访问模块111可以基于访问参数和第一元数据MD1来计算第一数据DT1在第一数据块DBK1中的地址。
在第四操作④中,间接访问模块111可以基于访问参数和在第三操作③中计算出的地址来访问具有目标数据的数据块。例如,间接访问模块111可以基于从第一元数据块MBK1的第一元数据MD1计算出的地址来访问第一数据块DBK1的第一数据DT1。
在第五操作⑤中,间接访问模块111可以获取位于在第三操作③中计算出的地址处的目标数据。例如,间接访问模块111可以基于计算出的地址来获取通过第四操作④访问的第一数据块DBK1的第一数据DT1。
在一些实施例中,基于访问参数中包括的返回类型,间接访问模块111可以获取目标数据,或者可以获取包括目标数据的数据块。
在第六操作⑥中,间接访问模块111可以向主机设备11提供通过第五操作⑤获取的目标数据。例如,间接访问模块111可以向主机设备11的文件系统提供如此获取的第一数据DT1。作为对第一操作①中的请求的响应,通过第六操作⑥提供的目标数据可以被提供给主机设备11。
在一些实施例中,基于访问参数中包括的返回类型,间接访问模块111可以返回目标数据,或者可以返回包括目标数据的数据块。间接访问模块111可以基于访问参数中包括的返回类型来确定是否返回元数据,当确定出返回元数据时,间接访问模块111可以确定是返回元数据还是返回包括元数据的数据块。
如上所述,根据本公开的实施例,存储设备100的间接访问模块111可以处理元数据。在没有主机设备11的干预下,存储设备100可以获取元数据,可以从元数据中获取地址,并且可以访问与该地址对应的数据块。与图4的相关技术的存储系统不同,由于元数据处理导致的主机设备和存储设备之间的I/O负载降低了,所以可以提供数据块访问速度提高了的存储系统10。
图6是描述根据本公开的一些实施例的数据处理方法的图。将参考图6描述根据本公开的一些实施例的存储系统处理元数据的方法。
根据本公开的一些实施例,存储系统可以支持Linux操作系统。例如,主机设备11可以支持Linux操作系统的文件系统。存储设备100可以根据Linux操作系统的文件系统来管理索引节点。可以为每个文件生成索引节点,并且索引节点可以包括分别用于访问多个数据的指针。
主机设备11可以向存储设备100提供访问目标数据的请求。存储设备100可以基于对目标数据的访问请求向主机设备11提供目标数据。
存储设备100可以包括数据层、第一间接层、第二间接层、第三间接层和第四间接层。数据层可以包括至少一个数据块。第一间接层至第四间接层中的每一个间接层可以包括至少一个元数据块。
第一间接层至第四间接层中的每一个间接层在其相对靠近主机设备11时可以被称为高层并且在其相对靠近数据层时可以被称为低层。例如,第一间接层至第四间接层中的第一间接层可以被称为“最低间接层”。第二间接层与第三间接层相比可以是较低的层,但与第一间接层相比可以是较高的层。第三间接层与第四间接层相比可以是较低的层,但与第二间接层相比可以是较高的层。第一间接层至第四间接层中的第四间接层可以被称为“最高间接层”。
当从主机设备11接收到访问目标数据的请求时,存储设备100可以访问索引节点块INB。存储设备100可以基于索引节点块INB的指针访问另一个指针或数据,并且可以将最终目标数据返回给主机设备11。
索引节点块INB可以是包括在第四间接层中的元数据块。索引节点块INB可以包括直接指针块DPBi、间接指针块IPBi、双重间接指针块DIPBi和三重间接指针块TIPBi。
直接指针块DPBi可以包括多个直接指针。直接指针可以指元数据中包括的各种信息之一。直接指针可以用于直接访问数据层,而无需单独通过任何其他元数据块。
例如,直接指针块DPBi的直接指针可以指向数据层中的第一数据块DBK1的数据DT。为避免附图复杂,在图6中仅示出了一个直接指针的对应关系,但是直接指针块DPBi的指针可以指向数据层中的任何其他数据。
间接指针块IPBi可以包括多个间接指针。下面,为了更好地理解,间接指针旨在指单个间接指针。间接指针可以指元数据中包括的各种信息之一。间接指针可以用于通过第一间接层来访问数据层。
例如,间接指针块IPBi的间接指针可以指向第一间接层的第一直接指针块DPB1的直接指针。第一直接指针块DPB1的直接指针可以指向数据层中的第二数据块DBK2的数据DT。
双重间接指针块DIPBi可以包括多个双重间接指针。双重间接指针可以指元数据中包括的各种信息之一。双重间接指针可以用于依次通过第二间接层和第一间接层来访问数据层。
例如,双重间接指针块DIPBi的双重间接指针可以指向第二间接层的第一间接指针块IPB1的间接指针。第一间接指针块IPB1的间接指针可以指向第一间接层的第二直接指针块DPB2的直接指针。第二直接指针块DPB2的直接指针可以指向数据层中的第三数据块DBK3的数据DT。
三重间接指针块TIPBi可以包括多个三重间接指针。三重间接指针可以指元数据中包括的各种信息之一。三重间接指针可以用于依次通过第三间接层、第二间接层和第一间接层来访问数据层。
例如,三重间接指针块TIPBi的三重间接指针可以指向第三间接层的双重间接指针块DIPB的双重间接指针。双重间接指针块DIPB的双重间接指针可以指向第二间接层的第二间接指针块IPB2的间接指针。第二间接指针块IPB2的间接指针可以指向第一间接层的第三直接指针块DPB3的直接指针。第三直接指针块DPB3的直接指针可以指向数据层中的第四数据块DBK4的数据DT。
在一些实施例中,根据主机设备11的请求,存储设备100可以将目标数据连同与目标数据对应的指针一起返回。例如,来自主机设备11的请求可以包括访问参数。访问参数可以包括返回信息。当作为访问数据层的结果返回目标数据时,基于返回信息,存储设备100可以仅返回目标数据或者可以将目标数据连同与目标数据对应的部分或全部指针一起返回。例如,在返回信息请求返回所有指针并且目标数据由索引节点块INB的三重间接指针指示的情况下,存储设备100可以将目标数据连同与目标数据对应的三重间接指针、双重间接指针、间接指针和直接指针一起返回给主机设备11。
或者,基于访问参数的返回信息,存储设备100可以向主机设备11返回1)包括三重间接指针的三重间接指针块、2)包括双重间接指针的双重间接指针块、3)包括间接指针的间接指针块、4)包括直接指针的直接指针块以及5)包括目标数据的数据块。
在一些实施例中,存储设备100可以接收对与低于索引节点块INB的层的层对应的访问的请求。例如,基于加载到主机设备11的主存储器或高速缓冲存储器的信息,作为请求的访问参数的一部分,主机设备11可以向存储设备100提供与第一间接层的指针对应的地址,而不是与索引节点块INB的指针对应的地址。在这种情况下,存储设备100可以基于作为访问参数的一部分从主机设备11接收的地址来从第一间接层开始指针处理,而不是从索引节点块INB顺序地执行指针处理。
在一些实施例中,随着间接层的数目增加,存储容量可以增加,但是数据访问可能被延迟。例如,在索引节点块INB仅使用直接指针的情况下,索引节点块INB可以管理大小为4KB的文件。在索引节点块INB使用间接指针的情况下,索引节点块INB可以管理大小为2MB的文件。在索引节点块INB使用双重间接指针的情况下,索引节点块INB可以管理大小为1GB的文件。在索引节点块INB使用三重间接指针的情况下,索引节点块INB可以管理大小为512GB的文件。然而,随着间接指针的级别变得更高,获得目标数据所需的块访问的次数可能会增加。这可能意味着数据处理被延迟。间接指针的级别高可能意味着要顺序处理以获得目标数据的指针的数目很多。
在主机设备从指针计算下一个块(例如,指针块或数据块)的数据的地址的相关技术的存储系统(例如,图4的存储系统)的情况下,随着指针的级别变得更高,主机设备和存储设备之间的输入/输出的次数可能会增加。
相比之下,根据本公开的实施例,因为存储设备100自动从指针计算下一个块的地址而无需主机设备11的干预,所以即使使用了高级别的间接指针,I/O负载也可能不会增加。也就是说,根据本公开的实施例的存储设备100可以管理大量数据同时最小化数据处理的延迟。
存储设备100处理指针的操作可以由存储设备100中的间接访问模块来执行。例如,存储设备100可以包括与索引节点块INB对应的间接访问模块。间接访问模块可以与Linux操作系统兼容。间接访问模块可以支持从索引节点块INB开始的文件系统的指针处理操作。从主机设备11接收的请求的访问参数可以用于处理索引节点块INB的直接指针、间接指针、双重间接指针和三重间接指针中的至少一种。例如,从主机接收的访问参数可以包括要被处理的指针的地址,以及该指针所被包括的层的信息。
图7是描述根据本公开的一些实施例的数据处理方法的图。参考图7将描述根据本公开的一些实施例的存储系统处理元数据的方法。
根据本公开的一些实施例,存储系统可以支持RocksDB。例如,主机设备11可以提供与RocksDB的文件存储格式兼容的访问请求。存储设备100可以将键值存储在RocksDB的文件存储格式的序列化证书存储(SST)文件结构中。
主机设备11可以向存储设备100提供访问目标数据的请求。存储设备100可以基于请求的访问参数向主机设备11提供目标数据。例如,目标数据可以是第一数据块DBK1的数据DT(为了更好地理解本公开,在图7中,“TG”与目标数据并排写入)。
存储设备100可以包括SST文件。SST文件可以包括页脚、索引块、元索引块、第一元数据块MBK1至第N元数据块MBKN、以及第一数据块DBK1至第M数据块DBKM。这里,N和M可以是任意自然数。
页脚可以包括元索引处理程序(handler)和索引处理程序。元索引处理程序可以指示元数据的位置。索引处理程序可以指示数据块处理程序的位置。
索引块可以包括多个数据块处理程序。数据块处理程序可以指示目标数据的位置。例如,数据块处理程序可以指示来自第一数据块DBK1至第M数据块DBKM当中的包括目标数据的数据块,或者可以指示目标数据在相应数据块中的位置。
元索引块可以包括多个元数据块处理程序。元数据块处理程序可以指示元数据块的位置或者元数据在元数据块中的位置。例如,元数据块处理程序可以指示处理来自第一元数据块MBK1至第N元数据块MBKN当中的目标数据所需的元数据块的位置,或者可以指示元数据在元数据块中的位置。
第一数据块DBKl至第M数据块DBKM中的每一个数据块可以包括多个数据。数据可以对应于由主机设备11管理的SST文件的一部分。
第一元数据块MBK1至第N元数据块MBKN中的每一个元数据块可以包括多个元数据。例如,元数据可以包括指示是否存在与目标数据对应的键值的布隆过滤器(Bloomfilter)、用于估计表大小和记录数的统计信息、用于压缩或解压缩数据块的字典、用于删除给定范围的键值的范围删除等。布隆过滤器是一种节省空间的概率数据结构,用于测试元素是否是集合的成员。
下面,将描述根据本公开的一些实施例的存储系统处理目标数据的方法。存储系统可以包括主机设备11和存储设备100。主机设备11可以向存储设备100提供访问目标数据的请求。
在第一操作①中,存储设备100可以基于请求来访问页脚。请求可以包括访问参数。存储设备100可以基于访问参数来引用页脚的索引处理程序,并且可以访问索引块。存储设备100可以基于访问参数和所访问的索引块中的数据块处理程序来检查包括数据DT的数据块的位置。
在第二操作②中,存储设备100可以基于访问参数来引用页脚的元索引处理程序,并且可以访问元索引块。
在第三操作③中,存储设备100可以读取通过第二操作②访问的元索引块中的元数据块处理程序,并且可以基于访问参数和元数据块处理程序来访问元数据块。存储设备100可以处理所访问的元数据块中的元数据。例如,存储设备100可以参考元索引块中的元索引块处理程序来访问第一元数据块MBK1。存储设备100可以基于第一元数据块MBK1的布隆过滤器信息来确定存在与目标数据对应的键值。
在第四操作④中,存储设备100可以访问数据块。例如,存储设备100可以基于访问参数中包括的目标数据标识符(例如,与目标数据对应的记录键)、在第一操作①中获得的数据DT的位置以及在第三操作③中处理的元数据来访问第一数据块DBK1的数据DT。之后,存储设备100可以将通过第四操作④获得的数据DT或包括数据DT的第一数据块DBK1提供给主机设备11。
存储设备100处理索引处理程序、元索引处理程序、数据块处理程序和元数据块处理程序所必需的操作可以由存储设备100中的间接访问模块来执行。间接访问模块可以与RocksDB兼容。从主机设备11接收的请求的访问参数可以用于处理元索引处理程序以及页脚的索引处理程序。
图8是根据本公开的一些实施例的存储设备的框图。图8中示出了存储设备100的框图。存储设备100可以对应于图1、图5、图6和图7的存储设备100。
存储设备100可以与主机设备11通信。存储设备100可以从主机设备11接收访问目标数据的请求。在根据对目标数据的访问请求执行元数据相关操作之后,存储设备100可以向主机设备11提供目标数据。
存储设备100可以包括第一间接访问模块111-1至第N间接访问模块111-N、模块管理器112、主机接口电路117和非易失性存储装置120。这里,“N”是任意自然数。
主机接口电路117可以提供主机设备11和存储设备100之间的接口。例如,主机接口电路117可以与主机设备11通信。主机接口电路117可以向模块管理器112或者相应的间接访问模块提供从主机设备11接收的对目标数据的访问请求。主机接口电路117可以向主机设备11提供从相应的间接访问模块接收的目标数据。
非易失性存储装置120可以包括第一数据集DS1至第N数据集DSN。第一数据集DS1至第N数据集DSN中的每一个数据集可以包括多个数据块DBK和多个元数据块MBK。第一数据集DS1至第N数据集DSN中的每一个数据集可以对应于由主机设备11管理的文件或软件程序,但本公开不限于此。
在一些实施例中,第一间接访问模块111-1至第N间接访问模块111-N可以分别管理第一数据集DS1至第N数据集DSN。例如,主机设备11的操作系统可以执行第一应用和第二应用。第一数据集DS1可以对应于第一应用,而第二数据集DS2可以对应于第二应用。第一间接访问模块111-1可以管理与第一应用相关联的第一数据集DS1(例如,可以管理对包括在第一数据集DS1中的数据的访问)。第二间接访问模块111-2可以管理与第二应用相关联的第二数据集DS2(例如,可以管理对包括在第二数据集DS2中的数据的访问)。
详细地,在目标数据被包括在第一数据集DSl的数据块DBK中的情况下,基于从主机设备11接收的访问请求,第一间接访问模块111-1可以执行元数据处理操作,可以获取数据块DBK的目标数据,并且可以将获取的目标数据提供给主机设备11。在这种情况下,第二间接访问模块111-2至第N间接访问模块111-N可以不执行上述与目标数据相关联的操作。也就是说,存储设备100可以包括单独管理程序或文件的间接访问模块。
图9是描述根据本公开的一些实施例的操作存储设备的方法的流程图。将参考图9描述根据本公开的一些实施例的操作存储设备的方法。存储设备可以与主机设备通信。存储设备可以对应于图1、图5、图6、图7和图8的存储设备100。
在操作S110中,存储设备可以从主机设备接收访问目标数据的请求。对目标数据的访问可以包括对目标数据的直接访问和对目标数据对应的元数据的间接访问。目标数据可以是存储在存储设备的数据块中的数据。
在操作S120中,存储设备可以基于在操作S110中接收的请求来执行间接访问模块。例如,存储设备可以包括处理器、易失性存储装置和非易失性存储装置。当处理器执行存储在非易失性存储装置中的指令时,间接访问模块可以被执行。
在操作S130中,存储设备的间接访问模块可以基于请求的访问参数来确定指示目标数据的位置的目标地址。例如,从主机设备接收的请求可以包括访问参数。访问参数可以包括检索目标数据或与目标数据对应的元数据所必需的信息。例如,访问参数可以包括目标数据的标识符、间接层信息、返回信息等。
存储设备可以基于请求中包括的访问参数来获取元数据块中的元数据。存储设备可以基于获取的元数据来确定指示目标数据的位置的目标地址。在这种情况下,因为存储设备自动地基于元数据来确定目标地址,而无需主机设备的干预,所以可能不会造成主机设备与存储设备之间的I/O负载。
在操作S140中,存储设备的间接访问模块可以基于目标地址来访问数据块。所访问的数据块可以包括在操作S110中请求的目标数据。在这种情况下,存储设备可以基于在操作S130中确定的地址来访问包括目标数据的数据块,而无需主机设备的干预。
在操作S150中,存储设备的间接访问模块可以向主机设备提供所访问的数据块中的目标数据。也就是说,主机设备可以基于在操作S110中提供请求和在操作S150中接收目标数据的I/O操作来获得目标数据。
在一些实施例中,基于访问参数中包括的返回信息,间接访问模块可以确定是返回目标数据还是返回包括目标数据的数据块。间接访问模块可以基于返回信息向主机设备提供在操作S140中访问的数据块或数据块中的目标数据。
图10是描述根据本公开的一些实施例的操作存储设备的方法的流程图。将参考图10描述根据本公开的一些实施例的操作存储设备的方法。存储设备可以与主机设备通信。存储设备可以对应于图1、图5、图6、图7和图8的存储设备100。操作S210类似于图9的操作S110,因此将省略额外的描述以避免冗余。
在操作S220中,存储设备可以确定非易失性存储装置中是否存在间接访问模块。例如,存储设备可以包括非易失性存储装置和处理器。当处理器执行存储在非易失性存储装置中的指令时,间接访问模块可以被实现或被执行。然而,当非易失性存储装置中不存在间接存取模块时,可能还需要下载间接存取模块的操作。
当在操作S220中确定出非易失性存储装置中不存在间接访问模块时,存储设备可以执行操作S221。当在操作S220中确定出非易失性存储装置中存在间接访问模块时,存储设备可以执行操作S222。
在操作S221中,存储设备可以下载间接访问模块。例如,存储设备可以从主机设备下载间接访问模块。间接访问模块可以以指令的形式存储在存储设备的非易失性存储装置中。
在操作S222中,存储设备可以确定是否加载了间接访问模块。例如,存储设备可以包括非易失性存储装置、易失性存储装置和处理器。操作S222可以确定间接访问模块是否被加载在易失性存储装置中。
非易失性存储装置可以包括对应于间接访问模块的指令。指令可以是预先存储的指令,也可以是通过操作S221下载的指令。随着处理器执行存储在非易失性存储装置中的指令,间接访问模块可以被加载到易失性存储装置。加载到易失性存储装置的间接访问模块可以处理从主机设备接收的请求。也就是说,非易失性存储装置可以用作固件存储器,而易失性存储装置可以用作主存储器。
当在操作S222中确定出没有加载间接访问模块时,存储设备可以执行操作S223。操作S223可以包括将间接访问模块加载到易失性存储装置中。在操作S223的一些实施例中,最近加载的间接访问模块可以而后被使用。
当在操作S222中确定出加载了间接访问模块时,存储设备可以执行操作S224。
在操作S223中,存储设备可以将间接访问模块加载到易失性存储装置。
在操作S224中,存储设备可以使用预加载的间接访问模块。也就是说,因为间接访问模块已经加载到易失性存储装置,所以可以使用已加载的(即,预加载的)间接访问模块而无需再次加载间接访问模块。
图11是描述根据本公开的一些实施例的操作存储设备的方法的流程图。将参考图11描述根据本公开的一些实施例的操作存储设备的方法。存储设备可以与主机设备通信。存储设备可以对应于图1、图5、图6、图7和图8的存储设备100。操作S320类似于图9的操作S120,因此将省略额外的描述以避免冗余。存储设备可以包括间接访问模块。
在操作S310中,存储设备可以从主机设备接收访问目标数据的请求。例如,访问请求可以包括访问参数。访问参数可以包括间接层信息。间接层信息可以指向存在有用于访问目标数据的元数据的第一间接层。
在这种情况下,第一间接层可以仅指存储设备支持的多个间接层中的一个间接层,并且本公开不限于此。例如,第一间接层可以指最高间接层或最低间接层。然而,第一间接层不限于最高间接层或最低间接层。
在一些实施例中,存储设备可以从多个间接层当中不是最高间接层的任何其他间接层开始元数据相关的操作(或元数据处理操作)。例如,在操作S310中提到的第一间接层可以不是存储设备支持的多个间接层中的最高间接层。也就是说,主机设备可以基于高速缓存的元数据从中间间接层请求目标数据。
在操作S330中,存储设备的间接访问模块可以基于在操作S310中接收的访问参数的间接层信息从第一间接层获取第一元数据。第一元数据可以指向包括在第二间接层中的第二元数据的位置或者包括在第二间接层中的第三元数据的位置。第二间接层可以是低于第一间接层的层。例如,第二间接层可以更靠近低于第一间接层的数据层。数据层可以包括在操作S310中请求的目标数据。
在操作S331中,存储设备的间接访问模块可以确定第一元数据指向的第二间接层是否是最低间接层。最低间接层可以指直接映射到数据层的层。例如,最低间接层中的元数据可以指示数据层中的数据的地址。
当在操作S331中确定出第二间接层是最低间接层时,存储设备可以执行操作S332。当在操作S331中确定出第二间接层不是最低间接层时,存储设备可以执行操作S333。
在操作S332中,存储设备的间接访问模块可以基于第一元数据从第二间接层获取第二元数据。存储设备的间接访问模块可以基于第二元数据确定目标地址。例如,第二间接层可以是最低间接层。存储设备的间接访问模块可以基于作为最低间接层的第二间接层中的第二元数据来确定目标数据的目标地址。
在操作S333中,存储设备的间接访问模块可以基于第一元数据从第二间接层获取第三元数据。存储设备的间接访问模块可以基于第三元数据访问第三间接层。第三间接层可以是低于第二间接层的层。例如,第三间接层可以更靠近低于第二间接层的数据层。
在一些实施例中,存储设备可以接收包括指示最低间接层的间接层信息的访问参数。例如,在操作S330中,第一间接层可以是最低间接层。第一元数据可以直接指示目标数据的目标地址。在这种情况下,可以省略操作S331、操作S332和操作S333,存储设备的间接访问模块可以基于访问参数和第一元数据来获取数据层中的目标数据。
图12是描述根据本公开的一些实施例的操作存储设备的方法的流程图。将参考图12描述根据本公开的一些实施例的操作存储设备的方法。存储设备可以与主机设备通信。存储设备可以对应于图1、图5、图6、图7和图8的存储设备100。操作S420、操作S430和操作S440类似于图9的操作S120、操作S130和操作S140,因此将省略额外的描述以避免冗余。存储设备可以包括间接访问模块。
在操作S410中,存储设备可以从主机设备接收访问目标数据的请求。访问请求可以包括访问参数。访问参数可以包括返回信息。返回信息可以根据请求来限定要返回到主机设备11的数据的类型。
例如,返回类型可以限定是返回目标数据还是返回包括目标数据的数据块。或者,返回类型可以限定是否返回与目标数据对应的元数据。在返回元数据的情况下,返回类型可以限定是返回元数据还是返回包括元数据的元数据块。在使用多个元数据来获得目标数据的情况下,返回类型可以限定1)多个元数据当中要返回给主机设备的至少一个元数据,以及2)是返回要返回的该至少一个元数据还是返回与该至少一个元数据相关联的元数据块。
在操作S450中,存储设备的间接访问模块可以获取在操作S440中访问的数据块,或者可以获取数据块中的目标数据。目标数据可以包括在操作S410中请求的数据。
在操作S451中,存储设备的间接访问模块可以基于返回信息来返回目标数据。例如,基于返回信息,存储设备的间接访问模块可以向主机设备提供在操作S450中获取的数据块,或者所有元数据或一些元数据连同在操作S450中获取的目标数据。
图13是根据本公开的一些实施例的存储系统的框图。将参考图13描述根据本公开的一些实施例的存储系统。存储系统20可以对应于图1的存储系统10。存储系统20也可以称为“存储盒(storage box)”,其包括两个或更多个存储设备,例如存储设备100、存储设备200、存储设备300、……、存储设备N00。如图13所示,两个或更多个存储设备可以包括各自的存储控制器110、210、310、……、和N10以及各自的非易失性存储装置120、220、320、……、和N20。
存储系统20可以包括主机设备11、存储盒控制器21、PCIe交换机22和多个存储设备100至N00。主机设备11可以对应于图1的主机设备11。
存储盒控制器21可以与主机设备11通信。存储盒控制器21可以通过PCIe交换机22与多个存储设备100至N00通信。多个存储设备100至N00中的每一个存储设备可以存储数据。
在一些实施例中,存储盒控制器21可以包括至少一个间接访问模块和模块管理器。模块管理器可以管理至少一个间接访问模块。至少一个间接访问模块可以辅助处理与分别存储在多个存储设备100至N00中的多个数据相关联的元数据的操作。
也就是说,存储盒控制器21的操作可以类似于图1的存储控制器110的操作,并且多个存储设备100至N00中的每一个存储设备的操作可以类似于图1的非易失性存储装置120的操作。
根据本公开的实施例,提供了包括间接访问模块的存储设备、操作存储设备的方法以及操作包括存储设备的存储系统的方法。
此外,由于间接访问模块处理元数据并且提供对目标数据的访问,因此提供了减少了主机设备和存储设备之间的输入/输出负载并且提高了数据块访问速度的存储设备、操作该存储设备的方法、以及操作包括该存储设备的存储系统的方法。
尽管已经通过参考本公开的实施例描述了本公开,但是对于本领域的普通技术人员来说显而易见的是,在不背离如所附权利要求限定的本公开的精神和范围的情况下可以对本公开进行各种改变和修改。
Claims (20)
1.一种操作存储设备的方法,所述存储设备与主机设备通信,所述方法包括:
从所述主机设备接收访问目标数据的请求;
基于所述请求执行间接访问模块;
所述间接访问模块基于所述请求的访问参数确定指示所述目标数据的位置的目标地址;
所述间接访问模块基于所述目标地址访问数据块;和
所述间接访问模块向所述主机设备提供所访问的数据块或者所访问的数据块中的所述目标数据。
2.根据权利要求1所述的方法,其中,所述存储设备自动地从所述访问参数确定所述目标地址,而无需从所述主机设备接收所述目标地址。
3.根据权利要求1所述的方法,其中,所述存储设备包括处理器和非易失性存储装置,并且
其中,当所述处理器执行存储在所述非易失性存储装置中的指令时,所述间接访问模块与所述主机设备的操作系统通信。
4.根据权利要求1所述的方法,其中,所述存储设备包括非易失性存储装置,并且
其中,基于所述请求执行所述间接访问模块包括:
确定所述存储设备的所述非易失性存储装置中是否存在所述间接访问模块;
基于确定出不存在所述间接访问模块,从所述主机设备下载所述间接访问模块;和
执行所述间接访问模块。
5.根据权利要求1所述的方法,其中,所述存储设备包括易失性存储装置和存储有所述间接访问模块的非易失性存储装置,并且
其中,基于所述请求执行所述间接访问模块包括:
确定所述间接访问模块是否被加载到所述易失性存储装置;
基于确定出所述间接访问模块被加载,使用所加载的间接访问模块;和
基于确定出所述间接访问模块未被加载,将存储在所述非易失性存储装置中的所述间接访问模块加载到所述易失性存储装置。
6.根据权利要求1所述的方法,其中,所述间接访问模块基于所述请求的所述访问参数确定指示所述目标数据的位置的所述目标地址包括:
所述间接访问模块基于所述访问参数获取元数据块中的第一元数据;和
基于所述访问参数和由此获取的所述第一元数据确定所述目标地址。
7.根据权利要求1所述的方法,其中,所述请求的所述访问参数包括指示第一间接层的间接层信息,并且
其中,所述间接访问模块基于所述请求的所述访问参数确定指示所述目标数据的位置的所述目标地址包括:
所述间接访问模块基于所述访问参数从所述第一间接层获取第一元数据;
确定所述第一元数据指示的第二间接层是否为最低间接层;
基于确定出所述第二间接层是最低间接层,从所述第二间接层获取第二元数据;和
基于所述访问参数和已获取的所述第二元数据确定所述目标地址。
8.根据权利要求7所述的方法,其中,所述间接访问模块基于所述请求的所述访问参数确定指示所述目标数据的位置的所述目标地址还包括:
基于确定出所述第二间接层不是最低间接层,从所述第二间接层获取第三元数据;和
基于所述第三元数据访问第三间接层。
9.根据权利要求1所述的方法,其中,所述存储设备包括第一间接层、第二间接层和数据层,
其中,所述数据层包括所述目标数据,
其中,所述第一间接层和所述第二间接层分别包括第一元数据和第二元数据,
其中,所述第二间接层比所述第一间接层距离所述数据层更远,并且
其中,在生成访问所述目标数据的所述请求之前,所述主机设备基于所述第二元数据生成所述第一元数据,并且生成包括所述第一元数据和指示所述第一间接层的间接层信息的所述访问参数。
10.根据权利要求1所述的方法,其中,所述请求的所述访问参数包括返回信息,并且
其中,所述间接访问模块向所述主机设备提供所访问的数据块或者所访问的数据块中的所述目标数据包括:
所述间接访问模块基于所述返回信息确定是否返回与所述目标数据对应的元数据;
基于确定出返回所述元数据,所述间接访问模块基于所述返回信息确定是返回所述元数据还是返回包括所述元数据的元数据块,和
所述间接访问模块基于所述返回信息确定是返回所述目标数据还是返回包括所述目标数据的所访问的数据块。
11.根据权利要求1所述的方法,其中,所述间接访问模块与Linux操作系统兼容,并且
其中,所述请求的所述访问参数用于处理索引节点块的直接指针、间接指针、双重间接指针和三重间接指针中的至少一种。
12.根据权利要求1所述的方法,其中,所述间接访问模块与RocksDB兼容,并且
其中,所述请求的所述访问参数用于处理元索引处理程序以及页脚的索引处理程序。
13.一种操作存储系统的方法,所述存储系统包括主机设备和存储设备,所述方法包括:
所述主机设备提供访问目标数据的请求;
所述存储设备基于所述请求执行间接访问模块;
所述间接访问模块基于所述请求的访问参数确定指示所述目标数据的位置的目标地址;
所述间接访问模块基于所述目标地址访问数据块;和
所述间接访问模块向所述主机设备提供所访问的数据块或者所访问的数据块中的所述目标数据。
14.根据权利要求13所述的方法,其中,所述存储设备包括易失性存储装置和非易失性存储装置,并且
其中,所述存储设备基于所述请求执行所述间接访问模块包括:
确定所述存储设备的所述非易失性存储装置中是否存在所述间接访问模块;
基于确定出不存在所述间接访问模块,将所述间接访问模块从所述主机设备下载到所述非易失性存储装置;
基于确定出存在所述间接访问模块,确定所述间接访问模块是否被加载到所述易失性存储装置;
基于确定出所述间接访问模块被加载,使用所加载的间接访问模块;和
基于确定出所述间接访问模块未被加载,将存储在所述非易失性存储装置中的所述间接访问模块加载到所述易失性存储装置。
15.一种存储设备,包括:
非易失性存储装置,所述非易失性存储装置被配置为存储多个数据集;
第一间接访问模块,所述第一间接访问模块被配置为管理所述多个数据集中的第一数据集;
主机接口电路,所述主机接口电路被配置为与主机设备通信;和
模块管理器,所述模块管理器被配置为通过所述主机接口电路从所述主机设备接收对第一目标数据的第一访问的第一请求,以及基于所述第一请求执行所述第一间接访问模块,
其中,所述第一数据集包括具有所述第一目标数据的第一目标数据块和具有第一元数据的第一元数据块,并且
其中,所述第一间接访问模块被配置为在被所述模块管理器执行时,执行以下操作:
基于所述第一请求的第一访问参数以及所述第一元数据,确定指示所述第一目标数据的第一位置的第一目标地址;
基于所述第一目标地址访问所述第一目标数据块;和
向所述主机接口电路提供已访问的所述第一目标数据块或已访问的所述第一目标数据块中的所述第一目标数据。
16.根据权利要求15所述的存储设备,所述存储设备还包括:
第二间接访问模块,所述第二间接访问模块被配置为管理所述多个数据集中的第二数据集,
其中,所述模块管理器还被配置为:
通过所述主机接口电路从所述主机设备接收对第二目标数据的第二访问的第二请求;和
基于所述第二请求执行所述第二间接访问模块,
其中,所述第二数据集包括具有所述第二目标数据的第二目标数据块和具有第二元数据的第二元数据块,并且
其中,所述第二间接访问模块还被配置为在被所述模块管理器执行时,执行以下操作:
基于所述第二请求的第二访问参数以及所述第二元数据,确定指示所述第二目标数据的第二位置的第二目标地址;
基于所述第二目标地址访问所述第二目标数据块;和
向所述主机接口电路提供由此访问的所述第二目标数据块或者由此访问的所述第二目标数据块中的所述第二目标数据。
17.根据权利要求16所述的存储设备,其中,所述主机设备的操作系统执行第一应用和第二应用,并且
其中,所述第一数据集对应于所述第一应用,并且所述第二数据集对应于所述第二应用。
18.根据权利要求15所述的存储设备,其中,所述第一数据集包括第一间接层、第二间接层、第三间接层、第四间接层和数据层,
其中,所述第四间接层包括所述第一元数据块,
其中,所述数据层包括所述第一目标数据块,
其中,所述第一元数据对应于三重间接指针,并且
其中,所述第一间接访问模块还被配置为在被所述模块管理器执行时,执行以下操作:
基于所述第一请求的所述第一访问参数和所述三重间接指针访问所述第三间接层;
基于所述第三间接层的双重间接指针访问所述第二间接层;
基于所述第二间接层的间接指针访问所述第一间接层;和
基于所述第一间接层的直接指针确定所述第一目标地址。
19.根据权利要求15所述的存储设备,其中,所述模块管理器还被配置为:
基于所述非易失性存储装置中不存在所述第一间接访问模块,通过所述主机接口电路从所述主机设备下载所述第一间接访问模块;
基于所述非易失性存储装置中存在所述第一间接访问模块,确定所述第一间接访问模块是否被加载到所述存储设备的易失性存储装置;
基于确定出所述第一间接访问模块被加载,使用所述第一间接访问模块;和
基于确定出所述第一间接访问模块未被加载,将存储在所述非易失性存储装置中的所述第一间接访问模块加载到所述易失性存储装置。
20.根据权利要求15所述的存储设备,其中,所述第一请求的所述第一访问参数包括返回信息,并且
其中,所述第一间接访问模块还被配置为在被所述模块管理器执行时,执行以下操作:
基于所述返回信息确定是否返回所述第一元数据;
基于确定出返回所述第一元数据,基于所述返回信息确定是返回所述第一元数据块还是返回所述第一元数据;和
基于所述返回信息确定是返回所述第一目标数据块还是返回所述第一目标数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0191465 | 2021-12-29 | ||
KR1020210191465A KR20230101394A (ko) | 2021-12-29 | 2021-12-29 | 간접 액세스 모듈을 포함하는 스토리지 장치, 이의 동작하는 방법, 및 이를 포함하는 스토리지 시스템의 동작하는 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116414724A true CN116414724A (zh) | 2023-07-11 |
Family
ID=86897699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211274828.7A Pending CN116414724A (zh) | 2021-12-29 | 2022-10-18 | 存储设备、操作存储设备的方法和操作存储系统的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230205440A1 (zh) |
KR (1) | KR20230101394A (zh) |
CN (1) | CN116414724A (zh) |
-
2021
- 2021-12-29 KR KR1020210191465A patent/KR20230101394A/ko unknown
-
2022
- 2022-09-06 US US17/903,604 patent/US20230205440A1/en active Pending
- 2022-10-18 CN CN202211274828.7A patent/CN116414724A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230205440A1 (en) | 2023-06-29 |
KR20230101394A (ko) | 2023-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110858129B (zh) | 数据存储装置及其操作方法 | |
CN106354615B (zh) | 固态硬盘日志生成方法及其装置 | |
US11487630B2 (en) | Storage device and data processing method thereof | |
KR20200033985A (ko) | 논리적/물리적 매핑 | |
KR20190057887A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR102567224B1 (ko) | 데이터 저장 장치 및 이를 포함하는 컴퓨팅 시스템 | |
KR102507140B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US10754555B2 (en) | Low overhead mapping for highly sequential data | |
US10719263B2 (en) | Method of handling page fault in nonvolatile main memory system | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
CN111625188A (zh) | 一种存储器及其数据写入方法与存储系统 | |
CN112463647A (zh) | 使用散列来减小前向映射表的大小 | |
US11520694B2 (en) | Data storage device and operating method thereof | |
KR20200137244A (ko) | 메모리 시스템 및 그것의 동작방법 | |
US11113202B2 (en) | Operating method forcing the second operation to fail using a scatter-gather buffer and memory system thereof | |
CN112988615A (zh) | 键值存储设备和操作方法 | |
KR20200057866A (ko) | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법 | |
US10942678B2 (en) | Method of accessing data in storage device, method of managing data in storage device and storage device performing the same | |
US20220326873A1 (en) | Memory system and method of operating the same | |
KR20210012641A (ko) | 메모리 시스템, 데이터 시스템 및 그 동작방법 | |
CN113590503A (zh) | 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统 | |
CN113590502A (zh) | 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统 | |
US11144380B2 (en) | Memory controller and storage device including the same | |
US11709781B2 (en) | Method of managing data in storage device based on variable size mapping, method of operating storage device using the same and storage device performing the same | |
KR20210038096A (ko) | 메모리 시스템, 데이터 시스템 및 그 동작방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |