CN110402433A - 内存存取监测 - Google Patents

内存存取监测 Download PDF

Info

Publication number
CN110402433A
CN110402433A CN201880018227.5A CN201880018227A CN110402433A CN 110402433 A CN110402433 A CN 110402433A CN 201880018227 A CN201880018227 A CN 201880018227A CN 110402433 A CN110402433 A CN 110402433A
Authority
CN
China
Prior art keywords
monitoring
region
instruction
address
data
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
Application number
CN201880018227.5A
Other languages
English (en)
Other versions
CN110402433B (zh
Inventor
杰弗里·怀曼·布莱克
帕维尔·沙米斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Co Ltd
Original Assignee
ARM Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Co Ltd filed Critical ARM Co Ltd
Publication of CN110402433A publication Critical patent/CN110402433A/zh
Application granted granted Critical
Publication of CN110402433B publication Critical patent/CN110402433B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache 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)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种装置具有监测数据存储器,该监测数据存储器用来存储监测数据,该监测数据指示内存地址空间中要被监测改变的区域,该等区域可包括至少两个非邻接的区域。处理电路响应于更新监测指令而更新监测数据。监测电路监测对于内存系统所进行的存取且在与受监测区域中的一者相关联的资料已改变时向处理电路提供通知。这通过减少了轮询多个区域的改变的管理成本而改良了效能及能源效率。

Description

内存存取监测
技术领域
本技术关于数据处理的领域。
背景技术
数据处理系统可具有可能需要彼此通信的多个动作元(actor)。各个动作元可为任何独立的内存存取源(例如,该多个动作元可包括系统内的不同硬设备,及/或可包括运行在相同硬设备上的不同软件程序)。为了在动作元之间进行通信,传送动作元可将信息写入到共享内存中可接着由接受动作元所读取的区域。可使用两种技术来允许接受器侦测来自传送动作元的信息:传送动作元可向接受动作元触发中断信号以使用标志来通报已发送了信息,或接受动作元可连续轮询(读取)可能在接收到信息时改变的相关内存位置,以检查数据实际上是否已改变。然而,这些方法中没有一个方法良好地随着信息流的数量增加而增加规模。
发明内容
至少某些示例提供了一种装置,该装置包括:
监测数据存储器,用来存储指示内存地址空间中要被监测改变的多个区域的监测数据,其中该监测数据存储器能够存储指示该内存地址空间的至少两个非邻接区域的监测数据;
处理电路,响应于更新监测指令而更新由该监测数据存储器所存储的该监测数据;及
监测电路,用来监测对内存系统所进行的存取,及用来响应于侦测到与由该监测数据所指示的所述多个区域中的至少一者相关联的数据已改变,而向该处理电路提供通知。
至少某些示例提供了一种方法,该方法包括以下步骤:
响应于更新监测指令,更新指示内存地址空间中要被监测改变的多个区域的监测数据,该多个区域包括该内存地址空间的至少两个非邻接区域;
监测对内存系统所进行的存取;及
响应于侦测到与由该监测数据所指示的所述多个区域中的至少一者相关联的数据已改变,而向该处理电路提供通知。
至少某些示例提供了一种存储介质,该存储介质存储虚拟机计算机程序,该虚拟机计算机程序用于在被数据处理装置执行时依据上述的装置提供指令执行环境。
附图说明
将通过以下的示例说明来理解本技术的进一步的态样、特征及优点,该示例说明要与附图结合阅读。
图1示意性地示出一种装置的示例,该装置具有:监测数据存储器,用于存储指示内存地址空间的至少两个非邻接区域的监测数据;及监测电路,用来监测对于这些区域所进行的存取及在受监测的区域中的数据已改变时通知处理电路;
图2示出监测数据高速缓存的示例;
图3示出状态图,其针对监测高速缓存的给定条目指示一致性状态及报告状态的转变;
图4示出一种装置的第二示例,该装置具有:监测数据存储器,其中该监测数据存储器是使用在一致点(point of coherency)处所提供的过滤器来实施的;
图5示出另一替代方案,其中监测数据存储器包括互连器(interconnect)的监听目录;
图6示出流程图,其示出一种监测对内存所进行的存取的方法;及
图7示出可使用的虚拟机实施方式。
具体实施方式
存在可能需要多任务传输许多通信流的各种处理应用。这对于高效能计算或数据中心应用来说是特别有用的。通信流可例如来自一系列的来源,包括机器内的共享内存更新、对寄存器进行的远程直接存储内存存取(RDMA)写入行为及/或以经由网络所接收的新封包来更新寄存器的以太网网络设备。在全面通信(all-to-all communication)普及的情况下,通信流的数量在现代的处理环境中可能是数以千计的。在传统的系统中,可安置新信息的各个内存位置的中断信号或轮询行为可用来在通信流上以信号传递新的信息。然而,由于现今系统中所存在的通信流的数量,中断信号可能使系统过载,因为接受器可能从各个信息源接收到许多单独的中断信号。并且,轮询是昂贵的及能源上低效的,因其需要重复读取各个受监测的内存位置,无论这些内存位置实际上是否改变。轮询所花费的时间倾向于随着要多任务传输的通信流的数量而线性地增减规模,这造成了接受器的效能瓶颈。
本公开描述了一种装置,该装置具有:监测数据存储器,用来存储指示内存地址空间中要被监测改变的许多区域的监测数据。该监测数据存储器能够存储指示内存地址空间的至少两个非邻接区域的监测数据。处理电路可使用指令方式执行更新监测行为来更新由监测数据存储器所存储的监测数据。监测电路监测对内存系统所进行的存取,及响应于侦测到与由监测数据存储器所指示的区域中的至少一者相关联的资料已改变,而向处理电路提供通知。
在使用此方法的情况下,处理电路可将多个内存区域登录到监测数据存储器,且监测电路可在不需要干涉处理电路的情况下监视这些区域的改变。虽然亦会可能将监测数据存储器配置为监测一系列邻接的地址,监测数据存储器也支持限定地址空间的多个非邻接区域。因此,可通过在监测数据存储器中记录相对应的地址位置来监测多个独立的通信流的改变。因为监测电路监测内存存取及在受监测的区域中的至少一者中的数据改变时向处理电路提供通知,不需要处理电路重复轮询数据并未改变的区域,而减少了存取受监测区域所花费的时间。因此,可改良处理电路处的处理效能。
因为处理电路不需要在监测电路正在针对受监测的区域监测改变的同时操作,处理电路可在等待通知的同时在节能状态下操作,以减少电力消耗。例如,处理电路可支持等待事件指令的行为,该等待行为触发处理电路进入节能状态直到某个事件发生为止。例如,可通过减少时钟频率或通过执行电力选通(power gating)以将处理电路的某些组件与电源隔离,来实施节能状态。处理电路可响应于来自监测电路的通知而离开节能状态,该通知指示已侦测到受监测区域中的至少一者的改变。因此,通过在监测数据存储器中设置了适当的监测数据之后执行等待事件指令的行为,处理电路可节省电力且不需要不断周期性地苏醒以轮询受监测的内存区域,因为监测行为反而是由监测电路来执行的。
由处理电路所执行以在监测数据存储器中设定监测数据的更新监测指令可采取各种形式。在一个实施方式中,可能使用以内存映像的寄存器来限定监测数据存储器的监测数据,使得更新监测指令可仅仅是将数据存储到相对应于这些以内存映像的寄存器的内存地址的常规存储指令。然而,提供与标准存储指令分开的专用指令以供更新监测数据可能是更高效的。例如,可在由处理电路所支持的指令集架构(ISA)中将专用的指令运算码分配给更新监测指令。
在一个示例中,更新监测指令可在监测数据的更新之后识别两个或更多个地址,该等地址识别要被监测改变的区域。例如,更新监测指令可指定基础地址及位映像,该位映像识别要被监测的多个地址相对于基础地址的偏移。基础地址及位映像可被编码为由更新监测指令的编码所明确识别的立即值,或可从由更新监测指令的编码所指定的寄存器来存取。因此,可响应于单一指令而将多个非邻接区域登录在监测数据存储器中,这可通过减少设置监测数据的管理成本来改良效能。由更新监测指令所触发的更新可覆写与先前受监测的地址区域相关联的任何数据,使得先前受监测的地址区域不再被监测改变。或者,除了任何先前受监测的地址区域以外,更新可限定要添加到受监测区域组的新区域。可取决于是否要维持或清除先前受监测的区域而限定不同版本的更新监测指令。
或者,在其他实施方式中,更新监测指令可仅识别单一的内存地址。在此情况下,可执行多个更新监测指令,各个更新监测指令指定不同的地址,以将多个非邻接地址中的各者登录在监测数据存储器中。因此,在使用此方法的情况下,指令被解译为限定要添加到由监测数据所追踪的区域组的新的区域。例如,可使用限定要监视的一组地址的过滤器表示(例如布隆过滤器)来表示由监测数据所指示的地址空间区域,每次执行更新监测指令可能接着将额外的地址添加到过滤器。
虽然某些实施方式可返回数据改变的特定区域的指示以及发送到处理电路的通知,在许多实施方式中,在不识别数据改变的特定区域的情况下让通知包括中断信号或指示事件已发生的其他信号可能是更高效的。例如,这可允许与一般的事件等待机制共享内存改变报告机制,该一般的事件等待机制亦用于监测其他事件而无关于由监测电路所进行的监测(例如可使用一般的事件报告中断信号)。并且,因为处理电路可能在接收到通知时处于节能状态,用于响应哪个区域被存取的指示的电路可能还不是操作的。因此,让处理电路在接收到区域中的至少一者已改变的通知之后明确请求受监测区域中的何者被存取的指示可能是更高效的。
因此,处理电路可支持报告监测结果指令,该指令可由处理电路执行以请求监测电路返回数据已改变的至少一个区域的指示。例如,报告监测结果指令可触发监测电路以返回指示已改变的特定区域的地址的偏移的位映像(据以计算该等偏移的基础地址可能是隐含的,且因此可能不需要由监测电路传送,因为该等基础地址可能已经由原本更新监测数据而限定受监测区域的程序所知)。或者,监测电路可返回已改变的区域的单一地址,且可能需要执行多个报告监测结果指令以请求返回各个已改变的地址直到不再存在已改变的区域为止。
内存系统可从由物理地址所识别的内存存取数据,该等物理地址是从由被处理电路执行的程序指令所指定的虚拟地址所转译的。对于平常的内存存取而言,用于将虚拟地址转译成物理地址的单向转译机制可能是足够的。然而,监测电路可能需要例如响应于报告监测结果指令而报告受监测的多个区域中的哪一个特定区域改变了。因此,可提供逆向转译机制以将物理地址转译为虚拟地址。可在监测数据存储器本身内提供逆向转译机制(例如可针对各个受监测的区域提供用于监测区域的虚拟及物理地址两者的指示,使得在基于物理地址侦测到监测区域的改变时,则该物理地址可被转译成相对应的虚拟地址以通知处理器哪个区域改变了)。或者,逆向转译机制可与监测数据存储器分开(例如在监测数据存储器限定受监测区域的过滤器表示时,其可能不包含各个受监测地址的明确指示,因此单独的逆向转译存储器可包含实体转虚拟地址的映像)。并且,亦可使用软件来提供逆向转译机制,其中执行在处理电路上的软件将由监测电路报告为已改变的物理地址转译成如由处理电路所使用的虚拟地址。
处理电路亦可支持清除监测指令,该指令触发处理电路从监测数据存储器清除监测数据,使得不再由监测电路针对先前登录的内存位置监测改变。在某些实施方式中,清除监测指令可能导致所有监测数据被清除,使得不再有任何一个先前登录的内存位置被监测改变。对于监测数据存储器的某些实施方式而言,亦可能提供一种版本的清除监测指令,该版本的清除监测指令可指定内存区域中要被清除监测数据的至少一个特定地址,使得在执行清除监测指令之后,其他区域仍可被监测电路监测。
亦可在发生异常事件时清除监测数据存储器中的监测数据。在异常发生(例如上下文交换(context switch)、硬件页面错误、中断等等)之后,要由在异常发生之前执行的受中断程序所监测的信息不太可能与在异常之后执行的后续程序相关。为了避免不必要地中断后续的程序,可在异常发生时清除内存监测数据。在从异常处理的完成返回之后,受中断的程序可扫描受监视的地址以检查任何改变(例如通过向受监测地址中的各者发出一系列的读取操作来检查),在此之前通过执行另一更新监测指令以触发监测电路再次恢复监测来重设监测数据。
在具有可从共享的内存系统存取数据的多个主设备或高速缓存的系统中,可提供互连器以基于在主设备或高速缓存及互连器之间依据特定的一致性协议所交换的一致性协议交易(transaction)(例如监听交易)来管理主设备或高速缓存之间的一致性。例如在某些情况下,在共享的数据被一个主设备更新时,可向可能保持相对应数据的其他高速缓存发送监听交易以触发来自这些其他高速缓存的数据的无效化(invalidation)。可由监测电路重复使用此类一致性架构以供侦测与由监测数据存储器所指示的区域中的一者相关联的数据是否已改变。因此,监测电路并不需要读取内存位置本身,而是可基于一致性协议交易来侦测受监测区域中的一者中的数据是否已改变。这可使用不同的方式来实施。在某些情况下,可将监测电路视为要在共享的数据更新之后被监听关于对共享数据的更新的另一主设备或高速缓存,使其将从互连器接收监听交易作为一致性方案中要被通知其他处的数据改变的部分。或者,监测电路可独立于被针对维持一致性的主设备及高速缓存,但可截获穿越互连器及其他主设备或高速缓存之间的一致性业务量,且基于这些一致性协议交易来侦测受监测区域中的一者何时已存在改变。
由监测数据所限定的各个区域的大小可能从一个实施方式到另一实施方式是有所不同的。一般而言,各个区域相对应于具有给定大小的某个地址区块。
然而,若监测数据将具有相同大小的区域限定为相对应于各个一致性协议交易的区域,则重复使用一致性架构以由监测电路监测内存存取可能是更高效的。一致性协议可操作在预定的高速缓存行大小的粒度下,使得各个一致性协议交易指定具有该预定高速缓存行大小的数据区块的地址。因此,监测数据存储器亦可限定具有该预定高速缓存行大小的区域。
然而,由互连器及内存系统所使用的高速缓存行大小可能对于执行在处理器上的软件通常是不可见的。相同的代码可执行在使用不同高速缓存行大小的微架构上。因此,装置可被提供为具有配置寄存器,该配置寄存器指定指示在一致性协议中由互连器所使用的预定高速缓存行大小的值。配置寄存器对于执行在处理电路上的软件可能是可见的,使得程控器可包括指令以读取高速缓存行大小及接着将要受监测的地址映像到适当高速缓存行大小的区域上。
可在微架构的层级下以不同的方式来实施监测数据存储器。在一个示例中,监测数据存储器可包括具有许多条目的监测数据高速缓存,各个条目限定地址空间中要被监测改变的相对应区域。各个条目亦可包括其他信息,例如上文所论述的从物理地址到相对应的虚拟地址的逆向地址转译映像。监测数据高速缓存可被包括在由互连器所管理的一致性方案中,使得以与跟给定主设备相关联的常规数据高速缓存或指令高速缓存类似的方式对待(为了监听的目的)该监测数据高速缓存。因此,互连器可依据一致性协议针对包括监测数据高速缓存的多个高速缓存管理一致性。监测数据高速缓存可在其他高速缓存或内存位置中的相对应数据改变时接收监听请求,且此类监听请求可触发监测数据高速缓存处的一致性状态上的改变,该改变可由监测电路所侦测到且用来对处理电路触发通知。
不像常规的数据或指令高速缓存,监测数据高速缓存不需要实际存储与相对应地址相关联的数据,因为仅存储地址卷标及一致性状态限定数据可能就足以允许识别数据中由其他设备所触发的改变。
在具有多个主设备的系统(各个主设备具有可能需要设定要被监测改变的地址空间区域的处理电路)中,各个主设备可具有单独的监测数据高速缓存以供向相对应主设备的处理电路通知所指定的地址区域的改变。
在处理电路执行更新监测指令时,监测数据高速缓存可分配一致性协议的共享一致性状态下的至少一个新的条目。互连器可在一致性协议下操作,使得在两个或更多个高速缓存针对处于共享一致性状态下的给定地址保持条目时,对于这些条目中的一者进行的写入行为触发其他高速缓存中的相对应条目的无效化。因此,互连器可响应于侦测到对地址空间的相对应区域进行的写入行为,而触发监测数据高速缓存的给定条目从共享一致性状态转变到无效(invalid)一致性状态。监测电路可对监测数据高速缓存监测从共享一致性状态转变到无效一致性状态的条目,且在侦测到转变到无效一致性状态之后,监测电路可向处理电路提供通知以信号传递地址空间的受监测区域中的一者已改变。
不像常规的高速缓存(对于常规的高速缓存而言,高速缓存的条目的无效化使得该条目可用于重新分配给另一地址),在使用监测数据高速缓存的情况下,从共享一致性状态转变到无效一致性状态的条目可被保留在监测数据高速缓存中。处理电路可预期从某些通信流接收到多个信息,且因此一旦目前的信息已被读取,可能仍需要对相同的位置监测改变,且因此将条目保留在监测数据高速缓存中可能是较佳的。将条目保留在监测数据高速缓存中在无效一致性状态下亦允许条目的部分追踪已向处理电路报告相关地址处的数据改变的程度。追踪已向处理电路报告数据改变的程度可帮助避免信息被处理电路错失或信息被报告多次。
在一个示例中,可在处理电路已被提供为具有将相对应的区域识别为侦测到改变的区域的区域指示(例如区域指示可为响应于报告监测结果指令而返回的位映像或其他信息)之后,响应于侦测到由处理电路对相对应区域进行的读取或写入存取而自动将监测数据存储器的条目从无效一致性状态切换到共享一致性状态。一直到处理电路触发了对内存地址空间的已改变的区域进行的读取或写入存取行为的时间点,都不需要继续监测该区域,因为一般而言,传送动作元可具有机制以防止对表示信息的内存地址进行后续更新直到已侦测到相对应的区域已被接受器读取或写入为止。然而,一旦处理电路向相对应的区域发出读取或写入,可能可由传送动作元发送另一信息。通过响应于对相对应区域进行的读取/写入而将监测数据高速缓存的相对应条目从无效一致性状态切换到共享一致性状态,这使得相对应的高速缓存行自动进入工作状态,使得监测电路将接着继续对该地址区域监测改变且避免了受监测区域的改变被错失了的错误否定。
注意,从处理电路进行的触发从无效一致性状态转变到共享一致性状态的存取可为读取存取或写入存取。处理电路可在不读取信息位置的情况下对该信息位置发出写入行为可能看起来是违反直觉的,因为吾人会预期处理电路读取所接收到的信息。然而,有时候受监测的区域可能并未存储要传送动作元从发送到接收动作元的实际信息或共享数据,而是可能反而存储了用来控制对于某些其他的共享资源所进行的专有存取行为的锁定变量。因此,在侦测到传送动作元已改变了受监测区域中的数据之后,此举可以信号传递传送动作元已撤回锁定,而允许处理电路发出写入存取以为它自己索取锁定且因此提供了对于与锁定相关联的另一共享资源的存取权。因此,由处理电路在接收到特定的地址区域已改变的报告之后所发出的交易可为读取或写入行为,且读取及写入行为皆可触发监测数据高速缓存行自动进入工作状态到共享一致性状态以重新开始监测。
除了依据相关的一致性协议来指示关于高速缓存的各个条目的一致性状态的信息以外,各个监测数据高速缓存条目亦可指定报告状态信息,该报告状态信息指示已向处理电路报告与相对应区域相关联的数据上的改变的程度。虽然在某些实施方式中,单一的状态区位可指示一致性状态及报告状态信息两者,在高速缓存一致性状态是由来自报告状态信息的单独字段所指示时,将监测数据高速缓存与现存的一致性协议整合在一起,使得可使用由一致性机制的其他高速缓存所使用的相同格式来指示一致性状态,可能是较简单的。
报告状态信息可指示各个条目是否处于以下状态中的一者下:
无效报告状态,指示监测电路仍要侦测与相对应区域的相关联数据的改变;
已改变状态,指示监测电路已侦测到与相对应区域相关联的数据改变,但仍要将区域指示提供给处理电路,该区域指示将相对应的区域识别为侦测到改变的区域;及
已报告状态,指示处理电路仍要在被提供了所述的区域指示之后存取相对应的区域。
例如,各个条目可具有二位字段,该字段用于针对监测高速缓存的相对应条目将三个报告状态中的一者指示为目前的报告状态。二位字段的第四个编码可为无效或可被重复用于其他的用途或额外的报告状态。
在响应于处理电路执行更新监测指令而首次将新的条目分配到高速缓存时,新分配的条目可能开始处于无效报告状态下,因为还未报告相对应区域中的数据的任何改变。在由监测电路侦测到受监测区域中的一者的改变时,监测数据高速缓存的相对应条目可接着从无效报告状态转变成已改变状态(且一致性状态亦可在此时间点从共享的转变成无效的)。
在处理电路执行报告监测结果指令以请求哪些区域已改变的指示时,监测电路可向处理电路返回区域指示,且亦触发与已报告的区域指示相关联的条目从已改变状态转变成已报告状态,该区域指示相对应于监测数据高速缓存的相对应条目目前处于已改变状态下所针对的任何区域。因此,若处理电路接着执行另一报告监测结果指令,则已经响应于先前报告监测结果指令的执行而被报告的区域将已经处于已报告状态下,且因此这些区域将不被再次报告,因为报告监测结果指令触发条目是处于已改变状态下的这些区域的报告行为。这提供了用于避免处理电路需要处理乱真的重复更新的机制,而确保了受监测区域的各个改变被报告一次。
在用于给定区域的条目处于已报告状态时,这指示,处理电路已被提供了特定区域改变了的事实的指示(而不是仅是在不识别特定区域的情况下一般地接收至少一个区域改变了的通知)。处理电路可接着随后如上文所论述地向已改变的区域发出读取或写入存取,且在此时间点,监测电路可触发相对应的高速缓存条目从报告状态转变成无效报告状态,以指示将需要向处理电路再次报告内存系统中的相对应区域的任何后续改变。如上所述,报告状态的此转变可能与从无效转变成共享的高速缓存一致性状态符合,以重新开始监测相对应地址的改变。
如上文所论述地将监测数据存储器实施为监测数据高速缓存可能是实施监测数据存储器的相对高效的方式,因为监测数据高速缓存仅向互连器呈现为另一高速缓存且因此不需要现存互连器或一致性机制的任何改变,并且高速缓存亦可提供上文所论述的逆向转译机制,因为在用于基于监听地址来寻找高速缓存的物理地址卷标旁边添加虚拟地址卷标可能足以提供逆向的地址转译。
处理电路可存取的配置寄存器可限定监测数据高速缓存的大小(条目数量),使得软件可识别可同时监测的地址区域的有多少。例如,取决于特定系统实施方式的需要,高速缓存可为相对小的且仅支持一次监测某个数量(例如8或16)的条目,或可为较大的。
然而,亦存在着可表示监测数据存储器的其他方式。如上所述,可使用过滤器表示,而不是提供明确识别要监测的各个地址的条目,其中可使用数据已改变的区域的地址来询问该过滤器表示且在询问侦测到与过滤器表示匹配时向处理电路提供通知。例如,过滤器表示可包括位数组,且在更新监测数据以添加要监测的额外区域之后,可使用基于额外区域的地址的一个或更多个散列函数来选择的位来设定受选的位子集。在询问过滤器之后,可使用类似的方式散列化数据已改变的区域的地址,且若相对应于该地址的所有位皆已被设定,则可能侦测到匹配。此方法可减少需要存储来限定要监测的给定数量的地址的存储容量,虽然数据已改变的区域的地址实际上不是要监测的地址中的一者,但可在已改变地址的散列化凑巧与已响应于由处理电路所指定的其他地址而被设定的一组位匹配时容许某些伪阳性侦测。尽管如此,偶发的伪阳性侦测可能是可接受的,以减少监测数据的存储管理成本。
在使用过滤器方法的情况下,可能不存在用于要监测的各个地址的专用条目,且因此追踪相对应区域的报告状态可能是不可能的。为了减少对于受监测地址的更新被处理电路错失的可能性,可提供地址队列来存储过滤器的询问所针对而侦测到匹配的一个或更多个地址的指示。因此,在侦测到过滤器结构的匹配时,可将相对应数据更新的地址公布到地址队列,处理电路在准备好的时候可随后从该地址队列读取被匹配的位置以识别哪些区域改变了。
监测数据存储器可定位在互连器或内存系统的其他部分内,而不是与设定相对应监测数据的特定处理电路在同一区域。例如,可在一致点处实施提供过滤器表示的数据结构(例如与由互连器所使用的监听过滤器平行实施以追踪哪些高速缓存保持来自特定地址的数据)。因此,在侦测到且在监听过滤器中寻找对给定地址进行的数据存取时,亦可针对过滤器表示询问该资料存取以识别该资料存取是否匹配受监测的区域中的任一者。在具有多个主设备的系统(各个主设备具有能够设定监测数据以限定所要针对监测改变的地址空间区域的处理电路)中,可提供两个或更多个过滤器表示,每个主设备一个过滤器表示,其中各个过滤器表示存储了指示如由相对应的主设备所指定的要监测的区域的数据。因此,互连器可询问多个过滤器且接着取决于中过滤器的哪一者与受监测的地址匹配而向相关的主设备触发通知。
图1示意性地绘示数据处理系统2的示例,可在该数据处理系统中使用此案中所描述的技术。系统2具有许多主设备4、6,该等主设备共享内存8的存取权。在此示例中,主设备包括两个中央处理单元(CPU)4及网络接口控制器(NIC)6,但将理解到,这仅是一个示例,且可提供许多其他类型的主设备,例如图形处理单元(GPU)、显示控制器、直接内存访问(DMA)控制器、周边输入/输出(I/O)控制器等等。一致互连器10被提供为依据一致性协议管理各别主设备之间的一致性。合适一致性协议的示例可包括由英国剑桥的有限公司所提供的 ACE或 CHI,但将理解到,亦可使用其他的一致性协议。某些主设备(例如CPU 4)具有用于从内存系统高速缓存指令或数据的一个或更多个高速缓存12。虽然图1为了简洁起见示出各个CPU 4具有单一的高速缓存12,但给定的主设备可具有多个高速缓存,例如单独的指令及数据高速缓存或多个等级的高速缓存(例如等级1及等级2的高速缓存)。装置亦可包括至少一个系统等级高速缓存14(例如耦接到互连器10),该系统等级高速缓存未被分配给特定的主设备但被定位得较靠近内存系统。系统高速缓存14可用于加速由未高速缓存化的主设备(例如网络接口控制器6,其本身不具有高速缓存)对于内存系统进行的存取。
互连器10具有监听过滤器16,该监听过滤器追踪哪些高速缓存保持来自特定地址的数据。监听过滤器16可为准确的,或可使用更近似的表示(例如过滤器表示),该表示容许给定的地址被高速缓存在特定的高速缓存中的某些伪阳性侦测但并不容许伪阴性(数据被高速缓存但这未被过滤器侦测到的时候的情况)。在侦测到从给定的主设备对给定的地址所进行的读取或写入存取之后,一致互连器10对监听过滤器16寻找相对应的地址,且识别哪些高速缓存可能正保持着该数据,且依需要向相对应的高速缓存传送监听请求以询问由这些高速缓存所保持的数据的一致性状态、返回相对应的数据值及/或触发无效化。一致性协议可限定在数据被保持在特定一致性状态下的高速缓存中时对于特定类型的交易要采取什么响应。例如,在数据被高速缓存在共享状态下而指示要与其他高速缓存中的相对应数据维持一致性时,则由一个设备对于共享数据所进行的写入行为可能触发系统中其他处的高速缓存中的相对应数据的无效化,以避免其他的主设备存取可能过期了的信息。因此,互连器10可与各别的高速缓存或主设备交换各种一致性协议交易(例如读取、写入或监听交易)。
运行在CPU 4中的一者上的软件程序可能需要快速及高效地多任务传输从其他动作元所接收的许多通信流。这些通信流可能例如来自可能正在更新共享内存的其他主设备4、经由网络接口控制器6或周边I/O设备来自外部来源或来自执行在相同的主设备上的另一软件程序(例如另一虚拟机)。为了避免软件程序需要连续轮询大量的内存位置,图1中的各个CPU 4被提供为具有用于存储监测数据的监测数据高速缓存20及用来监测对于内存系统所进行的存取的监测电路22,该监测数据限定内存地址空间中要被监测改变的区域。在监测数据存储器20中的区域中的一者中的数据的改变被监测电路22侦测到时,监测电路22向相对应的CPU 4发送中断信号以通知CPU 4受监测的地址中的一者已改变。监测数据存储器20能够存储限定许多非邻接地址的监视数据,使得可平行地对多个高速缓存行监测改变。
在架构的等级下,处理器4可支持指令集架构中控制监测数据存储器20中的监测数据的设定及清除以及报告哪些区域已改变的许多指令。各个处理器4的指令译码器可侦测所取以供处理的指令运算码,且在遭遇到下文中所论述的内存监测指令中的一者时控制处理电路4以触发监测数据高速缓存20中的数据的更新或从监测电路20请求哪些区域已改变的报告。
因此,提供了多内存等待指令以允许CPU 4将内存位置登录到CPU本地的监测存储器20,使得相对应的监测电路22可接着监视这些位置的改变发生,同时CPU可进入低电力模式以等待被通知这些改变且不错失任何改变。这导致了整体轮询时间上的实质改良,因为用于监测多个通信流的轮询时间减少到了常规的轮询技术中针对单一通信流进行轮询所花费的时间(T_轮询=t_单一_通信流,其为一常数)而不是与通信流的数量线性地增减规模。
可在架构中使用不同的方式指定多内存等待指令(更新监测指令)。一个实现方式会是加载多内存等待(load multi-memory wait,ldmmw)指令,该加载多内存等待指令指定基础地址及基础地址之后要监视的顺序地址的位映像:
ldmmw%base,%bitmap
其中%base指定存储基础地址的基础寄存器,而%bitmap指定存储位映像的寄存器,该位映像识别受监测地址相对于基础地址的偏移。
或者,ldmmw指令可指定要监测改变的单一地址(ldmmw%base%offset)。在此情况下,可在循环中使用不同的地址呼叫ldmmw指令多次。CPU微架构可接着建构要监视存取行为的地址组的过滤器表示,该等存取行为会改变这些地址的值。
接着在使用等待事件(wait-for-event,wfe)指令的情况下,处理器可被切换到节能状态,且处理器4接着等待监测电路22以信号传递已侦测到改变。在监测电路22通知处理器已发生事件时,可执行取得多内存等待结果(get multi-memory wait result,gmmwr)指令(报告监测结果指令)以触发监测电路22返回哪些地址改变了的指示。例如
gmmwr%dest
(其中%dest指定目的地寄存器,已改变区域的地址的位映像要存储到该目的地寄存器)。在背景中,处理器仍可在等待事件指令之间收集关于所登录的内存位置的事件。
或者,若ldmmw指令指定单一的地址偏移,则相对应的gmmwr指令可返回单一地址,且在WFE在正常情况下返回时,CPU可接着呼叫gmmwr%dest多次以收集在处于WFE下的同时改变了的地址。在发生异常的情况下,将针对处理器清除监测器,且在从异常返回之后,gmmwr指令将返回错误结果,而强制处理器重设监测器及扫描其地址组。
清除多内存等待(clear-multi-memory-wait,clear monitor)指令亦可被限定为清除监测器以使处理器停止监视地址及向其通知改变。在异常(上下文交换、硬件分页故障、中断等等)之后,可清除监测器,且WFE可在异常的完成之后返回,而强制处理器扫描受监视的地址以检查改变及接着通过执行另一更新监测指令来重设监测器。
应注意,这些指令接受虚拟地址,但它们可通过内存管理单元(MMU)处理而被转换成物理地址以参与微架构的实施方式。
在架构等级下,系统可具有一个或更多个配置寄存器30、32,该等配置寄存器指定由执行在处理器4上的代码所使用的参数以决定如何设定要监测的区域的地址。例如,配置寄存器可包括限定由一致性协议所使用的高速缓存行大小30的信息,而限定了一致性交易用以参照地址空间的区域的粒度。各个一致性协议信息可指具有某个高速缓存行大小的数据区块,且通过使得处理器4可看见此大小,处理器4可设定具有相对应大小的区域作为监测数据存储器20中的受监测区域。这使得受监测区域的改变的侦测是更高效的,因为在一致性交易及受监测区域之间存在着一对一映射。并且,配置寄存器可包括指定监测数据高速缓存20的条目数量的监测高速缓存大小指示32,使得软件可识别可同时监测地址空间的不同区域有多少个。
如图1中所示,能够设定用于监测内存位置的请求的各个主设备4被提供为具有其自己的单独监测数据高速缓存20及监测电路22。监测数据高速缓存20被整合到由一致互连器10所管理的一致性方案中,使得监测数据高速缓存20中的条目依据相关的一致性协议标有一致性状态,使得它们将响应于相对应地址中的数据改变而被监听。
图2示出监测数据高速缓存20的示例,该监测数据高速缓存包括许多条目40,各个条目相对应于要被监测改变的一个区域。各个条目40包括了许多信息片段,该等信息片段包含一致性状态42、报告状态44以及实体卷标46及虚拟卷标48,该一致性状态依据由互连器10所管理的一致性协议来指示相对应的高速缓存行的状态,该报告状态指示已向相对应的处理电路4报告与相对应区域相关联的数据中的任何改变的程度,该实体卷标及虚拟卷标表示要监测的相对应区域的实体及虚拟地址的部分。通过在监测数据高速缓存20中提供实体卷标46及虚拟卷标48两者,监测数据高速缓存20提供了逆向转译机制,因为可基于一致性协议的物理地址来查找监测高速缓存40且在侦测到匹配时可将该物理地址映像到要向处理器4报告的相对应虚拟地址。不像常规的数据或指令高速缓存,并不存在用于存储与受监测地址相关联的实际数据的数据字段,因为状态指示及地址卷标已足以监测内存系统中的其他处的数据是否已改变。
图3为状态图,示出一致性状态42及报告状态44是如何回应于与监测相对应的地址区域相关的不同事件而改变的。如图3中所示,一致性状态(C)可能处于无效一致性状态及共享一致性状态中的一者下。在一致性协议中,无效一致性状态会指示,相对应的高速缓存条目并不包含有效数据,而共享一致性状态会指示,要与保持在其他高速缓存中的相对应数据维持一致性且因此在其他处对于共享数据进行的写入行为应触发相对应的高速缓存条目的无效化。监测方案重复使用这些一致性状态,使得在条目40处于无效一致性状态下时,这指示了相对应的地址区域目前并不被监测改变,而共享一致性状态指示地址正在被监测改变。注意,一致性协议亦可限定无效或共享以外的额外一致性状态(例如洁净(Clean)或不净(Dirty)),但这些可能无关于监测用途所以不需要被记录。
报告状态(R)可能处于无效状态、已改变状态或已报告状态中的一者下。注意,无效报告状态是与无效一致性状态独立的–高速缓存行可处于无效一致性状态下又处于无效以外的报告状态下,或处于无效报告状态下又处于共享一致性状态下。无效报告状态指示,地址可能被监测或可能不被监测,但若发生了监测行为,则相对应区域的改变还未被识别。已改变状态指示,改变已被监测电路20侦测到,但处理器4还未请求哪个区域改变了的通知。已报告状态指示,已通知处理器哪些区域改变了,但处理器还未读取或写入相对应的内存位置。
图3的状态转变如下:
在导致系统初始化的系统重设或其他事件之后,监测数据高速缓存20的各个条目开始处于一致性状态C及报告状态R两者是无效的状态50下。
响应于执行指定要被监测改变的一个或更多个地址的更新监测指令(ldmmw),将一个或更多个条目分配给高速缓存20,且新分配的条目转变成一致性状态C是共享的而报告状态R保持无效的状态52。因为监测高速缓存20包含了共享数据,相对应的地址会在互连器10的监听过滤器16中被标记为被监测数据高速缓存20所保持,且因此会响应于相对应地址区域中的数据改变而监听监测数据高速缓存20。
在从一致互连器10接收到指定受监测地址中的一者的无效化监听请求之后,受监测地址区域的数据改变被侦测到,且监测数据高速缓存20的相对应条目的一致性状态C从共享的转变成无效的。并且,报告状态R从无效的转变成已改变的。对CPU进行的通知(例如用来触发从等待事件状态离开的中断信号)亦可能由此从状态52转变成状态54的行为所触发。虽然一致性状态现在是无效的,但条目被保留在高速缓存中以允许追踪报告状态,且条目不能被重新分配给不同的地址直到其已返回到状态50(无效-无效)为止。
在对任何高速缓存行执行报告监测结果指令(report monitoring resultinstruction,gmmw)之后,监测电路返回相对应高速缓存条目40的报告状态R是已改变的一个或更多个地址的指示,且地址被报告的条目从已改变的报告状态转变成已报告的报告状态(图3的状态56)。
在对相对应的监测高速缓存条目40所针对而处于已报告的报告状态56下的区域进行的CPU读取或写入被侦测到时,这将该条目返回到状态52,亦即一致性状态C从无效的转变成共享的,且报告状态R从已报告的转变成无效的。因此,对先前报告的区域所进行的CPU读取或写入自动使监测数据存储器20进入工作状态,使得监测电路22将重新开始对相对应的区域监测改变(共享数据将在其他处的数据被更新时再次被互连器20监听)。在CPU读取/写入之后进行的从状态56转变成状态52的行为消除了伪阴性报告(在处理器已读取/写入受监测区域之后对该受监测区域进行的更新被错失时的情况)的可能性。
在处于状态52及56中的任一者下时,清除内存监测指令(clear memory monitorinstruction,clmmw)的执行或异常的发生使得所有高速缓存行转变成状态50(无效-无效)。或者,清除内存监测指令可被限定为指定要清除监测数据的特定地址,且在此情况下,只有这些特定的地址可让它们的高速缓存行转变回到无效-无效50。异常亦可能使得从状态54、56中的一者转变成无效-无效,因为报告状态信息的丢失在此情况下可能不是个问题,因为在任何情况下,设定监测数据的程序可在完成异常处理之后对受监测的地址扫描改变且接着重设监测数据。
总而言之,此状态控制机制避免了错失更新且也避免了需要处理重复的更新,因为已改变及已报告状态的使用确保了各个已改变的位置将仅被特定的gmmw指令执行报告一次。
图4示出以硬件实施监测数据存储器20的替代方式。在此情况下,监测存储器反而包括在相关的一致点处所提供的一组过滤器存储器60,而不是在现存的高速缓存12旁边针对各个主设备4提供监测数据高速缓存。例如,图4示出过滤器存储器60被提供在互连器的监听过滤器16旁边。可能在系统中存在多个一致点(互连器的等级)以管理不同的主设备子集中的一致性,且因此各个一致点可能具有单独的监测数据存储器60组。为了追踪由不同主设备所指定的不同组的监测地址,各个一致点可具有多个过滤器,每个主设备一个过滤器,如图4中所示。
各个监测过滤器60可使用一种过滤器表示,该过滤器表示存储了具有取决于要监测的地址的散列而设定的位图案的某个数量的过滤器位,且针对已改变的数据的地址询问过滤器表示的行为使用与在设定过滤器时所使用的这些散列函数相对应的散列函数来散列化已改变的地址,且若从已改变地址的散列化所识别的所有位已经被设定在过滤器中则侦测到匹配。例如,可使用布隆过滤器。过滤器60即使在处理器不是在执行等待事件的行为且处于节能状态下时亦可保持收集及公布通知以保证不丢失更新。为了即使在处理器休眠时亦保持收集事件,可针对各个处理器提供硬件信息队列(FIFO)70以持续收集可接着由处理器4在下次苏醒时读取的地址。
在使用此方法的情况下,可针对各个主设备提供单独的逆向地址转译机制72,以执行从由一致的组构(fabric)所使用的物理地址逆向地址转译回到由相对应的处理器4所使用的虚拟地址的行为。图4为了简洁起见示出用于CPU 4中的两者的逆向转译机制72,但将理解到,可针对能够在过滤器60中设定受监测地址的主设备中的各者提供一个逆向转译机制。或者,执行在CPU 4上的软件可将受监测内存存取的物理地址转译回到由CPU 4所使用的虚拟地址来识别已改变的内存存取,而不是使用硬件来提供逆向转译机制。各个过滤器60的大小会需要大到足以避免产生太多关于未监视的地址的乱真伪阳性通知(过滤器越小,相对应于给定的未监视地址的位图案越可能凑巧由于与受监视地址组的散列重迭而是全被设定的)。
对于具有目录风格的一致性的大系统而言,另一选项可为向各个指挥节点传递示例布隆过滤器,或可为针对需要监测的地址将黏滞位(sticky-bit)扩增给各个目录节点,使得该等地址在没有处理器拥有高速缓存中的该特定列时不被丢弃。例如,如图5中所示,互连器或其他一致性基本架构内的监听目录80除了一致性状态信息42、物理地址卷标44及指示哪些高速缓存保持用于相对应地址的有效数据的高速缓存位映像82以外,亦可保持一组监测位84,各个监测位指示相对应的地址是否被相对应的处理器或其他主设备监测。若监测位84中的一者或更多者被设定,则即使在所有高速缓存无效化数据时亦会保留目录条目,且在侦测对受监测地址进行的写入行为之后,被标志标记为监视该地址的处理器会被通知。再次地,可每个主设备提供一个地址队列70以供记录改变已被通知的地址。或者,可存留过滤器或黏滞位,而允许在处理器目前不处于等待事件的情况下的同时持续产生通知以便不丢失到来的事件。或者,各个目录可针对各个处理器存储过滤器,或将更多条目添加到目录以针对可能不再被高速缓存的高速缓存行存储黏滞位,而不是在一个目录中指示多个处理器。这可导致将许多额外的位存储在区域及效能敏感的结构中。此外,此实施方式亦会需要逆向的转译机制,例如存储物理地址转虚拟地址的映像的另一高速缓存,该高速缓存会看起来与图2的监测高速缓存20类似。
图6示出用于给定处理器4的方法,该方法用来响应于针对给定的软件程序所指定的指令而请求监测某群地址区域及处置这些地址区域中的数据改变的通知。在步骤100处,判定是否执行更新监测指令,且若如此,则在步骤102处,监测数据存储器20、60中的监测数据被更新为限定地址空间中要监测的多个(可能是非邻接的)区域。若未执行更新监测指令,则步骤102被跳过。在步骤104处,判定处理器是否已执行等待事件(WFE)指令,且若否,则万一处理器4仍然等待着使用后续的更新监测指令来限定要监测的进一步内存区域,则处理器返回步骤100。
在步骤104处执行等待事件指令时,则方法继续进行到步骤105,在步骤105处,处理电路4检查事件是否已经发生了。可能情况的是,监测电路22可能已经响应于WFE指令而在还未进入节能状态之前接收到事件通知及将该事件通知排好队列,在该情况下,被排队列的事件可有效地取消WFE指令。若事件还未发生,则方法继续进行到步骤106,在步骤106处,处理器进入节能状态,例如在该节能状态下,处理器的某些组件被电力选通以减少电力消耗,或连到某些组件的频率被选通或减少频率。在处于节能状态下的同时,监测电路22监测监测数据存储器20中所限定的受监测区域的改变。监测电路22在侦测到受监测区域的改变时向处理电路4触发事件通知(例如中断信号)。在步骤108处,处理电路4中在节能状态期间保持通电的部分判定是否已接收到事件通知,且若否,则返回到步骤106以继续等待事件通知。在接收到事件通知时,接着方法继续进行到步骤110以离开节能状态。在步骤112处,执行报告监测结果指令以识别哪些区域改变了。响应于报告监测结果指令,受监测的电路22返回被侦测到改变的一个或更多个地址的指示。例如,被报告的地址可为图2-3的示例中的相对应高速缓存条目40所针对而处于已改变报告状态下的地址,或是图4的示例中的存储在地址队列70中的地址。若在步骤105处,事件已经发生,则步骤106-110被省略,且方法从步骤105继续进行到步骤112。
在步骤114处,处理电路侦测任何区域实际上是否改变了。可能需要此步骤,因为可能将等待事件机制与可响应于监测区域中的数据改变以外的事件而触发事件通知的其他功能共享,且因此可能的情况是,即使在受监测区域中的任一者中没有数据改变时亦可能已接收到事件通知。若没有区域实际上已改变了,则方法返回到步骤104以执行另一等待事件指令及继续等待受监测区域的改变。若受监测区域中的任一者确实改变了,则在步骤116处,处理电路4触发读取或写入交易以读取或写入已改变区域中的数据(例如读取接收到的信息或设定锁定变量)。在步骤118处,判定是否仍然需要进行监测,且若如此,则方法返回到步骤104以执行另一等待事件指令以重新进入节能状态及继续等待对监测区域的进一步更新。若不再需要进行监测,则在步骤120处,执行清除监测指令以从监测数据存储器清除监测数据,且因此停止监测电路22通知处理器对于这些区域的任何后续更新。
因此,希望在两个或更多个非邻接内存区域中的任一者中的数据改变时接收通知的软件可在最终执行清除监测指令以停止监测之前循环通过指令循环,该指令循环包括更新监测指令、等待事件指令、报告监测结果指令及内存读/写指令。在使用此方法的情况下,处理器不需要持续轮询受监测区域中的各者,而允许处理器保持在节能状态下更长时间,且减少了内存系统中的内存业务量,且因此改良了能源效率及处理效能。
图7示意性地示出适于实施本文中的某些示例实施例中所述的技术的虚拟机实施例。虽然先前所述的实施例在用于操作支持所涉及的技术的特定处理硬件的装置及方法的意义上实施本发明,亦可能提供硬设备的所谓的虚拟机实施方式。这些虚拟机实施方式运行在主机处理器530上,该主机处理器150运行支持虚拟机程序510的主机操作系统520。一般而言,需要更强力的处理器来提供在合理速度下执行的虚拟机实施方式,但此类方法在某些环境中可被调整(justify),例如在基于兼容性或重复使用的理由而有需要运行另一处理器的原生代码时。虚拟机程序510被存储在存储介质上,该存储介质可为非暂时性存储介质。虚拟机程序510向应用程序500提供了应用程序编程接口,该应用程序编程接口与会由真实硬件所提供的应用程序编程接口相同,该真实硬件是被虚拟机程序510模仿的设备。因此,在上文所论述的内存监测的情况下,虚拟机程序510可限定响应于应用程序500的更新监测指令、报告监测结果指令或清除监测指令而执行的操作,使得会以如上文所论述的硬件方式执行的相对应操作被虚拟机程序510以软件方式触发。类似地,虚拟机程序510可包括用于如上文所论述地追踪状态转变及监测高速缓存的相对应改变的指令。如此,在虚拟机下执行的应用等级的软件500不需要轮询多个内存位置,其中内存存取的监测反而是由虚拟机响应于应用程序500的内存监测配置指令而执行的。
在本案中,用词「配置为...」用来意指装置的构件具有能够实现所限定的操作的配置。在此背景脉络下,「配置」意指硬件或软件互连的布置或方法。例如,装置可具有提供所限定操作的专用硬件,或处理器或其他处理装置可编程为执行该功能。「配置为」并不暗示的是,装置构件需要以任何方式改变以提供所限定的操作。
虽然已参照附图而在本文中详细描述本发明的说明性实施例,要了解到,本发明不限于这些准确的实施例,且本领域中的技术人员可在该等实施例中作出各种改变及更改而不脱离如由随附权利要求所限定的发明的范围及精神。

