持久性内存事务处理缓存管理方法与装置的制造方法

xiaoxiao2020-10-23  13

持久性内存事务处理缓存管理方法与装置的制造方法
【技术领域】
[0001]本发明涉及非易失性主存存储技术领域,特别涉及一种持久性内存事务处理缓存管理方法与装置。
【背景技术】
[0002]非易失性存储器(Non-Volatile Memory, NVM)是一种新型的字节寻址的内存级存储器件,如相变存储器(PCM,Phase Change Memory)、自旋矩存储器(STT-RAM,Spin-TorqueTransfer RAM)、阻变存储器(RRAM,Resistive RAM)等。非易失性存储器具有读写延迟低、带宽高、非易失、能耗低等优点,其读写性能接近于传统DRAM内存,且提供与传统磁盘外存相同的持久性。因而,以非易失性存储器构建的内存级持久性存储(也被称为“持久性内存”)可在内存级别提供数据持久性,无需写回磁盘,大幅提高存储系统的性能。
[0003]在存储系统中,数据一致性是存储系统正确可靠运行的重要特性之一。数据一致性要求存储系统在发生意外故障后能够恢复到一致的状态。事务管理是数据一致性维护中的常见方式之一。事务管理将同一操作中的不同数据访问组合成一个事务,并维护该事务的原子性(atomicity)与持久性(durability)。原子性要求该事务中的数据访问全部完成或全部失败。持久性要求该事务中的数据更新在系统掉电后不丢失。
[0004]在持久性内存中维护数据一致性与传统磁盘存储系统中维护方式存在较大的不同。传统磁盘存储系统在内存中维护事务数据的读写状态与写回顺序性,以保证写回磁盘的数据可恢复至一致性状态。而持久性内存在CPU缓存中维护事务数据的读写状态与写回顺序性,从而保证写回持久性内存的数据可恢复至一致性状态。传统磁盘存储系统的内存缓存维护由操作系统管理,可在软件中实现;而持久性内存中的内存缓存维护由CPU缓存管理,在硬件中实现。传统软件方式的事务管理方式在持久性内存中需要引入较多的刷回(^Dclflush)和屏障Gnmfence)等操作,这对CPU缓存效率影响较大,进而影响整体性能的系统。
[0005]为降低持久性内存中数据一致性维护开销,现有不少做法提出对CPU缓存硬件进行功能扩展,以支持事务处理中事务数据的状态跟踪与写回顺序性保证。该类做法包括微软研宄院的BPFS系统中所提的时间节点(epoch)机制,密西根大学所提出的多线一致性(strand consistency)机制,以及清华大学所提出的放松顺序一致性(loose-orderingconsistency)机制。然而,这些方法均需要对CPU缓存硬件进行修改。

【发明内容】

[0006]本发明的目的旨在至少解决上述的技术缺陷之一。
[0007]为此,本发明的一个目的在于提出一种持久性内存事务处理缓存管理方法。该方法可减少持久性内存中的数据复制、数据持久化频率,并在程序软件中提高持久性内存缓存管理效率。
[0008]本发明的另一个目的在于提出一种持久性内存事务处理缓存管理装置。
[0009]为了实现上述目的,本发明的第一方面的实施例公开了一种持久性内存事务处理缓存管理方法,包括以下步骤:在事务开始时,所述事务从非易失性内存中读取原版数据至处理器缓存,并由所述处理器执行所述事务;在事务执行过程中,所述事务为产生的新版数据分配空间,并采用缓存窃取写回技术以允许对未提交数据进行持久化;在事务提交或中止时,将事务数据或状态强制持久化至非易失性内存;在事务数据或状态已持久化至非易失性内存之后,将所述事务数据写回至原数据地址,并采用缓存非强制写回技术不强制已提交数据持久化至非易失性内存;其中,事务周期性以强制整体刷回的形式将缓存数据持久化至所述非易失性内存;当系统发生故障时,对事务数据进行故障恢复处理。
[0010]根据本发明的持久性内存事务处理缓存管理方法,事务处理中的数据新版本直接在非易失性内存中分配空间,减少了临时空间分配与数据复制,提高了内存使用效率。另夕卜,允许未提交的数据被持久化至非易失性内存,降低了未提交数据的状态跟踪代价,此夕卜,该方法利用已提交数据在非易失性内存其余地址空间的持久性版本,允许已提交数据缓存于CPU缓存中,不强制持久化,降低了数据持久化开销。该方法具有以下优点:提升持久性内存中事务处理效率,且在程序软件中实现,无需特定硬件支持,适用性强。
[0011]另外,根据本发明上述实施例的持久性内存事务处理缓存管理方法还可以具有如下附加的技术特征:
[0012]进一步地,所述持久性内存包括易失性处理器缓存和非易失性内存;所述事务数据首先缓存于易失性处理器缓存中,并按照依赖关系的先后顺序写回所述非易失性内存以保证数据的一致性。
[0013]进一步地,所述持久性内存的缓存窃取写回技术包括:在事务的执行过程中,直接从所述非易失性内存中为事务产生的新版数据分配空间,以避免对数据进行复制操作;对日志区域采用固定格式的数据组织方式进行记录,为所述数据块分配对应元数据以提供系统故障后数据块状态检测,其中,所述元数据块用于记录数据块的描述信息。
[0014]进一步地,所述持久性内存的缓存窃取写回技术还包括:如果事务中止,在所述元数据中对中止的事务的数据块进行如下标记:对已分配内存空间且已写回非易失性内存的数据块以及对已分配内存空间但未写回非易失性内存的数据块,采用元数据标记为中止事务数据块的方式标记;对尚未分配内存空间的数据块,直接丢弃。
[0015]进一步地,所述的持久性内存的缓存非强制写回技术包括:在事务提交时,对已提交数据复制其至原版数据位置,如果其在非易失性内存的其余地址空间中存在持久性副本,则允许持久性副本缓存于处理器缓存中;通过周期性强制整体写回处理器缓存中缓存数据的方法延后持久化至非易失性内存。
[0016]进一步地,非强制写回和强制整体写回,具体包括:在系统故障发生时,如果已提交数据未能及时持久化至非易失性内存,则将其由非易失性内存中其余地址空间的副本进行恢复;在强制写回处理器缓存时,由缓存窃取写回技术将事务执行过程中的未提交数据写回非易失性内存。
[0017]进一步地,还包括:当多个事务并发执行时,如果多个事务对同一数据块进行更新,则将数据的多版本持久化至非易失性内存中的顺序按照事务提交顺序进行。
[0018]进一步地,当系统发生故障时,对事务数据进行故障恢复处理,进一步包括:从非易失性内存中按所设定格式分离记录的数据块与元数据块,以获取每个数据块的状态信息,从而判定数据块的提交与未提交状态,并丢弃未提交数据块;对提交的数据块,根据所对应元数据块所记录的信息判定对应事务的提交顺序,并进行排序;对提交事务,按照提交顺序排序进行重放操作。
[0019]本发明第二方面的实施例公开了一种持久性内存事务处理缓存管理装置,包括:非易失性内存;处理器缓存;和事务处理模块,用于在事务开始时,所述事务从非易失性内存中读取原版数据至处理器缓存,并由所述处理器执行所述事务,在事务执行过程中,所述事务为产生的新版数据分配空间,并采用缓存窃取写回技术以允许对未提交数据进行持久化,在事务提交或中止时,将事务数据或状态强制持久化至非易失性内存,在事务数据或状态已持久化至非易失性内存之后,将所述事务数据写回至原数据地址,并采用缓存非强制写回技术不强制已提交数据持久化至非易失性内存,其中,事务周期性以强制整体刷回的形式将缓存数据持久化至所述非易失性内存,并当系统发生故障时,对事务数据进行故障恢复处理。
[0020]根据本发明的持久性内存事务处理缓存管理装置,事务处理中的数据新版本直接在非易失性内存中分配空间,减少了临时空间分配与数据复制,提高了内存使用效率。另夕卜,允许未提交的数据被持久化至非易失性内存,降低了未提交数据的状态跟踪代价,此夕卜,该装置利用已提交数据在非易失性内存其余地址空间的持久性版本,允许已提交数据缓存于CPU缓存中,不强制持久化,降低了数据持久化开销。该装置具有以下优点:提升持久性内存中事务处理效率,且在程序软件中实现,无需特定硬件支持,适用性强。
[0021]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践 了解到。
【附图说明】
[0022]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
[0023]图1为本发明实施例的方法的持久性内存示意图;
[0024]图2为本发明中持久性内存的事务处理缓存管理方法的数据流程与处理方法的示意图;
[0025]图3为本发明中缓存窃取写回技术中日志格式的示意图;
[0026]图4为本发明中日志记录中的日志数据块格式示意图;
[0027]图5为本发明中日志记录中的日志元数据块格式示意图;
[0028]图6为本发明中缓存非强制写回技术中多事务竞争时数据多版本写回顺序示意图。
【具体实施方式】
[0029]下面详细描述本发明的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
[0030]在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0031]在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0032]下面结合附图描述根据本发明实施例的持久性内存事务处理缓存管理方法与装置。
[0033]持久性内存是一种采用非易失性存储器作为内存介质且能够在内存提供数据持久性的存储系统。与传统内存存储系统不同的地方在于,持久性内存采用了非易失性存储器作为内存。图1示出了持久性内存的存储结构图。持久性内存由CPU缓存(即处理器缓存)和非易失性内存两部分组成。CPU缓存为易失性存储,即数据在系统掉电之后丢失。非易失性内存包括但不局限于以相变存储器(PCM,Phase Change Memory)、自旋矩存储器(STT-RAM, Spin-Torque Transfer RAM)或阻变存储器(RRAM,Resistive RAM)等新型字节寻址的非易失性存储器构建的内存,或采用NVDIMM接口的字节寻址的非易失性内存。非易失性内存在系统掉电之后数据不丢失。持久性内存中的内存可以是采用非易失性存储器和易失性存储器组合的混合内存。易失性存储器包括DRAM存储器。如图1所示,传统外存储,包括磁盘、固态盘等,可接入持久性内存,以提供更大的存储容量。在本实施例中,外存储不作为持久性内存的一部分。
[0034]由于持久性内存在内存级别提供了数据持久性,易失性-持久性边界即位于CPU缓存与内存之间。这与传统内存存储系统不同,在传统内存存储系统中,内存不能提供数据持久性,只能由外存提供,因而易失性-持久性边界位于内存与外存之间。由于这个不同点,在持久性内存中,从CPU缓存写回内存的操作也被成为持久化操作。持久化操作的作用是将数据写入非易失性介质,在系统掉电后数据不丢失。
[0035]事务机制用于维护存储系统的数据一致性。本示例以事务机制中的写前日志方式为例。写前日志的执行主要分为三个阶段:执行阶段、日志阶段以及数据回写阶段。在执行阶段,事务数据从持久性存储中读取到缓存中执行,并生成新数据版本。在日志阶段,数据新版本被写入日志中,并被持久化写入持久性存储。在事务提交后,事务进入数据写回阶段。在数据写回阶段,事务数据被复制到数据原有位置,并写回持久性存储。在事务执行过程中,事务在数据新版本未持久化写入持久性存储之前应当保护数据旧版本不受破坏,即事务在任一时刻需要在持久性存储中维护一个完整的版本。同时,事务要求数据新版本及时持久化写回持久性存储,以提供事务的持久性(Durability)特性。这些要求事务缓存管理能够维护跟踪未提交的数据和待写回数据,阻止未提交数据写回,及时持久化待写回数据。
[0036]在持久性内存中,事务将内存区域划分为执行区域、数据区域和日志区域。执行区域用于为事务执行阶段的数据分配空间,主要用于保存未提交的数据。数据区域为事务数据的持久化存储地址,在事务提交之前保存事务旧版本数据,在事务提交之后保存事务新版本数据。日志区域用于在事务写前日志技术中在数据写回阶段之前临时存储事务数据新版本。在这三种区域中,执行区域既可以在易失性内存中分配,也可以在非易失性内存中分配。数据区域和日志区域只能在非易失性内存中分配。尽管这三种区域在内存中分配,CPU缓存中数据按照缓存映射关系可缓存其中任一区域数据。在CPU缓存中,各缓存块所属区域依据其所缓存数据块所属内存区域确定。因此,本发明也称在非易失性内存中的区域为持久性区域,如持久性日志区域、持久性数据区域,在易失性缓存中的区域为易失性区域,如易失性日志区域、易失性数据区域。
[0037]本发明实施例的方法,包括以下步骤:持久性内存事务处理缓存管理方法,其特征在于,包括以下步骤:
[0038]在事务开始时,所述事务从非易失性内存中读取原版数据至处理器缓存,并由所述处理器执行所述事务;
[0039]在事务执行过程中,所述事务为产生的新版数据分配空间,并采用缓存窃取写回技术以允许对未提交数据进行持久化;
[0040]在事务提交或中止时,将事务数据或状态强制持久化至非易失性内存;
[0041]在事务数据或状态已持久化至非易失性内存之后,将所述事务数据写回至原数据地址,并采用缓存非强制写回技术不强制已提交数据持久化至非易失性内存;
[0042]其中,事务周期性以强制整体刷回的形式将缓存数据持久化至所述非易失性内存;
[0043]当系统发生故障时,对事务数据进行故障恢复处理。
[0044]需要说明的是,在以非易失性存储器为主存构建的持久性内存中,采用缓存窃取写回技术和缓存非强制写回技术,对CPU缓存中的事务数据放松其持久化至非易失性内存的要求,降低事务数据状态维护和持久化开销。
[0045]在本发明的一个实施例中,所述持久性内存包括易失性处理器缓存和非易失性内存;所述事务数据首先缓存于易失性处理器缓存中,并按照依赖关系的先后顺序写回所述非易失性内存以保证数据的一致性。
[0046]在本发明的一个实施例中,所述持久性内存的缓存窃取写回技术包括:在事务的执行过程中,直接从所述非易失性内存中为事务产生的新版数据分配空间,以避免对数据进行复制操作;对日志区域采用固定格式的数据组织方式进行记录,为所述数据块分配对应元数据以提供系统故障后数据块状态检测,其中,所述元数据块用于记录数据块的描述信息。
[0047]在本发明的一个实施例中,所述持久性内存的缓存窃取写回技术还包括:如果事务中止,在所述元数据中对中止的事务的数据块进行如下标记:对已分配内存空间且已写回非易失性内存的数据块以及对已分配内存空间但未写回非易失性内存的数据块,采用元数据标记为中止事务数据块的方式标记;对尚未分配内存空间的数据块,直接丢弃。
[0048]在本发明的一个实施例中,所述的持久性内存的缓存非强制写回技术包括:在事务提交时,对已提交数据复制其至原版数据位置,如果其在非易失性内存的其余地址空间中存在持久性副本,则允许持久性副本缓存于处理器缓存中;通过周期性强制整体写回处理器缓存中缓存数据的方法延后持久化至非易失性内存。
[0049]在本发明的一个实施例中,非强制写回和强制整体写回,具体包括:在系统故障发生时,如果已提交数据未能及时持久化至非易失性内存,则将其由非易失性内存中其余地址空间的副本进行恢复;在强制写回处理器缓存时 ,由缓存窃取写回技术将事务执行过程中的未提交数据写回非易失性内存。
[0050]在本发明的一个实施例中,还包括:当多个事务并发执行时,如果多个事务对同一数据块进行更新,则将数据的多版本持久化至非易失性内存中的顺序按照事务提交顺序进行。
[0051 ] 在本发明的一个实施例中,当系统发生故障时,对事务数据进行故障恢复处理,进一步包括:从非易失性内存中按所设定格式分离记录的数据块与元数据块,以获取每个数据块的状态信息,从而判定数据块的提交与未提交状态,并丢弃未提交数据块;对提交的数据块,根据所对应元数据块所记录的信息判定对应事务的提交顺序,并进行排序;对提交事务,按照提交顺序排序进行重放操作。
[0052]图2示例了本发明实施例的持久性内存的事务处理缓存管理方法的数据流程与处理方法,其中,该方法包括以下步骤:
[0053]事务开始后,事务从持久性数据区域读取原有版本数据至易失性数据区域;
[0054]在事务执行过程中,事务数据产生的新版本数据在日志区域中分配空间;
[0055]事务执行过程中,事务产生的数据包括临时数据以及事务数据的新版本:对于产生的临时数据,事务将其写入执行区域;对于产生的事务数据的新版本,事务将其写入日志区域;
[0056]对于写入日志区域的事务数据新版本,由于CPU缓存管理为硬件管理,程序软件无法阻止该部分数据被持久化至持久性日志区域;针对该问题,本发明方法提出缓存窃取写回技术保证其正确性,该技术将于下文详述;
[0057]在事务提交或中止时,事务数据或状态被强制持久化至持久性日志区域;
[0058]若事务为提交状态,则事务将其产生的数据新版本强制持久化至持久性日志区域,并且在持久性日志区域中记录事务提交记录;
[0059]若事务为中止状态,则事务将其产生的数据新版本丢弃,且在持久性日志区域记录事务中止记录;
[0060]在事务数据或状态已持久化至持久性日志区域之后,事务数据被写回至数据区域;
[0061]对于提交的事务,事务数据的新版本被从日志区域复制至数据区域;数据区域更新为新版本数据;
[0062]对于中止的事务,事务数据的新版本已丢弃;数据区域维护旧版本数据;
[0063]事务数据被持久化至持久性数据区域;
[0064]本发明方法提出缓存非强制写回技术,在事务通知程序事务完成之前不强制易失性数据区域持久化至持久化区域,而是通过累积多个事务后,通过大块持久化方式对数据区域进行持久化,该技术将于下文详述。
[0065]至此,事务处理在系统正常工作情形下执行完毕。
[0066]持久性内存的事务处理缓存管理装置为采用了本发明所述持久性内存事务处理缓存管理方法的持久性内存。
[0067]本发明方法所述缓存窃取写回技术,允许数据在未提交之前写入日志区域,同时允许未提交数据被持久化写入持久性日志中。该技术所此采用的方法包括但不限于采用固定格式的日志组织方式。图3示例了固定格式的日志组织方式。在程序中,每个线程维护自己的日志区域,这保证了在每个日志区域中仅有一个事务正在更新;但每个日志区域的起始地址全局可见,这保证在事务恢复时可查找所有日志数据。在每个日志中,所有数据依次顺序写入。由于每个日志在同一时刻仅有一个事务正在执行,因而同一事务数据可保证依次顺序写入。在每个事务所记录的日志末尾,事务根据其提交或中止状态,分别记录一个提交或终止记录。
[0068]对于提交的事务,事务在提交记录中仅需正确填写事务状态即可。日志记录包括日志数据记录、提交和中止记录。这些记录的每个记录由一个日志数据块和一个日志元数据块组成,其内部具体格式在图4和图5中示例,并在下文详述。
[0069]对于中止的事务,事务除了需要在中止记录中正确填写事务状态外,还需要在中止记录的日志数据块中增加指向上一提交事务的提交记录的地址。图3的示例示意了该指针的用法。在中止事务中,持久性日志区域中包含两种数据记录,一种是已经持久化的中止事务数据记录,另一种是已分配空间但实际未写入的中止事务数据记录。第二种数据记录也被称为空洞(Hole)。在中止记录中采用指针指向上一提交事务提交记录地址的指针做法也可以在故障恢复时检查出空洞记录,以便正确处理。
[0070]每个日志记录包含一个日志数据块和一个日志元数据块。日志数据块记录了事务数据的内容,日志元数据块记录了相应数据块的描述信息。
[0071]图4示例了日志数据块的格式。本示例为每个日志数据块分配64比特大小的空间。在这64比特中,除最后一比特(TornBit)用作是否写入标记外,其余均用于记录事务数据。
[0072]图5示例了日志元数据块的格式。本示例为每个日志元数据块分配64比特大小的空间。在这64比特中:
[0073]第I个比特位(TornBit)用于是否写入标记,即标记该元数据块是否成功写入;
[0074]第2个比特位(TailBit)用于记录数据块中最后一位数据,即用于存储日志数据块中因TornBit占用溢出的一个比特位;
[0075]第3-10个比特位(MASK)用于记录数据块中每个字节是否有效的位图,即每个比特位置位后标记日志数据块中对应字节为有效字节;
[0076]第11个比特位(FLG_DC)用于标记所在记录是否为数据记录或提交/中止记录;
[0077]第12个比特位(FLG_CA)用于,如果所在记录为提交/中止记录,进一步标记所在记录为提交记录或中止记录;
[0078]第13-16个比特位(RESV)为保留字段,暂未使用;
[0079]第17-64个比特位(ADDR)记录了该记录中日志数据块在数据区域的地址。
[0080]通过上述方式,以固定格式组织日志区域,对每个数据块进行元数据标记,可允许未提交数据被持久化写入持久性日志区域。在系统故障恢复时,利用日志元数据块对日志数据块进行检查,可检测出未提交的数据,以进行数据恢复。采用该方式,本发明所述缓存窃取写回技术可在持久性内存中正确使用,减少了新产生的版本数据在数据区域、执行区域和日志区域之间的拷贝,降低了为防止未提交数据持久化的缓存管理开销,提高了持久性内存事务处理的性能。
[0081]本发明方法所述的缓存非强制写回技术,将已提交数据写回数据区域,允许该部分数据缓存于CPU缓存中,不强制刷回持久性数据区域。该技术周期性刷回大块数据,如强制刷回整个CPU缓存,以周期性保证数据持久性,并告知程序软件进行后续处理。本发明方法所述该技术利用了数据在持久性内存的其他持久性版本提供数据持久性;同时控制CPU缓存数据多个版本的写回顺序,以保证数据的版本正确更新。
[0082]在事务执行中,已提交数据写回数据区域后,其中部分数据因缓存替换等原因已被写入持久性数据区域,另外数据缓存于CPU缓存中。若系统故障发生后,CPU缓存中数据丢失,持久性数据区域可由持久性日志区域中的持久性数据版本恢复。
[0083]在周期性刷回大块数据过程中,包括未提交数据在内的CPU缓存数据被强制写回非易失性内存。对于未提交数据:(1)若该数据位于执行区域,由于执行数据无持久性数据,因而不破坏持久性数据;(2)若该数据位于日志区域,可根据本发明所述的缓存窃取写回技术利用日志格式进行判定;(3)若该数据位于数据区域,由于该数据已提交,因而持久性数据应当更新至数据新版本,即被刷回数据。
[0084]本发明所述缓存非强制写回技术在多事务竞争时,需要保证同一数据的不同版本之间的持久化顺序。图6示例了所述非强制写回技术在数据多版本的写回顺序保证。在所述例子中,事务I包含两个数据记录A和B,事务2包含两个数据记录B和C。事务I先于事务2提交。在所述缓存非强制写回技术中,数据记录B在CPU缓存中存在两个数据版本,分别属于事务I和事务2。在所述缓存非强制写回技术中,为防止持久化版本写回错乱造成数据不一致,数据记录持久化顺序按照事务提交顺序进行。在图6所示例子中,事务2中的B记录必须在事务I中的B记录之后持久化。
[0085]通过上述方式,利用数据记录在持久性内存中其余持久性版本提供数据持 久性,并维护多事务竞争环境下同一数据多版本的持久化顺序,可允许已提交数据写回数据区域,而不强制持久化至持久性数据区域。本发明方法所述的缓存非强制写回技术可在持久性内存中正确执行,减少数据块的强制写回次数,降低因事务数据写回与等待代价,提高持久性内存的事务处理性能。
[0086]本发明所述方法和装载在系统故障后进行数据恢复,其故障恢复分为三步执行:
[0087](I)从非易失性内存中读取日志区域数据,按所设定分组格式分离元数据块,以获取每个数据块的状态信息,从而判定数据块的提交与未提交状态,并丢弃未提交数据块;
[0088](2)对提交的数据块,根据所对应元数据块所记录的信息判定对应事务的提交顺序,并进行排序;
[0089](3)对提交事务,按照提交顺序排序进行重放操作。
[0090]根据本发明的持久性内存事务处理缓存管理方法,事务处理中的数据新版本直接在非易失性内存中分配空间,减少了临时空间分配与数据复制,提高了内存使用效率。另夕卜,允许未提交的数据被持久化至非易失性内存,降低了未提交数据的状态跟踪代价,此夕卜,该方法利用已提交数据在非易失性内存其余地址空间的持久性版本,允许已提交数据缓存于CPU缓存中,不强制持久化,降低了数据持久化开销。该方法具有以下优点:提升持久性内存中事务处理效率,且在程序软件中实现,无需特定硬件支持,适用性强。
[0091]本发明还公开了一种持久性内存事务处理缓存管理装置,包括:非易失性内存;处理器缓存;和事务处理模块,事务处理模块用于在事务开始时,所述事务从非易失性内存中读取原版数据至处理器缓存,并由所述处理器执行所述事务,在事务执行过程中,所述事务为产生的新版数据分配空间,并采用缓存窃取写回技术以允许对未提交数据进行持久化,在事务提交或中止时,将事务数据或状态强制持久化至非易失性内存,在事务数据或状态已持久化至非易失性内存之后,将所述事务数据写回至原数据地址,并采用缓存非强制写回技术不强制已提交数据持久化至非易失性内存,其中,事务周期性以强制整体刷回的形式将缓存数据持久化至所述非易失性内存,并当系统发生故障时,对事务数据进行故障恢复处理。
[0092]根据本发明的持久性内存事务处理缓存管理装置,事务处理中的数据新版本直接在非易失性内存中分配空间,减少了临时空间分配与数据复制,提高了内存使用效率。另夕卜,允许未提交的数据被持久化至非易失性内存,降低了未提交数据的状态跟踪代价,此夕卜,该装置利用已提交数据在非易失性内存其余地址空间的持久性版本,允许已提交数据缓存于CPU缓存中,不强制持久化,降低了数据持久化开销。该装置具有以下优点:提升持久性内存中事务处理效率,且在程序软件中实现,无需特定硬件支持,适用性强。
[0093]需要说明的是,本发明实施例的持久性内存事务处理缓存管理装置的具体实现方式与本发明实施例的持久性内存事务处理缓存管理方法的具体实现方式类似,具体请参见方法部分的描述,此处不做赘述。
[0094]尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
【主权项】
1.一种持久性内存事务处理缓存管理方法,其特征在于,包括以下步骤: 在事务开始时,所述事务从非易失性内存中读取原版数据至处理器缓存,并由所述处理器执行所述事务; 在事务执行过程中,所述事务为产生的新版数据分配空间,并采用缓存窃取写回技术以允许对未提交数据进行持久化; 在事务提交或中止时,将事务数据或状态强制持久化至非易失性内存; 在事务数据或状态已持久化至非易失性内存之后,将所述事务数据写回至原数据地址,并采用缓存非强制写回技术不强制已提交数据持久化至非易失性内存; 其中,事务周期性以强制整体刷回的形式将缓存数据持久化至所述非易失性内存; 当系统发生故障时,对事务数据进行故障恢复处理。2.根据权利要求1所述的方法,其特征在于,所述持久性内存包括易失性处理器缓存和非易失性内存;所述事务数据首先缓存于易失性处理器缓存中,并按照依赖关系的先后顺序写回所述非易失性内存以保证数据的一致性。3.根据权利要求1所述的方法,其特征在于,所述持久性内存的缓存窃取写回技术包括: 在事务的执行过程中,直接从所述非易失性内存中为事务产生的新版数据分配空间,以避免对数据进行复制操作; 对日志区域采用固定格式的数据组织方式进行记录,为所述数据块分配对应元数据以提供系统故障后数据块状态检测,其中,所述元数据块用于记录数据块的描述信息。4.根据权利要求3所述的方法,其特征在于,所述持久性内存的缓存窃取写回技术还包括: 如果事务中止,在所述元数据中对中止的事务的数据块进行如下标记: 对已分配内存空间且已写回非易失性内存的数据块以及对已分配内存空间但未写回非易失性内存的数据块,采用元数据标记为中止事务数据块的方式标记; 对尚未分配内存空间的数据块,直接丢弃。5.根据权利要求1所述的方法,其特征在于,所述的持久性内存的缓存非强制写回技术包括: 在事务提交时,对已提交数据复制其至原版数据位置,如果其在非易失性内存的其余地址空间中存在持久性副本,则允许持久性副本缓存于处理器缓存中; 通过周期性强制整体写回处理器缓存中缓存数据的方法延后持久化至非易失性内存。6.根据权利要求5所述的方法,其特征在于,非强制写回和强制整体写回,具体包括: 在系统故障发生时,如果已提交数据未能及时持久化至非易失性内存,则将其由非易失性内存中其余地址空间的副本进行恢复; 在强制写回处理器缓存时,由缓存窃取写回技术将事务执行过程中的未提交数据写回非易失性内存。7.根据权利要求5所述的方法,其特征在于,还包括: 当多个事务并发执行时,如果多个事务对同一数据块进行更新,则将数据的多版本持久化至非易失性内存中的顺序按照事务提交顺序进行。8.根据权利要求1所述的方法,其特征在于,当系统发生故障时,对事务数据进行故障恢复处理,进一步包括: 从非易失性内存中按所设定格式分离记录的数据块与元数据块,以获取每个数据块的状态信息,从而判定数据块的提交与未提交状态,并丢弃未提交数据块; 对提交的数据块,根据所对应元数据块所记录的信息判定对应事务的提交顺序,并进tx排序; 对提交事务,按照提交顺序排序进行重放操作。9.一种持久性内存事务处理缓存管理装置,其特征在于,包括: 非易失性内存; 处理器缓存;和 事务处理模块,用于在事务开始时,所述事务从非易失性内存中读取原版数据至处理器缓存,并由所述处理器执行所述事务,在事务执行过程中,所述事务为产生的新版数据分配空间,并采用缓存窃取写回技术以允许对未提交数据进行持久化,在事务提交或中止时,将事务数据或状态强制持久化至非易失性内存,在事务数据或状态已持久化至非易失性内存之后,将所述事务数据写回至原数据地址,并采用缓存非强制写回技术不强制已提交数据持久化至非易失性内存,其中,事务周期性以强制整体刷回的形式将缓存数据持久化至所述非易失性内存,并当系统发生故障时,对事务数据进行故障恢复处理。
【专利摘要】本发明提供一种持久性内存事务处理缓存管理方法与装置,该方法包括:在事务开始时,事务从非易失性内存中读取原版数据至处理器缓存,并由处理器执行事务;在事务执行过程中,事务为产生的新版数据分配空间,并采用缓存窃取写回技术以允许对未提交数据进行持久化;在事务提交或中止时,将事务数据或状态强制持久化至非易失性内存;在事务数据或状态已持久化至非易失性内存之后,将事务数据写回至原数据地址,并采用缓存非强制写回技术不强制已提交数据持久化至非易失性内存;事务周期性以强制整体刷回的形式将缓存数据持久化至非易失性内存;当系统发生故障时,对事务数据进行故障恢复处理。该方法可减少持久性内存中的数据复制、数据持久化频率。
【IPC分类】G06F12/08
【公开号】CN104881371
【申请号】CN201510289418
【发明人】舒继武, 陆游游
【申请人】清华大学
【公开日】2015年9月2日
【申请日】2015年5月29日
转载请注明原文地址:https://www.famiwei.com/read-8138704.html

最新回复(0)