CN112005222A - 鲁棒的事务性存储器 - Google Patents
鲁棒的事务性存储器 Download PDFInfo
- Publication number
- CN112005222A CN112005222A CN201980027642.1A CN201980027642A CN112005222A CN 112005222 A CN112005222 A CN 112005222A CN 201980027642 A CN201980027642 A CN 201980027642A CN 112005222 A CN112005222 A CN 112005222A
- Authority
- CN
- China
- Prior art keywords
- transaction
- transaction log
- log
- persistent memory
- processing system
- 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.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 155
- 230000002085 persistent effect Effects 0.000 claims abstract description 99
- 238000012545 processing Methods 0.000 claims abstract description 69
- 238000000034 method Methods 0.000 claims abstract description 44
- 230000004044 response Effects 0.000 claims abstract description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000007704 transition Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 8
- 230000009471 action Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000011010 flushing procedure Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供了用于在数据处理系统中执行事务的方法和装置,响应于事务的每个存储器访问,在持续性存储器中更新事务日志。在事务的执行之后并且在事务日志完成时,事务日志被标记为“待办”。当在事务中被修改的所有值已被写回到持续性存储器时,事务日志被标记为“空闲”。当在重启之后,事务日志被标记为“待办”时,事务日志中存储的数据被拷贝到持续性存储器、在事务日志中指示的地址处。在拷贝完成之后,事务日志被标记为“空闲”。在事务中修改的缓存值在被逐出时可被写回到持续性存储器,并且在事务中读取的值可以是从缓存而不是从事务日志读取的。
Description
背景技术
在数据处理系统中,多个计算线程可共享共同的数据资源,例如存储器。与存储器地址相关联的数据值的拷贝可被存储在数据处理系统中的不同位置处,例如缓存。在这种系统中,一致性机制可用于监视当前状态并且确保过时的数据值不被使用。
在一些情形中,单个线程可要求一组存储器地址处的数据在操作的序列被执行的同时不被任何其他线程改变。操作的这个序列被称为“事务”(transaction)。事务据说具有“多线程原子性”,因为存储器访问看起来是在不能被其他线程分割的单个操作中发生的。确保存储器不被其他线程改变的一种方式是阻止所有其他线程对存储器的访问。然而,这是效率不高的,因为访问受限地址集合之外的存储器地址的线程将被不必要地阻止。另一种方案是将写入操作缓冲在“重做日志”中,直到该操作完成为止,然后在单个操作中写入所有数据,假如没有其他线程访问了受限存储器的话。这有时被称为“懒惰”方案。另一个方案是执行写入操作,但将覆写的值记录在“撤消”日志中。如果任何其他线程访问了受限存储器,则写入操作随后可被撤消。这有时被称为“急切”方案。
在上述方案中,日志可被维护在易失性或持续性(非易失性)存储器中。然而,每种方案都不是最优的。如果日志被维护在易失性存储器中,则它们在电力故障的情况下将丢失并且存储器可遭到破坏。如果日志被维护在非易失性存储器中,则事务内的存储器访问将被重定向到非易失性存储器,非易失性存储器通常比诸如缓存之类的易失性存储器要慢得多。这将减慢执行。
对于维持效率、而在面对电力故障时鲁棒的事务性存储器系统,存在需要。
附图说明
附图提供了视觉表示,这些视觉表示将被用于更完整地描述各种代表性实施例并且可被本领域技术人员用于更好地理解公开的代表性实施例及其内在优点。在这些附图中,相似的标号识别相应的元素。
图1是根据各种代表性实施例的数据处理系统的图形表示。
图2是根据各种代表性实施例示出写入指令的操作的流程图。
图3是根据各种代表性实施例的用于在数据处理系统中实现鲁棒的事务性存储器的方法的流程图。
图4是根据各种代表性实施例的用于提交事务的结果的方法的流程图。
图5A-5D根据各种代表性实施例图示了事务的写入操作。
图6A-6D根据各种代表性实施例图示了在电力故障之后数据处理系统的操作。
图7是根据各种代表性实施例的用于数据处理系统中的鲁棒事务性存储器的操作的方法的流程图。
图8是根据各种代表性实施例的缓存线的图形表示。
图9是根据各种代表性实施例的数据处理系统中的数据流的图形表示。
图10是根据各种代表性实施例的事务日志的状态转变图。
具体实施方式
本文描述的各种装置和设备提供了在面对电力故障或其他重启时鲁棒的硬件事务性存储器。
虽然本公开容许许多不同形式的实施例,但在附图中示出并且在本文中将会详细描述特定实施例,要理解本公开应被认为是本公开的原理的示例,而并不打算将本公开限制到示出和描述的特定实施例。在下面的描述中,相似的标号被用于在附图的几幅图中描述相同、相似或相应的部件。
在本文档中,诸如第一和第二、顶和底等等之类的关系术语可被单独使用来区分一个实体或动作与另一实体或动作,而不一定要求或暗示这种实体或动作之间的任何实际的这种关系或顺序。术语“包括”或者其任何其他变体打算覆盖非排他性的包含,使得包括元素的列表的过程、方法、物品或装置不仅包括这些元素,而且可以包括没有明确列出或者这种过程、方法、物品或装置内在的其他元素。前面是“包括…”的元素不排除(没有更多约束)在包括该元素的过程、方法、物品或装置中的额外相同元素的存在。
本文档中各处提及“一个实施例”、“某些实施例”、“一实施例”或者类似术语的意思是联系该实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。从而,这种短语在贯穿本说明书各处的出现不一定全都指的同一实施例。另外,特定的特征、结构或特性在一个或多个实施例中可按任何适当的方式被组合,没有限制。
本文使用的术语“或”要被解读为包含性的或者意指任何一个或任何组合。因此,“A、B或C”的意思是“以下的任何者:A;B;C;A和B;A和C;B和C;A、B和C”。此定义的一个例外只会发生在以下情况下:元素、功能、步骤或动作的组合在某种程度上本身是互斥的。
为了图示的简单和清晰,标号在附图之间可重复以指示出相应或类似的元素。阐述了许多细节以提供对本文描述的实施例的理解。没有这些细节也可实现实施例。在其他情况下,没有详细描述公知的方法、过程和组件,以避免模糊描述的实施例。描述不应被认为限于本文描述的实施例的范围。
这里,术语“持续性存储器”将意指任何如下存储器:其内容在电力循环或其他重启之后是可用的。“持续性存储器”将包括非易失性存储器,例如磁心存储器,快闪存储器,磁阻随机访问存储器(magneto-resistive random access memory,MRAM),铁电RAM(ferroelectric RAM,F-RAM),相变RAM(phase-change RAM,PCRAM),电阻RAM(resistiveRAM,ReRAM),相关电子RAM(correlated-electron RAM,CeRAM)和本身非易失性的其他存储器技术。此外,“持续性存储器”将包括被自动备份到非易失性存储器(例如快闪存储器)并且在电力循环之后被重加载的主存储器。例如,非易失性双列直插存储器模块(non-volatile,dual inline memory module,NVDIMM-NN)将DIMM、DRAM、快闪存储和小供电电源组合在同一模块中。
对于利用重做日志实现的传统事务存储器,数据首先被写入到重做日志,然后被写入到数据区域。对于持续性存储器,事务不仅需要具有多线程原子性,而且它们也需要具有电力故障原子性。也就是说,在电力故障的情况下,所有事务必须被完成,否则没有事务完成。经受电力故障的能力在本文中被称为“鲁棒”。从而,为了使得事务是电力故障原子性的,需要使事务是鲁棒的。在一个实现方式中,重做日志被存储在持续性中。
本公开的一方面提供了使用缓存的鲁棒事务的高效硬件实现,其(i)避免了存留事务内的数据,并且(ii)避免了对于同一事务内的读取操作的重定向(到持续性存储器)。
图1是根据本公开的实施例的数据处理系统100的图形表示。参考图1,处理设备102和104共享共同的数据资源——在此实施例中是持续性存储器106。任何数目的处理设备和数据资源可存在。处理设备经由互连电路108和存储器控制器110访问持续性存储器106。处理设备102和104的存储器访问请求被一致性控制器112监视和处理。处理设备,例如设备102,可包括一个或多个处理核心114、一个或多个缓存116和缓存控制器118。
在图1所示的实施例中,缓存控制器118包括事务日志硬件120或者与事务日志硬件120通信。事务日志硬件120可操作来在持续性存储器106中维护事务日志122。事务日志122例如可以是重做日志。就像缓存116一样,事务日志122包含地址标签和关联数据的表格并且可被认为是影子缓存。事务日志可如图所示被存储在主存储器中,或者被存储在单独的存储器中。在事务期间,核心114可访问缓存116中的数据,这比访问持续性存储器106要高效得多。缓存116是易失性存储器,其内容在电力故障期间可丢失。然而,事务日志122在电力故障期间不丢失并且可用于从事务期间的电力故障恢复。
事务的示例代码片段在下面列出。在此事务中,到地址a和b的写入将首先被写入到重做日志,并且被设成持续性的。
指令tx_begin标记要被视为原子事务的代码片段的开始。指令tx_end标记片段的结束。指令tx_commit指示数据处理系统该事务完成,并且应当通过拷贝到持续性存储器来使得存储器写入是持续性的。该指令集合被称为事务,并且希望这些指令看起来是作为单个即原子性指令被执行的。例如,没有其他线程应当读取地址A和B,除非两个都被写入或者两个都没有被写入。这些限制中的一些由一致性控制机制自动处理,但此机制处理系统的当前状态。一旦数据被写回到存储器并且被从所有缓存逐出(或者标记为无效),就没有该变化的记录了。
如果另一线程请求对关联地址的写入访问,则差错被标示,并且或者该事务被中止,或者该另一线程被暂缓。这里,“另一线程”可以是作为与执行事务的线程相同的进程的一部分的线程,或者可以是不同进程的线程。
数据处理系统100还包括重启逻辑124。在系统重启之后,重启逻辑124查看事务日志122是否“待办”,也就是说,是否有任何待办写入要执行。如果是,则事务日志122被用于更新持续性存储器106。如果在重启之后,事务日志122被标记为“使用中”,但未被提交,则日志的内容被丢弃并且存储器不被更新。例如,重启逻辑124可使得日志的状态从“使用中”被改变成“空闲”。
为了清晰起见从图1中省略了数据处理系统的其他元素。
图2是根据各种代表性实施例示出写入指令的操作的流程图200。在开始块202之后,在块204执行指令。如果该指令是写入指令,例如write(A,5),(这是将值“5”写入到存储器地址“A”的指令),如从判决块206的肯定分支所指示,则流程继续到判决块208。否则,流程返回到块204并且下一指令被执行。如果指令在事务内并且地址对应于持续性位置,如从判决块208和210的肯定分支所描绘,则流程继续到判决块212,否则流程返回到块204并且下一指令被执行。此时知道该写入应当对重做日志进行,而不是直接对持续性存储器进行。在此示例中,事务日志被维护在持续性存储器中。如果不必要逐出缓存线以使得新的缓存线能够为该地址分配,如从判决块212的否定分支所描绘,则数据被写入到该线并且该线被标记为对应于事务的日志条目。然后在块214发送请求来更新存储在持续性存储器中的事务日志。否则,如从判决块212的肯定分支所描绘,必须从缓存逐出一条线。如果未标记的线可用来逐出(即,不与事务相关联的线),如从判决块216的否定分支所描绘,则在块218该线被逐出并且被分配到新的条目。否则,如从判决块216的肯定分支所描绘,在缓存中没有空间用于新的线,并且流程继续到判决块220,在这里确定与标记的要逐出的线相关联的事务是否已被提交。这例如可通过检查“区域中”标志来完成。如果否,如从判决块220的否定分支所描绘,则该事务在块222被中止。然而,如果要逐出的缓存线是对其存在事务日志的已提交事务的一部分,则该线可在块224被逐出以在缓存中为新的线腾出空间。
在替换实施例中,可发出请求来将与该线相关联的事务日志排出到持续性存储器。缓存中的与逐出的线与同一事务相关联的其他线随后可被取消标记。
图3是根据本公开的各种实施例的用于在数据处理系统中实现鲁棒的事务性存储器的方法的流程图300。在图3中的开始块302之后,在块304执行指令。如果这是标记代码的持续性片段的开始(要被视为原子性事务)的指令,例如tx_begin,如从判决块306的肯定分支所描绘,则希望事务日志被维护在持续性存储器中。如果没有“空闲”日志可用,如从判决块308的否定分支所描绘,则被标记为“已提交”的日志在块310被排出到持续性存储器。在块312,空闲日志被标记为“使用中”和“未提交”,以指示出其在使用中,但未完成。在块314设置核心标志以指示出后续指令在事务代码区域内。流程随后返回到块304。如果该指令不是事务的开始,如从判决块306的否定分支所描绘,则流程继续到判决块316,在这里确定此指令是否是标记事务代码区域的结束的指令,例如tx_end。如果是,如从判决块316的肯定分支所描绘,则流程继续到块318。否则,流程随后返回到块304。在块318,事务日志被标记为“已提交”,以指示出其已完成并且应当在电力循环或其他重启的情况下被使用。在块320,核心标志被重置以指示出后续指令不是事务的一部分。
在该过程期间,可以监视其他线程进行的存储器访问以检测冲突。示例冲突包括在事务开始之后从由另一线程写入的地址的事务读取,或者另一线程从在事务中写入的地址的读取。如上所述,冲突检查可作为一致性机制的一部分被执行。当检测到冲突时,事务可被中止或重启动。
缓存中的与事务内的读取或写入操作相关联的线被标记为是事务日志的一部分。例如,可以利用与线相关联的事务日志的识别符来标记这些线。
当事务完成时,缓存中的值随着它们被写回到存储器而被提交到持续性存储器。写回到存储器的线被取消标记。线可在线被从缓存逐出时被写回,然而,线可只在“区域中”标志未被设置时被逐出。当所有标记的线已被写回时,转移完成并且事务日志被释放。在缓存中的所有标记的线被写回到持续性存储器之前发生电力故障的情况下,持续性存储器中的事务日志可用于在电力被返回或者重启被执行时更新存储器。在先前系统中,这个阶段的电力故障可使得存储器变得被破坏。
对于每个事务,可维护计数器来指示出与该事务相关联的缓存线的数目。计数器可在线被安装在缓存中时递增并且在线被逐出时递减。该计数器可结合核心标志(“区域中”标志)被使用来指示出何时所有标记的线已被写回到持续性存储器。关联的事务日志随后可被释放。或者,由于每个缓存线具有Tx_ID字段,所以属于特定事务的线的数目可被计数,与标记清除垃圾收集类似。
图4是用于排出事务日志的方法的流程图。事务日志可在重置或电力故障之后在启动时被排出。事务日志也可响应于请求被排出——例如为了允许已完成事务的标记线被从缓存逐出或者为新的事务释放事务日志。在开始块402之后,当事务日志被排出时,如从判决块404的肯定分支所描绘,则流程继续到判决块406。尽管在事务日志中仍有更多的线留下,如从判决块406的肯定分支所描绘,在块408,通过将该线中的数据写入到由事务日志中的地址标签识别的持续性存储器的数据区域,该线被排出。当所有线已被排出时,如从判决块406的否定分支所描绘,持续性存储器中的事务日志在块410被标记为“空闲”。所有事务值于是被提交到持续性存储器的数据区域。
图5A-5D根据本公开的各种实施例图示了事务的写入操作。图5A示出了在线程502中接收到tx_begin指令之前数据处理系统的状态。最初,缓存504是空的,持续性存储器中的事务日志506也是。事务日志506被标记为IN_USE=0以指示出其是“空闲”的。在此示例中,持续性存储器(NVM)508包含存储在地址“A”处的值“1”和存储在地址“B”处的值“4”。当tx_begin指令被执行时,事务日志506被标记为IN_USE=1。事务日志506可具有识别符,表示为TX_ID。该识别符可以是固定的,例如日志的地址,或者可被动态指派来对应于线程、核心ID之类的。TX_ID使得缓存线能够与特定的事务日志相关联。
图5B示出了当在该事务内已执行了指令write(A,5)和write(B,11)时数据处理系统的状态。如箭头510所指示,值已被写入到缓存504并且缓存线已被标记以识别符TX_1以识别出它们与哪个事务日志相关联。如上所述,逐出这些线的尝试将导致中止的事务或者以某种其他方式来处理。如箭头512所指示,值也被写入到持续性存储器中的事务日志506。此时,存储器508中的值不变。本公开的一方面是从地址“A”或地址“B”的读取操作指向的是缓存504而不是持续性存储器中的事务日志506。这简化和加速了读取操作的执行。事务日志506被标记为COMMITTED=0以指示出在该事务中修改的数据尚未被提交。
图5C示出了当该事务结束时数据处理系统的状态。假定没有发生冲突,因此事务日志被标记为COMMITTED=1,以指示出其完成。NVM存储器508尚未被更新并且仍包含地址A和B处的原始值。标志“IN_USE”和“COMMITTED”都被设置,指示出事务数据到持续性存储器的写回仍是“待办”。
图5D示出了如箭头514所描绘在之后某个时间当地址“A”处的值已被从缓存504逐出并且被写回到持续性存储器时数据处理系统的状态。事务日志506仍包含使用中的事务的完整结果并且包含来自已提交的事务的数据。当缓存504中的所有标记的线已被写回到存储器508时,事务日志被标记为是“空闲”的,即IN_USE=0。这样,当提交数据时不要求缓存或事务日志的显式排出。更确切地说,数据在被从缓存正常操作逐出时被写回。从而,一旦事务日志被标记为“已提交”,标记的数据就可被从缓存逐出。
图6A-6D根据各种实施例图示了在电力故障之后数据处理系统的操作。相应的操作可在系统的重置之后或者响应于排出日志的显式指令而被执行。图6A示出了当在所有标记的线被写回到持续性存储器之前(例如,如图5D中所示)发生了电力故障时数据处理系统的状态。当电力故障时,缓存日志504的内容丢失。然而,事务日志506的内容持续,将事务日志标记为IN_USE=1和COMMITTED=1也持续。
图6B示出了当电力恢复时数据处理系统的操作。系统检测到事务日志506在使用中并且包含提交的数据,并且进而将事务日志506的内容拷贝到存储器508,如箭头516所描绘。这样,存储器508被更新以正确的事务结果。
图6C示出了当从事务日志506到存储器508的转移已完成时数据处理系统的状态。事务日志506被标记为“空闲”(IN_USE=0)以防止在另一电力故障的情况下覆写存储器并且允许日志被用于未来的事务。
图6D示出了当在事务之外执行了指令write(A,8)和write(B,6)时数据处理系统的状态。如箭头510所指示,值已被写入到缓存,但线被标记为TX_ID=0以指示出它们不是事务的一部分。这些线像正常缓存线那样操作并且可根据需要被逐出。
在上述方案中,缓存线和持续性存储器的组合被用于既实现事务的多线程原子性也实现事务的电力故障(或其他重启)原子性。被事务中的写入操作触及的缓存线被冲刷/存留到区域持续性存储器中的事务日志。持续性存储器的区域可例如与缓存区域是相同大小的,并且像影子缓存那样运作。利用此方案,不要求将同一事务中的读取重定向到事务日志并且数据处理系统的性能得以增强。
在一个实施例中,事务提交操作不需要冲刷缓存线,因为缓存线最终将被逐出到持续性存储器并且因此成为持续的。这避免了在事务结束时手动冲刷标记的线以使得它们持续的需要。如果电力故障在事务完成和使数据持续之间发生,则事务日志条目在重启时可被拷贝到数据条目。此方案避免了在事务“提交”指令时将数据冲刷到持续性存储器。该方案还避免了在同一事务中将读取操作重定向到持续性存储器,从而当与传统方案相比时改善了吞吐量并且减少了事务的时延。
图7是根据各种实施例的用于数据处理系统中的鲁棒事务性存储器的方法的流程图700。在块702处的系统重启之后,重启逻辑检查“待办”事务标志是否存在。也就是说,设置了IN_USE=1和COMMITTED=1的日志。如果两个标志都被设置,如从判决块704的肯定分支所描绘,则在块706利用事务日志来更新存储器。功能类似于影子缓存的事务日志被存储在持续性存储器中,例如非易失性存储器,因此即使当重启是电力故障之后恢复电力的结果时,事务日志仍是可用的。一旦存储器更新完成,IN_USE标志在块708就被设置到零以指示出日志是“空闲”的并且正常操作在块710继续。如果IN_USE和COMMITTED任一者被设置,如从判决块704的否定分支所描绘,则日志或者是空闲的或者是不完整的并且存储器不被更新。流程继续到块708,在这里标志被清除以释放日志。正常操作在块710继续开始。IN_USE和COMMITTED标志一起提供指示事务日志的状态的状态指示符。
图8是根据各种实施例的缓存线的图形表示。缓存线800包括线状况条目802(其例如指示出数据是有效还是无效、脏污还是清洁、独特还是共享)、地址标签804和若干个数据字806。在示出的实施例中,缓存线800还包括读取比特808和写入比特810。读取和写入比特在关联的字在事务期间被读取或写入时被设置。写入比特在事务完成并且关联的数据已被写回到持续性存储器时被清除。在替换实施例中,读取和写入比特是在更精细的尺度上维护的,例如每个字一个读取比特和一个写入比特。缓存线800包括事务识别符812,其指示出该线与哪个事务日志相关联。这使能了多个事务的操作。缓存内的数据的其他等同布置将是本领域技术人员清楚可见的。
在另一实施例中,例如,读取和写入比特可被省略。当该线不是事务日志的一部分时,事务识别符812被设置到零(或者某个其他指定的值)。在事务期间被访问的数据被标记为处于“独占”或“已修改”状况中。与事务相关联的“已修改”线仍需要被写回到存储器。当线被写回到存储器时线状况被改变成“独占”。
图9是根据各种代表性实施例的数据处理系统900中的数据流的图形表示。在操作中,数据902被在持续性存储器106的数据区域904和缓存116之间移动。当事务开始时,日志管理单元120选择持续性存储器106中的空闲事务日志122a。如果没有空闲日志可用,则可通知日志排出逻辑906将现有的已提交日志,例如122b,排出到持续性存储器106的数据区域904。或者,可为新的事务日志分配存储器。日志与事务识别符908、IN_USE标志910和“COMMITTED”标志912相关联。事务识别符908被用于将缓存条目与相应的事务日志关联起来。IN_USE标志910和“COMMITTED”标志912一起形成指示事务日志的状态的状态指示符。
当数据902在事务期间被带入缓存中时,日志管理单元120在事务日志122a中创建相应的条目。该条目至少包含该数据和该数据的地址标签。
在例如电力故障、电力循环或者重置之后数据处理系统启动时,每个事务日志(122a和122b)的IN_USE标志910和“COMMITTED”标志912被检查。如果两个标志对于一事务日志都被设置,则通知日志排出逻辑906将该日志排出到持续性存储器106的数据区域904。可在其他时间通知日志排出逻辑906——例如释放已提交日志来供新的事务使用。
图10是根据本公开的各种实施例的事务日志的状态转变图1000。事务日志可处于三种状态之一中:状态1002是“空闲”状态,其中日志未被使用。状态1004是“使用中”状态,其中日志包含活跃事务的事务数据,但该数据尚未被提交。状态1006是“待办”状态,其中日志包含已完成的事务的事务数据。如转变1008所指示,当tx_begin命令或者等同物被发出时,日志从“空闲”状态1002转变到“使用中”状态1004。如转变1010所指示,当事务被中止时,日志从“使用中”状态1004转变回到“空闲”状态1002。如转变1012所指示,当tx_commit命令或者等同物被发出时,日志从“使用中”状态1004转变到“待办”状态1006。最后,如转变1014所指示,当日志的内容已被排出回到持续性存储器时,或者当与该事务相关联的所有缓存线已被从缓存逐出并且被写回到持续性存储器时,日志从“待办”状态1006转变回到“空闲”状态1002。
公开的数据处理系统提供了若干个优点。首先,在事务期间,可经由缓存116访问数据,避免了与访问持续性存储器106相关联的时延。第二,在事务结束时不需要将缓存116或事务日志112a排出到持续性存储器。这避免了在排出操作期间阻止其他线程或进程的需要。事务因此是“非阻止”的。当数据在正常操作中被从缓存逐出时,数据被写回。第三,系统就电力故障而言是鲁棒的。在所有数据被从缓存逐出并且成为持续性之前发生电力故障的情况下,数据在系统被重启时被自动从事务日志写回。第四,通过添加对于非易失性存储器的支持并且提供上述的关联优点,该方案可用于构建在现有硬件事务性存储器上并且改善现有硬件事务性存储器。
本文描述的各种实施例是利用与公开的硬件合作执行编程指令的编程处理器来实现的,其配置和操作被以流程图和框图形式来宽泛描述。然而,本领域技术人员将会明白,上文描述的过程可按任何数目的变化以及按许多硬件配置来实现,而不脱离本公开。这种变化被设想到了并且被认为是等同的。
因此,公开的实施例的一些方面和特征在以下编号项目中陈述:
1.一种在数据处理系统中执行事务的方法,其中所述事务由第一执行线程执行并且包括一个或多个指令,所述方法包括:当在所述数据处理系统的重启之后,第一事务日志被指示为“待办”时,其中所述第一事务日志被存储在持续性存储器中并且与先前事务相关联,则将所述第一事务日志中存储的数据拷贝到数据存储部、在所述第一事务日志中指示的地址处;并且在拷贝到所述数据存储部完成之后,释放所述第一事务日志;响应于所述事务的一个或多个指令中的写入指令:将所述写入指令的数据值写入到缓存的条目,其中所述条目被标记为与所述事务相关联;并且将所述写入指令的数据值写入到所述持续性存储器中的第二事务日志;在所述事务的一个或多个指令的执行之后,将所述第二事务日志标记为“待办”;并且当所述事务中的所有值已被写回到所述数据存储部时,将所述第二事务日志标记为“空闲”。
2.如项目1所述的方法,其中:将所述第二事务日志标记为“空闲”包括重置存储在持续性存储器中的第一标志;并且将所述第二事务日志标记为“待办”包括响应于提交在所述事务中修改的数据的指令而设置存储在持续性存储器中的第二标志。
3.如项目2所述的方法,还包括,响应于开始所述事务的指令:向所述事务指派所述持续性存储器中的空闲事务日志作为所述第二事务日志;并且通过设置存储在持续性存储器中的所述第一标志,将所述第二事务日志标记为“使用中”。
4.如项目3所述的方法,还包括通过将“待办”事务日志的内容拷贝到所述持续性存储器来提供所述空闲事务日志。
5.如项目1所述的方法,其中所述缓存中的所述条目被标记以将其与所述事务相关联并且与所述第二事务日志相关联。
6.如项目5所述的方法,还包括:在所述事务的一个或多个指令的执行之后,当所述缓存的条目被写回到所述数据存储部时对该条目取消标记以将该线与所述事务解除关联。
7.如项目1所述的方法,还包括检测来自第二执行线程的访问所述缓存的被标记条目中的数据的请求。
8.如项目1所述的方法,还包括当被标记条目被从所述缓存逐出时中止所述事务。
9.如项目1所述的方法,还包括当所述事务被中止时释放第二事务日志。
10.一种在数据处理系统中执行事务的方法,其中所述事务由第一执行线程执行并且包括一个或多个指令,所述方法包括:响应于所述事务的每个存储器访问,更新持续性存储器中的第一事务日志;在所述第一事务的一个或多个指令的执行之后并且当所述事务日志完成时,将所述事务日志标记为“待办”;当在所述事务中被修改的所有值已被写回到所述持续性存储器时,将所述事务日志标记为“空闲”;并且当在所述数据处理系统的重启之后,事务日志被标记为“待办”时:将所述事务日志中存储的数据拷贝到所述持续性存储器、在所述事务日志中指示的地址处;并且在从所述事务日志到持续性存储器的拷贝完成之后,将所述事务日志标记为“空闲”。
11.一种数据处理系统,包括:处理器核心,被配置为执行事务,其中所述事务由第一执行线程执行并且包括一个或多个指令;可被所述处理核心访问的缓存,其中所述缓存的线包括事务识别符,该事务识别符在该线包含在所述事务中访问的数据时被设置;第一持续性存储器,被配置为存储事务日志;持续性存储位置,被配置为存储状态指示符,该状态指示符指示出何时所述事务日志“待办”并且在所述数据处理系统的重启之后将被处理;存储器控制器;可被所述处理核心经由所述存储器控制器访问的第二持续性存储器;以及重启逻辑,被配置为在所述数据处理系统的重启之后,在所述状态指示符指示出所述事务日志“待办”时,根据所述事务日志更新所述第二持续性存储器。
12.如项目11所述的数据处理系统,其中重启逻辑还被配置为当根据所述事务日志更新所述第二持续性存储器完成时设置所述状态指示符来指示出所述事务日志“空闲”。
13.如项目11所述的数据处理系统,还包括一致性控制器,该一致性控制器被配置为检测来自第二执行线程的访问所述第一执行线程的事务日志中的数据的请求。
14.如项目13所述的数据处理系统,其中所述一致性控制器实现一致性协议并且其中所述缓存的线包括:线状况识别符,其指示出何时该线处于所述一致性协议的“已修改”状况中。
15.如项目11所述的数据处理系统,其中所述处理器被配置为在第二执行线程请求对所述第一执行线程的事务日志中的数据的访问时中止所述第一事务。
16.如项目11所述的数据处理系统,其中,在所述事务内,对所述事务日志中的地址的读取操作被指向所述缓存。
17.如项目11所述的数据处理系统,其中所述第一持续性存储器包括所述第二持续性存储器的一部分。
18.如项目11所述的数据处理系统,其中所述缓存的线包括:将所述事务与所述事务日志相关联的识别符。
19.如项目11所述的数据处理系统,还包括计数器,其中所述计数器在线在所述事务期间被添加到所述缓存时被递增,并且在与所述事务相关联的线被从所述缓存逐出并且被写回到持续性存储器时被递减。
20.如项目19所述的数据处理系统,其中与所述事务相关联的事务日志在所述计数器达到零时被释放,指示出与所述事务相关联的所有缓存线已被写回到持续性存储器。
本文已详细描述的各种代表性实施例是作为示例而不是作为限制给出的。本领域技术人员将会理解,可对描述的实施例做出形式和细节上的各种变化,产生仍保持在所附权利要求的范围内的等同实施例。
Claims (20)
1.一种在数据处理系统中执行事务的方法,其中所述事务由第一执行线程执行并且包括一个或多个指令,所述方法包括:
当在所述数据处理系统的重启之后,第一事务日志被指示为“待办”时,其中所述第一事务日志被存储在持续性存储器中并且与先前事务相关联,
将所述第一事务日志中存储的数据拷贝到数据存储部、在所述第一事务日志中指示的地址处;并且
在拷贝到所述数据存储部完成之后,释放所述第一事务日志;
响应于所述事务的一个或多个指令中的写入指令:
将所述写入指令的数据值写入到缓存的条目,其中所述条目被标记为与所述事务相关联;并且
将所述写入指令的数据值写入到所述持续性存储器中的第二事务日志;
在所述事务的一个或多个指令的执行之后,将所述第二事务日志标记为“待办”;并且
当所述事务中的所有值已被写回到所述数据存储部时,将所述第二事务日志标记为“空闲”。
2.如权利要求1所述的方法,其中:
将所述第二事务日志标记为“空闲”包括重置存储在持续性存储器中的第一标志;并且
将所述第二事务日志标记为“待办”包括响应于提交在所述事务中修改的数据的指令而设置存储在持续性存储器中的第二标志。
3.如权利要求2所述的方法,还包括,响应于开始所述事务的指令:
向所述事务指派所述持续性存储器中的空闲事务日志作为所述第二事务日志;并且
通过设置存储在持续性存储器中的所述第一标志,将所述第二事务日志标记为“使用中”。
4.如权利要求3所述的方法,还包括通过将“待办”事务日志的内容拷贝到所述持续性存储器来提供所述空闲事务日志。
5.如权利要求1所述的方法,其中所述缓存中的所述条目被标记以将其与所述事务相关联并且与所述第二事务日志相关联。
6.如权利要求5所述的方法,还包括:
在所述事务的一个或多个指令的执行之后,当所述缓存的条目被写回到所述数据存储部时对该条目取消标记以将该线与所述事务解除关联。
7.如任何在前权利要求所述的方法,还包括检测来自第二执行线程的访问所述缓存的被标记条目中的数据的请求。
8.如任何在前权利要求所述的方法,还包括当被标记条目被从所述缓存逐出时中止所述事务。
9.如任何在前权利要求所述的方法,还包括当所述事务被中止时释放第二事务日志。
10.一种在数据处理系统中执行事务的方法,其中所述事务由第一执行线程执行并且包括一个或多个指令,所述方法包括:
响应于所述事务的每个存储器访问,更新持续性存储器中的第一事务日志;
在所述第一事务的一个或多个指令的执行之后并且当所述事务日志完成时,将所述事务日志标记为“待办”;
当在所述事务中被修改的所有值已被写回到所述持续性存储器时,将所述事务日志标记为“空闲”;并且
当在所述数据处理系统的重启之后,事务日志被标记为“待办”时:
将所述事务日志中存储的数据拷贝到所述持续性存储器、在所述事务日志中指示的地址处;并且
在从所述事务日志到持续性存储器的拷贝完成之后,将所述事务日志标记为“空闲”。
11.一种数据处理系统,包括:
处理器核心,被配置为执行事务,其中所述事务由第一执行线程执行并且包括一个或多个指令;
可被所述处理核心访问的缓存,其中所述缓存的线包括事务识别符,该事务识别符在该线包含在所述事务中访问的数据时被设置;
第一持续性存储器,被配置为存储事务日志;
持续性存储位置,被配置为存储状态指示符,该状态指示符指示出何时所述事务日志“待办”并且在所述数据处理系统的重启之后将被处理;
存储器控制器;
可被所述处理核心经由所述存储器控制器访问的第二持续性存储器;以及
重启逻辑,被配置为在所述数据处理系统的重启之后,在所述状态指示符指示出所述事务日志“待办”时,根据所述事务日志更新所述第二持续性存储器。
12.如权利要求11所述的数据处理系统,其中重启逻辑还被配置为当根据所述事务日志更新所述第二持续性存储器完成时设置所述状态指示符来指示出所述事务日志“空闲”。
13.如权利要求11或12所述的数据处理系统,还包括一致性控制器,该一致性控制器被配置为检测来自第二执行线程的访问所述第一执行线程的事务日志中的数据的请求。
14.如权利要求13所述的数据处理系统,其中所述一致性控制器实现一致性协议并且其中所述缓存的线包括:
线状况识别符,其指示出何时该线处于所述一致性协议的“已修改”状况中。
15.如权利要求11至14的任何一项所述的数据处理系统,其中所述处理器被配置为在第二执行线程请求对所述第一执行线程的事务日志中的数据的访问时中止所述第一事务。
16.如权利要求11至15的任何一项所述的数据处理系统,其中,在所述事务内,对所述事务日志中的地址的读取操作被指向所述缓存。
17.如权利要求11至16的任何一项所述的数据处理系统,其中所述第一持续性存储器包括所述第二持续性存储器的一部分。
18.如权利要求11至17的任何一项所述的数据处理系统,其中所述缓存的线包括:
将所述事务与所述事务日志相关联的识别符。
19.如权利要求11至18的任何一项所述的数据处理系统,还包括计数器,其中所述计数器在线在所述事务期间被添加到所述缓存时被递增,并且在与所述事务相关联的线被从所述缓存逐出并且被写回到持续性存储器时被递减。
20.如权利要求19所述的数据处理系统,其中与所述事务相关联的事务日志在所述计数器达到零时被释放,指示出与所述事务相关联的所有缓存线已被写回到持续性存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/960,927 | 2018-04-24 | ||
US15/960,927 US10445238B1 (en) | 2018-04-24 | 2018-04-24 | Robust transactional memory |
PCT/GB2019/051067 WO2019207285A2 (en) | 2018-04-24 | 2019-04-15 | Robust transactional memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112005222A true CN112005222A (zh) | 2020-11-27 |
CN112005222B CN112005222B (zh) | 2024-07-16 |
Family
ID=66240168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980027642.1A Active CN112005222B (zh) | 2018-04-24 | 2019-04-15 | 鲁棒的事务性存储器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10445238B1 (zh) |
KR (1) | KR20210002554A (zh) |
CN (1) | CN112005222B (zh) |
WO (1) | WO2019207285A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637284A (zh) * | 2020-12-09 | 2021-04-09 | 北京金山云网络技术有限公司 | 重做日志的存储方法和装置、电子设备和存储介质 |
CN113778330A (zh) * | 2021-08-05 | 2021-12-10 | 无锡融卡科技有限公司 | 一种基于Flash存储器的事务处理方法 |
Families Citing this family (10)
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 |
US10848585B2 (en) * | 2018-12-03 | 2020-11-24 | Walmart Apollo, Llc | Using a sharded distributed cache as a pipeline integration buffer |
US11829517B2 (en) * | 2018-12-20 | 2023-11-28 | Intel Corporation | Method and apparatus for trust domain creation and destruction |
US11099991B2 (en) | 2019-01-24 | 2021-08-24 | Vmware, Inc. | Programming interfaces for accurate dirty data tracking |
US11068400B2 (en) | 2019-01-24 | 2021-07-20 | Vmware, Inc. | Failure-atomic logging for persistent memory systems with cache-coherent FPGAs |
US10817389B2 (en) * | 2019-01-24 | 2020-10-27 | Vmware, Inc. | Failure-atomic persistent memory logging using binary translation |
TWI737189B (zh) * | 2019-02-23 | 2021-08-21 | 國立清華大學 | 易於從固態儲存裝置之故障中還原的方法、電腦系統,及固態儲存裝置 |
US11740928B2 (en) * | 2019-08-26 | 2023-08-29 | International Business Machines Corporation | Implementing crash consistency in persistent memory |
FR3102868B1 (fr) | 2019-11-04 | 2021-11-12 | Idemia Identity & Security France | Procédé pour exécuter une transaction |
US20210405913A1 (en) * | 2020-06-26 | 2021-12-30 | Micron Technology, Inc. | Host access tracking in a memory sub-system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101495976A (zh) * | 2005-07-29 | 2009-07-29 | 微软公司 | 直接更新软件事务存储器 |
CN103150206A (zh) * | 2006-12-28 | 2013-06-12 | 英特尔公司 | 高效且一致的软件事务存储器 |
US20150149823A1 (en) * | 2013-11-22 | 2015-05-28 | Netapp, Inc. | Methods for preserving state across a failure and devices thereof |
US20150193265A1 (en) * | 2014-01-07 | 2015-07-09 | Red Hat, Inc. | Using nonspeculative operations for lock elision |
WO2017013202A1 (en) * | 2015-07-22 | 2017-01-26 | Huawei Technologies Co., Ltd. | Coherence protocol for hardware transactional memory in shared memory using non volatile memory with log and no lock |
CN107924418A (zh) * | 2015-09-24 | 2018-04-17 | 英特尔公司 | 在非易失性存储器中使易失性隔离事务具有失败原子性 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7461071B2 (en) * | 2005-04-04 | 2008-12-02 | Younite, Inc. | Distributed management framework for personal attributes |
US9286198B2 (en) * | 2005-04-21 | 2016-03-15 | Violin Memory | Method and system for storage of data in non-volatile media |
US7805632B1 (en) * | 2007-09-24 | 2010-09-28 | Net App, Inc. | Storage system and method for rapidly recovering from a system failure |
US10817390B2 (en) * | 2011-09-14 | 2020-10-27 | Hewlett Packard Enterprise Development Lp | Imparting durability to a transactional memory system |
US8868843B2 (en) * | 2011-11-30 | 2014-10-21 | Advanced Micro Devices, Inc. | Hardware filter for tracking block presence in large caches |
US9298632B2 (en) * | 2012-06-28 | 2016-03-29 | Intel Corporation | Hybrid cache state and filter tracking of memory operations during a transaction |
US9645932B1 (en) * | 2014-12-19 | 2017-05-09 | EMC IP Holding Company LLC | Persistent metadata cache |
US9430396B2 (en) * | 2014-12-22 | 2016-08-30 | Intel Corporation | Updating persistent data in persistent memory-based storage |
WO2016101165A1 (zh) * | 2014-12-24 | 2016-06-30 | 华为技术有限公司 | 事务处理的方法、装置及计算机系统 |
US9697219B1 (en) * | 2014-12-29 | 2017-07-04 | EMC IP Holding Company LLC | Managing log transactions in storage systems |
US10009438B2 (en) * | 2015-05-20 | 2018-06-26 | Sandisk Technologies Llc | Transaction log acceleration |
US9513829B1 (en) * | 2015-06-29 | 2016-12-06 | EMC IP Holding Company LLC | Transaction logging using round-robin block allocation and I/O size based partitions |
US10268502B2 (en) * | 2017-06-29 | 2019-04-23 | Intel Corporation | Methods and apparatus to perform atomic transactions in nonvolatile memory under hardware transactional memory |
-
2018
- 2018-04-24 US US15/960,927 patent/US10445238B1/en active Active
-
2019
- 2019-04-15 WO PCT/GB2019/051067 patent/WO2019207285A2/en active Application Filing
- 2019-04-15 KR KR1020207033130A patent/KR20210002554A/ko active Search and Examination
- 2019-04-15 CN CN201980027642.1A patent/CN112005222B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101495976A (zh) * | 2005-07-29 | 2009-07-29 | 微软公司 | 直接更新软件事务存储器 |
CN103150206A (zh) * | 2006-12-28 | 2013-06-12 | 英特尔公司 | 高效且一致的软件事务存储器 |
US20150149823A1 (en) * | 2013-11-22 | 2015-05-28 | Netapp, Inc. | Methods for preserving state across a failure and devices thereof |
US20150193265A1 (en) * | 2014-01-07 | 2015-07-09 | Red Hat, Inc. | Using nonspeculative operations for lock elision |
WO2017013202A1 (en) * | 2015-07-22 | 2017-01-26 | Huawei Technologies Co., Ltd. | Coherence protocol for hardware transactional memory in shared memory using non volatile memory with log and no lock |
CN107924418A (zh) * | 2015-09-24 | 2018-04-17 | 英特尔公司 | 在非易失性存储器中使易失性隔离事务具有失败原子性 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112637284A (zh) * | 2020-12-09 | 2021-04-09 | 北京金山云网络技术有限公司 | 重做日志的存储方法和装置、电子设备和存储介质 |
CN113778330A (zh) * | 2021-08-05 | 2021-12-10 | 无锡融卡科技有限公司 | 一种基于Flash存储器的事务处理方法 |
CN113778330B (zh) * | 2021-08-05 | 2023-04-25 | 无锡融卡科技有限公司 | 一种基于Flash存储器的事务处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190324908A1 (en) | 2019-10-24 |
US10445238B1 (en) | 2019-10-15 |
CN112005222B (zh) | 2024-07-16 |
WO2019207285A2 (en) | 2019-10-31 |
WO2019207285A3 (en) | 2019-12-05 |
KR20210002554A (ko) | 2021-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112005222B (zh) | 鲁棒的事务性存储器 | |
US11614959B2 (en) | Coherence protocol for hardware transactional memory in shared memory using non volatile memory with log and no lock | |
US6981104B2 (en) | Method for conducting checkpointing within a writeback cache | |
US6636950B1 (en) | Computer architecture for shared memory access | |
TWI526829B (zh) | 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 | |
EP2972891B1 (en) | Multiversioned nonvolatile memory hierarchy for persistent memory | |
US6704841B2 (en) | Method and apparatus for facilitating speculative stores in a multiprocessor system | |
US7549025B2 (en) | Efficient marking of shared cache lines | |
US6721855B2 (en) | Using an L2 directory to facilitate speculative loads in a multiprocessor system | |
CN110471617B (zh) | 在采用事务存储器的系统中管理缓存结构的方法和装置 | |
US20080005504A1 (en) | Global overflow method for virtualized transactional memory | |
CN112970003B (zh) | 用于实现无锁数据结构的方法和装置 | |
US20040068621A1 (en) | Generalized active inheritance consistency mechanism for a computer system | |
EP0833248A2 (en) | Memory update history storing apparatus and method | |
US20230325325A1 (en) | Draining operation for draining dirty cache lines to persistent memory | |
KR20070040340A (ko) | 소형 캐시 시스템에서 원자적 보존 라인에 라이트백하는것을 배제하는 방법 및 시스템 | |
US7024520B2 (en) | System and method enabling efficient cache line reuse in a computer system | |
US20040068619A1 (en) | Linked-list early race resolution mechanism | |
CN115098409A (zh) | 进行阶层式高速缓存系统回存且无效的处理器以及方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |