CN117632781A - 用于共享存储器快照的系统、非暂时性计算机可读存储媒体和方法 - Google Patents
用于共享存储器快照的系统、非暂时性计算机可读存储媒体和方法 Download PDFInfo
- Publication number
- CN117632781A CN117632781A CN202311073613.3A CN202311073613A CN117632781A CN 117632781 A CN117632781 A CN 117632781A CN 202311073613 A CN202311073613 A CN 202311073613A CN 117632781 A CN117632781 A CN 117632781A
- Authority
- CN
- China
- Prior art keywords
- data object
- memory device
- host application
- snapshot
- memory
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 211
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000012545 processing Methods 0.000 claims abstract description 94
- 230000008859 change Effects 0.000 claims abstract description 80
- 230000004044 response Effects 0.000 claims abstract description 38
- 238000013507 mapping Methods 0.000 claims abstract description 21
- 230000008569 process Effects 0.000 description 35
- 238000012986 modification Methods 0.000 description 28
- 230000004048 modification Effects 0.000 description 28
- 238000007726 management method Methods 0.000 description 18
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 230000002085 persistent effect Effects 0.000 description 8
- 238000013459 approach Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 239000004744 fabric Substances 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- 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
-
- 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
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
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)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种用于共享存储器快照的系统、非暂时性计算机可读存储媒体和方法。一种系统可包含:存储器装置,以及处理装置,其以操作方式与所述存储器装置耦合以执行包含以下各项的操作:从第一主机应用程序接收要存储在所述存储器装置上的数据对象,以及使对象标识符与物理地址范围相关联。所述操作可进一步包含使所述对象标识符与快照标识符相关联以限定快照以及将所述物理地址范围映射到第二主机应用程序的对应虚拟地址范围。所述操作还可包含响应于从所述第一主机应用程序接收到对写入到所述数据对象的请求,将反映对所述数据对象作出的改变的条目记录在改变日志中,以及响应于从所述第一主机应用程序接收到对读取所述数据对象的部分的请求,从所述改变日志的所述条目检索所述部分。
Description
技术领域
本公开的实施例大体上涉及存储器子系统,并且更具体地,涉及存储器装置上的共享存储器快照管理。
背景技术
存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以将数据存储在存储器装置处并且从存储器装置检索数据。
发明内容
在一个方面中,本公开涉及一种系统,其包括:存储器装置,其包括字节可寻址存储器;以及处理装置,其以操作方式与存储器装置耦合以执行包括以下各项的操作:从第一主机应用程序接收要存储在存储器装置上的数据对象;在第一元数据项中,使对象标识符与识别将数据对象存储在存储器装置上的相应位置的一或多个物理地址范围相关联;在第二元数据项中,使对象标识符与快照标识符相关联以限定存储器装置上的数据对象的快照;将一或多个物理地址范围映射到第二主机应用程序的虚拟地址空间中的对应虚拟地址范围;响应于从第一主机应用程序接收到对写入到数据对象的请求,将反映第一主机应用程序对数据对象作出的改变的条目记录在与快照相关联的改变日志中;以及响应于从第一主机应用程序接收到对读取数据对象的部分的请求,从改变日志的条目检索所述部分。
在另一方面中,本公开涉及一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使处理装置执行包括以下各项的操作:从第一主机应用程序接收要存储在存储器装置上的数据对象,所述存储器装置包括字节可寻址存储器;在第一元数据项中,使对象标识符与识别将数据对象存储在存储器装置上的相应位置的一或多个物理地址范围相关联;在第二元数据项中,使对象标识符与快照标识符相关联以限定存储器装置上的数据对象的快照;将一或多个物理地址范围映射到第二主机应用程序的虚拟地址空间中的对应虚拟地址范围;响应于从第一主机应用程序接收到对写入到数据对象的请求,将反映第一主机应用程序对数据对象作出的改变的条目记录在与快照相关联的改变日志中;以及响应于从第一主机应用程序接收到对读取数据对象的部分的请求,从改变日志的条目检索所述部分。
在另一方面中,本公开涉及一种方法,其包括:从第一主机应用程序接收要存储在存储器装置上的数据对象,所述存储器装置包括字节可寻址存储器;通过第一元数据项,使对象标识符与识别将数据对象存储在存储器装置上的相应位置的一或多个物理地址范围相关联;通过第二元数据项,使对象标识符与快照标识符相关联以限定存储器装置上的数据对象的快照;将一或多个物理地址范围映射到第二主机应用程序的虚拟地址空间中的对应虚拟地址范围;响应于从第一主机应用程序接收到对写入到数据对象的请求,将反映第一主机应用程序对数据对象作出的改变的条目记录在与快照相关联的改变日志中;以及响应于从第二主机应用程序接收到对读取数据对象的部分的请求,从改变日志检索所述部分。
附图说明
根据下文给出的详细描述且根据本公开的各种实施例的附图将更充分地理解本公开。然而,图式不应被视为将本公开限于特定实施例,而是仅用于解释和理解。
图1示出根据本公开的一些实施例的包含存储器子系统的示例计算系统;
图2A描绘示出根据本公开的一些实施例的物理地址空间和虚拟地址空间的示例状态的框图的序列;
图2B描绘示出根据本公开的一些实施例的物理地址空间和虚拟地址空间的示例状态的框图的序列;
图2C描绘示出根据本公开的一些实施例的物理地址空间和虚拟地址空间的示例状态的框图的序列;
图3是根据本公开的一些实施例的用于对存储器装置执行存储器快照管理的示例方法的流程图;
图4是根据本公开的一些实施例的用于管理与存储器装置上的经修改数据对象相关的读取请求的示例方法的流程图;
图5是根据本公开的一些实施例的用于在存储器装置上创建新快照的示例方法的流程图;以及
图6是其中可操作本公开的实施例的示例计算机系统的框图。
具体实施方式
本公开的各方面是针对存储器装置中的共享存储器快照管理。存储器子系统可为存储装置、存储器模块,或存储装置和存储器模块的组合。下文结合图1来描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含一或多个例如存储数据的存储器装置的组件的存储器子系统。主机系统可提供要存储在存储器子系统处的数据,并且可请求要从存储器子系统检索的数据。
存储器子系统可包含高密度非易失性存储器装置,其中在没有电力被供应到存储器装置时需要数据的保持。在一些实施例中,存储器子系统可利用一或多个存储器装置(包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合)以存储由主机系统提供的数据。非易失性存储器装置的一个实例是与非(NAND)型快闪存储器装置。下文结合图1描述非易失性存储器装置的其它实例。非易失性存储器装置是一或多个裸片的封装。每一裸片可由一或多个平面组成。对于一些类型的非易失性存储器装置(例如,NAND装置),每一平面可由物理块集合组成。每一块可由页集合组成。每一页可由存储器单元(“单元”)集合组成。单元是存储信息的电子电路。取决于单元类型,单元可存储二进制信息的一或多个位,并且具有与正存储的位数相关的各种逻辑状态。逻辑状态可由二进制值(例如,“0”和“1”)或此类值的组合表示。
计算环境已越来越依赖于例如持久性存储器(PMEM)装置的组构附接的存储器(FAM)装置的使用。在这些计算环境的上下文中,术语“组构”可指在芯片的主要组件上或计算系统的芯片之间路由信号的互连通信路径。因此,“组构”可指计算装置内的处理或计算节点之间或者多个计算装置之间的互连架构。举例来说,在一些例子中,“组构”可指将处理装置连接到外围装置和其它处理装置的总线或连接集合,而在其它例子中,“组构”还可指相应的计算节点和存储器节点的组合之间的网络连接集合。
FAM装置可包含通过高速总线(例如,外围组件互连高速(PCIe)总线)连接到处理器的存储器装置以及利用高速总线经由网络连接接口间接连接到远端(即,位于不同的芯片上或容纳在不同的罩壳中的)处理装置的存储器装置。一个此类接口是计算高速链路(CXL)接口,其是可支持可在PCIe之上运行的若干协议的接口,包含CXL.io协议、CXL.mem协议,以及CXL.cache协议,在下文更详细地描述。
另外,FAM是一种可由一或多个处理器存取的存储器,所述处理器中的每一个在不同的本地计算系统上。在一些情况下,FAM PMEM装置允许多个处理线程或多个处理系统存取存储在存储器上的相同数据对象。举例来说,单个处理装置上的不同过程可存取FAM上的相同数据对象。类似地,FAM可使得不同主机系统上的不同处理装置能够存取存储器装置上的相同数据对象。FAM PMEM装置可包含高密度、字节可寻址、存储类别、非易失性存储器(NVM)和允许FAM装置跨越非均质和分散式计算节点共享的低时延互连件。在一些系统中,FAM PMEM装置的相同物理地址空间可供多个不同过程或不同处理装置使用,并且因此,映射到由不同过程或不同处理装置使用的多个相应逻辑地址空间。逻辑地址空间可包含对应于在处理装置高速缓存器、随机存取存储器(RAM)装置和FAM PMEM装置中发现的物理存储器位置的地址。
因此,利用FAM装置的系统允许由在主机处理装置上运行的一个过程或应用程序(在本文中统称为“生产者”,如下文进一步定义)创建的数据对象由另一主机过程或应用程序(在本文中统称为“消费者”,如下文进一步定义)存取。一般来说,生产者在存储器中创建、维持和更新数据对象,而消费者读取数据对象。因此,在特定时间点处(即,在生产者已读取-高速缓存数据的部分时),在生产者的高速缓存器、存储器装置和一或多个消费者的高速缓存器中可存在数据对象的部分。应注意,出于本公开的目的,在其上生产者应用程序正执行的主机系统的处理装置的高速缓存器可被视为关于数据项的当前状态的“真相来源”。因此,如果从生产者的高速缓存器获取存储器中的数据,则按照定义,所述数据不是“过时的”,因为当数据存在于高速缓存器和存储器装置两者中时,高速缓存器包含数据的主副本(即,与数据的其它副本进行比较的数据的参考副本)。
然而,这在与生产者相关联的高速缓存器(例如,生产者处理器高速缓存器)不与消费者共享或相关联的情形中以及在经修改高速缓存器线按一定次序写回到存储器装置的情形中导致问题,所述次序导致生产者的高速缓存器中的数据与存储器装置上的数据之间的不一致性(即,因为处理器高速缓存器中的经修改高速缓存器线不必按时间顺序次序写回到存储器装置)。因此,这进一步导致存储器装置上的数据与消费者的高速缓存器(例如,生产者处理器高速缓存器)中的数据之间的不一致性。
一些方法通过使系统将存储器对象作为网络消息进行共享或经由远端直接存储器存取(RDMA)进行共享来解决此一致性问题。然而,这些方法通常涉及制造对象的副本并且跨越网络移动副本以存储在远端存储器位置上。其它方法涉及共享存储器对象的事务更新,从而导致复杂消费者操作同步要求。举例来说,使用读取-复制-更新(RCU)机构以事务方式更新数据对象需要了解来自多个远端消费者的潜在存取请求,并且需要复杂同步以确保消费者不存取正由生产者修改的数据对象的部分,所述RCU机构强制限制对存储器装置上正更新的数据对象的部分的存取。当然,此方法需要持续地监测对存储器装置上的数据对象的改变,使得如果检测到任何改变,则可强制消费者使消费者的高速缓存器中的对应数据失效并且将来自存储器装置的经更新数据重新加载到消费者的高速缓存器。因此,在消费者需要共享存储器中的对象的一致视图的FAM环境中,此类型的细粒度同步消耗大量时间和计算资源,因为数据对象的每次更新或修改都要传播到相应消费者的高速缓存器中的每一个以维持一致性。因此,这些方法可导致消费者的数据对象的不一致(即,“过时的”)视图,或者需要昂贵的高速缓存器一致性协议要求,所述高速缓存器一致性协议要求在未明确了解远端消费者(即,在远端消费者主机系统的处理装置上运行的过程,其对于生产者的主机系统或存储器装置不可见)的全部可能请求的情况下难以实施。
本公开的各方面通过管理存储器中的数据对象的共享快照并且确保一致性的存储器子系统解决以上和其它缺陷。更具体地,在本文中所描述的实施例中,存储器子系统可限定存储器装置上的数据对象的快照,并且将生产者修改(即,写入)和对数据对象的存取(即,读取)与对数据对象的快照的消费者存取(即,读取)隔离。在一些实施例中,消费者存取可受限于数据对象的特定快照,使得它们不受存储器装置上的数据对象的生产者修改或更新的影响。出于本公开的目的,相对于特定数据对象,术语“生产者”是指正在主机系统的处理装置上执行的生成和/或修改数据对象(即,具有读取/写入存取)的过程或应用程序。类似地,出于本公开的目的,相对于特定数据对象,术语“消费者”是指正在主机系统的处理装置上执行的读取但不创建或修改数据对象(即,具有只读存取)的过程或应用程序。因此,如果主机应用程序生成和/或修改数据对象,则其可称为生产者,并且如果主机应用程序读取但不创建或修改数据对象,则其可称为消费者。在下文更详细地描述的若干实施例中,消费者可通过存取存储器装置上的数据对象的特定快照(例如,通过参考特定快照ID)来读取数据对象。相比之下,生产者可具有更多许可能力,并且可既读取存取又写入存取,使得所述生产者可创建数据对象的特定快照以及直接读取和修改数据对象。下文提供实施例的一些一般特征,其中进一步参考图1和2A-2C解释额外细节。
在一些实施例中,存储器子系统可从生产者接收要存储在存储器装置上的数据对象。存储器子系统可将对象标识符指派到数据对象,并且使所述对象标识符与一或多个物理地址范围或物理地址跨度列表(即,不连续地址范围)相关联,以将数据对象“登记”在存储器装置上并且指示数据对象经历快照。因此,存储器子系统可将物理地址范围映射到可供生产者使用的虚拟地址空间内的对应虚拟地址范围。出于本公开的目的,此映射可称为“生产者映射”。如果生产者具有存在于生产者的高速缓存器中的数据对象的自存储在存储器装置上以来尚未被修改的部分,则所述部分将与存储器装置上的数据对象的对应部分一致。出于本公开的目的,“一致”是指数据(例如,数据对象或数据对象的部分)在两个或更多个位置之间处于相同状态(即,均匀)。
为了创建(即,限定)数据对象的快照,在一些实施例中,存储器子系统可使对象标识符与快照标识符相关联。因此,所限定快照可与数据对象标识符将数据对象登记在存储器装置上所用的物理地址范围相关联。应注意,在一些实施例中,快照的创建不需要数据对象的重复副本的创建,而是指数据对象与识别在特定时间点处数据对象的状态的快照ID的关联。因此,通过与对象标识符相关联,快照标识符还与前述物理地址范围相关联。因此,由于物理地址范围现在与快照相关联,因此存储器子系统可通过将物理地址范围与可供消费者使用的虚拟地址空间中的对应虚拟地址范围进行映射来“将快照映射到消费者”。出于本公开的目的,此映射可称为“消费者映射”。
如先前所提及,生产者可对存在于生产者的高速缓存器中的数据对象的部分作出改变,然后通过相应地更新存储器装置上的数据对象(例如,通过更新数据对象的经修改部分)来存储所述改变(即,将高速缓存器刷新到存储器装置)。本公开中所描述的各种实施例可具有处置消费者对数据对象作出的修改或改变的不同方式。在一些实施例中,可通过使用改变日志(例如,通过将数据对象部分的当前/经修改状态或先前状态存储在改变日志中)来记录改变。在其它实施例中,存储器子系统可在存储器装置上创建数据对象的重复副本(即,与快照相关联且映射到消费者的虚拟地址空间的一个数据对象副本和由生产者直接修改的另一数据对象副本),使得改变可记录在副本中的一个中,而其它副本保持未被修改。另外,取决于读取请求是从消费者还是从生产者接收的,各种实施例可采用不同方法来处置来自主机应用程序的读取请求。在使用改变日志的实施例中,读取请求处置可取决于所述请求是从消费者还是从生产者接收的。相反地,在使用数据对象的重复副本的实施例中,存储器子系统可通过分别从数据对象的不同重复副本检索所请求数据来对来自生产者的读取请求和来自消费者的读取请求作出响应。
在使用改变日志的实施例中,改变日志可存储在与存储器对象相同的装置上或不同的装置上的不同位置中。举例来说,在一些实施例中,可通过以下各项来记录对数据对象的部分的改变:用数据对象的经改变部分(即,处于新状态或经修改状态)替换存储器装置上的物理位置中的数据对象的对应部分(即,处于先前状态或原始状态),以及在改变日志中创建包含已被修改的部分数据对象的先前状态的条目。替代地,在其它实施例中,可通过在改变日志中创建包含数据对象的经修改部分(即,处于新状态或经修改状态)的条目来记录对数据对象的部分的改变,而存储在其物理位置中的数据对象的对应部分保持不变(即,处于先前状态或原始状态)。为了易于参考,包含具有数据对象的部分的先前状态的条目的改变日志可称为“先前状态日志”,而包含具有数据对象的部分的当前状态的条目的改变日志可称为“当前状态日志”,其中对于数据对象的特定部分,相对于生产者的高速缓存器中的所述部分的最新状态限定“先前”状态和“当前”状态。
因此,在使用当前状态日志的实施例中,当存储器子系统接收到读取请求时,所述存储器子系统可参考当前状态日志以确定是否对数据对象的所请求部分作出了改变,使得所述存储器子系统可提供处于与请求者(例如,消费者或生产者)的映射一致的状态的所请求部分。因此,取决于读取请求是从消费者还是从生产者接收的,存储器子系统可不同地对所述读取请求作出响应。因此,在这些实施例中的一些实施例中,响应于来自生产者的读取请求,存储器子系统将在提供所请求数据之前参考当前状态日志,而响应于来自消费者的读取请求,存储器子系统将放弃在提供所请求数据之前参考当前状态日志。
类似地,在使用先前状态日志的实施例中,当存储器子系统接收到读取请求时,所述存储器子系统可参考先前状态日志以确定是否对数据对象的所请求部分作出了改变,使得所述存储器子系统可提供处于与请求者的映射一致的状态的所请求部分。虽然在这些实施例中,正如在使用当前状态日志的实施例中一样,取决于读取请求是从消费者还是从生产者接收的,存储器子系统也可不同地对所述读取请求作出响应,但所述请求的处置被反转。换句话说,在使用先前状态日志的实施例中,响应于来自生产者的读取请求,存储器子系统将放弃在提供所请求数据之前参考先前状态日志,而响应于来自消费者的读取请求,存储器子系统将在提供所请求数据之前参考先前状态日志。
因此,存储器子系统可修改存储器装置上的数据对象的部分以创建经修改数据对象(例如,通过将经修改数据对象存储在存储器装置上的其在被修改之前驻存的位置中或存储器装置上的不同位置中)。在一些实施例中,存储器子系统可通过使数据对象(即,连同其对应物理地址范围)与新快照标识符相关联来创建新快照。应注意,在一些实施例中,新快照的创建不需要数据对象的整个新重复副本的创建,而是指数据对象与识别在与先前快照的时间点不同的时间点处数据对象的状态的新(即,不同)快照ID的关联。存储器子系统然后可将数据对象的新快照标识符与包含经修改数据对象的物理地址范围映射到消费者的虚拟地址空间中的对应虚拟地址范围。在一些实施例中,存储器子系统可通过移除快照的标识符与数据对象的关联来“擦除”快照,并且可使消费者将数据对象的所述快照的物理存储器地址与其对应虚拟存储器地址取消映射,使得所述对应虚拟存储器地址可映射到数据对象的新后续快照。在一些实施例中,即使在创建数据对象的新快照之后,存储器系统也可准许消费者继续参考较旧(即,先前)快照。也就是说,即使在存储器子系统限定新快照之后,所述存储器子系统也可保持数据对象的旧快照(即,保持先前快照标识符与改变日志条目或物理存储器位置之间的关联,其中数据对象的部分以与先前快照映射一致的状态存储)。因此,由于在一些实施例中,数据对象的多个快照可存在于存储器装置上,因此存储器子系统可从一些消费者接收参考数据对象的稍早快照的请求,同时还从其它消费者接收参考数据对象的稍后快照的请求。
本公开的优点包含用于维持例如FAM PMEM的共享存储器中的生产者与消费者之间的数据对象的一致性的资源量和时间量的显著减少。本公开的实施例允许存储器装置上的单个数据对象快照映射到多个不同消费者且由多个不同消费者存取,而不需要针对每一消费者创建数据对象的重复副本。同时,若干实施例使得生产者能够对存储器装置上的数据对象作出改变,而不妨碍消费者的存取且不导致不一致性。在指定时间处限定快照并且通过快照映射使数据对象可由消费者存取将生产者所作出的改变隔离以对消费者不可见,直到改变并入在数据对象的后续快照中为止。因此,因为消费者的虚拟地址范围映射到与特定快照相关联的对应物理地址范围,所以对消费者存储器中的数据对象的参考始终与快照数据一致。此外,在各种实施例中,消费者和生产者两者都可执行对数据对象的部分的经读取-高速缓存存取,而不干扰彼此,因为来自消费者的读取请求与生产者的读取请求不同地进行处理。因此,本文中所公开的实施例使得多个消费者能够存取已经映射的数据对象的最新快照的一致且最新的信息,并且允许生产者控制数据对象的快照的创建和移除,而不针对每一消费者创建数据对象的多个重复副本或不执行取决于在给定时间处全部潜在消费者存取请求的知识的复杂存取同步。参考图1更详细地描述本公开的实施例的这些和其它特征。
图1示出根据本公开的一些实施例的包含存储器子系统110的示例计算系统100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130),或此类装置的组合。
存储器子系统110可为存储装置、存储器模块,或存储装置和存储器模块的组合。存储装置的实例包含固态硬盘(SSD)、快闪驱动器、通用串行总线(USB)快闪驱动器、嵌入式多媒体控制器(eMMC)驱动器、通用快闪存储(UFS)驱动器、安全数字(SD)卡,以及硬盘驱动器(HDD)。存储器模块的实例包含双列直插式存储器模块(DIMM)、小外形DIMM(SO-DIMM)和各种类型的非易失性双列直插式存储器模块(NVDIMM)。
计算系统100可为计算装置,例如台式计算机、手提式计算机、网络服务器、移动装置、运载工具(例如,飞机、无人机、火车、汽车或其它运输工具)、支持物联网(IoT)的装置、嵌入式计算机(例如,包含在运载工具、工业设备或联网商业装置中的嵌入式计算机),或包含存储器和处理装置的此类计算装置。
计算系统100可包含耦合到一或多个存储器子系统110的主机系统120。在一些实施例中,主机系统120耦合到不同类型的存储器子系统110。在其它实施例中,存储器子系统110耦合到多个主机系统120、122、124。图1示出耦合到一个存储器子系统110的多个主机系统120、122、124的一个实例。如本文中所使用,“耦合到”或“与……耦合”一般是指组件之间的连接,其可为间接通信连接或直接通信连接(例如,不具有中间组件),无论有线还是无线,包含例如电连接、光学连接、磁性连接等连接。
主机系统120、122和124可各自包含处理器芯片组和由处理器芯片组执行的软件堆叠。处理器芯片组可包含一或多个核心、一或多个高速缓存器、存储器控制器(例如,NVDIMM控制器),以及存储协议控制器(例如,PCIe控制器、SATA控制器)。主机系统120、122、124使用存储器子系统110,例如以将数据写入到存储器子系统110和从存储器子系统110读取数据。在一些实施例中,主机系统120、122和124中的每一个可包含执行一或多个应用程序或过程(由主机系统执行的过程和应用程序两者在本文中统称为“主机应用程序”)的处理装置。举例来说,主机系统120可具有在其处理装置上执行的主机应用程序121a-121n。类似地,主机系统122和124可分别执行主机应用程序123a-123n和125a-125n。
主机系统120、122和124中的每一个可经由物理主机接口耦合到存储器子系统110。物理主机接口的实例包含但不限于串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、光纤通道、串行附接SCSI(SAS)、双数据速率(DDR)存储器总线、小型计算机系统接口(SCSI)、双列直插式存储器模块(DIMM)接口(例如,支持双数据速率(DDR)的DIMM套接接口)等。物理主机接口可用于在主机系统120、122、124与存储器子系统110之间传输数据。在存储器子系统110通过物理主机接口(例如,PCIe总线)与主机系统120、122、124耦合时,主机系统120、122、124可进一步利用NVM高速(NVMe)接口以存取组件(例如,存储器装置130)。物理主机接口可提供用于在存储器子系统110与主机系统120、122、124之间传递控制、地址、数据和其它信号的接口。图1示出存储器子系统110作为实例。一般来说,主机系统120、122和124中的每一个可经由相同通信连接、多个单独通信连接和/或通信连接的组合存取多个存储器子系统。
在一些实施例中,主机系统120、122、124可经由计算高速链路(CXL)接口耦合到存储器子系统110。在此类实施例中,存储器子系统110可为被配置成支持CXL协议的CXL系统。CXL接口是指可支持可在PCIe之上运行的数个协议的接口,所述协议包含CXL.io协议、CXL.mem协议和CXL.cache协议。CXL.io协议类似于PCIe协议,可被视为能够划分受管理存储器的“增强型”PCIe协议。CXL接口可用于初始化、链接、装置发现和枚举,以及用于寄存器存取。CXL接口还可提供用于I/O装置的接口。CXL.mem协议可实现使用存储器语义(例如,加载和存储命令)对附接装置的存储器的主机存取。根据本文中所描述的实施例,这种方法可支持易失性存储器架构和持久性存储器架构两者。CXL.cache协议可限定主机装置相互作用以使用请求和响应方法实现具有低时延的主机存储器的高效高速缓存。流量可通过CXL.io协议运行,并且CXL.mem和CXL.cache协议可共享共同链路层和事务层。因此,可经由PCIe物理层对CXL协议进行多路复用和传送。
存储器装置130、140可包含不同类型的非易失性存储器装置和/或易失性存储器装置的任何组合。易失性存储器装置(例如,存储器装置140)可为但不限于随机存取存储器(RAM),例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)。
非易失性存储器装置(例如,存储器装置130)的一些实例包含与非(NAND)型快闪存储器和就地写入存储器,例如三维交叉点(“3D交叉点”)存储器装置,其是非易失性存储器单元的交叉点阵列。非易失性存储器单元的交叉点阵列可结合可堆叠交叉网格化数据存取阵列基于体电阻的改变而执行位存储。另外,与许多基于快闪的存储器对比,交叉点非易失性存储器可执行就地写入操作,其中可在不预先擦除非易失性存储器单元的情况下对非易失性存储器单元进行编程。NAND型快闪存储器包含例如二维NAND(2DNAND)和三维NAND(3D NAND)。
存储器装置130中的每一个可包含一或多个存储器单元阵列。一种类型的存储器单元,例如单层级单元(SLC)可每单元存储一个位。其它类型的存储器单元,例如多层级单元(MLC)、三层级单元(TLC)、四层级单元(QLC)和五层级单元(PLC)可每单元存储多个位。在一些实施例中,存储器装置130中的每一个可包含一或多个存储器单元阵列,例如SLC、MLC、TLC、QLC、PLC或此类的任何组合。在一些实施例中,特定存储器装置可包含存储器单元的SLC部分,以及MLC部分、TLC部分、QLC部分或PLC部分。存储器装置130的存储器单元可分组为页,所述页可指用于存储数据的存储器装置的逻辑单元。在一些类型的存储器(例如,NAND)的情况下,页可经分组以形成块。一些类型的存储器(例如,3D交叉点)可将跨裸片和通道的页分组以形成管理单元(Mu)。
虽然描述了非易失性存储器组件,例如3D交叉点非易失性存储器单元阵列和NAND型快闪存储器(例如,2D NAND、3D NAND),但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(ROM)、相变存储器(PCM)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(FeTRAM)、铁电随机存取存储器(FeRAM)、磁随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM、导电桥接RAM(CBRAM)、电阻性随机存取存储器(RRAM)、基于氧化物的RRAM(OxRAM)、或非(NOR)快闪存储器或电可擦除可编程只读存储器(EEPROM)。可包含在存储器装置130中的前述类型的非易失性存储器中的一些,例如3D交叉点存储器、MRAM、PCM、SSTRAM等,可在本文中称为存储类别存储器(SCM)或持久性存储器(PMEM)。
在一些实施例中,存储器子系统110的存储器装置130、140中的一或多个可为PMEM装置。根据本文中所提供的实施例的持久性存储器是指存储器装置或存储器装置的一部分(即,持久性存储器区),所述存储器装置或存储器装置的一部分存储数据项,使得即使在创建或最后修改数据项的过程结束之后也可存取所述数据。在一些实施例中,存储器装置130、140可为作为非易失性存储器装置的PMEM装置。在其它或类似实施例中,存储器装置130、140可为作为受电源保护的易失性存储器装置(例如,受电源保护的动态随机存取存储器(DRAM)装置)的PMEM装置。在一些实施例中,存储器子系统110可不包含整体作为PMEM装置的存储器装置130、140,并且替代地,存储器装置130和/或存储器装置140可包含一或多个持久性存储器区。根据本文中所描述的实施例,持久性存储器区是指存储器装置的支持持久性存储器存储的部分。举例来说,在一些实施例中,存储器装置130可为易失性存储器装置而不是非易失性存储器装置,并且存储器装置140的至少部分可为受电源保护的易失性存储器。
存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置130通信以执行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它此类操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲存储器或其组合。硬件可包含具有专用(即,硬译码)逻辑的数字电路系统以执行本文中所描述的操作。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)或其它适合的处理器。
存储器子系统控制器115可包含处理装置,所述处理装置包含被配置成执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所示出实例中,存储器子系统控制器115的本地存储器119包含被配置成存储指令的嵌入式存储器,所述指令用于执行控制存储器子系统110的操作(包含处置存储器子系统110与一或多个主机系统120、122、124之间的通信)的各种过程、操作、逻辑流程和例程。
在一些实施例中,本地存储器119可包含存储器寄存器,其存储存储器指针、获取的数据等。本地存储器119还可包含用于存储微码的只读存储器(ROM)。虽然图1中的示例存储器子系统110已示出为包含存储器子系统控制器115,但在本公开的另一个实施例中,存储器子系统110不包含存储器子系统控制器115,而是可依靠外部控制(例如,由外部主机或由与存储器子系统分开的处理器或控制器提供)。
一般来说,存储器子系统控制器115可从主机系统120、122、124接收命令或操作,并且可将所述命令或操作转换成指令或适当命令以实现对存储器装置130的所要存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ECC)操作、加密操作、高速缓存操作,以及与存储器装置130相关联的逻辑地址(例如,逻辑块地址(LBA)、名字空间)与物理地址(例如,物理MU地址、物理块地址)之间的地址翻译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成存取存储器装置130的命令指令,以及将与存储器装置130相关联的响应转换成用于主机系统120、122、124的信息。
存储器子系统110还可包含未示出的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存器或缓冲器(例如,DRAM)和地址电路系统(例如,行解码器和列解码器),所述地址电路系统可从存储器子系统控制器115接收地址且对所述地址进行解码以存取存储器装置130。
在一些实施例中,存储器装置130包含本地媒体控制器135,其结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130执行媒体管理操作)。在一些实施例中,存储器子系统110是受管理存储器装置,其是具有裸片上的控制逻辑(例如,本地媒体控制器135)和用于同一存储器装置封装内的媒体管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例是受管理NAND(MNAND)装置。
存储器子系统110包含快照管理组件(SMC)113,其可接收数据并且将数据存储在存储器装置130上,管理数据的快照,并且管理一或多个主机系统120、122、124对数据的存取。在一些实施例中,存储器子系统控制器115包含快照管理组件113的至少部分。在一些实施例中,快照管理组件113是主机系统110、应用程序或操作系统的部分。在其它实施例中,本地媒体控制器135包含快照管理组件113的至少部分且被配置成执行本文中所描述的功能性。
在一些实施例中,快照管理组件113可从主机系统120接收由主机应用程序121a创建的数据对象。SMC 113可将数据对象存储在存储器装置130上,所述存储器装置可为组构附接的存储器装置、字节可寻址存储器装置,以及组构附接的字节可寻址存储器装置。在一些实施例中,SMC可将其中数据对象驻存在存储器装置130上的物理存储器地址(例如,指示数据对象的数据的存储器装置130上的位置的物理地址范围或不连续物理地址范围的跨度列表)映射到主机系统120、122、124的虚拟地址空间中的主机应用程序的对应虚拟存储器地址。另外,SMC 113可创建和移除数据对象的快照,并且管理存储器装置130上的主机应用程序对数据对象的修改。在若干实施例中,SMC 113可从主机应用程序接收对存取(例如,读取或写入)数据对象的数据的请求,并且可通过执行操作序列来对此类请求作出响应,所述操作序列可取决于请求主机应用程序是生产者还是消费者。在一些实施例中,响应于从主机应用程序接收到对将数据写入到数据对象的请求,SMC 113可基于请求主机应用程序是生产者还是消费者而确定接受或不接受所述请求。
因此,在一些实施例中,SMC 113可从生产者(例如,主机应用程序)接收要存储在存储器装置130上的数据对象。SMC 113可将数据对象存储在存储器装置130上,并且将识别包含将数据对象存储在存储器装置130上的相应位置的一或多个物理地址范围(在本文中也称为包含数据对象的数据的“数据对象的物理地址范围”)与可供生产者使用的虚拟地址空间(即,由主机系统分配到创建数据对象的主机应用程序的逻辑地址空间)中的对应虚拟地址范围进行映射。在一些实施例中,SMC 113可通过使对象标识符与存储器装置130上的数据对象的物理地址范围相关联(例如,在数据结构中的元数据条目中)来将对象标识符指派到数据对象。以此方式,SMC 113可将数据对象登记在存储器装置上,其中,出于本公开的目的,“登记”是指指示数据对象经历快照。
在此上下文中,快照是指使在特定时间处数据对象的状态与快照标识符相关联。因此,在一些实施例中,SMC 113可使对象标识符与快照标识符相关联(例如,在数据结构中的元数据条目中)以限定存储器装置130上的数据对象的数据的快照。以此方式,数据对象的特定快照反映在快照被创建的时间(即,所述特定快照的标识符被指派到数据对象的时间)处数据对象的数据的状态。因此,快照可与在快照被创建的时间处存储器装置上的数据对象的数据的状态以及数据的位置(即,物理地址范围)相关联。出于本公开的目的,识别存储器装置130上存储数据对象的相应位置的物理地址范围可称为包含数据对象的数据的“快照的物理地址范围”。应注意,虽然最初快照的物理地址范围可与数据对象的物理地址范围相同,但如果数据对象被修改,则数据对象的物理地址范围可随后改变。因此,SMC 113可通过将快照的物理地址范围映射到消费者的虚拟地址空间(即,由主机系统分配到主机应用程序的逻辑地址空间,所述主机应用程序被准许读取而非修改数据对象)中的对应虚拟地址范围来将快照映射到消费者(例如,另一主机应用程序)。
在本公开的各种实施例中,SMC 113可实施用于处置对数据对象的修改以及用于处置对存取(即,读取/写入)数据对象的数据的请求且对所述请求作出响应的一或多个不同机构。参考图2A-2C且继续参考图1更详细地描述这些机构。
图2A-2C中的每一个描绘示出根据本公开的一些实施例的物理地址空间和虚拟地址空间的示例状态的框图序列。此外,虽然在一些实施例中,生产者和消费者可各自在不同的相应主机系统上执行,但图2A-2C的全部示出根据其中消费者和生产者各自分别为在相同主机系统120上执行的不同主机应用程序121a、121n的实施例的生产者、消费者和数据对象之间的关系。尽管如此,图2A-2C中的每一个表示不同实施例,每一实施例实施用于记录对数据对象的改变的不同机构。图2A-2B示出使用改变日志以记录生产者对数据对象作出的改变的实施例的关系,而图2C示出使用数据对象的重复副本以记录生产者对数据对象作出的改变的实施例的关系。
SMC 113的操作和图2A-2C的相应序列的第一框240、260、280中所展示的关系可彼此类似或相似。举例来说,在这些实施例中,SMC 113可将由多个部分201构成的数据对象存储在存储器装置130上,并且将存储器装置130上的物理地址空间202内的数据对象的物理地址范围206与可供生产者使用的虚拟地址空间204中的对应虚拟地址范围207进行映射。在这些实施例中,存储器装置130是FAM存储器装置,并且如由存储器装置130上的所描绘物理地址空间202中的间隙所示出,物理地址范围206不连续。
在一些实施例中,SMC 113可通过使对象标识符与物理地址范围206相关联来将对象标识符211指派到数据对象。响应于从生产者接收到对写入到数据对象的请求,SMC 113可记录对存储器装置130或另一存储器装置上的数据对象的部分作出的修改。在生产者修改生产者的高速缓存器中的数据对象的部分205时,SMC 113可用相同位置(即,部分先前驻存的相同物理地址范围)中的经修改部分更新或替换存储器装置130上的数据对象的部分201。替代地,在生产者修改生产者的高速缓存器中的数据对象的部分205时,SMC 113可记录修改并且将经修改部分存储在不同位置中,同时跟踪部分的先前位置到不同位置(例如,在存储器装置130或存储器子系统110上)的映射,使得数据对象部分的生产者的映射(即,对应于消费者的虚拟地址空间中的数据对象部分的虚拟地址的物理地址的映射)被持续地更新为对应于存储器装置上的经修改部分的位置。
在一些实施例中,SMC 113可使对象标识符211与快照标识符213相关联以限定存储器装置130上的数据对象的数据的快照。因此,SMC 113可通过将快照的物理地址范围206映射到消费者的虚拟地址空间204中的对应虚拟地址范围209来将快照映射到消费者(例如,另一主机应用程序)。因此,此时,位于存储器装置130的物理地址空间202中的数据对象的部分201与最近存在于消费者的高速缓存器中的数据对象的对应部分205一致(即,处于与其相同的状态)。
图2A描绘示出根据实施例的物理地址空间和虚拟地址空间的示例状态的框图的序列200a,所述实施例使用当前状态日志以记录对数据对象作出的改变。在这些实施例中,在数据对象的快照被创建之后,生产者(例如,生产者主机应用程序)可对数据对象的部分201作出改变(例如,在其高速缓存器中),并且因此,生成数据对象的经修改部分207a。因此,如框242中所展示,SMC 113可将分别反映生产者对数据对象作出的改变的条目记录在与快照相关联的改变日志中。在一些实施例中,改变日志可与快照标识符213相关联(例如,在数据结构中的元数据条目中)以指示包含在改变日志中的记录涉及相对于对应于快照标识符213的数据对象的状态的修改。举例来说,SMC 113可将包含数据对象的经修改部分207a的条目记录在当前状态日志214中。在一些实施例中,条目中的每一个可包含表示经修改部分207a与数据对象的部分201、205的先前状态之间的差异的信息,而不是包含整个经修改部分。对于已被修改的指定数据对象部分,此类型的信息还可称为所述部分的“增量信息”。因此,在一些实施例中,记录在当前状态日志214的条目中的经修改部分207a或其相应增量信息可存储在存储器装置上的不同于所述部分先前存储的位置的位置中。
因此,在这些实施例中,数据对象的部分201的先前状态(即,在修改之前的数据对象的先前状态)可保持在映射到空间204中的消费者的虚拟地址范围209的先前与数据对象的快照相关联的物理位置(例如,范围206中的物理地址)中。因此,改变日志(即,当前状态日志214)可包含具有表示数据对象的部分207a的当前状态的记录(例如,增量信息或整个经修改部分)连同部分201的对应先前状态的物理位置(即,物理地址)的记录的条目,所述对应先前状态与消费者映射一致(即,与在快照映射到消费者的虚拟地址空间的时间处或在数据对象的部分放置在消费者的高速缓存器中的时间处数据对象的状态一致)。反映经修改数据对象部分的当前状态和数据对象部分的先前状态的信息的此不关联允许SMC 113基于请求主机应用程序是生产者还是消费者而不同地处理存取请求。举例来说,其使得SMC113能够通过从其物理存储器地址直接获取与消费者映射一致的数据来对读取数据对象的部分的消费者请求作出响应,同时确保SMC 113可响应于对读取数据对象的经修改的部分的生产者请求而寻找处于一致状态的数据对象部分并且将所述数据对象部分提供到生产者。类似地,其使得SMC 113能够通过拒绝(或简单地忽略)请求来对写入数据对象的部分的消费者请求作出响应,同时确保SMC 113可响应于对写入(例如,修改)数据对象的部分的生产者请求而记录生产者对数据对象部分作出的改变。
在这些实施例中,如果SMC 113随后从生产者接收到读取请求(即,对存取存储器对象的部分的请求),则SMC 113可执行以下操作序列,以定位所请求部分并且将所述所请求部分传输到生产者。在试图从存储器装置上的其先前物理位置检索所请求部分之前,SMC113可首先参考改变日志,以确定数据对象的所请求部分是否已由生产者修改。举例来说,如果所请求部分被修改,则SMC 113可在当前状态日志214中找到对应条目(即,具有所请求部分的当前状态且具有所述部分以其先前状态驻存的对应位置的条目)。在此情况下,SMC113可确定所请求部分已被修改,并且可从当前状态日志214获得数据对象的处于其当前状态的所请求部分。SMC 113然后可在不将来自改变日志的信息与在存储器装置130上的其物理位置中处于其先前状态的数据对象部分组合的情况下或者通过将来自改变日志的信息与在存储器装置130上的其物理位置中处于其先前状态的数据对象部分组合而将来自改变日志的数据对象的所请求部分提供到消费者。另一方面,如果在参考改变日志时,SMC 113未能找到对应于数据的所请求部分的条目,则可作出数据的所请求部分未被修改且仍以其先前状态存在于存储器装置130上的其对应物理位置中的推断。因此,SMC 113可确定所请求部分尚未被修改,然后可从存储器装置130上的其物理位置检索数据对象的所请求部分并且将所述所请求部分提供到生产者。
此外,如果对数据对象的部分作出额外修改,如框244中所展示,则SMC 113可继续记录分别反映生产者对数据对象作出的额外改变的额外条目。举例来说,SMC 113可将包含数据对象的额外经修改部分207b的条目记录在当前状态日志214中。在一些实施例中,条目中的每一个可包含反映经修改部分207b与数据对象的部分201、205的先前状态之间的差异的信息。类似地,在一些实施例中,记录在当前状态日志214的条目中的经修改部分207b或其相应增量信息可存储在存储器装置上的不同于所述部分先前存储的位置的位置中。
因此,在使用当前状态日志的实施例中,取决于读取请求是从消费者还是从生产者接收的,SMC 113可不同地对读取请求作出响应。换句话说,如果作出改变,则SMC 113可在当前状态日志214中找到对应条目,并且如果未作出改变,则存储器子系统可能无法在当前状态日志214中找到对应条目。在SMC 113从生产者接收到读取请求之后在当前状态日志214中找到对应条目的情况下,SMC 113可将来自日志214的数据对象的所请求部分207b的当前状态提供到生产者。举例来说,在一些实施例中,SMC 113可从当前状态日志214检索处于其当前状态的所请求部分207b。在其它实施例中,SMC 113可将来自当前状态日志214的所请求部分的增量信息与仍保持存储在存储器装置上的其先前位置中的所述部分的先前状态组合,以生成所请求部分的当前状态,并且将所请求部分的当前状态提供到生产者。另一方面,在SMC 113从生产者接收到读取请求之后在当前状态日志214中未能找到对应条目的情况下,SMC 113可从存储器装置上的其对应物理位置(即,从数据对象的物理地址范围或最后一个快照的物理地址范围)检索所请求部分201,并且将所述所请求部分传输到生产者(因为所请求数据对象的状态尚未改变)。此外,在这些实施例中,如果SMC 113从消费者接收到读取请求,则不管是否作出改变,SMC 113都可响应于所述请求而从存储器装置130上的其对应物理位置(即,从快照的物理地址范围)检索所请求部分201并且将所述所请求部分传输到消费者。
在这些实施例中的一些中,在从主机应用程序接收到与数据对象相关联的写入请求时,SMC 113可确定是否接受所述请求。举例来说,如果请求主机应用程序是消费者,则SMC 113可确定不接受请求(例如,忽略请求或通过拒绝请求来作出响应)。在此类情况下,SMC 113可将通知发送到消费者,所述通知向消费者指示写入请求将不被满足。相反地,如果请求主机应用程序是生产者,则SMC 113可确定接受请求,并且通过将改变/修改记录到数据对象的部分来将请求的数据写入在存储器装置130中,如上文所描述。因此,在一些实施例中,不准许消费者执行写入操作。
另外,在这些实施例中,SMC 113可通过以下各项来创建数据对象的后续快照:使用由改变日志中所记录的条目反映的改变修改数据对象,然后使对象标识符与不同快照标识符213相关联以限定存储器装置130上的对象的后续快照,如框246中所展示。以此方式,数据对象的后续快照可反映在后续快照被创建的时间(即,后续快照的标识符被指派到数据对象的时间)处数据对象的数据的状态。因此,后续快照可与在快照被创建的时间处存储器装置上的数据对象的数据的当前状态以及数据的位置(即,物理地址范围)相关联。举例来说,在当前状态日志214包含数据对象的经修改部分的实施例中,SMC 113可用来自当前状态日志214的经修改部分替换位于与先前快照映射一致的位置中的数据对象的对应部分。类似地,在当前状态日志214包含数据对象的部分的增量信息的实施例中,SMC 113可用由来自当前状态日志214的增量信息表示的修改编辑位于与先前快照映射一致的位置中的数据对象的对应部分。
在一些情况下,数据对象的部分的修改可使其变得更大,并且需要比先前状态中所需的部分更多的空间以供SMC 113将其存储在存储器装置上。在其它情况下,SMC 113可将数据对象的经修改部分存储在存储器装置上的与所述部分以其先前状态存储的位置不同的位置中。因此,在这些实施例中,创建数据对象的后续快照可包含SMC 113修改与对象标识符相关联的一或多个物理地址范围以生成一个或多个经修改物理地址范围(例如,在数据结构中的元数据条目中),使得后续快照可映射到一或多个消费者。识别包含数据对象的后续快照的数据的相应位置的这些经修改物理地址范围可称为“后续快照的物理地址范围”。因此,SMC 113可将后续快照的物理地址范围映射到消费者的对应虚拟地址范围,并且可用经修改数据部分207a、207b(即,处于其当前状态的数据部分)替换消费者的处理器高速缓存器中处于先前状态的数据部分。在其它实施例中,数据对象的修改和来自消费者和生产者的读取请求的处理可被反转,如参考图2B更详细地解释。
图2B描绘示出根据实施例的物理地址空间和虚拟地址空间的示例状态的框图的序列200b,所述实施例使用先前状态日志以记录对数据对象作出的改变。在这些实施例中,在数据对象的快照被创建之后,生产者(例如,生产者主机应用程序)可对数据对象的部分201作出改变(例如,在其高速缓存器中),并且因此,生成数据对象的经修改部分207a。因此,如框262中所展示,SMC 113可将条目记录在与快照相关联的改变日志中,所述条目分别反映从映射到空间204中的消费者的虚拟地址范围209的先前与数据对象的快照相关联的物理位置(例如,范围206中的物理地址)获得的数据对象的部分201的先前状态(即,在修改之前的数据对象部分的先前状态)。与数据对象的部分的先前状态相关的信息在改变日志中的存在可反映或指示生产者已对所述部分作出的修改。在一些实施例中,改变日志可与快照标识符213相关联(例如,在数据结构中的元数据条目中)以指示包含在改变日志中的记录涉及对应于快照标识符213的数据对象的先前状态。举例来说,SMC 113可将包含数据对象的处于其先前状态(即,在生产者对所述部分的最新修改之前的状态)的部分201、205的条目记录在先前状态日志215中。在一些实施例中,条目中的每一个可包含表示数据对象的部分201、205的先前状态与数据对象的经修改部分207a之间的差异的信息,而不是包含数据对象的整个部分。对于已被修改的指定数据对象部分,此类型的信息还可称为所述部分的“增量信息”。因此,在一些实施例中,记录在先前状态日志215的条目中的处于其先前状态的部分201、205或其相应增量信息可存储在存储器装置上的不同于所述部分先前存储的位置的位置中。
因此,在这些实施例中,数据对象的表示生产者对数据对象作出的改变的经修改部分207a(即,部分201、205的当前状态)可由SMC 113存储在映射到空间204中的消费者的虚拟地址范围209的先前与数据对象的快照相关联的物理位置(例如,范围206中的物理地址)中。因此,改变日志(即,先前状态日志215)可包含具有表示数据对象的部分201、205的先前状态的记录(例如,增量信息或处于其先前状态的整个部分201、205)连同部分201的先前物理位置(即,物理地址)的记录的条目,所述先前物理位置与消费者映射一致(即,与在快照映射到消费者的虚拟地址空间的时间处或在数据对象的部分放置在消费者的高速缓存器中的时间处数据对象的状态一致)。如在其它实施例中,反映经修改数据对象部分的当前状态和数据对象部分的先前状态的信息的此不关联允许SMC 113基于请求主机应用程序是生产者还是消费者而不同地处理存取请求。举例来说,其使得SMC 113能够通过从其物理存储器地址直接获取与生产者映射一致的数据来对读取数据对象的部分的生产者请求作出响应,同时确保SMC 113可响应于对读取在最后一个快照映射到消费者之后由生产者修改的数据对象的部分的消费者请求而寻找处于一致状态的数据对象部分并且将所述数据对象部分提供到消费者。类似地,其使得SMC 113能够通过拒绝(或简单地忽略)请求来对写入数据对象的部分的消费者请求作出响应,同时确保SMC 113可响应于对写入(例如,修改)数据对象的部分的生产者请求而记录生产者对数据对象部分作出的改变。
在这些实施例中,如果SMC 113随后从消费者接收到读取请求(即,对存取存储器对象的部分的请求),则SMC 113可执行以下操作序列,以定位所请求部分并且将所述所请求部分传输到消费者。在试图从存储器装置上的其先前物理位置检索所请求部分之前,SMC113可首先参考改变日志,以确定数据对象的所请求部分是否已由生产者修改。举例来说,如果所请求部分被修改,则SMC 113可在先前状态日志215中找到对应条目(即,具有处于其先前状态的所请求部分且具有部分先前以其先前状态驻存且当前以其当前状态驻存在存储器装置130上的对应位置的条目)。在此情况下,通过找到条目,SMC 113可确定所请求部分已被修改,并且可从先前状态日志215获得数据对象的处于其先前状态的所请求部分。SMC 113然后可将来自改变日志的数据对象的所请求部分提供到消费者,而不从存储器装置130上的其先前物理位置(即,所述部分现在以其当前状态驻存的物理位置)检索所述所请求部分。另一方面,如果在参考改变日志时,SMC 113未能找到对应于数据的所请求部分的条目,则可作出数据的所请求部分未被修改且仍以其先前状态存在于存储器装置130上的其对应物理位置中的推断。因此,SMC 113可确定所请求部分尚未被修改,然后可从存储器装置130上的其物理位置检索数据对象的所请求部分并且将所述所请求部分提供到消费者。
此外,如果对数据对象的部分作出额外修改,如框264中所展示,则SMC 113可继续记录分别反映在生产者对数据对象作出额外改变之前数据对象部分的状态的额外条目。举例来说,SMC 113可将包含数据对象的部分201、205的先前状态的条目或包含数据对象的部分201、205的增量信息的条目记录在先前状态日志215中。类似地,在一些实施例中,记录在先前状态日志215的条目中的处于其先前状态的部分201、205或其相应增量信息可存储在存储器装置上的不同于所述部分先前存储的位置的位置中。
因此,在使用先前状态日志的实施例中,取决于读取请求是从消费者还是从生产者接收的,SMC 113可不同地对读取请求作出响应。换句话说,如果作出改变,则SMC 113可在先前状态日志215中找到对应条目,并且如果未作出改变,则存储器子系统可能无法在先前状态日志215中找到对应条目。在SMC 113从消费者接收到读取请求之后在先前状态日志215中找到对应条目的情况下,SMC 113可将来自日志215的数据对象的所请求部分201、205的先前状态提供到消费者。举例来说,在一些实施例中,SMC 113可从先前状态日志215检索处于其先前状态的所请求部分201、205。在其它实施例中,SMC 113可将来自先前状态日志的所请求部分的增量信息与存储在存储器装置上的其位置中的部分的当前状态组合,以生成所请求部分的先前状态,并且将所请求部分的先前状态提供到消费者。另一方面,在SMC113从消费者接收到读取请求之后在先前状态日志215中未能找到对应条目的情况下,SMC113可从存储器装置上的其对应物理位置(即,从数据对象的物理地址范围或最后一个快照的物理地址范围)检索所请求部分201、205,并且将所述所请求部分传输到消费者(因为所请求数据对象的状态尚未改变)。此外,在这些实施例中,如果SMC 113从生产者接收到读取请求,则不管是否作出改变,SMC 113都可响应于所述请求而从存储器装置130上的其对应物理位置(即,从数据对象的物理地址范围)检索所请求部分201、205并且将所述所请求部分传输到生产者。
在这些实施例中的一些中,在从主机应用程序接收到与数据对象相关联的写入请求时,SMC 113可确定是否接受所述请求。举例来说,如果请求是从消费者主机应用程序接收的,则SMC 113可确定不接受请求(例如,忽略请求或通过拒绝请求来作出响应)。在此类情况下,SMC 113可通过将指示消费者的写入请求不被允许的通知发送到消费者主机应用程序来作出响应。相反地,如果请求是从生产者主机应用程序接收的,则SMC 113可确定接受请求,并且通过将改变/修改记录到数据对象的部分来将存储器装置130中的请求的数据写入到存储器装置130,如上文所描述。因此,在一些实施例中,不准许消费者执行写入操作。
另外,在这些实施例中,SMC 113可通过以下各项来创建数据对象的后续快照:修改数据对象,然后使对象标识符与不同快照标识符213相关联以限定存储器装置130上的对象的后续快照,如框266中所展示。以此方式,数据对象的后续快照可反映在后续快照被创建的时间(即,后续快照的标识符被指派到数据对象的时间)处数据对象的数据的状态。因此,后续快照可与在快照被创建的时间处存储器装置上的数据对象的数据的当前状态以及数据的位置(即,物理地址范围)相关联。
在一些情况下,数据对象的部分的修改可使其变得更大,并且需要比先前状态中所需的部分更多的空间以供SMC 113将其存储在存储器装置上。在其它情况下,SMC 113可将数据对象的经修改部分存储在存储器装置上的与所述部分以其先前状态存储的位置不同的位置中。因此,在这些实施例中,创建数据对象的后续快照还可包含SMC 113修改与对象标识符相关联的一或多个物理地址范围以生成一个或多个经修改物理地址范围(例如,在数据结构中的元数据条目中),使得后续快照可映射到一或多个消费者。因此,SMC 113可将后续快照的物理地址范围映射到消费者的对应虚拟地址范围,并且可用经修改数据部分207a、207b(即,处于其当前状态的数据部分)替换消费者的处理器高速缓存器中处于先前状态的数据部分。在其它实施例中,数据对象的修改和来自消费者和生产者的读取请求的处理可相对于存储在存储器装置130上的数据对象的两个副本进行镜像,如参考图2C更详细地解释。
图2C描绘示出根据实施例的物理地址空间和虚拟地址空间的示例状态的框图的序列200c,所述实施例使用数据对象的重复副本以记录对数据对象作出的改变。在这些实施例中,在数据对象的快照被创建之后,生产者(例如,生产者主机应用程序)还可对数据对象的部分201作出改变(例如,在其高速缓存器中),并且因此,生成数据对象的经修改部分207a。如框282中所展示,SMC 113可创建存储器装置130上的原始数据对象的重复副本,并且将数据对象的重复副本的物理地址范围206b与可供生产者使用的虚拟地址空间中的对应虚拟地址范围进行映射,所述对应虚拟地址范围先前映射到数据对象的快照的物理地址范围。因此,如框282和284中所展示,SMC 113可用数据对象的经修改部分207a和207b(即,处于其当前状态的数据对象部分)替换数据对象的副本中的数据对象的处于其先前状态的部分201、205。
因此,在这些实施例中,数据对象的表示生产者对数据对象作出的改变的经修改部分207a(即,部分201、205的当前状态)可由SMC 113存储在数据对象的重复副本的物理位置(例如,范围206b中的物理地址)中。相比之下,数据对象的处于其先前状态的部分201、205可保持存储在映射到空间204中的消费者的虚拟地址范围209的数据对象的快照的物理地址范围中。如在其它实施例中,反映经修改数据对象部分的当前状态和数据对象部分的先前状态的信息的此关联允许SMC 113基于请求主机应用程序是生产者还是消费者而不同地处理读取请求。举例来说,其使得SMC 113能够通过从数据对象的副本的物理地址范围206b直接获取与生产者映射一致的数据来对读取数据对象的部分的生产者请求作出响应,并且还使得SMC 113能够通过从数据对象的快照的物理地址范围206a直接获取与消费者映射一致的数据来对读取数据对象的部分的消费者请求作出响应。类似地,其使得SMC 113能够通过拒绝(或忽略)请求来对写入数据对象的部分的消费者请求作出响应,同时确保SMC113可响应于对写入(例如,修改)数据对象的部分的生产者请求而记录生产者对数据对象部分作出的改变。
在这些实施例中,如果SMC 113从消费者或生产者接收到读取请求,则相对于映射到请求者的虚拟地址空间的物理地址范围类似地处理每一请求。举例来说,如果SMC 113从消费者接收到读取请求,并且不管是否作出改变,SMC 113都可响应于所述请求而从存储器装置130上的其对应物理位置(即,从快照的物理地址范围)检索所请求部分201、205并且将所述所请求部分传输到消费者。类似地,如果SMC 113从生产者接收到读取请求,并且不管是否作出改变,SMC 113都可响应于所述请求而从存储器装置130上的其对应物理位置(即,从数据对象的物理地址范围)检索所请求部分201、205并且将所述所请求部分传输到生产者。
在这些实施例中的一些中,在从主机应用程序接收到与数据对象相关联的写入请求时,SMC 113可确定是否接受所述请求。举例来说,如果请求是从消费者主机应用程序接收的,则SMC 113可确定不接受请求(例如,忽略请求或通过拒绝请求来作出响应)。在此类情况下,SMC 113可通过将指示写入请求不被接受或所述写入请求不被准许的通知传输到消费者主机应用程序来作出响应。相反地,如果请求是从生产者主机应用程序接收的,则SMC 113可确定接受请求,并且通过将改变/修改记录到数据对象的部分来将存储器装置130中的请求的数据写入到存储器装置130,如上文所描述。因此,在一些实施例中,不准许消费者执行写入操作。
另外,在这些实施例中,SMC 113可通过以下各项来创建数据对象的后续快照:使对象标识符与数据对象的副本的物理地址范围相关联,以及还使所述对象标识符与不同快照标识符213相关联以限定存储器装置130上的对象的后续快照,如框286中所展示。以此方式,数据对象的后续快照可反映在后续快照被创建的时间(即,后续快照的标识符被指派到数据对象的时间)处数据对象的数据的状态。因此,后续快照可与在快照被创建的时间之前修改的存储器装置上的数据对象的副本的数据的当前状态以及数据的位置(即,物理地址范围)相关联。因此,SMC 113可将后续快照的物理地址范围映射到消费者的对应虚拟地址范围,并且可用经修改数据部分207a、207b(即,处于其当前状态的数据部分)替换消费者的处理器高速缓存器中处于先前状态的数据部分。
图3是根据本公开的一些实施例的用于对存储器装置执行存储器快照管理的示例方法300的流程图。方法300可通过处理逻辑来执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法300由图1的快照管理组件(SMC)113执行。虽然以特定序列或次序来展示,但除非另有指定,否则可修改过程的次序。因此,所示出实施例应仅作为实例理解,并且所示出过程可以不同次序执行,并且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非每一个实施例中都需要全部过程。其它过程流程是可能的。
在本公开的一些实施例中,在操作320处,处理逻辑可从主机应用程序(例如,生产者)接收要存储在存储器装置(例如,图1的存储器装置130、140)上的数据对象。在操作322处,处理逻辑可将对象标识符指派到数据对象。指派对象标识符可包含:在操作324处,处理逻辑使对象标识符与识别包含存储器装置上的数据对象的数据的相应位置的一或多个物理地址范围相关联(例如,在数据结构中的元数据项中)以将数据对象登记在存储器装置上。如本文中所使用,元数据项可指包含数据结构中的元数据的元数据条目或数据元素(例如,表中的条目)。
在一些实施例中,在操作326处,处理逻辑可使对象标识符与快照标识符相关联(例如,在数据结构中的元数据项中)以限定存储器装置上的数据对象的数据的快照。随后,在操作328处,处理逻辑可将物理地址范围映射到另一主机应用程序(例如,消费者)的虚拟地址空间中的对应虚拟地址范围。
在这些实施例中的一些中,处理逻辑可从主机应用程序(例如,消费者或生产者)接收对存取(即,读取/写入)数据对象的部分的请求,并且在每一情况下不同地作出响应。举例来说,在从主机应用程序接收到与数据对象相关联的写入请求时,在操作330处,处理逻辑可基于请求是由消费者主机应用程序还是由生产者主机应用程序发送的而确定是否接受请求。举例来说,如果请求是从消费者主机应用程序接收的,则在操作330处,处理逻辑可确定不接受请求(例如,忽略请求或通过拒绝请求来作出响应)。在此类情况下,处理逻辑可通过将指示消费者主机应用程序的写入请求不被接受的通知传输到消费者主机应用程序来对请求作出响应。相反地,如果请求是从生产者主机应用程序接收的,则在操作330处,处理逻辑可确定接受所述请求。因此,在一些实施例中,响应于从生产者接收到对写入到数据对象的请求,在操作330处,处理逻辑可记录对存储器装置上的数据对象的部分作出的修改。因此,在操作330处,处理逻辑可将分别与第一主机应用程序对数据对象作出的对应改变相关联的条目记录在与快照相关联的改变日志中。在一些实施例中,条目可包含数据对象的经修改部分,而在其它实施例中,条目可各自包含数据对象的特定部分的增量信息。
在一些实施例中,处理逻辑可从消费者或生产者接收读取请求。因此,在操作332处,处理逻辑可确定是否从生产者主机应用程序接收到对读取数据对象的部分的请求。响应于在操作332处确定从生产者接收到对读取数据对象的部分的请求,在操作334处,处理逻辑可通过在存取一或多个物理地址范围之前参考改变日志来检索所请求部分。替代地,响应于在操作332处确定未从生产者接收到对读取数据对象的部分的请求(并且实际上从消费者接收到所述请求),在操作336处,处理逻辑可从一或多个物理地址范围检索所请求部分。在若干实施例中,取决于所使用的改变日志的类型和读取请求的来源,处理逻辑可不同地处置所述读取请求。下文参考图4提供关于存储器装置上读取请求的管理和处置的额外细节。
图4是根据本公开的一些实施例的用于管理与存储器装置上的经修改数据对象相关的读取请求的示例方法400的流程图。方法400可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1的快照管理组件113执行。虽然以特定序列或次序来展示,但除非另有指定,否则可修改过程的次序。因此,所示出实施例应仅作为实例理解,并且所示出过程可以不同次序执行,并且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非每一个实施例中都需要全部过程。其它过程流程是可能的。
在本文中所描述的若干实施例中,示例方法400的操作可与示例方法300的操作一起或代替示例方法300的操作执行。在一些实施例中,在操作430处,处理逻辑可将分别与第一主机应用程序对数据对象作出的对应改变相关联的条目记录在与快照相关联的改变日志中。在一些实施例中,改变日志可为当前状态日志。因此,在这些实施例中,在操作431a处,处理逻辑可记录条目,所述条目分别包含反映数据对象的部分的当前状态的信息。举例来说,条目可分别包含数据对象的处于其当前状态的部分。在另一实例中,条目可分别包含数据对象的部分的增量信息。
在这些实施例中,在操作432a处,处理逻辑可确定是否从生产者主机应用程序接收到对读取数据对象的部分的请求。响应于在操作432a处确定从生产者主机应用程序接收到对读取数据对象的部分的请求,在操作434a处,处理逻辑可通过在存取一或多个物理地址范围之前参考改变日志来检索所请求部分。举例来说,在一些实施例中,处理逻辑可从当前状态日志检索处于其当前状态的所请求部分。在其它实施例中,处理逻辑可将来自当前状态日志的所请求部分的增量信息与处于其先前状态的所请求部分组合,以生成所请求部分的当前状态,并且将所请求部分的当前状态提供到生产者。替代地,响应于在操作432a处确定未从生产者主机应用程序接收到对读取数据对象的部分的请求且实际上从消费者主机应用程序接收到所述请求,在操作436a处,处理逻辑可从由物理地址范围(例如,快照的地址范围)中的地址识别的位置检索所请求部分。
在类似实施例中,改变日志可为先前状态日志。因此,在这些实施例中,在操作431b处,处理逻辑可记录条目,所述条目分别包含反映数据对象的部分的先前状态的信息。举例来说,条目可分别包含数据对象的处于其先前状态的部分。在另一实例中,条目可分别包含数据对象的部分的增量信息。
在这些实施例中,在操作432b处,处理逻辑可确定是否从生产者主机应用程序接收到对读取数据对象的部分的请求。响应于在操作432b处确定从生产者主机应用程序接收到对读取数据对象的部分的请求,在操作434b处,处理逻辑可从由物理地址范围(例如,快照的地址范围)中的地址识别的位置检索所请求部分。替代地,响应于在操作432b处确定未从生产者主机应用程序接收到对读取数据对象的部分的请求且实际上从消费者主机应用程序接收到所述请求,在操作436b处,处理逻辑可通过在存取一或多个物理地址范围之前参考改变日志来检索所请求部分。举例来说,在一些实施例中,处理逻辑可从先前状态日志检索处于其先前状态的所请求部分。在其它实施例中,处理逻辑可将来自先前状态日志的所请求部分的增量信息与处于其当前状态的所请求部分组合,以恢复所请求部分的先前状态,并且将所请求部分的先前状态提供到生产者。在一些实施例中,处理逻辑可另外修改数据对象的部分,并且创建存储器装置上的数据对象的后续快照。下文参考图5解释关于数据对象的修改以及关于后续快照的创建和映射的额外细节。
图5是根据本公开的一些实施例的用于在存储器装置上创建新快照的示例方法500的流程图。方法500可由处理逻辑执行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令),或其组合。在一些实施例中,方法500由图1的快照管理组件113执行。虽然以特定序列或次序来展示,但除非另有指定,否则可修改过程的次序。因此,所示出实施例应仅作为实例理解,并且所示出过程可以不同次序执行,并且一些过程可并行执行。另外,可在各种实施例中省略一或多个过程。因此,并非每一个实施例中都需要全部过程。其它过程流程是可能的。
在若干实施例中,在操作520处,处理逻辑可修改数据对象的部分。在一些实施例中,在操作522处,处理逻辑可将反映对数据对象的部分的改变的信息存储在改变日志条目中,然后在操作524处,使用由记录在改变日志中的条目反映的改变来修改数据对象。在其它实施例中,在操作521处,处理逻辑可将反映数据对象的部分的先前状态的信息存储在不同位置中(例如,在改变日志条目中),然后在操作523处,编辑由一或多个物理地址范围中(例如,数据对象的物理地址范围中)的物理地址识别的对应位置中的数据对象的部分。
在一或多个数据对象部分的修改导致数据对象的部分存储在存储器装置上的与在其部分的修改之前数据对象存储的物理地址范围集合的不同的物理地址范围集合中的情况下,在操作526处,处理逻辑可修改与对象标识符相关联的一或多个物理地址范围(例如,在数据结构的元数据项中)以生成一个或多个经修改物理地址范围(即,经修改数据对象的物理地址范围)。在一些实施例中,在操作528处,处理逻辑可使对象标识符与不同快照标识符相关联(例如,在数据结构的元数据项中)以限定存储器装置上的对象的后续快照。因此,在操作530处,处理逻辑可将识别存储后续快照的数据的相应位置的一或多个经修改物理地址范围映射到消费者主机应用程序的对应虚拟地址范围。
图6示出计算机系统600的示例机器,在所述示例机器内可执行用于使机器执行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统600可对应于主机系统(例如,图1的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1的存储器子系统110)或可用于执行控制器的操作(例如,执行操作系统以执行对应于图1的快照管理组件113的操作)。在替代实施例中,机器可连接(例如,联网)到LAN、内联网、外联网和/或因特网中的其它机器。机器可作为对等(或分布式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中进行操作。
机器可为个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络器具、服务器、网络路由器、交换机或桥接器,或能够执行(依序或以其它方式)指定待由所述机器采取的动作的指令集的任何机器。此外,虽然示出了单个机器,但术语“机器”还应被认为包含机器的任何集合,所述机器单独地或共同地执行指令集(或多个指令集)以执行本文中所论述的方法中的任何一或多种。
示例计算机系统600包含经由总线630彼此通信的处理装置602、主存储器604(例如,只读存储器(ROM)、快闪存储器、动态随机存取存储器(DRAM),例如同步DRAM(SDRAM)或RDRAM等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(SRAM)等)和数据存储系统618。
处理装置602可表示一或多个通用处理装置,例如微处理器、中央处理单元等。更具体地,处理装置可为复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器,或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602还可为一或多个专用处理装置,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理装置602被配置成执行用于执行本文中所论述的操作和步骤的指令626。计算机系统600可进一步包含网络接口装置608以通过网络620通信。
数据存储系统618可包含机器可读存储媒体624(也被称作计算机可读媒体),其上存储有一或多个指令集626或体现本文中所描述的方法或功能中的任何一或多个的软件。指令626还可在其由计算机系统600执行期间完全或至少部分地驻存在主存储器604内和/或处理装置602内,主存储器604和处理装置602还构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图1的存储器子系统110。
在一个实施例中,指令626包含用于实施对应于SMC(例如,图1的快照管理组件113和分别图3、4和5的方法300、400和500)的功能性的指令。虽然在示例实施例中将机器可读存储媒体624展示为单个媒体,但术语“机器可读存储媒体”应被认为包含存储一或多个指令集的单个媒体或多个媒体。术语“机器可读存储媒体”还应被认为包含能够存储或编码供机器执行的指令集且使机器执行本公开的方法中的任何一或多种的任何媒体。因此,术语“机器可读存储媒体”应被认为包含但不限于固态存储器、光学媒体和磁性媒体。
已依据计算机存储器内的数据位的操作的算法和符号表示呈现了先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用于将其工作的主旨最有效地传达给所属领域的其他技术人员的方式。算法在此处且一般被认为是产生所要结果的操作的自洽序列。操作是要求对物理数量进行物理操控的操作。这些数量通常但未必呈能够被存储、组合、比较和以其它方式操控的电气或磁信号的形式。有时,主要出于通用的原因,已证明将这些信号称为位、值、元件、符号、字符、术语、编号等是方便的。
然而,应牢记,所有这些和类似术语应与适当物理数量相关联,并且仅仅是应用于这些数量的方便标签。本公开可指操控和变换计算机系统的寄存器和存储器内的表示为物理(电子)数量的数据为计算机系统存储器或寄存器或其它此类信息存储系统内的类似地表示为物理数量的其它数据的计算机系统或类似电子计算装置的动作和过程。
本公开还涉及用于执行本文中的操作的设备。此设备可出于所需目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。此类计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘(包含软盘、光盘、CD-ROM和磁性光盘)、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,它们各自耦合到计算机系统总线。
本文中所呈现的算法和显示器在本质上并不与任何特定计算机或其它设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或其可证明构造用于执行所述方法更加专用的设备是方便的。将如下文描述中所阐述的那样呈现多种这些系统的结构。另外,不参考任何特定编程语言来描述本公开。应了解,多种编程语言可用于实施如本文中所描述的本公开的教示。
本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于对计算机系统(或其它电子装置)进行编程以执行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。
在前述说明书中,已参考其具体示例实施例描述了本公开的实施例。将显而易见的是,可在不脱离如所附权利要求书中所阐述的本公开的实施例的更广精神和范围的情况下对本公开进行各种修改。因此,应在说明性意义上而不是限制性意义上看待说明书和图式。
Claims (20)
1.一种系统,其包括:
存储器装置,其包括字节可寻址存储器;以及
处理装置,其以操作方式与所述存储器装置耦合以执行包括以下各项的操作:
从第一主机应用程序接收要存储在所述存储器装置上的数据对象;
在第一元数据项中,使对象标识符与识别将所述数据对象存储在所述存储器装置上的相应位置的一或多个物理地址范围相关联;
在第二元数据项中,使所述对象标识符与快照标识符相关联以限定所述存储器装置上的所述数据对象的快照;
将所述一或多个物理地址范围映射到第二主机应用程序的虚拟地址空间中的对应虚拟地址范围;
响应于从所述第一主机应用程序接收到对写入到所述数据对象的请求,将反映所述第一主机应用程序对所述数据对象作出的改变的条目记录在与所述快照相关联的改变日志中;以及
响应于从所述第一主机应用程序接收到对读取所述数据对象的部分的请求,从所述改变日志的所述条目检索所述部分。
2.根据权利要求1所述的系统,其中所述处理装置将进一步执行包括以下各项的操作:
响应于从所述第二主机应用程序接收到对读取所述数据对象的部分的请求,从所述一或多个物理地址范围检索所述部分。
3.根据权利要求1所述的系统,其中所述处理装置将进一步执行包括以下各项的操作:
将由记录在所述改变日志中的所述条目反映的所述改变应用于所述数据对象;以及
通过所述第二元数据项,使所述对象标识符与第二快照标识符相关联以限定所述存储器装置上的所述数据对象的后续快照。
4.根据权利要求3所述的系统,其中所述处理装置将进一步执行包括以下各项的操作:
在所述第一元数据项中,修改与所述对象标识符相关联的所述一或多个物理地址范围以生成一个或多个经修改物理地址范围;以及
将识别包含所述数据对象的所述后续快照的数据的相应位置的所述经修改物理地址范围映射到所述第二主机应用程序的所述对应虚拟地址范围。
5.根据权利要求1所述的系统,其中所述第一主机应用程序正在第一主机系统上运行,并且所述第二主机应用程序正在第二主机系统上运行。
6.根据权利要求1所述的系统,其中所述存储器装置是组构附接的存储器装置。
7.根据权利要求1所述的系统,其中所述处理装置将进一步执行包括以下各项的操作:
响应于从所述第二主机应用程序接收到写入请求,将指示所述写入请求未被接受的通知传输到所述第二主机应用程序。
8.根据权利要求1所述的系统,其中所述一或多个物理地址范围不连续。
9.一种包括指令的非暂时性计算机可读存储媒体,所述指令在由处理装置执行时使所述处理装置执行包括以下各项的操作:
从第一主机应用程序接收要存储在存储器装置上的数据对象,所述存储器装置包括字节可寻址存储器;
在第一元数据项中,使对象标识符与识别将所述数据对象存储在所述存储器装置上的相应位置的一或多个物理地址范围相关联;
在第二元数据项中,使所述对象标识符与快照标识符相关联以限定所述存储器装置上的所述数据对象的快照;
将所述一或多个物理地址范围映射到第二主机应用程序的虚拟地址空间中的对应虚拟地址范围;
响应于从所述第一主机应用程序接收到对写入到所述数据对象的请求,将反映所述第一主机应用程序对所述数据对象作出的改变的条目记录在与所述快照相关联的改变日志中;以及
响应于从所述第一主机应用程序接收到对读取所述数据对象的部分的请求,从所述改变日志的所述条目检索所述部分。
10.根据权利要求9所述的非暂时性计算机可读存储媒体,其中所述指令进一步使所述处理装置执行包括以下各项的操作:
响应于从所述第二主机应用程序接收到对读取所述数据对象的部分的请求,从所述一或多个物理地址范围检索所述部分。
11.根据权利要求9所述的非暂时性计算机可读存储媒体,其中所述指令进一步使所述处理装置执行包括以下各项的操作:
将由记录在所述改变日志中的所述条目反映的所述改变应用于所述数据对象;以及
通过所述第二元数据项,使所述对象标识符与第二快照标识符相关联以限定所述存储器装置上的所述数据对象的后续快照。
12.根据权利要求11所述的非暂时性计算机可读存储媒体,其中所述指令进一步使所述处理装置执行包括以下各项的操作:
在所述第一元数据项中,修改与所述对象标识符相关联的所述一或多个物理地址范围以生成一个或多个经修改物理地址范围;以及
将识别包含所述数据对象的所述后续快照的数据的相应位置的所述经修改物理地址范围映射到所述第二主机应用程序的所述对应虚拟地址范围。
13.根据权利要求9所述的非暂时性计算机可读存储媒体,其中所述第一主机应用程序正在第一主机系统上运行,并且所述第二主机应用程序正在第二主机系统上运行。
14.根据权利要求9所述的非暂时性计算机可读存储媒体,其中所述存储器装置是组构附接的存储器装置。
15.根据权利要求9所述的非暂时性计算机可读存储媒体,
其中所述指令进一步使所述处理装置执行包括以下各项的操作:
响应于从所述第二主机应用程序接收到写入请求,将指示所述写入请求未被接受的通知传输到所述第二主机应用程序。
16.根据权利要求9所述的非暂时性计算机可读存储媒体,其中所述一或多个物理地址范围不连续。
17.一种方法,其包括:
从第一主机应用程序接收要存储在存储器装置上的数据对象,所述存储器装置包括字节可寻址存储器;
通过第一元数据项,使对象标识符与识别将所述数据对象存储在所述存储器装置上的相应位置的一或多个物理地址范围相关联;
通过第二元数据项,使所述对象标识符与快照标识符相关联以限定所述存储器装置上的所述数据对象的快照;
将所述一或多个物理地址范围映射到第二主机应用程序的虚拟地址空间中的对应虚拟地址范围;
响应于从所述第一主机应用程序接收到对写入到所述数据对象的请求,将反映所述第一主机应用程序对所述数据对象作出的改变的条目记录在与所述快照相关联的改变日志中;以及
响应于从所述第二主机应用程序接收到对读取所述数据对象的部分的请求,从所述改变日志检索所述部分。
18.根据权利要求17所述的方法,其进一步包括:
响应于从所述第一主机应用程序接收到对读取所述数据对象的部分的请求,从所述一或多个物理地址范围检索所述部分。
19.根据权利要求17所述的方法,其进一步包括:
在所述第一元数据项中,修改与所述对象标识符相关联的所述一或多个物理地址范围以生成一个或多个经修改物理地址范围;
在所述第二元数据项中,使所述对象标识符与不同快照标识符相关联以限定所述存储器装置上的所述数据对象的后续快照;以及
将识别包含所述数据对象的所述后续快照的数据的相应位置的所述经修改物理地址范围映射到所述第二主机应用程序的所述对应虚拟地址范围。
20.根据权利要求17所述的方法,其进一步包括:
响应于从所述第二主机应用程序接收到写入请求,将指示所述写入请求未被接受的通知传输到所述第二主机应用程序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/895,918 | 2022-08-25 | ||
US17/895,918 US12073097B2 (en) | 2022-08-25 | 2022-08-25 | Shared memory snapshots |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117632781A true CN117632781A (zh) | 2024-03-01 |
Family
ID=89999579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311073613.3A Pending CN117632781A (zh) | 2022-08-25 | 2023-08-24 | 用于共享存储器快照的系统、非暂时性计算机可读存储媒体和方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US12073097B2 (zh) |
CN (1) | CN117632781A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117873405A (zh) * | 2024-03-11 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9639426B2 (en) * | 2014-01-24 | 2017-05-02 | Commvault Systems, Inc. | Single snapshot for multiple applications |
US20200026611A1 (en) * | 2018-07-23 | 2020-01-23 | International Business Machines Corporation | Updating a snapshot of a fully allocated storage segment based upon data therewithin |
-
2022
- 2022-08-25 US US17/895,918 patent/US12073097B2/en active Active
-
2023
- 2023-08-24 CN CN202311073613.3A patent/CN117632781A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117873405A (zh) * | 2024-03-11 | 2024-04-12 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20240069758A1 (en) | 2024-02-29 |
US12073097B2 (en) | 2024-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113785278B (zh) | 用于避免并发写入流之间冲突的动态数据放置 | |
CN114730300B (zh) | 对区命名空间存储器的增强型文件系统支持 | |
JP2022548642A (ja) | タイプ付けされていないメモリアクセスのタイプ付けされているメモリアクセスに対するマッピング | |
US12045118B2 (en) | Node coherency for storage related data | |
JP2022548886A (ja) | メモリ名前空間へデータをバインドするためのメモリシステム | |
US20240028239A1 (en) | Zone block staging component for a memory sub-system with zoned namespace | |
CN112948284A (zh) | 高速缓存媒体中的动态存取粒度 | |
CN113961142B (zh) | 包含各种时延和容量的存储器装置的存储器子系统 | |
CN117632781A (zh) | 用于共享存储器快照的系统、非暂时性计算机可读存储媒体和方法 | |
US12111761B2 (en) | Memory cache management based on storage capacity for parallel independent threads | |
US12073112B2 (en) | Enabling memory access transactions for persistent memory | |
CN112805692A (zh) | 混合式双列直插式存储器模块中的高速缓存操作 | |
US11842059B2 (en) | Memory sub-system address mapping | |
US11636047B2 (en) | Hash operations in memory for data sharing | |
US11693594B2 (en) | Zone striped zone namespace memory | |
CN113360088B (zh) | 基于硬件的相干性检查技术 | |
US11675695B2 (en) | Namespace management for memory sub-systems | |
CN114303137A (zh) | 使用主机存储器缓冲器的存储器叠加 | |
US11829646B2 (en) | Memory device performance based on storage traffic pattern detection | |
CN113126903B (zh) | 用于在存储器接口中实现写后读命令的系统和方法 | |
CN115827689A (zh) | 数据库持久化 | |
WO2024197080A1 (en) | Managing data placement for direct assigned virtual machines in a memory sub-system | |
CN118092786A (zh) | 可作为存储器装置附接的数据存储装置的可用存储器的识别 | |
CN115843379A (zh) | 用来改进顺序存储器命令性能的存储器命令聚合 | |
CN113064548A (zh) | 存储器子系统中的逻辑到物理页转译中的相干性问题解决方案 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |