CN111240840B - 基于一对多页面映射的非易失内存数据一致性更新方法 - Google Patents
基于一对多页面映射的非易失内存数据一致性更新方法 Download PDFInfo
- Publication number
- CN111240840B CN111240840B CN202010020369.4A CN202010020369A CN111240840B CN 111240840 B CN111240840 B CN 111240840B CN 202010020369 A CN202010020369 A CN 202010020369A CN 111240840 B CN111240840 B CN 111240840B
- Authority
- CN
- China
- Prior art keywords
- nonvolatile
- memory
- management module
- dram cache
- nvram
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种基于一对多页面映射的非易失内存数据一致性更新方法,目的是解决双倍非易失内存写操作开销。技术方案是构建由动态非易失内存分配模块、更新周期管理模块、访存监控模块、非易失数据版本管理模块组成的非易失内存一致性更新***,为用户应用程序提供动态非易失内存分配/释放接口,为每个非易失内存对象维护1个DRAM缓存和2个非易失备份。非易失数据版本管理模块将DRAM缓存的内容一致性地写入到与DRAM缓存页面对应的非易失备份页面,一致性更新过程中仅针对非易失内存对象的一个非易失备份进行更新操作,而另一个非易失备份作为故障时的一致性数据备份。采用本发明对非易失内存进行一致性更新操作只引入了对非易失内存的单次写入。
Description
技术领域
本发明涉及计算机***软件领域,尤其指以一种一对多内存页面映射维护非易失内存数据一致性的方法。
背景技术
当前主流计算机***的存储***,普遍可以划分为主存和辅存两个层次。主存设备(如DRAM)的主要特点是支持字节粒度寻址、访问速度快、数据断电后丢失,而辅存设备(如磁盘)的特点是仅支持粗粒度访问(如以数据块为单位)、访问速度慢、数据非易失。随着计算机计算性能的提升和***规模的扩大,上述存储层次的约束使存储***逐渐成为***综合性能的瓶颈。在上述趋势下,新型存储器件非易失内存(NVRAM)在近年来得到迅速发展。NVRAM兼具传统主存与辅存设备的优点,具备支持字节粒度寻址、存储密度大、数据非易失等技术特性,且访问速度与传统主存设备相当。以NVRAM替代传统主存设备,使得计算机***可以在主存层次实现数据非易失。
而对NVRAM数据的更新操作,面临部分写和乱序写两大问题。部分写是指写操作因***故障被意外中止而只完成了对目标位置的部分写入。在***重启后,被部分更新的非易失数据处于一种混乱的逻辑状态,即非一致性状态。乱序写是当前主流处理器的固有属性,是指多条写主存操作写入主存的顺序相对程序逻辑顺序不一致。在传统DRAM主存架构下,DRAM仅仅作为非易失存储介质的高速缓存,***掉电后DRAM中的数据会全部丢失,上述部分写和乱序写不会对***重启后的程序逻辑产生任何影响。而在非易失主存架构下,上述乱序的中间状态在***重启后依然对程序可见,而这种乱序的中间状态,对程序逻辑而言是一种非一致性的状态。为确保非易失主存数据的可用性,***软件需要保证在***重启后,非易失主存数据处在正确的逻辑状态,即一致性状态(consistent)。
现有的维护非易失数据一致性的方法主要分为以下三类:第一类方法是借助传统的文件***接口,将NVRAM作为块设备来访问。此类方法的局限性在于必须以块(如4KB)为单位读写NVRAM,无法利用NVRAM字节可寻址的灵活性。第二类方法是依赖程序设计人员,显式地维护非易失日志,确保***出现故障时,非易失数据始终可以通过日志恢复到一致性状态。依据日志内容,非易失日志方法可分类为撤销日志(undo log)方法和重做日志(redolog)方法。在对某一非易失目标地址A进行修改前,撤销日志方法是将地址A的当前内容a写入非易失日志,然后将要写入地址A的内容a’写入地址A;而重做日志方法是将要写入地址A的内容a’写入非易失日志,然后再将a’写入地址A。在故障恢复过程中,采用撤销日志方法可将相应的非易失地址回滚至其被修改前的一致性状态;采用重做日志方法则是重新执行被故障中断的更新操作(如果写a’失败,用重做日志中的a’再写一遍。),使目标地址达到一个新的一致性状态。相比于利用传统的文件***接口,日志机制可以对NVRAM实现字节粒度的一致性更新。然而,日志机制需要为程序中的每一个写访存操作建立相应的日志项,因此加重了程序编写的负担。此外,日志机制先写非易失日志、再写目标地址非易失数据这一工作流程,引入了对NVRAM的双倍写入开销。与此同时,在日志机制下,需要通过使用内存栅栏指令(如x86架构下的mfence指令)显式地描述对日志的非易失写和对目标非易失地址的写操作之间的顺序约束,强制CPU及编译器严格按照一定的顺序执行访问内存的操作,这一点引入了更多的性能开销。第三类方法是通过软件库向用户程序提供NVRAM的一致性更新接口。而此类非易失编程库的内部实现,多数依旧依赖于日志机制,因此仍然无法避免对NVRAM引入双倍写入的开销及顺序性约束开销。
发明内容
本发明要解决的技术问题是,提供一种基于一对多页面映射的非易失内存数据一致性更新方法,降低现有的基于日志的数据一致性更新方法带来的双倍非易失内存写操作开销以及由日志数据和原始数据之间的写入顺序约束引起的性能开销,以一种对程序编写人员透明的方式监控上层应用软件对非易失内存的写访问,降低传统软件库中要求程序员显式地封装相应非易失访存代码的编程负担。
本发明的核心思想是,通过构建非易失内存一致性更新***,维护非易失数据的一致性。整体而言,本发明的非易失内存一致性更新***为用户应用程序提供动态非易失内存分配/释放(pmalloc(size)和pfree(ptr))接口,使用户应用程序通过pmalloc接口获得非易失内存资源,通过pfree接口释放非易失内存资源。pmalloc接口为用户应用程序申请的非易失内存资源建立DRAM缓存,并周期性地暂停用户应用程序,将DRAM缓存内容一致性地更新至非易失内存。上述一致性更新过程对用户应用程序完全透明。用户应用程序只需要显式地申请非易失内存资源,而对非易失内存资源的读写访问方法与访问传统动态内存资源的方法一致,编程简单。本发明的非易失内存一致性更新***为用户应用程序的每个动态非易失内存对象(即用户应用程序通过pmalloc(size)申请存储在NVRAM中的数据,数据的大小为size,这些数据需要进行一致性维护)维护1个DRAM缓存和2个非易失备份。用户应用程序直接与动态非易失内存对象的DRAM缓存交互,并不直接访问非易失备份。非易失内存一致性更新***的非易失数据版本管理模块负责将DRAM缓存的内容一致性地写入到与DRAM缓存页面对应的非易失备份页面。在每次一致性更新过程中,非易失内存一致性更新***仅针对动态非易失内存对象的一个非易失备份进行更新操作,而另一个非易失备份作为***故障时的一致性数据备份。采用本发明对非易失内存进行一致性更新操作只引入了对非易失内存的单次写入。
本发明的技术方案包括以下步骤:
第一步,构建非易失内存一致性更新***,非易失内存一致性更新***以动态链接库的形式发布给用户应用程序。非易失内存一致性更新***由动态非易失内存分配模块、更新周期管理模块、访存监控模块、非易失数据版本管理模块组成。
动态非易失内存分配模块与访存监控模块、非易失数据版本管理模块相连,动态非易失内存分配模块从用户应用程序接收动态非易失内存分配(即pmalloc(size))请求或释放(即pfree(ptr))请求。
动态非易失内存分配模块由动态非易失内存分配器、一个DRAM缓存资源池和两个与DRAM缓存资源池同等大小的非易失内存NVRAM(命名为NVRAM非易失备份1和NVRAM非易失备份2)组成。使得DRAM缓存资源池中每个内存页面在NVRAM非易失备份1和NVRAM非易失备份2分别有1个NVRAM非易失备份页面。
动态非易失内存分配器与DRAM缓存资源池、NVRAM非易失备份1、NVRAM非易失备份2、访存监控模块、非易失数据版本管理模块相连。动态非易失内存分配器从用户应用程序接收pmalloc(size)请求或pfree(ptr)请求,根据pmalloc(size)请求动态分配大小为size的动态非易失内存对象(由1个位于DRAM缓存资源池中大小为size的DRAM缓存对象及2个分别位于NVRAM非易失备份1和NVRAM非易失备份2中的大小为size的NVRAM非易失备份对象组成),根据pfree(ptr)请求动态释放ptr指向的DRAM缓存对象(ptr为用户请求释放的DRAM缓存对象的指针)及与DRAM缓存对象相对应的2个NVRAM非易失备份对象;将动态内存资源更新消息发送给非易失数据版本管理模块、访存监控模块。
访存监控模块是决定将哪些DRAM缓存资源池的内存页写回至非易失内存NVRAM(即NVRAM非易失备份1或NVRAM非易失备份2)的软件模块。访存监控模块与动态非易失内存分配模块、非易失数据版本管理模块相连。访存监控模块基于内存写保护机制监控用户应用程序对DRAM缓存资源池的写操作,获取被用户应用程序修改的DRAM缓存页的页面地址集合(即待备份页面地址集合),当从非易失数据版本管理模块接收到页面地址集合查询请求时,将待备份页面地址集合发送至非易数据版本管理模块。
更新周期管理模块是决定何时将缓存于DRAM缓存资源池中的非易失内存对象的修改内容写回至NVRAM的软件模块。更新周期管理模块与非易失数据版本管理模块相连。更新周期管理模块以指定的时间间隔T(10ms-1000ms),周期性地中断用户应用程序,使用户应用程序处于“暂停执行”的状态,不会产生读写操作而“污染”正在被备份的DRAM缓存数据。
当用户应用程序被中断时,更新周期管理模块向非易失数据版本管理模块发送一致性更新请求,触发非易失数据版本管理模块执行一致性更新操作;
当更新周期管理模块从非易失数据版本管理模块接收到一致性更新结束消息时,表明非易失数据版本管理模块已完成一致性更新操作。更新周期管理模块恢复被中断的用户应用程序。
非易失数据版本管理模块与动态非易失内存分配模块、更新周期管理模块、访存监控模块相连。非易失数据版本管理模块维护DRAM缓存资源池中的DRAM缓存页面与NVRAM中页面的映射关系。非易失数据版本管理模块从动态非易失内存分配器接收动态内存资源更新消息,获取DRAM缓存资源池和NVRAM非易失备份的起始地址。非易失数据版本管理模块为DRAM缓存资源池中的每个DRAM缓存页维护分别指向NVRAM非易失备份1和NVRAM非易失备份2的映射。非易失数据版本管理模块以主映射和副映射区分这两个映射关系。非易失数据版本管理模块从更新周期管理模块接收一致性更新请求,决策何时进行一致性更新。非易失数据版本管理模块向访存监控模块发送页面地址集合查询请求,从访存监控模块接收待备份页面地址集合,将待备份页面地址集合中的每个DRAM缓存页拷贝至主映射指向的NVRAM非易失备份,并将待备份页面地址集合中的每个DRAM缓存页的主映射和副映射进行切换。
第二步,用户应用程序加载非易失内存一致性更新***。非易失内存一致性更新***执行初始化操作,方法是:
2.1访存监控模块初始化。访存监控模块利用操作***的信号处理函数(如Linux操作***下的signal函数),向操作***注册自定义的页面访问异常信号处理函数。
2.2更新周期管理模块初始化。更新周期管理模块利用操作***的信号处理函数(如Linux操作***下的signal函数),向操作***注册自定义的时钟定时信号处理函数。
2.3动态非易失内存分配器通过操作***的内存映射接口(如Linux操作***的mmap接口)向操作***申请连续的大小为EGB的DRAM虚拟内存资源作为初始的DRAM缓存资源池,E要求大于等于1。
2.4动态非易失内存分配器通过操作***的内存映射接口(如Linux操作***的mmap接口)分别向操作***申请两块连续的大小为EGB的NVRAM虚拟内存资源作为初始的NVRAM非易失备份1和NVRAM非易失备份2;
2.5动态非易失内存分配模块将DRAM缓存资源池、NVRAM非易失备份1和NVRAM非易失备份2的起始地址封装为动态内存资源更新通知消息,分别发送至非易失数据版本管理模块和访存监控模块;
2.6非易失数据版本管理模块和访存监控模块同时接收动态内存资源更新通知消息;非易失数据版本管理模块初始化从DRAM缓存资源池到两个NVRAM非易失备份的映射关系,将DRAM缓存资源池到NVRAM非易失备份1的映射记为主映射,将DRAM缓存资源池到NVRAM非易失备份2的映射记为副映射;同时访存监控模块从动态内存资源更新通知消息中获得DRAM缓存资源池的起始地址信息,转2.7;
2.7更新周期管理模块读取用户指定的时间间隔T(T为10ms-1000ms)。
第三步,用户应用程序执行,一致性更新***监控用户应用程序对动态非易失内存NVRAM的写访问操作,并将写访问操作的结果缓存于DRAM缓存资源池,并周期性地将DRAM缓存资源池中缓存的对NVRAM的修改写回至NVRAM。具体方法是:
3.1更新周期管理模块启动操作***的时钟定时信号触发函数(如Linux操作***的ualarm(T)函数,,以时间间隔T在用户应用程序执行过程中周期性触发时钟定时信号(如Linux操作***的SIGALRM),从而中断用户应用程序执行)。例如启动ualarm(T)后,用户应用程序仍正常执行,但经过时长T后,则被SIGALRM中断。
3.2访存监控模块对DRAM缓存资源池中的所有DRAM缓存页面进行写保护,即利用操作***的写保护函数(如Linux操作***的mprotect()函数)将DRAM缓存资源池中的每个DRAM缓存页面的访问权限设置为只读,访存监控模块将待备份页面集合初始化为空集合。
3.3动态非易失内存分配器监控用户应用程序是否发送pmalloc(size)请求(请求中包含参数size,即请求非易失内存对象的大小);若是,转3.3.1;否则,转3.4;
3.3.1动态非易失内存分配器根据pmalloc(size)请求中的参数size响应用户应用程序的动态非易失内存资源请求,当动态内存资源大于等于size时,转3.3.2;当空余动态内存资源小于size时,转3.3.3;
3.3.2动态非易失内存分配器分别在DRAM缓存资源池和两个NVRAM非易失备份中,为用户应用程序分配大小为size的DRAM缓冲对象(VOBJ)和NVRAM非易失对象(NVOBJ1,NVOBJ2),将VOBJ的地址返回给用户应用程序,NVOBJ1及NVOBJ2的地址对用户不可见,转3.4;
3.3.3动态非易失内存分配器通过操作***提供的内存映射接口(如Linux操作***下的mmap接口)向操作***分别申请大小为BKB的连续的DRAM缓存、NVRAM非易失备份1和NVRAM非易失备份2;并向非易失数据版本管理模块和访存监控模块发送动态内存资源更新通知消息;B为2的整数次幂,一般大于等于26且小于220。
3.3.4非易失数据版本管理模块接收动态内存资源更新通知消息,非易失数据版本管理模块初始化从DRAM缓存资源池到两个NVRAM非易失备份的映射关系,将DRAM缓存资源池到NVRAM非易失备份1的映射记为主映射,将DRAM缓存资源池到NVRAM非易失备份2的映射记为副映射;同时,访存监控模块接收动态内存资源更新通知消息,根据动态内存资源更新通知消息中包含的DRAM缓存资源池的起始地址信息对新申请的DRAM缓存资源执行写保护,转3.3.1(由于申请了新的动态内存资源,所以转3.3.1看是否能满足size的要求);
3.4动态非易失内存分配器监控用户应用程序是否发送pfree(ptr)请求(请求中包含参数ptr,即用户请求释放的动态非易失内存对象的DRAM缓存对象的指针)。若是,转3.4.1,否则转3.5;
3.4.1动态非易失内存分配器根据pfree请求中的参数ptr,从DRAM缓存资源池中释放掉ptr指向的DRAM缓存对象VOBJ,并从两个NVRAM非易失备份中释放与VOBJ相对应的NVOBJ1和NVOBJ2。NVRAM非易失备份的释放对用户应用程序不可见;转3.5;
3.5访存监控模块监测用户应用程序对动态非易失内存的写访问操作。用户应用程序对动态非易失内存对象的写操作将作用于DRAM缓存资源池。由于DRAM缓存资源池在3.2中已经被写保护(访问权限被设置为只读),若访存监控模块监测到用户应用程序对DRAM缓存资源池中的某个DRAM缓存页的首次写访问,则触发操作***写异常信号,转3.5.1;否则,转3.6;
3.5.1用户应用程序***作***中断,操作***将程序控制权转移至访存监控模块的页面访问异常信号处理函数;
3.5.2访存监控模块的页访问异常信号处理函数将产生访问异常的DRAM缓存页面地址(即用户应用程序试图执行写访问的DRAM缓存页面)记录至待备份页面集合,并将该页面的访问权限设置为可写;
3.5.3操作***将程序控制权重新转移至用户应用程序,用户应用程序从写异常被中断的位置继续执行,转3.6;
3.6更新周期管理模块监测用户应用程序是否***作***的时钟定时信号中断。若用户应用程序被时钟定时信号中断,操作***将程序控制权转移至更新周期管理模块的时钟定时信号处理函数,转3.6.1;否则,转3.3;
3.6.1时钟定时信号处理函数向非易失数据版本管理模块发送一致性更新请求;
3.6.2非易失数据版本管理模块向访存监控模块发送页面地址集合查询请求;
3.6.3访存监控模块将待备份页面地址集合发送给非易失数据版本管理模块;
3.6.4非易失数据版本管理模块将待备份页面地址集合中的每个DRAM缓存页拷贝至主映射指向的NVRAM非易失备份;
3.6.5非易失数据版本管理模块将待备份页面地址集合中的每个DRAM缓存页的主映射和副映射进行切换(即将DRAM内存页的主映射指向当前副映射指向的非易失备份页,同时将DRAM内存页的副映射指向当前主映射指向的非易失备份页),向时钟定时信号处理函数发送一致性更新过程结束通知;
3.6.6时钟定时信号处理函数接收一致性更新过程结束通知,时钟定时信号处理函数执行完毕,操作***将程序控制权重新转移至用户应用程序,转3.7。
3.7若用户应用程序执行完毕,转第四步;否则转3.2;
第四步,用户应用程序卸载非易失内存一致性更新***,结束。
采用本发明可以达到以下技术效果:
1.本发明第一步构建了一个完整的非易失内存一致性更新***,融合了动态非易失内存分配模块、访存监控模块、更新周期管理模块、非易失数据版本管理模块。本发明构建的非易失内存一致性更新***对用户应用程序透明,用户应用程序仅需通过pmalloc接口获得动态非易失内存资源,通过pfree接口释放动态非易失内存资源,无需显式地描述对非易失内存的读写访问,相较传统的非易失内存一致性更新***,编程负担大幅降低。
2.本发明第三步为每个非易失内存页面,维护一个DRAM缓存页面,将用户应用程序对NVRAM非易失内存的写访问缓存于DRAM内存,隔离用户应用程序与NVRAM非易失内存的交互。相较传统非易失内存一致性更新***,本发明无需用户应用程序显式地维护对非易失内存的读写操作顺序约束,提升了用户应用程序的执行效率。
3.本发明第三步采用双非易失备份技术替代传统的日志机制来维护非易失数据的一致性。相比于传统的日志机制,可降低对NVRAM非易失内存设备的写操作次数,延长NVRAM非易失内存设备的使用寿命。
附图说明
图1是本发明第一步构建的非易失内存一致性更新***的逻辑结构图;
图2是主副映射切换示意图;
图3是本发明的总体流程图。
具体实施方式
如图3所示,本发明包括以下步骤:
第一步,构建非易失内存一致性更新***,非易失内存一致性更新***以动态链接库的形式发布给用户应用程序。非易失内存一致性更新***如图1所示,由动态非易失内存分配模块、更新周期管理模块、访存监控模块、非易失数据版本管理模块组成。
动态非易失内存分配模块与访存监控模块、非易失数据版本管理模块相连,动态非易失内存分配模块从用户应用程序接收pmalloc(size)请求或pfree(ptr)请求。
动态非易失内存分配模块由动态非易失内存分配器、一个DRAM缓存资源池和两个与DRAM缓存资源池同等大小的非易失内存NVRAM(即NVRAM非易失备份1和NVRAM非易失备份2)组成。
动态非易失内存分配器与DRAM缓存资源池、NVRAM非易失备份1、NVRAM非易失备份2、访存监控模块、非易失数据版本管理模块相连。动态非易失内存分配器从用户应用程序接收pmalloc(size)请求或pfree(ptr)请求,根据pmalloc(size)请求动态分配大小为size的动态非易失内存对象(由1个位于DRAM缓存资源池中大小为size的DRAM缓存对象及2个分别位于NVRAM非易失备份1和NVRAM非易失备份2中的大小为size的NVRAM非易失备份对象组成),根据pfree(ptr)请求动态释放ptr指向的DRAM缓存对象及与DRAM缓存对象相对应的2个NVRAM非易失备份对象;将动态内存资源更新消息发送给非易失数据版本管理模块、访存监控模块。
访存监控模块是决定将哪些DRAM缓存资源池的内存页写回至非易失内存NVRAM(即NVRAM非易失备份1或NVRAM非易失备份2)的软件模块。访存监控模块与动态非易失内存分配模块、非易失数据版本管理模块相连。访存监控模块基于内存写保护机制监控用户应用程序对DRAM缓存资源池的写操作,获取被用户应用程序修改的DRAM缓存页的页面地址集合(即待备份页面地址集合),当从非易失数据版本管理模块接收到页面地址集合查询请求时,将待备份页面地址集合发送至非易数据版本管理模块。
更新周期管理模块是决定何时将缓存于DRAM缓存资源池中的非易失内存对象的修改内容写回至NVRAM的软件模块。更新周期管理模块与非易失数据版本管理模块相连。更新周期管理模块以指定的时间间隔T(10ms-1000ms),周期性地中断用户应用程序,使用户应用程序处于“暂停执行”的状态,不会产生读写操作而“污染”正在被备份的DRAM缓存数据。
当用户应用程序被中断时,更新周期管理模块向非易失数据版本管理模块发送一致性更新请求,触发非易失数据版本管理模块执行一致性更新操作;
当更新周期管理模块从非易失数据版本管理模块接收到一致性更新结束消息时,表明非易失数据版本管理模块已完成一致性更新操作。更新周期管理模块恢复被中断的用户应用程序。
非易失数据版本管理模块与动态非易失内存分配模块、更新周期管理模块、访存监控模块相连。非易失数据版本管理模块维护DRAM缓存资源池中的DRAM缓存页面与NVRAM中页面的映射关系。非易失数据版本管理模块从动态非易失内存分配器接收动态内存资源更新消息,获取DRAM缓存资源池和NVRAM非易失备份的起始地址。非易失数据版本管理模块为DRAM缓存资源池中的每个DRAM缓存页维护分别指向NVRAM非易失备份1和NVRAM非易失备份2的映射。非易失数据版本管理模块以主映射和副映射区分这两个映射关系。非易失数据版本管理模块从更新周期管理模块接收一致性更新请求,决策何时进行一致性更新。非易失数据版本管理模块向访存监控模块发送页面地址集合查询请求,从访存监控模块接收待备份页面地址集合,将待备份页面地址集合中的每个DRAM缓存页拷贝至主映射指向的NVRAM非易失备份,并将待备份页面地址集合中的每个DRAM缓存页的主映射和副映射进行切换。
第二步,用户应用程序加载非易失内存一致性更新***,非易失内存一致性更新***执行初始化操作,方法是:
2.1访存监控模块初始化。访存监控模块利用Linux操作***下的signal函数,向操作***注册自定义的页面访问异常信号处理函数。
2.2更新周期管理模块初始化。更新周期管理模块利用Linux操作***下的signal函数,向操作***注册自定义的时钟定时信号处理函数。
2.3动态非易失内存分配器通过Linux操作***的mmap接口向操作***申请连续的大小为1GB的DRAM虚拟内存资源作为初始的DRAM缓存资源池。
2.4动态非易失内存分配器通过Linux操作***的mmap接口分别向操作***申请两块连续的大小为1GB的NVRAM虚拟内存资源作为初始的NVRAM非易失备份1和NVRAM非易失备份2;
2.5动态非易失内存分配模块将DRAM缓存资源池、NVRAM非易失备份1和NVRAM非易失备份2的起始地址封装为动态内存资源更新通知消息,分别发送至非易失数据版本管理模块和访存监控模块;
2.6非易失数据版本管理模块和访存监控模块同时接收动态内存资源更新通知消息;非易失数据版本管理模块初始化从DRAM缓存资源池到两个NVRAM非易失备份的映射关系,将DRAM缓存资源池到NVRAM非易失备份1的映射记为主映射,将DRAM缓存资源池到NVRAM非易失备份2的映射记为副映射;同时访存监控模块从动态内存资源更新通知消息中获得DRAM缓存资源池的起始地址信息,转2.7;
2.7更新周期管理模块读取用户指定的时间间隔T。
第三步,用户应用程序执行,一致性更新***监控用户应用程序对动态非易失内存NVRAM的写访问操作,并将写访问操作的结果缓存于DRAM缓存资源池,并周期性地将DRAM缓存资源池中缓存的对NVRAM的修改写回至NVRAM。具体方法是:
3.1更新周期管理模块启动Linux操作***的ualarm(T)函数,以时间间隔T在用户应用程序执行过程中周期性触发Linux操作***的SIGALRM,从而中断用户应用程序执行)。启动ualarm(T)后,用户应用程序仍正常执行,但经过时长T后,则被SIGALRM中断。
3.2访存监控模块对DRAM缓存资源池中的所有DRAM缓存页面进行写保护,即利用Linux操作***的mprotect()函数将DRAM缓存资源池中的每个DRAM缓存页面的访问权限设置为只读,访存监控模块将待备份页面集合初始化为空集合。
3.3动态非易失内存分配器监控用户应用程序是否发送pmalloc(size)请求;若是,转3.3.1;否则,转3.4;
3.3.1动态非易失内存分配器根据pmalloc(size)请求中的参数size响应用户应用程序的动态非易失内存资源请求,当动态内存资源大于等于size时,转3.3.2;当空余动态内存资源小于size时,转3.3.3;
3.3.2动态非易失内存分配器分别在DRAM缓存资源池和两个NVRAM非易失备份中,为用户应用程序分配大小为size的DRAM缓冲对象(VOBJ)和NVRAM非易失对象(NVOBJ1,NVOBJ2),将VOBJ的地址返回给用户应用程序,NVOBJ1及NVOBJ2的地址对用户不可见,转3.4;
3.3.3动态非易失内存分配器通过Linux操作***下的mmap接口向操作***分别申请大小为64KB的连续的DRAM缓存、NVRAM非易失备份1和NVRAM非易失备份2;并向非易失数据版本管理模块和访存监控模块发送动态内存资源更新通知消息。
3.3.4非易失数据版本管理模块接收动态内存资源更新通知消息,非易失数据版本管理模块初始化从DRAM缓存资源池到两个NVRAM非易失备份的映射关系,将DRAM缓存资源池到NVRAM非易失备份1的映射记为主映射,将DRAM缓存资源池到NVRAM非易失备份2的映射记为副映射;同时,访存监控模块接收动态内存资源更新通知消息,根据动态内存资源更新通知消息中包含的DRAM缓存资源池的起始地址信息对新申请的DRAM缓存资源执行写保护,转3.3.1;
3.4动态非易失内存分配器监控用户应用程序是否发送pfree(ptr)请求(请求中包含参数ptr,即用户请求释放的动态非易失内存对象的DRAM缓存对象的指针)。若是,转3.4.1,否则转3.5;
3.4.1动态非易失内存分配器根据pfree请求中的参数ptr,从DRAM缓存资源池中释放掉ptr指向的DRAM缓存对象VOBJ,并从两个NVRAM非易失备份中释放与VOBJ相对应的NVOBJ1和NVOBJ2。NVRAM非易失备份的释放对用户应用程序不可见;转3.5;
3.5访存监控模块监测用户应用程序对动态非易失内存的写访问操作。用户应用程序对动态非易失内存对象的写操作将作用于DRAM缓存资源池。由于DRAM缓存资源池在3.2中已经被写保护(访问权限被设置为只读),若访存监控模块监测到用户应用程序对DRAM缓存资源池中的某个DRAM缓存页的首次写访问,则触发操作***写异常信号,转3.5.1;否则,转3.6;
3.5.1用户应用程序***作***中断,操作***将程序控制权转移至访存监控模块的页面访问异常信号处理函数;
3.5.2访存监控模块的页访问异常信号处理函数将产生访问异常的DRAM缓存页面地址(即用户应用程序试图执行写访问的DRAM缓存页面)记录至待备份页面集合,并将该页面的访问权限设置为可写;
3.5.3操作***将程序控制权重新转移至用户应用程序,用户应用程序从写异常被中断的位置继续执行,转3.6;
3.6更新周期管理模块监测用户应用程序是否***作***的时钟定时信号中断。若用户应用程序被时钟定时信号中断,操作***将程序控制权转移至更新周期管理模块的时钟定时信号处理函数,转3.6.1;否则,转3.3;
3.6.1时钟定时信号处理函数向非易失数据版本管理模块发送一致性更新请求;
3.6.2非易失数据版本管理模块向访存监控模块发送页面地址集合查询请求;
3.6.3访存监控模块将待备份页面地址集合发送给非易失数据版本管理模块;
3.6.4非易失数据版本管理模块将待备份页面地址集合中的每个DRAM缓存页拷贝至主映射指向的NVRAM非易失备份;
3.6.5非易失数据版本管理模块将待备份页面地址集合中的每个DRAM缓存页的主映射和副映射进行切换(即将DRAM内存页的主映射指向当前副映射指向的非易失备份页,同时将DRAM内存页的副映射指向当前主映射指向的非易失备份页,如图2所示,非易失数据版本管理模块为DRAM缓存资源池中的每个DRAM缓存页面维护2个分别指向NVRAM非易失备份1和NVRAM非易失备份2的页面映射关系,并以主映射和副映射区分这2个映射。假设切换前(即非易失内存一致性更新前)DRAM内存页的主映射指向NVRAM非易失备份1中的非易失内存页面1,DRAM内存页的副映射指向NVRAM非易失备份2中的非易失内存页面2。用户应用程序对动态非易失内存对象的更新内容缓存于DRAM缓存页面。非易失数据一致性更新***周期性地将DRAM缓存页面的内容拷贝至DRAM缓存页的主映射指向的NVRAM非易失内存页,而不对副映射指向的NVRAM非易失内存页作出任何修改。在将DRAM缓存内容写回到主映射NVRAM非易失备份之后(即非易失内存一致性更新后),非易失数据版本管理模块将当前主映射置为副映射,将当前副映射置为主映射)。向时钟定时信号处理函数发送一致性更新过程结束通知;
3.6.6时钟定时信号处理函数接收一致性更新过程结束通知,时钟定时信号处理函数执行完毕,操作***将程序控制权重新转移至用户应用程序,转3.7。
3.7若用户应用程序执行完毕,转第四步;否则转3.2;
第四步,用户应用程序卸载非易失内存一致性更新***,结束。
Claims (8)
1.一种基于一对多页面映射的非易失内存数据一致性更新方法,其特征在于包括以下步骤:
第一步,构建非易失内存一致性更新***,非易失内存一致性更新***以动态链接库的形式发布给用户应用程序;非易失内存一致性更新***由动态非易失内存分配模块、更新周期管理模块、访存监控模块、非易失数据版本管理模块组成;
动态非易失内存分配模块与访存监控模块、非易失数据版本管理模块相连,动态非易失内存分配模块从用户应用程序接收pmalloc(size)请求即动态非易失内存分配请求或pfree(ptr)请求即释放请求;
动态非易失内存分配模块由动态非易失内存分配器、一个DRAM缓存资源池和两个与DRAM缓存资源池同等大小的非易失内存NVRAM组成,两个与DRAM缓存资源池同等大小的非易失内存NVRAM命名为NVRAM非易失备份1和NVRAM非易失备份2;
动态非易失内存分配器与DRAM缓存资源池、NVRAM非易失备份1、NVRAM非易失备份2、访存监控模块、非易失数据版本管理模块相连;动态非易失内存分配器从用户应用程序接收pmalloc(size)请求或pfree(ptr)请求,根据pmalloc(size)请求动态分配大小为size的DRAM缓存资源池、NVRAM非易失备份1、NVRAM非易失备份2中的页面,根据pfree(ptr)请求动态释放ptr指向的DRAM缓存资源池中的DRAM缓存对象及2个NVRAM非易失备份中的非易失备份对象,ptr为用户请求释放的DRAM缓存对象的指针;将动态内存资源更新消息发送给非易失数据版本管理模块、访存监控模块;
访存监控模块是决定将哪些DRAM缓存资源池的内存页写回至非易失内存NVRAM的软件模块;访存监控模块与动态非易失内存分配模块、非易失数据版本管理模块相连;访存监控模块基于内存写保护机制监控用户应用程序对DRAM缓存资源池的写操作,获取被用户应用程序修改的DRAM缓存页的页面地址集合即待备份页面地址集合,当从非易失数据版本管理模块接收到页面地址集合查询请求时,将待备份页面地址集合发送至非易数据版本管理模块;
更新周期管理模块是决定何时将缓存于DRAM缓存资源池中的非易失内存对象的修改内容写回至NVRAM的软件模块;更新周期管理模块与非易失数据版本管理模块相连;更新周期管理模块以指定的时间间隔T,周期性地中断用户应用程序,使用户应用程序处于“暂停执行”的状态,不会产生读写操作而“污染”正在被备份的DRAM缓存数据;
当用户应用程序被中断时,更新周期管理模块向非易失数据版本管理模块发送一致性更新请求,触发非易失数据版本管理模块执行一致性更新操作;
当更新周期管理模块从非易失数据版本管理模块接收到一致性更新结束消息时,表明非易失数据版本管理模块已完成一致性更新操作,更新周期管理模块恢复被中断的用户应用程序;
非易失数据版本管理模块与动态非易失内存分配模块、更新周期管理模块、访存监控模块相连;非易失数据版本管理模块维护DRAM缓存资源池中的DRAM缓存页面与NVRAM中页面的映射关系;非易失数据版本管理模块从动态非易失内存分配器接收动态内存资源更新消息,获取DRAM缓存资源池和NVRAM的起始地址;非易失数据版本管理模块为DRAM缓存资源池中的每个DRAM缓存页维护分别指向NVRAM非易失备份1和NVRAM非易失备份2的映射;非易失数据版本管理模块以主映射和副映射区分这两个映射关系;非易失数据版本管理模块从更新周期管理模块接收一致性更新请求,决策何时进行一致性更新;非易失数据版本管理模块向访存监控模块发送页面地址集合查询请求,从访存监控模块接收待备份页面地址集合,将待备份页面地址集合中的每个DRAM缓存页拷贝至主映射指向的NVRAM非易失备份,并将待备份页面地址集合中的每个DRAM缓存页的主映射和副映射进行切换;
第二步,用户应用程序加载非易失内存一致性更新***,非易失内存一致性更新***执行初始化操作,方法是:
2.1访存监控模块初始化:访存监控模块利用操作***的信号处理函数,向操作***注册自定义的页面访问异常信号处理函数;
2.2更新周期管理模块初始化:更新周期管理模块利用操作***的信号处理函数,向操作***注册自定义的时钟定时信号处理函数;
2.3动态非易失内存分配器通过操作***的内存映射接口向操作***申请连续的大小为E GB的DRAM虚拟内存资源作为初始的DRAM缓存资源池,E要求大于等于1;
2.4动态非易失内存分配器通过操作***的内存映射接口分别向操作***申请两块连续的大小为E GB的NVRAM虚拟内存资源作为初始的NVRAM非易失备份1和NVRAM非易失备份2;
2.5动态非易失内存分配模块将DRAM缓存资源池、NVRAM非易失备份1和NVRAM非易失备份2的起始地址封装为动态内存资源更新通知消息,分别发送至非易失数据版本管理模块和访存监控模块;
2.6非易失数据版本管理模块和访存监控模块同时接收动态内存资源更新通知消息;非易失数据版本管理模块初始化从DRAM缓存资源池到两个NVRAM非易失备份的映射关系,将DRAM缓存资源池到NVRAM非易失备份1的映射记为主映射,将DRAM缓存资源池到NVRAM非易失备份2的映射记为副映射;同时访存监控模块从动态内存资源更新通知消息中获得DRAM缓存资源池的起始地址信息,转2.7;
2.7更新周期管理模块读取用户指定的时间间隔T;
第三步,用户应用程序执行,一致性更新***监控用户应用程序对动态非易失内存NVRAM的写访问操作,并将写访问操作的结果缓存于DRAM缓存资源池,并周期性地将DRAM缓存资源池中缓存的对NVRAM的修改写回至NVRAM,具体方法是:
3.1更新周期管理模块启动操作***的时钟定时信号触发函数,以时间间隔T在用户应用程序执行过程中周期性触发时钟定时信号,从而每隔时间间隔T中断用户应用程序;
3.2访存监控模块对DRAM缓存资源池中的所有DRAM缓存页面进行写保护,访存监控模块将待备份页面集合初始化为空集合;
3.3动态非易失内存分配器监控用户应用程序是否发送pmalloc(size)请求;若是,转3.3.1;否则,转3.4;
3.3.1动态非易失内存分配器根据pmalloc(size)请求中的参数size响应用户应用程序的动态非易失内存资源请求,当动态内存资源大于等于size时,转3.3.2;当空余动态内存资源小于size时,转3.3.3;
3.3.2动态非易失内存分配器分别在DRAM缓存资源池和两个NVRAM非易失备份中,为用户应用程序分配大小为size的DRAM缓冲对象VOBJ和NVRAM非易失对象NVOBJ1和NVOBJ2,将VOBJ的地址返回给用户应用程序,转3.4;
3.3.3动态非易失内存分配器通过操作***提供的内存映射接口向操作***分别申请大小为B KB的连续的DRAM缓存、NVRAM非易失备份1和NVRAM非易失备份2;并向非易失数据版本管理模块和访存监控模块发送动态内存资源更新通知消息;B为2的整数次幂;
3.3.4非易失数据版本管理模块接收动态内存资源更新通知消息,非易失数据版本管理模块初始化从DRAM缓存资源池到两个NVRAM非易失备份的映射关系,将DRAM缓存资源池到NVRAM非易失备份1的映射记为主映射,将DRAM缓存资源池到NVRAM非易失备份2的映射记为副映射;同时,访存监控模块接收动态内存资源更新通知消息,根据动态内存资源更新通知消息中包含的DRAM缓存资源池的起始地址信息对新申请的DRAM缓存资源执行写保护,转3.3.1;
3.4动态非易失内存分配器监控用户应用程序是否发送pfree(ptr)请求,若是,转3.4.1,否则转3.5;
3.4.1动态非易失内存分配器根据pfree请求中的参数ptr,从DRAM缓存资源池中释放掉ptr指向的DRAM缓存对象VOBJ,并从两个NVRAM非易失备份中释放与VOBJ相对应的NVOBJ1和NVOBJ2;转3.5;
3.5访存监控模块监测用户应用程序对动态非易失内存的写访问操作,若访存监控模块监测到用户应用程序对DRAM缓存资源池中的某个DRAM缓存页的首次写访问,则触发操作***写异常信号,转3.5.1;否则,转3.6;
3.5.1用户应用程序***作***中断,操作***将程序控制权转移至访存监控模块的页面访问异常信号处理函数;
3.5.2访存监控模块的页访问异常信号处理函数将产生访问异常的DRAM缓存页面地址即用户应用程序试图执行写访问的DRAM缓存页面记录至待备份页面集合,并将该页面的访问权限设置为可写;
3.5.3操作***将程序控制权重新转移至用户应用程序,用户应用程序从写异常被中断的位置继续执行,转3.6;
3.6更新周期管理模块监测用户应用程序是否***作***的时钟定时信号中断;若用户应用程序被时钟定时信号中断,操作***将程序控制权转移至更新周期管理模块的时钟定时信号处理函数,转3.6.1;否则,转3.3;
3.6.1时钟定时信号处理函数向非易失数据版本管理模块发送一致性更新请求;
3.6.2非易失数据版本管理模块向访存监控模块发送页面地址集合查询请求;
3.6.3访存监控模块将待备份页面地址集合发送给非易失数据版本管理模块;
3.6.4非易失数据版本管理模块将待备份页面地址集合中的每个DRAM缓存页拷贝至主映射指向的NVRAM非易失备份;
3.6.5非易失数据版本管理模块将待备份页面地址集合中的每个DRAM缓存页的主映射和副映射进行切换,向时钟定时信号处理函数发送一致性更新过程结束通知;
3.6.6时钟定时信号处理函数接收一致性更新过程结束通知,时钟定时信号处理函数执行完毕,操作***将程序控制权重新转移至用户应用程序,转3.7;
3.7若用户应用程序执行完毕,转第四步;否则转3.2;
第四步,用户应用程序卸载非易失内存一致性更新***,结束。
2.如权利要求1所述的基于一对多页面映射的非易失内存数据一致性更新方法,其特征在于所述时间间隔T为10ms-1000ms。
3.如权利要求1所述的基于一对多页面映射的非易失内存数据一致性更新方法,其特征在于2.1步所述操作***的信号处理函数指Linux操作***下signal函数;2.3步和3.3.3步所述操作***的内存映射接口指Linux操作***的mmap接口。
4.如权利要求1所述的基于一对多页面映射的非易失内存数据一致性更新方法,其特征在于所述E要求大于等于1;所述B大于等于26且小于220。
5.如权利要求1所述的基于一对多页面映射的非易失内存数据一致性更新方法,其特征在于3.1步所述操作***的时钟定时信号触发函数指Linux操作***的ualarm(T)函数,所述时钟定时信号指Linux操作***的SIGALRM。
6.如权利要求1所述的基于一对多页面映射的非易失内存数据一致性更新方法,其特征在于3.2步所述访存监控模块对DRAM缓存资源池中的所有DRAM缓存页面进行写保护的方法是利用操作***的写保护函数将DRAM缓存资源池中的每个DRAM缓存页面的访问权限设置为只读。
7.如权利要求6所述的基于一对多页面映射的非易失内存数据一致性更新方法,其特征在于所述操作***的写保护函数指Linux操作***的mprotect()函数。
8.如权利要求1所述的基于一对多页面映射的非易失内存数据一致性更新方法,其特征在于3.6.5步所述非易失数据版本管理模块将待备份页面地址集合中的每个DRAM缓存页的主映射和副映射进行切换的方法是:将DRAM内存页的主映射指向当前副映射指向的非易失备份页,同时将DRAM内存页的副映射指向当前主映射指向的非易失备份页。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010020369.4A CN111240840B (zh) | 2020-01-09 | 2020-01-09 | 基于一对多页面映射的非易失内存数据一致性更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010020369.4A CN111240840B (zh) | 2020-01-09 | 2020-01-09 | 基于一对多页面映射的非易失内存数据一致性更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111240840A CN111240840A (zh) | 2020-06-05 |
CN111240840B true CN111240840B (zh) | 2022-03-22 |
Family
ID=70870326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010020369.4A Active CN111240840B (zh) | 2020-01-09 | 2020-01-09 | 基于一对多页面映射的非易失内存数据一致性更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111240840B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112799590B (zh) * | 2021-01-21 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种针对在线主存储重删的差异化缓存方法 |
CN113326072B (zh) * | 2021-05-24 | 2023-11-24 | 北京计算机技术及应用研究所 | 一种飞腾服务器平台下基于非易失内存的实时监控方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810112A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失性内存***及其管理方法 |
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
CN107784121A (zh) * | 2017-11-18 | 2018-03-09 | 中国人民解放军国防科技大学 | 一种基于非易失内存的日志文件***的小写优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG11201606318TA (en) * | 2014-04-03 | 2016-08-30 | Agency Science Tech & Res | Method of maintaining data consistency |
-
2020
- 2020-01-09 CN CN202010020369.4A patent/CN111240840B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810112A (zh) * | 2014-01-28 | 2014-05-21 | 华中科技大学 | 一种非易失性内存***及其管理方法 |
CN104881371A (zh) * | 2015-05-29 | 2015-09-02 | 清华大学 | 持久性内存事务处理缓存管理方法与装置 |
CN107784121A (zh) * | 2017-11-18 | 2018-03-09 | 中国人民解放军国防科技大学 | 一种基于非易失内存的日志文件***的小写优化方法 |
Non-Patent Citations (3)
Title |
---|
基于NVRAM的函数式语言容错机制研究;孙曼晖;《中国优秀硕士学位论文全文数据库 信息科技辑》;20170315;全文 * |
基于NVRAM的存储管理和容错技术研究;张文喆;《中国博士学位论文全文数据库 信息科技辑》;20190215;全文 * |
持久性内存***中高效的数据一致性机制研究;任晶磊;《中国博士学位论文全文数据库 信息科技辑》;20170315;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111240840A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11907200B2 (en) | Persistent memory management | |
US10834224B2 (en) | Transaction log acceleration | |
US10289545B2 (en) | Hybrid checkpointed memory | |
CN109643275B (zh) | 存储级存储器的磨损均衡设备和方法 | |
US6799244B2 (en) | Storage control unit with a volatile cache and a non-volatile backup cache for processing read and write requests | |
US9218278B2 (en) | Auto-commit memory | |
US7383290B2 (en) | Transaction processing systems and methods utilizing non-disk persistent memory | |
CN111240840B (zh) | 基于一对多页面映射的非易失内存数据一致性更新方法 | |
JP3527765B2 (ja) | プログラムキャッシュ装置 | |
US11656967B2 (en) | Method and apparatus for supporting persistence and computing device | |
US20060053260A1 (en) | Computing system with memory mirroring and snapshot reliability | |
CN113050886A (zh) | 面向嵌入式内存数据库的非易失性内存存储方法及*** | |
EP0156179B1 (en) | Method for protecting volatile primary store in a staged storage system | |
US20230273751A1 (en) | Resiliency and performance for cluster memory | |
US20230297257A1 (en) | Resiliency and performance for cluster memory | |
US11907065B2 (en) | Resiliency and performance for cluster memory | |
KR101526110B1 (ko) | 증명 가능하고 정확한 오류 복구를 위한 플래시 변환 계층 설계 프레임워크 | |
US20220269614A1 (en) | Treating main memory as a collection of tagged cache lines for trace logging | |
Giles et al. | Software support for atomicity and persistence in non-volatile memory | |
US11698760B2 (en) | Copy and restore of page in byte-addressable chunks of cluster memory | |
WO2022177698A1 (en) | Treating main memory as a collection of tagged cache lines for trace logging | |
CN115576644A (zh) | 一种基于pml的虚拟机页面迁移方法和*** | |
Goeckelmann et al. | Type-Safe Object Exchange Between Applications and a DSM Kernel |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |