法律状态公告日
法律状态信息
法律状态
2019-07-23
授权
授权
2017-05-24
实质审查的生效 IPC(主分类):G06F3/06 申请日:20161110
实质审查的生效
2017-04-26
公开
公开
技术领域
本发明属于计算机技术领域,更具体地,涉及一种面向异构内存的可重构内存管理系统。
背景技术
非易失性存储器(Nonvolatile Memory,NVM)是一类新型存储介质,以相变化内存(Phase Change Memory,PCM)、自旋转移力矩随机内存(Spin Transfer Torque RandomAccess Memory,STT-RAM)、电阻式随机内存(Resistive Random Access Memory,ReRAM)和忆阻器为代表。与目前常用的静态随机存储器(Static Random Access Memory,SRAM)和动态随机存储器(Dynamic Random Access Memory,DRAM)相比,其具有按位存取能力、断电后数据不丢失、存储密度大、静态功耗低、动态功耗高、可扩展性强等特征;但是相较于DRAM,NVM通常又有着相近的读延迟,慢一个或几个数量级的写延迟,以及写入次数限制等,在性能上有一定的劣势。
然而单独使用NVM作为系统内存使用存在很多缺陷,无法达到当今计算机内存系统的要求。因此出现了将DRAM与NVM一起连接到内存总线上以构成异构内存的方式,从而可以结合两者的优势,具有大容量、高性能、非易失性的特征。在异构内存系统中,连接到内存总线上的DRAM和PCM分别由各自的内存控制器负责,上层总控制器统一负责各内存系统中数据的调度。异构内存系统在相同的物理架构上,其实现的逻辑架构有并列架构和缓存架构两种方式。
异构内存系统的理论最佳性能是整个异构内存系统能够实现DRAM器件的性能、PCM器件的容量。为了达到这一目的,研究人员基于两种逻辑架构,结合异构内存特性,如NVM读快写慢、寿命限制、静态功耗低、动态功耗高等,进行了许多的管理策略研究。然而在具体使用中,任何一种架构与管理策略都存在着一定的适用范围,若应用在不合适的架构或管理策略上运行时,会导致对NVM的读写次数增多、页面在DRAM与NVM间频繁迁移、内存带宽竞争等问题,出现严重的性能损失与功耗开销,其性能甚至会低于仅使用NVM器件时的性能,相应的也会导致相当大的功耗开销与NVM的寿命降低。
目前可以通过对内存管理策略或者架构进行大幅度调整来改善系统中的性能损失问题。但是由于现有的内存架构与管理策略与内存控制器存在紧密关联,导致调整操作很难进行,且无法快速实现。因此,如何能够对现有架构或管理策略实现快速、低开销地进行灵活的调整是业界亟需解决的难题。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种面向异构内存的可重构内存管理系统,其目的在于使得对异构内存系统的架构和管理策略的调整更加灵活,可以根据内存使用状态信息以及应用特征进行动态调整,由此解决现有内存系统的架构及管理策略难以根据应用访存特征进行动态调整的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种面向异构内存的可重构内存管理系统,其特征在于,包括:页面管理模块、管理策略模块、决策管理模块以及策略转换模块:
所述页面管理模块与所述管理策略模块以及所述策略转换模块相连;
所述管理策略模块与所述策略转换模块相连;
所述策略转换模块与所述决策管理模块相连;
所述页面管理模块,用于负责页面分配和页面迁移操作;所述管理策略模块,用于保存预设的内存管理策略集,并根据操作系统当前运行的内存管理策略,对页面分配和页面迁移操作进行处理;所述决策管理模块,用于接收策略转换请求,经过处理后形成策略转换决策;所述策略转换模块,用于响应所述策略转换决策,将当前运行的内存管理策略向与所述策略转换决策对应的目标内存管理策略进行转换。
优选地,所述预设的内存管理策略集中包括N个内存策略模块,每个内存策略模块包括映射表、与所述映射表对应的数据结构与页面管理函数,其中,不同的异构内存架构封装为不同的映射表,不同的管理策略封装为不同的数据结构与页面管理函数。
优选地,所述页面管理模块具体用于执行下述操作:
(1)等待接收所述管理策略模块与所述策略转换模块发送的页面分配请求和/或页面迁移请求,收到请求后进行步骤(2);
(2)若接收到的请求是页面分配请求,则转向步骤(3),否则转向步骤(4);
(3)按照所述页面分配请求中的信息,从相应地址空间分配页面;
(4)若接收到的请求是页面迁移请求,则转向步骤(5);
(5)按照所述页面迁移请求中的信息,将待迁移页面加入页面迁移队列,检查所述页面迁移队列中是否存在重复或冲突的迁移操作,若存在,则进行合并或删除处理,然后转入步骤(6);
(6)检测是否到达预设时钟周期,如果到达,进行步骤(7);
(7)从所述页面迁移队列中取出一项进行页面迁移操作,完成后进行步骤(8);
(8)按照所述页面迁移队列中的记录,修改相应映射关系表,完成后进行步骤(9);
(9)判断所述页面迁移队列是否为空,如果不为空,转向步骤(7);若为空,则继续执行步骤(1)。
优选地,所述管理策略模块具体用于执行下述操作:
(1)等待接收操作系统发送的缺页中断请求、页面迁移请求以及所述策略转换模块发送的策略转换决策请求,收到请求后进行步骤(2);
(2)若接收到缺页中断请求,则转向步骤(3);
(3)按照当前运行的内存策略模块中的管理策略,决定进行页面分配的地址空间,并执行步骤(4);
(4)根据管理策略生成操作请求,向所述页面管理模块发送所述操作请求;
(5)若接收到页面迁移请求,则执行步骤(6);
(6)按照当前运行的内存策略模块中的管理策略,决定进行页面迁移操作的地址空间以及页面替换操作,并执行步骤(4);
(7)若接收到策略转换决策请求,则执行步骤(8);
(8)进入策略转换阶段,产生系统中断,暂停内存中的数据操作,执行步骤(9);
(9)载入新的内存策略模块,执行步骤(10);
(10)向所述策略转换模块发送所述新策略模块的相关信息,执行步骤(11);
(11)等待接收所述策略转换模块发回的处理方案,若收到则执行步骤(12);否则继续等待;
(12)按照所述处理方案执行映射表、数据结构和页面管理函数的更新操作,并删除更新之前的原始数据,执行步骤(13);
(13)向所述策略转换模块发送处理方案完成应答,并继续执行步骤(1)。
优选地,所述决策管理模块具体用于执行下述操作:
(1)等待接收用户通过软件接口发送的运行模式转换请求、策略转换请求,收到请求后执行步骤(2);
(2)若接收到模式转换请求,则执行步骤(3),否则执行步骤(8);
(3)若模式转换请求为将手动模式转换为自动模式,则执行步骤(4),否则执行步骤(7);
(4)启动预设的决策模型,获取决策数据,执行步骤(5);
(5)监控内存状态,根据收集到的相关信息,判断是否需要调整异构内存架构和管理策略,若需要则执行步骤(6);
(6)向所述策略转换模块发送策略转换决策;
(7)若模式转换请求为将自动模式转换为手动模式,则关闭预设决策模型的运行,停止收集内存状态与应用特征相关信息,并删除已收集和保存的数据;
(8)若收到策略转换决策请求,执行步骤(9);
(9)根据所述策略转换决策请求中的目标内存策略模块与当前运行的策略模块形成策略转换决策,执行步骤(6)。
优选地,所述策略转换模块具体用于执行以下操作:
(1)等待接收所述决策管理模块发送的策略转换决策请求,若收到则执行步骤(2);
(2)暂停所述决策管理模块的操作,执行步骤(3);
(3)按照接收到的所述策略转换决策请求,加载所述目标内存策略模块,向所述管理策略模块发送所述策略转换决策请求,以使所述管理策略模块加载所述目标内存策略模块,执行步骤(4);
(4)检测所述目标内存策略模块是否加载完成,若完成则执行步骤(5),否则一直等待;
(5)根据当前内存架构和管理策略与目标内存架构和管理策略,按照预设处理方案,进行页面迁移,并向所述页面管理模块发送页面迁移请求,执行步骤(6);
(6)检测所述页面管理模块是否已经完成所有的页面迁移操作,若完成则执行步骤(7),否则继续等待;
(7)向所述管理策略模块发送策略模块转换的处理方案,执行步骤(8);
(8)等待接收所述管理策略模块发送的完成策略模块转换的应答指令,若接收到则执行步骤(9),否则继续等待;
(9)删除转换之前的原始数据,并继续执行步骤(1)。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)灵活性。面向异构内存的可重构内存管理系统允许用户根据自身需求对内存架构和管理策略进行调整;
(2)适应性。通过预存多个内存策略模块的方法,本系统提供多种内存架构与多种管理策略组合,能够满足应用特征的多样性要求;
(3)低开销。面向异构内存的可重构内存管理系统,以一种软件的方式,在一个系统中断周期内,实现异构内存系统架构和管理策略的变化,大大减少了时间和硬件开销。
附图说明
图1为本发明实施例公开的一种面向异构内存的可重构内存管理系统的结构示意图;
图2为本发明实施例公开的一种面向异构内存的可重构内存管理系统的一种软件模块化封装技术示意图;
图3为本发明实施例公开的一种面向异构内存的可重构内存管理系统中的页面管理模块的工作流程示意图;
图4为本发明实施例公开的一种面向异构内存的可重构内存管理系统中的管理策略模块的工作流程示意图;
图5为本发明实施例公开的一种面向异构内存的可重构内存管理系统中的决策管理模块的工作流程示意图;
图6为本发明实施例公开的一种面向异构内存的可重构内存管理系统中的策略转换模块的工作流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
需要说明的是,本发明是基于DRAM和NVM构成的异构内存系统,使用以操作系统为核心的设计思想,通过将页面使用情况信息写入页表项(Page Table Entry,PTE)的方法,使得操作系统能够获取原来无法获得的硬件信息,进而可以将原有由内存控制器执行的功能转交给操作系统负责;且采用软件模块化封装技术,将异构内存系统和管理策略的硬件部署转化为软件模块,保存于操作系统中。
如图1所示,为本发明实施例公开的一种面向异构内存的可重构内存管理系统的结构示意图,包括:页面管理模块、管理策略模块、决策管理模块以及策略转换模块:其中,页面管理模块与管理策略模块以及策略转换模块相连;管理策略模块与策略转换模块相连;策略转换模块与决策管理模块相连;页面管理模块用于负责页面分配和页面迁移操作;管理策略模块用于保存预设的内存管理策略集,并根据操作系统当前运行的内存管理策略对页面分配和页面迁移操作进行处理;决策管理模块用于接收策略转换请求,经过处理后形成策略转换决策;策略转换模块,用于响应上述策略转换决策,将当前运行的内存管理策略向与上述策略转换决策对应的目标内存管理策略进行转换。
作为一种可选的实施方式,上述预设的内存管理策略集中包括N个内存策略模块,每个内存策略模块包括映射表、与所述映射表对应的数据结构与页面管理函数,其中,不同的异构内存架构封装为不同的映射表,不同的管理策略封装为不同的数据结构与页面管理函数。
其中,内存管理策略集表示存放在管理策略模块中,经过软件模块化封装技术形成的许多内存策略模块的集合。
其中,管理策略模块表示经过软件模块化封装技术,将原来由硬件实现的内存架构和管理策略由软件的方法实现,形成一个软件模块。
其中,异构内存系统在相同的物理架构上,其实现的逻辑架构有两种:(1)并列架构,DRAM和NVM二者按照顺序进行编址,内存系统空间等于DRAM容量加上NVM容量总和。CPU可以通过访存指令自由访问DRAM空间和NVM空间,存储器中的数据也可以由操作系统通过DMA(平均线差指标)读入DRAM和NVM空间;(2)缓存架构,DRAM仅作为NVM的缓存空间使用,不参与内存编址,内存系统容量仅为NVM的容量。其中DRAM空间由内存控制器负责调度和管理,CPU访存指令只能访问NVM地址空间。
其中,为了方便异构内存架构和管理策略转换,可以采用软件模块化封装技术,将硬件架构与管理策略通过软件方式实现,并模块化封装为一个内存策略模块,其中每一个内存策略模块中均包括映射表、数据结构和页面管理函数,其特征在于:不同的逻辑架构封装为不同的映射表,不同的内存管理策略封装为不同的数据结构与页面管理函数,逻辑架构与内存管理策略一同封装形成内存策略模块。
如图2所示,公开了一种面向异构内存的可重构内存管理系统的一种软件模块化封装技术示意图,该软件模块化封装技术,将硬件架构与管理策略通过软件方式实现,并模块化封装为一个内存策略模块,包括映射表、数据结构和页面管理函数,其特征在于:
不同的逻辑架构封装为不同的映射表。缓存架构和并列架构,其本质是内存控制器中页面管理和映射方式的不同。通过将内存控制器执行的功能转交给操作系统负责,因此不同的逻辑架构可以通过软件的形式实现,在操作系统中表现为不同的映射表。
不同的内存管理策略封装为不同的数据结构与页面管理函数。内存管理策略其本质是遵循特定的规则并结合相应的数据结构,进行页面分配、迁移、回收等操作。通过将内存控制器执行的功能交由操作系统负责,因此不同的内存管理策略可以通过软件的形式实现,在操作系统中表现为不同的数据结构与页面管理函数。
逻辑架构与内存管理策略一同封装形成内存策略模块。异构内存中的内存管理策略,都是基于某一种内存逻辑架构之上实现的,二者相互之间联系紧密,因此将内存硬件架构与管理策略进行软件实现之后,把逻辑架构与内存管理策略封装成为一个整体,一个可相互切换的模块预存于操作系统之中。
如图3所示,公开了一种面向异构内存的可重构内存管理系统中的页面管理模块的工作流程示意图,该页面管理模块具体用于执行以下操作:
301:等待接收所述管理策略模块与所述策略转换模块发送的页面分配请求和/或页面迁移请求,收到请求后进行步302;
302:若接收到的请求是页面分配请求,则转向步303,否则转向步骤304;
303:按照所述页面分配请求中的信息,从相应地址空间分配页面;
304:若接收到的请求是页面迁移请求,则转向步骤305;
305:按照所述页面迁移请求中的信息,将待迁移页面加入页面迁移队列,检查所述页面迁移队列中是否存在重复或冲突的迁移操作,若存在,则进行合并或删除处理,然后转入步骤306;
306:检测是否到达预设时钟周期,如果到达,进行步骤307;
307:从所述页面迁移队列中取出一项进行页面迁移操作,完成后进行步骤308;
308:按照所述页面迁移队列中的记录,修改相应映射关系表,完成后进行步骤309;
309:判断所述页面迁移队列是否为空,如果不为空,转向步骤307;若为空,则继续执行步骤301。
如图4所示,公开了一种面向异构内存的可重构内存管理系统中的管理策略模块的工作流程示意图,该管理策略模块具体用于执行以下操作:
401:等待接收操作系统发送的缺页中断请求、页面迁移请求以及所述策略转换模块发送的策略转换决策请求,收到请求后进行步骤402;
402:若接收到缺页中断请求,则转向步骤403;
403:按照当前运行的内存策略模块中的管理策略,决定进行页面分配的地址空间,并执行步骤404;
404:根据管理策略生成操作请求,向所述页面管理模块发送所述操作请求;
405:若接收到页面迁移请求,则执行步骤406;
406:按照当前运行的内存策略模块中的管理策略,决定进行页面迁移操作的地址空间以及页面替换操作,并执行步骤404;
407:若接收到策略转换决策请求,则执行步骤408;
408:进入策略转换阶段,产生系统中断,暂停内存中的数据操作,执行步骤409;
409:载入新的内存策略模块,执行步骤410;
410:向所述策略转换模块发送所述新策略模块的相关信息,执行步骤411;
411:等待接收所述策略转换模块发回的处理方案,若收到则执行步骤412;否则继续等待;
412:按照所述处理方案执行映射表、数据结构和页面管理函数的更新操作,并删除更新之前的原始数据,执行步骤413;
413:向所述策略转换模块发送处理方案完成应答,并继续执行步411。
如图5所示,公开了一种面向异构内存的可重构内存管理系统中的决策管理模块的工作流程示意图,该决策管理模块具体用于执行以下操作:
501:等待接收用户通过软件接口发送的运行模式转换请求、策略转换请求,收到请求后执行步骤502;
502:若接收到模式转换请求,则执行步503,否则执行步骤508;
503:若模式转换请求为将手动模式转换为自动模式,则执行步骤504,否则执行步骤507;
504:启动预设的决策模型,获取决策数据,执行步骤505;
505:监控内存状态,根据收集到的相关信息,判断是否需要调整异构内存架构和管理策略,若需要则执行步骤506;
506:向所述策略转换模块发送策略转换决策;
507:若模式转换请求为将自动模式转换为手动模式,则关闭预设决策模型的运行,停止收集内存状态与应用特征相关信息,并删除已收集和保存的数据;
508:若收到策略转换决策请求,执行步骤509;
509:根据所述策略转换决策请求中的目标内存策略模块与当前运行的策略模块形成策略转换决策,执行步骤506。
其中,面向异构内存的可重构内存管理系统存在两种运行模式,包括手动运行模式和自动运行模式:
(1)手动运行模式是指,提供给用户特定接口,用户可根据需要向系统发出进行架构或管理策略调整的请求。在未接收到请求的时候整个系统的架构和管理策略不会改变;在接到请求之后,按照用户发出的请求,进行架构和管理策略的转换。
(2)自动运行模式是指,当用户无法判断该使用哪一种架构或管理策略比较合适时,可向系统发出进入自动运行模式的请求。由操作系统选择默认架构与管理策略,并可以根据应用运行时特征和当前内存状况,自行做出架构或管理策略转换的决策。当操作系统根据预设决策模型做出需要进行架构或管理策略转换的决策时,操作系统会自动进行架构或管理策略的转换。
如图6所示为本发明实施例公开的一种面向异构内存的可重构内存管理系统中的策略转换模块的工作流程示意图,该策略转换模块具体用于执行以下操作:
601:等待接收所述决策管理模块发送的策略转换决策请求,若收到则执行步骤602;
602:暂停所述决策管理模块的操作,执行步骤603;
603:按照接收到的所述策略转换决策请求,加载所述目标内存策略模块,向所述管理策略模块发送所述策略转换决策请求,以使所述管理策略模块加载所述目标内存策略模块,执行步骤604;
604:检测所述目标内存策略模块是否加载完成,若完成则执行步骤605,否则一直等待;
605:根据当前内存架构和管理策略与目标内存架构和管理策略,按照预设处理方案,进行页面迁移,并向所述页面管理模块发送页面迁移请求,执行步骤606;
606:检测所述页面管理模块是否已经完成所有的页面迁移操作,若完成则执行步骤607,否则继续等待;
607:向所述管理策略模块发送策略模块转换的处理方案,执行步骤608;
608:等待接收所述管理策略模块发送的完成策略模块转换的应答指令,若接收到则执行步骤609,否则继续等待;
609:删除转换之前的原始数据,并继续执行步骤601。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
机译: 一种访问异构内存的方法及内存模块,即异构内存
机译: 使用固定大小的内存池的面向对象的程序内存管理系统和方法
机译: 使用固定大小的内存池的面向对象的程序内存管理系统和方法