专利名称:将多个逻辑分区对接到自虚拟输入/输出设备的制作方法
技术领域:
本发明主要地涉及数据处理系统,并且具体地涉及创建和利用包括用于数据处 理系统的新执行环境的分区附件(adjunct)。分区附件在一个方面中用作向逻辑分区提供 对自虚拟输入/输出(I/O)设备的访问的专用附件。
背景技术:
在数据处理系统的管理程序(hypervisor)之上运行的逻辑分区(LPAR)常用来提 供比管理程序本身提供的功能更高级的功能。例如,一个LPAR可以指定为向数据处理 系统的一个或者多个其他LPAR提供输入/输出服务的虚拟输入/输出服务器(VIOS)。 更高级功能的这一卸载避免管理程序中的复杂代码,并且因此有助于在数据处理系统内 维持管理程序既小型又安全。然而,使用逻辑分区以向其他逻辑分区提供这样的服务需 要相对高的开销以实例化和运行逻辑分区,并且因此需要实例化和运行全操作系统以便 提供这样的服务。
发明内容
本文公开一种允许向逻辑分区提供服务而无需另一全逻辑分区来提供服务、也 无需在发起逻辑分区中或者在管理程序中嵌入服务的解决方案。诸如本文描述和要求保 护的分区附件是提供这一折衷的新执行环境。本文在一个方面中提供一种为多个逻辑分区建立对数据处理系统的自虚拟输入 /输出设备的访问的方法。该方法包括将多个逻辑分区中的各逻辑分区对接到至少一 个关联分区附件实例,各分区附件实例将多个逻辑分区中的它的关联逻辑分区耦合到自 虚拟输入/输出设备的虚拟功能或者队列对之一,各分区附件实例包括分离的可分发状 态并且运用从关联逻辑分区贡献的虚拟地址空间或者数据处理系统的管理程序来创建, 并且各分区附件实例包括用于自虚拟输入/输出设备的虚拟功能或者队列对的设备驱动 器;并且向多个逻辑分区中的各逻辑分区提供至少一个虚拟输入/输出,该至少一个虚 拟输入/输出通过逻辑分区的至少一个关联分区附件实例来与自虚拟输入/输出设备的虚 拟功能或者队列对对接。在另一方面中,提供一种数据处理系统,该系统包括至少一个处理器,包括 多个逻辑分区和有助于多个逻辑分区的输入/输出访问的多个分区附件实例;以及自虚 拟输入/输出设备,耦合到多个分区附件。多个逻辑分区中的各逻辑分区对接到至少一 个关联分区附件实例。各分区附件实例将多个逻辑分区中的关联逻辑分区耦合到数据处 理系统的自虚拟输入/输出设备的虚拟功能或者队列对之一。另外,各分区附件实例包 括分离的可分发状态并且运用从相应逻辑分区贡献的虚拟地址空间或者数据处理系统的 管理程序。此外,各分区附件实例包括用于自虚拟输入/输出适配器的相应虚拟功能或 者队列对的设备驱动器。多个逻辑分区中的各逻辑分区包括至少一个虚拟输入/输出, 其通过逻辑分区的至少一个关联分区附件实例来与自虚拟输入/输出设备的至少一个虚拟功能或者至少一个队列对对接。在又一方面中,本发明包括一种包括至少一个计算机可读介质的制品,该计算 机可读介质具有计算机可读程序代码逻辑以定义一种为多个逻辑分区建立对数据处理系 统的自虚拟输入/输出设备的访问的方法。该计算机可读程序代码逻辑在处理器上执行 时,进行将多个逻辑分区中的各逻辑分区对接到至少一个关联分区附件实例,各分区 附件实例将多个逻辑分区中的它的关联逻辑分区耦合到自虚拟输入/输出设备的虚拟功 能或者队列对之一,并且各分区附件实例包括分离的可分发状态并且运用从关联逻辑分 区贡献的虚拟地址空间或者数据处理系统的管理程序来创建,并且其中各分区附件实例 包括用于自虚拟输入/输出设备的虚拟功能或者队列对的设备驱动器;以及向多个逻辑 分区中的各逻辑分区提供至少一个虚拟输入/输出,该至少一个虚拟输入/输出通过逻辑 分区的至少一个关联分区附件实例来与自虚拟输入/输出设备的虚拟功能或者队列对对 接。另外,通过本发明的技术来实现附加特征和优点。本发明的其他实施例和方面 在这里加以具体描述并且视为要求保护的本发明的一部分。
在说明书附带的权利要求中具体地指出并且明确要求保护视为本发明的主题内 容。根据与以下附图结合进行的下文具体描述,本发明的前述和其他特征及优点变得明 显图1是用于实施本发明一个或者多个方面的数据处理系统的一个实施例的框 图;图2是可以用来实施本发明一个或者多个方面的数据处理系统的更详细图示;图3图示了根据本发明一个方面的包括客户机逻辑分区和分区附件的数据处理 系统的一个实施例;图4A图示了根据本发明一个方面的包括多个逻辑分区和多个分区附件的数据处 理系统;图4B图示了根据本发明一个方面的数据处理系统,其中多个逻辑分区附着全局 分区附件;图4C描绘了根据本发明一个方面的数据处理系统,其中管理程序运用分区附 件;图5图示了根据本发明一个方面的数据处理系统,其中包括设备驱动器服务的 全局分区附件由多个客户机分区附着而不是运用常规虚拟输入输出服务器;图6是根据本发明一个方面的用于创建分区附件的过程的一个实施例的流程 图;图7是根据本发明一个方面的用于创建包括设备驱动器的分区附件的过程的一 个更详细实施例的流程图;图8是根据本发明一个方面的用于创建可由数据处理系统的多个逻辑分区运用 的全局分区附件的过程的一个实施例的流程图;图9是根据本发明一个方面的用于从客户机逻辑分区附着到全局分区附件的过程的一个实施例的流程图;图10是根据本发明一个方面的用于由分区附件处理服务请求的过程的一个实施 例的流程图;图11是根据本发明一个方面的用于异步服务请求完成处理的过程的一个实施例 的流程图;图12图示了数据处理系统的两个常规逻辑分区;图13图示了数据处理系统的常规处理器寄存器机器状态和存储器管理及地址转 译硬件;图14图示了图13的处理器寄存器机器状态和存储器管理单元硬件,其中在活跃 状态中常规地分发LPARl ;图15图示了图13的处理器寄存器机器状态和存储器管理单元硬件,其中将 LPAR 1切换出去并且在活跃状态中分发LPAR 2 ;图16图示了根据本发明一个方面的包括逻辑分区(LPAR 1)和分区附件的数据处
理系统;图17图示了根据本发明一个方面的图16的数据处理系统的处理器寄存器机器状 态和存储器管理及地址转译硬件,其中在活跃状态中分发LPAR 1,并且图示了在LPARl 与分区附件之间的共享虚拟地址空间;图18图示了根据本发明一个方面的在从LPAR 1上下文切换当前状态机以分发分 区附件之后的、图17的处理器寄存器机器状态和存储器管理及地址转译硬件;图19图示了用于数据处理系统的多线程处理器核的处理器寄存器机器状态和存 储器管理及地址转译硬件;图20图示了图19的处理器寄存器机器状态和存储器管理及地址转译硬件,其中 第一逻辑分区(LPAR 1)在活跃状态中;图21图示了在将当前状态机从LPAR 1上下文切换到第二逻辑分区(LPAR 2) 的状态数据之后的、图19和图20的处理器寄存器机器状态和存储器管理及地址转译硬 件;图22图示了根据本发明一个方面的图19的处理器寄存器机器状态和存储器管理 及地址转译硬件,其中将一个硬件线程的当前状态机从第一逻辑分区(LPARl)部分上下 文切换到分区附件;图23A和图23B图示了现有技术的数据处理系统配置的一个例子,其中逻辑分 区所拥有的专用设备需要用于该逻辑分区的操作系统的本机设备驱动器以便访问或者使 用该专用设备;图24A和图24B图示了根据本发明一个方面的分区附件配置的例子,其中非本 机操作系统的设备驱动器用来访问或者使用物理输入/输出设备;图25图示了常规数据处理系统的一个例子,该系统包括通过虚拟输入/输出服 务器对接到非自虚拟输入/输出设备的多个逻辑分区;图26图示了数据处理系统的一个实施例,其中多个逻辑分区经由多个逻辑分区 内的本机设备驱动器对接到自虚拟输入/输出设备的多个虚拟功能实例;图27描绘了数据处理系统的一个备选实施例,其中多个逻辑分区经由多个逻辑分区内的本机设备驱动器对接到自虚拟输入/输出设备的多个队列对实例;图28图示了根据本发明一个方面的数据处理系统的一个实施例,该数据处理系 统包括将多个逻辑分区对接到自虚拟输入/输出设备的相应虚拟功能实例的多个分区附 件实例;图29图示了根据本发明一个方面的数据处理系统的另一实施例,其中多个分区 附件实例将多个逻辑分区对接到自虚拟输入/输出设备的相应队列对实例;图30A图示了诸如图26中所示数据处理系统的另一实施例,其中多个逻辑分区 运用逻辑分区内的本机设备驱动器来对接到自虚拟输入/输出设备的相应物理或者虚拟 功能实例;图30B描绘了多个逻辑分区的设备驱动器页面表条目的物理存储器结构和到诸 如图30A中所示数据处理系统内的相应物理存储器位置的映射;图31A图示了根据本发明一个方面的诸如图28中所示数据处理系统的一个实施 例,其中分区附件实例将多个逻辑分区对接到自虚拟输入/输出设备;图31B描绘了根据本发明一个方面的多个分区附件的页面表条目的物理存储器 结构和到相应物理存储器位置的映射,并且示出了物理存储器结构内的共同代码和只读 数据映射;以及图32描绘了包含本发明一个或者多个方面的计算机程序产品的一个实施例。
具体实施例方式图1是数据处理系统100的框图,在一个例子中该数据处理系统为对称多处理 (SMP)服务器计算机系统。SMP服务器计算机系统100包括可以映射到用户应用(即由 用户应用暂时地拥有)以执行该应用的物理硬件设备。SMP服务器计算机系统100包括物理SMP服务器102。物理SMP服务器102
包括物理硬件设备,诸如处理器104、存储器106和I/O适配器108。这些物理设备由管 理程序110进行管理。处理器104是共享处理器并且各自可以是能够在处理器上并行执 行多个不同线程的具有同时多线程(SMT)功能的处理器。虚拟服务器是用于具有相同能力、接口和状态的物理服务器的代理。虚拟服务 器由驻留于物理SMP服务器计算机系统100上的管理程序来创建和管理。虚拟服务器在 它的用户看来是物理SMP服务器操作系统、中间件和在其上运行的应用软件。SMP 服务器计算机系统100包括一个或者多个虚拟服务器,诸如虚拟服务器112和虚拟服务器 112a。各虚拟服务器在它的软件看来包括它自己的可用于该虚拟服务器独占使用的一 个或者多个处理器、存储器和一个或者多个I/O适配器。例如,虚拟服务器112包括虚 拟处理器120、虚拟存储器122和虚拟I/O适配器124。虚拟服务器112a包括虚拟处理 器120a、虚拟存储器122a和虚拟I/O适配器124a。各虚拟服务器支持它自己的软件环境,包括操作系统、中间件和应用。各虚拟 服务器的软件环境可以不同于其他虚拟服务器的软件环境。例如,各虚拟服务器执行的 操作系统可以互不相同。例如,虚拟服务器112支持操作系统114、中间件116和应用118。虚拟服务器112a支持操作系统114a、中间件116a和应用118a。操作系统114和114a可以是相同或 者不同操作系统。虚拟服务器是对如下服务器的逻辑描述,该服务器定义如下服务器环境,该服 务器环境在用户看来如同它是物理服务器一样工作,从而以与物理服务器相同的方式受 到访问和提供信息。为各虚拟服务器定义的虚拟处理器、虚拟存储器和虚拟I/O适配器 是物理处理器、存储器和I/O适配器的逻辑替代物。管理程序110管理在虚拟服务器及其虚拟处理器、虚拟存储器和虚拟I/O适配 器与选择用来实施这些虚拟设备的物理硬件设备之间的映射。例如,当分发虚拟处理器 时,物理处理器,诸如物理处理器104之一由管理程序110选择用来执行和实施该虚拟处 理器。管理程序110管理对物理设备的选择及其向虚拟设备的暂时指派。管理程序110在分发时间分片期间服务于所有逻辑分区。分发时间分片是特定 时间长度。在各分发时间分片期间,管理程序110将向各逻辑分区分配或者指派物理处 理器。当在物理处理器上已经向逻辑分区分配时间时,该逻辑分区所定义的虚拟处理器 将由物理处理器执行。管理程序110负责动态地创建、管理和破坏虚拟SMP服务器。管理程序110可 以去除或者添加全部虚拟处理器、虚拟I/O适配器和虚拟存储器块。管理程序110也负 责动态资源分配、管理物理资源的时间共享以及更改映射到处理器的物理资源而不涉及 到操作系统。管理程序110也能够针对不希望共享的情形使物理资源专用于虚拟资源。 管理程序110负责管理对物理资源的添加或者去除。管理程序110使这些添加和删除在 上级应用看来是透明的。图2是可以用来实施本文所描述的概念的计算机系统的更详细图示。数据处理 系统200可以是对称多处理器(SMP)系统,该系统包括多个共享处理器或者具有SMT功 能的处理器,诸如连接到系统总线206的处理器202和204。备选地,可以运用单处理器 系统。在所示例子中,处理器204是服务处理器。各具有SMT功能的处理器能够在一 个处理器上并行执行多个硬件线程。提供与本地存储器209的接口的存储器控制器/高速缓存208也连接到系统总线 206。I/O总线桥接器210连接到系统总线206并且提供与I/O总线212的接口。可以 如图所示集成存储器控制器/高速缓存208和I/O总线桥接器210。连接到I/O总线212的外围部件互连(PCI)总线桥接器214提供与PCI本地总线 216的接口。多个调制解调器可以连接到PCI总线216。典型的PCI总线实施将支持四 个PCI扩展槽或者附加连接器。可以通过调制解调器218和网络适配器220 (通过附加板 连接到PCI本地总线216)提供与图1中的网络计算机108-112的通信链路。网络适配器220包括物理层282,该物理层调控模拟信号以往外去往网络,例如 针对R45连接器的以太网网络。在网络适配器220内包括介质访问控制器(MAC) 280。 介质访问控制器(MAC) 280耦合到总线216并且处理数字网络信号。MAC 280适于作为 在总线216与物理层282之间的接口来工作。MAC 280执行在数据分组的发送和接收中 涉及到的多个功能。例如,在数据发送期间,MAC 280将待发送的数据组装成具有地址 和检错字段的分组。反言之,在数据接收期间,MAC 280拆卸分组并且执行地址检验和 检错。此外,MAC 280通常执行对发送的数字信号的编码/解码并且执行前同步码生成/去除以及位发送/接收。附加PCI总线桥接器222和224为附加PCI总线226和228提供接口,该附加 PCI总线可以用来支持附加调制解调器或者网络适配器。以这一方式,数据处理系统200 允许与多个网络计算机的连接。存储器映射图形适配器230和硬盘232也可以如图所示 直接地或者间接地连接到I/O总线212。服务处理器204查询系统处理器、存储器部件和I/O桥接器以生成数据处理系统 200的清单和拓扑理解。服务处理器204还对通过查询系统处理器、存储器控制器和I/O 桥接器而找到的所有元件执行内置自测试(BIST)、基本保障测试(BAT)和存储器测试。 服务处理器204收集和报告针对在BIST、BAT和存储器测试期间检测到的故障的任何错 T^fn 息。本领域普通技术人员将理解图2中所示硬件可以变化。例如,除了所示硬件之 外或者取而代之还可以使用诸如光盘驱动等其他外围设备。所示例子并非意味着暗示关 于本发明的架构限制。可以在图1或者图2中所示计算机或者数据处理系统之一内执行本发明。作为具 体商用例子,可以基于在IBM的p/i系列产品线的固件和系统件中找到(诸如在Power.org 的〃 Power ArchitecturePlatform Reference “ (PAPR)材料(http://www.power.org/members/ developers/specs/PAPR_Version_2.2_090ct07.pdf)中描述)的技术来构建实施比如下文描
述的分区附件的数据处理系统。下文公开了分区附件的概念,该分区附件是比全逻辑分区限制更多的分区。如 下文所述,分区附件在扁平静止有效地址空间和问题状态中运行。这些约束允许管理程 序施加如下范围的管理程序和处理器优化,这些优化实现与状态机从逻辑分区到分区附 件的状态数据的上下文切换关联的系统开销大量缩减(也就是与状态机在逻辑分区之间 的上下文切换相比)。就其他方面而言,分区附件类似于全逻辑分区。例如,与全逻辑 分区类似,可以向分区附件指派物理或者虚拟资源。另外,与全逻辑分区类似,分区附 件可以是虚拟输入输出(VIO)通信机制的端点,比如虚拟输入输出服务器(VIOS)。图3图示了根据本发明一个方面的包括客户机逻辑分区(或者简称为客户机分 区)310和分区附件320的数据处理系统300的一个例子。客户机分区310是逻辑分区, 其包括一个或者多个客户应用312、操作系统实例314和虚拟I/O设施316。客户机分区 310在管理程序330之上运行,并且提供比管理程序本身提供的功能更高级的功能。管理 程序330在示出为包括一个或者多个I/O设备350的下层系统硬件340之上执行。分区附件320在概念上为客户机分区310的子分区。分区附件少于全逻辑分区、 但是以如下方式运行,在该方式中管理程序强制在分区附件与它运行于其中的客户机分 区之间的安全性和隔离。分区附件与全逻辑分区相比功能缩减,例如无权访问存储器管 理单元(MMU)配置或者浮点设施,并且是仅提供运行希望的服务所需的功能(例如I/O 驱动器)的环境。在所示例子中,分区附件320包括虚拟I/O接口 322和允许访问I/O 设备350的硬件设备驱动器服务324。在操作中,客户机分区310如图所示经由分区附件 320来访问I/O设备350。通过缩减分区附件环境内的功能,缩减了分发和维持分区附件 的运行时间开销(与另一全逻辑分区相比),因而避免了使用分离的逻辑分区作为虚拟输 入输出服务器(VIOS)的许多性能弊端。
作为具体例子,这里将分区附件描述为运行用于设备驱动器服务的缩减操作系 统环境。仅通过例子提供这一服务。分区附件提供(在一个例子中)仅包括设备驱动器 所需结构的最小优化基础结构。例如,如果Limix设备驱动器将在分区附件内运行,则 最小执行环境仅包括Linux设备驱动器需要的Linux内核服务或者等效服务。如果AIX 设备驱动器将在分区附件内运行,则最小执行环境仅包括AIX设备驱动器需要的AIX内 核服务或者等效服务。有利地,分区附件直接地与管理程序接口相对在管理程序/问题 状态中运行。如下文详细说明的那样,分区附件的分发无需全分区上下文切换,这简化 了附件内核要求。这部分地通过将分区附件映射到客户机分区的虚拟地址页面表中来实 现。例如可以经由管理程序管理的存储器密钥来实现客户机分区与分区附件的隔离。有 利地,客户不可查看分区附件。另外,如下文说明的那样,可以在多个客户机分区内实 例化相同的分区附件服务(这里称为全局分区附件服务)。图4A-图4C描绘了可以根据这里公开的概念而实施的、用于解决大量操作系统 和平台问题的各种分区附件使用模型。图4A图示了分区附件420的一个例子(在这一例 子中也称为本地分区附件),该分区附件在概念上部分地驻留于发起客户机分区410内以 用于通过管理程序430来访问专用资源440。例如,共同适配器/驱动器服务可以由分区 附件420提供以用于相应的专用适配器(即资源)。图4B图示了全局分区附件的例子,其中(例如)服务逻辑分区,诸如虚拟输入 输出服务器分区,将存储器和物理资源贡献用于分区附件的实例化。这样的全局分区附 件421可由多个客户机分区410访问或者附着,并且经由管理程序430向资源440提供例 如输入输出服务。作为具体例子,全局分区附件可以包括共同适配器驱动器服务,并且 资源是共享适配器。图4C是全局分区附件422的一个备选实施例,其中管理程序430为附件提供资 源。在这一实施中,管理程序将分区附件供它自己使用,例如用于原本以其他方式存在 于管理程序的执行域中的保护或者隔离服务。除非另有指明,否则假设下文描述的分区附件实施例为如下执行环境,该执行 环境是客户机分区的一部分,而该部分通过管理程序隔离和安全机制来与客户机分区分罔。图5图示了由多个客户机运用的全局分区附件(即图4B的实施例)的一个详细 例子。在这一例子中,逻辑分区(LPARA、LPARB)510A、510B是客户机分区,并且分 区510C是客户机分区510A、510B例如在提供输入/输出服务时运用的虚拟输入输出服 务器分区。根据本发明,输入/输出服务(在这一例子中称为附件设备驱动器520)是分 区附件提供的设备驱动器服务520A、520B,其用于通过管理程序530、经由一个或者多 个输入/输出路径521来访问输入/输出硬件540。在这一例子中,分区附件有助于从 各客户机分区到输入/输出硬件的更直接附着或者更直接路径。如下文进一步描述的那 样,分区附件运用分区附件实例来并入于客户机分区分别贡献的虚拟地址空间中。为了让分区附件成为可运行的程序,管理程序与将使用分区附件服务的客户机 分区一起协商建立分区附件环境。一旦这一协商完成,客户机分区将已经向管理程序贡 献它的虚拟地址空间的一部分以供分区附件使用。管理程序将使用硬件和管理程序设施 以保证客户机分区不再有权访问或者可以修改所贡献的资源(例如所贡献的虚拟地址空间)。管理程序使用贡献的虚拟地址资源来实例化运行分区附件所需的有效地址映射。 随后,管理程序可以通过对它对贡献的虚拟地址空间的控制进行重新编程,来在分发客 户机分区或者分区附件之间切换。当客户机分区运行时,它可以访问除了所贡献的虚拟 地址范围之外的向它指派的所有虚拟地址空间,并且当分区附件运行时,管理程序禁止 访问客户机分区的除了所贡献的虚拟地址范围(也就是向它启用的虚拟地址空间)之外的 所有虚拟地址。活跃/不活跃虚拟地址范围的这一轮换,明显地快于对全存储器管理和 地址转译硬件重新编程以实现当前状态机在两个全逻辑分区之间的完整上下文切换,如 必须切换到虚拟输入/输出服务器分区。以这一方式,分区附件地址空间从客户机分区 的存储器管理和地址转译硬件资源中分出并且与之分离。分区附件因此从处理器的观点 来看是客户机分区的一部分,但是从客户机分区和管理程序的观点来看是不同实体。有利地,这里呈现的分区附件概念减少对于将全逻辑分区用于向客户机分区提 供服务的需要。这又释放了资源并且改善了客户工作量的性能。此外,这里公开的分区 附件通过减少与虚拟化服务关联的性能代价,来鼓励开发和部署虚拟平台服务而不是开 发操作系统特有服务。这继而允许节省开发成本,因为可以仅实施服务一次(即在分区 附件中)而不是在多个操作系统之间本机实施。下文参照图6-图11来描述用于实例化和运用分区附件的各种协议例子。图6是用于创建用于诸如图4A中所示用途的本地分区附件的过程的一个实施例 的流程图。分区附件实例化或者建立协议600开始于询问客户机分区是否想要分区附件 服务605。如果为“否”,则协议结束610。否则,客户机分区将它的虚拟地址空间和 存储器空间的一部分保留以用于分区附件615,并且激活管理程序以利用这些贡献的资源 来实例化分区附件620。管理程序创建(向管理员隐藏的)新分区附件,并且向分区附件 指派所贡献的资源625。创建新分区附件意味着管理程序创建可分发的程序上下文。管 理程序建立对贡献的虚拟地址空间和贡献的存储器的硬件保护和强制,从而客户机分区 不再能够访问该空间630。另外,管理程序为分区附件创建新的可分发状态635。这一 新的可分发状态意味着可以在多线程硬件核的个别硬件(SMT)线程上分发分区附件,而 处理器核的其他SMT线程继续运行客户机分区对分区附件的激活。下文参照图19-图22 进一步描述本发明的这一方面。接着,管理程序将分区附件程序镜像加载到贡献的附件存储器中640,并且初始 化附件执行645。初始化分区附件执行环境可以包括管理程序将有效地址空间初始化成虚 拟地址转译表、附件保护密钥和特殊管理程序问题状态权限。管理程序然后分发分区附 件以在分区附件程序入口点处开始执行650,并且管理程序为客户机分区建立分区附件服 务接口调用655。管理程序按照分区附件提供的协议或者功能来调用或者激活客户机分 区。管理程序然后返回到状态为分区附件实例化的客户机分区660。图7描绘了根据本发明一个方面的用于创建逻辑分区附件的过程的一个详细例 子。在这一例子中,分区附件包括设备驱动器服务。输入/输出实例化或者建立700始 于客户机分区执行输入/输出设备发现705。处理询问客户机分区是否具有它自己的用于 所发现的输入/输出设备的设备驱动器710。如果为“是”,则客户机分区继续正常设 备驱动器加载和配置715,从而结束处理720。如果客户机分区没有它自己的用于所发现 的I/O设备的设备驱动器,则处理确定分区附件镜像是否可用于这一 I/O设备725。如果为“否”,则不能配置设备730,并且处理结束720。假设分区附件镜像可用,那么客户机分区将它的虚拟地址空间和存储器空间的 一部分保留或者贡献用于分区附件镜像735,并且激活管理程序以利用贡献的虚拟地址空 间和存储器空间以及I/O设备来实例化分区附件740。管理程序创建新分区附件并且向分 区附件指派贡献的资源745。管理程序然后对贡献的虚拟地址空间和存储器空间建立适当 硬件保护和强制,从而客户机分区不再能够访问贡献的空间750。管理程序为分区附件创 建新的可分发状态755。如上文所言,有利地可以在SMT数据处理系统的单个硬件线程 上分发这一新的可分发状态,而其他硬件线程继续运行客户机分区的激活(或者请求)。 管理程序将分区附件镜像加载到贡献的附件存储器中760,并且初始化分区附件执行环境 765。然后分发分区附件以在分区附件镜像入口点处开始初始化执行770。管理程序为客 户机分区建立分区附件服务接口调用,这些调用例如包括用于对象虚拟设备类的虚拟输 入/输出请求排队接口 775。管理程序返回到状态为分区附件实例化的客户机分区,并且 向客户机分区指派新虚拟设备780,并且客户机分区继续正常虚拟设备驱动器加载和配置 785。图8是用于实例化诸如图4B中所示全局分区附件的过程的一个实施例的流程 图。在这一例子中,分区附件实例化开始于作为虚拟输入输出服务器(VIOS)来工作的 逻辑分区。分区附件实例化建立协议800开始于VIOS将它的存储器空间和虚拟地址空 间的一部分保留或者贡献用于全局分区附件805。VIOS激活管理程序以利用贡献的存储 器和虚拟地址空间以及I/O设备(将提供对该I/O设备的加速虚拟化访问)来实例化全局 分区附件810。管理程序创建同样向管理员隐藏的新全局分区附件,并且向分区附件指派 贡献的存储器空间和I/O设备815。管理程序建立对贡献的虚拟地址空间和存储器空间 的硬件保护和强制,从而VIOS不再能够访问贡献的空间820。管理程序为分区附件创建 新的可分发状态825,其可以在个别SMT线程上分发,而多线程硬件处理器核的一个或 多个其他SMT线程继续运行VIOS分区对分区附件的激活825。管理程序将全局分区附 件程序镜像加载到贡献的附件存储器中830,并且初始化附件执行环境835。管理程序然 后分发全局分区附件以在附件镜像入口点处开始初始化执行840,并且建立可用于从客户 机分区指派或者附着的全局分区附件服务接口调用和虚拟设备实例845,从而完成处理协 议 850。图9描绘了用于附着到全局分区附件(诸如上文结合图8描述的那样创建的VIOS 分区附件)的过程的一个例子。这一客户机分区附着900开始于客户机分区执行虚拟I/ O设备发现905。处理确定讨论的虚拟I/O设备是否能够全局分区附件加速910,也就是 附件服务是否全局地存在。如果为“否”,则客户机分区例如使用VIOS来继续正常虚 拟设备配置915,从而结束处理920。如果虚拟I/O设备附件镜像可用,则客户机分区将 虚拟地址空间贡献或者保留用于附件925,并且激活管理程序以利用贡献的虚拟地址空间 来附着全局分区附件镜像930。管理程序为客户机分区对贡献的虚拟地址空间建立硬件 保护和强制935,并且全局分区附件利用贡献的虚拟地址空间来映射到客户机分区页面表 中。管理程序创建用于这一客户机分区到全局分区附件的虚拟I/O映射。随后,处理返 回到客户机分区以继续正常虚拟设备配置940,从而完成处理920。图10图示了用于由分区附件处理从客户机分区提交的服务请求的协议的一个实施例。分区附件服务1000开始于询问客户机分区是否需要激活分区附件服务1005。如果 为“否”,则处理结束1010。否则,客户机分区为期望的附件服务调用激活对分区附件 服务接口的管理程序调用1015。处理确定分区附件服务是否可用1020。如果为“否”, 则服务请求失败1025,并且处理结束1010。假设分区附件服务可用,那么管理程序接收分区附件服务请求1030,并且确定 是将服务请求排队还是当前激活服务请求1035。如果服务请求将被排队,则管理程序将 针对分区附件的服务请求进行排队1040,并且返回以询问客户机分区是否需要激活分区 附件服务1005。如果当前将激活服务请求,则管理程序执行对当前状态机的“轻型”上 下文切换,并且向分区附件给予对处理器的控制1050。下文参照图12-图22详细地说明这一轻型上下文切换。分区附件执行或者发起 请求的服务,然后返回到管理程序1055。管理程序执行类似的轻型上下文切换并且将对 处理器的控制给予回到发起分区附件服务的客户机分区1060,从而完成处理1010。图11描绘了用于从分区附件异步地处理服务请求完成的协议的一个实施例的流 程图。分区附件请求完成处理1100开始于确认分区附件服务请求完成的询问1105。如 果请求处理未完成,则处理等待直至分区附件服务请求已经完成,这时服务请求的完成 被排队到管理程序1110。处理然后确定客户机分区是轮询还是预计关于服务请求的完成 的中断1115。如果运用轮询,则客户机分区向管理程序轮询服务请求的完成1120,否则 管理程序为客户机分区发布中断1125。管理程序然后执行轻型上下文切换(下文描述) 并且激活客户机分区中断完成句柄1130。客户机分区处理服务请求的完成1135,从而完 成处理协议1140。图12-图15图示了在数据处理系统内的全逻辑分区向逻辑分区的上下文切换的 一个例子。当在两个分离的全分区之间进行上下文切换时,各逻辑分区具有它自己的指 派给它的独特虚拟地址空间。当管理程序对个别处理器执行全分区切换时,管理程序必 须保存和重新存储处理器上下文机器状态(通用寄存器、浮点寄存器、专用寄存器、指 令地址寄存器等)以及无效和重新初始化存储器管理单元(MMU)硬件。这包括无效任 何地址转译高速缓存(例如转译旁视(lookaside)缓冲器),因为全逻辑分区上下文切换也 意味着向不同虚拟地址空间切换,并且改变处理器中的硬件页面表指针以指向新逻辑分 区的在存储器中的页面表。MMU对全逻辑分区上下文切换的影响在执行逻辑分区上下文 切换时是最大花费,因为新逻辑分区每当它被分发时也必须在参考时重新建立所有它的 地址转译。这与这里公开的附件分区概念形成对照(因为附件及其客户机分区共享虚拟 地址空间),其中无需无效或者修改MMU硬件,仅需保存和重新存储允许分区附件使用 的处理器上下文/寄存器的子集以作为状态机向分区附件的上下文切换的一部分。如图12中所示,第一逻辑分区(LPAR 1) 1200包括虚拟地址到实际地址的页面表 1205,该表包括向LPAR 1指派的虚拟地址范围。类似地,第二逻辑分区(LPAR 2) 1210 包括虚拟地址到实际地址的页面表1215,该表包括向LPAR 2指派的虚拟地址范围。 LPARl运用的虚拟地址空间范围与LPAR 2运用的虚拟地址空间分离,并且一个逻辑分区 不能访问另一逻辑分区的虚拟地址空间。图13图示了包括处理器核机器1300的存储器管理和地址转译硬件的处理器机器 状态的一个例子。所示硬件包括通用寄存器1310、浮点寄存器1320、矢量寄存器1330、专用寄存器1340、转译旁视缓存器1350和段旁视缓存器1360。转译旁视缓存器是虚拟 地址到实际地址的转译的高速缓存,而段旁视缓存器包含有效的虚拟地址的转译。在图14中,假设将在处理器状态机中分发LPAR 1、即为活跃或者运行状态。如 图所示,这一LPARl运行机器状态包括通用寄存器1310、浮点寄存器1320、矢量寄存器 1330、专用寄存器1340、转译旁视缓存器1350和段旁视缓存器1360中的状态数据。专 用寄存器SDRA 1 1400指向并且因此授权在运行状态中的逻辑分区(在这一例子中也就是 LPAR 1 1200)的虚拟地址到实际地址的页面表。LPAR 2 1210处于不活跃状态中。图15图示了在已经将LPAR 1切换出去并且将LAPR 2切换进来之后的处理器核 机器状态的状况。如图所示,在通用寄存器1310、浮点寄存器1320、矢量寄存器1330 和专用寄存器1340内重新存储LPAR 2 1210的机器状态数据。在这一情况下,切换专 用寄存器SDR11400以指向LPAR 2 1210的虚拟到实际地址的表,而LPAR 1 1200为不活 跃。结果是向段旁视缓存器1360重新存储LPAR 2的状态数据,并且无效转译旁视缓存 器1350。这一缓存器将随着LPAR 2访问存储器地址而填充。对照而言,图16-图18图示了根据本发明一个方面的当前机器状态从逻辑分区 向分区附件的上下文切换。图16描绘了包括逻辑分区1600CLPAR1)的数据处理系统的一 个实施例,该逻辑分区包括虚拟地址到实际地址的页面表1620。数据处理系统还包括分 区附件1610。在这一例子中,留出三个页面表条目1621以将分区附件映射到逻辑分区的 虚拟地址空间中。这一例子假设逻辑分区1600是发起分区附件1610的客户机分区。因 此如图16中所示,发起逻辑分区已经向分区附件贡献了虚拟地址空间,并且分区附件虚 拟地址空间驻留于与发起逻辑分区相同的虚拟地址范围中。这是通过在LPARl的虚拟地 址到实际地址的页面表1620内、为分区附件留出的页面表条目来表示的。如上文所言, 从管理程序的观点来看,在调度和隔离方面,分区附件是与发起逻辑分区(LPARl)完全 分离的分区。尽管这样,分区附件和逻辑分区如表示的那样共享虚拟地址空间范围。图17图示了处理器核机器状态的例子,其中在活跃运行状态中分发LPAR 1。 如图所示,LPARl的机器状态数据获取通用寄存器1710、浮点寄存器1720、矢量寄存器 1730和专用寄存器1740。此外,分区的机器状态基本上填充转译旁视缓存器1750,并 且填充段旁视缓存器1760。专用寄存器SDRl 1700指向LPAR 11600的虚拟地址到实际 地址的页面表1620。在这一例子中,分区附件1610处于不活跃状态中。如图所示,转 译旁视缓存器1750可以仍然包含来自分区附件的在先运行时间的、用于分区附件的一个 或者多个条目1751。无需无效这些条目1751,因为经由用来隔离单个逻辑分区地址空间 的子部分的硬件保护密钥来防止逻辑分区1600访问那些虚拟地址。例如,可以运用由标 记为访问掩码寄存器(AMR) 1770的专用寄存器所控制的页面保护机制,比如使用保护密 钥。AMR寄存器1770可以保藏在任何给定瞬间活跃地接通的密钥。对于要参考的页面 表条目,必须在AMR寄存器中启用关联密钥。当管理程序运行LPARl时,管理程序设 置保护密钥,从而LPAR 1不能获得对页面表条目1621或者转译旁视缓存器1750的条目 1751的访问。图18图示了处理器核机器状态,其中分区附件1610被分发且活跃。在这一例 子中,分区附件1610提供的附件服务运用通用寄存器1710,但是未运用为当前处于不活 跃状态中的LPAR 1 1600保持状态信息的浮点寄存器1720和矢量寄存器1730。另外,分区附件仅运用所选专用寄存器1740,而其余专用寄存器被无效或者包含用于LPARl 1600 的状态信息。专用寄存器SDRl 1700 (在这一例子中)继续指向LPAR 1的虚拟地址到实 际地址的页面表1620,因为分区附件1610被映射到其贡献的虚拟地址空间1621中。运 用转译旁视缓存器1750中的各种条目1751来分发分区附件,并且其余条目保持LPAR 1 的状态信息。安装段旁视缓存器1760中的单个条目1761以覆盖地址空间的属于附件的 部分,而其余条目为LPARl保持状态信息以防止LPARl访问。由于例如由专用寄存器 AMR1770来运用保护密钥,所以分区附件仅有权访问所指出的寄存器和表条目。从管理 程序的观点来看,分区附件的分发与LPARl的分发分离,然而,在分区附件未运用的各 种寄存器和表中为LPAR 1保藏处理器核机器状态信息。结果是从LPAR 1向分区附件的 上下文切换是对状态机的“轻型”上下文切换,其中用分区附件状态信息仅更新所选寄 存器和表信息。类似地,当从分区附件切换回到LPARl时,仅需更新附件分区所运用的 寄存器信息以便转译回到LPAR 1活跃状态。图19-图22图示了在运用同时硬件多线程的数据处理系统中、诸如此处描述的 逻辑分区与分区附件之间对当前状态机进行上下文切换的一个例子。所示例子是两个硬 件线程的核。然而本领域技术人员将理解,所描述的概念很容易应用于除了两个硬件线 程的核之外的硬件线程核。举例而言,New York,Armonk的国际商业机器公司提供的 POWER5TM和POWER6TM功率指令集架构处理器运用两个硬件线程的核。如图19中所示,多线程核包括共享转译旁视缓存器1920的第一硬件线程1900 和第二硬件线程1910。各硬件线程例如包括上文结合图13-图18描述的通用寄存器、浮 点寄存器和专用寄存器以及段旁视缓存器。在图19中图示了多线程硬件核而没有逻辑分 区是活跃的。在图20中,假设第一逻辑分区(LPAR 1)为活跃而LPAR 1状态信息占据 硬件线程核1900、1910以及表旁视缓存器1920。在图21中,已经在第一逻辑分区(LPAR 1)与第二逻辑分区(LPAR 2)之间发生 了对状态机的上下文切换。如图所示,这是完整的上下文切换,其中LPAR 2的机器状态 占据这一两个硬件线程核的例子中的第一硬件线程核1900、第二硬件线程核1910和表旁 视缓存器1920。图22图示了 LPAR 1发起的从LPAR 1向分区附件的上下文切换例子。如图所 示,仅单个线程1910用分区附件的状态信息来更新,即经历轻型上下文切换。具体而 言,分区附件服务在这一例子中运用通用寄存器和各种专用寄存器,而其余寄存器和段 旁视缓存器保持逻辑分区(LPARl)的机器状态信息。另外,第二线程(也就是硬件线程 1900)保持和保留运行于发起逻辑分区(即LPAR 1)中。在这一例子中,表旁视缓存器 也保持LPAR 1的机器状态,而分区附件仅运用所选条目1921。各硬件线程具有它自己 的访问掩码寄存器,该寄存器包含控制分区附件(在该线程上活跃时)有权访问什么硬件 的密钥集。因此,LPAR 1在一个线程上保持活跃,而分区附件在多线程数据处理系统的 不同线程上为活跃。在一个方面中,利用上述分区附件作为如下专用附件,该专用附件向逻辑分区 提供对逻辑分区不可配置的物理输入/输出(I/O)设备的访问。目前,如果逻辑分区的 操作系统无权访问用于指派的物理I/O适配器的设备驱动器,则操作系统不可直接使用 该I/O适配器。在这样的情况下获得来自输入/输出适配器的功能需要用户干预以例如将设备重新指派给虚拟输入/输出服务器(VIOS)分区,这包括如果VIOS分区尚未存在 则创建它,并且在逻辑分区与VIOS之间创建虚拟输入/输出通道。图23A和图23B描绘了如下逻辑分区拥有的专用I/O设备的两个常规例子,该 逻辑分区利用访问和使用I/O设备的本机设备驱动器。在图23A中,数据处理系统2300 包括AIX分区2310,该分区包括一个或者多个客户应用2312、AIX操作系统实例2314和 AIX硬件设备驱动器2324。AIX分区2310运行于管理程序2330之上,并且提供比管理 程序提供的功能更高级的功能。管理程序2330在示出为包括一个或者多个物理I/O设备 2350的下层系统硬件2340之上执行。一个或者多个I/O设备2350包括指派给特定AIX 分区镜像2310的一个或者多个专用设备。在这一例子中,假设本机AIX硬件设备驱动器 2324允许访问指派的一个或者多个I/O设备2350。图23B描绘了数据处理系统2300,的另一实施例。这一数据处理系统包括Linux 分区2310,,该分区包括一个或者多个客户应用2312,、Linux操作系统2314,和Linux 硬件设备驱动器2324,。Linux分区2310,运行于管理程序2330,之上,并且提供比 管理程序本身提供的功能更高级的功能。管理程序2330’在示出为包括(一个或者多 个)1/0设备2350’的下层系统硬件2340’之上执行。经由本机Linux硬件设备驱动器 2324,来访问I/O设备2350,。在图23A和图23B的例子中,假设讨论的逻辑分区具有用于指派的一个或者多 个I/O设备的适当本机设备驱动器。情况并非总是这样。在这样的情况下,常规地运用 称为虚拟I/O服务器(VIOS)分区的第二逻辑分区。如果可以在操作系统之间共享设备驱动器,则可以缩减设备驱动器开发成本。 根据本发明的一个方面,这在下文中通过将设备驱动器部署为分区附件服务来实现。如 上文所言,分区附件是分别在与用户应用和内核服务的常规问题和权限状态分离的执行 状态中操作的轻型执行环境。这一新执行状态在这里称为管理程序/问题状态,并且在 图24A和图24B中进行了图示(其中仅通过例子描绘AIX和Linux)。如下文说明的那 样,取代了部署全VIOS分区,操作系统可以代之以运用分区附件以支持向该逻辑分区指 派的特定不可配置的I/O设备。在这样的情况下,创建如下分区附件,该分区附件运用 非本机操作系统的设备驱动器作为与指派的物理I/O设备的接口。注意,本机和非本机 操作系统可以是任何两个不同操作系统。图24A描绘了本发明这一方面的一个例子。在这一图中示出了数据处理系统 2400包括AIX分区2410和Linux个性分区附件(或者Linux个性附件)2420。AIX分区 2410是包括一个或者多个客户应用2412、AIX操作系统实例2414和虚拟I/O设施2416 的逻辑分区。AIX分区2410运行于管理程序2430之上,并且提供比管理程序提供的功能 更高级的功能。管理程序2430在示出为包括指派给AIX分区2410的(一个或者多个) I/O设备2450的下层系统硬件2440之上执行。Linux个性分区2420在概念上为AIX分区2410的专用子分区。如上文所述,分 区附件少于全逻辑分区,但是以如下方式加以运行,在该方式中管理程序强制在分区附 件与它随之运行的AIX分区之间的安全和隔离。分区附件与全逻辑分区相比功能缩减。 例如,分区附件无权访问存储器管理单元(MMU)配置或者浮点设施,并且其是仅提供 运行希望的服务所需功能(例如I/O驱动器)的环境。
在所示例子中,Linux个性附件2420包括虚拟I/O接口 2422和允许访问I/O设 备2450的硬件设备驱动器服务2424。在这一例子中,硬件设备驱动器服务2424是Linux 硬件设备驱动器,其响应于AIX分区表明其已经向它指派了 AIX分区不可配置的I/O设 备2450而在AIX分区2410派生的(spawn)Linux个性附件2420内运行。Linux个性附 件2420包括足以运行用于物理I/O设备的Linux硬件设备驱动器的非本机内核服务。这 些非本机内核服务少于对应的全操作系统,在这一例子中也就是少于全Linux操作系统。在操作中,AIX分区2410经由在AIX操作系统2414与Linux个性附件2420之间 的虚拟I/O接口 2416、2422来访问I/O设备2450,其中Linux个性附件2420包括Linux 硬件设备驱动器2424的。通过向分区附件提供非本机Linux个性,Linux硬件设备驱动 器能够运行于分区附件内,并且由此提供对原来向AIX分区2410指派的I/O设备2450的 访问,尽管AIX分区不可配置该I/O设备。该设备通过Linux个性附件2420而变为可由 AIX分区访问。图24B描绘了使用分区附件以提供对指派给逻辑分区的不可配置的I/O设备的访 问的另一例子,该逻辑分区在这一情况下为数据处理系统2400,的Linux分区2410,。 用于这一实施的分区附件是AIX个性附件2420’,该附件包括分区附件内的用于运行非 本机操作系统的设备驱动器(在这一例子中也就是AIX硬件设备驱动器2424’ )的充分 的非本机AIX内核服务。这些非本机内核服务少于对应的全操作系统,也就是少于为了 运行AIX硬件设备驱动器而常规需要的全AIX操作系统。Linux分区2410’是包括一个 或者多个客户应用2412’、Linux操作系统2414’和虚拟I/O设施2416’的逻辑分区。 Linux分区2410’运行于管理程序2430’之上,并且提供比管理程序提供的功能更高级 的功能。管理程序2430’在示出为包括(一个或者多个)1/0设备2450’的下层系统硬 件2440,之上执行。AIX个性附件2420’同样在概念上为客户机分区2410’的子分区。如上文所 述,分区附件少于全逻辑分区,但是以如下方式加以运行,在该方式中管理程序强制在 分区附件与它运行于其中的客户机分区之间的安全和隔离。分区附件是仅提供运行希望 的服务所需功能(例如I/O驱动器)的环境。在这一例子中假设附件专用于发起派生的 逻辑分区、也就是Linux分区2410,。在所示例子中,AIX个性附件2420,包括虚拟I/O接口 2422,和允许访问I/O 设备2450,的AIX硬件设备驱动器2424,。如图所示,在操作中,Linux分区2410,经由分区附件2420,来访问I/O设备 2450’ 。如这里使用的那样,个性附件是具有特定操作系统个性、但是少于全操作系统 的分区附件。在这里描述的实施中,个性附件是派生分区附件的逻辑分区的本机操作系 统的非本机个性。例如,图24A的AIX分区2410发起Linux个性附件的创建,而图24B 的Linux分区2410’发起AIX个性附件的创建。仅通过例子提供这些。在一个备选实 施中,个性附件可以是派生分区附件的逻辑分区的本机操作系统的本机个性。另外在非 本机实施中,在分区附件内实施的个性可以是逻辑分区的任何非本机操作系统到任何本 机操作系统。个性附件包括特定设备驱动器为了在附件以内运行而需要的操作系统设备 驱动器运行时环境的最小服务集。设备驱动器遵循它的主机操作系统环境所定义的编程
18环境。这一编程环境通常包括用于诸如存储器分配、定时器服务、中断句柄注册和响应 于中断的激活、为DMA(直接存储器访问)映射I/O缓存器等事项的多种内核服务。个 性附件以与实际主机操作系统内核相同的方式提供这些服务和功能,从而在附件以内运 行的设备驱动器并不知道在它的本机主机操作环境与这里描述的个性附件之间的差异。 这使得未修改的设备驱动器能够在更轻量的分区附件而不是在全逻辑分区内运行。就具体例子而言,图24A的Linux个性附件2420提供了模仿Linux设备驱动器 编程接口和执行环境的运行时环境和内核服务,而图24B的AIX功能附件2420’提供了 模仿全AIX操作系统的AIX设备驱动器编程接口和执行环境的运行时环境和内核服务。下文参照图7的示例流程图更详细地讨论用于创建分区附件的协议。用于建立 分区附件的这一协议可以由如下逻辑分区发起,该逻辑分区拥有逻辑分区不可配置的物 理输入/输出(I/O)设备,也就是说,逻辑分区缺乏用于访问指派的物理输入/输出设备 的设备驱动器实例。参照图7,输入/输出实例化(或者建立)700开始于逻辑分执行输入/输出设备 发现705。操作系统探测附着的I/O总线和/或固件提供的硬件配置信息,从而寻找需要 设备驱动器的I/O设备。例如,操作系统可能找到插入到PCI槽中的PCI适配器卡,该 卡由可从PCI配置空间读取的唯一厂商和设备ID来标识。操作系统然后确定它是否拥有 用于各发现的设备的本机设备驱动器。这实质上是操作系统执行对注册的可加载设备驱 动器的查找710。如果为“是”,则逻辑分区继续正常设备驱动器加载配置715,从而结 束处理720。然而如果客户机分区没有它自己的用于向该分区指派的发现的I/O设备的 设备驱动器,则处理确定分区附件镜像是否可用于这一 I/O设备725。如果为“否”, 则不能配置设备730,并且处理结束。可以经由利用操作系统对注册的分区附件镜像的查找,或者通过查询平台固件 或者其他分区附件镜像服务器,以确定分区附件设备驱动器镜像是否存在并且能够操作 指派的物理I/O设备,来实现确定分区附件设备驱动器镜像是否可用于特定I/O设备。假设分区附件镜像可用于I/O设备,那么客户机分区将它的虚拟地址空间和存 储器的一部分保留或者贡献用于分区附件镜像735,并且激活管理程序以利用贡献的虚拟 地址空间和存储器空间以及I/O设备来实例化分区附件740。操作系统实质上通过向管理程序让与所有权,来动态地放弃其没有设备驱动器 的物理I/O设备的所有权。管理程序创建新分区附件并且向分区附件指派贡献的资源 745。管理程序然后对贡献的虚拟地址空间和存储器建立适当的硬件保护和强制,从而客 户机分区不再能够访问贡献的空间750。管理程序为分区附件创建新的可分发状态755。如上文所言,有利地可以在SMT数据处理系统的单个硬件线程上分发这一新的 可分发状态,而其他硬件线程继续运行对客户机分区的激活(或者请求)。管理程序将分 区附件镜像加载到贡献的附件存储器中760,并且初始化分区附件执行环境765。然后分 发分区附件以在分区附件镜像入口点处开始初始化执行770。管理程序为客户机分区建立 分区附件服务接口调用,这些调用例如包括用于对象虚拟化设备类的虚拟输入/输出请 求队列接口 775。管理程序返回到状态为分区附件实例化的客户机分区,并且向客户机分 区指派新虚拟I/O设备780。在这一步骤中,管理程序向客户机分区动态地添加虚拟I/O 设备,其中客户机分区的本机操作系统具有用于该虚拟I/O设备的设备驱动器。客户机分区然后为该虚拟I/O设备继续正常虚拟设备驱动器加载和配置785,其中该虚拟I/O设 备最终有权访问客户机分区不可配置的物理I/O设备。概括而言,上文描述了一种建立逻辑分区对逻辑分区所拥有的物理输入/输出 (I/O)设备的访问的方法。该方法包括在数据处理系统内创建分区附件,该分区附件 是运用从逻辑分区向分区附件贡献的虚拟地址空间和物理I/O设备而创建的,该逻辑分 区包括本机操作系统,并且分区附件包括非本机操作系统的用于物理I/O设备的设备驱 动器,该物理I/O设备是逻辑分区不可配置的;以及向逻辑分区提供通过分区附件的非 本机操作系统的设备驱动器来与贡献的物理I/O设备对接的虚拟I/O设备。在一个实施例 中,该创建是响应于逻辑分区确定它的操作系统没有能够配置向它指派的物理I/O设备 的本机设备驱动器,以及逻辑分区表明能够运行支持该物理I/O设备的非本机硬件设备 驱动器的分区附件实例可用。在这样的情况下,管理程序使用如上文所述的动态重新配 置设施,以使物理输入/输出设备脱离逻辑分区并且向创建的分区附件重新指派设备。 作为回报,管理程序创建虚拟设备并且将它指派给逻辑分区。以这一方式,开始拥有不 可配置的物理输入/输出设备的逻辑分区以可配置的虚拟I/O设备而告终,它可以通过该 虚拟I/O设备经由分区附件而获得对物理I/O设备的访问权。假设讨论的操作系统支持 这种虚拟I/O设备,因为操作系统在多逻辑分区系统中工作需要这样的设施,其中在该 多逻辑分区系统中可能尚未向逻辑分区指派物理适配器。在另一方面中,多个分区附件用来向多个逻辑分区提供例如对自虚拟输入/输 出设备(比如自虚拟输入/输出适配器)的访问。在虚拟化系统中,如果存在单个输入 /输出适配器,并且该适配器要服务于数据处理系统的多个逻辑分区,则允许单个逻辑分 区复用该设备(比如以图25中所示的虚拟输入/输出服务器方式)或者运用输入/输出 设备的输入/输出虚拟化(IOV)能力(如果存在)来实例化多个虚拟功能(VF),各虚拟 功能在相应客户机逻辑分区看来表现为输入/输出适配器(比如以图26中所示方式)。首先参照图25,图示了数据处理系统2500,该系统包括多个逻辑分区 2510A、2510B...2510n和向多个逻辑分区提供输入/输出服务的虚拟输入/输出服务器 (VIOS) 2520。通过管理程序2530、经由一个或者多个输入/输出路径来访问常规非自虚 拟输入/输出设备2540。在这一例子中,逻辑分区各自具有与VIOS 2520内的服务器虚 拟适配器设备驱动器(即服务器虚拟输入/输出)2522对接的客户机虚拟适配器设备驱动 器(即客户机虚拟输入/输出)2515A、2515B...2515n。在一个实施例中,经由管理程序 2530来对接客户机虚拟输入/输出和服务器虚拟输入/输出。VIOS 2520还包括有助于 与非自虚拟输入/输出设备2540的输入/输出通信的物理适配器设备驱动器栈2525。在 这一例子中,非自虚拟输入/输出设备被设计成一次与一个逻辑分区通信,并且不能如 图26中所示自虚拟输入/输出设备的情况那样将它自己虚拟化成用于与多个逻辑分区通 信的多个功能。参照图26,图示了数据处理系统2600的一个实施例,该系统运用输入/输出虚 拟化和自虚拟输入/输出设备或者适配器2640。数据处理系统2600包括多个逻辑分区 2610A、2610B...2610n以及表示为虚拟输入/输出服务器(VIOS) 2620的逻辑分区。各逻 辑分区2610A、2610B...2610n越过管理程序2630来与自虚拟输入/输出设备2640内的相 应虚拟功能2651、2652、2653通信。这一通信是经由各逻辑分区内的相应本机虚拟功能(VF)设备驱动器2615A、2615B..2615n。如图所示,VIOS 2620包括与自虚拟输入/输 出设备2640内的物理功能2650对接的本机物理功能(PF)设备驱动器2625。作为替代,可以省略VIOS 2620,而其物理功能设施转移到管理程序2630。在 自虚拟输入/输出设备2640内的物理功能2650提供为了配置虚拟功能2651、2652、2653 而需要的基本功能。这一物理功能提供核心能力集并且为所需虚拟功能定义使能位。在 相应逻辑分区内的本机虚拟功能设备驱动器各自为相应逻辑分区的操作系统所固有。例 如,LPARA 2610A可以包括需要本机Linux虚拟功能设备驱动器的Linux操作系统,并 且LPAR B 2610B可以包括运用本机AIX虚拟功能设备驱动器2615B的AIX操作系统。比较图25和图26的数据处理系统实施,可以注意到图25的实施例中的VIOS 2520负责输入/输出复用功能,而在图26的数据处理系统实施例中,自虚拟输入/输出 设备2640负责输入/输出复用功能。在后一种方式中,自虚拟输入/输出设备运用虚拟 功能并且通过相同的通信介质来驱动它们,其中在I/O设备处接收多个输入并且在由I/O 设备驱动的通信介质上对其进行复用。图26的数据处理系统方式有利地避免了图25的 VIOS方式(该方式在VIOS操作系统I/O栈中必须用软件处理并行I/O请求和响应)所 固有的锁定和其他形式的同步。然而,图26中所示方式受如下事实所困扰它需要逻辑 分区具有对存在的各虚拟功能设备的设备驱动器支持。也就是说,在各逻辑分区中需要 适当的本机虚拟功能设备驱动器,这意味着虚拟功能设备驱动器为该逻辑分区的操作系 统所固有,因此取决于在逻辑分区内运用的操作系统,在整个数据处理系统内可能需要 多个不同的本机虚拟功能设备驱动器。比如在图26中所示数据处理系统中运用的自虚拟输入/输出设备的一个 例子是例如在通过整体引用结合于此的〃 Single Root I/OVirtualization and Sharing Specification",Revision 1.0,PCI_SIG(2007 年 9 月 11 日)中描述的单根输入 / 输出虚
拟化硬件。图27图示了又一虚拟化方式,其中数据处理系统2700包括多个逻辑分区 2710A、2710B...2710η以及VIOS 2720。逻辑分区和VIOS越过管理程序2730来与自虚拟 输入/输出设备硬件2740通信。在这一例子中,自虚拟输入/输出设备包括功能2750, 诸如典型外围部件互连(PCI)功能,该功能使得可共享的硬件队列分段成在页面边界上 对准,从而向不同逻辑分区指派个别队列对(QP)。队列对广义地代表自虚拟输入/输出 硬件中可被指派给共享该自虚拟硬件的多个逻辑分区中的一个逻辑分区的一部分。示出 了各逻辑分区经由本机队列对设备驱动器2715Α、2715Β...2715η来与自虚拟输入/输出 设备2740的相应硬件队列对2751、2752、2753直接通信。I/O设备功能2750与例如布 置于VIOS 2720中的本机功能设备驱动器2725通信。与图26的数据处理系统实施例一 样,在逻辑分区内的本机设备驱动器是相应逻辑分区的操作系统固有的设备驱动器,并 且取决于所运用的操作系统,不同逻辑分区可能需要不同本机设备驱动器。作为一种对图25-图27的上述数据处理系统备选方案的增强,下文描述使用分 区附件以在多分区数据处理系统中有助于自虚拟输入/输出设备(或者适配器)的更高效 虚拟化。根据该增强,以如下方式部署分区附件实例,在该方式中创建各分区附件实例 以支持特定逻辑分区到虚拟功能(或者队列对)的配对。使用这一方式,各逻辑分区访问运用抽象虚拟输入/输出机制(比如在图25的VIOS实施中运用的VIO机制)的对应 虚拟功能或者队列对。从客户机分区的观点来看,这一功能类似(或者等效)于图25中 描绘的数据处理系统的功能。然而,避免了这里描述的数据处理系统的弊端,因为各逻 辑分区到虚拟功能(或者队列对)的关联具有有助于其间通信的唯一分区附件实例。由 于各分区附件实例仅处理单个逻辑分区和单个虚拟功能(或者队列对),所以没有必要包 括为了支持I/O适配器的复用而原本需要的锁定或者同步机制,因为系统依赖于具有自 虚拟输入/输出功能的设备本身内的复用能力。这一分区附件实施的另一优点在于由于所有分区附件实例是针对相同设备而 考虑的,所以它们能够共享代码和只读数据(这是下文参照图30A-图31B详细描述的特 征)。这明显减少了为了支持实施而需要的存储器覆盖区,而添加分区附件实例的存储器 覆盖区成本简单地是与针对新分区附件实例为逻辑分区到虚拟功能(或者队列对)的配对 而维持动态状态信息关联的成本。另外,分区附件实例由于它们被配置成一次支持仅一个逻辑分区到虚拟功能 (或者队列对)的配对,因此可以在本机设备驱动器和上述VIOS备选方案中用避免传统 I/O栈和驱动器所需要的许多同步和锁定机制这样的方式容易地加以写入。例如,可以 写入分区附件作为轮询状态机,并且它们的运行时环境的专用性质无需支持活跃占先, 因此简化了或者无需锁定。概括而言,下文描述的概念允许逻辑分区以使逻辑分区的各操作系统所需要的 设备_驱动器开发最少的方式从具有输入/输出虚拟化功能的输入/输出设备或者适配 器获得I/O服务,因为操作系统仅看见虚拟输入/输出(VIO)服务(例如设备驱动器服 务),而不是具体的物理输入/输出适配器设备。这避免了需要实例化逻辑分区以复用下 层I/O硬件,并且允许经由高效VIO硬件能力而不是VIOS中的软件锁来实现I/O硬件的 复用。此最后的方面是归因于分区附件的唯一编程模型的性质,并且假设用来支持特定 I/O设备的特定分区附件实施利用这些性质以创建高效实施。图28描绘了根据本发明一个方面的大体上表示为2800的数据处理系统的一个实 施例。在数据处理系统2800内,多个逻辑分区2810A、2810B...2810n和VIOS 2820运行 于管理程序2830之上,并且提供比管理程序提供的功能更高级的功能。管理程序2830在 包括自虚拟输入/输出设备(或者适配器)2840的下层系统硬件之上执行。VIOS 2820在 描绘的数据处理系统实施例内是可选的。自虚拟输入/输出设备2840在一个实施例中是 具有输入/输出虚拟化功能的I/O适配器。这一适配器可以呈现来自第一物理功能2850 的多个虚拟功能实例2851、2852、2853,各虚拟功能实例呈现与正常I/O适配器关联的 功能。另外举例而言,在这一实施例中描绘了第二物理功能2880,从该第二物理功能提 供第二虚拟功能2881。各虚拟功能被指派以向数据处理系统中的特定逻辑分区提供I/O服务。讨论 的逻辑分区通过运用针对各逻辑分区到虚拟功能的配对而实例化的分区附件实例,来避 免具有与它们的虚拟功能的直接交互,以便维持硬件抽象化。这些分区附件2870A、 2871A、2870B、2870η由于分区附件专用于特定逻辑分区到虚拟功能的配对这一性质而 称为虚拟功能(VF)分区附件。对于与相同下层硬件设备关联的所有虚拟功能(即物理 功能2850或者物理功能2880),实例化的分区附件实例是相同的。也就是说,各分区附
22件实例2870A、2870B...2870n是相同的,而假设分区附件实例化2871A不同,因为它对 接到与不同物理功能2880关联的不同虚拟功能2881。有利地,通过在逻辑分区与虚拟功 能之间插入分区附件,可以将各逻辑分区内的输入/输出虚拟化为客户机虚拟输入/输出 (VIO) 2815A、2815A,、2815B...2815η。就具体例子而言,下层物理功能可以包括外围部件互连(PCI)功能,该PCI功能 支持在上文弓丨用的〃 Single Root I/O Virtualizationand Sharing Specification 〃中定义的单根 I/O虚拟化能力(SR-IOV)。物理功能因此将包含SR-IOV能力结构。虚拟功能与物理 功能关联,并且与物理功能以及与关联于相同虚拟功能的其他虚拟功能共享一个或者多 个物理资源,比如链路。在一个实施例中,“功能”意味着与单个功能编号关联的在配 置空间中的可寻址实体。功能可以指代多功能设备中的一个功能或者单功能设备中的仅 有功能。在数据处理系统的初始配置期间运用功能分区附件2860以有助于建立虚拟功能 分区附件。注意,在图28中描绘的数据处理系统实施例中图示了多个物理功能和多个 不同的虚拟功能实例,其中单个逻辑分区经由不同虚拟功能分区附件2870A、2871A访问 其中的两个虚拟功能实例。一个、两个或者多于两个的物理功能可以实施于自虚拟输入 /输出设备内,并且各逻辑分区可以经由设备的关联虚拟功能来访问这些物理功能中的 一个或者多个。也注意到,取决于针对特定逻辑分区到虚拟功能的配对而实施的分区附 件实例,在LPAR A 2810A内的客户机虚拟接口或者驱动器(客户机VI02815A、客户机 VI0 2815A’ )可以是相同或者不同类型的虚拟接口或者驱动器。虚拟功能分区附件2870A、2871A、2870B、2870η在一个实施例中实施与关联 逻辑分区内的相应客户机VIO对接的服务器虚拟适配器设备驱动器以及用于自虚拟输入/ 输出设备适配器上的虚拟功能的设备驱动器。各分区附件以与诸如上文结合图25描述的 VIOS实施内的服务器虚拟适配器设备驱动器类似地来驱动适配器上的相应虚拟功能。如 上文所述,分区附件的创建可以由相应逻辑分区发起,或者由数据处理系统内的管理程 序发起。另外,相应分区附件的优点和特性将与上述相同。举例而言,各分区附件可以 从关联逻辑分区的本机操作系统来实施非本机操作系统的设备驱动器。本领域技术人员将根据上文讨论注意到,这里描述的编程模型允许分区附件代 码开发员以允许简化或者避免典型操作系统内核代码锁定和同步原语这样的方式编写代 码。分区附件可以高效地编写为单线程轮询状态机,并且通过控制特定分区附件实例可 见的并行程度,有可能保证分区附件代码可以采取非占先和单线程的运行时环境。对于 输入/输出处理工作,很少需要同时执行多个线程以服务于特定逻辑分区到虚拟功能的 配对。这些性质是可行的,因为各分区附件实例在受隔离/受保护的环境(也就是如上 文所述受保护的分离的可分发状态)中服务于单个逻辑分区到虚拟功能的配对,并且可 以用如下开销来部署分区附件实例,该开销低到足以允许每个逻辑分区单个附件实例到 虚拟功能的配对,这不同于VIOS实施。图29描绘了数据处理系统2900的一种替代实施,该系统具有多个逻辑分区 2910Α、2910Β...2910η,并且可选地包括运行于管理程序2930之上的VIOS 2920,该管理 程序在下层系统硬件之上执行。示出了下层系统硬件包括自虚拟输入/输出设备2940。 示出了自虚拟输入/输出设备2940包括基本功能2950和可虚拟化成多个队列对2951、2952、2953的队列结构。各队列对与功能关联,并且与功能和以及关联于相同功能的其 他队列对共享一个或者多个物理资源,比如链路。多个分区附件2960、2970A、2970B、 2970η用来例如将多个逻辑分区2910A、2910Β...2910η对接到自虚拟输入/输出设备2940 内的相应队列对2951、2952、2953。功能分区附件2960在数据处理系统的初始配置期间 用来有助于分区附件的初始建立。通过提供分区附件2970Α、2970Β...2970η作为在各逻辑分区到队列对的配对之 间的接口,虚拟输入/输出接口或者驱动器(客户机VIO 2915Α、2915Β...2915η)可以运 用于相应逻辑分区内。在这一情况下,逻辑分区并不了解所运用硬件的实际类型。分区 附件可以例如包括与关联逻辑分区的相应客户机VIO对接的服务器虚拟设备驱动器以及 用于与自虚拟输入/输出设备2940内的相应队列对2951、2952、2953对接的适当物理适 配器设备驱动器。图30Α描绘了诸如上文结合图26描述的数据处理系统3000的另一实施例。在 这一实施例中,数据处理系统的多个逻辑分区3010运行于管理程序3020之上,该管理程 序在包括自虚拟输入/输出设备3030的下层硬件之上运行。示出了自虚拟输入/输出设 备3030包括虚拟化成多个虚拟功能实例3032、3033的物理功能3031。各逻辑分区包括 用于与自虚拟输入/输出设备3030内的物理功能3031或者虚拟功能3032、3033之一通 信的相应本机虚拟功能设备驱动器3015。如图30Β中所示,数据处理系统中的逻辑分区的本机虚拟功能设备驱动器需要 用于它们的代码、只读数据和读/写状态数据的分离的物理存储器页面。在这一例子 中,各逻辑分区的硬件页面表的这些条目3050、3051、3052映射到数据处理系统的物理 存储器页面3040内的指派的逻辑分区存储器页面3060、3061、3062。因此,在这一具有 三个逻辑分区的例子中,各本机虚拟功能设备驱动器针对三个逻辑分区需要用于共计九 个页面的三个物理存储器页面。必要的是,维持代码、只读数据和读/写数据分离,因 为各逻辑分区可能运用不同的本机操作系统。例如,LPARl可以运用AIX操作系统, 而LPAR 2可以运用Linux操作系统,在该情况下本机设备驱动器代码和只读数据以及读 /写状态数据会有所不同。对照而言,图31Α和图31Β图示了数据处理系统3100的一个实施例,该系统包 括运行于管理程序3130和自虚拟输入/输出设备3140之上的多个逻辑分区3110,各逻 辑分区经由关联虚拟功能分区附件3120对接到相应虚拟功能实例3141、3142、3143。各 虚拟功能分区附件3120与相应虚拟化接口(即在它的关联逻辑分区3110内的客户机VIO 3115)通信。在这一实施中,假设分区附件实例3120运行相同代码,因为它们对接到自虚拟 输入/输出设备内的相同类型的虚拟功能实例。因此如图31Β中所示,有可能合并三个 分区附件的存储器,从而在物理存储器页面3150内运用仅五个物理存储器页面。具体而 言,逻辑分区的用于三个分区附件实例的页面表条目3160、3161、3162包括如图所示映 射到物理存储器页面3150内的两个共同位置的共同附件代码和共同只读数据。在这一例子中,代码和只读数据驻留于指派给数据处理系统的LPAR 1的物理存 储器页面3170内。共同代码和共同只读数据可以代之以放置于指派给LPAR 2的存储器 页面或者指派给LPAR 3的页面内。作为又一变化,如果分区附件为管理程序所拥有(即发起),则代码和只读数据(以及用于分区附件的读/写数据)将驻留于物理存储器页面 3150的指派de管理程序页面中。示出了各逻辑分区硬件页面表指向物理存储器中的用于 分区附件代码和只读数据的相同页面。如图31B所示,针对特定分区附件实例,仅唯一 读/写状态数据所需要的页面表条目不同。在所示例子中,LPARl需要用于代码、只读 数据和读/写状态数据的三个页面,而LPAR 2和LPAR 3仅需各自用于它们的读/写状 态数据的单个物理存储器页面,其中有利地与用于LPARl的虚拟分区附件共享代码和只 读数据页面。在这一例子中,假设分区附件实例的不同之处仅在于它们为了服务于它们的特 定逻辑分区到虚拟功能的配对而维持的活跃状态。因而,管理程序通过避免重复共同代 码和只读数据存储器区域来节省存储器。管理程序可以用多种方式实现这一点,例如通 过显式地认识到两个分区附件实例相同,因此建立它们的存储器映射以便保证最大量共 享,或者通过使用透明存储器合并以引起这一共享。可以在例如具有计算机可用介质的制品(例如一个或者多个计算机程序产品)中 包括本发明的一个或者多个方面。该介质中例如具有用于提供和有助于本发明能力的计 算机可读程序代码装置或者逻辑(例如指令、代码、命令等)。可以将该制品包括作为计 算机系统的一部分或者分开销售。参照图32描述并入本发明一个或者多个方面的制品或者计算机程序产品的一个 例子。计算机程序产品3200例如包括一个或者多个计算机可用介质3210,该介质上存储 用于提供和有助于本发明一个或者多个方面的计算机可读程序代码装置或者逻辑3220。 该介质可以是电子、磁、光学、电磁、红外线或者半导体系统(或者装置或者设备)或 者传播介质。计算机可读介质的例子包括半导体或者固态存储器、磁带、可拆卸计算机 盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的例子包括光 盘_只读存储器(CD-ROM)、光盘-读/写(CD-R/W)和DVD。一个或者多个计算机可读程序代码装置或者逻辑限定的程序指令序列或者一个 或者多个相关模块的逻辑组件指引本发明一个或者多个方面的执行。虽然上文描述了各种实施例,但是这些仅为例子。另外,环境可以包括仿真器(例如软件或者其他仿真机制),其中对特定架构或 者其子集进行仿真。在这样的环境中,仿真器的一个或者多个仿真功能可以实施本发明 的一个或者多个方面,尽管执行仿真器的计算机可以具有与仿真的能力不同的架构。作 为一个例子,在仿真模式中对仿真的具体指令或者操作进行解码,并且构建适当仿真功 能以实施个别指令或者操作。在仿真环境中,主机计算机例如包括存储器,用于存储指令和数据;指令 取读单元,用于从存储器取读指令并且可选地为取读的指令提供本地缓存;指令解码单 元,用于接收指令取读单元并且确定已经取读的指令类型;以及指令执行单元,用于执 行指令。执行可以包括将数据加载到用于存储器的寄存器中;将数据从寄存器存储回 到存储器;或者进行如解码单元确定的某种算术或者逻辑运算。在一个例子中,用软件 实施各单元。例如,将单元进行的操作实施为仿真器软件内的一个或者多个子例程。另外,一种适合于存储和/或执行程序代码的数据处理系统是可用的,该系统 包括直接地或者通过系统总线间接地耦合到存储器元件的至少一个处理器。存储器元
25件例如包括在实际执行程序代码期间运用的本地存储器、大容量储存器和高速缓存存储 器,该高速缓存存储器提供对至少一些程序代码的暂时存储以便减少在执行期间必须从 大容量储存器取回代码的次数。输入/输出或者I/O设备(包括但不限于键盘、显示器、指示设备、DASD、磁 带、CD、DVD、拇指驱动和其他存储器介质等)可以直接地或者通过居间I/O控制器耦 合到系统。网络适配器也可以耦合到系统以使数据处理系统能够变为通过居间专用或者 公共网络而耦合到其他数据处理系统或者远程打印机或者存储设备。调制解调器、有线 调制解调器和以太网卡仅为可用网络适配器类型的几个例子。可以用软件、固件、硬件或者其一些组合来实施本发明一个或者多个方面的能 力。可以提供可由机器读取的至少一种程序存储设备,该设备体现可由该机器执行以实 现本发明能力的至少一个指令程序。这里描绘的流程图仅为例子。可以有对其中描述的这些图或者步骤(或者操 作)的许多变化而不脱离本发明的精神实质。例如,可以按不同顺序执行步骤或者可以 添加、删除或者修改步骤。所有这些变化视为要求保护的本发明的一部分。虽然这里已经详细地描绘和描述实施例,但是本领域技术人员将清楚可以进行 各种修改、添加、替换等而不脱离本发明的精神实质并且这些因此视为在如所附权利要 求中限定的本发明范围内。
权利要求
1.一种为数据处理系统的多个逻辑分区建立对自虚拟输入/输出设备的访问的方法, 所述方法包括将所述多个逻辑分区中的各逻辑分区对接到至少一个关联分区附件实例,各分区附 件实例将所述多个逻辑分区中的它的关联逻辑分区耦合到所述自虚拟输入/输出设备的 虚拟功能或者队列对之一,并且各分区附件实例包括分离的可分发状态并且运用从所述 关联逻辑分区贡献的虚拟地址空间或者所述数据处理系统的管理程序来创建,并且其中 各分区附件实例包括用于所述自虚拟输入/输出设备的所述虚拟功能或者队列对的设备 驱动器;以及向所述多个逻辑分区中的各逻辑分区提供至少一个虚拟输入/输出,该至少一个虚 拟输入/输出通过所述逻辑分区的至少一个关联分区附件实例来与所述自虚拟输入/输出 设备的所述虚拟功能或者队列对对接。
2.根据权利要求1所述的方法,其中所述自虚拟输入/输出设备包括物理功能和与 之关联的多个虚拟功能实例,各虚拟功能实例与所述物理功能共享一个或者多个物理资 源,并且其中所述多个逻辑分区经由多个分区附件实例对接到所述多个虚拟功能实例, 各分区附件实例将所述多个逻辑分区中的关联逻辑分区对接到所述自虚拟输入/输出设 备的所述多个虚拟功能实例中的相应虚拟功能实例。
3.根据权利要求1所述的方法,其中所述对接包括将各分区附件实例对接到所述自 虚拟输入/输出设备的关联虚拟功能,并且其中所述自虚拟输入/输出设备还包括物理功 能,并且所述方法包括提供对接到所述物理功能的物理功能分区附件,所述物理功能分 区附件有助于创建将所述多个逻辑分区对接到所述多个虚拟功能实例的所述分区附件实 例。
4.根据权利要求1所述的方法,其中所述自虚拟输入/输出设备包括具有与之关联的 多个队列对实例的功能,并且其中所述多个逻辑分区经由多个分区附件实例对接到所述 多个队列对实例,各分区附件实例将所述多个逻辑分区中的关联逻辑分区对接到所述自 虚拟输入/输出设备的所述多个队列对实例中的相应队列对实例。
5.根据权利要求1所述的方法,其中所述对接包括运用多个分区附件实例将所述多个 逻辑分区对接到所述自虚拟输入/输出设备的多个队列对实例,并且其中所述方法还包 括提供与所述自虚拟输入/输出设备的至少一个功能对接的至少一个功能分区附件,其 中所述多个队列对实例与所述自虚拟输入/输出设备的所述至少一个功能关联。
6.根据权利要求1所述的方法,其中所述自虚拟输入/输出设备包括第一物理功能和 与所述第一物理功能关联的多个第一虚拟功能实例,各第一虚拟功能实例与所述第一物 理功能共享一个或者多个物理资源,并且其中与所述多个逻辑分区中的一个逻辑分区对 接的分区附件实例将所述一个逻辑分区耦合到所述自虚拟输入/输出设备的第一虚拟功 能实例,并且其中所述自虚拟输入/输出设备还包括具有与之关联的至少一个第二虚拟 功能实例的第二物理功能,各第二虚拟功能实例与所述第二物理功能共享一个或者多个 物理资源,并且其中所述多个分区附件实例中的另一分区附件实例对接到所述多个逻辑 分区中的所述一个逻辑分区并且将所述一个逻辑分区耦合到所述至少一个第二虚拟功能 实例中的第二虚拟功能实例,其中所述一个逻辑分区运用不同分区附件实例来耦合到所 述第一虚拟功能实例和所述第二虚拟功能实例。
7.根据权利要求1所述的方法,其中所述对接还包括为所述多个逻辑分区中的各逻辑 分区建立所述至少一个分区附件实例,所述建立包括为各分区附件实例运用所述关联逻 辑分区的虚拟地址到实际地址的页面表、以将用于所述分区附件实例的分区附件代码和 只读数据映射到包含由多个分区附件实例利用的共同分区附件代码和共同只读数据的共 同物理存储器页面,所述共同物理存储器页面包括所述数据处理系统的管理程序的所述 多个逻辑分区之一的共同物理存储器页面。
8.根据权利要求1所述的方法,其中所述对接还包括创建各关联分区附件实例,所述 创建运用从所述分区附件实例的关联逻辑分区向其贡献的虚拟地址空间,并且其中所述 关联逻辑分区包括本机操作系统,并且所述创建的分区附件实例包括本机或者非本机操 作系统的设备驱动器,其用于将所述关联逻辑分区对接到所述自虚拟输入/输出设备的 所述虚拟功能或者队列对。
9.根据权利要求8所述的方法,其中向逻辑分区提供的各虚拟输入/输出可由所述逻 辑分区进行配置,并且其中创建各分区附件实例还包括提供所述分区附件实例内的本机 或者非本机内核服务以分别运行所述本机或者非本机操作系统的设备驱动器,以用于访 问所述自虚拟输入/输出设备的所述虚拟功能或者队列对,所述本机或者非本机内核服 务少于对应的全本机或者非本机操作系统。
10.—种数据处理系统,包括至少一个处理器,包括多个逻辑分区和有助于所述多个逻辑分区的输入/输出访问 的多个分区附件实例;自虚拟输入/输出设备,耦合到所述多个分区附件;以及其中所述多个逻辑分区中的各逻辑分区对接到至少一个关联分区附件实例,各分区 附件实例将所述多个逻辑分区中的关联逻辑分区耦合到所述数据处理系统的所述自虚拟 输入/输出设备的虚拟功能或者队列对之一,各分区附件实例包括分离的可分发状态并 且运用从相应逻辑分区贡献的虚拟地址空间或者所述数据处理系统的管理程序,并且各 分区附件实例包括用于所述自虚拟输入/输出适配器的相应虚拟功能或者队列对的设备 驱动器,并且其中所述多个逻辑分区中的各逻辑分区包括至少一个虚拟输入/输出,该 至少一个虚拟输入/输出通过所述逻辑分区的至少一个关联分区附件实例来与所述自虚 拟输入/输出设备的至少一个虚拟功能或者队列对对接。
11.根据权利要求10所述的数据处理系统,其中所述自虚拟输入/输出设备包括物理 功能和与之关联的多个虚拟功能实例,各虚拟功能实例与所述物理功能共享一个或者多 个物理资源,并且其中所述多个逻辑分区经由所述多个分区附件实例对接到所述多个虚 拟功能实例,各分区附件实例将所述多个逻辑分区中的关联逻辑分区对接到所述自虚拟 输入/输出设备的所述多个虚拟功能实例中的相应虚拟功能实例。
12.根据权利要求10所述的数据处理系统,其中所述自虚拟输入/输出设备包括具有 与之关联的多个队列对实例的功能,并且其中所述多个逻辑分区经由所述多个分区附件 实例对接到所述多个队列对实例,各分区附件实例将所述多个逻辑分区中的关联逻辑分 区对接到所述自虚拟输入/输出设备的所述多个队列对实例中的相应队列对实例。
13.根据权利要求10所述的数据处理系统,其中所述自虚拟输入/输出设备包括第一 物理功能和与所述第一物理功能关联的多个第一虚拟功能实例,各第一虚拟功能实例共享所述第一物理功能的一个或者多个物理资源,并且其中与所述多个逻辑分区中的一个 逻辑分区对接的分区附件实例将所述一个逻辑分区耦合到所述自虚拟输入/输出设备的 第一虚拟功能实例,并且其中所述自虚拟输入/输出设备还包括具有与之关联的至少一 个第二虚拟功能实例的第二物理功能,各第二虚拟功能实例与所述第二物理功能共享一 个或者多个物理资源,并且其中所述多个分区附件实例中的另一分区附件实例对接到所 述多个逻辑分区中的所述一个逻辑分区并且将所述一个逻辑分区耦合到所述至少一个第 二虚拟功能实例中的第二虚拟功能实例,其中所述一个逻辑分区运用不同分区附件实例 来耦合到所述第一虚拟功能实例和所述第二虚拟功能实例。
14.根据权利要求10所述的数据处理系统,其中各分区附件实例运用所述关联逻辑分 区的虚拟地址到实际地址的页面表、以将用于所述分区附件实例的分区附件代码和只读 数据映射到包含由多个分区附件实例利用的共同分区附件代码和共同只读数据的共同物 理存储器页面,所述共同物理存储器页面包括所述数据处理系统的管理程序的所述多个 逻辑分区之一的共同物理存储器页面。
15.根据权利要求10所述的数据处理系统,其中各分区附件实例运用从所述多个逻 辑分区中的它的关联逻辑分区贡献的虚拟地址空间,并且其中所述关联逻辑分区包括本 机操作系统,并且所述多个分区附件实例中的至少一个分区附件实例包括非本机操作系 统的设备驱动器,其用于将所述关联逻辑分区对接到所述自虚拟输入/输出设备的所述 虚拟功能或者队列对,并且其中向各逻辑分区提供的各虚拟输入/输出可由所述逻辑分 区进行配置,并且其中所述至少一个分区附件实例还包括所述至少一个分区附件实例内 的非本机内核服务以运行所述非本机操作系统的设备驱动器,以便访问所述自虚拟输入/ 输出设备的所述虚拟功能或者队列对,所述非本机内核服务少于对应的全非本机操作系 统。
16.一种计算机程序,包括适合于在所述程序运行于计算机上时执行根据权利要求1 至9中的任一权利要求所述的所有步骤的程序代码装置。
全文摘要
经由多个专用分区附件实例向多个逻辑分区提供对数据处理系统的自虚拟输入/输出设备的访问。通过以下操作来建立访问将各逻辑分区对接到一个或者多个关联分区附件实例,各分区附件实例将它的关联逻辑分区耦合到自虚拟输入/输出设备的虚拟功能或者队列对之一,并且各分区附件实例是分离的可分发状态并且运用从相应逻辑分区贡献的虚拟地址空间或者数据处理系统的管理程序来创建,并且各分区附件实例包括用于自虚拟输入/输出设备的虚拟功能或者队列对的设备驱动器;并且向各逻辑分区提供至少一个虚拟输入/输出,该至少一个虚拟输入/输出通过逻辑分区的一个或者多个相应分区附件实例来与自虚拟输入/输出设备的虚拟功能或者队列对对接。
文档编号G06F9/455GK102016800SQ200980115253
公开日2011年4月13日 申请日期2009年4月23日 优先权日2008年4月28日
发明者C·格拉哈姆, K·勒克, M·奥斯特罗维斯基, N·纳亚, R·斯万伯格, R·雷西奥, S·考, W·阿姆斯特朗 申请人:国际商业机器公司