CN111133418A - 在例外屏蔽更新指令之后允许未中止的事务处理 - Google Patents
在例外屏蔽更新指令之后允许未中止的事务处理 Download PDFInfo
- Publication number
- CN111133418A CN111133418A CN201880060737.9A CN201880060737A CN111133418A CN 111133418 A CN111133418 A CN 111133418A CN 201880060737 A CN201880060737 A CN 201880060737A CN 111133418 A CN111133418 A CN 111133418A
- Authority
- CN
- China
- Prior art keywords
- transaction
- exception
- processing
- circuitry
- instruction
- 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
- 238000012545 processing Methods 0.000 claims abstract description 134
- 230000004044 response Effects 0.000 claims abstract description 32
- 238000011084 recovery Methods 0.000 claims description 27
- 238000000034 method Methods 0.000 claims description 17
- 238000001514 detection method Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 230000001960 triggered effect Effects 0.000 claims description 9
- 230000000873 masking effect Effects 0.000 claims description 6
- 238000013459 approach Methods 0.000 description 12
- 206010000210 abortion Diseases 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- 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
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
-
- 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
-
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Executing Machine-Instructions (AREA)
Abstract
数据处理设备具有处理电路,该处理电路具有支持使用事务存储器执行事务的事务存储器支持电路。响应于例外屏蔽更新指令(该例外屏蔽更新指令系更新例外屏蔽信息以启用在事务处理开始时被禁用的例外的至少一个子集),处理电路4允许对在例外屏蔽更新指令后的事务的一个或多个后续指令的未中止处理。
Description
技术领域
本技术涉及数据处理领域。更具体地,本技术涉及事务存储器。
背景技术
数据处理系统可执行多个数据处理线程。有时,线程可能需要存取共享资源,且数据处理操作的性质可使得一旦线程开始与共享资源互动,则可能需要在没有另一线程同时存取该资源的情况下,使用该资源以原子方式来完成一组操作。
处理线程之间的这种冲突的一种技术可以是使用锁来控制对至少一个目标资源的独占存取。例如,当一个线程开始存取特定地址区域中的数据时,该线程可设置锁定变量来声明锁的所有权,接着当锁拥有线程拥有锁的所有权时,检查该锁定变量的其他线程可确定锁已被声明,因此可不会进入与该地址区域互动的代码部分。因预设每个线程都假定它不能进入存取共享资源的代码部分(因除非线程拥有锁的所有权(该锁的所有权保证没有冲突发生)不然可能会发生与另一个线程的冲突),故这种基于锁的方法可看作是悲观的。然而,锁定标识符通常可控制对多个资源(例如,一系列地址)的独占存取,因此不能保证若一个线程正在存取受锁定变量保护的资源集合中的某些资源,则另一个线程肯定会存取相同资源。因此,在线程之间的冲突很少的情况下,基于锁的方法可能导致效能损失,因线程可能在进入使用共享资源的代码的临界区段之前不必要地等待锁被释放。
用于处理存取共享资源的线程之间的冲突的更乐观方法可以是使用事务存储器支持。数据处理系统可具有支持处理电路执行在数据处理的线程内的事务的电路。事务可为在标记事务开始的事务开始指令及标记事务结束的事务结束指令之间执行的线程的那些指令。在事务开始指令和事务结束指令之间,处理电路可推测性地执行中间指令且防止提交推测性地执行的指令的结果直到到达事务结束指令为止。在执行事务开始指令之后(但在到达事务结束指令之前)发生中止事件可能导致事务被中止且推测结果被舍弃。中止事务可能有许多原因,但一个原因可能是检测到与另一个线程的存储器存取冲突。因此,使用这种方法,每个线程可乐观地开始处理假设不会发生与其他线程的冲突之代码的临界区段,接着若到达临界区段的末端而没有检测到任何冲突,则可提交(commit)事务的结果。在冲突很少的情况下,使用事务存储器支持可通过允许更多线程同时处理其代码的临界区段来改善效能。
发明内容
至少一些示例提供了一种设备,其包括:处理电路,该处理电路响应于指令来执行数据处理,该处理电路包括事务存储器支持电路,该事务存储器支持电路支持由该处理电路执行数据处理的线程内的事务,该事务包括在事务开始指令和事务结束指令之间推测性地执行的该线程的指令,针对该推测性地执行的指令,该处理电路被配置为防止提交所述推测性地执行的指令的结果直到到达所述事务结束指令为止(commitment),并且当在到达该事务结束指令之前发生中止事件时中止该事务的处理;及例外处理电路,该例外处理电路根据例外屏蔽信息来确定是否屏蔽例外,该例外屏蔽信息指定是启用还是禁用例外的一个或多个子集;其中响应于在事务内执行的例外屏蔽更新指令来更新该例外屏蔽信息,以启用在该事务的处理开始时被禁用的例外的至少一个子集,该处理电路被配置为更新该例外屏蔽信息及允许在该例外屏蔽更新指令后的该事务的一个或多个后续指令的未中止处理。
至少一些示例提供了一种数据处理方法,包括以下步骤:使用处理电路来响应于指令以执行数据处理,该处理电路包括事务存储器支持电路,该事务存储器支持电路支持由该处理电路执行数据处理的线程内的事务,该事务包括在事务开始指令和事务结束指令之间推测性地执行的该线程的指令,针对该推测性地执行的指令,该处理电路被配置为防止提交所述推测性地执行的指令的结果直到到达所述事务结束指令为止(commitment),并且当在到达该事务结束指令之前发生中止事件时中止该事务的处理;响应于例外,根据例外屏蔽信息来确定是否屏蔽该例外,该例外屏蔽信息指定是启用还是禁用例外的一个或多个子集;及响应于在事务内执行的例外屏蔽更新指令来更新该例外屏蔽信息,以启用在该事务的处理开始时被禁用的例外的至少一个子集、更新该例外屏蔽信息及允许在该例外屏蔽更新指令后的该事务的一个或多个后续指令的未中止处理。
至少一些示例提供了一种用于控制主机数据处理设备以提供用于执行指令的指令执行环境的计算机程序,包括:处理程序逻辑,其支持在数据处理的线程内执行事务,该事务包括在事务开始指令和事务结束指令之间推测性地执行的该线程的指令,针对该推测性地执行的指令,该处理程序逻辑被配置为防止提交所述推测性地执行的指令的结果直到到达所述事务结束指令为止,并且当在到达该事务结束指令之前发生中止事件时中止该事务的处理;及例外处理程序逻辑,其用于根据例外屏蔽信息来确定是否屏蔽例外,该例外屏蔽信息指定是启用还是禁用例外的一个或多个子集;其中响应于在事务内执行的例外屏蔽更新指令来更新该例外屏蔽信息以启用在该事务的处理开始时被禁用的例外的至少一个子集,该处理程序逻辑被配置为更新该例外屏蔽信息及允许在该例外屏蔽更新指令后的该事务的一个或多个后续指令的未中止处理。
可提供储存上述计算机程序的储存媒体。储存媒体可为是非瞬时计算机程序储存媒体。
附图说明
本技术的其他方面、特征及优点将从下述结合附图的示例变得显而易见,在附图中:
图1示意性地示出了包括事务存储器支持电路的设备的示例;
图2示出了事务处理的示例;
图3示出了例外屏蔽信息的两个示例;
图4示出了在事务中执行例外屏蔽更新指令时中止事务的比较示例;
图5示出了若允许例外屏蔽更新以启用先前在事务中途禁用之例外的处理而可能出现的问题;
图6示出了若屏蔽更新启用的例外触发了事务的中止则通过在事务中启用例外屏蔽更新并报告状态信息来解决此问题的技术;
图7为示出处理事务的方法的流程图;及
图8示出了可使用的仿真器示例。
具体实施方式
数据处理设备可具有处理电路,该处理电路具有事务存储器支持电路,以支持处理电路执行在数据处理的线程内的事务。事务包括在事务开始指令和事务结束指令之间推测性地执行的线程的指令,针对该推测性地执行的指令,该处理电路被配置为可以防止提交所述推测性地执行的指令的结果直到到达所述事务结束指令为止,并且当在到达事务结束指令之前发生中止事件时可中止事务的处理。
设备可具有例外处理电路,该例外处理电路用于控制在处理指令期间可能出现的例外条件的处理。例外条件可为要求处理电路执行的处理被暂停以便可执行其他处理的任何事件。例如,例外可包括软件触发的例外,如由软件尝试存取无效、未映像或不可存取的存储器地址、执行未定义的指令或由违反安全保护措施的软件执行的操作引起的存储器故障。此外,例外情况可包括由外部事件触发的硬件中断,如用户按下装置上的按钮、向设备发送请求的外部设备、发送信号的外部设备,或不是由正在由处理电路本身执行的指令所直接引起的某些其他事件。例外处理电路可具有基于例外屏蔽信息来屏蔽某些例外的能力,该例外屏蔽信息可指定是启用还是禁用一个或多个例外子集。
通常,在事务中将禁止更新例外屏蔽信息的指令,以便若在处理事务期间遇到更新例外屏蔽信息的指令则这将导致中止事件从而中止事务。通常如此做是为了避免由于事务开始时的例外屏蔽信息与事务中稍后的例外屏蔽信息之间的差异而可能出现的活锁(livestock)情况。
然而,发明人认识到在事务期间不必抑制例外屏蔽更新指令。响应于在事务内执行的例外屏蔽更新指令来更新例外屏蔽信息以启用在处理事务开始时被禁用的至少一组例外,处理电路可更新例外屏蔽信息并允许在例外屏蔽更新指令之后的事务的一个或多个后续指令的未中止处理。因此,当遇到例外屏蔽更新指令时,不需要触发中止或抑制例外屏蔽信息的更新。这为事务存储器机制提供了更大的机会来用于处理包括例外屏蔽更新指令的线程,否则这是不可能的。这很有用,因一方编写的一部分软件通常可指由另一方编写的一部分软件或在由他人编写的第一方的软件中运行的某些功能,故程序设计师或编译程序可能很难知道所执行的所有代码是否都包含例外屏蔽更新指令,故在没有上述技术的情况下此类代码可能具有较低的效能(因可能会重复尝试执行可能因例外屏蔽更新指令的存在所引起的中止而失败的事务,且可能花费一些时间来检测到采用非事务性方法(如采用基于锁的机制)之足够数量的中止)。相比之下,由于能够继续处理超出例外屏蔽更新的事务,故此可提高此类代码的效能。
事务存储器支持电路可具有恢复状态记忆电路,以储存响应于事务开始指令而捕获的事务恢复状态数据。处理电路可响应于中止事件来恢复事务恢复状态数据。事务恢复状态数据可包括屏蔽例外信息。因此,在事务主体中存在例外屏蔽更新指令的情况下(该指令启用在处理事务开始时被禁用的至少一个例外子集),若事务被中止,则这可能导致例外屏蔽信息之先前的值正在恢复,而因此至少一个例外子集再次被禁用。
这可能导致问题,因处理电路可被布置成响应于在处理事务期间启用例外(enabled exception)的发生而触发中止事件。当发生例外时,在获取例外之后执行的后续处理将产生结果,这种结果非为事务中执行的操作的部分且不应记录在该事务的推测结果集中。类似地,例外存取的地址与其他线程存取的地址之间的冲突不需要以与事务本身相同的方式标记。在硬件中提供足够的资源以区分例外处理及事务处理,且稍后恢复事务可能会过于复杂而无法证明所增加的费用,因此在处理事务期间发生启用例外时简单地中止事务可更简单。
然而,由于例外导致事务中止,例外服务可能会延迟,直到事务的恢复状态数据已恢复为止。这是因为若事务正在中止,例外应该看到架构状态就像事务从未发生过。因此,若在事务期间在不中止事务的情况下允许例外屏蔽更新指令,则可在事务期间启用先前禁用的例外子集,接着发生这种新启用的例外中的一者,如此便会导致事务被中止,恢复先前捕捉的恢复状态可导致在采取例外前禁用例外子集。接着例外可保持未决(pending)状态,接着软件可尝试重新启动事务。在下一次运行事务的尝试中,当再次遇到例外屏蔽更新指令时,该例外屏蔽更新指令重新启用子集例外,接着仍未决的例外可再次触发中止,这可能导致在没有解决例外及没有成功完成事务的情况下多次尝试执行相同事务的长循环,而导致了活锁情况。实际上,这可不需要无限期地中断处理器,因软件通常具有停止重启事务尝试的机制,且若中止的数量变得大于阈值,则使用非事务方法来执行等效操作。然而,确定这点可能需要一些时间,且同时在尝试多次处理事务时可能会有大量浪费的处理,且在使用非事务方法最终执行操作之前会有长延迟。这是事务存储器的典型方法已禁用事务内的例外屏蔽更新指令或在事务期间触发中止的一个原因。
相比之下,利用上面论述的方法来允许例外屏蔽更新,且允许事务处理以在不中止事务的情况下继续超出例外屏蔽更新指令。尽管事务在例外屏蔽更新指令之后仍可中止(例如,若发生例外或冲突),但这至少提供了继续处理事务及(若没有中止)到达事务结束并提交结果的机会,尽管例外屏蔽信息在事务中途已经改变了状态。
回应于在事务处理期间发生启用例外,当在事务处理开始时禁用启用例外时,处理电路可将中止状态信息设置为预定值。相比之下,响应于为事务而发生的中止事件,当中止事件由除了启用例外之发生外的事件触发时,或由在事务处理开始时也启用之启用例外的发生触发时,处理电路可将中止状态值设置为除预定值之外的值。因此,通过在事务中止时检查中止状态信息,软件可将事务因事务中途启用的例外而中止的情况与中止的其他潜在原因区分开来。接着,软件可确定(例如)当中止状态信息具有预定值时,代码不应尝试在事务模式中再次运行。例如,软件可替代地在非事务模式内执行等效功能(例如,分支到代码内提供等效的非事务操作的路径),这可(例如)使用基于锁的机制来避免多个线程对共享资源的同时存取。因此,通过提供中止状态信息,这降低了活锁情况的风险,启用事务屏蔽状态信息以在没有显著效能瓶颈的风险的情况下来在事务中途发生变化;因此,为基于可需要更改启用或禁用例外的状态代码机制使用事务存储器提供了更大的机会。
可用不同方式表示中止状态信息。在一些示例中,中止状态信息可为状态寄存器内的标记,当启用的例外触发事务的中止且启用例外在事务开始被禁用时,该状态寄存器被设置为第一值且可为其他类型的中止而被设置为第二值。或者,中止状态信息可为一般中止原因代码,该一般中止原因代码具有多个位,这种位具有代表事务中止的不同原因的那些位的不同编码。中止状态代码的一个可能值可为经分配以指示中止是由于在中止事务时启用但在事务开始时被禁用的例外所引起的特殊值。在这种情况下,若事务由于在事务中途启用的例外而中止,则与事务处理开始时已启用例外的情况相比,这将由中止状态代码的不同状态来反映事务。
有许多表示例外屏蔽信息的方法。在某些情况下,例外屏蔽信息可分别为两个或更多不同类型的例外指定是启用还是禁用每种类型的例外。例如,例外屏蔽信息中的一个标记可指示是启用还是禁用与除错相关的例外,另一个标记可指示是启用还是禁用存储器错误例外等等。利用这种类型的例外屏蔽信息,例外屏蔽更新指令可为改变特定类型的例外(或两种或更多种类型的例外)的启用/禁用旗目标指令,以将标记从禁用状态改变为启用状态。
或者,例外屏蔽信息可指定例外优先级阈值。例外处理电路可根据例外的优先级与例外优先级阈值之间的比较来确定是否屏蔽例外。因此,当前禁用的例外子集可为具有比例外优先级阈值低的优先级的那些例外(可选地,也可禁用具有等于例外优先级阈值的优先级的例外)。应当理解,例外优先级可通过数值由不同方式表示。例如,最低数值(例如,优先级零)可指示最重要的例外类型,从而(例如)优先级0例外被认为具有比优先级3更高的优先级。或者,其他方法可使用优先级的最高数值来表示最重要的优先级(例如,优先级15表示比优先级12更高的优先级例外)。因此,本申请案中的术语优先级是指例外的相对重要性,与用于表示该重要性级别的实际数值无关。在例外屏蔽信息指定例外优先级阈值的示例中,上文论述的例外屏蔽更新指令可为更新阈值的例外优先级以指示较低(较不重要)优先级的指令,以便现在将启用更多的例外子集。
尽管上文的示例论述了启用先前禁用例外的例外屏蔽更新指令,但在事务中也可允许其他类型之在不中止事务的情况下更新例外屏蔽信息以禁用先前启用例外的的例外屏蔽更新指令。
事务存储器支持电路可包括用于使用事务存储器机制来支持事务执行的多个资源。例如,事务存储器支持电路可包括恢复状态储存电路,以储存响应于在中止事务时要恢复的事务开始指令而捕捉的事务恢复状态。在一些情况下,外部事务的事务开始指令可触发事务恢复状态的捕捉,且可抑制内部事务的事务恢复状态的捕捉(当事务嵌套深度在遇到事务开始指令处大于零时)。
事务存储器支持电路也可包括推测结果储存电路,以为至少一个线程的至少一个事务储存至少一些推测性地执行的指令的结果。在某些情况下,只有某些类型的指令可能将其结果储存到推测结果储存电路中;例如,用于写入存储器的储存指令可将其储存数据推测性地保存在推测结果存储器中,直到可提交事务为止,而作用于寄存器的通用算术指令可简单地写入那些寄存器,因恢复状态稍后可允许在状态重绕到较早的执行点时丢弃那些结果。
事务存储器支持电路也可具有冲突检测电路,该冲突检测电路用于检测在第一线程的事务内进行的对给定地址的数据存取与另一线程对相同地址的数据存取之间的冲突。冲突检测电路响应于对冲突的检测可触发中止事件。中止事件的其他原因可包括在事务处理期间发生的中断或例外、事务存储器支持电路中储存容量的不足容纳事务的进一步推测结果,或某些在遇到的事务中不允许存取的指令。事务存储器支持电路也可具有地址追踪电路,该地址追踪电路用于追踪由事务内的指令存取的地址,且冲突检测电路可使用经追踪的地址来识别与其他线程的冲突。
相应的计算机程序可控制主机数据处理设备,以提供用于执行指令的指令执行环境,其中处理程序逻辑启用指令之在如上所述的例外屏蔽更新指令之后的未中止处理。这种计算机程序可允许通用主机数据处理设备本身不具有事务存储器支持电路而受益于事务存储器功能及嵌套深度的改进测试(即使可能没有提供这种特征的实际硬件)。替代的是,计算机程序提供程序逻辑(如指令集或数据结构),该程序逻辑仿真此功能使得通用主机数据处理设备能执行意欲提供此类硬件特征的设备上执行的代码。
图1示出了具有硬件事务存储器(HTM)支持的数据处理设备2的示例。设备具有处理逻辑4,以用于执行指令以执行数据处理操作。例如,处理逻辑4可包括用于执行各种类型的处理操作的执行单元,所述各种类型的处理操作如用于执行算术或逻辑运算(如加、乘、AND、OR等)的算术/逻辑单元(ALU);用于对浮点操作数执行操作的浮点单元;或用于对包括多个数据元素的向量操作数进行向量处理的向量处理单元。提供一组架构寄存器6,该组架构寄存器6用于储存由处理逻辑4执行的指令的操作数,且用于储存执行指令的结果。指令译码器8对从指令缓存10取出的指令进行译码,以产生用于控制处理逻辑4或数据处理设备2的其他组件的控制信号,以执行相关操作。也提供加载/储存单元12以执行加载操作(响应于由指令译码器8译码的加载指令)以将数据值从数据缓存14或主存储器16加载至架构寄存器6中,并储存操作(响应于储存由指令译码器8所译码的指令),以将数据值从架构寄存器6储存到数据缓存14或存储器16。
设备2也具有事务存储器支持电路20,该事务存储器支持电路20提供用于支持硬件事务存储器(HTM)的各种资源。事务存储器支持电路20中的HTM资源可包括(例如)用于储存事务的推测结果的推测结果储存器22、用于追踪由事务存取的地址的地址追踪电路24、用于检测由事务进行的数据存取及由其他线程进行的数据存取之间的冲突以便在检测到冲突时可中止事务的冲突检测电路26,及恢复状态储存电路28,该恢复状态储存电路28用于在事务开始时储存来自架构寄存器6的架构状态数据的快照,使得在事务中止时,可恢复此状态以重写事务的推测结果。
设备2也具有例外处理电路30,该例外处理电路30控制例外32的处理,例外32表示需要处理逻辑4暂停其当前处理并切换到某些其他操作的事件。储存在存储器16中的例外处理程序代码可定义成响应于某些类型的例外而执行的操作,并且例外处理电路30可维护例外向量表,该例外向量表指示针对不同类型的例外之对应例外处理程序的地址。架构状态6可包括例外屏蔽寄存器34及例外优先级屏蔽寄存器36,以提供例外屏蔽信息来确定例外处理电路30是否应该作用于可出现的例外32的子集。
图2示出了使用事务存储器支持电路20及处理逻辑4来在给定线程内执行事务的示例。事务是程序代码的一部分,其由事务开始指令(tstart)及事务结束指令提交(tcommit)划界。如图2所示,响应于事务开始指令,捕捉架构寄存器6中的当前架构状态并将其存储在恢复状态储存电路28中。处理逻辑4开始执行在tstart指令后的后续指令的推测性执行;当执行这种指令时,由这种指令存取的地址由地址追踪电路24追踪,且冲突检测电路26响应其他线程检测所追踪的地址及使用加载/储存单元12所存取的地址之间的冲突。将事务中的指令的至少一些推测结果储存在推测结果存储电路22中。例如,响应于储存指令STR而储存于缓存或存储器中的值可保存在推测结果储存器22中,同时事务仍保持未决。若在没有同时发生中止事件的情况下到达事务结束指令(tcommit),则响应于事务结束指令,提交推测结果。在提交事务时,储存在该线程的推测结果存储器22中的任何结果可被写入数据缓存14或存储器16,且恢复状态28可被丢弃或允许被重写,因不再需要将架构状态倒回至遇到事务开始指令之前的点。
另一方面,若发生中止事件,例如当冲突检测电路26在另一个线程存取已由事务存取的地址时检测到冲突时,则触发事务的中止及将来自恢复状态储存28的恢复状态恢复至架构寄存器6。中止事件的其他原因可(例如)包括不允许在事务内执行之指令的执行、推测结果储存器22或地址追踪电路24内不足以处理给定事务所需的推测结果或地址的资源,或在事务期间所接收的中断。
图3示出了例外屏蔽寄存器34及例外优先级屏蔽寄存器36的内容的示例。例外屏蔽寄存器包括一系列标记38,每个标记对应于特定类型的例外32并指定是否启用该例外或是禁用该例外。在图3所示的映射中,标记值为1表示例外被启用(未屏蔽),而标记值为0表示例外类型被禁用(屏蔽),但可理解的是,也可使用相反的映射。当禁用例外类型时,即使发生该例外,也不会导致处理逻辑4被中断。然而,对于禁用例外的例外信号的断言可保持未决,因此若稍后例外被解除屏蔽(启用)而该例外仍保持未决,则在那时可向处理器4发信号通知例外。
类似地,例外优先级屏蔽寄存器36可定义阈值优先级。可认为优先级小于或等于阈值的例外被禁用(屏蔽),且可启用(未屏蔽)优先级大于阈值的例外。应当理解,寄存器34及36中的屏蔽信息可能不是用于确定是否向处理逻辑4发信号通知所采取例外的唯一信息。例如,也可使用优先级,以便当多个启用例外发生时,在较低优先级的例外之前发出较高优先级的例外。类似地,向处理逻辑4发送例外的信号可取决于当前正在执行的代码的优先级及与进入例外相关联的优先级的比较。
图4示出了用于比较在事务期间处理例外屏蔽寄存器34及36的改变的典型方法。例外屏蔽更新指令可改变例外屏蔽寄存器34或例外优先级屏蔽寄存器36中的值。通常,这种指令可能导致事务中止,因此不可能成功完成包含对例外屏蔽寄存器34及36更新的事务。无论例外屏蔽更新指令是启用还是禁用例外子集,都可执行此操作;但如图5所示,更重要的问题是,当例外屏蔽更新指令导致在事务开始时被禁用的指令的额外子集变为启用。
图5示出了在事务期间若允许例外屏蔽更新且允许事务超出例外屏蔽更新时可能出现的活锁问题。图5图示了在禁用例外A的某个子集时执行事务开始指令(tstart)的示例。例外A的子集可为对应的例外屏蔽标记38被禁用的特定类型的例外,或可为优先级小于或等于寄存器36中的当前优先级阈值之例外的子集。事务指令的推测性处理接着开始,且到达例外屏蔽更新指令50,该例外屏蔽更新指令50触发对例外屏蔽寄存器34及36中的一者或两者的更新,以便现在例外A的子集变为启用。随后,发生子集A内的例外,这导致了中止事务。此时,存储在恢复储存器28中的恢复状态被恢复到架构寄存器6,该架构寄存器6包括恢复与寄存器34及36相关联的例外屏蔽信息。此时,因在事务开始指令时例外A的子集被禁用,状态恢复导致例外A再次被禁用。尽管通常在事务中止后将采取例外,但由于状态恢复导致例外A的子集被禁用,故例外被屏蔽因此而不会被采用。然而,相应的例外信号32保持未决。
接着,包含此事务的软件可尝试重新安排事务并从事务开始指令再次开始,如图5的右侧部分所示。再次地,捕捉恢复状态并开始处理事务,但例外A保持未决。因此,当再次到达例外屏蔽更新指令时,启用例外A及对例外A取消屏蔽,事务将再次中止(因事务仍处于未决)。这再次触发恢复该恢复状态,且由于中止时待决状态与恢复状态存储器28指示的状态之间的差异而导致例外A的禁用。因此,这与第一次尝试执行事务时发生的情况相同。软件可能再次尝试重复事务,这可能导致其中软件反复继续尝试执行事务的活锁循环;活锁循环会保持失败,因在启用例外A的子集时有未决子集的例外,而此会立即中止事务。活锁循环可继续,直到例外被置为无效或软件确定在执行事务时已经进行了足够的尝试且切换到非事务性的执行模式。此类活锁循环可能对效能有害,而这就是为什么通常采用图4中的方法,其中任何例外屏蔽更新指令将中止事务。
相比之下,图6图示了不同的方法。在此示例中,在事务期间允许例外屏蔽更新指令50,且允许在例外屏蔽更新指令50后之例外的指令的未中止执行。尽管在例外屏蔽更新指令之后可能有其他原因中止事务,如冲突检测电路26所检测到的冲突、推测结果储存器22或地址追踪储存器24内资源缺乏或发生例外,但若没有发生需要中止的其他事件,则即使包括例外屏蔽更新指令50(该例外屏蔽更新指令50会将屏蔽信息从禁用状态切换到用于例外的至少一子集的启用状态),事务也能到达事务结束指令tcommit。这使得事务执行模式可用于以前无法使用它的额外代码序列,通过使用事务模式(而不是如基于锁的代码之类的更悲观的模型)而增加了效能节省的机会。
为了降低由于当前启用但在事务开始时被禁用的例外导致事务中止之活锁情况的风险,事务中止状态寄存器52内的中止状态值被设置为预定值,以指示中止的原因。图6示出了在中止状态信息中指示的两种替代方法。在一示例中,中止状态寄存器52可具有标记54,该标记54在中止由先前在事务开始时被禁用的例外触发时而被设置为第一值(例如,二进制1)。在另一种方法中,中止状态寄存器52可储存状态代码,该状态代码可具有某种特定的位模式[xyz],该位模式指示中止是由当前启用的例外触发的,该当前启用的例外先前在事务开始时被禁用(因所有其他使用状态代码的不同位模式的中止原因)。不论如何表示中止状态信息,这都提供了用于使软件能够确定中止原因的架构支持。软件可读取中止状态信息52并确定中止的原因是启用例外而导致中止,且若重复事务,则可能再次发生这种情况。因此,软件可确定不重试事务及(例如)替代地,使用基于锁的执行。因此,这减少了活锁出现的机会,同时增加了使用用于包括例外屏蔽更新之代码的事务模式的机会。
图7为示出事务模式中的指令处理的流程图。在步骤100处,指令译码器8遇到事务开始指令。指令译码器8产生控制信号,这种控制信号在步骤102控制处理逻辑4从寄存器6捕捉(包括寄存器34及36中的例外屏蔽信息之)当前架构状态及储存经捕捉状态于恢复状态储存器28内。在一些实施方式中,可仅对在没有其他未决事务时执行的第一事务开始指令执行此恢复状态捕捉。若发生事务嵌套,则在到达先前事务结束之前遇到第二个事务开始指令时,可针对那些进一步嵌套的事务抑制恢复状态捕捉以降低复杂性。
在步骤104处,开始进行在事务开始指令后的指令的推测执行。地址追踪电路24开始记录由事务指令存取的地址,且冲突检测电路26检查那些地址与其他线程存取的地址之间的冲突。
在步骤106处,指令译码器8检查是否已遇到启用在事务开始时被禁用之例外的子集的例外屏蔽更新指令;若是,则在步骤108处,控制处理逻辑4以更新寄存器34及36中的一者或两者中的例外屏蔽信息,并且接着继续进行事务的未中止推测执行。因此,例外屏蔽更新不会触发事务的中止。若没有遇到例外屏蔽更新,则在步骤110处检查是否发生了任何中止事件。例如,中止事件可为启用例外(当前未被例外屏蔽寄存器34或例外优先级屏蔽寄存器36屏蔽)的发生、冲突检测电路26检测到的冲突、不允许在事务中执行之指令的执行,或HTM追踪结构22及24中之一者的容量不足以容纳当前事务的信息的进一步储存。
若发生中止事件,则在步骤112中止事务且恢复状态从恢复状态储存器28恢复到架构寄存器36。在步骤114处,处理逻辑4或例外处理电路30确定中止事件是否是由在事务开始时禁用之启用的例外引起的。这可由将新恢复的例外屏蔽寄存器34及具有导致中止的例外的属性的例外优先级屏蔽寄存器36进行比较来确定。若中止事件是由在事务开始时被禁用的启用例外引起的,则在步骤116处将中止状态寄存器52设置为预定值。否则,中止状态寄存器52设置为表示中止原因的不同值。这向软件通知原因,以便软件可对重复尝试采取条件分支,以根据中止状态信息再次执行事务或替代的基于锁的代码。因此,中止状态信息(包括识别由在事务期间未被屏蔽的启用例外触发之中止的特定状态值),使得能够更好地决定如何重新排程对应于中止事务的操作。
若在步骤110处没有发生中止事件,则继续进行事务处理。在步骤120处,确定指令译码器8是否遇到了事务结束指令(tcommit);若是,则生成控制信号以在步骤122处触发处理逻辑4,以提交事务的任何推测结果及丢弃或允许重写与事务相关联之恢复状态储存器28内的恢复状态。推测结果的提交可包括(例如)将推测结果储存器22的储存指令的结果写入至数据缓存14或存储器16。在一些情况下,可不对所有事务结束指令执行推测结果的提交。例如,对于嵌套事务来说,只有嵌套集的外部事务的最终事务结束指令可触发推测结果的提交,且可忽略任何内部事务的事务结束指令。此外,在某些情况下,在到达事务结束指令时,可能还有其他条件要确认是否可实际提交推测结果。
若在步骤120处尚未到达事务结束指令,则方法返回到步骤106并循环,直到在步骤106、110及120处确认的事件中的至少一者已发生为止。
图8示出了可使用的仿真器实施。尽管前文描述的实施例在用于操作支持所涉及技术之特定处理硬件的设备及方法方面实施了本发明,但也可提供根据通过使用计算机程序所实施之本文描述的实施例的指令执行环境。只要此类计算机程序提供基于软件的硬件架构的实施,则此类计算机程序通常就被称为仿真器。各种仿真器计算机程序包括仿真器(emulator)、虚拟机、模型及包括动态二进制翻译器的二进制翻译器。通常而言,仿真器实施可在支持仿真器程序210之主端处理器230上运行(可选地在支持仿真器程序210之主端操作系统220上运行)。在一些布置中,在硬件及所提供的指令执行环境之间可存在多个模拟层及/或在同一主端处理器上提供的多个不同的指令执行环境。从历史上看,已要求功能强大的处理器提供以合理的速度执行的仿真器实施,但在某些情况下这种方法可能是合理的,如当出于兼容性或重新使用的原因而希望将本地代码运行至另一个处理器时。例如,仿真器实施可提供具有主端处理器硬件不支持之附加功能的指令执行环境,或提供通常与不同硬件架构相关联的指令执行环境。在Robert Bedichek所著的“一些高效的架构模拟技术(Some Efficient Architecture Simulation Techniques)”(见Winter 1990USENIX研讨会的第53页至第63页)中给出模拟的概述。
就先前已参考特定硬件构造或特征所描述的实施例而言,在模拟实施例中,可通过合适的软件构造或特征来提供等效功能。例如,特定电路可在仿真实施例中实现为计算机程序逻辑。类似地,如寄存器或缓存之类的存储器硬件可在仿真实施例中实施为软件数据结构。在前述实施例中引用的一个或多个硬件组件存在于主端硬件(例如,主端处理器230)上的布置中,一些模拟实施例可在适当的情况下使用主端硬件。
仿真器程序210可储存在计算机可读取储存媒体(可为非瞬时媒体)上,且向(可包括应用程序、操作系统及管理程序的)目标代码200提供程序接口(指令执行环境),该程序接口与由仿真器程序210建模的硬件架构的应用程序编程接口相同。因此,可使用仿真器程序210在指令执行环境内执行目标代码200的程序指令,以用上述方式处理在事务内的例外屏蔽更新指令,使得实际上不具有上述设备2的硬件特征的主端计算机230可仿真(emulate)这些特征。
在本申请中,词语“被配置为......”用于表示设备的组件具有能执行所定义操作的配置。在该上下文中,“配置”表示硬件或软件互连的布置或方式。例如,设备可具有提供所定义的操作的专用硬件,或可对处理器或其他处理装置进行编程以执行功能。“被配置为”并不意味着需要以任何方式改变设备组件以提供所定义的操作。
尽管本文已参考附图而详细描述了本发明的说明性实施例,但应该理解的是,本发明不限于那些精确的实施例,且所属技术领域中具有通常知识者在不背离由附加申请专利范围所限定之本发明的范围及精神的情况下可在其中实现各种变化及修改。
Claims (15)
1.一种设备,包括:
处理电路,所述处理电路响应于指令来执行数据处理,所述处理电路包括事务存储器支持电路,所述事务存储器支持电路支持由所述处理电路执行数据处理的线程内的事务,所述事务包括在事务开始指令和事务结束指令之间推测性地执行的所述线程的指令,针对该推测性地执行的指令,所述处理电路被配置为防止提交所述推测性地执行的指令的结果直到到达所述事务结束指令为止,并且当在到达所述事务结束指令之前发生中止事件时中止所述事务的处理;及
例外处理电路,所述例外处理电路根据例外屏蔽信息来确定是否屏蔽例外,所述例外屏蔽信息指定是启用还是禁用例外的一个或多个子集;
其中,响应于在事务内执行的例外屏蔽更新指令来更新所述例外屏蔽信息以启用在所述事务的处理开始时被禁用的例外的至少一个子集,所述处理电路被配置为允许在所述例外屏蔽更新指令后的所述事务的一个或多个后续指令的未中止处理。
2.根据权利要求1所述的设备,其中,所述事务存储器支持电路包括恢复状态储存电路,所述恢复状态储存电路用于储存响应于所述事务开始指令而捕获的事务恢复状态数据。
3.根据权利要求2所述的设备,其中,所述处理电路被配置为响应于所述中止事件来恢复所述事务恢复状态数据。
4.根据权利要求2所述的设备,其中,所述事务恢复状态数据包括所述例外屏蔽信息。
5.根据权利要求1所述的设备,其中,所述处理电路被配置为响应于在事务的处理期间启用例外的发生而触发所述中止事件。
6.根据权利要求3所述的设备,其中,所述事务恢复状态数据包括所述例外屏蔽信息;并且
响应于在事务的处理期间启用例外的发生,所述处理电路被配置为触发所述中止事件并且推迟服务所述例外直到已恢复所述事务恢复状态数据为止。
7.根据权利要求5所述的设备,其中,响应于在事务的处理期间启用例外的发生,当在所述事务的处理开始时禁用所述启用例外时,所述处理电路被配置为将中止状态信息设置为预定值。
8.根据权利要求7所述的设备,其中,响应于针对事务而发生的中止事件,当所述中止事件由除了启用例外的发生之外的事件触发时或由在所述事务的处理开始启用的启用例外的发生触发时,所述处理电路被配置为将所述中止状态信息设置为除所述预定值之外的值。
9.根据权利要求1所述的设备,其中,所述例外屏蔽信息分别针对多种类型的例外指定是启用还是禁用每种类型的例外。
10.根据权利要求1所述的设备,其中,所述例外屏蔽信息指定例外优先级阈值,并且所述例外处理电路被配置为根据所述例外的优先级与所述例外优先级阈值之间的比较来确定是否屏蔽例外。
11.根据权利要求1所述的设备,其中,所述事务存储器支持电路包括以下电路中的至少一者:
推测结果储存电路,其用于储存所述推测性地执行的指令的所述结果;以及
地址追踪电路,其用于追踪由事务内的指令所存取的地址。
12.根据权利要求1所述的设备,其中,所述事务存储器支持电路包括冲突检测电路,所述冲突检测电路用于检测在第一线程的事务内进行的对给定地址的数据存取与由另一个线程对相同地址的数据存取之间的冲突。
13.根据权利要求12所述的设备,其中,所述冲突检测电路被配置为响应于检测到所述冲突而触发所述中止事件。
14.一种数据处理方法,包括以下步骤:
使用处理电路来响应于指令以执行数据处理,所述处理电路包括事务存储器支持电路,所述事务存储器支持电路支持由所述处理电路执行数据处理的线程内的事务,所述事务包括在事务开始指令和事务结束指令之间推测性地执行的所述线程的指令,针对该推测性地执行的指令,所述处理电路被配置为防止提交所述推测性地执行的指令的结果直到到达所述事务结束指令为止,并且当在到达所述事务结束指令之前发生中止事件时中止所述事务的处理;
响应于例外,根据例外屏蔽信息来确定是否屏蔽所述例外,所述例外屏蔽信息指定是启用还是禁用例外的一个或多个子集;以及
响应于在事务内执行的例外屏蔽更新指令来更新所述例外屏蔽信息以启用在所述事务的处理开始时被禁用的例外的至少一个子集,更新所述例外屏蔽信息并且允许在所述例外屏蔽更新指令后的所述事务的一个或多个后续指令的未中止处理。
15.一种用于控制主机数据处理设备以提供用于执行指令的指令执行环境的计算机程序,包括:
处理程序逻辑,其支持在数据处理的线程内执行事务,所述事务包括在事务开始指令和事务结束指令之间推测性地执行的所述线程的指令,针对该推测性地执行的指令,所述处理程序逻辑被配置为防止提交所述推测性地执行的指令的结果直到到达所述事务结束指令为止,并且当在到达所述事务结束指令之前发生中止事件时中止所述事务的处理;及
例外处理程序逻辑,其用于根据例外屏蔽信息来确定是否屏蔽例外,所述例外屏蔽信息指定是启用还是禁用例外的一个或多个子集;
其中,响应于在事务内执行的例外屏蔽更新指令来更新所述例外屏蔽信息以启用在所述事务的处理开始时被禁用的例外的至少一个子集,所述处理程序逻辑被配置为更新所述例外屏蔽信息并且允许在所述例外屏蔽更新指令后的所述事务的一个或多个后续指令的未中止处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP17386031.3 | 2017-09-29 | ||
EP17386031.3A EP3462312B1 (en) | 2017-09-29 | 2017-09-29 | Permitting unaborted processing of transaction after exception mask update instruction |
PCT/EP2018/072495 WO2019063200A1 (en) | 2017-09-29 | 2018-08-21 | NON-INTERRUPTED TRANSACTION PROCESSING AUTHORIZATION AFTER EXCEPTION MASK UPDATE INSTRUCTION |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111133418A true CN111133418A (zh) | 2020-05-08 |
CN111133418B CN111133418B (zh) | 2023-12-22 |
Family
ID=60143663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880060737.9A Active CN111133418B (zh) | 2017-09-29 | 2018-08-21 | 在例外屏蔽更新指令之后允许未中止的事务处理 |
Country Status (8)
Country | Link |
---|---|
US (1) | US11663034B2 (zh) |
EP (1) | EP3462312B1 (zh) |
JP (1) | JP7136888B2 (zh) |
KR (1) | KR102599689B1 (zh) |
CN (1) | CN111133418B (zh) |
IL (1) | IL273129B2 (zh) |
TW (1) | TWI786181B (zh) |
WO (1) | WO2019063200A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194584B1 (en) * | 2019-07-19 | 2021-12-07 | Marvell Asia Pte, Ltd. | Managing out-of-order retirement of instructions |
CN117295426A (zh) | 2021-05-10 | 2023-12-26 | 日本烟草产业株式会社 | 气溶胶产生装置的电源单元 |
JPWO2022239512A1 (zh) | 2021-05-10 | 2022-11-17 | ||
EP4338628A1 (en) | 2021-05-10 | 2024-03-20 | Japan Tobacco, Inc. | Power supply unit for aerosol generation device |
JPWO2022239378A1 (zh) | 2021-05-10 | 2022-11-17 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4478509A (en) * | 1976-04-15 | 1984-10-23 | Xerox Corporation | Control system and interface for electrostatographic machines |
US6024486A (en) * | 1996-06-05 | 2000-02-15 | Compaq Computer Corporation | Data error detection and correction |
US20010047470A1 (en) * | 1998-02-20 | 2001-11-29 | Franck Roche | Management of interrupts each having hardware and software priorities in a microprocessor |
US20070255876A1 (en) * | 2006-04-28 | 2007-11-01 | Nec Electronics Corporation | Interrupt control circuit and method |
US20130282972A1 (en) * | 2012-04-18 | 2013-10-24 | Samsung Electronics Co., Ltd. | Programmable memory controller |
CN104714836A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 用于聚结内存事务的方法和系统 |
CN104714848A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 利用用于聚结内存事务的指示的方法和系统 |
US20160378543A1 (en) * | 2015-06-27 | 2016-12-29 | Vmware, Inc. | Implementing pseudo non-masking interrupts behavior using a priority interrupt controller |
US20170177338A1 (en) * | 2015-12-18 | 2017-06-22 | International Business Machines Corporation | Management of asynchronous interrupts in a transactional memory multiprocessor environment |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63238630A (ja) * | 1987-03-26 | 1988-10-04 | Toshiba Corp | マイクロプロセツサの割込み制御装置 |
US6173248B1 (en) * | 1998-02-09 | 2001-01-09 | Hewlett-Packard Company | Method and apparatus for handling masked exceptions in an instruction interpreter |
JP3600095B2 (ja) * | 1999-12-07 | 2004-12-08 | 松下電器産業株式会社 | 割り込み管理装置及び割り込み管理方法 |
US7882339B2 (en) * | 2005-06-23 | 2011-02-01 | Intel Corporation | Primitives to enhance thread-level speculation |
US7792805B2 (en) * | 2006-05-30 | 2010-09-07 | Oracle America, Inc. | Fine-locked transactional memory |
US8914620B2 (en) * | 2008-12-29 | 2014-12-16 | Oracle America, Inc. | Method and system for reducing abort rates in speculative lock elision using contention management mechanisms |
JP5214537B2 (ja) * | 2009-05-25 | 2013-06-19 | 株式会社東芝 | マルチプロセッサシステム |
US8225139B2 (en) * | 2009-06-29 | 2012-07-17 | Oracle America, Inc. | Facilitating transactional execution through feedback about misspeculation |
US9477515B2 (en) * | 2009-12-15 | 2016-10-25 | Intel Corporation | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode |
US20120227045A1 (en) * | 2009-12-26 | 2012-09-06 | Knauth Laura A | Method, apparatus, and system for speculative execution event counter checkpointing and restoring |
US8438568B2 (en) * | 2010-02-24 | 2013-05-07 | International Business Machines Corporation | Speculative thread execution with hardware transactional memory |
WO2013115816A1 (en) * | 2012-02-02 | 2013-08-08 | Intel Corporation | A method, apparatus, and system for speculative abort control mechanisms |
US9740549B2 (en) * | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US9442737B2 (en) * | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
GB2499277B (en) | 2012-08-30 | 2014-04-02 | Imagination Tech Ltd | Global register protection in a multi-threaded processor |
US9081607B2 (en) * | 2012-10-24 | 2015-07-14 | International Business Machines Corporation | Conditional transaction abort and precise abort handling |
KR20150123922A (ko) | 2013-03-07 | 2015-11-04 | 미쓰비시덴키 가부시키가이샤 | 엔지니어링 툴 |
US9824039B2 (en) * | 2013-09-09 | 2017-11-21 | International Business Machines Corporation | Signal interrupts in a transactional memory system |
US9207967B2 (en) * | 2014-01-07 | 2015-12-08 | Red Hat, Inc. | Using nonspeculative operations for lock elision |
US9465673B2 (en) * | 2014-02-27 | 2016-10-11 | International Business Machines Corporation | Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling |
US9817693B2 (en) | 2014-03-14 | 2017-11-14 | International Business Machines Corporation | Coherence protocol augmentation to indicate transaction status |
JP6438353B2 (ja) | 2015-05-27 | 2018-12-12 | ルネサスエレクトロニクス株式会社 | 半導体装置及び診断テスト方法 |
-
2017
- 2017-09-29 EP EP17386031.3A patent/EP3462312B1/en active Active
-
2018
- 2018-08-21 KR KR1020207010275A patent/KR102599689B1/ko active IP Right Grant
- 2018-08-21 JP JP2020516676A patent/JP7136888B2/ja active Active
- 2018-08-21 WO PCT/EP2018/072495 patent/WO2019063200A1/en active Application Filing
- 2018-08-21 IL IL273129A patent/IL273129B2/en unknown
- 2018-08-21 US US16/651,017 patent/US11663034B2/en active Active
- 2018-08-21 CN CN201880060737.9A patent/CN111133418B/zh active Active
- 2018-09-11 TW TW107131812A patent/TWI786181B/zh active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4478509A (en) * | 1976-04-15 | 1984-10-23 | Xerox Corporation | Control system and interface for electrostatographic machines |
US6024486A (en) * | 1996-06-05 | 2000-02-15 | Compaq Computer Corporation | Data error detection and correction |
US20010047470A1 (en) * | 1998-02-20 | 2001-11-29 | Franck Roche | Management of interrupts each having hardware and software priorities in a microprocessor |
US20070255876A1 (en) * | 2006-04-28 | 2007-11-01 | Nec Electronics Corporation | Interrupt control circuit and method |
US20130282972A1 (en) * | 2012-04-18 | 2013-10-24 | Samsung Electronics Co., Ltd. | Programmable memory controller |
CN104714836A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 用于聚结内存事务的方法和系统 |
CN104714848A (zh) * | 2013-12-12 | 2015-06-17 | 国际商业机器公司 | 利用用于聚结内存事务的指示的方法和系统 |
US20160378543A1 (en) * | 2015-06-27 | 2016-12-29 | Vmware, Inc. | Implementing pseudo non-masking interrupts behavior using a priority interrupt controller |
US20170177338A1 (en) * | 2015-12-18 | 2017-06-22 | International Business Machines Corporation | Management of asynchronous interrupts in a transactional memory multiprocessor environment |
Also Published As
Publication number | Publication date |
---|---|
EP3462312B1 (en) | 2022-08-17 |
TW201915761A (zh) | 2019-04-16 |
IL273129B1 (en) | 2023-12-01 |
JP2020535512A (ja) | 2020-12-03 |
TWI786181B (zh) | 2022-12-11 |
US20200278882A1 (en) | 2020-09-03 |
JP7136888B2 (ja) | 2022-09-13 |
EP3462312A1 (en) | 2019-04-03 |
KR20200061361A (ko) | 2020-06-02 |
US11663034B2 (en) | 2023-05-30 |
WO2019063200A1 (en) | 2019-04-04 |
KR102599689B1 (ko) | 2023-11-08 |
IL273129B2 (en) | 2024-04-01 |
IL273129A (en) | 2020-04-30 |
CN111133418B (zh) | 2023-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111133418B (zh) | 在例外屏蔽更新指令之后允许未中止的事务处理 | |
TWI812750B (zh) | 交易式比較及丟棄指令 | |
CN112236750A (zh) | 处理支持事务存储器的设备中的独占式加载指令 | |
US10853223B2 (en) | Simulation of transactions | |
CN111164572B (zh) | 数据处理装置和方法 | |
TWI818114B (zh) | 用於異動式記憶體的設備與資料處理方法 | |
US11775297B2 (en) | Transaction nesting depth testing instruction | |
US20230315510A1 (en) | A technique for handling transactions in a system employing 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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |