一种面向异构内存系统建立检查点的装置的制造方法

文档序号:10534739阅读:381来源:国知局
一种面向异构内存系统建立检查点的装置的制造方法
【专利摘要】一种面向异构内存系统建立检查点的装置,属于计算机系统结构的系统容错技术,解决现有面向异构内存的基于存储的检查点技术开销过大、存在大量无用写的问题。本发明包括异构内存管理模块、地址映射模块、派生页管理模块、检查点调度模块,异构内存管理模块管理异构内存中数据在DRAM和NVM间的移动;地址映射模块提供一种细粒度、低开销的地址映射策略,当写请求试图修改检查点数据时,地址映射模块将写请求映射到其它硬件地址,以保持检查点数据的一致性;派生页管理模块对派生页进行管理;检查点调度模块控制何时触发检查点。本发明对上层应用透明,有效减少了内存占用和冗余写,在维护检查点一致性时减少了无用写,进一步降低了系统运行时间。
【专利说明】
一种面向异构内存系统建立检查点的装置
技术领域
[0001] 本发明属于计算机系统结构的系统容错技术,具体涉及一种面向异构内存系统建 立检查点的装置。
【背景技术】
[0002] 检查点技术是一种常用于系统容错领域的技术,其将系统内存中工作数据和中央 处理器(CPU)状态等信息作为检查点保存到非易失存储介质中,当系统遇到故障时,通过检 查点中的信息可以将系统恢复到建立检查点时刻的状态。
[0003] 传统的基于存储器的检查点技术将检查点存储在硬盘或固态硬盘中,受限于硬盘 和固态硬盘的读写性能,基于存储器的检查点技术难以高频率进行,这限制了系统的容错 能力。内存检查点技术可以解决这种问题,内存检查点技术将检查点存储于内存中的检查 点存储区域,利用内存的高访问性能实现了高频进行的检查点。
[0004] 非易失性存储器(NVM)是一种新型存储介质,其相较于目前常用的静态随机存储 器(SRAM)和动态随机存储器(DRAM)具有断电后数据不丢失、大容量的特征;但是,其相较于 DRAM、NVM通常有着相近的读延迟,慢一个数量级的写延迟,以及低几个数量级的写入寿命, 在性能上有一定的劣势。
[0005] 由于NVM的这种缺陷,在计算机系统中,其还不能替代DRAM作为内存使用。为了结 合DRAM和NVM两者的优势,目前许多研究者提出了使用异构内存系统。异构内存系统指将 DRAM和NVM都连接到内存总线上,使用这两者共同构造内存系统。异构内存系统有两种常见 结构:DRAM和NVM共享内存地址空间的并列结构,DRAM作为NVM缓存的层次结构。异构内存系 统很好地结合了DRAM和NVM两者的优势,具有大容量、高性能、高可靠性的特征,已经成为了 未来内存系统的发展趋势。
[0006] 但是,将传统的内存检查点技术简单迀移到异构内存系统中会遇到如何维护检查 点一致性的问题。内存检查点技术将工作数据和检查点都存储于内存中。创建检查点时,将 工作数据标记为检查点即可,其并不触发数据的复制。检查点完成后,应用程序恢复运行。 如果应用程序此时试图修改工作数据,将破坏上一次得到的检查点。
[0007] 传统的内存检查点技术常使用日志和写时复制技术来维护检查点的一致性。日志 技术要求在写入数据前把数据复制到日志区域,然后再把新数据写入,即写入数据时会触 发两倍的写入。写时复制技术受限于地址映射技术,只能在页粒度上执行写时复制。即使页 中只有少量数据修改,也需要复制整个页。因此,日志技术和写时复制技术都会触发较大的 无用写。异构内存系统中,NVM常常具有较差的写性能。因此日志技术和写时复制技术产生 的无用写在异构内存系统中产生了较大性能影响。
[0008] 目前结合NVM和检查点技术的工作都是基于存储器的检查点技术,将这类技术迀 移入异构内存系统中将会导致工作数据和检查点都存放于NVM中。检查点是某一个时刻工 作数据的副本,因此工作数据和检查点存在大量的共同数据,所以基于存储器的检查点技 术存在大量冗余数据,进一步导致了可用内存减少和冗余写。因此目前还缺乏一种面向异 构内存系统的内存检查点技术。
[0009] 为了便于理解本发明,对有关名词加以说明:
[0010] 物理页:页表机制负责从虚拟页地址到物理页地址的转换,本文所指物理页和页 表机制中的物理页同义,每页物理页包含多个缓存块,每个缓存块包含多个字节。
[0011] 物理地址:物理页中按字节编址,每个字节具有一个物理地址,如果该物理页缓存 在DRAM中,物理地址则指向DRAM中对应缓存页中的字节。当物理页与NVM页建立映射关系 后,一个物理地址可能指向物理页所映射到的基础页、派生页中的字节。
[0012] 缓存块地址、页地址:缓存块地址是缓存块中第一个字节的地址,页地址是页中第 一个缓存块中第一个字节的地址。
[0013] 硬件页:硬件页指DRAM或NVM上的页,相应的硬件地址为硬件页中每个字节的地 址,可分为DRAM地址和NVM地址。
[0014] 基础页和派生页:将NVM存储空间分成基础页存储区和派生页存储区,基础页存储 区用于顺序存储基础页,派生页存储区用于顺序存储派生页。
[0015] 将一页物理页映射到两个NVM硬件页,其中第一个NVM页被称为基础页;第二个NVM 页被称为派生页,基础页和派生页分别包含多个缓存块。
[0016] 各连续页的各物理地址或硬件地址顺序编址。
[0017] 页内偏移地址:指物理地址或硬件地址减去它们所属页地址以后得到的地址。
[0018] 本发明为每页物理页建立了物理页脏标记和检查点位置标记两组标记,两组标记 各自均包括C位,各位序号与物理页中缓存块序号对应,C为每页物理页中缓存块的个数;
[0019] 物理页脏标记中,某位为0或1,表示自上一次建立检查点以来物理页相应缓存块 未被修改或被修改过;
[0020] 检查点位置标记中,某位为0或1,表示上一次建立的检查点中,该物理页相应缓存 块对应的检查点数据存于基础页或是派生页中。
[0021] 本发明有关符号说明如下:
[0022] [xj:对符号内的数值x向下取整。
[0023] x mod y:取数值x除以数值y的余数。

【发明内容】

[0024]本发明提供一种面向异构内存系统建立检查点的装置,解决现有面向异构内存的 基于存储的检查点技术开销过大、存在大量无用写的问题。
[0025]本发明所提供的一种面向异构内存系统建立检查点的装置,包括异构内存管理模 块、地址映射模块、派生页管理模块、检查点调度模块,其特征在于:
[0026] (1)所述异构内存管理模块接受用户的内存访问请求,判断内存访问请求是否命 中DRAM缓存,是则将内存访问请求转发给DRAM,否则进行缓存替换,向地址映射模块发出地 址映射请求,根据地址映射模块返回的NVM地址访问NVM,将DRAM中淘汰页写回NVM,要访问 的页读入DRAM;
[0027] (2)所述地址映射模块接受异构内存管理模块发出的地址映射请求,根据物理页 上是否存在物理页脏标记和检查点位置标记,判断相关物理页是否与基础页、派生页建立 映射关系,是则将一页物理页地址映射为基础页和派生页两页NVM页地址,限定物理页的第 N个缓存块地址只能映射为这两页NVM页的第N个缓存块地址,分别用于存储物理页第N个缓 存块的工作数据和最新的检查点;并向异构内存模块返回映射得到的NVM缓存块地址,根据 情况更新物理页脏标记;
[0028]否则向派生页管理模块发出派生页分配请求,根据派生页管理模块返回的页地址 构造一页物理页映射到两页NVM页的映射关系,并为该物理页增加物理页脏标记和检查点 位置标记;
[0029] (3)所述派生页管理模块接受地址映射模块发出的派生页分配请求,判断派生页 存储区中是否存在未被分配的派生页,是则向地址映射模块返回该未被分配的派生页,否 则继续判断是否存在可被释放的派生页,是则释放该派生页,并将该页返回给地址映射模 块,否则向检查点调度模块发出建立检查点的请求,并不断查询是否已经建立检查点,是则 重新寻找可释放的派生页,并将释放的派生页返回给地址映射模块;
[0030] (4)检查点调度模块自身定时启动建立检查点或者从派生页管理模块收到建立检 查点请求启动建立检查点,建立检查点时,将检查点所包含的数据写入NVM,对相关物理页 的检查点位置标记和物理页脏标记进行更新。
[0031] 所述的面向异构内存系统建立检查点的装置,其特征在于:
[0032] 所述异构内存管理模块执行下述操作:
[0033] (1)等待用户的内存访问请求,收到内存访问请求后进行步骤(2);
[0034] (2)检测在DRAM中是否缓存有内存访问请求中的物理地址Ar要访问的页,是则将 DRAM中相应页地址赋予DRAM地址Ad,进行步骤(3),否则转步骤(4);
[0035] (3)向DRAM转发内存访问请求:将Ad+Ar mod Sp的值赋予Ad,然后,将内存访问请 求中的物理地址Ar改为Ad,向DRAM发出该内存访问请求,转步骤(1);
[0036] (4)选择淘汰页:搜索DRAM中上一次访问时间距当前时间最久的DRAM页,将其DRAM 页地址赋予DRAM地址Ad;
[0037] (5)把淘汰页写回NVM:遍历DRAM地址Ad所对应的DRAM页中每个缓存块,判断该缓 存块自从该DRAM页缓存到DRAM中以来,到当前时间为止,是否未被修改过,是则继续扫描下 一缓存块,直至扫描完毕;进行步骤(6);否则向地址映射模块发送地址映射请求,该地址映 射请求为写请求,包括各缓存块所对应的物理地址A;等待地址映射模块返回NVM地址A ',将 各DRAM缓存块复制到NVM地址A '所指向的NVM缓存块,继续扫描下一缓存块,直至扫描完毕, 进行步骤(6);
[0038] (6)把要访问的页读入DRAM:遍历内存访问请求中的物理地址Ar所对应的物理页 中的每个缓存块,向地址映射模块发送地址映射请求,该地址映射请求为读请求,包括各缓 存块所对应的物理地址A;等待地址映射模块返回NVM地址A',将A '所指向的各NVM缓存块复 制到DRAM页的对应DRAM缓存块中,转步骤(3);所述对应DRAM缓存块指在DRAM页中和NVM缓 存块具有相同页内偏移地址的缓存块。
[0039]所述的面向异构内存系统建立检查点的装置,其特征在于:
[0040] 所述地址映射模块执行下述操作:
[0041] (1)等待异构内存管理模块发来地址映射请求,收到地址映射请求后进行步骤 (2);
[0042] ( 2 )根据地址映射请求中的物理地址A,计算其对应的物理页地址Ap : Ap =〖A / Spj X Sp,式中,Sp为页大小,单位为字节;
[0043] (3)检测Ap所对应的物理页是否存在物理页脏标记和检查点位置标记,是进行步 骤(4),否则转步骤(8);
[0044] (4)对Ap所对应的物理页的物理页脏标记和检查点位置标记按位进行异或运算, 得到异或运算结果P;
[0045] (5)计算缓存块在页内的编号N:N = [A. mod S:p / Scj;式中,Sc为缓存块大小, 单位为字节;
[0046] (6)判断P的第N位是否为0,是则进行步骤(7),否则转步骤(10);
[0047] (7)将A的值赋予NVM地址A',向异构内存管理模块返回A',转步骤(11);
[0048] (8)判断当前地址映射请求是否为写请求,是则转步骤(9),否则进行步骤(7);
[0049] (9)向派生页管理模块发出派生页分配请求,等待派生页管理模块返回页地址A1, 构造Ap所对应的物理页和两页NVM页间的映射关系:将Ap赋予基础页地址Ab,将A1赋予派生 页地址As;然后为Ap所对应的物理页建立物理页脏标记和检查点位置标记两组标记,将两 组标记中的各位全部置0,转步骤(4);
[0050] (10)返回派生页第N个缓存块的NVM地址A ' : A ' = As+N X Sc,向异构内存管理模块 返回A',进行步骤(11);
[0051] (11)判断当前地址映射请求是否为写请求,是则置物理页脏标记第N位为1,转步 骤(1);否则转步骤(1)。
[0052] 所述的面向异构内存系统建立检查点的装置,其特征在于:
[0053]所述派生页管理模块执行下述操作:
[0054] (1)在NVM存储空间中建立派生页存储区,将指针L指向派生页存储区的第一页;
[0055] (2)等待地址映射模块的派生页分配请求,收到派生页分配请求后进行步骤(3);
[0056] (3)判断指针L的指向是否在派生页存储区边界内,是则进行步骤(4),否则转步骤 (5);
[0057] (4)向地址映射模块返回指针L指向的派生页所对应的页地址,再将指针L后移,指 向下一页,转步骤(2);
[0058] (5)建立物理页集合S,扫描派生页存储区,判断自建立检查点时间T至当前时间 内,各派生页对应的物理页是否未发生过写入,是则将该物理页加入物理页集合S,继续扫 描下一派生页,直至扫描完毕,进行步骤(6);否则继续扫描下一派生页,直至扫描完毕,进 行步骤(6);
[0059] (6)判断物理页集合S是否为空,是则转步骤(13),否则进行步骤(7);
[0060] (7)建立DRAM页集合Sd,扫描物理页集合S,判断各物理页是否缓存到DRAM中,是则 将该物理页对应的DRAM页加入到Sd中,继续扫描下一物理页,直至扫描完毕,进行步骤(8); 否则继续扫描下一物理页,直至扫描完毕,进行步骤(8);
[0061] (8)判断DRAM页集合Sd是否为空,是则将物理页集合S中的第一个物理页所对应的 派生页地址赋予待释放派生页地址A1,转步骤(10),否则进行步骤(9);
[0062] (9)扫描DRAM页集合Sd,判断自建立检查点时间T和该页缓存至IjDRAM中时间这两者 中较晚时间以来,到当前时间为止,是否存在某DRAM页没有发生过写入,是则停止扫描,并 将该DRAM页对应物理页所属派生页地址赋予待释放派生页地址A1,转步骤(10),否则转步 骤(13);
[0063] (10)对A1通过映射关系对应的物理页地址Ap的物理页脏标记和检查点位置标记 进行异或运算,得到异或运算结果P;
[0064] (11)根据P将待释放派生页中的有效数据写回基础页:顺序遍历P的每一位,判断 该位是否为1,是则将派生页中该位序号的缓存块复制到基础页中相应序号的缓存块,进行 步骤(12);否则不进行处理,进行步骤(12);
[0065] (12)向地址映射模块返回A1,转步骤(2);
[0066] (13)向检查点调度模块发出建立检查点请求,进行步骤(14);
[0067] (14)向检查点调度模块查询是否已经建立检查点,是则转步骤(5),否则继续步骤 (14)〇
[0068] 所述的面向异构内存系统建立检查点的装置,其特征在于:
[0069] 所述检查点调度模块执行下述操作:
[0070] (1)系统启动时,将启动时间赋予建立检查点时间T,并根据用户指令确定建立检 查点间隔时间I;
[0071] (2)判断是否满足条件(2.1)或者(2.2),是则进行步骤(3),否则继续步骤(2);
[0072] ^??当前时间一了彡工;
[0073] (2.2)收到派生页管理模块的建立检查点请求;
[0074] (3)中断系统运行,将当前时间值赋予T,进行步骤(4);
[0075] (4)将DRAM所有页写回NVM;将CPU上下文信息、访存队列、元数据均写入NVM,进行 步骤(5);
[0076] (5)遍历所有具有物理页脏标记和检查点位置标记的物理页,分别对各物理页的 物理页脏标记和检查点位置标记按位进行异或运算,将异或运算结果P按位赋予其检查点 位置标记,将物理页脏标记各位置0,遍历完毕,进行步骤(6);
[0077] (6)标记已经建立检查点,恢复系统运行,转步骤(2)。
[0078] 本发明借助于DRAM作为NVM缓存的层次型异构内存系统。异构内存管理模块将所 有命中DRAM缓存的数据转发到DRAM进行处理,这部分请求没有额外开销,DRAM缺失的数据 则执行缓存替换过程,替换过程中执行NVM地址映射,涉及到对NVM进行读写的部分都首先 将物理地址发送给地址映射模块,获取NVM地址后再对NVM进行访问。
[0079] 地址映射模块提供一种用户维护检查点一致性的细粒度、低开销的地址映射策 略,其将一页物理页映射到两页NVM硬件页(称为基础页和派生页),限定物理页的第N个缓 存块只能映射到这两页NVM硬件页的第N个缓存块中,这两页NVM硬件页的第N个缓存块分别 存储物理页第N个缓存块的工作数据和最新的检查点,这种限制使得物理页每个缓存块只 需要检查点位置标记的一比特元数据来标记检查点数据存储于基础页还是派生页,因此减 少了地址映射模块需要的元数据数量,提高了可行性。
[0080] 派生页管理模块用于对派生页的管理,向外部暴露派生页申请接口;
[0081 ]检查点调度模块控制何时触发检查点,建立检查点时,将所有具有工作数据角色 的缓存块标记为检查点,其它缓存块标记位未使用,这个过程不需要讲工作数据复制为检 查点,因此具有很好的性能。
[0082]本发明不需要上层应用的改动,因此对上层应用透明;与现有的面向异构内存的 基于存储的检查点技术相比较,本发明有效减少了内存占用和冗余写;在维护检查点一致 性时减少了无用写,进一步降低了系统运行时间。
【附图说明】
[0083]图1为本发明的模块结构框图;
[0084]图2为异构内存管理模块工作流程框图;
[0085]图3为地址映射模块工作流程框图;
[0086]图4为派生页管理模块工作流程框图;
[0087] 图5为检查点调用模块工作流程框图。
【具体实施方式】
[0088] 以下结合附图及实施例,对本发明进一步详细说明。
[0089]如图1所示,本发明包括异构内存管理模块、地址映射模块、派生页管理模块、检查 点调度模块。
[0090] 如图2所示,所述异构内存管理模块执行下述操作:
[0091] (1)等待用户的内存访问请求,收到内存访问请求后进行步骤(2);
[0092] (2)检测在DRAM中是否缓存有内存访问请求中的物理地址Ar要访问的页,是则将 DRAM中相应页地址赋予DRAM地址Ad,进行步骤(3),否则转步骤(4);
[0093] (3)向DRAM转发内存访问请求:将Ad+Ar mod Sp的值赋予Ad,然后,将内存访问请 求中的物理地址Ar改为Ad,向DRAM发出该内存访问请求,转步骤(1);
[0094] (4)选择淘汰页:搜索DRAM中上一次访问时间距当前时间最久的DRAM页,将其DRAM 页地址赋予DRAM地址Ad;
[0095] (5)把淘汰页写回NVM:遍历DRAM地址Ad所对应的DRAM页中每个缓存块,判断该缓 存块自从该DRAM页缓存到DRAM中以来,到当前时间为止,是否未被修改过,是则继续扫描下 一缓存块,直至扫描完毕;进行步骤(6);否则向地址映射模块发送地址映射请求,该地址映 射请求为写请求,包括各缓存块所对应的物理地址A;等待地址映射模块返回NVM地址A ',将 各DRAM缓存块复制到NVM地址A '所指向的NVM缓存块,继续扫描下一缓存块,直至扫描完毕, 进行步骤(6);
[0096] (6)把要访问的页读入DRAM:遍历内存访问请求中的物理地址Ar所对应的物理页 中的每个缓存块,向地址映射模块发送地址映射请求,该地址映射请求为读请求,包括各缓 存块所对应的物理地址A;等待地址映射模块返回NVM地址A',将A '所指向的各NVM缓存块复 制到DRAM页的对应DRAM缓存块中,转步骤(3);所述对应DRAM缓存块指在DRAM页中和NVM缓 存块具有相同页内偏移地址的缓存块。
[0097]如图3所示,所述地址映射模块执行下述操作:
[0098] (1)等待异构内存管理模块发来地址映射请求,收到地址映射请求后进行步骤 (2);
[0099] ⑵根据池址映射请求中的物理地址A,计算其对应的物理页地址Ap:Ap = [A / SpJ X Sp, 式中,Sp为页大小,单位为字节;
[0100] (3)检测Ap所对应的物理页是否存在物理页脏标记和检查点位置标记,是进行步 骤(4),否则转步骤(8);
[0101] (4)对Ap所对应的物理页的物理页脏标记和检查点位置标记按位进行异或运算, 得到异或运算结果P;
[0102] (5)计算缓存块在页内的编号N:N = [A mod Sp / Srj;式中,Sc为缓存块大小, 单位为字节;
[0103] (6)判断P的第N位是否为0,是则进行步骤(7),否则转步骤(10);
[0104] (7)将A的值赋予NVM地址A',向异构内存管理模块返回A',转步骤(11);
[0105] (8)判断当前地址映射请求是否为写请求,是则转步骤(9),否则进行步骤(7);
[0106] (9)向派生页管理模块发出派生页分配请求,等待派生页管理模块返回页地址A1, 构造Ap所对应的物理页和两页NVM页间的映射关系:将Ap赋予基础页地址Ab,将A1赋予派生 页地址As;
[0107]然后为Ap所对应的物理页建立物理页脏标记和检查点位置标记两组标记,将两组 标记中的各位全部置0,转步骤(4);
[0108] (10)返回派生页第N个缓存块的NVM地址A ' : A ' = As+N X Sc,向异构内存管理模块 返回A',进行步骤(11);
[0109] (11)判断当前地址映射请求是否为写请求,是则置物理页脏标记第N位为1,转步 骤(1);否则转步骤(1)。
[0110] 如图4所示,所述派生页管理模块执行下述操作:
[0111] (1)在NVM存储空间中建立派生页存储区,将指针L指向派生页存储区的第一页;
[0112] (2)等待地址映射模块的派生页分配请求,收到派生页分配请求后进行步骤(3);
[0113] (3)判断指针L的指向是否在派生页存储区边界内,是则进行步骤(4),否则转步骤 (5);
[0114] (4)向地址映射模块返回指针L指向的派生页所对应的页地址,再将指针L后移,指 向下一页,转步骤(2);
[0115] (5)建立物理页集合S,扫描派生页存储区,判断自建立检查点时间T至当前时间 内,各派生页对应的物理页是否未发生过写入,是则将该物理页加入物理页集合S,继续扫 描下一派生页,直至扫描完毕,进行步骤(6);否则继续扫描下一派生页,直至扫描完毕,进 行步骤(6);
[0116] (6)判断物理页集合S是否为空,是则转步骤(13),否则进行步骤(7);
[0117] (7)建立DRAM页集合Sd,扫描物理页集合S,判断各物理页是否缓存到DRAM中,是则 将该物理页对应的DRAM页加入到Sd中,继续扫描下一物理页,直至扫描完毕,进行步骤(8); 否则继续扫描下一物理页,直至扫描完毕,进行步骤(8);
[0118] (8)判断DRAM页集合Sd是否为空,是则将物理页集合S中的第一个物理页所对应的 派生页地址赋予待释放派生页地址A1,转步骤(10),否则进行步骤(9);
[0119] (9)扫描DRAM页集合Sd,判断自建立检查点时间T和该页缓存至IjDRAM中时间这两者 中较晚时间以来,到当前时间为止,是否存在某DRAM页没有发生过写入,是则停止扫描,并 将该DRAM页对应物理页所属派生页地址赋予待释放派生页地址A1,转步骤(10),否则转步 骤(13);
[0120] (10)对A1通过映射关系对应的物理页地址Ap的物理页脏标记和检查点位置标记 进行异或运算,得到异或运算结果p;
[0121] (11)根据P将待释放派生页中的有效数据写回基础页:顺序遍历P的每一位,判断 该位是否为1,是则将派生页中该位序号的缓存块复制到基础页中相应序号的缓存块,进行 步骤(12);否则不进行处理,进行步骤(12);
[0122] (12)向地址映射模块返回A1,转步骤(2);
[0123] (13)向检查点调度模块发出建立检查点请求,进行步骤(14);
[0124] (14)向检查点调度模块查询是否已经建立检查点,是则转步骤(5),否则继续步骤 (14) 〇
[0125] 如图5所示,所述检查点调度模块执行下述操作:
[0126] (1)系统启动时,将启动时间赋予建立检查点时间T,并根据用户指令确定建立检 查点间隔时间I;
[0127] (2)判断是否满足条件(2.1)或者(2.2),是则进行步骤(3),否则继续步骤(2);
[0128] ^??当前时间一了彡工;
[0129] (2.2)收到派生页管理模块的建立检查点请求;
[0130] (3)中断系统运行,将当前时间值赋予T,进行步骤(4);
[0131] (4)将DRAM所有页写回NVM;将CPU上下文信息、访存队列、元数据均写入NVM,进行 步骤(5);
[0132] (5)遍历所有具有物理页脏标记和检查点位置标记的物理页,分别对各物理页的 物理页脏标记和检查点位置标记按位进行异或运算,将异或运算结果P按位赋予其检查点 位置标记,将物理页脏标记各位置0,遍历完毕,进行步骤(6);
[0133] (6)标记已经建立检查点,恢复系统运行,转步骤(2)。
【主权项】
1. 一种面向异构内存系统建立检查点的装置,包括异构内存管理模块、地址映射模块、 派生页管理模块、检查点调度模块,其特征在于: (1) 所述异构内存管理模块接受用户的内存访问请求,判断内存访问请求是否命中 DRAM缓存,是则将内存访问请求转发给DRAM,否则进行缓存替换,向地址映射模块发出地址 映射请求,根据地址映射模块返回的NVM地址访问NVM,将DRAM中淘汰页写回NVM,要访问的 页读入DRAM; (2) 所述地址映射模块接受异构内存管理模块发出的地址映射请求,根据物理页上是 否存在物理页脏标记和检查点位置标记,判断相关物理页是否与基础页、派生页建立映射 关系,是则将一页物理页地址映射为基础页和派生页两页NVM页地址,限定物理页的第N个 缓存块地址只能映射为这两页NVM页的第N个缓存块地址,分别用于存储物理页第N个缓存 块的工作数据和最新的检查点;并向异构内存模块返回映射得到的NVM缓存块地址,根据情 况更新物理页脏标记; 否则向派生页管理模块发出派生页分配请求,根据派生页管理模块返回的页地址构造 一页物理页映射到两页NVM页的映射关系,并为该物理页增加物理页脏标记和检查点位置 标记; (3) 所述派生页管理模块接受地址映射模块发出的派生页分配请求,判断派生页存储 区中是否存在未被分配的派生页,是则向地址映射模块返回该未被分配的派生页,否则继 续判断是否存在可被释放的派生页,是则释放该派生页,并将该页返回给地址映射模块,否 则向检查点调度模块发出建立检查点的请求,并不断查询是否已经建立检查点,是则重新 寻找可释放的派生页,并将释放的派生页返回给地址映射模块; (4) 检查点调度模块自身定时启动建立检查点或者从派生页管理模块收到建立检查点 请求启动建立检查点,建立检查点时,将检查点所包含的数据写入NVM,对相关物理页的检 查点位置标记和物理页脏标记进行更新。2. 如权利要求1所述的面向异构内存系统建立检查点的装置,其特征在于: 所述异构内存管理模块执行下述操作: (1) 等待用户的内存访问请求,收到内存访问请求后进行步骤(2); (2) 检测在DRAM中是否缓存有内存访问请求中的物理地址Ar要访问的页,是则将DRAM 中相应页地址赋予DRAM地址Ad,进行步骤(3),否则转步骤(4); (3) 向DRAM转发内存访问请求:将Ad+Ar mod Sp的值赋予Ad,然后,将内存访问请求中 的物理地址Ar改为Ad,向DRAM发出该内存访问请求,转步骤(1); (4) 选择淘汰页:搜索DRAM中上一次访问时间距当前时间最久的DRAM页,将其DRAM页地 址赋予DRAM地址Ad; (5) 把淘汰页写回NVM:遍历DRAM地址Ad所对应的DRAM页中每个缓存块,判断该缓存块 自从该DRAM页缓存到DRAM中以来,到当前时间为止,是否未被修改过,是则继续扫描下一缓 存块,直至扫描完毕;进行步骤(6);否则向地址映射模块发送地址映射请求,该地址映射请 求为写请求,包括各缓存块所对应的物理地址A;等待地址映射模块返回NVM地址A',将各 DRAM缓存块复制到NVM地址A '所指向的NVM缓存块,继续扫描下一缓存块,直至扫描完毕,进 行步骤(6); (6) 把要访问的页读入DRAM:遍历内存访问请求中的物理地址Ar所对应的物理页中的 每个缓存块,向地址映射模块发送地址映射请求,该地址映射请求为读请求,包括各缓存块 所对应的物理地址A;等待地址映射模块返回NVM地址A',将A'所指向的各NVM缓存块复制到 DRAM页的对应DRAM缓存块中,转步骤(3);所述对应DRAM缓存块指在DRAM页中和NVM缓存块 具有相同页内偏移地址的缓存块。3. 如权利要求1所述的面向异构内存系统建立检查点的装置,其特征在于: 所述地址映射模块执行下述操作: (I) 等待异构内存管理模块发来地址映射请求,收到地址映射请求后进行步骤(2); ⑵根据地址映射请求中的物理地址A,计算其对应的物理页地址Ap: Ap =〖A / Sp j X Sp, 式中,Sp为页大小,单位为字节; (3) 检测Ap所对应的物理页是否存在物理页脏标记和检查点位置标记,是进行步骤 (4),否则转步骤(8); (4) 对Ap所对应的物理页的物理页脏标记和检查点位置标记按位进行异或运算,得到 异或运算结果P; (5) 计算缓存块在页内的编号N: N = [A mod Sp / Sc|;式中,Sc为缓存块大小,单位 为字节; (6) 判断P的第N位是否为0,是则进行步骤(7),否则转步骤(10); (7) 将A的值赋予NVM地址A',向异构内存管理模块返回A',转步骤(11); (8) 判断当前地址映射请求是否为写请求,是则转步骤(9),否则进行步骤(7); (9) 向派生页管理模块发出派生页分配请求,等待派生页管理模块返回页地址Al,构造 Ap所对应的物理页和两页NVM页间的映射关系:将Ap赋予基础页地址Ab,将Al赋予派生页地 址As; 然后为Ap所对应的物理页建立物理页脏标记和检查点位置标记两组标记,将两组标记 中的各位全部置0,转步骤(4); (10) 返回派生页第N个缓存块的NVM地址A' : A' =As+N X Sc,向异构内存管理模块返回 A',进行步骤(11); (II) 判断当前地址映射请求是否为写请求,是则置物理页脏标记第N位为1,转步骤 (1);否则转步骤(1)。4. 如权利要求1所述的面向异构内存系统建立检查点的装置,其特征在于: 所述派生页管理模块执行下述操作: (1) 在NVM存储空间中建立派生页存储区,将指针L指向派生页存储区的第一页; (2) 等待地址映射模块的派生页分配请求,收到派生页分配请求后进行步骤(3); (3) 判断指针L的指向是否在派生页存储区边界内,是则进行步骤(4),否则转步骤(5); (4) 向地址映射模块返回指针L指向的派生页所对应的页地址,再将指针L后移,指向下 一页,转步骤(2); (5) 建立物理页集合S,扫描派生页存储区,判断自建立检查点时间T至当前时间内,各 派生页对应的物理页是否未发生过写入,是则将该物理页加入物理页集合S,继续扫描下一 派生页,直至扫描完毕,进行步骤(6);否则继续扫描下一派生页,直至扫描完毕,进行步骤 (6); (6) 判断物理页集合S是否为空,是则转步骤(13),否则进行步骤(7); (7) 建立DRAM页集合ScU扫描物理页集合S,判断各物理页是否缓存至IjDRAM中,是则将该 物理页对应的DRAM页加入到Sd中,继续扫描下一物理页,直至扫描完毕,进行步骤(8);否则 继续扫描下一物理页,直至扫描完毕,进行步骤(8); (8) 判断DRAM页集合Sd是否为空,是则将物理页集合S中的第一个物理页所对应的派生 页地址赋予待释放派生页地址Al,转步骤(10),否则进行步骤(9); (9) 扫描DRAM页集合Sd,判断自建立检查点时间T和该页缓存到DRAM中时间这两者中较 晚时间以来,到当前时间为止,是否存在某DRAM页没有发生过写入,是则停止扫描,并将该 DRAM页对应物理页所属派生页地址赋予待释放派生页地址Al,转步骤(10),否则转步骤 (13) ; (10) 对Al通过映射关系对应的物理页地址Ap的物理页脏标记和检查点位置标记进行 异或运算,得到异或运算结果P; (11) 根据P将待释放派生页中的有效数据写回基础页:顺序遍历P的每一位,判断该位 是否为1,是则将派生页中该位序号的缓存块复制到基础页中相应序号的缓存块,进行步骤 (12);否则不进行处理,进行步骤(12); (12) 向地址映射模块返回Al,转步骤(2); (13) 向检查点调度模块发出建立检查点请求,进行步骤(14); (14) 向检查点调度模块查询是否已经建立检查点,是则转步骤(5),否则继续步骤 (14) 〇5.如权利要求1所述的面向异构内存系统建立检查点的装置,其特征在于: 所述检查点调度模块执行下述操作: (1) 系统启动时,将启动时间赋予建立检查点时间T,并根据用户指令确定建立检查点 间隔时间I; (2) 判断是否满足条件(2.1)或者(2.2),是则进行步骤(3),否则继续步骤(2); (2.1) 当前时间一 T5I; (2.2) 收到派生页管理模块的建立检查点请求; (3) 中断系统运行,将当前时间值赋予T,进行步骤(4); (4) 将DRAM所有页写回NVM;将CPU上下文信息、访存队列、元数据均写入NVM,进行步骤 (5); (5) 遍历所有具有物理页脏标记和检查点位置标记的物理页,分别对各物理页的物理 页脏标记和检查点位置标记按位进行异或运算,将异或运算结果P按位赋予其检查点位置 标记,将物理页脏标记各位置0,遍历完毕,进行步骤(6); (6) 标记已经建立检查点,恢复系统运行,转步骤(2)。
【文档编号】G06F12/06GK105893274SQ201610307028
【公开日】2016年8月24日
【申请日】2016年5月11日
【发明人】吴松, 高翔, 金海
【申请人】华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1