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

文档序号:9865420阅读:来源:国知局
[0042]图2是本发明第二实施例提供的一种事务提交的方法的流程示意图;
[0043]图3是本发明实施例提供的一种建立映射关联的不意图;
[0044]图4是本发明实施例提供的一种定位数据块的原理示意图;
[0045]图5是本发明第一实施例提供的一种事务提交的装置的结构示意图;
[0046]图6是本发明第二实施例提供的一种事务提交的装置的结构示意图;
[0047]图7是图6中获取模块的结构示意图;
[0048]图8是本发明第三实施例提供的一种事务提交的装置的结构示意图。
【具体实施方式】
[0049]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050]参见图1,为本发明第一实施例提供的一种事务提交的方法的流程示意图,在本发明实施例中,所述方法包括:
[0051]S101、接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括I个空闲的存储单元,M和N为整数,O < M < N。
[0052]具体的,需要提交事务时,事务向处理事务提交的装置(以下简称装置)发送提交请求,所述提交请求用于向外部存储器提交事务关联的M个数据块,提交请求中携带每个数据块的写操作地址,写操作地址对应外部存储器中的物理地址。M个数据块提交到外部存储器之前可以存储在CPU的内部存储器中,例如CPU的DRAM中。外部存储器划分为N行P列的存储单元矩阵,其中存储单元矩阵的每一行为I个组,外部存储器共划分为N个组,每个组包括I个空闲的存储单元和至少一个占用的存储单元,存储单元用于存储事务关联的数据块,每个数据块占用一个存储单元,M和N为整数,O < M ^ No
[0053]S102、若所述外部存储器的每个组上待写入的数据块的数控均满足小于2,获取所述M个数据块中每个数据块的元数据。
[0054]具体的,外部存储器的每个组只包括一个空闲的存储单元,因此每个组只能写入一个数据块,如果某个组上待写入的数据块的数量大于1,则这个组会发生溢出,由于事务存在原子性的特性,事务将无法被正确提交。装置可根据每个数据块的写操作地址判断是否发生外部存储器的组是否发生溢出,向外部存储器写入M个数据块,每个数据块会分配一个写操作地址,根据M个写操作地址所属的组,M个写操作地址所属的组不相互重复,则表明M个数据块写入的组不相同,不会发生溢出。如果M个写操作地址所属的组存在至少两个相同的组,则表明某个组中待写入的数据块的数据块的数量会超过I个。
[0055]如果N个组中每个组上待写入的数据块的数据均满足小于2,获取M个数据块中每个数据块的元数据,元数据表示数据块的属性信息,例如,属性信息包括:数据块的大小、数据块的物理地址、数据块的逻辑地址和数据块的有效期。
[0056]S103、确定每个数据块写入的组,并将每个数据块和关联的元数据分别写入对应的组的空闲的存储单元中。
[0057]具体的,装置确定M个数据块写入的组,由于外部存储器中的组没有发生溢出,M个数据块的写操作地址落入外部存储器中M个不同的组内,M个数据块的将每个数据块和该数据块关联的元数据写入各自对应的组的空闲的存储单元中。如果事务关联的M个数据块都正确写入各组对应的组的空闲的存储单元中,则事务提交成功;如果事务关联的M个数据块至少一个数据块未正确写入各自对应的组的空闲的存储单元中,执行事务回滚。
[0058]需要说明的是,本发明实施例中的外部存储器可以使PCM、MARM或STT-RAM,也可以使其他类型的存储器,本发明不作限制。
[0059]实施本发明的实施例,外部存储器划分为多个组,每个组包括I个空闲的存储单元,当需要提交事务时,判断外部存储器的每个组上待写入的数据块的数据是否满足小于2,若为是,将事务关联的多个数据块一次性写入各自对应的组的空闲的存储单元中,这样有效的减少事务提交过程中对外部存储器的刷写次数,提高了事务提交的吞吐量。
[0060]参见图2,为本发明第二实施例提供的一种事务提交的方法的流程示意图,在本发明实施例中,所述方法包括:
[0061]S201、接收用于向外部存储器提交事务关联的M个数据块的提交请求;其中,所述外部存储器划分为N个组,每个组包括I个空闲的存储单元,M和N为整数,O < M < N。
[0062]具体的,需要提交事务时,事务向处理事务提交的装置(以下简称装置)发送提交请求,所述提交请求用于向外部存储器提交事务关联的M个数据块,提交请求中携带每个数据块的写操作地址,写操作地址对应外部存储器中的物理地址。M个数据块提交到外部存储器之前可以存储在CPU的内部存储器中,例如CPU的DRAM中。外部存储器划分为N行P列的存储单元矩阵,其中存储单元矩阵的每一行为I个组,外部存储器共划分为N个组,每个组包括I个空闲的存储单元和至少一个占用的存储单元,存储单元用于存储事务关联的数据块,每个数据块占用一个存储单元,M和N为整数,O < M ^ No
[0063]示例性的,M = 6,需要提交的事务关联有6个数据块,事务向处理事务提交的装置发送提交请求,提交请求用于向外部存储器提交事务关联的6个数据块,6个数据块分别为数据块1、数据块2、数据块3、数据块4、数据块5和数据块6,6个数据块的写操作地址分别为0x5200、0x3F21、0x6351、0x6525、0x5148和0x5621,写操作地址对应外部存储器中存储单元的地址。外部存储器划分为8行7列的存储单元矩阵,存储单元矩阵每一行为I个组,每个组内包含I个空闲的存储单元和6个占用的存储单元,空闲的存储单元可以用来存储事务关联的数据块,占用的存储单元已存储有其他数据,不能再用来存储事务的数据块。
[0064]S202、获取写入所述外部存储器的写操作地址。
[0065]具体的,装置获取待写入外部存储器的数据块的写操作地址,每个写操作地址对应外部存储器中的一个存储单元的地址,写入外部存储器的数据块可能属于同一事务,也可能属于不同的事务。例如,装置检测到待写入外部存储器的数据块为6个,分别获取6个待写入数据块的写操作地址为0x5200、0x3F21、0x6351、0x6525、0x5148和0x5621,写操作地址对应外部存储器中存储单元的地址。
[0066]S203、计算每个写操作地址所属的组的组号。
[0067]具体的,预设设置有外部存储器的组号和地址的映射关系,根据预设的映射关系可以查询地址所属的组的组号。
[0068]示例性的,假设数据块I的写操作地址所属的组的组号为1,数据块2的写操作地址所属的组的组号为2,数据块2的写操作地址所属的组的组号为3、数据库4的写操作地址所属的组的组号为4,数据块5所属的组的组号为5,数据块6所属的组的组号为6。
[0069]S204、判断计算得到的组号是否重复。
[0070]具体的,外部存储器的每个组只包括一个空闲的存储单元,因此每个组只能写入一个数据块,如果某个组上待写入的数据块的数量大于1,则这个组会发生溢出,由于事务存在原子性的特性,事务将无法被正确提交。装置判断计算得到的组号是否重复,若为否,M个数据块将写入M个不同的组内,组内待写入的数据块的数据不会大于2,外部存储器的每个组都不会发生溢出,执行S205。如果M个写操作地址所属的组的组号存在至少两个相同,则表明某个组中待写入的数据块的数据块的数量至少为2个,该组发生溢出,执行S206。
[0071]示例性的,以S203计算得到的组号为例,6个数据块将分布写入6个不同的组,数据块I写入组I,数据块2写入组2,数据块3写入组3,数据块4写入组4,数据块5写入组5,数据块6写入组6,外部存储器的组7和组8则没有数据块写入,外部存储器中每个组上待写入的数据块的数量均小于1,没有发生溢出。
[0072]假设根据S203计算得到数据块I写入组I,数据块2写入组I,数据块3写入组2,数据块4写入组2,数据块5写入组3,数据块4写入组3,则组I上待写入的数据块为2个,组2上待写入的数据块的数量为2个,组3上待写入的数据块的数量为2个,组1、组2和组3发生溢出。
[0073]S205、获取所述M个数据块中每个数据块的元数据。
[0074]其中,元数据表示数据块的属性信息,例如,属性信息包括:数据块的大小、数据块的物理地址、数据块的逻辑地址和数据块的有效期。
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1