CN104636182B - 一种操作数据处理系统的方法、数据处理系统和处理器 - Google Patents

一种操作数据处理系统的方法、数据处理系统和处理器 Download PDF

Info

Publication number
CN104636182B
CN104636182B CN201410612285.4A CN201410612285A CN104636182B CN 104636182 B CN104636182 B CN 104636182B CN 201410612285 A CN201410612285 A CN 201410612285A CN 104636182 B CN104636182 B CN 104636182B
Authority
CN
China
Prior art keywords
buffer
data
cache lines
producer
memory
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.)
Expired - Fee Related
Application number
CN201410612285.4A
Other languages
English (en)
Other versions
CN104636182A (zh
Inventor
S·盖
G·L·格思里
H·M·勒
沈昱
P·G·威廉姆斯
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN104636182A publication Critical patent/CN104636182A/zh
Application granted granted Critical
Publication of CN104636182B publication Critical patent/CN104636182B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种用于操作数据处理系统的技术,其包括:确定将要受到缓存器损害的缓存行是否包括还没有被记录的高可用性(HA)数据。响应于确定将要受到缓存器损害的缓存行包括还没有被记录的HA数据,经由第一非阻塞通道将HA数据的地址写入第一存储器中的HA脏地址数据结构,例如,脏地址表(DAT)。受到缓存器损害的缓存行经由第二非阻塞通道被写入第二存储器。

Description

一种操作数据处理系统的方法、数据处理系统和处理器
相关申请的交叉引用
本申请涉及下列普通受让专利申请:Guy L.Guthrie等人的美国专利申请(律所案号:No.AUS920130057US1)“TECHNIQUES FOR MOVING CHECKPOINT-BASED HIGH-AVAILABILITY LOG AND DATA DIRECTLY FROM A PRODUCER CACHE TO A CONSUMER CACHE”和Sanjeev Ghai等人的美国专利申请(律所案号:No.AUS920130233US1)“TECHNIQUES FORLOGGING ADDRESSES OF HIGH-AVAILABILITY DATA”,所有它们的整个内容在此通过引用被结合。
技术领域
本申请通常涉及基于检查点的高可用性系统,更具体地,涉及经由非阻塞通道记录高可用性数据的地址。
背景技术
计算可根据应用和支持平台来考虑。支持平台通常包括由一个或多个处理器核、输入/输出、存储器和固定存储器(它们的组合支持操作系统(OS),操作系统又支持一个或多个应用)构成的硬件体系架构。应用可以被认为是自我包含的逻辑簇,其依赖核心对象文件和相关的资源文件。由于计算对于现代工业已经成为整体,因此,应用已经变成共同依赖于其它应用的存在。也就是说,应用的必要环境不仅包括底层的操作系统和支持硬件平台,而且包括其它关键应用。
关键应用可包括应用服务器、数据库管理服务器、协作服务器和通常被称为中间件的通信逻辑。给定应用的复杂性和平台互操作性,在单个硬件平台上执行的不同应用组合可表现不同程度的性能和稳定性。虚拟化技术在支持平台和执行应用之间插入一个层。从业务连续性和灾难恢复的角度来看,虚拟化提供了环境可移植性的固有优势。例如,移动被配置了多个不同应用的整个环境可以像从一个支持硬件平台向另一个支持硬件平台移动虚拟镜像一样简单。
通常,当在镜像间维持虚拟分离时,更强大的计算环境可支持多个不同的虚拟镜像的共存。因此,一个虚拟镜像中的故障条件通常不能危及同一个硬件平台中其它共存虚拟镜像的完整性。虚拟机监控器(VMM)或管理程序(hypervisor)管理每个虚拟镜像与由硬件平台提供的底层资源之间的交互。裸机管理程序直接在硬件平台上运行,与OS如何直接在硬件上运行相似。相反,被托管的管理程序在主机OS内运行。在任意一种的情况下,管理程序可支持不同客机(guest)OS镜像或虚拟机(VM)镜像的操作。VM镜像的数量仅仅受到保存VM镜像或硬件平台的VM容器的处理资源的限制。
虚拟化已经被证明对于需要分离的计算环境以用于被部署在单个硬件平台上的不同类型的应用的终端用户特别有用。例如,原产于一种类型的硬件平台的主OS可以提供原产于不同的硬件平台的虚拟化客机OS(以使得需要客机OS存在的应用可与需要主OS存在的其它应用共存)。在这种情况下,不需要终端用户提供分离的计算环境以支持不同类型的应用。也就是说,与客机OS无关,访问单个硬件平台的底层资源维持静态。
在组成应用解决方案中,虚拟化环境已经被部署以聚集不同VM中的不同的相互依赖的应用。例如,应用服务器可在一个VM内执行,而数据库管理服务器在不同的VM中执行,网页服务器在另一个VM中执行。每个VM可在安全网络中彼此可通信地连接,应用的任何特定部署可被实时迁移到不同的部署上,而无需干扰其它VM上的其它应用的执行。在典型的实时迁移中,VM可以从一个主机服务器移动到另一个主机服务器,以例如允许服务器维护或者允许VM的硬件支持的改进。
基于检查点的高可用性(HA)是其中在主要主机上运行的VM每个周期(例如25ms)将它的处理器和存储器状态镜像到二级主机上的技术。镜像过程通常包括:跟踪主要VM的存储器和处理器状态的变化;周期性地停止主要VM;通过网络向二级主机发送变化;等待二级主机确认接收到存储器和处理器状态更新;以及重新开始主要VM。镜像过程确保如果主要主机遭受突然的硬件故障,则二级主机能够以最小的服务损失来重新开始工作负载。如果二级主机检测到主要主机没有响应或者从主要主机接收到明确的通知,则二级主机启动VM的镜像版本,对外部世界的表现是VM越过主要主机的故障而无缝地继续执行。
尽管基于检查点的HA技术提供了针对硬件故障的有效保护,但是基于检查点的HA技术并没有针对软件故障进行保护。因为主要VM的处理器和存储器的状态被如实地再现在二级主机上,所以,如果软件崩溃(例如,空指针的解引用(de-reference))造成故障转移到二级主机,则VM从最后一个检查点重新开始执行,如果程序执行是确定性的,则会发生同样的错误。存在一些受约束的情形,其中,如果软件故障触发了故障转移,则VM可以不崩溃。然而,这些情况是少见的,并更多地靠运气而不是设计。例如,当工作负载在二级主机上重新开始时,被证明是一个处理器可访问正被另一个处理器修改的数据的竞态条件的软件故障可能不发生,由于调度的偶然性,该数据可能不会最终被同时访问。
发明内容
一种用于操作数据处理系统的技术包括确定将要受到缓存器损害的缓存行是否包括还没有被记录的高可用性(HA)数据。响应于确定将要受到缓存器损害的缓存行包括还没有被记录的HA数据,经由第一非阻塞通道将HA数据的地址写入到第一存储器的HA脏地址数据结构,例如脏地址表(DAT)。受到缓存器损害的缓存行经由第二非阻塞通道被写入第二存储器。
上述概要包含细节的简化、概括和省略,并不意味着作为所要求保护的主题的全面描述,而是意在提供某些与其相关的功能的简要概述。在审查了下面的附图和详细撰写的说明后,本领域技术人员将清楚所要求保护的主题的其它系统、方法、功能、特征和优点。
在下面详细撰写的说明中,本发明的上述以及其它目的、特征和优点会变得明显。
附图说明
将结合附图来阅读示例性实施例的说明,其中:
图1是根据本公开的被配置为产生高可用性(HA)日志和数据的示例性数据处理系统环境的相关部分的图;
图2是可部署在图1的数据处理环境中的数据处理系统(其包括生产者核和生产者缓存器)和另一个数据处理系统(其包括消费者核和消费者缓存器)的图;
图3是描述根据本发明的实施例的HA日志和数据从图2的生产者缓存器到消费者缓存器的迁移的图;
图4是根据本发明的另一个实施例的缓存器的相关部分的图,该缓存器的目录包括每个缓存行的HA位以指示缓存行的地址是否需要记录;
图5是可在根据本发明的实施例配置的生产者/消费者缓存器层级结构中发生的示例性存储器操作的图;
图6是根据本发明的另一个实施例的用于经由非阻塞通道将HA数据的地址记录在脏地址数据结构(例如,脏地址表(DAT))中的示例性过程的流程图。
具体实施方式
示例性实施利提供了一种方法、数据处理系统和处理器,其被配置为经由非阻塞通道在脏地址数据结构(例如,脏地址表(DAT))中记录高可用性(HA)数据的地址。
在以下本发明的示例性实施例的详细说明中,本发明可在其中被实施的特定示例性实施例以足够的细节进行描述,以使得本领域技术人员能够实现本发明,应当理解,可以利用其它实施例,并且在不脱离本发明的精神或范围下,可以进行逻辑、体系、编程、机械、电气和其它变化。因此,下面的详细说明并不是限制的意思,本发明的范围由后附的权利要求及其等同来限定。
应当理解,使用特定组件、设备和/或参数名称仅仅是举例,并不意味着限制本发明。因此,本发明可以用用于描述在此的组件/设备/参数的不同专有名词/术语来实现,而没有任何限制。在此所利用的每个术语将被赋予其在给定使用该术语的上下文中的最宽的解释。如在此所使用的,术语“连接”可包含组件或单元之间的直接连接或者利用一个或多个中间组件或单元的组件或单元之间的间接连接。如在此所使用的,属于“系统存储器”与术语“主存储器”是同义词,但不包括“缓存器”或者“缓存存储器”。如在此所使用的,术语“非阻塞”并不意味着逐出(cast-out)操作可以不必等待或者可以不被重试。然而,“非阻塞”意味着逐出操作不能被无限地重试,并且由于逐出操作而不会发生死锁或活锁。换句话说,术语“非阻塞通道”意味着通道上的操作不会导致依赖性在任何其它操作上创建,以使得死锁或活锁发生。
如上所述,基于检查点的高可用性(HA)是在“主要主机”上运行的虚拟机(VM)定期(例如,每25ms)执行将主要主机的处理器状态和存储器状态镜像到“二级主机上”的“检查点”的技术。镜像过程包括:跟踪VM的处理器寄存器和存储器的变化;周期性地停止VM;向二级主机发送所跟踪的变化(例如,通过网络);等待二级主机确认接收到处理器和存储器状态更新;以及重新开始VM。这确保了如果主要主机遭受到突然的硬件故障,则二级主机能够以最小的服务损失重新开始工作负载。
在一个或多个传统的基于检查点的HA实现中,管理程序使用页面保护来识别VM存储器的修改区域,其中所有存储器在检查点后被标记为只读。管理程序的作用是:检测在对存储器的页面首次执行存储时发生的后续故障;恢复对页面的原始访问权限;以及将页面标记为要求在下一个检查点传输页面的“脏”。通常,与没有应用检查点相比,应用检查点技术的VM通常引发更多的页面保护故障。应当知道,通常页面上单个字节的变化需要整个页面被传送给二级系统,因为一旦页面保护被移除,则如果不使用额外的处理器周期和额外的存储器以将页面与原始页面的副本相比较,则无法告诉该页面有多少被修改。因此需要向二级系统发送整个脏页面,其结果,传统的HA系统通常使用相对小的页面尺寸(例如,4K页面尺寸,与64K页面尺寸相比)以减少主要系统和二级系统之间的流量。在这种情况下,传统的HA系统性能可能受到不利影响,因为操作系统(OS)不能够利用大的页面。
根据本公开的一个或多个方面,存储器的修改可通过维持填充了从上一次检查点以来已经被生产者处理器核(生产者核)修改的缓存行的地址的缓冲区来以缓存行粒度记录,而没有页面故障。缓冲区可在检查点期间检查或者在检查点之前推测地检查,以便确定哪些缓存行需要被传输到二级系统以维持一致的存储器镜像。由于更小的修改粒度(即,缓存行,而不是页面),在缓存器中维持缓冲区通常减少页面故障,并降低主要系统与二级系统之间的流量。缓冲区方案也是与页面尺寸无关,因此,HA系统可利用更大的页面尺寸而不会发生与页面尺寸有关的性能惩罚。
根据本发明的一个或多个实施例,记录缓存行地址相对于已知方案具有显著的性能优点和复杂性的降低。在各种实施例中,所公开的技术可被实现为硬件,其中某些组件可被实现为缓存器和通过仅仅能够由特许管理程序代码访问的处理器寄存器显露的某些参数。在一个或多个实施例中,管理程序软件被修改以利用所增加的硬件特征。
现代处理器设计通常包括某些形式的逐出引擎和侦听干涉(snoop-intervention)引擎。逐出引擎负责将从缓存器中逐出的数据写回主存储器(或系统存储器)或者写入与另一个处理器相关联的缓存器。侦听干涉引擎负责将数据从给定缓存器提供给正试图访问包括该数据的缓存行的另一个处理器。逐出引擎的操作可例如通过释放缓存器中的空间以用于进入的数据的要求来触发。侦听干涉引擎的操作可被触发以例如在处理器想要修改缓存行中的数据时向另一个处理器提供对该缓存行的独占访问。通常,在检查点间隔(即,两个检查点之间的时间)期间,在检查点之间被修改的每个缓存行或者被驻留在缓存器中作为脏数据或者已经通过了逐出或侦听干涉引擎,并且在检查点,缓存器漫游/擦除(walk/scrub)可被触发。
缓存器刷新/清除(flush/purge)将脏数据推出到主存储器,以使得在检查点之间修改的每个缓存行被确保已通过了逐出引擎。逐出/侦听干涉引擎可以被修改,以使得不仅将脏缓存行数据写入存储器/另一个缓存器,而且引擎可在被修改的缓存行的地址被写入驻留在缓存器中的环形缓冲区的模式下操作。为了提高效率,缓存器硬件可以被配置为管理中间缓冲区(例如,两个缓存行深度的缓冲区),其收集由逐出引擎和/或侦听干涉引擎报告的地址(例如,8字节地址)。在一个或多个实施例中,当中间缓冲区被填充了全缓存行负载的地址时,逐出引擎(通过逐出命令)将中间缓冲区的内容移动到环形缓冲区。在至少一个实施例中,中间缓冲区中的每个缓存行拥有多达16个的地址(例如,128字节)。
应当知道,并不是数据处理系统的所有处理器核在所有时间都运行在生产者模式下。在生产者模式下运行的处理器核在这里被称为“生产者核”。处理器核可通过设置能够由管理程序访问的硬件标记来置于生产者模式中。在至少一个实施例中,当处理器核处于生产者核模式中时,为了管理写入环形缓冲区,逐出引擎维持包含以下内容的寄存器:基址(其是指向缓冲区的基地址的指针);生产者头部(其是缓冲区内下一个地址将被写入的偏移);界线(其是边界指针);以及尺寸(其是缓冲区尺寸的指示)。
在各种实施例中,HA日志被维持在与分配给虚拟机(VM)的存储器分离并且仅仅可由管理程序访问的存储器中。当处于生产者模式中时,逐出和侦听干涉操作加上定期逐出和/或侦听干涉行为被配置为将所修改的缓冲行的地址记录在缓存器的当前填充的中间缓冲区中(例如,使用乒乓缓冲,以使得一个缓冲区被填充,而另一个缓冲区被写回到主存储器)。当处于生产者模式中时,逐出引擎被命令以通过以下行为将缓存行从缓存器的中间缓冲区(如它们填充的)移动到缓存器的环形缓冲区:将缓存行地址的存储发布给生产者头部指针;增加生产者头部指针;如果生产者头部指针前进到基址加上尺寸,则绕回到基址;如果生产者头部等于界线,则故障被传送到管理程序。
在一个或多个实施例中,当检查点出现时:主要系统上的管理程序暂停主要VM的执行;缓存器漫游操作被触发以生成HA日志的条目;消费者核遍历HA日志,该消费者核可以是物理上不同的核或者相同的核(但不再处于生产者模式)。对于每个HA日志条目,消费者核:读取地址;从VM的存储器中读取在该地址的当前数据;将(地址,数据)对发送到二级系统,在二级系统中,(地址,数据)对用于更新二级VM的存储器镜像;与二级系统同步其它状态(例如,处理器寄存器);然后,启动主要VM执行的重新开始。
消费者核可以实现各种优化。例如,当特定地址在检查点间隔中已经被逐出若干次时,逐出地址将在日志中出现多次。应当知道,复制逐出地址仅仅需要被传输到二次系统一次,因为是VM的存储器中的当前数据被传输,而不是在逐出时的数据(其未被记录)。因此,消费者核可执行某些减少,以降低去往二级系统的带宽。如上所述,当主要VM利用多个处理器核且同一个缓存行在同一个检查点间隔期间被超过一个的生产者核逐出时,地址将出现在多个日志中,但仅需要被传输一次。此外,HA日志的某些减少可被执行以减少带宽。
消费者核可在检查点之前开始推测性地处理生产者核的HA日志。尽管推测性地处理生产者核的HA日志降低了减少的范围,但推测性地处理生产者核的HA日志平滑了去往二级系统的数据迁移,并可更有效地使用可用的总带宽。应当注意,由主要VM利用的大部分工作足迹可在缓存器中驻留检查点之间的时间段,大部分记录在检查点时间发生。由硬件进行的自然缓存可对仅记录指定缓存行一次进行有效工作,即使当该缓存行已经在检查点之间被存储多次。界线寄存器的目的是确保没有数据在检查点操作期间由于日志包装而丢失。基于生产者头部相对界线的检查,界线指向检查点间隔中的第一个日志记录以确保数据不会被覆写。
在各种实施例中,如果到达界线,则启动故障转移到二级系统或者重新同步所有VM存储器。故障转移到二级系统或者VM存储器重新同步是值得的,因为在缓存器中可能有还没有通过逐出引擎的脏数据。在这种情况下,仅仅启动即时检查点不是期望的,因为没有空间可用于将被记录的脏地址。通常,管理程序应当确保日志具有适当大小并且还要定期监控生产者头部指针,如果预见到日志溢出,则启动早期检查点。如果消费者核推测性地处理日志,则管理程序可周期性地向前移动界线指针,以使得溢出仅在生产者核与消费者核还没有处理的日志条目冲突时(在消费者核落后的情况下)才被触发。
如上所述,缓存器硬件可以被修改以确保缓存器中的环形缓冲区以定期的间隔包括自上次检查点以来已经被指定处理器核修改了的所有存储器位置的列表。通常,修改使得逐出引擎和侦听干涉引擎记录在检查点之间离开缓存器的存储器地址,并在检查点处启动缓存器刷新以确保没有修改了的数据保留在缓存器中(从而确保修改了的数据通过逐出引擎,并被记录)。该方案的缺点在于在每个检查点间隔都需要缓存器刷新。缓存器刷新导致对逐出引擎和存储器子系统的额外压力,并通常会降低在高可用性(HA)模式下运行的工作负载的性能。
根据另一个方案,通过在缓存器中引入用于每个缓存行的新的“HA位”,所有地址被确保在检查点间隔处记录,而无需进行缓存器刷新。当处理器和在生产者核模式下运行时,响应于缓存行的修改,HA位被断言(asserted),并可被解除断言(de-asserted)作为缓存器漫游操作的一部分,该操作在检查点处执行,并使缓存器漫游,导致HA位被断言的缓存行的地址被记录到环形缓冲区。接着,对于所有被记录的缓存行,HA位被解除断言。在该实现中,与缓存行相关联的数据并没有立即写入主存储器中,缓存行仍然在缓存器中被标记为“脏”。处理器缓存器通常被实现为查找表,其将地址(标记)与某些数据相关联。标记可以是虚拟的或物理的地址或者其组合,数据是固定大小的(例如,缓存行)。对于任何指定标记,在缓存器中有几个可以找到数据的位置,因此,缓存器查找通常涉及检查多个时隙(slot)以找到匹配标记。另外,时隙可能不包含任何数据,因此,时隙通常不仅包括将要与标记相关联的数据,还包括多个标记。
根据另一个实现,HA位被添加到缓存器中的每个时隙上。当与缓存行相关联的数据被在生产者核模式下运行的处理器核更新时,HA位被断言。在检查点处,缓存器漫游操作遍历整个缓存器,类似于缓存器刷新,但并不检查“脏位”和将数据推出主存储器,相反,缓存器漫游检查“HA位”并将物理地址推出环形缓冲区。
在大多数计算系统中,通常有几层缓存器(例如,从第1级到第N级(即,L1到LN,其中N通常是3或4))。L1缓存器是最快、最小的缓存器,最接近于处理器核,每个较低级的缓存器与较高级的缓存器相比趋向于更慢和更大。在一个或多个实施例中,缓存器漫游操作遍历所有可包含HA修改的数据的缓存器,但这并不必然意味着所有缓存器必须被遍历,因为缓存器级别可能是通写(write-through)或回写(write-back)。众所周知,通写缓存器在缓存器中保持数据,而且还同步地将该数据推到下一个缓存器级别以促进用于随后的读取的快速访问时间。用于通写缓存器的写比在回写缓存器中的写更昂贵,因为写入者必须等待来自(更慢)下一级别缓存器的写完成。通写不需要被漫游。回写缓存器在缓存器中保持数据,但并没有同步地将该数据推入到缓存器的下一级别。采用回写缓存器,写入缓存器的过程更快,但以必须管理对称的多处理器(SMP)系统中的缓存器之间的数据一致性(coherency)为代价。当数据从缓存器中被逐出以为其它数据腾出空间时,会产生写入缓存器的下一级别的成本。
在多层缓存器层级体系中,只有回写缓存器需要在检查点处通过缓存器漫游操作遍历。例如,在包括通写L1缓存器、回写L2缓存器和回写L3缓存器的系统中,有处理器执行的任何写将去往L1缓存器,并且(由于它是通写缓存器)也被写入L2缓存器。在这种情况下,L1缓存器中的脏数据也在L2缓存器中。由于在L2缓存器中需要更多的空间,因此,脏数据被逐出,并成为L3缓存器中的脏数据。在该例子中,在生产者核模式下执行的写操作设置L2缓存器中用于相关联的缓存行的HA位。当L2缓存器中HA位被断言的缓存行被逐出到L3缓存器时,L3缓存器中与该缓存行相关联的HA位被断言。在该例子中,L1缓存器不需要HA位。在检查点处,缓存器漫游操作需要遍历L2和L3缓存器,将所有具有被断言的HA位的缓存行的物理地址写入环形缓冲区,并在操作结束时对所有HA位解除断言。
上述说明描述了增强缓存器硬件以确保缓存器中的环形缓冲区以定期的间隔存储自上次检查点以来已经被指定处理器核修改了的所有存储器位置的列表。修改了的存储器位置的列表可用于提高系统性能和可靠性。修改了的存储器位置的列表(存储在“环形缓冲区”、“HA日志”或“HA表”中)由支持缓存器维护,例如L2/L3缓存器,修改了的缓存器行保存HA数据。HA日志和HA数据由消费者核进行处理以提供系统可靠性和冗余。通常,当产生HA日志时,HA产生器已经将HA日志直接从缓存器中的环形缓冲区写入主存储器。当HA数据从与HA生产者核相关联的缓存器受到损害时,HA数据还通常已经被写入主存储器。
为了处理HA日志和HA数据,消费者核通常已从主存储器中读取HA日志和HA数据。相对于在此所公开的技术,传统的方案需要多次访问主存储器,造成存储器资源的相对大的带宽成本,消耗功率,并增加消费者核处理HA日志和HA数据的时间。在现代大型服务器中,存储器资源是宝贵的,存储器功率是系统功率的主要组成。根据本公开,处理HA日志和HA数据的时间被减少,这增加了系统可致力于其它任务的时间。
根据本发明的一个或多个实施例,与HA生产者核相关联的生产者缓存器将HA日志(从生产者缓存器的环形缓冲区)直接移动到HA消费者核的缓存器中。根据各个方面,生产者缓存器还将在生产者缓存器中存储的HA数据直接移动到消费者核的缓存器中。这样,消除了在生产者缓存器将HA日志和HA数据移出到主存储器后消费者核必须从主存储器获取HA日志和HA数据的操作。因此,减少了消费者核执行HA系统备份所需要的时间,降低了存储器资源上的负担,并减少了与实施HA相关联的功率消耗。
在各种实施例中,HA生产者缓存器被配置为识别应当被放进HA日志中的缓存行地址。对于HA日志条目,HA生产者包括识别HA日志的位置的硬件寄存器。在一个或多个实施例中,HA生产者缓存器利用系统总线“缓存器注入(cache inject)”命令或“强制的缓存器注入(forced cache inject)”命令来连贯地将HA日志条目直接安装在HA消费者核的缓存器内(而不是将HA日志条目写入主存储器)。缓存器注入命令被配置为维持一致性,因为生产者核在HA日志写入时可能并不具有HA日志缓存行的所有权。众所周知,缓存器注入命令是专用的系统总线命令,其帮助将缓存行直接写入缓存器(例如,消费者缓存器)。HA数据可以根据生产者缓存器的目录中用于跟踪哪些缓存行被HA生产者核修改的“HA位”来与非HA数据区分。
当生产者缓存器损害HA数据时,横向逐出(lateral cast-out)(LCO)命令可用于将HA数据连贯地迁移到HA消费者核的缓存器(处于相同级别,例如,L2-L2、L3-L3),而不是主存储器。LCO命令允许生产者缓存器专门指定消费者核的缓存器以用于所有HA数据。在一个或多个实施例中,LCO命令用于在生产者核已经具有HA数据的所有权时迁移HA数据,LCO更有效。消费者核在处理HA日志(通过正常负载)时会发现HA日志缓存行条目已经在它的第二级(L2)和第三级(L3)缓存器中,这最小化了访问HA日志所需要的时间(HA日志指向HA数据缓存行)。当消费者核启动HA数据处理时,那些HA数据缓存行被发现已经连贯地安装在消费者核缓存器中(例如,消费者核的L2和L3缓存器)。将HA日志和HA数据直接从生产者缓存器移动到消费者缓存器极大地降低了与消费者核处理执行HA系统的HA备份所需要的HA日志和HA数据相关联的系统总线流量和延迟。
参照图1,示出了示例性的数据处理环境100,其包括数据处理系统110,根据本公开的一个或多个实施例,该数据处理系统110被配置为经由非阻塞通道在脏地址数据结构(例如,脏地址表(DAT))中记录高可用性(HA)数据(其在缓存器漫游期间还没有被记录在HA日志中)的地址。如在此所使用的,DAT用于存储包括HA数据的修改了的缓存行的地址,并通常可被认为与HA日志同步。应当知道,HA日志可以驻留在多个位置中。数据处理系统110可以采用各种形式,诸如工作站、膝上型计算机系统、笔记本计算机系统、桌面型计算机系统或服务器和/其集群。数据处理系统110包括一个或多个处理单元或处理器102(它们每一个可包括用于执行程序代码的一个或多个处理器核),其连接到数据存储子系统104、(可选地)显示器106、一个或多个输入设备108、网络适配器109。数据存储子系统104可例如包括适当数量的各种存储器(例如,动态随机存取存储器(DRAM)、静态RAM(SRAM)和只读存储器(ROM))和/或诸如磁盘或光盘驱动器的一个或多个大容量存储设备。
数据存储子系统104包括用于数据处理系统110的一个或多个操作系统(OS)114。数据存储子系统104还可包括应用程序,诸如浏览器112(其可选地包括定制插件以支持各种客户端应用)、用于管理一个或多个由不同OS镜像实例化的虚拟机(VM)120的管理程序(或虚拟机监控器(VMM))116、以及其它应用(例如,字处理应用、演示应用、电子邮件应用)118。
显示器106可以例如是阴极射线管(CRT)或液晶显示器(LCD)。数据处理系统110的输入设备108可例如包括鼠标、键盘、触觉设备和/或触摸屏。网络适配器109支持数据处理系统110利用诸如802.x、HTTP、简单邮件传输协议(SMTP)的一个或多个通信协议与一个或多个有线和/或无线网络进行通信。数据处理系统100被示为通过诸如因特网122的一个或多个有线或无线网络连接到向数据处理系统110的用户提供感兴趣的信息的多个文件服务器124和多个网页服务器126。数据处理环境100还包括一个或多个数据处理系统(DPS)150,其以与数据处理系统110类似的方式进行配置。通常,数据处理系统150表示远离数据处理系统110并可执行OS镜像的数据处理系统,其可被链接到在数据处理系统110上执行的一个或多个OS镜像。
本领域技术人员知道在图1中描述的硬件组件和基本配置可以变化。在数据处理系统110内的示例性组件并不意味着是穷尽的,而是代表性的,以突出可用于实现本发明的组件。例如,其它设备/组件可用于添加到或者替代所描述的硬件。所描述的例子并不意味着暗示对当前所描述的实施例的体系结构或其它限制。
参照图2,更详细地说明数据处理系统(DPS)110和150的相关组件。DPS 110和150可包括一个或多个处理器102,其中每一个都包括第一级(L1)指令缓存器,该第一级(L1)指令缓存器被连接到一个或多个例如可在数据存储子系统104中实现的其它缓存器级别(例如,第二级(L2)和第三级(L3)缓存器)。如图2所示,DPS 110包括生产者核202,其被连接到生产者缓存器(例如包括L2和L3缓存器)204。如所述的,生产者缓存器204可包括逐出引擎205、侦听干涉引擎206、环形缓冲区207和中间缓冲区208。同样,DPS 150包括消费者核212,其被连接到消费者缓存器(例如包括L2和L3缓存器)214。尽管生产者核202/生产者缓存器204和消费者核212/消费者缓存器214被表示为处于不同的数据处理系统中,但应当知道,生产者核202、生产者缓存器204、消费者核212和消费者缓存器214可以实现在包括多个处理器核的同一个数据处理系统中。
参照图3,生产者缓存器204被示为将HA数据302和HA日志304直角存储在消费者缓存器214中。HA数据302和HA日志304可被存储在同一个缓存器级别(例如L2或L3缓存器)或者可被存储在不同的缓存器级别。消费者缓存器214被示为响应于来自生产者缓存器204的横向逐出(LCO)命令而存储HA数据302。消费者缓存器214还被示为响应于来自生产者缓存器204的缓存器诸如命令而存储HA日志304。应当知道,HA数据302和HA日志304可以使用其它类型的操作来被直接从生产者缓存器204移动到消费者缓存器。总之,消费者核212处理HA日志304和HA数据302所需要的时间被极大地减少,因为消费者核212不必从主存储器获取HA日志304和HA数据302。
参照图4,描述了示例性的缓存器402,其包括目录404(包括用于每个缓存行的标记和HA位)和阵列406(包括数据)。应当知道,目录404还可以包括固有的状态信息、替换顺序信息和/或用于每个缓存行的其它标记(未示出)。如上所述,HA位表示缓存行是否需要从生产者缓存器204迁移到消费者缓存器214以用于处理。当与缓存行相关联的数据被生产者核202(其是在生产者核模式下运行的处理器核)修改时,HA位被断言。在检查点,缓存器漫游操作(例如,由逐出引擎205执行)可遍历整个生产者缓存器204以检查用于每个缓存行的“HA位”。然后,具有被断言的HA位的每个缓存行的物理地址被写入HA日志304(其可与环形缓冲区207对应)。在一个或多个实施例中,当HA日志满(或达到其它阈值,例如四分之三满)时,生产者缓存器204(例如响应于由侦听干涉引擎206发布的缓存器注入命令)将HA日志304移动到消费者缓存器214以用于后面的处理。
在各种实施例中,当HA数据302受到损害时(即,当缓存行从生产者缓存器204中逐出以为其它数据腾出空间时),生产者缓存器204(例如响应于来自逐出引擎205的横向逐出命令的发布)将HA数据302移动到消费者缓存器214以用于以后的处理。可选择地,生产者缓存器204可以在损害之前(例如响应于横向逐出命令)将HA数据302移动到消费者缓存器214。在任何情况下,当启动HA处理时,消费者核212利用HA日志304以确定HA数据302的位置。
通常,为了避免在向目标缓存器安装新的缓存行时出现死锁,从目标缓存器中逐出以为新的缓存行创建空间的所产生的受害者缓存行必须具有去往较低级别存储器(例如,系统存储器)的非阻塞通道。在一个或多个实施例中,应当知道,包括HA数据的缓存行可以在缓存行的地址被记录在HA日志中之前从L2缓存器中逐出,因为在各种公开的实施例中,地址仅仅由L2缓存器在检查点记录。在这种情况下,期望较低级别缓存器(例如,L3缓存器)检查将要被逐出L3缓存器(例如,为来自L2缓存器的受损害缓存行腾出空间)的缓存行的HA位。在将要被逐出L3缓存器的缓存行具有被断言的HA位的情况下,期望L3缓存器(除了向受损害缓存行提供非阻塞通道外)向将要受到损害的缓存行的地址提供去往例如可位于主存储器或消费者缓存器中的脏地址数据结构(例如,脏地址表(DAT))的)非阻塞通道。
参照图5,示出了高可用性(HA)系统500的相关部分,其包括用于HA日志写入位于主存储器520的DAT 522或HA日志写入L3缓存器514的非阻塞通道。在这种情况下,HA日志写入主存储器520(例如DMA(X))产生(或分叉)现有的非阻塞的逐出到主存储器520的流(例如CO(C))。应当知道,既然正常的逐出到主存储器520的流依赖于HA日志写入DAT522的流,因此,HA日志写入流必须也是非阻塞地去往主存储器520,以防止在生产者和消费者缓存器中的死锁。也就是说,当从L3缓存器向主存储器520逐出缓存行(即,具有被断言的HA位的HA数据缓存行)时,HA日志还必须经由非阻塞通道写入以防止死锁。如上所述,HA系统允许指定系统在另一个系统中创建频繁的检查点备份,以使得如果主系统失灵,则二级系统可从最后的检查点处重新开始操作,使得停机时间实质上对于用户是透明的。生产者/消费者定义确保尽管生产者缓存器的逐出和HA日志写流量依赖于相关联的消费者缓存器的活动,但消费者缓存器的逐出流决不依赖于生产者缓存器中的活动(即,通过确保消费者缓存器决不生成HA日志写流量)。
再次参照图5,在正常的系统配置中,对L2缓存器502的遗漏(miss)(如对缓存行“A”的读取要求(RC(A))所表示的)可能导致驻留在L2缓存器502中的缓存行的损害(如缓存行“B”的逐出(CO(B)所表示的),因为用于遗漏的缓存行的空间被分配。然后,CO(B)行可能造成驻留在L3缓存器504中的缓存行的损害(如缓存行“C”的逐出(CO(C)所表示的),因为空间被分配给L3缓存器504中的CO(B)行。为了避免缓存器502和504中的死锁,CO(C)行被提供去往主存储器502的非阻塞路径。根据本公开的一个实施例,对于具有生产者核和消费者核的HA系统配置,当HA日志信息需要写入主存储器和/或消费者缓存器时,在生产者缓存器和消费者缓存器中创建非阻塞HA日志写通道。非阻塞HA日志写通道将HA日志经由直接存储器访问(DMA)(即DMA(X))迁移到主存储器520的DAT 522,以记录已经被处理的HA缓存行地址。DAT 522还可被缓存在L3缓存器514中,以帮助DAT 522的消费者处理。在这种情况下,L3缓存器514通过缓存器注入(inject(X))操作为HA日志条目分配新的空间,这可能导致缓存行的损害CO(X’)。除了可能处理DAT 522的缓存外,消费者L3缓存器514还被配置为处理由消费者L2缓存器512中的遗漏RC(A’)、受害者CO(B’)和受害者CO(C’)造成的损害的正常非阻塞要求。
应当知道,如果生产者缓存器被配置为缓存DAT行,则死锁可在各种损害CO(C)、CO(C′)、和CO(X′)的处理和完成中以及在成功完成DMA(X)中发生。所公开的技术促进HA日志的正确处理并防止各种生产者和消费者死锁。例如,如果消费者L3缓存器514CO(X′)的转发进度变得依赖于当前忙于生产者L3缓存器504的逐出流的新的(用于HA日志的)缓存器注入inject(X),则死锁会发生,因为生产者L3缓存器504的CO(C)流已经依赖于进入消费者L3缓存器514的缓存器inject(X)流。
为了管理程序正确地管理对DAT的访问,指定处理器核可以被分配为DAT的生产者或消费者。在一个或多个实施例中,生产者核被允许运行HA VM,在生产者之下的硬件可在DAT中产生条目,但生产者核在它是生产者核时不允许引用DAT。在一个或多个实施例中,消费者核被允许访问DAT以为了处理DAT条目的目的(即,将数据复制到备份环境),但在它是消费者时被限制运行HA VM。应当知道,仅仅真正用作消费者的生产者核应当被配置为硬件中的消费者核。未真正用作消费者核的所有生产者核应当被配置为生产者核(即使生产者核不打算运行HA代码)。
根据本公开的各种方面,用于记录HA日志条目的非阻塞HA日志写通道被配置为避免死锁情形。在一个或多个实施例中,每个运行HA VM的生产者核具有一个被分配的DAT,其具有“片装(onchip)”亲和性。在各种实施例中,用于指定芯片的一组DAT驻留在存储器中的一个连续区域中(被称为HA脏地址存储器块(DAMB))。通常,生产者核没有被配置为将缓存行从DAT拉入它的缓存器中。在通常情况下,指定生产者核具有一个被分配的消费者核,指定生产者核的DAT的缓存行仅仅永远驻留在与所分配的消费者核相关联的主存储器或缓存器中。在一个或多个实施例中,一个专用处理器核被分配作为DAT的消费者。在各种实施例中,消费者核不运行HA代码,消费者核不会被配置为通过横向逐出(LCO)来将DAT传输到生产者缓存器,消费者核不会被配置为将缓存行从DAT拉入位于分配给相关节点的存储器的连续区域之外的相关的消费者缓存器中。
参考图6,描述了过程600,其每次在块602启动,例如,缓存航被逐出L3缓存器504。接着,在块604,L3缓存器504接收来自L2缓存器502的缓存行以用于在L3缓存器504中安装。接着,在决策块606,L3缓存器504确定L3缓存器504是否具有可用的容量以安装缓存行,而不损害另一个缓存行。响应于L3缓存器504在块606确定它可安装所接收的缓存行而不会损害另一个缓存行,控制转送到块608。在块608,L3缓存器504在L3缓存器504中安装从L2缓存器502接收的缓存行。控制从块608转到块618,其中,过程600结束,直到下一个缓存行从L2缓存器502中逐出。
响应于L3缓存器504在块606确定它不能安装所接收的缓存行,而不损害另一个缓存行,控制转到块610。在块610,L3缓存器504选择将受害的缓存行,例如利用最近最少使用(LRU)替换策略。接着,在决策块612,L3缓存器504确定所选择的缓存行是否包括先前还没有被记录的HA数据。例如,L3缓存器504可检查与缓存行相关联的HA位以确定HA位是否被断言(其表明缓存行的地址先前还没有被记录)。响应于收到损害的缓存行的地址先前没有被记录,控制从块612转到块614。
在块614中,L3缓存器504经由非阻塞通道将HA数据的地址写入第一存储器(例如,主存储器520或与适当的消费者核相关联的L3缓存器514)中的HA脏地址数据结构(例如,脏地址表(DAT)522)。接着,在块616中,L3缓存器504经由另一个非阻塞通道将受害的缓存行写入存储器(例如,主存储器520)。可选择地,受害的缓存行可使用LCO写入L3缓存器514。响应于正受到损害的缓存行的地址先前被记录或者缓存行不包括HA数据,控制从块612直接转到块616,其描述L3缓存器504将受害的缓存行写入存储器。控制从块616转到块608,在该块608中,缓存行被安装在L3缓存器504中,然后,去往块618,过程600结束。
因此,在此已经公开了经由非阻塞通道在脏地址数据结构(例如,脏地址表(DAT))中记录在缓存器漫游期间在检查点还没有被记录的高可用性(HA)数据的地址的技术。
图6中描述的方法可以具体化在包含计算机可读代码的计算机可读介质中,以使得当计算机可读代码在计算设备上执行时执行一系列步骤。在某些实施例中,在不偏离本发明的精神和范围的情况下,方法的某些步骤可以被组合、同时执行或者以不同的顺序执行或者可能被省略。因此,尽管以特定的顺序描述和说明了该方法的步骤,但使用特定顺序的步骤并不意味着暗示对本发明的任何限制。在不脱离本发明的精神和范围的情况下,可以对步骤的顺序进行改变。因此,使用特定的顺序并应当被认为是限制的意思,本发明的范围仅由后附的权利要求限定。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合,但不包括计算机可读信号介质。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形存储介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读信号介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
在此将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读存储介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
如还将知道的,本发明的实施例中的过程可用使用软件、固件或硬件的任意组合来实现。作为在软件中实现本发明的预先步骤,编程代码(软件或固件)通常被存储在一个或多个机器可读存储介质中,诸如固定(硬盘)驱动器、软盘、光盘、磁带、诸如ROM、PROM的半导体存储器等,从而根据本发明制成制造品。包含编程代码的制造品通过执行直接来自存储设备的代码、或者通过将代码从存储设备复制到诸如硬盘、RAM等的另一个存储器设备、或者通过使用诸如数字和模拟通信链路的传输类型介质来传输代码以用于远程执行来使用。本发明的方法可通过将包含根据本发明的代码的一个或多个机器可读存储介质与适当的处理硬件相结合以执行所包含的代码来实现。用于实现本发明的装置可以是一个或多个处理设备和包含或能够网络访问根据本发明编码的程序的存储器子系统。
因此,重要的是尽管本发明的示例性实施例在安装有(执行)软件的全功能计算机(服务器)系统的上下文中进行了描述,但本领域技术人员将知道本发明的示例性实施例的软件方面能够采用各种形式分布为程序产品,并且本发明的示例性实施例也同样适用,而不管实际执行该分布所使用的媒体的特定类型。
尽管已经参照示例性实施例描述了本发明,但本领域技术人员应当理解,在不脱离本发明的范围的情况下,可以做出各种变化并且可以用等同物替换它的单元。另外,在不脱离本发明的基本范围的情况下,可以对本发明的教导做出许多修改以适应特定的系统、设备或它的组件。因此,这意味着本发明并不限于所公开的用于实现本发明的特定实施例,而是本发明将包括落入后附的权利要求的范围内的所有实施例。另外,第一、第二等术语的使用并非表示任何顺序或重要性,而是用于区分一个单元和另一个单元。
在此所使用的术语仅仅是用于描述特定实施例的目的,并不意味着限制本发明。如在此所使用的,单数形式“一”、“一个”和“该”意在也包括复数形式,除非上下文明确指示。还应当理解,术语“包括”和/或“包含”在被用在本说明书中时是指存在所述的特征、整体、步骤、操作、单元和/或组件,但没有排除存在或添加一个或多个其它特征、整体、步骤、操作,单元、组件和/或它们的组合。
如果有的话,以下权利要求中的所有装置或步骤加功能单元的对应结构、材料、动作和等同意在包括任何用于与其它请求保护的单元结合来执行功能的结构、材料或动作。本发明的描述已经被提出以用于说明和描述的目的,但并不意味着是穷尽的或是用在此公开的形式限制本发明。在不脱离本发明的范围和精神的情况下,许多修改和变化对本领域技术人员来说是显而易见的。实施例被选择和描述以最好地解释本发明的原理和实际应用,并使得本领域的其它技术人员能够理解本发明的各种实施例以及各种修改适合于所设想的特定用途。

Claims (20)

1.一种操作数据处理系统的方法,包括:
确定将要受到缓存器损害的缓存行是否包括还没有被记录的高可用性HA数据;
响应于确定将要受到所述缓存器损害的所述缓存行包括还没有被记录的高可用性数据,经由第一非阻塞通道将所述高可用性数据的地址写入第一存储器中的高可用性脏地址数据结构;以及
经由第二非阻塞通道将受到所述缓存器损害的缓存行写入第二存储器。
2.如权利要求1所述的方法,其中,确定将要受到缓存器损害的缓存行是否包括还没有被记录的高可用性数据包括:检查与所述缓存行相关联的高可用性位的状态以确定所述缓存行是否已经被记录。
3.如权利要求1所述的方法,其中,所述缓存器是第三级L3缓存器。
4.如权利要求1所述的方法,其中,所述缓存器与生产者核相关联。
5.如权利要求1所述的方法,其中,所述第一存储器和所述第二存储器对应于主存储器的不同部分。
6.如权利要求1所述的方法,其中,所述第一存储器是与消费者核相关联的缓存器,所述第二存储器是主存储器。
7.如权利要求1所述的方法,其中,确定将要受到缓存器损害的缓存行是否包括还没有被记录的高可用性数据在检查点之间发生。
8.一种数据处理系统,包括:
生产者核;以及
生产者缓存器,其连接到所述生产者核,其中,所述生产者缓存器被配置为:
确定将要受到所述生产者缓存器损害的缓存行是否包括还没有被记录的高可用性HA数据;
响应于确定将要受到所述生产者缓存器损害的所述缓存行包括还没有被记录的高可用性数据,经由第一非阻塞通道将所述高可用性数据的地址写入第一存储器中的高可用性脏地址数据结构;以及
经由第二非阻塞通道将受到所述生产者缓存器损害的缓存行写入第二存储器。
9.如权利要求8所述的数据处理系统,其中,确定将要受到生产者缓存器损害的缓存行是否包括还没有被记录的高可用性数据包括:检查与所述缓存行相关联的高可用性位的状态以确定所述缓存行是否已经被记录。
10.如权利要求8所述的数据处理系统,其中,所述缓存器是第三级L3缓存器。
11.如权利要求8所述的数据处理系统,还包括:
主存储器,其连接到所述生产者缓存器,其中,所述第一存储器和所述第二存储器对应于所述主存储器的不同部分。
12.如权利要求8所述的数据处理系统,还包括:
主存储器,其连接到所述生产者缓存器;
消费者核;以及
消费者缓存器,其连接在所述消费者核与所述主存储器之间,其中,所述第一存储器对应于所述消费者缓存器,所述第二存储器对应于所述主存储器。
13.如权利要求8所述的数据处理系统,其中,确定将要受到缓存器损害的缓存行是否包括还没有被记录的高可用性数据在检查点之间发生。
14.一种处理器,包括:
处理器核;以及
缓存器,其连接到所述处理器核,其中,所述缓存器被配置为:
确定将要受到所述缓存器损害的缓存行是否包括还没有被记录的高可用性HA数据;
响应于确定将要受到所述缓存器损害的所述缓存行包括还没有被记录的高可用性数据,经由第一非阻塞通道将所述高可用性数据的地址写入第一存储器中的高可用性脏地址数据结构;以及
经由第二非阻塞通道将受到所述缓存器损害的缓存行写入第二存储器。
15.如权利要求14所述的处理器,其中,确定将要受到缓存器损害的缓存行是否包括还没有被记录的高可用性数据包括:检查与所述缓存行相关联的高可用性位的状态以确定所述缓存行是否已经被记录。
16.如权利要求14所述的处理器,其中,所述缓存器是第三级L3缓存器。
17.如权利要求14所述的处理器,其中,所述第一存储器和所述第二存储器对应于主存储器的不同部分。
18.如权利要求14所述的处理器,其中,所述处理器核是生产者核,所述缓存器是生产者缓存器,所述第一存储器对应于消费者缓存器,所述第二存储器对应于主存储器。
19.如权利要求14所述的处理器,其中,确定将要受到缓存器损害的缓存行是否包括还没有被记录的高可用性数据在检查点之间发生。
20.如权利要求14所述的处理器,其中,所述处理器核是生产者核,所述缓存器是生产者缓存器。
CN201410612285.4A 2013-11-06 2014-11-04 一种操作数据处理系统的方法、数据处理系统和处理器 Expired - Fee Related CN104636182B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/073531 2013-11-06
US14/073,531 US9336142B2 (en) 2013-11-06 2013-11-06 Cache configured to log addresses of high-availability data via a non-blocking channel

Publications (2)

Publication Number Publication Date
CN104636182A CN104636182A (zh) 2015-05-20
CN104636182B true CN104636182B (zh) 2017-12-22

Family

ID=53007957

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410612285.4A Expired - Fee Related CN104636182B (zh) 2013-11-06 2014-11-04 一种操作数据处理系统的方法、数据处理系统和处理器

Country Status (2)

Country Link
US (2) US9336142B2 (zh)
CN (1) CN104636182B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9658959B2 (en) * 2015-02-20 2017-05-23 PernixData, Inc. Cache resource manager
US9767041B2 (en) * 2015-05-26 2017-09-19 Intel Corporation Managing sectored cache
US10691463B2 (en) * 2015-07-30 2020-06-23 Futurewei Technologies, Inc. System and method for variable lane architecture
CN106227613B (zh) * 2016-08-02 2019-03-15 重庆贵飞科技有限公司 Linux下“生产者-消费者”模型的改进方法
US10817462B1 (en) 2019-04-26 2020-10-27 Xilinx, Inc. Machine learning model updates to ML accelerators
US11074208B1 (en) 2019-07-24 2021-07-27 Xilinx, Inc. Routing network using global address map with adaptive main memory expansion for a plurality of home agents
US11113194B2 (en) * 2019-09-04 2021-09-07 Xilinx, Inc. Producer-to-consumer active direct cache transfers
US11474871B1 (en) 2019-09-25 2022-10-18 Xilinx, Inc. Cache coherent acceleration function virtualization
US11720500B2 (en) 2021-09-03 2023-08-08 International Business Machines Corporation Providing availability status on tracks for a host to access from a storage controller cache
US11726913B2 (en) * 2021-09-03 2023-08-15 International Business Machines Corporation Using track status information on active or inactive status of track to determine whether to process a host request on a fast access channel
CN115794674B (zh) * 2023-01-19 2023-05-12 北京象帝先计算技术有限公司 一种缓存数据写回方法、装置、图形处理系统及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102045187A (zh) * 2009-10-10 2011-05-04 杭州华三通信技术有限公司 一种利用检查点实现高可用性系统的方法和设备
US8417885B2 (en) * 2010-02-24 2013-04-09 Avaya Inc. Method and apparatus for high availability (HA) protection of a running virtual machine (VM)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671444A (en) 1994-02-28 1997-09-23 Intel Corporaiton Methods and apparatus for caching data in a non-blocking manner using a plurality of fill buffers
US5666514A (en) 1994-07-01 1997-09-09 Board Of Trustees Of The Leland Stanford Junior University Cache memory containing extra status bits to indicate memory regions where logging of data should occur
JP3260999B2 (ja) * 1995-03-03 2002-02-25 富士通株式会社 ディスク制御装置の制御方法
US6226713B1 (en) 1998-01-21 2001-05-01 Sun Microsystems, Inc. Apparatus and method for queueing structures in a multi-level non-blocking cache subsystem
US6933945B2 (en) 2003-03-31 2005-08-23 Sun Microsystems, Inc. Design for a non-blocking cache for texture mapping
US20050257002A1 (en) * 2004-04-30 2005-11-17 Nokia, Inc. Apparatus and method for neighbor cache table synchronization
US8370562B2 (en) * 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
JP5730126B2 (ja) 2011-05-18 2015-06-03 キヤノン株式会社 データ供給装置、キャッシュ装置、データ供給方法、キャッシュ方法およびプログラム
US9189446B2 (en) * 2013-01-04 2015-11-17 Microsoft Technology Licensing, Llc Immutable sharable zero-copy data and streaming
US9280465B2 (en) * 2013-10-08 2016-03-08 Globalfoundries Inc. Techniques for moving checkpoint-based high-availability log and data directly from a producer cache to a consumer cache

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102045187A (zh) * 2009-10-10 2011-05-04 杭州华三通信技术有限公司 一种利用检查点实现高可用性系统的方法和设备
US8417885B2 (en) * 2010-02-24 2013-04-09 Avaya Inc. Method and apparatus for high availability (HA) protection of a running virtual machine (VM)

Also Published As

Publication number Publication date
US20150127910A1 (en) 2015-05-07
CN104636182A (zh) 2015-05-20
US9336142B2 (en) 2016-05-10
US20150127908A1 (en) 2015-05-07
US9792208B2 (en) 2017-10-17

Similar Documents

Publication Publication Date Title
CN104636182B (zh) 一种操作数据处理系统的方法、数据处理系统和处理器
US10649853B2 (en) Tracking modifications to a virtual machine image that occur during backup of the virtual machine
US9058195B2 (en) Virtual machines failover
JP6882662B2 (ja) マイグレーションプログラム、情報処理装置およびマイグレーション方法
US9069701B2 (en) Virtual machine failover
CN104516832B (zh) 操作数据处理系统的方法、数据处理系统以及处理器
US9519502B2 (en) Virtual machine backup
CN104636269B (zh) 高可用性数据处理系统及其方法
US20150095576A1 (en) Consistent and efficient mirroring of nonvolatile memory state in virtualized environments
US20180357131A1 (en) Virtual machine backup
CN103516549A (zh) 一种基于共享对象存储的文件系统元数据日志机制
CN104679662A (zh) 用于管理共享存储器的方法和系统
JP2006268420A (ja) ディスクアレイ装置、ストレージシステムおよび制御方法
CN104050093A (zh) 用于追踪统一虚拟存储器系统中的页面故障的故障缓冲区
JP2017033375A (ja) 並列計算システム、マイグレーション方法、及びマイグレーションプログラム
CN104049903A (zh) 用于统一虚拟存储器系统的迁移方案

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20171222

CF01 Termination of patent right due to non-payment of annual fee