CN116171432A - 监控存储器位置以识别存储在存储器位置处的数据是否已经被修改 - Google Patents
监控存储器位置以识别存储在存储器位置处的数据是否已经被修改 Download PDFInfo
- Publication number
- CN116171432A CN116171432A CN202180057752.XA CN202180057752A CN116171432A CN 116171432 A CN116171432 A CN 116171432A CN 202180057752 A CN202180057752 A CN 202180057752A CN 116171432 A CN116171432 A CN 116171432A
- Authority
- CN
- China
- Prior art keywords
- memory
- memory locations
- capacity
- address
- indication
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
- 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
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
-
- 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/30083—Power or thermal control instructions
-
- 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/1028—Power efficiency
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种装置,其包括:用于存储对共享存储器的第一组存储器位置的指示的地址存储电路;用于指示是否已经达到该地址存储电路的容量的容量指示器;以及监控电路,其用于监控该第一组存储器位置和该共享存储器的在另一存储电路中识别的第二组存储器位置,以识别存储在任一组存储器位置处的数据是否已经被修改。该监控电路响应于确定该数据已经被修改而生成对该数据已经被修改的指示,并且处理电路接收该指示并执行指定该共享存储器中的新存储器位置的地址的监控地址指令,以根据该容量指示器来更新该地址存储电路或该另一存储电路,从而指示该新地址。
Description
本技术涉及数据处理领域。
在一些数据处理系统中,多个处理元件(例如,多个处理单元或多组处理电路)经由互连件具有对共享结构的访问权限。这些共享结构可以包括共享存储器,并且要在处理元件之间传送的消息可以经由共享存储器来传送。例如,一个处理元件可以将供另一处理元件接收的消息写入到在共享存储器的专用区域中的存储器位置。然后,接收处理元件可以通过访问该存储器位置来接收消息。
从本技术的第一实施例来看,提供了一种装置,该装置包括:
地址存储电路,该地址存储电路用于存储对共享存储器的第一组存储器位置的指示;
容量指示器,该容量指示器用于指示是否已经达到该地址存储电路的容量;
监控电路,该监控电路用于监控该第一组存储器位置和该共享存储器的在另一存储电路中识别的第二组存储器位置,以识别存储在任一组存储器位置处的数据是否已经被修改,其中该监控电路响应于确定该数据已经被修改而生成对该数据已经被修改的指示;以及
处理电路,该处理电路用于接收对该数据已经被修改的该指示,并且执行指定该共享存储器中的新存储器位置的地址的监控地址指令,以:
基于该容量指示器来确定是否已经达到该地址存储电路的该容量;
响应于确定尚未达到该地址存储电路的该容量,更新该地址存储电路以指示将由该监控电路监控该新存储器位置;以及
响应于确定已经达到该地址存储电路的该容量,更新该另一存储电路以指示将由该监控电路监控该新存储器位置。
从本技术的第二实施例来看,提供了一种方法,该方法包括:
将对共享存储器的第一组存储器位置的指示存储在地址存储电路中;
提供容量指示器,该容量指示器用于指示是否已经达到该地址存储电路的容量;
监控该第一组存储器位置和该共享存储器的在另一存储电路中识别的第二组存储器位置,以识别存储在任一组存储器位置处的数据是否已经被修改;
响应于确定该数据已经被修改,生成对该数据已经被修改的指示;
在处理电路处接收对该数据已经被修改的该指示;以及
执行指定该共享存储器中的新存储器位置的地址的监控地址指令,以:
基于该容量指示器来确定是否已经达到该地址存储电路的该容量;
响应于确定尚未达到该地址存储电路的该容量,更新该地址存储电路以指示将由该监控电路监控该新存储器位置;以及
响应于确定已经达到该地址存储电路的该容量,更新该另一存储电路以指示将监控该新存储器位置。
从本技术的第三实施例来看,提供了一种用于控制主机数据处理装置以提供用于执行目标代码的指令执行环境的计算机程序,该计算机程序包括:
地址存储程序逻辑,该地址存储程序逻辑用于在该主机数据处理装置的存储器或寄存器中保持地址存储结构,以存储对共享存储器的第一组存储器位置的指示;
容量指示程序逻辑,该容量指示程序逻辑用于在该存储器或寄存器中保持容量指示器,以指示是否已经达到该地址存储结构的容量;
监控程序逻辑,该监控程序逻辑用于监控该第一组存储器位置和该共享存储器的在保持在该存储器或该寄存器中的另一存储结构中识别的第二组存储器位置,以识别存储在任一组存储器位置处的数据是否已经被修改,其中该监控程序逻辑响应于确定该数据已经被修改而生成对该数据已经被修改的指示;以及
指令解码程序逻辑,该指令解码程序逻辑用于解码该目标代码的指令,以控制该主机数据处理装置来执行数据处理;
其中该指令解码程序逻辑响应于指定该共享存储器中的新存储器位置的地址的监控地址指令,以:
基于该容量指示器来确定是否已经达到该地址存储结构的该容量;
响应于确定尚未达到该地址存储结构的该容量,更新该地址存储结构以指示将由该监控逻辑监控该新存储器位置;以及
响应于确定已经达到地址结构电路的该容量,更新该另一存储结构以指示将由该监控逻辑监控该新存储器位置。
从本技术的第四实施例来看,提供了一种装置,该装置包括:
用于存储对共享存储器的第一组存储器位置的指示的装置;
用于指示以下项的装置:是否已经达到用于存储对该第一组存储器位置的指示的该装置的容量;
用于监控以下项以识别存储在任一组存储器位置处的数据是否已经被修改的装置:该第一组存储器位置和该共享存储器的在用于存储的另一装置中识别的第二组存储器位置;
用于响应于确定该数据已经被修改而生成对该数据已经被修改的指示的装置;
用于接收对该数据已经被修改的该指示的装置;以及
用于执行指定该共享存储器中的新存储器位置的地址的监控地址指令以进行以下项的装置:
基于该容量指示器确定是否已经达到用于存储对该第一组存储器位置的指示的该装置的该容量;
响应于确定尚未达到用于存储对该第一组存储器位置的指示的该装置的该容量,更新用于存储对该第一组存储器位置的指示的该装置,以指示将由用于监控的该装置监控该新存储器位置;以及
响应于确定已经达到用于存储对该第一组存储器位置的指示的该装置的该容量,更新用于存储的该另一装置以指示将由用于监控的该装置监控该新存储器位置。
本技术的另外的方面、特征和优点将从结合附图阅读的示例的以下描述中显而易见,在这些附图中:
图1示意性地示出了其中多个处理元件经由互连件具有对共享存储器的访问权限的系统;
图2示出了本技术的地址存储电路和另一存储电路的示例,其中该另一存储电路包括高速缓存;
图3示出了包括硬件事务存储器字段的高速缓存的示例;
图4示出了本技术的地址存储电路和另一存储电路的示例,其中另一存储电路包括存储布隆过滤器的寄存器;
图5A是示出处理电路对监控地址指令的响应的流程图;
图5B是示出从第一组存储器位置或第二组存储器位置移除存储器位置的流程图;
图6是示出在使用布隆过滤器的示例中处理电路对监控地址指令的响应的流程图;
图7是示出在使用高速缓存的示例中处理电路对监控地址指令的响应的流程图;并且
图8示出了本技术的虚拟机具体实施。
在参考附图讨论实施方案之前,提供了对示例性实施方案以及相关联优点的以下描述。
在将消息写入共享存储器中的存储器位置时,向接收处理元件通知由发送处理元件发送的消息的一种方法是向该接收处理元件发送中断请求。在此方法中,接收处理元件响应于中断请求而停止执行当前进程并切换到执行中断服务例程,该中断服务例程包括用于访问共享存储器中的存储器位置以读取由发送处理元件写入的消息的指令。然而,由于触发处理元件停止执行当前进程,可能存在与此方法相关联的显著性能成本,特别是在当接收到中断请求时接收处理元件正在执行指令的情况下。此外,该方法对发送处理元件施加了约束:如果该发送处理元件未被布置成响应于将消息写入到存储器位置而发送中断请求,则接收处理元件将不知道并且因此将不读取该消息。
另一种方法是接收处理元件定期轮询共享存储器中预期写入消息的位置,以确定在这些位置处的数据是否已经被修改。这避免了发送处理元件触发中断的需要,但会消耗大量能量。这种方法还要求接收处理元件即使在不存在用于处理电路执行的指令时也保持处于通电状态,进一步增加了数据处理系统的能量消耗。
本技术旨在提供一种监控共享存储器中的位置的更有效的方法,而不会引发与在将消息写入到该共享存储器时触发中断相关联的性能成本。
根据一个示例性配置,提供了用于存储对共享存储器的第一组存储器位置的指示的地址存储电路。地址存储电路被布置用于存储例如第一组存储器位置的地址,该地址识别该第一组存储器位置。第一组存储器位置中的存储器位置由专用监控电路(例如,与处理电路分开)监控以识别对存储在那些位置处的数据的任何修改。提供单独的监控电路以监控第一组存储器位置使得处理电路能够将其资源集中于执行其他进程。如果不存在处理电路要执行的其他进程,则提供单独的监控电路允许该处理电路进入低功率模式,从而减少其能量损耗。
然而,发明人认识到,如果要由监控电路监控的存储器位置的数量超过地址存储电路的容量,就会出现问题。
处理这种情况的一种方法可以是默认处理电路系统通过定期轮询那些存储器位置来监控存储器位置。处理电路通常比监控电路具有对更多的资源的访问权限,使其能够监控更大数量的存储器位置。然而,如上所述,这种方法会消耗大量能量。
另选的方法可以是使用监控电路和地址存储电路来监控一些存储器位置,而处理电路通过轮询那些位置来监控其他存储器位置。然而,这仍需要处理电路即使在不执行指令时仍保持处于通电状态,且因此仍会消耗大量能量。
本技术提供了监控存储器位置的更节能的方法。具体地,在另一存储电路中识别第二组存储器位置,并且监控电路监控第一组存储器位置和第二组存储器位置两者,以识别存储在任一组存储器位置处的数据是否已经被修改。然后,监控电路响应于确定数据已经被修改而生成对数据已经被修改的指示,并且提供处理电路以接收该指示。
提供容量指示器以指示是否已经达到地址存储结构的容量。例如,容量指示器可以是电路(例如,(例如,经由AND门)检测表的特定条目是否具有特定值的电路)或者可以是在表或存储结构中的条目。处理电路响应于指定要由监控电路监控的新存储器位置的监控地址指令而基于容量指示器来确定是否已经达到地址存储电路的容量。当确定尚未达到地址存储电路的容量时,处理电路更新该地址存储电路以指示将由监控电路监控新存储器位置(例如,通过将对新存储器位置的指示存储在地址存储电路中而将该新存储器位置添加到第一组存储器位置)。当确定已经达到地址存储电路的容量时,处理电路改为更新另一存储电路以指示将由监控电路监控新存储器位置(例如,将新存储器位置添加到第二组存储器位置)。
使用容量指示器来指示何时已经达到地址存储电路的容量允许在另一存储电路中识别第二组存储器位置。这继而允许增加可以由监控电路监控的存储器位置的数量,这通过减少处理电路本身需要监控存储器位置的可能性来导致显著的功率节省。实现该技术所需的电路面积的增加可以是有限的,尤其是如果现有存储结构用于实现另一存储电路(尽管这不是必需的,另一存储电路可以是添加到装置的附加存储结构),因为容量指示器的添加在电路面积方面增加了有限的成本。因此,可以以与电路面积相关联的成本的有限增加来实现显著的功率节省。
在一些示例中,地址存储电路包括多个条目,每个条目被配置为存储对第一组存储器位置的指示中的一个指示,并且容量指示器被配置为指示已经达到地址存储电路的容量,除非该多个条目包括用于存储对新存储器位置的指示的至少一个可用条目。
例如,当地址存储电路中不存在用于存储对新存储器位置的指示的可用条目时,认为达到了地址存储电路的容量。
在一些示例中,容量指示器基于存储在地址存储电路中的值来指示是否已经达到地址存储电路的容量。
例如,当地址存储电路包括多个条目时,该条目中的一个条目用于通过存储取决于是否已经达到存储电路的容量的特定值(例如,单个位1或0)来指示是否已经满足地址存储电路的容量。使用地址存储电路中的条目来实现容量指示器允许在地址存储电路的大小的少量增加的情况下(例如,增加了单个条目或如果容量由1或0指示,则甚至增加了少至单个位)来实现本技术(尤其是容量指示器)。这允许用于监控地址的总容量显著增加,而电路面积有限增加(例如,监控电路能够监控的存储器位置的数量增加了几个(例如,多于一个)存储器位置,而地址存储电路的大小有限增加)。
在一些示例中,监控电路被配置为:响应于接收到识别第一组或第二组中的存储器位置的探听请求而识别数据已经被修改。
在这些示例中,探听请求可以用作对共享存储器中的数据已经被修改且由处理电路控制的任何高速缓存中的对应条目应被更新或使其无效以便保持高速缓存一致性的指示。利用现有高速缓存一致性系统(例如,探听请求)允许在典型系统中轻易实现本技术。
在一些示例中,另一存储电路被配置为:以与存储在地址存储电路中的对第一组存储器位置的指示不同的格式来存储对第二组存储器位置的指示。
例如,另一存储电路既不是具有与地址存储电路相同形式的单独地址存储电路,也不是添加到地址存储电路的附加条目,而是以与地址存储电路中指示的对第一组存储器位置的指示不同的格式来存储对第二组存储器位置的指示的附加的不同存储电路。不同格式是用于指示每个存储器位置的位的不同布置,例如,一种格式可以是存储完整的存储器地址,而另一种格式可以是使用高速缓存中设置的标记来指示存储器地址,而又一种格式可以包括将存储器地址合并到布隆过滤器中。通过以与第一组存储器位置不同的格式来存储第二组存储器位置,这些示例提供以更空间高效的方式和/或以利用处理系统中的现有结构的方式来存储对第二组存储器位置的指示的灵活性。
在一些示例中,另一存储电路包括高速缓存。
这些示例中的高速缓存是处理系统中的通用高速缓存(诸如数据高速缓存),而不是用于识别第二组存储器位置的专用高速缓存。通用高速缓存的示例包括存储对共享存储器中的存储器位置及从那些位置检索的数据的副本的指示的数据高速缓存。使用高速缓存来表示第二组存储器位置的这种方法允许将处理系统中的现有存储结构(例如,通用高速缓存,诸如数据缓存)用作另一存储电路。因此,可以以电路面积的有限增加来实现本技术。
在一些示例中,高速缓存包括指示第二组存储器位置的多个条目,其中这些条目中的每个条目与标签相关联,并且在执行监控地址指令期间,处理电路被配置为更新该高速缓存以指示将通过将与指示新存储器位置的新条目相关联的标签设置为预先确定的值来监控该新存储器位置。
例如,标签是与每个条目相关联的字段,例如,存储单个位的字段,该单个位被设置为取决于其相关联的存储器位置是否在第二组存储器位置中的特定值(例如,1或0)。此方法允许使用具有有限更改(例如,将单个字段(在一些示例中,单个位)添加到每个条目)的现有高速缓存来识别第二组存储器位置,使得本技术易于在典型处理系统中实现并且需要电路面积的有限增加。
在一些示例中,标签存储在事务存储器字段中,该事务存储器字段被配置为:指示与该标签相关联的已缓存的存储器位置是否在执行当前事务期间已经由处理电路访问或在完成执行该当前事务时将由该处理电路访问。
例如,事务是由处理电路原子地执行的一组指令。为了保持事务的原子性,处理电路保持由事务中的指令读取的地址(地址的读取集)和/或一旦事务完成处理电路就将向其写入数据的地址(地址的写入集)的记录;这允许处理电路监控在事务完成之前响应于该事务而被访问的存储器位置是否被其他进程访问,这将防止事务中的指令被原子地执行。在具有事务存储器字段的高速缓存中,在事务存储器字段中识别读取集和/或写入集(例如,通过将存储在事务存储器字段中的值设置为特定值)。在本技术的这些示例中,事务存储器字段中的全部或部分事务存储器字段(例如,读取集指示器、写入集指示器或两者)被重新用作标签以指示已缓存的存储器位置是否在第二组存储器位置中。这允许识别第二组存储器位置而不增加高速缓存的大小,因此允许以电路面积的有限增加来实现本技术。
可能发现以这种方式重新利用事务存储器字段是违反直觉的,因为会预期事务存储器字段应当保持可用于处理事务。然而,发明人认识到,在实施过程中,事务对于一些处理器来说是罕见的,因此重新利用事务存储器字段不一定对系统的性能具有显著影响。在特定示例中,当执行事务时,处理电路清除事务存储器字段,并默认通过连续轮询共享存储器来监控第二组存储器位置。
在一些示例中,监控电路响应于识别给定存储器位置的探听请求而基于该给定存储器位置在地址存储电路中被指示为处于第一组存储器位置中还是在高速缓存中被标记为处于第二组存储器位置中来识别数据已经被修改。
如上所述,以这种方式利用现有的高速缓存一致性系统(例如,探听请求)允许在典型的处理系统中轻易实现本技术。检查由探听请求识别的给定存储器位置是否是第一组存储器位置的一部分包括:针对存储在地址存储电路中的对第一组中的存储器位置的指示来检查该给定存储器位置(例如,通过访问地址存储电路),以及检查存储在该地址存储电路中的指示中的一个指示是否匹配对给定地址的指示。同时,检查给定存储器位置是否在第二组存储器位置中包括:识别该给定存储器位置是否存在于(例如)高速缓存中,并且如果存在,则确定与条目相关联的标签是否被设置。
在一些示例中,高速缓存是一级数据高速缓存。
这是实施方式细节,并且应当理解,在实施过程中,任何高速缓存都可以用于该目的。一级数据高速缓存是最接近处理电路的高速缓存,因此访问该高速缓存通常比沿存储器层级更向下的其他高速缓存更快。因此,使用一级数据高速缓存作为另一存储电路减少了检查给定存储器位置是否是第二组存储器位置的一部分所花费的时间,从而导致提高系统的性能。
在一些示例中,另一存储电路包括寄存器。
由于寄存器通常不占用大量空间(单个寄存器通常被配置为存储单个操作数),因此使用寄存器作为另一存储结构限制了实现本技术所需的电路面积。一种特别空间高效的方法是利用系统中现有的寄存器。在一些示例性情况下(例如,当处理电路处于低功率状态时),处理电路不利用所有可用寄存器,保留有可用于识别第二组存储器位置的至少一个寄存器。
在一些示例中,寄存器被配置为存储识别第二组存储器位置的布隆过滤器。
布隆过滤器例如是概率数据结构,可以针对该概率数据结构测试对存储器位置的指示以确定这些存储器位置是否是由布隆过滤器识别的第二组存储器位置的一部分。通常,针对布隆过滤器来测试值可以产生正误识确定(例如,存储器位置是第二组的一部分的不正确确定),但不产生负误识确定。布隆过滤器是特别空间高效的格式,其中要识别数据值集(例如,可以使用单个寄存器来识别多个存储器位置),这允许限制实现本技术的这些示例所需的电路面积的增加。实际上,可以由存储在单个寄存器中的布隆过滤器识别的数据值的数量理论上是无限的,但在实施过程中通常限制添加到布隆过滤器的数据值的数量,因为正误识发生的可能性随着布隆过滤器中的值的数量增加而增加。确定值是否是由布隆过滤器表示的值集的一部分所花费的时间(例如,确定存储器位置是否是第二组存储器位置的一部分所花费的时间)是恒定的,而不管表示多少值;这意味着还存在与使用布隆过滤器相关联的时间优势,因此可以使得检查存储器位置是否是第二组存储器位置中的一个位置所花费的处理时间量是确定的并且在大多数情况下与其他技术相比将被减少。因此,以这种方式使用布隆过滤器还允许提高系统的性能。
在一些示例中,布隆过滤器包括位阵列,并且在执行监控地址指令期间,处理电路响应于确定已经达到地址存储电路的容量而进行以下项:将至少一个散列函数应用于对新存储器位置的指示以识别布隆过滤器中的多个位位置;以及将该多个位位置中的每个位位置设置为预先确定的值。
这种示例中的布隆过滤器是存储在寄存器中的1和0的阵列(例如,集、系列),并且每个散列函数将输入值(例如,对新存储器位置的指示,诸如地址或地址的一部分)映射到该阵列中的单个位位置(位定位)或该阵列中的多个位位置,当输入值被添加到集时,位置中中的每个位位置被设置为预先确定的值(例如,1或0)。因此,将新存储器位置添加到第二组存储器位置是相对简单的操作,仅需要更新寄存器中的少量位。如上所述,由于可以使用单个寄存器来识别多个存储器位置的事实,因此这种方法也是特别空间高效的。
在一些示例中,监控电路响应于识别给定存储器位置的探听请求以响应于以下中的至少一者来确定数据已经被修改:当对该给定存储器位置的指示与存储在地址存储电路中的指示匹配时,确定第一组存储器位置包括该给定存储器位置;以及基于针对布隆过滤器来测试对该给定存储器位置的指示,确定第二组存储器位置能够包括该给定存储器位置。
如上所述,针对布隆过滤器来测试存储器位置允许确定存储器位置是否不在或可能在第二组存储器位置中,例如,正误识是可能的,但负误识是不可能的。然而,正误识在这些示例中不是特别成问题,因为它们不影响系统的功能正确性:尽管由于处理电路不必要地访问实际上未被修改的存储器位置,系统的性能受到正误识的轻微影响,但这并不阻止处理电路的正确操作。检查由探听请求识别的给定存储器位置是否是第一组存储器位置的一部分包括:针对存储在地址存储电路中的对第一组中的存储器位置的指示来检查该给定存储器位置(例如,通过访问地址存储电路),以及检查存储在该地址存储电路中的指示中的一个指示是否匹配对给定地址的指示。检查给定存储器位置是否可能是由布隆过滤器识别的第二组存储器位置的一部分包括:针对布隆过滤器测试对该给定存储器位置的指示(例如,通过将相同散列应用于对该给定存储器位置的指示,该相同散列用于将存储器位置添加到第二组),以及检查由该散列识别的位位置是否被设置为预先确定的值。因此,检查给定存储器位置是否可能是第二组的一部分(以及相关联的性能影响)所花费的时间是恒定的,而不管在第二组中包括多少存储器位置。
在一些示例中,监控电路是与处理电路分开的。
例如,监控电路是在硬件中与处理电路分开的结构。这允许提高系统的性能,因为处理电路可以集中于执行指令而不是监控第一组存储器位置和第二组存储器位置。另选地,如果处理电路没有指令要执行,则使监控电路作为硬件的单独的件允许处理电路进入低功率模式,从而降低其功率消耗,同时允许继续监控所监控的地址。
在一些示例中,处理电路响应于等待事件指令而进入低功率状态,直到处理电路接收到事件指示。
例如,处理电路进入低功率状态(例如,待机状态、节电模式)而监控电路不进入低功率状态,这是可以的,因为监控电路是与处理电路分开的。通过允许处理电路进入低功率状态而监控电路继续监控第一组存储器位置和第二组存储器位置,可以降低系统的功率消耗(例如,因为监控电路是用于监控第一组地址和第二组地址的专用电路,意味着其功率消耗可能低于处理电路的功率消耗,该处理电路适于执行更宽范围的操作)。
在一些示例中,事件指示包括对数据已经被修改的指示。
例如,处理电路被配置为:响应于接收到对数据已经被修改的指示而退出低功率状态。这允许降低功率消耗(通过允许处理电路进入低功率状态),同时仍允许向处理电路通知对存储在第一组存储器位置和第二组存储器位置处的数据的任何修改。
在一些示例中,第一组存储器位置和第二组存储器位置包括其他组处理电路能够向其写入将由处理电路读取的消息的存储器位置。
在包括均具有对共享存储器的访问权限的多个处理单元(例如,多组处理电路,也被称为处理元件)的系统中,处理单元能够通过在共享存储器的特定区域中写入消息来向彼此发送消息。接收处理单元通过访问相关存储器位置来接收消息。因此,每当在特定区域处的数据被修改时,通知处理电路是有益的。因此,在这些示例中,第一组存储器位置和第二组存储器位置是其他处理元件能够向其写入将由处理电路读取的消息的存储器位置,并且因此提供用于监控这些存储器位置的监控电路允许在消息由另一处理元件写入存储器时通知处理电路。
在一些示例中,第一组存储器位置和第二组存储器位置各自包括非连续存储器位置。
因此,第一组存储器位置和第二组存储器位置在存储器位置地址中包含一个或多个“间隙”,意味着这些存储器位置被单独地识别(例如,不是范围的一部分)。
在特定示例中,如果存储器区域包含地址位置A-B-C-D-E,那么第一组非连续存储器位置可以被定义为{A,B,E}或{B,D,E}或{A,B,C,E},因为所有这些集合包含起始地址与结束地址之间的一个或多个间隙。此类集合不能包括{A,B,C}或{D,E,F},因为这些不包含这样的间隙。也就是说,不能使用具有起点和终点的单个地址范围来完全定义第一组存储器位置和第二组存储器位置。
由于非连续存储器位置被独立地识别,所以将由监控电路监控的每个新存储器位置需要将新数据添加至地址存储电路或另一存储电路(例如,存储对新存储器位置的新指示)。本技术允许增加可以由监控电路监控的独立地识别的非连续的(例如,不连续的、不相交的)存储器位置的数量。
在一些示例中,在执行监控地址指令期间,在更新地址存储电路以指示将由监控电路监控新存储器位置之后,处理电路被配置为检查现在是否已经达到地址存储电路的容量,并且响应于确定现在已经达到地址存储电路的容量,处理电路被配置为更新容量指示器以指示已经达到地址存储电路的容量。
例如,每当将新存储器位置添加到第一组存储器位置时,处理电路检查地址存储电路是否已经达到其容量作为结果,并相应地设置容量指示器。这允许保持容量指示器的精度。
现在将参考附图描述具体实施方案。
图1示意性地示出了其中可以使用本申请所述的技术的数据处理系统2的示例。系统2具有共享对存储器8的访问权限的多个处理元件4、6。在此示例中,处理元件包括两个中央处理单元(CPU)4和网络接口控制器(NIC)6,但应当理解,这仅为一个示例,并且可以提供许多其他类型的处理元件,例如,图形处理单元(GPU)、显示控制器、直接存储器访问(DMA)控制器、外围输入/输出(I/O)控制器等。CPU 4、6是用于接收对数据已经被修改的指示和用于执行监控地址指令的处理电路的示例,并且主存储器8是共享存储器的示例。提供一致性互连件10以根据一致性协议来管理相应处理元件4、6之间的一致性。一些处理元件(诸如CPU 4)具有用于高速缓存来自存储器系统(例如,来自主存储器8)的指令或数据的一个或多个高速缓存12、13。虽然为了简洁,图1示出了具有单个1级数据高速缓存12和单个1级指令高速缓存13的每个CPU 4,但给定的处理元件可以具有多级高速缓存(例如,1级和2级高速缓存)。装置还包括至少一个系统级高速缓存14,其(例如)耦接到互连件10,该系统级高速缓存未被指定给特定处理元件但被定位为更靠近存储器系统。系统高速缓存14可以用于加速非缓存的处理元件(诸如本身不具有高速缓存的网络接口控制器6)对存储器系统的访问。
互连件10具有探听滤波器16,该探听滤波器跟踪哪个高速缓存保持来自特定地址的数据。探听滤波器16可以是精确的或者可以使用更近似的表示(例如,过滤器表示),其允许对给定地址被高速缓存在特定高速缓存中的一些正误识检测,但是不允许负误识(当数据被高速缓存但是这没有被过滤器检测到的情况)。在检测到从给定处理元件到给定地址的读取访问或写入访问时,一致性互连件10查找针对对应地址的探听滤波器16,并且识别可以保持数据的任何高速缓存,以及如果必要,将探听请求发送到对应高速缓存以询问由那些高速缓存保持的数据的一致性状态、返回对应数据值和/或触发无效。一致性协议定义当数据在特定一致性状态下保持在高速缓存中时对特定类型的事务将采取什么响应。例如,当数据在共享状态(该共享状态指示将要与其他高速缓存中的对应数据保持一致性)下被高速缓存时,则由一个处理元件对共享数据的写入将触发系统中别处的高速缓存中的对应数据的无效,以避免其他处理元件访问可能过时的信息。因此,互连件10可以与相应高速缓存或处理元件交换各种一致性协议事务(诸如读取、写入或探听事务)。
在CPU 4中的一个CPU 4上运行的一些软件进程将需要快速且高效地多路复用从其他参与者接收的许多通信流。这些通信流可以例如来自更新共享存储器的其他处理元件4、经由网络接口控制器6或外围I/O设备来自外部源或者来自在同一处理元件上执行的另一软件进程(例如,另一虚拟机)。例如,其他处理元件4可以通过向共享存储器8的特定区域写入数据来向CPU中的一个CPU发送消息。为了避免软件进程需要连续地轮询大量存储器位置(例如,为了检查来自其他处理元件的消息),图1中的每个CPU 4配备有用于存储定义共享存储器8中的要被监控改变的第一组存储器位置的监控数据的地址存储电路20和用于监控对存储器系统的访问的监控电路22。当监控电路22检测到地址存储电路20中指示的在存储器位置中的一个存储器位置中的数据改变时,监控电路22向对应CPU 4发送中断以通知CPU 4存储在所监控的地址中的一个所监控的地址处的数据已经改变,其中该中断是对数据已经被修改的指示的示例。地址存储电路20是用于存储对共享存储器的第一组存储器位置的指示的地址存储电路的示例,并且能够存储独立地定义非连续存储器位置的数量的监控数据,使得可以并行监控多个存储器位置的改变。监控电路22是用于监控第一组存储器位置和共享存储器的在另一存储电路中识别的第二组存储器位置以识别存储在任一组存储器位置处的数据是否已经被修改的监控电路的示例。
在架构级别处,处理电路(CPU)4支持指令集架构中的多个指令,该多个指令控制对地址存储电路20中的监控数据的设置和清除以及对哪些区域已经改变的报告。每个处理器4的指令解码器可以例如检测被取出用于处理的指令的操作码,并且当遇到监控地址指令(下文讨论)时,控制处理电路4以触发对地址存储电路20中的数据的更新。指令解码器还可以控制处理电路以从监控电路22请求对哪些存储器位置已经改变的报告。
因此,提供监控地址指令以允许CPU 4将存储器位置注册到CPU本地监控存储器(地址存储电路)20,使得对应监控电路22然后可以监视那些位置发生的改变,同时CPU可以进入低功率模式以等待被通知那些改变且不错过任何改变,这是可能的,因为监控电路22与CPU 4是分开的,因此可以在CPU处于低功率模式时继续监控存储器位置。
使用等待事件(WFE)指令,处理器可以被切换到节电状态(例如,低功率或待机模式),然后处理器4等待监控电路22发信号通知已经检测到改变。当监控电路22通知处理器事件已经发生时,将对在其处已经检测到改变的存储器位置的指示(例如,地址)添加到将由处理电路访问的地址的缓冲器或日志。
如图1所示,能够设置对监控存储器位置的请求的每个处理元件4配备有其自己单独的地址存储电路20和监控电路22。这允许将地址存储电路集成到由一致性互连件10管理的一致性方案中,使得在一些示例中根据相关一致性协议用一致性状态标记地址存储电路20中的条目,从而使得响应于对应地址中的数据的改变而将探听这些条目。此外,除了主动监控存储器位置之外(或代替主动监控存储器位置),监控电路22还可以被布置用于拦截由一致性互连件12发送的探听请求以识别已经被修改的存储器位置。
发明人认识到,如果在达到地址存储电路20的容量时处理电路4执行指定将由监控电路22监控的新地址的监控地址指令,则可能出现问题。在这种情况下,监控电路22在例如不牺牲当前正被监控的存储位置中的一个正被监控的存储器位置的情况下将不能监控由监控地址指令指定的新存储器位置。因此,仅在超过地址存储电路20的容量之前才提供由监控电路22和地址存储电路20提供的性能益处。
为了解决此问题,可以增加地址存储电路20的大小或提供用于存储地址监控数据的附加存储电路。然而,这是以电路面积的显著增加为代价的。
相反,本技术通过在诸如高速缓存的现有存储结构中或在寄存器中以不同格式识别要监控的任何附加存储器位置来解决该问题。如将在以下示例中所述,不同格式是用于识别存储器位置的位的不同布置,例如,可以以完整存储器地址的形式识别第一组存储器位置,而可以在布隆过滤器中识别第二组存储器地址或将其识别为高速缓存中的标签集。因此,监控电路22监控两组存储器位置:由存储在地址存储电路20中的地址监控数据识别的第一组存储器位置以及在另一存储电路中识别的第二组地址。例如,另一存储电路可以包括数据高速缓存12或寄存器。此方法允许显著增加可以由监控电路22监控的存储器位置的数量,而不显著增加电路面积。
另一存储电路可以以多种方式中的任一种方式来实现。例如,图2示意性地示出了其中另一存储电路包括高速缓存24的示例。例如,这可以是图1所示的1级数据高速缓存12,但应当理解,也可以使用系统中的其他高速缓存。
如图2所示,提供地址存储电路20以存储对共享存储器中的要由监控电路22监控的第一组存储器位置的指示。这些指示可以采取任何形式,但在此示例中这些指示是地址。
地址存储电路20具有多个条目30,每个条目被配置为存储将由监控电路监控的第一组存储器位置中的存储器位置的地址。这些地址可以是直接识别共享存储器中的位置的物理地址或者这些地址可以是在可以访问对应存储器位置之前需要被转换成物理地址(例如,在存储器管理单元(MMU)内)的虚拟地址。
地址存储电路20还包括容量指示器32,该容量指示器指示是否已经达到地址存储电路20的容量。在此示例中,容量指示器32是存储在地址存储电路20中的附加条目(具体地,最终条目)中的值,该值在达到容量时被设置为预先确定的值。例如,当达到地址存储电路20的容量时(例如,每个条目30存储要监控的有效地址),容量指示器32可以被设置为1,并且在尚未达到容量时,容量指示器32可以被设置为0或者可以用于存储条目。然而,应当理解,这仅仅是可以使用的值的一个示例,并且在实施过程中,可以使用任何值来指示是否已经达到地址存储电路20的容量。容量指示器32是用于指示是否已经达到地址存储电路的容量的容量指示器的示例。
图2还示出了高速缓存24。高速缓存24包括多个条目34,每个条目包括表示共享存储器中的存储器位置的地址字段36和存储存储在对应存储器位置处的数据的高速缓存副本的数据字段38。应当理解,高速缓存24不一定需要存储完整地址,而是可以以另一形式存储对存储器位置的指示。尽管未示出,但在一些示例中,每个高速缓存条目34还包括指示每个条目34的一致性状态的一个或多个一致性字段。图2的示例中所示的高速缓存24是在每个组中包括四路的组相联高速缓存;然而,这仅仅是一个示例,并且应当理解,可以使用任何类型的高速缓存(例如,全相联的或直接映射的或具有其他路数的高速缓存)。每个条目34还包括受监控字段40(或受监控位),该受监控字段指示由存储在该高速缓存行的地址字段中的地址识别的存储器位置是否为将由监控电路监控的第二组存储器位置中的一个存储器位置。在一些示例中,受监控字段40存储单个位,该单个位被设置为第一值(例如,0)以指示在给定条目中识别的存储器位置不是第二组存储器位置的一部分或被设置为第二值(例如,1)以指示存储器位置是第二组的一部分。以这种方式添加受监控字段40允许系统中的现有高速缓存24(例如,1级数据高速缓存)适于指示将由监控电路监控的第二组存储器位置,而不显著增加电路面积,在此示例中,高速缓存的大小仅需要针对每个条目被扩展单个位。
然后,监控电路(未示出)被配置为监控第一组存储器位置(由存储在地址存储电路20中的地址识别)和第二组存储器位置(由高速缓存24中的修改字段40识别)两者以监控在那些存储器位置处的数据的改变。
当处理电路(CPU 4)执行识别要监控的新存储器位置的监控地址指令时(在图2中示出的示例中,新存储器位置在“地址X”处),该处理电路首先检查容量指示器32是否指示已经达到地址存储电路20的容量。如果容量指示器32指示尚未达到地址存储电路20的容量(例如,如果容量指示器32被设置为0),则处理电路通过将地址(地址X)存储在地址存储电路20的可用条目30中来将新存储器位置添加到第一组存储器位置。另一方面,如果容量指示器32指示已经达到地址存储电路20的容量,则处理电路改为通过在高速缓存24中定位新存储器位置并将对应受监控字段40设置为预先确定的值(例如,1)来将新存储器位置添加到第二组存储器位置。
以此方式,在仅少量增加电路面积的情况下(将单个条目添加到地址存储电路20以提供容量指示器32且将单个字段40添加到高速缓存24中的每个条目),可以显著增加可以由监控电路监控的非连续存储器位置的数量。
实现本技术所需的电路面积的增加可以通过重新利用高速缓存24中的现有字段来提供受监控字段40而变得甚至更小。例如,图3示出了包括一个或多个事务存储器字段42、44的高速缓存24。这些字段用于跟踪地址是在事务执行期间由处理电路跟踪的地址的读取集还是写入集的一部分。事务是由处理电路原子地执行的指令块,其中只有在事务中的其他指令成功执行时才在事务结束时提交对存储器(例如,存储库)的任何更新。跟踪在事务执行期间由处理电路访问的存储器位置,以确定在事务执行期间这些存储器位置是否已经被另一进程访问。在此示例中,处理电路跟踪对应于作为事务的一部分已经经历读取访问的存储器位置的地址读取集和对应于在事务完成时将被写入的存储器位置的地址写入集。
在本技术的一些示例中,事务存储器字段42、44中的一者或两者被重新利用以用作受监控字段,从而允许在高速缓存12中识别第二组中的存储器位置而不增加高速缓存的大小。
可能认为以这种方式重新利用事务存储器字段是违反直觉的,因为可能预期这将对事务的处理具有负面效应。然而,在某些情况下事务很少见,在这种情况下,事务存储器字段42和事务存储器字段44通常不被使用。例如,当处理电路被置于低功率状态时,处理电路将不处理事务,并且因此将不使用事务存储器字段42、44。因此,在此时可以以很少成本甚至不花费成本来重新利用这些字段。
当处理电路处理事务时,处理电路可以清除全部事务存储器字段并且默认通过连续轮询共享存储器来监控第二组中的存储器位置。另选地,如果仅事务存储器字段42、44中的一者用于指示第二组中的存储器位置,则处理电路可以使用其他事务存储器字段来处理事务。例如,通常监控地址读取集比监控地址写入集更重要,因为如果在事务期间访问读取集中的存储器位置,则这指示在事务期间从该位置读取的数据可能不是最新的。因此,在一些示例中,处理电路重新利用写入集字段44来指示第二组中的存储器位置,并且使用读取集字段42继续处理事务。
识别第二组存储器位置的另一存储电路可以如何被实现的另一个例子是使用寄存器。图4示出了本技术的示例,其中使用存储在寄存器48中的布隆过滤器46来识别第二组存储器位置。
布隆过滤器是可以用于测试元素(例如,数据值)是否可能是集的一部分的概率数据结构。通常,正误识是可能的,但是负误识是不可能的,例如,针对布隆过滤器测试值确定该值是明确地不在集中还是可能在集中。在此示例中,布隆过滤器46是存储在寄存器48中的位阵列。处理电路通过将多个不同散列函数47应用于数据值来将数据值添加到由布隆过滤器46表示的值集,其结果识别位阵列中的位位置集(例如,每个散列函数47识别一个或多个位位置)。然后,处理电路将由散列函数识别的每个位位置设置为设定值(例如,1)。为了检查值是否可能是由布隆过滤器识别的集的一部分,处理电路将相同散列函数应用于该值,并且检查由散列函数识别的位是否被设置为预先确定的值。
在图4所示的示例中,当由处理电路执行识别给定地址(地址X)的监控地址指令时,如果容量指示器32指示已经达到地址存储电路20的容量,则处理电路将该地址合并到存储在寄存器48中的布隆过滤器46中(例如,通过将散列函数47的集应用于该地址并且将由散列函数47识别的位设置为预先确定的值)。
布隆过滤器是空间高效的存储结构,能够在少量空间中存储大量数据值。在此示例中,可以使用单个寄存器48来指示将由监控电路监控的第二组存储器位置。这允许显著扩展可以由监控电路监控的存储器位置的数量,而不显著增加电路面积。此外,测试元素是否是由布隆过滤器所表示的元素集的一部分所花费的时间保持恒定,无论该集中有多少元素。因此,使用布隆过滤器46来识别第二组地址也节省了处理时间。
在一些示例中,寄存器48是处理电路可访问的一组现有寄存器中的一个现有寄存器,这更进一步减小了实现本技术所需的电路面积。
在到目前为止所述的示例中,使用第一组存储器位置和第二组存储器位置相关联的存储器地址(例如,地址存储电路20和高速缓存24存储第一组存储器位置和第二组存储器位置的地址)来识别要由监控电路监控的第一组存储器位置和第二组存储器位置,且以不同格式来识别第二组存储器位置的地址,该地址为合并到布隆中的输入值。
图5A是示出本技术的处理电路对监控地址指令的响应的示例的流程图。
该方法开始于确定是否将由监控电路监控新存储器位置的步骤S60。例如,处理电路确定是否已经接收到监控地址指令。当处理电路确定要监控新存储器位置时,该处理电路确定S62是否已经达到地址存储电路的容量。例如,处理电路检查容量指示器是否被设置为预先确定的值。如果已经达到容量,则处理电路在返回到步骤S60之前根据上述示例指示S64高速缓存或布隆过滤器中的新存储器位置。
另一方面,如果尚未达到地址存储电路的容量,则处理电路将对新存储器位置的指示(例如,地址)添加S66到地址存储电路。然后,在添加新存储器位置之后,处理电路检查S68现在是否已经达到地址存储电路的容量。如果尚未达到地址存储电路的容量,则该方法返回到S60。另一方面,如果现在已经达到容量,则在返回到步骤S60之前,处理电路更新S70容量指示器以指示已经达到地址存储电路的容量。步骤S66、S68和S70共同形成更新地址存储电路的步骤S73。
图5B是示出从第一组存储器位置或第二组存储器位置移除存储器位置的流程图。例如,这可以响应于指定不再被监控的存储器位置的特定结束监控指令。在此示例中,在高速缓存中指示第二组存储器地址。
该方法开始于确定存储器位置是要从第一组存储器位置还是从第二组存储器位置移除的步骤S61。当确定要移除存储器位置时,确定S63所讨论的存储器位置是在第一组存储器位置中(在地址存储电路中指示)还是在第二组存储器位置中(在另一存储电路中指示)。当在第一组中指示存储器位置时,从地址存储电路移除S67存储器位置。然后,确定S69容量指示器是否指示达到地址存储结构的容量。如果容量指示器没有指示达到容量,则该方法返回到步骤S61;如果容量指示器指示达到容量,则更新S71容量指示器以指示不再达到地址存储电路的容量(由于从地址存储电路移除存储器位置),并且该方法返回到步骤S61。
返回到步骤S63,如果确定存储器位置不在第一组中(例如,该存储器位置在第二组中),则在该方法返回到步骤S61之前,清除S65高速缓存行中的对应于要移除的存储器位置的受监控标签。如上所述,该示例假设在高速缓存中指示第二组存储器位置。替代地,如果在布隆过滤器中指示第二组,则当确定存储器位置在第二组中时,该方法直接返回到步骤S61,因为不能从布隆过滤器移除条目。在这种情况下,每当针对布隆过滤器测试存储器位置时,将返回正误识结果。
图6是示出根据本技术的一些示例的由处理电路执行的方法的流程图。该方法开始于确定是否将由监控电路监控新存储器位置的步骤S60。如果处理电路确定不存在要监控的新存储器位置(例如,如果未接收到监控地址指令),则该方法直接进行到确定是否已经接收到等待事件(WFE)指令的步骤S74。
另一方面,如果处理电路确定存在要监控的新存储器位置(例如,接收到监控地址指令),则处理电路确定S62是否已经达到地址存储电路的容量(例如,通过检查容量指示器是否具有预先确定的值)。如果尚未达到容量,则处理电路更新S73地址存储电路后继续到步骤S74。应当理解,尽管在图6和图7中没有明确示出步骤S668、S68和S70,但是这些步骤都将作为步骤S73的一部分而存在。另一方面,如果已经达到地址存储电路的容量,则处理电路改为将对新存储器位置的指示合并S72到布隆过滤器中,然后进行到步骤S74。
在步骤S74中,处理电路确定是否已经接收到WFE指令。如果尚未接收到WFE指令,则该方法返回到步骤S60。另一方面,如果已经接收到WFE指令,则处理电路通过确定S76事件(例如,在由监控电路监控的存储器位置中的一个存储器位置处的数据被改变)是否已经发生来执行WFE指令。如果事件已经发生,则该方法移动到步骤S84。
如果事件尚未发生,则处理电路进入S78节电模式(例如,低功率状态或待机状态),同时监控电路继续监控第一组存储器位置和第二组存储器位置。处理电路保持在节电模式中,直到其确定S80已经接收到事件通知。该示例中的事件通知包括由监控电路生成的对在由监控电路监控的存储器位置中的一个存储器位置处的数据已经被修改的指示,例如,这可能意味着来自另一处理电路的消息已经被写入该存储器位置。处理电路重复步骤S78和S80,直到接收到事件通知为止。
当已经接收到事件通知时,处理电路退出S82节电状态。在步骤S84中,处理电路然后识别哪些(如果有的话)存储器区域已经被修改。处理电路确定S86是否有任何存储器区域已经被修改,并且如果没有区域已经被修改,则返回到步骤S74。另一方面,如果一个或多个存储器区域已经改变,则处理电路将改变的存储器位置的地址添加S88到将由处理电路处理的地址的日志。
图7是示出由处理电路执行的另选方法的流程图。图7的方法与图6的方法相同,除了当处理电路确定S62已经达到存储电路的容量时,处理电路标记S94如在高速缓存中被监控的存储器位置(例如,通过将高速缓存中的受监控字段设置为预先确定的值)。任选地,如虚线所示,处理电路可以首先检查S90存储器位置是否被记录在高速缓存中,并且如果没有被记录,则根据正常的高速缓存逐出策略替换S92高速缓存中的条目。然而,这些步骤是任选的,因为预期存储器位置将存在于高速缓存中,处理电路可能已经响应于接收监控地址指令而访问存储器位置,此时存储器位置将被添加到高速缓存。因此,这些步骤不需要包括在将由指令指定的地址自动添加到高速缓存的系统中。
图8示出了本技术的模拟器具体实施。虽然先前所述的实施方案在用于操作支持所涉及的技术的特定处理硬件的装置和方法方面实现了本发明,但也可以提供根据本文所述的实施方案的指令执行环境,该指令执行环境是通过使用计算机程序来实现的。此类计算机程序通常被称为模拟器,在一定程度上是因为此类计算机程序提供硬件架构的基于软件的具体实施。模拟器计算机程序的种类包括仿真器、虚拟机、模型和二进制转换器,其包括动态二进制转换器。通常,模拟器具体实施在支持模拟器程序104的主机处理器100上运行,该主机处理器任选地运行主机操作系统102。在一些布置中,在硬件和所提供的指令执行环境和/或在同一主机处理器上提供的多个不同指令执行环境之间存在多个模拟层。在历史上,需要强大的处理器来提供以合理速度执行的模拟器具体实施,但这种方法在某些情况下是合理的,诸如当出于兼容性或重复使用原因而希望运行另一个处理器本地的代码时。例如,模拟器具体实施可以向指令执行环境提供主机处理器硬件不支持的附加功能,或者提供通常与不同硬件架构相关联的指令执行环境。模拟概述在以下文献中给出:“SomeEfficient Architecture Simulation Techniques”,Robert Bedichek,Winter1990USENIX Conference,第53-63页。
就先前已经参考特定硬件构造或特征描述了实施方案而言,在模拟的实施方案中,等效功能由合适的软件构造或特征提供。例如,特定电路系统可以在模拟的实施方案中被实现为计算机程序逻辑。类似地,存储器硬件诸如寄存器或高速缓存可以在模拟的实施方案中被实现为软件数据结构。在图8的示例中,这些包括:地址存储程序逻辑108,该地址存储程序逻辑用于保持表示(仿真)上述示例所述的地址存储电路的数据结构(在主机装置100的存储器或寄存器内);容量指示程序逻辑110,该容量指示程序逻辑用于保持上述示例所述的容量指示器;监控程序逻辑112,该监控程序逻辑用于仿真上述示例所述的监控电路;以及指令解码程序逻辑114,该指令解码程序逻辑用于仿真上述处理电路的指令解码器。在先前描述的实施方案中参考的硬件元件中的一个或多个硬件元件存在于主机硬件(例如,主机处理器100)上的布置中,在合适的情况下,一些模拟的实施方案可以利用主机硬件。例如,主机处理器130可以在硬件中包含执行图1的高速缓存12和高速缓存13和/或图2和图3的高速缓存24的功能的高速缓存。模拟器代码104还可以包括寄存器仿真逻辑(未示出)以保持表示系统2的寄存器的数据结构(在主机装置100的存储器或寄存器内)。在一些示例中,这包括存储上面一些示例中所述的布隆过滤器46的寄存器48。
响应于目标代码106的监控地址指令,指令解码程序逻辑114将监控地址指令映射到指令集中的一组指令以检查由容量指示程序逻辑110仿真的容量指示器,从而确定是否已经达到仿真地址存储电路的容量。当尚未达到容量时,将对由监控地址指令指定的新存储器位置的指示添加到由地址存储程序逻辑108保持的数据结构,而如果已经达到容量,则在高速缓存(例如,主机硬件100的高速缓存或在主机处理器100的存储器中或寄存器中保持的数据结构中的高速缓存)中或在存储于由寄存器仿真逻辑保持的数据结构中的布隆过滤器中指示新存储器位置。
在一些示例中,模拟器程序104存储在计算机可读存储介质(例如,非暂时性介质)上,并且向目标代码106(其可以包括应用程序、操作系统和管理程序)提供程序接口(指令执行环境),该程序接口与由模拟器程序104建模的硬件架构的接口相同。因此,目标代码106的程序指令(包括上述监控地址指令和WFE指令)可以使用模拟器程序102从指令执行环境内执行,使得实际上不具有上述装置2的硬件特征的主机计算机100可以仿真这些特征。
在本申请中,字词“被配置为…”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可以具有提供所限定的操作的专用硬件,或者可以对处理器或其他处理设备进行编程以执行该操作。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围和实质的前提下,本领域的技术人员可在其中实现各种变化和修改。
Claims (23)
1.一种装置,所述装置包括:
地址存储电路,所述地址存储电路用于存储对共享存储器的第一组存储器位置的指示;
容量指示器,所述容量指示器用于指示是否已经达到所述地址存储电路的容量;
监控电路,所述监控电路用于监控所述第一组存储器位置和所述共享存储器的在另一存储电路中识别的第二组存储器位置,以识别存储在任一组存储器位置处的数据是否已经被修改,其中所述监控电路响应于确定所述数据已经被修改而生成对所述数据已经被修改的指示;以及
处理电路,所述处理电路用于接收对所述数据已经被修改的所述指示,并且用于执行指定所述共享存储器中的新存储器位置的地址的监控地址指令,以:
基于所述容量指示器来确定是否已经达到所述地址存储电路的所述容量;
响应于确定尚未达到所述地址存储电路的所述容量,更新所述地址存储电路以指示将由所述监控电路监控所述新存储器位置;以及
响应于确定已经达到所述地址存储电路的所述容量,更新所述另一存储电路以指示将由所述监控电路监控所述新存储器位置。
2.根据权利要求1所述的装置,其中:
所述地址存储电路包括多个条目,每个条目被配置为存储对所述第一组存储器位置的所述指示中的一个指示;并且
所述容量指示器被配置为指示已经达到所述地址存储电路的所述容量,除非所述多个条目包括用于存储对所述新存储器位置的指示的至少一个可用条目。
3.根据权利要求1或权利要求2所述的装置,其中:
所述容量指示器基于存储在所述地址存储电路中的值来指示是否已经达到所述地址存储电路的所述容量。
4.根据任一前述权利要求所述的装置,其中:
所述监控电路被配置为:响应于接收到识别所述第一组或所述第二组中的存储器位置的探听请求而识别所述数据已经被修改。
5.根据任一前述权利要求所述的装置,其中:
所述另一存储电路被配置为:以与存储在所述地址存储电路中的对所述第一组存储器位置的所述指示不同的格式来存储对所述第二组存储器位置的所述指示。
6.根据任一前述权利要求所述的装置,其中:
所述另一存储电路包括高速缓存。
7.根据权利要求6所述的装置,其中:
所述高速缓存包括指示所述第二组存储器位置的多个条目,其中所述条目中的每个条目与标签相关联;并且
在执行所述监控地址指令期间,所述处理电路被配置为:更新所述高速缓存以指示将通过将与指示所述新存储器位置的新条目相关联的所述标签设置为预先确定的值来监控所述新存储器位置。
8.根据权利要求7所述的装置,其中:
所述标签存储在事务存储器字段中,所述事务存储器字段被配置为:指示与所述标签相关联的已缓存的存储器位置是否在执行当前事务期间已经由所述处理电路访问或在完成执行所述当前事务时将由所述处理电路访问。
9.根据权利要求7或权利要求8所述的装置,其中:
所述监控电路响应于识别给定存储器位置的探听请求,以基于以下来识别所述数据已经被修改:所述给定存储器位置在所述地址存储电路中被指示为处于所述第一组存储器位置中还是在所述高速缓存中被标记为处于所述第二组存储器位置中。
10.根据权利要求6至9中任一项所述的装置,其中:
所述高速缓存是一级数据高速缓存。
11.根据权利要求1至5中任一项所述的装置,其中:
所述另一存储电路包括寄存器。
12.根据权利要求11所述的装置,其中:
所述寄存器被配置为存储识别所述第二组存储器位置的布隆过滤器。
13.根据权利要求12所述的装置,其中:
所述布隆过滤器包括位阵列;并且
在执行所述监控地址指令期间,所述处理电路响应于确定已经达到所述地址存储电路的所述容量而进行以下项:
将至少一个散列函数应用于对所述新存储器位置的指示以识别所述布隆过滤器中的多个位位置;以及
将所述多个位位置中的每个位位置设置为预先确定的值。
14.根据权利要求12或权利要求13所述的装置,其中:
所述监控电路响应于识别给定存储器位置的探听请求以响应于以下中的至少一者来确定所述数据已经被修改:
当对所述给定存储器位置的指示与存储在所述地址存储电路中的指示匹配时,确定所述第一组存储器位置包括所述给定存储器位置;以及
基于针对所述布隆过滤器测试对所述给定存储器位置的所述指示,确定所述第二组存储器位置能够包括所述给定存储器位置。
15.根据任一前述权利要求所述的装置,其中:
所述监控电路与所述处理电路是分开的。
16.根据权利要求15所述的装置,其中:
所述处理电路响应于等待事件指令而进入低功率状态,直到所述处理电路接收到事件指示。
17.根据权利要求16所述的装置,其中:
所述事件指示包括对所述数据已经被修改的所述指示。
18.根据任一前述权利要求所述的装置,其中:
所述第一组存储器位置和所述第二组存储器位置包括其他组处理电路能够向其写入将由所述处理电路读取的消息的存储器位置。
19.根据任一前述权利要求所述的装置,其中:
所述第一组存储器位置和所述第二组存储器位置各自包括非连续存储器位置。
20.根据任一前述权利要求所述的装置,其中:
在执行所述监控地址指令期间,在更新所述地址存储电路以指示将由所述监控电路监控所述新存储器位置之后,所述处理电路被配置为:检查现在是否已经达到所述地址存储电路的所述容量;并且
响应于确定现在已经达到所述地址存储电路的所述容量,所述处理电路被配置为:更新所述容量指示器以指示已经达到所述地址存储电路的所述容量。
21.一种方法,所述方法包括:
将对共享存储器的第一组存储器位置的指示存储在地址存储电路中;
提供容量指示器,所述容量指示器用于指示是否已经达到所述地址存储电路的容量;
监控所述第一组存储器位置和所述共享存储器的在另一存储电路中识别的第二组存储器位置,以识别存储在任一组存储器位置处的数据是否已经被修改;
响应于确定所述数据已经被修改,生成对所述数据已经被修改的指示;
在处理电路处接收对所述数据已经被修改的所述指示;以及
执行指定所述共享存储器中的新存储器位置的地址的监控地址指令,以:
基于所述容量指示器来确定是否已经达到所述地址存储电路的所述容量;
响应于确定尚未达到所述地址存储电路的所述容量,更新所述地址存储电路以指示将由所述监控电路监控所述新存储器位置;以及
响应于确定已经达到所述地址存储电路的所述容量,更新所述另一存储电路以指示将监控所述新存储器位置。
22.一种计算机程序,所述计算机程序用于控制主机数据处理装置以提供用于执行目标代码的指令执行环境,所述计算机程序包括:
地址存储程序逻辑,所述地址存储程序逻辑用于在所述主机数据处理装置的存储器或寄存器中保持地址存储结构,以存储对共享存储器的第一组存储器位置的指示;
容量指示程序逻辑,所述容量指示程序逻辑用于在所述存储器或所述寄存器中保持容量指示器,以指示是否已经达到所述地址存储结构的容量;
监控程序逻辑,所述监控程序逻辑用于监控所述第一组存储器位置和所述共享存储器的在保持在所述存储器或所述寄存器中的另一存储结构中识别的第二组存储器位置,以识别存储在任一组存储器位置处的数据是否已经被修改,其中所述监控程序逻辑响应于确定所述数据已经被修改而生成对所述数据已经被修改的指示;以及
指令解码程序逻辑,所述指令解码程序逻辑用于解码所述目标代码的指令,以控制所述主机数据处理装置来执行数据处理;
其中所述指令解码程序逻辑响应于指定所述共享存储器中的新存储器位置的地址的监控地址指令,以:
基于所述容量指示器来确定是否已经达到所述地址存储结构的所述容量;
响应于确定尚未达到所述地址存储结构的所述容量,更新所述地址存储结构以指示将由所述监控逻辑监控所述新存储器位置;以及
响应于确定已经达到地址结构电路的所述容量,更新所述另一存储结构以指示将由所述监控逻辑监控所述新存储器位置。
23.一种装置,所述装置包括:
用于存储对共享存储器的第一组存储器位置的指示的装置;
用于指示以下项的装置:是否已经达到用于存储对所述第一组存储器位置的指示的所述装置的容量;
用于监控以下项以识别存储在任一组存储器位置处的数据是否已经被修改的装置:所述第一组存储器位置和所述共享存储器的在用于存储的另一装置中识别的第二组存储器位置;
用于响应于确定所述数据已经被修改而生成对所述数据已经被修改的指示的装置;
用于接收对所述数据已经被修改的所述指示的装置;以及
用于执行指定所述共享存储器中的新存储器位置的地址的监控地址指令以进行以下项的装置:
基于所述容量指示器确定是否已经达到用于存储对所述第一组存储器位置的指示的所述装置的所述容量;
响应于确定尚未达到用于存储对所述第一组存储器位置的指示的所述装置的所述容量,更新用于存储对所述第一组存储器位置的指示的所述装置,以指示将由用于监控的所述装置监控所述新存储器位置;以及
响应于确定已经达到用于存储对所述第一组存储器位置的指示的所述装置的所述容量,更新用于存储的所述另一装置以指示将由用于监控的所述装置监控所述新存储器位置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2012403.8 | 2020-08-10 | ||
GB2012403.8A GB2597938A (en) | 2020-08-10 | 2020-08-10 | Monitoring memory locations to identify whether data stored at the memory locations has been modified |
PCT/GB2021/052030 WO2022034293A1 (en) | 2020-08-10 | 2021-08-05 | Monitoring memory locations to identify whether data stored at the memory locations has been modified |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116171432A true CN116171432A (zh) | 2023-05-26 |
Family
ID=72519905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180057752.XA Pending CN116171432A (zh) | 2020-08-10 | 2021-08-05 | 监控存储器位置以识别存储在存储器位置处的数据是否已经被修改 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230280904A1 (zh) |
JP (1) | JP2023538241A (zh) |
KR (1) | KR20230047177A (zh) |
CN (1) | CN116171432A (zh) |
GB (1) | GB2597938A (zh) |
WO (1) | WO2022034293A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7937535B2 (en) * | 2007-02-22 | 2011-05-03 | Arm Limited | Managing cache coherency in a data processing apparatus |
US10649684B2 (en) * | 2017-03-16 | 2020-05-12 | Arm Limited | Memory access monitoring |
US20180349280A1 (en) * | 2017-06-02 | 2018-12-06 | Oracle International Corporation | Snoop filtering for multi-processor-core systems |
US10964405B2 (en) * | 2018-11-30 | 2021-03-30 | Ati Technologies Ulc | Memory initialization reporting and control |
-
2020
- 2020-08-10 GB GB2012403.8A patent/GB2597938A/en active Pending
-
2021
- 2021-08-05 WO PCT/GB2021/052030 patent/WO2022034293A1/en active Application Filing
- 2021-08-05 CN CN202180057752.XA patent/CN116171432A/zh active Pending
- 2021-08-05 JP JP2023505746A patent/JP2023538241A/ja active Pending
- 2021-08-05 KR KR1020237008142A patent/KR20230047177A/ko unknown
- 2021-08-05 US US18/040,577 patent/US20230280904A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
GB202012403D0 (en) | 2020-09-23 |
WO2022034293A1 (en) | 2022-02-17 |
JP2023538241A (ja) | 2023-09-07 |
US20230280904A1 (en) | 2023-09-07 |
KR20230047177A (ko) | 2023-04-06 |
GB2597938A (en) | 2022-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100933820B1 (ko) | 메모리 속성들을 사용하기 위한 기술 | |
US9911508B2 (en) | Cache memory diagnostic writeback | |
US10394714B2 (en) | System and method for false sharing prediction | |
US8171230B2 (en) | PCI express address translation services invalidation synchronization with TCE invalidation | |
US6920521B2 (en) | Method and system of managing virtualized physical memory in a data processing system | |
US20120284485A1 (en) | Operating system virtual memory management for hardware transactional memory | |
US5765022A (en) | System for transferring data from a source device to a target device in which the address of data movement engine is determined | |
US6904490B2 (en) | Method and system of managing virtualized physical memory in a multi-processor system | |
KR20090025295A (ko) | 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법 | |
US6711651B1 (en) | Method and apparatus for history-based movement of shared-data in coherent cache memories of a multiprocessor system using push prefetching | |
CN111742302A (zh) | 通过基于上层缓存中的条目来日志记录对下层缓存的流入量进行跟踪记录 | |
US20150378770A1 (en) | Virtual machine backup | |
US20060149940A1 (en) | Implementation to save and restore processor registers on a context switch | |
CN114579480A (zh) | 一种缺页处理方法、装置、系统、电子设备及存储介质 | |
US6965972B2 (en) | Real time emulation of coherence directories using global sparse directories | |
US20240086195A1 (en) | Monitor exclusive instruction | |
US20090300313A1 (en) | Memory clearing apparatus for zero clearing | |
US9058270B2 (en) | False sharing detection logic for performance monitoring | |
US20230280904A1 (en) | Monitoring memory locations to identify whether data stored at the memory locations has been modified | |
US11176042B2 (en) | Method and apparatus for architectural cache transaction logging | |
CN115485668A (zh) | 存储器页标记作为基于处理器的执行跟踪的日志记录线索 | |
US11989137B2 (en) | Logging cache line lifetime hints when recording bit-accurate trace | |
JP4974638B2 (ja) | シミュレーション装置及びシミュレーション方法 | |
US20240103913A1 (en) | Task scheduling method and system, and hardware task scheduler | |
US20240134803A1 (en) | Hardware assisted memory access tracking |
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 |