多主机数据处理环境中的存储器迁移的制作方法
未命名
08-15
阅读:94
评论:0
多主机数据处理环境中的存储器迁移
背景技术:
1.本发明一般涉及数据处理,并且特别涉及多主机数据处理环境内的存储器迁移。
2.通常,云计算是指其中数据处理、数据存储和网络资源、软件和数据对于远程数据处理系统可访问的计算模型,其中提供这样的资源的底层信息技术(it)基础设施的细节对于云服务的消费者是透明的。在各种实现中,it基础设施可以相对于云消费者是场内(on-premises)或场外(off-premises)(或两者的混合)。此外,云计算资源可以(但不要求)在地理上和/或拓扑上广泛分布。
3.云计算通过对远程计算网站的容易访问(例如,经由因特网或私有公司网络)来促进,并且经常采取云消费者可以通过web浏览器访问和使用的基于web的资源、工具或应用的形式,就好像资源、工具或应用是安装在云消费者的计算机系统上的本地程序一样。商业云实现通常被期望满足云消费者的服务质量(qos)要求,其可以在服务级别协议(sla)中指定。在典型的云实现中,云消费者消耗计算资源作为服务,并且仅为所使用的资源付费。
4.通过广泛利用虚拟化,已经促进了云计算的采用,虚拟化是创建计算资源的虚拟(而不是实际)实例,例如操作系统、服务器、存储设备、网络资源等。例如,虚拟机(vm),也称为逻辑分区(lpar),是像物理机一样执行指令的物理机(例如,计算机系统)的软件实现。vm可以被分类为系统vm或进程vm。系统vm提供支持执行诸如windows、linux、android等完整操作系统(os)及其相关联的应用的完整系统平台。另一方面,进程vm通常被设计成运行单个程序并支持单个进程。在任一情况下,在vm上运行的任何应用软件都限于由该vm提供的资源和抽象。因此,通过部署可能来自多个不同云计算客户的多个vm,可以有效地管理和利用由公共it基础设施提供的实际资源。实际it资源的虚拟化和vm的管理通常由被称为vm监视器(vmm)或管理程序(hypervisor)的软件来提供。
5.在典型的虚拟化计算环境中,vm和vmm可以利用传统的输入/输出(i/o)和联网协议彼此通信,并且与计算环境的it基础设施中的物理实体通信。如本领域所公知的,传统的网络协议通常以公知的七层开放系统互连(osi)模型为前提,其包括(以升序)物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。在一些实现中,通过用虚拟网络连接代替传统的物理层连接,vm和vmm能够与其他网络实体通信,就好像vm和vmm是物理网络元件一样。这种传统的虚拟化i/o和网络基础结构在本领域中被称为虚拟输入输出服务器(vios)。
6.在如所描述的云计算环境中,计算工作负载一般可以被表征为包括两个组件:在执行工作负荷的物理主机的寄存器和高速缓存中维护的工作负荷状态以及驻留在物理主机的数据存储装置中的工作负荷数据集。这些计算工作负荷由于各种原因而频繁地在物理主机之间传送,这些原因包括例如数据处理系统维护和升级、负载平衡、规章合规、安全性和资源优化。
7.根据将执行工作负载从源主机传送到目的地主机的一种常规技术,源和目的地主机的操作系统或管理程序首先在逐存储器页(memory page-by-memory page)的基础上协调工作负载数据集经由vios从源主机的存储器到目的地主机的存储器的复制。在成功地传
送工作负荷数据集之后,源和目的地主机的操作系统或管理程序协调工作负荷状态经由vios从源主机到目的地主机的传送。当在工作负荷从源主机转移到目的地主机期间工作负荷继续在源主机上运行时,工作负荷通常继续从工作负荷数据集读取和向其写入。使用该技术,由源主机对已经被传送到目的地主机的存储器页的每次更新(写入)都需要对现在更新的存储器页的第二传送,因此以不可预测的方式延长了工作负荷迁移所需的时间。
8.在一种替换技术中,源主机和目的地主机的操作系统或管理程序首先协调工作负荷状态经由vios从源主机到目的地主机的转移,开始在目的地主机上执行工作负荷,并且此后基于请求调页将存储器页从源主机迁移到目的地主机。因此,每当在目的地主机上执行的工作负载生成对驻留在源主机上的存储器页中的数据的访问请求时,生成软件页错误,并且操作系统或管理程序通过经由vios将所请求的存储器页从源主机复制到目的地主机来处理页错误。使用这种替代技术,存储器页仅从源主机传送到目的地主机一次,但是由于服务每个请求调页请求所需的显著等待时间,工作负载在整个工作负载迁移期间遭受差的响应性。
9.本文描述的两种传统工作负荷迁移技术都利用vios在非相干(non-coherent)主机之间转移工作负荷,vios的特征在于部分地由于必须被遍历以在主机之间传送工作负荷数据集和工作负荷状态的许多协议层而导致的高通信开销和延迟。
技术实现要素:
10.本发明的各种实施例提供了对工作负载在非相干主机之间的动态迁移的支持,同时避免了与vios(或外部网络)相关联的通信开销和延迟,同时传送了工作负载状态和工作负载数据集。
11.在至少一个实施例中,一种服务于源主机的数据处理系统,逻辑分区从该源主机迁移,该数据处理系统可以包括系统结构、系统存储器、通信地耦合到系统结构的系统存储器的存储器控制器、以及通信地耦合到系统结构并被配置为经由通信链路通信地耦合到目的地主机的链路控制器,源主机与该目的地主机非相干。源主机另外包括通信地耦合到系统结构的多个处理单元。多个处理单元例如由管理程序或虚拟机监视器配置为执行具有驻留在系统存储器中的数据集的逻辑分区,并经由通信链路将逻辑分区迁移到目的地主机。逻辑分区的迁移包括经由通信链路将在源主机上执行的逻辑分区的数据集从源主机的系统存储器迁移到目的地主机的系统存储器。在迁移数据集的至少一部分之后,逻辑分区的状态经由通信链路从源主机迁移到目的地主机,使得逻辑分区此后在目的地主机上执行。这种迁移技术为迁移提供了减少的等待时间,并为逻辑分区提供了改进的抖动。
12.本发明的各方面也可被实现为数据处理的方法。在一个示例中,该方法可以包括经由通信链路将在源主机上执行的逻辑分区的数据集从源主机的系统存储器迁移到相对于源主机非相干的目的地主机的系统存储器。在迁移至少一部分数据集之后,经由通信链路将逻辑分区的状态从源主机迁移到目的地主机。在将逻辑分区的状态迁移到目的地主机之后,在目的地主机上执行逻辑分区。
13.本发明的各方面也可被实现为程序产品。在一个示例中,该程序产品包括计算机可读存储设备和存储在该计算机可读存储设备内的程序代码,当由用作源主机的数据处理系统执行时,该程序代码使该数据处理系统经由通信链路将在源主机上执行的逻辑分区的
数据集从该源主机的系统存储器迁移到相对于该源主机非相干的目的地主机的系统存储器。该程序代码还使得数据处理系统在迁移至少一部分数据集之后,经由通信链路将逻辑分区的状态从源主机迁移到目的地主机,使得逻辑分区在目的地主机上执行。
14.在一些示例或操作场景中,迁移数据集包括在逻辑分区开始在目的地主机上执行之后将逻辑分区的数据集中的至少一些从源主机迁移到目的地主机。
15.在一些示例或操作场景中,迁移数据集包括源主机基于目的地主机的请求将数据集的一个或多个存储器页复制到目的地主机中的系统存储器。
16.在一些示例或操作场景中,迁移数据集包括源主机启动将数据集的一个或多个存储器页复制到目的地主机中的系统存储器。
17.在一些示例或操作场景中,数据集包括多个存储器页,每个存储器页具有相应的相关联的页表条目,该页表条目定义相关联的存储器页的虚拟到实地址转换,并且源主机在数据结构中跟踪多个存储器页的哪些页表条目已经被迁移到目的地主机。
18.在一些示例或操作场景中,迁移数据集包括源主机在系统结构上发出指定目的地主机的系统存储器中的实地址的存储请求,源主机中的链路控制器接收存储请求,并且基于实地址,经由通信链路将存储请求传送到目的地主机内的存储器控制器。
19.在一些示例中,迁移所述数据集包括源主机执行将数据集中经受由源主机更新的所有存储器页从源主机的高速缓存批量刷新到系统存储器。
20.在一些示例中,源主机利用经由网络连接的通信,诸如虚拟输入输出服务器(vios),协调逻辑分区从源主机到目的地主机的迁移,但是制止经由网络连接迁移数据集和逻辑分区的状态。
附图说明
21.现在将参考附图仅通过示例的方式描述本发明的实施例,在附图中:
22.图1是根据一个实施例的示例性主机数据处理系统的高级框图;
23.图2是根据一个实施例的主机数据处理系统的示例性处理单元的更详细的框图;
24.图3示出了根据一个实施例的示例性数据处理系统环境,其中多个主机通过非相干通信链路耦合在一起;
25.图4示出了根据一个实施例的示例性主机数据处理系统的管理程序和逻辑分区的逻辑视图;
26.图5示出了根据一个实施例的示例性页表条目(pte);
27.图6描绘了根据一个实施例的示例性主机数据处理系统的各种存储器访问请求;
28.图7示出了根据一个实施例的示例性写入原语(primitive),两个主机数据处理系统可以通过该写入原语进行通信;
29.图8示出了根据一个实施例的两个主机数据处理系统可以用来通信的示例性读取原语;
30.图9是根据一个实施例的图7的写入原语中的示例性存储操作的高级逻辑流程图;
31.图10是根据一个实施例的图8的读取原语中的示例性加载操作的高级逻辑流程图;
32.图11a至图11b一起形成根据一个实施例的示例性方法的高级逻辑流程图,通过该
方法,源主机将逻辑分区迁移到目的地主机;
33.图12是根据一个实施例的示例性方法的高级逻辑流程图,通过该示例性方法,源主机在逻辑分区的迁移期间处理页保护更新;
34.图13是根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,源主机将逻辑分区的存储器页复制到目的地主机;
35.图14是根据一个实施例的示例性方法的高级逻辑流程图,目的地主机通过该方法接收和激活迁移逻辑分区;
36.图15是根据一个实施例的示例性方法的高级逻辑流程图,目的地主机通过该方法处理迁移逻辑分区的页错误;
37.图16是根据一个实施例的示例性方法的高级逻辑流程图,目的地主机通过该方法从源主机“拉取(pull)”迁移逻辑分区的存储器页;
38.图17是根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,源主机处理来自目的地主机的对迁移逻辑分区的存储器页的“拉取”请求;
39.图18是根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,源主机将迁移逻辑分区的存储器页“推送(push)”到目的地主机。
40.图19是根据一个实施例的示例性方法的高级逻辑流程图,目的地主机通过该方法处理来自源主机的对迁移逻辑分区的存储器页的“推送”请求;以及
41.图20是示出根据一个实施例的设计过程的数据流程图。
具体实施方式
42.现在参考附图,其中相同的附图标记始终表示相同和相应的部分,并且特别参考图1,示出了描述根据一个实施例的示例性数据处理系统100的高级框图。在各种使用情况和拓扑中,诸如数据处理系统100的数据处理系统,其包括硬件组件并且可以另外包括软件和/或固件组件,在本领域中可以被称为“主机”或“主机数据处理系统”。在各种操作场景中,任何给定主机可以是工作负载(例如,逻辑分区)可以从其迁移的源主机或工作负载被迁移到的目的地主机。
43.在所描述的实施例中,主机数据处理系统100是高速缓存一致多处理器(mp)数据处理系统,其包括用于处理数据和指令的多个处理节点102。处理节点102耦合到系统互连110,用于传送地址、数据和控制信息。系统互连110可以被实现为例如总线互连、交换互连或混合互连。
44.在所描述的实施例中,每个处理节点102被实现为包含一个或多个(例如,四个)处理单元104a-104d的多芯片模块(mcm),每个处理单元优选地被实现为相应的集成电路。每个处理节点102内的处理单元104通过本地互连114耦合以便彼此通信以及与系统互连110通信,该本地互连与系统互连110类似,例如可以利用一个或多个总线和/或开关来实现。系统互连110和本地互连114一起形成系统结构。在至少一些优选实施例中,系统结构上的通信符合所谓的主机总线协议,该协议特别定义了在通信参与方(例如,高速缓存、存储器控制器等)之间经由系统结构传送的合法请求、响应和控制信息的预定集合。
45.如以下参考图2更详细描述的,在一些实施例中,一个或多个处理单元104(以及可能所有处理单元104)各自包括耦合到本地互连114的存储器控制器106,以提供到相应系统
存储器108的接口。驻留在系统存储器108中的数据和指令通常可以由数据处理系统100内的任何处理节点102的任何处理单元104中的处理器核访问、高速缓存和修改。在替代实施例中,一个或多个存储器控制器106(和系统存储器108)可以直接耦合或间接耦合(例如,经由交换机)到系统互连110而不是本地互连114。
46.本领域技术人员将理解,图1的数据处理系统100可以包括许多附加的未示出的组件,诸如互连桥接器、非易失性存储装置、用于连接到网络或附接设备的端口等。因为这些附加组件对于理解所描述的实施例不是必需的,所以它们未在图1中示出或在本文中进一步讨论。然而,还应当理解,本文描述的增强适用于不同架构的数据处理系统,并且决不限于图1中所示的一般化数据处理系统架构。
47.现在参考图2,描述了根据一个实施例的示例性处理单元104和系统存储器108的更详细的框图。在所描述的实施例中,每个处理单元104是包括用于处理指令和数据的一个或多个处理器核200的集成电路。在所描绘的示例中,处理器核200包括能够执行来自一个或多个同时硬件执行线程的指令的一个或多个执行单元202。
48.处理器核200还包括存储器管理单元(mmu)204,其负责将由执行单元202中的存储器引用指令的执行所确定的有效地址转换成由数据处理系统100内的所有处理单元104引用的实地址空间内的实地址。mmu 204通过参考一个或多个转换结构206,诸如转换后备缓冲器(tlb)、有效到实地址转换(erat)高速缓存、段后备缓冲器(slb)等,执行有效到实地址转换。这些地址转换结构的数量和/或类型可以在实现和架构之间变化。地址转换结构206通过缓冲可以从系统存储器108检索的所选地址转换的本地副本来减少与地址转换相关联的等待时间,如下面进一步讨论的。
49.每个处理器核200的操作由多级存储器层次结构支持,该多级存储器层次结构在其最低层具有由各种系统存储器108提供的并且可经由存储器控制器106访问的复合系统存储器。例如,可以由管理程序和/或操作系统软件通过存储器控制器106内的一个或多个基址寄存器(bar)216的适当配置来定义单独的存储器控制器106负责的(多个)实地址范围。如图所示,系统存储器108存储多个存储器页209,其提供了对各种工作负载的数据集(也称为“逻辑分区”(lpar))的存储。另外,一个或多个系统存储器108存储包含多个页表条目(pte)212的页帧表210,其中每个pte 212为存在于系统存储器108之一中的相应的对应存储器页209指定有效到实地址的转换。pte 212另外为不同的存储器页指定访问保护(例如只读、读/写(r/w)等)。mmu 204从页帧表210访问的pte 212可以由mmu 204高速缓存,以便例如在地址转换结构206中进行后续访问。页帧表210可以例如通过在数据处理系统100内执行的操作系统和/或管理程序软件来建立、维护和更新。
50.每个处理器核200的多级存储器层次结构另外包括一级或多级高速缓存存储器,在说明性实施例中,其包括每个处理器核200内且对其专用的通过式存储一级(l1)高速缓存208和用于每个处理器核200的相应的存入二级(l2)高速缓存230。尽管所示的高速缓存层次结构仅包括两级高速缓存,但是本领域技术人员将理解,备选实施例可以包括附加级别(l3、l4等)的片上或片外、私有或共享、内嵌或后备高速缓存,其可以完全包括、部分包括或不包括较高级别的高速缓存的内容。
51.在所描述的实施例中,每个处理单元104还包括集成和分布式结构控制器214,其负责根据主机总线协议控制系统结构上的操作流,并且负责实现期望的高速缓存一致性协
议所需的一致性通信。处理单元104还可包括支持一个或多个i/o设备和/或i/o通道(未示出)的附连的集成i/o(输入/输出)控制器218。
52.在所描绘的示例中,处理单元104还包括附加的非相干(nc)链路控制器220,其在至少一种操作模式中支持经由非相干通信链路附加到另一主机数据处理系统100的主机数据处理系统100。例如,图3示出了示例性数据处理系统环境300,其中主机数据处理系统100a和主机数据处理系统100b通过非相干通信链路302耦合在一起以进行通信。数据处理系统环境300可以可选地包括通过附加的非相干通信链路302耦合到主机100a和/或100b的一个或多个附加主机100。在这种布置中,主机数据处理系统100a、100b中的每一个都维持其自己的与其他主机非相干的相应实地址空间。每个主机100a、100b中的nc链路控制器220负责的实地址范围可例如由管理程序和/或操作系统软件通过nc链路控制器220内的一个或多个基址寄存器(bar)224的适当配置来定义。一旦被配置,在主机100的系统结构上传输的指定由本地存储器控制器106的bar 216定义的实地址范围内的实地址的存储器访问请求可以由该存储器控制器106通过参考相关联的系统存储器108来服务。nc链路控制器220通过nc通信链路106将系统结构上的指定了由nc链路控制器220的bar224定义的实地址范围内的实地址的存储器访问请求传输至另一主机100a或100b。nc链路控制器220通过非相干通信链路302接收的入站存储器访问请求由nc链路控制器220在接收主机100的系统结构上发送。
53.再次参考图2,处理单元104还包括嵌套存储器管理单元(nmmu)228,其在经由系统结构请求时,向诸如nc链路控制器220的其他通信参与方提供地址转换。应当理解,在其他实现中,nmmu 228可以通信方式耦合,以替代或附加的方式向包括nc链路控制器220的通信参与方提供地址转换,例如,通过耦合至系统互连110而不是本地互连114。
54.图4描绘根据一个实施例的图1到图3的主机100a或100b的软件配置的逻辑视图。在该示例中,每个主机100的软件配置400包括管理主机100的硬件和软件资源的管理程序(或vmm)402。管理程序402通过实现一个或多个逻辑分区(lpar)404来虚拟化主机100的许多底层资源。在该示例中,每个lpar 404包括主机100的一个或多个处理器核200内的指定数量的硬件线程406、用于存储lpar 404的数据集的指定实存储器地址处的存储器页408的集合(来自存储器页209)、操作系统410的实例(例如,集合(来自存储器页209)、操作系统410的实例(例如,等)以及在os 410上执行的应用412的集合。管理程序402还经由虚拟输入输出服务器(vios)420支持lpar 404之间以及管理程序402与其他主机100之间的网络连接,其中vios虚拟化主机100经由i/o控制器218耦合到的物理网络连接。
55.如上所述,管理程序402可以确定出于各种原因中的任何原因,希望或需要将例如lpar 404之一的活动工作负荷从其自己的主机100迁移到另一主机100。根据本文描述的实施例,迁移优选地通过nc通信链路302而不是通过vios 420支持的虚拟化网络连接(如常规的),将迁移lpar 404的数据集和状态从lpar 404最初在其上执行的主机100(本文称为“源主机”)复制到lpar 404在其上继续其执行的另一主机100(本文称为“目的地主机”)。采用nc通信链路302而不是vios 420来迁移lpar数据集具有减少或消除包括lpar数据集的存储器页的重复传输的优点,从而加速lpar迁移。采用nc通信链路302还具有为迁移lpar的(一个或多个)应用412提供可预测的响应时间的优点。
56.现在参考图5,示出了根据一个实施例的示例性页表条目(pte)212。在该示例中,
pte 212包括有效字段502,其指示pte 212的内容是否有效,并且因此可用于在将存储器页209中相关联的一个中的虚拟地址转换为实地址时使用。另外,pte 212包括虚拟地址(va)字段504和实地址(ra)字段506,它们分别指定分配给相关联的存储器页209的基本存储位置的虚拟地址和实地址。pte 212还包括指示相关联的存储器页209的一个或多个属性的一个或多个页保护字段。例如,在所示实施例中,页保护字段分别包括读(r)字段508和读写(rw)字段510,并且可替换地指示相关联的存储器页209是只读的还是受到读和写访问。此后,将假设字段值r=1、rw=0指示相关联的存储器页209是只读存储器页,并且字段值r=0、rw=1指示相关联的存储器页209是读写存储器页。
57.在所示的实施例中,pte 212另外包括一个或多个迁移相关字段,迁移相关字段可以被管理程序402用来管理相关联的存储器页209从源主机100的系统存储器108到目的地主机100的系统存储器108的迁移。在该实施例中,这些迁移相关字段包括指示相关联的存储器页209是否已经从源主机100复制到目的地主机100的复制(cp)字段512、指示相关联的存储器页209中的所有数据是否已经被清除(即,所有修改的数据已经从高速缓存存储器写入到系统存储器108,使得系统存储器108中的存储器页的映像与任何高速缓存的数据一致)的清除(cl)字段514、以及指示pte 212是否已经被迁移(即,驻留在目的地主机100的系统存储器108中)但未被验证的迁移(mi)字段516。应当理解,pte 212中的迁移相关字段512-516的实现是设计选择,并且其它实施例可以从pte 212中省略这些字段,而是利用一个或多个其它数据结构来管理lpar数据集的迁移。
58.现在参考图6,描述了示例性主机数据处理系统100的各种存储器访问请求。在图6中,主机数据处理系统100(例如,主机数据处理系统100a)的核200在第一硬件线程中执行例如应用412的用户级指令,并且在第二硬件线程中执行管理程序402的指令。第一硬件线程中的用户级指令的执行生成存储器访问请求602,其中的每一个指定虚拟地址空间606中的要访问的相应目标虚拟(逻辑)地址(例如,虚拟地址610或612)。如上所述,核200的mmu 204基于pte212提供的地址转换,将目标虚拟地址610、612中的每一个转换成实地址空间608中的相应实地址614或616。在该示例中,实地址614标识本地存储器控制器106负责的主机数据处理系统100a的系统存储器108中的存储位置。相反,实地址616标识nc链路控制器220负责的主机数据处理系统100b的系统存储器108中的存储位置。因此,在主机数据处理系统100a的系统结构上传输的存储器访问请求可以启动对本地系统存储器108中的存储位置或另一主机数据处理系统100b(主机数据处理系统100a与其非相干)的远程系统存储器108中的存储位置的访问,这取决于主机数据处理系统100a、100b的管理程序402对实地址的分配。
59.在至少一些实施例中,管理程序402的存储器访问请求不需要经受应用于用户级存储器访问请求602的目标地址的相同地址转换。例如,图6进一步示出在核200的第二硬件线程中执行的管理程序402的指令也可生成存储器访问请求604。然而,在这种情况下,存储器访问请求604直接指定实地址空间608中的实地址614、616。因此,主机数据处理系统100a的管理程序402可以访问主机数据处理系统100a的本地系统存储器108中的存储位置和主机数据处理系统100b的远程系统存储器108中的存储位置,而不使用pte 212中记录的虚拟到实地址转换。
60.现在参考图7,其示出了根据一个实施例的示例性写入原语700,通过该原语,主机
数据处理系统100a、100b中的一个可以通过非相干通信链路302将数据写入到主机100a或100b中的另一个的系统存储器108中。写入原语700可以形成管理程序402、os 410或应用412的指令序列的一部分。
61.如图所示,写入原语700包括将数据区组(granule)存储到存储器的第一存储操作702。图9提供了该存储操作的示例性实施例的高级逻辑流程图。在此所说明的实施例中,图9中所说明的存储操作开始于框900,且接着进行到框902,其说明主机100(下文中,假定为主机100a)的核200执行指定将数据区组存储到存储器的存储指令。在任何适用的虚拟到实地址转换之后,核200将该数据的区组存储到其与目标实地址相关联的高速缓存层次结构中(例如,在其l2高速缓存230中),该目标实地址被分配给另一主机100(即,主机100b)中的系统存储器108。因为主机100a、100b是非相干的,并且nc通信链路302不在主机100a、100b之间传送一致性消息,所以仅将数据区组存储到主机100a的高速缓存存储器中不足以向主机100b的硬件线程提供数据区组与目标实地址之间的关联的可见性。因此,存储操作还包括核200执行高速缓存清除指令以迫使数据区组从核200的高速缓存层次结构复制到主机100b的相关系统存储器108(框904)。此后,图9的过程在框906处结束。
62.回到图7,在存储操作702之后,写入原语700包括阻挡操作704,其在阻挡操作704之后的所有操作执行之前,对阻挡操作704之前的所有操作的执行按程序顺序进行排序。编程顺序写入原语700中的阻挡操作704之后包括第二存储操作706。存储操作706更新(例如,更新为值1)驻留在主机100a或主机100b的系统存储器108中的标志变量(其可由在主机100b上执行的过程轮询)以指示新数据区组已写入到主机100b的系统存储器108。如果标志驻留在主机100b上,则存储操作706可如上参考图9所述来执行。
63.现在参考图8,其中示出了根据一个实施例的示例性读取原语800,通过该原语,主机数据处理系统100a、100b之一可以通过非相干通信链路302从另一主机100a、100b的系统存储器108读取数据。读取原语800可以形成管理程序402、os 410或应用412的指令序列的一部分。
64.如图所示,读取原语800包括从存储器加载标志的第一加载操作802。图10提供了该加载操作的示例性实施例的高级逻辑流程图。在此实施例中,加载操作开始于框1000,且接着进行到框1002,其说明主机100(下文中,假定为主机100a)的核200执行刷新(flush)指令,刷新指令指定从主机100a的高速缓存存储器移除主机100a内的与待加载的数据区组的实地址相关联的任何高速缓存数据(例如,标志)并将其写回到主机100b的相关存储器控制器106。加载操作还包括核200此后执行加载指令以从主机100b的相关系统存储器108加载数据区组(框1004)。此后,图10的过程在框1006处结束。
65.返回到图8,在加载操作802之后,加载原语800包括比较操作804,其将从主机100b加载的标志的值与预定值(例如,1)进行比较以确定加载数据的区组是否准备好被读取。如果比较操作804确定标志的值指示加载数据的区组准备好被读取,那么条件分支操作806致使加载原语800的执行继续进行加载操作810。从主机100b的系统存储器108加载数据区组的加载操作810可以如上文参考图10所述来执行,如果比较操作804确定指示加载数据区组未准备好读取的标志的值,那么分支操作808促使加载原语800的执行分支回到加载操作802,其已经被描述。
66.本领域的技术人员应当理解,以上参考图7至图10描述的信号量通信只是用于支
持相互非相干的主机数据处理系统之间的读和写通信的多种替换技术中的一种。
67.现在参考图11a至图11b,示出了根据一个实施例的示例性方法的高层逻辑流程图,通过该方法,源主机100将lpar 404从源主机100迁移到目的地主机100。该过程开始于框1100,并且前进到框1102,其示出源和目的地主机100(此后,分别假定为主机100a和100b)的管理程序402彼此通信以协商将主机100a、100b的资源(例如,硬件线程406、实存储器地址、存储器页209等)分配给lpar 404,并建立某些存储器页209以供主机100a、110b之间的通信使用。在至少一些实施例中,源主机100a和目的地主机100b的管理程序402在框1102处经由vios 420通信。
68.处理从框1102进行到框1104,其示出源主机100a的管理程序402确定其是否已经完成将包括迁移lpar 404的数据集的所有存储器页408从主机100a复制到主机100b中的系统存储器108。如果是,则该过程转到下面描述的框1112。然而,如果源主机100a的管理程序402在框1104确定包括从源主机100a到目的地主机100b的迁移lpar的数据集的存储器页408的复制未完成,则该过程在框1106继续。框1106示出了源主机100a的管理程序402确定是否启动迁移lpar 404的状态从源主机100a到目的地主机100b的移动。应当注意,管理程序402可以在迁移所有或一些数据集之前确定迁移lpar 404的状态,或者可以等待迁移lpar 404的状态,直到迁移lpar 404的所有数据集都已经被复制到目的地主机100b。作为一个示例,管理程序402可以在框1106确定在作为最频繁(或最近)访问的存储器页408的子集中的所有存储器页408已经被迁移之后迁移lpar 404的状态。响应于在框1106的肯定确定,该过程从框1106转到框1112。响应于在框1106处的否定确定,过程进行到框1108。
69.在框1108,源主机100a的管理程序402将迁移lpar 404的数据集中的一个或多个存储器页408复制到目的地主机100b中的至少一个系统存储器108。在至少一些实施例中,在框1108处复制存储器页408可以根据以下参照图13描述的过程来执行,应当理解,复制存储器页408可能需要对连续的实地址序列执行多个存储原语。例如,存储器页408可为4kb,而由存储原语复制的个别数据区组的大小可为128b。在该示例中,复制存储器页408将需要执行32个存储原语。对于从源主机100a完全复制到目的地主机100b的每个存储器页408,源主机100a的管理程序402设置主机100a的系统存储器108中的相关联的pte 212的cp字段512,以指示存储器页408已经被复制到目的地主机100b(框1110)。图11a的过程从框1110返回到框1104。
70.在框1112和随后的框,源主机110a的管理程序402将迁移lpar 404的状态从源主机100a复制到目的地主机100b。具体参考框1112,源主机100a的管理程序402使迁移lpar 404的硬件线程406处于其控制之下。此外,管理程序402保存迁移lpar 404的每个硬件线程406的状态(例如,与执行核200中的硬件线程406相关的数据和控制寄存器的内容),并将迁移lpar 404的每个这样的硬件线程状态写入到目的地主机100b中的系统存储器108。在框1114处示出的迁移lpar 404的硬件线程的状态的复制可以经由nc通信链路302利用写入原语700来执行,如上文参照图7和图9所述,在框1116处,源主机110a的管理程序402还通过使pte 212无效(例如,将有效字段502重置为0)以及将迁移(mi)字段516置位(例如,设置为1)来更新与迁移lpar 404的数据集中的存储器页408相关联的每个pte 212。框1116还示出管理程序402使源主机100a的地址转换结构206中的与无效的pte 212相对应的任何条目无效,并等待源主机100a中引用被无效的pte转换的实地址的任何和所有正在进行的操作从
源主机100a的核200排出。然后,该过程通过页连接符a到达图11b的框1120。
71.如虚线所示,框1120是可选步骤,在该步骤,源主机100a的管理程序402确定是否从源主机100a的高速缓存中刷新迁移lpar 404的读写存储器页408(即,由它们的相关联的pte 212的rw字段510标识为读写存储器页的那些)。响应于在框1120的否定判断,或者如果源主机100不支持有效刷新源主机100a的高速缓存的能力,则该过程进行到下面描述的框1126。然而,如果管理程序402在框1120确定从源主机100a的高速缓存中刷新迁移lpar 404的读写存储器页408,则管理程序402执行从源主机100a的高速缓存中刷新属于迁移lpar 404的数据集的所有修改数据的过程(框1122)。在一些实施例中,在框1122处描绘的驱逐(eviction)可以通过从源主机100a的高速缓存批量刷新所有修改的数据来执行。应当注意,取决于底层存储器页408是否已经被迁移,在框1122处描绘的刷新过程可以需要将修改的数据写回到源主机100a的本地系统存储器108或目的地主机100b的系统存储器108。此外,在框1124,源主机110a的管理程序402为已经迁移到被清除的目的地主机100b的迁移lpar 404的所有读写存储器页408更新源主机110a上的pte 212(例如通过将cl字段514设置为1)。如框1120-1124所示,执行迁移分区404的读写存储器页408的批量刷新提供了减少或消除读写存储器页408的重复复制以及减少迁移lpar 404在目的地主机100b上开始执行之后的抖动的优点。此外,迁移lpar 404的读写存储器页408的批量刷新可以提供优于单独处理迁移lpar 404的每个读写存储器页408的刷新的解决方案的改进性能。
72.现在参考框1126,源主机100a的管理程序402复制pte 212,其将迁移lpar 404的数据集的存储器页408中的地址从源主机100a转换到目的地主机100b。然后,管理程序402然后重置由pte字段512-514标识为已复制和已清除的迁移lpar 404的数据集中的每个读写存储器页的pte 212中的mi字段516,并且重置由pte字段512标识为已复制的迁移lpar 404的数据集中的每个只读存储器页的pte 212中的mi字段516(框1128)。在框1128之后,源主机100a的管理程序402开始监视来自目的地主机100b的管理程序402的“拉取”请求,通过该“拉取”请求,目的地主机100b启动迁移lpar 404的数据集中的一个或多个先前未迁移的存储器页408的迁移(框1130)。下面分别参考图16和图17描述目的地主机100b的管理程序402将迁移lpar 404的数据集中的存储器页从源主机100a“拉取”到目的地主机100b的系统存储器108,以及源主机100a的管理程序402响应目的地主机100b的“拉取”请求的示例性过程。
73.如可选框1132所示,源主机100a的管理程序402可以替换地或附加地启动一过程,通过该过程,源主机100a将迁移lpar 404的数据集中的任何剩余的未迁移和已迁移的、但不清除的存储器页408从源主机100a“推送”到目的地主机100b中的系统存储器108。下面分别参考图18和图19描述源主机100a的管理程序402将迁移lpar 404的数据集中的存储器页408从源主机100a“推送”到目的地主机100b的系统存储器108,以及目的地主机100b的管理程序402响应源主机100a的“推送”请求的示例性过程。在框1132之后(或者如果省略框1132,则在框1130之后),图11b的过程在框1134处结束。
74.现在参考图12,描述了根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,源主机100a在lpar 404的迁移期间处理页保护更新。图12的过程开始于框1200,然后前进到框1202,其示出了源主机100a的管理程序402确定是否请求对迁移lpar 404的存储器页408的pte 212进行页保护更新。如果不是,则过程在框1202重复。然而,如果管理程序
402确定请求对迁移lpar 404的存储器页408的pte 212进行页保护更新,则过程前进到框1204。
75.框1204示出管理程序402确定当前要更新的pte 212是否指示相关联的存储器页408是读写页(例如,rw字段510被设置为rw=1)。如果不是(例如,r字段508被设置为r=1以指示只读存储器页),则该过程转到框1212,其示出了管理程序402执行其他处理。此后,图12的过程在框1214处结束。
76.返回到框1204,响应于管理程序402确定要更新的pte 212当前指示关联的存储器页408是读写存储器页,管理程序402另外通过参考要更新的pte 212的cp字段512来确定关联的存储器页408是否已经被迁移到目的地服务器100b的系统存储器108。如果是,则管理程序402执行一个或多个指令,其使得存储器页408的任何修改数据从源主机100a的高速缓存被刷新到目的地主机100b的系统存储器108中(框1208),然后例如通过复位r字段508和设置rw字段510,将存储器页408的页保护信息从读写更新为只读(框1210)。通过刷新对要更新保护的存储器页408的日期的任何高速缓存的修改,可以避免存储器页408从源主机100a到目的地主机100b的附加复制。如果管理程序402在框1206确定相关联的存储器页408还没有被迁移到目的地主机的系统存储器108,则管理程序402简单地更新页保护信息,如框1210所示,而不刷新存储器页408。在框1210之后,图12的过程在框1214处结束。
77.现在参考图13,示出了根据一个实施例的的示例性方法的高级逻辑流程图,通过该方法,源主机100a将迁移lpar 404的存储器页408复制到目的地主机100b的系统存储器108。在至少一些实施例中,可以利用所示出的处理,例如,以将在图11a的框1108处从源主机100a复制的(一个或多个)存储器页408中的一个复制到目的地主机100b。
78.图13的过程开始于框1300,然后前进到框1302,其示出源主机100a的管理程序402例如通过将有效字段502重置为0来使与要迁移的存储器页408相关联的pte 212无效,使pte 212无效使得pte 212暂时不可访问以进行地址转换,并且因此使得相关联的存储器页408仅可由管理程序402访问。框1302还示出管理程序402使源主机100a的地址转换结构206中与无效的pte 212相对应的任何条目无效,并等待引用由无效的pte转换的实地址的任何和所有进行中的操作以从源主机100a的核200排出。
79.然后,管理程序402使源主机100a的一个或多个核200执行指令,以将存储器页408复制到分配给目的地主机100b中的系统存储器108的实地址(框1304)。作为该复制过程的一部分,管理程序402从源主机100a(其驻留在源实地址范围)中的系统存储器108加载存储器页408的现有映像,并且将存储器页408的映像存储到指定目的地主机100b的系统存储器108中的存储位置的目的地实地址范围。作为优化,一些实施例使用数据高速缓存块零(dcbz)、数据高速缓存块分配(dcba)或在源主机100a的高速缓存存储器中创建高速缓存行(并且可选地将新创建的高速缓存行初始化为预定值(例如零))的类似的高速缓存行分配指令来分配与源主机100a的高速缓存存储器中的目的地实地址范围相对应的高速缓存行,而不提取相关联的数据。这些高速缓存行分配指令可以方便地在执行循环中实现,该执行循环迭代通过要迁移的存储器页408中的每个高速缓存行。在这样的执行循环中,优选地,每个高速缓存行分配指令被限制为在将数据从迁移的存储器页408的现有映像存储到新分配的高速缓存行中的相应的存储指令之前并且在时间上接近该相应的存储指令而执行。在这种执行限制下,更新目的地实地址范围内的高速缓存行的存储指令将避免高速缓存未命
中和从目的地主机100b提取高速缓存行的伴随延迟的可能性很高。换句话说,所描述的优化具有避免从目的地主机100b提取目的地实地址范围内的数据的每个高速缓存行的副本以用来自迁移的存储器页408的数据重写该高速缓存行的高延迟的优点。
80.在框1308,管理程序402例如通过检查相关联的pte 212的rw字段510来确定存储器页408是否是读写存储器页。响应于在框1308处确定存储器页408是读写存储器页,该过程转到框1312,这将在下面描述。然而,如果管理程序402确定存储器页408是只读存储器页(例如,r字段508被设置为r=1),则管理程序402使得一个或多个清除或刷新指令由源主机100a的一个或多个核200执行,以确保只读存储器页408的数据经由nc通信链路302从源主机100a的高速缓存被写入到目的地主机100b的系统存储器108(框1310)。在框1308或框1310之后,源主机100a的管理程序402更新pte 212的ra字段506中为存储器页408指定的实地址(ra),以指定目的地主机100b的系统存储器108中的存储器页408的新的实地址,然后将源主机100a上的pte 212的有效字段502更新为有效状态(例如v=1),以再次使pte 212可访问以进行地址转换(框1312)。此后,图13的过程在框1314处结束。
81.现在参考图14,描述了根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,目的地主机100b接收和激活迁移lpar 404。图14的过程与前面描述的在源主机100a上执行的图11a至图11b的过程协作。
82.图14的过程开始于框1400,然后进行到框1402,其示出了目的地主机100b的管理程序402与在源主机100a上执行的管理程序402通信,以协商主机100a、100b到lpar 404的资源(例如,硬件线程406、实存储器地址、存储器页209等)的分配,并建立某些存储器页209以供主机100a、110b之间的通信使用。在至少一些实施例中,源主机100a和目的地主机100b的管理程序402在框1402处经由vios 420通信。
83.处理从框1402前进到框1404,其示出了目的地主机100b的管理程序402经由nc通信链路302从源主机100a接收迁移lpar 404的状态,并缓冲该lpar状态。lpar状态由源主机100a在图11a的框1114传送。另外,在框1406,目的地主机100b的管理程序402经由nc通信链路302从源主机100a接收并缓冲用于迁移lpar 404的存储器页408的pte 212。这些pte 212由源主机100a在图11b的框1126处发送。
84.框1408示出了目的地主机100b的管理程序402在目的地服务器100b的系统存储器108中的页帧表210中建立与迁移lpar 404的存储器页408相关联的pte 212。对于由其相关联的pte 212指示为已经被复制到目的地主机100b的每个只读存储器页408(例如,r字段508被设置为r=1,并且cp字段512被设置为cp=1),以及对于由其相关联的pte 212指示为已经被复制到目的地主机100b并被清除(例如,rw字段510被设置为rw=1,并且cl字段514被设置为cl=1)的每个读写存储器页408,目的地主机100b的管理程序402更新实地址字段506以反映存储器页408在目的地主机100b的系统存储器108中的存储位置,重置迁移字段516(例如,mi=0),并且设置有效字段502(例如,v=1)。目的地主机100b的管理程序402由此使得这些pte 212可用于目的地主机100b上的虚拟到实地址转换。
85.在框1410,目的地主机100b的管理程序402启动一过程,通过该过程,目的地服务器100b的管理程序402将迁移lpar 404的任何剩余的未迁移的存储器页408从源主机100a经由nc通信链路302“拉取”到目的地主机100b中的系统存储器108。下面参考图16描述目的地主机100b从源主机100a拉取这种存储器页408的示例性过程,另外,在框1412,目的地主
机100b的管理程序402可选地启动一过程,通过该过程,目的地服务器100b的管理程序402经由nc通信链路302接收从源主机100a“推送”到目的地主机100b中的系统存储器108的迁移lpar 404的任何剩余的未迁移的存储器页408。下面参考图18描述目的地主机100b从源主机100a接收这样的存储器页408的示例性过程。目的地主机100b的管理程序402通过将迁移lpar 404的各种硬件线程406的状态加载到目的地主机100b的一个或多个核200(框1414)并释放迁移lpar 404的硬件线程406以开始执行(框1416),来启动迁移lpar 404在目的地主机100b上的执行。图14的过程此后在框1416结束。
86.现在参考图15,示出了根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,目的地主机100b在迁移lpar 404的迁移期间处理页错误。图15的过程响应于引起页错误的目的地主机100b的存储器访问请求而开始于框1500。响应于页错误,处理从框1500进行到框1502,其示出在目的地主机100b上执行的页错误处理器例程通过参考包含存储器访问请求的目标实地址的存储器页209的pte 212来确定迁移字段516是否被设置(例如mi=1)以指示存储器页209是迁移lpar 404的存储器页408之一。如果不是(例如mi=0),则如框1504所示,页错误处理器使用其他可能常规的处理来处理页错误。在框1504之后,图15的过程在框1518处结束。
87.再次参考框1502,响应于确定设置了迁移字段516,目的地主机100b的管理程序402获得其上发生了页错误的存储器页408的锁(框1506)。目的地主机100b的管理程序402此后在框1508确定存储器页408的pte 212的迁移字段516是否在获得锁的过程期间被重置(例如mi=0)。如果是,则该过程转到下面描述的框1516。然而,如果迁移字段516没有被重置,则管理程序402经由nc通信链路302向源主机100a发出一个或多个存储器访问请求,以便将存储器页408从源主机100a的系统存储器108拉取到目的地主机100b的系统存储器108(框1512)。在存储器页408的pte 212中,目的地主机100b的管理程序402设置有效字段502(v=1),重置迁移字段516(mi=0),在读取字段508和读写字段510中设置适当的页保护,并且用目的地主机100b的系统存储器108中的存储器页408的新的实地址来更新实地址字段506(框1514)。在框1514之后,目的地主机100b的管理程序402释放存储器页408的锁(框1516)。此后,该过程转到框1504,其示出页错误处理器完成了对该页错误的处理,同时进行了其他潜在的常规处理。图15的过程此后在框1518处结束。
88.现在参考图16,其是根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,目的地主机100b从源主机100a“拉取”迁移lpar 404的存储器页。例如,可以在图14的框1410处执行该过程。
89.图16的过程开始于框1600,并且此后进行到框1602,其示出了目的地主机100b的管理程序402确定迁移字段516是否在迁移lpar 404的所有存储器页408的pte 212中被重置(例如,mi=0)。如果是,则完成从源主机100a到目的地主机100b的迁移lpar 404的数据集的迁移。因此,图16的过程在框1604结束。
90.然而,如果目的地主机100b的管理程序402在框1602确定至少一个存储器页408仍然要被迁移到目的地主机100b,则目的地主机100b的管理程序402选择迁移lpar 404的数据集中的未迁移的存储器页408之一(如其pte 212的迁移字段516被设置所指示的),并获得该存储器页408的锁(框1606)。目的地主机100b的管理程序402此后在框1608确定在获得锁的过程期间是否重置了所选存储器页408的pte 212的迁移字段516(例如mi=0)。如果
是,则该过程转到框1610,这将在下面描述。然而,如果迁移字段516没有被重置,则管理程序402经由nc通信链路302向源主机100a发出一个或多个存储器访问请求,以便将存储器页408从源主机100a的系统存储器108拉取到目的地主机100b的系统存储器108(框1612)。在用于目的地主机100b上的存储器页408的pte 212中,目的地主机100b的管理程序402设置有效字段502(例如,v=1),重置迁移字段516(例如,mi=0),在读取字段508和读写字段510中设置用于存储器页408的适当的页保护,并且用目的地主机100b的系统存储器108中的存储器页408的新的实地址来更新实地址字段506(框1614)。在框1614之后,目的地主机100b的管理程序402释放存储器页408的锁(框1610)。此后,图16的过程返回到已经描述的框1602。
91.现在参考图17,示出了根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,源主机100a处理从目的地主机100b对迁移lpar 408的存储器页408的拉取请求。例如,可以在图11b的框1130处执行所示出的过程。
92.图17的处理开始于框1700,其后进行到框1702,其示出了源主机100a的管理程序402确定对于迁移lpar 404的数据集中的所有存储器页408,源主机100a上的pte 212中的迁移字段516是否被重置(例如mi=0)。如果是,则完成从源主机100a到目的地主机100b的迁移lpar 404的数据集的迁移。因此,图17的过程在框1704处结束。
93.然而,如果源主机100a的管理程序402在框1702确定至少一个存储器页408仍然要从源主机100a迁移到目的地主机100b,则源主机100a的管理程序402在框1706确定是否已经经由nc通信链路302从目的地主机100b接收到对迁移lpar 404的数据集中的存储器页408的拉取请求。如果否,则图17的过程返回到已经描述的框1702。然而,如果接收到对迁移lpar 404的数据集中的存储器页408的拉取请求,则源主机100a的管理程序402通过nc通信链路302向目的地主机100b的系统存储器108发送所请求的存储器页408,来响应目的地主机100b的拉取请求(框1708)。
94.在框1710,源主机100a的管理程序402确定在框1708迁移的存储器页408是否被标识为源主机100a上的相关联的pte 212的读写字段510中的读写存储器页。如果不是(例如,rw=0),则过程前进到框1714,这将在下面描述。然而,如果存储器页408的pte 212的读写字段510被设置为指示读写页(例如rw=1),则源主机100a的管理程序402从源主机100a的高速缓存中刷新存储器页408的所有区组(框1712)。源主机100a另外重置源主机100a的系统存储器108中的存储器页408的pte 212中的迁移字段516(例如mi=0)(框1714)。在框1714之后,源主机100a的管理程序402例如通过设置标志来向目的地主机100b信令通知(signal)存储器页408已经被迁移到目的地主机100b的系统存储器108(框1716)。此后,图17的过程返回到已经描述的框1702。
95.现在参考图18,描述了根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,源主机100a将迁移lpar 404的存储器页408“推送”到目的地主机100b。例如,可以在图11b的框1132处执行该过程。
96.图18的过程开始于框1800,并且此后进行到框1802,其示出了源主机100a的管理程序402确定在源主机1004a上的迁移lpar 404的所有存储器页408的pte 212中迁移字段516是否被重置(例如mi=0)。如果是,则完成从源主机100a到目的地主机100b的迁移lpar 404的数据集的迁移。因此,图18的过程在框1804处结束。
97.然而,如果源主机100a的管理程序402在框1802确定至少一个存储器页408仍然要被迁移到目的地主机100b,则源主机100a的管理程序402选择迁移lpar 404的数据集中的一个未迁移的存储器页408(如其pte 212的迁移字段516被设置所指示的),并获得该存储器页408的锁(框1806)。源主机100a的管理程序402此后在框1808确定在获得锁时是否已经重置了所选存储器页408的pte 212的迁移字段516(例如mi=0)。如果是,则该过程转到框1810,这将在下面描述。然而,如果迁移字段516没有被重置,则源主机100a的管理程序402通过nc通信链路302向目的地主机100b发出一个或多个存储器访问请求,以将存储器页408从源主机100a的系统存储器108推送到目的地主机100b的系统存储器108(框1812)。
98.在框1814,源主机100a的管理程序402确定在框1812迁移的存储器页408是否被标识为源主机100a的系统存储器108中的页帧表210中的相关联的pte 212的读写字段510中的读写存储器页。如果不是(例如,rw=0),则过程前进到框1818,其将在下面描述。然而,如果存储器页408的pte 212的读写字段510被设置为指示读写页(例如rw=1),则源主机100a的管理程序402将存储器页408的所有区组从源主机100a的高速缓存刷新到目的地主机100b的系统存储器108(框1816)。源主机100a另外重置源主机100a的系统存储器108中的存储器页408的pte 212中的迁移字段516(例如mi=0)(框1818)。
99.在框1820,源主机100a的管理程序402通过nc通信链路302发送对目的地主机100b的请求,以更新目的地主机100b上的存储器页408的pte 212。响应于pte更新请求,目的地主机100b的管理程序402设置有效字段502(例如v=1),重置迁移字段516(例如mi=0),并且利用目的地主机100b的系统存储器108中的存储器页408的新的实地址来更新实地址字段506。在框1820之后,源主机100a的管理程序402监控经由nc通信链路302来自目的地主机100b的确认消息,该确认消息确认pte 212的更新(框1822)。响应于接收到确认消息,源主机100a释放存储器页408的锁(框1810)。此后,图18的过程返回到已经描述的框1802。
100.现在参考图19,示出了根据一个实施例的示例性方法的高级逻辑流程图,通过该方法,目的地主机100b处理从源主机100a接收的对迁移lpar 404的存储器页408的推送请求。例如,可以在图14的框1412处执行所示出的过程。
101.图19的过程开始于框1900,并且此后前进到框1902,其示出了目的地主机100b的管理程序402确定对于迁移lpar 404的数据集中的所有存储器页408,源主机100a上的pte 212中的迁移字段516是否被重置(例如mi=0)。如果是,则完成从源主机100a到目的地主机100b的迁移lpar 404的数据集的迁移。因此,图19的过程在框1904处结束。
102.然而,如果目的地主机100b的管理程序402在框1902确定至少一个存储器页408仍然要从源主机100a迁移到目的地主机100b,则目的地主机100b的管理程序402在框1906确定其是否已经经由nc通信链路302从源主机100a接收到请求更新迁移lpar 404的数据集中的存储器页408的pte 212的pte更新请求。如果否,则图19的过程返回到已经描述的框1902。然而,如果已经接收到pte更新请求,则目的地主机100b的管理程序402通过设置有效字段502(例如,v=1)、重置迁移字段516(例如,mi=0)以及利用目的地主机100b的系统存储器108中的存储器页408的新的实地址来更新实地址字段506,来响应pte更新请求(框1908)。目的地主机100b的管理程序402向源主机100a发送确认消息,确认pte 212的更新(框1910)。此后,图19的过程返回到已经描述的框1902。
103.现在参考图20,描述了例如在半导体ic逻辑设计、仿真、测试、布局和制造中使用
的示例性设计流程2000的框图。设计流程2000包括用于处理设计结构或设备以生成本文描述的设计结构和/或设备的逻辑上或其他功能上等效的表示的过程、机器和/或机制。由设计流程2000处理和/或生成的设计结构可以在机器可读传输或存储介质上编码,以包括数据和/或指令,当在数据处理系统上执行或以其他方式处理时,所述数据和/或指令生成硬件组件、电路、设备或系统的逻辑上、结构上、机械上或以其他方式功能上等效的表示。机器包括但不限于在ic设计过程中使用的任何机器,例如设计、制造或仿真电路、组件、设备或系统。例如,机器可以包括:光刻机、用于产生掩模的机器和/或设备(例如电子束写入器)、用于仿真设计结构的计算机或设备、用于制造或测试过程的任何装置、或用于将设计结构的功能等效表示编程到任何介质中的任何机器(例如用于编程可编程门阵列的机器)。
104.设计流程2000可以根据正在设计的表示的类型而变化。例如,用于构建专用ic(asic)的设计流程2000可以不同于用于设计标准部件的设计流程2000或者不同于用于将设计实例化到可编程阵列中的设计流程2000,所述可编程阵列例如由altera公司或xilinx公司提供的可编程门阵列(pga)或现场可编程门阵列(fpga)。
105.图20示出了多个这样的设计结构,包括优选地由设计过程2000处理的输入设计结构2020。设计结构2020可以是由设计过程2000生成和处理的逻辑仿真设计结构,以产生硬件设备的逻辑上等效的功能表示。设计结构2020还可以或替换地包括数据和/或程序指令,其在由设计过程2000处理时生成硬件设备的物理结构的功能表示。无论是表示功能和/或结构设计特征,设计结构2020都可以使用诸如由核开发者/设计者实现的电子计算机辅助设计(ecad)来生成。当编码在机器可读数据传输、门阵列或存储介质上时,设计结构2020可以由设计过程2000内的一个或多个硬件和/或软件模块访问和处理,以仿真或以其他方式功能性地表示诸如本文所示的那些的电子部件、电路、电子或逻辑模块、装置、设备或系统。这样,设计结构2020可以包括文件或其它数据结构,包括人和/或机器可读源代码、编译结构和计算机可执行代码结构,当由设计或仿真数据处理系统处理时,其在功能上仿真电路或以其它方式表示硬件逻辑设计的其它级。这样的数据结构可以包括硬件描述语言(hdl)设计实体或其他数据结构,其符合和/或兼容诸如verilog和vhdl的低级hdl设计语言和/或诸如c或c++的高级设计语言。
106.设计过程2000优选地采用和合并硬件和/或软件模块,用于合成、转换或以其他方式处理本文所示的组件、电路、设备或逻辑结构的设计/仿真功能等效物,以生成可以包含诸如设计结构2020的设计结构的网表2080。网表2080可以包括例如编译或以其他方式处理的数据结构,其表示描述到集成电路设计中的其他元件和电路的连接的导线、分立部件、逻辑门、控制电路、i/o设备、模型等的列表。网表2080可以使用迭代过程来合成,在该迭代过程中网表2080取决于设备的设计规范和参数而被重新合成一次或多次。如同本文描述的其它设计结构类型,网表2080可以记录在机器可读存储介质上或编程到可编程门阵列中。该介质可以是非易失性存储介质,诸如磁盘或光盘驱动器、可编程门阵列、紧凑式闪存或其它闪存。另外,或者作为选择,介质可以是系统或高速缓存存储器,或者缓冲空间。
107.设计过程2000可以包括用于处理包括网表2080的各种输入数据结构类型的硬件和软件模块。这样的数据结构类型可以例如驻留在库元件2030内,并且包括一组常用的元件、电路和设备,包括用于给定制造技术(例如,不同的技术节点,32nm、45nm、90nm等)的模型、布局和符号表示。数据结构类型可进一步包括设计规范2040、特征数据2050、验证数据
2060、设计规则2070和测试数据文件2085,其可包括输入测试模式、输出测试结果和其它测试信息。设计过程2000还可以包括例如标准机械设计过程,诸如应力分析、热分析、机械事件仿真、用于诸如铸造、模制和模压成形等的操作的过程仿真等。设计过程2000还可以包括用于执行标准电路设计过程的模块,所述标准电路设计过程例如时序分析、验证、设计规则检查、布局和布线操作等。
108.设计过程2000采用并结合逻辑和物理设计工具,例如hdl编译器和仿真模型构建工具,以处理设计结构2020以及所描述的支持数据结构的一些或全部以及任何附加的机械设计或数据(如果适用的话),以生成第二设计结构2090。设计结构2090以用于交换机械设备和结构的数据(例如,以iges、dxf、parastall xt、jt、drg或用于存储或呈现这样的机械设计结构的任何其他适当格式存储的信息)的数据格式驻留在存储介质或可编程门阵列上。类似于设计结构2020,设计结构2090优选地包括一个或多个文件、数据结构或者其它计算机编码的数据或指令,其驻留在传输或数据存储介质上,并且当由ecad系统处理时,产生本发明的一个或多个实施例的逻辑上或其它功能上等同的形式。在一个实施例中,设计结构2090可以包括在功能上仿真本文所示的设备的编译的可执行hdl仿真模型。
109.设计结构2090还可以采用用于交换集成电路的布图数据的数据格式和/或符号数据格式(例如,以gdsii(gds2)、gl1、oasis、图文件或用于存储这种设计数据结构的任何其他适当格式存储的信息)。设计结构2090可以包括信息,例如符号数据、图文件、测试数据文件、设计内容文件、制造数据、布局参数、布线、金属级、通孔、形状、用于通过生产线路由的数据以及制造商或其他设计者/开发者生产如上所述和本文所示的设备或结构所需的任何其他数据。设计结构2090然后可以进行到阶段2095,其中,例如,设计结构2090:进行流片、交付制造、交付掩模厂、送到另一设计厂、送回到客户等。
110.如上所述,在至少一个实施例中,服务于逻辑分区从其迁移的源主机的数据处理系统可以包括系统结构、系统存储器、通信地耦合到系统结构的系统存储器的存储器控制器、以及通信地耦合到系统结构并被配置为经由通信链路通信地耦合到源主机与之非相干的目的地主机的链路控制器。源主机另外包括通信地耦合到系统结构的多个处理单元。多个处理单元例如由管理程序或虚拟机监视器配置成执行具有驻留在系统存储器中的数据集的逻辑分区,并经由通信链路将逻辑分区迁移到目的地主机。逻辑分区的迁移包括经由通信链路将在源主机上执行的逻辑分区的数据集从源主机的系统存储器迁移到目的地主机的系统存储器。在迁移数据集的至少一部分之后,逻辑分区的状态经由通信链路从源主机迁移到目的地主机,使得逻辑分区此后在目的地主机上执行。这种迁移技术为迁移提供了减少的等待时间,并为逻辑分区提供了改进的抖动。
111.在之前描述的示例中,源主机利用实地址指定存储器页将被复制到的目的地主机的系统存储器中的存储位置。本领域技术人员将理解,在其他示例中,目的地主机的系统存储器中的存储位置可以替代地利用有效或虚拟地址来指定,这些地址经受一层或多层地址转换以获得目的地主机的实地址空间中的实地址。
112.尽管已经具体示出和描述了各种实施例,但是本领域技术人员将理解,在不脱离所附权利要求的范围的情况下,可以在形式和细节上对其进行各种改变,并且这些替代实现全部落入所附权利要求的范围内。
113.附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程
序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所提及的功能可不按图中所提及的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。
114.尽管已经关于执行指导本发明的功能的程序代码的计算机系统描述了各方面,但是应当理解,本发明可以替代地被实现为包括存储程序代码的计算机可读存储设备的程序产品,所述程序代码可以由数据处理系统的处理器处理以使数据处理系统执行所描述的功能。计算机可读存储设备可以包括易失性或非易失性存储器、光盘或磁盘等,但排除非法定主题,诸如传播信号本身、传输介质本身以及能量形式本身。
115.作为示例,程序产品可以包括数据和/或指令,当在数据处理系统上执行或以其他方式处理时,所述数据和/或指令生成本文公开的硬件组件、电路、设备或系统的逻辑上、结构上或以其他方式功能上等效的表示(包括仿真模型)。这样的数据和/或指令可以包括硬件描述语言(hdl)设计实体或其他数据结构,其符合和/或兼容诸如verilog和vhdl的低级hdl设计语言和/或诸如c或c++的高级设计语言。此外,数据和/或指令还可以采用用于交换集成电路的布局数据的数据格式和/或符号数据格式(例如,以gdsii(gds2)、gl1、oasis、映射文件或用于存储这样的设计数据结构的任何其它适当格式存储的信息)。
技术特征:
1.一种在数据处理环境中进行数据处理的方法,所述方法包括:经由通信链路将在源主机上执行的逻辑分区的数据集从所述源主机的系统存储器迁移到相对于所述源主机非相干的目的地主机的系统存储器;在迁移所述数据集的至少一部分之后,经由所述通信链路将所述逻辑分区的状态从所述源主机迁移到所述目的地主机;以及在将所述逻辑分区的状态迁移到所述目的地主机之后,在所述目的地主机上执行所述逻辑分区。2.根据权利要求1所述的方法,其中迁移所述数据集包括在所述逻辑分区开始在所述目的地主机上执行之后,将所述逻辑分区的数据集中的至少一些从所述源主机迁移到所述目的地主机。3.根据权利要求1所述的方法,其中迁移所述数据集包括所述源主机基于所述目的地主机的请求将所述数据集的一个或多个存储器页复制到所述目的地主机中的系统存储器。4.根据权利要求1所述的方法,其中迁移所述数据集包括所述源主机启动将所述数据集的一个或多个存储器页复制到所述目的地主机中的系统存储器。5.根据权利要求1所述的方法,其中:所述数据集包括多个存储器页,每个存储器页具有相应的相关联的页表条目,所述页表条目定义针对相关联的存储器页的虚拟到实地址转换;以及所述方法还包括所述源主机在数据结构中跟踪所述多个存储器页的哪些页表条目已经被迁移到所述目的地主机。6.根据权利要求1所述的方法,其中迁移所述数据集包括:所述源主机在系统结构上发出存储请求,所述存储请求指定所述目的地主机的系统存储器中的地址;以及所述源主机中的链路控制器接收所述存储请求,并且基于所述地址,经由所述通信链路将所述存储请求传输到所述目的地主机内的存储器控制器。7.根据权利要求1所述的方法,其中迁移所述数据集包括所述源主机执行将所述数据集中经受由所述源主机更新的所有存储器页从所述源主机的高速缓存批量刷新到系统存储器。8.根据权利要求1所述的方法,并且还包括:所述源主机利用经由网络连接的通信来协调所述逻辑分区从所述源主机到所述目的地主机的迁移;以及所述源主机禁止经由网络连接迁移所述数据集和所述逻辑分区的状态。9.一种作为源主机的数据处理系统,所述数据处理系统包括:系统结构;系统存储器;所述系统存储器的存储器控制器,其中所述存储器控制器通信地耦合到所述系统结构;链路控制器,通信地耦合到所述系统结构并且被配置为经由通信链路通信地耦合到目的地主机,其中所述目的地主机相对于所述源主机非相干;以及多个处理单元,通信地耦合到所述系统结构,其中所述多个处理单元被配置为执行具
有驻留在所述系统存储器中的数据集的逻辑分区,并且经由所述通信链路通过以下操作将所述逻辑分区迁移到所述目的地主机:经由通信链路,将在所述源主机上执行的逻辑分区的数据集从所述源主机的系统存储器迁移到所述目的地主机的系统存储器;在迁移所述数据集的至少一部分之后,经由所述通信链路将所述逻辑分区的状态从所述源主机迁移到所述目的地主机,使得所述逻辑分区此后在所述目的地主机上执行。10.根据权利要求9所述的数据处理系统,其中迁移所述数据集包括在所述逻辑分区的执行在所述目的地主机上开始之后,将所述逻辑分区的数据集中的至少一些从所述源主机迁移到所述目的地主机。11.根据权利要求9所述的数据处理系统,其中迁移所述数据集包括所述源主机基于所述目的地主机的请求将所述数据集的一个或多个存储器页复制到所述目的地主机中的系统存储器。12.根据权利要求9所述的数据处理系统,其中迁移所述数据集包括所述源主机启动将所述数据集的一个或多个存储器页复制到所述目的地主机中的系统存储器。13.根据权利要求9所述的数据处理系统,其中:所述数据集包括多个存储器页,每个存储器页具有相应的相关联的页表条目,所述页表条目定义针对相关联的存储器页的虚拟到实地址转换;以及所述多个处理单元还被配置为执行:在数据结构中跟踪所述多个存储器页的哪些页表条目已经被迁移到所述目的地主机。14.根据权利要求9所述的数据处理系统,其中迁移所述数据集包括:所述源主机在所述系统结构上发出存储请求,所述存储请求指定所述目的地主机的系统存储器中的地址;以及所述源主机的链路控制器接收存储请求,并且基于所述地址,经由通信链路将所述存储请求传输到所述目的地主机内的存储器控制器。15.根据权利要求9所述的数据处理系统,其中迁移所述数据集包括所述源主机执行将所述数据集中经受由所述源主机更新的所有存储器页从所述源主机的高速缓存批量刷新到系统存储器。16.根据权利要求9所述的数据处理系统,其中所述多个处理单元还被配置为执行:所述源主机利用经由网络连接的通信来协调所述逻辑分区从所述源主机到所述目的地主机的迁移;以及所述源主机禁止经由网络连接迁移所述数据集和所述逻辑分区的状态。17.一种程序产品,包括:计算机可读存储设备;以及存储在所述计算机可读存储设备内的程序代码,当由用作源主机的数据处理系统执行时,所述程序代码使所述数据处理系统执行:经由通信链路将在源主机上执行的逻辑分区的数据集从所述源主机的系统存储器迁移到相对于所述源主机非相干的目的地主机的系统存储器;在迁移所述数据集的至少一部分之后,经由所述通信链路将所述逻辑分区的状态从所述源主机迁移到所述目的地主机;以及
在将所述逻辑分区的状态迁移到所述目的地主机之后,在所述目的地主机上执行所述逻辑分区。18.根据权利要求17的程序产品,其中迁移所述数据集包括在所述逻辑分区开始在所述目的地主机上执行之后,将所述逻辑分区的数据集中的至少一些从所述源主机迁移到所述目的地主机。19.根据权利要求17所述的程序产品,其中迁移所述数据集包括所述源主机基于所述目的地主机的请求将所述数据集的一个或多个存储器页复制到所述目的地主机中的系统存储器。20.根据权利要求17所述的程序产品,其中迁移所述数据集包括所述源主机启动将所述数据集的一个或多个存储器页复制到所述目的地主机中的系统存储器。21.根据权利要求17所述的程序产品,其中:所述数据集包括多个存储器页,每个存储器页具有相应的相关联的页表条目,所述页表条目定义针对相关联的存储器页的虚拟到实地址转换;以及所述程序代码还使得所述源主机在数据结构中跟踪所述多个存储器页的哪些页表条目已经被迁移到所述目的地主机。22.根据权利要求17所述的程序产品,其中迁移所述数据集包括:所述源主机在系统结构上发出存储请求,所述存储请求指定所述目的地主机的系统存储器中的地址;以及所述源主机中的链路控制器接收所述存储请求,并且基于所述地址,经由所述通信链路将所述存储请求传输到所述目的地主机内的存储器控制器。23.根据权利要求17所述的程序产品,其中迁移所述数据集包括所述源主机执行将所述数据集中经受由所述源主机更新的所有存储器页从所述源主机的高速缓存批量刷新到系统存储器。24.根据权利要求17所述的程序产品,其中所述程序代码还使所述源主机执行:所述源主机利用经由网络连接的通信来协调所述逻辑分区从所述源主机到所述目的地主机的迁移;以及所述源主机禁止经由网络连接迁移所述数据集和所述逻辑分区的状态。
技术总结
一种数据处理系统包括系统结构、系统存储器、存储器控制器和链路控制器,该链路控制器通信地耦合到系统结构并且被配置为经由通信链路通信地耦合到源主机与其非相干的目的地主机。多个处理单元被配置为执行逻辑分区并且经由通信链路将逻辑分区迁移到目的地主机。逻辑分区的迁移包括经由通信链路将在源主机上执行的逻辑分区的数据集从源主机的系统存储器迁移到目的地主机的系统存储器。在迁移数据集的至少一部分之后,逻辑分区的状态经由通信链路从源主机迁移到目的地主机,使得逻辑分区此后在目的地主机上执行。此后在目的地主机上执行。此后在目的地主机上执行。
技术研发人员:S
受保护的技术使用者:国际商业机器公司
技术研发日:2021.11.29
技术公布日:2023/8/14
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:心室辅助系统和方法与流程 下一篇:冷却设备和方法与流程
