CN104572506B - 一种并发访问内存的方法及装置 - Google Patents

一种并发访问内存的方法及装置 Download PDF

Info

Publication number
CN104572506B
CN104572506B CN201310492402.3A CN201310492402A CN104572506B CN 104572506 B CN104572506 B CN 104572506B CN 201310492402 A CN201310492402 A CN 201310492402A CN 104572506 B CN104572506 B CN 104572506B
Authority
CN
China
Prior art keywords
affairs
read
conflict
processor
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201310492402.3A
Other languages
English (en)
Other versions
CN104572506A (zh
Inventor
马凌
姚四海
张磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201310492402.3A priority Critical patent/CN104572506B/zh
Priority to TW103118605A priority patent/TW201516688A/zh
Priority to EP14793944.1A priority patent/EP3058461A1/en
Priority to US14/515,952 priority patent/US20150113244A1/en
Priority to SG11201602639TA priority patent/SG11201602639TA/en
Priority to KR1020167009643A priority patent/KR20160086820A/ko
Priority to PCT/US2014/060901 priority patent/WO2015057962A1/en
Priority to JP2016520133A priority patent/JP2016537708A/ja
Publication of CN104572506A publication Critical patent/CN104572506A/zh
Priority to HK15106256.9A priority patent/HK1205806A1/zh
Application granted granted Critical
Publication of CN104572506B publication Critical patent/CN104572506B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1615Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • G06F9/467Transactional memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种并发访问内存的方法及装置;所述方法包括:当第一事务需要对第一数据进行写操作时,如果存在读过所述第一数据或将要读所述第一数据的第二事务,则生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录;执行所述第二事务的处理,执行完成后提交所述第二事务并根据所述记录通知所述第一事务;执行所述第一事务的处理,执行完成且收到所述第二事务的通知后提交所述第一事务。本申请能够提高多核系统中事务内存访问的并发性,同时减少冲突引发的回滚,提高系统整体性能。

Description

一种并发访问内存的方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种并发访问内存的方法及装置。
背景技术
最近几年内,处理器厂商受到功耗和温度的限制,同时为了保持高性能运算持续增长,计算机已经朝着多核计算机体系架构方向发展。为了充分利用多核架构,应用程序被拆分成多个可独立运行在单个CPU上面的线程,这样设计程序可以并行执行提高整体运行效率。基于这样的程序体系,需要保证数据处理的同步性和数据完整性,因此线程之间需要用某种同步机制来串行访问共享区域。
Transaction memory(事务内存)的提出正是为了提高线程的并行度;Transaction memory假设多核线程之间对于共享数据的访问很少产生写-读,读-写,以及写-写冲突,因此允许多个线程试探性的并行执行,当发现产生冲突的时候进行回滚,使程序的状态回到冲突之前的状态,利用这个特性在不影响数据完整性的前提下体系结构的性能和可扩展性得到提高。
Transaction memory广泛使用在并行系统中以提高体系架构的可扩展性。当前Transaction memory技术已经进入了CPU体系架构之中,包括IBM的Blue Gene/Q,Intel的Haswell。
虽然Transaction memory提高了线程的并行度,但是随着并行度的提高冲突产生的概率也随之增加,一旦产生冲突进行回滚操作就会严重的伤害程序的性能。
发明内容
本申请要解决的技术问题是如何提高多核系统中事务内存访问的并发性,同时减少冲突引发的回滚,提高系统整体性能。
为了解决上述问题,本申请提供了一种并发访问内存的方法,包括:
当第一事务需要对第一数据进行写操作时,如果存在读过所述第一数据或将要读所述第一数据的第二事务,则生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录;
执行所述第二事务的处理,执行完成后提交所述第二事务并根据所述记录通知所述第一事务;
执行所述第一事务的处理,执行完成且收到所述第二事务的通知后提交所述第一事务。
可选地,所述生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录的步骤包括:
在运行所述第一事务的第一处理器的第一读写冲突检测寄存器中,将运行所述第二事务的第二处理器对应的处理器标识位置位,将操作冲突标识位置为表示产生写操作冲突的值;
在所述第二处理器的第二读写冲突检测寄存器中,将所述第一处理器对应的处理器标识位置位,将操作冲突标识位置为表示产生读操作冲突的值。
可选地,根据所述记录通知所述第一事务的步骤包括:
在所述第二读写冲突检测寄存器中,查找置位的处理器标识位;
确定置位的处理器标识位对应于所述第一处理器;
通知所述第一处理器上运行的所述第一事务。
可选地,执行所述第一事务的处理,执行完成且收到所述第二事务的通知后提交所述第一事务的步骤包括:
步骤41、执行所述第一事务的处理,执行完成后进行步骤42;
步骤42、判断所述第一读写冲突检测寄存器中的操作冲突标识位是否为表示产生写操作冲突的值,如果是则进行步骤43,如果为表示读操作冲突的值则进行步骤45;
步骤43、判断所述第一读写冲突检测寄存器中各处理器标识位是否全未置位;如果至少一个已置位则等待;如果全未置位则进行步骤45;
步骤44、当收到所述第二事务的通知后,在所述第一读写冲突检测寄存器中,将所述第二处理器对应的处理器标识位复位;返回步骤43;
步骤45、提交所述第一事务。
可选地,判断是否存在读过所述第一数据或将要读所述第一数据的第二事务的步骤后还包括:
如果所述第二事务读过所述第一数据,则在执行所述第一事务的处理前,将所述第一数据在所述第二事务中对应的缓存行复制到所述第一事务对应的私有不可见缓存中;
如果所述第二事务将要读所述第一数据,则在执行所述第二事务的处理前,从所述第一事务对应的缓存行中,将未进行写操作的所述第一数据复制到所述第二事务对应的缓存中。
本申请还提供了一种并发访问内存的装置,包括:
缓存管理单元,用于当第一事务需要对第一数据进行写操作时,如果存在读过所述第一数据或将要读所述第一数据的第二事务,则生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录;
第一处理单元,用于执行所述第一事务的处理,执行完成且收到所述第二事务的通知后提交所述第一事务;
第二处理单元,用于执行所述第二事务的处理,执行完成后提交所述第二事务并根据所述记录通知所述第一事务。
可选地,所述的装置还包括:
与所述第一处理单元对应的第一读写冲突检测寄存器;
与所述第二处理单元对应的第二读写冲突检测寄存器;
所述缓存管理单元生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录是指:
所述缓存管理单元在所述第一读写冲突检测寄存器中,将所述第二处理单元对应的处理器标识位置位,将操作冲突标识位置为表示产生写操作冲突的值;在所述第二读写冲突检测寄存器中,将所述第一处理单元对应的处理器标识位置位,将操作冲突标识位置为表示产生读操作冲突的值。
可选地,所述第二处理单元根据所述记录通知所述第一事务是指:
所述第二处理单元在所述第二读写冲突检测寄存器中,查找置位的处理器标识位;确定置位的处理器标识位对应于所述第一处理单元;通知所述第一处理单元上运行的所述第一事务。
可选地,所述第一处理单元包括:
第一判断模块、第二判断模块;
执行模块,用于执行所述第一事务的处理,执行完成后指示所述第一判断模块进行判断;
清除模块,用于当收到所述第二事务的通知后,在所述第一读写冲突检测寄存器中,将所述第二处理单元对应的处理器标识位复位;指示所述第二判断模块进行判断;
所述第一判断模块用于判断所述第一读写冲突检测寄存器中的操作冲突标识位是否为表示产生写冲突的值;如果是则指示所述第一判断模块进行判断;如果为表示读操作冲突的值则指示所述提交模块提交所述第一事务;
所述第二判断模块用于判断所述第一读写冲突检测寄存器中各处理器标识位是否全未置位;如果全未置位则指示所述提交模块提交所述第一事务。
可选地,所述缓存管理单元还用于当判断所述第二事务读过所述第一数据时,在所述第一处理单元执行所述第一事务的处理前,将所述第一数据在所述第二事务中对应的缓存行复制到所述第一事务对应的私有不可见缓存中;当判断所述第二事务将要读所述第一数据时,在所述第二处理单元执行所述第二事务的处理前,从所述第一事务对应的缓存行中,将未进行写操作的所述第一数据复制到所述第二事务对应的缓存中。
本申请可以允许即使一个线程写数据的前提下,其他多核仍然可以并行读取相同数据,在维护数据完整性的前提下,提高多核读操作的并行性和避免内存由于读-写冲突和写-读冲突产生的回滚时间,最终提高系统的并发性和吞吐量,从而提高总体运行性能,并能提高多核系统的可扩展性。本申请的又一个实施例中增加了事务冲突寄存器,可以有效记录冲突的对象、类型,并能通过该事务冲突寄存器保证各事务的提交顺序。当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有优点。
附图说明
图1是实施例一的并发访问内存的方法的流程示意图;
图2是实施例一中读写冲突检测寄存器的示意图;
图3是实施例一中步骤S103的流程示意图;
图4是实施例一的第一个例子的流程示意图;
图5是实施例一的第二个例子的流程示意图。
具体实施方式
下面将结合附图及实施例对本申请的技术方案进行更详细的说明。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在一个典型的配置中,多核系统可包括多个处理器(CPU)、一个或多个输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
经过将近20多年的发展,Transaction memory可以分别由软件或者硬件实现,软件实现的Transaction memory执行效率非常低,而硬件实现的Transaction memory大大提高了其实用性,因此本文主要讨论硬件基础上的Transaction memory。
首先介绍一下硬件Transaction memory的工作原理。
Transaction memory用代码告诉CPU Transaction内存区域的开始和结束,例如Transaction_start和Transaction_end。中间部分为执行Transaction区域,一旦执行结束Transaction_end指令要求CPU将所有修改过的数据以原子方式提交(也就是提交过程不可被打断和访问)。
执行Transaction的过程中任何读过或者写过的内存区域都会被监视起来以免产生写-读,读-写,以及写-写冲突。举例来说,每条cache line(缓存行)都有两个bit(写标识位write-bit和读标识位read-bit)分别表示写过和读过;比如第一事务Transaction0读了数据A,则将数据A对应的缓存行的read-bit置位,即设定为“1”以表示读过(读过是指已经读到了Transaction0对应的缓存中但尚未提交Transaction0,如果提交了则将该read-bit复位,即设定为“0”);若之后Transaction0又写了数据A,则会先将数据A对应的缓存行的数据复制到私有不可见的缓存区域(比如第一层缓存)进行更新操作,同时将原数据A对应的缓存行的write-bit设定为“1”,read-bit设定为“0”。
如果第一线程P0通过第一处理器CPU0进入第一事务Transaction0的区域写(或者读)了一条缓存行(64字节)的数据,那么就会设置这条缓存行上对应的写(或者读)的标记bit;而另外的第二线程P1通过第一处理器CPU1进入了第一事务Transaction0或者其他事务的区域,准备读(或者写)刚才被写过(或者读过)相同的缓存行,那么这样的操作事件将被第一处理器CPU0所捕获,因此产生的结果为第一线程P0或者第二线程P1进行回滚,另外写-写冲突也将产生回滚现象阻碍CPU性能,尤其在读写共享内存(一个或多个缓存行)操作频繁的情况下,即不能达到并行操作还要产生冗余回滚因此将严重阻碍性能
为了使数据冲突时能够回滚到进入Transaction区域起始的状态,当前Transaction memory操作对所有内存写操作之前都必须将原有的数据复制一份;比如可以复制需要进行写操作的一条缓存行到私有不可见的缓存中(比如第一层缓存中),写操作中是对私有不可见的缓存中相应的缓存行进行写入更新;这样一旦产生冲突则将放弃私有不可见的缓存(比如第一层缓存)之中更新过的数据(以缓存行为单位),程序从Transaction入口点重新运行,如果成功完成Transaction,则用私有不可见的缓存(比如第一层缓存)中最新写入的数据代替原有的数据。
实施例一、一种并发访问内存的方法,包括:
S101、当第一事务需要对第一数据进行写操作时,如果存在读过所述第一数据或将要读所述第一数据的第二事务,则生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录;
S102、执行所述第二事务的处理,执行完成后提交所述第二事务并根据所述记录通知所述第一事务;
S103、执行所述第一事务的处理,执行完成且收到所述第二事务的通知后提交所述第一事务。
其中,执行所述第一、第二事务的处理的步骤可不分先后且可以并行。这里的“读过”是指读过是指已经读到了第二事务对应的缓存中但尚未提交。
本实施例中设计了在冲突时的提交流程及保证该提交流程实现的措施,能保证事务按照读、写操作的顺序提交,避免在读-写冲突(要进行写操作的数据被读过)和写-读冲突(要进行写操作的数据将要被读)发生时进行回滚,因此提高读操作并发性并且减少了回滚的产生,能提高多个系统的整体性能。
本实施例的一种实施方式中,可以为多核系统中的每个处理器增加一个读写冲突检测寄存器(后文简称为T-CCR),格式如图2所示,包括多核系统中各处理器对应的处理器标识位C0,C1…Cn,以及用于指示本处理器上当前运行的Transaction是产生读操作冲突还是写操作冲突的操作冲突标识位Reader/Writer,在一个Transaction中不允许读、写操作冲突同时发生,如果同时发生将需要进行回滚。
本实施方式中,所述生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录的步骤具体可以包括:
在运行所述第一事务的第一处理器的第一读写冲突检测寄存器中,将运行所述第二事务的第二处理器对应的处理器标识位置位,将操作冲突标识位置为表示产生写操作冲突的值;
在所述第二处理器的第二读写冲突检测寄存器中,将所述第一处理器对应的处理器标识位置位,将操作冲突标识位置为表示产生读操作冲突的值。
相应地,根据所述记录通知所述第一事务的步骤包括:
在所述第二读写冲突检测寄存器中,查找置位的处理器标识位;
确定置位的处理器标识位对应于所述第一处理器;
通知所述第一处理器上运行的所述第一事务。
举例来说,比如产生读-写冲突时(假设第一处理器CPU0上运行的Transaction0要写的缓存行和第二处理器CPU1上运行的Transaction1读过的缓存行冲突),则第一处理器CPU0的T-CCR0中,第二处理器CPU1对应的处理器标识位C1将会置位,同时Reader/Writer被置为“1”,表示第一处理器CPU0上当前运行的Transaction0是产生写操作冲突;而第二处理器CPU1对应的T-CCR1中,第一处理器CPU0对应的处理器标识位C0将会置位,同时Reader/Writer被置为“0”,表示第二处理器CPU1上当前运行的Transaction1是产生读操作冲突。表示读/写操作冲突的值也可以互换。
作为进行读操作的第二事务(运行该第二事务的第二处理器的T-CCR1中Reader/Writer为“0”,并且C0~Cn中其它处理器对应的处理器标识位都没有被置位),即使由于某些情况产生回滚,也要根据所述第二处理器的T-CCR1中对应的冲突位(即C0~Cn中被置位的对应于其它处理器的处理器标识位,本例中就是C0),相应清除该冲突位所对应的处理器的T-CCR中,第二处理器对应的处理器标识位(本例中即T-CCR0中的处理器标识位C1)。
本实施方式中,如图3所示,步骤S103具体可以包括:
S301、执行所述第一事务的处理,执行完成后进行步骤S302;
S302、判断所述第一读写冲突检测寄存器中的操作冲突标识位是否为表示产生写操作冲突的值,如果是则进行步骤S303,如果为表示读操作冲突的值则进行步骤S305;
S303、判断所述第一读写冲突检测寄存器中各处理器标识位是否全未置位;如果至少一个已置位则等待;如果全未置位则进行步骤S305;
S304、当收到所述第二事务的通知后,在所述第一读写冲突检测寄存器中,将所述第二处理器对应的处理器标识位复位;返回步骤S303;
S305、提交所述第一事务。
所述第二事务可以有一个或多个,比如有两个事务读过所述第一数据/要读所述第一数据;或一个事务读过所述第一数据,另一个事务要读所述第一数据;这时只需将第一读写冲突检测寄存器中相应的处理器标识位置位即可,Reader/Writer仍然被置为表示写操作冲突的值。等这些读过/要读所述第一数据的事务都提交后(第一读写冲突检测寄存器中的处理器标识位都复位后),提交所述第一事务。
本实施例的一种实施方式中,判断是否存在读过所述第一数据或将要读所述第一数据的第二事务的步骤后还可以包括:
如果所述第二事务读过所述第一数据,则在执行所述第一事务的处理前,将所述第一数据在所述第二事务中对应的缓存行复制到所述第一事务对应的私有不可见缓存中;
如果所述第二事务将要读所述第一数据,则在执行所述第二事务的处理前,从所述第一事务对应的缓存行中,将未进行写操作的所述第一数据复制到所述第二事务对应的缓存中。
Transaction在写之前复制是为了回滚时进行数据恢复,本实施例中利用了这种写前复制的特点并行读取复制过的内容,提高整体并行度同时减少冲突提高性能。
下面用两个例子具体说明本实施例:
第一个例子是推迟提交减少读-写冲突(要写的数据被其它事务读过),如图4所示,包括步骤S401~407。
S401、第一事务Transaction0通过第一处理器CPU0开始运行,将第一处理器CPU0的T-CCR0清空,准备写数据A。
S402、通过查询探测数据A是否被其他Transaction读过(即:数据A对应的缓存行的read bit是否置位),如果没有读过则跳到步骤S404;如果读过则进行步骤S403。
S403、假设数据A被第二事务Transaction1读过(数据A对应的缓存行的read bit被置位),那么对T-CCR0、T-CCR1进行设置,包括:将运行第二事务Transaction1的第二处理器CPU1的T-CCR1中,对应于所述第一处理器CPU0的处理器标识位C0置为“1”,将操作标识位Reader/Writer置为表示读操作冲突的值“0”。复制这条缓存行放到第一事务Transaction0对应的私有不可见缓存中进行更新,将第一事务Transaction0的T-CCR0中对应于所述第二处理器CPU1的处理器标识位C1置为1,将操作标识位Reader/Writer置为表示写操作冲突的值“1”。
S404、第一事务Transaction0执行事务处理直到结束。
S405、判断是否需要等待其它事务提交,包括:
判断第一事务Transaction0的T-CCR0中的处理器标识位(C1~Cn)是否均未置位,如果均未置位则说明不需要等待,可正常提交,进行步骤S407。
如果有至少一个已置位(不为“0)且T-CCR0中Reder/Writer为“1”则说明第二事务Transaction1正使用数据A,因此需要等待所述第二事务Transaction1提交;进行步骤S406。
S406、第二事务Transaction1提交时通知T-CCR1中数值为“1”的处理器标识位对应的处理器上所运行的事务(本例中即:处理器标识位C0为“1”则通知第一事务Transaction0);根据第二事务Transaction1提交时的通知,清除T-CCR0中对应于第二处理器的处理器标识位C1,跳转到步骤S405。
步骤S406也可能发生在第一事务Transaction0执行处理完成前,这样第一事务Transaction0就无需等待可以直接提交。
S407、提交第一事务Transaction0
第二个例子是推迟提交减少写-读冲突(要写的数据将要被其它事务读),如图5所示,包括步骤S501~507。
S501、第一事务Transaction0通过第一处理器CPU0开始运行,将第一处理器CPU0的T-CCR0清空,准备写数据A。
S502、判断是否有其它Transaction需要读数据A,如果没有则跳到步骤S504,如果有第二事务Transaction1需要读数据A则进行步骤S503。
S503、将T-CCR0中对应于所述第二处理器CPU1的处理器标识位C1置为“1”,同时将Reader/Writer置为“1”,复制原数据A(即未进行写操作的数据A)在第一事务Transaction0中对应的缓存行到第二事务Transaction1的缓存中(也可以是私有缓存中),将T-CCR1中对应于所述第二处理器CPU1的处理器标识位C0置为“1”,Reader/Writer置为“0”。
S504、第一事务Transaction0执行事务处理直到结束。
S405、判断是否需要等待其它事务提交,包括:
判断第一事务Transaction0的T-CCR0中的处理器标识位(C1~Cn)是否均未置位,如果均未置位则说明不需要等待,可正常提交,进行步骤S407。
如果有至少一个已置位(不为“0)且T-CCR0中Reder/Writer为“1”则说明第二事务Transaction1正使用数据A,因此需要等待所述第二事务Transaction1提交;进行步骤S506。
S506、第二事务Transaction1提交时通知T-CCR1中数值为“1”的处理器标识位对应的处理器上所运行的事务(本例中即:处理器标识位C0为“1”则通知第一事务Transaction0);根据第二事务Transaction1提交时的通知,清除T-CCR0中对应于第二处理器的处理器标识位C1,跳转到步骤S505。
步骤S506也可能发生在第一事务Transaction0执行处理完成前,这样第一事务Transaction0就无需等待可以直接提交。
S507、提交第一事务Transaction0
本实施例中,如果第一事务Transaction0需要读另外的Transaction写过的数据,由于T-CCR0中Reder/Writer为“1”,表示第一事务Transaction0的写操作已经和其它事务的读操作冲突,则Transaction0或者所述另外的Transaction必须回滚,以免产生死锁(比如另外的Transaction为第二事务Transaction1时,由于写数据的事务都要等待读数据的事务先提交,那么第一事务、第二事务将都需要等待对方提交,而导致都无法提交)。回滚时将相应T-CCR中的处理器标识位清除。
实施例二、一种并发访问内存的装置,包括:
缓存管理单元,用于当第一事务需要对第一数据进行写操作时,如果存在读过所述第一数据或将要读所述第一数据的第二事务,则生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录;
第一处理单元,用于执行所述第一事务的处理,执行完成且收到所述第二事务的通知后进行所述第一事务的提交;
第二处理单元,用于执行所述第二事务的处理,执行完成后进行所述第二事务的提交并根据所述记录通知所述第一事务。
本实施例的一种实施方式中,所述装置还可以包括:
与所述第一处理单元对应的第一读写冲突检测寄存器;
与所述第二处理单元对应的第二读写冲突检测寄存器;
所述缓存管理单元生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录具体可以是指:
所述缓存管理单元在所述第一读写冲突检测寄存器中,将所述第二处理单元对应的处理器标识位置位,将操作冲突标识位置为表示产生写操作冲突的值;在所述第二读写冲突检测寄存器中,将所述第一处理单元对应的处理器标识位置位,将操作冲突标识位置为表示产生读操作冲突的值。
本实施方式中,所述第二处理单元根据所述记录通知所述第一事务具体可以是指:
所述第二处理单元在所述第二读写冲突检测寄存器中,查找置位的处理器标识位;确定置位的处理器标识位对应于所述第一处理单元;通知所述第一处理单元上运行的所述第一事务。
本实施方式中,所述第一处理单元具体可以包括:
第一判断模块、第二判断模块;
执行模块,用于执行所述第一事务的处理,执行完成后指示所述第一判断模块进行判断;
清除模块,用于当收到所述第二事务的通知后,在所述第一读写冲突检测寄存器中,将所述第二处理单元对应的处理器标识位复位;指示所述第二判断模块进行判断;
所述第一判断模块用于判断所述第一读写冲突检测寄存器中的操作冲突标识位是否为表示产生写冲突的值;如果是则指示所述第一判断模块进行判断;如果为表示读操作冲突的值则指示所述提交模块进行所述第一事务的提交;
所述第二判断模块用于判断所述第一读写冲突检测寄存器中各处理器标识位是否全未置位;如果全未置位则指示所述提交模块进行所述第一事务的提交。
本实施例的一种实施方式中,所述缓存管理单元还可以用于当判断所述第二事务读过所述第一数据时,在所述第一处理单元执行所述第一事务的处理前,将所述第一数据在所述第二事务中对应的缓存行复制到所述第一事务对应的私有不可见缓存中;当判断所述第二事务将要读所述第一数据时,在所述第二处理单元执行所述第二事务的处理前,从所述第一事务对应的缓存行中,将未进行写操作的所述第一数据复制到所述第二事务对应的缓存中。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
当然,本申请还可有其他多种实施例,在不背离本申请精神及其实质的情况下,熟悉本领域的技术人员当可根据本申请作出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请的权利要求的保护范围。

Claims (10)

1.一种并发访问事务内存的方法,包括:
缓存管理单元当第一事务需要对第一数据进行写操作时,如果存在读过所述第一数据或将要读所述第一数据的第二事务,则生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录;
第二处理器执行所述第二事务的处理,执行完成后提交所述第二事务并根据所述记录通知所述第一事务;
第一处理器执行所述第一事务的处理,执行完成且收到所述第二事务提交时的通知后提交所述第一事务。
2.如权利要求1所述的方法,其特征在于,所述生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录的步骤包括:
缓存管理单元在运行所述第一事务的第一处理器的第一读写冲突检测寄存器中,将运行所述第二事务的第二处理器对应的处理器标识位置位,将操作冲突标识位置为表示产生写操作冲突的值;
缓存管理单元在所述第二处理器的第二读写冲突检测寄存器中,将所述第一处理器对应的处理器标识位置位,将操作冲突标识位置为表示产生读操作冲突的值。
3.如权利要求2所述的方法,其特征在于,根据所述记录通知所述第一事务的步骤包括:
第二处理器在所述第二读写冲突检测寄存器中,查找置位的处理器标识位;
确定置位的处理器标识位对应于所述第一处理器;
通知所述第一处理器上运行的所述第一事务。
4.如权利要求2所述的方法,其特征在于,第一处理器执行所述第一事务的处理,执行完成且收到所述第二事务的通知后提交所述第一事务的步骤包括:
步骤41、第一处理器执行所述第一事务的处理,执行完成后进行步骤42;
步骤42、所述第一处理器判断所述第一读写冲突检测寄存器中的操作冲突标识位是否为表示产生写操作冲突的值,如果是则进行步骤43,如果为表示读操作冲突的值则进行步骤45;
步骤43、所述第一处理器判断所述第一读写冲突检测寄存器中各处理器标识位是否全未置位;如果至少一个已置位则等待;如果全未置位则进行步骤45;
步骤44、所述第一处理器当收到所述第二事务的通知后,在所述第一读写冲突检测寄存器中,将所述第二处理器对应的处理器标识位复位;返回步骤43;
步骤45、所述第一处理器提交所述第一事务。
5.如权利要求1所述的方法,其特征在于,判断是否存在读过所述第一数据或将要读所述第一数据的第二事务的步骤后还包括:
如果所述第二事务读过所述第一数据,则所述缓存管理单元在执行所述第一事务的处理前,将所述第一数据在所述第二事务中对应的缓存行复制到所述第一事务对应的私有不可见缓存中;
如果所述第二事务将要读所述第一数据,则所述缓存管理单元在执行所述第二事务的处理前,从所述第一事务对应的缓存行中,将未进行写操作的所述第一数据复制到所述第二事务对应的缓存中。
6.一种并发访问事务内存的装置,其特征在于,包括:
缓存管理单元,用于当第一事务需要对第一数据进行写操作时,如果存在读过所述第一数据或将要读所述第一数据的第二事务,则生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录;
第一处理单元,用于执行所述第一事务的处理,执行完成且收到所述第二事务提交时的通知后提交所述第一事务;
第二处理单元,用于执行所述第二事务的处理,执行完成后提交所述第二事务并根据所述记录通知所述第一事务。
7.如权利要求6所述的装置,其特征在于,还包括:
与所述第一处理单元对应的第一读写冲突检测寄存器;
与所述第二处理单元对应的第二读写冲突检测寄存器;
所述缓存管理单元生成表示所述第一事务的写操作和所述第二事务的读操作冲突的记录是指:
所述缓存管理单元在所述第一读写冲突检测寄存器中,将所述第二处理单元对应的处理器标识位置位,将操作冲突标识位置为表示产生写操作冲突的值;在所述第二读写冲突检测寄存器中,将所述第一处理单元对应的处理器标识位置位,将操作冲突标识位置为表示产生读操作冲突的值。
8.如权利要求7所述的装置,其特征在于,所述第二处理单元根据所述记录通知所述第一事务是指:
所述第二处理单元在所述第二读写冲突检测寄存器中,查找置位的处理器标识位;确定置位的处理器标识位对应于所述第一处理单元;通知所述第一处理单元上运行的所述第一事务。
9.如权利要求7所述的装置,其特征在于,所述第一处理单元包括:
第一判断模块、第二判断模块;
执行模块,用于执行所述第一事务的处理,执行完成后指示所述第一判断模块进行判断;
清除模块,用于当收到所述第二事务的通知后,在所述第一读写冲突检测寄存器中,将所述第二处理单元对应的处理器标识位复位;指示所述第二判断模块进行判断;
所述第一判断模块用于判断所述第一读写冲突检测寄存器中的操作冲突标识位是否为表示产生写冲突的值;如果是则指示所述第一判断模块进行判断;如果为表示读操作冲突的值则指示所述提交模块提交所述第一事务;
所述第二判断模块用于判断所述第一读写冲突检测寄存器中各处理器标识位是否全未置位;如果全未置位则指示所述提交模块提交所述第一事务。
10.如权利要求6所述的装置,其特征在于:
所述缓存管理单元还用于当判断所述第二事务读过所述第一数据时,在所述第一处理单元执行所述第一事务的处理前,将所述第一数据在所述第二事务中对应的缓存行复制到所述第一事务对应的私有不可见缓存中;当判断所述第二事务将要读所述第一数据时,在所述第二处理单元执行所述第二事务的处理前,从所述第一事务对应的缓存行中,将未进行写操作的所述第一数据复制到所述第二事务对应的缓存中。
CN201310492402.3A 2013-10-18 2013-10-18 一种并发访问内存的方法及装置 Active CN104572506B (zh)

Priority Applications (9)

Application Number Priority Date Filing Date Title
CN201310492402.3A CN104572506B (zh) 2013-10-18 2013-10-18 一种并发访问内存的方法及装置
TW103118605A TW201516688A (zh) 2013-10-18 2014-05-28 一種併發存取記憶體的方法及裝置
US14/515,952 US20150113244A1 (en) 2013-10-18 2014-10-16 Concurrently accessing memory
SG11201602639TA SG11201602639TA (en) 2013-10-18 2014-10-16 Concurrently accessing memory
EP14793944.1A EP3058461A1 (en) 2013-10-18 2014-10-16 Concurrently accessing memory
KR1020167009643A KR20160086820A (ko) 2013-10-18 2014-10-16 메모리에 동시에 액세스하는 기법
PCT/US2014/060901 WO2015057962A1 (en) 2013-10-18 2014-10-16 Concurrently accessing memory
JP2016520133A JP2016537708A (ja) 2013-10-18 2014-10-16 メモリへの同時アクセス
HK15106256.9A HK1205806A1 (zh) 2013-10-18 2015-07-01 種併發訪問內存的方法及裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310492402.3A CN104572506B (zh) 2013-10-18 2013-10-18 一种并发访问内存的方法及装置

Publications (2)

Publication Number Publication Date
CN104572506A CN104572506A (zh) 2015-04-29
CN104572506B true CN104572506B (zh) 2019-03-26

Family

ID=51866334

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310492402.3A Active CN104572506B (zh) 2013-10-18 2013-10-18 一种并发访问内存的方法及装置

Country Status (9)

Country Link
US (1) US20150113244A1 (zh)
EP (1) EP3058461A1 (zh)
JP (1) JP2016537708A (zh)
KR (1) KR20160086820A (zh)
CN (1) CN104572506B (zh)
HK (1) HK1205806A1 (zh)
SG (1) SG11201602639TA (zh)
TW (1) TW201516688A (zh)
WO (1) WO2015057962A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106874074B (zh) * 2016-12-26 2020-05-05 哈尔滨工业大学 一种基于软件事务内存的并发缺陷规避系统及方法
CN110059115B (zh) * 2019-03-19 2023-08-11 创新先进技术有限公司 一种数据读取方法和装置
CN113421073A (zh) * 2019-08-30 2021-09-21 创新先进技术有限公司 在区块链中并发执行交易的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102272744A (zh) * 2009-01-02 2011-12-07 国际商业机器公司 用于事务存储器管理中的冲突仲裁的优先化
CN103257933A (zh) * 2006-03-30 2013-08-21 英特尔公司 无序处理器中的事务存储器执行的方法、设备和系统

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05197604A (ja) * 1991-05-21 1993-08-06 Digital Equip Corp <Dec> マルチプロセッサ・コンピュータ及びその動作方法
US5504899A (en) * 1991-10-17 1996-04-02 Digital Equipment Corporation Guaranteeing global serializability by applying commitment ordering selectively to global transactions
US6256713B1 (en) * 1999-04-29 2001-07-03 International Business Machines Corporation Bus optimization with read/write coherence including ordering responsive to collisions
US7558923B1 (en) * 1999-12-22 2009-07-07 Intel Corporation Prevention of live-lock in a multi-processor system
US8024714B2 (en) * 2006-11-17 2011-09-20 Microsoft Corporation Parallelizing sequential frameworks using transactions
US7908255B2 (en) * 2007-04-11 2011-03-15 Microsoft Corporation Transactional memory using buffered writes and enforced serialization order
US8661204B2 (en) * 2007-08-15 2014-02-25 University Of Rochester, Office Of Technology Transfer Mechanism to support flexible decoupled transactional memory
US7971248B2 (en) * 2007-08-15 2011-06-28 Microsoft Corporation Tolerating and detecting asymmetric races
US20090138890A1 (en) * 2007-11-21 2009-05-28 Arm Limited Contention management for a hardware transactional memory
US8473952B2 (en) * 2010-06-30 2013-06-25 Oracle International Corporation System and method for communication between concurrent transactions using transaction communicator objects
US9619301B2 (en) * 2011-04-06 2017-04-11 Telefonaktiebolaget L M Ericsson (Publ) Multi-core memory model and speculative mode processor management
US20140075124A1 (en) * 2012-09-07 2014-03-13 International Business Machines Corporation Selective Delaying of Write Requests in Hardware Transactional Memory Systems
US9086974B2 (en) * 2013-09-26 2015-07-21 International Business Machines Corporation Centralized management of high-contention cache lines in multi-processor computing environments

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103257933A (zh) * 2006-03-30 2013-08-21 英特尔公司 无序处理器中的事务存储器执行的方法、设备和系统
CN102272744A (zh) * 2009-01-02 2011-12-07 国际商业机器公司 用于事务存储器管理中的冲突仲裁的优先化

Also Published As

Publication number Publication date
CN104572506A (zh) 2015-04-29
SG11201602639TA (en) 2016-05-30
US20150113244A1 (en) 2015-04-23
WO2015057962A1 (en) 2015-04-23
HK1205806A1 (zh) 2015-12-24
JP2016537708A (ja) 2016-12-01
KR20160086820A (ko) 2016-07-20
EP3058461A1 (en) 2016-08-24
TW201516688A (zh) 2015-05-01

Similar Documents

Publication Publication Date Title
US20210042286A1 (en) Transactional key-value store
US10289556B2 (en) Techniques to perform power fail-safe caching without atomic metadata
TWI638311B (zh) Data processing method and processor
US20180011893A1 (en) Hash index
US20180011892A1 (en) Foster twin data structure
US20170351543A1 (en) Heap data structure
TWI540502B (zh) 用於重疊原子區域執行的處理器
CN103279428B (zh) 一种显式的面向流应用的多核Cache一致性主动管理方法
US11100083B2 (en) Read only bufferpool
CN109871386A (zh) 非易失性存储器中的多版本并发控制(mvcc)
CN101788922A (zh) 基于辅助线程实现事务存储系统的方法和装置
CN106155839B (zh) 一种用于备份数据的方法与设备
US20180373634A1 (en) Processing Node, Computer System, and Transaction Conflict Detection Method
CN104572506B (zh) 一种并发访问内存的方法及装置
US9830224B2 (en) Selective fault stalling for a GPU memory pipeline in a unified virtual memory system
WO2016106738A1 (zh) 事务冲突检测方法、装置及计算机系统
US20210064272A1 (en) Multi-tier storage
CN104049904B (zh) 用于管理统一虚拟存储器的页面状态目录的系统和方法
CN114816224A (zh) 数据管理方法和数据管理装置
US20160210234A1 (en) Memory system including virtual cache and management method thereof
Pavlo Emerging hardware trends in large-scale transaction processing
JP2001084178A (ja) データ記憶素子および電子計算機

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1205806

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant