一种异构混合内存组件、系统及存储方法与流程

文档序号:19799191发布日期:2020-01-31 14:46阅读:184来源:国知局
一种异构混合内存组件、系统及存储方法与流程

本发明涉及计算机技术领域,尤其涉及一种异构混合内存组件、系统及存储方法。



背景技术:

传统的服务器采用两级存储机制,cpu首先从内部存储存单元中寻找所需的数据,当数据不在内存中时再从外部存储(硬盘)中调取数据。cpu和内存之间的速度差别通过多级缓存得到了解决,但内存与外存之间的速度差距越来越大,达到了10万倍。在大数据处理场合,频繁地访问外存会导致整个系统性能大幅度下降,成为系统性能的瓶颈,制约了数据的访问速度。

现有的技术采用raid0(raid0又称为stripe或striping,代表了所有raid级别中最高的存储性能。)方式来提升外部存储(硬盘)的读写速率,也就是通过多个外部存储设备并行读写的方式来提升整体速率,但服务器的基本数据存取架构并没有改变。比如,用两块硬盘来组成raid0,那么理论速率能够提升到单块硬盘的两倍,但实际速率会低于这个数值。这是因为,采用raid0方式来提升外部存储(硬盘)的读写速率的方式并没有改变传统服务器平台的存取架构,在这种方式下io访问瓶颈仍然存在,cpu仍然要通过速率相对较低的io总线来访问外部存储设备,这就决定了采用这种方式对速率的提升是有条件的,会受到io访问速率的限制。

现有技术中采用nvdimm(nvdimm是在一种集成了dram+非易失性内存芯片的内存条规格,能够在完全断电的时候依然保存完整内存数据)方式提高数据的安全性,即在服务器普通内存的基础上加上等容量或更大容量的flash,平时正常工作时服务器只能访问普通内存(dram)的部分,在服务器掉电瞬间nvdimm会将drm数据备份到flash中,下次恢复供电时,系统又会从flash中将数据恢复到dram里,整个系统恢复到断电前的状态。nvdimm的方式虽然提高了数据的安全性,但是需要与dram同等容量的flash做备份,flash在系统下不可见,仅在掉电和恢复时才可以使用,导致存储空间利用率很低。同时,从dram复制数据到flash需要一定的时间,dram容量越大,复制时间会越长,为完成复制所需要的备用电源也就越大,这就决定了采用nvdimm的方式内存容量无法做到很大,限制了这一技术不适合在大数据服务器的推广应用。



技术实现要素:

本发明要解决的技术问题在于,针对上述现有技术中传统服务器架构对外部存储大数据访问的瓶颈,以及在异常断电、死机情况下,无法有效地保护内存数据的问题,提供一种异构混合内存组件、系统及存储方法。

本发明解决其技术问题所采用的技术方案是:一方面,构造一种异构混合内存组件,包括连接于处理器的内存控制器、存储单元阵列及缓冲区;其中,

所述内存控制器,用于接收所述处理器的写/读请求,根据所述写/读请求中的地址信息检测所述处理器访问的页面所对应的单位空间,控制数据从所述处理器通过所述缓冲区写入至所述存储单元阵列,或控制数据从所述存储单元阵列通过所述缓冲区读出至所述处理器;

所述存储单元阵列,用于按照第一存储类型并以多个页面的方式存储写入/读出的数据;

所述缓冲区,用于按照第二存储类型并设置对应于所述多个页面的多个单位空间存储写入/读出的数据,所述第二存储方式的读写速率大于所述第一存储方式的读写速率。

在本发明所述的异构混合内存组件中,所述内存控制器包括数据通道、处理器接口、地址存储模块、缓存模块、控制接口以及管理接口;其中,

所述数据通道,用于控制所述地址信息和所述数据的存储、所述数据的写入和/或读出;

所述处理器接口,连接于所述处理器,用于接收所述处理器的写/读请求,从所述处理器写入数据,读出数据至所述处理器;

所述地址存储模块,用于存储所述写/读请求中的地址信息;

所述缓存模块,用于依据所述地址信息判断自身的空闲状态,并存储所写入/读出的数据;

所述控制接口,连接于所述缓冲区,用于检测所述处理器访问的页面对应的单位空间是否存在于所述缓冲区中,若是,将所述数据写入/读出所述缓冲区,若否,则依据所访问的页面于所述缓冲区中调入对应的单位空间,并将所述数据写入/读出所述缓冲区;

所述管理接口,连接于所述存储单元阵列,用于将所述数据写入/读出所述存储单元阵列。

在本发明所述的异构混合内存组件中,所述内存控制器还包括缓冲区页面状态存储模块及写/读缓冲模块;其中,

所述缓冲区页面状态存储模块,用于存储所述缓冲区的所述页面对应的单位空间的使用情况;

所述写/读缓冲模块,用于在所述控制接口与所述管理接口之间缓冲所读入/写出的数据。

在本发明所述的异构混合内存组件中,所述缓冲区还用于在所述单位空间全部被使用时,根据所述使用情况调出使用频率最低的单位空间至所述存储单元阵列对应的页面中,在从所述存储单元阵列的页面中调入对应的单位空间。

在本发明所述的异构混合内存组件中,所述管理接口采用多个数据通道连接至所述存储单元阵列。

在本发明所述的异构混合内存组件中,所述内存控制器还用于将所述缓冲区的单位空间的修改信息存入所述存储单元阵列中。

一方面,提供一种异构混合内存系统,包括处理器以及如上述的异构混合内存组件。

一方面,提供一种异构混合内存存储方法,该方法采用上述异构混合内存系统,包括写入数据及读出数据的步骤;

其中,写入数据的步骤包括:

所述内存控制器接收所述处理器的写请求,根据所述写请求中的地址信息检测所述处理器访问的页面所对应的单位空间,控制数据从所述处理器通过所述缓冲区写入至所述存储单元阵列;

读出数据的步骤包括:

所述内存控制器接收所述处理器的读请求,根据所述读请求中的地址信息检测所述处理器访问的页面所对应的单位空间,控制数据从所述存储单元阵列通过所述缓冲区读出至所述处理器;

所述存储单元阵列按照第一存储类型并以多个页面的方式存储写入/读出的数据;所述缓冲区按照第二存储类型并设置对应于所述多个页面的多个单位空间存储写入/读出的数据;所述第二存储方式的读写速率大于所述第一存储方式的读写速率。

在本发明所述的异构混合内存存储方法中,所述写入数据的步骤包括以下子步骤:

s11、所述处理器向所述异构混合内存组件发出写入数据的请求。

s12、所述异构混合内存组件根据所述地址信息连接至所述处理器的寄存器中。

s13、检测所述处理器访问的页面对应的单位空间是否存在于所述缓冲区中,若是,将所述数据写入所述缓冲区中对应的单位空间,若否,则依据所访问的页面于所述缓冲区中分配另一单位空间,并调入到对应的所述另一单位空间,并将所述数据写入所述另一单位空间。

在本发明所述的异构混合内存存储方法中,所述读出数据的步骤包括以下子步骤:

s21、所述处理器向所述异构混合内存组件发出读出数据的请求。

s22、所述异构混合内存组件根据所述地址信息连接至所述处理器的寄存器中。

s23、检测所述处理器访问的页面对应的单位空间是否存在于所述缓冲区中,若是,将所述数据读出所述缓冲区,若否,则依据所访问的页面于所述缓冲区中调入对应的单位空间,并将所述数据读出所述缓冲区。

上述公开的一种异构混合内存组件、系统及存储方法具有以下有益效果:改变传统服务器的数据存取架构,将外部存储设备提升到与内部存储平级的层面,外部存储设备与内存共享同等的数据带宽,而不再通过io访问,大幅度提升外存的访问效率,借助外部存储设备的非易失性的特点,对cpu数据进行保护,即断电不会丢失,断电恢复后可接续工作。

附图说明

图1为本发明一实施例提供的一种异构混合内存组件的结构框图;

图2为本发明另一实施例提供的一种异构混合内存组件的结构框图;

图3为本发明提供的内存控制器的结构框图;

图4为本发明提供的一种异构混合内存系统的结构框图;

图5为本发明提供的一种异构混合内存存储方法的流程图;

图6为本发明提供的写入数据的流程图;

图7为本发明提供的读出数据的流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明提供了一种异构混合内存组件、系统及存储方法,其中,该系统包含了cpu、外围的扩展总线、io接口以及各种异构的内存模块(也称“内存组件”),该系统的核心在于nvm(non-volatilerandomaccessmemory,非易失性随机访问存储器)内存模块的设计和nvm/dram(dynamicrandomaccessmemory,动态随机访问存储器)内存模块的混合管理。而nvm内存模块的核心在于设计一个专用的nvm控制器来连接和管理cpu的接口通信和nvm的接口通信。本发明所提出的异构混合内存组件、系统及存储方法可应用于工业服务器系统中。

参见图1,图1为本发明一实施例提供的一种异构混合内存组件100的结构框图,该异构混合内存组件100包括连接于处理器的内存控制器1、存储单元阵列2及缓冲区3。

所述内存控制器1用于接收所述处理器的写/读请求,根据所述写/读请求中的地址信息检测所述处理器访问的页面所对应的单位空间,控制数据从所述处理器通过所述缓冲区3写入至所述存储单元阵列2,或控制数据从所述存储单元阵列2通过所述缓冲区3读出至所述处理器。

所述存储单元阵列2用于按照第一存储类型并以多个页面的方式存储写入/读出的数据。存储单元阵列2优选为nvm阵列2,那么相应的内存控制器1则为nvm控制器。

所述缓冲区3,用于按照第二存储类型并设置对应于所述多个页面的多个单位空间存储写入/读出的数据,所述第二存储方式的读写速率大于所述第一存储方式的读写速率。由于cpu中集成的内存控制器1只能支持dram的传输协议,故缓冲区3优选由ddr3dram颗粒构成。而目前的技术条件下,nvm的读写速率仍然低于dram,即第二存储方式(对应于dram)的读写速率大于所述第一存储方式(对应于nvm)的读写速率,因此,在nvm内存模块中需要设计一套完整的子系统使nvm的读写符合cpu内存控制器1的要求。

参见图2,图2为本发明另一实施例提供的一种异构混合内存组件100的结构框图,该实施例不同于上一实施例之处在于,该实施例具体化了异构混合内存组件100的各组成部分。

该实施例中,所述内存控制器1为nvm控制器,所述存储单元阵列2为nvm阵列2,所述缓冲区3为nvm缓冲区3,并优选由ddr3dram颗粒构成,所述内存控制器1连接到cpu的ddr3dimm接口,同时,提供后备电源为nvm控制器供电,以及提供spd(serialpresencedetect),即内存模组的配置信息。

参见图3,图3为本发明提供的内存控制器1的结构框图,该内存控制器1采用如图2所示的nvm控制器,nvm控制器包括了与cpu连接的dram内存接口(即处理器接口12),与nvm缓冲区3连接的缓冲区3控制接口15(即控制接口15),与nvm阵列2连接的nvm管理接口16(即管理接口16),以及在相互之间起到连接关系的数据通道及控制逻辑模块。nvm控制器以“页”的方式读写和缓冲数据,nvm缓冲区3被划分出若干个虚拟的单位空间,每个单位空间存储一页数据。

综合上述内存控制器1的结构,内存控制器1包括数据通道11、处理器接口12、地址存储模块13、缓存模块14、控制接口15、管理接口16、缓冲区页面状态存储模块17及写/读缓冲模块18。

所述数据通道11,用于控制所述地址信息和所述数据的存储、所述数据的写入和/或读出。

所述处理器接口12,连接于所述处理器,用于接收所述处理器的写/读请求,从所述处理器写入数据,读出数据至所述处理器;即图3中的dram内存接口。

所述地址存储模块13,用于存储所述写/读请求中的地址信息;即图3中的地址/读写状态信息框。

所述缓存模块14,用于依据所述地址信息判断自身的空闲状态,并存储所写入/读出的数据;即图3中的cache框。

所述控制接口15,连接于所述缓冲区3,用于对缓冲区3的数据读写进行管理,具体的,用于检测所述处理器访问的页面对应的单位空间是否存在于所述缓冲区3中,若是,将所述数据写入/读出所述缓冲区3中对应的单位空间,若否,则依据所访问的页面于所述缓冲区3中分配新的单位空间(即另一单位空间),并调入到这个新的单位空间,并将所述数据写入/读出所述缓冲区3;即图3中的缓冲区3控制接口15。此处的控制接口15设计为一个双通道向的控制器接口,既可以与前端的dram内存数据通信,又可以与后端nvm数据(即存储单元阵列2)通信,起到桥梁的作用。nvm缓冲区3的工作效率则影响着整个系统的性能,前端的地址/读写状态信息寄存器、cache、缓冲区3页面状态表都是采用控制器内部的高速静态ram,对nvm缓冲区3的占用时间较少,但是后端的nvm相对读写速度就低了很多,为此在中间设计了nvm的写缓冲和读缓冲。当需要写nvm时,缓冲区3控制接口15只需要把页数据放到nvm写缓冲区18,后续的工作由nvm管理接口16完成,不会占用缓冲区3控制接口15的时间。当需要读nvm时,控制器通知nvm管理接口16预读取,nvm管理接口16完成读取后先把数据放在nvm读缓冲区18中,并通知缓冲区3控制接口15来取页数据。

所述管理接口16,连接于所述存储单元阵列2,用于将所述数据写入/读出所述存储单元阵列2。即图3中的nvm管理接口16。所述管理接口16采用多个数据通道连接至所述存储单元阵列2。nvm管理接口16的另一项任务就是提升nvm模块的读写速率。这里,nvm泛指所有类型的非易失性随机访问存储器,目前主流的nvm器件包括:相变存储器(pcm)、电阻存储器(rram)、铁电存储器(fram)等,本应用中采用了技术相对成熟的相变存储器(pcm),但其读写速度仍然远低于目前通用的ddr3dram存储器件。因为,提升nvm内存模块整体的读写速度成为整个异构混合内存存储方式的工业服务器性能的关键,除了前面提到的采用dram进行缓冲外,nvm管理接口16对nvm阵列2的管理方法也是非常关键的环节。在本设计案例中,nvm管理接口16对nvm阵列2采用多通道并行传输的管理方式,把页数据分布到多个独立的通道读写。比如,本案例中用4个通道同时读写nvm阵列2,与1个通道相比读写速率可以提升4倍。

所述缓冲区页面状态存储模块17,用于数据通道存储所述缓冲区3的所述页面对应的单位空间的使用情况;缓冲区页面状态存储模块17即图3中的缓冲区页面状态表的方框。缓冲区页面状态存储模块17可以将缓冲区3的存储情况列为表,该表为一个特殊的存储空间,用于记录nvm缓冲区3的页面使用情况,配合控制器管理页面的调入和调出。

所述写/读缓冲模块18,用于在所述控制接口15与所述管理接口16之间缓冲所读入/写出的数据。即图3中的nvm写缓冲以及nvm读缓冲。

此外,所述缓冲区3还用于在所述单位空间全部被使用时,根据所述使用情况调出使用频率最低的单位空间至所述存储单元阵列2对应的页面中,在从所述存储单元阵列2的页面中调入对应的单位空间。即内存控制器1将数据从nvm调入nvm缓冲区3遵循以下原则:当nvm缓冲区3有空闲的空间时,占用空闲的空间;当nvm缓冲区3全部被使用时,控制器先将使用频率最低的页调出(存入nvm中),再调入对应的页。

所述内存控制器1还用于将所述缓冲区3的单位空间的修改信息存入所述存储单元阵列2中。为了保证nvm内存模块数据的安全性,在异构混合内存存储方式的工业服务器中做了以下两项数据安全性设计。一是设计了一条数据保存指令,通过该指令将nvm内存模块中nvm缓冲区3做过修改的页主动写入nvm中。二是断电时,截获断电信息,在nvm控制器的控制下自动将nvm内存模块中nvm缓冲区3做过修改的页写入nvm中,以做到对重要数据的实时保护。

参见图4,图4为本发明提供的一种异构混合内存系统200的结构框图,本发明的另一方面还提供一种异构混合内存系统200,包括处理器以及如上述的异构混合内存组件100。图4中,除了包括异构混合内存组件(对应于nvm内存模块)以及处理器(对应于cpu0-cpu3)以外,还包括dram内存模块、扩展总线以及io接口。

参见图5,图5为本发明提供的一种异构混合内存存储方法的流程图,本发明的再一方面还提供一种异构混合内存存储方法,该方法采用上述异构混合内存系统200,包括写入数据及读出数据的步骤;

其中,写入数据的步骤包括:

所述内存控制器1接收所述处理器的写请求,根据所述写请求中的地址信息检测所述处理器访问的页面所对应的单位空间,控制数据从所述处理器通过所述缓冲区3写入至所述存储单元阵列2。

读出数据的步骤包括:

所述内存控制器1接收所述处理器的读请求,根据所述读请求中的地址信息检测所述处理器访问的页面所对应的单位空间,控制数据从所述存储单元阵列2通过所述缓冲区3读出至所述处理器。

所述存储单元阵列2按照第一存储类型并以多个页面的方式存储写入/读出的数据;所述缓冲区3按照第二存储类型并设置对应于所述多个页面的多个单位空间存储写入/读出的数据;所述第二存储方式的读写速率大于所述第一存储方式的读写速率。

参见图6,图6为本发明提供的写入数据的流程图,所述写入数据的步骤包括以下子步骤:

其中,步骤s101-s103为处理器的执行流程,步骤s111-s118为异构混合内存组件100的执行流程。

s101、cpu的应用层提出写nvm数据的请求,转至步骤s111;

s102、cpu的驱动层向nvm内存模块写数据,转至步骤s112;

s103、完成写入数据的步骤;

s111、cache是否空闲,若是,转至步骤s102,若否,转至步骤s101。

s112、nvm内存模块接收地址/读写信息。

s113、数据保存到cache中。

s114、判断数据所在页是否在缓冲区3中,若是,转至步骤s118,若否,转至步骤s115。

s115、缓冲区3是否空闲,若是,转至步骤s118,若否,转至步骤s116。

s116、调出缓冲区3中不常用的页面。通过存储所述缓冲区3的所述页面对应的单位空间的使用情况;所述缓冲区3在所述单位空间全部被使用时,根据所述使用情况调出使用频率最低的单位空间至所述存储单元阵列2对应的页面中,在从所述存储单元阵列2的页面中调入对应的单位空间。

s117、从nvm调入数据所在的页面。

s118、数据写入缓冲区3,转至步骤s103。

综合上述写入数据的步骤,写入数据的步骤可以总结为以下子步骤:

s11、处理器向所述异构混合内存组件100发出写入数据的请求。

s12、异构混合内存组件100判断cache(即缓存)是否空闲,在缓存空闲情况下控制器将ddr3周期信息放在地址/读写状态信息相关寄存器中。

s13、判断所访问的页面是否在缓冲区3当中,如果在缓冲区3中就直接写入对应的数据;如果不在缓冲区3且写入数据是非整页数据则命令控制接口15将对应的页面从nvm调入缓冲区3,然后再写入对应的数据;如果不在缓冲区3且写入数据是整页数据则写入缓冲区3的空闲单位空间,并更新“缓冲区页面状态表”。

参见图7,图7为本发明提供的读出数据的流程图,所述读出数据的步骤包括以下子步骤:

读出数据的流程中,s201-s205为处理器的执行流程,步骤s211-s216为异构混合内存组件100的执行流程。

s201、应用层提出读nvm数据请求,即异构混合内存组件100执行步骤s211-s216,处理器执行步骤s202-s205。

s202、驱动层从nvm内存模块读数据。

s203、判断数据是否有效,若是,转至步骤s204,若否,转至步骤s202。

s204、屏蔽数据标志的附加信息。

s205、完成读出数据的步骤。

s211、nvm内存模块接收地址/读写信息。

s212、返回数据标志置为无效。

s213、判断访问页面是否在缓冲区3,若是,转至步骤s215,若否,转至步骤s214。

s214、从nvm调入所在页面的数据。

s215、缓冲区3数据调入cache中。

s216、返回数据标志置为有效。

综合上述读出数据的步骤,读出数据的步骤可以总结为以下子步骤:

s21、处理器向所述异构混合内存组件100发出读出数据的请求。

s22、内存控制器1将ddr3周期信息放在地址/读写状态信息相关寄存器中。

s23、判断所访问单元所在页面是否在缓冲区3当中,如果在缓冲区3中就从cache中将数据返回给cpu,完成此次操作;如果不在缓冲区3中则命令控制接口15将对应的页面从nvm调入缓冲区3,在下次cpu访问时提供所需要的数据。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1