CN113505088A - 在使用带锁定和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议 - Google Patents

在使用带锁定和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议 Download PDF

Info

Publication number
CN113505088A
CN113505088A CN202110632287.XA CN202110632287A CN113505088A CN 113505088 A CN113505088 A CN 113505088A CN 202110632287 A CN202110632287 A CN 202110632287A CN 113505088 A CN113505088 A CN 113505088A
Authority
CN
China
Prior art keywords
htm
transaction
memory
application data
htm transaction
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.)
Pending
Application number
CN202110632287.XA
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN113505088A publication Critical patent/CN113505088A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Retry When Errors Occur (AREA)

Abstract

本发明涉及数据处理系统(100)和数据处理方法。所述数据处理系统(100)用于执行硬件事务存储(hardware transactional memory,简称HTM)事务。所述数据处理系统(100)包括用于持久存储数据的字节寻址非易失性存储器(101);处理器(103),用于通过将指示HTM事务成功提交的指示标识写入非易失性存储器(101),来执行与提交所述HTM事务有关的原子HTM写入操作。

Description

在使用带锁定和未锁定的非易失存储器的共享存储器中的硬 件事务存储的一致性协议
技术领域
本发明涉及一种数据处理系统和方法,尤其涉及对数据处理系统的共享存储器的存储访问。
背景技术
在并行编程计算环境中,当并行处理器内核或程序共享对相同存储器位置的访问时,必须正确管理和同步该访问。在一些此类环境中,可以采用事务存储范例来管理线程的同步存储器访问。根据事务存储方法,线程可以推测性地执行事务而不改变共享存储器位置的内容,直到随后提交事务。如果在两个事务之间检测到冲突,其中一个事务可能被中止,以便另一个事务可以提交,在此时,已提交的事务可能会改变共享存储器位置的内容。
更具体地,传统的多处理器计算机系统包括多个处理单元以及一个或多个地址、数据和控制总线。耦合到该多个处理单元的是系统存储器,其表示该多处理器计算机系统中最低级别的易失性存储器,且通常可由所有处理单元进行读取和写入访问。为了减少访问驻留在该系统存储器中的指令和数据的访问延时,每个处理单元通常由相应的多级缓存架构进一步支持,该多级缓存架构的较低层级可由一个或多个处理器核共享。
通常利用缓存存储器临时缓冲处理器可能访问的存储块,以便通过减少从系统存储器加载所需数据和指令而引入的访问延迟来加快处理速度。在一些多处理器系统中,缓存架构至少包含两个层级。第一级(L1)或高层级缓存通常是与特定处理器核相关联的私有缓存,不能被多处理器系统中的其他核访问。通常,为响应诸如加载或存储指令的存储访问指令,处理器核首先访问高级缓存的目录。如果在高层级缓存中没有找到所请求的存储块,则处理器核通过访问低层级缓存(例如,第二级(L2)或第三级(L3)缓存)或系统存储器来查找所请求的存储块。最低层级缓存(例如,L3缓存)通常由几个处理器核共享。
在这种系统中,多处理器软件通过多个软件线程并发访问共享数据结构。并发访问共享数据时,通常需要防止所谓的“无约束的竞争”或“冲突”。当两个存储访问指向相同的存储器位置,并且其中的至少一个为写入,并且无法来确保这些访问发生的顺序时,两个存储访问之间发生冲突。
多处理器软件通常利用锁变量来以有序的无冲突方式协调对存储器中位置的并发读取和修改。锁变量是存储器中的一个位置,可以基于读取的值,以原子操作的方式被读取和设置为某个值。对锁变量的读取修改写入操作通常通过原子读取修改写入指令或通过指令序列来实现,该指令序列与原子读取和修改锁变量的单个指令提供的效果相同。
按照这种方式,通过原子读取修改写入指令读取初始”未锁定”值的软件线程被认为已经“获得”锁定,且在该锁被释放前是唯一的占有该锁定的软件线程。占有该锁的线程可以安全地更新该锁保护的共享存储器位置,而不会与其他线程冲突,因为其他线程在当前线程释放该锁之前无法获得该锁。当已经读取和/或修改共享位置后,占有该锁的线程释放该锁(例如,通过将该锁变量写入“未锁定”值),以允许其他线程访问存储器中的该该共享位置。
当使用锁协调竞争线程对共享数据的访问时,锁具有许多众所周知的缺点。其中包括:首先,当给定的线程占有多于一个锁且阻止其他线程的处理进度时,可能发生死锁;其次,当对共享数据的访问没有冲突,锁不是严格必要时,获得锁的性能成本较高。
为了克服这些限制,可以采用事务存储的概念。在事务存储中,一组加载和/或存储指令被视为“事务”。当组件加载和存储操作可以原子地发生而不与另一个线程冲突时,事务成功。在与另一个线程发生冲突的情况下,该事务失败,然后可以重新尝试。如果该事务再次失败,软件可能会退回使用锁,以确保有序访问共享数据。
为了支持事务存储,为了解决冲突,底层硬件在事务执行时跟踪事务中涉及的存储位置,即,事务足迹。如果在事务足迹显示发生冲突,则事务将中止并可能重新启动。事务存储的使用降低了由于一个线程占有多个锁定而导致死锁的可能性,因为在典型情况下,不会有锁被占有(事务只是尝试进行一个或多个存储访问,如果发生冲突则重新启动)。此外,通常避免了获得锁的处理开销。
事务存储以硬件事务存储(hardware transactional memory,简称HTM)和软件事务存储(software transactional memory,简称STM)的形式被了解。硬件事务存储(hardware transactional memory,简称HTM)系统可能需要对处理器、缓存和总线协议的修改以支持事务。软件事务存储(software transactional memory,简称STM)在软件运行库或编程语言中提供事务存储的语义。未来一代的多核处理器将实现硬件事务存储(hardware transactional memory,简称HTM)的形式,如文档“
Figure BDA0003104116900000021
架构指令集扩展编程参考”中描述的那样。
发明内容
本发明旨在提供更完善的数据处理系统和方法。
该目的是通过独立权利要求的主旨实现的。具体实现形式参见从属权利要求、说明书和附图。本发明基于以下理念:在HTM提交中原子地添加持久指示标识,并记录每个HTM写入,且在提交之后刷新每个HTM写入,以允许硬件事务存储(hardware transactionalmemory,简称HTM)在系统发生故障时仍在非易失存储器中保持一致性和持久性。
根据本发明第一方面,一种数据处理系统用于执行硬件事务存储(hardwaretransactional memory,简称HTM)事务,该数据处理系统包括:
用于持久存储数据的字节寻址非易失性存储器;
处理器,用于通过将指示标识写入指示HTM事务成功提交的非易失性存储器,来执行与提交该HTM事务有关的原子HTM写入操作。
根据第一方面第一种实现方式,该处理器通过多个缓存行耦合到缓存存储器,该缓存存储器用于被该处理器用来使用缓存一致性协议来缓存数据。
根据第一方面第二种实现方式,该数据处理系统还用于在该HTM事务成功提交之前将与该HTM事务相关联的写入操作记录在该非易失性存储器中。
根据第一方面第三种实现方式,该数据处理系统还用于在该HTM事务成功提交之前,通过将与该HTM事务相关联的写入操作的日志透明地更新到该非易失性存储器,来将与该HTM事务相关联的写入操作记录在该非易失性存储器中。
根据第一方面第四种可能的实现方式,该数据处理系统还包括恢复单元,用于:如果与该HTM事务相关联的该写入操作的日志存在于非易失性存储器中,且该HTM事务处于记录状态,在该数据处理系统重新启动时重做该数据处理系统的日志,其中通过该指示标识被设置表示该HTM事务处于纪录状态;并且如果重做该事件完成,将该HTM事务设置为未记录的状态,其中该指示标识被取消设置表示该HTM事务处于未记录的状态。
根据第一方面第五种可能的实现方式,该数据处理系统还用于在该HTM事务成功提交之后,将由该HTM操作写入的数据从缓存存储器刷新到该非易失性存储器。
根据第一方面第六种实现方式,该数据处理系统还用于在该HTM事务成功提交之后,将该HTM事务设置为未记录状态,其中通过取消设置该指示标识将该HTM事务设置为未记录状态。
根据第一方面第七种实现方式,该数据处理系统还用于将由该HTM操作写入的数据从该缓存存储器刷新到该非易失性存储器,而不中止HTM事务。
根据第一方面第八种实现方式,该指示标识指示该HTM事务的成功提交包括HTM事务标识,其中该HTM事务标识为提交记录。
根据第二方面,一种用于执行硬件事务存储(hardware transactional memory,简称HTM)事务的数据处理方法包括以下步骤:通过将指示HTM事务成功提交的指示标识写入非易失性存储器来执行与提交该HTM事务有关的原子HTM写入操作。
第二方面的第一种实现方式包括以下步骤:在该HTM事务成功提交之前,通过将与该HTM事务相关联的写入操作的日志透明地刷新到该非易失性存储器,来在该非易失性存储器中执行与该HTM事务相关联的写入操作。
第二方面的第二种实现方式包括以下步骤:如果与该HTM事务相关联的该写入操作的日志存在于非易失性存储器中,且该HTM事务处于记录状态,重做该数据处理系统的日志,其中该指示标识被设置表示该HTM事务处于纪录状态;并且如果重做该事件完成,将该HTM事务设置为未记录的状态,其中该指示标识被取消设置表示该HTM事务处于未记录的状态。
第二方面的第三种实现方式包括以下步骤:在该HTM事务成功提交之后,将由该HTM操作写入的数据从缓存存储器刷新到该非易失性存储器。
第二方面的第四种实现方式包括以下步骤:在该HTM事务成功提交之后,通过取消设置该指示标识将该HTM事务设置为未记录状态。
第二方面的第五种实现方式包括以下步骤:将由该HTM操作写入的数据从该缓存存储器刷新到该非易失性存储器,而不中止HTM事务。
根据本发明第三方面,一种计算机程序代码,用于在计算机上执行时执行如前述第二方面或其实现方式的数据处理方法。
附图说明
本发明的具体实施方式将结合以下附图进行描述,其中:
图1示出了一实施例提供的一种数据处理系统的示意图;
图2示出了一实施例提供的一种数据处理方法的示意图;
图3示出了一实施例提供的一种数据处理系统的状态图;
图4示出了示出一实施例提供的数据处理系统的不同方面并且提供关于每个步骤的实现细节的示意图。
具体实施方式
以下结合附图进行详细描述,该附图是描述的一部分,并通过图解说明的方式示出可以实施本发明的具体方面。可以理解的是,在不脱离本发明范围的情况下,可以利用其他方面,并可以做出结构上或逻辑上的改变。因此,以下详细的描述并不当作限定,本发明的范围由所附权利要求书界定。
可以理解的是,与所描述的方法有关的内容对于与用于执行方法对应的设备或系统也同样适用,反之亦然。例如,如果描述了一个具体的方法步骤,对应的设备或系统可以包括用于执行所描述的方法步骤的单元,即使此类单元未在图中详细说明或阐述。此外,应理解,除非另外具体指出,否则本文中描述的各种示例性方面的特征可彼此组合。
图1示出了一实施例提供的一种数据处理系统100的示意图。该数据处理系统100用于执行硬件事务存储(hardware transactional memory,简称HTM)事务。该数据处理系统(100)包括用于持久存储数据的字节寻址非易失性存储器(101)和处理器(103)。该处理器103用于通过将指示HTM事务成功提交的指示标识写入非易失性存储器,来执行与提交该HTM事务有关的原子HTM写入操作。在一实施例中,该指示标识可以是该HTM事务提交中的非易失性位。
非易失性存储器(nonvolatile memory,简称NVM或NVRAM)是一个字节寻址存储器,该存储器耐用,即该存储器中的数据在电源故障时持续存在。根据本实施例,在NVM中维护日志记录(包括成功提交指示标识)和应用数据。
根据一实施例,该HTM事务需要写日志记录并将日志记录和应用数据刷新(flush)至NVM,而不中止自身或其他正在运行的事务。这需要对HTM系统透明的一种特殊类型的刷新指令,我们将其称为透明刷新(transparent flush,简称TF)。主要厂商的现有架构使用不会从缓存删除已刷新地址的刷新指令,这样可以实现透明刷新(transparent flush,简称TF)机制。例如,在X86微架构中使用TSX块运行HTM事务的线程将日志记录写入缓存,然后使用CLWB指令将日志记录刷新到该NVM中的日志记录区域。
恢复进程在机器重新启动后从NVM读取提交指示标识,如果提交指示标识设置为真,这意味着该事务成功但仍被记录,则读取日志记录并相应地写入应用数据区域。
根据一实施例,该指示标识可以通过图4中的提交记录来实现。成功的提交是指事务写入对该系统中所有处理单元均是原子可视的。
在一实施例中,该处理器103通过多个缓存行106耦合到缓冲存储器105,该缓存存储器105用于被该处理器103通过缓存一致性协议来缓存数据。
在一实施例中,数据处理系统100还用于在非易失性存储器101的日志记录区域中创建日志记录,并将与该HTM事务相关联的缓存数据的写入操作记录在该日志记录区域。日志记录的数据结构可以参考图4,例如,其包括Commit Record(提交记录)、Self_id、Size(大小)和<DATA、ADDR>元组。Commit Record是持续成功的提交指示标识。Self id是事件的唯一标识符。<DATA、ADDR>元组:由事务写入的单个缓存行的数据和地址的日志记录。Size是一个事务中日志记录的数量。
在一实施例中,该数据处理系统100用于:在该HTM事务提交之前,通过将与该HTM事务相关联的缓存数据的写入操作的日志透明地刷新到该非易失性存储器101,来将与该HTM事务相关联的缓存数据的写入操作记录到该记录区域中。透明刷新对该缓存存储器105和该HTM系统均是不可视的。
在一实施例中,该数据处理系统100还包括恢复单元107,用于:若提交记录被设置为真且与HTM操作相关联的日志记录数据存在于该非易失性存储器101中,在重新启动所述数据处理系统100时重做该日志。重做该日志是指根据仍然处于记录状态的日志记录区域,重写应用数据区域,应用数据在系统故障(例如电源故障)之前可能未刷新到该非易失性存储器101。
在一实施例中,该数据处理系统100还用于在提交该HTM事务之后,将与该HTM操作相关联的修改的应用数据从缓存刷新到该非易失性存储器101中的应用数据区域。
在一实施例中,该数据处理系统100还用于在该HTM事务提交之前,将与该HTM操作相关联的修改的应用数据从缓存透明地刷新到如图4所示的该非易失性存储器101中的日志记录区域,以及在该HTM事务提交之后,将其刷新到如图4所示的非易失性存储器101中的应用数据区域,而不中止HTM事务。
在一实施例中,指示该HTM事务的成功提交的指示标识包括HTM事务提交记录。提交记录可以是一个布尔变量,其值为真时表示该事务已成功提交。只要该提交记录处于设置状态,该事务的写入就处于记录状态,并将在重新启动中恢复。
图2是一实施例提供的持久性HTM事务的主要阶段的流程图。
该图示出了一个成功的持久性HTM事务的所有阶段:
1、启动一个HTM事务。
2、在缓存中写入应用数据,并将其记录在NVM的日志记录区域中的日志记录中。
3、成功提交事务,同时,将NVM的日志记录区域的提交记录中的指示标识设置为真。
4、如果没有失败,将修改的应用数据从缓存刷新到NVM中的应用数据区域。
5、如果发生故障,且指示标识为真,则在重新启动时,将修改的应用数据从NVM中的日志记录区域复制到NVM中的应用数据区域的应用数据中,或者,如果指示标识为假,则忽略该事务。
6、将NVM的日志记录区域的提交记录中的指示标识设置为假。
在下文中,使用以下符号和定义更详细地描述数据处理系统100和数据处理方法200的进一步的实施例和实现方式。
将由例如处理器103执行的HTM事务记为Tk。数据处理系统100的重新启动使数据处于一致状态,消除了未提交的事务的影响,并应用所提交的事务的丢失效果(重新启动)。如果事务成功提交,则事务完成(Finalization),并将其在缓存中的所有写入都刷新到NVM101中的应用数据区域,并将提交记录设置为假,如果后续的重新启动发生,则将忽略该事务。如果α是缓存105中的存储地址,则被称为透明刷新的TF(α)将会在应用数据区域或日志记录区域中将α写入该非易失性存储器,但不会使其无效且不以任何方式影响缓存一致性。
在一实施例中,由一个HTM事务T写入的NVM 101中的数据项x(可寻址字)的状态由图3所示的以下三个特征定义。(1)“私有”/“共享”:“私有”表示x只在一个线程的L1缓存中,而对其他线程不可见。当x为“共享”时,缓存一致性使其新值可见。(2)“持久”/“易失”:“持久”意味着x的最后一次写入是在NVM 101中;否则x的新值在缓存105中为“易失”,且在电源故障时将消失。(3)“已记录”/“清除”如果x为“已记录”,则重新启动将从非易失性日志恢复x。如果x为“清除”,则重新启动将不会影响x,因为其日志记录已经完成或其事务尚未成功提交。
图3示出了可以由本申请的数据处理系统(例如,图1所示的数据处理系统100)执行的HTM事务中的单次写入的状态机。根据一实施例,该机制使<“专有”,“清除”>原子转换为<“共享”,“已记录”>,并允许从<“易失”>到<“持久”>的转换,从而不中止并发读取该数据项的HTM事务。一般来说,“已记录”的特征是针对整个HTM事务的。将单个事务的所有写入从“清除”转为“已记录”需要单次持久写入。在根据本申请的实施例的一个HTM提交中,所有写入由HTM公开并被同时记录。在一实施例中,每个写入生成持久性日志记录,但是在成功提交之前,该写入不会被记录,从某种意义上说,不会被重新启动进程重启(replay)。图4是不同阶段行为的详细流程图。
当HTM事务Tk写入变量x时,x在处理器103的L1缓存(例如,图1所示的缓存105)中被标记为事务,并且是“私有”的,即,在处理器103的L1缓存105中被私有。由于仅存在于缓存105中,所以该事务是“易失”的,由于事务尚未提交,所以该事务是“清除”的,即,不是“已记录”的。未记录意味着x不会被重新启动进程写入。在数据处理系统100中止或有电源故障时,“易失”和“私有”的x值将被丢弃,并且将恢复到其先前的“共享”和“持久”值。
在一实施例中,在HTM提交中,x的状态改变两次。其成为“共享”,即,可见,同时也是“已记录”的。在一实施例中,两个改变在成功提交时以原子方式发生。成功提交后,HTM将x的新值透明地刷新到NVM 101,并清除x。清除是指首先将提交记录(指示标识)设置为假,并在第二步中取消设置日志指示标识。该日志指示标识用于验证一个地址只能由系统中的一个事务记录,并且重新启动进程通过一个HTM事务对该地址最后一个写入的值,最多写入该地址一次。该日志指示标识是本专利中的一个实施例,而不是权利要求的一部分。如果系统100发生故障,且当x是“已记录”时重新启动,则处理器103用于将x的日志记录中的x的提交值写入该NVM中的应用数据区域,然后清除x。
在一实施例中,该NVM 101中的日志记录不是典型的顺序日志。相反,其只能为正在运行的或由HTM提交且其日志记录尚未被回收的事务保存日志记录。
如本领域技术人员将理解的那样,如果L1缓存105是非易失性的,当没有任何进一步的修改时,HTM将是持久的。重新启动事件可以中止正在运行的事务,并且在缓存105中的提交的HTM事务将成为持久并且不需要任何记录。然而,由于硬件限制,例如该NVM 101的快速磨损和缓慢写入,缓存架构在可预见的将来将保留在易失性SRAM中。
如图3所示,在一实施例中,该事务Tk的成功提交自动将该指示标识,即Tk的提交记录,设置为真,如图4所示。在一实施例中,这可以由处理器103使用“tx_end_log(Tk)”指令实现。该指令执行HTM提交并设置Tk的提交记录。图4示意性地示出了一实施例提供的NVM101中的事务Tk的持续足迹的布局。其包括用于指示可以作为Tk的提交记录的“已记录”。指令“tx_end_log(Tk)”将提交记录写入该NVM 101,同时将Tk的写入状态设置为“已记录”。
在一实施例中,处理器103用于通过正在运行的事务将修改的数据从缓存105刷新到NVM 101,而不中止这些事务。在事务T完成期间,例如,在指令“tx_end_log(T)”之后,即在HTM提交之后,T将应用数据从缓存105刷新到NVM 103中的应用数据区域不会中止正在进行的读取此值的并发事务。在一实施例中,这些刷新不产生任何一致性需求,且不会使缓存105中的数据无效。这种操作在本文中称为透明刷新(transparent flush,简称TF),因为它们对缓存架构和HTM子系统没有影响。
在一实施例中,该处理器103可以提供用于HTM事务的API,包括启动并提交HTM事务的“tx_start()”和“tx_end()”函数。非持久性HTM实现包括这些函数。在持久性HTM中,“tx_start()”是指启动一个HTM事务,就在易失性情况下,而“tx_end()”被扩展为将该事务日志记录从该缓存中刷新到NVM中的日志记录区域,之后是从诸如“tx_end_log(T)”指令的API调用的同时进行的HTM提交和指示标识设置,随后将应用数据本身从缓存刷新到NVM中的应用数据区域。在一实施例中,机器存储指令可以由具有函数“tx_write(地址、数据、大小)”等函数的预处理器代替。tx_write()函数在NVM的日志记录区域中创建一个日志记录,例如,通过非瞬态写入的方式,并将应用数据写入应用数据的缓存。在一实施例中,出现在图4所示的HTM事务中的日志记录和大小字段被刷新为该事务的一部分,但不作为提交指令的一部分。但是,对同一个缓存行的多次写入可以写入同一个日志记录。因此,在一实施例中,日志记录在提交之前仅刷新一次以防止相同数据的多次刷新。
在一实施例中,处理器103用于在处理器103不提供进度保证的情况下使用尽力而为的策略。因此,传统的易失性HTM中经过一定次数的中止之后,事务必须进行全局锁定和提交。然而,使用NVM,全局锁定是不够的,因为暂时写入可能已经污染了存储器。因此,在一实施例中,为每个易失性HTM写入创建撤消日志条目。在一可选实施例中,在将第一值写入NVM 101之前,创建完整重做日志。第一实施例在写入开销之后减少读取。
如上所述,利用易失性缓存(诸如图1所示的缓存105)以及在缓存中存储所有写入的提交HTM事务,在一实施例中,处理器103用于记录该写入,从而在HTM提交后当写入仍然易失时,在发生重新启动情况下,允许恢复。在一实施例中,该处理器103用于在所有事务写入都保留在该缓存105中时,使得对日志的所有写入在HTM提交之前到达该NVM 101,。在一实施例中,该处理器103用于将该日志刷新到该NVM 101,而不中止执行的事务,即透明地刷新,如上所述。
在一实施例中,处理器103配置为使得记录可以为重新启动进程提供每个记录的变量x的最后的提交值。在一实施例中,处理器103用于将版本附加到x。在一实施例中,处理器103用于验证x在系统100中仅记录了一次。如果允许x在多个日志中出现,则应保留最新版本的x日志。
在一实施例中,每个地址最多允许出现在一个日志中。为了避免多个日志中有相同地址的实例,在一实施例中,添加了一个易失性的日志标记阵列,其中每个存储地址都被映射到一个标记。在一实施例中,当事务即将写入x时,其也将x标记为已记录。在一实施例中,x在被刷新前,其他事务不允许将其写入。在一实施例中使用标记或指示标识的原因是为了防止写入一个已经写入另一事务但尚未刷新的变量,因此其仍然是被记录的。所有其他冲突都可以由HTM直接处理。在一实施例中,标记或指示标识阵列可以是易失性的,如,在重新启动的情况下,记录的地址是唯一的,并且重新启动和恢复进程不创建任何新的日志记录。在重新启动之后,根据一实施例,可以分配新的及空的标记或指示标识阵列。
在一实施例中,标记或指示标识的写入是事务的一部分,即,如果事务Tk写入x,则它还对x进行标记,并且在提交中,写入和标记将同时作用,因为它们都是事务写入,在中止时,它们都被取消。在一实施例中,只要设置了标记,就不能改变出现在Tk的日志中的x的值。因此,在将x从缓存刷新到NVM 101中的应用数据区域,并将提交记录设置为假之后,可以取消设置该标记。需要重点强调的是,事务加载指令可以忽略标记并以全速执行,这是根据本申请的HTM的关键优势,因为读取事务以硬件速度处理。
图4示出了一实施例提供的事务T的日志记录的持久结构。在一实施例中,T具有如图4所示的布尔提交记录,其设置在tx_end_log中。在一实施例中,提交记录由HTM提交微代码写入,因此该提交记录应驻留在最快的可用非易失性存储器上。在一实施例中,事务还具有存储在self_id中的唯一ID。在一实施例中,该事务具有一组日志记录。在一实施例中,如图4所示,每个日志记录由修改的缓存行中的数据和系统存储器中该行的地址组成。在一实施例中,数据的最大总大小等于L1缓存105的大小,这是写入的也是记录的数据的最大大小。在一实施例中,大小字段是事务日志中的日志记录的数量。在一实施例中,假设大小为零,则事务未被记录,可以联合记录和大小。然而,为了清楚起见,在此,二者被单独对待。在一实施例中,T的图4中的所有日志记录区域仅被刷新到NVM 101一次,因此如果缓存行在相同的事务中被多次写入,则该行的数据在T提交前仅刷新到记录一次。
在一实施例中,日志记录中的DATA.ADDR字段(NVM中的应用数据的地址和对应数据)允许一个重新启动进程或一个完成,以确定要写入或刷新的是哪个地址和应用数据。在一实施例中,地址在单独的阵列中,而不附加到数据上,以避免缓存的碎片化。在一实施例中,地址本身的映射用于占用和释放写入指令和完成的标记。
尽管本发明的特定特征或方面可能已经仅结合几种实施方式或实施例中的一种进行公开,但此类特征或方面可以和其它实施方式或实施例中的一个或多个特征或方面相结合,只要对于任何给定或特定的应用是有需要或有利。而且,在一定程度上,术语“包括”、“有”、“具有”或这些词的其他变形在详细的说明书或权利要求书中使用,这类术语和该术语“包含”是类似的,都是表示包括的含义。同样,术语“示例性地”,“例如”仅表示为示例,而不是最好或最佳的。可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可以用于指示两个元件彼此协作或交互,而不管它们是直接物理接触还是电接触,或者它们彼此不直接接触。
尽管本文中已说明和描述特定方面,但所属领域的技术人员应了解,多种替代和/或等效实施方式可在不脱离本发明的范围的情况下所示和描述的特定方面。该申请旨在覆盖本文论述的特定方面的任何修改或变更。
尽管以上权利要求书中的元件是利用对应的标签按照特定顺序列举的,除非对权利要求的阐述另有暗示用于实施部分或所有这些元件的特定顺序,否则这些元件不必限于以该特定顺序来实施。
通过以上启示,对于本领域技术人员来说,许多替代、修改和变化是显而易见的。当然,所属领域的技术人员容易认识到除本文该的应用之外,还存在本发明的众多其它应用。虽然已参考一个或多个特定实施例描述了本发明,但所属领域的技术人员将认识到在不偏离本发明的范围的前提下,仍可对本发明作出许多改变。因此,应理解,只要是在所附权利要求书及其等效物的范围内,可以用不同于本文具体描述的方式来实践本发明。

Claims (13)

1.一种数据处理系统,其特征在于,用于执行硬件事务存储HTM事务,所述数据处理系统包括:
用于持久存储数据的字节寻址非易失性存储器;
处理器,用于提交HTM事务,在缓存存储器中写入所述HTM事务相关的应用数据,并在所述非易失性存储器的日志记录区域记录所述应用数据,在成功提交所述HTM事务的情况下,进一步在所述非易失性存储器中设置指示标识,所述指示标识用于指示所述HTM事务成功提交。
2.根据权利要求1所述的系统,其特征在于,所述处理器,还用于:
将所述应用数据从所述缓存存储器刷新至所述非易失性存储器的应用数据区域。
3.根据权利要求2所述的系统,其特征在于,所述处理器,还用于:
在将所述应用数据从所述缓存存储器刷新至所述非易失性存储器的应用数据区域之后,在所述非易失性存储器中取消设置所述指示标识。
4.根据权利要求1至3任一项所述的系统,其特征在于,所述处理器,还用于:
在重新启动的情况下,确认所述非易失性存储器中是否设置有所述指示标识,如果是,将所述日志记录区域记录的所述应用数据重新写入至所述非易失性存储器的应用数据区域,并在所述非易失性存储器中取消设置所述指示标识。
5.根据权利要求1至3任一项所述的系统,其特征在于,所述处理器,还用于:
在重新启动的情况下,确认所述非易失性存储器中是否设置有所述指示标识,如果否,忽略所述HTM事务。
6.根据权利要求1至5任一项所述的系统,其特征在于,所述指示标识为布尔变量,其值为真时表示所述HTM事务已成功提交,其值为假时表示所述HTM事务未成功提交。
7.一种用于执行硬件事务存储HTM事务的数据处理方法,其特征在于,该数据处理方法包括步骤:
提交HTM事务,在缓存存储器中写入所述HTM事务相关的应用数据,并在所述非易失性存储器的日志记录区域记录所述应用数据;
在成功提交所述HTM事务的情况下,进一步在所述非易失性存储器中设置指示标识,所述指示标识用于指示所述HTM事务成功提交。
8.根据权利要求7所述的方法,其特征在于,还包括:
将所述应用数据从所述缓存存储器刷新至所述非易失性存储器的应用数据区域。
9.根据权利要求8所述的方法,其特征在于,还包括:
在将所述应用数据从所述缓存存储器刷新至所述非易失性存储器的应用数据区域之后,在所述非易失性存储器中取消设置所述指示标识。
10.根据权利要求7至9任一项所述的方法,其特征在于,还包括:
在重新启动的情况下,确认所述非易失性存储器中是否设置有所述指示标识,如果是,将所述日志记录区域记录的所述应用数据重新写入至所述非易失性存储器的应用数据区域,并在所述非易失性存储器中取消设置所述指示标识。
11.根据权利要求7至9任一项所述的方法,其特征在于,还包括:
在重新启动的情况下,确认所述非易失性存储器中是否设置有所述指示标识,如果否,忽略所述HTM事务。
12.根据权利要求7至11任一项所述的方法,其特征在于,所述指示标识为布尔变量,其值为真时表示所述HTM事务已成功提交,其值为假时表示所述HTM事务未成功提交。
13.一种计算机程序代码,其特征在于,用于在计算机上执行时执行权利要求7至12中任一项所述的数据处理方法。
CN202110632287.XA 2015-07-22 2016-07-21 在使用带锁定和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议 Pending CN113505088A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/EP2015/066802 WO2017012667A1 (en) 2015-07-22 2015-07-22 Hardware transactional memory in non volatile memory with log and no lock
EPPCT/EP2015/066802 2015-07-22
CN201680043121.1A CN107851037B (zh) 2015-07-22 2016-07-21 在使用日志和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201680043121.1A Division CN107851037B (zh) 2015-07-22 2016-07-21 在使用日志和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议

Publications (1)

Publication Number Publication Date
CN113505088A true CN113505088A (zh) 2021-10-15

Family

ID=53716497

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201680043121.1A Active CN107851037B (zh) 2015-07-22 2016-07-21 在使用日志和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议
CN202110632287.XA Pending CN113505088A (zh) 2015-07-22 2016-07-21 在使用带锁定和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201680043121.1A Active CN107851037B (zh) 2015-07-22 2016-07-21 在使用日志和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议

Country Status (7)

Country Link
US (1) US11614959B2 (zh)
EP (1) EP3274826A1 (zh)
JP (1) JP6491348B2 (zh)
KR (1) KR102009259B1 (zh)
CN (2) CN107851037B (zh)
SG (1) SG11201707261TA (zh)
WO (2) WO2017012667A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10303477B2 (en) * 2015-06-26 2019-05-28 Intel Corporation Persistent commit processors, methods, systems, and instructions
US10430186B2 (en) * 2017-10-27 2019-10-01 Vmware, Inc. Speeding up transactions in non-volatile memory using hardware transactional memory
US11307854B2 (en) * 2018-02-07 2022-04-19 Intel Corporation Memory write log storage processors, methods, systems, and instructions
US10678587B2 (en) 2018-02-16 2020-06-09 Oracle International Corporation Persistent multi-word compare-and-swap
US10445238B1 (en) * 2018-04-24 2019-10-15 Arm Limited Robust transactional memory
US11137373B2 (en) * 2018-05-24 2021-10-05 Hf Scientific, Inc. QCM measurement of scale formation
CN108897642B (zh) * 2018-06-27 2020-11-27 清华大学 持久性事务内存系统中日志机制的优化方法及装置
KR20200005229A (ko) * 2018-07-06 2020-01-15 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10754776B2 (en) * 2018-07-30 2020-08-25 International Business Machines Corporation Cache balance when using hardware transactional memory
US10846222B1 (en) 2019-07-01 2020-11-24 Vmware, Inc. Dirty data tracking in persistent memory systems
US11144221B1 (en) * 2020-04-10 2021-10-12 Dell Products L.P. Efficient resilience in a metadata paging array for in-flight user data
CN112256200A (zh) * 2020-10-21 2021-01-22 宝能(广州)汽车研究院有限公司 数据读写方法和存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369757A (en) 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
US5897656A (en) * 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US8683143B2 (en) * 2005-12-30 2014-03-25 Intel Corporation Unbounded transactional memory systems
US8001548B2 (en) 2008-10-20 2011-08-16 Microsoft Corporation Transaction processing for side-effecting actions in transactional memory
US9785462B2 (en) * 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
CN101510162B (zh) * 2009-03-26 2011-11-02 浙江大学 一种基于延时策略的软件事务内存的实现方法
US8352688B2 (en) * 2010-11-15 2013-01-08 Advanced Micro Devices, Inc. Preventing unintended loss of transactional data in hardware transactional memory systems
EP2756406B1 (en) * 2011-09-14 2020-07-22 Hewlett-Packard Enterprise Development LP Imparting durability to a transactional memory system
US9213501B2 (en) * 2013-05-23 2015-12-15 Netapp, Inc. Efficient storage of small random changes to data on disk
US9146774B2 (en) * 2013-12-12 2015-09-29 International Business Machines Corporation Coalescing memory transactions
CN104657153B (zh) * 2015-03-19 2017-10-17 哈尔滨工业大学 一种基于签名技术的硬件事务内存系统

Also Published As

Publication number Publication date
US11614959B2 (en) 2023-03-28
WO2017012667A1 (en) 2017-01-26
JP6491348B2 (ja) 2019-03-27
EP3274826A1 (en) 2018-01-31
CN107851037B (zh) 2021-06-08
JP2018516394A (ja) 2018-06-21
CN107851037A (zh) 2018-03-27
US20180143850A1 (en) 2018-05-24
KR20170123683A (ko) 2017-11-08
KR102009259B1 (ko) 2019-08-09
WO2017013202A1 (en) 2017-01-26
SG11201707261TA (en) 2017-10-30

Similar Documents

Publication Publication Date Title
CN107851037B (zh) 在使用日志和未锁定的非易失存储器的共享存储器中的硬件事务存储的一致性协议
US10445238B1 (en) Robust transactional memory
US9195600B2 (en) Mechanisms to accelerate transactions using buffered stores
US8364911B2 (en) Efficient non-transactional write barriers for strong atomicity
US8140773B2 (en) Using ephemeral stores for fine-grained conflict detection in a hardware accelerated STM
US9047334B1 (en) Merge-update for efficient atomic memory modification in concurrent computer systems
CN110471617B (zh) 在采用事务存储器的系统中管理缓存结构的方法和装置
KR102284957B1 (ko) 트랜잭션 데이터 처리 실행 모드에 대한 호출 스택 유지
US9128750B1 (en) System and method for supporting multi-threaded transactions
US20160070659A1 (en) Concurrently Executing Critical Sections in Program Code in a Processor
US9251074B2 (en) Enabling hardware transactional memory to work more efficiently with readers that can tolerate stale data
Ichii et al. A Lazy-Updating Snoop Cache Protocol for Transactional Memory

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination