CN107003897B - 监控事务处理资源的利用率 - Google Patents
监控事务处理资源的利用率 Download PDFInfo
- Publication number
- CN107003897B CN107003897B CN201580066445.2A CN201580066445A CN107003897B CN 107003897 B CN107003897 B CN 107003897B CN 201580066445 A CN201580066445 A CN 201580066445A CN 107003897 B CN107003897 B CN 107003897B
- Authority
- CN
- China
- Prior art keywords
- data
- transaction
- processing
- speculative
- monitoring
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 237
- 238000012544 monitoring process Methods 0.000 title claims abstract description 93
- 230000004044 response Effects 0.000 claims abstract description 16
- 238000011084 recovery Methods 0.000 claims description 44
- 238000000034 method Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 11
- 230000007246 mechanism Effects 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 3
- 206010000210 abortion Diseases 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/348—Circuit details, i.e. tracer hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
- G06F9/528—Mutual exclusion algorithms by using speculative mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
设备(2)可以具有用于执行从至少一个存储装置(10、12、14)访问数据的数据访问操作的处理元件(4)。处理元件可以具有至少一个支持事务处理的事务处理资源(10、18),其中数据访问在事务开始事件之后被推测性地执行,并且响应于事务结束事件,推测性结果被提交。当事务被处理时,监控电路(30)捕获指示事务处理资源(10、18)的利用程度的监控数据。
Description
技术领域
本技术涉及数据处理领域。
背景技术
数据处理设备可以支持事务处理,其中在事务开始事件之后,多个数据访问操作被推测性地执行,并且响应于稍后的事务结束事件,推测操作的结果被提交。
发明内容
从一方面看,本技术提供了一种设备,包括:处理元件,该处理元件执行从至少一个存储装置访问数据的数据访问操作;其中处理元件具有支持事务处理的至少一个事务处理资源,其中数据访问操作在事务开始事件之后被推测性地执行,并且响应于事务结束事件,推测性地执行的数据访问操作的结果被提交;并且所述设备包括监控电路,该监控电路捕获事务被处理时指示至少一个事务处理资源的利用程度的监控数据。
从另一方面来看,本技术提供了一种设备,包括:处理装置,该处理装置执行从至少一个存储设备装置访问数据的数据访问操作;其中处理装置具有支持事务处理的至少一个事务处理资源装置,其中数据访问操作在事务开始事件之后被推测性地执行,并且响应于事务结束事件,推测性地执行的数据访问操作的结果被提交;并且所述设备包括监控装置,该监控装置捕获所述事务被处理时指示至少一个事务处理资源装置的利用程度的监控数据。
从另一方面来看,本技术提供了一种数据处理方法,包括:响应于指示事务开始的事务开始事件,推测性地执行用于访问至少一个存储装置中的数据的一个或多个数据访问操作;响应于指示事务结束的事务结束事件,提交事务的推测性地执行的数据访问操作的结果;以及捕获在事务的处理期间指示至少一个事务处理资源的利用程度的监控数据。
从另一方面来看,本技术提供了一种设备,包括:处理元件,该处理元件执行从至少一个存储装置访问数据的数据访问操作;用于存储状态数据的多个状态存储元件;以及恢复存储电路,该恢复存储电路用于存储用于将先前状态数据恢复到所述状态存储元件中的至少一个的恢复数据;其中,处理元件支持事务处理,其中数据访问操作在事务开始事件之后被推测性地执行,并且响应于事务结束事件,推测性地执行的数据访问操作的结果被提交,并且当在事务结束事件之前发生中止事件时,恢复操作被执行以基于存储在恢复存储电路中的恢复数据将先前状态数据恢复到状态存储元件的所述至少一个;其中恢复存储电路具有用于存储比所述多个状态存储元件的总数更少的状态存储元件的恢复数据的容量。
从另一方面来看,本技术提供了一种设备,包括:处理装置,该处理装置执行从至少一个存储数据的存储装置访问数据的数据访问操作;用于存储状态数据的多个状态存储元件装置;以及恢复存储装置,该恢复存储装置用于存储用于将先前状态数据恢复到所述状态存储元件装置中的至少一个的恢复数据;其中,处理装置支持事务处理,其中数据访问操作在事务开始事件之后被推测性地执行,并且响应于事务结束事件,推测性地执行的数据访问操作的结果被提交,并且当在事务结束事件之前发生中止事件时,恢复操作被执行以基于存储在恢复存储装置中的恢复数据将先前状态数据恢复到所述状态存储元件装置的所述至少一个;其中恢复存储装置具有用于存储比所述多个状态存储元件的总数更少的状态存储元件的恢复数据的容量。
从另一方面来看,本技术提供了一种用于包括多个状态存储元件的设备的数据处理方法,该方法包括:响应于指示事务开始的事务开始事件,推测性地执行用于访问至少一个存储装置中的数据的一个或多个数据访问操作;存储用于将先前状态数据恢复到所述状态存储元件中的至少一个的恢复数据;响应于指示事务结束的事务结束事件,提交事务的推测性地执行的数据访问操作的结果;并且当在事务结束事件之前发生中止事件时,使用恢复数据执行恢复操作以将先前状态数据恢复到所述状态存储元件中的所述至少一个;其中用于存储恢复数据的恢复存储电路具有用于存储比所述多个状态存储元件的总数少的状态存储元件的恢复数据的容量。
附图说明
从以下结合附图阅读的实施例的描述中,本技术的其它方面、特征和优点将变得显而易见,其中:
图1示意性地示出了数据处理设备的示例;
图2示出了监控推测性结果数据存储库的利用率的示例;
图3示出了监控状态恢复存储装置的利用率的示例;
图4示出了处理事务的方法;
图5示出了在处理元件上运行的控制程序的示例;以及
图6示出了基于监控数据来调度事务处理的方法。
具体实施方式
处理元件可以具有支持事务处理的至少一个事务处理资源。事务处理资源可以在处理元件内或作为处理元件可以访问的外部资源提供。资源的利用率可能因事务而异。有时,事务可能只需要一部分可用事务处理资源,而其他事务可能会更充分地使用资源。监控电路被提供以捕获指示在事务被处理时由处理元件对至少一个事务处理资源的利用程度的监控数据。该监控数据对于一系列目的可能是有用的,例如对处理元件的操作进行调度,或者在事务被执行时调试处理元件。
事务的开始和结束可以分别由事务开始事件和事务结束事件来指示。在事务开始事件和事务结束事件之间执行的数据处理操作可以被推测性地执行,使得它们的结果在事务结束事件发生之后才提交。事务开始和结束事件可以以各种方式发生,例如当外部信号被接收到时,或者当特定寄存器被访问时。然而,在一个示例中,事务开始事件和事务结束事件可以在当相应的事务开始指令或事务结束指令被运行时发生。以这种方式,程序员或编译器可以使用事务开始/结束指令来表示事务的开始或结束。
如果在事务开始之后,在事务结束事件之前发生中止事件,则事务可以被中止,并且推测性地执行的数据访问操作的结果可能被丢弃。处理元件还可以倒退自事务开始以来发生的状态数据的改变。为了支持这一点,设备可以具有用于存储数据的备份版本的状态恢复电路,如果在事务期间发生中止事件,则该备份版本可以被恢复。
可以以不同的方式保存状态恢复数据。在某些情况下,可以在事务开始事件时保存所有的状态恢复数据。或者,为了减少与状态保存和恢复相关联的存储和处理开销,状态数据不需要直接响应于事务开始事件而被保存,但是随着事务的进行,每当一个状态数据被修改时,状态数据的旧版本可被保存为状态恢复数据,从而不需要保存未被事务修改的数据。
中止事件可能有很多原因。一个原因可能是检测到冲突。例如,事务可被用来确保一组操作以原子方式执行,使得在事务正在进行时,没有其他进程可以更新事务中访问的数据。如果另一个进程尝试访问与事务中访问的地址相同的地址,则可能会检测到冲突,并且可能会触发中止事件以中止事务并执行状态恢复。以这种方式,如果在事务期间没有检测到冲突,则允许事务完成。为了支持冲突检测,设备可以具有用于检测冲突的冲突检测电路,冲突检测电路例如通过存储在事务中已被访问的地址的记录并且在另一个数据访问尝试访问相同的地址的情况下触发中止事件来检测冲突。
因此,事务处理可能需要提供各种资源,例如用于维护状态恢复数据、跟踪处理操作的推测性结果或跟踪冲突的存储装置或电路。监控电路可以捕获指示这些类型的资源的利用率的监控数据。
例如,事务处理资源可以包括用于存储指示对事务的数据访问操作的推测性结果的跟踪数据的推测性结果跟踪电路。例如,推测性结果跟踪电路可以包括缓存(其可以是用于推测性结果的专用缓存或可以是也存储非推测性数据的共用缓存)。监控数据可以捕获关于推测性结果跟踪电路(缓存)的利用率的各种信息。
例如,缓存中用于存储针对事务的跟踪数据的存储位置的数量(这可以使用存储位置的绝对数量来表示,或以缓存的总容量的百分比或分数表示)可被记录。此外,如果缓存是组关联(set-associative)的,则监控电路可以检测用于存储推测性结果跟踪数据的组数或组内用于跟踪数据的路数。特别地,在事务过程中使用的最大组数或路数可被记录。这可用于确定是否需要更高关联性的缓存或更大缓存来执行事务,或者是否可能使用更低关联性的缓存或更小缓存来处理事务。
捕获的监控数据的另一示例可以是指示由推测性结果跟踪电路跟踪的推测性结果的什么部分与读操作或写操作有关的数据。一些处理元件可以具有压缩机制(例如,Bloom过滤器),其可以用于将多个读操作的推测性结果压缩到更少量的数据中,但是对于写操作可能是不可能的。通过捕获指示特定事务的推测性数据是由读支配还是由写支配的数据,这可以用于确定使用具有压缩机制的处理元件执行事务是否更有效。例如,监控数据可以指示跟踪数据的哪部分与读有关,哪部分与写有关,或者可以指示读写比率,或指示读或写之间的平衡的一些其他参数。
事务处理资源的另一示例可以是恢复存储电路,用于存储指示处理元件的状态数据的先前版本的恢复数据,如果发生中止事件,先前版本可被恢复。监控电路可以跟踪恢复存储电路的利用率,例如通过指示恢复存储电路的多少存储元件已被用于事务,或者处理元件的多少存储元件(例如寄存器)已经将它们的状态保存到恢复存储电路。这可用于确定给定事务是否需要具有更大恢复存储电路的处理元件或者可以以更少的恢复存储容量来执行。
在一些情况下,事务可以由处理元件使用事务处理资源处理。因此,在事务期间,由处理元件执行的数据访问操作可以推测性地执行,直到事务中止或事务结束为止。事务处理资源可以是处理元件用于支持事务处理的任何资源,诸如上述各种类型的数据存储装置。
然而,在其他示例中,事务处理资源本身可以处理事务,而不是由处理元件处理事务。例如,事务处理资源可以是专用于处理事务的事务处置处理元件或事务加速器,并且包括以上讨论的用于支持事务处理的各种类型的存储装置。在这种情况下,遇到事务开始事件的处理元件可能请求事务处理资源代表其处理事务,并且事务处理资源于是可以在事务处理期间执行推测性数据访问操作。由事务处置处理元件或事务加速器提供的对各种事务处理资源的利用率可以由监控电路监控。
由监控电路捕获的监控数据可用于设备内的各种目的。
在一个示例中,监控数据可以用于确定一组所需数据访问操作是应该作为事务而使用至少一个事务处理资源来处理,还是应该使用不同的处理机制来处理。例如,如果给定的事务具有相对低的事务处理资源利用率,则使用另一种技术来处理事务可能更有效,以例如节省与跟踪推测性结果、状态保存/恢复或冲突检测相关联的开销。例如,替代处理机制可以是使用锁来确保对所需数据的独占访问,然后使用锁定的数据非推测性地执行处理,而不利用事务处理资源。例如,在设备内运行的控制程序可以确定事务的先前实例对资源的利用率是否超过使处理事务可行的特定阈值,并且如果利用率小于阈值,则在随后执行相同的操作时,可以用基于事务的机制以外的机制来执行操作。
监控数据的另一个示例用途可以是用于调试。例如,监控数据可以被存储在片上调试缓冲器中,或者通过调试接口输出,使得调试器可以访问监控数据。调试器可以将调试指令注入到运行流水线中,以控制处理元件执行某些测试动作,然后观察设备的各种属性(包括跟踪事务处理资源的利用率的监控数据),以便确定处理元件如何运作,或识别潜在的问题。例如,如果调试导致事务执行,然后中止,则中止的原因可能不明显。中止的一个潜在的原因可能是处理事务的事务处理资源不足,例如事务产生了过多的推测性数据而使得没有更多的空间来跟踪任何更多的推测性结果,从而当另一个推测性结果要被存储时触发了中止。通过使监控数据指示调试器可访问的至少一个事务处理资源的利用程度,这可以帮助调试器确定事务处理资源是否不足是中止的原因,还是中止是由其他原因(例如地址冲突)引起。
一些系统可以仅具有一个可以执行事务的处理元件,并且上述监控数据的使用情况对于这样的系统可能是有用的。
然而,监控电路在具有多个处理元件的系统中可能是特别有用的。例如,处理元件可以是异构的,使得它们具有不同的事务处理资源量。例如,一个处理元件可以比另一处理元件具有更多的用于存储数据访问操作的推测性结果的空间(例如更大的缓存)。此外,一个处理元件可以比另一个处理元件的缓存具有有更大关联性的推测性结果缓存(其可能影响由于资源不足而导致事务中止的时间点)。此外,不同的处理元件可以具有可用于备份保存的状态版本的不同数量的状态恢复存储装置。如果在具有较少资源的处理元件上足以处理事务,则在此处理元件上调度事务可能更有效,使得具有更多资源的处理元件可以被保留以用于实际需要更多资源的事务。
因此,可以使用监控数据来执行处理元件对事务的调度。调度还可以考虑每个处理元件具有多少事务处理资源。例如,存储元件(例如,控制寄存器)可以包括指定用于每个处理元件的资源量的数据(例如,其缓存的大小/关联性)。在处理元件之一上运行的控制程序(例如应用、操作系统或管理程序)可以基于监控数据和/或定义可用于每个处理元件的资源的数据来选择哪个处理元件应该处理所选择的事务。
例如,如果监控数据指示对于使用第一处理元件处理所选择的事务的先前实例,由第一处理元件对事务处理资源的利用率小于给定阈值,则控制程序可以调度使用具有比第一处理元件少的事务处理资源的第二处理元件来进行后续对所选择的事务的处理实例。这节省了第一处理元件以便用于处理需要更多资源的事务,或者允许第一处理元件被置于省电状态。通常,具有更多资源的处理元件可能消耗更多的功率,因此利用具有最小资源量即能够处理事务的处理元件来处理事务可以更节能。
监控电路可以针对每个事务单独地捕获监控数据。因此,在事务的开始或结束时,可以重置监控数据,以便为后续事务捕获新的监控数据。为每个事务捕获的监控数据可以存储在监控历史存储库中,监控历史存储库可以例如保持针对一定数量的近期事务的监控数据。例如,每个事务可以通过其事务开始指令的地址或事务标识符来识别,并且捕获的监控数据可以与地址或事务标识符相关联地记录在历史存储库中。在随后执行相同的事务时,诸如操作系统的控制程序可以从监控历史存储库中具有相应地址或标识符的位置访问数据,以确定该事务应如何被调度。
如上所述,中止事件可能导致事务触发的推测性更改被倒退、状态恢复到先前的值。监控数据的一个用途可以是在所捕获的监控数据满足预定条件的情况下触发中止事件以暂停当前事务的处理。例如,如果监控数据指示事务处理期间的事务处理资源的利用率非常低,那么中止事务并使用具有较低开销的其他机制来执行所需操作可能会更有效。
触发中止事件的另一原因可能是事务是否需要比为执行事务的处理元件提供的事务处理资源更多的事务处理资源。监控数据可用于检测这种情况。
在另一示例中,处理元件可以具有恢复存储电路,用于存储指示在事务中止的情况下要恢复状态的恢复数据。在一些情况下,恢复存储电路的容量可能小于备份来自处理元件的所有存储元件的数据所需的容量。因此,如果事务修改超过处理元件的一定数量的存储元件,则事务将中止。限制所提供的恢复存储装置的数量似乎是反常规的(counter-intuitive),因为这可能会导致某些事务中止(在提供了饱满的恢复存储装置的情况下,这些事务将不会中止),这可能会降低处理速度。然而,在实践中,需要大量恢复存储装置的事务的数量可能相对较小。在具有多个处理元件的系统中,仅为处理元件中的一些提供饱满的恢复存储能力并且为至少一个其他处理元件提供更有限容量的恢复存储电路可以是足够的。当事务需要完全存储时,它可以在较大的处理元件中的一个上运行,但是适合在较小处理元件中提供的恢复存储装置内的大多数其他事务可以使用较小的处理元件。这可以使整个系统更节能。
图1示意性地示出了数据处理设备2的示例,该数据处理设备2包括两个处理元件4-0、4-1,其在本例中是处理器核心。每个处理元件4具有用于执行数据处理操作的处理电路6、用于存储由处理电路6处理的数据值的一组寄存器8和一级(L1)缓存10。L1缓存10用于存储来自两个处理元件4之间共享的二级(L2)缓存12的数据或来自主存储器14的数据的缓存版本。每个核心还具有用于存储指示相关联的处理器核心4的属性的控制或状态信息或用于配置核心4的操作的信息的控制/状态寄存器16。应当理解,每个核心可以包括图1中未示出的其他元件,核心4-0、4-1可以具有不同的组件,并且设备2可以包括其他元件,例如,两个以上的处理器元件。
处理元件4支持事务处理。这种技术可以被称为“事务性存储器”。事务从事务开始指令开始,并以事务结束指令结束。在事务开始指令和事务结束指令之间执行的数据访问操作被推测性地执行,并且推测性地执行的数据访问操作(例如读和写操作)的结果可以存储在执行事务的处理元件4的L1缓存10中。推测性结果可以用指示数据是推测性的并且不应该被写回到L2缓存12或存储器14中的标志在缓存10中标记。当遇到事务结束指令时,缓存10中的推测性数据可以被标记为非推测性的,然后可以进行对存储器的任何回写。
如果在事务结束事件之前发生中止事件,则事务被中止,并且L1缓存10中的推测性数据被丢弃或无效。对寄存器8中的寄存器状态的任何改变都可以倒退,使得处理元件4返回到其在事务开始事件时具有的状态。可以提供状态恢复存储装置18(例如第二组寄存器)用于备份来自寄存器8的数据。例如,来自寄存器8的数据可以响应于事务开始指令而被保存到状态恢复存储装置18,或者此保存可以以懒惰的方式进行以便事务开始被处理,并且每次寄存器8被更新时,该寄存器的旧值被保存到状态恢复存储装置18。通过“懒惰”状态保存方式,不需要承担在保存/恢复实际未由事务修改的寄存器中的开销。当中止事件发生时,可以使用存储在恢复状态存储装置18中的数据来恢复寄存器8的状态。
中止事件可能出于各种原因而发生,例如如果L1缓存10中的资源不足以存储任何进一步的推测性结果。然而,中止的常见原因可能是检测到作为事务的一部分执行的数据访问与另一数据访问之间的冲突。核心可以具有冲突检测电路20,其跟踪在事务期间访问的地址,并且如果不是事务的一部分的另一数据访问(例如由其他处理元件4发起的数据访问)尝试访问与事务中访问的地址之一相同的地址,则通报冲突。事务性存储器技术通常用来维护对数据的独占访问,以便可以以原子方式执行一系列操作,而不会有其他介入访问来干扰事务开始和事务结束之间的数据。因此,如果检测到冲突,则这可能触发中止事件,并且状态恢复电路18可用于将状态恢复到寄存器8,并且可以从L1缓存10中丢弃推测性结果。以这种方式,事务可以只有在没有冲突的数据访问时才成功完成。
不同的处理元件可以具有不同的用于支持事务处理的事务处理资源量。例如,如图1所示,处理元件4-0可以具有比另一处理元件4-1更大的L1缓存10。这意味着处理元件4-0可以处理更多的推测性数据,但是更大的缓存也可能消耗更多的功率。
在另一示例中,一个处理元件4-0可以具有与其他处理元件4-1相比具有更大关联性的缓存10。例如,缓存10-0可以是4路缓存,但是缓存10-1可以是2路缓存。关联性是可以存储具有特定地址的数据值的可能位置的数量。具有较大关联性的缓存通常比具有较小关联性的缓存消耗更多的能量,因为当缓存被查找特定地址时,更多的位置将其标签与地址的标签部分进行比较,以确定该位置是否存储所需数据。然而,当处理事务时,如果缓存具有较大的关联性,则事务更不太可能中止,因为更不太可能用于存储具有给定地址值的推测性结果的所有位置都已被占用。
不同的事务处理资源的另一示例可以是状态恢复存储装置18。一个处理元件4可以比另一个具有更大的状态恢复存储容量。例如,在一些处理元件4中,状态恢复存储装置可能无法备份处理元件4的所有寄存器8。
因此,不同的处理元件可能具有用于处理事务的不同资源。一些状态信息可以存储在设备内(例如,存储在每个处理元件4的控制/状态寄存器16内),以指示哪些事务处理资源可用于每个处理元件4(例如,L1缓存10的大小或关联性,或者可以在状态恢复存储装置18中备份的寄存器的数量)。
此外,每个处理元件4具有监控电路30,以跟踪处理元件4在处理事务时对相应事务处理资源的利用率。可以为处理的每个事务分别捕获监控数据,然后将监控数据存储到可在处理元件之间共享的监控历史存储库50。在处理元件之一上运行的诸如操作系统或管理程序之类的软件可以使用监控数据来控制对相应处理元件4的事务和其他操作的调度,使得可以更有效地使用可用资源。例如,事务可以在具有相对大量的事务处理资源的处理元件上完成,但是可能没有使用全部容量的可用资源。此事务可能能够运行在具有较少资源的另一个处理元件上。通过使用监控电路30对此进行跟踪,相同事务的后续执行可以迁移到具有更少资源的处理元件,从而可以更有效地处理事务(例如,使用更节能的缓存)。
图2示出了捕获指示L1缓存10的利用率的监控数据的示例。在组关联缓存中,每个地址包括标识对应的位置“组”60的索引部分,并且相应的数据可以被放置在这些位置中的任一个中。在给定组60内的每个位置被称为“路”62。在图2的示例中,缓存是4路组关联缓存,这意味着每个组包括4个位置(路)。地址的“标签”部分可以与数据值一起存储,以指示映射到同一组的若干地址中的哪个地址是数据的实际地址。当在缓存中搜索数据时,地址的索引部分用于选择对应的组60,并且该地址的标签部分被与为所选择的组60的每个路62存储的标签部分进行比较,以识别数据是否存储在缓存中。
如图2所示,监控电路30可以跟踪在事务处理期间在L1缓存中用于存储推测性结果的组60的最大数量或路62的最大数量。在该示例中,目前用于推测性数据的组60的数量为4,给定组中使用的路62的最大数量为2。监控电路30还可以跟踪用于推测性数据的位置的总数(例如在该示例中为6),或表示指示读操作或写操作的结果的推测性数据的分数的参数(例如,在该示例中为推测性数据的三分之二与读有关)。
图3示出了跟踪事务处理资源的利用率的另一示例。恢复状态存储装置18可以包括用于存储用于将状态恢复到对应的寄存器8的恢复数据的多个位置。监控电路30可以将关于多少寄存器已将其状态保存到恢复状态存储装置18的计数(例如,在该示例中为3个寄存器)。
图4示出了使用给定处理元件处理事务并同时捕获指示事务处理资源的利用率的监控数据的方法。在步骤100,遇到标记事务的开始的事务开始指令。在步骤102,由监控电路30针对前一事务捕获的监控数据被重置,使得对于当前事务再次开始监控。
在步骤103,确定处理电路6是否要对尚未备份到状态恢复存储装置18的寄存器8中的一个进行更新。如果是,则在步骤104,该寄存器的先前值被保存到恢复状态存储装置18。在步骤105,监控电路30递增寄存器利用率计数值,该寄存器利用率计数值指示有多少寄存器已将其状态保存到恢复状态存储装置18中。该方法然后返回到步骤103。
如果不对尚未被备份到恢复存储装置的寄存器进行更新,则在步骤106确定是否存在数据访问操作。如果存在,则在步骤108,基于数据访问,更新L1缓存10的推测性数据。例如,对于读(加载)操作,可以从存储器获取数据值并将其写入到寄存器8之一(其可以触发与针对步骤104、105所述相同的方式的状态保存)。对于存储操作,来自寄存器8的数据值可以存储在L1缓存中并被标记为推测性的,以防止数据被写回到L2缓存12或存储器14。在步骤110,监控电路30基于L1缓存10中用于存储推测性数据的利用率来更新缓存利用率信息。例如,监控电路30可以更新指示用于推测性数据的组数或路数、使用的位置总数或与读或写操作有关的推测性结果的分数的数据。然后该方法返回到步骤103。
如果没有数据访问,则在步骤112确定是否已经发生中止事件。如果发生中止事件,则在步骤114,基于恢复状态存储装置18中指示的信息所确定的状态数据来恢复寄存器8,并且任何推测性数据从L1缓存10被丢弃或无效。然后该方法返回到步骤103。
如果没有发生中止事件,则在步骤16确定是否已经遇到事务结束指令。如果没有遇到事务结束指令,则返回步骤103。如果遇到事务结束指令,则在步骤118处,L1缓存中的任何推测性数据被提交并被标记为非推测性的,并且如果必要的话被写回到L2缓存12或存储器14。在步骤120,监控电路30捕获的监控数据被输出到监控历史存储库50。该方法然后返回到步骤100等待下一个事务开始指令。
因此,这种方法允许在事务处理期间监控事务处理资源的使用。应当理解,图4的示例中所示的操作是示例性的,并且可以以不同的顺序执行,或者至少部分地并行执行。
图5示出了在一个或两个处理元件上运行的控制软件的示例。例如,控制软件可以包括管理一个或多个客户操作系统202的管理程序200。每个操作系统202可以控制处理元件来运行一个或多个应用204。
应用204、操作系统202或管理程序200可以使用存储在历史存储库50中的监控数据来调度操作。例如,监控数据可用来选择处理元件4中的哪些要用来执行给定事务。此外,监控数据可以用于确定一组给定的数据访问操作是应该作为事务被执行,还是应该使用诸如使用锁的一些其他机制被执行。
图6示出了使用控制程序(例如可以是应用204、操作系统202或管理程序200)来调度操作的方法的示例。在步骤250,控制程序确定监控数据是否指示对于先前的运行实例,事务是以小于预定可行性阈值的资源利用率来处理的。如果是,则在步骤252,控制程序可以使用不需要事务处理资源(例如锁定机制)的机制来调度随后的所需操作的执行。因此,监控数据可用于识别哪个代码可能受益于作为事务运行,并相应地调度事务或非事务操作。
如果资源利用率大于可行性阈值,则在步骤254,控制程序可以确定资源利用率是否小于(或等于)对应于可用于处理元件4-1的资源量的第一阈值。如果是,则在步骤258,可以使用处理元件4-1调度事务。如果资源利用率大于第一阈值,则可以使用可能具有更大可用资源的处理元件4-0来调度事务。这样,如果事务需要足够小的资源以至于其可以使用处理元件4-1来处理,那么该处理元件4-1可以执行该事务,而处理元件4-0可以被保留以用于需要更多资源的事务。在步骤250和254处考虑的利用率阈值可以基于对于每个处理元件存储在寄存器16中的配置数据(此数据指示哪些资源可用于该处理元件)来确定。
尽管图6示出了利用率与单个阈值的比较,但是在实践中可以有利用率的许多方面要考虑,例如缓存是否具有处理事务足够的空间或关联性,以及恢复存储装置18是否具有足够的容量。因此,在某些情况下,可以有监控数据要满足的若干标准,以便调度事务以在给定处理元件上处理。调度事务的试探法在某些情况下可能比图6所示的简化示例更复杂。一般来说,监控数据可以根据系统设计人员的需要以任何方式被馈送给这些试探法。
如图1所示,监控数据的另一种用途可以是向调试接口300提供监控数据,调试接口300可以将监控输出输出到调试器。例如,调试器可以基于监控数据来确定事务中止的原因,这可以帮助确定中止是否由于事务处理资源不足而导致。
总之,事务性存储器需要额外的硬件资源来跟踪事务的推测状态(例如,存储器读和写以及架构寄存器状态)。在异构系统中,这些资源的容量可以在处理元件(PE)之间变化。
例如,考虑L1缓存。L1缓存可以在事务期间被用作维持推测性存储器状态的手段,使得在事务期间的任何存储器写仅被允许更新保持在处理元件本地L1缓存中的值,因此被注释为推测性的,以避免它们被写回到存储器中并且变得被其他PE看到。如果在事务期间发生存储器操作(该操作需要从L1缓存驱逐出推测性注释的行),则事务可能会中止,因为它不再能跟踪与PE的其他存储器操作的交互。由于推测性数据的驱逐而中止的事务被称为由于能力不足而中止。在异构系统中,PE之间的容量可能不同,因此“容量不足”可能不足以理解事务是否可以在任何其他PE上完成。
相反,事务可以在资源丰富的PE上完成,但并不使用全部容量的可用资源。该事务可以能够在具有较少硬件资源的PE上运行。
通过添加一些可用于了解事务适合PE的计数器/提示,这些提示可被软件试探法用来确定在后续运行中在何处安排事务,或者是否尝试重试事务或退回到锁定代码。
考虑L1缓存的示例,系统可以提示如下:
·利用率-组,可以实现为介于0和缓存中的组数之间的数字。
·利用率-路,可以实现为介于0和缓存中的路数之间的数字。
给定这两个数字,没有完全利用缓存的事务可以尝试在具有较小缓存的PE上后续运行。如果资源被过度利用,但是该事务驻留在具有较少资源的核心上,则OS/应用可能希望定位到具有更多资源的核心(例如较大/较宽的组关联缓存L1缓存),并重新尝试该事务。
也可能使用推测事务之外的资源提示,例如跟踪缓存中的推测状态,使用此状态更新资源利用率,并使用利用率信息来确定代码是否可能受益于事务性运行。例如,作为默认情形,可以从锁定开始,并启动(boost)适合事务性存储器资源约束的那些事务。有了此知识,OS/应用可能希望对事务进行分组和阻止,从而吞吐量得以增大。
在本申请中,词语“配置为...”用于表示装置的元件具有能够执行定义的操作的配置。在这种情况下,“配置”是指硬件或软件的互连的布置或方式。例如,设备可以具有提供定义的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行功能。“配置为”并不意味着设备元素需要以任何方式进行更改才能提供定义的操作。
尽管本文参考附图已经详细描述了本发明的说明性实施例,但是应当理解,本发明不限于这些精确实施例,并且在不脱离由所附权利要求限定的本发明的范围和精神的情况下,可以由本领域技术人员在其中实现各种改变、添加和修改。
Claims (24)
1.一种数据处理设备,包括:
处理元件,该处理元件执行从至少一个存储装置访问数据的数据访问操作;
其中所述处理元件具有支持推测性事务处理的至少一个事务处理资源,其中数据访问操作在事务开始事件之后被推测性地执行,并且响应于事务结束事件,推测性地执行的数据访问操作的结果被提交;并且
所述设备包括监控电路,该监控电路在所述推测性事务的所述事务开始事件和所述事务结束事件之间推测性地执行的所述数据访问操作被处理时捕获指示所述至少一个事务处理资源的利用程度的监控数据。
2.根据权利要求1所述的设备,包括多个处理元件。
3.根据权利要求2所述的设备,其中,所述多个处理元件具有不同的事务处理资源量。
4.根据权利要求3所述的设备,包括至少一个存储元件,用于存储标识为所述多个处理元件中的每一个提供的事务处理资源量的数据。
5.根据权利要求2至4中任一项所述的设备,其中,在所述多个处理元件中的至少一个上运行的控制程序被配置为根据由所述监控电路捕获的监控数据来调度所述多个处理元件的推测性事务处理。
6.根据权利要求5所述的设备,其中,所述控制程序根据所述监控数据来选择所述多个处理元件中的哪个处理元件应处理所选择的推测性事务。
7.根据权利要求5所述的设备,其中,当所述监控数据指示对于使用第一处理元件处理所选择的推测性事务的先前实例,所述第一处理元件对所述至少一个事务处理资源的利用率小于预定阈值时,所述控制程序被配置为调度所选择的推测性事务的处理的后续实例使用具有比所述第一处理元件少的事务处理资源的第二处理元件。
8.根据权利要求1至4中任一项所述的设备,其中,在所述处理元件或另外的处理元件上运行的控制程序被配置为根据所述监控电路捕获的监控数据来确定是否一组数据访问操作应作为推测性事务而利用所述至少一个事务处理资源来处理。
9.根据权利要求1至4中任一项所述的设备,包括调试数据存储库和调试接口中的至少一个,调试数据存储库用于存储所述监控数据以供调试器进行外部访问,调试接口用于将所述监控数据的至少一些输出到所述调试器。
10.根据权利要求1至4中任一项所述的设备,其中,所述至少一个事务处理资源包括推测性结果跟踪电路,该推测性结果跟踪电路用于存储指示所述推测性地执行的数据访问操作的结果的跟踪数据。
11.根据权利要求10所述的设备,其中,所述推测性结果跟踪电路包括组关联缓存,并且所述监控数据指示以下至少之一:
用于存储所述跟踪数据的组关联缓存的组数;以及
同一组的组关联缓存中用于存储所述跟踪数据的路数。
12.根据权利要求10所述的设备,其中,所述监控数据指示所述推测性结果跟踪电路的多少存储位置用于存储所述跟踪数据。
13.根据权利要求10所述的设备,其中,所述监控数据指示表示推测性读操作的结果的跟踪数据的量或表示推测性写操作的结果的跟踪数据的量。
14.根据权利要求1至4中任一项所述的设备,其中,所述处理元件具有多个状态存储元件;并且
所述至少一个事务处理资源包括恢复存储电路,该恢复存储电路用于存储指示在所述事务开始事件发生时存储在所述处理元件的状态存储元件中至少一个的状态数据的恢复数据。
15.根据权利要求14所述的设备,其中,当所述事务结束事件之前发生中止事件时,所述处理元件将执行状态恢复操作,以基于存储在所述恢复存储电路中的恢复数据将状态数据恢复到所述状态存储元件中的所述至少一个。
16.根据权利要求14所述的设备,其中,所述监控数据指示状态存储元件的数量,这些状态存储元件的恢复状态数据已经存储于所述恢复存储电路中。
17.根据权利要求1至4中任一项所述的设备,其中,所述处理元件被配置为在所述事务结束事件之前发生中止事件时,倒退由所述推测性地执行的数据访问操作引起的改变。
18.根据权利要求17所述的设备,其中,所述处理元件被配置为在由所述监控电路捕获的监控数据满足预定条件的情况下触发所述中止事件。
19.根据权利要求17所述的设备,其中,所述处理元件被配置为在所述推测性事务需要比所述处理元件所提供的事务处理资源更多的事务处理资源的情况下触发所述中止事件。
20.根据权利要求15所述的设备,其中,所述恢复存储电路具有用于存储比所述多个状态存储元件的总数更少的状态存储元件的恢复数据的容量。
21.一种数据处理设备,包括:
处理装置,该处理装置执行从至少一个存储设备装置访问数据的数据访问操作;
其中所述处理装置具有支持推测性事务处理的至少一个事务处理资源装置,其中数据访问操作在事务开始事件之后被推测性地执行,并且响应于事务结束事件,推测性地执行的数据访问操作的结果被提交;并且
所述设备包括监控装置,该监控装置在所述推测性事务的所述事务开始事件和所述事务结束事件之间推测性地执行的所述数据访问操作被处理时捕获指示所述至少一个事务处理资源装置的利用程度的监控数据。
22.根据权利要求21所述的设备,还包括:
用于存储状态数据的多个状态存储元件装置;以及
恢复存储装置,该恢复存储装置用于存储用于将先前状态数据恢复到所述状态存储元件装置中的至少一个的恢复数据;
其中当在所述事务结束事件之前发生中止事件时,恢复操作被执行以基于存储在所述恢复存储装置中的恢复数据将先前状态数据恢复到所述状态存储元件装置的所述至少一个;
其中所述恢复存储装置具有用于存储比所述多个状态存储元件的总数更少的状态存储元件的恢复数据的容量。
23.一种数据处理方法,包括:
响应于指示推测性事务开始的事务开始事件,推测性地执行用于访问至少一个存储装置中的数据的一个或多个数据访问操作;
响应于指示推测性事务结束的事务结束事件,提交所述推测性事务的推测性地执行的数据访问操作的结果;以及
在所述推测性事务的所述事务开始事件和所述事务结束事件之间推测性地执行的所述数据访问操作的处理期间捕获指示至少一个事务处理资源的利用程度的监控数据。
24.根据权利要求23所述的方法,还包括:
存储用于将先前状态数据恢复到多个状态存储元件中的至少一个的恢复数据;以及
当在所述事务结束事件之前发生中止事件时,使用所述恢复数据执行恢复操作以将所述先前状态数据恢复到所述状态存储元件中的所述至少一个;
其中用于存储所述恢复数据的恢复存储电路具有用于存储比所述多个状态存储元件的总数少的状态存储元件的恢复数据的容量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB1422794.6A GB2533416A (en) | 2014-12-19 | 2014-12-19 | Monitoring utilization of transactional processing resource |
GB1422794.6 | 2014-12-19 | ||
PCT/GB2015/053570 WO2016097681A1 (en) | 2014-12-19 | 2015-11-24 | Monitoring utilization of transactional processing resource |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107003897A CN107003897A (zh) | 2017-08-01 |
CN107003897B true CN107003897B (zh) | 2021-06-29 |
Family
ID=54771150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580066445.2A Active CN107003897B (zh) | 2014-12-19 | 2015-11-24 | 监控事务处理资源的利用率 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10810039B2 (zh) |
CN (1) | CN107003897B (zh) |
GB (1) | GB2533416A (zh) |
WO (1) | WO2016097681A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10642644B2 (en) * | 2016-06-27 | 2020-05-05 | Intel Corporation | Memory management method and apparatus |
US20180004521A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Processors, methods, and systems to identify stores that cause remote transactional execution aborts |
GB2567433B (en) * | 2017-10-10 | 2020-02-26 | Advanced Risc Mach Ltd | Checking lock variables for transactions in a system with transactional memory support |
GB2570466B (en) * | 2018-01-25 | 2020-03-04 | Advanced Risc Mach Ltd | Commit window move element |
US10394716B1 (en) * | 2018-04-06 | 2019-08-27 | Arm Limited | Apparatus and method for controlling allocation of data into a cache storage |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346460A (zh) * | 2011-05-27 | 2012-02-08 | 运软网络科技(上海)有限公司 | 一种基于事务的服务控制系统及其控制方法 |
CN102959531A (zh) * | 2010-06-29 | 2013-03-06 | 中兴通讯(美国)公司 | 用于云基媒体自适应和代码转换服务的方法和系统 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8180977B2 (en) | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory in out-of-order processors |
US8631401B2 (en) * | 2007-07-24 | 2014-01-14 | Ca, Inc. | Capacity planning by transaction type |
US9104471B2 (en) * | 2007-10-15 | 2015-08-11 | International Business Machines Corporation | Transaction log management |
CN101739298B (zh) * | 2008-11-27 | 2013-07-31 | 国际商业机器公司 | 共享缓存管理方法和系统 |
US9092253B2 (en) * | 2009-12-15 | 2015-07-28 | Microsoft Technology Licensing, Llc | Instrumentation of hardware assisted transactional memory system |
US8479053B2 (en) * | 2010-07-28 | 2013-07-02 | Intel Corporation | Processor with last branch record register storing transaction indicator |
US8549504B2 (en) * | 2010-09-25 | 2013-10-01 | Intel Corporation | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region |
US8966324B2 (en) | 2012-06-15 | 2015-02-24 | International Business Machines Corporation | Transactional execution branch indications |
US9361111B2 (en) | 2013-01-09 | 2016-06-07 | Arm Limited | Tracking speculative execution of instructions for a register renaming data store |
US20140281236A1 (en) | 2013-03-14 | 2014-09-18 | William C. Rash | Systems and methods for implementing transactional memory |
US9294557B2 (en) | 2013-04-19 | 2016-03-22 | International Business Machines Corporation | Hardware level generated interrupts indicating load balancing status for a node in a virtualized computing environment |
CN103475520B (zh) | 2013-09-10 | 2017-04-26 | 聚好看科技股份有限公司 | 一种分布式网络中的事务处理控制方法及装置 |
-
2014
- 2014-12-19 GB GB1422794.6A patent/GB2533416A/en not_active Withdrawn
-
2015
- 2015-11-24 WO PCT/GB2015/053570 patent/WO2016097681A1/en active Application Filing
- 2015-11-24 US US15/537,015 patent/US10810039B2/en active Active
- 2015-11-24 CN CN201580066445.2A patent/CN107003897B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102959531A (zh) * | 2010-06-29 | 2013-03-06 | 中兴通讯(美国)公司 | 用于云基媒体自适应和代码转换服务的方法和系统 |
CN102346460A (zh) * | 2011-05-27 | 2012-02-08 | 运软网络科技(上海)有限公司 | 一种基于事务的服务控制系统及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
US20170329627A1 (en) | 2017-11-16 |
CN107003897A (zh) | 2017-08-01 |
WO2016097681A1 (en) | 2016-06-23 |
GB2533416A (en) | 2016-06-22 |
US10810039B2 (en) | 2020-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10073719B2 (en) | Last branch record indicators for transactional memory | |
KR101424902B1 (ko) | 무제한 트랜잭션 메모리(utm) 모드에서의 운영 체제(os) 전이들의 처리 | |
JP5964382B2 (ja) | 無限トランザクション型メモリ(utm)システムにおけるモード切り替えの実行 | |
KR101524446B1 (ko) | 하드웨어 제한에 기초한 조절가능한 트랜잭션 크기를 이용하여 코드를 동적으로 최적화하는 장치, 방법 및 시스템 | |
US8549504B2 (en) | Apparatus, method, and system for providing a decision mechanism for conditional commits in an atomic region | |
US8316366B2 (en) | Facilitating transactional execution in a processor that supports simultaneous speculative threading | |
CN107003897B (zh) | 监控事务处理资源的利用率 | |
CN107278296B (zh) | 用于响应于事务执行生成跟踪数据的装置和方法 | |
CN111133418B (zh) | 在例外屏蔽更新指令之后允许未中止的事务处理 | |
US11119925B2 (en) | Apparatus and method for managing capability metadata | |
TWI812750B (zh) | 交易式比較及丟棄指令 | |
CN112236750A (zh) | 处理支持事务存储器的设备中的独占式加载指令 | |
US9477515B2 (en) | Handling operating system (OS) transitions in an unbounded transactional memory (UTM) mode | |
US11379233B2 (en) | Apparatus and data processing method for transactional memory | |
Lai et al. | A Cache Coherence Protocol Using Distributed Data Dependence Violation Checking in TLS | |
Lai et al. | Applying formal verification to a cache coherence protocol in TLS | |
Strauss et al. | Conflict Exceptions: Providing Simple Parallel Language Semantics with Precise Hardware Exceptions |
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 |