一种平移非易失性存储器NVM的数据的方法及装置与流程

文档序号:12597066阅读:252来源:国知局
一种平移非易失性存储器NVM的数据的方法及装置与流程

本发明涉及电子技术领域,尤其涉及一种平移非易失性存储器NVM的数据的方法及装置。



背景技术:

DRAM(Dynamic Random Access Memory,动态随机存取存储器)是最为常见的系统内存。DRAM只能将数据保持很短的时间,为了保持数据,DRAM必须隔一段时间刷新一次,如果DRAM中的存储单元没有被刷新,则存储单元中存储的信息就会丢失,因此在DRAM中存在的这种容易丢失信息的存储单元被称为带尾失效单元(Tail Bits)。现有技术通过采用NVM(Non-Volatile Memory,非易失性存储器)取代DRAM作为系统内存,将DRAM的数据映射到NVM中,因此在NVM的使用过程中提高NVM的寿命成为当前的研究重点。

在DRAM与NVM组成混合存储器结构中,当在DRAM和NVM都没有命中到目标数据时,则将HDD(Hard Dick Drive,硬盘驱动器)中存储的目标数据调入到NVM中,再由NVM将目标数据调回DRAM。若DRAM此时已经占满,则需要将DRAM中不常用的数据写回NVM,由此增加了NVM承载数据的负担。第一种现有技术通过查询调入DRAM里的不常用的数据是否有被改写的记录而将被改写过的不常用的数据调回NVM,以减少NVM承载数据的负担。然而,即使是被改写过的不常用的数据的容量也非常大,需要有较大容量的NVM存储才能实现上述方法,对于少量NVM以及大量DRAM的混合存储器结构则难以实现。此外,第一种现有技术的混合存储器结构需要NVM位于DRAM的下一级才得以实现,否则无法将被改写过的不常用的数据调回NVM。第二种现有技术采用了少量NVM以及大量DRAM的混合存储器结构,通过将Tail Bits中的数据固定映射至NVM中的行地址,并且降低DRAM的刷新频率(即延长DRAM的刷新周期)从而降低系统的开销,但如果Tail Bits中存储着动态数据(即擦写频率高的数据),由于动态数据的擦写频率高,在NVM中存储着动态 数据的行地址上擦写的次数也相应增多,因此容易导致存储单元的损坏,降低NVM的寿命。



技术实现要素:

本发明提供一种平移非易失性存储器NVM的数据的方法及装置,可减少NVM中存储数据的行地址的擦写次数,提高NVM的寿命。

本发明第一方面提供一种平移非易失性存储器NVM的数据的方法,包括:

将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据;

记录映射后的NVM被擦写的次数;

若所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据。

结合本发明第一方面的实现方式,在本发明的第一方面的第一种可能的实现方式中,所述将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址之前,所述方法还包括:

将所述第一数据存储在DRAM的带尾失效单元。

结合本发明第一方面的第一种可能的实现方式,在本发明的第一方面的第二种可能的实现方式中,所述记录映射后的NVM被擦写的次数的条件为所述第一数据还包括动态数据,所述动态数据为擦写频率大于或等于所述预设频率的数据。

结合本发明第一方面的第二种可能的实现方式,在本发明的第一方面的第三种可能的实现方式中,所述静态数据包括代码数据和/或常量数据。

结合本发明第一方面的第三种可能的实现方式,在本发明的第一方面的第四种可能的实现方式中,所述方法还包括:

确定平移后的所述第一数据在所述NVM的第二行地址;

更新映射表中存储的所述第一数据在所述DRAM的第三行地址与所述第一数据在所述NVM的第二行地址之间的映射关系。

本发明第二方面提供一种平移非易失性存储器NVM的数据的装置,包括:

映射模块,用于将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据;

记录模块,用于记录所述映射模块映射后的NVM被擦写的次数;

平移模块,用于若所述记录模块记录的所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据。

结合本发明第二方面的实现方式,在本发明的第二方面的第一种可能的实现方式中,所述装置还包括:

存储模块,用于将所述第一数据存储在DRAM的带尾失效单元。

结合本发明第二方面的第一种可能的实现方式,在本发明的第二方面的第二种可能的实现方式中,所述记录模块记录所述映射模块映射后的NVM被擦写的次数的条件为所述第一数据还包括动态数据,所述动态数据为擦写频率大于或等于所述预设频率的数据。

结合本发明第二方面的第二种可能的实现方式,在本发明的第二方面的第三种可能的实现方式中,所述静态数据包括代码数据和/或常量数据。

结合本发明第二方面的第三种可能的实现方式,在本发明的第二方面的第四种可能的实现方式中,所述装置还包括:

确定模块,用于确定所述平移模块平移后的所述第一数据在所述NVM的第二行地址;

更新模块,用于更新映射表中存储的所述第一数据在所述DRAM的第三行地址与所述第一数据在所述NVM的第二行地址之间的映射关系。

采用本发明,可将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据,记录映射后的NVM被擦写的次数,若所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据,可减少持续在NVM的第一行地址上执行的擦写次数,降低NVM的第一行地址的损坏的概率,从而提高NVM的寿命。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的一种平移非易失性存储器NVM的数据的方法的一实施例的流程示意图;

图2是本发明实施例的一种平移非易失性存储器NVM的数据的方法的另一实施例的流程示意图;

图3是本发明实施例的一种平移非易失性存储器NVM的数据的方法的另一实施例的DRAM的结构示意图;

图4是本发明实施例的一种平移非易失性存储器NVM的数据的方法的另一实施例的平移第一数据的第一种示意图;

图5是本发明实施例的一种平移非易失性存储器NVM的数据的方法的另一实施例的平移第一数据的第二种示意图;

图6是本发明实施例的一种平移非易失性存储器NVM的数据的装置的一实施例的结构示意图;

图7是本发明实施例的一种平移非易失性存储器NVM的数据的装置的另一实施例的结构示意图;

图8是本发明实施例的一种平移非易失性存储器NVM的数据的装置的另一实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

采用本发明实施例,可减少NVM中存储数据的行地址的擦写次数,提高NVM的寿命。

请参阅图1,图1是本发明实施例的一种平移非易失性存储器NVM的数据的方法的一实施例的流程示意图。其中,NVM可为PCM(Phase Change Memory,相变存储器)、ReRAM(Resistive RAM,可变电阻式随机存取器)或者MRAM(Magnetic Random Access Memory,一种非挥发性的磁性随机存储器)。PCM是一种非易失存储设备,它利用材料的可逆转的相变来存储信息。ReRAM能提供更低的功耗。MRAM拥有静态随机存储器的高速读取写入能力,以及DRAM的高集成度,而且基本上可以无限次地重复写入。PCM、ReRAM以及MRAM均是NVM的其中一种类型的存储器。

如图1所示,本发明实施例的一种平移非易失性存储器NVM的数据的方法一实施例的可以包括以下步骤。

S100,将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据。

具体实现中,可将DRAM中的第一数据映射到NVM的第一行地址,第一数据包括擦写频率较低的静态数据。另外,可将擦写频率较高的动态数据继续存储在DRAM中。其中,可规定擦写频率小于预设频率的数据为静态数据,而擦写频率大于或等于预设频率的数据则为动态数据。

作为一种可实施的方式,静态数据可为代码数据或者常量数据。

S101,记录映射后的NVM被擦写的次数。

具体实现中,可采用计数器记录NVM被擦写的次数。具体的,在将DRAM中的静态数据映射到NVM的第一行地址之后,当读取NVM中的第一数据命中且对命中的第一数据执行写操作时,此时是对NVM的第一行地址进行写操作,则计数器记录NVM被擦写的次数。

S102,若所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据。

具体实现中,当计数器记录的所述映射后的NVM被擦写的次数大于或等于预设次数时,则将NVM的第一行地址存储的第一数据整体按照预设规则进行平移,例如预设规则可为设定的平移量,则可根据设定的平移量将第一数据整体平移至NVM的第二行地址(NVM的第一行地址平移设定的平移量之后处于第二行地址),减少对NVM的第一行地址持续的写操作,降低NVM的第一行地 址的损坏的概率。在将第一数据从第一行地址平移到第二行地址之后,后续在读取第一数据命中时,则在NVM的第二行地址上执行写操作。若在NVM的第二行地址命中失败,则转至DRAM的相应地址读取。

采用本发明实施例,可将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据,记录映射后的NVM被擦写的次数,若所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据,可减少持续在NVM的第一行地址上执行的擦写次数,降低NVM的第一行地址的损坏的概率,从而提高NVM的寿命。

请参阅图2,图2是本发明实施例的一种平移非易失性存储器NVM的数据的方法的另一实施例的流程示意图。

如图2所示,本发明实施例的一种平移非易失性存储器NVM的数据的方法另一实施例的可以包括以下步骤。

S200,将所述第一数据存储在DRAM的带尾失效单元。

具体实现中,如图3所示为DRAM的结构示意图,为了满足少量NVM与大量DRAM组成的混合存储器结构,需要通过降低DRAM的刷新频率以降低系统的功耗,由此对于时间保持性不能满足刷新频率低的带尾失效单元(Tail Bits)则容易导致失效。由于Tail Bits不能满足擦写频率的要求,因此本实施例根据Tail Bits将DRAM划分为两部分,第一部分为包含Tail Bits的DRAM页,第二部分为不包含Tail Bits的DRAM页。此外,优先将第一数据分配至包含Tail Bits的DRAM页,并将动态数据分配至不包含Tail Bits的DRAM页。所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据,而动态数据则为擦写频率大于或等于所述预设频率的数据。

作为一种可实施的方式,所述静态数据包括代码数据和/或常量数据。

作为一种可实施的方式,如图3所示,若静态数据仍未占满包含Tail Bits的DRAM页,则需要填充部分动态数据在包含Tail Bits的DRAM页中,直至填满包含Tail Bits的DRAM页为止,此时第一数据还包括动态数据。如图4所示,图4中的存储器用于存储预设次数的数据,控制器用于控制DRAM以更低的频率进行刷新。另外,将SSD(Solid State Drives,固态硬盘)或HDD(Hard Dick Drive,硬盘驱动器)内存储的静态数据优先分配至包含Tail Bits的DRAM页,并将动态数据分配至不包含Tail Bits的DRAM页。

S201,将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据。

具体实现中,将包含Tail Bits的DRAM页存储的第一数据(包括静态数据以及动态数据)映射到NVM的第一行地址,由于NVM中存在动态数据,因此增高了NVM被擦写的几率,影响了NVM的寿命。因此本实施例需要将存储第一数据的NVM的第一行地址进行更换。具体的,如图4所示,图4中的Tail Bits所在行为Tail Bits在DRAM页中所在的位置,NVM初始行地址为第一数据平移后在NVM中的第一行地址。例如,第一数据内包括第一子数据、第二子数据、第三子数据以及第四子数据,并分别将各个子数据存储在第一Tail Bits、第二Tail Bits、第三Tail Bits以及第四Tail Bits中。其中,第一Tail Bits位于DRAM页的第三行地址中的第一子行地址;第二Tail Bits位于DRAM页的第三行地址中的第二子行地址;第三Tail Bits位于DRAM页的第三行地址中的第五子行地址;第四Tail Bits位于DRAM页的第三行地址中的第八子行地址。在将第一子数据、第二子数据、第三子数据以及第四子数据映射至NVM之后,分别将第一子数据、第二子数据、第三子数据以及第四子数据存储在NVM的第一行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址。对于NVM的初始行地址的设定本实施例不作限定。将包含Tail Bits的DRAM页存储的第一数据映射到NVM的第一行地址能够降低对包含Tail Bits的DRAM页的擦写次数,从而延长DRAM的寿命。此外,通过仅将Tail Bits中存储的第一数据映射到NVM中,能够减少NVM承载数据的压力,降低对NVM的容量的要求,实现少量NVM以及大量DRAM的混合存储器结构。

S202,记录映射后的NVM被擦写的次数。

具体实现中,所述记录映射后的NVM被擦写的次数的条件为所述第一数据还包括动态数据,所述动态数据为擦写频率大于或等于所述预设频率的数据。具体的,当检测到NVM的第一行地址存储的第一数据还包括动态数据时,则将WL置为高电平,控制计数器记录NVM被擦写的次数。如图5所示,可将计数器的初始状态置于最大值(即预设次数),每当检测到NVM读取命中并且执行 写操作时则递减1。若检测到NVM没有读取命中,则在不含Tail Bits的DRAM页继续读取。

作为一种可实施的方式,计数器还可在将DRAM中存储的第一数据映射到NVM的第一行地址之后开启记录NVM被擦写的次数。

S203,若所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据。

具体实现中,如图5所示,以NVM被擦写的次数等于预设次数为例,当计数器递减至0时,表明NVM被擦写的次数等于预设次数,由此将第一数据包括的各个数据从第一行地址按照预设规则进行整体平移。其中,预设规则可为平移N行地址或者按照预设的逻辑函数制定的平移量。因此,可避免对NVM的第一行地址的反复擦写,降低第一行地址的损坏概率,延长NVM的寿命;此外,对第一数据进行整体平移可以避免针对各Tail Bits的映射次数进行统计而带来的庞大硬件面积开销;再者,对第一数据进行整体平移还可以避免各种比较运算所消耗的时间,能够满足内存要求工作速度快的要求。

作为一种可实施的方式,N为大于或等于1的正整数,N例如可以为1、3、6、12等正整数。具体的,当N等于3时,则将第一行地址存储的第一数据平移至第二行地址(第二行地址与第一行地址之间间隔3个行的平移量),即将分别存储在NVM的第一行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址的第一子数据、第二子数据、第三子数据以及第四子数据平移至第二行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址。

作为一种可实施的方式,平移量的具体数据可存储在寄存器中。

S204,确定平移后的所述第一数据在所述NVM的第二行地址。

具体实现中,如图5所示,当将第一数据整体平移之后,第一数据此时在NVM中的实际行地址位于NVM的第二行地址,因此可确定第一数据在NVM的第二行地址。如第一子数据、第二子数据、第三子数据以及第四子数据平移后分别位于第二行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址。

S205,更新映射表中存储的所述第一数据在所述DRAM的第三行地址与所述第一数据在所述NVM的第二行地址之间的映射关系。

具体实现中,根据NVM的第二行地址,对映射表中存储的第一数据在包含Tail Bits的DRAM中的第三行地址与第一数据在NVM中新的位置的映射关系进行更新,例如可将映射表中第一数据在NVM的第一行地址上叠加第一数据平移时设定的平移量,由此实现实时更新第一数据在DRAM与NVM之间的映射关系的功能。具体的,在平移第一数据之后,映射表内更新后的映射关系为:第一子数据在DRAM页的第三行地址中的第一子行地址与第一子数据在NVM的第二行地址中的第一子行地址对应;第二子数据在DRAM页的第三行地址中的第二子行地址与第一子数据在NVM的第二行地址中的第二子行地址对应;第三子数据在DRAM页的第三行地址中的第五子行地址与第一子数据在NVM的第二行地址中的第三子行地址对应;第四子数据在DRAM页的第三行地址中的第八子行地址与第一子数据在NVM的第二行地址中的第四子行地址对应。

采用本发明实施例,可将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据,记录映射后的NVM被擦写的次数,若所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据,可减少持续在NVM的第一行地址上执行的擦写次数,降低NVM的第一行地址的损坏的概率,从而提高NVM的寿命。此外,通过仅将Tail Bits中存储的第一数据映射到NVM中,能够减少NVM承载数据的压力,降低对NVM的容量的要求,实现少量NVM以及大量DRAM的混合存储器结构。

图6是本发明实施例的一种平移非易失性存储器NVM的数据的装置的一实施例的结构示意图。如图6所示的装置包括映射模块600、记录模块601以及平移模块602。

映射模块600,用于将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据;

记录模块601,用于记录所述映射模块600映射后的NVM被擦写的次数;

平移模块602,用于若所述记录模块601记录的所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述 第一数据。

具体实现中,将包含Tail Bits的DRAM页存储的第一数据(包括静态数据以及动态数据)映射到NVM的第一行地址,由于NVM中存在动态数据,因此增高了NVM被擦写的几率,影响了NVM的寿命。因此本实施例需要将存储第一数据的NVM的第一行地址进行更换。具体的,如图4所示,图4中的Tail Bits所在行为Tail Bits在DRAM页中所在的位置,NVM初始行地址为第一数据平移后在NVM中的第一行地址。例如,第一数据内包括第一子数据、第二子数据、第三子数据以及第四子数据,并分别将各个子数据存储在第一Tail Bits、第二Tail Bits、第三Tail Bits以及第四Tail Bits中。其中,第一Tail Bits位于DRAM页的第三行地址中的第一子行地址;第二Tail Bits位于DRAM页的第三行地址中的第二子行地址;第三Tail Bits位于DRAM页的第三行地址中的第五子行地址;第四Tail Bits位于DRAM页的第三行地址中的第八子行地址。在将第一子数据、第二子数据、第三子数据以及第四子数据映射至NVM之后,分别将第一子数据、第二子数据、第三子数据以及第四子数据存储在NVM的第一行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址。对于NVM的初始行地址的设定本实施例不作限定。将包含Tail Bits的DRAM页存储的第一数据映射到NVM的第一行地址能够降低对包含Tail Bits的DRAM页的擦写次数,从而延长DRAM的寿命。

具体实现中,所述记录映射后的NVM被擦写的次数的条件为所述第一数据还包括动态数据,所述动态数据为擦写频率大于或等于所述预设频率的数据。具体的,当检测到NVM的第一行地址存储的第一数据还包括动态数据时,则将WL(Weal Leveling,耗损均衡)置为高电平,控制计数器记录NVM被擦写的次数。其中,WL是控制数据平移的开关,当WL=1(即WL置为高电平)时,如果动态数据出现在含Tail Bits的DRAM页中,就会开启NVM中存储的第一数据的平移。当WL=0(即WL置为低电平)时,即使动态数据出现在含Tail Bits的DRAM页中,也不会开启NVM中存储的第一数据的平移。

具体实现中,如图5所示,可将计数器的初始状态置于最大值(即预设次数),每当检测到NVM读取命中并且执行写操作时则递减1。若检测到NVM没有读取命中,则在不含Tail Bits的DRAM页继续读取。

作为一种可实施的方式,计数器还可在将DRAM中存储的第一数据映射到 NVM的第一行地址之后开启记录NVM被擦写的次数。

具体实现中,如图5所示,以NVM被擦写的次数等于预设次数为例,当计数器递减至0时,表明NVM被擦写的次数等于预设次数,由此将第一数据包括的各个数据从第一行地址按照预设规则进行整体平移。其中,预设规则可为平移N行地址或者按照预设的逻辑函数制定的平移量。因此,可避免对NVM的第一行地址的反复擦写,降低第一行地址的损坏概率,延长NVM的寿命;此外,对第一数据进行整体平移可以避免针对各Tail Bits的映射次数进行统计而带来的庞大硬件面积开销;再者,对第一数据进行整体平移还可以避免各种比较运算所消耗的时间,能够满足内存要求工作速度快的要求。

作为一种可实施的方式,N为大于或等于1的正整数,N例如可以为1、3、6、12等正整数。具体的,当N等于3时,则将第一行地址存储的第一数据平移至第二行地址(第二行地址与第一行地址之间间隔3个行的平移量),即将分别存储在NVM的第一行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址的第一子数据、第二子数据、第三子数据以及第四子数据平移至第二行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址。

作为一种可实施的方式,平移量的具体数据可存储在寄存器中。

作为一种可实施的方式,如图7所示,所述装置还包括存储模块603。

存储模块603,用于将所述第一数据存储在DRAM的带尾失效单元。

具体实现中,如图3所示为DRAM的结构示意图,为了满足少量NVM与大量DRAM组成的混合存储器结构,需要通过降低DRAM的刷新频率以降低系统的功耗,由此对于时间保持性不能满足刷新频率低的带尾失效单元(Tail Bits)则容易导致失效。由于Tail Bits不能满足擦写频率的要求,因此本实施例根据Tail Bits将DRAM划分为两部分,第一部分为包含Tail Bits的DRAM页,第二部分为不包含Tail Bits的DRAM页。此外,优先将第一数据分配至包含Tail Bits的DRAM页,并将动态数据分配至不包含Tail Bits的DRAM页。所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据,而动态数据则为擦写频率大于或等于所述预设频率的数据。

作为一种可实施的方式,所述静态数据包括代码数据和/或常量数据。

作为一种可实施的方式,如图3所示,若静态数据仍未占满包含Tail Bits的DRAM页,则需要填充部分动态数据在包含Tail Bits的DRAM页中,直至填满包含Tail Bits的DRAM页为止,此时第一数据还包括动态数据。如图4所示,图4中的存储器用于存储预设次数的数据,控制器用于控制DRAM以更低的频率进行刷新。另外,将SSD(Solid State Drives,固态硬盘)或HDD(Hard Dick Drive,硬盘驱动器)内存储的静态数据优先分配至包含Tail Bits的DRAM页,并将动态数据分配至不包含Tail Bits的DRAM页。

作为一种可实施的方式,所述记录模块601记录所述映射模块600映射后的NVM被擦写的次数的条件为所述第一数据还包括动态数据,所述动态数据为擦写频率大于或等于所述预设频率的数据。

作为一种可实施的方式,所述静态数据包括代码数据和/或常量数据。

作为一种可实施的方式,如图7所示,所述装置还包括确定模块604以及更新模块605。

确定模块604,用于确定所述平移模块602平移后的所述第一数据在所述NVM的第二行地址;

更新模块605,用于更新映射表中存储的所述第一数据在所述DRAM的第三行地址与所述第一数据在所述NVM的第二行地址之间的映射关系。

具体实现中,如图5所示,当将第一数据整体平移之后,第一数据此时在NVM中的实际行地址位于NVM的第二行地址,因此可确定第一数据在NVM的第二行地址。如第一子数据、第二子数据、第三子数据以及第四子数据平移后分别位于第二行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址。

具体实现中,根据NVM的第二行地址,对映射表中存储的第一数据在包含Tail Bits的DRAM中的第三行地址与第一数据在NVM中新的位置的映射关系进行更新,例如可将映射表中第一数据在NVM的第一行地址上叠加第一数据平移时设定的平移量,由此实现实时更新第一数据在DRAM与NVM之间的映射关系的功能。具体的,在平移第一数据之后,映射表内更新后的映射关系为:第一子数据在DRAM页的第三行地址中的第一子行地址与第一子数据在NVM的第二行地址中的第一子行地址对应;第二子数据在DRAM页的第三行地址中的第二 子行地址与第一子数据在NVM的第二行地址中的第二子行地址对应;第三子数据在DRAM页的第三行地址中的第五子行地址与第一子数据在NVM的第二行地址中的第三子行地址对应;第四子数据在DRAM页的第三行地址中的第八子行地址与第一子数据在NVM的第二行地址中的第四子行地址对应。

采用本发明实施例,可将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据,记录映射后的NVM被擦写的次数,若所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据,可减少持续在NVM的第一行地址上执行的擦写次数,降低NVM的第一行地址的损坏的概率,从而提高NVM的寿命。此外,通过仅将Tail Bits中存储的第一数据映射到NVM中,能够减少NVM承载数据的压力,降低对NVM的容量的要求,实现少量NVM以及大量DRAM的混合存储器结构。

请参阅图8,图8是本发明实施例的一种平移非易失性存储器NVM的数据的装置的另一实施例的结构示意图。如图8所示的装置包括输入装置800、输出装置801以及处理器802,(装置的处理器802的数量可以为一个或多个,图8中以一个处理器为例)。在本发明实施例中,输入装置800、输出装置801以及处理器802可通过总线或其他方式连接,其中,图8中以通过总线连接为例。

所述处理器802,用于将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据;

所述输入装置800,用于记录映射后的NVM被擦写的次数;

所述处理器802,还用于若所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据。

具体实现中,将包含Tail Bits的DRAM页存储的第一数据(包括静态数据以及动态数据)映射到NVM的第一行地址,由于NVM中存在动态数据,因此增高了NVM被擦写的几率,影响了NVM的寿命。因此本实施例需要将存储第一数据的NVM的第一行地址进行更换。具体的,如图4所示,图4中的Tail Bits所在行为 Tail Bits在DRAM页中所在的位置,NVM初始行地址为第一数据平移后在NVM中的第一行地址。例如,第一数据内包括第一子数据、第二子数据、第三子数据以及第四子数据,并分别将各个子数据存储在第一Tail Bits、第二Tail Bits、第三Tail Bits以及第四Tail Bits中。其中,第一Tail Bits位于DRAM页的第三行地址中的第一子行地址;第二Tail Bits位于DRAM页的第三行地址中的第二子行地址;第三Tail Bits位于DRAM页的第三行地址中的第五子行地址;第四Tail Bits位于DRAM页的第三行地址中的第八子行地址。在将第一子数据、第二子数据、第三子数据以及第四子数据映射至NVM之后,分别将第一子数据、第二子数据、第三子数据以及第四子数据存储在NVM的第一行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址。对于NVM的初始行地址的设定本实施例不作限定。将包含Tail Bits的DRAM页存储的第一数据映射到NVM的第一行地址能够降低对包含Tail Bits的DRAM页的擦写次数,从而延长DRAM的寿命。

具体实现中,所述记录映射后的NVM被擦写的次数的条件为所述第一数据还包括动态数据,所述动态数据为擦写频率大于或等于所述预设频率的数据。具体的,当检测到NVM的第一行地址存储的第一数据还包括动态数据时,则将WL置为高电平,控制计数器记录NVM被擦写的次数。如图5所示,可将计数器的初始状态置于最大值(即预设次数),每当检测到NVM读取命中并且执行写操作时则递减1。若检测到NVM没有读取命中,则在不含Tail Bits的DRAM页继续读取。

作为一种可实施的方式,计数器还可在将DRAM中存储的第一数据映射到NVM的第一行地址之后开启记录NVM被擦写的次数。

具体实现中,如图5所示,以NVM被擦写的次数等于预设次数为例,当计数器递减至0时,表明NVM被擦写的次数等于预设次数,由此将第一数据包括的各个数据从第一行地址按照预设规则进行整体平移。其中,预设规则可为平移N行地址或者按照预设的逻辑函数制定的平移量。因此,可避免对NVM的第一行地址的反复擦写,降低第一行地址的损坏概率,延长NVM的寿命;此外,对第一数据进行整体平移可以避免针对各Tail Bits的映射次数进行统计而带来的庞大硬件面积开销;再者,对第一数据进行整体平移还可以避免各种比较运算所消耗的时间,能够满足内存要求工作速度快的要求。

作为一种可实施的方式,N为大于或等于1的正整数,N例如可以为1、3、6、12等正整数。具体的,当N等于3时,则将第一行地址存储的第一数据平移至第二行地址(第二行地址与第一行地址之间间隔3个行的平移量),即将分别存储在NVM的第一行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址的第一子数据、第二子数据、第三子数据以及第四子数据平移至第二行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址。

作为一种可实施的方式,平移量的具体数据可存储在寄存器中。

作为一种可实施的方式,所述处理器802将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址之前,所述处理器802,还用于执行如下步骤:

将所述第一数据存储在DRAM的带尾失效单元。

具体实现中,如图3所示为DRAM的结构示意图,为了满足少量NVM与大量DRAM组成的混合存储器结构,需要通过降低DRAM的刷新频率以降低系统的功耗,由此对于时间保持性不能满足刷新频率低的带尾失效单元(Tail Bits)则容易导致失效。由于Tail Bits不能满足擦写频率的要求,因此本实施例根据Tail Bits将DRAM划分为两部分,第一部分为包含Tail Bits的DRAM页,第二部分为不包含Tail Bits的DRAM页。此外,优先将第一数据分配至包含Tail Bits的DRAM页,并将动态数据分配至不包含Tail Bits的DRAM页。所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据,而动态数据则为擦写频率大于或等于所述预设频率的数据。

作为一种可实施的方式,所述静态数据包括代码数据和/或常量数据。

作为一种可实施的方式,如图3所示,若静态数据仍未占满包含Tail Bits的DRAM页,则需要填充部分动态数据在包含Tail Bits的DRAM页中,直至填满包含Tail Bits的DRAM页为止,此时第一数据还包括动态数据。如图4所示,图4中的存储器用于存储预设次数的数据,控制器用于控制DRAM以更低的频率进行刷新。另外,将SSD(Solid State Drives,固态硬盘)或HDD(Hard Dick Drive,硬盘驱动器)内存储的静态数据优先分配至包含Tail Bits的DRAM页,并将动态数据分配至不包含Tail Bits的DRAM页。

作为一种可实施的方式,所述记录映射后的NVM被擦写的次数的条件为所述第一数据还包括动态数据,所述动态数据为擦写频率大于或等于所述预设频率的数据。

作为一种可实施的方式,所述静态数据包括代码数据和/或常量数据。

作为一种可实施的方式,所述处理器802,还用于执行如下步骤:

确定平移后的所述第一数据在所述NVM的第二行地址;

更新映射表中存储的所述第一数据在所述DRAM的第三行地址与所述第一数据在所述NVM的第二行地址之间的映射关系。

具体实现中,如图5所示,当将第一数据整体平移之后,第一数据此时在NVM中的实际行地址位于NVM的第二行地址,因此可确定第一数据在NVM的第二行地址。如第一子数据、第二子数据、第三子数据以及第四子数据平移后分别位于第二行地址中的第一子行地址、第二子行地址、第三子行地址以及第四子行地址。

具体实现中,根据NVM的第二行地址,对映射表中存储的第一数据在包含Tail Bits的DRAM中的第三行地址与第一数据在NVM中新的位置的映射关系进行更新,例如可将映射表中第一数据在NVM的第一行地址上叠加第一数据平移时设定的平移量,由此实现实时更新第一数据在DRAM与NVM之间的映射关系的功能。具体的,在平移第一数据之后,映射表内更新后的映射关系为:第一子数据在DRAM页的第三行地址中的第一子行地址与第一子数据在NVM的第二行地址中的第一子行地址对应;第二子数据在DRAM页的第三行地址中的第二子行地址与第一子数据在NVM的第二行地址中的第二子行地址对应;第三子数据在DRAM页的第三行地址中的第五子行地址与第一子数据在NVM的第二行地址中的第三子行地址对应;第四子数据在DRAM页的第三行地址中的第八子行地址与第一子数据在NVM的第二行地址中的第四子行地址对应。

采用本发明实施例,可将动态随机存取存储器DRAM中存储的第一数据映射到非易失性存储器NVM的第一行地址,所述第一数据包括静态数据,所述静态数据为擦写频率小于预设频率的数据,记录映射后的NVM被擦写的次数,若所述映射后的NVM被擦写的次数大于或等于预设次数,则按照预设规则平移所述第一行地址中存储的所述第一数据,可减少持续在NVM的第一行地址上执行的擦写次数,降低NVM的第一行地址的损坏的概率,从而提高NVM的寿命。 此外,通过仅将Tail Bits中存储的第一数据映射到NVM中,能够减少NVM承载数据的压力,降低对NVM的容量的要求,实现少量NVM以及大量DRAM的混合存储器结构。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本发明实施例装置中的模块或单元可以根据实际需要进行合并、划分和删减。

本发明实施例的模块或模块,可以以通用集成电路(如中央处理器CPU),或以专用集成电路(ASIC)来实现。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。

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