Claims (21)

1.一种装置,包括:
监测数据存储器,用来存储指示内存地址空间中要被监测改变的多个区域的监测数据,其中所述监测数据存储器能够存储指示所述内存地址空间的至少两个非邻接区域的监测数据;
处理电路,响应于更新监测指令而更新由所述监测数据存储器所存储的所述监测数据;及
监测电路,用来监测对内存系统进行的存取,及用来响应于侦测到与由所述监测数据所指示的所述多个区域中的至少一者相关联的数据已改变,而向所述处理电路提供通知。
2.如权利要求1所述的装置,其中,响应于等待事件指令,所述处理电路被配置为进入节能状态;及
所述处理电路被配置为响应于来自于所述监测电路的所述通知而离开所述节能状态。
3.如权利要求1和2中任一项所述的装置,其中,所述更新监测指令在更新所述监测数据之后识别多个地址,所述多个地址识别要被监测改变的区域。
4.如权利要求3所述的装置,其中,所述更新监测指令指定基础地址及位映像,所述位映像识别所述多个地址相对于所述基础地址的偏移。
5.如前述权利要求中任一项所述的装置,其中,所述更新监测指令识别至少一个地址,该至少一个地址识别要添加到由所述监测数据所指示的一组区域的至少一个新区域。
6.如前述权利要求中任一项所述的装置,其中,响应于报告监测结果指令,所述处理电路被配置为请求所述监测电路返回所述数据已改变的所述至少一个区域的指示。
7.如前述权利要求中任一项所述的装置,其中,所述处理电路被配置为响应于以下情况中的一者而清除所述监测数据:
由所述处理电路执行清除监测指令;及
异常事件发生。
8.如前述权利要求中任一项所述的装置,包括互连器,所述互连器用来基于多个主设备或高速缓存与所述互连器之间所交换的一致性协议交易来管理所述多个主设备或高速缓存之间的一致性;
其中,所述监测电路被配置为基于所述一致性协议交易来侦测与由所述监测数据所指示的所述多个区域中的至少一者相关联的数据是否已改变。
9.如权利要求8所述的装置,其中各个一致性协议交易指定具有预定高速缓存行大小的数据区块的地址;及
所述装置包括配置寄存器,所述配置寄存器指定指示所述预定高速缓存行大小的值。
10.如前述权利要求中任一项所述的装置,其中,所述监测数据存储器及所述监测电路中的至少一者包括逆向转译机制,所述逆向转译机制用来将针对所述内存系统所进行的受监测存取所指定的物理地址转译成由所述处理电路所使用的虚拟地址。
11.如前述权利要求中任一项所述的装置,其中,所述监测数据存储器包括监测数据高速缓存,所述监测数据高速缓存包括多个条目,各个条目限定所述地址空间中要被监测改变的相对应区域;及
该装置包括互连器,所述互连器用来根据一致性协议针对包括所述监测数据高速缓存的多个高速缓存管理一致性。
12.如权利要求11所述的装置,其中,响应于所述处理电路执行所述更新监测指令,所述监测数据高速缓存被配置为分配处于所述一致性协议的共享一致性状态下的至少一个新条目;
所述互连器被配置为响应于侦测到对所述相对应区域进行的写入,而触发所述监测数据高速缓存的给定条目从所述共享一致性状态转变成无效一致性状态的转变;及
所述监测电路被配置为响应于侦测到所述给定条目从所述共享一致性状态转变成所述无效一致性状态的转变,而向所述处理电路提供所述通知。
13.如权利要求12所述的装置,其中,所述监测数据高速缓存被配置为在从所述共享一致性状态转变成所述无效一致性状态的所述转变之后保留所述给定条目。
14.如权利要求12和13中任一项所述的装置,其中,所述监测电路被配置为在已将区域指示提供给所述处理电路之后,响应于侦测到由所述处理电路对所述相对应区域进行的读取或写入存取,而将条目从所述无效一致性状态切换成所述共享一致性状态,该区域指示将所述相对应区域识别为被侦测到改变的区域。
15.如权利要求11至14中任一项所述的装置,其中,所述监测数据高速缓存的各个条目指定报告状态信息,所述报告状态信息指示该条目是否处于以下状态中的一者:
无效报告状态,指示所述监测电路仍要侦测与所述相对应区域的相关联数据的改变;
已改变状态,指示所述监测电路已侦测到与所述相对应区域相关联的数据的改变,但仍要将区域指示提供给所述处理电路,该区域指示将所述相对应区域识别为侦测到改变的区域;及
已报告状态,指示所述处理电路仍要在被提供所述区域指示之后存取所述相对应区域。
16.如权利要求15所述的装置,其中,响应于由所述处理电路执行报告监测结果指令,所述监测电路被配置为向所述处理电路返回相对应于至少一个区域的至少一个区域指示,所述监测数据高速缓存的所述相对应条目针对所述至少一个区域而处于所述已改变状态,且所述监测电路被配置为针对所述至少一个区域中的各者触发所述相对应条目从所述已改变状态到所述已报告状态的转变。
17.如权利要求15和16中任一项所述的装置,其中,响应于由所述处理电路对所述监测数据高速缓存的所述相对应条目处于所述已报告状态的给定区域进行的读取或写入存取,所述监测电路被配置为触发所述监测数据高速缓存的所述相对应条目从所述报告状态到所述无效报告状态的转变。
18.如前述权利要求中任一项所述的装置,其中,所述监测数据存储器被配置为存储数据结构,该数据结构提供要监测的该多个区域的过滤器表示;
其中,所述监测电路被配置为以数据已改变的区域的地址询问所述过滤器表示,及在所述询问侦测到与所述过滤器表示的匹配时向所述处理电路提供所述通知。
19.如权利要求18所述的装置,包括地址队列,该地址队列用来存储所述过滤器的所述询问侦测到匹配的一个或更多个地址的指示。
20.一种方法,包括以下步骤:
响应于更新监测指令,更新指示内存地址空间中要被监测改变的多个区域的监测数据,所述多个区域包括该内存地址空间的至少两个非邻接区域;
监测对内存系统进行的存取;及
响应于侦测到与由所述监测数据所指示的所述多个区域中的至少一者相关联的数据已改变,而向所述处理电路提供通知。
21.一种存储介质,存储虚拟机计算机程序,该虚拟机计算机程序用来在由数据处理装置执行时依据如权利要求1到19中任一项所述的装置提供指令执行环境。
CN201880018227.5A 2017-03-16 2018-01-24 内存存取监测 Active CN110402433B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/460,358 US10649684B2 (en) 2017-03-16 2017-03-16 Memory access monitoring
US15/460,358 2017-03-16
PCT/GB2018/050198 WO2018167455A1 (en) 2017-03-16 2018-01-24 Memory access monitoring

Publications (2)

Publication Number Publication Date
CN110402433A true CN110402433A (zh) 2019-11-01
CN110402433B CN110402433B (zh) 2024-04-12

Family

ID=61157227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880018227.5A Active CN110402433B (zh) 2017-03-16 2018-01-24 内存存取监测

Country Status (6)

Country Link
US (1) US10649684B2 (zh)
EP (1) EP3596601A1 (zh)
KR (1) KR102536449B1 (zh)
CN (1) CN110402433B (zh)
TW (1) TWI764985B (zh)
WO (1) WO2018167455A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10795820B2 (en) * 2017-02-08 2020-10-06 Arm Limited Read transaction tracker lifetimes in a coherent interconnect system
NO344681B1 (en) * 2017-09-05 2020-03-02 Numascale As Coherent Node Controller
US10366027B2 (en) * 2017-11-29 2019-07-30 Advanced Micro Devices, Inc. I/O writes with cache steering
GB2571536B (en) * 2018-02-28 2020-03-11 Imagination Tech Ltd Coherency manager
GB2571538B (en) 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
GB2571539B (en) 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
KR102183648B1 (ko) * 2018-11-30 2020-11-26 서울대학교산학협력단 중첩 페이징 없이 커널을 보호하는 방법 및 그 장치
US11055221B2 (en) * 2019-03-22 2021-07-06 Samsung Electronics Co., Ltd. Speculative DRAM read, in parallel with cache level search, leveraging interconnect directory
WO2021167659A1 (en) * 2019-11-14 2021-08-26 Trideum Corporation Systems and methods of monitoring and controlling remote assets
GB2597938A (en) * 2020-08-10 2022-02-16 Advanced Risc Mach Ltd Monitoring memory locations to identify whether data stored at the memory locations has been modified
KR20220055771A (ko) * 2020-10-27 2022-05-04 삼성전자주식회사 전자 장치, 차량용 장치 및 데이터 센터
CN116745754A (zh) * 2021-02-09 2023-09-12 华为技术有限公司 一种访问远端资源的系统及方法
CN113672499A (zh) * 2021-07-20 2021-11-19 平头哥(杭州)半导体有限公司 追踪可执行程序中的目标变量的方法和系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765195A (en) * 1995-12-08 1998-06-09 Ncr Corporation Method for distributing interprocessor interrupt requests via cache memory coherency mechanisms
CN1752941A (zh) * 2004-09-20 2006-03-29 华为技术有限公司 一种内存监控的装置及方法
US20070088916A1 (en) * 2005-10-19 2007-04-19 Jacobson Quinn A Technique for thread communication and synchronization
US20090024799A1 (en) * 2007-07-20 2009-01-22 Sanjeev Jahagirdar Technique for preserving cached information during a low power mode
US20130097385A1 (en) * 2011-10-18 2013-04-18 Advanced Micro Devices, Inc. Dual-granularity state tracking for directory-based cache coherence
US20140156950A1 (en) * 2012-11-30 2014-06-05 Yen Hsiang Chew Emulated message signaled interrupts in multiprocessor systems
US20150178199A1 (en) * 2013-12-20 2015-06-25 Liang-Min Wang Method and apparatus for shared line unified cache
WO2015101951A1 (en) * 2014-01-03 2015-07-09 Stefanos Kaxiras System and method for event monitoring in cache coherence protocols without explicit invalidations
US20150378927A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Allowing non-cacheable loads within a transaction

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2393270B (en) * 2002-09-19 2005-07-27 Advanced Risc Mach Ltd Executing variable length instructions stored within a plurality of discrete memory address regions
JP4890048B2 (ja) * 2006-02-24 2012-03-07 株式会社日立製作所 記憶制御装置及び記憶制御装置を用いたデータマイグレーション方法
US8468531B2 (en) 2010-05-26 2013-06-18 International Business Machines Corporation Method and apparatus for efficient inter-thread synchronization for helper threads
US9268683B1 (en) * 2012-05-14 2016-02-23 Kandou Labs, S.A. Storage method and apparatus for random access memory using codeword storage
US20140129784A1 (en) 2012-11-07 2014-05-08 Mellanox Technologies, Ltd. Methods and systems for polling memory outside a processor thread
US8938587B2 (en) * 2013-01-11 2015-01-20 International Business Machines Corporation Data recovery for coherent attached processor proxy
US20140250442A1 (en) 2013-03-01 2014-09-04 Advanced Micro Devices, Inc. Conditional Notification Mechanism
US9411663B2 (en) 2013-03-01 2016-08-09 Advanced Micro Devices, Inc. Conditional notification mechanism
US10705961B2 (en) * 2013-09-27 2020-07-07 Intel Corporation Scalably mechanism to implement an instruction that monitors for writes to an address
US20170286301A1 (en) * 2016-04-01 2017-10-05 Intel Corporation Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5765195A (en) * 1995-12-08 1998-06-09 Ncr Corporation Method for distributing interprocessor interrupt requests via cache memory coherency mechanisms
CN1752941A (zh) * 2004-09-20 2006-03-29 华为技术有限公司 一种内存监控的装置及方法
US20070088916A1 (en) * 2005-10-19 2007-04-19 Jacobson Quinn A Technique for thread communication and synchronization
US20090024799A1 (en) * 2007-07-20 2009-01-22 Sanjeev Jahagirdar Technique for preserving cached information during a low power mode
US20130097385A1 (en) * 2011-10-18 2013-04-18 Advanced Micro Devices, Inc. Dual-granularity state tracking for directory-based cache coherence
US20140156950A1 (en) * 2012-11-30 2014-06-05 Yen Hsiang Chew Emulated message signaled interrupts in multiprocessor systems
US20150178199A1 (en) * 2013-12-20 2015-06-25 Liang-Min Wang Method and apparatus for shared line unified cache
WO2015101951A1 (en) * 2014-01-03 2015-07-09 Stefanos Kaxiras System and method for event monitoring in cache coherence protocols without explicit invalidations
US20150378927A1 (en) * 2014-06-27 2015-12-31 International Business Machines Corporation Allowing non-cacheable loads within a transaction

Also Published As

Publication number Publication date
TWI764985B (zh) 2022-05-21
KR102536449B1 (ko) 2023-05-25
WO2018167455A1 (en) 2018-09-20
EP3596601A1 (en) 2020-01-22
US20180267741A1 (en) 2018-09-20
TW201835777A (zh) 2018-10-01
CN110402433B (zh) 2024-04-12
US10649684B2 (en) 2020-05-12
KR20190126849A (ko) 2019-11-12

Similar Documents

Publication Publication Date Title
CN110402433A (zh) 内存存取监测
EP1906313B1 (en) Memory management in a shared memory system
US8024528B2 (en) Global address space management
CN103294616B (zh) 信息处理设备和控制方法
US7698523B2 (en) Hardware memory locks
US6920532B2 (en) Cache coherence directory eviction mechanisms for modified copies of memory lines in multiprocessor systems
DE102013201079A1 (de) Mechanismus des Weiterleitungsfortschritts für Speichervorgänge beim Vorhandensein einer Überlastung in einem System, das Belastungen durch Zustandsänderungen begünstigt
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
US6934814B2 (en) Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering
JPH10133917A (ja) コヒーレンシー関連エラー・ロッジング能力を有するマルチプロセス・システム
US6925536B2 (en) Cache coherence directory eviction mechanisms for unmodified copies of memory lines in multiprocessor systems
US6950913B2 (en) Methods and apparatus for multiple cluster locking
US6195731B1 (en) Instrumentation device for a machine with non-uniform memory access
JP2017027324A (ja) 演算処理装置及び演算処理装置の制御方法
US20080082622A1 (en) Communication in a cluster system
US7653790B2 (en) Methods and apparatus for responding to a request cluster
US6226718B1 (en) Method and system for avoiding livelocks due to stale exclusive/modified directory entries within a non-uniform access system
JPH07152647A (ja) 共有メモリマルチプロセッサ
JPH09311820A (ja) マルチプロセッサシステム
US20240037038A1 (en) Coherency Domain Cacheline State Tracking
TW202345009A (zh) 中斷控制器、設備、中斷控制方法、及電腦可讀取媒體
DE3485821T2 (de) Verfahren und mechanismus zum arbeitslastausgleich in einem mehreinheitensystem.
CN116501456A (zh) 用于利用一致性接口的队列管理的系统、方法和设备
JPH09238138A (ja) ネットワーク管理装置
JPH04340636A (ja) ローカルキャッシュ一貫性維持装置

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