操作数据处理系统的方法、数据处理系统以及处理器的制造方法

文档序号:6629000阅读:168来源:国知局
操作数据处理系统的方法、数据处理系统以及处理器的制造方法
【专利摘要】本发明涉及一种操作数据处理系统的方法、数据处理系统以及处理。操作数据处理系统的技术包括在生产者高速缓存的数据阵列中记录生产者核心所修改的高速缓存线的地址,以创建用于生产者核心的高可用性(HA)日志。该技术还包括将HA日志从生产者高速缓存直接移动到消费者核心的消费者高速缓存,以及将与HA日志的地址关联的HA数据从生产者高速缓存直接移动到消费者高速缓存。HA日志对应于包含多个地址的高速缓存线。最后,该技术包括由消费者核心来为数据处理系统处理HA日志和HA数据。
【专利说明】操作数据处理系统的方法、数据处理系统以及处理器

【技术领域】
[0001]本公开一般涉及基于检查点的高可用性日志和数据,更具体地,涉及将基于检查点的高可用性日志和数据从生产者高速缓存直接移动到消费者高速缓存。

【背景技术】
[0002]可以依据应用和支持平台来考虑计算。支持平台典型地包括一个或多个处理器核心、输入/输出、存储器和固定存储设备的硬件基础设施(其组合支持操作系统(OS),该操作系统转而支持一个或多个应用)。应用可被认为是自包含的一组逻辑,其依赖于核心对象文件和相关的资源文件。随着计算集成到现代产业中,应用变得互相依赖于其他应用的存在。即,应用的必要环境不仅包括底层的OS和支持硬件平台,还包括其他关键应用。
[0003]关键应用可以包括应用服务器、数据库管理服务器、协作服务器,以及被统称为中间件的通信逻辑。给定应用的复杂性和平台互操作性,在单个硬件平台中执行的应用的不同组合可以表现出不同程度的性能和稳定性。虚拟化技术在支持平台和执行应用之间插入一层。从业务连续性和灾难恢复的角度来说,移动配置有多种不同应用的整个环境可以和将虚拟映像从一个支持硬件平台移动到另一个那么简单。
[0004]通常,更强大的计算环境可以支持多种不同虚拟映像的共存,而同时保持映像之间的虚拟分离。结果,一个虚拟映像中的故障情况典型地不会危害相同硬件平台上的其他协同执行的虚拟映像的完整性。虚拟机监视器(VMM)或管理程序(hypervisor)管理每个虚拟映像和硬件平台提供的底层资源之间的交互。裸机(bare metal)管理程序直接在硬件平台上运行,与OS直接在硬件上运行类似。相反,有主机(hosted)的管理程序在主机OS中运行。在任一情形下,管理程序可以支持不同访客(guest)OS映像或虚拟机(VM)映像的运行。VM映像的数量仅受到VM容器的处理资源的限制,该容器具有VM映像或硬件平台。
[0005]对于需要针对在单个硬件平台上部署的不同类型应用有单独计算环境的终端用户来说,虚拟化被证明特别有用。例如,一种类型的硬件平台本机的基础OS可以提供不同硬件平台本机的虚拟化访客OS (从而需要存在访客OS的应用可以和需要存在基础OS的其他应用共存)。在该情形下,终端用户不需要提供单独的计算环境来支持不同类型的应用。即,不管访客OS,对单个硬件平台的底层资源的访问保持静态。
[0006]虚拟化环境被部署,以在组合应用解决方案时聚合不同VM中的不同的互相依赖的应用。例如,应用服务器可以在一个VM中执行,而数据库管理服务器在不同的VM中执行,并且web服务器在另一个VM中执行。每个VM可以在安全网络中互相通信耦合,并且应用的任何给定部署可以实时(live)迁移到不同的部署,而会干扰其他VM中的其他应用的执行。在典型的实时迁移中,VM可以从一台主机服务器移动到另一主机服务器,例如以允许服务器维护或允许改进VM的硬件支持。
[0007]基于检查点的高可用性(HA)是一种技术,其中,在基础主机上运行的VM在每个周期(例如25mS)将其处理器和存储器状态镜像到次级主机上。镜像过程典型地包括:跟踪基础VM的存储器和处理器状态的变化;周期性地停止基础VM ;通过网络将该改变发送到次级主机;等待次级主机对存储器和处理器状态更新的接收进行确认;以及恢复基础VM。镜像过程确保在基础主机面对突发硬件故障的情况下次级主机能够以最小服务损失来恢复工作负载。如果次级主机检测到基础主机没有响应或者从基础主机接收到显式的通知,次级主机启动VM的镜像版本,并且在外部看来,在基础主机故障时VM无缝连续地执行。
[0008]尽管基于检查点的HA技术提供了有效的硬件故障保护,基于检查点的HA技术不会保护软件故障。因为基础VM的处理器和存储器的状态在次级主机上如实地复制,如果软件崩溃(例如零指针的去引用)导致次级主机上的故障转移,VM从最后的检查点恢复执行,并且如果程序执行是确定性的,会出现相同的错误。存在某些受限的情形,其中如果软件故障导致故障转移,VM不会崩溃。但是,这些情形很少见,并且更依赖于运气而非设计。例如,在低级主机上恢复工作负载时,表现为一个处理器可能访问正被另一处理器修改的数据这种竞争条件的软件漏洞可能不会出现,因为由于调度,数据可能最终没有被并行访问。


【发明内容】

[0009]一种操作数据处理系统的技术,包括在生产者高速缓存的数据阵列中记录生产者核心所修改的高速缓存线的地址,以便为生产者核心创建高可用性(HA)日志。该技术还包括将HA日志移动到消费者核心的消费者高速缓存,以及将与HA日志的地址关联的HA数据移动到消费者高速缓存。HA日志对应于包含多个地址的高速缓存线。最后,该技术包括由消费者核心来为数据处理系统处理HA日志和HA数据。
[0010]上述总结包含简化、概括和细节的忽略,并且不是对所请求保护的主题的全面描述,而是要提供与之关联的某些功能的简要概览。在查看下列附图和详细描述后,所请求保护的主题的其他系统、方法、功能、特征和优势对于本领域技术人员来说将变得明显。
[0011]在下列详细描述中,本发明的上述以及其他目标、特征和优势将变得明显。

【专利附图】

【附图说明】
[0012]将结合附图来阅读说明性实施例的描述,在附图中:
[0013]图1是根据本公开的示例性数据处理系统环境的相关部分的图,该数据处理系统环境被配置为产生高可用性(HA)日志和数据;
[0014]图2是可以在图1的数据处理系统环境中部署的数据处理系统(其包括生产者核心和生产者高速缓存)和另一数据处理系统(其包括消费者核心和消费者高速缓存)的图;
[0015]图3是描述根据本公开的实施例HA日志和数据(分别使用高速缓存注入和横向驱逐命令)从图2中的生产者高速缓存传输到消费者高速缓存的图;
[0016]图4是根据本公开的另一实施例的高速缓存的相关部分的图,该高速缓存的目录包括用于每条高速缓存线的HA位,以表示高速缓存线是否需要从生产者高速缓存传输到消费者高速缓存;
[0017]图5是根据本公开的实施例的创建并将HA日志注入到消费者高速缓存的示例性过程的流程图;
[0018]图6是根据本公开的实施例的指定HA数据并将指定的HA数据注入到消费者高速缓存的示例性过程的流程图。

【具体实施方式】
[0019]说明性实施例提供了一种方法、数据处理系统和处理器,其被配置为将基于检查点的高可用性(HA)日志和数据从生产者高速缓存移动到消费者高速缓存。
[0020]在本发明的示例性实施例的下列详细描述中,详细描述了可以实现本发明的特定示例性实施例,使得本领域技术人员能够实现本发明,并且应该理解,可以使用其他实施例,并且可以进行逻辑、架构、程序、机械、电和其他改变,而不脱离本发明的精神或范围。因此下列详细描述不应被理解为限制性的,并且本发明的范围由所附权利要求及其等价物来定义。
[0021]应该理解,特定组件、设备和/或参数名称的使用仅是示例,而不是暗示对本发明的任何限制。因此本发明可以以用于描述这里的组件/设备/参数的不同的命名/术语来实现,而没有限制。给定使用术语的上下文,这里使用的每个术语应被给予最广泛的解释。如这里所使用的,术语“耦合”可以包括组件或元素之间的直接连接,或者使用一个或多个中间组件或元素的组件或元素之间的间接连接。
[0022]如上所述,基于检测点的高可用性(HA)是一种技术,其中在“基础主机”上运行的虚拟机(VM)定期(例如每隔25mS)执行“检查点”,其将基础主机的处理器和存储器状态镜像到“次级”主机。镜像过程涉及:跟踪VM的处理器寄存器和存储器状态的变化;周期性地停止VM ;(例如通过网络)将被跟踪的变化发送到次级主机;等待次级主机对处理器和存储器状态更新的接收进行确认;以及恢复VM。这确保了次级主机在基础主机遇到突发硬件故障时能够以最小服务损失来恢复工作负载。
[0023]在一种或多种传统的基于检查点的HA实现中,管理程序使用页保护来识别VM存储器的修改区域,在页保护中,在检查点之后所有存储器都被打上只读标记。管理程序的功能在于:检测在对存储器页首次执行存储时出现的后续故障;恢复页的原始访问许可;以及将页标记为“脏的”,需要在下一检查点传输该页。通常,使用检查点的VM会比不使用检查点带来更多的页保护故障。应该理解,对页中的单个字节的改变需要整个页被发送到次级系统,因为一旦页保护被移除,不使用额外的处理器周期和额外的存储器将页与原始页的副本进行比较,将无法知道页有多少被修改了。由于需要将整个脏页发送到次级系统,传统的系统典型地使用相对小的页大小(例如4K页大小,与64K页大小相对),以减少基础和次级系统之间的流量。在该情形下,传统系统性能会受到不利影响,因为操作系统(OS)不能利用大的页。
[0024]根据本公开的一个或多个方面,通过维护缓冲器,该缓冲器填充有从上个检查点以来由生产者处理器核心(生产者核心)修改的高速缓存线地址,可以记录对存储器的修改,而没有高速缓存线粒度上的缺页。可以在检查点期间或者推测性地在检查点之前检查缓冲器,以便确定需要将哪些高速缓存线发送到次级系统以维持一致的存储器映像。由于更小的修改粒度(例如高速缓存线而不是页),在高速缓存中维护缓冲器一般会减少缺页,并且减少基础和次级系统之间的流量。缓冲器方法也是页尺寸不可知的,且由此系统可使用更大的页尺寸,而不会引起与页尺寸相关的性能惩罚。
[0025]根据本公开的一个或多个实施例,与已知的方法相比,记录高速缓存线地址带来了显著的性能优势和复杂度降低。在多个实施例中,公开的技术可以在硬件中实现,某些组件在高速缓存中实现,并且某些参数通过只能有特权的管理程序代码访问的处理器寄存器来暴露。在一个或多个实施例中,管理程序软件被修改,以利用添加的硬件特征。
[0026]在任何现代处理器设计的高速缓存层级结构中,存在某种形式的驱逐引擎和窥探介入引擎。驱逐引擎负责将从高速缓存逐出的数据写回到系统存储器或写入到与另一处理器关联的高速缓存。窥探介入引擎负责将数据从给定的高速缓存提供给另一处理器,该处理器正尝试访问包含该数据的高速缓存线。例如可以由在高速缓存中为进入的数据释放空间的需求来触发驱逐引擎。例如可以触发窥探介入引擎,以在另一处理器希望修改高速缓存线中的数据时向该另一处理器提供对高速缓存线的独占访问。通常,在检查点间隔期间(即两个检查点之间的时间),在检查点之间修改的每条高速缓存线作为脏数据留在高速缓存中或者已经经过驱逐或窥探介入引擎,并且在检查点上,可以触发高速缓存行走(walk) / 清洗(scrub)。
[0027]高速缓存清除(flush)将脏数据推送到系统存储器,从而在检查点之间被修改的每条高速缓存线确保已经经过驱逐引擎。驱逐引擎和窥探介入引擎可被修改,从而除了将脏高速缓存线数据写入到存储器/另一高速缓存之外,引擎还可以运行在将修改的高速缓存线的地址写入到位于高速缓存中的循环缓冲器的模式中。为了提高效率,高速缓存硬件可被配置为管理中间缓冲器(例如两条高速缓存线的深度缓冲器),该中间缓冲器收集驱逐和/或窥探介入引擎所报告的地址。在一个或多个实施例中,在中间缓冲器被地址的全高速缓存线有效负荷充满时,驱逐引擎(通过驱逐命令)将中间缓冲器的内容移动到循环缓冲器。在至少一个实施例中,中间缓冲器中的每条高速缓存线保存多达十六个八字节地址。
[0028]应当理解,并非数据处理系统的所有处理器核心都在所有时刻运行在生产者模式下。在生产者模式下运行的处理器核心在这里被称为“生产者核心”。通过设置管理程序可访问的硬件标记,可以将处理器核心置于生产者模式下。在至少一个实施例中,在处理器核心处于生产者核心模式时,为了管理对循环缓冲器的写入,驱逐引擎维护寄存器,其包含:基址(即到缓冲器的基地址的指针);生产者头部(即缓冲器中下一地址将被写入的偏移量);屏障(即边界指针);以及大小(即缓冲器的大小的指示)。
[0029]在多个实施例中,HA日志被维护在存储器中,该存储器与分配给虚拟机(VM)的存储器分离,并且只能被管理程序访问。在生产者核心模式下,除了正常的驱逐和/或窥探介入行为,驱逐和窥探介入操作还被配置为将被修改的高速缓存线的地址记录到高速缓存的当前填充中间缓冲器中(例如使用乒乓缓冲,从而一个缓冲器可以被填充而另一个被写回到另一存储器)。当在生产者核心模式下时,可以命令驱逐引擎通过下列行为将高速缓存线从高速缓存的中间缓冲器(在它们填充时)移动到高速缓存中的循环缓冲器:发起高速缓存线地址到生产者头部指针的存储;递增生产者头部指针,如果生产者头部指针到达基址(base)+大小(size),则折回到基址;并且如果生产者头部等于屏障,则将故障传递给管理程序。
[0030]在多个实施例中,在下一检查点出现时:基础主机上的管理程序挂起VM的执行;触发高速缓存行走操作,以便为HA日志生成条目;并且消费者核心(其可以是物理不同的核心或相同的核心(但不再处于生产者核心模式))遍历HA日志,并且针对每个条目,读取地址,从VM的存储器读取该地址处的当前数据,将(地址、数据)对发送到次级主机(在那儿它被用于更新次级VM的存储器映像),与次级系统同步其他状态(例如处理器寄存器),然后发起基础VM的执行恢复。
[0031]消费者核心可以实现各种优化。例如,在检查点间隔中特定的地址被驱逐若干次时,驱逐地址将出现在日志中多次。应该理解,重复的驱逐地址仅需要被发送到次级系统一次,因为被发送的是VM的存储器中的当前数据,而不是被驱逐时的数据(其未被记录)。这样,消费者核心可以执行某种缩减(reduct1n),以减少到次级系统的带宽。如上所述,在VM使用多个处理器核心并且同一条高速缓存线在同一检查点间隔期间被多于一个处理器核心驱逐时,该地址将出现在多个日志中,但仅需要被发送一次。再一次地,可以执行跨日志的某种缩减以减少带宽。
[0032]消费者核心可以开始推测性地处理检查点之前的生产者核心的HA日志。尽管推测性地处理生产者核心的HA日志降低了用于缩减的范围,推测性地处理生产者核心的HA日志会平滑到次级系统的数据传输,并更有效地利用可用的总带宽。需要注意,基础VM使用的工作足迹的主体(bulk)在检查点之间的时间期间可以位于高速缓存中,并且记录的主体可以出现在检查点的时间。硬件的自然高速缓存可以在仅记录给定高速缓存线一次时进行有效的工作,即使在检查点之间它已被存储多次。屏障寄存器的目的是确保在检查点操作期间不会由于日志折回而丢失任何数据。基于生产者头部针对屏障的检查,屏障指向检查点间隔中的第一条日志记录,以确保数据不会被覆盖。
[0033]在多个实施例中,如果到达屏障,则发起故障转移到次要系统,或者所有VM存储器都被重新同步。故障转移到次要系统或者VM存储器重新同步是需要的,因为在高速缓存中可能存在还没有经过驱逐引擎的脏数据。在该情形下,不希望简单地发起即刻检查点,因为已经没有地方来记录脏地址。通常,管理程序应同时确保日志有合适的大小并且还能定期监视生产者头部指针,如果预期到日志溢出则发起较早的检查点。如果消费者核心推测性地处理日志,则管理程序可以周期性地移动屏障指针,从而只有在生产者核心与(在消费者核心落后的情况下)消费者核心还没有处理的日志条目冲突时才会触发溢出。
[0034]可以实施修改,使得驱逐引擎和窥探介入引擎记录在检查点之间离开高速缓存的存储器地址,并且在检查点发起高速缓存清空以确保高速缓存中没有留下修改的数据(由此确保被修改的数据经过驱逐引擎并且被记录)。该方法的缺点是在每个检查点间隔都需要高速缓存清空。高速缓存清空导致驱逐引擎和存储器子系统的额外压力,并且一般会降低在高可用性(HA)模式下运行的工作负载的性能。
[0035]根据另一方法,通过为高速缓存中的每条高速缓存线引入新的“HA位”来确保在检查点间隔记录所有地址,而不需要进行高速缓存清空。当处理器核心在生产者核心模式下运行时,通过高速缓存线的修改来设置HA位,并且可作为高速缓存行走操作的一部分来清除它,该高速缓存行走操作在检查点上执行,并且行走高速缓存使得HA位被认定(asserted)的高速缓存线将其地址记录到循环缓冲器。然后针对所有高速缓存线来解除认定(de-aSSert)HA位。在该实现中,与高速缓存线关联的数据未被写入到系统存储器,并且该高速缓存线在高速缓存内部仍然被标记为“脏的”。处理器高速缓存典型地被实现为查找表,其将地址(标签)与某些数据相关联。该标签可以是虚拟或物理地址,或其某种组合,并且数据是固定大小的(例如高速缓存线)。对于任何给定标签,在高速缓存中可以存在能找到数据的若干个位置,且从而高速缓存查找典型地涉及检查若干个槽(slot)来找到匹配的标签。此外,槽可以不包含任何数据,且从而槽典型地不仅包含将与标签关联的数据,还包含多个标志。
[0036]根据另一实现,HA位被添加到高速缓存中的每个槽。当与高速缓存线关联的数据被在生产者核心模式下运行的处理器核心更新时,HA位被认定。在检查点上,高速缓存行走操作遍历整个高速缓存,与高速缓存清空类似,但不是检查“脏位”并将数据向外推送到系统存储器,而是高速缓存行走操作会检查“HA位”并将物理地址向外推送到循环缓冲器。
[0037]在大多数计算系统中,通常有多层高速缓存(例如级别I到级别N(即LI到LN),其中LI表示最快、最小的高速缓存,其最接近处理器核心,而N典型地是3或4,并且在N增加时趋向于更慢和更大)。在一个或多个实施例中,高速缓存行走操作遍历可能包含HA修改数据的所有高速缓存,但这不一定意味着所有高速缓存都必须被遍历,因为某些高速缓存级别可以是直写式(write-through)或回写式(write-back)的。众所周知,直写式高速缓存在高速缓存中保留数据,但也将数据同步地推送回到下一高速缓存级别,以有利于后续读取的快速访问时间。直写式高速缓存的写入比回写式高速缓存更昂贵,因为写入者必须等待(更慢的)下一级别高速缓存的写入完成。直写式高速缓存不需要被清空。回写式高速缓存在高速缓存中保留数据,但不会将数据同步地推送到高速缓存中的下一级别。使用回写式高速缓存,写入到高速缓存的过程更快,代价是必须管理对称多处理器(SMP)系统中的高速缓存之间的数据一致性。在从高速缓存中逐出数据以为额外的数据腾出空间时,会引起写入到高速缓存中的下一级别的成本。
[0038]在多层高速缓存的层级结构中,只有回写式高速缓存需要被高速缓存行走操作遍历。例如,在包含直写式LI高速缓存、回写式L2高速缓存和回写式L3高速缓存的系统中,处理器执行的任何写入都将去往LI高速缓存(因为它是直写式的),也被写到L2高速缓存。在该情形下,在LI高速缓存中不存在L2高速缓存中没有的脏数据。由于在L2高速缓存中需要更多的空间,脏数据被逐出并变成L3高速缓存中的脏数据。在该例子中,在生产者核心模式下执行的写入会设置L2高速缓存中用于关联的高速缓存线的HA位。当在L2高速缓存中具有设置的HA位的高速缓存线被驱逐到L3高速缓存时,L3高速缓存中的与该高速缓存线关联的HA位被设置。在该例子中,LI高速缓存不需要HA位。在检查点上,高速缓存行走操作需要遍历L2和L3高速缓存两者,将具有被认定的HA位的高速缓存线的所有物理地址写入到循环缓冲器,并且一旦操作完成则清除所有HA位。
[0039]上述描述说明了对高速缓存硬件的增强,以确保在定期的间隔中,高速缓存中的循环缓冲器存储从最后检查点以来由给定存储器核心修改的所有存储器位置的列表。被修改的存储器位置的列表可被用于改善系统性能和可靠性。(在“循环缓冲器”、“HA日志”或“HA表”中存储的)被修改的存储器位置的列表由支持高速缓存例如L2/L3高速缓存维护,并且修改的高速缓存线保持HA数据。HA日志和HA数据被消费者核心处理,以提供系统可靠性和冗余度。HA生产者高速缓存将HA日志传统地写到系统存储器。由于从和HA生产者核心关联的高速缓存中牺牲(victimize)出了 HA数据,该HA数据也被传统地写到系统存储器。
[0040]为了处理HA日志和HA数据,消费者核心从系统存储器传统地读取HA日志和HA数据两者。与这里公开的技术相比,该传统方法需要对系统存储器的多次访问,导致存储器资源的相对大的带宽成本,消耗功率,并增加了消费者核心处理HA日志和HA数据的时间。在现代的大型服务器中,存储器资源很昂贵,并且存储器功率是系统功率的主要部分。根据本公开,处理HA日志和HA数据的时间被缩减,这增加了系统可以用于其他任务的时间。
[0041]根据本公开的一个或多个实施例,与HA生产者核心关联的生产者高速缓存(从生产者高速缓存中的循环缓冲器)直接移动HA日志到HA消费者核心的高速缓存。根据多个方面,生产者高速缓存还将生产者高速缓存中存储的HA数据直接移动到消费者核心的高速缓存中。通过该方式,取消了生产者高速缓存将HA日志和HA数据往外移动到系统存储器然后消费者核心必须从系统存储器获取HA日志和HA数据两者。这样,消费者核心执行HA系统备份的时间被缩减,存储器资源的负担降低,并且与实现HA相关的功耗被降低。
[0042]在多个实施例中,HA生产者高速缓存被配置为标识应当被置于HA日志中的高速缓存线。对于HA日志条目,HA生产者包含硬件寄存器来标识HA日志的位置。在一个或多个实施例中,HA生产者高速缓存利用系统总线“高速缓存注入”命令或“强制的高速缓存注入”命令将HA日志条目一致地直接安装到HA消费者核心的高速缓存中(而不是将HA日志条目写入到系统存储器)。高速缓存注入命令被配置为维护一致性,因为生产者核心在HA日志写入时没有HA日志高速缓存线的所有权。众所周知,高速缓存注入命令是特殊的系统总线命令,其有助于将高速缓存线直接写到高速缓存(例如消费者高速缓存)中。基于生产者高速缓存的目录中“HA位”,HA数据可以和非HA数据区分,该“HA位”被用于跟踪哪条高速缓存线被HA生产者核心修改。
[0043]在生产者高速缓存牺牲HA数据时,横向驱逐(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数据相关联的系统总线流量和延迟。
[0044]参考图1,示出了示例性数据处理环境100,其包含数据处理系统110,根据本公开的一个或多个实施例,数据处理系统110被配置为将HA日志和HA数据从生产者高速缓存直接移动到消费者高速缓存。数据处理系统110可以采用多种形式,例如工作站、膝上型计算机系统、笔记本计算机系统、桌面计算机系统或服务器以及/或者其集群。数据处理系统110包括耦合到数据存储子系统104的一个或多个处理单元或处理器102 (其中每个可以包括用于执行程序代码的一个或多个处理器核心)、可选的显示器106、一个或多个输入设备108、以及网络适配器109。数据存储子系统104例如可以包括应用合适数量的各种存储器(例如动态随机存取存储器(DRAM)、静态RAM(SRAM)、只读存储器(ROM)),以及/或者一个或多个大容量存储设备例如磁盘或光盘驱动器。
[0045]数据存储子系统104包括用于数据处理系统110的一个或多个操作系统(OS) 114。数据存储子系统104还包括应用程序,例如浏览器112 (其可选地包括定制插件来支持各种客户端应用)、用于管理由不同OS映像实例化的一个或多个虚拟机(VM) 120的管理程序(或虚拟机监视器(VMM)) 116、以及其他应用(例如字处理应用、演示应用以及电子邮件应用)118。
[0046]显示器106例如可以是阴极射线管(CRT)或液晶显示器(IXD)。数据处理系统110的输入设备108例如可以包括鼠标、键盘、触觉设备和/或触摸屏。网络适配器109支持数据处理系统110使用一种或多种通信协议(例如802.X、HTTP、简单邮件传输协议(SMTP)等)与一个或多个有线和/或无线网络进行通信。数据处理系统110被显示为通过一个或多个有线或无线网络(例如互联网122)连接到各个文件服务器124和各个网页服务器126,该服务器向数据处理系统110的用户提供感兴趣的信息。数据处理环境100还包括以和数据处理系统110类似的方式配置的一个或多个数据处理系统(DPS) 150。通常,数据处理系统150表示数据处理系统110远端的数据处理系统,并且可以执行与在数据处理系统110上执行的一个或多个OS映像相链接的OS映像。
[0047]本领域的普通技术人员将理解,图1中示出的硬件组件和基本配置可以变化。数据处理系统110中的说明性组件不是穷举性的,而是说明性的以突出可被用于实现本发明的组件。例如,额外地或者代替所示硬件,可以使用其他的设备/组件。所示例子不是要表示与当前描述的实施例相关的架构或其他限制。
[0048]参考图2,以额外的细节来说明数据处理系统(DPS) 110和150的相关组件。DPS110和150可以包括一个或多个处理器102,其中每个包含与例如可在数据存储子系统104中实现的一个或多个其他高速缓存级别(例如L2和L3高速缓存)耦合的级别I (LI)高速缓存。如图2所示,DPS 110包括耦合到生产者高速缓存(例如L2和/或1^3高速缓存)204的生产者核心202。如图所示,生产者高速缓存204可以包括驱逐引擎205、窥探介入引擎206、循环缓冲器207以及中间缓冲器208。类似地,DPS 150包括耦合到消费者高速缓存(例如L2和/或L3高速缓存)214的消费者核心212。尽管生产者核心202/生产者高速缓存204和消费者核心212/消费者高速缓存214被示为在不同的数据处理系统中,可以理解,生产者核心202、生产者高速缓存204、消费者核心212和消费者高速缓存214可以在包含多个处理核心的同一数据处理系统中实现。
[0049]参考图3,生产者高速缓存204被示为将HA数据302和HA日志304直接存储到消费者高速缓存214中。HA数据302和HA4日志304可被存储在相同的高速缓存级别(例如H2或H3)中,或者可被存储在不同的高速缓存级别中。消费者高速缓存214被示为响应于来自生产者高速缓存204的横向驱逐(LCO)命令来存储HA数据302。消费者高速缓存214还被示为响应于来自生产者高速缓存204的高速缓存注入命令来存储HA日志304。应该理解,可以使用其他类型的操作将HA数据302和HA日志304从生产者高速缓存204直接移动到消费者高速缓存214。通常,消费者核心212处理HA日志304和HA数据302所需的时间被大幅缩短,因为消费者核心212不需要从系统存储器取回HA日志304和HA数据302。如这里所使用的,术语“系统存储器”是指“主存储器”,并且不包含“高速缓存存储器”。
[0050]参考图4,示例性高速缓存402被示为包含目录404 (其包含用于每条高速缓存线的标签和HA位)以及阵列406 (其包含数据)。应该理解,目录404还可以包含用于每条高速缓存线的若干标志(未示出)。如上所述,HA位指示高速缓存线是否需要从生产者高速缓存204传输到消费者高速缓存214以进行处理。在与高速缓存线关联的数据被生产者核心202(即在生产者核心模式下运行的处理器核心)更新时,该HA位被认定。在检查点上,(例如至少部分由驱逐引擎205执行的)高速缓存行走操作可以遍历真个生产者高速缓存204来检查每条高速缓存线的“HA位”。具有被认定的HA位的每条高速缓存线的物理地址然后被写入到HA日志304中(其可以对应于中间缓冲器208)。在一个或多个实施例中,在HA日志304充满(或者在某些其他的阈值水平,例如四分之三充满)时,生产者高速缓存204(例如响应于窥探介入引擎206所发出的高速缓存注入命令)将HA日志304移动到消费者高速缓存214以用于后续处理。在一个或多个实施例中,在牺牲HA数据302(即从生产者高速缓存204逐出高速缓存线以为额外数据腾出空间时)时,生产者高速缓存204 (例如响应于来自驱逐引擎205的横向驱逐命令)将HA数据302移动到消费者高速缓存214以用于后续处理。或者,生产者高速缓存204可以在牺牲之前(例如响应于横向驱逐命令)将HA数据302移动到消费者高速缓存214。在任何情况下,在发起HA处理时,消费者核心212利用HA日志304来确定HA数据302的位置。
[0051]参考图5,示出了过程500,每次例如HA日志304需要创建新条目(例如,响应于在高速缓存行走、高速缓存清空、HA高速缓存线牺牲、以及/或者HA高速缓存线介入期间找到HA线)时,该过程开始于框502。接下来,在框504中,生产者高速缓存204在生产者高速缓存204中的HA日志304中创建条目。然后,在框506中,生产者高速缓存204在HA日志304中记录修改的高速缓存线的地址(例如在生产者高速缓存204的中间缓冲器208中)。接下来,在框507中,生产者高速缓存204解除认定用于记录的高速缓存线的HA位。接下来,在决策框508中,生产者高速缓存204确定HA日志304是否已经到达预定的填充水平(例如百分之七十满、百分之八十满、全满)。响应于在框508中HA日志304没有满,控制从框508传到框506。响应于在框508中HA日志304处于预定的填充水平,控制从框508传到框510,在此,生产者高速缓存204 (例如在将HA日志从中间缓冲器208传输到生产者高速缓存204的循环缓冲器204之后)发起将HA日志304缓存注入到消费者高速缓存214中。除了在框510中发起将HA日志304缓存注入到消费者高速缓存214中,可以创建另一过程500来加速检查点。或者,生产者高速缓存204可以使用另一阈值来确定何时将HA日志304注入到消费者高速缓存214中。在框510之后,过程500在框512中结束,直到需要创建下一HA日志。
[0052]参考图6,示出了过程600,其每次例如创建HA数据302时从框602开始。接下来,在框604中,生产者高速缓存204认定被修改的高速缓存线的HA位,以指示高速缓存线应当被记录为生产者高速缓存204中的HA数据302。然后,在判定框606中,生产者高速缓存204确定HA数据302中的高速缓存线是否被牺牲。响应于在框606中HA数据302中的高速缓存线未被牺牲,控制回到框606。响应于在框606中HA数据302中的高速缓存线被牺牲,控制从框606传到框608,其中,生产者高速缓存304发起将被修改的高速缓存线(即HA数据302)移动到消费者高速缓存214中。例如可以使用横向驱逐(LCO)命令将被修改的高速缓存线从生产者高速缓存204移动到消费者高速缓存214。或者,可以在牺牲被修改的高速缓存线之前将被修改的高速缓存线从生产者高速缓存204移动到消费者高速缓存214。在框608之后,过程600在框610中结束,直到在生产者高速缓存204中修改下一高速缓存线。
[0053]因此,这里公开了将基于检查点的高可用性(HA)日志和数据从生产者高速缓存直接移动到消费者高速缓存的技术。
[0054]在上述流程图中,图5和6所示的方法可以在包含计算机可读代码的计算机可读介质中实现,从而在计算设备上执行计算机可读代码时可以执行一系列步骤。在某些实现中,该方法的特定步骤可被组合、同时或者以不同的顺序来执行、或者可能被省略,而不偏离本发明的精神和范围。于是,尽管以特定的顺序描述和说明了方法步骤,使用特定顺序的步骤并非表示对本发明的任何限制。可以针对步骤顺序进行更改,而不偏离本发明的精神和范围。因此使用特定的顺序不应被理解为限制性的,并且本发明的范围仅由所附权利要求来限定。
[0055]所属【技术领域】的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0056]可以采用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任何以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任何合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0057]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任何合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0058]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于——无线、有线、光缆、RF等等,或者上述的任何合适的组合。
[0059]可以以一种或多种程序设计语言的任何组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任何种类的网络一包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用互联网服务提供商来通过互联网连接)。
[0060]参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0061]也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据处理装置或其他装置上,使得在计算机、其它可编程数据处理装置或其他装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机、其它可编程装置或其他装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0062]如将进一步理解的,本发明的实施例中的过程可使用软件、固件或硬件的任何组合被实施。作为将本发明在软件中实施的准备步骤,编程代码(不管是软件还是固件)将典型地被存储在一个或多个机器可读的存储介质中,诸如固定(硬)驱动器、软盘、光盘、磁带、半导体存储器,诸如R0M、PR0M等,由此制作根据本发明的制造品。包含程序代码的制造品通过执行直接来自存储设备的代码被使用,通过将来自存储设备的代码复制到另一个存储设备,诸如硬盘、RAM等,或通过使用传输类型的介质(诸如数字和模拟通信链路)传输代码用于远程执行。本发明的方法可通过合并一个或多个机器可读存储设备而被实现,所述设备包含根据本发明的代码,并具有合适的处理硬件来执行其中包含的代码。用于实施本发明的设备可以是一个或多个处理设备,以及包含根据本发明编码的程序或具有对其的访问权的存储子系统。
[0063]因此,尽管在具有安装(或执行)的软件的完全功能计算机(服务器)系统环境中描述了本发明的说明性实施例,本领域技术人员将理解本发明的说明性实施例的软件方面能以各种形式的程序产品被分发,且本发明的说明性实施例同样适用,而不管被用于实际执行分发的介质的特定类型。
[0064]尽管已参考示例性实施例描述本发明,本领域技术人员讲理解可对其元件进行各种修改,并替换其等价物,而不脱离本发明的范围。此外,可进行许多修改以适应特定系统、设备及其组件,以适于本发明的教导而不脱离实质范围。因此,本发明不限于在此描述的特定实施例,而是包括落入所附权利要求书范围内的所有实施例。而且,第一、第二等的术语的使用不是指示任何顺序或重要性,而是用来区分元件。
[0065]在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如在此使用的,单数形式“一”、“一个”和“该”也包括复数形式,除非上下文另有清楚说明。将理解术语“包括”和/或“包含”,当被用在本说明书中时,指示存在所述的特点、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特点、整体、步骤、操作、元件、组件和/或其组合。
[0066]以下权利要求中的所述装置或步骤加功能性元件的相应的结构、材料、行为和等价物旨在包括用于结合在权利要求中特意阐明的元件而执行该功能的任何结构、材料或行为。本发明的说明已出于解释和描述的目的被展示,但不限于将本发明限制在公开的形式。许多修改和变化对于本领域普通技术人员来说是明显的,且不脱离本发明的精神和范围。选择并描述实施例是为了最好地解释本发明的原理和实际应用,且使得本领域普通技术人员能理解本发明的具有适用于所打算的特定用途的各种修改的各种实施例。
【权利要求】
1.一种操作数据处理系统的方法,包括: 在生产者高速缓存的数据阵列中记录生产者核心所修改的高速缓存线的地址,以创建用于生产者核心的高可用性(HA)日志,其中,HA日志对应于包含多个所述地址的高速缓存线.-^4 , 将HA日志从生产者高速缓存直接移动到消费者核心的消费者高速缓存; 将与HA日志的地址关联的HA数据从生产者高速缓存直接移动到消费者高速缓存;以及 由消费者核心为数据处理系统处理HA日志和HA数据。
2.如权利要求1所述的方法,其中,所述被修改的高速缓存线由HA位指示。
3.如权利要求1所述的方法,其中,在生产者高速缓存中记录生产者核心所修改的高速缓存线的地址包括在与生产者高速缓存关联的中间缓冲器中记录被修改的高速缓存线的地址。
4.如权利要求3所述的方法,其中,将HA日志从生产者高速缓存直接移动到消费者高速缓存包括响应于中间缓冲器充满而将HA日志从中间缓冲器传输到循环缓冲器,以及使用高速缓存注入命令将循环缓冲器中存储的HA日志注入到消费者高速缓存。
5.如权利要求1所述的方法,其中,响应于生产者高速缓存牺牲与HA日志的地址关联的HA数据而将该HA数据从生产者高速缓存直接移动到消费者高速缓存。
6.如权利要求5所述的方法,其中,所述生产者高速缓存利用横向驱逐(LCO)命令来发起HA数据从生产者高速缓存到消费者高速缓存的一致传输。
7.如权利要求1所述的方法,其中,所述消费者高速缓存是级别2(L2)高速缓存或级别3(L3)高速缓存。
8.一种数据处理系统,包括: 生产者核心; 与生产者核心耦合的生产者高速缓存; 消费者核心;以及 与消费者核心耦合的消费者高速缓存,其中,所述生产者高速缓存被配置为:在生产者高速缓存的数据阵列中记录生产者核心所修改的高速缓存线的地址,以创建用于生产者核心的高可用性(HA)日志;将HA日志直接写入到消费者核心的消费者高速缓存,以及将与HA日志的地址关联的HA数据直接写入到消费者高速缓存,并且其中,所述HA日志对应于包含多个所述地址的高速缓存线,并且消费者核心被配置成为数据处理系统处理HA日志和HA数据。
9.如权利要求8所述的数据处理系统,其中,所述被修改的高速缓存线由HA位指示。
10.如权利要求8所述的数据处理系统,其中,所述被修改的高速缓存线的地址被记录在生产者高速缓存的中间缓冲器中。
11.如权利要求10所述的数据处理系统,其中,响应于中间缓冲器充满,将HA日志从中间缓冲器传输到消费者高速缓存的循环缓冲器,并通过将循环缓冲器中存储的HA日志注入到消费者高速缓存将该日志写入消费者高速缓存。
12.如权利要求8所述的数据处理系统,其中,响应于生产者高速缓存牺牲与HA日志的地址关联的HA数据,将该HA数据直接写入到消费者高速缓存。
13.如权利要求12所述的数据处理系统,其中,所述生产者高速缓存利用横向驱逐(LCO)命令来发起HA数据从生产者高速缓存到消费者高速缓存的一致传输。
14.如权利要求8所述的数据处理系统,其中,所述消费者高速缓存是级别2(L2)高速缓存或级别3 (L3)高速缓存。
15.一种处理器,包括: 生产者核心;以及 与该生产者核心耦合的生产者高速缓存,其中,该生产者高速缓存被配置为:在生产者高速缓存的数据阵列中记录生产者核心所修改的高速缓存线的地址,以创建用于生产者核心的高可用性(HA)日志;将撤日志直接写入到消费者核心的消费者高速缓存,以及将与HA日志的地址关联的HA数据直接写入到消费者高速缓存,并且其中,所述HA日志对应于包含多个所述地址的高速缓存线,并且消费者核心被配置为处理HA日志和HA数据。
16.如权利要求15所述的处理器,其中,所述被修改的高速缓存线由HA位指示。
17.如权利要求15所述的处理器,其中,所述被修改的高速缓存线的地址被记录在生产者高速缓存的中间缓冲器中。
18.如权利要求17所述的处理器,其中,响应于中间缓冲器充满,将HA日志从中间缓冲器传输到消费者高速缓存的循环缓冲器,并通过将循环缓冲器中存储的HA日志注入到消费者高速缓存将该日志写入消费者高速缓存,并且其中,响应于生产者高速缓存牺牲与HA日志的地址关联的HA数据,将该HA数据写入到消费者高速缓存。
19.如权利要求15所述的处理器,其中,所述生产者高速缓存利用横向驱逐(LCO)命令来发起HA数据从生产者高速缓存到消费者高速缓存的一致传输。
20.如权利要求15所述的处理器,其中,所述消费者高速缓存是级别2(L2)高速缓存或级别3(L3)高速缓存。
【文档编号】G06F12/08GK104516832SQ201410513668
【公开日】2015年4月15日 申请日期:2014年9月29日 优先权日:2013年10月8日
【发明者】G·L·格思里, S·R·孔克尔, H·M·勒, G·诺斯, W·J·斯塔克 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1