一种并发访问内存的方法及装置的制造方法

文档序号:8258383阅读:468来源:国知局
一种并发访问内存的方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种并发访问内存的方法及装置。
【背景技术】
[0002]最近几年内,处理器厂商受到功耗和温度的限制,同时为了保持高性能运算持续增长,计算机已经朝着多核计算机体系架构方向发展。为了充分利用多核架构,应用程序被拆分成多个可独立运行在单个CPU上面的线程,这样设计程序可以并行执行提高整体运行效率。基于这样的程序体系,需要保证数据处理的同步性和数据完整性,因此线程之间需要用某种同步机制来串行访问共享区域。
[0003]Transact1n memory(事务内存)的提出正是为了提高线程的并行度;Transact1nmemory假设多核线程之间对于共享数据的访问很少产生写-读,读-写,以及写-写冲突,因此允许多个线程试探性的并行执行,当发现产生冲突的时候进行回滚,使程序的状态回到冲突之前的状态,利用这个特性在不影响数据完整性的前提下体系结构的性能和可扩展性得到提闻。
[0004]Transact1n memory广泛使用在并行系统中以提高体系架构的可扩展性。当前Transact1n memory技术已经进入了 CPU体系架构之中,包括IBM的Blue Gene/Q, Intel的 Haswell。
[0005]虽然Transact1n memory提高了线程的并行度,但是随着并行度的提高冲突产生的概率也随之增加,一旦产生冲突进行回滚操作就会严重的伤害程序的性能。

【发明内容】

[0006]本申请要解决的技术问题是如何提高多核系统中事务内存访问的并发性,同时减少冲突引发的回滚,提高系统整体性能。
[0007]为了解决上述问题,本申请提供了一种并发访问内存的方法,包括:
[0008]当第一事务需要对第一数据进行写操作时,如果存在读过所述第一数据或将要读所述第一数据的第二事务,则生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录;
[0009]执行所述第二事务的处理,执行完成后提交所述第二事务并根据所述记录通知所述第一事务;
[0010]执行所述第一事务的处理,执行完成且收到所述第二事务的通知后提交所述第一事务。
[0011]可选地,所述生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录的步骤包括:
[0012]在运行所述第一事务的第一处理器的第一读写冲突检测寄存器中,将运行所述第二事务的第二处理器对应的处理器标识位置位,将操作冲突标识位置为表示产生写操作冲突的值;
[0013]在所述第二处理器的第二读写冲突检测寄存器中,将所述第一处理器对应的处理器标识位置位,将操作冲突标识位置为表示产生读操作冲突的值。
[0014]可选地,根据所述记录通知所述第一事务的步骤包括:
[0015]在所述第二读写冲突检测寄存器中,查找置位的处理器标识位;
[0016]确定置位的处理器标识位对应于所述第一处理器;
[0017]通知所述第一处理器上运行的所述第一事务。
[0018]可选地,执行所述第一事务的处理,执行完成且收到所述第二事务的通知后提交所述第一事务的步骤包括:
[0019]步骤41、执行所述第一事务的处理,执行完成后进行步骤42 ;
[0020]步骤42、判断所述第一读写冲突检测寄存器中的操作冲突标识位是否为表示产生写操作冲突的值,如果是则进行步骤43,如果为表示读操作冲突的值则进行步骤45 ;
[0021]步骤43、判断所述第一读写冲突检测寄存器中各处理器标识位是否全未置位;如果至少一个已置位则等待;如果全未置位则进行步骤45 ;
[0022]步骤44、当收到所述第二事务的通知后,在所述第一读写冲突检测寄存器中,将所述第二处理器对应的处理器标识位复位;返回步骤43 ;
[0023]步骤45、提交所述第一事务。
[0024]可选地,判断是否存在读过所述第一数据或将要读所述第一数据的第二事务的步骤后还包括:
[0025]如果所述第二事务读过所述第一数据,则在执行所述第一事务的处理前,将所述第一数据在所述第二事务中对应的缓存行复制到所述第一事务对应的私有不可见缓存中;
[0026]如果所述第二事务将要读所述第一数据,则在执行所述第二事务的处理前,从所述第一事务对应的缓存行中,将未进行写操作的所述第一数据复制到所述第二事务对应的缓存中。
[0027]本申请还提供了一种并发访问内存的装置,包括:
[0028]缓存管理单元,用于当第一事务需要对第一数据进行写操作时,如果存在读过所述第一数据或将要读所述第一数据的第二事务,则生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录;
[0029]第一处理单元,用于执行所述第一事务的处理,执行完成且收到所述第二事务的通知后提交所述第一事务;
[0030]第二处理单元,用于执行所述第二事务的处理,执行完成后提交所述第二事务并根据所述记录通知所述第一事务。
[0031]可选地,所述的装置还包括:
[0032]与所述第一处理单元对应的第一读写冲突检测寄存器;
[0033]与所述第二处理单元对应的第二读写冲突检测寄存器;
[0034]所述缓存管理单元生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录是指:
[0035]所述缓存管理单元在所述第一读写冲突检测寄存器中,将所述第二处理单元对应的处理器标识位置位,将操作冲突标识位置为表示产生写操作冲突的值;在所述第二读写冲突检测寄存器中,将所述第一处理单元对应的处理器标识位置位,将操作冲突标识位置为表示产生读操作冲突的值。
[0036]可选地,所述第二处理单元根据所述记录通知所述第一事务是指:
[0037]所述第二处理单元在所述第二读写冲突检测寄存器中,查找置位的处理器标识位;确定置位的处理器标识位对应于所述第一处理单元;通知所述第一处理单元上运行的所述第一事务。
[0038]可选地,所述第一处理单元包括:
[0039]第一判断模块、第二判断模块;
[0040]执行模块,用于执行所述第一事务的处理,执行完成后指示所述第一判断模块进行判断;
[0041]清除模块,用于当收到所述第二事务的通知后,在所述第一读写冲突检测寄存器中,将所述第二处理单元对应的处理器标识位复位;指示所述第二判断模块进行判断;
[0042]所述第一判断模块用于判断所述第一读写冲突检测寄存器中的操作冲突标识位是否为表示产生写冲突的值;如果是则指示所述第一判断模块进行判断;如果为表示读操作冲突的值则指示所述提交模块提交所述第一事务;
[0043]所述第二判断模块用于判断所述第一读写冲突检测寄存器中各处理器标识位是否全未置位;如果全未置位则指示所述提交模块提交所述第一事务。
[0044]可选地,所述缓存管理单元还用于当判断所述第二事务读过所述第一数据时,在所述第一处理单元执行所述第一事务的处理前,将所述第一数据在所述第二事务中对应的缓存行复制到所述第一事务对应的私有不可见缓存中;当判断所述第二事务将要读所述第一数据时,在所述第二处理单元执行所述第二事务的处理前,从所述第一事务对应的缓存行中,将未进行写操作的所述第一数据复制到所述第二事务对应的缓存中。
[0045]本申请可以允许即使一个线程写数据的前提下,其他多核仍然可以并行读取相同数据,在维护数据完整性的前提下,提高多核读操作的并行性和避免内存由于读-写冲突和写-读冲突产生的回滚时间,最终提高系统的并发性和吞吐量,从而提高总体运行性能,并能提高多核系统的可扩展性。本申请的又一个实施例中增加了事务冲突寄存器,可以有效记录冲突的对象、类型,并能通过该事务冲突寄存器保证各事务的提交顺序。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
【附图说明】
[0046]图1是实施例一的并发访问内存的方法的流程示意图;
[0047]图2是实施例一中读写冲突检测寄存器的示意图;
[0048]图3是实施例一中步骤S103的流程示意图;
[0049]图4是实施例一的第一个例子的流程示意图;
[0050]图5是实施例一的第二个例子的流程示意图。
【具体实施方式】
[0051]下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
[0052]需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1