一种事务提交的方法和装置的制造方法

文档序号:9865420阅读:191来源:国知局
一种事务提交的方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种事务提交的方法和装置。
【背景技术】
[0002]传统的基于DRAM (Dynamic Random Access Memory,动态随机存取存储器,简称DRAM)的内存由于其在扩容能力上的限制,使其越来越成为制约系统计算性能提高的一个重要障碍。一种阻抗性存储设备(Resistive Memory)逐步呈现出取代现有内存的趋势。阻抗性存储设备通过介质不同的阻抗状态来存储分别存储“O”和“I”的信息。比较有代表性的阻抗性存储设备包括——相变存储器(PCM,Phase Change Memory)、磁性随机存储器(MRAM, Magnetic Random Access Memory)、自旋转移力矩随机存取存储器(STT-RAM,SpinTorque Transfer Random Access Memory)等。然而,绝大多数的阻抗性存储设备的写性能与DRAM有较大差距和寿命也不能达到对Memory所要求的10~15的要求。另外,为了充分发挥SCM的性能特点,对SCM(Storage Class Memory,存储级内存,简称SCM)中数据访问方式与传统的磁盘以及SSD不同,应尽量避免OS (Operat1n System,操作系统,简称OS)参与,而由应用程序自己控制和维护。
[0003]应用程序对数据的维护需要Transact1n来保证其数据的一致性,在SCM上做事务Transact1n对系统性能和SCM的寿命会产生较大影响。其影响主要表现在三个方面:1、维护原子性会产生的冗余写,这些冗余写既降低SCM寿命也影响性能。2、高并发的Transact1n会导致碰撞,取消的Transact1n中已经写入SCM的数据也将作废,对SCM的寿命也会产生影响。3、保证数据的持久性,需要穿过Cache,使用mfence指令和clflush指令分多次将数据写入SCM中,频繁的刷写严重降低了 SCM性能。

【发明内容】

[0004]本发明实施例所要解决的技术问题在于,提供一种事务提交的方法。可解决现有技术中提交事务时数据刷写次数过多的问题。
[0005]为了解决上述技术问题,本发明实施例提供了一种事务提交的方法,包括:
[0006]接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括I个空闲的存储单元,M和N为整数,O < M < N ;
[0007]若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据;
[0008]确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
[0009]结合第一方面,在第一种可能的实现方式中,所述若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据,还包括:
[0010]获取版本号计数器的当前计数值;
[0011]将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计时器的当前计数值加I。
[0012]结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,所述若所述外部存储器的每个组上待写入的数据块的数量均满足小于2包括:
[0013]获取写入所述外部存储器的写操作地址;
[0014]计算每个写操作地址所属的组的组号,若计算得到的组号不重复,则确定每个组上待写入的数据块的数量满足小于2。
[0015]结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中还包括:
[0016]将第X个数据块的指针指向第X+1个数据块所在的组的组物理地址,其中,第M个数据块的指针指向第I个数据块所在的组的组物理地址,M为整数,O < X ^M-1o
[0017]结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
[0018]获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
[0019]结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中之后,还包括:
[0020]接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;
[0021]根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRAM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;
[0022]根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
[0023]结合第一方面至第五种可能的实现方式中的任意一种,在第六种可能的实现方式中,所述事务关联的M个数据块在向所述外部存储器提交之前存储在DRAM中。
[0024]相应地,本发明实施例第二方面还提供了一种事务提交的装置,包括:
[0025]接收模块,用于接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括I个空闲的存储单元,M和N为整数,O< M ^ N ;
[0026]获取模块,用于若所述外部存储器的每个组上待写入的数据块的数量均满足小于2,获取所述M个数据块中每个数据块的元数据;
[0027]写入模块,用于确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
[0028]结合第二方面,在第一种可能的实现方式中,所述获取模块还用于获取版本号计数器的当前计数值;将所述当前计数值赋予所述事务作为提交版本号,并将所述版本号计时器的当前计数值加I。
[0029]结合第二方面或第一种可能的实现方式,在第二种可能的实现方式中,所述获取模块包括:
[0030]获取单元,用于获取写入所述外部存储器的写操作地址;
[0031]确定单元,用于计算每个写操作地址所属的组的组号,若计算得到的组号不重复,则确定每个组上待写入的数据块的数量满足小于2。
[0032]结合第二种可能的实现方式,在第三种可能的实现方式中,所述写入模块还用于将第X个数据块的指针指向第X+1个数据块所在的组的物理地址,其中,第M个数据块的指针指向第I个数据块所在的组的物理地址,M为整数,O < X ^M-10
[0033]结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
[0034]映射模块,用于获取所述外部存储器的组中占用的存储单元的组物理地址和组逻辑地址,并将组物理地址和组逻辑地址进行关联后存储至动态随机访问存储器DRAM的映射表中。
[0035]结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,还包括:
[0036]定位模块,用于接收用于查询所述外部存储器中的目标数据块的查询请求,所述查询请求携带所述目标数据块的物理地址;根据所述物理地址计算得到所述目标数据块所在的组的组号和组逻辑地址,并从所述DRRM的映射表中查询所述目标数据块所在的组的组逻辑地址关联的组物理地址;根据所述目标数据块所在的组的组物理地址和组号定位所述外部存储器中的所述目标数据块。
[0037]结合第二方面至第五种可能的实现方式中的任意一种,在第六种可能的实现方式中,所述事务关联的M个数据块在向所述外部存储器提交之前存储在DRAM中。
[0038]实施本发明实施例,具有如下有益效果:
[0039]外部存储器划分为多个组,每个组包括I个空闲的存储单元,当需要提交事务时,判断外部存储器的每个组上待写入的数据块的数据是否满足小于2,若为是,将事务关联的多个数据块一次性写入各自对应的组的空闲的存储单元中,这样有效的减少事务提交过程中对外部存储器的刷写次数,提高了事务提交的吞吐量。
【附图说明】
[0040]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0041]图1是为本发明第一实施例提供的一种事务提交的方法的流程示意图;
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1