操作数据处理系统的方法、数据处理系统以及处理器.pdf

上传人:大师****2 文档编号:4042671 上传时间:2018-08-12 格式:PDF 页数:20 大小:1.35MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410513668.6

申请日:

2014.09.29

公开号:

CN104516832A

公开日:

2015.04.15

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||专利申请权的转移IPC(主分类):G06F 12/08登记生效日:20171026变更事项:申请人变更前权利人:国际商业机器公司变更后权利人:格芯公司变更事项:地址变更前权利人:美国纽约变更后权利人:开曼群岛大开曼岛|||实质审查的生效IPC(主分类):G06F 12/08申请日:20140929|||公开

IPC分类号:

G06F12/08; G06F11/34

主分类号:

G06F12/08

申请人:

国际商业机器公司

发明人:

G·L·格思里; S·R·孔克尔; H·M·勒; G·诺斯; W·J·斯塔克

地址:

美国纽约

优先权:

14/048,474 2013.10.08 US

专利代理机构:

北京市中咨律师事务所11247

代理人:

张亚非; 于静

PDF下载: PDF下载
内容摘要

本发明涉及一种操作数据处理系统的方法、数据处理系统以及处理。操作数据处理系统的技术包括在生产者高速缓存的数据阵列中记录生产者核心所修改的高速缓存线的地址,以创建用于生产者核心的高可用性(HA)日志。该技术还包括将HA日志从生产者高速缓存直接移动到消费者核心的消费者高速缓存,以及将与HA日志的地址关联的HA数据从生产者高速缓存直接移动到消费者高速缓存。HA日志对应于包含多个地址的高速缓存线。最后,该技术包括由消费者核心来为数据处理系统处理HA日志和HA数据。

权利要求书

权利要求书
1.  一种操作数据处理系统的方法,包括:
在生产者高速缓存的数据阵列中记录生产者核心所修改的高 速缓存线的地址,以创建用于生产者核心的高可用性(HA)日志, 其中,HA日志对应于包含多个所述地址的高速缓存线;
将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日志和HA数 据。

16.  如权利要求15所述的处理器,其中,所述被修改的高速 缓存线由HA位指示。

17.  如权利要求15所述的处理器,其中,所述被修改的高速 缓存线的地址被记录在生产者高速缓存的中间缓冲器中。

18.  如权利要求17所述的处理器,其中,响应于中间缓冲器 充满,将HA日志从中间缓冲器传输到消费者高速缓存的循环缓 冲器,并通过将循环缓冲器中存储的HA日志注入到消费者高速 缓存将该日志写入消费者高速缓存,并且其中,响应于生产者高 速缓存牺牲与HA日志的地址关联的HA数据,将该HA数据写 入到消费者高速缓存。

19.  如权利要求15所述的处理器,其中,所述生产者高速缓 存利用横向驱逐(LCO)命令来发起HA数据从生产者高速缓存 到消费者高速缓存的一致传输。

20.  如权利要求15所述的处理器,其中,所述消费者高速缓 存是级别2(L2)高速缓存或级别3(L3)高速缓存。

说明书

说明书操作数据处理系统的方法、数据处理系统以及处理器
技术领域
本公开一般涉及基于检查点的高可用性日志和数据,更具体地,涉及 将基于检查点的高可用性日志和数据从生产者高速缓存直接移动到消费者 高速缓存。
背景技术
可以依据应用和支持平台来考虑计算。支持平台典型地包括一个或多 个处理器核心、输入/输出、存储器和固定存储设备的硬件基础设施(其组 合支持操作系统(OS),该操作系统转而支持一个或多个应用)。应用可 被认为是自包含的一组逻辑,其依赖于核心对象文件和相关的资源文件。 随着计算集成到现代产业中,应用变得互相依赖于其他应用的存在。即, 应用的必要环境不仅包括底层的OS和支持硬件平台,还包括其他关键应 用。
关键应用可以包括应用服务器、数据库管理服务器、协作服务器,以 及被统称为中间件的通信逻辑。给定应用的复杂性和平台互操作性,在单 个硬件平台中执行的应用的不同组合可以表现出不同程度的性能和稳定 性。虚拟化技术在支持平台和执行应用之间插入一层。从业务连续性和灾 难恢复的角度来说,移动配置有多种不同应用的整个环境可以和将虚拟映 像从一个支持硬件平台移动到另一个那么简单。
通常,更强大的计算环境可以支持多种不同虚拟映像的共存,而同时 保持映像之间的虚拟分离。结果,一个虚拟映像中的故障情况典型地不会 危害相同硬件平台上的其他协同执行的虚拟映像的完整性。虚拟机监视器 (VMM)或管理程序(hypervisor)管理每个虚拟映像和硬件平台提供的 底层资源之间的交互。裸机(bare metal)管理程序直接在硬件平台上运 行,与OS直接在硬件上运行类似。相反,有主机(hosted)的管理程序 在主机OS中运行。在任一情形下,管理程序可以支持不同访客(guest) OS映像或虚拟机(VM)映像的运行。VM映像的数量仅受到VM容器的 处理资源的限制,该容器具有VM映像或硬件平台。
对于需要针对在单个硬件平台上部署的不同类型应用有单独计算环境 的终端用户来说,虚拟化被证明特别有用。例如,一种类型的硬件平台本 机的基础OS可以提供不同硬件平台本机的虚拟化访客OS(从而需要存在 访客OS的应用可以和需要存在基础OS的其他应用共存)。在该情形下, 终端用户不需要提供单独的计算环境来支持不同类型的应用。即,不管访 客OS,对单个硬件平台的底层资源的访问保持静态。
虚拟化环境被部署,以在组合应用解决方案时聚合不同VM中的不同 的互相依赖的应用。例如,应用服务器可以在一个VM中执行,而数据库 管理服务器在不同的VM中执行,并且web服务器在另一个VM中执行。 每个VM可以在安全网络中互相通信耦合,并且应用的任何给定部署可以 实时(live)迁移到不同的部署,而会干扰其他VM中的其他应用的执行。 在典型的实时迁移中,VM可以从一台主机服务器移动到另一主机服务器, 例如以允许服务器维护或允许改进VM的硬件支持。
基于检查点的高可用性(HA)是一种技术,其中,在基础主机上运行 的VM在每个周期(例如25mS)将其处理器和存储器状态镜像到次级主 机上。镜像过程典型地包括:跟踪基础VM的存储器和处理器状态的变化; 周期性地停止基础VM;通过网络将该改变发送到次级主机;等待次级主 机对存储器和处理器状态更新的接收进行确认;以及恢复基础VM。镜像 过程确保在基础主机面对突发硬件故障的情况下次级主机能够以最小服务 损失来恢复工作负载。如果次级主机检测到基础主机没有响应或者从基础 主机接收到显式的通知,次级主机启动VM的镜像版本,并且在外部看来, 在基础主机故障时VM无缝连续地执行。
尽管基于检查点的HA技术提供了有效的硬件故障保护,基于检查点 的HA技术不会保护软件故障。因为基础VM的处理器和存储器的状态在 次级主机上如实地复制,如果软件崩溃(例如零指针的去引用)导致次级 主机上的故障转移,VM从最后的检查点恢复执行,并且如果程序执行是 确定性的,会出现相同的错误。存在某些受限的情形,其中如果软件故障 导致故障转移,VM不会崩溃。但是,这些情形很少见,并且更依赖于运 气而非设计。例如,在低级主机上恢复工作负载时,表现为一个处理器可 能访问正被另一处理器修改的数据这种竞争条件的软件漏洞可能不会出 现,因为由于调度,数据可能最终没有被并行访问。
发明内容
一种操作数据处理系统的技术,包括在生产者高速缓存的数据阵列中 记录生产者核心所修改的高速缓存线的地址,以便为生产者核心创建高可 用性(HA)日志。该技术还包括将HA日志移动到消费者核心的消费者高 速缓存,以及将与HA日志的地址关联的HA数据移动到消费者高速缓存。 HA日志对应于包含多个地址的高速缓存线。最后,该技术包括由消费者 核心来为数据处理系统处理HA日志和HA数据。
上述总结包含简化、概括和细节的忽略,并且不是对所请求保护的主 题的全面描述,而是要提供与之关联的某些功能的简要概览。在查看下列 附图和详细描述后,所请求保护的主题的其他系统、方法、功能、特征和 优势对于本领域技术人员来说将变得明显。
在下列详细描述中,本发明的上述以及其他目标、特征和优势将变得 明显。
附图说明
将结合附图来阅读说明性实施例的描述,在附图中:
图1是根据本公开的示例性数据处理系统环境的相关部分的图,该数 据处理系统环境被配置为产生高可用性(HA)日志和数据;
图2是可以在图1的数据处理系统环境中部署的数据处理系统(其包 括生产者核心和生产者高速缓存)和另一数据处理系统(其包括消费者核 心和消费者高速缓存)的图;
图3是描述根据本公开的实施例HA日志和数据(分别使用高速缓存 注入和横向驱逐命令)从图2中的生产者高速缓存传输到消费者高速缓存 的图;
图4是根据本公开的另一实施例的高速缓存的相关部分的图,该高速 缓存的目录包括用于每条高速缓存线的HA位,以表示高速缓存线是否需 要从生产者高速缓存传输到消费者高速缓存;
图5是根据本公开的实施例的创建并将HA日志注入到消费者高速缓 存的示例性过程的流程图;
图6是根据本公开的实施例的指定HA数据并将指定的HA数据注入 到消费者高速缓存的示例性过程的流程图。
具体实施方式
说明性实施例提供了一种方法、数据处理系统和处理器,其被配置为 将基于检查点的高可用性(HA)日志和数据从生产者高速缓存移动到消费 者高速缓存。
在本发明的示例性实施例的下列详细描述中,详细描述了可以实现本 发明的特定示例性实施例,使得本领域技术人员能够实现本发明,并且应 该理解,可以使用其他实施例,并且可以进行逻辑、架构、程序、机械、 电和其他改变,而不脱离本发明的精神或范围。因此下列详细描述不应被 理解为限制性的,并且本发明的范围由所附权利要求及其等价物来定义。
应该理解,特定组件、设备和/或参数名称的使用仅是示例,而不是暗 示对本发明的任何限制。因此本发明可以以用于描述这里的组件/设备/参 数的不同的命名/术语来实现,而没有限制。给定使用术语的上下文,这里 使用的每个术语应被给予最广泛的解释。如这里所使用的,术语“耦合” 可以包括组件或元素之间的直接连接,或者使用一个或多个中间组件或元 素的组件或元素之间的间接连接。
如上所述,基于检测点的高可用性(HA)是一种技术,其中在“基础 主机”上运行的虚拟机(VM)定期(例如每隔25mS)执行“检查点”, 其将基础主机的处理器和存储器状态镜像到“次级”主机。镜像过程涉及: 跟踪VM的处理器寄存器和存储器状态的变化;周期性地停止VM;(例 如通过网络)将被跟踪的变化发送到次级主机;等待次级主机对处理器和 存储器状态更新的接收进行确认;以及恢复VM。这确保了次级主机在基 础主机遇到突发硬件故障时能够以最小服务损失来恢复工作负载。
在一种或多种传统的基于检查点的HA实现中,管理程序使用页保护 来识别VM存储器的修改区域,在页保护中,在检查点之后所有存储器都 被打上只读标记。管理程序的功能在于:检测在对存储器页首次执行存储 时出现的后续故障;恢复页的原始访问许可;以及将页标记为“脏的”, 需要在下一检查点传输该页。通常,使用检查点的VM会比不使用检查点 带来更多的页保护故障。应该理解,对页中的单个字节的改变需要整个页 被发送到次级系统,因为一旦页保护被移除,不使用额外的处理器周期和 额外的存储器将页与原始页的副本进行比较,将无法知道页有多少被修改 了。由于需要将整个脏页发送到次级系统,传统的系统典型地使用相对小 的页大小(例如4K页大小,与64K页大小相对),以减少基础和次级系 统之间的流量。在该情形下,传统系统性能会受到不利影响,因为操作系 统(OS)不能利用大的页。
根据本公开的一个或多个方面,通过维护缓冲器,该缓冲器填充有从 上个检查点以来由生产者处理器核心(生产者核心)修改的高速缓存线地 址,可以记录对存储器的修改,而没有高速缓存线粒度上的缺页。可以在 检查点期间或者推测性地在检查点之前检查缓冲器,以便确定需要将哪些 高速缓存线发送到次级系统以维持一致的存储器映像。由于更小的修改粒 度(例如高速缓存线而不是页),在高速缓存中维护缓冲器一般会减少缺 页,并且减少基础和次级系统之间的流量。缓冲器方法也是页尺寸不可知 的,且由此系统可使用更大的页尺寸,而不会引起与页尺寸相关的性能惩 罚。
根据本公开的一个或多个实施例,与已知的方法相比,记录高速缓存 线地址带来了显著的性能优势和复杂度降低。在多个实施例中,公开的技 术可以在硬件中实现,某些组件在高速缓存中实现,并且某些参数通过只 能有特权的管理程序代码访问的处理器寄存器来暴露。在一个或多个实施 例中,管理程序软件被修改,以利用添加的硬件特征。
在任何现代处理器设计的高速缓存层级结构中,存在某种形式的驱逐 引擎和窥探介入引擎。驱逐引擎负责将从高速缓存逐出的数据写回到系统 存储器或写入到与另一处理器关联的高速缓存。窥探介入引擎负责将数据 从给定的高速缓存提供给另一处理器,该处理器正尝试访问包含该数据的 高速缓存线。例如可以由在高速缓存中为进入的数据释放空间的需求来触 发驱逐引擎。例如可以触发窥探介入引擎,以在另一处理器希望修改高速 缓存线中的数据时向该另一处理器提供对高速缓存线的独占访问。通常, 在检查点间隔期间(即两个检查点之间的时间),在检查点之间修改的每 条高速缓存线作为脏数据留在高速缓存中或者已经经过驱逐或窥探介入引 擎,并且在检查点上,可以触发高速缓存行走(walk)/清洗(scrub)。
高速缓存清除(flush)将脏数据推送到系统存储器,从而在检查点之 间被修改的每条高速缓存线确保已经经过驱逐引擎。驱逐引擎和窥探介入 引擎可被修改,从而除了将脏高速缓存线数据写入到存储器/另一高速缓存 之外,引擎还可以运行在将修改的高速缓存线的地址写入到位于高速缓存 中的循环缓冲器的模式中。为了提高效率,高速缓存硬件可被配置为管理 中间缓冲器(例如两条高速缓存线的深度缓冲器),该中间缓冲器收集驱 逐和/或窥探介入引擎所报告的地址。在一个或多个实施例中,在中间缓冲 器被地址的全高速缓存线有效负荷充满时,驱逐引擎(通过驱逐命令)将 中间缓冲器的内容移动到循环缓冲器。在至少一个实施例中,中间缓冲器 中的每条高速缓存线保存多达十六个八字节地址。
应当理解,并非数据处理系统的所有处理器核心都在所有时刻运行在 生产者模式下。在生产者模式下运行的处理器核心在这里被称为“生产者 核心”。通过设置管理程序可访问的硬件标记,可以将处理器核心置于生 产者模式下。在至少一个实施例中,在处理器核心处于生产者核心模式时, 为了管理对循环缓冲器的写入,驱逐引擎维护寄存器,其包含:基址(即 到缓冲器的基地址的指针);生产者头部(即缓冲器中下一地址将被写入 的偏移量);屏障(即边界指针);以及大小(即缓冲器的大小的指示)。
在多个实施例中,HA日志被维护在存储器中,该存储器与分配给虚 拟机(VM)的存储器分离,并且只能被管理程序访问。在生产者核心模 式下,除了正常的驱逐和/或窥探介入行为,驱逐和窥探介入操作还被配置 为将被修改的高速缓存线的地址记录到高速缓存的当前填充中间缓冲器中 (例如使用乒乓缓冲,从而一个缓冲器可以被填充而另一个被写回到另一 存储器)。当在生产者核心模式下时,可以命令驱逐引擎通过下列行为将 高速缓存线从高速缓存的中间缓冲器(在它们填充时)移动到高速缓存中 的循环缓冲器:发起高速缓存线地址到生产者头部指针的存储;递增生产 者头部指针,如果生产者头部指针到达基址(base)+大小(size),则折 回到基址;并且如果生产者头部等于屏障,则将故障传递给管理程序。
在多个实施例中,在下一检查点出现时:基础主机上的管理程序挂起 VM的执行;触发高速缓存行走操作,以便为HA日志生成条目;并且消 费者核心(其可以是物理不同的核心或相同的核心(但不再处于生产者核 心模式))遍历HA日志,并且针对每个条目,读取地址,从VM的存储 器读取该地址处的当前数据,将(地址、数据)对发送到次级主机(在那 儿它被用于更新次级VM的存储器映像),与次级系统同步其他状态(例 如处理器寄存器),然后发起基础VM的执行恢复。
消费者核心可以实现各种优化。例如,在检查点间隔中特定的地址被 驱逐若干次时,驱逐地址将出现在日志中多次。应该理解,重复的驱逐地 址仅需要被发送到次级系统一次,因为被发送的是VM的存储器中的当前 数据,而不是被驱逐时的数据(其未被记录)。这样,消费者核心可以执 行某种缩减(reduction),以减少到次级系统的带宽。如上所述,在VM 使用多个处理器核心并且同一条高速缓存线在同一检查点间隔期间被多于 一个处理器核心驱逐时,该地址将出现在多个日志中,但仅需要被发送一 次。再一次地,可以执行跨日志的某种缩减以减少带宽。
消费者核心可以开始推测性地处理检查点之前的生产者核心的HA日 志。尽管推测性地处理生产者核心的HA日志降低了用于缩减的范围,推 测性地处理生产者核心的HA日志会平滑到次级系统的数据传输,并更有 效地利用可用的总带宽。需要注意,基础VM使用的工作足迹的主体(bulk) 在检查点之间的时间期间可以位于高速缓存中,并且记录的主体可以出现 在检查点的时间。硬件的自然高速缓存可以在仅记录给定高速缓存线一次 时进行有效的工作,即使在检查点之间它已被存储多次。屏障寄存器的目 的是确保在检查点操作期间不会由于日志折回而丢失任何数据。基于生产 者头部针对屏障的检查,屏障指向检查点间隔中的第一条日志记录,以确 保数据不会被覆盖。
在多个实施例中,如果到达屏障,则发起故障转移到次要系统,或者 所有VM存储器都被重新同步。故障转移到次要系统或者VM存储器重新 同步是需要的,因为在高速缓存中可能存在还没有经过驱逐引擎的脏数据。 在该情形下,不希望简单地发起即刻检查点,因为已经没有地方来记录脏 地址。通常,管理程序应同时确保日志有合适的大小并且还能定期监视生 产者头部指针,如果预期到日志溢出则发起较早的检查点。如果消费者核 心推测性地处理日志,则管理程序可以周期性地移动屏障指针,从而只有 在生产者核心与(在消费者核心落后的情况下)消费者核心还没有处理的 日志条目冲突时才会触发溢出。
可以实施修改,使得驱逐引擎和窥探介入引擎记录在检查点之间离开 高速缓存的存储器地址,并且在检查点发起高速缓存清空以确保高速缓存 中没有留下修改的数据(由此确保被修改的数据经过驱逐引擎并且被记 录)。该方法的缺点是在每个检查点间隔都需要高速缓存清空。高速缓存 清空导致驱逐引擎和存储器子系统的额外压力,并且一般会降低在高可用 性(HA)模式下运行的工作负载的性能。
根据另一方法,通过为高速缓存中的每条高速缓存线引入新的“HA 位”来确保在检查点间隔记录所有地址,而不需要进行高速缓存清空。当 处理器核心在生产者核心模式下运行时,通过高速缓存线的修改来设置 HA位,并且可作为高速缓存行走操作的一部分来清除它,该高速缓存行 走操作在检查点上执行,并且行走高速缓存使得HA位被认定(asserted) 的高速缓存线将其地址记录到循环缓冲器。然后针对所有高速缓存线来解 除认定(de-assert)HA位。在该实现中,与高速缓存线关联的数据未被 写入到系统存储器,并且该高速缓存线在高速缓存内部仍然被标记为“脏 的”。处理器高速缓存典型地被实现为查找表,其将地址(标签)与某些 数据相关联。该标签可以是虚拟或物理地址,或其某种组合,并且数据是 固定大小的(例如高速缓存线)。对于任何给定标签,在高速缓存中可以 存在能找到数据的若干个位置,且从而高速缓存查找典型地涉及检查若干 个槽(slot)来找到匹配的标签。此外,槽可以不包含任何数据,且从而槽 典型地不仅包含将与标签关联的数据,还包含多个标志。
根据另一实现,HA位被添加到高速缓存中的每个槽。当与高速缓存 线关联的数据被在生产者核心模式下运行的处理器核心更新时,HA位被 认定。在检查点上,高速缓存行走操作遍历整个高速缓存,与高速缓存清 空类似,但不是检查“脏位”并将数据向外推送到系统存储器,而是高速 缓存行走操作会检查“HA位”并将物理地址向外推送到循环缓冲器。
在大多数计算系统中,通常有多层高速缓存(例如级别1到级别N(即 L1到LN),其中L1表示最快、最小的高速缓存,其最接近处理器核心, 而N典型地是3或4,并且在N增加时趋向于更慢和更大)。在一个或多 个实施例中,高速缓存行走操作遍历可能包含HA修改数据的所有高速缓 存,但这不一定意味着所有高速缓存都必须被遍历,因为某些高速缓存级 别可以是直写式(write-through)或回写式(write-back)的。众所周知, 直写式高速缓存在高速缓存中保留数据,但也将数据同步地推送回到下一 高速缓存级别,以有利于后续读取的快速访问时间。直写式高速缓存的写 入比回写式高速缓存更昂贵,因为写入者必须等待(更慢的)下一级别高 速缓存的写入完成。直写式高速缓存不需要被清空。回写式高速缓存在高 速缓存中保留数据,但不会将数据同步地推送到高速缓存中的下一级别。 使用回写式高速缓存,写入到高速缓存的过程更快,代价是必须管理对称 多处理器(SMP)系统中的高速缓存之间的数据一致性。在从高速缓存中 逐出数据以为额外的数据腾出空间时,会引起写入到高速缓存中的下一级 别的成本。
在多层高速缓存的层级结构中,只有回写式高速缓存需要被高速缓存 行走操作遍历。例如,在包含直写式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生产者核心关联的高速缓存中牺牲(victimize) 出了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数据可以和非HA数据区分,该“HA位”被用于跟 踪哪条高速缓存线被HA生产者核心修改。
在生产者高速缓存牺牲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数据相关联的系统总线流量和延迟。
参考图1,示出了示例性数据处理环境100,其包含数据处理系统110, 根据本公开的一个或多个实施例,数据处理系统110被配置为将HA日志 和HA数据从生产者高速缓存直接移动到消费者高速缓存。数据处理系统 110可以采用多种形式,例如工作站、膝上型计算机系统、笔记本计算机 系统、桌面计算机系统或服务器以及/或者其集群。数据处理系统110包括 耦合到数据存储子系统104的一个或多个处理单元或处理器102(其中每 个可以包括用于执行程序代码的一个或多个处理器核心)、可选的显示器 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)等)与一个或多个 有线和/或无线网络进行通信。数据处理系统110被显示为通过一个或多个 有线或无线网络(例如互联网122)连接到各个文件服务器124和各个网 页服务器126,该服务器向数据处理系统110的用户提供感兴趣的信息。 数据处理环境100还包括以和数据处理系统110类似的方式配置的一个或 多个数据处理系统(DPS)150。通常,数据处理系统150表示数据处理系 统110远端的数据处理系统,并且可以执行与在数据处理系统110上执行 的一个或多个OS映像相链接的OS映像。
本领域的普通技术人员将理解,图1中示出的硬件组件和基本配置可 以变化。数据处理系统110中的说明性组件不是穷举性的,而是说明性的 以突出可被用于实现本发明的组件。例如,额外地或者代替所示硬件,可 以使用其他的设备/组件。所示例子不是要表示与当前描述的实施例相关的 架构或其他限制。
参考图2,以额外的细节来说明数据处理系统(DPS)110和150的相 关组件。DPS 110和150可以包括一个或多个处理器102,其中每个包含 与例如可在数据存储子系统104中实现的一个或多个其他高速缓存级别 (例如L2和L3高速缓存)耦合的级别1(L1)高速缓存。如图2所示, DPS 110包括耦合到生产者高速缓存(例如L2和/或L3高速缓存)204的 生产者核心202。如图所示,生产者高速缓存204可以包括驱逐引擎205、 窥探介入引擎206、循环缓冲器207以及中间缓冲器208。类似地,DPS 150 包括耦合到消费者高速缓存(例如L2和/或L3高速缓存)214的消费者核 心212。尽管生产者核心202/生产者高速缓存204和消费者核心212/消费 者高速缓存214被示为在不同的数据处理系统中,可以理解,生产者核心 202、生产者高速缓存204、消费者核心212和消费者高速缓存214可以在 包含多个处理核心的同一数据处理系统中实现。
参考图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。如 这里所使用的,术语“系统存储器”是指“主存储器”,并且不包含“高 速缓存存储器”。
参考图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的位置。
参考图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日志。
参考图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中修改下一高速缓存线。
因此,这里公开了将基于检查点的高可用性(HA)日志和数据从生产 者高速缓存直接移动到消费者高速缓存的技术。
在上述流程图中,图5和6所示的方法可以在包含计算机可读代码的 计算机可读介质中实现,从而在计算设备上执行计算机可读代码时可以执 行一系列步骤。在某些实现中,该方法的特定步骤可被组合、同时或者以 不同的顺序来执行、或者可能被省略,而不偏离本发明的精神和范围。于 是,尽管以特定的顺序描述和说明了方法步骤,使用特定顺序的步骤并非 表示对本发明的任何限制。可以针对步骤顺序进行更改,而不偏离本发明 的精神和范围。因此使用特定的顺序不应被理解为限制性的,并且本发明 的范围仅由所附权利要求来限定。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、 方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形 式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软 件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电 路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面 还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式, 该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任何组合。计算机可读介质可 以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质 例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系 统、装置或器件,或者任何以上的组合。计算机可读存储介质的更具体的 例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算 机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编 程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器 (CD-ROM)、光存储器件、磁存储器件、或者上述的任何合适的组合。在 本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质, 该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的 数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以 采用多种形式,包括——但不限于——电磁信号、光信号或上述的任何合 适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任 何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指 令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包 括——但不限于——无线、有线、光缆、RF等等,或者上述的任何合适 的组合。
可以以一种或多种程序设计语言的任何组合来编写用于执行本发明操 作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言— 诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如 “C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上 执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在 用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器 上执行。在涉及远程计算机的情形中,远程计算机可以通过任何种类的网 络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可 以连接到外部计算机(例如利用互联网服务提供商来通过互联网连接)。
参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流 程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以 及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些 计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处 理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过 计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/ 或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使 得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而, 存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的 一个或多个方框中规定的功能/动作的指令的制造品(article of  manufacture)。也可以把计算机程序指令加载到计算机、其它可编程数据 处理装置或其他装置上,使得在计算机、其它可编程数据处理装置或其他 装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机、 其它可编程装置或其他装置上执行的指令就提供实现流程图和/或框图中 的方框中规定的功能/操作的过程。
如将进一步理解的,本发明的实施例中的过程可使用软件、固件或硬 件的任何组合被实施。作为将本发明在软件中实施的准备步骤,编程代码 (不管是软件还是固件)将典型地被存储在一个或多个机器可读的存储介 质中,诸如固定(硬)驱动器、软盘、光盘、磁带、半导体存储器,诸如 ROM、PROM等,由此制作根据本发明的制造品。包含程序代码的制造 品通过执行直接来自存储设备的代码被使用,通过将来自存储设备的代码 复制到另一个存储设备,诸如硬盘、RAM等,或通过使用传输类型的介 质(诸如数字和模拟通信链路)传输代码用于远程执行。本发明的方法可 通过合并一个或多个机器可读存储设备而被实现,所述设备包含根据本发 明的代码,并具有合适的处理硬件来执行其中包含的代码。用于实施本发 明的设备可以是一个或多个处理设备,以及包含根据本发明编码的程序或 具有对其的访问权的存储子系统。
因此,尽管在具有安装(或执行)的软件的完全功能计算机(服务器) 系统环境中描述了本发明的说明性实施例,本领域技术人员将理解本发明 的说明性实施例的软件方面能以各种形式的程序产品被分发,且本发明的 说明性实施例同样适用,而不管被用于实际执行分发的介质的特定类型。
尽管已参考示例性实施例描述本发明,本领域技术人员讲理解可对其 元件进行各种修改,并替换其等价物,而不脱离本发明的范围。此外,可 进行许多修改以适应特定系统、设备及其组件,以适于本发明的教导而不 脱离实质范围。因此,本发明不限于在此描述的特定实施例,而是包括落 入所附权利要求书范围内的所有实施例。而且,第一、第二等的术语的使 用不是指示任何顺序或重要性,而是用来区分元件。
在此使用的术语仅是为了描述特定实施例,且不旨在限制本发明。如 在此使用的,单数形式“一”、“一个”和“该”也包括复数形式,除非 上下文另有清楚说明。将理解术语“包括”和/或“包含”,当被用在本说 明书中时,指示存在所述的特点、整体、步骤、操作、元件和/或组件,但 不排除存在或添加一个或多个其他特点、整体、步骤、操作、元件、组件 和/或其组合。
以下权利要求中的所述装置或步骤加功能性元件的相应的结构、材料、 行为和等价物旨在包括用于结合在权利要求中特意阐明的元件而执行该功 能的任何结构、材料或行为。本发明的说明已出于解释和描述的目的被展 示,但不限于将本发明限制在公开的形式。许多修改和变化对于本领域普 通技术人员来说是明显的,且不脱离本发明的精神和范围。选择并描述实 施例是为了最好地解释本发明的原理和实际应用,且使得本领域普通技术 人员能理解本发明的具有适用于所打算的特定用途的各种修改的各种实施 例。

操作数据处理系统的方法、数据处理系统以及处理器.pdf_第1页
第1页 / 共20页
操作数据处理系统的方法、数据处理系统以及处理器.pdf_第2页
第2页 / 共20页
操作数据处理系统的方法、数据处理系统以及处理器.pdf_第3页
第3页 / 共20页
点击查看更多>>
资源描述

《操作数据处理系统的方法、数据处理系统以及处理器.pdf》由会员分享,可在线阅读,更多相关《操作数据处理系统的方法、数据处理系统以及处理器.pdf(20页珍藏版)》请在专利查询网上搜索。

本发明涉及一种操作数据处理系统的方法、数据处理系统以及处理。操作数据处理系统的技术包括在生产者高速缓存的数据阵列中记录生产者核心所修改的高速缓存线的地址,以创建用于生产者核心的高可用性(HA)日志。该技术还包括将HA日志从生产者高速缓存直接移动到消费者核心的消费者高速缓存,以及将与HA日志的地址关联的HA数据从生产者高速缓存直接移动到消费者高速缓存。HA日志对应于包含多个地址的高速缓存线。最后,该。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1